From a79582f0c67ddc681d2804669455ae13c64de8f9 Mon Sep 17 00:00:00 2001
From: ludc
Date: 星期二, 26 十二月 2023 20:20:22 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 Source/UBCS-WEB/src/views/statistic/statisticPage.vue |  141 +++++++++++++++++++++++++++++++++++++----------
 1 files changed, 111 insertions(+), 30 deletions(-)

diff --git a/Source/UBCS-WEB/src/views/statistic/statisticPage.vue b/Source/UBCS-WEB/src/views/statistic/statisticPage.vue
index 0369f5c..64dbfa1 100644
--- a/Source/UBCS-WEB/src/views/statistic/statisticPage.vue
+++ b/Source/UBCS-WEB/src/views/statistic/statisticPage.vue
@@ -1,13 +1,13 @@
 <template>
   <!--  鏂板鍙充晶鎸夐挳-->
-  <div>
+  <div v-loading="loading">
     <div style=" display: flex; justify-content: flex-end;">
       <el-button plain type="primary" @click="addHandler">閰嶇疆</el-button>
     </div>
     <!--鏂板瀵硅瘽妗�-->
     <el-dialog :visible.sync="addVisible" append-to-body class="avue-dialog avue-dialog--top" title="閰嶇疆鏁版嵁缁熻鍒嗘瀽"
                top="-50px">
-      <el-table ref="table" :data="tableData" border style="width: 100%" @selection-change="selectChange">
+      <el-table ref="table" :data="tableData" border style="width: 100%" @selection-change="selectChange" @row-click="rowHandlerClick">
         <el-table-column type="selection" width="55"></el-table-column>
         <el-table-column align="center" label="涓绘暟鎹簱鍚�" prop="menuName" width="300"></el-table-column>
         <el-table-column align="center" label="绫诲瀷" prop="codeType">
@@ -28,23 +28,32 @@
       <lineChart
         v-for="(item,index) in lineList"
         :key="index"
+        :btmname="item.btmname"
         :chartName="item.menuName"
-        :lineData="item.menuData"></lineChart>
+        :lineData="item.menuData"
+        @refresh="getEcharts">
+      </lineChart>
       <pieChart
         v-for="(item,index) in pieList"
         :key="index"
+        :btmname="item.btmname"
         :chartName="item.menuName"
-        :pieData="item.menuData"></pieChart>
+        :pieData="item.menuData"
+        @refresh="getEcharts"></pieChart>
       <ColumnarChart
         v-for="(item,index) in columnarList"
         :key="index"
+        :btmname="item.btmname"
         :chartName="item.menuName"
-        :columnarData="item.menuData"></ColumnarChart>
+        :columnarData="item.menuData"
+        @refresh="getEcharts"></ColumnarChart>
       <mixCart
         v-for="(item,index) in mixList"
         :key="index"
+        :btmname="item.btmname"
         :chartName="item.menuName"
-        :mixData="item.menuData"></mixCart>
+        :mixData="item.menuData"
+        @refresh="getEcharts"></mixCart>
     </div>
   </div>
 </template>
