Browse Source

feat(forecast): 新增销售预测主表更新接口及类型定义

yz 1 month ago
parent
commit
751d6e866c
2 changed files with 54 additions and 1 deletions
  1. 30 1
      src/api/forecast/forecast-summary.js
  2. 24 0
      src/api/forecast/types.d.ts

+ 30 - 1
src/api/forecast/forecast-summary.js

@@ -19,6 +19,8 @@ import request from '@/router/axios'
  * @typedef {import('./types').SalesForecastMainListResponse} SalesForecastMainListResponse
  * @typedef {import('./types').SalesForecastTemplateResponse} SalesForecastTemplateResponse
  * @typedef {import('./types').SalesForecastMainDetailResponse} SalesForecastMainDetailResponse
+ * @typedef {import('./types').SalesForecastMainUpdateRequest} SalesForecastMainUpdateRequest
+ * @typedef {import('./types').SalesForecastMainUpdateResponse} SalesForecastMainUpdateResponse
  */
 
 /**
@@ -174,7 +176,34 @@ export const addSalesForecastMain = async (data) => {
     data
   })
 }
-
+/**
+ * 更新销售预测主表(main-update)
+ * 对应后端:PUT /api/blade-factory/api/factory/salesForecastSummary/main-update
+ * @param {SalesForecastMainUpdateRequest} data - 更新请求体(包含主表 id、年月、审批状态及明细列表)
+ * @returns {Promise<SalesForecastMainUpdateResponse>} 更新响应(data 通常为 null,msg 为提示文本)
+ * @example
+ * const payload = {
+ *   id: 1965692513192693762,
+ *   year: 2025,
+ *   month: 9,
+ *   approvalStatus: 1,
+ *   pcBladeSalesForecastSummaryList: [
+ *     { id: 1965692513603735554, brandId: 101, brandCode: 'BD-001', brandName: '品牌A1111111111', itemId: 2001, itemCode: 'IT-2001', itemName: '刀片型号A1', specs: '100x200mm', pattern: '标准花纹', forecastQuantity: 500.00, approvalStatus: 0 },
+ *     { id: 1965692513633095681, brandId: 101, brandCode: 'BD-001', brandName: '品牌A11111111111', itemId: 2002, itemCode: 'IT-2002', itemName: '刀片型号A2', specs: '150x250mm', pattern: '加强花纹', forecastQuantity: 300.00, approvalStatus: 0 },
+ *     { id: 1965692513641484290, brandId: 102, brandCode: 'BD-002', brandName: '品牌B11111111111', itemId: 3001, itemCode: 'IT-3001', itemName: '刀片型号B1', specs: '200x300mm', pattern: '特殊花纹', forecastQuantity: 200.00, approvalStatus: 0 }
+ *   ]
+ * }
+ * const res = await updateSalesForecastMain(payload)
+ * // 可能返回:{ code: 400, success: false, data: null, msg: '修改失败,请稍后重试' }
+ */
+export const updateSalesForecastMain = async (data) => {
+  return request({
+    url: '/api/blade-factory/api/factory/salesForecastSummary/main-update',
+    method: 'put',
+    data
+  })
+}
+ 
 /**
  * 获取预测汇总详情
  * @param {string|number} forecastSummaryId - 预测汇总ID

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

@@ -328,6 +328,30 @@ export interface SalesForecastMainAddRequest {
 
 // 新增:销售预测主表(main-add)- 响应类型(data 返回为 null,msg 为提示文本,success 表示成功与否)
 export type SalesForecastMainAddResponse = Promise<AxiosResponse<ApiResponse<null>>>
+
+// 新增:销售预测主表(main-update)- 子项请求体元素(在 add 的基础上增加 id)
+export interface SalesForecastMainUpdateItem extends SalesForecastMainAddItem {
+  /** 明细项ID */
+  id: number | string
+}
+
+// 新增:销售预测主表(main-update)- 请求体
+export interface SalesForecastMainUpdateRequest {
+  /** 主表ID */
+  id: number | string
+  /** 年份,例如 2025 */
+  year: number
+  /** 月份,1-12 */
+  month: number
+  /** 顶层审批状态 */
+  approvalStatus: ApprovalStatus | number
+  /** 子项明细列表(每项包含 id) */
+  pcBladeSalesForecastSummaryList: SalesForecastMainUpdateItem[]
+}
+
+// 新增:销售预测主表(main-update)- 响应类型(与 main-add 一致)
+export type SalesForecastMainUpdateResponse = Promise<AxiosResponse<ApiResponse<null>>>
+
 // 新增:销售预测主表详情(forecast/detail)响应类型(data 返回 SalesForecastMainRecord)
 export type SalesForecastMainDetailResponse = Promise<AxiosResponse<ApiResponse<SalesForecastMainRecord>>>
 // 新增:导出模板响应头类型(仅用于提示,字段名为服务端标准写法)