# 客户往来多维度明细功能前端联调文档 > 优化客户往来功能,新增多维度明细查询接口,支持产品明细和发货明细维度 ## 涉及页面 - 营销管理 / 客户往来 - 客户往来列表页 - 营销管理 / 客户往来 - 客户往来详情页(新增) - 营销管理 / 客户往来 - 产品明细Tab(新增) - 营销管理 / 客户往来 - 发货明细Tab(新增) ## API ### 1. 客户往来列表(原有接口,未变更) | 方法 | 路径 | 说明 | |------|------|------| | GET | /metricStatistics/customewTransactions | 客户往来列表 | **请求参数:** | 参数 | 类型 | 必填 | 说明 | |------|------|------|------| | pageNum | Long | 否 | 页码,默认1 | | pageSize | Long | 否 | 每页条数,默认10 | | customerName | String | 否 | 客户名称(模糊搜索) | **响应字段:** | 字段 | 类型 | 说明 | |------|------|------| | customerId | Long | 客户ID | | customerName | String | 客户名称 | | contractAmounts | BigDecimal | 合同总金额 | | receiptPaymentAmount | BigDecimal | 收款金额 | | receiptableAmount | BigDecimal | 应收金额 | --- ### 1.5 客户往来明细(原有接口,新增字段) | 方法 | 路径 | 说明 | |------|------|------| | GET | /metricStatistics/customewTransactionsDetails | 客户往来明细(合同维度) | **请求参数:** | 参数 | 类型 | 必填 | 说明 | |------|------|------|------| | customerId | Long | 是 | 客户ID | | pageNum | Long | 否 | 页码,默认1 | | pageSize | Long | 否 | 每页条数,默认10 | **响应字段:** | 字段 | 类型 | 说明 | |------|------|------| | salesLedgerId | Long | 销售台账ID | | salesContractNo | String | 销售合同号 | | executionDate | LocalDate | 合同签订日期 | | contractAmount | BigDecimal | 合同金额 | | **productNames** | String | **产品名称列表(逗号分隔)【新增】** | | receiptPaymentAmount | BigDecimal | 收款金额 | | receiptableAmount | BigDecimal | 应收金额 | **响应示例:** ```json { "code": 200, "msg": "操作成功", "data": { "records": [ { "salesLedgerId": 1, "salesContractNo": "HT-2026-001", "executionDate": "2026-06-01", "contractAmount": 50000.00, "productNames": "产品A,产品B,产品C", "receiptPaymentAmount": 30000.00, "receiptableAmount": 20000.00 } ], "total": 10 } } ``` --- ### 2. 客户往来统计汇总(新增) | 方法 | 路径 | 说明 | |------|------|------| | GET | /metricStatistics/customerTransactionsSummary | 客户往来统计汇总 | **请求参数:** | 参数 | 类型 | 必填 | 说明 | |------|------|------|------| | customerId | Long | 是 | 客户ID | **响应字段:** | 字段 | 类型 | 说明 | |------|------|------| | customerId | Long | 客户ID | | customerName | String | 客户名称 | | contractAmounts | BigDecimal | 合同总金额 | | contractCount | Integer | 合同数量 | | productCount | Integer | 产品种类数 | | shippedAmounts | BigDecimal | 发货总金额 | | shippedQuantity | BigDecimal | 发货总数量 | | receivedAmounts | BigDecimal | 收款金额 | | receivableAmounts | BigDecimal | 应收金额 | | returnAmounts | BigDecimal | 退货金额 | | unshippedAmounts | BigDecimal | 未发货金额 | | receivedRate | BigDecimal | 收款率(%) | | shippedRate | BigDecimal | 发货率(%) | **响应示例:** ```json { "code": 200, "msg": "操作成功", "data": { "customerId": 1, "customerName": "客户A", "contractAmounts": 100000.00, "contractCount": 5, "productCount": 12, "shippedAmounts": 80000.00, "shippedQuantity": 500, "receivedAmounts": 60000.00, "receivableAmounts": 20000.00, "returnAmounts": 5000.00, "unshippedAmounts": 20000.00, "receivedRate": 75.00, "shippedRate": 80.00 } } ``` --- ### 3. 客户往来产品明细(新增) | 方法 | 路径 | 说明 | |------|------|------| | GET | /metricStatistics/customerTransactionsProducts | 客户往来产品明细 | **请求参数:** | 参数 | 类型 | 必填 | 说明 | |------|------|------|------| | customerId | Long | 是 | 客户ID | | salesLedgerId | Long | 否 | 销售台账ID(可选,用于筛选某合同) | | pageNum | Long | 否 | 页码,默认1 | | pageSize | Long | 否 | 每页条数,默认10 | **响应字段:** | 字段 | 类型 | 说明 | |------|------|------| | salesLedgerId | Long | 销售台账ID | | salesContractNo | String | 销售合同号 | | productId | Long | 产品ID | | productName | String | 产品名称 | | model | String | 规格型号 | | unit | String | 单位 | | contractQuantity | BigDecimal | 合同数量 | | taxInclusiveUnitPrice | BigDecimal | 合同单价(含税) | | contractAmount | BigDecimal | 合同金额 | | shippedQuantity | BigDecimal | 已发货数量 | | shippedAmount | BigDecimal | 已发货金额 | | receivedAmount | BigDecimal | 已收款金额 | | receivableAmount | BigDecimal | 应收金额 | **响应示例:** ```json { "code": 200, "msg": "操作成功", "data": { "records": [ { "salesLedgerId": 1, "salesContractNo": "HT-2026-001", "productId": 10, "productName": "产品A", "model": "规格1", "unit": "件", "contractQuantity": 100, "taxInclusiveUnitPrice": 50.00, "contractAmount": 5000.00, "shippedQuantity": 80, "shippedAmount": 4000.00, "receivedAmount": 3000.00, "receivableAmount": 1000.00 } ], "total": 25, "pageNum": 1, "pageSize": 10 } } ``` --- ### 4. 客户往来发货明细(新增) | 方法 | 路径 | 说明 | |------|------|------| | GET | /metricStatistics/customerTransactionsShipments | 客户往来发货明细 | **请求参数:** | 参数 | 类型 | 必填 | 说明 | |------|------|------|------| | customerId | Long | 是 | 客户ID | | salesLedgerId | Long | 否 | 销售台账ID(可选,用于筛选某合同) | | pageNum | Long | 否 | 页码,默认1 | | pageSize | Long | 否 | 每页条数,默认10 | **响应字段:** | 字段 | 类型 | 说明 | |------|------|------| | salesLedgerId | Long | 销售台账ID | | salesContractNo | String | 销售合同号 | | shippingId | Long | 发货单ID | | shippingNo | String | 发货单号 | | productName | String | 产品名称 | | model | String | 规格型号 | | shippingQuantity | BigDecimal | 发货数量 | | shippingAmount | BigDecimal | 发货金额(含税) | | batchNo | String | 出库批号 | | shippingDate | LocalDate | 发货日期 | | approvalStatus | Integer | 审批状态(0待审/1已审) | | receivedAmount | BigDecimal | 已收款金额 | | receivableAmount | BigDecimal | 应收金额 | **响应示例:** ```json { "code": 200, "msg": "操作成功", "data": { "records": [ { "salesLedgerId": 1, "salesContractNo": "HT-2026-001", "shippingId": 100, "shippingNo": "FH-2026-001", "productName": "产品A", "model": "规格1", "shippingQuantity": 50, "shippingAmount": 2500.00, "batchNo": "20260618001", "shippingDate": "2026-06-18", "approvalStatus": 1, "receivedAmount": 2000.00, "receivableAmount": 500.00 } ], "total": 30, "pageNum": 1, "pageSize": 10 } } ``` --- ## 前端页面设计 ### 1. 客户往来列表页(优化) ```html ``` --- ### 2. 客户往来详情页(新增) ```html ``` --- ### 3. 产品明细组件 (ProductTable.vue) ```html ``` --- ### 4. 发货明细组件 (ShipmentTable.vue) ```html ``` --- ## 注意事项 1. **路由配置**:需在路由中新增客户往来详情页路由 `/sales/customerTransactions/detail` 2. **组件拆分**:产品明细和发货明细建议拆分为独立组件,便于复用和维护 3. **筛选联动**:产品明细和发货明细支持按合同筛选,合同列表从原有接口获取 4. **数据格式**:金额字段需统一使用 `formatMoney` 方法格式化显示 5. **进度条显示**:产品明细中的发货进度使用 `el-progress` 组件直观展示 6. **状态标识**:应收金额大于0时使用红色标识,已收款使用绿色标识 7. **审批状态**:发货明细中的审批状态使用 `el-tag` 展示,已审为绿色,待审为黄色 --- ## 数据对比 ### 优化前 vs 优化后 | 维度 | 优化前 | 优化后 | |------|--------|--------| | 客户往来 | 只有合同金额、收款、应收 | 新增合同数、产品数、发货率、收款率等12项指标 | | 明细维度 | 仅合同明细 | 新增产品明细、发货明细 | | 筛选能力 | 仅按客户名筛选 | 支持按合同筛选产品/发货明细 | | 数据追溯 | 无法追溯具体发货 | 可追溯每条发货记录的收款情况 | | 进度展示 | 无 | 发货进度条直观展示 |