From a1a6630f2eabfc78a379b5808b1bf7231a084d0b Mon Sep 17 00:00:00 2001
From: haoxuan <haoxuan>
Date: 星期三, 11 十月 2023 18:02:44 +0800
Subject: [PATCH] 工序弹框的 列表和详情的更新同步

---
 src/views/visualization.vue |  111 +++++++++++++++++++++++++++++++++++++++++++------------
 1 files changed, 87 insertions(+), 24 deletions(-)

diff --git a/src/views/visualization.vue b/src/views/visualization.vue
index a6dd135..de42bc4 100644
--- a/src/views/visualization.vue
+++ b/src/views/visualization.vue
@@ -124,8 +124,8 @@
               </div>
             </div>
             <div class="content_right">
-              <div class="gif" v-if="taskData.Procedure.ID" @click="processModelClick(taskData)">
-                    <img v-if="isUpdateIcon"  src="../../public/shan.gif" />
+              <div class="gif" v-if="taskData.Procedure.ID" @click="processModelClick(taskData,index)">
+                    <img v-if="taskData.isUpdateIcon"  src="../../public/shan.gif" />
                     <span v-else class="yuandian"></span>
                </div>
               <el-descriptions :column="(activeName == 1||activeName == 3) ? 2 : 1" :colon="true">
@@ -524,7 +524,7 @@
           <div class="right-person-box" v-if="workers && workers.length > 0">
             <dl
               class="right-small-person"
-              v-for="(item, index) in workers"
+              v-for="(item, index) in deduplicateWorkers(displayWorkers())"
               :key="index"
             >
               <dt>
@@ -605,8 +605,6 @@
 
     </template> -->
     <!-- 鎺у埗鐨勫脊妗� -->
-    <AddControl ref="control" :Arr="Arr" />
-    <!-- 鎺у埗鐨勫脊妗� -->
     <TaskControlModal
       ref="control"
       :activeName="activeName"
@@ -617,6 +615,7 @@
     <ProcessModel
       ref="processModel"
       :listData="listData"
+      @updateGet="updateGet"
     />
   </div>
 </template>
@@ -640,6 +639,7 @@
 import ProcessModel from  "../components/ProcessModel.vue";
 import TaskControlModal from "@/components/TaskControlModal.vue";
 import {channelNameConfig} from "@/common/constants";
