From 2ae980243b7ad705dea575eadcfc4cf4e24073bd Mon Sep 17 00:00:00 2001 From: king <18310653075@163.com> Date: 星期二, 17 五月 2022 22:57:19 +0800 Subject: [PATCH] Merge branch 'master' into positec --- src/views/pcdesign/index.jsx | 151 ++++++++++++++++++++++++++++++++++++++++++++++++-- 1 files changed, 145 insertions(+), 6 deletions(-) diff --git a/src/views/pcdesign/index.jsx b/src/views/pcdesign/index.jsx index b71d127..c574d3e 100644 --- a/src/views/pcdesign/index.jsx +++ b/src/views/pcdesign/index.jsx @@ -6,7 +6,7 @@ import moment from 'moment' import HTML5Backend from 'react-dnd-html5-backend' import { ConfigProvider, notification, Modal, Collapse, Switch, Button, message, Spin, Typography } from 'antd' -import { DoubleLeftOutlined, DoubleRightOutlined, HomeOutlined, LoginOutlined, RedoOutlined, ArrowLeftOutlined } from '@ant-design/icons' +import { DoubleLeftOutlined, DoubleRightOutlined, HomeOutlined, LoginOutlined, RedoOutlined, ArrowLeftOutlined, EyeOutlined, EyeInvisibleOutlined } from '@ant-design/icons' import Api from '@/api' import Utils, { setGLOBFuncs } from '@/utils/utils.js' @@ -29,6 +29,7 @@ const PopviewController = asyncComponent(() => import('@/menu/popview')) const Versions = asyncComponent(() => import('@/menu/versions')) const MenuShell = asyncComponent(() => import('@/pc/menushell')) +const ViewNodes = asyncComponent(() => import('@/menu/viewnodes')) const SourceWrap = asyncComponent(() => import('@/pc/modulesource')) const CreateView = asyncComponent(() => import('@/pc/createview')) const BgController = asyncComponent(() => import('@/pc/bgcontroller')) @@ -75,7 +76,8 @@ customComponents: [], settingshow: sessionStorage.getItem('settingshow') !== 'false', controlshow: sessionStorage.getItem('controlshow') !== 'false', - comloading: false + comloading: false, + eyeopen: false } UNSAFE_componentWillMount() { @@ -691,6 +693,7 @@ return item }) sessionStorage.setItem('appMenus', JSON.stringify(menus)) + sessionStorage.setItem('allMenus', JSON.stringify(res.menus || [])) }) } @@ -911,6 +914,8 @@ return null } else if (item.type === 'card' || (item.type === 'table' && item.subtype === 'tablecard')) { item.action && item.action.forEach(btn => { + if (btn.hidden === 'true') return + this.checkBtn(btn) m.children.push({ key: btn.uuid, @@ -923,6 +928,8 @@ item.subcards.forEach(card => { card.elements && card.elements.forEach(cell => { if (cell.eleType !== 'button') return + if (cell.hidden === 'true') return + this.checkBtn(cell) m.children.push({ key: cell.uuid, @@ -934,6 +941,8 @@ }) card.backElements && card.backElements.forEach(cell => { if (cell.eleType !== 'button') return + if (cell.hidden === 'true') return + this.checkBtn(cell) m.children.push({ key: cell.uuid, @@ -948,6 +957,8 @@ item.subcards.forEach(card => { card.elements && card.elements.forEach(cell => { if (cell.eleType !== 'button') return + if (cell.hidden === 'true') return + this.checkBtn(cell) m.children.push({ key: cell.uuid, @@ -961,6 +972,8 @@ } else if (item.type === 'balcony') { item.elements && item.elements.forEach(cell => { if (cell.eleType !== 'button') return + if (cell.hidden === 'true') return + this.checkBtn(cell) m.children.push({ key: cell.uuid, @@ -990,6 +1003,8 @@ }) } else if (item.type === 'table' && (item.subtype === 'normaltable' || item.subtype === 'editable')) { item.action && item.action.forEach(btn => { + if (btn.hidden === 'true') return + this.checkBtn(btn) m.children.push({ key: btn.uuid, @@ -1002,6 +1017,8 @@ item.cols && item.cols.forEach(col => { if (col.type !== 'action') return col.elements.forEach(btn => { + if (btn.hidden === 'true') return + this.checkBtn(btn) m.children.push({ key: btn.uuid, @@ -1057,6 +1074,121 @@ } } + getSubMenus = () => { + const { config } = this.state + let menus = [] + let menuObj = {} + let allMenus = JSON.parse(sessionStorage.getItem('allMenus')) + + allMenus.forEach(item => { + menuObj[item.MenuID] = item + }) + + let traversal = (components) => { + components.forEach(item => { + if (item.type === 'login') { + if (item.wrap.linkmenu && menuObj[item.wrap.linkmenu]) { + menus.push(menuObj[item.wrap.linkmenu]) + } + } else if (item.type === 'tabs') { + item.subtabs.forEach(tab => { + traversal(tab.components) + }) + } else if (item.type === 'group') { + traversal(item.components) + } else if (item.type === 'card' || (item.type === 'table' && item.subtype === 'tablecard')) { + item.action && item.action.forEach(btn => { + if (btn.linkmenu && menuObj[btn.linkmenu]) { + menus.push(menuObj[btn.linkmenu]) + } else if (btn.openmenu && menuObj[btn.openmenu]) { + menus.push(menuObj[btn.openmenu]) + } + }) + item.subcards.forEach(card => { + if (card.setting.click === 'menu' && menuObj[card.setting.menu]) { + menus.push(menuObj[card.setting.menu]) + } else if (card.setting.click === 'menus' && card.menus) { + card.menus.forEach(m => { + if (menuObj[m.menu]) { + menus.push(menuObj[m.menu]) + } + }) + } + card.elements && card.elements.forEach(cell => { + if (cell.eleType !== 'button') return + + if (cell.linkmenu && menuObj[cell.linkmenu]) { + menus.push(menuObj[cell.linkmenu]) + } else if (cell.openmenu && menuObj[cell.openmenu]) { + menus.push(menuObj[cell.openmenu]) + } + }) + }) + } else if (item.type === 'carousel' || item.type === 'timeline') { + item.subcards.forEach(card => { + if (card.setting.click === 'menu' && menuObj[card.setting.menu]) { + menus.push(menuObj[card.setting.menu]) + } + card.elements && card.elements.forEach(cell => { + if (cell.eleType !== 'button') return + + if (cell.linkmenu && menuObj[cell.linkmenu]) { + menus.push(menuObj[cell.linkmenu]) + } else if (cell.openmenu && menuObj[cell.openmenu]) { + menus.push(menuObj[cell.openmenu]) + } + }) + }) + } else if (item.type === 'balcony') { + item.elements && item.elements.forEach(cell => { + if (cell.eleType !== 'button') return + + if (cell.linkmenu && menuObj[cell.linkmenu]) { + menus.push(menuObj[cell.linkmenu]) + } else if (cell.openmenu && menuObj[cell.openmenu]) { + menus.push(menuObj[cell.openmenu]) + } + }) + } else if (item.type === 'form') { + item.subcards.forEach(m => { + if (m.subButton && m.subButton.linkmenu && menuObj[m.subButton.linkmenu]) { + menus.push(menuObj[m.subButton.linkmenu]) + } + }) + } else if (item.type === 'table' && item.subtype === 'normaltable') { + item.action && item.action.forEach(btn => { + if (btn.linkmenu && menuObj[btn.linkmenu]) { + menus.push(menuObj[btn.linkmenu]) + } else if (btn.openmenu && menuObj[btn.openmenu]) { + menus.push(menuObj[btn.openmenu]) + } + }) + item.cols && item.cols.forEach(col => { + if (col.type !== 'action') return + col.elements.forEach(btn => { + if (btn.linkmenu && menuObj[btn.linkmenu]) { + menus.push(menuObj[btn.linkmenu]) + } else if (btn.openmenu && menuObj[btn.openmenu]) { + menus.push(menuObj[btn.openmenu]) + } + }) + }) + } + }) + } + + traversal(config.components) + + let map = new Map() + menus = menus.filter(m => { + if (map.has(m.MenuID)) return false + map.set(m.MenuID, true) + return true + }) + + return menus + } + submitConfig = () => { const { delButtons, copyButtons, thawButtons } = this.state let config = fromJS(this.state.config).toJS() @@ -1086,6 +1218,10 @@ let roleParam = this.getMenuMessage() + let subMenus = this.getSubMenus() + let menus_used_list = subMenus.map(m => `'${config.uuid}','${config.MenuName || ''}','${config.MenuNo || ''}','${m.MenuID}','${m.MenuName}'`).join(';') + menus_used_list = window.btoa(window.encodeURIComponent(menus_used_list || 'del')) + let param = { func: 'sPC_TrdMenu_AddUpt', FstID: 'mk_app', @@ -1102,7 +1238,8 @@ menus_rolelist: window.btoa(window.encodeURIComponent(JSON.stringify(roleParam))), open_edition: config.open_edition, LText: '', - LTexttb: '' + LTexttb: '', + menus_used_list } param.timestamp = moment().format('YYYY-MM-DD HH:mm:ss') @@ -1762,7 +1899,7 @@ } render () { - const { localedict, loading, visible, popBtn, comloading, activeKey, settingshow, controlshow, dict, MenuId, config, menuloading, customComponents } = this.state + const { localedict, loading, visible, popBtn, comloading, activeKey, settingshow, controlshow, dict, MenuId, config, menuloading, customComponents, eyeopen } = this.state return ( <ConfigProvider locale={localedict}> @@ -1812,9 +1949,10 @@ <Button type="primary" id="save-config" onClick={this.submitConfig} loading={menuloading}>{dict['mob.save']}</Button> <Switch className="big" checkedChildren={dict['mob.enable']} unCheckedChildren={dict['mob.disable']} checked={config && config.enabled} onChange={this.onEnabledChange} /> <ArrowLeftOutlined title="鍚庨��" className="back-view" onClick={this.backView}/> + <Button className="mk-border-purple" onClick={() => this.setState({eyeopen: !eyeopen})}>{!eyeopen ? <EyeOutlined /> : <EyeInvisibleOutlined />} 缁勪欢鍚�</Button> <CreateView resetmenu={this.getAppMenus} /> <PasteController insert={this.insert} /> - <StyleCombControlButton menu={config} /> + <ViewNodes config={config} MenuId={MenuId}/> <SysInterface config={config} updateConfig={this.updateConfig}/> <PictureController/> <Quotecomponent config={config} updateConfig={this.updateConfig}/> @@ -1823,11 +1961,12 @@ <ReplaceField type="custom" config={config} updateConfig={this.resetConfig}/> <Transfer MenuID={MenuId} /> <Versions MenuId={MenuId} open_edition={config ? config.open_edition : ''}/> + <StyleCombControlButton menu={config} /> <Button className="mk-border-danger" onClick={this.refreshView}><RedoOutlined /> 寮哄埗鍒锋柊</Button> <Button type="default" onClick={this.closeView}>鍏抽棴</Button> </div> </div> - <div className={'menu-body menu-view' + (menuloading ? 'saving' : '')}> + <div className={'menu-body menu-view' + (menuloading ? ' saving' : '') + (eyeopen ? ' eye-open' : '')}> {config && !comloading ? <MenuShell menu={config} handleList={this.updateConfig} /> : null} </div> </DndProvider> : null} -- Gitblit v1.8.0