loulijun2021
2023-09-13 8afc9acc4a126e2b3f72251ea4be07173387f0eb
1.车间综合15%
已添加1个文件
已修改4个文件
570 ■■■■■ 文件已修改
src/api/kanbanManager.js 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/icons/svg/ckkc.svg 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/utils/myEcharts.js 245 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/kanbanManager/all.vue 306 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/kanbanManager/kbCommon.css 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/kanbanManager.js
@@ -159,17 +159,25 @@
  })
}
export function BadWeekDistriBute(data) {
export function WorkShopCompreLeftTop(data) {
  return request({
    url: 'KanBanManagerent/BadWeekDistriBute',
    url: 'KanBanManagerent/WorkShopCompreLeftTop',
    method: 'get',
    params: data
  })
}
export function BadContManger(data) {
export function WorkShopCompreRightTop(data) {
  return request({
    url: 'KanBanManagerent/BadContManger',
    url: 'KanBanManagerent/WorkShopCompreRightTop',
    method: 'get',
    params: data
  })
}
export function WorkShopCompreRightBottom(data) {
  return request({
    url: 'KanBanManagerent/WorkShopCompreRightBottom',
    method: 'get',
    params: data
  })
src/icons/svg/ckkc.svg
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1694592951293" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="7561" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M640 725.333333v-128h128v128h85.333333v128h-128v-128h-42.666666v128h-128v-128h85.333333z m213.333333-128h-85.333333v-51.2l-256-256-256 256V768h256v85.333333H170.666667v-298.666666H128l384-384 384 384h-42.666667v42.666666z" fill="#00ffff" p-id="7562"></path></svg>
src/utils/myEcharts.js
@@ -2696,3 +2696,248 @@
  }
  return option
}
export function all01(xData2) {
  // var xData2 = ['123', '21', '32', '23', '1233']
  var data1 = [250, 100, 130, 200, 300]
  var data2 = [400, 200, 300, 300, 300]
  var barWidth = 30
  const option = {
    backgroundColor: 'transparent',
    // tooltip: {
    //   trigger: 'item'
    // },
    grid: {
      left: '2%',
      top: '20%',
      right: '2%',
      bottom: '5%',
      containLabel: true
    },
    title: {
      text: '各车间当月订单数/入库数量',
      left: '50%',
      top: '0%',
      textAlign: 'center',
      textStyle: {
        color: 'rgba(0,255,255,0.8)',
        fontSize: '20',
        fontWeight: 'bolder'
      }
    },
    xAxis: {
      data: xData2,
      type: 'category',
      boundaryGap: true,
      axisLabel: {
        interval: 0,
        formatter: '{value}',
        fontSize: 16,
        margin: 20,
        textStyle: {
          color: colorX
        }
      },
      axisLine: {
        lineStyle: {
          color: '#032c58'
        }
      },
      splitLine: {
        show: false,
        lineStyle: {
          color: '#032c58'
        }
      },
      axisTick: {
        show: false
      }
    },
    yAxis: {
      boundaryGap: false,
      // splitNumber: 4,
      type: 'value',
      // max: 100,
      axisLabel: {
        textStyle: {
          fontSize: 16,
          color: colorX
        }
      },
      nameTextStyle: {
        color: '#fff',
        fontSize: 14,
        lineHeight: 40
      },
      splitLine: {
        show: true,
        lineStyle: {
          color: '#032c58'
        }
      },
      axisLine: {
        show: true,
        lineStyle: {
          color: '#032c58'
        }
      },
      axisTick: {
        show: false
      }
    },
    series: [
      { // ä¸ŠåŠæˆªæŸ±å­
        name: '2019',
        type: 'bar',
        barWidth: barWidth,
        barGap: '-100%',
        z: 0,
        itemStyle: {
          color: '#163F7A',
          opacity: 0.7
        },
        data: data2
      },
      { // ä¸‹åŠæˆªæŸ±å­
        name: '2020',
        type: 'bar',
        barWidth: barWidth,
        barGap: '-100%',
        itemStyle: { // lenged文本
          opacity: 0.7,
          color: function(params) {
            return new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
              offset: 0,
              color: '#12B9DB' // 0% å¤„的颜色
            }, {
              offset: 1,
              color: '#6F8EF2' // 100% å¤„的颜色
            }], false)
          }
        },
        data: data1
      },
      { // æ›¿ä»£æŸ±çж图 é»˜è®¤ä¸æ˜¾ç¤ºé¢œè‰²ï¼Œæ˜¯æœ€ä¸‹æ–¹æŸ±å›¾ï¼ˆé‚®ä»¶è¥é”€ï¼‰çš„value值 - 20
        type: 'bar',
        barWidth: barWidth,
        barGap: '-100%',
        stack: '广告',
        itemStyle: {
          color: 'transparent'
        },
        label: {
          normal: {
            show: true,
            position: 'left',
            fontSize: 16,
            color: colorX,
            zIndex: 10
          }
        },
        data: data1
      },
      { // ä¸ŠåŠæˆªæŸ±å­é¡¶éƒ¨åœ†ç‰‡
        'name': '',
        'type': 'pictorialBar',
        'symbolSize': [barWidth, 15],
        'symbolOffset': [0, -10],
        'z': 12,
        'symbolPosition': 'end',
        itemStyle: {
          color: '#163F7A',
          opacity: 1
        },
        label: {
          show: true,
          position: 'top',
          fontSize: 16,
          color: '#fff'
        },
        'data': data2
      },
      { // ä¸‹åŠæˆªæŸ±å­é¡¶éƒ¨åœ†ç‰‡
        'name': '',
        'type': 'pictorialBar',
        'symbolSize': [barWidth, 15],
        'symbolOffset': [0, -10],
        'z': 12,
        itemStyle: {
          opacity: 1,
          color: function(params) {
            return new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
              offset: 0,
              color: '#12B9DB' // 0% å¤„的颜色
            }, {
              offset: 1,
              color: '#6F8EF2' // 100% å¤„的颜色
            }], false)
          }
        },
        // label: {
        //   show: true,
        //   position: 'top',
        //   fontSize: 16,
        //   color: '#fff'
        // // formatter:(item)=>{
        // //     console.log(item)
        // //     return 'ssss'
        // // }
        // },
        'symbolPosition': 'end',
        'data': data1
      },
      { // ä¸‹åŠæˆªæŸ±å­åº•部圆片
        'name': '',
        'type': 'pictorialBar',
        'symbolSize': [barWidth, 15],
        'symbolOffset': [0, 5],
        'z': 12,
        itemStyle: {
          opacity: 1,
          color: function(params) {
            return new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
              offset: 0,
              color: '#12B9DB' // 0% å¤„的颜色
            }, {
              offset: 1,
              color: '#6F8EF2' // 100% å¤„的颜色
            }], false)
          }
        },
        'data': [1, 1, 1, 1, 1]
      },
      {
        name: '第一圈',
        type: 'pictorialBar',
        symbolSize: [47, 16],
        symbolOffset: [0, 11],
        z: 11,
        itemStyle: {
          normal: {
            color: 'transparent',
            borderColor: '#00ffff',
            borderWidth: 2
          }
        },
        data: [1, 1, 1, 1, 1]
      },
      {
        name: '第二圈',
        type: 'pictorialBar',
        symbolSize: [62, 22],
        symbolOffset: [0, 17],
        z: 10,
        itemStyle: {
          normal: {
            color: 'transparent',
            borderColor: '#00ffff',
            borderWidth: 2
          }
        },
        data: [1, 1, 1, 1, 1]
      }
    ]
  }
  return option
}
src/views/kanbanManager/all.vue
@@ -1,12 +1,310 @@
<!--总的综合看板-->
<template />
<template>
  <div>
    <div class="kb_dashboard" style="display:flex;flex-direction: column;justify-content: space-between">
      <div class="kb_backgroundCustom" />
      <div class="kb_header">
        <div class="kb_headTime" style="top: 35px;left:  20px">
          <span>浙江正清和日用制品有限公司</span>
        </div>
        <div class="kb_headTime kb_header_text" style="top: 35px;left:  800px">
          <span>车间综合数字化看板</span>
        </div>
        <div class="kb_headTime" style="top: 35px;right:  25px">
          <span>{{ headTime }}</span>
        </div>
      </div>
      <div
        style=" padding:5px 20px 20px 20px;z-index:2;height: 940px;flex-direction: column;justify-content: space-between;"
      >
        <!--        ä¸Šè¾¹-->
        <div style="display: flex;justify-content: space-between">
          <div style="width: 1000px;">
            <div class="smallTitle">
              <svg-icon icon-class="cxjg" class="svg_class" />
              ç”Ÿäº§è®¢å•(当月)
            </div>
            <div class="lineContent horn" style="height: 450px;display: flex;flex-direction: column;justify-content: space-between">
              <div style="height: 180px;padding: 10px;display: flex;justify-content: space-between">
                <div v-for="i in LeftTopData01" :key="i.wkshp_code" class="flex_c_s">
                  <div class="all_block01 flex_c_s">
                    <div class="flex_c_c all_block02">{{ i.wkshp_name }}</div>
                    <div class="" style="display: flex;justify-content:space-between">
                      <div class="all_block02 flex_c_c" style="width: 49% ">任务数</div>
                      <div class="all_block02 flex_c_c" style="width: 49% ">{{ i.plan_qty }}</div>
                    </div>
                    <div class="" style="display: flex;justify-content:space-between">
                      <div class="all_block02 flex_c_c" style="width: 49% ">完工数</div>
                      <div class="all_block02 flex_c_c" style="width: 49% ">{{ i.good_qty }}</div>
                    </div>
                  </div>
                </div>
              </div>
              <div style="height: 260px;">
                <div id="all01" class="flex_c_c" style="width: 100%;height:100%;" />
              </div>
            </div>
          </div>
          <div style="width: 850px;">
            <div class="smallTitle">
              <svg-icon icon-class="cggz" class="svg_class" />
              é”€å”®è®¢å•(月/å­£)
            </div>
            <div class="lineContent horn" style="height: 450px;display: flex;justify-content: space-between">
              <div style="height: 180px;padding: 10px;display: flex;justify-content: space-between">
                <!--                <div v-for="i in LeftTopData01" :key="i" class="flex_c_s">-->
                <!--                  <div class="all_block01 flex_c_s">-->
                <!--                    <div class="flex_c_c all_block02">{{ i.wkshp_name }}</div>-->
                <!--                    <div class="" style="display: flex;justify-content:space-between">-->
                <!--                      <div class="all_block02 flex_c_c" style="width: 49% ">任务数</div>-->
                <!--                      <div class="all_block02 flex_c_c" style="width: 49% ">{{ i.plan_qty }}</div>-->
                <!--                    </div>-->
                <!--                    <div class="" style="display: flex;justify-content:space-between">-->
                <!--                      <div class="all_block02 flex_c_c" style="width: 49% ">完工数</div>-->
                <!--                      <div class="all_block02 flex_c_c" style="width: 49% ">{{ i.good_qty }}</div>-->
                <!--                    </div>-->
                <!--                  </div>-->
                <!--                </div>-->
              </div>
              <div style="height: 260px;">123</div>
            </div>
          </div>
        </div>
        <!--        ä¸‹è¾¹-->
        <div style="display: flex;justify-content: space-between;margin-top: 15px;">
          <div style="width: 1000px;">
            <div class="smallTitle">
              <svg-icon icon-class="blcs" class="svg_class" />
              è´¨é‡ä¸è‰¯
            </div>
            <div class="lineContent horn" style="height: 380px;display: flex;justify-content: space-between">
              123
            </div>
          </div>
          <div style="width: 850px;">
            <div class="smallTitle">
              <svg-icon icon-class="ckkc" class="svg_class" />
              ä»“库库存
            </div>
            <div class="lineContent horn" style="height: 380px;display: flex;justify-content: space-between">
              123
            </div>
          </div>
        </div>
      </div>
    </div>
  </div>
