From e9c1bc5f107ebfdb58b6c85e01a719bbeb643d66 Mon Sep 17 00:00:00 2001
From: songshankun <songshankun@foxmail.com>
Date: 星期日, 08 十月 2023 11:39:59 +0800
Subject: [PATCH] feat: 任务弹窗添加翻页展示

---
 src/views/visualization.vue |  227 +++++++++++++++++++++++++++++++++++---------------------
 1 files changed, 142 insertions(+), 85 deletions(-)

diff --git a/src/views/visualization.vue b/src/views/visualization.vue
index ac42f15..bbf6439 100644
--- a/src/views/visualization.vue
+++ b/src/views/visualization.vue
@@ -104,7 +104,7 @@
                       style="font-size: 35px; font-weight: 600"
                       class="color_green"
                     >
-                      {{ taskData.finishNumber }}{{ taskData.Order.unit }}
+                      {{ taskData.finishNumber || 0 }}{{ taskData.Order.unit }}
                     </dd>
                   </dl>
                 </div>
@@ -126,31 +126,31 @@
             <div class="content_right">
               <el-descriptions :column="(activeName == 1||activeName == 3) ? 2 : 1" :colon="true">
                 <el-descriptions-item label="浜у搧鍚嶇О">{{
-                  taskData.Order.productName || ""
+                  taskData.Order.productName || "--"
                 }}</el-descriptions-item>
                 <el-descriptions-item label="鏁伴噺"
                   >{{ taskData.Order.amount || 0
                   }}{{ taskData.Order.unit }}</el-descriptions-item
                 >
                 <el-descriptions-item label="浜よ揣鏃ユ湡">{{
-                  taskData.Order.deliverDate || ""
+                  taskData.Order.deliverDate || "--"
                 }}</el-descriptions-item>
                 <el-descriptions-item label="宸ユ椂">
-                  {{ taskData.Procedure.procedure.workHours || "" }}
+                  {{ taskData.Procedure.procedure.workHours || "--" }}
                 </el-descriptions-item>
                 <el-descriptions-item label="璁″垝鏃堕棿"
-                  >{{ formatDate(taskData.Order.startTime) || "" }}
+                  >{{ formatDate(taskData.Order.startTime) || "--" }}
                   -
                   {{ formatDate(taskData.Order.endTime) }}</el-descriptions-item
                 >
                 <el-descriptions-item label="璐х墿鎻忚堪">{{
-                  taskData.Order.orderAttr || ""
+                  taskData.Order.orderAttr || "--"
                 }}</el-descriptions-item>
                 <el-descriptions-item label="瀹㈡埛鍚嶇О">{{
-                  taskData.Order.customer || ""
+                  taskData.Order.customer || "--"
                 }}</el-descriptions-item>
                 <el-descriptions-item label="鍙傛暟瑕佹眰">{{
-                  taskData.Order.parameter || ""
+                  taskData.Order.parameter || "--"
                 }}</el-descriptions-item>
               </el-descriptions>
               <el-descriptions :column="1" :colon="true">
@@ -163,7 +163,7 @@
                     :text-inside="true"
                     :stroke-width="30"
                     :percentage="
