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