Browse Source

Merge branch 'dev' into ecp

liyuan 1 month ago
parent
commit
b38f337fe1

+ 18 - 0
src/api/common/index.js

@@ -12,6 +12,7 @@ import request from '@/router/axios';
  * @typedef {import('@/api/types/common').CustomerInfoData} CustomerInfoData
  * @typedef {import('@/api/types/common').GetCustomerInfoResponse} GetCustomerInfoResponse
  * @typedef {import('@/api/types/common').UnificationResponse} UnificationResponse
+ * @typedef {import('@/api/types/common').CustomerAddressSelectResponse} CustomerAddressSelectResponse
  */
 
 /**
@@ -45,6 +46,23 @@ export const getCustomerDetail = async (customerId) => {
   });
 };
 
+/**
+ * 获取客户地址选择列表
+ * @param {number} [current=1] - 当前页码
+ * @param {number} [size=100] - 每页数量
+ * @returns {Promise<CustomerAddressSelectResponse>} 客户地址选择列表响应
+ */
+export const getCustomerAddressSelectList = async (current = 1, size = 100) => {
+  return request({
+    url: '/api/blade-factory/api/factory/viewCustomeraddressSel',
+    method: 'get',
+    params: {
+      current,
+      size
+    }
+  });
+};
+
 
 
 /**

+ 5 - 1
src/api/types/claim.d.ts

@@ -106,6 +106,10 @@ export interface ClaimItem {
   vehicleNumber?: string;
   /** 轮胎数量 */
   tireQuantity?: number;
+  /** 花纹 */
+  brandItem?: string;
+  /** 品牌 */
+  brandName?: string;
   /** 是否已提交 0-未提交 1-已提交 */
   isSubmitTime?: number;
 }
@@ -214,4 +218,4 @@ export type ClaimAuditListResponse = AxiosResponse<ApiResponse<PageResult<ClaimA
 export type ClaimSaveResponse = AxiosResponse<ApiResponse<ClaimItem>>;
 export type ClaimDeleteResponse = AxiosResponse<ApiResponse<boolean>>;
 export type ClaimAttachmentSaveResponse = AxiosResponse<ApiResponse<ClaimAttachment>>;
-export type ClaimAuditSaveResponse = AxiosResponse<ApiResponse<ClaimAuditRecord>>;
+export type ClaimAuditSaveResponse = AxiosResponse<ApiResponse<ClaimAuditRecord>>;

+ 24 - 0
src/api/types/common.d.ts

@@ -173,6 +173,30 @@ export type CustomerListResponse = AxiosResponse<ApiResponseData<PageResult<Cust
 export type CustomerDetailResponse = AxiosResponse<ApiResponseData<CustomerItem>>;
 
 /**
+ * 客户地址选择项接口
+ */
+export interface CustomerAddressSelectItem {
+  id: string;
+  createUser: string;
+  createDept: string;
+  createTime: string;
+  updateUser: string;
+  updateTime: string;
+  status: number;
+  isDeleted: number;
+  Customer_ID: number;
+  Customer_CODE: string;
+  Contacts: string;
+  Phone: string;
+  CustAddress: string;
+}
+
+/**
+ * 客户地址选择响应类型
+ */
+export type CustomerAddressSelectResponse = AxiosResponse<ApiResponseData<CustomerAddressSelectItem[]>>;
+
+/**
  * 物料列表响应类型
  */
 export type ItemListResponse = AxiosResponse<ApiResponseData<PageResult<ItemRecord>>>;

+ 17 - 23
src/components/order-form/address-select.vue

@@ -26,13 +26,12 @@
 </template>
 
 <script>
