From 047dbd742341e268ca772eda8d2ff0b6ba09cb44 Mon Sep 17 00:00:00 2001 From: king <18310653075@163.com> Date: 星期四, 05 六月 2025 16:57:36 +0800 Subject: [PATCH] 2025-06-05 --- src/utils/utils-datamanage.js | 343 +++++++++++++++++++++++++++++++++++++++++++++++--------- 1 files changed, 284 insertions(+), 59 deletions(-) diff --git a/src/utils/utils-datamanage.js b/src/utils/utils-datamanage.js index eef1007..9507763 100644 --- a/src/utils/utils-datamanage.js +++ b/src/utils/utils-datamanage.js @@ -1,32 +1,165 @@ import md5 from 'md5' import moment from 'moment' +import { notification, Modal } from 'antd' + +import MKEmitter from '@/utils/events.js' import Utils from './utils.js' + +const getBackendQueryParam = (setting, search, orderBy, pageIndex, pageSize, id, BID, year, dataName) => { + let item = window.GLOB.CacheData.get('sql_' + setting.uuid) + + let searchKeys = null + if (setting.dataresource) { + searchKeys = [] + + if (search.length && setting.queryType !== 'statistics') { + searchKeys = Utils.getSearchkeys(search) + } + + if (id) { + if (/^excel:/.test(id)) { + id = id.replace(/^excel:/, '') + searchKeys.push({ + key: setting.primaryKey || 'ID', + match: '', + type: 'text_in', + value: id + }) + } else { + searchKeys.push({ + key: setting.primaryKey || 'ID', + match: '03', + type: 'text', + value: id + }) + } + } + } + + let values = { + time_id: Utils.getguid(), + roleid: sessionStorage.getItem('role_id') || '', + mk_departmentcode: sessionStorage.getItem('departmentcode') || '', + mk_organization: sessionStorage.getItem('organization') || '', + mk_user_type: sessionStorage.getItem('mk_user_type') || '', + mk_nation: sessionStorage.getItem('nation') || '', + mk_province: sessionStorage.getItem('province') || '', + mk_city: sessionStorage.getItem('city') || '', + mk_district: sessionStorage.getItem('district') || '', + mk_address: sessionStorage.getItem('address') || '', + orderby: orderBy || '', + pagesize: setting.laypage ? pageSize : '9999', + pageindex: pageIndex, + id: id || '', + bid: BID || '', + typename: 'admin', + datam: sessionStorage.getItem('dataM') === 'true' ? 'Y' : '', + datam_begin: sessionStorage.getItem('dataM') === 'true' ? 'Y' : '', + datam_end: sessionStorage.getItem('dataM') === 'true' ? 'Y' : '', + mk_obj_name: dataName || 'data' + } + + if (setting.hasExtend) { + values.mk_time = setting.extendTime + } + if (setting.$re_year) { + values.mk_year = year + } + if (window.GLOB.externalDatabase !== null) { + values.db = window.GLOB.externalDatabase + } + if (item.works_flow_code) { + values.works_flow_code = item.works_flow_code + } + + item.urlkeys && item.urlkeys.forEach(key => { + if (values.hasOwnProperty(key.toLowerCase())) return + + values[key] = item.urlparam[key] + }) + + let allSearch = Utils.getAllSearchOptions(search) + + allSearch.forEach(cell => { + values[cell.key.toLowerCase()] = cell.value + }) + + let exps = [] + + if (searchKeys) { + exps.push({ + key: 'mk_search', + value: searchKeys + }) + } + + item.reps.forEach(n => { + let key = n.toLowerCase() + if (values.hasOwnProperty(key)) { + exps.push({ + key: n, + value: values[key] + }) + } + }) + + let md5_id = '' + if (window.GLOB.probation) { + md5_id = md5(item.id + JSON.stringify(exps) + Math.floor(new Date().getTime() / 600000)) + md5_id = moment().format('YYYYMMDDHHmmss') + md5_id.slice(-18) + } + + let cell = { + id: item.id, + menuname: setting.$name || '', + exps: exps, + md5_id: md5_id + } + + if (dataName) { + cell.dataName = dataName + cell.luser = item.luser + return cell + } + + let param = { + $backend: true, + $type: 's_Get_TableData', + data: [cell] + } + + if (setting.database === 'sso' && window.GLOB.mainSystemApi) { + param.rduri = window.GLOB.mainSystemApi + } + + return param +} export default class DataUtils { /** - * @description 鏁版嵁婧愬悕绉帮紝鐢ㄤ簬缁熶竴鏌ヨ - * @param {Object} setting 鏁版嵁婧愯缃� - * @param {Array} search 鎼滅储鏉′欢 - * @param {String} orderBy 鎺掑簭鏂瑰紡 - * @param {Number} pageIndex 椤电爜 - * @param {Number} pageSize 姣忛〉鏁伴噺 - * @param {String} BID 涓婄骇ID + * @description 鏁版嵁婧愮粺涓�鏌ヨ */ static getQueryDataParams (setting, search = [], orderBy = '', pageIndex = 1, pageSize = 10, BID, id, year) { let param = null if (setting.interType === 'system') { - param = this.getDefaultQueryParam(setting, search, orderBy, pageIndex, pageSize, id, BID, year) + if (window.backend && window.GLOB.CacheData.has('sql_' + setting.uuid)) { + param = getBackendQueryParam(setting, search, orderBy, pageIndex, pageSize, id, BID, year) + } else { + param = this.getDefaultQueryParam(setting, search, orderBy, pageIndex, pageSize, id, BID, year) + param.BID = BID || '' + param.dataM = sessionStorage.getItem('dataM') === 'true' ? 'Y' : '' + } } else { param = this.getCustomQueryParam(setting, search, orderBy, pageIndex, pageSize, id, year) - } - if (BID) { - param.BID = BID - } - // 鏁版嵁绠$悊鏉冮檺 - if (sessionStorage.getItem('dataM') === 'true') { - param.dataM = 'Y' + if (BID) { + param.BID = BID + } + // 鏁版嵁绠$悊鏉冮檺 + if (sessionStorage.getItem('dataM') === 'true') { + param.dataM = 'Y' + } } return param @@ -51,6 +184,10 @@ param.mk_year = year } + if (setting.hasExtend) { + param.mk_time = setting.extendTime + } + if (setting.interType === 'inner') { param.func = setting.innerFunc @@ -68,6 +205,12 @@ param.$token = setting.exProInterface || '' } else { param.$token = setting.exInterface || '' + } + } else if (setting.sysInterface === 'custom') { + if (window.GLOB.systemType === 'production') { + param.rduri = setting.proInterface + } else { + param.rduri = setting.interface } } else { if (window.GLOB.systemType === 'production' && setting.proInterface) { @@ -96,7 +239,7 @@ let param = { func: 'sPC_Get_TableData', obj_name: 'data', - exec_type: 'y', + exec_type: window.GLOB.execType || 'y', arr_field: setting.arr_field, default_sql: setting.execute ? 'true' : 'false' } @@ -135,20 +278,24 @@ { reg: /@orderBy@/ig, value: orderBy }, { reg: /@pageSize@/ig, value: setting.laypage ? pageSize : '9999' }, { reg: /@pageIndex@/ig, value: pageIndex}, - { reg: /@select\$|\$select@/ig, value: ''}, - { reg: /\$sum@/ig, value: '/*'}, - { reg: /@sum\$/ig, value: '*/'}, + // { reg: /@select\$|\$select@/ig, value: ''}, + // { reg: /\$sum@/ig, value: '/*'}, + // { reg: /@sum\$/ig, value: '*/'}, { reg: /@ID@/ig, value: `'${id || ''}'`}, { reg: /@BID@/ig, value: `'${BID || ''}'`}, { reg: /@LoginUID@/ig, value: `'${sessionStorage.getItem('LoginUID') || ''}'`}, { reg: /@SessionUid@/ig, value: `'${localStorage.getItem('SessionUid') || ''}'`}, { reg: /@UserID@/ig, value: `'${sessionStorage.getItem('UserID') || ''}'`}, { reg: /@Appkey@/ig, value: `'${window.GLOB.appkey || ''}'`}, + { reg: /@lang@/ig, value: `'${sessionStorage.getItem('lang')}'`}, { reg: /@typename@/ig, value: `'admin'`}, ) + if (setting.hasExtend) { + regoptions.push({ reg: /@mk_time@/ig, value: `'${setting.extendTime}'` }) + } if (setting.$re_year) { - regoptions.push({ reg: /@mk_year@/ig, value: year }) + regoptions.push({ reg: /@mk_year@/ig, value: `'${year}'` }) } regoptions.forEach(item => { @@ -269,18 +416,18 @@ // 娴嬭瘯绯荤粺鎵撳嵃鏌ヨ璇彞 if (window.GLOB.debugger === true) { - _customScript && console.info(`${setting.$name ? `/*${setting.$name} 鑷畾涔夎剼鏈�*/\n` : ''}${LText ? '' : '/*涓嶆墽琛岄粯璁ql*/\n'}${_customScript}`) - LText && console.info(`${setting.$name ? `/*${setting.$name} 鏁版嵁婧�*/\n` : ''}` + LText.replace(/\n\s{8}/ig, '\n')) - DateCount && console.info(`${setting.$name ? `/*${setting.$name} 鎬绘暟鏌ヨ*/\n` : ''}` + DateCount.replace(/\n\s{8}/ig, '\n')) + _customScript && window.mkInfo(`${setting.$name ? `/*${setting.$name} 鑷畾涔夎剼鏈�*/\n` : ''}${LText ? '' : '/*涓嶆墽琛岄粯璁ql*/\n'}${_customScript}`) + LText && window.mkInfo(`${setting.$name ? `/*${setting.$name} 鏁版嵁婧�*/\n` : ''}` + LText.replace(/\n\s{8}/ig, '\n')) + DateCount && window.mkInfo(`${setting.$name ? `/*${setting.$name} 鎬绘暟鏌ヨ*/\n` : ''}` + DateCount.replace(/\n\s{8}/ig, '\n')) } if (setting.$name) { param.menuname = setting.$name } - param.custom_script = Utils.formatOptions(_customScript) - param.LText = Utils.formatOptions(LText) - param.DateCount = Utils.formatOptions(DateCount) + param.custom_script = Utils.formatOptions(_customScript, param.exec_type) + param.LText = Utils.formatOptions(LText, param.exec_type) + param.DateCount = Utils.formatOptions(DateCount, param.exec_type) if (setting.sub_field) { param.sub_name = setting.subdata @@ -289,9 +436,9 @@ param.sub_field = setting.sub_field } - // exec_type: 'y' 瑙g爜瀛楁锛歀Text銆丩Text1銆丩Text2銆乧ustom_script銆丏ateCount + // exec_type 瑙g爜瀛楁锛歀Text銆丩Text1銆丩Text2銆乧ustom_script銆丏ateCount - param.timestamp = moment().format('YYYY-MM-DD HH:mm:ss') + param.timestamp = moment().format('YYYY-MM-DD HH:mm:ss.SSS') param.secretkey = Utils.encrypt('', param.timestamp) param.username = userName @@ -301,10 +448,6 @@ param.s_debug_type = 'Y' } - if (window.GLOB.forcedUpdate) { - param.s_version_up = 'true' - } - if (window.GLOB.mkHS) { // 浜戠鏁版嵁楠岃瘉 param.open_key = Utils.encryptOpenKey(param.secretkey, param.timestamp) @@ -312,6 +455,12 @@ if (setting.tableName === 's_custom_script' && window.GLOB.mainSystemApi) { param.rduri = window.GLOB.mainSystemApi } + } else if (window.GLOB.forcedUpdate) { + param.s_version_up = 'true' + } + + if (setting.database === 'sso' && window.GLOB.mainSystemApi) { + param.rduri = window.GLOB.mainSystemApi } return param @@ -324,7 +473,7 @@ let param = { func: 'sPC_Get_TableData', obj_name: 'data', - exec_type: 'y', + exec_type: window.GLOB.execType || 'y', arr_field: statFields.map(col => col.field).join(','), default_sql: setting.execute ? 'true' : 'false' } @@ -362,15 +511,16 @@ { reg: /@orderBy@/ig, value: orderBy }, { reg: /@pageSize@/ig, value: 999999 }, { reg: /@pageIndex@/ig, value: 1}, - { reg: /\$select@/ig, value: '/*'}, - { reg: /@select\$/ig, value: '*/'}, - { reg: /@sum\$|\$sum@/ig, value: ''}, + // { reg: /\$select@/ig, value: '/*'}, + // { reg: /@select\$/ig, value: '*/'}, + // { reg: /@sum\$|\$sum@/ig, value: ''}, { reg: /@ID@/ig, value: `''`}, { reg: /@BID@/ig, value: `'${BID || ''}'`}, { reg: /@LoginUID@/ig, value: `'${sessionStorage.getItem('LoginUID') || ''}'`}, { reg: /@SessionUid@/ig, value: `'${localStorage.getItem('SessionUid') || ''}'`}, { reg: /@UserID@/ig, value: `'${sessionStorage.getItem('UserID') || ''}'`}, { reg: /@Appkey@/ig, value: `'${window.GLOB.appkey || ''}'`}, + { reg: /@lang@/ig, value: `'${sessionStorage.getItem('lang')}'`}, { reg: /@typename@/ig, value: `'admin'`}, ) @@ -405,16 +555,16 @@ // 娴嬭瘯绯荤粺鎵撳嵃鏌ヨ璇彞 if (window.GLOB.debugger === true) { - _customScript && console.info(`${setting.$name ? `/*${setting.$name} 鑷畾涔夎剼鏈� 缁熻鏌ヨ*/\n` : ''}${LText ? '' : '/*涓嶆墽琛岄粯璁ql*/\n'}${_customScript}`) - LText && console.info(`${setting.$name ? `/*${setting.$name} 鏁版嵁婧� 缁熻鏌ヨ*/\n` : ''}` + LText.replace(/\n\s{8}/ig, '\n')) + _customScript && window.mkInfo(`${setting.$name ? `/*${setting.$name} 鑷畾涔夎剼鏈� 缁熻鏌ヨ*/\n` : ''}${LText ? '' : '/*涓嶆墽琛岄粯璁ql*/\n'}${_customScript}`) + LText && window.mkInfo(`${setting.$name ? `/*${setting.$name} 鏁版嵁婧� 缁熻鏌ヨ*/\n` : ''}` + LText.replace(/\n\s{8}/ig, '\n')) } if (setting.$name) { param.menuname = setting.$name } - param.custom_script = Utils.formatOptions(_customScript) - param.LText = Utils.formatOptions(LText) + param.custom_script = Utils.formatOptions(_customScript, param.exec_type) + param.LText = Utils.formatOptions(LText, param.exec_type) param.DateCount = '' param.timestamp = moment().format('YYYY-MM-DD HH:mm:ss') @@ -438,13 +588,62 @@ return param } + + /** + * @description 鏁版嵁鑾峰彇鎴愬姛 + */ + static querySuccess (result) { + if (!result.message) return + + if (result.ErrCode === 'Y') { + Modal.success({ + title: result.message + }) + } else if (result.ErrCode === 'S') { + notification.success({ + top: 92, + message: result.message, + duration: 2 + }) + } + } + + /** + * @description 鏁版嵁鑾峰彇澶辫触 + */ + static queryFail (result) { + if (!result.message && result.ErrCode !== 'version_up') return + + if (result.ErrCode === 'N') { + Modal.error({ + title: result.message, + }) + } else if (result.ErrCode === 'version_up') { + MKEmitter.emit('reloadTabs') + } else if (result.ErrCode !== '-2') { + notification.error({ + top: 92, + message: result.message, + duration: 10 + }) + } + } } /** * @description 鐢熸垚鍗曚釜缁勪欢sPC_Get_structured_data璇锋眰鍙傛暟 */ -export function getStructDefaultParam (component, searchlist, first) { +export function getStructDefaultParam (component, searchlist, first, BID) { const { columns, setting, dataName, format, uuid } = component + + if (window.backend && window.GLOB.CacheData.has('sql_' + uuid)) { + if (first) { + let item = window.GLOB.CacheData.get('sql_' + uuid) + window.GLOB.CacheData.set('first_' + item.id, uuid) + } + + return getBackendQueryParam(setting, searchlist, setting.order, 1, 1000, '', BID, '', dataName) + } let _dataresource = setting.dataresource let _customScript = setting.customScript @@ -501,7 +700,7 @@ return { uuid: uuid, - name: dataName, + dataName: dataName, $name: setting.$name, columns: columns, par_tablename: '', @@ -516,9 +715,41 @@ /** * @description 鐢熸垚sPC_Get_structured_data璇锋眰鍙傛暟 - * 1銆佹妸澶ф帴鍙PC_Get_structured_data鐨刲text鎷嗘垚涓変唤锛岀涓�娈碉細@LText1锛岀浜屾@LText锛岀涓夋@LText2 */ export function getStructuredParams (params, config, BID) { + if (window.backend && params[0].exps) { + let param = { + $backend: true, + $type: 's_Get_structured_data', + data: params.map(item => { + let cell = {...item} + + delete cell.dataName + delete cell.luser + + return cell + }) + } + + if (config.cacheUseful === 'true') { + param.time_limit = config.cacheTime + + if (config.timeUnit === 'day') { + param.time_limit = param.time_limit * 1440 + } else if (config.timeUnit === 'hour') { + param.time_limit = param.time_limit * 60 + } + + if (params.findIndex(item => item.luser) > -1) { + param.data_md5 = md5(window.GLOB.appkey + params[0].id + sessionStorage.getItem('UserID')) + } else { + param.data_md5 = md5(window.GLOB.appkey + params[0].id) + } + } + + return param + } + let LText_field = [] let diffUser = false @@ -531,6 +762,7 @@ { reg: /@SessionUid@/ig, value: `'${localStorage.getItem('SessionUid') || ''}'`}, { reg: /@UserID@/ig, value: `'${sessionStorage.getItem('UserID') || ''}'`}, { reg: /@Appkey@/ig, value: `'${window.GLOB.appkey || ''}'`}, + { reg: /@lang@/ig, value: `'${sessionStorage.getItem('lang')}'`}, { reg: /@typename@/ig, value: `'admin'`}, ] @@ -552,35 +784,28 @@ // 娴嬭瘯绯荤粺鎵撳嵃鏌ヨ璇彞 if (window.GLOB.debugger === true) { - _script && console.info(`${item.$name ? `/*${item.$name} 鑷畾涔夎剼鏈紙鍚屾鏌ヨ锛�*/\n` : ''}${_sql ? '' : '/*涓嶆墽琛岄粯璁ql*/\n'}${_script}`) - _sql && console.info(`${item.$name ? `/*${item.$name} 鏁版嵁婧愶紙鍚屾鏌ヨ锛�*/\n` : ''}` + _sql) + _script && window.mkInfo(`${item.$name ? `/*${item.$name} 鑷畾涔夎剼鏈紙鍚屾鏌ヨ锛�*/\n` : ''}${_sql ? '' : '/*涓嶆墽琛岄粯璁ql*/\n'}${_script}`) + _sql && window.mkInfo(`${item.$name ? `/*${item.$name} 鏁版嵁婧愶紙鍚屾鏌ヨ锛�*/\n` : ''}` + _sql) } item.columns.forEach(cell => { - LText_field.push(`Select '${item.name}' as tablename,'${cell.field}' as fieldname,'${cell.datatype}' as field_type`) + LText_field.push(`Select '${item.dataName}' as tablename,'${cell.field}' as fieldname,'${cell.datatype}' as field_type`) }) - return `Select '${item.name}' as tablename,'${window.btoa(window.encodeURIComponent(_sql))}' as LText,'${window.btoa(window.encodeURIComponent(_script))}' as Lcustomize,'${item.type}' as table_type,'${item.primaryKey}' as primary_key,'${item.par_tablename}' as par_tablename,'${item.foreign_key}' as foreign_key,'${index}' as Sort` + return `Select '${item.dataName}' as tablename,'${window.btoa(window.encodeURIComponent(_sql))}' as LText,'${window.btoa(window.encodeURIComponent(_script))}' as Lcustomize,'${item.type}' as table_type,'${item.primaryKey}' as primary_key,'${item.par_tablename}' as par_tablename,'${item.foreign_key}' as foreign_key,'${index}' as Sort` }) let param = { func: 'sPC_Get_structured_data', - LText: _LText.join(' union all '), - LText_field: LText_field.join(' union all '), BID: BID, username: sessionStorage.getItem('User_Name') || '', fullName: sessionStorage.getItem('Full_Name') || '' } - if (config.MenuName) { - param.menuname = config.MenuName - } + param.menuname = config.MenuName || config.$menuname || '' - let { LText, LText1, LText2 } = Utils.sPCInUpDeFormatOptions(param.LText) - - param.LText1 = LText1 - param.LText = LText - param.LText2 = LText2 - param.LText_field = Utils.formatOptions(param.LText_field) + param.exec_type = window.GLOB.execType || 'y' + param.LText = Utils.formatOptions(_LText.join(' union all '), param.exec_type) + param.custom_script = Utils.formatOptions(LText_field.join(' union all '), param.exec_type) if (config.cacheUseful === 'true') { param.time_type = config.timeUnit @@ -592,7 +817,7 @@ } param.timestamp = moment().format('YYYY-MM-DD HH:mm:ss') - param.secretkey = Utils.encrypt(param.LText, param.timestamp) + param.secretkey = Utils.encrypt('', param.timestamp) return param } \ No newline at end of file -- Gitblit v1.8.0