Browse Source

feat(订单表单): 优化保存后的页面跳转逻辑并添加物料唯一ID

yz 1 week ago
parent
commit
15ec005f6b

+ 2 - 0
src/components/order-form/material-detail-mixin.js

@@ -583,6 +583,8 @@ export default {
      */
     prepareMaterialDetailData(material) {
       return {
+        // 保证每条导入的明细都有唯一id,满足表格校验与行标识需求
+        id: String(material.id || this.generateUniqueId()),
         itemId: material.itemId,
         itemCode: material.itemCode,
         itemName: material.itemName,

+ 9 - 6
src/components/order-form/order-form-mixin.js

@@ -991,12 +991,13 @@ export default {
          */
         this.$emit(ORDER_FORM_EVENTS.SAVE_SUCCESS, response.data.data)
 
-        // 保持在当前页:编辑模式不返回列表,仅在新增模式返回列表
-        if (!this.isEdit) {
-          // 新增模式:保存成功后返回列表
-          this.handleBack()
-        } else {
-          // 编辑模式:留在当前页,方便继续编辑
+        // 保持在当前页:新增与编辑模式均不主动返回列表
+        // 编辑模式:保存成功后刷新订单详情,已保存的物料置为不可删除
+        if (this.isEdit) {
+          const savedId = (response && response.data && response.data.data && response.data.data.id) || this.orderId || (this.formData && this.formData.id)
+          if (savedId) {
+            await this.loadOrderDetail(String(savedId))
+          }
         }
 
       } catch (error) {
@@ -1054,6 +1055,8 @@ export default {
           if (orderId) {
             await this.loadOrderDetail(orderId)
           }
+          // 提交动作完成后返回订单列表页
+          this.handleBack()
         } else {
           this.$message.error((response && response.data && response.data.msg) || '提交失败')
         }

+ 6 - 4
src/views/order/order/index-avue.vue

@@ -431,10 +431,12 @@ export default {
         // 后台刷新列表数据,不影响停留在表单
         this.onLoad(this.page)
       } else {
-        // 新增模式:保存后返回列表
-        this.orderFormVisible = false
-        this.isEditMode = false
-        this.editOrderId = null
+        // 新增模式:保存后停留当前页并切换到编辑模式,显示提交按钮
+        this.orderFormVisible = true
+        this.isEditMode = true
+        // 设置新创建订单的ID,确保子组件处于编辑态并加载详情
+        this.editOrderId = orderData && orderData.id ? String(orderData.id) : this.editOrderId
+        // 刷新列表数据,保持数据最新
         this.onLoad(this.page)
       }
     },