</template>
<script>
import './kbCommon.css'
import { loadEcharts, all01 } from '@/utils/myEcharts'
import {
  ShopSearch, WorkShopCompreLeftTop
} from '@/api/kanbanManager'
export default {
  name: 'All'
  name: 'Cjsc',
  data() {
    return {
      headTime: '',
      tableDataRightTop: [],
      wkshopArr: [],
      legendData: [],
      LeftTopData01: [],
      LeftTopData02: []
    }
  },
  created() {
    setInterval(this.getNowTime, 1000)
    // // ä¸¤å°æ—¶çœ‹æ¿åˆ·æ–°ä¸€æ¬¡
    setInterval(() => {
      window.location.reload()
    }, 1000 * 60 * 120)
  },
  mounted() {
    this.getAllApi()
  },
  methods: {
    async getAllApi() {
      const { data: res } = await ShopSearch()
      this.wkshopArr = res
      const temp = ['001', 'CJ001', '006', 'ZS001', '002']
      // const temp = this.wkshopArr.map(i => i.org_code)
      temp.forEach(i => {
        const aa = this.wkshopArr.find(j => j.org_code === i).org_name
        this.legendData.push(aa)
      })
      const res2 = await WorkShopCompreLeftTop({ wkshopcode: temp.join(',') })
      for (const res2Key in res2.data.LeftTop) {
        const data = {
          good_qty: 0,
          plan_qty: 0,
          wkshp_code: '',
          wkshp_name: ''
        }
        if (temp.includes(res2Key)) {
          data.good_qty = res2.data.LeftTop[res2Key][0].good_qty
          data.plan_qty = res2.data.LeftTop[res2Key][0].plan_qty
          data.wkshp_code = res2.data.LeftTop[res2Key][0].wkshp_code
          data.wkshp_name = this.wkshopArr.find(i => i.org_code === data.wkshp_code).org_name
          this.LeftTopData01.push(data)
        }
      }
      for (const res2Key in res2.data.LeftBottom) {
        const data = {
          quantity: 0,
          wkshp_code: '',
          wkshp_name: ''
        }
        if (temp.includes(res2Key)) {
          data.quantity = res2.data.LeftBottom[res2Key][0].quantity
          data.wkshp_code = res2.data.LeftBottom[res2Key][0].wkshp_code
          data.wkshp_name = this.wkshopArr.find(i => i.org_code === data.wkshp_code).org_name
          this.LeftTopData02.push(data)
        }
      }
      loadEcharts('all01', all01(this.legendData))
      console.log(this.LeftTopData01, 1)
      console.log(this.LeftTopData02, 2)
    },
    // èŽ·å–Echarts
    getEcharts() {
      // loadEcharts('cjzl01', cjzl01(this.cjzl01Data))
      // loadEcharts('cjzl02_1', cjzl02(this.cjzl02_1Title, this.cjzl02_1Data))
      // loadEcharts('cjzl02_2', cjzl02(this.cjzl02_2Title, this.cjzl02_2Data))
      // loadEcharts('cjzl02_3', cjzl02(this.cjzl02_3Title, this.cjzl02_3Data))
      // loadEcharts('cjzl02_4', cjzl02(this.cjzl02_4Title, this.cjzl02_4Data))
      // loadEcharts('cjzl02_5', cjzl02(this.cjzl02_5Title, this.cjzl02_5Data))
      // loadEcharts('cjzl04', cjzl04(this.legendData, this.cjzl04Data[0], this.cjzl04Data[1], this.cjzl04Data[2]))// å³ä¾§
      // loadEcharts('cjzl03', cjzl03(this.cjzl03_xData, this.legendData, this.cjzl03_yData))// å·¦ä¾§
    },
    getQCBadBottomWeek() {
      const data = {
        wkshopcode: this.wkshopArr.map(i => i.org_code).join(',')
      }
      QCBadBottomWeek(data).then(res => {
        this.tableDataRightTop = res.data
        const divData = this.$refs.tableDataRightTopRef.bodyWrapper
        const temp = setInterval(() => {
          // å…ƒç´ è‡ªå¢žè·ç¦»é¡¶éƒ¨1像素
          divData.scrollTop += 1
          if (divData.clientHeight + divData.scrollTop === divData.scrollHeight) {
            // é‡ç½®table距离顶部距离
            divData.scrollTop = 0
            QCBadBottomWeek(data).then(res => {
              this.tableDataRightTop = res.data
              if (this.tableDataRightTop.length > 7) {
                clearInterval(temp)
                this.getQCBadBottomWeek()
              }
            })
          }
        }, this.tableDataRightTop.length <= 7 ? 1000 * 10 : 300)
      })
    },
    // èŽ·å–å½“å‰æ—¶é—´
    getNowTime() {
      const dt = new Date()
      const wk = dt.getDay()
      const y = dt.getFullYear()
      const m = (dt.getMonth() + 1 + '').padStart(2, '0')
      const d = (dt.getDate() + '').padStart(2, '0')
      const hh = (dt.getHours() + '').padStart(2, '0')
      const mm = (dt.getMinutes() + '').padStart(2, '0')
      const ss = (dt.getSeconds() + '').padStart(2, '0')
      const weeks = ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六']
      const week = weeks[wk]
      this.headTime = `${y}-${m}-${d}  ${hh}:${mm}:${ss}   ${week}`
    },
    headerCellStyle() {
      return {
        backgroundColor: 'transparent ',
        padding: '10px 0',
        textAlign: 'center',
        color: '#07acc2',
        border: 'none',
        fontSize: '20px'
      }
    },
    cellStyle() {
      return {
        padding: '7px 0',
        textAlign: 'center',
        backgroundColor: 'transparent ',
        color: '#c7e7ff',
        border: 'none',
        fontSize: '20px'
      }
    }
  }
}
</script>
<style scoped>
<style lang="scss" scoped>
$main_color: #09d8f2;
$color01: #00FFFF;
.tableData {
  background: transparent;
}
.el-table::before {
  height: 0;
}
.el-table__empty-text {
  color: $main_color;
}
.tableDataCell {
  ::v-deep .cell {
    padding: 0 2px;
  }
}
::v-deep .el-table__body-wrapper::-webkit-scrollbar {
  /* width: 0;宽度为0暗藏 */
  width: 0;
  background: transparent;
}
::v-deep .el-table th,
::v-deep .el-table tr,
::v-deep .el-table td {
  background-color: transparent;
}
.all_block01{
  width:187px;
  height: 180px;
  //height: 50px;
  //height: 100%;
  //background: rgba(9, 216, 242, 0.1);
}
.all_block02{
  width: 100%;
  height: 49px;
  background: rgba(9, 216, 242, 0.1);
}
</style>
src/views/kanbanManager/kbCommon.css
@@ -67,7 +67,7 @@
.flex_c_c {
  display: flex;
  justify-content: center;
  align-content: center;
  align-items: center;
}
.flex_c_s {