| | |
| | | |
| | | const vehicleFormRef = ref<FormInst | null>(null) |
| | | const supplementFormRef = ref<FormInst | null>(null) |
| | | const gpsFormRef = ref<FormInst | null>(null) |
| | | const completeInfoFormRef = ref<FormInst | null>(null) |
| | | const otherInfoFormRef = ref<FormInst | null>(null) |
| | | |
| | |
| | | return Number.isNaN(timestamp) ? null : timestamp |
| | | } |
| | | |
| | | function toStringOrEmpty(value: unknown) { |
| | | if (value === null || value === undefined || value === '') |
| | | return '' |
| | | return String(value) |
| | | } |
| | | |
| | | function syncOperationAreaValue() { |
| | | if ( |
| | | currentOperationElectronicId.value === null |
| | |
| | | insuranceCompany: data.insuranceCompany || '', |
| | | insuranceNo: data.insuranceNo || '', |
| | | insuranceType: toNumberOrNull(data.insuranceType), |
| | | insuranceAmount: data.insuranceAmount || '', |
| | | insuranceAmount: toStringOrEmpty(data.insuranceAmount), |
| | | insuranceEffectiveTime: toTimestampOrNull(data.insuranceStartTime || data.insuranceEffectiveTime), |
| | | insuranceEndTime: toTimestampOrNull(data.insuranceEndTime), |
| | | onlineCarLicenseExpireDate: toTimestampOrNull(data.qualificationExpireTime || data.onlineCarLicenseExpireDate), |
| | |
| | | }) |
| | | |
| | | const onlyAllowNumberAndDash = (value: string) => !value || /^[\d-]+$/.test(value) |
| | | const onlyAllowAmountInput = (value: string) => !value || /^\d*(\.\d{0,2})?$/.test(value) |
| | | |
| | | // 表单验证规则 |
| | | const formRules: FormRules = { |
| | |
| | | { max: 50, message: '保单号长度不能超过50位', trigger: ['blur', 'input'] }, |
| | | ], |
| | | insuranceAmount: [ |
| | | { max: 20, message: '保险金额长度不能超过20位', trigger: ['blur', 'input'] }, |
| | | { |
| | | validator: (rule, value) => { |
| | | if (value === null || value === undefined || value === '') |
| | | return true |
| | | const amount = String(value).trim() |
| | | if (amount.length > 20) |
| | | return new Error('保险金额长度不能超过20位') |
| | | if (!/^\d+(\.\d{1,2})?$/.test(amount)) |
| | | return new Error('保险金额仅支持数字,最多保留2位小数') |
| | | return true |
| | | }, |
| | | trigger: ['blur', 'input'], |
| | | }, |
| | | ], |
| | | insuranceEndTime: [ |
| | | { |
| | |
| | | try { |
| | | await vehicleFormRef.value?.validate() |
| | | await supplementFormRef.value?.validate() |
| | | await gpsFormRef.value?.validate() |
| | | await completeInfoFormRef.value?.validate() |
| | | await otherInfoFormRef.value?.validate() |
| | | } |
| | |
| | | insuranceCompany: formModel.value.insuranceCompany, |
| | | insuranceNo: formModel.value.insuranceNo, |
| | | insuranceType: formModel.value.insuranceType, |
| | | insuranceAmount: Number(formModel.value.insuranceAmount), |
| | | insuranceAmount: formModel.value.insuranceAmount === '' ? null : Number(formModel.value.insuranceAmount), |
| | | insuranceStartTime: formModel.value.insuranceEffectiveTime ? dayjs(formModel.value.insuranceEffectiveTime).format('YYYY-MM-DD HH:mm:ss') : null, |
| | | insuranceEndTime: formModel.value.insuranceEndTime ? dayjs(formModel.value.insuranceEndTime).format('YYYY-MM-DD HH:mm:ss') : null, |
| | | qualificationExpireTime: formModel.value.onlineCarLicenseExpireDate ? dayjs(formModel.value.onlineCarLicenseExpireDate).format('YYYY-MM-DD HH:mm:ss') : null, |
| | |
| | | |
| | | |
| | | |
| | | <div class="sub-section-title"> |
| | | </n-form> |
| | | </n-card> |
| | | |
| | | <n-card :bordered="false" class="section-card"> |
| | | <div class="section-header"> |
| | | <div class="section-title"> |
| | | 卫星定位装置信息 |
| | | </div> |
| | | |
| | | </div> |
| | | <n-form |
| | | ref="gpsFormRef" |
| | | :model="formModel" |
| | | :rules="formRules" |
| | | label-placement="left" |
| | | label-align="left" |
| | | in-line |
| | | require-mark-placement="left" |
| | | > |
| | | <n-grid :cols="4" :x-gap="24" :y-gap="8"> |
| | | <n-gi> |
| | | <n-form-item label="品牌" path="gpsBrand"> |
| | |
| | | </n-gi> |
| | | </n-grid> |
| | | </n-form> |
| | | </n-card> |
| | | |
| | | <n-card :bordered="false" class="section-card"> |
| | | <!-- <div class="section-header"> |
| | | <div class="section-title"> |
| | | 补充信息 |
| | | </div> |
| | | </div> --> |
| | | |
| | | </n-card> |
| | | |
| | | <n-card :bordered="false" class="section-card"> |
| | |
| | | v-model:value="formModel.insuranceAmount" |
| | | placeholder="请输入" |
| | | clearable |
| | | :allow-input="onlyAllowNumberAndDash" |
| | | :allow-input="onlyAllowAmountInput" |
| | | /> |
| | | </n-form-item> |
| | | </n-gi> |