feat(web-admin): 承运商去审核 UI 并移除安排运输准入拦截

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
zlwuandCursor committed 2026-07-25 10:58:24 +08:00
1 parent 4eed1183b5
commit fd62043f71
5 files changed
+9 -173

No files matched your search

@@ -86,8 +86,6 @@ import {
} from '@/composables/usePlVehicleViewDetail'
import { formatDateTime } from '@/utils/format'
import {
getPlCarrierAuditStatusLabel,
getPlCarrierAuditStatusTagType,
getPlCarrierStatusLabel,
getPlCarrierStatusTagType
} from '@/utils/pl-display'
@@ -118,8 +116,7 @@ const heroMeta = computed(() => {
const parts = [
c.contactName || undefined,
c.contactPhone || undefined,
getPlCarrierStatusLabel(c.status),
getPlCarrierAuditStatusLabel(c.auditStatus)
getPlCarrierStatusLabel(c.status)
].filter(Boolean)
return parts.join(' · ')
})
@@ -145,26 +142,6 @@ const carrierInfoRow2Fields = computed<ViewField[]>(() => {
const c = carrier.value
if (!c) return []
return [
{
label: '审核状态',
value: getPlCarrierAuditStatusLabel(c.auditStatus),
tagType: getPlCarrierAuditStatusTagType(c.auditStatus),
long: false
},
{
label: '审核时间',
value: c.auditTime ? formatDateTime(c.auditTime) : '—',
long: false
},
{ label: '审核备注', value: c.auditRemark || '—', long: false, fullSpan: false }
]
})
const carrierInfoRow3Fields = computed<ViewField[]>(() => {
const c = carrier.value
if (!c) return []
return [
{ label: '创建时间', value: formatDateTime(c.createTime), long: false },
{
@@ -192,8 +169,7 @@ const viewSections = computed<ViewSection[]>(() => {
title: '承运商信息',
fieldGroups: [
{ fieldLayout: 'table', tableMode: 'quad', fields: [] },
{ fieldLayout: 'table', tableMode: 'quad', fields: [] },
{ fieldLayout: 'table', tableMode: 'triple', fields: [] }
{ fieldLayout: 'table', tableMode: 'quad', fields: [] }
],
fields: []
},
@@ -214,11 +190,6 @@ const viewSections = computed<ViewSection[]>(() => {
{
fieldLayout: 'table',
tableMode: 'quad',
fields: carrierInfoRow3Fields.value
},
{
fieldLayout: 'table',
tableMode: 'triple',
fields: carrierInfoRow2Fields.value
}
],
@@ -36,14 +36,6 @@
<section v-else class="pl-plan-form-section">
<h3 class="pl-plan-form-section-title">{{ isRearrange ? '调整运输' : '运输安排' }}</h3>
<el-alert
v-if="rearrangeBlocked"
type="warning"
:closable="false"
show-icon
:title="rearrangeBlockedMessage"
class="pl-arrange-block-alert"
/>
<el-form ref="formRef" :model="formData" :rules="formRules" label-position="right" label-width="100px" class="pl-dialog-form">
<div class="form-grid-4">
<el-form-item label="选择车辆" prop="vehicleId">
@@ -304,7 +296,7 @@
<el-button @click="innerVisible = false">
<el-icon><Close /></el-icon>取消
</el-button>
<el-button type="primary" :loading="submitLoading" :disabled="rearrangeBlocked" @click="handleSubmit">
<el-button type="primary" :loading="submitLoading" @click="handleSubmit">
<el-icon><Check /></el-icon>{{ isRearrange ? '确认调整' : '确认安排' }}
</el-button>
</template>
@@ -401,8 +393,6 @@ const vehicleBundle = ref<VehicleViewBundle | null>(null)
const vehicleViewVisible = ref(false)
const hasHistoricalDibang = ref(false)
const hasHistoricalSiteLinks = ref(false)
const rearrangeBlocked = ref(false)
const rearrangeBlockedMessage = ref('')
const formData = reactive({
vehicleId: '',
@@ -488,8 +478,6 @@ const freightCalc = usePlFreightCalc({
freightType: freightTypeRef
})
const selectedVehicle = computed(() => vehicleList.value.find(item => item.id === formData.vehicleId))
const showDibangHint = computed(
() => formData.generateDibangPlan && canGenerateDibangPlan.value
)
@@ -615,8 +603,6 @@ function resetState() {
vehicleViewVisible.value = false
hasHistoricalDibang.value = false
hasHistoricalSiteLinks.value = false
rearrangeBlocked.value = false
rearrangeBlockedMessage.value = ''
Object.assign(formData, {
vehicleId: '',
driverId: '',
@@ -643,47 +629,13 @@ function resetState() {
async function loadMasterData() {
const [vehicleRes, carrierRes] = await Promise.all([
vehicleApi.list({ vehicleStatus: 'available', excludeIneligibleCarrier: true }),
vehicleApi.list({ vehicleStatus: 'available' }),
carrierApi.list({ status: '1', page: 1, pageSize: 100 })
])
vehicleList.value = pickBxList<Vehicle>(vehicleRes)
carrierList.value = pickBxList<Carrier>(carrierRes)
}
async function updateRearrangeBlocked() {
rearrangeBlocked.value = false
rearrangeBlockedMessage.value = ''
if (!isRearrange.value) return
const detail = vehicleBundle.value?.detail
const carrierId = detail?.carrierId || formData.carrierId || selectedVehicle.value?.carrierId
if (!carrierId) return
let carrier = carrierList.value.find(c => c.id === carrierId)
if (!carrier) {
try {
const res = await carrierApi.get(carrierId)
carrier = pickBxData<Carrier>(res)
} catch {
return
}
}
if (!carrier?.qualificationComplete) {
rearrangeBlocked.value = true
rearrangeBlockedMessage.value = '该承运商资质附件不完整,请先补全后再调整运输'
return
}
if (carrier.auditStatus !== 'approved') {
rearrangeBlocked.value = true
rearrangeBlockedMessage.value = '该承运商尚未审核通过,请先完成审核后再调整运输'
return
}
if (carrier.transportAgreementExpired) {
rearrangeBlocked.value = true
rearrangeBlockedMessage.value = '该承运商运输协议已过期,请先更新协议后再调整运输'
}
}
async function handleVehicleChange(vehicleId: string, preferredDriverId?: string) {
if (!vehicleId) {
formData.driverId = ''
@@ -709,7 +661,6 @@ async function handleVehicleChange(vehicleId: string, preferredDriverId?: string
formData.carrierId = vehicleBundle.value.detail.carrierId
}
applyVehiclePersonnel(vehicleBundle.value.personnelList || [], preferredDriverId)
await updateRearrangeBlocked()
} finally {
vehicleLoading.value = false
}
@@ -746,10 +697,6 @@ function handleClosed() {
}
async function handleSubmit() {
if (rearrangeBlocked.value) {
ElMessage.warning(rearrangeBlockedMessage.value || '当前承运商不可调整运输')
return
}
const valid = await formRef.value?.validate().catch(() => false)
if (!valid) return
@@ -886,10 +833,6 @@ function handlePrintSubpackSlip() {
padding-right: 4px;
}
.pl-arrange-block-alert {
margin-bottom: 12px;
}
.pl-plan-logistics-fields {
display: flex;
flex-direction: column;
@@ -811,7 +811,7 @@ function handleClosed() {
async function loadMasterData() {
try {
const [vehicleRes, carrierRes] = await Promise.all([
vehicleApi.list({ vehicleStatus: 'available', excludeIneligibleCarrier: true }),
vehicleApi.list({ vehicleStatus: 'available' }),
carrierApi.list({ status: '1', page: 1, pageSize: 100 })
])
vehicleList.value = pickBxList<Vehicle>(vehicleRes)