diff --git a/Atomx.Admin/Atomx.Admin.Client/Models/LocaleResourceModel.cs b/Atomx.Admin/Atomx.Admin.Client/Models/LocaleResourceModel.cs
index a2843a4..2ea1ce8 100644
--- a/Atomx.Admin/Atomx.Admin.Client/Models/LocaleResourceModel.cs
+++ b/Atomx.Admin/Atomx.Admin.Client/Models/LocaleResourceModel.cs
@@ -26,10 +26,5 @@
/// 资源内容值
///
public string Value { get; set; } = string.Empty;
-
- ///
- /// 是否编辑
- ///
- public bool IsEdit { get; set; }
}
}
diff --git a/Atomx.Admin/Atomx.Admin.Client/Models/LocaleResourceSearch.cs b/Atomx.Admin/Atomx.Admin.Client/Models/LocaleResourceSearch.cs
index 85bd8f8..4c01694 100644
--- a/Atomx.Admin/Atomx.Admin.Client/Models/LocaleResourceSearch.cs
+++ b/Atomx.Admin/Atomx.Admin.Client/Models/LocaleResourceSearch.cs
@@ -4,8 +4,8 @@
{
public int LanguageId { get; set; }
- public string? ResourceName { get; set; }
+ public string? Name { get; set; }
- public string? ResourceValue { get; set; }
+ public string? Value { get; set; }
}
}
diff --git a/Atomx.Admin/Atomx.Admin.Client/Pages/Login.razor b/Atomx.Admin/Atomx.Admin.Client/Pages/Login.razor
index 829b996..4879066 100644
--- a/Atomx.Admin/Atomx.Admin.Client/Pages/Login.razor
+++ b/Atomx.Admin/Atomx.Admin.Client/Pages/Login.razor
@@ -39,6 +39,11 @@ else
+
+
+ 设置开发帐号
+
+
@@ -185,6 +190,12 @@ else
await LoginAsync();
}
}
+
+ void setAccount()
+ {
+ login.Account = "admin";
+ login.Password = "admin888";
+ }
}
@* 页面内 JS 辅助:用于在 Server 模式下从浏览器发起 POST 并携带凭证,使浏览器接收 Set-Cookie *@
diff --git a/Atomx.Admin/Atomx.Admin.Client/Pages/Systems/LanguageList.razor b/Atomx.Admin/Atomx.Admin.Client/Pages/Systems/LanguageList.razor
index 9a57458..e43aae2 100644
--- a/Atomx.Admin/Atomx.Admin.Client/Pages/Systems/LanguageList.razor
+++ b/Atomx.Admin/Atomx.Admin.Client/Pages/Systems/LanguageList.razor
@@ -112,10 +112,10 @@
int? PageSize { get; set; }
[SupplyParameterFromForm]
- LanguageSearch search { get; set; } = new();
+ LanguageSearch search { get; set; } = default!;
[SupplyParameterFromForm]
- LanguageModel model { get; set; } = new();
+ LanguageModel model { get; set; } = default!;
Form editform = null!;
Dictionary LanguageCultures = LanguageCulture.Descriptions.ToDictionary();
@@ -127,6 +127,8 @@
protected override void OnInitialized()
{
+ search ??= new LanguageSearch();
+ model ??= new LanguageModel();
base.OnInitialized();
}
diff --git a/Atomx.Admin/Atomx.Admin.Client/Pages/Systems/LocaleResourceList.razor b/Atomx.Admin/Atomx.Admin.Client/Pages/Systems/LocaleResourceList.razor
index 00cd6f3..6c21fb1 100644
--- a/Atomx.Admin/Atomx.Admin.Client/Pages/Systems/LocaleResourceList.razor
+++ b/Atomx.Admin/Atomx.Admin.Client/Pages/Systems/LocaleResourceList.razor
@@ -6,23 +6,129 @@
本地化语言资源
多语言本地资源管理
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@code {
+
+ bool loading = false;
+
[Parameter]
public int Id { get; set; }
- bool loading = false;
+
+ [SupplyParameterFromQuery]
+ int? Page { get; set; }
+
+ [SupplyParameterFromQuery(Name = "size")]
+ int? PageSize { get; set; }
[SupplyParameterFromForm]
LocaleResourceSearch search { get; set; } = default!;
+ Form searchForm = null!;
[SupplyParameterFromForm]
LocaleResourceModel model { get; set; } = default!;
+ Form editform = null!;
+
+ PagingList PagingList = new();
+
+ bool modalVisible = false;
protected override void OnInitialized()
{
- search ??= new LocaleResourceSearch();
- model ??= new LocaleResourceModel();
+ search ??= new LocaleResourceSearch() { LanguageId = Id };
+ model ??= new LocaleResourceModel() { LanguageId = Id };
base.OnInitialized();
}
@@ -35,10 +141,125 @@
{
loading = true;
- var url = $"/api/locale/resource/search/{Id}";
+ var url = $"/api/localeresource/search";
+ var apiResult = await HttpService.GetPagingList(url, search, Page.GetValueOrDefault(1), PageSize.GetValueOrDefault(20));
+ if (apiResult.Success)
+ {
+ if (apiResult.Data != null)
+ {
+ PagingList = apiResult.Data;
+ }
+ }
loading = false;
StateHasChanged();
}
+
+ void OnSearchFinish()
+ {
+ Page = Page.GetValueOrDefault(1) - 1;
+
+ OnSearch(Page.Value);
+ }
+
+ void OnSearchReset()
+ {
+ search = new() { LanguageId = Id };
+ searchForm?.Reset();
+ OnSearchFinish();
+ }
+
+ void OnCreateClick()
+ {
+ model = new() { Culture = LanguageCulture.zhHans };
+ }
+
+ void OnEditClick(LocaleResource data)
+ {
+ this.model = data.Adapt();
+ // drawerVisible = true;
+ }
+
+ async Task HandleDeleteConfirmAsync(MouseEventArgs e, long id)
+ {
+ var url = $"/api/language/delete/{id}";
+ var apiResult = await HttpService.Post>(url, new());
+ if (apiResult.Success)
+ {
+ _ = LoadList();
+ await ModalService.InfoAsync(new ConfirmOptions() { Title = "操作提示", Content = "删除数据成功" });
+ }
+ else
+ {
+ await ModalService.ErrorAsync(new ConfirmOptions() { Title = "操作提示", Content = $"数据删除失败.{apiResult.Message}" });
+ }
+ }
+
+ async Task OnFormFinish()
+ {
+ if (editform.Validate())
+ {
+
+ var url = $"api/language/save";
+ var result = await HttpService.Post>(url, model);
+ if (result.Success)
+ {
+ if (result.Data)
+ {
+
+ // CloseDrawer();
+ _ = LoadList();
+ await ModalService.InfoAsync(new ConfirmOptions() { Title = "提示", Content = "数据提交成功!" });
+ }
+ else
+ {
+ await ModalService.ErrorAsync(new ConfirmOptions() { Title = "服务异常", Content = result.Message });
+ }
+ }
+
+ else
+ {
+ await ModalService.ErrorAsync(new ConfirmOptions() { Title = "服务异常", Content = result.Message });
+ }
+ }
+ }
+
+ private void OnSearch(int page)
+ {
+ var queryString = search.BuildQueryString();
+ if (string.IsNullOrEmpty(queryString))
+ {
+ if (page > 1)
+ {
+ Navigation.NavigateTo($"/system/locale/resource/list/{Id}?page={page}");
+ }
+ else
+ {
+ Navigation.NavigateTo($"/system/locale/resource/list/{Id}");
+ }
+ }
+ else
+ {
+ if (page > 1)
+ {
+ Navigation.NavigateTo($"/system/locale/resource/list/{Id}?page={page}&{queryString}");
+ }
+ else
+ {
+ Navigation.NavigateTo($"/system/locale/resource/list/{Id}?{queryString}");
+ }
+ }
+ }
+
+ private void OnPageChanged(PaginationEventArgs args)
+ {
+ OnSearch(args.Page);
+ }
+
+ void CloseDrawer()
+ {
+ // drawerVisible = false;
+ editform.Reset();
+ }
}
diff --git a/Atomx.Admin/Atomx.Admin/Controllers/LocaleResourceController.cs b/Atomx.Admin/Atomx.Admin/Controllers/LocaleResourceController.cs
index 0f8b72b..d054df3 100644
--- a/Atomx.Admin/Atomx.Admin/Controllers/LocaleResourceController.cs
+++ b/Atomx.Admin/Atomx.Admin/Controllers/LocaleResourceController.cs
@@ -23,7 +23,6 @@ namespace Atomx.Admin.Controllers
private readonly IMapper _mapper;
private readonly JwtSetting _jwtSettings;
private readonly ICacheService _cacheService;
- private readonly LocalizationFileService _localizationFileService;
///
@@ -36,7 +35,7 @@ namespace Atomx.Admin.Controllers
///
///
///
- public LocaleResourceController(ILogger logger, IIdCreatorService idCreator, IIdentityService identityService, DataContext dbContext, IMapper mapper, JwtSetting jwtSettings, ICacheService cacheService, LocalizationFileService localizationFileService)
+ public LocaleResourceController(ILogger logger, IIdCreatorService idCreator, IIdentityService identityService, DataContext dbContext, IMapper mapper, JwtSetting jwtSettings, ICacheService cacheService)
{
_logger = logger;
_idCreator = idCreator;
@@ -45,41 +44,45 @@ namespace Atomx.Admin.Controllers
_mapper = mapper;
_jwtSettings = jwtSettings;
_cacheService = cacheService;
- _localizationFileService = localizationFileService;
}
///
- /// 分页获取多语言资源列表
+ /// 分页获取列表
///
///
- ///
///
+ ///
+ ///
///
///
- [HttpGet("list")]
- public IActionResult GetList(int page, int languageId, string? name, int size = 20)
+ [HttpPost("search")]
+ public IActionResult LanguageList(LocaleResourceSearch search, int page, int size = 20)
{
if (page < 1)
{
page = 1;
}
- var result = new Result>();
+ var result = new ApiResult>();
var list = new PagingList() { Index = page, Size = size };
var query = from p in _dbContext.LocaleResources
- where p.LanguageId == languageId
select p;
-
- if (!string.IsNullOrEmpty(name))
+ if (search.LanguageId > 0)
{
- query = from p in query
- where p.Name.Contains(name)
- select p;
+ query = query.Where(p => p.LanguageId == search.LanguageId);
+ }
+ if (!string.IsNullOrEmpty(search.Name))
+ {
+ query = query.Where(p => p.Name.Contains(search.Name));
+ }
+ if (!string.IsNullOrEmpty(search.Value))
+ {
+ query = query.Where(p => p.Value.Contains(search.Value));
}
list.Count = query.Count();
- list.Items = query.OrderByDescending(p => p.Name).Skip((page - 1) * size).Take(size).ToList();
+ list.Items = query.OrderByDescending(p => p.UpdateTime).Skip((page - 1) * size).Take(size).ToList();
- result.Data = list;
+ result = result.IsSuccess(list);
return new JsonResult(result);
}
@@ -126,7 +129,7 @@ namespace Atomx.Admin.Controllers
result = result.IsFail(ModelState.Values.First().Errors[0].ErrorMessage);
return new JsonResult(result);
}
- if (model.IsEdit)
+ if (model.Id > 0)
{
var data = _dbContext.LocaleResources.SingleOrDefault(p => p.Id == model.Id);
if (data == null)