yangfeng
2024-02-05 eb52624b4ea5303198d4dddc19a3366c87283ff3
src/stores/tasks.ts
@@ -1,8 +1,9 @@
import { computed, ref } from 'vue'
import { defineStore } from 'pinia'
import type { Task, TasksGroupByChannel, TasksResponse } from '@/api/task'
import type { TaskListParams } from '@/api'
import { getTaskList } from '@/api'
import type { TaskListParams, TaskInfoParams } from '@/api'
import { getTaskList, getTaskInfo } from '@/api'
import { isNumber } from 'lodash-es'
export interface ChannelMoreBtnStatus {
  /** true 任务未加载完  false 所有任务已经加载完成*/
@@ -17,26 +18,29 @@
  /**
   * 获取任务数据
   * @param type 1未完成2今天未完成3已完成
   * @param init 是否是首次获取,首次需要选中第一项任务
   */
  function getChannels(type: 1 | 2 | 3) {
  function getChannels(type: 1 | 2 | 3, init = false) {
    currentType.value = type
    const params: TaskListParams = {
      type,
      offset: 0,
      limit: 3
      limit: 3,
      deviceID: localStorage.getItem('currentDeviceID') || ''
    }
    return getTaskList(params)
      .then((res) => {
        channels.value = res.data
        // 首次获取通道数据时自动选中第一个任务
        if (!activeTask?.value) {
          selectFirstTask(channels.value)
        }
      })
      .catch((err) => {
        console.error(err)
        channels.value = []
      })
      .finally(() => {
        if (init) {
          // 首次获取通道数据时自动选中第一个任务
          selectFirstTask(channels.value)
        }
      })
  }
@@ -44,12 +48,31 @@
    const firstNotEmptyChannel = Object.entries(channels).find((ele) => {
      const taskList = (ele[1] as TasksResponse)?.Tasks
      return !!taskList.length
      return !!taskList?.length
    })
    if (firstNotEmptyChannel) {
      const channelNumber = +firstNotEmptyChannel[0]
      activeTask.value = channels[channelNumber].Tasks[0]
      // activeTask.value = channels[channelNumber].Tasks[0]
      console.log(channels[channelNumber].Tasks[0].Procedure.ID, '1111')
      const params: TaskInfoParams = {
        deviceID: localStorage.getItem('currentDeviceID') || '',
        procedureID: channels[channelNumber].Tasks[0].Procedure.ID
      }
      return getTaskInfo(params)
        .then((res) => {
          activeTask.value = res.data
        })
        .catch((err) => {
          console.error(err)
        })
        .finally(() => {})
    } else {
      // 如果没有任务就清空当前选中的任务
      activeTask.value = undefined
      if (channels[0]) {
        setActiveChannel(0)
      }
    }
  }
@@ -59,7 +82,19 @@
  function autoSelectTask(channel: number) {
    const currentChannelTaskList = channels.value[channel].Tasks
    if (currentChannelTaskList?.length) {
      activeTask.value = currentChannelTaskList[0]
      // activeTask.value = currentChannelTaskList[0].Procedure.ID
      const params: TaskInfoParams = {
        deviceID: localStorage.getItem('currentDeviceID') || '',
        procedureID: currentChannelTaskList[0].Procedure.ID
      }
      return getTaskInfo(params)
        .then((res) => {
          activeTask.value = res.data
        })
        .catch((err) => {
          console.error(err)
        })
        .finally(() => {})
    } else {
      const firstNotEmptyChannel = Object.entries(channels.value).find((ele) => {
        const taskList = (ele[1] as TasksResponse)?.Tasks
@@ -70,6 +105,7 @@
      if (firstNotEmptyChannel) {
        const channelNumber = +firstNotEmptyChannel[0]
        activeTask.value = channels.value[channelNumber].Tasks[0]
        setActiveChannel(channel)
      }
    }
  }
@@ -77,10 +113,14 @@
  /**
   * 刷新所有数据
   */
  function reload(channel: number) {
    getChannels(currentType.value).then(() => {
  function reloadChannel(channel: number) {
    return getChannels(currentType.value).then(() => {
      autoSelectTask(channel)
    })
  }
  function reloadAllData() {
    getChannels(currentType.value)
  }
  function moreChannelTasksBtn(channelNumber: number) {
@@ -89,7 +129,8 @@
      type: currentType.value,
      channel: channelNumber,
      offset: taskLength,
      limit: 10
      limit: 10,
      deviceID: localStorage.getItem('currentDeviceID') || ''
    }
    getTaskList(params)
      .then((res) => {
@@ -119,8 +160,16 @@
  /** 当前高亮的任务 */
  const activeTask = ref<Task>()
  function setActiveTask(task: Task) {
  function setActiveTask(task: Task | undefined) {
    activeTask.value = task
    if (isNumber(task?.Channel)) {
      setActiveChannel(task?.Channel as number)
    }
  }
  const activeChannel = ref<number>(0)
  function setActiveChannel(channelNumber: number) {
    activeChannel.value = channelNumber
  }
  return {
@@ -128,9 +177,12 @@
    getChannels,
    moreBtnStatus,
    activeTask,
    reload,
    reloadChannel,
    setActiveTask,
    moreChannelTasksBtn,
    foldChannelTasksBtn
    foldChannelTasksBtn,
    reloadAllData,
    activeChannel,
    setActiveChannel
  }
})