From a030cd7ebede3762fda4dcb6511f43712a417a58 Mon Sep 17 00:00:00 2001
From: riku <risaku@163.com>
Date: 星期五, 20 六月 2025 13:25:45 +0800
Subject: [PATCH] 2025.6.20

---
 src/views/management/TaskSummary.vue                          |   13 ++
 src/views/management/TaskStats.vue                            |   33 ++++---
 src/components/inspection/TaskItem.vue                        |  116 +++++++++++++++-------------
 src/views/inspection/problem/component/ProblemChangeChart.vue |   20 ++--
 4 files changed, 99 insertions(+), 83 deletions(-)

diff --git a/src/components/inspection/TaskItem.vue b/src/components/inspection/TaskItem.vue
index 9a32527..433d7d1 100644
--- a/src/components/inspection/TaskItem.vue
+++ b/src/components/inspection/TaskItem.vue
@@ -1,56 +1,61 @@
 <template>
-  <el-row justify="start">
-    <el-text>{{ name }}</el-text>
-  </el-row>
-  <div>
-    <el-text>鎬婚噺</el-text>
-    <el-text size="default">{{ completetask + '/' + totaltask }}</el-text>
-    <el-progress
-      style="width: 300px"
-      type="line"
-      status="warning"
-      :text-inside="true"
-      :stroke-width="18"
-      :striped="percentFormat(completetask, totaltask) < 100"
-      striped-flow
-      :percentage="percentFormat(completetask, totaltask)"
-    >
-      <template #default="{ percentage }">
-        <span class="percentage-value">{{ percentage }}%</span>
-      </template>
-    </el-progress>
-  </div>
-  <!-- </el-col> -->
-  <!-- <el-col span="12" class="flex-bottom"> -->
-  <!-- <div>{{ name }}</div> -->
-  <!-- <div>{{ planTime }}</div> -->
-  <!-- <div>{{ userName }}</div> -->
-  <el-row class="m-t-8">
-    <div
-      align="center"
-      :style="'width: ' + 300 / count.length + 'px'"
-      v-for="item in count"
-      :key="item.sceneType"
-    >
+  <div v-if="value">
+    <el-row justify="start">
+      <el-text>{{ value.name }}</el-text>
+    </el-row>
+    <div>
+      <el-text>鎬婚噺</el-text>
+      <el-text v-if="value._totaltask > 0" size="default">{{
+        value._completetask + '/' + value._totaltask
+      }}</el-text>
+      <el-text v-else size="default">{{ value.completetask + '/' + value.totaltask }}</el-text>
       <el-progress
-        :stroke-width="18"
-        status="exception"
+        style="width: 300px"
+        type="line"
+        status="warning"
         :text-inside="true"
-        :striped="percentFormat(item.finish, item.total) < 100"
+        :stroke-width="18"
+        :striped="percentFormat(value.completetask, value.totaltask) < 100"
         striped-flow
-        :percentage="percentFormat(item.finish, item.total)"
+        :percentage="percentFormat(value.completetask, value.totaltask)"
       >
         <template #default="{ percentage }">
-          <span class="percentage-value-small">{{ percentage }}%</span>
+          <span class="percentage-value">{{ percentage }}%</span>
         </template>
       </el-progress>
-      <el-text size="small" truncated>{{ item.sceneType }}</el-text>
-      <!-- <el-text size="small">{{ item.finish + '/' + item.total }}</el-text> -->
-      <!-- <span class="percentage-value-small">{{ percentFormat(item.finish, item.total) }}%</span> -->
-      <!-- <div class="percentage-label-small">{{ item.sceneType }}</div> -->
-      <!-- <span class="percentage-label-small">{{ item.finish + '/' + item.total }} </span> -->
     </div>
