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) { taskInfo.value = data summaryList.value = data.subTaskSummary summaryMap.value.clear() data.subTaskSummary.forEach((e) => { const tag = timeUtil.formatYMD(e.subtask.planstarttime) if (!summaryMap.value.has(tag)) { summaryMap.value.set(tag, []) } summaryMap.value.get(tag).push(e) }) if (onFetchList.length > 0) { onFetchList.forEach((e) => { if (e.tag) { e.fun(summaryMap.value.get(e.tag)) } else { e.fun(summaryList.value) } }) } if (onFetchMap.length > 0) { onFetchMap.forEach((e) => { 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) { if (summaryMap.value.size === 0) { onFetchList.push({ tag: timeTag, fun: callback }) } else { if (timeTag) { callback(summaryMap.value.get(timeTag)) } else { callback(summaryList.value) } } } function getSummaryMap(callback) { if (summaryMap.value.size > 0) { callback(summaryMap.value) } onFetchMap.push(callback) } return { // taskInfo, // summaryList, // summaryMap, subtaskLoading, fetchTopTaskProgress, onAllTaskRefreshed, setSummary, getTaskInfo, getSummaryList, getSummaryMap } })