2026-01-05 20:47:14 +08:00
|
|
|
|
import request from '@/config/axios'
|
|
|
|
|
|
|
2026-04-28 17:14:57 +08:00
|
|
|
|
// 车辆订单 VO
|
2026-01-05 20:47:14 +08:00
|
|
|
|
export interface RenewalOrderVO {
|
|
|
|
|
|
id: number // 主键ID
|
|
|
|
|
|
carBrand: string // 汽车品牌
|
|
|
|
|
|
carModel: string // 车型
|
|
|
|
|
|
licensePlate: string // 车牌号
|
|
|
|
|
|
factoryModel: string // 厂牌型号
|
|
|
|
|
|
invoiceAmount: number // 发票金额
|
|
|
|
|
|
purchaseMileage: number // 购买时公里数
|
|
|
|
|
|
engineNo: string // 发动机号
|
|
|
|
|
|
vin: string // 车架号
|
|
|
|
|
|
invoiceDate: Date // 发票日期
|
|
|
|
|
|
invoiceUrl: string // 发票图片地址
|
|
|
|
|
|
serviceBuyer: string // 服务购买方
|
|
|
|
|
|
carBuyer: string // 车辆购买方
|
|
|
|
|
|
certType: string // 证件类型
|
|
|
|
|
|
mobile: string // 联系电话
|
|
|
|
|
|
certNo: string // 证件号码
|
|
|
|
|
|
contactAddress: string // 联系地址
|
|
|
|
|
|
memberEmail: string // 会员邮箱
|
|
|
|
|
|
storeId: number // 门店ID(关联 tire_store.id)
|
|
|
|
|
|
storeName?: string // 门店名称
|
|
|
|
|
|
productId: number // 续保产品ID(关联 car_renewal_product.id)
|
|
|
|
|
|
serviceProduct: string // 服务产品
|
2026-03-02 08:25:24 +08:00
|
|
|
|
productType: string // 产品类别(来自续保产品)
|
2026-01-05 20:47:14 +08:00
|
|
|
|
productValidity: string // 产品时效
|
|
|
|
|
|
originalWarrantyYears: string // 原厂质保时长
|
|
|
|
|
|
originalWarrantyMileage: string // 原厂质保里程
|
|
|
|
|
|
productFee: number // 产品费用
|
|
|
|
|
|
settlementMethod: string // 结算方式
|
|
|
|
|
|
remark: string // 备注
|
|
|
|
|
|
inputUser: string // 录单人
|
|
|
|
|
|
contractRemark: string // 合同备注
|
2026-03-02 08:25:24 +08:00
|
|
|
|
customerSignatureUrl?: string // 客户签名
|
|
|
|
|
|
idCardFrontUrl?: string // 身份证正面
|
|
|
|
|
|
idCardBackUrl?: string // 身份证反面
|
|
|
|
|
|
drivingLicenseUrl?: string // 行驶证
|
|
|
|
|
|
carInvoiceUrls?: string[] // 购车发票(多张,JSON字符串)
|
|
|
|
|
|
purchaseTaxInvoiceUrls?: string[] // 购置税发票(多张,JSON字符串)
|
|
|
|
|
|
businessInsurancePolicyUrls?: string[] // 商业险保单(多张,JSON字符串)
|
|
|
|
|
|
certificateOfConformityUrl?: string // 合格证
|
|
|
|
|
|
odometerPhotoUrl?: string // 里程表照片
|
|
|
|
|
|
nameplatePhotoUrl?: string // 车名牌照片
|
2026-01-05 20:47:14 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
2026-04-28 17:14:57 +08:00
|
|
|
|
// 车辆订单 API
|
2026-01-05 20:47:14 +08:00
|
|
|
|
export const RenewalOrderApi = {
|
2026-04-28 17:14:57 +08:00
|
|
|
|
// 查询车辆订单分页
|
2026-01-05 20:47:14 +08:00
|
|
|
|
getRenewalOrderPage: async (params: any) => {
|
|
|
|
|
|
return await request.get({ url: `/car/renewal-order/page`, params })
|
|
|
|
|
|
},
|
|
|
|
|
|
|
2026-04-28 17:14:57 +08:00
|
|
|
|
// 查询车辆订单详情
|
2026-01-05 20:47:14 +08:00
|
|
|
|
getRenewalOrder: async (id: number) => {
|
|
|
|
|
|
return await request.get({ url: `/car/renewal-order/get?id=` + id })
|
|
|
|
|
|
},
|
|
|
|
|
|
|
2026-04-28 17:14:57 +08:00
|
|
|
|
// 新增车辆订单
|
2026-01-05 20:47:14 +08:00
|
|
|
|
createRenewalOrder: async (data: RenewalOrderVO) => {
|
|
|
|
|
|
return await request.post({ url: `/car/renewal-order/create`, data })
|
|
|
|
|
|
},
|
|
|
|
|
|
|
2026-04-28 17:14:57 +08:00
|
|
|
|
// 修改车辆订单
|
2026-01-05 20:47:14 +08:00
|
|
|
|
updateRenewalOrder: async (data: RenewalOrderVO) => {
|
|
|
|
|
|
return await request.put({ url: `/car/renewal-order/update`, data })
|
|
|
|
|
|
},
|
|
|
|
|
|
|
2026-04-28 17:14:57 +08:00
|
|
|
|
// 删除车辆订单
|
2026-01-05 20:47:14 +08:00
|
|
|
|
deleteRenewalOrder: async (id: number) => {
|
|
|
|
|
|
return await request.delete({ url: `/car/renewal-order/delete?id=` + id })
|
|
|
|
|
|
},
|
|
|
|
|
|
|
2026-04-28 17:14:57 +08:00
|
|
|
|
// 导出车辆订单 Excel
|
2026-01-05 20:47:14 +08:00
|
|
|
|
exportRenewalOrder: async (params) => {
|
|
|
|
|
|
return await request.download({ url: `/car/renewal-order/export-excel`, params })
|
|
|
|
|
|
}
|
2026-03-02 08:25:24 +08:00
|
|
|
|
,
|
|
|
|
|
|
// 生成在线合同 PDF 并上传(回写 contractUrl)
|
|
|
|
|
|
generateContract: async (id: number) => {
|
|
|
|
|
|
return await request.post({ url: `/car/renewal-order/generate-contract`, params: { id } })
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
|
|
// 生成合同 HTML(用于预览)
|
|
|
|
|
|
generateContractHtml: async (id: number) => {
|
|
|
|
|
|
return await request.get({ url: `/car/renewal-order/generate-contract-html?id=` + id })
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
|
|
// 创建线上签名令牌
|
|
|
|
|
|
createSignToken: async (id: number) => {
|
|
|
|
|
|
return await request.post({ url: `/car/renewal-order/create-sign-token`, params: { id } })
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
|
|
// 清空订单合同与客户签名(重新生成合同时先清空再扫码签名)
|
|
|
|
|
|
clearContractAndSignature: async (id: number) => {
|
|
|
|
|
|
return await request.post({ url: `/car/renewal-order/clear-contract-sign`, params: { id } })
|
2026-03-26 08:56:03 +08:00
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
|
|
// 身份证识别(用于图片识别新增)
|
|
|
|
|
|
recognizeIdcard: async (file: File, idCardSide: 'front' | 'back' = 'front') => {
|
|
|
|
|
|
const formData = new FormData()
|
|
|
|
|
|
formData.append('file', file)
|
|
|
|
|
|
formData.append('idCardSide', idCardSide)
|
|
|
|
|
|
return await request.upload({
|
|
|
|
|
|
url: '/car/renewal-order/recognize-idcard',
|
|
|
|
|
|
data: formData
|
|
|
|
|
|
})
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
|
|
// 机动车销售发票识别(用于图片识别新增)
|
|
|
|
|
|
recognizeVehicleInvoice: async (file: File) => {
|
|
|
|
|
|
const formData = new FormData()
|
|
|
|
|
|
formData.append('file', file)
|
|
|
|
|
|
return await request.upload({
|
|
|
|
|
|
url: '/car/renewal-order/recognize-vehicle-invoice',
|
|
|
|
|
|
data: formData
|
|
|
|
|
|
})
|
2026-03-02 08:25:24 +08:00
|
|
|
|
}
|
|
|
|
|
|
}
|