-  </el-row>
+    <!-- </el-col> -->
+    <!-- <el-col span="12" class="flex-bottom"> -->
+    <!-- <div>{{ name }}</div> -->
+    <!-- <div>{{ planTime }}</div> -->
+    <!-- <div>{{ userName }}</div> -->
+    <el-row class="m-t-8">
+      <div
+        align="center"
+        :style="'width: ' + 300 / value.count.length + 'px'"
+        v-for="item in value.count"
+        :key="item.sceneType"
+      >
+        <el-progress
+          :stroke-width="18"
+          status="exception"
+          :text-inside="true"
+          :striped="percentFormat(item.finish, item.total) < 100"
+          striped-flow
+          :percentage="percentFormat(item.finish, item.total)"
+        >
+          <template #default="{ percentage }">
+            <span class="percentage-value-small">{{ percentage }}%</span>
+          </template>
+        </el-progress>
+        <el-text size="small" truncated>{{ item.sceneType }}</el-text>
+        <!-- <el-text size="small">{{ item.finish + '/' + item.total }}</el-text> -->
+        <!-- <span class="percentage-value-small">{{ percentFormat(item.finish, item.total) }}%</span> -->
+        <!-- <div class="percentage-label-small">{{ item.sceneType }}</div> -->
+        <!-- <span class="percentage-label-small">{{ item.finish + '/' + item.total }} </span> -->
+      </div>
+    </el-row>
+  </div>
 </template>
 
 <script>
@@ -59,18 +64,19 @@
  */
 export default {
   props: {
-    name: String,
-    province: String,
-    district: String,
-    planTime: String,
-    startTime: String,
-    endTime: String,
-    userName: String,
-    status: String,
-    totaltask: Number,
-    completetask: Number,
+    // name: String,
+    // province: String,
+    // district: String,
+    // planTime: String,
+    // startTime: String,
+    // endTime: String,
+    // userName: String,
+    // status: String,
+    // totaltask: Number,
+    // completetask: Number,
+    // count: Array,
 
-    count: Array
+    value: Object
   },
   data() {
     return {}
diff --git a/src/views/inspection/problem/component/ProblemChangeChart.vue b/src/views/inspection/problem/component/ProblemChangeChart.vue
index f186224..24675ee 100644
--- a/src/views/inspection/problem/component/ProblemChangeChart.vue
+++ b/src/views/inspection/problem/component/ProblemChangeChart.vue
@@ -3,12 +3,12 @@
     <el-col :span="24">
       <el-row justify="space-between" class="p-h-16">
         <el-statistic title="鍦烘櫙鏁�" :value="sceneNum" />
-        <el-statistic title="闂鏁�" :value="proNum" />
-        <!-- <el-statistic title="鍗曞満鏅棶棰樺潎鍊�" :value="proEachSceneNum" /> -->
-        <el-statistic title="鏁存敼鏁�" :value="changeNum" />
-        <el-statistic title="鏁存敼閫氳繃鏁�" :value="changePassNum" />
-        <el-statistic title="闂鏁存敼鐜�" :value="changePer" />
-        <el-statistic title="鏁存敼閫氳繃鐜�" :value="changePassPer" />
+        <el-statistic title="闂/鏁存敼" :value="proNum + '/' + changePassNum" />
+        <el-statistic title="鍗曞満鏅棶棰樺潎鍊�" :value="proEachSceneNum" />
+        <!-- <el-statistic title="鏁存敼鏁�" :value="changeNum" /> -->
+        <!-- <el-statistic title="鏁存敼閫氳繃鏁�" :value="changePassNum" /> -->
+        <!-- <el-statistic title="鏁存敼鎻愪氦鐜�" :value="changePer" /> -->
+        <el-statistic title="鏁存敼鐜�/(鎻愪氦鐜�)" :value="changePassPer + '/' + changePer" />
       </el-row>
       <!-- <el-row justify="space-between" class="p-h-16">
         <el-statistic title="鏁存敼閫氳繃鏁�" :value="changePassNum" />
@@ -25,8 +25,8 @@
       </el-text> -->
     </el-col>
     <!-- <el-col :span="6"> -->
-      <!-- <el-statistic title="鏈夋晥鏁存敼鐜�" :value="changePassPer" /> -->
-      <!-- <el-row justify="end">
+    <!-- <el-statistic title="鏈夋晥鏁存敼鐜�" :value="changePassPer" /> -->
+    <!-- <el-row justify="end">
         <OptionTime v-model="time"></OptionTime>
       </el-row> -->
     <!-- </el-col> -->
@@ -58,14 +58,14 @@
       if (this.proNum > 0) {
         return Math.round((this.changeNum / this.proNum) * 100) + '%'
       } else {
-        return '/'
+        return '-'
       }
     },
     changePassPer() {
       if (this.proNum > 0) {
         return Math.round((this.changePassNum / this.proNum) * 100) + '%'
       } else {
-        return '/'
+        return '-'
       }
     }
   },
