songshankun
2023-11-28 985befd1aacce206d49925399aba85a51c50ea6e
feat: 下发后重连plc
2个文件已修改
23 ■■■■ 已修改文件
src/stores/tasks.ts 17 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/dashboard/index.vue 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/stores/tasks.ts
@@ -3,6 +3,7 @@
import type { Task, TasksGroupByChannel, TasksResponse } from '@/api/task'
import type { TaskListParams } from '@/api'
import { getTaskList } from '@/api'
import { isNumber } from 'lodash-es'
export interface ChannelMoreBtnStatus {
  /** true 任务未加载完  false 所有任务已经加载完成*/
@@ -17,8 +18,9 @@
  /**
   * 获取任务数据
   * @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,
@@ -34,8 +36,10 @@
        channels.value = []
      })
      .finally(() => {
        // 首次获取通道数据时自动选中第一个任务
        selectFirstTask(channels.value)
        if (init) {
          // 首次获取通道数据时自动选中第一个任务
          selectFirstTask(channels.value)
        }
      })
  }
@@ -66,6 +70,7 @@
    const currentChannelTaskList = channels.value[channel].Tasks
    if (currentChannelTaskList?.length) {
      activeTask.value = currentChannelTaskList[0]
      setActiveChannel(channel)
    } else {
      const firstNotEmptyChannel = Object.entries(channels.value).find((ele) => {
        const taskList = (ele[1] as TasksResponse)?.Tasks
@@ -76,6 +81,7 @@
      if (firstNotEmptyChannel) {
        const channelNumber = +firstNotEmptyChannel[0]
        activeTask.value = channels.value[channelNumber].Tasks[0]
        setActiveChannel(channel)
      }
    }
  }
@@ -84,7 +90,7 @@
   * 刷新所有数据
   */
  function reloadChannel(channel: number) {
    getChannels(currentType.value).then(() => {
    return getChannels(currentType.value).then(() => {
      autoSelectTask(channel)
    })
  }
@@ -131,6 +137,9 @@
  const activeTask = ref<Task>()
  function setActiveTask(task: Task | undefined) {
    activeTask.value = task
    if (isNumber(task?.Channel)) {
      setActiveChannel(task?.Channel as number)
    }
  }
  const activeChannel = ref<number>(0)
src/views/dashboard/index.vue
@@ -155,7 +155,7 @@
const tasksStore = useTasksStore()
const { activeTask, channels } = storeToRefs(tasksStore)
tasksStore.getChannels(1)
tasksStore.getChannels(1, true)
function changeTab(tab: LabelValue) {
  tasksStore.getChannels(tab.value)
@@ -166,7 +166,9 @@
 * @param task
 */
function reloadChannel(task: Task) {
  tasksStore.reloadChannel(task.Channel)
  tasksStore.reloadChannel(task.Channel).then(() => {
    plcStore.startPollingPLC()
  })
}
function reloadAllData() {