From fb3ec146a9e1444ece749d0bcf232a554e933fb0 Mon Sep 17 00:00:00 2001 From: king <18310653075@163.com> Date: 星期二, 17 五月 2022 22:56:16 +0800 Subject: [PATCH] Merge branch 'develop' --- src/views/mobdesign/index.jsx | 202 ++++++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 195 insertions(+), 7 deletions(-) diff --git a/src/views/mobdesign/index.jsx b/src/views/mobdesign/index.jsx index 98854e4..f2fdb32 100644 --- a/src/views/mobdesign/index.jsx +++ b/src/views/mobdesign/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' @@ -30,6 +30,7 @@ const CreateView = asyncComponent(() => import('@/pc/createview')) const Transfer = asyncComponent(() => import('@/pc/transfer')) const Versions = asyncComponent(() => import('@/menu/versions')) +const ViewNodes = asyncComponent(() => import('@/menu/viewnodes')) const SourceWrap = asyncComponent(() => import('@/mob/modulesource')) const BgController = asyncComponent(() => import('@/pc/bgcontroller')) const ReplaceField = asyncComponent(() => import('@/menu/replaceField')) @@ -73,7 +74,8 @@ controlshow: true, comloading: false, adapters: [], - viewType: 'menu' + viewType: 'menu', + eyeopen: false } UNSAFE_componentWillMount() { @@ -124,6 +126,7 @@ viewType: /^userbind/.test(param.MenuID) ? 'userbind' : 'menu' }, () => { this.getMenuParam(param) + this.getRelationMenus() }) } } catch (e) { @@ -570,6 +573,29 @@ this.getAppMenus() } + getRelationMenus = () => { + const { MenuId } = this.state + + let param = { + func: 's_get_menu_used_list', + TypeCharOne: sessionStorage.getItem('kei_no'), + typename: sessionStorage.getItem('typename'), + par_menuid: MenuId, + // used_menuid: MenuId + } + + Api.getSystemConfig(param).then(result => { + if (!result.status) { + notification.warning({ + top: 92, + message: result.message, + duration: 5 + }) + return + } + }) + } + setUserBindMenu = (config, result) => { const { MenuId } = this.state let isCreate = !config @@ -691,6 +717,7 @@ return item }) sessionStorage.setItem('appMenus', JSON.stringify(menus)) + sessionStorage.setItem('allMenus', JSON.stringify(res.menus || [])) }) } @@ -911,6 +938,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, @@ -920,6 +949,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, @@ -931,6 +962,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, @@ -941,6 +974,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, @@ -967,6 +1002,8 @@ }) } else if (item.type === 'table' && item.subtype === 'normaltable') { item.action && item.action.forEach(btn => { + if (btn.hidden === 'true') return + this.checkBtn(btn) m.children.push({ key: btn.uuid, @@ -976,6 +1013,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, @@ -994,6 +1033,148 @@ let trees = traversal(config.components) return trees + } + + 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 === 'topbar') { + if (item.wrap.linkmenu && menuObj[item.wrap.linkmenu]) { + menus.push(menuObj[item.wrap.linkmenu]) + } + if (item.wrap.menus) { + item.wrap.menus.forEach(m => { + if (!menuObj[m.menu]) return + + menus.push(menuObj[m.menu]) + }) + } + } else if (item.type === 'login') { + if (item.wrap.linkmenu && menuObj[item.wrap.linkmenu]) { + menus.push(menuObj[item.wrap.linkmenu]) + } + } else if (item.type === 'menubar' && item.subtype !== 'commonbar') { + item.subMenus.forEach(m => { + if (m.setting.type === 'menu') { + if (menuObj[m.uuid]) { + menus.push(menuObj[m.uuid]) + } else { + menus.push({ + MenuID: m.uuid, + MenuName: m.setting.name, + MenuNo: m.setting.MenuNo + }) + } + } else if (m.setting.type === 'linkmenu' && menuObj[m.setting.linkMenuId]) { + menus.push(menuObj[m.setting.linkMenuId]) + } + }) + } 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 } checkBtn = (btn) => { @@ -1147,6 +1328,10 @@ config = this.getMiniStyle(config) } + 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', @@ -1163,7 +1348,8 @@ open_edition: config.open_edition, menus_rolelist: window.btoa(window.encodeURIComponent(JSON.stringify(roleParam))), LText: '', - LTexttb: '' + LTexttb: '', + menus_used_list } param.timestamp = moment().format('YYYY-MM-DD HH:mm:ss') @@ -1714,7 +1900,7 @@ render () { - const { viewType, localedict, comloading, loading, settingshow, controlshow, activeKey, dict, MenuId, config, menuloading, customComponents, adapters } = this.state + const { viewType, localedict, comloading, loading, settingshow, controlshow, activeKey, dict, MenuId, config, menuloading, customComponents, adapters, eyeopen } = this.state return ( <ConfigProvider locale={localedict}> @@ -1757,7 +1943,7 @@ </Collapse> </div> </div> - <div className={'menu-control ' + (!controlshow ? 'hidden' : '')}> + <div className={'menu-control' + (!controlshow ? ' hidden' : '')}> <div className="draw"> {controlshow ? <DoubleRightOutlined onClick={() => {this.setState({controlshow: false})}}/> : null} {!controlshow ? <DoubleLeftOutlined onClick={() => {this.setState({controlshow: true})}}/> : null} @@ -1766,9 +1952,10 @@ <Button type="primary" onClick={this.submitConfig} id="save-config" 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}/> @@ -1777,11 +1964,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 ? <div className="mob-shell" style={{width: window.GLOB.shellWidth, height: window.GLOB.shellHeight}}> <MobShell menu={config} handleList={this.updateConfig} /> </div> : null} -- Gitblit v1.8.0