| | |
| | | submitReturnSales, |
| | | updateReturnSales, |
| | | } from '#/api/mes/wm/returnsales'; |
| | | import type { ErpSaleOrderApi } from '#/api/erp/sale/order'; |
| | | |
| | | import { getSaleOrder, getSaleOrderPage } from '#/api/erp/sale/order'; |
| | | import { $t } from '#/locales'; |
| | | |
| | | import { useFormSchema } from '../data'; |
| | |
| | | const formType = ref<FormType>('create'); |
| | | const formData = ref<MesWmReturnSalesApi.ReturnSales>(); |
| | | const originalSnapshot = ref(''); // 表单原始数据快照,用于提交时跳过未变更的保存请求 |
| | | const saleOrderItems = ref<ErpSaleOrderApi.SaleOrderItem[]>([]); // 当前销售订单的物料行 |
| | | const isEditable = computed(() => |
| | | // 是否为编辑模式(可保存) |
| | | ['create', 'update'].includes(formType.value), |
| | |
| | | // 加载数据 |
| | | const data = modalApi.getData<{ formType: FormType; id?: number }>(); |
| | | formType.value = data.formType; |
| | | formApi.setState({ schema: useFormSchema(formType.value, formApi) }); |
| | | formApi.setState({ |
| | | schema: useFormSchema(formType.value, formApi, (item) => { |
| | | if (item?.id) { |
| | | getSaleOrder(item.id as number).then((order) => { |
| | | saleOrderItems.value = (order as ErpSaleOrderApi.SaleOrder)?.items || []; |
| | | }); |
| | | } else { |
| | | saleOrderItems.value = []; |
| | | } |
| | | }), |
| | | }); |
| | | formApi.setDisabled(!isEditable.value); |
| | | modalApi.setState({ showConfirmButton: isEditable.value }); |
| | | if (data?.id) { |
| | | modalApi.lock(); |
| | | try { |
| | | formData.value = await getReturnSales(data.id); |
| | | // 通过销售订单号反查订单ID,确保 ErpSaleOrderSelect 能正确回显 |
| | | if (formData.value?.salesOrderCode && !formData.value.saleOrderId) { |
| | | const orderPage = await getSaleOrderPage({ |
| | | pageNo: 1, |
| | | pageSize: 1, |
| | | no: formData.value.salesOrderCode, |
| | | } as Record<string, unknown> as never); |
| | | const list = (orderPage as Record<string, unknown>)?.list as Array<Record<string, unknown>> | undefined; |
| | | if (list?.length) { |
| | | const orderId = list[0].id as number; |
| | | (formData.value as Record<string, unknown>).saleOrderId = orderId; |
| | | const order = await getSaleOrder(orderId); |
| | | saleOrderItems.value = order?.items || []; |
| | | } |
| | | } |
| | | // 设置到 values |
| | | await formApi.setValues(formData.value); |
| | | } finally { |
| | |
| | | :client-id="formData.clientId" |
| | | :form-type="formType" |
| | | :return-id="formData.id" |
| | | :sale-order-items="saleOrderItems" |
| | | :sales-order-code="formData.salesOrderCode" |
| | | /> |
| | | </div> |