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