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%" />
@@ -44,85 +50,82 @@
            <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="rq"
                prop="lm_date"
                label="日期"
                width="115"
              />
              <el-table-column
                prop="cxmc"
                width="95"
                label="产线名称"
                width="100"
              >
                <template slot-scope="{row}">
                  <div>{{ row.cxmc }}</div>
                  <div
                    v-if="row.lm_date"
                  >
                    {{ row.lm_date.substring(0,11) }}
                  </div>
                  <div v-else />
                </template>
              </el-table-column>
              <el-table-column
                prop="jgdh"
                label="生产单号"
                width="165"
                prop="eqp_name"
                width="80"
                label="产线名称"
              >
                <template slot-scope="{row}">
                  <div style="color: #00FFFF">{{ row.jgdh }}</div>
                  <div>{{ row.eqp_name }}</div>
                </template>
              </el-table-column>
              <el-table-column
                prop="wo_code"
                label="生产单号"
                width="173"
              >
                <template slot-scope="{row}">
                  <div style="color: #00FFFF">{{ row.wo_code }}</div>
                </template>
              </el-table-column>
              <el-table-column
                prop="cpmc"
                width="100"
                prop="partname"
                width="190"
                label="产品名称"
              >
                <template slot-scope="{row}">
                  <div class="ellipsis">{{ row.cpmc }}</div>
                  <div class="ellipsis">{{ row.partname }}</div>
                </template>
              </el-table-column>
              <el-table-column
                prop="blyy"
                prop="defect_name"
                label="不良原因"
                width="120"
              >
                <template slot-scope="{row}">
                  <div style="color:#ff0000;width: 120px" class="ellipsis">{{ row.blyy }}</div>
                  <div style="color:#ff0000;" class="ellipsis">{{ row.defect_name }}</div>
                </template>
              </el-table-column>
              <el-table-column
                prop="scsl"
                prop="ng_qty"
                label="不良数量"
                width="95"
                width="77"
              />
              <el-table-column
                prop="bgsl"
                prop="report_qty"
                label="报工数量"
                width="95"
                width="77"
              />
              <el-table-column
                prop="blzb"
                label="不良占比"
                width="95"
              />
              <!--              <el-table-column-->
              <!--                prop="yjks"-->
              <!--                label="预计开始"-->
              <!--                width="150"-->
              <!--              />-->
              <!--              <el-table-column-->
              <!--                prop="yjwg"-->
              <!--                label="预计完工"-->
              <!--                width="150"-->
              <!--              />-->
                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>
