| | |
| | | static verifySql (sql, type) { |
| | | if (!sql) return '' |
| | | let chars = [ |
| | | {key: 'create', reg: '(^|\\s)create\\s'}, |
| | | {key: 'insert', reg: '(^|\\s)insert\\s'}, |
| | | {key: 'delete', reg: '(^|\\s)delete\\s'}, |
| | | {key: 'update', reg: '(^|\\s)update\\s'}, |
| | | {key: 'set', reg: '(^|\\s)set\\s'}, |
| | | {key: 'drop', reg: '(^|\\s)drop\\s'}, |
| | | {key: 'alter', reg: '(^|\\s)alter\\s'}, |
| | | {key: 'truncate', reg: '(^|\\s)truncate\\s'}, |
| | | {key: 'if', reg: '(^|\\s)if\\s'}, |
| | | {key: 'exec', reg: 'exec'}, |
| | | {key: 'OBJECT', reg: 'OBJECT'}, |
| | | {key: 'sys.', reg: 'sys.'}, |
| | | {key: 'kill', reg: 'kill'}, |
| | | {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: /exec/ig}, |
| | | {key: 'OBJECT', reg: /object/ig}, |
| | | {key: 'sys.', reg: /sys\./ig}, |
| | | {key: 'kill', reg: /kill/ig} |
| | | ] |
| | | |
| | | if (type === 'customscript') { |
| | | chars = chars.map(char => !['insert', 'delete', 'update', 'set', 'if', 'exec'].includes(char.key)) |
| | | chars = chars.filter(char => !['insert', 'delete', 'update', 'set', 'if', 'exec'].includes(char.key)) |
| | | } |
| | | |
| | | let error = '' |
| | | chars.forEach(char => { |
| | | if (!error && new RegExp(char.reg, 'ig').test(sql)) { |
| | | if (!error && char.reg.test(sql)) { |
| | | error = char.key |
| | | } |
| | | }) |
| | |
| | | } |
| | | |
| | | /** |
| | | * @description 拼接搜索条件main |
| | | * @param {Array} searches 搜索条件 |
| | | * @return {String} searchText 拼接结果 |
| | | */ |
| | | static getAllSearchOptions (searches) { |
| | | if (!searches || searches.length === 0) return [] |
| | | |
| | | let options = [] |
| | | let fieldmap = new Map() |
| | | searches.forEach(search => { |
| | | let item = { |
| | | key: search.key, |
| | | match: search.match, |
| | | type: search.type, |
| | | label: search.label, |
| | | value: search.value, |
| | | required: search.required |
| | | } |
| | | |
| | | if (fieldmap.has(item.key)) { |
| | | item.key = item.key + '1' |
| | | } |
| | | |
| | | fieldmap.set(item.key, true) |
| | | |
| | | if (item.type === 'date') { |
| | | if (['>=', '>'].includes(item.match)) { |
| | | item.value = item.value ? item.value + ' 00:00:00.000' : '1990-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' : '2030-01-01 00:00:00.000' |
| | | } |
| | | |
| | | options.push(item) |
| | | } else if (item.type === 'datemonth') { |
| | | let _startval = item.value ? moment(item.value, 'YYYY-MM').startOf('month').format('YYYY-MM-DD') + ' 00:00:00.000' : '1990-01-01 00:00:00.000' |
| | | let _endval = item.value ? moment(item.value, 'YYYY-MM').endOf('month').add(1, 'days').format('YYYY-MM-DD') + ' 00:00:00.000' : '2030-01-01 00:00:00.000' |
| | | |
| | | let copy = JSON.parse(JSON.stringify(item)) |
| | | copy.key = copy.key + '1' |
| | | copy.value = _endval |
| | | |
| | | item.value = _startval |
| | | |
| | | options.push(item) |
| | | options.push(copy) |
| | | } else if (item.type === 'dateweek') { |
| | | let _startval = item.value && item.value[0] ? moment(item.value[0], 'YYYY-MM-DD').format('YYYY-MM-DD') + ' 00:00:00.000' : '1990-01-01 00:00:00.000' |
| | | let _endval = item.value && item.value[1] ? moment(item.value[1], 'YYYY-MM-DD').add(1, 'days').format('YYYY-MM-DD') + ' 00:00:00.000' : '2030-01-01 00:00:00.000' |
| | | |
| | | let copy = JSON.parse(JSON.stringify(item)) |
| | | copy.key = copy.key + '1' |
| | | copy.value = _endval |
| | | |
| | | item.value = _startval |
| | | |
| | | options.push(item) |
| | | options.push(copy) |
| | | } else if (item.type === 'daterange') { |
| | | let _startval = item.value && item.value[0] ? item.value[0] + ' 00:00:00.000' : '1990-01-01 00:00:00.000' |
| | | let _endval = item.value && item.value[1] ? moment(item.value[1], 'YYYY-MM-DD').add(1, 'days').format('YYYY-MM-DD') + ' 00:00:00.000' : '2030-01-01 00:00:00.000' |
| | | |
| | | let copy = JSON.parse(JSON.stringify(item)) |
| | | copy.key = copy.key + '1' |
| | | copy.value = _endval |
| | | |
| | | item.value = _startval |
| | | |
| | | options.push(item) |
| | | options.push(copy) |
| | | } else if (item.type === 'multiselect') { |
| | | item.value = item.value ? item.value.join(',') : item.value |
| | | |
| | | options.push(item) |
| | | } else if (item.type === 'text') { |
| | | item.key.split(',').forEach(field => { // 综合搜索,所字段拼接 |
| | | let cell = JSON.parse(JSON.stringify(item)) |
| | | cell.key = field |
| | | |
| | | options.push(item) |
| | | }) |
| | | } else { |
| | | options.push(item) |
| | | } |
| | | }) |
| | | |
| | | return options |
| | | } |
| | | |
| | | /** |
| | | * @description 拼接搜索条件datamanage |
| | | * @param {Array} searches 搜索条件 |
| | | * @return {String} searchText 拼接结果 |