Просмотр исходного кода

feat(web-admin): 全部车辆页改为三方车辆并关闭证书强制

Co-authored-by: Cursor <cursoragent@cursor.com>
zlwu 3 месяцев назад
Родитель
Сommit
3396e3d164
1 измененных файлов с 18 добавлено и 72 удалено
  1. 18 72
      web-admin/src/views/pl/vehicle/index.vue

+ 18 - 72
web-admin/src/views/pl/vehicle/index.vue

@@ -1,9 +1,9 @@
-<!-- 全部车辆管理 -->
+<!-- 三方车辆 -->
 <template>
   <div class="page-container">
     <section class="panel">
       <div class="panel-top">
-        <h2 class="title-bar-heading">车辆列表</h2>
+        <h2 class="title-bar-heading">三方车辆</h2>
       </div>
 
       <!-- 筛选区 -->
@@ -18,12 +18,6 @@
                 @keyup.enter="handleSearch"
               />
             </el-form-item>
-            <el-form-item label="车辆类型">
-              <el-select v-model="searchForm.vehicleType" placeholder="全部" clearable>
-                <el-option label="自有" value="self" />
-                <el-option label="承运商" value="carrier" />
-              </el-select>
-            </el-form-item>
             <el-form-item label="承运商">
               <el-select v-model="searchForm.carrierId" placeholder="全部" clearable filterable>
                 <el-option
@@ -224,12 +218,6 @@
           <el-form-item label="挂车号" prop="trailerNo">
             <el-input v-model="formData.trailerNo" placeholder="请输入挂车号" maxlength="20" clearable />
           </el-form-item>
-          <el-form-item label="车辆类型" prop="vehicleType">
-            <el-select v-model="formData.vehicleType" placeholder="请选择">
-              <el-option label="自有" value="self" />
-              <el-option label="承运商" value="carrier" />
-            </el-select>
-          </el-form-item>
           <el-form-item label="载重(吨)" prop="loadCapacity">
             <el-input-number
               v-model="formData.loadCapacity"
@@ -342,8 +330,8 @@
           upload-folder="pl/vehicle-cert"
           :cert-name-options="certNameOptions"
           layout="table"
-          :enforce-self-vehicle-required="formData.vehicleType === 'self'"
-          :enforce-carrier-vehicle-required="formData.vehicleType === 'carrier'"
+          :enforce-self-vehicle-required="false"
+          :enforce-carrier-vehicle-required="false"
         />
       </el-form>
       <template #footer>
@@ -391,9 +379,7 @@
           :vehicle-id="viewDetail?.id"
           :personnel-list="viewPersonnelList"
           :vehicle-cert-check-type="viewVehicleCertCheckType"
-          :check-linked-personnel-certs="
-            viewDetail?.vehicleType === 'self' || viewDetail?.vehicleType === 'carrier'
-          "
+          :check-linked-personnel-certs="false"
           cert-layout="table"
         />
       </template>
@@ -429,15 +415,9 @@ import { pickBxList, pickBxPageResult } from '@/utils/http/bx'
 import { DEFAULT_LIST_PAGE_SIZE } from '@/utils/table/tableConfig'
 import { formatDateTime } from '@/utils/format'
 import { formatPlVehiclePlateDisplay, normalizePlPersonnelSummaryDisplay } from '@/utils/pl-display'
