From 4aef25f2a55460040a72a73b8ec0cbb6bec0691d Mon Sep 17 00:00:00 2001
From: 田源 <lastanimals@163.com>
Date: 星期三, 18 十月 2023 16:45:56 +0800
Subject: [PATCH] 首页-主数据动态统计

---
 Source/UBCS-WEB/src/views/wel/Statistic.vue |  217 ++++++++++++++++++++++++++++++++---------------------
 1 files changed, 130 insertions(+), 87 deletions(-)

diff --git a/Source/UBCS-WEB/src/views/wel/Statistic.vue b/Source/UBCS-WEB/src/views/wel/Statistic.vue
index 0d6556a..dbac618 100644
--- a/Source/UBCS-WEB/src/views/wel/Statistic.vue
+++ b/Source/UBCS-WEB/src/views/wel/Statistic.vue
@@ -1,119 +1,162 @@
 <template>
   <div>
-    <el-row :gutter="20">
-      <el-col :xs="8" :sm="8" :md="8" :lg="6" :xl="4" v-for="item in listMyTask">
-        <div class="box" :style="item.style" @click="goto(item)">
-          {{item.name}}
-          <div><avue-count-up class="value" :end="item.count"></avue-count-up></div>
-        </div>
-      </el-col>
-    </el-row>
+      <div style="display: flex; justify-content: flex-end;margin-bottom: 10px">
+        <el-button icon="el-icon-more" type="primary" plain size="small" @click="MoreHandler">鏇村</el-button>
+    </div>
+    <avue-data-box :option="option" :animation="true">
+      <template>
+        <el-switch></el-switch>
+      </template>
+    </avue-data-box>
+    <el-dialog title="涓绘暟鎹厤缃�" :visible.sync="dialogTableVisible" append-to-body class="avue-dialog avue-dialog--top" top="0">
+      <avue-crud ref="crud"
+                 v-model="Crud.form"
+                 :data="Crud.data"
+                 @selection-change="selectionChange"
+                 :option="Crud.option">
+      </avue-crud>
+      <div slot="footer" class="dialog-footer">
+        <el-button  type="primary" plain @click="SaveHandler">淇濆瓨</el-button>
+      </div>
+    </el-dialog>
   </div>
 </template>
 
 <script>
 import {validatenull} from "@/util/validate";
