From 2bccb9ec7bdefe23292a22bc153463cfa1479a49 Mon Sep 17 00:00:00 2001 From: king <18310653075@163.com> Date: 星期五, 21 六月 2024 16:25:42 +0800 Subject: [PATCH] 2024-06-21 --- src/utils/utils-custom.js | 2057 ++++++++++++++++++++++++++++++++++++++++++++++++++++----- 1 files changed, 1,852 insertions(+), 205 deletions(-) diff --git a/src/utils/utils-custom.js b/src/utils/utils-custom.js index 3d8f378..1141a14 100644 --- a/src/utils/utils-custom.js +++ b/src/utils/utils-custom.js @@ -1,11 +1,12 @@ import md5 from 'md5' +import { notification } from 'antd' export default class MenuUtils { /** * @description 鑾峰彇涓嬬骇妯″潡 * @return {String} selfId 褰撳墠缁勪欢id */ - static getSubModules (components, selfId, supId) { + static getSubModules (components, selfId, supId, interfaces) { let modules = [] components.forEach(item => { if (item.uuid === selfId || item.type === 'navbar') { @@ -16,9 +17,22 @@ label: item.name, disabled: supId === item.uuid }) + + if (item.type === 'form' && item.subtype === 'simpleform' && item.wrap.refocus && supId !== item.uuid) { + modules.push({ + value: item.uuid + '$focus-refresh', + label: item.name + '锛堝埛鏂�-鑱氱劍锛�', + }) + modules.push({ + value: item.uuid + '$focus-nofresh', + label: item.name + '锛堜笉鍒锋柊-鑱氱劍锛�', + }) + } } 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, @@ -80,6 +94,15 @@ } } }) + + if (interfaces && interfaces.length > 0) { + interfaces.forEach(item => { + modules.push({ + value: item.uuid, + label: item.name + }) + }) + } return modules } @@ -167,6 +190,42 @@ return null } return modules + } + + /** + * @description 鑾峰彇鎸囧畾缁勪欢 + * @return {String} 缁勪欢id + */ + static getComponent (Id) { + let interfaces = window.GLOB.customMenu.interfaces + let components = window.GLOB.customMenu.components + let cell = null + + let mapComponents = (components = []) => { + components.forEach(item => { + if (item.uuid === Id) { + cell = item + }else if (item.type === 'tabs') { + item.subtabs.forEach(f_tab => { + mapComponents(f_tab.components) + }) + } else if (item.type === 'group') { + mapComponents(item.components) + } + }) + } + + mapComponents(components) + + if (!cell && interfaces) { + interfaces.forEach(m => { + if (m.uuid === Id && m.status === 'true') { + cell = m + } + }) + } + + return cell } /** @@ -268,6 +327,7 @@ if (interfaces && interfaces.length > 0) { interfaces.forEach(item => { + if (item.uuid === selfId) return modules.push({ value: item.uuid, label: item.name @@ -301,80 +361,6 @@ check(modules) return has - } - - /** - * @description 鑾峰彇鍙叧鑱旀ā鍧� - */ - static getLinkModules (components) { - let modules = components.map(item => { - if ((item.type === 'card' && item.subtype === 'datacard') || (item.type === 'table' && item.subtype === 'normaltable')) { - return { - 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.getLinkModules(f_tab.components) - } - - if (!subItem.children || subItem.children.length === 0) { - return {children: null} - } - return subItem - }) - } - - _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, - label: item.name, - children: item.components.map(f_tab => { - if ((f_tab.type === 'card' && f_tab.subtype === 'datacard') || (f_tab.type === 'table' && f_tab.subtype === 'normaltable')) { - return { - value: f_tab.uuid, - label: f_tab.name - } - } - return { - children: null - } - }) - } - - _item.children = _item.children.filter(t => t.children !== null) - - if (_item.children.length === 0) { - return {children: null} - } - - return _item - } else { - return { - children: null - } - } - }) - - modules = modules.filter(mod => mod.children !== null) - - if (modules.length === 0) { - return null - } - return modules } /** @@ -428,6 +414,9 @@ } 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) { @@ -513,75 +502,65 @@ return cell }) } - } else if (item.type === 'table' && item.cols) { - let loopCol = (col) => { - col.subcols = col.subcols.map(c => { - c.uuid = md5(commonId + c.uuid) - - 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() + } else if (item.type === 'table') { + 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 - }) - } else if (c.type === 'action' && c.elements) { - c.elements = c.elements.map(cell => { - cell.uuid = md5(commonId + cell.uuid) - - if (clear && cell.pageTemplate === 'linkpage' && cell.linkmenu) { - cell.pageTemplate = '' - cell.linkmenu = '' - } - - this.resetBtn(cell, commonId) - - return cell - }) - } - return c + return cell }) - - return col } - item.cols = item.cols.map(col => { - col.uuid = md5(commonId + col.uuid) - - if (col.type === 'colspan' && col.subcols) { - col = loopCol(col) - } else if (col.type === 'custom' && col.elements) { - col.elements = col.elements.map(cell => { - cell.uuid = this.getuuid() - return cell - }) - } else if (col.type === 'action' && col.elements) { - col.elements = col.elements.map(cell => { - cell.uuid = md5(commonId + cell.uuid) - this.resetBtn(cell, commonId) - return cell - }) - } - return col - }) - - if (item.subtype === 'editable') { - item.cols = item.cols.map(col => { - if (col.editable === 'true' && col.enter) { - col.enter = md5(commonId + col.enter) - } else if (col.type === 'colspan' && col.subcols) { - col.subcols = col.subcols.map(c => { - if (c.editable === 'true' && c.enter) { - c.enter = md5(commonId + c.enter) - } - return c - }) + 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 || []) + + if (item.colsCtrls) { + item.colsCtrls = item.colsCtrls.map(col => { + col.cols = col.cols.map(f => md5(commonId + f)) return col }) } } else if (item.type === 'form') { + if (item.wrap.datatype === 'public' && item.wrap.publicId) { + item.wrap.publicId = md5(commonId + item.wrap.publicId) + } item.subcards = item.subcards.map(cell => { cell.uuid = this.getuuid() @@ -650,7 +629,7 @@ }) } - if (item.setting && item.setting.supModule && item.setting.supModule[0] !== 'empty') { + if (item.setting && item.setting.supModule && item.setting.supModule[0] !== 'empty' && item.setting.supModule[0] !== 'preview') { item.setting.supModule = item.setting.supModule.map(c => { return md5(commonId + c) }) @@ -671,14 +650,39 @@ * @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.length > 0) { - btn.syncComponent = btn.syncComponent.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 => { + if (/\$focus/.test(n)) { + return md5(commonId + n.split('$')[0]) + '$' + n.split('$')[1] + } + + return md5(commonId + n) + }) + return m + }) + } else if (btn.syncComponent && btn.syncComponent.length > 0) { + btn.syncComponent = btn.syncComponent.map(m => { + if (/\$focus/.test(m)) { + return md5(commonId + m.split('$')[0]) + '$' + m.split('$')[1] + } + + return md5(commonId + m) + }) } } @@ -698,7 +702,7 @@ * @description 閲嶇疆缁勪欢閰嶇疆 * @return {String} item 缁勪欢淇℃伅 */ - static resetComponentConfig = (item) => { + static resetComponentConfig = (item, appType, commonId) => { if (item.type === 'navbar') { return item } @@ -707,19 +711,16 @@ 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.plot.name = (item.plot.name || '') + sign item.name = item.plot.name } else if (item.wrap) { // 閫氱敤 - item.wrap.name = item.wrap.name + sign + item.wrap.name = (item.wrap.name || '') + sign item.name = item.wrap.name } else if (item.setting) { // 鍒嗙粍銆佹爣绛鹃〉绛� - item.setting.name = item.setting.name + sign + item.setting.name = (item.setting.name || '') + sign item.name = item.setting.name } @@ -729,6 +730,20 @@ 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() @@ -743,6 +758,15 @@ 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() } @@ -756,6 +780,14 @@ 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() } @@ -774,59 +806,66 @@ 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 = (col) => { - col.subcols = col.subcols.map(c => { - c.uuid = this.getuuid() + } else if (item.type === 'table') { + let loopCol = (cols) => { + return cols.map(col => { + if (col.type === 'action') { + col.type = 'custom' + } - 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() + 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 c - }) - return col + return col + }) } - item.cols = item.cols.map(col => { - col.uuid = md5(commonId + col.uuid) + item.cols = loopCol(item.cols || []) - if (col.type === 'colspan' && col.subcols) { - col = loopCol(col) - } else if (col.type === 'custom' && col.elements) { - col.elements = col.elements.map(cell => { - cell.uuid = this.getuuid() - return cell - }) - } else if (col.type === 'action' && col.elements) { - if (sessionStorage.getItem('editMenuType') === 'popview') { - col.elements = col.elements.filter(c => c.OpenType !== 'popview' && c.OpenType !== 'funcbutton') - } - col.elements = col.elements.map(cell => { - cell.uuid = md5(commonId + cell.uuid) - - return cell - }) - } - return col - }) - - if (item.subtype === 'editable') { - item.cols = item.cols.map(col => { - if (col.editable === 'true' && col.enter) { - col.enter = md5(commonId + col.enter) - } + if (item.colsCtrls) { + item.colsCtrls = item.colsCtrls.map(col => { + col.cols = col.cols.map(f => md5(commonId + f)) return col }) } @@ -851,6 +890,14 @@ } 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 }) @@ -887,19 +934,397 @@ }) } - 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 getLinkModules (components) { + let modules = components.map(item => { + if ((item.type === 'card' && item.subtype === 'datacard') || (item.type === 'table' && item.subtype === 'normaltable')) { + return { + 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: getLinkModules(f_tab.components) + } + + if (!subItem.children || subItem.children.length === 0) { + return {children: null} + } + return subItem + }) + } + + _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, + label: item.name, + children: item.components.map(f_tab => { + if ((f_tab.type === 'card' && f_tab.subtype === 'datacard') || (f_tab.type === 'table' && f_tab.subtype === 'normaltable')) { + return { + value: f_tab.uuid, + label: f_tab.name + } + } + return { + children: null + } + }) + } + + _item.children = _item.children.filter(t => t.children !== null) + + if (_item.children.length === 0) { + return {children: null} + } + + return _item + } else { + return { + children: null + } + } + }) + + modules = modules.filter(mod => mod.children !== null) + + if (modules.length === 0) { + return null + } + return modules +} + +/** + * @description 鑾峰彇鍏叡鏁版嵁婧� + */ +export function getInterfaces () { + let menu = window.GLOB.customMenu + + let interfaces = [] + if (menu.interfaces) { + menu.interfaces.forEach(item => { + if (item.status === 'true') { + interfaces.push({ + value: item.uuid, + label: item.name, + columns: JSON.parse(JSON.stringify(item.columns)) + }) + } + }) + } + + let mapComponents = (components = []) => { + components.forEach(item => { + if (item.type === 'card' && item.subtype === 'datacard') { + interfaces.push({ + value: item.uuid, + label: item.name + '锛堟暟鎹崱锛�', + columns: JSON.parse(JSON.stringify(item.columns)) + }) + } else if (item.type === 'table' && item.subtype === 'normaltable') { + interfaces.push({ + value: item.uuid, + label: item.name + '锛堝父鐢ㄨ〃锛�', + columns: JSON.parse(JSON.stringify(item.columns)) + }) + } else if (item.type === 'tabs') { + item.subtabs.forEach(f_tab => { + mapComponents(f_tab.components) + }) + } else if (item.type === 'group') { + mapComponents(item.components) + } + }) + } + + mapComponents(menu.components) + + return interfaces +} + +/** + * @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 = '0' + let type = item.type + + if (item.type === 'date') { + value = '1949-10-01 00:00:00.000' + } else if (item.type === 'datemonth') { + if (item.match === '=') { + value = '1949-10' + } else { + 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.initval || `${item.minValue || '-999999999'},${item.maxValue || '999999999'}` + } else if (item.type === 'multiselect' || (item.type === 'checkcard' && item.multiple === 'true')) { + type = 'multi' + } else { + value = item.initval || '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 === 'dateweek') { + let val = item.value.split(',') + searchText.push('(' + item.key + ' >= \'' + val[0] + '\' AND ' + item.key + ' < \'' + val[1] + '\')') + } else if (item.type === 'range') { + let val = item.value.split(',') + searchText.push('(' + item.key + ' >= ' + (val[0] || -999999999) + ' AND ' + item.key + ' <= ' + (val[1] || 999999999) + ')') + } else if (item.type === 'datemonth') { + if (item.match === '=') { + searchText.push('(' + item.key + ' = \'' + item.value + '\')') + } else { + 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.length > 0 ? 'where ' + 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 (item.type === 'dateweek') { + 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 === 'range') { + let val = item.value.split(',') + options.push({ + reg: new RegExp('@' + item.key + '@', 'ig'), + value: `${val[0] || -999999999}` + }, { + reg: new RegExp('@' + item.key + '1@', 'ig'), + value: `${val[1] || 999999999}` + }) + } else if (item.type === 'datemonth') { + if (item.match === '=') { + options.push({ + reg: new RegExp('@' + item.key + '@', 'ig'), + value: `'${item.value}'` + }) + } else { + 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 +} + +/** + * @description 鑾峰彇鎼滅储瀛楁 + */ +export function getSearchFields (searches) { + if (!searches) return '' + + let _usefulFields = [] + searches.forEach(item => { + let key = item.key || item.field + + if (!key) return + + if (item.type === 'group') { + _usefulFields.push(key) + if (item.datefield) { + _usefulFields.push(item.datefield) + _usefulFields.push(item.datefield + '1') + } + } else if (item.type === 'dateweek') { + _usefulFields.push(key) + _usefulFields.push(key + '1') + } else if (item.type === 'datemonth') { + if (item.match === '=') { + _usefulFields.push(key) + } else { + _usefulFields.push(key) + _usefulFields.push(key + '1') + } + } else if (item.type === 'range') { + _usefulFields.push(key) + _usefulFields.push(key + '1') + } else if (item.type === 'daterange') { + let _skey = key + let _ekey = key + '1' + + if (/,/.test(key)) { + _skey = key.split(',')[0] + _ekey = key.split(',')[1] + } + _usefulFields.push(_skey) + _usefulFields.push(_ekey) + } else if (item.type === 'date' && _usefulFields.includes(key)) { + _usefulFields.push(key + '1') + } else { + _usefulFields.push(key) + } + }) + + return _usefulFields.join(', ') } /** @@ -1028,23 +1453,31 @@ }) } - 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 === '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 @@ -1184,4 +1617,1218 @@ 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.primaryKey && !columns.includes(card.setting.primaryKey)) { + let key = card.setting.primaryKey.toLowerCase() + columns.forEach(f => { + if (f.toLowerCase() === key) { + card.setting.primaryKey = f + } + }) + } + + 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') || card.subtype === 'normaltable') { // 鏁版嵁鍗°�乼able锛屽彲鑳芥湁澶氫笂绾� + 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: '鏈缃笂绾х粍浠讹紒'}) + } + if (card.subtype === 'dualdatacard' && card.subColumns) { + card.subColumns.forEach(col => { + columns.push(col.field) + }) + } + } 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 || '' + } + + let checkBtn = (cell) => { + 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') { + if (!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') { + if (!cell.verify || !cell.verify.columns || cell.verify.columns.length === 0) { + errors.push({ level: 0, detail: `鎸夐挳鈥�${cell.label}鈥濅腑瀵煎嚭鍒楁湭璁剧疆锛乣}) + } else if (cell.intertype === 'system' && cell.verify.dataType !== 'custom') { + if (!card.setting || card.setting.interType !== 'system') { + errors.push({ level: 0, detail: `鎸夐挳鈥�${cell.label}鈥濋渶鑷畾涔夊鍑烘暟鎹簮锛乣}) + } else if (card.type === 'balcony' || card.subtype === 'propcard') { + errors.push({ level: 0, detail: `鎸夐挳鈥�${cell.label}鈥濋渶鑷畾涔夊鍑烘暟鎹簮锛乣}) + } else if (card.$c_ds && columns.length > 0) { + let cols = [] + cell.verify.columns.forEach(col => { + if (col.output === 'false' || col.Column === '$Index') return + if (!columns.includes(col.Column)) { + cols.push(col.Column) + } + }) + if (cols.length) { + errors.push({ level: 0, detail: `鎸夐挳鈥�${cell.label}鈥濅腑瀵煎嚭鍒楋紙${cols.join('銆�')}锛夊湪瀛楁闆嗕腑涓嶅瓨鍦紒`}) + } + } + } + } + + if (['pop', 'prompt', 'exec'].includes(cell.OpenType) && cell.verify && !cell.output) { + if (cell.verify.noteEnable === 'true') { + errors.push({ level: 0, detail: `鎸夐挳鈥�${cell.label}鈥濇湭璁剧疆杩斿洖鍊肩煭淇″彂閫佹棤鏁堬紒`}) + } else if (cell.verify.emailEnable === 'true') { + errors.push({ level: 0, detail: `鎸夐挳鈥�${cell.label}鈥濇湭璁剧疆杩斿洖鍊奸偖浠跺彂閫佹棤鏁堬紒`}) + } + } + + if (['exec', 'prompt', 'pop', 'form', 'formSubmit'].includes(cell.OpenType)) { + if (cell.OpenType === 'form' && cell.formType === 'count_line') return + + if (cell.intertype === 'system') { + if (cell.Ot === 'notRequired' && cell.verify && cell.verify.voucher && cell.verify.voucher.enabled) { + errors.push({ level: 0, detail: `鎸夐挳鈥�${cell.label}鈥濅娇鐢ㄤ簡鍒涘缓鍑瘉鍑芥暟锛岄渶瑕侀�夋嫨琛岋紒`}) + } + } else if (cell.intertype === 'custom' || cell.intertype === 'outer') { + if (cell.callbackType === 'script' && (!cell.verify || !cell.verify.cbScripts || !cell.verify.cbScripts.filter(item => item.status !== 'false').length === 0)) { + errors.push({ level: 0, detail: `鎸夐挳鈥�${cell.label}鈥濅娇鐢ㄤ簡鑷畾涔夎剼鏈洖璋冿紝鍥炶皟鑴氭湰涓嶅彲涓虹┖锛乣}) + } else if (cell.procMode === 'system' && cell.Ot === 'notRequired' && cell.verify && cell.verify.voucher && cell.verify.voucher.enabled) { + errors.push({ level: 0, detail: `鎸夐挳鈥�${cell.label}鈥濅娇鐢ㄤ簡鍒涘缓鍑瘉鍑芥暟锛岄渶瑕侀�夋嫨琛岋紒`}) + } + } + } else if (cell.OpenType === 'funcbutton' && cell.funcType === 'print') { + if (!cell.verify || !cell.verify.printMode) { + errors.push({ level: 0, detail: `鎸夐挳鈥�${cell.label}鈥濊瀹屽杽楠岃瘉淇℃伅锛乣}) + } else if (cell.intertype === 'system' && cell.verify.dataType === 'custom' && (!cell.verify.setting || cell.verify.columns.length === 0)) { + errors.push({ level: 0, detail: `鎸夐挳鈥�${cell.label}鈥濅娇鐢ㄤ簡鑷畾涔夋墦鍗版暟鎹紝璇疯缃暟鎹簮锛乣}) + } + } else if (cell.OpenType === 'innerpage' || cell.OpenType === 'outerpage') { + if (!cell.pageTemplate) { + errors.push({ level: 0, detail: `鎸夐挳鈥�${cell.label}鈥濋〉闈㈢被鍨嬭缃敊璇紒`}) + } + } + } + + 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}鈥濅腑寮圭獥鏍囩鏈惎鐢╜}) + // } + // } + checkBtn(cell) + 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 + checkBtn(cell) + 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 + checkBtn(cell) + 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 + checkBtn(cell) + } 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 + + checkBtn(cell) + + 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 +} + +/** + * @description 妫�娴媠ql + */ +export function checkSQL(sql, type) { + if (!sql) return true + + let label = '鏁版嵁婧愪腑' + if (type === 'customscript') { + label = '鑷畾涔塻ql璇彞涓�' + } + + let _quot = sql.match(/'{1}/g) + let _lparen = sql.match(/\({1}/g) + let _rparen = sql.match(/\){1}/g) + + _quot = _quot ? _quot.length : 0 + _lparen = _lparen ? _lparen.length : 0 + _rparen = _rparen ? _rparen.length : 0 + + if (_quot % 2 !== 0) { + notification.warning({ + top: 92, + message: 'sql涓璡'蹇呴』鎴愬鍑虹幇', + duration: 5 + }) + return false + } else if (_lparen !== _rparen) { + notification.warning({ + top: 92, + message: 'sql涓�()蹇呴』鎴愬鍑虹幇', + duration: 5 + }) + return false + } else if (/--/ig.test(sql)) { + let lines = [] + sql.split(/\n/).forEach((s, i) => { + if (/--/ig.test(s)) { + lines.push(i + 1) + } + }) + + lines = lines.join('銆�') + lines = lines ? '(绗�' + lines + '琛�)' : '' + + notification.warning({ + top: 92, + message: label + `${lines}锛屼笉鍙嚭鐜板瓧绗� -- 锛屾敞閲婅鐢� /*鍐呭*/`, + duration: 5 + }) + return false + } else if (/,,/ig.test(sql)) { + let lines = [] + sql.split(/\n/).forEach((s, i) => { + if (/,,/ig.test(s)) { + lines.push(i + 1) + } + }) + + lines = lines.join('銆�') + lines = lines ? '(绗�' + lines + '琛�)' : '' + + notification.warning({ + top: 92, + message: label + `${lines}锛屼笉鍙嚭鐜拌繛缁殑鑻辨枃閫楀彿,,`, + duration: 5 + }) + return false + } else if (/鈥榺鈥�/ig.test(sql)) { + let lines = [] + sql.split(/\n/).forEach((s, i) => { + if (/鈥榺鈥�/ig.test(s)) { + lines.push(i + 1) + } + }) + + lines = lines.join('銆�') + lines = lines ? '(绗�' + lines + '琛�)' : '' + + notification.warning({ + top: 92, + message: label + `${lines}锛屼笉鍙嚭鐜颁腑鏂囧崟寮曞彿`, + duration: 5 + }) + return false + } else if (/\send\s+begin\s/ig.test(sql)) { + notification.warning({ + top: 92, + message: `end 鍚庝笉鍙揣璺� begin銆俙, + duration: 5 + }) + return false + } else if (type === 'customscript' && /\son\s+[a-z0-9_]+\.[a-z0-9_]+\s*=\s*[a-z0-9_]+\.[a-z0-9_]+/ig.test(sql)) { + let list = sql.match(/\son\s+[a-z0-9_]+\.[a-z0-9_]+\s*=\s*[a-z0-9_]+\.[a-z0-9_]+/ig) + let errors = [] + list.forEach(str => { + str = str.replace(/^\s/, '') + let strs = str.match(/(\s|=)[a-z0-9_]+\./ig) + if (strs.length === 2 && (strs[0].replace(/\s|\./g, '') === strs[1].replace(/\s|\./g, ''))) { + errors.push(str) + } + }) + + if (errors.length > 0) { + notification.warning({ + top: 92, + message: '涓嶅彲浣跨敤鍚屼竴涓〃瀛楁杩涜鍏宠仈锛�' + errors.join('銆�'), + duration: 5 + }) + return false + } + } + + let error = '' + let chars = [ + {key: 'create', reg: /(^|\s|\(|\))create\s/ig}, + {key: 'insert', reg: /(^|\s|\(|\))insert\s/ig}, + {key: 'delete', reg: /(^|\s|\(|\))delete\s/ig}, + {key: 'update', reg: /(^|\s|\(|\))update\s/ig}, + {key: 'set', reg: /(^|\s|\(|\))set\s/ig}, + {key: 'drop', reg: /(^|\s|\(|\))drop\s/ig}, + {key: 'alter', reg: /(^|\s|\(|\))alter\s/ig}, + {key: 'truncate', reg: /(^|\s|\(|\))truncate\s/ig}, + {key: 'if', reg: /(^|\s|\(|\))if\s/ig}, + {key: 'exec', reg: /(^|\s|\(|\))exec(\s|\()/ig}, + {key: 'OBJECT', reg: /(^|\s|\(|\))object(\s|\()/ig}, + {key: 'sys.', reg: /(^|\s|\(|\))sys\./ig}, + {key: 'kill', reg: /(^|\s|\(|\))kill\s/ig} + ] + + if (type === 'customscript') { + chars = chars.filter(char => !['create', 'insert', 'delete', 'update', 'set', 'drop', 'if', 'exec'].includes(char.key)) + } + + sql = sql.replace(/sys\.fn_/ig, '') // 璺宠繃sys.fn_楠岃瘉 + + chars.forEach(char => { + if (!error && char.reg.test(sql)) { + error = char.key + } + }) + + if (error) { + notification.warning({ + top: 92, + message: 'sql涓笉鍙娇鐢�' + error, + duration: 5 + }) + return false + } + + return true +} + +/** + * @description 鑾峰彇璇█杞崲淇℃伅 + */ +export function getLangTrans (config) { + let langList = sessionStorage.getItem('langList') + let appType = sessionStorage.getItem('appType') + + if (appType === 'mob' || appType === 'pc') { + langList = sessionStorage.getItem('applangList') + } + + if (!langList) return + + let defLang = '' + + try { + langList = JSON.parse(langList) + defLang = langList[0] + } catch (e) { + defLang = '' + } + + if (!defLang) return '' + + let sql = [] + let btn = [] + let ops = [] + let text = [] + let menu = [] + + let filterElement = (card) => { + if (card.datatype === 'static' && card.eleType === 'text' && !/@.+@/g.test(card.value)) { + sql.push(card.value) + } + if (card.prefix) { + sql.push(card.prefix) + } + if (card.postfix) { + sql.push(card.postfix) + } + } + + let filterSql = (sl) => { + if (!sl) return + + let cutreg = /[\u4E00-\u9FA5銆傦紒锛屻�乚+/ig + let tbs = sl.match(cutreg) + + if (!tbs) return + + text.push(...tbs) + } + + let filterBtn = (btn) => { + if (!btn.verify) return + + btn.verify.customverifys && btn.verify.customverifys.forEach(script => { + filterSql(script.sql) + }) + btn.verify.scripts && btn.verify.scripts.forEach(script => { + filterSql(script.sql) + }) + btn.verify.cbScripts && btn.verify.cbScripts.forEach(script => { + filterSql(script.sql) + }) + + if (btn.OpenType === 'funcbutton') { + if (btn.intertype === 'system' && btn.verify.dataType === 'custom' && btn.verify.setting) { + filterSql(btn.verify.setting.dataresource) + } + } else if (btn.OpenType === 'excelOut') { + filterSql(btn.verify.dataresource) + } + } + + let filterForm = (n) => { + sql.push(n.label) + if (n.resourceType === '1') { + filterSql(n.dataSource) + } else if (n.options) { + n.options.forEach(o => { + ops.push(o.Text) + }) + } + } + + let traversal = (components) => { + if (!components) return + + components.forEach(item => { + if (item.type === 'tabs') { + item.subtabs.forEach(tab => { + sql.push(tab.label) + traversal(tab.components) + }) + } else if (item.type === 'group') { + traversal(item.components) + } else { + if (item.setting && (!item.wrap || !item.wrap.datatype || item.wrap.datatype === 'dynamic')) { + if (item.setting.interType === 'system') { + filterSql(item.setting.dataresource) + item.scripts && item.scripts.forEach(script => { + filterSql(script.sql) + }) + } + } + + if (item.columns) { + item.columns.forEach(cell => { + sql.push(cell.label) + }) + } + if (item.search) { + if (item.type === 'topbar') { + if (item.search.fields) { + item.search.fields.forEach(cell => { + filterForm(cell) + }) + } + if (item.search.groups) { + item.search.groups.forEach(group => { + if (group.fields) { + group.fields.forEach(cell => { + filterForm(cell) + }) + } + }) + } + } else { + item.search.forEach(cell => { + filterForm(cell) + }) + } + } + if (item.action) { + item.action.forEach(cell => { + btn.push(cell.label) + filterBtn(cell) + if (cell.OpenType === 'popview' && cell.config) { + traversal(cell.config.components) + } else if (cell.OpenType === 'pop') { + if (cell.modal && cell.modal.fields.length) { + cell.modal.fields.forEach(n => { + filterForm(n) + }) + } + } + }) + } + + if (item.type === 'navbar') { + if (item.menus) { + item.menus.forEach(first => { + menu.push(first.name) + if (first.sublist) { + first.sublist.forEach(sec => { + menu.push(sec.name) + if (sec.sublist) { + sec.sublist.forEach(thd => { + menu.push(thd.name) + }) + } + }) + } + }) + } + } else if (item.type === 'menubar') { + item.subMenus.forEach(cell => { + if (cell.setting.name) { + menu.push(cell.setting.name) + } + }) + } else if (item.type === 'card' || item.type === 'carousel' || item.type === 'timeline') { + item.subcards.forEach(card => { + card.elements && card.elements.forEach(cell => { + if (cell.eleType === 'button') { + btn.push(cell.label) + filterBtn(cell) + if (cell.OpenType === 'popview' && cell.config) { + traversal(cell.config.components) + } else if (cell.OpenType === 'pop') { + if (cell.modal && cell.modal.fields.length) { + cell.modal.fields.forEach(n => { + filterForm(n) + }) + } + } + } else { + filterElement(cell) + } + }) + card.backElements && card.backElements.forEach(cell => { + if (cell.eleType === 'button') { + btn.push(cell.label) + filterBtn(cell) + if (cell.OpenType === 'popview' && cell.config) { + traversal(cell.config.components) + } else if (cell.OpenType === 'pop') { + if (cell.modal && cell.modal.fields.length) { + cell.modal.fields.forEach(n => { + filterForm(n) + }) + } + } + } else { + filterElement(cell) + } + }) + }) + } else if (item.type === 'balcony') { + item.elements && item.elements.forEach(cell => { + if (cell.eleType === 'button') { + btn.push(cell.label) + filterBtn(cell) + if (cell.OpenType === 'popview' && cell.config) { + traversal(cell.config.components) + } else if (cell.OpenType === 'pop') { + if (cell.modal && cell.modal.fields.length) { + cell.modal.fields.forEach(n => { + filterForm(n) + }) + } + } + } else { + filterElement(cell) + } + }) + } else if (item.type === 'table') { + let loopCol = (cols) => { + cols.forEach(col => { + sql.push(col.label) + if (col.prefix) { + sql.push(col.prefix) + } + if (col.postfix) { + sql.push(col.postfix) + } + if (col.type === 'colspan') { + loopCol(col.subcols) + } else if (col.type === 'custom') { + col.elements.forEach(cell => { + if (cell.eleType === 'button') { + btn.push(cell.label) + filterBtn(cell) + if (cell.OpenType === 'popview' && cell.config) { + traversal(cell.config.components) + } else if (cell.OpenType === 'pop') { + if (cell.modal && cell.modal.fields.length) { + cell.modal.fields.forEach(n => { + filterForm(n) + }) + } + } + } else { + filterElement(cell) + } + }) + } + }) + } + loopCol(item.cols) + } else if (item.type === 'form') { + item.subcards.forEach(cell => { + filterBtn(cell.subButton) + cell.fields.forEach(n => { + filterForm(n) + }) + }) + } + } + }) + } + + if (config.interfaces) { + config.interfaces.forEach(item => { + if (item.setting.interType === 'system') { + filterSql(item.setting.dataresource) + item.scripts && item.scripts.forEach(script => { + filterSql(script.sql) + }) + } + }) + } + + traversal(config.components) + + if (config.MenuName) { + menu.push(config.MenuName) + } + + if (config.fstMenuId && config.parentId && config.fstMenuId !== 'BillPrintTemp') { + let menulist = sessionStorage.getItem('fstMenuList') + try { + menulist = JSON.parse(menulist) + } catch(e) { + menulist = [] + } + + menulist.forEach(item => { + if (item.MenuID !== config.fstMenuId) return + menu.push(item.MenuName) + item.children.forEach(cell => { + if (cell.MenuID !== config.parentId) return + menu.push(cell.MenuName) + }) + }) + } + + sql = sql.filter(Boolean) + btn = btn.filter(Boolean) + ops = ops.filter(Boolean) + text = text.filter(Boolean) + menu = menu.filter(Boolean) + + sql = Array.from(new Set(sql)) + btn = Array.from(new Set(btn)) + ops = Array.from(new Set(ops)) + text = Array.from(new Set(text)) + menu = Array.from(new Set(menu)) + + sql = sql.map(l => `'${l}','title'`) + btn = btn.map(l => `'${l}','button'`) + ops = ops.map(l => `'${l}','list'`) + text = text.map(l => `'${l}','text'`) + menu = menu.map(l => `'${l}','menu'`) + + let list = [...menu, ...btn, ...sql, ...ops, ...text] + + let result = [] + + langList.forEach(lan => { + if (lan === defLang) return + + list.forEach(n => { + result.push(`'${lan}',${n}`) + }) + }) + + config.trans = true + + return result.join(';') +} + +/** + * @description 璇█杞崲 + */ +export function setLangTrans (config, btnDict, titDict, lisDict, menuDict, regs, tail) { + let filterElement = (card) => { + if (card.datatype === 'static' && card.eleType === 'text' && !/@.+@/g.test(card.value)) { + if (card.value && titDict[card.value]) { + card.value = titDict[card.value] + } + } + if (card.prefix && titDict[card.prefix]) { + card.prefix = titDict[card.prefix] + } + if (card.postfix && titDict[card.postfix]) { + card.postfix = titDict[card.postfix] + } + } + + let filterSql = (sl) => { + if (!sl) return + + regs.forEach(item => { + sl = sl.replace(item.reg, item.value) + }) + + return sl + } + + let filterBtn = (btn) => { + if (btn.label && btnDict[btn.label]) { + btn.label = btnDict[btn.label] + } + + if (btn.OpenType === 'tab' && btn.linkmenu) { + if (btn.linkmenu[0] === 'multiMenu') { + btn.multiMenus.forEach(menu => { + menu.menuId = menu.menuId.map(c => { + if (c.length <= 24) { + return md5(window.GLOB.appkey + c + sessionStorage.getItem('lang')).toLowerCase() + } else { + return c.slice(0, 24) + tail + } + }) + + menu.MenuID = menu.menuId[menu.menuId.length - 1] + }) + } else { + btn.linkmenu = btn.linkmenu.map(c => { + if (c.length <= 24) { + return md5(window.GLOB.appkey + c + sessionStorage.getItem('lang')).toLowerCase() + } else { + return c.slice(0, 24) + tail + } + }) + btn.MenuID = btn.linkmenu[btn.linkmenu.length - 1] + } + } else { + if (btn.refreshTab && btn.refreshTab.length > 0) { + btn.refreshTab = btn.refreshTab.map(c => { + if (c.length <= 24) { + return md5(window.GLOB.appkey + c + sessionStorage.getItem('lang')).toLowerCase() + } else { + return c.slice(0, 24) + tail + } + }) + } + if (btn.openmenu && Array.isArray(btn.openmenu) && btn.openmenu.length > 0) { + btn.openmenu = btn.openmenu.map(c => { + if (c.length <= 24) { + return md5(window.GLOB.appkey + c + sessionStorage.getItem('lang')).toLowerCase() + } else { + return c.slice(0, 24) + tail + } + }) + btn.MenuID = btn.openmenu[btn.openmenu.length - 1] + } else if (btn.openmenu && typeof(btn.openmenu) === 'string' && btn.openmenu !== 'goback') { + btn.openmenu = btn.openmenu.slice(0, 24) + tail + } + + if (btn.pageTemplate === 'linkpage' && btn.linkmenu && typeof(btn.linkmenu) === 'string') { + btn.linkmenu = btn.linkmenu.slice(0, 24) + tail + } + } + + if (!btn.verify) return + + btn.verify.customverifys && btn.verify.customverifys.forEach(script => { + script.sql = filterSql(script.sql) + }) + btn.verify.scripts && btn.verify.scripts.forEach(script => { + script.sql = filterSql(script.sql) + }) + btn.verify.cbScripts && btn.verify.cbScripts.forEach(script => { + script.sql = filterSql(script.sql) + }) + + if (btn.OpenType === 'funcbutton') { + if (btn.intertype === 'system' && btn.verify.dataType === 'custom' && btn.verify.setting) { + btn.verify.setting.dataresource = filterSql(btn.verify.setting.dataresource) + } + } else if (btn.OpenType === 'excelOut' && btn.verify.dataresource) { + btn.verify.dataresource = filterSql(btn.verify.dataresource) + } + } + + let filterForm = (n) => { + if (n.label && titDict[n.label]) { + n.label = titDict[n.label] + } + if (n.resourceType === '1') { + n.dataSource = filterSql(n.dataSource) + } else if (n.options) { + n.options.forEach(o => { + if (o.Text && lisDict[o.Text]) { + o.Text = lisDict[o.Text] + } + }) + } + } + + let resetMenu = (wrap) => { + if (!wrap.menu) return + + if (typeof(wrap.menu) === 'string') { + wrap.menu = wrap.menu.slice(0, 24) + tail + if (wrap.MenuID) { + wrap.MenuID = wrap.menu + } + } else { + wrap.menu = wrap.menu.map(c => { + if (c.length <= 24) { + return md5(window.GLOB.appkey + c + sessionStorage.getItem('lang')).toLowerCase() + } else { + return c.slice(0, 24) + tail + } + }) + if (wrap.MenuID) { + wrap.MenuID = wrap.menu[wrap.menu.length - 1] + } + } + } + let resetMenus = (wrap) => { + if (!wrap.menus) return + + wrap.menus.forEach(m => { + if (typeof(m.menu) === 'string') { + m.menu = m.menu.slice(0, 24) + tail + } else { + m.menu = m.menu.map(c => { + if (c.length <= 24) { + return md5(window.GLOB.appkey + c + sessionStorage.getItem('lang')).toLowerCase() + } else { + return c.slice(0, 24) + tail + } + }) + if (m.MenuID) { + m.MenuID = m.menu[m.menu.length - 1] + } + } + }) + } + + let traversal = (components) => { + if (!components) return + + components.forEach(item => { + if (item.type === 'tabs') { + item.subtabs.forEach(tab => { + if (tab.label && titDict[tab.label]) { + tab.label = titDict[tab.label] + } + traversal(tab.components) + }) + } else if (item.type === 'group') { + traversal(item.components) + } else { + if (item.wrap && (item.wrap.click === 'menu' || item.wrap.click === 'menus')) { + if (item.wrap.click === 'menu') { + resetMenu(item.wrap) + } else if (item.wrap.click === 'menus') { + resetMenus(item.wrap) + } + } else if (item.plot && (item.plot.click === 'menu' || item.plot.click === 'menus')) { + if (item.plot.click === 'menu') { + resetMenu(item.plot) + } else if (item.plot.click === 'menus') { + resetMenus(item.plot) + } + } + if (item.setting && (!item.wrap || !item.wrap.datatype || item.wrap.datatype === 'dynamic')) { + if (item.setting.interType === 'system') { + item.setting.dataresource = filterSql(item.setting.dataresource) + item.scripts && item.scripts.forEach(script => { + script.sql = filterSql(script.sql) + }) + } + } + + if (item.columns) { + item.columns.forEach(cell => { + if (cell.label && titDict[cell.label]) { + cell.label = titDict[cell.label] + } + }) + } + if (item.search) { + if (item.type === 'topbar') { + if (item.search.fields) { + item.search.fields.forEach(cell => { + filterForm(cell) + }) + } + if (item.search.groups) { + item.search.groups.forEach(group => { + if (group.fields) { + group.fields.forEach(cell => { + filterForm(cell) + }) + } + }) + } + } else { + item.search.forEach(cell => { + filterForm(cell) + }) + } + } + if (item.action) { + item.action.forEach(cell => { + filterBtn(cell) + if (cell.OpenType === 'popview' && cell.config) { + traversal(cell.config.components) + } else if (cell.OpenType === 'pop') { + if (cell.modal && cell.modal.fields.length) { + cell.modal.fields.forEach(n => { + filterForm(n) + }) + } + } + }) + } + + if (item.type === 'navbar') { + item.uuid = item.uuid.slice(0, 24) + tail + } else if (item.type === 'login') { + item.wrap.linkmenu = item.wrap.linkmenu.slice(0, 24) + tail + } else if (item.type === 'menubar') { + item.subMenus = item.subMenus.map(cell => { + if (cell.setting.name && menuDict[cell.setting.name]) { + cell.setting.name = menuDict[cell.setting.name] + } + if (cell.setting.type === 'linkmenu') { + cell.setting.linkMenuId = cell.setting.linkMenuId.slice(0, 24) + tail + } + return cell + }) + } else if (item.type === 'topbar') { + if (item.wrap.menus) { + resetMenus(item.wrap) + } + } else if (item.type === 'card' || item.type === 'carousel' || item.type === 'timeline') { + item.subcards.forEach(card => { + if (card.setting.click === 'menus') { + resetMenus(card) + } else if (card.setting.click === 'menu') { + resetMenu(card.setting) + } + card.elements && card.elements.forEach(cell => { + if (cell.eleType === 'button') { + filterBtn(cell) + if (cell.OpenType === 'popview' && cell.config) { + traversal(cell.config.components) + } else if (cell.OpenType === 'pop') { + if (cell.modal && cell.modal.fields.length) { + cell.modal.fields.forEach(n => { + filterForm(n) + }) + } + } + } else { + filterElement(cell) + } + }) + card.backElements && card.backElements.forEach(cell => { + if (cell.eleType === 'button') { + filterBtn(cell) + if (cell.OpenType === 'popview' && cell.config) { + traversal(cell.config.components) + } else if (cell.OpenType === 'pop') { + if (cell.modal && cell.modal.fields.length) { + cell.modal.fields.forEach(n => { + filterForm(n) + }) + } + } + } else { + filterElement(cell) + } + }) + }) + } else if (item.type === 'balcony') { + item.elements && item.elements.forEach(cell => { + if (cell.eleType === 'button') { + filterBtn(cell) + if (cell.OpenType === 'popview' && cell.config) { + traversal(cell.config.components) + } else if (cell.OpenType === 'pop') { + if (cell.modal && cell.modal.fields.length) { + cell.modal.fields.forEach(n => { + filterForm(n) + }) + } + } + } else { + filterElement(cell) + } + }) + } else if (item.type === 'table') { + let loopCol = (cols) => { + cols.forEach(col => { + if (col.label && titDict[col.label]) { + col.label = titDict[col.label] + } + if (col.prefix && titDict[col.prefix]) { + col.prefix = titDict[col.prefix] + } + if (col.postfix && titDict[col.postfix]) { + col.postfix = titDict[col.postfix] + } + if (col.type === 'colspan') { + loopCol(col.subcols) + } else if (col.type === 'custom') { + col.elements.forEach(cell => { + if (cell.eleType === 'button') { + filterBtn(cell) + if (cell.OpenType === 'popview' && cell.config) { + traversal(cell.config.components) + } else if (cell.OpenType === 'pop') { + if (cell.modal && cell.modal.fields.length) { + cell.modal.fields.forEach(n => { + filterForm(n) + }) + } + } + } else { + filterElement(cell) + } + }) + } + }) + } + loopCol(item.cols) + } else if (item.type === 'form') { + item.subcards.forEach(cell => { + filterBtn(cell.subButton) + cell.fields.forEach(n => { + filterForm(n) + }) + }) + } + } + }) + } + + if (config.interfaces) { + config.interfaces.forEach(item => { + if (item.setting.interType === 'system') { + item.setting.dataresource = filterSql(item.setting.dataresource) + item.scripts && item.scripts.forEach(script => { + script.sql = filterSql(script.sql) + }) + } + }) + } + + traversal(config.components) } \ No newline at end of file -- Gitblit v1.8.0