From 2e271a6b02a2f82bc0e3a36e05c00731bad99358 Mon Sep 17 00:00:00 2001 From: king <18310653075@163.com> Date: 星期日, 02 十月 2022 01:46:25 +0800 Subject: [PATCH] 2022-10-02 --- src/utils/utils-custom.js | 163 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 163 insertions(+), 0 deletions(-) diff --git a/src/utils/utils-custom.js b/src/utils/utils-custom.js index 88da467..fa7a65b 100644 --- a/src/utils/utils-custom.js +++ b/src/utils/utils-custom.js @@ -970,4 +970,167 @@ } return JSON.parse(_style) +} + +/** + * @description 鑾峰彇琛ㄥ悕 + */ +export function getTables (config) { + let tables = [] + let cuts = [] + let cutreg = /(from|update|insert\s+into)\s+(@db@)?[a-z_]+/ig + let trimreg = /(from|update|insert\s+into)\s+(@db@)?/ig + + if (!config.wrap || !config.wrap.datatype || config.wrap.datatype === 'dynamic') { + if (config.setting.interType === 'system') { + if (config.setting.execute !== 'false') { + 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 { + let tb = config.setting.tableName.replace(/@db@|\s+/ig, '') + if (/[a-z_]+/ig.test(tb)) { + tables.push(tb) + } + } + } + + let action = [] + + if (config.type === 'form') { + config.subcards.forEach(item => { + action.push(item.subButton) + }) + } else if (config.subcards) { + config.subcards.forEach(item => { + item.elements.forEach(cell => { + if (cell.eleType === 'button' && ['form', 'pop', 'prompt', 'exec', 'excelIn', 'excelOut'].includes(cell.OpenType)) { + action.push(cell) + } + }) + + if (item.backElements && item.setting.type === 'multi') { + item.backElements.forEach(cell => { + if (cell.eleType === 'button' && ['form', 'pop', 'prompt', 'exec', 'excelIn', 'excelOut'].includes(cell.OpenType)) { + action.push(cell) + } + }) + } + }) + } + 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) + } + }) + } + }) + + config.elements && config.elements.forEach(cell => { + if (cell.eleType === 'button' && ['form', 'pop', 'prompt', 'exec', 'excelIn', 'excelOut'].includes(cell.OpenType)) { + action.push(cell) + } + }) + + config.action && config.action.forEach(cell => { + if (['pop', 'prompt', 'exec', 'excelIn', 'excelOut'].includes(cell.OpenType)) { + action.push(cell) + } + }) + + 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 === '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.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(Boolean) + tables = Array.from(new Set(tables)) + + return tables } \ No newline at end of file -- Gitblit v1.8.0