feat(driver): 优化驾驶证信息必填规则和表单placeholder统一

- 驾驶证有效期必填加红星,长期有效去除必填红星,保持校验逻辑不变
- 统一司机弹窗所有输入框和选择框的placeholder为“请输入”或“请选择”,去除字段名
- 保留复合操作、日期范围起止及默认值说明的特例placeholder不变
- 新增3处自动生成结算单开关后悬浮问号图标和提示,增强用户理解
- customer-archive中新增customerKindOptions和映射,用于客户类别选择
- 提升archive-form label与控件垂直居中样式至全局,修正多页标签顶置问题
This commit is contained in:
2026-09-09 17:35:19 +08:00
parent 14c6ad0a31
commit 716ce43862
7 changed files with 110 additions and 23 deletions
@@ -1883,6 +1883,12 @@
<span>自动生成结算单</span>
<el-radio-group v-model="settlementRuleForm.autoGenerate" :disabled="dialogReadonly">
<el-radio :label="1">开启</el-radio>
<el-tooltip
content="开启时,系统根据配置规则归集运单,定时生成结算单"
placement="top"
>
<el-icon class="settlement-switch-tip"><QuestionFilled /></el-icon>
</el-tooltip>
<el-radio :label="0">关闭</el-radio>
</el-radio-group>
</div>
@@ -14453,6 +14459,13 @@ export default {
color: #303133;
}
.settlement-switch-tip {
margin: 0 4px;
color: #a8abb2;
cursor: help;
font-size: 14px;
}
&__module-form {
width: 100%;
+11 -1
View File
@@ -52,7 +52,16 @@
<el-tab-pane label="预结算配置" name="pre" />
<el-tab-pane label="正式结算配置" name="formal" />
</el-tabs>
<div class="settlement-switch"><span>自动生成结算单</span><el-radio-group v-model="settlementRule.autoGenerate"><el-radio :label="1">开启</el-radio><el-radio :label="0">关闭</el-radio></el-radio-group></div>
<div class="settlement-switch">
<span>自动生成结算单</span>
<el-radio-group v-model="settlementRule.autoGenerate">
<el-radio :label="1">开启</el-radio>
<el-tooltip content="开启时,系统根据配置规则归集运单,定时生成结算单" placement="top">
<el-icon class="settlement-switch-tip"><QuestionFilled /></el-icon>
</el-tooltip>
<el-radio :label="0">关闭</el-radio>
</el-radio-group>
</div>
<el-form v-if="settlementRule.autoGenerate === 1" :model="settlementRule" label-position="right" label-width="auto" class="settlement-form">
<el-form-item label="账单起始日期" required><el-date-picker v-model="settlementRule.billStartDate" type="date" placeholder="请选择账单起始日期" format="YYYY-MM-DD" value-format="YYYY-MM-DD" /></el-form-item>
<el-form-item label="结算类型" required><el-select v-model="settlementRule.settlementType" placeholder="请选择结算类型" @change="handleSettlementTypeChange"><el-option v-for="item in settlementTypeOptions" :key="item" :label="item" :value="item" /></el-select></el-form-item>
@@ -211,6 +220,7 @@ export default {
.attachment-upload .vehicle-attachment-upload { width: auto; }
.attachment-upload .el-upload { display: inline-flex; }
.settlement-switch { display: flex; align-items: center; gap: 12px; margin-bottom: 16px; }
.settlement-switch-tip { margin: 0 4px; color: #a8abb2; cursor: help; font-size: 14px; }
.settlement-form { display: grid; grid-template-columns: repeat(3, minmax(240px, 1fr)); gap: 8px 28px; }
.change-reason-section { margin: 20px 0; }
.page-footer {
+13
View File
@@ -356,6 +356,12 @@
<span>自动生成结算单</span>
<el-radio-group v-model="settlementRuleForm.autoGenerate">
<el-radio :label="1">开启</el-radio>
<el-tooltip
content="开启时系统根据配置规则归集运单定时生成结算单"
placement="top"
>
<el-icon class="settlement-switch-tip"><QuestionFilled /></el-icon>
</el-tooltip>
<el-radio :label="0">关闭</el-radio>
</el-radio-group>
</div>
@@ -2758,6 +2764,13 @@ export default {
align-items: center;
gap: 20px;
margin-bottom: 16px;
.settlement-switch-tip {
margin: 0 4px;
color: #a8abb2;
cursor: help;
font-size: 14px;
}
}
&__settlement-grid {
+19 -22
View File
@@ -131,7 +131,7 @@
v-model="driverForm.driverName"
maxlength="10"
show-word-limit
placeholder="请输入司机姓名"
placeholder="请输入"
/>
</el-form-item>
</el-col>
@@ -141,7 +141,7 @@
v-model="driverForm.idCardNo"
maxlength="18"
show-word-limit
placeholder="请输入身份证号"
placeholder="请输入"
@input="driverForm.idCardNo = String(driverForm.idCardNo || '').toUpperCase()"
/>
</el-form-item>
@@ -152,13 +152,13 @@
v-model="driverForm.birthday"
type="date"
value-format="YYYY-MM-DD"
placeholder="请选择出生年月"
placeholder="请选择"
/>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="性别" prop="gender">
<el-select v-model="driverForm.gender" clearable placeholder="请选择性别">
<el-select v-model="driverForm.gender" clearable placeholder="请选择">
<el-option label="男" value="男" />
<el-option label="女" value="女" />
</el-select>
@@ -166,7 +166,7 @@
</el-col>
<el-col :span="6">
<el-form-item label="民族" prop="nation">
<el-select v-model="driverForm.nation" clearable filterable placeholder="请选择民族">
<el-select v-model="driverForm.nation" clearable filterable placeholder="请选择">
<el-option
v-for="item in nationOptions"
:key="item"
@@ -182,7 +182,7 @@
v-model="driverForm.education"
clearable
filterable
placeholder="请选择学历"
placeholder="请选择"
>
<el-option
v-for="item in educationOptions"
@@ -200,7 +200,7 @@
v-model="driverForm.addressRegionPath"
:options="regionOptions"
:props="regionCascaderProps"
:placeholder="driverForm.addressRegion || '请选择省市区'"
:placeholder="driverForm.addressRegion || '请选择'"
clearable
filterable
@change="handleAddressRegionChange"
@@ -213,7 +213,7 @@
v-model="driverForm.address"
maxlength="200"
show-word-limit
placeholder="请输入详细地址"
placeholder="请输入"
/>
</el-form-item>
</el-col>
@@ -297,7 +297,7 @@
filterable
allow-create
default-first-option
placeholder="请选择准驾车型"
placeholder="请选择"
>
<el-option
v-for="item in drivingTypeOptions"
@@ -313,7 +313,7 @@
<el-input
v-model="driverForm.drivingLicenseNo"
maxlength="50"
placeholder="请输入档案编号"
placeholder="请输入"
/>
</el-form-item>
</el-col>
@@ -389,7 +389,7 @@
v-model="driverForm.qualificationType"
clearable
filterable
placeholder="请选择从业资格认证类型"
placeholder="请选择"
>
<el-option
v-for="item in qualificationTypeOptions"
@@ -415,7 +415,7 @@
v-model="driverForm.qualificationEndDate"
type="date"
value-format="YYYY-MM-DD"
placeholder="请选择有效期"
placeholder="请选择"
:disabled="driverForm.qualificationLongTerm === 1"
@change="validateFormField('qualificationEndDate')"
/>
@@ -464,7 +464,7 @@
<el-row :gutter="18">
<el-col :span="6">
<el-form-item label="司机类型" prop="driverType">
<el-select v-model="driverForm.driverType" filterable placeholder="请选择司机类型">
<el-select v-model="driverForm.driverType" filterable placeholder="请选择">
<el-option label="自有" value="自有" />
<el-option label="外协" value="外协" />
<el-option label="承运管理员" value="承运管理员" />
@@ -476,7 +476,7 @@
<el-input
v-model="driverForm.mobile"
maxlength="20"
placeholder="请输入手机号"
placeholder="请输入"
/>
</el-form-item>
</el-col>
@@ -485,7 +485,7 @@
<el-input
v-model="driverForm.emergencyContactName"
maxlength="20"
placeholder="请输入紧急联系人姓名"
placeholder="请输入"
@input="driverForm.emergencyContactName = removeDigits($event)"
/>
</el-form-item>
@@ -495,7 +495,7 @@
<el-input
v-model="driverForm.emergencyContactMobile"
maxlength="20"
placeholder="请输入紧急联系人手机号"
placeholder="请输入"
/>
</el-form-item>
</el-col>
@@ -507,7 +507,7 @@
filterable
allow-create
default-first-option
placeholder="请选择与联系人关系"
placeholder="请选择"
>
<el-option
v-for="item in relationOptions"
@@ -526,7 +526,7 @@
:props="organizationCascaderProps"
filterable
clearable
placeholder="请选择 所属组织"
placeholder="请选择"
/>
</el-form-item>
</el-col>
@@ -813,10 +813,7 @@ export default {
drivingType: [{ required: true, message: '请选择准驾车型', trigger: 'change' }],
drivingLicenseNo: [{ required: true, message: '请输入档案编号', trigger: 'blur' }],
drivingLicenseEndDate: [
{ validator: this.validateDrivingLicenseEndDate, trigger: 'change' },
],
drivingLicenseLongTerm: [
{ required: true, message: '请选择驾驶证是否长期有效', trigger: 'change' },
{ required: true, validator: this.validateDrivingLicenseEndDate, trigger: 'change' },
],
qualificationType: [
{ required: true, message: '请选择从业资格认证类型', trigger: 'change' },
+8
View File
@@ -1645,6 +1645,14 @@ export default {
regionOptions: [],
customerNatureOptions: [],
customerTypeOptions: [],
customerKindOptions: [
{ label: '外部客商', value: 'external' },
{ label: '内部组织', value: 'internal' },
],
customerKindMap: {
external: '外部客商',
internal: '内部组织',
},
businessScopeOptions: [],
qualificationTypeOptions: [],
creditLevelOptions: ['A', 'B', 'C', 'D', 'E', 'F'].map(item => ({