From a8c4a6b45917cabe278d0c47ee99b97eec8f1ae8 Mon Sep 17 00:00:00 2001
From: mk <2403457699@qq.com>
Date: Wed, 12 Mar 2025 13:50:19 +0800
Subject: [PATCH] =?UTF-8?q?=E6=A8=A1=E6=9D=BF=E5=AF=BC=E5=85=A5=E6=96=B0?=
 =?UTF-8?q?=E5=A2=9E=E8=81=94=E8=B0=83?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
 .../smartExcel/cpts/excel-upload-data.vue     |   1 +
 .../base/smartExcel/cpts/export-view.vue      | 103 +++++++++++-------
 src/views/modules/base/smartExcel/filling.vue |   2 +-
 3 files changed, 65 insertions(+), 41 deletions(-)
diff --git a/src/views/modules/base/smartExcel/cpts/excel-upload-data.vue b/src/views/modules/base/smartExcel/cpts/excel-upload-data.vue
index fa8904f8f..fb8434235 100644
--- a/src/views/modules/base/smartExcel/cpts/excel-upload-data.vue
+++ b/src/views/modules/base/smartExcel/cpts/excel-upload-data.vue
@@ -269,6 +269,7 @@ export default {
         }
         this.$emit('handleUploadDataHide', data)
       } else {
+        this.dataListLoading = false;
         console.log(msg);
       }
     },
diff --git a/src/views/modules/base/smartExcel/cpts/export-view.vue b/src/views/modules/base/smartExcel/cpts/export-view.vue
index 81189103e..968911813 100644
--- a/src/views/modules/base/smartExcel/cpts/export-view.vue
+++ b/src/views/modules/base/smartExcel/cpts/export-view.vue
@@ -18,7 +18,7 @@
     
       
+        :btnLoading="btnLoading" :pageType='`report`' :workBookId="workBookId" @saveLuckysheetHead="saveLuckysheetHead">
       
     
     
     
-      
+      
         
           
         