-import { getList } from '@/api/order/address'
+import { getCustomerAddressSelectList } from '@/api/common/index'
 import { COMMON_EVENTS, ADDRESS_SELECT_EVENTS } from './events'
 
 /**
- * @typedef {import('@/api/types/address').CustomerAddressRecord} CustomerAddressRecord
- * @typedef {import('@/api/types/address').CustomerAddressQueryParams} CustomerAddressQueryParams
- * @typedef {import('@/api/types/address').CustomerAddressListResponse} CustomerAddressListResponse
+ * @typedef {import('@/api/types/common').CustomerAddressSelectItem} CustomerAddressSelectItem
+ * @typedef {import('@/api/types/common').CustomerAddressSelectResponse} CustomerAddressSelectResponse
  */
 
 /**
@@ -266,16 +265,11 @@ export default {
       try {
         this.loading = true
         
-        /** @type {CustomerAddressQueryParams} */
-        const queryParams = {
-          customerCode: customerCode
-        }
-        
-        /** @type {CustomerAddressListResponse} */
-        const response = await getList(1, 100, queryParams)
+        /** @type {CustomerAddressSelectResponse} */
+        const response = await getCustomerAddressSelectList(1, 100)
         
-        if (response?.data?.success && response.data.data?.records) {
-          this.addressOptions = this.transformAddressData(response.data.data.records)
+        if (response?.data?.success && Array.isArray(response.data.data)) {
+          this.addressOptions = this.transformAddressData(response.data.data)
         } else {
           this.addressOptions = []
           const errorMsg = response?.data?.msg || '获取地址列表失败'
@@ -294,21 +288,21 @@ export default {
     /**
      * 转换地址数据
      * @description 将API返回的地址数据转换为组件所需的选项格式
-     * @param {CustomerAddressRecord[]} addressRecords - 地址记录数组
+     * @param {CustomerAddressSelectItem[]} addressRecords - 地址记录数组
      * @returns {AddressSelectOption[]} 转换后的地址选项数组
      * @private
      */
     transformAddressData(addressRecords) {
       return addressRecords.map(address => ({
         id: address.id,
-        label: `${address.receiverName} - ${address.receiverPhone} - ${address.regionName}${address.detailAddress}`,
-        receiverName: address.receiverName,
-        receiverPhone: address.receiverPhone,
-        regionCode: address.regionCode,
-        regionName: address.regionName,
-        detailAddress: address.detailAddress,
-        postalCode: address.postalCode || '',
-        isDefault: address.isDefault,
+        label: `${address.Contacts} - ${address.Phone} - ${address.CustAddress}`,
+        receiverName: address.Contacts,
+        receiverPhone: address.Phone,
+        regionCode: '',
+        regionName: address.CustAddress,
+        detailAddress: address.CustAddress,
+        postalCode: '',
+        isDefault: 0,
         addressData: address
       }))
     },
@@ -457,4 +451,4 @@ export default {
   line-height: 1.5;
   padding: 8px 20px;
 }
-</style>
+</style>

+ 14 - 18
src/components/order-form/order-form-mixin.js

@@ -7,8 +7,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 } from '@/api/common/index'
-import { getList as getAddressList } from '@/api/order/address'
+import { getCustomerInfo, getCustomerAddressSelectList } from '@/api/common/index'
 import { submitOrderToU9 } from '@/api/order/sales-order'
 
 // 常量和枚举导入
@@ -606,7 +605,7 @@ export default {
 
     /**
      * 加载客户地址信息
-     * @description 根据客户ID获取地址列表,如果只有一个地址则直接选中,如果多个则选中默认地址
+     * @description 根据客户ID获取地址列表,如果只有一个地址则直接选中,多个则选中第一条
      * @param {string} customerCode - 客户ID
      * @returns {Promise<void>}
      * @throws {Error} 当API调用失败时抛出异常
@@ -615,21 +614,18 @@ export default {
      */
     async loadCustomerAddresses(customerCode) {
       try {
-        // 使用getList方法,传递分页参数和查询条件
-        const response = await getAddressList(1, 100, { customerCode })
+        // 使用统一客户地址选择接口
+        const response = await getCustomerAddressSelectList(1, 100)
 
-        if (response?.data?.success && response.data.data?.records) {
-          const addresses = response.data.data.records
+        if (response?.data?.success && Array.isArray(response.data.data)) {
+          const addresses = response.data.data
 
           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)
-            }
+            // 多个地址,选中第一条
+            this.selectAddress(addresses[0])
           }
         } else {
           console.warn('获取客户地址失败:', response?.data?.msg || '未知错误')
@@ -643,18 +639,18 @@ export default {
     /**
      * 选择地址
      * @description 将选中的地址信息填充到表单中
-     * @param {import('@/api/types/address').CustomerAddressRecord} address - 地址对象
+     * @param {import('@/api/types/common').CustomerAddressSelectItem} 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 || '')
+        this.$set(this.formData, 'addressId', address.id != null ? address.id.toString() : '')
+        this.$set(this.formData, 'receiverName', address.Contacts || '')
+        this.$set(this.formData, 'receiverPhone', address.Phone || '')
+        this.$set(this.formData, 'receiverRegion', address.CustAddress || '')
+        this.$set(this.formData, 'receiverAddress', address.CustAddress || '')
       }
     },
 

+ 10 - 0
src/views/claim/claimMixin.js

@@ -747,6 +747,16 @@ export default {
     },
 
     /**
+     * 格式化审核金额,兼容字符串/空值
+     * @param {number|string} amount - 审核金额
+     * @returns {string} 格式化后的金额
+     */
+    formatAuditAmount(amount) {
+      const num = parseFloat(amount)
+      return Number.isNaN(num) ? '0.00' : num.toFixed(2)
+    },
+
+    /**
      * 获取审核结果文本
      * @param {number} result - 审核结果,使用 AUDIT_STATUS
      * @returns {string} 结果文本 '通过' | '拒绝' | '未知'

+ 13 - 1
src/views/claim/index.vue

@@ -180,6 +180,18 @@
                 <span>{{ claimDetail.tireQuantity || '-' }}</span>
               </div>
             </el-col>
+            <el-col :span="8">
+              <div class="detail-item">
+                <label>花纹:</label>
+                <span>{{ claimDetail.brandItem || '-' }}</span>
+              </div>
+            </el-col>
+            <el-col :span="8">
+              <div class="detail-item">
+                <label>品牌:</label>
+                <span>{{ claimDetail.brandName || '-' }}</span>
+              </div>
+            </el-col>
           </el-row>
         </el-card>
 
@@ -346,7 +358,7 @@
         </el-table-column>
         <el-table-column prop="auditAmount" label="审核金额" width="120">
           <template slot-scope="scope">
-            ¥{{ scope.row.auditAmount }}
+            {{ formatAuditAmount(scope.row.auditAmount) }}
           </template>
         </el-table-column>
         <el-table-column prop="reasonDetail" label="审核说明" show-overflow-tooltip></el-table-column>

+ 10 - 0
src/views/claim/types.d.ts

@@ -35,9 +35,14 @@ export interface ClaimItem {
   purchaseDate: string; // 购买日期
   mountDate: string; // 安装日期
   runMileage: number; // 行驶里程
+  vehicleNumber?: string; // 车牌号
+  tireQuantity?: number; // 轮胎数量
+  brandItem?: string; // 花纹
+  brandName?: string; // 品牌
   claimReason: string; // 理赔原因
   claimAmount: string; // 理赔金额
   auditStatus: number; // 审核状态
+  isSubmitTime?: number; // 是否已提交 0-未提交 1-已提交
   submitTime: string; // 提交时间
   createTime: string; // 创建时间
   updateTime: string; // 更新时间
@@ -153,9 +158,14 @@ export interface ClaimItem {
   purchaseDate: string;
   mountDate: string;
   runMileage: number;
+  vehicleNumber?: string;
+  tireQuantity?: number;
+  brandItem?: string;
+  brandName?: string;
   claimReason: string;
   claimAmount: string;
   auditStatus: number;
+  isSubmitTime?: number;
   submitTime: string;
   createTime: string;
   updateTime: string;