From d5ce81026882ada34e5d49411be7c90ee96cc102 Mon Sep 17 00:00:00 2001 From: king <18310653075@163.com> Date: 星期二, 17 一月 2023 18:20:11 +0800 Subject: [PATCH] 2023-01-17 --- src/views/mobdesign/index.jsx | 182 ++++++++++++++++++++++++++++++++++++++++++--- 1 files changed, 168 insertions(+), 14 deletions(-) diff --git a/src/views/mobdesign/index.jsx b/src/views/mobdesign/index.jsx index b2df487..1091b21 100644 --- a/src/views/mobdesign/index.jsx +++ b/src/views/mobdesign/index.jsx @@ -45,6 +45,7 @@ const StyleCombController = asyncComponent(() => import('@/menu/stylecombcontroller')) const StyleCombControlButton = asyncComponent(() => import('@/menu/stylecombcontrolbutton')) const TableComponent = asyncComponent(() => import('@/templates/sharecomponent/tablecomponent')) +const PopView = asyncComponent(() => import('./popview')) sessionStorage.setItem('isEditState', 'true') sessionStorage.setItem('editMenuType', 'menu') // 缂栬緫鑿滃崟绫诲瀷 @@ -68,12 +69,12 @@ menuloading: false, oriConfig: null, config: null, - direction: 'vertical', settingshow: true, controlshow: true, comloading: false, adapters: [], viewType: 'menu', + view: '', eyeopen: false, needUpdate: false } @@ -91,6 +92,7 @@ sessionStorage.setItem('typename', param.typename || 'mob') sessionStorage.setItem('adapter', param.adapter || '') sessionStorage.setItem('sysBgColor', param.sysBgColor || '#ffffff') + sessionStorage.setItem('direction', param.direction || 'vertical') sessionStorage.setItem('userbind', param.userbind || '') sessionStorage.setItem('instantMessage', param.instantMessage || '') @@ -100,13 +102,6 @@ window.GLOB.winHeight = 738 window.GLOB.shellWidth = 376 window.GLOB.shellHeight = 680 - - if (sessionStorage.getItem('typename') === 'pad') { - window.GLOB.winWidth = 736 - window.GLOB.winHeight = 945 - window.GLOB.shellWidth = 640 - window.GLOB.shellHeight = 853 - } let adapters = sessionStorage.getItem('adapter') if (adapters) { @@ -147,6 +142,7 @@ document.getElementById('mk-mob-design-view').innerHTML = '<div style="text-align: center; font-size: 30px; margin-top: 40vh; height: 100vh; background: #fff;">鏈簲鐢ㄦ病鏈塒C绔〉闈㈢殑缂栬緫鏉冮檺锛岃鑱旂郴绠$悊鍛橈紒</div>' return } + MKEmitter.addListener('changePopview', this.initPopview) MKEmitter.addListener('triggerMenuSave', this.submitConfig) MKEmitter.addListener('changeEditMenu', this.changeEditMenu) setTimeout(() => { @@ -217,8 +213,129 @@ this.setState = () => { return } + MKEmitter.removeListener('changePopview', this.initPopview) MKEmitter.removeListener('triggerMenuSave', this.submitConfig) MKEmitter.removeListener('changeEditMenu', this.changeEditMenu) + } + + initPopview = (card, btn) => { + const { config } = this.state + + if (!this.checkBase()) { + return + } + + let _btn = fromJS(btn).toJS() + + if (_btn.config) { + _btn.config.uuid = _btn.uuid + _btn.config.MenuID = _btn.uuid + _btn.config.ParentId = card.uuid + _btn.config.MenuName = _btn.label + } else { + _btn.config = { + uuid: _btn.uuid, + MenuID: _btn.uuid, + ParentId: card.uuid, + enabled: false, + MenuName: _btn.label, + tables: config.tables || [], + Template: 'CustomPage', + components: [], + viewType: 'popview', + style: { backgroundColor: '#ffffff', backgroundImage: '', paddingTop: '16px', paddingBottom: '40px', paddingLeft: '16px', paddingRight: '16px' } + } + } + + this.setState({view: 'popview', popConfig: _btn}) + } + + closePop = () => { + const {config} = this.state + + sessionStorage.setItem('editMenuType', 'menu') + + window.GLOB.urlFields = config.urlFields || [] + window.GLOB.customMenu = config + + this.setState({view: '', popConfig: null}) + } + + submitPopConfig = (btnconfig) => { + let parents = {[btnconfig.ParentId]: true} + let popbtns = {[btnconfig.uuid]: fromJS(btnconfig).toJS()} + let config = fromJS(this.state.config).toJS() + + config.components = this.setPopView(config.components, parents, popbtns) + + this.setState({ config }, () => { + this.submitConfig() + }) + } + + setPopView = (components, parents, popbtns) => { + return components.map(item => { + if (item.type === 'tabs') { + item.subtabs.forEach(tab => { + tab.components = this.setPopView(tab.components, parents, popbtns) + }) + } else if (item.type === 'group') { + item.components = this.setPopView(item.components, parents, popbtns) + } else if (parents[item.uuid]) { + this.setpopConfig(item, popbtns) + } + return item + }) + } + + setpopConfig = (config, popbtns) => { + config.subcards && config.subcards.forEach(item => { + item.elements.forEach(cell => { + if (cell.eleType !== 'button') return + if (cell.OpenType === 'popview' && popbtns[cell.uuid]) { + cell.config = popbtns[cell.uuid] + } + }) + }) + + config.cols && config.cols.forEach(col => { + if (col.type === 'action') { + col.elements.forEach(cell => { + if (cell.OpenType === 'popview' && popbtns[cell.uuid]) { + cell.config = popbtns[cell.uuid] + } + }) + } + }) + + config.elements && config.elements.forEach(cell => { + if (cell.eleType !== 'button') return + if (cell.OpenType === 'popview' && popbtns[cell.uuid]) { + cell.config = popbtns[cell.uuid] + } + }) + + config.action && config.action.forEach(cell => { + if (cell.OpenType === 'popview' && popbtns[cell.uuid]) { + cell.config = popbtns[cell.uuid] + } + }) + + config.$tables = getTables(config) + } + + checkBase = () => { + const { config } = this.state + + if (!config.MenuName || !config.MenuNo) { + notification.warning({ + top: 92, + message: '璇峰畬鍠勮彍鍗曞熀鏈俊鎭紒', + duration: 5 + }) + return false + } + return true } getSmStemp = () => { @@ -498,7 +615,22 @@ config.uuid = MenuId config.MenuID = MenuId config.open_edition = result.open_edition || '' + config.direction = config.direction || sessionStorage.getItem('direction') || 'vertical' window.GLOB.urlFields = config.urlFields || [] + + if (sessionStorage.getItem('typename') === 'pad') { + if (config.direction !== 'vertical') { + window.GLOB.winWidth = 992 + window.GLOB.winHeight = 690 + window.GLOB.shellWidth = 853 + window.GLOB.shellHeight = 640 + } else { + window.GLOB.winWidth = 736 + window.GLOB.winHeight = 945 + window.GLOB.shellWidth = 640 + window.GLOB.shellHeight = 853 + } + } if (config.version !== 2.0) { config.components = this.collectTB(config.components) @@ -739,6 +871,21 @@ config.MenuName = urlParam.MenuName || '' // config.MenuNo = urlParam.MenuNo || '' config.MenuNo = '' + config.direction = config.direction || sessionStorage.getItem('direction') || 'vertical' + + if (sessionStorage.getItem('typename') === 'pad') { + if (config.direction !== 'vertical') { + window.GLOB.winWidth = 992 + window.GLOB.winHeight = 690 + window.GLOB.shellWidth = 853 + window.GLOB.shellHeight = 640 + } else { + window.GLOB.winWidth = 736 + window.GLOB.winHeight = 945 + window.GLOB.shellWidth = 640 + window.GLOB.shellHeight = 853 + } + } let navItem = null config.components.forEach(item => { @@ -1809,6 +1956,8 @@ } changeView = (val) => { + if (sessionStorage.getItem('typename') !== 'pad') return + if (val !== 'vertical') { window.GLOB.winWidth = 992 window.GLOB.winHeight = 690 @@ -1822,7 +1971,6 @@ } this.setState({ - direction: val, comloading: true }, () => { this.setState({ comloading: false }) @@ -1844,15 +1992,15 @@ render () { - const { viewType, comloading, loading, settingshow, controlshow, activeKey, MenuId, config, menuloading, adapters, eyeopen, needUpdate } = this.state + const { view, viewType, comloading, loading, settingshow, controlshow, activeKey, MenuId, config, menuloading, adapters, eyeopen, needUpdate } = this.state return ( <ConfigProvider locale={antdZhCN}> <div className={'mk-mob-view ' + viewType} id="mk-mob-design-view"> - <Header changeView={this.changeView}/> + <Header/> {loading ? <Spin className="view-spin" size="large" /> : null} <DndProvider backend={HTML5Backend}> - <div className={'menu-setting ' + (!settingshow ? 'hidden' : '')}> + {view !== 'popview' ? <><div className={'menu-setting ' + (!settingshow ? 'hidden' : '')}> <div className="draw"> {settingshow ? <DoubleLeftOutlined onClick={() => {this.setState({settingshow: false})}} /> : null} {!settingshow ? <DoubleRightOutlined onClick={() => {this.setState({settingshow: true})}} /> : null} @@ -1866,12 +2014,18 @@ config={config} MenuId={MenuId} adapters={adapters} - updateConfig={this.updateConfig} + updateConfig={(con) => { + this.updateConfig(con) + if (con.direction !== config.direction) { + this.changeView(con.direction) + } + }} /> : null} {config ? <UrlFieldComponent config={config} updateConfig={this.updateConfig}/> : null} {/* 琛ㄥ悕娣诲姞 */} {config ? <TableComponent config={config} updatetable={this.updateConfig}/> : null} {config ? <Paragraph style={{padding: '15px 0px 0px 18px'}} copyable={{ text: MenuId }}>鑿滃崟ID</Paragraph> : null} + {config ? <Paragraph style={{padding: '10px 0px 0px 18px'}} copyable={{ text: `${window.GLOB.baseurl}mob/index.html#/index/${sessionStorage.getItem('kei_no')}/${sessionStorage.getItem('typename')}/${sessionStorage.getItem('lang')}/${MenuId}/@BID@` }}>鑿滃崟閾炬帴</Paragraph> : null} </Panel> {/* 缁勪欢娣诲姞 */} <Panel header="缁勪欢" className="component" key="component"> @@ -1917,7 +2071,7 @@ {config && !comloading ? <div className="mob-shell" style={{width: window.GLOB.shellWidth, height: window.GLOB.shellHeight}}> <MobShell menu={config} handleList={this.updateConfig} /> </div> : null} - </div> + </div></> : <PopView btn={this.state.popConfig} save={this.submitPopConfig} cancel={this.closePop}/>} </DndProvider> <StyleController /> <StyleCombController /> -- Gitblit v1.8.0