From 83592b5c2dcbfd0a91d36dfa89f1a6cbe95ab1d1 Mon Sep 17 00:00:00 2001 From: king <18310653075@163.com> Date: 星期四, 27 十月 2022 15:22:01 +0800 Subject: [PATCH] 2022-10-27 --- src/views/tabledesign/index.jsx | 138 +++++++++++++++++++++++++++++++++++++++------ 1 files changed, 118 insertions(+), 20 deletions(-) diff --git a/src/views/tabledesign/index.jsx b/src/views/tabledesign/index.jsx index ce5a07f..10e14b6 100644 --- a/src/views/tabledesign/index.jsx +++ b/src/views/tabledesign/index.jsx @@ -12,6 +12,7 @@ import Utils, { setGLOBFuncs } from '@/utils/utils.js' import antdZhCN from 'antd/es/locale/zh_CN' import MKEmitter from '@/utils/events.js' +import { getTables } from '@/utils/utils-custom.js' import SourceElement from '@/templates/zshare/dragsource' import asyncComponent from '@/utils/asyncComponent' import Source from './source' @@ -25,6 +26,7 @@ const _locale = antdZhCN const MenuForm = asyncComponent(() => import('./menuform')) +const PopView = asyncComponent(() => import('./popview')) const TableNodes = asyncComponent(() => import('@/menu/tablenodes')) const TableSource = asyncComponent(() => import('./tablesource')) const Header = asyncComponent(() => import('@/menu/header')) @@ -55,6 +57,8 @@ config: null, comloading: false, settingshow: true, + view: null, + popConfig: null } UNSAFE_componentWillMount() { @@ -141,6 +145,9 @@ let node = document.getElementById('save-modal-config') if (!node) { + node = document.getElementById('save-pop-config') + } + if (!node) { node = document.getElementById('save-config') } @@ -164,6 +171,8 @@ } triggerMenuSave = () => { + if (this.state.view === 'popview') return + this.submitConfig() } @@ -212,22 +221,101 @@ } initPopview = (card, btn) => { - const { oriConfig, config } = this.state + const { config } = this.state - if (!is(fromJS(oriConfig), fromJS(config))) { - notification.warning({ - top: 92, - message: '閰嶇疆宸蹭慨鏀癸紝璇蜂繚瀛橈紒', - duration: 5 - }) + if (!this.checkBase()) { return } let _btn = fromJS(btn).toJS() - _btn.MenuName = config.MenuName + '-' + card.name + '-' + btn.label - _btn.ParentMenuID = config.uuid - this.props.history.push('/popdesign/' + window.btoa(window.encodeURIComponent((JSON.stringify(_btn))))) + 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: 'BaseTable', + components: [{ + uuid: Utils.getuuid(), + type: 'table', + width: 24, + name: '涓昏〃', + subtype: 'basetable', + isNew: true + }], + viewType: 'popview', + style: { backgroundColor: '#ffffff', backgroundImage: '', paddingTop: '16px', paddingBottom: '40px', paddingLeft: '16px', paddingRight: '16px' } + } + } + + this.setState({view: 'popview', popConfig: _btn}) + } + + submitPopConfig = (btnconfig) => { + let config = fromJS(this.state.config).toJS() + + config.components.forEach(item => { + if (item.type === 'tabs') { + item.subtabs.forEach(tab => { + if (btnconfig.ParentId !== tab.components[0].uuid) return + + tab.components[0].action.forEach(btn => { + if (btn.OpenType === 'popview' && btn.uuid === btnconfig.uuid) { + btn.config = btnconfig + } + }) + tab.components[0].cols.forEach(col => { + if (col.type !== 'action') return + col.elements.forEach(btn => { + if (btn.OpenType === 'popview' && btn.uuid === btnconfig.uuid) { + btn.config = btnconfig + } + }) + }) + + tab.components[0].$tables = getTables(tab.components[0]) + }) + } else if (item.uuid === btnconfig.ParentId) { + item.action.forEach(btn => { + if (btn.OpenType === 'popview' && btn.uuid === btnconfig.uuid) { + btn.config = btnconfig + } + }) + item.cols.forEach(col => { + if (col.type !== 'action') return + col.elements.forEach(btn => { + if (btn.OpenType === 'popview' && btn.uuid === btnconfig.uuid) { + btn.config = btnconfig + } + }) + }) + + item.$tables = getTables(item) + } + }) + + this.setState({ config }, () => { + this.submitConfig() + }) + } + + closePop = () => { + const { config } = this.state + + sessionStorage.setItem('editMenuType', 'menu') + + window.GLOB.urlFields = config.urlFields || [] + window.GLOB.customMenu = config + + this.setState({view: '', popConfig: null}) } closeView = () => { @@ -392,8 +480,8 @@ return buttons } - submitConfig = () => { - let config = fromJS(this.state.config).toJS() + checkBase = () => { + const { config } = this.state if (!config.MenuName || !config.MenuNo || !config.fstMenuId || !config.parentId) { notification.warning({ @@ -401,6 +489,15 @@ message: '璇峰畬鍠勮彍鍗曞熀鏈俊鎭紒', duration: 5 }) + return false + } + return true + } + + submitConfig = () => { + let config = fromJS(this.state.config).toJS() + + if (!this.checkBase()) { return } @@ -495,6 +592,7 @@ localStorage.setItem('menuUpdate', new Date().getTime()) } config.open_edition = res.open_edition || '' + this.setState({ config, oriConfig: fromJS(config).toJS(), @@ -650,13 +748,13 @@ } render () { - const { activeKey, comloading, MenuId, config, settingshow, ParentId, menuloading } = this.state + const { view, activeKey, comloading, MenuId, config, settingshow, ParentId, menuloading } = this.state return ( <ConfigProvider locale={_locale}> - <div className="pc-table-view"> - <Header /> - <DndProvider backend={HTML5Backend}> + <Header /> + <DndProvider backend={HTML5Backend}> + {view !== 'popview' ? <div className="pc-table-view"> <div className="menu-body"> <div className={'menu-setting ' + (!settingshow ? 'hidden' : '')}> <div className="draw"> @@ -718,10 +816,10 @@ </Card> </div> </div> - </DndProvider> - <StyleController /> - <ModalController /> - </div> + </div> : <PopView btn={this.state.popConfig} save={this.submitPopConfig} cancel={this.closePop}/>} + </DndProvider> + <StyleController /> + <ModalController /> </ConfigProvider> ) } -- Gitblit v1.8.0