Jelajahi Sumber

fix(order-form): 修复编辑订单时未加载详情导致无法提交的问题

yz 3 minggu lalu
induk
melakukan
301cf080bb

+ 29 - 15
src/components/order-form/order-form-mixin.js

@@ -8,7 +8,7 @@ import { add, update as updateOrderHeader, getDetail } from '@/api/order/order'
 import { getList as getOrderItemList } from '@/api/order/order-item'
 import { createSalesOrder, updateOrder, addOrderItem, updateOrderItem } from '@/api/order/sales-order'
 import { getCustomerInfo, getCustomerAddressSelectList } from '@/api/common/index'
-import { submitOrderToU9 } from '@/api/order/sales-order'
+import { createSalesOrderSync, modifySalesOrderSync } from '@/api/order/sales-order'
 
 // 常量和枚举导入
 import {
@@ -180,7 +180,13 @@ export default {
       // 事件常量,用于模板中的动态事件绑定
       CUSTOMER_SELECT_EVENTS,
       ADDRESS_SELECT_EVENTS,
-      MATERIAL_DETAIL_EVENTS
+      MATERIAL_DETAIL_EVENTS,
+      /**
+       * 进入表单时是否为编辑模式(用于区分“新增保存后切换为编辑”与“编辑进入”)
+       * @description 仅在组件创建时记录一次,不随 isEdit props 变化而变化
+       * @type {boolean}
+       */
+      entryIsEdit: Boolean(this.isEdit)
     }
   },
 
@@ -1055,26 +1061,34 @@ export default {
 
         loadingInstance = this.$loading({
           lock: true,
-          text: '正在处理...',
+          text: '正在提交...',
           spinner: 'el-icon-loading',
           background: 'rgba(0, 0, 0, 0.7)'
         })
 
-        // 注释掉U9接口调用,直接返回列表页
-        /*
-        const response = await submitOrderToU9({ id: String(orderId) })
-        if (response && response.data && response.data.success) {
-          this.$message.success('订单提交成功')
-          // 提交成功后,重新加载详情以更新状态
-          if (orderId) {
-            await this.loadOrderDetail(orderId)
-          }
+        // 以订单编码为准调用 U9Cloud 同步接口
+        let orderCode = (this.formData && this.formData.orderCode) || this.initialOrderCode
+        if (!orderCode && orderId) {
+          await this.loadOrderDetail(String(orderId))
+          orderCode = this.formData && this.formData.orderCode
+        }
+        if (!orderCode) {
+          this.$message.error('未获取到订单编码,无法提交')
+          return
+        }
+
+        // 新增进入(保存后切换编辑):创建同步任务;编辑进入:修改同步任务
+        const apiCall = this.entryIsEdit ? modifySalesOrderSync : createSalesOrderSync
+        const response = await apiCall({ orderCode: String(orderCode) })
+        const ok = response && response.data && response.data.success
+        if (ok) {
+          this.$message.success('提交成功')
         } else {
-          this.$message.error((response && response.data && response.data.msg) || '提交失败')
+          const msg = (response && response.data && (response.data.msg || response.data.message)) || '提交失败'
+          this.$message.error(msg)
+          return
         }
-        */
 
-        this.$message.success('订单已提交')
         // 直接返回订单列表页
         this.handleBack()
       } catch (error) {

+ 10 - 0
src/components/order-form/order-form.vue

@@ -175,6 +175,16 @@ export default {
                typeof value === 'string' ||
                typeof value === 'number'
       }
+    },
+
+    /**
+     * 初始订单编码(用于编辑进入时兜底,避免详情未加载导致无法提交)
+     * @type {string}
+     * @default ''
+     */
+    initialOrderCode: {
+      type: String,
+      default: ''
     }
   },
 

+ 5 - 0
src/views/order/order/index-avue.vue

@@ -6,6 +6,7 @@
       :visible="orderFormVisible"
       :is-edit="isEditMode"
       :order-id="editOrderId"
+      :initial-order-code="editOrderCode"
       @back="handleFormBack"
       @save-success="handleFormSaveSuccess"
     />
@@ -176,6 +177,7 @@ export default {
       orderFormVisible: false,
       isEditMode: false,
       editOrderId: null,
+      editOrderCode: '',
       // 同步按钮loading状态
       syncLoading: false,
 
@@ -369,6 +371,7 @@ export default {
     handleAdd() {
       this.isEditMode = false
       this.editOrderId = null
+      this.editOrderCode = ''
       this.orderFormVisible = true
     },
 
@@ -377,6 +380,7 @@ export default {
       if (!row || !row.id) return
       this.isEditMode = true
       this.editOrderId = row.id
+      this.editOrderCode = row.orderCode || ''
       this.orderFormVisible = true
     },
 
@@ -416,6 +420,7 @@ export default {
       this.orderFormVisible = false
       this.isEditMode = false
       this.editOrderId = null
+      this.editOrderCode = ''
     },
 
     /**