+import _ from 'lodash'
 export default {
   components: {
     TaskControlModal,
@@ -661,6 +661,8 @@
       // 鍙充晶瀹屾垚
       finishShow:{},
       workers:[],
+      // 淇濆瓨褰撳墠涓嶅悓閫氶亾鐨勫�肩彮浜�
+      channelWorkersMap:{0:[],1:[]},
       TasksCopy:[],
       Tasks: [
         {
@@ -770,11 +772,11 @@
         procedureList: [],
       },
       processList:[],
-      isUpdateIcon:false,
       listData:[],
-      resResult:null,
+      resResult:[],
       resprocInfoTimer:null,
-      channelNameConfig: channelNameConfig
+      channelNameConfig: channelNameConfig,
+      index:null,
     };
   },
   mounted() {
@@ -809,9 +811,22 @@
     // }
   },
   methods: {
+    deduplicateWorkers(workers){
+      return _.uniqBy(workers,ele=>ele.workerName)
+    },
+    updateGet(number,val){
+      if(val){
+        this.getTaskInfo(this.activeName,'new')
+        return true;
+      }
+      this.listData.number=number
+      if(this.index){
+        this.TasksCopy[this.index].number=number
+      }
+    },
     getModelList(){
-      this.resResult=null
       for (let i in this.TasksCopy){
+        this.TasksCopy[i].isUpdateIcon=false;
         if(this.TasksCopy[i].Procedure.ID&&this.TasksCopy[i].number){
           processModelList({
             procedureId: this.TasksCopy[i].Procedure.ID,
@@ -822,21 +837,24 @@
             if(res.code==200){
               this.processList=res.data?res.data:[];
               if(this.processList.length>0){
-                for(let i in this.processList){
-                  if(this.processList[i].isUpdate){
-                    this.isUpdateIcon=true;
+                for(let j in this.processList){
+                  if(this.processList[j].isUpdate){
+                    this.TasksCopy[i].isUpdateIcon=true;
+                    this.$forceUpdate()
                     break;
                   }
                 }
               }
             }
-            this.resResult=res;
+            this.resResult[i]=res;
+            console.log( this.resResult[i],'===res111')
           })
         }
       }
     },
-    processModelClick(list){
+    processModelClick(list,index){
       this.listData=list;
+      this.index=index
       if( Object.keys(this.listData).length > 0){
         if(this.listData.Procedure.ID&&this.listData.number){
           this.$refs.processModel.islook=true
@@ -847,10 +865,19 @@
     },
     getProcessModelList(){
       this.getModelList()
-      if (!this.ProcessModelTimer&&!this.resResult) {
+      let string=false;
+      if(this.resResult.length>0){
+        for(let i in this.resResult){
+          if(this.resResult[i]){
+            string=false;
+          }
+        }
+      }
+      if (!this.ProcessModelTimer&&!string) {
           this.ProcessModelTimer = setInterval(() => {
+            this.resResult=[]
           this.getModelList();
-        }, 10000)
+        }, 5000)
       }
     },
     mergeProcessParams(params){
@@ -1052,14 +1079,33 @@
       });
     },
 
-    getTaskInfo(val) {
+    /**
+     * 鏍规嵁褰撳墠灞曠ず鐨勬槸0閫氶亾杩樻槸1閫氶亾杩樻槸涓や釜閫氶亾灞曠ず瀵瑰簲鐨勫�肩彮浜�
+     * @return {*[]}
+     */
+    displayWorkers(){
+      let showWorkers = []
+      if (this.activeName===1){
+        showWorkers =[...this.channelWorkersMap[0]]
+      }else if (this.activeName===2){
+        showWorkers =[...this.channelWorkersMap[0],...this.channelWorkersMap[1]]
+      }else if (this.activeName===3){
+        showWorkers =[...this.channelWorkersMap[1]]
+      }else {
+        return []
+      }
+
+      return showWorkers
+    },
+
+    getTaskInfo(val,info) {
       this.Tasks = [];
       this.TasksCopy=[]
       getTaskInfo({taskMode:2}).then((res) => {
         if (res.code == 200&&res.data) {
-          let arr=[]
+          // let arr=[]
           if(res.data.Tasks){
-           arr.sort(function(a,b){
+            res.data.Tasks.sort(function(a,b){
             return (a.Channel - b.Channel)
            })
           }
@@ -1081,12 +1127,23 @@
             }
           }
           this.workers=res.data.workers?res.data.workers:[]
+
+          // 灏嗗�肩彮浜烘牴鎹�氶亾鍙峰垎缁�
+          const groupByChannel= _.groupBy(res.data.Tasks,ele=>ele.Channel)
+          const taskList0= _.first(groupByChannel[0])
+          const taskList1= _.first(groupByChannel[1])
+          const worker0List = taskList0?.Procedure?.procedure?.workers ?? []
+          const worker1List = taskList1?.Procedure?.procedure?.workers ?? []
+          this.channelWorkersMap['0'] =worker0List
+          this.channelWorkersMap['1'] =worker1List
+
           for (let i in this.TasksCopy) {
             this.TasksCopy[i].procedureList = [];
             this.TasksCopy[i].inputMaterials = [];
             this.TasksCopy[i].outputMaterials = [];
             this.TasksCopy[i].finishNumber = 0;
             this.TasksCopy[i].number=0;
+            this.TasksCopy[i].isUpdateIcon=false;
             this.finishShow['finishShow&'+i]=false
             this.TasksCopy[i].Procedure.procedure.workers = this.TasksCopy[i].Procedure
               .procedure.workers
@@ -1110,20 +1167,26 @@
                   });
                   this.TasksCopy[i].Arr=res.data.Params ? res.data.Params : []
                   // this.isFinsh=Number(i)+1
+                  this.$forceUpdate()
                 }
               });
             }
             this.setInterCard("inputMaterials", "cardBox1&" + i, i);
             this.setInterCard("outputMaterials", "cardBox3&" + i, i);
           }
+          this.getProcessModelList();
           this.getStartArr()
+          this.cutClick(val?val:1)
+          if(info=='new'){
+            return true;
+          }
+
           this.getProgressInfo();
               if (!this.procInfoTimer&&!this.resprocInfoTimer) {
                 this.procInfoTimer = setInterval(() => {
                   this.getProgressInfo();
                 }, 3000);
               }
-           this.getProcessModelList();
         }
         // if (res.code != 200 || this.TasksCopy.length == 0) {
         //   this.getcountdown();
@@ -1134,7 +1197,7 @@
         //     }, 60000);
         //   }
         // }
-        this.cutClick(val?val:1)
+
       });
       // this.TasksCopy.push(this.object)
       // this.TasksCopy.push(this.object)
@@ -1723,7 +1786,7 @@
           width: 100%;
           height: 30px;
           // text-align: left;
-          font-size: 24px;
+          font-size: 28px!important;
           margin: 0;
           text-align: center;
           line-height: 36px;
@@ -1798,11 +1861,11 @@
             white-space:nowrap;
           }
         .card_top-2{
-          width:35%;
+          width:38%;
         }
         .card-top-input-out-r,
         .card_top-3 {
-          width:65%;
+          width:62%;
         }
         .card_top-2,.card-top-input-out-r,
         .card_top-3 {

--
Gitblit v1.8.0