1、新增结算模块

2、调整业务模块
3、调整客商模块
This commit is contained in:
2026-08-20 06:33:01 +08:00
parent 4199255186
commit fd5b1484e6
59 changed files with 11745 additions and 1104 deletions
+100 -7
View File
@@ -92,11 +92,7 @@
label="已关联运单"
width="115"
/><el-table-column prop="unRelatedWaybillCount" label="未关联运单" width="115" />
<el-table-column prop="status" label="状态" width="100"
><template #default="{ row }">{{
Number(row.status) === 1 ? '启用' : '停用'
}}</template></el-table-column
><el-table-column prop="createTime" label="创建时间" min-width="170" />
<el-table-column prop="createTime" label="创建时间" min-width="170" />
<el-table-column
prop="auditStatus"
label="审核状态"
@@ -146,6 +142,65 @@
</section>
</basic-container>
<el-dialog v-model="detailVisible" width="960px" destroy-on-close>
<template #header>
<div class="voucher-manage-page__dialog-title">凭证详情</div>
</template>
<el-descriptions v-loading="detailLoading" :column="2" border>
<el-descriptions-item label="项目名称">
{{ detailValue(detailRow.projectName) }}
</el-descriptions-item>
<el-descriptions-item label="凭证批次号">
{{ detailValue(detailRow.voucherBatchNo) }}
</el-descriptions-item>
<el-descriptions-item label="运单批次号" :span="2">
{{ detailValue(detailRow.waybillBatchNo) }}
</el-descriptions-item>
<el-descriptions-item label="文件名称" :span="2">
<el-link v-if="detailRow.fileUrl" type="primary" @click="download(detailRow)">
{{ detailValue(detailRow.fileName) }}
</el-link>
<template v-else>{{ detailValue(detailRow.fileName) }}</template>
</el-descriptions-item>
<el-descriptions-item label="上传来源">
{{ detailValue(detailRow.uploadSource) }}
</el-descriptions-item>
<el-descriptions-item label="承运商名称">
{{ detailValue(detailRow.carrierName) }}
</el-descriptions-item>
<el-descriptions-item label="处理状态">
{{ detailValue(detailRow.processStatus) }}
</el-descriptions-item>
<el-descriptions-item label="审核状态">
{{ detailValue(detailRow.auditStatus) }}
</el-descriptions-item>
<el-descriptions-item label="凭证数量">
{{ detailValue(detailRow.voucherCount) }}
</el-descriptions-item>
<el-descriptions-item label="已关联运单">
{{ detailValue(detailRow.relatedWaybillCount) }}
</el-descriptions-item>
<el-descriptions-item label="未关联运单">
{{ detailValue(detailRow.unRelatedWaybillCount) }}
</el-descriptions-item>
<el-descriptions-item label="创建人">
{{ detailValue(detailRow.createUserName) }}
</el-descriptions-item>
<el-descriptions-item label="创建时间">
{{ detailValue(detailRow.createTime) }}
</el-descriptions-item>
<el-descriptions-item label="更新人">
{{ detailValue(detailRow.updateUserName) }}
</el-descriptions-item>
<el-descriptions-item label="更新时间">
{{ detailValue(detailRow.updateTime) }}
</el-descriptions-item>
</el-descriptions>
<template #footer>
<el-button type="primary" @click="detailVisible = false">关闭</el-button>
</template>
</el-dialog>
<el-dialog
v-model="uploadVisible"
:title="editing.id ? '更换运单批次' : '批量导入凭证'"
@@ -414,6 +469,9 @@ const loading = ref(false),
rows = ref([]),
createRange = ref([]),
searchExpanded = ref(false),
detailVisible = ref(false),
detailLoading = ref(false),
detailRow = ref({}),
uploadVisible = ref(false),
batchVisible = ref(false),
progressVisible = ref(false),
@@ -875,7 +933,21 @@ const removeRow = row =>
ElMessage.success('删除成功');
load();
});
const view = row => ElMessage.info(`凭证批次:${row.voucherBatchNo}`);
const detailValue = value =>
value === undefined || value === null || value === '' ? '-' : value;
const view = async row => {
detailVisible.value = true;
detailLoading.value = true;
detailRow.value = { ...row };
try {
const res = await api.getDetail(row.id);
detailRow.value = res.data?.data || row;
} catch (error) {
ElMessage.error(error.message || '获取凭证详情失败');
} finally {
detailLoading.value = false;
}
};
const download = row => window.open(row.fileUrl, '_blank');
load();
</script>
@@ -914,6 +986,21 @@ load();
padding: 0;
min-height: auto;
}
&__dialog-title {
display: flex;
align-items: center;
gap: 8px;
color: #303133;
font-size: 18px;
font-weight: 600;
&::before {
width: 4px;
height: 18px;
background: #409eff;
content: '';
}
}
&__actions {
display: flex;
flex-wrap: wrap;
@@ -957,8 +1044,9 @@ load();
}
&__batch-search {
padding: 12px;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);
margin-bottom: 8px;
background: #fff;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);
}
:deep(.el-form-item) {
margin-bottom: 8px;
@@ -976,6 +1064,11 @@ load();
:deep(.voucher-manage-page__project-select) {
width: 280px;
}
:deep(.voucher-manage-page__batch-search .el-input),
:deep(.voucher-manage-page__batch-search .el-input-number),
:deep(.voucher-manage-page__batch-search .el-date-editor) {
width: 50%;
}
:deep(.el-table) {
--el-table-border-color: #eff1f7;
--el-table-row-hover-bg-color: #f5f7fa;