fix:先提交一版本的续保

This commit is contained in:
2026-04-28 17:14:57 +08:00
parent 5e3ab5b901
commit 8057a265ce
22 changed files with 1157 additions and 33 deletions

View File

@@ -262,12 +262,12 @@
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-col v-if="showOriginalWarrantyYears" :span="12">
<el-form-item label="产品年限" prop="originalWarrantyYears">
<el-input v-model="formData.originalWarrantyYears" placeholder="请输入产品年限3" />
<el-input v-model="formData.originalWarrantyYears" placeholder="选择续保产品后自动带出产品生效年限,可修改" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-col :span="showOriginalWarrantyYears ? 12 : 24">
<el-form-item label="原厂质保里程" prop="originalWarrantyMileage">
<el-input v-model="formData.originalWarrantyMileage" placeholder="请输入原厂质保里程" />
</el-form-item>
@@ -429,7 +429,7 @@ import { Qrcode } from '@/components/Qrcode'
import * as FileApi from '@/api/infra/file'
import { ElMessageBox } from 'element-plus'
/** 车辆续保订单 表单 */
/** 车辆订单管理 表单 */
defineOptions({ name: 'RenewalOrderForm' })
const { t } = useI18n() // 国际化
@@ -467,6 +467,8 @@ const productTypeLabel = computed(() => {
const showContractComponents = computed(() => {
return formData.value.productType === '00' || formData.value.productType === '02'
})
// 产品年限:仅当产品类别为 00、02与合同一致的规定品类时展示并校验
const showOriginalWarrantyYears = computed(() => showContractComponents.value)
const formData = ref({
id: undefined,
carBrand: undefined,
@@ -491,7 +493,7 @@ const formData = ref({
serviceProduct: undefined,
productType: undefined,
productValidity: undefined,
originalWarrantyYears: '3',
originalWarrantyYears: undefined,
originalWarrantyMileage: undefined,
productFee: undefined,
settlementMethod: '00',
@@ -529,7 +531,20 @@ const formRules = reactive({
productFee: [{ required: true, message: '产品费用不能为空', trigger: 'blur' }],
settlementMethod: [{ required: true, message: '结算方式不能为空', trigger: 'change' }],
inputUser: [{ required: true, message: '录单人不能为空', trigger: 'blur' }],
originalWarrantyYears: [{ required: true, message: '产品年限不能为空', trigger: 'blur' }],
originalWarrantyYears: [
{
validator: (_rule: any, value: any, callback: (e?: Error) => void) => {
const pt = formData.value.productType
const need = pt === '00' || pt === '02'
if (need && (value == null || String(value).trim() === '')) {
callback(new Error('产品年限不能为空'))
} else {
callback()
}
},
trigger: 'blur'
}
],
drivingLicenseUrl: [{ required: true, message: '请上传行驶证', trigger: 'change' }],
carInvoiceUrls: [{
required: true,
@@ -580,6 +595,7 @@ const handleProductChange = async (productId: number) => {
formData.value.serviceProduct = undefined
formData.value.productType = undefined
formData.value.productValidity = undefined
formData.value.originalWarrantyYears = undefined
return
}
try {
@@ -592,6 +608,16 @@ const handleProductChange = async (productId: number) => {
const p: any = product as any
formData.value.productType = p.productType || (p.data && p.data.productType) || ''
formData.value.productValidity = product.productContent || ''
const pt = formData.value.productType
const needWarrantyYears = pt === '00' || pt === '02'
if (needWarrantyYears) {
const eff = p.effectiveYear ?? p.data?.effectiveYear
if (eff != null && eff !== '') {
formData.value.originalWarrantyYears = String(eff)
}
} else {
formData.value.originalWarrantyYears = undefined
}
} catch (error) {
console.error('获取产品详情失败:', error)
message.error('获取产品详情失败')
@@ -781,19 +807,22 @@ const submitForm = async () => {
await formRef.value.validate()
formLoading.value = true
try {
const data = formData.value as unknown as RenewalOrderVO
const payload = { ...formData.value } as unknown as RenewalOrderVO
if (payload.productType !== '00' && payload.productType !== '02') {
payload.originalWarrantyYears = undefined as any
}
if (formType.value === 'create') {
const res = await RenewalOrderApi.createRenewalOrder(data) as any
const res = await RenewalOrderApi.createRenewalOrder(payload) as any
const newId = res?.data ?? res
if (newId) formData.value.id = newId
if ((data.productType === '00' || data.productType === '02') && newId) {
if ((payload.productType === '00' || payload.productType === '02') && newId) {
message.success('订单已创建,请让客户扫码完成签名后自动生成合同')
await openOnlineSignForOrder(newId)
return
}
message.success(t('common.createSuccess'))
} else {
await RenewalOrderApi.updateRenewalOrder(data)
await RenewalOrderApi.updateRenewalOrder(payload)
message.success(t('common.updateSuccess'))
}
dialogVisible.value = false
@@ -882,7 +911,7 @@ const resetForm = () => {
serviceProduct: undefined,
productType: undefined,
productValidity: undefined,
originalWarrantyYears: '3',
originalWarrantyYears: undefined,
originalWarrantyMileage: undefined,
productFee: undefined,
settlementMethod: '00',