@@ -67,6 +76,7 @@
   name: "statisticPage",
   data() {
     return {
+      loading: false,
       selectValue: '',
       selectList: [
         {
@@ -95,15 +105,16 @@
       columnarList: [],
       mixList: [],
       selectData: [],
-      tableData: []
+      tableData: [],
+      ResponseData: {}
     }
   },
   created() {
-    this.getMasterList();
+    this.loading = true;
+  },
+  mounted() {
     this.getEcharts();
-    // deleteChartId({btmname:'zxssaac',chartId:'3'}).then(res=>{
-    //   console.log('res',res)
-    // })
+    this.getMasterList();
   },
   methods: {
     getMasterList() {
@@ -114,25 +125,92 @@
         this.$message.error(error)
       })
     },
-    getEcharts() {
-      getBtmAndChart().then(firstResponse => {
-        console.log('btm', firstResponse)
+    //鍒楄〃鏁版嵁
+    async getEcharts() {
+      try {
+        const firstResponse = await getBtmAndChart();
         const btmNames = Object.keys(firstResponse.data.data).join(',');
-        const firstData = firstResponse.data.data;
-        Object.keys(firstData).forEach((item,index) => {
-          let firstIndex = firstData[item].split(',');
-          console.log('firstIndex',firstIndex);
-        });
-        if (btmNames) {
-          getStatisticAnalysis({btmNames}).then(secondResponse => {
-            console.log('getStatisticAnalysis', secondResponse)
-          })
+        const btmValue = Object.values(firstResponse.data.data);
+        if (!btmNames) {
+          this.lineList = [];
+          this.pieList = [];
+          this.columnarList = [];
+          this.mixList = [];
+          this.loading = false;
+          return;
         }
-      })
+        const typeList = {
+          '0': 'lineList',
+          '1': 'pieList',
+          '2': 'columnarList',
+          '3': 'mixList'
+        };
+        await this.handleStatisticAnalysis(btmNames, firstResponse);
+        this.loading = false;
+      } catch (error) {
+        this.loading = false;
+        console.error('Error:', error);
+      }
+    },
+    async handleStatisticAnalysis(btmNames, firstResponse) {
+      const secondResponse = await getStatisticAnalysis({btmNames});
+      const secondData = secondResponse.data.data;
+      const typeList = {
+        "0": "lineList",
+        "1": "pieList",
+        "2": "columnarList",
+        "3": "mixList"
+      };
+      this.lineList = [];
+      this.pieList = [];
+      this.columnarList = [];
+      this.mixList = [];
+      const firstData = firstResponse.data.data;
+      //Object.keys瀵艰嚧瀵硅薄椤哄簭涓嶄竴鑷达紝浣跨敤sort鎺掑簭涓庡悗绔繑鍥炴牸寮忎竴鑷�
+      Object.keys(firstData).sort().forEach((key, index) => {
+        if (firstData[key]) {
+          const indexes = firstData[key].split(',');
+          for (const indexSec of indexes) {
+            const listType = typeList[indexSec];
+            const list = secondData.map(record => {
+              return {
+                menuData: record.menuData,
+                menuName: record.menuName,
+                btmname: key
+              };
+            });
+            this.$nextTick(() => {
+              list.forEach((i, j) => {
+                if (index === j) {
+                  this[listType].push(i);
+                }
+              });
+            });
+          }
+        }
+      });
     },
     //鏂板
     addHandler() {
       this.addVisible = true;
+      // let checkedrow = []
+      // this.tableData.forEach(item => {
+      //   // item.codeType = [];
+      //   Object.keys(this.ResponseData.data.data).forEach(k => {
+      //     if (item.code === k) {
+      //       Object.values(this.ResponseData.data.data).forEach(v => {
+      //         // item.codeType.push(v);
+      //         checkedrow.push(item)
+      //       })
+      //     }
+      //   })
+      // })
+      // this.$nextTick(() => {
+      //   checkedrow.forEach(row => {
+      //     // console.log(row)
+      //     this.$refs.table.toggleRowSelection(row, true) // 鍥炴樉
+      //   })
+      // })
     },
     //鍙栨秷
     escHandler() {
@@ -144,12 +222,12 @@
         this.$message.warning('璇疯嚦灏戦�夋嫨涓�鏉℃暟鎹紒');
         return;
       }
-      let codeStatus = this.selectData.every(key => key.codeType)
+      let codeStatus = this.selectData.every(key => key.codeType.length > 0);
+
       if (!codeStatus) {
         this.$message.warning("璇锋鏌ュ凡鍕鹃�夋暟鎹被鍨嬫槸鍚︿负绌猴紒");
         return;
       }
-
       const newArray = this.selectData.map(item => {
         return {
           btmname: item.code,
@@ -157,9 +235,10 @@
         }
       })
       saveStatisticAnalysis(newArray).then(res => {
-        this.menuList = res.data.data;
-        this.nextSave();
+        // this.menuList = res.data.data;
+        this.getEcharts();
         this.$message.success('淇濆瓨鎴愬姛')
+        this.addVisible = false;
       }).catch(error => {
         this.$message.error(error)
       });
@@ -179,8 +258,6 @@
         const dataKey = typeList[item.codeType];
         if (dataKey) {
           this[dataKey].push(item);
-          this[dataKey].forEach(res => {
-          })
           hasValidData = true;
         }
       });
@@ -194,6 +271,10 @@
     selectChange(selection) {
       this.selectData = selection;
     },
+    rowHandlerClick(row){
+      this.selectData = row;
+      this.$refs.table.toggleRowSelection(row);
+    }
   }
 }
 

--
Gitblit v1.9.3