From b6cbfb08b51e87e6eac995be8e7751815715e6a1 Mon Sep 17 00:00:00 2001 From: king <18310653075@163.com> Date: 星期二, 29 三月 2022 15:36:21 +0800 Subject: [PATCH] 2022-03-29 --- src/utils/utils.js | 266 ++++++++++++++++++++++++++++++++++++++++++----------- 1 files changed, 211 insertions(+), 55 deletions(-) diff --git a/src/utils/utils.js b/src/utils/utils.js index 85b401e..6e6596a 100644 --- a/src/utils/utils.js +++ b/src/utils/utils.js @@ -251,20 +251,43 @@ item.$forbid = item.query === 'false' if (item.type === 'date') { // 鏃堕棿鎼滅储 - item.initval = item.initval ? moment().subtract(item.initval, 'days').format('YYYY-MM-DD') : '' + item.precision = item.precision || 'day' + let format = 'YYYY-MM-DD' + if (item.precision === 'day') { + + } else if (item.precision === 'hour') { + format = 'YYYY-MM-DD HH' + } else if (item.precision === 'minute') { + format = 'YYYY-MM-DD HH:mm' + } else if (item.precision === 'second') { + format = 'YYYY-MM-DD HH:mm:ss' + } + + item.initval = item.initval ? moment().subtract(item.initval, 'days').format(format) : '' } else if (item.type === 'datemonth') { item.initval = item.initval ? moment().subtract(item.initval, 'month').format('YYYY-MM') : '' } else if (item.type === 'dateweek') { item.initval = item.initval ? moment().subtract(item.initval * 7, 'days').format('YYYY-MM-DD') : '' } else if (item.type === 'daterange') { + item.precision = item.precision || 'day' + let format = 'YYYY-MM-DD' + if (item.precision === 'day') { + + } else if (item.precision === 'hour') { + format = 'YYYY-MM-DD HH' + } else if (item.precision === 'minute') { + format = 'YYYY-MM-DD HH:mm' + } else if (item.precision === 'second') { + format = 'YYYY-MM-DD HH:mm:ss' + } if (item.initval === 'week') { - item.initval = [moment().startOf('week').format('YYYY-MM-DD'), moment().endOf('week').format('YYYY-MM-DD')].join(',') + item.initval = [moment().startOf('week').format(format), moment().endOf('week').format(format)].join(',') } else if (item.initval === 'month') { - item.initval = [moment().startOf('month').format('YYYY-MM-DD'), moment().endOf('month').format('YYYY-MM-DD')].join(',') + item.initval = [moment().startOf('month').format(format), moment().endOf('month').format(format)].join(',') } else if (item.initval) { try { let _initval = JSON.parse(item.initval) - let _vals = [moment().subtract(_initval[0], 'days').format('YYYY-MM-DD'), moment().subtract(_initval[1], 'days').format('YYYY-MM-DD')] + let _vals = [moment().subtract(_initval[0], 'days').format(format), moment().subtract(_initval[1], 'days').format(format)] item.initval = _vals.join(',') } catch (e) { item.initval = '' @@ -358,6 +381,7 @@ label: cell.label, value: cell.initval, required: cell.required, + precision: cell.precision || '', forbid: cell.$forbid } @@ -398,10 +422,18 @@ let _val = item.value || '' if (_val) { - if (item.match === '<' || item.match === '<=') { - _val = moment(_val, 'YYYY-MM-DD').add(1, 'days').format('YYYY-MM-DD') + ' 00:00:00.000' - } else if (item.match === '>' || item.match === '>=') { - _val = _val + ' 00:00:00.000' + if (item.precision === 'day') { + if (item.match === '<' || item.match === '<=') { + _val = moment(_val, 'YYYY-MM-DD').add(1, 'days').format('YYYY-MM-DD') + ' 00:00:00.000' + } else if (item.match === '>' || item.match === '>=') { + _val = _val + ' 00:00:00.000' + } + } else if (item.precision === 'hour') { + _val = _val + ':00:00.000' + } else if (item.precision === 'minute') { + _val = _val + ':00.000' + } else if (item.precision === 'second') { + _val = _val + '.000' } } @@ -437,8 +469,20 @@ let _endval = '' if (item.value) { let val = item.value.split(',') - _startval = val[0] + ' 00:00:00.000' - _endval = moment(val[1], 'YYYY-MM-DD').add(1, 'days').format('YYYY-MM-DD') + ' 00:00:00.000' + + if (item.precision === 'day') { + _startval = val[0] + ' 00:00:00.000' + _endval = moment(val[1], 'YYYY-MM-DD').add(1, 'days').format('YYYY-MM-DD') + ' 00:00:00.000' + } else if (item.precision === 'hour') { + _startval = val[0] + ':00:00.000' + _endval = val[1] + ':00:00.000' + } else if (item.precision === 'minute') { + _startval = val[0] + ':00.000' + _endval = val[1] + ':00.000' + } else if (item.precision === 'second') { + _startval = val[0] + '.000' + _endval = val[1] + '.000' + } } newsearches[item.key] = _startval @@ -479,14 +523,25 @@ searchText += `'${item.value}' ${item.match} '%'+${item.key}+'%'` } else if (item.type === 'date') { let _val = item.value - let timetail = ' 00:00:00.000' + let timetail = '' let _match = item.match if (item.match === '<' || item.match === '<=') { // 鏃堕棿涓�<=鏃讹紝鍖归厤鍚庝竴澶╃殑0鐐癸紝鍖归厤鏂瑰紡涓�< _match = '<' - _val = moment(_val, 'YYYY-MM-DD').add(1, 'days').format('YYYY-MM-DD') - } else if (item.match === '=') { + if (item.precision === 'day') { + _val = moment(_val, 'YYYY-MM-DD').add(1, 'days').format('YYYY-MM-DD') + } + } + if (item.match === '=') { timetail = '' + } else if (item.precision === 'day') { + timetail = ' 00:00:00.000' + } else if (item.precision === 'hour') { + timetail = ':00:00.000' + } else if (item.precision === 'minute') { + timetail = ':00.000' + } else if (item.precision === 'second') { + timetail = '.000' } searchText += '(' + item.key + ' ' + _match + ' \'' + _val + timetail + '\')' @@ -502,8 +557,22 @@ searchText += '(' + item.key + ' >= \'' + _startval + '\' AND ' + item.key + ' < \'' + _endval + '\')' } else if (item.type === 'daterange') { let val = item.value.split(',') - let _startval = val[0] + ' 00:00:00.000' - let _endval = moment(val[1], 'YYYY-MM-DD').add(1, 'days').format('YYYY-MM-DD') + ' 00:00:00.000' + let _startval = '' + let _endval = '' + + if (item.precision === 'day') { + _startval = val[0] + ' 00:00:00.000' + _endval = moment(val[1], 'YYYY-MM-DD').add(1, 'days').format('YYYY-MM-DD') + ' 00:00:00.000' + } else if (item.precision === 'hour') { + _startval = val[0] + ':00:00.000' + _endval = val[1] + ':00:00.000' + } else if (item.precision === 'minute') { + _startval = val[0] + ':00.000' + _endval = val[1] + ':00.000' + } else if (item.precision === 'second') { + _startval = val[0] + '.000' + _endval = val[1] + '.000' + } searchText += '(' + item.key + ' >= \'' + _startval + '\' AND ' + item.key + ' < \'' + _endval + '\')' } else if (item.type === 'range') { @@ -543,10 +612,24 @@ fieldmap.set(item.key, true) if (item.type === 'date') { - if (['>=', '>'].includes(item.match)) { - item.value = item.value ? item.value + ' 00:00:00.000' : '1970-01-01 00:00:00.000' - } else if (['<=', '<'].includes(item.match)) { - item.value = item.value ? moment(item.value, 'YYYY-MM-DD').add(1, 'days').format('YYYY-MM-DD') + ' 00:00:00.000' : '2050-01-01 00:00:00.000' + if (!item.value) { + if (['>=', '>'].includes(item.match)) { + item.value = '1970-01-01 00:00:00.000' + } else if (['<=', '<'].includes(item.match)) { + item.value = '2050-01-01 00:00:00.000' + } + } else if (search.precision === 'day') { + if (['>=', '>'].includes(item.match)) { + item.value = item.value + ' 00:00:00.000' + } else if (['<=', '<'].includes(item.match)) { + item.value = moment(item.value, 'YYYY-MM-DD').add(1, 'days').format('YYYY-MM-DD') + ' 00:00:00.000' + } + } else if (search.precision === 'hour') { + item.value = item.value + ':00:00.000' + } else if (search.precision === 'minute') { + item.value = item.value + ':00.000' + } else if (search.precision === 'second') { + item.value = item.value + '.000' } options.push(item) @@ -577,11 +660,23 @@ } else if (item.type === 'daterange') { let _startval = '1970-01-01 00:00:00.000' let _endval = '2050-01-01 00:00:00.000' - + if (item.value) { let val = item.value.split(',') - _startval = val[0] + ' 00:00:00.000' - _endval = moment(val[1], 'YYYY-MM-DD').add(1, 'days').format('YYYY-MM-DD') + ' 00:00:00.000' + + if (search.precision === 'day') { + _startval = val[0] + ' 00:00:00.000' + _endval = moment(val[1], 'YYYY-MM-DD').add(1, 'days').format('YYYY-MM-DD') + ' 00:00:00.000' + } else if (search.precision === 'hour') { + _startval = val[0] + ':00:00.000' + _endval = val[1] + ':00:00.000' + } else if (search.precision === 'minute') { + _startval = val[0] + ':00.000' + _endval = val[1] + ':00.000' + } else if (search.precision === 'second') { + _startval = val[0] + '.000' + _endval = val[1] + '.000' + } } let copy = JSON.parse(JSON.stringify(item)) @@ -707,14 +802,16 @@ static getSelectQueryOptions (item) { let arrfield = [item.valueField, item.valueText] - if (item.type === 'link') { - arrfield.push(item.linkField) - } else if (item.type === 'checkcard') { + if (item.type === 'checkcard') { arrfield = item.fields.map(f => f.field) arrfield.push(item.cardValField) if (item.urlField) { arrfield.push(item.urlField) } + } + + if (item.linkField) { + arrfield.push(item.linkField) } if (['select', 'radio', 'link', 'checkcard'].includes(item.type) && item.linkSubField && item.linkSubField.length > 0) { arrfield.push(...item.linkSubField) @@ -735,9 +832,11 @@ arrfield = arrfield.join(',') if (item.orderBy) { - sql = `select ${item.type === 'checkcard' ? 'top 20' : ''} ${arrfield} from (select distinct ${arrfield},${item.orderBy} as orderfield from ${_datasource} ) a order by orderfield ${item.orderType}` + // sql = `select ${item.type === 'checkcard' ? 'top 20' : ''} ${arrfield} from (select distinct ${arrfield},${item.orderBy} as orderfield from ${_datasource} ) a order by orderfield ${item.orderType}` + sql = `select distinct ${arrfield},${item.orderBy} as orderfield from ${_datasource} order by orderfield ${item.orderType}` } else { - sql = `select ${item.type === 'checkcard' ? 'top 20' : ''} ${arrfield} from (select distinct ${arrfield} from ${_datasource}) a` + // sql = `select ${item.type === 'checkcard' ? 'top 20' : ''} ${arrfield} from (select distinct ${arrfield} from ${_datasource}) a` + sql = `select distinct ${arrfield} from ${_datasource}` } if (sessionStorage.getItem('dataM') === 'true') { // 鏁版嵁鏉冮檺 @@ -752,7 +851,7 @@ sql = sql.replace(/@db@/ig, window.GLOB.externalDatabase) } - if ((window.GLOB.systemType !== 'production' && options.sysType !== 'cloud') || window.debugger === true) { + if (window.GLOB.debugger === true || (window.debugger === true && options.sysType !== 'cloud')) { console.info(sql) } @@ -1044,7 +1143,7 @@ aaa: select @ErrorCode as ErrorCode,@retmsg as retmsg` - if ((window.GLOB.systemType !== 'production' && options.sysType !== 'cloud') || window.debugger === true) { + if (window.GLOB.debugger === true || (window.debugger === true && options.sysType !== 'cloud')) { let fsql = ` ${_sql} ${_sqlInsert} @@ -1110,19 +1209,6 @@ database = database ? (database[0] || '') : '' - let getuuid = () => { - let uuid = [] - let timestamp = new Date().getTime() - let _options = '0123456789abcdefghigklmnopqrstuv' - for (let i = 0; i < 19; i++) { - uuid.push(_options.substr(Math.floor(Math.random() * 0x20), 1)) - } - uuid = timestamp + uuid.join('') - return uuid - } - - // let upId = getuuid() - let _initCustomScript = '' // 鍒濆鍖栬剼鏈� let _prevCustomScript = '' // 榛樿sql鍓嶆墽琛岃剼鏈� let _backCustomScript = '' // 榛樿sql鍚庢墽琛岃剼鏈� @@ -1164,13 +1250,7 @@ }) let key = item.$$uuid - let type = 'upt' - if (key === '$new') { - key = getuuid() - type = 'add' - } else if (item.$deleted) { - type = 'del' - } + let type = item.$type || 'upt' vals.push(`'${key}'`) vals.push(`'${type}'`) @@ -1275,7 +1355,7 @@ aaa: select @ErrorCode as ErrorCode,@retmsg as retmsg` - if ((window.GLOB.systemType !== 'production' && options.sysType !== 'cloud') || window.debugger === true) { + if (window.GLOB.debugger === true || (window.debugger === true && options.sysType !== 'cloud')) { let fsql = ` ${_sql} ${_sqlInsert} @@ -1360,7 +1440,7 @@ }) // 闇�瑕佸0鏄庣殑鍙橀噺闆� - let _vars = ['tbid', 'errorcode', 'retmsg', 'billcode', 'bvoucher', 'fibvoucherdate', 'fiyear', 'username', 'fullname', 'modulardetailcode', 'roleid', 'mk_departmentcode', 'mk_organization', 'login_city'] + let _vars = ['tbid', 'errorcode', 'retmsg', 'billcode', 'bvoucher', 'fibvoucherdate', 'fiyear', 'username', 'fullname', 'modulardetailcode', 'roleid', 'mk_departmentcode', 'mk_organization', 'login_city', 'bid'] // 涓婚敭瀛楁 let primaryKey = setting.primaryKey || 'id' @@ -1381,7 +1461,7 @@ if (!_initvars.includes(_key)) { _initvars.push(_key) - if (form.type === 'number') { + if (form.type === 'number' || form.type === 'rate') { let val = form.value if (typeof(val) !== 'number') { val = parseFloat(val) @@ -1390,6 +1470,8 @@ } } _initFormfields.push(`@${_key}=${val}`) + } else if (['date', 'datemonth', 'datetime'].includes(form.type)) { + _initFormfields.push(`@${_key}='${form.value || '1949-10-01'}'`) } else { _initFormfields.push(`@${_key}='${form.value}'`) } @@ -1408,6 +1490,8 @@ _type = 'datetime' } else if (form.type === 'number') { _type = `decimal(18,${form.fieldlen})` + } else if (form.type === 'rate') { + _type = `decimal(18,2)` } _declarefields.push(`@${_key} ${_type}`) @@ -1432,7 +1516,7 @@ let _val = datavars.hasOwnProperty(_key) ? datavars[_key] : '' if (col.datatype && /^date/ig.test(col.datatype) && !_val) { - _val = '1900-01-01' + _val = '1949-10-01' } _initvars.push(_key) @@ -1482,7 +1566,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), @UserName nvarchar(50),@FullName nvarchar(50),@RoleID nvarchar(512),@mk_departmentcode nvarchar(50),@mk_organization nvarchar(50),@login_city nvarchar(50),@ModularDetailCode 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), @UserName nvarchar(50),@FullName nvarchar(50),@RoleID nvarchar(512),@mk_departmentcode nvarchar(50),@mk_organization nvarchar(50),@login_city nvarchar(50),@bid nvarchar(50),@ModularDetailCode nvarchar(50)${_declarefields} ` // 琛ㄥ崟鍙橀噺璧嬪�� @@ -2018,7 +2102,7 @@ aaa: select @ErrorCode as ErrorCode,@retmsg as retmsg` } - if ((window.GLOB.systemType !== 'production' && options.sysType !== 'cloud') || window.debugger === true) { + if (window.GLOB.debugger === true || (window.debugger === true && options.sysType !== 'cloud')) { // _sql = _sql.replace(/\n\s{8}/ig, '\n') console.info(_sql) } @@ -2030,6 +2114,76 @@ } } else { return _sql + } +} + +/** + * @description 鑾峰彇鏍囪淇℃伅 + */ +export function getMark (marks, record, style = {}) { + let icon = null + let color = null + let position = null + style = JSON.parse(JSON.stringify(style)) + + marks.some(mark => { + let originVal = record[mark.field[0]] + '' + let contrastVal = '' + let result = false + + if (mark.field[1] === 'static') { + contrastVal = mark.contrastValue + '' + } else { + contrastVal = record[mark.field[2]] + '' + } + + if (mark.match === '=') { + result = originVal === contrastVal + } else if (mark.match === '!=') { + result = originVal !== contrastVal + } else if (mark.match === 'like') { + result = originVal.indexOf(contrastVal) > -1 + } else if (mark.match === '>') { + result = parseFloat(originVal) > parseFloat(contrastVal) + } else if (mark.match === '<') { + result = parseFloat(originVal) < parseFloat(contrastVal) + } + + if (!result) return false + + let type = mark.signType[0] + + if (type === 'font') { + style.color = mark.color + } else if (type === 'background') { + style.background = mark.color + if (mark.fontColor) { + style.color = mark.fontColor + } + } else if (type === 'underline') { + style.textDecoration = 'underline' + style.color = mark.color + } else if (type === 'line-through') { + style.textDecoration = 'line-through' + style.color = mark.color + } else if (type.indexOf('icon') > -1) { + icon = mark.signType[mark.signType.length - 1] + color = mark.color + if (type === 'iconfront' || mark.signType[1] === 'front') { + position = 'front' + } else { + position = 'back' + } + } + + return true + }) + + return { + style, + icon, + color, + position } } @@ -2253,6 +2407,8 @@ type = 'datetime=null' } else if (item.type === 'number') { type = `decimal(18,${item.decimal})=0` + } else if (item.type === 'rate') { + type = `decimal(18,2)=0` } else { type = 'nvarchar(50)=\'\'' } -- Gitblit v1.8.0