From 3ca91a731665962918a026f521c556f4745ebf35 Mon Sep 17 00:00:00 2001 From: king <18310653075@163.com> Date: 星期一, 16 十一月 2020 19:20:19 +0800 Subject: [PATCH] 2020-11-16 --- src/tabviews/commontable/index.jsx | 167 ++++++++++++++++++++++++++++++++++++++----------------- 1 files changed, 115 insertions(+), 52 deletions(-) diff --git a/src/tabviews/commontable/index.jsx b/src/tabviews/commontable/index.jsx index 6b8431d..0541d72 100644 --- a/src/tabviews/commontable/index.jsx +++ b/src/tabviews/commontable/index.jsx @@ -13,7 +13,6 @@ import UtilsUpdate from '@/utils/utils-update.js' import asyncComponent from '@/utils/asyncComponent' import asyncSpinComponent from '@/utils/asyncSpinComponent' -import { refreshTabView } from '@/store/action' import MKEmitter from '@/utils/events.js' import MainSearch from '@/tabviews/zshare/topSearch' @@ -66,7 +65,6 @@ BIDs: {}, // 涓婄骇琛╥d pickup: false, // 涓昏〃鏁版嵁闅愯棌鏄剧ず鍒囨崲 treevisible: false, // 鑿滃崟缁撴瀯鏍戝脊妗嗘樉绀洪殣钘忔帶鍒� - refreshtabs: null, // 闇�瑕佸埛鏂扮殑鏍囩闆� tabActive: null, // 鏍囩椤靛睍寮�鎺у埗 chartId: '', // 灞曞紑鍥捐〃ID statFields: [], // 鍚堣瀛楁 @@ -545,6 +543,59 @@ } /** + * @description 鑾峰彇鍗曡鏁版嵁 + */ + async loadmainLinedata (id) { + const { setting, arr_field, search, orderBy, BID, pageIndex, pageSize } = this.state + + this.setState({ + loading: true + }) + + let _orderBy = orderBy || setting.order + let param = UtilsDM.getQueryDataParams(setting, arr_field, search, _orderBy, pageIndex, pageSize, BID, this.props.menuType, this.props.dataManager, id) + + if (param.func === 'sPC_Get_TableData') { + param.menuname = this.props.MenuName || '' + } + + let result = await Api.genericInterface(param) + if (result.status) { + let data = fromJS(this.state.data).toJS() + if (result.data && result.data[0]) { + let _data = result.data[0] + + try { + data = data.map(item => { + if (item[setting.primaryKey] === _data[setting.primaryKey]) { + _data.key = item.key + return _data + } else { + return item + } + }) + } catch { + console.warn('鏁版嵁鏌ヨ閿欒') + } + } + + this.setState({ + data: data, + loading: false + }) + } else { + this.setState({ + loading: false + }) + notification.error({ + top: 92, + message: result.message, + duration: 10 + }) + } + } + + /** * @description 鑾峰彇鍚堣瀛楁鍊� */ getStatFieldsValue = () => { @@ -649,21 +700,27 @@ /** * @description 琛ㄦ牸鍒锋柊 */ - reloadtable = () => { - MKEmitter.emit('resetTable', this.props.MenuID + 'mainTable') // 鍒楄〃閲嶇疆 - this.setState({ - pageIndex: 1 - }, () => { + reloadtable = (btn) => { + if (!btn || btn.resetPageIndex !== 'false') { + MKEmitter.emit('resetTable', this.props.MenuID + 'mainTable') // 鍒楄〃閲嶇疆 + this.setState({ + pageIndex: 1 + }, () => { + this.loadmaindata() + this.getStatFieldsValue() + }) + } else { + MKEmitter.emit('resetTable', this.props.MenuID + 'mainTable', 'false') // 鍒楄〃閲嶇疆 this.loadmaindata() this.getStatFieldsValue() - }) + } } /** * @description 椤甸潰鍒锋柊锛岄噸鏂拌幏鍙栭厤缃� */ reloadview = () => { - this.setState({ loadingview: true, viewlost: false, lostmsg: '', + this.setState({ loadingview: true, viewlost: false, config: {}, setting: null, data: null, total: 0, loading: false, pageIndex: 1, pageSize: 10, orderBy: '', search: '', BIDs: {}, pickup: false }, () => { @@ -674,38 +731,9 @@ /** * @description 鎸夐挳鎿嶄綔瀹屾垚鍚庯紙鎴愬姛鎴栧け璐ワ級锛岄〉闈㈠埛鏂帮紝閲嶇疆椤电爜鍙婇�夋嫨椤� */ - refreshbyaction = (position) => { - if (position === 'grid') { - this.reloadtable() - } else if (position === 'view') { - this.reloadview() - } - } - - /** - * @description 瀛愯〃鎿嶄綔瀹屾垚鍚庡埛鏂颁富琛� - */ - handleMainTable = (type, tab) => { - if (type === 'maingrid' && tab.supMenu === 'mainTable') { - this.reloadtable() - } else if (type === 'mainline' && tab.supMenu === 'mainTable') { - this.reloadtable() - } else if ((type === 'maingrid' || type === 'mainline') && tab.supMenu) { - this.setState({ - refreshtabs: [type, tab.supMenu] - }, () => { - this.setState({ - refreshtabs: null - }) - }) - } else if (type === 'equaltab' && tab.equalTab && tab.equalTab.length > 0) { - this.setState({ - refreshtabs: tab.equalTab - }, () => { - this.setState({ - refreshtabs: null - }) - }) + refreshbyaction = (position, btn) => { + if (position === 'grid' || position === 'view') { + this.reloadtable(btn) } } @@ -822,16 +850,47 @@ this.setState({chartId: uuid}) } + reloadData = (menuId, id, btn) => { + const { MenuID } = this.props + + if (MenuID !== menuId) return + if (id === 'empty') return + + if (id === 'formtab') { // 琛ㄥ崟鏍囩椤靛埛鏂� + this.reloadtable(btn) + return + } + + if (!id) { + this.reloadtable() + } else { + this.loadmainLinedata(id) + } + } + + reloadMenuView = (menuId) => { + const { MenuID } = this.props + + if (MenuID !== menuId) return + + this.reloadview() + } + + resetActiveMenu = (menuId) => { + const { MenuID } = this.props + + if (MenuID !== menuId) return + + this.setShortcut() + } + UNSAFE_componentWillMount () { // 缁勪欢鍔犺浇鏃讹紝鑾峰彇鑿滃崟鏁版嵁 this.loadconfig() } UNSAFE_componentWillReceiveProps(nextProps) { - if (nextProps.refreshTab && nextProps.refreshTab.MenuID === this.props.MenuID) { - this.reloadview() - this.props.refreshTabView('') - } else if (!is(fromJS(this.props.tabviews), fromJS(nextProps.tabviews))) { + if (!is(fromJS(this.props.tabviews), fromJS(nextProps.tabviews))) { let selectTab = nextProps.tabviews.filter(tab => tab.selected)[0] if (selectTab && selectTab.MenuID === this.props.MenuID) { this.setShortcut() @@ -851,6 +910,12 @@ return !is(fromJS(this.props), fromJS(nextProps)) || !is(fromJS(this.state), fromJS(nextState)) } + componentDidMount () { + MKEmitter.addListener('reloadData', this.reloadData) + MKEmitter.addListener('reloadMenuView', this.reloadMenuView) + MKEmitter.addListener('resetActiveMenu', this.resetActiveMenu) + } + /** * @description 缁勪欢閿�姣侊紝娓呴櫎state鏇存柊锛屾竻闄ゅ揩鎹烽敭璁剧疆 */ @@ -859,6 +924,9 @@ return } document.onkeydown = () => {} + MKEmitter.removeListener('reloadData', this.reloadData) + MKEmitter.removeListener('reloadMenuView', this.reloadMenuView) + MKEmitter.removeListener('resetActiveMenu', this.resetActiveMenu) } render() { @@ -1001,12 +1069,10 @@ mainSearch={_tab.searchPass === 'true' ? search : null} userConfig={userConfig ? userConfig[_tab.uuid] : null} SupMenuID={this.props.MenuID} - refreshtabs={this.state.refreshtabs} ContainerId={this.state.ContainerId} BID={this.state.BIDs[_tab.supMenu] || ''} BData={this.state.BIDs[_tab.supMenu + 'data'] || ''} handleTableId={this.handleTableId} - handleMainTable={(type) => this.handleMainTable(type, _tab)} /> </TabPane> ) @@ -1050,7 +1116,6 @@ return { menuType: state.editLevel, tabviews: state.tabviews, - refreshTab: state.refreshTab, permAction: state.permAction, permMenus: state.permMenus, permRoles: state.permRoles, @@ -1058,10 +1123,8 @@ } } -const mapDispatchToProps = (dispatch) => { - return { - refreshTabView: (refreshTab) => dispatch(refreshTabView(refreshTab)) - } +const mapDispatchToProps = () => { + return {} } export default connect(mapStateToProps, mapDispatchToProps)(NormalTable) \ No newline at end of file -- Gitblit v1.8.0