yangfeng
2023-12-02 d69724b8ba43312b3e794ad2d63a2493972f02c0
工单进度统计模块
2个文件已添加
2个文件已修改
303 ■■■■■ 已修改文件
public/cockpitPage/work-order-top.png 补丁 | 查看 | 原始文档 | blame | 历史
src/views/cockpitPage/components/OrderCompleteRadio.vue 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/cockpitPage/components/WorkOrderProgress.vue 289 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/cockpitPage/index.vue 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
public/cockpitPage/work-order-top.png
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: {},
};
src/views/cockpitPage/components/WorkOrderProgress.vue
New file
@@ -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>
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() {