From 9a1416e0b5cdb40f49b3c2061b04b35551d77e99 Mon Sep 17 00:00:00 2001 From: king <18310653075@163.com> Date: 星期二, 19 九月 2023 18:14:21 +0800 Subject: [PATCH] 2023-09-19 --- src/utils/utils-custom.js | 1585 ++++++++++++++++++++++++++++++++++++++++++++++++++++------ 1 files changed, 1,405 insertions(+), 180 deletions(-) diff --git a/src/utils/utils-custom.js b/src/utils/utils-custom.js index 058d369..9ad1446 100644 --- a/src/utils/utils-custom.js +++ b/src/utils/utils-custom.js @@ -1,25 +1,109 @@ +import md5 from 'md5' + export default class MenuUtils { /** * @description 鑾峰彇涓嬬骇妯″潡 * @return {String} selfId 褰撳墠缁勪欢id */ - static getSubModules (components, selfId) { + static getSubModules (components, selfId, supId) { + let modules = [] + components.forEach(item => { + if (item.uuid === selfId || item.type === 'navbar') { + return + } else if (item.format) { // 鏁版嵁鏍煎紡锛屽瓨鍦ㄦ暟鎹簮 + modules.push({ + value: item.uuid, + label: item.name, + disabled: supId === item.uuid + }) + } else if (item.type === 'tabs') { + if (item.subtype === 'tabletabs') { + item.subtabs.forEach(tab => { + if (tab.components[0].uuid === selfId) return + + 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) + } + } + } else if (item.type === 'group') { + let _item = { + value: item.uuid, + label: item.name, + children: item.components.map(f_tab => { + if (f_tab.uuid === selfId) { + return { + children: null + } + } else if (f_tab.format) { + return { + value: f_tab.uuid, + label: f_tab.name, + disabled: supId === f_tab.uuid + } + } + return { + children: null + } + }) + } + + _item.children = _item.children.filter(t => t.children !== null) + + if (_item.children.length > 0) { + modules.push(_item) + } + } + }) + + return modules + } + + /** + * @description 鑾峰彇涓嬬骇妯″潡 + * @return {String} selfId 褰撳墠缁勪欢id + */ + static getAnchors (components, selfId) { let modules = components.map(item => { if (item.uuid === selfId) { return { children: null } - } else if (item.format) { // 鏁版嵁鏍煎紡锛屽瓨鍦ㄦ暟鎹簮 - return { - value: item.uuid, - label: item.name - } } 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) @@ -67,6 +151,11 @@ } return _item + } else if (!['login', 'navbar', 'topbar', 'tabs', 'search', 'group', 'balcony'].includes(item.type)) { // 鏁版嵁鏍煎紡锛屽瓨鍦ㄦ暟鎹簮 + return { + value: item.uuid, + label: item.name + } } else { return { children: null @@ -86,42 +175,63 @@ * @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) { // 鏁版嵁鍙垏鎹� - return { - value: item.uuid, - label: item.name + let disabled = false + if (item.type === 'card') { + disabled = item.wrap.cardType === '' + } else if (item.type === 'table') { + disabled = item.wrap.tableType === '' } - } else if (item.type === 'tabs') { - let _item = { + modules.push({ 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) - } + disabled: disabled + }) + } else if (item.type === 'form') { // 鏁版嵁鏍煎紡锛屽瓨鍦ㄦ暟鎹簮 + modules.push({ + value: item.uuid, + label: item.name + }) + } else if (item.type === 'tabs') { + 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, @@ -132,9 +242,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 { @@ -145,24 +262,48 @@ _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 => { + if (item.uuid === selfId) return + 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 } /** @@ -240,73 +381,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.type === 'card' || item.type === 'carousel' || (card.type === 'table' && card.subtype === 'tablecard')) { - card.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 (card.type === 'table' && card.subtype === 'normaltable') { - card.cols && card.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 (card.type === 'balcony') { - card.elements && card.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 */ @@ -322,111 +396,225 @@ } /** - * @description 閲嶇疆鑿滃崟閰嶇疆 + * @description 閲嶇疆鑿滃崟閰嶇疆锛岄〉闈㈡暣浣撳鍒� * @return {String} components 閰嶇疆淇℃伅 */ - static resetConfig = (components) => { + static resetConfig = (components, commonId, clear = false) => { return components.map(item => { if (item.type === 'navbar') { return item } - item.uuid = this.getuuid() + if (item.subtype === 'tablecard') { // 鍏煎 + item.type = 'card' + } + + item.uuid = md5(commonId + item.uuid) if (item.type === 'tabs') { item.subtabs.forEach(tab => { - tab.uuid = this.getuuid() - 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) + tab.uuid = md5(commonId + tab.uuid) + + tab.components = this.resetConfig(tab.components, commonId, clear) }) } else if (item.type === 'group') { - item.components = item.components.map(cell => { - cell.parentId = item.uuid - return cell - }) - item.components = this.resetConfig(item.components) + item.components = this.resetConfig(item.components, commonId, clear) } else if (item.type === 'menubar') { item.subMenus = item.subMenus.map(cell => { cell.uuid = this.getuuid() + if (clear && cell.setting.type === 'linkmenu') { + cell.setting.type = 'menu' + cell.setting.linkMenuId = '' + } return cell }) - } else if (item.type === 'card' || item.type === 'carousel' || (item.type === 'table' && item.subtype === 'tablecard')) { + } else if (['card', 'carousel', 'timeline'].includes(item.type)) { + if (item.wrap.datatype === 'public' && item.wrap.publicId) { + item.wrap.publicId = md5(commonId + item.wrap.publicId) + } + if (item.wrap.autoExec) { + item.wrap.autoExec = md5(commonId + item.wrap.autoExec) + } + + if (item.supNodes && item.supNodes.length > 0) { + item.supNodes = item.supNodes.map(cell => { + cell.nodes = cell.nodes.map(n => md5(commonId + n)) + cell.componentId = cell.nodes[cell.nodes.length - 1] + + return cell + }) + } + item.subcards.forEach(card => { card.uuid = this.getuuid() + + if (clear) { + if (card.setting.click === 'menu') { + card.setting.click = '' + card.setting.menu = '' + } else if (card.setting.click === 'menus') { + card.setting.click = '' + card.setting.menuType = '' + delete card.menus + } + } + + if (card.setting.click === 'button' && card.setting.linkbtn) { + card.setting.linkbtn = md5(commonId + card.setting.linkbtn) + } + if (card.elements) { card.elements = card.elements.map(cell => { - cell.uuid = this.getuuid() + if (cell.eleType === 'button') { + cell.uuid = md5(commonId + cell.uuid) + if (clear && cell.pageTemplate === 'linkpage' && cell.linkmenu) { + cell.pageTemplate = '' + cell.linkmenu = '' + } + this.resetBtn(cell, commonId) + } else { + cell.uuid = this.getuuid() + } + return cell }) } if (card.backElements) { card.backElements = card.backElements.map(cell => { - cell.uuid = this.getuuid() + if (cell.eleType === 'button') { + cell.uuid = md5(commonId + cell.uuid) + if (clear && cell.pageTemplate === 'linkpage' && cell.linkmenu) { + cell.pageTemplate = '' + cell.linkmenu = '' + } + this.resetBtn(cell, commonId) + } else { + cell.uuid = this.getuuid() + } + return cell }) } }) - } else if (item.type === 'table' && item.subtype === 'normaltable' && item.cols) { - let loopCol = (col) => { - col.subcols = col.subcols.map(c => { - c.uuid = this.getuuid() - - if (c.type === 'colspan' && c.subcols) { - c = loopCol(c) - } else if (c.type === 'custom' && c.elements) { - c.elements = c.elements.map(cell => { - cell.uuid = this.getuuid() - return cell - }) - } else if (c.type === 'action' && c.elements) { - c.elements = c.elements.map(cell => { - cell.uuid = this.getuuid() - return cell - }) - } - return c - }) - - return col + } else if (item.type === 'balcony') { + if (item.wrap.datatype === 'public' && item.wrap.publicId) { + item.wrap.publicId = md5(commonId + item.wrap.publicId) } - - item.cols = item.cols.map(col => { - col.uuid = this.getuuid() - - if (col.type === 'colspan' && col.subcols) { - col = loopCol(col) - } else if (col.type === 'custom' && col.elements) { - col.elements = col.elements.map(cell => { + if (item.wrap.linkbtn) { + item.wrap.linkbtn = md5(commonId + item.wrap.linkbtn) + } + if (item.elements) { + item.elements = item.elements.map(cell => { + if (cell.eleType === 'button') { + cell.uuid = md5(commonId + cell.uuid) + if (clear && cell.pageTemplate === 'linkpage' && cell.linkmenu) { + cell.pageTemplate = '' + cell.linkmenu = '' + } + this.resetBtn(cell, commonId) + } else { cell.uuid = this.getuuid() - return cell - }) - } else if (col.type === 'action' && col.elements) { - col.elements = col.elements.map(cell => { - cell.uuid = this.getuuid() - return cell - }) + } + + return cell + }) + } + } else if (item.type === 'table' && item.cols) { + let loopCol = (cols) => { + return cols.map(col => { + if (col.type === 'action') { + col.type = 'custom' + } + + col.uuid = md5(commonId + col.uuid) + + if (col.type === 'colspan' && col.subcols) { + col.subcols = loopCol(col.subcols) + } else if (col.type === 'custom' && col.elements) { + col.elements = col.elements.map(cell => { + cell.uuid = md5(commonId + cell.uuid) + + if (cell.eleType === 'button') { + if (clear && cell.pageTemplate === 'linkpage' && cell.linkmenu) { + cell.pageTemplate = '' + cell.linkmenu = '' + } + + this.resetBtn(cell, commonId) + } + + return cell + }) + } else if (col.editable === 'true' && col.enter && col.enter !== '$next' && col.enter !== '$sub') { + if (/\$next_/.test(col.enter)) { + col.enter = '$next_' + md5(commonId + col.enter.split('_')[1]) + } else { + col.enter = md5(commonId + col.enter) + } + } + + return col + }) + } + + item.cols = loopCol(item.cols) + } else if (item.type === 'form') { + item.subcards = item.subcards.map(cell => { + cell.uuid = this.getuuid() + + cell.fields = cell.fields.map(m => { + m.uuid = this.getuuid() + + return m + }) + + if (cell.subButton) { + this.resetBtn(cell.subButton, commonId) } - return col + + return cell }) } if (item.btnlog) { - item.btnlog = [] + item.btnlog = null } if (item.action) { item.action = item.action.map(cell => { - cell.uuid = this.getuuid() + cell.uuid = md5(commonId + cell.uuid) + + if (clear && cell.pageTemplate === 'linkpage' && cell.linkmenu) { + cell.pageTemplate = '' + cell.linkmenu = '' + } + + this.resetBtn(cell, commonId) + return cell }) } - if (item.search) { + if (item.type === 'topbar') { + if (item.search && item.search.fields) { + item.search.fields = item.search.fields.map(cell => { + cell.uuid = this.getuuid() + return cell + }) + } + if (item.search && item.search.groups) { + item.search.groups = item.search.groups.map(cell => { + cell.uuid = this.getuuid() + cell.fields = cell.fields.map(m => { + m.uuid = this.getuuid() + return m + }) + return cell + }) + } + if (clear && item.wrap.menus) { + item.wrap.menus = [] + } + } else if (item.search) { item.search = item.search.map(cell => { cell.uuid = this.getuuid() return cell @@ -438,10 +626,481 @@ return cell }) } + + if (item.setting && item.setting.supModule && item.setting.supModule[0] !== 'empty') { + item.setting.supModule = item.setting.supModule.map(c => { + return md5(commonId + c) + }) + if (item.wrap && item.wrap.supModule) { + item.wrap.supModule = item.setting.supModule + } + } + + if (item.wrap && item.wrap.doubleClick) { + item.wrap.doubleClick = md5(commonId + item.wrap.doubleClick) + } return item }) } + + /** + * @description 鎸夐挳閲嶇疆 + */ + static resetBtn (btn, commonId) { + if (btn.OpenType === 'pop' || (btn.OpenType === 'funcbutton' && btn.execMode === 'pop')) { + if (btn.modal && btn.modal.fields.length > 0) { + btn.modal.fields = btn.modal.fields.map(m => { + m.uuid = this.getuuid() + return m + }) + } + } + if (btn.switchTab && btn.switchTab.length > 0) { + btn.switchTab = btn.switchTab.map(m => md5(commonId + m)) + } + if (btn.anchors && btn.anchors.length > 0) { + btn.anchors = btn.anchors.map(m => md5(commonId + m)) + } + if (btn.syncComponent && btn.syncComponent[0] === 'multiComponent' && btn.syncComponents) { + btn.syncComponents = btn.syncComponents.map(m => { + m.syncComId = m.syncComId.map(n => md5(commonId + n)) + return m + }) + } else if (btn.syncComponent && btn.syncComponent.length > 0) { + btn.syncComponent = btn.syncComponent.map(m => md5(commonId + m)) + } + } + + /** + * @description 缁勪欢鍚嶅姞鍚庣紑 + */ + static getSignName () { + let name = [] + let _options = 'abcdefghigklmnopqrstuvwxyz' + for (let i = 0; i < 3; i++) { + name.push(_options.substr(Math.floor(Math.random() * 26), 1)) + } + return (Math.floor(Math.random()*10) + name.join('')).toUpperCase() + } + + /** + * @description 閲嶇疆缁勪欢閰嶇疆 + * @return {String} item 缁勪欢淇℃伅 + */ + static resetComponentConfig = (item, appType) => { + if (item.type === 'navbar') { + return item + } + + if (item.subtype === 'tablecard') { // 鍏煎 + item.type = 'card' + } + + item.uuid = this.getuuid() + let commonId = this.getuuid() + + // 閲嶇疆缁勪欢鍚嶇О + let sign = this.getSignName() + if (item.plot) { // 鍥捐〃 + item.plot.name = (item.plot.name || '') + sign + item.name = item.plot.name + } else if (item.wrap) { // 閫氱敤 + item.wrap.name = (item.wrap.name || '') + sign + item.name = item.wrap.name + } else if (item.setting) { // 鍒嗙粍銆佹爣绛鹃〉绛� + item.setting.name = (item.setting.name || '') + sign + item.name = item.setting.name + } + + if (item.type === 'menubar') { + item.subMenus = item.subMenus.map(cell => { + cell.uuid = this.getuuid() + return cell + }) + } else if (['card', 'carousel', 'timeline'].includes(item.type)) { + if (item.wrap.autoExec) { + item.wrap.autoExec = md5(commonId + item.wrap.autoExec) + } + + if (appType !== 'mob') { + if (item.wrap.pagestyle === 'slide') { + item.wrap.pagestyle = 'page' + } + } else { + if (item.wrap.pagestyle === 'switch') { + item.wrap.pagestyle = 'page' + } + } + + item.subcards.forEach(card => { + card.uuid = this.getuuid() + + if (card.setting.click === 'button' && card.setting.linkbtn) { + card.setting.linkbtn = md5(commonId + card.setting.linkbtn) + } + + if (card.elements) { + if (sessionStorage.getItem('editMenuType') === 'popview') { + card.elements = card.elements.filter(b => b.OpenType !== 'popview' && b.OpenType !== 'funcbutton') + } + card.elements = card.elements.map(cell => { + if (cell.eleType === 'button') { + cell.uuid = md5(commonId + cell.uuid) + + if (cell.OpenType === 'pop' || (cell.OpenType === 'funcbutton' && cell.execMode === 'pop')) { + if (cell.modal && cell.modal.fields.length > 0) { + cell.modal.fields = cell.modal.fields.map(m => { + m.uuid = this.getuuid() + return m + }) + } + } + } else { + cell.uuid = this.getuuid() + } + return cell + }) + } + if (card.backElements) { + if (sessionStorage.getItem('editMenuType') === 'popview') { + card.elements = card.elements.filter(b => b.OpenType !== 'popview' && b.OpenType !== 'funcbutton') + } + card.backElements = card.backElements.map(cell => { + if (cell.eleType === 'button') { + cell.uuid = md5(commonId + cell.uuid) + if (cell.OpenType === 'pop' || (cell.OpenType === 'funcbutton' && cell.execMode === 'pop')) { + if (cell.modal && cell.modal.fields.length > 0) { + cell.modal.fields = cell.modal.fields.map(m => { + m.uuid = this.getuuid() + return m + }) + } + } + } else { + cell.uuid = this.getuuid() + } + return cell + }) + } + }) + } else if (item.type === 'balcony') { + if (item.elements) { + if (sessionStorage.getItem('editMenuType') === 'popview') { + item.elements = item.elements.filter(b => b.OpenType !== 'popview' && b.OpenType !== 'funcbutton') + } + if (item.wrap.linkbtn) { + item.wrap.linkbtn = md5(commonId + item.wrap.linkbtn) + } + item.elements = item.elements.map(cell => { + if (cell.eleType === 'button') { + cell.uuid = md5(commonId + cell.uuid) + if (cell.OpenType === 'pop' || (cell.OpenType === 'funcbutton' && cell.execMode === 'pop')) { + if (cell.modal && cell.modal.fields.length > 0) { + cell.modal.fields = cell.modal.fields.map(m => { + m.uuid = this.getuuid() + return m + }) + } + } + } else { + cell.uuid = this.getuuid() + } + return cell + }) + } + } else if (item.type === 'table' && item.cols) { + let loopCol = (cols) => { + return cols.map(col => { + if (col.type === 'action') { + col.type = 'custom' + } + + col.uuid = md5(commonId + col.uuid) + + if (col.type === 'colspan' && col.subcols) { + col.subcols = loopCol(col.subcols) + } else if (col.type === 'custom' && col.elements) { + if (sessionStorage.getItem('editMenuType') === 'popview') { + col.elements = col.elements.filter(c => c.eleType !== 'button' || (c.OpenType !== 'popview' && c.OpenType !== 'funcbutton')) + } + col.elements = col.elements.map(cell => { + cell.uuid = md5(commonId + cell.uuid) + if (cell.eleType === 'button') { + if (cell.OpenType === 'pop' || (cell.OpenType === 'funcbutton' && cell.execMode === 'pop')) { + if (cell.modal && cell.modal.fields.length > 0) { + cell.modal.fields = cell.modal.fields.map(m => { + m.uuid = this.getuuid() + return m + }) + } + } + } + return cell + }) + } else if (col.editable === 'true' && col.enter && col.enter !== '$next' && col.enter !== '$sub') { // 鍙紪杈戣〃 + if (/\$next_/.test(col.enter)) { + col.enter = '$next_' + md5(commonId + col.enter.split('_')[1]) + } else { + col.enter = md5(commonId + col.enter) + } + } + + return col + }) + } + + item.cols = loopCol(item.cols) + } else if (item.type === 'form') { + item.subcards = item.subcards.map(cell => { + cell.uuid = this.getuuid() + + cell.fields = cell.fields.map(m => { + m.uuid = this.getuuid() + + return m + }) + return cell + }) + } + + delete item.btnlog + + if (item.action) { + if (sessionStorage.getItem('editMenuType') === 'popview') { + item.action = item.action.filter(c => c.OpenType !== 'popview' && c.OpenType !== 'funcbutton') + } + item.action = item.action.map(cell => { + cell.uuid = md5(commonId + cell.uuid) + if (cell.OpenType === 'pop' || (cell.OpenType === 'funcbutton' && cell.execMode === 'pop')) { + if (cell.modal && cell.modal.fields.length > 0) { + cell.modal.fields = cell.modal.fields.map(m => { + m.uuid = this.getuuid() + return m + }) + } + } + + return cell + }) + } + if (item.type === 'topbar') { + item.wrap.name = '' + item.name = '' + if (item.search && item.search.fields) { + item.search.fields = item.search.fields.map(cell => { + cell.uuid = this.getuuid() + return cell + }) + } + if (item.search && item.search.groups) { + item.search.groups = item.search.groups.map(cell => { + cell.uuid = this.getuuid() + cell.fields = cell.fields.map(m => { + m.uuid = this.getuuid() + return m + }) + return cell + }) + } + } else if (item.search) { + item.search = item.search.map(cell => { + cell.uuid = this.getuuid() + return cell + }) + } + if (item.columns) { + item.columns = item.columns.map(cell => { + cell.uuid = this.getuuid() + return cell + }) + } + + if (item.setting && item.setting.supModule && item.setting.supModule[0] !== 'empty') { + item.setting.supModule = '' + } + if (item.wrap && item.wrap.supModule) { + item.wrap.supModule = '' + } + + if (item.wrap && item.wrap.doubleClick) { + item.wrap.doubleClick = md5(commonId + item.wrap.doubleClick) + } + + return item + } +} + +/** + * @description 鏍煎紡鍖栨悳绱㈡潯浠� + */ +export function formatSearch (searches) { + if (!searches) return [] + + let newsearches = [] + searches.forEach(item => { + if (!item.field) return + + if (item.type === 'group') { + newsearches.push({ + key: item.field, + match: '', + type: item.type, + value: 'customized', + forbid: true + }, { + key: item.datefield, + match: 'between', + type: 'daterange', + value: '1949-10-01 00:00:00.000,1949-10-02 00:00:00.000', + forbid: item.query === 'false' + }) + } else { + let value = item.initval + let type = item.type + + if (item.type === 'date') { + value = '1949-10-01 00:00:00.000' + } else if (item.type === 'datemonth') { + value = '1949-10-01 00:00:00.000,1949-10-02 00:00:00.000' + } else if (item.type === 'dateweek') { + value = '1949-10-01 00:00:00.000,1949-10-02 00:00:00.000' + } else if (item.type === 'daterange') { + value = '1949-10-01 00:00:00.000,1949-10-02 00:00:00.000' + } else if (item.type === 'range') { + value = `${item.minValue},${item.maxValue}` + } else if (item.type === 'multiselect' || (item.type === 'checkcard' && item.multiple === 'true')) { + type = 'multi' + value = '0' + } else { + value = '0' + } + newsearches.push({ + key: item.field, + match: item.match, + type: type, + value: value, + precision: item.precision || 'day', + forbid: item.query === 'false' + }) + } + }) + + return newsearches +} + +/** + * @description 鎷兼帴where鏉′欢 + */ +export function joinMainSearchkey (searches) { + if (!searches || searches.length === 0) return '' + + let searchText = [] + searches.forEach(item => { + if (item.forbid) return + + if (item.type === 'text' || item.type === 'select') { // 缁煎悎鎼滅储锛屾枃鏈垨涓嬫媺锛屾墍鏈夊瓧娈垫嫾鎺� + let str = item.match === 'like' || item.match === 'not like' ? '%' : '' + let fields = item.key.split(',').map(field => { + return field + ' ' + item.match + ' \'' + str + item.value + str + '\'' + }) + + searchText.push('(' + fields.join(' OR ') + ')') + } else if (item.type === 'checkcard') { + let str = item.match === 'like' || item.match === 'not like' ? '%' : '' + + searchText.push('(' + item.key + ' ' + item.match + ' \'' + str + item.value + str + '\')') + } else if (item.type === 'multi') { + searchText.push(`('${item.value}' ${item.match} '%'+${item.key}+'%')`) + } else if (item.type === 'date') { + searchText.push('(' + item.key + ' ' + item.match + ' \'' + item.value + '\')') + } else if (item.type === 'datemonth' || item.type === 'dateweek' || item.type === 'range') { + let val = item.value.split(',') + searchText.push('(' + item.key + ' >= \'' + val[0] + '\' AND ' + item.key + ' < \'' + val[1] + '\')') + } else if (item.type === 'daterange') { + let val = item.value.split(',') + + let _skey = item.key + let _ekey = item.key + + if (/,/.test(item.key)) { + _skey = item.key.split(',')[0] + _ekey = item.key.split(',')[1] + } + + searchText.push('(' + _skey + ' >= \'' + val[0] + '\' AND ' + _ekey + ' < \'' + val[1] + '\')') + } else { + searchText.push('(' + item.key + ' ' + item.match + ' \'' + item.value + '\')') + } + }) + + return searchText.join(' AND ') +} + +/** + * @description 鑾峰彇鎼滅储姝e垯鏇挎崲 + */ +export function getSearchRegs (searches) { + if (!searches) return [] + + let options = [] + let fieldmap = new Map() + searches.forEach(item => { + if (item.type === 'date') { + if (fieldmap.has(item.key)) { + options.push({ + reg: new RegExp('@' + item.key + '1@', 'ig'), + value: `'${item.value}'` + }) + } else { + fieldmap.set(item.key, true) + options.push({ + reg: new RegExp('@' + item.key + '@', 'ig'), + value: `'${item.value}'` + }) + } + } else if (['dateweek', 'datemonth', 'range'].includes(item.type)) { + let val = item.value.split(',') + options.push({ + reg: new RegExp('@' + item.key + '@', 'ig'), + value: `'${val[0]}'` + }, { + reg: new RegExp('@' + item.key + '1@', 'ig'), + value: `'${val[1]}'` + }) + } else if (item.type === 'daterange') { + let val = item.value.split(',') + let _skey = item.key + let _ekey = item.key + '1' + + if (/,/.test(item.key)) { + _skey = item.key.split(',')[0] + _ekey = item.key.split(',')[1] + } + + options.push({ + reg: new RegExp('@' + _skey + '@', 'ig'), + value: `'${val[0]}'` + }, { + reg: new RegExp('@' + _ekey + '@', 'ig'), + value: `'${val[1]}'` + }) + } else if (item.type === 'text' || item.type === 'select') { + item.key.split(',').forEach(field => { + options.push({ + reg: new RegExp('@' + field + '@', 'ig'), + value: `'${item.value}'` + }) + }) + } else { + options.push({ + reg: new RegExp('@' + item.key + '@', 'ig'), + value: `'${item.value}'` + }) + } + }) + + return options } /** @@ -450,9 +1109,11 @@ */ export function resetStyle (style) { if (!style) return {} - if (sessionStorage.getItem('appType') === 'mob') { - let _style = JSON.stringify(style) + let _style = JSON.stringify(style) + _style = _style.replace(/@mywebsite@\//ig, window.GLOB.baseurl) + + if (sessionStorage.getItem('appType') === 'mob') { // scaleview _style = _style.replace(/\d+vw/ig, (word) => { return parseFloat(word) * (window.GLOB.winWidth || 420) / 100 + 'px' @@ -461,8 +1122,572 @@ return parseFloat(word) * (window.GLOB.winHeight || 738) / 100 + 'px' // return parseFloat(word) * 615 / 100 + 'px' }) - - return JSON.parse(_style) } - return JSON.parse(JSON.stringify(style)) + + return JSON.parse(_style) +} + +/** + * @description 鑾峰彇鍥捐〃楂樺害 + */ +export function getHeight (val) { + if (typeof(val) === 'string') { + if (val.indexOf('px') > -1) { + val = parseFloat(val) + } else if (val.indexOf('vw') > -1) { + val = parseFloat(val) + val = document.body.clientWidth * val / 100 + } else if (val.indexOf('vh') > -1) { + val = parseFloat(val) + val = document.body.clientHeight * val / 100 + } + } + + return parseInt(val || 400) - 30 +} + +/** + * @description 鑾峰彇琛ㄥ悕 + */ +export function getTables (config, pops) { + let tables = [] + let cuts = [] + let cutreg = /(from|update|insert\s+into)\s+(@db@)?[a-z0-9_]+/ig + let trimreg = /(from|update|insert\s+into)\s+(@db@)?/ig + + if (config.setting && (!config.wrap || !config.wrap.datatype || config.wrap.datatype === 'dynamic')) { + if (config.setting.interType === 'system') { + if (config.setting.execute !== 'false' && config.setting.dataresource) { + let tbs = config.setting.dataresource.match(cutreg) + tbs && cuts.push(...tbs) + } + config.scripts && config.scripts.forEach(script => { + if (script.status === 'false') return + let tbs = script.sql.match(cutreg) + tbs && cuts.push(...tbs) + }) + } else if (config.setting.tableName) { + let tb = config.setting.tableName.replace(/@db@|\s+/ig, '') + if (/[a-z_]+/ig.test(tb)) { + tables.push(tb) + } + } + } + + 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') return + if (['form', 'pop', 'prompt', 'exec', 'excelIn', 'excelOut'].includes(cell.OpenType)) { + action.push(cell) + } else if (cell.OpenType === 'funcbutton' && cell.funcType === 'print' && cell.verify) { + 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') return + if (['form', 'pop', 'prompt', 'exec', 'excelIn', 'excelOut'].includes(cell.OpenType)) { + action.push(cell) + } else if (cell.OpenType === 'funcbutton' && cell.funcType === 'print' && cell.verify) { + 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 (config.cols) { + let loopCol = (cols) => { + cols.forEach(col => { + if (col.type === 'colspan') { + loopCol(col.subcols) + } else if (col.type === 'custom') { + col.elements.forEach(cell => { + if (cell.eleType !== 'button') return + if (['form', 'pop', 'prompt', 'exec', 'excelIn', 'excelOut'].includes(cell.OpenType)) { + action.push(cell) + } else if (cell.OpenType === 'funcbutton' && cell.funcType === 'print' && cell.verify) { + 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) + } + } + }) + } + }) + } + loopCol(config.cols) + } + + config.elements && config.elements.forEach(cell => { + if (cell.eleType !== 'button') return + if (['form', 'pop', 'prompt', 'exec', 'excelIn', 'excelOut'].includes(cell.OpenType)) { + action.push(cell) + } else if (cell.OpenType === 'funcbutton' && cell.funcType === 'print' && cell.verify) { + 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 === 'funcbutton' && cell.funcType === 'print' && cell.verify) { + 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) + } + } + }) + + action.forEach(btn => { + if (btn.OpenType === 'excelIn') { + if (!btn.verify) return + if (btn.intertype !== 'system' || btn.verify.default !== 'false') { + let tb = btn.sheet.replace(/@db@|\s+/ig, '') + if (/[a-z_]+/ig.test(tb)) { + tables.push(tb) + } + } + if (btn.intertype === 'system' && btn.verify.scripts) { + btn.verify.scripts.forEach(script => { + if (script.status === 'false') return + let tbs = script.sql.match(cutreg) + tbs && cuts.push(...tbs) + }) + } + } else if (btn.OpenType === 'funcbutton') { + if (btn.intertype !== 'system' || !btn.verify || !btn.verify.setting) return + if (btn.verify.dataType === 'custom') { + if (btn.verify.setting.defaultSql !== 'false') { + let tbs = btn.verify.setting.dataresource.match(cutreg) + tbs && cuts.push(...tbs) + } + btn.verify.scripts && btn.verify.scripts.forEach(script => { + if (script.status === 'false') return + let tbs = script.sql.match(cutreg) + tbs && cuts.push(...tbs) + }) + } + } else if (btn.OpenType === 'excelOut') { + if (btn.intertype !== 'system' || !btn.verify) return + if (btn.verify.dataType === 'custom') { + if (btn.verify.defaultSql !== 'false') { + let tbs = btn.verify.dataresource.match(cutreg) + tbs && cuts.push(...tbs) + } + btn.verify.scripts && btn.verify.scripts.forEach(script => { + if (script.status === 'false') return + let tbs = script.sql.match(cutreg) + tbs && cuts.push(...tbs) + }) + } + if (btn.verify.enable === 'true' && btn.verify.script) { + let tbs = btn.verify.script.match(cutreg) + 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) { + if (btn.verify.default !== 'false' && btn.sql) { + let tb = btn.sql.replace(/@db@|\s+/ig, '') + if (/[a-z_]+/ig.test(tb)) { + tables.push(tb) + } + } + btn.verify.customverifys && btn.verify.customverifys.forEach(script => { + if (script.status === 'false') return + let tbs = script.sql.match(cutreg) + tbs && cuts.push(...tbs) + }) + btn.verify.scripts && btn.verify.scripts.forEach(script => { + if (script.status === 'false') return + let tbs = script.sql.match(cutreg) + tbs && cuts.push(...tbs) + }) + } + if (btn.callbackType === 'script' && btn.verify) { + btn.verify.cbScripts && btn.verify.cbScripts.forEach(script => { + if (script.status === 'false') return + let tbs = script.sql.match(cutreg) + tbs && cuts.push(...tbs) + }) + } + } else if (btn.verify) { + if (btn.verify.default !== 'false' && btn.sql) { + let tb = btn.sql.replace(/@db@|\s+/ig, '') + if (/[a-z_]+/ig.test(tb)) { + tables.push(tb) + } + } + btn.verify.customverifys && btn.verify.customverifys.forEach(script => { + if (script.status === 'false') return + let tbs = script.sql.match(cutreg) + tbs && cuts.push(...tbs) + }) + btn.verify.scripts && btn.verify.scripts.forEach(script => { + if (script.status === 'false') return + let tbs = script.sql.match(cutreg) + tbs && cuts.push(...tbs) + }) + } + } + }) + + cuts = cuts.map(item => item.replace(trimreg, '')) + tables.push(...cuts) + tables = tables.filter(tb => tb && tb !== 'dbo' && tb.length > 1) + tables = Array.from(new Set(tables)) + + return tables +} + +/** + * @description 鑾峰彇鎺ュ彛鍙婂嚱鏁� + */ +export function getFuncsAndInters (config) { + let inters = 'false' + + let filterBtn = (cell) => { + if ((cell.intertype === 'outer' && cell.sysInterface !== 'true') || cell.intertype === 'custom') { + inters = 'true' + } + } + + let traversal = (components) => { + if (!components || inters === 'true') return + + components.forEach(item => { + if (item.type === 'tabs') { + item.subtabs.forEach(tab => { + traversal(tab.components) + }) + } else if (item.type === 'group') { + traversal(item.components) + } else { + if (item.setting && item.setting.interType === 'outer' && item.setting.sysInterface !== 'true') { + inters = 'true' + } + + if (item.action) { + item.action.forEach(cell => { + if (cell.OpenType === 'popview') { + if (cell.config) { + traversal(cell.config.components) + } + } else { + filterBtn(cell) + } + }) + } + + if (item.type === 'card' || item.type === 'carousel' || item.type === 'timeline') { + item.subcards.forEach(card => { + card.elements && card.elements.forEach(cell => { + if (cell.eleType !== 'button') return + + if (cell.OpenType === 'popview') { + if (cell.config) { + traversal(cell.config.components) + } + } else { + filterBtn(cell) + } + }) + card.backElements && card.backElements.forEach(cell => { + if (cell.eleType !== 'button') return + + if (cell.OpenType === 'popview') { + if (cell.config) { + traversal(cell.config.components) + } + } else { + filterBtn(cell) + } + }) + }) + } else if (item.type === 'balcony') { + item.elements && item.elements.forEach(cell => { + if (cell.eleType !== 'button') return + + if (cell.OpenType === 'popview') { + if (cell.config) { + traversal(cell.config.components) + } + } else { + filterBtn(cell) + } + }) + } else if (item.type === 'table') { + let loopCol = (cols) => { + cols.forEach(col => { + if (col.type === 'colspan') { + loopCol(col.subcols) + } else if (col.type === 'custom') { + col.elements.forEach(cell => { + if (cell.eleType !== 'button') return + + if (cell.OpenType === 'popview') { + if (cell.config) { + traversal(cell.config.components) + } + } else { + filterBtn(cell) + } + }) + } + }) + } + loopCol(item.cols) + } else if (item.type === 'form') { + item.subcards.forEach(group => { + filterBtn(group.subButton) + }) + } + } + }) + } + + if (config.interfaces) { + config.interfaces.forEach(item => { + if (item.setting && item.setting.interType === 'outer' && item.setting.sysInterface !== 'true') { + inters = 'true' + } + }) + } + + traversal(config.components) + + return inters +} + +/** + * @description 妫�娴嬬粍浠跺唴瀹� + */ +export function checkComponent (card) { + let errors = [] + let columns = [] + + if (card.$c_ds) { + columns = card.columns.map(c => c.field) + if (card.setting.interType === 'system' && card.setting.execute !== 'false' && !card.setting.dataresource) { + errors.push({ level: 0, detail: '鏈缃暟鎹簮锛�'}) + } else if (card.setting.interType === 'system' && card.setting.execute === 'false' && card.scripts.filter(script => script.status !== 'false').length === 0) { + errors.push({ level: 0, detail: '鏁版嵁婧愪腑鏃犲彲鐢ㄨ剼鏈紒'}) + } else if (!card.setting.primaryKey) { + errors.push({ level: 0, detail: '鏈缃富閿紒'}) + } else if (!columns.includes(card.setting.primaryKey)) { + errors.push({ level: 0, detail: '涓婚敭宸插け鏁堬紒'}) + } else if (card.subtype === 'dualdatacard') { // 鍙岄噸鍗� + if (!card.setting.subKey) { + errors.push({ level: 0, detail: '鏈缃瓙琛ㄤ富閿紒'}) + } else if (!card.setting.subBID) { + errors.push({ level: 0, detail: '鏈缃瓙琛˙ID锛�'}) + } else if (!card.setting.supModule) { + errors.push({ level: 0, detail: '鏈缃笂绾х粍浠讹紒'}) + } + } else if (card.type === 'card' && card.subtype === 'datacard') { // 鏁版嵁鍗★紝鍙兘鏈夊涓婄骇 + if (card.wrap.supType !== 'multi' && !card.setting.supModule) { + errors.push({ level: 0, detail: '鏈缃笂绾х粍浠讹紒'}) + } + } else if (card.type !== 'balcony' && !card.setting.supModule) { // 鎮诞妗嗕笂绾х粍浠堕渶鍗曠嫭璁剧疆 + errors.push({ level: 0, detail: '鏈缃笂绾х粍浠讹紒'}) + } + } else if ((card.type === 'balcony' || card.type === 'card') && card.wrap.datatype === 'public') { + columns = card.columns.map(c => c.field) + } + + let doubleClick = '' + if (card.type === 'table') { + doubleClick = card.wrap.doubleClick || '' + } + + if (card.$c_ac) { + card.action.forEach(cell => { + if (cell.hidden === 'true' || cell.origin) return + // if (cell.OpenType === 'popview') { + // if (!cell.config) { + // errors.push({ level: 0, detail: `鎸夐挳鈥�${cell.label}鈥濅腑寮圭獥鏍囩灏氭湭璁剧疆`}) + // } else if (!cell.config.enabled) { + // errors.push({ level: 0, detail: `鎸夐挳鈥�${cell.label}鈥濅腑寮圭獥鏍囩鏈惎鐢╜}) + // } + // } + if (cell.OpenType === 'pop' || (cell.OpenType === 'funcbutton' && cell.execMode === 'pop')) { + if (!cell.modal || cell.modal.fields.length === 0) { + errors.push({ level: 0, detail: `鎸夐挳鈥�${cell.label}鈥濅腑琛ㄥ崟灏氭湭娣诲姞`}) + } + } else if (cell.OpenType === 'excelIn' && (!cell.verify || !cell.verify.sheet || !cell.verify.columns || cell.verify.columns.length === 0)) { + errors.push({ level: 0, detail: `鎸夐挳鈥�${cell.label}鈥濅腑瀵煎叆鍒楁湭璁剧疆锛乣}) + } else if (cell.OpenType === 'excelOut' && (!cell.verify || !cell.verify.columns || cell.verify.columns.length === 0)) { + errors.push({ level: 0, detail: `鎸夐挳鈥�${cell.label}鈥濅腑瀵煎嚭鍒楁湭璁剧疆锛乣}) + } + if (doubleClick === cell.uuid) { + doubleClick = '' + } + }) + } + + if (card.$c_sc) { + card.subcards.forEach((item, i) => { + let linkbtn = item.setting.linkbtn || '' + item.elements.forEach(cell => { + if (cell.eleType === 'button') { + if (cell.hidden === 'true') return + if (cell.OpenType === 'pop' || (cell.OpenType === 'funcbutton' && cell.execMode === 'pop')) { + if (!cell.modal || cell.modal.fields.length === 0) { + errors.push({ level: 0, detail: `鎸夐挳鈥�${cell.label}鈥濅腑琛ㄥ崟灏氭湭娣诲姞`}) + } + } else if (cell.OpenType === 'excelIn' && (!cell.verify || !cell.verify.sheet || !cell.verify.columns || cell.verify.columns.length === 0)) { + errors.push({ level: 0, detail: `鎸夐挳鈥�${cell.label}鈥濅腑瀵煎叆鍒楁湭璁剧疆锛乣}) + } else if (cell.OpenType === 'excelOut' && (!cell.verify || !cell.verify.columns || cell.verify.columns.length === 0)) { + errors.push({ level: 0, detail: `鎸夐挳鈥�${cell.label}鈥濅腑瀵煎嚭鍒楁湭璁剧疆锛乣}) + } + if (linkbtn && linkbtn === cell.uuid) { + linkbtn = '' + } + } else if (cell.datatype === 'dynamic' && cell.field && !columns.includes(cell.field)) { + errors.push({ level: 1, detail: `鍗$墖涓姩鎬佸瓧娈碘��${cell.field}鈥濇棤鏁坄}) + } + }) + + if (card.subtype === 'dualdatacard' || (item.setting.type === 'multi' && item.backElements && sessionStorage.getItem('appType') !== 'mob')) { + item.backElements.forEach(cell => { + if (cell.eleType === 'button') { + if (cell.hidden === 'true') return + if (cell.OpenType === 'pop' || (cell.OpenType === 'funcbutton' && cell.execMode === 'pop')) { + if (!cell.modal || cell.modal.fields.length === 0) { + errors.push({ level: 0, detail: `鎸夐挳鈥�${cell.label}鈥濅腑琛ㄥ崟灏氭湭娣诲姞`}) + } + } else if (cell.OpenType === 'excelIn' && (!cell.verify || !cell.verify.sheet || !cell.verify.columns || cell.verify.columns.length === 0)) { + errors.push({ level: 0, detail: `鎸夐挳鈥�${cell.label}鈥濅腑瀵煎叆鍒楁湭璁剧疆锛乣}) + } else if (cell.OpenType === 'excelOut' && (!cell.verify || !cell.verify.columns || cell.verify.columns.length === 0)) { + errors.push({ level: 0, detail: `鎸夐挳鈥�${cell.label}鈥濅腑瀵煎嚭鍒楁湭璁剧疆锛乣}) + } + if (linkbtn && linkbtn === cell.uuid) { + linkbtn = '' + } + } else if (cell.datatype === 'dynamic' && cell.field && !columns.includes(cell.field)) { + errors.push({ level: 1, detail: `鍗$墖涓姩鎬佸瓧娈碘��${cell.field}鈥濇棤鏁坄}) + } + }) + } + + if (linkbtn) { + errors.push({ level: 1, detail: `绗�${i + 1}寮犲崱鐗囦腑缁戝畾鎸夐挳宸插垹闄}) + } + }) + + if (card.subcards.length === 0) { + errors.push({ level: 0, detail: '鍗$墖涓嶅彲涓虹┖锛�'}) + } + } + + if (card.$c_el) { + card.elements.forEach(cell => { + if (cell.eleType === 'button') { + if (cell.hidden === 'true') return + if (cell.OpenType === 'pop' || (cell.OpenType === 'funcbutton' && cell.execMode === 'pop')) { + if (!cell.modal || cell.modal.fields.length === 0) { + errors.push({ level: 0, detail: `鎸夐挳鈥�${cell.label}鈥濅腑琛ㄥ崟灏氭湭娣诲姞`}) + } + } else if (cell.OpenType === 'excelIn' && (!cell.verify || !cell.verify.sheet || !cell.verify.columns || cell.verify.columns.length === 0)) { + errors.push({ level: 0, detail: `鎸夐挳鈥�${cell.label}鈥濅腑瀵煎叆鍒楁湭璁剧疆锛乣}) + } else if (cell.OpenType === 'excelOut' && (!cell.verify || !cell.verify.columns || cell.verify.columns.length === 0)) { + errors.push({ level: 0, detail: `鎸夐挳鈥�${cell.label}鈥濅腑瀵煎嚭鍒楁湭璁剧疆锛乣}) + } + } else if (cell.datatype === 'dynamic' && cell.field && !columns.includes(cell.field)) { + errors.push({ level: 1, detail: `鍗$墖涓姩鎬佸瓧娈碘��${cell.field}鈥濇棤鏁坄}) + } + }) + } + + if (card.$c_cl) { + card.cols.forEach(col => { + if (col.type === 'custom') { + col.elements.forEach(cell => { + if (cell.eleType === 'button') { + if (cell.hidden === 'true') return + if (cell.OpenType === 'pop' || (cell.OpenType === 'funcbutton' && cell.execMode === 'pop')) { + if (!cell.modal || cell.modal.fields.length === 0) { + errors.push({ level: 0, detail: `鎸夐挳鈥�${cell.label}鈥濅腑琛ㄥ崟灏氭湭娣诲姞`}) + } + } else if (cell.OpenType === 'excelIn' && (!cell.verify || !cell.verify.sheet || !cell.verify.columns || cell.verify.columns.length === 0)) { + errors.push({ level: 0, detail: `鎸夐挳鈥�${cell.label}鈥濅腑瀵煎叆鍒楁湭璁剧疆锛乣}) + } else if (cell.OpenType === 'excelOut' && (!cell.verify || !cell.verify.columns || cell.verify.columns.length === 0)) { + errors.push({ level: 0, detail: `鎸夐挳鈥�${cell.label}鈥濅腑瀵煎嚭鍒楁湭璁剧疆锛乣}) + } + + if (doubleClick === cell.uuid) { + doubleClick = '' + } + } else { + if (cell.datatype === 'dynamic' && cell.field && !columns.includes(cell.field)) { + errors.push({ level: 1, detail: `鏄剧ず鍒椻��${col.label}鈥濅腑鍔ㄦ�佸瓧娈碘��${cell.field}鈥濇棤鏁坄}) + } + } + }) + } else if (col.field && !columns.includes(col.field)) { + errors.push({ level: 1, detail: `鏄剧ず鍒椻��${col.label}鈥濅腑瀛楁鈥�${col.field}鈥濇棤鏁坄}) + } + }) + + if (doubleClick) { + errors.push({ level: 1, detail: `缁戝畾鐨勫弻鍑绘寜閽凡鍒犻櫎`}) + } + } + + return errors } \ No newline at end of file -- Gitblit v1.8.0