From 76427d51a079a5fd1f45bf7188249e7a4647ae05 Mon Sep 17 00:00:00 2001 From: king <18310653075@163.com> Date: 星期一, 14 九月 2020 10:37:25 +0800 Subject: [PATCH] 2020-09-14 --- src/utils/utils.js | 577 ++++++++++++++++++++++++++++++++++----------------------- 1 files changed, 347 insertions(+), 230 deletions(-) diff --git a/src/utils/utils.js b/src/utils/utils.js index 9c2063c..31c3abf 100644 --- a/src/utils/utils.js +++ b/src/utils/utils.js @@ -2,7 +2,55 @@ import md5 from 'md5' import options from '@/store/options.js' +const formatKeys = [ + { key: 'select', value: ' msltk ' }, + { key: 'from', value: ' mfrmk ' }, + { key: 'where', value: ' mwhrk ' }, + { key: 'order by', value: ' modbk ' }, + { key: 'asc', value: ' modack ' }, + { key: 'desc', value: ' moddesk ' }, + { key: 'top', value: ' mtpk ' }, + { key: 'like', value: ' mlkk ' }, + { key: 'not like', value: ' mnlkk ' }, + { key: 'between', value: ' mbtnk ' }, + { key: 'and', value: ' madk ' }, + { key: 'insert', value: ' mistk ' }, + { key: 'into', value: ' mitk ' }, + { key: 'update', value: ' muptk ' }, + { key: 'delete', value: ' mdelk ' }, + { key: 'begin', value: ' mbgink ' }, + { key: 'end', value: ' medk ' }, + { key: 'if', value: ' mefk ' }, + { key: 'while', value: ' mwilk ' }, + { key: 'create', value: ' mcrtk ' }, + { key: 'alter', value: ' matek ' }, + { key: 'len', value: ' mlnk ' }, + { key: 'left', value: ' mlftk ' }, + { key: 'right', value: ' mritk ' }, + { key: 'union', value: ' munok ' }, + { key: 'varchar', value: ' mvcrk ' }, + { key: 'getdate', value: ' mgtdtk ' }, + { key: 'TRY', value: ' mtryonek ' }, + { key: 'TRAN', value: ' mtrnk ' }, + { key: 'goto', value: ' mgtk ' }, + { key: 'set', value: ' mstk ' }, + { key: 'ROLLBACK', value: ' mrlbkk ' } +] + export default class Utils { + /** + * @description 鏁版嵁婧愬悕绉帮紝鐢ㄤ簬缁熶竴鏌ヨ + * @return {String} name + */ + static getdataName () { + let name = [] + let _options = 'abcdefghigklmnopqrstuvwxyz' + for (let i = 0; i < 6; i++) { + name.push(_options.substr(Math.floor(Math.random() * 26), 1)) + } + return name.join('') + } + /** * @description 鐢熸垚32浣島uid string + 鏃堕棿 * @return {String} uuid @@ -10,9 +58,9 @@ static getuuid () { let uuid = [] let timestamp = new Date().getTime() - let options = '0123456789abcdefghigklmnopqrstuv' + let _options = '0123456789abcdefghigklmnopqrstuv' for (let i = 0; i < 19; i++) { - uuid.push(options.substr(Math.floor(Math.random() * 0x20), 1)) + uuid.push(_options.substr(Math.floor(Math.random() * 0x20), 1)) } uuid = timestamp + uuid.join('') return uuid @@ -38,22 +86,26 @@ * @description md5鍔犲瘑 * @return {String} str 鍔犲瘑涓� * @return {String} timestamp 鏃堕棿鎴� - * @return {Boolean} isopenkey 鏄惁涓轰簯绔瘑閽� */ - static encrypt (str, timestamp, isopenkey) { - let salt1 = 'mingke' // sql璇硶鐩愬�� - let salt2 = 'open_key' // 浜戠鏁版嵁鎿嶄綔鐩愬�� - let _str = '' - - if (isopenkey) { - _str = salt2 + timestamp + str - } else { - _str = str + salt1 + timestamp - } + static encrypt (str, timestamp) { + let salt = 'mingke' // sql璇硶鐩愬�� + let _str = str + salt + timestamp if (_str.length > 8000) { _str = _str.slice(_str.length - 8000) } + return md5(_str) + } + + /** + * @description md5鍔犲瘑 浜戠openkey鍔犲瘑 + * @return {String} secretkey Ltext瀵嗛挜 + * @return {String} timestamp 鏃堕棿鎴� + */ + static encryptOpenKey (secretkey, timestamp) { + let salt = 'open_key' // 浜戠鏁版嵁鎿嶄綔鐩愬�� + let _str = salt + timestamp + secretkey + return md5(_str) } @@ -96,90 +148,108 @@ /** * @description sql鍔犲瘑 - * @return {String} value + * @return {String} value */ - static formatOptions (value, isUnFormat = false) { + static formatOptions (value) { if (!value) return '' let salt = 'minKe' // 鐩愬�� - // 鍏抽敭瀛楄浆鎹㈣鍒� - let format = [ - { key: 'select', value: ' msltk ' }, - { key: 'from', value: ' mfrmk ' }, - { key: 'where', value: ' mwhrk ' }, - { key: 'order by', value: ' modbk ' }, - { key: 'asc', value: ' modack ' }, - { key: 'desc', value: ' moddesk ' }, - { key: 'top', value: ' mtpk ' }, - { key: 'like', value: ' mlkk ' }, - { key: 'not like', value: ' mnlkk ' }, - { key: 'between', value: ' mbtnk ' }, - { key: 'and', value: ' madk ' }, - { key: 'insert', value: ' mistk ' }, - { key: 'into', value: ' mitk ' }, - { key: 'update', value: ' muptk ' }, - { key: 'delete', value: ' mdelk ' }, - { key: 'begin', value: ' mbgink ' }, - { key: 'end', value: ' medk ' }, - { key: 'if', value: ' mefk ' }, - { key: 'while', value: ' mwilk ' }, - { key: 'create', value: ' mcrtk ' }, - { key: 'alter', value: ' matek ' }, - { key: 'len', value: ' mlnk ' }, - { key: 'left', value: ' mlftk ' }, - { key: 'right', value: ' mritk ' }, - { key: 'union', value: ' munok ' }, - { key: 'varchar', value: ' mvcrk ' }, - { key: 'getdate', value: ' mgtdtk ' }, - { key: 'TRY', value: ' mtryonek ' }, - { key: 'TRAN', value: ' mtrnk ' }, - { key: 'goto', value: ' mgtk ' }, - { key: 'set', value: ' mstk ' }, - { key: 'ROLLBACK', value: ' mrlbkk ' } - ] - if (!isUnFormat) { // 鍔犲瘑 - value = value.replace(/\n/ig, ' \n ') - // 鏇挎崲鍏抽敭瀛� - 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, '%') - - format.forEach(item => { - let reg = new RegExp(item.value, 'g') - value = value.replace(reg, ' ' + item.key + ' ') - }) - - value = value.replace(/\s\n\s/ig, '\n') - value = value.replace(/(^\s+|\s+$)/ig, '') - } catch { - console.warn('UnFormat Failure') - value = '' - } - } + value = value.replace(/\n/ig, ' \n ') + // 鏇挎崲鍏抽敭瀛� + formatKeys.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) return value + } + + /** + * @description 瑙e瘑 + * @return {String} value + */ + static UnformatOptions (value) { + if (!value) return '' + let salt = 'minKe' // 鐩愬�� + let _value = '' + + try { + try { + _value = JSON.parse(window.decodeURIComponent(window.atob(value))) + } catch { + _value = '' + } + + if (!_value) { + _value = window.atob(value) + _value = _value.replace(salt, '') + _value = window.decodeURIComponent(window.atob(_value)) + + _value = _value.replace(/\smpercent\s/g, '%') + + formatKeys.forEach(item => { + let reg = new RegExp(item.value, 'g') + _value = _value.replace(reg, ' ' + item.key + ' ') + }) + + _value = _value.replace(/\s\n\s/ig, '\n') + _value = _value.replace(/(^\s+|\s+$)/ig, '') + } + } catch { + console.warn('UnFormat Failure') + _value = '' + } + + return _value + } + + /** + * @description sPC_TableData_InUpDe sql鍔犲瘑 + * @return {String} value + */ + static sPCInUpDeFormatOptions (value) { + if (!value) return {LText: '', LText1: '', LText2: ''} + let salt = 'minKe' // 鐩愬�� + + value = value.replace(/\n/ig, ' \n ') + // 鏇挎崲鍏抽敭瀛� + formatKeys.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 ') + + let encodesql = (val) => { + if (!val) return '' + + let _value = window.btoa(window.encodeURIComponent(val)) + + // 鎻掑叆瀛楃 + let index = Math.floor(_value.length / 2) + _value = _value.slice(0, index) + salt + _value.slice(index) + + // base64鍔犲瘑 + return window.btoa(_value) + } + + // 娉細LText 涓� LText1 椤哄簭棰犲�� + return { + LText: encodesql(value.substring(5000, 10000)), + LText1: encodesql(value.substring(0, 5000)), + LText2: encodesql(value.substring(10000)) + } } /** @@ -614,7 +684,7 @@ arrfield = arrfield.join(',') if (item.orderBy) { - sql = 'select distinct ' + arrfield + ',' + item.orderBy + ' as orderfield from ' + _datasource + ' order by orderfield ' + item.orderType + sql = `select ${arrfield} from (select distinct ${arrfield},${item.orderBy} as orderfield from ${_datasource} ) a order by orderfield ${item.orderType}` } else { sql = 'select distinct ' + arrfield + ' from ' + _datasource } @@ -630,7 +700,7 @@ * @return {String} btn 鎸夐挳 * @return {String} data excel鏁版嵁 */ - static getExcelInSql (item, data, dict) { + static getExcelInSql (item, data, dict, BID) { let btn = item.verify let keys = ['delete', 'drop', 'insert', 'truncate', 'update'] let userName = sessionStorage.getItem('User_Name') || '' @@ -672,8 +742,11 @@ }) } + // 鎺у埗鍙版墦鍗版暟鎹� + let conLtext = [] let _Ltext = data.map((item, lindex) => { let vals = [] + let convals = [] btn.columns.forEach((col, cindex) => { if (col.import === 'false') return @@ -687,92 +760,91 @@ val = val.replace(/(^\s*$)|\t*|\v*/ig, '') - if (!val && col.required === 'true') { // 蹇呭~鏍¢獙 - let _error = _position + dict['main.excel.content.emptyerror'] - errors.push(_error) - } else if (val.length > col.limit) { // 闀垮害鏍¢獙 - let _error = _position + dict['main.excel.content.maxlimit'] - errors.push(_error) - } else { // 鍏抽敭瀛楁牎楠� + if (!val && col.required === 'true') { // 蹇呭~鏍¢獙 + errors.push(_position + dict['main.excel.content.emptyerror']) + } else if (col.limit && val.length > col.limit) { // 闀垮害鏍¢獙 + errors.push(_position + dict['main.excel.content.maxlimit']) + } else { // 鍏抽敭瀛楁牎楠� keys.forEach(key => { let _patten = new RegExp('(^' + key + '\\s+)|(\\s+' + key + '\\s+)', 'ig') if (_patten.test(val)) { - let _error = _position + dict['main.excel.includekey'] + key - errors.push(_error) + errors.push(_position + dict['main.excel.includekey'] + key) } }) } } else if (/^int/ig.test(col.type)) { if (!val && val !== 0) { - let _error = _position + dict['main.excel.content.emptyerror'] - errors.push(_error) + errors.push(_position + dict['main.excel.content.emptyerror']) } else { let _val = val + '' if (!/^(([^0][0-9]+|0)$)|^(([1-9]+)$)/.test(_val)) { // 妫�楠屾槸鍚︿负鏁存暟 - let _error = _position + dict['main.excel.content.interror'] - errors.push(_error) + errors.push(_position + dict['main.excel.content.interror']) } else if ((col.min || col.min === 0) && val < col.min) { // 鏈�灏忓�兼楠� - let _error = _position + dict['main.excel.content.limitmin'] - errors.push(_error) + errors.push(_position + dict['main.excel.content.limitmin']) } else if ((col.max || col.max === 0) && val > col.max) { // 鏈�澶у�兼楠� - let _error = _position + dict['main.excel.content.limitmax'] - errors.push(_error) + errors.push(_position + dict['main.excel.content.limitmax']) } } } else if (/^Decimal/ig.test(col.type)) { if (!val && val !== 0) { - let _error = _position + dict['main.excel.content.emptyerror'] - errors.push(_error) + errors.push(_position + dict['main.excel.content.emptyerror']) } else { let _val = val + '' let _vals = _val.split('.') if (!/^(([^0][0-9]+|0)\.([0-9]+)$)|^(([^0][0-9]+|0)$)|^(([1-9]+)\.([0-9]+)$)|^(([1-9]+)$)/.test(_val)) { // 妫�楠屾槸鍚︿负娴偣鏁� - let _error = _position + dict['main.excel.content.floaterror'] - errors.push(_error) - } else if (_vals[0].length > 18) { // 妫�楠屾暣鏁颁綅 - let _error = _position + dict['main.excel.content.floatIntover'] - errors.push(_error) + errors.push(_position + dict['main.excel.content.floaterror']) + } else if (_vals[0].length > 18) { // 妫�楠屾暣鏁颁綅 + errors.push(_position + dict['main.excel.content.floatIntover']) } else if (_vals[1] && _vals[1].length > col.limit) { // 鏈�灏忓�兼楠� - let _error = _position + dict['main.excel.content.floatPointover'] - errors.push(_error) - } else if ((col.min || col.min === 0) && val < col.min) { // 鏈�灏忓�兼楠� - let _error = _position + dict['main.excel.content.limitmin'] - errors.push(_error) - } else if ((col.max || col.max === 0) && val > col.max) { // 鏈�澶у�兼楠� - let _error = _position + dict['main.excel.content.limitmax'] - errors.push(_error) + errors.push(_position + dict['main.excel.content.floatPointover']) + } else if ((col.min || col.min === 0) && val < col.min) { // 鏈�灏忓�兼楠� + errors.push(_position + dict['main.excel.content.limitmin']) + } else if ((col.max || col.max === 0) && val > col.max) { // 鏈�澶у�兼楠� + errors.push(_position + dict['main.excel.content.limitmax']) } } } else if (col.type === 'date') { - val = val.replace(/(^\s*$)|\t*|\v*/ig, '') - - if (!val && col.required === 'true') { // 蹇呭~鏍¢獙 - let _error = _position + dict['main.excel.content.emptyerror'] - errors.push(_error) - } else { // 鍏抽敭瀛楁牎楠� - keys.forEach(key => { - let _patten = new RegExp('(^' + key + '\\s+)|(\\s+' + key + '\\s+)', 'ig') - if (_patten.test(val)) { - let _error = _position + dict['main.excel.includekey'] + key - errors.push(_error) + if (typeof(val) === 'number') { + if (val > 2958465 || val <= 0) { // 鏃堕棿杩囧ぇ鎴栧皬浜庣瓑浜�0 + errors.push(_position + dict['main.excel.content.date.over']) + } else { // 鏃堕棿鏍煎紡鍖� + if (val < 60) { // 1900-2-29锛宔xcel涓瓨鍦紝瀹為檯涓嶅瓨鍦� + val++ } - }) + val = moment('19000101', 'YYYYMMDD').add(Math.floor(val - 2), 'days').format('YYYY-MM-DD') + } + } else if (typeof(val) === 'string') { + val = val.replace(/(^\s*$)|\t*|\v*/ig, '') + if (!val && col.required === 'true') { // 鏃堕棿蹇呭~鏍¢獙 + errors.push(_position + dict['main.excel.content.emptyerror']) + } else if (val && !/^[1-9][0-9]{3}/.test(val)) { // 鏃堕棿姝e垯鏍¢獙 + errors.push(_position + dict['main.excel.content.date.formatError']) + } + } else { // 鏃堕棿鏍煎紡閿欒 + errors.push(_position + dict['main.excel.content.date.formatError']) } } - if (col.type === 'date') { - vals.push(`case when ${col.Column}='' then '1900-01-01' else dateadd(day,cast('${val}' as int)-2,'1900-01-01') end as ${col.Column}`) - } else { - vals.push(`'${val}' as ${col.Column}`) + vals.push(`'${val}'`) + + if (lindex < 40) { + convals.push(`'${val}' as ${col.Column}`) } }) let _lineIndex = '0000' + (lindex + 1) + '0' _lineIndex = _lineIndex.substring(_lineIndex.length - 6) - vals.push(`'${upId + _lineIndex}' as jskey`) + vals.push(`'${upId + _lineIndex}'`) + vals.push(`'${BID}'`) + + if (lindex < 40) { + convals.push(`'${upId + _lineIndex}' as jskey`) + convals.push(`'${BID}' as BID`) + conLtext.push(`Select ${convals.join(',')}`) + } return `Select ${vals.join(',')}` }) @@ -786,7 +858,7 @@ let _sqlInsert = '' let _sqlBottom = '' - if (item.intertype === 'inner' && !item.innerFunc) { + if (item.intertype === 'system') { let _uniquesql = '' if (btn.uniques && btn.uniques.length > 0) { btn.uniques.forEach(unique => { @@ -828,6 +900,8 @@ let fields = [] btn.columns.forEach(col => { + if (col.import === 'false') return + if (col.type === 'date') { declarefields.push(`${col.Column} Nvarchar(50)`) } else { @@ -849,13 +923,13 @@ _sql = ` /* 绯荤粺鐢熸垚 */ - declare @${item.sheet} table (${declarefields.join(',')},jskey nvarchar(50) ) + declare @${item.sheet} table (${declarefields.join(',')},jskey nvarchar(50),BID nvarchar(50) ) Declare @UserName nvarchar(50),@FullName nvarchar(50),@ErrorCode nvarchar(50),@retmsg nvarchar(4000),@tbid Nvarchar(512) Select @ErrorCode='', @retmsg='', @UserName='${userName}', @FullName='${fullName}' ${_initCustomScript} ` - _sqlInsert = `Insert into @${item.sheet} (${fields},jskey)` + _sqlInsert = `Insert into @${item.sheet} (${fields},jskey,BID)` _sqlBottom = ` /* 榛樿sql */ delete tmp_excel_in where upid=@upid@ @@ -868,12 +942,29 @@ Delete @${item.sheet} aaa: select @ErrorCode as ErrorCode,@retmsg as retmsg` - - let fsql = `${_sql}${_sqlInsert}${_sqlBottom}` - fsql = fsql.replace(/\n\s{8}/ig, '\n') - console.log(fsql) + + if ((window.GLOB.systemType !== 'production' && options.sysType !== 'cloud') || window.debugger === true) { + let fsql = ` + ${_sql} + ${_sqlInsert} + + /* excel鏁版嵁锛堝墠40鏉★級 */ + ${conLtext.join(' Union all ')} + ${_sqlBottom} + ` + fsql = fsql.replace(/\n\s{8}/ig, '\n') + console.log(fsql) + } + } else { // s_sDataDictb_excelIn 浜戠瀵嗛挜楠岃瘉鍙傛暟 + _sql = ` + /* 绯荤粺鐢熸垚 */ + declare @${item.sheet} table (jskey nvarchar(50)) + Declare @UserName nvarchar(50),@FullName nvarchar(50),@ErrorCode nvarchar(50),@retmsg nvarchar(4000),@tbid Nvarchar(512) + + Select @ErrorCode='', @retmsg='', @UserName='${userName}', @FullName='${fullName}' + ` } - + return { sql: _sql, lines: result.map((list, index) => { @@ -900,7 +991,7 @@ let _formFieldValue = {} let _actionType = null let appkey = window.GLOB.appkey || '' - let sessionUid = sessionStorage.getItem('SessionUid') || '' + let sessionUid = localStorage.getItem('SessionUid') || '' if (verify.default !== 'false') { // 鍒ゆ柇鏄惁浣跨敤榛樿sql _actionType = btn.sqlType @@ -1056,7 +1147,9 @@ // 鍙橀噺璧嬪�� _initfields = _initfields.join(',') if (_initfields) { - _sql += `select ${_initfields} + _sql += ` + + select ${_initfields} ` } @@ -1105,8 +1198,15 @@ // 澶辨晥楠岃瘉锛屾坊鍔犳暟鎹椂涓嶇敤 if (btn.sqlType !== 'insert' && verify.invalid === 'true' && setting.dataresource) { let datasource = setting.dataresource - if (/\s/.test(datasource)) { // 鎷兼帴鍒悕 + if (/\s/.test(datasource) && !/tb$/.test(datasource)) { // 鎷兼帴鍒悕 datasource = '(' + datasource + ') tb' + } + + if (setting.customScript) { + _sql += ` + /* 鏁版嵁婧愯嚜瀹氫箟鑴氭湰锛岃娉ㄦ剰鍙橀噺瀹氫箟鏄惁閲嶅 */ + ${setting.customScript} + ` } if (btn.Ot === 'requiredOnce') { @@ -1145,81 +1245,6 @@ Begin select @ErrorCode='${item.errorCode}',@retmsg='${item.errmsg}' goto aaa - end - ` - }) - } - - // 鍞竴鎬ч獙璇侊紝蹇呴』瀛樺湪琛ㄥ崟锛堣〃鍗曞瓨鍦ㄦ椂锛屼富閿潎涓哄崟鍊硷級,蹇呴』濉啓鏁版嵁婧愶紝澶氳鎷兼帴鏃朵笉鍙敤 - if (formdata && verify.uniques && verify.uniques.length > 0 && btn.Ot !== 'requiredOnce') { - let hasBid = false // 妫�楠岃〃鍗曞強鍒楀瓧娈典腑鏄惁鏈塨id - let _keys_ = Object.keys(_formFieldValue).map(key => key.toLowerCase()) - if (_keys_.includes('bid')) { - hasBid = true - } - - verify.uniques.forEach(item => { - let _fieldValue = [] // 琛ㄥ崟閿�煎field=value - let _value = [] // 琛ㄥ崟鍊硷紝鐢ㄤ簬閿欒鎻愮ず - let _labels = item.fieldlabel.split(',') // 琛ㄥ崟鎻愮ず鏂囧瓧 - let arr = [] // 楠岃瘉涓婚敭 - - item.field.split(',').forEach((_field, index) => { - let _fval = `'${_formFieldValue[_field]}'` - - if (_field.toLowerCase() === 'bid' && !hasBid) { // 琛ㄥ崟涓病鏈塨id鍒欎娇鐢ㄧ郴缁焍id鍙橀噺 - _fval = '@BID@' - } - if (_field.toLowerCase() === 'bid' && tab && tab.foreignKey) { - arr.push(tab.foreignKey.toLowerCase()) - _fieldValue.push(`${tab.foreignKey}=${_fval}`) - } else { - arr.push(_field.toLowerCase()) - _fieldValue.push(`${_field}=${_fval}`) - } - - _value.push(`${_labels[index] || ''}锛�${_formFieldValue[_field] || ''}`) - }) - - let _verifyType = '' - if (item.verifyType === 'logic') { - _verifyType = ' and deleted=0' - } - - if (!arr.includes(primaryKey.toLowerCase())) { - _fieldValue.push(`${primaryKey} !='${primaryId}'`) - } - - _sql += ` - /* 鍞竴鎬ч獙璇� */ - select @tbid='', @ErrorCode='',@retmsg='' - select @tbid='X' from ${btn.sql} where ${_fieldValue.join(' and ')}${_verifyType} - If @tbid!='' - Begin - select @ErrorCode='${item.errorCode}',@retmsg='${_value.join(', ')} 宸插瓨鍦�' - goto aaa - end - ` - }) - } else if (verify.uniques && verify.uniques.length > 0 && btn.Ot === 'requiredOnce' && setting.dataresource) { - let datasource = setting.dataresource - if (/\s/.test(datasource)) { // 鎷兼帴鍒悕 - datasource = '(' + datasource + ') tb' - } else { - datasource = datasource + ' tb' - } - - verify.uniques.forEach(item => { - _sql += ` - /* 鍚岀被鏁版嵁楠岃瘉 */ - Set @tbid='' - - Select top 1 @tbid='X' from (select distinct ${item.field},1 as n from ${datasource} inner join (select ID from dbo.SplitComma(@ID@)) sp on tb.${primaryKey}=sp.ID ) a having sum(n)>1 - - If @tbid!='' - Begin - Set @ErrorCode='E' Set @retmsg='${item.fieldlabel} 鍊间笉鍞竴' - goto aaa end ` }) @@ -1296,6 +1321,90 @@ } } + // 鍞竴鎬ч獙璇侊紝蹇呴』瀛樺湪琛ㄥ崟锛堣〃鍗曞瓨鍦ㄦ椂锛屼富閿潎涓哄崟鍊硷級,蹇呴』濉啓鏁版嵁婧愶紝澶氳鎷兼帴鏃朵笉鍙敤 + if (formdata && verify.uniques && verify.uniques.length > 0 && btn.Ot !== 'requiredOnce') { + let hasBid = false // 妫�楠岃〃鍗曞強鍒楀瓧娈典腑鏄惁鏈塨id + let _keys_ = Object.keys(_formFieldValue).map(key => key.toLowerCase()) + if (_keys_.includes('bid')) { + hasBid = true + } + + verify.uniques.forEach(item => { + let _fieldValue = [] // 琛ㄥ崟閿�煎field=value + let _value = [] // 琛ㄥ崟鍊硷紝鐢ㄤ簬閿欒鎻愮ず + let _labels = item.fieldlabel.split(',') // 琛ㄥ崟鎻愮ず鏂囧瓧 + let arr = [] // 楠岃瘉涓婚敭 + + item.field.split(',').forEach((_field, index) => { + let _fval = `'${_formFieldValue[_field]}'` + + if (_field.toLowerCase() === 'bid' && !hasBid) { // 琛ㄥ崟涓病鏈塨id鍒欎娇鐢ㄧ郴缁焍id鍙橀噺 + _fval = '@BID@' + } + if (_field.toLowerCase() === 'bid' && tab && tab.foreignKey) { + arr.push(tab.foreignKey.toLowerCase()) + _fieldValue.push(`${tab.foreignKey}=${_fval}`) + } else { + arr.push(_field.toLowerCase()) + _fieldValue.push(`${_field}=${_fval}`) + } + + _value.push(`${_labels[index] || ''}锛�${_formFieldValue[_field] || ''}`) + }) + + let _verifyType = '' + if (item.verifyType === 'logic') { + _verifyType = ' and deleted=0' + } + + if (!arr.includes(primaryKey.toLowerCase())) { + _fieldValue.push(`${primaryKey} !='${primaryId}'`) + } + + _sql += ` + /* 鍞竴鎬ч獙璇� */ + select @tbid='', @ErrorCode='',@retmsg='' + select @tbid='X' from ${btn.sql} where ${_fieldValue.join(' and ')}${_verifyType} + If @tbid!='' + Begin + select @ErrorCode='${item.errorCode}',@retmsg='${_value.join(', ')} 宸插瓨鍦�' + goto aaa + end + ` + }) + } else if (verify.uniques && verify.uniques.length > 0 && btn.Ot === 'requiredOnce' && setting.dataresource) { + let datasource = setting.dataresource + if (/\s/.test(datasource)) { // 鎷兼帴鍒悕 + if (!/tb$/.test(datasource)) { + datasource = '(' + datasource + ') tb' + } + } else { + datasource = datasource + ' tb' + } + + if (setting.customScript) { + _sql += ` + /* 鏁版嵁婧愯嚜瀹氫箟鑴氭湰锛岃娉ㄦ剰鍙橀噺瀹氫箟鏄惁閲嶅 */ + ${setting.customScript} + ` + } + + verify.uniques.forEach(item => { + _sql += ` + /* 鍚岀被鏁版嵁楠岃瘉 */ + Set @tbid='' + + Select top 1 @tbid='X' from (select distinct ${item.field},1 as n from ${datasource} inner join (select ID from dbo.SplitComma(@ID@)) sp on tb.${primaryKey}=sp.ID ) a having sum(n)>1 + + If @tbid!='' + Begin + Set @ErrorCode='E' Set @retmsg='${item.fieldlabel} 鍊间笉鍞竴' + goto aaa + end + ` + }) + } + let hasvoucher = false // 鍑瘉-鏄剧ず鍒椾腑閫夊彇,蹇呴』閫夎 @@ -1331,6 +1440,8 @@ let values = [] formdata.forEach(item => { + if (item.writein === false) return + keys.push(item.key.toLowerCase()) values.push('@' + item.key) }) @@ -1374,6 +1485,8 @@ let _arr = [] formdata.forEach(item => { + if (item.writein === false) return + _arr.push(item.key.toLowerCase()) _form.push(item.key + '=@' + item.key) }) @@ -1457,7 +1570,8 @@ _sql += ` /* 榛樿sql */ - insert into snote (remark,createuserid,CreateUser,CreateStaff) select left('鍒犻櫎琛�:${btn.sql} 鏁版嵁: ${_msg}${primaryKey}='+@ID@,200),@userid@,@username,@fullname delete ${btn.sql} where ${primaryKey}${_ID};` + insert into snote (remark,createuserid,CreateUser,CreateStaff) select left('鍒犻櫎琛�:${btn.sql} 鏁版嵁: ${_msg}${primaryKey}='+@ID@,200),@userid@,@username,@fullname + delete ${btn.sql} where ${primaryKey}${_ID};` } else if (_actionType === 'insertOrUpdate') { _sql += ` /* 榛樿sql */ @@ -1482,8 +1596,11 @@ _sql += ` aaa: select @ErrorCode as ErrorCode,@retmsg as retmsg` - _sql = _sql.replace(/\n\s{8}/ig, '\n') - console.log(_sql) + if ((window.GLOB.systemType !== 'production' && options.sysType !== 'cloud') || window.debugger === true) { + _sql = _sql.replace(/\n\s{8}/ig, '\n') + console.log(_sql) + } + return _sql } } \ No newline at end of file -- Gitblit v1.8.0