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 | 344 ++++++++++++++++++++++++++------------------------------ 1 files changed, 161 insertions(+), 183 deletions(-) diff --git a/src/tabviews/formtab/index.jsx b/src/tabviews/formtab/index.jsx index 09b5271..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,27 +40,21 @@ 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.getSystemCacheConfig(param) + let result = await Api.getCacheConfig(param) if (result.status) { let config = '' @@ -90,35 +84,64 @@ return } - // 鏉冮檺杩囨护 - if (this.props.param.menuType !== 'HS') { + // 鍏煎鏍囩 + if (!config.tabgroups) { + config.tabgroups = [{ uuid: 'tabs', sublist: [] }] + } else if (typeof(config.tabgroups[0]) === 'string') { + let _tabgroups = [] + config.tabgroups.forEach(groupId => { + let _group = { + uuid: groupId, + sublist: fromJS(config[groupId]).toJS() + } + + delete config[groupId] + + _tabgroups.push(_group) + }) + + config.tabgroups = _tabgroups + } + + if (!window.GLOB.mkHS) { config.action = config.action.filter(item => permAction[item.uuid]) config.tabgroups.forEach(group => { - if (!config[group]) return - - config[group] = config[group].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(',') @@ -131,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) @@ -143,7 +166,7 @@ notification.warning({ top: 92, message: '鏈幏鍙栧埌涓昏〃鏁版嵁锛�', - duration: 10 + duration: 5 }) } }) @@ -155,7 +178,7 @@ notification.warning({ top: 92, message: result.message, - duration: 10 + duration: 5 }) } } @@ -173,14 +196,13 @@ item.options.unshift({ key: Utils.getuuid(), Value: '', - Text: this.state.dict['main.all'] + Text: '鍏ㄩ儴' }) } if (item.resourceType === '1' && item.dataSource) { let _option = Utils.getSelectQueryOptions(item) let _sql = Utils.formatOptions(_option.sql) - let isSSO = item.database === 'sso' let param = { func: 'sPC_Get_SelectedList', @@ -189,11 +211,23 @@ arr_field: _option.field } - param.timestamp = moment().format('YYYY-MM-DD HH:mm:ss') + '.000' + param.timestamp = moment().format('YYYY-MM-DD HH:mm:ss') param.secretkey = Utils.encrypt(param.LText, param.timestamp) + + if (window.GLOB.mkHS) { // 浜戠鏁版嵁楠岃瘉 + param.open_key = Utils.encryptOpenKey(param.secretkey, param.timestamp) + + if (item.database === 'sso' && options.cloudServiceApi) { // 瀛樺湪浜戠鍦板潃鏃讹紝浣跨敤浜戠绯荤粺鍙傛暟 + param.rduri = options.cloudServiceApi + param.userid = sessionStorage.getItem('CloudUserID') || '' + param.LoginUID = sessionStorage.getItem('CloudLoginUID') || '' + } + } else if (item.database === 'sso' && window.GLOB.mainSystemApi && window.GLOB.systemType === 'production') { + param.rduri = window.GLOB.mainSystemApi + } let defer = new Promise(resolve => { - Api.getSystemCacheConfig(param, isSSO).then(res => { + Api.getSystemCacheConfig(param).then(res => { res.search = item resolve(res) }) @@ -203,7 +237,7 @@ notification.warning({ top: 92, message: item.label + ': ' + this.state.dict['main.datasource.settingerror'], - duration: 10 + duration: 5 }) } @@ -231,7 +265,7 @@ } if (res.search.type === 'link') { - _item.parentId = cell[res.search.linkField] + _item.ParentID = cell[res.search.linkField] } else if (res.search.type === 'select' && res.search.linkSubField && res.search.linkSubField.length > 0) { res.search.linkSubField.forEach(_field => { _item[_field] = (cell[_field] || cell[_field] === 0) ? cell[_field] : '' @@ -246,7 +280,7 @@ notification.warning({ top: 92, message: res.search.label + ':' + res.message, - duration: 10 + duration: 5 }) } }) @@ -281,7 +315,7 @@ notification.warning({ top: 92, message: '鏈缃暟鎹煡璇㈤厤缃紒', - duration: 10 + duration: 5 }) return } @@ -296,6 +330,11 @@ if (!param) return // 鏈幏鍙栧弬鏁版椂锛屼笉鍙戣姹� + // 鏁版嵁绠$悊鏉冮檺 + if (sessionStorage.getItem('dataM') === 'true') { + param.dataM = 'Y' + } + let result = await Api.genericInterface(param) if (result.status) { let _data = result.data[0] || '' @@ -307,18 +346,14 @@ notification.warning({ top: 92, message: '鏈煡璇㈠埌鏁版嵁淇℃伅锛�', - duration: 10 + duration: 5 }) } 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))) { @@ -341,7 +376,7 @@ notification.warning({ top: 92, message: '鏈煡璇㈠埌' + emptys.join(', ') + '瀛楁淇℃伅锛�', - duration: 10 + duration: 5 }) } } @@ -349,7 +384,7 @@ notification.error({ top: 92, message: result.message, - duration: 15 + duration: 10 }) } } @@ -364,7 +399,7 @@ notification.warning({ top: 92, message: '鏈缃〃鍗曞瓧娈碉紒', - duration: 10 + duration: 5 }) return null } @@ -382,6 +417,16 @@ _dataresource = '(' + _dataresource + ') tb' } + if (sessionStorage.getItem('dataM') === 'true') { // 鏁版嵁鏉冮檺 + _dataresource = _dataresource.replace(/\$@/ig, '/*') + _dataresource = _dataresource.replace(/@\$/ig, '*/') + // param.custom_script = param.custom_script.replace(/\$@/ig, '/*') + // param.custom_script = param.custom_script.replace(/@\$/ig, '*/') + } else { + _dataresource = _dataresource.replace(/@\$|\$@/ig, '') + // param.custom_script = param.custom_script.replace(/@\$|\$@/ig, '') + } + if (!/@ID@/ig.test(_dataresource)) { _dataresource = `${_dataresource} where ${setting.primaryKey}='${primaryId}'` } @@ -389,9 +434,13 @@ let LText = `select ${arr_field} from ${_dataresource}` param.LText = Utils.formatOptions(LText) - param.timestamp = moment().format('YYYY-MM-DD HH:mm:ss') + '.000' + param.timestamp = moment().format('YYYY-MM-DD HH:mm:ss') param.secretkey = Utils.encrypt(param.LText, param.timestamp) param.DateCount = '' + + if (!window.GLOB.mkHS) { // 浜戠鏁版嵁楠岃瘉 + param.open_key = Utils.encryptOpenKey(param.secretkey, param.timestamp) + } return param } @@ -407,7 +456,7 @@ if (setting.interType === 'inner') { param.func = setting.innerFunc } else { - if (this.props.param.menuType === 'HS') { + if (window.GLOB.mkHS) { if (setting.sysInterface === 'true' && options.cloudServiceApi) { param.rduri = options.cloudServiceApi } else if (setting.sysInterface !== 'true') { @@ -441,7 +490,7 @@ this.setState({ primaryId: primaryId }, () => { - if (btn.execSuccess === 'refresh') { + if (btn.execSuccess === 'refresh' || btn.execSuccess === 'grid') { this.loadmaindata() } else { let data = {} @@ -453,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' && tab.supMenu === 'mainTable') { - this.loadmaindata() - } else if (type === 'maingrid' && tab.supMenu) { - this.setState({ - refreshtabs: [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) } } @@ -569,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} }) } @@ -590,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) } /** @@ -608,6 +594,10 @@ this.setState = () => { return } + + MKEmitter.removeListener('reloadData', this.reloadData) + MKEmitter.removeListener('reloadMenuView', this.reloadMenuView) + MKEmitter.removeListener('changeTableLine', this.changeTableLine) } render() { @@ -632,8 +622,6 @@ } {hasform ? <FormAction - menuType={this.props.param.menuType} - logcolumns={[]} setting={setting} actions={actions} dict={this.state.dict} @@ -645,31 +633,26 @@ /> : null } {!loadingview && !viewlost && config.tabgroups.map(group => { - if (config[group].length === 0) return null + if (group.sublist.length === 0) return null return ( - <Tabs defaultActiveKey="0" key={group}> - {config[group].map((_tab, index) => { + <Tabs defaultActiveKey="0" key={group.uuid}> + {group.sublist.map((_tab, index) => { 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} - menuType={this.props.param.menuType} - 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> ) })} @@ -677,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> ) @@ -685,18 +669,12 @@ const mapStateToProps = (state) => { return { - tabviews: state.tabviews, - refreshTab: state.refreshTab, - permAction: state.permAction, - 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