@@ -156,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: '电池包', 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: [
        { blzb: '50%', rq: '2022-11-30', bgsl: 200, blyy: '尺寸、色系、毛刺', jgdh: 'MO-2022-1115-01', cxmc: '装配一线', cpmc: '电池包', scsl: '100', yjks: '2022-10-01', yjwg: '2022-10-10', gx: '工序一', scjd: '10/20' },
        { blzb: '50%', rq: '2022-11-30', bgsl: 200, blyy: '尺寸、毛刺', jgdh: 'MO-2022-1115-01', cxmc: '装配一线', cpmc: '电池包', scsl: '100', yjks: '2022-10-01', yjwg: '2022-10-10', gx: '工序一', scjd: '10/20' },
        { blzb: '50%', rq: '2022-11-30', bgsl: 200, blyy: '尺寸、色系', jgdh: 'MO-2022-1115-01', cxmc: '装配一线', cpmc: '电池包', scsl: '100', yjks: '2022-10-01', yjwg: '2022-10-10', gx: '工序一', scjd: '10/20' },
        { blzb: '50%', rq: '2022-11-30', bgsl: 200, blyy: '尺寸、毛刺', jgdh: 'MO-2022-1115-01', cxmc: '装配一线', cpmc: '电池包', scsl: '100', yjks: '2022-10-01', yjwg: '2022-10-10', gx: '工序一', scjd: '10/20' },
        { blzb: '50%', rq: '2022-11-30', bgsl: 200, blyy: '色系、毛刺', jgdh: 'MO-2022-1115-01', cxmc: '装配一线', cpmc: '电池包', scsl: '100', yjks: '2022-10-01', yjwg: '2022-10-10', gx: '工序一', scjd: '10/20' },
        { blzb: '50%', rq: '2022-11-30', bgsl: 200, blyy: '尺寸、色系', jgdh: 'MO-2022-1115-01', cxmc: '装配一线', cpmc: '电池包', scsl: '100', yjks: '2022-10-01', yjwg: '2022-10-10', gx: '工序一', scjd: '10/20' },
        { blzb: '50%', rq: '2022-11-30', bgsl: 200, blyy: '尺寸、色系、毛刺', jgdh: 'MO-2022-1115-01', cxmc: '装配一线', cpmc: '电池包', scsl: '100', yjks: '2022-10-01', yjwg: '2022-10-10', gx: '工序一', scjd: '10/20' },
        { blzb: '50%', rq: '2022-11-30', bgsl: 200, blyy: '尺寸、毛刺', jgdh: 'MO-2022-1115-01', cxmc: '装配一线', cpmc: '电池包', scsl: '100', yjks: '2022-10-01', yjwg: '2022-10-10', gx: '工序一', scjd: '10/20' },
        { blzb: '50%', rq: '2022-11-30', bgsl: 200, blyy: '尺寸、色系、毛刺', jgdh: 'MO-2022-1115-01', cxmc: '装配一线', cpmc: '电池包', scsl: '100', yjks: '2022-10-01', yjwg: '2022-10-10', gx: '工序一', scjd: '10/20' },
        { blzb: '50%', rq: '2022-11-30', bgsl: 200, blyy: '毛刺', jgdh: 'MO-2022-1115-01', cxmc: '装配一线', cpmc: '电池包', scsl: '100', yjks: '2022-10-01', yjwg: '2022-10-10', gx: '工序一', scjd: '10/20' },
        { blzb: '50%', rq: '2022-11-30', bgsl: 200, blyy: '尺寸', jgdh: 'MO-2022-1115-01', cxmc: '装配一线', cpmc: '电池包', scsl: '100', yjks: '2022-10-01', yjwg: '2022-10-10', gx: '工序一', scjd: '10/20' },
        { blzb: '50%', rq: '2022-11-30', bgsl: 200, blyy: '尺寸、色系、毛刺', jgdh: 'MO-2022-1115-01', cxmc: '装配一线', cpmc: '电池包', scsl: '100', yjks: '2022-10-01', yjwg: '2022-10-10', gx: '工序一', scjd: '10/20' },
        { blzb: '50%', rq: '2022-11-30', bgsl: 200, blyy: '尺寸、色系、毛刺', jgdh: 'MO-2022-1115-01', cxmc: '装配一线', cpmc: '电池包', scsl: '100', yjks: '2022-10-01', yjwg: '2022-10-10', gx: '工序一', scjd: '10/20' },
        { blzb: '50%', rq: '2022-11-30', bgsl: 200, blyy: '尺寸、色系、毛刺', jgdh: 'MO-2022-1115-01', cxmc: '装配一线', cpmc: '电池包', scsl: '100', yjks: '2022-10-01', yjwg: '2022-10-10', gx: '工序一', scjd: '10/20' },
        { blzb: '50%', rq: '2022-11-30', bgsl: 200, blyy: '尺寸、色系、毛刺', jgdh: 'MO-2022-1115-01', cxmc: '装配一线', cpmc: '电池包', scsl: '100', yjks: '2022-10-01', yjwg: '2022-10-10', gx: '工序一', scjd: '10/20' },
        { blzb: '50%', rq: '2022-11-30', bgsl: 200, blyy: '尺寸、色系、毛刺', jgdh: 'MO-2022-1115-01', cxmc: '装配一线', cpmc: '电池包', scsl: '100', yjks: '2022-10-01', yjwg: '2022-10-10', gx: '工序一', scjd: '10/20' },
        { blzb: '50%', rq: '2022-11-30', bgsl: 200, blyy: '尺寸、色系、毛刺', jgdh: 'MO-2022-1115-01', cxmc: '装配一线', cpmc: '电池包', scsl: '100', yjks: '2022-10-01', yjwg: '2022-10-10', gx: '工序一', scjd: '10/20' },
        { blzb: '50%', rq: '2022-11-30', bgsl: 200, blyy: '尺寸、色系、毛刺', jgdh: 'MO-2022-1115-01', cxmc: '装配一线', cpmc: '电池包', scsl: '100', yjks: '2022-10-01', yjwg: '2022-10-10', gx: '工序一', scjd: '10/20' },
        { blzb: '50%', rq: '2022-11-30', bgsl: 200, blyy: '尺寸、色系、毛刺', jgdh: 'MO-2022-1115-01', cxmc: '装配一线', cpmc: '电池包', scsl: '100', yjks: '2022-10-01', yjwg: '2022-10-10', gx: '工序一', scjd: '10/20' },
        { blzb: '50%', rq: '2022-11-30', bgsl: 200, blyy: '尺寸、色系、毛刺', jgdh: 'MO-2022-1115-01', cxmc: '装配一线', cpmc: '电池包', scsl: '100', yjks: '2022-10-01', yjwg: '2022-10-10', gx: '工序一', scjd: '10/20' },
        { blzb: '50%', rq: '2022-11-30', bgsl: 200, blyy: '尺寸、色系、毛刺', jgdh: 'MO-2022-1115-01', cxmc: '装配一线', cpmc: '电池包', scsl: '100', yjks: '2022-10-01', yjwg: '2022-10-10', gx: '工序一', scjd: '10/20' },
        { blzb: '50%', rq: '2022-11-30', bgsl: 200, blyy: '尺寸、色系、毛刺', jgdh: 'MO-2022-1115-01', cxmc: '装配一线', cpmc: '电池包', scsl: '100', yjks: '2022-10-01', yjwg: '2022-10-10', gx: '工序一', scjd: '10/20' },
        { blzb: '50%', rq: '2022-11-30', bgsl: 200, blyy: '尺寸、色系、毛刺', jgdh: 'MO-2022-1115-01', cxmc: '装配一线', cpmc: '电池包', scsl: '100', yjks: '2022-10-01', yjwg: '2022-10-10', gx: '工序一', scjd: '10/20' },
        { blzb: '50%', rq: '2022-11-30', bgsl: 200, blyy: '尺寸、色系、毛刺', jgdh: 'MO-2022-1115-01', cxmc: '装配一线', cpmc: '电池包', scsl: '100', yjks: '2022-10-01', yjwg: '2022-10-10', gx: '工序一', scjd: '10/20' },
        { blzb: '50%', rq: '2022-11-30', bgsl: 200, blyy: '尺寸、色系、毛刺', jgdh: 'MO-2022-1115-01', cxmc: '装配一线', cpmc: '电池包', scsl: '100', yjks: '2022-10-01', yjwg: '2022-10-10', gx: '工序一', scjd: '10/20' },
        { blzb: '50%', rq: '2022-11-30', bgsl: 200, blyy: '尺寸、色系、毛刺', jgdh: 'MO-2022-1115-01', cxmc: '装配一线', cpmc: '电池包', scsl: '100', yjks: '2022-10-01', yjwg: '2022-10-10', gx: '工序一', scjd: '10/20' },
        { blzb: '50%', rq: '2022-11-30', bgsl: 200, blyy: '尺寸、色系、毛刺', jgdh: 'MO-2022-1115-01', cxmc: '装配一线', cpmc: '电池包', scsl: '100', yjks: '2022-10-01', yjwg: '2022-10-10', gx: '工序一', scjd: '10/20' }
      ]
      tableDataCenterTopTemp: [],
      StepCode: '02',
      starsCount: 800, // 星星数量
      distance: 900 // 间距
    }
  },
  created() {
@@ -231,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
@@ -372,4 +359,46 @@
.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>