From 169f6cd29a0d3add4fe2cf35c3579b45fa83c0d4 Mon Sep 17 00:00:00 2001 From: king <18310653075@163.com> Date: 星期二, 14 十一月 2023 00:02:45 +0800 Subject: [PATCH] 2023-11-14 --- src/utils/utils-custom.js | 233 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 226 insertions(+), 7 deletions(-) diff --git a/src/utils/utils-custom.js b/src/utils/utils-custom.js index 657a6f3..44a9750 100644 --- a/src/utils/utils-custom.js +++ b/src/utils/utils-custom.js @@ -1,11 +1,12 @@ import md5 from 'md5' +import { notification } from 'antd' export default class MenuUtils { /** * @description 鑾峰彇涓嬬骇妯″潡 * @return {String} selfId 褰撳墠缁勪欢id */ - static getSubModules (components, selfId, supId) { + static getSubModules (components, selfId, supId, has) { let modules = [] components.forEach(item => { if (item.uuid === selfId || item.type === 'navbar') { @@ -16,6 +17,17 @@ label: item.name, disabled: supId === item.uuid }) + + if (item.type === 'form' && item.subtype === 'simpleform' && item.wrap.refocus && supId !== item.uuid) { + modules.push({ + value: item.uuid + '$focus-refresh', + label: item.name + '锛堝埛鏂�-鑱氱劍锛�', + }) + modules.push({ + value: item.uuid + '$focus-nofresh', + label: item.name + '锛堜笉鍒锋柊-鑱氱劍锛�', + }) + } } else if (item.type === 'tabs') { if (item.subtype === 'tabletabs') { item.subtabs.forEach(tab => { @@ -37,7 +49,7 @@ type: 'tab', value: f_tab.uuid, label: f_tab.label, - children: this.getSubModules(f_tab.components, selfId, supId) + children: this.getSubModules(f_tab.components, selfId, supId, has) } if (subItem.children.length === 0) { @@ -558,6 +570,13 @@ } item.cols = loopCol(item.cols) + + if (item.colsCtrls) { + item.colsCtrls = item.colsCtrls.map(col => { + col.cols = col.cols.map(f => md5(commonId + f)) + return col + }) + } } else if (item.type === 'form') { item.subcards = item.subcards.map(cell => { cell.uuid = this.getuuid() @@ -664,11 +683,23 @@ } if (btn.syncComponent && btn.syncComponent[0] === 'multiComponent' && btn.syncComponents) { btn.syncComponents = btn.syncComponents.map(m => { - m.syncComId = m.syncComId.map(n => md5(commonId + n)) + m.syncComId = m.syncComId.map(n => { + if (/\$focus/.test(n)) { + return md5(commonId + n.split('$')[0]) + '$' + n.split('$')[1] + } + + return md5(commonId + n) + }) return m }) } else if (btn.syncComponent && btn.syncComponent.length > 0) { - btn.syncComponent = btn.syncComponent.map(m => md5(commonId + m)) + btn.syncComponent = btn.syncComponent.map(m => { + if (/\$focus/.test(m)) { + return md5(commonId + m.split('$')[0]) + '$' + m.split('$')[1] + } + + return md5(commonId + m) + }) } } @@ -851,6 +882,13 @@ } item.cols = loopCol(item.cols) + + if (item.colsCtrls) { + item.colsCtrls = item.colsCtrls.map(col => { + col.cols = col.cols.map(f => md5(commonId + f)) + return col + }) + } } else if (item.type === 'form') { item.subcards = item.subcards.map(cell => { cell.uuid = this.getuuid() @@ -919,6 +957,13 @@ if (item.setting && item.setting.supModule && item.setting.supModule[0] !== 'empty') { item.setting.supModule = '' } + + if (item.wrap && item.wrap.supType === 'multi') { + item.wrap.supType = 'single' + + delete item.supNodes + } + if (item.wrap && item.wrap.supModule) { item.wrap.supModule = '' } @@ -962,7 +1007,11 @@ if (item.type === 'date') { value = '1949-10-01 00:00:00.000' } else if (item.type === 'datemonth') { - value = '1949-10-01 00:00:00.000,1949-10-02 00:00:00.000' + if (item.match === '=') { + value = '1949-10' + } else { + value = '1949-10-01 00:00:00.000,1949-10-02 00:00:00.000' + } } else if (item.type === 'dateweek') { value = '1949-10-01 00:00:00.000,1949-10-02 00:00:00.000' } else if (item.type === 'daterange') { @@ -1014,9 +1063,16 @@ searchText.push(`('${item.value}' ${item.match} '%'+${item.key}+'%')`) } else if (item.type === 'date') { searchText.push('(' + item.key + ' ' + item.match + ' \'' + item.value + '\')') - } else if (item.type === 'datemonth' || item.type === 'dateweek' || item.type === 'range') { + } else if (item.type === 'dateweek' || item.type === 'range') { let val = item.value.split(',') searchText.push('(' + item.key + ' >= \'' + val[0] + '\' AND ' + item.key + ' < \'' + val[1] + '\')') + } else if (item.type === 'datemonth') { + if (item.match === '=') { + searchText.push('(' + item.key + ' = \'' + item.value + '\')') + } else { + let val = item.value.split(',') + searchText.push('(' + item.key + ' >= \'' + val[0] + '\' AND ' + item.key + ' < \'' + val[1] + '\')') + } } else if (item.type === 'daterange') { let val = item.value.split(',') @@ -1059,7 +1115,8 @@ value: `'${item.value}'` }) } - } else if (['dateweek', 'datemonth', 'range'].includes(item.type)) { + + } else if (['dateweek', 'range'].includes(item.type)) { let val = item.value.split(',') options.push({ reg: new RegExp('@' + item.key + '@', 'ig'), @@ -1068,6 +1125,22 @@ reg: new RegExp('@' + item.key + '1@', 'ig'), value: `'${val[1]}'` }) + } else if (item.type === 'datemonth') { + if (item.match === '=') { + options.push({ + reg: new RegExp('@' + item.key + '@', 'ig'), + value: `'${item.value}'` + }) + } else { + let val = item.value.split(',') + options.push({ + reg: new RegExp('@' + item.key + '@', 'ig'), + value: `'${val[0]}'` + }, { + reg: new RegExp('@' + item.key + '1@', 'ig'), + value: `'${val[1]}'` + }) + } } else if (item.type === 'daterange') { let val = item.value.split(',') let _skey = item.key @@ -1681,4 +1754,150 @@ } return errors +} + +/** + * @description 妫�娴媠ql + */ +export function checkSQL(sql, type) { + if (!sql) return true + + let label = '鏁版嵁婧愪腑' + if (type === 'customscript') { + label = '鑷畾涔塻ql璇彞涓�' + } + + let _quot = sql.match(/'{1}/g) + let _lparen = sql.match(/\({1}/g) + let _rparen = sql.match(/\){1}/g) + + _quot = _quot ? _quot.length : 0 + _lparen = _lparen ? _lparen.length : 0 + _rparen = _rparen ? _rparen.length : 0 + + if (_quot % 2 !== 0) { + notification.warning({ + top: 92, + message: 'sql涓璡'蹇呴』鎴愬鍑虹幇', + duration: 5 + }) + return false + } else if (_lparen !== _rparen) { + notification.warning({ + top: 92, + message: 'sql涓�()蹇呴』鎴愬鍑虹幇', + duration: 5 + }) + return false + } else if (/--/ig.test(sql)) { + let lines = [] + sql.split(/\n/).forEach((s, i) => { + if (/--/ig.test(s)) { + lines.push(i + 1) + } + }) + + lines = lines.join('銆�') + lines = lines ? '(绗�' + lines + '琛�)' : '' + + notification.warning({ + top: 92, + message: label + `${lines}锛屼笉鍙嚭鐜板瓧绗� -- 锛屾敞閲婅鐢� /*鍐呭*/`, + duration: 5 + }) + return false + } else if (/,,/ig.test(sql)) { + let lines = [] + sql.split(/\n/).forEach((s, i) => { + if (/,,/ig.test(s)) { + lines.push(i + 1) + } + }) + + lines = lines.join('銆�') + lines = lines ? '(绗�' + lines + '琛�)' : '' + + notification.warning({ + top: 92, + message: label + `${lines}锛屼笉鍙嚭鐜拌繛缁殑鑻辨枃閫楀彿,,`, + duration: 5 + }) + return false + } else if (/鈥榺鈥�/ig.test(sql)) { + let lines = [] + sql.split(/\n/).forEach((s, i) => { + if (/鈥榺鈥�/ig.test(s)) { + lines.push(i + 1) + } + }) + + lines = lines.join('銆�') + lines = lines ? '(绗�' + lines + '琛�)' : '' + + notification.warning({ + top: 92, + message: label + `${lines}锛屼笉鍙嚭鐜颁腑鏂囧崟寮曞彿`, + duration: 5 + }) + return false + } else if (type === 'customscript' && /\son\s+[a-z0-9_]+\.[a-z0-9_]+\s*=\s*[a-z0-9_]+\.[a-z0-9_]+/ig.test(sql)) { + let list = sql.match(/\son\s+[a-z0-9_]+\.[a-z0-9_]+\s*=\s*[a-z0-9_]+\.[a-z0-9_]+/ig) + let errors = [] + list.forEach(str => { + str = str.replace(/^\s/, '') + let strs = str.match(/(\s|=)[a-z0-9_]+\./ig) + if (strs.length === 2 && (strs[0].replace(/\s|\./g, '') === strs[1].replace(/\s|\./g, ''))) { + errors.push(str) + } + }) + + if (errors.length > 0) { + notification.warning({ + top: 92, + message: '涓嶅彲浣跨敤鍚屼竴涓〃瀛楁杩涜鍏宠仈锛�' + errors.join('銆�'), + duration: 5 + }) + return false + } + } + + let error = '' + 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} + ] + + if (type === 'customscript') { + chars = chars.filter(char => !['create', 'insert', 'delete', 'update', 'set', 'drop', 'if', 'exec'].includes(char.key)) + } + + sql = sql.replace(/sys\.fn_/ig, '') // 璺宠繃sys.fn_楠岃瘉 + + chars.forEach(char => { + if (!error && char.reg.test(sql)) { + error = char.key + } + }) + + if (error) { + notification.warning({ + top: 92, + message: 'sql涓笉鍙娇鐢�' + error, + duration: 5 + }) + return false + } + + return true } \ No newline at end of file -- Gitblit v1.8.0