| | |
| | | } from '@vben/constants'; |
| | | import { useUserStore } from '@vben/stores'; |
| | | |
| | | import { Button, message, Popconfirm } from 'ant-design-vue'; |
| | | import { Button, message, Modal, Popconfirm } from 'ant-design-vue'; |
| | | |
| | | import { useVbenForm } from '#/adapter/form'; |
| | | import { generateAutoCode } from '#/api/mes/md/autocode/record'; |
| | |
| | | approveFeedback, |
| | | createFeedback, |
| | | getFeedback, |
| | | getFeedbackPage, |
| | | rejectFeedback, |
| | | submitFeedback, |
| | | updateFeedback, |
| | |
| | | if (!valid) return; |
| | | |
| | | const data = await getAlignedData(); |
| | | const code = data.code as string; |
| | | |
| | | if (formType.value === 'create') { |
| | | const id = await createFeedback(data); |
| | |
| | | formType.value = 'update'; |
| | | formApi.setState({ schema: useFormSchema(formType.value, formApi) }); |
| | | await formApi.setFieldValue('id', id); |
| | | message.success($t('common.createSuccess')); |
| | | } else { |
| | | await updateFeedback(data); |
| | | message.success($t('common.updateSuccess')); |
| | | } |
| | | originalSnapshot.value = JSON.stringify(data); |
| | | |
| | | // 显示显眼的成功提示 |
| | | Modal.success({ |
| | | title: '保存成功', |
| | | content: `报工单 ${code} 已保存`, |
| | | centered: true, |
| | | }); |
| | | |
| | | // 重置表单为新建模式,重新生成报订单号 |
| | | if (props.task) { |
| | | await resetForTask(props.task); |
| | | } |
| | | emit('reported'); |
| | | } |
| | | |
| | | /** 保存并提交(先保存,再查询并提交) */ |
| | | async function handleSaveAndSubmit() { |
| | | const { valid } = await formApi.validate(); |
| | | if (!valid) return; |
| | | |
| | | const data = await getAlignedData(); |
| | | const code = data.code as string; |
| | | |
| | | // 1. 先保存 |
| | | if (formType.value === 'create') { |
| | | const id = await createFeedback(data); |
| | | feedbackId.value = id; |
| | | feedbackStatus.value = MesProFeedbackStatusEnum.PREPARE; |
| | | formType.value = 'update'; |
| | | formApi.setState({ schema: useFormSchema(formType.value, formApi) }); |
| | | await formApi.setFieldValue('id', id); |
| | | } else { |
| | | await updateFeedback(data); |
| | | } |
| | | originalSnapshot.value = JSON.stringify(data); |
| | | |
| | | // 2. 查询报工记录,匹配该报工单号 |
| | | const pageResult = await getFeedbackPage({ code, pageNo: 1, pageSize: 1 }); |
| | | const record = pageResult.list?.[0]; |
| | | |
| | | // 3. 检查是否可提交(草稿状态) |
| | | if (!record || record.status !== MesProFeedbackStatusEnum.PREPARE) { |
| | | message.warning('保存成功,但当前报工单状态不可提交'); |
| | | emit('reported'); |
| | | return; |
| | | } |
| | | |
| | | // 4. 调用提交接口 |
| | | await submitFeedback(record.id!); |
| | | feedbackId.value = record.id; |
| | | feedbackStatus.value = record.status; |
| | | |
| | | // 显示显眼的成功提示 |
| | | Modal.success({ |
| | | title: '保存并提交成功', |
| | | content: `报工单 ${code} 已提交`, |
| | | centered: true, |
| | | }); |
| | | |
| | | // 重置表单为新建模式,重新生成报订单号 |
| | | if (props.task) { |
| | | await resetForTask(props.task); |
| | | } |
| | | emit('reported'); |
| | | } |
| | | |
| | |
| | | > |
| | | 保存 |
| | | </Button> |
| | | <Button |
| | | v-if="isEditable" |
| | | type="primary" |
| | | @click="handleSaveAndSubmit" |
| | | > |
| | | 保存并提交 |
| | | </Button> |
| | | <Popconfirm |
| | | v-if="canSubmit" |
| | | title="确认提交该报订单?提交后将不能修改。" |