| | |
| | | } |
| | | |
| | | /** |
| | | * @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 |
| | | } |
| | | |
| | | /** |
| | | * @description 生成32位uuid string + 时间 |
| | | * @return {String} uuid |
| | | */ |
| | |
| | | return cell |
| | | }) |
| | | } |
| | | } else if (item.type === 'table' && item.cols) { |
| | | } 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 |
| | | }) |
| | | } |
| | | |
| | | let loopCol = (cols) => { |
| | | return cols.map(col => { |
| | | if (col.type === 'action') { |
| | |
| | | }) |
| | | } |
| | | |
| | | item.cols = loopCol(item.cols) |
| | | item.cols = loopCol(item.cols || []) |
| | | |
| | | if (item.colsCtrls) { |
| | | item.colsCtrls = item.colsCtrls.map(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() |
| | | |
| | |
| | | }) |
| | | } |
| | | |
| | | 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) |
| | | }) |
| | |
| | | return cell |
| | | }) |
| | | } |
| | | } else if (item.type === 'table' && item.cols) { |
| | | } else if (item.type === 'table') { |
| | | let loopCol = (cols) => { |
| | | return cols.map(col => { |
| | | if (col.type === 'action') { |
| | |
| | | }) |
| | | } |
| | | |
| | | item.cols = loopCol(item.cols) |
| | | item.cols = loopCol(item.cols || []) |
| | | |
| | | if (item.colsCtrls) { |
| | | item.colsCtrls = item.colsCtrls.map(col => { |
| | |
| | | |
| | | 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 |
| | | } |
| | | |
| | | /** |
| | |
| | | } else if (!card.setting.supModule) { |
| | | errors.push({ level: 0, detail: '未设置上级组件!'}) |
| | | } |
| | | } else if (card.type === 'card' && card.subtype === 'datacard') { // 数据卡,可能有多上级 |
| | | } else if ((card.type === 'card' && card.subtype === 'datacard') || card.subtype === 'normaltable') { // 数据卡、table,可能有多上级 |
| | | if (card.wrap.supType !== 'multi' && !card.setting.supModule) { |
| | | errors.push({ level: 0, detail: '未设置上级组件!'}) |
| | | } |
| | |
| | | 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 = [] |
| | |
| | | } |
| | | |
| | | return true |
| | | } |
| | | |
| | | /** |
| | | * @description 获取语言转换信息 |
| | | */ |
| | | export function getLangTrans (config) { |
| | | let langList = sessionStorage.getItem('langList') |
| | | |
| | | 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 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 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) { |
| | | item.search.forEach(cell => { |
| | | sql.push(cell.label) |
| | | if (cell.options) { |
| | | cell.options.forEach(o => { |
| | | ops.push(o.Text) |
| | | }) |
| | | } |
| | | if (cell.resourceType === '1') { |
| | | filterSql(cell.dataSource) |
| | | } |
| | | }) |
| | | } |
| | | 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 => { |
| | | sql.push(n.label) |
| | | if (n.resourceType === '1') { |
| | | filterSql(n.dataSource) |
| | | } |
| | | }) |
| | | } |
| | | } |
| | | }) |
| | | } |
| | | |
| | | 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 => { |
| | | sql.push(n.label) |
| | | if (n.resourceType === '1') { |
| | | filterSql(n.dataSource) |
| | | } |
| | | }) |
| | | } |
| | | } |
| | | } 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 => { |
| | | sql.push(n.label) |
| | | if (n.resourceType === '1') { |
| | | filterSql(n.dataSource) |
| | | } |
| | | }) |
| | | } |
| | | } |
| | | } 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 => { |
| | | sql.push(n.label) |
| | | if (n.resourceType === '1') { |
| | | filterSql(n.dataSource) |
| | | } |
| | | }) |
| | | } |
| | | } |
| | | } 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 => { |
| | | sql.push(n.label) |
| | | if (n.resourceType === '1') { |
| | | filterSql(n.dataSource) |
| | | } |
| | | }) |
| | | } |
| | | } |
| | | } else { |
| | | filterElement(cell) |
| | | } |
| | | }) |
| | | } |
| | | }) |
| | | } |
| | | loopCol(item.cols) |
| | | } else if (item.type === 'form') { |
| | | item.subcards.forEach(cell => { |
| | | filterBtn(cell.subButton) |
| | | cell.fields.forEach(n => { |
| | | sql.push(n.label) |
| | | if (n.resourceType === '1') { |
| | | filterSql(n.dataSource) |
| | | } |
| | | }) |
| | | }) |
| | | } |
| | | } |
| | | }) |
| | | } |
| | | |
| | | 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) |
| | | |
| | | sql = sql.filter(Boolean) |
| | | btn = btn.filter(Boolean) |
| | | ops = ops.filter(Boolean) |
| | | text = text.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)) |
| | | |
| | | sql = sql.map(l => `'${l}','title'`) |
| | | btn = btn.map(l => `'${l}','button'`) |
| | | ops = ops.map(l => `'${l}','list'`) |
| | | text = text.map(l => `'${l}','text'`) |
| | | |
| | | let list = [...btn, ...sql, ...ops, ...text] |
| | | |
| | | if (config.MenuName) { |
| | | list.unshift(`'${config.MenuName}','menu'`) |
| | | } |
| | | |
| | | if (config.fstMenuId && config.parentId) { |
| | | let menulist = sessionStorage.getItem('fstMenuList') |
| | | try { |
| | | menulist = JSON.parse(menulist) |
| | | } catch(e) { |
| | | menulist = [] |
| | | } |
| | | |
| | | menulist.forEach(item => { |
| | | if (item.MenuID !== config.fstMenuId) return |
| | | list.unshift(`'${item.MenuName}','menu'`) |
| | | item.children.forEach(cell => { |
| | | if (cell.MenuID !== config.parentId) return |
| | | list.unshift(`'${cell.MenuName}','menu'`) |
| | | }) |
| | | }) |
| | | } |
| | | |
| | | let result = [] |
| | | |
| | | langList.forEach(lan => { |
| | | if (lan === defLang) return |
| | | |
| | | list.forEach(n => { |
| | | result.push(`'${lan}',${n}`) |
| | | }) |
| | | }) |
| | | |
| | | config.trans = true |
| | | |
| | | return result.join(';') |
| | | } |