|
@@ -9,6 +9,7 @@ import { getList as getOrderItemList } from '@/api/order/order-item'
|
|
|
import { createSalesOrder, updateOrder } 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'
|
|
|
|
|
|
// 常量和枚举导入
|
|
|
import {
|
|
@@ -865,8 +866,8 @@ export default {
|
|
|
* @public
|
|
|
* @emits save-success 保存成功事件
|
|
|
* @this {import('./types').OrderFormMixinComponent}
|
|
|
- */
|
|
|
- async handleSave() {
|
|
|
+ */
|
|
|
+ async handleSave() {
|
|
|
if (this.saveLoading) {
|
|
|
return // 防止重复提交
|
|
|
}
|
|
@@ -911,14 +912,74 @@ export default {
|
|
|
},
|
|
|
|
|
|
/**
|
|
|
+ * 判断订单是否可以提交到U9
|
|
|
+ * @description 仅草稿(0)和未提交(1)状态允许提交
|
|
|
+ * @param {import('./types').OrderFormModel | any} row - 订单数据对象
|
|
|
+ * @returns {boolean}
|
|
|
+ */
|
|
|
+ canSubmitToU9(row) {
|
|
|
+ if (!row) return false
|
|
|
+ const status = Number(row.status)
|
|
|
+ return status === ORDER_STATUS.DRAFT || status === ORDER_STATUS.SUBMITTED
|
|
|
+ },
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 提交订单到U9系统(表单页)
|
|
|
+ * @description 弹出确认框,提交当前表单的订单ID到U9,成功后刷新订单详情以同步状态
|
|
|
+ * @returns {Promise<void>}
|
|
|
+ * @this {import('./types').OrderFormMixinComponent}
|
|
|
+ */
|
|
|
+ async handleSubmitToU9() {
|
|
|
+ // 仅在编辑模式且存在ID时允许提交
|
|
|
+ const orderId = this.formData && (this.formData.id || this.orderId)
|
|
|
+ if (!this.isEdit || !orderId) return
|
|
|
+
|
|
|
+ /** @type {any} */
|
|
|
+ let loadingInstance = null
|
|
|
+ try {
|
|
|
+ await this.$confirm('确认要提交该订单到U9系统吗?', '提示', {
|
|
|
+ confirmButtonText: '确定',
|
|
|
+ cancelButtonText: '取消',
|
|
|
+ type: 'warning'
|
|
|
+ })
|
|
|
+
|
|
|
+ loadingInstance = this.$loading({
|
|
|
+ lock: true,
|
|
|
+ text: '正在提交到U9系统...',
|
|
|
+ spinner: 'el-icon-loading',
|
|
|
+ background: 'rgba(0, 0, 0, 0.7)'
|
|
|
+ })
|
|
|
+
|
|
|
+ const response = await submitOrderToU9({ id: orderId })
|
|
|
+ if (response && response.data && response.data.success) {
|
|
|
+ this.$message.success('订单提交成功')
|
|
|
+ // 提交成功后,重新加载详情以更新状态
|
|
|
+ if (orderId) {
|
|
|
+ await this.loadOrderDetail(orderId)
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ this.$message.error((response && response.data && response.data.msg) || '提交失败')
|
|
|
+ }
|
|
|
+ } catch (error) {
|
|
|
+ if (error !== 'cancel') {
|
|
|
+ // eslint-disable-next-line no-console
|
|
|
+ console.error('提交订单到U9失败:', error)
|
|
|
+ this.$message.error('提交失败,请稍后重试')
|
|
|
+ }
|
|
|
+ } finally {
|
|
|
+ if (loadingInstance) loadingInstance.close()
|
|
|
+ }
|
|
|
+ },
|
|
|
+
|
|
|
+ /**
|
|
|
* 提交订单数据到服务器
|
|
|
* @description 根据编辑模式调用相应的API接口,编辑模式下使用updateOrder包含物料明细,新建状态下使用createSalesOrder包含物料明细
|
|
|
* @param {OrderFormModel} submitData - 要提交的订单数据
|
|
|
* @returns {Promise<import("@/api/types/order").SalesOrderCreateResponse>} API响应结果
|
|
|
* @private
|
|
|
* @this {import('./types').OrderFormMixinComponent}
|
|
|
- */
|
|
|
- async submitOrderData(submitData) {
|
|
|
+ */
|
|
|
+ async submitOrderData(submitData) {
|
|
|
if (this.isEdit) {
|
|
|
// 编辑状态下使用updateOrder接口,包含物料明细数据
|
|
|
const salesOrderData = this.prepareSalesOrderUpdateData(submitData)
|