| | |
| | | icon-color="red" |
| | | :hide-after="0" |
| | | :teleported="false" |
| | | title="请确认是否已完成此生产任务?" |
| | | :title="processingPercent == 0 ? '进度未完成,是否提前完成任务?' : '请确认是否已完成此生产任务?'" |
| | | placement="top" |
| | | @confirm="finishTaskProduce" |
| | | > |
| | |
| | | </template> |
| | | <script setup lang="ts"> |
| | | import type { Task, Worker } from '@/api/task' |
| | | import { ref, toRefs } from 'vue' |
| | | import { ref, toRefs, computed } from 'vue' |
| | | import BigButton from '@/views/dashboard/components/BigButton.vue' |
| | | import { useDateFormat } from '@vueuse/core' |
| | | import TaskControlModal from '@/views/dashboard/components/TaskControlModal.vue' |
| | |
| | | }) |
| | | } |
| | | } |
| | | export interface Statistics { |
| | | totalNumber: number |
| | | finishNumber: number |
| | | } |
| | | /** |
| | | * 计算生产进度 |
| | | * @param statistics |
| | | * @return 进度,0~100 |
| | | */ |
| | | function calculateProgress(statistics: Statistics): number { |
| | | if (!statistics) { |
| | | return 0 |
| | | } |
| | | |
| | | if (statistics.finishNumber === 0) { |
| | | return 0 |
| | | } |
| | | if (statistics.finishNumber === statistics.totalNumber) { |
| | | return 100 |
| | | } |
| | | |
| | | const result = Math.floor((statistics.finishNumber / statistics.totalNumber) * 100) |
| | | return result > 100 ? 100 : result |
| | | } |
| | | const processingPercent = computed(() => { |
| | | // if (task?.value?.Procedure?.Status === 1) { |
| | | // return 0 |
| | | // } |
| | | |
| | | if (task?.value?.Procedure?.Status === 3) { |
| | | return 100 |
| | | } |
| | | // if (task?.value?.Procedure?.Status === 2 || task?.value?.Procedure?.Status === 1) { |
| | | // return calculateProgress(plcStore.plcInfo as Statistics) |
| | | // } |
| | | |
| | | return calculateProgress(plcStore.plcInfo as Statistics) |
| | | }) |
| | | </script> |
| | | <style scoped lang="scss"> |
| | | $title-text-color: #9599af; |