From 0ff14f558473544c9145735524fb671743c716bb Mon Sep 17 00:00:00 2001
From: haoxuan <haoxuan>
Date: 星期五, 22 九月 2023 19:05:29 +0800
Subject: [PATCH] 看板改版

---
 src/views/visualization.vue |  241 ++++++++++++++++++++++++++++-------------------
 1 files changed, 144 insertions(+), 97 deletions(-)

diff --git a/src/views/visualization.vue b/src/views/visualization.vue
index 4c05af7..9c48cd3 100644
--- a/src/views/visualization.vue
+++ b/src/views/visualization.vue
@@ -13,9 +13,17 @@
             <img style="width:32px;" v-if="activeName == 1" src="../../public/one-blue.png" />
             <img style="width:32px;" v-else src="../../public/one.png" />
           </span>
-          <span class="font set-title" style="float: left" @click="cutClick(2)">
+          <span class="font set-title" style="float: left;margin-right: 15px;" @click="cutClick(2)">
             <img style="width:32px;" v-if="activeName == 2" src="../../public/two-blue.png" />
             <img style="width:32px;" v-else src="../../public/two.png" />
+          </span>
+          <span
+            class="font set-title"
+            style="float: left; "
+            @click="cutClick(3)"
+          >
+            <img style="width:32px;" v-if="activeName == 3" src="../../public/one-blue.png" />
+            <img style="width:32px;" v-else src="../../public/one.png" />
           </span>
           鐢熶骇绠$悊鐪嬫澘
           <span
@@ -33,7 +41,7 @@
         </span>
         </p>
         <div
-          :class="activeName == 1 ? 'active-one' : 'active-two'"
+          :class="(activeName == 1||activeName == 3) ? 'active-one' : 'active-two'"
           v-for="(taskData, index) in Tasks"
           :key="index"
         >
@@ -110,7 +118,7 @@
               </div>
             </div>
             <div class="content_right">
-              <el-descriptions :column="activeName == 1 ? 2 : 1" :colon="true">
+              <el-descriptions :column="(activeName == 1||activeName == 3) ? 2 : 1" :colon="true">
                 <el-descriptions-item label="浜у搧鍚嶇О">{{
                   taskData.Order.productName || ""
                 }}</el-descriptions-item>
@@ -143,8 +151,8 @@
                 <el-descriptions-item label="瀹屾垚搴�" style="width: 100%">
                   <!--:text-format="format"  -->
                   <el-progress
-                    define-back-color="#133EAF"
-                    color="#09E5ED"
+                    define-back-color="#132f6e"
+                    color="#00cc66"
                     text-color="#fff"
                     :text-inside="true"
                     :stroke-width="30"
@@ -199,7 +207,7 @@
                     <div class="card_content">
                       <div class="card_contentLeft">{{ list.materialId }}</div>
                     </div>
-                    <div class="card_top">
+                    <div class="card-top-input-out-l">
                       <div>
                         <!-- 璁惧12<i
                             style="font-size: 14px"
@@ -209,7 +217,7 @@
                         {{ list.materialName }}
                       </div>
                     </div>
-                    <div class="card_top2">
+                    <div class="card-top-input-out-r">
                       <div style="line-height: 45px; text-align: center">
                         {{ list.amount }} {{ list.unit }}
                       </div>
@@ -219,11 +227,11 @@
                   </div>
                 </el-carousel-item>
               </el-carousel>
-              <el-button type="primary" class="color_f70f83">
+              <el-button type="primary" class="color_f70f83 bottom-box-btn">
                 <i class="el-icon-phone-outline" />鐗╂枡鍛煎彨</el-button
               >
             </div>
-            <i class="el-icon-arrow-right font-arrow-20 color_4efefa"></i>
+            <i class="el-icon-arrow-right font-arrow-20 color_318583"></i>
             <div class="bottom_list">
               <div class="bottom-title">
                 褰撳墠宸ュ簭:{{ taskData.Procedure.procedure.procedureName || "" }}
@@ -247,8 +255,16 @@
                   >
                     <template v-if="list.name == '宸ュ簭'">
                       <div class="card_content">
