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