feat(transportCapacity): 优化车辆与司机弹窗布局并新增字段支持

- 车辆新增弹窗:所有组织移至基础车辆信息区末尾,新增使用部门字段,使用部门复用部门下拉
- 车牌号三段合并为整体输入框,优化样式为flex布局,去除多余边框及阴影,统一视觉
- 长期有效勾选时清空对应日期且禁用输入,新增handleLongTermChange方法,表单校验支持长期有效跳过必填
- 司机弹窗基础身份信息新增placeholder,调整布局,基础身份三列保持不变,其他信息行按需求拆分重排为一致三列
- 后端新增use_department字段,相关mapper、service及校验同步更新,新增增量迁移脚本支持
- 车辆表单相关输入控件宽度统一调整为6列布局,保持与其它区块一致,提升整体UI协调性
- 移除车辆车牌号拆分相关字段及逻辑,车牌号统一管理为单个字段,简化处理流程
- 代码中新增校验规则validateDrivingLicenseEndDate及validateRoadTransportCertEndDate,支持长期有效逻辑
- 优化图片上传区和证件信息区表单字段排列,提升表单整体易用性与规范性
This commit is contained in:
2026-09-09 15:37:40 +08:00
parent 006dc95bf0
commit 1972115173
3 changed files with 279 additions and 186 deletions
+62 -22
View File
@@ -125,43 +125,50 @@
>
<section-card title="基础身份信息">
<el-row :gutter="18">
<el-col :span="8">
<el-col :span="6">
<el-form-item label="司机姓名" prop="driverName">
<el-input v-model="driverForm.driverName" maxlength="10" show-word-limit />
<el-input
v-model="driverForm.driverName"
maxlength="10"
show-word-limit
placeholder="请输入司机姓名"
/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-col :span="6">
<el-form-item label="身份证号" prop="idCardNo">
<el-input
v-model="driverForm.idCardNo"
maxlength="18"
show-word-limit
placeholder="请输入身份证号"
@input="driverForm.idCardNo = String(driverForm.idCardNo || '').toUpperCase()"
/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-col :span="6">
<el-form-item label="出生年月" prop="birthday">
<el-date-picker
v-model="driverForm.birthday"
type="date"
value-format="YYYY-MM-DD"
placeholder="请选择出生年月"
/>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="18">
<el-col :span="8">
<el-col :span="6">
<el-form-item label="性别" prop="gender">
<el-select v-model="driverForm.gender" clearable>
<el-select v-model="driverForm.gender" clearable placeholder="请选择性别">
<el-option label="男" value="男" />
<el-option label="女" value="女" />
</el-select>
</el-form-item>
</el-col>
<el-col :span="8">
<el-col :span="6">
<el-form-item label="民族" prop="nation">
<el-select v-model="driverForm.nation" clearable filterable>
<el-select v-model="driverForm.nation" clearable filterable placeholder="请选择民族">
<el-option
v-for="item in nationOptions"
:key="item"
@@ -171,9 +178,14 @@
</el-select>
</el-form-item>
</el-col>
<el-col :span="8">
<el-col :span="6">
<el-form-item label="学历" prop="education">
<el-select v-model="driverForm.education" clearable filterable>
<el-select
v-model="driverForm.education"
clearable
filterable
placeholder="请选择学历"
>
<el-option
v-for="item in educationOptions"
:key="item"
@@ -185,7 +197,7 @@
</el-col>
</el-row>
<el-row :gutter="18">
<el-col :span="8">
<el-col :span="6">
<el-form-item label="住址" prop="addressRegion">
<el-cascader
ref="addressRegionCascader"
@@ -199,14 +211,19 @@
/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-col :span="6">
<el-form-item label="详细地址" prop="address">
<el-input v-model="driverForm.address" maxlength="200" show-word-limit />
<el-input
v-model="driverForm.address"
maxlength="200"
show-word-limit
placeholder="请输入详细地址"
/>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="18">
<el-col :span="8">
<el-col :span="6">
<el-form-item label="驾驶车辆" prop="drivingVehicle">
<el-input
v-model="driverForm.drivingVehicle"
@@ -227,7 +244,7 @@
</el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-col :span="6">
<el-form-item label="岗位" prop="postList">
<el-checkbox-group v-model="driverForm.postList">
<el-checkbox label="司机" />
@@ -238,7 +255,7 @@
</el-col>
</el-row>
<el-row :gutter="18">
<el-col :span="8">
<el-col :span="6">
<image-upload-field
label="身份证正面照"
prop="idCardFront"
@@ -249,7 +266,7 @@
@success="url => handleIdCardUploadSuccess('idCardFront', url)"
/>
</el-col>
<el-col :span="8">
<el-col :span="6">
<image-upload-field
label="身份证反面照"
prop="idCardBack"
@@ -260,7 +277,7 @@
@success="url => handleIdCardUploadSuccess('idCardBack', url)"
/>
</el-col>
<el-col :span="8">
<el-col :span="6">
<image-upload-field
label="大头照"
prop="headPhoto"
@@ -284,6 +301,7 @@
filterable
allow-create
default-first-option
placeholder="请选择准驾车型"
>
<el-option
v-for="item in drivingTypeOptions"
@@ -296,7 +314,11 @@
</el-col>
<el-col :span="6">
<el-form-item label="档案编号" prop="drivingLicenseNo">
<el-input v-model="driverForm.drivingLicenseNo" maxlength="50" />
<el-input
v-model="driverForm.drivingLicenseNo"
maxlength="50"
placeholder="请输入档案编号"
/>
</el-form-item>
</el-col>
<el-col :span="6">
@@ -320,6 +342,8 @@
</div>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="18">
<el-col :span="6">
<el-form-item label="长期有效" prop="drivingLicenseLongTerm">
<el-checkbox
@@ -371,6 +395,7 @@
v-model="driverForm.qualificationType"
clearable
filterable
placeholder="请选择从业资格认证类型"
>
<el-option
v-for="item in qualificationTypeOptions"
@@ -396,11 +421,14 @@
v-model="driverForm.qualificationEndDate"
type="date"
value-format="YYYY-MM-DD"
placeholder="请选择有效期"
:disabled="driverForm.qualificationLongTerm === 1"
@change="validateFormField('qualificationEndDate')"
/>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="18">
<el-col :span="6">
<el-form-item label="长期有效" prop="qualificationLongTerm">
<el-checkbox
@@ -444,7 +472,7 @@
<el-row :gutter="18">
<el-col :span="6">
<el-form-item label="司机类型" prop="driverType">
<el-select v-model="driverForm.driverType" filterable>
<el-select v-model="driverForm.driverType" filterable placeholder="请选择司机类型">
<el-option label="自有" value="自有" />
<el-option label="外协" value="外协" />
<el-option label="承运管理员" value="承运管理员" />
@@ -453,7 +481,11 @@
</el-col>
<el-col :span="6">
<el-form-item label="手机号" prop="mobile">
<el-input v-model="driverForm.mobile" maxlength="20" />
<el-input
v-model="driverForm.mobile"
maxlength="20"
placeholder="请输入手机号"
/>
</el-form-item>
</el-col>
<el-col :span="6">
@@ -461,13 +493,20 @@
<el-input
v-model="driverForm.emergencyContactName"
maxlength="20"
placeholder="请输入紧急联系人姓名"
@input="driverForm.emergencyContactName = removeDigits($event)"
/>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="18">
<el-col :span="6">
<el-form-item label="紧急联系人手机号" prop="emergencyContactMobile">
<el-input v-model="driverForm.emergencyContactMobile" maxlength="20" />
<el-input
v-model="driverForm.emergencyContactMobile"
maxlength="20"
placeholder="请输入紧急联系人手机号"
/>
</el-form-item>
</el-col>
<el-col :span="6">
@@ -478,6 +517,7 @@
filterable
allow-create
default-first-option
placeholder="请选择与联系人关系"
>
<el-option
v-for="item in relationOptions"