From fa381753ef2a2b25b1c0722549ac17e333da79be Mon Sep 17 00:00:00 2001 From: king <18310653075@163.com> Date: 星期二, 06 九月 2022 22:50:54 +0800 Subject: [PATCH] 2022-09-06 --- src/views/mobdesign/index.jsx | 255 ++++++++++++++++++++++++++------------------------ 1 files changed, 132 insertions(+), 123 deletions(-) diff --git a/src/views/mobdesign/index.jsx b/src/views/mobdesign/index.jsx index f2fdb32..15218a9 100644 --- a/src/views/mobdesign/index.jsx +++ b/src/views/mobdesign/index.jsx @@ -1,5 +1,4 @@ import React, { Component } from 'react' -import { connect } from 'react-redux' import { DndProvider } from 'react-dnd' import { withRouter } from 'react-router' import { is, fromJS } from 'immutable' @@ -56,6 +55,8 @@ window.GLOB.urlFields = [] // url鍙橀噺 window.GLOB.customMenu = null // 淇濆瓨鑿滃崟淇℃伅 +const memberLevel = Utils.getMemberLevel() + class MobDesign extends Component { state = { localedict: sessionStorage.getItem('lang') !== 'en-US' ? antdZhCN : antdEnUS, @@ -75,11 +76,12 @@ comloading: false, adapters: [], viewType: 'menu', - eyeopen: false + eyeopen: false, + modalStatus: false // 寮圭獥鏄惁寮�鍚紝鍒ゆ柇ctrl+s鏄惁鍙敤 } UNSAFE_componentWillMount() { - if (this.props.memberLevel < 30) return + if (memberLevel < 30) return try { let param = JSON.parse(window.decodeURIComponent(window.atob(this.props.match.params.param))) @@ -149,18 +151,27 @@ } componentDidMount () { - if (this.props.memberLevel < 30) { + if (memberLevel < 30) { 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('changeEditMenu', this.changeEditMenu) + MKEmitter.addListener('modalStatus', this.modalStatus) MKEmitter.addListener('triggerMenuSave', this.submitConfig) + MKEmitter.addListener('changeEditMenu', this.changeEditMenu) MKEmitter.addListener('submitComponentStyle', this.updateComponentStyle) MKEmitter.addListener('updateCustomComponent', this.updateCustomComponent) setTimeout(() => { - this.updateCustomComponent() + if (sessionStorage.getItem('app_custom_components')) { + let list = sessionStorage.getItem('app_custom_components') + list = JSON.parse(list) + + this.setCustomComponent(list) + } else { + this.updateCustomComponent() + } this.getAppPictures() this.getSmStemp() + this.getRoleFields() setGLOBFuncs() }, 1000) @@ -183,6 +194,15 @@ let _shortcut = `${preKey}+${keyCode}` if (_shortcut === 'ctrl+83') { + if (this.state.modalStatus) { + notification.warning({ + top: 92, + message: '璇蜂繚瀛�' + this.state.modalStatus, + duration: 5 + }) + return false + } + let node = document.getElementById('save-modal-config') if (!node) { node = document.getElementById('save-config') @@ -203,10 +223,15 @@ this.setState = () => { return } - MKEmitter.removeListener('changeEditMenu', this.changeEditMenu) + MKEmitter.removeListener('modalStatus', this.modalStatus) MKEmitter.removeListener('triggerMenuSave', this.submitConfig) + MKEmitter.removeListener('changeEditMenu', this.changeEditMenu) MKEmitter.removeListener('submitComponentStyle', this.updateComponentStyle) MKEmitter.removeListener('updateCustomComponent', this.updateCustomComponent) + } + + modalStatus = (val) => { + this.setState({modalStatus: val}) } getSmStemp = () => { @@ -396,36 +421,46 @@ typename: sessionStorage.getItem('typename'), typecharone: '' }).then(res => { - let coms = [] - if (res.cus_list && res.cus_list.length > 0) { - res.cus_list.forEach(item => { - let config = '' - - try { - config = JSON.parse(window.decodeURIComponent(window.atob(item.long_param))) - } catch (e) { - console.warn('Parse Failure') - config = '' - } - - if (!config || !item.c_name) return - - window.GLOB.UserComponentMap.set(item.c_id, item.c_name) - coms.push({ - uuid: item.c_id, - type: 'menu', - title: item.c_name, - url: item.images, - component: config.type, - subtype: config.subtype, - width: config.width || 24, - config - }) + if (!res.status) { + notification.warning({ + top: 92, + message: res.message, + duration: 5 }) + } else if (res.cus_list) { + sessionStorage.setItem('app_custom_components', JSON.stringify(res.cus_list)) + this.setCustomComponent(res.cus_list) } - this.setState({customComponents: coms}) - this.getRoleFields() }) + } + + setCustomComponent = (cus_list) => { + let coms = [] + + cus_list.forEach(item => { + let config = '' + + try { + config = JSON.parse(window.decodeURIComponent(window.atob(item.long_param))) + } catch (e) { + console.warn('Parse Failure') + config = '' + } + + if (!config || !item.c_name) return + + window.GLOB.UserComponentMap.set(item.c_id, item.c_name) + coms.push({ + uuid: item.c_id, + type: 'menu', + title: item.c_name, + url: item.images, + component: config.type, + subtype: config.subtype, + config + }) + }) + this.setState({customComponents: coms}) } updateComponentStyle = (parentId, keys, style) => { @@ -534,7 +569,8 @@ Template: 'webPage', enabled: false, MenuName: urlParam.MenuName || '', - MenuNo: urlParam.MenuNo || '', + // MenuNo: urlParam.MenuNo || '', + MenuNo: '', tables: [], components: [], viewType: 'menu', @@ -784,7 +820,8 @@ config.MenuID = MenuId config.open_edition = '' config.MenuName = urlParam.MenuName || '' - config.MenuNo = urlParam.MenuNo || '' + // config.MenuNo = urlParam.MenuNo || '' + config.MenuNo = '' let indeComs = [] config.components.forEach(item => { @@ -940,7 +977,6 @@ item.action && item.action.forEach(btn => { if (btn.hidden === 'true') return - this.checkBtn(btn) m.children.push({ key: btn.uuid, title: btn.label, @@ -951,7 +987,6 @@ if (cell.eleType !== 'button') return if (cell.hidden === 'true') return - this.checkBtn(cell) m.children.push({ key: cell.uuid, title: cell.label, @@ -964,7 +999,6 @@ if (cell.eleType !== 'button') return if (cell.hidden === 'true') return - this.checkBtn(cell) m.children.push({ key: cell.uuid, title: cell.label, @@ -976,7 +1010,6 @@ if (cell.eleType !== 'button') return if (cell.hidden === 'true') return - this.checkBtn(cell) m.children.push({ key: cell.uuid, title: cell.label, @@ -994,17 +1027,18 @@ } }) } else if (item.type === 'form') { - m.children = item.subcards.map(m => { - return { - key: m.uuid, - title: m.setting.title - } - }) + if (item.subtype !== 'simpleform') { + m.children = item.subcards.map(m => { + return { + key: m.uuid, + title: m.setting.title + } + }) + } } 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, title: btn.label, @@ -1015,7 +1049,6 @@ col.elements.forEach(btn => { if (btn.hidden === 'true') return - this.checkBtn(btn) m.children.push({ key: btn.uuid, title: btn.label, @@ -1071,7 +1104,8 @@ menus.push({ MenuID: m.uuid, MenuName: m.setting.name, - MenuNo: m.setting.MenuNo + // MenuNo: m.setting.MenuNo + MenuNo: '' }) } } else if (m.setting.type === 'linkmenu' && menuObj[m.setting.linkMenuId]) { @@ -1175,26 +1209,6 @@ }) return menus - } - - checkBtn = (btn) => { - if (['prompt', 'exec', 'pop'].includes(btn.OpenType) && btn.Ot === 'required' && btn.verify && btn.verify.scripts && btn.verify.scripts.length > 0) { - let hascheck = false - btn.verify.scripts.forEach(item => { - if (item.status === 'false') return - - if (/\$check@|@check\$/ig.test(item.sql)) { - hascheck = true - } - }) - if (hascheck) { - notification.warning({ - top: 92, - message: `鍙�夋嫨澶氳鐨勬寜閽��${btn.label}銆嬩腑 $check@ 鎴� @check$ 灏嗕笉浼氱敓鏁堬紒`, - duration: 5 - }) - } - } } getMiniStyle = (config) => { @@ -1309,9 +1323,8 @@ config.loginview = false config.tabview = false - if (config.permission !== 'true') { + if (roleParam.children.length === 0) { roleParam.pass = true - roleParam.children = [] } config.components.forEach(item => { @@ -1326,6 +1339,19 @@ if (adapters.includes('wxmini')) { config = this.getMiniStyle(config) + + if (config.statusBarbgColor && !config.statusBarHexColor && /^rgba/ig.test(config.statusBarbgColor)) { + let hexify = (color) => { + let values = color.replace(/rgba?\(/, '').replace(/\)/, '').replace(/[\s+]/g, '').split(',') + let a = parseFloat(values[3] || 1) + let r = Math.floor(a * parseInt(values[0]) + (1 - a) * 255) + let g = Math.floor(a * parseInt(values[1]) + (1 - a) * 255) + let b = Math.floor(a * parseInt(values[2]) + (1 - a) * 255) + + return '#' + ('0' + r.toString(16)).slice(-2) + ('0' + g.toString(16)).slice(-2) + ('0' + b.toString(16)).slice(-2) + } + config.statusBarHexColor = hexify(config.statusBarbgColor) + } } let subMenus = this.getSubMenus() @@ -1540,7 +1566,7 @@ } MKEmitter.emit('completeSave') }) - }, 300) + }, 300 + (+sessionStorage.getItem('mkDelay'))) } getRoleFields = () => { @@ -1593,16 +1619,16 @@ let searchSum = 0 let swipes = [] - let check = (components) => { + let check = (components, level, sign) => { components.forEach(item => { if (error) return if (item.type === 'tabs') { item.subtabs.forEach(tab => { - check(tab.components) + check(tab.components, level + 1, tab.uuid) }) return } else if (item.type === 'group') { - check(item.components) + check(item.components, level, sign) return } else if (item.type === 'navbar' && !item.wrap.MenuNo) { error = `瀵艰埅鏍忋��${item.name}銆嬫湭璁剧疆鑿滃崟鍙傛暟锛乣 @@ -1615,46 +1641,20 @@ if (!item.wrap.field) { error = `鎼滅储鏉′欢銆�${item.name}銆嬫湭璁剧疆鎼滅储瀛楁锛乣 } - } else if (item.subtype === 'propcard' && item.subcards.length === 0) { - error = `缁勪欢銆�${item.name}銆嬩腑鍗$墖涓嶅彲涓虹┖锛乣 - return - } else if (item.type === 'login' && !item.wrap.linkmenu && item.wrap.link !== 'menu') { - error = '鐧诲綍缁勪欢鏈缃叧鑱旇彍鍗曪紒' - return } - if (item.wrap && item.wrap.pagestyle === 'slide') { - swipes.push(item.name) + if (item.wrap && item.wrap.pagestyle === 'slide' && item.pageable && item.setting.laypage !== 'false') { + // swipes.push(item.name) + swipes.push({level, name: item.name, sign}) } - if (['voucher'].includes(item.subtype)) return - if (['propcard', 'brafteditor', 'sandbox', 'tabbar', 'stepform', 'tabform'].includes(item.subtype) && item.wrap.datatype === 'static') return - if (['balcony'].includes(item.type) && item.wrap.datatype === 'static') return - if (['menubar'].includes(item.type) && item.wrap.datatype !== 'dynamic') return - - if (item.setting) { - if (item.setting.interType === 'system' && item.setting.execute !== 'false' && !item.setting.dataresource) { - error = `缁勪欢銆�${item.name}銆嬫湭璁剧疆鏁版嵁婧愶紒` - } else if (item.setting.interType === 'system' && item.setting.execute === 'false' && item.scripts.length === 0) { - error = `缁勪欢銆�${item.name}銆嬫湭璁剧疆鏁版嵁婧愶紒` - } else if (!item.setting.primaryKey) { - error = `缁勪欢銆�${item.name}銆嬫湭璁剧疆涓婚敭锛乣 - } else if (!item.setting.supModule && !['navbar', 'balcony', 'menubar'].includes(item.type)) { - error = `缁勪欢銆�${item.name}銆嬫湭璁剧疆涓婄骇缁勪欢锛乣 - } - } - if (item.type === 'bar' || item.type === 'line' || item.type === 'pie') { - if (!item.plot.Xaxis) { - error = `缁勪欢銆�${item.name}銆嬪浘琛ㄥ瓧娈靛皻鏈缃紒` - } - } else if (item.type === 'dashboard' && !item.plot.valueField) { - error = `缁勪欢銆�${item.name}銆嬫樉绀哄�煎皻鏈缃紒` - } else if (item.type === 'scatter' && (!item.plot.Xaxis || !item.plot.Yaxis || !item.plot.gender)) { - error = `缁勪欢銆�${item.name}銆嬪潗鏍囪酱灏氭湭璁剧疆锛乣 - } + item.errors && item.errors.forEach(err => { + if (err.level !== 0 || error) return + error = `缁勪欢銆�${item.name}銆�${err.detail}` + }) }) } - check(config.components) + check(config.components, 1, 'view') // if (!error && viewType === 'userbind' && config.components.filter(item => item.type === 'login').length === 0) { // error = '鐢ㄦ埛缁戝畾椤甸潰蹇呴』娣诲姞鐧诲綍銆�' @@ -1662,8 +1662,27 @@ if (!error && searchSum > 1) { error = '鎼滅储缁勪欢涓庡鑸爮鐨勬悳绱㈠姛鑳戒笉鍙悓鏃朵娇鐢ㄣ��' - } else if (!error && swipes.length > 1) { - error = `椤甸潰涓笉鍙悓鏃朵娇鐢ㄥ涓粦鍔ㄥ姞杞界粍浠躲�傦紙${swipes.join('銆�')}锛塦 + } else if (!error && swipes.length > 0) { + swipes.forEach(cell => { + if (!error && cell.level > 2) { + error = `涓嶅彲鍦ㄥ灞傛爣绛鹃〉涓娇鐢ㄦ粦鍔ㄥ姞杞界粍浠躲�傦紙${cell.name}锛塦 + } + }) + if (!error) { + let levels = swipes.map(s => s.level) + levels = Array.from(new Set(levels)) + if (levels.length > 1) { + error = `涓嶅彲鍦ㄩ〉闈笌鏍囩椤典腑鍚屾椂浣跨敤婊戝姩鍔犺浇缁勪欢銆傦紙${swipes.map(s => s.name).join('銆�')}锛塦 + } + } + + if (!error) { + let signs = swipes.map(s => s.sign) + signs = Array.from(new Set(signs)) + if (signs.length !== swipes.length) { + error = `椤甸潰涓紙鎴栧悓涓�鏍囩椤典腑锛変笉鍙悓鏃朵娇鐢ㄥ涓粦鍔ㄥ姞杞界粍浠躲�傦紙${swipes.map(s => s.name).join('銆�')}锛塦 + } + } } if (show && error) { @@ -1916,7 +1935,7 @@ <div className="pc-setting-tools"> <Collapse accordion activeKey={activeKey} bordered={false} onChange={(key) => this.setState({activeKey: key})}> {/* 鍩烘湰淇℃伅 */} - <Panel header={dict['mob.basemsg']} forceRender className="basedata" key="basedata"> + <Panel header="鍩烘湰淇℃伅" forceRender className="basedata" key="basedata"> {/* 鑿滃崟淇℃伅 */} {config ? <MenuForm dict={dict} @@ -1985,14 +2004,4 @@ } } -const mapStateToProps = (state) => { - return { - memberLevel: state.memberLevel - } -} - -const mapDispatchToProps = () => { - return {} -} - -export default withRouter(connect(mapStateToProps, mapDispatchToProps)(MobDesign)) \ No newline at end of file +export default withRouter(MobDesign) \ No newline at end of file -- Gitblit v1.8.0