loulijun2021
2023-04-14 e2660740818a17f4b5d97df4c224affa87b95ebc
src/views/kb/cjzl.vue
@@ -1,6 +1,12 @@
<template>
  <div>
    <div class="kb_dashboard">
      <!--    星空背景-->
      <!--      <div ref="starsRef" class="stars">-->
      <!--        <div v-for="(item, index) in starsCount" :key="index" class="star" />-->
      <!--      </div>-->
      <div class="kb_header">
        <div class="flex_c_c kb_header_text">
          <div id="topBarLeft" style="width:600px;height:100%" />
@@ -13,7 +19,7 @@
      </div>
      <div style="display: flex;justify-content: space-between;padding:0 20px 20px 20px">
        <!--        左边部分-->
        <div style="width: 480px;height: 969px;" class="flex_c_b">
        <div style="width: 470px;height: 969px;" class="flex_c_b">
          <div>
            <div class="smallTitle">
              <svg-icon icon-class="top5" class="svg_class" />
@@ -44,81 +50,87 @@
            <el-table
              ref="tableDataLeftCenterRef"
              :data="tableDataCenterTop"
              class="tableData"
              class="tableData tableDataCell"
              style="width: 100%;"
              :header-cell-style="headerCellStyleCenter"
              :cell-style="cellStyleCenter"
              height="927"
            >
              <el-table-column
                prop="xh"
                label="序号"
                width="50"
              />
                prop="lm_date"
                label="日期"
                width="100"
              >
                <template slot-scope="{row}">
                  <div
                    v-if="row.lm_date"
                  >
                    {{ row.lm_date.substring(0,11) }}
                  </div>
                  <div v-else />
                </template>
              </el-table-column>
              <el-table-column
                prop="cxmc"
                width="130"
                prop="eqp_name"
                width="80"
                label="产线名称"
              >
                <template slot-scope="{row}">
                  <div>{{ row.cxmc }}</div>
                  <div>{{ row.eqp_name }}</div>
                </template>
              </el-table-column>
              <el-table-column
                prop="jgdh"
                prop="wo_code"
                label="生产单号"
                width="150"
                width="173"
              >
                <template slot-scope="{row}">
                  <div style="color: #00FFFF">{{ row.jgdh }}</div>
                  <div style="color: #00FFFF">{{ row.wo_code }}</div>
                </template>
              </el-table-column>
              <el-table-column
                prop="cpmc"
                width="150"
                prop="partname"
                width="190"
                label="产品名称"
              />
              <el-table-column
                prop="blyy"
                label="不良原因"
                width="150"
              >
                <template slot-scope="{row}">
                  <div style="color:#d91010;">{{ row.blyy }}</div>
                  <div class="ellipsis">{{ row.partname }}</div>
                </template>
              </el-table-column>
              <el-table-column
                prop="scsl"
                prop="defect_name"
                label="不良原因"
                width="120"
              >
                <template slot-scope="{row}">
                  <div style="color:#ff0000;" class="ellipsis">{{ row.defect_name }}</div>
                </template>
              </el-table-column>
              <el-table-column
                prop="ng_qty"
                label="不良数量"
                width="100"
                width="77"
              />
              <el-table-column
                prop="bgsl"
                prop="report_qty"
                label="报工数量"
                width="100"
                width="77"
              />
              <!--              <el-table-column-->
              <!--                prop="yjks"-->
              <!--                label="预计开始"-->
              <!--                width="150"-->
              <!--              />-->
              <!--              <el-table-column-->
              <!--                prop="yjwg"-->
              <!--                label="预计完工"-->
              <!--                width="150"-->
              <!--              />-->
              <el-table-column
                label="不良占比"
                width="77"
              >
                <template slot-scope="{row}">
                  <div>{{ parseFloat((row.ng_qty*100/(row.ng_qty+row.report_qty)).toFixed(2)) }}%</div>
                </template>
              </el-table-column>
              <!--              <el-table-column-->
              <!--                prop="scjd"-->
              <!--                label="生产进度"-->
              <!--                width="90"-->
              <!--              />-->
            </el-table>
          </div>
        </div>
        <!--        右边部分-->
        <div style="width: 480px;height: 969px;" class="flex_c_b">
        <div style="width: 470px;height: 969px;" class="flex_c_b">
          <div>
            <div class="smallTitle">
              <svg-icon icon-class="rbl" class="svg_class" style="font-size: 28px" />
