From cc87fc060c30597ec2efe38d0c3efe62f4957fd5 Mon Sep 17 00:00:00 2001 From: king <18310653075@163.com> Date: 星期五, 14 七月 2023 11:20:02 +0800 Subject: [PATCH] 2023-07-14 --- src/tabviews/basetable/index.jsx | 240 +++++++++++++++++++++++++++++++++++++++++++----------------- 1 files changed, 172 insertions(+), 68 deletions(-) diff --git a/src/tabviews/basetable/index.jsx b/src/tabviews/basetable/index.jsx index c6b9ade..ccc4b1c 100644 --- a/src/tabviews/basetable/index.jsx +++ b/src/tabviews/basetable/index.jsx @@ -16,7 +16,8 @@ const AntvTabs = asyncComponent(() => import('@/tabviews/custom/components/tabs/antv-tabs')) const MkBaseTable = asyncComponent(() => import('@/tabviews/custom/components/table/base-table')) const SettingComponent = asyncComponent(() => import('@/tabviews/zshare/settingcomponent')) -const PagemsgComponent = asyncComponent(() => import('@/tabviews/zshare/pageMessage')) +const TableNodes = asyncComponent(() => import('@/tabviews/zshare/tablenodes')) +const AutoMatic = asyncComponent(() => import('@/tabviews/zshare/automatic')) const DebugTable = asyncComponent(() => import('@/tabviews/debugtable')) class BasePage extends Component { @@ -24,8 +25,8 @@ param: PropTypes.any, // 鍏朵粬椤甸潰浼犻�掔殑鍙傛暟 Tab: PropTypes.string, // 寮圭獥鏍囩 MenuID: PropTypes.string, // 鑿滃崟Id - MenuNo: PropTypes.string, // 鑿滃崟鍙傛暟 - MenuName: PropTypes.string // 鑿滃崟鍚嶇О + MenuName: PropTypes.string, // 鑿滃崟鍚嶇О + changeTemp: PropTypes.func } state = { @@ -41,19 +42,25 @@ data: null, // 鍒楄〃鏁版嵁闆� loading: false, // 鍒楄〃鏁版嵁鍔犺浇涓� visible: false, // 鏍囩椤垫帶鍒� - shortcuts: null // 蹇嵎閿� + shortcuts: null, // 蹇嵎閿� + autoMatic: null } /** * @description 鑾峰彇椤甸潰閰嶇疆淇℃伅 */ async loadconfig () { - const { MenuID } = this.props + const { MenuID, MenuName } = this.props let _param = { func: 'sPC_Get_LongParam', MenuID: MenuID } + + if (window.GLOB.mkHS) { + _param.appkey = '20191106103859640976D6E924E464D029CF0' + } + let result = await Api.getCacheConfig(_param) if (result.status) { @@ -62,25 +69,13 @@ try { // 閰嶇疆淇℃伅瑙f瀽 config = window.decodeURIComponent(window.atob(result.LongParam)) + config = config.replace(/@mywebsite@\//ig, window.GLOB.baseurl) config = JSON.parse(config) + config.MenuID = MenuID + config.MenuName = MenuName || config.MenuName } catch (e) { console.warn('Parse Failure') config = '' - } - - // HS涓嶄娇鐢ㄨ嚜瀹氫箟璁剧疆 - if (result.LongParamUser && !window.GLOB.mkHS) { - try { // 閰嶇疆淇℃伅瑙f瀽 - let userConfig = JSON.parse(window.decodeURIComponent(window.atob(result.LongParamUser))) - if (userConfig) { - shortcuts = userConfig.action - userConfig.printers.forEach(item => { - window.GLOB.UserCacheMap.set(item.parentId + item.uuid, item) - }) - } - } catch (e) { - console.warn('Parse Failure') - } } // 椤甸潰閰嶇疆瑙f瀽閿欒鏃舵彁绀� @@ -100,6 +95,35 @@ lostmsg: this.state.dict['main.view.unenabled'] }) return + } + + // 妯℃澘閿欒 + if (config.Template !== 'BaseTable') { + if (config.Template === 'CustomPage' || config.Template === 'CommonTable') { + this.props.changeTemp(MenuID, config.Template) + } else { + this.setState({ + viewlost: true, + loadingview: false, + lostmsg: '鑿滃崟淇℃伅閿欒锛屽彲鑳藉師鍥狅細1銆佸綋鍓嶇敤鎴锋棤鏉冮檺锛�2銆佹墦寮�姝よ彍鍗曠殑鎸夐挳闇�瑕佹洿鏂般��' + }) + } + return + } + + // HS涓嶄娇鐢ㄨ嚜瀹氫箟璁剧疆 + if (result.LongParamUser && !window.GLOB.mkHS) { + try { // 閰嶇疆淇℃伅瑙f瀽 + let userConfig = JSON.parse(window.decodeURIComponent(window.atob(result.LongParamUser))) + if (userConfig) { + shortcuts = userConfig.action + userConfig.printers.forEach(item => { + window.GLOB.UserCacheMap.set(item.parentId + item.uuid, item) + }) + } + } catch (e) { + console.warn('Parse Failure') + } } // 鏉冮檺杩囨护 @@ -138,7 +162,21 @@ }) } - config.components = this.filterComponent(config.components, roleId, window.GLOB.mkActions, skip, param, MenuID) + config.components = this.filterComponent(config.components, roleId, window.GLOB.mkActions, skip, param, MenuID, config.MenuName) + + let autoMatic = null + if (config.autoMatic && config.autoMatic.enable === 'true') { + config.components[0].action.forEach(item => { + if (item.uuid === config.autoMatic.action) { + autoMatic = config.autoMatic + autoMatic.OpenType = item.execMode || item.OpenType + config.components[0].wrap.selected = 'false' + config.components[0].MenuID = config.components[0].uuid + config.components[0].autoMatic = true + item.autoMatic = true + } + }) + } // 鑾峰彇涓绘悳绱㈡潯浠� let mainSearch = [] @@ -159,12 +197,13 @@ let BID = param.$BID || '' - config.components = this.formatSetting(config.components, mainSearch, regs) + config.components = this.formatSetting(config.components, regs) this.setState({ BID: BID, shortcuts: shortcuts.length > 0 ? shortcuts : null, config, + autoMatic, mainSearch }, () => { setTimeout(() => { // 寤舵椂鍔犺浇鐘舵�� @@ -230,18 +269,15 @@ } } - filterComponent = (components, roleId, permAction, skip, urlparam, pageId) => { + filterComponent = (components, roleId, permAction, skip, urlparam, pageId, MenuName) => { return components.filter(item => { item.$pageId = pageId - item.$menuname = (this.props.MenuName || '') + '-' + (item.name || '涓昏〃') + item.$menuname = (MenuName || '') + '-' + (item.name || '涓昏〃') if (item.type === 'tabs') { item.subtabs = item.subtabs.filter(tab => { - if ( - tab.blacklist && tab.blacklist.length > 0 && - tab.blacklist.filter(v => roleId.indexOf(v) > -1).length > 0 - ) { + if (!skip && !permAction[tab.components[0].uuid] && tab.permission === 'true') { return false } else if (tab.hide === 'true') { return false @@ -253,11 +289,16 @@ item.subtabs = item.subtabs.map(tab => { tab.components[0].name = tab.label - tab.components = this.filterComponent(tab.components, roleId, permAction, skip, urlparam, pageId) + if (tab.permission !== 'true') { // 鏉冮檺鏈紑鍚笉鍋氭潈闄愭帶鍒� + skip = true + } + tab.components = this.filterComponent(tab.components, roleId, permAction, skip, urlparam, pageId, MenuName) return tab }) return true + } else { + item.name = (MenuName || '') } // 鎼滅储鏉′欢鍒濆鍖� @@ -281,6 +322,8 @@ return false } else if (col.Hide === 'true') { return false + } else if (col.type === 'action') { + col.type = 'custom' } if (col.type === 'number') { @@ -299,8 +342,58 @@ return false } } else if (col.type === 'custom') { - col.elements = col.elements.map(cell => { - if (['text', 'number', 'formula'].includes(cell.eleType)) { + col.elements = col.elements.filter(cell => { + if (cell.eleType === 'button') { + if (cell.hidden === 'true') return false + + cell.logLabel = item.$menuname + '-' + cell.label + cell.Ot = cell.Ot || 'requiredSgl' + cell.ContainerId = this.state.ContainerId + cell.syncComponentId = cell.syncComponent ? (cell.syncComponent.pop() || '') : '' + cell.$menuId = item.uuid + cell.$MenuID = this.props.MenuID + cell.$view = 'popview' + + if (cell.syncComponentId) { + if (cell.syncComponentId === item.setting.supModule) { + cell.syncComponentId = '' + if (cell.execSuccess === 'line' || cell.execSuccess === 'grid') { + cell.execSuccess = 'mainline' + } + } else if (cell.syncComponentId === 'multiComponent') { + let ids = cell.syncComponents.map(m => { + return m.syncComId.pop() || '' + }) + + if (item.setting.supModule && ids.includes(item.setting.supModule)) { + if (cell.execSuccess === 'line' || cell.execSuccess === 'grid') { + cell.execSuccess = 'mainline' + } + ids = ids.filter(id => id !== item.setting.supModule) + } + + if (ids.length === 0) { + cell.syncComponentId = '' + } else { + cell.syncComponentIds = ids + } + } + } + + if (cell.OpenType === 'funcbutton' && cell.funcType === 'print' && cell.verify) { // 鎵撳嵃鏈鸿缃� + cell = this.getPrinter(cell, item.uuid) + } + + if (cell.controlField) { + if (/,/ig.test(cell.controlVal)) { + cell.controlVals = cell.controlVal.split(',') + } else { + cell.controlVals = [(cell.controlVal || '')] + } + } + + return skip || permAction[cell.uuid] + } else if (['text', 'number', 'formula'].includes(cell.eleType)) { if (!cell.height) { cell.innerHeight = 'auto' } @@ -311,8 +404,12 @@ } } } - return cell + return true }) + + if (col.elements.length === 0) { + return false + } } if (col.linkmenu && col.linkmenu.length > 0) { @@ -330,58 +427,59 @@ item.statFields = Array.from(new Set(statFields)) // 鏉冮檺杩囨护 - let tabId = this.props.Tab ? this.props.Tab.uuid : '' // 寮圭獥鏍囩鎸夐挳Id if (item.action && item.action.length > 0) { item.action = item.action.filter(cell => { - if (item.hidden === 'true') return false + if (cell.hidden === 'true') return false cell.logLabel = item.$menuname + '-' + cell.label cell.ContainerId = this.state.ContainerId cell.syncComponentId = cell.syncComponent ? (cell.syncComponent.pop() || '') : '' cell.$menuId = item.uuid cell.$MenuID = this.props.MenuID - cell.$tabId = tabId - cell.$view = 'BasePage' + cell.$view = 'popview' cell.$toolbtn = true - if (cell.syncComponentId === item.setting.supModule) { - cell.syncComponentId = '' + if (cell.syncComponentId) { + if (cell.syncComponentId === item.setting.supModule) { + cell.syncComponentId = '' + if (cell.execSuccess === 'line' || cell.execSuccess === 'grid') { + cell.execSuccess = 'mainline' + } + } else if (cell.syncComponentId === 'multiComponent') { + let ids = cell.syncComponents.map(m => { + return m.syncComId.pop() || '' + }) + + if (item.setting.supModule && ids.includes(item.setting.supModule)) { + if (cell.execSuccess === 'line' || cell.execSuccess === 'grid') { + cell.execSuccess = 'mainline' + } + ids = ids.filter(id => id !== item.setting.supModule) + } + + if (ids.length === 0) { + cell.syncComponentId = '' + } else { + cell.syncComponentIds = ids + } + } } if (cell.OpenType === 'funcbutton' && cell.funcType === 'print' && cell.verify) { // 鎵撳嵃鏈鸿缃� cell = this.getPrinter(cell, item.uuid) + } + + if (cell.controlField) { + if (/,/ig.test(cell.controlVal)) { + cell.controlVals = cell.controlVal.split(',') + } else { + cell.controlVals = [(cell.controlVal || '')] + } } return skip || permAction[cell.uuid] }) } - - item.cols = item.cols.filter(col => { - if (col.type !== 'action') return true - col.elements = col.elements.filter(cell => { - if (cell.hidden === 'true') return false - - cell.logLabel = item.$menuname + '-' + cell.label - cell.Ot = cell.Ot || 'requiredSgl' - cell.ContainerId = this.state.ContainerId - cell.syncComponentId = cell.syncComponent ? (cell.syncComponent.pop() || '') : '' - cell.$menuId = item.uuid - cell.$MenuID = this.props.MenuID - cell.$tabId = tabId - cell.$view = 'BasePage' - - if (cell.syncComponentId === item.setting.supModule) { - cell.syncComponentId = '' - } - - if (cell.OpenType === 'funcbutton' && cell.funcType === 'print' && cell.verify) { // 鎵撳嵃鏈鸿缃� - cell = this.getPrinter(cell, item.uuid) - } - - return skip || permAction[cell.uuid] - }) - return col.elements.length !== 0 - }) return true }) @@ -534,6 +632,11 @@ } reloadview = () => { + window.GLOB.CacheData.delete(this.props.MenuID) + if (this.state.config) { + this.deleteCache(this.state.config.components) + } + this.setState({ BID: '', // 椤甸潰璺宠浆鏃舵惡甯D loadingview: true, // 椤甸潰鍔犺浇涓� @@ -576,14 +679,15 @@ } render() { - const { loadingview, viewlost, config, loading, shortcuts } = this.state + const { loadingview, viewlost, config, loading, shortcuts, autoMatic } = this.state return ( - <div className={'custom-page-wrap ' + (loadingview || loading ? 'loading' : '')} id={this.state.ContainerId} style={config ? config.style : null}> + <div className={'custom-table-wrap ' + (loadingview || loading ? 'loading' : '')} id={this.state.ContainerId} style={config ? config.style : null}> {(loadingview || loading) ? <Spin className="view-spin" size="large" /> : null} <Row className="component-wrap">{this.getComponents()}</Row> {config && window.GLOB.breakpoint ? <DebugTable /> : null} - {!window.GLOB.mkHS && window.GLOB.systemType !== 'production' ? <PagemsgComponent menu={{MenuName: this.props.MenuName, MenuNo: this.props.MenuNo}} config={config} dict={this.state.dict} /> : null} + {!window.GLOB.mkHS && config && autoMatic ? <AutoMatic autoMatic={autoMatic} config={config.components[0]} /> : null} + {!window.GLOB.mkHS && window.GLOB.systemType !== 'production' ? <TableNodes config={config} /> : null} {!window.GLOB.mkHS && config ? <SettingComponent config={config} dict={this.state.dict} shortcuts={shortcuts || []}/> : null} {viewlost ? <NotFount msg={this.state.lostmsg} /> : null} </div> -- Gitblit v1.8.0