提交
This commit is contained in:
1 parent
c2cba3e668
commit
2142b33cfa
24 files changed
+4834
-3684
No files matched your search
@@ -182,7 +182,7 @@
|
||||
<el-tag v-else-if="row.qualificationComplete === false" type="warning" size="small">
|
||||
资质不全
|
||||
</el-tag>
|
||||
<span v-else>—</span>
|
||||
<el-tag v-else type="success" size="small">资质齐全</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
|
||||
@@ -114,12 +114,18 @@
|
||||
<el-table-column
|
||||
prop="personnelName"
|
||||
label="姓名"
|
||||
min-width="100"
|
||||
min-width="160"
|
||||
align="center"
|
||||
header-align="center"
|
||||
>
|
||||
<template #default="{ row }">
|
||||
<el-link type="primary" @click="handleView(row)">{{ row.personnelName }}</el-link>
|
||||
<div class="personnel-name-cell">
|
||||
<el-link type="primary" @click="handleView(row)">{{ row.personnelName }}</el-link>
|
||||
<PlPersonnelCertBadges
|
||||
:personnel-type="row.personnelType"
|
||||
:cert-list="row.certList"
|
||||
/>
|
||||
</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
@@ -357,6 +363,7 @@ import { Check, Close, Delete, Edit, Plus, RefreshLeft, Search, User } from '@el
|
||||
import { personnelApi, type Personnel, type PersonnelDetail, type CertRow } from '@/api/pl'
|
||||
import PlCertFormList from '@/components/business/pl-cert-form-list/index.vue'
|
||||
import PlCertViewList from '@/components/business/pl-cert-view-list/index.vue'
|
||||
import PlPersonnelCertBadges from '@/components/business/pl-personnel-cert-badges/index.vue'
|
||||
import SystemViewDialog, {
|
||||
type ViewSection
|
||||
} from '@/components/business/system-view-dialog/index.vue'
|
||||
@@ -824,4 +831,12 @@ onMounted(() => {
|
||||
.sub-table {
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
|
||||
.personnel-name-cell {
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
flex-wrap: wrap;
|
||||
gap: 6px;
|
||||
}
|
||||
</style>
|
||||
@@ -113,14 +113,21 @@
|
||||
<el-table-column
|
||||
prop="licensePlate"
|
||||
label="车牌号"
|
||||
min-width="120"
|
||||
min-width="340"
|
||||
align="center"
|
||||
header-align="center"
|
||||
>
|
||||
<template #default="{ row }">
|
||||
<el-link type="primary" @click="handleView(row)">
|
||||
{{ formatPlVehiclePlateDisplay(row.licensePlate, row.trailerNo) }}
|
||||
</el-link>
|
||||
<div class="vehicle-plate-cell">
|
||||
<el-link type="primary" @click="handleView(row)">
|
||||
{{ formatPlVehiclePlateDisplay(row.licensePlate, row.trailerNo) }}
|
||||
</el-link>
|
||||
<PlVehicleCertBadges
|
||||
vehicle-type="self"
|
||||
:cert-list="row.certList"
|
||||
:trailer-no="row.trailerNo"
|
||||
/>
|
||||
</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="车辆类型" min-width="90" align="center" header-align="center" v-if="isColumnVisible('vehicleType')">
|
||||
@@ -216,7 +223,7 @@
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="承运商" prop="carrierId">
|
||||
<el-select v-model="formData.carrierId" placeholder="请选择承运商(选填)" clearable filterable>
|
||||
<el-select v-model="formData.carrierId" placeholder="请选择承运商" filterable>
|
||||
<el-option
|
||||
v-for="c in carrierList"
|
||||
:key="c.id"
|
||||
@@ -390,6 +397,7 @@ import {
|
||||
} from '@/api/pl'
|
||||
import PlVehicleCertPartTabs from '@/components/business/pl-vehicle-cert-part-tabs/index.vue'
|
||||
import PlVehicleCertPersonnelTabs from '@/components/business/pl-vehicle-cert-personnel-tabs/index.vue'
|
||||
import PlVehicleCertBadges from '@/components/business/pl-vehicle-cert-badges/index.vue'
|
||||
import type { VehiclePersonnelViewRow } from '@/components/business/pl-vehicle-personnel-view-list/index.vue'
|
||||
import SystemViewDialog, {
|
||||
type ViewSection
|
||||
@@ -414,7 +422,11 @@ import {
|
||||
PL_VEHICLE_CERT_NAME_OPTIONS,
|
||||
getSelfVehicleCertMissingSuffix
|
||||
} from '@/utils/pl-vehicle-cert'
|
||||
import { validatePersonnelTypeRoleCompat, validatePersonnelAffiliationVehicleCompat } from '@/utils/pl-personnel-cert'
|
||||
import {
|
||||
mapPersonnelTypeToVehicleRole,
|
||||
validatePersonnelTypeRoleCompat,
|
||||
validatePersonnelAffiliationVehicleCompat
|
||||
} from '@/utils/pl-personnel-cert'
|
||||
import { canDeleteByCreator, filterDeletableByCreator, allRowsDeletableByCreator, CREATOR_DELETE_TIP } from '@/utils/creator-delete'
|
||||
|
||||
const VEHICLE_TYPE_SELF = 'self'
|
||||
@@ -487,7 +499,8 @@ const formData = reactive({
|
||||
|
||||
const formRules = {
|
||||
licensePlate: [{ required: true, message: '请输入车牌号', trigger: 'blur' }],
|
||||
vehicleStatus: [{ required: true, message: '请选择车辆状态', trigger: 'change' }]
|
||||
vehicleStatus: [{ required: true, message: '请选择车辆状态', trigger: 'change' }],
|
||||
carrierId: [{ required: true, message: '请选择承运商', trigger: 'change' }]
|
||||
}
|
||||
|
||||
function getStatusTagType(status: string) {
|
||||
@@ -605,6 +618,7 @@ function handlePersonnelSelect(row: VehiclePersonnelRow, personnelId?: string) {
|
||||
row.personnelName = ''
|
||||
row.phoneNo = ''
|
||||
row.age = null
|
||||
row.role = ''
|
||||
return
|
||||
}
|
||||
const person = personnelOptions.value.find(p => p.id === personnelId)
|
||||
@@ -613,6 +627,11 @@ function handlePersonnelSelect(row: VehiclePersonnelRow, personnelId?: string) {
|
||||
row.personnelName = person.personnelName
|
||||
row.phoneNo = person.phoneNo || ''
|
||||
row.age = person.age ?? null
|
||||
const mappedRole = mapPersonnelTypeToVehicleRole(person.personnelType)
|
||||
if (mappedRole) {
|
||||
row.role = mappedRole
|
||||
handleRoleChange(row, 0)
|
||||
}
|
||||
}
|
||||
|
||||
function resolvePersonnelRows(rows: VehiclePersonnelRow[]) {
|
||||
@@ -1002,4 +1021,13 @@ onMounted(() => {
|
||||
.sub-table {
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
|
||||
.vehicle-plate-cell {
|
||||
display: inline-flex;
|
||||
flex-direction: row;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
flex-wrap: nowrap;
|
||||
gap: 6px;
|
||||
}
|
||||
</style>
|
||||
@@ -121,14 +121,21 @@
|
||||
<el-table-column
|
||||
prop="licensePlate"
|
||||
label="车牌号"
|
||||
min-width="120"
|
||||
min-width="340"
|
||||
align="center"
|
||||
header-align="center"
|
||||
>
|
||||
<template #default="{ row }">
|
||||
<el-link type="primary" @click="handleView(row)">
|
||||
{{ formatPlVehiclePlateDisplay(row.licensePlate, row.trailerNo) }}
|
||||
</el-link>
|
||||
<div class="vehicle-plate-cell">
|
||||
<el-link type="primary" @click="handleView(row)">
|
||||
{{ formatPlVehiclePlateDisplay(row.licensePlate, row.trailerNo) }}
|
||||
</el-link>
|
||||
<PlVehicleCertBadges
|
||||
:vehicle-type="row.vehicleType === 'carrier' ? 'carrier' : 'self'"
|
||||
:cert-list="row.certList"
|
||||
:trailer-no="row.trailerNo"
|
||||
/>
|
||||
</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="车辆类型" min-width="100" align="center" header-align="center" v-if="isColumnVisible('vehicleType')">
|
||||
@@ -233,7 +240,7 @@
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="承运商" prop="carrierId">
|
||||
<el-select v-model="formData.carrierId" placeholder="请选择承运商" clearable filterable>
|
||||
<el-select v-model="formData.carrierId" placeholder="请选择承运商" filterable>
|
||||
<el-option
|
||||
v-for="c in carrierList"
|
||||
:key="c.id"
|
||||
@@ -412,6 +419,7 @@ import {
|
||||
} from '@/api/pl'
|
||||
import PlVehicleCertPartTabs from '@/components/business/pl-vehicle-cert-part-tabs/index.vue'
|
||||
import PlVehicleCertPersonnelTabs from '@/components/business/pl-vehicle-cert-personnel-tabs/index.vue'
|
||||
import PlVehicleCertBadges from '@/components/business/pl-vehicle-cert-badges/index.vue'
|
||||
import type { VehiclePersonnelViewRow } from '@/components/business/pl-vehicle-personnel-view-list/index.vue'
|
||||
import SystemViewDialog, {
|
||||
type ViewSection
|
||||
@@ -432,7 +440,11 @@ import {
|
||||
getVehicleCertMissingSuffix,
|
||||
type PlVehicleCertCheckType
|
||||
} from '@/utils/pl-vehicle-cert'
|
||||
import { validatePersonnelTypeRoleCompat, validatePersonnelAffiliationVehicleCompat } from '@/utils/pl-personnel-cert'
|
||||
import {
|
||||
mapPersonnelTypeToVehicleRole,
|
||||
validatePersonnelTypeRoleCompat,
|
||||
validatePersonnelAffiliationVehicleCompat
|
||||
} from '@/utils/pl-personnel-cert'
|
||||
import { canDeleteByCreator, filterDeletableByCreator, allRowsDeletableByCreator, CREATOR_DELETE_TIP } from '@/utils/creator-delete'
|
||||
|
||||
type CertListItem = CertRow & { _key?: string }
|
||||
@@ -506,7 +518,8 @@ const formData = reactive({
|
||||
|
||||
const formRules = {
|
||||
licensePlate: [{ required: true, message: '请输入车牌号', trigger: 'blur' }],
|
||||
vehicleType: [{ required: true, message: '请选择车辆类型', trigger: 'change' }]
|
||||
vehicleType: [{ required: true, message: '请选择车辆类型', trigger: 'change' }],
|
||||
carrierId: [{ required: true, message: '请选择承运商', trigger: 'change' }]
|
||||
}
|
||||
|
||||
function getStatusTagType(status: string) {
|
||||
@@ -671,6 +684,7 @@ function handlePersonnelSelect(row: VehiclePersonnelRow, personnelId?: string) {
|
||||
row.personnelName = ''
|
||||
row.phoneNo = ''
|
||||
row.age = null
|
||||
row.role = ''
|
||||
return
|
||||
}
|
||||
const person = personnelOptions.value.find(p => p.id === personnelId)
|
||||
@@ -679,6 +693,11 @@ function handlePersonnelSelect(row: VehiclePersonnelRow, personnelId?: string) {
|
||||
row.personnelName = person.personnelName
|
||||
row.phoneNo = person.phoneNo || ''
|
||||
row.age = person.age ?? null
|
||||
const mappedRole = mapPersonnelTypeToVehicleRole(person.personnelType)
|
||||
if (mappedRole) {
|
||||
row.role = mappedRole
|
||||
handleRoleChange(row, 0)
|
||||
}
|
||||
}
|
||||
|
||||
function resolvePersonnelRows(rows: VehiclePersonnelRow[]) {
|
||||
@@ -1107,4 +1126,13 @@ onMounted(() => {
|
||||
.sub-table {
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
|
||||
.vehicle-plate-cell {
|
||||
display: inline-flex;
|
||||
flex-direction: row;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
flex-wrap: nowrap;
|
||||
gap: 6px;
|
||||
}
|
||||
</style>
|
||||
Reference in new issue
Block a user