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

export interface InvoiceInfo {
  invoiceId: number
  invoiceNo: string
  orderNo: string
  deliveryNo: string
  dealerCode: string
  dealerName: string
  totalAmount: number
  invoiceDate: string
  invoiceStatus: number
  taxRate: number
  dataSource: string
  uploadTime?: string
  createBy?: string
  createTime?: string
  updateBy?: string
  updateTime?: string
  invoiceItems?: InvoiceItemInfo[]
}

export interface InvoiceItemInfo {
  itemId: number
  invoiceId: number
  invoiceNo: string
  productCode: string
  productName: string
  productQty: number
  unitPrice: number
  itemAmount: number
  taxRate: number
  taxAmount: number
  createBy?: string
  createTime?: string
  updateBy?: string
  updateTime?: string
}

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

export interface InvoiceAddReq {
  invoiceNo: string
  orderNo: string
  deliveryNo: string
  dealerCode: string
  dealerName: string
  totalAmount: number
  invoiceDate: string
  invoiceStatus?: number
  taxRate: number
  dataSource?: string
  invoiceItems: InvoiceItemAddReq[]
}

export interface InvoiceUpdateReq {
  invoiceId: number
  invoiceNo: string
  orderNo: string
  deliveryNo: string
  dealerCode: string
  dealerName: string
  totalAmount: number
  invoiceDate: string
  invoiceStatus?: number
  taxRate: number
  dataSource?: string
  invoiceItems: InvoiceItemUpdateReq[]
}

export interface InvoiceItemAddReq {
  productCode: string
  productName: string
  productQty: number
  unitPrice: number
  itemAmount: number
  taxRate: number
  taxAmount: number
}

export interface InvoiceItemUpdateReq {
  itemId?: number
  productCode: string
  productName: string
  productQty: number
  unitPrice: number
  itemAmount: number
  taxRate: number
  taxAmount: number
}

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', data)
  },
  updateInvoice: (data: InvoiceUpdateReq) => {
    return request.post('/api/invoice/update', data)
  },
  deleteInvoice: (invoiceId: number) => {
    return request.delete(`/api/invoice/${invoiceId}`)
  },
  batchDeleteInvoices: (invoiceIds: number[]) => {
    return request.post('/api/invoice/batchDelete', invoiceIds)
  },
  updateInvoiceStatus: (invoiceId: number, invoiceStatus: number) => {
    return request.post(`/api/invoice/${invoiceId}/invoiceStatus`, { invoiceStatus })
  }
}