| | |
| | | import { message } from 'ant-design-vue'; |
| | | |
| | | import { quickCreateFeedback } from '#/api/mes/pro/feedback'; |
| | | import { |
| | | loadParamDetails, |
| | | paramDetails, |
| | | } from '#/views/mes/pro/feedback/param-state'; |
| | | import ProTaskSelect from '#/views/mes/pro/task/components/select.vue'; |
| | | |
| | | defineOptions({ name: 'QuickFeedbackForm' }); |
| | |
| | | selectedTask.value = undefined; |
| | | formData.value = { |
| | | feedbackQuantity: undefined, |
| | | qualifiedQuantity: undefined, |
| | | unqualifiedQuantity: undefined, |
| | | remark: '', |
| | | }; |
| | | // 预设任务时加载其工艺参数;否则等待选择任务后再加载 |
| | | if (props.taskId) { |
| | | loadParamDetails(props.taskId); |
| | | } else { |
| | | paramDetails.value = []; |
| | | } |
| | | } |
| | | }, |
| | | }); |
| | |
| | | const selectedTask = ref<MesProTaskApi.Task>(); |
| | | const formData = ref({ |
| | | feedbackQuantity: undefined as number | undefined, |
| | | qualifiedQuantity: undefined as number | undefined, |
| | | unqualifiedQuantity: undefined as number | undefined, |
| | | remark: '', |
| | | }); |
| | | const submitting = ref(false); |
| | |
| | | function handleTaskChange(task: MesProTaskApi.Task | undefined) { |
| | | selectedTask.value = task; |
| | | selectedTaskId.value = task?.id; |
| | | loadParamDetails(task?.id); |
| | | } |
| | | |
| | | async function handleSubmit() { |
| | |
| | | await quickCreateFeedback({ |
| | | taskId, |
| | | feedbackQuantity: formData.value.feedbackQuantity, |
| | | qualifiedQuantity: formData.value.qualifiedQuantity, |
| | | unqualifiedQuantity: formData.value.unqualifiedQuantity, |
| | | paramValues: paramDetails.value.map((detail) => ({ |
| | | detailId: detail.id, |
| | | value: detail.paramValue, |
| | | })), |
| | | remark: formData.value.remark || undefined, |
| | | }); |
| | | message.success('报工成功'); |
| | |
| | | class="!w-full" |
| | | /> |
| | | </a-form-item> |
| | | <a-form-item label="合格品数量"> |
| | | <a-input-number |
| | | v-model:value="formData.qualifiedQuantity" |
| | | :min="0" |
| | | :precision="2" |
| | | placeholder="请输入合格品数量" |
| | | <div v-if="paramDetails.length" class="mb-4"> |
| | | <div class="mb-1 font-medium">工艺参数</div> |
| | | <div |
| | | v-for="detail in paramDetails" |
| | | :key="detail.id" |
| | | class="mb-2 flex items-center gap-2" |
| | | > |
| | | <span class="w-40 flex-shrink-0 text-right text-sm text-gray-600"> |
| | | <span v-if="detail.required" class="text-red-500">* </span> |
| | | {{ detail.paramName || detail.paramCode |
| | | }}{{ |
| | | detail.unitMeasureName ? `(${detail.unitMeasureName})` : '' |
| | | }} |
| | | </span> |
| | | <a-input |
| | | v-model:value="detail.paramValue" |
| | | placeholder="请输入参数值" |
| | | class="!w-full" |
| | | /> |
| | | </a-form-item> |
| | | <a-form-item label="不良品数量"> |
| | | <a-input-number |
| | | v-model:value="formData.unqualifiedQuantity" |
| | | :min="0" |
| | | :precision="2" |
| | | placeholder="请输入不良品数量" |
| | | class="!w-full" |
| | | /> |
| | | </a-form-item> |
| | | </div> |
| | | </div> |
| | | <a-form-item label="备注"> |
| | | <a-textarea |
| | | v-model:value="formData.remark" |