From c8e680b315ce010905f6b0409d3156218abfe056 Mon Sep 17 00:00:00 2001 From: king <18310653075@163.com> Date: 星期四, 11 三月 2021 19:03:31 +0800 Subject: [PATCH] 2021-03-11 --- src/views/pcdesign/index.jsx | 257 ++++++++++++++++++++++++++++++++++++++++++++------- 1 files changed, 221 insertions(+), 36 deletions(-) diff --git a/src/views/pcdesign/index.jsx b/src/views/pcdesign/index.jsx index 0f54908..515a08f 100644 --- a/src/views/pcdesign/index.jsx +++ b/src/views/pcdesign/index.jsx @@ -5,7 +5,7 @@ import { is, fromJS } from 'immutable' import moment from 'moment' import HTML5Backend from 'react-dnd-html5-backend' -import { ConfigProvider, notification, Modal, Collapse, Switch, Button, Icon } from 'antd' +import { ConfigProvider, notification, Modal, Collapse, Switch, Button, Icon, message, Spin } from 'antd' import Api from '@/api' import Utils from '@/utils/utils.js' @@ -14,7 +14,7 @@ import antdEnUS from 'antd/es/locale/en_US' import antdZhCN from 'antd/es/locale/zh_CN' import MKEmitter from '@/utils/events.js' -import MenuUtils from '@/menu/utils/menuUtils.js' +import MenuUtils from '@/utils/utils-custom.js' import asyncComponent from '@/utils/asyncComponent' import { modifyCustomMenu } from '@/store/action' @@ -48,6 +48,7 @@ state = { localedict: sessionStorage.getItem('lang') !== 'en-US' ? antdZhCN : antdEnUS, dict: sessionStorage.getItem('lang') !== 'en-US' ? zhCN : enUS, + loading: true, MenuId: '', MenuName: '', MenuNo: '', @@ -76,7 +77,7 @@ sessionStorage.setItem('link_type', param.link_type || 'true') sessionStorage.setItem('role_type', param.role_type || 'true') sessionStorage.setItem('login_types', param.login_types || 'true') - + this.setState({ localedict: sessionStorage.getItem('lang') !== 'en-US' ? antdZhCN : antdEnUS, dict: sessionStorage.getItem('lang') !== 'en-US' ? zhCN : enUS @@ -86,7 +87,7 @@ this.setState({ MenuId: param.MenuID }, () => { - this.getMenuParam() + this.getMenuParam(param) }) } } catch { @@ -141,16 +142,28 @@ changeEditMenu = (menu) => { const { oriConfig, config } = this.state - if (!is(fromJS(oriConfig), fromJS(config))) { + if (!oriConfig || !is(fromJS(oriConfig), fromJS(config))) { notification.warning({ top: 92, - message: '閰嶇疆宸蹭慨鏀癸紝璇蜂繚瀛橈紒', + message: '閰嶇疆淇℃伅鏈繚瀛橈紒', duration: 5 }) return } - this.props.history.push('/pcdesign/' + window.btoa(window.encodeURIComponent(JSON.stringify({MenuID: menu.MenuID, copyMenuId: menu.copyMenuId || '', type: 'view'})))) + let param = { + MenuID: menu.MenuID, + copyMenuId: menu.copyMenuId || '', + type: 'view' + } + + if (menu.fixed && menu.MenuNo && menu.MenuName) { + param.fixed = true + param.MenuNo = menu.MenuNo + param.MenuName = menu.MenuName + } + + this.props.history.push('/pcdesign/' + window.btoa(window.encodeURIComponent(JSON.stringify(param)))) } getAppMessage = () => { @@ -213,11 +226,13 @@ }) } else { sessionStorage.setItem('appViewList', JSON.stringify(appViewList)) + sessionStorage.setItem('appHomeId', homeId) this.props.history.replace('/pcdesign/' + window.btoa(window.encodeURIComponent(JSON.stringify({MenuID: homeId, type: 'view'})))) } }) } else { sessionStorage.setItem('appViewList', JSON.stringify(appViewList)) + sessionStorage.setItem('appHomeId', homeId) this.props.history.replace('/pcdesign/' + window.btoa(window.encodeURIComponent(JSON.stringify({MenuID: homeId, type: 'view'})))) } }) @@ -329,10 +344,10 @@ initPopview = (card, btn) => { const { oriConfig, config } = this.state - if (!is(fromJS(oriConfig), fromJS(config))) { + if (!oriConfig || !is(fromJS(oriConfig), fromJS(config))) { notification.warning({ top: 92, - message: '閰嶇疆宸蹭慨鏀癸紝璇蜂繚瀛橈紒', + message: '閰嶇疆淇℃伅鏈繚瀛橈紒', duration: 5 }) return @@ -354,9 +369,9 @@ return } - if (!is(fromJS(oriConfig), fromJS(config))) { + if (!oriConfig || !is(fromJS(oriConfig), fromJS(config))) { confirm({ - title: '閰嶇疆宸蹭慨鏀癸紝鏀惧純淇濆瓨鍚楋紵', + title: '閰嶇疆淇℃伅鏈繚瀛橈紝纭畾鍏抽棴鍚楋紵', content: '', onOk() { window.close() @@ -368,7 +383,7 @@ } } - getMenuParam = () => { + getMenuParam = (urlParam) => { const { MenuId } = this.state let param = { @@ -379,8 +394,19 @@ } Api.getSystemConfig(param).then(result => { - if (result.status) { + if (!result.status) { + notification.warning({ + top: 92, + message: result.message, + duration: 5 + }) + this.setState({loading: false}) + return + } else if (!result.LongParam && urlParam.copyMenuId) { + this.getCopyParam(urlParam) + } else { let config = null + let isCreate = false try { config = result.LongParam ? JSON.parse(window.decodeURIComponent(window.atob(result.LongParam))) : null @@ -390,6 +416,7 @@ } if (!config) { + isCreate = true config = { version: 1.0, uuid: MenuId, @@ -411,6 +438,12 @@ config.MenuID = MenuId config.open_edition = result.open_edition || '' + if (urlParam.fixed) { + config.fixed = true + config.MenuName = urlParam.MenuName + config.MenuNo = urlParam.MenuNo + } + let indeComs = [] config.components.forEach(item => { if (item.type === 'navbar') { @@ -420,23 +453,21 @@ if (indeComs.length === 0) { this.setState({ - oriConfig: config, + oriConfig: isCreate ? null : config, config: fromJS(config).toJS(), + loading: false }) this.props.modifyCustomMenu(config) } else { - this.jointComponents(config, indeComs) + this.jointComponents(config, indeComs, isCreate) } - } else { - notification.warning({ - top: 92, - message: result.message, - duration: 5 - }) } }) + this.getAppMenus() + } + getAppMenus = () => { let _param = { func: 's_get_app_menus', TypeCharOne: sessionStorage.getItem('kei_no'), @@ -466,7 +497,90 @@ }) } - jointComponents = (config, indeComs) => { + getCopyParam = (urlParam) => { + const { MenuId } = this.state + + let param = { + func: 'sPC_Get_LongParam', + TypeCharOne: sessionStorage.getItem('kei_no'), + typename: 'pc', + MenuID: urlParam.copyMenuId + } + + Api.getSystemConfig(param).then(result => { + if (!result.status) { + notification.warning({ + top: 92, + message: result.message, + duration: 5 + }) + this.setState({loading: false}) + return + } else if (!result.LongParam) { + notification.warning({ + top: 92, + message: '鏈煡璇㈠埌澶嶅埗鑿滃崟閰嶇疆淇℃伅锛�', + duration: 5 + }) + } + + let config = null + + try { + config = result.LongParam ? JSON.parse(window.decodeURIComponent(window.atob(result.LongParam))) : null + } catch (e) { + console.warn('Parse Failure') + config = null + } + + + if (!config) { + config = { + version: 1.0, + uuid: MenuId, + MenuID: MenuId, + Template: 'webPage', + enabled: false, + MenuName: '', + MenuNo: '', + tables: [], + components: [], + viewType: 'menu', + style: { + backgroundColor: '#ffffff', backgroundImage: '', paddingLeft: '20px', paddingRight: '20px' + } + } + } else { + config.components = MenuUtils.resetConfig(config.components) + message.success('澶嶅埗鎴愬姛锛屼繚瀛樺悗鐢熸晥銆�') + } + + config.uuid = MenuId + config.MenuID = MenuId + config.open_edition = '' + + let indeComs = [] + config.components.forEach(item => { + if (item.type === 'navbar') { + indeComs.push(fromJS(item).toJS()) + } + }) + + if (indeComs.length === 0) { + this.setState({ + oriConfig: null, + config: fromJS(config).toJS(), + loading: false + }) + + this.props.modifyCustomMenu(config) + } else { + this.jointComponents(config, indeComs, true) + } + }) + } + + jointComponents = (config, indeComs, isCreate) => { let deffers = indeComs.map(item => { return new Promise(resolve => { Api.getSystemConfig({ @@ -483,7 +597,6 @@ message: res.message, duration: 5 }) - return } resolve(res) @@ -531,8 +644,9 @@ } this.setState({ - oriConfig: fromJS(config).toJS(), - config: config + oriConfig: isCreate ? null : fromJS(config).toJS(), + config: config, + loading: false }) this.props.modifyCustomMenu(config) @@ -648,6 +762,11 @@ message: '璇峰畬鍠勮彍鍗曞熀鏈俊鎭紒', duration: 5 }) + sessionStorage.setItem('settingshow', 'true') + this.setState({ + settingshow: true, + activeKey: 'basedata' + }) return } @@ -750,7 +869,7 @@ LText: '', LTexttb: '' } - + _param.LongParam = window.btoa(window.encodeURIComponent(JSON.stringify(item))) _param.timestamp = moment().format('YYYY-MM-DD HH:mm:ss') _param.secretkey = Utils.encrypt('', _param.timestamp) @@ -901,13 +1020,12 @@ if (!res) return if (delButtons.length === 0) { - return { - status: true - } + return { status: true, nonexec: true } } else { + let appHomeId = sessionStorage.getItem('appHomeId') let _param = { func: 'sPC_MainMenu_Del', - MenuID: delButtons.join(',') + MenuID: delButtons.filter(id => id !== appHomeId).join(',') } return Api.getSystemConfig(_param) } @@ -920,13 +1038,13 @@ duration: 5 }) return false + } else if (!res.nonexec) { // 鎵ц鍒犻櫎鍚庡埛鏂拌彍鍗曞垪琛� + this.getAppMenus() } let ids = thawButtons.filter(item => btnIds.indexOf(item) !== -1) if (ids.length === 0) { - return { - status: true - } + return { status: true } } else { return Api.getSystemConfig({ func: 'sPC_MainMenu_ReDel', @@ -1191,14 +1309,19 @@ refreshView = () => { const { oriConfig, config } = this.state - if (!is(fromJS(oriConfig), fromJS(config))) { + if (!oriConfig || !is(fromJS(oriConfig), fromJS(config))) { notification.warning({ top: 92, - message: '閰嶇疆宸蹭慨鏀癸紝璇蜂繚瀛橈紒', + message: '閰嶇疆淇℃伅鏈繚瀛橈紒', duration: 5 }) return } + + // Api.getSystemConfig({ + // func: 'sPC_MainMenu_Del', + // MenuID: '1614740497468ku800sbg853vupf65v4' + // }) sessionStorage.removeItem('sysRoles') sessionStorage.removeItem('permFuncField') @@ -1208,12 +1331,73 @@ window.location.reload() } + setHomeView = () => { + const { oriConfig, config } = this.state + + if (!oriConfig || !is(fromJS(oriConfig), fromJS(config))) { + notification.warning({ + top: 92, + message: '閰嶇疆淇℃伅鏈繚瀛橈紒', + duration: 5 + }) + return + } + + let param = { + func: 's_kei_link_keyids_addupt', + BID: sessionStorage.getItem('appId'), + exec_type: 'y', + LText: '' + } + + let appViewList = sessionStorage.getItem('appViewList') + appViewList = appViewList ? JSON.parse(appViewList) : [] + appViewList = appViewList.filter(item => item.keys_type !== 'index') + + appViewList.unshift({ + appkey: window.GLOB.appkey || '', + bid: sessionStorage.getItem('appId') || '', + kei_no: sessionStorage.getItem('kei_no') || '', + keys_id: config.MenuID, + keys_type: 'index', + remark: config.MenuName + }) + + param.LText = appViewList.map(item => `select '${item.keys_id}','${item.keys_type}','${item.kei_no}','${item.appkey}','${item.bid}','${sessionStorage.getItem('CloudUserID')}','${item.remark}'`) + param.LText = param.LText.join(' union all ') + param.LText = Utils.formatOptions(param.LText) + + param.timestamp = moment().format('YYYY-MM-DD HH:mm:ss') + param.secretkey = Utils.encrypt('', param.timestamp) + + confirm({ + title: '纭畾璁剧疆鏈〉闈负棣栭〉鍚楋紵', + content: '', + onOk() { + Api.getSystemConfig(param).then(result => { + if (!result.status) { + notification.warning({ + top: 92, + message: result.message, + duration: 5 + }) + } else { + sessionStorage.setItem('appHomeId', config.MenuID) + sessionStorage.setItem('appViewList', JSON.stringify(appViewList)) + } + }) + }, + onCancel() {} + }) + } + render () { - const { localedict, activeKey, settingshow, controlshow, dict, MenuId, config, menuloading, customComponents } = this.state + const { localedict, loading, activeKey, settingshow, controlshow, dict, MenuId, config, menuloading, customComponents } = this.state return ( <ConfigProvider locale={localedict}> <div className={'mk-pc-view '} id="mk-menu-design-view"> + {loading ? <Spin className="view-spin" size="large" /> : null} <DndProvider backend={HTML5Backend}> <div className={'menu-setting ' + (!settingshow ? 'hidden' : '')}> <div className="draw"> @@ -1259,6 +1443,7 @@ <SysInterface config={config} updateConfig={this.updateConfig}/> <PictureController/> <Quotecomponent config={config} updateConfig={this.updateConfig}/> + <Button className="mk-border-green" icon="home" onClick={this.setHomeView}>璁句负棣栭〉</Button> <Button className="mk-border-danger" icon="redo" onClick={this.refreshView}>寮哄埗鍒锋柊</Button> <Button type="default" onClick={this.closeView}>{dict['mob.return']}</Button> </div> -- Gitblit v1.8.0