import request from '@/config/axios'
import type { Dayjs } from 'dayjs';

/** 请购单明细信息 */
export interface PurchaseRequisitionItem {
  id?: number;
  requisitionId?: number; // 请购单编号
  productId?: number; // 产品编号
  productName?: string; // 产品名称
  productUnitId?: number; // 产品单位编号
  productUnitName?: string; // 产品单位名称
  productSpec?: string; // 产品规格
  productBarCode?: string; // 产品条码
  productPrice?: number; // 产品参考单价
  count?: number; // 需求数量
  totalPrice?: number; // 总金额，单位：元
  purpose?: string; // 用途说明
  brandId?: number; // 品牌编号
  brandName?: string; // 品牌名称
  supplierId?: number; // 建议供应商编号
  supplierName?: string; // 建议供应商名称
  approveCount?: number; // 审核通过数量
  purchaseCount?: number; // 已采购数量
  remark?: string; // 备注
  createTime?: string; // 创建时间
}

/** 请购单信息 */
export interface PurchaseRequisition {
  id: number; // 编号
  no?: string; // 请购单编号
  type?: number; // 请购类型（1-请购 2-补货 3-其他）
  priority?: number; // 优先级（1-低 2-中 3-高 4-紧急）
  status?: number; // 状态（1-待审核 2-已审核 3-已驳回 4-已取消 5-已采购）
  requesterId?: number; // 请购人编号
  requesterName?: string; // 请购人名称
  requesterDeptId?: number; // 请购部门编号
  requesterDeptName?: string; // 请购部门名称
  requestTime?: string | Dayjs; // 请购时间
  expectedTime: string | Dayjs; // 期望到货时间
  approverId?: number; // 审核人编号
  approverName?: string; // 审核人名称
  approveTime?: string | Dayjs; // 审核时间
  approveRemark?: string; // 审核意见
  totalCount?: number; // 合计数量
  totalPrice?: number; // 合计金额，单位：元
  emergencyDegree?: number; // 紧急程度（1-普通 2-较急 3-紧急 4-特急）
  fileUrl?: string; // 附件地址
  remark?: string; // 备注
  supplierId?: number; // 供应商编号
  supplierName?: string; // 供应商名称
  items?: PurchaseRequisitionItem[]; // 明细项
}

// 请购单 API
export const PurchaseRequisitionApi = {
  // 查询请购单分页
  getPurchaseRequisitionPage: async (params: any) => {
    return await request.get({ url: `/erp/purchase-requisition/page`, params })
  },

  // 查询请购单详情
  getPurchaseRequisition: async (id: number) => {
    return await request.get({ url: `/erp/purchase-requisition/get?id=` + id })
  },

  // 新增请购单
  createPurchaseRequisition: async (data: PurchaseRequisition) => {
    return await request.post({ url: `/erp/purchase-requisition/create`, data })
  },

  // 修改请购单
  updatePurchaseRequisition: async (data: PurchaseRequisition) => {
    return await request.put({ url: `/erp/purchase-requisition/update`, data })
  },

  // 删除请购单
  deletePurchaseRequisition: async (id: number) => {
    return await request.delete({ url: `/erp/purchase-requisition/delete?id=` + id })
  },

  /** 批量删除请购单 */
  deletePurchaseRequisitionList: async (ids: number[]) => {
    return await request.delete({ url: `/erp/purchase-requisition/delete-list?ids=${ids.join(',')}` })
  },

  // 导出请购单 Excel
  exportPurchaseRequisition: async (params) => {
    return await request.download({ url: `/erp/purchase-requisition/export-excel`, params })
  },

  // 更新请购单状态
  updatePurchaseRequisitionStatus: async (id: number, status: number) => {
    return await request.put({ url: `/erp/purchase-requisition/update-status?id=${id}&status=${status}` })
  },
}
