invoice.ts 2.22 KB
import { request } from '../utils/request'

// 发票相关类型定义
export interface InvoiceInfo {
  invoiceId: number
  orderId: number
  orderNo: string
  dealerCode: string
  dealerName: string
  invoiceDate: string
  totalAmount: number
  invoiceStatus: number
  invoiceNo?: string
  createBy?: string
  createTime?: string
  updateBy?: string
  updateTime?: string
  invoiceItems?: InvoiceItemInfo[]
}

export interface InvoiceItemInfo {
  itemId?: number
  invoiceId?: number
  productCode: string
  productName: string
  productQty: number
  unitPrice: number
  totalPrice: number
  createBy?: string
  createTime?: string
}

export interface InvoiceQueryReq {
  pageNum?: number
  pageSize?: number
  orderNo?: string
  dealerCode?: string
  dealerName?: string
  invoiceStartDate?: string
  invoiceEndDate?: string
  invoiceStatus?: number
}

export interface InvoiceAddReq {
  orderId: number
  invoiceDate: string
  invoiceNo?: string
  invoiceItems: Omit<InvoiceItemInfo, 'itemId' | 'invoiceId' | 'createBy' | 'createTime'>[]
}

export interface InvoiceUpdateReq {
  invoiceId: number
  invoiceDate?: string
  invoiceStatus?: number
  invoiceNo?: string
  invoiceItems?: Omit<InvoiceItemInfo, 'itemId' | 'invoiceId' | 'createBy' | 'createTime'>[]
}

// 发票API接口
export const invoiceApi = {
  // 分页查询发票列表
  getInvoiceList: (params: InvoiceQueryReq) => {
    return request.get('/api/invoice/list', { params })
  },

  // 获取发票详情
  getInvoiceDetail: (invoiceId: number) => {
    return request.get(`/api/invoice/${invoiceId}`)
  },

  // 新增发票
  addInvoice: (data: InvoiceAddReq) => {
    return request.post('/api/invoice/add', data)
  },

  // 更新发票
  updateInvoice: (data: InvoiceUpdateReq) => {
    return request.post('/api/invoice/update', data)
  },

  // 删除发票
  deleteInvoice: (invoiceId: number) => {
    return request.delete(`/api/invoice/${invoiceId}`)
  },

  // 批量删除发票
  batchDeleteInvoice: (invoiceIds: number[]) => {
    return request.post('/api/invoice/batchDelete', invoiceIds)
  },

  // 导出发票数据
  exportInvoice: (params: InvoiceQueryReq) => {
    return request.get('/api/invoice/export', { params, responseType: 'blob' })
  }
}

export default invoiceApi