✨ 完善运单导入编辑回填、分批校验与运费录入

导入编辑进入独立页面并回填数据,确认导入按每批100条校验后统一导出失败明细,完整录入运费信息按数量单位联动单价单位。

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-09-27 22:54:33 +08:00
parent 98fbf123f5
commit f3a33b1a04
12 changed files with 668 additions and 133 deletions
+22 -4
View File
@@ -117,7 +117,7 @@
/>
</el-select>
</el-form-item>
<el-form-item label="车/船/航班/班列">
<el-form-item label="车牌号/船班号/船次号/班次号">
<el-input v-model="searchForm.vehicleNo" clearable placeholder="请输入" />
</el-form-item>
<el-form-item label="原始单号">
@@ -719,8 +719,13 @@
</div>
</el-tab-pane>
<el-tab-pane v-if="hasRelatedVoucher" label="批量补录" name="batchSupplement">
<voucher-execution-detail
v-if="isCarrierExecutionVoucher"
:key="processWaybillId"
:waybill-id="processWaybillId"
/>
<div
v-if="voucherFolderView"
v-else-if="voucherFolderView"
class="loading-detail__voucher-folder-toolbar"
>
<el-button text type="primary" @click="backToVoucherFolders">
@@ -728,7 +733,11 @@
</el-button>
<span>{{ voucherFolderName(voucherFolder) }}</span>
</div>
<div v-loading="voucherImagesLoading" class="loading-detail__voucher-image-grid">
<div
v-if="!isCarrierExecutionVoucher"
v-loading="voucherImagesLoading"
class="loading-detail__voucher-image-grid"
>
<div
v-for="(image, index) in voucherImages"
:key="
@@ -936,7 +945,7 @@
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="车/船/航班/班列">
<el-form-item label="车牌号/船班号/船次号/班次号">
<el-input
v-model="candidateQuery.vehicleNo"
clearable
@@ -1755,6 +1764,7 @@ import {
getDetail as getProcessConfigDetail,
getVoucherImages as getProcessConfigVoucherImages,
} from '@/api/business/process-config';
import VoucherExecutionDetail from './components/voucher-execution-detail.vue';
import { getList as getCommonAddressList } from '@/api/base/common-address';
import {
carrierTypeOptions,
@@ -1965,6 +1975,7 @@ export default {
components: {
Rank,
Search,
VoucherExecutionDetail,
},
data() {
return {
@@ -2118,6 +2129,13 @@ export default {
isSelfCarrierDetail() {
return String(this.dialogForm.carrierType || '').trim() === '自运';
},
isCarrierExecutionVoucher() {
if (String(this.dialogForm.carrierType || '').trim() === '承运商') return true;
const waybill = (this.selectedWaybillRows || []).find(
item => String(item.id) === String(this.processWaybillId)
);
return String(waybill?.carrierTypeName || waybill?.carrierType || '').trim() === '承运商';
},
detailTaskMileage() {
return normalizeLoadingMileage(this.dialogForm.mileage);
},