From ff82e86becbd200adabd2ce56fba1f6b3c6c37e1 Mon Sep 17 00:00:00 2001
From: Riku <risaku@163.com>
Date: 星期一, 23 六月 2025 23:10:49 +0800
Subject: [PATCH] 2025.6.23

---
 src/views/management/TaskSummary.vue |  139 ++++++++++++++++++++++++++++++++++++----------
 1 files changed, 108 insertions(+), 31 deletions(-)

diff --git a/src/views/management/TaskSummary.vue b/src/views/management/TaskSummary.vue
index 910d206..1926d9f 100644
--- a/src/views/management/TaskSummary.vue
+++ b/src/views/management/TaskSummary.vue
@@ -1,21 +1,26 @@
 <template>
-  <el-row> 宸℃煡姹囨�� </el-row>
-  <el-segmented v-model="value" :options="options" block />
-  <div v-show="value == '浠婃棩姹囨��'">
-    <div ref="echart1" class="bar-chart"></div>
-  </div>
-  <div v-show="value == '鏈懆姹囨��'">
-    <div ref="echart2" class="bar-chart"></div>
-  </div>
-  <div v-show="value == '涓婂懆姹囨��'">
-    <div ref="echart3" class="bar-chart"></div>
-  </div>
-  <div v-show="value == '鏈堝害姹囨��'">
-    <div ref="echart4" class="bar-chart"></div>
-  </div>
+  <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>
+    </div>
+    <div v-show="value == '鏈懆姹囨��'">
+      <div ref="echart2" class="bar-chart"></div>
+    </div>
+    <div v-show="value == '涓婂懆姹囨��'">
+      <div ref="echart3" class="bar-chart"></div>
+    </div>
+    <div v-show="value == '鏈湀姹囨��'">
+      <div ref="echart4" class="bar-chart"></div>
+    </div>
+  </BaseCard>
 </template>
 
 <script setup>
+/**
+ * 1. 鍖哄煙鍒嗙被缁熻鏇村姞鐏垫椿
+ */
 import * as echarts from 'echarts'
 import { ref, onMounted } from 'vue'
 import dayjs from 'dayjs'
@@ -27,8 +32,8 @@
 
 const emits = defineEmits(['update:height'])
 
-const value = ref('鏈堝害姹囨��')
-const options = ['浠婃棩姹囨��', '鏈懆姹囨��', '涓婂懆姹囨��', '鏈堝害姹囨��']
+const value = ref('鏈湀姹囨��')
+const options = ['浠婃棩姹囨��', '鏈懆姹囨��', '涓婂懆姹囨��', '鏈湀姹囨��']
 
 const subtaskToday = ref([])
 const subtaskWeek = ref([])
@@ -63,6 +68,9 @@
 
 function fetchSubtaskThisWeek() {
   const area = getParams('week')
+  // 淇敼鏃舵涓哄懆涓�鍒板懆鏃�
+  area.starttime = dayjs(area.starttime).add(1, 'day').format('YYYY-MM-DD HH:mm:ss')
+  area.endtime = dayjs(area.endtime).add(1, 'day').format('YYYY-MM-DD HH:mm:ss')
   taskApi.fetchSubtaskSummaryByArea(area).then((res) => {
     subtaskWeek.value = res.data
     const series = refreshChartData(res.data)
@@ -72,8 +80,9 @@
 
 function fetchSubtaskLastWeek() {
   const area = getParams('week')
-  area.starttime = dayjs(area.starttime).add(-7, 'day').format('YYYY-MM-DD HH:mm:ss')
-  area.endtime = dayjs(area.endtime).add(-7, 'day').format('YYYY-MM-DD HH:mm:ss')
+  // 淇敼鏃舵涓哄懆涓�鍒板懆鏃�
+  area.starttime = dayjs(area.starttime).add(-6, 'day').format('YYYY-MM-DD HH:mm:ss')
+  area.endtime = dayjs(area.endtime).add(-6, 'day').format('YYYY-MM-DD HH:mm:ss')
   taskApi.fetchSubtaskSummaryByArea(area).then((res) => {
     subtaskLastWeek.value = res.data
     const series = refreshChartData(res.data)
@@ -132,7 +141,7 @@
     yAxis: [
       {
         type: 'category',
-        data: ['鏁存敼鏁�', '闂鏁�', '瀹屾垚閲�']
+        data: ['澶嶆牳鏁�', '鏁存敼鏁�', '闂鏁�', '瀹屾垚閲�']
       }
     ],
     series: series
@@ -146,6 +155,7 @@
   const totalCount = {
     numByTotal: {},
     numByDistrict: {},
+    numByStreet: {},
     numByScene: {},
     numByUser: {}
   }
@@ -153,6 +163,7 @@
   const proCount = {
     numByTotal: {},
     numByDistrict: {},
+    numByStreet: {},
     numByScene: {},
     numByUser: {}
   }
@@ -160,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
 
@@ -183,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]
@@ -198,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]
@@ -216,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
@@ -224,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)
@@ -284,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]) {
@@ -380,6 +457,6 @@
 
 .bar-chart {
   width: 400px;
-  height: 600px;
+  height: 400px;
 }
 </style>

--
Gitblit v1.9.3