|
@@ -22,6 +22,7 @@ import {
|
|
|
MaterialDetailDataSource
|
|
|
} from '@/constants/order'
|
|
|
import { ORDER_FORM_EVENTS, CUSTOMER_SELECT_EVENTS, ADDRESS_SELECT_EVENTS, MATERIAL_DETAIL_EVENTS } from './events'
|
|
|
+import { getFormOption } from './form-option'
|
|
|
|
|
|
// 数字格式化工具导入
|
|
|
import {
|
|
@@ -378,6 +379,16 @@ export default {
|
|
|
},
|
|
|
|
|
|
/**
|
|
|
+ * 表单配置选项
|
|
|
+ * @description 根据编辑模式动态获取表单配置
|
|
|
+ * @returns {AvueFormOption} 表单配置对象
|
|
|
+ * @this {import('./types').OrderFormMixin}
|
|
|
+ */
|
|
|
+ formOption() {
|
|
|
+ return getFormOption(this.isEdit)
|
|
|
+ },
|
|
|
+
|
|
|
+ /**
|
|
|
* 物料明细表格配置
|
|
|
* @description 获取物料明细表格的配置选项
|
|
|
* @returns {Object} 表格配置对象
|
|
@@ -698,7 +709,7 @@ export default {
|
|
|
const orderQuantityValidation = validateNumber(orderData.orderQuantity)
|
|
|
|
|
|
return {
|
|
|
- id: orderData.id ? Number(orderData.id) : undefined,
|
|
|
+ id: orderData.id ? String(orderData.id) : undefined,
|
|
|
orderCode: String(orderData.orderCode || ''),
|
|
|
orgId: orderData.orgId ? Number(orderData.orgId) : undefined,
|
|
|
orgCode: String(orderData.orgCode || ''),
|
|
@@ -710,7 +721,7 @@ export default {
|
|
|
orderQuantity: orderQuantityValidation.isValid ? parseInt(orderQuantityValidation.value.toString()) : 0,
|
|
|
totalAmount: totalAmountValidation.isValid ? preciseRound(totalAmountValidation.value, 2) : null,
|
|
|
totalQuantity: totalQuantityValidation.isValid ? preciseRound(totalQuantityValidation.value, 4) : null,
|
|
|
- addressId: orderData.addressId ? Number(orderData.addressId) : null,
|
|
|
+ addressId: orderData.addressId ? String(orderData.addressId) : '',
|
|
|
receiverName: String(orderData.receiverName || ''),
|
|
|
receiverPhone: String(orderData.receiverPhone || ''),
|
|
|
receiverRegion: String(orderData.receiverRegion || ''),
|
|
@@ -846,6 +857,7 @@ export default {
|
|
|
// 创建销售订单数据对象
|
|
|
const salesOrderData = {
|
|
|
...formData,
|
|
|
+ id: formData.id ? Number(formData.id) : 0,
|
|
|
orgId: formData.orgId ? Number(formData.orgId) : 0,
|
|
|
customerId: formData.customerId ? Number(formData.customerId) : 0,
|
|
|
orderType: Number(formData.orderType) || 0,
|
|
@@ -856,10 +868,10 @@ export default {
|
|
|
pcBladeOrderItemList
|
|
|
}
|
|
|
|
|
|
- // 新增模式下,移除orderCode字段
|
|
|
+ // 新增模式下,移除orderCode和id字段
|
|
|
if (!this.isEdit) {
|
|
|
- const { orderCode, ...dataWithoutOrderCode } = salesOrderData
|
|
|
- return dataWithoutOrderCode
|
|
|
+ const { orderCode, id, ...dataWithoutOrderCodeAndId } = salesOrderData
|
|
|
+ return dataWithoutOrderCodeAndId
|
|
|
}
|
|
|
|
|
|
return salesOrderData
|
|
@@ -936,8 +948,8 @@ export default {
|
|
|
Object.keys(data).forEach(key => {
|
|
|
const value = /** @type {Record<string, any>} */(data)[key]
|
|
|
|
|
|
- // 新增模式下,移除orderCode字段
|
|
|
- if (!this.isEdit && key === 'orderCode') {
|
|
|
+ // 新增模式下,移除orderCode和id字段
|
|
|
+ if (!this.isEdit && (key === 'orderCode' || key === 'id')) {
|
|
|
return
|
|
|
}
|
|
|
|
|
@@ -955,6 +967,12 @@ export default {
|
|
|
cleanedData[key] = validation.isValid ? Math.round(validation.value) : 0
|
|
|
} else if (['orderType', 'status'].includes(key)) {
|
|
|
cleanedData[key] = Number(value) || 0
|
|
|
+ } else if (key === 'id' && this.isEdit) {
|
|
|
+ // 编辑模式下保持id字段为字符串类型,避免大整数精度丢失
|
|
|
+ cleanedData[key] = String(value)
|
|
|
+ } else if (key === 'addressId') {
|
|
|
+ // 地址ID保持为字符串类型,确保与地址选择组件的类型一致
|
|
|
+ cleanedData[key] = String(value)
|
|
|
} else {
|
|
|
cleanedData[key] = value
|
|
|
}
|