-import {
-  collectCarrierVehicleRequiredCertErrors,
-  collectSelfVehicleRequiredCertErrors,
-  ensureVehicleCertSlots,
-  formatRequiredCertErrors
-} from '@/utils/pl-cert-slots'
+import { ensureVehicleCertSlots } from '@/utils/pl-cert-slots'
 import {
   PL_VEHICLE_CERT_NAME_OPTIONS,
-  getVehicleCertMissingSuffix,
   type PlVehicleCertCheckType
 } from '@/utils/pl-vehicle-cert'
 import {
@@ -450,6 +430,8 @@ import { canDeleteByCreator, filterDeletableByCreator, allRowsDeletableByCreator
 type CertListItem = CertRow & { _key?: string }
 type CertFormListRef = InstanceType<typeof PlVehicleCertPartTabs>
 
+const VEHICLE_TYPE_LOCK = 'carrier' as const
+
 const loading = ref(false)
 const quickSearchKeyword = ref('')
 const submitLoading = ref(false)
@@ -493,7 +475,7 @@ const certNameOptions = PL_VEHICLE_CERT_NAME_OPTIONS
 
 const searchForm = reactive({
   q: '',
-  vehicleType: '',
+  vehicleType: VEHICLE_TYPE_LOCK,
   carrierId: '',
   vehicleStatus: ''
 })
@@ -508,7 +490,7 @@ const formData = reactive({
   id: '',
   licensePlate: '',
   trailerNo: '',
-  vehicleType: 'self',
+  vehicleType: VEHICLE_TYPE_LOCK,
   carrierId: '',
   carrierName: '',
   loadCapacity: null as number | null,
@@ -519,7 +501,6 @@ const formData = reactive({
 const formRules = {
   licensePlate: [{ required: true, message: '请输入车牌号', trigger: 'blur' }],
   trailerNo: [{ required: true, message: '请输入挂车号', trigger: 'blur' }],
-  vehicleType: [{ required: true, message: '请选择车辆类型', trigger: 'change' }],
   carrierId: [{ required: true, message: '请选择承运商', trigger: 'change' }]
 }
 
@@ -559,24 +540,9 @@ const viewHeroMeta = computed(() => {
   return parts.join(' · ')
 })
 
-const viewVehicleCertCheckType = computed<PlVehicleCertCheckType | undefined>(() => {
-  const type = viewDetail.value?.vehicleType
-  return type === 'self' || type === 'carrier' ? type : undefined
-})
+const viewVehicleCertCheckType = computed<PlVehicleCertCheckType>(() => VEHICLE_TYPE_LOCK)
 
-const viewDialogTitle = computed(() => {
-  const plate = viewDetail.value?.licensePlate || '车辆详情'
-  const checkType = viewVehicleCertCheckType.value
-  if (!viewDetail.value || !checkType) return plate
-  return (
-    plate +
-    getVehicleCertMissingSuffix({
-      vehicleType: checkType,
-      certList: viewDetail.value.certList,
-      trailerNo: viewDetail.value.trailerNo
-    })
-  )
-})
+const viewDialogTitle = computed(() => viewDetail.value?.licensePlate || '车辆详情')
 
 const viewSections = computed<ViewSection[]>(() => {
   const d = viewDetail.value
@@ -801,19 +767,6 @@ function validateSubTables(): boolean {
     }
   }
 
-  if (formData.vehicleType === 'self') {
-    const certErrors = collectSelfVehicleRequiredCertErrors(certList.value, formData.trailerNo)
-    if (certErrors.length) {
-      ElMessage.warning(formatRequiredCertErrors(certErrors))
-      return false
-    }
-  } else if (formData.vehicleType === 'carrier') {
-    const certErrors = collectCarrierVehicleRequiredCertErrors(certList.value, formData.trailerNo)
-    if (certErrors.length) {
-      ElMessage.warning(formatRequiredCertErrors(certErrors))
-      return false
-    }
-  }
   return true
 }
 
@@ -822,7 +775,7 @@ async function fetchData() {
   try {
     const res = await vehicleApi.list({
       q: quickSearchKeyword.value.trim() || searchForm.q || undefined,
-      vehicleType: searchForm.vehicleType || undefined,
+      vehicleType: VEHICLE_TYPE_LOCK,
       carrierId: searchForm.carrierId || undefined,
       vehicleStatus: searchForm.vehicleStatus || undefined,
       page: pagination.page,
@@ -846,7 +799,7 @@ function handleSearch() {
 
 function handleReset() {
   searchForm.q = ''
-  searchForm.vehicleType = ''
+  searchForm.vehicleType = VEHICLE_TYPE_LOCK
   searchForm.carrierId = ''
   searchForm.vehicleStatus = ''
   quickSearchKeyword.value = ''
@@ -913,7 +866,7 @@ function handleAdd() {
     id: '',
     licensePlate: '',
     trailerNo: '',
-    vehicleType: 'self',
+    vehicleType: VEHICLE_TYPE_LOCK,
     carrierId: '',
     carrierName: '',
     loadCapacity: null,
@@ -921,7 +874,7 @@ function handleAdd() {
     remark: ''
   })
   resetSubTables()
-  certList.value = ensureVehicleCertSlots([], formData.trailerNo, formData.vehicleType as PlVehicleCertCheckType)
+  certList.value = ensureVehicleCertSlots([], formData.trailerNo, VEHICLE_TYPE_LOCK)
   loadPersonnelOptions()
   dialogVisible.value = true
 }
@@ -957,7 +910,7 @@ async function handleEdit(row: Vehicle) {
       id: detail.id,
       licensePlate: detail.licensePlate,
       trailerNo: detail.trailerNo || '',
-      vehicleType: detail.vehicleType,
+      vehicleType: VEHICLE_TYPE_LOCK,
       carrierId: detail.carrierId,
       carrierName: detail.carrierName,
       loadCapacity: detail.loadCapacity ?? null,
@@ -980,14 +933,7 @@ async function handleEdit(row: Vehicle) {
       remindDays: c.remindDays ?? 30,
       attachmentUrls: c.attachmentUrls || ''
     }))
-    certList.value =
-      detail.vehicleType === 'self' || detail.vehicleType === 'carrier'
-        ? ensureVehicleCertSlots(
-            mappedCerts,
-            formData.trailerNo,
-            detail.vehicleType as PlVehicleCertCheckType
-          )
-        : mappedCerts
+    certList.value = ensureVehicleCertSlots(mappedCerts, formData.trailerNo, VEHICLE_TYPE_LOCK)
     certFormListRef.value?.refreshRequiredSlots?.()
   } finally {
     dialogLoading.value = false