| | |
| | | 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, []) |
| | |
| | | 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) { |
| | |
| | | } |
| | | |
| | | 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 |
| | | } |
| | | }) |