From 574ea3b532b625456c09f14fc11073aad6b61db7 Mon Sep 17 00:00:00 2001
From: king <18310653075@163.com>
Date: 星期三, 02 八月 2023 12:11:47 +0800
Subject: [PATCH] 2023-08-02
---
src/utils/utils.js | 220 ++++++++++++++++++++++++++++--------------------------
1 files changed, 115 insertions(+), 105 deletions(-)
diff --git a/src/utils/utils.js b/src/utils/utils.js
index 553ca2f..967ae7e 100644
--- a/src/utils/utils.js
+++ b/src/utils/utils.js
@@ -142,19 +142,19 @@
static verifySql (sql, type) {
if (!sql) return ''
let chars = [
- {key: 'create', reg: /(^|\s)create\s/ig},
- {key: 'insert', reg: /(^|\s)insert\s/ig},
- {key: 'delete', reg: /(^|\s)delete\s/ig},
- {key: 'update', reg: /(^|\s)update\s/ig},
- {key: 'set', reg: /(^|\s)set\s/ig},
- {key: 'drop', reg: /(^|\s)drop\s/ig},
- {key: 'alter', reg: /(^|\s)alter\s/ig},
- {key: 'truncate', reg: /(^|\s)truncate\s/ig},
- {key: 'if', reg: /(^|\s)if\s/ig},
- {key: 'exec', reg: /(^|\s)exec(\s|\()/ig},
- {key: 'OBJECT', reg: /(^|\s)object(\s|\()/ig},
- {key: 'sys.', reg: /(^|\s)sys\./ig},
- {key: 'kill', reg: /(^|\s)kill\s/ig}
+ {key: 'create', reg: /(^|\s|\(|\))create\s/ig},
+ {key: 'insert', reg: /(^|\s|\(|\))insert\s/ig},
+ {key: 'delete', reg: /(^|\s|\(|\))delete\s/ig},
+ {key: 'update', reg: /(^|\s|\(|\))update\s/ig},
+ {key: 'set', reg: /(^|\s|\(|\))set\s/ig},
+ {key: 'drop', reg: /(^|\s|\(|\))drop\s/ig},
+ {key: 'alter', reg: /(^|\s|\(|\))alter\s/ig},
+ {key: 'truncate', reg: /(^|\s|\(|\))truncate\s/ig},
+ {key: 'if', reg: /(^|\s|\(|\))if\s/ig},
+ {key: 'exec', reg: /(^|\s|\(|\))exec(\s|\()/ig},
+ {key: 'OBJECT', reg: /(^|\s|\(|\))object(\s|\()/ig},
+ {key: 'sys.', reg: /(^|\s|\(|\))sys\./ig},
+ {key: 'kill', reg: /(^|\s|\(|\))kill\s/ig}
]
if (type === 'customscript') {
@@ -216,12 +216,6 @@
// value = window.atob(value)
// value = value.replace('minKe', '')
// value = window.decodeURIComponent(window.atob(value))
-
- // // 澶栬仈鏁版嵁搴撴浛鎹�
- // if (window.GLOB.externalDatabase !== null && window.GLOB.externalDatabase) {
- // value = value.replace(window.GLOB.externalDatabase, '@db@')
- // }
-
// value = value.replace(/ mpercent /ig, '%')
// // 鏇挎崲鍏抽敭瀛�
@@ -230,7 +224,7 @@
// value = value.replace(reg, ' ' + item.key + ' ')
// })
- // // value = value.replace(/\n/ig, ' \n ')
+ // value = value.replace(/ \n /ig, '\n')
// return value
// }
@@ -292,12 +286,17 @@
* @description 鍒濆鍖栨悳绱㈡潯浠跺垵濮嬪��
* @param {Array} searches 鎼滅储鏉′欢
*/
- static initSearchVal (searches) {
- if (!searches) return []
+ static initSearchVal (config) {
+ if (!config.search) {
+ config.search = []
+ return
+ }
let roleId = sessionStorage.getItem('role_id') || ''
+ let required = false
+ let keys = []
- return searches.map(item => {
+ config.search = config.search.map(item => {
item.hidden = item.Hide === 'true'
item.required = !item.hidden && item.required === 'true'
item.advanced = item.advanced === 'true'
@@ -413,8 +412,28 @@
}
}
+ if (item.required) {
+ required = true
+ }
+
+ if (item.type === 'text' || item.type === 'select') {
+ if (/,/.test(item.field)) {
+ item.field.split(',').forEach(field => {
+ keys.push(field.toLowerCase())
+ })
+ } else {
+ keys.push(item.field.toLowerCase())
+ }
+ } else if (item.type === 'group') {
+ keys.push(item.field.toLowerCase())
+ keys.push(item.datefield.toLowerCase())
+ }
+
return item
})
+
+ config.$s_keys = keys
+ config.$s_req = required
}
/**
@@ -800,6 +819,8 @@
arrfield.push(item.urlField)
} else if (item.colorField) {
arrfield.push(item.colorField)
+ } else if (item.parentField) {
+ arrfield.push(item.parentField)
}
}
@@ -807,6 +828,8 @@
arrfield.push(item.linkField)
}
if (['select', 'radio', 'link', 'checkcard'].includes(item.type) && item.linkSubField && item.linkSubField.length > 0) {
+ arrfield.push(...item.linkSubField)
+ } else if (item.type === 'text' && item.editType === 'select' && item.linkSubField && item.linkSubField.length > 0) { // 鍙紪杈戣〃
arrfield.push(...item.linkSubField)
}
if (item.disableField) {
@@ -831,10 +854,9 @@
}
if (sessionStorage.getItem('dataM') === 'true') { // 鏁版嵁鏉冮檺
- sql = sql.replace(/\$@/ig, '/*')
- sql = sql.replace(/@\$/ig, '*/')
+ sql = sql.replace(/\$@/ig, '/*').replace(/@\$/ig, '*/').replace(/@datam@/ig, '\'Y\'')
} else {
- sql = sql.replace(/@\$|\$@/ig, '')
+ sql = sql.replace(/@\$|\$@/ig, '').replace(/@datam@/ig, '\'\'')
}
// 澶栬仈鏁版嵁搴撴浛鎹�
@@ -958,11 +980,13 @@
let _position = (_topline + lindex + 1) + '琛� ' + _colindex + '鍒� '
if (/^Nvarchar/ig.test(col.type)) {
- if (typeof(val) === 'number') {
- val = val.toString()
+ val = val + ''
+
+ if (/'/.test(val)) {
+ val = val.replace(/'/ig, '"')
}
- val = val.replace(/(^\s*$)|\t*|\v*|'*/ig, '')
+ val = val.replace(/(^\s*$)|\t*|\v*/ig, '')
if (!val && col.required === 'true') { // 蹇呭~鏍¢獙
errors.push(_position + '鍐呭涓嶅彲涓虹┖')
@@ -976,38 +1000,15 @@
}
})
}
- } else if (/^int/ig.test(col.type)) {
+ } else if (/^Decimal/ig.test(col.type) || /^int/ig.test(col.type)) {
if (!val && val !== 0) {
errors.push(_position + '鍐呭涓嶅彲涓虹┖')
- } else {
- let _val = val + ''
-
- if (!/^(([^0][0-9]+|0)$)|^(([1-9]+)$)/.test(_val)) { // 妫�楠屾槸鍚︿负鏁存暟
- errors.push(_position + '鍐呭搴斾负鏁存暟')
- } else if ((col.min || col.min === 0) && val < col.min) { // 鏈�灏忓�兼楠�
- errors.push(_position + '灏忎簬鏈�灏忓��')
- } else if ((col.max || col.max === 0) && val > col.max) { // 鏈�澶у�兼楠�
- errors.push(_position + '澶т簬鏈�澶у��')
- }
- }
- } else if (/^Decimal/ig.test(col.type)) {
- if (!val && val !== 0) {
- errors.push(_position + '鍐呭涓嶅彲涓虹┖')
- } 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)) { // 妫�楠屾槸鍚︿负娴偣鏁�
- errors.push(_position + '鍐呭搴斾负娴偣鏁�')
- } else if (_vals[0].length > 18) { // 妫�楠屾暣鏁颁綅
- errors.push(_position + '鏁存暟浣嶈秴鍑鸿寖鍥�')
- } else if (_vals[1] && _vals[1].length > col.limit) { // 鏈�灏忓�兼楠�
- errors.push(_position + '灏忔暟浣嶈秴鍑鸿寖鍥�')
- } else if ((col.min || col.min === 0) && val < col.min) { // 鏈�灏忓�兼楠�
- errors.push(_position + '灏忎簬鏈�灏忓��')
- } else if ((col.max || col.max === 0) && val > col.max) { // 鏈�澶у�兼楠�
- errors.push(_position + '澶т簬鏈�澶у��')
- }
+ } else if (isNaN(val)) { // 妫�楠屾槸鍚︿负鏁板��
+ errors.push(_position + '鍐呭搴斾负鏁板��')
+ } else if ((col.min || col.min === 0) && val < col.min) { // 鏈�灏忓�兼楠�
+ errors.push(_position + '灏忎簬鏈�灏忓��')
+ } else if ((col.max || col.max === 0) && val > col.max) { // 鏈�澶у�兼楠�
+ errors.push(_position + '澶т簬鏈�澶у��')
}
} else if (col.type === 'date') {
if (typeof(val) === 'number') {
@@ -1066,14 +1067,14 @@
let _uniquesql = ''
if (btn.uniques && btn.uniques.length > 0) {
btn.uniques.forEach(unique => {
- if (unique.status === 'false') return
+ 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 ')
- if (unique.verifyType !== 'physical') {
+ if (unique.verifyType === 'logic' || unique.verifyType === 'logic_temp') {
_fields_ += ' and b.deleted=0'
}
@@ -1088,14 +1089,14 @@
goto aaa
end
- Set @tbid=''
+ ${unique.verifyType.indexOf('temp') === -1 ? `Set @tbid=''
Select top 1 @tbid=${_afields.join('+\' \'+')} from @${sheet} a Inner join ${sheet} b on ${_fields_}
If @tbid!=''
Begin
select @ErrorCode='${unique.errorCode}',@retmsg=@tbid+' 涓庡凡鏈夋暟鎹噸澶�'
goto aaa
- end
+ end` : ''}
`
})
}
@@ -1287,14 +1288,14 @@
let _uniquesql = ''
if (btn.uniques && btn.uniques.length > 0) {
btn.uniques.forEach(unique => {
- if (unique.status === 'false') return
+ 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 ')
- if (unique.verifyType !== 'physical') {
+ if (unique.verifyType === 'logic' || unique.verifyType === 'logic_temp') {
_fields_ += ' and b.deleted=0'
}
@@ -1309,14 +1310,14 @@
goto aaa
end
- Set @tbid=''
+ ${unique.verifyType.indexOf('temp') === -1 ? `Set @tbid=''
Select top 1 @tbid=${_afields.join('+\' \'+')} from @${sheet} a Inner join ${sheet} b on ${_fields_}
If @tbid!=''
Begin
select @ErrorCode='${unique.errorCode}',@retmsg=@tbid+' 涓庡凡鏈夋暟鎹噸澶�'
goto aaa
- end
+ end` : ''}
`
})
}
@@ -1449,7 +1450,7 @@
})
// 闇�瑕佸0鏄庣殑鍙橀噺闆�
- let _vars = ['tbid', 'errorcode', 'retmsg', 'billcode', 'bvoucher', 'fibvoucherdate', 'fiyear', 'username', 'fullname', 'modulardetailcode', 'roleid', 'mk_departmentcode', 'mk_organization', 'mk_user_type', 'mk_nation', 'mk_province', 'mk_city', 'mk_district', 'mk_address', 'bid']
+ let _vars = ['tbid', 'errorcode', 'retmsg', 'billcode', 'bvoucher', 'fibvoucherdate', 'fiyear', 'username', 'fullname', 'modulardetailcode', 'roleid', 'mk_departmentcode', 'mk_organization', 'mk_user_type', 'mk_nation', 'mk_province', 'mk_city', 'mk_district', 'mk_address', 'mk_deleted', 'bid']
// 涓婚敭瀛楁
let primaryKey = setting.primaryKey || 'id'
@@ -1469,17 +1470,24 @@
if (!_initvars.includes(_key)) {
_initvars.push(_key)
+ let val = form.value
if (form.type === 'number' || form.type === 'rate') {
- let val = form.value
if (isNaN(val)) {
val = 0
}
_initFormfields.push(`@${_key}=${val}`)
} else if (['date', 'datemonth'].includes(form.type)) {
- _initFormfields.push(`@${_key}='${form.value || '1949-10-01'}'`)
+ _initFormfields.push(`@${_key}='${val || '1949-10-01'}'`)
} else {
- _initFormfields.push(`@${_key}='${form.value}'`)
+ if (/'/.test(val)) {
+ val = val.replace(/'/ig, '"')
+ }
+ if (form.isconst) {
+ _initFormfields.push(`@${_key}=N'${val}'`)
+ } else {
+ _initFormfields.push(`@${_key}='${val}'`)
+ }
}
}
@@ -1504,15 +1512,16 @@
}
})
+ let _data = {}
if (data) {
Object.keys(data).forEach(key => {
- data[key.toLowerCase()] = data[key]
+ _data[key.toLowerCase()] = data[key]
})
}
// 娣诲姞鏁版嵁涓瓧娈碉紝琛ㄥ崟鍊间紭鍏�(鎸夐挳涓嶉�夎鎴栧琛屾嫾鎺ユ椂璺宠繃)
if (data && btn.Ot !== 'notRequired' && columns && columns.length > 0) {
- datavars = {...data, ...datavars}
+ datavars = {..._data, ...datavars}
const setField = (col) => {
if (!col.field) return
@@ -1523,6 +1532,10 @@
if (col.datatype && /^date/ig.test(col.datatype) && !_val) {
_val = '1949-10-01'
+ }
+
+ if (/'/.test(_val)) {
+ _val = _val.replace(/'/ig, '"')
}
_initvars.push(_key)
@@ -1570,7 +1583,7 @@
_declarefields = ',' + _declarefields
}
_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),@bid nvarchar(50)${_declarefields}
+ 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 = sessionStorage.getItem('User_Name') || ''
@@ -1593,7 +1606,7 @@
// 鍒濆鍖栧嚟璇佸強鐢ㄦ埛淇℃伅瀛楁
_sql += `
/* 鍑瘉鍙婄敤鎴蜂俊鎭垵濮嬪寲璧嬪�� */
- select @BVoucher='',@FIBVoucherDate='',@FiYear='',@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}', @bid='${BID}', @BillCode='', @ModularDetailCode=''
+ select @BVoucher='',@FIBVoucherDate='',@FiYear='',@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}', @mk_deleted=1, @bid='${BID}', @BillCode='', @ModularDetailCode=''
`
// 琛ㄥ崟鍙橀噺璧嬪��
@@ -1707,7 +1720,7 @@
/* 澶辨晥楠岃瘉 */
select @tbid='', @ErrorCode='',@retmsg=''
select @tbid='X' from ${datasource} right join (select ID from dbo.SplitComma(@ID@)) sp
- on tb.id =sp.id where tb.id is null
+ on tb.${primaryKey} =sp.id where tb.${primaryKey} is null
If @tbid!=''
Begin
@@ -1781,8 +1794,8 @@
let _val = ''
if (_linkKey === 'bid' && BID) { // 鏇挎崲bid
_val = BID
- } else if (data && data.hasOwnProperty(_linkKey)) {
- _val = data[_linkKey]
+ } else if (_data.hasOwnProperty(_linkKey)) {
+ _val = _data[_linkKey]
}
_ModularDetailCode = `'${item.TypeCharOne + _val}'`
} else {
@@ -1911,7 +1924,7 @@
_sql += `
/* 鍒涘缓鍑瘉 */
exec s_BVoucher_Create
- @Bill ='${data[_voucher.linkField.toLowerCase()]}',
+ @Bill ='${_data[_voucher.linkField.toLowerCase()]}',
@BVoucherType ='${_voucher.BVoucherType}',
@VoucherTypeOne ='${_voucher.VoucherTypeOne}',
@VoucherTypeTwo ='${_voucher.VoucherTypeTwo}',
@@ -2066,7 +2079,7 @@
_sql += `
/* 榛樿sql */
- update ${btn.sql} set deleted=1,modifydate=getdate(),modifyuser=@username,modifystaff=@fullname,modifyuserid=@userid@ where ${primaryKey}${_ID};`
+ update ${btn.sql} set deleted=@mk_deleted,modifydate=getdate(),modifyuser=@username,modifystaff=@fullname,modifyuserid=@userid@ where ${primaryKey}${_ID};`
} else if (_actionType === 'delete') { // 鐗╃悊鍒犻櫎
let _msg = ''
@@ -2143,6 +2156,12 @@
_sql = _sql.replace(/@Appkey@/ig, `'${window.GLOB.appkey || ''}'`)
_sql = _sql.replace(/@typename@/ig, `'admin'`)
+ if (sessionStorage.getItem('dataM') === 'true') { // 鏁版嵁鏉冮檺
+ _sql = _sql.replace(/@datam@/ig, '\'Y\'')
+ } else {
+ _sql = _sql.replace(/@datam@/ig, '\'\'')
+ }
+
if (window.GLOB.debugger === true || (window.debugger === true && options.sysType !== 'cloud')) {
// _sql = _sql.replace(/\n\s{8}/ig, '\n')
console.info(_sql)
@@ -2156,6 +2175,12 @@
_callbacksql = _callbacksql.replace(/@UserID@/ig, `'${sessionStorage.getItem('UserID') || ''}'`)
_callbacksql = _callbacksql.replace(/@Appkey@/ig, `'${window.GLOB.appkey || ''}'`)
_callbacksql = _callbacksql.replace(/@typename@/ig, `'admin'`)
+
+ if (sessionStorage.getItem('dataM') === 'true') { // 鏁版嵁鏉冮檺
+ _callbacksql = _callbacksql.replace(/@datam@/ig, '\'Y\'')
+ } else {
+ _callbacksql = _callbacksql.replace(/@datam@/ig, '\'\'')
+ }
return {
sql: _sql,
@@ -2257,34 +2282,19 @@
return
}
- // if (window.GLOB.WebSql) {
- // window.GLOB.WebSql.transaction(tx => {
- // tx.executeSql("SELECT * FROM FUNCS", [], (tx, results) => {
- // let rows = results.rows
- // if (!rows || rows.length === 0) return
- // for (let i = 0; i < rows.length; i++) {
- // window.GLOB.funcs.push({
- // func_code: rows[i].func_code,
- // key_sql: window.decodeURIComponent(window.atob(rows[i].key_sql))
- // })
- // }
- // })
- // })
- // } else {
- let objectStore = window.GLOB.IndexDB.transaction('funcs').objectStore('funcs')
+ let objectStore = window.GLOB.IndexDB.transaction('funcs').objectStore('funcs')
- objectStore.openCursor().onsuccess = (event) => {
- let cursor = event.target.result
+ objectStore.openCursor().onsuccess = (event) => {
+ let cursor = event.target.result
- if (cursor) {
- window.GLOB.funcs.push({
- func_code: cursor.value.func_code,
- key_sql: window.decodeURIComponent(window.atob(cursor.value.key_sql))
- })
- cursor.continue()
- }
+ if (cursor) {
+ window.GLOB.funcs.push({
+ func_code: cursor.value.func_code,
+ key_sql: window.decodeURIComponent(window.atob(cursor.value.key_sql))
+ })
+ cursor.continue()
}
- // }
+ }
}
/**
--
Gitblit v1.8.0