From 0c439ced2c97905cb2b02f5f689a37b19369fb8a Mon Sep 17 00:00:00 2001 From: king <18310653075@163.com> Date: 星期五, 22 七月 2022 15:00:58 +0800 Subject: [PATCH] 2022-07-22 --- src/tabviews/formtab/index.jsx | 273 +++++++++++++++++++----------------------------------- 1 files changed, 98 insertions(+), 175 deletions(-) diff --git a/src/tabviews/formtab/index.jsx b/src/tabviews/formtab/index.jsx index bafa7fd..9c15dfd 100644 --- a/src/tabviews/formtab/index.jsx +++ b/src/tabviews/formtab/index.jsx @@ -2,7 +2,7 @@ import PropTypes from 'prop-types' import {connect} from 'react-redux' import { is, fromJS } from 'immutable' -import { notification, Spin, Tabs, Icon} from 'antd' +import { notification, Spin, Tabs} from 'antd' import moment from 'moment' import Api from '@/api' @@ -11,21 +11,21 @@ import Utils from '@/utils/utils.js' import options from '@/store/options.js' import asyncComponent from '@/utils/asyncLoadComponent' - +import MKEmitter from '@/utils/events.js' +import MkIcon from '@/components/mk-icon' import FormGroup from './formgroup' import FormAction from './actionList' import NotFount from '@/components/404' -import {refreshTabView, modifyTabview} from '@/store/action' import './index.scss' const { TabPane } = Tabs const SubTable = asyncComponent(() => import('@/tabviews/subtable')) +const PagemsgComponent = asyncComponent(() => import('@/tabviews/zshare/pageMessage')) class NormalTable extends Component { static propTpyes = { MenuID: PropTypes.string, // 鑿滃崟Id param: PropTypes.any, // 涓昏〃浼犻�掑弬鏁� - refresh: PropTypes.any // 鍒锋柊涓昏〃椤甸潰 } state = { @@ -40,25 +40,19 @@ arr_field: '', // 浣跨敤 sPC_Get_TableData 鏃剁殑鏌ヨ瀛楁闆� setting: null, // 椤甸潰鍏ㄥ眬璁剧疆锛氭暟鎹簮銆佹寜閽強鏄剧ず鍒楀浐瀹氥�佷富閿瓑 data: null, // 鍒楄〃鏁版嵁闆� - configMap: {}, // 椤甸潰閰嶇疆淇℃伅锛氫笅鎷夈�佹寜閽瓑 BIDs: {}, // 涓婄骇琛╥d - setsingle: false, // 涓昏〃鍗曢�夊閫夊垏鎹� - pickup: false, // 涓昏〃鏁版嵁闅愯棌鏄剧ず鍒囨崲 - popData: false, // 寮规椤甸潰锛屾墍閫夌殑琛ㄦ牸鏁版嵁 - visible: false, // 寮规鏄剧ず闅愯棌鎺у埗 primaryId: null, - refreshtabs: null } /** * @description 鑾峰彇椤甸潰閰嶇疆淇℃伅 */ async loadconfig () { - const { permAction } = this.props + const { permAction, MenuID } = this.props let param = { func: 'sPC_Get_LongParam', - MenuID: this.props.MenuID + MenuID: MenuID } let result = await Api.getCacheConfig(param) if (result.status) { @@ -109,33 +103,45 @@ config.tabgroups = _tabgroups } - // 鏉冮檺杩囨护 - if (this.props.menuType !== 'HS') { + if (!window.GLOB.mkHS) { config.action = config.action.filter(item => permAction[item.uuid]) config.tabgroups.forEach(group => { - group.sublist = group.sublist.filter(tab => permAction[tab.linkTab]) + group.sublist = group.sublist.filter(tab => { + if (tab.supMenu === 'mainTable') { + tab.supMenu = MenuID + } + return permAction[tab.linkTab] + }) + }) + } else { + config.tabgroups.forEach(group => { + group.sublist = group.sublist.filter(tab => { + if (tab.supMenu === 'mainTable') { + tab.supMenu = MenuID + } + return true + }) }) } + // 鎸夐挳绫诲瀷鍏煎 + config.action = config.action.map(item => { + if (item.intertype === 'inner' && !item.innerFunc) { + item.intertype = 'system' + } + return item + }) + let _arrField = [config.setting.primaryKey] // 瀛楁闆� , 榛樿娣诲姞涓婚敭 + let roleId = sessionStorage.getItem('role_id') || '' // 瑙掕壊ID config.groups.forEach(group => { group.sublist = group.sublist.filter(item => { + item.field && _arrField.push(item.field) if (!item.blacklist || item.blacklist.length === 0) { - _arrField.push(item.field) return true } - - let _black = item.blacklist.filter(v => { - return this.props.permRoles.indexOf(v) !== -1 - }) - - if (_black.length > 0) { - return false - } else { - _arrField.push(item.field) - return true - } + return item.blacklist.filter(v => roleId.indexOf(v) > -1).length === 0 }) }) _arrField = _arrField.join(',') @@ -148,8 +154,8 @@ primaryId: this.props.param.primaryId || '', data: this.props.param.data || null, BIDs: { - mainTable: config.setting.onload !== 'false' ? (this.props.param.primaryId || '') : '', - mainTabledata: config.setting.onload !== 'false' ? (config.setting.datatype === 'query' ? '' : this.props.param.data) : '' + [MenuID]: config.setting.onload !== 'false' ? (this.props.param.primaryId || '') : '', + [MenuID + 'data']: config.setting.onload !== 'false' ? (config.setting.datatype === 'query' ? '' : this.props.param.data) : '' } }, () => { this.improveSelectOption(config.groups) @@ -190,7 +196,7 @@ item.options.unshift({ key: Utils.getuuid(), Value: '', - Text: this.state.dict['main.all'] + Text: '鍏ㄩ儴' }) } @@ -204,18 +210,11 @@ obj_name: 'data', arr_field: _option.field } - - if (this.props.dataManager) { // 鏁版嵁鏉冮檺 - param.LText = param.LText.replace(/\$@/ig, '/*') - param.LText = param.LText.replace(/@\$/ig, '*/') - } else { - param.LText = param.LText.replace(/@\$|\$@/ig, '') - } param.timestamp = moment().format('YYYY-MM-DD HH:mm:ss') param.secretkey = Utils.encrypt(param.LText, param.timestamp) - if (this.props.menuType === 'HS') { // 浜戠鏁版嵁楠岃瘉 + if (window.GLOB.mkHS) { // 浜戠鏁版嵁楠岃瘉 param.open_key = Utils.encryptOpenKey(param.secretkey, param.timestamp) if (item.database === 'sso' && options.cloudServiceApi) { // 瀛樺湪浜戠鍦板潃鏃讹紝浣跨敤浜戠绯荤粺鍙傛暟 @@ -332,7 +331,7 @@ if (!param) return // 鏈幏鍙栧弬鏁版椂锛屼笉鍙戣姹� // 鏁版嵁绠$悊鏉冮檺 - if (this.props.dataManager) { + if (sessionStorage.getItem('dataM') === 'true') { param.dataM = 'Y' } @@ -354,11 +353,7 @@ this.setState({ data: _data, primaryId: _primaryId, - BIDs: { - ...BIDs, - mainTable: _primaryId, - mainTabledata: _data - } + BIDs: { ...BIDs, [this.props.MenuID]: _primaryId, [this.props.MenuID + 'data']: _data } }) if (_data && (setting.interType !== 'inner' || (setting.interType === 'inner' && setting.innerFunc))) { @@ -422,7 +417,7 @@ _dataresource = '(' + _dataresource + ') tb' } - if (this.props.dataManager) { // 鏁版嵁鏉冮檺 + if (sessionStorage.getItem('dataM') === 'true') { // 鏁版嵁鏉冮檺 _dataresource = _dataresource.replace(/\$@/ig, '/*') _dataresource = _dataresource.replace(/@\$/ig, '*/') // param.custom_script = param.custom_script.replace(/\$@/ig, '/*') @@ -443,7 +438,7 @@ param.secretkey = Utils.encrypt(param.LText, param.timestamp) param.DateCount = '' - if (this.props.menuType !== 'HS') { // 浜戠鏁版嵁楠岃瘉 + if (!window.GLOB.mkHS) { // 浜戠鏁版嵁楠岃瘉 param.open_key = Utils.encryptOpenKey(param.secretkey, param.timestamp) } @@ -461,7 +456,7 @@ if (setting.interType === 'inner') { param.func = setting.innerFunc } else { - if (this.props.menuType === 'HS') { + if (window.GLOB.mkHS) { if (setting.sysInterface === 'true' && options.cloudServiceApi) { param.rduri = options.cloudServiceApi } else if (setting.sysInterface !== 'true') { @@ -495,7 +490,7 @@ this.setState({ primaryId: primaryId }, () => { - if (btn.execSuccess === 'refresh') { + if (btn.execSuccess === 'refresh' || btn.execSuccess === 'grid') { this.loadmaindata() } else { let data = {} @@ -507,104 +502,25 @@ } this.setState({ - BIDs: { - ...BIDs, - mainTable: primaryId, - mainTabledata: data - } + BIDs: { ...BIDs, [this.props.MenuID]: primaryId, [this.props.MenuID + 'data']: data } }) } }) } else if (type === 'success' && btn.afterExecSuccess === 'close') { - if (this.props.refresh) { - this.props.refresh(btn.execSuccess) - } else { - if (btn.execSuccess !== 'never') { - let PMenu = { - MenuID: this.props.param.parentId || '', - position: btn.execSuccess - } - this.props.refreshTabView(PMenu) - } - - let tabs = this.props.tabviews.filter(tab => { - tab.selected = false - if (tab.MenuID === this.props.param.parentId) { - tab.selected = true - } - - return tab.MenuID !== this.props.MenuID - }) - - this.props.modifyTabview(tabs) + if (btn.execSuccess !== 'never') { + MKEmitter.emit('reloadData', this.props.param.parentId, 'formtab', btn) } + + MKEmitter.emit('closeTabView', this.props.MenuID) } else if (type === 'error' && btn.afterExecError === 'notclose') { if (btn.execError === 'refresh') { this.loadmaindata() } } else if (type === 'error' && btn.afterExecError === 'close') { - if (this.props.refresh) { - this.props.refresh(btn.execError) - } else { - if (btn.execError !== 'never') { - let PMenu = { - MenuID: this.props.param.parentId || '', - position: btn.execError - } - this.props.refreshTabView(PMenu) - } - - let tabs = this.props.tabviews.filter(tab => { - tab.selected = false - if (tab.MenuID === this.props.param.parentId) { - tab.selected = true - } - - return tab.MenuID !== this.props.MenuID - }) - - this.props.modifyTabview(tabs) + if (btn.execError !== 'never') { + MKEmitter.emit('reloadData', this.props.param.parentId, 'formtab', btn) } - } - } - - /** - * @description 琛ㄦ牸Id鍙樺寲 - */ - handleTableId = (type, id, data) => { - const { BIDs } = this.state - - this.setState({ - BIDs: { - ...BIDs, - [type]: id, - [type + 'data']: data - } - }) - } - - /** - * @description 瀛愯〃鎿嶄綔瀹屾垚鍚庡埛鏂颁富琛� - */ - handleMainTable = (type, tab) => { - if ((type === 'maingrid' || type === 'mainline') && tab.supMenu === 'mainTable') { - this.loadmaindata() - } 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 - }) - }) + MKEmitter.emit('closeTabView', this.props.MenuID) } } @@ -623,19 +539,36 @@ config: {}, groups: null, actions: null, - arr_field: '', setting: null, data: null, - configMap: {}, BIDs: {}, - setsingle: false, - pickup: false, - popData: false, - visible: false, primaryId: null, - refreshtabs: null }, () => { this.loadconfig() + }) + } + + reloadMenuView = (menuId) => { + const { MenuID } = this.props + + if (MenuID !== menuId) return + + this.reloadview() + } + + reloadData = (menuId) => { + const { MenuID } = this.props + + if (MenuID !== menuId) return + + this.loadmaindata() + } + + changeTableLine = (ContainerId, tableId, id, data) => { + if (this.state.ContainerId !== ContainerId) return + + this.setState({ + BIDs: {...this.state.BIDs, [tableId]: id, [tableId + 'data']: data} }) } @@ -644,15 +577,14 @@ this.loadconfig() } - UNSAFE_componentWillReceiveProps(nextProps) { - if (nextProps.refreshTab && nextProps.refreshTab.MenuID === this.props.MenuID) { - this.reloadview() - this.props.refreshTabView('') - } - } - shouldComponentUpdate (nextProps, nextState) { 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('changeTableLine', this.changeTableLine) } /** @@ -662,6 +594,10 @@ this.setState = () => { return } + + MKEmitter.removeListener('reloadData', this.reloadData) + MKEmitter.removeListener('reloadMenuView', this.reloadMenuView) + MKEmitter.removeListener('changeTableLine', this.changeTableLine) } render() { @@ -686,8 +622,6 @@ } {hasform ? <FormAction - menuType={this.props.menuType} - logcolumns={[]} setting={setting} actions={actions} dict={this.state.dict} @@ -707,22 +641,18 @@ return ( <TabPane tab={ <span> - {_tab.icon ? <Icon type={_tab.icon} /> : null} + {_tab.icon ? <MkIcon type={_tab.icon} /> : null} {_tab.label} </span> } key={`${index}`}> - {_tab.type === 'SubTable' ? - <SubTable - Tab={_tab} - MenuID={_tab.linkTab} - 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)} - /> : null} + <SubTable + Tab={_tab} + MenuID={_tab.linkTab} + SupMenuID={this.props.MenuID} + ContainerId={this.state.ContainerId} + BID={this.state.BIDs[_tab.supMenu] || ''} + BData={this.state.BIDs[_tab.supMenu + 'data'] || ''} + /> </TabPane> ) })} @@ -730,6 +660,7 @@ ) }) } + {!window.GLOB.mkHS && window.GLOB.systemType !== 'production' ? <PagemsgComponent menu={{MenuName: this.props.MenuName, MenuNo: this.props.MenuNo}} config={config} dict={this.state.dict} /> : null} {viewlost ? <NotFount msg={this.state.lostmsg} /> : null} </div> ) @@ -738,20 +669,12 @@ const mapStateToProps = (state) => { return { - menuType: state.editLevel, - tabviews: state.tabviews, - refreshTab: state.refreshTab, - permAction: state.permAction, - dataManager: state.dataManager, - permRoles: state.permRoles + permAction: state.permAction } } -const mapDispatchToProps = (dispatch) => { - return { - refreshTabView: (refreshTab) => dispatch(refreshTabView(refreshTab)), - modifyTabview: (tabviews) => dispatch(modifyTabview(tabviews)) - } +const mapDispatchToProps = () => { + return {} } export default connect(mapStateToProps, mapDispatchToProps)(NormalTable) \ No newline at end of file -- Gitblit v1.8.0