| | |
| | | import { message } from 'ant-design-vue'; |
| | | |
| | | import { quickCreateFeedback } from '#/api/mes/pro/feedback'; |
| | | import { getRouteProcessByRouteAndProcess } from '#/api/mes/pro/route/process'; |
| | | import { getTask } from '#/api/mes/pro/task'; |
| | | import { |
| | | loadParamDetails, |
| | | paramDetails, |
| | | } from '#/views/mes/pro/feedback/param-state'; |
| | | import WaitCountdown from '#/views/mes/pro/feedback/modules/wait-countdown.vue'; |
| | | import ProTaskSelect from '#/views/mes/pro/task/components/select.vue'; |
| | | |
| | | defineOptions({ name: 'QuickFeedbackForm' }); |
| | |
| | | feedbackQuantity: undefined, |
| | | remark: '', |
| | | }; |
| | | // 预设任务时加载其工艺参数;否则等待选择任务后再加载 |
| | | waitDuration.value = undefined; |
| | | needReportQuantity.value = true; |
| | | waitStartTime.value = undefined; |
| | | // 预设任务时加载其工艺参数与等待配置;否则等待选择任务后再加载 |
| | | if (props.taskId) { |
| | | loadParamDetails(props.taskId); |
| | | getTask(props.taskId) |
| | | .then(applyTaskWaitConfig) |
| | | .catch(() => {}); |
| | | } else { |
| | | paramDetails.value = []; |
| | | } |
| | |
| | | remark: '', |
| | | }); |
| | | const submitting = ref(false); |
| | | const waitDuration = ref<number>(); |
| | | const needReportQuantity = ref<boolean>(true); |
| | | const waitStartTime = ref<string>(); |
| | | |
| | | const hasPredefinedTask = computed(() => !!props.taskId); |
| | | |
| | |
| | | selectedTask.value = task; |
| | | selectedTaskId.value = task?.id; |
| | | loadParamDetails(task?.id); |
| | | applyTaskWaitConfig(task); |
| | | } |
| | | |
| | | /** 按任务工序加载等待时长与报工数量规则 */ |
| | | async function applyTaskWaitConfig(task?: MesProTaskApi.Task) { |
| | | waitDuration.value = undefined; |
| | | needReportQuantity.value = true; |
| | | waitStartTime.value = task?.waitStartTime; |
| | | if (!task?.routeId || !task?.processId) { |
| | | return; |
| | | } |
| | | try { |
| | | const routeProcess = await getRouteProcessByRouteAndProcess( |
| | | task.routeId, |
| | | task.processId, |
| | | ); |
| | | waitDuration.value = routeProcess?.waitDuration; |
| | | needReportQuantity.value = routeProcess?.needReportQuantity ?? true; |
| | | } catch { |
| | | // 加载失败按默认处理(无需倒计时、数量必填) |
| | | } |
| | | } |
| | | |
| | | async function handleSubmit() { |
| | |
| | | message.warning('请选择任务'); |
| | | return; |
| | | } |
| | | if (!formData.value.feedbackQuantity) { |
| | | if (needReportQuantity.value && !formData.value.feedbackQuantity) { |
| | | message.warning('请输入报工数量'); |
| | | return; |
| | | } |
| | |
| | | try { |
| | | await quickCreateFeedback({ |
| | | taskId, |
| | | feedbackQuantity: formData.value.feedbackQuantity, |
| | | feedbackQuantity: needReportQuantity.value |
| | | ? (formData.value.feedbackQuantity ?? 0) |
| | | : 0, |
| | | paramValues: paramDetails.value.map((detail) => ({ |
| | | detailId: detail.id, |
| | | value: detail.paramValue, |
| | |
| | | class="!w-full" |
| | | /> |
| | | </a-form-item> |
| | | <a-form-item label="本次报工数量" required> |
| | | <a-form-item v-if="waitDuration" label="报工倒计时"> |
| | | <WaitCountdown |
| | | :task-id="selectedTaskId" |
| | | :wait-duration="waitDuration" |
| | | :wait-start-time="waitStartTime" |
| | | /> |
| | | </a-form-item> |
| | | <a-form-item v-if="needReportQuantity" label="本次报工数量" required> |
| | | <a-input-number |
| | | v-model:value="formData.feedbackQuantity" |
| | | :min="0.01" |