|
@@ -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({
|