From d712ae0a0d338bdc96c463c9ffe42f8c844f3c37 Mon Sep 17 00:00:00 2001
From: king <18310653075@163.com>
Date: 星期四, 02 三月 2023 12:46:57 +0800
Subject: [PATCH] Merge branch 'master' into positec

---
 src/tabviews/zshare/actionList/exceloutbutton/index.jsx |   79 ++++++++++++++++++++++++++++++++++-----
 1 files changed, 69 insertions(+), 10 deletions(-)

diff --git a/src/tabviews/zshare/actionList/exceloutbutton/index.jsx b/src/tabviews/zshare/actionList/exceloutbutton/index.jsx
index 41f9ddb..5615c35 100644
--- a/src/tabviews/zshare/actionList/exceloutbutton/index.jsx
+++ b/src/tabviews/zshare/actionList/exceloutbutton/index.jsx
@@ -594,29 +594,68 @@
 
         this.table2excel(column, table, this.state.excelName.replace(/\.xlsx/ig, '.xls'))
 
-        if (btn.verify && btn.verify.enable === 'true' && btn.verify.script) {
+        if (btn.verify.enable === 'true' && btn.verify.script) {
           this.execCustomScript()
         } else {
           this.execSuccess({ErrCode: 'S', ErrMesg: '瀵煎嚭鎴愬姛锛�'})
         }
       } else {
+        let letters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+        let cols = []
+
+        for (let index = 0; index < columns.length; index++) {
+          let i = Math.floor(index / 26)
+          let s = letters[i - 1] || ''
+          
+          cols.push(s + letters[index % 26])
+        }
+
+        let table = []
         let _header = []
         let _topRow = {}
         let colwidth = []
         let requires = []
+        let merges = []
 
         columns.forEach((col, i) => {
           _header.push(col.Column)
           _topRow[col.Column] = col.Text
-          colwidth.push({width: col.Width || 20})
+          colwidth.push({wch: col.Width || 20})
           if (col.required === 'true') {
             requires.push(i)
           }
         })
-  
-        let table = []
-  
-        table.push(_topRow)
+
+        if (btn.verify.merge === 'true') {
+          let fLine = {}
+          let sLine = {}
+          let sign = ''
+          columns.forEach((col, i) => {
+            if (/.+-.+/.test(col.Text)) {
+              let _sign = col.Text.split('-')[0]
+              let _name = col.Text.split('-')[1]
+              fLine[col.Column] = _sign
+              sLine[col.Column] = _name
+
+              if (sign === _sign) {
+                merges[merges.length - 1] = merges[merges.length - 1].split(':')[0] + `:${cols[i]}1`
+              } else {
+                merges.push(`${cols[i]}1:${cols[i]}2`)
+                sign = _sign
+              }
+            } else {
+              fLine[col.Column] = col.Text
+              sLine[col.Column] = col.Text
+              sign = ''
+              merges.push(`${cols[i]}1:${cols[i]}2`)
+            }
+          })
+
+          table.push(fLine)
+          table.push(sLine)
+        } else {
+          table.push(_topRow)
+        }
   
         data && data.forEach((item, index) => {
           let _row = {}
@@ -646,22 +685,42 @@
 
         ws['!cols'] = colwidth
 
+        if (btn.verify.rowHeight) {
+          ws['!rows'] = Array(table.length).fill({hpx: btn.verify.rowHeight})
+        }
+
         if (requires.length) {
-          let cols = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
           requires.forEach(col => {
             if (cols[col]) {
               ws[cols[col] + '1'].s = {font: { color: { rgb: 'F5222D' } }}
             }
           })
         }
+
+        if (merges.length) {
+          ws['!merges'] = []
+          merges.forEach(item => {
+            ws['!merges'].push(XLSX.utils.decode_range(item))
+          })
+
+          cols.forEach(col => {
+            if (ws[col + '1'].s) {
+              ws[col + '1'].s = {font: { color: { rgb: 'F5222D' } }, alignment: { horizontal: 'center', vertical: 'center' }}
+            } else {
+              ws[col + '1'].s = {alignment: { horizontal: 'center', vertical: 'center' }}
+            }
+            ws[col + '2'].s = {alignment: { horizontal: 'center', vertical: 'center' }}
+          })
+        }
+
         // ws["A1"].s = {fill: { bgColor: { rgb: "FFFFAA"  }}, font: { color: { rgb: "1890FF" } }}
-  
+
         const wb = XLSX.utils.book_new()
-        XLSX.utils.book_append_sheet(wb, ws, 'Sheet1')
+        XLSX.utils.book_append_sheet(wb, ws, btn.verify.sheet || 'Sheet1')
   
         XLSX.writeFile(wb, this.state.excelName)
   
-        if (btn.verify && btn.verify.enable === 'true' && btn.verify.script) {
+        if (btn.verify.enable === 'true' && btn.verify.script) {
           this.execCustomScript()
         } else {
           this.execSuccess({ErrCode: 'S', ErrMesg: '瀵煎嚭鎴愬姛锛�'})

--
Gitblit v1.8.0