修复工作人员资质关联与角色过滤

按安装、配送、运维菜单显式过滤工作人员,锁定资质所有者并使用姓名和角色回显。

扩展工作人员状态与多角色查询,补充权限校验、回归测试、操作日志和项目文档。
This commit is contained in:
czl231
2026-08-11 19:15:53 +08:00
parent 4b1f045806
commit 74c5e34275
20 changed files with 976 additions and 100 deletions

View File

@@ -10,6 +10,10 @@
<span class="detail-label">{{ entry.label }}</span>
<pre v-if="entry.objectValue" class="json-value">{{ entry.value }}</pre>
<IdentityText v-else-if="entry.key === 'identity'" :value="String(entry.value)" />
<div v-else-if="entry.identityValue" class="detail-relation-value">
<span class="detail-value">{{ entry.value }}</span>
<IdentityText :value="entry.identityValue" />
</div>
<span v-else class="detail-value">{{ entry.value }}</span>
</div>
</div>
@@ -71,6 +75,7 @@ type DetailEntry = {
value: string;
objectValue: boolean;
wide: boolean;
identityValue: string;
};
const entries = computed<DetailEntry[]>(() => {
@@ -115,6 +120,8 @@ const entries = computed<DetailEntry[]>(() => {
label: resourceFieldLabel(props.definition, actualKey),
value: display,
objectValue,
identityValue:
field?.staffRelation?.showIdentityCopy && value ? String(value) : '',
wide:
objectValue ||
/(address|terms|content|body|remark|reason|params|args)$/.test(key),
@@ -189,6 +196,10 @@ const collections = computed(() =>
white-space: pre-wrap;
word-break: break-word;
}
.detail-relation-value {
display: grid;
gap: 4px;
}
.json-value {
max-height: 360px;
margin: 0;