From e49e5481e62288c7158ca17ed902695e6c0fbf58 Mon Sep 17 00:00:00 2001
From: haoxuan <haoxuan>
Date: 星期六, 26 八月 2023 16:10:58 +0800
Subject: [PATCH] 新任务弹框 产品+工艺参数弹框合为一个  增加一个倒计时的操作

---
 public/confirm1.png           |    0 
 public/confirm2.png           |    0 
 public/confirm3.png           |    0 
 public/tank.png               |    0 
 public/btn1.png               |    0 
 src/views/visualization.vue   |   24 +-
 src/components/AddControl.vue |   22 --
 public/number.png             |    0 
 src/components/AddIssue.vue   |  403 ++++++++++++++++++++++++++++++++++++++++++--------
 9 files changed, 358 insertions(+), 91 deletions(-)

diff --git a/public/btn1.png b/public/btn1.png
new file mode 100644
index 0000000..ab67d43
--- /dev/null
+++ b/public/btn1.png
Binary files differ
diff --git a/public/confirm1.png b/public/confirm1.png
new file mode 100644
index 0000000..e23afe1
--- /dev/null
+++ b/public/confirm1.png
Binary files differ
diff --git a/public/confirm2.png b/public/confirm2.png
new file mode 100644
index 0000000..7f0a74a
--- /dev/null
+++ b/public/confirm2.png
Binary files differ
diff --git a/public/confirm3.png b/public/confirm3.png
new file mode 100644
index 0000000..8c37905
--- /dev/null
+++ b/public/confirm3.png
Binary files differ
diff --git a/public/number.png b/public/number.png
new file mode 100644
index 0000000..45e09a3
--- /dev/null
+++ b/public/number.png
Binary files differ
diff --git a/public/tank.png b/public/tank.png
new file mode 100644
index 0000000..c60eb9f
--- /dev/null
+++ b/public/tank.png
Binary files differ
diff --git a/src/components/AddControl.vue b/src/components/AddControl.vue
index b913beb..c3a3672 100644
--- a/src/components/AddControl.vue
+++ b/src/components/AddControl.vue
@@ -54,17 +54,16 @@
 export default {
   components: {},
   props: {
-    id:{
-      type: [Number,String],
+    Arr:{
+      type: [Array],
       default: () => {
-        return '';
+        return [];
       },
     }
   },
   data() {
     return {
       islook: false,
-      Arr:[]
     };
   },
   mounted() {
@@ -73,24 +72,11 @@
   watch: {
     islook(val) {
       if (val) {
-        this.getStartInfo()
-        
       }
     },
   },
   methods: {
-    getStartInfo(){
-      if(this.id){
-        startTask({id:this.id}).then(res=>{
-          if(res.code==200){
-            this.Arr=res.data.Params;
-          }
-        })
-      }else{
-        this.$message.error("褰撳墠璁惧娌℃湁宸ュ簭锛�");
-      }
-      
-    },
+    
     validatorNum(rule, value, callback) {
       if (value) {
         if (value == undefined || value == null) {
diff --git a/src/components/AddIssue.vue b/src/components/AddIssue.vue
index e074ee0..d3cb897 100644
--- a/src/components/AddIssue.vue
+++ b/src/components/AddIssue.vue
@@ -1,80 +1,266 @@
 <template>
+  <!-- top="10vh" -->
   <el-dialog
     :close-on-click-modal="false"
     :visible.sync="islook"
-    width="250px"
-    top="50vh"
+    width="700px"
     class="add-event-dialog"
     :show-close="false"
   >
-    <div slot="title" class="tac drawerHeader">涓嬪彂鐢熶骇鏁版嵁</div>
-    <div class="dialog-content-box">
-      <div style=" margin:0 auto; width:100%;overflow:hidden;margin-bottom:30px;text-align:left;">
-        
-        <div class="circel-text">
+    <div class="tank-box">
+      <div slot="title" class="tac drawerHeader">鏂颁换鍔�</div>
+      <div class="dialog-content-box">
+        <div
+          style="
+            margin: 0 auto;
+            width: 100%;
+            height: 100%;
+            overflow: hidden;
+            margin-bottom: 30px;
+            text-align: left;
+          "
+        >
+          <div class="title-box margin_bottom_13">
+            <div class="title-item color_4efefa font_size_20 title-bng">
+              褰撳墠浠诲姟锛歿{ taskData.Procedure.procedure.procedureName || "" }}
+            </div>
+            <div class="title-item title-bng color_4efefa font_size_20">
+              鐢熶骇鏁伴噺锛�<span>{{ taskData.Order.amount || 0 }}</span>
+            </div>
+          </div>
+          <div class="title-auto-box">
+            <div class="title-box margin_bottom_20">
+              <div class="title-item">
+                璁㈠崟缂栧彿锛歿{ taskData.Order.orderId || "" }}
+              </div>
+              <div class="title-item">
+                宸ュ崟缂栧彿锛歿{ taskData.Order.workOrderId || "" }}
+              </div>
+              <div class="title-item">
+                浜у搧鍚嶇О锛歿{ taskData.Order.productName || "" }}
+              </div>
+              <div class="title-item">
+                鏁伴噺锛歿{ taskData.Order.amount || 0 }}{{ taskData.Order.unit }}
+              </div>
+              <div class="title-item">
+                浜よ揣鏃ユ湡锛歿{ taskData.Order.deliverDate || "" }}
+              </div>
+              <div class="title-item">
+                宸ユ椂锛� {{ taskData.Procedure.procedure.workHours || "" }}
+              </div>
+              <div class="title-item">
+                璧锋鏃堕棿锛� {{ formatDate(taskData.Order.startTime) || "" }}
+                -
+                {{ formatDate(taskData.Order.endTime) }}
+              </div>
+              <div class="title-item">
+                瀹㈡埛鍚嶇О锛歿{ taskData.Order.customer || "" }}
+              </div>
+              <div class="title-item title-item-two">
+                璐х墿鎻忚堪锛� {{ taskData.Order.orderAttr || "" }}
+              </div>
+
+              <div class="title-item title-item-two">
+                鍙傛暟瑕佹眰锛歿{ taskData.Order.parameter || "" }}
+              </div>
+            </div>
+            <div class="title-box margin_bottom_20">
+              <div
+                style="
+                  color: #fff;
+                  font-size: 18px;
+                  font-weight: 700;
+                  margin-bottom: 10px;
+                  margin-top: 20px;
+                "
+              >
+                宸ヨ壓鍙傛暟
+              </div>
+              <div
+                class="title-item title-item-two"
+                v-for="(item, index) in Arr"
+                :key="index"
+              >
+                {{ item.Key }}锛歿{ item.Value || "" }}
+              </div>
+            </div>
+          </div>
+          <div class="process-box"  v-if="showBtn==2||showBtn==3">
+            <div
+              style="
+                color: red;
+                font-size: 16px;
+                width: 100%;
+                text-align: center;
+                font-weight: 700;
+                margin-bottom: 20px;
+                margin-top: 10px;
+              "
+            >
+              璇风‘璁ょ敓浜у畨鍏紒
+            </div>
+            <div class="progress-item">
+              <span>{{ parseInt(num/60*100) }}%</span>
+            <el-progress
+             style="width:calc(100% - 50px);float:right"
+                  define-back-color="#CDC6C6"
+                  color="#00cc66"
+                  text-color="#fff"
+                  :text-inside="true"
+                  :stroke-width="20"
+                  :percentage="parseInt(num/60*100)"
+                ></el-progress>
+                </div>
+          </div>
+          <!-- <div class="circel-text">
          <div class="circel-text-b">
           鐢熶骇鏁伴噺锛�<span>{{ Order.amount||0 }}</span>{{ Order.unit||'' }}
          </div>
