From af0db2414ced6089cdb829304a4409ea4231d57a Mon Sep 17 00:00:00 2001 From: king <18310653075@163.com> Date: 星期三, 25 十二月 2019 17:56:36 +0800 Subject: [PATCH] 2019-12-25 --- src/tabviews/commontable/mainAction/index.jsx | 6 src/tabviews/subtable/subAction/index.jsx | 6 src/assets/img/subtable.jpg | 0 src/components/sidemenu/editthdmenu/index.jsx | 30 ++- src/templates/comtableconfig/index.jsx | 30 +++ src/templates/subtableconfig/index.jsx | 13 + src/tabviews/commontable/index.scss | 33 ++++ src/templates/comtableconfig/index.scss | 5 src/templates/modalconfig/index.jsx | 50 ++++-- src/tabviews/home/index.jsx | 56 ++++---- src/templates/comtableconfig/tabdragelement/index.jsx | 6 src/tabviews/subtable/index.jsx | 11 + src/tabviews/commontable/index.jsx | 117 ++++++++++++---- src/tabviews/commontable/mainTable/index.jsx | 57 ++++++-- 14 files changed, 312 insertions(+), 108 deletions(-) diff --git a/src/assets/img/subtable.jpg b/src/assets/img/subtable.jpg new file mode 100644 index 0000000..a15c245 --- /dev/null +++ b/src/assets/img/subtable.jpg Binary files differ diff --git a/src/components/sidemenu/editthdmenu/index.jsx b/src/components/sidemenu/editthdmenu/index.jsx index 3fd0852..cfc8668 100644 --- a/src/components/sidemenu/editthdmenu/index.jsx +++ b/src/components/sidemenu/editthdmenu/index.jsx @@ -57,6 +57,7 @@ loading: false, // 缂栬緫鑿滃崟鎴栦娇鐢ㄥ凡浣跨敤妯℃澘鏃讹紝鑾峰彇閰嶇疆淇℃伅 preview: null, // 鍥剧墖棰勮url pretemplate: null, // 棰勮妯℃澘 + btnParam: null, // 缂栬緫鎸夐挳鐨勯厤缃俊鎭� sysTemplates: sysTemps // 绯荤粺妯℃澘 } @@ -439,14 +440,16 @@ handleSubConfig = (item, originMenu, config, type) => { if (type === 'button') { if (item.OpenType === 'pop') { - item.pageParam = '' + let pageParam = '' if (config && config.type === 'Modal') { - item.pageParam = config + pageParam = config } this.setState({ editMenu: originMenu, + editTab: '', editAction: item, + btnParam: pageParam, tabview: 'Modal' }) } @@ -455,20 +458,23 @@ this.setState({ editMenu: originMenu, editTab: config, + editAction: '', tabview: 'SubTable' }) } } else if (type === 'tabButton') { - // item.pageParam = '' - // if (config && config.type === 'Modal') { - // item.pageParam = config - // } + let pageParam = '' + console.log(config) + if (config && config.type === 'Modal') { + pageParam = config + } - // this.setState({ - // editMenu: originMenu, - // editAction: item, - // tabview: 'Modal' - // }) + this.setState({ + editTab: originMenu, + editAction: item, + btnParam: pageParam, + tabview: 'Modal' + }) } } @@ -595,7 +601,9 @@ {this.state.tabview === 'Modal' && <ModalConfig menu={this.state.editMenu} + editTab={this.state.editTab} editAction={this.state.editAction} + btnParam={this.state.btnParam} handleConfig={this.handleConfig} /> } diff --git a/src/tabviews/commontable/index.jsx b/src/tabviews/commontable/index.jsx index 94ed0e5..305452c 100644 --- a/src/tabviews/commontable/index.jsx +++ b/src/tabviews/commontable/index.jsx @@ -1,7 +1,7 @@ import React, {Component} from 'react' import PropTypes from 'prop-types' import { is, fromJS } from 'immutable' -import { BackTop, notification, Spin, Tabs, Icon} from 'antd' +import { BackTop, notification, Spin, Tabs, Icon, Card, Switch} from 'antd' import moment from 'moment' import Api from '@/api' import MainSearch from './mainSearch' @@ -44,7 +44,10 @@ orderType: 'asc', search: '', configMap: {}, - BIDs: '' + BIDs: {}, + setsingle: false, + pickup: false, + isLinkMain: false } /** @@ -132,6 +135,7 @@ // 杩囨护宸ュ叿鏍忔寜閽紙鏈粡杩囨潈闄愯繃婊わ級 let _actions = config.action.filter(item => item.position === 'toolbar') + let _tab = config.tabs.filter(tab => tab.supMenu === 'mainTable') this.setState({ loadingview: false, @@ -141,12 +145,13 @@ actions: _actions, columns: _columns, tabviews: config.tabs, + isLinkMain: _tab.length > 0, arr_field: _arrField.join(','), search: Utils.initMainSearch(config.search), // 鎼滅储鏉′欢鍒濆鍖栵紙鍚湁鏃堕棿鏍煎紡锛岄渶瑕佽浆鍖栵級 loading: true }, () => { this.improveSearch() - console.log(this.state.tabviews) + if (config.setting.onload !== 'false') { this.loadmaindata() } @@ -241,7 +246,7 @@ async loadmaindata () { - const { setting } = this.state + const { setting, BIDs } = this.state let param = '' if (setting.interType !== 'inner' || (setting.interType === 'inner' && setting.innerFunc)) { @@ -258,7 +263,11 @@ return item }), total: result.total, - loading: false + loading: false, + BIDs: { + ...BIDs, + mainTable: '' + } }) } else { this.setState({ @@ -398,7 +407,11 @@ orderColumn: '', orderType: 'asc', search: '', - configMap: {} + configMap: {}, + BIDs: {}, + setsingle: false, + pickup: false, + isLinkMain: false }, () => { this.loadconfig() }) @@ -489,6 +502,26 @@ }) } + checkChange = () => { + const { setsingle, BIDs } = this.state + + let _BIDs = JSON.parse(JSON.stringify(BIDs)) + _BIDs.mainTable = '' + + this.setState({ + setsingle: !setsingle, + pickup: false, + BIDs: _BIDs + }) + } + + pickupChange = () => { + const { pickup } = this.state + this.setState({ + pickup: !pickup + }) + } + UNSAFE_componentWillMount () { // 缁勪欢鍔犺浇鏃讹紝鑾峰彇鑿滃崟鏁版嵁 this.loadconfig() @@ -498,44 +531,59 @@ return !is(fromJS(this.props), fromJS(nextProps)) || !is(fromJS(this.state), fromJS(nextState)) } + /** + * @description 缁勪欢閿�姣侊紝娓呴櫎state鏇存柊 + */ + componentWillUnmount () { + this.setState = (state, callback) => { + return + } + } + render() { - const { setting, searchlist, actions, columns, loadingview, viewlost, tabviews } = this.state + const { setting, searchlist, actions, columns, loadingview, viewlost, tabviews, setsingle, pickup, isLinkMain } = this.state return ( <div className="commontable" id={'commontable' + this.props.MenuID}> {loadingview && <Spin size="large" />} {searchlist && searchlist.length > 0 ? <MainSearch - refreshdata={this.refreshbysearch} - searchlist={searchlist} dict={this.state.dict} + searchlist={searchlist} + refreshdata={this.refreshbysearch} /> : null } - {actions && setting.onload !== 'false' && + {actions && setting.onload !== 'false' ? <MainAction ref="mainButton" - MenuID={this.props.MenuID} setting={setting} - refreshdata={this.refreshbyaction} - gettableselected={this.gettableselected} actions={actions} dict={this.state.dict} - /> - } - {columns && setting.onload !== 'false' && - <MainTable - ref="mainTable" - dict={this.state.dict} MenuID={this.props.MenuID} - setting={setting} - columns={columns} - data={this.state.data} - total={this.state.total} - loading={this.state.loading} - refreshdata={this.refreshbytable} - buttonTrigger={this.buttonTrigger} - handleTableId={this.handleTableId} - /> + refreshdata={this.refreshbyaction} + gettableselected={this.gettableselected} + /> : null + } + {columns && setting.onload !== 'false' ? + <div className="main-table-box"> + {isLinkMain && setting.tableType === 'checkbox' ? <Switch title="鍗曢�夊垏鎹�" checkedChildren="澶�" unCheckedChildren="鍗�" defaultChecked={setsingle} onChange={this.checkChange} /> : null} + {isLinkMain && this.state.BIDs.mainTable && (setting.tableType === 'radio' || setsingle) ? <Switch title="鏀惰捣" checkedChildren="鍏�" unCheckedChildren="寮�" defaultChecked={pickup} onChange={this.pickupChange} /> : null} + <MainTable + ref="mainTable" + pickup={pickup} + setting={setting} + columns={columns} + setsingle={setsingle} + dict={this.state.dict} + data={this.state.data} + total={this.state.total} + MenuID={this.props.MenuID} + loading={this.state.loading} + refreshdata={this.refreshbytable} + buttonTrigger={this.buttonTrigger} + handleTableId={this.handleTableId} + /> + </div> : null } {setting && setting.onload !== 'false' && setting.tabshow !== 'vertical' && tabviews && tabviews.length > 0 && <Tabs defaultActiveKey="0" tabPosition="top"> @@ -552,6 +600,19 @@ })} </Tabs> } + {setting && setting.onload !== 'false' && setting.tabshow === 'vertical' && tabviews && tabviews.length > 0 && + tabviews.map((_tab, index) => { + return !_tab.supMenu || (_tab.supMenu && this.state.BIDs[_tab.supMenu]) ? + <Card bordered={false} title={ + <span> + {_tab.icon ? <Icon type={_tab.icon} /> : null} + {_tab.label} + </span> + } key={`${index}`}> + {_tab.type === 'SubTable' ? <SubTable SupMenuID={this.props.MenuID} MenuID={_tab.linkTab} Tab={_tab} BID={this.state.BIDs[_tab.supMenu] || ''} /> : null} + </Card> : null + }) + } <BackTop> <div className="ant-back-top"> <div className="ant-back-top-content"> diff --git a/src/tabviews/commontable/index.scss b/src/tabviews/commontable/index.scss index 0f94b69..ba6db0a 100644 --- a/src/tabviews/commontable/index.scss +++ b/src/tabviews/commontable/index.scss @@ -30,6 +30,39 @@ cursor: pointer; } } + > .ant-card { + margin: 0 20px 20px; + > .ant-card-head { + border: 0; + padding: 0; + min-height: 30px; + .ant-card-head-title { + padding: 10px 0 0; + span { + color: #1890ff; + display: inline-block; + padding: 0 10px; + font-size: 15px; + border-bottom: 1px solid #1890ff; + i { + margin-right: 10px; + } + } + } + } + > .ant-card-body { + padding: 0; + } + } + .main-table-box { + position: relative; + .ant-switch { + z-index: 1; + float: right; + margin-right: 20px; + margin-bottom: 5px; + } + } } .ant-back-top { bottom: 30px; diff --git a/src/tabviews/commontable/mainAction/index.jsx b/src/tabviews/commontable/mainAction/index.jsx index 144b880..ed6be69 100644 --- a/src/tabviews/commontable/mainAction/index.jsx +++ b/src/tabviews/commontable/mainAction/index.jsx @@ -535,6 +535,12 @@ }) } + if (btn.OpenType === 'excelOut') { + this.setState({ + loadingUuid: '' + }) + } + this.refreshdata(btn, 'error') } diff --git a/src/tabviews/commontable/mainTable/index.jsx b/src/tabviews/commontable/mainTable/index.jsx index c89224b..f9ac39b 100644 --- a/src/tabviews/commontable/mainTable/index.jsx +++ b/src/tabviews/commontable/mainTable/index.jsx @@ -1,6 +1,6 @@ import React, {Component} from 'react' import PropTypes from 'prop-types' -// import { is, fromJS } from 'immutable' +import { is, fromJS } from 'immutable' import { Table, message, Affix, Button } from 'antd' import './index.scss' @@ -9,6 +9,8 @@ dict: PropTypes.object, // 瀛楀吀椤� MenuID: PropTypes.string, // 鑿滃崟Id setting: PropTypes.object, // 琛ㄦ牸鍏ㄥ眬璁剧疆锛歵ableType锛堣〃鏍兼槸鍚﹀彲閫夈�佸崟閫夈�佸閫夛級銆乧olumnfixed锛堝垪鍥哄畾锛夈�乤ctionfixed锛堟寜閽浐瀹氾級 + pickup: PropTypes.any, // 鏁版嵁鏀惰捣 + setsingle: PropTypes.any, // 璁剧疆鍗曢�夊閫� columns: PropTypes.array, // 琛ㄦ牸鍒� data: PropTypes.any, // 琛ㄦ牸鏁版嵁 total: PropTypes.number, // 鎬绘暟 @@ -19,10 +21,12 @@ } state = { - selectedRowKeys: [], // 琛ㄦ牸涓�変腑琛� - pageIndex: 1, // 鍒濆椤甸潰绱㈠紩 - pageSize: 10, // 姣忛〉鏁版嵁鏉℃暟 - columns: null // 鏄剧ず鍒� + selectedRowKeys: [], // 琛ㄦ牸涓�変腑琛� + pageIndex: 1, // 鍒濆椤甸潰绱㈠紩 + pageSize: 10, // 姣忛〉鏁版嵁鏉℃暟 + columns: null, // 鏄剧ず鍒� + selectId: '', + isSingleSelect: false } UNSAFE_componentWillMount () { @@ -42,9 +46,18 @@ } _columns.push(cell) }) - // {item.FieldName === 'MenuNo' ? <Icon onClick={(e) => {this.copycontent(e, record[item.FieldName])}} type="copy"/> : ''} this.setState({columns: _columns}) + } + + UNSAFE_componentWillReceiveProps(nextProps) { + if (!is(fromJS(this.props.setsingle), fromJS(nextProps.setsingle))) { + this.setState({ + isSingleSelect: nextProps.setsingle, + selectedRowKeys: [], + selectId: '' + }) + } } getContent = (item, record) => { @@ -194,6 +207,8 @@ } onSelectChange = selectedRowKeys => { + if (this.props.pickup) return + let index = '' if (selectedRowKeys.length > 0) { index = selectedRowKeys[selectedRowKeys.length - 1] @@ -206,12 +221,13 @@ changeRow = (record, index) => { // 鐐瑰嚮鏁磋锛岃Е鍙戝垏鎹紝鍒ゆ柇鏄惁鍙�夛紝鍗曢�夋垨澶氶�夛紝杩涜瀵瑰簲鎿嶄綔 - if (!this.props.setting.tableType) return + if (!this.props.setting.tableType || this.props.pickup) return let newkeys = JSON.parse(JSON.stringify(this.state.selectedRowKeys)) let _re = newkeys.includes(index) - if (this.props.setting.tableType === 'radio') { + if (this.props.setting.tableType === 'radio' || this.state.isSingleSelect) { + this.changedata(index) this.setState({ selectedRowKeys: [index] }) } else { if (_re) { @@ -243,31 +259,37 @@ _id = data[index][setting.primaryKey] } + this.setState({ + selectId: _id + }) + this.props.handleTableId('mainTable', _id) } resetTable = () => { this.setState({ pageIndex: 1, + selectId: '', selectedRowKeys: [] }) } render() { - let { selectedRowKeys } = this.state + const { setting, pickup } = this.props + let { selectedRowKeys, isSingleSelect, selectId } = this.state let rowSelection = null - if (this.props.setting.tableType) { + if (setting.tableType) { rowSelection = { selectedRowKeys, - type: this.props.setting.tableType === 'radio' ? 'radio' : 'checkbox', + type: (setting.tableType === 'radio' || isSingleSelect) ? 'radio' : 'checkbox', onChange: this.onSelectChange } } let offset = null - if (this.props.setting.columnfixed) { + if (setting.columnfixed) { // 琛ㄦ牸澶撮儴鍥哄畾浜庨《閮ㄦ椂锛屽垽鏂窛椤堕儴楂樺害 - if (!this.props.setting.actionfixed) { + if (!setting.actionfixed) { offset = 48 } else { let box = document.getElementById(this.props.MenuID + 'mainaction') @@ -279,9 +301,14 @@ } } + let _data = this.props.data ? this.props.data : [] + if (selectId && pickup && isSingleSelect) { + _data = _data.filter(item => item[setting.primaryKey] === selectId) + } + return ( <div className="main-table"> - {this.props.setting.columnfixed && <Affix offsetTop={offset} className="fix-header"> + {setting.columnfixed && <Affix offsetTop={offset} className="fix-header"> <Table size="middle" bordered={true} @@ -301,7 +328,7 @@ bordered={true} rowSelection={rowSelection} columns={this.state.columns} - dataSource={this.props.data ? this.props.data : []} + dataSource={_data} loading={this.props.loading} scroll={{ x: '100%', y: false }} onRow={(record, index) => { diff --git a/src/tabviews/home/index.jsx b/src/tabviews/home/index.jsx index f02d215..cb704df 100644 --- a/src/tabviews/home/index.jsx +++ b/src/tabviews/home/index.jsx @@ -68,7 +68,7 @@ ], series : [ { - name:'閿�鍞', + name:'鏈堢淮淇暟', type:'bar', barWidth: '30', data:[30, 52, 200, 334, 390, 330, 220, 170, 220, 290, 350, 410, 440, 530] @@ -89,14 +89,14 @@ <div className="antd-meta-wrap"> <div className="antd-meta"> <span> - <span>鎬婚攢鍞</span> + <span>缁翠慨鎬绘暟</span> </span> <span className="antd-action"> <Icon type="info-circle-o" /> </span> </div> <div className="antd-total"> - <span>楼 126,560</span> + <span>100</span> </div> </div> </div> @@ -105,7 +105,7 @@ <div className="antd-trend-item" style={{marginRight: '16px'}}> <span> <span>鍛ㄥ悓姣�</span> - <span className="antd-trend-text">12%</span> + <span className="antd-trend-text">10%</span> </span> <span className="antd-trend-up"> <Icon type="caret-up" /> @@ -114,7 +114,7 @@ <div className="antd-trend-item"> <span> <span>鏃ュ悓姣�</span> - <span className="antd-trend-text">11%</span> + <span className="antd-trend-text">10%</span> </span> <span className="antd-trend-down"> <Icon type="caret-down" /> @@ -125,9 +125,9 @@ <div className="antd-chart-footer"> <div className="antd-field"> <span className="antd-label"> - <span>鏃ラ攢鍞</span> + <span>缁翠慨鎬绘暟</span> </span> - <span className="antd-number">锟�12,423</span> + <span className="antd-number">100</span> </div> </div> </div> @@ -142,14 +142,14 @@ <div className="antd-meta-wrap"> <div className="antd-meta"> <span> - <span>浜ч噺</span> + <span>瓒呮椂宸ュ崟</span> </span> <span className="antd-action"> <Icon type="info-circle-o" /> </span> </div> <div className="antd-total"> - <span>8,560</span> + <span>100</span> </div> </div> </div> @@ -162,9 +162,9 @@ <div className="antd-chart-footer"> <div className="antd-field"> <span className="antd-label"> - <span>鏃ヤ骇閲�</span> + <span>瓒呮椂宸ュ崟</span> </span> - <span className="antd-number">1,423</span> + <span className="antd-number">100</span> </div> </div> </div> @@ -179,14 +179,14 @@ <div className="antd-meta-wrap"> <div className="antd-meta"> <span> - <span>宸ュ崟鏁�</span> + <span>鍏冲崟</span> </span> <span className="antd-action"> <Icon type="info-circle-o" /> </span> </div> <div className="antd-total"> - <span>6,560</span> + <span>100</span> </div> </div> </div> @@ -199,9 +199,9 @@ <div className="antd-chart-footer"> <div className="antd-field"> <span className="antd-label"> - <span>鏃ュ伐鍗曟暟</span> + <span>鍏冲崟</span> </span> - <span className="antd-number">120</span> + <span className="antd-number">100</span> </div> </div> </div> @@ -216,14 +216,14 @@ <div className="antd-meta-wrap"> <div className="antd-meta"> <span> - <span>鍛ㄨ浆鐜�</span> + <span>鍘熶欢閭瘎</span> </span> <span className="antd-action"> <Icon type="info-circle-o" /> </span> </div> <div className="antd-total"> - <span>87%</span> + <span>100</span> </div> </div> </div> @@ -237,7 +237,7 @@ <div className="antd-trend-item" style={{marginRight: '16px'}}> <span> <span>鍛ㄥ悓姣�</span> - <span className="antd-trend-text">17%</span> + <span className="antd-trend-text">10%</span> </span> <span className="antd-trend-up"> <Icon type="caret-up" /> @@ -259,50 +259,50 @@ </div> </div> <Tabs defaultActiveKey="1"> - <TabPane tab="閿�鍞" key="1"> + <TabPane tab="缁翠慨鎬绘暟" key="1"> <div id="home" className="sale-trend ant-col ant-col-xs-16"></div> <div className="ant-col ant-col-xs-8"> <div className="antd-sales-rank"> - <h4 className="antd-ranking-title">閿�閲忔帓鍚�</h4> + <h4 className="antd-ranking-title">浜у搧鎺掑悕</h4> <ul className="antd-ranking-list"> <li> <span className="antd-ranking-active">1</span> - <span className="antd-ranking-title">浜у搧1</span> + <span className="antd-ranking-title">KU699</span> <span>723,234</span> </li> <li> <span className="antd-ranking-active">2</span> - <span className="antd-ranking-title">浜у搧2</span> + <span className="antd-ranking-title">KU110</span> <span>683,434</span> </li> <li> <span className="antd-ranking-active">3</span> - <span className="antd-ranking-title">浜у搧3</span> + <span className="antd-ranking-title">KU110K</span> <span>527,264</span> </li> <li> <span className="antd-ranking-number">4</span> - <span className="antd-ranking-title">浜у搧4</span> + <span className="antd-ranking-title">KU066.9</span> <span>493,233</span> </li> <li> <span className="antd-ranking-number">5</span> - <span className="antd-ranking-title">浜у搧5</span> + <span className="antd-ranking-title">KU079</span> <span>323,734</span> </li> <li> <span className="antd-ranking-number">6</span> - <span className="antd-ranking-title">浜у搧6</span> + <span className="antd-ranking-title">KU153</span> <span>303,934</span> </li> <li> <span className="antd-ranking-number">7</span> - <span className="antd-ranking-title">浜у搧7</span> + <span className="antd-ranking-title">KU151</span> <span>227,244</span> </li> <li> <span className="antd-ranking-number">8</span> - <span className="antd-ranking-title">浜у搧8</span> + <span className="antd-ranking-title">KU720</span> <span>223,734</span> </li> </ul> diff --git a/src/tabviews/subtable/index.jsx b/src/tabviews/subtable/index.jsx index 585ac35..323a868 100644 --- a/src/tabviews/subtable/index.jsx +++ b/src/tabviews/subtable/index.jsx @@ -473,6 +473,15 @@ return !is(fromJS(this.props), fromJS(nextProps)) || !is(fromJS(this.state), fromJS(nextState)) } + /** + * @description 缁勪欢閿�姣侊紝娓呴櫎state鏇存柊 + */ + componentWillUnmount () { + this.setState = (state, callback) => { + return + } + } + render() { const { setting, searchlist, actions, columns, loadingview, viewlost } = this.state @@ -489,7 +498,7 @@ {actions && <SubAction ref="subButton" - MenuID={this.props.MenuID} + MenuID={this.props.SupMenuID} BID={this.props.BID} setting={setting} refreshdata={this.refreshbyaction} diff --git a/src/tabviews/subtable/subAction/index.jsx b/src/tabviews/subtable/subAction/index.jsx index be1c35b..d19b11a 100644 --- a/src/tabviews/subtable/subAction/index.jsx +++ b/src/tabviews/subtable/subAction/index.jsx @@ -529,6 +529,12 @@ title: res.message || res.ErrMesg }) } + + if (btn.OpenType === 'excelOut') { + this.setState({ + loadingUuid: '' + }) + } this.refreshdata(btn, 'error') } diff --git a/src/templates/comtableconfig/index.jsx b/src/templates/comtableconfig/index.jsx index 447b25a..3c01a52 100644 --- a/src/templates/comtableconfig/index.jsx +++ b/src/templates/comtableconfig/index.jsx @@ -278,6 +278,15 @@ }) } + /** + * @description 缁勪欢閿�姣侊紝娓呴櫎state鏇存柊 + */ + componentWillUnmount () { + this.setState = (state, callback) => { + return + } + } + handleList = (type, list, card) => { const { config } = this.state @@ -1789,10 +1798,9 @@ let tabParam = { // 娣诲姞鑿滃崟tab椤� func: 'sPC_sMenusTab_AddUpt', LText: config.tabs.map((item, index) => { - return `select '${menu.MenuID}' as MenuID ,'${item.uuid}' as Tabid,'${item.label}' as TabName ,'${(index + 1) * 10}' as Sort` + return `select '${menu.MenuID}' as MenuID ,'${item.linkTab}' as Tabid,'${item.label}' as TabName ,'${(index + 1) * 10}' as Sort` }) } - tabParam.LText = tabParam.LText.join(' union all ') tabParam.LText = Utils.formatOptions(tabParam.LText) tabParam.timestamp = moment().format('YYYY-MM-DD HH:mm:ss') + '.000' @@ -1871,7 +1879,6 @@ * @description 淇濆瓨鎴栦慨鏀硅彍鍗曟寜閽� */ submitAction = (btnParam, tabParam) => { - console.log(tabParam) const { config } = this.state new Promise(resolve => { // 鍐呴儴璇锋眰 @@ -1915,6 +1922,17 @@ }).then(res => { if (res === false) return res + if (tabParam.LText) { + Api.getSystemConfig(tabParam).then(result => { + if (!result.status) { + notification.warning({ + top: 92, + message: result.message, + duration: 10 + }) + } + }) + } if (btnParam.LText) { return Api.getSystemConfig(btnParam) } else { @@ -2358,10 +2376,12 @@ this.setState({ config: {...config, setting: res}, settingVisible: false, - columnsloading: true + columnsloading: true, + tabloading: true }, () => { this.setState({ - columnsloading: false + columnsloading: false, + tabloading: false }) }) }) diff --git a/src/templates/comtableconfig/index.scss b/src/templates/comtableconfig/index.scss index 840a370..d6730ff 100644 --- a/src/templates/comtableconfig/index.scss +++ b/src/templates/comtableconfig/index.scss @@ -403,6 +403,11 @@ display: inline-block; } } + .ant-tabs-content { + .ant-tabs-tabpane img { + width: 100%; + } + } } > .anticon-setting { position: absolute; diff --git a/src/templates/comtableconfig/tabdragelement/index.jsx b/src/templates/comtableconfig/tabdragelement/index.jsx index cb04567..f8c6c37 100644 --- a/src/templates/comtableconfig/tabdragelement/index.jsx +++ b/src/templates/comtableconfig/tabdragelement/index.jsx @@ -4,9 +4,13 @@ import { Tabs, Icon } from 'antd' import Utils from '@/utils/utils.js' import Card from './card' +import subtable from '@/assets/img/subtable.jpg' import './index.scss' const { TabPane } = Tabs +const photo = { + SubTable: subtable +} const Container = ({list, type, setting, placeholder, handleList, handleMenu, deleteMenu }) => { let target = null @@ -94,7 +98,7 @@ <Icon className="edit close" type="close" onClick={() => del(card)} /> </div> } key={`${index}`}> - {card.description} + <img src={photo[card.type]} alt=""/> </TabPane> ))} </Tabs> diff --git a/src/templates/modalconfig/index.jsx b/src/templates/modalconfig/index.jsx index 2184437..8bf9967 100644 --- a/src/templates/modalconfig/index.jsx +++ b/src/templates/modalconfig/index.jsx @@ -27,11 +27,14 @@ class ComTableConfig extends Component { static propTpyes = { menu: PropTypes.any, + editTab: PropTypes.any, + btnParam: PropTypes.object, editAction: PropTypes.object, handleConfig: PropTypes.func } state = { + menu: null, // 涓婄骇鑿滃崟锛屼笁绾ц彍鍗曟垨鏍囩 dict: CommonDict, // 瀛楀吀 config: null, // 椤甸潰閰嶇疆锛屽寘鎷ā鏉跨被鍨嬨�佹ā鎬佹璁剧疆銆佹坊鍔犺〃鍚嶃�佽〃鍗曞垪琛� visible: false, // 琛ㄥ崟缂栬緫妯℃�佹锛屾樉绀烘帶鍒� @@ -48,7 +51,7 @@ closeVisible: false, // 鍏抽棴妯℃�佹 tables: [], // 鍙敤琛ㄥ悕 selectedTables: [], // 宸查�夎〃鍚� - originConfig: null, // 鍘熷鑿滃崟 + originConfig: null, // 鍘熷鑿滃崟 groupVisible: false, // 鍏ㄥ眬閰嶇疆妯℃�佹 curgroup: null // 褰撳墠缁勶紝鏂板缓鎴栫紪杈� } @@ -61,12 +64,19 @@ * 4銆佽缃寜閽熀鏈俊鎭� */ UNSAFE_componentWillMount () { - const {menu, editAction} = this.props - console.log(menu) - let _config = '' + const {menu, editAction, editTab, btnParam} = this.props - if (editAction.pageParam) { - _config = editAction.pageParam + let _config = '' + let _menu = { + type: editTab ? editTab.Template : menu.type, + tables: editTab ? editTab.tables : menu.LongParam.tables, + MenuID: editTab ? editTab.uuid : menu.MenuID, + MenuNo: editTab ? editTab.tabNo : menu.MenuNo, + MenuName: editTab ? editTab.tabName : menu.MenuName + } + + if (btnParam) { + _config = btnParam } else { _config = JSON.parse(JSON.stringify((Source.baseConfig))) } @@ -75,12 +85,11 @@ _config.setting.title = editAction.label } - if (menu.LongParam.tables && menu.LongParam.tables.length > 0 && _config.tables.length === 0) { - // 涓昏彍鍗曞凡鏈夐�夋嫨鐨勮〃鍚嶏紝妯℃�佹娌℃湁琛ㄥ悕鏃讹紝澶嶅埗涓昏彍鍗曡〃鍚� - _config.tables = menu.LongParam.tables - } + // 涓昏彍鍗曞凡鏈夐�夋嫨鐨勮〃鍚嶏紝妯℃�佹娌℃湁琛ㄥ悕鏃讹紝澶嶅埗涓昏彍鍗曡〃鍚� + _config.tables = _config.tables.length === 0 ? _menu.tables : _config.tables this.setState({ + menu: _menu, config: _config, selectedTables: _config.tables || [], originConfig: JSON.parse(JSON.stringify(_config)), @@ -89,7 +98,7 @@ type: 'text', key: 'supMenu', label: this.state.dict['header.menu.supMenu'], - initVal: menu.MenuName, + initVal: _menu.MenuName, required: true, readonly: true }, @@ -193,6 +202,15 @@ tableColumns: _columns }) }) + } + + /** + * @description 缁勪欢閿�姣侊紝娓呴櫎state鏇存柊 + */ + componentWillUnmount () { + this.setState = (state, callback) => { + return + } } /** @@ -568,8 +586,8 @@ } submitConfig = () => { - const { menu, editAction } = this.props - const { config } = this.state + const { editAction } = this.props + const { config, menu } = this.state if ((!config.groups[0] && !config.fields[0]) || (config.fields[0] && config.fields[0].origin)) { notification.warning({ @@ -643,8 +661,7 @@ } cancelConfig = () => { - const { menu } = this.props - const { config, originConfig } = this.state + const { menu, config, originConfig } = this.state let _this = this let isOrigin = config.fields.filter(item => item.origin).length > 0 @@ -1046,8 +1063,7 @@ } render () { - const { menu } = this.props - const { config } = this.state + const { menu, config } = this.state return ( <div className="modal-form-board"> diff --git a/src/templates/subtableconfig/index.jsx b/src/templates/subtableconfig/index.jsx index c67c199..692102b 100644 --- a/src/templates/subtableconfig/index.jsx +++ b/src/templates/subtableconfig/index.jsx @@ -239,6 +239,15 @@ }) } + /** + * @description 缁勪欢閿�姣侊紝娓呴櫎state鏇存柊 + */ + componentWillUnmount () { + this.setState = (state, callback) => { + return + } + } + handleList = (type, list, card) => { const { config } = this.state @@ -2264,7 +2273,7 @@ <div className="tools"> <Collapse accordion defaultActiveKey="0" bordered={false}> {/* 鍩烘湰淇℃伅 */} - <Panel header={this.state.dict['header.menu.basedata']} key="0" id="common-basedata"> + <Panel header={'鏍囩鍩烘湰淇℃伅'} key="0" id="common-basedata"> {/* 鑿滃崟淇℃伅 */} <MenuForm dict={this.state.dict} @@ -2358,7 +2367,7 @@ </Collapse> </div> <div className="setting"> - <Card title={this.state.dict['header.menu.page.configurable']} bordered={false} extra={ + <Card title={'鏍囩锛堝瓙琛級椤甸潰閰嶇疆'} bordered={false} extra={ <div> <Switch className="big" checkedChildren="鍚�" unCheckedChildren="鍋�" defaultChecked={this.state.config.enabled} onChange={this.onEnabledChange} /> {/* <Button type="primary" onClick={this.changeTemplate}>{this.state.dict['header.menu.template.change']}</Button> */} -- Gitblit v1.8.0