From 4d6b9f8a2d7b316633e43b489eae9ada949c07b5 Mon Sep 17 00:00:00 2001
From: king <18310653075@163.com>
Date: 星期二, 10 九月 2024 10:18:08 +0800
Subject: [PATCH] Merge branch 'master' into positec

---
 src/views/billprint/index.jsx |  150 ++++++++++++++++++++++++++++++++++++++++----------
 1 files changed, 120 insertions(+), 30 deletions(-)

diff --git a/src/views/billprint/index.jsx b/src/views/billprint/index.jsx
index 4ef6821..f708040 100644
--- a/src/views/billprint/index.jsx
+++ b/src/views/billprint/index.jsx
@@ -1,7 +1,8 @@
 import React, { Component } from 'react'
 import { is, fromJS } from 'immutable'
-import { Col, Row, Spin, notification, Button } from 'antd'
+import { Col, Row, Spin, notification, Button, Modal } from 'antd'
 import moment from 'moment'
+import md5 from 'md5'
 
 import Api from '@/api'
 import Utils from '@/utils/utils.js'
@@ -44,8 +45,11 @@
     visible: false,
     rePos: false,
     loading: false,
-    auto: true
+    auto: true,
+    ismob: /(phone|pad|pod|iPhone|iPod|ios|iPad|Android|Mobile|BlackBerry|IEMobile|MQQBrowser|JUC|Fennec|wOSBrowser|BrowserNG|WebOS|Symbian|Windows Phone)/i.test(navigator.userAgent)
   }
+
+  reloading = false
 
   UNSAFE_componentWillMount() {
     const { params } = this.props.match
@@ -62,6 +66,7 @@
         let param = JSON.parse(window.decodeURIComponent(window.atob(params.param)))
   
         sessionStorage.setItem('dataM', param.dataM || '')
+
         this.setState({
           BID: param.id || '',
           tempId: param.tempId,
@@ -87,7 +92,7 @@
   }
 
   componentDidMount() {
-    const _this = this
+    const that = this
 
     if (window.GLOB.sysType !== 'cloud') {
       Object.defineProperty(window, 'debugger', {
@@ -115,7 +120,7 @@
             window.GLOB.breakpoint = value + ''
             sessionStorage.setItem('breakpoint', value)
           }
-          _this.debugChange()
+          that.debugChange()
         }
       })
     }
@@ -141,7 +146,7 @@
         window.GLOB.breakpoint = false
         sessionStorage.removeItem('breakpoint')
         
-        _this.debugChange()
+        that.debugChange()
       }
     }
   }
@@ -165,8 +170,6 @@
         sessionStorage.setItem('UserID', result.UserID || '')
         sessionStorage.setItem('LoginUID', result.LoginUID || '')
         sessionStorage.setItem('dataM', 'false')
-
-        this.getMenuParam()
 
         // 鑾峰彇绯荤粺淇℃伅
         let _param = {
@@ -198,6 +201,8 @@
               document.getElementsByTagName('head')[0].appendChild(link)
             }
           }
