Riku
2025-06-23 ff82e86becbd200adabd2ce56fba1f6b3c6c37e1
src/views/management/TaskSummary.vue
@@ -1,5 +1,6 @@
<template>
  <el-row> 巡查汇总 </el-row>
  <BaseCard title="巡查汇总">
    <!-- <el-row> 巡查汇总 </el-row> -->
  <el-segmented v-model="value" :options="options" block />
  <div v-show="value == '今日汇总'">
    <div ref="echart1" class="bar-chart"></div>
@@ -10,9 +11,10 @@
  <div v-show="value == '上周汇总'">
    <div ref="echart3" class="bar-chart"></div>
  </div>
  <div v-show="value == '月度汇总'">
    <div v-show="value == '本月汇总'">
    <div ref="echart4" class="bar-chart"></div>
  </div>
  </BaseCard>
</template>
<script setup>
@@ -30,8 +32,8 @@
const emits = defineEmits(['update:height'])
const value = ref('月度汇总')
const options = ['今日汇总', '本周汇总', '上周汇总', '月度汇总']
const value = ref('本月汇总')
const options = ['今日汇总', '本周汇总', '上周汇总', '本月汇总']
const subtaskToday = ref([])
const subtaskWeek = ref([])
@@ -139,7 +141,7 @@
    yAxis: [
      {
        type: 'category',
        data: ['整改数', '问题数', '完成量']
        data: ['复核数', '整改数', '问题数', '完成量']
      }
    ],
    series: series
@@ -153,6 +155,7 @@
  const totalCount = {
    numByTotal: {},
    numByDistrict: {},
    numByStreet: {},
    numByScene: {},
    numByUser: {}
  }
@@ -160,6 +163,7 @@
  const proCount = {
    numByTotal: {},
    numByDistrict: {},
    numByStreet: {},
    numByScene: {},
    numByUser: {}
  }
@@ -167,19 +171,24 @@
  const changeCount = {
    numByTotal: {},
    numByDistrict: {},
    numByStreet: {},
    numByScene: {},
    numByUser: {}
  }
  // // 按用户分类
  // const userCount = {
  //   numByTotal: {},
  //   numByDistrict: {},
  //   numByScene: {},
  //   numByUser: {}
  // }
  // 复核数
  const reCheckCount = {
    numByTotal: {},
    numByDistrict: {},
    numByStreet: {},
    numByScene: {},
    numByUser: {}
  }
  const historySceneId = []
  dataList.forEach((d) => {
    const tName = '总计'
    const dName = d.subtask.districtname
    const townName = d.scene.townname
    const sType = d.sceneType
    const uName = d.subtask.deployerrealname
@@ -190,6 +199,10 @@
    // 任务量分区县
    totalCount.numByDistrict[dName] = totalCount.numByDistrict[dName]
      ? totalCount.numByDistrict[dName] + 1
      : 1
    // 任务量分街镇
    totalCount.numByStreet[townName] = totalCount.numByStreet[townName]
      ? totalCount.numByStreet[townName] + 1
      : 1
    // 任务量分场景类型
    totalCount.numByScene[sType] = totalCount.numByScene[sType]
@@ -205,6 +218,10 @@
    // 问题数分区县
    proCount.numByDistrict[dName] = proCount.numByDistrict[dName]
      ? proCount.numByDistrict[dName] + d.proCheckedNum
      : d.proCheckedNum
    // 问题数分街镇
    proCount.numByStreet[townName] = proCount.numByStreet[townName]
      ? proCount.numByStreet[townName] + d.proCheckedNum
      : d.proCheckedNum
    // 问题数分场景类型
    proCount.numByScene[sType] = proCount.numByScene[sType]
@@ -223,6 +240,10 @@
    changeCount.numByDistrict[dName] = changeCount.numByDistrict[dName]
      ? changeCount.numByDistrict[dName] + d.changeCheckedNum
      : d.changeCheckedNum
    // 整改数分街镇
    changeCount.numByStreet[townName] = changeCount.numByStreet[townName]
      ? changeCount.numByStreet[townName] + d.changeCheckedNum
      : d.changeCheckedNum
    // 整改数分场景类型
    changeCount.numByScene[sType] = changeCount.numByScene[sType]
      ? changeCount.numByScene[sType] + d.changeCheckedNum
@@ -231,12 +252,40 @@
    changeCount.numByUser[uName] = changeCount.numByUser[uName]
      ? changeCount.numByUser[uName] + d.changeCheckedNum
      : d.changeCheckedNum
    if (historySceneId.length == 0) {
      reCheckCount.numByTotal[tName] = 0
      reCheckCount.numByDistrict[dName] = 0
      reCheckCount.numByScene[sType] = 0
      reCheckCount.numByUser[uName] = 0
    } else if (historySceneId.indexOf(d.sceneId) != -1) {
      // 复核数总计
      reCheckCount.numByTotal[tName] = reCheckCount.numByTotal[tName]
        ? reCheckCount.numByTotal[tName] + 1
        : 1
      // 复核数分区县
      reCheckCount.numByDistrict[dName] = reCheckCount.numByDistrict[dName]
        ? reCheckCount.numByDistrict[dName] + 1
        : 1
      // 复核数分街镇
      reCheckCount.numByStreet[townName] = reCheckCount.numByStreet[townName]
        ? reCheckCount.numByStreet[townName] + 1
        : 1
      // 复核数分场景类型
      reCheckCount.numByScene[sType] = reCheckCount.numByScene[sType]
        ? reCheckCount.numByScene[sType] + 1
        : 1
      // 复核数分用户
      reCheckCount.numByUser[uName] = reCheckCount.numByUser[uName]
        ? reCheckCount.numByUser[uName] + 1
        : 1
    } else {
      historySceneId.push(d.sceneId)
    }
  })
  let series = {}
  totalCount
  proCount
  changeCount
  parseSeries(series, reCheckCount)
  parseSeries(series, changeCount)
  parseSeries(series, proCount)
  parseSeries(series, totalCount)
@@ -291,12 +340,33 @@
        label: {
          show: true,
          formatter: '{c}'
          // position: [0, 10],
          // position: 'top',
        },
        data: [value]
      }
    }
  }
  // for (const key in c.numByStreet) {
  //   const value = c.numByStreet[key]
  //   if (series[key]) {
  //     series[key].data.push(value)
  //   } else {
  //     series[key] = {
  //       name: `街镇:${key}`,
  //       type: 'bar',
  //       stack: 'street',
  //       emphasis: {
  //         focus: 'series'
  //       },
  //       label: {
  //         show: true,
  //         formatter: '{c}'
  //         // position: 'top',
  //       },
  //       data: [value]
  //     }
  //   }
  // }
  for (const key in c.numByScene) {
    const value = c.numByScene[key]
    if (series[key]) {