From d69724b8ba43312b3e794ad2d63a2493972f02c0 Mon Sep 17 00:00:00 2001
From: yangfeng <wanwan926_4@163.com>
Date: 星期六, 02 十二月 2023 16:57:54 +0800
Subject: [PATCH] 工单进度统计模块

---
 src/views/cockpitPage/components/WorkOrderProgress.vue  |  289 ++++++++++++++++++++++++++++++++++++++++++++++++
 src/views/cockpitPage/components/OrderCompleteRadio.vue |    9 -
 src/views/cockpitPage/index.vue                         |    5 
 public/cockpitPage/work-order-top.png                   |    0 
 4 files changed, 295 insertions(+), 8 deletions(-)

diff --git a/public/cockpitPage/work-order-top.png b/public/cockpitPage/work-order-top.png
new file mode 100644
index 0000000..4d81bb9
--- /dev/null
+++ b/public/cockpitPage/work-order-top.png
Binary files differ
diff --git a/src/views/cockpitPage/components/OrderCompleteRadio.vue b/src/views/cockpitPage/components/OrderCompleteRadio.vue
index c90a781..a5c2d3d 100644
--- a/src/views/cockpitPage/components/OrderCompleteRadio.vue
+++ b/src/views/cockpitPage/components/OrderCompleteRadio.vue
@@ -4,7 +4,6 @@
       <ChartTitle name="璁㈠崟瀹屾垚姣旂巼"></ChartTitle>
     </div>
     <div class="list-view">
-      <!-- <ul> -->
       <template v-for="item in tableList">
         <div class="table-bg-view">
           <div class="left">{{ item.title }}</div>
@@ -16,13 +15,9 @@
               :define-back-color="'#083f55'"
               :text-color="'#fec718'"
             ></el-progress>
-            <!-- <div class="container">
-              <div class="item" v-for="i in 40" :key="i"></div>
-            </div> -->
           </div>
         </div>
       </template>
-      <!-- </ul> -->
     </div>
   </div>
 </template>
@@ -44,9 +39,7 @@
       ],
     };
   },
-  mounted() {
-    console.log(this.$refs.middle.$el, "sssssssss");
-  },
+  mounted() {},
   watch: {},
   methods: {},
 };
