✨ MK公开页、预结算体验优化、地图选址与认证密码规则完善
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
<template>
|
||||
<basic-container class="project-apply-page">
|
||||
<basic-container class="project-apply-page" :class="{ 'is-public-view': isPublicViewPage }">
|
||||
<avue-crud
|
||||
v-if="!isProjectFormPage"
|
||||
:option="tableOption"
|
||||
@@ -784,6 +784,7 @@
|
||||
</el-form>
|
||||
|
||||
<div
|
||||
v-if="!isPublicViewPage"
|
||||
class="project-apply-dialog__footer"
|
||||
:class="{ 'project-apply-dialog__footer--change': isChangeDialog }"
|
||||
>
|
||||
@@ -909,12 +910,29 @@
|
||||
/>
|
||||
</div>
|
||||
</el-dialog>
|
||||
|
||||
<el-dialog
|
||||
v-model="publicCustomerVisible"
|
||||
title="查看客商档案"
|
||||
append-to-body
|
||||
destroy-on-close
|
||||
width="92%"
|
||||
top="4vh"
|
||||
class="project-apply-public-customer-dialog"
|
||||
>
|
||||
<customer-archive
|
||||
v-if="publicCustomerVisible"
|
||||
:embedded-public-id="publicCustomerId"
|
||||
/>
|
||||
</el-dialog>
|
||||
</basic-container>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { exportBlob } from '@/api/common';
|
||||
import { defineAsyncComponent } from 'vue';
|
||||
import * as api from '@/api/business/project-apply';
|
||||
import { getMkPublicDetail } from '@/api/mk-process';
|
||||
import {
|
||||
getList as getCustomerArchiveList,
|
||||
getDetail as getCustomerArchiveDetail,
|
||||
@@ -1045,7 +1063,9 @@ const majorProjectAttachmentTypeOptions = [
|
||||
].map(item => ({ label: item, value: item })).concat(otherAttachmentType);
|
||||
|
||||
export default {
|
||||
name: 'ProjectApply',
|
||||
components: {
|
||||
CustomerArchive: defineAsyncComponent(() => import('@/views/vehicle/customer-archive.vue')),
|
||||
ElImageViewer,
|
||||
OpenFileViewer,
|
||||
PdfPreview,
|
||||
@@ -1239,6 +1259,8 @@ export default {
|
||||
changeRecordDetail: null,
|
||||
changeRecordDetailRows: [],
|
||||
userBox: false,
|
||||
publicCustomerVisible: false,
|
||||
publicCustomerId: '',
|
||||
userPickType: '',
|
||||
userLoading: false,
|
||||
userData: [],
|
||||
@@ -1315,6 +1337,9 @@ export default {
|
||||
isProjectFormPage() {
|
||||
return this.isFormPageInstance;
|
||||
},
|
||||
isPublicViewPage() {
|
||||
return this.$route.path === '/business/project-apply/public-view';
|
||||
},
|
||||
projectFormContainer() {
|
||||
// 表单页实例始终用页面容器,避免 keep-alive 失活时误切弹窗
|
||||
return this.isFormPageInstance ? 'div' : 'el-dialog';
|
||||
@@ -1361,6 +1386,11 @@ export default {
|
||||
},
|
||||
},
|
||||
created() {
|
||||
if (this.isPublicViewPage) {
|
||||
this.isFormPageInstance = true;
|
||||
this.openPublicProjectForm();
|
||||
return;
|
||||
}
|
||||
this.loadDeptOptions();
|
||||
this.loadCargoTypeOptions();
|
||||
this.loadTransportTypeOptions();
|
||||
@@ -1384,6 +1414,7 @@ export default {
|
||||
this.attachmentDocumentPreviewVisible = false;
|
||||
this.attachmentImagePreviewVisible = false;
|
||||
this.userBox = false;
|
||||
this.publicCustomerVisible = false;
|
||||
},
|
||||
buildTableOption() {
|
||||
return {
|
||||
@@ -1406,6 +1437,75 @@ export default {
|
||||
hasPermission(code) {
|
||||
return this.isAdmin || this.validData(this.permission && this.permission[code], false);
|
||||
},
|
||||
openPublicProjectForm() {
|
||||
const id = this.$route.query.id;
|
||||
this.dialogType = 'view';
|
||||
this.dialogReadonly = true;
|
||||
this.projectBox = true;
|
||||
if (!id) {
|
||||
this.$message.error('缺少项目ID');
|
||||
return;
|
||||
}
|
||||
getMkPublicDetail('project-apply', id)
|
||||
.then(res => {
|
||||
const detail = res.data?.data || {};
|
||||
this.applyPublicDictOptions(detail);
|
||||
const displayDetail = { ...detail };
|
||||
delete displayDetail.cargoTypeOptions;
|
||||
delete displayDetail.transportTypeOptions;
|
||||
delete displayDetail.settlementModeOptions;
|
||||
this.applyProjectDetail(displayDetail);
|
||||
})
|
||||
.catch(() => {
|
||||
this.$message.error('项目信息加载失败');
|
||||
});
|
||||
},
|
||||
applyPublicDictOptions(detail = {}) {
|
||||
this.cargoTypeOptions = this.resolvePublicDictOptions(
|
||||
detail.cargoTypeOptions,
|
||||
detail.cargoType
|
||||
);
|
||||
this.transportTypeOptions = this.resolvePublicDictOptions(
|
||||
detail.transportTypeOptions,
|
||||
detail.transportType
|
||||
);
|
||||
this.settlementModeOptions = this.resolvePublicDictOptions(
|
||||
detail.settlementModeOptions,
|
||||
detail.settlementMode
|
||||
);
|
||||
if (detail.businessDeptId) {
|
||||
const label = detail.businessDeptName || String(detail.businessDeptId);
|
||||
this.businessDeptTreeOptions = [{ label, value: detail.businessDeptId }];
|
||||
this.deptOptions = [{ label, rawLabel: label, value: detail.businessDeptId }];
|
||||
}
|
||||
if (detail.undertakeDeptId) {
|
||||
this.platformCompanyOptions = [
|
||||
{
|
||||
label: detail.undertakeDeptName || String(detail.undertakeDeptId),
|
||||
value: detail.undertakeDeptId,
|
||||
},
|
||||
];
|
||||
}
|
||||
},
|
||||
resolvePublicDictOptions(options, currentValue) {
|
||||
const list = Array.isArray(options)
|
||||
? options
|
||||
.filter(item => item && item.value !== undefined && item.value !== null && item.value !== '')
|
||||
.map(item => ({
|
||||
label: item.label || String(item.value),
|
||||
value: item.value,
|
||||
}))
|
||||
: [];
|
||||
if (
|
||||
currentValue !== undefined &&
|
||||
currentValue !== null &&
|
||||
currentValue !== '' &&
|
||||
!list.some(item => String(item.value) === String(currentValue))
|
||||
) {
|
||||
list.unshift({ label: String(currentValue), value: currentValue });
|
||||
}
|
||||
return list;
|
||||
},
|
||||
openProjectFormPage() {
|
||||
const type = this.$route.query.mode || 'add';
|
||||
const id = this.$route.query.id;
|
||||
@@ -2012,6 +2112,11 @@ export default {
|
||||
this.$message.warning('客商档案 ID 为空,无法打开');
|
||||
return;
|
||||
}
|
||||
if (this.isPublicViewPage) {
|
||||
this.publicCustomerId = String(id);
|
||||
this.publicCustomerVisible = true;
|
||||
return;
|
||||
}
|
||||
this.$router.push({
|
||||
path: '/vehicle/customer-archive/form',
|
||||
query: { id: String(id), name: '查看客商档案', view: '1' },
|
||||
@@ -2594,6 +2699,12 @@ export default {
|
||||
this.$message.warning('项目ID为空,无法查看变更详情');
|
||||
return;
|
||||
}
|
||||
if (this.isPublicViewPage) {
|
||||
this.changeRecordDetail = { ...row };
|
||||
this.changeRecordDetailRows = this.buildChangeRecordDetailRows(this.changeRecordDetail);
|
||||
this.changeRecordDetailVisible = true;
|
||||
return;
|
||||
}
|
||||
try {
|
||||
if (!this.transportTypeOptions.length) {
|
||||
await this.loadTransportTypeOptions();
|
||||
@@ -2650,6 +2761,12 @@ export default {
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.project-apply-page.is-public-view {
|
||||
:deep(.el-link) {
|
||||
pointer-events: auto;
|
||||
}
|
||||
}
|
||||
|
||||
.project-apply-form {
|
||||
padding: 0;
|
||||
|
||||
@@ -3019,3 +3136,11 @@ export default {
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
||||
<style lang="scss">
|
||||
.project-apply-public-customer-dialog .el-dialog__body {
|
||||
max-height: 78vh;
|
||||
overflow: auto;
|
||||
padding-top: 8px;
|
||||
}
|
||||
</style>
|
||||
|
||||
Reference in New Issue
Block a user