From 4d6b9f8a2d7b316633e43b489eae9ada949c07b5 Mon Sep 17 00:00:00 2001 From: king <18310653075@163.com> Date: 星期二, 10 九月 2024 10:18:08 +0800 Subject: [PATCH] Merge branch 'master' into positec --- src/tabviews/zshare/actionList/normalbutton/index.jsx | 649 +++++++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 files changed, 612 insertions(+), 37 deletions(-) diff --git a/src/tabviews/zshare/actionList/normalbutton/index.jsx b/src/tabviews/zshare/actionList/normalbutton/index.jsx index 47e76c9..7eb4679 100644 --- a/src/tabviews/zshare/actionList/normalbutton/index.jsx +++ b/src/tabviews/zshare/actionList/normalbutton/index.jsx @@ -307,16 +307,16 @@ } } - if (window.GLOB.systemType === 'production') { - let _change = { - prompt: '鎻愮ず妗�', - exec: '鐩存帴鎵ц', - pop: '寮圭獥锛堣〃鍗曪級', - formSubmit: '琛ㄥ崟', - form: '琛ㄥ崟', - } - MKEmitter.emit('queryTrigger', {menuId: btn.uuid, name: _change[btn.OpenType]}) - } + // if (window.GLOB.systemType === 'production') { + // let _change = { + // prompt: '鎻愮ず妗�', + // exec: '鐩存帴鎵ц', + // pop: '寮圭獥锛堣〃鍗曪級', + // formSubmit: '琛ㄥ崟', + // form: '琛ㄥ崟', + // } + // MKEmitter.emit('queryTrigger', {menuId: btn.uuid, name: _change[btn.OpenType]}) + // } } preTrigger = (callback) => { @@ -458,8 +458,8 @@ let primaryId = '' - if ((btn.Ot === 'requiredSgl' || btn.Ot === 'requiredOnce') && setting.primaryKey) { - let ids = data.map(d => { return d[setting.primaryKey] || ''}) + if (btn.Ot === 'requiredSgl' || btn.Ot === 'requiredOnce') { + let ids = data.map(d => d.$$uuid) ids = ids.filter(Boolean) primaryId = ids.join(',') } @@ -492,16 +492,7 @@ param.LText = Utils.formatOptions(param.LText, param.exec_type) } else if (btn.OpenType === 'pop' || btn.OpenType === 'formSubmit' || btn.OpenType === 'form') { // 琛ㄥ崟 if (btn.sqlType === 'insert') { // 绯荤粺鍑芥暟娣诲姞鏃讹紝鐢熸垚uuid - primaryId = '' - - if (formdata && setting.primaryKey) { // 琛ㄥ崟涓瓨鍦ㄤ富閿瓧娈碉紝涓婚敭鍊间互琛ㄥ崟涓殑鍊间负鍑� - let _form = formdata.filter(_form => _form.key === setting.primaryKey)[0] - if (_form) { - primaryId = _form.value - } - } - - param.ID = primaryId || Utils.getguid() + param.ID = Utils.getguid() if (retmsg) { const { sql, callbacksql } = getSysDefaultSql(btn, setting, formdata, param, data[0], columns, retmsg) // 鏁版嵁婧� @@ -717,6 +708,463 @@ return _params } + getBackSystemParam = (data, formdata) => { + const { btn } = this.props + + let ex = window.GLOB.CacheData.get('sql_' + btn.uuid) + let _params = [] + + if (btn.Ot === 'notRequired' || btn.Ot === 'requiredSgl' || btn.Ot === 'requiredOnce') { + let primaryId = '' + let cell = null + + if (btn.Ot === 'requiredSgl' || btn.Ot === 'requiredOnce') { + primaryId = data.map(d => d.$$uuid).filter(Boolean).join(',') + cell = data[0] + } + + if (btn.OpenType === 'pop' || btn.OpenType === 'formSubmit' || btn.OpenType === 'form') { // 琛ㄥ崟 + if (btn.sqlType === 'insert') { // 绯荤粺鍑芥暟娣诲姞鏃讹紝鐢熸垚uuid + primaryId = Utils.getguid() + } + } + + let exp = this.getExps(ex, formdata, cell, primaryId, btn.$process) + + if (ex.reps.includes('mk_check_begin')) { + exp.$unCheckParam = fromJS(exp).toJS() + + exp.data[0].exps.push({ + key: 'mk_check_begin', + value: '' + }, { + key: 'mk_check_end', + value: '' + }) + exp.$unCheckParam.data[0].exps.push({ + key: 'mk_check_begin', + value: 'Y' + }, { + key: 'mk_check_end', + value: 'Y' + }) + } else if (btn.procMode === 'system' && btn.callbackType === 'script') { + let _backex = window.GLOB.CacheData.get('sql_back_' + btn.uuid) + exp.$backParam = this.getExps(_backex, formdata, cell, primaryId) + } + + _params.push(exp) + } else if (btn.Ot === 'required') { + _params = data.map((cell, index) => { + let primaryId = cell.$$uuid || '' + + if (btn.OpenType === 'pop') { // 琛ㄥ崟 + if (index !== 0) { + let _cell = {} + Object.keys(cell).forEach(key => { + _cell[key.toLowerCase()] = cell[key] + }) + formdata = formdata.map(_data => { + if (_data.readin && _cell.hasOwnProperty(_data.key.toLowerCase())) { + _data.value = _cell[_data.key.toLowerCase()] + } + return _data + }) + } + + if (btn.sqlType === 'insert') { // 绯荤粺鍑芥暟娣诲姞鏃讹紝鐢熸垚uuid + primaryId = Utils.getguid() + } + } + let exp = this.getExps(ex, formdata, cell, primaryId, btn.$process) + if (ex.reps.includes('mk_check_begin')) { + exp.$unCheckParam = fromJS(exp).toJS() + + exp.data[0].exps.push({ + key: 'mk_check_begin', + value: '' + }, { + key: 'mk_check_end', + value: '' + }) + exp.$unCheckParam.data[0].exps.push({ + key: 'mk_check_begin', + value: 'Y' + }, { + key: 'mk_check_end', + value: 'Y' + }) + } else if (btn.procMode === 'system' && btn.callbackType === 'script') { + let _backex = window.GLOB.CacheData.get('sql_back_' + btn.uuid) + exp.$backParam = this.getExps(_backex, formdata, cell, primaryId) + } + + return exp + }) + } + + return _params + } + + getExps = (ex, formdata, cell, id, process) => { + const { columns, BID, btn } = this.props + let exps = [] + let values = { + time_id: Utils.getguid(), + roleid: sessionStorage.getItem('role_id') || '', + mk_departmentcode: sessionStorage.getItem('departmentcode') || '', + mk_organization: sessionStorage.getItem('organization') || '', + mk_user_type: sessionStorage.getItem('mk_user_type') || '', + mk_nation: sessionStorage.getItem('nation') || '', + mk_province: sessionStorage.getItem('province') || '', + mk_city: sessionStorage.getItem('city') || '', + mk_district: sessionStorage.getItem('district') || '', + mk_address: sessionStorage.getItem('address') || '', + id: id || '', + bid: BID || '', + typename: 'admin', + datam: sessionStorage.getItem('dataM') === 'true' ? 'Y' : '', + datam_begin: sessionStorage.getItem('dataM') === 'true' ? 'Y' : '', + datam_end: sessionStorage.getItem('dataM') === 'true' ? 'Y' : '', + // mk_check_begin: '', + // mk_check_end: '' + } + + if (window.GLOB.externalDatabase !== null) { + values.db = window.GLOB.externalDatabase + } + + let formkeys = [] + formdata && formdata.forEach(form => { + if (!ex.reps.includes(form.key)) return + + formkeys.push(form.key) + + let val = form.value + if (form.type === 'number' || form.type === 'rate') { + if (isNaN(val)) { + val = 0 + } + } else if (['date', 'datemonth'].includes(form.type)) { + val = val || '1949-10-01' + } + + exps.push({ + key: 'mk_' + form.key + '_mk', + value: val + }) + }) + + if (cell && columns && columns.length > 0) { + let datavars = {} + + Object.keys(cell).forEach(key => { + datavars[key.toLowerCase()] = cell[key] + }) + + columns.forEach(col => { + if (!ex.reps.includes(col.field) || formkeys.includes(col.field)) return + if (!col.datatype) return + + let _key = col.field.toLowerCase() + let _val = datavars.hasOwnProperty(_key) ? datavars[_key] : '' + + if (/^date/ig.test(col.datatype) && !_val) { + _val = '1949-10-01' + } + + exps.push({ + key: 'mk_' + col.field + '_mk', + value: _val + }) + }) + } + + ex.reps.forEach(n => { + let key = n.toLowerCase() + if (values.hasOwnProperty(key)) { + exps.push({ + key: n, + value: values[key] + }) + } + }) + + if (process && btn.verify.workFlow === 'true') { + let flow = window.GLOB.UserCacheMap.get(btn.$flowId) + let node = null + let line = null + let target = null + let status = 0 + let statusName = '' + let detailId = '' + let sign = '' + let error = '' + let userid = sessionStorage.getItem('UserID') || '' + let checkIds = [] + let checkUsers = [] + let noticeIds = [] + let work_grade = sessionStorage.getItem('work_grade') || 0 + let departmentcode = sessionStorage.getItem('departmentcode') || '' + let _data = cell || {} + let msg = '' + + if (btn.verify.flowType === 'start') { + target = flow ? flow.cells.filter(cell => cell.mknode === 'start')[0] : '' + + if (target) { + detailId = target.id + status = target.mkdata.status + statusName = target.mkdata.statusName + } else { + error = '宸ヤ綔娴佹棤寮�濮嬭妭鐐�' + } + } else if (_data.works_flow_param) { + try { + node = JSON.parse(window.decodeURIComponent(window.atob(_data.works_flow_param))) + } catch (e) { + node = null + } + + if (node) { + let lines = flow ? flow.cells.filter(cell => cell.shape === 'edge' && cell.source.cell === node.id) : [] + if (btn.verify.flowType === 'reject') { + line = lines.filter(cell => cell.mkdata.flowType === 'reject' || cell.mknode === 'startEdge')[0] + } else { + lines = lines.filter(cell => cell.mkdata.flowType !== 'reject' && cell.mknode !== 'startEdge') + + if (lines.length === 0) { + error = '鏃犲彲鎵ц鐨勬祦绋嬪垎鏀�' + } else { + let branchKey = btn.verify.flowBranch ? btn.verify.flowBranch.toLowerCase() : '' + + formdata && formdata.forEach(form => { + let _key = form.key.toLowerCase() + _data[_key] = form.value + }) + + if (!branchKey) { + lines.forEach(line => { + if (line.mkdata.execCondition === 'open') { + error = '鎸夐挳鏈缃祦绋嬫帶鍒跺瓧娈点��' + } + }) + if (!error) { + lines = lines.filter(cell => { + if (cell.mkdata.seniorCondition === 'open' && !line) { + cell.mkdata.seniorbers && cell.mkdata.seniorbers.forEach(per => { + if (per.worker_id === userid) { + line = cell + } + }) + return false + } + return true + }) + + if (!line) { + line = lines[0] + } + } + } else if (!_data.hasOwnProperty(branchKey)) { + error = '淇℃伅涓棤娴佺▼鎺у埗瀛楁銆�' + } else { + let _def_lines = [] + let _equ_lines = [] + let _unequ_lines = [] + let _or_lines = [] + let branchVal = _data[branchKey] + + if (branchVal && typeof(branchVal) === 'string' && !isNaN(branchVal)) { + branchVal = +branchVal + } + + lines.forEach(item => { + if (item.mkdata.execCondition !== 'open') { + _def_lines.push(item) + } else { + if (item.mkdata.match === '=') { + if (item.mkdata.matchVal === branchVal + '') { + _equ_lines.push(item) + } + } else if (item.mkdata.match === '!=') { + if (item.mkdata.matchVal !== branchVal + '') { + _unequ_lines.push(item) + } + } else { + if (item.mkdata.match === '<') { + if (item.mkdata.matchVal < branchVal) { + _or_lines.push({...item, dist: Math.abs(item.mkdata.matchVal - branchVal)}) + } + } else if (item.mkdata.match === '>') { + if (item.mkdata.matchVal > branchVal) { + _or_lines.push({...item, dist: Math.abs(item.mkdata.matchVal - branchVal)}) + } + } else if (item.mkdata.match === '<=') { + if (item.mkdata.matchVal <= branchVal) { + _or_lines.push({...item, dist: Math.abs(item.mkdata.matchVal - branchVal)}) + } + } else if (item.mkdata.match === '>=') { + if (item.mkdata.matchVal >= branchVal) { + _or_lines.push({...item, dist: Math.abs(item.mkdata.matchVal - branchVal)}) + } + } + } + } + }) + + _or_lines.sort((a, b) => a.dist - b.dist) + + let _lines = [..._equ_lines, ..._or_lines, ..._unequ_lines, ..._def_lines] + + _lines = _lines.filter(cell => { + if (cell.mkdata.seniorCondition === 'open' && !line) { + cell.mkdata.seniorbers && cell.mkdata.seniorbers.forEach(per => { + if (per.worker_id === userid) { + line = cell + } + }) + return false + } + return true + }) + + if (!line) { + line = _lines[0] + } + } + } + } + } else { + error = '琛屼俊鎭腑宸ヤ綔娴佸弬鏁版棤娉曡В鏋�' + } + + if (line) { + detailId = line.id + status = line.mkdata.status + statusName = line.mkdata.statusName + sign = line.mkdata.seniorSign || '' + target = flow.cells.filter(cell => cell.id === line.target.cell)[0] + + line.mkdata.members && line.mkdata.members.forEach(item => { + if (line.mkdata.approver === 'departmentManager') { + if (item.job_type === 'manage' && departmentcode === item.parentIds[1]) { + checkIds.push(item.worker_id) + checkUsers.push(item) + } + } else if (line.mkdata.approver === 'directManager') { + if (departmentcode === item.parentIds[1] && item.work_grade > work_grade) { + checkIds.push(item.worker_id) + checkUsers.push(item) + } + } else { + checkIds.push(item.worker_id) + checkUsers.push(item) + } + }) + line.mkdata.copys && line.mkdata.copys.forEach(item => { + noticeIds.push(item.worker_id) + }) + + if (!target) { + error = '鏈煡璇㈠埌宸ヤ綔娴佺洰鏍囪妭鐐�' + } else if (checkIds.length === 0 && !['startEdge', 'endEdge', 'throughEdge'].includes(line.mknode)) { + error = '鏈幏鍙栧埌涓嬩竴姝ュ鎵逛汉' + } else if (line.approvalMethod === 'countersign' && (!node.checkIds || !node.checkIds.includes(userid))) { + error = '褰撳墠鐢ㄦ埛涓嶅湪瀹℃壒浜哄垪琛ㄤ腑' + } + } else if (!error) { + error = '宸ヤ綔娴佷腑鏃犲搴旀祦绋�' + } + } else { + error = '琛屼俊鎭腑鏃犲伐浣滄祦鍙傛暟' + } + + if (error) { + status = 0 + statusName = '寮傚父' + } else if (target) { + let label = target.attrs && target.attrs.text && target.attrs.text.text ? target.attrs.text.text : '' + msg = {...target.mkdata, label: label, id: target.id, checkIds: [], checkUsers: []} + msg = window.btoa(window.encodeURIComponent(JSON.stringify(msg))) + } + + if (btn.verify.flowType === 'start') { + exps.push( + { key: 'works_flow_error', value: error }, + { key: 'works_flow_code', value: flow ? flow.flow_code : '' }, + { key: 'works_flow_name', value: flow ? flow.flow_name : '' }, + { key: 'works_flow_param', value: msg }, + { key: 'works_flow_detail_id', value: detailId }, + { key: 'status', value: status }, + { key: 'statusname', value: statusName }, + { key: 'work_group', value: sessionStorage.getItem('work_group') || '' }, + { key: 'work_grade', value: sessionStorage.getItem('work_grade') || 0 }, + // { key: 'start_type', value: '寮�濮�' }, + ) + } else { + let works_flow_countersign = '' + let works_flow_sign_values = '' + let works_flow_sign_field = '' + let works_flow_sign_label = '' + let works_begin_branch = '' + if (line.approvalMethod === 'countersign' && node.checkIds.length > 1) { + works_flow_countersign = 'Y' + let mark = line.mark || '宸插鏍�' + let fields = ['statuscharone', 'statuschartwo', 'statuscharthree', 'statuscharfour', 'statuscharfive'] + node.checkUsers.forEach((user, index) => { + if (user.worker_id === userid) { + works_flow_sign_field = fields[index] + works_flow_sign_label = `${user.parentNames[2] || ''}${user.workername || ''}${mark}` + } else { + works_flow_sign_values += `${user.parentNames[2] || ''}${user.workername || ''}${mark}` + } + }) + } else { + works_begin_branch = line.mknode === 'startEdge' ? 'Y' : '' + } + + exps.push( + { key: 'works_flow_error', value: error }, + { key: 'works_flow_countersign', value: works_flow_countersign }, + { key: 'works_flow_sign_values', value: works_flow_sign_values }, + { key: 'works_begin_branch', value: works_begin_branch }, + { key: 'works_flow_sign_field', value: works_flow_sign_field }, + { key: 'works_flow_sign_label', value: works_flow_sign_label }, + { key: 'works_flow_code', value: flow ? flow.flow_code : '' }, + { key: 'works_flow_name', value: flow ? flow.flow_name : '' }, + { key: 'works_flow_param', value: msg }, + { key: 'works_flow_detail_id', value: detailId }, + { key: 'status', value: status }, + { key: 'statusname', value: statusName }, + { key: 'work_group', value: sessionStorage.getItem('work_group') || '' }, + { key: 'work_grade', value: sessionStorage.getItem('work_grade') || 0 }, + // { key: 'check_type', value: btn.verify.flowType === 'reject' ? '椹冲洖' : '瀹℃牳' }, + // { key: 'notice_type', value: '鎶勯��' }, + { key: 'check_userids', value: checkIds.join(',') }, + { key: 'notice_userids', value: noticeIds.join(',') }, + { key: 'works_flow_sign', value: sign }, + ) + } + } + + let md5_id = '' + if (window.GLOB.probation) { + md5_id = md5(ex.id + JSON.stringify(exps) + Math.floor(new Date().getTime() / 600000)) + md5_id = moment().format('YYYYMMDDHHmmss') + md5_id.slice(-18) + } + + return { + $backend: true, + data: [{ + id: ex.id, + exps: exps, + menuname: btn.logLabel || '', + md5_id: md5_id + }] + } + } + getInnerParam = (data, formdata, retmsg) => { const { setting, btn, columns } = this.props let _params = [] @@ -743,7 +1191,7 @@ let primaryId = '' if ((btn.Ot === 'requiredSgl' || btn.Ot === 'requiredOnce') && setting.primaryKey) { - let ids = data.map(d => { return d[setting.primaryKey] || ''}) + let ids = data.map(d => d.$$uuid) ids = ids.filter(Boolean) primaryId = ids.join(',') @@ -762,7 +1210,10 @@ param.open_key = Utils.encryptOpenKey(param.secretkey, param.timestamp) } - if (retmsg) { + if (btn.callbackType === 'script' && window.backend && window.GLOB.CacheData.has('sql_back_' + btn.uuid)) { + let _backex = window.GLOB.CacheData.get('sql_back_' + btn.uuid) + param.$backParam = this.getExps(_backex, formdata, data[0], primaryId) + } else if (retmsg) { param.$callbacksql = this.getSysDeclareSql(btn, formdata, data[0], columns, this.props.BID) } @@ -785,7 +1236,7 @@ param.dataM = sessionStorage.getItem('dataM') === 'true' ? 'Y' : '' } - let primaryId = setting.primaryKey ? cell[setting.primaryKey] || '' : '' + let primaryId = cell.$$uuid || '' if (btn.OpenType === 'pop') { // 琛ㄥ崟 if (index !== 0) { @@ -815,7 +1266,10 @@ param.open_key = Utils.encryptOpenKey(param.secretkey, param.timestamp) } - if (retmsg) { + if (btn.callbackType === 'script' && window.backend && window.GLOB.CacheData.has('sql_back_' + btn.uuid)) { + let _backex = window.GLOB.CacheData.get('sql_back_' + btn.uuid) + param.$backParam = this.getExps(_backex, formdata, cell, primaryId) + } else if (retmsg) { param.$callbacksql = this.getSysDeclareSql(btn, formdata, cell, columns, this.props.BID) } @@ -1066,7 +1520,9 @@ if (btn.intertype === 'system' || btn.intertype === 'inner') { // 绯荤粺鎺ュ彛 let params = [] - if (btn.intertype === 'system') { + if (btn.intertype === 'system' && window.backend && window.GLOB.CacheData.has('sql_' + btn.uuid)) { + params = this.getBackSystemParam(data, formdata) + } else if (btn.intertype === 'system') { params = this.getSystemParam(data, formdata) if (btn.returnValue === 'true') { params = params.map(item => { @@ -1173,7 +1629,9 @@ /** *********************璋冪敤澶栭儴鎺ュ彛************************* */ let _params = [] // 璇锋眰鍙傛暟鏁扮粍 - if (btn.procMode === 'system') { + if (btn.procMode === 'system' && window.backend && window.GLOB.CacheData.has('sql_' + btn.uuid)) { + _params = this.getBackSystemParam(data, formdata) + } else if (btn.procMode === 'system') { _params = this.getSystemParam(data, formdata, true) _params = _params.map(item => { item.script_type = 'Y' @@ -1194,7 +1652,9 @@ } else if (btn.intertype === 'custom') { // 绯荤粺鎺ュ彛 let params = [] - if (btn.procMode === 'system') { + if (btn.procMode === 'system' && window.backend && window.GLOB.CacheData.has('sql_' + btn.uuid)) { + params = this.getBackSystemParam(data, formdata) + } else if (btn.procMode === 'system') { params = this.getSystemParam(data, formdata, true) params = params.map(item => { item.script_type = 'Y' @@ -1230,13 +1690,15 @@ BID: param.BID || '', ID: param.ID || '', callbacksql: param.$callbacksql || '', - mk_api_key: '' + mk_api_key: '', + backParam: param.$backParam || '' } if (!record.ID && btn.Ot !== 'notRequired' && param[setting.primaryKey]) { record.ID = param[setting.primaryKey] } + delete param.$backParam delete param.$callbacksql if (param.$pice) { @@ -1246,7 +1708,7 @@ this.customOuterRequest(params, param, record, _resolve) return - } else if (!param.func) { + } else if (!param.func && !param.$backend) { this.customOuterRequest(params, param, record, _resolve) return } @@ -1457,6 +1919,8 @@ _resolve() } return + } else if (btn.callbackType === 'script' && record.backParam) { + param = this.getCallBackendParam(result, record) } else if (btn.callbackType === 'script' || btn.callbackType === 'default') { param = this.getCallBackSql(result, record) } else if (btn.callbackType === 'func') { @@ -1520,6 +1984,108 @@ }) } + getCallBackendParam = (result, record) => { + const { btn } = this.props + let lines = [] + let tables = [] + let param = fromJS(record.backParam).toJS() + + btn.verify.cbScripts.forEach(script => { + if (script.status === 'false') return + + if (/\s#[a-z0-9_]+(\s|\()/ig.test(script.sql)) { + tables.push(...script.sql.match(/\s#[a-z0-9_]+(\s|\()/ig)) + } + }) + + tables = tables.map(tb => tb.replace(/\s|\(/g, '')) + + if (result.$ErrCode) { + delete result.$ErrCode + delete result.$ErrMesg + } + + let getDefaultSql = (obj, tb, bid, level) => { + let vals = {} + let subObjs = [] + let id = Utils.getuuid() + + delete obj.$$key + + Object.keys(obj).forEach(key => { + let val = obj[key] + if (val === null || val === undefined) return + if (typeof(val) === 'object') { + if (Array.isArray(val)) { + val.forEach(item => { + if (typeof(item) !== 'object' || Array.isArray(item)) return + if (Object.keys(item).length === 0) return + + Object.keys(item).forEach(k => { + if (item[k] === null) { + item[k] = '' + } + }) + item.$$key = tb + '_' + key + subObjs.push(item) + }) + } else if (Object.keys(val).length > 0) { + val.$$key = tb + '_' + key + subObjs.push(val) + } + } else { + if (typeof(val) === 'string') { + val = val.replace(/'/ig, '"') + } else { + val = val + '' + } + vals[key] = val + } + }) + + vals.mk_level = level + vals.mk_id = id + vals.mk_bid = bid + + let isnew = true + lines.forEach(line => { + if (line.tb === tb) { + line.values.push(vals) + isnew = false + } + }) + if (isnew) { + lines.push({ + tb: tb, + type: tables.includes('#' + tb) ? '01' : '02', + values: [vals] + }) + } + + subObjs.forEach(item => { + getDefaultSql(item, item.$$key, id, level + 1) + }) + } + + getDefaultSql(result, btn.cbTable, '', 1) + + param.data[0].exps.push({ + key: 'mk_outer_params', // 鍥炶皟鑴氭湰鐨勬暟鎹浛鎹� + value: lines + }) + + let md5_id = '' + if (window.GLOB.probation) { + md5_id = md5('back_' + btn.uuid + JSON.stringify(param.data[0].exps) + Math.floor(new Date().getTime() / 600000)) + md5_id = moment().format('YYYYMMDDHHmmss') + md5_id.slice(-18) + } + + param.data[0].md5_id = md5_id + param.data[0].menuname = btn.logLabel + '(鍥炶皟)' + + return param + } + getCallBackSql = (result, record) => { const { btn } = this.props let lines = [] @@ -1570,10 +2136,15 @@ if (Array.isArray(val)) { val.forEach(item => { if (typeof(item) !== 'object' || Array.isArray(item)) return - if (Object.keys(item).length > 0) { - item.$$key = tb + '_' + key - subObjs.push(item) - } + if (Object.keys(item).length === 0) return + + Object.keys(item).forEach(k => { + if (item[k] === null) { + item[k] = '' + } + }) + item.$$key = tb + '_' + key + subObjs.push(item) }) } else if (Object.keys(val).length > 0) { val.$$key = tb + '_' + key @@ -1846,16 +2417,18 @@ let record = { BID: param.BID || '', ID: param.ID || '', - callbacksql: param.$callbacksql || '' + callbacksql: param.$callbacksql || '', + backParam: param.$backParam || '' } if (!record.ID && btn.Ot !== 'notRequired' && param[setting.primaryKey]) { record.ID = param[setting.primaryKey] } + delete param.$backParam delete param.$callbacksql - if (!param.func) { + if (!param.func && !param.$backend) { this.outerOuterRequest(params, param, record, _resolve) return } @@ -2009,6 +2582,8 @@ _resolve() } return + } else if (btn.callbackType === 'script' && record.backParam) { + param = this.getCallBackendParam(result, record) } else if (btn.callbackType === 'script' || btn.callbackType === 'default') { param = this.getCallBackSql(result, record) } else if (btn.callbackType === 'func' || btn.callbackFunc) { -- Gitblit v1.8.0