-                      (taskData.Order && taskData.finishNumber != 0)
+                      (taskData.Order && taskData.finishNumber != 0 && taskData.Order.amount)
                         ? parseInt(
                             (taskData.finishNumber / taskData.Order.amount) *
                               100
@@ -223,13 +223,20 @@
                       </div>
                     </div>
                     <div class="card-top-input-out-l">
-                      <div>
+                      <div class="font_dian">
                         <!-- 璁惧12<i
                             style="font-size: 14px"
                             class="el-icon-right font-arrow-20"
                           ></i>
                           璁惧13 -->
-                        {{ list.materialName }}
+                          <el-popover
+                          width="200"
+                          :content="list.materialName"
+                          placement="top-start"
+                          trigger="click"
+                        >
+                          <span slot="reference">{{ list.materialName }}</span>
+                        </el-popover>
                       </div>
                     </div>
                     <div class="card-top-input-out-r">
@@ -286,7 +293,7 @@
                       <div class="card_top-3">
                         <span class="card-top-r-t"
                           >瀹屾垚杩涘害锛歿{
-                            taskData.Order && taskData.finishNumber != 0
+                            (taskData.Order && taskData.finishNumber != 0 && taskData.Order.amount)
                               ? parseInt(
                                   (taskData.finishNumber /
                                     taskData.Order.amount) *
@@ -329,7 +336,7 @@
                     </template>
                     <template v-else>
                       <!-- <div class="card_content">
-                        
+
                       </div> -->
                       <div :class="(activeName==1||activeName == 3)?'card_top-4 font_size_20px':'card_top-4'">
                         <div>宸ヨ壓缂栧彿锛�<div >{{ list.number }}</div></div>
@@ -353,9 +360,9 @@
               ></p>
               <div class="right-small-btn bottom-box-btn">
                 <el-button type="primary"> 鎵撳嵃</el-button>
-                <el-button v-if="taskData.Procedure.Status==3" type="primary" class="huise"> 瀹屾垚</el-button>
+
                 <el-popover
-                 v-else
+                v-if="taskData.Procedure.Status && taskData.Procedure.Status!==3"
                   placement="top-end"
                   width="160"
                   class="button-finish"
@@ -378,6 +385,7 @@
                   </div>
                   <el-button type="primary" slot="reference"> 瀹屾垚</el-button>
                 </el-popover>
+                <el-button  v-else type="primary" class="huise"> 瀹屾垚</el-button>
               </div>
             </div>
             <i class="el-icon-arrow-right font-arrow-20 color_318583"></i>
@@ -419,8 +427,15 @@
                         </div>
                       </div>
                       <div class="card-top-input-out-l">
-                        <div>
-                          {{ list.materialName }}
+                        <div class="font_dian">
+                          <el-popover
+                            width="200"
+                            :content="list.materialName"
+                            placement="top-start"
+                            trigger="click"
+                          >
+                            <span slot="reference">{{ list.materialName }}</span>
+                          </el-popover>
                         </div>
                       </div>
                       <div class="card-top-input-out-r">
@@ -442,7 +457,7 @@
           <template
               v-if="activeName == 2 &&(!taskData||Object.keys(taskData).length==0)"
             >
-            
+
             <el-empty description="鏆傛棤浠诲姟..."></el-empty>
           </template>
         </div>
@@ -515,9 +530,9 @@
               <!-- <span>{{ item.phoneNum || "" }}</span> -->
               <span class="color_yellow"><i class="el-icon-star-on" /><i class="el-icon-star-on" /><i class="el-icon-star-on" /><i class="el-icon-star-on" /><i class="el-icon-star-on" /></span>
             </dl>
-           
+
           </div>
-         
+
           <!-- <div
             style="
               width: 100%;
@@ -573,19 +588,21 @@
           </div>
         </div>
       </div>
-      
+
     </template> -->
     <!-- 鎺у埗鐨勫脊妗� -->
     <AddControl ref="control" :Arr="Arr" />
     <!-- 鎺у埗鐨勫脊妗� -->
-    <AddIssue
+    <TaskControlModal
       ref="control"
-      :Arr="Arr"
-      :safeProduce="safeProduce"
-      :taskData="taskData"
-      :Order="taskData.Order"
-      @getSetProductNumber="getTaskInfo"
+      :activeName="activeName"
+      @getSetProductNumber="reloadPage"
       @isTip="isTip"
+    />
+    <!-- 宸ヨ壓妯″瀷 -->
+    <ProcessModel
+      ref="processModel"
+      :processList="processList"
     />
   </div>
 </template>
@@ -605,15 +622,20 @@
 import Knowledge from "../components/Knowledge.vue";
 import AddControl from "../components/AddControl.vue";
 import AddIssue from "../components/AddIssue.vue";
+import ProcessModel from  "../components/ProcessModel.vue";
+import TaskControlModal from "@/components/TaskControlModal.vue";
 export default {
   components: {
+    TaskControlModal,
     Card,
     Knowledge,
     AddControl,
     AddIssue,
+    ProcessModel,
   },
   data() {
     return {
+      pollingTaskCountTimer: null,
       activeName: 1,
       progress: 70, //杩涘害
       passrate: 30, //鍚堟牸鐜�
@@ -709,6 +731,7 @@
       countDownHour: 0,
       countDownMinute: 0,
       Arr: [],
+      ArrError:'',
       // 璁板綍瀹氭椂鍣ㄧ姸鎬�
       procInfoTimer: null,
       cutdownTimer: null,
@@ -720,6 +743,25 @@
       // 璁惧鏂紑鐨勫師鍥�
       plcNotConnected:'',
       ChannelAmount:0,
+      object:{
+        Order: {},
+        Procedure: {
+          procedure: { inputMaterials: [], outputMaterials: [], workers: [] },
+        },
+        inputMaterials: [],
+        outputMaterials: [],
+        procedureList: [],
+      },
+      processList:[
+        {
+          name:'浜у搧1+宸ヨ壓2',
+          number:'v1.0'
+        },
+        {
+          name:'浜у搧1+宸ヨ壓2',
+          number:'v2.0'
+        }
+      ]
     };
   },
   mounted() {
@@ -735,6 +777,10 @@
       this.getDate2();
     }, 5000);
     this.getTaskInfo();
+    this.getTaskCountStatistics()
+  },
+  beforeDestroy() {
+    clearTimeout(this.pollingTaskCountTimer)
   },
   watch:{
     // isFinsh(){
@@ -746,8 +792,8 @@
   methods: {
     taskClick(){
       if(this.TaskCount>0){
-        this.getStartArr()
-        this.$refs.control.islook=true
+        // this.getStartArr()
+        this.$refs.control.show=true
       }else{
         this.$message({
           message:'鐩墠娌℃湁浠诲姟锛�',
@@ -763,15 +809,27 @@
       this.activeName = val;
       if(this.activeName==2){
         this.Tasks=this.TasksCopy.slice(0,2)
+        if(this.Tasks.length<2){
+          if(this.Tasks.length==0){
+            this.Tasks.push(this.object)
+          }
+          this.Tasks.push(this.object)
+        }
       }else if(this.activeName==1){
         this.Tasks=this.TasksCopy.slice(0,1)
+        if(this.Tasks.length<1){
+          this.Tasks.push(this.object)
+        }
       }else if(this.activeName==3){
         this.Tasks=this.TasksCopy.slice(1)
+        if(this.Tasks.length<1){
+          this.Tasks.push(this.object)
+        }
       }
     },
-    reloadPage() {
+    reloadPage(val) {
       // window.location.reload();
-      this.getTaskInfo();
+      this.getTaskInfo(val);
     },
     getcountdown() {
       countdown().then((res) => {
@@ -791,6 +849,8 @@
         }
       });
     },
+
+
 
     getDateObj(date, fmt) {
       if (/(y+)/.test(fmt)) {
@@ -854,7 +914,7 @@
         let String=now-date*1000;
         let seconds=Math.floor(String/1000)
         let minutes=Math.floor(seconds/60)
-        
+
         let days=Math.floor(String/1000/60/60/24)
         let hours=Math.floor(minutes/60)-days*24
         let m=minutes-days*24*60-hours*60
@@ -864,7 +924,7 @@
       setInterval(() => {
        d= getCha();
       }, 6000);
-      return d;
+      return date?d:'--';
     },
     setInterCard(value, name, i) {
       if (this.TasksCopy[i].Procedure.procedure[value]!=null) {
@@ -905,32 +965,26 @@
       }
     },
 
-    getTaskInfo() {
-      let object = {
-        Order: {},
-        Procedure: {
-          procedure: { inputMaterials: [], outputMaterials: [], workers: [] },
-        },
-        inputMaterials: [],
-        outputMaterials: [
-            // [
-            //   {
-            //    materialId:11111,
-            //    materialName:'272澶у鍟婃斁鍋囦簡鍗¤壈鑻﹀鏂楀瀮鍦惧彂蹇�掑瀮鍦惧弽棣堟潵寰楀強鍏嬮殕',
-            //    amount:100,
-            //    unit:'浠�'
-            //   }
-            // ]
-        ],
-        procedureList: [
-        //  [ 
-        //     {
-        //       name:"宸ュ簭",
-        //       deviceName:'1111dhafjdhajkhf jkdahjkf鎵撴硶鍗冲彲鎵撻枊閺堟帴鑲痉鍩哄晩鐪嬩締jdad澶ч浜笢鍗¤�佸徃鏈虹暘绐犲�掕嚰寮�浜嗘埧閲戦樋濂庣鍗佸叚灞婂弽棣堟媺寰锋柉鍩簁鎵撳崱鏈洪樋鐝傞檮浠舵墦寮�浜嗙偣鍑婚樋閲屽崱鍑忚偉鐨勫崱鎷夎兌寮�浜嗘埧澶ц涓婂厠闅唂k鍟﹀ぇ瀹堕槻绌洪浄閬旀暩鎿氱湅i'
-        //     },
-        //   ]
-        ],
-      };
+    /**
+     * 杞鑾峰彇浠诲姟鏁伴噺
+     */
+    getTaskCountStatistics(){
+      getTaskInfo({taskMode:1}).then((res) => {
+        if (res.code === 200&&res.data) {
+          this.TaskCount=res.data?.TaskCount ?? 0
+        }
+      },err=>{
+        this.TaskCount = 0
+        console.error(err)
+      }).finally(()=>{
+        this.pollingTaskCountTimer = setTimeout(()=>{
+          this.getTaskCountStatistics()
+        //   20绉掍竴娆¤疆璇�
+        },20000)
+      });
+    },
+
+    getTaskInfo(val) {
       this.Tasks = [];
       this.TasksCopy=[]
       getTaskInfo({taskMode:2}).then((res) => {
@@ -941,22 +995,21 @@
             return (a.Channel - b.Channel)
            })
           }
-          this.activeName=1;
           this.TasksCopy = res.data.Tasks ? res.data.Tasks : [];
-          this.safeProduce=res.data.Prompt.safeProduce?res.data.Prompt.safeProduce:''
+          // this.safeProduce=res.data.Prompt.safeProduce?res.data.Prompt.safeProduce:''
           this.plcNotConnected=res.data.Prompt.plcNotConnected?res.data.Prompt.plcNotConnected:''
           this.ChannelAmount=res.data.ChannelAmount?res.data.ChannelAmount:1
           // if(this.ChannelAmount>1 &&this.TasksCopy.length<2){
-          //   this.TasksCopy.push(object)
+          //   this.TasksCopy.push(this.object)
           // }
           this.TaskCount=res.data.TaskCount?res.data.TaskCount:0
-          
-          if (this.TasksCopy.length == 0&&this.TaskCount==0) {
+
+          if ((this.TasksCopy.length ==0 )||!this.TasksCopy) {
             if (this.activeName == 1||this.activeName == 3) {
-              this.TasksCopy.push(object);
+              this.TasksCopy.push(this.object);
             } else {
-              this.TasksCopy.push(object);
-              this.TasksCopy.push(object);
+              this.TasksCopy.push(this.object);
+              this.TasksCopy.push(this.object);
             }
           }
           this.workers=res.data.workers?res.data.workers:[]
@@ -977,7 +1030,7 @@
                 ...this.TasksCopy[i].Procedure.procedure,
               },
             ]);
-           
+
             if (this.TasksCopy[i].Procedure.ID) {
               startTask({ id: this.TasksCopy[i].Procedure.ID }).then((res) => {
                 if (res.code == 200) {
@@ -1010,10 +1063,10 @@
         //     }, 60000);
         //   }
         // }
-        this.cutClick(1)
+        this.cutClick(val?val:1)
       });
-      // this.TasksCopy.push(object)
-      // this.TasksCopy.push(object)
+      // this.TasksCopy.push(this.object)
+      // this.TasksCopy.push(this.object)
     },
     getStartArr(){
       // for (let i in this.TasksCopy) {
@@ -1026,10 +1079,13 @@
       getTaskInfo({taskMode:1}).then(res=>{
         if(res.code==200){
           this.taskData=res.data.Tasks?res.data.Tasks[0]:{};
-          if (this.taskData.Procedure.ID) {
+          this.ArrError=''
+          if (Object.keys(this.taskData).length > 0 &&this.taskData.Procedure.ID) {
               startTask({ id: this.taskData.Procedure.ID }).then((res) => {
                 if (res.code == 200) {
                   this.Arr =res.data.Params ? res.data.Params : []
+                }else{
+                  this.ArrError=res.msg?res.msg:'鑾峰彇宸ヨ壓鍙傛暟澶辫触锛�';
                 }
               });
             }
@@ -1052,7 +1108,7 @@
           });
         }
       }
-      
+
     },
     // 璁剧疆
     setUrl() {
@@ -1083,7 +1139,7 @@
         finishTask({ id: taskData.Procedure.ID }).then((res) => {
           if (res.code == 200) {
             this.finishShow['finishShow&'+i] = false;
-            this.getTaskInfo();
+            this.reloadPage(this.activeName?this.activeName:1);
             this.$message.success("鎿嶄綔鎴愬姛锛�");
           }
         });
@@ -1110,7 +1166,7 @@
  background:#12234a!important;
  color:#fff!important;
  border-color: #09e5ed !important;
- 
+
  .popper__arrow::after{
   border-top-color:#09e5ed !important;
  }
@@ -1122,7 +1178,7 @@
  color:#318583;
 }
 .el-empty{
-  height:100%;
+  height:calc(100% - 190px);
   .el-empty__description p{
     font-size:16px!important;
     color:#fff!important;
@@ -1159,7 +1215,7 @@
     box-sizing: border-box;
     border-right: 1px solid #eee;
   }
-  
+
   .small_title {
     margin-bottom: 30px;
   }
@@ -1215,7 +1271,7 @@
       font-size:14px;
     }
   }
-  
+
   .el-step{
     .el-step__icon{
      background:#00cc66;
@@ -1590,6 +1646,12 @@
         margin-top: 10px;
         color: #333;
         position: relative;
+        .font_dian{
+            -webkit-box-orient:vertical;
+            overflow:hidden;
+            text-overflow:ellipsis;
+            white-space:nowrap;
+          }
         .card_top-2{
           width:35%;
         }
@@ -1711,12 +1773,7 @@
             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 {
             width: 100%;
@@ -1787,7 +1844,7 @@
           display:inline-block;
         }
       }
-      
+
       .yuandian {
         width: 25px;
         height: 25px;

--
Gitblit v1.8.0