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