Przeglądaj źródła

feat(forecast): 新增销售预测模板下载接口及类型定义

yz 1 miesiąc temu
rodzic
commit
dd2214fe2b
2 zmienionych plików z 33 dodań i 0 usunięć
  1. 25 0
      src/api/forecast/forecast-summary.js
  2. 8 0
      src/api/forecast/types.d.ts

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

@@ -17,6 +17,7 @@ import request from '@/router/axios'
  * @typedef {import('./types').SalesForecastSummaryPageResponse} SalesForecastSummaryPageResponse
  * @typedef {import('./types').SalesForecastMainListQueryParams} SalesForecastMainListQueryParams
  * @typedef {import('./types').SalesForecastMainListResponse} SalesForecastMainListResponse
+ * @typedef {import('./types').SalesForecastTemplateResponse} SalesForecastTemplateResponse
  */
 
 /**
@@ -298,3 +299,27 @@ export const batchSaveSalesForecastSummary = async (data) => {
     data
   })
 }
+
+/**
+ * 下载“销售预测汇总”导入模板(Excel)
+ * 对应后端:GET /api/blade-factory/api/factory/salesForecastSummary/exportTemplate
+ * 响应为二进制流(Blob),非 JSON;响应头包含 Content-Disposition、Content-Type 等
+ * @returns {Promise<SalesForecastTemplateResponse>} Axios Blob 响应,data 为 Excel 二进制
+ * @example
+ * // 前端触发下载示例:
+ * const res = await exportSalesForecastTemplate()
+ * 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)
+ */
+export const exportSalesForecastTemplate = async () => {
+  return request({
+    url: '/api/blade-factory/api/factory/salesForecastSummary/exportTemplate',
+    method: 'get',
+    responseType: 'blob'
+  })
+}

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

@@ -327,3 +327,11 @@ export interface SalesForecastMainAddRequest {
 
 // 新增:销售预测主表(main-add)- 响应类型(data 返回为 null,msg 为提示文本,success 表示成功与否)
 export type SalesForecastMainAddResponse = Promise<AxiosResponse<ApiResponse<null>>>
+// 新增:导出模板响应头类型(仅用于提示,字段名为服务端标准写法)
+export interface DownloadHeaders {
+  'content-disposition'?: string
+  'content-type'?: string
+  date?: string
+}
+// 新增:销售预测模板下载响应类型(Blob + 下载头)
+export type SalesForecastTemplateResponse = Promise<AxiosResponse<Blob> & { headers: DownloadHeaders }>