From a5bc394eceeaae5923057f1fd919968fd234af23 Mon Sep 17 00:00:00 2001 From: king <18310653075@163.com> Date: 星期二, 27 五月 2025 17:59:57 +0800 Subject: [PATCH] 2025-05-27 --- src/utils/utils.js | 145 +++++++++++++++++++++++++++++++++++++----------- 1 files changed, 111 insertions(+), 34 deletions(-) diff --git a/src/utils/utils.js b/src/utils/utils.js index d29445d..d9502c6 100644 --- a/src/utils/utils.js +++ b/src/utils/utils.js @@ -192,8 +192,10 @@ * @param {Array} searches 鎼滅储鏉′欢 */ static initSearchVal (config) { - if (!config.search) { + if (!config.search || config.search.length === 0) { config.search = [] + config.$s_keys = [] + config.$s_req = false return } @@ -247,9 +249,6 @@ config.checkBid = true item.checkShift = true - if (config.setting) { - config.setting.checkBid = true - } } item.initval = '' @@ -265,7 +264,7 @@ } if (d) { - item.initval = moment(d).subtract(item.initval, 'month').format('YYYY-MM') + item.initval = moment(d).subtract(item.$initval, 'month').format('YYYY-MM') } } } @@ -294,6 +293,10 @@ item.initval = [moment().startOf('month').format(format), moment().endOf('month').format(format)].join(',') } else if (item.initval === 'lastMonth') { item.initval = [moment().subtract(1, 'months').startOf('month').format(format), moment().subtract(1, 'months').endOf('month').format(format)].join(',') + } else if (item.initval === 'year') { + item.initval = [moment().startOf('year').format(format), moment().endOf('year').format(format)].join(',') + } else if (item.initval === 'lastYear') { + item.initval = [moment().subtract(1, 'years').startOf('year').format(format), moment().subtract(1, 'years').endOf('year').format(format)].join(',') } else if (item.initval) { try { let _initval = JSON.parse(item.initval) @@ -311,9 +314,6 @@ config.checkBid = true item.checkShift = true - if (config.setting) { - config.setting.checkBid = true - } } item.initval = '' @@ -335,6 +335,10 @@ item.initval = [moment(d).startOf('month').format(format), moment(d).endOf('month').format(format)].join(',') } else if (item.$initval === 'lastMonth') { item.initval = [moment(d).subtract(1, 'months').startOf('month').format(format), moment(d).subtract(1, 'months').endOf('month').format(format)].join(',') + } else if (item.$initval === 'year') { + item.initval = [moment(d).startOf('year').format(format), moment(d).endOf('year').format(format)].join(',') + } else if (item.$initval === 'lastYear') { + item.initval = [moment(d).subtract(1, 'years').startOf('year').format(format), moment(d).subtract(1, 'years').endOf('year').format(format)].join(',') } else { try { let _initval = JSON.parse(item.$initval) @@ -408,9 +412,6 @@ if (/@BID@/ig.test(item.dataSource) && supModule) { config.checkBid = true item.checkBid = true - if (config.setting) { - config.setting.checkBid = true - } } if (item.initval === '$first') { item.initval = '' @@ -458,6 +459,15 @@ return item }) + + if (config.checkBid) { + if (config.setting) { + config.setting.checkBid = true + } + if (config.type !== 'search') { + config.$checkBid = true + } + } config.$s_keys = keys config.$s_req = required @@ -1132,16 +1142,34 @@ cols.push('A' + cols[i]) } + let columns = JSON.parse(JSON.stringify(btn.columns)) + columns = columns.filter((col, index) => { + col.colIndex = cols[index] || (index + 1) + if (col.import !== 'init' && (/^Decimal/ig.test(col.type) || /^int/ig.test(col.type))) { + col.declen = 0 + if (/^Decimal/ig.test(col.type)) { + col.declen = +col.type.match(/\d+/g)[1] + } + col.declen = col.declen || 0 + } + if (col.required === 'false') { + delete col.min + delete col.max + } + + return col.import !== 'false' + }) + let _Ltext = data.map((item, lindex) => { let vals = [] - btn.columns.forEach((col, cindex) => { - if (col.import === 'false') return - + columns.forEach(col => { let val = item[col.Column] !== undefined ? item[col.Column] : '' - let _colindex = cols[cindex] || (cindex + 1) - let _position = (_topline + lindex + 1) + '琛� ' + _colindex + '鍒� ' + let _position = (_topline + lindex + 1) + '琛� ' + col.colIndex + '鍒� ' + let eLen = errors.length - if (col.import === 'init') { + if (col.$error) { + + } else if (col.import === 'init') { if (/^Nvarchar/ig.test(col.type)) { val = '' } else if (/^Decimal/ig.test(col.type) || /^int/ig.test(col.type)) { @@ -1160,6 +1188,10 @@ val = val.replace(/(^\s+$)|\t+|\v+/ig, '') + if (col.interception !== 'false') { + val = val.replace(/^\s+|\s+$/g, '') + } + if (!val && col.required === 'true') { // 蹇呭~鏍¢獙 errors.push(_position + '鍐呭涓嶅彲涓虹┖') } else if (col.limit && val.length > col.limit) { // 闀垮害鏍¢獙 @@ -1177,14 +1209,24 @@ if (!val || isNaN(val)) { val = 0 } - } else if (!val && val !== 0) { + } + if (!val && val !== 0) { errors.push(_position + '鍐呭涓嶅彲涓虹┖') } else if (isNaN(val)) { // 妫�楠屾槸鍚︿负鏁板�� errors.push(_position + '鍐呭搴斾负鏁板��') - } else if ((col.min || col.min === 0) && val < col.min) { // 鏈�灏忓�兼楠� + } else if (typeof(col.min) === 'number' && val < col.min) { // 鏈�灏忓�兼楠� errors.push(_position + '灏忎簬鏈�灏忓��') - } else if ((col.max || col.max === 0) && val > col.max) { // 鏈�澶у�兼楠� + } else if (typeof(col.max) === 'number' && val > col.max) { // 鏈�澶у�兼楠� errors.push(_position + '澶т簬鏈�澶у��') + } else { + let _float = (val + '').split('.')[1] + if (_float && _float.length > col.declen) { + if (col.declen) { + errors.push(_position + `鏁板�间笉鍙ぇ浜�${col.declen}浣嶅皬鏁癭) + } else { + errors.push(_position + '鏁板�煎簲涓烘暣鏁�') + } + } } } else if (col.type === 'date' || col.type === 'datetime') { if (typeof(val) === 'number') { @@ -1219,6 +1261,10 @@ } else { // 鏃堕棿鏍煎紡閿欒 errors.push(_position + '鏃堕棿鏍煎紡閿欒') } + } + + if (errors.length > eLen) { + col.$error = true } vals.push(`'${val}'`) @@ -1522,7 +1568,7 @@ * @return {Object} item 鎸夐挳淇℃伅 * @return {Array} data excel鏁版嵁 */ -export function getEditTableSql (verify, data, columns) { +export function getEditTableSql (verify, data, columns, setting) { let btn = verify let userName = sessionStorage.getItem('User_Name') || '' let fullName = sessionStorage.getItem('Full_Name') || '' @@ -1641,6 +1687,7 @@ let _fields = unique.field.split(',') let _fields_ = _fields.map(_field => `a.${_field}=b.${_field}`) _fields_ = _fields_.join(' and ') + _fields_ += ` and a.jskey != b.${setting.primaryKey || 'id'}` let _where = [] _fields.forEach(f => { @@ -1697,6 +1744,7 @@ let declarefields = [] let fields = [] + let upFields = [] columns.forEach(col => { let key = col.field.toLowerCase() @@ -1704,15 +1752,27 @@ declarefields.push(`${col.field} ${col.datatype}`) fields.push(col.field) + upFields.push(`${col.field}=t.${col.field}`) }) fields = fields.join(',') + upFields = upFields.join(',') let _insert = '' if (btn.default !== 'false') { _insert = ` /* 榛樿sql */ - Insert into ${database}${sheet} (${fields},createuserid,createuser,createstaff,bid) + update a set ${upFields},modifydate=getdate(),modifyuserid='${sessionStorage.getItem('UserID') || ''}',modifyuser=@username,modifystaff=@fullname,deleted=0 + from (select * from #${sheet} where data_type='upt') t + inner join ${database}${sheet} a on t.jskey=a.${setting.primaryKey || 'id'} + + update a set deleted=1,modifydate=getdate(),modifyuserid='${sessionStorage.getItem('UserID') || ''}',modifyuser=@username,modifystaff=@fullname + from (select * from #${sheet} where data_type='del') t + inner join ${database}${sheet} a on t.jskey=a.${setting.primaryKey || 'id'} + + delete t from #${sheet} t inner join ${database}${sheet} a on t.jskey=a.${setting.primaryKey || 'id'} + + Insert into ${database}${sheet} (${fields},createuserid,createuser,createstaff,bid) Select ${fields},'${sessionStorage.getItem('UserID') || ''}',@username,@fullname,'${BID}' From #${sheet} ` } @@ -1775,7 +1835,6 @@ let primaryId = param.ID let BID = param.BID || '' let verify = btn.verify || {} - let datavars = {} // 澹版槑鐨勫彉閲忥紝琛ㄥ崟鍙婃樉绀哄垪 let _actionType = null let _callbacksql = '' @@ -1821,9 +1880,21 @@ let _initFormfields = [] let _initColfields = [] let _declarefields = [] + let verifyValSql = '' + let datavars = {} // 鑾峰彇瀛楁閿�煎 formdata && formdata.forEach(form => { + if (form.$verify) { + verifyValSql += ` + if @${form.key}=${form.type === 'number' ? 0 : `''`} + begin + select @errorcode='E',@retmsg='${form.label}锛屽叧鑱斾富琛ㄥけ鏁�' + goto aaa + end + ` + } + let _key = form.key.toLowerCase() datavars[_key] = form.value @@ -1832,7 +1903,7 @@ let val = form.value if (form.type === 'number' || form.type === 'rate') { - if (isNaN(val)) { + if (isNaN(val) || val === '') { val = 0 } _initFormfields.push(`@${_key}=${val}`) @@ -1887,7 +1958,7 @@ let _key = col.field.toLowerCase() if (!_initvars.includes(_key)) { - let _val = datavars.hasOwnProperty(_key) ? datavars[_key] : '' + let _val = _data.hasOwnProperty(_key) ? _data[_key] : '' if (col.datatype && /^date/ig.test(col.datatype) && !_val) { _val = '1949-10-01' @@ -2115,22 +2186,21 @@ verify.billcodes.forEach(item => { let _key = item.field.toLowerCase() - let _linkKey = item.linkField ? item.linkField.toLowerCase() : '' if (!keys.includes(_key)) return // 琛ㄥ崟涓笉鍚崟鍙风敓鎴愬瓧娈� let _lpline = '' if (item.TypeCharOne === 'Lp') { - if (_linkKey === 'bid' && BID) { // 鏇挎崲bid + if (/^BID$/ig.test(item.linkField)) { _lpline = `set @ModularDetailCode= 'Lp'+ right('${item.mark || btn.uuid}'+@BID@,48)` } else { - _lpline = `set @ModularDetailCode= 'Lp'+ right('${item.mark || btn.uuid}'+@${_linkKey},48)` + _lpline = `set @ModularDetailCode= 'Lp'+ right('${item.mark || btn.uuid}'+@${item.linkField},48)` } } else if (item.TypeCharOne === 'BN') { - if (_linkKey === 'bid' && BID) { // 鏇挎崲bid + if (/^BID$/ig.test(item.linkField)) { _lpline = `set @ModularDetailCode= 'BN'+ right(@BID@,48)` } else { - _lpline = `set @ModularDetailCode= 'BN'+ right(@${_linkKey},48)` + _lpline = `set @ModularDetailCode= 'BN'+ right(@${item.linkField},48)` } } else { _lpline = `set @ModularDetailCode= right('${item.ModularDetailCode}',50)` @@ -2177,7 +2247,7 @@ item.field.split(',').forEach((_field, index) => { let _key = _field.toLowerCase() let _val = '' - let _val2 = '' + let _val2 = datavars[_key] !== undefined ? datavars[_key] : '' arr.push(_key) if (_key === 'bid') { @@ -2188,8 +2258,6 @@ if (_key === 'bid') { _val2 = BID - } else { - _val2 = `' + @${_field} + '` } _fieldValue.push(`${_key}=${_val}`) @@ -2249,13 +2317,18 @@ // 鍑瘉-鏄剧ず鍒椾腑閫夊彇,蹇呴』閫夎 if (verify.voucher && verify.voucher.enabled) { let _voucher = verify.voucher + let linkField = `@${_voucher.linkField}` + + if (/^BID$/ig.test(_voucher.linkField)) { + linkField = `'${BID}'` + } hasvoucher = true _sql += ` /* 鍒涘缓鍑瘉 */ exec s_BVoucher_Create - @Bill ='${_data[_voucher.linkField.toLowerCase()] || ''}', + @Bill = ${linkField}, @BVoucherType ='${_voucher.BVoucherType}', @VoucherTypeOne ='${_voucher.VoucherTypeOne}', @VoucherTypeTwo ='${_voucher.VoucherTypeTwo}', @@ -2879,6 +2952,10 @@ _sql += _backCustomScript } + if (verifyValSql) { + _sql += verifyValSql + } + if (window.GLOB.breakpoint) { let start = new RegExp('\\/\\*\\$breakpoint_begin_' + window.GLOB.breakpoint + '@', 'ig') let end = new RegExp('@breakpoint_end_' + window.GLOB.breakpoint + '\\$\\*\\/', 'ig') -- Gitblit v1.8.0