+        </div> -->
         </div>
       </div>
-    </div>
-    <div slot="footer" class="dialog-footer tac">
-      <el-button type="primary" @click="onSubmit()">涓嬪彂</el-button>
+      <div slot="footer" class="dialog-footer tac" style="overflow: hidden">
+        <div class="btn" @click="closeClick">
+          <img src="../../public/btn1.png" />
+        </div>
+        <div class="btn" v-if="showBtn==1" @click="confirmClick1">
+          <img src="../../public/confirm3.png" />
+        </div>
+        <div class="btn" v-if="showBtn==2">
+          <img src="../../public/confirm2.png" />
+        </div>
+        <div class="btn" v-if="showBtn==3" @click="onSubmit()">
+          <img src="../../public/confirm1.png" />
+        </div>
+      </div>
     </div>
   </el-dialog>
 </template>
 
 <script>
-
-import {
-  startTask,
-  setProductNumber,
-} from "@/api/home/index"; // 浜х嚎
+import { startTask, setProductNumber,sendProcessParams } from "@/api/home/index"; // 浜х嚎
 export default {
   components: {},
   props: {
-    Order:{
+    Order: {
       type: [Object],
       default: () => {
         return {
-          amount:0,
-          unit:''
+          amount: 0,
+          unit: "",
         };
       },
     },
-    taskData:{
+    taskData: {
       type: [Object],
-    }
+    },
+    Arr: {
+      type: [Array],
+      default: () => {
+        return [];
+      },
+    },
   },
   data() {
     return {
-      islook: false,
+      islook: true,
+      showBtn:1,
+      num:0,
+      timer:null,
     };
   },
   mounted() {
-    this.getInfo()
+    this.getInfo();
   },
   watch: {
     taskData(val) {
-      this.getInfo()
+      this.getInfo();
     },
+    num(){
+      if(this.num==60){
+        clearInterval(this.timer)
+        this.showBtn=3;
+      }
+    }
   },
   methods: {
-    getInfo(){
-      if (Object.keys(this.taskData).length > 0 && this.taskData.Procedure.ID) {
-        this.islook=true
-      }else{
-        this.islook=false;
+    confirmClick1(){
+      this.num=0;
+      this.showBtn=2;
+      this.timer=setInterval(()=>{
+       this.num=this.num+1;
+      },1000)
+      
+    },
+    closeClick(){
+      if(this.timer){
+        clearInterval(this.timer)
+      }
+      this.num=0;
+      this.shutdown();
+    },
+    getInfo() {
+      // if (Object.keys(this.taskData).length > 0 && this.taskData.Procedure.ID) {
+      //   this.islook=true
+      // }else{
+      //   this.islook=false;
+      // }
+    },
+    getDateObj(date, fmt) {
+      if (/(y+)/.test(fmt)) {
+        fmt = fmt.replace(
+          RegExp.$1,
+          (date.getFullYear() + "").substr(4 - RegExp.$1.length)
+        );
+      }
+      let o = {
+        "M+": date.getMonth() + 1,
+        "d+": date.getDate(),
+        "h+": date.getHours(),
+        "m+": date.getMinutes(),
+        "s+": date.getSeconds(),
+      };
+      for (let k in o) {
+        if (new RegExp(`(${k})`).test(fmt)) {
+          let str = o[k] + "";
+          fmt = fmt.replace(
+            RegExp.$1,
+            RegExp.$1.length === 1 ? str : this.padLeftZero(str)
+          );
+        }
+      }
+      return fmt;
+    },
+    padLeftZero(str) {
+      return ("00" + str).substr(str.length);
+    },
+    // 鏍煎紡鍖栨椂闂� ==> yyyy-mm-dd
+    formatDate(value) {
+      if (value) {
+        const now = value ? new Date(value * 1000) : new Date();
+        let time = this.getDateObj(now, "yyyy-MM-dd");
+        return time;
+      } else {
+        return "";
       }
     },
     onSubmit() {
-      setProductNumber().then(res=>{
+      if(this.taskData.Procedure.ID){
+        sendProcessParams({id:this.taskData.Procedure.ID}).then(res=>{
           if(res.code==200){
-            this.$message.success("涓嬪彂鎴愬姛锛�");
-            this.$emit('getSetProductNumber')
-            this.shutdown();
+            setProductNumber().then((res) => {
+              if (res.code == 200) {
+                this.$message.success("涓嬪彂鎴愬姛锛�");
+                // this.$message.success("涓嬪彂鐢熶骇鏁伴噺鎴愬姛锛�");
+                this.$emit("getSetProductNumber");
+                this.shutdown();
+              }
+            });
           }
-        }) 
+        })
+     
+      }
+      
     },
     shutdown() {
       this.islook = false;
@@ -84,6 +270,78 @@
 </script>
 
 <style lang="scss" scoped>
+.tank-box {
+  width: 638px;
+  height: 630px;
+  padding: 0 20px;
+  background: url("../../public/tank.png") no-repeat center center / cover;
+  position: relative;
+  .dialog-footer {
+    position: absolute;
+    bottom: 40px;
+  }
+}
+.color_4efefa {
+  color: #4efefa !important;
+}
+.font_size_20 {
+  font-size: 20px !important;
+}
+.margin_bottom_13 {
+  margin-bottom: 13px;
+}
+.title-box {
+  width: 100%;
+  height: auto;
+  overflow: hidden;
+  .title-item {
+    width: 45%;
+    float: left;
+    height: 35px;
+    line-height: 35px;
+    font-size: 16px;
+    color: #fff;
+    &:nth-of-type(odd) {
+      width: 55%;
+    }
+  }
+  .title-bng {
+    height: 42px;
+    line-height: 42px;
+    span {
+      width: calc(100% - 110px);
+      height: 42px;
+      text-align: center;
+      display: inline-block;
+      background: url("../../public/number.png") no-repeat center center / cover;
+    }
+  }
+  .title-item-two {
+    width: 100% !important;
+  }
+}
+::v-deep .el-dialog {
+  background: transparent;
+}
+::v-deep .el-dialog__header {
+  padding: 0 !important;
+}
+::v-deep .el-dialog__body {
+  padding: 0 !important;
+}
+.btn {
+  width: 200px;
+  height: auto;
+  float: left;
+  display: inline-block;
+  img {
+    width: 100%;
+  }
+  &:nth-of-type(1) {
+    margin-right: 30px;
+    margin-left: 110px;
+  }
+}
 ::v-deep .el-tabs__content {
   height: calc(100% - 55px);
   overflow-y: auto;
@@ -94,7 +352,7 @@
   border-radius: 50%;
   border: 2px solid rgba(12, 79, 218, 1);
   position: relative;
-  float:left;
+  float: left;
   .circel-two {
     width: 75px;
     height: 75px;
@@ -105,31 +363,30 @@
     border: 2px solid rgba(12, 79, 218, 1);
   }
 }
-.circel-text{
-  color:#333;
-  margin-left:20px;
-  .circel-text-t{
-    font-size:18px;
-    line-height:40px;
+.circel-text {
+  color: #fff;
+  margin-left: 20px;
+  .circel-text-t {
+    font-size: 18px;
+    line-height: 40px;
   }
-  .circel-text-b{
+  .circel-text-b {
     font-weight: 700;
-    font-size:14px;
-    
-    span{
-      color:rgba(12, 79, 218, 1);
-      font-size:38px;
-      margin-right:10px;
+    font-size: 14px;
+
+    span {
+      color: rgba(12, 79, 218, 1);
+      font-size: 38px;
+      margin-right: 10px;
     }
   }
 }
-.color_red{
-  width:100%;
-  color:red;
-  margin:0 auto;
-  text-align:center;
-  font-size:14px;
-  margin-bottom:25px;
+.color_red {
+  width: 100%;
+  margin: 0 auto;
+  text-align: center;
+  font-size: 14px;
+  margin-bottom: 25px;
 }
 .form-item {
   width: calc(50% - 20px);
@@ -160,12 +417,31 @@
   width: 100%;
 }
 .dialog-content-box {
-  height: 100px;
-  padding-bottom: 50px;
-  overflow-y: auto;
-  padding: 0 10px;
+  height: calc(100% - 200px);
+  overflow: hidden;
+  padding: 50px 20px 20px;
   .el-form {
     overflow: hidden;
+  }
+  .title-auto-box {
+    height: calc(100% - 130px);
+    overflow: auto;
+  }
+  .progress-item{
+    width:55%;
+    padding:2px 8px;
+    height:20px;
+    background:#fff;
+    border-radius:30px;
+    margin:0 auto;
+    border:2px solid rgba(255,255,255,0.5);
+    box-shadow: 1px 5px 5px rgba(255,255,255,0.5);
+    span{
+      float:left;
+      font-weight: 700;
+      color:#333;
+      font-size:15px;
+    }
   }
 }
 .num-identify {
@@ -177,13 +453,12 @@
   font-weight: 600;
 }
 .drawerHeader {
-  // position:relative;
-  border-bottom: 1px solid #eee;
-  height: 40px;
-  line-height: 30px;
-  color: #333;
   font-weight: 700;
-  font-size: 18px;
+  font-size: 20px;
+  text-align: center;
+  color: #fff;
+  height: 35px;
+  line-height: 35px;
   .identify {
     width: 80px;
     height: 25px;
diff --git a/src/views/visualization.vue b/src/views/visualization.vue
index fefc625..066ebe2 100644
--- a/src/views/visualization.vue
+++ b/src/views/visualization.vue
@@ -1,7 +1,8 @@
 
 <template>
   <div class="home">
-    <template v-if="Object.keys(taskData).length > 0 && taskData.Procedure.ID">
+    <!-- v-if="Object.keys(taskData).length > 0 && taskData.Procedure.ID" -->
+    <template >
       <div class="left">
         <p class="title">
           鐢熶骇绠$悊鐪嬫澘
@@ -109,7 +110,7 @@
                   text-color="#fff"
                   :text-inside="true"
                   :stroke-width="30"
-                  :percentage="taskData.Order?parseInt(finishNumber/taskData.Order.amount):0"
+                  :percentage="taskData.Order?parseInt(finishNumber/taskData.Order.amount*100):0"
                 ></el-progress>
               </el-descriptions-item>
               <!-- <el-descriptions-item label="鍚堟牸鐜�" style="width: 100%">
@@ -198,7 +199,7 @@
                     </div>
                     <div class="card_top-3">
                       <span class="card-top-r-t"
-                        >瀹屾垚杩涘害锛歿{ taskData.Order?parseInt(finishNumber/taskData.Order.amount):0}}</span
+                        >瀹屾垚杩涘害锛歿{ taskData.Order?parseInt(finishNumber/taskData.Order.amount*100):0}}</span
                       >
                       <span class="card-top-r-b">
                         <el-progress
@@ -207,7 +208,7 @@
                           text-color="#fff"
                           :text-inside="true"
                           :stroke-width="10"
-                          :percentage="taskData.Order?parseInt(finishNumber/taskData.Order.amount):0"
+                          :percentage="taskData.Order?parseInt(finishNumber/taskData.Order.amount*100):0"
                           :show-text="false"
                         ></el-progress>
                       </span>
@@ -364,7 +365,7 @@
           </span>
         </div>
         <div class="right-top-m-btn">
-          <el-button type="primary" @click="controlClick"> 鎺у埗</el-button>
+          <!-- <el-button type="primary" @click="controlClick"> 鎺у埗</el-button> -->
         </div>
         <div class="right_dutyLst">
           <div class="right-small-title">褰撳墠鍊肩彮</div>
@@ -418,7 +419,8 @@
         </div>
       </div>
     </template>
-    <template v-else>
+    <!-- v-else -->
+    <template >
       <div class="home-img-box">
         <div class="bg-title">
           <img src="../../public/bg-title.png" />
@@ -442,9 +444,9 @@
       </div>
     </template>
     <!-- 鎺у埗鐨勫脊妗� -->
-    <AddControl ref="control" :id="taskData.Procedure.ID" />
+    <AddControl ref="control" :Arr="Arr" />
     <!-- 鎺у埗鐨勫脊妗� -->
-    <AddIssue ref="control" :taskData="taskData" :Order="taskData.Order" @getSetProductNumber="getTaskInfo" />
+    <AddIssue ref="control" :Arr="Arr" :taskData="taskData" :Order="taskData.Order" @getSetProductNumber="getTaskInfo" />
   </div>
 </template>
 
@@ -528,6 +530,7 @@
       showCountDown:false,
       countDownHour:0,
       countDownMinute:0,
+      Arr:[],
     };
   },
   mounted() {
@@ -545,6 +548,7 @@
     this.getTaskInfo();
   },
   methods: {
+    
     reloadPage() {
       // window.location.reload();
       this.getTaskInfo();
@@ -686,6 +690,7 @@
                   number: res.data.Number,
                   name: "宸ヨ壓",
                 });
+                this.Arr=res.data.Params?res.data.Params:[];
               }
             });
             this.getProgressInfo();
@@ -1257,7 +1262,8 @@
     }
     .right_dutyLst {
       width: calc(100% - 20px);
-      height: 270px;
+      // height: 270px;
+      height: 310px;
       border-radius: 4px;
       line-height: 30px;
       overflow: hidden;

--
Gitblit v1.8.0