-                        <div class="card_contentLeft color_blue">
-                          {{ list.deviceName }}
+                        <div class="card_contentLeft color_blue font_dian">
+                          <!-- {{ list.deviceName }} -->
+                          <el-popover
+                          width="200"
+                          :content="list.deviceName"
+                          placement="top-start"
+                          trigger="click"
+                        >
+                          <span slot="reference">{{ list.deviceName }}</span>
+                        </el-popover>
                           <!-- <span style="float: right">6m/s</span> -->
                         </div>
                       </div>
@@ -266,8 +282,8 @@
                         >
                         <span class="card-top-r-b">
                           <el-progress
-                            define-back-color="#133EAF"
-                            color="#09E5ED"
+                            define-back-color="#132f6e"
+                            color="#00cc66"
                             text-color="#fff"
                             :text-inside="true"
                             :stroke-width="10"
@@ -300,7 +316,7 @@
                       <!-- <div class="card_content">
                         
                       </div> -->
-                      <div :class="activeName==1?'card_top-4 font_size_20px':'card_top-4'">
+                      <div :class="(activeName==1||activeName == 3)?'card_top-4 font_size_20px':'card_top-4'">
                         <div>宸ヨ壓缂栧彿锛�<div >{{ list.number }}</div></div>
                         <!-- <div
                           style="
@@ -320,7 +336,7 @@
               <p
                 style="font-size: 22px; margin-left: 12px; margin-top: 50px"
               ></p>
-              <div class="right-small-btn">
+              <div class="right-small-btn bottom-box-btn">
                 <el-button type="primary"> 鎵撳嵃</el-button>
                 <el-popover
                   placement="top-end"
@@ -329,7 +345,7 @@
                   v-model="finishShow['finishShow&'+index]"
                   trigger="click"
                 >
-                  <p>璇风‘璁ゆ槸鍚﹀凡瀹屾垚璇ョ敓浜т换鍔�?</p>
+                  <p><i class="el-icon-error" style="color:red;margin-right:5px;"/>璇风‘璁ゆ槸鍚﹀凡瀹屾垚璇ョ敓浜т换鍔�?</p>
                   <div style="text-align: right; margin: 0">
                     <el-button size="mini" @click="finishShow['finishShow&'+index] = false">
                       鍙栨秷</el-button
@@ -337,6 +353,7 @@
                     <el-button
                       type="primary"
                       size="mini"
+                      class="color_f70f83"
                       @click="finishClick(index, taskData)"
                     >
                       纭畾</el-button
@@ -346,7 +363,7 @@
                 </el-popover>
               </div>
             </div>
-            <i class="el-icon-arrow-right font-arrow-20 color_4efefa"></i>
+            <i class="el-icon-arrow-right font-arrow-20 color_318583"></i>
             <div class="bottom_list">
               <div class="bottom-title">
                 <span>杈撳嚭璧勬簮</span>
@@ -377,49 +394,21 @@
                           {{ list.materialId }}
                         </div>
                       </div>
-                      <div class="card_top">
+                      <div class="card-top-input-out-l">
                         <div>
                           {{ list.materialName }}
-                          <!-- 璁惧12<i
-                            style="font-size: 14px"
-                            class="el-icon-right font-arrow-20"
-                          ></i>
-                          璁惧13 -->
                         </div>
                       </div>
-                      <div class="card_top2">
+                      <div class="card-top-input-out-r">
                         <div style="line-height: 45px; text-align: center">
                           {{ list.amount }} {{ list.unit }}
                         </div>
-                        <!-- <span class="card-top-r-t">鐢熶骇瀹屾垚</span>
-                        <span class="card-top-r-b">12鏈�28鏃� 08:24</span> -->
                       </div>
-                      <!-- <div class="card-info-box">棰勮10鍒嗛挓閫佽揪</div> -->
                     </div>
-                    <!-- <div class="card">
-                      <div class="card_content">
-                        <div class="card_contentLeft color_green">
-                          鍖呭彿:G22122304 100鍚�
-                        </div>
-                      </div>
-                      <div class="card_top">
-                        <div>
-                          璁惧12<i
-                            style="font-size: 14px"
-                            class="el-icon-right font-arrow-20"
-                          ></i>
-                          璁惧13
-                        </div>
-                      </div>
-                      <div class="card_top-2">
-                        <span class="card-top-r-t">鐢熶骇瀹屾垚</span>
-                        <span class="card-top-r-b">12鏈�28鏃� 08:24</span>
-                      </div>
-                    </div> -->
                   </div>
                 </el-carousel-item>
               </el-carousel>
