Browse Source

feat(forecast): 新增销售预测数据导入功能及类型定义

yz 1 tháng trước cách đây
mục cha
commit
310acb8765
2 tập tin đã thay đổi với 26 bổ sung0 xóa
  1. 23 0
      src/api/forecast/forecast-summary.js
  2. 3 0
      src/api/forecast/types.d.ts

+ 23 - 0
src/api/forecast/forecast-summary.js

@@ -22,6 +22,7 @@ import request from '@/router/axios'
  * @typedef {import('./types').SalesForecastMainUpdateRequest} SalesForecastMainUpdateRequest
  * @typedef {import('./types').SalesForecastMainUpdateResponse} SalesForecastMainUpdateResponse
  * @typedef {import('./types').SalesForecastByMonthResponse} SalesForecastByMonthResponse
+ * @typedef {import('./types').SalesForecastSummaryImportResponse} SalesForecastSummaryImportResponse
  */
 
 /**
@@ -412,6 +413,28 @@ export const exportSalesForecastSummaryByYearMonth = async (year, month) => {
 }
 
 /**
+ * 销售预测数据导入(按主表ID)
+ * 对应后端:POST /api/blade-factory/api/factory/salesForecastSummary/importForecastData/{id}
+ * @param {string|number} id - 主表ID
+ * @param {File|Blob} file - Excel 文件
+ * @returns {Promise<SalesForecastSummaryImportResponse>} 导入响应(data: 明细数组)
+ * @example
+ * const res = await importSalesForecastSummaryById('1988177030718513154', file)
+ */
+export const importSalesForecastSummaryById = async (id, file) => {
+  const formData = new FormData()
+  formData.append('file', file)
+  return request({
+    headers: {
+      'Content-Type': 'multipart/form-data'
+    },
+    url: `/api/blade-factory/api/factory/salesForecastSummary/importForecastData/${id}`,
+    method: 'post',
+    data: formData
+  })
+}
+
+/**
  * 销售预测数据导出(用户维度,按年月)
  * 对应后端:GET /api/blade-factory/api/factory/salesForecastSummary/user/export/{year}/{month}
  * @param {number|string} year - 年份,如 2025

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

@@ -365,3 +365,6 @@ export interface DownloadHeaders {
 }
 // 新增:销售预测模板下载响应类型(Blob + 下载头)
 export type SalesForecastTemplateResponse = Promise<AxiosResponse<Blob> & { headers: DownloadHeaders }>
+
+// 新增:销售预测导入响应类型(data 为明细数组)
+export type SalesForecastSummaryImportResponse = Promise<AxiosResponse<ApiResponse<SalesForecastMainListItemRecord[]>>>