rebate.ts 5.01 KB
import request from '@/utils/request'

// 返利台账明细类型定义
export interface Rebate {
  rebateId?: number
  rebateNo?: string
  orderNo: string
  dealerCode: string
  dealerName: string
  productCode: string
  rebateAmount: number
  rebateDate: string
  operateType: number
  operateTypeText?: string
  calcFlag?: number
  calcFlagText?: string
  uploadTime?: string
  createTime?: string
  updateTime?: string
  createBy?: string
  updateBy?: string
}

// 返利查询参数
export interface RebateSearchParams {
  pageNum: number
  pageSize: number
  rebateNo?: string
  orderNo?: string
  dealerCode?: string
  dealerName?: string
  productCode?: string
  operateType?: number
  calcFlag?: number
  auditStatus?: number
  dataSource?: string
  rebateStartDate?: string
  rebateEndDate?: string
}

// 返利新增参数
export interface RebateAddParams {
  rebateNo?: string
  orderNo: string
  dealerCode: string
  dealerName: string
  productCode: string
  rebateAmount: number
  rebateDate: string
  operateType: number
  calcFlag?: number
}

// 返利更新参数
export interface RebateUpdateParams extends RebateAddParams {
  rebateId: number
}

// 分页查询返利列表
export const getRebatePage = (params: RebateSearchParams) => {
  return request({
    url: '/api/rebate/page',
    method: 'post',
    data: params
  })
}

// 根据ID查询返利详情
export const getRebateById = (rebateId: number) => {
  return request({
    url: `/api/rebate/${rebateId}`,
    method: 'get'
  })
}

// 新增返利
export const addRebate = (data: RebateAddParams) => {
  return request({
    url: '/api/rebate/add',
    method: 'post',
    data
  })
}

// 更新返利
export const updateRebate = (data: RebateUpdateParams) => {
  return request({
    url: '/api/rebate/update',
    method: 'post',
    data
  })
}

// 删除返利
export const deleteRebate = (rebateId: number) => {
  return request({
    url: `/api/rebate/${rebateId}`,
    method: 'delete'
  })
}

// 批量删除返利
export const batchDeleteRebate = (rebateIds: number[]) => {
  return request({
    url: '/api/rebate/batchDelete',
    method: 'post',
    data: rebateIds
  })
}

// 标记返利为已计算
export const markRebateCalculated = (rebateId: number) => {
  return request({
    url: `/api/rebate/markCalculated/${rebateId}`,
    method: 'post'
  })
}

// 批量标记返利为已计算
export const batchMarkRebateCalculated = (rebateIds: number[]) => {
  return request({
    url: '/api/rebate/batchMarkCalculated',
    method: 'post',
    data: rebateIds
  })
}

// 根据经销商编码统计返利总金额
export const sumRebateAmountByDealer = (dealerCode: string, operateType?: number) => {
  return request({
    url: `/api/rebate/sumByDealer/${dealerCode}`,
    method: 'get',
    params: { operateType }
  })
}

// 根据产品编码统计返利总金额
export const sumRebateAmountByProduct = (productCode: string, operateType?: number) => {
  return request({
    url: `/api/rebate/sumByProduct/${productCode}`,
    method: 'get',
    params: { operateType }
  })
}

// 统计各操作类型的返利数量
export const countRebateByOperateType = () => {
  return request({
    url: '/api/rebate/countByOperateType',
    method: 'get'
  })
}

// 查询未计算的返利明细列表
export const getUnCalcRebates = () => {
  return request({
    url: '/api/rebate/unCalc',
    method: 'get'
  })
}

// 根据返利编号查询返利
export const getRebateByNo = (rebateNo: string) => {
  return request({
    url: `/api/rebate/byNo/${rebateNo}`,
    method: 'get'
  })
}

// 生成返利编号
export const generateRebateNo = () => {
  return request({
    url: '/api/rebate/generateNo',
    method: 'get'
  })
}

// 导出返利数据
export const exportRebate = (params: RebateSearchParams) => {
  return request({
    url: '/api/rebate/export',
    method: 'post',
    data: params,
    responseType: 'blob'
  })
}

// 获取返利月度统计数据
export const getRebateMonthlyStats = (year?: number) => {
  return request({
    url: '/api/rebate/monthlyStats',
    method: 'get',
    params: { year: year || new Date().getFullYear() }
  })
}

// 获取返利状态统计数据
export const getRebateStatusStats = () => {
  return request({
    url: '/api/rebate/statusStats',
    method: 'get'
  })
}

// 获取返利趋势统计数据
export const getRebateTrendStats = (startDate?: string, endDate?: string) => {
  return request({
    url: '/api/rebate/trendStats',
    method: 'get',
    params: { startDate, endDate }
  })
}

// 导出返利数据
export const exportRebates = (params: RebateSearchParams) => {
  return request.post('/api/rebate/export', params, { responseType: 'blob' })
}

export default {
  getRebatePage,
  getRebateById,
  addRebate,
  updateRebate,
  deleteRebate,
  batchDeleteRebate,
  markRebateCalculated,
  batchMarkRebateCalculated,
  sumRebateAmountByDealer,
  sumRebateAmountByProduct,
  countRebateByOperateType,
  getUnCalcRebates,
  getRebateByNo,
  generateRebateNo,
  exportRebate,
  getRebateMonthlyStats,
  getRebateStatusStats,
  getRebateTrendStats,
  exportRebates
}