Riku
2025-06-09 2547159bbd781c8e1a41ecc939385396c85f9766
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
  }
})