| | |
| | | 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' |
| | | import { getToken } from '@/common/utils/index' |
| | | |
| | | export interface ChannelMoreBtnStatus { |
| | | /** true 任务未加载完 false 所有任务已经加载完成*/ |
| | | [channel: number]: boolean |
| | | } |
| | | |
| | | const token = getToken() |
| | | export const useTasksStore = defineStore('tasks', () => { |
| | | const channels = ref<TasksGroupByChannel>({}) |
| | | |
| | |
| | | /** |
| | | * 获取任务数据 |
| | | * @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) |
| | | } |
| | | }) |
| | | } |
| | | |
| | |
| | | const firstNotEmptyChannel = Object.entries(channels).find((ele) => { |
| | | const taskList = (ele[1] as TasksResponse)?.Tasks |
| | | |
| | | return !!taskList.length |
| | | return !!taskList?.length |
| | | }) |
| | | |
| | | if (firstNotEmptyChannel) { |
| | | if (firstNotEmptyChannel && (token !== null || token !== '' || token !== 'undefined')) { |
| | | 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) |
| | | } |
| | | } |
| | | } |
| | | |
| | |
| | | */ |
| | | function autoSelectTask(channel: number) { |
| | | const currentChannelTaskList = channels.value[channel].Tasks |
| | | if (currentChannelTaskList?.length) { |
| | | activeTask.value = currentChannelTaskList[0] |
| | | if (currentChannelTaskList?.length && (token !== null || token !== '' || token !== 'undefined')) { |
| | | // 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 |
| | |
| | | if (firstNotEmptyChannel) { |
| | | const channelNumber = +firstNotEmptyChannel[0] |
| | | activeTask.value = channels.value[channelNumber].Tasks[0] |
| | | setActiveChannel(channel) |
| | | } |
| | | } |
| | | } |
| | |
| | | /** |
| | | * 刷新所有数据 |
| | | */ |
| | | function reload(channel: number) { |
| | | getChannels(currentType.value).then(() => { |
| | | autoSelectTask(channel) |
| | | }) |
| | | function reloadChannel(channel: number) { |
| | | if (token !== null || token !== '' || token !== 'undefined') { |
| | | return getChannels(currentType.value).then(() => { |
| | | autoSelectTask(channel) |
| | | }) |
| | | } else { |
| | | return |
| | | } |
| | | } |
| | | |
| | | function reloadAllData() { |
| | | getChannels(currentType.value) |
| | | } |
| | | |
| | | function moreChannelTasksBtn(channelNumber: number) { |
| | |
| | | type: currentType.value, |
| | | channel: channelNumber, |
| | | offset: taskLength, |
| | | limit: 10 |
| | | limit: 10, |
| | | deviceID: localStorage.getItem('currentDeviceID') || '' |
| | | } |
| | | getTaskList(params) |
| | | .then((res) => { |
| | | const existTasks = channels.value![channelNumber].Tasks ?? [] |
| | | channels.value[channelNumber] = res.data[channelNumber] ?? {} |
| | | channels.value[channelNumber].Tasks = channels.value[channelNumber].Tasks ?? [] |
| | | channels.value[channelNumber].Tasks = [...existTasks, ...channels.value[channelNumber].Tasks] |
| | | }) |
| | | .catch((err) => { |
| | | console.error(err) |
| | | }) |
| | | |
| | | if (token !== null || token !== '' || token !== 'undefined') { |
| | | getTaskList(params) |
| | | .then((res) => { |
| | | const existTasks = channels.value![channelNumber].Tasks ?? [] |
| | | channels.value[channelNumber] = res.data[channelNumber] ?? {} |
| | | channels.value[channelNumber].Tasks = channels.value[channelNumber].Tasks ?? [] |
| | | channels.value[channelNumber].Tasks = [...existTasks, ...channels.value[channelNumber].Tasks] |
| | | }) |
| | | .catch((err) => { |
| | | console.error(err) |
| | | }) |
| | | } |
| | | } |
| | | |
| | | function foldChannelTasksBtn(channelNumber: number) { |
| | |
| | | |
| | | /** 当前高亮的任务 */ |
| | | 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 { |
| | |
| | | getChannels, |
| | | moreBtnStatus, |
| | | activeTask, |
| | | reload, |
| | | reloadChannel, |
| | | setActiveTask, |
| | | moreChannelTasksBtn, |
| | | foldChannelTasksBtn |
| | | foldChannelTasksBtn, |
| | | reloadAllData, |
| | | activeChannel, |
| | | setActiveChannel |
| | | } |
| | | }) |