|
@@ -4,9 +4,9 @@
|
|
|
*/
|
|
|
|
|
|
// API接口导入
|
|
|
-import { add, update, getDetail } from '@/api/order/order'
|
|
|
+import { add, update as updateOrderHeader, getDetail } from '@/api/order/order'
|
|
|
import { getList as getOrderItemList } from '@/api/order/order-item'
|
|
|
-import { createSalesOrder, updateOrder } from '@/api/order/sales-order'
|
|
|
+import { createSalesOrder, updateOrder, addOrderItem } from '@/api/order/sales-order'
|
|
|
import { getCustomerInfo } from '@/api/common/index'
|
|
|
import { getList as getAddressList } from '@/api/order/address'
|
|
|
import { submitOrderToU9 } from '@/api/order/sales-order'
|
|
@@ -996,9 +996,52 @@ export default {
|
|
|
*/
|
|
|
async submitOrderData(submitData) {
|
|
|
if (this.isEdit) {
|
|
|
- // 编辑状态下使用updateOrder接口,包含物料明细数据
|
|
|
- const salesOrderData = this.prepareSalesOrderUpdateData(submitData)
|
|
|
- return await updateOrder(salesOrderData)
|
|
|
+ // 编辑状态下:先仅更新订单基础信息(不包含物料明细),再单独添加“导入”的物料
|
|
|
+ // 第一步:更新订单头
|
|
|
+ const headerData = this.prepareSubmitData()
|
|
|
+ const headerResponse = await updateOrderHeader(headerData)
|
|
|
+ const headerSuccess = headerResponse && headerResponse.data && headerResponse.data.success
|
|
|
+ if (!headerSuccess) {
|
|
|
+ throw new Error((headerResponse && headerResponse.data && headerResponse.data.msg) || '订单基础信息更新失败')
|
|
|
+ }
|
|
|
+
|
|
|
+ // 第二步:仅添加通过导入方式新增的物料(不含从订单获取的物料)
|
|
|
+ const importedMaterials = (this.materialDetails || []).filter(m => m.dataSource === MaterialDetailDataSource.IMPORTED)
|
|
|
+
|
|
|
+ if (importedMaterials.length > 0) {
|
|
|
+ const orderId = (this.formData && this.formData.id) || this.orderId
|
|
|
+ const orderCode = (this.formData && this.formData.orderCode) || ''
|
|
|
+
|
|
|
+ const payloads = importedMaterials.map(material => ({
|
|
|
+ orderId: orderId, // 保持字符串以避免大整数精度问题
|
|
|
+ orderCode,
|
|
|
+ itemId: Number(material.itemId) || 0,
|
|
|
+ itemCode: material.itemCode || '',
|
|
|
+ itemName: material.itemName || '',
|
|
|
+ specs: material.specs || '',
|
|
|
+ mainItemCategoryId: Number(material.mainItemCategoryId) || Number(material.mainCategoryId) || 0,
|
|
|
+ mainItemCategoryName: material.mainItemCategoryName || material.mainCategoryName || '',
|
|
|
+ warehouseId: Number(material.warehouseId) || 0,
|
|
|
+ warehouseName: material.warehouseName || '',
|
|
|
+ availableQuantity: Number(material.availableQuantity) || 0,
|
|
|
+ orderQuantity: Number(material.orderQuantity) || 0,
|
|
|
+ confirmQuantity: Number(material.confirmQuantity) || Number(material.orderQuantity) || 0,
|
|
|
+ unitPrice: Number(material.unitPrice) || 0,
|
|
|
+ taxRate: Number(material.taxRate) || 0,
|
|
|
+ taxAmount: Number(material.taxAmount) || 0,
|
|
|
+ totalAmount: Number(material.totalAmount) || 0,
|
|
|
+ itemStatus: material.itemStatus || ORDER_ITEM_STATUS.UNCONFIRMED
|
|
|
+ }))
|
|
|
+
|
|
|
+ const results = await Promise.all(payloads.map(p => addOrderItem(p)))
|
|
|
+ const allOk = results.every(r => r && r.data && r.data.success)
|
|
|
+ if (!allOk) {
|
|
|
+ throw new Error('部分物料添加失败')
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // 两步均成功,返回头部更新的响应
|
|
|
+ return headerResponse
|
|
|
} else {
|
|
|
// 新建状态下使用createSalesOrder接口,包含物料明细数据
|
|
|
const salesOrderData = this.prepareSalesOrderData(submitData)
|