diff --git a/src/views/cockpitPage/components/WorkOrderProgress.vue b/src/views/cockpitPage/components/WorkOrderProgress.vue
new file mode 100644
index 0000000..a2b870d
--- /dev/null
+++ b/src/views/cockpitPage/components/WorkOrderProgress.vue
@@ -0,0 +1,289 @@
+<template>
+  <div class="work-order-progress">
+    <div class="bar-contents">
+      <div class="top-view">
+        <img src="/cockpitPage/work-order-top.png" alt="" />
+        <div class="top-title">
+          <span>宸ュ崟杩涘害缁熻</span>
+          <span class="top-rate">{{ "60%" }}</span>
+        </div>
+      </div>
+      <div class="table-box">
+        <el-table :data="tableData" style="width: 100%">
+          <el-table-column
+            prop="workOrderId"
+            label="宸ュ崟缂栧彿"
+            align="center"
+            show-overflow-tooltip
+          >
+          </el-table-column>
+          <el-table-column
+            prop="product"
+            label="浜у搧"
+            align="center"
+            show-overflow-tooltip
+          >
+          </el-table-column>
+          <el-table-column
+            prop="productSpecs"
+            label="浜у搧瑙勬牸"
+            align="center"
+            show-overflow-tooltip
+          >
+          </el-table-column>
+          <el-table-column
+            prop="amount"
+            label="鐢熶骇鏁伴噺"
+            align="center"
+            show-overflow-tooltip
+          >
+          </el-table-column>
+          <el-table-column
+            prop="planTime"
+            label="璁″垝鏃堕棿"
+            align="center"
+            min-width="100"
+            show-overflow-tooltip
+          >
+          </el-table-column>
+          <el-table-column label="瀹屾垚杩涘害" align="center" min-width="160">
+            <template slot-scope="scope">
+              <div class="progerss-bg">
+                <div
+                  v-for="item in scope.row.completeProgerss"
+                  class="progerss"
+                  :class="
+                    item.status == 1
+                      ? 'complete'
+                      : item.status == 2
+                      ? 'producing'
+                      : 'noStart'
+                  "
+                  :style="`width: ${
+                    (1 / scope.row.completeProgerss.length) * 100
+                  }%`"
+                ></div>
+              </div>
+            </template>
+          </el-table-column>
+          <el-table-column label="寤舵湡棰勮" align="center">
+            <template slot-scope="scope">
+              <div v-show="scope.row.delayWarning > 0" class="round-view">
+                <div class="round"></div>
+                <div class="title">{{ scope.row.delayWarning + "澶�" }}</div>
+              </div>
+            </template>
+          </el-table-column>
+        </el-table>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script>
+export default {
+  components: {},
+  props: {},
+  data() {
+    return {
+      tableData: [
+        {
+          workOrderId: "A5435",
+          product: "浜у搧1",
+          productSpecs: "瑙勬牸",
+          amount: "2000",
+          planTime: "02-23~05-23",
+          completeProgerss: [
+            { status: 1 },
+            { status: 1 },
+            { status: 2 },
+            { status: 0 },
+          ],
+          delayWarning: 3,
+        },
+        {
+          workOrderId: "A5435",
+          product: "浜у搧1",
+          productSpecs: "瑙勬牸",
+          amount: "2000",
+          planTime: "02-23~05-23",
+          completeProgerss: [
+            { status: 1 },
+            { status: 1 },
+            { status: 2 },
+            { status: 0 },
+          ],
+          delayWarning: 0,
+        },
+        {
+          workOrderId: "A5435",
+          product: "浜у搧1",
+          productSpecs: "瑙勬牸",
+          amount: "2000",
+          planTime: "02-23~05-23",
+          completeProgerss: [
+            { status: 1 },
+            { status: 1 },
+            { status: 1 },
+            { status: 1 },
+            { status: 1 },
+            { status: 1 },
+            { status: 1 },
+            { status: 1 },
+            { status: 2 },
+            { status: 0 },
+          ],
+          delayWarning: 2,
+        },
+        {
+          workOrderId: "A5435",
+          product: "浜у搧1",
+          productSpecs: "瑙勬牸",
+          amount: "2000",
+          planTime: "02-23~05-23",
+          completeProgerss: [
+            { status: 1 },
+            { status: 1 },
+            { status: 2 },
+            { status: 0 },
+          ],
+          delayWarning: 0,
+        },
+      ],
+    };
+  },
+  mounted() {},
+  watch: {},
+  methods: {},
+};
+</script>
+
+<style scoped lang="scss">
+.work-order-progress {
+  width: 100%;
+  height: calc(100% - 10px);
+  .bar-contents {
+    width: calc(100% - 5px);
+    height: 100%;
+    border: 1px solid #00ffff;
+    box-sizing: border-box;
+    position: relative;
+    .top-view {
+      width: 33%;
+      margin-top: -1px;
+      margin-left: -1px;
+      position: relative;
+      .top-title {
+        width: 100%;
+        position: absolute;
+        top: 20%;
+        left: 0;
+        margin: auto;
+        color: #01f7fd;
+        font-size: 14px;
+        font-family: "Arial Negreta", "Arial Normal", "Arial";
+        font-weight: 700;
+        padding-left: 30px;
+        .top-rate {
+          margin-left: 15px;
+          color: #fec718;
+        }
+      }
+    }
+    .table-box {
+      padding: 20px 15px;
+      .progerss-bg {
+        width: 100%;
+        height: 22px;
+        background: #364459;
+        display: flex;
+        border: 1px solid #00ffff;
+        .progerss {
+          background: #fec718;
+          height: 100%;
+          border-right: 1px solid #00ffff;
+          &:last-child {
+            border-right: 0px;
+          }
+        }
+        .complete {
+          background: #00cc0077;
+        }
+        .producing {
+          background: #33ccff77;
+        }
+        .noStart {
+          background-color: transparent;
+        }
+      }
+      .round-view {
+        display: flex;
+        justify-content: center;
+        color: #ff0000;
+        .round {
+          width: 22px;
+          height: 22px;
+          border-radius: 11px;
+          background: #ff0000;
+          margin-right: 5px;
+        }
+      }
+    }
+  }
+}
+::v-deep {
+  //淇敼琛ㄥご鐨勮儗鏅鑹叉í鍚戞笎鍙樿壊
+  .el-table {
+    thead {
+      color: #fff;
+      font-weight: 500;
+      background: linear-gradient(to right, #081630, #076c80) !important;
+      & th {
+        background-color: transparent;
+        padding: 6px 0;
+      }
+      & tr {
+        background-color: transparent;
+        padding: 6px 0;
+      }
+    }
+  }
+  // 淇敼琛ㄦ牸瀛椾綋棰滆壊
+  .el-table__body td {
+    color: #00ffff;
+  }
+  // 璁剧疆琛ㄦ牸鑳屾櫙閫忔槑
+  .el-table th {
+    background-color: transparent !important;
+    &:hover {
+      background-color: transparent !important;
+    }
+  }
+  .el-table tr {
+    background-color: transparent !important;
+    &:hover {
+      background-color: transparent !important;
+    }
+  }
+  .el-table--enable-row-transition .el-table__body td,
+  .el-table .cell {
+    background-color: transparent;
+  }
+  .el-table,
+  .el-table__expanded-cell {
+    background-color: transparent;
+  }
+  .el-table__body tr:hover > td {
+    background-color: transparent !important;
+  }
+  // 淇敼妯嚎棰滆壊
+  .el-table td.el-table__cell,
+  .el-table th.el-table__cell.is-leaf {
+    border-bottom: 1px solid #364459;
+  }
+  // 鍘绘帀搴曢儴澶氫綑妯嚎
+  .el-table::before {
+    display: none;
+  }
+}
+</style>
diff --git a/src/views/cockpitPage/index.vue b/src/views/cockpitPage/index.vue
index ca65da2..e578db3 100644
--- a/src/views/cockpitPage/index.vue
+++ b/src/views/cockpitPage/index.vue
@@ -12,6 +12,9 @@
     <template #leftBlock4>
       <OrderCompleteRadio></OrderCompleteRadio>
     </template>
+    <template #leftBlock5>
+      <WorkOrderProgress></WorkOrderProgress>
+    </template>
     <template #leftBlock6>
       <PerSonnelProductivity
         @should-reload="reloadAllData"
@@ -39,6 +42,7 @@
 import MaterialChart from "@/views/cockpitPage/components/MaterialChart.vue";
 import BarChart from "@/views/cockpitPage/components/BarChart.vue";
 import OrderCompleteRadio from "@/views/cockpitPage/components/OrderCompleteRadio";
+import WorkOrderProgress from "@/views/cockpitPage/components/WorkOrderProgress";
 export default {
   components: {
     StatisticalBox,
@@ -50,6 +54,7 @@
     MachineStartupRate,
     CountView,
     OrderCompleteRadio,
+    WorkOrderProgress,
   },
   props: {},
   data() {

--
Gitblit v1.8.0