-import {getList} from "@/api/system/statistic";
+import {getList,save} from "@/api/system/statistic";
 import {flowRoute} from "@/util/flow";
 
 export default {
 name: "Statistic",
   data(){
   return {
+    Crud:{
+      form:'',
+      data:[],
+      option:{
+        calcHeight: 80,
+        tip: false,
+        searchShow: false,
+        addBtn:false,
+        columnBtn:false,
+        header:false,
+        menu:false,
+        border: true,
+        index: true,
+        selection: true,
+        column:[
+          {
+            label: "涓绘暟鎹悕绉�",
+            prop: "menuName",
+          },
+          {
+            label: "寰呭姙鏁版嵁",
+            prop: "mdmCount",
+          },
+          {
+            label: "icon鍥炬爣",
+            prop: "icon",
+            overHidden:true,
+          },
+          {
+            label: "璺敱鍦板潃",
+            prop: "menuRoute",
+            overHidden:true,
+          },
+          {
+            label: "code",
+            prop: "code",
+            overHidden:true,
+          },
+        ]
+      }
+    },
+    userId:'',
+    hexColor:'',
+    newData:[],
+    SelectRow:[],
     countByServer:true,
-    listMyTask:[]
+    dialogTableVisible:false,
+    // listMyTask:[]
+    option: {
+      span:6,
+      data: []
+    },
   }
   },
   created() {
-  this.getList();
+    this.MasterGetList()
   },
   computed(){
 
   },
   methods: {
-    getList() {
-      let data = [{
-        "backgroundColor": "#FF5722",
-        "btmname": "hometask",
-        "countUrl": "priceIndexController/countNeedConfirmPlan",
-        "name": "鐗╁搧涓绘暟鎹�",
-        "nameOid": "",
-        "oid": "34aebfde-eb11-4555-87eb-0a779be9aad0",
-        "uiUrl": "/MasterData/items?id=wupin@name=鐗╁搧涓绘暟鎹�",
-      }, {
-        "backgroundColor": "#5FB878",
-        "btmname": "hometask",
-        "countUrl": "priceIndexController/countPricingPlan",
-        "name": "浜哄憳涓绘暟鎹�",
-        "nameOid": "2C72EA23-8AA5-E5FC-9BC1-DE4AD182EF7B",
-        "oid": "6256ae79-7765-4c66-afc7-f12fad350065",
-        "uiUrl": "/MasterData/items?id=renyuan@@name=浜哄憳涓绘暟鎹�",
-      },{
-          "backgroundColor": "#1E9FFF",
-          "btmname": "hometask",
-          "countUrl": "priceIndexController/countNeedFeedbackPlan",
-          "name": "涓婚搴撳畾涔�",
-          "nameOid": "2536978C-CD1B-5B56-6529-A8C3456B5260",
-          "oid": "3043cdf1-8479-4c2a-9eab-fc35e9f9d5a7",
-          "uiUrl": "/modeling/classifyTree",
-        },
-        {
-          "backgroundColor": "#FF5722",
-          "btmname": "hometask",
-          "countUrl": "priceIndexController/countMyUnCreatePricePlan",
-          "name": "渚涘簲鍟嗕富鏁版嵁",
-          "nameOid": "",
-          "oid": "529634e7-1854-4f61-b911-a91e3c406757",
-          "uiUrl": "/MasterData/items?id=gongyingshang@@name=渚涘簲鍟嗕富鏁版嵁",
-        }]
-      this.listMyTask = data.map(record => {
-        record.style=record.style || ''
-        if(record.backgroundColor!=''){
-          record.style = 'background-color:'+record.backgroundColor;
-        }
-        record.count=record.count || 0;
-        if(!this.countByServer){
-          //鏄墠绔煡璇�
-          getList(record.countUrl,{}).then(res=>{
-            if(res.data.data.success){
-              record.count=res.data.data.obj;
-            }else{
-              record.count=0
-            }
-          })
-
-        }
-        return {
-          ...record
+    selectionChange(row){
+      // console.log(row)
+      this.SelectRow=row;
+    },
+    SaveHandler(){
+      if(this.SelectRow.length <= 0){
+        this.$message.warning('璇烽�夋嫨涓�鏉℃暟鎹紒')
+        return
+      }
+      let mdmNameList=[];
+      mdmNameList=this.SelectRow.map(item=>{return item.code})
+        console.log(mdmNameList)
+      save(this.userId,mdmNameList).then(res=>{
+        console.log(res)
+        if(res.data.code === 200){
+          this.$message.success('淇濆瓨鎴愬姛锛�')
+          this.option.data=[];
+          this.MasterGetList()
+          this.dialogTableVisible=false;
         }
       })
     },
-    goto(item){
-      this.$router.push({ path: item.uiUrl });
+    MoreHandler(){
+      this.dialogTableVisible=true
+    },
+    // 闅忔満鑹�
+    randomColor() {
+      const r = Math.floor(Math.random() * 256); // 鐢熸垚 0 鍒� 255 涔嬮棿鐨勯殢鏈烘暟
+      const g = Math.floor(Math.random() * 256);
+      const b = Math.floor(Math.random() * 256);
+      // 灏� RGB 鍊艰浆鎹负鍗佸叚杩涘埗琛ㄧず褰㈠紡
+      const hexColor = "#" + r.toString(16).padStart(2, '0') + g.toString(16).padStart(2, '0') + b.toString(16).padStart(2, '0');
+      return hexColor;
+    },
+    MasterGetList() {
+      this.userId = localStorage.getItem('userId');
+      getList({ userId: this.userId }).then(res => {
+        res.data.data.filter(item => {
+          if (item.isDefault === 1) {
+            this.hexColor = this.randomColor();
+            this.option.data.push({
+              click: (item) => {
+                this.$router.push({ path: item.uiUrl });
+              },
+              title: item.menuName,
+              count: parseInt(item.mdmCount),
+              icon: item.icon,
+              code: item.code,
+              isDefault: item.isDefault,
+              color:this.hexColor,
+              uiUrl: item.menuRoute,
+            });
+          } else if (item.isDefault === 0) {
+            this.newData.push(item);
+            this.Crud.data=this.newData;
+          }
+        });
+        // console.log(this.option.data);
+        // console.log(this.newData);
+      });
     }
   }
 }
 </script>
 
 <style scoped>
-.el-col{margin-bottom: 0}
-.box{
-  text-align: center;
-  background: rgb(235, 238, 245);
-  color: #303133;
-  height: 70px;
-  margin: 10px 0!important;
-  padding: 15px 10px;
-  position: relative;
-  border-radius: 4px;
-  box-sizing: border-box;
-  font-size: 14px;
-}
-.value{
-  font-size: 12px;
-  opacity: .69;
-  line-height: 20px;
-  margin-top: 5px;
-  display: block;
-}
+
 </style>

--
Gitblit v1.9.3