diff --git a/Atomx.Admin/Atomx.Admin.Client/Pages/Settings/AreaEdit.razor b/Atomx.Admin/Atomx.Admin.Client/Pages/Settings/AreaEdit.razor
index 02b826d..f8e304f 100644
--- a/Atomx.Admin/Atomx.Admin.Client/Pages/Settings/AreaEdit.razor
+++ b/Atomx.Admin/Atomx.Admin.Client/Pages/Settings/AreaEdit.razor
@@ -26,21 +26,8 @@
-
-
-
-
-
+
+
@@ -79,8 +66,9 @@
Form editform = null!;
List languageList = new();
Country country = new();
- List stateProvinceList = new();
- StateProvinceLocalizedModel stateProvince = new();
+ List stateProvinceTrees = new();
+ AreaLocalizedModel area = new();
+ string cities = string.Empty;
bool pageLoading = false;
bool saving = false;
@@ -95,7 +83,7 @@
_ = LoadLanguage();
_ = LoadCountry();
- _ = LoadStateProvince();
+ _ = LoadStateProvinceAndCities();
if (Id > 0)
{
LoadData();
@@ -121,41 +109,22 @@
}
}
- async Task LoadStateProvince()
+ async Task LoadStateProvinceAndCities()
{
- var url = $"/api/stateprovince/select/{CountryId}";
- var apiResult = await HttpService.Get>>(url);
+ var url = $"/api/stateprovince/tree/{CountryId}";
+ var apiResult = await HttpService.Get>>(url);
if (apiResult.Success)
{
if (apiResult.Data != null)
{
- stateProvinceList = apiResult.Data;
+ stateProvinceTrees = apiResult.Data.Adapt>();
StateHasChanged();
}
else
{
Navigation.NavigateTo($"/country/list");
}
- stateProvinceList.Insert(0, new KeyValue() { Key = "0", Value = "请选择州/省" });
- }
- }
-
- async Task LoadStateProvince(long id)
- {
- 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 = "请选择州/省" });
+ // stateProvinceTrees.Insert(0, new KeyValue() { Key = "0", Value = "请选择州/省" });
}
}
@@ -172,7 +141,7 @@
else
{
languageList = apiResult.Data;
- languageList.Insert(0, new KeyValue() { Key = "0", Value = "标准" });
+ languageList.Insert(0, new KeyValue() { Label = "0", Value = "标准" });
}
@@ -184,7 +153,7 @@
{
pageLoading = true;
var url = $"/api/stateprovince/detail?id={Id}";
- var apiResult = await HttpService.Get>(url);
+ var apiResult = await HttpService.Get>(url);
if (apiResult.Success)
{
if (apiResult.Data == null)
@@ -193,8 +162,16 @@
}
else
{
- stateProvince = apiResult.Data;
- model = apiResult.Data.Adapt();
+ area = apiResult.Data;
+ model = apiResult.Data.Adapt();
+ if (model.ParentId > 0)
+ {
+ cities = $"{model.StateProvinceId},{model.ParentId}";
+ }
+ else if (model.StateProvinceId > 0)
+ {
+ cities = $"{model.StateProvinceId}";
+ }
}
}
else
@@ -206,6 +183,16 @@
StateHasChanged();
}
+ void OnCitiesChange(CascaderNode[] selectedNodes)
+ {
+ model.StateProvinceId = long.Parse(selectedNodes.First().Value.ToString() ?? "0");
+ model.ParentId = long.Parse(selectedNodes.Last().Value.ToString() ?? "0");
+ if (model.StateProvinceId == model.ParentId)
+ {
+ model.ParentId = 0;
+ }
+ }
+
async void OnFormFinishAsync()
{
if (editform.Validate())
diff --git a/Atomx.Admin/Atomx.Admin.Client/Pages/Settings/CountryEdit.razor b/Atomx.Admin/Atomx.Admin.Client/Pages/Settings/CountryEdit.razor
index 3277f6a..226848a 100644
--- a/Atomx.Admin/Atomx.Admin.Client/Pages/Settings/CountryEdit.razor
+++ b/Atomx.Admin/Atomx.Admin.Client/Pages/Settings/CountryEdit.razor
@@ -29,7 +29,7 @@
*@
@foreach (var item in languageList)
{
-
+
@item.Value
@@ -118,7 +118,7 @@
else
{
languageList = apiResult.Data;
- languageList.Insert(0, new KeyValue() { Key = "0", Value = "标准" });
+ languageList.Insert(0, new KeyValue() { Label = "0", Value = "标准" });
}
diff --git a/Atomx.Admin/Atomx.Admin.Client/Pages/Settings/StateProvinceEdit.razor b/Atomx.Admin/Atomx.Admin.Client/Pages/Settings/StateProvinceEdit.razor
index abe9c0b..e9dc070 100644
--- a/Atomx.Admin/Atomx.Admin.Client/Pages/Settings/StateProvinceEdit.razor
+++ b/Atomx.Admin/Atomx.Admin.Client/Pages/Settings/StateProvinceEdit.razor
@@ -114,7 +114,7 @@
else
{
languageList = apiResult.Data;
- languageList.Insert(0, new KeyValue() { Key = "0", Value = "标准" });
+ languageList.Insert(0, new KeyValue() { Label = "0", Value = "标准" });
}
diff --git a/Atomx.Admin/Atomx.Admin/Controllers/LanguageController.cs b/Atomx.Admin/Atomx.Admin/Controllers/LanguageController.cs
index 7d3b009..2fb29d1 100644
--- a/Atomx.Admin/Atomx.Admin/Controllers/LanguageController.cs
+++ b/Atomx.Admin/Atomx.Admin/Controllers/LanguageController.cs
@@ -65,7 +65,7 @@ namespace Atomx.Admin.Controllers
var data = await _cacheService.GetLanguages();
- var list = data.Where(p => p.Enabled).Select(p => new KeyValue() { Key = p.Id.ToString(), Value = p.Name }).ToList();
+ var list = data.Where(p => p.Enabled).Select(p => new KeyValue() { Label = p.Id.ToString(), Value = p.Name }).ToList();
result = result.IsSuccess(list);
diff --git a/Atomx.Admin/Atomx.Admin/Controllers/StateProvinceController.cs b/Atomx.Admin/Atomx.Admin/Controllers/StateProvinceController.cs
index 2a39a18..3cc0e63 100644
--- a/Atomx.Admin/Atomx.Admin/Controllers/StateProvinceController.cs
+++ b/Atomx.Admin/Atomx.Admin/Controllers/StateProvinceController.cs
@@ -80,7 +80,7 @@ namespace Atomx.Admin.Controllers
var query = from p in _dbContext.StateProvinces
where p.CountryId == countryId && p.Enabled
select p;
- list = query.OrderByDescending(p => p.DisplayOrder).Select(p => new KeyValue() { Key = p.Id.ToString(), Value = p.Name }).ToList();
+ list = query.OrderByDescending(p => p.DisplayOrder).Select(p => new KeyValue() { Label = p.Id.ToString(), Value = p.Name }).ToList();
return new JsonResult(new ApiResult>().IsSuccess(list));
}
diff --git a/Atomx.Common/Models/KeyValue.cs b/Atomx.Common/Models/KeyValue.cs
index 63391ec..41c5ccc 100644
--- a/Atomx.Common/Models/KeyValue.cs
+++ b/Atomx.Common/Models/KeyValue.cs
@@ -2,7 +2,7 @@
{
public class KeyValue
{
- public string Key { get; set; } = string.Empty;
+ public string Label { get; set; } = string.Empty;
public string Value { get; set; } = string.Empty;
}
}
diff --git a/Atomx.Common/Models/KeyValueTree.cs b/Atomx.Common/Models/KeyValueTree.cs
index b0c3dee..12212a7 100644
--- a/Atomx.Common/Models/KeyValueTree.cs
+++ b/Atomx.Common/Models/KeyValueTree.cs
@@ -2,7 +2,7 @@
{
public class KeyValueTree
{
- public string Key { get; set; } = string.Empty;
+ public string Label { get; set; } = string.Empty;
public string Value { get; set; } = string.Empty;
public List Children { get; set; } = new List();
}
diff --git a/Atomx.Data/CacheServices/AreaCacheService.cs b/Atomx.Data/CacheServices/AreaCacheService.cs
index ddadd93..7eae433 100644
--- a/Atomx.Data/CacheServices/AreaCacheService.cs
+++ b/Atomx.Data/CacheServices/AreaCacheService.cs
@@ -87,7 +87,7 @@ namespace Atomx.Data.CacheServices
{
var item = new KeyValueTree
{
- Key = state.Id.ToString(),
+ Label = state.Id.ToString(),
Value = state.Name,
Children = new List()
};
@@ -243,7 +243,7 @@ namespace Atomx.Data.CacheServices
{
var item = new KeyValueTree
{
- Key = area.Id.ToString(),
+ Label = area.Id.ToString(),
Value = area.Name,
Children = new List()
};