From 6c919b7a55f15af56b212d059f1a5ea44d1ed5b8 Mon Sep 17 00:00:00 2001 From: king <18310653075@163.com> Date: 星期五, 04 十一月 2022 17:05:46 +0800 Subject: [PATCH] 2022-11-04 --- src/utils/utils-custom.js | 453 +++++++++++++++++++++++++------------------------------ 1 files changed, 206 insertions(+), 247 deletions(-) diff --git a/src/utils/utils-custom.js b/src/utils/utils-custom.js index e667b47..eb23ab6 100644 --- a/src/utils/utils-custom.js +++ b/src/utils/utils-custom.js @@ -4,44 +4,51 @@ * @return {String} selfId 褰撳墠缁勪欢id */ static getSubModules (components, selfId, supId) { - let modules = components.map(item => { + let modules = [] + components.forEach(item => { if (item.uuid === selfId || item.type === 'navbar') { - return { - children: null - } + return } else if (item.format) { // 鏁版嵁鏍煎紡锛屽瓨鍦ㄦ暟鎹簮 - return { + modules.push({ value: item.uuid, label: item.name, disabled: supId === item.uuid - } + }) } else if (item.type === 'tabs') { - let _item = { - type: 'tabs', - value: item.uuid, - label: item.name, - children: item.subtabs.map(f_tab => { - let subItem = { - type: 'tab', - value: f_tab.uuid, - label: f_tab.label, - children: this.getSubModules(f_tab.components, selfId) - } - - if (!subItem.children || subItem.children.length === 0) { - return {children: null} - } - return subItem + if (item.subtype === 'tabletabs') { + item.subtabs.forEach(tab => { + modules.push({ + value: tab.components[0].uuid, + label: tab.label, + disabled: supId === tab.components[0].uuid + }) }) + } else { + let _item = { + type: 'tabs', + value: item.uuid, + label: item.name, + children: item.subtabs.map(f_tab => { + let subItem = { + type: 'tab', + value: f_tab.uuid, + label: f_tab.label, + children: this.getSubModules(f_tab.components, selfId, supId) + } + + if (subItem.children.length === 0) { + return {children: null} + } + return subItem + }) + } + + _item.children = _item.children.filter(t => t.children !== null) + + if (_item.children.length > 0) { + modules.push(_item) + } } - - _item.children = _item.children.filter(t => t.children !== null) - - if (_item.children.length === 0) { - return {children: null} - } - - return _item } else if (item.type === 'group') { let _item = { value: item.uuid, @@ -54,7 +61,8 @@ } else if (f_tab.format) { return { value: f_tab.uuid, - label: f_tab.name + label: f_tab.name, + disabled: supId === f_tab.uuid } } return { @@ -65,23 +73,12 @@ _item.children = _item.children.filter(t => t.children !== null) - if (_item.children.length === 0) { - return {children: null} - } - - return _item - } else { - return { - children: null + if (_item.children.length > 0) { + modules.push(_item) } } }) - modules = modules.filter(mod => mod.children !== null) - - if (modules.length === 0) { - return null - } return modules } @@ -174,12 +171,11 @@ * @description 鑾峰彇涓婄骇妯″潡 * @return {String} selfId 褰撳墠缁勪欢id */ - static getSupModules (components, selfId) { - let modules = components.map(item => { + static getSupModules (components, selfId, interfaces) { + let modules = [] + components.forEach(item => { if (item.uuid === selfId) { - return { - children: null - } + } else if (item.switchable) { // 鏁版嵁鍙垏鎹� let disabled = false if (item.type === 'card') { @@ -187,41 +183,51 @@ } else if (item.type === 'table') { disabled = item.wrap.tableType === '' } - return { + modules.push({ value: item.uuid, label: item.name, disabled: disabled - } + }) } else if (item.type === 'form') { // 鏁版嵁鏍煎紡锛屽瓨鍦ㄦ暟鎹簮 - return { + modules.push({ value: item.uuid, label: item.name - } + }) } else if (item.type === 'tabs') { - let _item = { - value: item.uuid, - label: item.name, - children: item.subtabs.map(f_tab => { - let subItem = { - value: f_tab.uuid, - label: f_tab.label, - children: this.getSupModules(f_tab.components, selfId) - } + if (item.subtype === 'tabletabs') { + item.subtabs.forEach(tab => { + if (tab.components[0].uuid === selfId) return - if (!subItem.children || subItem.children.length === 0) { - return {children: null} - } - return subItem + modules.push({ + value: tab.components[0].uuid, + label: tab.label, + disabled: tab.components[0].wrap.tableType === '' + }) }) + } else { + let _item = { + value: item.uuid, + label: item.name, + children: item.subtabs.map(f_tab => { + let subItem = { + value: f_tab.uuid, + label: f_tab.label, + children: this.getSupModules(f_tab.components, selfId) + } + + if (subItem.children.length === 0) { + return {children: null} + } + return subItem + }) + } + + _item.children = _item.children.filter(t => t.children !== null) + + if (_item.children.length > 0) { + modules.push(_item) + } } - - _item.children = _item.children.filter(t => t.children !== null) - - if (_item.children.length === 0) { - return {children: null} - } - - return _item } else if (item.type === 'group') { let _item = { value: item.uuid, @@ -232,9 +238,16 @@ children: null } } else if (f_tab.switchable) { + let disabled = false + if (f_tab.type === 'card') { + disabled = f_tab.wrap.cardType === '' + } else if (f_tab.type === 'table') { + disabled = f_tab.wrap.tableType === '' + } return { value: f_tab.uuid, - label: f_tab.name + label: f_tab.name, + disabled: disabled } } return { @@ -245,24 +258,47 @@ _item.children = _item.children.filter(t => t.children !== null) - if (_item.children.length === 0) { - return {children: null} - } - - return _item - } else { - return { - children: null + if (_item.children.length > 0) { + modules.push(_item) } } }) - modules = modules.filter(mod => mod.children !== null) - - if (modules.length === 0) { - return null + if (interfaces && interfaces.length > 0) { + interfaces.forEach(item => { + modules.push({ + value: item.uuid, + label: item.name + }) + }) } + return modules + } + + /** + * @description 鑾峰彇涓婄骇妯″潡 + * @return {String} selfId 褰撳墠缁勪欢id + */ + static checkSupModules (modules, supId) { + let has = false + + let check = (list) => { + list.forEach(m => { + if (has) return + if (supId === m.value) { + has = true + return + } + if (m.children) { + check(m.children) + } + }) + } + + check(modules) + + return has } /** @@ -340,73 +376,6 @@ } /** - * @description 鑾峰彇鍒犻櫎鎸夐挳Id - * @return {String} name - */ - static getDelButtonIds (card) { - let appType = sessionStorage.getItem('appType') - let uuids = [] - - if (appType === 'mob') return uuids - - const getUuids = (item) => { - if (item.type === 'tabs') { - item.subtabs.forEach(tab => { - tab.components.forEach(c => { - getUuids(c) - }) - }) - } else if (item.type === 'group') { - item.components.forEach(c => { - getUuids(c) - }) - } else { - item.action && item.action.forEach(act => { - if (act.origin || (appType === 'pc' && act.OpenType !== 'popview')) return - - uuids.push(act.uuid) - }) - - if (['card', 'carousel', 'timeline'].includes(item.type) || (item.type === 'table' && item.subtype === 'tablecard')) { - item.subcards.forEach(_card => { - _card.elements && _card.elements.forEach(cell => { - if (cell.eleType !== 'button') return - if (appType === 'pc' && cell.OpenType !== 'popview') return - - uuids.push(cell.uuid) - }) - _card.backElements && _card.backElements.forEach(cell => { - if (cell.eleType !== 'button') return - if (appType === 'pc' && cell.OpenType !== 'popview') return - - uuids.push(cell.uuid) - }) - }) - } else if (item.type === 'table' && (item.subtype === 'normaltable' || item.subtype === 'editable')) { - item.cols && item.cols.forEach(col => { - if (col.type !== 'action') return - col.elements && col.elements.forEach(cell => { - if (appType === 'pc' && cell.OpenType !== 'popview') return - - uuids.push(cell.uuid) - }) - }) - } else if (item.type === 'balcony') { - item.elements && item.elements.forEach(cell => { - if (appType === 'pc' && cell.OpenType !== 'popview') return - - uuids.push(cell.uuid) - }) - } - } - } - - getUuids(card) - - return uuids - } - - /** * @description 鐢熸垚32浣島uid string + 鏃堕棿 * @return {String} uuid */ @@ -431,6 +400,10 @@ return item } + if (item.subtype === 'tablecard') { // 鍏煎 + item.type = 'card' + } + uuids[item.uuid] = this.getuuid() item.uuid = uuids[item.uuid] @@ -438,20 +411,10 @@ item.subtabs.forEach(tab => { uuids[tab.uuid] = this.getuuid() tab.uuid = uuids[tab.uuid] - tab.parentId = item.uuid - - tab.components = tab.components.map(cell => { - cell.tabId = tab.uuid - cell.parentId = item.uuid - return cell - }) + tab.components = this.resetConfig(tab.components, uuids, clear) }) } else if (item.type === 'group') { - item.components = item.components.map(cell => { - cell.parentId = item.uuid - return cell - }) item.components = this.resetConfig(item.components, uuids, clear) } else if (item.type === 'menubar') { item.subMenus = item.subMenus.map(cell => { @@ -462,7 +425,7 @@ } return cell }) - } else if (['card', 'carousel', 'timeline'].includes(item.type) || (item.type === 'table' && item.subtype === 'tablecard')) { + } else if (['card', 'carousel', 'timeline'].includes(item.type)) { if (item.wrap.datatype === 'public' && uuids[item.wrap.publicId]) { item.wrap.publicId = uuids[item.wrap.publicId] } @@ -522,7 +485,7 @@ return cell }) } - } else if (item.type === 'table' && (item.subtype === 'normaltable' || item.subtype === 'editable') && item.cols) { + } else if (item.type === 'table' && item.cols) { let loopCol = (col) => { col.subcols = col.subcols.map(c => { c.uuid = this.getuuid() @@ -671,35 +634,6 @@ } /** - * @description 閲嶇疆鑿滃崟閰嶇疆锛岄〉闈㈡暣浣撳鍒� - * @return {String} components 閰嶇疆淇℃伅 - */ - static getFloor = (id) => { - let floor = 1 - let finish = false - - let reCheck = (components, f) => { - components.forEach(item => { - if (finish) return - if (item.type === 'tabs') { - if (item.uuid === id) { - floor = f - finish = true - } else { - item.subtabs.forEach(tab => { - reCheck(tab.components, f + 1) - }) - } - } - }) - } - - reCheck(window.GLOB.customMenu.components, 1) - - return floor - } - - /** * @description 缁勪欢鍚嶅姞鍚庣紑 */ static getSignName () { @@ -715,9 +649,13 @@ * @description 閲嶇疆缁勪欢閰嶇疆 * @return {String} item 缁勪欢淇℃伅 */ - static resetComponentConfig = (item, copyBtns, uuids = {}) => { + static resetComponentConfig = (item, uuids = {}) => { if (item.type === 'navbar') { return item + } + + if (item.subtype === 'tablecard') { // 鍏煎 + item.type = 'card' } let _uuid = this.getuuid() @@ -744,7 +682,7 @@ cell.uuid = this.getuuid() return cell }) - } else if (['card', 'carousel', 'timeline'].includes(item.type) || (item.type === 'table' && item.subtype === 'tablecard')) { + } else if (['card', 'carousel', 'timeline'].includes(item.type)) { item.subcards.forEach(card => { card.uuid = this.getuuid() if (card.elements) { @@ -752,14 +690,7 @@ card.elements = card.elements.filter(b => b.OpenType !== 'popview' && b.OpenType !== 'funcbutton') } card.elements = card.elements.map(cell => { - let _uuid = this.getuuid() - if (cell.OpenType === 'popview' && copyBtns) { - let _cell = JSON.parse(JSON.stringify(cell)) - _cell.$originUuid = _cell.uuid - _cell.uuid = _uuid - copyBtns.set(_uuid, _cell) - } - cell.uuid = _uuid + cell.uuid = this.getuuid() return cell }) } @@ -768,14 +699,7 @@ card.elements = card.elements.filter(b => b.OpenType !== 'popview' && b.OpenType !== 'funcbutton') } card.backElements = card.backElements.map(cell => { - let _uuid = this.getuuid() - if (cell.OpenType === 'popview' && copyBtns) { - let _cell = JSON.parse(JSON.stringify(cell)) - _cell.$originUuid = _cell.uuid - _cell.uuid = _uuid - copyBtns.set(_uuid, _cell) - } - cell.uuid = _uuid + cell.uuid = this.getuuid() return cell }) } @@ -786,18 +710,11 @@ item.elements = item.elements.filter(b => b.OpenType !== 'popview' && b.OpenType !== 'funcbutton') } item.elements = item.elements.map(cell => { - let _uuid = this.getuuid() - if (cell.OpenType === 'popview' && copyBtns) { - let _cell = JSON.parse(JSON.stringify(cell)) - _cell.$originUuid = _cell.uuid - _cell.uuid = _uuid - copyBtns.set(_uuid, _cell) - } - cell.uuid = _uuid + cell.uuid = this.getuuid() return cell }) } - } else if (item.type === 'table' && (item.subtype === 'normaltable' || item.subtype === 'editable') && item.cols) { + } else if (item.type === 'table' && item.cols) { let loopCol = (col) => { col.subcols = col.subcols.map(c => { c.uuid = this.getuuid() @@ -835,14 +752,7 @@ col.elements = col.elements.filter(c => c.OpenType !== 'popview' && c.OpenType !== 'funcbutton') } col.elements = col.elements.map(cell => { - let _uuid = this.getuuid() - if (cell.OpenType === 'popview' && copyBtns) { - let _cell = JSON.parse(JSON.stringify(cell)) - _cell.$originUuid = _cell.uuid - _cell.uuid = _uuid - copyBtns.set(_uuid, _cell) - } - cell.uuid = _uuid + cell.uuid = this.getuuid() return cell }) } @@ -870,9 +780,7 @@ }) } - if (item.btnlog) { - item.btnlog = null - } + delete item.btnlog let oriUids = {} if (item.action) { @@ -883,13 +791,6 @@ let _uuid = this.getuuid() oriUids[cell.uuid] = _uuid - - if (cell.OpenType === 'popview' && copyBtns) { - let _cell = JSON.parse(JSON.stringify(cell)) - _cell.$originUuid = _cell.uuid - _cell.uuid = _uuid - copyBtns.set(_uuid, _cell) - } cell.uuid = _uuid @@ -939,6 +840,9 @@ if (em) { item.setting.supModule = '' } + if (item.wrap && item.wrap.supModule) { + item.wrap.supModule = item.setting.supModule + } } if (item.wrap && item.wrap.doubleClick) { @@ -976,13 +880,13 @@ /** * @description 鑾峰彇琛ㄥ悕 */ -export function getTables (config) { +export function getTables (config, pops) { let tables = [] let cuts = [] let cutreg = /(from|update|insert\s+into)\s+(@db@)?[a-z_]+/ig let trimreg = /(from|update|insert\s+into)\s+(@db@)?/ig - if (!config.wrap || !config.wrap.datatype || config.wrap.datatype === 'dynamic') { + if (config.setting && (!config.wrap || !config.wrap.datatype || config.wrap.datatype === 'dynamic')) { if (config.setting.interType === 'system') { if (config.setting.execute !== 'false') { let tbs = config.setting.dataresource.match(cutreg) @@ -993,7 +897,7 @@ let tbs = script.sql.match(cutreg) tbs && cuts.push(...tbs) }) - } else { + } else if (config.setting.tableName) { let tb = config.setting.tableName.replace(/@db@|\s+/ig, '') if (/[a-z_]+/ig.test(tb)) { tables.push(tb) @@ -1001,48 +905,95 @@ } } + config.search && config.search.forEach(cell => { + if (cell.resourceType === '1' && cell.dataSource) { + let tbs = cell.dataSource.match(cutreg) + tbs && cuts.push(...tbs) + } + }) + let action = [] if (config.type === 'form') { config.subcards.forEach(item => { action.push(item.subButton) + item.fields && item.fields.forEach(cell => { + if (cell.resourceType === '1' && cell.dataSource) { + let tbs = cell.dataSource.match(cutreg) + tbs && cuts.push(...tbs) + } + }) }) } else if (config.subcards) { config.subcards.forEach(item => { item.elements.forEach(cell => { - if (cell.eleType === 'button' && ['form', 'pop', 'prompt', 'exec', 'excelIn', 'excelOut'].includes(cell.OpenType)) { + if (cell.eleType !== 'button') return + if (['form', 'pop', 'prompt', 'exec', 'excelIn', 'excelOut'].includes(cell.OpenType)) { action.push(cell) + } else if (cell.OpenType === 'popview') { + if (pops) { + pops.push({...cell, parentId: config.uuid}) + } else if (cell.config && cell.config.$tables) { + tables.push(...cell.config.$tables) + } } }) if (item.backElements && item.setting.type === 'multi') { item.backElements.forEach(cell => { - if (cell.eleType === 'button' && ['form', 'pop', 'prompt', 'exec', 'excelIn', 'excelOut'].includes(cell.OpenType)) { + if (cell.eleType !== 'button') return + if (['form', 'pop', 'prompt', 'exec', 'excelIn', 'excelOut'].includes(cell.OpenType)) { action.push(cell) + } else if (cell.OpenType === 'popview') { + if (pops) { + pops.push({...cell, parentId: config.uuid}) + } else if (cell.config && cell.config.$tables) { + tables.push(...cell.config.$tables) + } } }) } }) } + config.cols && config.cols.forEach(col => { if (col.type === 'action') { col.elements.forEach(cell => { if (['form', 'pop', 'prompt', 'exec', 'excelIn', 'excelOut'].includes(cell.OpenType)) { action.push(cell) + } else if (cell.OpenType === 'popview') { + if (pops) { + pops.push({...cell, parentId: config.uuid}) + } else if (cell.config && cell.config.$tables) { + tables.push(...cell.config.$tables) + } } }) } }) config.elements && config.elements.forEach(cell => { - if (cell.eleType === 'button' && ['form', 'pop', 'prompt', 'exec', 'excelIn', 'excelOut'].includes(cell.OpenType)) { + if (cell.eleType !== 'button') return + if (['form', 'pop', 'prompt', 'exec', 'excelIn', 'excelOut'].includes(cell.OpenType)) { action.push(cell) + } else if (cell.OpenType === 'popview') { + if (pops) { + pops.push({...cell, parentId: config.uuid}) + } else if (cell.config && cell.config.$tables) { + tables.push(...cell.config.$tables) + } } }) config.action && config.action.forEach(cell => { if (['pop', 'prompt', 'exec', 'excelIn', 'excelOut'].includes(cell.OpenType)) { action.push(cell) + } else if (cell.OpenType === 'popview') { + if (pops) { + pops.push({...cell, parentId: config.uuid}) + } else if (cell.config && cell.config.$tables) { + tables.push(...cell.config.$tables) + } } }) @@ -1080,6 +1031,14 @@ tbs && cuts.push(...tbs) } } else { + if (btn.OpenType === 'pop' && btn.modal && btn.modal.fields) { + btn.modal.fields.forEach(cell => { + if (cell.resourceType === '1' && cell.dataSource) { + let tbs = cell.dataSource.match(cutreg) + tbs && cuts.push(...tbs) + } + }) + } if (btn.intertype === 'inner') return if (btn.intertype === 'outer' || btn.intertype === 'custom') { if (btn.procMode === 'system' && btn.verify) { -- Gitblit v1.8.0