From 6ad07f3bbaffa15280071729fd419cd11405d2e3 Mon Sep 17 00:00:00 2001 From: king <18310653075@163.com> Date: 星期五, 22 十二月 2023 09:59:49 +0800 Subject: [PATCH] 2023-12-22 --- src/menu/debug/index.jsx | 203 +++++++++++++++++++++++++++++++++++++++++++------- 1 files changed, 172 insertions(+), 31 deletions(-) diff --git a/src/menu/debug/index.jsx b/src/menu/debug/index.jsx index 2c2f2ea..3ab0194 100644 --- a/src/menu/debug/index.jsx +++ b/src/menu/debug/index.jsx @@ -254,13 +254,16 @@ item.action && item.action.forEach(cell => { if (cell.hidden === 'true') return false - let sql = this.resetButton(item, cell, process) + let res = this.resetButton(item, cell, process) - if (sql) { - if (typeof(sql) === 'string') { - children.push({label: cell.label, sql: sql}) + if (res) { + if (typeof(res) === 'string') { + children.push({label: cell.label, sql: res}) + } else if (res.backSql) { + children.push({label: cell.label, sql: res.sql}) + children.push({label: cell.label + '锛堝洖璋冿級', sql: res.backSql}) } else { - children.push({label: cell.label, tabName: cell.label, sql: '', children: sql}) + children.push({label: cell.label, tabName: cell.label, sql: '', children: res}) } } }) @@ -276,13 +279,16 @@ } else if (col.type === 'custom') { col.elements.forEach(cell => { if (cell.eleType !== 'button' || cell.hidden === 'true') return - let sql = this.resetButton(item, cell, process) + let res = this.resetButton(item, cell, process) - if (sql) { - if (typeof(sql) === 'string') { - children.push({label: cell.label, sql: sql}) + if (res) { + if (typeof(res) === 'string') { + children.push({label: cell.label, sql: res}) + } else if (res.backSql) { + children.push({label: cell.label, sql: res.sql}) + children.push({label: cell.label + '锛堝洖璋冿級', sql: res.backSql}) } else { - children.push({label: cell.label, tabName: cell.label, sql: '', children: sql}) + children.push({label: cell.label, tabName: cell.label, sql: '', children: res}) } } }) @@ -300,13 +306,16 @@ item.subcards && item.subcards.forEach(card => { card.elements && card.elements.forEach(cell => { if (cell.eleType !== 'button' || cell.hidden === 'true') return - let sql = this.resetButton(item, cell, process) + let res = this.resetButton(item, cell, process) - if (sql) { - if (typeof(sql) === 'string') { - children.push({label: cell.label, sql: sql}) + if (res) { + if (typeof(res) === 'string') { + children.push({label: cell.label, sql: res}) + } else if (res.backSql) { + children.push({label: cell.label, sql: res.sql}) + children.push({label: cell.label + '锛堝洖璋冿級', sql: res.backSql}) } else { - children.push({label: cell.label, tabName: cell.label, sql: '', children: sql}) + children.push({label: cell.label, tabName: cell.label, sql: '', children: res}) } } }) @@ -315,13 +324,16 @@ card.backElements.forEach(cell => { if (cell.eleType !== 'button' || cell.hidden === 'true') return - let sql = this.resetButton(item, cell, process, null, true) + let res = this.resetButton(item, cell, process, null, true) - if (sql) { - if (typeof(sql) === 'string') { - children.push({label: cell.label, sql: sql}) + if (res) { + if (typeof(res) === 'string') { + children.push({label: cell.label, sql: res}) + } else if (res.backSql) { + children.push({label: cell.label, sql: res.sql}) + children.push({label: cell.label + '锛堝洖璋冿級', sql: res.backSql}) } else { - children.push({label: cell.label, tabName: cell.label, sql: '', children: sql}) + children.push({label: cell.label, tabName: cell.label, sql: '', children: res}) } } }) @@ -329,13 +341,16 @@ } else if (item.type === 'balcony') { item.elements.forEach(cell => { if (cell.eleType !== 'button' || cell.hidden === 'true') return - let sql = this.resetButton(item, cell, process) + let res = this.resetButton(item, cell, process) - if (sql) { - if (typeof(sql) === 'string') { - children.push({label: cell.label, sql: sql}) + if (res) { + if (typeof(res) === 'string') { + children.push({label: cell.label, sql: res}) + } else if (res.backSql) { + children.push({label: cell.label, sql: res.sql}) + children.push({label: cell.label + '锛堝洖璋冿級', sql: res.backSql}) } else { - children.push({label: cell.label, tabName: cell.label, sql: '', children: sql}) + children.push({label: cell.label, tabName: cell.label, sql: '', children: res}) } } }) @@ -345,10 +360,15 @@ if (!group.subButton.Ot) { group.subButton.Ot = item.wrap.datatype === 'static' ? 'notRequired' : 'requiredSgl' } - let sql = this.resetButton(item, group.subButton, process, group) + let res = this.resetButton(item, group.subButton, process, group) - if (sql) { - children.push({label: group.subButton.label, sql: sql}) + if (res) { + if (typeof(res) === 'string') { + children.push({label: group.subButton.label, sql: res}) + } else if (res.backSql) { + children.push({label: group.subButton.label, sql: res.sql}) + children.push({label: group.subButton.label + '锛堝洖璋冿級', sql: res.backSql}) + } } }) } @@ -372,9 +392,52 @@ let _item = fromJS(item).toJS() _item.columns = _item.subColumns || [] _item.setting.primaryKey = _item.setting.subKey - sql = this.getSysDefaultSql(cell, _item, process, group) + sql = this.getSysDefaultSql(cell, _item, process, group, false) } else { - sql = this.getSysDefaultSql(cell, item, process, group) + sql = this.getSysDefaultSql(cell, item, process, group, false) + } + } + if (cell.callbackType === 'script' && cell.verify && cell.verify.cbScripts) { + let defSql = '' + if (item.subtype === 'dualdatacard' && isback) { + let _item = fromJS(item).toJS() + _item.columns = _item.subColumns || [] + _item.setting.primaryKey = _item.setting.subKey + defSql = this.getSysDefaultSql(cell, _item, process, group, true) + } else { + defSql = this.getSysDefaultSql(cell, item, process, group, true) + } + + let backSql = this.getSysBackSql(cell.verify.cbScripts) + + if (backSql) { + backSql = `${defSql} + ${backSql} + ` + + if (cell.output) { + backSql += ` + aaa: select @ErrorCode as ErrorCode,@retmsg as retmsg,${cell.output} as mk_b_id` + } else { + backSql += ` + aaa: select @ErrorCode as ErrorCode,@retmsg as retmsg` + } + + backSql = backSql.replace(/@ID@/ig, `'id'`) + backSql = backSql.replace(/@BID@/ig, `'bid'`) + backSql = backSql.replace(/@LoginUID@/ig, `'LoginUID'`) + backSql = backSql.replace(/@SessionUid@/ig, `'SessionUid'`) + backSql = backSql.replace(/@UserID@/ig, `'UserID'`) + backSql = backSql.replace(/@Appkey@/ig, `'appkey'`) + backSql = backSql.replace(/@typename@/ig, `'typename'`) + backSql = backSql.replace(/@\$|\$@/ig, '').replace(/@datam@/ig, `''`) + } + + if (backSql) { + return { + backSql, + sql + } } } } else if (cell.OpenType === 'excelIn') { @@ -421,7 +484,81 @@ return sql } - getSysDefaultSql = (btn, component, process, group) => { + getSysBackSql = (scripts) => { + let _prev = '' + let _back = '' + + scripts.forEach(script => { + if (script.status === 'false') return + + if (script.position === 'front') { + _prev += ` + /* 鑷畾涔夎剼鏈� */ + ${script.sql} + ` + } else { + _back += ` + /* 鑷畾涔夎剼鏈� */ + ${script.sql} + ` + } + }) + + if (!_prev) return '' + + let tbs = [] + _prev.replace(/\n|\r/g, ' ').split(/\sdeclare\s/ig).forEach(line => { + if (!/^\s*(@|#)[a-zA-Z0-9_]+\s+table\s+\(/ig.test(line)) return + let tb = line.match(/(@|#)[a-zA-Z0-9_]+\s+table\s+\(.+(\)|date|datetime)\s*\)/ig) + + if (tb && tb.length === 1) { + tbs.push(tb[0]) + } + }) + + tbs.forEach(tb => { + let tbName = tb.match(/(@|#)[a-zA-Z0-9_]+/ig)[0] + + if (!tbName) return + + tbName = tbName.replace(/@|#/, '') + + let content = tb.replace(/(@|#)[a-zA-Z0-9_]+\s+table\s+\(\s*/, '').replace(/\s*\)$/, '') + + let keys = [] + let vals = [] + let error = false + + content.split(/\s*,\s*/).forEach(m => { + let ms = m.split(/\s+/) + if (ms.length > 1) { + keys.push(ms[0]) + if (/nvarchar/i.test(ms[1])) { + vals.push(`'mk'`) + } else if (/date/i.test(ms[1])) { + vals.push(`'1949-10-01'`) + } else if (/int|decimal/i.test(ms[1])) { + vals.push('0') + } else { + error = true + } + } else { + error = true + } + }) + + if (error || vals.length === 0) return + + _prev += ` + Insert into ${tbName} (${keys.join(',')}) + Select ${vals.join(',')} + ` + }) + + return _prev + _back + } + + getSysDefaultSql = (btn, component, process, group, retmsg) => { let primaryId = 'id' let BID = 'bid' let verify = btn.verify || {} @@ -678,6 +815,10 @@ select ${_initColfields.join(',')} ` } + + if (retmsg) { + return _sql + } // 鍘婚櫎绂佺敤鐨勯獙璇� if (verify.contrasts) { -- Gitblit v1.8.0