From c34bcb0a3054bdab29fbaff17e587c19d7b5de28 Mon Sep 17 00:00:00 2001
From: king <18310653075@163.com>
Date: 星期三, 16 九月 2020 23:39:28 +0800
Subject: [PATCH] 2020-09-16
---
src/utils/utils.js | 464 +++++++++++++++++++++++++++++----------------------------
1 files changed, 234 insertions(+), 230 deletions(-)
diff --git a/src/utils/utils.js b/src/utils/utils.js
index c2cc84f..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
@@ -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,69 @@
/**
* @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
}
/**
@@ -188,47 +219,11 @@
*/
static sPCInUpDeFormatOptions (value) {
if (!value) return {LText: '', LText1: '', LText2: ''}
-
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 ' }
- ]
value = value.replace(/\n/ig, ' \n ')
// 鏇挎崲鍏抽敭瀛�
- format.forEach(item => {
+ formatKeys.forEach(item => {
let reg = new RegExp('(^|\\s)' + item.key + '(\\s|$)', 'ig')
value = value.replace(reg, item.value)
})
@@ -689,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
}
@@ -705,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') || ''
@@ -765,11 +760,11 @@
val = val.replace(/(^\s*$)|\t*|\v*/ig, '')
- if (!val && col.required === 'true') { // 蹇呭~鏍¢獙
+ if (!val && col.required === 'true') { // 蹇呭~鏍¢獙
errors.push(_position + dict['main.excel.content.emptyerror'])
- } else if (val.length > col.limit) { // 闀垮害鏍¢獙
+ } else if (col.limit && val.length > col.limit) { // 闀垮害鏍¢獙
errors.push(_position + dict['main.excel.content.maxlimit'])
- } else { // 鍏抽敭瀛楁牎楠�
+ } else { // 鍏抽敭瀛楁牎楠�
keys.forEach(key => {
let _patten = new RegExp('(^' + key + '\\s+)|(\\s+' + key + '\\s+)', 'ig')
if (_patten.test(val)) {
@@ -815,7 +810,10 @@
if (val > 2958465 || val <= 0) { // 鏃堕棿杩囧ぇ鎴栧皬浜庣瓑浜�0
errors.push(_position + dict['main.excel.content.date.over'])
} else { // 鏃堕棿鏍煎紡鍖�
- val = this.formatExcelDate(val)
+ 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, '')
@@ -840,9 +838,11 @@
_lineIndex = _lineIndex.substring(_lineIndex.length - 6)
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(',')}`)
}
@@ -858,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 => {
@@ -923,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@
@@ -943,8 +943,7 @@
aaa: select @ErrorCode as ErrorCode,@retmsg as retmsg`
- // if (window.GLOB.systemType !== 'production' && options.sysType !== 'cloud') {
- if (window.GLOB.systemType !== 'production') {
+ if ((window.GLOB.systemType !== 'production' && options.sysType !== 'cloud') || window.debugger === true) {
let fsql = `
${_sql}
${_sqlInsert}
@@ -965,7 +964,7 @@
Select @ErrorCode='', @retmsg='', @UserName='${userName}', @FullName='${fullName}'
`
}
-
+
return {
sql: _sql,
lines: result.map((list, index) => {
@@ -981,20 +980,6 @@
}
/**
- * @description 鏍煎紡鍖杄xcel涓殑date鍊�
- * @param {Number} number 鏃堕棿鍊�
- */
- static formatExcelDate(number) {
- const time = new Date((number - 1) * 24 * 3600000 + 1)
- time.setYear(time.getFullYear() - 70)
- const year = time.getFullYear()
- const month = time.getMonth() + 1
- const date = time.getDate() - 1
-
- return `${year}-${(month < 10 ? '0' + month : month)}-${(date < 10 ? '0' + date : date)}`
- }
-
- /**
* @description 浣跨敤绯荤粺鍑芥暟鏃讹紙sPC_TableData_InUpDe 锛夛紝鐢熸垚sql璇彞
* @return {String} type 鎵ц绫诲瀷
* @return {String} table 琛ㄥ悕
@@ -1006,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
@@ -1213,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') {
@@ -1253,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
`
})
@@ -1404,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
// 鍑瘉-鏄剧ず鍒椾腑閫夊彇,蹇呴』閫夎
@@ -1439,6 +1440,8 @@
let values = []
formdata.forEach(item => {
+ if (item.writein === false) return
+
keys.push(item.key.toLowerCase())
values.push('@' + item.key)
})
@@ -1482,6 +1485,8 @@
let _arr = []
formdata.forEach(item => {
+ if (item.writein === false) return
+
_arr.push(item.key.toLowerCase())
_form.push(item.key + '=@' + item.key)
})
@@ -1591,8 +1596,7 @@
_sql += `
aaa: select @ErrorCode as ErrorCode,@retmsg as retmsg`
- // if (window.GLOB.systemType !== 'production' && options.sysType !== 'cloud') {
- if (window.GLOB.systemType !== 'production') {
+ if ((window.GLOB.systemType !== 'production' && options.sysType !== 'cloud') || window.debugger === true) {
_sql = _sql.replace(/\n\s{8}/ig, '\n')
console.log(_sql)
}
--
Gitblit v1.8.0