import request from '@/config/axios'

// ERP 销售计划 VO
export interface SalePlanVO {
  id: number // 计划编号
  no: string // 计划编号
  name: string // 计划名称
  customerId: number // 关联客户
  customerName?: string // 客户名称
  targetAmount: number // 目标金额
  startTime: Date // 计划开始时间
  endTime: Date // 计划结束时间
  status: number // 状态：10-草稿 20-已提交 30-已批准 40-已驳回
  approverId?: number // 审批人
  approverName?: string // 审批人名称
  remark?: string // 备注
  items?: SalePlanItemVO[] // 计划明细列表
  completedAmount?: number // 已完成总额（后端计算）
  progress?: number // 进度百分比（后端计算）
  completionStatus?: number // 完成状态：0-未开始 1-进行中 2-已完成 3-已超期（后端计算）
}

// ERP 销售计划明细 VO
export interface SalePlanItemVO {
  id?: number // 明细编号
  planId?: number // 关联销售计划ID
  productId: number // 产品ID
  productName?: string // 产品名称
  productUnitName?: string // 产品单位名称
  planCount: number // 计划销量
  productPrice: number // 单价
  totalPrice: number // 金额
  remark?: string // 备注
}

// ERP 销售计划 API
export const SalePlanApi = {
  // 查询销售计划分页
  getSalePlanPage: async (params: any) => {
    return await request.get({ url: `/erp/sale-plan/page`, params })
  },

  // 查询销售计划详情
  getSalePlan: async (id: number) => {
    return await request.get({ url: `/erp/sale-plan/get?id=` + id })
  },

  // 新增销售计划
  createSalePlan: async (data: SalePlanVO) => {
    return await request.post({ url: `/erp/sale-plan/create`, data })
  },

  // 修改销售计划
  updateSalePlan: async (data: SalePlanVO) => {
    return await request.put({ url: `/erp/sale-plan/update`, data })
  },

  // 更新销售计划的状态
  updateSalePlanStatus: async (id: number, status: number) => {
    return await request.put({
      url: `/erp/sale-plan/update-status`,
      params: {
        id,
        status
      }
    })
  },

  // 删除销售计划
  deleteSalePlan: async (ids: number[]) => {
    return await request.delete({
      url: `/erp/sale-plan/delete`,
      params: {
        ids: ids.join(',')
      }
    })
  },

  // 导出销售计划 Excel
  exportSalePlan: async (params: any) => {
    return await request.download({ url: `/erp/sale-plan/export-excel`, params })
  },

  // 获取销售计划简单列表
  getSalePlanSimpleList: async () => {
    return await request.get({ url: `/erp/sale-plan/simple-list` })
  }
}