diff --git a/src/views/management/TaskStats.vue b/src/views/management/TaskStats.vue
index 4b1860d..7092c58 100644
--- a/src/views/management/TaskStats.vue
+++ b/src/views/management/TaskStats.vue
@@ -9,7 +9,7 @@
         <el-statistic title="鏈懆瀹屾垚" :value="10"> </el-statistic>
       </el-row> -->
       <!-- <el-row> -->
-      <TaskItem v-for="item in tasks" :key="item.guid" v-bind="item"></TaskItem>
+      <TaskItem v-for="item in tasks" :key="item.guid" :value="item"></TaskItem>
       <TaskSummary></TaskSummary>
       <!-- </el-row> -->
 
@@ -26,6 +26,9 @@
 </template>
 
 <script setup>
+/**
+ * 1. 鎸夌収鍦烘櫙绫诲瀷杩涜缁熻灞曠ず
+ */
 import { inject, ref, onMounted, computed } from 'vue'
 import { unCalc } from '@/utils/css-util'
 
@@ -51,26 +54,24 @@
 
   tInfoList.forEach((tInfo) => {
     const _sceneTaskMap = new Map()
+    // 鏈夊贰鏌ヨ繘搴︾殑鍦烘櫙绫诲瀷鐨勬�诲畬鎴愰噺锛堥拡瀵规煇浜涘満鏅被鍨嬩笉鍋氬贰鏌ヤ絾渚濇棫鍦ㄨ鍒掍腑鐨勬儏鍐碉級
+    let _totaltask = 0,
+      _completetask = 0
+
+    // 灏嗗悇鍦烘櫙绫诲瀷鐨勫贰鏌ラ噺
     for (const key in tInfo.totaltaskByScene) {
       const e = tInfo.totaltaskByScene[key]
-      _sceneTaskMap.set(key, {
+      const v = {
         sceneType: key,
         total: e,
         finish: tInfo.completetaskByScene[key] ? tInfo.completetaskByScene[key] : 0
-      })
+      }
+      _sceneTaskMap.set(key, v)
+      if (v.finish > 0) {
+        _totaltask += v.total
+        _completetask += v.finish
+      }
     }
-    // const total = tInfo.totaltask
-    // tInfo.subTaskSummary.forEach((s) => {
-    //   if (!_sceneTaskMap.has(s.scene.type)) {
-    //     _sceneTaskMap.set(s.scene.type, {
-    //       sceneType: s.scene.type,
-    //       total: total,
-    //       finish: 0
-    //     })
-    //   }
-    //   const st = _sceneTaskMap.get(s.scene.type)
-    //   st.finish++
-    // })
 
     const task = {
       name: tInfo.name,
@@ -78,6 +79,8 @@
       district: tInfo.districtName,
       totaltask: tInfo.totaltask,
       completetask: tInfo.completetask,
+      _totaltask,
+      _completetask,
       count: []
     }
 
diff --git a/src/views/management/TaskSummary.vue b/src/views/management/TaskSummary.vue
index 910d206..5317441 100644
--- a/src/views/management/TaskSummary.vue
+++ b/src/views/management/TaskSummary.vue
@@ -16,6 +16,9 @@
 </template>
 
 <script setup>
+/**
+ * 1. 鍖哄煙鍒嗙被缁熻鏇村姞鐏垫椿
+ */
 import * as echarts from 'echarts'
 import { ref, onMounted } from 'vue'
 import dayjs from 'dayjs'
@@ -63,6 +66,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 +78,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)
@@ -380,6 +387,6 @@
 
 .bar-chart {
   width: 400px;
-  height: 600px;
+  height: 400px;
 }
 </style>

--
Gitblit v1.9.3