diff --git a/Atomx.Admin/Atomx.Admin.Client/Layout/MainLayout.razor b/Atomx.Admin/Atomx.Admin.Client/Layout/MainLayout.razor index e8c7074..b127ea1 100644 --- a/Atomx.Admin/Atomx.Admin.Client/Layout/MainLayout.razor +++ b/Atomx.Admin/Atomx.Admin.Client/Layout/MainLayout.razor @@ -47,6 +47,9 @@ @Body + + + diff --git a/Atomx.Admin/Atomx.Admin.Client/Pages/Home.razor b/Atomx.Admin/Atomx.Admin.Client/Pages/Home.razor index 3a8532b..b0ea21b 100644 --- a/Atomx.Admin/Atomx.Admin.Client/Pages/Home.razor +++ b/Atomx.Admin/Atomx.Admin.Client/Pages/Home.razor @@ -1,24 +1,32 @@ @page "/" +@page "/{locale}/" @attribute [Authorize] + -Home -

Hello, world!

-Welcome to your new app. +

Hello, world!

-
  • - 产品分类 -
  • -
  • - 产品分类编辑 -
  • -
  • - 多语言设置 -
  • -
  • - 多语言资源设置 -
  • -
  • - 角色管理 -
  • \ No newline at end of file + Welcome to your new app. + +
  • + 产品分类 +
  • +
  • + 产品分类编辑 +
  • +
  • + 多语言设置 +
  • +
  • + 多语言资源设置 +
  • +
  • + 角色管理 +
  • +
    + +@code { + [Parameter] + public string Locale { get; set; } = string.Empty; +} \ No newline at end of file diff --git a/Atomx.Admin/Atomx.Admin.Client/Pages/SiteApps/AppVersionList.razor b/Atomx.Admin/Atomx.Admin.Client/Pages/SiteApps/AppVersionList.razor index facab5a..be2b21b 100644 --- a/Atomx.Admin/Atomx.Admin.Client/Pages/SiteApps/AppVersionList.razor +++ b/Atomx.Admin/Atomx.Admin.Client/Pages/SiteApps/AppVersionList.razor @@ -1,9 +1,25 @@ @page "/system/app/version/list" +@page "/{locale}/system/app/version/list" @inject ILogger Logger @attribute [Authorize] +
    + + + + 管理后台 + 系统配置 + 版本管理 + + + +

    App Version List

    +
    +
    +
    @code { - + [Parameter] + public string Locale { get; set; } = string.Empty; } diff --git a/Atomx.Admin/Atomx.Admin.Client/Pages/Systems/AdminList.razor b/Atomx.Admin/Atomx.Admin.Client/Pages/Systems/AdminList.razor index 2b01207..47222be 100644 --- a/Atomx.Admin/Atomx.Admin.Client/Pages/Systems/AdminList.razor +++ b/Atomx.Admin/Atomx.Admin.Client/Pages/Systems/AdminList.razor @@ -1,149 +1,165 @@ @page "/admin/list" +@page "/{locale}/admin/list" @inject ILogger Logger @attribute [Authorize] -管理员账号管理 + + + + 管理后台 + 系统功能 + 版本管理 + + + + +
    + + + + + + -管理员帐号 - - - - - - - - + +
    + + +
    + +
    + +
    +
    + + + + + 帐号列表 +
    + + + +
    +
    +
    + + + + - -
    - - -
    - - - - -
    - -
    - - - 帐号列表 -
    - \ - - -
    -
    -
    - - - - + + + + @if (context.Status == 1) + { + - - - - @if (context.Status == 1) + } + else + { + + } + + + + + + + + + + + + 编辑 + + + + + 删除 + + + + + + + + + + + + + + +
    +
    + + + +
    + + +
    + + + + + + + + + + + @if (context.Id > 0) { - - + + + 重置密码 + + } - else + @if (context.Id == 0) { - + + + } - - - - - - - - - + @if ((context.Id > 0 && context.SetPassword) || context.Id == 0) + { - - 编辑 - - - - - 删除 - - - - - - - - - - - - - - - - + + + + } + @if ((context.Id > 0 && context.SetPassword) || context.Id == 0) + { - - - - - - - - - - - - - @if (context.Id > 0) - { - - - 重置密码 - - - } - @if (context.Id == 0) - { - - - - } - @if ((context.Id > 0 && context.SetPassword) || context.Id == 0) - { - - - - - } - @if ((context.Id > 0 && context.SetPassword) || context.Id == 0) - { - - - - - } - - - 禁用 - 启用 - - - - - - - + + + + } + + + 禁用 + 启用 + + + + + + +
    +
    +
    @code { + [Parameter] + public string Locale { get; set; } = string.Empty; + [SupplyParameterFromQuery] int? Page { get; set; } @@ -276,6 +292,11 @@ } } + private void OnPageChanged(PaginationEventArgs args) + { + OnSearch(args.Page); + } + void OnCreateClick() { model = new(); @@ -325,7 +346,7 @@ { CloseDrawer(); - _= LoadList(); + _ = LoadList(); await ModalService.InfoAsync(new ConfirmOptions() { Title = "提示", Content = "数据提交成功!" }); } else diff --git a/Atomx.Admin/Atomx.Admin.Client/Pages/Systems/Info.razor b/Atomx.Admin/Atomx.Admin.Client/Pages/Systems/Info.razor new file mode 100644 index 0000000..02477c7 --- /dev/null +++ b/Atomx.Admin/Atomx.Admin.Client/Pages/Systems/Info.razor @@ -0,0 +1,8 @@ +@page "/system/info" +@page "/{locale}/system/info" +

    Info

    + +@code { + [Parameter] + public string Locale { get; set; } = string.Empty; +} diff --git a/Atomx.Admin/Atomx.Admin.Client/Pages/Systems/PermissionEdit.razor b/Atomx.Admin/Atomx.Admin.Client/Pages/Systems/PermissionEdit.razor index b2f2e66..174f481 100644 --- a/Atomx.Admin/Atomx.Admin.Client/Pages/Systems/PermissionEdit.razor +++ b/Atomx.Admin/Atomx.Admin.Client/Pages/Systems/PermissionEdit.razor @@ -1,90 +1,103 @@ @page "/system/role/permission/{RoleId:long}" +@page "/{locale}/system/role/permission/{RoleId:long}" @attribute [Authorize] @inject ILogger Logger -权限设置 - - 编辑角色权限 - -
    - - 为角色 @role?.Name 设置权限 - - -
    - @if (!PermissionGroups.Any()) - { -
    -

    暂无权限可设置

    -
    - } - else - { - @foreach (var group in PermissionGroups) - { - - - - - - - @foreach (var permission in group.PermissionItems) + + + + 管理后台 + 系统功能 + 权限编辑 + + + + + + + + 为角色 @role?.Name 设置权限 + + +
    + @if (!PermissionGroups.Any()) + { +
    +

    暂无权限可设置

    +
    + } + else + { + @foreach (var group in PermissionGroups) { - - + + + + @foreach (var permission in group.PermissionItems) + { + + + + } + } - - } - } -
    -
    - -
    +
    + + - -
    + + + -
    -
    + + + + @code { + [Parameter] + public string Locale { get; set; } = string.Empty; + [Parameter] public long RoleId { get; set; } diff --git a/Atomx.Admin/Atomx.Admin.Client/Pages/Systems/RoleList.razor b/Atomx.Admin/Atomx.Admin.Client/Pages/Systems/RoleList.razor index ccf3511..c15d8a1 100644 --- a/Atomx.Admin/Atomx.Admin.Client/Pages/Systems/RoleList.razor +++ b/Atomx.Admin/Atomx.Admin.Client/Pages/Systems/RoleList.razor @@ -1,112 +1,123 @@ @page "/system/role/list" +@page "/{locale}/system/role/list" @attribute [Authorize] @inject ILogger Logger -角色管理 + + + + 管理后台 + 系统功能 + 角色管理 + + + + + + + + 角色列表 +
    + +
    +
    +
    + + + + + + @if (context.IsSystemRole) + { + + } + else + { + + } + + + + @if (context.Enabled) + { + -角色管理 + } + else + { + + } + - -
    - - - 角色列表 -
    - -
    -
    -
    - - - - - - @if (context.IsSystemRole) - { - - } - else - { - - } - - - - @if (context.Enabled) - { - + + + + + + + + + + - } - else - { - - } - + + 编辑 + + @if (!context.IsSystemRole) + { + + + + 删除 + + + } + + + + + + + + + + + + +
    +
    + + + +
    - - - - - - - - - - - - - 编辑 - - @if (!context.IsSystemRole) - { - - - - 删除 - - - } - - - - - - - - - - - - - -
    - - - - - - -
    - - - - - - - - - - - - - - -
    + +
    + + + + + + + + + + + + + + +
    +
    +
    @code { + [Parameter] + public string Locale { get; set; } = string.Empty; + [SupplyParameterFromQuery] int? Page { get; set; } diff --git a/Atomx.Admin/Atomx.Admin.Client/Pages/Systems/Tools.razor b/Atomx.Admin/Atomx.Admin.Client/Pages/Systems/Tools.razor new file mode 100644 index 0000000..b0a5a07 --- /dev/null +++ b/Atomx.Admin/Atomx.Admin.Client/Pages/Systems/Tools.razor @@ -0,0 +1,9 @@ +@page "/system/tools" +@page "/{locale}/system/tools" + +

    Tools

    + +@code { + [Parameter] + public string Locale { get; set; } = string.Empty; +} diff --git a/Atomx.Admin/Atomx.Admin/Controllers/AppVersionController.cs b/Atomx.Admin/Atomx.Admin/Controllers/AppVersionController.cs index be82888..822f432 100644 --- a/Atomx.Admin/Atomx.Admin/Controllers/AppVersionController.cs +++ b/Atomx.Admin/Atomx.Admin/Controllers/AppVersionController.cs @@ -7,6 +7,7 @@ using Atomx.Data; using Atomx.Data.Services; using Atomx.Utils.Extension; using MapsterMapper; +using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using Microsoft.EntityFrameworkCore; @@ -14,6 +15,7 @@ namespace Atomx.Admin.Controllers { [Route("api/[controller]")] [ApiController] + [Authorize] public class AppVersionController : ControllerBase { readonly ILogger _logger; diff --git a/Atomx.Admin/Atomx.Admin/wwwroot/app.css b/Atomx.Admin/Atomx.Admin/wwwroot/app.css index 0f972ff..128c0e0 100644 --- a/Atomx.Admin/Atomx.Admin/wwwroot/app.css +++ b/Atomx.Admin/Atomx.Admin/wwwroot/app.css @@ -30,7 +30,7 @@ a, .btn-link { } .btn:focus, .btn:active:focus, .btn-link.nav-link:focus, .form-control:focus, .form-check-input:focus { - box-shadow: 0 0 0 0.1rem white, 0 0 0 0.25rem #258cfb; + box-shadow: 0 0 0 0.1rem white, 0 0 0 0.25rem #258cfb; } .content { @@ -74,4 +74,90 @@ h1:focus { .form-floating > .form-control-plaintext:focus::placeholder, .form-floating > .form-control:focus::placeholder { text-align: start; -} \ No newline at end of file +} + + + +html, +body, +#root, +#app, +app { + height: 100%; +} + +.colorWeak { + filter: invert(80%); +} + +.ant-layout { + min-height: 100vh; +} + +canvas { + display: block; +} + +body { + text-rendering: optimizeLegibility; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +ul, +ol { + list-style: none; +} + +.action { + cursor: pointer; +} + +.ant-page-header { + background: #f0f2f5; + padding: 12px 24px 12px; +} + +.ant-breadcrumb + .ant-page-header-heading { + padding: 0px; + margin: 0px; +} + +.ant-pro-page-container-children-content { + margin: 0 24px 0; +} + +.ant-page-header-heading-extra { + margin: 0px; +} + +.ant-page-header-content { + padding: 0px; +} + +@media (max-width: 480px) { + .ant-table { + width: 100%; + overflow-x: auto; + } + + .ant-table-thead > tr > th, + .ant-table-tbody > tr > th, + .ant-table-thead > tr > td, + .ant-table-tbody > tr > td { + white-space: pre; + } + + .ant-table-thead > tr > th > span, + .ant-table-tbody > tr > th > span, + .ant-table-thead > tr > td > span, + .ant-table-tbody > tr > td > span { + display: block; + } +} + +@media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) { + body .ant-design-pro > .ant-layout { + min-height: 100vh; + } +} diff --git a/Atomx.Common/Entities/MessageTemplate.cs b/Atomx.Common/Entities/MessageTemplate.cs index 321e7bd..5c23b13 100644 --- a/Atomx.Common/Entities/MessageTemplate.cs +++ b/Atomx.Common/Entities/MessageTemplate.cs @@ -16,6 +16,11 @@ namespace Atomx.Common.Entities [Key] public long Id { get; set; } + /// + /// 语言编码 + /// + public int LanguageId { get; set; } + /// /// 消息模板类型 ///