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/TaskStats.vue |  143 ++++++++++++++++++++++++++++++++---------------
 1 files changed, 97 insertions(+), 46 deletions(-)

diff --git a/src/views/management/TaskStats.vue b/src/views/management/TaskStats.vue
index 509ba31..7092c58 100644
--- a/src/views/management/TaskStats.vue
+++ b/src/views/management/TaskStats.vue
@@ -1,55 +1,106 @@
 <template>
-  <div class="border-r-small">
-    <div class="f-l">鍚勭洃绠″尯鍘跨殑宸℃煡瀹屾垚鎯呭喌</div>
-    <el-row>
-      <TaskItem v-for="item in tasks" :key="item.guid" v-bind="item"></TaskItem>
-    </el-row>
-  </div>
+  <BaseCard title="浠诲姟鐩戞帶">
+    <!-- <template #expand>
+      <SupervisionVisual></SupervisionVisual>
+    </template> -->
+    <el-scrollbar ref="scrollbarRef">
+      <!-- <el-row justify="space-evenly">
+        <el-statistic title="浠婃棩瀹屾垚" :value="10"> </el-statistic>
+        <el-statistic title="鏈懆瀹屾垚" :value="10"> </el-statistic>
+      </el-row> -->
+      <!-- <el-row> -->
+      <TaskItem v-for="item in tasks" :key="item.guid" :value="item"></TaskItem>
+      <TaskSummary></TaskSummary>
+      <!-- </el-row> -->
+
+      <!-- <el-row>
+      <el-col :span="12">
+        <SelfInspection></SelfInspection>
+      </el-col>
+      <el-col :span="12">
+        <JointEnforcement></JointEnforcement>
+      </el-col>
+    </el-row> -->
+    </el-scrollbar>
+  </BaseCard>
 </template>
 
-<script>
-export default {
-  data() {
-    return {
-      tasks: []
+<script setup>
+/**
+ * 1. 鎸夌収鍦烘櫙绫诲瀷杩涜缁熻灞曠ず
+ */
+import { inject, ref, onMounted, computed } from 'vue'
+import { unCalc } from '@/utils/css-util'
+
+import SelfInspection from '@/views/inspection/SelfInspection.vue'
+import JointEnforcement from '@/views/inspection/JointEnforcement.vue'
+import SupervisionVisual from '@/views/visualization/SupervisionVisual.vue'
+import TaskSummary from '@/views/management/TaskSummary.vue'
+
+import { useSubtaskStore } from '@/stores/subtask.js'
+
+/**
+ * 浠诲姟瀹屾垚鎯呭喌
+ */
+const excludeMapHeight = inject('excludeMapHeight')
+const height = ref(`calc(${unCalc(excludeMapHeight)} - 36px)`)
+
+const subtaskStore = useSubtaskStore()
+const tasks = ref([])
+const sceneTaskMap = ref(new Map())
+
+function onGetTaskInfo(tInfoList) {
+  const resList = []
+
+  tInfoList.forEach((tInfo) => {
+    const _sceneTaskMap = new Map()
+    // 鏈夊贰鏌ヨ繘搴︾殑鍦烘櫙绫诲瀷鐨勬�诲畬鎴愰噺锛堥拡瀵规煇浜涘満鏅被鍨嬩笉鍋氬贰鏌ヤ絾渚濇棫鍦ㄨ鍒掍腑鐨勬儏鍐碉級
+    let _totaltask = 0,
+      _completetask = 0
+
+    // 灏嗗悇鍦烘櫙绫诲瀷鐨勫贰鏌ラ噺
+    for (const key in tInfo.totaltaskByScene) {
+      const e = tInfo.totaltaskByScene[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
+      }
     }
-  },
-  watch: {},
-  methods: {},
-  mounted() {
-    let i = 0
-    while (i < 3) {
-      this.tasks.push({
-        guid: 'SMuheEkjswioSn7A',
-        name: '2024骞�6鏈堜笂娴峰競闈欏畨鍖哄贰鏌ヤ换鍔�',
-        district: '闈欏畨鍖�',
-        planTime: '2024-06',
-        startTime: '2024-06-01 00:00:00',
-        endTime: '2024-06-30 23:59:59',
-        userName: '鏈辨寮�#閭㈠瓙鐞�',
-        status: '姝e湪鎵ц',
-        count: [
-          {
-            sceneType: '宸ュ湴',
-            total: 90,
-            finish: 45
-          },
-          {
-            sceneType: '椁愰ギ',
-            total: 90,
-            finish: 45
-          },
-          {
-            sceneType: '姹戒慨',
-            total: 90,
-            finish: 45
-          }
-        ]
-      })
-      i++
+
+    const task = {
+      name: tInfo.name,
+      province: tInfo.provinceName,
+      district: tInfo.districtName,
+      totaltask: tInfo.totaltask,
+      completetask: tInfo.completetask,
+      _totaltask,
+      _completetask,
+      count: []
     }
-  }
+
+    for (const key of _sceneTaskMap.keys()) {
+      const value = _sceneTaskMap.get(key)
+      task.count.push(value)
+    }
+    resList.push(task)
+  })
+
+  tasks.value = resList
 }
+
+function cal() {
+  subtaskStore.onAllTaskRefreshed(onGetTaskInfo)
+}
+
+onMounted(() => {
+  cal()
+})
 </script>
 
 <style scoped>

--
Gitblit v1.9.3