-              <el-button type="primary" class="color_f70f83">
+              <el-button type="primary" class="color_f70f83 bottom-box-btn">
                 <i class="el-icon-phone-outline" />杩愯緭鍛煎彨</el-button
               >
             </div>
@@ -427,7 +416,7 @@
         </template>
           <!-- 2涓换鍔$殑鏃跺�欙紝绗簩涓换鍔′负绌虹殑鏃跺�欐樉绀� -->
           <template
-              v-if="activeName == 2 &&(!taskData||Object.keys(taskData).length==0)"
+              v-if="activeName == 2 &&(!taskData||Object.keys(taskData).length==0||(Tasks.length<2))"
             >
             <el-empty description="鏆傛棤浠诲姟..."></el-empty>
           </template>
@@ -452,7 +441,7 @@
           璁惧鐘舵��:
           <!-- 1鏂紑2鐢熶骇3寰呮満 -->
           <span style="position: relative"
-            >
+           v-if="plcStatus" >
             <img v-if="plcStatus == 1" src="../../public/duan.png" />
             <img v-else src="../../public/lian.png" />
             <!-- <span class="yuandian"></span> -->
@@ -505,7 +494,7 @@
           </div> -->
         </div>
         <div class="right_base">
-          <div class="right-small-title" style="line-height: 40px">鐭ヨ瘑搴�</div>
+          <div class="right-small-title" style="line-height: 40px;margin-top:20px;">鐭ヨ瘑搴�</div>
           <Knowledge />
           <div class="right-base-btn call">
             <el-button type="primary"
@@ -682,8 +671,9 @@
       procInfoTimer: null,
       cutdownTimer: null,
       TaskCount:0,
-      plcStatus:1,
+      plcStatus:0,
       isTipShow:false,
+      isFinsh:0,
     };
   },
   mounted() {
@@ -699,6 +689,13 @@
       this.getDate2();
     }, 5000);
     this.getTaskInfo();
