From bf772e586c29b4858366dbad143b1eaeca3c46ed Mon Sep 17 00:00:00 2001 From: king <18310653075@163.com> Date: 星期五, 17 四月 2020 10:18:09 +0800 Subject: [PATCH] 2020-04-17 --- src/utils/utils.js | 180 ++++++++++++++++++++++++++++++++++++++++++++++-------------- 1 files changed, 138 insertions(+), 42 deletions(-) diff --git a/src/utils/utils.js b/src/utils/utils.js index 73bfa58..39c4111 100644 --- a/src/utils/utils.js +++ b/src/utils/utils.js @@ -54,7 +54,7 @@ * @description sql鍔犲瘑 * @return {String} value */ - static formatOptions (value) { + static formatOptions (value, isUnFormat = false) { if (!value) return '' let salt = 'minKe' // 鐩愬�� @@ -157,25 +157,43 @@ value: ' mrlbkk ' }] - // 鏇挎崲鍏抽敭瀛� - format.forEach(item => { - let reg = new RegExp('(^|\\s)' + item.key + '(\\s|$)', 'ig') - value = value.replace(reg, item.value) - }) + if (!isUnFormat) { // 鍔犲瘑 + // 鏇挎崲鍏抽敭瀛� + format.forEach(item => { + let reg = new RegExp('(^|\\s)' + item.key + '(\\s|$)', 'ig') + value = value.replace(reg, item.value) + }) + + // 1銆佹浛鎹�%绗︼紙鏁版嵁搴撲腑瑙f瀽鍚巗ql鎶ラ敊锛� + value = value.replace(/%/ig, ' mpercent ') + + // 1銆乪ncode缂栫爜锛堜腑鏂囧瓧绗﹁秴鍑篵ase64鍔犲瘑鑼冨洿锛夛紝2銆乥ase64鍔犲瘑 + value = window.btoa(window.encodeURIComponent(value)) + + // 鎻掑叆瀛楃 + let index = Math.floor(value.length / 2) + value = value.slice(0, index) + salt + value.slice(index) + + // base64鍔犲瘑 + value = window.btoa(value) + } else { // 瑙e瘑 + try { + value = window.atob(value) + value = value.replace(salt, '') + value = window.decodeURIComponent(window.atob(value)) + value = value.replace(/\smpercent\s/g, '%') - // 1銆佹浛鎹�%绗︼紙鏁版嵁搴撲腑瑙f瀽鍚巗ql鎶ラ敊锛夛紝2銆佸幓闄ゆ敹灏惧浣欑┖鏍� - value = value.replace(/%/ig, 'mpercent') - value = value.replace(/(^\s|\s$)/ig, '') - - // 1銆乪ncode缂栫爜锛堜腑鏂囧瓧绗﹁秴鍑篵ase64鍔犲瘑鑼冨洿锛夛紝2銆乥ase64鍔犲瘑 - value = window.btoa(window.encodeURIComponent(value)) - - // 鎻掑叆瀛楃 - let index = Math.floor(value.length / 2) - value = value.slice(0, index) + salt + value.slice(index) - - // base64鍔犲瘑 - value = window.btoa(value) + format.forEach(item => { + let reg = new RegExp(item.value, 'g') + value = value.replace(reg, ' ' + item.key + ' ') + }) + + value = value.replace(/(^\s+|\s+$)/ig, '') + } catch { + console.warn('UnFormat Failure') + value = '' + } + } return value } @@ -477,6 +495,11 @@ let errors = [] let _topline = btn.range || 0 let upId = this.getuuid() + + if (btn.scripts && btn.scripts.length > 0) { + btn.scripts = btn.scripts.filter(item => item.status !== 'false') + } + let _Ltext = data.map((item, lindex) => { let vals = btn.columns.map((col, cindex) => { let val = item[col.Column] !== undefined ? item[col.Column] : '' @@ -505,7 +528,7 @@ }) } } else if (/^int/ig.test(col.type)) { - if (!val) { + if (!val && val !== 0) { let _error = _position + dict['main.excel.content.emptyerror'] errors.push(_error) } else { @@ -523,7 +546,7 @@ } } } else if (/^Decimal/ig.test(col.type)) { - if (!val) { + if (!val && val !== 0) { let _error = _position + dict['main.excel.content.emptyerror'] errors.push(_error) } else { @@ -619,6 +642,16 @@ let _insert = '' + if (btn.scripts && btn.scripts.length > 0) { + btn.scripts.forEach(script => { + if (script.position !== 'front') return + + _insert += ` + ${script.sql} + ` + }) + } + if (btn.default !== 'false') { _insert = ` Insert into ${item.sheet} (${fields},createuserid,createuser,createstaff,bid) @@ -628,7 +661,7 @@ if (btn.scripts && btn.scripts.length > 0) { btn.scripts.forEach(script => { - if (script.status === 'false') return + if (script.position === 'front') return _insert += ` ${script.sql} @@ -667,11 +700,17 @@ * @return {String} type 鎵ц绫诲瀷 * @return {String} table 琛ㄥ悕 */ - static getSysDefaultSql (btn, setting, formdata, param, data, logcolumns) { + static getSysDefaultSql (btn, setting, formdata, param, data, logcolumns, tab) { let primaryId = param.ID let BID = param.BID let verify = btn.verify || {} let _formFieldValue = {} + let _actionType = null + + if (verify.default !== 'false') { // 鍒ゆ柇鏄惁浣跨敤榛樿sql + _actionType = btn.sqlType + } + // 闇�瑕佸0鏄庣殑鍙橀噺闆� // let _vars = ['tbid', 'ErrorCode', 'retmsg', 'BillCode', 'BVoucher', 'FIBVoucherDate', 'FiYear', 'UserName', 'FullName', 'ID', 'BID', 'LoginUID', 'SessionUid', 'UserID', 'Appkey'] let _vars = ['tbid', 'errorcode', 'retmsg', 'billcode', 'bvoucher', 'fibvoucherdate', 'fiyear', 'username', 'fullname', 'modulardetailcode'] @@ -706,6 +745,10 @@ if (!_vars.includes(_key)) { _vars.push(_key) + + if (form.fieldlen && form.fieldlen > 2048) { + form.fieldlen = 'max' + } let _type = `nvarchar(${form.fieldlen})` @@ -742,6 +785,10 @@ if (!_vars.includes(_key)) { _vars.push(_key) + + if (col.fieldlength && col.fieldlength > 2048) { + col.fieldlength = 'max' + } let _type = `nvarchar(${col.fieldlength || 50})` @@ -888,7 +935,7 @@ // 鑷畾涔夐獙璇� if (verify.customverifys && verify.customverifys.length > 0) { - verify.customverifys.forEach(item => { + verify.customverifys.forEach(item => { _sql += `select @tbid='', @ErrorCode='',@retmsg='' select top 1 @tbid='X' from (${item.sql}) a If @tbid ${item.result === 'true' ? '!=' : '='}'' @@ -901,15 +948,16 @@ } // 鍗曞彿鐢熸垚锛屼娇鐢ㄤ笂绾d锛圔ID锛夋垨鍒楄〃鏁版嵁锛屽0鏄庡彉閲忥紙妫�楠岋級 + let _billcodesSql = '' if (verify.billcodes && verify.billcodes.length > 0) { verify.billcodes.forEach(item => { let _ModularDetailCode = '' let _lpline = '' if (item.TypeCharOne === 'Lp') { if (item.linkField === 'BID' && BID) { // 鏇挎崲bid - _lpline = `set @ModularDetailCode= 'Lp'+ right('${btn.uuid}'+@BID@,48)` + _lpline = `set @ModularDetailCode= 'Lp'+ right('${item.mark || btn.uuid}'+@BID@,48)` } else { - _lpline = `set @ModularDetailCode= 'Lp'+ right('${btn.uuid}'+@${item.linkField},48)` + _lpline = `set @ModularDetailCode= 'Lp'+ right('${item.mark || btn.uuid}'+@${item.linkField},48)` } _ModularDetailCode = '@ModularDetailCode' } else if (item.TypeCharOne === 'BN') { @@ -932,7 +980,7 @@ _vars.push(_key) } - _sql += `${_declare} + _billcodesSql += `${_declare} select @BillCode='', @${_key}='', @ModularDetailCode='' ${_lpline} exec s_get_BillCode @@ -948,6 +996,10 @@ set @${_key}=@BillCode ` }) + + if (_actionType !== 'insertOrUpdate') { + _sql += _billcodesSql + } } let hasvoucher = false @@ -964,6 +1016,9 @@ @VoucherTypeOne ='${_voucher.VoucherTypeOne}', @VoucherTypeTwo ='${_voucher.VoucherTypeTwo}', @Type =${_voucher.Type}, + @UserID=@UserID@, + @Username=@Username, + @FullName=@FullName, @BVoucher =@BVoucher OUTPUT , @FIBVoucherDate =@FIBVoucherDate OUTPUT , @FiYear =@FiYear OUTPUT , @@ -976,14 +1031,8 @@ let primaryKeyName = ['id', 'bid', 'loginuid', 'sessionuid', 'userid', 'appkey'].includes(primaryKey.toLowerCase()) ? primaryKey + '@' : primaryKey - let _actionType = null - - if (verify.default !== 'false') { // 鍒ゆ柇鏄惁浣跨敤榛樿sql - _actionType = btn.sqlType - } - - // 娣诲姞銆佷慨鏀广�侀�昏緫鍒犻櫎銆佺墿鐞嗗垹闄� - if (_actionType === 'insert') { + let _insertsql = '' + if (_actionType === 'insert' || _actionType === 'insertOrUpdate') { // 娣诲姞璇彞 let keys = [] let values = [] @@ -1017,14 +1066,24 @@ values.push('@fullname') } if (!keys.includes('bid')) { - keys.push('bid') + if (tab && tab.foreignKey && !keys.includes(tab.foreignKey.toLowerCase())) { + keys.push(tab.foreignKey) + } else { + keys.push('bid') + } + values.push('@BID@') + } else if (tab && tab.foreignKey && !keys.includes(tab.foreignKey.toLowerCase())) { + keys.push(tab.foreignKey) values.push('@BID@') } keys = keys.join(',') values = values.join(',') - _sql += `insert into ${btn.sql} (${keys}) select ${values};` - } else if (_actionType === 'update') { + _insertsql = `insert into ${btn.sql} (${keys}) select ${values};` + } + + let _updatesql = '' + if (_actionType === 'update' || _actionType === 'insertOrUpdate') { // 淇敼璇彞 let _form = [] let _arr = [] @@ -1032,7 +1091,11 @@ _arr.push(item.key.toLowerCase()) if (item.type === 'funcvar') { - _form.push(item.key + '=@' + item.key) + if (_actionType === 'update') { + _form.push(item.key + '=@' + item.key) + } else if (_actionType === 'insertOrUpdate') { // 娣诲姞鎴栦慨鏀规椂锛屽嚱鏁板彉閲忔坊鍔犺〃鍗曟暟鍊� + _form.push(item.key + '=\'' + item.value + '\'') + } } else if (item.type === 'number') { _form.push(item.key + '=' + item.value) } else { @@ -1057,9 +1120,27 @@ _form.push('FiYear=@FiYear') } } - _form = _form.join(',') - _sql += `update ${btn.sql} set ${_form} where ${primaryKey}=@${primaryKeyName};` + _updatesql = `update ${btn.sql} set ${_form} where ${primaryKey}=@${primaryKeyName};` + } + + // 鎷兼帴鑷畾涔夎剼鏈� + if (verify.scripts && verify.scripts.length > 0) { + let _scripts = '' + verify.scripts.forEach(item => { + if (item.position !== 'front') return + + _scripts += ` + ${item.sql}` + }) + _sql += `${_scripts}` + } + + // 娣诲姞銆佷慨鏀广�侀�昏緫鍒犻櫎銆佺墿鐞嗗垹闄� + if (_actionType === 'insert') { + _sql += _insertsql + } else if (_actionType === 'update') { + _sql += _updatesql } else if (_actionType === 'LogicDelete') { // 閫昏緫鍒犻櫎 _sql += `update ${btn.sql} set deleted=1,modifydate=getdate(),modifyuserid=@userid@ where ${primaryKey}=@${primaryKeyName};` @@ -1074,13 +1155,28 @@ } }) } - _sql += `insert into snote (remark,createuserid,CreateUser,CreateStaff) select '鍒犻櫎琛�:${btn.sql} 鏁版嵁: ${_msg}${primaryKey}='+@${primaryKeyName},@userid@,@username,@fullname delete ${btn.sql} where ${primaryKey}=@${primaryKeyName};` + _sql += `insert into snote (remark,createuserid,CreateUser,CreateStaff) select left('鍒犻櫎琛�:${btn.sql} 鏁版嵁: ${_msg}${primaryKey}='+@${primaryKeyName},200),@userid@,@username,@fullname delete ${btn.sql} where ${primaryKey}=@${primaryKeyName};` + } else if (_actionType === 'insertOrUpdate') { + _sql += `select @tbid='' + select @tbid='X' from ${btn.sql} where ${primaryKey}=@ID@ + if @tbid='' + begin + ${_billcodesSql} + ${_insertsql} + end + else + begin + ${_updatesql} + end + ` } // 鎷兼帴鑷畾涔夎剼鏈� if (verify.scripts && verify.scripts.length > 0) { let _scripts = '' verify.scripts.forEach(item => { + if (item.position === 'front') return + _scripts += ` ${item.sql}` }) -- Gitblit v1.8.0