🐛 修复总单地址回填、结算费用英文项与项目部门提示

常用地址级联回填不再误清空;预结算/正式结算过滤 freightJson 杂项;项目查看态业务部门/平台公司支持悬停完整信息。

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-10-29 14:04:55 +08:00
parent 7ba6620f06
commit a528788409
6 changed files with 284 additions and 51 deletions
+89 -26
View File
@@ -249,35 +249,57 @@
/>
</el-form-item>
<el-form-item label="业务部门" prop="businessDeptId">
<el-cascader
v-model="businessDeptCascaderValue"
:options="businessDeptTreeOptions"
:props="deptCascaderProps"
placeholder="请选择"
filterable
clearable
:disabled="dialogReadonly"
/>
<el-tooltip
placement="top"
:disabled="!shouldShowBusinessDeptTooltip"
:show-after="200"
>
<template #content>
<div class="project-apply-form__field-tooltip">{{ businessDeptTooltipText }}</div>
</template>
<span class="project-apply-form__field-tooltip-trigger">
<el-cascader
v-model="businessDeptCascaderValue"
:options="businessDeptTreeOptions"
:props="deptCascaderProps"
placeholder="请选择"
filterable
clearable
:disabled="dialogReadonly"
/>
</span>
</el-tooltip>
</el-form-item>
<el-form-item label="平台公司" prop="undertakeDeptId">
<el-select
v-model="form.undertakeDeptId"
placeholder="请选择"
multiple
collapse-tags
collapse-tags-tooltip
clearable
filterable
:disabled="dialogReadonly"
@change="handleUndertakeDeptChange"
<el-tooltip
placement="top"
:disabled="!shouldShowUndertakeDeptTooltip"
:show-after="200"
>
<el-option
v-for="item in platformCompanyOptions"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
<template #content>
<div class="project-apply-form__field-tooltip">{{ undertakeDeptTooltipText }}</div>
</template>
<span class="project-apply-form__field-tooltip-trigger">
<el-select
v-model="form.undertakeDeptId"
placeholder="请选择"
multiple
collapse-tags
collapse-tags-tooltip
clearable
filterable
:disabled="dialogReadonly"
@change="handleUndertakeDeptChange"
>
<el-option
v-for="item in platformCompanyOptions"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
</span>
</el-tooltip>
</el-form-item>
<el-form-item label="项目由来" prop="projectSource">
<el-select
@@ -1402,6 +1424,33 @@ export default {
this.handleBusinessDeptChange(this.form.businessDeptId);
},
},
// 查看态禁用控件无 hover,用完整路径/名称做 tooltip
businessDeptTooltipText() {
const pathIds = this.businessDeptCascaderValue || [];
if (pathIds.length && this.businessDeptTreeOptions?.length) {
const labels = [];
let nodes = this.businessDeptTreeOptions;
for (const id of pathIds) {
const node = (nodes || []).find(item => String(item.value) === String(id));
if (!node) break;
labels.push(node.label);
nodes = node.children;
}
if (labels.length) return labels.join(' / ');
}
return String(this.form.businessDeptName || '').trim();
},
undertakeDeptTooltipText() {
const name = String(this.form.undertakeDeptName || '').trim();
if (name) return name;
return this.resolveUndertakeDeptNames(this.parseUndertakeDeptIds(this.form.undertakeDeptId));
},
shouldShowBusinessDeptTooltip() {
return this.dialogReadonly && !!this.businessDeptTooltipText;
},
shouldShowUndertakeDeptTooltip() {
return this.dialogReadonly && !!this.undertakeDeptTooltipText;
},
permissionList() {
return {
addBtn: this.canCreate,
@@ -3272,6 +3321,20 @@ export default {
width: 100%;
}
&__field-tooltip-trigger {
display: block;
width: 100%;
}
&__field-tooltip {
max-width: 480px;
max-height: 240px;
overflow: auto;
white-space: pre-wrap;
word-break: break-word;
line-height: 1.5;
}
:deep(.el-form-item) {
//margin-bottom: 24px;
}