From f9455c981f94d5fd89103b1d332baefd039bebb2 Mon Sep 17 00:00:00 2001 From: king <18310653075@163.com> Date: 星期五, 25 十月 2024 09:17:14 +0800 Subject: [PATCH] 2024-10-25 --- src/menu/debug/index.jsx | 1135 ++++++++++++++++++++++++++++++++++++++++++----------------- 1 files changed, 807 insertions(+), 328 deletions(-) diff --git a/src/menu/debug/index.jsx b/src/menu/debug/index.jsx index 6e18351..b66ef90 100644 --- a/src/menu/debug/index.jsx +++ b/src/menu/debug/index.jsx @@ -1,4 +1,4 @@ -import React, {Component} from 'react' +import React, { Component } from 'react' import PropTypes from 'prop-types' import { fromJS } from 'immutable' import { Modal, Button, Drawer, Tooltip } from 'antd' @@ -26,6 +26,7 @@ sqlList = [] verSqls = [] + linkMain = null trigger = () => { let config = fromJS(this.props.config).toJS() @@ -66,6 +67,7 @@ } this.sqlList = [] + this.linkMain = [] let regs = [ { reg: /@userName@/ig, value: `'User_Name'` }, @@ -74,13 +76,7 @@ { reg: /@\$/ig, value: '' }, { reg: /@datam@/ig, value: `''` }, ] - - if (window.GLOB.externalDatabase !== null) { - regs.push({ - reg: /@db@/ig, - value: window.GLOB.externalDatabase - }) - } + if (config.urlFields) { config.urlFields.forEach(field => { regs.push({ @@ -94,76 +90,13 @@ if (process) { regs.push({ reg: /@works_flow_code@/ig, value: `'1949-10-01 15:00:00'` }) } - - if (config.interfaces && config.interfaces.length > 0) { - config.interfaces.forEach(m => { - if (m.status !== 'true' || m.setting.interType !== 'system') return false - - let sql = this.formatDataSource(m, regs) - - this.sqlList.push({label: m.setting.name, children: [{label: '鏁版嵁婧�', sql: sql}]}) - }) - } - this.filterComponent(config.components, [], regs, process) + let _mainSearch = [] - let sqls = [] - let foreachSql = (list, name, tabName = '', supName = '') => { - list.forEach(item => { - if (item.children) { - if (item.tabName) { - item.children.forEach(cell => { - if (cell.children) { - foreachSql(cell.children, cell.label, item.tabName, name) - } - }) - } else { - foreachSql(item.children, name, tabName, supName) - } - } else if (item.sql) { - sqls.push({uuid: Utils.getuuid() ,label: item.label, name: name, tabName: tabName, supName: supName, sql: item.sql}) - } - }) - } - - this.sqlList.forEach(item => { - if (item.children) { - foreachSql(item.children, item.label) - } - }) - - if (sqls.length === 0) { - Modal.warning({ - title: '褰撳墠鑿滃崟鏃犲彲楠岃瘉鑴氭湰銆�', - okText: '鐭ラ亾浜�' - }) - return - } - - this.verSqls = sqls - let that = this - - Modal.confirm({ - content: `褰撳墠鑿滃崟鍏�${this.sqlList.length}涓粍浠讹紝${sqls.length}椤硅剼鏈渶瑕佹楠�${sqls.length > 20 ? '锛屾椂闂村ぇ姒傞渶瑕�' + parseInt(sqls.length / 2) + '绉�' : ''}銆俙, - onOk() { - that.setState({visible: true, status: 'loading', sqlList: fromJS(sqls).toJS(), successIds: [], errorIds: [], errorMsg: {}, execId: ''}, () => { - that.roopSql() - }) - }, - onCancel() {} - }) - - this.sqlList = [] - } - - filterComponent = (components, mainSearch, regs, process, ispop = false) => { - let appType = sessionStorage.getItem('appType') - let _mainSearch = mainSearch || [] - - if (appType === 'mob') { + if (sessionStorage.getItem('appType') === 'mob') { let search = [] let ms = null - components.forEach(item => { + config.components.forEach(item => { if (item.type === 'topbar' && item.wrap.type !== 'navbar' && item.search) { ms = item.search } else if (item.type === 'search' && item.wrap.field) { @@ -210,20 +143,170 @@ _mainSearch = search } } else { - components.forEach(component => { + config.components.forEach(component => { if (component.type !== 'search') return _mainSearch = component.search || [] }) } + + if (config.interfaces && config.interfaces.length > 0) { + config.interfaces.forEach(m => { + if (m.status !== 'true' || m.setting.interType !== 'system') return false + + m.setting.laypage = 'false' + m.setting.$top = true + + let sql = this.formatDataSource(m, regs, _mainSearch) + + this.sqlList.push({label: m.setting.name, children: [{label: '鏁版嵁婧�', sql: sql}]}) + }) + } + + this.filterComponent(config.components, _mainSearch, regs, process) + + let sqls = [] + let foreachSql = (list, name, tabName = '', supName = '') => { + list.forEach(item => { + if (item.children) { + if (item.tabName) { + item.children.forEach(cell => { + if (cell.children) { + foreachSql(cell.children, cell.label, item.tabName, name) + } + }) + } else { + foreachSql(item.children, name, tabName, supName) + } + } else if (item.sql) { + sqls.push({uuid: Utils.getuuid() ,label: item.label, name: name, tabName: tabName, supName: supName, sql: item.sql}) + } + }) + } + + this.sqlList.forEach(item => { + if (item.children) { + foreachSql(item.children, item.label) + } + }) + + if (sqls.length === 0) { + Modal.warning({ + title: '褰撳墠鑿滃崟鏃犲彲楠岃瘉鑴氭湰銆�', + okText: '鐭ラ亾浜�' + }) + return + } + + this.verSqls = sqls + let that = this + + let formErrors = [] + if (this.linkMain.length) { + let map = new Map() + if (config.interfaces) { + config.interfaces.forEach(m => { + if (m.status !== 'true' || !m.columns) return false + + map.set(m.uuid, m.columns) + }) + } + + let forEachComs = (components) => { + components.forEach(item => { + if (item.type === 'tabs') { + item.subtabs.forEach(tab => { + forEachComs(tab.components) + }) + } else if (item.type === 'group') { + forEachComs(item.components) + } else if (item.columns && item.columns.length) { + map.set(item.uuid, item.columns) + } + }) + } + + forEachComs(config.components) + + this.linkMain.forEach(item => { + if (item.config.wrap && item.config.wrap.datatype === 'public') return + + let supModule = '' + if (item.config.wrap && item.config.wrap.datatype === 'static') { + supModule = item.config.wrap.supModule ? item.config.wrap.supModule[item.config.wrap.supModule.length - 1] : '' + } else if (item.config.setting && item.config.setting.supModule) { + supModule = item.config.setting.supModule[item.config.setting.supModule.length - 1] || '' + if (supModule === 'empty') { + supModule = '' + } + } + + if (!supModule) return + + let cols = map.get(supModule) + + if (!cols) { + formErrors.push(<div key={item.forms[0].uuid}> + 缁勪欢<span style={{color: '#1890ff', margin: '0 2px 0 2px'}}>{item.config.name}{item.label ? '-' + item.label : ''}</span>涓〃鍗�<span style={{color: 'orange', margin: '0 2px 0 2px'}}>{item.forms.map(c => c.label + ' (' + c.field + ')').join('銆�')}</span>鏃犳晥 + </div>) + } else { + let _forms = [] + let _cols = cols.map(col => col.field.toLowerCase()) + + item.forms.forEach(m => { + if (_cols.includes(m.field.toLowerCase())) return + + _forms.push(m.label + ' (' + m.field + ')') + }) + + if (_forms.length) { + formErrors.push(<div key={item.forms[0].uuid}> + 缁勪欢<span style={{color: '#1890ff', margin: '0 2px 0 2px'}}>{item.config.name}{item.label ? '-' + item.label : ''}</span>涓〃鍗�<span style={{color: 'orange', margin: '0 2px 0 2px'}}>{_forms.join('銆�')}</span>鏃犳晥 + </div>) + } + } + }) + } + + formErrors = formErrors.length ? formErrors : '' + + Modal.confirm({ + content: <div style={{paddingLeft: '38px'}}> + {`褰撳墠鑿滃崟鍏�${this.sqlList.length}涓粍浠讹紝${sqls.length}椤硅剼鏈渶瑕佹楠�${sqls.length > 20 ? '锛屾椂闂村ぇ姒傞渶瑕�' + parseInt(sqls.length / 2) + '绉�' : ''}銆俙} + {formErrors} + </div>, + onOk() { + that.setState({visible: true, status: 'loading', sqlList: fromJS(sqls).toJS(), successIds: [], errorIds: [], errorMsg: {}, execId: ''}, () => { + that.roopSql() + }) + }, + onCancel() {} + }) + + this.sqlList = [] + } + + filterComponent = (components, mainSearch, regs, process, ispop = false) => { + let appType = sessionStorage.getItem('appType') components.forEach(item => { if (item.type === 'tabs') { item.subtabs.forEach(tab => { + if (tab.hide === 'true') return + + let _mainSearch = mainSearch || [] + + if (appType !== 'mob') { + tab.components.forEach(com => { + if (com.type !== 'search') return + + _mainSearch = com.search || [] + }) + } this.filterComponent(tab.components, _mainSearch, regs, process) }) } else if (item.type === 'group') { - this.filterComponent(item.components, _mainSearch, regs, process) + this.filterComponent(item.components, mainSearch, regs, process) } else { let children = [] if (item.wrap && item.setting) { @@ -241,26 +324,34 @@ } if (item.setting && item.setting.interType === 'system') { - let sql = this.formatDataSource(item, regs, _mainSearch) + if (item.format === 'object') { + item.setting.laypage = 'false' + item.setting.$top = true + } + + let sql = this.formatDataSource(item, regs, mainSearch) children.push({label: '鏁版嵁婧�', sql: sql}) } else if (item.setting && item.setting.useMSearch === 'true') { let searches = item.search || [] - if (_mainSearch.length > 0) { - searches = [...searches, ..._mainSearch] + if (mainSearch.length > 0) { + searches = [...searches, ...mainSearch] } item.$searches = fromJS(searches).toJS() } 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 +367,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}) } } }) @@ -293,20 +387,23 @@ getCols(item.cols) if (item.subtype === 'editable' && item.submit.intertype === 'system') { - let sql = this.getEditTableSql(item.submit, item.cols, item.columns) + let sql = this.getEditTableSql(item.submit, item.cols, item.columns, item.setting) children.push({label: '鎻愪氦', sql: sql}) } } else if (item.type === 'card' || item.type === 'carousel' || item.type === 'timeline') { 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 +412,16 @@ card.backElements.forEach(cell => { if (cell.eleType !== 'button' || cell.hidden === 'true') return - let sql = this.resetButton(item, cell, process) + 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 +429,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 +448,27 @@ if (!group.subButton.Ot) { group.subButton.Ot = item.wrap.datatype === 'static' ? 'notRequired' : 'requiredSgl' } - let sql = this.resetButton(item, group.subButton, process, group) - if (sql) { - children.push({label: group.subButton.label, sql: sql}) + if (group.fields) { + let cells = group.fields.filter(cell => cell.type === 'linkMain') + + if (cells.length) { + this.linkMain.push({ + config: item, + forms: cells + }) + } + } + + let res = this.resetButton(item, group.subButton, process, group) + + 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}) + } } }) } @@ -364,15 +484,72 @@ }) } - resetButton = (item, cell, process, group) => { + resetButton = (item, cell, process, group, isback) => { let sql = '' + if (cell.OpenType === 'pop' || (cell.OpenType === 'funcbutton' && cell.execMode === 'pop')) { + if (cell.modal && cell.modal.fields.length) { + let cells = cell.modal.fields.filter(n => n.type === 'linkMain') + + if (cells.length) { + this.linkMain.push({ + config: item, + forms: cells, + label: cell.label + }) + } + } + } if (['exec', 'prompt', 'pop', 'form', 'formSubmit'].includes(cell.OpenType)) { if (cell.intertype === 'system' || cell.procMode === 'system') { // 绯荤粺鎺ュ彛 - sql = this.getSysDefaultSql(cell, item, process, group) + if (item.subtype === 'dualdatacard' && isback) { + let _item = fromJS(item).toJS() + _item.columns = _item.subColumns || [] + _item.setting.primaryKey = _item.setting.subKey + sql = this.getSysDefaultSql(cell, _item, process, group, false) + } else { + 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, cell.cbTable) + + 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(/@typename@/ig, `'typename'`) + backSql = backSql.replace(/@\$|\$@/ig, '').replace(/@datam@/ig, `''`) + } + + if (backSql) { + return { + backSql, + sql + } + } } } else if (cell.OpenType === 'excelIn') { if (cell.intertype === 'system') { - sql = this.getExcelInSql(cell) + sql = this.getExcelInSql(cell, process) } } else if (cell.OpenType === 'excelOut') { if (cell.intertype === 'system' && cell.verify && cell.verify.dataType === 'custom') { @@ -381,6 +558,12 @@ } else if (cell.OpenType === 'funcbutton') { if (cell.funcType === 'print') { + } else if ((cell.funcType === 'refund' || cell.funcType === 'pay') && cell.payMode === 'system') { + sql = this.getPaySql(cell, item) + } + } else if (cell.OpenType === 'innerpage' || cell.OpenType === 'outerpage') { + if (cell.pageTemplate === 'pay' && cell.payMode === 'system') { + sql = this.getPaySql(cell, item) } } else if (cell.OpenType === 'popview') { if (cell.config && cell.config.components) { @@ -392,18 +575,35 @@ { reg: /@\$/ig, value: '' }, { reg: /@datam@/ig, value: `''` }, ] - - if (window.GLOB.externalDatabase !== null) { - regs.push({ - reg: /@db@/ig, - value: window.GLOB.externalDatabase - }) - } if (process) { regs.push({ reg: /@works_flow_code@/ig, value: `'1949-10-01 15:00:00'` }) } - this.filterComponent(cell.config.components, [], regs, process, true) + + let _mainSearch = [] + + if (sessionStorage.getItem('appType') === 'mob') { + cell.config.components.forEach(item => { + if (item.type === 'search' && item.wrap.field) { + _mainSearch.push({ + type: 'text', + label: item.wrap.label, + field: item.wrap.field, + match: item.wrap.match, + required: item.wrap.required, + value: item.wrap.initval || '' + }) + } + }) + } else { + cell.config.components.forEach(component => { + if (component.type !== 'search') return + + _mainSearch = component.search || [] + }) + } + + this.filterComponent(cell.config.components, _mainSearch, regs, process, true) if (this.sqlPopList.length) { sql = fromJS(this.sqlPopList).toJS() @@ -414,13 +614,115 @@ return sql } - getSysDefaultSql = (btn, component, process, group) => { - let primaryId = 'id' - let BID = 'bid' + getSysBackSql = (scripts, cbTable) => { + 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 _back + + 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 + + let content = tb.replace(/(@|#)[a-zA-Z0-9_]+\s+table\s+\(\s*/, '').replace(/\s*\)$/, '') + content = content.replace(/decimal\(\s*\d+\s*,\s*\d+\s*\)/ig, 'decimal') + + let keys = [] + let vals = [] + let error = false + let istop = new RegExp(cbTable + '$', 'ig').test(tbName) + let id = tbName.replace(/@|#/, '') + + content.split(/\s*,\s*/).forEach(m => { + let ms = m.split(/\s+/) + if (ms.length > 1) { + keys.push(ms[0]) + if (/^mk_level$/i.test(ms[0])) { + vals.push(istop ? `'1'` : `'2'`) + } else if (/^mk_id$/i.test(ms[0])) { + vals.push(istop ? `'${cbTable}'` : `'${id}'`) + } else if (/^mk_bid$/i.test(ms[0])) { + vals.push(istop ? `''` : `'${cbTable}'`) + } else 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 = Utils.getuuid() + let BID = Utils.getuuid() let verify = btn.verify || {} let _actionType = null - let setting = component.setting + let setting = component.setting || {} let columns = component.columns || [] + + if (verify.invalid === 'true') { + if (component.wrap && (component.wrap.datatype === 'static' || component.wrap.datatype === 'public')) { + verify.invalid = 'false' + } else if (setting.maxScript && setting.maxScript >= 300) { + verify.invalid = 'false' + } else if (!setting.dataresource) { + verify.invalid = 'false' + } else if (btn.intertype !== 'system' && btn.procMode !== 'system') { + verify.invalid = 'false' + } else if (btn.sqlType === 'insert') { + verify.invalid = 'false' + } else if (btn.Ot === 'notRequired') { + verify.invalid = 'false' + } + } + if (verify.uniques && verify.uniques.length > 0 && btn.Ot === 'requiredOnce') { + if (component.wrap && (component.wrap.datatype === 'static' || component.wrap.datatype === 'public')) { + verify.uniques = [] + } + } if (verify.default !== 'false') { // 鍒ゆ柇鏄惁浣跨敤榛樿sql _actionType = btn.sqlType @@ -483,8 +785,13 @@ _item.type = 'text' } else if (_item.type === 'number' || _item.type === 'rate') { _item.fieldlen = item.decimal || 0 - } else if (_item.type === 'date') { + } else if (_item.type === 'date') { _item.type = item.declareType === 'nvarchar(50)' ? 'text' : 'date' + } else if (_item.type === 'datetime') { + _item.type = 'date' + } else if (item.declare === 'decimal') { + _item.type = 'number' + _item.fieldlen = item.decimal || 0 } formdata.push(_item) @@ -527,8 +834,13 @@ _item.type = 'text' } else if (_item.type === 'number' || _item.type === 'rate') { _item.fieldlen = item.decimal || 0 - } else if (_item.type === 'date') { + } else if (_item.type === 'date') { _item.type = item.declareType === 'nvarchar(50)' ? 'text' : 'date' + } else if (_item.type === 'datetime') { + _item.type = 'date' + } else if (item.declare === 'decimal') { + _item.type = 'number' + _item.fieldlen = item.decimal || 0 } formdata.push(_item) @@ -567,14 +879,16 @@ } else if (form.type === 'rate') { _type = `decimal(18,2)` } + + if (['appkey'].includes(_key)) return _declarefields.push(`@${_key} ${_type}`) } }) // 娣诲姞鏁版嵁涓瓧娈碉紝琛ㄥ崟鍊间紭鍏�(鎸夐挳涓嶉�夎鎴栧琛屾嫾鎺ユ椂璺宠繃) - if (btn.Ot !== 'notRequired' && columns && columns.length > 0) { - const setField = (col) => { + if (btn.Ot !== 'notRequired' && columns.length > 0) { + columns.forEach(col => { if (!col.field) return let _key = col.field.toLowerCase() @@ -590,37 +904,9 @@ } } - if (!_vars.includes(_key)) { + if (!_vars.includes(_key) && !['appkey'].includes(_key)) { _vars.push(_key) - - if (col.datatype) { - _declarefields.push(`@${_key} ${col.datatype}`) - } else { - if (col.fieldlength && col.fieldlength > 4000) { - col.fieldlength = 'max' - } - - let _type = `nvarchar(${col.fieldlength || 50})` - - if (col.type === 'number') { - let _length = col.decimal ? col.decimal : 0 - _type = `decimal(18,${_length})` - } else if (col.type === 'picture' || col.type === 'textarea') { - _type = `nvarchar(${col.fieldlength || 512})` - } - - _declarefields.push(`@${_key} ${_type}`) - } - } - } - - columns.forEach(col => { - if (col.type === 'colspan' || col.type === 'old_colspan') { - col.subcols.forEach(cell => { - setField(cell) - }) - } else { - setField(col) + _declarefields.push(`@${_key} ${col.datatype || 'nvarchar(50)'}`) } }) } @@ -632,7 +918,7 @@ } _sql = `Declare @tbid nvarchar(50),@ErrorCode nvarchar(50),@retmsg nvarchar(4000),@BillCode nvarchar(50),@BVoucher nvarchar(50),@FIBVoucherDate nvarchar(50), @FiYear nvarchar(50),@ModularDetailCode nvarchar(50), @UserName nvarchar(50),@FullName nvarchar(50),@RoleID nvarchar(512),@mk_departmentcode nvarchar(512),@mk_organization nvarchar(512),@mk_user_type nvarchar(20),@mk_nation nvarchar(50),@mk_province nvarchar(50),@mk_city nvarchar(50),@mk_district nvarchar(50),@mk_address nvarchar(100),@mk_deleted int,@bid nvarchar(50)${_declarefields} ` - + let userName = 'User_Name' let fullName = 'Full_Name' let RoleID = 'role_id' @@ -664,6 +950,10 @@ /* 鏄剧ず鍒楀彉閲忚祴鍊� */ select ${_initColfields.join(',')} ` + } + + if (retmsg) { + return _sql } // 鍘婚櫎绂佺敤鐨勯獙璇� @@ -704,37 +994,31 @@ } // 澶辨晥楠岃瘉锛屾坊鍔犳暟鎹椂涓嶇敤 - if (btn.sqlType !== 'insert' && btn.Ot !== 'notRequired' && verify.invalid === 'true' && setting.dataresource) { + if (verify.invalid === 'true') { let datasource = setting.dataresource let customScript = setting.customScript || '' - let orderBy = setting.order + + let regoptions = [{ + reg: new RegExp('@userName@', 'ig'), + value: `'${userName}'` + }, { + reg: new RegExp('@fullName@', 'ig'), + value: `'${fullName}'` + }, { + reg: new RegExp('@orderBy@', 'ig'), + value: setting.order || primaryKey + }, { + reg: new RegExp('@pageSize@', 'ig'), + value: 1 + }, { + reg: new RegExp('@pageIndex@', 'ig'), + value: 1 + }] - if (setting.queryType === 'statistics' || customScript) { - let searches = formatSearch(component.$searches || []) - let regoptions = getSearchRegs(searches) - - regoptions.push({ - reg: new RegExp('@userName@', 'ig'), - value: `'${userName}'` - }, { - reg: new RegExp('@fullName@', 'ig'), - value: `'${fullName}'` - }, { - reg: new RegExp('@orderBy@', 'ig'), - value: orderBy - }, { - reg: new RegExp('@pageSize@', 'ig'), - value: 999999 - }, { - reg: new RegExp('@pageIndex@', 'ig'), - value: 1 - }) - - regoptions.forEach(item => { - datasource = datasource.replace(item.reg, item.value) - customScript = customScript.replace(item.reg, item.value) - }) - } + regoptions.forEach(item => { + datasource = datasource.replace(item.reg, item.value) + customScript = customScript.replace(item.reg, item.value) + }) if (customScript) { _sql += ` @@ -809,7 +1093,6 @@ if (!keys.includes(_key)) return // 琛ㄥ崟涓笉鍚崟鍙风敓鎴愬瓧娈� - let _ModularDetailCode = '' let _lpline = '' if (item.TypeCharOne === 'Lp') { if (_linkKey === 'bid' && BID) { // 鏇挎崲bid @@ -817,33 +1100,22 @@ } else { _lpline = `set @ModularDetailCode= 'Lp'+ right('${item.mark || btn.uuid}'+@${_linkKey},48)` } - _ModularDetailCode = '@ModularDetailCode' } else if (item.TypeCharOne === 'BN') { - let _val = '' if (_linkKey === 'bid' && BID) { // 鏇挎崲bid - _val = BID + _lpline = `set @ModularDetailCode= 'BN'+ right(@BID@,48)` } else { - _val = 0 + _lpline = `set @ModularDetailCode= 'BN'+ right(@${_linkKey},48)` } - _ModularDetailCode = `'${item.TypeCharOne + _val}'` } else { - _ModularDetailCode = `'${item.ModularDetailCode}'` - } - - let _declare = '' - - if (!_vars.includes(_key)) { - _declare = `Declare @${_key} nvarchar(50)` - _vars.push(_key) + _lpline = `set @ModularDetailCode= right('${item.ModularDetailCode}',50)` } _billcodesSql += ` /* 鍗曞彿鐢熸垚 */ - ${_declare} select @BillCode='', @${_key}='', @ModularDetailCode='' ${_lpline} exec s_get_BillCode - @ModularDetailCode=${_ModularDetailCode}, + @ModularDetailCode=@ModularDetailCode, @Type=${item.Type}, @TypeCharOne='${item.TypeCharOne}', @TypeCharTwo ='${item.TypeCharTwo}', @@ -863,6 +1135,17 @@ // 鍞竴鎬ч獙璇侊紝蹇呴』瀛樺湪琛ㄥ崟锛堣〃鍗曞瓨鍦ㄦ椂锛屼富閿潎涓哄崟鍊硷級,蹇呴』濉啓鏁版嵁婧愶紝澶氳鎷兼帴鏃朵笉鍙敤 if (formdata && verify.uniques && verify.uniques.length > 0 && btn.Ot !== 'requiredOnce') { + let dateForms = [] + let numForms = [] + formdata.forEach(form => { + let _key = form.key.toLowerCase() + if (form.type === 'date') { + dateForms.push(_key) + } else if (form.type === 'number' || form.type === 'rate') { + numForms.push(_key) + } + }) + verify.uniques.forEach(item => { let _fieldValue = [] // 琛ㄥ崟閿�煎field=value let _value = [] // 琛ㄥ崟鍊硷紝鐢ㄤ簬閿欒鎻愮ず @@ -872,22 +1155,19 @@ item.field.split(',').forEach((_field, index) => { let _key = _field.toLowerCase() let _val = '' - let _fval = `'${_val}'` + arr.push(_key) if (_key === 'bid') { // 琛ㄥ崟涓病鏈塨id鍒欎娇鐢ㄧ郴缁焍id鍙橀噺 - _fval = '@BID@' + _val = BID + } else if (numForms.includes(_key)) { + _val = '1' + } else if (dateForms.includes(_key)) { + _val = '1949-10-01' } - arr.push(_key) - _fieldValue.push(`${_key}=${_fval}`) - + _fieldValue.push(`${_key}='${_val}'`) _value.push(`${_labels[index] || ''}锛�${_val || ''}`) }) - - let _verifyType = '' - if (item.verifyType === 'logic') { - _verifyType = ' and deleted=0' - } if (!arr.includes(primaryKey.toLowerCase())) { _fieldValue.push(`${primaryKey} !='${primaryId}'`) @@ -896,7 +1176,7 @@ _sql += ` /* 鍞竴鎬ч獙璇� */ select @tbid='', @ErrorCode='',@retmsg='' - select @tbid='X' from ${btn.sql} where ${_fieldValue.join(' and ')}${_verifyType} + select @tbid='X' from ${btn.sql} where ${_fieldValue.join(' and ')}${item.verifyType === 'logic' ? ' and deleted=0' : ''} If @tbid!='' Begin select @ErrorCode='${item.errorCode}',@retmsg='${_value.join(', ')} 宸插瓨鍦�' @@ -1103,7 +1383,7 @@ if (columns && columns.length > 0 && btn.Ot !== 'notRequired') { let _index = 0 columns.forEach(col => { - if (!col.field || col.Hide === 'true' || _index >= 4) return + if (!col.field || col.Hide === 'true' || _index >= 4 || col.field === primaryKey) return _msg += col.label + '=0,' _index++ }) @@ -1141,22 +1421,54 @@ let detailId = '0' if (verify.flowSql === 'true') { - _sql += ` - /* 宸ヤ綔娴侀粯璁ql */ - insert into s_my_works_flow (works_flow_id,works_flow_code,works_flow_name,works_flow_param,status,statusname,work_group,works_flow_detail_id,work_grade,bid,createuserid,CreateUser,CreateStaff,upid) - select @ID@,@works_flow_code@,@works_flow_name@,@works_flow_param@,@status@,@statusname@,@work_group@,@works_flow_detail_id@,@work_grade@,@bid@,@UserID@,@UserName,@FullName,@time_id@ - insert into s_my_works_flow_log (works_flow_id,works_flow_code,works_flow_name,works_flow_param,status,statusname,works_flow_detail_id,work_group,work_grade,upid) - select @ID@,@works_flow_code@,@works_flow_name@ ,@works_flow_param@,@status@,@statusname@,@works_flow_detail_id@,@work_group@,@work_grade@,@time_id@ - insert into s_my_works_flow_notice (works_flow_id,works_flow_code,works_flow_detail_id,userid,notice_type,createuserid,CreateUser,CreateStaff,upid) - select @ID@,@works_flow_code@,@works_flow_detail_id@,@userid@,@start_type@,@userid@,@UserName,@FullName,@time_id@ - ` + if (verify.flowType === 'start') { + _sql += ` + /* 宸ヤ綔娴侀粯璁ql */ + insert into s_my_works_flow (works_flow_id,works_flow_code,works_flow_name,works_flow_param,status,statusname,work_group,works_flow_detail_id,work_grade,bid,createuserid,CreateUser,CreateStaff,upid) + select @ID@,@works_flow_code@,@works_flow_name@,@works_flow_param@,@status@,@statusname@,@work_group@,@works_flow_detail_id@,@work_grade@,@bid@,@UserID@,@UserName,@FullName,@time_id@ + insert into s_my_works_flow_log (works_flow_id,works_flow_code,works_flow_name,works_flow_param,status,statusname,works_flow_detail_id,work_group,work_grade,bid,createuserid,CreateUser,CreateStaff,upid) + select @ID@,@works_flow_code@,@works_flow_name@ ,@works_flow_param@,@status@,@statusname@,@works_flow_detail_id@,@work_group@,@work_grade@,@bid@,@UserID@,@UserName,@FullName,@time_id@ + insert into s_my_works_flow_notice (works_flow_id,works_flow_code,works_flow_detail_id,userid,notice_type,createuserid,CreateUser,CreateStaff,upid) + select @ID@,@works_flow_code@,@works_flow_detail_id@,@userid@,@start_type@,@userid@,@UserName,@FullName,@time_id@ + insert into s_my_works_flow_role (works_flow_id,works_flow_code,userid,works_flow_detail_id,createuserid,CreateUser,CreateStaff,upid,typecharone) + select @ID@,@works_flow_code@,@userid@,@works_flow_detail_id@,@userid@,@UserName,@FullName,@time_id@,'begin' + ` + } else { + _sql += ` + /* 宸ヤ綔娴侀粯璁ql */ + update s_my_works_flow set status=@status@,statusname=@statusname@,works_flow_param=@works_flow_param@,works_flow_detail_id=@works_flow_detail_id@,modifydate=getdate(),upid=@time_id@,modifyuserid=@userid@,modifyuser=@username,modifystaff=@fullname${verify.flowRemark ? ',remark=@' + verify.flowRemark : ''} + where works_flow_id=@ID@ and works_flow_code=@works_flow_code@ and deleted=0 + insert into s_my_works_flow_log (works_flow_id,works_flow_code,works_flow_name,works_flow_param,status,statusname,works_flow_detail_id,work_group,work_grade,bid,createuserid,CreateUser,CreateStaff,upid${verify.flowRemark ? ',remark' : ''}) + select @ID@,@works_flow_code@,@works_flow_name@ ,@works_flow_param@,@status@,@statusname@,@works_flow_detail_id@,@work_group@,@work_grade@,@bid@,@UserID@,@UserName,@FullName,@time_id@${verify.flowRemark ? ',@' + verify.flowRemark : ''} + + update s_my_works_flow_role set deleted=10,modifydate=getdate(),upid=@time_id@,modifyuserid=@userid@,modifyuser=@username,modifystaff=@fullname + where works_flow_id=@ID@ and works_flow_code=@works_flow_code@ and deleted=0 + + if @check_userids@ != '' + begin + insert into s_my_works_flow_role (works_flow_id,works_flow_code,userid,works_flow_detail_id,createuserid,CreateUser,CreateStaff,upid) + select @ID@,@works_flow_code@,ID,@works_flow_detail_id@,@userid@,@UserName,@FullName,@time_id@ from dbo.SplitComma(@check_userids@) + insert into s_my_works_flow_notice (works_flow_id,works_flow_code,works_flow_detail_id,userid,notice_type,createuserid,CreateUser,CreateStaff,upid) + select @ID@,@works_flow_code@,@works_flow_detail_id@,ID,@check_type@,@userid@,@UserName,@FullName,@time_id@ from dbo.SplitComma(@check_userids@) + end + if @notice_userids@ != '' + begin + update n + set deleted=10,modifydate=getdate(),upid=@time_id@,modifyuserid=@userid@,modifyuser=@username,modifystaff=@fullname + from (select * from s_my_works_flow_notice where works_flow_id=@ID@ and works_flow_code=@works_flow_code@ and deleted=0) n + inner join (select ID from dbo.SplitComma(@notice_userids@)) s + on n.userid = s.id + insert into s_my_works_flow_notice (works_flow_id,works_flow_code,works_flow_detail_id,userid,notice_type,createuserid,CreateUser,CreateStaff,upid) + select @ID@,@works_flow_code@,@works_flow_detail_id@,ID,@notice_type@,@userid@,@UserName,@FullName,@time_id@ from dbo.SplitComma(@notice_userids@) + end + ` + } } - - _sql = _sql.replace(/@start_type@/ig, `'寮�濮�'`) - _sql = _sql.replace(/@check_type@/ig, `'瀹℃牳'`) - _sql = _sql.replace(/@notice_type@/ig, `'鎶勯��'`) - _sql = _sql.replace(/@check_userids@/ig, `''`) - _sql = _sql.replace(/@notice_userids@/ig, `''`) + + if (_backCustomScript) { + _sql += _backCustomScript + } + _sql = _sql.replace(/@works_flow_code@/ig, `'mk'`) _sql = _sql.replace(/@works_flow_name@/ig, `'mk'`) _sql = _sql.replace(/@works_flow_param@/ig, `''`) @@ -1165,9 +1477,19 @@ _sql = _sql.replace(/@statusname@/ig, `'${statusName}'`) _sql = _sql.replace(/@work_group@/ig, `'mk'`) _sql = _sql.replace(/@work_grade@/ig, `'0'`) - } - - if (_backCustomScript) { + + if (verify.flowType === 'start') { + _sql = _sql.replace(/@start_type@/ig, `'寮�濮�'`) + } else { + _sql = _sql.replace(/@check_type@/ig, `'瀹℃牳'`) + _sql = _sql.replace(/@notice_type@/ig, `'鎶勯��'`) + + _sql = _sql.replace(/@check_userids@/ig, `''`) + _sql = _sql.replace(/@notice_userids@/ig, `''`) + + _sql = _sql.replace(/@works_flow_sign@/ig, `''`) + } + } else if (_backCustomScript) { _sql += _backCustomScript } @@ -1185,10 +1507,6 @@ _sql = _sql.replace(/@ID@/ig, `'${primaryId || ''}'`) _sql = _sql.replace(/@BID@/ig, `'${BID}'`) - _sql = _sql.replace(/@LoginUID@/ig, `'LoginUID'`) - _sql = _sql.replace(/@SessionUid@/ig, `'SessionUid'`) - _sql = _sql.replace(/@UserID@/ig, `'UserID'`) - _sql = _sql.replace(/@Appkey@/ig, `'appkey'`) _sql = _sql.replace(/@typename@/ig, `'typename'`) _sql = _sql.replace(/@\$|\$@/ig, '').replace(/@datam@/ig, `''`) @@ -1218,19 +1536,8 @@ let sheet = _sheet.replace(/(.*)\.(.*)\./ig, '') database = database ? (database[0] || '') : '' - - let getuuid = () => { - let uuid = [] - let timestamp = new Date().getTime() - let _options = '0123456789abcdefghigklmnopqrstuv' - for (let i = 0; i < 19; i++) { - uuid.push(_options.substr(Math.floor(Math.random() * 0x20), 1)) - } - uuid = timestamp + uuid.join('') - return uuid - } - let upId = getuuid() + let upId = Utils.getuuid() let vals = [] btn.columns.forEach(col => { @@ -1274,21 +1581,11 @@ {reg: new RegExp('(^|\\s)@' + sheet + '(\\s|$)', 'ig'), value: ` #${sheet} `}, {reg: new RegExp('(^|\\s)@' + sheet + '\\(', 'ig'), value: ` #${sheet}(`}, {reg: new RegExp('(^|\\s)@' + sheet + '\\)', 'ig'), value: ` #${sheet})`}, - {reg: /@ID@/ig, value: `'id'`}, - {reg: /@BID@/ig, value: `'bid'`}, - {reg: /@LoginUID@/ig, value: `'LoginUID'`}, - {reg: /@SessionUid@/ig, value: `'SessionUid'`}, - {reg: /@UserID@/ig, value: `'UserID'`}, - {reg: /@Appkey@/ig, value: `'appkey'`}, {reg: /@typename@/ig, value: `'admin'`}, {reg: /\$@/ig, value: ''}, {reg: /@\$/ig, value: ''}, {reg: /@datam@/ig, value: `''`}, ] - - if (window.GLOB.externalDatabase !== null) { - regs.push({reg: /@db@/ig, value: window.GLOB.externalDatabase}) - } btn.scripts && btn.scripts.forEach(script => { if (script.status === 'false') return @@ -1319,17 +1616,54 @@ let _uniquesql = '' if (btn.uniques && btn.uniques.length > 0) { + let textFields = [] + let numberFields = [] + let dateFields = [] + btn.columns.forEach((col) => { + if (/Nvarchar/ig.test(col.type)) { + textFields.push(col.Column) + } else if (/Decimal|int/ig.test(col.type)) { + numberFields.push(col.Column) + } else if (/date/ig.test(col.type)) { + dateFields.push(col.Column) + } + }) btn.uniques.forEach(unique => { if (unique.status === 'false' || !unique.verifyType) return let _fields = unique.field.split(',') let _fields_ = _fields.map(_field => `a.${_field}=b.${_field}`) - let _afields = _fields.map(_field => `a.${_field}`) _fields_ = _fields_.join(' and ') + + let _where = [] + _fields.forEach(f => { + if (textFields.includes(f)) { + _where.push(`${f}!=''`) + } else if (numberFields.includes(f)) { + _where.push(`${f}!=0`) + } else if (dateFields.includes(f)) { + _where.push(`${f}>'1949-10-01'`) + } + }) + _where = _where.length ? `where ${_where.join(' and ')} ` : '' if (unique.verifyType === 'logic' || unique.verifyType === 'logic_temp') { _fields_ += ' and b.deleted=0' } + + let _afields = [] + _fields = _fields.map(f => { + if (numberFields.includes(f)) { + _afields.push(`cast(a.${f} as nvarchar(50))`) + return `cast(${f} as nvarchar(50))` + } else if (dateFields.includes(f)) { + _afields.push(`CONVERT(nvarchar(50), a.${f}, 21)`) + return `CONVERT(nvarchar(50), ${f}, 21)` + } + _afields.push(`a.${f}`) + + return f + }) _uniquesql += ` /* 閲嶅鎬ч獙璇� */ @@ -1343,7 +1677,7 @@ end ${unique.verifyType.indexOf('temp') === -1 ? `Set @tbid='' - Select top 1 @tbid=${_afields.join('+\' \'+')} from #${sheet} a Inner join ${sheet} b on ${_fields_} + Select top 1 @tbid=${_afields.join('+\' \'+')} from ${_where ? `(select * from #${sheet} ${_where})` : `#${sheet}`} a Inner join ${sheet} b on ${_fields_} If @tbid!='' Begin @@ -1379,7 +1713,7 @@ ` } - sql = `create table #${sheet} (${declarefields.join(',')},jskey nvarchar(50),BID nvarchar(50) ) + sql = `create table #${sheet} (${declarefields.join(',')},jskey nvarchar(50),BID nvarchar(50)) Declare @UserName nvarchar(50),@FullName nvarchar(50),@RoleID nvarchar(512),@mk_departmentcode nvarchar(512),@mk_organization nvarchar(512),@mk_user_type nvarchar(20),@mk_nation nvarchar(50),@mk_province nvarchar(50),@mk_city nvarchar(50),@mk_district nvarchar(50),@mk_address nvarchar(100),@ErrorCode nvarchar(50),@retmsg nvarchar(4000),@tbid Nvarchar(512) Select @ErrorCode='', @retmsg='', @UserName='${userName}', @FullName='${fullName}', @RoleID='${RoleID}', @mk_departmentcode='${departmentcode}', @mk_organization='${organization}', @mk_user_type='${mk_user_type}', @mk_nation='${nation}', @mk_province='${province}', @mk_city='${city}', @mk_district='${district}', @mk_address='${address}' @@ -1392,17 +1726,59 @@ ${_uniquesql} ${_prevCustomScript} - ${_insert} - ${_backCustomScript} + ${_insert}` - drop table #${sheet} - - aaa: select @ErrorCode as ErrorCode,@retmsg as retmsg` + if (btn.workFlow === 'true' && process) { + if (btn.flowSql === 'true') { + sql += ` + /* 宸ヤ綔娴侀粯璁ql */ + insert into s_my_works_flow (works_flow_id,works_flow_code,works_flow_name,works_flow_param,status,statusname,work_group,works_flow_detail_id,work_grade,bid,createuserid,CreateUser,CreateStaff,upid) + select jskey,@works_flow_code@,@works_flow_name@,@works_flow_param@,@status@,@statusname@,@work_group@,@works_flow_detail_id@,@work_grade@,@bid@,@UserID@,@UserName,@FullName,@time_id@ + from #${sheet} + + insert into s_my_works_flow_log (works_flow_id,works_flow_code,works_flow_name,works_flow_param,status,statusname,works_flow_detail_id,work_group,work_grade,bid,createuserid,CreateUser,CreateStaff,upid) + select jskey,@works_flow_code@,@works_flow_name@ ,@works_flow_param@,@status@,@statusname@,@works_flow_detail_id@,@work_group@,@work_grade@,@bid@,@UserID@,@UserName,@FullName,@time_id@ + from #${sheet} + + insert into s_my_works_flow_notice (works_flow_id,works_flow_code,works_flow_detail_id,userid,notice_type,createuserid,CreateUser,CreateStaff,upid) + select jskey,@works_flow_code@,@works_flow_detail_id@,@userid@,@start_type@,@userid@,@UserName,@FullName,@time_id@ + from #${sheet} + + insert into s_my_works_flow_role (works_flow_id,works_flow_code,userid,works_flow_detail_id,createuserid,CreateUser,CreateStaff,upid,typecharone) + select jskey,@works_flow_code@,@userid@,@works_flow_detail_id@,@userid@,@UserName,@FullName,@time_id@,'begin' + from #${sheet} + ` + } + + sql += ` + ${_backCustomScript} + + drop table #${sheet} + + aaa: select @ErrorCode as ErrorCode,@retmsg as retmsg` + + sql = sql.replace(/@start_type@/ig, `'寮�濮�'`) + sql = sql.replace(/@works_flow_code@/ig, `'mk'`) + sql = sql.replace(/@works_flow_name@/ig, `'mk'`) + sql = sql.replace(/@works_flow_param@/ig, `''`) + sql = sql.replace(/@works_flow_detail_id@/ig, `'0'`) + sql = sql.replace(/@status@/ig, `'888'`) + sql = sql.replace(/@statusname@/ig, `'缁撴潫'`) + sql = sql.replace(/@work_group@/ig, `'mk'`) + sql = sql.replace(/@work_grade@/ig, `'0'`) + } else { + sql += ` + ${_backCustomScript} + + drop table #${sheet} + + aaa: select @ErrorCode as ErrorCode,@retmsg as retmsg` + } return sql } - getEditTableSql = (verify, cols, columns) => { + getEditTableSql = (verify, cols, columns, setting) => { let btn = verify let userName = sessionStorage.getItem('User_Name') || '' let fullName = sessionStorage.getItem('Full_Name') || '' @@ -1430,30 +1806,46 @@ let vals = [] let forms = [] - let _fields = {} - - columns.forEach(col => { - _fields[col.field] = col.datatype - }) + let _forms = {} + let index = 0 let getColumns = (cols) => { cols.forEach(item => { if (item.type === 'colspan') { getColumns(item.subcols) } else if (item.editable === 'true') { - forms.push({ - field: item.field, - type: item.type, - datatype: _fields[item.field] || 'nvarchar(50)' - }) + item.$sort = index + _forms[item.field] = item + index++ } }) } getColumns(cols) + columns.forEach(item => { + if (item.field === setting.primaryKey) return + + if (_forms[item.field]) { + let _item = {..._forms[item.field]} + if (_item.editType === 'date') { + _item.datatype = _item.declareType || 'datetime' + } else { + _item.datatype = item.datatype + } + + forms.push(_item) + } else { + forms.push({...item, $sort: 999}) + } + }) + + forms.sort((a, b) => a.$sort - b.$sort) + forms.forEach(col => { - if (col.type === 'number') { + if (/date/.test(col.datatype)) { + vals.push(`'1949-10-01'`) + } else if (col.type === 'number') { vals.push(`1`) } else { vals.push(`'mk'`) @@ -1476,20 +1868,11 @@ {reg: new RegExp('(^|\\s)@' + sheet + '(\\s|$)', 'ig'), value: ` #${sheet} `}, {reg: new RegExp('(^|\\s)@' + sheet + '\\(', 'ig'), value: ` #${sheet}(`}, {reg: new RegExp('(^|\\s)@' + sheet + '\\)', 'ig'), value: ` #${sheet})`}, - {reg: /@BID@/ig, value: `'${BID}'`}, - {reg: /@LoginUID@/ig, value: `'${sessionStorage.getItem('LoginUID') || ''}'`}, - {reg: /@SessionUid@/ig, value: `'${localStorage.getItem('SessionUid') || ''}'`}, - {reg: /@UserID@/ig, value: `'${sessionStorage.getItem('UserID') || ''}'`}, - {reg: /@Appkey@/ig, value: `'${window.GLOB.appkey || ''}'`}, {reg: /@typename@/ig, value: `'admin'`}, {reg: /\$@/ig, value: isDM ? '/*' : ''}, {reg: /@\$/ig, value: isDM ? '*/' : ''}, {reg: /@datam@/ig, value: isDM ? `'Y'` : `''`}, ] - - if (window.GLOB.externalDatabase !== null) { - regs.push({reg: /@db@/ig, value: window.GLOB.externalDatabase}) - } btn.scripts && btn.scripts.forEach(script => { if (script.status === 'false') return @@ -1520,17 +1903,54 @@ let _uniquesql = '' if (btn.uniques && btn.uniques.length > 0) { + let textFields = [] + let numberFields = [] + let dateFields = [] + columns.forEach((col) => { + if (/Nvarchar/ig.test(col.datatype)) { + textFields.push(col.field) + } else if (/Decimal|int/ig.test(col.datatype)) { + numberFields.push(col.field) + } else if (/date/ig.test(col.datatype)) { + dateFields.push(col.field) + } + }) btn.uniques.forEach(unique => { if (unique.status === 'false' || !unique.verifyType) return let _fields = unique.field.split(',') let _fields_ = _fields.map(_field => `a.${_field}=b.${_field}`) - let _afields = _fields.map(_field => `a.${_field}`) _fields_ = _fields_.join(' and ') + + let _where = [] + _fields.forEach(f => { + if (textFields.includes(f)) { + _where.push(`${f}!=''`) + } else if (numberFields.includes(f)) { + _where.push(`${f}!=0`) + } else if (dateFields.includes(f)) { + _where.push(`${f}>'1949-10-01'`) + } + }) + _where = _where.length ? `where ${_where.join(' and ')} ` : '' if (unique.verifyType === 'logic' || unique.verifyType === 'logic_temp') { _fields_ += ' and b.deleted=0' } + + let _afields = [] + _fields = _fields.map(f => { + if (numberFields.includes(f)) { + _afields.push(`cast(a.${f} as nvarchar(50))`) + return `cast(${f} as nvarchar(50))` + } else if (dateFields.includes(f)) { + _afields.push(`CONVERT(nvarchar(50), a.${f}, 21)`) + return `CONVERT(nvarchar(50), ${f}, 21)` + } + _afields.push(`a.${f}`) + + return f + }) _uniquesql += ` /* 閲嶅鎬ч獙璇� */ @@ -1544,7 +1964,7 @@ end ${unique.verifyType.indexOf('temp') === -1 ? `Set @tbid='' - Select top 1 @tbid=${_afields.join('+\' \'+')} from #${sheet} a Inner join ${sheet} b on ${_fields_} + Select top 1 @tbid=${_afields.join('+\' \'+')} from ${_where ? `(select * from #${sheet} ${_where})` : `#${sheet}`} a Inner join ${sheet} b on ${_fields_} If @tbid!='' Begin @@ -1577,7 +1997,7 @@ ` } - sql = `create table #${sheet} (${declarefields.join(',')},jskey nvarchar(50),data_type nvarchar(50),BID nvarchar(50) ) + sql = `create table #${sheet} (${declarefields.join(',')},jskey nvarchar(50),data_type nvarchar(50),BID nvarchar(256)) Declare @UserName nvarchar(50),@FullName nvarchar(50),@RoleID nvarchar(512),@mk_departmentcode nvarchar(512),@mk_organization nvarchar(512),@mk_user_type nvarchar(20),@mk_nation nvarchar(50),@mk_province nvarchar(50),@mk_city nvarchar(50),@mk_district nvarchar(50),@mk_address nvarchar(100),@ErrorCode nvarchar(50),@retmsg nvarchar(4000),@tbid Nvarchar(512) Select @ErrorCode='', @retmsg='', @UserName='${userName}', @FullName='${fullName}', @RoleID='${RoleID}', @mk_departmentcode='${departmentcode}', @mk_organization='${organization}', @mk_user_type='${mk_user_type}', @mk_nation='${nation}', @mk_province='${province}', @mk_city='${city}', @mk_district='${district}', @mk_address='${address}' @@ -1603,11 +2023,10 @@ let item = {setting: {}, columns: [], search: []} btn.verify.columns.forEach(col => { - if (col.Column && col.Column !== '$Index') { - item.columns.push({ - field: col.Column - }) - } + if (col.output === 'false' || !col.Column || col.Column === '$Index') return + item.columns.push({ + field: col.Column + }) }) if (btn.verify.useSearch !== 'false') { @@ -1617,10 +2036,14 @@ item.setting.interType = 'system' item.setting.execute = btn.verify.defaultSql || 'true' item.setting.dataresource = btn.verify.dataresource || '' - item.setting.primaryKey = btn.verify.primaryKey || component.setting.primaryKey || 'ID' + item.setting.primaryKey = btn.verify.primaryKey || '' item.setting.queryType = btn.verify.queryType item.setting.laypage = btn.pagination item.setting.order = btn.verify.order || '' + + if (btn.Ot === 'requiredOnce') { + item.setting.primaryKey = btn.verify.primaryKey || component.setting.primaryKey || 'ID' + } item.scripts = btn.verify.scripts || [] @@ -1629,22 +2052,63 @@ { reg: /@\$/ig, value: '' }, { reg: /@datam@/ig, value: `''` }, ] - - if (window.GLOB.externalDatabase !== null) { - regs.push({ - reg: /@db@/ig, - value: window.GLOB.externalDatabase - }) - } let sql = this.formatDataSource(item, regs) return sql } + getPaySql = (btn, component) => { + let sysfields = ['username', 'fullname', 'roleid', 'mk_departmentcode', 'mk_organization', 'mk_user_type', 'mk_nation', 'mk_province', 'mk_city', 'mk_district', 'mk_address', 'tbid', 'bid'] + let _declare = [] + let _select = [] + + component.columns.forEach(_f => { + if (sysfields.includes(_f.field.toLowerCase())) return + + if (/decimal|int/ig.test(_f.datatype)) { + _select.push(`@${_f.field}=1`) + } else if (/date/ig.test(_f.datatype)) { + _select.push(`@${_f.field}='1949-10-01'`) + } else { + _select.push(`@${_f.field}=''`) + } + + _declare.push(`@${_f.field} ${_f.datatype}`) + }) + + _declare = _declare.join(', ') + _select = _select.join(', ') + + let _sql = `Declare @UserName nvarchar(50), @FullName nvarchar(50), @RoleID nvarchar(512), @mk_departmentcode nvarchar(512), @mk_organization nvarchar(512), @mk_user_type nvarchar(20), @mk_nation nvarchar(50), @mk_province nvarchar(50), @mk_city nvarchar(50), @mk_district nvarchar(50), @mk_address nvarchar(100), @ErrorCode nvarchar(50), @retmsg nvarchar(4000), @bid nvarchar(50), @tbid nvarchar(50), ${_declare} + Select @UserName='', @FullName='', @RoleID='', @mk_departmentcode='', @mk_organization='', @mk_user_type='', @mk_nation='', @mk_province='', @mk_city='', @mk_district='', @mk_address='', @ErrorCode='', @retmsg='', @bid='', ${_select} + ` + + btn.verify.scripts.forEach(item => { + if (item.status === 'false') return + + _sql += ` + ${item.sql} + ` + }) + + if (btn.output) { + _sql += ` + aaa: select @ErrorCode as ErrorCode,@retmsg as retmsg,${btn.output} as mk_b_id` + } else { + _sql += ` + aaa: select @ErrorCode as ErrorCode,@retmsg as retmsg` + } + + _sql = _sql.replace(/@typename@/ig, `'typename'`) + _sql = _sql.replace(/@\$|\$@/ig, '').replace(/@datam@/ig, `''`) + + return _sql + } + formatDataSource = (item, regs, mainSearch = []) => { if (!item.setting || item.setting.interType !== 'system') return false - + let searches = item.search || [] if (item.setting.useMSearch === 'true' && mainSearch.length > 0) { searches = [...searches, ...mainSearch] @@ -1652,9 +2116,20 @@ item.$searches = fromJS(searches).toJS() searches = formatSearch(searches) - let _columns = item.columns || [] + let _columns = [] if (item.subtype === 'dualdatacard') { _columns = [...item.columns, ...item.subColumns] + } else if (item.columns) { + _columns = [...item.columns] + } + + if (item.setting.primaryKey) { + let key = item.setting.primaryKey.toLowerCase() + if (_columns.findIndex(cell => cell.field.toLowerCase() === key) === -1) { + _columns.push({ + field: item.setting.primaryKey + }) + } } let arr_field = _columns.map(col => col.field).join(',') @@ -1691,15 +2166,21 @@ item.setting.dataresource = _dataresource item.setting.customScript = _customScript - let custompage = /@pageSize@|@orderBy@/i.test(_dataresource + _customScript) + let custompage = /@pageSize@|@orderBy@|@mk_total/i.test(_dataresource + _customScript) if (_dataresource) { if (custompage) { _dataresource = `/*system_query*/select ${arr_field} from ${_dataresource} ${_search} ` } else if (item.setting.laypage === 'true' && item.setting.order) { _dataresource = `/*system_query*/select top 10 ${arr_field} from (select ${arr_field} ,ROW_NUMBER() over(order by ${item.setting.order}) as rows from ${_dataresource} ${_search}) tmptable where rows > 0 order by tmptable.rows ` + } else if (item.setting.$top) { + if (item.setting.order) { + _dataresource = `/*system_query*/select top 1 ${arr_field} from ${_dataresource} ${_search} order by ${item.setting.order} ` + } else { + _dataresource = `/*system_query*/select top 1 ${arr_field} from ${_dataresource} ${_search} ` + } } else if (item.setting.order) { - _dataresource = `/*system_query*/select ${arr_field} from (select ${arr_field} ,ROW_NUMBER() over(order by ${item.setting.order}) as rows from ${_dataresource} ${_search}) tmptable order by tmptable.rows ` + _dataresource = `/*system_query*/select ${arr_field} from ${_dataresource} ${_search} order by ${item.setting.order} ` } else { _dataresource = `/*system_query*/select ${arr_field} from ${_dataresource} ${_search} ` } @@ -1707,24 +2188,27 @@ let sql = '' if (_customScript) { - sql = `declare @ErrorCode nvarchar(50),@retmsg nvarchar(4000),@UserName nvarchar(50),@FullName nvarchar(50),@RoleID nvarchar(512),@mk_departmentcode nvarchar(512),@mk_organization nvarchar(512),@mk_user_type nvarchar(20),@mk_nation nvarchar(50),@mk_province nvarchar(50),@mk_city nvarchar(50),@mk_district nvarchar(50),@mk_address nvarchar(100) select @ErrorCode='',@retmsg ='' + sql = `declare @ErrorCode nvarchar(50),@retmsg nvarchar(4000),@UserName nvarchar(50),@FullName nvarchar(50),@RoleID nvarchar(512),@mk_departmentcode nvarchar(512),@mk_organization nvarchar(512),@mk_user_type nvarchar(20),@mk_nation nvarchar(50),@mk_province nvarchar(50),@mk_city nvarchar(50),@mk_district nvarchar(50),@mk_address nvarchar(100) + select @ErrorCode='',@retmsg ='',@UserName='', @FullName='', @RoleID='', @mk_departmentcode='', @mk_organization='', @mk_user_type='', @mk_nation='', @mk_province='', @mk_city='', @mk_district='', @mk_address='' ${_customScript} ${_dataresource} ${_tailScript} aaa: if @ErrorCode!='' - insert into tmp_err_retmsg (ID, ErrorCode, retmsg, CreateUserID) select '1949-10-01 15:00:00',@ErrorCode, @retmsg,'1949-10-01 15:00:00' + insert into tmp_err_retmsg (ID, ErrorCode, retmsg, CreateUserID) select @time_id@,@ErrorCode, @retmsg,'1949-10-01 15:00:00' ` } else if (_tailScript) { - sql = `declare @ErrorCode nvarchar(50),@retmsg nvarchar(4000),@UserName nvarchar(50),@FullName nvarchar(50),@RoleID nvarchar(512),@mk_departmentcode nvarchar(512),@mk_organization nvarchar(512),@mk_user_type nvarchar(20),@mk_nation nvarchar(50),@mk_province nvarchar(50),@mk_city nvarchar(50),@mk_district nvarchar(50),@mk_address nvarchar(100) select @ErrorCode='',@retmsg ='' + sql = `declare @ErrorCode nvarchar(50),@retmsg nvarchar(4000),@UserName nvarchar(50),@FullName nvarchar(50),@RoleID nvarchar(512),@mk_departmentcode nvarchar(512),@mk_organization nvarchar(512),@mk_user_type nvarchar(20),@mk_nation nvarchar(50),@mk_province nvarchar(50),@mk_city nvarchar(50),@mk_district nvarchar(50),@mk_address nvarchar(100) + select @ErrorCode='',@retmsg ='',@UserName='', @FullName='', @RoleID='', @mk_departmentcode='', @mk_organization='', @mk_user_type='', @mk_nation='', @mk_province='', @mk_city='', @mk_district='', @mk_address='' ${_dataresource} ${_tailScript} aaa: if @ErrorCode!='' - insert into tmp_err_retmsg (ID, ErrorCode, retmsg, CreateUserID) select '1949-10-01 15:00:00',@ErrorCode, @retmsg,'1949-10-01 15:00:00' + insert into tmp_err_retmsg (ID, ErrorCode, retmsg, CreateUserID) select @time_id@,@ErrorCode, @retmsg,'1949-10-01 15:00:00' ` } else { - sql = `declare @ErrorCode nvarchar(50),@retmsg nvarchar(4000),@UserName nvarchar(50),@FullName nvarchar(50),@RoleID nvarchar(512),@mk_departmentcode nvarchar(512),@mk_organization nvarchar(512),@mk_user_type nvarchar(20),@mk_nation nvarchar(50),@mk_province nvarchar(50),@mk_city nvarchar(50),@mk_district nvarchar(50),@mk_address nvarchar(100) select @ErrorCode='',@retmsg ='' + sql = `declare @ErrorCode nvarchar(50),@retmsg nvarchar(4000),@UserName nvarchar(50),@FullName nvarchar(50),@RoleID nvarchar(512),@mk_departmentcode nvarchar(512),@mk_organization nvarchar(512),@mk_user_type nvarchar(20),@mk_nation nvarchar(50),@mk_province nvarchar(50),@mk_city nvarchar(50),@mk_district nvarchar(50),@mk_address nvarchar(100) + select @ErrorCode='',@retmsg ='',@UserName='', @FullName='', @RoleID='', @mk_departmentcode='', @mk_organization='', @mk_user_type='', @mk_nation='', @mk_province='', @mk_city='', @mk_district='', @mk_address='' ${_dataresource}` } @@ -1737,17 +2221,20 @@ { reg: /@orderBy@/ig, value: item.setting.order || '' }, { reg: /@pageSize@/ig, value: 9999 }, { reg: /@pageIndex@/ig, value: 1}, - { reg: /@ID@/ig, value: `''`}, - { reg: /@BID@/ig, value: `''`}, - { reg: /@LoginUID@/ig, value: `'${sessionStorage.getItem('LoginUID') || ''}'`}, - { reg: /@SessionUid@/ig, value: `'${localStorage.getItem('SessionUid') || ''}'`}, - { reg: /@UserID@/ig, value: `'${sessionStorage.getItem('UserID') || ''}'`}, - { reg: /@Appkey@/ig, value: `'${window.GLOB.appkey || ''}'`}, { reg: /@typename@/ig, value: `'admin'`}, ) + if (item.hasExtend) { + regoptions.push({reg: /@mk_time@/ig, value: `'2024-04-29 17:20:00'`}) + } if (item.type === 'calendar') { - regoptions.push({ reg: /@mk_year@/ig, value: '2023' }) + regoptions.push({ reg: /@mk_year@/ig, value: `'2024'` }) + } + if (window.GLOB.getLocation) { + regoptions.push( + {reg: /@mk_longitude@/ig, value: 0}, + {reg: /@mk_latitude@/ig, value: 0} + ) } regoptions.forEach(cell => { @@ -1775,7 +2262,7 @@ this.setState({status: this.verSqls.length > 0 ? 'loading' : 'over', execId: item.uuid}) - console.info(`/* 缁勪欢锛�${item.name} 妫�楠岄」锛�${item.label} */`) + window.mkInfo(`/* 缁勪欢锛�${item.name} 妫�楠岄」锛�${item.label} */`) Api.sDebug(item.sql).then(result => { if (result.status || result.ErrCode === '-2') { @@ -1827,14 +2314,6 @@ destroyOnClose > <div className="mk-sql-wrap"> - {/* <div className="header"> - <div className="sql-item"> - <div className="sql-1">缁勪欢</div> - <div className="sql-2">妫�楠岄」</div> - <div className="sql-3">鍏朵粬</div> - <div className="sql-4">鐘舵��</div> - </div> - </div> */} <div className="body"> {sqlList.map(item => { let other = '' -- Gitblit v1.8.0