浏览代码

feat(forecast): 新增销售预测主表分页列表接口并优化文档

yz 1 月之前
父节点
当前提交
ff4130fe56
共有 1 个文件被更改,包括 35 次插入38 次删除
  1. 35 38
      src/api/forecast/forecast-summary.js

+ 35 - 38
src/api/forecast/forecast-summary.js

@@ -99,6 +99,29 @@ export const getSalesForecastMainList = async (current = 1, size = 10, params =
 }
 
 /**
+ * 销售预测主表分页列表(含明细)
+ * 对应后端:GET /api/blade-factory/api/factory/salesForecastSummary/forecast/list
+ * 说明:返回结构与 main-list 相同,顶层记录为 SalesForecastMainRecord,
+ *       明细列表字段为 pcBladeSalesForecastSummaryList,因此直接复用现有类型
+ * @param {number} [current=1] - 当前页码
+ * @param {number} [size=10] - 每页数量
+ * @param {SalesForecastMainListQueryParams} [params={}] - 查询参数(year、month、customerName)
+ * @returns {Promise<SalesForecastMainListResponse>} 分页响应
+ * @example
+ * // 基础分页
+ * const res = await getSalesForecastForecastList(1, 10)
+ * // 条件筛选
+ * const res2 = await getSalesForecastForecastList(1, 10, { year: 2025, month: 10, customerName: '库比森' })
+ */
+export const getSalesForecastForecastList = async (current = 1, size = 10, params = {}) => {
+  return request({
+    url: '/api/blade-factory/api/factory/salesForecastSummary/forecast/list',
+    method: 'get',
+    params: { current, size, ...params }
+  })
+}
+
+/**
  * 新增销售预测主表(main-add)
  * @param {import('./types').SalesForecastMainAddRequest} data - 主表新增请求体(包含年份、月份、审批状态以及子项列表)
  * @returns {Promise<import('./types').SalesForecastMainAddResponse>} 新增主表响应(data 通常为 null,msg 为提示信息)
@@ -258,7 +281,10 @@ export const batchRemoveForecastSummary = async (ids) => {
  * @returns {Promise<ForecastSummaryOperationResponse>} 审批预测汇总响应
  * @description 审批销售预测汇总记录
  * @example
- * const result = await approveForecastSummary({ id: '1954819531796865026', approvalStatus: 1, approvalComment: '同意申报' })
+ * // 通过审批
+ * await approveForecastSummary({ id: '123', approvalStatus: 1, approvalComment: '同意' })
+ * // 拒绝审批
+ * await approveForecastSummary({ id: '123', approvalStatus: 2, approvalComment: '不符合要求' })
  */
 export const approveForecastSummary = async (data) => {
   return request({
@@ -270,27 +296,9 @@ export const approveForecastSummary = async (data) => {
 
 /**
  * 销售预测汇总批量保存
- * @param {SalesForecastSummaryBatchSaveRequest} data - 批量保存的数据列表
- * @returns {Promise<SalesForecastSummaryBatchSaveResponse>} 批量保存结果响应(data 为 null,msg 为提示)
- * @description 批量保存销售预测汇总数据,按后端约定返回通用响应结构
- * @example
- * const payload = [
- *   {
- *     year: 2025,
- *     month: 12,
- *     brandId: 2001,
- *     brandCode: 'BRAND-A001',
- *     brandName: '朝阳轮胎11111',
- *     itemId: 30001,
- *     itemCode: 'ITEM-8001',
- *     itemName: '高性能轿车轮胎',
- *     specs: '225/50R17',
- *     pattern: 'AS01',
- *     forecastQuantity: 1200.00,
- *     approvalStatus: 0
- *   }
- * ]
- * const res = await batchSaveSalesForecastSummary(payload)
+ * 对应后端:POST /api/blade-factory/api/factory/salesForecastSummary/batchSave
+ * @param {SalesForecastSummaryBatchSaveRequest} data - 批量保存请求体
+ * @returns {Promise<SalesForecastSummaryBatchSaveResponse>} 响应,data 通常为 null,msg 提示文本
  */
 export const batchSaveSalesForecastSummary = async (data) => {
   return request({
@@ -301,23 +309,12 @@ export const batchSaveSalesForecastSummary = async (data) => {
 }
 
 /**
- * 下载“销售预测汇总”导入模板(Excel)
+ * 销售预测模板下载
  * 对应后端:GET /api/blade-factory/api/factory/salesForecastSummary/exportTemplate
- * 响应为二进制流(Blob),非 JSON;响应头包含 Content-Disposition、Content-Type 等
- * @param {number} [current=1] - 当前页码(与列表接口保持一致,后端可忽略)
- * @param {number} [size=10] - 每页数量(与列表接口保持一致,后端可忽略)
- * @param {import('./types').SalesForecastMainListQueryParams} [params={}] - 查询条件(year、month、customerName)
- * @returns {Promise<SalesForecastTemplateResponse>} Axios Blob 响应,data 为 Excel 二进制
- * @example
- * // 前端触发下载示例:
- * const res = await exportSalesForecastTemplate(1, 10, { year: 2025, month: 9, customerName: '库比森' })
- * const blob = new Blob([res.data], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' })
- * const url = window.URL.createObjectURL(blob)
- * const a = document.createElement('a')
- * a.href = url
- * a.download = '销售预测模板.xlsx'
- * a.click()
- * window.URL.revokeObjectURL(url)
+ * @param {number} [current=1] - 当前页码
+ * @param {number} [size=10] - 每页数量
+ * @param {SalesForecastSummaryPageQueryParams} [params={}] - 查询参数(用于与分页检索保持一致,便于后端构造模板)
+ * @returns {Promise<SalesForecastTemplateResponse>} 模板下载响应(Blob 数据 + 响应头)
  */
 export const exportSalesForecastTemplate = async (current = 1, size = 10, params = {}) => {
   return request({