@@ -147,69 +159,21 @@
<script>
import './kbCommon.css'
import { bar02, bar04, kbTop, line02, loadEcharts, pie02 } from '@/utils/myEcharts'
import { BadContManger, BadDayDistriBute, BadTop5, BadWeek, BadWeekDistriBute } from '@/api/dzkb'
export default {
  name: 'Cjsc',
  data() {
    return {
      headTime: '',
      tableDataLeftTop: [],
      tableDataLeftTopTemp: [
        { xsdd: 'MO-2022111501', cpmc: '产品名称1', sl: '100' },
        { xsdd: 'MO-2022111502', cpmc: '产品名称2', sl: '100' },
        { xsdd: 'MO-2022111503', cpmc: '产品名称3', sl: '100' },
        { xsdd: 'MO-2022111504', cpmc: '产品名称4', sl: '100' },
        { xsdd: 'MO-2022111505', cpmc: '产品名称5', sl: '100' },
        { xsdd: 'MO-2022111506', cpmc: '产品名称6', sl: '100' },
        { xsdd: 'MO-2022111507', cpmc: '产品名称7', sl: '100' },
        { xsdd: 'MO-2022111508', cpmc: '产品名称8', sl: '100' },
        { xsdd: 'MO-2022111509', cpmc: '产品名称9', sl: '100' },
        { xsdd: 'MO-2022111510', cpmc: '产品名称10', sl: '100' },
        { xsdd: 'MO-2022111511', cpmc: '产品名称11', sl: '100' },
        { xsdd: 'MO-2022111512', cpmc: '产品名称12', sl: '100' },
        { xsdd: 'MO-2022111513', cpmc: '产品名称13', sl: '100' },
        { xsdd: 'MO-2022111514', cpmc: '产品名称14', sl: '100' },
        { xsdd: 'MO-2022111515', cpmc: '产品名称15', sl: '100' },
        { xsdd: 'MO-2022111516', cpmc: '产品名称16', sl: '100' },
        { xsdd: 'MO-2022111517', cpmc: '产品名称17', sl: '100' },
        { xsdd: 'MO-2022111518', cpmc: '产品名称18', sl: '100' },
        { xsdd: 'MO-2022111519', cpmc: '产品名称19', sl: '100' },
        { xsdd: 'MO-2022111520', cpmc: '产品名称20', sl: '100' },
        { xsdd: 'MO-2022111521', cpmc: '产品名称21', sl: '100' },
        { xsdd: 'MO-2022111522', cpmc: '产品名称22', sl: '100' },
        { xsdd: 'MO-2022111523', cpmc: '产品名称23', sl: '100' },
        { xsdd: 'MO-2022111524', cpmc: '产品名称24', sl: '100' }
      ],
      tableDataCenterTop: [],
      tableDataCenterTopTemp: [
        { xh: 1, bgsl: 200, blyy: '尺寸、色系、毛刺', jgdh: 'MO-2022-1115-01', cxmc: '产线名称1', cpmc: '产品名称1', scsl: '100', yjks: '2022-10-01', yjwg: '2022-10-10', gx: '工序一', scjd: '10/20' },
        { xh: 2, bgsl: 200, blyy: '尺寸、毛刺', jgdh: 'MO-2022-1115-01', cxmc: '产线名称1', cpmc: '产品名称1', scsl: '100', yjks: '2022-10-01', yjwg: '2022-10-10', gx: '工序一', scjd: '10/20' },
        { xh: 3, bgsl: 200, blyy: '尺寸、色系', jgdh: 'MO-2022-1115-01', cxmc: '产线名称1', cpmc: '产品名称1', scsl: '100', yjks: '2022-10-01', yjwg: '2022-10-10', gx: '工序一', scjd: '10/20' },
        { xh: 4, bgsl: 200, blyy: '尺寸、毛刺', jgdh: 'MO-2022-1115-01', cxmc: '产线名称1', cpmc: '产品名称1', scsl: '100', yjks: '2022-10-01', yjwg: '2022-10-10', gx: '工序一', scjd: '10/20' },
        { xh: 5, bgsl: 200, blyy: '色系、毛刺', jgdh: 'MO-2022-1115-01', cxmc: '产线名称1', cpmc: '产品名称1', scsl: '100', yjks: '2022-10-01', yjwg: '2022-10-10', gx: '工序一', scjd: '10/20' },
        { xh: 6, bgsl: 200, blyy: '尺寸、色系', jgdh: 'MO-2022-1115-01', cxmc: '产线名称1', cpmc: '产品名称1', scsl: '100', yjks: '2022-10-01', yjwg: '2022-10-10', gx: '工序一', scjd: '10/20' },
        { xh: 7, bgsl: 200, blyy: '尺寸、色系、毛刺', jgdh: 'MO-2022-1115-01', cxmc: '产线名称1', cpmc: '产品名称1', scsl: '100', yjks: '2022-10-01', yjwg: '2022-10-10', gx: '工序一', scjd: '10/20' },
        { xh: 8, bgsl: 200, blyy: '尺寸、毛刺', jgdh: 'MO-2022-1115-01', cxmc: '产线名称1', cpmc: '产品名称1', scsl: '100', yjks: '2022-10-01', yjwg: '2022-10-10', gx: '工序一', scjd: '10/20' },
        { xh: 9, bgsl: 200, blyy: '尺寸、色系、毛刺', jgdh: 'MO-2022-1115-01', cxmc: '产线名称1', cpmc: '产品名称1', scsl: '100', yjks: '2022-10-01', yjwg: '2022-10-10', gx: '工序一', scjd: '10/20' },
        { xh: 10, bgsl: 200, blyy: '毛刺', jgdh: 'MO-2022-1115-01', cxmc: '产线名称1', cpmc: '产品名称1', scsl: '100', yjks: '2022-10-01', yjwg: '2022-10-10', gx: '工序一', scjd: '10/20' },
        { xh: 11, bgsl: 200, blyy: '尺寸', jgdh: 'MO-2022-1115-01', cxmc: '产线名称1', cpmc: '产品名称1', scsl: '100', yjks: '2022-10-01', yjwg: '2022-10-10', gx: '工序一', scjd: '10/20' },
        { xh: 12, bgsl: 200, blyy: '尺寸、色系、毛刺', jgdh: 'MO-2022-1115-01', cxmc: '产线名称1', cpmc: '产品名称1', scsl: '100', yjks: '2022-10-01', yjwg: '2022-10-10', gx: '工序一', scjd: '10/20' },
        { xh: 13, bgsl: 200, blyy: '尺寸、色系、毛刺', jgdh: 'MO-2022-1115-01', cxmc: '产线名称1', cpmc: '产品名称1', scsl: '100', yjks: '2022-10-01', yjwg: '2022-10-10', gx: '工序一', scjd: '10/20' },
        { xh: 14, bgsl: 200, blyy: '尺寸、色系、毛刺', jgdh: 'MO-2022-1115-01', cxmc: '产线名称1', cpmc: '产品名称1', scsl: '100', yjks: '2022-10-01', yjwg: '2022-10-10', gx: '工序一', scjd: '10/20' },
        { xh: 15, bgsl: 200, blyy: '尺寸、色系、毛刺', jgdh: 'MO-2022-1115-01', cxmc: '产线名称1', cpmc: '产品名称1', scsl: '100', yjks: '2022-10-01', yjwg: '2022-10-10', gx: '工序一', scjd: '10/20' },
        { xh: 16, bgsl: 200, blyy: '尺寸、色系、毛刺', jgdh: 'MO-2022-1115-01', cxmc: '产线名称1', cpmc: '产品名称1', scsl: '100', yjks: '2022-10-01', yjwg: '2022-10-10', gx: '工序一', scjd: '10/20' },
        { xh: 17, bgsl: 200, blyy: '尺寸、色系、毛刺', jgdh: 'MO-2022-1115-01', cxmc: '产线名称1', cpmc: '产品名称1', scsl: '100', yjks: '2022-10-01', yjwg: '2022-10-10', gx: '工序一', scjd: '10/20' },
        { xh: 18, bgsl: 200, blyy: '尺寸、色系、毛刺', jgdh: 'MO-2022-1115-01', cxmc: '产线名称1', cpmc: '产品名称1', scsl: '100', yjks: '2022-10-01', yjwg: '2022-10-10', gx: '工序一', scjd: '10/20' },
        { xh: 19, bgsl: 200, blyy: '尺寸、色系、毛刺', jgdh: 'MO-2022-1115-01', cxmc: '产线名称1', cpmc: '产品名称1', scsl: '100', yjks: '2022-10-01', yjwg: '2022-10-10', gx: '工序一', scjd: '10/20' },
        { xh: 20, bgsl: 200, blyy: '尺寸、色系、毛刺', jgdh: 'MO-2022-1115-01', cxmc: '产线名称1', cpmc: '产品名称1', scsl: '100', yjks: '2022-10-01', yjwg: '2022-10-10', gx: '工序一', scjd: '10/20' },
        { xh: 21, bgsl: 200, blyy: '尺寸、色系、毛刺', jgdh: 'MO-2022-1115-01', cxmc: '产线名称1', cpmc: '产品名称1', scsl: '100', yjks: '2022-10-01', yjwg: '2022-10-10', gx: '工序一', scjd: '10/20' },
        { xh: 22, bgsl: 200, blyy: '尺寸、色系、毛刺', jgdh: 'MO-2022-1115-01', cxmc: '产线名称1', cpmc: '产品名称1', scsl: '100', yjks: '2022-10-01', yjwg: '2022-10-10', gx: '工序一', scjd: '10/20' },
        { xh: 23, bgsl: 200, blyy: '尺寸、色系、毛刺', jgdh: 'MO-2022-1115-01', cxmc: '产线名称1', cpmc: '产品名称1', scsl: '100', yjks: '2022-10-01', yjwg: '2022-10-10', gx: '工序一', scjd: '10/20' },
        { xh: 24, bgsl: 200, blyy: '尺寸、色系、毛刺', jgdh: 'MO-2022-1115-01', cxmc: '产线名称1', cpmc: '产品名称1', scsl: '100', yjks: '2022-10-01', yjwg: '2022-10-10', gx: '工序一', scjd: '10/20' },
        { xh: 25, bgsl: 200, blyy: '尺寸、色系、毛刺', jgdh: 'MO-2022-1115-01', cxmc: '产线名称1', cpmc: '产品名称1', scsl: '100', yjks: '2022-10-01', yjwg: '2022-10-10', gx: '工序一', scjd: '10/20' },
        { xh: 26, bgsl: 200, blyy: '尺寸、色系、毛刺', jgdh: 'MO-2022-1115-01', cxmc: '产线名称1', cpmc: '产品名称1', scsl: '100', yjks: '2022-10-01', yjwg: '2022-10-10', gx: '工序一', scjd: '10/20' },
        { xh: 27, bgsl: 200, blyy: '尺寸、色系、毛刺', jgdh: 'MO-2022-1115-01', cxmc: '产线名称1', cpmc: '产品名称1', scsl: '100', yjks: '2022-10-01', yjwg: '2022-10-10', gx: '工序一', scjd: '10/20' }
      ]
      tableDataCenterTopTemp: [],
      StepCode: '02',
      starsCount: 800, // 星星数量
      distance: 900 // 间距
    }
  },
  created() {
@@ -222,63 +186,95 @@
  },
  mounted() {
    this.getTopBar()
    this.getTableDataSetInterval()
    this.getCenterTableDataSetInterval()
    this.getEcharts()
    // this.setStarsRef()
  },
  methods: {
    setStarsRef() {
      const starNodes = Array.from(this.$refs.starsRef.children)
      starNodes.forEach(item => {
        const speed = 0.2 + Math.random() * 1
        const thisDistance = this.distance + Math.random() * 300
        item.style.transformOrigin = `0 0 ${thisDistance}px`
        item.style.transform = `
        translate3d(0,0,-${thisDistance}px)
        rotateY(${Math.random() * 360}deg)
        rotateX(${Math.random() * -50}deg)
        scale(${speed},${speed})`
      })
    },
    // 获取Echarts
    getEcharts() {
      const dataArr = [30, 20, 20, 18, 10]
      const titlenameArr = ['颜色', '尺寸', '气味', '毛刺', '裂痕']
      loadEcharts('bar01', bar02(dataArr, titlenameArr))
      this.getLeftTopEcharts()
      setInterval(() => {
        this.getLeftTopEcharts()
      }, 1000 * 10)
      loadEcharts('line01', line02())
      this.getLeftBottomEcharts()
      setInterval(() => {
        this.getLeftBottomEcharts()
      }, 1000 * 10)
      loadEcharts('bar02', bar04())
      this.getRightTopEcharts()
      setInterval(() => {
        this.getRightTopEcharts()
      }, 1000 * 10)
      loadEcharts('pie01', pie02())
      this.getRightBottomEcharts()
      setInterval(() => {
        this.getRightBottomEcharts()
      }, 1000 * 10)
    },
    getLeftTopEcharts() {
      BadTop5({ StepCode: this.StepCode }).then(res => {
        const dataArr = res.data.map(i => i.cont)
        const titlenameArr = res.data.map(i => i.name)
        loadEcharts('bar01', bar02(dataArr, titlenameArr))
      })
    },
    getLeftBottomEcharts() {
      BadWeek({ StepCode: this.StepCode }).then(res => {
        const dataX = res.data.map(i => i.click_date)
        const dataY = res.data.map(i => i.count)
        loadEcharts('line01', line02(dataX, dataY))
      })
    },
    getRightTopEcharts() {
      BadDayDistriBute({ StepCode: this.StepCode }).then(res => {
        loadEcharts('bar02', bar04(res.data))
      })
    },
    getRightBottomEcharts() {
      BadWeekDistriBute({ StepCode: this.StepCode }).then(res => {
        loadEcharts('pie01', pie02(res.data))
      })
    },
    // 中间部分的表格
    getCenterTableDataSetInterval() {
      let startValue = 0 // 初始值
      const scale = 23// 刻度
      this.tableDataCenterTop = this.tableDataCenterTopTemp.slice(startValue, startValue + scale)
      const loop = Math.floor(this.tableDataCenterTopTemp.length / scale)// 需要循环的次数
      let nowLoop = 0// 当前循环的次数
      setInterval(() => {
        startValue = startValue + scale
      BadContManger({ StepCode: this.StepCode }).then(res => {
        this.tableDataCenterTopTemp = res.data
        this.tableDataCenterTop = this.tableDataCenterTopTemp.slice(startValue, startValue + scale)
        if (nowLoop === loop) {
          this.getCenterTableDataSetInterval()
        }
        nowLoop++
      }, 5000)
    },
        const loop = Math.floor(this.tableDataCenterTopTemp.length / scale)// 需要循环的次数
        let nowLoop = 0// 当前循环的次数
    // 定时刷新表格数据
    getTableDataSetInterval() {
      let startValue = 0 // 初始值
      const scale = 10// 刻度
        const timer = setInterval(() => {
          startValue = startValue + scale
          this.tableDataCenterTop = this.tableDataCenterTopTemp.slice(startValue, startValue + scale)
          if (nowLoop === loop) {
            clearInterval(timer)
            this.getCenterTableDataSetInterval()
          }
      this.tableDataLeftTop = this.tableDataLeftTopTemp.slice(startValue, startValue + scale)
      const loop = Math.floor(this.tableDataLeftTopTemp.length / scale)// 需要循环的次数
      let nowLoop = 0// 当前循环的次数
      setInterval(() => {
        startValue = startValue + scale
        this.tableDataLeftTop = this.tableDataLeftTopTemp.slice(startValue, startValue + scale)
        if (nowLoop === loop) {
          this.getTableDataSetInterval()
        }
        nowLoop++
      }, 5000)
          nowLoop++
        }, 1000 * 10)
      })
    },
    // 获取topEcharts
@@ -330,7 +326,8 @@
        padding: '10px 0',
        textAlign: 'center',
        color: '#07acc2',
        border: 'none'
        border: 'none',
        fontSize: '18px'
      }
    },
    cellStyleCenter() {
@@ -339,7 +336,8 @@
        textAlign: 'center',
        backgroundColor: '#000',
        color: '#fff',
        border: 'none'
        border: 'none',
        fontSize: '18px'
      }
    }
  }