+  },
+  watch:{
+    isFinsh(){
+      if(this.isFinsh==this.Tasks.length){
+        this.getStartArr()
+      }
+    }
   },
   methods: {
     taskClick(){
@@ -810,11 +807,11 @@
       return d;
     },
     setInterCard(value, name, i) {
-      if (this.Tasks[i].Procedure.procedure[value]) {
+      if (this.Tasks[i].Procedure.procedure[value]!=null) {
         let height = 200;
         let num = 1;
         if (this.$refs[name]) {
-          height = this.$refs[name].$el.offsetHeight;
+          height = this.$refs[name].$el?this.$refs[name].$el.offsetHeight:200;
           num = Math.floor(height / 80);
         }
         let inputMaterials = JSON.parse(
@@ -850,12 +847,23 @@
           procedure: { inputMaterials: [], outputMaterials: [], workers: [] },
         },
         inputMaterials: [],
-        outputMaterials: [],
+        outputMaterials: [
+            // [
+            //   {
+            //    materialId:11111,
+            //    materialName:'272澶у鍟婃斁鍋囦簡鍗¤壈鑻﹀鏂楀瀮鍦惧彂蹇�掑瀮鍦惧弽棣堟潵寰楀強鍏嬮殕',
+            //    amount:100,
+            //    unit:'浠�'
+            //   }
+            // ]
+        ],
         procedureList: [
-          // {
-          //   number: 11111,
-          //   name: "宸ヨ壓",
-          // }
+        //  [ 
+        //     {
+        //       name:"宸ュ簭",
+        //       deviceName:'1111dhafjdhajkhf jkdahjkf鎵撴硶鍗冲彲鎵撻枊閺堟帴鑲痉鍩哄晩鐪嬩締jdad澶ч浜笢鍗¤�佸徃鏈虹暘绐犲�掕嚰寮�浜嗘埧閲戦樋濂庣鍗佸叚灞婂弽棣堟媺寰锋柉鍩簁鎵撳崱鏈洪樋鐝傞檮浠舵墦寮�浜嗙偣鍑婚樋閲屽崱鍑忚偉鐨勫崱鎷夎兌寮�浜嗘埧澶ц涓婂厠闅唂k鍟﹀ぇ瀹堕槻绌洪浄閬旀暩鎿氱湅i'
+        //     },
+        //   ]
         ],
       };
       this.Tasks = [];
@@ -870,8 +878,7 @@
           this.Tasks = res.data.Tasks ? res.data.Tasks : [];
           
           this.TaskCount=res.data.TaskCount?res.data.TaskCount:0
-          this.workers=res.data.workers?res.data.workers:[]
-          if (this.Tasks.length == 0) {
+          if (this.Tasks.length == 0&&this.TaskCount==0) {
             if (this.activeName == 1) {
               this.Tasks.push(object);
             } else {
@@ -879,44 +886,45 @@
               this.Tasks.push(object);
             }
           }
+          this.workers=res.data.workers?res.data.workers:[]
           for (let i in this.Tasks) {
             this.Tasks[i].procedureList = [];
             this.Tasks[i].inputMaterials = [];
             this.Tasks[i].outputMaterials = [];
-            this.Tasks[i].finishNumber = 0;
             this.finishShow['finishShow&'+i]=false
             this.Tasks[i].Procedure.procedure.workers = this.Tasks[i].Procedure
               .procedure.workers
               ? this.Tasks[i].Procedure.procedure.workers
               : [];
+
             this.Tasks[i].procedureList.push([
               {
                 name: "宸ュ簭",
                 ...this.Tasks[i].Procedure.procedure,
               },
             ]);
-            
+           
             if (this.Tasks[i].Procedure.ID) {
               startTask({ id: this.Tasks[i].Procedure.ID }).then((res) => {
                 if (res.code == 200) {
                   // res.data.number
                   this.Tasks[i].procedureList[0].push({
                     number: res.data.Number,
-                    name: "宸ヨ壓",
-                    Arr:res.data.Params ? res.data.Params : [],
                   });
+                  this.Tasks[i].Arr=res.data.Params ? res.data.Params : []
+                  this.isFinsh=Number(i)+1
                 }
               });
             }
             this.setInterCard("inputMaterials", "cardBox1&" + i, i);
             this.setInterCard("outputMaterials", "cardBox3&" + i, i);
           }
-          this.getStartArr()
+        
           this.getProgressInfo();
               if (!this.procInfoTimer) {
                 this.procInfoTimer = setInterval(() => {
                   this.getProgressInfo();
-                }, 9000);
+                }, 3000);
           }
         }
         if (res.code != 200 || this.Tasks.length == 0) {
@@ -936,7 +944,7 @@
     getStartArr(){
       for (let i in this.Tasks) {
         if (this.Tasks[i].Procedure.Status==1) {
-            this.Arr = this.Tasks[i].procedureList[0].Arr ?this.Tasks[i].procedureList[0].Arr: [];
+            this.Arr = this.Tasks[i].Arr ?this.Tasks[i].Arr: [];
             this.taskData=this.Tasks[i];
             break;
         }
@@ -945,6 +953,7 @@
     getProgressInfo() {
       for (let i in this.Tasks){
         if(this.Tasks[i].Procedure.ID){
+          this.Tasks[i].finishNumber = 0;
           getProgress({
             position: Number(i),
             procedureId: this.Tasks[i].Procedure.ID,
@@ -953,7 +962,7 @@
               this.Tasks[i].finishNumber = res.data.finishNumber
                 ? res.data.finishNumber
                 : 0;
-                this.plcStatus=res.data.plcStatus?res.data.plcStatus:1
+                this.plcStatus=res.data.plcStatus?res.data.plcStatus:0
             }
           });
         }
@@ -970,19 +979,7 @@
         path: "/set",
       });
     },
-    // 鍙充晶鎺у埗
-    controlClick() {
-      if (this.Tasks.length > 0) {
-        for(let i in this.Tasks){
-          if(this.Tasks[i].Procedure.Status==1){
-            this.$refs.control.islook = true;
-            break;
-          }
-        }
-      } else {
-        this.$message.error("褰撳墠璁惧娌℃湁宸ュ簭锛�");
-      }
-    },
+    
     // 鍙充晶瀹屾垚
     finishClick(i, taskData) {
       if (Object.keys(taskData).length > 0 && taskData.Procedure.ID) {
@@ -1008,8 +1005,24 @@
 </script>
 
 <style lang="scss">
+.tooltip-width-200{
+  width:200px;
+  line-height:1.3!important;
+}
+.el-popover{
+ background:#12234a!important;
+ color:#fff!important;
+ border-color: #09e5ed !important;
+ 
+ .popper__arrow::after{
+  border-top-color:#09e5ed !important;
+ }
+}
 .color_yellow{
   color:yellow;
+}
+.color_318583{
+ color:#318583;
 }
 .el-empty{
   height:100%;
@@ -1029,10 +1042,10 @@
     margin-bottom: 20px;
   }
   .content {
-    height: 240px;
+    height: 300px;
   }
   .bottom {
-    height: calc(100% - 410px);
+    height: calc(100% - 470px);
   }
   .font_size_20px{
     font-size:20px!important;
@@ -1064,18 +1077,18 @@
     line-height: 20px;
   }
   .content {
-    height: 370px;
+    height: 430px;
 
     .content-top {
-      height: calc(50% - 20px) !important;
-      padding-top: 10px !important;
+      height: calc(50% - 30px) !important;
+      padding-top: 20px !important;
     }
     .el-descriptions__body {
       font-size: 16px !important;
     }
   }
   .bottom {
-    height: calc(100% - 560px);
+    height: calc(100% - 610px);
   }
   .bottom_list .bottom-title {
     font-size: 16px;
@@ -1287,7 +1300,7 @@
   }
   .card-box {
     width: 100%;
-    height: calc(100% - 50px - 50px);
+    height: calc(100% - 50px - 40px);
     // height:300px;
     .el-carousel__container{
       overflow-y:auto;
@@ -1296,6 +1309,12 @@
     //  height:auto;
      min-height:160px;
     }
+  }
+  .bottom-box-btn{
+    width:calc(100% - 20px);
+    position:absolute;
+    bottom:10px;
+    left:10px;
   }
 }
 
@@ -1423,6 +1442,9 @@
         background: rgb(22 72 173);
         border-radius: 6px;
         // background: #233b9e;
+        .el-descriptions-row{
+          height:45px;
+        }
         .el-descriptions__body {
           background: transparent;
           font-size: 18px;
@@ -1462,15 +1484,22 @@
         margin-top: 10px;
         color: #333;
         position: relative;
-        .card_top-2,
+        .card_top-2{
+          width:35%;
+        }
+        .card-top-input-out-r,
         .card_top-3 {
-          width: 50%;
+          width:65%;
+        }
+        .card_top-2,.card-top-input-out-r,
+        .card_top-3 {
           height: 45px;
           border-radius: 5px;
           background: #6b83ff;
-          font-size: 12px;
+          font-size: 13px;
           color: #fff;
           float: left;
+          font-weight: 700;
           .card-top-r-t {
             width: 100%;
             text-align: center;
@@ -1504,7 +1533,7 @@
           }
         }
 
-        .card_top,
+        .card_top,.card-top-input-out-l,
         .card_top-4 {
           width: 50%;
           height: 45px;
@@ -1514,7 +1543,7 @@
           font-size: 12px;
           line-height: 45px;
           > div {
-            margin-left: 12px;
+            padding-left: 12px;
             position: relative;
             p {
               position: absolute;
@@ -1526,6 +1555,18 @@
         }
         .card_top{
           float: left;
+        }
+        .card-top-input-out-l{
+          float:left;
+          width:65%;
+          line-height:20px;
+          vertical-align: middle;
+          display:flex;
+          justify-content:space-around;
+          align-items:center;
+        }
+        .card-top-input-out-r{
+          width:35%;
         }
         .card_top-4 {
           width: calc(100% - 20px);
@@ -1563,6 +1604,12 @@
             color: #fff;
             border-radius: 5px 5px 0 0;
             background: rgb(19, 35, 90);
+          }
+          .font_dian{
+            -webkit-box-orient:vertical;
+            overflow:hidden;
+            text-overflow:ellipsis;
+            white-space:nowrap;
           }
 
           .card_contentRight {
@@ -1661,7 +1708,7 @@
     .right_dutyLst {
       width: calc(106% - 20px);
       // height: 270px;
-      height: 310px;
+      height: 370px;
       border-radius: 4px;
       line-height: 30px;
       overflow: hidden;
@@ -1680,7 +1727,7 @@
       }
       .right-person-box {
         width: 100%;
-        height: calc(100% - 40px);
+        height: calc(100% - 60px);
         overflow: auto;
         margin-top: -10px;
       }
@@ -1710,7 +1757,7 @@
     }
     .right_base {
       width: 100%;
-      height: calc(100% - 520px);
+      height: calc(100% - 580px);
       min-height: 200px;
       // overflow-y:auto;
       position: relative;

--
Gitblit v1.8.0