|
@@ -7,6 +7,8 @@
|
|
|
import { add, update, getDetail } from '@/api/order/order'
|
|
|
import { getList as getOrderItemList } from '@/api/order/order-item'
|
|
|
import { createSalesOrder } from '@/api/order/sales-order'
|
|
|
+import { getCustomerInfo } from '@/api/common/index'
|
|
|
+import { getList as getAddressList } from '@/api/order/address'
|
|
|
|
|
|
// 常量和枚举导入
|
|
|
import {
|
|
@@ -522,6 +524,11 @@ export default {
|
|
|
// 重置保存状态
|
|
|
this.saveLoading = false
|
|
|
|
|
|
+ // 在新增模式下,调用getCustomerInfo接口获取客户信息
|
|
|
+ if (!this.isEdit) {
|
|
|
+ await this.loadCustomerInfo()
|
|
|
+ }
|
|
|
+
|
|
|
// 等待DOM更新后清除表单验证
|
|
|
await this.$nextTick()
|
|
|
|
|
@@ -537,6 +544,103 @@ export default {
|
|
|
},
|
|
|
|
|
|
/**
|
|
|
+ * 加载客户信息
|
|
|
+ * @description 在新增模式下调用getCustomerInfo接口获取客户信息并填充表单
|
|
|
+ * @returns {Promise<void>}
|
|
|
+ * @throws {Error} 当API调用失败时抛出异常
|
|
|
+ * @private
|
|
|
+ * @this {import('./types').OrderFormMixinComponent}
|
|
|
+ */
|
|
|
+ async loadCustomerInfo() {
|
|
|
+ try {
|
|
|
+ this.formLoading = true
|
|
|
+
|
|
|
+ const response = await getCustomerInfo()
|
|
|
+
|
|
|
+ if (response?.data?.success && response.data.data) {
|
|
|
+ const customerData = response.data.data
|
|
|
+
|
|
|
+ // 填充客户相关字段到表单(根据实际API返回的字段名称)
|
|
|
+ this.$set(this.formData, 'orgId', customerData.ORG_ID)
|
|
|
+ this.$set(this.formData, 'orgCode', customerData.ORG_CODE || '')
|
|
|
+ this.$set(this.formData, 'orgName', customerData.ORG_NAME || '')
|
|
|
+ this.$set(this.formData, 'customerId', customerData.Customer_ID)
|
|
|
+ this.$set(this.formData, 'customerCode', customerData.Customer_CODE || '')
|
|
|
+ this.$set(this.formData, 'customerName', customerData.Customer_NAME || '')
|
|
|
+
|
|
|
+ // 根据Customer_CODE加载地址信息
|
|
|
+ if (customerData.Customer_CODE) {
|
|
|
+ await this.loadCustomerAddresses(customerData.Customer_CODE)
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ const errorMsg = response?.data?.msg || '获取客户信息失败'
|
|
|
+ console.warn('获取客户信息失败:', errorMsg)
|
|
|
+ this.$message.warning('获取客户信息失败,请手动填写相关信息')
|
|
|
+ }
|
|
|
+ } catch (error) {
|
|
|
+ console.error('加载客户信息API调用失败:', error)
|
|
|
+ this.$message.error('网络错误,获取客户信息失败')
|
|
|
+ throw error
|
|
|
+ } finally {
|
|
|
+ this.formLoading = false
|
|
|
+ }
|
|
|
+ },
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 加载客户地址信息
|
|
|
+ * @description 根据客户ID获取地址列表,如果只有一个地址则直接选中,如果多个则选中默认地址
|
|
|
+ * @param {string} customerCode - 客户ID
|
|
|
+ * @returns {Promise<void>}
|
|
|
+ * @throws {Error} 当API调用失败时抛出异常
|
|
|
+ * @private
|
|
|
+ * @this {import('./types').OrderFormMixinComponent}
|
|
|
+ */
|
|
|
+ async loadCustomerAddresses(customerCode) {
|
|
|
+ try {
|
|
|
+ // 使用getList方法,传递分页参数和查询条件
|
|
|
+ const response = await getAddressList(1, 100, { customerCode })
|
|
|
+
|
|
|
+ if (response?.data?.success && response.data.data?.records) {
|
|
|
+ const addresses = response.data.data.records
|
|
|
+
|
|
|
+ if (addresses.length === 1) {
|
|
|
+ // 只有一个地址,直接选中
|
|
|
+ this.selectAddress(addresses[0])
|
|
|
+ } else if (addresses.length > 1) {
|
|
|
+ // 多个地址,选中默认地址
|
|
|
+ const defaultAddress = addresses.find(addr => addr.isDefault === 1)
|
|
|
+ if (defaultAddress) {
|
|
|
+ this.selectAddress(defaultAddress)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ console.warn('获取客户地址失败:', response?.data?.msg || '未知错误')
|
|
|
+ }
|
|
|
+ } catch (error) {
|
|
|
+ console.error('加载客户地址API调用失败:', error)
|
|
|
+ // 地址加载失败不影响主流程,只记录错误
|
|
|
+ }
|
|
|
+ },
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 选择地址
|
|
|
+ * @description 将选中的地址信息填充到表单中
|
|
|
+ * @param {import('@/api/types/address').CustomerAddressRecord} address - 地址对象
|
|
|
+ * @returns {void}
|
|
|
+ * @private
|
|
|
+ * @this {import('./types').OrderFormMixinComponent}
|
|
|
+ */
|
|
|
+ selectAddress(address) {
|
|
|
+ if (address && this.formData) {
|
|
|
+ this.$set(this.formData, 'addressId', address.id.toString())
|
|
|
+ this.$set(this.formData, 'receiverName', address.receiverName || '')
|
|
|
+ this.$set(this.formData, 'receiverPhone', address.receiverPhone || '')
|
|
|
+ this.$set(this.formData, 'receiverRegion', address.regionName || '')
|
|
|
+ this.$set(this.formData, 'receiverAddress', address.detailAddress || '')
|
|
|
+ }
|
|
|
+ },
|
|
|
+
|
|
|
+ /**
|
|
|
* 加载订单详情数据
|
|
|
* @description 根据订单ID从服务器获取订单详情并填充到表单中,同时并行加载物料明细数据以提高性能
|
|
|
* @param {string|number} orderId - 订单唯一标识符
|
|
@@ -1042,7 +1146,7 @@ export default {
|
|
|
*/
|
|
|
prepareMaterialItemData(material) {
|
|
|
return {
|
|
|
- orderId: this.formData.id,
|
|
|
+ orderId: this.formData.id ? parseInt(this.formData.id) : 0,
|
|
|
orderCode: this.formData.orderCode || '',
|
|
|
itemId: Number(material.itemId) || 0,
|
|
|
itemCode: material.itemCode || '',
|