Merge branch 'projects/mesxc-test' into projects/mesxc-dy
This commit is contained in:
		
							
								
								
									
										2
									
								
								.env.dev
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								.env.dev
									
									
									
									
									
								
							@@ -18,7 +18,7 @@ VUE_APP_TITLE = MES系统
 | 
			
		||||
# VUE_APP_BASE_API = 'http://192.168.2.173:48080'
 | 
			
		||||
# VUE_APP_BASE_API = 'http://192.168.1.49:48082'
 | 
			
		||||
# VUE_APP_BASE_API = 'http://192.168.1.8:48082'
 | 
			
		||||
# VUE_APP_BASE_API = 'http://192.168.4.173:48082'
 | 
			
		||||
# VUE_APP_BASE_API = 'http://192.168.4.173:9001'
 | 
			
		||||
# VUE_APP_BASE_API = 'http://192.168.1.104:48082'
 | 
			
		||||
VUE_APP_BASE_API = 'http://192.168.0.33:48082'
 | 
			
		||||
# VUE_APP_BASE_API = 'http://192.168.1.62:48082'
 | 
			
		||||
 
 | 
			
		||||
@@ -53,4 +53,28 @@ export function energyQuantityManualExport(data) {
 | 
			
		||||
    data: data,
 | 
			
		||||
    responseType: 'blob'
 | 
			
		||||
  })
 | 
			
		||||
}
 | 
			
		||||
// 获得能源表名配置分页
 | 
			
		||||
export function energyTablePage(data) {
 | 
			
		||||
  return request({
 | 
			
		||||
    url: '/base/energy-table/page',
 | 
			
		||||
    method: 'post',
 | 
			
		||||
    data: data
 | 
			
		||||
  })
 | 
			
		||||
}
 | 
			
		||||
// 获得能源表名配置
 | 
			
		||||
export function energyTableGet(query) {
 | 
			
		||||
  return request({
 | 
			
		||||
    url: '/base/energy-table/get',
 | 
			
		||||
    method: 'get',
 | 
			
		||||
    params: query
 | 
			
		||||
  })
 | 
			
		||||
}
 | 
			
		||||
// 更新能源表名配置
 | 
			
		||||
export function energyTableUpdate(data) {
 | 
			
		||||
  return request({
 | 
			
		||||
    url: '/base/energy-table/update',
 | 
			
		||||
    method: 'put',
 | 
			
		||||
    data: data
 | 
			
		||||
  })
 | 
			
		||||
}
 | 
			
		||||
@@ -32,6 +32,7 @@ const actions = {
 | 
			
		||||
        }
 | 
			
		||||
        // 处理 dictValue 层级
 | 
			
		||||
        dictDataMap[dictData.dictType].push({
 | 
			
		||||
          id: dictData.id,
 | 
			
		||||
          value: dictData.value,
 | 
			
		||||
          label: dictData.label,
 | 
			
		||||
          colorType: dictData.colorType,
 | 
			
		||||
 
 | 
			
		||||
@@ -2,7 +2,7 @@
 | 
			
		||||
 * @Author: zwq
 | 
			
		||||
 * @Date: 2021-07-19 15:18:30
 | 
			
		||||
 * @LastEditors: zhp
 | 
			
		||||
 * @LastEditTime: 2024-03-29 16:49:00
 | 
			
		||||
 * @LastEditTime: 2024-04-03 10:54:53
 | 
			
		||||
 * @Description:
 | 
			
		||||
-->
 | 
			
		||||
<template>
 | 
			
		||||
@@ -34,7 +34,7 @@
 | 
			
		||||
        <el-col :style="{ margin: 8 + 'px' + ' 0' }" :span="12">
 | 
			
		||||
          <base-container :beilv="1" :size="'eqStatus'" :title="'周转进度'" :title-icon="'order'" :back="'energy'">
 | 
			
		||||
            <div class="order" style="width:100%; overflow: hidden scroll;height: 350px;">
 | 
			
		||||
              <el-row v-for="op in orderProcessList" :key="op.id" style="margin-bottom: 1em">
 | 
			
		||||
              <el-row v-for="op in orderProcessList" :key="op.id" style="margin-bottom: .5em">
 | 
			
		||||
                <!-- <p v-if="op.outRate === 1" class="now-secondary-title"
 | 
			
		||||
                  style="font-size: 14px; opacity: calc(.6);color:#4679FD">
 | 
			
		||||
                  <i class="el-icon-check" />
 | 
			
		||||
@@ -42,7 +42,7 @@
 | 
			
		||||
                </p> -->
 | 
			
		||||
                <!-- <p class="now-secondary-title">{{ op.name }}</p> -->
 | 
			
		||||
                <p  class="now-secondary-title" style="font-size: 14px;opacity: calc(.6);">{{ op.name }}</p>
 | 
			
		||||
                <el-progress style="width: 910px;" text-color="rgba(255, 255, 255, .6)" :stroke-width="10"
 | 
			
		||||
                <el-progress style="width: 935px;" text-color="rgba(255, 255, 255, .6)" :stroke-width="10"
 | 
			
		||||
                  define-back-color="rgba(32, 57, 96, 1)" :percentage="op.outRate * 100" class="custom-progress-bar" />
 | 
			
		||||
              </el-row>
 | 
			
		||||
            </div>
 | 
			
		||||
@@ -606,8 +606,10 @@ export default {
 | 
			
		||||
  background-image: linear-gradient(to right, #4573fe, #47f8dc);
 | 
			
		||||
}
 | 
			
		||||
::v-deep .el-progress__text {
 | 
			
		||||
  width: 50px;
 | 
			
		||||
  margin-top: -70px;
 | 
			
		||||
  margin-left: 820px;
 | 
			
		||||
  margin-left: 834px;
 | 
			
		||||
  text-align: right;
 | 
			
		||||
  // background-color: unset;
 | 
			
		||||
  // background-image: linear-gradient(to right, #4573fe, #47f8dc);
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -1,7 +1,7 @@
 | 
			
		||||
<!--
 | 
			
		||||
 * @Author: zhp
 | 
			
		||||
 * @Date: 2024-01-29 16:50:26
 | 
			
		||||
 * @LastEditTime: 2024-04-02 15:01:40
 | 
			
		||||
 * @LastEditTime: 2024-04-07 16:05:59
 | 
			
		||||
 * @LastEditors: zhp
 | 
			
		||||
 * @Description:
 | 
			
		||||
-->
 | 
			
		||||
@@ -41,10 +41,11 @@
 | 
			
		||||
            </div> -->
 | 
			
		||||
            <!-- 像下面这样表格里的limit值,也许可以用js动态计算出来 -->
 | 
			
		||||
            <div v-if="coldDetData" class="myLegend">
 | 
			
		||||
              <div class=" barCircleLegend"></div>
 | 
			
		||||
              <div class=" barCircle"></div>
 | 
			
		||||
              <h4 class="barText">产线良品率</h4>
 | 
			
		||||
              <div class="barLegend"></div>
 | 
			
		||||
              <h4 class="barText">产线产量</h4>
 | 
			
		||||
              <div class="barCircle"></div>
 | 
			
		||||
              <h4 class="barCircleText">产线良品率</h4>
 | 
			
		||||
              <h4 class="barCircleText">产线产量</h4>
 | 
			
		||||
            </div>
 | 
			
		||||
            <double-y-chart ref="productChart" :id="'doubleYChart'" :name-list="cxNameList" :data-list="cxDataList"
 | 
			
		||||
              :height="359" :show-legend="true" />
 | 
			
		||||
@@ -309,6 +310,7 @@ export default {
 | 
			
		||||
      window.location.reload()
 | 
			
		||||
    }, 86400000)
 | 
			
		||||
    // this.getData()
 | 
			
		||||
    // this.getReaiData()
 | 
			
		||||
  },
 | 
			
		||||
  destroyed() {
 | 
			
		||||
    this.CutWebsocketClose()
 | 
			
		||||
@@ -410,13 +412,13 @@ export default {
 | 
			
		||||
        topNameList.push('产线: ' + ele.lineName + '   ' + '总面积:' + ele.sumArea + '㎡')
 | 
			
		||||
        productList.push(ele.productArea)
 | 
			
		||||
        wasteList.push(ele.wastArea)
 | 
			
		||||
        nameWasteList.push('缺陷面积:' + ele.wastArea + '㎡')
 | 
			
		||||
        nameWasteList.push('缺陷面积:' + this.NumFormat(ele.wastArea) + '㎡')
 | 
			
		||||
        // yieldList.push({
 | 
			
		||||
        //   name: '良品',
 | 
			
		||||
        //   yield:ele.yield
 | 
			
		||||
        // })
 | 
			
		||||
        sumAreaList.push(ele.sumArea)
 | 
			
		||||
        yieldList.push((ele.yield * 100).toFixed(3))
 | 
			
		||||
        yieldList.push((ele.yield * 100).toFixed(0))
 | 
			
		||||
      })
 | 
			
		||||
      this.$nextTick(() => {
 | 
			
		||||
        this.$refs.productChart.initChart(nameList, yieldList, sumAreaList)
 | 
			
		||||
@@ -427,39 +429,82 @@ export default {
 | 
			
		||||
        this.$refs.fifthPileChart.initChart(nameList, [topNameList[4]], [nameWasteList[4]], [productList[4]], [wasteList[4]])
 | 
			
		||||
      })
 | 
			
		||||
    },
 | 
			
		||||
    getData() {
 | 
			
		||||
      let detData = [
 | 
			
		||||
        {
 | 
			
		||||
          name: '1',
 | 
			
		||||
          run: '运行',
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          name: '2',
 | 
			
		||||
          run: '未运行',
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          name: '3',
 | 
			
		||||
          run: '运行',
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          name: '4',
 | 
			
		||||
          run: '未运行',
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          name: '1',
 | 
			
		||||
          run: '运行',
 | 
			
		||||
        },
 | 
			
		||||
      ]
 | 
			
		||||
      this.realEqList = detData.map((item, index) => [
 | 
			
		||||
        // console.log(item)
 | 
			
		||||
        `<span style="color:rgba(255,255,255,0.5)" >${index + 1 || ''}
 | 
			
		||||
            </span>`,
 | 
			
		||||
        `<span style="color:rgba(255,255,255,0.5)">${item.name || ''}</span>`,
 | 
			
		||||
        `<span style="color:rgba(255,255,255,0.5)"><div style="${item.run == '运行' ? 'box-shadow: 0px 0px 2px 1px #2760FF;width:6px;height:6px;border-radius: 50%;background-color: #2760FF;float:left;margin:10px 10px 0 0 ' : 'box-shadow: 0px 0px 2px 1px #FFBD02;width:6px;height:6px;border-radius: 50%;  background-color: #FFBD02;float:left;margin:10px 10px 0 0 '}"></div>  ${item.run || ''}</span>`,
 | 
			
		||||
      ])
 | 
			
		||||
        this.realEqConfig.data = this.realEqList
 | 
			
		||||
        this.$refs['realEqScrollBoard'].updateRows(this.realEqList)
 | 
			
		||||
    },
 | 
			
		||||
    // getReaiData() {
 | 
			
		||||
    //   let detData = [
 | 
			
		||||
    //     {
 | 
			
		||||
    //       name: '1',
 | 
			
		||||
    //       run: '运行',
 | 
			
		||||
    //     },
 | 
			
		||||
    //     {
 | 
			
		||||
    //       name: '2',
 | 
			
		||||
    //       run: '未运行',
 | 
			
		||||
    //     },
 | 
			
		||||
    //     {
 | 
			
		||||
    //       name: '3',
 | 
			
		||||
    //       run: '运行',
 | 
			
		||||
    //     },
 | 
			
		||||
    //     {
 | 
			
		||||
    //       name: '4',
 | 
			
		||||
    //       run: '未运行',
 | 
			
		||||
    //     },
 | 
			
		||||
    //     {
 | 
			
		||||
    //       name: '1',
 | 
			
		||||
    //       run: '运行',
 | 
			
		||||
    //     },
 | 
			
		||||
    //   ]
 | 
			
		||||
    //   let arr = []
 | 
			
		||||
    //   let index = 0
 | 
			
		||||
    //   for (let i in detData) {
 | 
			
		||||
    //     index++,
 | 
			
		||||
    //       arr.push([
 | 
			
		||||
    //         `<span style="color:rgba(255,255,255,0.5)" >${index || ''}
 | 
			
		||||
    //         </span>`,
 | 
			
		||||
    //         // `<span style="color:rgba(255,255,255,0.5)" >${i || ''}
 | 
			
		||||
    //         // </span>`,
 | 
			
		||||
    //         `<span style="color:rgba(255,255,255,0.5)">${i || ''}</span>`,
 | 
			
		||||
    //         `<span style="color:rgba(255,255,255,0.5)"><div style="${detData[i] == '运行' ? 'box-shadow: 0px 0px 2px 1px #2760FF;width:6px;height:6px;border-radius: 50%;background-color: #2760FF;float:left;margin:10px 10px 0 0 ' : 'box-shadow: 0px 0px 2px 1px #FFBD02;width:6px;height:6px;border-radius: 50%;  background-color: #FFBD02;float:left;margin:10px 10px 0 0 '}"></div>  ${detData[i] || ''}</span>`,
 | 
			
		||||
    //       ])
 | 
			
		||||
    //   }
 | 
			
		||||
    //   // this.$nextTick(() => {
 | 
			
		||||
    //     this.annealFunConfig.data = arr
 | 
			
		||||
    //     this.$refs['annealFunScrollBoard'].updateRows(arr)
 | 
			
		||||
    //   // })
 | 
			
		||||
    // },
 | 
			
		||||
    // getData() {
 | 
			
		||||
    //   let detData = [
 | 
			
		||||
    //     {
 | 
			
		||||
    //       name: '1',
 | 
			
		||||
    //       run: '运行',
 | 
			
		||||
    //     },
 | 
			
		||||
    //     {
 | 
			
		||||
    //       name: '2',
 | 
			
		||||
    //       run: '未运行',
 | 
			
		||||
    //     },
 | 
			
		||||
    //     {
 | 
			
		||||
    //       name: '3',
 | 
			
		||||
    //       run: '运行',
 | 
			
		||||
    //     },
 | 
			
		||||
    //     {
 | 
			
		||||
    //       name: '4',
 | 
			
		||||
    //       run: '未运行',
 | 
			
		||||
    //     },
 | 
			
		||||
    //     {
 | 
			
		||||
    //       name: '1',
 | 
			
		||||
    //       run: '运行',
 | 
			
		||||
    //     },
 | 
			
		||||
    //   ]
 | 
			
		||||
    //   this.realEqList = detData.map((item, index) => [
 | 
			
		||||
    //     // console.log(item)
 | 
			
		||||
    //     `<span style="color:rgba(255,255,255,0.5)" >${index + 1 || ''}
 | 
			
		||||
    //         </span>`,
 | 
			
		||||
    //     `<span style="color:rgba(255,255,255,0.5)">${item.name || ''}</span>`,
 | 
			
		||||
    //     `<span style="color:rgba(255,255,255,0.5)"><div style="${item.run == '运行' ? 'box-shadow: 0px 0px 2px 1px #2760FF;width:6px;height:6px;border-radius: 50%;background-color: #2760FF;float:left;margin:10px 10px 0 0 ' : 'box-shadow: 0px 0px 2px 1px #FFBD02;width:6px;height:6px;border-radius: 50%;  background-color: #FFBD02;float:left;margin:10px 10px 0 0 '}"></div>  ${item.run || ''}</span>`,
 | 
			
		||||
    //   ])
 | 
			
		||||
    //   // this.$nextTick(() => {
 | 
			
		||||
    //     this.realEqConfig.data = this.realEqList
 | 
			
		||||
    //     this.$refs['realEqScrollBoard'].updateRows(this.realEqList)
 | 
			
		||||
    //   //  })
 | 
			
		||||
    // },
 | 
			
		||||
    CutWebsocketClose(e) {
 | 
			
		||||
      this.Cutws.ws.onclose = (event) => { console.log(event );}
 | 
			
		||||
    },
 | 
			
		||||
@@ -572,16 +617,16 @@ export default {
 | 
			
		||||
        this.cutWsData = event?.data ? JSON.parse(event?.data) : {}
 | 
			
		||||
        if (this.cutWsData.type === 'cutting' && this.cutWsData.name === 'table') {
 | 
			
		||||
          let cutArr = this.cutWsData.productHourData.map((item, index) => [
 | 
			
		||||
            `<span style="color:rgba(255,255,255,0.7)" >${index + 1 || ''}
 | 
			
		||||
            `<span style="color:rgba(255,255,255,0.5)" >${index + 1 || ''}
 | 
			
		||||
            </span>`,
 | 
			
		||||
            `<span style="color:rgba(255,255,255,0.7)" >${item.lineName || ''}
 | 
			
		||||
            `<span style="color:rgba(255,255,255,0.5)" >${item.lineName || ''}
 | 
			
		||||
            </span>`,
 | 
			
		||||
            `<span style="color:rgba(255,255,255,0.7)">${this.formatTime(item.time) || ''}</span>`,
 | 
			
		||||
            `<span style="color:rgba(255,255,255,0.7)">${this.getSize(item.size) || ''}</span>`,
 | 
			
		||||
            `<span style="color:rgba(255,255,255,0.7)">${item.productArea + '㎡' || ''}</span>`,
 | 
			
		||||
            `<span style="color:rgba(255,255,255,0.7)">${item.wasteArea + '㎡' || ''}</span>`,
 | 
			
		||||
            `<div style = "${(item.product * 100).toFixed(2) > 91 ? 'display:block;color:#00FFF7' : 'display:none;'}">${(item.product * 100).toFixed(2) + '%' || ''}</div>
 | 
			
		||||
           <div style = "${(item.product * 100).toFixed(2) < 91 ? 'display:block; color:rgba(255, 209, 96, 1)' : 'display:none;'}">${(item.product * 100).toFixed(2) + '%' || ''}</div>`
 | 
			
		||||
            `<span style="color:rgba(255,255,255,0.5)">${this.formatTime(item.time) || ''}</span>`,
 | 
			
		||||
            `<span style="color:rgba(255,255,255,0.5)">${this.getSize(item.size) || ''}</span>`,
 | 
			
		||||
            `<span style="color:rgba(255,255,255,0.5)">${this.NumFormat(item.productArea) + '㎡' || ''}</span>`,
 | 
			
		||||
            `<span style="color:rgba(255,255,255,0.5)">${this.NumFormat(item.wasteArea) + '㎡' || ''}</span>`,
 | 
			
		||||
            `<div style = "${(item.product * 100).toFixed(0) > 91 ? 'display:block;color:#00FFF7' : 'display:none;'}">${(item.product * 100).toFixed(0) + '%' || ''}</div>
 | 
			
		||||
           <div style = "${(item.product * 100).toFixed(0) < 91 ? 'display:block; color:rgba(255, 209, 96, 1)' : 'display:none;'}">${(item.product * 100).toFixed(0) + '%' || ''}</div>`
 | 
			
		||||
          ])
 | 
			
		||||
          this.cutConfig.data = cutArr
 | 
			
		||||
          // this.$nextTick(() => {
 | 
			
		||||
@@ -604,16 +649,16 @@ export default {
 | 
			
		||||
            topNameList.push('产线: ' + ele.lineName + '   ' + '总面积:' + ele.sumArea + '㎡')
 | 
			
		||||
            productList.push(ele.productArea)
 | 
			
		||||
            wasteList.push(ele.wastArea)
 | 
			
		||||
            nameWasteList.push('缺陷面积:' + ele.wastArea + '㎡')
 | 
			
		||||
            nameWasteList.push('缺陷面积:' + this.NumFormat(ele.wastArea) + '㎡')
 | 
			
		||||
            sumAreaList.push(ele.sumArea)
 | 
			
		||||
            yieldList.push(parseFloat((ele.yield * 100).toFixed(3)))
 | 
			
		||||
            yieldList.push(parseFloat((ele.yield * 100).toFixed(0)))
 | 
			
		||||
          })
 | 
			
		||||
          this.$nextTick(() => {
 | 
			
		||||
            this.$refs.firstPileChart.initChart(nameList, [topNameList[0]], [nameWasteList[0]], [productList[0]], [wasteList[0]])
 | 
			
		||||
            this.$refs.secondPileChart.initChart(nameList, [topNameList[1]], [nameWasteList[1]], [productList[1]], [wasteList[1]])
 | 
			
		||||
            this.$refs.thirdPileChart.initChart(nameList, [topNameList[0]], [nameWasteList[0]], [productList[0]], [wasteList[0]])
 | 
			
		||||
            this.$refs.fourthPileChart.initChart(nameList, [topNameList[0]], [nameWasteList[0]], [productList[0]], [wasteList[0]])
 | 
			
		||||
            this.$refs.fifthPileChart.initChart(nameList, [topNameList[0]], [nameWasteList[0]], [productList[0]], [wasteList[0]])
 | 
			
		||||
            this.$refs.thirdPileChart.initChart(nameList, [topNameList[2]], [nameWasteList[2]], [productList[2]], [wasteList[2]])
 | 
			
		||||
            this.$refs.fourthPileChart.initChart(nameList, [topNameList[3]], [nameWasteList[3]], [productList[3]], [wasteList[3]])
 | 
			
		||||
            this.$refs.fifthPileChart.initChart(nameList, [topNameList[4]], [nameWasteList[4]], [productList[4]], [wasteList[4]])
 | 
			
		||||
            this.$refs.productChart.initChart(nameList, yieldList, sumAreaList)
 | 
			
		||||
          })
 | 
			
		||||
        }
 | 
			
		||||
@@ -700,6 +745,25 @@ export default {
 | 
			
		||||
      //   this.funWebsocket.onclose = this.funWebsocketClose
 | 
			
		||||
      // }
 | 
			
		||||
    },
 | 
			
		||||
    NumFormat(value) {
 | 
			
		||||
      if (!value) return '0.00'
 | 
			
		||||
      value = value.toFixed(2)
 | 
			
		||||
      var intPart = Math.trunc(value) // 获取整数部分
 | 
			
		||||
      // var intPartFormat = intPart.toString().replace(/(\d)(?=(?:\d{3})+$)/g, '$1,') // 将整数部分逢三一断
 | 
			
		||||
      var floatPart = '.00' // 预定义小数部分
 | 
			
		||||
      var value2Array = value.split('.')
 | 
			
		||||
      // =2表示数据有小数位
 | 
			
		||||
      if (value2Array.length === 2) {
 | 
			
		||||
        floatPart = value2Array[1].toString() // 拿到小数部分
 | 
			
		||||
        if (floatPart.length === 1) {
 | 
			
		||||
          return intPart + '.' + floatPart + '0'
 | 
			
		||||
        } else {
 | 
			
		||||
          return intPart + '.' + floatPart
 | 
			
		||||
        }
 | 
			
		||||
      } else {
 | 
			
		||||
        return intPart + floatPart
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    // funWebsocketOnOpen() {
 | 
			
		||||
    //   console.log('socket连接成功')
 | 
			
		||||
    //   this.SJGWebsocket.onmessage()
 | 
			
		||||
@@ -797,7 +861,7 @@ export default {
 | 
			
		||||
.myLegend{
 | 
			
		||||
  position: absolute;
 | 
			
		||||
  top: -20px;
 | 
			
		||||
  right: 50px;
 | 
			
		||||
  right: 20px;
 | 
			
		||||
  font-size: 12px;
 | 
			
		||||
  color: rgba(255,255,255,.6);
 | 
			
		||||
  .barLegend{
 | 
			
		||||
@@ -807,19 +871,29 @@ export default {
 | 
			
		||||
    height: 10px;
 | 
			
		||||
    display: inline-block;
 | 
			
		||||
    margin-right: 5px;
 | 
			
		||||
    border-radius: 30%;
 | 
			
		||||
  }
 | 
			
		||||
  .barText{
 | 
			
		||||
    // float: right;
 | 
			
		||||
    display: inline-block;
 | 
			
		||||
    margin-right: 10px;
 | 
			
		||||
  }
 | 
			
		||||
  .barCircleLegend{
 | 
			
		||||
    width: 15px;
 | 
			
		||||
    height: 1px;
 | 
			
		||||
    background-color: rgba(255, 209, 96, 1);
 | 
			
		||||
    position: absolute;
 | 
			
		||||
    left: -4.1715px;
 | 
			
		||||
    top: 21.7px;
 | 
			
		||||
  }
 | 
			
		||||
  .barCircle{
 | 
			
		||||
    width: 7px;
 | 
			
		||||
    height: 7px;
 | 
			
		||||
    width: 6px;
 | 
			
		||||
    height: 6px;
 | 
			
		||||
    border-radius: 50%;
 | 
			
		||||
    background-color: rgba(255, 209, 96, 1);
 | 
			
		||||
    display: inline-block;
 | 
			
		||||
    margin-right: 5px;
 | 
			
		||||
    margin-right: 10px;
 | 
			
		||||
    margin-bottom: 1.7px;
 | 
			
		||||
  }
 | 
			
		||||
  .barCircleText{
 | 
			
		||||
    display: inline-block;
 | 
			
		||||
 
 | 
			
		||||
@@ -2,7 +2,7 @@
 | 
			
		||||
 * @Author: zwq
 | 
			
		||||
 * @Date: 2022-01-21 14:43:06
 | 
			
		||||
 * @LastEditors: zhp
 | 
			
		||||
 * @LastEditTime: 2024-03-29 14:50:50
 | 
			
		||||
 * @LastEditTime: 2024-04-03 16:33:24
 | 
			
		||||
 * @Description:
 | 
			
		||||
-->
 | 
			
		||||
<template>
 | 
			
		||||
@@ -85,7 +85,6 @@ export default {
 | 
			
		||||
      defaultConfig: {
 | 
			
		||||
        // 默认的legend配置
 | 
			
		||||
        legend: {
 | 
			
		||||
          orient: 'vertical',
 | 
			
		||||
          left: '75%',
 | 
			
		||||
          bottom: 0,
 | 
			
		||||
          itemHeight: 10,
 | 
			
		||||
@@ -197,7 +196,7 @@ export default {
 | 
			
		||||
          // 默认配置
 | 
			
		||||
          ...this.defaultConfig.legend,
 | 
			
		||||
          // 外部传入配置
 | 
			
		||||
          ...this.legendConfig
 | 
			
		||||
          // ...this.legendConfig
 | 
			
		||||
        },
 | 
			
		||||
        color: this.barColor,
 | 
			
		||||
        series: [
 | 
			
		||||
 
 | 
			
		||||
@@ -2,7 +2,7 @@
 | 
			
		||||
<!--
 | 
			
		||||
 * @Author: zhp
 | 
			
		||||
 * @Date: 2023-09-21 09:06:28
 | 
			
		||||
 * @LastEditTime: 2024-04-01 09:12:56
 | 
			
		||||
 * @LastEditTime: 2024-04-03 16:28:40
 | 
			
		||||
 * @LastEditors: zhp
 | 
			
		||||
 * @Description:
 | 
			
		||||
-->
 | 
			
		||||
@@ -100,8 +100,9 @@ export default {
 | 
			
		||||
               show: true,		//开启显示
 | 
			
		||||
               position: 'top',	//在上方显示
 | 
			
		||||
               textStyle: {	    //数值样式
 | 
			
		||||
                 color: '#ced1d5',
 | 
			
		||||
                 fontSize: 12
 | 
			
		||||
                 color: 'rgba(255,255,255,0.5)', // 坐标值得具体的颜色
 | 
			
		||||
                 fontSize: 12,
 | 
			
		||||
                 fontWight: 'bolder'
 | 
			
		||||
               }
 | 
			
		||||
             },
 | 
			
		||||
            }
 | 
			
		||||
@@ -193,18 +194,19 @@ export default {
 | 
			
		||||
          axisLine: {
 | 
			
		||||
            lineStyle: {
 | 
			
		||||
              type: 'solid',
 | 
			
		||||
              color: '#213259', // 左边线的颜色
 | 
			
		||||
              color: '#25528f', // 左边线的颜色
 | 
			
		||||
              width: '1' // 坐标线的宽度
 | 
			
		||||
            }
 | 
			
		||||
          },
 | 
			
		||||
          axisLabel: {
 | 
			
		||||
            textStyle: {
 | 
			
		||||
              align: 'center',
 | 
			
		||||
              color: 'rgba(255,255,255,0.5)' // 坐标值得具体的颜色
 | 
			
		||||
            }
 | 
			
		||||
          },
 | 
			
		||||
          splitLine: {
 | 
			
		||||
            lineStyle: {
 | 
			
		||||
              color: '#213259'
 | 
			
		||||
              color: '#25528f'
 | 
			
		||||
            }
 | 
			
		||||
          },
 | 
			
		||||
          data: nameList
 | 
			
		||||
@@ -226,6 +228,7 @@ export default {
 | 
			
		||||
            nameTextStyle: {// y轴上方单位的颜色
 | 
			
		||||
              color: 'rgba(255,255,255,0.5)', // 坐标值得具体的颜色
 | 
			
		||||
              align: "left",
 | 
			
		||||
              padding: [0, 0, 0, 8]
 | 
			
		||||
            },
 | 
			
		||||
            position: 'right',
 | 
			
		||||
            alignTicks: true,
 | 
			
		||||
@@ -233,19 +236,20 @@ export default {
 | 
			
		||||
              show: true,
 | 
			
		||||
              lineStyle: {
 | 
			
		||||
                type: 'solid',
 | 
			
		||||
                color: '#213259', // 左边线的颜色
 | 
			
		||||
                color: '#25528f', // 左边线的颜色
 | 
			
		||||
                width: '1' // 坐标线的宽度
 | 
			
		||||
              }
 | 
			
		||||
            },
 | 
			
		||||
            axisLabel: {
 | 
			
		||||
              textStyle: {
 | 
			
		||||
                color: '#ced1d5', // 坐标值得具体的颜色
 | 
			
		||||
                formatter: '{value}%'
 | 
			
		||||
                color: 'rgba(255,255,255,0.5)', // 坐标值得具体的颜色
 | 
			
		||||
                formatter: '{value}%',
 | 
			
		||||
                align:'left',
 | 
			
		||||
              }
 | 
			
		||||
            },
 | 
			
		||||
            splitLine: {
 | 
			
		||||
              lineStyle: {
 | 
			
		||||
                color: '#213259'
 | 
			
		||||
                color: '#25528f'
 | 
			
		||||
              }
 | 
			
		||||
            }
 | 
			
		||||
            // type: 'value'
 | 
			
		||||
@@ -270,6 +274,7 @@ export default {
 | 
			
		||||
              color: 'rgba(255,255,255,0.5)', // 坐标值得具体的颜色
 | 
			
		||||
              // fontSize: 10,
 | 
			
		||||
              align: "right",
 | 
			
		||||
              padding:[0,4,0,0]
 | 
			
		||||
            },
 | 
			
		||||
            position: 'left',
 | 
			
		||||
            alignTicks: true,
 | 
			
		||||
@@ -277,19 +282,21 @@ export default {
 | 
			
		||||
              show: true,
 | 
			
		||||
              lineStyle: {
 | 
			
		||||
                type: 'solid',
 | 
			
		||||
                color: '#213259', // 左边线的颜色
 | 
			
		||||
                color: '#25528f', // 左边线的颜色
 | 
			
		||||
                width: '1' // 坐标线的宽度
 | 
			
		||||
              }
 | 
			
		||||
            },
 | 
			
		||||
            axisLabel: {
 | 
			
		||||
              // padding: [0, 20, 0, 0],
 | 
			
		||||
              textStyle: {
 | 
			
		||||
                margin: 60,
 | 
			
		||||
                color: 'rgba(255,255,255,0.5)', // 坐标值得具体的颜色
 | 
			
		||||
                formatter: '{value} 片'
 | 
			
		||||
              }
 | 
			
		||||
            },
 | 
			
		||||
            splitLine: {
 | 
			
		||||
              lineStyle: {
 | 
			
		||||
                color: '#213259'
 | 
			
		||||
                color: '#25528f'
 | 
			
		||||
              }
 | 
			
		||||
            }
 | 
			
		||||
            // type: 'value'
 | 
			
		||||
 
 | 
			
		||||
@@ -1,7 +1,7 @@
 | 
			
		||||
<!--
 | 
			
		||||
 * @Author: zhp
 | 
			
		||||
 * @Date: 2023-09-21 09:06:28
 | 
			
		||||
 * @LastEditTime: 2024-03-29 16:26:28
 | 
			
		||||
 * @LastEditTime: 2024-04-03 17:09:12
 | 
			
		||||
 * @LastEditors: zhp
 | 
			
		||||
 * @Description:
 | 
			
		||||
-->
 | 
			
		||||
@@ -105,7 +105,7 @@ export default {
 | 
			
		||||
               show: true,		//开启显示
 | 
			
		||||
               position: 'top',	//在上方显示
 | 
			
		||||
               textStyle: {	    //数值样式
 | 
			
		||||
                 color: '#ced1d5',
 | 
			
		||||
                 color: 'rgba(255,255,255,0.5)', // 坐标值得具体的颜色
 | 
			
		||||
                 fontSize: 12,
 | 
			
		||||
                 fontWight:'bolder'
 | 
			
		||||
               }
 | 
			
		||||
@@ -167,19 +167,19 @@ export default {
 | 
			
		||||
              type: 'cross'
 | 
			
		||||
            }
 | 
			
		||||
          },
 | 
			
		||||
          grid: { top: 90, right: 70, bottom: 20, left: 20, containLabel: true },
 | 
			
		||||
          legend: {
 | 
			
		||||
            itemWidth: 10,
 | 
			
		||||
            itemHeight: 10,
 | 
			
		||||
            top: '0%',
 | 
			
		||||
            right: '20px',
 | 
			
		||||
            data: ['产线良品率', '产线产量'],
 | 
			
		||||
            textStyle: {
 | 
			
		||||
              fontSize: 12 * this.beilv,
 | 
			
		||||
              color: '#ced1d5',
 | 
			
		||||
              fontWight: 'bolder'
 | 
			
		||||
            }
 | 
			
		||||
          },
 | 
			
		||||
          grid: { top: 70, right: 20, bottom: 10, left: 10, containLabel: true },
 | 
			
		||||
          // legend: {
 | 
			
		||||
          //   itemWidth: 10,
 | 
			
		||||
          //   itemHeight: 10,
 | 
			
		||||
          //   top: '2%',
 | 
			
		||||
          //   right: '30px',
 | 
			
		||||
          //   data: ['产线良品率', '产线产量'],
 | 
			
		||||
          //   textStyle: {
 | 
			
		||||
          //     fontSize: 12 * this.beilv,
 | 
			
		||||
          //     color: '#ced1d5',
 | 
			
		||||
          //     fontWight: 'bolder'
 | 
			
		||||
          //   }
 | 
			
		||||
          // },
 | 
			
		||||
          xAxis: {
 | 
			
		||||
            axisTick: {
 | 
			
		||||
              show: false
 | 
			
		||||
@@ -227,6 +227,7 @@ export default {
 | 
			
		||||
              nameTextStyle: {// y轴上方单位的颜色
 | 
			
		||||
                color: 'rgba(255,255,255,0.5)', // 坐标值得具体的颜色
 | 
			
		||||
                align: "left",
 | 
			
		||||
                padding: [0, 0, 0, 2]
 | 
			
		||||
              },
 | 
			
		||||
              position: 'right',
 | 
			
		||||
              alignTicks: true,
 | 
			
		||||
@@ -271,6 +272,7 @@ export default {
 | 
			
		||||
              nameTextStyle: {
 | 
			
		||||
                color: 'rgba(255,255,255,0.5)', // 坐标值得具体的颜色
 | 
			
		||||
                // fontSize: 10,
 | 
			
		||||
                padding: [0, 4, 0, 0],
 | 
			
		||||
                align: "right",
 | 
			
		||||
              },
 | 
			
		||||
              // position: 'left',
 | 
			
		||||
 
 | 
			
		||||
@@ -113,7 +113,7 @@ export default {
 | 
			
		||||
                textStyle: {	    //数值样式
 | 
			
		||||
                  color: 'rgba(255,255,255,0.5)', // 坐标值得具体的颜色
 | 
			
		||||
                  fontSize: 12,
 | 
			
		||||
                  fontWeight: 'bolder'
 | 
			
		||||
                  fontWeight: 'normal'
 | 
			
		||||
                }
 | 
			
		||||
              },
 | 
			
		||||
            }
 | 
			
		||||
@@ -133,7 +133,7 @@ export default {
 | 
			
		||||
              type: 'shadow' // 默认为直线,可选为:'line' | 'shadow'
 | 
			
		||||
            }
 | 
			
		||||
          },
 | 
			
		||||
          grid: { top: 90, right: 60, bottom: 20, left: 30, containLabel: true },
 | 
			
		||||
          grid: { top: 70, right: 40, bottom: 10, left: 40, containLabel: true },
 | 
			
		||||
          // legend: {
 | 
			
		||||
          //   itemWidth: 10,
 | 
			
		||||
          //   itemHeight: 10,
 | 
			
		||||
@@ -175,7 +175,7 @@ export default {
 | 
			
		||||
            name: '单位kwh',
 | 
			
		||||
            nameTextStyle: {
 | 
			
		||||
              color: 'rgba(255,255,255,0.5)', // 坐标值得具体的颜色
 | 
			
		||||
              fontSize: 10,
 | 
			
		||||
              fontSize: 12,
 | 
			
		||||
              align: 'right',
 | 
			
		||||
            },
 | 
			
		||||
            type: 'value',
 | 
			
		||||
 
 | 
			
		||||
@@ -1,7 +1,7 @@
 | 
			
		||||
<!--
 | 
			
		||||
 * @Author: zhp
 | 
			
		||||
 * @Date: 2023-12-27 13:54:52
 | 
			
		||||
 * @LastEditTime: 2024-04-01 09:14:45
 | 
			
		||||
 * @LastEditTime: 2024-04-03 18:12:18
 | 
			
		||||
 * @LastEditors: zhp
 | 
			
		||||
 * @Description:
 | 
			
		||||
-->
 | 
			
		||||
@@ -114,6 +114,10 @@ export default {
 | 
			
		||||
          totalData.push(sum);
 | 
			
		||||
        }
 | 
			
		||||
      // }
 | 
			
		||||
      // rawData[1].map((d, did) =>
 | 
			
		||||
      //   console.log((d / totalData[did]).toFixed(3))
 | 
			
		||||
      //   // totalData[did] <= 0 ? 0 : d / totalData[did]
 | 
			
		||||
      // )
 | 
			
		||||
      console.log('total', totalData)
 | 
			
		||||
      const series = [
 | 
			
		||||
        '良品',
 | 
			
		||||
@@ -134,7 +138,7 @@ export default {
 | 
			
		||||
          // },
 | 
			
		||||
          color:colors[sid],
 | 
			
		||||
          data: rawData.length != 0 ? rawData[sid].map((d, did) =>
 | 
			
		||||
            totalData[did] <= 0 ? 0 : d / totalData[did]
 | 
			
		||||
            totalData[did] <= 0 ? 0 : (d / totalData[did]).toFixed(4)
 | 
			
		||||
          ) : []
 | 
			
		||||
        };
 | 
			
		||||
      });
 | 
			
		||||
@@ -163,15 +167,15 @@ export default {
 | 
			
		||||
            let singleData = series.filter(function (item) {
 | 
			
		||||
              return item.name == name
 | 
			
		||||
            })
 | 
			
		||||
            return name + parseFloat((singleData[0].data * 100).toFixed(3)) + '%'
 | 
			
		||||
            return name + parseFloat((singleData[0].data * 100).toFixed(0)) + '%'
 | 
			
		||||
          },
 | 
			
		||||
          itemWidth: 12,
 | 
			
		||||
          itemHeight: 12,
 | 
			
		||||
          bottom: '20',
 | 
			
		||||
          left: '20',
 | 
			
		||||
          icon: 'rect',
 | 
			
		||||
          icon: 'roundRect',
 | 
			
		||||
          textStyle: {
 | 
			
		||||
            color: 'rgba(255,255,255,.6)',
 | 
			
		||||
            color: 'rgba(255,255,255,.9)',
 | 
			
		||||
            fontSize:12,
 | 
			
		||||
          }
 | 
			
		||||
        },
 | 
			
		||||
@@ -204,7 +208,7 @@ export default {
 | 
			
		||||
              splitNumber: 50,
 | 
			
		||||
              // boundaryGap: [20, 20],
 | 
			
		||||
              textStyle: {
 | 
			
		||||
                color: 'rgba(255,255,255,.6)',
 | 
			
		||||
                color: 'rgba(255,255,255,.9)',
 | 
			
		||||
                verticalAlign: 'bottom',
 | 
			
		||||
                fontSize: 16,
 | 
			
		||||
                align: 'left',
 | 
			
		||||
@@ -232,7 +236,7 @@ export default {
 | 
			
		||||
              splitNumber: 50,
 | 
			
		||||
              // boundaryGap: [20, 20],
 | 
			
		||||
              textStyle: {
 | 
			
		||||
                color: 'rgba(255,255,255,.6)',
 | 
			
		||||
                color: 'rgba(255,255,255,.9)',
 | 
			
		||||
                verticalAlign: 'bottom',
 | 
			
		||||
                fontSize: 16,
 | 
			
		||||
                align: 'right',
 | 
			
		||||
 
 | 
			
		||||
@@ -2,7 +2,7 @@
 | 
			
		||||
 * @Author: zwq
 | 
			
		||||
 * @Date: 2021-07-19 15:18:30
 | 
			
		||||
 * @LastEditors: zhp
 | 
			
		||||
 * @LastEditTime: 2024-04-02 09:46:46
 | 
			
		||||
 * @LastEditTime: 2024-04-03 17:14:03
 | 
			
		||||
 * @Description:
 | 
			
		||||
-->
 | 
			
		||||
<template>
 | 
			
		||||
@@ -39,11 +39,11 @@
 | 
			
		||||
        <el-col :style="{ margin: 8 + 'px' + ' 0' }" :span="8" height="100%">
 | 
			
		||||
          <base-container :height="318" :size="'small'" :title="'工单监控'" :title-icon="'eqMonitoring'">
 | 
			
		||||
            <div class="order" style="width: 100%; overflow: hidden scroll; height: 350px">
 | 
			
		||||
              <el-row v-for="op in orderList" :key="op.id" style="margin-bottom: 1em">
 | 
			
		||||
              <el-row v-for="op in orderList" :key="op.id" style="margin-bottom: .5em">
 | 
			
		||||
                <!-- <el-col :span="12"> -->
 | 
			
		||||
 | 
			
		||||
                <p class="now-secondary-title" style="font-size: 14px;opacity: calc(.6);">{{ op.name }}</p>
 | 
			
		||||
                <el-progress style="width: 610px;" text-color="rgba(255, 255, 255, .6)" :stroke-width="10"
 | 
			
		||||
                <el-progress style="width: 620px;" text-color="rgba(255, 255, 255, .6)" :stroke-width="10"
 | 
			
		||||
                  define-back-color="rgba(32, 57, 96, 1)" :percentage="op.progressRate" class="custom-progress-bar" />
 | 
			
		||||
              </el-row>
 | 
			
		||||
            </div>
 | 
			
		||||
@@ -67,6 +67,13 @@
 | 
			
		||||
        <el-col :style="{ margin: 8 + 'px' + ' 0' }" :span="12">
 | 
			
		||||
          <base-container :show-time="true" :no-content-padding="true" :height="318 + 338 + 16" :size="'eqStatus'"
 | 
			
		||||
            :title="'产线产量及良品率'" :title-icon="'productLine'">
 | 
			
		||||
            <div  class="myLegend">
 | 
			
		||||
              <div class=" barCircleLegend"></div>
 | 
			
		||||
              <div class=" barCircle"></div>
 | 
			
		||||
              <h4 class="barText">产线良品率</h4>
 | 
			
		||||
              <div class="barLegend"></div>
 | 
			
		||||
              <h4 class="barCircleText">产线产量</h4>
 | 
			
		||||
            </div>
 | 
			
		||||
            <double-y-chart ref="productLineChart" :id="'doubleYChart'" :height="390" :show-legend="true" />
 | 
			
		||||
          </base-container>
 | 
			
		||||
        </el-col>
 | 
			
		||||
@@ -373,7 +380,27 @@ export default {
 | 
			
		||||
				id: '4',
 | 
			
		||||
				name: '测试工单4',
 | 
			
		||||
				progressRate: 0.32323,
 | 
			
		||||
			},
 | 
			
		||||
      },
 | 
			
		||||
      {
 | 
			
		||||
        id: '4',
 | 
			
		||||
        name: '测试工单4',
 | 
			
		||||
        progressRate: 0.32323,
 | 
			
		||||
      },
 | 
			
		||||
      {
 | 
			
		||||
        id: '4',
 | 
			
		||||
        name: '测试工单4',
 | 
			
		||||
        progressRate: 0.32323,
 | 
			
		||||
      },
 | 
			
		||||
      {
 | 
			
		||||
        id: '4',
 | 
			
		||||
        name: '测试工单4',
 | 
			
		||||
        progressRate: 0.32323,
 | 
			
		||||
      },
 | 
			
		||||
      {
 | 
			
		||||
        id: '4',
 | 
			
		||||
        name: '测试工单4',
 | 
			
		||||
        progressRate: 0.32323,
 | 
			
		||||
      },
 | 
			
		||||
			// {
 | 
			
		||||
			//   id: '5',
 | 
			
		||||
			//   name: '测试工单',
 | 
			
		||||
@@ -389,7 +416,7 @@ export default {
 | 
			
		||||
				return {
 | 
			
		||||
					id: ele.id,
 | 
			
		||||
					name: ele.name,
 | 
			
		||||
					progressRate: parseFloat((ele.progressRate * 100).toFixed(3)),
 | 
			
		||||
					progressRate: parseFloat((ele.progressRate * 100).toFixed(0)),
 | 
			
		||||
				};
 | 
			
		||||
			}
 | 
			
		||||
		});
 | 
			
		||||
@@ -417,28 +444,61 @@ export default {
 | 
			
		||||
			`<span style="color:rgba(255,255,255,0.5)">${item.error || ''}</span>`,
 | 
			
		||||
		]);
 | 
			
		||||
    this.eqConfig.data = eqArr;
 | 
			
		||||
    let arr = ['D64', 'D62', 'D61', 'D63', 'D65']
 | 
			
		||||
    // let arr = [5, 6, 2, 4, 7, 9, 15];
 | 
			
		||||
    // 因为7个数,所以长度减去一次为最大循环次数
 | 
			
		||||
    for (let i = 0; i < arr.length - 1; i++) {
 | 
			
		||||
    let data = [
 | 
			
		||||
      {
 | 
			
		||||
        lineName: 'D62',
 | 
			
		||||
        outputNum: '11111',
 | 
			
		||||
        passRate: '0.9873'
 | 
			
		||||
      },
 | 
			
		||||
      {
 | 
			
		||||
        lineName: 'D63',
 | 
			
		||||
        outputNum: '23212',
 | 
			
		||||
        passRate: '0.9873'
 | 
			
		||||
      },
 | 
			
		||||
      {
 | 
			
		||||
        lineName: 'D61',
 | 
			
		||||
        outputNum: '423323',
 | 
			
		||||
        passRate: '0.9873'
 | 
			
		||||
      },
 | 
			
		||||
      {
 | 
			
		||||
        lineName: 'D64',
 | 
			
		||||
        outputNum: '43434',
 | 
			
		||||
        passRate: '0.9873'
 | 
			
		||||
      },
 | 
			
		||||
    ]
 | 
			
		||||
    let nameList = [];
 | 
			
		||||
    let passRateList = [];
 | 
			
		||||
    let outputNumList = [];
 | 
			
		||||
    // let arr = ['D64', 'D62', 'D61', 'D63', 'D65']
 | 
			
		||||
    for (let i = 0; i < data.length - 1; i++) {
 | 
			
		||||
      // 二次循环,注意:再减去外层的循环次数,向后依次两两相互比较转换;
 | 
			
		||||
      for (let j = 0; j < arr.length - i - 1; j++) {
 | 
			
		||||
      for (let j = 0; j < data.length - i - 1; j++) {
 | 
			
		||||
        // 当前一个值大于后一个值
 | 
			
		||||
        if (arr[j].substr(arr[j].length - 1, 1) > arr[j + 1].substr(arr[j + 1].length - 1, 1)) {
 | 
			
		||||
        if (data[j].lineName.substr(data[j].lineName.length - 1, 1) > data[j + 1].lineName.substr(data[j + 1].lineName.length - 1, 1)) {
 | 
			
		||||
          // 定义变量,以赋值的形式前后交换,直到换到最小的在前面,左右再无比较,则循环结束形成排序结果
 | 
			
		||||
          let temp = arr[j];
 | 
			
		||||
          arr[j] = arr[j + 1];
 | 
			
		||||
          arr[j + 1] = temp;
 | 
			
		||||
          let temp = data[j];
 | 
			
		||||
          data[j] = data[j + 1];
 | 
			
		||||
          data[j + 1] = temp;
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
    console.log(arr);
 | 
			
		||||
		this.$refs['eqScrollBoard'].updateRows(eqArr);
 | 
			
		||||
    this.$refs.productLineChart.initChart(
 | 
			
		||||
      arr,
 | 
			
		||||
			[98, 97, 98.7, 98.5, 98.3],
 | 
			
		||||
			[3134, 2323, 3232, 3233, 2321]
 | 
			
		||||
		);
 | 
			
		||||
    data.forEach((ele) => {
 | 
			
		||||
      // if (item.id == ele.productionLineId) {
 | 
			
		||||
      // if (item.name.substr(0, 1) == "D") {
 | 
			
		||||
      // console.log(ele)
 | 
			
		||||
      nameList.push(ele.lineName);
 | 
			
		||||
      outputNumList.push(ele.outputNum);
 | 
			
		||||
      passRateList.push(ele.passRate);
 | 
			
		||||
      // }
 | 
			
		||||
      // }
 | 
			
		||||
    });
 | 
			
		||||
    this.$nextTick(() => {
 | 
			
		||||
      this.$refs.productLineChart.initChart(
 | 
			
		||||
        nameList,
 | 
			
		||||
        passRateList,
 | 
			
		||||
        outputNumList
 | 
			
		||||
      );
 | 
			
		||||
    })
 | 
			
		||||
		// this.getList()
 | 
			
		||||
		this.initWebSocket();
 | 
			
		||||
		this.SJGInitWebSocket();
 | 
			
		||||
@@ -630,7 +690,7 @@ export default {
 | 
			
		||||
							return {
 | 
			
		||||
								id: ele.id,
 | 
			
		||||
								name: ele.name,
 | 
			
		||||
								progressRate: parseFloat((ele.progressRate * 100).toFixed(3)),
 | 
			
		||||
								progressRate: parseFloat((ele.progressRate * 100).toFixed(0)),
 | 
			
		||||
							};
 | 
			
		||||
						}
 | 
			
		||||
					});
 | 
			
		||||
@@ -661,29 +721,29 @@ export default {
 | 
			
		||||
					let nameList = [];
 | 
			
		||||
					let passRateList = [];
 | 
			
		||||
					let outputNumList = [];
 | 
			
		||||
					this.SJGWsData.detData.forEach((ele) => {
 | 
			
		||||
						// if (item.id == ele.productionLineId) {
 | 
			
		||||
						// if (item.name.substr(0, 1) == "D") {
 | 
			
		||||
						// console.log(ele)
 | 
			
		||||
						nameList.push(ele.lineName);
 | 
			
		||||
						outputNumList.push(ele.outputNum);
 | 
			
		||||
						passRateList.push(ele.passRate);
 | 
			
		||||
						// }
 | 
			
		||||
						// }
 | 
			
		||||
          });
 | 
			
		||||
          // let arr = ['D64', 'D62', 'D61', 'D63', 'D65']
 | 
			
		||||
          for (let i = 0; i < nameList.length - 1; i++) {
 | 
			
		||||
          for (let i = 0; i < this.SJGWsData.detData.length - 1; i++) {
 | 
			
		||||
            // 二次循环,注意:再减去外层的循环次数,向后依次两两相互比较转换;
 | 
			
		||||
            for (let j = 0; j < nameList.length - i - 1; j++) {
 | 
			
		||||
            for (let j = 0; j < this.SJGWsData.detData.length - i - 1; j++) {
 | 
			
		||||
              // 当前一个值大于后一个值
 | 
			
		||||
              if (nameList[j].substr(nameList[j].length - 1, 1) > nameList[j + 1].substr(nameList[j + 1].length - 1, 1)) {
 | 
			
		||||
              if (this.SJGWsData.detData[j].lineName.substr(this.SJGWsData.detData[j].lineName.length - 1, 1) > this.SJGWsData.detData[j + 1].lineName.substr(this.SJGWsData.detData[j + 1].lineName.length - 1, 1)) {
 | 
			
		||||
                // 定义变量,以赋值的形式前后交换,直到换到最小的在前面,左右再无比较,则循环结束形成排序结果
 | 
			
		||||
                let temp = nameList[j];
 | 
			
		||||
                nameList[j] = nameList[j + 1];
 | 
			
		||||
                nameList[j + 1] = temp;
 | 
			
		||||
                let temp = this.SJGWsData.detData[j];
 | 
			
		||||
                this.SJGWsData.detData[j] = this.SJGWsData.detData[j + 1];
 | 
			
		||||
                this.SJGWsData.detData[j + 1] = temp;
 | 
			
		||||
              }
 | 
			
		||||
            }
 | 
			
		||||
          }
 | 
			
		||||
          this.SJGWsData.detData.forEach((ele) => {
 | 
			
		||||
            // if (item.id == ele.productionLineId) {
 | 
			
		||||
            // if (item.name.substr(0, 1) == "D") {
 | 
			
		||||
            // console.log(ele)
 | 
			
		||||
            nameList.push(ele.lineName);
 | 
			
		||||
            outputNumList.push(ele.outputNum);
 | 
			
		||||
            passRateList.push(ele.passRate);
 | 
			
		||||
            // }
 | 
			
		||||
            // }
 | 
			
		||||
          });
 | 
			
		||||
          this.$nextTick(() => {
 | 
			
		||||
            this.$refs.productLineChart.initChart(
 | 
			
		||||
              nameList,
 | 
			
		||||
@@ -742,6 +802,51 @@ export default {
 | 
			
		||||
</script>
 | 
			
		||||
 | 
			
		||||
<style lang="scss" scoped>
 | 
			
		||||
.myLegend {
 | 
			
		||||
  position: absolute;
 | 
			
		||||
  top: -28px;
 | 
			
		||||
  right: 20px;
 | 
			
		||||
  font-size: 12px;
 | 
			
		||||
  color: rgba(255, 255, 255, .6);
 | 
			
		||||
 | 
			
		||||
  .barLegend {
 | 
			
		||||
    // float: left;
 | 
			
		||||
    background: linear-gradient(#9DD5FF, #1295FF);
 | 
			
		||||
    width: 10px;
 | 
			
		||||
    height: 10px;
 | 
			
		||||
    display: inline-block;
 | 
			
		||||
    margin-right: 5px;
 | 
			
		||||
    border-radius: 30%;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  .barText {
 | 
			
		||||
    // float: right;
 | 
			
		||||
    display: inline-block;
 | 
			
		||||
    margin-right: 10px;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  .barCircleLegend {
 | 
			
		||||
    width: 15px;
 | 
			
		||||
    height: 1px;
 | 
			
		||||
    background-color: rgba(255, 209, 96, 1);
 | 
			
		||||
    position: absolute;
 | 
			
		||||
    left: -4.1715px;
 | 
			
		||||
    top: 21.7px;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  .barCircle {
 | 
			
		||||
    width: 6px;
 | 
			
		||||
    height: 6px;
 | 
			
		||||
    border-radius: 50%;
 | 
			
		||||
    background-color: rgba(255, 209, 96, 1);
 | 
			
		||||
    display: inline-block;
 | 
			
		||||
    margin-right: 10px;
 | 
			
		||||
    margin-bottom: 1.7px;
 | 
			
		||||
  }
 | 
			
		||||
  .barCircleText {
 | 
			
		||||
    display: inline-block;
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
.visual-container {
 | 
			
		||||
	width: 1920px;
 | 
			
		||||
	height: 1080px;
 | 
			
		||||
@@ -815,8 +920,9 @@ export default {
 | 
			
		||||
	background-image: linear-gradient(to right, #4573fe, #47f8dc);
 | 
			
		||||
}
 | 
			
		||||
::v-deep .el-progress__text {
 | 
			
		||||
  width: 50px;
 | 
			
		||||
  margin-top: -70px;
 | 
			
		||||
  margin-left: 490px;
 | 
			
		||||
  margin-left: 538px;
 | 
			
		||||
  // background-color: unset;
 | 
			
		||||
  // background-image: linear-gradient(to right, #4573fe, #47f8dc);
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -2,38 +2,21 @@
 | 
			
		||||
 * @Author: zwq
 | 
			
		||||
 * @Date: 2023-08-01 14:55:51
 | 
			
		||||
 * @LastEditors: zhp
 | 
			
		||||
 * @LastEditTime: 2024-02-28 10:38:34
 | 
			
		||||
 * @LastEditTime: 2024-04-08 11:49:33
 | 
			
		||||
 * @Description:
 | 
			
		||||
-->
 | 
			
		||||
<template>
 | 
			
		||||
	<div class="app-container">
 | 
			
		||||
		<search-bar
 | 
			
		||||
			:formConfigs="formConfig"
 | 
			
		||||
			ref="searchBarForm"
 | 
			
		||||
			@headBtnClick="buttonClick" />
 | 
			
		||||
		<base-table
 | 
			
		||||
			:table-props="tableProps"
 | 
			
		||||
			:page="listQuery.pageNo"
 | 
			
		||||
			:limit="listQuery.pageSize"
 | 
			
		||||
			:table-data="tableData">
 | 
			
		||||
			<method-btn
 | 
			
		||||
				v-if="tableBtn.length"
 | 
			
		||||
				slot="handleBtn"
 | 
			
		||||
				:width="120"
 | 
			
		||||
				label="操作"
 | 
			
		||||
				:method-list="tableBtn"
 | 
			
		||||
				@clickBtn="handleClick" />
 | 
			
		||||
		</base-table>
 | 
			
		||||
		<pagination
 | 
			
		||||
			:limit.sync="listQuery.pageSize"
 | 
			
		||||
			:page.sync="listQuery.pageNo"
 | 
			
		||||
			:total="listQuery.total"
 | 
			
		||||
			@pagination="getDataList" />
 | 
			
		||||
		<add-or-update
 | 
			
		||||
			v-if="addOrUpdateVisible"
 | 
			
		||||
			ref="addOrUpdate"
 | 
			
		||||
			@refreshDataList="getDataList" />
 | 
			
		||||
	</div>
 | 
			
		||||
  <div class="app-container">
 | 
			
		||||
    <search-bar :formConfigs="formConfig" ref="searchBarForm" @headBtnClick="buttonClick" />
 | 
			
		||||
    <base-table :max-height="tableH" :table-props="tableProps" :page="listQuery.pageNo" :limit="listQuery.pageSize"
 | 
			
		||||
      :table-data="tableData">
 | 
			
		||||
      <method-btn v-if="tableBtn.length" slot="handleBtn" :width="120" label="操作" :method-list="tableBtn"
 | 
			
		||||
        @clickBtn="handleClick" />
 | 
			
		||||
    </base-table>
 | 
			
		||||
    <pagination :limit.sync="listQuery.pageSize" :page.sync="listQuery.pageNo" :total="listQuery.total"
 | 
			
		||||
      @pagination="getDataList" />
 | 
			
		||||
    <add-or-update v-if="addOrUpdateVisible" ref="addOrUpdate" @refreshDataList="getDataList" />
 | 
			
		||||
  </div>
 | 
			
		||||
</template>
 | 
			
		||||
 | 
			
		||||
<script>
 | 
			
		||||
@@ -41,6 +24,7 @@ import AddOrUpdate from './add-or-updata';
 | 
			
		||||
// import unitDict from './unitDict';
 | 
			
		||||
import basicPage from '../mixins/basic-page';
 | 
			
		||||
import { parseTime } from '../mixins/code-filter';
 | 
			
		||||
import tableHeightMixin from '@/mixins/lb/tableHeightMixin';
 | 
			
		||||
import {
 | 
			
		||||
  getPackingModel,
 | 
			
		||||
} from '@/api/base/printModel.js'
 | 
			
		||||
@@ -91,7 +75,7 @@ const tableProps = [
 | 
			
		||||
];
 | 
			
		||||
 | 
			
		||||
export default {
 | 
			
		||||
	mixins: [basicPage],
 | 
			
		||||
  mixins: [basicPage, tableHeightMixin],
 | 
			
		||||
	data() {
 | 
			
		||||
		return {
 | 
			
		||||
			urlOptions: {
 | 
			
		||||
@@ -144,7 +128,7 @@ export default {
 | 
			
		||||
          param: 'createTime',
 | 
			
		||||
        },
 | 
			
		||||
				{
 | 
			
		||||
					type: 'button',
 | 
			
		||||
          type: this.$auth.hasPermi('base:packaging-print-log:query') ? 'button' : '',
 | 
			
		||||
					btnName: '搜索',
 | 
			
		||||
					name: 'search',
 | 
			
		||||
					color: 'primary',
 | 
			
		||||
@@ -314,7 +298,7 @@ export default {
 | 
			
		||||
			switch (val.btnName) {
 | 
			
		||||
				case 'search':
 | 
			
		||||
					this.listQuery.pageNo = 1;
 | 
			
		||||
					this.listQuery.pageSize = 10;
 | 
			
		||||
					this.listQuery.pageSize = 20;
 | 
			
		||||
          this.listQuery.workOrderId = val.workOrderId;
 | 
			
		||||
          if (val.createTime && val.createTime.length != 0) {
 | 
			
		||||
            this.listQuery.createTime = val.createTime
 | 
			
		||||
@@ -329,7 +313,7 @@ export default {
 | 
			
		||||
				case 'reset':
 | 
			
		||||
					this.$refs.searchBarForm.resetForm();
 | 
			
		||||
					this.listQuery = {
 | 
			
		||||
						pageSize: 10,
 | 
			
		||||
						pageSize: 20,
 | 
			
		||||
						pageNo: 1,
 | 
			
		||||
						total: 1,
 | 
			
		||||
					};
 | 
			
		||||
 
 | 
			
		||||
@@ -2,13 +2,14 @@
 | 
			
		||||
 * @Author: zwq
 | 
			
		||||
 * @Date: 2023-08-01 14:55:51
 | 
			
		||||
 * @LastEditors: zhp
 | 
			
		||||
 * @LastEditTime: 2023-12-04 13:38:45
 | 
			
		||||
 * @LastEditTime: 2024-04-03 15:08:38
 | 
			
		||||
 * @Description:
 | 
			
		||||
-->
 | 
			
		||||
<template>
 | 
			
		||||
  <div class="app-container">
 | 
			
		||||
    <search-bar :formConfigs="formConfig" ref="searchBarForm" @headBtnClick="buttonClick" />
 | 
			
		||||
    <base-table :table-props="tableProps" :page="listQuery.pageNo" :limit="listQuery.pageSize" :table-data="tableData">
 | 
			
		||||
    <base-table :max-height="tableH" :table-props="tableProps" :page="listQuery.pageNo" :limit="listQuery.pageSize"
 | 
			
		||||
      :table-data="tableData">
 | 
			
		||||
      <method-btn v-if="tableBtn.length" slot="handleBtn" :width="120" label="操作" :method-list="tableBtn"
 | 
			
		||||
        @clickBtn="handleClick" />
 | 
			
		||||
    </base-table>
 | 
			
		||||
@@ -25,7 +26,9 @@ import AddOrUpdate from './add-or-updata';
 | 
			
		||||
import basicPage from '../mixins/basic-page';
 | 
			
		||||
import { parseTime } from '../mixins/code-filter';
 | 
			
		||||
import printModelDesign from '../custom/index'
 | 
			
		||||
import { updatePackingModel,} from '@/api/base/printModel.js';
 | 
			
		||||
import { updatePackingModel, } from '@/api/base/printModel.js';
 | 
			
		||||
import tableHeightMixin from '@/mixins/lb/tableHeightMixin';
 | 
			
		||||
 | 
			
		||||
import {
 | 
			
		||||
  deletePackingModel,
 | 
			
		||||
  getPackingModelPage,
 | 
			
		||||
@@ -59,7 +62,7 @@ const tableProps = [
 | 
			
		||||
];
 | 
			
		||||
 | 
			
		||||
export default {
 | 
			
		||||
	mixins: [basicPage],
 | 
			
		||||
  mixins: [basicPage, tableHeightMixin],
 | 
			
		||||
	data() {
 | 
			
		||||
		return {
 | 
			
		||||
			urlOptions: {
 | 
			
		||||
@@ -162,7 +165,7 @@ export default {
 | 
			
		||||
			switch (val.btnName) {
 | 
			
		||||
				case 'search':
 | 
			
		||||
					this.listQuery.pageNo = 1;
 | 
			
		||||
					this.listQuery.pageSize = 10;
 | 
			
		||||
					this.listQuery.pageSize = 20;
 | 
			
		||||
          this.listQuery.packagingCode = val.packagingCode;
 | 
			
		||||
          this.listQuery.createTime = val.createTime;
 | 
			
		||||
					this.getDataList();
 | 
			
		||||
@@ -170,7 +173,7 @@ export default {
 | 
			
		||||
				case 'reset':
 | 
			
		||||
					this.$refs.searchBarForm.resetForm();
 | 
			
		||||
					this.listQuery = {
 | 
			
		||||
						pageSize: 10,
 | 
			
		||||
						pageSize: 20,
 | 
			
		||||
						pageNo: 1,
 | 
			
		||||
						total: 1,
 | 
			
		||||
					};
 | 
			
		||||
 
 | 
			
		||||
@@ -2,38 +2,21 @@
 | 
			
		||||
 * @Author: zwq
 | 
			
		||||
 * @Date: 2023-08-01 14:55:51
 | 
			
		||||
 * @LastEditors: zhp
 | 
			
		||||
 * @LastEditTime: 2023-12-04 13:44:01
 | 
			
		||||
 * @LastEditTime: 2024-04-03 15:09:06
 | 
			
		||||
 * @Description:
 | 
			
		||||
-->
 | 
			
		||||
<template>
 | 
			
		||||
	<div class="app-container">
 | 
			
		||||
		<search-bar
 | 
			
		||||
			:formConfigs="formConfig"
 | 
			
		||||
			ref="searchBarForm"
 | 
			
		||||
			@headBtnClick="buttonClick" />
 | 
			
		||||
		<base-table
 | 
			
		||||
			:table-props="tableProps"
 | 
			
		||||
			:page="listQuery.pageNo"
 | 
			
		||||
			:limit="listQuery.pageSize"
 | 
			
		||||
			:table-data="tableData">
 | 
			
		||||
			<method-btn
 | 
			
		||||
				v-if="tableBtn.length"
 | 
			
		||||
				slot="handleBtn"
 | 
			
		||||
				:width="120"
 | 
			
		||||
				label="操作"
 | 
			
		||||
				:method-list="tableBtn"
 | 
			
		||||
				@clickBtn="handleClick" />
 | 
			
		||||
		</base-table>
 | 
			
		||||
		<pagination
 | 
			
		||||
			:limit.sync="listQuery.pageSize"
 | 
			
		||||
			:page.sync="listQuery.pageNo"
 | 
			
		||||
			:total="listQuery.total"
 | 
			
		||||
			@pagination="getDataList" />
 | 
			
		||||
		<add-or-update
 | 
			
		||||
			v-if="addOrUpdateVisible"
 | 
			
		||||
			ref="addOrUpdate"
 | 
			
		||||
			@refreshDataList="getDataList" />
 | 
			
		||||
	</div>
 | 
			
		||||
  <div class="app-container">
 | 
			
		||||
    <search-bar :formConfigs="formConfig" ref="searchBarForm" @headBtnClick="buttonClick" />
 | 
			
		||||
    <base-table :max-height="tableH" :table-props="tableProps" :page="listQuery.pageNo" :limit="listQuery.pageSize"
 | 
			
		||||
      :table-data="tableData">
 | 
			
		||||
      <method-btn v-if="tableBtn.length" slot="handleBtn" :width="120" label="操作" :method-list="tableBtn"
 | 
			
		||||
        @clickBtn="handleClick" />
 | 
			
		||||
    </base-table>
 | 
			
		||||
    <pagination :limit.sync="listQuery.pageSize" :page.sync="listQuery.pageNo" :total="listQuery.total"
 | 
			
		||||
      @pagination="getDataList" />
 | 
			
		||||
    <add-or-update v-if="addOrUpdateVisible" ref="addOrUpdate" @refreshDataList="getDataList" />
 | 
			
		||||
  </div>
 | 
			
		||||
</template>
 | 
			
		||||
 | 
			
		||||
<script>
 | 
			
		||||
@@ -41,6 +24,7 @@ import AddOrUpdate from './add-or-updata';
 | 
			
		||||
// import unitDict from './unitDict';
 | 
			
		||||
import basicPage from '../mixins/basic-page';
 | 
			
		||||
import { parseTime } from '../mixins/code-filter';
 | 
			
		||||
import tableHeightMixin from '@/mixins/lb/tableHeightMixin';
 | 
			
		||||
import {
 | 
			
		||||
	deletePackingType,
 | 
			
		||||
  getPackingTypePage,
 | 
			
		||||
@@ -64,7 +48,7 @@ const tableProps = [
 | 
			
		||||
];
 | 
			
		||||
 | 
			
		||||
export default {
 | 
			
		||||
	mixins: [basicPage],
 | 
			
		||||
  mixins: [basicPage, tableHeightMixin],
 | 
			
		||||
	data() {
 | 
			
		||||
		return {
 | 
			
		||||
			urlOptions: {
 | 
			
		||||
@@ -154,7 +138,7 @@ export default {
 | 
			
		||||
			switch (val.btnName) {
 | 
			
		||||
				case 'search':
 | 
			
		||||
					this.listQuery.pageNo = 1;
 | 
			
		||||
					this.listQuery.pageSize = 10;
 | 
			
		||||
					this.listQuery.pageSize = 20;
 | 
			
		||||
          this.listQuery.packagingCode = val.packagingCode;
 | 
			
		||||
          this.listQuery.createTime = val.createTime;
 | 
			
		||||
					this.getDataList();
 | 
			
		||||
@@ -162,7 +146,7 @@ export default {
 | 
			
		||||
				case 'reset':
 | 
			
		||||
					this.$refs.searchBarForm.resetForm();
 | 
			
		||||
					this.listQuery = {
 | 
			
		||||
						pageSize: 10,
 | 
			
		||||
						pageSize: 20,
 | 
			
		||||
						pageNo: 1,
 | 
			
		||||
						total: 1,
 | 
			
		||||
					};
 | 
			
		||||
 
 | 
			
		||||
@@ -92,7 +92,9 @@ export default {
 | 
			
		||||
					param: 'searchTime',
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					type: 'button',
 | 
			
		||||
					type: this.$auth.hasPermi('cost:energyCost:query')
 | 
			
		||||
						? 'button'
 | 
			
		||||
						: '',
 | 
			
		||||
					btnName: '查询',
 | 
			
		||||
					name: 'search',
 | 
			
		||||
					color: 'primary',
 | 
			
		||||
 
 | 
			
		||||
@@ -116,7 +116,9 @@ export default {
 | 
			
		||||
					defaultSelect: [],
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					type: 'button',
 | 
			
		||||
					type: this.$auth.hasPermi('cost:energyCostHis:query')
 | 
			
		||||
						? 'button'
 | 
			
		||||
						: '',
 | 
			
		||||
					btnName: '查询',
 | 
			
		||||
					name: 'search',
 | 
			
		||||
					color: 'primary',
 | 
			
		||||
 
 | 
			
		||||
@@ -124,7 +124,9 @@ export default {
 | 
			
		||||
					filterable: true,
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					type: 'button',
 | 
			
		||||
					type: this.$auth.hasPermi('cost:rawMaterialConfig:query')
 | 
			
		||||
						? 'button'
 | 
			
		||||
						: '',
 | 
			
		||||
					btnName: '查询',
 | 
			
		||||
					name: 'search',
 | 
			
		||||
					color: 'primary',
 | 
			
		||||
 
 | 
			
		||||
@@ -97,7 +97,9 @@ export default {
 | 
			
		||||
					param: 'searchTime',
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					type: 'button',
 | 
			
		||||
					type: this.$auth.hasPermi('cost:rawMaterialCost:query')
 | 
			
		||||
						? 'button'
 | 
			
		||||
						: '',
 | 
			
		||||
					btnName: '查询',
 | 
			
		||||
					name: 'search',
 | 
			
		||||
					color: 'primary',
 | 
			
		||||
 
 | 
			
		||||
@@ -115,7 +115,9 @@ export default {
 | 
			
		||||
					defaultSelect: [],
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					type: 'button',
 | 
			
		||||
					type: this.$auth.hasPermi('cost:rawMaterialCostHis:query')
 | 
			
		||||
						? 'button'
 | 
			
		||||
						: '',
 | 
			
		||||
					btnName: '查询',
 | 
			
		||||
					name: 'search',
 | 
			
		||||
					color: 'primary',
 | 
			
		||||
 
 | 
			
		||||
@@ -1,234 +1,258 @@
 | 
			
		||||
<template>
 | 
			
		||||
  <div style="height: 370px;">
 | 
			
		||||
    <NotMsg v-show="notMsg"/>
 | 
			
		||||
    <div id="numRateChart" class="num-rate-chart" style="width:900px;height:420px;" v-show='!notMsg'></div>
 | 
			
		||||
  </div>
 | 
			
		||||
	<div style="height: 370px">
 | 
			
		||||
		<NotMsg v-show="notMsg" />
 | 
			
		||||
		<div
 | 
			
		||||
			id="numRateChart"
 | 
			
		||||
			class="num-rate-chart"
 | 
			
		||||
			style="width: 900px; height: 420px"
 | 
			
		||||
			v-show="!notMsg"></div>
 | 
			
		||||
	</div>
 | 
			
		||||
</template>
 | 
			
		||||
<script>
 | 
			
		||||
import * as echarts from 'echarts';
 | 
			
		||||
import resize from './../mixins/resize'
 | 
			
		||||
import NotMsg from './../components/NotMsg'
 | 
			
		||||
import resize from './../mixins/resize';
 | 
			
		||||
import NotMsg from './../components/NotMsg';
 | 
			
		||||
export default {
 | 
			
		||||
  name: 'NumRateChart',
 | 
			
		||||
  mixins: [resize],
 | 
			
		||||
  components:{ NotMsg },
 | 
			
		||||
  data() {
 | 
			
		||||
    return {
 | 
			
		||||
      chart: null,
 | 
			
		||||
      notMsg:true
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
  computed: {
 | 
			
		||||
    productline() {
 | 
			
		||||
      return this.$store.state.websocket.productline
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
  watch:{
 | 
			
		||||
    productline: {
 | 
			
		||||
	name: 'NumRateChart',
 | 
			
		||||
	mixins: [resize],
 | 
			
		||||
	components: { NotMsg },
 | 
			
		||||
	data() {
 | 
			
		||||
		return {
 | 
			
		||||
			chart: null,
 | 
			
		||||
			notMsg: true,
 | 
			
		||||
		};
 | 
			
		||||
	},
 | 
			
		||||
	computed: {
 | 
			
		||||
		productline() {
 | 
			
		||||
			return this.$store.state.websocket.productline;
 | 
			
		||||
		},
 | 
			
		||||
	},
 | 
			
		||||
	watch: {
 | 
			
		||||
		productline: {
 | 
			
		||||
			handler(newVal, oldVal) {
 | 
			
		||||
        if (newVal === oldVal) {
 | 
			
		||||
          return false
 | 
			
		||||
        }
 | 
			
		||||
        this.updateChart()
 | 
			
		||||
        this.$emit('emitFun')
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
  },
 | 
			
		||||
  mounted() {
 | 
			
		||||
				if (newVal === oldVal) {
 | 
			
		||||
					return false;
 | 
			
		||||
				}
 | 
			
		||||
				this.updateChart();
 | 
			
		||||
				this.$emit('emitFun');
 | 
			
		||||
			},
 | 
			
		||||
		},
 | 
			
		||||
	},
 | 
			
		||||
	mounted() {
 | 
			
		||||
		this.$el.addEventListener('resize', () => {
 | 
			
		||||
			console.log('resziing.....');
 | 
			
		||||
		});
 | 
			
		||||
    this.updateChart()
 | 
			
		||||
		this.updateChart();
 | 
			
		||||
	},
 | 
			
		||||
  methods: {
 | 
			
		||||
    updateChart() {
 | 
			
		||||
      if (this.productline && this.productline.length > 0) {
 | 
			
		||||
        this.notMsg = false
 | 
			
		||||
      } else {
 | 
			
		||||
        this.notMsg = true
 | 
			
		||||
        return
 | 
			
		||||
      }
 | 
			
		||||
      let xData = []
 | 
			
		||||
      let outputNum = []
 | 
			
		||||
      let passRate = []
 | 
			
		||||
      this.productline && this.productline.length > 0 && this.productline.map(item => {
 | 
			
		||||
        if ((item.lineName).includes('D')) {
 | 
			
		||||
          xData.push(item.lineName)
 | 
			
		||||
          outputNum.push(item.outputNum)
 | 
			
		||||
          passRate.push(item.passRate?item.passRate*100:null)
 | 
			
		||||
        }
 | 
			
		||||
      })
 | 
			
		||||
      if (
 | 
			
		||||
        this.chart !== null &&
 | 
			
		||||
        this.chart !== '' &&
 | 
			
		||||
        this.chart !== undefined
 | 
			
		||||
      ) {
 | 
			
		||||
        this.chart.dispose()
 | 
			
		||||
      }
 | 
			
		||||
      this.chart = echarts.init(document.getElementById('numRateChart'));
 | 
			
		||||
      var option = {
 | 
			
		||||
        grid: { top: 82, right: 60, bottom: 20, left: 90 },
 | 
			
		||||
        tooltip: {
 | 
			
		||||
          trigger: "axis",
 | 
			
		||||
          axisPointer: {
 | 
			
		||||
            type: "shadow",
 | 
			
		||||
          },
 | 
			
		||||
          className: "num-rate-chart-tooltip"
 | 
			
		||||
        },
 | 
			
		||||
        legend: {
 | 
			
		||||
          itemWidth:10,
 | 
			
		||||
          itemHeight:10,
 | 
			
		||||
          top: '2.5%',
 | 
			
		||||
	methods: {
 | 
			
		||||
		updateChart() {
 | 
			
		||||
			if (this.productline && this.productline.length > 0) {
 | 
			
		||||
				this.notMsg = false;
 | 
			
		||||
			} else {
 | 
			
		||||
				this.notMsg = true;
 | 
			
		||||
				return;
 | 
			
		||||
			}
 | 
			
		||||
			let xData = [];
 | 
			
		||||
			let outputNum = [];
 | 
			
		||||
			let passRate = [];
 | 
			
		||||
			for (let i = 0; i < this.productline.length - 1; i++) {
 | 
			
		||||
				// 二次循环,注意:再减去外层的循环次数,向后依次两两相互比较转换;
 | 
			
		||||
				for (let j = 0; j < this.productline.length - i - 1; j++) {
 | 
			
		||||
					// 当前一个值大于后一个值
 | 
			
		||||
					if (
 | 
			
		||||
						this.productline[j].lineName.substr(
 | 
			
		||||
							this.productline[j].lineName.length - 1,
 | 
			
		||||
							1
 | 
			
		||||
						) >
 | 
			
		||||
						this.productline[j + 1].lineName.substr(
 | 
			
		||||
							this.productline[j + 1].lineName.length - 1,
 | 
			
		||||
							1
 | 
			
		||||
						)
 | 
			
		||||
					) {
 | 
			
		||||
						// 定义变量,以赋值的形式前后交换,直到换到最小的在前面,左右再无比较,则循环结束形成排序结果
 | 
			
		||||
						let temp = this.productline[j];
 | 
			
		||||
						this.productline[j] = this.productline[j + 1];
 | 
			
		||||
						this.productline[j + 1] = temp;
 | 
			
		||||
					}
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
			this.productline &&
 | 
			
		||||
				this.productline.length > 0 &&
 | 
			
		||||
				this.productline.map((item) => {
 | 
			
		||||
					if (item.lineName.includes('D')) {
 | 
			
		||||
						xData.push(item.lineName);
 | 
			
		||||
						outputNum.push(item.outputNum);
 | 
			
		||||
						passRate.push(item.passRate);
 | 
			
		||||
					}
 | 
			
		||||
				});
 | 
			
		||||
			if (
 | 
			
		||||
				this.chart !== null &&
 | 
			
		||||
				this.chart !== '' &&
 | 
			
		||||
				this.chart !== undefined
 | 
			
		||||
			) {
 | 
			
		||||
				this.chart.dispose();
 | 
			
		||||
			}
 | 
			
		||||
			this.chart = echarts.init(document.getElementById('numRateChart'));
 | 
			
		||||
			var option = {
 | 
			
		||||
				grid: { top: 82, right: 60, bottom: 20, left: 90 },
 | 
			
		||||
				tooltip: {
 | 
			
		||||
					trigger: 'axis',
 | 
			
		||||
					axisPointer: {
 | 
			
		||||
						type: 'shadow',
 | 
			
		||||
					},
 | 
			
		||||
					className: 'num-rate-chart-tooltip',
 | 
			
		||||
				},
 | 
			
		||||
				legend: {
 | 
			
		||||
					itemWidth: 10,
 | 
			
		||||
					itemHeight: 10,
 | 
			
		||||
					top: '2.5%',
 | 
			
		||||
					right: '20px',
 | 
			
		||||
          icon: 'rect',
 | 
			
		||||
          data: [
 | 
			
		||||
            {name:'产线产量',itemStyle:{color:'#364BFE'}},
 | 
			
		||||
            {name:'良品率',itemStyle:{color:'#FFCB59'}}
 | 
			
		||||
          ],
 | 
			
		||||
          textStyle: {
 | 
			
		||||
            color: "#DFF1FE",
 | 
			
		||||
            fontSize: 12,
 | 
			
		||||
          }
 | 
			
		||||
        },
 | 
			
		||||
        xAxis: [
 | 
			
		||||
          {
 | 
			
		||||
            type: 'category',
 | 
			
		||||
            data: xData,
 | 
			
		||||
            axisLabel: {
 | 
			
		||||
              color: "#fff",
 | 
			
		||||
              fontSize: 12,
 | 
			
		||||
            },
 | 
			
		||||
            axisPointer: {
 | 
			
		||||
              type: 'shadow'
 | 
			
		||||
            },
 | 
			
		||||
            axisTick: { show: false },
 | 
			
		||||
            axisLine: {
 | 
			
		||||
              lineStyle: {
 | 
			
		||||
                width: 1,
 | 
			
		||||
                color: "#213259",
 | 
			
		||||
              },
 | 
			
		||||
            },
 | 
			
		||||
          }
 | 
			
		||||
        ],
 | 
			
		||||
        yAxis: [
 | 
			
		||||
          {
 | 
			
		||||
            type: 'value',
 | 
			
		||||
            name: '产量/片',
 | 
			
		||||
            nameTextStyle: {
 | 
			
		||||
              color: '#fff',
 | 
			
		||||
              fontSize: 10,
 | 
			
		||||
              align: 'right',
 | 
			
		||||
            },
 | 
			
		||||
            axisLabel: {
 | 
			
		||||
              color: "#fff",
 | 
			
		||||
              fontSize: 12,
 | 
			
		||||
              formatter: '{value}'
 | 
			
		||||
            },
 | 
			
		||||
            axisLine: {
 | 
			
		||||
              show: true,
 | 
			
		||||
              lineStyle: {
 | 
			
		||||
                color: "#213259",
 | 
			
		||||
              },
 | 
			
		||||
            },
 | 
			
		||||
            splitLine: {
 | 
			
		||||
              lineStyle: {
 | 
			
		||||
                color: "#213259a0",
 | 
			
		||||
              },
 | 
			
		||||
            }
 | 
			
		||||
          },
 | 
			
		||||
          {
 | 
			
		||||
            type: 'value',
 | 
			
		||||
            name: '良品率',
 | 
			
		||||
            nameTextStyle: {
 | 
			
		||||
              color: '#fff',
 | 
			
		||||
              fontSize: 10,
 | 
			
		||||
              align: 'LEFT',
 | 
			
		||||
            },
 | 
			
		||||
            axisLabel: {
 | 
			
		||||
              color: "#fff",
 | 
			
		||||
              fontSize: 12,
 | 
			
		||||
              formatter: () =>{
 | 
			
		||||
                return value ? '{value} %': '-'
 | 
			
		||||
              }
 | 
			
		||||
            },
 | 
			
		||||
          axisLine: {
 | 
			
		||||
            show: true,
 | 
			
		||||
            lineStyle: {
 | 
			
		||||
              color: "#213259",
 | 
			
		||||
            },
 | 
			
		||||
          },
 | 
			
		||||
          splitLine: {
 | 
			
		||||
            lineStyle: {
 | 
			
		||||
              color: "#213259a0",
 | 
			
		||||
            },
 | 
			
		||||
          }
 | 
			
		||||
          }
 | 
			
		||||
        ],
 | 
			
		||||
        series: [
 | 
			
		||||
          {
 | 
			
		||||
            name: '产线产量',
 | 
			
		||||
            type: 'bar',
 | 
			
		||||
            tooltip: {
 | 
			
		||||
              valueFormatter: function (value) {
 | 
			
		||||
                return value;
 | 
			
		||||
              }
 | 
			
		||||
            },
 | 
			
		||||
            barWidth: 20,
 | 
			
		||||
            itemStyle: {
 | 
			
		||||
              color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
 | 
			
		||||
                { offset: 0, color: '#5CB7FF' },
 | 
			
		||||
                { offset: 1, color: '#364BFE' }
 | 
			
		||||
              ])
 | 
			
		||||
            },
 | 
			
		||||
            data: outputNum
 | 
			
		||||
          },
 | 
			
		||||
          {
 | 
			
		||||
            name: '良品率',
 | 
			
		||||
            type: 'line',
 | 
			
		||||
            yAxisIndex: 1,
 | 
			
		||||
            tooltip: {
 | 
			
		||||
              valueFormatter: function (value) {
 | 
			
		||||
                return value?value + '%':'-';
 | 
			
		||||
              }
 | 
			
		||||
            },
 | 
			
		||||
            itemStyle: {
 | 
			
		||||
              color: '#FFD160'
 | 
			
		||||
            },
 | 
			
		||||
            areaStyle: {
 | 
			
		||||
					icon: 'rect',
 | 
			
		||||
					data: [
 | 
			
		||||
						{ name: '产线产量', itemStyle: { color: '#364BFE' } },
 | 
			
		||||
						{ name: '良品率', itemStyle: { color: '#FFCB59' } },
 | 
			
		||||
					],
 | 
			
		||||
					textStyle: {
 | 
			
		||||
						color: '#DFF1FE',
 | 
			
		||||
						fontSize: 12,
 | 
			
		||||
					},
 | 
			
		||||
				},
 | 
			
		||||
				xAxis: [
 | 
			
		||||
					{
 | 
			
		||||
						type: 'category',
 | 
			
		||||
						data: xData,
 | 
			
		||||
						axisLabel: {
 | 
			
		||||
							color: '#fff',
 | 
			
		||||
							fontSize: 12,
 | 
			
		||||
						},
 | 
			
		||||
						axisPointer: {
 | 
			
		||||
							type: 'shadow',
 | 
			
		||||
						},
 | 
			
		||||
						axisTick: { show: false },
 | 
			
		||||
						axisLine: {
 | 
			
		||||
							lineStyle: {
 | 
			
		||||
								width: 1,
 | 
			
		||||
								color: '#213259',
 | 
			
		||||
							},
 | 
			
		||||
						},
 | 
			
		||||
					},
 | 
			
		||||
				],
 | 
			
		||||
				yAxis: [
 | 
			
		||||
					{
 | 
			
		||||
						type: 'value',
 | 
			
		||||
						name: '产量/片',
 | 
			
		||||
						nameTextStyle: {
 | 
			
		||||
							color: '#fff',
 | 
			
		||||
							fontSize: 10,
 | 
			
		||||
							align: 'right',
 | 
			
		||||
						},
 | 
			
		||||
						axisLabel: {
 | 
			
		||||
							color: '#fff',
 | 
			
		||||
							fontSize: 12,
 | 
			
		||||
						},
 | 
			
		||||
						axisLine: {
 | 
			
		||||
							show: true,
 | 
			
		||||
							lineStyle: {
 | 
			
		||||
								color: '#213259',
 | 
			
		||||
							},
 | 
			
		||||
						},
 | 
			
		||||
						splitLine: {
 | 
			
		||||
							lineStyle: {
 | 
			
		||||
								color: '#213259a0',
 | 
			
		||||
							},
 | 
			
		||||
						},
 | 
			
		||||
					},
 | 
			
		||||
					{
 | 
			
		||||
						type: 'value',
 | 
			
		||||
						name: '良品率',
 | 
			
		||||
						nameTextStyle: {
 | 
			
		||||
							color: '#fff',
 | 
			
		||||
							fontSize: 10,
 | 
			
		||||
							align: 'LEFT',
 | 
			
		||||
						},
 | 
			
		||||
						axisLabel: {
 | 
			
		||||
							color: '#fff',
 | 
			
		||||
							fontSize: 12,
 | 
			
		||||
							formatter: '{value}%',
 | 
			
		||||
						},
 | 
			
		||||
						axisLine: {
 | 
			
		||||
							show: true,
 | 
			
		||||
							lineStyle: {
 | 
			
		||||
								color: '#213259',
 | 
			
		||||
							},
 | 
			
		||||
						},
 | 
			
		||||
						splitLine: {
 | 
			
		||||
							lineStyle: {
 | 
			
		||||
								color: '#213259a0',
 | 
			
		||||
							},
 | 
			
		||||
						},
 | 
			
		||||
					},
 | 
			
		||||
				],
 | 
			
		||||
				series: [
 | 
			
		||||
					{
 | 
			
		||||
						name: '产线产量',
 | 
			
		||||
						type: 'bar',
 | 
			
		||||
						tooltip: {
 | 
			
		||||
							valueFormatter: function (value) {
 | 
			
		||||
								return value;
 | 
			
		||||
							},
 | 
			
		||||
						},
 | 
			
		||||
						barWidth: 20,
 | 
			
		||||
						itemStyle: {
 | 
			
		||||
							color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
 | 
			
		||||
                { offset: 0, color: '#FFCB59' + "40" },
 | 
			
		||||
                { offset: 0.5, color: '#FFCB59' + "20" },
 | 
			
		||||
                { offset: 1, color: '#FFCB59' + "00" },
 | 
			
		||||
                ]),
 | 
			
		||||
            },
 | 
			
		||||
            lineStyle: {
 | 
			
		||||
                width: 1
 | 
			
		||||
            },
 | 
			
		||||
            symbol: 'circle',
 | 
			
		||||
					  symbolSize: 5,
 | 
			
		||||
            data: passRate
 | 
			
		||||
          }
 | 
			
		||||
        ]
 | 
			
		||||
      };
 | 
			
		||||
      option && this.chart.setOption(option)
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
								{ offset: 0, color: '#5CB7FF' },
 | 
			
		||||
								{ offset: 1, color: '#364BFE' },
 | 
			
		||||
							]),
 | 
			
		||||
						},
 | 
			
		||||
						data: outputNum,
 | 
			
		||||
					},
 | 
			
		||||
					{
 | 
			
		||||
						name: '良品率',
 | 
			
		||||
						type: 'line',
 | 
			
		||||
						yAxisIndex: 1,
 | 
			
		||||
						tooltip: {
 | 
			
		||||
							valueFormatter: function (value) {
 | 
			
		||||
								return value ? value + '%' : '-';
 | 
			
		||||
							},
 | 
			
		||||
						},
 | 
			
		||||
						itemStyle: {
 | 
			
		||||
							color: '#FFD160',
 | 
			
		||||
						},
 | 
			
		||||
						areaStyle: {
 | 
			
		||||
							color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
 | 
			
		||||
								{ offset: 0, color: '#FFCB59' + '40' },
 | 
			
		||||
								{ offset: 0.5, color: '#FFCB59' + '20' },
 | 
			
		||||
								{ offset: 1, color: '#FFCB59' + '00' },
 | 
			
		||||
							]),
 | 
			
		||||
						},
 | 
			
		||||
						lineStyle: {
 | 
			
		||||
							width: 1,
 | 
			
		||||
						},
 | 
			
		||||
						symbol: 'circle',
 | 
			
		||||
						symbolSize: 5,
 | 
			
		||||
						data: passRate,
 | 
			
		||||
					},
 | 
			
		||||
				],
 | 
			
		||||
			};
 | 
			
		||||
			option && this.chart.setOption(option);
 | 
			
		||||
		},
 | 
			
		||||
	},
 | 
			
		||||
};
 | 
			
		||||
</script>
 | 
			
		||||
<style scoped lang="scss">
 | 
			
		||||
.num-rate-chart {
 | 
			
		||||
	width: 100%;
 | 
			
		||||
	height: 100%;
 | 
			
		||||
  top: -50px;
 | 
			
		||||
	top: -50px;
 | 
			
		||||
}
 | 
			
		||||
</style>
 | 
			
		||||
<style>
 | 
			
		||||
  .num-rate-chart-tooltip {
 | 
			
		||||
    background: #0a2b4f77 !important;
 | 
			
		||||
    border: none !important;
 | 
			
		||||
    backdrop-filter: blur(12px);
 | 
			
		||||
  }
 | 
			
		||||
  .num-rate-chart-tooltip * {
 | 
			
		||||
    color: #fff !important;
 | 
			
		||||
  }
 | 
			
		||||
.num-rate-chart-tooltip {
 | 
			
		||||
	background: #0a2b4f77 !important;
 | 
			
		||||
	border: none !important;
 | 
			
		||||
	backdrop-filter: blur(12px);
 | 
			
		||||
}
 | 
			
		||||
.num-rate-chart-tooltip * {
 | 
			
		||||
	color: #fff !important;
 | 
			
		||||
}
 | 
			
		||||
</style>
 | 
			
		||||
@@ -1,66 +1,83 @@
 | 
			
		||||
<template>
 | 
			
		||||
  <div style="flex: 1;">
 | 
			
		||||
    <Container name="各工序缺陷汇总" size="middle" style="">
 | 
			
		||||
      <TimePrompt class="timeShow" :timestr="timestr" />
 | 
			
		||||
      <div style="padding: 5px 10px;">
 | 
			
		||||
        <dv-scroll-board :config="config" style="width:575px;height:380px" ref='defectScrollBoard'/>
 | 
			
		||||
      </div>
 | 
			
		||||
    </Container>
 | 
			
		||||
  </div>
 | 
			
		||||
	<div style="flex: 1">
 | 
			
		||||
		<Container
 | 
			
		||||
			name="各工序缺陷汇总"
 | 
			
		||||
			size="middle"
 | 
			
		||||
			style="">
 | 
			
		||||
			<TimePrompt
 | 
			
		||||
				class="timeShow"
 | 
			
		||||
				:timestr="timestr" />
 | 
			
		||||
			<div style="padding: 5px 10px">
 | 
			
		||||
				<dv-scroll-board
 | 
			
		||||
					:config="config"
 | 
			
		||||
					style="width: 575px; height: 380px"
 | 
			
		||||
					ref="defectScrollBoard" />
 | 
			
		||||
			</div>
 | 
			
		||||
		</Container>
 | 
			
		||||
	</div>
 | 
			
		||||
</template>
 | 
			
		||||
<script>
 | 
			
		||||
import Container from '../components/Container.vue';
 | 
			
		||||
import TimePrompt from '../components/TimePrompt';
 | 
			
		||||
import { switchShowTime } from '../utils'
 | 
			
		||||
import { switchShowTime } from '../utils';
 | 
			
		||||
export default {
 | 
			
		||||
  name: 'DefectSum',
 | 
			
		||||
  components: { Container, TimePrompt },
 | 
			
		||||
  computed: {
 | 
			
		||||
    defectSum() {
 | 
			
		||||
      return this.$store.state.websocket.defectSum
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
  data() {
 | 
			
		||||
    return {
 | 
			
		||||
      timestr: '',
 | 
			
		||||
      config: {
 | 
			
		||||
        header: ['序号', '产线', '工序','损耗片数','缺陷类型'],
 | 
			
		||||
        headerBGC: 'rgba(32, 55, 96, 0.8)',
 | 
			
		||||
        oddRowBGC: 'rgba(32, 55, 96, 0.8)',
 | 
			
		||||
        evenRowBGC: 'rgba(14, 32, 62, 0.8)',
 | 
			
		||||
        columnWidth: [60],
 | 
			
		||||
        align: ['center'],
 | 
			
		||||
        data: [],
 | 
			
		||||
        // data: [[1, 'Y61', '破损','10','气泡']],
 | 
			
		||||
        rowNum: 10
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
  mounted() {
 | 
			
		||||
    this.timestr = switchShowTime('日')
 | 
			
		||||
  },
 | 
			
		||||
  watch:{
 | 
			
		||||
    defectSum: {
 | 
			
		||||
	name: 'DefectSum',
 | 
			
		||||
	components: { Container, TimePrompt },
 | 
			
		||||
	computed: {
 | 
			
		||||
		defectSum() {
 | 
			
		||||
			return this.$store.state.websocket.defectSum;
 | 
			
		||||
		},
 | 
			
		||||
	},
 | 
			
		||||
	data() {
 | 
			
		||||
		return {
 | 
			
		||||
			timestr: '',
 | 
			
		||||
			config: {
 | 
			
		||||
				header: ['序号', '产线', '工序', '损耗片数', '缺陷类型'],
 | 
			
		||||
				headerBGC: 'rgba(32, 55, 96, 0.8)',
 | 
			
		||||
				oddRowBGC: 'rgba(32, 55, 96, 0.8)',
 | 
			
		||||
				evenRowBGC: 'rgba(14, 32, 62, 0.8)',
 | 
			
		||||
				columnWidth: [60],
 | 
			
		||||
				align: ['center'],
 | 
			
		||||
				data: [
 | 
			
		||||
					//假数据
 | 
			
		||||
					[1, 'D61', '成型', '3片', '细长泡'],
 | 
			
		||||
					[2, 'D62', '组合落板', '4片', '细长泡'],
 | 
			
		||||
					[3, 'D61', '磨边', '6片', '开口泡'],
 | 
			
		||||
					[4, 'D63', '清洗', '5片', '结石'],
 | 
			
		||||
					[5, 'D64', '打孔', '2片', '结石'],
 | 
			
		||||
					[6, 'D63', '成型', '7片', '开口泡'],
 | 
			
		||||
					[7, 'D61', '上片', '8片', '结石'],
 | 
			
		||||
				],
 | 
			
		||||
				// data: [],
 | 
			
		||||
				rowNum: 10,
 | 
			
		||||
			},
 | 
			
		||||
		};
 | 
			
		||||
	},
 | 
			
		||||
	mounted() {
 | 
			
		||||
		this.timestr = switchShowTime('日');
 | 
			
		||||
	},
 | 
			
		||||
	watch: {
 | 
			
		||||
		defectSum: {
 | 
			
		||||
			handler(newVal, oldVal) {
 | 
			
		||||
        let outArr = this.defectSum.map((item, index) => [
 | 
			
		||||
          index+1,
 | 
			
		||||
          item.productionLineName,
 | 
			
		||||
          item.sectionName,
 | 
			
		||||
          item.count,
 | 
			
		||||
          item.inspectionTypeName
 | 
			
		||||
      ]);
 | 
			
		||||
        this.config.data = outArr
 | 
			
		||||
        this.$refs['defectScrollBoard'].updateRows(outArr)
 | 
			
		||||
        this.timestr = switchShowTime('日')
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
				let outArr = this.defectSum.map((item, index) => [
 | 
			
		||||
					index + 1,
 | 
			
		||||
					item.productionLineName,
 | 
			
		||||
					item.sectionName,
 | 
			
		||||
					item.count,
 | 
			
		||||
					item.inspectionTypeName,
 | 
			
		||||
				]);
 | 
			
		||||
				this.config.data = outArr;
 | 
			
		||||
				this.$refs['defectScrollBoard'].updateRows(outArr);
 | 
			
		||||
				this.timestr = switchShowTime('日');
 | 
			
		||||
			},
 | 
			
		||||
		},
 | 
			
		||||
	},
 | 
			
		||||
};
 | 
			
		||||
</script>
 | 
			
		||||
<style lang='scss' scoped>
 | 
			
		||||
.timeShow {
 | 
			
		||||
  position: absolute;
 | 
			
		||||
  top: 20px;
 | 
			
		||||
  left: 240px;
 | 
			
		||||
	position: absolute;
 | 
			
		||||
	top: 20px;
 | 
			
		||||
	left: 240px;
 | 
			
		||||
}
 | 
			
		||||
</style>
 | 
			
		||||
@@ -1,313 +1,324 @@
 | 
			
		||||
<template>
 | 
			
		||||
  <div class="app-container">
 | 
			
		||||
    <!-- 搜索工作栏 -->
 | 
			
		||||
    <search-bar
 | 
			
		||||
      :formConfigs="formConfig"
 | 
			
		||||
      ref="searchBarForm"
 | 
			
		||||
      @headBtnClick="buttonClick"
 | 
			
		||||
    />
 | 
			
		||||
    <!-- 列表 -->
 | 
			
		||||
    <base-table
 | 
			
		||||
      :page="queryParams.pageNo"
 | 
			
		||||
      :limit="queryParams.pageSize"
 | 
			
		||||
      :table-props="tableProps"
 | 
			
		||||
      :table-data="list"
 | 
			
		||||
      :max-height="tableH"
 | 
			
		||||
    >
 | 
			
		||||
      <method-btn
 | 
			
		||||
        v-if="tableBtn.length"
 | 
			
		||||
        slot="handleBtn"
 | 
			
		||||
        :width="160"
 | 
			
		||||
        label="操作"
 | 
			
		||||
        :method-list="tableBtn"
 | 
			
		||||
        @clickBtn="handleClick"
 | 
			
		||||
      />
 | 
			
		||||
    </base-table>
 | 
			
		||||
    <pagination
 | 
			
		||||
      :page.sync="queryParams.pageNo"
 | 
			
		||||
      :limit.sync="queryParams.pageSize"
 | 
			
		||||
      :total="total"
 | 
			
		||||
      @pagination="getList"
 | 
			
		||||
    />
 | 
			
		||||
    <!-- 新增 -->
 | 
			
		||||
    <base-dialog
 | 
			
		||||
	<div class="app-container">
 | 
			
		||||
		<!-- 搜索工作栏 -->
 | 
			
		||||
		<search-bar
 | 
			
		||||
			:formConfigs="formConfig"
 | 
			
		||||
			ref="searchBarForm"
 | 
			
		||||
			@headBtnClick="buttonClick" />
 | 
			
		||||
		<!-- 列表 -->
 | 
			
		||||
		<base-table
 | 
			
		||||
			:page="queryParams.pageNo"
 | 
			
		||||
			:limit="queryParams.pageSize"
 | 
			
		||||
			:table-props="tableProps"
 | 
			
		||||
			:table-data="list"
 | 
			
		||||
			:max-height="tableH">
 | 
			
		||||
			<method-btn
 | 
			
		||||
				v-if="tableBtn.length"
 | 
			
		||||
				slot="handleBtn"
 | 
			
		||||
				:width="160"
 | 
			
		||||
				label="操作"
 | 
			
		||||
				:method-list="tableBtn"
 | 
			
		||||
				@clickBtn="handleClick" />
 | 
			
		||||
		</base-table>
 | 
			
		||||
		<pagination
 | 
			
		||||
			:page.sync="queryParams.pageNo"
 | 
			
		||||
			:limit.sync="queryParams.pageSize"
 | 
			
		||||
			:total="total"
 | 
			
		||||
			@pagination="getList" />
 | 
			
		||||
		<!-- 新增 -->
 | 
			
		||||
		<base-dialog
 | 
			
		||||
			:dialogTitle="addOrEditTitle"
 | 
			
		||||
			:dialogVisible="centervisible"
 | 
			
		||||
			@cancel="handleCancel"
 | 
			
		||||
			@confirm="handleConfirm"
 | 
			
		||||
			:before-close="handleCancel"
 | 
			
		||||
			width="50%"
 | 
			
		||||
    >
 | 
			
		||||
			<add-or-update ref="addOrUpdate" @successSubmit="successSubmit" />
 | 
			
		||||
			width="50%">
 | 
			
		||||
			<add-or-update
 | 
			
		||||
				ref="addOrUpdate"
 | 
			
		||||
				@successSubmit="successSubmit" />
 | 
			
		||||
		</base-dialog>
 | 
			
		||||
    <!-- 装车 -->
 | 
			
		||||
    <base-dialog
 | 
			
		||||
		<!-- 装车 -->
 | 
			
		||||
		<base-dialog
 | 
			
		||||
			dialogTitle="装车"
 | 
			
		||||
			:dialogVisible="centervisible2"
 | 
			
		||||
			@cancel="handleCancel2"
 | 
			
		||||
			@confirm="handleConfirm2"
 | 
			
		||||
			:before-close="handleCancel2"
 | 
			
		||||
			width="50%"
 | 
			
		||||
    >
 | 
			
		||||
			<loaded-page ref="loadedPage" @successSubmit="successSubmit2" />
 | 
			
		||||
			width="50%">
 | 
			
		||||
			<loaded-page
 | 
			
		||||
				ref="loadedPage"
 | 
			
		||||
				@successSubmit="successSubmit2" />
 | 
			
		||||
		</base-dialog>
 | 
			
		||||
    <!-- 发货详情 -->
 | 
			
		||||
    <delivery-log-detail ref='deliveryLogDetail' v-if='showDetail' />
 | 
			
		||||
  </div>
 | 
			
		||||
		<!-- 发货详情 -->
 | 
			
		||||
		<delivery-log-detail
 | 
			
		||||
			ref="deliveryLogDetail"
 | 
			
		||||
			v-if="showDetail" />
 | 
			
		||||
	</div>
 | 
			
		||||
</template>
 | 
			
		||||
<script>
 | 
			
		||||
import { parseTime } from '@/utils/ruoyi'
 | 
			
		||||
import { deliveryLogPage, deliveryLogDelete } from '@/api/base/delivery'
 | 
			
		||||
import AddOrUpdate from './components/addOrUpdate'
 | 
			
		||||
import LoadedPage from './components/loadedPage'
 | 
			
		||||
import DeliveryLogDetail from './components/deliveryLogDetail.vue'
 | 
			
		||||
import { parseTime } from '@/utils/ruoyi';
 | 
			
		||||
import { deliveryLogPage, deliveryLogDelete } from '@/api/base/delivery';
 | 
			
		||||
import AddOrUpdate from './components/addOrUpdate';
 | 
			
		||||
import LoadedPage from './components/loadedPage';
 | 
			
		||||
import DeliveryLogDetail from './components/deliveryLogDetail.vue';
 | 
			
		||||
import tableHeightMixin from '@/mixins/lb/tableHeightMixin';
 | 
			
		||||
const tableProps = [
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'orderName',
 | 
			
		||||
    label: '订单名',
 | 
			
		||||
    minWidth: 100,
 | 
			
		||||
    showOverflowtooltip: true
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'name',
 | 
			
		||||
    label: '发货单名称',
 | 
			
		||||
    minWidth: 100,
 | 
			
		||||
    showOverflowtooltip: true
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'deliveryTime',
 | 
			
		||||
    label: '发货时间',
 | 
			
		||||
    filter: parseTime,
 | 
			
		||||
    minWidth: 160
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'code',
 | 
			
		||||
    label: '发货单号',
 | 
			
		||||
    showOverflowtooltip: true
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'deliverPerName',
 | 
			
		||||
    label: '发货负责人',
 | 
			
		||||
    minWidth: 100
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'principal',
 | 
			
		||||
    label: '运输负责人',
 | 
			
		||||
    minWidth: 100
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'principalCall',
 | 
			
		||||
    label: '运输联系方式',
 | 
			
		||||
    minWidth: 110,
 | 
			
		||||
    showOverflowtooltip: true
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'principalCost',
 | 
			
		||||
    label: '运输费用',
 | 
			
		||||
    align: 'right'
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'remark',
 | 
			
		||||
    label: '备注',
 | 
			
		||||
    showOverflowtooltip: true
 | 
			
		||||
  }
 | 
			
		||||
]
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'orderName',
 | 
			
		||||
		label: '订单名',
 | 
			
		||||
		minWidth: 100,
 | 
			
		||||
		showOverflowtooltip: true,
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'name',
 | 
			
		||||
		label: '发货单名称',
 | 
			
		||||
		minWidth: 100,
 | 
			
		||||
		showOverflowtooltip: true,
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'deliveryTime',
 | 
			
		||||
		label: '发货时间',
 | 
			
		||||
		filter: parseTime,
 | 
			
		||||
		minWidth: 160,
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'code',
 | 
			
		||||
		label: '发货单号',
 | 
			
		||||
		showOverflowtooltip: true,
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'deliverPerName',
 | 
			
		||||
		label: '发货负责人',
 | 
			
		||||
		minWidth: 100,
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'principal',
 | 
			
		||||
		label: '运输负责人',
 | 
			
		||||
		minWidth: 100,
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'principalCall',
 | 
			
		||||
		label: '运输联系方式',
 | 
			
		||||
		minWidth: 110,
 | 
			
		||||
		showOverflowtooltip: true,
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'principalCost',
 | 
			
		||||
		label: '运输费用',
 | 
			
		||||
		align: 'right',
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'remark',
 | 
			
		||||
		label: '备注',
 | 
			
		||||
		showOverflowtooltip: true,
 | 
			
		||||
	},
 | 
			
		||||
];
 | 
			
		||||
export default {
 | 
			
		||||
  name: "DeliveryLog",
 | 
			
		||||
  data() {
 | 
			
		||||
    return {
 | 
			
		||||
      formConfig: [
 | 
			
		||||
        {
 | 
			
		||||
          type: 'input',
 | 
			
		||||
          label: '订单名',
 | 
			
		||||
          param: 'orderName',
 | 
			
		||||
          defaultSelect: ''
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          type: 'input',
 | 
			
		||||
          label: '发货单名称',
 | 
			
		||||
          param: 'name'
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          type: 'input',
 | 
			
		||||
          label: '发货单号',
 | 
			
		||||
          param: 'code'
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          type: 'button',
 | 
			
		||||
          btnName: '查询',
 | 
			
		||||
          name: 'search',
 | 
			
		||||
          color: 'primary'
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          type: this.$auth.hasPermi('extend:delivery-log:create') ? 'separate' : '',
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          type: this.$auth.hasPermi('extend:delivery-log:create') ? 'button' : '',
 | 
			
		||||
          btnName: '新增',
 | 
			
		||||
          name: 'add',
 | 
			
		||||
          color: 'success',
 | 
			
		||||
          plain: true
 | 
			
		||||
        }
 | 
			
		||||
      ],
 | 
			
		||||
      // 查询参数
 | 
			
		||||
      queryParams: {
 | 
			
		||||
        pageNo: 1,
 | 
			
		||||
        pageSize: 20,
 | 
			
		||||
        orderName: '',
 | 
			
		||||
        code: '',
 | 
			
		||||
        name: ''
 | 
			
		||||
      },
 | 
			
		||||
      tableProps,
 | 
			
		||||
      list: [],
 | 
			
		||||
      tableH: this.tableHeight(260),
 | 
			
		||||
      total: 0,
 | 
			
		||||
      tableBtn: [
 | 
			
		||||
      this.$auth.hasPermi('extend:delivery-log:loaded')
 | 
			
		||||
          ? {
 | 
			
		||||
              type: 'loaded',
 | 
			
		||||
              btnName: '装车'
 | 
			
		||||
            }
 | 
			
		||||
          : undefined,
 | 
			
		||||
      this.$auth.hasPermi('extend:delivery-log:detail')
 | 
			
		||||
          ? {
 | 
			
		||||
              type: 'detail',
 | 
			
		||||
              btnName: '详情'
 | 
			
		||||
            }
 | 
			
		||||
          : undefined,
 | 
			
		||||
        this.$auth.hasPermi('extend:delivery-log:update')
 | 
			
		||||
          ? {
 | 
			
		||||
              type: 'edit',
 | 
			
		||||
              btnName: '编辑'
 | 
			
		||||
            }
 | 
			
		||||
          : undefined,
 | 
			
		||||
        this.$auth.hasPermi('extend:delivery-log:delete')
 | 
			
		||||
          ? {
 | 
			
		||||
              type: 'delete',
 | 
			
		||||
              btnName: '删除'
 | 
			
		||||
            }
 | 
			
		||||
          : undefined
 | 
			
		||||
      ].filter((v) => v),
 | 
			
		||||
      addOrEditTitle: '',
 | 
			
		||||
      centervisible: false,
 | 
			
		||||
      centervisible2: false,
 | 
			
		||||
      showDetail: false
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
  created() {
 | 
			
		||||
    window.addEventListener('resize', () => {
 | 
			
		||||
      this.tableH = this.tableHeight(260)
 | 
			
		||||
    })
 | 
			
		||||
    if (location.href.indexOf('?') > 0) {
 | 
			
		||||
      let arr = location.href.split('?')[1]
 | 
			
		||||
      this.formConfig[0].defaultSelect = decodeURI(arr.split('=')[1])
 | 
			
		||||
    } else {
 | 
			
		||||
      this.formConfig[0].defaultSelect = ''
 | 
			
		||||
    }
 | 
			
		||||
    this.queryParams.orderName = this.formConfig[0].defaultSelect
 | 
			
		||||
    this.getList();
 | 
			
		||||
  },
 | 
			
		||||
  components: { AddOrUpdate, LoadedPage, DeliveryLogDetail },
 | 
			
		||||
  watch: {
 | 
			
		||||
    $route: 'initData'
 | 
			
		||||
  },
 | 
			
		||||
  methods: {
 | 
			
		||||
    initData(to) {
 | 
			
		||||
      if (to.name === 'DeliveryLog') {
 | 
			
		||||
        if (location.href.indexOf('?') > 0) {
 | 
			
		||||
          let arr = location.href.split('?')[1]
 | 
			
		||||
          this.formConfig[0].defaultSelect = decodeURI(arr.split('=')[1])
 | 
			
		||||
        } else {
 | 
			
		||||
          this.formConfig[0].defaultSelect = ''
 | 
			
		||||
        }
 | 
			
		||||
        this.queryParams.orderName = this.formConfig[0].defaultSelect
 | 
			
		||||
        this.getList()
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    getList() {
 | 
			
		||||
      deliveryLogPage({...this.queryParams}).then(res => {
 | 
			
		||||
        let arr = res.data.list || []
 | 
			
		||||
        arr && arr.map(item => {
 | 
			
		||||
          item.principalCost = item.principalCost.toFixed(2)
 | 
			
		||||
        })
 | 
			
		||||
        this.list = arr
 | 
			
		||||
        this.total = res.data.total || 0
 | 
			
		||||
      })
 | 
			
		||||
    },
 | 
			
		||||
    buttonClick(val) {
 | 
			
		||||
      if (val.btnName === 'search') {
 | 
			
		||||
        this.queryParams.name = val.name
 | 
			
		||||
        this.queryParams.orderName = val.orderName
 | 
			
		||||
        this.queryParams.code = val.code
 | 
			
		||||
        this.getList()
 | 
			
		||||
      } else {
 | 
			
		||||
        this.addOrEditTitle = '新增'
 | 
			
		||||
        this.centervisible = true
 | 
			
		||||
        this.$nextTick(() => {
 | 
			
		||||
          this.$refs.addOrUpdate.init()
 | 
			
		||||
        })
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    handleClick(val) {
 | 
			
		||||
      console.log(val)
 | 
			
		||||
      switch (val.type) {
 | 
			
		||||
        case 'edit':
 | 
			
		||||
          this.addOrEditTitle = '编辑'
 | 
			
		||||
          this.centervisible = true
 | 
			
		||||
          this.$nextTick(() => {
 | 
			
		||||
            this.$refs.addOrUpdate.init(val.data.id)
 | 
			
		||||
          })
 | 
			
		||||
          break
 | 
			
		||||
        case 'delete':
 | 
			
		||||
          this.handleDelete(val.data)
 | 
			
		||||
          break
 | 
			
		||||
        case 'loaded':
 | 
			
		||||
          this.centervisible2 = true
 | 
			
		||||
          this.$nextTick(() => {
 | 
			
		||||
            this.$refs.loadedPage.init(val.data.id, val.data.code, val.data.orderId)
 | 
			
		||||
          })
 | 
			
		||||
          break
 | 
			
		||||
        default:
 | 
			
		||||
          this.showDetail = true
 | 
			
		||||
          this.$nextTick(() => {
 | 
			
		||||
            this.$refs.deliveryLogDetail.init(val.data)
 | 
			
		||||
          })
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    // 新增
 | 
			
		||||
    handleCancel() {
 | 
			
		||||
      this.$refs.addOrUpdate.formClear()
 | 
			
		||||
      this.centervisible = false
 | 
			
		||||
      this.addOrEditTitle = ''
 | 
			
		||||
    },
 | 
			
		||||
    handleConfirm() {
 | 
			
		||||
      this.$refs.addOrUpdate.submitForm()
 | 
			
		||||
    },
 | 
			
		||||
    successSubmit() {
 | 
			
		||||
      this.handleCancel()
 | 
			
		||||
      this.getList()
 | 
			
		||||
    },
 | 
			
		||||
    // 删除
 | 
			
		||||
    handleDelete(val) {
 | 
			
		||||
      this.$modal.confirm('是否确认删除发货单名为"' + val.name + '"的数据项?').then(function() {
 | 
			
		||||
          return deliveryLogDelete({ id: val.id })
 | 
			
		||||
        }).then(() => {
 | 
			
		||||
          this.getList();
 | 
			
		||||
          this.$modal.msgSuccess("操作成功");
 | 
			
		||||
        }).catch(() => {});
 | 
			
		||||
    },
 | 
			
		||||
    // 装车
 | 
			
		||||
    handleCancel2() {
 | 
			
		||||
      this.$refs.loadedPage.formClear()
 | 
			
		||||
      this.centervisible2 = false
 | 
			
		||||
    },
 | 
			
		||||
    handleConfirm2() {
 | 
			
		||||
      this.$refs.loadedPage.submitForm()
 | 
			
		||||
    },
 | 
			
		||||
    successSubmit2() {
 | 
			
		||||
      this.handleCancel2()
 | 
			
		||||
      this.getList()
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
	name: 'DeliveryLog',
 | 
			
		||||
	mixins: [tableHeightMixin],
 | 
			
		||||
	data() {
 | 
			
		||||
		return {
 | 
			
		||||
			formConfig: [
 | 
			
		||||
				{
 | 
			
		||||
					type: 'input',
 | 
			
		||||
					label: '订单名',
 | 
			
		||||
					param: 'orderName',
 | 
			
		||||
					defaultSelect: '',
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					type: 'input',
 | 
			
		||||
					label: '发货单名称',
 | 
			
		||||
					param: 'name',
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					type: 'input',
 | 
			
		||||
					label: '发货单号',
 | 
			
		||||
					param: 'code',
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					type: 'button',
 | 
			
		||||
					btnName: '查询',
 | 
			
		||||
					name: 'search',
 | 
			
		||||
					color: 'primary',
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					type: this.$auth.hasPermi('extend:delivery-log:create')
 | 
			
		||||
						? 'separate'
 | 
			
		||||
						: '',
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					type: this.$auth.hasPermi('extend:delivery-log:create')
 | 
			
		||||
						? 'button'
 | 
			
		||||
						: '',
 | 
			
		||||
					btnName: '新增',
 | 
			
		||||
					name: 'add',
 | 
			
		||||
					color: 'success',
 | 
			
		||||
					plain: true,
 | 
			
		||||
				},
 | 
			
		||||
			],
 | 
			
		||||
			// 查询参数
 | 
			
		||||
			queryParams: {
 | 
			
		||||
				pageNo: 1,
 | 
			
		||||
				pageSize: 20,
 | 
			
		||||
				orderName: '',
 | 
			
		||||
				code: '',
 | 
			
		||||
				name: '',
 | 
			
		||||
			},
 | 
			
		||||
			tableProps,
 | 
			
		||||
			list: [],
 | 
			
		||||
			total: 0,
 | 
			
		||||
			tableBtn: [
 | 
			
		||||
				this.$auth.hasPermi('extend:delivery-log:loaded')
 | 
			
		||||
					? {
 | 
			
		||||
							type: 'loaded',
 | 
			
		||||
							btnName: '装车',
 | 
			
		||||
					  }
 | 
			
		||||
					: undefined,
 | 
			
		||||
				this.$auth.hasPermi('extend:delivery-log:detail')
 | 
			
		||||
					? {
 | 
			
		||||
							type: 'detail',
 | 
			
		||||
							btnName: '详情',
 | 
			
		||||
					  }
 | 
			
		||||
					: undefined,
 | 
			
		||||
				this.$auth.hasPermi('extend:delivery-log:update')
 | 
			
		||||
					? {
 | 
			
		||||
							type: 'edit',
 | 
			
		||||
							btnName: '编辑',
 | 
			
		||||
					  }
 | 
			
		||||
					: undefined,
 | 
			
		||||
				this.$auth.hasPermi('extend:delivery-log:delete')
 | 
			
		||||
					? {
 | 
			
		||||
							type: 'delete',
 | 
			
		||||
							btnName: '删除',
 | 
			
		||||
					  }
 | 
			
		||||
					: undefined,
 | 
			
		||||
			].filter((v) => v),
 | 
			
		||||
			addOrEditTitle: '',
 | 
			
		||||
			centervisible: false,
 | 
			
		||||
			centervisible2: false,
 | 
			
		||||
			showDetail: false,
 | 
			
		||||
		};
 | 
			
		||||
	},
 | 
			
		||||
	created() {
 | 
			
		||||
		if (location.href.indexOf('?') > 0) {
 | 
			
		||||
			let arr = location.href.split('?')[1];
 | 
			
		||||
			this.formConfig[0].defaultSelect = decodeURI(arr.split('=')[1]);
 | 
			
		||||
		} else {
 | 
			
		||||
			this.formConfig[0].defaultSelect = '';
 | 
			
		||||
		}
 | 
			
		||||
		this.queryParams.orderName = this.formConfig[0].defaultSelect;
 | 
			
		||||
		this.getList();
 | 
			
		||||
	},
 | 
			
		||||
	components: { AddOrUpdate, LoadedPage, DeliveryLogDetail },
 | 
			
		||||
	watch: {
 | 
			
		||||
		$route: 'initData',
 | 
			
		||||
	},
 | 
			
		||||
	methods: {
 | 
			
		||||
		initData(to) {
 | 
			
		||||
			if (to.name === 'DeliveryLog') {
 | 
			
		||||
				if (location.href.indexOf('?') > 0) {
 | 
			
		||||
					let arr = location.href.split('?')[1];
 | 
			
		||||
					this.formConfig[0].defaultSelect = decodeURI(arr.split('=')[1]);
 | 
			
		||||
				} else {
 | 
			
		||||
					this.formConfig[0].defaultSelect = '';
 | 
			
		||||
				}
 | 
			
		||||
				this.queryParams.orderName = this.formConfig[0].defaultSelect;
 | 
			
		||||
				this.getList();
 | 
			
		||||
			}
 | 
			
		||||
		},
 | 
			
		||||
		getList() {
 | 
			
		||||
			deliveryLogPage({ ...this.queryParams }).then((res) => {
 | 
			
		||||
				let arr = res.data.list || [];
 | 
			
		||||
				arr &&
 | 
			
		||||
					arr.map((item) => {
 | 
			
		||||
						item.principalCost = item.principalCost.toFixed(2);
 | 
			
		||||
					});
 | 
			
		||||
				this.list = arr;
 | 
			
		||||
				this.total = res.data.total || 0;
 | 
			
		||||
			});
 | 
			
		||||
		},
 | 
			
		||||
		buttonClick(val) {
 | 
			
		||||
			if (val.btnName === 'search') {
 | 
			
		||||
				this.queryParams.name = val.name;
 | 
			
		||||
				this.queryParams.orderName = val.orderName;
 | 
			
		||||
				this.queryParams.code = val.code;
 | 
			
		||||
				this.getList();
 | 
			
		||||
			} else {
 | 
			
		||||
				this.addOrEditTitle = '新增';
 | 
			
		||||
				this.centervisible = true;
 | 
			
		||||
				this.$nextTick(() => {
 | 
			
		||||
					this.$refs.addOrUpdate.init();
 | 
			
		||||
				});
 | 
			
		||||
			}
 | 
			
		||||
		},
 | 
			
		||||
		handleClick(val) {
 | 
			
		||||
			console.log(val);
 | 
			
		||||
			switch (val.type) {
 | 
			
		||||
				case 'edit':
 | 
			
		||||
					this.addOrEditTitle = '编辑';
 | 
			
		||||
					this.centervisible = true;
 | 
			
		||||
					this.$nextTick(() => {
 | 
			
		||||
						this.$refs.addOrUpdate.init(val.data.id);
 | 
			
		||||
					});
 | 
			
		||||
					break;
 | 
			
		||||
				case 'delete':
 | 
			
		||||
					this.handleDelete(val.data);
 | 
			
		||||
					break;
 | 
			
		||||
				case 'loaded':
 | 
			
		||||
					this.centervisible2 = true;
 | 
			
		||||
					this.$nextTick(() => {
 | 
			
		||||
						this.$refs.loadedPage.init(
 | 
			
		||||
							val.data.id,
 | 
			
		||||
							val.data.code,
 | 
			
		||||
							val.data.orderId
 | 
			
		||||
						);
 | 
			
		||||
					});
 | 
			
		||||
					break;
 | 
			
		||||
				default:
 | 
			
		||||
					this.showDetail = true;
 | 
			
		||||
					this.$nextTick(() => {
 | 
			
		||||
						this.$refs.deliveryLogDetail.init(val.data);
 | 
			
		||||
					});
 | 
			
		||||
			}
 | 
			
		||||
		},
 | 
			
		||||
		// 新增
 | 
			
		||||
		handleCancel() {
 | 
			
		||||
			this.$refs.addOrUpdate.formClear();
 | 
			
		||||
			this.centervisible = false;
 | 
			
		||||
			this.addOrEditTitle = '';
 | 
			
		||||
		},
 | 
			
		||||
		handleConfirm() {
 | 
			
		||||
			this.$refs.addOrUpdate.submitForm();
 | 
			
		||||
		},
 | 
			
		||||
		successSubmit() {
 | 
			
		||||
			this.handleCancel();
 | 
			
		||||
			this.getList();
 | 
			
		||||
		},
 | 
			
		||||
		// 删除
 | 
			
		||||
		handleDelete(val) {
 | 
			
		||||
			this.$modal
 | 
			
		||||
				.confirm('是否确认删除发货单名为"' + val.name + '"的数据项?')
 | 
			
		||||
				.then(function () {
 | 
			
		||||
					return deliveryLogDelete({ id: val.id });
 | 
			
		||||
				})
 | 
			
		||||
				.then(() => {
 | 
			
		||||
					this.getList();
 | 
			
		||||
					this.$modal.msgSuccess('操作成功');
 | 
			
		||||
				})
 | 
			
		||||
				.catch(() => {});
 | 
			
		||||
		},
 | 
			
		||||
		// 装车
 | 
			
		||||
		handleCancel2() {
 | 
			
		||||
			this.$refs.loadedPage.formClear();
 | 
			
		||||
			this.centervisible2 = false;
 | 
			
		||||
		},
 | 
			
		||||
		handleConfirm2() {
 | 
			
		||||
			this.$refs.loadedPage.submitForm();
 | 
			
		||||
		},
 | 
			
		||||
		successSubmit2() {
 | 
			
		||||
			this.handleCancel2();
 | 
			
		||||
			this.getList();
 | 
			
		||||
		},
 | 
			
		||||
	},
 | 
			
		||||
};
 | 
			
		||||
</script>
 | 
			
		||||
@@ -1,130 +1,124 @@
 | 
			
		||||
<template>
 | 
			
		||||
  <div class="app-container">
 | 
			
		||||
    <!-- 搜索工作栏 -->
 | 
			
		||||
    <search-bar
 | 
			
		||||
      :formConfigs="formConfig"
 | 
			
		||||
      ref="searchBarForm"
 | 
			
		||||
      @headBtnClick="buttonClick"
 | 
			
		||||
    />
 | 
			
		||||
    <!-- 列表 -->
 | 
			
		||||
    <base-table
 | 
			
		||||
      :page="queryParams.pageNo"
 | 
			
		||||
      :limit="queryParams.pageSize"
 | 
			
		||||
      :table-props="tableProps"
 | 
			
		||||
      :table-data="list"
 | 
			
		||||
      :max-height="tableH"
 | 
			
		||||
    >
 | 
			
		||||
      <method-btn
 | 
			
		||||
        v-if="tableBtn.length"
 | 
			
		||||
        slot="handleBtn"
 | 
			
		||||
        :width="80"
 | 
			
		||||
        label="操作"
 | 
			
		||||
        :method-list="tableBtn"
 | 
			
		||||
        @clickBtn="handleClick"
 | 
			
		||||
      />
 | 
			
		||||
    </base-table>
 | 
			
		||||
    <pagination
 | 
			
		||||
      :page.sync="queryParams.pageNo"
 | 
			
		||||
      :limit.sync="queryParams.pageSize"
 | 
			
		||||
      :total="total"
 | 
			
		||||
      @pagination="getList"
 | 
			
		||||
    />
 | 
			
		||||
    <!-- 详情抽屉 -->
 | 
			
		||||
    <delivery-log-det-detail ref='deliveryLogDetail'/>
 | 
			
		||||
  </div>
 | 
			
		||||
	<div class="app-container">
 | 
			
		||||
		<!-- 搜索工作栏 -->
 | 
			
		||||
		<search-bar
 | 
			
		||||
			:formConfigs="formConfig"
 | 
			
		||||
			ref="searchBarForm"
 | 
			
		||||
			@headBtnClick="buttonClick" />
 | 
			
		||||
		<!-- 列表 -->
 | 
			
		||||
		<base-table
 | 
			
		||||
			:page="queryParams.pageNo"
 | 
			
		||||
			:limit="queryParams.pageSize"
 | 
			
		||||
			:table-props="tableProps"
 | 
			
		||||
			:table-data="list"
 | 
			
		||||
			:max-height="tableH">
 | 
			
		||||
			<method-btn
 | 
			
		||||
				v-if="tableBtn.length"
 | 
			
		||||
				slot="handleBtn"
 | 
			
		||||
				:width="80"
 | 
			
		||||
				label="操作"
 | 
			
		||||
				:method-list="tableBtn"
 | 
			
		||||
				@clickBtn="handleClick" />
 | 
			
		||||
		</base-table>
 | 
			
		||||
		<pagination
 | 
			
		||||
			:page.sync="queryParams.pageNo"
 | 
			
		||||
			:limit.sync="queryParams.pageSize"
 | 
			
		||||
			:total="total"
 | 
			
		||||
			@pagination="getList" />
 | 
			
		||||
		<!-- 详情抽屉 -->
 | 
			
		||||
		<delivery-log-det-detail ref="deliveryLogDetail" />
 | 
			
		||||
	</div>
 | 
			
		||||
</template>
 | 
			
		||||
<script>
 | 
			
		||||
import { deliveryProgressPage } from '@/api/base/delivery'
 | 
			
		||||
import DeliveryLogDetDetail from './components/deliveryLogDetDetail.vue'
 | 
			
		||||
import { deliveryProgressPage } from '@/api/base/delivery';
 | 
			
		||||
import DeliveryLogDetDetail from './components/deliveryLogDetDetail.vue';
 | 
			
		||||
import tableHeightMixin from '@/mixins/lb/tableHeightMixin';
 | 
			
		||||
const tableProps = [
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'orderName',
 | 
			
		||||
    label: '订单名',
 | 
			
		||||
    showOverflowtooltip: true
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'customerName',
 | 
			
		||||
    label: '客户名称',
 | 
			
		||||
    showOverflowtooltip: true
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'unit',
 | 
			
		||||
    label: '单位'
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'orderNum',
 | 
			
		||||
    label: '订单数量'
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'num',
 | 
			
		||||
    label: '发货数量'
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'rate',
 | 
			
		||||
    label: '累计发货比例(%)'
 | 
			
		||||
  }
 | 
			
		||||
]
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'orderName',
 | 
			
		||||
		label: '订单名',
 | 
			
		||||
		showOverflowtooltip: true,
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'customerName',
 | 
			
		||||
		label: '客户名称',
 | 
			
		||||
		showOverflowtooltip: true,
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'unit',
 | 
			
		||||
		label: '单位',
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'orderNum',
 | 
			
		||||
		label: '订单数量',
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'num',
 | 
			
		||||
		label: '发货数量',
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'rate',
 | 
			
		||||
		label: '累计发货比例(%)',
 | 
			
		||||
	},
 | 
			
		||||
];
 | 
			
		||||
export default {
 | 
			
		||||
  name: "DeliveryLogDet",
 | 
			
		||||
  data() {
 | 
			
		||||
    return {
 | 
			
		||||
      formConfig: [
 | 
			
		||||
        {
 | 
			
		||||
          type: 'input',
 | 
			
		||||
          label: '订单名',
 | 
			
		||||
          param: 'orderName'
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          type: 'button',
 | 
			
		||||
          btnName: '查询',
 | 
			
		||||
          name: 'search',
 | 
			
		||||
          color: 'primary'
 | 
			
		||||
        }
 | 
			
		||||
      ],
 | 
			
		||||
      // 查询参数
 | 
			
		||||
      queryParams: {
 | 
			
		||||
        pageNo: 1,
 | 
			
		||||
        pageSize: 20,
 | 
			
		||||
        orderName: ''
 | 
			
		||||
      },
 | 
			
		||||
      tableProps,
 | 
			
		||||
      list: [],
 | 
			
		||||
      tableH: this.tableHeight(260),
 | 
			
		||||
      total: 0,
 | 
			
		||||
      tableBtn: [
 | 
			
		||||
      this.$auth.hasPermi('extend:delivery-log-det:detail')
 | 
			
		||||
          ? {
 | 
			
		||||
              type: 'detail',
 | 
			
		||||
              btnName: '详情'
 | 
			
		||||
            }
 | 
			
		||||
          : undefined
 | 
			
		||||
      ].filter((v) => v)
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
  components: { DeliveryLogDetDetail },
 | 
			
		||||
  created() {
 | 
			
		||||
    window.addEventListener('resize', () => {
 | 
			
		||||
      this.tableH = this.tableHeight(260)
 | 
			
		||||
    })
 | 
			
		||||
    this.getList();
 | 
			
		||||
  },
 | 
			
		||||
  methods: {
 | 
			
		||||
    getList() {
 | 
			
		||||
      deliveryProgressPage({...this.queryParams}).then(res => {
 | 
			
		||||
        this.list = res.data.list || []
 | 
			
		||||
        this.total = res.data.total || 0
 | 
			
		||||
      })
 | 
			
		||||
    },
 | 
			
		||||
    buttonClick(val) {
 | 
			
		||||
      this.queryParams.orderName = val.orderName
 | 
			
		||||
      this.getList()
 | 
			
		||||
    },
 | 
			
		||||
    handleClick(val) {
 | 
			
		||||
      console.log(val)
 | 
			
		||||
      this.$nextTick(() => {
 | 
			
		||||
        this.$refs.deliveryLogDetail.init(val.data)
 | 
			
		||||
      })
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
	name: 'DeliveryLogDet',
 | 
			
		||||
	mixins: [tableHeightMixin],
 | 
			
		||||
	data() {
 | 
			
		||||
		return {
 | 
			
		||||
			formConfig: [
 | 
			
		||||
				{
 | 
			
		||||
					type: 'input',
 | 
			
		||||
					label: '订单名',
 | 
			
		||||
					param: 'orderName',
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					type: 'button',
 | 
			
		||||
					btnName: '查询',
 | 
			
		||||
					name: 'search',
 | 
			
		||||
					color: 'primary',
 | 
			
		||||
				},
 | 
			
		||||
			],
 | 
			
		||||
			// 查询参数
 | 
			
		||||
			queryParams: {
 | 
			
		||||
				pageNo: 1,
 | 
			
		||||
				pageSize: 20,
 | 
			
		||||
				orderName: '',
 | 
			
		||||
			},
 | 
			
		||||
			tableProps,
 | 
			
		||||
			list: [],
 | 
			
		||||
			total: 0,
 | 
			
		||||
			tableBtn: [
 | 
			
		||||
				this.$auth.hasPermi('extend:delivery-log-det:detail')
 | 
			
		||||
					? {
 | 
			
		||||
							type: 'detail',
 | 
			
		||||
							btnName: '详情',
 | 
			
		||||
					  }
 | 
			
		||||
					: undefined,
 | 
			
		||||
			].filter((v) => v),
 | 
			
		||||
		};
 | 
			
		||||
	},
 | 
			
		||||
	components: { DeliveryLogDetDetail },
 | 
			
		||||
	created() {
 | 
			
		||||
		this.getList();
 | 
			
		||||
	},
 | 
			
		||||
	methods: {
 | 
			
		||||
		getList() {
 | 
			
		||||
			deliveryProgressPage({ ...this.queryParams }).then((res) => {
 | 
			
		||||
				this.list = res.data.list || [];
 | 
			
		||||
				this.total = res.data.total || 0;
 | 
			
		||||
			});
 | 
			
		||||
		},
 | 
			
		||||
		buttonClick(val) {
 | 
			
		||||
			this.queryParams.orderName = val.orderName;
 | 
			
		||||
			this.getList();
 | 
			
		||||
		},
 | 
			
		||||
		handleClick(val) {
 | 
			
		||||
			console.log(val);
 | 
			
		||||
			this.$nextTick(() => {
 | 
			
		||||
				this.$refs.deliveryLogDetail.init(val.data);
 | 
			
		||||
			});
 | 
			
		||||
		},
 | 
			
		||||
	},
 | 
			
		||||
};
 | 
			
		||||
</script>
 | 
			
		||||
@@ -187,8 +187,11 @@
 | 
			
		||||
					@click="resetBtn">
 | 
			
		||||
					重置
 | 
			
		||||
				</el-button>
 | 
			
		||||
				<span class="separateStyle"></span>
 | 
			
		||||
				<span
 | 
			
		||||
					class="separateStyle"
 | 
			
		||||
					v-hasPermi="['analysis:contrast-analysis:export']"></span>
 | 
			
		||||
				<el-button
 | 
			
		||||
					v-hasPermi="['analysis:contrast-analysis:export']"
 | 
			
		||||
					type="primary"
 | 
			
		||||
					size="small"
 | 
			
		||||
					plain
 | 
			
		||||
 
 | 
			
		||||
@@ -80,10 +80,13 @@
 | 
			
		||||
			</el-button>
 | 
			
		||||
		</el-form-item>
 | 
			
		||||
		<el-form-item>
 | 
			
		||||
			<span class="separateStyle"></span>
 | 
			
		||||
			<span
 | 
			
		||||
				class="separateStyle"
 | 
			
		||||
				v-hasPermi="['analysis:qoq-analysis:export']"></span>
 | 
			
		||||
		</el-form-item>
 | 
			
		||||
		<el-form-item>
 | 
			
		||||
			<el-button
 | 
			
		||||
				v-hasPermi="['analysis:qoq-analysis:export']"
 | 
			
		||||
				type="primary"
 | 
			
		||||
				size="small"
 | 
			
		||||
				@click="exportData"
 | 
			
		||||
 
 | 
			
		||||
@@ -14,7 +14,7 @@ export default {
 | 
			
		||||
		return {
 | 
			
		||||
			chartDom: '',
 | 
			
		||||
			chart: '',
 | 
			
		||||
			chartHeight: this.tableHeight(214) - 100,
 | 
			
		||||
			chartHeight: this.tableHeight(314),
 | 
			
		||||
		};
 | 
			
		||||
	},
 | 
			
		||||
	props: {
 | 
			
		||||
@@ -37,7 +37,7 @@ export default {
 | 
			
		||||
	},
 | 
			
		||||
	mounted() {
 | 
			
		||||
		window.addEventListener('resize', () => {
 | 
			
		||||
			this.chartHeight = this.tableHeight(214) - 70;
 | 
			
		||||
			this.chartHeight = this.tableHeight(314);
 | 
			
		||||
		});
 | 
			
		||||
	},
 | 
			
		||||
	methods: {
 | 
			
		||||
 
 | 
			
		||||
@@ -170,8 +170,11 @@
 | 
			
		||||
					@click="resetBtn">
 | 
			
		||||
					重置
 | 
			
		||||
				</el-button>
 | 
			
		||||
				<span class="separateStyle"></span>
 | 
			
		||||
				<span
 | 
			
		||||
					class="separateStyle"
 | 
			
		||||
					v-hasPermi="['analysis:trend-analysis:export']"></span>
 | 
			
		||||
				<el-button
 | 
			
		||||
					v-hasPermi="['analysis:trend-analysis:export']"
 | 
			
		||||
					type="primary"
 | 
			
		||||
					size="small"
 | 
			
		||||
					plain
 | 
			
		||||
 
 | 
			
		||||
@@ -1,102 +1,119 @@
 | 
			
		||||
<template>
 | 
			
		||||
  <div id="analysischartLine" style="width: 100%;height: 100%;"></div>
 | 
			
		||||
	<div
 | 
			
		||||
		id="analysischartLine"
 | 
			
		||||
		style="width: 100%"
 | 
			
		||||
		:style="{ height: chartHeight + 'px' }"></div>
 | 
			
		||||
</template>
 | 
			
		||||
<script>
 | 
			
		||||
import * as echarts from 'echarts'
 | 
			
		||||
import resize from '@/utils/chartMixins/resize'
 | 
			
		||||
import * as echarts from 'echarts';
 | 
			
		||||
import resize from '@/utils/chartMixins/resize';
 | 
			
		||||
export default {
 | 
			
		||||
  name: "LineChart",
 | 
			
		||||
  mixins: [resize],
 | 
			
		||||
  data() {
 | 
			
		||||
    return {
 | 
			
		||||
      chartDom: '',
 | 
			
		||||
      chart: '',
 | 
			
		||||
      chartHeight: this.tableHeight(214) - 70
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
  props: {
 | 
			
		||||
    chartData: {
 | 
			
		||||
      type: Array,
 | 
			
		||||
      required: true,
 | 
			
		||||
      default: () => {
 | 
			
		||||
        return []
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
  watch: {
 | 
			
		||||
    chartData: function () {
 | 
			
		||||
      this.getChart()
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
  mounted() {
 | 
			
		||||
    window.addEventListener('resize', () => {
 | 
			
		||||
      this.chartHeight = this.tableHeight(214) - 70
 | 
			
		||||
    })
 | 
			
		||||
  },
 | 
			
		||||
  methods: {
 | 
			
		||||
    getChart() {
 | 
			
		||||
      if (
 | 
			
		||||
        this.chart !== null &&
 | 
			
		||||
        this.chart !== '' &&
 | 
			
		||||
        this.chart !== undefined
 | 
			
		||||
      ) {
 | 
			
		||||
        this.chart.dispose() // 页面多次刷新会出现警告,Dom已经初始化了一个实例,这是销毁实例
 | 
			
		||||
      }
 | 
			
		||||
      this.chartDom = document.getElementById('analysischartLine')
 | 
			
		||||
      this.chart = echarts.init(this.chartDom)
 | 
			
		||||
      if (this.chartData.length === 0) {
 | 
			
		||||
        return false
 | 
			
		||||
      }
 | 
			
		||||
      let xData = []
 | 
			
		||||
      let arr = this.chartData[0].type
 | 
			
		||||
      let keys = Object.keys(this.chartData[0])
 | 
			
		||||
      let yData = []
 | 
			
		||||
      for (let j = 0; j < arr.length; j++) {
 | 
			
		||||
        for (let k = 0; k < keys.length; k++) {
 | 
			
		||||
          if (keys[k].indexOf(arr[j] + '_上年同期') > -1 || keys[k].indexOf(arr[j] + '_能源消耗') > -1) {
 | 
			
		||||
            let obj = {
 | 
			
		||||
              name: '',
 | 
			
		||||
              type: 'line',
 | 
			
		||||
              data: []
 | 
			
		||||
            }
 | 
			
		||||
            obj.name = keys[k]
 | 
			
		||||
            yData.push(obj)
 | 
			
		||||
          }
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
      for (let i = 0; i < this.chartData.length; i++) {
 | 
			
		||||
        xData.push(this.chartData[i].time)
 | 
			
		||||
        for (let p = 0; p < yData.length; p++) {
 | 
			
		||||
          yData[p].data.push(this.chartData[i][yData[p].name])
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
      var option = {
 | 
			
		||||
        color: ['#FFDC94', '#8EF0AB', '#63BDFF', '#288AFF', '#7164FF', '#FF6860', '#FF9747', '#B0EB42', '#D680FF', '#0043D2'],
 | 
			
		||||
        legend: {
 | 
			
		||||
          data: keys,
 | 
			
		||||
          right: '1%'
 | 
			
		||||
        },
 | 
			
		||||
        tooltip: {
 | 
			
		||||
          trigger: 'axis'
 | 
			
		||||
        },
 | 
			
		||||
        grid: {
 | 
			
		||||
          left: '1%',
 | 
			
		||||
          right: '1%',
 | 
			
		||||
          bottom: '3%',
 | 
			
		||||
          containLabel: true
 | 
			
		||||
        },
 | 
			
		||||
        xAxis: {
 | 
			
		||||
          type: 'category',
 | 
			
		||||
          data: xData
 | 
			
		||||
        },
 | 
			
		||||
        yAxis: {
 | 
			
		||||
          type: 'value'
 | 
			
		||||
        },
 | 
			
		||||
        series: yData
 | 
			
		||||
      };
 | 
			
		||||
	name: 'LineChart',
 | 
			
		||||
	mixins: [resize],
 | 
			
		||||
	data() {
 | 
			
		||||
		return {
 | 
			
		||||
			chartDom: '',
 | 
			
		||||
			chart: '',
 | 
			
		||||
			chartHeight: this.tableHeight(250) / 2,
 | 
			
		||||
		};
 | 
			
		||||
	},
 | 
			
		||||
	props: {
 | 
			
		||||
		chartData: {
 | 
			
		||||
			type: Array,
 | 
			
		||||
			required: true,
 | 
			
		||||
			default: () => {
 | 
			
		||||
				return [];
 | 
			
		||||
			},
 | 
			
		||||
		},
 | 
			
		||||
	},
 | 
			
		||||
	watch: {
 | 
			
		||||
		chartData: function () {
 | 
			
		||||
			this.getChart();
 | 
			
		||||
		},
 | 
			
		||||
	},
 | 
			
		||||
	mounted() {
 | 
			
		||||
		window.addEventListener('resize', () => {
 | 
			
		||||
			this.chartHeight = this.tableHeight(250) / 2;
 | 
			
		||||
		});
 | 
			
		||||
	},
 | 
			
		||||
	methods: {
 | 
			
		||||
		getChart() {
 | 
			
		||||
			if (
 | 
			
		||||
				this.chart !== null &&
 | 
			
		||||
				this.chart !== '' &&
 | 
			
		||||
				this.chart !== undefined
 | 
			
		||||
			) {
 | 
			
		||||
				this.chart.dispose(); // 页面多次刷新会出现警告,Dom已经初始化了一个实例,这是销毁实例
 | 
			
		||||
			}
 | 
			
		||||
			this.chartDom = document.getElementById('analysischartLine');
 | 
			
		||||
			this.chart = echarts.init(this.chartDom);
 | 
			
		||||
			if (this.chartData.length === 0) {
 | 
			
		||||
				return false;
 | 
			
		||||
			}
 | 
			
		||||
			let xData = [];
 | 
			
		||||
			let arr = this.chartData[0].type;
 | 
			
		||||
			let keys = Object.keys(this.chartData[0]);
 | 
			
		||||
			let yData = [];
 | 
			
		||||
			for (let j = 0; j < arr.length; j++) {
 | 
			
		||||
				for (let k = 0; k < keys.length; k++) {
 | 
			
		||||
					if (
 | 
			
		||||
						keys[k].indexOf(arr[j] + '_上年同期') > -1 ||
 | 
			
		||||
						keys[k].indexOf(arr[j] + '_能源消耗') > -1
 | 
			
		||||
					) {
 | 
			
		||||
						let obj = {
 | 
			
		||||
							name: '',
 | 
			
		||||
							type: 'line',
 | 
			
		||||
							data: [],
 | 
			
		||||
						};
 | 
			
		||||
						obj.name = keys[k];
 | 
			
		||||
						yData.push(obj);
 | 
			
		||||
					}
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
			for (let i = 0; i < this.chartData.length; i++) {
 | 
			
		||||
				xData.push(this.chartData[i].time);
 | 
			
		||||
				for (let p = 0; p < yData.length; p++) {
 | 
			
		||||
					yData[p].data.push(this.chartData[i][yData[p].name]);
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
			var option = {
 | 
			
		||||
				color: [
 | 
			
		||||
					'#FFDC94',
 | 
			
		||||
					'#8EF0AB',
 | 
			
		||||
					'#63BDFF',
 | 
			
		||||
					'#288AFF',
 | 
			
		||||
					'#7164FF',
 | 
			
		||||
					'#FF6860',
 | 
			
		||||
					'#FF9747',
 | 
			
		||||
					'#B0EB42',
 | 
			
		||||
					'#D680FF',
 | 
			
		||||
					'#0043D2',
 | 
			
		||||
				],
 | 
			
		||||
				legend: {
 | 
			
		||||
					data: keys,
 | 
			
		||||
					right: '1%',
 | 
			
		||||
				},
 | 
			
		||||
				tooltip: {
 | 
			
		||||
					trigger: 'axis',
 | 
			
		||||
				},
 | 
			
		||||
				grid: {
 | 
			
		||||
					left: '1%',
 | 
			
		||||
					right: '1%',
 | 
			
		||||
					bottom: '3%',
 | 
			
		||||
					containLabel: true,
 | 
			
		||||
				},
 | 
			
		||||
				xAxis: {
 | 
			
		||||
					type: 'category',
 | 
			
		||||
					data: xData,
 | 
			
		||||
				},
 | 
			
		||||
				yAxis: {
 | 
			
		||||
					type: 'value',
 | 
			
		||||
				},
 | 
			
		||||
				series: yData,
 | 
			
		||||
			};
 | 
			
		||||
 | 
			
		||||
      option && this.chart.setOption(option);
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
			option && this.chart.setOption(option);
 | 
			
		||||
		},
 | 
			
		||||
	},
 | 
			
		||||
};
 | 
			
		||||
</script>
 | 
			
		||||
@@ -69,10 +69,13 @@
 | 
			
		||||
			</el-button>
 | 
			
		||||
		</el-form-item>
 | 
			
		||||
		<el-form-item>
 | 
			
		||||
			<span class="separateStyle"></span>
 | 
			
		||||
			<span
 | 
			
		||||
				class="separateStyle"
 | 
			
		||||
				v-hasPermi="['analysis:yoy-analysis:export']"></span>
 | 
			
		||||
		</el-form-item>
 | 
			
		||||
		<el-form-item>
 | 
			
		||||
			<el-button
 | 
			
		||||
				v-hasPermi="['analysis:yoy-analysis:export']"
 | 
			
		||||
				type="primary"
 | 
			
		||||
				size="small"
 | 
			
		||||
				@click="exportData"
 | 
			
		||||
 
 | 
			
		||||
@@ -1,143 +1,153 @@
 | 
			
		||||
<template>
 | 
			
		||||
  <div class="app-container">
 | 
			
		||||
    <!-- 搜索工作栏 -->
 | 
			
		||||
    <search-area @submit="getList" @exportD="exportData"/>
 | 
			
		||||
    <div v-show='chartData.length'>
 | 
			
		||||
      <div class="chartTitle">同比分析图</div>
 | 
			
		||||
      <div style='width: 100%;height: 400px;'>
 | 
			
		||||
        <line-chart ref="analysisLineChart" :chartData="chartData"/>
 | 
			
		||||
      </div>
 | 
			
		||||
      <!-- 表格 -->
 | 
			
		||||
      <base-table
 | 
			
		||||
        :table-props="tableProps"
 | 
			
		||||
        :table-data="list"
 | 
			
		||||
        :max-height="tableH"
 | 
			
		||||
        class="yoy-out-table"
 | 
			
		||||
      />
 | 
			
		||||
    </div>
 | 
			
		||||
    <!-- 没有数据 -->
 | 
			
		||||
    <div class="no-data-bg" v-show='!chartData.length'></div>
 | 
			
		||||
  </div>
 | 
			
		||||
	<div class="app-container">
 | 
			
		||||
		<!-- 搜索工作栏 -->
 | 
			
		||||
		<search-area
 | 
			
		||||
			@submit="getList"
 | 
			
		||||
			@exportD="exportData" />
 | 
			
		||||
		<div v-show="chartData.length">
 | 
			
		||||
			<div class="chartTitle">同比分析图</div>
 | 
			
		||||
			<div style="width: 100%">
 | 
			
		||||
				<line-chart
 | 
			
		||||
					ref="analysisLineChart"
 | 
			
		||||
					:chartData="chartData" />
 | 
			
		||||
			</div>
 | 
			
		||||
			<!-- 表格 -->
 | 
			
		||||
			<base-table
 | 
			
		||||
				:table-props="tableProps"
 | 
			
		||||
				:table-data="list"
 | 
			
		||||
				:max-height="tableH"
 | 
			
		||||
				class="yoy-out-table" />
 | 
			
		||||
		</div>
 | 
			
		||||
		<!-- 没有数据 -->
 | 
			
		||||
		<div
 | 
			
		||||
			class="no-data-bg"
 | 
			
		||||
			v-show="!chartData.length"></div>
 | 
			
		||||
	</div>
 | 
			
		||||
</template>
 | 
			
		||||
<script>
 | 
			
		||||
import { getYoy } from "@/api/analysis/energyAnalysis"
 | 
			
		||||
import subRate from "./components/subRate.vue"
 | 
			
		||||
import SearchArea from "./components/searchArea"
 | 
			
		||||
import LineChart from "./components/lineChart"
 | 
			
		||||
import FileSaver from "file-saver"
 | 
			
		||||
import * as XLSX from 'xlsx/xlsx.mjs'
 | 
			
		||||
import { getYoy } from '@/api/analysis/energyAnalysis';
 | 
			
		||||
import subRate from './components/subRate.vue';
 | 
			
		||||
import SearchArea from './components/searchArea';
 | 
			
		||||
import LineChart from './components/lineChart';
 | 
			
		||||
import FileSaver from 'file-saver';
 | 
			
		||||
import * as XLSX from 'xlsx/xlsx.mjs';
 | 
			
		||||
export default {
 | 
			
		||||
  name: 'YoyAnalysis',
 | 
			
		||||
  components: { SearchArea, LineChart },
 | 
			
		||||
  data() {
 | 
			
		||||
    return {
 | 
			
		||||
      chartData: [],
 | 
			
		||||
      tableProps: [],
 | 
			
		||||
      list: [],
 | 
			
		||||
      tableH: this.tableHeight(640)
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
  mounted() {
 | 
			
		||||
    window.addEventListener('resize', () => {
 | 
			
		||||
      this.tableH = this.tableHeight(640)
 | 
			
		||||
    })
 | 
			
		||||
  },
 | 
			
		||||
  methods: {
 | 
			
		||||
    getList(params) {
 | 
			
		||||
      getYoy({ ...params }).then((res) => {
 | 
			
		||||
        if (res.code === 0 && res.data) {
 | 
			
		||||
          this.getTableList(res.data)
 | 
			
		||||
        } else {
 | 
			
		||||
          this.chartData = []
 | 
			
		||||
          this.list = []
 | 
			
		||||
        }
 | 
			
		||||
      })
 | 
			
		||||
    },
 | 
			
		||||
    getTableList(arr) {
 | 
			
		||||
      let data = arr.data
 | 
			
		||||
      let nameData = arr.nameData
 | 
			
		||||
      let tempX = []
 | 
			
		||||
      data[0].data.map((item) => {
 | 
			
		||||
        let obj = {}
 | 
			
		||||
        obj.prop = item.dynamicName
 | 
			
		||||
        obj.label = item.dynamicName
 | 
			
		||||
        obj.id = item.id
 | 
			
		||||
        obj.children = []
 | 
			
		||||
        tempX.push(obj)
 | 
			
		||||
      })
 | 
			
		||||
      for (let i = 0; i < nameData.length; i++) {
 | 
			
		||||
        for (let j = 0; j < tempX.length; j++) {
 | 
			
		||||
          if (tempX[j].id === nameData[i].parentId) {
 | 
			
		||||
            let obj = {}
 | 
			
		||||
            obj.prop = tempX[j].prop + '_' + nameData[i].name
 | 
			
		||||
            obj.label = nameData[i].name
 | 
			
		||||
            if (obj.label.indexOf('同比')!= -1) {
 | 
			
		||||
              obj.subcomponent = subRate
 | 
			
		||||
            }
 | 
			
		||||
            tempX[j].children.push(obj)
 | 
			
		||||
          }
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
      this.tableProps = [{prop: 'time',label: '时间'}].concat(tempX)
 | 
			
		||||
      console.log(this.tableProps)
 | 
			
		||||
      // 数据
 | 
			
		||||
      this.list = []
 | 
			
		||||
      for (let k = 0; k < data.length; k++) {
 | 
			
		||||
        let obj = {}
 | 
			
		||||
        obj.time = data[k].time
 | 
			
		||||
        let arr1 = data[k].data
 | 
			
		||||
        obj.type = []
 | 
			
		||||
        for (let q = 0; q < arr1.length; q++) {
 | 
			
		||||
          let name = arr1[q].dynamicName
 | 
			
		||||
          obj.type.push(name)
 | 
			
		||||
          let arr2 = arr1[q].children
 | 
			
		||||
          for (let p = 0; p < arr2.length; p++) {
 | 
			
		||||
            let prop = name + '_' + arr2[p].dynamicName
 | 
			
		||||
            obj[prop] = arr2[p].dynamicValue
 | 
			
		||||
          }
 | 
			
		||||
        }
 | 
			
		||||
        this.list.push(obj)
 | 
			
		||||
      }
 | 
			
		||||
      this.chartData = this.list
 | 
			
		||||
    },
 | 
			
		||||
    exportData(val) {
 | 
			
		||||
      if (this.list.length > 0) {
 | 
			
		||||
        var wb = XLSX.utils.table_to_book(document.querySelector(".yoy-out-table"))
 | 
			
		||||
        let fileName = val.name + "同比分析.xlsx"
 | 
			
		||||
        var wbout = XLSX.write(wb, {
 | 
			
		||||
            bookType: "xlsx",
 | 
			
		||||
            bookSST: true,
 | 
			
		||||
            type: "array"
 | 
			
		||||
        })
 | 
			
		||||
        try {
 | 
			
		||||
            FileSaver.saveAs(
 | 
			
		||||
            new Blob([wbout], { type: "application/octet-stream" }),
 | 
			
		||||
            fileName
 | 
			
		||||
            )
 | 
			
		||||
        } catch (e) {
 | 
			
		||||
            if (typeof console !== "undefined") console.log(e, wbout);
 | 
			
		||||
        }
 | 
			
		||||
        return wbout
 | 
			
		||||
      } else {
 | 
			
		||||
        this.$modal.msgWarning("暂无数据导出")
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
	name: 'YoyAnalysis',
 | 
			
		||||
	components: { SearchArea, LineChart },
 | 
			
		||||
	data() {
 | 
			
		||||
		return {
 | 
			
		||||
			chartData: [],
 | 
			
		||||
			tableProps: [],
 | 
			
		||||
			list: [],
 | 
			
		||||
			tableH: this.tableHeight(250) / 2,
 | 
			
		||||
		};
 | 
			
		||||
	},
 | 
			
		||||
	mounted() {
 | 
			
		||||
		window.addEventListener('resize', () => {
 | 
			
		||||
			this.tableH = this.tableHeight(250) / 2;
 | 
			
		||||
		});
 | 
			
		||||
	},
 | 
			
		||||
	methods: {
 | 
			
		||||
		getList(params) {
 | 
			
		||||
			getYoy({ ...params }).then((res) => {
 | 
			
		||||
				if (res.code === 0 && res.data) {
 | 
			
		||||
					this.getTableList(res.data);
 | 
			
		||||
				} else {
 | 
			
		||||
					this.chartData = [];
 | 
			
		||||
					this.list = [];
 | 
			
		||||
				}
 | 
			
		||||
			});
 | 
			
		||||
		},
 | 
			
		||||
		getTableList(arr) {
 | 
			
		||||
			let data = arr.data;
 | 
			
		||||
			let nameData = arr.nameData;
 | 
			
		||||
			let tempX = [];
 | 
			
		||||
			data[0].data.map((item) => {
 | 
			
		||||
				let obj = {};
 | 
			
		||||
				obj.prop = item.dynamicName;
 | 
			
		||||
				obj.label = item.dynamicName;
 | 
			
		||||
				obj.id = item.id;
 | 
			
		||||
				obj.children = [];
 | 
			
		||||
				tempX.push(obj);
 | 
			
		||||
			});
 | 
			
		||||
			for (let i = 0; i < nameData.length; i++) {
 | 
			
		||||
				for (let j = 0; j < tempX.length; j++) {
 | 
			
		||||
					if (tempX[j].id === nameData[i].parentId) {
 | 
			
		||||
						let obj = {};
 | 
			
		||||
						obj.prop = tempX[j].prop + '_' + nameData[i].name;
 | 
			
		||||
						obj.label = nameData[i].name;
 | 
			
		||||
						if (obj.label.indexOf('同比') != -1) {
 | 
			
		||||
							obj.subcomponent = subRate;
 | 
			
		||||
						}
 | 
			
		||||
						tempX[j].children.push(obj);
 | 
			
		||||
					}
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
			this.tableProps = [{ prop: 'time', label: '时间' }].concat(tempX);
 | 
			
		||||
			console.log(this.tableProps);
 | 
			
		||||
			// 数据
 | 
			
		||||
			this.list = [];
 | 
			
		||||
			for (let k = 0; k < data.length; k++) {
 | 
			
		||||
				let obj = {};
 | 
			
		||||
				obj.time = data[k].time;
 | 
			
		||||
				let arr1 = data[k].data;
 | 
			
		||||
				obj.type = [];
 | 
			
		||||
				for (let q = 0; q < arr1.length; q++) {
 | 
			
		||||
					let name = arr1[q].dynamicName;
 | 
			
		||||
					obj.type.push(name);
 | 
			
		||||
					let arr2 = arr1[q].children;
 | 
			
		||||
					for (let p = 0; p < arr2.length; p++) {
 | 
			
		||||
						let prop = name + '_' + arr2[p].dynamicName;
 | 
			
		||||
						obj[prop] = arr2[p].dynamicValue;
 | 
			
		||||
					}
 | 
			
		||||
				}
 | 
			
		||||
				this.list.push(obj);
 | 
			
		||||
			}
 | 
			
		||||
			this.chartData = this.list;
 | 
			
		||||
		},
 | 
			
		||||
		exportData(val) {
 | 
			
		||||
			if (this.list.length > 0) {
 | 
			
		||||
				var wb = XLSX.utils.table_to_book(
 | 
			
		||||
					document.querySelector('.yoy-out-table')
 | 
			
		||||
				);
 | 
			
		||||
				let fileName = val.name + '同比分析.xlsx';
 | 
			
		||||
				var wbout = XLSX.write(wb, {
 | 
			
		||||
					bookType: 'xlsx',
 | 
			
		||||
					bookSST: true,
 | 
			
		||||
					type: 'array',
 | 
			
		||||
				});
 | 
			
		||||
				try {
 | 
			
		||||
					FileSaver.saveAs(
 | 
			
		||||
						new Blob([wbout], { type: 'application/octet-stream' }),
 | 
			
		||||
						fileName
 | 
			
		||||
					);
 | 
			
		||||
				} catch (e) {
 | 
			
		||||
					if (typeof console !== 'undefined') console.log(e, wbout);
 | 
			
		||||
				}
 | 
			
		||||
				return wbout;
 | 
			
		||||
			} else {
 | 
			
		||||
				this.$modal.msgWarning('暂无数据导出');
 | 
			
		||||
			}
 | 
			
		||||
		},
 | 
			
		||||
	},
 | 
			
		||||
};
 | 
			
		||||
</script>
 | 
			
		||||
<style lang='scss' scoped>
 | 
			
		||||
.yoy-out-table {
 | 
			
		||||
	margin-top: 20px;
 | 
			
		||||
}
 | 
			
		||||
.chartTitle {
 | 
			
		||||
  font-size: 16px;
 | 
			
		||||
  color: #000;
 | 
			
		||||
	font-size: 16px;
 | 
			
		||||
	color: #000;
 | 
			
		||||
}
 | 
			
		||||
.chartTitle::before {
 | 
			
		||||
  content: '';
 | 
			
		||||
  display: inline-block;
 | 
			
		||||
  width: 4px;
 | 
			
		||||
  height: 18px;
 | 
			
		||||
  background-color: #0B58FF;
 | 
			
		||||
  border-radius: 1px;
 | 
			
		||||
  margin-right: 8px;
 | 
			
		||||
  vertical-align: bottom;
 | 
			
		||||
	content: '';
 | 
			
		||||
	display: inline-block;
 | 
			
		||||
	width: 4px;
 | 
			
		||||
	height: 18px;
 | 
			
		||||
	background-color: #0b58ff;
 | 
			
		||||
	border-radius: 1px;
 | 
			
		||||
	margin-right: 8px;
 | 
			
		||||
	vertical-align: bottom;
 | 
			
		||||
}
 | 
			
		||||
</style>
 | 
			
		||||
@@ -1,197 +1,219 @@
 | 
			
		||||
<template>
 | 
			
		||||
  <div class="app-container">
 | 
			
		||||
 | 
			
		||||
    <!-- 搜索工作栏 -->
 | 
			
		||||
    <search-bar :formConfigs="formConfig" ref="searchBarForm" @headBtnClick="buttonClick" />
 | 
			
		||||
    <!-- 列表 -->
 | 
			
		||||
    <base-table :page="queryParams.pageNo" :limit="queryParams.pageSize" :table-props="tableProps" :table-data="list"
 | 
			
		||||
      :max-height="tableH">
 | 
			
		||||
      <method-btn v-if="tableBtn.length" slot="handleBtn" :width="80" label="操作" :method-list="tableBtn"
 | 
			
		||||
        @clickBtn="handleClick" />
 | 
			
		||||
    </base-table>
 | 
			
		||||
    <pagination :page.sync="queryParams.pageNo" :limit.sync="queryParams.pageSize" :total="total"
 | 
			
		||||
      @pagination="getList" />
 | 
			
		||||
    <!-- 新增 -->
 | 
			
		||||
    <base-dialog :dialogTitle="addOrEditTitle" :dialogVisible="centervisible" @cancel="handleCancel"
 | 
			
		||||
      @confirm="handleConfirm" :before-close="handleCancel">
 | 
			
		||||
      <energy-plc-add ref="energyPlc" @successSubmit="successSubmit" />
 | 
			
		||||
    </base-dialog>
 | 
			
		||||
  </div>
 | 
			
		||||
	<div class="app-container">
 | 
			
		||||
		<!-- 搜索工作栏 -->
 | 
			
		||||
		<search-bar
 | 
			
		||||
			:formConfigs="formConfig"
 | 
			
		||||
			ref="searchBarForm"
 | 
			
		||||
			@headBtnClick="buttonClick" />
 | 
			
		||||
		<!-- 列表 -->
 | 
			
		||||
		<base-table
 | 
			
		||||
			:page="queryParams.pageNo"
 | 
			
		||||
			:limit="queryParams.pageSize"
 | 
			
		||||
			:table-props="tableProps"
 | 
			
		||||
			:table-data="list"
 | 
			
		||||
			:max-height="tableH">
 | 
			
		||||
			<method-btn
 | 
			
		||||
				v-if="tableBtn.length"
 | 
			
		||||
				slot="handleBtn"
 | 
			
		||||
				:width="80"
 | 
			
		||||
				label="操作"
 | 
			
		||||
				:method-list="tableBtn"
 | 
			
		||||
				@clickBtn="handleClick" />
 | 
			
		||||
		</base-table>
 | 
			
		||||
		<pagination
 | 
			
		||||
			:page.sync="queryParams.pageNo"
 | 
			
		||||
			:limit.sync="queryParams.pageSize"
 | 
			
		||||
			:total="total"
 | 
			
		||||
			@pagination="getList" />
 | 
			
		||||
		<!-- 新增 -->
 | 
			
		||||
		<base-dialog
 | 
			
		||||
			:dialogTitle="addOrEditTitle"
 | 
			
		||||
			:dialogVisible="centervisible"
 | 
			
		||||
			@cancel="handleCancel"
 | 
			
		||||
			@confirm="handleConfirm"
 | 
			
		||||
			:before-close="handleCancel">
 | 
			
		||||
			<energy-plc-add
 | 
			
		||||
				ref="energyPlc"
 | 
			
		||||
				@successSubmit="successSubmit" />
 | 
			
		||||
		</base-dialog>
 | 
			
		||||
	</div>
 | 
			
		||||
</template>
 | 
			
		||||
 | 
			
		||||
<script>
 | 
			
		||||
import { getEnergyPlcPage, deleteEnergyPlc } from "@/api/base/energyPlc";
 | 
			
		||||
// import { publicFormatter } from '@/utils/dict'
 | 
			
		||||
import EnergyPlcAdd from './components/energyPlcAdd.vue'
 | 
			
		||||
import { getEnergyPlcPage, deleteEnergyPlc } from '@/api/base/energyPlc';
 | 
			
		||||
import EnergyPlcAdd from './components/energyPlcAdd.vue';
 | 
			
		||||
import tableHeightMixin from '@/mixins/lb/tableHeightMixin';
 | 
			
		||||
const tableProps = [
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'plcTableName',
 | 
			
		||||
    label: '关联表名',
 | 
			
		||||
    showOverflowtooltip: true
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'code',
 | 
			
		||||
    label: '关联表编码',
 | 
			
		||||
    minWidth: 150,
 | 
			
		||||
    showOverflowtooltip: true
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'name',
 | 
			
		||||
    label: '标识名',
 | 
			
		||||
    minWidth: 150,
 | 
			
		||||
    showOverflowtooltip: true
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'enName',
 | 
			
		||||
    label: '英文标识名'
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'collection',
 | 
			
		||||
    label: '是否采集'
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'description',
 | 
			
		||||
    label: '描述',
 | 
			
		||||
    showOverflowtooltip: true
 | 
			
		||||
  }
 | 
			
		||||
]
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'plcTableName',
 | 
			
		||||
		label: '关联表名',
 | 
			
		||||
		showOverflowtooltip: true,
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'code',
 | 
			
		||||
		label: '关联表编码',
 | 
			
		||||
		minWidth: 150,
 | 
			
		||||
		showOverflowtooltip: true,
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'name',
 | 
			
		||||
		label: '标识名',
 | 
			
		||||
		minWidth: 150,
 | 
			
		||||
		showOverflowtooltip: true,
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'enName',
 | 
			
		||||
		label: '英文标识名',
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'collection',
 | 
			
		||||
		label: '是否采集',
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'description',
 | 
			
		||||
		label: '描述',
 | 
			
		||||
		showOverflowtooltip: true,
 | 
			
		||||
	},
 | 
			
		||||
];
 | 
			
		||||
export default {
 | 
			
		||||
  name: "EnergyPlc",
 | 
			
		||||
  components: { EnergyPlcAdd },
 | 
			
		||||
  data() {
 | 
			
		||||
    return {
 | 
			
		||||
      formConfig: [
 | 
			
		||||
        {
 | 
			
		||||
          type: 'input',
 | 
			
		||||
          label: '标识名',
 | 
			
		||||
          placeholder: '标识名',
 | 
			
		||||
          param: 'name'
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          type: 'button',
 | 
			
		||||
          btnName: '查询',
 | 
			
		||||
          name: 'search',
 | 
			
		||||
          color: 'primary'
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          type: 'separate'
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          type: this.$auth.hasPermi('base:energy-plc:create') ? 'button' : '',
 | 
			
		||||
          btnName: '新增',
 | 
			
		||||
          name: 'add',
 | 
			
		||||
          color: 'success',
 | 
			
		||||
          plain: true
 | 
			
		||||
        }
 | 
			
		||||
      ],
 | 
			
		||||
      tableProps,
 | 
			
		||||
      tableBtn: [
 | 
			
		||||
        this.$auth.hasPermi('base:energy-plc:update')
 | 
			
		||||
          ? {
 | 
			
		||||
            type: 'edit',
 | 
			
		||||
            btnName: '编辑'
 | 
			
		||||
          }
 | 
			
		||||
          : undefined,
 | 
			
		||||
        this.$auth.hasPermi('base:energy-plc:delete')
 | 
			
		||||
          ? {
 | 
			
		||||
            type: 'delete',
 | 
			
		||||
            btnName: '删除'
 | 
			
		||||
          }
 | 
			
		||||
          : undefined
 | 
			
		||||
      ].filter((v) => v),
 | 
			
		||||
      tableH: this.tableHeight(260),
 | 
			
		||||
      collectionList: [
 | 
			
		||||
        { value: 0, label: '否' },
 | 
			
		||||
        { value: 1, label: '是' }
 | 
			
		||||
      ],
 | 
			
		||||
      // 总条数
 | 
			
		||||
      total: 0,
 | 
			
		||||
      // 班次基础信息列表
 | 
			
		||||
      list: [],
 | 
			
		||||
      // 弹出层标题
 | 
			
		||||
      addOrEditTitle: "",
 | 
			
		||||
      // 是否显示弹出层
 | 
			
		||||
      centervisible: false,
 | 
			
		||||
      // 查询参数
 | 
			
		||||
      queryParams: {
 | 
			
		||||
        pageNo: 1,
 | 
			
		||||
        pageSize: 20,
 | 
			
		||||
        name: null
 | 
			
		||||
      }
 | 
			
		||||
    };
 | 
			
		||||
  },
 | 
			
		||||
  created() {
 | 
			
		||||
    window.addEventListener('resize', () => {
 | 
			
		||||
      this.tableH = this.tableHeight(260)
 | 
			
		||||
    })
 | 
			
		||||
    this.getList();
 | 
			
		||||
  },
 | 
			
		||||
  methods: {
 | 
			
		||||
    buttonClick(val) {
 | 
			
		||||
      switch (val.btnName) {
 | 
			
		||||
        case 'search':
 | 
			
		||||
          this.queryParams.pageNo = 1;
 | 
			
		||||
          this.queryParams.name = val.name
 | 
			
		||||
          this.getList()
 | 
			
		||||
          break
 | 
			
		||||
        default:
 | 
			
		||||
          this.addOrEditTitle = '新增'
 | 
			
		||||
          this.centervisible = true
 | 
			
		||||
          this.$nextTick(() => {
 | 
			
		||||
            this.$refs.energyPlc.init()
 | 
			
		||||
          })
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    /** 查询列表 */
 | 
			
		||||
    getList() {
 | 
			
		||||
      getEnergyPlcPage(this.queryParams).then(response => {
 | 
			
		||||
        let arr = response.data.list || [];
 | 
			
		||||
        arr && arr.map(item => {
 | 
			
		||||
          this.collectionList.map(i => {
 | 
			
		||||
            if (item.collection === i.value) {
 | 
			
		||||
              item.collection = i.label
 | 
			
		||||
            }
 | 
			
		||||
          })
 | 
			
		||||
        })
 | 
			
		||||
        this.list = arr
 | 
			
		||||
        this.total = response.data.total;
 | 
			
		||||
      });
 | 
			
		||||
    },
 | 
			
		||||
    handleClick(val) {
 | 
			
		||||
      switch (val.type) {
 | 
			
		||||
        case 'edit':
 | 
			
		||||
          this.addOrEditTitle = '编辑'
 | 
			
		||||
          this.$nextTick(() => {
 | 
			
		||||
            this.$refs.energyPlc.init(val.data.id)
 | 
			
		||||
          })
 | 
			
		||||
          this.centervisible = true
 | 
			
		||||
          break
 | 
			
		||||
        default:
 | 
			
		||||
          this.handleDelete(val.data)
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    handleCancel() {
 | 
			
		||||
      this.$refs.energyPlc.formClear()
 | 
			
		||||
      this.centervisible = false
 | 
			
		||||
      this.addOrEditTitle = ''
 | 
			
		||||
    },
 | 
			
		||||
    handleConfirm() {
 | 
			
		||||
      this.$refs.energyPlc.submitForm()
 | 
			
		||||
    },
 | 
			
		||||
    successSubmit() {
 | 
			
		||||
      this.handleCancel()
 | 
			
		||||
      this.getList()
 | 
			
		||||
    },
 | 
			
		||||
    /** 删除按钮操作 */
 | 
			
		||||
    handleDelete(row) {
 | 
			
		||||
      this.$modal.confirm('是否确认删除关联表名为"' + row.name + '"的数据项?').then(function () {
 | 
			
		||||
        return deleteEnergyPlc(row.id);
 | 
			
		||||
      }).then(() => {
 | 
			
		||||
        this.queryParams.pageNo = 1;
 | 
			
		||||
        this.getList();
 | 
			
		||||
        this.$modal.msgSuccess("删除成功");
 | 
			
		||||
      }).catch(() => { });
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
	name: 'EnergyPlc',
 | 
			
		||||
	components: { EnergyPlcAdd },
 | 
			
		||||
	mixins: [tableHeightMixin],
 | 
			
		||||
	data() {
 | 
			
		||||
		return {
 | 
			
		||||
			formConfig: [
 | 
			
		||||
				{
 | 
			
		||||
					type: 'input',
 | 
			
		||||
					label: '标识名',
 | 
			
		||||
					placeholder: '标识名',
 | 
			
		||||
					param: 'name',
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					type: 'button',
 | 
			
		||||
					btnName: '查询',
 | 
			
		||||
					name: 'search',
 | 
			
		||||
					color: 'primary',
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					type: 'separate',
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					type: this.$auth.hasPermi('base:energy-plc:create') ? 'button' : '',
 | 
			
		||||
					btnName: '新增',
 | 
			
		||||
					name: 'add',
 | 
			
		||||
					color: 'success',
 | 
			
		||||
					plain: true,
 | 
			
		||||
				},
 | 
			
		||||
			],
 | 
			
		||||
			tableProps,
 | 
			
		||||
			tableBtn: [
 | 
			
		||||
				this.$auth.hasPermi('base:energy-plc:update')
 | 
			
		||||
					? {
 | 
			
		||||
							type: 'edit',
 | 
			
		||||
							btnName: '编辑',
 | 
			
		||||
					  }
 | 
			
		||||
					: undefined,
 | 
			
		||||
				this.$auth.hasPermi('base:energy-plc:delete')
 | 
			
		||||
					? {
 | 
			
		||||
							type: 'delete',
 | 
			
		||||
							btnName: '删除',
 | 
			
		||||
					  }
 | 
			
		||||
					: undefined,
 | 
			
		||||
			].filter((v) => v),
 | 
			
		||||
			collectionList: [
 | 
			
		||||
				{ value: 0, label: '否' },
 | 
			
		||||
				{ value: 1, label: '是' },
 | 
			
		||||
			],
 | 
			
		||||
			// 总条数
 | 
			
		||||
			total: 0,
 | 
			
		||||
			// 班次基础信息列表
 | 
			
		||||
			list: [],
 | 
			
		||||
			// 弹出层标题
 | 
			
		||||
			addOrEditTitle: '',
 | 
			
		||||
			// 是否显示弹出层
 | 
			
		||||
			centervisible: false,
 | 
			
		||||
			// 查询参数
 | 
			
		||||
			queryParams: {
 | 
			
		||||
				pageNo: 1,
 | 
			
		||||
				pageSize: 20,
 | 
			
		||||
				name: null,
 | 
			
		||||
			},
 | 
			
		||||
		};
 | 
			
		||||
	},
 | 
			
		||||
	created() {
 | 
			
		||||
		this.getList();
 | 
			
		||||
	},
 | 
			
		||||
	methods: {
 | 
			
		||||
		buttonClick(val) {
 | 
			
		||||
			switch (val.btnName) {
 | 
			
		||||
				case 'search':
 | 
			
		||||
					this.queryParams.pageNo = 1;
 | 
			
		||||
					this.queryParams.name = val.name;
 | 
			
		||||
					this.getList();
 | 
			
		||||
					break;
 | 
			
		||||
				default:
 | 
			
		||||
					this.addOrEditTitle = '新增';
 | 
			
		||||
					this.centervisible = true;
 | 
			
		||||
					this.$nextTick(() => {
 | 
			
		||||
						this.$refs.energyPlc.init();
 | 
			
		||||
					});
 | 
			
		||||
			}
 | 
			
		||||
		},
 | 
			
		||||
		/** 查询列表 */
 | 
			
		||||
		getList() {
 | 
			
		||||
			getEnergyPlcPage(this.queryParams).then((response) => {
 | 
			
		||||
				let arr = response.data.list || [];
 | 
			
		||||
				arr &&
 | 
			
		||||
					arr.map((item) => {
 | 
			
		||||
						this.collectionList.map((i) => {
 | 
			
		||||
							if (item.collection === i.value) {
 | 
			
		||||
								item.collection = i.label;
 | 
			
		||||
							}
 | 
			
		||||
						});
 | 
			
		||||
					});
 | 
			
		||||
				this.list = arr;
 | 
			
		||||
				this.total = response.data.total;
 | 
			
		||||
			});
 | 
			
		||||
		},
 | 
			
		||||
		handleClick(val) {
 | 
			
		||||
			switch (val.type) {
 | 
			
		||||
				case 'edit':
 | 
			
		||||
					this.addOrEditTitle = '编辑';
 | 
			
		||||
					this.$nextTick(() => {
 | 
			
		||||
						this.$refs.energyPlc.init(val.data.id);
 | 
			
		||||
					});
 | 
			
		||||
					this.centervisible = true;
 | 
			
		||||
					break;
 | 
			
		||||
				default:
 | 
			
		||||
					this.handleDelete(val.data);
 | 
			
		||||
			}
 | 
			
		||||
		},
 | 
			
		||||
		handleCancel() {
 | 
			
		||||
			this.$refs.energyPlc.formClear();
 | 
			
		||||
			this.centervisible = false;
 | 
			
		||||
			this.addOrEditTitle = '';
 | 
			
		||||
		},
 | 
			
		||||
		handleConfirm() {
 | 
			
		||||
			this.$refs.energyPlc.submitForm();
 | 
			
		||||
		},
 | 
			
		||||
		successSubmit() {
 | 
			
		||||
			this.handleCancel();
 | 
			
		||||
			this.getList();
 | 
			
		||||
		},
 | 
			
		||||
		/** 删除按钮操作 */
 | 
			
		||||
		handleDelete(row) {
 | 
			
		||||
			this.$modal
 | 
			
		||||
				.confirm('是否确认删除关联表名为"' + row.name + '"的数据项?')
 | 
			
		||||
				.then(function () {
 | 
			
		||||
					return deleteEnergyPlc(row.id);
 | 
			
		||||
				})
 | 
			
		||||
				.then(() => {
 | 
			
		||||
					this.queryParams.pageNo = 1;
 | 
			
		||||
					this.getList();
 | 
			
		||||
					this.$modal.msgSuccess('删除成功');
 | 
			
		||||
				})
 | 
			
		||||
				.catch(() => {});
 | 
			
		||||
		},
 | 
			
		||||
	},
 | 
			
		||||
};
 | 
			
		||||
</script>
 | 
			
		||||
 
 | 
			
		||||
@@ -1,226 +1,258 @@
 | 
			
		||||
<template>
 | 
			
		||||
  <div>
 | 
			
		||||
    <el-drawer :title="drawerTitle" :visible.sync="visible" size="70%" @close='closeD' :show-close='false'>
 | 
			
		||||
      <div class="box">
 | 
			
		||||
        <el-form :inline="true">
 | 
			
		||||
          <el-form-item label="关联表名">
 | 
			
		||||
            <el-input v-model="plcTableName" size='small' readonly></el-input>
 | 
			
		||||
          </el-form-item>
 | 
			
		||||
          <el-form-item label="对象">
 | 
			
		||||
            <el-input v-model="objName" size='small' readonly></el-input>
 | 
			
		||||
          </el-form-item>
 | 
			
		||||
          <el-form-item v-if="showBtn">
 | 
			
		||||
            <el-button type="success" size='small' plain @click="addNew">新增</el-button>
 | 
			
		||||
          </el-form-item>
 | 
			
		||||
        </el-form>
 | 
			
		||||
        <base-table
 | 
			
		||||
          :page="queryParams.pageNo"
 | 
			
		||||
          :limit="queryParams.pageSize"
 | 
			
		||||
          :table-props="tableProps"
 | 
			
		||||
          :table-data="tableData"
 | 
			
		||||
          :max-height="tableH"
 | 
			
		||||
        >
 | 
			
		||||
          <method-btn
 | 
			
		||||
            v-if="tableBtn.length"
 | 
			
		||||
            slot="handleBtn"
 | 
			
		||||
            :width="100"
 | 
			
		||||
            label="操作"
 | 
			
		||||
            :method-list="tableBtn"
 | 
			
		||||
            @clickBtn="handleClick"
 | 
			
		||||
          />
 | 
			
		||||
        </base-table>
 | 
			
		||||
        <pagination
 | 
			
		||||
          :page.sync="queryParams.pageNo"
 | 
			
		||||
          :limit.sync="queryParams.pageSize"
 | 
			
		||||
          :total="total"
 | 
			
		||||
          @pagination="getList"
 | 
			
		||||
        />
 | 
			
		||||
      </div>
 | 
			
		||||
    </el-drawer>
 | 
			
		||||
    <!-- 新增 -->
 | 
			
		||||
    <base-dialog
 | 
			
		||||
      :dialogTitle="addOrEditTitle"
 | 
			
		||||
      :dialogVisible="centervisible"
 | 
			
		||||
      @cancel="handleCancel"
 | 
			
		||||
      @confirm="handleConfirm"
 | 
			
		||||
      :before-close="handleCancel"
 | 
			
		||||
    >
 | 
			
		||||
      <energy-plc-param-add ref="energyPlcParam" @successSubmit="successSubmit" />
 | 
			
		||||
    </base-dialog>
 | 
			
		||||
  </div>
 | 
			
		||||
	<div>
 | 
			
		||||
		<el-drawer
 | 
			
		||||
			:title="drawerTitle"
 | 
			
		||||
			:visible.sync="visible"
 | 
			
		||||
			size="70%"
 | 
			
		||||
			@close="closeD"
 | 
			
		||||
			:show-close="false">
 | 
			
		||||
			<div class="box">
 | 
			
		||||
				<el-form :inline="true">
 | 
			
		||||
					<el-form-item label="关联表名">
 | 
			
		||||
						<el-input
 | 
			
		||||
							v-model="plcTableName"
 | 
			
		||||
							size="small"
 | 
			
		||||
							readonly
 | 
			
		||||
							style="width: 250px"></el-input>
 | 
			
		||||
					</el-form-item>
 | 
			
		||||
					<el-form-item label="对象">
 | 
			
		||||
						<el-input
 | 
			
		||||
							v-model="objName"
 | 
			
		||||
							size="small"
 | 
			
		||||
							readonly
 | 
			
		||||
							style="width: 250px"></el-input>
 | 
			
		||||
					</el-form-item>
 | 
			
		||||
					<el-form-item v-if="showBtn">
 | 
			
		||||
						<el-button
 | 
			
		||||
							type="success"
 | 
			
		||||
							size="small"
 | 
			
		||||
							plain
 | 
			
		||||
							@click="addNew">
 | 
			
		||||
							新增
 | 
			
		||||
						</el-button>
 | 
			
		||||
					</el-form-item>
 | 
			
		||||
				</el-form>
 | 
			
		||||
				<base-table
 | 
			
		||||
					:page="queryParams.pageNo"
 | 
			
		||||
					:limit="queryParams.pageSize"
 | 
			
		||||
					:table-props="tableProps"
 | 
			
		||||
					:table-data="tableData"
 | 
			
		||||
					:max-height="tableH">
 | 
			
		||||
					<method-btn
 | 
			
		||||
						v-if="tableBtn.length"
 | 
			
		||||
						slot="handleBtn"
 | 
			
		||||
						:width="100"
 | 
			
		||||
						label="操作"
 | 
			
		||||
						:method-list="tableBtn"
 | 
			
		||||
						@clickBtn="handleClick" />
 | 
			
		||||
				</base-table>
 | 
			
		||||
				<pagination
 | 
			
		||||
					:page.sync="queryParams.pageNo"
 | 
			
		||||
					:limit.sync="queryParams.pageSize"
 | 
			
		||||
					:total="total"
 | 
			
		||||
					@pagination="getList" />
 | 
			
		||||
			</div>
 | 
			
		||||
		</el-drawer>
 | 
			
		||||
		<!-- 新增 -->
 | 
			
		||||
		<base-dialog
 | 
			
		||||
			:dialogTitle="addOrEditTitle"
 | 
			
		||||
			:dialogVisible="centervisible"
 | 
			
		||||
			@cancel="handleCancel"
 | 
			
		||||
			@confirm="handleConfirm"
 | 
			
		||||
			:before-close="handleCancel">
 | 
			
		||||
			<energy-plc-param-add
 | 
			
		||||
				ref="energyPlcParam"
 | 
			
		||||
				@successSubmit="successSubmit" />
 | 
			
		||||
		</base-dialog>
 | 
			
		||||
	</div>
 | 
			
		||||
</template>
 | 
			
		||||
<script>
 | 
			
		||||
import { getEnergyPlcParamPage, deleteEnergyPlcParam } from '@/api/base/energyPlcParam'
 | 
			
		||||
import EnergyPlcParamAdd from './energyPlcParamAdd'
 | 
			
		||||
import { publicFormatter } from '@/utils/dict'
 | 
			
		||||
import {
 | 
			
		||||
	getEnergyPlcParamPage,
 | 
			
		||||
	deleteEnergyPlcParam,
 | 
			
		||||
} from '@/api/base/energyPlcParam';
 | 
			
		||||
import EnergyPlcParamAdd from './energyPlcParamAdd';
 | 
			
		||||
import { publicFormatter } from '@/utils/dict';
 | 
			
		||||
const tableProps = [
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'typeId',
 | 
			
		||||
    label: '能源类型'
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'plcParamName',
 | 
			
		||||
    label: '参数列名'
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'name',
 | 
			
		||||
    label: '参数名称'
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'unit',
 | 
			
		||||
    label: '单位',
 | 
			
		||||
    filter: publicFormatter('energy_unit')
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'collection',
 | 
			
		||||
    label: '是否采集'
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'description',
 | 
			
		||||
    label: '描述'
 | 
			
		||||
  }
 | 
			
		||||
]
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'typeId',
 | 
			
		||||
		label: '能源类型',
 | 
			
		||||
		filter: publicFormatter('energy_type'),
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'plcParamName',
 | 
			
		||||
		label: '参数列名',
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'name',
 | 
			
		||||
		label: '参数名称',
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'unit',
 | 
			
		||||
		label: '单位',
 | 
			
		||||
		filter: publicFormatter('unit_dict'),
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'collection',
 | 
			
		||||
		label: '是否采集',
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'description',
 | 
			
		||||
		label: '描述',
 | 
			
		||||
	},
 | 
			
		||||
];
 | 
			
		||||
export default {
 | 
			
		||||
  name: 'EnergyPlcParam',
 | 
			
		||||
  props: {
 | 
			
		||||
    energyTypeList: {
 | 
			
		||||
      type: Array,
 | 
			
		||||
      required: true,
 | 
			
		||||
      default: () => {
 | 
			
		||||
        return []
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
  data() {
 | 
			
		||||
    return {
 | 
			
		||||
      visible: false,
 | 
			
		||||
      drawerTitle: '',
 | 
			
		||||
      tableProps,
 | 
			
		||||
      tableData: [],
 | 
			
		||||
      tableBtn: [],
 | 
			
		||||
      tableH: this.tableHeight(115),
 | 
			
		||||
      total: 0,
 | 
			
		||||
      queryParams: {
 | 
			
		||||
        pageNo: 1,
 | 
			
		||||
        pageSize: 30,
 | 
			
		||||
        connectId: null
 | 
			
		||||
      },
 | 
			
		||||
      plcTableName: '',
 | 
			
		||||
      objName: '',
 | 
			
		||||
      // 弹出层标题
 | 
			
		||||
      addOrEditTitle: "",
 | 
			
		||||
      // 是否显示弹出层
 | 
			
		||||
      centervisible: false,
 | 
			
		||||
      collectionList: [
 | 
			
		||||
        {value: 0,label: '否'},
 | 
			
		||||
        {value: 1,label: '是'}
 | 
			
		||||
      ],
 | 
			
		||||
      showBtn: true
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
  components: { EnergyPlcParamAdd },
 | 
			
		||||
  created() {
 | 
			
		||||
    window.addEventListener('resize', () => {
 | 
			
		||||
      this.tableH = this.tableHeight(115)
 | 
			
		||||
    })
 | 
			
		||||
  },
 | 
			
		||||
  methods: {
 | 
			
		||||
    init(data,title) {
 | 
			
		||||
      this.visible = true
 | 
			
		||||
      this.queryParams.connectId = data.id
 | 
			
		||||
      this.plcTableName = data.plcTableName
 | 
			
		||||
      this.objName = data.objName
 | 
			
		||||
      this.getList()
 | 
			
		||||
      if (title === 'detail') {
 | 
			
		||||
        this.drawerTitle = '查看参数'
 | 
			
		||||
        this.showBtn = false
 | 
			
		||||
        this.tableBtn = []
 | 
			
		||||
      } else {
 | 
			
		||||
        this.drawerTitle = '参数绑定'
 | 
			
		||||
        this.showBtn = true
 | 
			
		||||
        this.tableBtn = [
 | 
			
		||||
          {
 | 
			
		||||
            type: 'edit',
 | 
			
		||||
            btnName: '编辑'
 | 
			
		||||
          },
 | 
			
		||||
          {
 | 
			
		||||
            type: 'delete',
 | 
			
		||||
            btnName: '删除'
 | 
			
		||||
          }
 | 
			
		||||
        ]
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    getList() {
 | 
			
		||||
      getEnergyPlcParamPage({...this.queryParams}).then((res) => {
 | 
			
		||||
        let arr = res.data.list || []
 | 
			
		||||
        arr&&arr.map(item => {
 | 
			
		||||
          this.collectionList.map(i => {
 | 
			
		||||
            if (item.collection === i.value) {
 | 
			
		||||
              item.collection = i.label
 | 
			
		||||
            }
 | 
			
		||||
          })
 | 
			
		||||
          this.energyTypeList.map(j => {
 | 
			
		||||
            if (item.typeId === j.id) {
 | 
			
		||||
              item.typeId = j.name
 | 
			
		||||
            }
 | 
			
		||||
          })
 | 
			
		||||
        })
 | 
			
		||||
        this.tableData = arr
 | 
			
		||||
        this.total = res.data.total;
 | 
			
		||||
      })
 | 
			
		||||
    },
 | 
			
		||||
    // 新增
 | 
			
		||||
    addNew() {
 | 
			
		||||
      this.addOrEditTitle = '新增'
 | 
			
		||||
      this.centervisible = true
 | 
			
		||||
      this.$nextTick(() => {
 | 
			
		||||
        this.$refs.energyPlcParam.init({'connectId': this.queryParams.connectId, id: ''})
 | 
			
		||||
      })
 | 
			
		||||
    },
 | 
			
		||||
    handleCancel() {
 | 
			
		||||
      this.$refs.energyPlcParam.formClear()
 | 
			
		||||
      this.centervisible = false
 | 
			
		||||
      this.addOrEditTitle = ''
 | 
			
		||||
    },
 | 
			
		||||
    handleConfirm() {
 | 
			
		||||
      this.$refs.energyPlcParam.submitForm()
 | 
			
		||||
    },
 | 
			
		||||
    successSubmit() {
 | 
			
		||||
      this.handleCancel()
 | 
			
		||||
      this.getList()
 | 
			
		||||
    },
 | 
			
		||||
    handleClick(val) {
 | 
			
		||||
      console.log(val)
 | 
			
		||||
      switch (val.type) {
 | 
			
		||||
        case 'edit':
 | 
			
		||||
          this.addOrEditTitle = '编辑'
 | 
			
		||||
          this.centervisible = true
 | 
			
		||||
          this.$nextTick(() => {
 | 
			
		||||
            this.$refs.energyPlcParam.init({'connectId': this.queryParams.connectId, id: val.data.id})
 | 
			
		||||
          })
 | 
			
		||||
          break
 | 
			
		||||
        default:
 | 
			
		||||
          this.handleDelete(val.data)
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    /** 删除按钮操作 */
 | 
			
		||||
    handleDelete(row) {
 | 
			
		||||
      this.$modal.confirm('是否确认删除参数列名为"' + row.plcParamName + '"的数据项?').then(function() {
 | 
			
		||||
          return deleteEnergyPlcParam(row.id);
 | 
			
		||||
        }).then(() => {
 | 
			
		||||
          this.queryParams.pageNo = 1;
 | 
			
		||||
          this.getList();
 | 
			
		||||
          this.$modal.msgSuccess("删除成功");
 | 
			
		||||
        }).catch(() => {});
 | 
			
		||||
    },
 | 
			
		||||
    closeD() {
 | 
			
		||||
      this.$emit('closeDrawer')
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
	name: 'EnergyPlcParam',
 | 
			
		||||
	props: {
 | 
			
		||||
		energyTypeList: {
 | 
			
		||||
			type: Array,
 | 
			
		||||
			required: true,
 | 
			
		||||
			default: () => {
 | 
			
		||||
				return [];
 | 
			
		||||
			},
 | 
			
		||||
		},
 | 
			
		||||
	},
 | 
			
		||||
	data() {
 | 
			
		||||
		return {
 | 
			
		||||
			visible: false,
 | 
			
		||||
			drawerTitle: '',
 | 
			
		||||
			tableProps,
 | 
			
		||||
			tableData: [],
 | 
			
		||||
			tableBtn: [],
 | 
			
		||||
			tableH: this.tableHeight(115),
 | 
			
		||||
			total: 0,
 | 
			
		||||
			queryParams: {
 | 
			
		||||
				pageNo: 1,
 | 
			
		||||
				pageSize: 30,
 | 
			
		||||
				connectId: null,
 | 
			
		||||
			},
 | 
			
		||||
			plcTableName: '',
 | 
			
		||||
			objName: '',
 | 
			
		||||
			// 弹出层标题
 | 
			
		||||
			addOrEditTitle: '',
 | 
			
		||||
			// 是否显示弹出层
 | 
			
		||||
			centervisible: false,
 | 
			
		||||
			collectionList: [
 | 
			
		||||
				{ value: 0, label: '否' },
 | 
			
		||||
				{ value: 1, label: '是' },
 | 
			
		||||
			],
 | 
			
		||||
			showBtn: true,
 | 
			
		||||
		};
 | 
			
		||||
	},
 | 
			
		||||
	components: { EnergyPlcParamAdd },
 | 
			
		||||
	created() {
 | 
			
		||||
		window.addEventListener('resize', () => {
 | 
			
		||||
			this.tableH = this.tableHeight(115);
 | 
			
		||||
		});
 | 
			
		||||
	},
 | 
			
		||||
	methods: {
 | 
			
		||||
		init(data, title) {
 | 
			
		||||
			this.visible = true;
 | 
			
		||||
			this.queryParams.connectId = data.id;
 | 
			
		||||
			this.plcTableName = data.plcTableName;
 | 
			
		||||
			this.objName = data.objName;
 | 
			
		||||
			this.getList();
 | 
			
		||||
			if (title === 'detail') {
 | 
			
		||||
				this.drawerTitle = '查看参数';
 | 
			
		||||
				this.showBtn = false;
 | 
			
		||||
				this.tableBtn = [];
 | 
			
		||||
			} else {
 | 
			
		||||
				this.drawerTitle = '参数绑定';
 | 
			
		||||
				this.showBtn = true;
 | 
			
		||||
				this.tableBtn = [
 | 
			
		||||
					{
 | 
			
		||||
						type: 'edit',
 | 
			
		||||
						btnName: '编辑',
 | 
			
		||||
					},
 | 
			
		||||
					{
 | 
			
		||||
						type: 'delete',
 | 
			
		||||
						btnName: '删除',
 | 
			
		||||
					},
 | 
			
		||||
				];
 | 
			
		||||
			}
 | 
			
		||||
		},
 | 
			
		||||
		getList() {
 | 
			
		||||
			getEnergyPlcParamPage({ ...this.queryParams }).then((res) => {
 | 
			
		||||
				let arr = res.data.list || [];
 | 
			
		||||
				arr &&
 | 
			
		||||
					arr.map((item) => {
 | 
			
		||||
						this.collectionList.map((i) => {
 | 
			
		||||
							if (item.collection === i.value) {
 | 
			
		||||
								item.collection = i.label;
 | 
			
		||||
							}
 | 
			
		||||
						});
 | 
			
		||||
						this.energyTypeList.map((j) => {
 | 
			
		||||
							if (item.typeId === j.id) {
 | 
			
		||||
								item.typeId = j.name;
 | 
			
		||||
							}
 | 
			
		||||
						});
 | 
			
		||||
					});
 | 
			
		||||
				this.tableData = arr;
 | 
			
		||||
				this.total = res.data.total;
 | 
			
		||||
			});
 | 
			
		||||
		},
 | 
			
		||||
		// 新增
 | 
			
		||||
		addNew() {
 | 
			
		||||
			this.addOrEditTitle = '新增';
 | 
			
		||||
			this.centervisible = true;
 | 
			
		||||
			this.$nextTick(() => {
 | 
			
		||||
				this.$refs.energyPlcParam.init({
 | 
			
		||||
					connectId: this.queryParams.connectId,
 | 
			
		||||
					id: '',
 | 
			
		||||
				});
 | 
			
		||||
			});
 | 
			
		||||
		},
 | 
			
		||||
		handleCancel() {
 | 
			
		||||
			this.$refs.energyPlcParam.formClear();
 | 
			
		||||
			this.centervisible = false;
 | 
			
		||||
			this.addOrEditTitle = '';
 | 
			
		||||
		},
 | 
			
		||||
		handleConfirm() {
 | 
			
		||||
			this.$refs.energyPlcParam.submitForm();
 | 
			
		||||
		},
 | 
			
		||||
		successSubmit() {
 | 
			
		||||
			this.handleCancel();
 | 
			
		||||
			this.getList();
 | 
			
		||||
		},
 | 
			
		||||
		handleClick(val) {
 | 
			
		||||
			console.log(val);
 | 
			
		||||
			switch (val.type) {
 | 
			
		||||
				case 'edit':
 | 
			
		||||
					this.addOrEditTitle = '编辑';
 | 
			
		||||
					this.centervisible = true;
 | 
			
		||||
					this.$nextTick(() => {
 | 
			
		||||
						this.$refs.energyPlcParam.init({
 | 
			
		||||
							connectId: this.queryParams.connectId,
 | 
			
		||||
							id: val.data.id,
 | 
			
		||||
						});
 | 
			
		||||
					});
 | 
			
		||||
					break;
 | 
			
		||||
				default:
 | 
			
		||||
					this.handleDelete(val.data);
 | 
			
		||||
			}
 | 
			
		||||
		},
 | 
			
		||||
		/** 删除按钮操作 */
 | 
			
		||||
		handleDelete(row) {
 | 
			
		||||
			this.$modal
 | 
			
		||||
				.confirm('是否确认删除参数列名为"' + row.plcParamName + '"的数据项?')
 | 
			
		||||
				.then(function () {
 | 
			
		||||
					return deleteEnergyPlcParam(row.id);
 | 
			
		||||
				})
 | 
			
		||||
				.then(() => {
 | 
			
		||||
					this.queryParams.pageNo = 1;
 | 
			
		||||
					this.getList();
 | 
			
		||||
					this.$modal.msgSuccess('删除成功');
 | 
			
		||||
				})
 | 
			
		||||
				.catch(() => {});
 | 
			
		||||
		},
 | 
			
		||||
		closeD() {
 | 
			
		||||
			this.$emit('closeDrawer');
 | 
			
		||||
		},
 | 
			
		||||
	},
 | 
			
		||||
};
 | 
			
		||||
</script>
 | 
			
		||||
<style lang="scss" scoped>
 | 
			
		||||
.box {
 | 
			
		||||
  padding: 0 32px;
 | 
			
		||||
	padding: 0 32px;
 | 
			
		||||
}
 | 
			
		||||
</style>
 | 
			
		||||
 
 | 
			
		||||
@@ -1,132 +1,163 @@
 | 
			
		||||
<template>
 | 
			
		||||
  <el-form ref="form" :rules="rules" label-width="100px" :model="form">
 | 
			
		||||
    <el-row>
 | 
			
		||||
      <el-col :span="12">
 | 
			
		||||
        <el-form-item label="能源类型" prop="typeId">
 | 
			
		||||
          <el-select v-model="form.typeId" placeholder="请选择" style="width: 100%;" filterable>
 | 
			
		||||
            <el-option
 | 
			
		||||
              v-for="item in energyListType"
 | 
			
		||||
              :key="item.id"
 | 
			
		||||
              :label="item.name"
 | 
			
		||||
              :value="item.id">
 | 
			
		||||
            </el-option>
 | 
			
		||||
          </el-select>
 | 
			
		||||
        </el-form-item>
 | 
			
		||||
      </el-col>
 | 
			
		||||
      <el-col :span="12">
 | 
			
		||||
        <el-form-item label="参数列名" prop="plcParamName">
 | 
			
		||||
          <el-input v-model="form.plcParamName"></el-input>
 | 
			
		||||
        </el-form-item>
 | 
			
		||||
      </el-col>
 | 
			
		||||
    </el-row>
 | 
			
		||||
    <el-row>
 | 
			
		||||
      <el-col :span="12">
 | 
			
		||||
        <el-form-item label="参数名称" prop="name">
 | 
			
		||||
          <el-input v-model="form.name"></el-input>
 | 
			
		||||
        </el-form-item>
 | 
			
		||||
      </el-col>
 | 
			
		||||
      <el-col :span="12">
 | 
			
		||||
        <el-form-item label="单位" prop="unit">
 | 
			
		||||
          <el-select v-model="form.unit" placeholder="请选择" style="width: 100%;">
 | 
			
		||||
            <el-option
 | 
			
		||||
              v-for="item in getDictDatas(DICT_TYPE.ENERGY_UNIT)"
 | 
			
		||||
              :key="item.value"
 | 
			
		||||
              :label="item.label"
 | 
			
		||||
              :value="item.value">
 | 
			
		||||
            </el-option>
 | 
			
		||||
          </el-select>
 | 
			
		||||
        </el-form-item>
 | 
			
		||||
      </el-col>
 | 
			
		||||
    </el-row>
 | 
			
		||||
    <el-row>
 | 
			
		||||
      <el-col :span="12">
 | 
			
		||||
        <el-form-item label="是否采集" prop="collection">
 | 
			
		||||
          <el-switch v-model="form.collection"></el-switch>
 | 
			
		||||
        </el-form-item>
 | 
			
		||||
      </el-col>
 | 
			
		||||
      <el-col :span="12">
 | 
			
		||||
        <el-form-item label="描述" prop="description">
 | 
			
		||||
          <el-input v-model="form.description"></el-input>
 | 
			
		||||
        </el-form-item>
 | 
			
		||||
      </el-col>
 | 
			
		||||
    </el-row>
 | 
			
		||||
  </el-form>
 | 
			
		||||
	<el-form
 | 
			
		||||
		ref="form"
 | 
			
		||||
		:rules="rules"
 | 
			
		||||
		label-width="100px"
 | 
			
		||||
		:model="form">
 | 
			
		||||
		<el-row>
 | 
			
		||||
			<el-col :span="12">
 | 
			
		||||
				<el-form-item
 | 
			
		||||
					label="能源类型"
 | 
			
		||||
					prop="typeId">
 | 
			
		||||
					<el-select
 | 
			
		||||
						v-model="form.typeId"
 | 
			
		||||
						placeholder="请选择"
 | 
			
		||||
						style="width: 100%"
 | 
			
		||||
						filterable>
 | 
			
		||||
						<el-option
 | 
			
		||||
							v-for="item in energyListType"
 | 
			
		||||
							:key="item.id"
 | 
			
		||||
							:label="item.labelName"
 | 
			
		||||
							:value="item.id"></el-option>
 | 
			
		||||
					</el-select>
 | 
			
		||||
				</el-form-item>
 | 
			
		||||
			</el-col>
 | 
			
		||||
			<el-col :span="12">
 | 
			
		||||
				<el-form-item
 | 
			
		||||
					label="参数列名"
 | 
			
		||||
					prop="plcParamName">
 | 
			
		||||
					<el-input v-model="form.plcParamName"></el-input>
 | 
			
		||||
				</el-form-item>
 | 
			
		||||
			</el-col>
 | 
			
		||||
		</el-row>
 | 
			
		||||
		<el-row>
 | 
			
		||||
			<el-col :span="12">
 | 
			
		||||
				<el-form-item
 | 
			
		||||
					label="参数名称"
 | 
			
		||||
					prop="name">
 | 
			
		||||
					<el-input v-model="form.name"></el-input>
 | 
			
		||||
				</el-form-item>
 | 
			
		||||
			</el-col>
 | 
			
		||||
			<el-col :span="12">
 | 
			
		||||
				<el-form-item
 | 
			
		||||
					label="单位"
 | 
			
		||||
					prop="unit">
 | 
			
		||||
					<el-select
 | 
			
		||||
						v-model="form.unit"
 | 
			
		||||
						placeholder="请选择"
 | 
			
		||||
						style="width: 100%">
 | 
			
		||||
						<el-option
 | 
			
		||||
							v-for="item in getDictDatas(DICT_TYPE.UNIT_DICT)"
 | 
			
		||||
							:key="item.value"
 | 
			
		||||
							:label="item.label"
 | 
			
		||||
							:value="item.value"></el-option>
 | 
			
		||||
					</el-select>
 | 
			
		||||
				</el-form-item>
 | 
			
		||||
			</el-col>
 | 
			
		||||
		</el-row>
 | 
			
		||||
		<el-row>
 | 
			
		||||
			<el-col :span="12">
 | 
			
		||||
				<el-form-item
 | 
			
		||||
					label="是否采集"
 | 
			
		||||
					prop="collection">
 | 
			
		||||
					<el-switch v-model="form.collection"></el-switch>
 | 
			
		||||
				</el-form-item>
 | 
			
		||||
			</el-col>
 | 
			
		||||
			<el-col :span="12">
 | 
			
		||||
				<el-form-item
 | 
			
		||||
					label="描述"
 | 
			
		||||
					prop="description">
 | 
			
		||||
					<el-input v-model="form.description"></el-input>
 | 
			
		||||
				</el-form-item>
 | 
			
		||||
			</el-col>
 | 
			
		||||
		</el-row>
 | 
			
		||||
	</el-form>
 | 
			
		||||
</template>
 | 
			
		||||
<script>
 | 
			
		||||
import { getEnergyPlcParam, updateEnergyPlcParam, createEnergyPlcParam } from '@/api/base/energyPlcParam'
 | 
			
		||||
import { getEnergyTypeListAll } from '@/api/base/energyType'
 | 
			
		||||
import {
 | 
			
		||||
	getEnergyPlcParam,
 | 
			
		||||
	updateEnergyPlcParam,
 | 
			
		||||
	createEnergyPlcParam,
 | 
			
		||||
} from '@/api/base/energyPlcParam';
 | 
			
		||||
import { getEnergyTypeListAll } from '@/api/base/energyType';
 | 
			
		||||
export default {
 | 
			
		||||
  name: 'EnergyPlcParamAdd',
 | 
			
		||||
  data() {
 | 
			
		||||
    return {
 | 
			
		||||
      form: {
 | 
			
		||||
        id: '',
 | 
			
		||||
        typeId: '',
 | 
			
		||||
        plcParamName: '',
 | 
			
		||||
        name: '',
 | 
			
		||||
        unit: '',
 | 
			
		||||
        description: '',
 | 
			
		||||
        collection: true,
 | 
			
		||||
        connectId: ''
 | 
			
		||||
      },
 | 
			
		||||
      energyListType: [],
 | 
			
		||||
      isEdit: false, //是否是编辑
 | 
			
		||||
      rules: {
 | 
			
		||||
        typeId: [{ required: true, message: '能源类型不能为空', trigger: 'change' }],
 | 
			
		||||
        plcParamName: [{ required: true, message: '参数列名不能为空', trigger: 'blur' }],
 | 
			
		||||
        name: [{ required: true, message: '参数名称不能为空', trigger: 'blur' }]
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
  methods: {
 | 
			
		||||
    init(param) {
 | 
			
		||||
      this.form.connectId = param.connectId
 | 
			
		||||
      getEnergyTypeListAll().then((res) => {
 | 
			
		||||
        this.energyListType = res.data || []
 | 
			
		||||
      })
 | 
			
		||||
      if (param.id) {
 | 
			
		||||
        this.isEdit = true
 | 
			
		||||
        this.form.id = param.id
 | 
			
		||||
        getEnergyPlcParam(this.form.id).then((res) => {
 | 
			
		||||
          if (res.code === 0) {
 | 
			
		||||
            this.form = res.data
 | 
			
		||||
            this.form.collection = this.form.collection === 0 ? false : true
 | 
			
		||||
          }
 | 
			
		||||
        })
 | 
			
		||||
      } else {
 | 
			
		||||
        this.isEdit = false
 | 
			
		||||
        this.form.id = ''
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    submitForm() {
 | 
			
		||||
      this.$refs['form'].validate((valid) => {
 | 
			
		||||
        if (valid) {
 | 
			
		||||
          this.form.collection = this.form.collection === false ? 0 : 1
 | 
			
		||||
          if (this.isEdit) {
 | 
			
		||||
            // 编辑
 | 
			
		||||
            updateEnergyPlcParam({...this.form}).then((res) => {
 | 
			
		||||
              if (res.code === 0) {
 | 
			
		||||
                this.$modal.msgSuccess("操作成功");
 | 
			
		||||
                this.$emit('successSubmit')
 | 
			
		||||
              }
 | 
			
		||||
            })
 | 
			
		||||
          } else {
 | 
			
		||||
            createEnergyPlcParam({...this.form}).then((res) => {
 | 
			
		||||
              if (res.code === 0) {
 | 
			
		||||
                this.$modal.msgSuccess("操作成功");
 | 
			
		||||
                this.$emit('successSubmit')
 | 
			
		||||
              }
 | 
			
		||||
            })
 | 
			
		||||
          }
 | 
			
		||||
        } else {
 | 
			
		||||
          return false
 | 
			
		||||
        }
 | 
			
		||||
      })
 | 
			
		||||
    },
 | 
			
		||||
    formClear() {
 | 
			
		||||
      this.$refs.form.resetFields()
 | 
			
		||||
      this.isEdit = false
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
	name: 'EnergyPlcParamAdd',
 | 
			
		||||
	data() {
 | 
			
		||||
		return {
 | 
			
		||||
			form: {
 | 
			
		||||
				id: '',
 | 
			
		||||
				typeId: '',
 | 
			
		||||
				plcParamName: '',
 | 
			
		||||
				name: '',
 | 
			
		||||
				unit: '',
 | 
			
		||||
				description: '',
 | 
			
		||||
				collection: true,
 | 
			
		||||
				connectId: '',
 | 
			
		||||
			},
 | 
			
		||||
			energyListType: [],
 | 
			
		||||
			isEdit: false, //是否是编辑
 | 
			
		||||
			rules: {
 | 
			
		||||
				typeId: [
 | 
			
		||||
					{ required: true, message: '能源类型不能为空', trigger: 'change' },
 | 
			
		||||
				],
 | 
			
		||||
				plcParamName: [
 | 
			
		||||
					{ required: true, message: '参数列名不能为空', trigger: 'blur' },
 | 
			
		||||
				],
 | 
			
		||||
				name: [
 | 
			
		||||
					{ required: true, message: '参数名称不能为空', trigger: 'blur' },
 | 
			
		||||
				],
 | 
			
		||||
			},
 | 
			
		||||
		};
 | 
			
		||||
	},
 | 
			
		||||
	methods: {
 | 
			
		||||
		init(param) {
 | 
			
		||||
			this.form.connectId = param.connectId;
 | 
			
		||||
			getEnergyTypeListAll().then((res) => {
 | 
			
		||||
				this.energyListType = res.data || [];
 | 
			
		||||
			});
 | 
			
		||||
			if (param.id) {
 | 
			
		||||
				this.isEdit = true;
 | 
			
		||||
				this.form.id = param.id;
 | 
			
		||||
				getEnergyPlcParam(this.form.id).then((res) => {
 | 
			
		||||
					if (res.code === 0) {
 | 
			
		||||
						this.form = res.data;
 | 
			
		||||
						this.form.collection = this.form.collection === 0 ? false : true;
 | 
			
		||||
					}
 | 
			
		||||
				});
 | 
			
		||||
			} else {
 | 
			
		||||
				this.isEdit = false;
 | 
			
		||||
				this.form.id = '';
 | 
			
		||||
			}
 | 
			
		||||
		},
 | 
			
		||||
		submitForm() {
 | 
			
		||||
			this.$refs['form'].validate((valid) => {
 | 
			
		||||
				if (valid) {
 | 
			
		||||
					this.form.collection = this.form.collection === false ? 0 : 1;
 | 
			
		||||
					if (this.isEdit) {
 | 
			
		||||
						// 编辑
 | 
			
		||||
						updateEnergyPlcParam({ ...this.form }).then((res) => {
 | 
			
		||||
							if (res.code === 0) {
 | 
			
		||||
								this.$modal.msgSuccess('操作成功');
 | 
			
		||||
								this.$emit('successSubmit');
 | 
			
		||||
							}
 | 
			
		||||
						});
 | 
			
		||||
					} else {
 | 
			
		||||
						createEnergyPlcParam({ ...this.form }).then((res) => {
 | 
			
		||||
							if (res.code === 0) {
 | 
			
		||||
								this.$modal.msgSuccess('操作成功');
 | 
			
		||||
								this.$emit('successSubmit');
 | 
			
		||||
							}
 | 
			
		||||
						});
 | 
			
		||||
					}
 | 
			
		||||
				} else {
 | 
			
		||||
					return false;
 | 
			
		||||
				}
 | 
			
		||||
			});
 | 
			
		||||
		},
 | 
			
		||||
		formClear() {
 | 
			
		||||
			this.$refs.form.resetFields();
 | 
			
		||||
			this.isEdit = false;
 | 
			
		||||
		},
 | 
			
		||||
	},
 | 
			
		||||
};
 | 
			
		||||
</script>
 | 
			
		||||
 
 | 
			
		||||
@@ -57,14 +57,18 @@ import { getTree } from '@/api/analysis/energyAnalysis';
 | 
			
		||||
import { getEnergyTypeListAll } from '@/api/base/energyType';
 | 
			
		||||
import EnergyPlcConnectAdd from './components/energyPlcConnectAdd';
 | 
			
		||||
import EnergyPlcParam from './components/energyPlcParam';
 | 
			
		||||
import tableHeightMixin from '@/mixins/lb/tableHeightMixin';
 | 
			
		||||
const tableProps = [
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'objName',
 | 
			
		||||
		label: '对象',
 | 
			
		||||
		minWidth: 130,
 | 
			
		||||
		showOverflowtooltip: true,
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'objCode',
 | 
			
		||||
		label: '对象编码',
 | 
			
		||||
		minWidth: 150,
 | 
			
		||||
		showOverflowtooltip: true,
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
@@ -86,11 +90,13 @@ const tableProps = [
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'varNum',
 | 
			
		||||
		label: '绑定参数数量',
 | 
			
		||||
		width: 110,
 | 
			
		||||
	},
 | 
			
		||||
];
 | 
			
		||||
export default {
 | 
			
		||||
	name: 'EnergyPlcConnect',
 | 
			
		||||
	components: { EnergyPlcConnectAdd, EnergyPlcParam },
 | 
			
		||||
	mixins: [tableHeightMixin],
 | 
			
		||||
	data() {
 | 
			
		||||
		return {
 | 
			
		||||
			formConfig: [
 | 
			
		||||
@@ -144,7 +150,6 @@ export default {
 | 
			
		||||
					  }
 | 
			
		||||
					: undefined,
 | 
			
		||||
			].filter((v) => v),
 | 
			
		||||
			tableH: this.tableHeight(260),
 | 
			
		||||
			// 总条数
 | 
			
		||||
			total: 0,
 | 
			
		||||
			// 班次基础信息列表
 | 
			
		||||
@@ -165,9 +170,6 @@ export default {
 | 
			
		||||
		};
 | 
			
		||||
	},
 | 
			
		||||
	created() {
 | 
			
		||||
		window.addEventListener('resize', () => {
 | 
			
		||||
			this.tableH = this.tableHeight(260);
 | 
			
		||||
		});
 | 
			
		||||
		this.getList();
 | 
			
		||||
	},
 | 
			
		||||
	mounted() {
 | 
			
		||||
 
 | 
			
		||||
@@ -0,0 +1,139 @@
 | 
			
		||||
<template>
 | 
			
		||||
	<div class="energyQuantityManualAddTable">
 | 
			
		||||
		<el-table
 | 
			
		||||
			:data="renderData"
 | 
			
		||||
			border
 | 
			
		||||
			style="width: 100%"
 | 
			
		||||
			:header-cell-style="{
 | 
			
		||||
				background: '#F2F4F9',
 | 
			
		||||
				color: '#606266',
 | 
			
		||||
			}">
 | 
			
		||||
			<el-table-column
 | 
			
		||||
				prop="tableName"
 | 
			
		||||
				label="表名*">
 | 
			
		||||
				<template slot-scope="scope">
 | 
			
		||||
					<div class="tableInner">
 | 
			
		||||
						<el-select
 | 
			
		||||
							v-model="scope.row.tableName"
 | 
			
		||||
							placeholder="请选择"
 | 
			
		||||
							style="width: 100%"
 | 
			
		||||
							@change="changeSelect(scope.row, 'tableName')">
 | 
			
		||||
							<el-option
 | 
			
		||||
								v-for="item in tableNameList"
 | 
			
		||||
								:key="item.value"
 | 
			
		||||
								:label="item.label"
 | 
			
		||||
								:value="item.value"></el-option>
 | 
			
		||||
						</el-select>
 | 
			
		||||
					</div>
 | 
			
		||||
				</template>
 | 
			
		||||
			</el-table-column>
 | 
			
		||||
			<el-table-column
 | 
			
		||||
				prop="readingQuantity"
 | 
			
		||||
				label="抄表数*">
 | 
			
		||||
				<template slot-scope="scope">
 | 
			
		||||
					<div class="tableInner">
 | 
			
		||||
						<el-input-number
 | 
			
		||||
							v-model="scope.row.readingQuantity"
 | 
			
		||||
							:min="0"
 | 
			
		||||
							:max="999999999"
 | 
			
		||||
							style="width: 100%"
 | 
			
		||||
							:controls="false"
 | 
			
		||||
							@change="changeInput(scope.row, 'readingQuantity')"
 | 
			
		||||
							:precision="2"></el-input-number>
 | 
			
		||||
					</div>
 | 
			
		||||
				</template>
 | 
			
		||||
			</el-table-column>
 | 
			
		||||
		</el-table>
 | 
			
		||||
		<el-button
 | 
			
		||||
			class="addButton"
 | 
			
		||||
			icon="el-icon-plus"
 | 
			
		||||
			@click="emitButtonClick">
 | 
			
		||||
			新增
 | 
			
		||||
		</el-button>
 | 
			
		||||
	</div>
 | 
			
		||||
</template>
 | 
			
		||||
<script>
 | 
			
		||||
export default {
 | 
			
		||||
	name: 'AddTable',
 | 
			
		||||
	props: {
 | 
			
		||||
		tableData: {
 | 
			
		||||
			type: Array,
 | 
			
		||||
			required: true,
 | 
			
		||||
			default: () => {
 | 
			
		||||
				return [];
 | 
			
		||||
			},
 | 
			
		||||
		},
 | 
			
		||||
		tableNameList: {
 | 
			
		||||
			type: Array,
 | 
			
		||||
			required: true,
 | 
			
		||||
			default: () => {
 | 
			
		||||
				return [];
 | 
			
		||||
			},
 | 
			
		||||
		},
 | 
			
		||||
	},
 | 
			
		||||
	data() {
 | 
			
		||||
		return {};
 | 
			
		||||
	},
 | 
			
		||||
	computed: {
 | 
			
		||||
		renderData() {
 | 
			
		||||
			return this.tableData.map((item, index) => {
 | 
			
		||||
				return {
 | 
			
		||||
					...item,
 | 
			
		||||
					_pageIndex: index + 1,
 | 
			
		||||
				};
 | 
			
		||||
			});
 | 
			
		||||
		},
 | 
			
		||||
	},
 | 
			
		||||
	methods: {
 | 
			
		||||
		emitButtonClick() {
 | 
			
		||||
			this.$emit('emitButtonClick');
 | 
			
		||||
		},
 | 
			
		||||
		changeInput(val1, val2) {
 | 
			
		||||
			val1.prop = val2;
 | 
			
		||||
			this.$emit('emitFun', val1);
 | 
			
		||||
		},
 | 
			
		||||
		changeSelect(val1, val2) {
 | 
			
		||||
			val1.prop = val2;
 | 
			
		||||
			this.$emit('emitFun', val1);
 | 
			
		||||
		},
 | 
			
		||||
	},
 | 
			
		||||
};
 | 
			
		||||
</script>
 | 
			
		||||
<style lang='scss' scoped>
 | 
			
		||||
.energyQuantityManualAddTable {
 | 
			
		||||
	.el-table .el-table__cell {
 | 
			
		||||
		padding: 0;
 | 
			
		||||
		height: 35px;
 | 
			
		||||
	}
 | 
			
		||||
	.addButton {
 | 
			
		||||
		width: 100%;
 | 
			
		||||
		height: 35px;
 | 
			
		||||
		border-top: none;
 | 
			
		||||
		color: #0b58ff;
 | 
			
		||||
		border-color: #ebeef5;
 | 
			
		||||
		border-radius: 0;
 | 
			
		||||
	}
 | 
			
		||||
	.addButton:hover {
 | 
			
		||||
		color: #0b58ff;
 | 
			
		||||
		border-color: #ebeef5;
 | 
			
		||||
		background-color: #fff;
 | 
			
		||||
	}
 | 
			
		||||
	.addButton:focus {
 | 
			
		||||
		border-color: #ebeef5;
 | 
			
		||||
		background-color: #fff;
 | 
			
		||||
	}
 | 
			
		||||
	.tableInner .el-input__inner {
 | 
			
		||||
		border: none;
 | 
			
		||||
		padding: 0;
 | 
			
		||||
		height: 33px;
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
</style>
 | 
			
		||||
<style lang='scss'>
 | 
			
		||||
.energyQuantityManualAddTable {
 | 
			
		||||
	.el-table .el-table__cell {
 | 
			
		||||
		padding: 0;
 | 
			
		||||
		height: 35px;
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
</style>
 | 
			
		||||
@@ -1,38 +0,0 @@
 | 
			
		||||
<template>
 | 
			
		||||
  <div class="tableInner">
 | 
			
		||||
    <!-- <el-input v-model="list[itemProp]" @blur="changeInput" /> -->
 | 
			
		||||
    <el-input-number v-model="list[itemProp]" @change="changeInput" :min="0" :max="999999999" style='width: 100%;' :controls='false' :precision='2'></el-input-number>
 | 
			
		||||
  </div>
 | 
			
		||||
</template>
 | 
			
		||||
<script>
 | 
			
		||||
export default {
 | 
			
		||||
  name: 'InputArea',
 | 
			
		||||
  props: {
 | 
			
		||||
    injectData: {
 | 
			
		||||
      type: Object,
 | 
			
		||||
      default: () => ({})
 | 
			
		||||
    },
 | 
			
		||||
    itemProp: {
 | 
			
		||||
      type: String
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
  data() {
 | 
			
		||||
    return {
 | 
			
		||||
      list: this.injectData
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
  methods: {
 | 
			
		||||
    changeInput() {
 | 
			
		||||
      console.log(this.list)
 | 
			
		||||
      this.$emit('emitData', this.list)
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
</script>
 | 
			
		||||
<style scoped>
 | 
			
		||||
.tableInner .el-input__inner {
 | 
			
		||||
  border: none;
 | 
			
		||||
  padding: 0;
 | 
			
		||||
  height: 33px;
 | 
			
		||||
}
 | 
			
		||||
</style>
 | 
			
		||||
@@ -1,44 +0,0 @@
 | 
			
		||||
<template>
 | 
			
		||||
  <div class="tableInner">
 | 
			
		||||
    <el-select v-model="list[itemProp]" placeholder="请选择" style="width: 100%;" @change="changeSelect">
 | 
			
		||||
      <el-option
 | 
			
		||||
        v-for="item in getDictDatas(DICT_TYPE.TABLE_NAME)"
 | 
			
		||||
        :key="item.value"
 | 
			
		||||
        :label="item.label"
 | 
			
		||||
        :value="item.value">
 | 
			
		||||
      </el-option>
 | 
			
		||||
    </el-select>
 | 
			
		||||
  </div>
 | 
			
		||||
</template>
 | 
			
		||||
<script>
 | 
			
		||||
export default {
 | 
			
		||||
  name: 'SelectArea',
 | 
			
		||||
  props: {
 | 
			
		||||
    injectData: {
 | 
			
		||||
      type: Object,
 | 
			
		||||
      default: () => ({})
 | 
			
		||||
    },
 | 
			
		||||
    itemProp: {
 | 
			
		||||
      type: String
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
  data() {
 | 
			
		||||
    return {
 | 
			
		||||
      list: this.injectData
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
  methods: {
 | 
			
		||||
    changeSelect() {
 | 
			
		||||
      console.log(this.list)
 | 
			
		||||
      this.$emit('emitData', this.list)
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
</script>
 | 
			
		||||
<style scoped>
 | 
			
		||||
.tableInner .el-input__inner {
 | 
			
		||||
  border: none;
 | 
			
		||||
  padding: 0;
 | 
			
		||||
  height: 33px;
 | 
			
		||||
}
 | 
			
		||||
</style>
 | 
			
		||||
@@ -1,167 +1,212 @@
 | 
			
		||||
<template>
 | 
			
		||||
  <el-form ref="energyQuantityManualForm" :rules="rules" label-width="90px" :model="form">
 | 
			
		||||
    <el-row :gutter="20">
 | 
			
		||||
      <el-col :span='12'>
 | 
			
		||||
        <el-form-item label="能源类型" prop="energyTypeId">
 | 
			
		||||
          <el-select v-model="form.energyTypeId" placeholder="请选择" style="width: 100%;" filterable>
 | 
			
		||||
            <el-option v-for="item in this.energyTypeList" :key="item.id" :label="item.name" :value="item.id">
 | 
			
		||||
            </el-option>
 | 
			
		||||
          </el-select>
 | 
			
		||||
        </el-form-item>
 | 
			
		||||
      </el-col>
 | 
			
		||||
      <el-col :span='12'>
 | 
			
		||||
        <el-form-item label="抄表日期" prop="recordTime">
 | 
			
		||||
          <el-date-picker v-model="form.recordTime" type="date" format="yyyy-MM-dd" value-format="timestamp"
 | 
			
		||||
            placeholder="选择日期" style="width: 100%;">
 | 
			
		||||
          </el-date-picker>
 | 
			
		||||
        </el-form-item>
 | 
			
		||||
      </el-col>
 | 
			
		||||
    </el-row>
 | 
			
		||||
    <el-row :gutter="20">
 | 
			
		||||
      <el-col :span='24'>
 | 
			
		||||
        <base-table border :table-props="tableProps" :table-data="tableData" :add-button-show="addButtonShow"
 | 
			
		||||
          @emitFun="inputChange" @emitButtonClick="emitButtonClick" />
 | 
			
		||||
      </el-col>
 | 
			
		||||
    </el-row>
 | 
			
		||||
  </el-form>
 | 
			
		||||
	<el-form
 | 
			
		||||
		ref="energyQuantityManualForm"
 | 
			
		||||
		:rules="rules"
 | 
			
		||||
		label-width="90px"
 | 
			
		||||
		:model="form">
 | 
			
		||||
		<el-row :gutter="20">
 | 
			
		||||
			<el-col :span="12">
 | 
			
		||||
				<el-form-item
 | 
			
		||||
					label="能源类型"
 | 
			
		||||
					prop="energyTypeId">
 | 
			
		||||
					<el-select
 | 
			
		||||
						v-model="form.energyTypeId"
 | 
			
		||||
						placeholder="请选择"
 | 
			
		||||
						style="width: 100%"
 | 
			
		||||
						@change="selEnergyType"
 | 
			
		||||
						filterable>
 | 
			
		||||
						<el-option
 | 
			
		||||
							v-for="item in this.energyTypeList"
 | 
			
		||||
							:key="item.id"
 | 
			
		||||
							:label="item.labelName"
 | 
			
		||||
							:value="item.id"></el-option>
 | 
			
		||||
					</el-select>
 | 
			
		||||
				</el-form-item>
 | 
			
		||||
			</el-col>
 | 
			
		||||
			<el-col :span="12">
 | 
			
		||||
				<el-form-item
 | 
			
		||||
					label="抄表日期"
 | 
			
		||||
					prop="recordTime">
 | 
			
		||||
					<el-date-picker
 | 
			
		||||
						v-model="form.recordTime"
 | 
			
		||||
						type="date"
 | 
			
		||||
						format="yyyy-MM-dd"
 | 
			
		||||
						value-format="timestamp"
 | 
			
		||||
						placeholder="选择日期"
 | 
			
		||||
						style="width: 100%"></el-date-picker>
 | 
			
		||||
				</el-form-item>
 | 
			
		||||
			</el-col>
 | 
			
		||||
		</el-row>
 | 
			
		||||
		<el-row :gutter="20">
 | 
			
		||||
			<el-col :span="24">
 | 
			
		||||
				<add-table
 | 
			
		||||
					:table-data="tableData"
 | 
			
		||||
					:table-name-list="tableNameList"
 | 
			
		||||
					@emitFun="inputChange"
 | 
			
		||||
					@emitButtonClick="emitButtonClick" />
 | 
			
		||||
			</el-col>
 | 
			
		||||
		</el-row>
 | 
			
		||||
	</el-form>
 | 
			
		||||
</template>
 | 
			
		||||
<script>
 | 
			
		||||
import { energyQuantityManualCreate, energyQuantityManualUpdate, energyQuantityManualGet } from '@/api/base/energyQuantityManual'
 | 
			
		||||
import moment from 'moment'
 | 
			
		||||
import InputArea from './InputArea'
 | 
			
		||||
import SelectArea from './SelectArea'
 | 
			
		||||
const tableProps = [
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'tableName',
 | 
			
		||||
    label: '表名*',
 | 
			
		||||
    subcomponent: SelectArea
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'readingQuantity',
 | 
			
		||||
    label: '抄表数*',
 | 
			
		||||
    subcomponent: InputArea
 | 
			
		||||
  }
 | 
			
		||||
]
 | 
			
		||||
import {
 | 
			
		||||
	energyQuantityManualCreate,
 | 
			
		||||
	energyQuantityManualUpdate,
 | 
			
		||||
	energyQuantityManualGet,
 | 
			
		||||
} from '@/api/base/energyQuantityManual';
 | 
			
		||||
import moment from 'moment';
 | 
			
		||||
import AddTable from './AddTable';
 | 
			
		||||
import { energyTableGet } from '@/api/base/energyQuantityManual';
 | 
			
		||||
export default {
 | 
			
		||||
  name: 'EnergyQuantityManualAdd',
 | 
			
		||||
  props: {
 | 
			
		||||
    energyTypeList: {
 | 
			
		||||
      type: Array,
 | 
			
		||||
      required: true,
 | 
			
		||||
      default: () => {
 | 
			
		||||
        return []
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
  data() {
 | 
			
		||||
    return {
 | 
			
		||||
      tableProps,
 | 
			
		||||
      tableData: [],
 | 
			
		||||
      addButtonShow: '新增',
 | 
			
		||||
      form: {
 | 
			
		||||
        id: '',
 | 
			
		||||
        energyTypeId: '',
 | 
			
		||||
        unit: '',
 | 
			
		||||
        recordTime: ''
 | 
			
		||||
      },
 | 
			
		||||
      rules: {
 | 
			
		||||
        energyTypeId: [{ required: true, message: '能源类型不能为空', trigger: 'change' }],
 | 
			
		||||
        recordTime: [{ required: true, message: '抄表日期不能为空', trigger: 'change' }]
 | 
			
		||||
      },
 | 
			
		||||
      isEdit: false
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
  methods: {
 | 
			
		||||
    init(params) {
 | 
			
		||||
      this.form.recordTime = moment().valueOf()
 | 
			
		||||
      if (params.type === 'add') {
 | 
			
		||||
        this.isEdit = false
 | 
			
		||||
      } else if (params.type === 'meterReading') {
 | 
			
		||||
        this.isEdit = false
 | 
			
		||||
        this.form.energyTypeId = params.energyTypeId
 | 
			
		||||
        let obj = {}
 | 
			
		||||
        obj.tableName = params.tableName + ''
 | 
			
		||||
        obj.readingQuantity = 0
 | 
			
		||||
        this.tableData.push(obj)
 | 
			
		||||
      } else {
 | 
			
		||||
        this.isEdit = true
 | 
			
		||||
        this.form.id = params.id
 | 
			
		||||
        this.addButtonShow = ''
 | 
			
		||||
        energyQuantityManualGet({ id: this.form.id }).then(res => {
 | 
			
		||||
          if (res.code === 0) {
 | 
			
		||||
            this.form.energyTypeId = res.data.energyTypeId
 | 
			
		||||
            this.form.recordTime = res.data.recordTime ? res.data.recordTime : null
 | 
			
		||||
            let obj = {}
 | 
			
		||||
            obj.tableName = res.data.tableName ? res.data.tableName + '' : ''
 | 
			
		||||
            obj.readingQuantity = res.data.readingQuantity
 | 
			
		||||
            this.tableData.push(obj)
 | 
			
		||||
          }
 | 
			
		||||
        })
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    inputChange(val) {
 | 
			
		||||
      this.tableData[val._pageIndex - 1][val.prop] = val[val.prop]
 | 
			
		||||
    },
 | 
			
		||||
    emitButtonClick() {
 | 
			
		||||
      let obj = {}
 | 
			
		||||
      obj.tableName = ''
 | 
			
		||||
      obj.readingQuantity = 0
 | 
			
		||||
      this.tableData.push(obj)
 | 
			
		||||
    },
 | 
			
		||||
    submitForm() {
 | 
			
		||||
      this.$refs['energyQuantityManualForm'].validate((valid) => {
 | 
			
		||||
        if (valid) {
 | 
			
		||||
          // 校验表格
 | 
			
		||||
          if (this.tableData.length === 0) {
 | 
			
		||||
            this.$modal.msgError("抄表数据不能为空");
 | 
			
		||||
            return false
 | 
			
		||||
          } else {
 | 
			
		||||
            for (let item of this.tableData) {
 | 
			
		||||
              console.log(item)
 | 
			
		||||
              if (!item.tableName || (!item.readingQuantity && item.readingQuantity !== 0)) {
 | 
			
		||||
                this.$modal.msgError("抄表数据有空值,请检查");
 | 
			
		||||
                return false
 | 
			
		||||
              }
 | 
			
		||||
            }
 | 
			
		||||
          }
 | 
			
		||||
          if (this.isEdit) {
 | 
			
		||||
            // 编辑
 | 
			
		||||
            energyQuantityManualUpdate({
 | 
			
		||||
              id: this.form.id,
 | 
			
		||||
              energyTypeId: this.form.energyTypeId,
 | 
			
		||||
              recordTime: this.form.recordTime,
 | 
			
		||||
              tableName: this.tableData[0].tableName,
 | 
			
		||||
              readingQuantity: this.tableData[0].readingQuantity
 | 
			
		||||
            }).then((res) => {
 | 
			
		||||
              if (res.code === 0) {
 | 
			
		||||
                this.$modal.msgSuccess("操作成功");
 | 
			
		||||
                this.$emit('successSubmit')
 | 
			
		||||
              }
 | 
			
		||||
            })
 | 
			
		||||
          } else {
 | 
			
		||||
            energyQuantityManualCreate({
 | 
			
		||||
              energyTypeId: this.form.energyTypeId,
 | 
			
		||||
              recordTime: this.form.recordTime,
 | 
			
		||||
              data: this.tableData
 | 
			
		||||
            }).then((res) => {
 | 
			
		||||
              if (res.code === 0) {
 | 
			
		||||
                this.$modal.msgSuccess("操作成功");
 | 
			
		||||
                this.$emit('successSubmit')
 | 
			
		||||
              }
 | 
			
		||||
            })
 | 
			
		||||
          }
 | 
			
		||||
        } else {
 | 
			
		||||
          return false
 | 
			
		||||
        }
 | 
			
		||||
      })
 | 
			
		||||
    },
 | 
			
		||||
    formClear() {
 | 
			
		||||
      this.$refs.energyQuantityManualForm.resetFields()
 | 
			
		||||
      this.form.unit = ''
 | 
			
		||||
      this.isEdit = false
 | 
			
		||||
      this.addButtonShow = '新增'
 | 
			
		||||
      this.tableData = []
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
	name: 'EnergyQuantityManualAdd',
 | 
			
		||||
	props: {
 | 
			
		||||
		energyTypeList: {
 | 
			
		||||
			type: Array,
 | 
			
		||||
			required: true,
 | 
			
		||||
			default: () => {
 | 
			
		||||
				return [];
 | 
			
		||||
			},
 | 
			
		||||
		},
 | 
			
		||||
	},
 | 
			
		||||
	data() {
 | 
			
		||||
		return {
 | 
			
		||||
			tableData: [],
 | 
			
		||||
			tableNameList: [], //表名list
 | 
			
		||||
			addButtonShow: '新增',
 | 
			
		||||
			form: {
 | 
			
		||||
				id: '',
 | 
			
		||||
				energyTypeId: '',
 | 
			
		||||
				unit: '',
 | 
			
		||||
				recordTime: '',
 | 
			
		||||
			},
 | 
			
		||||
			rules: {
 | 
			
		||||
				energyTypeId: [
 | 
			
		||||
					{ required: true, message: '能源类型不能为空', trigger: 'change' },
 | 
			
		||||
				],
 | 
			
		||||
				recordTime: [
 | 
			
		||||
					{ required: true, message: '抄表日期不能为空', trigger: 'change' },
 | 
			
		||||
				],
 | 
			
		||||
			},
 | 
			
		||||
			isEdit: false,
 | 
			
		||||
		};
 | 
			
		||||
	},
 | 
			
		||||
	components: { AddTable },
 | 
			
		||||
	methods: {
 | 
			
		||||
		init(params) {
 | 
			
		||||
			this.form.recordTime = moment().valueOf();
 | 
			
		||||
			if (params.type === 'add') {
 | 
			
		||||
				this.isEdit = false;
 | 
			
		||||
			} else if (params.type === 'meterReading') {
 | 
			
		||||
				this.isEdit = false;
 | 
			
		||||
				this.form.energyTypeId = params.energyTypeId;
 | 
			
		||||
				this.selEnergyType(this.form.energyTypeId);
 | 
			
		||||
				let obj = {};
 | 
			
		||||
				obj.tableName = params.tableName + '';
 | 
			
		||||
				obj.readingQuantity = 0;
 | 
			
		||||
				this.tableData.push(obj);
 | 
			
		||||
			} else {
 | 
			
		||||
				this.isEdit = true;
 | 
			
		||||
				this.form.id = params.id;
 | 
			
		||||
				this.addButtonShow = '';
 | 
			
		||||
				energyQuantityManualGet({ id: this.form.id }).then((res) => {
 | 
			
		||||
					if (res.code === 0) {
 | 
			
		||||
						this.form.energyTypeId = res.data.energyTypeId;
 | 
			
		||||
						this.selEnergyType(this.form.energyTypeId);
 | 
			
		||||
						this.form.recordTime = res.data.recordTime
 | 
			
		||||
							? res.data.recordTime
 | 
			
		||||
							: null;
 | 
			
		||||
						let obj = {};
 | 
			
		||||
						obj.tableName = res.data.tableName ? res.data.tableName + '' : '';
 | 
			
		||||
						obj.readingQuantity = res.data.readingQuantity;
 | 
			
		||||
						this.tableData.push(obj);
 | 
			
		||||
					}
 | 
			
		||||
				});
 | 
			
		||||
			}
 | 
			
		||||
		},
 | 
			
		||||
		inputChange(val) {
 | 
			
		||||
			this.tableData[val._pageIndex - 1][val.prop] = val[val.prop];
 | 
			
		||||
			console.log(this.tableData);
 | 
			
		||||
		},
 | 
			
		||||
		emitButtonClick() {
 | 
			
		||||
			if (!this.form.energyTypeId) {
 | 
			
		||||
				this.$modal.msgWarning('请先选择能源类型');
 | 
			
		||||
				return false;
 | 
			
		||||
			}
 | 
			
		||||
			let obj = {};
 | 
			
		||||
			obj.tableName = '';
 | 
			
		||||
			obj.readingQuantity = 0;
 | 
			
		||||
			this.tableData.push(obj);
 | 
			
		||||
		},
 | 
			
		||||
		selEnergyType(id) {
 | 
			
		||||
			// 切换能源类型
 | 
			
		||||
			this.tableData = [];
 | 
			
		||||
			this.tableNameList = [];
 | 
			
		||||
			energyTableGet({ energyTypeId: id }).then((res) => {
 | 
			
		||||
				this.tableNameList = res.data.tableObjs || [];
 | 
			
		||||
				if (this.tableNameList.length === 0) {
 | 
			
		||||
					this.$modal.msgWarning(
 | 
			
		||||
						'当前能源类型暂无配置表名,请先到《表名配置》页面配置'
 | 
			
		||||
					);
 | 
			
		||||
				}
 | 
			
		||||
			});
 | 
			
		||||
		},
 | 
			
		||||
		submitForm() {
 | 
			
		||||
			this.$refs['energyQuantityManualForm'].validate((valid) => {
 | 
			
		||||
				if (valid) {
 | 
			
		||||
					// 校验表格
 | 
			
		||||
					if (this.tableData.length === 0) {
 | 
			
		||||
						this.$modal.msgError('抄表数据不能为空');
 | 
			
		||||
						return false;
 | 
			
		||||
					} else {
 | 
			
		||||
						for (let item of this.tableData) {
 | 
			
		||||
							console.log(item);
 | 
			
		||||
							if (
 | 
			
		||||
								!item.tableName ||
 | 
			
		||||
								(!item.readingQuantity && item.readingQuantity !== 0)
 | 
			
		||||
							) {
 | 
			
		||||
								this.$modal.msgError('抄表数据有空值,请检查');
 | 
			
		||||
								return false;
 | 
			
		||||
							}
 | 
			
		||||
						}
 | 
			
		||||
					}
 | 
			
		||||
					if (this.isEdit) {
 | 
			
		||||
						// 编辑
 | 
			
		||||
						energyQuantityManualUpdate({
 | 
			
		||||
							id: this.form.id,
 | 
			
		||||
							energyTypeId: this.form.energyTypeId,
 | 
			
		||||
							recordTime: this.form.recordTime,
 | 
			
		||||
							tableName: this.tableData[0].tableName,
 | 
			
		||||
							readingQuantity: this.tableData[0].readingQuantity,
 | 
			
		||||
						}).then((res) => {
 | 
			
		||||
							if (res.code === 0) {
 | 
			
		||||
								this.$modal.msgSuccess('操作成功');
 | 
			
		||||
								this.$emit('successSubmit');
 | 
			
		||||
							}
 | 
			
		||||
						});
 | 
			
		||||
					} else {
 | 
			
		||||
						energyQuantityManualCreate({
 | 
			
		||||
							energyTypeId: this.form.energyTypeId,
 | 
			
		||||
							recordTime: this.form.recordTime,
 | 
			
		||||
							data: this.tableData,
 | 
			
		||||
						}).then((res) => {
 | 
			
		||||
							if (res.code === 0) {
 | 
			
		||||
								this.$modal.msgSuccess('操作成功');
 | 
			
		||||
								this.$emit('successSubmit');
 | 
			
		||||
							}
 | 
			
		||||
						});
 | 
			
		||||
					}
 | 
			
		||||
				} else {
 | 
			
		||||
					return false;
 | 
			
		||||
				}
 | 
			
		||||
			});
 | 
			
		||||
		},
 | 
			
		||||
		formClear() {
 | 
			
		||||
			this.$refs.energyQuantityManualForm.resetFields();
 | 
			
		||||
			this.form.unit = '';
 | 
			
		||||
			this.isEdit = false;
 | 
			
		||||
			this.addButtonShow = '新增';
 | 
			
		||||
			this.tableData = [];
 | 
			
		||||
		},
 | 
			
		||||
	},
 | 
			
		||||
};
 | 
			
		||||
</script>
 | 
			
		||||
@@ -1,271 +1,323 @@
 | 
			
		||||
<template>
 | 
			
		||||
  <div class="app-container">
 | 
			
		||||
 | 
			
		||||
    <!-- 搜索工作栏 -->
 | 
			
		||||
    <search-bar :formConfigs="formConfig" ref="searchBarForm" @headBtnClick="buttonClick" />
 | 
			
		||||
    <!-- 列表 -->
 | 
			
		||||
    <base-table :page="queryParams.pageNo" :limit="queryParams.pageSize" :table-props="tableProps" :table-data="list"
 | 
			
		||||
      :max-height="tableH" @selection-change="selectChange">
 | 
			
		||||
      <method-btn v-if="tableBtn.length" slot="handleBtn" :width="120" label="操作" :method-list="tableBtn"
 | 
			
		||||
        @clickBtn="handleClick" />
 | 
			
		||||
    </base-table>
 | 
			
		||||
    <pagination :page.sync="queryParams.pageNo" :limit.sync="queryParams.pageSize" :total="total"
 | 
			
		||||
      @pagination="getList" />
 | 
			
		||||
    <!-- 新增 -->
 | 
			
		||||
    <base-dialog :dialogTitle="addOrEditTitle" :dialogVisible="centervisible" @cancel="handleCancel"
 | 
			
		||||
      @confirm="handleConfirm" :before-close="handleCancel">
 | 
			
		||||
      <energy-quantity-manual-add ref="energyQuantityManualAdd" :energyTypeList="energyTypeList"
 | 
			
		||||
        @successSubmit="successSubmit" />
 | 
			
		||||
    </base-dialog>
 | 
			
		||||
  </div>
 | 
			
		||||
	<div class="app-container">
 | 
			
		||||
		<!-- 搜索工作栏 -->
 | 
			
		||||
		<search-bar
 | 
			
		||||
			:formConfigs="formConfig"
 | 
			
		||||
			ref="searchBarForm"
 | 
			
		||||
			@headBtnClick="buttonClick" />
 | 
			
		||||
		<!-- 列表 -->
 | 
			
		||||
		<base-table
 | 
			
		||||
			:page="queryParams.pageNo"
 | 
			
		||||
			:limit="queryParams.pageSize"
 | 
			
		||||
			:table-props="tableProps"
 | 
			
		||||
			:table-data="list"
 | 
			
		||||
			:max-height="tableH"
 | 
			
		||||
			@selection-change="selectChange">
 | 
			
		||||
			<method-btn
 | 
			
		||||
				v-if="tableBtn.length"
 | 
			
		||||
				slot="handleBtn"
 | 
			
		||||
				:width="120"
 | 
			
		||||
				label="操作"
 | 
			
		||||
				:method-list="tableBtn"
 | 
			
		||||
				@clickBtn="handleClick" />
 | 
			
		||||
		</base-table>
 | 
			
		||||
		<pagination
 | 
			
		||||
			:page.sync="queryParams.pageNo"
 | 
			
		||||
			:limit.sync="queryParams.pageSize"
 | 
			
		||||
			:total="total"
 | 
			
		||||
			@pagination="getList" />
 | 
			
		||||
		<!-- 新增 -->
 | 
			
		||||
		<base-dialog
 | 
			
		||||
			:dialogTitle="addOrEditTitle"
 | 
			
		||||
			:dialogVisible="centervisible"
 | 
			
		||||
			@cancel="handleCancel"
 | 
			
		||||
			@confirm="handleConfirm"
 | 
			
		||||
			:before-close="handleCancel">
 | 
			
		||||
			<energy-quantity-manual-add
 | 
			
		||||
				ref="energyQuantityManualAdd"
 | 
			
		||||
				:energyTypeList="energyTypeList"
 | 
			
		||||
				@successSubmit="successSubmit" />
 | 
			
		||||
		</base-dialog>
 | 
			
		||||
	</div>
 | 
			
		||||
</template>
 | 
			
		||||
 | 
			
		||||
<script>
 | 
			
		||||
import { energyQuantityManualPage, energyQuantityManualDelete, energyQuantityManualExport } from "@/api/base/energyQuantityManual"
 | 
			
		||||
import { getEnergyTypeListAll } from "@/api/base/energyType"
 | 
			
		||||
import { publicFormatter } from '@/utils/dict'
 | 
			
		||||
import { parseTime, parseTimeTable } from '@/utils/ruoyi'
 | 
			
		||||
// import FileSaver from "file-saver"
 | 
			
		||||
// import * as XLSX from 'xlsx/xlsx.mjs'
 | 
			
		||||
import EnergyQuantityManualAdd from './components/energyQuantityManualAdd'
 | 
			
		||||
import moment from 'moment'
 | 
			
		||||
import {
 | 
			
		||||
	energyQuantityManualPage,
 | 
			
		||||
	energyQuantityManualDelete,
 | 
			
		||||
	energyQuantityManualExport,
 | 
			
		||||
} from '@/api/base/energyQuantityManual';
 | 
			
		||||
import { getEnergyTypeListAll } from '@/api/base/energyType';
 | 
			
		||||
import { publicFormatter } from '@/utils/dict';
 | 
			
		||||
import { parseTimeTable } from '@/utils/ruoyi';
 | 
			
		||||
import EnergyQuantityManualAdd from './components/energyQuantityManualAdd';
 | 
			
		||||
import moment from 'moment';
 | 
			
		||||
import tableHeightMixin from '@/mixins/lb/tableHeightMixin';
 | 
			
		||||
const tableProps = [
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'energyType',
 | 
			
		||||
    label: '能源类型',
 | 
			
		||||
    minWidth: 110,
 | 
			
		||||
    showOverflowtooltip: true
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'unit',
 | 
			
		||||
    label: '单位',
 | 
			
		||||
    filter: publicFormatter('energy_unit'),
 | 
			
		||||
    minWidth: 110
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'tableName',
 | 
			
		||||
    label: '能源表名',
 | 
			
		||||
    filter: publicFormatter('table_name'),
 | 
			
		||||
    minWidth: 110,
 | 
			
		||||
    showOverflowtooltip: true
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'recordTime',
 | 
			
		||||
    label: '抄表日期',
 | 
			
		||||
    filter: parseTimeTable('{y}-{m}-{d}'),
 | 
			
		||||
    minWidth: 110
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'readingQuantity',
 | 
			
		||||
    label: '抄表值'
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'useQty',
 | 
			
		||||
    label: '差值'
 | 
			
		||||
  }
 | 
			
		||||
]
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'energyTypeLabel',
 | 
			
		||||
		label: '能源类型',
 | 
			
		||||
		minWidth: 110,
 | 
			
		||||
		showOverflowtooltip: true,
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'unit',
 | 
			
		||||
		label: '单位',
 | 
			
		||||
		filter: publicFormatter('unit_dict'),
 | 
			
		||||
		minWidth: 110,
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'tableName',
 | 
			
		||||
		label: '能源表名',
 | 
			
		||||
		filter: publicFormatter('table_name'),
 | 
			
		||||
		minWidth: 110,
 | 
			
		||||
		showOverflowtooltip: true,
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'recordTime',
 | 
			
		||||
		label: '抄表日期',
 | 
			
		||||
		filter: parseTimeTable('{y}-{m}-{d}'),
 | 
			
		||||
		minWidth: 110,
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'readingQuantity',
 | 
			
		||||
		label: '抄表值',
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'useQty',
 | 
			
		||||
		label: '差值',
 | 
			
		||||
	},
 | 
			
		||||
];
 | 
			
		||||
export default {
 | 
			
		||||
  name: "EnergyQuantityManual",
 | 
			
		||||
  data() {
 | 
			
		||||
    return {
 | 
			
		||||
      formConfig: [
 | 
			
		||||
        {
 | 
			
		||||
          type: 'select',
 | 
			
		||||
          label: '能源类型',
 | 
			
		||||
          selectOptions: [],
 | 
			
		||||
          param: 'energyTypeId',
 | 
			
		||||
          filterable: true
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          type: 'datePicker',
 | 
			
		||||
          label: '抄表日期',
 | 
			
		||||
          dateType: 'daterange',
 | 
			
		||||
          format: 'yyyy-MM-dd',
 | 
			
		||||
          valueFormat: "timestamp",
 | 
			
		||||
          rangeSeparator: '-',
 | 
			
		||||
          startPlaceholder: '开始时间',
 | 
			
		||||
          endPlaceholder: '结束时间',
 | 
			
		||||
          param: 'timeVal',
 | 
			
		||||
          defaultSelect: []
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          type: 'button',
 | 
			
		||||
          btnName: '查询',
 | 
			
		||||
          name: 'search',
 | 
			
		||||
          color: 'primary'
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          type: 'separate'
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          type: this.$auth.hasPermi('base:energy-quantity-manual:export') ? 'button' : '',
 | 
			
		||||
          btnName: '导出',
 | 
			
		||||
          name: 'export',
 | 
			
		||||
          color: 'primary',
 | 
			
		||||
          plain: true
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          type: this.$auth.hasPermi('base:energy-quantity-manual:create') ? 'button' : '',
 | 
			
		||||
          btnName: '新增',
 | 
			
		||||
          name: 'add',
 | 
			
		||||
          color: 'success',
 | 
			
		||||
          plain: true
 | 
			
		||||
        }
 | 
			
		||||
      ],
 | 
			
		||||
      tableProps,
 | 
			
		||||
      tableH: this.tableHeight(260),
 | 
			
		||||
      // 总条数
 | 
			
		||||
      total: 0,
 | 
			
		||||
      // 班次基础信息列表
 | 
			
		||||
      list: [],
 | 
			
		||||
      tableBtn: [
 | 
			
		||||
        this.$auth.hasPermi('base:energy-quantity-manual:create')
 | 
			
		||||
          ? {
 | 
			
		||||
            type: 'meterReading',
 | 
			
		||||
            btnName: '抄表'
 | 
			
		||||
          }
 | 
			
		||||
          : undefined,
 | 
			
		||||
        this.$auth.hasPermi('base:energy-quantity-manual:update')
 | 
			
		||||
          ? {
 | 
			
		||||
            type: 'edit',
 | 
			
		||||
            btnName: '编辑'
 | 
			
		||||
          }
 | 
			
		||||
          : undefined,
 | 
			
		||||
        this.$auth.hasPermi('base:energy-quantity-manual:delete')
 | 
			
		||||
          ? {
 | 
			
		||||
            type: 'delete',
 | 
			
		||||
            btnName: '删除'
 | 
			
		||||
          }
 | 
			
		||||
          : undefined
 | 
			
		||||
      ].filter((v) => v),
 | 
			
		||||
      // 查询参数
 | 
			
		||||
      queryParams: {
 | 
			
		||||
        pageNo: 1,
 | 
			
		||||
        pageSize: 20,
 | 
			
		||||
        energyTypeId: '',
 | 
			
		||||
        recordTime: []
 | 
			
		||||
      },
 | 
			
		||||
      energyTypeList: [],
 | 
			
		||||
      exportList: [],
 | 
			
		||||
      addOrEditTitle: '',
 | 
			
		||||
      centervisible: false,
 | 
			
		||||
 | 
			
		||||
    };
 | 
			
		||||
  },
 | 
			
		||||
  components: { EnergyQuantityManualAdd },
 | 
			
		||||
  created() {
 | 
			
		||||
    window.addEventListener('resize', () => {
 | 
			
		||||
      this.tableH = this.tableHeight(260)
 | 
			
		||||
    })
 | 
			
		||||
    let end = moment(moment().format('YYYY-MM-DD 23:59:59')).valueOf()
 | 
			
		||||
    let start = moment(moment().subtract(7, 'days').format('YYYY-MM-DD 00:00:00')).valueOf()
 | 
			
		||||
    this.formConfig[1].defaultSelect = [start, end]
 | 
			
		||||
    this.queryParams.recordTime[0] = start
 | 
			
		||||
    this.queryParams.recordTime[1] = end
 | 
			
		||||
    this.getList();
 | 
			
		||||
    this.getTypeList()
 | 
			
		||||
  },
 | 
			
		||||
  methods: {
 | 
			
		||||
    buttonClick(val) {
 | 
			
		||||
      this.queryParams.pageNo = 1;
 | 
			
		||||
      this.queryParams.energyTypeId = val.energyTypeId
 | 
			
		||||
      this.queryParams.recordTime[0] = val.timeVal ? moment(moment(val.timeVal[0]).format('YYYY-MM-DD 00:00:00')).valueOf() : null
 | 
			
		||||
      this.queryParams.recordTime[1] = val.timeVal ? moment(moment(val.timeVal[1]).format('YYYY-MM-DD 23:59:59')).valueOf() : null
 | 
			
		||||
      switch (val.btnName) {
 | 
			
		||||
        case 'search':
 | 
			
		||||
          this.getList()
 | 
			
		||||
          break
 | 
			
		||||
        case 'add':
 | 
			
		||||
          this.addOrEditTitle = '新增'
 | 
			
		||||
          this.centervisible = true
 | 
			
		||||
          let params = {}
 | 
			
		||||
          params.type = 'add'
 | 
			
		||||
          this.$nextTick(() => {
 | 
			
		||||
            this.$refs.energyQuantityManualAdd.init(params)
 | 
			
		||||
          })
 | 
			
		||||
          break
 | 
			
		||||
        default:
 | 
			
		||||
          this.$modal.confirm('是否确认导出').then(() => {
 | 
			
		||||
            return energyQuantityManualExport({ energyTypeId: this.queryParams.energyTypeId, recordTime: this.queryParams.recordTime });
 | 
			
		||||
          }).then(response => {
 | 
			
		||||
            this.$download.excel(response, '能源报表.xls');
 | 
			
		||||
          }).catch(() => { })
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    /** 查询列表 */
 | 
			
		||||
    getList() {
 | 
			
		||||
      energyQuantityManualPage(this.queryParams).then(response => {
 | 
			
		||||
        let arr = response.data.list || []
 | 
			
		||||
        arr && arr.map(item => {
 | 
			
		||||
          item.amount = item.amount ? (!isNaN(parseFloat(item.amount)) && isFinite(item.amount) ? item.amount.toFixed(2) : '') : ''
 | 
			
		||||
        })
 | 
			
		||||
        this.list = arr
 | 
			
		||||
        this.total = response.data.total;
 | 
			
		||||
        this.exportList = []
 | 
			
		||||
      });
 | 
			
		||||
    },
 | 
			
		||||
    getTypeList() {
 | 
			
		||||
      getEnergyTypeListAll().then((res) => {
 | 
			
		||||
        this.formConfig[0].selectOptions = res.data || []
 | 
			
		||||
        this.energyTypeList = res.data || []
 | 
			
		||||
      })
 | 
			
		||||
    },
 | 
			
		||||
    selectChange(val) {
 | 
			
		||||
      console.log(val)
 | 
			
		||||
      this.exportList = val
 | 
			
		||||
    },
 | 
			
		||||
    handleClick(val) {
 | 
			
		||||
      console.log(val)
 | 
			
		||||
      switch (val.type) {
 | 
			
		||||
        case 'edit':
 | 
			
		||||
          this.addOrEditTitle = '编辑'
 | 
			
		||||
          this.centervisible = true
 | 
			
		||||
          let paramA = {}
 | 
			
		||||
          paramA.type = 'edit'
 | 
			
		||||
          paramA.id = val.data.id
 | 
			
		||||
          this.$nextTick(() => {
 | 
			
		||||
            this.$refs.energyQuantityManualAdd.init(paramA)
 | 
			
		||||
          })
 | 
			
		||||
          break
 | 
			
		||||
        case 'meterReading':
 | 
			
		||||
          this.addOrEditTitle = '新增'
 | 
			
		||||
          this.centervisible = true
 | 
			
		||||
          let paramB = {}
 | 
			
		||||
          paramB.type = 'meterReading'
 | 
			
		||||
          paramB.energyTypeId = val.data.energyTypeId
 | 
			
		||||
          paramB.tableName = val.data.tableName
 | 
			
		||||
          this.$nextTick(() => {
 | 
			
		||||
            this.$refs.energyQuantityManualAdd.init(paramB)
 | 
			
		||||
          })
 | 
			
		||||
          break
 | 
			
		||||
        default:
 | 
			
		||||
          this.handleDelete(val.data)
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    // 新增
 | 
			
		||||
    handleCancel() {
 | 
			
		||||
      this.$refs.energyQuantityManualAdd.formClear()
 | 
			
		||||
      this.centervisible = false
 | 
			
		||||
      this.addOrEditTitle = ''
 | 
			
		||||
    },
 | 
			
		||||
    handleConfirm() {
 | 
			
		||||
      this.$refs.energyQuantityManualAdd.submitForm()
 | 
			
		||||
    },
 | 
			
		||||
    successSubmit() {
 | 
			
		||||
      this.handleCancel()
 | 
			
		||||
      this.getList()
 | 
			
		||||
    },
 | 
			
		||||
    /** 删除按钮操作 */
 | 
			
		||||
    handleDelete(row) {
 | 
			
		||||
      console.log(row.id)
 | 
			
		||||
      this.$modal.confirm('是否确认删除能源类型为"' + row.energyType + '"的数据项?').then(function () {
 | 
			
		||||
        return energyQuantityManualDelete({ id: row.id });
 | 
			
		||||
      }).then(() => {
 | 
			
		||||
        this.queryParams.pageNo = 1;
 | 
			
		||||
        this.getList();
 | 
			
		||||
        this.$modal.msgSuccess("删除成功");
 | 
			
		||||
      }).catch(() => { });
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
	name: 'EnergyQuantityManual',
 | 
			
		||||
	data() {
 | 
			
		||||
		return {
 | 
			
		||||
			formConfig: [
 | 
			
		||||
				{
 | 
			
		||||
					type: 'select',
 | 
			
		||||
					label: '能源类型',
 | 
			
		||||
					labelField: 'labelName',
 | 
			
		||||
					selectOptions: [],
 | 
			
		||||
					param: 'energyTypeId',
 | 
			
		||||
					filterable: true,
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					type: 'datePicker',
 | 
			
		||||
					label: '抄表日期',
 | 
			
		||||
					dateType: 'daterange',
 | 
			
		||||
					format: 'yyyy-MM-dd',
 | 
			
		||||
					valueFormat: 'timestamp',
 | 
			
		||||
					rangeSeparator: '-',
 | 
			
		||||
					startPlaceholder: '开始时间',
 | 
			
		||||
					endPlaceholder: '结束时间',
 | 
			
		||||
					param: 'timeVal',
 | 
			
		||||
					defaultSelect: [],
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					type: 'button',
 | 
			
		||||
					btnName: '查询',
 | 
			
		||||
					name: 'search',
 | 
			
		||||
					color: 'primary',
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					type: 'separate',
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					type: this.$auth.hasPermi('base:energy-quantity-manual:export')
 | 
			
		||||
						? 'button'
 | 
			
		||||
						: '',
 | 
			
		||||
					btnName: '导出',
 | 
			
		||||
					name: 'export',
 | 
			
		||||
					color: 'primary',
 | 
			
		||||
					plain: true,
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					type: this.$auth.hasPermi('base:energy-quantity-manual:create')
 | 
			
		||||
						? 'button'
 | 
			
		||||
						: '',
 | 
			
		||||
					btnName: '新增',
 | 
			
		||||
					name: 'add',
 | 
			
		||||
					color: 'success',
 | 
			
		||||
					plain: true,
 | 
			
		||||
				},
 | 
			
		||||
			],
 | 
			
		||||
			tableProps,
 | 
			
		||||
			// 总条数
 | 
			
		||||
			total: 0,
 | 
			
		||||
			// 班次基础信息列表
 | 
			
		||||
			list: [],
 | 
			
		||||
			tableBtn: [
 | 
			
		||||
				this.$auth.hasPermi('base:energy-quantity-manual:create')
 | 
			
		||||
					? {
 | 
			
		||||
							type: 'meterReading',
 | 
			
		||||
							btnName: '抄表',
 | 
			
		||||
					  }
 | 
			
		||||
					: undefined,
 | 
			
		||||
				this.$auth.hasPermi('base:energy-quantity-manual:update')
 | 
			
		||||
					? {
 | 
			
		||||
							type: 'edit',
 | 
			
		||||
							btnName: '编辑',
 | 
			
		||||
					  }
 | 
			
		||||
					: undefined,
 | 
			
		||||
				this.$auth.hasPermi('base:energy-quantity-manual:delete')
 | 
			
		||||
					? {
 | 
			
		||||
							type: 'delete',
 | 
			
		||||
							btnName: '删除',
 | 
			
		||||
					  }
 | 
			
		||||
					: undefined,
 | 
			
		||||
			].filter((v) => v),
 | 
			
		||||
			// 查询参数
 | 
			
		||||
			queryParams: {
 | 
			
		||||
				pageNo: 1,
 | 
			
		||||
				pageSize: 20,
 | 
			
		||||
				energyTypeId: '',
 | 
			
		||||
				recordTime: [],
 | 
			
		||||
			},
 | 
			
		||||
			energyTypeList: [],
 | 
			
		||||
			exportList: [],
 | 
			
		||||
			addOrEditTitle: '',
 | 
			
		||||
			centervisible: false,
 | 
			
		||||
		};
 | 
			
		||||
	},
 | 
			
		||||
	components: { EnergyQuantityManualAdd },
 | 
			
		||||
	mixins: [tableHeightMixin],
 | 
			
		||||
	created() {
 | 
			
		||||
		let end = moment(moment().format('YYYY-MM-DD 23:59:59')).valueOf();
 | 
			
		||||
		let start = moment(
 | 
			
		||||
			moment().subtract(7, 'days').format('YYYY-MM-DD 00:00:00')
 | 
			
		||||
		).valueOf();
 | 
			
		||||
		this.formConfig[1].defaultSelect = [start, end];
 | 
			
		||||
		this.queryParams.recordTime[0] = start;
 | 
			
		||||
		this.queryParams.recordTime[1] = end;
 | 
			
		||||
		this.getList();
 | 
			
		||||
		this.getTypeList();
 | 
			
		||||
	},
 | 
			
		||||
	methods: {
 | 
			
		||||
		buttonClick(val) {
 | 
			
		||||
			this.queryParams.pageNo = 1;
 | 
			
		||||
			this.queryParams.energyTypeId = val.energyTypeId;
 | 
			
		||||
			this.queryParams.recordTime[0] = val.timeVal
 | 
			
		||||
				? moment(moment(val.timeVal[0]).format('YYYY-MM-DD 00:00:00')).valueOf()
 | 
			
		||||
				: null;
 | 
			
		||||
			this.queryParams.recordTime[1] = val.timeVal
 | 
			
		||||
				? moment(moment(val.timeVal[1]).format('YYYY-MM-DD 23:59:59')).valueOf()
 | 
			
		||||
				: null;
 | 
			
		||||
			switch (val.btnName) {
 | 
			
		||||
				case 'search':
 | 
			
		||||
					this.getList();
 | 
			
		||||
					break;
 | 
			
		||||
				case 'add':
 | 
			
		||||
					this.addOrEditTitle = '新增';
 | 
			
		||||
					this.centervisible = true;
 | 
			
		||||
					let params = {};
 | 
			
		||||
					params.type = 'add';
 | 
			
		||||
					this.$nextTick(() => {
 | 
			
		||||
						this.$refs.energyQuantityManualAdd.init(params);
 | 
			
		||||
					});
 | 
			
		||||
					break;
 | 
			
		||||
				default:
 | 
			
		||||
					this.$modal
 | 
			
		||||
						.confirm('是否确认导出')
 | 
			
		||||
						.then(() => {
 | 
			
		||||
							return energyQuantityManualExport({
 | 
			
		||||
								energyTypeId: this.queryParams.energyTypeId,
 | 
			
		||||
								recordTime: this.queryParams.recordTime,
 | 
			
		||||
							});
 | 
			
		||||
						})
 | 
			
		||||
						.then((response) => {
 | 
			
		||||
							this.$download.excel(response, '能源报表.xls');
 | 
			
		||||
						})
 | 
			
		||||
						.catch(() => {});
 | 
			
		||||
			}
 | 
			
		||||
		},
 | 
			
		||||
		/** 查询列表 */
 | 
			
		||||
		getList() {
 | 
			
		||||
			energyQuantityManualPage(this.queryParams).then((response) => {
 | 
			
		||||
				let arr = response.data.list || [];
 | 
			
		||||
				arr &&
 | 
			
		||||
					arr.map((item) => {
 | 
			
		||||
						item.amount = item.amount
 | 
			
		||||
							? !isNaN(parseFloat(item.amount)) && isFinite(item.amount)
 | 
			
		||||
								? item.amount.toFixed(2)
 | 
			
		||||
								: ''
 | 
			
		||||
							: '';
 | 
			
		||||
						this.getDictDatas('energy_type').map((subItem) => {
 | 
			
		||||
							if (item.energyType === subItem.value) {
 | 
			
		||||
								item.energyTypeLabel = subItem.label;
 | 
			
		||||
							}
 | 
			
		||||
						});
 | 
			
		||||
					});
 | 
			
		||||
				this.list = arr;
 | 
			
		||||
				this.total = response.data.total;
 | 
			
		||||
				this.exportList = [];
 | 
			
		||||
			});
 | 
			
		||||
		},
 | 
			
		||||
		getTypeList() {
 | 
			
		||||
			getEnergyTypeListAll().then((res) => {
 | 
			
		||||
				this.formConfig[0].selectOptions = res.data || [];
 | 
			
		||||
				this.energyTypeList = res.data || [];
 | 
			
		||||
			});
 | 
			
		||||
		},
 | 
			
		||||
		selectChange(val) {
 | 
			
		||||
			console.log(val);
 | 
			
		||||
			this.exportList = val;
 | 
			
		||||
		},
 | 
			
		||||
		handleClick(val) {
 | 
			
		||||
			console.log(val);
 | 
			
		||||
			switch (val.type) {
 | 
			
		||||
				case 'edit':
 | 
			
		||||
					this.addOrEditTitle = '编辑';
 | 
			
		||||
					this.centervisible = true;
 | 
			
		||||
					let paramA = {};
 | 
			
		||||
					paramA.type = 'edit';
 | 
			
		||||
					paramA.id = val.data.id;
 | 
			
		||||
					this.$nextTick(() => {
 | 
			
		||||
						this.$refs.energyQuantityManualAdd.init(paramA);
 | 
			
		||||
					});
 | 
			
		||||
					break;
 | 
			
		||||
				case 'meterReading':
 | 
			
		||||
					this.addOrEditTitle = '新增';
 | 
			
		||||
					this.centervisible = true;
 | 
			
		||||
					let paramB = {};
 | 
			
		||||
					paramB.type = 'meterReading';
 | 
			
		||||
					paramB.energyTypeId = val.data.energyTypeId;
 | 
			
		||||
					paramB.tableName = val.data.tableName;
 | 
			
		||||
					this.$nextTick(() => {
 | 
			
		||||
						this.$refs.energyQuantityManualAdd.init(paramB);
 | 
			
		||||
					});
 | 
			
		||||
					break;
 | 
			
		||||
				default:
 | 
			
		||||
					this.handleDelete(val.data);
 | 
			
		||||
			}
 | 
			
		||||
		},
 | 
			
		||||
		// 新增
 | 
			
		||||
		handleCancel() {
 | 
			
		||||
			this.$refs.energyQuantityManualAdd.formClear();
 | 
			
		||||
			this.centervisible = false;
 | 
			
		||||
			this.addOrEditTitle = '';
 | 
			
		||||
		},
 | 
			
		||||
		handleConfirm() {
 | 
			
		||||
			this.$refs.energyQuantityManualAdd.submitForm();
 | 
			
		||||
		},
 | 
			
		||||
		successSubmit() {
 | 
			
		||||
			this.handleCancel();
 | 
			
		||||
			this.getList();
 | 
			
		||||
		},
 | 
			
		||||
		/** 删除按钮操作 */
 | 
			
		||||
		handleDelete(row) {
 | 
			
		||||
			console.log(row.id);
 | 
			
		||||
			this.$modal
 | 
			
		||||
				.confirm('是否确认删除能源类型为"' + row.energyTypeLabel + '"的数据项?')
 | 
			
		||||
				.then(function () {
 | 
			
		||||
					return energyQuantityManualDelete({ id: row.id });
 | 
			
		||||
				})
 | 
			
		||||
				.then(() => {
 | 
			
		||||
					this.queryParams.pageNo = 1;
 | 
			
		||||
					this.getList();
 | 
			
		||||
					this.$modal.msgSuccess('删除成功');
 | 
			
		||||
				})
 | 
			
		||||
				.catch(() => {});
 | 
			
		||||
		},
 | 
			
		||||
	},
 | 
			
		||||
};
 | 
			
		||||
</script>
 | 
			
		||||
 
 | 
			
		||||
@@ -1,220 +1,254 @@
 | 
			
		||||
<template>
 | 
			
		||||
  <div class="app-container">
 | 
			
		||||
 | 
			
		||||
    <!-- 搜索工作栏 -->
 | 
			
		||||
    <search-bar :formConfigs="formConfig" ref="searchBarForm" @headBtnClick="buttonClick" />
 | 
			
		||||
    <!-- 列表 -->
 | 
			
		||||
    <base-table :page="queryParams.pageNo" :limit="queryParams.pageSize" :table-props="tableProps" :table-data="list"
 | 
			
		||||
      :selectWidth="55" :max-height="tableH" @selection-change="selectChange" />
 | 
			
		||||
    <pagination :page.sync="queryParams.pageNo" :limit.sync="queryParams.pageSize" :total="total"
 | 
			
		||||
      @pagination="getList" />
 | 
			
		||||
  </div>
 | 
			
		||||
	<div class="app-container">
 | 
			
		||||
		<!-- 搜索工作栏 -->
 | 
			
		||||
		<search-bar
 | 
			
		||||
			:formConfigs="formConfig"
 | 
			
		||||
			ref="searchBarForm"
 | 
			
		||||
			@headBtnClick="buttonClick" />
 | 
			
		||||
		<!-- 列表 -->
 | 
			
		||||
		<base-table
 | 
			
		||||
			:page="queryParams.pageNo"
 | 
			
		||||
			:limit="queryParams.pageSize"
 | 
			
		||||
			:table-props="tableProps"
 | 
			
		||||
			:table-data="list"
 | 
			
		||||
			:selectWidth="55"
 | 
			
		||||
			:max-height="tableH"
 | 
			
		||||
			@selection-change="selectChange" />
 | 
			
		||||
		<pagination
 | 
			
		||||
			:page.sync="queryParams.pageNo"
 | 
			
		||||
			:limit.sync="queryParams.pageSize"
 | 
			
		||||
			:total="total"
 | 
			
		||||
			@pagination="getList" />
 | 
			
		||||
	</div>
 | 
			
		||||
</template>
 | 
			
		||||
 | 
			
		||||
<script>
 | 
			
		||||
import { getEnergyQuantityRealtimePage } from "@/api/base/energyQuantityRealtime"
 | 
			
		||||
import { getEnergyTypeListAll } from "@/api/base/energyType"
 | 
			
		||||
// import { publicFormatter } from '@/utils/dict'
 | 
			
		||||
import FileSaver from "file-saver"
 | 
			
		||||
import * as XLSX from 'xlsx/xlsx.mjs'
 | 
			
		||||
import { getEnergyQuantityRealtimePage } from '@/api/base/energyQuantityRealtime';
 | 
			
		||||
import { getEnergyTypeListAll } from '@/api/base/energyType';
 | 
			
		||||
// import { publicFormatter } from '@/utils/dict';
 | 
			
		||||
import FileSaver from 'file-saver';
 | 
			
		||||
import * as XLSX from 'xlsx/xlsx.mjs';
 | 
			
		||||
import tableHeightMixin from '@/mixins/lb/tableHeightMixin';
 | 
			
		||||
const tableProps = [
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'objName',
 | 
			
		||||
    label: '统计对象',
 | 
			
		||||
    showOverflowtooltip: true
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'objCode',
 | 
			
		||||
    label: '对象编码',
 | 
			
		||||
    showOverflowtooltip: true
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'energyTypeName',
 | 
			
		||||
    label: '能源类型',
 | 
			
		||||
    showOverflowtooltip: true
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'startValue',
 | 
			
		||||
    label: '初始值'
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'endValue',
 | 
			
		||||
    label: '当前值'
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'diffValue',
 | 
			
		||||
    label: '差值'
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'amount',
 | 
			
		||||
    label: '金额'
 | 
			
		||||
  }
 | 
			
		||||
]
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'objName',
 | 
			
		||||
		label: '统计对象',
 | 
			
		||||
		showOverflowtooltip: true,
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'objCode',
 | 
			
		||||
		label: '对象编码',
 | 
			
		||||
		showOverflowtooltip: true,
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'energyTypeLabel',
 | 
			
		||||
		label: '能源类型',
 | 
			
		||||
		showOverflowtooltip: true,
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'startValue',
 | 
			
		||||
		label: '初始值',
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'endValue',
 | 
			
		||||
		label: '当前值',
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'diffValue',
 | 
			
		||||
		label: '差值',
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'amount',
 | 
			
		||||
		label: '金额',
 | 
			
		||||
	},
 | 
			
		||||
];
 | 
			
		||||
export default {
 | 
			
		||||
  name: "EnergyQuantityRealtime",
 | 
			
		||||
  data() {
 | 
			
		||||
    return {
 | 
			
		||||
      formConfig: [
 | 
			
		||||
        {
 | 
			
		||||
          type: 'select',
 | 
			
		||||
          label: '能源类型',
 | 
			
		||||
          selectOptions: [],
 | 
			
		||||
          param: 'energyTypeId',
 | 
			
		||||
          filterable: true
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          type: 'datePicker',
 | 
			
		||||
          label: '时间',
 | 
			
		||||
          dateType: 'datetimerange',
 | 
			
		||||
          format: 'yyyy-MM-dd HH:mm:ss',
 | 
			
		||||
          valueFormat: "timestamp",
 | 
			
		||||
          rangeSeparator: '-',
 | 
			
		||||
          startPlaceholder: '开始时间',
 | 
			
		||||
          endPlaceholder: '结束时间',
 | 
			
		||||
          param: 'timeVal',
 | 
			
		||||
          defaultSelect: [],
 | 
			
		||||
          width: 350
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          type: 'button',
 | 
			
		||||
          btnName: '查询',
 | 
			
		||||
          name: 'search',
 | 
			
		||||
          color: 'primary'
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          type: 'separate'
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          type: this.$auth.hasPermi('base:energy-quantity-realtime:export') ? 'button' : '',
 | 
			
		||||
          btnName: '导出',
 | 
			
		||||
          name: 'export',
 | 
			
		||||
          color: 'primary',
 | 
			
		||||
          plain: true
 | 
			
		||||
        }
 | 
			
		||||
      ],
 | 
			
		||||
      tableProps,
 | 
			
		||||
      tableH: this.tableHeight(260),
 | 
			
		||||
      // 总条数
 | 
			
		||||
      total: 0,
 | 
			
		||||
      // 班次基础信息列表
 | 
			
		||||
      list: [],
 | 
			
		||||
      // 查询参数
 | 
			
		||||
      queryParams: {
 | 
			
		||||
        pageNo: 1,
 | 
			
		||||
        pageSize: 20,
 | 
			
		||||
        energyTypeId: '',
 | 
			
		||||
        startTime: null,
 | 
			
		||||
        endTime: null
 | 
			
		||||
      },
 | 
			
		||||
      energyTypeList: [],
 | 
			
		||||
      exportList: []
 | 
			
		||||
    };
 | 
			
		||||
  },
 | 
			
		||||
  created() {
 | 
			
		||||
    window.addEventListener('resize', () => {
 | 
			
		||||
      this.tableH = this.tableHeight(260)
 | 
			
		||||
    })
 | 
			
		||||
    if (location.href.indexOf('?') > 0) {
 | 
			
		||||
      let arr = location.href.split('?')[1].split('&')
 | 
			
		||||
      this.formConfig[1].defaultSelect = [arr[0].split('=')[1], arr[1].split('=')[1]]
 | 
			
		||||
    } else {
 | 
			
		||||
      this.formConfig[1].defaultSelect = [Date.now() - 7 * 24 * 3600000, Date.now()]
 | 
			
		||||
    }
 | 
			
		||||
    this.queryParams.startTime = this.formConfig[1].defaultSelect[0]
 | 
			
		||||
    this.queryParams.endTime = this.formConfig[1].defaultSelect[1]
 | 
			
		||||
    this.getList();
 | 
			
		||||
    this.getTypeList()
 | 
			
		||||
  },
 | 
			
		||||
  watch: {
 | 
			
		||||
    $route: 'initData'
 | 
			
		||||
  },
 | 
			
		||||
  methods: {
 | 
			
		||||
    initData(to) {
 | 
			
		||||
      if (to.name === 'EnergyQuantityRealtime') {
 | 
			
		||||
        if (location.href.indexOf('?') > 0) {
 | 
			
		||||
          let arr = location.href.split('?')[1].split('&')
 | 
			
		||||
          this.formConfig[1].defaultSelect = [arr[0].split('=')[1], arr[1].split('=')[1]]
 | 
			
		||||
        } else {
 | 
			
		||||
          this.formConfig[1].defaultSelect = [Date.now() - 7 * 24 * 3600000, Date.now()]
 | 
			
		||||
        }
 | 
			
		||||
        this.queryParams.startTime = this.formConfig[1].defaultSelect[0]
 | 
			
		||||
        this.queryParams.endTime = this.formConfig[1].defaultSelect[1]
 | 
			
		||||
        this.getList()
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    buttonClick(val) {
 | 
			
		||||
      this.queryParams.pageNo = 1;
 | 
			
		||||
      this.queryParams.energyTypeId = val.energyTypeId
 | 
			
		||||
      this.queryParams.startTime = val.timeVal ? val.timeVal[0] : null
 | 
			
		||||
      this.queryParams.endTime = val.timeVal ? val.timeVal[1] : null
 | 
			
		||||
      switch (val.btnName) {
 | 
			
		||||
        case 'search':
 | 
			
		||||
          this.getList()
 | 
			
		||||
          break
 | 
			
		||||
        default:
 | 
			
		||||
          this.exportTable()
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    /** 查询列表 */
 | 
			
		||||
    getList() {
 | 
			
		||||
      getEnergyQuantityRealtimePage(this.queryParams).then(response => {
 | 
			
		||||
        let arr = response.data.list || []
 | 
			
		||||
        arr && arr.map(item => {
 | 
			
		||||
          item.amount = item.amount ? (!isNaN(parseFloat(item.amount)) && isFinite(item.amount) ? item.amount.toFixed(2) : '') : ''
 | 
			
		||||
        })
 | 
			
		||||
        this.list = arr
 | 
			
		||||
        this.total = response.data.total;
 | 
			
		||||
        this.exportList = []
 | 
			
		||||
      });
 | 
			
		||||
    },
 | 
			
		||||
    getTypeList() {
 | 
			
		||||
      getEnergyTypeListAll().then((res) => {
 | 
			
		||||
        this.formConfig[0].selectOptions = res.data || []
 | 
			
		||||
        this.energyTypeList = res.data || []
 | 
			
		||||
      })
 | 
			
		||||
    },
 | 
			
		||||
    selectChange(val) {
 | 
			
		||||
      console.log(val)
 | 
			
		||||
      this.exportList = val
 | 
			
		||||
    },
 | 
			
		||||
    // 勾选导出
 | 
			
		||||
    exportTable() {
 | 
			
		||||
      if (this.exportList.length > 0) {
 | 
			
		||||
        let body = this.exportList.map((x) => [
 | 
			
		||||
          x.objName,
 | 
			
		||||
          x.objCode,
 | 
			
		||||
          x.energyTypeName,
 | 
			
		||||
          x.startValue,
 | 
			
		||||
          x.endValue,
 | 
			
		||||
          x.diffValue,
 | 
			
		||||
          x.amount
 | 
			
		||||
        ])
 | 
			
		||||
        let header = []
 | 
			
		||||
        this.tableProps.map((y) => {
 | 
			
		||||
          header.push(y.label)
 | 
			
		||||
        })
 | 
			
		||||
        body.unshift(header)
 | 
			
		||||
        console.log(body)
 | 
			
		||||
        const filename = '能源抄表.xlsx'
 | 
			
		||||
        const ws_name = 'Sheet1'
 | 
			
		||||
        const wb = XLSX.utils.book_new()
 | 
			
		||||
        const ws = XLSX.utils.aoa_to_sheet(body)
 | 
			
		||||
        XLSX.utils.book_append_sheet(wb, ws, ws_name)
 | 
			
		||||
        let wbout = XLSX.write(wb, {
 | 
			
		||||
          bookType: 'xlsx',
 | 
			
		||||
          bookSST: false,
 | 
			
		||||
          type: 'array'
 | 
			
		||||
        })
 | 
			
		||||
        FileSaver.saveAs(
 | 
			
		||||
          new Blob([wbout], {
 | 
			
		||||
            type: 'application/octet-stream'
 | 
			
		||||
          }),
 | 
			
		||||
          filename
 | 
			
		||||
        )
 | 
			
		||||
      } else {
 | 
			
		||||
        this.$modal.msgWarning('请勾选需要导出的数据')
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
	name: 'EnergyQuantityRealtime',
 | 
			
		||||
	mixins: [tableHeightMixin],
 | 
			
		||||
	data() {
 | 
			
		||||
		return {
 | 
			
		||||
			formConfig: [
 | 
			
		||||
				{
 | 
			
		||||
					type: 'select',
 | 
			
		||||
					label: '能源类型',
 | 
			
		||||
					labelField: 'labelName',
 | 
			
		||||
					selectOptions: [],
 | 
			
		||||
					param: 'energyTypeId',
 | 
			
		||||
					filterable: true,
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					type: 'datePicker',
 | 
			
		||||
					label: '时间',
 | 
			
		||||
					dateType: 'datetimerange',
 | 
			
		||||
					format: 'yyyy-MM-dd HH:mm:ss',
 | 
			
		||||
					valueFormat: 'timestamp',
 | 
			
		||||
					rangeSeparator: '-',
 | 
			
		||||
					startPlaceholder: '开始时间',
 | 
			
		||||
					endPlaceholder: '结束时间',
 | 
			
		||||
					param: 'timeVal',
 | 
			
		||||
					defaultSelect: [],
 | 
			
		||||
					width: 350,
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					type: 'button',
 | 
			
		||||
					btnName: '查询',
 | 
			
		||||
					name: 'search',
 | 
			
		||||
					color: 'primary',
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					type: 'separate',
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					type: this.$auth.hasPermi('base:energy-quantity-realtime:export')
 | 
			
		||||
						? 'button'
 | 
			
		||||
						: '',
 | 
			
		||||
					btnName: '导出',
 | 
			
		||||
					name: 'export',
 | 
			
		||||
					color: 'primary',
 | 
			
		||||
					plain: true,
 | 
			
		||||
				},
 | 
			
		||||
			],
 | 
			
		||||
			tableProps,
 | 
			
		||||
			// 总条数
 | 
			
		||||
			total: 0,
 | 
			
		||||
			// 班次基础信息列表
 | 
			
		||||
			list: [],
 | 
			
		||||
			// 查询参数
 | 
			
		||||
			queryParams: {
 | 
			
		||||
				pageNo: 1,
 | 
			
		||||
				pageSize: 20,
 | 
			
		||||
				energyTypeId: '',
 | 
			
		||||
				startTime: null,
 | 
			
		||||
				endTime: null,
 | 
			
		||||
			},
 | 
			
		||||
			energyTypeList: [],
 | 
			
		||||
			exportList: [],
 | 
			
		||||
		};
 | 
			
		||||
	},
 | 
			
		||||
	created() {
 | 
			
		||||
		if (location.href.indexOf('?') > 0) {
 | 
			
		||||
			let arr = location.href.split('?')[1].split('&');
 | 
			
		||||
			this.formConfig[1].defaultSelect = [
 | 
			
		||||
				arr[0].split('=')[1],
 | 
			
		||||
				arr[1].split('=')[1],
 | 
			
		||||
			];
 | 
			
		||||
		} else {
 | 
			
		||||
			this.formConfig[1].defaultSelect = [
 | 
			
		||||
				Date.now() - 7 * 24 * 3600000,
 | 
			
		||||
				Date.now(),
 | 
			
		||||
			];
 | 
			
		||||
		}
 | 
			
		||||
		this.queryParams.startTime = this.formConfig[1].defaultSelect[0];
 | 
			
		||||
		this.queryParams.endTime = this.formConfig[1].defaultSelect[1];
 | 
			
		||||
		this.getList();
 | 
			
		||||
		this.getTypeList();
 | 
			
		||||
	},
 | 
			
		||||
	watch: {
 | 
			
		||||
		$route: 'initData',
 | 
			
		||||
	},
 | 
			
		||||
	methods: {
 | 
			
		||||
		initData(to) {
 | 
			
		||||
			if (to.name === 'EnergyQuantityRealtime') {
 | 
			
		||||
				if (location.href.indexOf('?') > 0) {
 | 
			
		||||
					let arr = location.href.split('?')[1].split('&');
 | 
			
		||||
					this.formConfig[1].defaultSelect = [
 | 
			
		||||
						arr[0].split('=')[1],
 | 
			
		||||
						arr[1].split('=')[1],
 | 
			
		||||
					];
 | 
			
		||||
				} else {
 | 
			
		||||
					this.formConfig[1].defaultSelect = [
 | 
			
		||||
						Date.now() - 7 * 24 * 3600000,
 | 
			
		||||
						Date.now(),
 | 
			
		||||
					];
 | 
			
		||||
				}
 | 
			
		||||
				this.queryParams.startTime = this.formConfig[1].defaultSelect[0];
 | 
			
		||||
				this.queryParams.endTime = this.formConfig[1].defaultSelect[1];
 | 
			
		||||
				this.getList();
 | 
			
		||||
			}
 | 
			
		||||
		},
 | 
			
		||||
		buttonClick(val) {
 | 
			
		||||
			this.queryParams.pageNo = 1;
 | 
			
		||||
			this.queryParams.energyTypeId = val.energyTypeId;
 | 
			
		||||
			this.queryParams.startTime = val.timeVal ? val.timeVal[0] : null;
 | 
			
		||||
			this.queryParams.endTime = val.timeVal ? val.timeVal[1] : null;
 | 
			
		||||
			switch (val.btnName) {
 | 
			
		||||
				case 'search':
 | 
			
		||||
					this.getList();
 | 
			
		||||
					break;
 | 
			
		||||
				default:
 | 
			
		||||
					this.exportTable();
 | 
			
		||||
			}
 | 
			
		||||
		},
 | 
			
		||||
		/** 查询列表 */
 | 
			
		||||
		getList() {
 | 
			
		||||
			getEnergyQuantityRealtimePage(this.queryParams).then((response) => {
 | 
			
		||||
				let arr = response.data.list || [];
 | 
			
		||||
				arr &&
 | 
			
		||||
					arr.map((item) => {
 | 
			
		||||
						item.amount = item.amount
 | 
			
		||||
							? !isNaN(parseFloat(item.amount)) && isFinite(item.amount)
 | 
			
		||||
								? item.amount.toFixed(2)
 | 
			
		||||
								: ''
 | 
			
		||||
							: '';
 | 
			
		||||
						this.getDictDatas('energy_type').map((subItem) => {
 | 
			
		||||
							if (item.energyTypeName === subItem.value) {
 | 
			
		||||
								item.energyTypeLabel = subItem.label;
 | 
			
		||||
							}
 | 
			
		||||
						});
 | 
			
		||||
					});
 | 
			
		||||
				this.list = arr;
 | 
			
		||||
				this.total = response.data.total;
 | 
			
		||||
				this.exportList = [];
 | 
			
		||||
			});
 | 
			
		||||
		},
 | 
			
		||||
		getTypeList() {
 | 
			
		||||
			getEnergyTypeListAll().then((res) => {
 | 
			
		||||
				this.formConfig[0].selectOptions = res.data || [];
 | 
			
		||||
				this.energyTypeList = res.data || [];
 | 
			
		||||
			});
 | 
			
		||||
		},
 | 
			
		||||
		selectChange(val) {
 | 
			
		||||
			console.log(val);
 | 
			
		||||
			this.exportList = val;
 | 
			
		||||
		},
 | 
			
		||||
		// 勾选导出
 | 
			
		||||
		exportTable() {
 | 
			
		||||
			if (this.exportList.length > 0) {
 | 
			
		||||
				let body = this.exportList.map((x) => [
 | 
			
		||||
					x.objName,
 | 
			
		||||
					x.objCode,
 | 
			
		||||
					x.energyTypeLabel,
 | 
			
		||||
					x.startValue,
 | 
			
		||||
					x.endValue,
 | 
			
		||||
					x.diffValue,
 | 
			
		||||
					x.amount,
 | 
			
		||||
				]);
 | 
			
		||||
				let header = [];
 | 
			
		||||
				this.tableProps.map((y) => {
 | 
			
		||||
					header.push(y.label);
 | 
			
		||||
				});
 | 
			
		||||
				body.unshift(header);
 | 
			
		||||
				console.log(body);
 | 
			
		||||
				const filename = '能源抄表.xlsx';
 | 
			
		||||
				const ws_name = 'Sheet1';
 | 
			
		||||
				const wb = XLSX.utils.book_new();
 | 
			
		||||
				const ws = XLSX.utils.aoa_to_sheet(body);
 | 
			
		||||
				XLSX.utils.book_append_sheet(wb, ws, ws_name);
 | 
			
		||||
				let wbout = XLSX.write(wb, {
 | 
			
		||||
					bookType: 'xlsx',
 | 
			
		||||
					bookSST: false,
 | 
			
		||||
					type: 'array',
 | 
			
		||||
				});
 | 
			
		||||
				FileSaver.saveAs(
 | 
			
		||||
					new Blob([wbout], {
 | 
			
		||||
						type: 'application/octet-stream',
 | 
			
		||||
					}),
 | 
			
		||||
					filename
 | 
			
		||||
				);
 | 
			
		||||
			} else {
 | 
			
		||||
				this.$modal.msgWarning('请勾选需要导出的数据');
 | 
			
		||||
			}
 | 
			
		||||
		},
 | 
			
		||||
	},
 | 
			
		||||
};
 | 
			
		||||
</script>
 | 
			
		||||
 
 | 
			
		||||
@@ -40,6 +40,7 @@ import { getEnergyTypePage, deleteEnergyType } from '@/api/base/energyType';
 | 
			
		||||
import { publicFormatter } from '@/utils/dict';
 | 
			
		||||
import InnerTable from './components/InnerTable';
 | 
			
		||||
import EnergyTypeAdd from './components/energyTypeAdd';
 | 
			
		||||
import tableHeightMixin from '@/mixins/lb/tableHeightMixin';
 | 
			
		||||
const tableProps = [
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'code',
 | 
			
		||||
@@ -48,9 +49,8 @@ const tableProps = [
 | 
			
		||||
		minWidth: 150,
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'name',
 | 
			
		||||
		prop: 'energyTypeLabel',
 | 
			
		||||
		label: '能源类型',
 | 
			
		||||
		filter: publicFormatter('energy_type'),
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'unit',
 | 
			
		||||
@@ -70,6 +70,7 @@ const tableProps = [
 | 
			
		||||
export default {
 | 
			
		||||
	name: 'EnergyType',
 | 
			
		||||
	components: { EnergyTypeAdd },
 | 
			
		||||
	mixins: [tableHeightMixin],
 | 
			
		||||
	data() {
 | 
			
		||||
		return {
 | 
			
		||||
			formConfig: [
 | 
			
		||||
@@ -96,7 +97,7 @@ export default {
 | 
			
		||||
					  }
 | 
			
		||||
					: undefined,
 | 
			
		||||
			].filter((v) => v),
 | 
			
		||||
			tableH: this.tableHeight(220),
 | 
			
		||||
			heightNum: 220,
 | 
			
		||||
			pricingMethodList: [
 | 
			
		||||
				{ value: 0, label: '分时间段计价' },
 | 
			
		||||
				{ value: 1, label: '分使用量计价' },
 | 
			
		||||
@@ -118,9 +119,6 @@ export default {
 | 
			
		||||
		};
 | 
			
		||||
	},
 | 
			
		||||
	created() {
 | 
			
		||||
		window.addEventListener('resize', () => {
 | 
			
		||||
			this.tableH = this.tableHeight(220);
 | 
			
		||||
		});
 | 
			
		||||
		this.getList();
 | 
			
		||||
	},
 | 
			
		||||
	methods: {
 | 
			
		||||
@@ -142,6 +140,11 @@ export default {
 | 
			
		||||
								item.pricingMethod = i.label;
 | 
			
		||||
							}
 | 
			
		||||
						});
 | 
			
		||||
						this.getDictDatas('energy_type').map((subItem) => {
 | 
			
		||||
							if (item.name === subItem.value) {
 | 
			
		||||
								item.energyTypeLabel = subItem.label;
 | 
			
		||||
							}
 | 
			
		||||
						});
 | 
			
		||||
					});
 | 
			
		||||
				this.list = arr;
 | 
			
		||||
				this.total = response.data.total;
 | 
			
		||||
@@ -174,8 +177,9 @@ export default {
 | 
			
		||||
		},
 | 
			
		||||
		/** 删除按钮操作 */
 | 
			
		||||
		handleDelete(row) {
 | 
			
		||||
			console.log(row);
 | 
			
		||||
			this.$modal
 | 
			
		||||
				.confirm('是否确认删除能源类型为"' + row.name + '"的数据项?')
 | 
			
		||||
				.confirm('是否确认删除能源类型为"' + row.energyTypeLabel + '"的数据项?')
 | 
			
		||||
				.then(function () {
 | 
			
		||||
					return deleteEnergyType(row.id);
 | 
			
		||||
				})
 | 
			
		||||
 
 | 
			
		||||
@@ -0,0 +1,76 @@
 | 
			
		||||
<template>
 | 
			
		||||
	<el-form
 | 
			
		||||
		ref="form"
 | 
			
		||||
		label-width="100px"
 | 
			
		||||
		:model="form">
 | 
			
		||||
		<el-form-item
 | 
			
		||||
			label="能源类型"
 | 
			
		||||
			prop="energyType">
 | 
			
		||||
			<el-input v-model="form.energyType"></el-input>
 | 
			
		||||
		</el-form-item>
 | 
			
		||||
		<el-form-item
 | 
			
		||||
			label="能源表名"
 | 
			
		||||
			prop="tableIds">
 | 
			
		||||
			<el-select
 | 
			
		||||
				v-model="form.tableIds"
 | 
			
		||||
				placeholder="请选择"
 | 
			
		||||
				style="width: 100%"
 | 
			
		||||
				:multiple="true"
 | 
			
		||||
				filterable>
 | 
			
		||||
				<el-option
 | 
			
		||||
					v-for="dict in getDictDatas('table_name')"
 | 
			
		||||
					:key="dict.id"
 | 
			
		||||
					:label="dict.label"
 | 
			
		||||
					:value="dict.id" />
 | 
			
		||||
			</el-select>
 | 
			
		||||
		</el-form-item>
 | 
			
		||||
	</el-form>
 | 
			
		||||
</template>
 | 
			
		||||
<script>
 | 
			
		||||
import {
 | 
			
		||||
	energyTableGet,
 | 
			
		||||
	energyTableUpdate,
 | 
			
		||||
} from '@/api/base/energyQuantityManual';
 | 
			
		||||
export default {
 | 
			
		||||
	name: 'TableNameConfigUpdate',
 | 
			
		||||
	data() {
 | 
			
		||||
		return {
 | 
			
		||||
			form: {
 | 
			
		||||
				energyType: '',
 | 
			
		||||
				energyTypeId: '',
 | 
			
		||||
				tableIds: [],
 | 
			
		||||
			},
 | 
			
		||||
		};
 | 
			
		||||
	},
 | 
			
		||||
	methods: {
 | 
			
		||||
		init(id) {
 | 
			
		||||
			energyTableGet({ energyTypeId: id }).then((res) => {
 | 
			
		||||
				this.form.energyType = res.data.energyType || '';
 | 
			
		||||
				this.form.energyTypeId = res.data.energyTypeId || '';
 | 
			
		||||
				this.form.tableIds =
 | 
			
		||||
					res.data.tableObjs &&
 | 
			
		||||
					res.data.tableObjs.map((item) => {
 | 
			
		||||
						return item.id;
 | 
			
		||||
					});
 | 
			
		||||
			});
 | 
			
		||||
		},
 | 
			
		||||
		submitForm() {
 | 
			
		||||
			this.$refs['form'].validate((valid) => {
 | 
			
		||||
				// 编辑
 | 
			
		||||
				energyTableUpdate({ ...this.form }).then((res) => {
 | 
			
		||||
					if (res.code === 0) {
 | 
			
		||||
						this.$modal.msgSuccess('操作成功');
 | 
			
		||||
						this.$emit('successSubmit');
 | 
			
		||||
					}
 | 
			
		||||
				});
 | 
			
		||||
			});
 | 
			
		||||
		},
 | 
			
		||||
		formClear() {
 | 
			
		||||
			this.form.energyType = '';
 | 
			
		||||
			this.form.energyTypeId = '';
 | 
			
		||||
			this.form.tableIds = [];
 | 
			
		||||
			this.isEdit = false;
 | 
			
		||||
		},
 | 
			
		||||
	},
 | 
			
		||||
};
 | 
			
		||||
</script>
 | 
			
		||||
							
								
								
									
										108
									
								
								src/views/energy/base/tableNameConfig/index.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										108
									
								
								src/views/energy/base/tableNameConfig/index.vue
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,108 @@
 | 
			
		||||
<template>
 | 
			
		||||
	<div class="app-container">
 | 
			
		||||
		<!-- 列表 -->
 | 
			
		||||
		<base-table
 | 
			
		||||
			:page="queryParams.pageNo"
 | 
			
		||||
			:limit="queryParams.pageSize"
 | 
			
		||||
			:table-props="tableProps"
 | 
			
		||||
			:table-data="list"
 | 
			
		||||
			:max-height="tableH">
 | 
			
		||||
			<method-btn
 | 
			
		||||
				v-if="tableBtn.length"
 | 
			
		||||
				slot="handleBtn"
 | 
			
		||||
				:width="80"
 | 
			
		||||
				label="操作"
 | 
			
		||||
				:method-list="tableBtn"
 | 
			
		||||
				@clickBtn="handleClick" />
 | 
			
		||||
		</base-table>
 | 
			
		||||
		<!-- 新增 -->
 | 
			
		||||
		<base-dialog
 | 
			
		||||
			dialogTitle="编辑"
 | 
			
		||||
			:dialogVisible="centervisible"
 | 
			
		||||
			@cancel="handleCancel"
 | 
			
		||||
			@confirm="handleConfirm"
 | 
			
		||||
			:before-close="handleCancel">
 | 
			
		||||
			<table-name-config-update
 | 
			
		||||
				ref="tableNameConfigU"
 | 
			
		||||
				@successSubmit="successSubmit" />
 | 
			
		||||
		</base-dialog>
 | 
			
		||||
	</div>
 | 
			
		||||
</template>
 | 
			
		||||
<script>
 | 
			
		||||
import { energyTablePage } from '@/api/base/energyQuantityManual';
 | 
			
		||||
import { publicFormatter } from '@/utils/dict';
 | 
			
		||||
import tableNameConfigUpdate from './components/tableNameConfigUpdate.vue';
 | 
			
		||||
import tableHeightMixin from '@/mixins/lb/tableHeightMixin';
 | 
			
		||||
const tableProps = [
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'energyType',
 | 
			
		||||
		label: '能源类型',
 | 
			
		||||
		width: 200,
 | 
			
		||||
		filter: publicFormatter('energy_type'),
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'tableName',
 | 
			
		||||
		label: '能源表名',
 | 
			
		||||
	},
 | 
			
		||||
];
 | 
			
		||||
export default {
 | 
			
		||||
	name: 'TableNameConfig',
 | 
			
		||||
	components: { tableNameConfigUpdate },
 | 
			
		||||
	data() {
 | 
			
		||||
		return {
 | 
			
		||||
			tableProps,
 | 
			
		||||
			tableBtn: [
 | 
			
		||||
				this.$auth.hasPermi('base:table-name-config:edit')
 | 
			
		||||
					? {
 | 
			
		||||
							type: 'edit',
 | 
			
		||||
							btnName: '编辑',
 | 
			
		||||
					  }
 | 
			
		||||
					: undefined,
 | 
			
		||||
			].filter((v) => v),
 | 
			
		||||
			list: [],
 | 
			
		||||
			queryParams: {
 | 
			
		||||
				pageNo: 1,
 | 
			
		||||
				pageSize: 100,
 | 
			
		||||
			},
 | 
			
		||||
			heightNum: 165,
 | 
			
		||||
			centervisible: false,
 | 
			
		||||
		};
 | 
			
		||||
	},
 | 
			
		||||
	mixins: [tableHeightMixin],
 | 
			
		||||
	created() {
 | 
			
		||||
		this.getList();
 | 
			
		||||
	},
 | 
			
		||||
	methods: {
 | 
			
		||||
		getList() {
 | 
			
		||||
			energyTablePage({ ...this.queryParams }).then((res) => {
 | 
			
		||||
				let temp = res.data.list || [];
 | 
			
		||||
				this.list = temp.map((item) => {
 | 
			
		||||
					return {
 | 
			
		||||
						energyType: item.energyType,
 | 
			
		||||
						energyTypeId: item.energyTypeId,
 | 
			
		||||
						tableName: item.tables.join('、'),
 | 
			
		||||
					};
 | 
			
		||||
				});
 | 
			
		||||
			});
 | 
			
		||||
		},
 | 
			
		||||
		handleClick(val) {
 | 
			
		||||
			console.log('编辑');
 | 
			
		||||
			this.centervisible = true;
 | 
			
		||||
			this.$nextTick(() => {
 | 
			
		||||
				this.$refs.tableNameConfigU.init(val.data.energyTypeId);
 | 
			
		||||
			});
 | 
			
		||||
		},
 | 
			
		||||
		handleCancel() {
 | 
			
		||||
			this.$refs.tableNameConfigU.formClear();
 | 
			
		||||
			this.centervisible = false;
 | 
			
		||||
		},
 | 
			
		||||
		handleConfirm() {
 | 
			
		||||
			this.$refs.tableNameConfigU.submitForm();
 | 
			
		||||
		},
 | 
			
		||||
		successSubmit() {
 | 
			
		||||
			this.handleCancel();
 | 
			
		||||
			this.getList();
 | 
			
		||||
		},
 | 
			
		||||
	},
 | 
			
		||||
};
 | 
			
		||||
</script>
 | 
			
		||||
@@ -33,11 +33,28 @@
 | 
			
		||||
						v-model="objIds"
 | 
			
		||||
						:options="objList"
 | 
			
		||||
						:props="{ checkStrictly: true, value: 'id', label: 'name' }"
 | 
			
		||||
						popper-class="cascaderParent"
 | 
			
		||||
						@change="selectObj"
 | 
			
		||||
						clearable></el-cascader>
 | 
			
		||||
				</el-form-item>
 | 
			
		||||
			</el-col>
 | 
			
		||||
			<el-col :span="12">
 | 
			
		||||
				<el-form-item
 | 
			
		||||
					label="监控能源类型"
 | 
			
		||||
					prop="energyTypeId">
 | 
			
		||||
					<el-select
 | 
			
		||||
						v-model="form.energyTypeId"
 | 
			
		||||
						placeholder="请选择"
 | 
			
		||||
						style="width: 100%"
 | 
			
		||||
						filterable
 | 
			
		||||
						@change="toggleType">
 | 
			
		||||
						<el-option
 | 
			
		||||
							v-for="item in this.energyTypeList"
 | 
			
		||||
							:key="item.id"
 | 
			
		||||
							:label="item.labelName"
 | 
			
		||||
							:value="item.id"></el-option>
 | 
			
		||||
					</el-select>
 | 
			
		||||
				</el-form-item>
 | 
			
		||||
			</el-col>
 | 
			
		||||
			<el-col
 | 
			
		||||
				:span="12"
 | 
			
		||||
				v-if="form.method == 2">
 | 
			
		||||
@@ -56,24 +73,6 @@
 | 
			
		||||
					</el-select>
 | 
			
		||||
				</el-form-item>
 | 
			
		||||
			</el-col>
 | 
			
		||||
			<el-col :span="12">
 | 
			
		||||
				<el-form-item
 | 
			
		||||
					label="监控能源类型"
 | 
			
		||||
					prop="energyTypeId">
 | 
			
		||||
					<el-select
 | 
			
		||||
						v-model="form.energyTypeId"
 | 
			
		||||
						placeholder="请选择"
 | 
			
		||||
						style="width: 100%"
 | 
			
		||||
						filterable
 | 
			
		||||
						@change="toggleType">
 | 
			
		||||
						<el-option
 | 
			
		||||
							v-for="item in this.energyTypeList"
 | 
			
		||||
							:key="item.id"
 | 
			
		||||
							:label="item.name"
 | 
			
		||||
							:value="item.id"></el-option>
 | 
			
		||||
					</el-select>
 | 
			
		||||
				</el-form-item>
 | 
			
		||||
			</el-col>
 | 
			
		||||
			<el-col
 | 
			
		||||
				:span="12"
 | 
			
		||||
				v-if="form.method == 1">
 | 
			
		||||
@@ -183,6 +182,7 @@ export default {
 | 
			
		||||
				limitType: '',
 | 
			
		||||
				minValue: 0,
 | 
			
		||||
				maxValue: 0,
 | 
			
		||||
				tableName: '',
 | 
			
		||||
			},
 | 
			
		||||
			objIds: [], // 回显数组
 | 
			
		||||
			isEdit: false, //是否是编辑
 | 
			
		||||
@@ -215,6 +215,9 @@ export default {
 | 
			
		||||
					if (res.code === 0) {
 | 
			
		||||
						this.form = res.data;
 | 
			
		||||
						this.form.plcParamId = res.data.plcParamId || '';
 | 
			
		||||
						this.form.tableName = this.form.tableName
 | 
			
		||||
							? this.form.tableName + ''
 | 
			
		||||
							: '';
 | 
			
		||||
						this.form.method = this.form.method ? this.form.method + '' : '';
 | 
			
		||||
						this.form.limitType = this.form.limitType
 | 
			
		||||
							? this.form.limitType + ''
 | 
			
		||||
@@ -295,7 +298,7 @@ export default {
 | 
			
		||||
		},
 | 
			
		||||
		selectObj(val) {
 | 
			
		||||
			this.form.objectId = val[val.length - 1];
 | 
			
		||||
			this.form.objectType = val.length - 1;
 | 
			
		||||
			this.form.objectType = val.length;
 | 
			
		||||
			if (this.form.energyTypeId && this.form.type) {
 | 
			
		||||
				this.getDetailList();
 | 
			
		||||
				this.form.plcParamId = '';
 | 
			
		||||
@@ -353,8 +356,3 @@ export default {
 | 
			
		||||
	},
 | 
			
		||||
};
 | 
			
		||||
</script>
 | 
			
		||||
<style>
 | 
			
		||||
.cascaderParent .el-cascader-panel .el-scrollbar:first-child .el-radio {
 | 
			
		||||
	display: none;
 | 
			
		||||
}
 | 
			
		||||
</style>
 | 
			
		||||
 
 | 
			
		||||
@@ -48,9 +48,10 @@ import {
 | 
			
		||||
	deleteEnergyLimit,
 | 
			
		||||
} from '@/api/monitoring/energyLimit';
 | 
			
		||||
import { getEnergyTypeListAll } from '@/api/base/energyType';
 | 
			
		||||
import { getTree } from '@/api/base/factory';
 | 
			
		||||
import { getTree } from '@/api/analysis/energyAnalysis';
 | 
			
		||||
import { publicFormatter } from '@/utils/dict';
 | 
			
		||||
import EnergyLimitAdd from './components/energyLimitAdd';
 | 
			
		||||
import tableHeightMixin from '@/mixins/lb/tableHeightMixin';
 | 
			
		||||
const tableProps = [
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'method',
 | 
			
		||||
@@ -60,20 +61,27 @@ const tableProps = [
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'objName',
 | 
			
		||||
		label: '监控对象',
 | 
			
		||||
		minWidth: 100,
 | 
			
		||||
		showOverflowtooltip: true,
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'objCode',
 | 
			
		||||
		label: '对象编码',
 | 
			
		||||
		minWidth: 140,
 | 
			
		||||
		showOverflowtooltip: true,
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'tableName',
 | 
			
		||||
		label: '能源表名',
 | 
			
		||||
		filter: publicFormatter('table_name'),
 | 
			
		||||
		minWidth: 120,
 | 
			
		||||
		showOverflowtooltip: true,
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'energyType',
 | 
			
		||||
		label: '能源类型',
 | 
			
		||||
		filter: publicFormatter('energy_type'),
 | 
			
		||||
		showOverflowtooltip: true,
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'type',
 | 
			
		||||
@@ -97,6 +105,7 @@ const tableProps = [
 | 
			
		||||
export default {
 | 
			
		||||
	name: 'EnergyLimit',
 | 
			
		||||
	components: { EnergyLimitAdd },
 | 
			
		||||
	mixins: [tableHeightMixin],
 | 
			
		||||
	data() {
 | 
			
		||||
		return {
 | 
			
		||||
			formConfig: [
 | 
			
		||||
@@ -104,6 +113,7 @@ export default {
 | 
			
		||||
					type: 'select',
 | 
			
		||||
					label: '能源类型',
 | 
			
		||||
					selectOptions: [],
 | 
			
		||||
					labelField: 'labelName',
 | 
			
		||||
					param: 'energyTypeId',
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
@@ -148,7 +158,6 @@ export default {
 | 
			
		||||
					  }
 | 
			
		||||
					: undefined,
 | 
			
		||||
			].filter((v) => v),
 | 
			
		||||
			tableH: this.tableHeight(260),
 | 
			
		||||
			// 总条数
 | 
			
		||||
			total: 0,
 | 
			
		||||
			// 班次基础信息列表
 | 
			
		||||
@@ -173,9 +182,6 @@ export default {
 | 
			
		||||
		};
 | 
			
		||||
	},
 | 
			
		||||
	created() {
 | 
			
		||||
		window.addEventListener('resize', () => {
 | 
			
		||||
			this.tableH = this.tableHeight(260);
 | 
			
		||||
		});
 | 
			
		||||
		this.getList();
 | 
			
		||||
		this.getTypeList();
 | 
			
		||||
		// 获取对象树形结构
 | 
			
		||||
 
 | 
			
		||||
@@ -1,248 +1,270 @@
 | 
			
		||||
<template>
 | 
			
		||||
  <div class="app-container energyOverlimitLog">
 | 
			
		||||
 | 
			
		||||
    <!-- 搜索工作栏 -->
 | 
			
		||||
    <search-bar :formConfigs="formConfig" ref="searchBarForm" @headBtnClick="buttonClick" />
 | 
			
		||||
    <el-tabs v-model="activeName" @tab-click="toggleTab">
 | 
			
		||||
      <el-tab-pane label="自动抄表" name="auto"></el-tab-pane>
 | 
			
		||||
      <el-tab-pane label="手动抄表" name="manual"></el-tab-pane>
 | 
			
		||||
    </el-tabs>
 | 
			
		||||
    <!-- 列表 -->
 | 
			
		||||
    <div v-if="activeName === 'auto'">
 | 
			
		||||
      <base-table :page="queryParams.pageNo" :limit="queryParams.pageSize" :table-props="tableProps" :table-data="list"
 | 
			
		||||
        :max-height="tableH" />
 | 
			
		||||
    </div>
 | 
			
		||||
    <div v-if="activeName === 'manual'">
 | 
			
		||||
      <base-table :page="queryParams.pageNo" :limit="queryParams.pageSize" :table-props="tableProps2"
 | 
			
		||||
        :table-data="list2" :max-height="tableH" />
 | 
			
		||||
    </div>
 | 
			
		||||
    <pagination :page.sync="queryParams.pageNo" :limit.sync="queryParams.pageSize" :total="total"
 | 
			
		||||
      @pagination="getList" />
 | 
			
		||||
  </div>
 | 
			
		||||
	<div class="app-container energyOverlimitLog">
 | 
			
		||||
		<!-- 搜索工作栏 -->
 | 
			
		||||
		<search-bar
 | 
			
		||||
			:formConfigs="formConfig"
 | 
			
		||||
			ref="searchBarForm"
 | 
			
		||||
			@headBtnClick="buttonClick" />
 | 
			
		||||
		<el-tabs
 | 
			
		||||
			v-model="activeName"
 | 
			
		||||
			@tab-click="toggleTab">
 | 
			
		||||
			<el-tab-pane
 | 
			
		||||
				label="自动抄表"
 | 
			
		||||
				name="auto"></el-tab-pane>
 | 
			
		||||
			<el-tab-pane
 | 
			
		||||
				label="手动抄表"
 | 
			
		||||
				name="manual"></el-tab-pane>
 | 
			
		||||
		</el-tabs>
 | 
			
		||||
		<!-- 列表 -->
 | 
			
		||||
		<div v-if="activeName === 'auto'">
 | 
			
		||||
			<base-table
 | 
			
		||||
				:page="queryParams.pageNo"
 | 
			
		||||
				:limit="queryParams.pageSize"
 | 
			
		||||
				:table-props="tableProps"
 | 
			
		||||
				:table-data="list"
 | 
			
		||||
				:max-height="tableH" />
 | 
			
		||||
		</div>
 | 
			
		||||
		<div v-if="activeName === 'manual'">
 | 
			
		||||
			<base-table
 | 
			
		||||
				:page="queryParams.pageNo"
 | 
			
		||||
				:limit="queryParams.pageSize"
 | 
			
		||||
				:table-props="tableProps2"
 | 
			
		||||
				:table-data="list2"
 | 
			
		||||
				:max-height="tableH" />
 | 
			
		||||
		</div>
 | 
			
		||||
		<pagination
 | 
			
		||||
			:page.sync="queryParams.pageNo"
 | 
			
		||||
			:limit.sync="queryParams.pageSize"
 | 
			
		||||
			:total="total"
 | 
			
		||||
			@pagination="getList" />
 | 
			
		||||
	</div>
 | 
			
		||||
</template>
 | 
			
		||||
 | 
			
		||||
<script>
 | 
			
		||||
import { getEnergyOverlimitLogPage } from "@/api/monitoring/energyOverlimitLog";
 | 
			
		||||
import { getEnergyTypeListAll } from "@/api/base/energyType";
 | 
			
		||||
import { publicFormatter } from '@/utils/dict'
 | 
			
		||||
import { parseTime } from '@/utils/ruoyi'
 | 
			
		||||
import { getEnergyOverlimitLogPage } from '@/api/monitoring/energyOverlimitLog';
 | 
			
		||||
import { getEnergyTypeListAll } from '@/api/base/energyType';
 | 
			
		||||
import { publicFormatter } from '@/utils/dict';
 | 
			
		||||
import { parseTime } from '@/utils/ruoyi';
 | 
			
		||||
import tableHeightMixin from '@/mixins/lb/tableHeightMixin';
 | 
			
		||||
const tableProps = [
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'objName',
 | 
			
		||||
    label: '监控对象'
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'objCode',
 | 
			
		||||
    label: '对象编码'
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'energyType',
 | 
			
		||||
    label: '能源类型'
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'type',
 | 
			
		||||
    label: '监控模式'
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'paramName',
 | 
			
		||||
    label: '监控参数'
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'limitType',
 | 
			
		||||
    label: '指标类型',
 | 
			
		||||
    filter: publicFormatter('monitor_index_type')
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'realityValue',
 | 
			
		||||
    label: '实际值'
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'limitValue',
 | 
			
		||||
    label: '阈值'
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'overValue',
 | 
			
		||||
    label: '超出值'
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'time',
 | 
			
		||||
    label: '提醒时间',
 | 
			
		||||
    filter: parseTime,
 | 
			
		||||
    minWidth: 160
 | 
			
		||||
  }
 | 
			
		||||
]
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'objName',
 | 
			
		||||
		label: '监控对象',
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'objCode',
 | 
			
		||||
		label: '对象编码',
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'energyType',
 | 
			
		||||
		label: '能源类型',
 | 
			
		||||
		filter: publicFormatter('energy_type'),
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'type',
 | 
			
		||||
		label: '监控模式',
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'paramName',
 | 
			
		||||
		label: '监控参数',
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'limitType',
 | 
			
		||||
		label: '指标类型',
 | 
			
		||||
		filter: publicFormatter('monitor_index_type'),
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'realityValue',
 | 
			
		||||
		label: '实际值',
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'limitValue',
 | 
			
		||||
		label: '阈值',
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'overValue',
 | 
			
		||||
		label: '超出值',
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'time',
 | 
			
		||||
		label: '提醒时间',
 | 
			
		||||
		filter: parseTime,
 | 
			
		||||
		minWidth: 160,
 | 
			
		||||
	},
 | 
			
		||||
];
 | 
			
		||||
const tableProps2 = [
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'energyType',
 | 
			
		||||
    label: '能源类型'
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'limitType',
 | 
			
		||||
    label: '指标类型',
 | 
			
		||||
    filter: publicFormatter('monitor_index_type')
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'realityValue',
 | 
			
		||||
    label: '实际值'
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'limitValue',
 | 
			
		||||
    label: '阈值'
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'overValue',
 | 
			
		||||
    label: '超出值'
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'time',
 | 
			
		||||
    label: '提醒时间',
 | 
			
		||||
    filter: parseTime,
 | 
			
		||||
    minWidth: 160
 | 
			
		||||
  }
 | 
			
		||||
]
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'energyType',
 | 
			
		||||
		label: '能源类型',
 | 
			
		||||
		filter: publicFormatter('energy_type'),
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'limitType',
 | 
			
		||||
		label: '指标类型',
 | 
			
		||||
		filter: publicFormatter('monitor_index_type'),
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'realityValue',
 | 
			
		||||
		label: '实际值',
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'limitValue',
 | 
			
		||||
		label: '阈值',
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'overValue',
 | 
			
		||||
		label: '超出值',
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'time',
 | 
			
		||||
		label: '提醒时间',
 | 
			
		||||
		filter: parseTime,
 | 
			
		||||
		minWidth: 160,
 | 
			
		||||
	},
 | 
			
		||||
];
 | 
			
		||||
export default {
 | 
			
		||||
  name: "EnergyOverlimitLog",
 | 
			
		||||
  data() {
 | 
			
		||||
    return {
 | 
			
		||||
      formConfig: [
 | 
			
		||||
        {
 | 
			
		||||
          type: 'select',
 | 
			
		||||
          label: '能源类型',
 | 
			
		||||
          selectOptions: [],
 | 
			
		||||
          param: 'energyTypeId'
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          type: 'select',
 | 
			
		||||
          label: '指标类型',
 | 
			
		||||
          selectOptions: this.getDictDatas(this.DICT_TYPE.MONITOR_INDEX_TYPE),
 | 
			
		||||
          labelField: 'label',
 | 
			
		||||
          valueField: 'value',
 | 
			
		||||
          param: 'indexType'
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          type: 'button',
 | 
			
		||||
          btnName: '查询',
 | 
			
		||||
          name: 'search',
 | 
			
		||||
          color: 'primary'
 | 
			
		||||
        }
 | 
			
		||||
      ],
 | 
			
		||||
      activeName: 'auto',
 | 
			
		||||
      tableProps,
 | 
			
		||||
      tableProps2,
 | 
			
		||||
      tableH: this.tableHeight(260),
 | 
			
		||||
      total: 0,
 | 
			
		||||
      list: [],
 | 
			
		||||
      list2: [],
 | 
			
		||||
      // 查询参数
 | 
			
		||||
      queryParams: {
 | 
			
		||||
        pageNo: 1,
 | 
			
		||||
        pageSize: 20,
 | 
			
		||||
        energyTypeId: '',
 | 
			
		||||
        indexType: '',
 | 
			
		||||
        method: '1'
 | 
			
		||||
      },
 | 
			
		||||
      typeList: [
 | 
			
		||||
        { id: 1, name: '合并' },
 | 
			
		||||
        { id: 2, name: '详细' }
 | 
			
		||||
      ]
 | 
			
		||||
    };
 | 
			
		||||
  },
 | 
			
		||||
  created() {
 | 
			
		||||
    window.addEventListener('resize', () => {
 | 
			
		||||
      this.tableH = this.tableHeight(260)
 | 
			
		||||
    })
 | 
			
		||||
    this.getList();
 | 
			
		||||
    this.getTypeList()
 | 
			
		||||
  },
 | 
			
		||||
  methods: {
 | 
			
		||||
    buttonClick(val) {
 | 
			
		||||
      this.queryParams.pageNo = 1;
 | 
			
		||||
      this.queryParams.energyTypeId = val.energyTypeId
 | 
			
		||||
      this.queryParams.indexType = val.indexType
 | 
			
		||||
      this.getList()
 | 
			
		||||
    },
 | 
			
		||||
    /** 查询列表 */
 | 
			
		||||
    getList() {
 | 
			
		||||
      getEnergyOverlimitLogPage(this.queryParams).then(response => {
 | 
			
		||||
        let arr = response.data.list || [];
 | 
			
		||||
        arr && arr.map((item) => {
 | 
			
		||||
          this.typeList.map((i) => {
 | 
			
		||||
            if (item.type === i.id) {
 | 
			
		||||
              item.type = i.name
 | 
			
		||||
            }
 | 
			
		||||
          })
 | 
			
		||||
          if (item.minValue && item.maxValue) {
 | 
			
		||||
            item.limitValue = item.minValue + '-' + item.maxValue
 | 
			
		||||
          } else if (item.minValue) {
 | 
			
		||||
            item.limitValue = '最小值' + item.minValue
 | 
			
		||||
          } else if (item.maxValue) {
 | 
			
		||||
            item.limitValue = '最大值' + item.maxValue
 | 
			
		||||
          } else {
 | 
			
		||||
            item.limitValue = ''
 | 
			
		||||
          }
 | 
			
		||||
        })
 | 
			
		||||
        if (this.queryParams.method === '1') {
 | 
			
		||||
          this.list = arr
 | 
			
		||||
          this.list2 = []
 | 
			
		||||
        } else {
 | 
			
		||||
          this.list2 = arr
 | 
			
		||||
          this.list1 = []
 | 
			
		||||
        }
 | 
			
		||||
        this.total = response.data.total;
 | 
			
		||||
      });
 | 
			
		||||
    },
 | 
			
		||||
    getTypeList() {
 | 
			
		||||
      getEnergyTypeListAll().then((res) => {
 | 
			
		||||
        console.log(res)
 | 
			
		||||
        this.formConfig[0].selectOptions = res.data || []
 | 
			
		||||
      })
 | 
			
		||||
    },
 | 
			
		||||
    toggleTab() {
 | 
			
		||||
      if (this.activeName === 'auto') {
 | 
			
		||||
        this.queryParams.method = '1'
 | 
			
		||||
      } else {
 | 
			
		||||
        this.queryParams.method = '2'
 | 
			
		||||
      }
 | 
			
		||||
      this.queryParams.pageNo = 1
 | 
			
		||||
      this.getList()
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
	name: 'EnergyOverlimitLog',
 | 
			
		||||
	mixins: [tableHeightMixin],
 | 
			
		||||
	data() {
 | 
			
		||||
		return {
 | 
			
		||||
			formConfig: [
 | 
			
		||||
				{
 | 
			
		||||
					type: 'select',
 | 
			
		||||
					label: '能源类型',
 | 
			
		||||
					labelField: 'labelName',
 | 
			
		||||
					selectOptions: [],
 | 
			
		||||
					param: 'energyTypeId',
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					type: 'select',
 | 
			
		||||
					label: '指标类型',
 | 
			
		||||
					selectOptions: this.getDictDatas(this.DICT_TYPE.MONITOR_INDEX_TYPE),
 | 
			
		||||
					labelField: 'label',
 | 
			
		||||
					valueField: 'value',
 | 
			
		||||
					param: 'indexType',
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					type: 'button',
 | 
			
		||||
					btnName: '查询',
 | 
			
		||||
					name: 'search',
 | 
			
		||||
					color: 'primary',
 | 
			
		||||
				},
 | 
			
		||||
			],
 | 
			
		||||
			activeName: 'auto',
 | 
			
		||||
			tableProps,
 | 
			
		||||
			tableProps2,
 | 
			
		||||
			total: 0,
 | 
			
		||||
			list: [],
 | 
			
		||||
			list2: [],
 | 
			
		||||
			heightNum: 300,
 | 
			
		||||
			// 查询参数
 | 
			
		||||
			queryParams: {
 | 
			
		||||
				pageNo: 1,
 | 
			
		||||
				pageSize: 20,
 | 
			
		||||
				energyTypeId: '',
 | 
			
		||||
				indexType: '',
 | 
			
		||||
				method: '1',
 | 
			
		||||
			},
 | 
			
		||||
			typeList: [
 | 
			
		||||
				{ id: 1, name: '合并' },
 | 
			
		||||
				{ id: 2, name: '详细' },
 | 
			
		||||
			],
 | 
			
		||||
		};
 | 
			
		||||
	},
 | 
			
		||||
	created() {
 | 
			
		||||
		this.getList();
 | 
			
		||||
		this.getTypeList();
 | 
			
		||||
	},
 | 
			
		||||
	methods: {
 | 
			
		||||
		buttonClick(val) {
 | 
			
		||||
			this.queryParams.pageNo = 1;
 | 
			
		||||
			this.queryParams.energyTypeId = val.energyTypeId;
 | 
			
		||||
			this.queryParams.indexType = val.indexType;
 | 
			
		||||
			this.getList();
 | 
			
		||||
		},
 | 
			
		||||
		/** 查询列表 */
 | 
			
		||||
		getList() {
 | 
			
		||||
			getEnergyOverlimitLogPage(this.queryParams).then((response) => {
 | 
			
		||||
				let arr = response.data.list || [];
 | 
			
		||||
				arr &&
 | 
			
		||||
					arr.map((item) => {
 | 
			
		||||
						this.typeList.map((i) => {
 | 
			
		||||
							if (item.type === i.id) {
 | 
			
		||||
								item.type = i.name;
 | 
			
		||||
							}
 | 
			
		||||
						});
 | 
			
		||||
						if (item.minValue && item.maxValue) {
 | 
			
		||||
							item.limitValue = item.minValue + '-' + item.maxValue;
 | 
			
		||||
						} else if (item.minValue) {
 | 
			
		||||
							item.limitValue = '最小值' + item.minValue;
 | 
			
		||||
						} else if (item.maxValue) {
 | 
			
		||||
							item.limitValue = '最大值' + item.maxValue;
 | 
			
		||||
						} else {
 | 
			
		||||
							item.limitValue = '';
 | 
			
		||||
						}
 | 
			
		||||
					});
 | 
			
		||||
				if (this.queryParams.method === '1') {
 | 
			
		||||
					this.list = arr;
 | 
			
		||||
					this.list2 = [];
 | 
			
		||||
				} else {
 | 
			
		||||
					this.list2 = arr;
 | 
			
		||||
					this.list1 = [];
 | 
			
		||||
				}
 | 
			
		||||
				this.total = response.data.total;
 | 
			
		||||
			});
 | 
			
		||||
		},
 | 
			
		||||
		getTypeList() {
 | 
			
		||||
			getEnergyTypeListAll().then((res) => {
 | 
			
		||||
				console.log(res);
 | 
			
		||||
				this.formConfig[0].selectOptions = res.data || [];
 | 
			
		||||
			});
 | 
			
		||||
		},
 | 
			
		||||
		toggleTab() {
 | 
			
		||||
			if (this.activeName === 'auto') {
 | 
			
		||||
				this.queryParams.method = '1';
 | 
			
		||||
			} else {
 | 
			
		||||
				this.queryParams.method = '2';
 | 
			
		||||
			}
 | 
			
		||||
			this.queryParams.pageNo = 1;
 | 
			
		||||
			this.getList();
 | 
			
		||||
		},
 | 
			
		||||
	},
 | 
			
		||||
};
 | 
			
		||||
</script>
 | 
			
		||||
<style lang='scss'>
 | 
			
		||||
.energyOverlimitLog {
 | 
			
		||||
  .el-tabs__nav::after {
 | 
			
		||||
    content: "";
 | 
			
		||||
    position: absolute;
 | 
			
		||||
    left: 0;
 | 
			
		||||
    bottom: 0;
 | 
			
		||||
    width: 100%;
 | 
			
		||||
    height: 2px;
 | 
			
		||||
    background-color: #e4e7ed;
 | 
			
		||||
  }
 | 
			
		||||
	.el-tabs__nav::after {
 | 
			
		||||
		content: '';
 | 
			
		||||
		position: absolute;
 | 
			
		||||
		left: 0;
 | 
			
		||||
		bottom: 0;
 | 
			
		||||
		width: 100%;
 | 
			
		||||
		height: 2px;
 | 
			
		||||
		background-color: #e4e7ed;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
  .el-tabs__nav-wrap::after {
 | 
			
		||||
    width: 0;
 | 
			
		||||
  }
 | 
			
		||||
	.el-tabs__nav-wrap::after {
 | 
			
		||||
		width: 0;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
  .el-tabs__item {
 | 
			
		||||
    padding: 0 10px;
 | 
			
		||||
  }
 | 
			
		||||
	.el-tabs__item {
 | 
			
		||||
		padding: 0 10px;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
  .el-tabs__item:hover {
 | 
			
		||||
    color: rgba(0, 0, 0, 0.85);
 | 
			
		||||
  }
 | 
			
		||||
	.el-tabs__item:hover {
 | 
			
		||||
		color: rgba(0, 0, 0, 0.85);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
  .el-tabs__item.is-active {
 | 
			
		||||
    color: rgba(0, 0, 0, 0.85);
 | 
			
		||||
  }
 | 
			
		||||
	.el-tabs__item.is-active {
 | 
			
		||||
		color: rgba(0, 0, 0, 0.85);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
  .el-tabs__item {
 | 
			
		||||
    color: rgba(0, 0, 0, 0.45);
 | 
			
		||||
  }
 | 
			
		||||
	.el-tabs__item {
 | 
			
		||||
		color: rgba(0, 0, 0, 0.45);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
  .searchBarBox {
 | 
			
		||||
    margin-bottom: 0;
 | 
			
		||||
  }
 | 
			
		||||
	.searchBarBox {
 | 
			
		||||
		margin-bottom: 0;
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
</style>
 | 
			
		||||
 
 | 
			
		||||
@@ -56,6 +56,7 @@ const tableProps = [
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'energyType',
 | 
			
		||||
		label: '能源类型',
 | 
			
		||||
		filter: publicFormatter('energy_type'),
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'startNum',
 | 
			
		||||
@@ -71,7 +72,7 @@ const tableProps = [
 | 
			
		||||
	},
 | 
			
		||||
];
 | 
			
		||||
export default {
 | 
			
		||||
	name: 'EnergyLimit',
 | 
			
		||||
	name: 'EnergyReport',
 | 
			
		||||
	data() {
 | 
			
		||||
		return {
 | 
			
		||||
			isFold: false,
 | 
			
		||||
@@ -79,6 +80,7 @@ export default {
 | 
			
		||||
				{
 | 
			
		||||
					type: 'select',
 | 
			
		||||
					label: '能源类型',
 | 
			
		||||
					labelField: 'labelName',
 | 
			
		||||
					selectOptions: [],
 | 
			
		||||
					param: 'energyTypeId',
 | 
			
		||||
					filterable: true,
 | 
			
		||||
@@ -179,7 +181,7 @@ export default {
 | 
			
		||||
							return energyReportPageExportAuto({ ...this.queryParams });
 | 
			
		||||
						})
 | 
			
		||||
						.then((response) => {
 | 
			
		||||
							this.$download.excel(response, '能源统计报表.xls');
 | 
			
		||||
							this.$download.excel(response, '能耗统计报表.xls');
 | 
			
		||||
						})
 | 
			
		||||
						.catch(() => {});
 | 
			
		||||
			}
 | 
			
		||||
 
 | 
			
		||||
@@ -1,161 +1,171 @@
 | 
			
		||||
<template>
 | 
			
		||||
  <div class="app-container" id='energyReportSearchBox'>
 | 
			
		||||
 | 
			
		||||
    <!-- 搜索工作栏 -->
 | 
			
		||||
    <search-bar
 | 
			
		||||
      :formConfigs="formConfig"
 | 
			
		||||
      ref="searchBarForm"
 | 
			
		||||
      :isFold="isFold"
 | 
			
		||||
      @headBtnClick="buttonClick"
 | 
			
		||||
    />
 | 
			
		||||
    <!-- 列表 -->
 | 
			
		||||
    <base-table
 | 
			
		||||
      :page="queryParams.pageNo"
 | 
			
		||||
      :limit="queryParams.pageSize"
 | 
			
		||||
      :table-props="tableProps"
 | 
			
		||||
      :table-data="list"
 | 
			
		||||
      :max-height="tableH"
 | 
			
		||||
    />
 | 
			
		||||
    <pagination
 | 
			
		||||
      :page.sync="queryParams.pageNo"
 | 
			
		||||
      :limit.sync="queryParams.pageSize"
 | 
			
		||||
      :total="total"
 | 
			
		||||
      @pagination="getList"
 | 
			
		||||
    />
 | 
			
		||||
  </div>
 | 
			
		||||
	<div
 | 
			
		||||
		class="app-container"
 | 
			
		||||
		id="energyReportSearchBox">
 | 
			
		||||
		<!-- 搜索工作栏 -->
 | 
			
		||||
		<search-bar
 | 
			
		||||
			:formConfigs="formConfig"
 | 
			
		||||
			ref="searchBarForm"
 | 
			
		||||
			:isFold="isFold"
 | 
			
		||||
			@headBtnClick="buttonClick" />
 | 
			
		||||
		<!-- 列表 -->
 | 
			
		||||
		<base-table
 | 
			
		||||
			:page="queryParams.pageNo"
 | 
			
		||||
			:limit="queryParams.pageSize"
 | 
			
		||||
			:table-props="tableProps"
 | 
			
		||||
			:table-data="list"
 | 
			
		||||
			:max-height="tableH" />
 | 
			
		||||
		<pagination
 | 
			
		||||
			:page.sync="queryParams.pageNo"
 | 
			
		||||
			:limit.sync="queryParams.pageSize"
 | 
			
		||||
			:total="total"
 | 
			
		||||
			@pagination="getList" />
 | 
			
		||||
	</div>
 | 
			
		||||
</template>
 | 
			
		||||
 | 
			
		||||
<script>
 | 
			
		||||
import { energyReportPage, energyReportPageExport } from "@/api/monitoring/energyReport";
 | 
			
		||||
import { getEnergyTypeListAll } from "@/api/base/energyType"
 | 
			
		||||
import {
 | 
			
		||||
	energyReportPage,
 | 
			
		||||
	energyReportPageExport,
 | 
			
		||||
} from '@/api/monitoring/energyReport';
 | 
			
		||||
import { publicFormatter } from '@/utils/dict';
 | 
			
		||||
import { getEnergyTypeListAll } from '@/api/base/energyType';
 | 
			
		||||
const tableProps = [
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'statisticName',
 | 
			
		||||
    label: '统计方案'
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'energyType',
 | 
			
		||||
    label: '能源类型'
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'startValue',
 | 
			
		||||
    label: '抄表数(起始)'
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'endValue',
 | 
			
		||||
    label: '抄表数(结束)'
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'diffValue',
 | 
			
		||||
    label: '消耗量'
 | 
			
		||||
  }
 | 
			
		||||
]
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'statisticName',
 | 
			
		||||
		label: '统计方案',
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'energyType',
 | 
			
		||||
		label: '能源类型',
 | 
			
		||||
		filter: publicFormatter('energy_type'),
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'startValue',
 | 
			
		||||
		label: '抄表数(起始)',
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'endValue',
 | 
			
		||||
		label: '抄表数(结束)',
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'diffValue',
 | 
			
		||||
		label: '消耗量',
 | 
			
		||||
	},
 | 
			
		||||
];
 | 
			
		||||
export default {
 | 
			
		||||
  name: "EnergyReportSearch",
 | 
			
		||||
  data() {
 | 
			
		||||
    return {
 | 
			
		||||
      isFold: false,
 | 
			
		||||
      formConfig: [
 | 
			
		||||
        {
 | 
			
		||||
          type: 'input',
 | 
			
		||||
          label: '统计方案',
 | 
			
		||||
          param: 'statisticName'
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          type: 'select',
 | 
			
		||||
          label: '能源类型',
 | 
			
		||||
          selectOptions: [],
 | 
			
		||||
          param: 'energyTypeId',
 | 
			
		||||
          filterable: true
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          type: 'datePicker',
 | 
			
		||||
          label: '时间',
 | 
			
		||||
          dateType: 'datetimerange',
 | 
			
		||||
          format: 'yyyy-MM-dd HH:mm:ss',
 | 
			
		||||
          valueFormat: "timestamp",
 | 
			
		||||
          rangeSeparator: '-',
 | 
			
		||||
          startPlaceholder: '开始时间',
 | 
			
		||||
          endPlaceholder: '结束时间',
 | 
			
		||||
          param: 'timeVal',
 | 
			
		||||
          defaultSelect: [],
 | 
			
		||||
          width: 350,
 | 
			
		||||
          clearable: false
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          type: 'button',
 | 
			
		||||
          btnName: '查询',
 | 
			
		||||
          name: 'search',
 | 
			
		||||
          color: 'primary'
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          type: 'separate'
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          type: this.$auth.hasPermi('monitoring:energy-report-search:export') ? 'button' : '',
 | 
			
		||||
          btnName: '导出',
 | 
			
		||||
          name: 'add',
 | 
			
		||||
          color: 'primary',
 | 
			
		||||
          plain: true
 | 
			
		||||
        }
 | 
			
		||||
      ],
 | 
			
		||||
      tableProps,
 | 
			
		||||
      tableH: this.tableHeight(260),
 | 
			
		||||
      // 总条数
 | 
			
		||||
      total: 0,
 | 
			
		||||
      // 班次基础信息列表
 | 
			
		||||
      list: [],
 | 
			
		||||
      // 查询参数
 | 
			
		||||
      queryParams: {
 | 
			
		||||
        pageNo: 1,
 | 
			
		||||
        pageSize: 20,
 | 
			
		||||
        statisticName: null,
 | 
			
		||||
        startTime: null,
 | 
			
		||||
        endTime: null
 | 
			
		||||
      },
 | 
			
		||||
      energyTypeList: []
 | 
			
		||||
    };
 | 
			
		||||
  },
 | 
			
		||||
  mounted() {
 | 
			
		||||
    window.addEventListener('resize', () => {
 | 
			
		||||
      this.tableH = this.tableHeight(260)
 | 
			
		||||
      this.isFold = this.searchBarWidth('energyReportSearchBox', 1180)
 | 
			
		||||
    })
 | 
			
		||||
    this.getList()
 | 
			
		||||
    this.getTypeList()
 | 
			
		||||
    this.isFold = this.searchBarWidth('energyReportSearchBox', 1180)
 | 
			
		||||
  },
 | 
			
		||||
  methods: {
 | 
			
		||||
    getTypeList() {
 | 
			
		||||
      getEnergyTypeListAll().then((res) => {
 | 
			
		||||
        this.formConfig[1].selectOptions = res.data || []
 | 
			
		||||
      })
 | 
			
		||||
    },
 | 
			
		||||
    buttonClick(val) {
 | 
			
		||||
      switch (val.btnName) {
 | 
			
		||||
        case 'search':
 | 
			
		||||
          this.queryParams.pageNo = 1
 | 
			
		||||
          this.queryParams.statisticName = val.statisticName
 | 
			
		||||
          this.queryParams.energyTypeId = val.energyTypeId
 | 
			
		||||
          this.queryParams.startTime = val.timeVal ? val.timeVal[0] : null
 | 
			
		||||
          this.queryParams.endTime = val.timeVal ? val.timeVal[1] : null
 | 
			
		||||
          this.getList()
 | 
			
		||||
          break
 | 
			
		||||
        default:
 | 
			
		||||
          this.$modal.confirm('是否确认导出').then(() => {
 | 
			
		||||
                return energyReportPageExport({...this.queryParams});
 | 
			
		||||
              }).then(response => {
 | 
			
		||||
                this.$download.excel(response, '能源统计查询报表.xls');
 | 
			
		||||
              }).catch(() => {})
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    /** 查询列表 */
 | 
			
		||||
    getList() {
 | 
			
		||||
      energyReportPage({...this.queryParams}).then(response => {
 | 
			
		||||
        this.list = response.data.list || [];
 | 
			
		||||
        this.total = response.data.total;
 | 
			
		||||
      });
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
	name: 'EnergyReportSearch',
 | 
			
		||||
	data() {
 | 
			
		||||
		return {
 | 
			
		||||
			isFold: false,
 | 
			
		||||
			formConfig: [
 | 
			
		||||
				{
 | 
			
		||||
					type: 'input',
 | 
			
		||||
					label: '统计方案',
 | 
			
		||||
					param: 'statisticName',
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					type: 'select',
 | 
			
		||||
					label: '能源类型',
 | 
			
		||||
					labelField: 'labelName',
 | 
			
		||||
					selectOptions: [],
 | 
			
		||||
					param: 'energyTypeId',
 | 
			
		||||
					filterable: true,
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					type: 'datePicker',
 | 
			
		||||
					label: '时间',
 | 
			
		||||
					dateType: 'datetimerange',
 | 
			
		||||
					format: 'yyyy-MM-dd HH:mm:ss',
 | 
			
		||||
					valueFormat: 'timestamp',
 | 
			
		||||
					rangeSeparator: '-',
 | 
			
		||||
					startPlaceholder: '开始时间',
 | 
			
		||||
					endPlaceholder: '结束时间',
 | 
			
		||||
					param: 'timeVal',
 | 
			
		||||
					defaultSelect: [],
 | 
			
		||||
					width: 350,
 | 
			
		||||
					clearable: false,
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					type: 'button',
 | 
			
		||||
					btnName: '查询',
 | 
			
		||||
					name: 'search',
 | 
			
		||||
					color: 'primary',
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					type: 'separate',
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					type: this.$auth.hasPermi('monitoring:energy-report-search:export')
 | 
			
		||||
						? 'button'
 | 
			
		||||
						: '',
 | 
			
		||||
					btnName: '导出',
 | 
			
		||||
					name: 'add',
 | 
			
		||||
					color: 'primary',
 | 
			
		||||
					plain: true,
 | 
			
		||||
				},
 | 
			
		||||
			],
 | 
			
		||||
			tableProps,
 | 
			
		||||
			tableH: this.tableHeight(260),
 | 
			
		||||
			// 总条数
 | 
			
		||||
			total: 0,
 | 
			
		||||
			// 班次基础信息列表
 | 
			
		||||
			list: [],
 | 
			
		||||
			// 查询参数
 | 
			
		||||
			queryParams: {
 | 
			
		||||
				pageNo: 1,
 | 
			
		||||
				pageSize: 20,
 | 
			
		||||
				statisticName: null,
 | 
			
		||||
				startTime: null,
 | 
			
		||||
				endTime: null,
 | 
			
		||||
			},
 | 
			
		||||
			energyTypeList: [],
 | 
			
		||||
		};
 | 
			
		||||
	},
 | 
			
		||||
	mounted() {
 | 
			
		||||
		window.addEventListener('resize', () => {
 | 
			
		||||
			this.tableH = this.tableHeight(260);
 | 
			
		||||
			this.isFold = this.searchBarWidth('energyReportSearchBox', 1180);
 | 
			
		||||
		});
 | 
			
		||||
		this.getList();
 | 
			
		||||
		this.getTypeList();
 | 
			
		||||
		this.isFold = this.searchBarWidth('energyReportSearchBox', 1180);
 | 
			
		||||
	},
 | 
			
		||||
	methods: {
 | 
			
		||||
		getTypeList() {
 | 
			
		||||
			getEnergyTypeListAll().then((res) => {
 | 
			
		||||
				this.formConfig[1].selectOptions = res.data || [];
 | 
			
		||||
			});
 | 
			
		||||
		},
 | 
			
		||||
		buttonClick(val) {
 | 
			
		||||
			switch (val.btnName) {
 | 
			
		||||
				case 'search':
 | 
			
		||||
					this.queryParams.pageNo = 1;
 | 
			
		||||
					this.queryParams.statisticName = val.statisticName;
 | 
			
		||||
					this.queryParams.energyTypeId = val.energyTypeId;
 | 
			
		||||
					this.queryParams.startTime = val.timeVal ? val.timeVal[0] : null;
 | 
			
		||||
					this.queryParams.endTime = val.timeVal ? val.timeVal[1] : null;
 | 
			
		||||
					this.getList();
 | 
			
		||||
					break;
 | 
			
		||||
				default:
 | 
			
		||||
					this.$modal
 | 
			
		||||
						.confirm('是否确认导出')
 | 
			
		||||
						.then(() => {
 | 
			
		||||
							return energyReportPageExport({ ...this.queryParams });
 | 
			
		||||
						})
 | 
			
		||||
						.then((response) => {
 | 
			
		||||
							this.$download.excel(response, '能源统计查询报表.xls');
 | 
			
		||||
						})
 | 
			
		||||
						.catch(() => {});
 | 
			
		||||
			}
 | 
			
		||||
		},
 | 
			
		||||
		/** 查询列表 */
 | 
			
		||||
		getList() {
 | 
			
		||||
			energyReportPage({ ...this.queryParams }).then((response) => {
 | 
			
		||||
				this.list = response.data.list || [];
 | 
			
		||||
				this.total = response.data.total;
 | 
			
		||||
			});
 | 
			
		||||
		},
 | 
			
		||||
	},
 | 
			
		||||
};
 | 
			
		||||
</script>
 | 
			
		||||
 
 | 
			
		||||
@@ -1,128 +1,160 @@
 | 
			
		||||
<template>
 | 
			
		||||
  <el-form ref="form" :rules="rules" label-width="100px" :model="form">
 | 
			
		||||
    <el-row>
 | 
			
		||||
      <el-col :span="12">
 | 
			
		||||
        <el-form-item label="方案名称" prop="name">
 | 
			
		||||
          <el-input v-model="form.name"></el-input>
 | 
			
		||||
        </el-form-item>
 | 
			
		||||
      </el-col>
 | 
			
		||||
      <el-col :span="12">
 | 
			
		||||
        <el-form-item label="方案编码" prop="code">
 | 
			
		||||
          <el-input v-model="form.code" disabled></el-input>
 | 
			
		||||
        </el-form-item>
 | 
			
		||||
      </el-col>
 | 
			
		||||
    </el-row>
 | 
			
		||||
    <el-row>
 | 
			
		||||
      <el-col :span="12">
 | 
			
		||||
        <el-form-item label="统计类型" prop="type">
 | 
			
		||||
          <el-select v-model="form.type" placeholder="请选择" style="width: 100%;">
 | 
			
		||||
            <el-option
 | 
			
		||||
              v-for="item in getDictDatas(DICT_TYPE.STATISTIC_TYPE)"
 | 
			
		||||
              :key="item.value"
 | 
			
		||||
              :label="item.label"
 | 
			
		||||
              :value="item.value">
 | 
			
		||||
            </el-option>
 | 
			
		||||
          </el-select>
 | 
			
		||||
        </el-form-item>
 | 
			
		||||
      </el-col>
 | 
			
		||||
      <el-col :span="12">
 | 
			
		||||
        <el-form-item label="能源类型" prop="energyTypeId">
 | 
			
		||||
          <el-select v-model="form.energyTypeId" placeholder="请选择" style="width: 100%;" filterable>
 | 
			
		||||
            <el-option
 | 
			
		||||
              v-for="item in energyListType"
 | 
			
		||||
              :key="item.id"
 | 
			
		||||
              :label="item.name"
 | 
			
		||||
              :value="item.id">
 | 
			
		||||
            </el-option>
 | 
			
		||||
          </el-select>
 | 
			
		||||
        </el-form-item>
 | 
			
		||||
      </el-col>
 | 
			
		||||
    </el-row>
 | 
			
		||||
    <el-row>
 | 
			
		||||
      <el-col :span="12">
 | 
			
		||||
        <el-form-item label="备注" prop="remark">
 | 
			
		||||
          <el-input v-model="form.remark"></el-input>
 | 
			
		||||
        </el-form-item>
 | 
			
		||||
      </el-col>
 | 
			
		||||
    </el-row>
 | 
			
		||||
  </el-form>
 | 
			
		||||
	<el-form
 | 
			
		||||
		ref="form"
 | 
			
		||||
		:rules="rules"
 | 
			
		||||
		label-width="100px"
 | 
			
		||||
		:model="form">
 | 
			
		||||
		<el-row>
 | 
			
		||||
			<el-col :span="12">
 | 
			
		||||
				<el-form-item
 | 
			
		||||
					label="方案名称"
 | 
			
		||||
					prop="name">
 | 
			
		||||
					<el-input v-model="form.name"></el-input>
 | 
			
		||||
				</el-form-item>
 | 
			
		||||
			</el-col>
 | 
			
		||||
			<el-col :span="12">
 | 
			
		||||
				<el-form-item
 | 
			
		||||
					label="方案编码"
 | 
			
		||||
					prop="code">
 | 
			
		||||
					<el-input
 | 
			
		||||
						v-model="form.code"
 | 
			
		||||
						disabled></el-input>
 | 
			
		||||
				</el-form-item>
 | 
			
		||||
			</el-col>
 | 
			
		||||
		</el-row>
 | 
			
		||||
		<el-row>
 | 
			
		||||
			<el-col :span="12">
 | 
			
		||||
				<el-form-item
 | 
			
		||||
					label="统计类型"
 | 
			
		||||
					prop="type">
 | 
			
		||||
					<el-select
 | 
			
		||||
						v-model="form.type"
 | 
			
		||||
						placeholder="请选择"
 | 
			
		||||
						style="width: 100%">
 | 
			
		||||
						<el-option
 | 
			
		||||
							v-for="item in getDictDatas(DICT_TYPE.STATISTIC_TYPE)"
 | 
			
		||||
							:key="item.value"
 | 
			
		||||
							:label="item.label"
 | 
			
		||||
							:value="item.value"></el-option>
 | 
			
		||||
					</el-select>
 | 
			
		||||
				</el-form-item>
 | 
			
		||||
			</el-col>
 | 
			
		||||
			<el-col :span="12">
 | 
			
		||||
				<el-form-item
 | 
			
		||||
					label="能源类型"
 | 
			
		||||
					prop="energyTypeId">
 | 
			
		||||
					<el-select
 | 
			
		||||
						v-model="form.energyTypeId"
 | 
			
		||||
						placeholder="请选择"
 | 
			
		||||
						style="width: 100%"
 | 
			
		||||
						filterable>
 | 
			
		||||
						<el-option
 | 
			
		||||
							v-for="item in energyListType"
 | 
			
		||||
							:key="item.id"
 | 
			
		||||
							:label="item.labelName"
 | 
			
		||||
							:value="item.id"></el-option>
 | 
			
		||||
					</el-select>
 | 
			
		||||
				</el-form-item>
 | 
			
		||||
			</el-col>
 | 
			
		||||
		</el-row>
 | 
			
		||||
		<el-row>
 | 
			
		||||
			<el-col :span="12">
 | 
			
		||||
				<el-form-item
 | 
			
		||||
					label="备注"
 | 
			
		||||
					prop="remark">
 | 
			
		||||
					<el-input v-model="form.remark"></el-input>
 | 
			
		||||
				</el-form-item>
 | 
			
		||||
			</el-col>
 | 
			
		||||
		</el-row>
 | 
			
		||||
	</el-form>
 | 
			
		||||
</template>
 | 
			
		||||
<script>
 | 
			
		||||
import { getCode, createEnergyStatistics, updateEnergyStatistics, getEnergyStatistics } from "@/api/monitoring/energyStatistics";
 | 
			
		||||
import { getEnergyTypeListAll } from '@/api/base/energyType'
 | 
			
		||||
import {
 | 
			
		||||
	getCode,
 | 
			
		||||
	createEnergyStatistics,
 | 
			
		||||
	updateEnergyStatistics,
 | 
			
		||||
	getEnergyStatistics,
 | 
			
		||||
} from '@/api/monitoring/energyStatistics';
 | 
			
		||||
import { getEnergyTypeListAll } from '@/api/base/energyType';
 | 
			
		||||
import { number } from 'echarts';
 | 
			
		||||
export default {
 | 
			
		||||
  name: 'EnergyStatisticsAdd',
 | 
			
		||||
  data() {
 | 
			
		||||
    return {
 | 
			
		||||
      form: {
 | 
			
		||||
        id: '',
 | 
			
		||||
        name: '',
 | 
			
		||||
        code: '',
 | 
			
		||||
        type: '',
 | 
			
		||||
        energyTypeId: ''
 | 
			
		||||
      },
 | 
			
		||||
      plcList: [],
 | 
			
		||||
      objList: [],
 | 
			
		||||
      isEdit: false, //是否是编辑
 | 
			
		||||
      rules: {
 | 
			
		||||
        name: [{ required: true, message: '方案名称不能为空', trigger: 'blur' }],
 | 
			
		||||
        type: [{ required: true, message: '统计类型不能为空', trigger: 'change' }],
 | 
			
		||||
        energyTypeId: [{ required: true, message: '能源类型不能为空', trigger: 'change' }]
 | 
			
		||||
      },
 | 
			
		||||
      energyListType: [],
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
  methods: {
 | 
			
		||||
    init(id) {
 | 
			
		||||
      getEnergyTypeListAll().then((res) => {
 | 
			
		||||
        this.energyListType = res.data || []
 | 
			
		||||
      })
 | 
			
		||||
      if (id) {
 | 
			
		||||
        this.isEdit = true
 | 
			
		||||
        this.form.id = id
 | 
			
		||||
        getEnergyStatistics( id ).then((res) => {
 | 
			
		||||
          if (res.code === 0) {
 | 
			
		||||
            this.form = res.data
 | 
			
		||||
            this.form.type = this.form.type + ''
 | 
			
		||||
          }
 | 
			
		||||
        })
 | 
			
		||||
      } else {
 | 
			
		||||
        getCode().then((res) => {
 | 
			
		||||
          this.form.code = res.data
 | 
			
		||||
        })
 | 
			
		||||
        this.isEdit = false
 | 
			
		||||
        this.form.id = ''
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    submitForm() {
 | 
			
		||||
      this.$refs['form'].validate((valid) => {
 | 
			
		||||
        if (valid) {
 | 
			
		||||
          if (this.isEdit) {
 | 
			
		||||
            // 编辑
 | 
			
		||||
            updateEnergyStatistics({...this.form}).then((res) => {
 | 
			
		||||
              if (res.code === 0) {
 | 
			
		||||
                this.$modal.msgSuccess("操作成功");
 | 
			
		||||
                this.$emit('successSubmit')
 | 
			
		||||
              }
 | 
			
		||||
            })
 | 
			
		||||
          } else {
 | 
			
		||||
            createEnergyStatistics({...this.form}).then((res) => {
 | 
			
		||||
              if (res.code === 0) {
 | 
			
		||||
                this.$modal.msgSuccess("操作成功");
 | 
			
		||||
                this.$emit('successSubmit')
 | 
			
		||||
              }
 | 
			
		||||
            })
 | 
			
		||||
          }
 | 
			
		||||
        } else {
 | 
			
		||||
          return false
 | 
			
		||||
        }
 | 
			
		||||
      })
 | 
			
		||||
    },
 | 
			
		||||
    formClear() {
 | 
			
		||||
      this.$refs.form.resetFields()
 | 
			
		||||
      this.isEdit = false
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
	name: 'EnergyStatisticsAdd',
 | 
			
		||||
	data() {
 | 
			
		||||
		return {
 | 
			
		||||
			form: {
 | 
			
		||||
				id: '',
 | 
			
		||||
				name: '',
 | 
			
		||||
				code: '',
 | 
			
		||||
				type: '',
 | 
			
		||||
				energyTypeId: '',
 | 
			
		||||
			},
 | 
			
		||||
			plcList: [],
 | 
			
		||||
			objList: [],
 | 
			
		||||
			isEdit: false, //是否是编辑
 | 
			
		||||
			rules: {
 | 
			
		||||
				name: [
 | 
			
		||||
					{ required: true, message: '方案名称不能为空', trigger: 'blur' },
 | 
			
		||||
				],
 | 
			
		||||
				type: [
 | 
			
		||||
					{ required: true, message: '统计类型不能为空', trigger: 'change' },
 | 
			
		||||
				],
 | 
			
		||||
				energyTypeId: [
 | 
			
		||||
					{ required: true, message: '能源类型不能为空', trigger: 'change' },
 | 
			
		||||
				],
 | 
			
		||||
			},
 | 
			
		||||
			energyListType: [],
 | 
			
		||||
		};
 | 
			
		||||
	},
 | 
			
		||||
	methods: {
 | 
			
		||||
		init(id) {
 | 
			
		||||
			getEnergyTypeListAll().then((res) => {
 | 
			
		||||
				this.energyListType = res.data || [];
 | 
			
		||||
			});
 | 
			
		||||
			if (id) {
 | 
			
		||||
				this.isEdit = true;
 | 
			
		||||
				this.form.id = id;
 | 
			
		||||
				getEnergyStatistics(id).then((res) => {
 | 
			
		||||
					if (res.code === 0) {
 | 
			
		||||
						this.form = res.data;
 | 
			
		||||
						this.form.type = this.form.type + '';
 | 
			
		||||
					}
 | 
			
		||||
				});
 | 
			
		||||
			} else {
 | 
			
		||||
				getCode().then((res) => {
 | 
			
		||||
					this.form.code = res.data;
 | 
			
		||||
				});
 | 
			
		||||
				this.isEdit = false;
 | 
			
		||||
				this.form.id = '';
 | 
			
		||||
			}
 | 
			
		||||
		},
 | 
			
		||||
		submitForm() {
 | 
			
		||||
			this.$refs['form'].validate((valid) => {
 | 
			
		||||
				if (valid) {
 | 
			
		||||
					if (this.isEdit) {
 | 
			
		||||
						// 编辑
 | 
			
		||||
						updateEnergyStatistics({ ...this.form }).then((res) => {
 | 
			
		||||
							if (res.code === 0) {
 | 
			
		||||
								this.$modal.msgSuccess('操作成功');
 | 
			
		||||
								this.$emit('successSubmit');
 | 
			
		||||
							}
 | 
			
		||||
						});
 | 
			
		||||
					} else {
 | 
			
		||||
						createEnergyStatistics({ ...this.form }).then((res) => {
 | 
			
		||||
							if (res.code === 0) {
 | 
			
		||||
								this.$modal.msgSuccess('操作成功');
 | 
			
		||||
								this.$emit('successSubmit');
 | 
			
		||||
							}
 | 
			
		||||
						});
 | 
			
		||||
					}
 | 
			
		||||
				} else {
 | 
			
		||||
					return false;
 | 
			
		||||
				}
 | 
			
		||||
			});
 | 
			
		||||
		},
 | 
			
		||||
		formClear() {
 | 
			
		||||
			this.$refs.form.resetFields();
 | 
			
		||||
			this.isEdit = false;
 | 
			
		||||
		},
 | 
			
		||||
	},
 | 
			
		||||
};
 | 
			
		||||
</script>
 | 
			
		||||
 
 | 
			
		||||
@@ -1,230 +1,271 @@
 | 
			
		||||
<template>
 | 
			
		||||
  <div>
 | 
			
		||||
    <el-drawer :title="drawerTitle" :visible.sync="visible" size="70%" @close='closeD' :show-close='false'>
 | 
			
		||||
      <div class="box">
 | 
			
		||||
        <el-form :inline="true">
 | 
			
		||||
          <el-form-item label="方案名称">
 | 
			
		||||
            <el-input v-model="name" size='small' readonly></el-input>
 | 
			
		||||
          </el-form-item>
 | 
			
		||||
          <el-form-item label="能源类型">
 | 
			
		||||
            <el-input v-model="energyType" size='small' readonly></el-input>
 | 
			
		||||
          </el-form-item>
 | 
			
		||||
          <el-form-item>
 | 
			
		||||
            <el-button type="success" size='small' v-if="showBtn" plain @click="addNew">新增</el-button>
 | 
			
		||||
            <el-button type="danger" size='small' v-if="showBtn" plain @click="deleteAll">批量删除</el-button>
 | 
			
		||||
          </el-form-item>
 | 
			
		||||
        </el-form>
 | 
			
		||||
        <base-table
 | 
			
		||||
          :page="queryParams.pageNo"
 | 
			
		||||
          :limit="queryParams.pageSize"
 | 
			
		||||
          :table-props="tableProps"
 | 
			
		||||
          :table-data="tableData"
 | 
			
		||||
          :max-height="tableH"
 | 
			
		||||
          :selectWidth="55"
 | 
			
		||||
          @selection-change="selectChange"
 | 
			
		||||
        >
 | 
			
		||||
          <method-btn
 | 
			
		||||
            v-if="tableBtn.length"
 | 
			
		||||
            slot="handleBtn"
 | 
			
		||||
            :width="80"
 | 
			
		||||
            label="操作"
 | 
			
		||||
            :method-list="tableBtn"
 | 
			
		||||
            @clickBtn="handleClick"
 | 
			
		||||
          />
 | 
			
		||||
        </base-table>
 | 
			
		||||
        <pagination
 | 
			
		||||
          :page.sync="queryParams.pageNo"
 | 
			
		||||
          :limit.sync="queryParams.pageSize"
 | 
			
		||||
          :total="total"
 | 
			
		||||
          @pagination="getList"
 | 
			
		||||
        />
 | 
			
		||||
      </div>
 | 
			
		||||
    </el-drawer>
 | 
			
		||||
    <!-- 新增 -->
 | 
			
		||||
    <energy-statistics-det-add ref="energyStatistics" @closeDet="closeDet" />
 | 
			
		||||
  </div>
 | 
			
		||||
	<div>
 | 
			
		||||
		<el-drawer
 | 
			
		||||
			:title="drawerTitle"
 | 
			
		||||
			:visible.sync="visible"
 | 
			
		||||
			size="70%"
 | 
			
		||||
			@close="closeD"
 | 
			
		||||
			:show-close="false">
 | 
			
		||||
			<div class="box">
 | 
			
		||||
				<el-form :inline="true">
 | 
			
		||||
					<el-form-item label="方案名称">
 | 
			
		||||
						<el-input
 | 
			
		||||
							v-model="name"
 | 
			
		||||
							size="small"
 | 
			
		||||
							readonly></el-input>
 | 
			
		||||
					</el-form-item>
 | 
			
		||||
					<el-form-item label="能源类型">
 | 
			
		||||
						<el-input
 | 
			
		||||
							v-model="energyTypeLabel"
 | 
			
		||||
							size="small"
 | 
			
		||||
							readonly></el-input>
 | 
			
		||||
					</el-form-item>
 | 
			
		||||
					<el-form-item>
 | 
			
		||||
						<el-button
 | 
			
		||||
							type="success"
 | 
			
		||||
							size="small"
 | 
			
		||||
							v-if="showBtn"
 | 
			
		||||
							plain
 | 
			
		||||
							@click="addNew">
 | 
			
		||||
							新增
 | 
			
		||||
						</el-button>
 | 
			
		||||
						<el-button
 | 
			
		||||
							type="danger"
 | 
			
		||||
							size="small"
 | 
			
		||||
							v-if="showBtn"
 | 
			
		||||
							plain
 | 
			
		||||
							@click="deleteAll">
 | 
			
		||||
							批量删除
 | 
			
		||||
						</el-button>
 | 
			
		||||
					</el-form-item>
 | 
			
		||||
				</el-form>
 | 
			
		||||
				<base-table
 | 
			
		||||
					:page="queryParams.pageNo"
 | 
			
		||||
					:limit="queryParams.pageSize"
 | 
			
		||||
					:table-props="tableProps"
 | 
			
		||||
					:table-data="tableData"
 | 
			
		||||
					:max-height="tableH"
 | 
			
		||||
					:selectWidth="55"
 | 
			
		||||
					@selection-change="selectChange">
 | 
			
		||||
					<method-btn
 | 
			
		||||
						v-if="tableBtn.length"
 | 
			
		||||
						slot="handleBtn"
 | 
			
		||||
						:width="80"
 | 
			
		||||
						label="操作"
 | 
			
		||||
						:method-list="tableBtn"
 | 
			
		||||
						@clickBtn="handleClick" />
 | 
			
		||||
				</base-table>
 | 
			
		||||
				<pagination
 | 
			
		||||
					:page.sync="queryParams.pageNo"
 | 
			
		||||
					:limit.sync="queryParams.pageSize"
 | 
			
		||||
					:total="total"
 | 
			
		||||
					@pagination="getList" />
 | 
			
		||||
			</div>
 | 
			
		||||
		</el-drawer>
 | 
			
		||||
		<!-- 新增 -->
 | 
			
		||||
		<energy-statistics-det-add
 | 
			
		||||
			ref="energyStatistics"
 | 
			
		||||
			@closeDet="closeDet" />
 | 
			
		||||
	</div>
 | 
			
		||||
</template>
 | 
			
		||||
<script>
 | 
			
		||||
import { getEnergyStatisticsDetPage, deleteEnergyStatisticsDet, deleteMany } from '@/api/monitoring/energyStatisticsDet'
 | 
			
		||||
import EnergyStatisticsDetAdd from './energyStatisticsDetAdd'
 | 
			
		||||
import { publicFormatter } from '@/utils/dict'
 | 
			
		||||
import {
 | 
			
		||||
	getEnergyStatisticsDetPage,
 | 
			
		||||
	deleteEnergyStatisticsDet,
 | 
			
		||||
	deleteMany,
 | 
			
		||||
} from '@/api/monitoring/energyStatisticsDet';
 | 
			
		||||
import EnergyStatisticsDetAdd from './energyStatisticsDetAdd';
 | 
			
		||||
import { publicFormatter } from '@/utils/dict';
 | 
			
		||||
const tableProps = [
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'objName',
 | 
			
		||||
    label: '所属对象'
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'objCode',
 | 
			
		||||
    label: '对象编码'
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'paramName',
 | 
			
		||||
    label: '参数名称'
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'unit',
 | 
			
		||||
    label: '单位',
 | 
			
		||||
    filter: publicFormatter('energy_unit')
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'desc',
 | 
			
		||||
    label: '描述'
 | 
			
		||||
  }
 | 
			
		||||
]
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'objName',
 | 
			
		||||
		label: '所属对象',
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'objCode',
 | 
			
		||||
		label: '对象编码',
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'paramName',
 | 
			
		||||
		label: '参数名称',
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'unit',
 | 
			
		||||
		label: '单位',
 | 
			
		||||
		filter: publicFormatter('unit_dict'),
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'desc',
 | 
			
		||||
		label: '描述',
 | 
			
		||||
	},
 | 
			
		||||
];
 | 
			
		||||
export default {
 | 
			
		||||
  name: 'EnergyStatisticsDet',
 | 
			
		||||
  props: {
 | 
			
		||||
    energyTypeList: {
 | 
			
		||||
      type: Array,
 | 
			
		||||
      required: true,
 | 
			
		||||
      default: () => {
 | 
			
		||||
        return []
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
  data() {
 | 
			
		||||
    return {
 | 
			
		||||
      visible: false,
 | 
			
		||||
      drawerTitle: '',
 | 
			
		||||
      tableProps,
 | 
			
		||||
      tableData: [],
 | 
			
		||||
      tableBtn: [],
 | 
			
		||||
      tableH: this.tableHeight(115),
 | 
			
		||||
      total: 0,
 | 
			
		||||
      queryParams: {
 | 
			
		||||
        pageNo: 1,
 | 
			
		||||
        pageSize: 30,
 | 
			
		||||
        statisticsId: null
 | 
			
		||||
      },
 | 
			
		||||
      name: '',
 | 
			
		||||
      energyType: '',
 | 
			
		||||
      energyTypeId: '',
 | 
			
		||||
      // 弹出层标题
 | 
			
		||||
      addOrEditTitle: "",
 | 
			
		||||
      // 是否显示弹出层
 | 
			
		||||
      centervisible: false,
 | 
			
		||||
      collectionList: [
 | 
			
		||||
        {value: 0,label: '否'},
 | 
			
		||||
        {value: 1,label: '是'}
 | 
			
		||||
      ],
 | 
			
		||||
      showBtn: true,
 | 
			
		||||
      selectedList: []
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
  components: { EnergyStatisticsDetAdd },
 | 
			
		||||
  created() {
 | 
			
		||||
    window.addEventListener('resize', () => {
 | 
			
		||||
      this.tableH = this.tableHeight(115)
 | 
			
		||||
    })
 | 
			
		||||
  },
 | 
			
		||||
  methods: {
 | 
			
		||||
    init(data,title) {
 | 
			
		||||
      this.visible = true
 | 
			
		||||
      this.queryParams.statisticsId = data.id
 | 
			
		||||
      this.name = data.name
 | 
			
		||||
      this.energyType = data.energyType
 | 
			
		||||
      this.energyTypeId = data.energyTypeId
 | 
			
		||||
      this.getList()
 | 
			
		||||
      if (title === 'detail') {
 | 
			
		||||
        this.drawerTitle = '查看参数'
 | 
			
		||||
        this.showBtn = false
 | 
			
		||||
        this.tableBtn = []
 | 
			
		||||
      } else {
 | 
			
		||||
        this.drawerTitle = '参数绑定'
 | 
			
		||||
        this.showBtn = true
 | 
			
		||||
        this.tableBtn = [
 | 
			
		||||
          {
 | 
			
		||||
            type: 'delete',
 | 
			
		||||
            btnName: '删除'
 | 
			
		||||
          }
 | 
			
		||||
        ]
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    getList() {
 | 
			
		||||
      console.log(this.queryParams)
 | 
			
		||||
      getEnergyStatisticsDetPage({...this.queryParams}).then((res) => {
 | 
			
		||||
        let arr = res.data.list || []
 | 
			
		||||
        arr&&arr.map(item => {
 | 
			
		||||
          this.collectionList.map(i => {
 | 
			
		||||
            if (item.collection === i.value) {
 | 
			
		||||
              item.collection = i.label
 | 
			
		||||
            }
 | 
			
		||||
          })
 | 
			
		||||
          this.energyTypeList.map(j => {
 | 
			
		||||
            if (item.typeId === j.id) {
 | 
			
		||||
              item.typeId = j.name
 | 
			
		||||
            }
 | 
			
		||||
          })
 | 
			
		||||
        })
 | 
			
		||||
        this.tableData = arr
 | 
			
		||||
        this.total = res.data.total;
 | 
			
		||||
      })
 | 
			
		||||
    },
 | 
			
		||||
    // 新增
 | 
			
		||||
    addNew() {
 | 
			
		||||
      this.$nextTick(() => {
 | 
			
		||||
        this.$refs.energyStatistics.init({'statisticsId': this.queryParams.statisticsId, energyTypeId:this.energyTypeId})
 | 
			
		||||
      })
 | 
			
		||||
    },
 | 
			
		||||
    selectChange(val) {
 | 
			
		||||
      console.log(val)
 | 
			
		||||
      this.selectedList = val
 | 
			
		||||
    },
 | 
			
		||||
    // 批量删除
 | 
			
		||||
    deleteAll() {
 | 
			
		||||
      let arr = []
 | 
			
		||||
      if (this.selectedList.length === 0) {
 | 
			
		||||
        this.$modal.msgWarning("请选勾选数据")
 | 
			
		||||
        return false
 | 
			
		||||
      } else {
 | 
			
		||||
        this.selectedList.map((item) => {
 | 
			
		||||
          arr.push(item.id)
 | 
			
		||||
        })
 | 
			
		||||
      }
 | 
			
		||||
      this.$modal.confirm('是否确认删除所有勾选的数据项?').then(function() {
 | 
			
		||||
          return deleteMany(arr);
 | 
			
		||||
        }).then(() => {
 | 
			
		||||
          this.queryParams.pageNo = 1
 | 
			
		||||
          this.getList()
 | 
			
		||||
          this.$modal.msgSuccess("删除成功")
 | 
			
		||||
        }).catch(() => {})
 | 
			
		||||
    },
 | 
			
		||||
    handleCancel() {
 | 
			
		||||
      this.$refs.energyStatistics.formClear()
 | 
			
		||||
      this.centervisible = false
 | 
			
		||||
      this.addOrEditTitle = ''
 | 
			
		||||
    },
 | 
			
		||||
    handleConfirm() {
 | 
			
		||||
      this.$refs.energyStatistics.submitForm()
 | 
			
		||||
    },
 | 
			
		||||
    successSubmit() {
 | 
			
		||||
      this.handleCancel()
 | 
			
		||||
      this.getList()
 | 
			
		||||
    },
 | 
			
		||||
    handleClick(val) {
 | 
			
		||||
      this.handleDelete(val.data)
 | 
			
		||||
    },
 | 
			
		||||
    /** 删除按钮操作 */
 | 
			
		||||
    handleDelete(row) {
 | 
			
		||||
      this.$modal.confirm('是否确认删除参数列名为"' + row.paramName + '"的数据项?').then(function() {
 | 
			
		||||
          return deleteEnergyStatisticsDet(row.id);
 | 
			
		||||
        }).then(() => {
 | 
			
		||||
          this.queryParams.pageNo = 1
 | 
			
		||||
          this.getList()
 | 
			
		||||
          this.$modal.msgSuccess("删除成功")
 | 
			
		||||
        }).catch(() => {})
 | 
			
		||||
    },
 | 
			
		||||
    closeD() {
 | 
			
		||||
      this.$emit('closeDrawer')
 | 
			
		||||
    },
 | 
			
		||||
    closeDet() {  // 关闭新增框
 | 
			
		||||
      this.getList()
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
	name: 'EnergyStatisticsDet',
 | 
			
		||||
	props: {
 | 
			
		||||
		energyTypeList: {
 | 
			
		||||
			type: Array,
 | 
			
		||||
			required: true,
 | 
			
		||||
			default: () => {
 | 
			
		||||
				return [];
 | 
			
		||||
			},
 | 
			
		||||
		},
 | 
			
		||||
	},
 | 
			
		||||
	data() {
 | 
			
		||||
		return {
 | 
			
		||||
			visible: false,
 | 
			
		||||
			drawerTitle: '',
 | 
			
		||||
			tableProps,
 | 
			
		||||
			tableData: [],
 | 
			
		||||
			tableBtn: [],
 | 
			
		||||
			tableH: this.tableHeight(115),
 | 
			
		||||
			total: 0,
 | 
			
		||||
			queryParams: {
 | 
			
		||||
				pageNo: 1,
 | 
			
		||||
				pageSize: 30,
 | 
			
		||||
				statisticsId: null,
 | 
			
		||||
			},
 | 
			
		||||
			name: '',
 | 
			
		||||
			energyTypeLabel: '',
 | 
			
		||||
			energyTypeId: '',
 | 
			
		||||
			// 弹出层标题
 | 
			
		||||
			addOrEditTitle: '',
 | 
			
		||||
			// 是否显示弹出层
 | 
			
		||||
			centervisible: false,
 | 
			
		||||
			collectionList: [
 | 
			
		||||
				{ value: 0, label: '否' },
 | 
			
		||||
				{ value: 1, label: '是' },
 | 
			
		||||
			],
 | 
			
		||||
			showBtn: true,
 | 
			
		||||
			selectedList: [],
 | 
			
		||||
		};
 | 
			
		||||
	},
 | 
			
		||||
	components: { EnergyStatisticsDetAdd },
 | 
			
		||||
	created() {
 | 
			
		||||
		window.addEventListener('resize', () => {
 | 
			
		||||
			this.tableH = this.tableHeight(115);
 | 
			
		||||
		});
 | 
			
		||||
	},
 | 
			
		||||
	methods: {
 | 
			
		||||
		init(data, title) {
 | 
			
		||||
			this.visible = true;
 | 
			
		||||
			this.queryParams.statisticsId = data.id;
 | 
			
		||||
			this.name = data.name;
 | 
			
		||||
			this.energyTypeLabel = data.energyTypeLabel;
 | 
			
		||||
			this.energyTypeId = data.energyTypeId;
 | 
			
		||||
			this.getList();
 | 
			
		||||
			if (title === 'detail') {
 | 
			
		||||
				this.drawerTitle = '查看参数';
 | 
			
		||||
				this.showBtn = false;
 | 
			
		||||
				this.tableBtn = [];
 | 
			
		||||
			} else {
 | 
			
		||||
				this.drawerTitle = '参数绑定';
 | 
			
		||||
				this.showBtn = true;
 | 
			
		||||
				this.tableBtn = [
 | 
			
		||||
					{
 | 
			
		||||
						type: 'delete',
 | 
			
		||||
						btnName: '删除',
 | 
			
		||||
					},
 | 
			
		||||
				];
 | 
			
		||||
			}
 | 
			
		||||
		},
 | 
			
		||||
		getList() {
 | 
			
		||||
			console.log(this.queryParams);
 | 
			
		||||
			getEnergyStatisticsDetPage({ ...this.queryParams }).then((res) => {
 | 
			
		||||
				let arr = res.data.list || [];
 | 
			
		||||
				arr &&
 | 
			
		||||
					arr.map((item) => {
 | 
			
		||||
						this.collectionList.map((i) => {
 | 
			
		||||
							if (item.collection === i.value) {
 | 
			
		||||
								item.collection = i.label;
 | 
			
		||||
							}
 | 
			
		||||
						});
 | 
			
		||||
						this.energyTypeList.map((j) => {
 | 
			
		||||
							if (item.typeId === j.id) {
 | 
			
		||||
								item.typeId = j.name;
 | 
			
		||||
							}
 | 
			
		||||
						});
 | 
			
		||||
					});
 | 
			
		||||
				this.tableData = arr;
 | 
			
		||||
				this.total = res.data.total;
 | 
			
		||||
			});
 | 
			
		||||
		},
 | 
			
		||||
		// 新增
 | 
			
		||||
		addNew() {
 | 
			
		||||
			this.$nextTick(() => {
 | 
			
		||||
				this.$refs.energyStatistics.init({
 | 
			
		||||
					statisticsId: this.queryParams.statisticsId,
 | 
			
		||||
					energyTypeId: this.energyTypeId,
 | 
			
		||||
				});
 | 
			
		||||
			});
 | 
			
		||||
		},
 | 
			
		||||
		selectChange(val) {
 | 
			
		||||
			console.log(val);
 | 
			
		||||
			this.selectedList = val;
 | 
			
		||||
		},
 | 
			
		||||
		// 批量删除
 | 
			
		||||
		deleteAll() {
 | 
			
		||||
			let arr = [];
 | 
			
		||||
			if (this.selectedList.length === 0) {
 | 
			
		||||
				this.$modal.msgWarning('请选勾选数据');
 | 
			
		||||
				return false;
 | 
			
		||||
			} else {
 | 
			
		||||
				this.selectedList.map((item) => {
 | 
			
		||||
					arr.push(item.id);
 | 
			
		||||
				});
 | 
			
		||||
			}
 | 
			
		||||
			this.$modal
 | 
			
		||||
				.confirm('是否确认删除所有勾选的数据项?')
 | 
			
		||||
				.then(function () {
 | 
			
		||||
					return deleteMany(arr);
 | 
			
		||||
				})
 | 
			
		||||
				.then(() => {
 | 
			
		||||
					this.queryParams.pageNo = 1;
 | 
			
		||||
					this.getList();
 | 
			
		||||
					this.$modal.msgSuccess('删除成功');
 | 
			
		||||
				})
 | 
			
		||||
				.catch(() => {});
 | 
			
		||||
		},
 | 
			
		||||
		handleCancel() {
 | 
			
		||||
			this.$refs.energyStatistics.formClear();
 | 
			
		||||
			this.centervisible = false;
 | 
			
		||||
			this.addOrEditTitle = '';
 | 
			
		||||
		},
 | 
			
		||||
		handleConfirm() {
 | 
			
		||||
			this.$refs.energyStatistics.submitForm();
 | 
			
		||||
		},
 | 
			
		||||
		successSubmit() {
 | 
			
		||||
			this.handleCancel();
 | 
			
		||||
			this.getList();
 | 
			
		||||
		},
 | 
			
		||||
		handleClick(val) {
 | 
			
		||||
			this.handleDelete(val.data);
 | 
			
		||||
		},
 | 
			
		||||
		/** 删除按钮操作 */
 | 
			
		||||
		handleDelete(row) {
 | 
			
		||||
			this.$modal
 | 
			
		||||
				.confirm('是否确认删除参数列名为"' + row.paramName + '"的数据项?')
 | 
			
		||||
				.then(function () {
 | 
			
		||||
					return deleteEnergyStatisticsDet(row.id);
 | 
			
		||||
				})
 | 
			
		||||
				.then(() => {
 | 
			
		||||
					this.queryParams.pageNo = 1;
 | 
			
		||||
					this.getList();
 | 
			
		||||
					this.$modal.msgSuccess('删除成功');
 | 
			
		||||
				})
 | 
			
		||||
				.catch(() => {});
 | 
			
		||||
		},
 | 
			
		||||
		closeD() {
 | 
			
		||||
			this.$emit('closeDrawer');
 | 
			
		||||
		},
 | 
			
		||||
		closeDet() {
 | 
			
		||||
			// 关闭新增框
 | 
			
		||||
			this.getList();
 | 
			
		||||
		},
 | 
			
		||||
	},
 | 
			
		||||
};
 | 
			
		||||
</script>
 | 
			
		||||
<style lang="scss" scoped>
 | 
			
		||||
.box {
 | 
			
		||||
  padding: 0 32px;
 | 
			
		||||
	padding: 0 32px;
 | 
			
		||||
}
 | 
			
		||||
</style>
 | 
			
		||||
 
 | 
			
		||||
@@ -1,179 +1,178 @@
 | 
			
		||||
<template>
 | 
			
		||||
  <el-drawer
 | 
			
		||||
    title="新增"
 | 
			
		||||
    :visible.sync="centervisible"
 | 
			
		||||
    size="60%"
 | 
			
		||||
    @close='closeA'
 | 
			
		||||
    :show-close='false'>
 | 
			
		||||
    <div class="box">
 | 
			
		||||
      <!-- 搜索工作栏 -->
 | 
			
		||||
      <search-bar
 | 
			
		||||
        :formConfigs="formConfig"
 | 
			
		||||
        ref="searchBarForm"
 | 
			
		||||
        :removeBlue='true'
 | 
			
		||||
        @headBtnClick="buttonClick"
 | 
			
		||||
      />
 | 
			
		||||
      <!-- 列表 -->
 | 
			
		||||
      <base-table
 | 
			
		||||
        :page="queryParams.pageNo"
 | 
			
		||||
        :limit="queryParams.pageSize"
 | 
			
		||||
        :table-props="tableProps"
 | 
			
		||||
        :table-data="list"
 | 
			
		||||
        :max-height="tableH"
 | 
			
		||||
        :selectWidth="55"
 | 
			
		||||
        @selection-change="selectChange"
 | 
			
		||||
      >
 | 
			
		||||
      </base-table>
 | 
			
		||||
      <pagination
 | 
			
		||||
        :page.sync="queryParams.pageNo"
 | 
			
		||||
        :limit.sync="queryParams.pageSize"
 | 
			
		||||
        :total="total"
 | 
			
		||||
        @pagination="getList"
 | 
			
		||||
      />
 | 
			
		||||
    </div>
 | 
			
		||||
  </el-drawer>
 | 
			
		||||
	<el-drawer
 | 
			
		||||
		title="新增"
 | 
			
		||||
		:visible.sync="centervisible"
 | 
			
		||||
		size="60%"
 | 
			
		||||
		@close="closeA"
 | 
			
		||||
		:show-close="false">
 | 
			
		||||
		<div class="box">
 | 
			
		||||
			<!-- 搜索工作栏 -->
 | 
			
		||||
			<search-bar
 | 
			
		||||
				:formConfigs="formConfig"
 | 
			
		||||
				ref="searchBarForm"
 | 
			
		||||
				:removeBlue="true"
 | 
			
		||||
				@headBtnClick="buttonClick" />
 | 
			
		||||
			<!-- 列表 -->
 | 
			
		||||
			<base-table
 | 
			
		||||
				:page="queryParams.pageNo"
 | 
			
		||||
				:limit="queryParams.pageSize"
 | 
			
		||||
				:table-props="tableProps"
 | 
			
		||||
				:table-data="list"
 | 
			
		||||
				:max-height="tableH"
 | 
			
		||||
				:selectWidth="55"
 | 
			
		||||
				@selection-change="selectChange"></base-table>
 | 
			
		||||
			<pagination
 | 
			
		||||
				:page.sync="queryParams.pageNo"
 | 
			
		||||
				:limit.sync="queryParams.pageSize"
 | 
			
		||||
				:total="total"
 | 
			
		||||
				@pagination="getList" />
 | 
			
		||||
		</div>
 | 
			
		||||
	</el-drawer>
 | 
			
		||||
</template>
 | 
			
		||||
<script>
 | 
			
		||||
import { addParamPage, createEnergyStatisticsDet } from '@/api/monitoring/energyStatisticsDet'
 | 
			
		||||
import { publicFormatter } from '@/utils/dict'
 | 
			
		||||
import {
 | 
			
		||||
	addParamPage,
 | 
			
		||||
	createEnergyStatisticsDet,
 | 
			
		||||
} from '@/api/monitoring/energyStatisticsDet';
 | 
			
		||||
import { publicFormatter } from '@/utils/dict';
 | 
			
		||||
const tableProps = [
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'objName',
 | 
			
		||||
    label: '所属对象'
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'objCode',
 | 
			
		||||
    label: '对象编码'
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'paramName',
 | 
			
		||||
    label: '参数名称'
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'unit',
 | 
			
		||||
    label: '单位',
 | 
			
		||||
    filter: publicFormatter('energy_unit')
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'desc',
 | 
			
		||||
    label: '描述'
 | 
			
		||||
  }
 | 
			
		||||
]
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'objName',
 | 
			
		||||
		label: '所属对象',
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'objCode',
 | 
			
		||||
		label: '对象编码',
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'paramName',
 | 
			
		||||
		label: '参数名称',
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'unit',
 | 
			
		||||
		label: '单位',
 | 
			
		||||
		filter: publicFormatter('unit_dict'),
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'desc',
 | 
			
		||||
		label: '描述',
 | 
			
		||||
	},
 | 
			
		||||
];
 | 
			
		||||
export default {
 | 
			
		||||
  name: 'EnergyStatisticsDetAdd',
 | 
			
		||||
  data() {
 | 
			
		||||
    return {
 | 
			
		||||
      centervisible: false,
 | 
			
		||||
      formConfig: [
 | 
			
		||||
        {
 | 
			
		||||
          type: 'select',
 | 
			
		||||
          label: '对象类型',
 | 
			
		||||
          selectOptions: this.getDictDatas(this.DICT_TYPE.OBJECT_TYPE),
 | 
			
		||||
          labelField: 'label',
 | 
			
		||||
          valueField: 'value',
 | 
			
		||||
          param: 'objType'
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          type: 'input',
 | 
			
		||||
          label: '参数名称',
 | 
			
		||||
          placeholder: '参数名称',
 | 
			
		||||
          param: 'paramName'
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          type: 'button',
 | 
			
		||||
          btnName: '查询',
 | 
			
		||||
          name: 'search',
 | 
			
		||||
          color: 'primary'
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          type: 'separate'
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          type: 'button',
 | 
			
		||||
          btnName: '关联',
 | 
			
		||||
          name: 'add',
 | 
			
		||||
          color: 'primary',
 | 
			
		||||
          plain: true
 | 
			
		||||
        }
 | 
			
		||||
      ],
 | 
			
		||||
      queryParams: {
 | 
			
		||||
        pageNo: 1,
 | 
			
		||||
        pageSize: 20,
 | 
			
		||||
        energyTypeId: null,
 | 
			
		||||
        statisticId: null,
 | 
			
		||||
        paramName: '',
 | 
			
		||||
        objType: ''
 | 
			
		||||
      },
 | 
			
		||||
      tableProps,
 | 
			
		||||
      list: [],
 | 
			
		||||
      total: 0,
 | 
			
		||||
      tableH: this.tableHeight(260),
 | 
			
		||||
      selectedList: []
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
  methods: {
 | 
			
		||||
    init(param) {
 | 
			
		||||
      this.queryParams.statisticId = param.statisticsId
 | 
			
		||||
      this.queryParams.energyTypeId = param.energyTypeId
 | 
			
		||||
      window.addEventListener('resize', () => {
 | 
			
		||||
        this.tableH = this.tableHeight(260)
 | 
			
		||||
      })
 | 
			
		||||
      this.centervisible = true
 | 
			
		||||
      this.getList()
 | 
			
		||||
    },
 | 
			
		||||
    getList() {
 | 
			
		||||
      addParamPage({...this.queryParams}).then((res) => {
 | 
			
		||||
        this.list = res.data.list || []
 | 
			
		||||
        this.total = res.data.total
 | 
			
		||||
      })
 | 
			
		||||
    },
 | 
			
		||||
    buttonClick(val) {
 | 
			
		||||
      switch (val.btnName) {
 | 
			
		||||
        case 'search':
 | 
			
		||||
          this.queryParams.pageNo = 1;
 | 
			
		||||
          this.queryParams.objType = val.objType
 | 
			
		||||
          this.queryParams.paramName = val.paramName
 | 
			
		||||
          this.getList()
 | 
			
		||||
          break
 | 
			
		||||
        default:
 | 
			
		||||
          // 关联
 | 
			
		||||
          this.connectParam()
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    // 选中数据
 | 
			
		||||
    selectChange(val) {
 | 
			
		||||
      this.selectedList = val
 | 
			
		||||
    },
 | 
			
		||||
    // 关联
 | 
			
		||||
    connectParam() {
 | 
			
		||||
      let param = {
 | 
			
		||||
        statisticsId: this.queryParams.statisticId,
 | 
			
		||||
        plcParamIds: []
 | 
			
		||||
      }
 | 
			
		||||
      if (this.selectedList.length === 0) {
 | 
			
		||||
        this.$modal.msgWarning("请选勾选数据")
 | 
			
		||||
        return false
 | 
			
		||||
      } else {
 | 
			
		||||
        this.selectedList.map((item) => {
 | 
			
		||||
          param.plcParamIds.push(item.id)
 | 
			
		||||
        })
 | 
			
		||||
      }
 | 
			
		||||
      createEnergyStatisticsDet({...param}).then((res) => {
 | 
			
		||||
        if (res.code === 0) {
 | 
			
		||||
          this.$modal.msgSuccess("操作成功");
 | 
			
		||||
          this.queryParams.pageNo = 1;
 | 
			
		||||
          this.getList()
 | 
			
		||||
        }
 | 
			
		||||
      })
 | 
			
		||||
    },
 | 
			
		||||
    closeA() {
 | 
			
		||||
      this.$emit('closeDet')
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
	name: 'EnergyStatisticsDetAdd',
 | 
			
		||||
	data() {
 | 
			
		||||
		return {
 | 
			
		||||
			centervisible: false,
 | 
			
		||||
			formConfig: [
 | 
			
		||||
				{
 | 
			
		||||
					type: 'select',
 | 
			
		||||
					label: '对象类型',
 | 
			
		||||
					selectOptions: this.getDictDatas(this.DICT_TYPE.OBJECT_TYPE),
 | 
			
		||||
					labelField: 'label',
 | 
			
		||||
					valueField: 'value',
 | 
			
		||||
					param: 'objType',
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					type: 'input',
 | 
			
		||||
					label: '参数名称',
 | 
			
		||||
					placeholder: '参数名称',
 | 
			
		||||
					param: 'paramName',
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					type: 'button',
 | 
			
		||||
					btnName: '查询',
 | 
			
		||||
					name: 'search',
 | 
			
		||||
					color: 'primary',
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					type: 'separate',
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					type: 'button',
 | 
			
		||||
					btnName: '关联',
 | 
			
		||||
					name: 'add',
 | 
			
		||||
					color: 'primary',
 | 
			
		||||
					plain: true,
 | 
			
		||||
				},
 | 
			
		||||
			],
 | 
			
		||||
			queryParams: {
 | 
			
		||||
				pageNo: 1,
 | 
			
		||||
				pageSize: 20,
 | 
			
		||||
				energyTypeId: null,
 | 
			
		||||
				statisticId: null,
 | 
			
		||||
				paramName: '',
 | 
			
		||||
				objType: '',
 | 
			
		||||
			},
 | 
			
		||||
			tableProps,
 | 
			
		||||
			list: [],
 | 
			
		||||
			total: 0,
 | 
			
		||||
			tableH: this.tableHeight(260),
 | 
			
		||||
			selectedList: [],
 | 
			
		||||
		};
 | 
			
		||||
	},
 | 
			
		||||
	methods: {
 | 
			
		||||
		init(param) {
 | 
			
		||||
			this.queryParams.statisticId = param.statisticsId;
 | 
			
		||||
			this.queryParams.energyTypeId = param.energyTypeId;
 | 
			
		||||
			window.addEventListener('resize', () => {
 | 
			
		||||
				this.tableH = this.tableHeight(260);
 | 
			
		||||
			});
 | 
			
		||||
			this.centervisible = true;
 | 
			
		||||
			this.getList();
 | 
			
		||||
		},
 | 
			
		||||
		getList() {
 | 
			
		||||
			addParamPage({ ...this.queryParams }).then((res) => {
 | 
			
		||||
				this.list = res.data.list || [];
 | 
			
		||||
				this.total = res.data.total;
 | 
			
		||||
			});
 | 
			
		||||
		},
 | 
			
		||||
		buttonClick(val) {
 | 
			
		||||
			switch (val.btnName) {
 | 
			
		||||
				case 'search':
 | 
			
		||||
					this.queryParams.pageNo = 1;
 | 
			
		||||
					this.queryParams.objType = val.objType;
 | 
			
		||||
					this.queryParams.paramName = val.paramName;
 | 
			
		||||
					this.getList();
 | 
			
		||||
					break;
 | 
			
		||||
				default:
 | 
			
		||||
					// 关联
 | 
			
		||||
					this.connectParam();
 | 
			
		||||
			}
 | 
			
		||||
		},
 | 
			
		||||
		// 选中数据
 | 
			
		||||
		selectChange(val) {
 | 
			
		||||
			this.selectedList = val;
 | 
			
		||||
		},
 | 
			
		||||
		// 关联
 | 
			
		||||
		connectParam() {
 | 
			
		||||
			let param = {
 | 
			
		||||
				statisticsId: this.queryParams.statisticId,
 | 
			
		||||
				plcParamIds: [],
 | 
			
		||||
			};
 | 
			
		||||
			if (this.selectedList.length === 0) {
 | 
			
		||||
				this.$modal.msgWarning('请选勾选数据');
 | 
			
		||||
				return false;
 | 
			
		||||
			} else {
 | 
			
		||||
				this.selectedList.map((item) => {
 | 
			
		||||
					param.plcParamIds.push(item.id);
 | 
			
		||||
				});
 | 
			
		||||
			}
 | 
			
		||||
			createEnergyStatisticsDet({ ...param }).then((res) => {
 | 
			
		||||
				if (res.code === 0) {
 | 
			
		||||
					this.$modal.msgSuccess('操作成功');
 | 
			
		||||
					this.queryParams.pageNo = 1;
 | 
			
		||||
					this.getList();
 | 
			
		||||
				}
 | 
			
		||||
			});
 | 
			
		||||
		},
 | 
			
		||||
		closeA() {
 | 
			
		||||
			this.$emit('closeDet');
 | 
			
		||||
		},
 | 
			
		||||
	},
 | 
			
		||||
};
 | 
			
		||||
</script>
 | 
			
		||||
<style lang="scss" scoped>
 | 
			
		||||
.box {
 | 
			
		||||
  padding: 0 32px;
 | 
			
		||||
	padding: 0 32px;
 | 
			
		||||
}
 | 
			
		||||
</style>
 | 
			
		||||
 
 | 
			
		||||
@@ -1,222 +1,259 @@
 | 
			
		||||
<template>
 | 
			
		||||
  <div class="app-container">
 | 
			
		||||
 | 
			
		||||
    <!-- 搜索工作栏 -->
 | 
			
		||||
    <search-bar :formConfigs="formConfig" ref="searchBarForm" @headBtnClick="buttonClick" />
 | 
			
		||||
    <!-- 列表 -->
 | 
			
		||||
    <base-table :page="queryParams.pageNo" :limit="queryParams.pageSize" :table-props="tableProps" :table-data="list"
 | 
			
		||||
      :max-height="tableH">
 | 
			
		||||
      <method-btn v-if="tableBtn.length" slot="handleBtn" :width="160" label="操作" :method-list="tableBtn"
 | 
			
		||||
        @clickBtn="handleClick" />
 | 
			
		||||
    </base-table>
 | 
			
		||||
    <pagination :page.sync="queryParams.pageNo" :limit.sync="queryParams.pageSize" :total="total"
 | 
			
		||||
      @pagination="getList" />
 | 
			
		||||
    <!-- 新增 -->
 | 
			
		||||
    <base-dialog :dialogTitle="addOrEditTitle" :dialogVisible="centervisible" @cancel="handleCancel"
 | 
			
		||||
      @confirm="handleConfirm" :before-close="handleCancel">
 | 
			
		||||
      <energy-statistics-add ref="energyStatistics" @successSubmit="successSubmit" />
 | 
			
		||||
    </base-dialog>
 | 
			
		||||
    <!-- 参数绑定/查看 -->
 | 
			
		||||
    <energy-statistics-det ref="plcParam" @closeDrawer="closeDrawer"
 | 
			
		||||
      :energyTypeList="energyTypeList"></energy-statistics-det>
 | 
			
		||||
  </div>
 | 
			
		||||
	<div class="app-container">
 | 
			
		||||
		<!-- 搜索工作栏 -->
 | 
			
		||||
		<search-bar
 | 
			
		||||
			:formConfigs="formConfig"
 | 
			
		||||
			ref="searchBarForm"
 | 
			
		||||
			@headBtnClick="buttonClick" />
 | 
			
		||||
		<!-- 列表 -->
 | 
			
		||||
		<base-table
 | 
			
		||||
			:page="queryParams.pageNo"
 | 
			
		||||
			:limit="queryParams.pageSize"
 | 
			
		||||
			:table-props="tableProps"
 | 
			
		||||
			:table-data="list"
 | 
			
		||||
			:max-height="tableH">
 | 
			
		||||
			<method-btn
 | 
			
		||||
				v-if="tableBtn.length"
 | 
			
		||||
				slot="handleBtn"
 | 
			
		||||
				:width="160"
 | 
			
		||||
				label="操作"
 | 
			
		||||
				:method-list="tableBtn"
 | 
			
		||||
				@clickBtn="handleClick" />
 | 
			
		||||
		</base-table>
 | 
			
		||||
		<pagination
 | 
			
		||||
			:page.sync="queryParams.pageNo"
 | 
			
		||||
			:limit.sync="queryParams.pageSize"
 | 
			
		||||
			:total="total"
 | 
			
		||||
			@pagination="getList" />
 | 
			
		||||
		<!-- 新增 -->
 | 
			
		||||
		<base-dialog
 | 
			
		||||
			:dialogTitle="addOrEditTitle"
 | 
			
		||||
			:dialogVisible="centervisible"
 | 
			
		||||
			@cancel="handleCancel"
 | 
			
		||||
			@confirm="handleConfirm"
 | 
			
		||||
			:before-close="handleCancel">
 | 
			
		||||
			<energy-statistics-add
 | 
			
		||||
				ref="energyStatistics"
 | 
			
		||||
				@successSubmit="successSubmit" />
 | 
			
		||||
		</base-dialog>
 | 
			
		||||
		<!-- 参数绑定/查看 -->
 | 
			
		||||
		<energy-statistics-det
 | 
			
		||||
			ref="plcParam"
 | 
			
		||||
			@closeDrawer="closeDrawer"
 | 
			
		||||
			:energyTypeList="energyTypeList"></energy-statistics-det>
 | 
			
		||||
	</div>
 | 
			
		||||
</template>
 | 
			
		||||
 | 
			
		||||
<script>
 | 
			
		||||
import { getEnergyStatisticsPage, deleteEnergyStatistics } from "@/api/monitoring/energyStatistics";
 | 
			
		||||
import { publicFormatter } from '@/utils/dict'
 | 
			
		||||
import { getEnergyTypeListAll } from '@/api/base/energyType'
 | 
			
		||||
import EnergyStatisticsAdd from './components/energyStatisticsAdd'
 | 
			
		||||
import EnergyStatisticsDet from './components/energyStatisticsDet'
 | 
			
		||||
import {
 | 
			
		||||
	getEnergyStatisticsPage,
 | 
			
		||||
	deleteEnergyStatistics,
 | 
			
		||||
} from '@/api/monitoring/energyStatistics';
 | 
			
		||||
import { publicFormatter } from '@/utils/dict';
 | 
			
		||||
import { getEnergyTypeListAll } from '@/api/base/energyType';
 | 
			
		||||
import EnergyStatisticsAdd from './components/energyStatisticsAdd';
 | 
			
		||||
import EnergyStatisticsDet from './components/energyStatisticsDet';
 | 
			
		||||
import tableHeightMixin from '@/mixins/lb/tableHeightMixin';
 | 
			
		||||
const tableProps = [
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'name',
 | 
			
		||||
    label: '方案名称'
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'code',
 | 
			
		||||
    label: '方案编码',
 | 
			
		||||
    minWidth: 120,
 | 
			
		||||
    showOverflowtooltip: true
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'type',
 | 
			
		||||
    label: '统计类型',
 | 
			
		||||
    filter: publicFormatter('statistic_type')
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'energyType',
 | 
			
		||||
    label: '能源类型'
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'paramNum',
 | 
			
		||||
    label: '统计参数数量'
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'remark',
 | 
			
		||||
    label: '备注'
 | 
			
		||||
  }
 | 
			
		||||
]
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'name',
 | 
			
		||||
		label: '方案名称',
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'code',
 | 
			
		||||
		label: '方案编码',
 | 
			
		||||
		minWidth: 120,
 | 
			
		||||
		showOverflowtooltip: true,
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'type',
 | 
			
		||||
		label: '统计类型',
 | 
			
		||||
		filter: publicFormatter('statistic_type'),
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'energyTypeLabel',
 | 
			
		||||
		label: '能源类型',
 | 
			
		||||
		showOverflowtooltip: true,
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'paramNum',
 | 
			
		||||
		label: '统计参数数量',
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'remark',
 | 
			
		||||
		label: '备注',
 | 
			
		||||
	},
 | 
			
		||||
];
 | 
			
		||||
export default {
 | 
			
		||||
  name: "EnergyStatistics",
 | 
			
		||||
  components: { EnergyStatisticsAdd, EnergyStatisticsDet },
 | 
			
		||||
  data() {
 | 
			
		||||
    return {
 | 
			
		||||
      formConfig: [
 | 
			
		||||
        {
 | 
			
		||||
          type: 'input',
 | 
			
		||||
          label: '方案名称',
 | 
			
		||||
          placeholder: '方案名称',
 | 
			
		||||
          param: 'name'
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          type: 'button',
 | 
			
		||||
          btnName: '查询',
 | 
			
		||||
          name: 'search',
 | 
			
		||||
          color: 'primary'
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          type: 'separate'
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          type: this.$auth.hasPermi('monitoring:energy-statistics:create') ? 'button' : '',
 | 
			
		||||
          btnName: '新增',
 | 
			
		||||
          name: 'add',
 | 
			
		||||
          color: 'success',
 | 
			
		||||
          plain: true
 | 
			
		||||
        }
 | 
			
		||||
      ],
 | 
			
		||||
      tableProps,
 | 
			
		||||
      tableBtn: [
 | 
			
		||||
        this.$auth.hasPermi('monitoring:energy-statistics:bind')
 | 
			
		||||
          ? {
 | 
			
		||||
            type: 'connect',
 | 
			
		||||
            btnName: '绑定'
 | 
			
		||||
          }
 | 
			
		||||
          : undefined,
 | 
			
		||||
        {
 | 
			
		||||
          type: 'detail',
 | 
			
		||||
          btnName: '详情'
 | 
			
		||||
        },
 | 
			
		||||
        this.$auth.hasPermi('monitoring:energy-statistics:update')
 | 
			
		||||
          ? {
 | 
			
		||||
            type: 'edit',
 | 
			
		||||
            btnName: '编辑'
 | 
			
		||||
          }
 | 
			
		||||
          : undefined,
 | 
			
		||||
        this.$auth.hasPermi('monitoring:energy-statistics:delete')
 | 
			
		||||
          ? {
 | 
			
		||||
            type: 'delete',
 | 
			
		||||
            btnName: '删除'
 | 
			
		||||
          }
 | 
			
		||||
          : undefined
 | 
			
		||||
      ].filter((v) => v),
 | 
			
		||||
      tableH: this.tableHeight(260),
 | 
			
		||||
      // 总条数
 | 
			
		||||
      total: 0,
 | 
			
		||||
      // 班次基础信息列表
 | 
			
		||||
      list: [],
 | 
			
		||||
      // 弹出层标题
 | 
			
		||||
      addOrEditTitle: "",
 | 
			
		||||
      // 是否显示弹出层
 | 
			
		||||
      centervisible: false,
 | 
			
		||||
      // 查询参数
 | 
			
		||||
      queryParams: {
 | 
			
		||||
        pageNo: 1,
 | 
			
		||||
        pageSize: 20,
 | 
			
		||||
        name: null
 | 
			
		||||
      },
 | 
			
		||||
      energyTypeList: []
 | 
			
		||||
    };
 | 
			
		||||
  },
 | 
			
		||||
  created() {
 | 
			
		||||
    window.addEventListener('resize', () => {
 | 
			
		||||
      this.tableH = this.tableHeight(260)
 | 
			
		||||
    })
 | 
			
		||||
    this.getList();
 | 
			
		||||
  },
 | 
			
		||||
  mounted() {
 | 
			
		||||
    // 获取能源列表
 | 
			
		||||
    this.getEnergyTypeList()
 | 
			
		||||
  },
 | 
			
		||||
  methods: {
 | 
			
		||||
    buttonClick(val) {
 | 
			
		||||
      switch (val.btnName) {
 | 
			
		||||
        case 'search':
 | 
			
		||||
          this.queryParams.pageNo = 1;
 | 
			
		||||
          this.queryParams.name = val.name
 | 
			
		||||
          this.getList()
 | 
			
		||||
          break
 | 
			
		||||
        default:
 | 
			
		||||
          this.addOrEditTitle = '新增'
 | 
			
		||||
          this.centervisible = true
 | 
			
		||||
          this.$nextTick(() => {
 | 
			
		||||
            this.$refs.energyStatistics.init()
 | 
			
		||||
          })
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    /** 查询列表 */
 | 
			
		||||
    getList() {
 | 
			
		||||
      getEnergyStatisticsPage(this.queryParams).then(response => {
 | 
			
		||||
        let arr = response.data.list || [];
 | 
			
		||||
        this.list = arr
 | 
			
		||||
        this.total = response.data.total;
 | 
			
		||||
      });
 | 
			
		||||
    },
 | 
			
		||||
    handleClick(val) {
 | 
			
		||||
      console.log(val)
 | 
			
		||||
      switch (val.type) {
 | 
			
		||||
        case 'edit':
 | 
			
		||||
          this.addOrEditTitle = '编辑'
 | 
			
		||||
          this.$nextTick(() => {
 | 
			
		||||
            this.$refs.energyStatistics.init(val.data.id)
 | 
			
		||||
          })
 | 
			
		||||
          this.centervisible = true
 | 
			
		||||
          break
 | 
			
		||||
        case 'delete':
 | 
			
		||||
          this.handleDelete(val.data)
 | 
			
		||||
          break
 | 
			
		||||
        case 'detail':
 | 
			
		||||
          this.$nextTick(() => {
 | 
			
		||||
            this.$refs.plcParam.init(val.data, 'detail')
 | 
			
		||||
          })
 | 
			
		||||
          break
 | 
			
		||||
        default:
 | 
			
		||||
          this.$nextTick(() => {
 | 
			
		||||
            this.$refs.plcParam.init(val.data, 'connect')
 | 
			
		||||
          })
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    handleCancel() {
 | 
			
		||||
      this.$refs.energyStatistics.formClear()
 | 
			
		||||
      this.centervisible = false
 | 
			
		||||
      this.addOrEditTitle = ''
 | 
			
		||||
    },
 | 
			
		||||
    handleConfirm() {
 | 
			
		||||
      this.$refs.energyStatistics.submitForm()
 | 
			
		||||
    },
 | 
			
		||||
    successSubmit() {
 | 
			
		||||
      this.handleCancel()
 | 
			
		||||
      this.getList()
 | 
			
		||||
    },
 | 
			
		||||
    /** 删除按钮操作 */
 | 
			
		||||
    handleDelete(row) {
 | 
			
		||||
      this.$modal.confirm('是否确认删除方案名称为"' + row.name + '"的数据项?').then(function () {
 | 
			
		||||
        return deleteEnergyStatistics(row.id);
 | 
			
		||||
      }).then(() => {
 | 
			
		||||
        this.queryParams.pageNo = 1;
 | 
			
		||||
        this.getList();
 | 
			
		||||
        this.$modal.msgSuccess("删除成功");
 | 
			
		||||
      }).catch(() => { });
 | 
			
		||||
    },
 | 
			
		||||
    closeDrawer() {
 | 
			
		||||
      this.getList()
 | 
			
		||||
    },
 | 
			
		||||
    getEnergyTypeList() {
 | 
			
		||||
      getEnergyTypeListAll().then((res) => {
 | 
			
		||||
        this.energyTypeList = res.data || []
 | 
			
		||||
      })
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
	name: 'EnergyStatistics',
 | 
			
		||||
	components: { EnergyStatisticsAdd, EnergyStatisticsDet },
 | 
			
		||||
	mixins: [tableHeightMixin],
 | 
			
		||||
	data() {
 | 
			
		||||
		return {
 | 
			
		||||
			formConfig: [
 | 
			
		||||
				{
 | 
			
		||||
					type: 'input',
 | 
			
		||||
					label: '方案名称',
 | 
			
		||||
					placeholder: '方案名称',
 | 
			
		||||
					param: 'name',
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					type: 'button',
 | 
			
		||||
					btnName: '查询',
 | 
			
		||||
					name: 'search',
 | 
			
		||||
					color: 'primary',
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					type: 'separate',
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					type: this.$auth.hasPermi('monitoring:energy-statistics:create')
 | 
			
		||||
						? 'button'
 | 
			
		||||
						: '',
 | 
			
		||||
					btnName: '新增',
 | 
			
		||||
					name: 'add',
 | 
			
		||||
					color: 'success',
 | 
			
		||||
					plain: true,
 | 
			
		||||
				},
 | 
			
		||||
			],
 | 
			
		||||
			tableProps,
 | 
			
		||||
			tableBtn: [
 | 
			
		||||
				this.$auth.hasPermi('monitoring:energy-statistics:bind')
 | 
			
		||||
					? {
 | 
			
		||||
							type: 'connect',
 | 
			
		||||
							btnName: '绑定',
 | 
			
		||||
					  }
 | 
			
		||||
					: undefined,
 | 
			
		||||
				{
 | 
			
		||||
					type: 'detail',
 | 
			
		||||
					btnName: '详情',
 | 
			
		||||
				},
 | 
			
		||||
				this.$auth.hasPermi('monitoring:energy-statistics:update')
 | 
			
		||||
					? {
 | 
			
		||||
							type: 'edit',
 | 
			
		||||
							btnName: '编辑',
 | 
			
		||||
					  }
 | 
			
		||||
					: undefined,
 | 
			
		||||
				this.$auth.hasPermi('monitoring:energy-statistics:delete')
 | 
			
		||||
					? {
 | 
			
		||||
							type: 'delete',
 | 
			
		||||
							btnName: '删除',
 | 
			
		||||
					  }
 | 
			
		||||
					: undefined,
 | 
			
		||||
			].filter((v) => v),
 | 
			
		||||
			// 总条数
 | 
			
		||||
			total: 0,
 | 
			
		||||
			// 班次基础信息列表
 | 
			
		||||
			list: [],
 | 
			
		||||
			// 弹出层标题
 | 
			
		||||
			addOrEditTitle: '',
 | 
			
		||||
			// 是否显示弹出层
 | 
			
		||||
			centervisible: false,
 | 
			
		||||
			// 查询参数
 | 
			
		||||
			queryParams: {
 | 
			
		||||
				pageNo: 1,
 | 
			
		||||
				pageSize: 20,
 | 
			
		||||
				name: null,
 | 
			
		||||
			},
 | 
			
		||||
			energyTypeList: [],
 | 
			
		||||
		};
 | 
			
		||||
	},
 | 
			
		||||
	created() {
 | 
			
		||||
		this.getList();
 | 
			
		||||
	},
 | 
			
		||||
	mounted() {
 | 
			
		||||
		// 获取能源列表
 | 
			
		||||
		this.getEnergyTypeList();
 | 
			
		||||
	},
 | 
			
		||||
	methods: {
 | 
			
		||||
		buttonClick(val) {
 | 
			
		||||
			switch (val.btnName) {
 | 
			
		||||
				case 'search':
 | 
			
		||||
					this.queryParams.pageNo = 1;
 | 
			
		||||
					this.queryParams.name = val.name;
 | 
			
		||||
					this.getList();
 | 
			
		||||
					break;
 | 
			
		||||
				default:
 | 
			
		||||
					this.addOrEditTitle = '新增';
 | 
			
		||||
					this.centervisible = true;
 | 
			
		||||
					this.$nextTick(() => {
 | 
			
		||||
						this.$refs.energyStatistics.init();
 | 
			
		||||
					});
 | 
			
		||||
			}
 | 
			
		||||
		},
 | 
			
		||||
		/** 查询列表 */
 | 
			
		||||
		getList() {
 | 
			
		||||
			getEnergyStatisticsPage(this.queryParams).then((response) => {
 | 
			
		||||
				let arr = response.data.list || [];
 | 
			
		||||
				arr.map((item) => {
 | 
			
		||||
					this.getDictDatas('energy_type').map((subItem) => {
 | 
			
		||||
						if (item.energyType === subItem.value) {
 | 
			
		||||
							item.energyTypeLabel = subItem.label;
 | 
			
		||||
						}
 | 
			
		||||
					});
 | 
			
		||||
				});
 | 
			
		||||
				this.list = arr;
 | 
			
		||||
				this.total = response.data.total;
 | 
			
		||||
			});
 | 
			
		||||
		},
 | 
			
		||||
		handleClick(val) {
 | 
			
		||||
			console.log(val);
 | 
			
		||||
			switch (val.type) {
 | 
			
		||||
				case 'edit':
 | 
			
		||||
					this.addOrEditTitle = '编辑';
 | 
			
		||||
					this.$nextTick(() => {
 | 
			
		||||
						this.$refs.energyStatistics.init(val.data.id);
 | 
			
		||||
					});
 | 
			
		||||
					this.centervisible = true;
 | 
			
		||||
					break;
 | 
			
		||||
				case 'delete':
 | 
			
		||||
					this.handleDelete(val.data);
 | 
			
		||||
					break;
 | 
			
		||||
				case 'detail':
 | 
			
		||||
					this.$nextTick(() => {
 | 
			
		||||
						this.$refs.plcParam.init(val.data, 'detail');
 | 
			
		||||
					});
 | 
			
		||||
					break;
 | 
			
		||||
				default:
 | 
			
		||||
					this.$nextTick(() => {
 | 
			
		||||
						this.$refs.plcParam.init(val.data, 'connect');
 | 
			
		||||
					});
 | 
			
		||||
			}
 | 
			
		||||
		},
 | 
			
		||||
		handleCancel() {
 | 
			
		||||
			this.$refs.energyStatistics.formClear();
 | 
			
		||||
			this.centervisible = false;
 | 
			
		||||
			this.addOrEditTitle = '';
 | 
			
		||||
		},
 | 
			
		||||
		handleConfirm() {
 | 
			
		||||
			this.$refs.energyStatistics.submitForm();
 | 
			
		||||
		},
 | 
			
		||||
		successSubmit() {
 | 
			
		||||
			this.handleCancel();
 | 
			
		||||
			this.getList();
 | 
			
		||||
		},
 | 
			
		||||
		/** 删除按钮操作 */
 | 
			
		||||
		handleDelete(row) {
 | 
			
		||||
			this.$modal
 | 
			
		||||
				.confirm('是否确认删除方案名称为"' + row.name + '"的数据项?')
 | 
			
		||||
				.then(function () {
 | 
			
		||||
					return deleteEnergyStatistics(row.id);
 | 
			
		||||
				})
 | 
			
		||||
				.then(() => {
 | 
			
		||||
					this.queryParams.pageNo = 1;
 | 
			
		||||
					this.getList();
 | 
			
		||||
					this.$modal.msgSuccess('删除成功');
 | 
			
		||||
				})
 | 
			
		||||
				.catch(() => {});
 | 
			
		||||
		},
 | 
			
		||||
		closeDrawer() {
 | 
			
		||||
			this.getList();
 | 
			
		||||
		},
 | 
			
		||||
		getEnergyTypeList() {
 | 
			
		||||
			getEnergyTypeListAll().then((res) => {
 | 
			
		||||
				this.energyTypeList = res.data || [];
 | 
			
		||||
			});
 | 
			
		||||
		},
 | 
			
		||||
	},
 | 
			
		||||
};
 | 
			
		||||
</script>
 | 
			
		||||
 
 | 
			
		||||
@@ -1,271 +1,289 @@
 | 
			
		||||
<template>
 | 
			
		||||
  <div class="orderEnergyContainer">
 | 
			
		||||
    <div class="box1">
 | 
			
		||||
      <!-- 搜索工作栏 -->
 | 
			
		||||
      <search-bar
 | 
			
		||||
        :formConfigs="formConfig"
 | 
			
		||||
        ref="searchBarForm"
 | 
			
		||||
        @headBtnClick="buttonClick"
 | 
			
		||||
      />
 | 
			
		||||
    </div>
 | 
			
		||||
    <div class="box2">
 | 
			
		||||
      <div class="boxTitle">
 | 
			
		||||
        <span class="blueTitle"></span>
 | 
			
		||||
        <span>工单信息</span>
 | 
			
		||||
      </div>
 | 
			
		||||
      <el-row>
 | 
			
		||||
        <el-col :span='4'>
 | 
			
		||||
          <div class="blodTip">工单名称</div>
 | 
			
		||||
          <div class="lightTip">{{ orderMsg.name }}</div>
 | 
			
		||||
        </el-col>
 | 
			
		||||
        <el-col :span='4'>
 | 
			
		||||
          <div class="blodTip">产品名称</div>
 | 
			
		||||
          <div class="lightTip">{{orderMsg.productName }}</div>
 | 
			
		||||
        </el-col>
 | 
			
		||||
        <el-col :span='4'>
 | 
			
		||||
          <div class="blodTip">计划完成数量</div>
 | 
			
		||||
          <div class="lightTip">{{orderMsg.planQuantity }}</div>
 | 
			
		||||
        </el-col>
 | 
			
		||||
        <el-col :span='4'>
 | 
			
		||||
          <div class="blodTip">实际开始时间</div>
 | 
			
		||||
          <div class="lightTip">{{ parseTime(orderMsg.startProduceTime) }}</div>
 | 
			
		||||
        </el-col>
 | 
			
		||||
        <el-col :span='4'>
 | 
			
		||||
          <div class="blodTip">实际完成时间</div>
 | 
			
		||||
          <div class="lightTip">{{ parseTime(orderMsg.finishProduceTime) }}</div>
 | 
			
		||||
        </el-col>
 | 
			
		||||
        <el-col :span='4'>
 | 
			
		||||
          <div class="blodTip">实际加工数量</div>
 | 
			
		||||
          <div class="lightTip">{{orderMsg.actualQuantity }}</div>
 | 
			
		||||
        </el-col>
 | 
			
		||||
      </el-row>
 | 
			
		||||
    </div>
 | 
			
		||||
    <div class="box3">
 | 
			
		||||
      <div class="boxTitle">
 | 
			
		||||
        <span class="blueTitle"></span>
 | 
			
		||||
        <span>能耗信息</span>
 | 
			
		||||
      </div>
 | 
			
		||||
      <div class="toggleTabBox">
 | 
			
		||||
        <div :class="{ active: activeModule === 'dataList' }" @click="toggleTab('dataList')">数据列表</div>
 | 
			
		||||
        <div :class="{ active: activeModule === 'barChart' }" @click="toggleTab('barChart')">柱状图</div>
 | 
			
		||||
      </div>
 | 
			
		||||
      <div>
 | 
			
		||||
        <div  v-show="activeModule === 'dataList'">
 | 
			
		||||
          <!-- 表格 -->
 | 
			
		||||
          <base-table
 | 
			
		||||
            :page="queryParams.pageNo"
 | 
			
		||||
            :limit="queryParams.pageSize"
 | 
			
		||||
            :table-props="tableProps"
 | 
			
		||||
            :table-data="tableData"
 | 
			
		||||
            :max-height="tableH"
 | 
			
		||||
          />
 | 
			
		||||
        </div>
 | 
			
		||||
        <!-- 图形 -->
 | 
			
		||||
        <div v-show="activeModule === 'barChart'">
 | 
			
		||||
          <bar-chart ref="orderEnergyChart" :chartData="chartData"/>
 | 
			
		||||
        </div>
 | 
			
		||||
      </div>
 | 
			
		||||
    </div>
 | 
			
		||||
  </div>
 | 
			
		||||
	<div class="orderEnergyContainer">
 | 
			
		||||
		<div class="box1">
 | 
			
		||||
			<!-- 搜索工作栏 -->
 | 
			
		||||
			<search-bar
 | 
			
		||||
				:formConfigs="formConfig"
 | 
			
		||||
				ref="searchBarForm"
 | 
			
		||||
				@headBtnClick="buttonClick" />
 | 
			
		||||
		</div>
 | 
			
		||||
		<div class="box2">
 | 
			
		||||
			<div class="boxTitle">
 | 
			
		||||
				<span class="blueTitle"></span>
 | 
			
		||||
				<span>工单信息</span>
 | 
			
		||||
			</div>
 | 
			
		||||
			<el-row>
 | 
			
		||||
				<el-col :span="4">
 | 
			
		||||
					<div class="blodTip">工单名称</div>
 | 
			
		||||
					<div class="lightTip">{{ orderMsg.name }}</div>
 | 
			
		||||
				</el-col>
 | 
			
		||||
				<el-col :span="4">
 | 
			
		||||
					<div class="blodTip">产品名称</div>
 | 
			
		||||
					<div class="lightTip">{{ orderMsg.productName }}</div>
 | 
			
		||||
				</el-col>
 | 
			
		||||
				<el-col :span="4">
 | 
			
		||||
					<div class="blodTip">计划完成数量</div>
 | 
			
		||||
					<div class="lightTip">{{ orderMsg.planQuantity }}</div>
 | 
			
		||||
				</el-col>
 | 
			
		||||
				<el-col :span="4">
 | 
			
		||||
					<div class="blodTip">实际开始时间</div>
 | 
			
		||||
					<div class="lightTip">{{ parseTime(orderMsg.startProduceTime) }}</div>
 | 
			
		||||
				</el-col>
 | 
			
		||||
				<el-col :span="4">
 | 
			
		||||
					<div class="blodTip">实际完成时间</div>
 | 
			
		||||
					<div class="lightTip">
 | 
			
		||||
						{{ parseTime(orderMsg.finishProduceTime) }}
 | 
			
		||||
					</div>
 | 
			
		||||
				</el-col>
 | 
			
		||||
				<el-col :span="4">
 | 
			
		||||
					<div class="blodTip">实际加工数量</div>
 | 
			
		||||
					<div class="lightTip">{{ orderMsg.actualQuantity }}</div>
 | 
			
		||||
				</el-col>
 | 
			
		||||
			</el-row>
 | 
			
		||||
		</div>
 | 
			
		||||
		<div class="box3">
 | 
			
		||||
			<div class="boxTitle">
 | 
			
		||||
				<span class="blueTitle"></span>
 | 
			
		||||
				<span>能耗信息</span>
 | 
			
		||||
			</div>
 | 
			
		||||
			<div class="toggleTabBox">
 | 
			
		||||
				<div
 | 
			
		||||
					:class="{ active: activeModule === 'dataList' }"
 | 
			
		||||
					@click="toggleTab('dataList')">
 | 
			
		||||
					数据列表
 | 
			
		||||
				</div>
 | 
			
		||||
				<div
 | 
			
		||||
					:class="{ active: activeModule === 'barChart' }"
 | 
			
		||||
					@click="toggleTab('barChart')">
 | 
			
		||||
					柱状图
 | 
			
		||||
				</div>
 | 
			
		||||
			</div>
 | 
			
		||||
			<div>
 | 
			
		||||
				<div v-show="activeModule === 'dataList'">
 | 
			
		||||
					<!-- 表格 -->
 | 
			
		||||
					<base-table
 | 
			
		||||
						:page="queryParams.pageNo"
 | 
			
		||||
						:limit="queryParams.pageSize"
 | 
			
		||||
						:table-props="tableProps"
 | 
			
		||||
						:table-data="tableData"
 | 
			
		||||
						:max-height="tableH" />
 | 
			
		||||
				</div>
 | 
			
		||||
				<!-- 图形 -->
 | 
			
		||||
				<div v-show="activeModule === 'barChart'">
 | 
			
		||||
					<bar-chart
 | 
			
		||||
						ref="orderEnergyChart"
 | 
			
		||||
						:chartData="chartData" />
 | 
			
		||||
				</div>
 | 
			
		||||
			</div>
 | 
			
		||||
		</div>
 | 
			
		||||
	</div>
 | 
			
		||||
</template>
 | 
			
		||||
<script>
 | 
			
		||||
const tableProps = [
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'objName',
 | 
			
		||||
    label: '对象名称'
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'objCode',
 | 
			
		||||
    label: '对象编码'
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'energyType',
 | 
			
		||||
    label: '能源类型'
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'startNum',
 | 
			
		||||
    label: '工单开始值'
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'endNum',
 | 
			
		||||
    label: '工单结束值/当前值'
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'useNum',
 | 
			
		||||
    label: '使用量'
 | 
			
		||||
  }
 | 
			
		||||
]
 | 
			
		||||
import { getEnergyTypeListAll } from '@/api/base/energyType'
 | 
			
		||||
import { workOrderList } from '@/api/base/orderManage'
 | 
			
		||||
import { getWorkOrderMsg, getOrderEnergyData } from '@/api/monitoring/orderEnergy'
 | 
			
		||||
import BarChart from "./components/barChart"
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'objName',
 | 
			
		||||
		label: '对象名称',
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'objCode',
 | 
			
		||||
		label: '对象编码',
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'energyType',
 | 
			
		||||
		label: '能源类型',
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'startNum',
 | 
			
		||||
		label: '工单开始值',
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'endNum',
 | 
			
		||||
		label: '工单结束值/当前值',
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'useNum',
 | 
			
		||||
		label: '使用量',
 | 
			
		||||
	},
 | 
			
		||||
];
 | 
			
		||||
import { getEnergyTypeListAll } from '@/api/base/energyType';
 | 
			
		||||
import { workOrderList } from '@/api/base/orderManage';
 | 
			
		||||
import {
 | 
			
		||||
	getWorkOrderMsg,
 | 
			
		||||
	getOrderEnergyData,
 | 
			
		||||
} from '@/api/monitoring/orderEnergy';
 | 
			
		||||
import BarChart from './components/barChart';
 | 
			
		||||
import tableHeightMixin from '@/mixins/lb/tableHeightMixin';
 | 
			
		||||
export default {
 | 
			
		||||
  name: 'OrderEnergy',
 | 
			
		||||
  data() {
 | 
			
		||||
    return {
 | 
			
		||||
      formConfig: [
 | 
			
		||||
        {
 | 
			
		||||
          type: 'select',
 | 
			
		||||
          label: '工单',
 | 
			
		||||
          selectOptions: [],
 | 
			
		||||
          param: 'workOrderId',
 | 
			
		||||
          clearable: false
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          type: 'select',
 | 
			
		||||
          label: '能源类型',
 | 
			
		||||
          selectOptions: [],
 | 
			
		||||
          param: 'energyTypeId',
 | 
			
		||||
          filterable: true,
 | 
			
		||||
          width: 120,
 | 
			
		||||
          clearable: false
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          type: 'select',
 | 
			
		||||
          label: '对象维度',
 | 
			
		||||
          selectOptions: this.getDictDatas(this.DICT_TYPE.OBJECT_TYPE),
 | 
			
		||||
          labelField: 'label',
 | 
			
		||||
          valueField: 'value',
 | 
			
		||||
          param: 'objType',
 | 
			
		||||
          width: 100,
 | 
			
		||||
          clearable: false
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          type: 'button',
 | 
			
		||||
          btnName: '查询',
 | 
			
		||||
          name: 'search',
 | 
			
		||||
          color: 'primary'
 | 
			
		||||
        }
 | 
			
		||||
      ],
 | 
			
		||||
      tableProps,
 | 
			
		||||
      tableData: [],
 | 
			
		||||
      tableH: this.tableHeight(400),
 | 
			
		||||
      // 查询参数
 | 
			
		||||
      queryParams: {
 | 
			
		||||
        workOrderId: '',
 | 
			
		||||
        objType: '',
 | 
			
		||||
        energyTypeId: ''
 | 
			
		||||
      },
 | 
			
		||||
      orderMsg: {},
 | 
			
		||||
      chartData: [],
 | 
			
		||||
      activeModule: 'dataList'
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
  components: { BarChart },
 | 
			
		||||
  mounted() {
 | 
			
		||||
    window.addEventListener('resize', () => {
 | 
			
		||||
      this.tableH = this.tableHeight(400)
 | 
			
		||||
    })
 | 
			
		||||
    this.getListArr()
 | 
			
		||||
  },
 | 
			
		||||
  methods: {
 | 
			
		||||
    getListArr() {
 | 
			
		||||
      workOrderList().then(res => {
 | 
			
		||||
        this.formConfig[0].selectOptions = res.data || []
 | 
			
		||||
      })
 | 
			
		||||
      getEnergyTypeListAll().then(res => {
 | 
			
		||||
        this.formConfig[1].selectOptions = res.data || []
 | 
			
		||||
      })
 | 
			
		||||
    },
 | 
			
		||||
    buttonClick(val) {
 | 
			
		||||
      if (!val.workOrderId) {
 | 
			
		||||
        this.$modal.msgWarning('工单不能为空')
 | 
			
		||||
        return false
 | 
			
		||||
      }
 | 
			
		||||
      if (!val.energyTypeId) {
 | 
			
		||||
        this.$modal.msgWarning('能源类型不能为空')
 | 
			
		||||
        return false
 | 
			
		||||
      }
 | 
			
		||||
      if (!val.objType) {
 | 
			
		||||
        this.$modal.msgWarning('对象维度不能为空')
 | 
			
		||||
        return false
 | 
			
		||||
      }
 | 
			
		||||
      this.queryParams.workOrderId = val.workOrderId
 | 
			
		||||
      this.queryParams.objType = val.objType
 | 
			
		||||
      this.queryParams.energyTypeId = val.energyTypeId
 | 
			
		||||
      getWorkOrderMsg({ ...this.queryParams }).then(res => {
 | 
			
		||||
        this.orderMsg = res.data || {}
 | 
			
		||||
        getOrderEnergyData({
 | 
			
		||||
          ...this.queryParams,
 | 
			
		||||
          startProduceTime: res.data.startProduceTime	 || '',
 | 
			
		||||
          finishProduceTime: res.data.finishProduceTime || ''
 | 
			
		||||
        }).then(result => {
 | 
			
		||||
          this.tableData = result.data || []
 | 
			
		||||
          this.chartData = result.data || []
 | 
			
		||||
        })
 | 
			
		||||
      })
 | 
			
		||||
    },
 | 
			
		||||
    toggleTab(val) {
 | 
			
		||||
      this.activeModule = val
 | 
			
		||||
      if (this.activeModule === 'barChart') {
 | 
			
		||||
        this.$nextTick((res) => {
 | 
			
		||||
          this.$refs.orderEnergyChart.getChart()
 | 
			
		||||
        })
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    headBtnClick() {}
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
	name: 'OrderEnergy',
 | 
			
		||||
	mixins: [tableHeightMixin],
 | 
			
		||||
	data() {
 | 
			
		||||
		return {
 | 
			
		||||
			formConfig: [
 | 
			
		||||
				{
 | 
			
		||||
					type: 'select',
 | 
			
		||||
					label: '工单',
 | 
			
		||||
					selectOptions: [],
 | 
			
		||||
					param: 'workOrderId',
 | 
			
		||||
					clearable: false,
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					type: 'select',
 | 
			
		||||
					label: '能源类型',
 | 
			
		||||
					selectOptions: [],
 | 
			
		||||
					param: 'energyTypeId',
 | 
			
		||||
					labelField: 'labelName',
 | 
			
		||||
					filterable: true,
 | 
			
		||||
					width: 120,
 | 
			
		||||
					clearable: false,
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					type: 'select',
 | 
			
		||||
					label: '对象维度',
 | 
			
		||||
					selectOptions: this.getDictDatas(this.DICT_TYPE.OBJECT_TYPE),
 | 
			
		||||
					labelField: 'label',
 | 
			
		||||
					valueField: 'value',
 | 
			
		||||
					param: 'objType',
 | 
			
		||||
					width: 100,
 | 
			
		||||
					clearable: false,
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					type: 'button',
 | 
			
		||||
					btnName: '查询',
 | 
			
		||||
					name: 'search',
 | 
			
		||||
					color: 'primary',
 | 
			
		||||
				},
 | 
			
		||||
			],
 | 
			
		||||
			tableProps,
 | 
			
		||||
			tableData: [],
 | 
			
		||||
			heightNum: 400,
 | 
			
		||||
			// 查询参数
 | 
			
		||||
			queryParams: {
 | 
			
		||||
				workOrderId: '',
 | 
			
		||||
				objType: '',
 | 
			
		||||
				energyTypeId: '',
 | 
			
		||||
			},
 | 
			
		||||
			orderMsg: {},
 | 
			
		||||
			chartData: [],
 | 
			
		||||
			activeModule: 'dataList',
 | 
			
		||||
		};
 | 
			
		||||
	},
 | 
			
		||||
	components: { BarChart },
 | 
			
		||||
	mounted() {
 | 
			
		||||
		this.getListArr();
 | 
			
		||||
	},
 | 
			
		||||
	methods: {
 | 
			
		||||
		getListArr() {
 | 
			
		||||
			workOrderList().then((res) => {
 | 
			
		||||
				this.formConfig[0].selectOptions = res.data || [];
 | 
			
		||||
			});
 | 
			
		||||
			getEnergyTypeListAll().then((res) => {
 | 
			
		||||
				this.formConfig[1].selectOptions = res.data || [];
 | 
			
		||||
			});
 | 
			
		||||
		},
 | 
			
		||||
		buttonClick(val) {
 | 
			
		||||
			if (!val.workOrderId) {
 | 
			
		||||
				this.$modal.msgWarning('工单不能为空');
 | 
			
		||||
				return false;
 | 
			
		||||
			}
 | 
			
		||||
			if (!val.energyTypeId) {
 | 
			
		||||
				this.$modal.msgWarning('能源类型不能为空');
 | 
			
		||||
				return false;
 | 
			
		||||
			}
 | 
			
		||||
			if (!val.objType) {
 | 
			
		||||
				this.$modal.msgWarning('对象维度不能为空');
 | 
			
		||||
				return false;
 | 
			
		||||
			}
 | 
			
		||||
			this.queryParams.workOrderId = val.workOrderId;
 | 
			
		||||
			this.queryParams.objType = val.objType;
 | 
			
		||||
			this.queryParams.energyTypeId = val.energyTypeId;
 | 
			
		||||
			getWorkOrderMsg({ ...this.queryParams }).then((res) => {
 | 
			
		||||
				this.orderMsg = res.data || {};
 | 
			
		||||
				getOrderEnergyData({
 | 
			
		||||
					...this.queryParams,
 | 
			
		||||
					startProduceTime: res.data.startProduceTime || '',
 | 
			
		||||
					finishProduceTime: res.data.finishProduceTime || '',
 | 
			
		||||
				}).then((result) => {
 | 
			
		||||
					this.tableData = result.data || [];
 | 
			
		||||
					this.chartData = result.data || [];
 | 
			
		||||
				});
 | 
			
		||||
			});
 | 
			
		||||
		},
 | 
			
		||||
		toggleTab(val) {
 | 
			
		||||
			this.activeModule = val;
 | 
			
		||||
			if (this.activeModule === 'barChart') {
 | 
			
		||||
				this.$nextTick((res) => {
 | 
			
		||||
					this.$refs.orderEnergyChart.getChart();
 | 
			
		||||
				});
 | 
			
		||||
			}
 | 
			
		||||
		},
 | 
			
		||||
		headBtnClick() {},
 | 
			
		||||
	},
 | 
			
		||||
};
 | 
			
		||||
</script>
 | 
			
		||||
<style lang='scss' scoped>
 | 
			
		||||
.orderEnergyContainer {
 | 
			
		||||
  background-color: rgb(242, 244, 249);
 | 
			
		||||
  .box1, .box2, .box3 {
 | 
			
		||||
    background-color: #fff;
 | 
			
		||||
    border-radius: 9px;
 | 
			
		||||
  }
 | 
			
		||||
  .box1 {
 | 
			
		||||
    height: 64px;
 | 
			
		||||
    padding: 12px 16px 0;
 | 
			
		||||
  }
 | 
			
		||||
  .box2 {
 | 
			
		||||
    height: 122px;
 | 
			
		||||
    margin: 8px 0;
 | 
			
		||||
    padding: 16px;
 | 
			
		||||
    .blodTip {
 | 
			
		||||
      font-weight: 600;
 | 
			
		||||
      color: rgba(0,0,0,0.85);
 | 
			
		||||
      margin-bottom: 8px;
 | 
			
		||||
    }
 | 
			
		||||
    .lightTip {
 | 
			
		||||
      font-weight: 400;
 | 
			
		||||
      color: rgba(102,102,102,0.75);
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
  .box3 {
 | 
			
		||||
    padding: 16px;
 | 
			
		||||
    height: calc(100vh - 330px);
 | 
			
		||||
    .toggleTabBox {
 | 
			
		||||
      display: inline-block;
 | 
			
		||||
      div {
 | 
			
		||||
        display: inline-block;
 | 
			
		||||
        padding:0 8px 4px;
 | 
			
		||||
        color: rgba(102, 102, 102, 0.5);
 | 
			
		||||
        border-bottom: 2px solid rgba(242, 244, 249, 1);
 | 
			
		||||
        cursor: pointer;
 | 
			
		||||
      }
 | 
			
		||||
      .active {
 | 
			
		||||
        color: rgba(0,0,0,0.85);
 | 
			
		||||
        border-bottom-color: #0B58FF;
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
  .boxTitle {
 | 
			
		||||
    display: inline-block;
 | 
			
		||||
    font-size: 16px;
 | 
			
		||||
    font-weight: 400;
 | 
			
		||||
    color: #000000;
 | 
			
		||||
    margin:0 10px 20px 0;
 | 
			
		||||
  }
 | 
			
		||||
  .blueTitle {
 | 
			
		||||
    content: '';
 | 
			
		||||
    display: inline-block;
 | 
			
		||||
    width: 4px;
 | 
			
		||||
    height: 18px;
 | 
			
		||||
    background-color: #0B58FF;
 | 
			
		||||
    border-radius: 1px;
 | 
			
		||||
    margin-right: 8px;
 | 
			
		||||
    vertical-align: bottom;
 | 
			
		||||
  }
 | 
			
		||||
	background-color: rgb(242, 244, 249);
 | 
			
		||||
	.box1,
 | 
			
		||||
	.box2,
 | 
			
		||||
	.box3 {
 | 
			
		||||
		background-color: #fff;
 | 
			
		||||
		border-radius: 9px;
 | 
			
		||||
	}
 | 
			
		||||
	.box1 {
 | 
			
		||||
		height: 64px;
 | 
			
		||||
		padding: 12px 16px 0;
 | 
			
		||||
	}
 | 
			
		||||
	.box2 {
 | 
			
		||||
		height: 122px;
 | 
			
		||||
		margin: 8px 0;
 | 
			
		||||
		padding: 16px;
 | 
			
		||||
		.blodTip {
 | 
			
		||||
			font-weight: 600;
 | 
			
		||||
			color: rgba(0, 0, 0, 0.85);
 | 
			
		||||
			margin-bottom: 8px;
 | 
			
		||||
		}
 | 
			
		||||
		.lightTip {
 | 
			
		||||
			font-weight: 400;
 | 
			
		||||
			color: rgba(102, 102, 102, 0.75);
 | 
			
		||||
			overflow: hidden;
 | 
			
		||||
			white-space: nowrap;
 | 
			
		||||
			text-overflow: ellipsis;
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	.box3 {
 | 
			
		||||
		padding: 16px;
 | 
			
		||||
		height: calc(100vh - 330px);
 | 
			
		||||
		.toggleTabBox {
 | 
			
		||||
			display: inline-block;
 | 
			
		||||
			div {
 | 
			
		||||
				display: inline-block;
 | 
			
		||||
				padding: 0 8px 4px;
 | 
			
		||||
				color: rgba(102, 102, 102, 0.5);
 | 
			
		||||
				border-bottom: 2px solid rgba(242, 244, 249, 1);
 | 
			
		||||
				cursor: pointer;
 | 
			
		||||
			}
 | 
			
		||||
			.active {
 | 
			
		||||
				color: rgba(0, 0, 0, 0.85);
 | 
			
		||||
				border-bottom-color: #0b58ff;
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	.boxTitle {
 | 
			
		||||
		display: inline-block;
 | 
			
		||||
		font-size: 16px;
 | 
			
		||||
		font-weight: 400;
 | 
			
		||||
		color: #000000;
 | 
			
		||||
		margin: 0 10px 20px 0;
 | 
			
		||||
	}
 | 
			
		||||
	.blueTitle {
 | 
			
		||||
		content: '';
 | 
			
		||||
		display: inline-block;
 | 
			
		||||
		width: 4px;
 | 
			
		||||
		height: 18px;
 | 
			
		||||
		background-color: #0b58ff;
 | 
			
		||||
		border-radius: 1px;
 | 
			
		||||
		margin-right: 8px;
 | 
			
		||||
		vertical-align: bottom;
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
</style>
 | 
			
		||||
@@ -1,7 +1,7 @@
 | 
			
		||||
<template>
 | 
			
		||||
  <div class="app-container">
 | 
			
		||||
    <search-bar :formConfigs="formConfig" ref="searchBarForm" @headBtnClick="buttonClick" />
 | 
			
		||||
    <base-table v-loading="dataListLoading" :table-props="tableProps" :page="listQuery.pageNo"
 | 
			
		||||
    <base-table :max-height="tableH" v-loading="dataListLoading" :table-props="tableProps" :page="listQuery.pageNo"
 | 
			
		||||
      :limit="listQuery.pageSize" :table-data="tableData">
 | 
			
		||||
      <method-btn v-if="tableBtn.length" slot="handleBtn" :width="120" label="操作" :method-list="tableBtn"
 | 
			
		||||
        @clickBtn="handleClick" />
 | 
			
		||||
@@ -16,7 +16,7 @@
 | 
			
		||||
<script>
 | 
			
		||||
import AddOrUpdate from './add-or-updata';
 | 
			
		||||
// import DetailOrUpdate from './detail-or-updata';
 | 
			
		||||
 | 
			
		||||
import tableHeightMixin from '@/mixins/lb/tableHeightMixin';
 | 
			
		||||
import basicPage from '../../core/mixins/basic-page';
 | 
			
		||||
import StatusBtn from './statusBtn.vue'
 | 
			
		||||
import {
 | 
			
		||||
@@ -54,7 +54,7 @@ const tableProps = [
 | 
			
		||||
];
 | 
			
		||||
 | 
			
		||||
export default {
 | 
			
		||||
	mixins: [basicPage],
 | 
			
		||||
  mixins: [basicPage, tableHeightMixin],
 | 
			
		||||
	data() {
 | 
			
		||||
		return {
 | 
			
		||||
			urlOptions: {
 | 
			
		||||
@@ -112,7 +112,7 @@ export default {
 | 
			
		||||
          param: 'code',
 | 
			
		||||
        },
 | 
			
		||||
				{
 | 
			
		||||
					type: 'button',
 | 
			
		||||
          type: this.$auth.hasPermi('extend:process-equ-material-bom:query') ? 'button' : '',
 | 
			
		||||
					btnName: '查询',
 | 
			
		||||
					name: 'search',
 | 
			
		||||
					color: 'primary',
 | 
			
		||||
 
 | 
			
		||||
@@ -1,7 +1,7 @@
 | 
			
		||||
<template>
 | 
			
		||||
  <div class="app-container">
 | 
			
		||||
    <search-bar :formConfigs="formConfig" ref="searchBarForm" @headBtnClick="buttonClick" />
 | 
			
		||||
    <base-table v-loading="dataListLoading" :table-props="tableProps" :page="listQuery.pageNo"
 | 
			
		||||
    <base-table :max-height="tableH" v-loading="dataListLoading" :table-props="tableProps" :page="listQuery.pageNo"
 | 
			
		||||
      :limit="listQuery.pageSize" :table-data="tableData">
 | 
			
		||||
      <method-btn v-if="tableBtn.length" slot="handleBtn" :width="120" label="操作" :method-list="tableBtn"
 | 
			
		||||
        @clickBtn="handleClick" />
 | 
			
		||||
@@ -16,7 +16,7 @@
 | 
			
		||||
<script>
 | 
			
		||||
import AddOrUpdate from './add-or-updata';
 | 
			
		||||
// import DetailOrUpdate from './detail-or-updata';
 | 
			
		||||
 | 
			
		||||
import tableHeightMixin from '@/mixins/lb/tableHeightMixin';
 | 
			
		||||
import basicPage from '../../core/mixins/basic-page';
 | 
			
		||||
import StatusBtn from './statusBtn.vue'
 | 
			
		||||
import {
 | 
			
		||||
@@ -54,7 +54,7 @@ const tableProps = [
 | 
			
		||||
];
 | 
			
		||||
 | 
			
		||||
export default {
 | 
			
		||||
	mixins: [basicPage],
 | 
			
		||||
  mixins: [basicPage, tableHeightMixin],
 | 
			
		||||
	data() {
 | 
			
		||||
		return {
 | 
			
		||||
			urlOptions: {
 | 
			
		||||
@@ -113,7 +113,7 @@ export default {
 | 
			
		||||
          param: 'code',
 | 
			
		||||
        },
 | 
			
		||||
				{
 | 
			
		||||
					type: 'button',
 | 
			
		||||
          type: this.$auth.hasPermi('extend:process-equ-value-bom:query') ? 'button' : '',
 | 
			
		||||
					btnName: '查询',
 | 
			
		||||
					name: 'search',
 | 
			
		||||
					color: 'primary',
 | 
			
		||||
 
 | 
			
		||||
@@ -1,244 +1,292 @@
 | 
			
		||||
<template>
 | 
			
		||||
  <div class="app-container">
 | 
			
		||||
 | 
			
		||||
    <!-- 搜索工作栏 -->
 | 
			
		||||
    <search-bar :formConfigs="formConfig" ref="searchBarForm" @headBtnClick="buttonClick" />
 | 
			
		||||
    <!-- 列表 -->
 | 
			
		||||
    <base-table :page="queryParams.pageNo" :limit="queryParams.pageSize" :table-props="tableProps" :table-data="list"
 | 
			
		||||
      :max-height="tableH">
 | 
			
		||||
      <method-btn v-if="tableBtn.length" slot="handleBtn" :width="120" label="操作" :method-list="tableBtn"
 | 
			
		||||
        @clickBtn="handleClick" />
 | 
			
		||||
    </base-table>
 | 
			
		||||
    <pagination :page.sync="queryParams.pageNo" :limit.sync="queryParams.pageSize" :total="total"
 | 
			
		||||
      @pagination="getList" />
 | 
			
		||||
    <!-- 新增 -->
 | 
			
		||||
    <base-dialog :dialogTitle="addOrEditTitle" :dialogVisible="centervisible" @cancel="handleCancel"
 | 
			
		||||
      @confirm="handleConfirm" :before-close="handleCancel" width='50%'>
 | 
			
		||||
      <group-class-add ref="classList" @successSubmit="successSubmit" />
 | 
			
		||||
    </base-dialog>
 | 
			
		||||
  </div>
 | 
			
		||||
	<div class="app-container">
 | 
			
		||||
		<!-- 搜索工作栏 -->
 | 
			
		||||
		<search-bar
 | 
			
		||||
			:formConfigs="formConfig"
 | 
			
		||||
			ref="searchBarForm"
 | 
			
		||||
			@headBtnClick="buttonClick" />
 | 
			
		||||
		<!-- 列表 -->
 | 
			
		||||
		<base-table
 | 
			
		||||
			:page="queryParams.pageNo"
 | 
			
		||||
			:limit="queryParams.pageSize"
 | 
			
		||||
			:table-props="tableProps"
 | 
			
		||||
			:table-data="list"
 | 
			
		||||
			:max-height="tableH">
 | 
			
		||||
			<method-btn
 | 
			
		||||
				v-if="tableBtn.length"
 | 
			
		||||
				slot="handleBtn"
 | 
			
		||||
				:width="120"
 | 
			
		||||
				label="操作"
 | 
			
		||||
				:method-list="tableBtn"
 | 
			
		||||
				@clickBtn="handleClick" />
 | 
			
		||||
		</base-table>
 | 
			
		||||
		<pagination
 | 
			
		||||
			:page.sync="queryParams.pageNo"
 | 
			
		||||
			:limit.sync="queryParams.pageSize"
 | 
			
		||||
			:total="total"
 | 
			
		||||
			@pagination="getList" />
 | 
			
		||||
		<!-- 新增 -->
 | 
			
		||||
		<base-dialog
 | 
			
		||||
			:dialogTitle="addOrEditTitle"
 | 
			
		||||
			:dialogVisible="centervisible"
 | 
			
		||||
			@cancel="handleCancel"
 | 
			
		||||
			@confirm="handleConfirm"
 | 
			
		||||
			:before-close="handleCancel"
 | 
			
		||||
			width="50%">
 | 
			
		||||
			<group-class-add
 | 
			
		||||
				ref="classList"
 | 
			
		||||
				@successSubmit="successSubmit" />
 | 
			
		||||
		</base-dialog>
 | 
			
		||||
	</div>
 | 
			
		||||
</template>
 | 
			
		||||
 | 
			
		||||
<script>
 | 
			
		||||
import { getGroupClassesPage, deleteGroupClasses, updateGroupClasses } from "@/api/base/groupClasses";
 | 
			
		||||
import GroupClassAdd from './components/groupClassAdd'
 | 
			
		||||
import { formatDate } from '@/utils'
 | 
			
		||||
import { publicFormatter } from '@/utils/dict'
 | 
			
		||||
import {
 | 
			
		||||
	getGroupClassesPage,
 | 
			
		||||
	deleteGroupClasses,
 | 
			
		||||
	updateGroupClasses,
 | 
			
		||||
} from '@/api/base/groupClasses';
 | 
			
		||||
import GroupClassAdd from './components/groupClassAdd';
 | 
			
		||||
import { formatDate } from '@/utils';
 | 
			
		||||
import { publicFormatter } from '@/utils/dict';
 | 
			
		||||
import tableHeightMixin from '@/mixins/lb/tableHeightMixin';
 | 
			
		||||
const tableProps = [
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'enableTimeStr',
 | 
			
		||||
    label: '生效时段',
 | 
			
		||||
    minWidth: 300
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'roomNameDict',
 | 
			
		||||
    label: '车间名称',
 | 
			
		||||
    filter: publicFormatter('workshop'),
 | 
			
		||||
    minWidth: 100
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'name',
 | 
			
		||||
    label: '班次名称'
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'timeStr',
 | 
			
		||||
    label: '班次时间',
 | 
			
		||||
    minWidth: 100
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'code',
 | 
			
		||||
    label: '班次编码',
 | 
			
		||||
    minWidth: 200
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'status',
 | 
			
		||||
    label: '班次状态'
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'remark',
 | 
			
		||||
    label: '备注'
 | 
			
		||||
  }
 | 
			
		||||
]
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'enableTimeStr',
 | 
			
		||||
		label: '生效时段',
 | 
			
		||||
		minWidth: 300,
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'roomNameDict',
 | 
			
		||||
		label: '车间名称',
 | 
			
		||||
		filter: publicFormatter('workshop'),
 | 
			
		||||
		minWidth: 100,
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'name',
 | 
			
		||||
		label: '班次名称',
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'timeStr',
 | 
			
		||||
		label: '班次时间',
 | 
			
		||||
		minWidth: 100,
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'code',
 | 
			
		||||
		label: '班次编码',
 | 
			
		||||
		minWidth: 200,
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'status',
 | 
			
		||||
		label: '班次状态',
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'remark',
 | 
			
		||||
		label: '备注',
 | 
			
		||||
	},
 | 
			
		||||
];
 | 
			
		||||
export default {
 | 
			
		||||
  name: "GroupClasses",
 | 
			
		||||
  components: { GroupClassAdd },
 | 
			
		||||
  data() {
 | 
			
		||||
    return {
 | 
			
		||||
      formConfig: [
 | 
			
		||||
        {
 | 
			
		||||
          type: 'input',
 | 
			
		||||
          label: '班次名称',
 | 
			
		||||
          placeholder: '班次名称',
 | 
			
		||||
          param: 'name'
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          type: 'button',
 | 
			
		||||
          btnName: '查询',
 | 
			
		||||
          name: 'search',
 | 
			
		||||
          color: 'primary'
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          type: 'separate'
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          type: this.$auth.hasPermi('base:group-classes:create') ? 'button' : '',
 | 
			
		||||
          btnName: '新增',
 | 
			
		||||
          name: 'add',
 | 
			
		||||
          color: 'success',
 | 
			
		||||
          plain: true
 | 
			
		||||
        }
 | 
			
		||||
      ],
 | 
			
		||||
      tableProps,
 | 
			
		||||
      tableBtn: [
 | 
			
		||||
        this.$auth.hasPermi('base:group-classes:cancel')
 | 
			
		||||
          ? {
 | 
			
		||||
            type: 'cancel',
 | 
			
		||||
            btnName: '作废',
 | 
			
		||||
            showParam: {
 | 
			
		||||
              type: '&',
 | 
			
		||||
              data: [
 | 
			
		||||
                {
 | 
			
		||||
                  type: 'unequal',
 | 
			
		||||
                  name: 'status',
 | 
			
		||||
                  value: '不可用'
 | 
			
		||||
                }
 | 
			
		||||
              ]
 | 
			
		||||
            }
 | 
			
		||||
          }
 | 
			
		||||
          : undefined,
 | 
			
		||||
        this.$auth.hasPermi('base:group-classes:update')
 | 
			
		||||
          ? {
 | 
			
		||||
            type: 'edit',
 | 
			
		||||
            btnName: '编辑'
 | 
			
		||||
          }
 | 
			
		||||
          : undefined,
 | 
			
		||||
        this.$auth.hasPermi('base:group-classes:delete')
 | 
			
		||||
          ? {
 | 
			
		||||
            type: 'delete',
 | 
			
		||||
            btnName: '删除'
 | 
			
		||||
          }
 | 
			
		||||
          : undefined
 | 
			
		||||
      ].filter((v) => v),
 | 
			
		||||
      tableH: this.tableHeight(260),
 | 
			
		||||
      // 总条数
 | 
			
		||||
      total: 0,
 | 
			
		||||
      // 班次基础信息列表
 | 
			
		||||
      list: [],
 | 
			
		||||
      // 弹出层标题
 | 
			
		||||
      addOrEditTitle: "",
 | 
			
		||||
      // 是否显示弹出层
 | 
			
		||||
      centervisible: false,
 | 
			
		||||
      // 查询参数
 | 
			
		||||
      queryParams: {
 | 
			
		||||
        pageNo: 1,
 | 
			
		||||
        pageSize: 20,
 | 
			
		||||
        name: null
 | 
			
		||||
      }
 | 
			
		||||
    };
 | 
			
		||||
  },
 | 
			
		||||
  created() {
 | 
			
		||||
    window.addEventListener('resize', () => {
 | 
			
		||||
      this.tableH = this.tableHeight(260)
 | 
			
		||||
    })
 | 
			
		||||
    this.getList()
 | 
			
		||||
  },
 | 
			
		||||
  methods: {
 | 
			
		||||
    buttonClick(val) {
 | 
			
		||||
      switch (val.btnName) {
 | 
			
		||||
        case 'search':
 | 
			
		||||
          this.queryParams.pageNo = 1;
 | 
			
		||||
          this.queryParams.name = val.name
 | 
			
		||||
          this.getList()
 | 
			
		||||
          break
 | 
			
		||||
        default:
 | 
			
		||||
          this.addOrEditTitle = '新增'
 | 
			
		||||
          this.centervisible = true
 | 
			
		||||
          this.$nextTick(() => {
 | 
			
		||||
            this.$refs.classList.init()
 | 
			
		||||
          })
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    /** 查询列表 */
 | 
			
		||||
    getList() {
 | 
			
		||||
      getGroupClassesPage(this.queryParams).then(res => {
 | 
			
		||||
        if (res.code === 0 && res.data.list.length > 0) {
 | 
			
		||||
          res.data.list.map(item => {
 | 
			
		||||
            item.enableTimeStr = formatDate(item.enableTime) + '至' + (item.disableTime ? formatDate(item.disableTime) : '永久')
 | 
			
		||||
            item.timeStr = item.startTime.slice(0, 5) + '-' + item.endTime.slice(0, 5)
 | 
			
		||||
            item.status = item.status === true ? '可用' : '不可用'
 | 
			
		||||
          })
 | 
			
		||||
          this.list = res.data.list;
 | 
			
		||||
          this.total = res.data.total;
 | 
			
		||||
        } else {
 | 
			
		||||
          this.list = []
 | 
			
		||||
          this.total = 0
 | 
			
		||||
        }
 | 
			
		||||
      });
 | 
			
		||||
    },
 | 
			
		||||
    handleClick(val) {
 | 
			
		||||
      switch (val.type) {
 | 
			
		||||
        case 'edit':
 | 
			
		||||
          this.addOrEditTitle = '编辑'
 | 
			
		||||
          this.$nextTick(() => {
 | 
			
		||||
            this.$refs.classList.init(val.data.id)
 | 
			
		||||
          })
 | 
			
		||||
          this.centervisible = true
 | 
			
		||||
          break
 | 
			
		||||
        case 'cancel':
 | 
			
		||||
          this.discard(val.data)
 | 
			
		||||
          break
 | 
			
		||||
        default:
 | 
			
		||||
          this.handleDelete(val.data)
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    handleCancel() {
 | 
			
		||||
      this.$refs.classList.formClear()
 | 
			
		||||
      this.centervisible = false
 | 
			
		||||
      this.addOrEditTitle = ''
 | 
			
		||||
    },
 | 
			
		||||
    handleConfirm() {
 | 
			
		||||
      this.$refs.classList.submitForm()
 | 
			
		||||
    },
 | 
			
		||||
    successSubmit() {
 | 
			
		||||
      this.handleCancel()
 | 
			
		||||
      this.getList()
 | 
			
		||||
    },
 | 
			
		||||
    discard(row) {
 | 
			
		||||
      let obj = {}
 | 
			
		||||
      obj.id = row.id
 | 
			
		||||
      obj.startTime = row.startTime
 | 
			
		||||
      obj.endTime = row.endTime
 | 
			
		||||
      obj.enableTime = row.enableTime
 | 
			
		||||
      obj.disableTime = Date.parse(new Date())
 | 
			
		||||
      this.$modal.confirm('是否确认作废班次名称为"' + row.name + '"的数据项?').then(function () {
 | 
			
		||||
        return updateGroupClasses({ ...obj })
 | 
			
		||||
      }).then(() => {
 | 
			
		||||
        this.getList();
 | 
			
		||||
        this.$modal.msgSuccess("操作成功");
 | 
			
		||||
      }).catch(() => { });
 | 
			
		||||
    },
 | 
			
		||||
    /** 删除按钮操作 */
 | 
			
		||||
    handleDelete(row) {
 | 
			
		||||
      console.log(row)
 | 
			
		||||
      let _this = this
 | 
			
		||||
      if (row.status === '可用') {// 可用
 | 
			
		||||
        _this.$modal.confirm('删除的班次"' + row.name + '"可能会影响交接班计划,请点取消再次确认!').then(function () {
 | 
			
		||||
          return _this.$modal.confirm('是否确认删除班次名称为"' + row.name + '"的数据项?').then(function () {
 | 
			
		||||
            return deleteGroupClasses(row.id);
 | 
			
		||||
          }).then(() => {
 | 
			
		||||
            _this.getList();
 | 
			
		||||
            _this.$modal.msgSuccess("删除成功");
 | 
			
		||||
          }).catch(() => { });
 | 
			
		||||
        })
 | 
			
		||||
      } else {
 | 
			
		||||
        _this.$modal.confirm('是否确认删除班次名称为"' + row.name + '"的数据项?').then(function () {
 | 
			
		||||
          return deleteGroupClasses(row.id);
 | 
			
		||||
        }).then(() => {
 | 
			
		||||
          _this.getList();
 | 
			
		||||
          _this.$modal.msgSuccess("删除成功");
 | 
			
		||||
        }).catch(() => { });
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
	name: 'GroupClasses',
 | 
			
		||||
	components: { GroupClassAdd },
 | 
			
		||||
	mixins: [tableHeightMixin],
 | 
			
		||||
	data() {
 | 
			
		||||
		return {
 | 
			
		||||
			formConfig: [
 | 
			
		||||
				{
 | 
			
		||||
					type: 'input',
 | 
			
		||||
					label: '班次名称',
 | 
			
		||||
					placeholder: '班次名称',
 | 
			
		||||
					param: 'name',
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					type: 'button',
 | 
			
		||||
					btnName: '查询',
 | 
			
		||||
					name: 'search',
 | 
			
		||||
					color: 'primary',
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					type: 'separate',
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					type: this.$auth.hasPermi('base:group-classes:create')
 | 
			
		||||
						? 'button'
 | 
			
		||||
						: '',
 | 
			
		||||
					btnName: '新增',
 | 
			
		||||
					name: 'add',
 | 
			
		||||
					color: 'success',
 | 
			
		||||
					plain: true,
 | 
			
		||||
				},
 | 
			
		||||
			],
 | 
			
		||||
			tableProps,
 | 
			
		||||
			tableBtn: [
 | 
			
		||||
				this.$auth.hasPermi('base:group-classes:cancel')
 | 
			
		||||
					? {
 | 
			
		||||
							type: 'cancel',
 | 
			
		||||
							btnName: '作废',
 | 
			
		||||
							showParam: {
 | 
			
		||||
								type: '&',
 | 
			
		||||
								data: [
 | 
			
		||||
									{
 | 
			
		||||
										type: 'unequal',
 | 
			
		||||
										name: 'status',
 | 
			
		||||
										value: '不可用',
 | 
			
		||||
									},
 | 
			
		||||
								],
 | 
			
		||||
							},
 | 
			
		||||
					  }
 | 
			
		||||
					: undefined,
 | 
			
		||||
				this.$auth.hasPermi('base:group-classes:update')
 | 
			
		||||
					? {
 | 
			
		||||
							type: 'edit',
 | 
			
		||||
							btnName: '编辑',
 | 
			
		||||
					  }
 | 
			
		||||
					: undefined,
 | 
			
		||||
				this.$auth.hasPermi('base:group-classes:delete')
 | 
			
		||||
					? {
 | 
			
		||||
							type: 'delete',
 | 
			
		||||
							btnName: '删除',
 | 
			
		||||
					  }
 | 
			
		||||
					: undefined,
 | 
			
		||||
			].filter((v) => v),
 | 
			
		||||
			// 总条数
 | 
			
		||||
			total: 0,
 | 
			
		||||
			// 班次基础信息列表
 | 
			
		||||
			list: [],
 | 
			
		||||
			// 弹出层标题
 | 
			
		||||
			addOrEditTitle: '',
 | 
			
		||||
			// 是否显示弹出层
 | 
			
		||||
			centervisible: false,
 | 
			
		||||
			// 查询参数
 | 
			
		||||
			queryParams: {
 | 
			
		||||
				pageNo: 1,
 | 
			
		||||
				pageSize: 20,
 | 
			
		||||
				name: null,
 | 
			
		||||
			},
 | 
			
		||||
		};
 | 
			
		||||
	},
 | 
			
		||||
	created() {
 | 
			
		||||
		this.getList();
 | 
			
		||||
	},
 | 
			
		||||
	methods: {
 | 
			
		||||
		buttonClick(val) {
 | 
			
		||||
			switch (val.btnName) {
 | 
			
		||||
				case 'search':
 | 
			
		||||
					this.queryParams.pageNo = 1;
 | 
			
		||||
					this.queryParams.name = val.name;
 | 
			
		||||
					this.getList();
 | 
			
		||||
					break;
 | 
			
		||||
				default:
 | 
			
		||||
					this.addOrEditTitle = '新增';
 | 
			
		||||
					this.centervisible = true;
 | 
			
		||||
					this.$nextTick(() => {
 | 
			
		||||
						this.$refs.classList.init();
 | 
			
		||||
					});
 | 
			
		||||
			}
 | 
			
		||||
		},
 | 
			
		||||
		/** 查询列表 */
 | 
			
		||||
		getList() {
 | 
			
		||||
			getGroupClassesPage(this.queryParams).then((res) => {
 | 
			
		||||
				if (res.code === 0 && res.data.list.length > 0) {
 | 
			
		||||
					res.data.list.map((item) => {
 | 
			
		||||
						item.enableTimeStr =
 | 
			
		||||
							formatDate(item.enableTime) +
 | 
			
		||||
							'至' +
 | 
			
		||||
							(item.disableTime ? formatDate(item.disableTime) : '永久');
 | 
			
		||||
						item.timeStr =
 | 
			
		||||
							item.startTime.slice(0, 5) + '-' + item.endTime.slice(0, 5);
 | 
			
		||||
						item.status = item.status === true ? '可用' : '不可用';
 | 
			
		||||
					});
 | 
			
		||||
					this.list = res.data.list;
 | 
			
		||||
					this.total = res.data.total;
 | 
			
		||||
				} else {
 | 
			
		||||
					this.list = [];
 | 
			
		||||
					this.total = 0;
 | 
			
		||||
				}
 | 
			
		||||
			});
 | 
			
		||||
		},
 | 
			
		||||
		handleClick(val) {
 | 
			
		||||
			switch (val.type) {
 | 
			
		||||
				case 'edit':
 | 
			
		||||
					this.addOrEditTitle = '编辑';
 | 
			
		||||
					this.$nextTick(() => {
 | 
			
		||||
						this.$refs.classList.init(val.data.id);
 | 
			
		||||
					});
 | 
			
		||||
					this.centervisible = true;
 | 
			
		||||
					break;
 | 
			
		||||
				case 'cancel':
 | 
			
		||||
					this.discard(val.data);
 | 
			
		||||
					break;
 | 
			
		||||
				default:
 | 
			
		||||
					this.handleDelete(val.data);
 | 
			
		||||
			}
 | 
			
		||||
		},
 | 
			
		||||
		handleCancel() {
 | 
			
		||||
			this.$refs.classList.formClear();
 | 
			
		||||
			this.centervisible = false;
 | 
			
		||||
			this.addOrEditTitle = '';
 | 
			
		||||
		},
 | 
			
		||||
		handleConfirm() {
 | 
			
		||||
			this.$refs.classList.submitForm();
 | 
			
		||||
		},
 | 
			
		||||
		successSubmit() {
 | 
			
		||||
			this.handleCancel();
 | 
			
		||||
			this.getList();
 | 
			
		||||
		},
 | 
			
		||||
		discard(row) {
 | 
			
		||||
			let obj = {};
 | 
			
		||||
			obj.id = row.id;
 | 
			
		||||
			obj.startTime = row.startTime;
 | 
			
		||||
			obj.endTime = row.endTime;
 | 
			
		||||
			obj.enableTime = row.enableTime;
 | 
			
		||||
			obj.disableTime = Date.parse(new Date());
 | 
			
		||||
			this.$modal
 | 
			
		||||
				.confirm('是否确认作废班次名称为"' + row.name + '"的数据项?')
 | 
			
		||||
				.then(function () {
 | 
			
		||||
					return updateGroupClasses({ ...obj });
 | 
			
		||||
				})
 | 
			
		||||
				.then(() => {
 | 
			
		||||
					this.getList();
 | 
			
		||||
					this.$modal.msgSuccess('操作成功');
 | 
			
		||||
				})
 | 
			
		||||
				.catch(() => {});
 | 
			
		||||
		},
 | 
			
		||||
		/** 删除按钮操作 */
 | 
			
		||||
		handleDelete(row) {
 | 
			
		||||
			console.log(row);
 | 
			
		||||
			let _this = this;
 | 
			
		||||
			if (row.status === '可用') {
 | 
			
		||||
				// 可用
 | 
			
		||||
				_this.$modal
 | 
			
		||||
					.confirm(
 | 
			
		||||
						'删除的班次"' +
 | 
			
		||||
							row.name +
 | 
			
		||||
							'"可能会影响交接班计划,请点取消再次确认!'
 | 
			
		||||
					)
 | 
			
		||||
					.then(function () {
 | 
			
		||||
						return _this.$modal
 | 
			
		||||
							.confirm('是否确认删除班次名称为"' + row.name + '"的数据项?')
 | 
			
		||||
							.then(function () {
 | 
			
		||||
								return deleteGroupClasses(row.id);
 | 
			
		||||
							})
 | 
			
		||||
							.then(() => {
 | 
			
		||||
								_this.getList();
 | 
			
		||||
								_this.$modal.msgSuccess('删除成功');
 | 
			
		||||
							})
 | 
			
		||||
							.catch(() => {});
 | 
			
		||||
					});
 | 
			
		||||
			} else {
 | 
			
		||||
				_this.$modal
 | 
			
		||||
					.confirm('是否确认删除班次名称为"' + row.name + '"的数据项?')
 | 
			
		||||
					.then(function () {
 | 
			
		||||
						return deleteGroupClasses(row.id);
 | 
			
		||||
					})
 | 
			
		||||
					.then(() => {
 | 
			
		||||
						_this.getList();
 | 
			
		||||
						_this.$modal.msgSuccess('删除成功');
 | 
			
		||||
					})
 | 
			
		||||
					.catch(() => {});
 | 
			
		||||
			}
 | 
			
		||||
		},
 | 
			
		||||
	},
 | 
			
		||||
};
 | 
			
		||||
</script>
 | 
			
		||||
 
 | 
			
		||||
@@ -1,253 +1,260 @@
 | 
			
		||||
<template>
 | 
			
		||||
  <div class="app-container">
 | 
			
		||||
 | 
			
		||||
    <!-- 搜索工作栏 -->
 | 
			
		||||
    <search-bar
 | 
			
		||||
      :formConfigs="formConfig"
 | 
			
		||||
      ref="searchBarForm"
 | 
			
		||||
      @headBtnClick="buttonClick"
 | 
			
		||||
    />
 | 
			
		||||
    <!-- 列表 -->
 | 
			
		||||
    <base-table
 | 
			
		||||
      :page="queryParams.pageNo"
 | 
			
		||||
      :limit="queryParams.pageSize"
 | 
			
		||||
      :table-props="tableProps"
 | 
			
		||||
      :table-data="list"
 | 
			
		||||
      :max-height="tableH"
 | 
			
		||||
      @emitFun="handleTableEvents"
 | 
			
		||||
    >
 | 
			
		||||
      <method-btn
 | 
			
		||||
        v-if="tableBtn.length"
 | 
			
		||||
        slot="handleBtn"
 | 
			
		||||
        :width="80"
 | 
			
		||||
        label="操作"
 | 
			
		||||
        :method-list="tableBtn"
 | 
			
		||||
        @clickBtn="handleClick"
 | 
			
		||||
      />
 | 
			
		||||
    </base-table>
 | 
			
		||||
    <pagination
 | 
			
		||||
      :page.sync="queryParams.pageNo"
 | 
			
		||||
      :limit.sync="queryParams.pageSize"
 | 
			
		||||
      :total="total"
 | 
			
		||||
      @pagination="getList"
 | 
			
		||||
    />
 | 
			
		||||
    <!-- 新增 -->
 | 
			
		||||
    <base-dialog
 | 
			
		||||
      :dialogTitle="addOrEditTitle"
 | 
			
		||||
      :dialogVisible="centervisible"
 | 
			
		||||
      @cancel="handleCancel"
 | 
			
		||||
      @confirm="handleConfirm"
 | 
			
		||||
      :before-close="handleCancel"
 | 
			
		||||
      width='40%'
 | 
			
		||||
    >
 | 
			
		||||
      <group-team-add ref="groupList" @successSubmit="successSubmit" />
 | 
			
		||||
    </base-dialog>
 | 
			
		||||
    <!-- 组员编辑 -->
 | 
			
		||||
    <worker-edit v-if='paramVisible' ref='workerEditParam' @closeDrawer="closeDrawer"></worker-edit>
 | 
			
		||||
  </div>
 | 
			
		||||
	<div class="app-container">
 | 
			
		||||
		<!-- 搜索工作栏 -->
 | 
			
		||||
		<search-bar
 | 
			
		||||
			:formConfigs="formConfig"
 | 
			
		||||
			ref="searchBarForm"
 | 
			
		||||
			@headBtnClick="buttonClick" />
 | 
			
		||||
		<!-- 列表 -->
 | 
			
		||||
		<base-table
 | 
			
		||||
			:page="queryParams.pageNo"
 | 
			
		||||
			:limit="queryParams.pageSize"
 | 
			
		||||
			:table-props="tableProps"
 | 
			
		||||
			:table-data="list"
 | 
			
		||||
			:max-height="tableH"
 | 
			
		||||
			@emitFun="handleTableEvents">
 | 
			
		||||
			<method-btn
 | 
			
		||||
				v-if="tableBtn.length"
 | 
			
		||||
				slot="handleBtn"
 | 
			
		||||
				:width="80"
 | 
			
		||||
				label="操作"
 | 
			
		||||
				:method-list="tableBtn"
 | 
			
		||||
				@clickBtn="handleClick" />
 | 
			
		||||
		</base-table>
 | 
			
		||||
		<pagination
 | 
			
		||||
			:page.sync="queryParams.pageNo"
 | 
			
		||||
			:limit.sync="queryParams.pageSize"
 | 
			
		||||
			:total="total"
 | 
			
		||||
			@pagination="getList" />
 | 
			
		||||
		<!-- 新增 -->
 | 
			
		||||
		<base-dialog
 | 
			
		||||
			:dialogTitle="addOrEditTitle"
 | 
			
		||||
			:dialogVisible="centervisible"
 | 
			
		||||
			@cancel="handleCancel"
 | 
			
		||||
			@confirm="handleConfirm"
 | 
			
		||||
			:before-close="handleCancel"
 | 
			
		||||
			width="40%">
 | 
			
		||||
			<group-team-add
 | 
			
		||||
				ref="groupList"
 | 
			
		||||
				@successSubmit="successSubmit" />
 | 
			
		||||
		</base-dialog>
 | 
			
		||||
		<!-- 组员编辑 -->
 | 
			
		||||
		<worker-edit
 | 
			
		||||
			v-if="paramVisible"
 | 
			
		||||
			ref="workerEditParam"
 | 
			
		||||
			@closeDrawer="closeDrawer"></worker-edit>
 | 
			
		||||
	</div>
 | 
			
		||||
</template>
 | 
			
		||||
 | 
			
		||||
<script>
 | 
			
		||||
import { getGroupTeamPage, deleteGroupTeam, updateGroupTeam } from "@/api/base/groupTeam";
 | 
			
		||||
import { parseTime } from '@/utils/ruoyi'
 | 
			
		||||
import GroupTeamAdd from './components/groupTeamAdd'
 | 
			
		||||
import StatusBtn from './components/statusBtn'
 | 
			
		||||
import WorkerOperate from './components/workerOperate'
 | 
			
		||||
import WorkerEdit from './components/workerEdit'
 | 
			
		||||
import { publicFormatter } from '@/utils/dict'
 | 
			
		||||
import {
 | 
			
		||||
	getGroupTeamPage,
 | 
			
		||||
	deleteGroupTeam,
 | 
			
		||||
	updateGroupTeam,
 | 
			
		||||
} from '@/api/base/groupTeam';
 | 
			
		||||
import { parseTime } from '@/utils/ruoyi';
 | 
			
		||||
import GroupTeamAdd from './components/groupTeamAdd';
 | 
			
		||||
import StatusBtn from './components/statusBtn';
 | 
			
		||||
import WorkerOperate from './components/workerOperate';
 | 
			
		||||
import WorkerEdit from './components/workerEdit';
 | 
			
		||||
import { publicFormatter } from '@/utils/dict';
 | 
			
		||||
import tableHeightMixin from '@/mixins/lb/tableHeightMixin';
 | 
			
		||||
const tableProps = [
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'createTime',
 | 
			
		||||
    label: '创建时间',
 | 
			
		||||
    filter: parseTime,
 | 
			
		||||
    minWidth: 160
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'roomNameDict',
 | 
			
		||||
    label: '车间名称',
 | 
			
		||||
    filter: publicFormatter('workshop')
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'name',
 | 
			
		||||
    label: '班组名称'
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'code',
 | 
			
		||||
    label: '编码',
 | 
			
		||||
    minWidth: 220
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'num',
 | 
			
		||||
    label: '班组人数'
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'leaderName',
 | 
			
		||||
    label: '组长'
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'enabled',
 | 
			
		||||
    label: '班组状态',
 | 
			
		||||
    subcomponent: StatusBtn
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'workerName',
 | 
			
		||||
    label: '组员',
 | 
			
		||||
    subcomponent: WorkerOperate
 | 
			
		||||
  },
 | 
			
		||||
]
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'createTime',
 | 
			
		||||
		label: '创建时间',
 | 
			
		||||
		filter: parseTime,
 | 
			
		||||
		minWidth: 160,
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'roomNameDict',
 | 
			
		||||
		label: '车间名称',
 | 
			
		||||
		filter: publicFormatter('workshop'),
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'name',
 | 
			
		||||
		label: '班组名称',
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'code',
 | 
			
		||||
		label: '编码',
 | 
			
		||||
		minWidth: 220,
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'num',
 | 
			
		||||
		label: '班组人数',
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'leaderName',
 | 
			
		||||
		label: '组长',
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'enabled',
 | 
			
		||||
		label: '班组状态',
 | 
			
		||||
		subcomponent: StatusBtn,
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'workerName',
 | 
			
		||||
		label: '组员',
 | 
			
		||||
		subcomponent: WorkerOperate,
 | 
			
		||||
	},
 | 
			
		||||
];
 | 
			
		||||
export default {
 | 
			
		||||
  name: "GroupTeam",
 | 
			
		||||
  components: { GroupTeamAdd, WorkerEdit },
 | 
			
		||||
  data() {
 | 
			
		||||
    return {
 | 
			
		||||
      formConfig: [
 | 
			
		||||
        {
 | 
			
		||||
          type: 'input',
 | 
			
		||||
          label: '班组名称',
 | 
			
		||||
          placeholder: '班组名称',
 | 
			
		||||
          param: 'name'
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          type: 'input',
 | 
			
		||||
          label: '组长',
 | 
			
		||||
          placeholder: '组长',
 | 
			
		||||
          param: 'leaderName'
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          type: 'button',
 | 
			
		||||
          btnName: '查询',
 | 
			
		||||
          name: 'search',
 | 
			
		||||
          color: 'primary'
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          type: 'separate'
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          type: this.$auth.hasPermi('base:group-team:create') ? 'button' : '',
 | 
			
		||||
          btnName: '新增',
 | 
			
		||||
          name: 'add',
 | 
			
		||||
          color: 'success',
 | 
			
		||||
          plain: true
 | 
			
		||||
        }
 | 
			
		||||
      ],
 | 
			
		||||
      tableProps,
 | 
			
		||||
      tableBtn: [
 | 
			
		||||
        this.$auth.hasPermi('base:group-team:update')
 | 
			
		||||
          ? {
 | 
			
		||||
              type: 'edit',
 | 
			
		||||
              btnName: '编辑'
 | 
			
		||||
            }
 | 
			
		||||
          : undefined,
 | 
			
		||||
        this.$auth.hasPermi('base:group-team:delete')
 | 
			
		||||
          ? {
 | 
			
		||||
              type: 'delete',
 | 
			
		||||
              btnName: '删除'
 | 
			
		||||
            }
 | 
			
		||||
          : undefined
 | 
			
		||||
      ].filter((v) => v),
 | 
			
		||||
      tableH: this.tableHeight(260),
 | 
			
		||||
      // 总条数
 | 
			
		||||
      total: 0,
 | 
			
		||||
      // 班次基础信息列表
 | 
			
		||||
      list: [],
 | 
			
		||||
      // 弹出层标题
 | 
			
		||||
      addOrEditTitle: "",
 | 
			
		||||
      // 是否显示弹出层
 | 
			
		||||
      centervisible: false,
 | 
			
		||||
      // 查询参数
 | 
			
		||||
      queryParams: {
 | 
			
		||||
        pageNo: 1,
 | 
			
		||||
        pageSize: 20,
 | 
			
		||||
        name: null,
 | 
			
		||||
        code: null
 | 
			
		||||
      },
 | 
			
		||||
      paramVisible: false
 | 
			
		||||
    };
 | 
			
		||||
  },
 | 
			
		||||
  created() {
 | 
			
		||||
    window.addEventListener('resize', () => {
 | 
			
		||||
      this.tableH = this.tableHeight(260)
 | 
			
		||||
    })
 | 
			
		||||
    this.getList();
 | 
			
		||||
  },
 | 
			
		||||
  methods: {
 | 
			
		||||
    buttonClick(val) {
 | 
			
		||||
      switch (val.btnName) {
 | 
			
		||||
        case 'search':
 | 
			
		||||
          this.queryParams.pageNo = 1;
 | 
			
		||||
          this.queryParams.leaderName = val.leaderName
 | 
			
		||||
          this.queryParams.name = val.name
 | 
			
		||||
          this.getList()
 | 
			
		||||
          break
 | 
			
		||||
        default:
 | 
			
		||||
          this.addOrEditTitle = '新增'
 | 
			
		||||
          this.centervisible = true
 | 
			
		||||
          this.$nextTick(() => {
 | 
			
		||||
            this.$refs.groupList.init()
 | 
			
		||||
          })
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    /** 查询列表 */
 | 
			
		||||
    getList() {
 | 
			
		||||
      getGroupTeamPage(this.queryParams).then(response => {
 | 
			
		||||
        this.list = response.data.list;
 | 
			
		||||
        this.total = response.data.total;
 | 
			
		||||
      });
 | 
			
		||||
    },
 | 
			
		||||
    handleClick(val) {
 | 
			
		||||
      switch (val.type) {
 | 
			
		||||
        case 'edit':
 | 
			
		||||
          this.addOrEditTitle = '编辑'
 | 
			
		||||
          this.$nextTick(() => {
 | 
			
		||||
            this.$refs.groupList.init(val.data.id)
 | 
			
		||||
          })
 | 
			
		||||
          this.centervisible = true
 | 
			
		||||
          break
 | 
			
		||||
        default:
 | 
			
		||||
        this.handleDelete(val.data)
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    // 班组状态
 | 
			
		||||
    handleTableEvents(params) {
 | 
			
		||||
      console.log(params)
 | 
			
		||||
      if (params.name === 'state') {// 班组状态
 | 
			
		||||
        updateGroupTeam({ ...params.payload }).then((res) => {
 | 
			
		||||
          if (res.code === 0) {
 | 
			
		||||
            this.$modal.msgSuccess("操作成功");
 | 
			
		||||
          }
 | 
			
		||||
        })
 | 
			
		||||
      }else {// 编辑&查看
 | 
			
		||||
        this.paramVisible = true
 | 
			
		||||
        this.$nextTick(() => {
 | 
			
		||||
          this.$refs.workerEditParam.init(params)
 | 
			
		||||
        })
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    handleCancel() {
 | 
			
		||||
      this.$refs.groupList.formClear()
 | 
			
		||||
      this.centervisible = false
 | 
			
		||||
      this.addOrEditTitle = ''
 | 
			
		||||
    },
 | 
			
		||||
    handleConfirm() {
 | 
			
		||||
      this.$refs.groupList.submitForm()
 | 
			
		||||
    },
 | 
			
		||||
    successSubmit() {
 | 
			
		||||
      this.handleCancel()
 | 
			
		||||
      this.getList()
 | 
			
		||||
    },
 | 
			
		||||
    /** 删除按钮操作 */
 | 
			
		||||
    handleDelete(row) {
 | 
			
		||||
      this.$modal.confirm('是否确认删除班组名称为"' + row.name + '"的数据项?').then(function() {
 | 
			
		||||
          return deleteGroupTeam(row.id);
 | 
			
		||||
        }).then(() => {
 | 
			
		||||
          this.queryParams.pageNo = 1;
 | 
			
		||||
          this.getList();
 | 
			
		||||
          this.$modal.msgSuccess("删除成功");
 | 
			
		||||
        }).catch(() => {});
 | 
			
		||||
    },
 | 
			
		||||
    closeDrawer() {
 | 
			
		||||
      this.getList()
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
	name: 'GroupTeam',
 | 
			
		||||
	components: { GroupTeamAdd, WorkerEdit },
 | 
			
		||||
	mixins: [tableHeightMixin],
 | 
			
		||||
	data() {
 | 
			
		||||
		return {
 | 
			
		||||
			formConfig: [
 | 
			
		||||
				{
 | 
			
		||||
					type: 'input',
 | 
			
		||||
					label: '班组名称',
 | 
			
		||||
					placeholder: '班组名称',
 | 
			
		||||
					param: 'name',
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					type: 'input',
 | 
			
		||||
					label: '组长',
 | 
			
		||||
					placeholder: '组长',
 | 
			
		||||
					param: 'leaderName',
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					type: 'button',
 | 
			
		||||
					btnName: '查询',
 | 
			
		||||
					name: 'search',
 | 
			
		||||
					color: 'primary',
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					type: 'separate',
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					type: this.$auth.hasPermi('base:group-team:create') ? 'button' : '',
 | 
			
		||||
					btnName: '新增',
 | 
			
		||||
					name: 'add',
 | 
			
		||||
					color: 'success',
 | 
			
		||||
					plain: true,
 | 
			
		||||
				},
 | 
			
		||||
			],
 | 
			
		||||
			tableProps,
 | 
			
		||||
			tableBtn: [
 | 
			
		||||
				this.$auth.hasPermi('base:group-team:update')
 | 
			
		||||
					? {
 | 
			
		||||
							type: 'edit',
 | 
			
		||||
							btnName: '编辑',
 | 
			
		||||
					  }
 | 
			
		||||
					: undefined,
 | 
			
		||||
				this.$auth.hasPermi('base:group-team:delete')
 | 
			
		||||
					? {
 | 
			
		||||
							type: 'delete',
 | 
			
		||||
							btnName: '删除',
 | 
			
		||||
					  }
 | 
			
		||||
					: undefined,
 | 
			
		||||
			].filter((v) => v),
 | 
			
		||||
			// 总条数
 | 
			
		||||
			total: 0,
 | 
			
		||||
			// 班次基础信息列表
 | 
			
		||||
			list: [],
 | 
			
		||||
			// 弹出层标题
 | 
			
		||||
			addOrEditTitle: '',
 | 
			
		||||
			// 是否显示弹出层
 | 
			
		||||
			centervisible: false,
 | 
			
		||||
			// 查询参数
 | 
			
		||||
			queryParams: {
 | 
			
		||||
				pageNo: 1,
 | 
			
		||||
				pageSize: 20,
 | 
			
		||||
				name: null,
 | 
			
		||||
				code: null,
 | 
			
		||||
			},
 | 
			
		||||
			paramVisible: false,
 | 
			
		||||
		};
 | 
			
		||||
	},
 | 
			
		||||
	created() {
 | 
			
		||||
		this.getList();
 | 
			
		||||
	},
 | 
			
		||||
	methods: {
 | 
			
		||||
		buttonClick(val) {
 | 
			
		||||
			switch (val.btnName) {
 | 
			
		||||
				case 'search':
 | 
			
		||||
					this.queryParams.pageNo = 1;
 | 
			
		||||
					this.queryParams.leaderName = val.leaderName;
 | 
			
		||||
					this.queryParams.name = val.name;
 | 
			
		||||
					this.getList();
 | 
			
		||||
					break;
 | 
			
		||||
				default:
 | 
			
		||||
					this.addOrEditTitle = '新增';
 | 
			
		||||
					this.centervisible = true;
 | 
			
		||||
					this.$nextTick(() => {
 | 
			
		||||
						this.$refs.groupList.init();
 | 
			
		||||
					});
 | 
			
		||||
			}
 | 
			
		||||
		},
 | 
			
		||||
		/** 查询列表 */
 | 
			
		||||
		getList() {
 | 
			
		||||
			getGroupTeamPage(this.queryParams).then((response) => {
 | 
			
		||||
				this.list = response.data.list;
 | 
			
		||||
				this.total = response.data.total;
 | 
			
		||||
			});
 | 
			
		||||
		},
 | 
			
		||||
		handleClick(val) {
 | 
			
		||||
			switch (val.type) {
 | 
			
		||||
				case 'edit':
 | 
			
		||||
					this.addOrEditTitle = '编辑';
 | 
			
		||||
					this.$nextTick(() => {
 | 
			
		||||
						this.$refs.groupList.init(val.data.id);
 | 
			
		||||
					});
 | 
			
		||||
					this.centervisible = true;
 | 
			
		||||
					break;
 | 
			
		||||
				default:
 | 
			
		||||
					this.handleDelete(val.data);
 | 
			
		||||
			}
 | 
			
		||||
		},
 | 
			
		||||
		// 班组状态
 | 
			
		||||
		handleTableEvents(params) {
 | 
			
		||||
			console.log(params);
 | 
			
		||||
			if (params.name === 'state') {
 | 
			
		||||
				// 班组状态
 | 
			
		||||
				updateGroupTeam({ ...params.payload }).then((res) => {
 | 
			
		||||
					if (res.code === 0) {
 | 
			
		||||
						this.$modal.msgSuccess('操作成功');
 | 
			
		||||
					}
 | 
			
		||||
				});
 | 
			
		||||
			} else {
 | 
			
		||||
				// 编辑&查看
 | 
			
		||||
				this.paramVisible = true;
 | 
			
		||||
				this.$nextTick(() => {
 | 
			
		||||
					this.$refs.workerEditParam.init(params);
 | 
			
		||||
				});
 | 
			
		||||
			}
 | 
			
		||||
		},
 | 
			
		||||
		handleCancel() {
 | 
			
		||||
			this.$refs.groupList.formClear();
 | 
			
		||||
			this.centervisible = false;
 | 
			
		||||
			this.addOrEditTitle = '';
 | 
			
		||||
		},
 | 
			
		||||
		handleConfirm() {
 | 
			
		||||
			this.$refs.groupList.submitForm();
 | 
			
		||||
		},
 | 
			
		||||
		successSubmit() {
 | 
			
		||||
			this.handleCancel();
 | 
			
		||||
			this.getList();
 | 
			
		||||
		},
 | 
			
		||||
		/** 删除按钮操作 */
 | 
			
		||||
		handleDelete(row) {
 | 
			
		||||
			this.$modal
 | 
			
		||||
				.confirm('是否确认删除班组名称为"' + row.name + '"的数据项?')
 | 
			
		||||
				.then(function () {
 | 
			
		||||
					return deleteGroupTeam(row.id);
 | 
			
		||||
				})
 | 
			
		||||
				.then(() => {
 | 
			
		||||
					this.queryParams.pageNo = 1;
 | 
			
		||||
					this.getList();
 | 
			
		||||
					this.$modal.msgSuccess('删除成功');
 | 
			
		||||
				})
 | 
			
		||||
				.catch(() => {});
 | 
			
		||||
		},
 | 
			
		||||
		closeDrawer() {
 | 
			
		||||
			this.getList();
 | 
			
		||||
		},
 | 
			
		||||
	},
 | 
			
		||||
};
 | 
			
		||||
</script>
 | 
			
		||||
 
 | 
			
		||||
@@ -1,152 +1,150 @@
 | 
			
		||||
<template>
 | 
			
		||||
  <div class="app-container">
 | 
			
		||||
    <!-- 搜索工作栏 -->
 | 
			
		||||
    <search-bar
 | 
			
		||||
      :formConfigs="formConfig"
 | 
			
		||||
      ref="searchBarForm"
 | 
			
		||||
      @headBtnClick="buttonClick"
 | 
			
		||||
    />
 | 
			
		||||
    <!-- 列表 -->
 | 
			
		||||
    <base-table
 | 
			
		||||
      :page="queryParams.pageNo"
 | 
			
		||||
      :limit="queryParams.pageSize"
 | 
			
		||||
      :table-props="tableProps"
 | 
			
		||||
      :table-data="list"
 | 
			
		||||
      :max-height="tableH"
 | 
			
		||||
    >
 | 
			
		||||
      <method-btn
 | 
			
		||||
        v-if="tableBtn.length"
 | 
			
		||||
        slot="handleBtn"
 | 
			
		||||
        :width="160"
 | 
			
		||||
        label="操作"
 | 
			
		||||
        :method-list="tableBtn"
 | 
			
		||||
        @clickBtn="handleClick"
 | 
			
		||||
      />
 | 
			
		||||
    </base-table>
 | 
			
		||||
    <!-- 查看详情 -->
 | 
			
		||||
    <group-team-view-detail v-if="paramVisible" ref="groupTeamViewDetail"/>
 | 
			
		||||
  </div>
 | 
			
		||||
	<div class="app-container">
 | 
			
		||||
		<!-- 搜索工作栏 -->
 | 
			
		||||
		<search-bar
 | 
			
		||||
			:formConfigs="formConfig"
 | 
			
		||||
			ref="searchBarForm"
 | 
			
		||||
			@headBtnClick="buttonClick" />
 | 
			
		||||
		<!-- 列表 -->
 | 
			
		||||
		<base-table
 | 
			
		||||
			:page="queryParams.pageNo"
 | 
			
		||||
			:limit="queryParams.pageSize"
 | 
			
		||||
			:table-props="tableProps"
 | 
			
		||||
			:table-data="list"
 | 
			
		||||
			:max-height="tableH">
 | 
			
		||||
			<method-btn
 | 
			
		||||
				v-if="tableBtn.length"
 | 
			
		||||
				slot="handleBtn"
 | 
			
		||||
				:width="160"
 | 
			
		||||
				label="操作"
 | 
			
		||||
				:method-list="tableBtn"
 | 
			
		||||
				@clickBtn="handleClick" />
 | 
			
		||||
		</base-table>
 | 
			
		||||
		<!-- 查看详情 -->
 | 
			
		||||
		<group-team-view-detail
 | 
			
		||||
			v-if="paramVisible"
 | 
			
		||||
			ref="groupTeamViewDetail" />
 | 
			
		||||
	</div>
 | 
			
		||||
</template>
 | 
			
		||||
<script>
 | 
			
		||||
import { getByWorkOrder } from '@/api/monitoring/groupTeamView'
 | 
			
		||||
import { workOrderList } from '@/api/base/workOrder'
 | 
			
		||||
import GroupTeamViewDetail from './components/groupTeamViewDetail.vue'
 | 
			
		||||
import { publicFormatter } from '@/utils/dict'
 | 
			
		||||
import { getByWorkOrder } from '@/api/monitoring/groupTeamView';
 | 
			
		||||
import { workOrderList } from '@/api/base/workOrder';
 | 
			
		||||
import GroupTeamViewDetail from './components/groupTeamViewDetail.vue';
 | 
			
		||||
import { publicFormatter } from '@/utils/dict';
 | 
			
		||||
import tableHeightMixin from '@/mixins/lb/tableHeightMixin';
 | 
			
		||||
const tableProps = [
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'roomNameDict',
 | 
			
		||||
    label: '车间名称',
 | 
			
		||||
    filter: publicFormatter('workshop'),
 | 
			
		||||
    showOverflowtooltip: true,
 | 
			
		||||
    minWidth: 100
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'name',
 | 
			
		||||
    label: '班组名称'
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'leaderName',
 | 
			
		||||
    label: '班组长'
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'num',
 | 
			
		||||
    label: '人数'
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'workCount',
 | 
			
		||||
    label: '上班次数'
 | 
			
		||||
  }
 | 
			
		||||
]
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'roomNameDict',
 | 
			
		||||
		label: '车间名称',
 | 
			
		||||
		filter: publicFormatter('workshop'),
 | 
			
		||||
		showOverflowtooltip: true,
 | 
			
		||||
		minWidth: 100,
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'name',
 | 
			
		||||
		label: '班组名称',
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'leaderName',
 | 
			
		||||
		label: '班组长',
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'num',
 | 
			
		||||
		label: '人数',
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'workCount',
 | 
			
		||||
		label: '上班次数',
 | 
			
		||||
	},
 | 
			
		||||
];
 | 
			
		||||
export default {
 | 
			
		||||
  name: 'GroupTeamView',
 | 
			
		||||
  data() {
 | 
			
		||||
    return {
 | 
			
		||||
      formConfig: [
 | 
			
		||||
        {
 | 
			
		||||
          type: 'select',
 | 
			
		||||
          label: '工单',
 | 
			
		||||
          selectOptions: [],
 | 
			
		||||
          param: 'workOrderId',
 | 
			
		||||
          clearable: false,
 | 
			
		||||
          filterable: true
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          type: 'button',
 | 
			
		||||
          btnName: '查询',
 | 
			
		||||
          name: 'search',
 | 
			
		||||
          color: 'primary'
 | 
			
		||||
        }
 | 
			
		||||
      ],
 | 
			
		||||
      // 查询参数
 | 
			
		||||
      queryParams: {
 | 
			
		||||
        pageNo: 1,
 | 
			
		||||
        pageSize: 1000,
 | 
			
		||||
        workOrderId: ''
 | 
			
		||||
      },
 | 
			
		||||
      workOrderList: [],
 | 
			
		||||
      workOrderName: '',
 | 
			
		||||
      tableBtn: [
 | 
			
		||||
      this.$auth.hasPermi('base:group-team-view:detail')
 | 
			
		||||
          ? {
 | 
			
		||||
              type: 'detail',
 | 
			
		||||
              btnName: '详情'
 | 
			
		||||
            }
 | 
			
		||||
          : undefined
 | 
			
		||||
      ].filter((v) => v),
 | 
			
		||||
      tableProps,
 | 
			
		||||
      tableH: this.tableHeight(220),
 | 
			
		||||
      list: [],
 | 
			
		||||
      paramVisible: false
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
  components: { GroupTeamViewDetail },
 | 
			
		||||
  mounted() {
 | 
			
		||||
    window.addEventListener('resize', () => {
 | 
			
		||||
      this.tableH = this.tableHeight(220)
 | 
			
		||||
    })
 | 
			
		||||
    this.getOrderList()
 | 
			
		||||
  },
 | 
			
		||||
  methods: {
 | 
			
		||||
    // 获取工单list
 | 
			
		||||
    getOrderList() {
 | 
			
		||||
      workOrderList().then(res => {
 | 
			
		||||
        console.log(res)
 | 
			
		||||
        this.formConfig[0].selectOptions = res.data || []
 | 
			
		||||
        this.workOrderList = res.data || []
 | 
			
		||||
      })
 | 
			
		||||
    },
 | 
			
		||||
    // 查询
 | 
			
		||||
    buttonClick(val) {
 | 
			
		||||
      if (!val.workOrderId) {
 | 
			
		||||
        this.$modal.msgWarning('工单不能为空')
 | 
			
		||||
        return false
 | 
			
		||||
      }
 | 
			
		||||
      this.queryParams.workOrderId = val.workOrderId
 | 
			
		||||
      this.getList()
 | 
			
		||||
    },
 | 
			
		||||
    // 获取table数据
 | 
			
		||||
    getList() {
 | 
			
		||||
      getByWorkOrder({ id: this.queryParams.workOrderId }).then(res => {
 | 
			
		||||
        this.list = res.data || []
 | 
			
		||||
      })
 | 
			
		||||
    },
 | 
			
		||||
    handleClick(val) {
 | 
			
		||||
      this.paramVisible = true
 | 
			
		||||
      let params = {}
 | 
			
		||||
      params.teamId = val.data.id
 | 
			
		||||
      params.teamName = val.data.name
 | 
			
		||||
      this.workOrderList.map(item => {
 | 
			
		||||
        if (val.data.workOrderId === item.id) {
 | 
			
		||||
          this.workOrderName = item.name
 | 
			
		||||
        }
 | 
			
		||||
      })
 | 
			
		||||
      params.workOrderId = val.data.workOrderId
 | 
			
		||||
      params.workOrderName = this.workOrderName
 | 
			
		||||
      params.roomNameDict = val.data.roomNameDict
 | 
			
		||||
      this.$nextTick(() => {
 | 
			
		||||
        this.$refs.groupTeamViewDetail.init(params)
 | 
			
		||||
      })
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
	name: 'GroupTeamView',
 | 
			
		||||
	mixins: [tableHeightMixin],
 | 
			
		||||
	data() {
 | 
			
		||||
		return {
 | 
			
		||||
			formConfig: [
 | 
			
		||||
				{
 | 
			
		||||
					type: 'select',
 | 
			
		||||
					label: '工单',
 | 
			
		||||
					selectOptions: [],
 | 
			
		||||
					param: 'workOrderId',
 | 
			
		||||
					clearable: false,
 | 
			
		||||
					filterable: true,
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					type: 'button',
 | 
			
		||||
					btnName: '查询',
 | 
			
		||||
					name: 'search',
 | 
			
		||||
					color: 'primary',
 | 
			
		||||
				},
 | 
			
		||||
			],
 | 
			
		||||
			// 查询参数
 | 
			
		||||
			queryParams: {
 | 
			
		||||
				pageNo: 1,
 | 
			
		||||
				pageSize: 1000,
 | 
			
		||||
				workOrderId: '',
 | 
			
		||||
			},
 | 
			
		||||
			heightNum: 220,
 | 
			
		||||
			workOrderList: [],
 | 
			
		||||
			workOrderName: '',
 | 
			
		||||
			tableBtn: [
 | 
			
		||||
				this.$auth.hasPermi('base:group-team-view:detail')
 | 
			
		||||
					? {
 | 
			
		||||
							type: 'detail',
 | 
			
		||||
							btnName: '详情',
 | 
			
		||||
					  }
 | 
			
		||||
					: undefined,
 | 
			
		||||
			].filter((v) => v),
 | 
			
		||||
			tableProps,
 | 
			
		||||
			list: [],
 | 
			
		||||
			paramVisible: false,
 | 
			
		||||
		};
 | 
			
		||||
	},
 | 
			
		||||
	components: { GroupTeamViewDetail },
 | 
			
		||||
	mounted() {
 | 
			
		||||
		this.getOrderList();
 | 
			
		||||
	},
 | 
			
		||||
	methods: {
 | 
			
		||||
		// 获取工单list
 | 
			
		||||
		getOrderList() {
 | 
			
		||||
			workOrderList().then((res) => {
 | 
			
		||||
				console.log(res);
 | 
			
		||||
				this.formConfig[0].selectOptions = res.data || [];
 | 
			
		||||
				this.workOrderList = res.data || [];
 | 
			
		||||
			});
 | 
			
		||||
		},
 | 
			
		||||
		// 查询
 | 
			
		||||
		buttonClick(val) {
 | 
			
		||||
			if (!val.workOrderId) {
 | 
			
		||||
				this.$modal.msgWarning('工单不能为空');
 | 
			
		||||
				return false;
 | 
			
		||||
			}
 | 
			
		||||
			this.queryParams.workOrderId = val.workOrderId;
 | 
			
		||||
			this.getList();
 | 
			
		||||
		},
 | 
			
		||||
		// 获取table数据
 | 
			
		||||
		getList() {
 | 
			
		||||
			getByWorkOrder({ id: this.queryParams.workOrderId }).then((res) => {
 | 
			
		||||
				this.list = res.data || [];
 | 
			
		||||
			});
 | 
			
		||||
		},
 | 
			
		||||
		handleClick(val) {
 | 
			
		||||
			this.paramVisible = true;
 | 
			
		||||
			let params = {};
 | 
			
		||||
			params.teamId = val.data.id;
 | 
			
		||||
			params.teamName = val.data.name;
 | 
			
		||||
			this.workOrderList.map((item) => {
 | 
			
		||||
				if (val.data.workOrderId === item.id) {
 | 
			
		||||
					this.workOrderName = item.name;
 | 
			
		||||
				}
 | 
			
		||||
			});
 | 
			
		||||
			params.workOrderId = val.data.workOrderId;
 | 
			
		||||
			params.workOrderName = this.workOrderName;
 | 
			
		||||
			params.roomNameDict = val.data.roomNameDict;
 | 
			
		||||
			this.$nextTick(() => {
 | 
			
		||||
				this.$refs.groupTeamViewDetail.init(params);
 | 
			
		||||
			});
 | 
			
		||||
		},
 | 
			
		||||
	},
 | 
			
		||||
};
 | 
			
		||||
</script>
 | 
			
		||||
@@ -1,130 +1,146 @@
 | 
			
		||||
<template>
 | 
			
		||||
  <div class="app-container">
 | 
			
		||||
    <!-- 搜索工作栏 -->
 | 
			
		||||
    <search-area @submit="buttonClick" />
 | 
			
		||||
    <!-- <search-bar
 | 
			
		||||
	<div class="app-container">
 | 
			
		||||
		<!-- 搜索工作栏 -->
 | 
			
		||||
		<search-area @submit="buttonClick" />
 | 
			
		||||
		<!-- <search-bar
 | 
			
		||||
      :formConfigs="formConfig"
 | 
			
		||||
      ref="searchBarForm"
 | 
			
		||||
      @headBtnClick="buttonClick"
 | 
			
		||||
    /> -->
 | 
			
		||||
    <!-- 列表 -->
 | 
			
		||||
    <base-table :page="queryParams.pageNo" :limit="queryParams.pageSize" :table-props="tableProps" :table-data="list"
 | 
			
		||||
      :max-height="tableH">
 | 
			
		||||
      <method-btn v-if="tableBtn.length" slot="handleBtn" :width="80" label="操作" :method-list="tableBtn"
 | 
			
		||||
        @clickBtn="handleClick" />
 | 
			
		||||
    </base-table>
 | 
			
		||||
    <pagination :page.sync="queryParams.pageNo" :limit.sync="queryParams.pageSize" :total="total"
 | 
			
		||||
      @pagination="getList" />
 | 
			
		||||
    <!-- 查看生产情况 -->
 | 
			
		||||
    <team-production-detail v-if='paramVisible' ref='schedulingMonitoringDetail' />
 | 
			
		||||
  </div>
 | 
			
		||||
		<!-- 列表 -->
 | 
			
		||||
		<base-table
 | 
			
		||||
			:page="queryParams.pageNo"
 | 
			
		||||
			:limit="queryParams.pageSize"
 | 
			
		||||
			:table-props="tableProps"
 | 
			
		||||
			:table-data="list"
 | 
			
		||||
			:max-height="tableH">
 | 
			
		||||
			<method-btn
 | 
			
		||||
				v-if="tableBtn.length"
 | 
			
		||||
				slot="handleBtn"
 | 
			
		||||
				:width="80"
 | 
			
		||||
				label="操作"
 | 
			
		||||
				:method-list="tableBtn"
 | 
			
		||||
				@clickBtn="handleClick" />
 | 
			
		||||
		</base-table>
 | 
			
		||||
		<pagination
 | 
			
		||||
			:page.sync="queryParams.pageNo"
 | 
			
		||||
			:limit.sync="queryParams.pageSize"
 | 
			
		||||
			:total="total"
 | 
			
		||||
			@pagination="getList" />
 | 
			
		||||
		<!-- 查看生产情况 -->
 | 
			
		||||
		<team-production-detail
 | 
			
		||||
			v-if="paramVisible"
 | 
			
		||||
			ref="schedulingMonitoringDetail" />
 | 
			
		||||
	</div>
 | 
			
		||||
</template>
 | 
			
		||||
<script>
 | 
			
		||||
import { groupTeamSchedulingPage } from '@/api/monitoring/teamProduction'
 | 
			
		||||
import { parseTime } from '@/utils/ruoyi'
 | 
			
		||||
import TeamProductionDetail from './components/teamProductionDetail'
 | 
			
		||||
import { publicFormatter } from '@/utils/dict'
 | 
			
		||||
import SearchArea from './components/searchArea'
 | 
			
		||||
import { groupTeamSchedulingPage } from '@/api/monitoring/teamProduction';
 | 
			
		||||
import { parseTime } from '@/utils/ruoyi';
 | 
			
		||||
import TeamProductionDetail from './components/teamProductionDetail';
 | 
			
		||||
import { publicFormatter } from '@/utils/dict';
 | 
			
		||||
import SearchArea from './components/searchArea';
 | 
			
		||||
import tableHeightMixin from '@/mixins/lb/tableHeightMixin';
 | 
			
		||||
const tableProps = [
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'roomNameDict',
 | 
			
		||||
    label: '车间名称',
 | 
			
		||||
    filter: publicFormatter('workshop'),
 | 
			
		||||
    showOverflowtooltip: true,
 | 
			
		||||
    minWidth: 100
 | 
			
		||||
  },
 | 
			
		||||
  // {
 | 
			
		||||
  //   prop: 'createTime',
 | 
			
		||||
  //   label: '排班创建时间',
 | 
			
		||||
  //   filter: parseTime,
 | 
			
		||||
  //   minWidth: 160
 | 
			
		||||
  // },
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'startDay',
 | 
			
		||||
    label: '上班日期',
 | 
			
		||||
    minWidth: 100
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'startTime',
 | 
			
		||||
    label: '上班时间',
 | 
			
		||||
    filter: parseTime,
 | 
			
		||||
    minWidth: 160
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'endTime',
 | 
			
		||||
    label: '下班时间',
 | 
			
		||||
    filter: parseTime,
 | 
			
		||||
    minWidth: 160
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'classesName',
 | 
			
		||||
    label: '班次名称',
 | 
			
		||||
    showOverflowtooltip: true
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'teamName',
 | 
			
		||||
    label: '班组名称',
 | 
			
		||||
    showOverflowtooltip: true
 | 
			
		||||
  }
 | 
			
		||||
]
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'roomNameDict',
 | 
			
		||||
		label: '车间名称',
 | 
			
		||||
		filter: publicFormatter('workshop'),
 | 
			
		||||
		showOverflowtooltip: true,
 | 
			
		||||
		minWidth: 100,
 | 
			
		||||
	},
 | 
			
		||||
	// {
 | 
			
		||||
	//   prop: 'createTime',
 | 
			
		||||
	//   label: '排班创建时间',
 | 
			
		||||
	//   filter: parseTime,
 | 
			
		||||
	//   minWidth: 160
 | 
			
		||||
	// },
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'startDay',
 | 
			
		||||
		label: '上班日期',
 | 
			
		||||
		minWidth: 100,
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'startTime',
 | 
			
		||||
		label: '上班时间',
 | 
			
		||||
		filter: parseTime,
 | 
			
		||||
		minWidth: 160,
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'endTime',
 | 
			
		||||
		label: '下班时间',
 | 
			
		||||
		filter: parseTime,
 | 
			
		||||
		minWidth: 160,
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'classesName',
 | 
			
		||||
		label: '班次名称',
 | 
			
		||||
		showOverflowtooltip: true,
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'teamName',
 | 
			
		||||
		label: '班组名称',
 | 
			
		||||
		showOverflowtooltip: true,
 | 
			
		||||
	},
 | 
			
		||||
];
 | 
			
		||||
export default {
 | 
			
		||||
  name: 'GroupTeamScheduling',
 | 
			
		||||
  data() {
 | 
			
		||||
    return {
 | 
			
		||||
      // 查询参数
 | 
			
		||||
      queryParams: {
 | 
			
		||||
        pageNo: 1,
 | 
			
		||||
        pageSize: 20,
 | 
			
		||||
        classesId: '',
 | 
			
		||||
        teamName: '',
 | 
			
		||||
        startDay: []
 | 
			
		||||
      },
 | 
			
		||||
      tableProps,
 | 
			
		||||
      tableBtn: [
 | 
			
		||||
        this.$auth.hasPermi('base:team-production:detail')
 | 
			
		||||
          ? {
 | 
			
		||||
            type: 'productionDetail',
 | 
			
		||||
            btnName: '查看',
 | 
			
		||||
            showTip: '生产情况'
 | 
			
		||||
          }
 | 
			
		||||
          : undefined
 | 
			
		||||
      ].filter((v) => v),
 | 
			
		||||
      list: [],
 | 
			
		||||
      tableH: this.tableHeight(260),
 | 
			
		||||
      total: 0,
 | 
			
		||||
      paramVisible: false
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
  components: { TeamProductionDetail, SearchArea },
 | 
			
		||||
  mounted() {
 | 
			
		||||
    window.addEventListener('resize', () => {
 | 
			
		||||
      this.tableH = this.tableHeight(260)
 | 
			
		||||
    })
 | 
			
		||||
    this.getList()
 | 
			
		||||
  },
 | 
			
		||||
  methods: {
 | 
			
		||||
    buttonClick(val) {
 | 
			
		||||
      this.queryParams.pageNo = 1;
 | 
			
		||||
      this.queryParams.classesId = val.classesId
 | 
			
		||||
      this.queryParams.teamName = val.teamName
 | 
			
		||||
      this.queryParams.startDay[0] = val.tiemStr ? val.tiemStr[0] + ' 00:00:00' : ''
 | 
			
		||||
      this.queryParams.startDay[1] = val.tiemStr ? val.tiemStr[1] + ' 23:59:59' : ''
 | 
			
		||||
      this.getList()
 | 
			
		||||
    },
 | 
			
		||||
    getList() {
 | 
			
		||||
      groupTeamSchedulingPage({ ...this.queryParams }).then(res => {
 | 
			
		||||
        console.log(res)
 | 
			
		||||
        this.list = res.data.list || []
 | 
			
		||||
        this.total = res.data.total || 0
 | 
			
		||||
      })
 | 
			
		||||
    },
 | 
			
		||||
    handleClick(val) {
 | 
			
		||||
      console.log(val)
 | 
			
		||||
      this.paramVisible = true
 | 
			
		||||
      this.$nextTick(() => {
 | 
			
		||||
        this.$refs.schedulingMonitoringDetail.init(val.data)
 | 
			
		||||
      })
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
	name: 'GroupTeamScheduling',
 | 
			
		||||
	mixins: [tableHeightMixin],
 | 
			
		||||
	data() {
 | 
			
		||||
		return {
 | 
			
		||||
			// 查询参数
 | 
			
		||||
			queryParams: {
 | 
			
		||||
				pageNo: 1,
 | 
			
		||||
				pageSize: 20,
 | 
			
		||||
				classesId: '',
 | 
			
		||||
				teamName: '',
 | 
			
		||||
				startDay: [],
 | 
			
		||||
			},
 | 
			
		||||
			tableProps,
 | 
			
		||||
			tableBtn: [
 | 
			
		||||
				this.$auth.hasPermi('base:team-production:detail')
 | 
			
		||||
					? {
 | 
			
		||||
							type: 'productionDetail',
 | 
			
		||||
							btnName: '查看',
 | 
			
		||||
							showTip: '生产情况',
 | 
			
		||||
					  }
 | 
			
		||||
					: undefined,
 | 
			
		||||
			].filter((v) => v),
 | 
			
		||||
			list: [],
 | 
			
		||||
			total: 0,
 | 
			
		||||
			paramVisible: false,
 | 
			
		||||
		};
 | 
			
		||||
	},
 | 
			
		||||
	components: { TeamProductionDetail, SearchArea },
 | 
			
		||||
	mounted() {
 | 
			
		||||
		this.getList();
 | 
			
		||||
	},
 | 
			
		||||
	methods: {
 | 
			
		||||
		buttonClick(val) {
 | 
			
		||||
			this.queryParams.pageNo = 1;
 | 
			
		||||
			this.queryParams.classesId = val.classesId;
 | 
			
		||||
			this.queryParams.teamName = val.teamName;
 | 
			
		||||
			this.queryParams.startDay[0] = val.tiemStr
 | 
			
		||||
				? val.tiemStr[0] + ' 00:00:00'
 | 
			
		||||
				: '';
 | 
			
		||||
			this.queryParams.startDay[1] = val.tiemStr
 | 
			
		||||
				? val.tiemStr[1] + ' 23:59:59'
 | 
			
		||||
				: '';
 | 
			
		||||
			this.getList();
 | 
			
		||||
		},
 | 
			
		||||
		getList() {
 | 
			
		||||
			groupTeamSchedulingPage({ ...this.queryParams }).then((res) => {
 | 
			
		||||
				console.log(res);
 | 
			
		||||
				this.list = res.data.list || [];
 | 
			
		||||
				this.total = res.data.total || 0;
 | 
			
		||||
			});
 | 
			
		||||
		},
 | 
			
		||||
		handleClick(val) {
 | 
			
		||||
			console.log(val);
 | 
			
		||||
			this.paramVisible = true;
 | 
			
		||||
			this.$nextTick(() => {
 | 
			
		||||
				this.$refs.schedulingMonitoringDetail.init(val.data);
 | 
			
		||||
			});
 | 
			
		||||
		},
 | 
			
		||||
	},
 | 
			
		||||
};
 | 
			
		||||
</script>
 | 
			
		||||
@@ -1,440 +1,465 @@
 | 
			
		||||
<template>
 | 
			
		||||
  <div class="app-container">
 | 
			
		||||
    <!-- 搜索工作栏 -->
 | 
			
		||||
    <search-bar
 | 
			
		||||
      :formConfigs="formConfig"
 | 
			
		||||
      ref="searchBarForm"
 | 
			
		||||
      @headBtnClick="buttonClick"
 | 
			
		||||
    />
 | 
			
		||||
    <!-- 列表 -->
 | 
			
		||||
    <base-table
 | 
			
		||||
      :page="queryParams.pageNo"
 | 
			
		||||
      :limit="queryParams.pageSize"
 | 
			
		||||
      :table-props="tableProps"
 | 
			
		||||
      :table-data="list"
 | 
			
		||||
      :max-height="tableH"
 | 
			
		||||
    >
 | 
			
		||||
      <method-btn
 | 
			
		||||
        v-if="tableBtn.length"
 | 
			
		||||
        slot="handleBtn"
 | 
			
		||||
        :width="240"
 | 
			
		||||
        label="操作"
 | 
			
		||||
        :method-list="tableBtn"
 | 
			
		||||
        @clickBtn="handleClick"
 | 
			
		||||
      />
 | 
			
		||||
    </base-table>
 | 
			
		||||
    <pagination
 | 
			
		||||
      :page.sync="queryParams.pageNo"
 | 
			
		||||
      :limit.sync="queryParams.pageSize"
 | 
			
		||||
      :total="total"
 | 
			
		||||
      @pagination="getList"
 | 
			
		||||
    />
 | 
			
		||||
    <!-- 新增&编辑 -->
 | 
			
		||||
    <base-dialog
 | 
			
		||||
      :dialogTitle="addOrEditTitle"
 | 
			
		||||
      :dialogVisible="centervisible"
 | 
			
		||||
      @cancel="handleCancel"
 | 
			
		||||
      @confirm="handleConfirm"
 | 
			
		||||
      :before-close="handleCancel"
 | 
			
		||||
      width='60%'
 | 
			
		||||
    >
 | 
			
		||||
      <order-group-add ref="orderGroupAdd" @successSubmit="successSubmit" />
 | 
			
		||||
    </base-dialog>
 | 
			
		||||
    <!-- 查看详情 -->
 | 
			
		||||
    <!-- 新增工单 -->
 | 
			
		||||
    <base-dialog
 | 
			
		||||
      dialogTitle="绑定厂务订单"
 | 
			
		||||
      :dialogVisible="bindOrderVisible"
 | 
			
		||||
      @cancel="bindOrderCancel"
 | 
			
		||||
      @confirm="bindOrderConfirm"
 | 
			
		||||
      :before-close="bindOrderCancel"
 | 
			
		||||
      width='60%'
 | 
			
		||||
    >
 | 
			
		||||
      <bind-order ref="bindOrder" @bindOrderSubmit="bindOrderSubmit" />
 | 
			
		||||
    </base-dialog>
 | 
			
		||||
  </div>
 | 
			
		||||
	<div class="app-container">
 | 
			
		||||
		<!-- 搜索工作栏 -->
 | 
			
		||||
		<search-bar
 | 
			
		||||
			:formConfigs="formConfig"
 | 
			
		||||
			ref="searchBarForm"
 | 
			
		||||
			@headBtnClick="buttonClick" />
 | 
			
		||||
		<!-- 列表 -->
 | 
			
		||||
		<base-table
 | 
			
		||||
			:page="queryParams.pageNo"
 | 
			
		||||
			:limit="queryParams.pageSize"
 | 
			
		||||
			:table-props="tableProps"
 | 
			
		||||
			:table-data="list"
 | 
			
		||||
			:max-height="tableH">
 | 
			
		||||
			<method-btn
 | 
			
		||||
				v-if="tableBtn.length"
 | 
			
		||||
				slot="handleBtn"
 | 
			
		||||
				:width="240"
 | 
			
		||||
				label="操作"
 | 
			
		||||
				:method-list="tableBtn"
 | 
			
		||||
				@clickBtn="handleClick" />
 | 
			
		||||
		</base-table>
 | 
			
		||||
		<pagination
 | 
			
		||||
			:page.sync="queryParams.pageNo"
 | 
			
		||||
			:limit.sync="queryParams.pageSize"
 | 
			
		||||
			:total="total"
 | 
			
		||||
			@pagination="getList" />
 | 
			
		||||
		<!-- 新增&编辑 -->
 | 
			
		||||
		<base-dialog
 | 
			
		||||
			:dialogTitle="addOrEditTitle"
 | 
			
		||||
			:dialogVisible="centervisible"
 | 
			
		||||
			@cancel="handleCancel"
 | 
			
		||||
			@confirm="handleConfirm"
 | 
			
		||||
			:before-close="handleCancel"
 | 
			
		||||
			width="60%">
 | 
			
		||||
			<order-group-add
 | 
			
		||||
				ref="orderGroupAdd"
 | 
			
		||||
				@successSubmit="successSubmit" />
 | 
			
		||||
		</base-dialog>
 | 
			
		||||
		<!-- 查看详情 -->
 | 
			
		||||
		<!-- 新增工单 -->
 | 
			
		||||
		<base-dialog
 | 
			
		||||
			dialogTitle="绑定厂务订单"
 | 
			
		||||
			:dialogVisible="bindOrderVisible"
 | 
			
		||||
			@cancel="bindOrderCancel"
 | 
			
		||||
			@confirm="bindOrderConfirm"
 | 
			
		||||
			:before-close="bindOrderCancel"
 | 
			
		||||
			width="60%">
 | 
			
		||||
			<bind-order
 | 
			
		||||
				ref="bindOrder"
 | 
			
		||||
				@bindOrderSubmit="bindOrderSubmit" />
 | 
			
		||||
		</base-dialog>
 | 
			
		||||
	</div>
 | 
			
		||||
</template>
 | 
			
		||||
<script>
 | 
			
		||||
import { parseTime } from '@/utils/ruoyi'
 | 
			
		||||
import { getOrderGroupPage, groupOrderStatusSet } from '@/api/base/orderGroup'
 | 
			
		||||
import { customerList } from '@/api/base/orderManage'
 | 
			
		||||
import OrderGroupAdd from './components/orderGroupAdd'
 | 
			
		||||
import BindOrder from './components/bindOrder'
 | 
			
		||||
import { publicFormatter } from '@/utils/dict'
 | 
			
		||||
import { parseTime } from '@/utils/ruoyi';
 | 
			
		||||
import { getOrderGroupPage, groupOrderStatusSet } from '@/api/base/orderGroup';
 | 
			
		||||
import { customerList } from '@/api/base/orderManage';
 | 
			
		||||
import OrderGroupAdd from './components/orderGroupAdd';
 | 
			
		||||
import BindOrder from './components/bindOrder';
 | 
			
		||||
import { publicFormatter } from '@/utils/dict';
 | 
			
		||||
import tableHeightMixin from '@/mixins/lb/tableHeightMixin';
 | 
			
		||||
const tableProps = [
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'createTime',
 | 
			
		||||
    label: '添加时间',
 | 
			
		||||
    filter: parseTime,
 | 
			
		||||
    minWidth: 160
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'name',
 | 
			
		||||
    label: '订单名称',
 | 
			
		||||
    minWidth: 140,
 | 
			
		||||
    showOverflowtooltip: true
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'code',
 | 
			
		||||
    label: '订单编码',
 | 
			
		||||
    minWidth: 150
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'customerId',
 | 
			
		||||
    label: '客户',
 | 
			
		||||
    showOverflowtooltip: true
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'status',
 | 
			
		||||
    label: '订单状态',
 | 
			
		||||
    filter: publicFormatter('order_status')
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'productName',
 | 
			
		||||
    label: '产品名称',
 | 
			
		||||
    minWidth: 200,
 | 
			
		||||
    showOverflowtooltip: true
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'specifications',
 | 
			
		||||
    label: '产品规格',
 | 
			
		||||
    minWidth: 120,
 | 
			
		||||
    showOverflowtooltip: true
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'unit',
 | 
			
		||||
    label: '单位',
 | 
			
		||||
    filter: publicFormatter('unit_dict')
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'planQuantity',
 | 
			
		||||
    label: '计划加工量',
 | 
			
		||||
    width: 100
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'actualquantity',
 | 
			
		||||
    label: '实际加工量',
 | 
			
		||||
    width: 100
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'deliveTime',
 | 
			
		||||
    label: '交货时间',
 | 
			
		||||
    filter: parseTime,
 | 
			
		||||
    minWidth: 160
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'packReq',
 | 
			
		||||
    label: '包装要求',
 | 
			
		||||
    // filter: publicFormatter('pack_spec'),
 | 
			
		||||
    minWidth: 120,
 | 
			
		||||
    showOverflowtooltip: true
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'orderIdNum',
 | 
			
		||||
    label: '订单数量'
 | 
			
		||||
  }  
 | 
			
		||||
]
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'createTime',
 | 
			
		||||
		label: '添加时间',
 | 
			
		||||
		filter: parseTime,
 | 
			
		||||
		minWidth: 160,
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'name',
 | 
			
		||||
		label: '订单名称',
 | 
			
		||||
		minWidth: 140,
 | 
			
		||||
		showOverflowtooltip: true,
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'code',
 | 
			
		||||
		label: '订单编码',
 | 
			
		||||
		minWidth: 150,
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'customerId',
 | 
			
		||||
		label: '客户',
 | 
			
		||||
		showOverflowtooltip: true,
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'status',
 | 
			
		||||
		label: '订单状态',
 | 
			
		||||
		filter: publicFormatter('order_status'),
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'productName',
 | 
			
		||||
		label: '产品名称',
 | 
			
		||||
		minWidth: 200,
 | 
			
		||||
		showOverflowtooltip: true,
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'specifications',
 | 
			
		||||
		label: '产品规格',
 | 
			
		||||
		minWidth: 120,
 | 
			
		||||
		showOverflowtooltip: true,
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'unit',
 | 
			
		||||
		label: '单位',
 | 
			
		||||
		filter: publicFormatter('unit_dict'),
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'planQuantity',
 | 
			
		||||
		label: '计划加工量',
 | 
			
		||||
		width: 100,
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'actualquantity',
 | 
			
		||||
		label: '实际加工量',
 | 
			
		||||
		width: 100,
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'deliveTime',
 | 
			
		||||
		label: '交货时间',
 | 
			
		||||
		filter: parseTime,
 | 
			
		||||
		minWidth: 160,
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'packReq',
 | 
			
		||||
		label: '包装要求',
 | 
			
		||||
		// filter: publicFormatter('pack_spec'),
 | 
			
		||||
		minWidth: 120,
 | 
			
		||||
		showOverflowtooltip: true,
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'orderIdNum',
 | 
			
		||||
		label: '订单数量',
 | 
			
		||||
	},
 | 
			
		||||
];
 | 
			
		||||
export default {
 | 
			
		||||
  name: 'OrderGroup',
 | 
			
		||||
  data() {
 | 
			
		||||
    return {
 | 
			
		||||
      formConfig: [
 | 
			
		||||
        {
 | 
			
		||||
          type: 'input',
 | 
			
		||||
          label: '订单名称',
 | 
			
		||||
          placeholder: '订单名称',
 | 
			
		||||
          param: 'name'
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          type: 'select',
 | 
			
		||||
          label: '状态',
 | 
			
		||||
          selectOptions: this.getDictDatas(this.DICT_TYPE.ORDER_STATUS),
 | 
			
		||||
          labelField: 'label',
 | 
			
		||||
          valueField: 'value',
 | 
			
		||||
          param: 'status'
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          type: 'datePicker',
 | 
			
		||||
          label: '时间段',
 | 
			
		||||
          dateType: 'daterange',
 | 
			
		||||
          format: 'yyyy-MM-dd',
 | 
			
		||||
          valueFormat: "yyyy-MM-dd",
 | 
			
		||||
          rangeSeparator: '-',
 | 
			
		||||
          startPlaceholder: '开始时间',
 | 
			
		||||
          endPlaceholder: '结束时间',
 | 
			
		||||
          param: 'timeVal',
 | 
			
		||||
          defaultSelect: [],
 | 
			
		||||
          width: 250
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          type: 'button',
 | 
			
		||||
          btnName: '查询',
 | 
			
		||||
          name: 'search',
 | 
			
		||||
          color: 'primary'
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          type: this.$auth.hasPermi('base:order-group:create') ? 'separate' : '',
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          type: this.$auth.hasPermi('base:order-group:create') ? 'button' : '',
 | 
			
		||||
          btnName: '新增',
 | 
			
		||||
          name: 'add',
 | 
			
		||||
          color: 'success',
 | 
			
		||||
          plain: true
 | 
			
		||||
        }
 | 
			
		||||
      ],
 | 
			
		||||
      // 查询参数
 | 
			
		||||
      queryParams: {
 | 
			
		||||
        pageNo: 1,
 | 
			
		||||
        pageSize: 20,
 | 
			
		||||
        name: null,
 | 
			
		||||
        status: null,
 | 
			
		||||
        planFinishTime: []
 | 
			
		||||
      },
 | 
			
		||||
      total: 0,
 | 
			
		||||
      tableProps,
 | 
			
		||||
      list: [],
 | 
			
		||||
      tableH: this.tableHeight(260),
 | 
			
		||||
      tableBtn: [
 | 
			
		||||
      this.$auth.hasPermi('base:order-group:bind')
 | 
			
		||||
          ? {
 | 
			
		||||
              type: 'bind',
 | 
			
		||||
              btnName: '绑定',
 | 
			
		||||
              showTip: '厂务订单',
 | 
			
		||||
              showParam: {
 | 
			
		||||
                type: '&',
 | 
			
		||||
                data: [
 | 
			
		||||
                  {
 | 
			
		||||
                    type: 'less',
 | 
			
		||||
                    name: 'status',
 | 
			
		||||
                    value: 3
 | 
			
		||||
                  }
 | 
			
		||||
                ]
 | 
			
		||||
              }
 | 
			
		||||
            }
 | 
			
		||||
          : undefined,
 | 
			
		||||
      this.$auth.hasPermi('base:order-group:complete')
 | 
			
		||||
          ? {
 | 
			
		||||
              type: 'complete',
 | 
			
		||||
              btnName: '完成',
 | 
			
		||||
              showTip: '完成订单',
 | 
			
		||||
              showParam: {
 | 
			
		||||
                type: '&',
 | 
			
		||||
                data: [
 | 
			
		||||
                  {
 | 
			
		||||
                    type: 'equal',
 | 
			
		||||
                    name: 'status',
 | 
			
		||||
                    value: 3
 | 
			
		||||
                  }
 | 
			
		||||
                ]
 | 
			
		||||
              }
 | 
			
		||||
            }
 | 
			
		||||
          : undefined,
 | 
			
		||||
          this.$auth.hasPermi('base:order-group:termination')
 | 
			
		||||
          ? {
 | 
			
		||||
              type: 'termination',
 | 
			
		||||
              btnName: '终止',
 | 
			
		||||
              showTip: '终止',
 | 
			
		||||
              showParam: {
 | 
			
		||||
                type: '&',
 | 
			
		||||
                data: [
 | 
			
		||||
                  {
 | 
			
		||||
                    type: 'equal',
 | 
			
		||||
                    name: 'status',
 | 
			
		||||
                    value: 3
 | 
			
		||||
                  }
 | 
			
		||||
                ]
 | 
			
		||||
              }
 | 
			
		||||
            }
 | 
			
		||||
          : undefined,
 | 
			
		||||
          this.$auth.hasPermi('base:order-group:cancel')
 | 
			
		||||
          ? {
 | 
			
		||||
              type: 'cancel',
 | 
			
		||||
              btnName: '作废',
 | 
			
		||||
              showTip: '作废',
 | 
			
		||||
              showParam: {
 | 
			
		||||
                type: '&',
 | 
			
		||||
                data: [
 | 
			
		||||
                  {
 | 
			
		||||
                    type: 'less',
 | 
			
		||||
                    name: 'status',
 | 
			
		||||
                    value: 2
 | 
			
		||||
                  }
 | 
			
		||||
                ]
 | 
			
		||||
              }
 | 
			
		||||
            }
 | 
			
		||||
          : undefined,
 | 
			
		||||
          {
 | 
			
		||||
            type: 'detail',
 | 
			
		||||
            btnName: '详情'
 | 
			
		||||
          },
 | 
			
		||||
        this.$auth.hasPermi('base:order-group:edit')
 | 
			
		||||
          ? {
 | 
			
		||||
              type: 'edit',
 | 
			
		||||
              btnName: '编辑',
 | 
			
		||||
              showParam: {
 | 
			
		||||
                type: '&',
 | 
			
		||||
                data: [
 | 
			
		||||
                  {
 | 
			
		||||
                    type: 'less',
 | 
			
		||||
                    name: 'status',
 | 
			
		||||
                    value: 2
 | 
			
		||||
                  }
 | 
			
		||||
                ]
 | 
			
		||||
              }
 | 
			
		||||
            }
 | 
			
		||||
          : undefined
 | 
			
		||||
      ].filter((v) => v),
 | 
			
		||||
      addOrEditTitle: '',
 | 
			
		||||
      centervisible: false,
 | 
			
		||||
      priorityList: this.getDictDatas(this.DICT_TYPE.ORDER_PRIORITY),
 | 
			
		||||
      workIssueTitle: '',
 | 
			
		||||
      bindOrderVisible: false,
 | 
			
		||||
      orderDetailVisible: false
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
  components: { OrderGroupAdd, BindOrder },
 | 
			
		||||
  created() {
 | 
			
		||||
    window.addEventListener('resize', () => {
 | 
			
		||||
      this.tableH = this.tableHeight(260)
 | 
			
		||||
    })
 | 
			
		||||
    this.getList()
 | 
			
		||||
  },
 | 
			
		||||
  methods: {
 | 
			
		||||
    getList() {
 | 
			
		||||
      getOrderGroupPage({...this.queryParams}).then(res => {
 | 
			
		||||
        let arr = res.data.records || []
 | 
			
		||||
        this.total = res.data.total || 0
 | 
			
		||||
        if (arr.length > 0) {
 | 
			
		||||
          customerList().then(result => {
 | 
			
		||||
            let tempData = result.data || []
 | 
			
		||||
            if (tempData.length > 0) {
 | 
			
		||||
              arr.map(item => {
 | 
			
		||||
                for (let i of tempData) {
 | 
			
		||||
                  if (item.customerId === i.id) {
 | 
			
		||||
                    item.customerId = i.name
 | 
			
		||||
                  }
 | 
			
		||||
                }
 | 
			
		||||
              })
 | 
			
		||||
              this.list = arr
 | 
			
		||||
            }
 | 
			
		||||
          })
 | 
			
		||||
        }else {
 | 
			
		||||
          this.list = arr
 | 
			
		||||
        }
 | 
			
		||||
      })
 | 
			
		||||
    },
 | 
			
		||||
    buttonClick(val) {
 | 
			
		||||
      console.log(val)
 | 
			
		||||
      if (val.btnName === 'search') {
 | 
			
		||||
        this.queryParams.name = val.name
 | 
			
		||||
        this.queryParams.status = val.status
 | 
			
		||||
        if (val.timeVal && val.timeVal.length > 0) {
 | 
			
		||||
          this.queryParams.planFinishTime[0] = val.timeVal[0] + ' 00:00:00'
 | 
			
		||||
          this.queryParams.planFinishTime[1] = val.timeVal[1] + ' 23:59:59'
 | 
			
		||||
        } else {
 | 
			
		||||
          this.queryParams.planFinishTime = []
 | 
			
		||||
        }
 | 
			
		||||
        this.getList()
 | 
			
		||||
      } else {
 | 
			
		||||
        this.addOrEditTitle = '新增'
 | 
			
		||||
        this.centervisible = true
 | 
			
		||||
        this.$nextTick(() => {
 | 
			
		||||
          this.$refs.orderGroupAdd.init()
 | 
			
		||||
        })
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    handleClick(val) {
 | 
			
		||||
      console.log(val)
 | 
			
		||||
      switch (val.type) {
 | 
			
		||||
        case 'edit':
 | 
			
		||||
          this.addOrEditTitle = '编辑'
 | 
			
		||||
          this.centervisible = true
 | 
			
		||||
          this.$nextTick(() => {
 | 
			
		||||
            this.$refs.orderGroupAdd.init(val.data.id)
 | 
			
		||||
          })
 | 
			
		||||
          break
 | 
			
		||||
        case 'cancel':
 | 
			
		||||
          this.handleEditStatus(val.data, '作废', '6')
 | 
			
		||||
          break
 | 
			
		||||
        case 'detail':
 | 
			
		||||
          this.$router.push({path: '/order/base/order-group/order-group-detail-data?orderGroupId='+ val.data.id})
 | 
			
		||||
          break
 | 
			
		||||
        case 'termination':
 | 
			
		||||
          this.handleEditStatus(val.data, '终止', '5')
 | 
			
		||||
          break
 | 
			
		||||
        case 'bind':
 | 
			
		||||
          this.workIssueTitle = '绑定工单'
 | 
			
		||||
          this.bindOrderVisible = true
 | 
			
		||||
          this.$nextTick(() => {
 | 
			
		||||
            this.$refs.bindOrder.init(val.data)
 | 
			
		||||
          })
 | 
			
		||||
          break
 | 
			
		||||
        case 'complete':
 | 
			
		||||
          this.handleEditStatus(val.data, '完成', '4')
 | 
			
		||||
          break
 | 
			
		||||
        default:
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    // 完成,终止,作废
 | 
			
		||||
    handleEditStatus(val, tip, status) {
 | 
			
		||||
      let _this = this
 | 
			
		||||
      if (val.orderIdNum > 0) {// 有下级订单
 | 
			
		||||
        _this.$confirm('是否将"'+tip+'"操作同步至下级订单和工单?','确认信息', {
 | 
			
		||||
          type: 'warning',
 | 
			
		||||
          distinguishCancelAndClose: true,
 | 
			
		||||
          confirmButtonText: '同步',
 | 
			
		||||
          cancelButtonText: '不同步'
 | 
			
		||||
        }).then(function() {
 | 
			
		||||
          console.log('同步')
 | 
			
		||||
          groupOrderStatusSet({ id: val.id, status: status, isSync: true}).then(() => {
 | 
			
		||||
            _this.getList();
 | 
			
		||||
            _this.$modal.msgSuccess("操作成功");
 | 
			
		||||
          })
 | 
			
		||||
        }).catch(action => {
 | 
			
		||||
          if (action === 'cancel') {
 | 
			
		||||
            console.log('不同步')
 | 
			
		||||
            groupOrderStatusSet({ id: val.id, status: status, isSync: false}).then(() => {
 | 
			
		||||
              _this.getList();
 | 
			
		||||
              _this.$modal.msgSuccess("操作成功");
 | 
			
		||||
            })
 | 
			
		||||
          }else {
 | 
			
		||||
            return console.log('关闭')
 | 
			
		||||
          }
 | 
			
		||||
        })
 | 
			
		||||
      }else{// 无下级订单
 | 
			
		||||
        _this.$modal.confirm('是否确认"'+tip+'"集团订单名称为"' + val.name + '"的数据项?').then(function() {
 | 
			
		||||
          return groupOrderStatusSet({ id: val.id, status: status})
 | 
			
		||||
        }).then(() => {
 | 
			
		||||
          _this.getList();
 | 
			
		||||
          _this.$modal.msgSuccess("操作成功");
 | 
			
		||||
        }).catch(() => {});
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    handleCancel() {
 | 
			
		||||
      this.$refs.orderGroupAdd.formClear()
 | 
			
		||||
      this.centervisible = false
 | 
			
		||||
      this.addOrEditTitle = ''
 | 
			
		||||
    },
 | 
			
		||||
    handleConfirm() {
 | 
			
		||||
      this.$refs.orderGroupAdd.submitForm()
 | 
			
		||||
    },
 | 
			
		||||
    successSubmit() {
 | 
			
		||||
      this.handleCancel()
 | 
			
		||||
      this.getList()
 | 
			
		||||
    },
 | 
			
		||||
    // 下发新增
 | 
			
		||||
    bindOrderCancel() {
 | 
			
		||||
      this.$refs.bindOrder.formClear()
 | 
			
		||||
      this.bindOrderVisible = false
 | 
			
		||||
    },
 | 
			
		||||
    bindOrderConfirm() {
 | 
			
		||||
      this.$refs.bindOrder.bindOrderSubmit()
 | 
			
		||||
    },
 | 
			
		||||
    bindOrderSubmit() {
 | 
			
		||||
      this.bindOrderCancel()
 | 
			
		||||
      this.getList()
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
	name: 'OrderGroup',
 | 
			
		||||
	mixins: [tableHeightMixin],
 | 
			
		||||
	data() {
 | 
			
		||||
		return {
 | 
			
		||||
			formConfig: [
 | 
			
		||||
				{
 | 
			
		||||
					type: 'input',
 | 
			
		||||
					label: '订单名称',
 | 
			
		||||
					placeholder: '订单名称',
 | 
			
		||||
					param: 'name',
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					type: 'select',
 | 
			
		||||
					label: '状态',
 | 
			
		||||
					selectOptions: this.getDictDatas(this.DICT_TYPE.ORDER_STATUS),
 | 
			
		||||
					labelField: 'label',
 | 
			
		||||
					valueField: 'value',
 | 
			
		||||
					param: 'status',
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					type: 'datePicker',
 | 
			
		||||
					label: '时间段',
 | 
			
		||||
					dateType: 'daterange',
 | 
			
		||||
					format: 'yyyy-MM-dd',
 | 
			
		||||
					valueFormat: 'yyyy-MM-dd',
 | 
			
		||||
					rangeSeparator: '-',
 | 
			
		||||
					startPlaceholder: '开始时间',
 | 
			
		||||
					endPlaceholder: '结束时间',
 | 
			
		||||
					param: 'timeVal',
 | 
			
		||||
					defaultSelect: [],
 | 
			
		||||
					width: 250,
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					type: 'button',
 | 
			
		||||
					btnName: '查询',
 | 
			
		||||
					name: 'search',
 | 
			
		||||
					color: 'primary',
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					type: this.$auth.hasPermi('base:order-group:create')
 | 
			
		||||
						? 'separate'
 | 
			
		||||
						: '',
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					type: this.$auth.hasPermi('base:order-group:create') ? 'button' : '',
 | 
			
		||||
					btnName: '新增',
 | 
			
		||||
					name: 'add',
 | 
			
		||||
					color: 'success',
 | 
			
		||||
					plain: true,
 | 
			
		||||
				},
 | 
			
		||||
			],
 | 
			
		||||
			// 查询参数
 | 
			
		||||
			queryParams: {
 | 
			
		||||
				pageNo: 1,
 | 
			
		||||
				pageSize: 20,
 | 
			
		||||
				name: null,
 | 
			
		||||
				status: null,
 | 
			
		||||
				planFinishTime: [],
 | 
			
		||||
			},
 | 
			
		||||
			total: 0,
 | 
			
		||||
			tableProps,
 | 
			
		||||
			list: [],
 | 
			
		||||
			tableBtn: [
 | 
			
		||||
				this.$auth.hasPermi('base:order-group:bind')
 | 
			
		||||
					? {
 | 
			
		||||
							type: 'bind',
 | 
			
		||||
							btnName: '绑定',
 | 
			
		||||
							showTip: '厂务订单',
 | 
			
		||||
							showParam: {
 | 
			
		||||
								type: '&',
 | 
			
		||||
								data: [
 | 
			
		||||
									{
 | 
			
		||||
										type: 'less',
 | 
			
		||||
										name: 'status',
 | 
			
		||||
										value: 3,
 | 
			
		||||
									},
 | 
			
		||||
								],
 | 
			
		||||
							},
 | 
			
		||||
					  }
 | 
			
		||||
					: undefined,
 | 
			
		||||
				this.$auth.hasPermi('base:order-group:complete')
 | 
			
		||||
					? {
 | 
			
		||||
							type: 'complete',
 | 
			
		||||
							btnName: '完成',
 | 
			
		||||
							showTip: '完成订单',
 | 
			
		||||
							showParam: {
 | 
			
		||||
								type: '&',
 | 
			
		||||
								data: [
 | 
			
		||||
									{
 | 
			
		||||
										type: 'equal',
 | 
			
		||||
										name: 'status',
 | 
			
		||||
										value: 3,
 | 
			
		||||
									},
 | 
			
		||||
								],
 | 
			
		||||
							},
 | 
			
		||||
					  }
 | 
			
		||||
					: undefined,
 | 
			
		||||
				this.$auth.hasPermi('base:order-group:termination')
 | 
			
		||||
					? {
 | 
			
		||||
							type: 'termination',
 | 
			
		||||
							btnName: '终止',
 | 
			
		||||
							showTip: '终止',
 | 
			
		||||
							showParam: {
 | 
			
		||||
								type: '&',
 | 
			
		||||
								data: [
 | 
			
		||||
									{
 | 
			
		||||
										type: 'equal',
 | 
			
		||||
										name: 'status',
 | 
			
		||||
										value: 3,
 | 
			
		||||
									},
 | 
			
		||||
								],
 | 
			
		||||
							},
 | 
			
		||||
					  }
 | 
			
		||||
					: undefined,
 | 
			
		||||
				this.$auth.hasPermi('base:order-group:cancel')
 | 
			
		||||
					? {
 | 
			
		||||
							type: 'cancel',
 | 
			
		||||
							btnName: '作废',
 | 
			
		||||
							showTip: '作废',
 | 
			
		||||
							showParam: {
 | 
			
		||||
								type: '&',
 | 
			
		||||
								data: [
 | 
			
		||||
									{
 | 
			
		||||
										type: 'less',
 | 
			
		||||
										name: 'status',
 | 
			
		||||
										value: 2,
 | 
			
		||||
									},
 | 
			
		||||
								],
 | 
			
		||||
							},
 | 
			
		||||
					  }
 | 
			
		||||
					: undefined,
 | 
			
		||||
				{
 | 
			
		||||
					type: 'detail',
 | 
			
		||||
					btnName: '详情',
 | 
			
		||||
				},
 | 
			
		||||
				this.$auth.hasPermi('base:order-group:edit')
 | 
			
		||||
					? {
 | 
			
		||||
							type: 'edit',
 | 
			
		||||
							btnName: '编辑',
 | 
			
		||||
							showParam: {
 | 
			
		||||
								type: '&',
 | 
			
		||||
								data: [
 | 
			
		||||
									{
 | 
			
		||||
										type: 'less',
 | 
			
		||||
										name: 'status',
 | 
			
		||||
										value: 2,
 | 
			
		||||
									},
 | 
			
		||||
								],
 | 
			
		||||
							},
 | 
			
		||||
					  }
 | 
			
		||||
					: undefined,
 | 
			
		||||
			].filter((v) => v),
 | 
			
		||||
			addOrEditTitle: '',
 | 
			
		||||
			centervisible: false,
 | 
			
		||||
			priorityList: this.getDictDatas(this.DICT_TYPE.ORDER_PRIORITY),
 | 
			
		||||
			workIssueTitle: '',
 | 
			
		||||
			bindOrderVisible: false,
 | 
			
		||||
			orderDetailVisible: false,
 | 
			
		||||
		};
 | 
			
		||||
	},
 | 
			
		||||
	components: { OrderGroupAdd, BindOrder },
 | 
			
		||||
	created() {
 | 
			
		||||
		this.getList();
 | 
			
		||||
	},
 | 
			
		||||
	methods: {
 | 
			
		||||
		getList() {
 | 
			
		||||
			getOrderGroupPage({ ...this.queryParams }).then((res) => {
 | 
			
		||||
				let arr = res.data.records || [];
 | 
			
		||||
				this.total = res.data.total || 0;
 | 
			
		||||
				if (arr.length > 0) {
 | 
			
		||||
					customerList().then((result) => {
 | 
			
		||||
						let tempData = result.data || [];
 | 
			
		||||
						if (tempData.length > 0) {
 | 
			
		||||
							arr.map((item) => {
 | 
			
		||||
								for (let i of tempData) {
 | 
			
		||||
									if (item.customerId === i.id) {
 | 
			
		||||
										item.customerId = i.name;
 | 
			
		||||
									}
 | 
			
		||||
								}
 | 
			
		||||
							});
 | 
			
		||||
							this.list = arr;
 | 
			
		||||
						}
 | 
			
		||||
					});
 | 
			
		||||
				} else {
 | 
			
		||||
					this.list = arr;
 | 
			
		||||
				}
 | 
			
		||||
			});
 | 
			
		||||
		},
 | 
			
		||||
		buttonClick(val) {
 | 
			
		||||
			console.log(val);
 | 
			
		||||
			if (val.btnName === 'search') {
 | 
			
		||||
				this.queryParams.name = val.name;
 | 
			
		||||
				this.queryParams.status = val.status;
 | 
			
		||||
				if (val.timeVal && val.timeVal.length > 0) {
 | 
			
		||||
					this.queryParams.planFinishTime[0] = val.timeVal[0] + ' 00:00:00';
 | 
			
		||||
					this.queryParams.planFinishTime[1] = val.timeVal[1] + ' 23:59:59';
 | 
			
		||||
				} else {
 | 
			
		||||
					this.queryParams.planFinishTime = [];
 | 
			
		||||
				}
 | 
			
		||||
				this.getList();
 | 
			
		||||
			} else {
 | 
			
		||||
				this.addOrEditTitle = '新增';
 | 
			
		||||
				this.centervisible = true;
 | 
			
		||||
				this.$nextTick(() => {
 | 
			
		||||
					this.$refs.orderGroupAdd.init();
 | 
			
		||||
				});
 | 
			
		||||
			}
 | 
			
		||||
		},
 | 
			
		||||
		handleClick(val) {
 | 
			
		||||
			console.log(val);
 | 
			
		||||
			switch (val.type) {
 | 
			
		||||
				case 'edit':
 | 
			
		||||
					this.addOrEditTitle = '编辑';
 | 
			
		||||
					this.centervisible = true;
 | 
			
		||||
					this.$nextTick(() => {
 | 
			
		||||
						this.$refs.orderGroupAdd.init(val.data.id);
 | 
			
		||||
					});
 | 
			
		||||
					break;
 | 
			
		||||
				case 'cancel':
 | 
			
		||||
					this.handleEditStatus(val.data, '作废', '6');
 | 
			
		||||
					break;
 | 
			
		||||
				case 'detail':
 | 
			
		||||
					this.$router.push({
 | 
			
		||||
						path:
 | 
			
		||||
							'/order/base/order-group/order-group-detail-data?orderGroupId=' +
 | 
			
		||||
							val.data.id,
 | 
			
		||||
					});
 | 
			
		||||
					break;
 | 
			
		||||
				case 'termination':
 | 
			
		||||
					this.handleEditStatus(val.data, '终止', '5');
 | 
			
		||||
					break;
 | 
			
		||||
				case 'bind':
 | 
			
		||||
					this.workIssueTitle = '绑定工单';
 | 
			
		||||
					this.bindOrderVisible = true;
 | 
			
		||||
					this.$nextTick(() => {
 | 
			
		||||
						this.$refs.bindOrder.init(val.data);
 | 
			
		||||
					});
 | 
			
		||||
					break;
 | 
			
		||||
				case 'complete':
 | 
			
		||||
					this.handleEditStatus(val.data, '完成', '4');
 | 
			
		||||
					break;
 | 
			
		||||
				default:
 | 
			
		||||
			}
 | 
			
		||||
		},
 | 
			
		||||
		// 完成,终止,作废
 | 
			
		||||
		handleEditStatus(val, tip, status) {
 | 
			
		||||
			let _this = this;
 | 
			
		||||
			if (val.orderIdNum > 0) {
 | 
			
		||||
				// 有下级订单
 | 
			
		||||
				_this
 | 
			
		||||
					.$confirm(
 | 
			
		||||
						'是否将"' + tip + '"操作同步至下级订单和工单?',
 | 
			
		||||
						'确认信息',
 | 
			
		||||
						{
 | 
			
		||||
							type: 'warning',
 | 
			
		||||
							distinguishCancelAndClose: true,
 | 
			
		||||
							confirmButtonText: '同步',
 | 
			
		||||
							cancelButtonText: '不同步',
 | 
			
		||||
						}
 | 
			
		||||
					)
 | 
			
		||||
					.then(function () {
 | 
			
		||||
						console.log('同步');
 | 
			
		||||
						groupOrderStatusSet({
 | 
			
		||||
							id: val.id,
 | 
			
		||||
							status: status,
 | 
			
		||||
							isSync: true,
 | 
			
		||||
						}).then(() => {
 | 
			
		||||
							_this.getList();
 | 
			
		||||
							_this.$modal.msgSuccess('操作成功');
 | 
			
		||||
						});
 | 
			
		||||
					})
 | 
			
		||||
					.catch((action) => {
 | 
			
		||||
						if (action === 'cancel') {
 | 
			
		||||
							console.log('不同步');
 | 
			
		||||
							groupOrderStatusSet({
 | 
			
		||||
								id: val.id,
 | 
			
		||||
								status: status,
 | 
			
		||||
								isSync: false,
 | 
			
		||||
							}).then(() => {
 | 
			
		||||
								_this.getList();
 | 
			
		||||
								_this.$modal.msgSuccess('操作成功');
 | 
			
		||||
							});
 | 
			
		||||
						} else {
 | 
			
		||||
							return console.log('关闭');
 | 
			
		||||
						}
 | 
			
		||||
					});
 | 
			
		||||
			} else {
 | 
			
		||||
				// 无下级订单
 | 
			
		||||
				_this.$modal
 | 
			
		||||
					.confirm(
 | 
			
		||||
						'是否确认"' + tip + '"集团订单名称为"' + val.name + '"的数据项?'
 | 
			
		||||
					)
 | 
			
		||||
					.then(function () {
 | 
			
		||||
						return groupOrderStatusSet({ id: val.id, status: status });
 | 
			
		||||
					})
 | 
			
		||||
					.then(() => {
 | 
			
		||||
						_this.getList();
 | 
			
		||||
						_this.$modal.msgSuccess('操作成功');
 | 
			
		||||
					})
 | 
			
		||||
					.catch(() => {});
 | 
			
		||||
			}
 | 
			
		||||
		},
 | 
			
		||||
		handleCancel() {
 | 
			
		||||
			this.$refs.orderGroupAdd.formClear();
 | 
			
		||||
			this.centervisible = false;
 | 
			
		||||
			this.addOrEditTitle = '';
 | 
			
		||||
		},
 | 
			
		||||
		handleConfirm() {
 | 
			
		||||
			this.$refs.orderGroupAdd.submitForm();
 | 
			
		||||
		},
 | 
			
		||||
		successSubmit() {
 | 
			
		||||
			this.handleCancel();
 | 
			
		||||
			this.getList();
 | 
			
		||||
		},
 | 
			
		||||
		// 下发新增
 | 
			
		||||
		bindOrderCancel() {
 | 
			
		||||
			this.$refs.bindOrder.formClear();
 | 
			
		||||
			this.bindOrderVisible = false;
 | 
			
		||||
		},
 | 
			
		||||
		bindOrderConfirm() {
 | 
			
		||||
			this.$refs.bindOrder.bindOrderSubmit();
 | 
			
		||||
		},
 | 
			
		||||
		bindOrderSubmit() {
 | 
			
		||||
			this.bindOrderCancel();
 | 
			
		||||
			this.getList();
 | 
			
		||||
		},
 | 
			
		||||
	},
 | 
			
		||||
};
 | 
			
		||||
</script>
 | 
			
		||||
@@ -1,470 +1,494 @@
 | 
			
		||||
<template>
 | 
			
		||||
  <div class="app-container">
 | 
			
		||||
    <!-- 搜索工作栏 -->
 | 
			
		||||
    <search-bar
 | 
			
		||||
      :formConfigs="formConfig"
 | 
			
		||||
      ref="searchBarForm"
 | 
			
		||||
      @headBtnClick="buttonClick"
 | 
			
		||||
    />
 | 
			
		||||
    <!-- 列表 -->
 | 
			
		||||
    <base-table
 | 
			
		||||
      :page="queryParams.pageNo"
 | 
			
		||||
      :limit="queryParams.pageSize"
 | 
			
		||||
      :table-props="tableProps"
 | 
			
		||||
      :table-data="list"
 | 
			
		||||
      :max-height="tableH"
 | 
			
		||||
    >
 | 
			
		||||
      <method-btn
 | 
			
		||||
        v-if="tableBtn.length"
 | 
			
		||||
        slot="handleBtn"
 | 
			
		||||
        :width="290"
 | 
			
		||||
        label="操作"
 | 
			
		||||
        :method-list="tableBtn"
 | 
			
		||||
        @clickBtn="handleClick"
 | 
			
		||||
      />
 | 
			
		||||
    </base-table>
 | 
			
		||||
    <pagination
 | 
			
		||||
      :page.sync="queryParams.pageNo"
 | 
			
		||||
      :limit.sync="queryParams.pageSize"
 | 
			
		||||
      :total="total"
 | 
			
		||||
      @pagination="getList"
 | 
			
		||||
    />
 | 
			
		||||
    <!-- 新增&编辑 -->
 | 
			
		||||
    <base-dialog
 | 
			
		||||
      :dialogTitle="addOrEditTitle"
 | 
			
		||||
      :dialogVisible="centervisible"
 | 
			
		||||
      @cancel="handleCancel"
 | 
			
		||||
      @confirm="handleConfirm"
 | 
			
		||||
      :before-close="handleCancel"
 | 
			
		||||
      width='60%'
 | 
			
		||||
    >
 | 
			
		||||
      <order-add ref="orderAdd" @successSubmit="successSubmit" />
 | 
			
		||||
    </base-dialog>
 | 
			
		||||
    <!-- 查看详情 -->
 | 
			
		||||
    <!-- 新增工单 -->
 | 
			
		||||
    <base-dialog
 | 
			
		||||
      :dialogTitle="workIssueTitle"
 | 
			
		||||
      :dialogVisible="addWorkOrdervisible"
 | 
			
		||||
      @cancel="addWorkOrderCancel"
 | 
			
		||||
      @confirm="addWorkOrderConfirm"
 | 
			
		||||
      :before-close="addWorkOrderCancel"
 | 
			
		||||
      width='70%'
 | 
			
		||||
    >
 | 
			
		||||
      <add-work-order ref="addWorkOrder" @addWorkOrderSubmit="addWorkOrderSubmit" />
 | 
			
		||||
    </base-dialog>
 | 
			
		||||
  </div>
 | 
			
		||||
	<div class="app-container">
 | 
			
		||||
		<!-- 搜索工作栏 -->
 | 
			
		||||
		<search-bar
 | 
			
		||||
			:formConfigs="formConfig"
 | 
			
		||||
			ref="searchBarForm"
 | 
			
		||||
			@headBtnClick="buttonClick" />
 | 
			
		||||
		<!-- 列表 -->
 | 
			
		||||
		<base-table
 | 
			
		||||
			:page="queryParams.pageNo"
 | 
			
		||||
			:limit="queryParams.pageSize"
 | 
			
		||||
			:table-props="tableProps"
 | 
			
		||||
			:table-data="list"
 | 
			
		||||
			:max-height="tableH">
 | 
			
		||||
			<method-btn
 | 
			
		||||
				v-if="tableBtn.length"
 | 
			
		||||
				slot="handleBtn"
 | 
			
		||||
				:width="290"
 | 
			
		||||
				label="操作"
 | 
			
		||||
				:method-list="tableBtn"
 | 
			
		||||
				@clickBtn="handleClick" />
 | 
			
		||||
		</base-table>
 | 
			
		||||
		<pagination
 | 
			
		||||
			:page.sync="queryParams.pageNo"
 | 
			
		||||
			:limit.sync="queryParams.pageSize"
 | 
			
		||||
			:total="total"
 | 
			
		||||
			@pagination="getList" />
 | 
			
		||||
		<!-- 新增&编辑 -->
 | 
			
		||||
		<base-dialog
 | 
			
		||||
			:dialogTitle="addOrEditTitle"
 | 
			
		||||
			:dialogVisible="centervisible"
 | 
			
		||||
			@cancel="handleCancel"
 | 
			
		||||
			@confirm="handleConfirm"
 | 
			
		||||
			:before-close="handleCancel"
 | 
			
		||||
			width="60%">
 | 
			
		||||
			<order-add
 | 
			
		||||
				ref="orderAdd"
 | 
			
		||||
				@successSubmit="successSubmit" />
 | 
			
		||||
		</base-dialog>
 | 
			
		||||
		<!-- 查看详情 -->
 | 
			
		||||
		<!-- 新增工单 -->
 | 
			
		||||
		<base-dialog
 | 
			
		||||
			:dialogTitle="workIssueTitle"
 | 
			
		||||
			:dialogVisible="addWorkOrdervisible"
 | 
			
		||||
			@cancel="addWorkOrderCancel"
 | 
			
		||||
			@confirm="addWorkOrderConfirm"
 | 
			
		||||
			:before-close="addWorkOrderCancel"
 | 
			
		||||
			width="70%">
 | 
			
		||||
			<add-work-order
 | 
			
		||||
				ref="addWorkOrder"
 | 
			
		||||
				@addWorkOrderSubmit="addWorkOrderSubmit" />
 | 
			
		||||
		</base-dialog>
 | 
			
		||||
	</div>
 | 
			
		||||
</template>
 | 
			
		||||
<script>
 | 
			
		||||
import { parseTime } from '@/utils/ruoyi'
 | 
			
		||||
import { getOrderPage, orderStatusSet, customerList, orderFinish } from '@/api/base/orderManage'
 | 
			
		||||
import OrderAdd from './components/orderAdd'
 | 
			
		||||
import AddWorkOrder from './components/addWorkOrder'
 | 
			
		||||
import { publicFormatter } from '@/utils/dict'
 | 
			
		||||
import { parseTime } from '@/utils/ruoyi';
 | 
			
		||||
import {
 | 
			
		||||
	getOrderPage,
 | 
			
		||||
	orderStatusSet,
 | 
			
		||||
	customerList,
 | 
			
		||||
	orderFinish,
 | 
			
		||||
} from '@/api/base/orderManage';
 | 
			
		||||
import OrderAdd from './components/orderAdd';
 | 
			
		||||
import AddWorkOrder from './components/addWorkOrder';
 | 
			
		||||
import { publicFormatter } from '@/utils/dict';
 | 
			
		||||
import tableHeightMixin from '@/mixins/lb/tableHeightMixin';
 | 
			
		||||
const tableProps = [
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'createTime',
 | 
			
		||||
    label: '添加时间',
 | 
			
		||||
    filter: parseTime,
 | 
			
		||||
    minWidth: 160
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'name',
 | 
			
		||||
    label: '订单名称',
 | 
			
		||||
    minWidth: 140,
 | 
			
		||||
    showOverflowtooltip: true
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'code',
 | 
			
		||||
    label: '订单编码',
 | 
			
		||||
    minWidth: 150,
 | 
			
		||||
    showOverflowtooltip: true
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'triggerOrigin',
 | 
			
		||||
    label: '来源',
 | 
			
		||||
    filter: publicFormatter('order_Origin')
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'priority',
 | 
			
		||||
    label: '优先级',
 | 
			
		||||
    filter: publicFormatter('order_priority')
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'status',
 | 
			
		||||
    label: '订单状态',
 | 
			
		||||
    filter: publicFormatter('order_status')
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'planQuantity',
 | 
			
		||||
    label: '计划加工量',
 | 
			
		||||
    width: 100
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'actualQuantity',
 | 
			
		||||
    label: '实际加工量',
 | 
			
		||||
    width: 100
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'productName',
 | 
			
		||||
    label: '产品',
 | 
			
		||||
    width: 200,
 | 
			
		||||
    showOverflowtooltip: true
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'unit',
 | 
			
		||||
    label: '单位',
 | 
			
		||||
    filter: publicFormatter('unit_dict')
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'price',
 | 
			
		||||
    label: '单价(元)',
 | 
			
		||||
    align: 'right'
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'workOrderNum',
 | 
			
		||||
    label: '工单数量'
 | 
			
		||||
  }
 | 
			
		||||
]
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'createTime',
 | 
			
		||||
		label: '添加时间',
 | 
			
		||||
		filter: parseTime,
 | 
			
		||||
		minWidth: 160,
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'name',
 | 
			
		||||
		label: '订单名称',
 | 
			
		||||
		minWidth: 140,
 | 
			
		||||
		showOverflowtooltip: true,
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'code',
 | 
			
		||||
		label: '订单编码',
 | 
			
		||||
		minWidth: 150,
 | 
			
		||||
		showOverflowtooltip: true,
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'triggerOrigin',
 | 
			
		||||
		label: '来源',
 | 
			
		||||
		filter: publicFormatter('order_Origin'),
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'priority',
 | 
			
		||||
		label: '优先级',
 | 
			
		||||
		filter: publicFormatter('order_priority'),
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'status',
 | 
			
		||||
		label: '订单状态',
 | 
			
		||||
		filter: publicFormatter('order_status'),
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'planQuantity',
 | 
			
		||||
		label: '计划加工量',
 | 
			
		||||
		width: 100,
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'actualQuantity',
 | 
			
		||||
		label: '实际加工量',
 | 
			
		||||
		width: 100,
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'productName',
 | 
			
		||||
		label: '产品',
 | 
			
		||||
		width: 200,
 | 
			
		||||
		showOverflowtooltip: true,
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'unit',
 | 
			
		||||
		label: '单位',
 | 
			
		||||
		filter: publicFormatter('unit_dict'),
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'price',
 | 
			
		||||
		label: '单价(元)',
 | 
			
		||||
		align: 'right',
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'workOrderNum',
 | 
			
		||||
		label: '工单数量',
 | 
			
		||||
	},
 | 
			
		||||
];
 | 
			
		||||
export default {
 | 
			
		||||
  name: 'OrderManage',
 | 
			
		||||
  data() {
 | 
			
		||||
    return {
 | 
			
		||||
      formConfig: [
 | 
			
		||||
        {
 | 
			
		||||
          type: 'input',
 | 
			
		||||
          label: '订单名称',
 | 
			
		||||
          placeholder: '订单名称',
 | 
			
		||||
          param: 'name'
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          type: 'select',
 | 
			
		||||
          label: '状态',
 | 
			
		||||
          selectOptions: this.getDictDatas(this.DICT_TYPE.ORDER_STATUS),
 | 
			
		||||
          labelField: 'label',
 | 
			
		||||
          valueField: 'value',
 | 
			
		||||
          param: 'status'
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          type: 'datePicker',
 | 
			
		||||
          label: '时间段',
 | 
			
		||||
          dateType: 'daterange',
 | 
			
		||||
          format: 'yyyy-MM-dd',
 | 
			
		||||
          valueFormat: "yyyy-MM-dd",
 | 
			
		||||
          rangeSeparator: '-',
 | 
			
		||||
          startPlaceholder: '开始时间',
 | 
			
		||||
          endPlaceholder: '结束时间',
 | 
			
		||||
          param: 'timeVal',
 | 
			
		||||
          defaultSelect: [],
 | 
			
		||||
          width: 250
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          type: 'button',
 | 
			
		||||
          btnName: '查询',
 | 
			
		||||
          name: 'search',
 | 
			
		||||
          color: 'primary'
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          type: this.$auth.hasPermi('base:order-manage:create') ? 'separate' : '',
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          type: this.$auth.hasPermi('base:order-manage:create') ? 'button' : '',
 | 
			
		||||
          btnName: '新增',
 | 
			
		||||
          name: 'add',
 | 
			
		||||
          color: 'success',
 | 
			
		||||
          plain: true
 | 
			
		||||
        }
 | 
			
		||||
      ],
 | 
			
		||||
      // 查询参数
 | 
			
		||||
      queryParams: {
 | 
			
		||||
        pageNo: 1,
 | 
			
		||||
        pageSize: 20,
 | 
			
		||||
        name: null,
 | 
			
		||||
        status: null,
 | 
			
		||||
        lastIssuedTime: []
 | 
			
		||||
      },
 | 
			
		||||
      total: 0,
 | 
			
		||||
      tableProps,
 | 
			
		||||
      list: [],
 | 
			
		||||
      tableH: this.tableHeight(260),
 | 
			
		||||
      tableBtn: [
 | 
			
		||||
      this.$auth.hasPermi('base:order-manage:addWorkOrder')
 | 
			
		||||
          ? {
 | 
			
		||||
              type: 'add',
 | 
			
		||||
              btnName: '新增',
 | 
			
		||||
              showTip: '新增工单',
 | 
			
		||||
              showParam: {
 | 
			
		||||
                type: '&',
 | 
			
		||||
                data: [
 | 
			
		||||
                  {
 | 
			
		||||
                    type: 'less',
 | 
			
		||||
                    name: 'status',
 | 
			
		||||
                    value: 3
 | 
			
		||||
                  }
 | 
			
		||||
                ]
 | 
			
		||||
              }
 | 
			
		||||
            }
 | 
			
		||||
          : undefined,
 | 
			
		||||
      this.$auth.hasPermi('base:order-manage:bindWorkOrder')
 | 
			
		||||
          ? {
 | 
			
		||||
              type: 'bind',
 | 
			
		||||
              btnName: '绑定',
 | 
			
		||||
              showTip: '绑定工单',
 | 
			
		||||
              showParam: {
 | 
			
		||||
                type: '&',
 | 
			
		||||
                data: [
 | 
			
		||||
                  {
 | 
			
		||||
                    type: 'less',
 | 
			
		||||
                    name: 'status',
 | 
			
		||||
                    value: 3
 | 
			
		||||
                  }
 | 
			
		||||
                ]
 | 
			
		||||
              }
 | 
			
		||||
            }
 | 
			
		||||
          : undefined,
 | 
			
		||||
      this.$auth.hasPermi('base:order-manage:complete')
 | 
			
		||||
          ? {
 | 
			
		||||
              type: 'complete',
 | 
			
		||||
              btnName: '完成',
 | 
			
		||||
              showTip: '完成订单',
 | 
			
		||||
              showParam: {
 | 
			
		||||
                type: '&',
 | 
			
		||||
                data: [
 | 
			
		||||
                  {
 | 
			
		||||
                    type: 'equal',
 | 
			
		||||
                    name: 'status',
 | 
			
		||||
                    value: 3
 | 
			
		||||
                  }
 | 
			
		||||
                ]
 | 
			
		||||
              }
 | 
			
		||||
            }
 | 
			
		||||
          : undefined,
 | 
			
		||||
      this.$auth.hasPermi('base:order-manage:termination')
 | 
			
		||||
        ? {
 | 
			
		||||
            type: 'termination',
 | 
			
		||||
            btnName: '终止',
 | 
			
		||||
            showTip: '终止',
 | 
			
		||||
            showParam: {
 | 
			
		||||
                type: '&',
 | 
			
		||||
                data: [
 | 
			
		||||
                  {
 | 
			
		||||
                    type: 'equal',
 | 
			
		||||
                    name: 'status',
 | 
			
		||||
                    value: 3
 | 
			
		||||
                  }
 | 
			
		||||
                ]
 | 
			
		||||
              }
 | 
			
		||||
          }
 | 
			
		||||
        : undefined,
 | 
			
		||||
      this.$auth.hasPermi('base:order-manage:cancel')
 | 
			
		||||
        ? {
 | 
			
		||||
            type: 'cancel',
 | 
			
		||||
            btnName: '作废',
 | 
			
		||||
            showTip: '作废',
 | 
			
		||||
            showParam: {
 | 
			
		||||
              type: '&',
 | 
			
		||||
              data: [
 | 
			
		||||
                {
 | 
			
		||||
                  type: 'less',
 | 
			
		||||
                  name: 'status',
 | 
			
		||||
                  value: 2
 | 
			
		||||
                }
 | 
			
		||||
              ]
 | 
			
		||||
            }
 | 
			
		||||
          }
 | 
			
		||||
        : undefined,
 | 
			
		||||
      this.$auth.hasPermi('base:order-manage:detail')
 | 
			
		||||
          ? {
 | 
			
		||||
              type: 'detail',
 | 
			
		||||
              btnName: '详情'
 | 
			
		||||
            }
 | 
			
		||||
          : undefined,
 | 
			
		||||
        this.$auth.hasPermi('base:order-manage:edit')
 | 
			
		||||
          ? {
 | 
			
		||||
              type: 'edit',
 | 
			
		||||
              btnName: '编辑',
 | 
			
		||||
              showParam: {
 | 
			
		||||
                type: '&',
 | 
			
		||||
                data: [
 | 
			
		||||
                  {
 | 
			
		||||
                    type: 'less',
 | 
			
		||||
                    name: 'status',
 | 
			
		||||
                    value: 2
 | 
			
		||||
                  }
 | 
			
		||||
                ]
 | 
			
		||||
              }
 | 
			
		||||
            }
 | 
			
		||||
          : undefined
 | 
			
		||||
      ].filter((v) => v),
 | 
			
		||||
      addOrEditTitle: '',
 | 
			
		||||
      centervisible: false,
 | 
			
		||||
      priorityList: this.getDictDatas(this.DICT_TYPE.ORDER_PRIORITY),
 | 
			
		||||
      workIssueTitle: '',
 | 
			
		||||
      addWorkOrdervisible: false,
 | 
			
		||||
      orderDetailVisible: false
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
  components: { OrderAdd, AddWorkOrder },
 | 
			
		||||
  created() {
 | 
			
		||||
    window.addEventListener('resize', () => {
 | 
			
		||||
      this.tableH = this.tableHeight(260)
 | 
			
		||||
    })
 | 
			
		||||
    this.getList()
 | 
			
		||||
  },
 | 
			
		||||
  methods: {
 | 
			
		||||
    getList() {
 | 
			
		||||
      getOrderPage({...this.queryParams}).then(res => {
 | 
			
		||||
        let arr = res.data.records || []
 | 
			
		||||
        this.total = res.data.total || 0
 | 
			
		||||
        if (arr.length > 0) {
 | 
			
		||||
          customerList().then(result => {
 | 
			
		||||
            let tempData = result.data || []
 | 
			
		||||
            if (tempData.length > 0) {
 | 
			
		||||
              arr.map(item => {
 | 
			
		||||
                for (let i of tempData) {
 | 
			
		||||
                  if (item.customerId === i.id) {
 | 
			
		||||
                    item.customerId = i.name
 | 
			
		||||
                  }
 | 
			
		||||
                }
 | 
			
		||||
                item.price =  item.price ? item.price.toFixed(2) : '0.00'
 | 
			
		||||
              })
 | 
			
		||||
              this.list = arr
 | 
			
		||||
            }
 | 
			
		||||
          })
 | 
			
		||||
        }else {
 | 
			
		||||
          this.list = arr
 | 
			
		||||
        }
 | 
			
		||||
      })
 | 
			
		||||
    },
 | 
			
		||||
    buttonClick(val) {
 | 
			
		||||
      console.log(val)
 | 
			
		||||
      if (val.btnName === 'search') {
 | 
			
		||||
        this.queryParams.name = val.name
 | 
			
		||||
        this.queryParams.status = val.status
 | 
			
		||||
        if (val.timeVal && val.timeVal.length > 0) {
 | 
			
		||||
          this.queryParams.lastIssuedTime[0] = val.timeVal[0] + ' 00:00:00'
 | 
			
		||||
          this.queryParams.lastIssuedTime[1] = val.timeVal[1] + ' 23:59:59'
 | 
			
		||||
        } else {
 | 
			
		||||
          this.queryParams.lastIssuedTime = []
 | 
			
		||||
        }
 | 
			
		||||
        this.getList()
 | 
			
		||||
      } else {
 | 
			
		||||
        this.addOrEditTitle = '新增'
 | 
			
		||||
        this.centervisible = true
 | 
			
		||||
        this.$nextTick(() => {
 | 
			
		||||
          this.$refs.orderAdd.init()
 | 
			
		||||
        })
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    handleClick(val) {
 | 
			
		||||
      console.log(val)
 | 
			
		||||
      switch (val.type) {
 | 
			
		||||
        case 'edit':
 | 
			
		||||
          this.addOrEditTitle = '编辑'
 | 
			
		||||
          this.centervisible = true
 | 
			
		||||
          this.$nextTick(() => {
 | 
			
		||||
            this.$refs.orderAdd.init(val.data.id)
 | 
			
		||||
          })
 | 
			
		||||
          break
 | 
			
		||||
        case 'cancel':
 | 
			
		||||
          this.handleEditStatus(val.data, '作废', '6')
 | 
			
		||||
          break
 | 
			
		||||
        case 'termination':
 | 
			
		||||
          this.handleEditStatus(val.data, '终止', '5')
 | 
			
		||||
          break
 | 
			
		||||
        case 'detail':
 | 
			
		||||
          this.$router.push({path: '/order/base/order-manage/order-detail-data?orderId='+ val.data.id})
 | 
			
		||||
          break
 | 
			
		||||
        case 'add':
 | 
			
		||||
          this.workIssueTitle = '新增工单'
 | 
			
		||||
          this.addWorkOrdervisible = true
 | 
			
		||||
          this.$nextTick(() => {
 | 
			
		||||
            this.$refs.addWorkOrder.init(val.data, 'add')
 | 
			
		||||
          })
 | 
			
		||||
          break
 | 
			
		||||
        case 'bind':
 | 
			
		||||
          this.workIssueTitle = '绑定工单'
 | 
			
		||||
          this.addWorkOrdervisible = true
 | 
			
		||||
          this.$nextTick(() => {
 | 
			
		||||
            this.$refs.addWorkOrder.init(val.data, 'bind')
 | 
			
		||||
          })
 | 
			
		||||
          break
 | 
			
		||||
        case 'complete':
 | 
			
		||||
          this.handleEditStatus(val.data, '完成', '4')
 | 
			
		||||
          break
 | 
			
		||||
        default:
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    // 完成,终止,作废
 | 
			
		||||
    handleEditStatus(val, tip, status) {
 | 
			
		||||
      let _this = this
 | 
			
		||||
      if (val.workOrderNum > 0) {//有下级工单
 | 
			
		||||
        _this.$confirm('是否将"'+tip+'"操作同步至下级工单?','确认信息', {
 | 
			
		||||
          type: 'warning',
 | 
			
		||||
          distinguishCancelAndClose: true,
 | 
			
		||||
          confirmButtonText: '同步',
 | 
			
		||||
          cancelButtonText: '不同步'
 | 
			
		||||
        }).then(function() {
 | 
			
		||||
          console.log('同步')
 | 
			
		||||
          orderStatusSet({ id: val.id, status: status, isSync: true}).then(() => {
 | 
			
		||||
            _this.getList();
 | 
			
		||||
            _this.$modal.msgSuccess("操作成功");
 | 
			
		||||
          })
 | 
			
		||||
        }).catch(action => {
 | 
			
		||||
          if (action === 'cancel') {
 | 
			
		||||
            console.log('不同步')
 | 
			
		||||
            orderStatusSet({ id: val.id, status: status, isSync: false}).then(() => {
 | 
			
		||||
              _this.getList();
 | 
			
		||||
              _this.$modal.msgSuccess("操作成功");
 | 
			
		||||
            })
 | 
			
		||||
          }else {
 | 
			
		||||
            return console.log('关闭')
 | 
			
		||||
          }
 | 
			
		||||
        })
 | 
			
		||||
      }else{// 无下级工单
 | 
			
		||||
        _this.$modal.confirm('是否确认"'+tip+'"厂务订单名称为"' + val.name + '"的数据项?').then(function() {
 | 
			
		||||
          return orderStatusSet({ id: val.id, status: status})
 | 
			
		||||
        }).then(() => {
 | 
			
		||||
          _this.getList();
 | 
			
		||||
          _this.$modal.msgSuccess("操作成功");
 | 
			
		||||
        }).catch(() => {});
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    // 新增
 | 
			
		||||
    handleCancel() {
 | 
			
		||||
      this.$refs.orderAdd.formClear()
 | 
			
		||||
      this.centervisible = false
 | 
			
		||||
      this.addOrEditTitle = ''
 | 
			
		||||
    },
 | 
			
		||||
    handleConfirm() {
 | 
			
		||||
      this.$refs.orderAdd.submitForm()
 | 
			
		||||
    },
 | 
			
		||||
    successSubmit() {
 | 
			
		||||
      this.handleCancel()
 | 
			
		||||
      this.getList()
 | 
			
		||||
    },
 | 
			
		||||
    // 下发新增
 | 
			
		||||
    addWorkOrderCancel() {
 | 
			
		||||
      this.$refs.addWorkOrder.formClear()
 | 
			
		||||
      this.addWorkOrdervisible = false
 | 
			
		||||
    },
 | 
			
		||||
    addWorkOrderConfirm() {
 | 
			
		||||
      this.$refs.addWorkOrder.addWorkOrderSubmit()
 | 
			
		||||
    },
 | 
			
		||||
    addWorkOrderSubmit() {
 | 
			
		||||
      this.addWorkOrderCancel()
 | 
			
		||||
      this.getList()
 | 
			
		||||
    }
 | 
			
		||||
    // bindWorkOrderCancel() {
 | 
			
		||||
    //   this.$refs.bindWorkOrder.formClear()
 | 
			
		||||
    //   this.bindWorkOrdervisible = false
 | 
			
		||||
    // },
 | 
			
		||||
    // bindWorkOrderConfirm() {
 | 
			
		||||
    //   this.$refs.bindWorkOrder.bindWorkOrderSubmit()
 | 
			
		||||
    // },
 | 
			
		||||
    // bindWorkOrderSubmit() {
 | 
			
		||||
    //   this.bindWorkOrderCancel()
 | 
			
		||||
    //   this.getList()
 | 
			
		||||
    // }
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
	name: 'OrderManage',
 | 
			
		||||
	mixins: [tableHeightMixin],
 | 
			
		||||
	data() {
 | 
			
		||||
		return {
 | 
			
		||||
			formConfig: [
 | 
			
		||||
				{
 | 
			
		||||
					type: 'input',
 | 
			
		||||
					label: '订单名称',
 | 
			
		||||
					placeholder: '订单名称',
 | 
			
		||||
					param: 'name',
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					type: 'select',
 | 
			
		||||
					label: '状态',
 | 
			
		||||
					selectOptions: this.getDictDatas(this.DICT_TYPE.ORDER_STATUS),
 | 
			
		||||
					labelField: 'label',
 | 
			
		||||
					valueField: 'value',
 | 
			
		||||
					param: 'status',
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					type: 'datePicker',
 | 
			
		||||
					label: '时间段',
 | 
			
		||||
					dateType: 'daterange',
 | 
			
		||||
					format: 'yyyy-MM-dd',
 | 
			
		||||
					valueFormat: 'yyyy-MM-dd',
 | 
			
		||||
					rangeSeparator: '-',
 | 
			
		||||
					startPlaceholder: '开始时间',
 | 
			
		||||
					endPlaceholder: '结束时间',
 | 
			
		||||
					param: 'timeVal',
 | 
			
		||||
					defaultSelect: [],
 | 
			
		||||
					width: 250,
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					type: 'button',
 | 
			
		||||
					btnName: '查询',
 | 
			
		||||
					name: 'search',
 | 
			
		||||
					color: 'primary',
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					type: this.$auth.hasPermi('base:order-manage:create')
 | 
			
		||||
						? 'separate'
 | 
			
		||||
						: '',
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					type: this.$auth.hasPermi('base:order-manage:create') ? 'button' : '',
 | 
			
		||||
					btnName: '新增',
 | 
			
		||||
					name: 'add',
 | 
			
		||||
					color: 'success',
 | 
			
		||||
					plain: true,
 | 
			
		||||
				},
 | 
			
		||||
			],
 | 
			
		||||
			// 查询参数
 | 
			
		||||
			queryParams: {
 | 
			
		||||
				pageNo: 1,
 | 
			
		||||
				pageSize: 20,
 | 
			
		||||
				name: null,
 | 
			
		||||
				status: null,
 | 
			
		||||
				lastIssuedTime: [],
 | 
			
		||||
			},
 | 
			
		||||
			total: 0,
 | 
			
		||||
			tableProps,
 | 
			
		||||
			list: [],
 | 
			
		||||
			tableBtn: [
 | 
			
		||||
				this.$auth.hasPermi('base:order-manage:addWorkOrder')
 | 
			
		||||
					? {
 | 
			
		||||
							type: 'add',
 | 
			
		||||
							btnName: '新增',
 | 
			
		||||
							showTip: '新增工单',
 | 
			
		||||
							showParam: {
 | 
			
		||||
								type: '&',
 | 
			
		||||
								data: [
 | 
			
		||||
									{
 | 
			
		||||
										type: 'less',
 | 
			
		||||
										name: 'status',
 | 
			
		||||
										value: 3,
 | 
			
		||||
									},
 | 
			
		||||
								],
 | 
			
		||||
							},
 | 
			
		||||
					  }
 | 
			
		||||
					: undefined,
 | 
			
		||||
				this.$auth.hasPermi('base:order-manage:bindWorkOrder')
 | 
			
		||||
					? {
 | 
			
		||||
							type: 'bind',
 | 
			
		||||
							btnName: '绑定',
 | 
			
		||||
							showTip: '绑定工单',
 | 
			
		||||
							showParam: {
 | 
			
		||||
								type: '&',
 | 
			
		||||
								data: [
 | 
			
		||||
									{
 | 
			
		||||
										type: 'less',
 | 
			
		||||
										name: 'status',
 | 
			
		||||
										value: 3,
 | 
			
		||||
									},
 | 
			
		||||
								],
 | 
			
		||||
							},
 | 
			
		||||
					  }
 | 
			
		||||
					: undefined,
 | 
			
		||||
				this.$auth.hasPermi('base:order-manage:complete')
 | 
			
		||||
					? {
 | 
			
		||||
							type: 'complete',
 | 
			
		||||
							btnName: '完成',
 | 
			
		||||
							showTip: '完成订单',
 | 
			
		||||
							showParam: {
 | 
			
		||||
								type: '&',
 | 
			
		||||
								data: [
 | 
			
		||||
									{
 | 
			
		||||
										type: 'equal',
 | 
			
		||||
										name: 'status',
 | 
			
		||||
										value: 3,
 | 
			
		||||
									},
 | 
			
		||||
								],
 | 
			
		||||
							},
 | 
			
		||||
					  }
 | 
			
		||||
					: undefined,
 | 
			
		||||
				this.$auth.hasPermi('base:order-manage:termination')
 | 
			
		||||
					? {
 | 
			
		||||
							type: 'termination',
 | 
			
		||||
							btnName: '终止',
 | 
			
		||||
							showTip: '终止',
 | 
			
		||||
							showParam: {
 | 
			
		||||
								type: '&',
 | 
			
		||||
								data: [
 | 
			
		||||
									{
 | 
			
		||||
										type: 'equal',
 | 
			
		||||
										name: 'status',
 | 
			
		||||
										value: 3,
 | 
			
		||||
									},
 | 
			
		||||
								],
 | 
			
		||||
							},
 | 
			
		||||
					  }
 | 
			
		||||
					: undefined,
 | 
			
		||||
				this.$auth.hasPermi('base:order-manage:cancel')
 | 
			
		||||
					? {
 | 
			
		||||
							type: 'cancel',
 | 
			
		||||
							btnName: '作废',
 | 
			
		||||
							showTip: '作废',
 | 
			
		||||
							showParam: {
 | 
			
		||||
								type: '&',
 | 
			
		||||
								data: [
 | 
			
		||||
									{
 | 
			
		||||
										type: 'less',
 | 
			
		||||
										name: 'status',
 | 
			
		||||
										value: 2,
 | 
			
		||||
									},
 | 
			
		||||
								],
 | 
			
		||||
							},
 | 
			
		||||
					  }
 | 
			
		||||
					: undefined,
 | 
			
		||||
				this.$auth.hasPermi('base:order-manage:detail')
 | 
			
		||||
					? {
 | 
			
		||||
							type: 'detail',
 | 
			
		||||
							btnName: '详情',
 | 
			
		||||
					  }
 | 
			
		||||
					: undefined,
 | 
			
		||||
				this.$auth.hasPermi('base:order-manage:edit')
 | 
			
		||||
					? {
 | 
			
		||||
							type: 'edit',
 | 
			
		||||
							btnName: '编辑',
 | 
			
		||||
							showParam: {
 | 
			
		||||
								type: '&',
 | 
			
		||||
								data: [
 | 
			
		||||
									{
 | 
			
		||||
										type: 'less',
 | 
			
		||||
										name: 'status',
 | 
			
		||||
										value: 2,
 | 
			
		||||
									},
 | 
			
		||||
								],
 | 
			
		||||
							},
 | 
			
		||||
					  }
 | 
			
		||||
					: undefined,
 | 
			
		||||
			].filter((v) => v),
 | 
			
		||||
			addOrEditTitle: '',
 | 
			
		||||
			centervisible: false,
 | 
			
		||||
			priorityList: this.getDictDatas(this.DICT_TYPE.ORDER_PRIORITY),
 | 
			
		||||
			workIssueTitle: '',
 | 
			
		||||
			addWorkOrdervisible: false,
 | 
			
		||||
			orderDetailVisible: false,
 | 
			
		||||
		};
 | 
			
		||||
	},
 | 
			
		||||
	components: { OrderAdd, AddWorkOrder },
 | 
			
		||||
	created() {
 | 
			
		||||
		this.getList();
 | 
			
		||||
	},
 | 
			
		||||
	methods: {
 | 
			
		||||
		getList() {
 | 
			
		||||
			getOrderPage({ ...this.queryParams }).then((res) => {
 | 
			
		||||
				let arr = res.data.records || [];
 | 
			
		||||
				this.total = res.data.total || 0;
 | 
			
		||||
				if (arr.length > 0) {
 | 
			
		||||
					customerList().then((result) => {
 | 
			
		||||
						let tempData = result.data || [];
 | 
			
		||||
						if (tempData.length > 0) {
 | 
			
		||||
							arr.map((item) => {
 | 
			
		||||
								for (let i of tempData) {
 | 
			
		||||
									if (item.customerId === i.id) {
 | 
			
		||||
										item.customerId = i.name;
 | 
			
		||||
									}
 | 
			
		||||
								}
 | 
			
		||||
								item.price = item.price ? item.price.toFixed(2) : '0.00';
 | 
			
		||||
							});
 | 
			
		||||
							this.list = arr;
 | 
			
		||||
						}
 | 
			
		||||
					});
 | 
			
		||||
				} else {
 | 
			
		||||
					this.list = arr;
 | 
			
		||||
				}
 | 
			
		||||
			});
 | 
			
		||||
		},
 | 
			
		||||
		buttonClick(val) {
 | 
			
		||||
			console.log(val);
 | 
			
		||||
			if (val.btnName === 'search') {
 | 
			
		||||
				this.queryParams.name = val.name;
 | 
			
		||||
				this.queryParams.status = val.status;
 | 
			
		||||
				if (val.timeVal && val.timeVal.length > 0) {
 | 
			
		||||
					this.queryParams.lastIssuedTime[0] = val.timeVal[0] + ' 00:00:00';
 | 
			
		||||
					this.queryParams.lastIssuedTime[1] = val.timeVal[1] + ' 23:59:59';
 | 
			
		||||
				} else {
 | 
			
		||||
					this.queryParams.lastIssuedTime = [];
 | 
			
		||||
				}
 | 
			
		||||
				this.getList();
 | 
			
		||||
			} else {
 | 
			
		||||
				this.addOrEditTitle = '新增';
 | 
			
		||||
				this.centervisible = true;
 | 
			
		||||
				this.$nextTick(() => {
 | 
			
		||||
					this.$refs.orderAdd.init();
 | 
			
		||||
				});
 | 
			
		||||
			}
 | 
			
		||||
		},
 | 
			
		||||
		handleClick(val) {
 | 
			
		||||
			console.log(val);
 | 
			
		||||
			switch (val.type) {
 | 
			
		||||
				case 'edit':
 | 
			
		||||
					this.addOrEditTitle = '编辑';
 | 
			
		||||
					this.centervisible = true;
 | 
			
		||||
					this.$nextTick(() => {
 | 
			
		||||
						this.$refs.orderAdd.init(val.data.id);
 | 
			
		||||
					});
 | 
			
		||||
					break;
 | 
			
		||||
				case 'cancel':
 | 
			
		||||
					this.handleEditStatus(val.data, '作废', '6');
 | 
			
		||||
					break;
 | 
			
		||||
				case 'termination':
 | 
			
		||||
					this.handleEditStatus(val.data, '终止', '5');
 | 
			
		||||
					break;
 | 
			
		||||
				case 'detail':
 | 
			
		||||
					this.$router.push({
 | 
			
		||||
						path:
 | 
			
		||||
							'/order/base/order-manage/order-detail-data?orderId=' +
 | 
			
		||||
							val.data.id,
 | 
			
		||||
					});
 | 
			
		||||
					break;
 | 
			
		||||
				case 'add':
 | 
			
		||||
					this.workIssueTitle = '新增工单';
 | 
			
		||||
					this.addWorkOrdervisible = true;
 | 
			
		||||
					this.$nextTick(() => {
 | 
			
		||||
						this.$refs.addWorkOrder.init(val.data, 'add');
 | 
			
		||||
					});
 | 
			
		||||
					break;
 | 
			
		||||
				case 'bind':
 | 
			
		||||
					this.workIssueTitle = '绑定工单';
 | 
			
		||||
					this.addWorkOrdervisible = true;
 | 
			
		||||
					this.$nextTick(() => {
 | 
			
		||||
						this.$refs.addWorkOrder.init(val.data, 'bind');
 | 
			
		||||
					});
 | 
			
		||||
					break;
 | 
			
		||||
				case 'complete':
 | 
			
		||||
					this.handleEditStatus(val.data, '完成', '4');
 | 
			
		||||
					break;
 | 
			
		||||
				default:
 | 
			
		||||
			}
 | 
			
		||||
		},
 | 
			
		||||
		// 完成,终止,作废
 | 
			
		||||
		handleEditStatus(val, tip, status) {
 | 
			
		||||
			let _this = this;
 | 
			
		||||
			if (val.workOrderNum > 0) {
 | 
			
		||||
				//有下级工单
 | 
			
		||||
				_this
 | 
			
		||||
					.$confirm('是否将"' + tip + '"操作同步至下级工单?', '确认信息', {
 | 
			
		||||
						type: 'warning',
 | 
			
		||||
						distinguishCancelAndClose: true,
 | 
			
		||||
						confirmButtonText: '同步',
 | 
			
		||||
						cancelButtonText: '不同步',
 | 
			
		||||
					})
 | 
			
		||||
					.then(function () {
 | 
			
		||||
						console.log('同步');
 | 
			
		||||
						orderStatusSet({ id: val.id, status: status, isSync: true }).then(
 | 
			
		||||
							() => {
 | 
			
		||||
								_this.getList();
 | 
			
		||||
								_this.$modal.msgSuccess('操作成功');
 | 
			
		||||
							}
 | 
			
		||||
						);
 | 
			
		||||
					})
 | 
			
		||||
					.catch((action) => {
 | 
			
		||||
						if (action === 'cancel') {
 | 
			
		||||
							console.log('不同步');
 | 
			
		||||
							orderStatusSet({
 | 
			
		||||
								id: val.id,
 | 
			
		||||
								status: status,
 | 
			
		||||
								isSync: false,
 | 
			
		||||
							}).then(() => {
 | 
			
		||||
								_this.getList();
 | 
			
		||||
								_this.$modal.msgSuccess('操作成功');
 | 
			
		||||
							});
 | 
			
		||||
						} else {
 | 
			
		||||
							return console.log('关闭');
 | 
			
		||||
						}
 | 
			
		||||
					});
 | 
			
		||||
			} else {
 | 
			
		||||
				// 无下级工单
 | 
			
		||||
				_this.$modal
 | 
			
		||||
					.confirm(
 | 
			
		||||
						'是否确认"' + tip + '"厂务订单名称为"' + val.name + '"的数据项?'
 | 
			
		||||
					)
 | 
			
		||||
					.then(function () {
 | 
			
		||||
						return orderStatusSet({ id: val.id, status: status });
 | 
			
		||||
					})
 | 
			
		||||
					.then(() => {
 | 
			
		||||
						_this.getList();
 | 
			
		||||
						_this.$modal.msgSuccess('操作成功');
 | 
			
		||||
					})
 | 
			
		||||
					.catch(() => {});
 | 
			
		||||
			}
 | 
			
		||||
		},
 | 
			
		||||
		// 新增
 | 
			
		||||
		handleCancel() {
 | 
			
		||||
			this.$refs.orderAdd.formClear();
 | 
			
		||||
			this.centervisible = false;
 | 
			
		||||
			this.addOrEditTitle = '';
 | 
			
		||||
		},
 | 
			
		||||
		handleConfirm() {
 | 
			
		||||
			this.$refs.orderAdd.submitForm();
 | 
			
		||||
		},
 | 
			
		||||
		successSubmit() {
 | 
			
		||||
			this.handleCancel();
 | 
			
		||||
			this.getList();
 | 
			
		||||
		},
 | 
			
		||||
		// 下发新增
 | 
			
		||||
		addWorkOrderCancel() {
 | 
			
		||||
			this.$refs.addWorkOrder.formClear();
 | 
			
		||||
			this.addWorkOrdervisible = false;
 | 
			
		||||
		},
 | 
			
		||||
		addWorkOrderConfirm() {
 | 
			
		||||
			this.$refs.addWorkOrder.addWorkOrderSubmit();
 | 
			
		||||
		},
 | 
			
		||||
		addWorkOrderSubmit() {
 | 
			
		||||
			this.addWorkOrderCancel();
 | 
			
		||||
			this.getList();
 | 
			
		||||
		},
 | 
			
		||||
		// bindWorkOrderCancel() {
 | 
			
		||||
		//   this.$refs.bindWorkOrder.formClear()
 | 
			
		||||
		//   this.bindWorkOrdervisible = false
 | 
			
		||||
		// },
 | 
			
		||||
		// bindWorkOrderConfirm() {
 | 
			
		||||
		//   this.$refs.bindWorkOrder.bindWorkOrderSubmit()
 | 
			
		||||
		// },
 | 
			
		||||
		// bindWorkOrderSubmit() {
 | 
			
		||||
		//   this.bindWorkOrderCancel()
 | 
			
		||||
		//   this.getList()
 | 
			
		||||
		// }
 | 
			
		||||
	},
 | 
			
		||||
};
 | 
			
		||||
</script>
 | 
			
		||||
@@ -1,390 +1,427 @@
 | 
			
		||||
<template>
 | 
			
		||||
  <div class="app-container orderMonitoring">
 | 
			
		||||
    <!-- 搜索工作栏 -->
 | 
			
		||||
    <search-bar :formConfigs="formConfig" ref="searchBarForm" @headBtnClick="buttonClick" />
 | 
			
		||||
    <el-tabs v-model="activeName" @tab-click="toggleTab">
 | 
			
		||||
      <el-tab-pane label="数据列表" name="dataList"></el-tab-pane>
 | 
			
		||||
      <el-tab-pane label="环形图" name="barChart"></el-tab-pane>
 | 
			
		||||
    </el-tabs>
 | 
			
		||||
    <!-- 表 -->
 | 
			
		||||
    <div v-if="activeName === 'dataList'">
 | 
			
		||||
      <base-table :page="1" :limit="1000000000000" :table-props="tableProps" :table-data="list" :max-height="tableH"
 | 
			
		||||
        row-key="id" :tree-props="{ children: 'orderMonitorVOS', hasChildren: 'hasChildren' }">
 | 
			
		||||
        <method-btn v-if="tableBtn.length" slot="handleBtn" :width="100" label="操作" :method-list="tableBtn"
 | 
			
		||||
          @clickBtn="handleClick" />
 | 
			
		||||
      </base-table>
 | 
			
		||||
    </div>
 | 
			
		||||
    <!-- 图 -->
 | 
			
		||||
    <monitoring-ring-charts ref='monitoringRingCharts' v-else :chart-list='chartList' />
 | 
			
		||||
    <!-- <pagination
 | 
			
		||||
	<div class="app-container orderMonitoring">
 | 
			
		||||
		<!-- 搜索工作栏 -->
 | 
			
		||||
		<search-bar
 | 
			
		||||
			:formConfigs="formConfig"
 | 
			
		||||
			ref="searchBarForm"
 | 
			
		||||
			@headBtnClick="buttonClick" />
 | 
			
		||||
		<el-tabs
 | 
			
		||||
			v-model="activeName"
 | 
			
		||||
			@tab-click="toggleTab">
 | 
			
		||||
			<el-tab-pane
 | 
			
		||||
				label="数据列表"
 | 
			
		||||
				name="dataList"></el-tab-pane>
 | 
			
		||||
			<el-tab-pane
 | 
			
		||||
				label="环形图"
 | 
			
		||||
				name="barChart"></el-tab-pane>
 | 
			
		||||
		</el-tabs>
 | 
			
		||||
		<!-- 表 -->
 | 
			
		||||
		<div v-if="activeName === 'dataList'">
 | 
			
		||||
			<base-table
 | 
			
		||||
				:page="1"
 | 
			
		||||
				:limit="1000000000000"
 | 
			
		||||
				:table-props="tableProps"
 | 
			
		||||
				:table-data="list"
 | 
			
		||||
				:max-height="tableH"
 | 
			
		||||
				row-key="id"
 | 
			
		||||
				:tree-props="{
 | 
			
		||||
					children: 'orderMonitorVOS',
 | 
			
		||||
					hasChildren: 'hasChildren',
 | 
			
		||||
				}">
 | 
			
		||||
				<method-btn
 | 
			
		||||
					v-if="tableBtn.length"
 | 
			
		||||
					slot="handleBtn"
 | 
			
		||||
					:width="100"
 | 
			
		||||
					label="操作"
 | 
			
		||||
					:method-list="tableBtn"
 | 
			
		||||
					@clickBtn="handleClick" />
 | 
			
		||||
			</base-table>
 | 
			
		||||
		</div>
 | 
			
		||||
		<!-- 图 -->
 | 
			
		||||
		<monitoring-ring-charts
 | 
			
		||||
			ref="monitoringRingCharts"
 | 
			
		||||
			v-else
 | 
			
		||||
			:chart-list="chartList" />
 | 
			
		||||
		<!-- <pagination
 | 
			
		||||
      :page.sync="queryParams.pageNo"
 | 
			
		||||
      :limit.sync="queryParams.pageSize"
 | 
			
		||||
      :total="total"
 | 
			
		||||
      @pagination="getPage"
 | 
			
		||||
    /> -->
 | 
			
		||||
  </div>
 | 
			
		||||
	</div>
 | 
			
		||||
</template>
 | 
			
		||||
<script>
 | 
			
		||||
import { parseTime } from '@/utils/ruoyi'
 | 
			
		||||
import { publicFormatter } from '@/utils/dict'
 | 
			
		||||
import { orderGroupMonitor } from '@/api/base/orderGroup'
 | 
			
		||||
import MonitoringRingCharts from './../components/monitoringRingCharts'
 | 
			
		||||
import moment from "moment"
 | 
			
		||||
import { parseTime } from '@/utils/ruoyi';
 | 
			
		||||
import { publicFormatter } from '@/utils/dict';
 | 
			
		||||
import { orderGroupMonitor } from '@/api/base/orderGroup';
 | 
			
		||||
import MonitoringRingCharts from './../components/monitoringRingCharts';
 | 
			
		||||
import moment from 'moment';
 | 
			
		||||
import tableHeightMixin from '@/mixins/lb/tableHeightMixin';
 | 
			
		||||
const tableProps = [
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'name',
 | 
			
		||||
    label: '订单名称',
 | 
			
		||||
    minWidth: 140,
 | 
			
		||||
    showOverflowtooltip: true
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'orderType',
 | 
			
		||||
    label: '订单类型'
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'customerName',
 | 
			
		||||
    label: '客户'
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'productname',
 | 
			
		||||
    label: '产品',
 | 
			
		||||
    minWidth: 200,
 | 
			
		||||
    showOverflowtooltip: true
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'planStartTime',
 | 
			
		||||
    label: '计划开始时间',
 | 
			
		||||
    filter: parseTime,
 | 
			
		||||
    minWidth: 160
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'planFinishTime',
 | 
			
		||||
    label: '计划完成时间',
 | 
			
		||||
    filter: parseTime,
 | 
			
		||||
    minWidth: 160
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'status',
 | 
			
		||||
    label: '订单状态',
 | 
			
		||||
    filter: publicFormatter('order_status')
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'startProduceTime',
 | 
			
		||||
    label: '实际开始时间',
 | 
			
		||||
    filter: parseTime,
 | 
			
		||||
    minWidth: 160
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'finishProduceTime',
 | 
			
		||||
    label: '实际完成时间',
 | 
			
		||||
    filter: parseTime,
 | 
			
		||||
    minWidth: 160
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'deliveTime',
 | 
			
		||||
    label: '交货时间',
 | 
			
		||||
    filter: parseTime,
 | 
			
		||||
    minWidth: 160
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'lineNames',
 | 
			
		||||
    label: '加工线',
 | 
			
		||||
    filter: (val) => val ? val.join(',') : '',
 | 
			
		||||
    minWidth: 180
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'planQuantity',
 | 
			
		||||
    label: '计划生产量',
 | 
			
		||||
    width: 100
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'actualquantity',
 | 
			
		||||
    label: '实际产出量',
 | 
			
		||||
    width: 100
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'completeRate',
 | 
			
		||||
    label: '订单完成率',
 | 
			
		||||
    width: 100
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'orderNum',
 | 
			
		||||
    label: '关联订单/工单数量',
 | 
			
		||||
    width: 110
 | 
			
		||||
  }
 | 
			
		||||
]
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'name',
 | 
			
		||||
		label: '订单名称',
 | 
			
		||||
		minWidth: 140,
 | 
			
		||||
		showOverflowtooltip: true,
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'orderType',
 | 
			
		||||
		label: '订单类型',
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'customerName',
 | 
			
		||||
		label: '客户',
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'productname',
 | 
			
		||||
		label: '产品',
 | 
			
		||||
		minWidth: 200,
 | 
			
		||||
		showOverflowtooltip: true,
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'planStartTime',
 | 
			
		||||
		label: '计划开始时间',
 | 
			
		||||
		filter: parseTime,
 | 
			
		||||
		minWidth: 160,
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'planFinishTime',
 | 
			
		||||
		label: '计划完成时间',
 | 
			
		||||
		filter: parseTime,
 | 
			
		||||
		minWidth: 160,
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'status',
 | 
			
		||||
		label: '订单状态',
 | 
			
		||||
		filter: publicFormatter('order_status'),
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'startProduceTime',
 | 
			
		||||
		label: '实际开始时间',
 | 
			
		||||
		filter: parseTime,
 | 
			
		||||
		minWidth: 160,
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'finishProduceTime',
 | 
			
		||||
		label: '实际完成时间',
 | 
			
		||||
		filter: parseTime,
 | 
			
		||||
		minWidth: 160,
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'deliveTime',
 | 
			
		||||
		label: '交货时间',
 | 
			
		||||
		filter: parseTime,
 | 
			
		||||
		minWidth: 160,
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'lineNames',
 | 
			
		||||
		label: '加工线',
 | 
			
		||||
		filter: (val) => (val ? val.join(',') : ''),
 | 
			
		||||
		minWidth: 180,
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'planQuantity',
 | 
			
		||||
		label: '计划生产量',
 | 
			
		||||
		width: 100,
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'actualquantity',
 | 
			
		||||
		label: '实际产出量',
 | 
			
		||||
		width: 100,
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'completeRate',
 | 
			
		||||
		label: '订单完成率',
 | 
			
		||||
		width: 100,
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'orderNum',
 | 
			
		||||
		label: '关联订单/工单数量',
 | 
			
		||||
		width: 110,
 | 
			
		||||
	},
 | 
			
		||||
];
 | 
			
		||||
export default {
 | 
			
		||||
  name: 'OrderCompletionMonitoring',
 | 
			
		||||
  data() {
 | 
			
		||||
    return {
 | 
			
		||||
      formConfig: [
 | 
			
		||||
        {
 | 
			
		||||
          type: 'input',
 | 
			
		||||
          label: '集团订单名称',
 | 
			
		||||
          param: 'name'
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          type: 'datePicker',
 | 
			
		||||
          label: '时间段',
 | 
			
		||||
          dateType: 'daterange',
 | 
			
		||||
          format: 'yyyy-MM-dd',
 | 
			
		||||
          valueFormat: "yyyy-MM-dd",
 | 
			
		||||
          rangeSeparator: '-',
 | 
			
		||||
          startPlaceholder: '开始时间',
 | 
			
		||||
          endPlaceholder: '结束时间',
 | 
			
		||||
          param: 'timeVal',
 | 
			
		||||
          defaultSelect: [],
 | 
			
		||||
          width: 250
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          type: 'button',
 | 
			
		||||
          btnName: '查询',
 | 
			
		||||
          name: 'search',
 | 
			
		||||
          color: 'primary'
 | 
			
		||||
        }
 | 
			
		||||
      ],
 | 
			
		||||
      activeName: 'dataList',
 | 
			
		||||
      // 查询参数
 | 
			
		||||
      queryParams: {
 | 
			
		||||
        name: null,
 | 
			
		||||
        deliveTime: []
 | 
			
		||||
      },
 | 
			
		||||
      tableProps,
 | 
			
		||||
      list: [],
 | 
			
		||||
      tableH: this.tableHeight(260),
 | 
			
		||||
      total: 0,
 | 
			
		||||
      tableBtn: [
 | 
			
		||||
        this.$auth.hasPermi('base:order-completion-monitoring:orderDet')
 | 
			
		||||
          ? {
 | 
			
		||||
            type: 'orderDetail',
 | 
			
		||||
            btnName: '详情',
 | 
			
		||||
            showTip: '订单/工单详情',
 | 
			
		||||
            showParam: {
 | 
			
		||||
              type: '&',
 | 
			
		||||
              data: [
 | 
			
		||||
                {
 | 
			
		||||
                  type: 'more',
 | 
			
		||||
                  name: 'orderNum',
 | 
			
		||||
                  value: 1
 | 
			
		||||
                }
 | 
			
		||||
              ]
 | 
			
		||||
            }
 | 
			
		||||
          }
 | 
			
		||||
          : undefined,
 | 
			
		||||
        this.$auth.hasPermi('base:order-completion-monitoring:qualityDet')
 | 
			
		||||
          ? {
 | 
			
		||||
            type: 'qualityDetail',
 | 
			
		||||
            btnName: '质量',
 | 
			
		||||
            showTip: '质量详情',
 | 
			
		||||
            showParam: {
 | 
			
		||||
              type: '&',
 | 
			
		||||
              data: [
 | 
			
		||||
                {
 | 
			
		||||
                  type: 'more',
 | 
			
		||||
                  name: 'orderNum',
 | 
			
		||||
                  value: 1
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                  type: 'unequal',
 | 
			
		||||
                  name: 'woIdString',
 | 
			
		||||
                  value: ''
 | 
			
		||||
                }
 | 
			
		||||
              ]
 | 
			
		||||
            }
 | 
			
		||||
          }
 | 
			
		||||
          : undefined
 | 
			
		||||
        // this.$auth.hasPermi('base:order-completion-monitoring:sendOut')
 | 
			
		||||
        //     ? {
 | 
			
		||||
        //         type: 'sendOutDetail',
 | 
			
		||||
        //         btnName: '发货',
 | 
			
		||||
        //         showTip: '发货详情',
 | 
			
		||||
        //         showParam: {
 | 
			
		||||
        //           type: '&',
 | 
			
		||||
        //           data: [
 | 
			
		||||
        //             {
 | 
			
		||||
        //               type: 'more',
 | 
			
		||||
        //               name: 'workOrderNum',
 | 
			
		||||
        //               value: 1
 | 
			
		||||
        //             }
 | 
			
		||||
        //           ]
 | 
			
		||||
        //         }
 | 
			
		||||
        //       }
 | 
			
		||||
        //     : undefined
 | 
			
		||||
      ].filter((v) => v),
 | 
			
		||||
      chartList: []
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
  components: { MonitoringRingCharts },
 | 
			
		||||
  mounted() {
 | 
			
		||||
    window.addEventListener('resize', () => {
 | 
			
		||||
      this.tableH = this.tableHeight(260)
 | 
			
		||||
    })
 | 
			
		||||
    let start = moment().subtract(30, 'days').format('yyyy-MM-DD')
 | 
			
		||||
    let end = moment().format('yyyy-MM-DD')
 | 
			
		||||
    this.formConfig[1].defaultSelect = [start, end]
 | 
			
		||||
    this.queryParams.deliveTime[0] = start + ' 00:00:00'
 | 
			
		||||
    this.queryParams.deliveTime[1] = end + ' 23:59:59'
 | 
			
		||||
    this.getPage()
 | 
			
		||||
  },
 | 
			
		||||
  methods: {
 | 
			
		||||
    getPage() {
 | 
			
		||||
      orderGroupMonitor({ ...this.queryParams }).then(res => {
 | 
			
		||||
        let arr = res.data || []
 | 
			
		||||
        if (arr.length > 0) {
 | 
			
		||||
          let color = ['#7164FF', '#288AFF', '#63BDFF', '#8EF0AB', '#FFCE6A']
 | 
			
		||||
          let arr2 = []
 | 
			
		||||
          arr.map(item => {
 | 
			
		||||
            item.orderType = '集团订单'//前端写死订单类型
 | 
			
		||||
            let woIdString = ''//集团订单层添加工单str跳转质量用
 | 
			
		||||
            //=========图数据
 | 
			
		||||
            let arr3 = []
 | 
			
		||||
            let obj = {}
 | 
			
		||||
            obj.orderGroupName = item.name
 | 
			
		||||
            obj.id = item.id
 | 
			
		||||
            obj.num = item.planQuantity || 0
 | 
			
		||||
            let sunNum = 0
 | 
			
		||||
            if (item.orderMonitorVOS && item.orderMonitorVOS.length > 0) {
 | 
			
		||||
              for (let i = 0; i < item.orderMonitorVOS.length; i++) {
 | 
			
		||||
                item.orderMonitorVOS[i].orderType = '厂务订单'//前端写死订单类型
 | 
			
		||||
                item.orderMonitorVOS[i].id = item.orderMonitorVOS[i].orderid
 | 
			
		||||
                item.orderMonitorVOS[i].orderNum = item.orderMonitorVOS[i].workOrderNum
 | 
			
		||||
                woIdString += item.orderMonitorVOS[i].woIdString ? item.orderMonitorVOS[i].woIdString : ''
 | 
			
		||||
                //==============图数据
 | 
			
		||||
                let subObj = {}
 | 
			
		||||
                subObj.value = item.orderMonitorVOS[i].actualquantity
 | 
			
		||||
                subObj.name = item.orderMonitorVOS[i].name
 | 
			
		||||
                if (i < 5) {
 | 
			
		||||
                  subObj.color = color[i]
 | 
			
		||||
                } else {
 | 
			
		||||
                  subObj.color = color[i % 5]
 | 
			
		||||
                }
 | 
			
		||||
                sunNum += (item.orderMonitorVOS[i].actualquantity || 0)
 | 
			
		||||
                arr3.push(subObj)
 | 
			
		||||
              }
 | 
			
		||||
            }
 | 
			
		||||
            item.woIdString = woIdString
 | 
			
		||||
            arr3.push({
 | 
			
		||||
              value: item.planQuantity - sunNum > 0 ? item.planQuantity - sunNum : 0,
 | 
			
		||||
              name: '未生产',
 | 
			
		||||
              color: '#F5F5F5'
 | 
			
		||||
            })
 | 
			
		||||
            obj.sunNum = sunNum
 | 
			
		||||
            obj.order = arr3
 | 
			
		||||
            arr2.push(obj)
 | 
			
		||||
          })
 | 
			
		||||
          this.chartList = arr2
 | 
			
		||||
          if (this.activeName === 'barChart' && this.chartList.length > 0) {
 | 
			
		||||
            this.$nextTick(() => {
 | 
			
		||||
              this.$refs.monitoringRingCharts.initChart()
 | 
			
		||||
            })
 | 
			
		||||
          }
 | 
			
		||||
        } else {
 | 
			
		||||
          // 显示无数据的图片
 | 
			
		||||
          this.chartList = []
 | 
			
		||||
        }
 | 
			
		||||
        console.log(arr)
 | 
			
		||||
        this.list = arr
 | 
			
		||||
      })
 | 
			
		||||
    },
 | 
			
		||||
    // 查询
 | 
			
		||||
    buttonClick(val) {
 | 
			
		||||
      this.queryParams.name = val.name
 | 
			
		||||
      if (val.timeVal && val.timeVal.length > 0) {
 | 
			
		||||
        this.queryParams.deliveTime[0] = val.timeVal[0] + ' 00:00:00'
 | 
			
		||||
        this.queryParams.deliveTime[1] = val.timeVal[1] + ' 23:59:59'
 | 
			
		||||
      } else {
 | 
			
		||||
        this.queryParams.deliveTime = []
 | 
			
		||||
      }
 | 
			
		||||
      this.getPage()
 | 
			
		||||
    },
 | 
			
		||||
    handleClick(val) {
 | 
			
		||||
      console.log(val)
 | 
			
		||||
      switch (val.type) {
 | 
			
		||||
        case 'orderDetail':
 | 
			
		||||
          if (val.data.orderType === '集团订单') {
 | 
			
		||||
            this.$router.push({// 去厂务订单详情
 | 
			
		||||
              path: '/order/base/order-manage/order-detail-data?orderIdString=' + val.data.orderIds.join(',')
 | 
			
		||||
            })
 | 
			
		||||
          } else {
 | 
			
		||||
            this.$router.push({// 去工单详情
 | 
			
		||||
              path: '/core/core-work-order-detail?woIdString=' + val.data.woIdString
 | 
			
		||||
            })
 | 
			
		||||
          }
 | 
			
		||||
          break
 | 
			
		||||
        case 'qualityDetail':
 | 
			
		||||
          this.$router.push({
 | 
			
		||||
            path: '/quality/base/quality-inspection-data/detection-information/statistical-data?woIdString=' + val.data.woIdString
 | 
			
		||||
          })
 | 
			
		||||
          break
 | 
			
		||||
        default:
 | 
			
		||||
        // this.$router.push({
 | 
			
		||||
        //   path: '/delivery/delivery-log?orderId='+encodeURI(val.data.name)
 | 
			
		||||
        // })
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    toggleTab() {
 | 
			
		||||
      if (this.activeName === 'barChart' && this.chartList.length > 0) {
 | 
			
		||||
        this.$nextTick(() => {
 | 
			
		||||
          this.$refs.monitoringRingCharts.initChart()
 | 
			
		||||
        })
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
	name: 'OrderCompletionMonitoring',
 | 
			
		||||
	mixins: [tableHeightMixin],
 | 
			
		||||
	data() {
 | 
			
		||||
		return {
 | 
			
		||||
			formConfig: [
 | 
			
		||||
				{
 | 
			
		||||
					type: 'input',
 | 
			
		||||
					label: '集团订单名称',
 | 
			
		||||
					param: 'name',
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					type: 'datePicker',
 | 
			
		||||
					label: '时间段',
 | 
			
		||||
					dateType: 'daterange',
 | 
			
		||||
					format: 'yyyy-MM-dd',
 | 
			
		||||
					valueFormat: 'yyyy-MM-dd',
 | 
			
		||||
					rangeSeparator: '-',
 | 
			
		||||
					startPlaceholder: '开始时间',
 | 
			
		||||
					endPlaceholder: '结束时间',
 | 
			
		||||
					param: 'timeVal',
 | 
			
		||||
					defaultSelect: [],
 | 
			
		||||
					width: 250,
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					type: 'button',
 | 
			
		||||
					btnName: '查询',
 | 
			
		||||
					name: 'search',
 | 
			
		||||
					color: 'primary',
 | 
			
		||||
				},
 | 
			
		||||
			],
 | 
			
		||||
			activeName: 'dataList',
 | 
			
		||||
			// 查询参数
 | 
			
		||||
			queryParams: {
 | 
			
		||||
				name: null,
 | 
			
		||||
				deliveTime: [],
 | 
			
		||||
			},
 | 
			
		||||
			tableProps,
 | 
			
		||||
			list: [],
 | 
			
		||||
			total: 0,
 | 
			
		||||
			tableBtn: [
 | 
			
		||||
				this.$auth.hasPermi('base:order-completion-monitoring:orderDet')
 | 
			
		||||
					? {
 | 
			
		||||
							type: 'orderDetail',
 | 
			
		||||
							btnName: '详情',
 | 
			
		||||
							showTip: '订单/工单详情',
 | 
			
		||||
							showParam: {
 | 
			
		||||
								type: '&',
 | 
			
		||||
								data: [
 | 
			
		||||
									{
 | 
			
		||||
										type: 'more',
 | 
			
		||||
										name: 'orderNum',
 | 
			
		||||
										value: 1,
 | 
			
		||||
									},
 | 
			
		||||
								],
 | 
			
		||||
							},
 | 
			
		||||
					  }
 | 
			
		||||
					: undefined,
 | 
			
		||||
				this.$auth.hasPermi('base:order-completion-monitoring:qualityDet')
 | 
			
		||||
					? {
 | 
			
		||||
							type: 'qualityDetail',
 | 
			
		||||
							btnName: '质量',
 | 
			
		||||
							showTip: '质量详情',
 | 
			
		||||
							showParam: {
 | 
			
		||||
								type: '&',
 | 
			
		||||
								data: [
 | 
			
		||||
									{
 | 
			
		||||
										type: 'more',
 | 
			
		||||
										name: 'orderNum',
 | 
			
		||||
										value: 1,
 | 
			
		||||
									},
 | 
			
		||||
									{
 | 
			
		||||
										type: 'unequal',
 | 
			
		||||
										name: 'woIdString',
 | 
			
		||||
										value: '',
 | 
			
		||||
									},
 | 
			
		||||
								],
 | 
			
		||||
							},
 | 
			
		||||
					  }
 | 
			
		||||
					: undefined,
 | 
			
		||||
				// this.$auth.hasPermi('base:order-completion-monitoring:sendOut')
 | 
			
		||||
				//     ? {
 | 
			
		||||
				//         type: 'sendOutDetail',
 | 
			
		||||
				//         btnName: '发货',
 | 
			
		||||
				//         showTip: '发货详情',
 | 
			
		||||
				//         showParam: {
 | 
			
		||||
				//           type: '&',
 | 
			
		||||
				//           data: [
 | 
			
		||||
				//             {
 | 
			
		||||
				//               type: 'more',
 | 
			
		||||
				//               name: 'workOrderNum',
 | 
			
		||||
				//               value: 1
 | 
			
		||||
				//             }
 | 
			
		||||
				//           ]
 | 
			
		||||
				//         }
 | 
			
		||||
				//       }
 | 
			
		||||
				//     : undefined
 | 
			
		||||
			].filter((v) => v),
 | 
			
		||||
			chartList: [],
 | 
			
		||||
		};
 | 
			
		||||
	},
 | 
			
		||||
	components: { MonitoringRingCharts },
 | 
			
		||||
	mounted() {
 | 
			
		||||
		let start = moment().subtract(30, 'days').format('yyyy-MM-DD');
 | 
			
		||||
		let end = moment().format('yyyy-MM-DD');
 | 
			
		||||
		this.formConfig[1].defaultSelect = [start, end];
 | 
			
		||||
		this.queryParams.deliveTime[0] = start + ' 00:00:00';
 | 
			
		||||
		this.queryParams.deliveTime[1] = end + ' 23:59:59';
 | 
			
		||||
		this.getPage();
 | 
			
		||||
	},
 | 
			
		||||
	methods: {
 | 
			
		||||
		getPage() {
 | 
			
		||||
			orderGroupMonitor({ ...this.queryParams }).then((res) => {
 | 
			
		||||
				let arr = res.data || [];
 | 
			
		||||
				if (arr.length > 0) {
 | 
			
		||||
					let color = ['#7164FF', '#288AFF', '#63BDFF', '#8EF0AB', '#FFCE6A'];
 | 
			
		||||
					let arr2 = [];
 | 
			
		||||
					arr.map((item) => {
 | 
			
		||||
						item.orderType = '集团订单'; //前端写死订单类型
 | 
			
		||||
						let woIdString = ''; //集团订单层添加工单str跳转质量用
 | 
			
		||||
						//=========图数据
 | 
			
		||||
						let arr3 = [];
 | 
			
		||||
						let obj = {};
 | 
			
		||||
						obj.orderGroupName = item.name;
 | 
			
		||||
						obj.id = item.id;
 | 
			
		||||
						obj.num = item.planQuantity || 0;
 | 
			
		||||
						let sunNum = 0;
 | 
			
		||||
						if (item.orderMonitorVOS && item.orderMonitorVOS.length > 0) {
 | 
			
		||||
							for (let i = 0; i < item.orderMonitorVOS.length; i++) {
 | 
			
		||||
								item.orderMonitorVOS[i].orderType = '厂务订单'; //前端写死订单类型
 | 
			
		||||
								item.orderMonitorVOS[i].id = item.orderMonitorVOS[i].orderid;
 | 
			
		||||
								item.orderMonitorVOS[i].orderNum =
 | 
			
		||||
									item.orderMonitorVOS[i].workOrderNum;
 | 
			
		||||
								woIdString += item.orderMonitorVOS[i].woIdString
 | 
			
		||||
									? item.orderMonitorVOS[i].woIdString + ','
 | 
			
		||||
									: '';
 | 
			
		||||
								//==============图数据
 | 
			
		||||
								let subObj = {};
 | 
			
		||||
								subObj.value = item.orderMonitorVOS[i].actualquantity;
 | 
			
		||||
								subObj.name = item.orderMonitorVOS[i].name;
 | 
			
		||||
								if (i < 5) {
 | 
			
		||||
									subObj.color = color[i];
 | 
			
		||||
								} else {
 | 
			
		||||
									subObj.color = color[i % 5];
 | 
			
		||||
								}
 | 
			
		||||
								sunNum += item.orderMonitorVOS[i].actualquantity || 0;
 | 
			
		||||
								arr3.push(subObj);
 | 
			
		||||
							}
 | 
			
		||||
							woIdString = woIdString.slice(0, -1);
 | 
			
		||||
						}
 | 
			
		||||
						item.woIdString = woIdString;
 | 
			
		||||
						arr3.push({
 | 
			
		||||
							value:
 | 
			
		||||
								item.planQuantity - sunNum > 0 ? item.planQuantity - sunNum : 0,
 | 
			
		||||
							name: '未生产',
 | 
			
		||||
							color: '#F5F5F5',
 | 
			
		||||
						});
 | 
			
		||||
						obj.sunNum = sunNum;
 | 
			
		||||
						obj.order = arr3;
 | 
			
		||||
						arr2.push(obj);
 | 
			
		||||
					});
 | 
			
		||||
					this.chartList = arr2;
 | 
			
		||||
					if (this.activeName === 'barChart' && this.chartList.length > 0) {
 | 
			
		||||
						this.$nextTick(() => {
 | 
			
		||||
							this.$refs.monitoringRingCharts.initChart();
 | 
			
		||||
						});
 | 
			
		||||
					}
 | 
			
		||||
				} else {
 | 
			
		||||
					// 显示无数据的图片
 | 
			
		||||
					this.chartList = [];
 | 
			
		||||
				}
 | 
			
		||||
				console.log(arr);
 | 
			
		||||
				this.list = arr;
 | 
			
		||||
			});
 | 
			
		||||
		},
 | 
			
		||||
		// 查询
 | 
			
		||||
		buttonClick(val) {
 | 
			
		||||
			this.queryParams.name = val.name;
 | 
			
		||||
			if (val.timeVal && val.timeVal.length > 0) {
 | 
			
		||||
				this.queryParams.deliveTime[0] = val.timeVal[0] + ' 00:00:00';
 | 
			
		||||
				this.queryParams.deliveTime[1] = val.timeVal[1] + ' 23:59:59';
 | 
			
		||||
			} else {
 | 
			
		||||
				this.queryParams.deliveTime = [];
 | 
			
		||||
			}
 | 
			
		||||
			this.getPage();
 | 
			
		||||
		},
 | 
			
		||||
		handleClick(val) {
 | 
			
		||||
			console.log(val);
 | 
			
		||||
			switch (val.type) {
 | 
			
		||||
				case 'orderDetail':
 | 
			
		||||
					if (val.data.orderType === '集团订单') {
 | 
			
		||||
						this.$router.push({
 | 
			
		||||
							// 去厂务订单详情
 | 
			
		||||
							path:
 | 
			
		||||
								'/order/base/order-manage/order-detail-data?orderIdString=' +
 | 
			
		||||
								val.data.orderIds.join(','),
 | 
			
		||||
						});
 | 
			
		||||
					} else {
 | 
			
		||||
						this.$router.push({
 | 
			
		||||
							// 去工单详情
 | 
			
		||||
							path:
 | 
			
		||||
								'/core/core-work-order-detail?woIdString=' +
 | 
			
		||||
								val.data.woIdString,
 | 
			
		||||
						});
 | 
			
		||||
					}
 | 
			
		||||
					break;
 | 
			
		||||
				case 'qualityDetail':
 | 
			
		||||
					this.$router.push({
 | 
			
		||||
						path:
 | 
			
		||||
							'/quality/base/quality-inspection-data/detection-information/statistical-data?woIdString=' +
 | 
			
		||||
							val.data.woIdString,
 | 
			
		||||
					});
 | 
			
		||||
					break;
 | 
			
		||||
				default:
 | 
			
		||||
				// this.$router.push({
 | 
			
		||||
				//   path: '/delivery/delivery-log?orderId='+encodeURI(val.data.name)
 | 
			
		||||
				// })
 | 
			
		||||
			}
 | 
			
		||||
		},
 | 
			
		||||
		toggleTab() {
 | 
			
		||||
			if (this.activeName === 'barChart' && this.chartList.length > 0) {
 | 
			
		||||
				this.$nextTick(() => {
 | 
			
		||||
					this.$refs.monitoringRingCharts.initChart();
 | 
			
		||||
				});
 | 
			
		||||
			}
 | 
			
		||||
		},
 | 
			
		||||
	},
 | 
			
		||||
};
 | 
			
		||||
</script>
 | 
			
		||||
<style lang='scss'>
 | 
			
		||||
.orderMonitoring {
 | 
			
		||||
  .el-tabs__nav::after {
 | 
			
		||||
    content: "";
 | 
			
		||||
    position: absolute;
 | 
			
		||||
    left: 0;
 | 
			
		||||
    bottom: 0;
 | 
			
		||||
    width: 100%;
 | 
			
		||||
    height: 2px;
 | 
			
		||||
    background-color: #e4e7ed;
 | 
			
		||||
  }
 | 
			
		||||
	.el-tabs__nav::after {
 | 
			
		||||
		content: '';
 | 
			
		||||
		position: absolute;
 | 
			
		||||
		left: 0;
 | 
			
		||||
		bottom: 0;
 | 
			
		||||
		width: 100%;
 | 
			
		||||
		height: 2px;
 | 
			
		||||
		background-color: #e4e7ed;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
  .el-tabs__nav-wrap::after {
 | 
			
		||||
    width: 0;
 | 
			
		||||
  }
 | 
			
		||||
	.el-tabs__nav-wrap::after {
 | 
			
		||||
		width: 0;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
  .el-tabs__item {
 | 
			
		||||
    padding: 0 10px;
 | 
			
		||||
  }
 | 
			
		||||
	.el-tabs__item {
 | 
			
		||||
		padding: 0 10px;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
  .el-tabs__item:hover {
 | 
			
		||||
    color: rgba(0, 0, 0, 0.85);
 | 
			
		||||
  }
 | 
			
		||||
	.el-tabs__item:hover {
 | 
			
		||||
		color: rgba(0, 0, 0, 0.85);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
  .el-tabs__item.is-active {
 | 
			
		||||
    color: rgba(0, 0, 0, 0.85);
 | 
			
		||||
  }
 | 
			
		||||
	.el-tabs__item.is-active {
 | 
			
		||||
		color: rgba(0, 0, 0, 0.85);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
  .el-tabs__item {
 | 
			
		||||
    color: rgba(0, 0, 0, 0.45);
 | 
			
		||||
  }
 | 
			
		||||
	.el-tabs__item {
 | 
			
		||||
		color: rgba(0, 0, 0, 0.45);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
  .searchBarBox {
 | 
			
		||||
    margin-bottom: 0;
 | 
			
		||||
  }
 | 
			
		||||
	.searchBarBox {
 | 
			
		||||
		margin-bottom: 0;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
  .boxTitle {
 | 
			
		||||
    display: inline-block;
 | 
			
		||||
    font-size: 16px;
 | 
			
		||||
    font-weight: 400;
 | 
			
		||||
    color: #000000;
 | 
			
		||||
    margin: 0 10px 16px 0;
 | 
			
		||||
  }
 | 
			
		||||
	.boxTitle {
 | 
			
		||||
		display: inline-block;
 | 
			
		||||
		font-size: 16px;
 | 
			
		||||
		font-weight: 400;
 | 
			
		||||
		color: #000000;
 | 
			
		||||
		margin: 0 10px 16px 0;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
  .blueTitle {
 | 
			
		||||
    content: '';
 | 
			
		||||
    display: inline-block;
 | 
			
		||||
    width: 4px;
 | 
			
		||||
    height: 18px;
 | 
			
		||||
    background-color: #0B58FF;
 | 
			
		||||
    border-radius: 1px;
 | 
			
		||||
    margin-right: 8px;
 | 
			
		||||
    vertical-align: bottom;
 | 
			
		||||
  }
 | 
			
		||||
	.blueTitle {
 | 
			
		||||
		content: '';
 | 
			
		||||
		display: inline-block;
 | 
			
		||||
		width: 4px;
 | 
			
		||||
		height: 18px;
 | 
			
		||||
		background-color: #0b58ff;
 | 
			
		||||
		border-radius: 1px;
 | 
			
		||||
		margin-right: 8px;
 | 
			
		||||
		vertical-align: bottom;
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
</style>
 | 
			
		||||
@@ -54,7 +54,9 @@ export default {
 | 
			
		||||
					param: 'inspectionDetContent',
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					type: 'button',
 | 
			
		||||
          type: this.$auth.hasPermi('base:quality-inspection-box-btn:query')
 | 
			
		||||
            ? 'button'
 | 
			
		||||
            : '',
 | 
			
		||||
					btnName: '查询',
 | 
			
		||||
					name: 'search',
 | 
			
		||||
					color: 'primary',
 | 
			
		||||
 
 | 
			
		||||
@@ -66,7 +66,9 @@ export default {
 | 
			
		||||
          param: 'nickName',
 | 
			
		||||
        },
 | 
			
		||||
				{
 | 
			
		||||
					type: 'button',
 | 
			
		||||
          type: this.$auth.hasPermi('base:quality-inspection-box-permissions:query')
 | 
			
		||||
            ? 'button'
 | 
			
		||||
            : '',
 | 
			
		||||
					btnName: '查询',
 | 
			
		||||
					name: 'search',
 | 
			
		||||
					color: 'primary',
 | 
			
		||||
 
 | 
			
		||||
@@ -135,7 +135,7 @@ export default {
 | 
			
		||||
          width: 250
 | 
			
		||||
        },
 | 
			
		||||
				{
 | 
			
		||||
					type: 'button',
 | 
			
		||||
          type: this.$auth.hasPermi('base:quality-hot-material:query') ? 'button' : '',
 | 
			
		||||
					btnName: '查询',
 | 
			
		||||
					name: 'search',
 | 
			
		||||
					color: 'primary',
 | 
			
		||||
@@ -144,7 +144,7 @@ export default {
 | 
			
		||||
					type: 'separate',
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
          type: this.$auth.hasPermi('base:quality-scrap-det:create') ? 'button' : '',
 | 
			
		||||
          type: this.$auth.hasPermi('base:quality-hot-material:create') ? 'button' : '',
 | 
			
		||||
					btnName: '新增',
 | 
			
		||||
					name: 'add',
 | 
			
		||||
					color: 'success',
 | 
			
		||||
 
 | 
			
		||||
@@ -92,7 +92,9 @@ export default {
 | 
			
		||||
				// 	width: 350,
 | 
			
		||||
				// },
 | 
			
		||||
				{
 | 
			
		||||
					type: 'button',
 | 
			
		||||
          type: this.$auth.hasPermi('base:quality-inspection-det:query')
 | 
			
		||||
            ? 'button'
 | 
			
		||||
            : '',
 | 
			
		||||
					btnName: '查询',
 | 
			
		||||
					name: 'search',
 | 
			
		||||
					color: 'primary',
 | 
			
		||||
 
 | 
			
		||||
@@ -134,7 +134,9 @@ export default {
 | 
			
		||||
					param: 'name',
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					type: 'button',
 | 
			
		||||
          type: this.$auth.hasPermi('base:quality-inspection-type:query')
 | 
			
		||||
            ? 'button'
 | 
			
		||||
            : '',
 | 
			
		||||
					btnName: '查询',
 | 
			
		||||
					name: 'search',
 | 
			
		||||
					color: 'primary',
 | 
			
		||||
 
 | 
			
		||||
@@ -10,7 +10,7 @@
 | 
			
		||||
      <SearchBar :formConfigs="searchBarFormConfig" ref="search-bar" @headBtnClick="handleSearchBarBtnClick" />
 | 
			
		||||
 | 
			
		||||
      <!-- 列表 -->
 | 
			
		||||
      <base-table :table-props="tableProps" :page="1" :limit="10" :table-data="list">
 | 
			
		||||
      <base-table :max-height="tableH" :table-props="tableProps" :page="1" :limit="20" :table-data="list">
 | 
			
		||||
      </base-table>
 | 
			
		||||
    </el-row>
 | 
			
		||||
 | 
			
		||||
@@ -85,6 +85,7 @@ import {
 | 
			
		||||
import moment from 'moment';
 | 
			
		||||
// import DialogForm from './dialogForm.vue';
 | 
			
		||||
import * as echarts from 'echarts';
 | 
			
		||||
import tableHeightMixin from '@/mixins/lb/tableHeightMixin';
 | 
			
		||||
 | 
			
		||||
// import basicPageMixin from '@/mixins/lb/basicPageMixin';
 | 
			
		||||
export default {
 | 
			
		||||
@@ -92,7 +93,7 @@ export default {
 | 
			
		||||
	// components: {
 | 
			
		||||
	// 	DialogForm,
 | 
			
		||||
	// },
 | 
			
		||||
	// mixins: [basicPageMixin],
 | 
			
		||||
  mixins: [tableHeightMixin],
 | 
			
		||||
	data() {
 | 
			
		||||
    return {
 | 
			
		||||
      list: [],
 | 
			
		||||
@@ -130,7 +131,7 @@ export default {
 | 
			
		||||
					// width: 350,
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					type: 'button',
 | 
			
		||||
          type: this.$auth.hasPermi('base:quality-isra-statistics:query') ? 'button' : '',
 | 
			
		||||
					btnName: '查询',
 | 
			
		||||
					name: 'search',
 | 
			
		||||
					color: 'primary',
 | 
			
		||||
@@ -206,15 +207,16 @@ export default {
 | 
			
		||||
      }).then((res) => {
 | 
			
		||||
        let mapArr= []
 | 
			
		||||
        let mapLegendData = []
 | 
			
		||||
        let obj = {
 | 
			
		||||
          name: '',
 | 
			
		||||
          type: 'line',
 | 
			
		||||
          // stack: 'Total',
 | 
			
		||||
          data: [],
 | 
			
		||||
          mapXAxisData: [],
 | 
			
		||||
        }
 | 
			
		||||
        // let mapXAxisData = []
 | 
			
		||||
        for (let i in res.data) {
 | 
			
		||||
          let obj = {
 | 
			
		||||
            name: '',
 | 
			
		||||
            type: 'line',
 | 
			
		||||
            // stack: 'Total',
 | 
			
		||||
            data: [],
 | 
			
		||||
            mapXAxisData:[],
 | 
			
		||||
          }
 | 
			
		||||
 | 
			
		||||
          // console.log(i)
 | 
			
		||||
          let dataArr = []
 | 
			
		||||
          res.data[i].forEach(ele => {
 | 
			
		||||
@@ -226,6 +228,7 @@ export default {
 | 
			
		||||
          mapLegendData.push(i)
 | 
			
		||||
          mapArr.push(obj)
 | 
			
		||||
        }
 | 
			
		||||
        console.log(mapArr);
 | 
			
		||||
        // console.log(res.data[res]);
 | 
			
		||||
        var chartDom = this.activeName === 'day' ? document.getElementById('mapDayMain') : this.activeName === 'week' ? document.getElementById('mapWeekMain') : document.getElementById('mapMonthMain')
 | 
			
		||||
        var myChart = echarts.init(chartDom);
 | 
			
		||||
@@ -266,6 +269,7 @@ export default {
 | 
			
		||||
          },
 | 
			
		||||
          series: mapArr
 | 
			
		||||
        }
 | 
			
		||||
        myChart.clear()
 | 
			
		||||
        option && myChart.setOption(option);
 | 
			
		||||
      })
 | 
			
		||||
      this.$axios({
 | 
			
		||||
@@ -373,6 +377,7 @@ export default {
 | 
			
		||||
            }
 | 
			
		||||
          ]
 | 
			
		||||
        }
 | 
			
		||||
        myChart.clear()
 | 
			
		||||
        option && myChart.setOption(option);
 | 
			
		||||
      })
 | 
			
		||||
    },
 | 
			
		||||
 
 | 
			
		||||
@@ -1,40 +1,18 @@
 | 
			
		||||
<template>
 | 
			
		||||
	<div class="app-container">
 | 
			
		||||
		<search-bar
 | 
			
		||||
			:formConfigs="formConfig"
 | 
			
		||||
			ref="searchBarForm"
 | 
			
		||||
			@headBtnClick="buttonClick" />
 | 
			
		||||
		<base-table
 | 
			
		||||
			v-loading="dataListLoading"
 | 
			
		||||
			:table-props="tableProps"
 | 
			
		||||
			:page="listQuery.pageNo"
 | 
			
		||||
			:limit="listQuery.pageSize"
 | 
			
		||||
			:table-data="tableData">
 | 
			
		||||
			<method-btn
 | 
			
		||||
				v-if="tableBtn.length"
 | 
			
		||||
				slot="handleBtn"
 | 
			
		||||
				:width="120"
 | 
			
		||||
				label="操作"
 | 
			
		||||
				:method-list="tableBtn"
 | 
			
		||||
				@clickBtn="handleClick" />
 | 
			
		||||
		</base-table>
 | 
			
		||||
		<pagination
 | 
			
		||||
			:limit.sync="listQuery.pageSize"
 | 
			
		||||
			:page.sync="listQuery.pageNo"
 | 
			
		||||
			:total="listQuery.total"
 | 
			
		||||
			@pagination="getDataList" />
 | 
			
		||||
		<base-dialog
 | 
			
		||||
			:dialogTitle="addOrEditTitle"
 | 
			
		||||
			:dialogVisible="addOrUpdateVisible"
 | 
			
		||||
			@cancel="handleCancel"
 | 
			
		||||
			@confirm="handleConfirm"
 | 
			
		||||
			:before-close="handleCancel"
 | 
			
		||||
			width="40%">
 | 
			
		||||
			<add-or-update
 | 
			
		||||
				ref="addOrUpdate"
 | 
			
		||||
				@refreshDataList="successSubmit"></add-or-update>
 | 
			
		||||
		</base-dialog>
 | 
			
		||||
	</div>
 | 
			
		||||
  <div class="app-container">
 | 
			
		||||
    <search-bar :formConfigs="formConfig" ref="searchBarForm" @headBtnClick="buttonClick" />
 | 
			
		||||
    <base-table  :max-height="tableH" v-loading="dataListLoading" :table-props="tableProps" :page="listQuery.pageNo"
 | 
			
		||||
      :limit="listQuery.pageSize" :table-data="tableData">
 | 
			
		||||
      <method-btn v-if="tableBtn.length" slot="handleBtn" :width="120" label="操作" :method-list="tableBtn"
 | 
			
		||||
        @clickBtn="handleClick" />
 | 
			
		||||
    </base-table>
 | 
			
		||||
    <pagination :limit.sync="listQuery.pageSize" :page.sync="listQuery.pageNo" :total="listQuery.total"
 | 
			
		||||
      @pagination="getDataList" />
 | 
			
		||||
    <base-dialog :dialogTitle="addOrEditTitle" :dialogVisible="addOrUpdateVisible" @cancel="handleCancel"
 | 
			
		||||
      @confirm="handleConfirm" :before-close="handleCancel" width="40%">
 | 
			
		||||
      <add-or-update ref="addOrUpdate" @refreshDataList="successSubmit"></add-or-update>
 | 
			
		||||
    </base-dialog>
 | 
			
		||||
  </div>
 | 
			
		||||
</template>
 | 
			
		||||
 | 
			
		||||
<script>
 | 
			
		||||
@@ -46,6 +24,7 @@ import {
 | 
			
		||||
  deleteQualityScrapDet,
 | 
			
		||||
} from '@/api/base/qualityScrapDet';
 | 
			
		||||
import { getList, } from "@/api/base/qualityScrapType";
 | 
			
		||||
import tableHeightMixin from '@/mixins/lb/tableHeightMixin';
 | 
			
		||||
const tableProps = [
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'createTime',
 | 
			
		||||
@@ -71,7 +50,7 @@ const tableProps = [
 | 
			
		||||
];
 | 
			
		||||
 | 
			
		||||
export default {
 | 
			
		||||
	mixins: [basicPage],
 | 
			
		||||
  mixins: [basicPage, tableHeightMixin],
 | 
			
		||||
	data() {
 | 
			
		||||
		return {
 | 
			
		||||
			urlOptions: {
 | 
			
		||||
@@ -113,7 +92,7 @@ export default {
 | 
			
		||||
          filterable: true
 | 
			
		||||
        },
 | 
			
		||||
				{
 | 
			
		||||
					type: 'button',
 | 
			
		||||
          type: this.$auth.hasPermi('base:quality-scrap-det:query') ? 'button' : '',
 | 
			
		||||
					btnName: '查询',
 | 
			
		||||
					name: 'search',
 | 
			
		||||
					color: 'primary',
 | 
			
		||||
@@ -177,7 +156,7 @@ export default {
 | 
			
		||||
			switch (val.btnName) {
 | 
			
		||||
				case 'search':
 | 
			
		||||
					this.listQuery.pageNo = 1;
 | 
			
		||||
					this.listQuery.pageSize = 10;
 | 
			
		||||
					this.listQuery.pageSize = 20;
 | 
			
		||||
          this.listQuery.content = val.content ? val.content : undefined;
 | 
			
		||||
          this.listQuery.typeId = val.typeId ? val.typeId : undefined;
 | 
			
		||||
					this.getDataList();
 | 
			
		||||
@@ -185,7 +164,7 @@ export default {
 | 
			
		||||
				case 'reset':
 | 
			
		||||
					this.$refs.searchBarForm.resetForm();
 | 
			
		||||
					this.listQuery = {
 | 
			
		||||
						pageSize: 10,
 | 
			
		||||
						pageSize: 20,
 | 
			
		||||
						pageNo: 1,
 | 
			
		||||
						total: 1,
 | 
			
		||||
					};
 | 
			
		||||
 
 | 
			
		||||
@@ -1,7 +1,7 @@
 | 
			
		||||
<template>
 | 
			
		||||
  <div class="app-container">
 | 
			
		||||
    <search-bar :formConfigs="formConfig" ref="searchBarForm" @headBtnClick="buttonClick" />
 | 
			
		||||
    <base-table v-loading="dataListLoading" :table-props="tableProps" :page="listQuery.pageNo"
 | 
			
		||||
    <base-table :max-height="tableH" v-loading="dataListLoading" :table-props="tableProps" :page="listQuery.pageNo"
 | 
			
		||||
      :limit="listQuery.pageSize" :table-data="tableData">
 | 
			
		||||
      <method-btn v-if="tableBtn.length" slot="handleBtn" :width="120" label="操作" :method-list="tableBtn"
 | 
			
		||||
        @clickBtn="handleClick" />
 | 
			
		||||
@@ -19,7 +19,7 @@
 | 
			
		||||
<script>
 | 
			
		||||
import AddOrUpdate from './add-or-updata';
 | 
			
		||||
import DetailOrUpdate from './detail-or-updata';
 | 
			
		||||
 | 
			
		||||
import tableHeightMixin from '@/mixins/lb/tableHeightMixin';
 | 
			
		||||
import basicPage from './basic-page';
 | 
			
		||||
import { parseTime } from '../../../core/mixins/code-filter';
 | 
			
		||||
import {
 | 
			
		||||
@@ -68,7 +68,7 @@ const tableProps = [
 | 
			
		||||
];
 | 
			
		||||
 | 
			
		||||
export default {
 | 
			
		||||
	mixins: [basicPage],
 | 
			
		||||
  mixins: [basicPage, tableHeightMixin],
 | 
			
		||||
	data() {
 | 
			
		||||
		return {
 | 
			
		||||
			urlOptions: {
 | 
			
		||||
@@ -119,7 +119,7 @@ export default {
 | 
			
		||||
        //   filterable: true
 | 
			
		||||
        // },
 | 
			
		||||
				{
 | 
			
		||||
					type: 'button',
 | 
			
		||||
          type: this.$auth.hasPermi('base:quality-scrap-det:query') ? 'button' : '',
 | 
			
		||||
					btnName: '查询',
 | 
			
		||||
					name: 'search',
 | 
			
		||||
					color: 'primary',
 | 
			
		||||
@@ -214,7 +214,7 @@ export default {
 | 
			
		||||
			switch (val.btnName) {
 | 
			
		||||
				case 'search':
 | 
			
		||||
					this.listQuery.pageNo = 1;
 | 
			
		||||
					this.listQuery.pageSize = 10;
 | 
			
		||||
					this.listQuery.pageSize = 20;
 | 
			
		||||
          this.listQuery.workOrderId = val.workOrderId ? val.workOrderId : undefined;
 | 
			
		||||
          // this.listQuery.teamId = val.teamId ? val.teamId : undefined;
 | 
			
		||||
					this.getDataList();
 | 
			
		||||
@@ -222,7 +222,7 @@ export default {
 | 
			
		||||
				case 'reset':
 | 
			
		||||
					this.$refs.searchBarForm.resetForm();
 | 
			
		||||
					this.listQuery = {
 | 
			
		||||
						pageSize: 10,
 | 
			
		||||
						pageSize: 20,
 | 
			
		||||
						pageNo: 1,
 | 
			
		||||
						total: 1,
 | 
			
		||||
					};
 | 
			
		||||
 
 | 
			
		||||
@@ -1,46 +1,25 @@
 | 
			
		||||
<template>
 | 
			
		||||
	<div class="app-container">
 | 
			
		||||
		<search-bar
 | 
			
		||||
			:formConfigs="formConfig"
 | 
			
		||||
			ref="searchBarForm"
 | 
			
		||||
			@headBtnClick="buttonClick" />
 | 
			
		||||
		<base-table
 | 
			
		||||
			v-loading="dataListLoading"
 | 
			
		||||
			:table-props="tableProps"
 | 
			
		||||
			:page="listQuery.pageNo"
 | 
			
		||||
			:limit="listQuery.pageSize"
 | 
			
		||||
			:table-data="tableData">
 | 
			
		||||
			<method-btn
 | 
			
		||||
				v-if="tableBtn.length"
 | 
			
		||||
				slot="handleBtn"
 | 
			
		||||
				:width="120"
 | 
			
		||||
				label="操作"
 | 
			
		||||
				:method-list="tableBtn"
 | 
			
		||||
				@clickBtn="handleClick" />
 | 
			
		||||
		</base-table>
 | 
			
		||||
		<pagination
 | 
			
		||||
			:limit.sync="listQuery.pageSize"
 | 
			
		||||
			:page.sync="listQuery.pageNo"
 | 
			
		||||
			:total="listQuery.total"
 | 
			
		||||
			@pagination="getDataList" />
 | 
			
		||||
		<base-dialog
 | 
			
		||||
			:dialogTitle="addOrEditTitle"
 | 
			
		||||
			:dialogVisible="addOrUpdateVisible"
 | 
			
		||||
			@cancel="handleCancel"
 | 
			
		||||
			@confirm="handleConfirm"
 | 
			
		||||
			:before-close="handleCancel"
 | 
			
		||||
			width="40%">
 | 
			
		||||
			<add-or-update
 | 
			
		||||
				ref="addOrUpdate"
 | 
			
		||||
				@refreshDataList="successSubmit"></add-or-update>
 | 
			
		||||
		</base-dialog>
 | 
			
		||||
	</div>
 | 
			
		||||
  <div class="app-container">
 | 
			
		||||
    <search-bar :formConfigs="formConfig" ref="searchBarForm" @headBtnClick="buttonClick" />
 | 
			
		||||
    <base-table :max-height="tableH" v-loading="dataListLoading" :table-props="tableProps" :page="listQuery.pageNo"
 | 
			
		||||
      :limit="listQuery.pageSize" :table-data="tableData">
 | 
			
		||||
      <method-btn v-if="tableBtn.length" slot="handleBtn" :width="120" label="操作" :method-list="tableBtn"
 | 
			
		||||
        @clickBtn="handleClick" />
 | 
			
		||||
    </base-table>
 | 
			
		||||
    <pagination :limit.sync="listQuery.pageSize" :page.sync="listQuery.pageNo" :total="listQuery.total"
 | 
			
		||||
      @pagination="getDataList" />
 | 
			
		||||
    <base-dialog :dialogTitle="addOrEditTitle" :dialogVisible="addOrUpdateVisible" @cancel="handleCancel"
 | 
			
		||||
      @confirm="handleConfirm" :before-close="handleCancel" width="40%">
 | 
			
		||||
      <add-or-update ref="addOrUpdate" @refreshDataList="successSubmit"></add-or-update>
 | 
			
		||||
    </base-dialog>
 | 
			
		||||
  </div>
 | 
			
		||||
</template>
 | 
			
		||||
 | 
			
		||||
<script>
 | 
			
		||||
import AddOrUpdate from './add-or-updata';
 | 
			
		||||
import basicPage from '../../../core/mixins/basic-page';
 | 
			
		||||
import { parseTime } from '../../../core/mixins/code-filter';
 | 
			
		||||
import tableHeightMixin from '@/mixins/lb/tableHeightMixin';
 | 
			
		||||
import {
 | 
			
		||||
  getQualityScrapTypePage,
 | 
			
		||||
  deleteQualityScrapType
 | 
			
		||||
@@ -71,7 +50,7 @@ const tableProps = [
 | 
			
		||||
];
 | 
			
		||||
 | 
			
		||||
export default {
 | 
			
		||||
	mixins: [basicPage],
 | 
			
		||||
  mixins: [basicPage, tableHeightMixin],
 | 
			
		||||
	data() {
 | 
			
		||||
		return {
 | 
			
		||||
			urlOptions: {
 | 
			
		||||
@@ -103,7 +82,7 @@ export default {
 | 
			
		||||
					param: 'name',
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					type: 'button',
 | 
			
		||||
          type: this.$auth.hasPermi('base:quality-scrap-type:query') ? 'button' : '',
 | 
			
		||||
					btnName: '查询',
 | 
			
		||||
					name: 'search',
 | 
			
		||||
					color: 'primary',
 | 
			
		||||
@@ -159,14 +138,14 @@ export default {
 | 
			
		||||
			switch (val.btnName) {
 | 
			
		||||
				case 'search':
 | 
			
		||||
					this.listQuery.pageNo = 1;
 | 
			
		||||
					this.listQuery.pageSize = 10;
 | 
			
		||||
					this.listQuery.pageSize = 20;
 | 
			
		||||
					this.listQuery.name = val.name ? val.name : undefined;
 | 
			
		||||
					this.getDataList();
 | 
			
		||||
					break;
 | 
			
		||||
				case 'reset':
 | 
			
		||||
					this.$refs.searchBarForm.resetForm();
 | 
			
		||||
					this.listQuery = {
 | 
			
		||||
						pageSize: 10,
 | 
			
		||||
						pageSize: 20,
 | 
			
		||||
						pageNo: 1,
 | 
			
		||||
						total: 1,
 | 
			
		||||
					};
 | 
			
		||||
 
 | 
			
		||||
@@ -8,7 +8,8 @@
 | 
			
		||||
          <el-tab-pane :label="'\u2002表格数据\u2002'" name="table">
 | 
			
		||||
            <!-- 列表 -->
 | 
			
		||||
            <div class="blue-title">产品名:{{ productDetail.name }} 产品规格:{{ productDetail.specifications }}</div>
 | 
			
		||||
            <base-table class="base-table__margin" :table-props="productProps" :page="1" :limit="10" :table-data="list">
 | 
			
		||||
            <base-table :max-height="tableH" class="base-table__margin" :table-props="productProps" :page="1"
 | 
			
		||||
              :limit="10" :table-data="list">
 | 
			
		||||
            </base-table>
 | 
			
		||||
            <div v-for="(item,index) in downProps" :key="index">
 | 
			
		||||
              <div class="blue-title">工单名称:{{ list[index].workOrderName }}</div>
 | 
			
		||||
@@ -51,6 +52,7 @@ import {
 | 
			
		||||
  getProductList,
 | 
			
		||||
  getWorkOrderList
 | 
			
		||||
} from '@/api/monitoring/statisticalData';
 | 
			
		||||
import tableHeightMixin from '@/mixins/lb/tableHeightMixin';
 | 
			
		||||
// import Editor from '@/components/Editor';
 | 
			
		||||
import moment from 'moment';
 | 
			
		||||
// import DialogForm from './dialogForm.vue';
 | 
			
		||||
@@ -61,7 +63,7 @@ export default {
 | 
			
		||||
	// components: {
 | 
			
		||||
	// 	DialogForm,
 | 
			
		||||
	// },
 | 
			
		||||
	// mixins: [basicPageMixin],
 | 
			
		||||
  mixins: [tableHeightMixin],
 | 
			
		||||
	data() {
 | 
			
		||||
    return {
 | 
			
		||||
      list: [],
 | 
			
		||||
 
 | 
			
		||||
@@ -218,7 +218,11 @@ export default {
 | 
			
		||||
          width: 350,
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          type: 'button',
 | 
			
		||||
            type: this.$auth.hasPermi(
 | 
			
		||||
              'monitoring:device-parameters:query'
 | 
			
		||||
            )
 | 
			
		||||
            ? 'button'
 | 
			
		||||
            : '',
 | 
			
		||||
          btnName: '查询',
 | 
			
		||||
          name: 'search',
 | 
			
		||||
          color: 'primary',
 | 
			
		||||
 
 | 
			
		||||
@@ -260,17 +260,24 @@ export default {
 | 
			
		||||
				// 	],
 | 
			
		||||
				// },
 | 
			
		||||
				{
 | 
			
		||||
					type: 'button',
 | 
			
		||||
          type: this.$auth.hasPermi(
 | 
			
		||||
            'monitoring:equipment-traceability:query'
 | 
			
		||||
          )
 | 
			
		||||
            ? 'button'
 | 
			
		||||
            : '',
 | 
			
		||||
					btnName: '查询',
 | 
			
		||||
					name: 'search',
 | 
			
		||||
					color: 'primary',
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
        	type: 'button',
 | 
			
		||||
          type: this.$auth.hasPermi(
 | 
			
		||||
            'monitoring:equipment-traceability:export'
 | 
			
		||||
          )
 | 
			
		||||
            ? 'button'
 | 
			
		||||
            : '',
 | 
			
		||||
        	btnName: '导出',
 | 
			
		||||
        	name: 'export',
 | 
			
		||||
        	color: 'warning',
 | 
			
		||||
 | 
			
		||||
        },
 | 
			
		||||
				// {
 | 
			
		||||
				// 	type: 'separate',
 | 
			
		||||
 
 | 
			
		||||
@@ -2,7 +2,7 @@
 | 
			
		||||
 * @Author: zwq
 | 
			
		||||
 * @Date: 2023-08-01 14:55:51
 | 
			
		||||
 * @LastEditors: zhp
 | 
			
		||||
 * @LastEditTime: 2024-03-29 14:08:18
 | 
			
		||||
 * @LastEditTime: 2024-04-07 16:19:18
 | 
			
		||||
 * @Description:
 | 
			
		||||
-->
 | 
			
		||||
<template>
 | 
			
		||||
@@ -84,21 +84,21 @@ export default {
 | 
			
		||||
      // },
 | 
			
		||||
      tableProps,
 | 
			
		||||
      // tableH: this.tableHeight(260),
 | 
			
		||||
      tableBtn: [
 | 
			
		||||
        this.$auth.hasPermi(`base:packaging-print-log:update`)
 | 
			
		||||
          ? {
 | 
			
		||||
            type: 'edit',
 | 
			
		||||
            btnName: '编辑',
 | 
			
		||||
          }
 | 
			
		||||
          : undefined,
 | 
			
		||||
        this.$auth.hasPermi(`base:packaging-print-log:delete`)
 | 
			
		||||
          ? {
 | 
			
		||||
            type: 'delete',
 | 
			
		||||
            btnName: '删除',
 | 
			
		||||
          }
 | 
			
		||||
          : undefined,
 | 
			
		||||
      // tableBtn: [
 | 
			
		||||
      //   this.$auth.hasPermi(`base:packaging-print-log:update`)
 | 
			
		||||
      //     ? {
 | 
			
		||||
      //       type: 'edit',
 | 
			
		||||
      //       btnName: '编辑',
 | 
			
		||||
      //     }
 | 
			
		||||
      //     : undefined,
 | 
			
		||||
      //   this.$auth.hasPermi(`base:packaging-print-log:delete`)
 | 
			
		||||
      //     ? {
 | 
			
		||||
      //       type: 'delete',
 | 
			
		||||
      //       btnName: '删除',
 | 
			
		||||
      //     }
 | 
			
		||||
      //     : undefined,
 | 
			
		||||
 | 
			
		||||
      ].filter((v) => v),
 | 
			
		||||
      // ].filter((v) => v),
 | 
			
		||||
      list: [],
 | 
			
		||||
      listQuery: {
 | 
			
		||||
        pageSize: 10,
 | 
			
		||||
@@ -131,7 +131,7 @@ export default {
 | 
			
		||||
          width: 250
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          type: 'button',
 | 
			
		||||
          type: this.$auth.hasPermi('monitoring:materiel-date-from:query') ? 'button' : '',
 | 
			
		||||
          btnName: '查询',
 | 
			
		||||
          name: 'search',
 | 
			
		||||
          color: 'primary',
 | 
			
		||||
 
 | 
			
		||||
@@ -2,7 +2,7 @@
 | 
			
		||||
 * @Author: zwq
 | 
			
		||||
 * @Date: 2023-08-01 14:55:51
 | 
			
		||||
 * @LastEditors: zhp
 | 
			
		||||
 * @LastEditTime: 2024-03-29 14:08:30
 | 
			
		||||
 * @LastEditTime: 2024-04-07 16:25:19
 | 
			
		||||
 * @Description:
 | 
			
		||||
-->
 | 
			
		||||
<template>
 | 
			
		||||
@@ -147,7 +147,8 @@ export default {
 | 
			
		||||
        //   width: 250
 | 
			
		||||
        // },
 | 
			
		||||
        {
 | 
			
		||||
          type: 'button',
 | 
			
		||||
 | 
			
		||||
          type: this.$auth.hasPermi('monitoring:rawMaterial-traceability:query') ? 'button' : '',
 | 
			
		||||
          btnName: '查询',
 | 
			
		||||
          name: 'search',
 | 
			
		||||
          color: 'primary',
 | 
			
		||||
 
 | 
			
		||||
@@ -2,7 +2,7 @@
 | 
			
		||||
 * @Author: zwq
 | 
			
		||||
 * @Date: 2023-08-01 14:55:51
 | 
			
		||||
 * @LastEditors: zhp
 | 
			
		||||
 * @LastEditTime: 2024-03-29 15:32:33
 | 
			
		||||
 * @LastEditTime: 2024-04-07 16:26:56
 | 
			
		||||
 * @Description:
 | 
			
		||||
-->
 | 
			
		||||
<template>
 | 
			
		||||
@@ -135,7 +135,12 @@ export default {
 | 
			
		||||
          width: 250
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          type: 'button',
 | 
			
		||||
 | 
			
		||||
       	 type: this.$auth.hasPermi(
 | 
			
		||||
            'monitoring:process-traceability:query'
 | 
			
		||||
          )
 | 
			
		||||
            ? 'button'
 | 
			
		||||
            : '',
 | 
			
		||||
          btnName: '查询',
 | 
			
		||||
          name: 'search',
 | 
			
		||||
          color: 'primary',
 | 
			
		||||
 
 | 
			
		||||
@@ -1,47 +1,26 @@
 | 
			
		||||
<template>
 | 
			
		||||
	<div class="app-container">
 | 
			
		||||
		<!-- 搜索工作栏 -->
 | 
			
		||||
		<SearchBar
 | 
			
		||||
			:formConfigs="searchBarFormConfig"
 | 
			
		||||
			ref="search-bar"
 | 
			
		||||
			@headBtnClick="handleSearchBarBtnClick" />
 | 
			
		||||
  <div class="app-container">
 | 
			
		||||
    <!-- 搜索工作栏 -->
 | 
			
		||||
    <SearchBar :isFold="true" :formConfigs="searchBarFormConfig" ref="search-bar"
 | 
			
		||||
      @headBtnClick="handleSearchBarBtnClick" />
 | 
			
		||||
 | 
			
		||||
		<!-- 列表 -->
 | 
			
		||||
		<base-table
 | 
			
		||||
			:table-props="tableProps"
 | 
			
		||||
			:page="queryParams.pageNo"
 | 
			
		||||
			:limit="queryParams.pageSize"
 | 
			
		||||
			:table-data="list"
 | 
			
		||||
			@emitFun="handleEmitFun">
 | 
			
		||||
			<method-btn
 | 
			
		||||
				v-if="tableBtn.length"
 | 
			
		||||
				slot="handleBtn"
 | 
			
		||||
				label="操作"
 | 
			
		||||
				:width="120"
 | 
			
		||||
				fixed="right"
 | 
			
		||||
				:method-list="tableBtn"
 | 
			
		||||
				@clickBtn="handleTableBtnClick" />
 | 
			
		||||
		</base-table>
 | 
			
		||||
    <!-- 列表 -->
 | 
			
		||||
    <base-table :table-props="tableProps" :page="queryParams.pageNo" :limit="queryParams.pageSize" :table-data="list"
 | 
			
		||||
      @emitFun="handleEmitFun">
 | 
			
		||||
      <method-btn v-if="tableBtn.length" slot="handleBtn" label="操作" :width="120" fixed="right" :method-list="tableBtn"
 | 
			
		||||
        @clickBtn="handleTableBtnClick" />
 | 
			
		||||
    </base-table>
 | 
			
		||||
 | 
			
		||||
		<!-- 分页组件 -->
 | 
			
		||||
		<pagination
 | 
			
		||||
			v-show="total > 0"
 | 
			
		||||
			:total="total"
 | 
			
		||||
			:page.sync="queryParams.pageNo"
 | 
			
		||||
			:limit.sync="queryParams.pageSize"
 | 
			
		||||
			@pagination="getList" />
 | 
			
		||||
    <!-- 分页组件 -->
 | 
			
		||||
    <pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNo" :limit.sync="queryParams.pageSize"
 | 
			
		||||
      @pagination="getList" />
 | 
			
		||||
 | 
			
		||||
		<!-- 对话框(添加 / 修改) -->
 | 
			
		||||
		<base-dialog
 | 
			
		||||
			:dialogTitle="title"
 | 
			
		||||
			:dialogVisible="open"
 | 
			
		||||
			width="50%"
 | 
			
		||||
			@close="cancel"
 | 
			
		||||
			@cancel="cancel"
 | 
			
		||||
			@confirm="submitForm">
 | 
			
		||||
			<DialogForm v-if="open" ref="form" v-model="form" />
 | 
			
		||||
		</base-dialog>
 | 
			
		||||
	</div>
 | 
			
		||||
    <!-- 对话框(添加 / 修改) -->
 | 
			
		||||
    <base-dialog :dialogTitle="title" :dialogVisible="open" width="50%" @close="cancel" @cancel="cancel"
 | 
			
		||||
      @confirm="submitForm">
 | 
			
		||||
      <DialogForm v-if="open" ref="form" v-model="form" />
 | 
			
		||||
    </base-dialog>
 | 
			
		||||
  </div>
 | 
			
		||||
</template>
 | 
			
		||||
 | 
			
		||||
<script>
 | 
			
		||||
@@ -180,7 +159,11 @@ export default {
 | 
			
		||||
					// width: 350,
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					type: 'button',
 | 
			
		||||
          type: this.$auth.hasPermi(
 | 
			
		||||
            'base:quality-inspection-record:query'
 | 
			
		||||
          )
 | 
			
		||||
            ? 'button'
 | 
			
		||||
            : '',
 | 
			
		||||
					btnName: '查询',
 | 
			
		||||
					name: 'search',
 | 
			
		||||
					color: 'primary',
 | 
			
		||||
 
 | 
			
		||||
@@ -1,18 +1,12 @@
 | 
			
		||||
<template>
 | 
			
		||||
	<div class="app-container">
 | 
			
		||||
		<!-- 搜索工作栏 -->
 | 
			
		||||
		<SearchBar
 | 
			
		||||
			:formConfigs="searchBarFormConfig"
 | 
			
		||||
			ref="search-bar"
 | 
			
		||||
			@headBtnClick="handleSearchBarBtnClick" />
 | 
			
		||||
  <div class="app-container">
 | 
			
		||||
    <!-- 搜索工作栏 -->
 | 
			
		||||
    <SearchBar  :formConfigs="searchBarFormConfig" ref="search-bar"
 | 
			
		||||
      @headBtnClick="handleSearchBarBtnClick" />
 | 
			
		||||
 | 
			
		||||
		<!-- 列表 -->
 | 
			
		||||
		<base-table
 | 
			
		||||
			:table-props="tableProps"
 | 
			
		||||
			:page="1"
 | 
			
		||||
			:limit="10"
 | 
			
		||||
			:table-data="list">
 | 
			
		||||
			<!-- <method-btn
 | 
			
		||||
    <!-- 列表 -->
 | 
			
		||||
    <base-table :max-height="tableH" :table-props="tableProps" :page="1" :limit="10" :table-data="list">
 | 
			
		||||
      <!-- <method-btn
 | 
			
		||||
				v-if="tableBtn.length"
 | 
			
		||||
				slot="handleBtn"
 | 
			
		||||
				label="操作"
 | 
			
		||||
@@ -20,18 +14,18 @@
 | 
			
		||||
				fixed="right"
 | 
			
		||||
				:method-list="tableBtn"
 | 
			
		||||
				@clickBtn="handleTableBtnClick" /> -->
 | 
			
		||||
		</base-table>
 | 
			
		||||
    </base-table>
 | 
			
		||||
 | 
			
		||||
		<!-- 分页组件 -->
 | 
			
		||||
		<!-- <pagination
 | 
			
		||||
    <!-- 分页组件 -->
 | 
			
		||||
    <!-- <pagination
 | 
			
		||||
			v-show="total > 0"
 | 
			
		||||
			:total="total"
 | 
			
		||||
			:page.sync="queryParams.pageNo"
 | 
			
		||||
			:limit.sync="queryParams.pageSize"
 | 
			
		||||
			@pagination="getList" /> -->
 | 
			
		||||
 | 
			
		||||
		<!-- 对话框(添加 / 修改) -->
 | 
			
		||||
		<!-- <base-dialog
 | 
			
		||||
    <!-- 对话框(添加 / 修改) -->
 | 
			
		||||
    <!-- <base-dialog
 | 
			
		||||
			:dialogTitle="title"
 | 
			
		||||
			:dialogVisible="open"
 | 
			
		||||
			width="50%"
 | 
			
		||||
@@ -40,7 +34,7 @@
 | 
			
		||||
			@confirm="submitForm">
 | 
			
		||||
			<DialogForm v-if="open" ref="form" v-model="form" />
 | 
			
		||||
		</base-dialog> -->
 | 
			
		||||
	</div>
 | 
			
		||||
  </div>
 | 
			
		||||
</template>
 | 
			
		||||
 | 
			
		||||
<script>
 | 
			
		||||
@@ -51,6 +45,7 @@ import {
 | 
			
		||||
} from '@/api/monitoring/statisticalData';
 | 
			
		||||
// import Editor from '@/components/Editor';
 | 
			
		||||
import moment from 'moment';
 | 
			
		||||
import tableHeightMixin from '@/mixins/lb/tableHeightMixin';
 | 
			
		||||
// import DialogForm from './dialogForm.vue';
 | 
			
		||||
 | 
			
		||||
// import basicPageMixin from '@/mixins/lb/basicPageMixin';
 | 
			
		||||
@@ -59,7 +54,7 @@ export default {
 | 
			
		||||
	// components: {
 | 
			
		||||
	// 	DialogForm,
 | 
			
		||||
	// },
 | 
			
		||||
	// mixins: [basicPageMixin],
 | 
			
		||||
  mixins: [tableHeightMixin],
 | 
			
		||||
	data() {
 | 
			
		||||
    return {
 | 
			
		||||
      list: [],
 | 
			
		||||
@@ -111,7 +106,13 @@ export default {
 | 
			
		||||
					btnName: '查询',
 | 
			
		||||
					name: 'search',
 | 
			
		||||
					color: 'primary',
 | 
			
		||||
				},
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          type: 'button',
 | 
			
		||||
          btnName: '返回',
 | 
			
		||||
          name: 'back',
 | 
			
		||||
          color: 'primary',
 | 
			
		||||
        },
 | 
			
		||||
				// {
 | 
			
		||||
				// 	type: this.$auth.hasPermi(
 | 
			
		||||
				// 		'base:quality-inspection-record:create'
 | 
			
		||||
@@ -373,8 +374,9 @@ export default {
 | 
			
		||||
        this.queryParams.productionId = val.productionId ? val.productionId : undefined
 | 
			
		||||
        this.queryParams.startTime = val.checkTime ? val.checkTime[0] : undefined
 | 
			
		||||
        this.queryParams.endTime = val.checkTime ? val.checkTime[1] : undefined
 | 
			
		||||
 | 
			
		||||
        this.getList()
 | 
			
		||||
      } else if (val.btnName === 'back') {
 | 
			
		||||
        this.$router.go(-1)
 | 
			
		||||
      }
 | 
			
		||||
    //  console.log(val);
 | 
			
		||||
    }
 | 
			
		||||
 
 | 
			
		||||
@@ -1,7 +1,7 @@
 | 
			
		||||
<!--
 | 
			
		||||
 * @Author: zhp
 | 
			
		||||
 * @Date: 2024-01-24 15:15:24
 | 
			
		||||
 * @LastEditTime: 2024-03-27 09:27:23
 | 
			
		||||
 * @LastEditTime: 2024-04-08 11:47:39
 | 
			
		||||
 * @LastEditors: zhp
 | 
			
		||||
 * @Description:
 | 
			
		||||
-->
 | 
			
		||||
@@ -18,8 +18,8 @@
 | 
			
		||||
        <el-form-item>
 | 
			
		||||
          <el-button v-if="this.$auth.hasPermi('base:report-auto-original-glass:query')" type="primary" size="small"
 | 
			
		||||
            @click="getDataList">查询</el-button>
 | 
			
		||||
          <el-button v-if="this.$auth.hasPermi('report:glass-day:export')" type="primary" size="small" plain
 | 
			
		||||
            @click="handleExport">导出</el-button>
 | 
			
		||||
          <el-button v-if="this.$auth.hasPermi('base:report-auto-original-glass:export')" type="primary" size="small"
 | 
			
		||||
            plain @click="handleExport">导出</el-button>
 | 
			
		||||
        </el-form-item>
 | 
			
		||||
      </el-form>
 | 
			
		||||
    </div>
 | 
			
		||||
 
 | 
			
		||||
@@ -9,8 +9,8 @@
 | 
			
		||||
        <el-form-item>
 | 
			
		||||
          <el-button v-if="this.$auth.hasPermi('base:report-auto-original-glass:query')" type="primary" size="small"
 | 
			
		||||
            @click="getDataList">查询</el-button>
 | 
			
		||||
          <el-button v-if="this.$auth.hasPermi('report:glass-month:export')" type="primary" size="small" plain
 | 
			
		||||
            @click="handleExport">导出</el-button>
 | 
			
		||||
          <el-button v-if="this.$auth.hasPermi('base:report-auto-original-glass:export')" type="primary" size="small"
 | 
			
		||||
            plain @click="handleExport">导出</el-button>
 | 
			
		||||
        </el-form-item>
 | 
			
		||||
      </el-form>
 | 
			
		||||
    </div>
 | 
			
		||||
 
 | 
			
		||||
@@ -16,8 +16,8 @@
 | 
			
		||||
        <el-form-item>
 | 
			
		||||
          <el-button v-if="this.$auth.hasPermi('base:report-auto-original-glass:query')" type="primary" size="small"
 | 
			
		||||
            @click="getDataList">查询</el-button>
 | 
			
		||||
          <el-button v-if="this.$auth.hasPermi('report:glass-weekly:export')" type="primary" size="small" plain
 | 
			
		||||
            @click="handleExport">导出</el-button>
 | 
			
		||||
          <el-button v-if="this.$auth.hasPermi('base:report-auto-original-glass:export')" type="primary" size="small"
 | 
			
		||||
            plain @click="handleExport">导出</el-button>
 | 
			
		||||
        </el-form-item>
 | 
			
		||||
      </el-form>
 | 
			
		||||
    </div>
 | 
			
		||||
 
 | 
			
		||||
@@ -11,8 +11,8 @@
 | 
			
		||||
        <el-form-item>
 | 
			
		||||
          <el-button v-if="this.$auth.hasPermi('base:report-auto-original-glass:query')" type="primary" size="small"
 | 
			
		||||
            @click="getDataList">查询</el-button>
 | 
			
		||||
          <el-button v-if="this.$auth.hasPermi('report:glass-year:export')" type="primary" size="small" plain
 | 
			
		||||
            @click="handleExport">导出</el-button>
 | 
			
		||||
          <el-button v-if="this.$auth.hasPermi('base:report-auto-original-glass:export')" type="primary" size="small"
 | 
			
		||||
            plain @click="handleExport">导出</el-button>
 | 
			
		||||
        </el-form-item>
 | 
			
		||||
      </el-form>
 | 
			
		||||
    </div>
 | 
			
		||||
 
 | 
			
		||||
@@ -1,7 +1,7 @@
 | 
			
		||||
<!--
 | 
			
		||||
 * @Author: zhp
 | 
			
		||||
 * @Date: 2023-12-12 13:45:25
 | 
			
		||||
 * @LastEditTime: 2024-03-29 09:48:32
 | 
			
		||||
 * @LastEditTime: 2024-04-08 11:45:52
 | 
			
		||||
 * @LastEditors: zhp
 | 
			
		||||
 * @Description:
 | 
			
		||||
-->
 | 
			
		||||
@@ -12,8 +12,9 @@
 | 
			
		||||
        <el-date-picker v-model="reportTime" type="month" size="small" @change="changeTime" placeholder="选择月">
 | 
			
		||||
        </el-date-picker>
 | 
			
		||||
      </el-form-item>
 | 
			
		||||
      <el-button type="primary" @click="getDataList()">查询</el-button>
 | 
			
		||||
      <el-button v-if="this.$auth.hasPermi('report:glass-month:export')" type="primary" size="small" plain
 | 
			
		||||
      <el-button v-if="this.$auth.hasPermi('report:auto-production:query')" type="primary" @click="getDataList()">查询
 | 
			
		||||
      </el-button>
 | 
			
		||||
      <el-button v-if="this.$auth.hasPermi('report:auto-production:export')" type="primary" size="small" plain
 | 
			
		||||
        @click="handleExport">导出</el-button>
 | 
			
		||||
    </el-form>
 | 
			
		||||
    <el-row style="float: right; margin-bottom: 5px">
 | 
			
		||||
@@ -28,122 +29,122 @@
 | 
			
		||||
      <el-table-column :label="'许昌安彩月成品生产汇总' + '(' + timeTips + ')'" align="center">
 | 
			
		||||
        <el-table-column prop="lineId" label="生产线" align="center">
 | 
			
		||||
          <template slot-scope="scope">
 | 
			
		||||
            <el-input  v-if="!disabled"  type="number" v-model="scope.row.lineName" :disabled="disabled"></el-input>
 | 
			
		||||
            <el-input v-if="!disabled" type="number" v-model="scope.row.lineName" :disabled="disabled"></el-input>
 | 
			
		||||
            <span v-else>{{ scope.row.lineName }} </span>
 | 
			
		||||
          </template>
 | 
			
		||||
        </el-table-column>
 | 
			
		||||
        <el-table-column label="投入数㎡" align="center">
 | 
			
		||||
          <el-table-column prop="inputNow" label="本月" align="center">
 | 
			
		||||
            <template slot-scope="scope">
 | 
			
		||||
              <el-input  v-if="!disabled"  type="number" v-model="scope.row.inputNow" :disabled="disabled"></el-input>
 | 
			
		||||
              <el-input v-if="!disabled" type="number" v-model="scope.row.inputNow" :disabled="disabled"></el-input>
 | 
			
		||||
              <span v-else>{{ scope.row.inputNow }} </span>
 | 
			
		||||
            </template>
 | 
			
		||||
          </el-table-column>
 | 
			
		||||
          <el-table-column prop="inputHis" label="上月" align="center">
 | 
			
		||||
            <template slot-scope="scope">
 | 
			
		||||
              <el-input  v-if="!disabled"  type="number" v-model="scope.row.inputHis" :disabled="disabled"></el-input>
 | 
			
		||||
              <el-input v-if="!disabled" type="number" v-model="scope.row.inputHis" :disabled="disabled"></el-input>
 | 
			
		||||
              <span v-else>{{ scope.row.inputHis }} </span>
 | 
			
		||||
            </template>
 | 
			
		||||
          </el-table-column>
 | 
			
		||||
          <el-table-column prop="inputTrend" label="增减" align="center">
 | 
			
		||||
            <template slot-scope="scope">
 | 
			
		||||
 | 
			
		||||
              <el-input  v-if="!disabled"  type="number" v-model="scope.row.inputTrend" :disabled="!disabled"></el-input>
 | 
			
		||||
              <el-input v-if="!disabled" type="number" v-model="scope.row.inputTrend" :disabled="!disabled"></el-input>
 | 
			
		||||
              <span v-else>{{ scope.row.inputTrend && scope.row.inputTrend != 0 ?
 | 
			
		||||
              parseFloat((scope.row.inputTrend * 100).toFixed(2)) + '%' : scope.row.inputTrend == 0 ? 0 :
 | 
			
		||||
              null
 | 
			
		||||
              }} </span>
 | 
			
		||||
                parseFloat((scope.row.inputTrend * 100).toFixed(2)) + '%' : scope.row.inputTrend == 0 ? 0 :
 | 
			
		||||
                null
 | 
			
		||||
                }} </span>
 | 
			
		||||
            </template>
 | 
			
		||||
          </el-table-column>
 | 
			
		||||
        </el-table-column>
 | 
			
		||||
        <el-table-column label="完成良品产量" align="center">
 | 
			
		||||
          <el-table-column prop="goodProductNow" label="本月" align="center">
 | 
			
		||||
            <template slot-scope="scope">
 | 
			
		||||
              <el-input  v-if="!disabled"  type="number" v-model="scope.row.goodProductNow" :disabled="disabled">
 | 
			
		||||
              <el-input v-if="!disabled" type="number" v-model="scope.row.goodProductNow" :disabled="disabled">
 | 
			
		||||
              </el-input>
 | 
			
		||||
              <span v-else>{{ scope.row.goodProductNow }} </span>
 | 
			
		||||
            </template>
 | 
			
		||||
          </el-table-column>
 | 
			
		||||
          <el-table-column prop="goodProductHis" label="上月" align="center">
 | 
			
		||||
            <template slot-scope="scope">
 | 
			
		||||
              <el-input  v-if="!disabled"  type="number" v-model="scope.row.goodProductHis" :disabled="disabled">
 | 
			
		||||
              <el-input v-if="!disabled" type="number" v-model="scope.row.goodProductHis" :disabled="disabled">
 | 
			
		||||
              </el-input>
 | 
			
		||||
              <span v-else>{{ scope.row.goodProductHis }} </span>
 | 
			
		||||
            </template>
 | 
			
		||||
          </el-table-column>
 | 
			
		||||
          <el-table-column prop="goodProductTrend" label="增减" align="center">
 | 
			
		||||
            <template slot-scope="scope">
 | 
			
		||||
              <el-input  v-if="!disabled"  type="number" v-model="scope.row.goodProductTrend" :disabled="!disabled">
 | 
			
		||||
              <el-input v-if="!disabled" type="number" v-model="scope.row.goodProductTrend" :disabled="!disabled">
 | 
			
		||||
              </el-input>
 | 
			
		||||
              <span v-else>{{ scope.row.goodProductTrend && scope.row.goodProductTrend != 0 ?
 | 
			
		||||
              parseFloat((scope.row.goodProductTrend * 100).toFixed(2)) + '%' : scope.row.goodProductTrend == 0 ? 0 :
 | 
			
		||||
              null
 | 
			
		||||
              }} </span>
 | 
			
		||||
                parseFloat((scope.row.goodProductTrend * 100).toFixed(2)) + '%' : scope.row.goodProductTrend == 0 ? 0 :
 | 
			
		||||
                null
 | 
			
		||||
                }} </span>
 | 
			
		||||
            </template>
 | 
			
		||||
          </el-table-column>
 | 
			
		||||
        </el-table-column>
 | 
			
		||||
        <el-table-column label="原片漏检率" align="center">
 | 
			
		||||
          <el-table-column prop="missCheckNow" label="本月" align="center">
 | 
			
		||||
            <template slot-scope="scope">
 | 
			
		||||
              <el-input  v-if="!disabled"  type="number" v-model="scope.row.missCheckNow" :disabled="disabled"></el-input>
 | 
			
		||||
              <el-input v-if="!disabled" type="number" v-model="scope.row.missCheckNow" :disabled="disabled"></el-input>
 | 
			
		||||
              <span v-else>{{ scope.row.missCheckNow ? parseFloat((scope.row.missCheckNow *
 | 
			
		||||
              100).toFixed(2)) +
 | 
			
		||||
              '%' : null }}
 | 
			
		||||
                100).toFixed(2)) +
 | 
			
		||||
                '%' : null }}
 | 
			
		||||
              </span>
 | 
			
		||||
            </template>
 | 
			
		||||
          </el-table-column>
 | 
			
		||||
          <el-table-column prop="missCheckHis" label="上月" align="center">
 | 
			
		||||
            <template slot-scope="scope">
 | 
			
		||||
              <el-input  v-if="!disabled"  type="number" v-model="scope.row.missCheckHis" :disabled="disabled"></el-input>
 | 
			
		||||
              <el-input v-if="!disabled" type="number" v-model="scope.row.missCheckHis" :disabled="disabled"></el-input>
 | 
			
		||||
              <span v-else>{{ scope.row.missCheckHis ? parseFloat((scope.row.missCheckHis *
 | 
			
		||||
              100).toFixed(2)) +
 | 
			
		||||
              '%' : null }}
 | 
			
		||||
                100).toFixed(2)) +
 | 
			
		||||
                '%' : null }}
 | 
			
		||||
              </span>
 | 
			
		||||
            </template>
 | 
			
		||||
          </el-table-column>
 | 
			
		||||
          <el-table-column prop="missCheckTrend" label="增减" align="center">
 | 
			
		||||
            <template slot-scope="scope">
 | 
			
		||||
              <el-input  v-if="!disabled"  type="number" v-model="scope.row.missCheckTrend" :disabled="!disabled">
 | 
			
		||||
              <el-input v-if="!disabled" type="number" v-model="scope.row.missCheckTrend" :disabled="!disabled">
 | 
			
		||||
              </el-input>
 | 
			
		||||
              <span v-else>{{ scope.row.missCheckTrend && scope.row.missCheckTrend != 0 ?
 | 
			
		||||
              parseFloat((scope.row.missCheckTrend * 100).toFixed(2)) + '%' : scope.row.missCheckTrend == 0 ?
 | 
			
		||||
              0 :
 | 
			
		||||
              null
 | 
			
		||||
              }} </span>
 | 
			
		||||
                parseFloat((scope.row.missCheckTrend * 100).toFixed(2)) + '%' : scope.row.missCheckTrend == 0 ?
 | 
			
		||||
                0 :
 | 
			
		||||
                null
 | 
			
		||||
                }} </span>
 | 
			
		||||
            </template>
 | 
			
		||||
          </el-table-column>
 | 
			
		||||
        </el-table-column>
 | 
			
		||||
        <el-table-column label="综合良品率" align="center">
 | 
			
		||||
          <el-table-column prop="goodProductPassNow" label="本月" align="center">
 | 
			
		||||
            <template slot-scope="scope">
 | 
			
		||||
              <el-input  v-if="!disabled"  type="number" v-model="scope.row.goodProductPassNow" :disabled="!disabled">
 | 
			
		||||
              <el-input v-if="!disabled" type="number" v-model="scope.row.goodProductPassNow" :disabled="!disabled">
 | 
			
		||||
              </el-input>
 | 
			
		||||
              <span v-else>{{ scope.row.goodProductPassNow ? parseFloat((scope.row.goodProductPassNow *
 | 
			
		||||
              100).toFixed(2)) +
 | 
			
		||||
              '%' : null }}
 | 
			
		||||
                100).toFixed(2)) +
 | 
			
		||||
                '%' : null }}
 | 
			
		||||
              </span>
 | 
			
		||||
            </template>
 | 
			
		||||
          </el-table-column>
 | 
			
		||||
          <el-table-column prop="goodProductPassHis" label="上月" align="center">
 | 
			
		||||
            <template slot-scope="scope">
 | 
			
		||||
              <el-input  v-if="!disabled"  type="number" v-model="scope.row.goodProductPassHis" :disabled="!disabled">
 | 
			
		||||
              <el-input v-if="!disabled" type="number" v-model="scope.row.goodProductPassHis" :disabled="!disabled">
 | 
			
		||||
              </el-input>
 | 
			
		||||
              <span v-else>{{ scope.row.goodProductPassHis ? parseFloat((scope.row.goodProductPassHis *
 | 
			
		||||
              100).toFixed(2)) +
 | 
			
		||||
              '%' : null }}
 | 
			
		||||
                100).toFixed(2)) +
 | 
			
		||||
                '%' : null }}
 | 
			
		||||
              </span>
 | 
			
		||||
            </template>
 | 
			
		||||
          </el-table-column>
 | 
			
		||||
          <el-table-column prop="goodProductPassTrend" label="增减" align="center">
 | 
			
		||||
            <template slot-scope="scope">
 | 
			
		||||
              <el-input  v-if="!disabled"  type="number" v-model="scope.row.goodProductPassTrend" :disabled="!disabled">
 | 
			
		||||
              <el-input v-if="!disabled" type="number" v-model="scope.row.goodProductPassTrend" :disabled="!disabled">
 | 
			
		||||
              </el-input>
 | 
			
		||||
              <span v-else>{{ scope.row.goodProductPassTrend && scope.row.goodProductPassTrend != 0 ?
 | 
			
		||||
                parseFloat((scope.row.goodProductPassTrend * 100).toFixed(2)) + '%' : scope.row.goodProductPassTrend ==
 | 
			
		||||
              0 ?
 | 
			
		||||
              0 :
 | 
			
		||||
              null
 | 
			
		||||
              }} </span>
 | 
			
		||||
                0 ?
 | 
			
		||||
                0 :
 | 
			
		||||
                null
 | 
			
		||||
                }} </span>
 | 
			
		||||
            </template>
 | 
			
		||||
          </el-table-column>
 | 
			
		||||
        </el-table-column>
 | 
			
		||||
 
 | 
			
		||||
@@ -14,9 +14,9 @@
 | 
			
		||||
          style="width: 350px" placeholder="选择周">
 | 
			
		||||
        </el-date-picker>
 | 
			
		||||
      </el-form-item>
 | 
			
		||||
      <el-button type="primary" @click="getDataList()">查询</el-button>
 | 
			
		||||
      <!-- <el-button type="primary" @click="getDataList()">查询</el-button> -->
 | 
			
		||||
      <el-button v-if="this.$auth.hasPermi('report:glass-month:export')" type="primary" size="small" plain
 | 
			
		||||
      <el-button v-if="this.$auth.hasPermi('report:auto-production:query')" type="primary" @click="getDataList()">查询
 | 
			
		||||
      </el-button>
 | 
			
		||||
      <el-button v-if="this.$auth.hasPermi('report:auto-production:export')" type="primary" size="small" plain
 | 
			
		||||
        @click="handleExport">导出</el-button>
 | 
			
		||||
    </el-form>
 | 
			
		||||
    <el-row style="float: right; margin-bottom: 5px">
 | 
			
		||||
@@ -31,126 +31,126 @@
 | 
			
		||||
      <el-table-column :label="'许昌安彩周成品生产汇总' + '(' + timeTips + ')'" align="center">
 | 
			
		||||
        <el-table-column prop="lineId" label="生产线" align="center">
 | 
			
		||||
          <template slot-scope="scope">
 | 
			
		||||
            <el-input  v-if="!disabled"  type="number" v-model="scope.row.lineName" :disabled="disabled"></el-input>
 | 
			
		||||
            <el-input v-if="!disabled" type="number" v-model="scope.row.lineName" :disabled="disabled"></el-input>
 | 
			
		||||
            <span v-else>{{ scope.row.lineName }} </span>
 | 
			
		||||
          </template>
 | 
			
		||||
        </el-table-column>
 | 
			
		||||
        <el-table-column label="投入数㎡" align="center">
 | 
			
		||||
          <el-table-column prop="inputNow" label="本周" align="center">
 | 
			
		||||
            <template slot-scope="scope">
 | 
			
		||||
              <el-input  v-if="!disabled"  type="number" v-model="scope.row.inputNow" :disabled="disabled"></el-input>
 | 
			
		||||
              <el-input v-if="!disabled" type="number" v-model="scope.row.inputNow" :disabled="disabled"></el-input>
 | 
			
		||||
              <span v-else>{{ scope.row.inputNow }} </span>
 | 
			
		||||
            </template>
 | 
			
		||||
          </el-table-column>
 | 
			
		||||
          <el-table-column prop="inputHis" label="上周" align="center">
 | 
			
		||||
            <template slot-scope="scope">
 | 
			
		||||
              <el-input  v-if="!disabled"  type="number" v-model="scope.row.inputHis" :disabled="disabled"></el-input>
 | 
			
		||||
              <el-input v-if="!disabled" type="number" v-model="scope.row.inputHis" :disabled="disabled"></el-input>
 | 
			
		||||
              <span v-else>{{ scope.row.inputHis }} </span>
 | 
			
		||||
            </template>
 | 
			
		||||
          </el-table-column>
 | 
			
		||||
          <el-table-column prop="inputTrend" label="增减" align="center">
 | 
			
		||||
            <template slot-scope="scope">
 | 
			
		||||
              <el-input  v-if="!disabled"  type="number" v-model="scope.row.inputTrend" :disabled="!disabled"></el-input>
 | 
			
		||||
              <el-input v-if="!disabled" type="number" v-model="scope.row.inputTrend" :disabled="!disabled"></el-input>
 | 
			
		||||
              <span v-else>{{ scope.row.inputTrend && scope.row.inputTrend != 0 ?
 | 
			
		||||
              parseFloat((scope.row.inputTrend * 100).toFixed(2)) + '%' : scope.row.inputTrend ==
 | 
			
		||||
              0 ?
 | 
			
		||||
              0 :
 | 
			
		||||
              null
 | 
			
		||||
              }} </span>
 | 
			
		||||
                parseFloat((scope.row.inputTrend * 100).toFixed(2)) + '%' : scope.row.inputTrend ==
 | 
			
		||||
                0 ?
 | 
			
		||||
                0 :
 | 
			
		||||
                null
 | 
			
		||||
                }} </span>
 | 
			
		||||
            </template>
 | 
			
		||||
          </el-table-column>
 | 
			
		||||
        </el-table-column>
 | 
			
		||||
        <el-table-column label="完成良品产量" align="center">
 | 
			
		||||
          <el-table-column prop="goodProductNow" label="本周" align="center">
 | 
			
		||||
            <template slot-scope="scope">
 | 
			
		||||
              <el-input  v-if="!disabled"  type="number" v-model="scope.row.goodProductNow" :disabled="disabled">
 | 
			
		||||
              <el-input v-if="!disabled" type="number" v-model="scope.row.goodProductNow" :disabled="disabled">
 | 
			
		||||
              </el-input>
 | 
			
		||||
              <span v-else>{{ scope.row.goodProductNow }} </span>
 | 
			
		||||
            </template>
 | 
			
		||||
          </el-table-column>
 | 
			
		||||
          <el-table-column prop="goodProductHis" label="上周" align="center">
 | 
			
		||||
            <template slot-scope="scope">
 | 
			
		||||
              <el-input  v-if="!disabled"  type="number" v-model="scope.row.goodProductHis" :disabled="disabled">
 | 
			
		||||
              <el-input v-if="!disabled" type="number" v-model="scope.row.goodProductHis" :disabled="disabled">
 | 
			
		||||
              </el-input>
 | 
			
		||||
              <span v-else>{{ scope.row.goodProductHis }} </span>
 | 
			
		||||
            </template>
 | 
			
		||||
          </el-table-column>
 | 
			
		||||
          <el-table-column prop="goodProductTrend" label="增减" align="center">
 | 
			
		||||
            <template slot-scope="scope">
 | 
			
		||||
              <el-input  v-if="!disabled"  type="number" v-model="scope.row.goodProductTrend" :disabled="!disabled">
 | 
			
		||||
              <el-input v-if="!disabled" type="number" v-model="scope.row.goodProductTrend" :disabled="!disabled">
 | 
			
		||||
              </el-input>
 | 
			
		||||
              <span v-else>{{ scope.row.goodProductTrend && scope.row.goodProductTrend != 0 ?
 | 
			
		||||
              parseFloat((scope.row.goodProductTrend * 100).toFixed(2)) + '%' : scope.row.goodProductTrend ==
 | 
			
		||||
              0 ?
 | 
			
		||||
              0 :
 | 
			
		||||
              null
 | 
			
		||||
              }} </span>
 | 
			
		||||
                parseFloat((scope.row.goodProductTrend * 100).toFixed(2)) + '%' : scope.row.goodProductTrend ==
 | 
			
		||||
                0 ?
 | 
			
		||||
                0 :
 | 
			
		||||
                null
 | 
			
		||||
                }} </span>
 | 
			
		||||
            </template>
 | 
			
		||||
          </el-table-column>
 | 
			
		||||
        </el-table-column>
 | 
			
		||||
        <el-table-column label="原片漏检率" align="center">
 | 
			
		||||
          <el-table-column prop="missCheckNow" label="本周" align="center">
 | 
			
		||||
            <template slot-scope="scope">
 | 
			
		||||
              <el-input  v-if="!disabled"  type="number" v-model="scope.row.missCheckNow" :disabled="disabled"></el-input>
 | 
			
		||||
              <el-input v-if="!disabled" type="number" v-model="scope.row.missCheckNow" :disabled="disabled"></el-input>
 | 
			
		||||
              <span v-else>{{ scope.row.missCheckNow ? parseFloat((scope.row.missCheckNow *
 | 
			
		||||
              100).toFixed(2)) +
 | 
			
		||||
              '%' : null }}
 | 
			
		||||
                100).toFixed(2)) +
 | 
			
		||||
                '%' : null }}
 | 
			
		||||
              </span>
 | 
			
		||||
            </template>
 | 
			
		||||
          </el-table-column>
 | 
			
		||||
          <el-table-column prop="missCheckHis" label="上周" align="center">
 | 
			
		||||
            <template slot-scope="scope">
 | 
			
		||||
              <el-input  v-if="!disabled"  type="number" v-model="scope.row.missCheckHis" :disabled="disabled"></el-input>
 | 
			
		||||
              <el-input v-if="!disabled" type="number" v-model="scope.row.missCheckHis" :disabled="disabled"></el-input>
 | 
			
		||||
              <span v-else>{{ scope.row.missCheckHis ? parseFloat((scope.row.missCheckHis *
 | 
			
		||||
              100).toFixed(2)) +
 | 
			
		||||
              '%' : null }}
 | 
			
		||||
                100).toFixed(2)) +
 | 
			
		||||
                '%' : null }}
 | 
			
		||||
              </span>
 | 
			
		||||
            </template>
 | 
			
		||||
          </el-table-column>
 | 
			
		||||
          <el-table-column prop="missCheckTrend" label="增减" align="center">
 | 
			
		||||
            <template slot-scope="scope">
 | 
			
		||||
              <el-input  v-if="!disabled"  type="number" v-model="scope.row.missCheckTrend" :disabled="!disabled">
 | 
			
		||||
              <el-input v-if="!disabled" type="number" v-model="scope.row.missCheckTrend" :disabled="!disabled">
 | 
			
		||||
              </el-input>
 | 
			
		||||
              <span v-else>{{ scope.row.missCheckTrend && scope.row.missCheckTrend != 0 ?
 | 
			
		||||
              parseFloat((scope.row.missCheckTrend * 100).toFixed(2)) + '%' : scope.row.missCheckTrend ==
 | 
			
		||||
              0 ?
 | 
			
		||||
              0 :
 | 
			
		||||
              null
 | 
			
		||||
              }} </span>
 | 
			
		||||
                parseFloat((scope.row.missCheckTrend * 100).toFixed(2)) + '%' : scope.row.missCheckTrend ==
 | 
			
		||||
                0 ?
 | 
			
		||||
                0 :
 | 
			
		||||
                null
 | 
			
		||||
                }} </span>
 | 
			
		||||
            </template>
 | 
			
		||||
          </el-table-column>
 | 
			
		||||
        </el-table-column>
 | 
			
		||||
        <el-table-column label="综合良品率" align="center">
 | 
			
		||||
          <el-table-column prop="goodProductPassNow" label="本周" align="center">
 | 
			
		||||
            <template slot-scope="scope">
 | 
			
		||||
              <el-input  v-if="!disabled"  type="number" v-model="scope.row.goodProductPassNow" :disabled="!disabled">
 | 
			
		||||
              <el-input v-if="!disabled" type="number" v-model="scope.row.goodProductPassNow" :disabled="!disabled">
 | 
			
		||||
              </el-input>
 | 
			
		||||
              <span v-else>{{ scope.row.goodProductPassNow ? parseFloat((scope.row.goodProductPassNow *
 | 
			
		||||
              100).toFixed(2)) +
 | 
			
		||||
              '%' : null }}
 | 
			
		||||
                100).toFixed(2)) +
 | 
			
		||||
                '%' : null }}
 | 
			
		||||
              </span>
 | 
			
		||||
            </template>
 | 
			
		||||
          </el-table-column>
 | 
			
		||||
          <el-table-column prop="goodProductPassHis" label="上周" align="center">
 | 
			
		||||
            <template slot-scope="scope">
 | 
			
		||||
              <el-input  v-if="!disabled"  type="number" v-model="scope.row.goodProductPassHis" :disabled="!disabled">
 | 
			
		||||
              <el-input v-if="!disabled" type="number" v-model="scope.row.goodProductPassHis" :disabled="!disabled">
 | 
			
		||||
              </el-input>
 | 
			
		||||
              <span v-else>{{ scope.row.goodProductPassHis ? parseFloat((scope.row.goodProductPassHis *
 | 
			
		||||
              100).toFixed(2)) +
 | 
			
		||||
              '%' : null }}
 | 
			
		||||
                100).toFixed(2)) +
 | 
			
		||||
                '%' : null }}
 | 
			
		||||
              </span>
 | 
			
		||||
            </template>
 | 
			
		||||
          </el-table-column>
 | 
			
		||||
          <el-table-column prop="goodProductPassTrend" label="增减" align="center">
 | 
			
		||||
            <template slot-scope="scope">
 | 
			
		||||
              <el-input  v-if="!disabled"  type="number" v-model="scope.row.goodProductPassTrend" :disabled="!disabled">
 | 
			
		||||
              <el-input v-if="!disabled" type="number" v-model="scope.row.goodProductPassTrend" :disabled="!disabled">
 | 
			
		||||
              </el-input>
 | 
			
		||||
              <span v-else>{{ scope.row.goodProductPassTrend && scope.row.goodProductPassTrend != 0 ?
 | 
			
		||||
                parseFloat((scope.row.goodProductPassTrend * 100).toFixed(2)) + '%' : scope.row.goodProductPassTrend ==
 | 
			
		||||
              0 ?
 | 
			
		||||
              0 :
 | 
			
		||||
              null
 | 
			
		||||
              }} </span>
 | 
			
		||||
                0 ?
 | 
			
		||||
                0 :
 | 
			
		||||
                null
 | 
			
		||||
                }} </span>
 | 
			
		||||
            </template>
 | 
			
		||||
          </el-table-column>
 | 
			
		||||
        </el-table-column>
 | 
			
		||||
 
 | 
			
		||||
@@ -1,7 +1,7 @@
 | 
			
		||||
<!--
 | 
			
		||||
 * @Author: zhp
 | 
			
		||||
 * @Date: 2023-12-12 13:45:25
 | 
			
		||||
 * @LastEditTime: 2024-03-29 09:48:49
 | 
			
		||||
 * @LastEditTime: 2024-04-08 11:46:49
 | 
			
		||||
 * @LastEditors: zhp
 | 
			
		||||
 * @Description:
 | 
			
		||||
-->
 | 
			
		||||
@@ -14,8 +14,9 @@
 | 
			
		||||
          style="width: 350px" placeholder="选择年">
 | 
			
		||||
        </el-date-picker>
 | 
			
		||||
      </el-form-item>
 | 
			
		||||
      <el-button type="primary" @click="getDataList()">查询</el-button>
 | 
			
		||||
      <el-button v-if="this.$auth.hasPermi('report:glass-month:export')" type="primary" size="small" plain
 | 
			
		||||
      <el-button v-if="this.$auth.hasPermi('report:auto-production:query')" type="primary" @click="getDataList()">查询
 | 
			
		||||
      </el-button>
 | 
			
		||||
      <el-button v-if="this.$auth.hasPermi('report:auto-production:export')" type="primary" size="small" plain
 | 
			
		||||
        @click="handleExport">导出</el-button>
 | 
			
		||||
      <!-- <el-button type="primary" icon="el-icon-edit-outline" @click="editDataList()">编辑</el-button>
 | 
			
		||||
      <el-button v-if="isSave" type="success" @click="saveDataList()">保存</el-button> -->
 | 
			
		||||
@@ -33,126 +34,126 @@
 | 
			
		||||
      <el-table-column :label="'许昌安彩年成品生产汇总' + '(' + timeTips + ')'" align="center">
 | 
			
		||||
        <el-table-column prop="lineId" label="生产线" align="center">
 | 
			
		||||
          <template slot-scope="scope">
 | 
			
		||||
            <el-input  v-if="!disabled"  type="number" v-model="scope.row.lineName" :disabled="disabled"></el-input>
 | 
			
		||||
            <el-input v-if="!disabled" type="number" v-model="scope.row.lineName" :disabled="disabled"></el-input>
 | 
			
		||||
            <span v-else>{{ scope.row.lineName }} </span>
 | 
			
		||||
          </template>
 | 
			
		||||
        </el-table-column>
 | 
			
		||||
        <el-table-column label="投入数㎡" align="center">
 | 
			
		||||
          <el-table-column prop="inputNow" label="今年" align="center">
 | 
			
		||||
            <template slot-scope="scope">
 | 
			
		||||
              <el-input  v-if="!disabled"  type="number" v-model="scope.row.inputNow" :disabled="disabled"></el-input>
 | 
			
		||||
              <el-input v-if="!disabled" type="number" v-model="scope.row.inputNow" :disabled="disabled"></el-input>
 | 
			
		||||
              <span v-else>{{ scope.row.inputNow }} </span>
 | 
			
		||||
            </template>
 | 
			
		||||
          </el-table-column>
 | 
			
		||||
          <el-table-column prop="inputHis" label="去年" align="center">
 | 
			
		||||
            <template slot-scope="scope">
 | 
			
		||||
              <el-input  v-if="!disabled"  type="number" v-model="scope.row.inputHis" :disabled="disabled"></el-input>
 | 
			
		||||
              <el-input v-if="!disabled" type="number" v-model="scope.row.inputHis" :disabled="disabled"></el-input>
 | 
			
		||||
              <span v-else>{{ scope.row.inputHis }} </span>
 | 
			
		||||
            </template>
 | 
			
		||||
          </el-table-column>
 | 
			
		||||
          <el-table-column prop="inputTrend" label="增减" align="center">
 | 
			
		||||
            <template slot-scope="scope">
 | 
			
		||||
              <el-input  v-if="!disabled"  type="number" v-model="scope.row.inputTrend" :disabled="!disabled"></el-input>
 | 
			
		||||
              <el-input v-if="!disabled" type="number" v-model="scope.row.inputTrend" :disabled="!disabled"></el-input>
 | 
			
		||||
              <span v-else>{{ scope.row.inputTrend && scope.row.inputTrend != 0 ?
 | 
			
		||||
              parseFloat((scope.row.inputTrend * 100).toFixed(2)) + '%' : scope.row.inputTrend ==
 | 
			
		||||
              0 ?
 | 
			
		||||
              0 :
 | 
			
		||||
              null
 | 
			
		||||
              }} </span>
 | 
			
		||||
                parseFloat((scope.row.inputTrend * 100).toFixed(2)) + '%' : scope.row.inputTrend ==
 | 
			
		||||
                0 ?
 | 
			
		||||
                0 :
 | 
			
		||||
                null
 | 
			
		||||
                }} </span>
 | 
			
		||||
            </template>
 | 
			
		||||
          </el-table-column>
 | 
			
		||||
        </el-table-column>
 | 
			
		||||
        <el-table-column label="完成良品产量" align="center">
 | 
			
		||||
          <el-table-column prop="goodProductNow" label="今年" align="center">
 | 
			
		||||
            <template slot-scope="scope">
 | 
			
		||||
              <el-input  v-if="!disabled"  type="number" v-model="scope.row.goodProductNow" :disabled="disabled">
 | 
			
		||||
              <el-input v-if="!disabled" type="number" v-model="scope.row.goodProductNow" :disabled="disabled">
 | 
			
		||||
              </el-input>
 | 
			
		||||
              <span v-else>{{ scope.row.goodProductNow }} </span>
 | 
			
		||||
            </template>
 | 
			
		||||
          </el-table-column>
 | 
			
		||||
          <el-table-column prop="goodProductHis" label="去年" align="center">
 | 
			
		||||
            <template slot-scope="scope">
 | 
			
		||||
              <el-input  v-if="!disabled"  type="number" v-model="scope.row.goodProductHis" :disabled="disabled">
 | 
			
		||||
              <el-input v-if="!disabled" type="number" v-model="scope.row.goodProductHis" :disabled="disabled">
 | 
			
		||||
              </el-input>
 | 
			
		||||
              <span v-else>{{ scope.row.goodProductHis }} </span>
 | 
			
		||||
            </template>
 | 
			
		||||
          </el-table-column>
 | 
			
		||||
          <el-table-column prop="goodProductTrend" label="增减" align="center">
 | 
			
		||||
            <template slot-scope="scope">
 | 
			
		||||
              <el-input  v-if="!disabled"  type="number" v-model="scope.row.goodProductTrend" :disabled="!disabled">
 | 
			
		||||
              <el-input v-if="!disabled" type="number" v-model="scope.row.goodProductTrend" :disabled="!disabled">
 | 
			
		||||
              </el-input>
 | 
			
		||||
              <span v-else>{{ scope.row.goodProductTrend && scope.row.goodProductTrend != 0 ?
 | 
			
		||||
              parseFloat((scope.row.goodProductTrend * 100).toFixed(2)) + '%' : scope.row.goodProductTrend ==
 | 
			
		||||
              0 ?
 | 
			
		||||
              0 :
 | 
			
		||||
              null
 | 
			
		||||
              }} </span>
 | 
			
		||||
                parseFloat((scope.row.goodProductTrend * 100).toFixed(2)) + '%' : scope.row.goodProductTrend ==
 | 
			
		||||
                0 ?
 | 
			
		||||
                0 :
 | 
			
		||||
                null
 | 
			
		||||
                }} </span>
 | 
			
		||||
            </template>
 | 
			
		||||
          </el-table-column>
 | 
			
		||||
        </el-table-column>
 | 
			
		||||
        <el-table-column label="原片漏检率" align="center">
 | 
			
		||||
          <el-table-column prop="missCheckNow" label="今年" align="center">
 | 
			
		||||
            <template slot-scope="scope">
 | 
			
		||||
              <el-input  v-if="!disabled"  type="number" v-model="scope.row.missCheckNow" :disabled="disabled"></el-input>
 | 
			
		||||
              <el-input v-if="!disabled" type="number" v-model="scope.row.missCheckNow" :disabled="disabled"></el-input>
 | 
			
		||||
              <span v-else>{{ scope.row.missCheckNow ? parseFloat((scope.row.missCheckNow *
 | 
			
		||||
              100).toFixed(2)) +
 | 
			
		||||
              '%' : null }}
 | 
			
		||||
                100).toFixed(2)) +
 | 
			
		||||
                '%' : null }}
 | 
			
		||||
              </span>
 | 
			
		||||
            </template>
 | 
			
		||||
          </el-table-column>
 | 
			
		||||
          <el-table-column prop="missCheckHis" label="去年" align="center">
 | 
			
		||||
            <template slot-scope="scope">
 | 
			
		||||
              <el-input  v-if="!disabled"  type="number" v-model="scope.row.missCheckHis" :disabled="disabled"></el-input>
 | 
			
		||||
              <el-input v-if="!disabled" type="number" v-model="scope.row.missCheckHis" :disabled="disabled"></el-input>
 | 
			
		||||
              <span v-else>{{ scope.row.missCheckHis ? parseFloat((scope.row.missCheckHis *
 | 
			
		||||
              100).toFixed(2)) +
 | 
			
		||||
              '%' : null }}
 | 
			
		||||
                100).toFixed(2)) +
 | 
			
		||||
                '%' : null }}
 | 
			
		||||
              </span>
 | 
			
		||||
            </template>
 | 
			
		||||
          </el-table-column>
 | 
			
		||||
          <el-table-column prop="missCheckTrend" label="增减" align="center">
 | 
			
		||||
            <template slot-scope="scope">
 | 
			
		||||
              <el-input  v-if="!disabled"  type="number" v-model="scope.row.missCheckTrend" :disabled="!disabled">
 | 
			
		||||
              <el-input v-if="!disabled" type="number" v-model="scope.row.missCheckTrend" :disabled="!disabled">
 | 
			
		||||
              </el-input>
 | 
			
		||||
              <span v-else>{{ scope.row.missCheckTrend && scope.row.missCheckTrend != 0 ?
 | 
			
		||||
              parseFloat((scope.row.missCheckTrend * 100).toFixed(2)) + '%' : scope.row.missCheckTrend ==
 | 
			
		||||
              0 ?
 | 
			
		||||
              0 :
 | 
			
		||||
              null
 | 
			
		||||
              }} </span>
 | 
			
		||||
                parseFloat((scope.row.missCheckTrend * 100).toFixed(2)) + '%' : scope.row.missCheckTrend ==
 | 
			
		||||
                0 ?
 | 
			
		||||
                0 :
 | 
			
		||||
                null
 | 
			
		||||
                }} </span>
 | 
			
		||||
            </template>
 | 
			
		||||
          </el-table-column>
 | 
			
		||||
        </el-table-column>
 | 
			
		||||
        <el-table-column label="综合良品率" align="center">
 | 
			
		||||
          <el-table-column prop="goodProductPassNow" label="今年" align="center">
 | 
			
		||||
            <template slot-scope="scope">
 | 
			
		||||
              <el-input  v-if="!disabled"  type="number" v-model="scope.row.goodProductPassNow" :disabled="!disabled">
 | 
			
		||||
              <el-input v-if="!disabled" type="number" v-model="scope.row.goodProductPassNow" :disabled="!disabled">
 | 
			
		||||
              </el-input>
 | 
			
		||||
              <span v-else>{{ scope.row.goodProductPassNow ? parseFloat((scope.row.goodProductPassNow *
 | 
			
		||||
              100).toFixed(2)) +
 | 
			
		||||
              '%' : null }}
 | 
			
		||||
                100).toFixed(2)) +
 | 
			
		||||
                '%' : null }}
 | 
			
		||||
              </span>
 | 
			
		||||
            </template>
 | 
			
		||||
          </el-table-column>
 | 
			
		||||
          <el-table-column prop="goodProductPassHis" label="去年" align="center">
 | 
			
		||||
            <template slot-scope="scope">
 | 
			
		||||
              <el-input  v-if="!disabled"  type="number" v-model="scope.row.goodProductPassHis" :disabled="!disabled">
 | 
			
		||||
              <el-input v-if="!disabled" type="number" v-model="scope.row.goodProductPassHis" :disabled="!disabled">
 | 
			
		||||
              </el-input>
 | 
			
		||||
              <span v-else>{{ scope.row.goodProductPassHis ? parseFloat((scope.row.goodProductPassHis *
 | 
			
		||||
              100).toFixed(2)) +
 | 
			
		||||
              '%' : null }}
 | 
			
		||||
                100).toFixed(2)) +
 | 
			
		||||
                '%' : null }}
 | 
			
		||||
              </span>
 | 
			
		||||
            </template>
 | 
			
		||||
          </el-table-column>
 | 
			
		||||
          <el-table-column prop="goodProductPassTrend" label="增减" align="center">
 | 
			
		||||
            <template slot-scope="scope">
 | 
			
		||||
              <el-input  v-if="!disabled"  type="number" v-model="scope.row.goodProductPassTrend" :disabled="!disabled">
 | 
			
		||||
              <el-input v-if="!disabled" type="number" v-model="scope.row.goodProductPassTrend" :disabled="!disabled">
 | 
			
		||||
              </el-input>
 | 
			
		||||
              <span v-else>{{ scope.row.goodProductPassTrend && scope.row.goodProductPassTrend != 0 ?
 | 
			
		||||
                parseFloat((scope.row.goodProductPassTrend * 100).toFixed(2)) + '%' : scope.row.goodProductPassTrend ==
 | 
			
		||||
              0 ?
 | 
			
		||||
              0 :
 | 
			
		||||
              null
 | 
			
		||||
              }} </span>
 | 
			
		||||
                0 ?
 | 
			
		||||
                0 :
 | 
			
		||||
                null
 | 
			
		||||
                }} </span>
 | 
			
		||||
            </template>
 | 
			
		||||
          </el-table-column>
 | 
			
		||||
        </el-table-column>
 | 
			
		||||
 
 | 
			
		||||
@@ -1,185 +1,188 @@
 | 
			
		||||
<template>
 | 
			
		||||
  <div class="app-container vocHis">
 | 
			
		||||
    <!-- 搜索工作栏 -->
 | 
			
		||||
    <search-bar
 | 
			
		||||
      :formConfigs="formConfig"
 | 
			
		||||
      ref="searchBarForm"
 | 
			
		||||
      @headBtnClick="buttonClick"
 | 
			
		||||
    />
 | 
			
		||||
    <!-- 列表 -->
 | 
			
		||||
    <base-table
 | 
			
		||||
      :page="queryParams.pageNo"
 | 
			
		||||
      :limit="queryParams.pageSize"
 | 
			
		||||
      :table-props="tableProps"
 | 
			
		||||
      :table-data="list"
 | 
			
		||||
      :max-height="tableH"
 | 
			
		||||
      :row-class-name="tableRowClassName"
 | 
			
		||||
    />
 | 
			
		||||
    <pagination
 | 
			
		||||
      :page.sync="queryParams.pageNo"
 | 
			
		||||
      :limit.sync="queryParams.pageSize"
 | 
			
		||||
      :total="total"
 | 
			
		||||
      @pagination="getList"
 | 
			
		||||
    />
 | 
			
		||||
  </div>
 | 
			
		||||
	<div class="app-container vocHis">
 | 
			
		||||
		<!-- 搜索工作栏 -->
 | 
			
		||||
		<search-bar
 | 
			
		||||
			:formConfigs="formConfig"
 | 
			
		||||
			ref="searchBarForm"
 | 
			
		||||
			@headBtnClick="buttonClick" />
 | 
			
		||||
		<!-- 列表 -->
 | 
			
		||||
		<base-table
 | 
			
		||||
			:page="queryParams.pageNo"
 | 
			
		||||
			:limit="queryParams.pageSize"
 | 
			
		||||
			:table-props="tableProps"
 | 
			
		||||
			:table-data="list"
 | 
			
		||||
			:max-height="tableH"
 | 
			
		||||
			:row-class-name="tableRowClassName" />
 | 
			
		||||
		<pagination
 | 
			
		||||
			:page.sync="queryParams.pageNo"
 | 
			
		||||
			:limit.sync="queryParams.pageSize"
 | 
			
		||||
			:total="total"
 | 
			
		||||
			@pagination="getList" />
 | 
			
		||||
	</div>
 | 
			
		||||
</template>
 | 
			
		||||
<script>
 | 
			
		||||
import { publicFormatter } from '@/utils/dict'
 | 
			
		||||
import { parseTime } from '@/utils/ruoyi'
 | 
			
		||||
import { environmentalCheckRecordPage, environmentalCheckRecordExport, environmentalCheckPage } from '@/api/safetyEnvironmental/environmental'
 | 
			
		||||
import moment from 'moment'
 | 
			
		||||
import { publicFormatter } from '@/utils/dict';
 | 
			
		||||
import { parseTime } from '@/utils/ruoyi';
 | 
			
		||||
import {
 | 
			
		||||
	environmentalCheckRecordPage,
 | 
			
		||||
	environmentalCheckRecordExport,
 | 
			
		||||
	environmentalCheckPage,
 | 
			
		||||
} from '@/api/safetyEnvironmental/environmental';
 | 
			
		||||
import moment from 'moment';
 | 
			
		||||
import tableHeightMixin from '@/mixins/lb/tableHeightMixin';
 | 
			
		||||
const tableProps = [
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'checkName',
 | 
			
		||||
    label: '指标名称'
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'checkValue',
 | 
			
		||||
    label: '检测数值'
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'unit',
 | 
			
		||||
    label: '单位',
 | 
			
		||||
    filter: publicFormatter('environment_check_unit')
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'checkTime',
 | 
			
		||||
    label: '检测时间',
 | 
			
		||||
    filter: parseTime,
 | 
			
		||||
    minWidth: 160
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'origin',
 | 
			
		||||
    label: '来源',
 | 
			
		||||
    filter: (val) => ['手动', '自动'][val]
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'recordPerson',
 | 
			
		||||
    label: '录入人'
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'recordTime',
 | 
			
		||||
    label: '录入时间',
 | 
			
		||||
    filter: parseTime,
 | 
			
		||||
    minWidth: 160
 | 
			
		||||
  }
 | 
			
		||||
]
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'checkName',
 | 
			
		||||
		label: '指标名称',
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'checkValue',
 | 
			
		||||
		label: '检测数值',
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'unit',
 | 
			
		||||
		label: '单位',
 | 
			
		||||
		filter: publicFormatter('environment_check_unit'),
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'checkTime',
 | 
			
		||||
		label: '检测时间',
 | 
			
		||||
		filter: parseTime,
 | 
			
		||||
		minWidth: 160,
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'origin',
 | 
			
		||||
		label: '来源',
 | 
			
		||||
		filter: (val) => ['手动', '自动'][val],
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'recordPerson',
 | 
			
		||||
		label: '录入人',
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'recordTime',
 | 
			
		||||
		label: '录入时间',
 | 
			
		||||
		filter: parseTime,
 | 
			
		||||
		minWidth: 160,
 | 
			
		||||
	},
 | 
			
		||||
];
 | 
			
		||||
export default {
 | 
			
		||||
  name: 'VocDetectionHistory',
 | 
			
		||||
  data() {
 | 
			
		||||
    return {
 | 
			
		||||
      formConfig: [
 | 
			
		||||
        {
 | 
			
		||||
          type: 'select',
 | 
			
		||||
          label: '指标名称',
 | 
			
		||||
          selectOptions: [],
 | 
			
		||||
          param: 'checkId',
 | 
			
		||||
          filterable: true
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          type: 'datePicker',
 | 
			
		||||
          label: '时间',
 | 
			
		||||
          dateType: 'datetimerange',
 | 
			
		||||
          format: 'yyyy-MM-dd HH:mm:ss',
 | 
			
		||||
          valueFormat: "timestamp",
 | 
			
		||||
          rangeSeparator: '-',
 | 
			
		||||
          startPlaceholder: '开始时间',
 | 
			
		||||
          endPlaceholder: '结束时间',
 | 
			
		||||
          param: 'timeVal',
 | 
			
		||||
          defaultSelect: [],
 | 
			
		||||
          width: 350
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          type: 'button',
 | 
			
		||||
          btnName: '查询',
 | 
			
		||||
          name: 'search',
 | 
			
		||||
          color: 'primary'
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          type: this.$auth.hasPermi('base:voc:export') ? 'separate' : '',
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          type: this.$auth.hasPermi('base:voc:export') ? 'button' : '',
 | 
			
		||||
          btnName: '导出',
 | 
			
		||||
          name: 'export',
 | 
			
		||||
          color: 'primary',
 | 
			
		||||
          plain: true
 | 
			
		||||
        }
 | 
			
		||||
      ],
 | 
			
		||||
      // 查询参数
 | 
			
		||||
      queryParams: {
 | 
			
		||||
        pageNo: 1,
 | 
			
		||||
        pageSize: 20,
 | 
			
		||||
        checkId: null,
 | 
			
		||||
        checkType: 3,
 | 
			
		||||
        startTime: null,
 | 
			
		||||
        endTime: null
 | 
			
		||||
      },
 | 
			
		||||
      tableProps,
 | 
			
		||||
      list: [],
 | 
			
		||||
      total: 0,
 | 
			
		||||
      tableH: this.tableHeight(260)
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
  created() {
 | 
			
		||||
    window.addEventListener('resize', () => {
 | 
			
		||||
      this.tableH = this.tableHeight(260)
 | 
			
		||||
    })
 | 
			
		||||
    let end = moment(moment().format('YYYY-MM-DD 23:59:59')).valueOf()
 | 
			
		||||
    let start = moment(moment().format('YYYY-MM-DD 00:00:00')).valueOf()
 | 
			
		||||
    this.formConfig[1].defaultSelect = [start, end]
 | 
			
		||||
    this.queryParams.startTime = start
 | 
			
		||||
    this.queryParams.endTime = end
 | 
			
		||||
    this.getSelectList()
 | 
			
		||||
    this.getList()
 | 
			
		||||
  },
 | 
			
		||||
  methods: {
 | 
			
		||||
    buttonClick(val) {
 | 
			
		||||
      this.queryParams.pageNo = 1;
 | 
			
		||||
      this.queryParams.checkId = val.checkId
 | 
			
		||||
      this.queryParams.startTime = val.timeVal ? val.timeVal[0] : null
 | 
			
		||||
      this.queryParams.endTime = val.timeVal ? val.timeVal[1] : null
 | 
			
		||||
      if (val.btnName === 'search') {
 | 
			
		||||
        this.getList()
 | 
			
		||||
      } else {
 | 
			
		||||
        this.$modal.confirm('是否确认导出').then(() => {
 | 
			
		||||
            return environmentalCheckRecordExport({...this.queryParams});
 | 
			
		||||
          }).then(response => {
 | 
			
		||||
            this.$download.excel(response, '废水检测历史记录.xls');
 | 
			
		||||
          }).catch(() => {})
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    getList() {
 | 
			
		||||
      environmentalCheckRecordPage({...this.queryParams}).then(res => {
 | 
			
		||||
        this.list = res.data.list || []
 | 
			
		||||
        this.total = res.data.total || 0
 | 
			
		||||
      })
 | 
			
		||||
    },
 | 
			
		||||
    getSelectList() {
 | 
			
		||||
      environmentalCheckPage({
 | 
			
		||||
        pageNo: 1,
 | 
			
		||||
        pageSize: 100,
 | 
			
		||||
        checkType: 3
 | 
			
		||||
      }).then(res => {
 | 
			
		||||
        console.log(res)
 | 
			
		||||
        this.formConfig[0].selectOptions = res.data.list || []
 | 
			
		||||
      })
 | 
			
		||||
    },
 | 
			
		||||
    tableRowClassName({row, rowIndex}) {
 | 
			
		||||
      console.log(row)
 | 
			
		||||
      if (row.markRed) {
 | 
			
		||||
        return 'warning-row'
 | 
			
		||||
      }else {
 | 
			
		||||
        return ''
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
	name: 'VocDetectionHistory',
 | 
			
		||||
	mixins: [tableHeightMixin],
 | 
			
		||||
	data() {
 | 
			
		||||
		return {
 | 
			
		||||
			formConfig: [
 | 
			
		||||
				{
 | 
			
		||||
					type: 'select',
 | 
			
		||||
					label: '指标名称',
 | 
			
		||||
					selectOptions: [],
 | 
			
		||||
					param: 'checkId',
 | 
			
		||||
					filterable: true,
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					type: 'datePicker',
 | 
			
		||||
					label: '时间',
 | 
			
		||||
					dateType: 'datetimerange',
 | 
			
		||||
					format: 'yyyy-MM-dd HH:mm:ss',
 | 
			
		||||
					valueFormat: 'timestamp',
 | 
			
		||||
					rangeSeparator: '-',
 | 
			
		||||
					startPlaceholder: '开始时间',
 | 
			
		||||
					endPlaceholder: '结束时间',
 | 
			
		||||
					param: 'timeVal',
 | 
			
		||||
					defaultSelect: [],
 | 
			
		||||
					width: 350,
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					type: 'button',
 | 
			
		||||
					btnName: '查询',
 | 
			
		||||
					name: 'search',
 | 
			
		||||
					color: 'primary',
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					type: this.$auth.hasPermi('base:voc:export') ? 'separate' : '',
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					type: this.$auth.hasPermi('base:voc:export') ? 'button' : '',
 | 
			
		||||
					btnName: '导出',
 | 
			
		||||
					name: 'export',
 | 
			
		||||
					color: 'primary',
 | 
			
		||||
					plain: true,
 | 
			
		||||
				},
 | 
			
		||||
			],
 | 
			
		||||
			// 查询参数
 | 
			
		||||
			queryParams: {
 | 
			
		||||
				pageNo: 1,
 | 
			
		||||
				pageSize: 20,
 | 
			
		||||
				checkId: null,
 | 
			
		||||
				checkType: 3,
 | 
			
		||||
				startTime: null,
 | 
			
		||||
				endTime: null,
 | 
			
		||||
			},
 | 
			
		||||
			tableProps,
 | 
			
		||||
			list: [],
 | 
			
		||||
			total: 0,
 | 
			
		||||
		};
 | 
			
		||||
	},
 | 
			
		||||
	created() {
 | 
			
		||||
		let end = moment(moment().format('YYYY-MM-DD 23:59:59')).valueOf();
 | 
			
		||||
		let start = moment(moment().format('YYYY-MM-DD 00:00:00')).valueOf();
 | 
			
		||||
		this.formConfig[1].defaultSelect = [start, end];
 | 
			
		||||
		this.queryParams.startTime = start;
 | 
			
		||||
		this.queryParams.endTime = end;
 | 
			
		||||
		this.getSelectList();
 | 
			
		||||
		this.getList();
 | 
			
		||||
	},
 | 
			
		||||
	methods: {
 | 
			
		||||
		buttonClick(val) {
 | 
			
		||||
			this.queryParams.pageNo = 1;
 | 
			
		||||
			this.queryParams.checkId = val.checkId;
 | 
			
		||||
			this.queryParams.startTime = val.timeVal ? val.timeVal[0] : null;
 | 
			
		||||
			this.queryParams.endTime = val.timeVal ? val.timeVal[1] : null;
 | 
			
		||||
			if (val.btnName === 'search') {
 | 
			
		||||
				this.getList();
 | 
			
		||||
			} else {
 | 
			
		||||
				this.$modal
 | 
			
		||||
					.confirm('是否确认导出')
 | 
			
		||||
					.then(() => {
 | 
			
		||||
						return environmentalCheckRecordExport({ ...this.queryParams });
 | 
			
		||||
					})
 | 
			
		||||
					.then((response) => {
 | 
			
		||||
						this.$download.excel(response, '废水检测历史记录.xls');
 | 
			
		||||
					})
 | 
			
		||||
					.catch(() => {});
 | 
			
		||||
			}
 | 
			
		||||
		},
 | 
			
		||||
		getList() {
 | 
			
		||||
			environmentalCheckRecordPage({ ...this.queryParams }).then((res) => {
 | 
			
		||||
				this.list = res.data.list || [];
 | 
			
		||||
				this.total = res.data.total || 0;
 | 
			
		||||
			});
 | 
			
		||||
		},
 | 
			
		||||
		getSelectList() {
 | 
			
		||||
			environmentalCheckPage({
 | 
			
		||||
				pageNo: 1,
 | 
			
		||||
				pageSize: 100,
 | 
			
		||||
				checkType: 3,
 | 
			
		||||
			}).then((res) => {
 | 
			
		||||
				console.log(res);
 | 
			
		||||
				this.formConfig[0].selectOptions = res.data.list || [];
 | 
			
		||||
			});
 | 
			
		||||
		},
 | 
			
		||||
		tableRowClassName({ row, rowIndex }) {
 | 
			
		||||
			console.log(row);
 | 
			
		||||
			if (row.markRed) {
 | 
			
		||||
				return 'warning-row';
 | 
			
		||||
			} else {
 | 
			
		||||
				return '';
 | 
			
		||||
			}
 | 
			
		||||
		},
 | 
			
		||||
	},
 | 
			
		||||
};
 | 
			
		||||
</script>
 | 
			
		||||
<style lang='scss'>
 | 
			
		||||
.vocHis {
 | 
			
		||||
  .el-table .warning-row {
 | 
			
		||||
    background: #fee1e1;
 | 
			
		||||
  }
 | 
			
		||||
	.el-table .warning-row {
 | 
			
		||||
		background: #fee1e1;
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
</style>
 | 
			
		||||
@@ -1,205 +1,210 @@
 | 
			
		||||
<template>
 | 
			
		||||
  <div class="app-container">
 | 
			
		||||
    <!-- 搜索工作栏 -->
 | 
			
		||||
    <search-bar
 | 
			
		||||
      :formConfigs="formConfig"
 | 
			
		||||
      ref="searchBarForm"
 | 
			
		||||
      @headBtnClick="buttonClick"
 | 
			
		||||
    />
 | 
			
		||||
    <!-- 列表 -->
 | 
			
		||||
    <base-table
 | 
			
		||||
      :page="queryParams.pageNo"
 | 
			
		||||
      :limit="queryParams.pageSize"
 | 
			
		||||
      :table-props="tableProps"
 | 
			
		||||
      :table-data="list"
 | 
			
		||||
      :max-height="tableH"
 | 
			
		||||
    >
 | 
			
		||||
      <method-btn
 | 
			
		||||
        v-if="tableBtn.length"
 | 
			
		||||
        slot="handleBtn"
 | 
			
		||||
        :width="80"
 | 
			
		||||
        label="操作"
 | 
			
		||||
        :method-list="tableBtn"
 | 
			
		||||
        @clickBtn="handleClick"
 | 
			
		||||
      />
 | 
			
		||||
    </base-table>
 | 
			
		||||
    <pagination
 | 
			
		||||
      :page.sync="queryParams.pageNo"
 | 
			
		||||
      :limit.sync="queryParams.pageSize"
 | 
			
		||||
      :total="total"
 | 
			
		||||
      @pagination="getList"
 | 
			
		||||
    />
 | 
			
		||||
    <!-- 新增&编辑 -->
 | 
			
		||||
    <base-dialog
 | 
			
		||||
      :dialogTitle="addOrEditTitle"
 | 
			
		||||
      :dialogVisible="centervisible"
 | 
			
		||||
      @cancel="handleCancel"
 | 
			
		||||
      @confirm="handleConfirm"
 | 
			
		||||
      :before-close="handleCancel"
 | 
			
		||||
      width='60%'
 | 
			
		||||
    >
 | 
			
		||||
      <voc-add ref="vocAdd" @successSubmit="successSubmit" />
 | 
			
		||||
    </base-dialog>
 | 
			
		||||
  </div>
 | 
			
		||||
	<div class="app-container">
 | 
			
		||||
		<!-- 搜索工作栏 -->
 | 
			
		||||
		<search-bar
 | 
			
		||||
			:formConfigs="formConfig"
 | 
			
		||||
			ref="searchBarForm"
 | 
			
		||||
			@headBtnClick="buttonClick" />
 | 
			
		||||
		<!-- 列表 -->
 | 
			
		||||
		<base-table
 | 
			
		||||
			:page="queryParams.pageNo"
 | 
			
		||||
			:limit="queryParams.pageSize"
 | 
			
		||||
			:table-props="tableProps"
 | 
			
		||||
			:table-data="list"
 | 
			
		||||
			:max-height="tableH">
 | 
			
		||||
			<method-btn
 | 
			
		||||
				v-if="tableBtn.length"
 | 
			
		||||
				slot="handleBtn"
 | 
			
		||||
				:width="80"
 | 
			
		||||
				label="操作"
 | 
			
		||||
				:method-list="tableBtn"
 | 
			
		||||
				@clickBtn="handleClick" />
 | 
			
		||||
		</base-table>
 | 
			
		||||
		<pagination
 | 
			
		||||
			:page.sync="queryParams.pageNo"
 | 
			
		||||
			:limit.sync="queryParams.pageSize"
 | 
			
		||||
			:total="total"
 | 
			
		||||
			@pagination="getList" />
 | 
			
		||||
		<!-- 新增&编辑 -->
 | 
			
		||||
		<base-dialog
 | 
			
		||||
			:dialogTitle="addOrEditTitle"
 | 
			
		||||
			:dialogVisible="centervisible"
 | 
			
		||||
			@cancel="handleCancel"
 | 
			
		||||
			@confirm="handleConfirm"
 | 
			
		||||
			:before-close="handleCancel"
 | 
			
		||||
			width="60%">
 | 
			
		||||
			<voc-add
 | 
			
		||||
				ref="vocAdd"
 | 
			
		||||
				@successSubmit="successSubmit" />
 | 
			
		||||
		</base-dialog>
 | 
			
		||||
	</div>
 | 
			
		||||
</template>
 | 
			
		||||
<script>
 | 
			
		||||
import { parseTime } from '@/utils/ruoyi'
 | 
			
		||||
import VocAdd from './components/vocAdd'
 | 
			
		||||
import { publicFormatter } from '@/utils/dict'
 | 
			
		||||
import { environmentalCheckPage, environmentalCheckDelete } from '@/api/safetyEnvironmental/environmental'
 | 
			
		||||
import { parseTime } from '@/utils/ruoyi';
 | 
			
		||||
import VocAdd from './components/vocAdd';
 | 
			
		||||
import { publicFormatter } from '@/utils/dict';
 | 
			
		||||
import {
 | 
			
		||||
	environmentalCheckPage,
 | 
			
		||||
	environmentalCheckDelete,
 | 
			
		||||
} from '@/api/safetyEnvironmental/environmental';
 | 
			
		||||
import tableHeightMixin from '@/mixins/lb/tableHeightMixin';
 | 
			
		||||
const tableProps = [
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'name',
 | 
			
		||||
    label: '指标名称',
 | 
			
		||||
    minWidth: 120,
 | 
			
		||||
    showOverflowtooltip: true
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'code',
 | 
			
		||||
    label: '指标编码',
 | 
			
		||||
    minWidth: 120
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'unit',
 | 
			
		||||
    label: '单位',
 | 
			
		||||
    filter: publicFormatter('environment_check_unit')
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'minValue',
 | 
			
		||||
    label: '最小值'
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'maxValue',
 | 
			
		||||
    label: '最大值'
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'creator',
 | 
			
		||||
    label: '创建人'
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'createTime',
 | 
			
		||||
    label: '创建时间',
 | 
			
		||||
    filter: parseTime,
 | 
			
		||||
    minWidth: 160
 | 
			
		||||
  }
 | 
			
		||||
]
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'name',
 | 
			
		||||
		label: '指标名称',
 | 
			
		||||
		minWidth: 120,
 | 
			
		||||
		showOverflowtooltip: true,
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'code',
 | 
			
		||||
		label: '指标编码',
 | 
			
		||||
		minWidth: 120,
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'unit',
 | 
			
		||||
		label: '单位',
 | 
			
		||||
		filter: publicFormatter('environment_check_unit'),
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'minValue',
 | 
			
		||||
		label: '最小值',
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'maxValue',
 | 
			
		||||
		label: '最大值',
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'creator',
 | 
			
		||||
		label: '创建人',
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'createTime',
 | 
			
		||||
		label: '创建时间',
 | 
			
		||||
		filter: parseTime,
 | 
			
		||||
		minWidth: 160,
 | 
			
		||||
	},
 | 
			
		||||
];
 | 
			
		||||
export default {
 | 
			
		||||
  name: 'VocDetectionIndication',
 | 
			
		||||
  data() {
 | 
			
		||||
    return {
 | 
			
		||||
      formConfig: [
 | 
			
		||||
        {
 | 
			
		||||
          type: 'input',
 | 
			
		||||
          label: '指标名称',
 | 
			
		||||
          placeholder: '指标名称',
 | 
			
		||||
          param: 'name'
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          type: 'button',
 | 
			
		||||
          btnName: '查询',
 | 
			
		||||
          name: 'search',
 | 
			
		||||
          color: 'primary'
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          type: this.$auth.hasPermi('base:voc:create') ? 'separate' : '',
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          type: this.$auth.hasPermi('base:voc:create') ? 'button' : '',
 | 
			
		||||
          btnName: '新增',
 | 
			
		||||
          name: 'add',
 | 
			
		||||
          color: 'success',
 | 
			
		||||
          plain: true
 | 
			
		||||
        }
 | 
			
		||||
      ],
 | 
			
		||||
      // 查询参数
 | 
			
		||||
      queryParams: {
 | 
			
		||||
        pageNo: 1,
 | 
			
		||||
        pageSize: 20,
 | 
			
		||||
        checkType: 3,
 | 
			
		||||
        name: null
 | 
			
		||||
      },
 | 
			
		||||
      total: 0,
 | 
			
		||||
      tableProps,
 | 
			
		||||
      list: [],
 | 
			
		||||
      tableH: this.tableHeight(260),
 | 
			
		||||
      tableBtn: [
 | 
			
		||||
        this.$auth.hasPermi('base:voc:update')
 | 
			
		||||
          ? {
 | 
			
		||||
              type: 'edit',
 | 
			
		||||
              btnName: '编辑'
 | 
			
		||||
            }
 | 
			
		||||
          : undefined,
 | 
			
		||||
        this.$auth.hasPermi('base:voc:delete')
 | 
			
		||||
          ? {
 | 
			
		||||
              type: 'delete',
 | 
			
		||||
              btnName: '删除'
 | 
			
		||||
            }
 | 
			
		||||
          : undefined
 | 
			
		||||
      ].filter((v)=>v),
 | 
			
		||||
      addOrEditTitle: '',
 | 
			
		||||
      centervisible: false
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
  components: { VocAdd },
 | 
			
		||||
  mounted() {
 | 
			
		||||
    this.getList()
 | 
			
		||||
  },
 | 
			
		||||
  methods: {
 | 
			
		||||
    getList() {
 | 
			
		||||
      environmentalCheckPage({...this.queryParams}).then(res => {
 | 
			
		||||
        this.list = res.data.list || []
 | 
			
		||||
        this.total = res.data.total || 0
 | 
			
		||||
      })
 | 
			
		||||
    },
 | 
			
		||||
    buttonClick(val) {
 | 
			
		||||
      console.log(val)
 | 
			
		||||
      if (val.btnName === 'search') {
 | 
			
		||||
        this.queryParams.name = val.name
 | 
			
		||||
        this.getList()
 | 
			
		||||
      } else {
 | 
			
		||||
        this.addOrEditTitle = '新增'
 | 
			
		||||
        this.centervisible = true
 | 
			
		||||
        this.$nextTick(() => {
 | 
			
		||||
          this.$refs.vocAdd.init()
 | 
			
		||||
        })
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    handleClick(val) {
 | 
			
		||||
      console.log(val)
 | 
			
		||||
      switch (val.type) {
 | 
			
		||||
        case 'edit':
 | 
			
		||||
          this.addOrEditTitle = '编辑'
 | 
			
		||||
          this.centervisible = true
 | 
			
		||||
          this.$nextTick(() => {
 | 
			
		||||
            this.$refs.vocAdd.init(val.data.id)
 | 
			
		||||
          })
 | 
			
		||||
          break
 | 
			
		||||
        default:
 | 
			
		||||
          this.handleDelete(val.data)
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    // 删除
 | 
			
		||||
    handleDelete(val) {
 | 
			
		||||
      this.$modal.confirm('是否确认删除"' + val.name + '"的数据项?').then(function() {
 | 
			
		||||
        return environmentalCheckDelete({ id: val.id })
 | 
			
		||||
      }).then(() => {
 | 
			
		||||
        this.getList();
 | 
			
		||||
        this.$modal.msgSuccess("操作成功");
 | 
			
		||||
      }).catch(() => {});
 | 
			
		||||
    },
 | 
			
		||||
    // 新增
 | 
			
		||||
    handleCancel() {
 | 
			
		||||
      this.$refs.vocAdd.formClear()
 | 
			
		||||
      this.centervisible = false
 | 
			
		||||
      this.addOrEditTitle = ''
 | 
			
		||||
    },
 | 
			
		||||
    handleConfirm() {
 | 
			
		||||
      this.$refs.vocAdd.submitForm()
 | 
			
		||||
    },
 | 
			
		||||
    successSubmit() {
 | 
			
		||||
      this.handleCancel()
 | 
			
		||||
      this.getList()
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
	name: 'VocDetectionIndication',
 | 
			
		||||
	mixins: [tableHeightMixin],
 | 
			
		||||
	data() {
 | 
			
		||||
		return {
 | 
			
		||||
			formConfig: [
 | 
			
		||||
				{
 | 
			
		||||
					type: 'input',
 | 
			
		||||
					label: '指标名称',
 | 
			
		||||
					placeholder: '指标名称',
 | 
			
		||||
					param: 'name',
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					type: 'button',
 | 
			
		||||
					btnName: '查询',
 | 
			
		||||
					name: 'search',
 | 
			
		||||
					color: 'primary',
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					type: this.$auth.hasPermi('base:voc:create') ? 'separate' : '',
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					type: this.$auth.hasPermi('base:voc:create') ? 'button' : '',
 | 
			
		||||
					btnName: '新增',
 | 
			
		||||
					name: 'add',
 | 
			
		||||
					color: 'success',
 | 
			
		||||
					plain: true,
 | 
			
		||||
				},
 | 
			
		||||
			],
 | 
			
		||||
			// 查询参数
 | 
			
		||||
			queryParams: {
 | 
			
		||||
				pageNo: 1,
 | 
			
		||||
				pageSize: 20,
 | 
			
		||||
				checkType: 3,
 | 
			
		||||
				name: null,
 | 
			
		||||
			},
 | 
			
		||||
			total: 0,
 | 
			
		||||
			tableProps,
 | 
			
		||||
			list: [],
 | 
			
		||||
			tableBtn: [
 | 
			
		||||
				this.$auth.hasPermi('base:voc:update')
 | 
			
		||||
					? {
 | 
			
		||||
							type: 'edit',
 | 
			
		||||
							btnName: '编辑',
 | 
			
		||||
					  }
 | 
			
		||||
					: undefined,
 | 
			
		||||
				this.$auth.hasPermi('base:voc:delete')
 | 
			
		||||
					? {
 | 
			
		||||
							type: 'delete',
 | 
			
		||||
							btnName: '删除',
 | 
			
		||||
					  }
 | 
			
		||||
					: undefined,
 | 
			
		||||
			].filter((v) => v),
 | 
			
		||||
			addOrEditTitle: '',
 | 
			
		||||
			centervisible: false,
 | 
			
		||||
		};
 | 
			
		||||
	},
 | 
			
		||||
	components: { VocAdd },
 | 
			
		||||
	mounted() {
 | 
			
		||||
		this.getList();
 | 
			
		||||
	},
 | 
			
		||||
	methods: {
 | 
			
		||||
		getList() {
 | 
			
		||||
			environmentalCheckPage({ ...this.queryParams }).then((res) => {
 | 
			
		||||
				this.list = res.data.list || [];
 | 
			
		||||
				this.total = res.data.total || 0;
 | 
			
		||||
			});
 | 
			
		||||
		},
 | 
			
		||||
		buttonClick(val) {
 | 
			
		||||
			console.log(val);
 | 
			
		||||
			if (val.btnName === 'search') {
 | 
			
		||||
				this.queryParams.name = val.name;
 | 
			
		||||
				this.getList();
 | 
			
		||||
			} else {
 | 
			
		||||
				this.addOrEditTitle = '新增';
 | 
			
		||||
				this.centervisible = true;
 | 
			
		||||
				this.$nextTick(() => {
 | 
			
		||||
					this.$refs.vocAdd.init();
 | 
			
		||||
				});
 | 
			
		||||
			}
 | 
			
		||||
		},
 | 
			
		||||
		handleClick(val) {
 | 
			
		||||
			console.log(val);
 | 
			
		||||
			switch (val.type) {
 | 
			
		||||
				case 'edit':
 | 
			
		||||
					this.addOrEditTitle = '编辑';
 | 
			
		||||
					this.centervisible = true;
 | 
			
		||||
					this.$nextTick(() => {
 | 
			
		||||
						this.$refs.vocAdd.init(val.data.id);
 | 
			
		||||
					});
 | 
			
		||||
					break;
 | 
			
		||||
				default:
 | 
			
		||||
					this.handleDelete(val.data);
 | 
			
		||||
			}
 | 
			
		||||
		},
 | 
			
		||||
		// 删除
 | 
			
		||||
		handleDelete(val) {
 | 
			
		||||
			this.$modal
 | 
			
		||||
				.confirm('是否确认删除"' + val.name + '"的数据项?')
 | 
			
		||||
				.then(function () {
 | 
			
		||||
					return environmentalCheckDelete({ id: val.id });
 | 
			
		||||
				})
 | 
			
		||||
				.then(() => {
 | 
			
		||||
					this.getList();
 | 
			
		||||
					this.$modal.msgSuccess('操作成功');
 | 
			
		||||
				})
 | 
			
		||||
				.catch(() => {});
 | 
			
		||||
		},
 | 
			
		||||
		// 新增
 | 
			
		||||
		handleCancel() {
 | 
			
		||||
			this.$refs.vocAdd.formClear();
 | 
			
		||||
			this.centervisible = false;
 | 
			
		||||
			this.addOrEditTitle = '';
 | 
			
		||||
		},
 | 
			
		||||
		handleConfirm() {
 | 
			
		||||
			this.$refs.vocAdd.submitForm();
 | 
			
		||||
		},
 | 
			
		||||
		successSubmit() {
 | 
			
		||||
			this.handleCancel();
 | 
			
		||||
			this.getList();
 | 
			
		||||
		},
 | 
			
		||||
	},
 | 
			
		||||
};
 | 
			
		||||
</script>
 | 
			
		||||
@@ -1,185 +1,188 @@
 | 
			
		||||
<template>
 | 
			
		||||
  <div class="app-container wasteGasHis">
 | 
			
		||||
    <!-- 搜索工作栏 -->
 | 
			
		||||
    <search-bar
 | 
			
		||||
      :formConfigs="formConfig"
 | 
			
		||||
      ref="searchBarForm"
 | 
			
		||||
      @headBtnClick="buttonClick"
 | 
			
		||||
    />
 | 
			
		||||
    <!-- 列表 -->
 | 
			
		||||
    <base-table
 | 
			
		||||
      :page="queryParams.pageNo"
 | 
			
		||||
      :limit="queryParams.pageSize"
 | 
			
		||||
      :table-props="tableProps"
 | 
			
		||||
      :table-data="list"
 | 
			
		||||
      :max-height="tableH"
 | 
			
		||||
      :row-class-name="tableRowClassName"
 | 
			
		||||
    />
 | 
			
		||||
    <pagination
 | 
			
		||||
      :page.sync="queryParams.pageNo"
 | 
			
		||||
      :limit.sync="queryParams.pageSize"
 | 
			
		||||
      :total="total"
 | 
			
		||||
      @pagination="getList"
 | 
			
		||||
    />
 | 
			
		||||
  </div>
 | 
			
		||||
	<div class="app-container wasteGasHis">
 | 
			
		||||
		<!-- 搜索工作栏 -->
 | 
			
		||||
		<search-bar
 | 
			
		||||
			:formConfigs="formConfig"
 | 
			
		||||
			ref="searchBarForm"
 | 
			
		||||
			@headBtnClick="buttonClick" />
 | 
			
		||||
		<!-- 列表 -->
 | 
			
		||||
		<base-table
 | 
			
		||||
			:page="queryParams.pageNo"
 | 
			
		||||
			:limit="queryParams.pageSize"
 | 
			
		||||
			:table-props="tableProps"
 | 
			
		||||
			:table-data="list"
 | 
			
		||||
			:max-height="tableH"
 | 
			
		||||
			:row-class-name="tableRowClassName" />
 | 
			
		||||
		<pagination
 | 
			
		||||
			:page.sync="queryParams.pageNo"
 | 
			
		||||
			:limit.sync="queryParams.pageSize"
 | 
			
		||||
			:total="total"
 | 
			
		||||
			@pagination="getList" />
 | 
			
		||||
	</div>
 | 
			
		||||
</template>
 | 
			
		||||
<script>
 | 
			
		||||
import { publicFormatter } from '@/utils/dict'
 | 
			
		||||
import { parseTime } from '@/utils/ruoyi'
 | 
			
		||||
import { environmentalCheckRecordPage, environmentalCheckRecordExport, environmentalCheckPage } from '@/api/safetyEnvironmental/environmental'
 | 
			
		||||
import moment from 'moment'
 | 
			
		||||
import { publicFormatter } from '@/utils/dict';
 | 
			
		||||
import { parseTime } from '@/utils/ruoyi';
 | 
			
		||||
import {
 | 
			
		||||
	environmentalCheckRecordPage,
 | 
			
		||||
	environmentalCheckRecordExport,
 | 
			
		||||
	environmentalCheckPage,
 | 
			
		||||
} from '@/api/safetyEnvironmental/environmental';
 | 
			
		||||
import moment from 'moment';
 | 
			
		||||
import tableHeightMixin from '@/mixins/lb/tableHeightMixin';
 | 
			
		||||
const tableProps = [
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'checkName',
 | 
			
		||||
    label: '指标名称'
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'checkValue',
 | 
			
		||||
    label: '检测数值'
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'unit',
 | 
			
		||||
    label: '单位',
 | 
			
		||||
    filter: publicFormatter('environment_check_unit')
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'checkTime',
 | 
			
		||||
    label: '检测时间',
 | 
			
		||||
    filter: parseTime,
 | 
			
		||||
    minWidth: 160
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'origin',
 | 
			
		||||
    label: '来源',
 | 
			
		||||
    filter: (val) => ['手动', '自动'][val]
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'recordPerson',
 | 
			
		||||
    label: '录入人'
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'recordTime',
 | 
			
		||||
    label: '录入时间',
 | 
			
		||||
    filter: parseTime,
 | 
			
		||||
    minWidth: 160
 | 
			
		||||
  }
 | 
			
		||||
]
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'checkName',
 | 
			
		||||
		label: '指标名称',
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'checkValue',
 | 
			
		||||
		label: '检测数值',
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'unit',
 | 
			
		||||
		label: '单位',
 | 
			
		||||
		filter: publicFormatter('environment_check_unit'),
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'checkTime',
 | 
			
		||||
		label: '检测时间',
 | 
			
		||||
		filter: parseTime,
 | 
			
		||||
		minWidth: 160,
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'origin',
 | 
			
		||||
		label: '来源',
 | 
			
		||||
		filter: (val) => ['手动', '自动'][val],
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'recordPerson',
 | 
			
		||||
		label: '录入人',
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'recordTime',
 | 
			
		||||
		label: '录入时间',
 | 
			
		||||
		filter: parseTime,
 | 
			
		||||
		minWidth: 160,
 | 
			
		||||
	},
 | 
			
		||||
];
 | 
			
		||||
export default {
 | 
			
		||||
  name: 'WasteGasDetectionHistory',
 | 
			
		||||
  data() {
 | 
			
		||||
    return {
 | 
			
		||||
      formConfig: [
 | 
			
		||||
        {
 | 
			
		||||
          type: 'select',
 | 
			
		||||
          label: '指标名称',
 | 
			
		||||
          selectOptions: [],
 | 
			
		||||
          param: 'checkId',
 | 
			
		||||
          filterable: true
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          type: 'datePicker',
 | 
			
		||||
          label: '时间',
 | 
			
		||||
          dateType: 'datetimerange',
 | 
			
		||||
          format: 'yyyy-MM-dd HH:mm:ss',
 | 
			
		||||
          valueFormat: "timestamp",
 | 
			
		||||
          rangeSeparator: '-',
 | 
			
		||||
          startPlaceholder: '开始时间',
 | 
			
		||||
          endPlaceholder: '结束时间',
 | 
			
		||||
          param: 'timeVal',
 | 
			
		||||
          defaultSelect: [],
 | 
			
		||||
          width: 350
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          type: 'button',
 | 
			
		||||
          btnName: '查询',
 | 
			
		||||
          name: 'search',
 | 
			
		||||
          color: 'primary'
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          type: this.$auth.hasPermi('base:waste-gas:export') ? 'separate' : '',
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          type: this.$auth.hasPermi('base:waste-gas:export') ? 'button' : '',
 | 
			
		||||
          btnName: '导出',
 | 
			
		||||
          name: 'export',
 | 
			
		||||
          color: 'primary',
 | 
			
		||||
          plain: true
 | 
			
		||||
        }
 | 
			
		||||
      ],
 | 
			
		||||
      // 查询参数
 | 
			
		||||
      queryParams: {
 | 
			
		||||
        pageNo: 1,
 | 
			
		||||
        pageSize: 20,
 | 
			
		||||
        checkId: null,
 | 
			
		||||
        checkType: 2,
 | 
			
		||||
        startTime: null,
 | 
			
		||||
        endTime: null
 | 
			
		||||
      },
 | 
			
		||||
      tableProps,
 | 
			
		||||
      list: [],
 | 
			
		||||
      total: 0,
 | 
			
		||||
      tableH: this.tableHeight(260)
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
  created() {
 | 
			
		||||
    window.addEventListener('resize', () => {
 | 
			
		||||
      this.tableH = this.tableHeight(260)
 | 
			
		||||
    })
 | 
			
		||||
    let end = moment(moment().format('YYYY-MM-DD 23:59:59')).valueOf()
 | 
			
		||||
    let start = moment(moment().format('YYYY-MM-DD 00:00:00')).valueOf()
 | 
			
		||||
    this.formConfig[1].defaultSelect = [start, end]
 | 
			
		||||
    this.queryParams.startTime = start
 | 
			
		||||
    this.queryParams.endTime = end
 | 
			
		||||
    this.getSelectList()
 | 
			
		||||
    this.getList()
 | 
			
		||||
  },
 | 
			
		||||
  methods: {
 | 
			
		||||
    buttonClick(val) {
 | 
			
		||||
      this.queryParams.pageNo = 1;
 | 
			
		||||
      this.queryParams.checkId = val.checkId
 | 
			
		||||
      this.queryParams.startTime = val.timeVal ? val.timeVal[0] : null
 | 
			
		||||
      this.queryParams.endTime = val.timeVal ? val.timeVal[1] : null
 | 
			
		||||
      if (val.btnName === 'search') {
 | 
			
		||||
        this.getList()
 | 
			
		||||
      } else {
 | 
			
		||||
        this.$modal.confirm('是否确认导出').then(() => {
 | 
			
		||||
            return environmentalCheckRecordExport({...this.queryParams});
 | 
			
		||||
          }).then(response => {
 | 
			
		||||
            this.$download.excel(response, '废气检测历史记录.xls');
 | 
			
		||||
          }).catch(() => {})
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    getList() {
 | 
			
		||||
      environmentalCheckRecordPage({...this.queryParams}).then(res => {
 | 
			
		||||
        this.list = res.data.list || []
 | 
			
		||||
        this.total = res.data.total || 0
 | 
			
		||||
      })
 | 
			
		||||
    },
 | 
			
		||||
    getSelectList() {
 | 
			
		||||
      environmentalCheckPage({
 | 
			
		||||
        pageNo: 1,
 | 
			
		||||
        pageSize: 100,
 | 
			
		||||
        checkType: 2
 | 
			
		||||
      }).then(res => {
 | 
			
		||||
        console.log(res)
 | 
			
		||||
        this.formConfig[0].selectOptions = res.data.list || []
 | 
			
		||||
      })
 | 
			
		||||
    },
 | 
			
		||||
    tableRowClassName({row, rowIndex}) {
 | 
			
		||||
      console.log(row)
 | 
			
		||||
      if (row.markRed) {
 | 
			
		||||
        return 'warning-row'
 | 
			
		||||
      }else {
 | 
			
		||||
        return ''
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
	name: 'WasteGasDetectionHistory',
 | 
			
		||||
	mixins: [tableHeightMixin],
 | 
			
		||||
	data() {
 | 
			
		||||
		return {
 | 
			
		||||
			formConfig: [
 | 
			
		||||
				{
 | 
			
		||||
					type: 'select',
 | 
			
		||||
					label: '指标名称',
 | 
			
		||||
					selectOptions: [],
 | 
			
		||||
					param: 'checkId',
 | 
			
		||||
					filterable: true,
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					type: 'datePicker',
 | 
			
		||||
					label: '时间',
 | 
			
		||||
					dateType: 'datetimerange',
 | 
			
		||||
					format: 'yyyy-MM-dd HH:mm:ss',
 | 
			
		||||
					valueFormat: 'timestamp',
 | 
			
		||||
					rangeSeparator: '-',
 | 
			
		||||
					startPlaceholder: '开始时间',
 | 
			
		||||
					endPlaceholder: '结束时间',
 | 
			
		||||
					param: 'timeVal',
 | 
			
		||||
					defaultSelect: [],
 | 
			
		||||
					width: 350,
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					type: 'button',
 | 
			
		||||
					btnName: '查询',
 | 
			
		||||
					name: 'search',
 | 
			
		||||
					color: 'primary',
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					type: this.$auth.hasPermi('base:waste-gas:export') ? 'separate' : '',
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					type: this.$auth.hasPermi('base:waste-gas:export') ? 'button' : '',
 | 
			
		||||
					btnName: '导出',
 | 
			
		||||
					name: 'export',
 | 
			
		||||
					color: 'primary',
 | 
			
		||||
					plain: true,
 | 
			
		||||
				},
 | 
			
		||||
			],
 | 
			
		||||
			// 查询参数
 | 
			
		||||
			queryParams: {
 | 
			
		||||
				pageNo: 1,
 | 
			
		||||
				pageSize: 20,
 | 
			
		||||
				checkId: null,
 | 
			
		||||
				checkType: 2,
 | 
			
		||||
				startTime: null,
 | 
			
		||||
				endTime: null,
 | 
			
		||||
			},
 | 
			
		||||
			tableProps,
 | 
			
		||||
			list: [],
 | 
			
		||||
			total: 0,
 | 
			
		||||
		};
 | 
			
		||||
	},
 | 
			
		||||
	created() {
 | 
			
		||||
		let end = moment(moment().format('YYYY-MM-DD 23:59:59')).valueOf();
 | 
			
		||||
		let start = moment(moment().format('YYYY-MM-DD 00:00:00')).valueOf();
 | 
			
		||||
		this.formConfig[1].defaultSelect = [start, end];
 | 
			
		||||
		this.queryParams.startTime = start;
 | 
			
		||||
		this.queryParams.endTime = end;
 | 
			
		||||
		this.getSelectList();
 | 
			
		||||
		this.getList();
 | 
			
		||||
	},
 | 
			
		||||
	methods: {
 | 
			
		||||
		buttonClick(val) {
 | 
			
		||||
			this.queryParams.pageNo = 1;
 | 
			
		||||
			this.queryParams.checkId = val.checkId;
 | 
			
		||||
			this.queryParams.startTime = val.timeVal ? val.timeVal[0] : null;
 | 
			
		||||
			this.queryParams.endTime = val.timeVal ? val.timeVal[1] : null;
 | 
			
		||||
			if (val.btnName === 'search') {
 | 
			
		||||
				this.getList();
 | 
			
		||||
			} else {
 | 
			
		||||
				this.$modal
 | 
			
		||||
					.confirm('是否确认导出')
 | 
			
		||||
					.then(() => {
 | 
			
		||||
						return environmentalCheckRecordExport({ ...this.queryParams });
 | 
			
		||||
					})
 | 
			
		||||
					.then((response) => {
 | 
			
		||||
						this.$download.excel(response, '废气检测历史记录.xls');
 | 
			
		||||
					})
 | 
			
		||||
					.catch(() => {});
 | 
			
		||||
			}
 | 
			
		||||
		},
 | 
			
		||||
		getList() {
 | 
			
		||||
			environmentalCheckRecordPage({ ...this.queryParams }).then((res) => {
 | 
			
		||||
				this.list = res.data.list || [];
 | 
			
		||||
				this.total = res.data.total || 0;
 | 
			
		||||
			});
 | 
			
		||||
		},
 | 
			
		||||
		getSelectList() {
 | 
			
		||||
			environmentalCheckPage({
 | 
			
		||||
				pageNo: 1,
 | 
			
		||||
				pageSize: 100,
 | 
			
		||||
				checkType: 2,
 | 
			
		||||
			}).then((res) => {
 | 
			
		||||
				console.log(res);
 | 
			
		||||
				this.formConfig[0].selectOptions = res.data.list || [];
 | 
			
		||||
			});
 | 
			
		||||
		},
 | 
			
		||||
		tableRowClassName({ row, rowIndex }) {
 | 
			
		||||
			console.log(row);
 | 
			
		||||
			if (row.markRed) {
 | 
			
		||||
				return 'warning-row';
 | 
			
		||||
			} else {
 | 
			
		||||
				return '';
 | 
			
		||||
			}
 | 
			
		||||
		},
 | 
			
		||||
	},
 | 
			
		||||
};
 | 
			
		||||
</script>
 | 
			
		||||
<style lang='scss'>
 | 
			
		||||
.wasteGasHis {
 | 
			
		||||
  .el-table .warning-row {
 | 
			
		||||
    background: #fee1e1;
 | 
			
		||||
  }
 | 
			
		||||
	.el-table .warning-row {
 | 
			
		||||
		background: #fee1e1;
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
</style>
 | 
			
		||||
@@ -1,205 +1,210 @@
 | 
			
		||||
<template>
 | 
			
		||||
  <div class="app-container">
 | 
			
		||||
    <!-- 搜索工作栏 -->
 | 
			
		||||
    <search-bar
 | 
			
		||||
      :formConfigs="formConfig"
 | 
			
		||||
      ref="searchBarForm"
 | 
			
		||||
      @headBtnClick="buttonClick"
 | 
			
		||||
    />
 | 
			
		||||
    <!-- 列表 -->
 | 
			
		||||
    <base-table
 | 
			
		||||
      :page="queryParams.pageNo"
 | 
			
		||||
      :limit="queryParams.pageSize"
 | 
			
		||||
      :table-props="tableProps"
 | 
			
		||||
      :table-data="list"
 | 
			
		||||
      :max-height="tableH"
 | 
			
		||||
    >
 | 
			
		||||
      <method-btn
 | 
			
		||||
        v-if="tableBtn.length"
 | 
			
		||||
        slot="handleBtn"
 | 
			
		||||
        :width="80"
 | 
			
		||||
        label="操作"
 | 
			
		||||
        :method-list="tableBtn"
 | 
			
		||||
        @clickBtn="handleClick"
 | 
			
		||||
      />
 | 
			
		||||
    </base-table>
 | 
			
		||||
    <pagination
 | 
			
		||||
      :page.sync="queryParams.pageNo"
 | 
			
		||||
      :limit.sync="queryParams.pageSize"
 | 
			
		||||
      :total="total"
 | 
			
		||||
      @pagination="getList"
 | 
			
		||||
    />
 | 
			
		||||
    <!-- 新增&编辑 -->
 | 
			
		||||
    <base-dialog
 | 
			
		||||
      :dialogTitle="addOrEditTitle"
 | 
			
		||||
      :dialogVisible="centervisible"
 | 
			
		||||
      @cancel="handleCancel"
 | 
			
		||||
      @confirm="handleConfirm"
 | 
			
		||||
      :before-close="handleCancel"
 | 
			
		||||
      width='60%'
 | 
			
		||||
    >
 | 
			
		||||
      <waste-gas-add ref="wasteGasAdd" @successSubmit="successSubmit" />
 | 
			
		||||
    </base-dialog>
 | 
			
		||||
  </div>
 | 
			
		||||
	<div class="app-container">
 | 
			
		||||
		<!-- 搜索工作栏 -->
 | 
			
		||||
		<search-bar
 | 
			
		||||
			:formConfigs="formConfig"
 | 
			
		||||
			ref="searchBarForm"
 | 
			
		||||
			@headBtnClick="buttonClick" />
 | 
			
		||||
		<!-- 列表 -->
 | 
			
		||||
		<base-table
 | 
			
		||||
			:page="queryParams.pageNo"
 | 
			
		||||
			:limit="queryParams.pageSize"
 | 
			
		||||
			:table-props="tableProps"
 | 
			
		||||
			:table-data="list"
 | 
			
		||||
			:max-height="tableH">
 | 
			
		||||
			<method-btn
 | 
			
		||||
				v-if="tableBtn.length"
 | 
			
		||||
				slot="handleBtn"
 | 
			
		||||
				:width="80"
 | 
			
		||||
				label="操作"
 | 
			
		||||
				:method-list="tableBtn"
 | 
			
		||||
				@clickBtn="handleClick" />
 | 
			
		||||
		</base-table>
 | 
			
		||||
		<pagination
 | 
			
		||||
			:page.sync="queryParams.pageNo"
 | 
			
		||||
			:limit.sync="queryParams.pageSize"
 | 
			
		||||
			:total="total"
 | 
			
		||||
			@pagination="getList" />
 | 
			
		||||
		<!-- 新增&编辑 -->
 | 
			
		||||
		<base-dialog
 | 
			
		||||
			:dialogTitle="addOrEditTitle"
 | 
			
		||||
			:dialogVisible="centervisible"
 | 
			
		||||
			@cancel="handleCancel"
 | 
			
		||||
			@confirm="handleConfirm"
 | 
			
		||||
			:before-close="handleCancel"
 | 
			
		||||
			width="60%">
 | 
			
		||||
			<waste-gas-add
 | 
			
		||||
				ref="wasteGasAdd"
 | 
			
		||||
				@successSubmit="successSubmit" />
 | 
			
		||||
		</base-dialog>
 | 
			
		||||
	</div>
 | 
			
		||||
</template>
 | 
			
		||||
<script>
 | 
			
		||||
import { parseTime } from '@/utils/ruoyi'
 | 
			
		||||
import WasteGasAdd from './components/wasteGasAdd'
 | 
			
		||||
import { publicFormatter } from '@/utils/dict'
 | 
			
		||||
import { environmentalCheckPage, environmentalCheckDelete } from '@/api/safetyEnvironmental/environmental'
 | 
			
		||||
import { parseTime } from '@/utils/ruoyi';
 | 
			
		||||
import WasteGasAdd from './components/wasteGasAdd';
 | 
			
		||||
import { publicFormatter } from '@/utils/dict';
 | 
			
		||||
import {
 | 
			
		||||
	environmentalCheckPage,
 | 
			
		||||
	environmentalCheckDelete,
 | 
			
		||||
} from '@/api/safetyEnvironmental/environmental';
 | 
			
		||||
import tableHeightMixin from '@/mixins/lb/tableHeightMixin';
 | 
			
		||||
const tableProps = [
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'name',
 | 
			
		||||
    label: '指标名称',
 | 
			
		||||
    minWidth: 120,
 | 
			
		||||
    showOverflowtooltip: true
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'code',
 | 
			
		||||
    label: '指标编码',
 | 
			
		||||
    minWidth: 120
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'unit',
 | 
			
		||||
    label: '单位',
 | 
			
		||||
    filter: publicFormatter('environment_check_unit')
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'minValue',
 | 
			
		||||
    label: '最小值'
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'maxValue',
 | 
			
		||||
    label: '最大值'
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'creator',
 | 
			
		||||
    label: '创建人'
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'createTime',
 | 
			
		||||
    label: '创建时间',
 | 
			
		||||
    filter: parseTime,
 | 
			
		||||
    minWidth: 160
 | 
			
		||||
  }
 | 
			
		||||
]
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'name',
 | 
			
		||||
		label: '指标名称',
 | 
			
		||||
		minWidth: 120,
 | 
			
		||||
		showOverflowtooltip: true,
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'code',
 | 
			
		||||
		label: '指标编码',
 | 
			
		||||
		minWidth: 120,
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'unit',
 | 
			
		||||
		label: '单位',
 | 
			
		||||
		filter: publicFormatter('environment_check_unit'),
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'minValue',
 | 
			
		||||
		label: '最小值',
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'maxValue',
 | 
			
		||||
		label: '最大值',
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'creator',
 | 
			
		||||
		label: '创建人',
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'createTime',
 | 
			
		||||
		label: '创建时间',
 | 
			
		||||
		filter: parseTime,
 | 
			
		||||
		minWidth: 160,
 | 
			
		||||
	},
 | 
			
		||||
];
 | 
			
		||||
export default {
 | 
			
		||||
  name: 'WasteGasDetectionIndication',
 | 
			
		||||
  data() {
 | 
			
		||||
    return {
 | 
			
		||||
      formConfig: [
 | 
			
		||||
        {
 | 
			
		||||
          type: 'input',
 | 
			
		||||
          label: '指标名称',
 | 
			
		||||
          placeholder: '指标名称',
 | 
			
		||||
          param: 'name'
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          type: 'button',
 | 
			
		||||
          btnName: '查询',
 | 
			
		||||
          name: 'search',
 | 
			
		||||
          color: 'primary'
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          type: this.$auth.hasPermi('base:waste-gas:create') ? 'separate' : '',
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          type: this.$auth.hasPermi('base:waste-gas:create') ? 'button' : '',
 | 
			
		||||
          btnName: '新增',
 | 
			
		||||
          name: 'add',
 | 
			
		||||
          color: 'success',
 | 
			
		||||
          plain: true
 | 
			
		||||
        }
 | 
			
		||||
      ],
 | 
			
		||||
      // 查询参数
 | 
			
		||||
      queryParams: {
 | 
			
		||||
        pageNo: 1,
 | 
			
		||||
        pageSize: 20,
 | 
			
		||||
        checkType: 2,
 | 
			
		||||
        name: null
 | 
			
		||||
      },
 | 
			
		||||
      total: 0,
 | 
			
		||||
      tableProps,
 | 
			
		||||
      list: [],
 | 
			
		||||
      tableH: this.tableHeight(260),
 | 
			
		||||
      tableBtn: [
 | 
			
		||||
        this.$auth.hasPermi('base:waste-gas:update')
 | 
			
		||||
          ? {
 | 
			
		||||
              type: 'edit',
 | 
			
		||||
              btnName: '编辑'
 | 
			
		||||
            }
 | 
			
		||||
          : undefined,
 | 
			
		||||
        this.$auth.hasPermi('base:waste-gas:delete')
 | 
			
		||||
          ? {
 | 
			
		||||
              type: 'delete',
 | 
			
		||||
              btnName: '删除'
 | 
			
		||||
            }
 | 
			
		||||
          : undefined
 | 
			
		||||
      ].filter((v)=>v),
 | 
			
		||||
      addOrEditTitle: '',
 | 
			
		||||
      centervisible: false
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
  components: { WasteGasAdd },
 | 
			
		||||
  mounted() {
 | 
			
		||||
    this.getList()
 | 
			
		||||
  },
 | 
			
		||||
  methods: {
 | 
			
		||||
    getList() {
 | 
			
		||||
      environmentalCheckPage({...this.queryParams}).then(res => {
 | 
			
		||||
        this.list = res.data.list || []
 | 
			
		||||
        this.total = res.data.total || 0
 | 
			
		||||
      })
 | 
			
		||||
    },
 | 
			
		||||
    buttonClick(val) {
 | 
			
		||||
      console.log(val)
 | 
			
		||||
      if (val.btnName === 'search') {
 | 
			
		||||
        this.queryParams.name = val.name
 | 
			
		||||
        this.getList()
 | 
			
		||||
      } else {
 | 
			
		||||
        this.addOrEditTitle = '新增'
 | 
			
		||||
        this.centervisible = true
 | 
			
		||||
        this.$nextTick(() => {
 | 
			
		||||
          this.$refs.wasteGasAdd.init()
 | 
			
		||||
        })
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    handleClick(val) {
 | 
			
		||||
      console.log(val)
 | 
			
		||||
      switch (val.type) {
 | 
			
		||||
        case 'edit':
 | 
			
		||||
          this.addOrEditTitle = '编辑'
 | 
			
		||||
          this.centervisible = true
 | 
			
		||||
          this.$nextTick(() => {
 | 
			
		||||
            this.$refs.wasteGasAdd.init(val.data.id)
 | 
			
		||||
          })
 | 
			
		||||
          break
 | 
			
		||||
        default:
 | 
			
		||||
          this.handleDelete(val.data)
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    // 删除
 | 
			
		||||
    handleDelete(val) {
 | 
			
		||||
      this.$modal.confirm('是否确认删除"' + val.name + '"的数据项?').then(function() {
 | 
			
		||||
        return environmentalCheckDelete({ id: val.id })
 | 
			
		||||
      }).then(() => {
 | 
			
		||||
        this.getList();
 | 
			
		||||
        this.$modal.msgSuccess("操作成功");
 | 
			
		||||
      }).catch(() => {});
 | 
			
		||||
    },
 | 
			
		||||
    // 新增
 | 
			
		||||
    handleCancel() {
 | 
			
		||||
      this.$refs.wasteGasAdd.formClear()
 | 
			
		||||
      this.centervisible = false
 | 
			
		||||
      this.addOrEditTitle = ''
 | 
			
		||||
    },
 | 
			
		||||
    handleConfirm() {
 | 
			
		||||
      this.$refs.wasteGasAdd.submitForm()
 | 
			
		||||
    },
 | 
			
		||||
    successSubmit() {
 | 
			
		||||
      this.handleCancel()
 | 
			
		||||
      this.getList()
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
	name: 'WasteGasDetectionIndication',
 | 
			
		||||
	mixins: [tableHeightMixin],
 | 
			
		||||
	data() {
 | 
			
		||||
		return {
 | 
			
		||||
			formConfig: [
 | 
			
		||||
				{
 | 
			
		||||
					type: 'input',
 | 
			
		||||
					label: '指标名称',
 | 
			
		||||
					placeholder: '指标名称',
 | 
			
		||||
					param: 'name',
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					type: 'button',
 | 
			
		||||
					btnName: '查询',
 | 
			
		||||
					name: 'search',
 | 
			
		||||
					color: 'primary',
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					type: this.$auth.hasPermi('base:waste-gas:create') ? 'separate' : '',
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					type: this.$auth.hasPermi('base:waste-gas:create') ? 'button' : '',
 | 
			
		||||
					btnName: '新增',
 | 
			
		||||
					name: 'add',
 | 
			
		||||
					color: 'success',
 | 
			
		||||
					plain: true,
 | 
			
		||||
				},
 | 
			
		||||
			],
 | 
			
		||||
			// 查询参数
 | 
			
		||||
			queryParams: {
 | 
			
		||||
				pageNo: 1,
 | 
			
		||||
				pageSize: 20,
 | 
			
		||||
				checkType: 2,
 | 
			
		||||
				name: null,
 | 
			
		||||
			},
 | 
			
		||||
			total: 0,
 | 
			
		||||
			tableProps,
 | 
			
		||||
			list: [],
 | 
			
		||||
			tableBtn: [
 | 
			
		||||
				this.$auth.hasPermi('base:waste-gas:update')
 | 
			
		||||
					? {
 | 
			
		||||
							type: 'edit',
 | 
			
		||||
							btnName: '编辑',
 | 
			
		||||
					  }
 | 
			
		||||
					: undefined,
 | 
			
		||||
				this.$auth.hasPermi('base:waste-gas:delete')
 | 
			
		||||
					? {
 | 
			
		||||
							type: 'delete',
 | 
			
		||||
							btnName: '删除',
 | 
			
		||||
					  }
 | 
			
		||||
					: undefined,
 | 
			
		||||
			].filter((v) => v),
 | 
			
		||||
			addOrEditTitle: '',
 | 
			
		||||
			centervisible: false,
 | 
			
		||||
		};
 | 
			
		||||
	},
 | 
			
		||||
	components: { WasteGasAdd },
 | 
			
		||||
	mounted() {
 | 
			
		||||
		this.getList();
 | 
			
		||||
	},
 | 
			
		||||
	methods: {
 | 
			
		||||
		getList() {
 | 
			
		||||
			environmentalCheckPage({ ...this.queryParams }).then((res) => {
 | 
			
		||||
				this.list = res.data.list || [];
 | 
			
		||||
				this.total = res.data.total || 0;
 | 
			
		||||
			});
 | 
			
		||||
		},
 | 
			
		||||
		buttonClick(val) {
 | 
			
		||||
			console.log(val);
 | 
			
		||||
			if (val.btnName === 'search') {
 | 
			
		||||
				this.queryParams.name = val.name;
 | 
			
		||||
				this.getList();
 | 
			
		||||
			} else {
 | 
			
		||||
				this.addOrEditTitle = '新增';
 | 
			
		||||
				this.centervisible = true;
 | 
			
		||||
				this.$nextTick(() => {
 | 
			
		||||
					this.$refs.wasteGasAdd.init();
 | 
			
		||||
				});
 | 
			
		||||
			}
 | 
			
		||||
		},
 | 
			
		||||
		handleClick(val) {
 | 
			
		||||
			console.log(val);
 | 
			
		||||
			switch (val.type) {
 | 
			
		||||
				case 'edit':
 | 
			
		||||
					this.addOrEditTitle = '编辑';
 | 
			
		||||
					this.centervisible = true;
 | 
			
		||||
					this.$nextTick(() => {
 | 
			
		||||
						this.$refs.wasteGasAdd.init(val.data.id);
 | 
			
		||||
					});
 | 
			
		||||
					break;
 | 
			
		||||
				default:
 | 
			
		||||
					this.handleDelete(val.data);
 | 
			
		||||
			}
 | 
			
		||||
		},
 | 
			
		||||
		// 删除
 | 
			
		||||
		handleDelete(val) {
 | 
			
		||||
			this.$modal
 | 
			
		||||
				.confirm('是否确认删除"' + val.name + '"的数据项?')
 | 
			
		||||
				.then(function () {
 | 
			
		||||
					return environmentalCheckDelete({ id: val.id });
 | 
			
		||||
				})
 | 
			
		||||
				.then(() => {
 | 
			
		||||
					this.getList();
 | 
			
		||||
					this.$modal.msgSuccess('操作成功');
 | 
			
		||||
				})
 | 
			
		||||
				.catch(() => {});
 | 
			
		||||
		},
 | 
			
		||||
		// 新增
 | 
			
		||||
		handleCancel() {
 | 
			
		||||
			this.$refs.wasteGasAdd.formClear();
 | 
			
		||||
			this.centervisible = false;
 | 
			
		||||
			this.addOrEditTitle = '';
 | 
			
		||||
		},
 | 
			
		||||
		handleConfirm() {
 | 
			
		||||
			this.$refs.wasteGasAdd.submitForm();
 | 
			
		||||
		},
 | 
			
		||||
		successSubmit() {
 | 
			
		||||
			this.handleCancel();
 | 
			
		||||
			this.getList();
 | 
			
		||||
		},
 | 
			
		||||
	},
 | 
			
		||||
};
 | 
			
		||||
</script>
 | 
			
		||||
@@ -1,185 +1,190 @@
 | 
			
		||||
<template>
 | 
			
		||||
  <div class="app-container wasteWaterHis">
 | 
			
		||||
    <!-- 搜索工作栏 -->
 | 
			
		||||
    <search-bar
 | 
			
		||||
      :formConfigs="formConfig"
 | 
			
		||||
      ref="searchBarForm"
 | 
			
		||||
      @headBtnClick="buttonClick"
 | 
			
		||||
    />
 | 
			
		||||
    <!-- 列表 -->
 | 
			
		||||
    <base-table
 | 
			
		||||
      :page="queryParams.pageNo"
 | 
			
		||||
      :limit="queryParams.pageSize"
 | 
			
		||||
      :table-props="tableProps"
 | 
			
		||||
      :table-data="list"
 | 
			
		||||
      :max-height="tableH"
 | 
			
		||||
      :row-class-name="tableRowClassName"
 | 
			
		||||
    />
 | 
			
		||||
    <pagination
 | 
			
		||||
      :page.sync="queryParams.pageNo"
 | 
			
		||||
      :limit.sync="queryParams.pageSize"
 | 
			
		||||
      :total="total"
 | 
			
		||||
      @pagination="getList"
 | 
			
		||||
    />
 | 
			
		||||
  </div>
 | 
			
		||||
	<div class="app-container wasteWaterHis">
 | 
			
		||||
		<!-- 搜索工作栏 -->
 | 
			
		||||
		<search-bar
 | 
			
		||||
			:formConfigs="formConfig"
 | 
			
		||||
			ref="searchBarForm"
 | 
			
		||||
			@headBtnClick="buttonClick" />
 | 
			
		||||
		<!-- 列表 -->
 | 
			
		||||
		<base-table
 | 
			
		||||
			:page="queryParams.pageNo"
 | 
			
		||||
			:limit="queryParams.pageSize"
 | 
			
		||||
			:table-props="tableProps"
 | 
			
		||||
			:table-data="list"
 | 
			
		||||
			:max-height="tableH"
 | 
			
		||||
			:row-class-name="tableRowClassName" />
 | 
			
		||||
		<pagination
 | 
			
		||||
			:page.sync="queryParams.pageNo"
 | 
			
		||||
			:limit.sync="queryParams.pageSize"
 | 
			
		||||
			:total="total"
 | 
			
		||||
			@pagination="getList" />
 | 
			
		||||
	</div>
 | 
			
		||||
</template>
 | 
			
		||||
<script>
 | 
			
		||||
import { publicFormatter } from '@/utils/dict'
 | 
			
		||||
import { parseTime } from '@/utils/ruoyi'
 | 
			
		||||
import { environmentalCheckRecordPage, environmentalCheckRecordExport, environmentalCheckPage } from '@/api/safetyEnvironmental/environmental'
 | 
			
		||||
import moment from 'moment'
 | 
			
		||||
import { publicFormatter } from '@/utils/dict';
 | 
			
		||||
import { parseTime } from '@/utils/ruoyi';
 | 
			
		||||
import {
 | 
			
		||||
	environmentalCheckRecordPage,
 | 
			
		||||
	environmentalCheckRecordExport,
 | 
			
		||||
	environmentalCheckPage,
 | 
			
		||||
} from '@/api/safetyEnvironmental/environmental';
 | 
			
		||||
import moment from 'moment';
 | 
			
		||||
import tableHeightMixin from '@/mixins/lb/tableHeightMixin';
 | 
			
		||||
const tableProps = [
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'checkName',
 | 
			
		||||
    label: '指标名称'
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'checkValue',
 | 
			
		||||
    label: '检测数值'
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'unit',
 | 
			
		||||
    label: '单位',
 | 
			
		||||
    filter: publicFormatter('environment_check_unit')
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'checkTime',
 | 
			
		||||
    label: '检测时间',
 | 
			
		||||
    filter: parseTime,
 | 
			
		||||
    minWidth: 160
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'origin',
 | 
			
		||||
    label: '来源',
 | 
			
		||||
    filter: (val) => ['手动', '自动'][val]
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'recordPerson',
 | 
			
		||||
    label: '录入人'
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'recordTime',
 | 
			
		||||
    label: '录入时间',
 | 
			
		||||
    filter: parseTime,
 | 
			
		||||
    minWidth: 160
 | 
			
		||||
  }
 | 
			
		||||
]
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'checkName',
 | 
			
		||||
		label: '指标名称',
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'checkValue',
 | 
			
		||||
		label: '检测数值',
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'unit',
 | 
			
		||||
		label: '单位',
 | 
			
		||||
		filter: publicFormatter('environment_check_unit'),
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'checkTime',
 | 
			
		||||
		label: '检测时间',
 | 
			
		||||
		filter: parseTime,
 | 
			
		||||
		minWidth: 160,
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'origin',
 | 
			
		||||
		label: '来源',
 | 
			
		||||
		filter: (val) => ['手动', '自动'][val],
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'recordPerson',
 | 
			
		||||
		label: '录入人',
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'recordTime',
 | 
			
		||||
		label: '录入时间',
 | 
			
		||||
		filter: parseTime,
 | 
			
		||||
		minWidth: 160,
 | 
			
		||||
	},
 | 
			
		||||
];
 | 
			
		||||
export default {
 | 
			
		||||
  name: 'WasteWaterDetectionHistory',
 | 
			
		||||
  data() {
 | 
			
		||||
    return {
 | 
			
		||||
      formConfig: [
 | 
			
		||||
        {
 | 
			
		||||
          type: 'select',
 | 
			
		||||
          label: '指标名称',
 | 
			
		||||
          selectOptions: [],
 | 
			
		||||
          param: 'checkId',
 | 
			
		||||
          filterable: true
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          type: 'datePicker',
 | 
			
		||||
          label: '检测时间',
 | 
			
		||||
          dateType: 'datetimerange',
 | 
			
		||||
          format: 'yyyy-MM-dd HH:mm:ss',
 | 
			
		||||
          valueFormat: "timestamp",
 | 
			
		||||
          rangeSeparator: '-',
 | 
			
		||||
          startPlaceholder: '开始时间',
 | 
			
		||||
          endPlaceholder: '结束时间',
 | 
			
		||||
          param: 'timeVal',
 | 
			
		||||
          defaultSelect: [],
 | 
			
		||||
          width: 350
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          type: 'button',
 | 
			
		||||
          btnName: '查询',
 | 
			
		||||
          name: 'search',
 | 
			
		||||
          color: 'primary'
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          type: this.$auth.hasPermi('base:waste-water:export') ? 'separate' : '',
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          type: this.$auth.hasPermi('base:waste-water:export') ? 'button' : '',
 | 
			
		||||
          btnName: '导出',
 | 
			
		||||
          name: 'export',
 | 
			
		||||
          color: 'primary',
 | 
			
		||||
          plain: true
 | 
			
		||||
        }
 | 
			
		||||
      ],
 | 
			
		||||
      // 查询参数
 | 
			
		||||
      queryParams: {
 | 
			
		||||
        pageNo: 1,
 | 
			
		||||
        pageSize: 20,
 | 
			
		||||
        checkId: null,
 | 
			
		||||
        checkType: 1,
 | 
			
		||||
        startTime: null,
 | 
			
		||||
        endTime: null
 | 
			
		||||
      },
 | 
			
		||||
      tableProps,
 | 
			
		||||
      list: [],
 | 
			
		||||
      total: 0,
 | 
			
		||||
      tableH: this.tableHeight(260)
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
  created() {
 | 
			
		||||
    window.addEventListener('resize', () => {
 | 
			
		||||
      this.tableH = this.tableHeight(260)
 | 
			
		||||
    })
 | 
			
		||||
    let end = moment(moment().format('YYYY-MM-DD 23:59:59')).valueOf()
 | 
			
		||||
    let start = moment(moment().format('YYYY-MM-DD 00:00:00')).valueOf()
 | 
			
		||||
    this.formConfig[1].defaultSelect = [start, end]
 | 
			
		||||
    this.queryParams.startTime = start
 | 
			
		||||
    this.queryParams.endTime = end
 | 
			
		||||
    this.getSelectList()
 | 
			
		||||
    this.getList()
 | 
			
		||||
  },
 | 
			
		||||
  methods: {
 | 
			
		||||
    buttonClick(val) {
 | 
			
		||||
      this.queryParams.pageNo = 1;
 | 
			
		||||
      this.queryParams.checkId = val.checkId
 | 
			
		||||
      this.queryParams.startTime = val.timeVal ? val.timeVal[0] : null
 | 
			
		||||
      this.queryParams.endTime = val.timeVal ? val.timeVal[1] : null
 | 
			
		||||
      if (val.btnName === 'search') {
 | 
			
		||||
        this.getList()
 | 
			
		||||
      } else {
 | 
			
		||||
        this.$modal.confirm('是否确认导出').then(() => {
 | 
			
		||||
            return environmentalCheckRecordExport({...this.queryParams});
 | 
			
		||||
          }).then(response => {
 | 
			
		||||
            this.$download.excel(response, '废水检测历史记录.xls');
 | 
			
		||||
          }).catch(() => {})
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    getList() {
 | 
			
		||||
      environmentalCheckRecordPage({...this.queryParams}).then(res => {
 | 
			
		||||
        this.list = res.data.list || []
 | 
			
		||||
        this.total = res.data.total || 0
 | 
			
		||||
      })
 | 
			
		||||
    },
 | 
			
		||||
    getSelectList() {
 | 
			
		||||
      environmentalCheckPage({
 | 
			
		||||
        pageNo: 1,
 | 
			
		||||
        pageSize: 100,
 | 
			
		||||
        checkType: 1
 | 
			
		||||
      }).then(res => {
 | 
			
		||||
        console.log(res)
 | 
			
		||||
        this.formConfig[0].selectOptions = res.data.list || []
 | 
			
		||||
      })
 | 
			
		||||
    },
 | 
			
		||||
    tableRowClassName({row, rowIndex}) {
 | 
			
		||||
      console.log(row)
 | 
			
		||||
      if (row.markRed) {
 | 
			
		||||
        return 'warning-row'
 | 
			
		||||
      }else {
 | 
			
		||||
        return ''
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
	name: 'WasteWaterDetectionHistory',
 | 
			
		||||
	mixins: [tableHeightMixin],
 | 
			
		||||
	data() {
 | 
			
		||||
		return {
 | 
			
		||||
			formConfig: [
 | 
			
		||||
				{
 | 
			
		||||
					type: 'select',
 | 
			
		||||
					label: '指标名称',
 | 
			
		||||
					selectOptions: [],
 | 
			
		||||
					param: 'checkId',
 | 
			
		||||
					filterable: true,
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					type: 'datePicker',
 | 
			
		||||
					label: '检测时间',
 | 
			
		||||
					dateType: 'datetimerange',
 | 
			
		||||
					format: 'yyyy-MM-dd HH:mm:ss',
 | 
			
		||||
					valueFormat: 'timestamp',
 | 
			
		||||
					rangeSeparator: '-',
 | 
			
		||||
					startPlaceholder: '开始时间',
 | 
			
		||||
					endPlaceholder: '结束时间',
 | 
			
		||||
					param: 'timeVal',
 | 
			
		||||
					defaultSelect: [],
 | 
			
		||||
					width: 350,
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					type: 'button',
 | 
			
		||||
					btnName: '查询',
 | 
			
		||||
					name: 'search',
 | 
			
		||||
					color: 'primary',
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					type: this.$auth.hasPermi('base:waste-water:export')
 | 
			
		||||
						? 'separate'
 | 
			
		||||
						: '',
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					type: this.$auth.hasPermi('base:waste-water:export') ? 'button' : '',
 | 
			
		||||
					btnName: '导出',
 | 
			
		||||
					name: 'export',
 | 
			
		||||
					color: 'primary',
 | 
			
		||||
					plain: true,
 | 
			
		||||
				},
 | 
			
		||||
			],
 | 
			
		||||
			// 查询参数
 | 
			
		||||
			queryParams: {
 | 
			
		||||
				pageNo: 1,
 | 
			
		||||
				pageSize: 20,
 | 
			
		||||
				checkId: null,
 | 
			
		||||
				checkType: 1,
 | 
			
		||||
				startTime: null,
 | 
			
		||||
				endTime: null,
 | 
			
		||||
			},
 | 
			
		||||
			tableProps,
 | 
			
		||||
			list: [],
 | 
			
		||||
			total: 0,
 | 
			
		||||
		};
 | 
			
		||||
	},
 | 
			
		||||
	created() {
 | 
			
		||||
		let end = moment(moment().format('YYYY-MM-DD 23:59:59')).valueOf();
 | 
			
		||||
		let start = moment(moment().format('YYYY-MM-DD 00:00:00')).valueOf();
 | 
			
		||||
		this.formConfig[1].defaultSelect = [start, end];
 | 
			
		||||
		this.queryParams.startTime = start;
 | 
			
		||||
		this.queryParams.endTime = end;
 | 
			
		||||
		this.getSelectList();
 | 
			
		||||
		this.getList();
 | 
			
		||||
	},
 | 
			
		||||
	methods: {
 | 
			
		||||
		buttonClick(val) {
 | 
			
		||||
			this.queryParams.pageNo = 1;
 | 
			
		||||
			this.queryParams.checkId = val.checkId;
 | 
			
		||||
			this.queryParams.startTime = val.timeVal ? val.timeVal[0] : null;
 | 
			
		||||
			this.queryParams.endTime = val.timeVal ? val.timeVal[1] : null;
 | 
			
		||||
			if (val.btnName === 'search') {
 | 
			
		||||
				this.getList();
 | 
			
		||||
			} else {
 | 
			
		||||
				this.$modal
 | 
			
		||||
					.confirm('是否确认导出')
 | 
			
		||||
					.then(() => {
 | 
			
		||||
						return environmentalCheckRecordExport({ ...this.queryParams });
 | 
			
		||||
					})
 | 
			
		||||
					.then((response) => {
 | 
			
		||||
						this.$download.excel(response, '废水检测历史记录.xls');
 | 
			
		||||
					})
 | 
			
		||||
					.catch(() => {});
 | 
			
		||||
			}
 | 
			
		||||
		},
 | 
			
		||||
		getList() {
 | 
			
		||||
			environmentalCheckRecordPage({ ...this.queryParams }).then((res) => {
 | 
			
		||||
				this.list = res.data.list || [];
 | 
			
		||||
				this.total = res.data.total || 0;
 | 
			
		||||
			});
 | 
			
		||||
		},
 | 
			
		||||
		getSelectList() {
 | 
			
		||||
			environmentalCheckPage({
 | 
			
		||||
				pageNo: 1,
 | 
			
		||||
				pageSize: 100,
 | 
			
		||||
				checkType: 1,
 | 
			
		||||
			}).then((res) => {
 | 
			
		||||
				console.log(res);
 | 
			
		||||
				this.formConfig[0].selectOptions = res.data.list || [];
 | 
			
		||||
			});
 | 
			
		||||
		},
 | 
			
		||||
		tableRowClassName({ row, rowIndex }) {
 | 
			
		||||
			console.log(row);
 | 
			
		||||
			if (row.markRed) {
 | 
			
		||||
				return 'warning-row';
 | 
			
		||||
			} else {
 | 
			
		||||
				return '';
 | 
			
		||||
			}
 | 
			
		||||
		},
 | 
			
		||||
	},
 | 
			
		||||
};
 | 
			
		||||
</script>
 | 
			
		||||
<style lang='scss'>
 | 
			
		||||
.wasteWaterHis {
 | 
			
		||||
  .el-table .warning-row {
 | 
			
		||||
    background: #fee1e1;
 | 
			
		||||
  }
 | 
			
		||||
	.el-table .warning-row {
 | 
			
		||||
		background: #fee1e1;
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
</style>
 | 
			
		||||
@@ -1,205 +1,212 @@
 | 
			
		||||
<template>
 | 
			
		||||
  <div class="app-container">
 | 
			
		||||
    <!-- 搜索工作栏 -->
 | 
			
		||||
    <search-bar
 | 
			
		||||
      :formConfigs="formConfig"
 | 
			
		||||
      ref="searchBarForm"
 | 
			
		||||
      @headBtnClick="buttonClick"
 | 
			
		||||
    />
 | 
			
		||||
    <!-- 列表 -->
 | 
			
		||||
    <base-table
 | 
			
		||||
      :page="queryParams.pageNo"
 | 
			
		||||
      :limit="queryParams.pageSize"
 | 
			
		||||
      :table-props="tableProps"
 | 
			
		||||
      :table-data="list"
 | 
			
		||||
      :max-height="tableH"
 | 
			
		||||
    >
 | 
			
		||||
      <method-btn
 | 
			
		||||
        v-if="tableBtn.length"
 | 
			
		||||
        slot="handleBtn"
 | 
			
		||||
        :width="80"
 | 
			
		||||
        label="操作"
 | 
			
		||||
        :method-list="tableBtn"
 | 
			
		||||
        @clickBtn="handleClick"
 | 
			
		||||
      />
 | 
			
		||||
    </base-table>
 | 
			
		||||
    <pagination
 | 
			
		||||
      :page.sync="queryParams.pageNo"
 | 
			
		||||
      :limit.sync="queryParams.pageSize"
 | 
			
		||||
      :total="total"
 | 
			
		||||
      @pagination="getList"
 | 
			
		||||
    />
 | 
			
		||||
    <!-- 新增&编辑 -->
 | 
			
		||||
    <base-dialog
 | 
			
		||||
      :dialogTitle="addOrEditTitle"
 | 
			
		||||
      :dialogVisible="centervisible"
 | 
			
		||||
      @cancel="handleCancel"
 | 
			
		||||
      @confirm="handleConfirm"
 | 
			
		||||
      :before-close="handleCancel"
 | 
			
		||||
      width='60%'
 | 
			
		||||
    >
 | 
			
		||||
      <waste-water-add ref="wasteWaterAdd" @successSubmit="successSubmit" />
 | 
			
		||||
    </base-dialog>
 | 
			
		||||
  </div>
 | 
			
		||||
	<div class="app-container">
 | 
			
		||||
		<!-- 搜索工作栏 -->
 | 
			
		||||
		<search-bar
 | 
			
		||||
			:formConfigs="formConfig"
 | 
			
		||||
			ref="searchBarForm"
 | 
			
		||||
			@headBtnClick="buttonClick" />
 | 
			
		||||
		<!-- 列表 -->
 | 
			
		||||
		<base-table
 | 
			
		||||
			:page="queryParams.pageNo"
 | 
			
		||||
			:limit="queryParams.pageSize"
 | 
			
		||||
			:table-props="tableProps"
 | 
			
		||||
			:table-data="list"
 | 
			
		||||
			:max-height="tableH">
 | 
			
		||||
			<method-btn
 | 
			
		||||
				v-if="tableBtn.length"
 | 
			
		||||
				slot="handleBtn"
 | 
			
		||||
				:width="80"
 | 
			
		||||
				label="操作"
 | 
			
		||||
				:method-list="tableBtn"
 | 
			
		||||
				@clickBtn="handleClick" />
 | 
			
		||||
		</base-table>
 | 
			
		||||
		<pagination
 | 
			
		||||
			:page.sync="queryParams.pageNo"
 | 
			
		||||
			:limit.sync="queryParams.pageSize"
 | 
			
		||||
			:total="total"
 | 
			
		||||
			@pagination="getList" />
 | 
			
		||||
		<!-- 新增&编辑 -->
 | 
			
		||||
		<base-dialog
 | 
			
		||||
			:dialogTitle="addOrEditTitle"
 | 
			
		||||
			:dialogVisible="centervisible"
 | 
			
		||||
			@cancel="handleCancel"
 | 
			
		||||
			@confirm="handleConfirm"
 | 
			
		||||
			:before-close="handleCancel"
 | 
			
		||||
			width="60%">
 | 
			
		||||
			<waste-water-add
 | 
			
		||||
				ref="wasteWaterAdd"
 | 
			
		||||
				@successSubmit="successSubmit" />
 | 
			
		||||
		</base-dialog>
 | 
			
		||||
	</div>
 | 
			
		||||
</template>
 | 
			
		||||
<script>
 | 
			
		||||
import { parseTime } from '@/utils/ruoyi'
 | 
			
		||||
import WasteWaterAdd from './components/wasteWaterAdd'
 | 
			
		||||
import { publicFormatter } from '@/utils/dict'
 | 
			
		||||
import { environmentalCheckPage, environmentalCheckDelete } from '@/api/safetyEnvironmental/environmental'
 | 
			
		||||
import { parseTime } from '@/utils/ruoyi';
 | 
			
		||||
import WasteWaterAdd from './components/wasteWaterAdd';
 | 
			
		||||
import { publicFormatter } from '@/utils/dict';
 | 
			
		||||
import {
 | 
			
		||||
	environmentalCheckPage,
 | 
			
		||||
	environmentalCheckDelete,
 | 
			
		||||
} from '@/api/safetyEnvironmental/environmental';
 | 
			
		||||
import tableHeightMixin from '@/mixins/lb/tableHeightMixin';
 | 
			
		||||
const tableProps = [
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'name',
 | 
			
		||||
    label: '指标名称',
 | 
			
		||||
    minWidth: 120,
 | 
			
		||||
    showOverflowtooltip: true
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'code',
 | 
			
		||||
    label: '指标编码',
 | 
			
		||||
    minWidth: 120
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'unit',
 | 
			
		||||
    label: '单位',
 | 
			
		||||
    filter: publicFormatter('environment_check_unit')
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'minValue',
 | 
			
		||||
    label: '最小值'
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'maxValue',
 | 
			
		||||
    label: '最大值'
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'creator',
 | 
			
		||||
    label: '创建人'
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    prop: 'createTime',
 | 
			
		||||
    label: '创建时间',
 | 
			
		||||
    filter: parseTime,
 | 
			
		||||
    minWidth: 160
 | 
			
		||||
  }
 | 
			
		||||
]
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'name',
 | 
			
		||||
		label: '指标名称',
 | 
			
		||||
		minWidth: 120,
 | 
			
		||||
		showOverflowtooltip: true,
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'code',
 | 
			
		||||
		label: '指标编码',
 | 
			
		||||
		minWidth: 120,
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'unit',
 | 
			
		||||
		label: '单位',
 | 
			
		||||
		filter: publicFormatter('environment_check_unit'),
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'minValue',
 | 
			
		||||
		label: '最小值',
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'maxValue',
 | 
			
		||||
		label: '最大值',
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'creator',
 | 
			
		||||
		label: '创建人',
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		prop: 'createTime',
 | 
			
		||||
		label: '创建时间',
 | 
			
		||||
		filter: parseTime,
 | 
			
		||||
		minWidth: 160,
 | 
			
		||||
	},
 | 
			
		||||
];
 | 
			
		||||
export default {
 | 
			
		||||
  name: 'WasteWaterDetectionIndication',
 | 
			
		||||
  data() {
 | 
			
		||||
    return {
 | 
			
		||||
      formConfig: [
 | 
			
		||||
        {
 | 
			
		||||
          type: 'input',
 | 
			
		||||
          label: '指标名称',
 | 
			
		||||
          placeholder: '指标名称',
 | 
			
		||||
          param: 'name'
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          type: 'button',
 | 
			
		||||
          btnName: '查询',
 | 
			
		||||
          name: 'search',
 | 
			
		||||
          color: 'primary'
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          type: this.$auth.hasPermi('base:waste-water:create') ? 'separate' : '',
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          type: this.$auth.hasPermi('base:waste-water:create') ? 'button' : '',
 | 
			
		||||
          btnName: '新增',
 | 
			
		||||
          name: 'add',
 | 
			
		||||
          color: 'success',
 | 
			
		||||
          plain: true
 | 
			
		||||
        }
 | 
			
		||||
      ],
 | 
			
		||||
      // 查询参数
 | 
			
		||||
      queryParams: {
 | 
			
		||||
        pageNo: 1,
 | 
			
		||||
        pageSize: 20,
 | 
			
		||||
        checkType: 1,
 | 
			
		||||
        name: null
 | 
			
		||||
      },
 | 
			
		||||
      total: 0,
 | 
			
		||||
      tableProps,
 | 
			
		||||
      list: [],
 | 
			
		||||
      tableH: this.tableHeight(260),
 | 
			
		||||
      tableBtn: [
 | 
			
		||||
        this.$auth.hasPermi('base:waste-water:update')
 | 
			
		||||
          ? {
 | 
			
		||||
              type: 'edit',
 | 
			
		||||
              btnName: '编辑'
 | 
			
		||||
            }
 | 
			
		||||
          : undefined,
 | 
			
		||||
        this.$auth.hasPermi('base:waste-water:delete')
 | 
			
		||||
          ? {
 | 
			
		||||
              type: 'delete',
 | 
			
		||||
              btnName: '删除'
 | 
			
		||||
            }
 | 
			
		||||
          : undefined
 | 
			
		||||
      ].filter((v)=>v),
 | 
			
		||||
      addOrEditTitle: '',
 | 
			
		||||
      centervisible: false
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
  components: { WasteWaterAdd },
 | 
			
		||||
  mounted() {
 | 
			
		||||
    this.getList()
 | 
			
		||||
  },
 | 
			
		||||
  methods: {
 | 
			
		||||
    getList() {
 | 
			
		||||
      environmentalCheckPage({...this.queryParams}).then(res => {
 | 
			
		||||
        this.list = res.data.list || []
 | 
			
		||||
        this.total = res.data.total || 0
 | 
			
		||||
      })
 | 
			
		||||
    },
 | 
			
		||||
    buttonClick(val) {
 | 
			
		||||
      console.log(val)
 | 
			
		||||
      if (val.btnName === 'search') {
 | 
			
		||||
        this.queryParams.name = val.name
 | 
			
		||||
        this.getList()
 | 
			
		||||
      } else {
 | 
			
		||||
        this.addOrEditTitle = '新增'
 | 
			
		||||
        this.centervisible = true
 | 
			
		||||
        this.$nextTick(() => {
 | 
			
		||||
          this.$refs.wasteWaterAdd.init()
 | 
			
		||||
        })
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    handleClick(val) {
 | 
			
		||||
      console.log(val)
 | 
			
		||||
      switch (val.type) {
 | 
			
		||||
        case 'edit':
 | 
			
		||||
          this.addOrEditTitle = '编辑'
 | 
			
		||||
          this.centervisible = true
 | 
			
		||||
          this.$nextTick(() => {
 | 
			
		||||
            this.$refs.wasteWaterAdd.init(val.data.id)
 | 
			
		||||
          })
 | 
			
		||||
          break
 | 
			
		||||
        default:
 | 
			
		||||
          this.handleDelete(val.data)
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    // 删除
 | 
			
		||||
    handleDelete(val) {
 | 
			
		||||
      this.$modal.confirm('是否确认删除"' + val.name + '"的数据项?').then(function() {
 | 
			
		||||
        return environmentalCheckDelete({ id: val.id })
 | 
			
		||||
      }).then(() => {
 | 
			
		||||
        this.getList();
 | 
			
		||||
        this.$modal.msgSuccess("操作成功");
 | 
			
		||||
      }).catch(() => {});
 | 
			
		||||
    },
 | 
			
		||||
    // 新增
 | 
			
		||||
    handleCancel() {
 | 
			
		||||
      this.$refs.wasteWaterAdd.formClear()
 | 
			
		||||
      this.centervisible = false
 | 
			
		||||
      this.addOrEditTitle = ''
 | 
			
		||||
    },
 | 
			
		||||
    handleConfirm() {
 | 
			
		||||
      this.$refs.wasteWaterAdd.submitForm()
 | 
			
		||||
    },
 | 
			
		||||
    successSubmit() {
 | 
			
		||||
      this.handleCancel()
 | 
			
		||||
      this.getList()
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
	name: 'WasteWaterDetectionIndication',
 | 
			
		||||
	mixins: [tableHeightMixin],
 | 
			
		||||
	data() {
 | 
			
		||||
		return {
 | 
			
		||||
			formConfig: [
 | 
			
		||||
				{
 | 
			
		||||
					type: 'input',
 | 
			
		||||
					label: '指标名称',
 | 
			
		||||
					placeholder: '指标名称',
 | 
			
		||||
					param: 'name',
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					type: 'button',
 | 
			
		||||
					btnName: '查询',
 | 
			
		||||
					name: 'search',
 | 
			
		||||
					color: 'primary',
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					type: this.$auth.hasPermi('base:waste-water:create')
 | 
			
		||||
						? 'separate'
 | 
			
		||||
						: '',
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					type: this.$auth.hasPermi('base:waste-water:create') ? 'button' : '',
 | 
			
		||||
					btnName: '新增',
 | 
			
		||||
					name: 'add',
 | 
			
		||||
					color: 'success',
 | 
			
		||||
					plain: true,
 | 
			
		||||
				},
 | 
			
		||||
			],
 | 
			
		||||
			// 查询参数
 | 
			
		||||
			queryParams: {
 | 
			
		||||
				pageNo: 1,
 | 
			
		||||
				pageSize: 20,
 | 
			
		||||
				checkType: 1,
 | 
			
		||||
				name: null,
 | 
			
		||||
			},
 | 
			
		||||
			total: 0,
 | 
			
		||||
			tableProps,
 | 
			
		||||
			list: [],
 | 
			
		||||
			tableBtn: [
 | 
			
		||||
				this.$auth.hasPermi('base:waste-water:update')
 | 
			
		||||
					? {
 | 
			
		||||
							type: 'edit',
 | 
			
		||||
							btnName: '编辑',
 | 
			
		||||
					  }
 | 
			
		||||
					: undefined,
 | 
			
		||||
				this.$auth.hasPermi('base:waste-water:delete')
 | 
			
		||||
					? {
 | 
			
		||||
							type: 'delete',
 | 
			
		||||
							btnName: '删除',
 | 
			
		||||
					  }
 | 
			
		||||
					: undefined,
 | 
			
		||||
			].filter((v) => v),
 | 
			
		||||
			addOrEditTitle: '',
 | 
			
		||||
			centervisible: false,
 | 
			
		||||
		};
 | 
			
		||||
	},
 | 
			
		||||
	components: { WasteWaterAdd },
 | 
			
		||||
	mounted() {
 | 
			
		||||
		this.getList();
 | 
			
		||||
	},
 | 
			
		||||
	methods: {
 | 
			
		||||
		getList() {
 | 
			
		||||
			environmentalCheckPage({ ...this.queryParams }).then((res) => {
 | 
			
		||||
				this.list = res.data.list || [];
 | 
			
		||||
				this.total = res.data.total || 0;
 | 
			
		||||
			});
 | 
			
		||||
		},
 | 
			
		||||
		buttonClick(val) {
 | 
			
		||||
			console.log(val);
 | 
			
		||||
			if (val.btnName === 'search') {
 | 
			
		||||
				this.queryParams.name = val.name;
 | 
			
		||||
				this.getList();
 | 
			
		||||
			} else {
 | 
			
		||||
				this.addOrEditTitle = '新增';
 | 
			
		||||
				this.centervisible = true;
 | 
			
		||||
				this.$nextTick(() => {
 | 
			
		||||
					this.$refs.wasteWaterAdd.init();
 | 
			
		||||
				});
 | 
			
		||||
			}
 | 
			
		||||
		},
 | 
			
		||||
		handleClick(val) {
 | 
			
		||||
			console.log(val);
 | 
			
		||||
			switch (val.type) {
 | 
			
		||||
				case 'edit':
 | 
			
		||||
					this.addOrEditTitle = '编辑';
 | 
			
		||||
					this.centervisible = true;
 | 
			
		||||
					this.$nextTick(() => {
 | 
			
		||||
						this.$refs.wasteWaterAdd.init(val.data.id);
 | 
			
		||||
					});
 | 
			
		||||
					break;
 | 
			
		||||
				default:
 | 
			
		||||
					this.handleDelete(val.data);
 | 
			
		||||
			}
 | 
			
		||||
		},
 | 
			
		||||
		// 删除
 | 
			
		||||
		handleDelete(val) {
 | 
			
		||||
			this.$modal
 | 
			
		||||
				.confirm('是否确认删除"' + val.name + '"的数据项?')
 | 
			
		||||
				.then(function () {
 | 
			
		||||
					return environmentalCheckDelete({ id: val.id });
 | 
			
		||||
				})
 | 
			
		||||
				.then(() => {
 | 
			
		||||
					this.getList();
 | 
			
		||||
					this.$modal.msgSuccess('操作成功');
 | 
			
		||||
				})
 | 
			
		||||
				.catch(() => {});
 | 
			
		||||
		},
 | 
			
		||||
		// 新增
 | 
			
		||||
		handleCancel() {
 | 
			
		||||
			this.$refs.wasteWaterAdd.formClear();
 | 
			
		||||
			this.centervisible = false;
 | 
			
		||||
			this.addOrEditTitle = '';
 | 
			
		||||
		},
 | 
			
		||||
		handleConfirm() {
 | 
			
		||||
			this.$refs.wasteWaterAdd.submitForm();
 | 
			
		||||
		},
 | 
			
		||||
		successSubmit() {
 | 
			
		||||
			this.handleCancel();
 | 
			
		||||
			this.getList();
 | 
			
		||||
		},
 | 
			
		||||
	},
 | 
			
		||||
};
 | 
			
		||||
</script>
 | 
			
		||||
		Посилання в новій задачі
	
	Block a user