调整业务模块
This commit is contained in:
@@ -638,17 +638,18 @@
|
||||
label="运单号"
|
||||
min-width="150"
|
||||
show-overflow-tooltip
|
||||
/>
|
||||
>
|
||||
<template #default="{ row }">
|
||||
<el-link v-if="row.waybillNo" type="primary" @click="openWaybillDetail(row)">
|
||||
{{ row.waybillNo }}
|
||||
</el-link>
|
||||
<span v-else>-</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="projectName"
|
||||
label="项目名称"
|
||||
min-width="160"
|
||||
show-overflow-tooltip
|
||||
/>
|
||||
<el-table-column
|
||||
prop="customerName"
|
||||
label="客户名称"
|
||||
min-width="160"
|
||||
min-width="150"
|
||||
show-overflow-tooltip
|
||||
/>
|
||||
<el-table-column
|
||||
@@ -662,48 +663,118 @@
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="cargoName"
|
||||
label="货物名称"
|
||||
min-width="140"
|
||||
prop="goodsInfo"
|
||||
label="货物信息"
|
||||
min-width="260"
|
||||
show-overflow-tooltip
|
||||
/>
|
||||
<el-table-column
|
||||
prop="cargoType"
|
||||
label="货物类型"
|
||||
min-width="140"
|
||||
show-overflow-tooltip
|
||||
/>
|
||||
>
|
||||
<template #default="{ row }">
|
||||
{{ formatCandidateWaybillValue(row, 'goodsInfo') }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="departureAddress"
|
||||
label="发货地址"
|
||||
min-width="220"
|
||||
show-overflow-tooltip
|
||||
/>
|
||||
>
|
||||
<template #default="{ row }">
|
||||
{{ formatCandidateAddress(row, 'departure') }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="arrivalAddress"
|
||||
label="收货地址"
|
||||
min-width="220"
|
||||
show-overflow-tooltip
|
||||
/>
|
||||
>
|
||||
<template #default="{ row }">
|
||||
{{ formatCandidateAddress(row, 'arrival') }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="vehicleNo"
|
||||
label="车/船/航班/班列"
|
||||
prop="contractName"
|
||||
label="客户合同"
|
||||
min-width="160"
|
||||
show-overflow-tooltip
|
||||
/>
|
||||
<el-table-column
|
||||
prop="carrierName"
|
||||
label="承运商名称"
|
||||
min-width="160"
|
||||
prop="planName"
|
||||
label="计划名称"
|
||||
min-width="150"
|
||||
show-overflow-tooltip
|
||||
/>
|
||||
<el-table-column prop="driverName" label="司机" min-width="120" show-overflow-tooltip />
|
||||
<el-table-column
|
||||
prop="originalNo"
|
||||
label="原始单号"
|
||||
min-width="130"
|
||||
min-width="140"
|
||||
show-overflow-tooltip
|
||||
/>
|
||||
<el-table-column
|
||||
prop="relationNo"
|
||||
label="关联单号"
|
||||
min-width="140"
|
||||
show-overflow-tooltip
|
||||
/>
|
||||
<el-table-column prop="remark" label="备注" min-width="180" show-overflow-tooltip />
|
||||
<el-table-column
|
||||
prop="startDate"
|
||||
label="实际发货时间"
|
||||
min-width="170"
|
||||
show-overflow-tooltip
|
||||
>
|
||||
<template #default="{ row }">
|
||||
{{ formatCandidateDate(row.startDate) }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="endDate"
|
||||
label="实际完成时间"
|
||||
min-width="170"
|
||||
show-overflow-tooltip
|
||||
>
|
||||
<template #default="{ row }">
|
||||
{{ formatCandidateDate(row.endDate) }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="createTime"
|
||||
label="创建时间"
|
||||
min-width="170"
|
||||
show-overflow-tooltip
|
||||
>
|
||||
<template #default="{ row }">
|
||||
{{ formatCandidateDate(row.createTime) }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="updateTime"
|
||||
label="更新时间"
|
||||
min-width="170"
|
||||
show-overflow-tooltip
|
||||
>
|
||||
<template #default="{ row }">
|
||||
{{ formatCandidateDate(row.updateTime) }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="businessStatus"
|
||||
label="状态"
|
||||
width="110"
|
||||
fixed="right"
|
||||
align="center"
|
||||
>
|
||||
<template #default="{ row }">
|
||||
<span
|
||||
:class="[
|
||||
'loading-manage-page__status',
|
||||
`is-${row.businessStatus || 'unknown'}`,
|
||||
]"
|
||||
>
|
||||
{{ formatCandidateWaybillValue(row, 'businessStatus') }}
|
||||
</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<div class="loading-manage-dialog__table-toolbar">
|
||||
<el-button
|
||||
@@ -734,7 +805,10 @@
|
||||
<el-table-column type="index" label="序号" width="70" align="center" />
|
||||
<el-table-column prop="waybillNo" label="运单号" min-width="150">
|
||||
<template #default="{ row }">
|
||||
<el-link type="primary">{{ row.waybillNo }}</el-link>
|
||||
<el-link v-if="row.waybillNo" type="primary" @click.stop="openWaybillDetail(row)">
|
||||
{{ row.waybillNo }}
|
||||
</el-link>
|
||||
<span v-else>-</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="projectName" label="项目名称" min-width="160" />
|
||||
@@ -1009,6 +1083,7 @@ import {
|
||||
loadingStatusMap,
|
||||
loadingStatusOptions,
|
||||
} from '@/option/business/loading-manage';
|
||||
import { option as waybillOption } from '@/option/business/waybill-manage';
|
||||
import { ElMessage, ElMessageBox } from 'element-plus';
|
||||
import { Location, Rank, Refresh, Setting } from '@element-plus/icons-vue';
|
||||
import dayjs from 'dayjs';
|
||||
@@ -1377,6 +1452,27 @@ export default {
|
||||
statusText(row) {
|
||||
return row.businessStatusName || loadingStatusMap[row.businessStatus] || '未知';
|
||||
},
|
||||
formatCandidateWaybillValue(row, prop) {
|
||||
if (!row) return '-';
|
||||
if (prop === 'businessStatus') return this.statusText(row);
|
||||
if (prop === 'transportType') return this.transportTypeLabel(row.transportType);
|
||||
const column = waybillOption.column.find(item => item.prop === prop);
|
||||
if (column?.formatter) {
|
||||
const value = column.formatter(row, {}, row[prop]);
|
||||
return value === undefined || value === null || value === '' ? '-' : value;
|
||||
}
|
||||
const value = row[prop];
|
||||
return value === undefined || value === null || value === '' ? '-' : value;
|
||||
},
|
||||
formatCandidateDate(value) {
|
||||
if (!value) return '-';
|
||||
const date = dayjs(value);
|
||||
return date.isValid() ? date.format('YYYY-MM-DD HH:mm:ss') : value;
|
||||
},
|
||||
formatCandidateAddress(row, type) {
|
||||
const value = row?.[`${type}Address`] || row?.[`${type}Name`] || '';
|
||||
return this.formatProvinceCityDistrict(value) || '-';
|
||||
},
|
||||
splitText(value) {
|
||||
if (!value) return [];
|
||||
return String(value)
|
||||
@@ -1924,15 +2020,17 @@ export default {
|
||||
async loadCandidateWaybills() {
|
||||
this.candidateLoading = true;
|
||||
try {
|
||||
const query = {
|
||||
...this.buildQueryParams(this.candidateQuery),
|
||||
businessStatus: 'pending',
|
||||
onlyUnassignedLoading: 1,
|
||||
...(this.dialogMode === 'add' ? { transportType: 'road' } : {}),
|
||||
};
|
||||
const transportType = this.getCandidateTransportTypeQuery(query.transportType);
|
||||
const res = await getWaybillList(
|
||||
this.candidatePage.currentPage,
|
||||
this.candidatePage.pageSize,
|
||||
{
|
||||
...this.buildQueryParams(this.candidateQuery),
|
||||
businessStatus: 'pending',
|
||||
onlyUnassignedLoading: 1,
|
||||
...(this.dialogMode === 'add' ? { transportType: 'road' } : {}),
|
||||
}
|
||||
{ ...query, transportType }
|
||||
);
|
||||
const page = unwrapPage(res);
|
||||
this.candidateRows = page.records;
|
||||
@@ -1941,6 +2039,11 @@ export default {
|
||||
this.candidateLoading = false;
|
||||
}
|
||||
},
|
||||
getCandidateTransportTypeQuery(value) {
|
||||
const normalized = String(value || '').trim().toLowerCase();
|
||||
if (['road', '公路运输'].includes(normalized)) return 'road,公路运输';
|
||||
return value || '';
|
||||
},
|
||||
openCandidateSearch() {
|
||||
this.candidateSearchVisible = true;
|
||||
this.loadCandidateWaybills();
|
||||
|
||||
Reference in New Issue
Block a user