Add automatic AreaCity catalog bootstrap and region tree management

This commit is contained in:
biss committed 2026-08-29 20:18:44 +08:00
1 parent e39c265f66
commit 6d2b042d46
10 files changed
+42870 -5

No files matched your search

+1
Submodule .areacity-source added at c6c6e35bea.
+1 -1
View File
@@ -25,7 +25,7 @@ dotnet user-secrets remove "Bootstrap:SystemAdministrator:Password" --project sr
## 页面职责
- `/admin/dashboard`:仅显示当前授权范围内的汇总。
- `/admin/regions` 与 `/admin/region-import`:系统管理员导入 AreaCity 四级目录;村/社区使用本地确认目录。
- `/admin/regions`:首次启动会自动导入随应用发布的 AreaCity 四级目录;村/社区使用本地确认目录。`/admin/region-import` 仅用于受控版本更新。
- `/admin/voters` 与 `/admin/voter-import`:按地域维护选民、预校验并确认 Excel 导入。选民列表使用每页 50 条的游标分页,并支持省→市→区县→镇街四级级联筛选。
- `/admin/candidates`:维护候选人资料和服务端允许的状态转换。
- `/admin/roles`:系统管理员授予地域管理员、计票员或监督员角色。
@@ -0,0 +1,4 @@
@using ElectionSystem.Api.Modules.Organization.Domain
<div class="region-tree__node" role="treeitem" aria-expanded="@(Node.Children is not null ? Node.Expanded : null)"><button class="region-tree__toggle" @onclick="() => OnToggle.InvokeAsync(Node)">@((Node.Children is null || Node.Children.Count > 0) ? (Node.Expanded ? "−" : "+") : "·")</button><span class="region-tree__level">@Text(Node.Level)</span><strong>@Node.Name</strong><code>@Node.Code</code></div>
@if (Node.Expanded && Node.Children is { Count: > 0 }) { <div class="region-tree__children" role="group">@foreach (var child in Node.Children) { <RegionNodeView Node="child" OnToggle="OnToggle" /> }</div> }
@code { [Parameter, EditorRequired] public RegionTreeNode Node { get; set; } = default!; [Parameter, EditorRequired] public EventCallback<RegionTreeNode> OnToggle { get; set; } private static string Text(AdministrativeRegionLevel x) => x switch { AdministrativeRegionLevel.Province=>"省",AdministrativeRegionLevel.City=>"市",AdministrativeRegionLevel.District=>"区县",AdministrativeRegionLevel.Township=>"镇街",_=>"村/社区"}; }
Loaded 3 of 10 files, more files were not shown because too many files have changed in this diff. Show more