@@ -73,7 +72,6 @@ export default {
       currentTable: null,
       currentId: '',
       btnLoading: false,
-      workBookId: '',
       infoObj: {},
       showCondition: false,
       showTemplate: false,
@@ -81,11 +79,15 @@ export default {
         reportType: 1,//报表类型。0:数据列表,1:统计数据
         reportName: '',//报表名称
         workbookId: '',
+        formCode: "",
+        columnsJson: [],
+        searchForm: {}
       },
       dataRule: {
         reportName: [{ required: true, message: this.$t('validate.required'), trigger: 'blur' }]
       },
-      exportJson:null,
+      exportJson: null,
+      importType: ''//template 上传统计模板 list 列表导出
     };
   },
   props: {
@@ -108,29 +110,36 @@ export default {
   },
   watch: {},
   async mounted() {
-    await this.loadWorkBook()
     this.$nextTick(async () => {
       if (this.pageType === 'info') {
+        await this.loadWorkBook()
         await this.getSheetList()
-        let heading = this.infoObj.columnsJson[0].children.map(item => ({ label: item.label }))
-        for (let i in heading) {
-          luckysheet.setCellValue(0, i, heading[i].label)
-        }
-        let list = await this.getListData(this.infoIds.id);
-        let newArrar = luckysheet.getAllSheets();
-        this.currentTable = newArrar.filter(item => item.status == '1');
-        luckysheet.insertRow(this.currentTable[0].data.length, 1)
-        luckysheet.insertRow(this.currentTable[0].data.length, { number: list.length });
-        await nextTick(500)
-        let newArray = list.map(obj => {
-          return Object.keys(obj).map(key => {
-            return { m: obj[key], "ct": { "fa": "General", "t": "g" }, v: obj[key] };
+        if (this.infoObj.reportType === 0) {
+          let heading = this.infoObj.columnsJson[0].children.map(item => ({ label: item.label }))
+          for (let i in heading) {
+            luckysheet.setCellValue(0, i, heading[i].label)
+          }
+          let list = await this.getListData(this.infoIds.id);
+          let newArrar = luckysheet.getAllSheets();
+          this.currentTable = newArrar.filter(item => item.status == '1');
+          luckysheet.insertRow(this.currentTable[0].data.length, 1)
+          luckysheet.insertRow(this.currentTable[0].data.length, { number: list.length });
+          await nextTick(500)
+          let newArray = list.map(obj => {
+            return Object.keys(obj).map(key => {
+              return { m: obj[key], "ct": { "fa": "General", "t": "g" }, v: obj[key] };
+            });
           });
-        });
-        let bottomRightCorner = this.numberToLetter(Object.keys(list[0]).length)//选区右下角数字
-        luckysheet.setRangeValue(newArray, {
-          range: `A2:${bottomRightCorner}${2 + list.length}`,
-        })
+          let bottomRightCorner = this.numberToLetter(Object.keys(list[0]).length)//选区右下角数字
+          luckysheet.setRangeValue(newArray, {
+            range: `A2:${bottomRightCorner}${list.length}`,
+          })
+        }else{
+        await this.loadWorkBook(this.infoObj.workbookId)
+
+        }
+      }else{
+        await this.loadWorkBook()
       }
     })
   },
@@ -163,12 +172,10 @@ export default {
         throw error;
       }
     },
-    uploadExcel(files) {
+    async uploadExcel(files) {
       if (!files) return alert('没有文件等待导入');
       let that = this
       LuckyExcel.transformExcelToLucky(files, function (exportJson, luckysheetfile) {
-        console.log(exportJson, '获取到导入的JSON');
-        that.exportJson = exportJson
         if (exportJson.sheets == null || exportJson.sheets.length == 0) return alert('读取excel文件内容失败, 目前不支持XLS文件!');
         window.luckysheet.destroy();
         options.container = 'luckysheet-export'
@@ -179,8 +186,10 @@ export default {
           title: exportJson.info.name,
           hook: {},
         });
+
       });
-      this.saveLuckysheet()
+     await nextTick(1000)
+     await this.saveLuckysheetHead()
     },
     beforeExcelUpload(file) {
       this.fullscreenLoading = true;
@@ -200,7 +209,7 @@ export default {
       return fileType && isLt1M;
     },
     onClickShowCondition() {
-      this.showCondition = true
+      this.showCondition = true;
     },
     async getSheetList() {
       const { data, code } = await requestGet('/actual/base/intellgentizeReport/detail', { id: this.infoIds.id })
@@ -214,16 +223,17 @@ export default {
     // 上传模板
     async handleClickInspect() {
       this.showTemplate = true;
+      this.importType = 'template'
     },
 
     onClickUplond() {
       this.showUploadData = true;
       let list = luckysheet.getAllSheets()
       this.currentTable = list.filter(item => item.status == '1')
-
+      this.importType = 'list'
     },
     async handleUploadDataHide(val) {
-      let listData = await this.getListData(val.id)
+      const listData = await this.getListData(val.id)
       luckysheet.insertRow(this.currentTable[0].data.length, 1)
       luckysheet.insertRow(this.currentTable[0].data.length, { number: listData.length });
       this.showUploadData = false;
@@ -235,21 +245,34 @@ export default {
       });
       let bottomRightCorner = this.numberToLetter(Object.keys(listData[0]).length)//选区右下角数字
       luckysheet.setRangeValue(newArray, {
-        range: `A2:${bottomRightCorner}${2 + listData.length}`,
+        range: `A2:${bottomRightCorner}${listData.length}`,
       })
-
     },
-    async saveLuckysheet(head) {
-      if (this.currentTable[0].data[0].every(item => !item) && head) {
+    async saveLuckysheetHead(head) {
+      // this.currentTable[0].data[0].every(item => !item) &&
+      if (head && this.importType === 'list') {
         let temp = head.map(item => item.children).flat();
         for (let i in temp) {
           luckysheet.setCellValue(0, i, temp[i].label)
         }
       }
       let luckysheetJson = luckysheet.getAllSheets()
-      const { data, code, msg } = await requestPost(`/actual/base/luckySheet/workbook/createByJson?fileName=`, luckysheetJson)
+      const { data, code, msg } = await requestPost(`/actual/base/luckySheet/workbook/createByJson?fileName=${this.dataForm.reportName}`,  luckysheetJson)
       if (code === 0) {
-        this.workBookId = data.workbookId;
+        this.dataForm.workbookId = data.workbookId;
+        if (this.importType === 'template') {
+          this.createdReport()
+        }
+      } else {
+        console.log(msg);
+      }
+    },
+    // 
+    async createdReport() {
+      const url = '/actual/base/intellgentizeReport/create'
+      let { data, code, msg } = await requestPost(url, this.dataForm)
+      if (code === 0) {
+        console.log(data);
       } else {
         console.log(msg);
       }
@@ -271,10 +294,10 @@ export default {
       }
       return letter;
     },
-    loadWorkBook() {
+    loadWorkBook(workbookId) {
       options.container = 'luckysheet-export'
       options.gridKey = this.pageType === 'info' ? this.infoIds.workbookId : null;
-      options.loadUrl = null
+      options.loadUrl = workbookId?`${process.env.VUE_APP_API_SERVER}/actual/base/luckySheet/workbook/load?workbookId=${workbookId}`:null
       window.luckysheet.create({
         ...options,
       });
@@ -321,7 +344,7 @@ export default {
   height: calc(100vh - 250px);
 }
 
-#luckysheet-export{
+#luckysheet-export {
   width: 100%;
   padding: 0px;
   z-index: 2;
diff --git a/src/views/modules/base/smartExcel/filling.vue b/src/views/modules/base/smartExcel/filling.vue
index 5b804fa10..9a71412cd 100644
--- a/src/views/modules/base/smartExcel/filling.vue
+++ b/src/views/modules/base/smartExcel/filling.vue
@@ -50,7 +50,7 @@
                 
             
             
-                
+