From e198ab93ed4c1f7d907ace8c1d53e3a7ff5ab9af Mon Sep 17 00:00:00 2001
From: Seany <17074267@qq.com>
Date: Fri, 26 Dec 2025 23:57:51 +0800
Subject: [PATCH] chore
---
.../Atomx.Admin.Client/Models/AreaItem.cs | 11 +
.../Atomx.Admin.Client/Models/AreaSearch.cs | 7 +-
.../Pages/Settings/AreaEdit.razor | 196 +++++++++++++++++-
.../Pages/Settings/AreaList.razor | 55 ++---
.../Pages/Settings/StateProvinceEdit.razor | 2 +-
.../Pages/Settings/StateProvinceList.razor | 13 +-
.../Atomx.Admin/Controllers/AreaController.cs | 53 ++++-
.../Controllers/StateProvinceController.cs | 22 +-
8 files changed, 323 insertions(+), 36 deletions(-)
create mode 100644 Atomx.Admin/Atomx.Admin.Client/Models/AreaItem.cs
diff --git a/Atomx.Admin/Atomx.Admin.Client/Models/AreaItem.cs b/Atomx.Admin/Atomx.Admin.Client/Models/AreaItem.cs
new file mode 100644
index 0000000..3b535dd
--- /dev/null
+++ b/Atomx.Admin/Atomx.Admin.Client/Models/AreaItem.cs
@@ -0,0 +1,11 @@
+using Atomx.Common.Entities;
+
+namespace Atomx.Admin.Client.Models
+{
+ public class AreaItem : Area
+ {
+ public string CountryName { get; set; } = string.Empty;
+ public string StateProvinceName { get; set; } = string.Empty;
+
+ }
+}
diff --git a/Atomx.Admin/Atomx.Admin.Client/Models/AreaSearch.cs b/Atomx.Admin/Atomx.Admin.Client/Models/AreaSearch.cs
index dd5d875..0bde799 100644
--- a/Atomx.Admin/Atomx.Admin.Client/Models/AreaSearch.cs
+++ b/Atomx.Admin/Atomx.Admin.Client/Models/AreaSearch.cs
@@ -1,8 +1,11 @@
-namespace Atomx.Admin.Client.Models
+using System.Runtime.Serialization;
+
+namespace Atomx.Admin.Client.Models
{
public class AreaSearch : BaseSearch
{
- public long CountryId { get; set; }
+ [IgnoreDataMember]
+ public long? CountryId { get; set; }
public long StateProvinceId { get; set; }
public string Name { get; set; } = string.Empty;
}
diff --git a/Atomx.Admin/Atomx.Admin.Client/Pages/Settings/AreaEdit.razor b/Atomx.Admin/Atomx.Admin.Client/Pages/Settings/AreaEdit.razor
index 1182801..6bbd559 100644
--- a/Atomx.Admin/Atomx.Admin.Client/Pages/Settings/AreaEdit.razor
+++ b/Atomx.Admin/Atomx.Admin.Client/Pages/Settings/AreaEdit.razor
@@ -1,5 +1,199 @@
-
AreaEdit
+@page "/area/create/{countryId:long}/{stateProvinceId:long}"
+@page "/area/edit/{countryId:long}/{stateProvinceId:long}/{id:long}"
+@page "/{locale}/area/create/{countryId:long}/{stateProvinceId:long}"
+@page "/{locale}/area/create/{countryId:long}/{stateProvinceId:long}/{id:long}"
+
+@inject ILogger Logger
+@attribute [Authorize]
+
+
+
+
+ 管理后台
+ 系统配置
+ 国家管理
+ 州/省管理
+
+
+
+
+
+
+
+
+
+
+
@code {
+ [Parameter]
+ public string Locale { get; set; } = string.Empty;
+ [Parameter]
+ public long CountryId { get; set; }
+ [Parameter]
+ public long StateProvinceId { get; set; }
+ [Parameter]
+ public long Id { get; set; }
+
+ [SupplyParameterFromForm]
+ StateProvinceModel model { get; set; } = new();
+ Form editform = null!;
+ List languageList = new();
+ Country country = new();
+ List stateProvinceList = new();
+ StateProvinceLocalizedModel stateProvince = new();
+ bool pageLoading = false;
+ bool saving = false;
+
+ protected override void OnInitialized()
+ {
+ base.OnInitialized();
+ }
+
+ protected override void OnParametersSet()
+ {
+ model.CountryId = CountryId;
+
+ _ = LoadLanguage();
+ _ = LoadCountry();
+ _ = LoadStateProvince();
+ if (Id > 0)
+ {
+ LoadData();
+ }
+ base.OnParametersSet();
+ }
+
+ async Task LoadCountry()
+ {
+ var url = $"/api/country/{CountryId}";
+ var apiResult = await HttpService.Get>(url);
+ if (apiResult.Success)
+ {
+ if (apiResult.Data != null)
+ {
+ country = apiResult.Data;
+ StateHasChanged();
+ }
+ else
+ {
+ Navigation.NavigateTo($"/country/list");
+ }
+ }
+ }
+
+ async Task LoadStateProvince()
+ {
+ var url = $"/api/stateprovince/select/{CountryId}";
+ var apiResult = await HttpService.Get>>(url);
+ if (apiResult.Success)
+ {
+ if (apiResult.Data != null)
+ {
+ stateProvinceList = apiResult.Data;
+ StateHasChanged();
+ }
+ else
+ {
+ Navigation.NavigateTo($"/country/list");
+ }
+ stateProvinceList.Insert(0, new KeyValue() { Key = "0", Value = "请选择州/省" });
+ }
+ }
+
+ async Task LoadLanguage()
+ {
+ var url = $"/api/language/enabled";
+ var apiResult = await HttpService.Get>>(url);
+ if (apiResult.Success)
+ {
+ if (apiResult.Data == null)
+ {
+ languageList = new List();
+ }
+ else
+ {
+ languageList = apiResult.Data;
+ languageList.Insert(0, new KeyValue() { Key = "0", Value = "标准" });
+ }
+
+
+ StateHasChanged();
+ }
+ }
+
+ async void LoadData()
+ {
+ pageLoading = true;
+ var url = $"/api/stateprovince/detail?id={Id}";
+ var apiResult = await HttpService.Get>(url);
+ if (apiResult.Success)
+ {
+ if (apiResult.Data == null)
+ {
+ Navigation.NavigateTo($"/country/list");
+ }
+ else
+ {
+ stateProvince = apiResult.Data;
+ model = apiResult.Data.Adapt();
+ }
+ }
+ else
+ {
+ Navigation.NavigateTo($"/country/list");
+ }
+
+ pageLoading = false;
+ StateHasChanged();
+ }
+
+ async void OnFormFinishAsync()
+ {
+ if (editform.Validate())
+ {
+ saving = true;
+ var url = $"api/stateprovince/save";
+ var result = new ApiResult();
+ result = await HttpService.Post>(url, model);
+
+
+ if (result.Code == (int)ResultCode.Success)
+ {
+ saving = false;
+ await ModalService.InfoAsync(new ConfirmOptions() { Title = "提示", Content = "数据提交成功!" });
+ Navigation.NavigateTo($"/stateprovince/list/{CountryId}");
+ }
+ else
+ {
+ saving = false;
+ await ModalService.ErrorAsync(new ConfirmOptions() { Title = "服务异常", Content = result.Message });
+ }
+ }
+ }
}
diff --git a/Atomx.Admin/Atomx.Admin.Client/Pages/Settings/AreaList.razor b/Atomx.Admin/Atomx.Admin.Client/Pages/Settings/AreaList.razor
index 2a47eb9..9e886ca 100644
--- a/Atomx.Admin/Atomx.Admin.Client/Pages/Settings/AreaList.razor
+++ b/Atomx.Admin/Atomx.Admin.Client/Pages/Settings/AreaList.razor
@@ -5,23 +5,26 @@
-
+
- Home
- 系统配置
- 国家管理
+ 管理后台
+ 系统配置
+ 国家管理
+ 州/省管理
-
+