songshankun
2023-11-02 7e7424b2662e5b27dcc1c0d37f43e909e0b15ee1
src/views/dashboard/components/ProcessingInfo.vue
@@ -62,6 +62,7 @@
import type { ProductProgressParams } from '@/api'
import { isNumber } from 'lodash-es'
import { CHANNEL_NAME_MAP } from '@/common/constants'
import { usePLCStore } from '@/stores/plc'
const props = defineProps<{
  task?: Task
@@ -94,6 +95,8 @@
  return result > 100 ? 100 : result
}
const plcStore = usePLCStore()
/**
 * 计算完成进度, 任务状态未生产固定为 0% 已完成固定为 100% 生产中则从plc获取
 */
@@ -107,47 +110,10 @@
  }
  if (task?.value?.Procedure?.Status === 2) {
    return calculateProgress(plcResponse?.value?.data as Statistics)
    return calculateProgress(plcStore.plcInfo as Statistics)
  }
  return 0
})
/**
 * 如果任务状态是进行中, 则轮询 plc 取进度
 */
const {
  data: plcResponse,
  run: startPLCPolling,
  cancel: cancelPLCPolling
} = useRequest(
  () =>
    getProductProgress({
      channel: task?.value?.Channel,
      procedureId: task?.value?.Procedure.ID
    } as ProductProgressParams),
  {
    manual: true,
    pollingInterval: 6000,
    pollingWhenHidden: false
  }
)
/**
 * 任务状态是生产中则轮询plc取目标数和完成数计算完成进度
 */
watch(
  () => task?.value,
  () => {
    cancelPLCPolling()
    if (task?.value?.Procedure?.Status === 2) {
      startPLCPolling()
    }
  }
)
onUnmounted(() => {
  cancelPLCPolling()
})
/**