diff --git a/uniapp/youjiala/src/common/http.interceptor.ts b/uniapp/youjiala/src/common/http.interceptor.ts index 19422d4..213130a 100644 --- a/uniapp/youjiala/src/common/http.interceptor.ts +++ b/uniapp/youjiala/src/common/http.interceptor.ts @@ -24,6 +24,7 @@ import { } from "@/router/routes"; import { writeDownloadFile } from "@/utils/appFileWrite"; import { copyIntoAppUploadDir } from "@/utils/appUploadFile"; +import { normalizePayloadFileUrls } from "@/utils/fileUrl"; /** * 全项目唯一请求层(基于 uview-pro httpPlugin,main.ts 已注册) @@ -405,7 +406,9 @@ const httpInterceptor: RequestInterceptor = { throw markErrorNotified(new Error(bizMsg)); // 成功:剥壳返回 JSON body(service/* 经 utils/request 直接拿到后端实体对象) - return rawData; + // 响应层统一收口:把后端按请求 Host 拼错的绝对 FileServer 直链(如 UAT 反代未传 Host 时的 + // https://10.1.1.163/FileServer/...)改回可达地址,规则集中在 utils/fileUrl.ts,新展示点无需再逐个改写 + return normalizePayloadFileUrls(rawData); }, }; diff --git a/uniapp/youjiala/src/components/family-tree-chart/family-tree-node.vue b/uniapp/youjiala/src/components/family-tree-chart/family-tree-node.vue index 615cd69..9790d84 100644 --- a/uniapp/youjiala/src/components/family-tree-chart/family-tree-node.vue +++ b/uniapp/youjiala/src/components/family-tree-chart/family-tree-node.vue @@ -12,6 +12,7 @@ */ import type { FamilyCard, FamilyTreeChartApi } from "./types"; import { computed, inject } from "vue"; +import { absoluteFileUrl } from "@/utils/fileUrl"; import { FAMILY_TREE_CHART_API } from "./types"; const props = defineProps({ @@ -80,7 +81,8 @@ function onCardTap(): void { - + @@ -107,7 +109,8 @@ function onCardTap(): void { - + diff --git a/uniapp/youjiala/src/components/family-tree-home/family-tree-home.vue b/uniapp/youjiala/src/components/family-tree-home/family-tree-home.vue index 4b92bf7..b3180c5 100644 --- a/uniapp/youjiala/src/components/family-tree-home/family-tree-home.vue +++ b/uniapp/youjiala/src/components/family-tree-home/family-tree-home.vue @@ -38,6 +38,7 @@ import familyTreeService from "@/service/master/familyTreeService"; import dmsFileService from "@/service/master/dmsFileService"; import { useLoginProfileStore } from "@/stores"; import { chooseFiles } from "@/utils/chooseFiles"; +import { absoluteFileUrl } from "@/utils/fileUrl"; /** ready:组件挂载完成通知(时序口径见文件底部 onMounted 注释) */ const emit = defineEmits<{ (e: "ready"): void }>(); @@ -259,13 +260,17 @@ function canAmendPerson(personId: string): boolean { const spouseMaps = computed(() => data.value.CurrentPerson?.FamilyTreeSpouseMaps ?? []); const childMaps = computed(() => data.value.CurrentPerson?.FamilyTreeChildrenMaps ?? []); -/** 关系行头像查表:Spouse/Children 视图字段不带头像,回查全族人员档案拿 AvatarUrl(谱系图 getAvatar 同款口径) */ +/** + * 关系行头像查表:Spouse/Children 视图字段不带头像,回查全族人员档案拿 AvatarUrl(谱系图 getAvatar 同款口径)。 + * 后端 AvatarUrl 按请求 Host 拼绝对地址,UAT 反代未传原始 Host 时会拼成内网 IP(如 https://10.1.1.163/...), + * 一律过 absoluteFileUrl 归一(H5 锁回公网 origin,App 跟随当前线路)。 + */ function personAvatar(personId?: string): string { if (!personId) { return ""; } const persons = (data.value.CurrentPerson?.FamilyTreePersons ?? []) as any[]; - return persons.find(p => p?.PersonId === personId)?.AvatarUrl ?? ""; + return absoluteFileUrl(persons.find(p => p?.PersonId === personId)?.AvatarUrl ?? ""); } /** 谱系图同款性别判定(family-tree-chart isMale 字面一致):空性别按男兜底 */ @@ -1535,7 +1540,7 @@ defineExpose({ - {{ displayName ? displayName.slice(0, 1) : "?" }} @@ -1564,7 +1569,7 @@ defineExpose({ {{ t("storage.title") }} {{ storagePercentText - }} + }} {{ t("FamilyTreePage.managerTag") - }} + }} @@ -1717,8 +1722,8 @@ defineExpose({ - + @@ -1767,12 +1772,12 @@ defineExpose({ {{ t("FamilyTreePage.currentPerson") - }} + }} - + @@ -1782,7 +1787,7 @@ defineExpose({ {{ personChipText(currentPerson) - }} + }} @@ -1825,12 +1830,12 @@ defineExpose({ {{ t("FamilyTreePage.spouseTitle") - }}{{ spouseMaps.length }} + }}{{ spouseMaps.length }} {{ t("FamilyTreePage.addSpouse") }} {{ t("FamilyTreePage.spouseEmpty") - }} + }} @@ -1866,13 +1871,13 @@ defineExpose({ {{ t("FamilyTreePage.childTitle") - }}{{ childMaps.length }} + }}{{ childMaps.length }} {{ t("FamilyTreePage.addChildBtn") }} {{ t("FamilyTreePage.childEmpty") - }} + }} @@ -1912,7 +1917,7 @@ defineExpose({ {{ t("FamilyTreePage.permPending") - }}{{ pendingPermissions.length }} + }}{{ pendingPermissions.length }} {{ record.UserLocalName || @@ -1936,10 +1941,10 @@ defineExpose({ {{ t("FamilyTreePage.permManager") - }}{{ managerPermissions.length }} + }}{{ managerPermissions.length }} {{ t("FamilyTreePage.permEmpty") - }} + }} {{ record.UserLocalName || record.UserName @@ -2093,8 +2098,8 @@ defineExpose({ - + @@ -2174,7 +2179,7 @@ defineExpose({ {{ record.SpouseSurname }}{{ record.SpouseGenealogyName }} {{ genderText(personGender(record.SpouseId, record.Gender)) - }} + }} @@ -2211,7 +2216,7 @@ defineExpose({ {{ t("FamilyTreePage.marryDate") }} {{ datePart(record.MarryDate) || t("AdminPage.notSetTip") - }} + }} @@ -2227,7 +2232,7 @@ defineExpose({ {{ datePart(record.DivorceDate) || t("AdminPage.notSetTip") - }} + }} @@ -2313,7 +2318,7 @@ defineExpose({ {{ record.ChildrenSurname }}{{ record.ChildrenGenealogyName }} {{ genderText(personGender(record.ChildrenId, record.Gender)) - }} + }} @@ -2424,7 +2429,7 @@ defineExpose({ {{ record.UserLocalName || record.UserName }} {{ record.ManagerIndc === "Y" ? t("FamilyTreePage.managerTag") : t("FamilyTreePage.memberTag") - }} + }} @@ -2449,7 +2454,7 @@ defineExpose({