+
+          this.getMenuParam()
         })
       } else {
         notification.warning({
@@ -251,6 +256,10 @@
           return
         }
 
+        if (config.webTitle) {
+          document.title = config.webTitle
+        }
+
         config.style = config.style || {}
         config.pageSize = ['A4', 'A3', 'A5'].includes(config.pageSize) ? config.pageSize : 'A4'
         config.pageLayout = config.pageLayout !== 'horizontal' ? 'vertical' : 'horizontal'
@@ -296,6 +305,22 @@
 
         config.components = config.components.filter(item => !['tabs', 'search'].includes(item.type))
 
+        if (window.backend && config.allSqls) {
+          let urlparam = urlParam || {}
+          let keys = Object.keys(urlparam)
+          config.allSqls.forEach(item => {
+            item.id = md5(window.GLOB.appkey + item.v_id)
+            if (item.type === 'datasource' || item.type === 'excelOut') {
+              item.urlkeys = keys
+              item.urlparam = urlparam
+              if (config.flow_code) {
+                item.works_flow_code = config.flow_code
+              }
+            }
+            window.GLOB.CacheData.set('sql_' + item.uuid, item)
+          })
+        }
+
         let userName = sessionStorage.getItem('User_Name') || ''
         let fullName = sessionStorage.getItem('Full_Name') || ''
 
@@ -325,7 +350,7 @@
 
         let initInters = []
 
-        this.formatInterSetting(config.interfaces, regs, initInters, params, BID)
+        this.formatInterSetting(config.interfaces, regs, initInters, params, BID, config.MenuName)
 
         config.components = config.components.map(component => {
           if (component.action) {
@@ -341,6 +366,8 @@
             component.$searches = []
           }
           component.data = [] // 鍒濆鍖栨暟鎹负绌�
+
+          component.$menuname = (config.MenuName || '') + '-' + (component.name || '')
 
           if (component.subtype === 'tablecard') { // 鍏煎
             component.type = 'card'
@@ -360,7 +387,9 @@
             let getColumns = (cols) => {
               return cols.filter(item => {
                 if (item.Hide === 'true') return false
-                  
+
+                item.IsSort = 'false'
+
                 if (item.type === 'number') {
                   if (typeof(item.decimal) === 'number') {
                     item.round = Math.pow(10, item.decimal)
@@ -394,6 +423,10 @@
                   }
                 } else {
                   item.IsSort = 'false'
+                }
+
+                if (item.marks && item.marks.length === 0) {
+                  item.marks = null
                 }
           
                 return true
@@ -461,11 +494,19 @@
           if (!component.format) return component  // 娌℃湁鍔ㄦ�佹暟鎹�  鏁版嵁鏍煎紡 array 鎴� object
 
           component.setting.arr_field = component.columns ? component.columns.map(col => col.field).join(',') : ''
+          component.setting.laypage = false   // 鏄惁鍒嗛〉锛岃浆涓篵oolean 缁熶竴鏍煎紡
+          component.setting.$name = component.$menuname
+
+          if (component.format === 'object') {
+            component.setting.$top = true
+          }
 
           if (component.setting.interType !== 'system') { // 涓嶄娇鐢ㄧ郴缁熷嚱鏁版椂
             component.setting.sync = 'false'
             return component
           }
+
+          component.setting.uuid = component.uuid
     
           let _customScript = ''
           let _tailScript = ''
@@ -484,7 +525,6 @@
           delete component.scripts
     
           component.setting.execute = component.setting.execute !== 'false'  // 榛樿sql鏄惁鎵ц锛岃浆涓篵oolean 缁熶竴鏍煎紡
-          component.setting.laypage = false   // 鏄惁鍒嗛〉锛岃浆涓篵oolean 缁熶竴鏍煎紡
           component.setting.onload = 'true'   // 榛樿鍔犺浇
     
           if (!component.setting.execute) {
@@ -512,6 +552,12 @@
     
           component.setting.customScript = _customScript // 鏁寸悊鍚庤嚜瀹氫箟鑴氭湰
           component.setting.tailScript = _tailScript     // 鍚庣疆鑷畾涔夎剼鏈�
+
+          if (window.backend && config.allSqls) {
+            component.setting.sync = 'false'
+          } else if (_tailScript) {
+            component.setting.sync = 'false'
+          }
     
           // floor    缁勪欢鐨勫眰绾�
           // pageable 鏄惁鍒嗛〉锛岀粍浠跺睘鎬э紝涓嶅垎椤电殑缁勪欢鎵嶅彲浠ョ粺涓�鏌ヨ
@@ -531,7 +577,7 @@
           return component
         })
 
-        _pars = this.getFormatParam(_pars)
+        _pars = this.getFormatParam(_pars, config.MenuName)
 
         if (_pars) {
           _pars.componentId = 'union'
@@ -610,6 +656,13 @@
     if (cell.style.display === 'inline-block') {
       cell.style.verticalAlign = 'top'
     }
+
+    if (cell.marks && cell.marks.length === 0) {
+      cell.marks = null
+    }
+    if (cell.anchors && cell.anchors.length === 0) {
+      cell.anchors = null
+    }
     
     if (['text', 'number', 'formula'].includes(cell.eleType)) {
       cell.innerHeight = cell.innerHeight || 'auto'
@@ -628,7 +681,7 @@
     return cell
   }
 
-  formatInterSetting = (inters, regs, initInters, params, BID) => {
+  formatInterSetting = (inters, regs, initInters, params, BID, MenuName) => {
     if (!inters) return []
 
     let delay = 15
@@ -640,6 +693,7 @@
 
       inter.setting.supModule = ''
       inter.setting.arr_field = inter.columns.map(col => col.field).join(',')
+      inter.setting.$name = (MenuName || '') + '-鍏叡鏁版嵁婧�-' + inter.setting.name
 
       if (inter.setting.interType !== 'system') {
         let param = UtilsDM.getQueryDataParams(inter.setting, [], inter.setting.order || '', 1, 1000, BID)
@@ -654,6 +708,8 @@
         }
         return
       }
+
+      inter.setting.uuid = inter.uuid
 
       let _customScript = ''
       let _tailScript = ''
@@ -671,9 +727,9 @@
       })
       delete inter.scripts
 
-      inter.setting.$name = '鍏叡鏁版嵁婧�-' + inter.setting.name
       inter.setting.execute = inter.setting.execute !== 'false'
-      inter.setting.laypage = true
+      inter.setting.laypage = false
+      inter.setting.$top = true
 
       if (!inter.setting.execute) {
         inter.setting.dataresource = ''
@@ -758,7 +814,7 @@
     }
   }
 
-  getFormatParam = (params) => {
+  getFormatParam = (params, MenuName) => {
     const { BID } = this.state
 
     if (!params || params.length === 0) return ''
@@ -785,6 +841,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'`},
     ]
 
@@ -809,8 +866,8 @@
 
       // 娴嬭瘯绯荤粺鎵撳嵃鏌ヨ璇彞
       if (window.GLOB.debugger === true) {
-        _script && console.info(`${_sql ? '' : '/*涓嶆墽琛岄粯璁ql*/\n'}${_script}`)
-        _sql &&  console.info(_sql)
+        _script && window.mkInfo(`${_sql ? '' : '/*涓嶆墽琛岄粯璁ql*/\n'}${_script}`)
+        _sql && window.mkInfo(_sql)
       }
 
       item.columns.forEach(cell => {
@@ -821,17 +878,21 @@
 
     let param = {
       func: 'sPC_Get_structured_data',
-      LText: LText.join(' union all '),
-      LText_field: LText_field.join(' union all '),
       BID: BID || '',
       username: userName,
       fullName: fullName
     }
 
-    param.LText = Utils.formatOptions(param.LText)
-    param.LText_field = Utils.formatOptions(param.LText_field)
+    if (MenuName) {
+      param.menuname = MenuName
+    }
+
+    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)
+
     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
   }
@@ -884,11 +945,18 @@
       return new Promise(resolve => {
         Api.genericInterface(item).then(res => {
           if (!res.status) {
-            notification.warning({
-              top: 92,
-              message: res.message,
-              duration: 5
-            })
+            if (item.func === 'sPC_Get_structured_data' && /灏嗘埅鏂瓧绗︿覆鎴栦簩杩涘埗鏁版嵁/ig.test(res.message)) {
+              res.message = res.message + '璇锋鏌ュ瓧娈甸泦'
+            }
+            if (res.ErrCode === 'version_up') {
+              this.reloadTabs()
+            } else {
+              notification.warning({
+                top: 92,
+                message: res.message,
+                duration: 5
+              })
+            }
             resolve(false)
           } else {
             res.componentId = componentId
@@ -1045,6 +1113,28 @@
       })
 
       this.setState({loadingview: false, pages, rePos})
+    })
+  }
+
+  reloadTabs = () => {
+    if (this.reloading) return
+
+    let time = new Date().getTime()
+
+    let oldTime = sessionStorage.getItem('mk_reloadTabs')
+    
+    if (oldTime && time - oldTime < 180000) return
+
+    sessionStorage.setItem('mk_reloadTabs', time)
+
+    this.reloading = true
+
+    Api.getAppVersion(true).then(() => {
+      window.location.reload()
+    }, (message) => {
+      Modal.error({
+        title: message || '绯荤粺閰嶇疆鏇存柊澶辫触锛�',
+      })
     })
   }
 
@@ -1299,7 +1389,7 @@
   }
 
   render() {
-    const { loadingview, viewlost, config, pages, auto, rePos, loading } = this.state
+    const { loadingview, viewlost, config, pages, auto, rePos, loading, ismob } = this.state
 
     return (
       <div className="bill-print-wrap" >
@@ -1309,8 +1399,8 @@
         </div> : null}
         {viewlost ? <NotFount msg={this.state.lostmsg} /> : null}
         {config && window.GLOB.breakpoint ? <DebugTable /> : null}
-        {pages && !loadingview && !viewlost ? <div className="print-button"><Button icon="printer" size="large" shape="circle" onClick={this.print}></Button></div> : null}
-        {!loadingview && !viewlost ? <div className="refresh-button"><Button icon="reload" size="large" shape="circle" onClick={this.reload}></Button></div> : null}
+        {pages && !loadingview && !viewlost && !ismob ? <div className="print-button"><Button icon="printer" size="large" shape="circle" onClick={this.print}></Button></div> : null}
+        {!loadingview && !viewlost && !ismob ? <div className="refresh-button"><Button icon="reload" size="large" shape="circle" onClick={this.reload}></Button></div> : null}
       </div>
     )
   }

--
Gitblit v1.8.0