Merge branch 'master' into feature/bfi-api-rate

# Conflicts:
#	src/components/vehicle-attachment-table/main.vue
#	src/option/payment/paymentApplication.js
#	src/views/payment/payment-application.vue
#	src/views/payment/receipt-claim-record.vue
#	src/views/vehicle/customer-archive.vue
This commit is contained in:
刘泉佳
2026-10-14 14:41:40 +08:00
115 changed files with 10016 additions and 2484 deletions
@@ -1384,7 +1384,7 @@ export default {
padding: 4px 0 6px;
:deep(.el-form-item) {
margin-bottom: 14px;
margin-bottom: 24px;
}
:deep(.el-form-item__label) {
@@ -1422,7 +1422,7 @@ export default {
column-gap: 112px;
:deep(.el-form-item) {
margin-bottom: 14px;
margin-bottom: 24px;
}
}
}
+65 -83
View File
@@ -144,7 +144,7 @@
type="warning"
v-if="
hasPermission('customer_archive_submit') &&
['draft', 'reviewing'].includes(row.approvalStatus)
row.approvalStatus === 'reviewing'
"
@click="handleWithdrawApproval(row)"
>
@@ -166,11 +166,11 @@
v-if="
mkEnabled &&
hasPermission('customer_archive_approve') &&
row.approvalStatus === 'reviewing'
['reviewing', 'approved'].includes(row.approvalStatus)
"
@click="handleMkAudit(row)"
>
审核
{{ row.approvalStatus === 'approved' ? '流程' : '审核' }}
</el-link>
<el-link
type="success"
@@ -364,13 +364,8 @@
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="经营范围" prop="businessScope" required>
<el-select
v-model="archiveForm.businessScope"
multiple
filterable
clearable
>
<el-form-item label="经营范围" prop="businessScope">
<el-select v-model="archiveForm.businessScope" multiple filterable clearable>
<el-option
v-for="item in businessScopeOptions"
:key="item.value"
@@ -490,9 +485,8 @@
v-model="deptCascaderValue"
:options="deptTree"
:props="deptCascaderProps"
clearable
filterable
placeholder="请选择 所属组织"
disabled
placeholder="桂物物流集团"
/>
</el-form-item>
</el-col>
@@ -813,20 +807,23 @@
</el-select>
</template>
</el-table-column>
<el-table-column label="文件名称" min-width="180" align="left">
<el-table-column
label="文件名称"
min-width="180"
align="left"
show-overflow-tooltip
class-name="is-ellipsis-link"
>
<template #default="{ row }">
<div
class="qualification-file-name-cell"
:title="row.originalName || row.name || '-'"
>
<span
class="qualification-file-name"
:class="{ 'is-disabled': !row.url }"
@click="row.url && previewQualificationFile(row)"
>
{{ row.originalName || row.name || '-' }}
</span>
</div>
<span
class="attachment-file-name"
:class="{ 'is-disabled': !row.url }"
role="button"
tabindex="0"
@click="row.url && previewQualificationFile(row)"
@keydown.enter="row.url && previewQualificationFile(row)"
@keydown.space.prevent="row.url && previewQualificationFile(row)"
>{{ row.originalName || row.name || '-' }}</span>
</template>
</el-table-column>
<el-table-column label="附件描述" min-width="220">
@@ -1470,9 +1467,14 @@
</template>
<el-table :data="scoreAttachmentFiles" border class="score-material-table">
<el-table-column label="序号" type="index" width="90" align="center" />
<el-table-column label="文件名" min-width="220">
<el-table-column
label="文件名"
min-width="220"
show-overflow-tooltip
class-name="is-ellipsis-link"
>
<template #default="{ row }">
{{ row.originalName || row.name || '-' }}
<span>{{ row.originalName || row.name || '-' }}</span>
</template>
</el-table-column>
<el-table-column label="附件描述" min-width="220">
@@ -1585,6 +1587,8 @@ import ChangeRecordDetailDialog from '@/components/change-record-detail-dialog/m
const customerArchiveListRoute = '/vehicle/customer-archive';
const customerArchiveFormRoute = '/vehicle/customer-archive/form';
const customerArchiveListRefreshKey = 'customer-archive-list-refresh';
/** 客商所属组织固定为顶层组织 */
const FIXED_OWNER_DEPT_NAME = '桂物物流集团';
const createTimeRangeMap = {
createTimeRange: ['createTimeStart', 'createTimeEnd'],
@@ -1814,15 +1818,6 @@ export default {
{ required: true, message: '请输入详细地址', trigger: 'blur' },
{ max: 255, message: '详细地址最多255个字符', trigger: 'blur' },
],
businessScope: [
{
required: true,
type: 'array',
min: 1,
message: '请选择经营范围',
trigger: 'change',
},
],
remark: [{ max: 500, message: '备注最多500个字符', trigger: 'blur' }],
},
contactRules: {
@@ -3197,17 +3192,34 @@ export default {
});
return result;
},
setDefaultTopLevelDept() {
const deptIds = Array.isArray(this.archiveForm.deptId)
? this.archiveForm.deptId
: this.archiveForm.deptId
? [this.archiveForm.deptId]
: [];
const firstTopLevelDept = this.deptTree[0];
if (!this.isArchivePage || this.$route.query.id || deptIds.length || !firstTopLevelDept) {
findTopLevelDeptByName(name) {
const targetName = String(name || '').trim();
if (!targetName) {
return null;
}
return (
(this.deptTree || []).find(item => {
const label = String(item.label || item.title || item.deptName || item.name || '').trim();
return label === targetName;
}) || null
);
},
/**
* 客商所属组织固定为顶层「桂物物流集团」,表单不可编辑。
*/
applyFixedOwnerDept() {
if (!this.isArchivePage || this.readonly) {
return;
}
this.onDeptChange([firstTopLevelDept.value]);
const fixedDept =
this.findTopLevelDeptByName(FIXED_OWNER_DEPT_NAME) || (this.deptTree || [])[0] || null;
if (!fixedDept) {
return;
}
this.onDeptChange([fixedDept.value]);
},
setDefaultTopLevelDept() {
this.applyFixedOwnerDept();
},
onDeptChange(value) {
// 级联单选:value 为根到选中节点的 ID 路径,取末级作为客商所属组织
@@ -4258,6 +4270,7 @@ export default {
this.ocrQualificationUploadFiles = [];
this.selectedQualificationFiles = [];
if (this.isPublicViewPage) this.ensurePublicViewOptions(this.archiveForm);
this.applyFixedOwnerDept();
this.archiveBox = true;
this.loadChangeRecords();
if (this.reviewMode) this.openReviewScore();
@@ -4275,6 +4288,7 @@ export default {
this.qualificationUploadFiles = [];
this.ocrQualificationUploadFiles = [];
this.selectedQualificationFiles = [];
this.applyFixedOwnerDept();
this.archiveBox = true;
},
resetArchive() {
@@ -4318,6 +4332,8 @@ export default {
return true;
},
normalizeArchive() {
// 提交前再次固定所属组织,防止被绕过
this.applyFixedOwnerDept();
const archive = JSON.parse(JSON.stringify(this.archiveForm));
if (archive.businessTermType === '长期') {
archive.businessEndDate = null;
@@ -5480,40 +5496,6 @@ export default {
font-weight: 400;
}
.qualification-file-name-cell {
display: block;
width: 100%;
min-width: 0;
overflow: hidden;
text-align: left;
text-overflow: ellipsis;
white-space: nowrap;
}
.qualification-file-name {
display: block;
width: 100%;
overflow: hidden;
text-overflow: ellipsis;
vertical-align: middle;
white-space: nowrap;
cursor: pointer;
color: #606266;
transition: color 0.2s ease;
&:hover {
color: #409eff;
}
&.is-disabled {
cursor: default;
color: #606266;
&:hover {
color: #606266;
}
}
}
.qualification-upload-bar {
display: flex;
@@ -5567,7 +5549,7 @@ export default {
padding: 8px 36px 0;
:deep(.el-form-item) {
margin-bottom: 14px;
margin-bottom: 24px;
}
:deep(.el-form-item__label) {
@@ -5695,7 +5677,7 @@ export default {
max-width: 620px;
:deep(.el-form-item) {
margin-bottom: 14px;
margin-bottom: 24px;
}
:deep(.el-input) {
@@ -5911,6 +5893,6 @@ export default {
margin-bottom: 0;
}
.el-form-item {
margin-bottom: 14px !important;
//margin-bottom: 24px !important;
}
</style>