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() };