From 02611cd19ef961dedee41f74eb3df13b002993aa Mon Sep 17 00:00:00 2001
From: ludc
Date: 星期二, 19 十二月 2023 17:57:11 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 Source/UBCS-WEB/src/views/statistic/statisticPage.vue |  193 ++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 187 insertions(+), 6 deletions(-)

diff --git a/Source/UBCS-WEB/src/views/statistic/statisticPage.vue b/Source/UBCS-WEB/src/views/statistic/statisticPage.vue
index 8707be1..0369f5c 100644
--- a/Source/UBCS-WEB/src/views/statistic/statisticPage.vue
+++ b/Source/UBCS-WEB/src/views/statistic/statisticPage.vue
@@ -1,23 +1,204 @@
 <template>
-<lineChart></lineChart>
+  <!--  鏂板鍙充晶鎸夐挳-->
+  <div>
+    <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-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">
+          <template slot-scope="{ row }">
+            <el-select v-model="row.codeType" :multiple="true" limit="4" placeholder="璇烽�夋嫨鍥捐〃绫诲瀷" style="width: 400px">
+              <el-option v-for="(item) in selectList" :label="item.label" :value="item.value"></el-option>
+            </el-select>
+          </template>
+        </el-table-column>
+      </el-table>
+      <span slot="footer" class="dialog-footer">
+    <el-button @click="escHandler">鍙� 娑�</el-button>
+    <el-button type="primary" @click="addSaveHandler">淇濆瓨</el-button>
+  </span>
+    </el-dialog>
+    <!--echarts缁勪欢-->
+    <div style="margin-top: 15px;padding-bottom: 35px">
+      <lineChart
+        v-for="(item,index) in lineList"
+        :key="index"
+        :chartName="item.menuName"
+        :lineData="item.menuData"></lineChart>
+      <pieChart
+        v-for="(item,index) in pieList"
+        :key="index"
+        :chartName="item.menuName"
+        :pieData="item.menuData"></pieChart>
+      <ColumnarChart
+        v-for="(item,index) in columnarList"
+        :key="index"
+        :chartName="item.menuName"
+        :columnarData="item.menuData"></ColumnarChart>
+      <mixCart
+        v-for="(item,index) in mixList"
+        :key="index"
+        :chartName="item.menuName"
+        :mixData="item.menuData"></mixCart>
+    </div>
+  </div>
 </template>
 
 <script>
 import lineChart from "../../components/StatisticsComponent/lineChart"
+import pieChart from "../../components/StatisticsComponent/pieChart"
+import ColumnarChart from "../../components/StatisticsComponent/ColumnarChart"
+import mixCart from "../../components/StatisticsComponent/mixCart"
+import {getStatisticAnalysis, getBtmAndChart, saveStatisticAnalysis, deleteChartId} from "@/api/statistic/chart"
+import {getList} from "@/api/system/statistic";
 
 export default {
   components: {
-    lineChart
+    lineChart,
+    pieChart,
+    ColumnarChart,
+    mixCart
   },
   name: "statisticPage",
-  data(){
-    return{
-
+  data() {
+    return {
+      selectValue: '',
+      selectList: [
+        {
+          label: '鎶樼嚎鍥�',
+          value: '0'
+        },
+        {
+          label: '楗肩姸鍥�',
+          value: '1'
+        },
+        {
+          label: '鏌辩姸鍥�',
+          value: '2'
+        },
+        {
+          label: '鍫嗗彔鎶樼嚎鍥�',
+          value: '3'
+        }
+      ],
+      menuList: [],
+      dataKeyList: [],
+      addVisible: false,
+      chartName: "",
+      lineList: [],
+      pieList: [],
+      columnarList: [],
+      mixList: [],
+      selectData: [],
+      tableData: []
     }
+  },
+  created() {
+    this.getMasterList();
+    this.getEcharts();
+    // deleteChartId({btmname:'zxssaac',chartId:'3'}).then(res=>{
+    //   console.log('res',res)
+    // })
+  },
+  methods: {
+    getMasterList() {
+      const userId = localStorage.getItem('userId');
+      getList({userId: userId}).then(res => {
+        this.tableData = res.data.data;
+      }).catch(error => {
+        this.$message.error(error)
+      })
+    },
+    getEcharts() {
+      getBtmAndChart().then(firstResponse => {
+        console.log('btm', firstResponse)
+        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)
+          })
+        }
+      })
+    },
+    //鏂板
+    addHandler() {
+      this.addVisible = true;
+    },
+    //鍙栨秷
+    escHandler() {
+      this.addVisible = false;
+    },
+    //淇濆瓨
+    async addSaveHandler() {
+      if (this.selectData.length <= 0) {
+        this.$message.warning('璇疯嚦灏戦�夋嫨涓�鏉℃暟鎹紒');
+        return;
+      }
+      let codeStatus = this.selectData.every(key => key.codeType)
+      if (!codeStatus) {
+        this.$message.warning("璇锋鏌ュ凡鍕鹃�夋暟鎹被鍨嬫槸鍚︿负绌猴紒");
+        return;
+      }
+
+      const newArray = this.selectData.map(item => {
+        return {
+          btmname: item.code,
+          chartIds: item.codeType.join(',')
+        }
+      })
+      saveStatisticAnalysis(newArray).then(res => {
+        this.menuList = res.data.data;
+        this.nextSave();
+        this.$message.success('淇濆瓨鎴愬姛')
+      }).catch(error => {
+        this.$message.error(error)
+      });
+    },
+    nextSave() {
+      const typeList = {
+        "0": "lineList",
+        "1": "pieList",
+        "2": "columnarList",
+        "3": "mixList"
+      };
+
+      let hasValidData = false; // 娣诲姞涓�涓爣蹇楁潵璁板綍鏄惁鏈夋湁鏁堢殑閫夋嫨鏁版嵁
+
+      this.selectData.forEach((item, index) => {
+        item.menuData = this.menuList[index].menuData;
+        const dataKey = typeList[item.codeType];
+        if (dataKey) {
+          this[dataKey].push(item);
+          this[dataKey].forEach(res => {
+          })
+          hasValidData = true;
+        }
+      });
+
+      if (hasValidData) {
+        // this.$refs.table.clearSelection();
+        this.addVisible = false;
+      }
+    },
+    //琛ㄦ牸澶氶��
+    selectChange(selection) {
+      this.selectData = selection;
+    },
   }
 }
+
 </script>
 
-<style scoped>
+<style lang="scss" scoped>
 
 </style>

--
Gitblit v1.9.3