| | |
| | | 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 |
| | |
| | | return result > 100 ? 100 : result |
| | | } |
| | | |
| | | const plcStore = usePLCStore() |
| | | |
| | | /** |
| | | * 计算完成进度, 任务状态未生产固定为 0% 已完成固定为 100% 生产中则从plc获取 |
| | | */ |
| | |
| | | } |
| | | |
| | | 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() |
| | | }) |
| | | |
| | | /** |