From 547e5fe219ee7bee309ecd67db74bc8df66b5433 Mon Sep 17 00:00:00 2001
From: king <18310653075@163.com>
Date: 星期三, 23 八月 2023 11:47:45 +0800
Subject: [PATCH] 2023-08-23

---
 src/views/billprint/index.jsx |  168 +++++++++++++++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 159 insertions(+), 9 deletions(-)

diff --git a/src/views/billprint/index.jsx b/src/views/billprint/index.jsx
index d125630..7779306 100644
--- a/src/views/billprint/index.jsx
+++ b/src/views/billprint/index.jsx
@@ -322,6 +322,10 @@
 
         window.GLOB.CacheData.set(tempId, {$BID: BID})
 
+        let initInters = []
+
+        this.formatInterSetting(config.interfaces, regs, initInters, params, BID)
+
         config.components = config.components.map(component => {
           if (component.action) {
             component.action = component.action.filter(cell => {
@@ -434,19 +438,31 @@
 
           if (component.wrap && component.wrap.datatype === 'static') {
             component.format = ''
+          } else if (component.wrap && component.wrap.datatype === 'public') {
+            component.componentId = component.wrap.publicId
+            component.format = ''
           }
     
           if (!component.setting) return component // 涓嶄娇鐢ㄧ郴缁熷嚱鏁版椂
           if (!component.format) return component  // 娌℃湁鍔ㄦ�佹暟鎹�  鏁版嵁鏍煎紡 array 鎴� object
+
+          component.setting.arr_field = component.columns ? component.columns.map(col => col.field).join(',') : ''
+
           if (component.setting.interType !== 'system') { // 涓嶄娇鐢ㄧ郴缁熷嚱鏁版椂
             component.setting.sync = 'false'
             return component
           }
     
           let _customScript = ''
+          let _tailScript = ''
           component.scripts && component.scripts.forEach(script => {
-            if (script.status !== 'false') {
+            if (script.status === 'false') return
+            if (script.position !== 'back') {
               _customScript += `
+              ${script.sql}
+              `
+            } else {
+              _tailScript += `
               ${script.sql}
               `
             }
@@ -467,17 +483,21 @@
           if (sessionStorage.getItem('dataM') === 'true') { // 鏁版嵁鏉冮檺
             component.setting.dataresource = component.setting.dataresource.replace(/\$@/ig, '/*').replace(/@\$/ig, '*/').replace(/@datam@/ig, '\'Y\'')
             _customScript = _customScript.replace(/\$@/ig, '/*').replace(/@\$/ig, '*/').replace(/@datam@/ig, '\'Y\'')
+            _tailScript = _tailScript.replace(/\$@/ig, '/*').replace(/@\$/ig, '*/').replace(/@datam@/ig, '\'Y\'')
           } else {
             component.setting.dataresource = component.setting.dataresource.replace(/@\$|\$@/ig, '').replace(/@datam@/ig, '\'\'')
             _customScript = _customScript.replace(/@\$|\$@/ig, '').replace(/@datam@/ig, '\'\'')
+            _tailScript = _tailScript.replace(/@\$|\$@/ig, '').replace(/@datam@/ig, '\'\'')
           }
 
           regs.forEach(cell => {
             component.setting.dataresource = component.setting.dataresource.replace(cell.reg, cell.value)
             _customScript = _customScript.replace(cell.reg, cell.value)
+            _tailScript = _tailScript.replace(cell.reg, cell.value)
           })
     
           component.setting.customScript = _customScript // 鏁寸悊鍚庤嚜瀹氫箟鑴氭湰
+          component.setting.tailScript = _tailScript     // 鍚庣疆鑷畾涔夎剼鏈�
     
           // floor    缁勪欢鐨勫眰绾�
           // pageable 鏄惁鍒嗛〉锛岀粍浠跺睘鎬э紝涓嶅垎椤电殑缁勪欢鎵嶅彲浠ョ粺涓�鏌ヨ
@@ -485,9 +505,8 @@
             component.dataName = 'mk' + component.uuid.slice(-18)
             let param = this.getDefaultParam(component)
             _pars.push(param)
-          } else {
-            let arr_field = component.columns.map(col => col.field).join(',')
-            let param = UtilsDM.getQueryDataParams(component.setting, arr_field, [], component.setting.order || '', 1, 1000, BID)
+          } else if (component.subtype !== 'dualdatacard') {
+            let param = UtilsDM.getQueryDataParams(component.setting, [], component.setting.order || '', 1, 1000, BID)
             
             param.componentId = component.uuid
 
@@ -521,8 +540,10 @@
           auto: config.printPage === 'auto',
           config
         }, () => {
-          if (params.length === 0) {
+          if (params.length === 0 && initInters.length === 0) {
             this.setState({loadingview: false, pages: [config.components]})
+          } else if (initInters.length > 0) {
+            this.loadinit(initInters, params)
           } else {
             this.loadmaindata(params)
           }
@@ -576,6 +597,92 @@
     return cell
   }
 
+  formatInterSetting = (inters, regs, initInters, params, BID) => {
+    if (!inters) return []
+
+    let delay = 15
+    inters.forEach(inter => {
+      if (inter.status !== 'true') return
+
+      inter.setting.delay = delay
+      delay += 15
+
+      inter.setting.supModule = ''
+      inter.setting.arr_field = inter.columns.map(col => col.field).join(',')
+
+      if (inter.setting.interType !== 'system') {
+        let param = UtilsDM.getQueryDataParams(inter.setting, [], inter.setting.order || '', 1, 1000, BID)
+              
+        param.componentId = inter.uuid
+
+        if (inter.setting.loadlevel === 'init') {
+          initInters.push(param)
+        } else {
+          param.public = true
+          params.push(param)
+        }
+        return
+      }
+
+      let _customScript = ''
+      let _tailScript = ''
+      inter.scripts.forEach(script => {
+        if (script.status === 'false') return
+        if (script.position !== 'back') {
+          _customScript += `
+          ${script.sql}
+          `
+        } else {
+          _tailScript += `
+          ${script.sql}
+          `
+        }
+      })
+      delete inter.scripts
+
+      inter.setting.$name = '鍏叡鏁版嵁婧�-' + inter.setting.name
+      inter.setting.execute = inter.setting.execute !== 'false'
+      inter.setting.laypage = true
+
+      if (!inter.setting.execute) {
+        inter.setting.dataresource = ''
+      }
+      if (/\s/.test(inter.setting.dataresource)) {
+        inter.setting.dataresource = '(' + inter.setting.dataresource + ') tb'
+      }
+  
+      if (sessionStorage.getItem('dataM') === 'true') { // 鏁版嵁鏉冮檺
+        inter.setting.dataresource = inter.setting.dataresource.replace(/\$@/ig, '/*').replace(/@\$/ig, '*/').replace(/@datam@/ig, '\'Y\'')
+        _customScript = _customScript.replace(/\$@/ig, '/*').replace(/@\$/ig, '*/').replace(/@datam@/ig, '\'Y\'')
+        _tailScript = _tailScript.replace(/\$@/ig, '/*').replace(/@\$/ig, '*/').replace(/@datam@/ig, '\'Y\'')
+      } else {
+        inter.setting.dataresource = inter.setting.dataresource.replace(/@\$|\$@/ig, '').replace(/@datam@/ig, '\'\'')
+        _customScript = _customScript.replace(/@\$|\$@/ig, '').replace(/@datam@/ig, '\'\'')
+        _tailScript = _tailScript.replace(/@\$|\$@/ig, '').replace(/@datam@/ig, '\'\'')
+      }
+
+      regs.forEach(cell => {
+        inter.setting.dataresource = inter.setting.dataresource.replace(cell.reg, cell.value)
+        _customScript = _customScript.replace(cell.reg, cell.value)
+        _tailScript = _tailScript.replace(cell.reg, cell.value)
+      })
+
+      inter.setting.customScript = _customScript // 鏁寸悊鍚庤嚜瀹氫箟鑴氭湰
+      inter.setting.tailScript = _tailScript     // 鍚庣疆鑷畾涔夎剼鏈�
+
+      let param = UtilsDM.getQueryDataParams(inter.setting, [], inter.setting.order || '', 1, 1000, BID)
+            
+      param.componentId = inter.uuid
+
+      if (inter.setting.loadlevel === 'init') {
+        initInters.push(param)
+      } else {
+        param.public = true
+        params.push(param)
+      }
+    })
+  }
+
   reload = () => {
     const { tempId } = this.state
     
@@ -598,14 +705,13 @@
   getDefaultParam = (component) => {
     const { columns, setting, dataName, format } = component
     
-    let arr_field = columns.map(col => col.field)
     let _dataresource = setting.dataresource
     let _customScript = setting.customScript
 
     if (setting.order && _dataresource) {
-      _dataresource = `select top 1000 ${arr_field.join(',')} from (select ${arr_field.join(',')} ,ROW_NUMBER() over(order by ${setting.order}) as rows from ${_dataresource}) tmptable order by tmptable.rows `
+      _dataresource = `select top 1000 ${setting.arr_field} from (select ${setting.arr_field} ,ROW_NUMBER() over(order by ${setting.order}) as rows from ${_dataresource}) tmptable order by tmptable.rows `
     } else if (_dataresource) {
-      _dataresource = `select top 1000 ${arr_field.join(',')} from ${_dataresource} `
+      _dataresource = `select top 1000 ${setting.arr_field} from ${_dataresource} `
     }
 
     // 娴嬭瘯绯荤粺鎵撳嵃鏌ヨ璇彞
@@ -678,6 +784,40 @@
     return param
   }
 
+  loadinit = (initInters, params) => {
+    let deffers = initInters.map(item => {
+      let componentId = item.componentId
+      delete item.componentId
+      return new Promise(resolve => {
+        Api.genericInterface(item).then(res => {
+          if (!res.status) {
+            notification.warning({
+              top: 92,
+              message: res.message,
+              duration: 5
+            })
+            resolve()
+          } else {
+            let _data = { $$empty: true }
+            if (res.data && res.data[0]) {
+              _data = res.data[0]
+            }
+            window.GLOB.CacheData.set(componentId, _data)
+          }
+          resolve()
+        })
+      })
+    })
+
+    Promise.all(deffers).then(() => {
+      if (params.length === 0) {
+        this.setState({loadingview: false, pages: [this.state.config.components]})
+      } else {
+        this.loadmaindata(params)
+      }
+    })
+  }
+
   /**
    * @description 涓昏〃鏁版嵁鍔犺浇
    */ 
@@ -686,7 +826,9 @@
 
     let deffers = params.map(item => {
       let componentId = item.componentId
+      let ispublic = item.public
       delete item.componentId
+      delete item.public
       return new Promise(resolve => {
         Api.genericInterface(item).then(res => {
           if (!res.status) {
@@ -698,6 +840,14 @@
             resolve(false)
           } else {
             res.componentId = componentId
+
+            if (ispublic) {
+              let _data = { $$empty: true }
+              if (res.data && res.data[0]) {
+                _data = res.data[0]
+              }
+              window.GLOB.CacheData.set(componentId, _data)
+            }
             resolve(res)
           }
         })
@@ -718,7 +868,7 @@
         }
 
         _results.forEach(res => {
-          if (res.componentId === item.uuid && res.data) {
+          if ((res.componentId === item.uuid || res.componentId === item.componentId) && res.data) {
             item.dataArray = fromJS(res.data).toJS()
           } else if (res.componentId === 'union' && res[item.dataName]) {
             let data = res[item.dataName]

--
Gitblit v1.8.0