From d2278826fb9b4b33248f30bb7e937be5fe51c6ed Mon Sep 17 00:00:00 2001 From: owen Date: Tue, 15 Sep 2026 21:31:43 +0800 Subject: [PATCH] ow --- .../FamilyPersonService.auto.cs | 7 ++ .../FamilyTreeService.auto.cs | 15 ++++ .../FolderProfile3.pubxml.user | 2 +- .../views/master/FamilyPersonOperation.vue | 11 +++ .../master/FamilyPersonQuickCreateModal.vue | 2 +- .../src/views/master/FamilyTreeOperation.vue | 77 ++++++++++++------- 6 files changed, 83 insertions(+), 31 deletions(-) diff --git a/CloudBuilder/CloudBuilder.Master.Service/FamilyPersonService.auto.cs b/CloudBuilder/CloudBuilder.Master.Service/FamilyPersonService.auto.cs index b1df944..394370e 100644 --- a/CloudBuilder/CloudBuilder.Master.Service/FamilyPersonService.auto.cs +++ b/CloudBuilder/CloudBuilder.Master.Service/FamilyPersonService.auto.cs @@ -145,6 +145,13 @@ namespace CloudBuilder.Master.Service ObjectCopyHelper.Copy(data.FamilyPerson, d); + var has = new FamilyTreePermissionHelper(service).HasPermission(d.TreeId, d.PersonId); + + if (!has) + { + throw new ValidatedException("您没有修改权限."); + } + repository.UpdateNow(d); return FindByKey(data.FamilyPerson.PersonId); diff --git a/CloudBuilder/CloudBuilder.Master.Service/FamilyTreeService.auto.cs b/CloudBuilder/CloudBuilder.Master.Service/FamilyTreeService.auto.cs index eff6a63..00d67de 100644 --- a/CloudBuilder/CloudBuilder.Master.Service/FamilyTreeService.auto.cs +++ b/CloudBuilder/CloudBuilder.Master.Service/FamilyTreeService.auto.cs @@ -490,6 +490,13 @@ namespace CloudBuilder.Master.Service Validate(data.FamilyTree); + var has = new FamilyTreePermissionHelper(service).HasPermission(d.TreeId, d.AncestorPersonId); + + if (!has) + { + throw new ValidatedException("您没有修改权限."); + } + ObjectCopyHelper.Copy(data.FamilyTree, d); repository.UpdateNow(d); @@ -517,6 +524,14 @@ namespace CloudBuilder.Master.Service { var ent = repository.DetachedEntities.Where(x => x.TreeId == key).FirstOrDefault()!; if (ent == null) return; + + var has = new FamilyTreePermissionHelper(service).HasPermission(ent.TreeId, ent.AncestorPersonId); + + if(!has) + { + throw new ValidatedException("您没有删除权限."); + } + repository.DeleteNow(ent); IRepository repositoryPerson = repository.GetRepository>(); diff --git a/CloudBuilder/CloudBuilder.Web.Entry/Properties/PublishProfiles/FolderProfile3.pubxml.user b/CloudBuilder/CloudBuilder.Web.Entry/Properties/PublishProfiles/FolderProfile3.pubxml.user index 0ff53f6..d76a45b 100644 --- a/CloudBuilder/CloudBuilder.Web.Entry/Properties/PublishProfiles/FolderProfile3.pubxml.user +++ b/CloudBuilder/CloudBuilder.Web.Entry/Properties/PublishProfiles/FolderProfile3.pubxml.user @@ -3,7 +3,7 @@ <_PublishTargetUrl>C:\inetpub\wwwroot\dockwebapi2 - True|2026-09-13T11:02:59.5654245Z||;True|2026-09-10T09:14:56.2914193+08:00||;True|2026-09-09T16:40:16.6461154+08:00||;True|2026-09-08T13:55:23.1502435+08:00||;True|2026-09-08T08:04:53.4279263+08:00||;True|2026-09-07T08:48:17.4682304+08:00||;True|2026-09-04T14:39:08.7878670+08:00||;True|2026-09-04T14:35:48.2937877+08:00||;True|2026-09-04T11:45:16.1372876+08:00||;True|2026-09-04T11:42:59.9356436+08:00||;True|2026-09-03T16:05:52.5270232+08:00||;True|2026-09-03T14:52:56.8559144+08:00||;True|2026-09-02T11:08:23.8720038+08:00||;True|2026-09-02T10:58:16.8081797+08:00||;True|2026-08-26T13:34:12.3805892+08:00||;True|2026-08-25T08:31:30.7787234+08:00||;True|2026-08-20T13:10:46.4725468+08:00||;True|2026-08-20T13:10:28.3142576+08:00||;True|2026-08-19T16:10:27.3362887+08:00||;True|2026-08-19T16:01:12.6234971+08:00||;True|2026-08-19T15:42:46.6576265+08:00||;True|2026-08-19T13:39:59.9363522+08:00||;True|2026-08-19T13:36:53.0379313+08:00||;True|2026-08-19T13:31:36.0841398+08:00||;True|2026-08-19T11:44:37.5319626+08:00||;True|2026-08-19T09:36:45.6000047+08:00||;True|2026-08-19T09:34:36.8468631+08:00||;True|2026-08-19T08:35:41.2202300+08:00||;True|2026-08-18T16:20:59.0170916+08:00||; + True|2026-09-15T12:44:46.6559899Z||;True|2026-09-13T19:02:59.5654245+08:00||;True|2026-09-10T09:14:56.2914193+08:00||;True|2026-09-09T16:40:16.6461154+08:00||;True|2026-09-08T13:55:23.1502435+08:00||;True|2026-09-08T08:04:53.4279263+08:00||;True|2026-09-07T08:48:17.4682304+08:00||;True|2026-09-04T14:39:08.7878670+08:00||;True|2026-09-04T14:35:48.2937877+08:00||;True|2026-09-04T11:45:16.1372876+08:00||;True|2026-09-04T11:42:59.9356436+08:00||;True|2026-09-03T16:05:52.5270232+08:00||;True|2026-09-03T14:52:56.8559144+08:00||;True|2026-09-02T11:08:23.8720038+08:00||;True|2026-09-02T10:58:16.8081797+08:00||;True|2026-08-26T13:34:12.3805892+08:00||;True|2026-08-25T08:31:30.7787234+08:00||;True|2026-08-20T13:10:46.4725468+08:00||;True|2026-08-20T13:10:28.3142576+08:00||;True|2026-08-19T16:10:27.3362887+08:00||;True|2026-08-19T16:01:12.6234971+08:00||;True|2026-08-19T15:42:46.6576265+08:00||;True|2026-08-19T13:39:59.9363522+08:00||;True|2026-08-19T13:36:53.0379313+08:00||;True|2026-08-19T13:31:36.0841398+08:00||;True|2026-08-19T11:44:37.5319626+08:00||;True|2026-08-19T09:36:45.6000047+08:00||;True|2026-08-19T09:34:36.8468631+08:00||;True|2026-08-19T08:35:41.2202300+08:00||;True|2026-08-18T16:20:59.0170916+08:00||; \ No newline at end of file diff --git a/WebVue/src/views/master/FamilyPersonOperation.vue b/WebVue/src/views/master/FamilyPersonOperation.vue index bb759e4..5b304a4 100644 --- a/WebVue/src/views/master/FamilyPersonOperation.vue +++ b/WebVue/src/views/master/FamilyPersonOperation.vue @@ -529,6 +529,17 @@ const onSearch = async () => { ? dayjs(data.value.FamilyPerson.DeathDate) : null; hasData.value = true; + + // 无权限且未公开(Privacy='N'):强制回到查看模式,只显示基本资料 + if (readonlyBasicOnly.value && mode.value == "amend") { + mode.value = "view"; + isEdit.value = false; + notification.info({ + message: "系统提示:", + description: "该族员资料未公开,您仅有查看基本资料的权限", + placement: "topRight", + }); + } }; const onReset = () => { diff --git a/WebVue/src/views/master/FamilyPersonQuickCreateModal.vue b/WebVue/src/views/master/FamilyPersonQuickCreateModal.vue index 892bec5..ea01e6b 100644 --- a/WebVue/src/views/master/FamilyPersonQuickCreateModal.vue +++ b/WebVue/src/views/master/FamilyPersonQuickCreateModal.vue @@ -91,7 +91,7 @@ const visible = computed({ const { width } = useWindowSize(); const { getPolicyOptionsComputed } = useLocalePolicy(); -const genderOptions = getPolicyOptionsComputed("GenderPolicy") as SelectOption[]; +const genderOptions = getPolicyOptionsComputed("GenderPolicy"); const surnameInputRef = ref(null); const saving = ref(false); diff --git a/WebVue/src/views/master/FamilyTreeOperation.vue b/WebVue/src/views/master/FamilyTreeOperation.vue index 68643c0..77113b6 100644 --- a/WebVue/src/views/master/FamilyTreeOperation.vue +++ b/WebVue/src/views/master/FamilyTreeOperation.vue @@ -209,7 +209,7 @@ 当前? {{ o.DisplayName - }} + }} {{ getPolicyText(yesNoPolicy, record.IsCurrent) || "-" @@ -315,8 +315,7 @@
- +
@@ -730,11 +729,11 @@ onMounted(() => { if (treeId.value && treeId.value.trim().length > 0) { onSearch(); } - isCreate.value=false; + isCreate.value = false; if (mode.value && mode.value == "create") { onCreate(); isEdit.value = true; - isCreate.value=true; + isCreate.value = true; } else if (mode.value && mode.value == "amend") { isEdit.value = true; } @@ -903,33 +902,53 @@ const onChartSelectChild = async (personId: string) => { }; const onSearch = async () => { - if (!treeId.value || treeId.value.trim().length == 0) { - notification.info({ - message: "系统提示:", - description: "请输入族谱编号", - placement: "topRight", + try { + loading.value = true; + if (!treeId.value || treeId.value.trim().length == 0) { + notification.info({ + message: "系统提示:", + description: "请输入族谱编号", + placement: "topRight", + }); + hasData.value = false; + return; + } + + data.value = await familyTreeService.FindByCurrentPerson({ + key: treeId.value.trim(), + personId: data.value.CurrentPerson.FamilyPerson.PersonId, }); - hasData.value = false; - return; + + if (data.value.FamilyTree == null) { + notification.info({ + message: "系统提示:", + description: "记录不存在", + placement: "topRight", + }); + data.value = new FamilyTreeData(); + hasData.value = false; + return; + } + + hasData.value = true; + + // 无修改权限:强制回到查看模式 + if (!data.value.IsCanAmend && mode.value == "amend") { + mode.value = "view"; + isEdit.value = false; + notification.info({ + message: "系统提示:", + description: "您没有该族谱的修改权限", + placement: "topRight", + }); + } + } catch (error) { + loading.value = false; + console.log(error); } - - data.value = await familyTreeService.FindByCurrentPerson({ - key: treeId.value.trim(), - personId: data.value.CurrentPerson.FamilyPerson.PersonId, - }); - - if (data.value.FamilyTree == null) { - notification.info({ - message: "系统提示:", - description: "记录不存在", - placement: "topRight", - }); - data.value = new FamilyTreeData(); - hasData.value = false; - return; + finally { + loading.value = false; } - - hasData.value = true; }; const onReset = () => {