From 31980b06d50d530feb2c0f1db9daf24bd3b8797a Mon Sep 17 00:00:00 2001
From: Riku <risaku@163.com>
Date: 星期日, 15 六月 2025 22:50:16 +0800
Subject: [PATCH] 2025.6.15

---
 src/stores/subtask.js |   85 +++++++++++++++++++++++++++++++++++++++---
 1 files changed, 78 insertions(+), 7 deletions(-)

diff --git a/src/stores/subtask.js b/src/stores/subtask.js
index 8deda39..d8333f5 100644
--- a/src/stores/subtask.js
+++ b/src/stores/subtask.js
@@ -1,21 +1,68 @@
-import { ref } from 'vue'
+import { ref, unref } from 'vue'
 import { defineStore } from 'pinia'
 import timeUtil from '@/utils/time-util'
+import { useMapStore } from '@/stores/map.js'
+import taskApi from '@/api/fysp/taskApi.js'
+import marks from '@/utils/map/marks.js'
+import mapUtil from '@/utils/map/util.js'
+import scene_1 from '@/assets/icon/scene_1.png'
+
+const mapStore = useMapStore()
 
 // 宸℃煡浠诲姟
 export const useSubtaskStore = defineStore('subtask', () => {
+  const allTask = ref(null)
+  const onFetchAllTask = []
+  // 鎬讳换鍔′俊鎭�
+  const taskInfo = ref(null)
   // 褰撴湡鎵�鏈夊贰鏌ョ粺璁′俊鎭�
   const summaryList = ref([])
+  // 姣忔棩鐨勫贰鏌ョ粺璁′俊鎭�
   const summaryMap = ref(new Map())
   const subtaskLoading = ref(false)
+  const onFetchInfo = []
   const onFetchList = []
   const onFetchMap = []
 
+  function fetchTopTaskProgress(area) {
+    subtaskLoading.value = true
+    taskApi
+      .fetchTopTaskProgress(area)
+      .then((res) => {
+        if (res.data.length == 0) return
+
+        allTask.value = res.data
+        if (onFetchAllTask.length > 0) {
+          onFetchAllTask.forEach((e) => {
+            e(allTask.value)
+          })
+        }
+
+        const data = res.data[0]
+        // 瀛樺偍涓哄叏灞�鏁版嵁
+        setSummary(data)
+        // 缁樺埗鍦板浘鏍囪
+        marks.createLabelMarks(scene_1, unref(data.subTaskSummary), (v) => {
+          mapStore.focusMarker = v
+        })
+        mapUtil.setFitView()
+      })
+      .finally(() => (subtaskLoading.value = false))
+  }
+
+  function onAllTaskRefreshed(callback) {
+    if (allTask.value != null) {
+      callback(taskInfo.value)
+    }
+    onFetchAllTask.push(callback)
+  }
+
   // 璁剧疆鏂扮殑鍊�
   function setSummary(data) {
-    summaryList.value = data
+    taskInfo.value = data
+    summaryList.value = data.subTaskSummary
     summaryMap.value.clear()
-    data.forEach((e) => {
+    data.subTaskSummary.forEach((e) => {
       const tag = timeUtil.formatYMD(e.subtask.planstarttime)
       if (!summaryMap.value.has(tag)) {
         summaryMap.value.set(tag, [])
@@ -36,6 +83,19 @@
         e(summaryMap.value)
       })
     }
+    if (onFetchInfo.length > 0) {
+      onFetchInfo.forEach((e) => {
+        e(taskInfo.value)
+      })
+    }
+  }
+
+  function getTaskInfo(callback) {
+    if (taskInfo.value == null) {
+      onFetchInfo.push(callback)
+    } else {
+      callback(taskInfo.value)
+    }
   }
 
   function getSummaryList(timeTag, callback) {
@@ -51,12 +111,23 @@
   }
 
   function getSummaryMap(callback) {
-    if (summaryMap.value.size === 0) {
-      onFetchMap.push(callback)
-    } else {
+    if (summaryMap.value.size > 0) {
       callback(summaryMap.value)
+      
     }
+    onFetchMap.push(callback)
   }
 
-  return { summaryList, summaryMap, subtaskLoading, setSummary, getSummaryList, getSummaryMap }
+  return {
+    // taskInfo,
+    // summaryList,
+    // summaryMap,
+    subtaskLoading,
+    fetchTopTaskProgress,
+    onAllTaskRefreshed,
+    setSummary,
+    getTaskInfo,
+    getSummaryList,
+    getSummaryMap
+  }
 })

--
Gitblit v1.9.3