Browse Source

Merge branch 'dev' into ecp

liyuan 3 weeks ago
parent
commit
1b0e0301b2

+ 32 - 0
src/api/order/sales-order.js

@@ -11,6 +11,10 @@ import request from '@/router/axios'
  * @typedef {import('@/api/types/order').SalesOrderUpdateResponse} SalesOrderUpdateResponse
  * @typedef {import('@/api/types/order').SubmitOrderToU9Request} SubmitOrderToU9Request
  * @typedef {import('@/api/types/order').SubmitOrderToU9Response} SubmitOrderToU9Response
+ * @typedef {import('@/api/types/order').SalesOrderSyncCreateRequest} SalesOrderSyncCreateRequest
+ * @typedef {import('@/api/types/order').SalesOrderSyncCreateResponse} SalesOrderSyncCreateResponse
+ * @typedef {import('@/api/types/order').SalesOrderSyncModifyRequest} SalesOrderSyncModifyRequest
+ * @typedef {import('@/api/types/order').SalesOrderSyncModifyResponse} SalesOrderSyncModifyResponse
  * @typedef {import('@/api/types/order').SalesOrderListQueryParams} SalesOrderListQueryParams
  * @typedef {import('@/api/types/order').SalesOrderListResponse} SalesOrderListResponse
  * @typedef {import('@/api/types/order').SalesOrderItemListRecord} SalesOrderItemListRecord
@@ -259,6 +263,34 @@ export const submitOrderToU9 = async (data) => {
 };
 
 /**
+ * 创建订单同步任务(U9Cloud)
+ * POST /blade-u9cloud/sales/order/sync/create
+ * @param {SalesOrderSyncCreateRequest} data - 请求参数
+ * @returns {Promise<SalesOrderSyncCreateResponse>} 接口响应
+ */
+export const createSalesOrderSync = async (data) => {
+  return request({
+    url: '/api/blade-u9cloud/sales/order/sync/create',
+    method: 'post',
+    data
+  })
+}
+
+/**
+ * 修改订单同步任务(U9Cloud)
+ * POST /blade-u9cloud/sales/order/sync/modify
+ * @param {SalesOrderSyncModifyRequest} data - 请求参数
+ * @returns {Promise<SalesOrderSyncModifyResponse>} 接口响应
+ */
+export const modifySalesOrderSync = async (data) => {
+  return request({
+    url: '/api/blade-u9cloud/sales/order/sync/modify',
+    method: 'post',
+    data
+  })
+}
+
+/**
  * 获取销售订单列表
  * @param {number} current - 当前页码
  * @param {number} size - 每页大小

+ 37 - 0
src/api/types/order.d.ts

@@ -238,6 +238,43 @@ export interface SubmitOrderToU9Request {
 export type SubmitOrderToU9Response = AxiosResponse<ApiResponseData<null>>;
 
 /**
+ * 创建订单同步任务(U9Cloud)请求参数
+ * POST /blade-u9cloud/sales/order/sync/create
+ */
+export interface SalesOrderSyncCreateRequest {
+  orderCode: string;
+}
+
+/**
+ * 创建订单同步任务(U9Cloud)响应体
+ * 响应示例:{ code: 200, success: true, data: null }
+ */
+export interface SalesOrderSyncCreateResponseData {
+  code: number;
+  success: boolean;
+  data: null;
+  msg?: string;
+}
+
+/**
+ * 创建订单同步任务(U9Cloud)响应类型
+ */
+export type SalesOrderSyncCreateResponse = AxiosResponse<SalesOrderSyncCreateResponseData>;
+
+/**
+ * 修改订单同步任务(U9Cloud)请求参数
+ * POST /blade-u9cloud/sales/order/sync/modify
+ */
+export interface SalesOrderSyncModifyRequest {
+  orderCode: string;
+}
+
+/**
+ * 修改订单同步任务(U9Cloud)响应类型
+ */
+export type SalesOrderSyncModifyResponse = AxiosResponse<SalesOrderSyncCreateResponseData>;
+
+/**
  * 订单明细项记录接口
  */
 export interface OrderItemRecord extends BaseEntity {

+ 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: ''
     }
   },
 

+ 14 - 3
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"
     />
@@ -140,7 +141,7 @@ import { option } from './option'
 import { add, update, getDetail } from '@/api/order/order'
 import { getOrderList } from '@/api/order/sales-order'
 import { getList as getOrderItemList } from '@/api/order/order-item'
-import { submitOrderToU9 } from '@/api/order/sales-order'
+import { modifySalesOrderSync } from '@/api/order/sales-order'
 import { getUnification } from '@/api/common'
 import {
   ORDER_TYPES,
@@ -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 = ''
     },
 
     /**
@@ -493,6 +498,12 @@ export default {
     async handleSubmitToU9(row) {
        let loading = null
        try {
+         const orderCode = row && row.orderCode ? String(row.orderCode) : ''
+         if (!orderCode) {
+           this.$message.error('订单编码为空,无法提交')
+           return
+         }
+
          await this.$confirm('确认要提交该订单到U9系统吗?', '提示', {
            confirmButtonText: '确定',
            cancelButtonText: '取消',
@@ -506,8 +517,8 @@ export default {
            background: 'rgba(0, 0, 0, 0.7)'
          })
 
-         const payload = { id: String(row.id) }
-         const response = await submitOrderToU9(payload)
+         const payload = { orderCode }
+         const response = await modifySalesOrderSync(payload)
 
          if (response.data && response.data.success) {
            this.$message.success('订单提交成功')