@@ -350,45 +348,57 @@
<style lang="scss" scoped>
$main_color:#09d8f2;
$color01: #00FFFF;
.lineContent {
  height: 435px;
  border: 1px solid $main_color;
  //outline: 1px solid $main_color;
  border-radius: 5px;
  padding: 2px;
}
.lineContentCenter{
  height: 935px;
  border: 1px solid $main_color;
  //outline: 1px solid $main_color;
  border-radius: 5px;
  padding: 2px;
}
.horn {
  background: linear-gradient($color01, $color01) left top,
  linear-gradient($color01, $color01) left top,
  linear-gradient($color01, $color01) right top,
  linear-gradient($color01, $color01) right top,
  linear-gradient($color01, $color01) left bottom,
  linear-gradient($color01, $color01) left bottom,
  linear-gradient($color01, $color01) right bottom,
  linear-gradient($color01, $color01) right bottom;
  background-repeat: no-repeat;
  //background-size: 5px 20px, 20px 5px;
  background-size: 2px 20px, 20px 2px;
}
.tableData{
  background: #000;
}
//.el-table::before{
//  height: 0;
//}
.el-table::before{
  height: 0;
}
.el-table__empty-text{
  color: $main_color;
}
.tableDataCell {
  ::v-deep .cell{
    padding: 0 2px ;
  }
}
</style>
<!--星空-->
<style lang="css" scoped>
@keyframes rotate {
  0% {
    transform: perspective(400px) rotateZ(20deg) rotateX(-40deg) rotateY(0);
  }
  100% {
    transform: perspective(400px) rotateZ(20deg) rotateX(-40deg) rotateY(-360deg);
  }
}
.stars {
  transform: perspective(500px);
  transform-style: preserve-3d;
  position: absolute;
  perspective-origin: 50% 100%;
  left: 45%;
  animation: rotate 90s infinite linear;
  bottom: 0;
  z-index: 102;
}
.star {
  width: 2px;
  height: 2px;
  /*background: #f7f7b6;*/
  background: #8edffc;
  position: absolute;
  left: 0;
  top: 0;
  backface-visibility: hidden;
  z-index: 102;
}
</style>