Explorar o código

🤓1、调整分页接口为post 2、统一页面布局 3、增加table封装页面(参数配置页面) 4、其他细节优化

zuohuaijun %!s(int64=3) %!d(string=hai) anos
pai
achega
4a92c876ff
Modificáronse 86 ficheiros con 2826 adicións e 2239 borrados
  1. 4 4
      Admin.NET/Admin.NET.Core/Admin.NET.Core.csproj
  2. 15 20
      Admin.NET/Admin.NET.Core/Admin.NET.Core.xml
  3. 1 1
      Admin.NET/Admin.NET.Core/Service/CodeGen/SysCodeGenService.cs
  4. 1 1
      Admin.NET/Admin.NET.Core/Service/Dict/SysDictDataService.cs
  5. 1 1
      Admin.NET/Admin.NET.Core/Service/Dict/SysDictTypeService.cs
  6. 1 1
      Admin.NET/Admin.NET.Core/Service/File/SysFileService.cs
  7. 1 1
      Admin.NET/Admin.NET.Core/Service/Job/SysJobService.cs
  8. 1 1
      Admin.NET/Admin.NET.Core/Service/Logging/SysLogDiffService.cs
  9. 1 1
      Admin.NET/Admin.NET.Core/Service/Logging/SysLogOpService.cs
  10. 1 1
      Admin.NET/Admin.NET.Core/Service/Logging/SysLogVisService.cs
  11. 1 1
      Admin.NET/Admin.NET.Core/Service/Notice/SysNoticeService.cs
  12. 1 1
      Admin.NET/Admin.NET.Core/Service/OnlineUser/SysOnlineUserService.cs
  13. 1 1
      Admin.NET/Admin.NET.Core/Service/Region/SysRegionService.cs
  14. 1 1
      Admin.NET/Admin.NET.Core/Service/Role/SysRoleService.cs
  15. 2 2
      Admin.NET/Admin.NET.Core/Service/Tenant/SysTenantService.cs
  16. 1 1
      Admin.NET/Admin.NET.Core/Service/User/SysUserService.cs
  17. 0 71
      Admin.NET/Admin.NET.Core/Service/Wechat/SysWechatNotifyService.cs
  18. 1 1
      Admin.NET/Admin.NET.Core/Service/Wechat/SysWechatUserService.cs
  19. 1 0
      Web/src/api-services/api.ts
  20. 16 159
      Web/src/api-services/apis/sys-code-gen-api.ts
  21. 16 71
      Web/src/api-services/apis/sys-dict-data-api.ts
  22. 16 63
      Web/src/api-services/apis/sys-dict-type-api.ts
  23. 295 0
      Web/src/api-services/apis/sys-enum-api.ts
  24. 16 75
      Web/src/api-services/apis/sys-file-api.ts
  25. 16 63
      Web/src/api-services/apis/sys-job-api.ts
  26. 16 67
      Web/src/api-services/apis/sys-log-diff-api.ts
  27. 16 67
      Web/src/api-services/apis/sys-log-op-api.ts
  28. 16 67
      Web/src/api-services/apis/sys-log-vis-api.ts
  29. 16 63
      Web/src/api-services/apis/sys-notice-api.ts
  30. 16 63
      Web/src/api-services/apis/sys-online-user-api.ts
  31. 16 71
      Web/src/api-services/apis/sys-region-api.ts
  32. 16 63
      Web/src/api-services/apis/sys-role-api.ts
  33. 16 63
      Web/src/api-services/apis/sys-tenant-api.ts
  34. 16 79
      Web/src/api-services/apis/sys-user-api.ts
  35. 16 63
      Web/src/api-services/apis/sys-wechat-user-api.ts
  36. 222 0
      Web/src/api-services/apis/sys-wx-open-api.ts
  37. 38 0
      Web/src/api-services/models/add-subscribe-message-template-input.ts
  38. 57 0
      Web/src/api-services/models/admin-result-list-enum-entity.ts
  39. 57 0
      Web/src/api-services/models/admin-result-list-enum-type-output.ts
  40. 134 0
      Web/src/api-services/models/code-gen-input.ts
  41. 26 0
      Web/src/api-services/models/data-item.ts
  42. 38 0
      Web/src/api-services/models/enum-entity.ts
  43. 38 0
      Web/src/api-services/models/enum-type-output.ts
  44. 20 0
      Web/src/api-services/models/index.ts
  45. 68 0
      Web/src/api-services/models/page-dict-data-input.ts
  46. 62 0
      Web/src/api-services/models/page-dict-type-input.ts
  47. 68 0
      Web/src/api-services/models/page-file-input.ts
  48. 62 0
      Web/src/api-services/models/page-job-input.ts
  49. 62 0
      Web/src/api-services/models/page-log-input.ts
  50. 63 0
      Web/src/api-services/models/page-notice-input.ts
  51. 62 0
      Web/src/api-services/models/page-online-user-input.ts
  52. 68 0
      Web/src/api-services/models/page-region-input.ts
  53. 62 0
      Web/src/api-services/models/page-role-input.ts
  54. 62 0
      Web/src/api-services/models/page-tenant-input.ts
  55. 74 0
      Web/src/api-services/models/page-user-input.ts
  56. 39 0
      Web/src/api-services/models/send-subscribe-message-input.ts
  57. 62 0
      Web/src/api-services/models/wechat-user-input.ts
  58. 0 67
      Web/src/assets/styles/main.scss
  59. 62 58
      Web/src/components/table/index.vue
  60. 59 13
      Web/src/components/table/search.vue
  61. 0 1
      Web/src/main.ts
  62. 1 1
      Web/src/stores/themeConfig.ts
  63. 40 5
      Web/src/theme/element.scss
  64. 14 11
      Web/src/types/views.d.ts
  65. 7 8
      Web/src/utils/exportExcel.ts
  66. 8 8
      Web/src/views/system/codeGen/component/genConfigDialog.vue
  67. 31 57
      Web/src/views/system/codeGen/index.vue
  68. 83 62
      Web/src/views/system/config/index.vue
  69. 17 27
      Web/src/views/system/database/index.vue
  70. 17 24
      Web/src/views/system/dict/component/dictDataDialog.vue
  71. 15 24
      Web/src/views/system/dict/index.vue
  72. 27 40
      Web/src/views/system/file/index.vue
  73. 37 44
      Web/src/views/system/job/index.vue
  74. 18 24
      Web/src/views/system/log/difflog/index.vue
  75. 35 39
      Web/src/views/system/log/oplog/index.vue
  76. 19 25
      Web/src/views/system/log/vislog/index.vue
  77. 19 27
      Web/src/views/system/menu/index.vue
  78. 20 27
      Web/src/views/system/notice/index.vue
  79. 6 3
      Web/src/views/system/onlineUser/index.vue
  80. 15 23
      Web/src/views/system/org/index.vue
  81. 15 23
      Web/src/views/system/pos/index.vue
  82. 18 25
      Web/src/views/system/region/index.vue
  83. 17 24
      Web/src/views/system/role/index.vue
  84. 17 24
      Web/src/views/system/tenant/index.vue
  85. 180 294
      Web/src/views/system/user/index.vue
  86. 14 23
      Web/src/views/system/weChatUser/index.vue

+ 4 - 4
Admin.NET/Admin.NET.Core/Admin.NET.Core.csproj

@@ -20,14 +20,14 @@
     <PackageReference Include="DotNetCore.Compile.Environment" Version="3.2.0" />
     <PackageReference Include="DotNetCore.Natasha.CSharp" Version="5.1.0" />
     <PackageReference Include="FluentEmail.Smtp" Version="3.0.2" />
-    <PackageReference Include="Furion.Extras.Authentication.JwtBearer" Version="4.8.7.10" />
-    <PackageReference Include="Furion.Extras.ObjectMapper.Mapster" Version="4.8.7.10" />
-    <PackageReference Include="Furion.Pure" Version="4.8.7.10" />
+    <PackageReference Include="Furion.Extras.Authentication.JwtBearer" Version="4.8.7.11" />
+    <PackageReference Include="Furion.Extras.ObjectMapper.Mapster" Version="4.8.7.11" />
+    <PackageReference Include="Furion.Pure" Version="4.8.7.11" />
     <PackageReference Include="IPTools.China" Version="1.6.0" />
     <PackageReference Include="Lazy.Captcha.Core" Version="2.0.2" />
     <PackageReference Include="Magicodes.IE.Excel" Version="2.7.4.2" />
     <PackageReference Include="Magicodes.IE.Pdf" Version="2.7.4.2" />
-    <PackageReference Include="Microsoft.AspNetCore.Mvc.NewtonsoftJson" Version="6.0.14" />
+    <PackageReference Include="Microsoft.AspNetCore.Mvc.NewtonsoftJson" Version="6.0.15" />
     <PackageReference Include="NEST" Version="7.17.5" />
     <PackageReference Include="NewLife.Redis" Version="5.2.2023.301" />
     <PackageReference Include="OnceMi.AspNetCore.OSS" Version="1.1.9" />

+ 15 - 20
Admin.NET/Admin.NET.Core/Admin.NET.Core.xml

@@ -4940,7 +4940,7 @@
             系统代码生成器服务
             </summary>
         </member>
-        <member name="M:Admin.NET.Core.Service.SysCodeGenService.GetPage(Admin.NET.Core.Service.CodeGenInput)">
+        <member name="M:Admin.NET.Core.Service.SysCodeGenService.Page(Admin.NET.Core.Service.CodeGenInput)">
             <summary>
             获取代码生成分页列表
             </summary>
@@ -5349,7 +5349,7 @@
             系统字典值服务
             </summary>
         </member>
-        <member name="M:Admin.NET.Core.Service.SysDictDataService.GetPage(Admin.NET.Core.Service.PageDictDataInput)">
+        <member name="M:Admin.NET.Core.Service.SysDictDataService.Page(Admin.NET.Core.Service.PageDictDataInput)">
             <summary>
             获取字典值分页列表
             </summary>
@@ -5430,7 +5430,7 @@
             系统字典类型服务
             </summary>
         </member>
-        <member name="M:Admin.NET.Core.Service.SysDictTypeService.GetPage(Admin.NET.Core.Service.PageDictTypeInput)">
+        <member name="M:Admin.NET.Core.Service.SysDictTypeService.Page(Admin.NET.Core.Service.PageDictTypeInput)">
             <summary>
             获取字典类型分页列表
             </summary>
@@ -5607,7 +5607,7 @@
             系统文件服务
             </summary>
         </member>
-        <member name="M:Admin.NET.Core.Service.SysFileService.GetPage(Admin.NET.Core.Service.PageFileInput)">
+        <member name="M:Admin.NET.Core.Service.SysFileService.Page(Admin.NET.Core.Service.PageFileInput)">
             <summary>
             获取文件分页列表
             </summary>
@@ -5802,7 +5802,7 @@
             系统作业任务服务
             </summary>
         </member>
-        <member name="M:Admin.NET.Core.Service.SysJobService.GetPageJobDetail(Admin.NET.Core.Service.PageJobInput)">
+        <member name="M:Admin.NET.Core.Service.SysJobService.PageJobDetail(Admin.NET.Core.Service.PageJobInput)">
             <summary>
             获取作业分页列表
             </summary>
@@ -5920,7 +5920,7 @@
             系统差异日志服务
             </summary>
         </member>
-        <member name="M:Admin.NET.Core.Service.SysLogDiffService.GetPage(Admin.NET.Core.Service.PageLogInput)">
+        <member name="M:Admin.NET.Core.Service.SysLogDiffService.Page(Admin.NET.Core.Service.PageLogInput)">
             <summary>
             获取差异日志分页列表
             </summary>
@@ -5937,7 +5937,7 @@
             系统操作日志服务
             </summary>
         </member>
-        <member name="M:Admin.NET.Core.Service.SysLogOpService.GetPage(Admin.NET.Core.Service.PageLogInput)">
+        <member name="M:Admin.NET.Core.Service.SysLogOpService.Page(Admin.NET.Core.Service.PageLogInput)">
             <summary>
             获取操作日志分页列表
             </summary>
@@ -5960,7 +5960,7 @@
             系统访问日志服务
             </summary>
         </member>
-        <member name="M:Admin.NET.Core.Service.SysLogVisService.GetPage(Admin.NET.Core.Service.PageLogInput)">
+        <member name="M:Admin.NET.Core.Service.SysLogVisService.Page(Admin.NET.Core.Service.PageLogInput)">
             <summary>
             获取访问日志分页列表
             </summary>
@@ -6229,7 +6229,7 @@
             系统通知公告服务
             </summary>
         </member>
-        <member name="M:Admin.NET.Core.Service.SysNoticeService.GetPage(Admin.NET.Core.Service.PageNoticeInput)">
+        <member name="M:Admin.NET.Core.Service.SysNoticeService.Page(Admin.NET.Core.Service.PageNoticeInput)">
             <summary>
             获取通知公告分页列表
             </summary>
@@ -6305,7 +6305,7 @@
             系统在线用户服务
             </summary>
         </member>
-        <member name="M:Admin.NET.Core.Service.SysOnlineUserService.GetPage(Admin.NET.Core.Service.PageOnlineUserInput)">
+        <member name="M:Admin.NET.Core.Service.SysOnlineUserService.Page(Admin.NET.Core.Service.PageOnlineUserInput)">
             <summary>
             获取在线用户分页列表
             </summary>
@@ -6486,7 +6486,7 @@
             系统行政区域服务
             </summary>
         </member>
-        <member name="M:Admin.NET.Core.Service.SysRegionService.GetPage(Admin.NET.Core.Service.PageRegionInput)">
+        <member name="M:Admin.NET.Core.Service.SysRegionService.Page(Admin.NET.Core.Service.PageRegionInput)">
             <summary>
             获取行政区域分页列表
             </summary>
@@ -6683,7 +6683,7 @@
             系统角色服务
             </summary>
         </member>
-        <member name="M:Admin.NET.Core.Service.SysRoleService.GetPage(Admin.NET.Core.Service.PageRoleInput)">
+        <member name="M:Admin.NET.Core.Service.SysRoleService.Page(Admin.NET.Core.Service.PageRoleInput)">
             <summary>
             获取角色分页列表
             </summary>
@@ -6843,7 +6843,7 @@
             系统租户管理服务
             </summary>
         </member>
-        <member name="M:Admin.NET.Core.Service.SysTenantService.GetPage(Admin.NET.Core.Service.PageTenantInput)">
+        <member name="M:Admin.NET.Core.Service.SysTenantService.Page(Admin.NET.Core.Service.PageTenantInput)">
             <summary>
             获取租户分页列表
             </summary>
@@ -7117,7 +7117,7 @@
             系统用户服务
             </summary>
         </member>
-        <member name="M:Admin.NET.Core.Service.SysUserService.GetPage(Admin.NET.Core.Service.PageUserInput)">
+        <member name="M:Admin.NET.Core.Service.SysUserService.Page(Admin.NET.Core.Service.PageUserInput)">
             <summary>
             获取用户分页列表
             </summary>
@@ -7341,11 +7341,6 @@
             服务场景描述,15个字以内
             </summary>
         </member>
-        <member name="T:Admin.NET.Core.Service.SysWechatNotifyService">
-            <summary>
-            微信通知服务
-            </summary>
-        </member>
         <member name="T:Admin.NET.Core.Service.SysWechatPayService">
             <summary>
             微信支付服务
@@ -7429,7 +7424,7 @@
             微信账号服务
             </summary>
         </member>
-        <member name="M:Admin.NET.Core.Service.SysWechatUserService.GetPage(Admin.NET.Core.Service.WechatUserInput)">
+        <member name="M:Admin.NET.Core.Service.SysWechatUserService.Page(Admin.NET.Core.Service.WechatUserInput)">
             <summary>
             获取微信用户列表
             </summary>

+ 1 - 1
Admin.NET/Admin.NET.Core/Service/CodeGen/SysCodeGenService.cs

@@ -34,7 +34,7 @@ public class SysCodeGenService : IDynamicApiController, ITransient
     /// <param name="input"></param>
     /// <returns></returns>
     [DisplayName("获取代码生成分页列表")]
-    public async Task<SqlSugarPagedList<SysCodeGen>> GetPage([FromQuery] CodeGenInput input)
+    public async Task<SqlSugarPagedList<SysCodeGen>> Page(CodeGenInput input)
     {
         return await _db.Queryable<SysCodeGen>()
             .WhereIF(!string.IsNullOrWhiteSpace(input.TableName), u => u.TableName.Contains(input.TableName.Trim()))

+ 1 - 1
Admin.NET/Admin.NET.Core/Service/Dict/SysDictDataService.cs

@@ -20,7 +20,7 @@ public class SysDictDataService : IDynamicApiController, ITransient
     /// <param name="input"></param>
     /// <returns></returns>
     [DisplayName("获取字典值分页列表")]
-    public async Task<SqlSugarPagedList<SysDictData>> GetPage([FromQuery] PageDictDataInput input)
+    public async Task<SqlSugarPagedList<SysDictData>> Page(PageDictDataInput input)
     {
         var code = !string.IsNullOrEmpty(input.Code?.Trim());
         var value = !string.IsNullOrEmpty(input.Value?.Trim());

+ 1 - 1
Admin.NET/Admin.NET.Core/Service/Dict/SysDictTypeService.cs

@@ -22,7 +22,7 @@ public class SysDictTypeService : IDynamicApiController, ITransient
     /// </summary>
     /// <returns></returns>
     [DisplayName("获取字典类型分页列表")]
-    public async Task<SqlSugarPagedList<SysDictType>> GetPage([FromQuery] PageDictTypeInput input)
+    public async Task<SqlSugarPagedList<SysDictType>> Page(PageDictTypeInput input)
     {
         var code = !string.IsNullOrEmpty(input.Code?.Trim());
         var name = !string.IsNullOrEmpty(input.Name?.Trim());

+ 1 - 1
Admin.NET/Admin.NET.Core/Service/File/SysFileService.cs

@@ -38,7 +38,7 @@ public class SysFileService : IDynamicApiController, ITransient
     /// <param name="input"></param>
     /// <returns></returns>
     [DisplayName("获取文件分页列表")]
-    public async Task<SqlSugarPagedList<SysFile>> GetPage([FromQuery] PageFileInput input)
+    public async Task<SqlSugarPagedList<SysFile>> Page(PageFileInput input)
     {
         return await _sysFileRep.AsQueryable()
             .WhereIF(!string.IsNullOrWhiteSpace(input.FileName), u => u.FileName.Contains(input.FileName.Trim()))

+ 1 - 1
Admin.NET/Admin.NET.Core/Service/Job/SysJobService.cs

@@ -29,7 +29,7 @@ public class SysJobService : IDynamicApiController, ITransient
     /// 获取作业分页列表
     /// </summary>
     [DisplayName("获取作业分页列表")]
-    public async Task<SqlSugarPagedList<JobOutput>> GetPageJobDetail([FromQuery] PageJobInput input)
+    public async Task<SqlSugarPagedList<JobOutput>> PageJobDetail(PageJobInput input)
     {
         var jobDetails = await _sysJobDetailRep.AsQueryable()
             .WhereIF(!string.IsNullOrWhiteSpace(input.JobId), u => u.JobId.Contains(input.JobId))

+ 1 - 1
Admin.NET/Admin.NET.Core/Service/Logging/SysLogDiffService.cs

@@ -19,7 +19,7 @@ public class SysLogDiffService : IDynamicApiController, ITransient
     /// <returns></returns>
     [SuppressMonitor]
     [DisplayName("获取差异日志分页列表")]
-    public async Task<SqlSugarPagedList<SysLogDiff>> GetPage([FromQuery] PageLogInput input)
+    public async Task<SqlSugarPagedList<SysLogDiff>> Page(PageLogInput input)
     {
         return await _sysLogDiffRep.AsQueryable()
             .WhereIF(!string.IsNullOrWhiteSpace(input.StartTime.ToString()) && !string.IsNullOrWhiteSpace(input.EndTime.ToString()),

+ 1 - 1
Admin.NET/Admin.NET.Core/Service/Logging/SysLogOpService.cs

@@ -21,7 +21,7 @@ public class SysLogOpService : IDynamicApiController, ITransient
     /// <returns></returns>
     [SuppressMonitor]
     [DisplayName("获取操作日志分页列表")]
-    public async Task<SqlSugarPagedList<SysLogOp>> GetPage([FromQuery] PageLogInput input)
+    public async Task<SqlSugarPagedList<SysLogOp>> Page(PageLogInput input)
     {
         return await _sysLogOpRep.AsQueryable()
             .WhereIF(!string.IsNullOrWhiteSpace(input.StartTime.ToString()) && !string.IsNullOrWhiteSpace(input.EndTime.ToString()),

+ 1 - 1
Admin.NET/Admin.NET.Core/Service/Logging/SysLogVisService.cs

@@ -19,7 +19,7 @@ public class SysLogVisService : IDynamicApiController, ITransient
     /// <returns></returns>
     [SuppressMonitor]
     [DisplayName("获取访问日志分页列表")]
-    public async Task<SqlSugarPagedList<SysLogVis>> GetPage([FromQuery] PageLogInput input)
+    public async Task<SqlSugarPagedList<SysLogVis>> Page(PageLogInput input)
     {
         return await _sysLogVisRep.AsQueryable()
             .WhereIF(!string.IsNullOrWhiteSpace(input.StartTime.ToString()) && !string.IsNullOrWhiteSpace(input.EndTime.ToString()),

+ 1 - 1
Admin.NET/Admin.NET.Core/Service/Notice/SysNoticeService.cs

@@ -32,7 +32,7 @@ public class SysNoticeService : IDynamicApiController, ITransient
     /// <param name="input"></param>
     /// <returns></returns>
     [DisplayName("获取通知公告分页列表")]
-    public async Task<SqlSugarPagedList<SysNotice>> GetPage([FromQuery] PageNoticeInput input)
+    public async Task<SqlSugarPagedList<SysNotice>> Page(PageNoticeInput input)
     {
         return await _sysNoticeRep.AsQueryable()
             .WhereIF(!string.IsNullOrWhiteSpace(input.Title), u => u.Title.Contains(input.Title.Trim()))

+ 1 - 1
Admin.NET/Admin.NET.Core/Service/OnlineUser/SysOnlineUserService.cs

@@ -26,7 +26,7 @@ public class SysOnlineUserService : IDynamicApiController, ITransient
     /// </summary>
     /// <returns></returns>
     [DisplayName("获取在线用户分页列表")]
-    public async Task<SqlSugarPagedList<SysOnlineUser>> GetPage([FromQuery] PageOnlineUserInput input)
+    public async Task<SqlSugarPagedList<SysOnlineUser>> Page(PageOnlineUserInput input)
     {
         return await _sysOnlineUerRep.AsQueryable()
             .WhereIF(!string.IsNullOrWhiteSpace(input.UserName), u => u.UserName.Contains(input.UserName))

+ 1 - 1
Admin.NET/Admin.NET.Core/Service/Region/SysRegionService.cs

@@ -22,7 +22,7 @@ public class SysRegionService : IDynamicApiController, ITransient
     /// <param name="input"></param>
     /// <returns></returns>
     [DisplayName("获取行政区域分页列表")]
-    public async Task<SqlSugarPagedList<SysRegion>> GetPage([FromQuery] PageRegionInput input)
+    public async Task<SqlSugarPagedList<SysRegion>> Page(PageRegionInput input)
     {
         return await _sysRegionRep.AsQueryable()
             .WhereIF(input.Pid > 0, u => u.Pid == input.Pid || u.Id == input.Pid)

+ 1 - 1
Admin.NET/Admin.NET.Core/Service/Role/SysRoleService.cs

@@ -37,7 +37,7 @@ public class SysRoleService : IDynamicApiController, ITransient
     /// <param name="input"></param>
     /// <returns></returns>
     [DisplayName("获取角色分页列表")]
-    public async Task<SqlSugarPagedList<SysRole>> GetPage([FromQuery] PageRoleInput input)
+    public async Task<SqlSugarPagedList<SysRole>> Page(PageRoleInput input)
     {
         return await _sysRoleRep.AsQueryable()
             .WhereIF(!string.IsNullOrWhiteSpace(input.Name), u => u.Name.Contains(input.Name))

+ 2 - 2
Admin.NET/Admin.NET.Core/Service/Tenant/SysTenantService.cs

@@ -52,7 +52,7 @@ public class SysTenantService : IDynamicApiController, ITransient
     /// <param name="input"></param>
     /// <returns></returns>
     [DisplayName("获取租户分页列表")]
-    public async Task<SqlSugarPagedList<TenantOutput>> GetPage([FromQuery] PageTenantInput input)
+    public async Task<SqlSugarPagedList<TenantOutput>> Page(PageTenantInput input)
     {
         return await _sysTenantRep.AsQueryable()
             .LeftJoin<SysUser>((t, u) => t.UserId == u.Id)
@@ -129,7 +129,7 @@ public class SysTenantService : IDynamicApiController, ITransient
     public async Task<int> SetStatus(TenantInput input)
     {
         var tenant = await _sysTenantRep.GetFirstAsync(u => u.Id == input.Id);
-        if (tenant.ConfigId == SqlSugarConst.ConfigId)
+        if (tenant == null || tenant.ConfigId == SqlSugarConst.ConfigId)
             throw Oops.Oh(ErrorCodeEnum.Z1001);
 
         if (!Enum.IsDefined(typeof(StatusEnum), input.Status))

+ 1 - 1
Admin.NET/Admin.NET.Core/Service/User/SysUserService.cs

@@ -34,7 +34,7 @@ public class SysUserService : IDynamicApiController, ITransient
     /// <param name="input"></param>
     /// <returns></returns>
     [DisplayName("获取用户分页列表")]
-    public async Task<SqlSugarPagedList<SysUser>> GetPage([FromQuery] PageUserInput input)
+    public async Task<SqlSugarPagedList<SysUser>> Page(PageUserInput input)
     {
         var orgList = input.OrgId > 0 ? await _sysOrgService.GetChildIdListWithSelfById(input.OrgId) :
             _userManager.SuperAdmin ? null : await _sysOrgService.GetUserOrgIdList(); // 各管理员只能看到自己机构下的用户列表

+ 0 - 71
Admin.NET/Admin.NET.Core/Service/Wechat/SysWechatNotifyService.cs

@@ -1,71 +0,0 @@
-using SKIT.FlurlHttpClient.Wechat.Api.Events;
-
-namespace Admin.NET.Core.Service;
-
-/// <summary>
-/// 微信通知服务
-/// </summary>
-[ApiDescriptionSettings(Order = 250)]
-public class SysWechatNotifyService : IDynamicApiController, ITransient
-{
-    private readonly SqlSugarRepository<SysWechatUser> _sysWechatUserRep;
-    private readonly WechatApiClient _wechatApiClient;
-
-    public SysWechatNotifyService(SqlSugarRepository<SysWechatUser> sysWechatUserRep,
-        WechatApiHttpClient wechatApiHttpClient)
-    {
-        _sysWechatUserRep = sysWechatUserRep;
-        _wechatApiClient = wechatApiHttpClient.CreateWxOpenClient();
-    }
-
-    public string VerifyMessage(string appId, string timestamp, string nonce, string signature, string echoString)
-    {
-        // 验证服务器推送
-        // 文档:https://developers.weixin.qq.com/doc/offiaccount/Basic_Information/Access_Overview.html
-
-        bool valid = _wechatApiClient.VerifyEventSignatureForEcho(callbackTimestamp: timestamp, callbackNonce: nonce, callbackSignature: signature);
-        if (!valid)
-        {
-            return "fail";
-        }
-
-        return echoString;
-    }
-
-    public async Task<string> ReceiveMessage(string appId)
-    {
-        // 接收服务器推送
-        // 文档:https://developers.weixin.qq.com/doc/offiaccount/Message_Management/Receiving_event_pushes.html
-
-        using var reader = new StreamReader(App.HttpContext.Request.Body, Encoding.UTF8);
-        string content = await reader.ReadToEndAsync();
-
-        var msgType = _wechatApiClient.DeserializeEventFromXml(content).MessageType?.ToUpper();
-        switch (msgType)
-        {
-            case "TEXT":
-                {
-                    var eventModel = _wechatApiClient.DeserializeEventFromXml<TextMessageEvent>(content);
-                    //_logger.LogInformation("接收到微信推送的文本消息,消息内容:{0}", eventModel.Content);
-                    // 后续处理略
-                }
-                break;
-
-            case "IMAGE":
-                {
-                    var eventModel = _wechatApiClient.DeserializeEventFromXml<ImageMessageEvent>(content);
-                    //_logger.LogInformation("接收到微信推送的图片消息,图片链接:{0}", eventModel.PictureUrl);
-                    // 后续处理略
-                }
-                break;
-
-            default:
-                {
-                    // 其他情况略
-                }
-                break;
-        }
-
-        return "success";
-    }
-}

+ 1 - 1
Admin.NET/Admin.NET.Core/Service/Wechat/SysWechatUserService.cs

@@ -19,7 +19,7 @@ public class SysWechatUserService : IDynamicApiController, ITransient
     /// <param name="input"></param>
     /// <returns></returns>
     [DisplayName("获取微信用户列表")]
-    public async Task<SqlSugarPagedList<SysWechatUser>> GetPage([FromQuery] WechatUserInput input)
+    public async Task<SqlSugarPagedList<SysWechatUser>> Page(WechatUserInput input)
     {
         return await _sysWechatUserRep.AsQueryable()
             .WhereIF(!string.IsNullOrWhiteSpace(input.NickName), u => u.NickName.Contains(input.NickName))

+ 1 - 0
Web/src/api-services/api.ts

@@ -20,6 +20,7 @@ export * from './apis/sys-const-api';
 export * from './apis/sys-database-api';
 export * from './apis/sys-dict-data-api';
 export * from './apis/sys-dict-type-api';
+export * from './apis/sys-enum-api';
 export * from './apis/sys-file-api';
 export * from './apis/sys-job-api';
 export * from './apis/sys-log-diff-api';

+ 16 - 159
Web/src/api-services/apis/sys-code-gen-api.ts

@@ -23,6 +23,7 @@ import { AdminResultListTableOutput } from '../models';
 import { AdminResultObject } from '../models';
 import { AdminResultSqlSugarPagedListSysCodeGen } from '../models';
 import { AdminResultSysCodeGen } from '../models';
+import { CodeGenInput } from '../models';
 import { DeleteCodeGenInput } from '../models';
 import { SysCodeGen } from '../models';
 import { UpdateCodeGenInput } from '../models';
@@ -246,29 +247,11 @@ export const SysCodeGenApiAxiosParamCreator = function (configuration?: Configur
         /**
          * 
          * @summary 获取代码生成分页列表
-         * @param {string} [authorName] 作者姓名
-         * @param {string} [className] 类名
-         * @param {string} [tablePrefix] 是否移除表前缀
-         * @param {string} [configId] 库定位器名
-         * @param {string} [dbName] 数据库名(保留字段)
-         * @param {string} [dbType] 数据库类型
-         * @param {string} [connectionString] 数据库链接
-         * @param {string} [generateType] 生成方式
-         * @param {string} [tableName] 数据库表名
-         * @param {string} [nameSpace] 命名空间
-         * @param {string} [busName] 业务名(业务代码包名称)
-         * @param {string} [tableComment] 功能名(数据库表名称)
-         * @param {string} [menuApplication] 菜单应用分类(应用编码)
-         * @param {number} [menuPid] 菜单父级
-         * @param {number} [page] 当前页码
-         * @param {number} [pageSize] 页码容量
-         * @param {string} [field] 排序字段
-         * @param {string} [order] 排序方向
-         * @param {string} [descStr] 降序排序
+         * @param {CodeGenInput} [body] 
          * @param {*} [options] Override http request option.
          * @throws {RequiredError}
          */
-        apiSysCodeGenPageGet: async (authorName?: string, className?: string, tablePrefix?: string, configId?: string, dbName?: string, dbType?: string, connectionString?: string, generateType?: string, tableName?: string, nameSpace?: string, busName?: string, tableComment?: string, menuApplication?: string, menuPid?: number, page?: number, pageSize?: number, field?: string, order?: string, descStr?: string, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
+        apiSysCodeGenPagePost: async (body?: CodeGenInput, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
             const localVarPath = `/api/sysCodeGen/page`;
             // use dummy base URL string because the URL constructor only accepts absolute URLs.
             const localVarUrlObj = new URL(localVarPath, 'https://example.com');
@@ -276,87 +259,13 @@ export const SysCodeGenApiAxiosParamCreator = function (configuration?: Configur
             if (configuration) {
                 baseOptions = configuration.baseOptions;
             }
-            const localVarRequestOptions :AxiosRequestConfig = { method: 'GET', ...baseOptions, ...options};
+            const localVarRequestOptions :AxiosRequestConfig = { method: 'POST', ...baseOptions, ...options};
             const localVarHeaderParameter = {} as any;
             const localVarQueryParameter = {} as any;
 
             // authentication Bearer required
 
-            if (authorName !== undefined) {
-                localVarQueryParameter['AuthorName'] = authorName;
-            }
-
-            if (className !== undefined) {
-                localVarQueryParameter['ClassName'] = className;
-            }
-
-            if (tablePrefix !== undefined) {
-                localVarQueryParameter['TablePrefix'] = tablePrefix;
-            }
-
-            if (configId !== undefined) {
-                localVarQueryParameter['ConfigId'] = configId;
-            }
-
-            if (dbName !== undefined) {
-                localVarQueryParameter['DbName'] = dbName;
-            }
-
-            if (dbType !== undefined) {
-                localVarQueryParameter['DbType'] = dbType;
-            }
-
-            if (connectionString !== undefined) {
-                localVarQueryParameter['ConnectionString'] = connectionString;
-            }
-
-            if (generateType !== undefined) {
-                localVarQueryParameter['GenerateType'] = generateType;
-            }
-
-            if (tableName !== undefined) {
-                localVarQueryParameter['TableName'] = tableName;
-            }
-
-            if (nameSpace !== undefined) {
-                localVarQueryParameter['NameSpace'] = nameSpace;
-            }
-
-            if (busName !== undefined) {
-                localVarQueryParameter['BusName'] = busName;
-            }
-
-            if (tableComment !== undefined) {
-                localVarQueryParameter['TableComment'] = tableComment;
-            }
-
-            if (menuApplication !== undefined) {
-                localVarQueryParameter['MenuApplication'] = menuApplication;
-            }
-
-            if (menuPid !== undefined) {
-                localVarQueryParameter['MenuPid'] = menuPid;
-            }
-
-            if (page !== undefined) {
-                localVarQueryParameter['Page'] = page;
-            }
-
-            if (pageSize !== undefined) {
-                localVarQueryParameter['PageSize'] = pageSize;
-            }
-
-            if (field !== undefined) {
-                localVarQueryParameter['Field'] = field;
-            }
-
-            if (order !== undefined) {
-                localVarQueryParameter['Order'] = order;
-            }
-
-            if (descStr !== undefined) {
-                localVarQueryParameter['DescStr'] = descStr;
-            }
+            localVarHeaderParameter['Content-Type'] = 'application/json-patch+json';
 
             const query = new URLSearchParams(localVarUrlObj.search);
             for (const key in localVarQueryParameter) {
@@ -368,6 +277,8 @@ export const SysCodeGenApiAxiosParamCreator = function (configuration?: Configur
             localVarUrlObj.search = (new URLSearchParams(query)).toString();
             let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
             localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
+            const needsSerialization = (typeof body !== "string") || localVarRequestOptions.headers['Content-Type'] === 'application/json';
+            localVarRequestOptions.data =  needsSerialization ? JSON.stringify(body !== undefined ? body : {}) : (body || "");
 
             return {
                 url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,
@@ -580,30 +491,12 @@ export const SysCodeGenApiFp = function(configuration?: Configuration) {
         /**
          * 
          * @summary 获取代码生成分页列表
-         * @param {string} [authorName] 作者姓名
-         * @param {string} [className] 类名
-         * @param {string} [tablePrefix] 是否移除表前缀
-         * @param {string} [configId] 库定位器名
-         * @param {string} [dbName] 数据库名(保留字段)
-         * @param {string} [dbType] 数据库类型
-         * @param {string} [connectionString] 数据库链接
-         * @param {string} [generateType] 生成方式
-         * @param {string} [tableName] 数据库表名
-         * @param {string} [nameSpace] 命名空间
-         * @param {string} [busName] 业务名(业务代码包名称)
-         * @param {string} [tableComment] 功能名(数据库表名称)
-         * @param {string} [menuApplication] 菜单应用分类(应用编码)
-         * @param {number} [menuPid] 菜单父级
-         * @param {number} [page] 当前页码
-         * @param {number} [pageSize] 页码容量
-         * @param {string} [field] 排序字段
-         * @param {string} [order] 排序方向
-         * @param {string} [descStr] 降序排序
+         * @param {CodeGenInput} [body] 
          * @param {*} [options] Override http request option.
          * @throws {RequiredError}
          */
-        async apiSysCodeGenPageGet(authorName?: string, className?: string, tablePrefix?: string, configId?: string, dbName?: string, dbType?: string, connectionString?: string, generateType?: string, tableName?: string, nameSpace?: string, busName?: string, tableComment?: string, menuApplication?: string, menuPid?: number, page?: number, pageSize?: number, field?: string, order?: string, descStr?: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<AdminResultSqlSugarPagedListSysCodeGen>>> {
-            const localVarAxiosArgs = await SysCodeGenApiAxiosParamCreator(configuration).apiSysCodeGenPageGet(authorName, className, tablePrefix, configId, dbName, dbType, connectionString, generateType, tableName, nameSpace, busName, tableComment, menuApplication, menuPid, page, pageSize, field, order, descStr, options);
+        async apiSysCodeGenPagePost(body?: CodeGenInput, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<AdminResultSqlSugarPagedListSysCodeGen>>> {
+            const localVarAxiosArgs = await SysCodeGenApiAxiosParamCreator(configuration).apiSysCodeGenPagePost(body, options);
             return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                 const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                 return axios.request(axiosRequestArgs);
@@ -713,30 +606,12 @@ export const SysCodeGenApiFactory = function (configuration?: Configuration, bas
         /**
          * 
          * @summary 获取代码生成分页列表
-         * @param {string} [authorName] 作者姓名
-         * @param {string} [className] 类名
-         * @param {string} [tablePrefix] 是否移除表前缀
-         * @param {string} [configId] 库定位器名
-         * @param {string} [dbName] 数据库名(保留字段)
-         * @param {string} [dbType] 数据库类型
-         * @param {string} [connectionString] 数据库链接
-         * @param {string} [generateType] 生成方式
-         * @param {string} [tableName] 数据库表名
-         * @param {string} [nameSpace] 命名空间
-         * @param {string} [busName] 业务名(业务代码包名称)
-         * @param {string} [tableComment] 功能名(数据库表名称)
-         * @param {string} [menuApplication] 菜单应用分类(应用编码)
-         * @param {number} [menuPid] 菜单父级
-         * @param {number} [page] 当前页码
-         * @param {number} [pageSize] 页码容量
-         * @param {string} [field] 排序字段
-         * @param {string} [order] 排序方向
-         * @param {string} [descStr] 降序排序
+         * @param {CodeGenInput} [body] 
          * @param {*} [options] Override http request option.
          * @throws {RequiredError}
          */
-        async apiSysCodeGenPageGet(authorName?: string, className?: string, tablePrefix?: string, configId?: string, dbName?: string, dbType?: string, connectionString?: string, generateType?: string, tableName?: string, nameSpace?: string, busName?: string, tableComment?: string, menuApplication?: string, menuPid?: number, page?: number, pageSize?: number, field?: string, order?: string, descStr?: string, options?: AxiosRequestConfig): Promise<AxiosResponse<AdminResultSqlSugarPagedListSysCodeGen>> {
-            return SysCodeGenApiFp(configuration).apiSysCodeGenPageGet(authorName, className, tablePrefix, configId, dbName, dbType, connectionString, generateType, tableName, nameSpace, busName, tableComment, menuApplication, menuPid, page, pageSize, field, order, descStr, options).then((request) => request(axios, basePath));
+        async apiSysCodeGenPagePost(body?: CodeGenInput, options?: AxiosRequestConfig): Promise<AxiosResponse<AdminResultSqlSugarPagedListSysCodeGen>> {
+            return SysCodeGenApiFp(configuration).apiSysCodeGenPagePost(body, options).then((request) => request(axios, basePath));
         },
         /**
          * 
@@ -836,31 +711,13 @@ export class SysCodeGenApi extends BaseAPI {
     /**
      * 
      * @summary 获取代码生成分页列表
-     * @param {string} [authorName] 作者姓名
-     * @param {string} [className] 类名
-     * @param {string} [tablePrefix] 是否移除表前缀
-     * @param {string} [configId] 库定位器名
-     * @param {string} [dbName] 数据库名(保留字段)
-     * @param {string} [dbType] 数据库类型
-     * @param {string} [connectionString] 数据库链接
-     * @param {string} [generateType] 生成方式
-     * @param {string} [tableName] 数据库表名
-     * @param {string} [nameSpace] 命名空间
-     * @param {string} [busName] 业务名(业务代码包名称)
-     * @param {string} [tableComment] 功能名(数据库表名称)
-     * @param {string} [menuApplication] 菜单应用分类(应用编码)
-     * @param {number} [menuPid] 菜单父级
-     * @param {number} [page] 当前页码
-     * @param {number} [pageSize] 页码容量
-     * @param {string} [field] 排序字段
-     * @param {string} [order] 排序方向
-     * @param {string} [descStr] 降序排序
+     * @param {CodeGenInput} [body] 
      * @param {*} [options] Override http request option.
      * @throws {RequiredError}
      * @memberof SysCodeGenApi
      */
-    public async apiSysCodeGenPageGet(authorName?: string, className?: string, tablePrefix?: string, configId?: string, dbName?: string, dbType?: string, connectionString?: string, generateType?: string, tableName?: string, nameSpace?: string, busName?: string, tableComment?: string, menuApplication?: string, menuPid?: number, page?: number, pageSize?: number, field?: string, order?: string, descStr?: string, options?: AxiosRequestConfig) : Promise<AxiosResponse<AdminResultSqlSugarPagedListSysCodeGen>> {
-        return SysCodeGenApiFp(this.configuration).apiSysCodeGenPageGet(authorName, className, tablePrefix, configId, dbName, dbType, connectionString, generateType, tableName, nameSpace, busName, tableComment, menuApplication, menuPid, page, pageSize, field, order, descStr, options).then((request) => request(this.axios, this.basePath));
+    public async apiSysCodeGenPagePost(body?: CodeGenInput, options?: AxiosRequestConfig) : Promise<AxiosResponse<AdminResultSqlSugarPagedListSysCodeGen>> {
+        return SysCodeGenApiFp(this.configuration).apiSysCodeGenPagePost(body, options).then((request) => request(this.axios, this.basePath));
     }
     /**
      * 

+ 16 - 71
Web/src/api-services/apis/sys-dict-data-api.ts

@@ -22,6 +22,7 @@ import { AdminResultSqlSugarPagedListSysDictData } from '../models';
 import { AdminResultSysDictData } from '../models';
 import { DeleteDictDataInput } from '../models';
 import { DictDataInput } from '../models';
+import { PageDictDataInput } from '../models';
 import { StatusEnum } from '../models';
 import { UpdateDictDataInput } from '../models';
 /**
@@ -302,18 +303,11 @@ export const SysDictDataApiAxiosParamCreator = function (configuration?: Configu
         /**
          * 
          * @summary 获取字典值分页列表
-         * @param {number} [dictTypeId] 字典类型Id
-         * @param {string} [value] 值
-         * @param {string} [code] 编码
-         * @param {number} [page] 当前页码
-         * @param {number} [pageSize] 页码容量
-         * @param {string} [field] 排序字段
-         * @param {string} [order] 排序方向
-         * @param {string} [descStr] 降序排序
+         * @param {PageDictDataInput} [body] 
          * @param {*} [options] Override http request option.
          * @throws {RequiredError}
          */
-        apiSysDictDataPageGet: async (dictTypeId?: number, value?: string, code?: string, page?: number, pageSize?: number, field?: string, order?: string, descStr?: string, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
+        apiSysDictDataPagePost: async (body?: PageDictDataInput, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
             const localVarPath = `/api/sysDictData/page`;
             // use dummy base URL string because the URL constructor only accepts absolute URLs.
             const localVarUrlObj = new URL(localVarPath, 'https://example.com');
@@ -321,43 +315,13 @@ export const SysDictDataApiAxiosParamCreator = function (configuration?: Configu
             if (configuration) {
                 baseOptions = configuration.baseOptions;
             }
-            const localVarRequestOptions :AxiosRequestConfig = { method: 'GET', ...baseOptions, ...options};
+            const localVarRequestOptions :AxiosRequestConfig = { method: 'POST', ...baseOptions, ...options};
             const localVarHeaderParameter = {} as any;
             const localVarQueryParameter = {} as any;
 
             // authentication Bearer required
 
-            if (dictTypeId !== undefined) {
-                localVarQueryParameter['DictTypeId'] = dictTypeId;
-            }
-
-            if (value !== undefined) {
-                localVarQueryParameter['Value'] = value;
-            }
-
-            if (code !== undefined) {
-                localVarQueryParameter['Code'] = code;
-            }
-
-            if (page !== undefined) {
-                localVarQueryParameter['Page'] = page;
-            }
-
-            if (pageSize !== undefined) {
-                localVarQueryParameter['PageSize'] = pageSize;
-            }
-
-            if (field !== undefined) {
-                localVarQueryParameter['Field'] = field;
-            }
-
-            if (order !== undefined) {
-                localVarQueryParameter['Order'] = order;
-            }
-
-            if (descStr !== undefined) {
-                localVarQueryParameter['DescStr'] = descStr;
-            }
+            localVarHeaderParameter['Content-Type'] = 'application/json-patch+json';
 
             const query = new URLSearchParams(localVarUrlObj.search);
             for (const key in localVarQueryParameter) {
@@ -369,6 +333,8 @@ export const SysDictDataApiAxiosParamCreator = function (configuration?: Configu
             localVarUrlObj.search = (new URLSearchParams(query)).toString();
             let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
             localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
+            const needsSerialization = (typeof body !== "string") || localVarRequestOptions.headers['Content-Type'] === 'application/json';
+            localVarRequestOptions.data =  needsSerialization ? JSON.stringify(body !== undefined ? body : {}) : (body || "");
 
             return {
                 url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,
@@ -555,19 +521,12 @@ export const SysDictDataApiFp = function(configuration?: Configuration) {
         /**
          * 
          * @summary 获取字典值分页列表
-         * @param {number} [dictTypeId] 字典类型Id
-         * @param {string} [value] 值
-         * @param {string} [code] 编码
-         * @param {number} [page] 当前页码
-         * @param {number} [pageSize] 页码容量
-         * @param {string} [field] 排序字段
-         * @param {string} [order] 排序方向
-         * @param {string} [descStr] 降序排序
+         * @param {PageDictDataInput} [body] 
          * @param {*} [options] Override http request option.
          * @throws {RequiredError}
          */
-        async apiSysDictDataPageGet(dictTypeId?: number, value?: string, code?: string, page?: number, pageSize?: number, field?: string, order?: string, descStr?: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<AdminResultSqlSugarPagedListSysDictData>>> {
-            const localVarAxiosArgs = await SysDictDataApiAxiosParamCreator(configuration).apiSysDictDataPageGet(dictTypeId, value, code, page, pageSize, field, order, descStr, options);
+        async apiSysDictDataPagePost(body?: PageDictDataInput, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<AdminResultSqlSugarPagedListSysDictData>>> {
+            const localVarAxiosArgs = await SysDictDataApiAxiosParamCreator(configuration).apiSysDictDataPagePost(body, options);
             return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                 const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                 return axios.request(axiosRequestArgs);
@@ -675,19 +634,12 @@ export const SysDictDataApiFactory = function (configuration?: Configuration, ba
         /**
          * 
          * @summary 获取字典值分页列表
-         * @param {number} [dictTypeId] 字典类型Id
-         * @param {string} [value] 值
-         * @param {string} [code] 编码
-         * @param {number} [page] 当前页码
-         * @param {number} [pageSize] 页码容量
-         * @param {string} [field] 排序字段
-         * @param {string} [order] 排序方向
-         * @param {string} [descStr] 降序排序
+         * @param {PageDictDataInput} [body] 
          * @param {*} [options] Override http request option.
          * @throws {RequiredError}
          */
-        async apiSysDictDataPageGet(dictTypeId?: number, value?: string, code?: string, page?: number, pageSize?: number, field?: string, order?: string, descStr?: string, options?: AxiosRequestConfig): Promise<AxiosResponse<AdminResultSqlSugarPagedListSysDictData>> {
-            return SysDictDataApiFp(configuration).apiSysDictDataPageGet(dictTypeId, value, code, page, pageSize, field, order, descStr, options).then((request) => request(axios, basePath));
+        async apiSysDictDataPagePost(body?: PageDictDataInput, options?: AxiosRequestConfig): Promise<AxiosResponse<AdminResultSqlSugarPagedListSysDictData>> {
+            return SysDictDataApiFp(configuration).apiSysDictDataPagePost(body, options).then((request) => request(axios, basePath));
         },
         /**
          * 
@@ -790,20 +742,13 @@ export class SysDictDataApi extends BaseAPI {
     /**
      * 
      * @summary 获取字典值分页列表
-     * @param {number} [dictTypeId] 字典类型Id
-     * @param {string} [value] 值
-     * @param {string} [code] 编码
-     * @param {number} [page] 当前页码
-     * @param {number} [pageSize] 页码容量
-     * @param {string} [field] 排序字段
-     * @param {string} [order] 排序方向
-     * @param {string} [descStr] 降序排序
+     * @param {PageDictDataInput} [body] 
      * @param {*} [options] Override http request option.
      * @throws {RequiredError}
      * @memberof SysDictDataApi
      */
-    public async apiSysDictDataPageGet(dictTypeId?: number, value?: string, code?: string, page?: number, pageSize?: number, field?: string, order?: string, descStr?: string, options?: AxiosRequestConfig) : Promise<AxiosResponse<AdminResultSqlSugarPagedListSysDictData>> {
-        return SysDictDataApiFp(this.configuration).apiSysDictDataPageGet(dictTypeId, value, code, page, pageSize, field, order, descStr, options).then((request) => request(this.axios, this.basePath));
+    public async apiSysDictDataPagePost(body?: PageDictDataInput, options?: AxiosRequestConfig) : Promise<AxiosResponse<AdminResultSqlSugarPagedListSysDictData>> {
+        return SysDictDataApiFp(this.configuration).apiSysDictDataPagePost(body, options).then((request) => request(this.axios, this.basePath));
     }
     /**
      * 

+ 16 - 63
Web/src/api-services/apis/sys-dict-type-api.ts

@@ -23,6 +23,7 @@ import { AdminResultSqlSugarPagedListSysDictType } from '../models';
 import { AdminResultSysDictType } from '../models';
 import { DeleteDictTypeInput } from '../models';
 import { DictTypeInput } from '../models';
+import { PageDictTypeInput } from '../models';
 import { StatusEnum } from '../models';
 import { UpdateDictTypeInput } from '../models';
 /**
@@ -247,17 +248,11 @@ export const SysDictTypeApiAxiosParamCreator = function (configuration?: Configu
         /**
          * 
          * @summary 获取字典类型分页列表
-         * @param {string} [name] 名称
-         * @param {string} [code] 编码
-         * @param {number} [page] 当前页码
-         * @param {number} [pageSize] 页码容量
-         * @param {string} [field] 排序字段
-         * @param {string} [order] 排序方向
-         * @param {string} [descStr] 降序排序
+         * @param {PageDictTypeInput} [body] 
          * @param {*} [options] Override http request option.
          * @throws {RequiredError}
          */
-        apiSysDictTypePageGet: async (name?: string, code?: string, page?: number, pageSize?: number, field?: string, order?: string, descStr?: string, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
+        apiSysDictTypePagePost: async (body?: PageDictTypeInput, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
             const localVarPath = `/api/sysDictType/page`;
             // use dummy base URL string because the URL constructor only accepts absolute URLs.
             const localVarUrlObj = new URL(localVarPath, 'https://example.com');
@@ -265,39 +260,13 @@ export const SysDictTypeApiAxiosParamCreator = function (configuration?: Configu
             if (configuration) {
                 baseOptions = configuration.baseOptions;
             }
-            const localVarRequestOptions :AxiosRequestConfig = { method: 'GET', ...baseOptions, ...options};
+            const localVarRequestOptions :AxiosRequestConfig = { method: 'POST', ...baseOptions, ...options};
             const localVarHeaderParameter = {} as any;
             const localVarQueryParameter = {} as any;
 
             // authentication Bearer required
 
-            if (name !== undefined) {
-                localVarQueryParameter['Name'] = name;
-            }
-
-            if (code !== undefined) {
-                localVarQueryParameter['Code'] = code;
-            }
-
-            if (page !== undefined) {
-                localVarQueryParameter['Page'] = page;
-            }
-
-            if (pageSize !== undefined) {
-                localVarQueryParameter['PageSize'] = pageSize;
-            }
-
-            if (field !== undefined) {
-                localVarQueryParameter['Field'] = field;
-            }
-
-            if (order !== undefined) {
-                localVarQueryParameter['Order'] = order;
-            }
-
-            if (descStr !== undefined) {
-                localVarQueryParameter['DescStr'] = descStr;
-            }
+            localVarHeaderParameter['Content-Type'] = 'application/json-patch+json';
 
             const query = new URLSearchParams(localVarUrlObj.search);
             for (const key in localVarQueryParameter) {
@@ -309,6 +278,8 @@ export const SysDictTypeApiAxiosParamCreator = function (configuration?: Configu
             localVarUrlObj.search = (new URLSearchParams(query)).toString();
             let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
             localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
+            const needsSerialization = (typeof body !== "string") || localVarRequestOptions.headers['Content-Type'] === 'application/json';
+            localVarRequestOptions.data =  needsSerialization ? JSON.stringify(body !== undefined ? body : {}) : (body || "");
 
             return {
                 url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,
@@ -479,18 +450,12 @@ export const SysDictTypeApiFp = function(configuration?: Configuration) {
         /**
          * 
          * @summary 获取字典类型分页列表
-         * @param {string} [name] 名称
-         * @param {string} [code] 编码
-         * @param {number} [page] 当前页码
-         * @param {number} [pageSize] 页码容量
-         * @param {string} [field] 排序字段
-         * @param {string} [order] 排序方向
-         * @param {string} [descStr] 降序排序
+         * @param {PageDictTypeInput} [body] 
          * @param {*} [options] Override http request option.
          * @throws {RequiredError}
          */
-        async apiSysDictTypePageGet(name?: string, code?: string, page?: number, pageSize?: number, field?: string, order?: string, descStr?: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<AdminResultSqlSugarPagedListSysDictType>>> {
-            const localVarAxiosArgs = await SysDictTypeApiAxiosParamCreator(configuration).apiSysDictTypePageGet(name, code, page, pageSize, field, order, descStr, options);
+        async apiSysDictTypePagePost(body?: PageDictTypeInput, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<AdminResultSqlSugarPagedListSysDictType>>> {
+            const localVarAxiosArgs = await SysDictTypeApiAxiosParamCreator(configuration).apiSysDictTypePagePost(body, options);
             return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                 const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                 return axios.request(axiosRequestArgs);
@@ -586,18 +551,12 @@ export const SysDictTypeApiFactory = function (configuration?: Configuration, ba
         /**
          * 
          * @summary 获取字典类型分页列表
-         * @param {string} [name] 名称
-         * @param {string} [code] 编码
-         * @param {number} [page] 当前页码
-         * @param {number} [pageSize] 页码容量
-         * @param {string} [field] 排序字段
-         * @param {string} [order] 排序方向
-         * @param {string} [descStr] 降序排序
+         * @param {PageDictTypeInput} [body] 
          * @param {*} [options] Override http request option.
          * @throws {RequiredError}
          */
-        async apiSysDictTypePageGet(name?: string, code?: string, page?: number, pageSize?: number, field?: string, order?: string, descStr?: string, options?: AxiosRequestConfig): Promise<AxiosResponse<AdminResultSqlSugarPagedListSysDictType>> {
-            return SysDictTypeApiFp(configuration).apiSysDictTypePageGet(name, code, page, pageSize, field, order, descStr, options).then((request) => request(axios, basePath));
+        async apiSysDictTypePagePost(body?: PageDictTypeInput, options?: AxiosRequestConfig): Promise<AxiosResponse<AdminResultSqlSugarPagedListSysDictType>> {
+            return SysDictTypeApiFp(configuration).apiSysDictTypePagePost(body, options).then((request) => request(axios, basePath));
         },
         /**
          * 
@@ -687,19 +646,13 @@ export class SysDictTypeApi extends BaseAPI {
     /**
      * 
      * @summary 获取字典类型分页列表
-     * @param {string} [name] 名称
-     * @param {string} [code] 编码
-     * @param {number} [page] 当前页码
-     * @param {number} [pageSize] 页码容量
-     * @param {string} [field] 排序字段
-     * @param {string} [order] 排序方向
-     * @param {string} [descStr] 降序排序
+     * @param {PageDictTypeInput} [body] 
      * @param {*} [options] Override http request option.
      * @throws {RequiredError}
      * @memberof SysDictTypeApi
      */
-    public async apiSysDictTypePageGet(name?: string, code?: string, page?: number, pageSize?: number, field?: string, order?: string, descStr?: string, options?: AxiosRequestConfig) : Promise<AxiosResponse<AdminResultSqlSugarPagedListSysDictType>> {
-        return SysDictTypeApiFp(this.configuration).apiSysDictTypePageGet(name, code, page, pageSize, field, order, descStr, options).then((request) => request(this.axios, this.basePath));
+    public async apiSysDictTypePagePost(body?: PageDictTypeInput, options?: AxiosRequestConfig) : Promise<AxiosResponse<AdminResultSqlSugarPagedListSysDictType>> {
+        return SysDictTypeApiFp(this.configuration).apiSysDictTypePagePost(body, options).then((request) => request(this.axios, this.basePath));
     }
     /**
      * 

+ 295 - 0
Web/src/api-services/apis/sys-enum-api.ts

@@ -0,0 +1,295 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Admin.NET
+ * 让 .NET 开发更简单、更通用、更流行。前后端分离架构(.NET6/Vue3),开箱即用紧随前沿技术。<br/><a href='https://gitee.com/zuohuaijun/Admin.NET/'>https://gitee.com/zuohuaijun/Admin.NET</a>
+ *
+ * OpenAPI spec version: 1.0.0
+ * Contact: 515096995@qq.com
+ *
+ * NOTE: This class is auto generated by the swagger code generator program.
+ * https://github.com/swagger-api/swagger-codegen.git
+ * Do not edit the class manually.
+ */
+import globalAxios, { AxiosResponse, AxiosInstance, AxiosRequestConfig } from 'axios';
+import { Configuration } from '../configuration';
+// Some imports not used depending on template conditions
+// @ts-ignore
+import { BASE_PATH, COLLECTION_FORMATS, RequestArgs, BaseAPI, RequiredError } from '../base';
+import { AdminResultListEnumEntity } from '../models';
+import { AdminResultListEnumTypeOutput } from '../models';
+/**
+ * SysEnumApi - axios parameter creator
+ * @export
+ */
+export const SysEnumApiAxiosParamCreator = function (configuration?: Configuration) {
+    return {
+        /**
+         * 
+         * @summary 通过实体的字段名获取相关枚举值集合(目前仅支持枚举类型)
+         * @param {string} entityName 实体名称
+         * @param {string} fieldName 字段名称
+         * @param {*} [options] Override http request option.
+         * @throws {RequiredError}
+         */
+        apiSysEnumEnumDataListByFieldGet: async (entityName: string, fieldName: string, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
+            // verify required parameter 'entityName' is not null or undefined
+            if (entityName === null || entityName === undefined) {
+                throw new RequiredError('entityName','Required parameter entityName was null or undefined when calling apiSysEnumEnumDataListByFieldGet.');
+            }
+            // verify required parameter 'fieldName' is not null or undefined
+            if (fieldName === null || fieldName === undefined) {
+                throw new RequiredError('fieldName','Required parameter fieldName was null or undefined when calling apiSysEnumEnumDataListByFieldGet.');
+            }
+            const localVarPath = `/api/sysEnum/enumDataListByField`;
+            // use dummy base URL string because the URL constructor only accepts absolute URLs.
+            const localVarUrlObj = new URL(localVarPath, 'https://example.com');
+            let baseOptions;
+            if (configuration) {
+                baseOptions = configuration.baseOptions;
+            }
+            const localVarRequestOptions :AxiosRequestConfig = { method: 'GET', ...baseOptions, ...options};
+            const localVarHeaderParameter = {} as any;
+            const localVarQueryParameter = {} as any;
+
+            // authentication Bearer required
+
+            if (entityName !== undefined) {
+                localVarQueryParameter['EntityName'] = entityName;
+            }
+
+            if (fieldName !== undefined) {
+                localVarQueryParameter['FieldName'] = fieldName;
+            }
+
+            const query = new URLSearchParams(localVarUrlObj.search);
+            for (const key in localVarQueryParameter) {
+                query.set(key, localVarQueryParameter[key]);
+            }
+            for (const key in options.params) {
+                query.set(key, options.params[key]);
+            }
+            localVarUrlObj.search = (new URLSearchParams(query)).toString();
+            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
+            localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
+
+            return {
+                url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,
+                options: localVarRequestOptions,
+            };
+        },
+        /**
+         * 
+         * @summary 通过枚举类型获取枚举值集合
+         * @param {string} enumName 枚举类型名称
+         * @param {*} [options] Override http request option.
+         * @throws {RequiredError}
+         */
+        apiSysEnumEnumDataListGet: async (enumName: string, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
+            // verify required parameter 'enumName' is not null or undefined
+            if (enumName === null || enumName === undefined) {
+                throw new RequiredError('enumName','Required parameter enumName was null or undefined when calling apiSysEnumEnumDataListGet.');
+            }
+            const localVarPath = `/api/sysEnum/enumDataList`;
+            // use dummy base URL string because the URL constructor only accepts absolute URLs.
+            const localVarUrlObj = new URL(localVarPath, 'https://example.com');
+            let baseOptions;
+            if (configuration) {
+                baseOptions = configuration.baseOptions;
+            }
+            const localVarRequestOptions :AxiosRequestConfig = { method: 'GET', ...baseOptions, ...options};
+            const localVarHeaderParameter = {} as any;
+            const localVarQueryParameter = {} as any;
+
+            // authentication Bearer required
+
+            if (enumName !== undefined) {
+                localVarQueryParameter['EnumName'] = enumName;
+            }
+
+            const query = new URLSearchParams(localVarUrlObj.search);
+            for (const key in localVarQueryParameter) {
+                query.set(key, localVarQueryParameter[key]);
+            }
+            for (const key in options.params) {
+                query.set(key, options.params[key]);
+            }
+            localVarUrlObj.search = (new URLSearchParams(query)).toString();
+            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
+            localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
+
+            return {
+                url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,
+                options: localVarRequestOptions,
+            };
+        },
+        /**
+         * 
+         * @summary 获取所有枚举类型
+         * @param {*} [options] Override http request option.
+         * @throws {RequiredError}
+         */
+        apiSysEnumEnumTypeListGet: async (options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
+            const localVarPath = `/api/sysEnum/enumTypeList`;
+            // use dummy base URL string because the URL constructor only accepts absolute URLs.
+            const localVarUrlObj = new URL(localVarPath, 'https://example.com');
+            let baseOptions;
+            if (configuration) {
+                baseOptions = configuration.baseOptions;
+            }
+            const localVarRequestOptions :AxiosRequestConfig = { method: 'GET', ...baseOptions, ...options};
+            const localVarHeaderParameter = {} as any;
+            const localVarQueryParameter = {} as any;
+
+            // authentication Bearer required
+
+            const query = new URLSearchParams(localVarUrlObj.search);
+            for (const key in localVarQueryParameter) {
+                query.set(key, localVarQueryParameter[key]);
+            }
+            for (const key in options.params) {
+                query.set(key, options.params[key]);
+            }
+            localVarUrlObj.search = (new URLSearchParams(query)).toString();
+            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
+            localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
+
+            return {
+                url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,
+                options: localVarRequestOptions,
+            };
+        },
+    }
+};
+
+/**
+ * SysEnumApi - functional programming interface
+ * @export
+ */
+export const SysEnumApiFp = function(configuration?: Configuration) {
+    return {
+        /**
+         * 
+         * @summary 通过实体的字段名获取相关枚举值集合(目前仅支持枚举类型)
+         * @param {string} entityName 实体名称
+         * @param {string} fieldName 字段名称
+         * @param {*} [options] Override http request option.
+         * @throws {RequiredError}
+         */
+        async apiSysEnumEnumDataListByFieldGet(entityName: string, fieldName: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<AdminResultListEnumEntity>>> {
+            const localVarAxiosArgs = await SysEnumApiAxiosParamCreator(configuration).apiSysEnumEnumDataListByFieldGet(entityName, fieldName, options);
+            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
+                const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
+                return axios.request(axiosRequestArgs);
+            };
+        },
+        /**
+         * 
+         * @summary 通过枚举类型获取枚举值集合
+         * @param {string} enumName 枚举类型名称
+         * @param {*} [options] Override http request option.
+         * @throws {RequiredError}
+         */
+        async apiSysEnumEnumDataListGet(enumName: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<AdminResultListEnumEntity>>> {
+            const localVarAxiosArgs = await SysEnumApiAxiosParamCreator(configuration).apiSysEnumEnumDataListGet(enumName, options);
+            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
+                const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
+                return axios.request(axiosRequestArgs);
+            };
+        },
+        /**
+         * 
+         * @summary 获取所有枚举类型
+         * @param {*} [options] Override http request option.
+         * @throws {RequiredError}
+         */
+        async apiSysEnumEnumTypeListGet(options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<AdminResultListEnumTypeOutput>>> {
+            const localVarAxiosArgs = await SysEnumApiAxiosParamCreator(configuration).apiSysEnumEnumTypeListGet(options);
+            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
+                const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
+                return axios.request(axiosRequestArgs);
+            };
+        },
+    }
+};
+
+/**
+ * SysEnumApi - factory interface
+ * @export
+ */
+export const SysEnumApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) {
+    return {
+        /**
+         * 
+         * @summary 通过实体的字段名获取相关枚举值集合(目前仅支持枚举类型)
+         * @param {string} entityName 实体名称
+         * @param {string} fieldName 字段名称
+         * @param {*} [options] Override http request option.
+         * @throws {RequiredError}
+         */
+        async apiSysEnumEnumDataListByFieldGet(entityName: string, fieldName: string, options?: AxiosRequestConfig): Promise<AxiosResponse<AdminResultListEnumEntity>> {
+            return SysEnumApiFp(configuration).apiSysEnumEnumDataListByFieldGet(entityName, fieldName, options).then((request) => request(axios, basePath));
+        },
+        /**
+         * 
+         * @summary 通过枚举类型获取枚举值集合
+         * @param {string} enumName 枚举类型名称
+         * @param {*} [options] Override http request option.
+         * @throws {RequiredError}
+         */
+        async apiSysEnumEnumDataListGet(enumName: string, options?: AxiosRequestConfig): Promise<AxiosResponse<AdminResultListEnumEntity>> {
+            return SysEnumApiFp(configuration).apiSysEnumEnumDataListGet(enumName, options).then((request) => request(axios, basePath));
+        },
+        /**
+         * 
+         * @summary 获取所有枚举类型
+         * @param {*} [options] Override http request option.
+         * @throws {RequiredError}
+         */
+        async apiSysEnumEnumTypeListGet(options?: AxiosRequestConfig): Promise<AxiosResponse<AdminResultListEnumTypeOutput>> {
+            return SysEnumApiFp(configuration).apiSysEnumEnumTypeListGet(options).then((request) => request(axios, basePath));
+        },
+    };
+};
+
+/**
+ * SysEnumApi - object-oriented interface
+ * @export
+ * @class SysEnumApi
+ * @extends {BaseAPI}
+ */
+export class SysEnumApi extends BaseAPI {
+    /**
+     * 
+     * @summary 通过实体的字段名获取相关枚举值集合(目前仅支持枚举类型)
+     * @param {string} entityName 实体名称
+     * @param {string} fieldName 字段名称
+     * @param {*} [options] Override http request option.
+     * @throws {RequiredError}
+     * @memberof SysEnumApi
+     */
+    public async apiSysEnumEnumDataListByFieldGet(entityName: string, fieldName: string, options?: AxiosRequestConfig) : Promise<AxiosResponse<AdminResultListEnumEntity>> {
+        return SysEnumApiFp(this.configuration).apiSysEnumEnumDataListByFieldGet(entityName, fieldName, options).then((request) => request(this.axios, this.basePath));
+    }
+    /**
+     * 
+     * @summary 通过枚举类型获取枚举值集合
+     * @param {string} enumName 枚举类型名称
+     * @param {*} [options] Override http request option.
+     * @throws {RequiredError}
+     * @memberof SysEnumApi
+     */
+    public async apiSysEnumEnumDataListGet(enumName: string, options?: AxiosRequestConfig) : Promise<AxiosResponse<AdminResultListEnumEntity>> {
+        return SysEnumApiFp(this.configuration).apiSysEnumEnumDataListGet(enumName, options).then((request) => request(this.axios, this.basePath));
+    }
+    /**
+     * 
+     * @summary 获取所有枚举类型
+     * @param {*} [options] Override http request option.
+     * @throws {RequiredError}
+     * @memberof SysEnumApi
+     */
+    public async apiSysEnumEnumTypeListGet(options?: AxiosRequestConfig) : Promise<AxiosResponse<AdminResultListEnumTypeOutput>> {
+        return SysEnumApiFp(this.configuration).apiSysEnumEnumTypeListGet(options).then((request) => request(this.axios, this.basePath));
+    }
+}

+ 16 - 75
Web/src/api-services/apis/sys-file-api.ts

@@ -22,6 +22,7 @@ import { AdminResultListFileOutput } from '../models';
 import { AdminResultSqlSugarPagedListSysFile } from '../models';
 import { DeleteFileInput } from '../models';
 import { FileInput } from '../models';
+import { PageFileInput } from '../models';
 /**
  * SysFileApi - axios parameter creator
  * @export
@@ -113,18 +114,11 @@ export const SysFileApiAxiosParamCreator = function (configuration?: Configurati
         /**
          * 
          * @summary 获取文件分页列表
-         * @param {string} [fileName] 文件名称
-         * @param {Date} [startTime] 开始时间
-         * @param {Date} [endTime] 结束时间
-         * @param {number} [page] 当前页码
-         * @param {number} [pageSize] 页码容量
-         * @param {string} [field] 排序字段
-         * @param {string} [order] 排序方向
-         * @param {string} [descStr] 降序排序
+         * @param {PageFileInput} [body] 
          * @param {*} [options] Override http request option.
          * @throws {RequiredError}
          */
-        apiSysFilePageGet: async (fileName?: string, startTime?: Date, endTime?: Date, page?: number, pageSize?: number, field?: string, order?: string, descStr?: string, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
+        apiSysFilePagePost: async (body?: PageFileInput, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
             const localVarPath = `/api/sysFile/page`;
             // use dummy base URL string because the URL constructor only accepts absolute URLs.
             const localVarUrlObj = new URL(localVarPath, 'https://example.com');
@@ -132,47 +126,13 @@ export const SysFileApiAxiosParamCreator = function (configuration?: Configurati
             if (configuration) {
                 baseOptions = configuration.baseOptions;
             }
-            const localVarRequestOptions :AxiosRequestConfig = { method: 'GET', ...baseOptions, ...options};
+            const localVarRequestOptions :AxiosRequestConfig = { method: 'POST', ...baseOptions, ...options};
             const localVarHeaderParameter = {} as any;
             const localVarQueryParameter = {} as any;
 
             // authentication Bearer required
 
-            if (fileName !== undefined) {
-                localVarQueryParameter['FileName'] = fileName;
-            }
-
-            if (startTime !== undefined) {
-                localVarQueryParameter['StartTime'] = (startTime as any instanceof Date) ?
-                    (startTime as any).toISOString() :
-                    startTime;
-            }
-
-            if (endTime !== undefined) {
-                localVarQueryParameter['EndTime'] = (endTime as any instanceof Date) ?
-                    (endTime as any).toISOString() :
-                    endTime;
-            }
-
-            if (page !== undefined) {
-                localVarQueryParameter['Page'] = page;
-            }
-
-            if (pageSize !== undefined) {
-                localVarQueryParameter['PageSize'] = pageSize;
-            }
-
-            if (field !== undefined) {
-                localVarQueryParameter['Field'] = field;
-            }
-
-            if (order !== undefined) {
-                localVarQueryParameter['Order'] = order;
-            }
-
-            if (descStr !== undefined) {
-                localVarQueryParameter['DescStr'] = descStr;
-            }
+            localVarHeaderParameter['Content-Type'] = 'application/json-patch+json';
 
             const query = new URLSearchParams(localVarUrlObj.search);
             for (const key in localVarQueryParameter) {
@@ -184,6 +144,8 @@ export const SysFileApiAxiosParamCreator = function (configuration?: Configurati
             localVarUrlObj.search = (new URLSearchParams(query)).toString();
             let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
             localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
+            const needsSerialization = (typeof body !== "string") || localVarRequestOptions.headers['Content-Type'] === 'application/json';
+            localVarRequestOptions.data =  needsSerialization ? JSON.stringify(body !== undefined ? body : {}) : (body || "");
 
             return {
                 url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,
@@ -416,19 +378,12 @@ export const SysFileApiFp = function(configuration?: Configuration) {
         /**
          * 
          * @summary 获取文件分页列表
-         * @param {string} [fileName] 文件名称
-         * @param {Date} [startTime] 开始时间
-         * @param {Date} [endTime] 结束时间
-         * @param {number} [page] 当前页码
-         * @param {number} [pageSize] 页码容量
-         * @param {string} [field] 排序字段
-         * @param {string} [order] 排序方向
-         * @param {string} [descStr] 降序排序
+         * @param {PageFileInput} [body] 
          * @param {*} [options] Override http request option.
          * @throws {RequiredError}
          */
-        async apiSysFilePageGet(fileName?: string, startTime?: Date, endTime?: Date, page?: number, pageSize?: number, field?: string, order?: string, descStr?: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<AdminResultSqlSugarPagedListSysFile>>> {
-            const localVarAxiosArgs = await SysFileApiAxiosParamCreator(configuration).apiSysFilePageGet(fileName, startTime, endTime, page, pageSize, field, order, descStr, options);
+        async apiSysFilePagePost(body?: PageFileInput, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<AdminResultSqlSugarPagedListSysFile>>> {
+            const localVarAxiosArgs = await SysFileApiAxiosParamCreator(configuration).apiSysFilePagePost(body, options);
             return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                 const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                 return axios.request(axiosRequestArgs);
@@ -523,19 +478,12 @@ export const SysFileApiFactory = function (configuration?: Configuration, basePa
         /**
          * 
          * @summary 获取文件分页列表
-         * @param {string} [fileName] 文件名称
-         * @param {Date} [startTime] 开始时间
-         * @param {Date} [endTime] 结束时间
-         * @param {number} [page] 当前页码
-         * @param {number} [pageSize] 页码容量
-         * @param {string} [field] 排序字段
-         * @param {string} [order] 排序方向
-         * @param {string} [descStr] 降序排序
+         * @param {PageFileInput} [body] 
          * @param {*} [options] Override http request option.
          * @throws {RequiredError}
          */
-        async apiSysFilePageGet(fileName?: string, startTime?: Date, endTime?: Date, page?: number, pageSize?: number, field?: string, order?: string, descStr?: string, options?: AxiosRequestConfig): Promise<AxiosResponse<AdminResultSqlSugarPagedListSysFile>> {
-            return SysFileApiFp(configuration).apiSysFilePageGet(fileName, startTime, endTime, page, pageSize, field, order, descStr, options).then((request) => request(axios, basePath));
+        async apiSysFilePagePost(body?: PageFileInput, options?: AxiosRequestConfig): Promise<AxiosResponse<AdminResultSqlSugarPagedListSysFile>> {
+            return SysFileApiFp(configuration).apiSysFilePagePost(body, options).then((request) => request(axios, basePath));
         },
         /**
          * 
@@ -613,20 +561,13 @@ export class SysFileApi extends BaseAPI {
     /**
      * 
      * @summary 获取文件分页列表
-     * @param {string} [fileName] 文件名称
-     * @param {Date} [startTime] 开始时间
-     * @param {Date} [endTime] 结束时间
-     * @param {number} [page] 当前页码
-     * @param {number} [pageSize] 页码容量
-     * @param {string} [field] 排序字段
-     * @param {string} [order] 排序方向
-     * @param {string} [descStr] 降序排序
+     * @param {PageFileInput} [body] 
      * @param {*} [options] Override http request option.
      * @throws {RequiredError}
      * @memberof SysFileApi
      */
-    public async apiSysFilePageGet(fileName?: string, startTime?: Date, endTime?: Date, page?: number, pageSize?: number, field?: string, order?: string, descStr?: string, options?: AxiosRequestConfig) : Promise<AxiosResponse<AdminResultSqlSugarPagedListSysFile>> {
-        return SysFileApiFp(this.configuration).apiSysFilePageGet(fileName, startTime, endTime, page, pageSize, field, order, descStr, options).then((request) => request(this.axios, this.basePath));
+    public async apiSysFilePagePost(body?: PageFileInput, options?: AxiosRequestConfig) : Promise<AxiosResponse<AdminResultSqlSugarPagedListSysFile>> {
+        return SysFileApiFp(this.configuration).apiSysFilePagePost(body, options).then((request) => request(this.axios, this.basePath));
     }
     /**
      * 

+ 16 - 63
Web/src/api-services/apis/sys-job-api.ts

@@ -25,6 +25,7 @@ import { DeleteJobDetailInput } from '../models';
 import { DeleteJobTriggerInput } from '../models';
 import { JobDetailInput } from '../models';
 import { JobTriggerInput } from '../models';
+import { PageJobInput } from '../models';
 import { UpdateJobDetailInput } from '../models';
 import { UpdateJobTriggerInput } from '../models';
 /**
@@ -313,17 +314,11 @@ export const SysJobApiAxiosParamCreator = function (configuration?: Configuratio
         /**
          * 
          * @summary 获取作业分页列表
-         * @param {string} [jobId] 作业Id
-         * @param {string} [description] 描述信息
-         * @param {number} [page] 当前页码
-         * @param {number} [pageSize] 页码容量
-         * @param {string} [field] 排序字段
-         * @param {string} [order] 排序方向
-         * @param {string} [descStr] 降序排序
+         * @param {PageJobInput} [body] 
          * @param {*} [options] Override http request option.
          * @throws {RequiredError}
          */
-        apiSysJobPageJobDetailGet: async (jobId?: string, description?: string, page?: number, pageSize?: number, field?: string, order?: string, descStr?: string, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
+        apiSysJobPageJobDetailPost: async (body?: PageJobInput, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
             const localVarPath = `/api/sysJob/pageJobDetail`;
             // use dummy base URL string because the URL constructor only accepts absolute URLs.
             const localVarUrlObj = new URL(localVarPath, 'https://example.com');
@@ -331,39 +326,13 @@ export const SysJobApiAxiosParamCreator = function (configuration?: Configuratio
             if (configuration) {
                 baseOptions = configuration.baseOptions;
             }
-            const localVarRequestOptions :AxiosRequestConfig = { method: 'GET', ...baseOptions, ...options};
+            const localVarRequestOptions :AxiosRequestConfig = { method: 'POST', ...baseOptions, ...options};
             const localVarHeaderParameter = {} as any;
             const localVarQueryParameter = {} as any;
 
             // authentication Bearer required
 
-            if (jobId !== undefined) {
-                localVarQueryParameter['JobId'] = jobId;
-            }
-
-            if (description !== undefined) {
-                localVarQueryParameter['Description'] = description;
-            }
-
-            if (page !== undefined) {
-                localVarQueryParameter['Page'] = page;
-            }
-
-            if (pageSize !== undefined) {
-                localVarQueryParameter['PageSize'] = pageSize;
-            }
-
-            if (field !== undefined) {
-                localVarQueryParameter['Field'] = field;
-            }
-
-            if (order !== undefined) {
-                localVarQueryParameter['Order'] = order;
-            }
-
-            if (descStr !== undefined) {
-                localVarQueryParameter['DescStr'] = descStr;
-            }
+            localVarHeaderParameter['Content-Type'] = 'application/json-patch+json';
 
             const query = new URLSearchParams(localVarUrlObj.search);
             for (const key in localVarQueryParameter) {
@@ -375,6 +344,8 @@ export const SysJobApiAxiosParamCreator = function (configuration?: Configuratio
             localVarUrlObj.search = (new URLSearchParams(query)).toString();
             let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
             localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
+            const needsSerialization = (typeof body !== "string") || localVarRequestOptions.headers['Content-Type'] === 'application/json';
+            localVarRequestOptions.data =  needsSerialization ? JSON.stringify(body !== undefined ? body : {}) : (body || "");
 
             return {
                 url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,
@@ -843,18 +814,12 @@ export const SysJobApiFp = function(configuration?: Configuration) {
         /**
          * 
          * @summary 获取作业分页列表
-         * @param {string} [jobId] 作业Id
-         * @param {string} [description] 描述信息
-         * @param {number} [page] 当前页码
-         * @param {number} [pageSize] 页码容量
-         * @param {string} [field] 排序字段
-         * @param {string} [order] 排序方向
-         * @param {string} [descStr] 降序排序
+         * @param {PageJobInput} [body] 
          * @param {*} [options] Override http request option.
          * @throws {RequiredError}
          */
-        async apiSysJobPageJobDetailGet(jobId?: string, description?: string, page?: number, pageSize?: number, field?: string, order?: string, descStr?: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<AdminResultSqlSugarPagedListJobOutput>>> {
-            const localVarAxiosArgs = await SysJobApiAxiosParamCreator(configuration).apiSysJobPageJobDetailGet(jobId, description, page, pageSize, field, order, descStr, options);
+        async apiSysJobPageJobDetailPost(body?: PageJobInput, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<AdminResultSqlSugarPagedListJobOutput>>> {
+            const localVarAxiosArgs = await SysJobApiAxiosParamCreator(configuration).apiSysJobPageJobDetailPost(body, options);
             return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                 const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                 return axios.request(axiosRequestArgs);
@@ -1063,18 +1028,12 @@ export const SysJobApiFactory = function (configuration?: Configuration, basePat
         /**
          * 
          * @summary 获取作业分页列表
-         * @param {string} [jobId] 作业Id
-         * @param {string} [description] 描述信息
-         * @param {number} [page] 当前页码
-         * @param {number} [pageSize] 页码容量
-         * @param {string} [field] 排序字段
-         * @param {string} [order] 排序方向
-         * @param {string} [descStr] 降序排序
+         * @param {PageJobInput} [body] 
          * @param {*} [options] Override http request option.
          * @throws {RequiredError}
          */
-        async apiSysJobPageJobDetailGet(jobId?: string, description?: string, page?: number, pageSize?: number, field?: string, order?: string, descStr?: string, options?: AxiosRequestConfig): Promise<AxiosResponse<AdminResultSqlSugarPagedListJobOutput>> {
-            return SysJobApiFp(configuration).apiSysJobPageJobDetailGet(jobId, description, page, pageSize, field, order, descStr, options).then((request) => request(axios, basePath));
+        async apiSysJobPageJobDetailPost(body?: PageJobInput, options?: AxiosRequestConfig): Promise<AxiosResponse<AdminResultSqlSugarPagedListJobOutput>> {
+            return SysJobApiFp(configuration).apiSysJobPageJobDetailPost(body, options).then((request) => request(axios, basePath));
         },
         /**
          * 
@@ -1251,19 +1210,13 @@ export class SysJobApi extends BaseAPI {
     /**
      * 
      * @summary 获取作业分页列表
-     * @param {string} [jobId] 作业Id
-     * @param {string} [description] 描述信息
-     * @param {number} [page] 当前页码
-     * @param {number} [pageSize] 页码容量
-     * @param {string} [field] 排序字段
-     * @param {string} [order] 排序方向
-     * @param {string} [descStr] 降序排序
+     * @param {PageJobInput} [body] 
      * @param {*} [options] Override http request option.
      * @throws {RequiredError}
      * @memberof SysJobApi
      */
-    public async apiSysJobPageJobDetailGet(jobId?: string, description?: string, page?: number, pageSize?: number, field?: string, order?: string, descStr?: string, options?: AxiosRequestConfig) : Promise<AxiosResponse<AdminResultSqlSugarPagedListJobOutput>> {
-        return SysJobApiFp(this.configuration).apiSysJobPageJobDetailGet(jobId, description, page, pageSize, field, order, descStr, options).then((request) => request(this.axios, this.basePath));
+    public async apiSysJobPageJobDetailPost(body?: PageJobInput, options?: AxiosRequestConfig) : Promise<AxiosResponse<AdminResultSqlSugarPagedListJobOutput>> {
+        return SysJobApiFp(this.configuration).apiSysJobPageJobDetailPost(body, options).then((request) => request(this.axios, this.basePath));
     }
     /**
      * 

+ 16 - 67
Web/src/api-services/apis/sys-log-diff-api.ts

@@ -18,6 +18,7 @@ import { Configuration } from '../configuration';
 import { BASE_PATH, COLLECTION_FORMATS, RequestArgs, BaseAPI, RequiredError } from '../base';
 import { AdminResultBoolean } from '../models';
 import { AdminResultSqlSugarPagedListSysLogDiff } from '../models';
+import { PageLogInput } from '../models';
 /**
  * SysLogDiffApi - axios parameter creator
  * @export
@@ -63,17 +64,11 @@ export const SysLogDiffApiAxiosParamCreator = function (configuration?: Configur
         /**
          * 
          * @summary 获取差异日志分页列表
-         * @param {Date} [startTime] 开始时间
-         * @param {Date} [endTime] 结束时间
-         * @param {number} [page] 当前页码
-         * @param {number} [pageSize] 页码容量
-         * @param {string} [field] 排序字段
-         * @param {string} [order] 排序方向
-         * @param {string} [descStr] 降序排序
+         * @param {PageLogInput} [body] 
          * @param {*} [options] Override http request option.
          * @throws {RequiredError}
          */
-        apiSysLogDiffPageGet: async (startTime?: Date, endTime?: Date, page?: number, pageSize?: number, field?: string, order?: string, descStr?: string, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
+        apiSysLogDiffPagePost: async (body?: PageLogInput, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
             const localVarPath = `/api/sysLogDiff/page`;
             // use dummy base URL string because the URL constructor only accepts absolute URLs.
             const localVarUrlObj = new URL(localVarPath, 'https://example.com');
@@ -81,43 +76,13 @@ export const SysLogDiffApiAxiosParamCreator = function (configuration?: Configur
             if (configuration) {
                 baseOptions = configuration.baseOptions;
             }
-            const localVarRequestOptions :AxiosRequestConfig = { method: 'GET', ...baseOptions, ...options};
+            const localVarRequestOptions :AxiosRequestConfig = { method: 'POST', ...baseOptions, ...options};
             const localVarHeaderParameter = {} as any;
             const localVarQueryParameter = {} as any;
 
             // authentication Bearer required
 
-            if (startTime !== undefined) {
-                localVarQueryParameter['StartTime'] = (startTime as any instanceof Date) ?
-                    (startTime as any).toISOString() :
-                    startTime;
-            }
-
-            if (endTime !== undefined) {
-                localVarQueryParameter['EndTime'] = (endTime as any instanceof Date) ?
-                    (endTime as any).toISOString() :
-                    endTime;
-            }
-
-            if (page !== undefined) {
-                localVarQueryParameter['Page'] = page;
-            }
-
-            if (pageSize !== undefined) {
-                localVarQueryParameter['PageSize'] = pageSize;
-            }
-
-            if (field !== undefined) {
-                localVarQueryParameter['Field'] = field;
-            }
-
-            if (order !== undefined) {
-                localVarQueryParameter['Order'] = order;
-            }
-
-            if (descStr !== undefined) {
-                localVarQueryParameter['DescStr'] = descStr;
-            }
+            localVarHeaderParameter['Content-Type'] = 'application/json-patch+json';
 
             const query = new URLSearchParams(localVarUrlObj.search);
             for (const key in localVarQueryParameter) {
@@ -129,6 +94,8 @@ export const SysLogDiffApiAxiosParamCreator = function (configuration?: Configur
             localVarUrlObj.search = (new URLSearchParams(query)).toString();
             let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
             localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
+            const needsSerialization = (typeof body !== "string") || localVarRequestOptions.headers['Content-Type'] === 'application/json';
+            localVarRequestOptions.data =  needsSerialization ? JSON.stringify(body !== undefined ? body : {}) : (body || "");
 
             return {
                 url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,
@@ -160,18 +127,12 @@ export const SysLogDiffApiFp = function(configuration?: Configuration) {
         /**
          * 
          * @summary 获取差异日志分页列表
-         * @param {Date} [startTime] 开始时间
-         * @param {Date} [endTime] 结束时间
-         * @param {number} [page] 当前页码
-         * @param {number} [pageSize] 页码容量
-         * @param {string} [field] 排序字段
-         * @param {string} [order] 排序方向
-         * @param {string} [descStr] 降序排序
+         * @param {PageLogInput} [body] 
          * @param {*} [options] Override http request option.
          * @throws {RequiredError}
          */
-        async apiSysLogDiffPageGet(startTime?: Date, endTime?: Date, page?: number, pageSize?: number, field?: string, order?: string, descStr?: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<AdminResultSqlSugarPagedListSysLogDiff>>> {
-            const localVarAxiosArgs = await SysLogDiffApiAxiosParamCreator(configuration).apiSysLogDiffPageGet(startTime, endTime, page, pageSize, field, order, descStr, options);
+        async apiSysLogDiffPagePost(body?: PageLogInput, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<AdminResultSqlSugarPagedListSysLogDiff>>> {
+            const localVarAxiosArgs = await SysLogDiffApiAxiosParamCreator(configuration).apiSysLogDiffPagePost(body, options);
             return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                 const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                 return axios.request(axiosRequestArgs);
@@ -198,18 +159,12 @@ export const SysLogDiffApiFactory = function (configuration?: Configuration, bas
         /**
          * 
          * @summary 获取差异日志分页列表
-         * @param {Date} [startTime] 开始时间
-         * @param {Date} [endTime] 结束时间
-         * @param {number} [page] 当前页码
-         * @param {number} [pageSize] 页码容量
-         * @param {string} [field] 排序字段
-         * @param {string} [order] 排序方向
-         * @param {string} [descStr] 降序排序
+         * @param {PageLogInput} [body] 
          * @param {*} [options] Override http request option.
          * @throws {RequiredError}
          */
-        async apiSysLogDiffPageGet(startTime?: Date, endTime?: Date, page?: number, pageSize?: number, field?: string, order?: string, descStr?: string, options?: AxiosRequestConfig): Promise<AxiosResponse<AdminResultSqlSugarPagedListSysLogDiff>> {
-            return SysLogDiffApiFp(configuration).apiSysLogDiffPageGet(startTime, endTime, page, pageSize, field, order, descStr, options).then((request) => request(axios, basePath));
+        async apiSysLogDiffPagePost(body?: PageLogInput, options?: AxiosRequestConfig): Promise<AxiosResponse<AdminResultSqlSugarPagedListSysLogDiff>> {
+            return SysLogDiffApiFp(configuration).apiSysLogDiffPagePost(body, options).then((request) => request(axios, basePath));
         },
     };
 };
@@ -234,18 +189,12 @@ export class SysLogDiffApi extends BaseAPI {
     /**
      * 
      * @summary 获取差异日志分页列表
-     * @param {Date} [startTime] 开始时间
-     * @param {Date} [endTime] 结束时间
-     * @param {number} [page] 当前页码
-     * @param {number} [pageSize] 页码容量
-     * @param {string} [field] 排序字段
-     * @param {string} [order] 排序方向
-     * @param {string} [descStr] 降序排序
+     * @param {PageLogInput} [body] 
      * @param {*} [options] Override http request option.
      * @throws {RequiredError}
      * @memberof SysLogDiffApi
      */
-    public async apiSysLogDiffPageGet(startTime?: Date, endTime?: Date, page?: number, pageSize?: number, field?: string, order?: string, descStr?: string, options?: AxiosRequestConfig) : Promise<AxiosResponse<AdminResultSqlSugarPagedListSysLogDiff>> {
-        return SysLogDiffApiFp(this.configuration).apiSysLogDiffPageGet(startTime, endTime, page, pageSize, field, order, descStr, options).then((request) => request(this.axios, this.basePath));
+    public async apiSysLogDiffPagePost(body?: PageLogInput, options?: AxiosRequestConfig) : Promise<AxiosResponse<AdminResultSqlSugarPagedListSysLogDiff>> {
+        return SysLogDiffApiFp(this.configuration).apiSysLogDiffPagePost(body, options).then((request) => request(this.axios, this.basePath));
     }
 }

+ 16 - 67
Web/src/api-services/apis/sys-log-op-api.ts

@@ -19,6 +19,7 @@ import { BASE_PATH, COLLECTION_FORMATS, RequestArgs, BaseAPI, RequiredError } fr
 import { AdminResultBoolean } from '../models';
 import { AdminResultSqlSugarPagedListSysLogOp } from '../models';
 import { LogInput } from '../models';
+import { PageLogInput } from '../models';
 /**
  * SysLogOpApi - axios parameter creator
  * @export
@@ -105,17 +106,11 @@ export const SysLogOpApiAxiosParamCreator = function (configuration?: Configurat
         /**
          * 
          * @summary 获取操作日志分页列表
-         * @param {Date} [startTime] 开始时间
-         * @param {Date} [endTime] 结束时间
-         * @param {number} [page] 当前页码
-         * @param {number} [pageSize] 页码容量
-         * @param {string} [field] 排序字段
-         * @param {string} [order] 排序方向
-         * @param {string} [descStr] 降序排序
+         * @param {PageLogInput} [body] 
          * @param {*} [options] Override http request option.
          * @throws {RequiredError}
          */
-        apiSysLogOpPageGet: async (startTime?: Date, endTime?: Date, page?: number, pageSize?: number, field?: string, order?: string, descStr?: string, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
+        apiSysLogOpPagePost: async (body?: PageLogInput, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
             const localVarPath = `/api/sysLogOp/page`;
             // use dummy base URL string because the URL constructor only accepts absolute URLs.
             const localVarUrlObj = new URL(localVarPath, 'https://example.com');
@@ -123,43 +118,13 @@ export const SysLogOpApiAxiosParamCreator = function (configuration?: Configurat
             if (configuration) {
                 baseOptions = configuration.baseOptions;
             }
-            const localVarRequestOptions :AxiosRequestConfig = { method: 'GET', ...baseOptions, ...options};
+            const localVarRequestOptions :AxiosRequestConfig = { method: 'POST', ...baseOptions, ...options};
             const localVarHeaderParameter = {} as any;
             const localVarQueryParameter = {} as any;
 
             // authentication Bearer required
 
-            if (startTime !== undefined) {
-                localVarQueryParameter['StartTime'] = (startTime as any instanceof Date) ?
-                    (startTime as any).toISOString() :
-                    startTime;
-            }
-
-            if (endTime !== undefined) {
-                localVarQueryParameter['EndTime'] = (endTime as any instanceof Date) ?
-                    (endTime as any).toISOString() :
-                    endTime;
-            }
-
-            if (page !== undefined) {
-                localVarQueryParameter['Page'] = page;
-            }
-
-            if (pageSize !== undefined) {
-                localVarQueryParameter['PageSize'] = pageSize;
-            }
-
-            if (field !== undefined) {
-                localVarQueryParameter['Field'] = field;
-            }
-
-            if (order !== undefined) {
-                localVarQueryParameter['Order'] = order;
-            }
-
-            if (descStr !== undefined) {
-                localVarQueryParameter['DescStr'] = descStr;
-            }
+            localVarHeaderParameter['Content-Type'] = 'application/json-patch+json';
 
             const query = new URLSearchParams(localVarUrlObj.search);
             for (const key in localVarQueryParameter) {
@@ -171,6 +136,8 @@ export const SysLogOpApiAxiosParamCreator = function (configuration?: Configurat
             localVarUrlObj.search = (new URLSearchParams(query)).toString();
             let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
             localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
+            const needsSerialization = (typeof body !== "string") || localVarRequestOptions.headers['Content-Type'] === 'application/json';
+            localVarRequestOptions.data =  needsSerialization ? JSON.stringify(body !== undefined ? body : {}) : (body || "");
 
             return {
                 url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,
@@ -216,18 +183,12 @@ export const SysLogOpApiFp = function(configuration?: Configuration) {
         /**
          * 
          * @summary 获取操作日志分页列表
-         * @param {Date} [startTime] 开始时间
-         * @param {Date} [endTime] 结束时间
-         * @param {number} [page] 当前页码
-         * @param {number} [pageSize] 页码容量
-         * @param {string} [field] 排序字段
-         * @param {string} [order] 排序方向
-         * @param {string} [descStr] 降序排序
+         * @param {PageLogInput} [body] 
          * @param {*} [options] Override http request option.
          * @throws {RequiredError}
          */
-        async apiSysLogOpPageGet(startTime?: Date, endTime?: Date, page?: number, pageSize?: number, field?: string, order?: string, descStr?: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<AdminResultSqlSugarPagedListSysLogOp>>> {
-            const localVarAxiosArgs = await SysLogOpApiAxiosParamCreator(configuration).apiSysLogOpPageGet(startTime, endTime, page, pageSize, field, order, descStr, options);
+        async apiSysLogOpPagePost(body?: PageLogInput, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<AdminResultSqlSugarPagedListSysLogOp>>> {
+            const localVarAxiosArgs = await SysLogOpApiAxiosParamCreator(configuration).apiSysLogOpPagePost(body, options);
             return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                 const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                 return axios.request(axiosRequestArgs);
@@ -264,18 +225,12 @@ export const SysLogOpApiFactory = function (configuration?: Configuration, baseP
         /**
          * 
          * @summary 获取操作日志分页列表
-         * @param {Date} [startTime] 开始时间
-         * @param {Date} [endTime] 结束时间
-         * @param {number} [page] 当前页码
-         * @param {number} [pageSize] 页码容量
-         * @param {string} [field] 排序字段
-         * @param {string} [order] 排序方向
-         * @param {string} [descStr] 降序排序
+         * @param {PageLogInput} [body] 
          * @param {*} [options] Override http request option.
          * @throws {RequiredError}
          */
-        async apiSysLogOpPageGet(startTime?: Date, endTime?: Date, page?: number, pageSize?: number, field?: string, order?: string, descStr?: string, options?: AxiosRequestConfig): Promise<AxiosResponse<AdminResultSqlSugarPagedListSysLogOp>> {
-            return SysLogOpApiFp(configuration).apiSysLogOpPageGet(startTime, endTime, page, pageSize, field, order, descStr, options).then((request) => request(axios, basePath));
+        async apiSysLogOpPagePost(body?: PageLogInput, options?: AxiosRequestConfig): Promise<AxiosResponse<AdminResultSqlSugarPagedListSysLogOp>> {
+            return SysLogOpApiFp(configuration).apiSysLogOpPagePost(body, options).then((request) => request(axios, basePath));
         },
     };
 };
@@ -311,18 +266,12 @@ export class SysLogOpApi extends BaseAPI {
     /**
      * 
      * @summary 获取操作日志分页列表
-     * @param {Date} [startTime] 开始时间
-     * @param {Date} [endTime] 结束时间
-     * @param {number} [page] 当前页码
-     * @param {number} [pageSize] 页码容量
-     * @param {string} [field] 排序字段
-     * @param {string} [order] 排序方向
-     * @param {string} [descStr] 降序排序
+     * @param {PageLogInput} [body] 
      * @param {*} [options] Override http request option.
      * @throws {RequiredError}
      * @memberof SysLogOpApi
      */
-    public async apiSysLogOpPageGet(startTime?: Date, endTime?: Date, page?: number, pageSize?: number, field?: string, order?: string, descStr?: string, options?: AxiosRequestConfig) : Promise<AxiosResponse<AdminResultSqlSugarPagedListSysLogOp>> {
-        return SysLogOpApiFp(this.configuration).apiSysLogOpPageGet(startTime, endTime, page, pageSize, field, order, descStr, options).then((request) => request(this.axios, this.basePath));
+    public async apiSysLogOpPagePost(body?: PageLogInput, options?: AxiosRequestConfig) : Promise<AxiosResponse<AdminResultSqlSugarPagedListSysLogOp>> {
+        return SysLogOpApiFp(this.configuration).apiSysLogOpPagePost(body, options).then((request) => request(this.axios, this.basePath));
     }
 }

+ 16 - 67
Web/src/api-services/apis/sys-log-vis-api.ts

@@ -18,6 +18,7 @@ import { Configuration } from '../configuration';
 import { BASE_PATH, COLLECTION_FORMATS, RequestArgs, BaseAPI, RequiredError } from '../base';
 import { AdminResultBoolean } from '../models';
 import { AdminResultSqlSugarPagedListSysLogVis } from '../models';
+import { PageLogInput } from '../models';
 /**
  * SysLogVisApi - axios parameter creator
  * @export
@@ -63,17 +64,11 @@ export const SysLogVisApiAxiosParamCreator = function (configuration?: Configura
         /**
          * 
          * @summary 获取访问日志分页列表
-         * @param {Date} [startTime] 开始时间
-         * @param {Date} [endTime] 结束时间
-         * @param {number} [page] 当前页码
-         * @param {number} [pageSize] 页码容量
-         * @param {string} [field] 排序字段
-         * @param {string} [order] 排序方向
-         * @param {string} [descStr] 降序排序
+         * @param {PageLogInput} [body] 
          * @param {*} [options] Override http request option.
          * @throws {RequiredError}
          */
-        apiSysLogVisPageGet: async (startTime?: Date, endTime?: Date, page?: number, pageSize?: number, field?: string, order?: string, descStr?: string, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
+        apiSysLogVisPagePost: async (body?: PageLogInput, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
             const localVarPath = `/api/sysLogVis/page`;
             // use dummy base URL string because the URL constructor only accepts absolute URLs.
             const localVarUrlObj = new URL(localVarPath, 'https://example.com');
@@ -81,43 +76,13 @@ export const SysLogVisApiAxiosParamCreator = function (configuration?: Configura
             if (configuration) {
                 baseOptions = configuration.baseOptions;
             }
-            const localVarRequestOptions :AxiosRequestConfig = { method: 'GET', ...baseOptions, ...options};
+            const localVarRequestOptions :AxiosRequestConfig = { method: 'POST', ...baseOptions, ...options};
             const localVarHeaderParameter = {} as any;
             const localVarQueryParameter = {} as any;
 
             // authentication Bearer required
 
-            if (startTime !== undefined) {
-                localVarQueryParameter['StartTime'] = (startTime as any instanceof Date) ?
-                    (startTime as any).toISOString() :
-                    startTime;
-            }
-
-            if (endTime !== undefined) {
-                localVarQueryParameter['EndTime'] = (endTime as any instanceof Date) ?
-                    (endTime as any).toISOString() :
-                    endTime;
-            }
-
-            if (page !== undefined) {
-                localVarQueryParameter['Page'] = page;
-            }
-
-            if (pageSize !== undefined) {
-                localVarQueryParameter['PageSize'] = pageSize;
-            }
-
-            if (field !== undefined) {
-                localVarQueryParameter['Field'] = field;
-            }
-
-            if (order !== undefined) {
-                localVarQueryParameter['Order'] = order;
-            }
-
-            if (descStr !== undefined) {
-                localVarQueryParameter['DescStr'] = descStr;
-            }
+            localVarHeaderParameter['Content-Type'] = 'application/json-patch+json';
 
             const query = new URLSearchParams(localVarUrlObj.search);
             for (const key in localVarQueryParameter) {
@@ -129,6 +94,8 @@ export const SysLogVisApiAxiosParamCreator = function (configuration?: Configura
             localVarUrlObj.search = (new URLSearchParams(query)).toString();
             let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
             localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
+            const needsSerialization = (typeof body !== "string") || localVarRequestOptions.headers['Content-Type'] === 'application/json';
+            localVarRequestOptions.data =  needsSerialization ? JSON.stringify(body !== undefined ? body : {}) : (body || "");
 
             return {
                 url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,
@@ -160,18 +127,12 @@ export const SysLogVisApiFp = function(configuration?: Configuration) {
         /**
          * 
          * @summary 获取访问日志分页列表
-         * @param {Date} [startTime] 开始时间
-         * @param {Date} [endTime] 结束时间
-         * @param {number} [page] 当前页码
-         * @param {number} [pageSize] 页码容量
-         * @param {string} [field] 排序字段
-         * @param {string} [order] 排序方向
-         * @param {string} [descStr] 降序排序
+         * @param {PageLogInput} [body] 
          * @param {*} [options] Override http request option.
          * @throws {RequiredError}
          */
-        async apiSysLogVisPageGet(startTime?: Date, endTime?: Date, page?: number, pageSize?: number, field?: string, order?: string, descStr?: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<AdminResultSqlSugarPagedListSysLogVis>>> {
-            const localVarAxiosArgs = await SysLogVisApiAxiosParamCreator(configuration).apiSysLogVisPageGet(startTime, endTime, page, pageSize, field, order, descStr, options);
+        async apiSysLogVisPagePost(body?: PageLogInput, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<AdminResultSqlSugarPagedListSysLogVis>>> {
+            const localVarAxiosArgs = await SysLogVisApiAxiosParamCreator(configuration).apiSysLogVisPagePost(body, options);
             return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                 const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                 return axios.request(axiosRequestArgs);
@@ -198,18 +159,12 @@ export const SysLogVisApiFactory = function (configuration?: Configuration, base
         /**
          * 
          * @summary 获取访问日志分页列表
-         * @param {Date} [startTime] 开始时间
-         * @param {Date} [endTime] 结束时间
-         * @param {number} [page] 当前页码
-         * @param {number} [pageSize] 页码容量
-         * @param {string} [field] 排序字段
-         * @param {string} [order] 排序方向
-         * @param {string} [descStr] 降序排序
+         * @param {PageLogInput} [body] 
          * @param {*} [options] Override http request option.
          * @throws {RequiredError}
          */
-        async apiSysLogVisPageGet(startTime?: Date, endTime?: Date, page?: number, pageSize?: number, field?: string, order?: string, descStr?: string, options?: AxiosRequestConfig): Promise<AxiosResponse<AdminResultSqlSugarPagedListSysLogVis>> {
-            return SysLogVisApiFp(configuration).apiSysLogVisPageGet(startTime, endTime, page, pageSize, field, order, descStr, options).then((request) => request(axios, basePath));
+        async apiSysLogVisPagePost(body?: PageLogInput, options?: AxiosRequestConfig): Promise<AxiosResponse<AdminResultSqlSugarPagedListSysLogVis>> {
+            return SysLogVisApiFp(configuration).apiSysLogVisPagePost(body, options).then((request) => request(axios, basePath));
         },
     };
 };
@@ -234,18 +189,12 @@ export class SysLogVisApi extends BaseAPI {
     /**
      * 
      * @summary 获取访问日志分页列表
-     * @param {Date} [startTime] 开始时间
-     * @param {Date} [endTime] 结束时间
-     * @param {number} [page] 当前页码
-     * @param {number} [pageSize] 页码容量
-     * @param {string} [field] 排序字段
-     * @param {string} [order] 排序方向
-     * @param {string} [descStr] 降序排序
+     * @param {PageLogInput} [body] 
      * @param {*} [options] Override http request option.
      * @throws {RequiredError}
      * @memberof SysLogVisApi
      */
-    public async apiSysLogVisPageGet(startTime?: Date, endTime?: Date, page?: number, pageSize?: number, field?: string, order?: string, descStr?: string, options?: AxiosRequestConfig) : Promise<AxiosResponse<AdminResultSqlSugarPagedListSysLogVis>> {
-        return SysLogVisApiFp(this.configuration).apiSysLogVisPageGet(startTime, endTime, page, pageSize, field, order, descStr, options).then((request) => request(this.axios, this.basePath));
+    public async apiSysLogVisPagePost(body?: PageLogInput, options?: AxiosRequestConfig) : Promise<AxiosResponse<AdminResultSqlSugarPagedListSysLogVis>> {
+        return SysLogVisApiFp(this.configuration).apiSysLogVisPagePost(body, options).then((request) => request(this.axios, this.basePath));
     }
 }

+ 16 - 63
Web/src/api-services/apis/sys-notice-api.ts

@@ -23,6 +23,7 @@ import { AdminResultSqlSugarPagedListSysNoticeUser } from '../models';
 import { DeleteNoticeInput } from '../models';
 import { NoticeInput } from '../models';
 import { NoticeTypeEnum } from '../models';
+import { PageNoticeInput } from '../models';
 import { UpdateNoticeInput } from '../models';
 /**
  * SysNoticeApi - axios parameter creator
@@ -115,17 +116,11 @@ export const SysNoticeApiAxiosParamCreator = function (configuration?: Configura
         /**
          * 
          * @summary 获取通知公告分页列表
-         * @param {string} [title] 标题
-         * @param {NoticeTypeEnum} [type] 类型(1通知 2公告)
-         * @param {number} [page] 当前页码
-         * @param {number} [pageSize] 页码容量
-         * @param {string} [field] 排序字段
-         * @param {string} [order] 排序方向
-         * @param {string} [descStr] 降序排序
+         * @param {PageNoticeInput} [body] 
          * @param {*} [options] Override http request option.
          * @throws {RequiredError}
          */
-        apiSysNoticePageGet: async (title?: string, type?: NoticeTypeEnum, page?: number, pageSize?: number, field?: string, order?: string, descStr?: string, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
+        apiSysNoticePagePost: async (body?: PageNoticeInput, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
             const localVarPath = `/api/sysNotice/page`;
             // use dummy base URL string because the URL constructor only accepts absolute URLs.
             const localVarUrlObj = new URL(localVarPath, 'https://example.com');
@@ -133,39 +128,13 @@ export const SysNoticeApiAxiosParamCreator = function (configuration?: Configura
             if (configuration) {
                 baseOptions = configuration.baseOptions;
             }
-            const localVarRequestOptions :AxiosRequestConfig = { method: 'GET', ...baseOptions, ...options};
+            const localVarRequestOptions :AxiosRequestConfig = { method: 'POST', ...baseOptions, ...options};
             const localVarHeaderParameter = {} as any;
             const localVarQueryParameter = {} as any;
 
             // authentication Bearer required
 
-            if (title !== undefined) {
-                localVarQueryParameter['Title'] = title;
-            }
-
-            if (type !== undefined) {
-                localVarQueryParameter['Type'] = type;
-            }
-
-            if (page !== undefined) {
-                localVarQueryParameter['Page'] = page;
-            }
-
-            if (pageSize !== undefined) {
-                localVarQueryParameter['PageSize'] = pageSize;
-            }
-
-            if (field !== undefined) {
-                localVarQueryParameter['Field'] = field;
-            }
-
-            if (order !== undefined) {
-                localVarQueryParameter['Order'] = order;
-            }
-
-            if (descStr !== undefined) {
-                localVarQueryParameter['DescStr'] = descStr;
-            }
+            localVarHeaderParameter['Content-Type'] = 'application/json-patch+json';
 
             const query = new URLSearchParams(localVarUrlObj.search);
             for (const key in localVarQueryParameter) {
@@ -177,6 +146,8 @@ export const SysNoticeApiAxiosParamCreator = function (configuration?: Configura
             localVarUrlObj.search = (new URLSearchParams(query)).toString();
             let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
             localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
+            const needsSerialization = (typeof body !== "string") || localVarRequestOptions.headers['Content-Type'] === 'application/json';
+            localVarRequestOptions.data =  needsSerialization ? JSON.stringify(body !== undefined ? body : {}) : (body || "");
 
             return {
                 url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,
@@ -453,18 +424,12 @@ export const SysNoticeApiFp = function(configuration?: Configuration) {
         /**
          * 
          * @summary 获取通知公告分页列表
-         * @param {string} [title] 标题
-         * @param {NoticeTypeEnum} [type] 类型(1通知 2公告)
-         * @param {number} [page] 当前页码
-         * @param {number} [pageSize] 页码容量
-         * @param {string} [field] 排序字段
-         * @param {string} [order] 排序方向
-         * @param {string} [descStr] 降序排序
+         * @param {PageNoticeInput} [body] 
          * @param {*} [options] Override http request option.
          * @throws {RequiredError}
          */
-        async apiSysNoticePageGet(title?: string, type?: NoticeTypeEnum, page?: number, pageSize?: number, field?: string, order?: string, descStr?: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<AdminResultSqlSugarPagedListSysNotice>>> {
-            const localVarAxiosArgs = await SysNoticeApiAxiosParamCreator(configuration).apiSysNoticePageGet(title, type, page, pageSize, field, order, descStr, options);
+        async apiSysNoticePagePost(body?: PageNoticeInput, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<AdminResultSqlSugarPagedListSysNotice>>> {
+            const localVarAxiosArgs = await SysNoticeApiAxiosParamCreator(configuration).apiSysNoticePagePost(body, options);
             return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                 const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                 return axios.request(axiosRequestArgs);
@@ -577,18 +542,12 @@ export const SysNoticeApiFactory = function (configuration?: Configuration, base
         /**
          * 
          * @summary 获取通知公告分页列表
-         * @param {string} [title] 标题
-         * @param {NoticeTypeEnum} [type] 类型(1通知 2公告)
-         * @param {number} [page] 当前页码
-         * @param {number} [pageSize] 页码容量
-         * @param {string} [field] 排序字段
-         * @param {string} [order] 排序方向
-         * @param {string} [descStr] 降序排序
+         * @param {PageNoticeInput} [body] 
          * @param {*} [options] Override http request option.
          * @throws {RequiredError}
          */
-        async apiSysNoticePageGet(title?: string, type?: NoticeTypeEnum, page?: number, pageSize?: number, field?: string, order?: string, descStr?: string, options?: AxiosRequestConfig): Promise<AxiosResponse<AdminResultSqlSugarPagedListSysNotice>> {
-            return SysNoticeApiFp(configuration).apiSysNoticePageGet(title, type, page, pageSize, field, order, descStr, options).then((request) => request(axios, basePath));
+        async apiSysNoticePagePost(body?: PageNoticeInput, options?: AxiosRequestConfig): Promise<AxiosResponse<AdminResultSqlSugarPagedListSysNotice>> {
+            return SysNoticeApiFp(configuration).apiSysNoticePagePost(body, options).then((request) => request(axios, basePath));
         },
         /**
          * 
@@ -680,19 +639,13 @@ export class SysNoticeApi extends BaseAPI {
     /**
      * 
      * @summary 获取通知公告分页列表
-     * @param {string} [title] 标题
-     * @param {NoticeTypeEnum} [type] 类型(1通知 2公告)
-     * @param {number} [page] 当前页码
-     * @param {number} [pageSize] 页码容量
-     * @param {string} [field] 排序字段
-     * @param {string} [order] 排序方向
-     * @param {string} [descStr] 降序排序
+     * @param {PageNoticeInput} [body] 
      * @param {*} [options] Override http request option.
      * @throws {RequiredError}
      * @memberof SysNoticeApi
      */
-    public async apiSysNoticePageGet(title?: string, type?: NoticeTypeEnum, page?: number, pageSize?: number, field?: string, order?: string, descStr?: string, options?: AxiosRequestConfig) : Promise<AxiosResponse<AdminResultSqlSugarPagedListSysNotice>> {
-        return SysNoticeApiFp(this.configuration).apiSysNoticePageGet(title, type, page, pageSize, field, order, descStr, options).then((request) => request(this.axios, this.basePath));
+    public async apiSysNoticePagePost(body?: PageNoticeInput, options?: AxiosRequestConfig) : Promise<AxiosResponse<AdminResultSqlSugarPagedListSysNotice>> {
+        return SysNoticeApiFp(this.configuration).apiSysNoticePagePost(body, options).then((request) => request(this.axios, this.basePath));
     }
     /**
      * 

+ 16 - 63
Web/src/api-services/apis/sys-online-user-api.ts

@@ -17,6 +17,7 @@ import { Configuration } from '../configuration';
 // @ts-ignore
 import { BASE_PATH, COLLECTION_FORMATS, RequestArgs, BaseAPI, RequiredError } from '../base';
 import { AdminResultSqlSugarPagedListSysOnlineUser } from '../models';
+import { PageOnlineUserInput } from '../models';
 import { SysOnlineUser } from '../models';
 /**
  * SysOnlineUserApi - axios parameter creator
@@ -68,17 +69,11 @@ export const SysOnlineUserApiAxiosParamCreator = function (configuration?: Confi
         /**
          * 
          * @summary 获取在线用户分页列表
-         * @param {string} [userName] 账号名称
-         * @param {string} [realName] 真实姓名
-         * @param {number} [page] 当前页码
-         * @param {number} [pageSize] 页码容量
-         * @param {string} [field] 排序字段
-         * @param {string} [order] 排序方向
-         * @param {string} [descStr] 降序排序
+         * @param {PageOnlineUserInput} [body] 
          * @param {*} [options] Override http request option.
          * @throws {RequiredError}
          */
-        apiSysOnlineUserPageGet: async (userName?: string, realName?: string, page?: number, pageSize?: number, field?: string, order?: string, descStr?: string, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
+        apiSysOnlineUserPagePost: async (body?: PageOnlineUserInput, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
             const localVarPath = `/api/sysOnlineUser/page`;
             // use dummy base URL string because the URL constructor only accepts absolute URLs.
             const localVarUrlObj = new URL(localVarPath, 'https://example.com');
@@ -86,39 +81,13 @@ export const SysOnlineUserApiAxiosParamCreator = function (configuration?: Confi
             if (configuration) {
                 baseOptions = configuration.baseOptions;
             }
-            const localVarRequestOptions :AxiosRequestConfig = { method: 'GET', ...baseOptions, ...options};
+            const localVarRequestOptions :AxiosRequestConfig = { method: 'POST', ...baseOptions, ...options};
             const localVarHeaderParameter = {} as any;
             const localVarQueryParameter = {} as any;
 
             // authentication Bearer required
 
-            if (userName !== undefined) {
-                localVarQueryParameter['UserName'] = userName;
-            }
-
-            if (realName !== undefined) {
-                localVarQueryParameter['RealName'] = realName;
-            }
-
-            if (page !== undefined) {
-                localVarQueryParameter['Page'] = page;
-            }
-
-            if (pageSize !== undefined) {
-                localVarQueryParameter['PageSize'] = pageSize;
-            }
-
-            if (field !== undefined) {
-                localVarQueryParameter['Field'] = field;
-            }
-
-            if (order !== undefined) {
-                localVarQueryParameter['Order'] = order;
-            }
-
-            if (descStr !== undefined) {
-                localVarQueryParameter['DescStr'] = descStr;
-            }
+            localVarHeaderParameter['Content-Type'] = 'application/json-patch+json';
 
             const query = new URLSearchParams(localVarUrlObj.search);
             for (const key in localVarQueryParameter) {
@@ -130,6 +99,8 @@ export const SysOnlineUserApiAxiosParamCreator = function (configuration?: Confi
             localVarUrlObj.search = (new URLSearchParams(query)).toString();
             let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
             localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
+            const needsSerialization = (typeof body !== "string") || localVarRequestOptions.headers['Content-Type'] === 'application/json';
+            localVarRequestOptions.data =  needsSerialization ? JSON.stringify(body !== undefined ? body : {}) : (body || "");
 
             return {
                 url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,
@@ -162,18 +133,12 @@ export const SysOnlineUserApiFp = function(configuration?: Configuration) {
         /**
          * 
          * @summary 获取在线用户分页列表
-         * @param {string} [userName] 账号名称
-         * @param {string} [realName] 真实姓名
-         * @param {number} [page] 当前页码
-         * @param {number} [pageSize] 页码容量
-         * @param {string} [field] 排序字段
-         * @param {string} [order] 排序方向
-         * @param {string} [descStr] 降序排序
+         * @param {PageOnlineUserInput} [body] 
          * @param {*} [options] Override http request option.
          * @throws {RequiredError}
          */
-        async apiSysOnlineUserPageGet(userName?: string, realName?: string, page?: number, pageSize?: number, field?: string, order?: string, descStr?: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<AdminResultSqlSugarPagedListSysOnlineUser>>> {
-            const localVarAxiosArgs = await SysOnlineUserApiAxiosParamCreator(configuration).apiSysOnlineUserPageGet(userName, realName, page, pageSize, field, order, descStr, options);
+        async apiSysOnlineUserPagePost(body?: PageOnlineUserInput, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<AdminResultSqlSugarPagedListSysOnlineUser>>> {
+            const localVarAxiosArgs = await SysOnlineUserApiAxiosParamCreator(configuration).apiSysOnlineUserPagePost(body, options);
             return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                 const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                 return axios.request(axiosRequestArgs);
@@ -201,18 +166,12 @@ export const SysOnlineUserApiFactory = function (configuration?: Configuration,
         /**
          * 
          * @summary 获取在线用户分页列表
-         * @param {string} [userName] 账号名称
-         * @param {string} [realName] 真实姓名
-         * @param {number} [page] 当前页码
-         * @param {number} [pageSize] 页码容量
-         * @param {string} [field] 排序字段
-         * @param {string} [order] 排序方向
-         * @param {string} [descStr] 降序排序
+         * @param {PageOnlineUserInput} [body] 
          * @param {*} [options] Override http request option.
          * @throws {RequiredError}
          */
-        async apiSysOnlineUserPageGet(userName?: string, realName?: string, page?: number, pageSize?: number, field?: string, order?: string, descStr?: string, options?: AxiosRequestConfig): Promise<AxiosResponse<AdminResultSqlSugarPagedListSysOnlineUser>> {
-            return SysOnlineUserApiFp(configuration).apiSysOnlineUserPageGet(userName, realName, page, pageSize, field, order, descStr, options).then((request) => request(axios, basePath));
+        async apiSysOnlineUserPagePost(body?: PageOnlineUserInput, options?: AxiosRequestConfig): Promise<AxiosResponse<AdminResultSqlSugarPagedListSysOnlineUser>> {
+            return SysOnlineUserApiFp(configuration).apiSysOnlineUserPagePost(body, options).then((request) => request(axios, basePath));
         },
     };
 };
@@ -238,18 +197,12 @@ export class SysOnlineUserApi extends BaseAPI {
     /**
      * 
      * @summary 获取在线用户分页列表
-     * @param {string} [userName] 账号名称
-     * @param {string} [realName] 真实姓名
-     * @param {number} [page] 当前页码
-     * @param {number} [pageSize] 页码容量
-     * @param {string} [field] 排序字段
-     * @param {string} [order] 排序方向
-     * @param {string} [descStr] 降序排序
+     * @param {PageOnlineUserInput} [body] 
      * @param {*} [options] Override http request option.
      * @throws {RequiredError}
      * @memberof SysOnlineUserApi
      */
-    public async apiSysOnlineUserPageGet(userName?: string, realName?: string, page?: number, pageSize?: number, field?: string, order?: string, descStr?: string, options?: AxiosRequestConfig) : Promise<AxiosResponse<AdminResultSqlSugarPagedListSysOnlineUser>> {
-        return SysOnlineUserApiFp(this.configuration).apiSysOnlineUserPageGet(userName, realName, page, pageSize, field, order, descStr, options).then((request) => request(this.axios, this.basePath));
+    public async apiSysOnlineUserPagePost(body?: PageOnlineUserInput, options?: AxiosRequestConfig) : Promise<AxiosResponse<AdminResultSqlSugarPagedListSysOnlineUser>> {
+        return SysOnlineUserApiFp(this.configuration).apiSysOnlineUserPagePost(body, options).then((request) => request(this.axios, this.basePath));
     }
 }

+ 16 - 71
Web/src/api-services/apis/sys-region-api.ts

@@ -21,6 +21,7 @@ import { AdminResultInt64 } from '../models';
 import { AdminResultListSysRegion } from '../models';
 import { AdminResultSqlSugarPagedListSysRegion } from '../models';
 import { DeleteRegionInput } from '../models';
+import { PageRegionInput } from '../models';
 import { UpdateRegionInput } from '../models';
 /**
  * SysRegionApi - axios parameter creator
@@ -158,18 +159,11 @@ export const SysRegionApiAxiosParamCreator = function (configuration?: Configura
         /**
          * 
          * @summary 获取行政区域分页列表
-         * @param {number} [pid] 父节点Id
-         * @param {string} [name] 名称
-         * @param {string} [code] 编码
-         * @param {number} [page] 当前页码
-         * @param {number} [pageSize] 页码容量
-         * @param {string} [field] 排序字段
-         * @param {string} [order] 排序方向
-         * @param {string} [descStr] 降序排序
+         * @param {PageRegionInput} [body] 
          * @param {*} [options] Override http request option.
          * @throws {RequiredError}
          */
-        apiSysRegionPageGet: async (pid?: number, name?: string, code?: string, page?: number, pageSize?: number, field?: string, order?: string, descStr?: string, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
+        apiSysRegionPagePost: async (body?: PageRegionInput, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
             const localVarPath = `/api/sysRegion/page`;
             // use dummy base URL string because the URL constructor only accepts absolute URLs.
             const localVarUrlObj = new URL(localVarPath, 'https://example.com');
@@ -177,43 +171,13 @@ export const SysRegionApiAxiosParamCreator = function (configuration?: Configura
             if (configuration) {
                 baseOptions = configuration.baseOptions;
             }
-            const localVarRequestOptions :AxiosRequestConfig = { method: 'GET', ...baseOptions, ...options};
+            const localVarRequestOptions :AxiosRequestConfig = { method: 'POST', ...baseOptions, ...options};
             const localVarHeaderParameter = {} as any;
             const localVarQueryParameter = {} as any;
 
             // authentication Bearer required
 
-            if (pid !== undefined) {
-                localVarQueryParameter['Pid'] = pid;
-            }
-
-            if (name !== undefined) {
-                localVarQueryParameter['Name'] = name;
-            }
-
-            if (code !== undefined) {
-                localVarQueryParameter['Code'] = code;
-            }
-
-            if (page !== undefined) {
-                localVarQueryParameter['Page'] = page;
-            }
-
-            if (pageSize !== undefined) {
-                localVarQueryParameter['PageSize'] = pageSize;
-            }
-
-            if (field !== undefined) {
-                localVarQueryParameter['Field'] = field;
-            }
-
-            if (order !== undefined) {
-                localVarQueryParameter['Order'] = order;
-            }
-
-            if (descStr !== undefined) {
-                localVarQueryParameter['DescStr'] = descStr;
-            }
+            localVarHeaderParameter['Content-Type'] = 'application/json-patch+json';
 
             const query = new URLSearchParams(localVarUrlObj.search);
             for (const key in localVarQueryParameter) {
@@ -225,6 +189,8 @@ export const SysRegionApiAxiosParamCreator = function (configuration?: Configura
             localVarUrlObj.search = (new URLSearchParams(query)).toString();
             let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
             localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
+            const needsSerialization = (typeof body !== "string") || localVarRequestOptions.headers['Content-Type'] === 'application/json';
+            localVarRequestOptions.data =  needsSerialization ? JSON.stringify(body !== undefined ? body : {}) : (body || "");
 
             return {
                 url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,
@@ -362,19 +328,12 @@ export const SysRegionApiFp = function(configuration?: Configuration) {
         /**
          * 
          * @summary 获取行政区域分页列表
-         * @param {number} [pid] 父节点Id
-         * @param {string} [name] 名称
-         * @param {string} [code] 编码
-         * @param {number} [page] 当前页码
-         * @param {number} [pageSize] 页码容量
-         * @param {string} [field] 排序字段
-         * @param {string} [order] 排序方向
-         * @param {string} [descStr] 降序排序
+         * @param {PageRegionInput} [body] 
          * @param {*} [options] Override http request option.
          * @throws {RequiredError}
          */
-        async apiSysRegionPageGet(pid?: number, name?: string, code?: string, page?: number, pageSize?: number, field?: string, order?: string, descStr?: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<AdminResultSqlSugarPagedListSysRegion>>> {
-            const localVarAxiosArgs = await SysRegionApiAxiosParamCreator(configuration).apiSysRegionPageGet(pid, name, code, page, pageSize, field, order, descStr, options);
+        async apiSysRegionPagePost(body?: PageRegionInput, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<AdminResultSqlSugarPagedListSysRegion>>> {
+            const localVarAxiosArgs = await SysRegionApiAxiosParamCreator(configuration).apiSysRegionPagePost(body, options);
             return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                 const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                 return axios.request(axiosRequestArgs);
@@ -449,19 +408,12 @@ export const SysRegionApiFactory = function (configuration?: Configuration, base
         /**
          * 
          * @summary 获取行政区域分页列表
-         * @param {number} [pid] 父节点Id
-         * @param {string} [name] 名称
-         * @param {string} [code] 编码
-         * @param {number} [page] 当前页码
-         * @param {number} [pageSize] 页码容量
-         * @param {string} [field] 排序字段
-         * @param {string} [order] 排序方向
-         * @param {string} [descStr] 降序排序
+         * @param {PageRegionInput} [body] 
          * @param {*} [options] Override http request option.
          * @throws {RequiredError}
          */
-        async apiSysRegionPageGet(pid?: number, name?: string, code?: string, page?: number, pageSize?: number, field?: string, order?: string, descStr?: string, options?: AxiosRequestConfig): Promise<AxiosResponse<AdminResultSqlSugarPagedListSysRegion>> {
-            return SysRegionApiFp(configuration).apiSysRegionPageGet(pid, name, code, page, pageSize, field, order, descStr, options).then((request) => request(axios, basePath));
+        async apiSysRegionPagePost(body?: PageRegionInput, options?: AxiosRequestConfig): Promise<AxiosResponse<AdminResultSqlSugarPagedListSysRegion>> {
+            return SysRegionApiFp(configuration).apiSysRegionPagePost(body, options).then((request) => request(axios, basePath));
         },
         /**
          * 
@@ -528,20 +480,13 @@ export class SysRegionApi extends BaseAPI {
     /**
      * 
      * @summary 获取行政区域分页列表
-     * @param {number} [pid] 父节点Id
-     * @param {string} [name] 名称
-     * @param {string} [code] 编码
-     * @param {number} [page] 当前页码
-     * @param {number} [pageSize] 页码容量
-     * @param {string} [field] 排序字段
-     * @param {string} [order] 排序方向
-     * @param {string} [descStr] 降序排序
+     * @param {PageRegionInput} [body] 
      * @param {*} [options] Override http request option.
      * @throws {RequiredError}
      * @memberof SysRegionApi
      */
-    public async apiSysRegionPageGet(pid?: number, name?: string, code?: string, page?: number, pageSize?: number, field?: string, order?: string, descStr?: string, options?: AxiosRequestConfig) : Promise<AxiosResponse<AdminResultSqlSugarPagedListSysRegion>> {
-        return SysRegionApiFp(this.configuration).apiSysRegionPageGet(pid, name, code, page, pageSize, field, order, descStr, options).then((request) => request(this.axios, this.basePath));
+    public async apiSysRegionPagePost(body?: PageRegionInput, options?: AxiosRequestConfig) : Promise<AxiosResponse<AdminResultSqlSugarPagedListSysRegion>> {
+        return SysRegionApiFp(this.configuration).apiSysRegionPagePost(body, options).then((request) => request(this.axios, this.basePath));
     }
     /**
      * 

+ 16 - 63
Web/src/api-services/apis/sys-role-api.ts

@@ -22,6 +22,7 @@ import { AdminResultListInt64 } from '../models';
 import { AdminResultListRoleOutput } from '../models';
 import { AdminResultSqlSugarPagedListSysRole } from '../models';
 import { DeleteRoleInput } from '../models';
+import { PageRoleInput } from '../models';
 import { RoleInput } from '../models';
 import { RoleMenuInput } from '../models';
 import { RoleOrgInput } from '../models';
@@ -336,17 +337,11 @@ export const SysRoleApiAxiosParamCreator = function (configuration?: Configurati
         /**
          * 
          * @summary 获取角色分页列表
-         * @param {string} [name] 名称
-         * @param {string} [code] 编码
-         * @param {number} [page] 当前页码
-         * @param {number} [pageSize] 页码容量
-         * @param {string} [field] 排序字段
-         * @param {string} [order] 排序方向
-         * @param {string} [descStr] 降序排序
+         * @param {PageRoleInput} [body] 
          * @param {*} [options] Override http request option.
          * @throws {RequiredError}
          */
-        apiSysRolePageGet: async (name?: string, code?: string, page?: number, pageSize?: number, field?: string, order?: string, descStr?: string, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
+        apiSysRolePagePost: async (body?: PageRoleInput, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
             const localVarPath = `/api/sysRole/page`;
             // use dummy base URL string because the URL constructor only accepts absolute URLs.
             const localVarUrlObj = new URL(localVarPath, 'https://example.com');
@@ -354,39 +349,13 @@ export const SysRoleApiAxiosParamCreator = function (configuration?: Configurati
             if (configuration) {
                 baseOptions = configuration.baseOptions;
             }
-            const localVarRequestOptions :AxiosRequestConfig = { method: 'GET', ...baseOptions, ...options};
+            const localVarRequestOptions :AxiosRequestConfig = { method: 'POST', ...baseOptions, ...options};
             const localVarHeaderParameter = {} as any;
             const localVarQueryParameter = {} as any;
 
             // authentication Bearer required
 
-            if (name !== undefined) {
-                localVarQueryParameter['Name'] = name;
-            }
-
-            if (code !== undefined) {
-                localVarQueryParameter['Code'] = code;
-            }
-
-            if (page !== undefined) {
-                localVarQueryParameter['Page'] = page;
-            }
-
-            if (pageSize !== undefined) {
-                localVarQueryParameter['PageSize'] = pageSize;
-            }
-
-            if (field !== undefined) {
-                localVarQueryParameter['Field'] = field;
-            }
-
-            if (order !== undefined) {
-                localVarQueryParameter['Order'] = order;
-            }
-
-            if (descStr !== undefined) {
-                localVarQueryParameter['DescStr'] = descStr;
-            }
+            localVarHeaderParameter['Content-Type'] = 'application/json-patch+json';
 
             const query = new URLSearchParams(localVarUrlObj.search);
             for (const key in localVarQueryParameter) {
@@ -398,6 +367,8 @@ export const SysRoleApiAxiosParamCreator = function (configuration?: Configurati
             localVarUrlObj.search = (new URLSearchParams(query)).toString();
             let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
             localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
+            const needsSerialization = (typeof body !== "string") || localVarRequestOptions.headers['Content-Type'] === 'application/json';
+            localVarRequestOptions.data =  needsSerialization ? JSON.stringify(body !== undefined ? body : {}) : (body || "");
 
             return {
                 url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,
@@ -597,18 +568,12 @@ export const SysRoleApiFp = function(configuration?: Configuration) {
         /**
          * 
          * @summary 获取角色分页列表
-         * @param {string} [name] 名称
-         * @param {string} [code] 编码
-         * @param {number} [page] 当前页码
-         * @param {number} [pageSize] 页码容量
-         * @param {string} [field] 排序字段
-         * @param {string} [order] 排序方向
-         * @param {string} [descStr] 降序排序
+         * @param {PageRoleInput} [body] 
          * @param {*} [options] Override http request option.
          * @throws {RequiredError}
          */
-        async apiSysRolePageGet(name?: string, code?: string, page?: number, pageSize?: number, field?: string, order?: string, descStr?: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<AdminResultSqlSugarPagedListSysRole>>> {
-            const localVarAxiosArgs = await SysRoleApiAxiosParamCreator(configuration).apiSysRolePageGet(name, code, page, pageSize, field, order, descStr, options);
+        async apiSysRolePagePost(body?: PageRoleInput, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<AdminResultSqlSugarPagedListSysRole>>> {
+            const localVarAxiosArgs = await SysRoleApiAxiosParamCreator(configuration).apiSysRolePagePost(body, options);
             return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                 const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                 return axios.request(axiosRequestArgs);
@@ -725,18 +690,12 @@ export const SysRoleApiFactory = function (configuration?: Configuration, basePa
         /**
          * 
          * @summary 获取角色分页列表
-         * @param {string} [name] 名称
-         * @param {string} [code] 编码
-         * @param {number} [page] 当前页码
-         * @param {number} [pageSize] 页码容量
-         * @param {string} [field] 排序字段
-         * @param {string} [order] 排序方向
-         * @param {string} [descStr] 降序排序
+         * @param {PageRoleInput} [body] 
          * @param {*} [options] Override http request option.
          * @throws {RequiredError}
          */
-        async apiSysRolePageGet(name?: string, code?: string, page?: number, pageSize?: number, field?: string, order?: string, descStr?: string, options?: AxiosRequestConfig): Promise<AxiosResponse<AdminResultSqlSugarPagedListSysRole>> {
-            return SysRoleApiFp(configuration).apiSysRolePageGet(name, code, page, pageSize, field, order, descStr, options).then((request) => request(axios, basePath));
+        async apiSysRolePagePost(body?: PageRoleInput, options?: AxiosRequestConfig): Promise<AxiosResponse<AdminResultSqlSugarPagedListSysRole>> {
+            return SysRoleApiFp(configuration).apiSysRolePagePost(body, options).then((request) => request(axios, basePath));
         },
         /**
          * 
@@ -849,19 +808,13 @@ export class SysRoleApi extends BaseAPI {
     /**
      * 
      * @summary 获取角色分页列表
-     * @param {string} [name] 名称
-     * @param {string} [code] 编码
-     * @param {number} [page] 当前页码
-     * @param {number} [pageSize] 页码容量
-     * @param {string} [field] 排序字段
-     * @param {string} [order] 排序方向
-     * @param {string} [descStr] 降序排序
+     * @param {PageRoleInput} [body] 
      * @param {*} [options] Override http request option.
      * @throws {RequiredError}
      * @memberof SysRoleApi
      */
-    public async apiSysRolePageGet(name?: string, code?: string, page?: number, pageSize?: number, field?: string, order?: string, descStr?: string, options?: AxiosRequestConfig) : Promise<AxiosResponse<AdminResultSqlSugarPagedListSysRole>> {
-        return SysRoleApiFp(this.configuration).apiSysRolePageGet(name, code, page, pageSize, field, order, descStr, options).then((request) => request(this.axios, this.basePath));
+    public async apiSysRolePagePost(body?: PageRoleInput, options?: AxiosRequestConfig) : Promise<AxiosResponse<AdminResultSqlSugarPagedListSysRole>> {
+        return SysRoleApiFp(this.configuration).apiSysRolePagePost(body, options).then((request) => request(this.axios, this.basePath));
     }
     /**
      * 

+ 16 - 63
Web/src/api-services/apis/sys-tenant-api.ts

@@ -21,6 +21,7 @@ import { AdminResultInt32 } from '../models';
 import { AdminResultListInt64 } from '../models';
 import { AdminResultSqlSugarPagedListTenantOutput } from '../models';
 import { DeleteTenantInput } from '../models';
+import { PageTenantInput } from '../models';
 import { RoleMenuInput } from '../models';
 import { TenantInput } from '../models';
 import { TenantUserInput } from '../models';
@@ -239,17 +240,11 @@ export const SysTenantApiAxiosParamCreator = function (configuration?: Configura
         /**
          * 
          * @summary 获取租户分页列表
-         * @param {string} [name] 名称
-         * @param {string} [phone] 电话
-         * @param {number} [page] 当前页码
-         * @param {number} [pageSize] 页码容量
-         * @param {string} [field] 排序字段
-         * @param {string} [order] 排序方向
-         * @param {string} [descStr] 降序排序
+         * @param {PageTenantInput} [body] 
          * @param {*} [options] Override http request option.
          * @throws {RequiredError}
          */
-        apiSysTenantPageGet: async (name?: string, phone?: string, page?: number, pageSize?: number, field?: string, order?: string, descStr?: string, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
+        apiSysTenantPagePost: async (body?: PageTenantInput, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
             const localVarPath = `/api/sysTenant/page`;
             // use dummy base URL string because the URL constructor only accepts absolute URLs.
             const localVarUrlObj = new URL(localVarPath, 'https://example.com');
@@ -257,39 +252,13 @@ export const SysTenantApiAxiosParamCreator = function (configuration?: Configura
             if (configuration) {
                 baseOptions = configuration.baseOptions;
             }
-            const localVarRequestOptions :AxiosRequestConfig = { method: 'GET', ...baseOptions, ...options};
+            const localVarRequestOptions :AxiosRequestConfig = { method: 'POST', ...baseOptions, ...options};
             const localVarHeaderParameter = {} as any;
             const localVarQueryParameter = {} as any;
 
             // authentication Bearer required
 
-            if (name !== undefined) {
-                localVarQueryParameter['Name'] = name;
-            }
-
-            if (phone !== undefined) {
-                localVarQueryParameter['Phone'] = phone;
-            }
-
-            if (page !== undefined) {
-                localVarQueryParameter['Page'] = page;
-            }
-
-            if (pageSize !== undefined) {
-                localVarQueryParameter['PageSize'] = pageSize;
-            }
-
-            if (field !== undefined) {
-                localVarQueryParameter['Field'] = field;
-            }
-
-            if (order !== undefined) {
-                localVarQueryParameter['Order'] = order;
-            }
-
-            if (descStr !== undefined) {
-                localVarQueryParameter['DescStr'] = descStr;
-            }
+            localVarHeaderParameter['Content-Type'] = 'application/json-patch+json';
 
             const query = new URLSearchParams(localVarUrlObj.search);
             for (const key in localVarQueryParameter) {
@@ -301,6 +270,8 @@ export const SysTenantApiAxiosParamCreator = function (configuration?: Configura
             localVarUrlObj.search = (new URLSearchParams(query)).toString();
             let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
             localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
+            const needsSerialization = (typeof body !== "string") || localVarRequestOptions.headers['Content-Type'] === 'application/json';
+            localVarRequestOptions.data =  needsSerialization ? JSON.stringify(body !== undefined ? body : {}) : (body || "");
 
             return {
                 url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,
@@ -512,18 +483,12 @@ export const SysTenantApiFp = function(configuration?: Configuration) {
         /**
          * 
          * @summary 获取租户分页列表
-         * @param {string} [name] 名称
-         * @param {string} [phone] 电话
-         * @param {number} [page] 当前页码
-         * @param {number} [pageSize] 页码容量
-         * @param {string} [field] 排序字段
-         * @param {string} [order] 排序方向
-         * @param {string} [descStr] 降序排序
+         * @param {PageTenantInput} [body] 
          * @param {*} [options] Override http request option.
          * @throws {RequiredError}
          */
-        async apiSysTenantPageGet(name?: string, phone?: string, page?: number, pageSize?: number, field?: string, order?: string, descStr?: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<AdminResultSqlSugarPagedListTenantOutput>>> {
-            const localVarAxiosArgs = await SysTenantApiAxiosParamCreator(configuration).apiSysTenantPageGet(name, phone, page, pageSize, field, order, descStr, options);
+        async apiSysTenantPagePost(body?: PageTenantInput, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<AdminResultSqlSugarPagedListTenantOutput>>> {
+            const localVarAxiosArgs = await SysTenantApiAxiosParamCreator(configuration).apiSysTenantPagePost(body, options);
             return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                 const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                 return axios.request(axiosRequestArgs);
@@ -633,18 +598,12 @@ export const SysTenantApiFactory = function (configuration?: Configuration, base
         /**
          * 
          * @summary 获取租户分页列表
-         * @param {string} [name] 名称
-         * @param {string} [phone] 电话
-         * @param {number} [page] 当前页码
-         * @param {number} [pageSize] 页码容量
-         * @param {string} [field] 排序字段
-         * @param {string} [order] 排序方向
-         * @param {string} [descStr] 降序排序
+         * @param {PageTenantInput} [body] 
          * @param {*} [options] Override http request option.
          * @throws {RequiredError}
          */
-        async apiSysTenantPageGet(name?: string, phone?: string, page?: number, pageSize?: number, field?: string, order?: string, descStr?: string, options?: AxiosRequestConfig): Promise<AxiosResponse<AdminResultSqlSugarPagedListTenantOutput>> {
-            return SysTenantApiFp(configuration).apiSysTenantPageGet(name, phone, page, pageSize, field, order, descStr, options).then((request) => request(axios, basePath));
+        async apiSysTenantPagePost(body?: PageTenantInput, options?: AxiosRequestConfig): Promise<AxiosResponse<AdminResultSqlSugarPagedListTenantOutput>> {
+            return SysTenantApiFp(configuration).apiSysTenantPagePost(body, options).then((request) => request(axios, basePath));
         },
         /**
          * 
@@ -744,19 +703,13 @@ export class SysTenantApi extends BaseAPI {
     /**
      * 
      * @summary 获取租户分页列表
-     * @param {string} [name] 名称
-     * @param {string} [phone] 电话
-     * @param {number} [page] 当前页码
-     * @param {number} [pageSize] 页码容量
-     * @param {string} [field] 排序字段
-     * @param {string} [order] 排序方向
-     * @param {string} [descStr] 降序排序
+     * @param {PageTenantInput} [body] 
      * @param {*} [options] Override http request option.
      * @throws {RequiredError}
      * @memberof SysTenantApi
      */
-    public async apiSysTenantPageGet(name?: string, phone?: string, page?: number, pageSize?: number, field?: string, order?: string, descStr?: string, options?: AxiosRequestConfig) : Promise<AxiosResponse<AdminResultSqlSugarPagedListTenantOutput>> {
-        return SysTenantApiFp(this.configuration).apiSysTenantPageGet(name, phone, page, pageSize, field, order, descStr, options).then((request) => request(this.axios, this.basePath));
+    public async apiSysTenantPagePost(body?: PageTenantInput, options?: AxiosRequestConfig) : Promise<AxiosResponse<AdminResultSqlSugarPagedListTenantOutput>> {
+        return SysTenantApiFp(this.configuration).apiSysTenantPagePost(body, options).then((request) => request(this.axios, this.basePath));
     }
     /**
      * 

+ 16 - 79
Web/src/api-services/apis/sys-user-api.ts

@@ -24,6 +24,7 @@ import { AdminResultSqlSugarPagedListSysUser } from '../models';
 import { AdminResultSysUser } from '../models';
 import { ChangePwdInput } from '../models';
 import { DeleteUserInput } from '../models';
+import { PageUserInput } from '../models';
 import { ResetPwdUserInput } from '../models';
 import { SysUser } from '../models';
 import { UpdateUserInput } from '../models';
@@ -363,19 +364,11 @@ export const SysUserApiAxiosParamCreator = function (configuration?: Configurati
         /**
          * 
          * @summary 获取用户分页列表
-         * @param {string} [account] 账号
-         * @param {string} [realName] 姓名
-         * @param {string} [phone] 手机号
-         * @param {number} [orgId] 查询时所选机构Id
-         * @param {number} [page] 当前页码
-         * @param {number} [pageSize] 页码容量
-         * @param {string} [field] 排序字段
-         * @param {string} [order] 排序方向
-         * @param {string} [descStr] 降序排序
+         * @param {PageUserInput} [body] 
          * @param {*} [options] Override http request option.
          * @throws {RequiredError}
          */
-        apiSysUserPageGet: async (account?: string, realName?: string, phone?: string, orgId?: number, page?: number, pageSize?: number, field?: string, order?: string, descStr?: string, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
+        apiSysUserPagePost: async (body?: PageUserInput, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
             const localVarPath = `/api/sysUser/page`;
             // use dummy base URL string because the URL constructor only accepts absolute URLs.
             const localVarUrlObj = new URL(localVarPath, 'https://example.com');
@@ -383,47 +376,13 @@ export const SysUserApiAxiosParamCreator = function (configuration?: Configurati
             if (configuration) {
                 baseOptions = configuration.baseOptions;
             }
-            const localVarRequestOptions :AxiosRequestConfig = { method: 'GET', ...baseOptions, ...options};
+            const localVarRequestOptions :AxiosRequestConfig = { method: 'POST', ...baseOptions, ...options};
             const localVarHeaderParameter = {} as any;
             const localVarQueryParameter = {} as any;
 
             // authentication Bearer required
 
-            if (account !== undefined) {
-                localVarQueryParameter['Account'] = account;
-            }
-
-            if (realName !== undefined) {
-                localVarQueryParameter['RealName'] = realName;
-            }
-
-            if (phone !== undefined) {
-                localVarQueryParameter['Phone'] = phone;
-            }
-
-            if (orgId !== undefined) {
-                localVarQueryParameter['OrgId'] = orgId;
-            }
-
-            if (page !== undefined) {
-                localVarQueryParameter['Page'] = page;
-            }
-
-            if (pageSize !== undefined) {
-                localVarQueryParameter['PageSize'] = pageSize;
-            }
-
-            if (field !== undefined) {
-                localVarQueryParameter['Field'] = field;
-            }
-
-            if (order !== undefined) {
-                localVarQueryParameter['Order'] = order;
-            }
-
-            if (descStr !== undefined) {
-                localVarQueryParameter['DescStr'] = descStr;
-            }
+            localVarHeaderParameter['Content-Type'] = 'application/json-patch+json';
 
             const query = new URLSearchParams(localVarUrlObj.search);
             for (const key in localVarQueryParameter) {
@@ -435,6 +394,8 @@ export const SysUserApiAxiosParamCreator = function (configuration?: Configurati
             localVarUrlObj.search = (new URLSearchParams(query)).toString();
             let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
             localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
+            const needsSerialization = (typeof body !== "string") || localVarRequestOptions.headers['Content-Type'] === 'application/json';
+            localVarRequestOptions.data =  needsSerialization ? JSON.stringify(body !== undefined ? body : {}) : (body || "");
 
             return {
                 url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,
@@ -687,20 +648,12 @@ export const SysUserApiFp = function(configuration?: Configuration) {
         /**
          * 
          * @summary 获取用户分页列表
-         * @param {string} [account] 账号
-         * @param {string} [realName] 姓名
-         * @param {string} [phone] 手机号
-         * @param {number} [orgId] 查询时所选机构Id
-         * @param {number} [page] 当前页码
-         * @param {number} [pageSize] 页码容量
-         * @param {string} [field] 排序字段
-         * @param {string} [order] 排序方向
-         * @param {string} [descStr] 降序排序
+         * @param {PageUserInput} [body] 
          * @param {*} [options] Override http request option.
          * @throws {RequiredError}
          */
-        async apiSysUserPageGet(account?: string, realName?: string, phone?: string, orgId?: number, page?: number, pageSize?: number, field?: string, order?: string, descStr?: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<AdminResultSqlSugarPagedListSysUser>>> {
-            const localVarAxiosArgs = await SysUserApiAxiosParamCreator(configuration).apiSysUserPageGet(account, realName, phone, orgId, page, pageSize, field, order, descStr, options);
+        async apiSysUserPagePost(body?: PageUserInput, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<AdminResultSqlSugarPagedListSysUser>>> {
+            const localVarAxiosArgs = await SysUserApiAxiosParamCreator(configuration).apiSysUserPagePost(body, options);
             return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                 const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                 return axios.request(axiosRequestArgs);
@@ -839,20 +792,12 @@ export const SysUserApiFactory = function (configuration?: Configuration, basePa
         /**
          * 
          * @summary 获取用户分页列表
-         * @param {string} [account] 账号
-         * @param {string} [realName] 姓名
-         * @param {string} [phone] 手机号
-         * @param {number} [orgId] 查询时所选机构Id
-         * @param {number} [page] 当前页码
-         * @param {number} [pageSize] 页码容量
-         * @param {string} [field] 排序字段
-         * @param {string} [order] 排序方向
-         * @param {string} [descStr] 降序排序
+         * @param {PageUserInput} [body] 
          * @param {*} [options] Override http request option.
          * @throws {RequiredError}
          */
-        async apiSysUserPageGet(account?: string, realName?: string, phone?: string, orgId?: number, page?: number, pageSize?: number, field?: string, order?: string, descStr?: string, options?: AxiosRequestConfig): Promise<AxiosResponse<AdminResultSqlSugarPagedListSysUser>> {
-            return SysUserApiFp(configuration).apiSysUserPageGet(account, realName, phone, orgId, page, pageSize, field, order, descStr, options).then((request) => request(axios, basePath));
+        async apiSysUserPagePost(body?: PageUserInput, options?: AxiosRequestConfig): Promise<AxiosResponse<AdminResultSqlSugarPagedListSysUser>> {
+            return SysUserApiFp(configuration).apiSysUserPagePost(body, options).then((request) => request(axios, basePath));
         },
         /**
          * 
@@ -984,21 +929,13 @@ export class SysUserApi extends BaseAPI {
     /**
      * 
      * @summary 获取用户分页列表
-     * @param {string} [account] 账号
-     * @param {string} [realName] 姓名
-     * @param {string} [phone] 手机号
-     * @param {number} [orgId] 查询时所选机构Id
-     * @param {number} [page] 当前页码
-     * @param {number} [pageSize] 页码容量
-     * @param {string} [field] 排序字段
-     * @param {string} [order] 排序方向
-     * @param {string} [descStr] 降序排序
+     * @param {PageUserInput} [body] 
      * @param {*} [options] Override http request option.
      * @throws {RequiredError}
      * @memberof SysUserApi
      */
-    public async apiSysUserPageGet(account?: string, realName?: string, phone?: string, orgId?: number, page?: number, pageSize?: number, field?: string, order?: string, descStr?: string, options?: AxiosRequestConfig) : Promise<AxiosResponse<AdminResultSqlSugarPagedListSysUser>> {
-        return SysUserApiFp(this.configuration).apiSysUserPageGet(account, realName, phone, orgId, page, pageSize, field, order, descStr, options).then((request) => request(this.axios, this.basePath));
+    public async apiSysUserPagePost(body?: PageUserInput, options?: AxiosRequestConfig) : Promise<AxiosResponse<AdminResultSqlSugarPagedListSysUser>> {
+        return SysUserApiFp(this.configuration).apiSysUserPagePost(body, options).then((request) => request(this.axios, this.basePath));
     }
     /**
      * 

+ 16 - 63
Web/src/api-services/apis/sys-wechat-user-api.ts

@@ -19,6 +19,7 @@ import { BASE_PATH, COLLECTION_FORMATS, RequestArgs, BaseAPI, RequiredError } fr
 import { AdminResultSqlSugarPagedListSysWechatUser } from '../models';
 import { DeleteWechatUserInput } from '../models';
 import { SysWechatUser } from '../models';
+import { WechatUserInput } from '../models';
 /**
  * SysWechatUserApi - axios parameter creator
  * @export
@@ -110,17 +111,11 @@ export const SysWechatUserApiAxiosParamCreator = function (configuration?: Confi
         /**
          * 
          * @summary 获取微信用户列表
-         * @param {string} [nickName] 昵称
-         * @param {string} [phoneNumber] 手机号码
-         * @param {number} [page] 当前页码
-         * @param {number} [pageSize] 页码容量
-         * @param {string} [field] 排序字段
-         * @param {string} [order] 排序方向
-         * @param {string} [descStr] 降序排序
+         * @param {WechatUserInput} [body] 
          * @param {*} [options] Override http request option.
          * @throws {RequiredError}
          */
-        apiSysWechatUserPageGet: async (nickName?: string, phoneNumber?: string, page?: number, pageSize?: number, field?: string, order?: string, descStr?: string, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
+        apiSysWechatUserPagePost: async (body?: WechatUserInput, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
             const localVarPath = `/api/sysWechatUser/page`;
             // use dummy base URL string because the URL constructor only accepts absolute URLs.
             const localVarUrlObj = new URL(localVarPath, 'https://example.com');
@@ -128,39 +123,13 @@ export const SysWechatUserApiAxiosParamCreator = function (configuration?: Confi
             if (configuration) {
                 baseOptions = configuration.baseOptions;
             }
-            const localVarRequestOptions :AxiosRequestConfig = { method: 'GET', ...baseOptions, ...options};
+            const localVarRequestOptions :AxiosRequestConfig = { method: 'POST', ...baseOptions, ...options};
             const localVarHeaderParameter = {} as any;
             const localVarQueryParameter = {} as any;
 
             // authentication Bearer required
 
-            if (nickName !== undefined) {
-                localVarQueryParameter['NickName'] = nickName;
-            }
-
-            if (phoneNumber !== undefined) {
-                localVarQueryParameter['PhoneNumber'] = phoneNumber;
-            }
-
-            if (page !== undefined) {
-                localVarQueryParameter['Page'] = page;
-            }
-
-            if (pageSize !== undefined) {
-                localVarQueryParameter['PageSize'] = pageSize;
-            }
-
-            if (field !== undefined) {
-                localVarQueryParameter['Field'] = field;
-            }
-
-            if (order !== undefined) {
-                localVarQueryParameter['Order'] = order;
-            }
-
-            if (descStr !== undefined) {
-                localVarQueryParameter['DescStr'] = descStr;
-            }
+            localVarHeaderParameter['Content-Type'] = 'application/json-patch+json';
 
             const query = new URLSearchParams(localVarUrlObj.search);
             for (const key in localVarQueryParameter) {
@@ -172,6 +141,8 @@ export const SysWechatUserApiAxiosParamCreator = function (configuration?: Confi
             localVarUrlObj.search = (new URLSearchParams(query)).toString();
             let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
             localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
+            const needsSerialization = (typeof body !== "string") || localVarRequestOptions.headers['Content-Type'] === 'application/json';
+            localVarRequestOptions.data =  needsSerialization ? JSON.stringify(body !== undefined ? body : {}) : (body || "");
 
             return {
                 url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,
@@ -259,18 +230,12 @@ export const SysWechatUserApiFp = function(configuration?: Configuration) {
         /**
          * 
          * @summary 获取微信用户列表
-         * @param {string} [nickName] 昵称
-         * @param {string} [phoneNumber] 手机号码
-         * @param {number} [page] 当前页码
-         * @param {number} [pageSize] 页码容量
-         * @param {string} [field] 排序字段
-         * @param {string} [order] 排序方向
-         * @param {string} [descStr] 降序排序
+         * @param {WechatUserInput} [body] 
          * @param {*} [options] Override http request option.
          * @throws {RequiredError}
          */
-        async apiSysWechatUserPageGet(nickName?: string, phoneNumber?: string, page?: number, pageSize?: number, field?: string, order?: string, descStr?: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<AdminResultSqlSugarPagedListSysWechatUser>>> {
-            const localVarAxiosArgs = await SysWechatUserApiAxiosParamCreator(configuration).apiSysWechatUserPageGet(nickName, phoneNumber, page, pageSize, field, order, descStr, options);
+        async apiSysWechatUserPagePost(body?: WechatUserInput, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<AdminResultSqlSugarPagedListSysWechatUser>>> {
+            const localVarAxiosArgs = await SysWechatUserApiAxiosParamCreator(configuration).apiSysWechatUserPagePost(body, options);
             return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                 const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                 return axios.request(axiosRequestArgs);
@@ -322,18 +287,12 @@ export const SysWechatUserApiFactory = function (configuration?: Configuration,
         /**
          * 
          * @summary 获取微信用户列表
-         * @param {string} [nickName] 昵称
-         * @param {string} [phoneNumber] 手机号码
-         * @param {number} [page] 当前页码
-         * @param {number} [pageSize] 页码容量
-         * @param {string} [field] 排序字段
-         * @param {string} [order] 排序方向
-         * @param {string} [descStr] 降序排序
+         * @param {WechatUserInput} [body] 
          * @param {*} [options] Override http request option.
          * @throws {RequiredError}
          */
-        async apiSysWechatUserPageGet(nickName?: string, phoneNumber?: string, page?: number, pageSize?: number, field?: string, order?: string, descStr?: string, options?: AxiosRequestConfig): Promise<AxiosResponse<AdminResultSqlSugarPagedListSysWechatUser>> {
-            return SysWechatUserApiFp(configuration).apiSysWechatUserPageGet(nickName, phoneNumber, page, pageSize, field, order, descStr, options).then((request) => request(axios, basePath));
+        async apiSysWechatUserPagePost(body?: WechatUserInput, options?: AxiosRequestConfig): Promise<AxiosResponse<AdminResultSqlSugarPagedListSysWechatUser>> {
+            return SysWechatUserApiFp(configuration).apiSysWechatUserPagePost(body, options).then((request) => request(axios, basePath));
         },
         /**
          * 
@@ -380,19 +339,13 @@ export class SysWechatUserApi extends BaseAPI {
     /**
      * 
      * @summary 获取微信用户列表
-     * @param {string} [nickName] 昵称
-     * @param {string} [phoneNumber] 手机号码
-     * @param {number} [page] 当前页码
-     * @param {number} [pageSize] 页码容量
-     * @param {string} [field] 排序字段
-     * @param {string} [order] 排序方向
-     * @param {string} [descStr] 降序排序
+     * @param {WechatUserInput} [body] 
      * @param {*} [options] Override http request option.
      * @throws {RequiredError}
      * @memberof SysWechatUserApi
      */
-    public async apiSysWechatUserPageGet(nickName?: string, phoneNumber?: string, page?: number, pageSize?: number, field?: string, order?: string, descStr?: string, options?: AxiosRequestConfig) : Promise<AxiosResponse<AdminResultSqlSugarPagedListSysWechatUser>> {
-        return SysWechatUserApiFp(this.configuration).apiSysWechatUserPageGet(nickName, phoneNumber, page, pageSize, field, order, descStr, options).then((request) => request(this.axios, this.basePath));
+    public async apiSysWechatUserPagePost(body?: WechatUserInput, options?: AxiosRequestConfig) : Promise<AxiosResponse<AdminResultSqlSugarPagedListSysWechatUser>> {
+        return SysWechatUserApiFp(this.configuration).apiSysWechatUserPagePost(body, options).then((request) => request(this.axios, this.basePath));
     }
     /**
      * 

+ 222 - 0
Web/src/api-services/apis/sys-wx-open-api.ts

@@ -16,9 +16,11 @@ import { Configuration } from '../configuration';
 // Some imports not used depending on template conditions
 // @ts-ignore
 import { BASE_PATH, COLLECTION_FORMATS, RequestArgs, BaseAPI, RequiredError } from '../base';
+import { AddSubscribeMessageTemplateInput } from '../models';
 import { AdminResultObject } from '../models';
 import { AdminResultWxOpenIdOutput } from '../models';
 import { AdminResultWxPhoneOutput } from '../models';
+import { SendSubscribeMessageInput } from '../models';
 import { WxOpenIdLoginInput } from '../models';
 /**
  * SysWxOpenApi - axios parameter creator
@@ -26,6 +28,124 @@ import { WxOpenIdLoginInput } from '../models';
  */
 export const SysWxOpenApiAxiosParamCreator = function (configuration?: Configuration) {
     return {
+        /**
+         * 
+         * @summary 增加订阅消息模板
+         * @param {AddSubscribeMessageTemplateInput} [body] 
+         * @param {*} [options] Override http request option.
+         * @throws {RequiredError}
+         */
+        apiSysWxOpenAddSubscribeMessageTemplatePost: async (body?: AddSubscribeMessageTemplateInput, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
+            const localVarPath = `/api/sysWxOpen/addSubscribeMessageTemplate`;
+            // use dummy base URL string because the URL constructor only accepts absolute URLs.
+            const localVarUrlObj = new URL(localVarPath, 'https://example.com');
+            let baseOptions;
+            if (configuration) {
+                baseOptions = configuration.baseOptions;
+            }
+            const localVarRequestOptions :AxiosRequestConfig = { method: 'POST', ...baseOptions, ...options};
+            const localVarHeaderParameter = {} as any;
+            const localVarQueryParameter = {} as any;
+
+            // authentication Bearer required
+
+            localVarHeaderParameter['Content-Type'] = 'application/json-patch+json';
+
+            const query = new URLSearchParams(localVarUrlObj.search);
+            for (const key in localVarQueryParameter) {
+                query.set(key, localVarQueryParameter[key]);
+            }
+            for (const key in options.params) {
+                query.set(key, options.params[key]);
+            }
+            localVarUrlObj.search = (new URLSearchParams(query)).toString();
+            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
+            localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
+            const needsSerialization = (typeof body !== "string") || localVarRequestOptions.headers['Content-Type'] === 'application/json';
+            localVarRequestOptions.data =  needsSerialization ? JSON.stringify(body !== undefined ? body : {}) : (body || "");
+
+            return {
+                url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,
+                options: localVarRequestOptions,
+            };
+        },
+        /**
+         * 
+         * @summary 发送订阅消息
+         * @param {SendSubscribeMessageInput} [body] 
+         * @param {*} [options] Override http request option.
+         * @throws {RequiredError}
+         */
+        apiSysWxOpenSendSubscribeMessagePost: async (body?: SendSubscribeMessageInput, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
+            const localVarPath = `/api/sysWxOpen/sendSubscribeMessage`;
+            // use dummy base URL string because the URL constructor only accepts absolute URLs.
+            const localVarUrlObj = new URL(localVarPath, 'https://example.com');
+            let baseOptions;
+            if (configuration) {
+                baseOptions = configuration.baseOptions;
+            }
+            const localVarRequestOptions :AxiosRequestConfig = { method: 'POST', ...baseOptions, ...options};
+            const localVarHeaderParameter = {} as any;
+            const localVarQueryParameter = {} as any;
+
+            // authentication Bearer required
+
+            localVarHeaderParameter['Content-Type'] = 'application/json-patch+json';
+
+            const query = new URLSearchParams(localVarUrlObj.search);
+            for (const key in localVarQueryParameter) {
+                query.set(key, localVarQueryParameter[key]);
+            }
+            for (const key in options.params) {
+                query.set(key, options.params[key]);
+            }
+            localVarUrlObj.search = (new URLSearchParams(query)).toString();
+            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
+            localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
+            const needsSerialization = (typeof body !== "string") || localVarRequestOptions.headers['Content-Type'] === 'application/json';
+            localVarRequestOptions.data =  needsSerialization ? JSON.stringify(body !== undefined ? body : {}) : (body || "");
+
+            return {
+                url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,
+                options: localVarRequestOptions,
+            };
+        },
+        /**
+         * 
+         * @summary 获取订阅消息模板列表
+         * @param {*} [options] Override http request option.
+         * @throws {RequiredError}
+         */
+        apiSysWxOpenSubscribeMessageTemplateListGet: async (options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
+            const localVarPath = `/api/sysWxOpen/subscribeMessageTemplateList`;
+            // use dummy base URL string because the URL constructor only accepts absolute URLs.
+            const localVarUrlObj = new URL(localVarPath, 'https://example.com');
+            let baseOptions;
+            if (configuration) {
+                baseOptions = configuration.baseOptions;
+            }
+            const localVarRequestOptions :AxiosRequestConfig = { method: 'GET', ...baseOptions, ...options};
+            const localVarHeaderParameter = {} as any;
+            const localVarQueryParameter = {} as any;
+
+            // authentication Bearer required
+
+            const query = new URLSearchParams(localVarUrlObj.search);
+            for (const key in localVarQueryParameter) {
+                query.set(key, localVarQueryParameter[key]);
+            }
+            for (const key in options.params) {
+                query.set(key, options.params[key]);
+            }
+            localVarUrlObj.search = (new URLSearchParams(query)).toString();
+            let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
+            localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
+
+            return {
+                url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,
+                options: localVarRequestOptions,
+            };
+        },
         /**
          * 
          * @summary 获取微信用户OpenId
@@ -175,6 +295,47 @@ export const SysWxOpenApiAxiosParamCreator = function (configuration?: Configura
  */
 export const SysWxOpenApiFp = function(configuration?: Configuration) {
     return {
+        /**
+         * 
+         * @summary 增加订阅消息模板
+         * @param {AddSubscribeMessageTemplateInput} [body] 
+         * @param {*} [options] Override http request option.
+         * @throws {RequiredError}
+         */
+        async apiSysWxOpenAddSubscribeMessageTemplatePost(body?: AddSubscribeMessageTemplateInput, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<AdminResultObject>>> {
+            const localVarAxiosArgs = await SysWxOpenApiAxiosParamCreator(configuration).apiSysWxOpenAddSubscribeMessageTemplatePost(body, options);
+            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
+                const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
+                return axios.request(axiosRequestArgs);
+            };
+        },
+        /**
+         * 
+         * @summary 发送订阅消息
+         * @param {SendSubscribeMessageInput} [body] 
+         * @param {*} [options] Override http request option.
+         * @throws {RequiredError}
+         */
+        async apiSysWxOpenSendSubscribeMessagePost(body?: SendSubscribeMessageInput, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<AdminResultObject>>> {
+            const localVarAxiosArgs = await SysWxOpenApiAxiosParamCreator(configuration).apiSysWxOpenSendSubscribeMessagePost(body, options);
+            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
+                const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
+                return axios.request(axiosRequestArgs);
+            };
+        },
+        /**
+         * 
+         * @summary 获取订阅消息模板列表
+         * @param {*} [options] Override http request option.
+         * @throws {RequiredError}
+         */
+        async apiSysWxOpenSubscribeMessageTemplateListGet(options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<AdminResultObject>>> {
+            const localVarAxiosArgs = await SysWxOpenApiAxiosParamCreator(configuration).apiSysWxOpenSubscribeMessageTemplateListGet(options);
+            return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
+                const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
+                return axios.request(axiosRequestArgs);
+            };
+        },
         /**
          * 
          * @summary 获取微信用户OpenId
@@ -227,6 +388,35 @@ export const SysWxOpenApiFp = function(configuration?: Configuration) {
  */
 export const SysWxOpenApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) {
     return {
+        /**
+         * 
+         * @summary 增加订阅消息模板
+         * @param {AddSubscribeMessageTemplateInput} [body] 
+         * @param {*} [options] Override http request option.
+         * @throws {RequiredError}
+         */
+        async apiSysWxOpenAddSubscribeMessageTemplatePost(body?: AddSubscribeMessageTemplateInput, options?: AxiosRequestConfig): Promise<AxiosResponse<AdminResultObject>> {
+            return SysWxOpenApiFp(configuration).apiSysWxOpenAddSubscribeMessageTemplatePost(body, options).then((request) => request(axios, basePath));
+        },
+        /**
+         * 
+         * @summary 发送订阅消息
+         * @param {SendSubscribeMessageInput} [body] 
+         * @param {*} [options] Override http request option.
+         * @throws {RequiredError}
+         */
+        async apiSysWxOpenSendSubscribeMessagePost(body?: SendSubscribeMessageInput, options?: AxiosRequestConfig): Promise<AxiosResponse<AdminResultObject>> {
+            return SysWxOpenApiFp(configuration).apiSysWxOpenSendSubscribeMessagePost(body, options).then((request) => request(axios, basePath));
+        },
+        /**
+         * 
+         * @summary 获取订阅消息模板列表
+         * @param {*} [options] Override http request option.
+         * @throws {RequiredError}
+         */
+        async apiSysWxOpenSubscribeMessageTemplateListGet(options?: AxiosRequestConfig): Promise<AxiosResponse<AdminResultObject>> {
+            return SysWxOpenApiFp(configuration).apiSysWxOpenSubscribeMessageTemplateListGet(options).then((request) => request(axios, basePath));
+        },
         /**
          * 
          * @summary 获取微信用户OpenId
@@ -268,6 +458,38 @@ export const SysWxOpenApiFactory = function (configuration?: Configuration, base
  * @extends {BaseAPI}
  */
 export class SysWxOpenApi extends BaseAPI {
+    /**
+     * 
+     * @summary 增加订阅消息模板
+     * @param {AddSubscribeMessageTemplateInput} [body] 
+     * @param {*} [options] Override http request option.
+     * @throws {RequiredError}
+     * @memberof SysWxOpenApi
+     */
+    public async apiSysWxOpenAddSubscribeMessageTemplatePost(body?: AddSubscribeMessageTemplateInput, options?: AxiosRequestConfig) : Promise<AxiosResponse<AdminResultObject>> {
+        return SysWxOpenApiFp(this.configuration).apiSysWxOpenAddSubscribeMessageTemplatePost(body, options).then((request) => request(this.axios, this.basePath));
+    }
+    /**
+     * 
+     * @summary 发送订阅消息
+     * @param {SendSubscribeMessageInput} [body] 
+     * @param {*} [options] Override http request option.
+     * @throws {RequiredError}
+     * @memberof SysWxOpenApi
+     */
+    public async apiSysWxOpenSendSubscribeMessagePost(body?: SendSubscribeMessageInput, options?: AxiosRequestConfig) : Promise<AxiosResponse<AdminResultObject>> {
+        return SysWxOpenApiFp(this.configuration).apiSysWxOpenSendSubscribeMessagePost(body, options).then((request) => request(this.axios, this.basePath));
+    }
+    /**
+     * 
+     * @summary 获取订阅消息模板列表
+     * @param {*} [options] Override http request option.
+     * @throws {RequiredError}
+     * @memberof SysWxOpenApi
+     */
+    public async apiSysWxOpenSubscribeMessageTemplateListGet(options?: AxiosRequestConfig) : Promise<AxiosResponse<AdminResultObject>> {
+        return SysWxOpenApiFp(this.configuration).apiSysWxOpenSubscribeMessageTemplateListGet(options).then((request) => request(this.axios, this.basePath));
+    }
     /**
      * 
      * @summary 获取微信用户OpenId

+ 38 - 0
Web/src/api-services/models/add-subscribe-message-template-input.ts

@@ -0,0 +1,38 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Admin.NET
+ * 让 .NET 开发更简单、更通用、更流行。前后端分离架构(.NET6/Vue3),开箱即用紧随前沿技术。<br/><a href='https://gitee.com/zuohuaijun/Admin.NET/'>https://gitee.com/zuohuaijun/Admin.NET</a>
+ *
+ * OpenAPI spec version: 1.0.0
+ * Contact: 515096995@qq.com
+ *
+ * NOTE: This class is auto generated by the swagger code generator program.
+ * https://github.com/swagger-api/swagger-codegen.git
+ * Do not edit the class manually.
+ */
+/**
+ * 
+ * @export
+ * @interface AddSubscribeMessageTemplateInput
+ */
+export interface AddSubscribeMessageTemplateInput {
+    /**
+     * 模板标题Id
+     * @type {string}
+     * @memberof AddSubscribeMessageTemplateInput
+     */
+    templateTitleId: string;
+    /**
+     * 模板关键词列表,例如 [3,5,4]
+     * @type {Array<number>}
+     * @memberof AddSubscribeMessageTemplateInput
+     */
+    keyworkIdList: Array<number>;
+    /**
+     * 服务场景描述,15个字以内
+     * @type {string}
+     * @memberof AddSubscribeMessageTemplateInput
+     */
+    sceneDescription: string;
+}

+ 57 - 0
Web/src/api-services/models/admin-result-list-enum-entity.ts

@@ -0,0 +1,57 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Admin.NET
+ * 让 .NET 开发更简单、更通用、更流行。前后端分离架构(.NET6/Vue3),开箱即用紧随前沿技术。<br/><a href='https://gitee.com/zuohuaijun/Admin.NET/'>https://gitee.com/zuohuaijun/Admin.NET</a>
+ *
+ * OpenAPI spec version: 1.0.0
+ * Contact: 515096995@qq.com
+ *
+ * NOTE: This class is auto generated by the swagger code generator program.
+ * https://github.com/swagger-api/swagger-codegen.git
+ * Do not edit the class manually.
+ */
+import { EnumEntity } from './enum-entity';
+/**
+ * 全局返回结果
+ * @export
+ * @interface AdminResultListEnumEntity
+ */
+export interface AdminResultListEnumEntity {
+    /**
+     * 状态码
+     * @type {number}
+     * @memberof AdminResultListEnumEntity
+     */
+    code?: number;
+    /**
+     * 类型success、warning、error
+     * @type {string}
+     * @memberof AdminResultListEnumEntity
+     */
+    type?: string | null;
+    /**
+     * 错误信息
+     * @type {string}
+     * @memberof AdminResultListEnumEntity
+     */
+    message?: string | null;
+    /**
+     * 数据
+     * @type {Array<EnumEntity>}
+     * @memberof AdminResultListEnumEntity
+     */
+    result?: Array<EnumEntity> | null;
+    /**
+     * 附加数据
+     * @type {any}
+     * @memberof AdminResultListEnumEntity
+     */
+    extras?: any | null;
+    /**
+     * 时间
+     * @type {Date}
+     * @memberof AdminResultListEnumEntity
+     */
+    time?: Date;
+}

+ 57 - 0
Web/src/api-services/models/admin-result-list-enum-type-output.ts

@@ -0,0 +1,57 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Admin.NET
+ * 让 .NET 开发更简单、更通用、更流行。前后端分离架构(.NET6/Vue3),开箱即用紧随前沿技术。<br/><a href='https://gitee.com/zuohuaijun/Admin.NET/'>https://gitee.com/zuohuaijun/Admin.NET</a>
+ *
+ * OpenAPI spec version: 1.0.0
+ * Contact: 515096995@qq.com
+ *
+ * NOTE: This class is auto generated by the swagger code generator program.
+ * https://github.com/swagger-api/swagger-codegen.git
+ * Do not edit the class manually.
+ */
+import { EnumTypeOutput } from './enum-type-output';
+/**
+ * 全局返回结果
+ * @export
+ * @interface AdminResultListEnumTypeOutput
+ */
+export interface AdminResultListEnumTypeOutput {
+    /**
+     * 状态码
+     * @type {number}
+     * @memberof AdminResultListEnumTypeOutput
+     */
+    code?: number;
+    /**
+     * 类型success、warning、error
+     * @type {string}
+     * @memberof AdminResultListEnumTypeOutput
+     */
+    type?: string | null;
+    /**
+     * 错误信息
+     * @type {string}
+     * @memberof AdminResultListEnumTypeOutput
+     */
+    message?: string | null;
+    /**
+     * 数据
+     * @type {Array<EnumTypeOutput>}
+     * @memberof AdminResultListEnumTypeOutput
+     */
+    result?: Array<EnumTypeOutput> | null;
+    /**
+     * 附加数据
+     * @type {any}
+     * @memberof AdminResultListEnumTypeOutput
+     */
+    extras?: any | null;
+    /**
+     * 时间
+     * @type {Date}
+     * @memberof AdminResultListEnumTypeOutput
+     */
+    time?: Date;
+}

+ 134 - 0
Web/src/api-services/models/code-gen-input.ts

@@ -0,0 +1,134 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Admin.NET
+ * 让 .NET 开发更简单、更通用、更流行。前后端分离架构(.NET6/Vue3),开箱即用紧随前沿技术。<br/><a href='https://gitee.com/zuohuaijun/Admin.NET/'>https://gitee.com/zuohuaijun/Admin.NET</a>
+ *
+ * OpenAPI spec version: 1.0.0
+ * Contact: 515096995@qq.com
+ *
+ * NOTE: This class is auto generated by the swagger code generator program.
+ * https://github.com/swagger-api/swagger-codegen.git
+ * Do not edit the class manually.
+ */
+/**
+ * 代码生成参数类
+ * @export
+ * @interface CodeGenInput
+ */
+export interface CodeGenInput {
+    /**
+     * 当前页码
+     * @type {number}
+     * @memberof CodeGenInput
+     */
+    page?: number;
+    /**
+     * 页码容量
+     * @type {number}
+     * @memberof CodeGenInput
+     */
+    pageSize?: number;
+    /**
+     * 排序字段
+     * @type {string}
+     * @memberof CodeGenInput
+     */
+    field?: string | null;
+    /**
+     * 排序方向
+     * @type {string}
+     * @memberof CodeGenInput
+     */
+    order?: string | null;
+    /**
+     * 降序排序
+     * @type {string}
+     * @memberof CodeGenInput
+     */
+    descStr?: string | null;
+    /**
+     * 作者姓名
+     * @type {string}
+     * @memberof CodeGenInput
+     */
+    authorName?: string | null;
+    /**
+     * 类名
+     * @type {string}
+     * @memberof CodeGenInput
+     */
+    className?: string | null;
+    /**
+     * 是否移除表前缀
+     * @type {string}
+     * @memberof CodeGenInput
+     */
+    tablePrefix?: string | null;
+    /**
+     * 库定位器名
+     * @type {string}
+     * @memberof CodeGenInput
+     */
+    configId?: string | null;
+    /**
+     * 数据库名(保留字段)
+     * @type {string}
+     * @memberof CodeGenInput
+     */
+    dbName?: string | null;
+    /**
+     * 数据库类型
+     * @type {string}
+     * @memberof CodeGenInput
+     */
+    dbType?: string | null;
+    /**
+     * 数据库链接
+     * @type {string}
+     * @memberof CodeGenInput
+     */
+    connectionString?: string | null;
+    /**
+     * 生成方式
+     * @type {string}
+     * @memberof CodeGenInput
+     */
+    generateType?: string | null;
+    /**
+     * 数据库表名
+     * @type {string}
+     * @memberof CodeGenInput
+     */
+    tableName?: string | null;
+    /**
+     * 命名空间
+     * @type {string}
+     * @memberof CodeGenInput
+     */
+    nameSpace?: string | null;
+    /**
+     * 业务名(业务代码包名称)
+     * @type {string}
+     * @memberof CodeGenInput
+     */
+    busName?: string | null;
+    /**
+     * 功能名(数据库表名称)
+     * @type {string}
+     * @memberof CodeGenInput
+     */
+    tableComment?: string | null;
+    /**
+     * 菜单应用分类(应用编码)
+     * @type {string}
+     * @memberof CodeGenInput
+     */
+    menuApplication?: string | null;
+    /**
+     * 菜单父级
+     * @type {number}
+     * @memberof CodeGenInput
+     */
+    menuPid?: number;
+}

+ 26 - 0
Web/src/api-services/models/data-item.ts

@@ -0,0 +1,26 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Admin.NET
+ * 让 .NET 开发更简单、更通用、更流行。前后端分离架构(.NET6/Vue3),开箱即用紧随前沿技术。<br/><a href='https://gitee.com/zuohuaijun/Admin.NET/'>https://gitee.com/zuohuaijun/Admin.NET</a>
+ *
+ * OpenAPI spec version: 1.0.0
+ * Contact: 515096995@qq.com
+ *
+ * NOTE: This class is auto generated by the swagger code generator program.
+ * https://github.com/swagger-api/swagger-codegen.git
+ * Do not edit the class manually.
+ */
+/**
+ * 
+ * @export
+ * @interface DataItem
+ */
+export interface DataItem {
+    /**
+     * 
+     * @type {string}
+     * @memberof DataItem
+     */
+    value?: string | null;
+}

+ 38 - 0
Web/src/api-services/models/enum-entity.ts

@@ -0,0 +1,38 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Admin.NET
+ * 让 .NET 开发更简单、更通用、更流行。前后端分离架构(.NET6/Vue3),开箱即用紧随前沿技术。<br/><a href='https://gitee.com/zuohuaijun/Admin.NET/'>https://gitee.com/zuohuaijun/Admin.NET</a>
+ *
+ * OpenAPI spec version: 1.0.0
+ * Contact: 515096995@qq.com
+ *
+ * NOTE: This class is auto generated by the swagger code generator program.
+ * https://github.com/swagger-api/swagger-codegen.git
+ * Do not edit the class manually.
+ */
+/**
+ * 枚举实体
+ * @export
+ * @interface EnumEntity
+ */
+export interface EnumEntity {
+    /**
+     * 枚举的描述
+     * @type {string}
+     * @memberof EnumEntity
+     */
+    describe?: string | null;
+    /**
+     * 枚举名称
+     * @type {string}
+     * @memberof EnumEntity
+     */
+    name?: string | null;
+    /**
+     * 枚举对象的值
+     * @type {number}
+     * @memberof EnumEntity
+     */
+    value?: number;
+}

+ 38 - 0
Web/src/api-services/models/enum-type-output.ts

@@ -0,0 +1,38 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Admin.NET
+ * 让 .NET 开发更简单、更通用、更流行。前后端分离架构(.NET6/Vue3),开箱即用紧随前沿技术。<br/><a href='https://gitee.com/zuohuaijun/Admin.NET/'>https://gitee.com/zuohuaijun/Admin.NET</a>
+ *
+ * OpenAPI spec version: 1.0.0
+ * Contact: 515096995@qq.com
+ *
+ * NOTE: This class is auto generated by the swagger code generator program.
+ * https://github.com/swagger-api/swagger-codegen.git
+ * Do not edit the class manually.
+ */
+/**
+ * 枚举类型输出参数
+ * @export
+ * @interface EnumTypeOutput
+ */
+export interface EnumTypeOutput {
+    /**
+     * 枚举类型描述
+     * @type {string}
+     * @memberof EnumTypeOutput
+     */
+    typeDescribe?: string | null;
+    /**
+     * 枚举类型名称
+     * @type {string}
+     * @memberof EnumTypeOutput
+     */
+    typeName?: string | null;
+    /**
+     * 枚举类型备注
+     * @type {string}
+     * @memberof EnumTypeOutput
+     */
+    typeRemark?: string | null;
+}

+ 20 - 0
Web/src/api-services/models/index.ts

@@ -11,6 +11,7 @@ export * from './add-org-input';
 export * from './add-pos-input';
 export * from './add-region-input';
 export * from './add-role-input';
+export * from './add-subscribe-message-template-input';
 export * from './add-tenant-input';
 export * from './add-user-input';
 export * from './admin-result-boolean';
@@ -25,6 +26,8 @@ export * from './admin-result-list-const-output';
 export * from './admin-result-list-database-output';
 export * from './admin-result-list-db-column-output';
 export * from './admin-result-list-db-table-info';
+export * from './admin-result-list-enum-entity';
+export * from './admin-result-list-enum-type-output';
 export * from './admin-result-list-file-output';
 export * from './admin-result-list-int64';
 export * from './admin-result-list-menu-output';
@@ -78,10 +81,12 @@ export * from './card-type-enum';
 export * from './change-pwd-input';
 export * from './cluster-status';
 export * from './code-gen-config';
+export * from './code-gen-input';
 export * from './column-ouput';
 export * from './const-output';
 export * from './create-entity-input';
 export * from './culture-level-enum';
+export * from './data-item';
 export * from './data-scope-enum';
 export * from './database-output';
 export * from './db-column-input';
@@ -110,6 +115,8 @@ export * from './delete-user-input';
 export * from './delete-wechat-user-input';
 export * from './dict-data-input';
 export * from './dict-type-input';
+export * from './enum-entity';
+export * from './enum-type-output';
 export * from './file-input';
 export * from './file-output';
 export * from './gen-auth-url-input';
@@ -132,12 +139,24 @@ export * from './notice-status-enum';
 export * from './notice-type-enum';
 export * from './notice-user-status-enum';
 export * from './page-config-input';
+export * from './page-dict-data-input';
+export * from './page-dict-type-input';
+export * from './page-file-input';
+export * from './page-job-input';
+export * from './page-log-input';
+export * from './page-notice-input';
+export * from './page-online-user-input';
+export * from './page-region-input';
+export * from './page-role-input';
+export * from './page-tenant-input';
+export * from './page-user-input';
 export * from './platform-type-enum';
 export * from './reset-pwd-user-input';
 export * from './role-input';
 export * from './role-menu-input';
 export * from './role-org-input';
 export * from './role-output';
+export * from './send-subscribe-message-input';
 export * from './signature-input';
 export * from './sql-sugar-paged-list-job-output';
 export * from './sql-sugar-paged-list-sys-code-gen';
@@ -214,6 +233,7 @@ export * from './user-role-input';
 export * from './wechat-pay-output';
 export * from './wechat-pay-para-input';
 export * from './wechat-pay-transaction-input';
+export * from './wechat-user-input';
 export * from './wechat-user-login';
 export * from './wx-open-id-login-input';
 export * from './wx-open-id-output';

+ 68 - 0
Web/src/api-services/models/page-dict-data-input.ts

@@ -0,0 +1,68 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Admin.NET
+ * 让 .NET 开发更简单、更通用、更流行。前后端分离架构(.NET6/Vue3),开箱即用紧随前沿技术。<br/><a href='https://gitee.com/zuohuaijun/Admin.NET/'>https://gitee.com/zuohuaijun/Admin.NET</a>
+ *
+ * OpenAPI spec version: 1.0.0
+ * Contact: 515096995@qq.com
+ *
+ * NOTE: This class is auto generated by the swagger code generator program.
+ * https://github.com/swagger-api/swagger-codegen.git
+ * Do not edit the class manually.
+ */
+/**
+ * 
+ * @export
+ * @interface PageDictDataInput
+ */
+export interface PageDictDataInput {
+    /**
+     * 当前页码
+     * @type {number}
+     * @memberof PageDictDataInput
+     */
+    page?: number;
+    /**
+     * 页码容量
+     * @type {number}
+     * @memberof PageDictDataInput
+     */
+    pageSize?: number;
+    /**
+     * 排序字段
+     * @type {string}
+     * @memberof PageDictDataInput
+     */
+    field?: string | null;
+    /**
+     * 排序方向
+     * @type {string}
+     * @memberof PageDictDataInput
+     */
+    order?: string | null;
+    /**
+     * 降序排序
+     * @type {string}
+     * @memberof PageDictDataInput
+     */
+    descStr?: string | null;
+    /**
+     * 字典类型Id
+     * @type {number}
+     * @memberof PageDictDataInput
+     */
+    dictTypeId?: number;
+    /**
+     * 值
+     * @type {string}
+     * @memberof PageDictDataInput
+     */
+    value?: string | null;
+    /**
+     * 编码
+     * @type {string}
+     * @memberof PageDictDataInput
+     */
+    code?: string | null;
+}

+ 62 - 0
Web/src/api-services/models/page-dict-type-input.ts

@@ -0,0 +1,62 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Admin.NET
+ * 让 .NET 开发更简单、更通用、更流行。前后端分离架构(.NET6/Vue3),开箱即用紧随前沿技术。<br/><a href='https://gitee.com/zuohuaijun/Admin.NET/'>https://gitee.com/zuohuaijun/Admin.NET</a>
+ *
+ * OpenAPI spec version: 1.0.0
+ * Contact: 515096995@qq.com
+ *
+ * NOTE: This class is auto generated by the swagger code generator program.
+ * https://github.com/swagger-api/swagger-codegen.git
+ * Do not edit the class manually.
+ */
+/**
+ * 
+ * @export
+ * @interface PageDictTypeInput
+ */
+export interface PageDictTypeInput {
+    /**
+     * 当前页码
+     * @type {number}
+     * @memberof PageDictTypeInput
+     */
+    page?: number;
+    /**
+     * 页码容量
+     * @type {number}
+     * @memberof PageDictTypeInput
+     */
+    pageSize?: number;
+    /**
+     * 排序字段
+     * @type {string}
+     * @memberof PageDictTypeInput
+     */
+    field?: string | null;
+    /**
+     * 排序方向
+     * @type {string}
+     * @memberof PageDictTypeInput
+     */
+    order?: string | null;
+    /**
+     * 降序排序
+     * @type {string}
+     * @memberof PageDictTypeInput
+     */
+    descStr?: string | null;
+    /**
+     * 名称
+     * @type {string}
+     * @memberof PageDictTypeInput
+     */
+    name?: string | null;
+    /**
+     * 编码
+     * @type {string}
+     * @memberof PageDictTypeInput
+     */
+    code?: string | null;
+}

+ 68 - 0
Web/src/api-services/models/page-file-input.ts

@@ -0,0 +1,68 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Admin.NET
+ * 让 .NET 开发更简单、更通用、更流行。前后端分离架构(.NET6/Vue3),开箱即用紧随前沿技术。<br/><a href='https://gitee.com/zuohuaijun/Admin.NET/'>https://gitee.com/zuohuaijun/Admin.NET</a>
+ *
+ * OpenAPI spec version: 1.0.0
+ * Contact: 515096995@qq.com
+ *
+ * NOTE: This class is auto generated by the swagger code generator program.
+ * https://github.com/swagger-api/swagger-codegen.git
+ * Do not edit the class manually.
+ */
+/**
+ * 
+ * @export
+ * @interface PageFileInput
+ */
+export interface PageFileInput {
+    /**
+     * 当前页码
+     * @type {number}
+     * @memberof PageFileInput
+     */
+    page?: number;
+    /**
+     * 页码容量
+     * @type {number}
+     * @memberof PageFileInput
+     */
+    pageSize?: number;
+    /**
+     * 排序字段
+     * @type {string}
+     * @memberof PageFileInput
+     */
+    field?: string | null;
+    /**
+     * 排序方向
+     * @type {string}
+     * @memberof PageFileInput
+     */
+    order?: string | null;
+    /**
+     * 降序排序
+     * @type {string}
+     * @memberof PageFileInput
+     */
+    descStr?: string | null;
+    /**
+     * 文件名称
+     * @type {string}
+     * @memberof PageFileInput
+     */
+    fileName?: string | null;
+    /**
+     * 开始时间
+     * @type {Date}
+     * @memberof PageFileInput
+     */
+    startTime?: Date | null;
+    /**
+     * 结束时间
+     * @type {Date}
+     * @memberof PageFileInput
+     */
+    endTime?: Date | null;
+}

+ 62 - 0
Web/src/api-services/models/page-job-input.ts

@@ -0,0 +1,62 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Admin.NET
+ * 让 .NET 开发更简单、更通用、更流行。前后端分离架构(.NET6/Vue3),开箱即用紧随前沿技术。<br/><a href='https://gitee.com/zuohuaijun/Admin.NET/'>https://gitee.com/zuohuaijun/Admin.NET</a>
+ *
+ * OpenAPI spec version: 1.0.0
+ * Contact: 515096995@qq.com
+ *
+ * NOTE: This class is auto generated by the swagger code generator program.
+ * https://github.com/swagger-api/swagger-codegen.git
+ * Do not edit the class manually.
+ */
+/**
+ * 
+ * @export
+ * @interface PageJobInput
+ */
+export interface PageJobInput {
+    /**
+     * 当前页码
+     * @type {number}
+     * @memberof PageJobInput
+     */
+    page?: number;
+    /**
+     * 页码容量
+     * @type {number}
+     * @memberof PageJobInput
+     */
+    pageSize?: number;
+    /**
+     * 排序字段
+     * @type {string}
+     * @memberof PageJobInput
+     */
+    field?: string | null;
+    /**
+     * 排序方向
+     * @type {string}
+     * @memberof PageJobInput
+     */
+    order?: string | null;
+    /**
+     * 降序排序
+     * @type {string}
+     * @memberof PageJobInput
+     */
+    descStr?: string | null;
+    /**
+     * 作业Id
+     * @type {string}
+     * @memberof PageJobInput
+     */
+    jobId?: string | null;
+    /**
+     * 描述信息
+     * @type {string}
+     * @memberof PageJobInput
+     */
+    description?: string | null;
+}

+ 62 - 0
Web/src/api-services/models/page-log-input.ts

@@ -0,0 +1,62 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Admin.NET
+ * 让 .NET 开发更简单、更通用、更流行。前后端分离架构(.NET6/Vue3),开箱即用紧随前沿技术。<br/><a href='https://gitee.com/zuohuaijun/Admin.NET/'>https://gitee.com/zuohuaijun/Admin.NET</a>
+ *
+ * OpenAPI spec version: 1.0.0
+ * Contact: 515096995@qq.com
+ *
+ * NOTE: This class is auto generated by the swagger code generator program.
+ * https://github.com/swagger-api/swagger-codegen.git
+ * Do not edit the class manually.
+ */
+/**
+ * 
+ * @export
+ * @interface PageLogInput
+ */
+export interface PageLogInput {
+    /**
+     * 当前页码
+     * @type {number}
+     * @memberof PageLogInput
+     */
+    page?: number;
+    /**
+     * 页码容量
+     * @type {number}
+     * @memberof PageLogInput
+     */
+    pageSize?: number;
+    /**
+     * 排序字段
+     * @type {string}
+     * @memberof PageLogInput
+     */
+    field?: string | null;
+    /**
+     * 排序方向
+     * @type {string}
+     * @memberof PageLogInput
+     */
+    order?: string | null;
+    /**
+     * 降序排序
+     * @type {string}
+     * @memberof PageLogInput
+     */
+    descStr?: string | null;
+    /**
+     * 开始时间
+     * @type {Date}
+     * @memberof PageLogInput
+     */
+    startTime?: Date | null;
+    /**
+     * 结束时间
+     * @type {Date}
+     * @memberof PageLogInput
+     */
+    endTime?: Date | null;
+}

+ 63 - 0
Web/src/api-services/models/page-notice-input.ts

@@ -0,0 +1,63 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Admin.NET
+ * 让 .NET 开发更简单、更通用、更流行。前后端分离架构(.NET6/Vue3),开箱即用紧随前沿技术。<br/><a href='https://gitee.com/zuohuaijun/Admin.NET/'>https://gitee.com/zuohuaijun/Admin.NET</a>
+ *
+ * OpenAPI spec version: 1.0.0
+ * Contact: 515096995@qq.com
+ *
+ * NOTE: This class is auto generated by the swagger code generator program.
+ * https://github.com/swagger-api/swagger-codegen.git
+ * Do not edit the class manually.
+ */
+import { NoticeTypeEnum } from './notice-type-enum';
+/**
+ * 
+ * @export
+ * @interface PageNoticeInput
+ */
+export interface PageNoticeInput {
+    /**
+     * 当前页码
+     * @type {number}
+     * @memberof PageNoticeInput
+     */
+    page?: number;
+    /**
+     * 页码容量
+     * @type {number}
+     * @memberof PageNoticeInput
+     */
+    pageSize?: number;
+    /**
+     * 排序字段
+     * @type {string}
+     * @memberof PageNoticeInput
+     */
+    field?: string | null;
+    /**
+     * 排序方向
+     * @type {string}
+     * @memberof PageNoticeInput
+     */
+    order?: string | null;
+    /**
+     * 降序排序
+     * @type {string}
+     * @memberof PageNoticeInput
+     */
+    descStr?: string | null;
+    /**
+     * 标题
+     * @type {string}
+     * @memberof PageNoticeInput
+     */
+    title?: string | null;
+    /**
+     * 
+     * @type {NoticeTypeEnum}
+     * @memberof PageNoticeInput
+     */
+    type?: NoticeTypeEnum;
+}

+ 62 - 0
Web/src/api-services/models/page-online-user-input.ts

@@ -0,0 +1,62 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Admin.NET
+ * 让 .NET 开发更简单、更通用、更流行。前后端分离架构(.NET6/Vue3),开箱即用紧随前沿技术。<br/><a href='https://gitee.com/zuohuaijun/Admin.NET/'>https://gitee.com/zuohuaijun/Admin.NET</a>
+ *
+ * OpenAPI spec version: 1.0.0
+ * Contact: 515096995@qq.com
+ *
+ * NOTE: This class is auto generated by the swagger code generator program.
+ * https://github.com/swagger-api/swagger-codegen.git
+ * Do not edit the class manually.
+ */
+/**
+ * 
+ * @export
+ * @interface PageOnlineUserInput
+ */
+export interface PageOnlineUserInput {
+    /**
+     * 当前页码
+     * @type {number}
+     * @memberof PageOnlineUserInput
+     */
+    page?: number;
+    /**
+     * 页码容量
+     * @type {number}
+     * @memberof PageOnlineUserInput
+     */
+    pageSize?: number;
+    /**
+     * 排序字段
+     * @type {string}
+     * @memberof PageOnlineUserInput
+     */
+    field?: string | null;
+    /**
+     * 排序方向
+     * @type {string}
+     * @memberof PageOnlineUserInput
+     */
+    order?: string | null;
+    /**
+     * 降序排序
+     * @type {string}
+     * @memberof PageOnlineUserInput
+     */
+    descStr?: string | null;
+    /**
+     * 账号名称
+     * @type {string}
+     * @memberof PageOnlineUserInput
+     */
+    userName?: string | null;
+    /**
+     * 真实姓名
+     * @type {string}
+     * @memberof PageOnlineUserInput
+     */
+    realName?: string | null;
+}

+ 68 - 0
Web/src/api-services/models/page-region-input.ts

@@ -0,0 +1,68 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Admin.NET
+ * 让 .NET 开发更简单、更通用、更流行。前后端分离架构(.NET6/Vue3),开箱即用紧随前沿技术。<br/><a href='https://gitee.com/zuohuaijun/Admin.NET/'>https://gitee.com/zuohuaijun/Admin.NET</a>
+ *
+ * OpenAPI spec version: 1.0.0
+ * Contact: 515096995@qq.com
+ *
+ * NOTE: This class is auto generated by the swagger code generator program.
+ * https://github.com/swagger-api/swagger-codegen.git
+ * Do not edit the class manually.
+ */
+/**
+ * 
+ * @export
+ * @interface PageRegionInput
+ */
+export interface PageRegionInput {
+    /**
+     * 当前页码
+     * @type {number}
+     * @memberof PageRegionInput
+     */
+    page?: number;
+    /**
+     * 页码容量
+     * @type {number}
+     * @memberof PageRegionInput
+     */
+    pageSize?: number;
+    /**
+     * 排序字段
+     * @type {string}
+     * @memberof PageRegionInput
+     */
+    field?: string | null;
+    /**
+     * 排序方向
+     * @type {string}
+     * @memberof PageRegionInput
+     */
+    order?: string | null;
+    /**
+     * 降序排序
+     * @type {string}
+     * @memberof PageRegionInput
+     */
+    descStr?: string | null;
+    /**
+     * 父节点Id
+     * @type {number}
+     * @memberof PageRegionInput
+     */
+    pid?: number;
+    /**
+     * 名称
+     * @type {string}
+     * @memberof PageRegionInput
+     */
+    name?: string | null;
+    /**
+     * 编码
+     * @type {string}
+     * @memberof PageRegionInput
+     */
+    code?: string | null;
+}

+ 62 - 0
Web/src/api-services/models/page-role-input.ts

@@ -0,0 +1,62 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Admin.NET
+ * 让 .NET 开发更简单、更通用、更流行。前后端分离架构(.NET6/Vue3),开箱即用紧随前沿技术。<br/><a href='https://gitee.com/zuohuaijun/Admin.NET/'>https://gitee.com/zuohuaijun/Admin.NET</a>
+ *
+ * OpenAPI spec version: 1.0.0
+ * Contact: 515096995@qq.com
+ *
+ * NOTE: This class is auto generated by the swagger code generator program.
+ * https://github.com/swagger-api/swagger-codegen.git
+ * Do not edit the class manually.
+ */
+/**
+ * 
+ * @export
+ * @interface PageRoleInput
+ */
+export interface PageRoleInput {
+    /**
+     * 当前页码
+     * @type {number}
+     * @memberof PageRoleInput
+     */
+    page?: number;
+    /**
+     * 页码容量
+     * @type {number}
+     * @memberof PageRoleInput
+     */
+    pageSize?: number;
+    /**
+     * 排序字段
+     * @type {string}
+     * @memberof PageRoleInput
+     */
+    field?: string | null;
+    /**
+     * 排序方向
+     * @type {string}
+     * @memberof PageRoleInput
+     */
+    order?: string | null;
+    /**
+     * 降序排序
+     * @type {string}
+     * @memberof PageRoleInput
+     */
+    descStr?: string | null;
+    /**
+     * 名称
+     * @type {string}
+     * @memberof PageRoleInput
+     */
+    name?: string | null;
+    /**
+     * 编码
+     * @type {string}
+     * @memberof PageRoleInput
+     */
+    code?: string | null;
+}

+ 62 - 0
Web/src/api-services/models/page-tenant-input.ts

@@ -0,0 +1,62 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Admin.NET
+ * 让 .NET 开发更简单、更通用、更流行。前后端分离架构(.NET6/Vue3),开箱即用紧随前沿技术。<br/><a href='https://gitee.com/zuohuaijun/Admin.NET/'>https://gitee.com/zuohuaijun/Admin.NET</a>
+ *
+ * OpenAPI spec version: 1.0.0
+ * Contact: 515096995@qq.com
+ *
+ * NOTE: This class is auto generated by the swagger code generator program.
+ * https://github.com/swagger-api/swagger-codegen.git
+ * Do not edit the class manually.
+ */
+/**
+ * 
+ * @export
+ * @interface PageTenantInput
+ */
+export interface PageTenantInput {
+    /**
+     * 当前页码
+     * @type {number}
+     * @memberof PageTenantInput
+     */
+    page?: number;
+    /**
+     * 页码容量
+     * @type {number}
+     * @memberof PageTenantInput
+     */
+    pageSize?: number;
+    /**
+     * 排序字段
+     * @type {string}
+     * @memberof PageTenantInput
+     */
+    field?: string | null;
+    /**
+     * 排序方向
+     * @type {string}
+     * @memberof PageTenantInput
+     */
+    order?: string | null;
+    /**
+     * 降序排序
+     * @type {string}
+     * @memberof PageTenantInput
+     */
+    descStr?: string | null;
+    /**
+     * 名称
+     * @type {string}
+     * @memberof PageTenantInput
+     */
+    name?: string | null;
+    /**
+     * 电话
+     * @type {string}
+     * @memberof PageTenantInput
+     */
+    phone?: string | null;
+}

+ 74 - 0
Web/src/api-services/models/page-user-input.ts

@@ -0,0 +1,74 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Admin.NET
+ * 让 .NET 开发更简单、更通用、更流行。前后端分离架构(.NET6/Vue3),开箱即用紧随前沿技术。<br/><a href='https://gitee.com/zuohuaijun/Admin.NET/'>https://gitee.com/zuohuaijun/Admin.NET</a>
+ *
+ * OpenAPI spec version: 1.0.0
+ * Contact: 515096995@qq.com
+ *
+ * NOTE: This class is auto generated by the swagger code generator program.
+ * https://github.com/swagger-api/swagger-codegen.git
+ * Do not edit the class manually.
+ */
+/**
+ * 
+ * @export
+ * @interface PageUserInput
+ */
+export interface PageUserInput {
+    /**
+     * 当前页码
+     * @type {number}
+     * @memberof PageUserInput
+     */
+    page?: number;
+    /**
+     * 页码容量
+     * @type {number}
+     * @memberof PageUserInput
+     */
+    pageSize?: number;
+    /**
+     * 排序字段
+     * @type {string}
+     * @memberof PageUserInput
+     */
+    field?: string | null;
+    /**
+     * 排序方向
+     * @type {string}
+     * @memberof PageUserInput
+     */
+    order?: string | null;
+    /**
+     * 降序排序
+     * @type {string}
+     * @memberof PageUserInput
+     */
+    descStr?: string | null;
+    /**
+     * 账号
+     * @type {string}
+     * @memberof PageUserInput
+     */
+    account?: string | null;
+    /**
+     * 姓名
+     * @type {string}
+     * @memberof PageUserInput
+     */
+    realName?: string | null;
+    /**
+     * 手机号
+     * @type {string}
+     * @memberof PageUserInput
+     */
+    phone?: string | null;
+    /**
+     * 查询时所选机构Id
+     * @type {number}
+     * @memberof PageUserInput
+     */
+    orgId?: number;
+}

+ 39 - 0
Web/src/api-services/models/send-subscribe-message-input.ts

@@ -0,0 +1,39 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Admin.NET
+ * 让 .NET 开发更简单、更通用、更流行。前后端分离架构(.NET6/Vue3),开箱即用紧随前沿技术。<br/><a href='https://gitee.com/zuohuaijun/Admin.NET/'>https://gitee.com/zuohuaijun/Admin.NET</a>
+ *
+ * OpenAPI spec version: 1.0.0
+ * Contact: 515096995@qq.com
+ *
+ * NOTE: This class is auto generated by the swagger code generator program.
+ * https://github.com/swagger-api/swagger-codegen.git
+ * Do not edit the class manually.
+ */
+import { DataItem } from './data-item';
+/**
+ * 
+ * @export
+ * @interface SendSubscribeMessageInput
+ */
+export interface SendSubscribeMessageInput {
+    /**
+     * 订阅模板Id
+     * @type {string}
+     * @memberof SendSubscribeMessageInput
+     */
+    templateId: string;
+    /**
+     * 接收者的OpenId
+     * @type {string}
+     * @memberof SendSubscribeMessageInput
+     */
+    toUserOpenId: string;
+    /**
+     * 模板内容,格式形如 { \"key1\": { \"value\": any }, \"key2\": { \"value\": any } }的object
+     * @type {{ [key: string]: DataItem; }}
+     * @memberof SendSubscribeMessageInput
+     */
+    data: { [key: string]: DataItem; };
+}

+ 62 - 0
Web/src/api-services/models/wechat-user-input.ts

@@ -0,0 +1,62 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Admin.NET
+ * 让 .NET 开发更简单、更通用、更流行。前后端分离架构(.NET6/Vue3),开箱即用紧随前沿技术。<br/><a href='https://gitee.com/zuohuaijun/Admin.NET/'>https://gitee.com/zuohuaijun/Admin.NET</a>
+ *
+ * OpenAPI spec version: 1.0.0
+ * Contact: 515096995@qq.com
+ *
+ * NOTE: This class is auto generated by the swagger code generator program.
+ * https://github.com/swagger-api/swagger-codegen.git
+ * Do not edit the class manually.
+ */
+/**
+ * 
+ * @export
+ * @interface WechatUserInput
+ */
+export interface WechatUserInput {
+    /**
+     * 当前页码
+     * @type {number}
+     * @memberof WechatUserInput
+     */
+    page?: number;
+    /**
+     * 页码容量
+     * @type {number}
+     * @memberof WechatUserInput
+     */
+    pageSize?: number;
+    /**
+     * 排序字段
+     * @type {string}
+     * @memberof WechatUserInput
+     */
+    field?: string | null;
+    /**
+     * 排序方向
+     * @type {string}
+     * @memberof WechatUserInput
+     */
+    order?: string | null;
+    /**
+     * 降序排序
+     * @type {string}
+     * @memberof WechatUserInput
+     */
+    descStr?: string | null;
+    /**
+     * 昵称
+     * @type {string}
+     * @memberof WechatUserInput
+     */
+    nickName?: string | null;
+    /**
+     * 手机号码
+     * @type {string}
+     * @memberof WechatUserInput
+     */
+    phoneNumber?: string | null;
+}

+ 0 - 67
Web/src/assets/styles/main.scss

@@ -1,67 +0,0 @@
-//hack列表页
-.layout-parent {
-  height: 0;
-
-  // Table页自动撑满页面
-  >div:first-child {
-    display: flex;
-    flex-direction: column;
-    height: 100%;
-
-    .el-card:nth-child(2) {
-      flex: 1;
-
-      .el-card__body {
-        height: 100%;
-        display: flex;
-        flex-direction: column;
-
-        .el-table {
-          flex: 1;
-        }
-
-        .el-pagination {
-          display: flex;
-
-          >span:first-child {
-            flex: 1;
-            text-align: right;
-          }
-        }
-      }
-    }
-  }
-
-  //搜索区域Label固定宽度
-  .el-form-item__label {
-    width: 70px;    //适合4个字,5个字90px
-  }
-
-  //搜索区域控件宽度默认撑满
-  .el-form-item {
-    width: 100%;
-
-    .el-select {
-      width: 100%
-    }
-  }
-
-  //搜索区域按钮布局
-  .search-actions {
-    display: flex;
-
-    >div:first-child {
-      flex: 1;
-    }
-  }
-}
-
-// 某个页面的搜索条件文字太长导致换行的解决办法,页面下方添加以下样式
-// <style lang="scss" scoped>
-//   //搜索区域Label固定宽度
-//   .sys-codeGen-container{  //根据实际情况改成 当前页面顶级的className  参考代码生成页面   
-//     ::v-deep(.el-form-item__label) {
-//       width: 90px;   //根据实际情况自行调整文本宽度
-//     }
-//   }
-// </style>

+ 62 - 58
Web/src/components/table/index.vue

@@ -5,7 +5,6 @@
 				<slot name="command"></slot>
 			</div>
 			<div v-loading="state.importLoading" class="table-footer-tool">
-				<!-- <SvgIcon name="iconfont icon-yunxiazai_o" :size="22" title="导出" @click="onImportTable" /> -->
 				<SvgIcon name="iconfont icon-shuaxin" :size="22" title="刷新" @click="onRefreshTable" />
 				<el-dropdown v-if="!config.hideExport" trigger="click">
 					<SvgIcon name="iconfont icon-yunxiazai_o" :size="22" title="导出" />
@@ -16,7 +15,7 @@
 						</el-dropdown-menu>
 					</template>
 				</el-dropdown>
-				<el-popover placement="top-end" trigger="click" transition="el-zoom-in-top" popper-class="table-tool-popper" :width="300" :persistent="false" @show="onSetTable">
+				<el-popover placement="top-end" trigger="click" transition="el-zoom-in-top" popper-class="table-tool-popper" :width="300" :persistent="false" @show="onSetTable" @hide="closePop">
 					<template #reference>
 						<SvgIcon name="iconfont icon-quanjushezhi_o" :size="22" title="设置" />
 					</template>
@@ -31,9 +30,9 @@
 						</div>
 						<el-scrollbar>
 							<div ref="toolSetRef" class="tool-sortable">
-								<div class="tool-sortable-item" v-for="v in header" :key="v.key" :data-key="v.key">
+								<div class="tool-sortable-item" v-for="v in state.listColumn" :key="v.prop" v-show="!v.hideCheck && !v.fixed" :data-key="v.prop">
 									<i class="fa fa-arrows-alt handle cursor-pointer"></i>
-									<el-checkbox v-model="v.isCheck" size="default" class="ml12 mr8" :label="v.title" @change="onCheckChange" />
+									<el-checkbox v-model="v.isCheck" size="default" class="ml12 mr8" :label="v.label" @change="onCheckChange" />
 								</div>
 							</div>
 						</el-scrollbar>
@@ -47,6 +46,7 @@
 			:border="setBorder"
 			v-bind="$attrs"
 			row-key="id"
+			default-expand-all
 			style="width: 100%"
 			v-loading="state.loading"
 			:default-sort="defaultSort"
@@ -55,38 +55,20 @@
 		>
 			<el-table-column type="selection" :reserve-selection="true" width="30" v-if="config.isSelection && config.showSelection" />
 			<el-table-column type="index" label="序号" align="center" width="60" v-if="config.isSerialNo" />
-			<el-table-column
-				v-for="(item, index) in setHeader"
-				:key="index"
-				:show-overflow-tooltip="item.toolTip"
-				:prop="item.key"
-				:width="item.colWidth"
-				:label="item.title"
-				:align="item.align"
-				:header-align="item.headerAlign"
-				:sortable="item.key == 'action' ? false : item.sortable"
-			>
-				<template #default="scope" v-if="$slots[item.key]">
-					<slot :name="item.key" v-bind="scope"></slot>
+			<el-table-column v-for="(item, index) in setHeader" :key="index" v-bind="item">
+				<!-- 自定义列插槽,插槽名为columns属性的prop -->
+				<template #default="scope" v-if="$slots[item.prop]">
+					<slot :name="item.prop" v-bind="scope"></slot>
 				</template>
 				<template v-else v-slot="scope">
 					<template v-if="item.type === 'image'">
-						<img :src="scope.row[item.key]" :width="item.width" :height="item.height" />
+						<img :src="scope.row[item.prop]" class="w100" />
 					</template>
 					<template v-else>
-						{{ scope.row[item.key] }}
+						{{ scope.row[item.prop] }}
 					</template>
 				</template>
 			</el-table-column>
-			<!-- <el-table-column label="操作" width="100" v-if="config.isOperate">
-        <template v-slot="scope">
-          <el-popconfirm title="确定删除吗?" @confirm="onDelRow(scope.row)">
-            <template #reference>
-              <el-button text type="primary">删除</el-button>
-            </template>
-          </el-popconfirm>
-        </template>
-      </el-table-column> -->
 			<template #empty>
 				<el-empty description="暂无数据" />
 			</template>
@@ -120,40 +102,39 @@ import { exportExcel } from '/@/utils/exportExcel';
 
 // 定义父组件传过来的值
 const props = defineProps({
-	// 列表内容
-	// data: {
-	//   type: Array<EmptyObjectType>,
-	//   default: () => [],
-	// },
+	// 获取数据的方法,由父组件传递
 	getData: {
 		type: Function,
 		required: true,
 	},
-	// 表头内容
-	header: {
-		type: Array<EmptyObjectType>,
+	// 列属性,和elementUI的Table-column 属性相同,附加属性:isCheck-是否默认勾选展示,hideCheck-是否隐藏该列的可勾选和拖拽
+	columns: {
+		type: Array<any>,
 		default: () => [],
 	},
-	// 配置项
+	// 配置项:isBorder-是否显示表格边框,isSerialNo-是否显示表格序号,showSelection-是否显示表格可多选,isSelection-是否默认选中表格多选,pageSize-每页条数,hideExport-是否隐藏导出按钮,exportFileName-导出表格的文件名,空值默认用应用名称作为文件名
 	config: {
 		type: Object,
 		default: () => {},
 	},
+	// 筛选参数
 	param: {
 		type: Object,
 		default: () => {},
 	},
+	// 默认排序方式,{prop:"排序字段",order:"ascending or descending"}
 	defaultSort: {
 		type: Object,
 		default: () => {},
 	},
+	// 导出报表自定义数据转换方法,不传按字段值导出
 	exportChangeData: {
 		type: Function,
 	},
 });
 
-// 定义子组件向父组件传值/事件
-const emit = defineEmits(['delRow', 'pageChange', 'selectionChange', 'sortHeader']);
+// 定义子组件向父组件传值/事件,pageChange-翻页事件,selectionChange-表格多选事件,可以在父组件处理批量删除/修改等功能,sortHeader-拖拽列顺序事件
+const emit = defineEmits(['pageChange', 'selectionChange', 'sortHeader']);
 
 // 定义变量内容
 const toolSetRef = ref();
@@ -174,6 +155,7 @@ const state = reactive({
 	selectlist: [] as EmptyObjectType[],
 	checkListAll: true,
 	checkListIndeterminate: false,
+	listColumn: [] as Array<any>,
 });
 
 // 设置边框显示/隐藏
@@ -186,19 +168,27 @@ const getConfig = computed(() => {
 });
 // 设置 tool header 数据
 const setHeader = computed(() => {
-	return props.header.filter((v) => v.isCheck);
+	return props.columns.filter((v) => v.isCheck);
 });
 // tool 列显示全选改变时
 const onCheckAllChange = <T>(val: T) => {
-	if (val) props.header.forEach((v) => (v.isCheck = true));
-	else props.header.forEach((v) => (v.isCheck = false));
+	if (val)
+		state.listColumn.forEach((v) => {
+			if (!v.hideCheck) v.isCheck = true;
+		});
+	else
+		state.listColumn.forEach((v) => {
+			if (!v.hideCheck) v.isCheck = false;
+		});
 	state.checkListIndeterminate = false;
+	emit('sortHeader', state.listColumn);
 };
 // tool 列显示当前项改变时
 const onCheckChange = () => {
-	const headers = props.header.filter((v) => v.isCheck).length;
-	state.checkListAll = headers === props.header.length;
-	state.checkListIndeterminate = headers > 0 && headers < props.header.length;
+	const headers = state.listColumn.filter((v) => v.isCheck).length;
+	state.checkListAll = headers === props.columns.length;
+	state.checkListIndeterminate = headers > 0 && headers < props.columns.length;
+	emit('sortHeader', state.listColumn);
 };
 // 表格多选改变时
 const onSelectionChange = (val: EmptyObjectType[]) => {
@@ -209,13 +199,13 @@ const onSelectionChange = (val: EmptyObjectType[]) => {
 const onHandleSizeChange = (val: number) => {
 	state.page.pageSize = val;
 	handleList();
-	// emit('pageChange', state.page);
+	emit('pageChange', state.page);
 };
 // 改变当前页
 const onHandleCurrentChange = (val: number) => {
 	state.page.page = val;
 	handleList();
-	// emit('pageChange', state.page);
+	emit('pageChange', state.page);
 };
 // 列排序
 const sortChange = (column: any) => {
@@ -223,15 +213,13 @@ const sortChange = (column: any) => {
 	state.page.order = column.order;
 	handleList();
 };
-// 搜索时,分页还原成默认
+// 重置列表
 const pageReset = () => {
 	tableRef.value.clearSelection();
 	state.page.page = 1;
 	handleList();
-	// state.page.pageSize = 10;
-	// emit('pageChange', state.page);
 };
-// 导出
+// 导出当前页
 const onImportTable = () => {
 	if (setHeader.value.length <= 0) return ElMessage.error('没有勾选要导出的列');
 	importData(state.data);
@@ -246,6 +234,7 @@ const onImportTableAll = async () => {
 	const data = res.result?.items ?? [];
 	importData(data);
 };
+// 导出方法
 const importData = (data: Array<EmptyObjectType>) => {
 	if (data.length <= 0) return ElMessage.error('没有数据可以导出');
 	state.importLoading = true;
@@ -268,7 +257,7 @@ const onRefreshTable = () => {
 	handleList();
 	// emit('pageChange', state.page);
 };
-// 设置
+// 拖拽设置
 const onSetTable = () => {
 	nextTick(() => {
 		const sortable = Sortable.create(toolSetRef.value, {
@@ -278,8 +267,8 @@ const onSetTable = () => {
 			onEnd: () => {
 				const headerList: EmptyObjectType[] = [];
 				sortable.toArray().forEach((val: any) => {
-					props.header.forEach((v) => {
-						if (v.key === val) headerList.push({ ...v });
+					state.listColumn.forEach((v) => {
+						if (v.prop === val) headerList.push({ ...v });
 					});
 				});
 				emit('sortHeader', headerList);
@@ -288,13 +277,26 @@ const onSetTable = () => {
 	});
 };
 
+const closePop = () => {
+	state.listColumn = JSON.parse(JSON.stringify(props.columns));
+};
+
 const handleList = async () => {
 	state.loading = true;
-	const param = Object.assign({}, props.param, { ...state.page });
+	let param = Object.assign({}, props.param, { ...state.page });
+	Object.keys(param).forEach((key) => !param[key] && delete param[key]);
 	const res = await props.getData(param);
 	state.loading = false;
-	state.data = res.result?.items ?? [];
-	state.total = res.result?.total ?? 0;
+	if (res.result.items) {
+		state.data = res.result?.items ?? [];
+		state.total = res.result?.total ?? 0;
+	} else {
+		state.data = res.result ?? [];
+	}
+};
+
+const toggleSelection = (row: any, statu?: boolean) => {
+	tableRef.value!.toggleRowSelection(row, statu);
 };
 
 onMounted(() => {
@@ -303,13 +305,15 @@ onMounted(() => {
 		state.page.order = props.defaultSort.order;
 	}
 	state.page.pageSize = props.config.pageSize;
+	state.listColumn = JSON.parse(JSON.stringify(props.columns));
 	handleList();
 });
 
-// 暴露变量
+// 导出对象
 defineExpose({
 	pageReset,
 	handleList,
+	toggleSelection,
 });
 </script>
 

+ 59 - 13
Web/src/components/table/search.vue

@@ -5,25 +5,55 @@
 				<el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="6" class="mb20" v-for="(val, key) in search" :key="key" v-show="key < 3 || state.isToggle">
 					<template v-if="val.type !== ''">
 						<el-form-item :label="val.label" :prop="val.prop" :rules="[{ required: val.required, message: `${val.label}不能为空`, trigger: val.type === 'input' ? 'blur' : 'change' }]">
-							<el-input v-model="state.form[val.prop]" :placeholder="val.placeholder" clearable v-if="val.type === 'input'" @keyup.enter="onSearch(tableSearchRef)" style="width: 100%" />
-							<el-date-picker v-model="state.form[val.prop]" type="date" :placeholder="val.placeholder" v-else-if="val.type === 'date'" style="width: 100%" />
-							<el-select v-model="state.form[val.prop]" clearable :placeholder="val.placeholder" v-else-if="val.type === 'select'" style="width: 100%">
+							<el-input
+								v-model="state.form[val.prop]"
+								v-bind="$attrs"
+								:placeholder="val.placeholder"
+								:clearable="!val.required"
+								v-if="val.type === 'input'"
+								@keyup.enter="onSearch(tableSearchRef)"
+								style="width: 100%"
+							/>
+							<el-date-picker
+								v-model="state.form[val.prop]"
+								v-bind="$attrs"
+								type="date"
+								:placeholder="val.placeholder"
+								:clearable="!val.required"
+								v-else-if="val.type === 'date'"
+								style="width: 100%"
+							/>
+							<el-select v-model="state.form[val.prop]" v-bind="$attrs" :clearable="!val.required" :placeholder="val.placeholder" v-else-if="val.type === 'select'" style="width: 100%">
 								<el-option v-for="item in val.options" :key="item.value" :label="item.label" :value="item.value"> </el-option>
 							</el-select>
+							<el-cascader
+								v-else-if="val.type === 'cascader' && val.cascaderData"
+								:options="val.cascaderData"
+								:clearable="!val.required"
+								filterable
+								:props="val.cascaderProps ? val.cascaderProps : state.cascaderProps"
+								:placeholder="val.placeholder"
+								class="w100"
+								v-bind="$attrs"
+								v-model="state.form[val.prop]"
+							>
+							</el-cascader>
 						</el-form-item>
 					</template>
 				</el-col>
 				<el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="6" class="mb20">
-					<el-form-item class="table-form-btn" :label-width="search.length <= 1 ? '10px' : '100px'">
-						<template #label v-if="search.length > 3">
-							<div class="table-form-btn-toggle ml10" @click="state.isToggle = !state.isToggle">
-								<span>{{ state.isToggle ? '收起' : '展开' }}</span>
-								<SvgIcon :name="state.isToggle ? 'ele-ArrowUp' : 'ele-ArrowDown'" />
+					<el-form-item class="table-form-btn" :label-width="search.length <= 3 ? '10px' : '100px'">
+						<template #label>
+							<div v-if="search.length > 3">
+								<div class="table-form-btn-toggle ml10" @click="state.isToggle = !state.isToggle">
+									<span>{{ state.isToggle ? '收起' : '展开' }}</span>
+									<SvgIcon :name="state.isToggle ? 'ele-ArrowUp' : 'ele-ArrowDown'" />
+								</div>
 							</div>
 						</template>
 						<div>
-							<el-button size="default" type="primary" icon="ele-Search" plain @click="onSearch(tableSearchRef)"> 查询 </el-button>
-							<el-button size="default" plain icon="ele-Refresh" @click="onReset(tableSearchRef)"> 重置 </el-button>
+							<el-button size="default" type="primary" icon="ele-Search" @click="onSearch(tableSearchRef)" plain>查询 </el-button>
+							<el-button size="default" icon="ele-Refresh" class="ml10" @click="onReset(tableSearchRef)"> 重置 </el-button>
 						</div>
 					</el-form-item>
 				</el-col>
@@ -33,16 +63,20 @@
 </template>
 
 <script setup lang="ts" name="makeTableDemoSearch">
-import { reactive, ref, onMounted } from 'vue';
+import { reactive, ref, onMounted, watch } from 'vue';
 import type { FormInstance } from 'element-plus';
 
 // 定义父组件传过来的值
 const props = defineProps({
-	// 搜索表单
+	// 搜索表单,type-控件类型(input,select,cascader,date),options-type为selct时需传值,cascaderData,cascaderProps-type为cascader时需传值,属性同elementUI,cascaderProps不传则使用state默认
 	search: {
 		type: Array<TableSearchType>,
 		default: () => [],
 	},
+	param: {
+		type: Object,
+		default: () => {},
+	},
 });
 
 // 定义子组件向父组件传值/事件
@@ -53,8 +87,20 @@ const tableSearchRef = ref<FormInstance>();
 const state = reactive({
 	form: {},
 	isToggle: false,
+	cascaderProps: { checkStrictly: true, emitPath: false, value: 'id', label: 'name', expandTrigger: 'hover' },
 });
-
+watch(
+	() => props.param,
+	(value) => {
+		if (value) {
+			state.form = Object.assign({}, { ...value });
+		}
+	},
+	{
+		immediate: true,
+		deep: true,
+	}
+);
 // 查询
 const onSearch = (formEl: FormInstance | undefined) => {
 	if (!formEl) return;

+ 0 - 1
Web/src/main.ts

@@ -16,7 +16,6 @@ import VueSignaturePad from 'vue-signature-pad'; // 电子签名
 import vue3TreeOrg from 'vue3-tree-org'; // 组织架构图
 import 'vue3-tree-org/lib/vue3-tree-org.css'; // 组织架构图样式
 import 'animate.css'; // 动画库
-import '/@/assets/styles/main.scss'; //自定义样式
 
 const app = createApp(App);
 

+ 1 - 1
Web/src/stores/themeConfig.ts

@@ -145,7 +145,7 @@ export const useThemeConfig = defineStore('themeConfig', {
 			// 默认初始语言,可选值"<zh-cn|en|zh-tw>",默认 zh-cn
 			globalI18n: 'zh-cn',
 			// 默认全局组件大小,可选值"<large|'default'|small>",默认 'large'
-			globalComponentSize: 'default',
+			globalComponentSize: 'small',
 		},
 	}),
 	actions: {

+ 40 - 5
Web/src/theme/element.scss

@@ -330,11 +330,11 @@
 	background-color: var(--el-color-primary) !important;
 	color: var(--el-color-white) !important;
 }
-// // 分页组件靠右显示
-// .el-pagination {
-// 	float: right;
-// 	margin: 5px 0 5px 0 !important;
-// }
+// 分页组件靠右显示
+.el-pagination {
+	float: right;
+	margin: 10px 0 -10px 0 !important;
+}
 
 /* scrollbar
 ------------------------------- */
@@ -382,3 +382,38 @@
 }
 
 $--el-table-text-color: #fb6d49;
+
+// hack列表页
+.layout-parent {
+	height: 0;
+  
+	// Table页自动撑满页面
+	>div:first-child {
+	  display: flex;
+	  flex-direction: column;
+	  height: 100%;
+  
+	  .el-card:nth-child(2) {
+		flex: 1;
+  
+		.el-card__body {
+		  height: 100%;
+		  display: flex;
+		  flex-direction: column;
+  
+		  .el-table {
+			flex: 1;
+		  }
+  
+		  .el-pagination {
+			display: flex;
+  
+			>span:first-child {
+			  flex: 1;
+			  text-align: right;
+			}
+		  }
+		}
+	  }
+	}
+}

+ 14 - 11
Web/src/types/views.d.ts

@@ -293,17 +293,17 @@ declare type TableDemoPageType = {
 
 declare type TableHeaderType = {
 	key: string;
-	width: string;
+	//width: string;
 	title: string;
-	type: string | number;
-	colWidth: string;
+	type?: string | number;
+	colWidth?: string;
 	width?: string | number;
 	height?: string | number;
-	isCheck: boolean;
-	align: string;
-	headerAlign: string;
-	toolTip: boolean;
-	sortable: boolean;
+	isCheck?: boolean;
+	align?: string;
+	headerAlign?: string;
+	toolTip?: boolean;
+	sortable?: boolean;
 };
 
 declare type TableSearchType = {
@@ -313,12 +313,15 @@ declare type TableSearchType = {
 	required: boolean;
 	type: string;
 	options?: SelectOptionType[];
+	cascaderData?: object[];
+	cascaderProps?: object;
 };
 
 declare type TableDemoState = {
 	tableData: {
 		// data: EmptyObjectType[];
-		header: TableHeaderType[];
+		// header: TableHeaderType[];
+		columns: Object[]; // 列设置,同ELTable-Column属性
 		config: {
 			// total: number;
 			// loading: boolean;
@@ -327,8 +330,8 @@ declare type TableDemoState = {
 			showSelection: boolean;
 			isSerialNo: boolean;
 			pageSize: number;
-			hideExport: boolean;
-			exportFileName: string;
+			hideExport?: boolean;
+			exportFileName?: string;
 			// isOperate: boolean;
 		};
 		// actions: WorkflowDrawerLabelType[];

+ 7 - 8
Web/src/utils/exportExcel.ts

@@ -42,16 +42,16 @@ export function exportExcel(jsonarr: Array<EmptyObjectType>, name: string, heade
 	var headrow = new Array();
 	header.forEach((item) => {
 		let width = 200;
-		if (item.colWidth && !isNaN(item.colWidth)) {
-			width = parseInt(item.colWidth) * 0.7;
+		if (item.width && !isNaN(item.width)) {
+			width = parseInt(item.width) * 0.7;
 		}
 		wpxArr.push({ wpx: width });
 		headrow.push({
-			v: item.title,
+			v: item.label,
 			t: 's',
 			s: {
 				font: { bold: true },
-				alignment: { wrapText: true, horizontal: item.headerAlign ? item.headerAlign : item.align, vertical: 'center' },
+				alignment: { wrapText: true, horizontal: item.headerAlign ? item.headerAlign : item.align ? item.align : '', vertical: 'center' },
 				border: borderStyle,
 			},
 		});
@@ -60,14 +60,14 @@ export function exportExcel(jsonarr: Array<EmptyObjectType>, name: string, heade
 	jsonarr.forEach((json) => {
 		var row = new Array();
 		header.forEach((item) => {
-			if (json.hasOwnProperty(item.key)) {
+			if (json.hasOwnProperty(item.prop)) {
 				let val = '';
-				if (json[item.key] != null) val = json[item.key];
+				if (json[item.prop] != null) val = json[item.prop];
 				row.push({
 					v: val,
 					t: 's',
 					s: {
-						alignment: { wrapText: true, horizontal: item.align, vertical: 'center' },
+						alignment: { wrapText: true, horizontal: item.align ? item.align : '', vertical: 'center' },
 						border: borderStyle,
 					},
 				});
@@ -75,7 +75,6 @@ export function exportExcel(jsonarr: Array<EmptyObjectType>, name: string, heade
 		});
 		data.push(row);
 	});
-	console.log(data);
 	const ws = XLSXS.utils.aoa_to_sheet(data);
 	const wb = XLSXS.utils.book_new();
 	ws['!cols'] = wpxArr;

+ 8 - 8
Web/src/views/system/codeGen/component/genConfigDialog.vue

@@ -89,18 +89,18 @@ const state = reactive({
 });
 
 onMounted(async () => {
-	let res = await getAPI(SysDictDataApi).apiSysDictDataDataListCodeGet('code_gen_effect_type');
+	var res = await getAPI(SysDictDataApi).apiSysDictDataDataListCodeGet('code_gen_effect_type');
 	state.effectTypeList = res.data.result;
 
-	res = await getAPI(SysDictTypeApi).apiSysDictTypeListGet();
-	state.dictTypeCodeList = res.data.result;
-	state.dictDataAll = res.data.result;
+	var res1 = await getAPI(SysDictTypeApi).apiSysDictTypeListGet();
+	state.dictTypeCodeList = res1.data.result;
+	state.dictDataAll = res1.data.result;
 
-	res = await getAPI(SysDictDataApi).apiSysDictDataDataListCodeGet('code_gen_query_type');
-	state.queryTypeList = res.data.result;
+	var res2 = await getAPI(SysDictDataApi).apiSysDictDataDataListCodeGet('code_gen_query_type');
+	state.queryTypeList = res2.data.result;
 
-	res = await getAPI(SysConstApi).apiSysConstListGet();
-	state.allConstSelector = res.data.result;
+	var res3 = await getAPI(SysConstApi).apiSysConstListGet();
+	state.allConstSelector = res3.data.result;
 
 	mittBus.on('submitRefreshFk', (data: any) => {
 		state.tableData[data.index] = data;

+ 31 - 57
Web/src/views/system/codeGen/index.vue

@@ -2,29 +2,21 @@
 	<div class="sys-codeGen-container">
 		<el-card shadow="hover" :body-style="{ paddingBottom: '0' }">
 			<el-form :model="state.queryParams" ref="queryForm" :inline="true">
-        <el-row :gutter="35">
-          <el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="6">
-            <el-form-item label="业务名" prop="busName">
-              <el-input placeholder="业务名" clearable @keyup.enter="handleQuery" v-model="state.queryParams.busName" />
-            </el-form-item>
-          </el-col>
-          <el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="6">  
-            <el-form-item label="数据库表名" prop="tableName">
-              <el-input placeholder="数据库表名" clearable @keyup.enter="handleQuery" v-model="state.queryParams.tableName" />
-            </el-form-item>
-          </el-col>
-          <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20 search-actions">
-            <div>
-              <el-button type="primary" icon="ele-Plus" @click="openAddDialog"> 增加 </el-button>
-            </div>
-            <div>
-              <el-form-item>
-                <el-button icon="ele-Refresh" @click="resetQuery"> 重置 </el-button>
-                <el-button type="primary" icon="ele-Search" @click="handleQuery" v-auth="'sysMenu:list'" plain> 查询 </el-button>
-              </el-form-item>
-            </div>
-          </el-col>
-        </el-row>
+				<el-form-item label="业务名" prop="busName">
+					<el-input placeholder="业务名" clearable @keyup.enter="handleQuery" v-model="state.queryParams.busName" />
+				</el-form-item>
+				<el-form-item label="数据库表名" prop="tableName">
+					<el-input placeholder="数据库表名" clearable @keyup.enter="handleQuery" v-model="state.queryParams.tableName" />
+				</el-form-item>
+				<el-form-item>
+					<el-button-group>
+						<el-button type="primary" icon="ele-Search" @click="handleQuery" v-auth="'sysMenu:list'"> 查询 </el-button>
+						<el-button icon="ele-Refresh" @click="resetQuery"> 重置 </el-button>
+					</el-button-group>
+				</el-form-item>
+				<el-form-item>
+					<el-button type="primary" icon="ele-Plus" @click="openAddDialog"> 增加 </el-button>
+				</el-form-item>
 			</el-form>
 		</el-card>
 
@@ -39,11 +31,11 @@
 				<el-table-column prop="generateType" label="生成方式" show-overflow-tooltip>
 					<template #default="scope">
 						<el-tag v-if="scope.row.generateType === 100"> 下载压缩包 </el-tag>
-                        <el-tag v-else-if="scope.row.generateType === 111"> 下载压缩包(前端) </el-tag>
-                        <el-tag v-else-if="scope.row.generateType === 121"> 下载压缩包(后端) </el-tag>
-                        <el-tag v-else-if="scope.row.generateType === 211"> 生成到本项目(前端) </el-tag>
-                        <el-tag v-else-if="scope.row.generateType === 221"> 生成到本项目(后端) </el-tag>
-                        <el-tag type="danger" v-else> 生成到本项目 </el-tag>
+						<el-tag v-else-if="scope.row.generateType === 111"> 下载压缩包(前端) </el-tag>
+						<el-tag v-else-if="scope.row.generateType === 121"> 下载压缩包(后端) </el-tag>
+						<el-tag v-else-if="scope.row.generateType === 211"> 生成到本项目(前端) </el-tag>
+						<el-tag v-else-if="scope.row.generateType === 221"> 生成到本项目(后端) </el-tag>
+						<el-tag type="danger" v-else> 生成到本项目 </el-tag>
 					</template>
 				</el-table-column>
 				<el-table-column label="操作" width="200" fixed="right" align="center" show-overflow-tooltip>
@@ -137,25 +129,8 @@ const resetQuery = () => {
 // 表查询操作
 const handleQuery = async () => {
 	state.loading = true;
-	// let params = Object.assign(state.queryParams, state.tableParams);
-	let res = await getAPI(SysCodeGenApi).apiSysCodeGenPageGet(
-		undefined,
-		undefined,
-		undefined,
-		undefined,
-		undefined,
-		undefined,
-		undefined,
-		undefined,
-		state.queryParams.tableName,
-		undefined,
-		undefined,
-		undefined,
-		undefined,
-		undefined,
-		state.tableParams.page,
-		state.tableParams.pageSize
-	);
+	let params = Object.assign(state.queryParams, state.tableParams);
+	let res = await getAPI(SysCodeGenApi).apiSysCodeGenPagePost(params);
 	state.tableData = res.data.result?.items ?? [];
 	state.tableParams.total = res.data.result?.total;
 	state.loading = false;
@@ -208,9 +183,8 @@ const handleGenerate = (row: any) => {
 		type: 'warning',
 	})
 		.then(async () => {
-			var res=await getAPI(SysCodeGenApi).apiSysCodeGenRunLocalPost(row);
-			if (res.data.result != null && res.data.result.url != null)
-			    downloadByUrl({ url: res.data.result.url });
+			var res = await getAPI(SysCodeGenApi).apiSysCodeGenRunLocalPost(row);
+			if (res.data.result != null && res.data.result.url != null) downloadByUrl({ url: res.data.result.url });
 			handleQuery();
 			ElMessage.success('操作成功');
 		})
@@ -219,10 +193,10 @@ const handleGenerate = (row: any) => {
 </script>
 
 <style lang="scss" scoped>
-  //搜索区域Label固定宽度
-  .sys-codeGen-container{
-    ::v-deep(.el-form-item__label) {
-      width: 90px;
-    }
-  }
-</style>
+//搜索区域Label固定宽度
+.sys-codeGen-container {
+	::v-deep(.el-form-item__label) {
+		width: 90px;
+	}
+}
+</style>

+ 83 - 62
Web/src/views/system/config/index.vue

@@ -7,7 +7,7 @@
 			<Table ref="tableRef" v-bind="tb.tableData" :getData="getData" :exportChangeData="exportChangeData" @sortHeader="onSortHeader" @selectionChange="tableSelection">
 				<template #command>
 					<el-button type="primary" icon="ele-Plus" @click="openAddConfig" v-auth="'sysConfig:add'"> 新增 </el-button>
-					<el-button v-if="state.selectlist.length > 0" type="danger" icon="ele-Delete" @click="bacthDelete" v-auth="'sysConfig:delete'"> 批量删除 </el-button>
+					<el-button v-if="state.selectlist.length > 0" type="danger" icon="ele-Delete" @click="bacthDelete" v-auth="'sysConfig:batchDelete'"> 批量删除 </el-button>
 				</template>
 				<template #sysFlag="scope">
 					<el-tag v-if="scope.row.sysFlag === 1"> 是 </el-tag>
@@ -19,7 +19,7 @@
 				</template>
 			</Table>
 		</el-card>
-		<EditConfig ref="editConfigRef" :title="state.editConfigTitle" />
+		<EditConfig ref="editConfigRef" :title="state.editConfigTitle" :groupList="state.groupList" />
 	</div>
 </template>
 
@@ -31,8 +31,8 @@ import EditConfig from '/@/views/system/config/component/editConfig.vue';
 
 import { getAPI } from '/@/utils/axios-utils';
 import { SysConfigApi } from '/@/api-services/api';
+import { auth } from '/@/utils/authFunction';
 
-// 引入组件
 const Table = defineAsyncComponent(() => import('/@/components/table/index.vue'));
 const TableSearch = defineAsyncComponent(() => import('/@/components/table/search.vue'));
 const editConfigRef = ref<InstanceType<typeof EditConfig>>();
@@ -41,36 +41,33 @@ const tableRef = ref<RefType>();
 const state = reactive({
 	editConfigTitle: '',
 	selectlist: [] as EmptyObjectType[],
+	groupList: [] as Array<String>,
 });
 
 const tb = reactive<TableDemoState>({
 	tableData: {
-		// 表头内容(必传,注意格式)
-		header: [
-			{ key: 'name', colWidth: '180', title: '配置名称', type: 'text', align: 'center', headerAlign: '', toolTip: false, sortable: true, isCheck: true },
-			{ key: 'code', colWidth: '180', title: '配置编码', type: 'text', align: 'center', headerAlign: '', toolTip: true, sortable: true, isCheck: true },
-			{ key: 'value', colWidth: '120', title: '属性值', type: 'text', align: 'center', headerAlign: '', toolTip: false, sortable: false, isCheck: true },
-			{ key: 'sysFlag', colWidth: '120', title: '内置参数', type: 'text', align: 'center', headerAlign: '', toolTip: false, sortable: false, isCheck: true },
-			{ key: 'groupCode', colWidth: '120', title: '分组编码', type: 'text', align: 'center', headerAlign: '', toolTip: false, sortable: false, isCheck: true },
-			{ key: 'orderNo', colWidth: '80', title: '排序', type: 'text', align: 'center', headerAlign: '', toolTip: false, sortable: false, isCheck: true },
-			{ key: 'remark', colWidth: '', title: '备注', type: 'text', align: '', headerAlign: 'center', toolTip: false, sortable: false, isCheck: true },
-			{ key: 'action', colWidth: '150', title: '操作', type: 'action', align: 'center', headerAlign: '', toolTip: false, sortable: false, isCheck: true },
+		columns: [
+			{ prop: 'name', label: '配置名称', width: '180', align: 'center', sortable: 'custom', isCheck: true, hideCheck: true },
+			{ prop: 'code', label: '配置编码', width: '180', align: 'center', toolTip: true, sortable: 'custom', isCheck: true },
+			{ prop: 'value', label: '属性值', width: '120', align: 'center', isCheck: true },
+			{ prop: 'sysFlag', label: '内置参数', width: '120', align: 'center', isCheck: true },
+			{ prop: 'groupCode', label: '分组编码', width: '120', align: 'center', isCheck: true },
+			{ prop: 'orderNo', label: '排序', width: '80', align: 'center', isCheck: true },
+			{ prop: 'remark', label: '备注', width: '', align: '', headerAlign: 'center', showOverflowTooltip: true, isCheck: true },
+			{ prop: 'action', label: '操作', width: '140', align: 'center', type: 'action', fixed: 'right', isCheck: true, hideCheck: true },
 		],
-		// 配置项(必传)
 		config: {
-			isBorder: true, // 是否显示表格边框
-			isSerialNo: true, // 是否显示表格序号
-			isSelection: false, // 是否勾选表格多选
-			showSelection: false, //是否显示表格多选
-			pageSize: 20, // 每页条数
-			hideExport: false, //是否隐藏导出按钮
-			exportFileName: '参数配置', //导出报表的文件名,不填写取应用名称
+			isBorder: true, // 表格边框
+			isSerialNo: true, // 表格序号
+			isSelection: true, // 勾选多选
+			showSelection: auth('sysConfig:batchDelete'), // 显示多选
+			pageSize: 10, // 每页条数
+			hideExport: false, // 隐藏导出按钮
+			exportFileName: '参数配置', // 导出报表的文件名(不填写取应用名称)
 		},
-		// 搜索表单,动态生成(传空数组时,将不显示搜索,type有3种类型:input,date,select)
 		search: [
 			{ label: '配置名称', prop: 'name', placeholder: '配置名称', required: false, type: 'input' },
 			{ label: '配置编码', prop: 'code', placeholder: '配置编码', required: false, type: 'input' },
-			// { label: '分组编码', prop: 'groupCode', placeholder: '分组编码', required: false, type: 'input' },
 			// { label: '创建时间', prop: 'time', placeholder: '请选择', required: false, type: 'date' },
 		],
 		param: {},
@@ -80,21 +77,38 @@ const tb = reactive<TableDemoState>({
 		},
 	},
 });
+
+onMounted(async () => {
+	getGroupList();
+	mittBus.on('submitRefresh', () => {
+		tableRef.value.handleList();
+		getGroupList();
+	});
+});
+
+onUnmounted(() => {
+	mittBus.off('submitRefresh');
+});
+
 const getData = async (param: any) => {
 	var res = await getAPI(SysConfigApi).apiSysConfigPagePost(param);
 	return res.data;
 };
+
+// 导出处理
 const exportChangeData = (data: Array<EmptyObjectType>) => {
 	data.forEach((item) => {
 		item.sysFlag = item.sysFlag == 1 ? '是' : '否';
 	});
 	return data;
 };
-// 拖动显示列排序回调
+
+// 拖动列排序
 const onSortHeader = (data: TableHeaderType[]) => {
-	tb.tableData.header = data;
+	tb.tableData.columns = data;
 };
-// 搜索点击时表单回调
+
+// 搜索查询
 const onSearch = (data: EmptyObjectType) => {
 	tb.tableData.param = Object.assign({}, tb.tableData.param, { ...data });
 	nextTick(() => {
@@ -102,42 +116,15 @@ const onSearch = (data: EmptyObjectType) => {
 	});
 };
 
-const getGroupList = async () => {
-	const res = await getAPI(SysConfigApi).apiSysConfigGroupListGet();
-	const groupSearch = {
-		label: '分组编码',
-		prop: 'groupCode',
-		placeholder: '请选择',
-		required: false,
-		type: 'select',
-		options: [],
-	} as TableSearchType;
-	res.data.result?.forEach((item) => {
-		groupSearch.options?.push({ label: item, value: item });
-	});
-	tb.tableData.search.push(groupSearch);
-};
-//表格多选事件
+// 表格行多选
 const tableSelection = (data: EmptyObjectType[]) => {
-	console.log('表格多选事件', data);
 	state.selectlist = data;
 };
 
-onMounted(async () => {
-	getGroupList();
-	mittBus.on('submitRefresh', () => {
-		tableRef.value.handleList();
-	});
-});
-
-onUnmounted(() => {
-	mittBus.off('submitRefresh');
-});
-
 // 打开新增页面
 const openAddConfig = () => {
 	state.editConfigTitle = '添加配置';
-	editConfigRef.value?.openDialog({});
+	editConfigRef.value?.openDialog({ sysFlag: 2 });
 };
 
 // 打开编辑页面
@@ -160,14 +147,48 @@ const delConfig = (row: any) => {
 		})
 		.catch(() => {});
 };
-//批量删除
+
+// 批量删除
 const bacthDelete = () => {
-	if (state.selectlist.length == 0) return false;
-	ElMessageBox.confirm(`确定批量删除【${state.selectlist[0].name}】等${state.selectlist.length}个配置?`, '提示', {
-		confirmButtonText: '确定',
-		cancelButtonText: '取消',
-		type: 'warning',
+	// if (state.selectlist.length == 0) return false;
+	// ElMessageBox.confirm(`确定批量删除【${state.selectlist[0].name}】等${state.selectlist.length}个配置?`, '提示', {
+	// 	confirmButtonText: '确定',
+	// 	cancelButtonText: '取消',
+	// 	type: 'warning',
+	// })
+	// 	.then(async () => {
+	// 		const ids = state.selectlist.map((item) => {
+	// 			return item.id;
+	// 		});
+	// 		var res = await getAPI(SysConfigApi).apiSysConfigBatchDeletePost({ ids: ids });
+	// 		tableRef.value.pageReset();
+	// 		ElMessage.success(res.data.result?.toString());
+	// 	})
+	// 	.catch(() => {});
+};
+
+// 获取分组列表
+const getGroupList = async () => {
+	var res = await getAPI(SysConfigApi).apiSysConfigGroupListGet();
+	var groupSearch = {
+		label: '分组编码',
+		prop: 'groupCode',
+		placeholder: '请选择',
+		required: false,
+		type: 'select',
+		options: [],
+	} as TableSearchType;
+	state.groupList = res.data.result ?? [];
+	res.data.result?.forEach((item) => {
+		groupSearch.options?.push({ label: item, value: item });
+	});
+	let group = tb.tableData.search.filter((item) => {
+		return item.prop == 'groupCode';
 	});
-	console.log('批量删除了');
+	if (group.length == 0) {
+		tb.tableData.search.push(groupSearch);
+	} else {
+		group[0] = groupSearch;
+	}
 };
 </script>

+ 17 - 27
Web/src/views/system/database/index.vue

@@ -2,33 +2,23 @@
 	<div class="sys-database-container">
 		<el-card shadow="hover" :body-style="{ paddingBottom: '0' }">
 			<el-form :model="state.queryParams" ref="queryForm" :inline="true" v-loading="state.loading">
-        <el-row :gutter="35">
-          <el-col :xs="24" :sm="12" :md="8" :lg="8" :xl="8">
-            <el-form-item label="库名" prop="configId">
-              <el-select v-model="state.configId" placeholder="库名" filterable @change="handleQueryTable">
-                <el-option v-for="item in state.dbData" :key="item" :label="item" :value="item" />
-              </el-select>
-            </el-form-item>
-          </el-col>
-          <el-col :xs="24" :sm="12" :md="8" :lg="8" :xl="8">  
-            <el-form-item label="表名" prop="tableName">
-              <el-select v-model="state.tableName" placeholder="表名" filterable clearable @change="handleQueryColumn">
-                <el-option v-for="item in state.tableData" :key="item.name" :label="item.name + '[' + item.description + ']'" :value="item.name" />
-              </el-select>
-            </el-form-item>
-          </el-col>
-          <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20 search-actions">
-            <div>
-              <el-button icon="ele-Edit" type="primary" @click="openEditTable"> 编辑表 </el-button>
-              <el-button icon="ele-Delete" type="danger" @click="delTable"> 删除表 </el-button>
-              <el-button icon="ele-Plus" @click="openAddTable"> 增加表 </el-button>
-              <el-button icon="ele-Plus" @click="openAddColumn"> 增加列 </el-button>
-              <el-button icon="ele-Plus" @click="openGenDialog"> 生成实体 </el-button>
-            </div>
-            <div> 
-            </div>
-          </el-col>
-        </el-row>
+				<el-form-item label="库名" prop="configId">
+					<el-select v-model="state.configId" placeholder="库名" filterable @change="handleQueryTable">
+						<el-option v-for="item in state.dbData" :key="item" :label="item" :value="item" />
+					</el-select>
+				</el-form-item>
+				<el-form-item label="表名" prop="tableName">
+					<el-select v-model="state.tableName" placeholder="表名" filterable clearable @change="handleQueryColumn">
+						<el-option v-for="item in state.tableData" :key="item.name" :label="item.name + '[' + item.description + ']'" :value="item.name" />
+					</el-select>
+				</el-form-item>
+				<el-form-item>
+					<el-button icon="ele-Edit" type="primary" @click="openEditTable"> 编辑表 </el-button>
+					<el-button icon="ele-Delete" type="danger" @click="delTable"> 删除表 </el-button>
+					<el-button icon="ele-Plus" @click="openAddTable"> 增加表 </el-button>
+					<el-button icon="ele-Plus" @click="openAddColumn"> 增加列 </el-button>
+					<el-button icon="ele-Plus" @click="openGenDialog"> 生成实体 </el-button>
+				</el-form-item>
 			</el-form>
 		</el-card>
 

+ 17 - 24
Web/src/views/system/dict/component/dictDataDialog.vue

@@ -9,29 +9,21 @@
 			</template>
 			<el-card shadow="hover" :body-style="{ paddingBottom: '0' }">
 				<el-form :model="state.queryParams" ref="queryForm" :inline="true">
-        <el-row :gutter="35">
-          <el-col :xs="24" :sm="12" :md="8" :lg="8" :xl="8">
-            <el-form-item label="值" prop="value">
-              <el-input placeholder="值" clearable @keyup.enter="handleQuery" v-model="state.queryParams.value" />
-            </el-form-item>
-          </el-col>
-          <el-col :xs="24" :sm="12" :md="8" :lg="8" :xl="8">
-            <el-form-item label="编码" prop="code">
-              <el-input placeholder="编码" clearable @keyup.enter="handleQuery" v-model="state.queryParams.code" />
-            </el-form-item>
-          </el-col>
-          <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20 search-actions">
-            <div>
-              <el-button type="primary"  icon="ele-Plus" @click="openAddDictData"> 新增 </el-button>
-            </div>
-            <div>
-              <el-form-item>
-                <el-button icon="ele-Refresh" @click="resetQuery"> 重置 </el-button>
-                <el-button type="primary" icon="ele-Search" @click="handleQuery" plain> 查询 </el-button> 
-              </el-form-item>
-            </div>
-          </el-col>
-        </el-row>
+					<el-form-item label="值" prop="value">
+						<el-input placeholder="值" clearable @keyup.enter="handleQuery" v-model="state.queryParams.value" />
+					</el-form-item>
+					<el-form-item label="编码" prop="code">
+						<el-input placeholder="编码" clearable @keyup.enter="handleQuery" v-model="state.queryParams.code" />
+					</el-form-item>
+					<el-form-item>
+						<el-button-group>
+							<el-button type="primary" icon="ele-Search" @click="handleQuery"> 查询 </el-button>
+							<el-button icon="ele-Refresh" @click="resetQuery"> 重置 </el-button>
+						</el-button-group>
+					</el-form-item>
+					<el-form-item>
+						<el-button type="primary" icon="ele-Plus" @click="openAddDictData"> 新增 </el-button>
+					</el-form-item>
 				</el-form>
 			</el-card>
 
@@ -121,7 +113,8 @@ const openDialog = async (row: any) => {
 // 查询操作
 const handleQuery = async () => {
 	state.loading = true;
-	var res = await getAPI(SysDictDataApi).apiSysDictDataPageGet(state.dictTypeId, state.queryParams.value, state.queryParams.code, state.tableParams.page, state.tableParams.pageSize);
+	let params = Object.assign(state.queryParams, state.tableParams);
+	var res = await getAPI(SysDictDataApi).apiSysDictDataPagePost(params);
 	state.dictDataData = res.data.result?.items ?? [];
 	state.tableParams.total = res.data.result?.total;
 	state.loading = false;

+ 15 - 24
Web/src/views/system/dict/index.vue

@@ -2,29 +2,19 @@
 	<div class="sys-dict-container">
 		<el-card shadow="hover" :body-style="{ paddingBottom: '0' }">
 			<el-form :model="state.queryParams" ref="queryForm" :inline="true">
-        <el-row :gutter="35">
-          <el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="6">
-            <el-form-item label="字典名称" prop="name">
-              <el-input placeholder="字典名称" clearable @keyup.enter="handleQuery" v-model="state.queryParams.name" />
-            </el-form-item>
-          </el-col>
-          <el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="6">  
-            <el-form-item label="字典编码" prop="code">
-              <el-input placeholder="字典编码" clearable @keyup.enter="handleQuery" v-model="state.queryParams.code" />
-            </el-form-item>
-          </el-col>
-          <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20 search-actions">
-            <div>
-              <el-button type="primary"  icon="ele-Plus" @click="openAddDictType" v-auth="'sysDictType:add'"> 新增 </el-button>
-            </div>
-            <div>
-              <el-form-item>
-                <el-button icon="ele-Refresh" @click="resetQuery"> 重置 </el-button>
-                <el-button type="primary" icon="ele-Search" @click="handleQuery" v-auth="'sysDictType:page'" plain> 查询 </el-button> 
-              </el-form-item>
-            </div>
-          </el-col>
-        </el-row>
+				<el-form-item label="字典名称" prop="name">
+					<el-input placeholder="字典名称" clearable @keyup.enter="handleQuery" v-model="state.queryParams.name" />
+				</el-form-item>
+				<el-form-item label="字典编码" prop="code">
+					<el-input placeholder="字典编码" clearable @keyup.enter="handleQuery" v-model="state.queryParams.code" />
+				</el-form-item>
+				<el-form-item>
+					<el-button type="primary" icon="ele-Search" @click="handleQuery" v-auth="'sysDictType:page'" plain> 查询 </el-button>
+					<el-button icon="ele-Refresh" @click="resetQuery"> 重置 </el-button>
+				</el-form-item>
+				<el-form-item>
+					<el-button type="primary" icon="ele-Plus" @click="openAddDictType" v-auth="'sysDictType:add'"> 新增 </el-button>
+				</el-form-item>
 			</el-form>
 		</el-card>
 
@@ -110,7 +100,8 @@ onUnmounted(() => {
 // 查询操作
 const handleQuery = async () => {
 	state.loading = true;
-	var res = await getAPI(SysDictTypeApi).apiSysDictTypePageGet(state.queryParams.name, state.queryParams.code, state.tableParams.page, state.tableParams.pageSize);
+	let params = Object.assign(state.queryParams, state.tableParams);
+	var res = await getAPI(SysDictTypeApi).apiSysDictTypePagePost(params);
 	state.dictTypeData = res.data.result?.items ?? [];
 	state.tableParams.total = res.data.result?.total;
 	state.loading = false;

+ 27 - 40
Web/src/views/system/file/index.vue

@@ -2,43 +2,31 @@
 	<div class="sys-file-container">
 		<el-card shadow="hover" :body-style="{ paddingBottom: '0' }">
 			<el-form :model="state.queryParams" ref="queryForm" :inline="true">
-        <el-row :gutter="35">
-          <el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="6">
-            <el-form-item label="文件名称" prop="fileName">
-              <el-input placeholder="文件名称" clearable @keyup.enter="handleQuery" v-model="state.queryParams.fileName" />
-            </el-form-item>
-          </el-col>
-          <el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="6">  
-            <el-form-item label="时间范围" prop="timeRange">
-              <el-date-picker
-                v-model="state.queryParams.timeRange"
-                type="datetimerange"
-                start-placeholder="开始时间"
-                end-placeholder="结束时间"
-                format="YYYY-MM-DD HH:mm:ss"
-                value-format="YYYY-MM-DD HH:mm:ss"
-              />
-            </el-form-item>
-          </el-col>
-          <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20 search-actions">
-            <div>
-              <el-button type="primary"  icon="ele-Plus" @click="openUploadDialog" v-auth="'sysFile:uploadFile'"> 上传 </el-button>
-            </div>
-            <div>
-              <el-form-item>
-                <el-button icon="ele-Refresh" @click="resetQuery"> 重置 </el-button>
-                <el-button type="primary" icon="ele-Search" @click="handleQuery" v-auth="'sysFile:page'" plain> 查询 </el-button> 
-              </el-form-item>
-            </div>
-          </el-col>
-        </el-row>
+				<el-form-item label="文件名称" prop="fileName">
+					<el-input placeholder="文件名称" clearable @keyup.enter="handleQuery" v-model="state.queryParams.fileName" />
+				</el-form-item>
+				<el-form-item label="开始时间" prop="name">
+					<el-date-picker v-model="state.queryParams.startTime" type="datetime" placeholder="开始时间" />
+				</el-form-item>
+				<el-form-item label="结束时间" prop="code">
+					<el-date-picker v-model="state.queryParams.endTime" type="datetime" placeholder="结束时间" />
+				</el-form-item>
+				<el-form-item>
+					<el-button-group>
+						<el-button type="primary" icon="ele-Search" @click="handleQuery" v-auth="'sysFile:page'"> 查询 </el-button>
+						<el-button icon="ele-Refresh" @click="resetQuery"> 重置 </el-button>
+					</el-button-group>
+				</el-form-item>
+				<el-form-item>
+					<el-button type="primary" icon="ele-Plus" @click="openUploadDialog" v-auth="'sysFile:uploadFile'"> 上传 </el-button>
+				</el-form-item>
 			</el-form>
 		</el-card>
 
 		<el-card shadow="hover" style="margin-top: 8px">
 			<el-table :data="state.fileData" style="width: 100%" v-loading="state.loading" border>
 				<el-table-column type="index" label="序号" width="55" align="center" />
-				<el-table-column prop="fileName" label="名称" show-overflow-tooltip />
+				<el-table-column prop="fileName" label="名称" />
 				<el-table-column prop="suffix" label="后缀" align="center" show-overflow-tooltip>
 					<template #default="scope">
 						<el-tag round>{{ scope.row.suffix }}</el-tag>
@@ -127,7 +115,8 @@ const state = reactive({
 	fileData: [] as Array<SysFile>,
 	queryParams: {
 		fileName: undefined,
-		timeRange: [] as any,
+		startTime: undefined,
+		endTime: undefined,
 	},
 	tableParams: {
 		page: 1,
@@ -152,15 +141,12 @@ onUnmounted(() => {
 
 // 查询操作
 const handleQuery = async () => {
-	let startTime = undefined;
-	let endTime = undefined;
-	if (state.queryParams.timeRange != undefined) {
-		startTime = state.queryParams.timeRange[0];
-		endTime = state.queryParams.timeRange[1];
-	}
+	if (state.queryParams.startTime == null) state.queryParams.startTime = undefined;
+	if (state.queryParams.endTime == null) state.queryParams.endTime = undefined;
 
 	state.loading = true;
-	var res = await getAPI(SysFileApi).apiSysFilePageGet(state.queryParams.fileName, startTime, endTime, state.tableParams.page, state.tableParams.pageSize);
+	let params = Object.assign(state.queryParams, state.tableParams);
+	var res = await getAPI(SysFileApi).apiSysFilePagePost(params);
 	state.fileData = res.data.result?.items ?? [];
 	state.tableParams.total = res.data.result?.total;
 	state.loading = false;
@@ -169,7 +155,8 @@ const handleQuery = async () => {
 // 重置操作
 const resetQuery = () => {
 	state.queryParams.fileName = undefined;
-	state.queryParams.timeRange = undefined;
+	state.queryParams.startTime = undefined;
+	state.queryParams.endTime = undefined;
 	handleQuery();
 };
 

+ 37 - 44
Web/src/views/system/job/index.vue

@@ -2,49 +2,41 @@
 	<div class="sys-job-container">
 		<el-card shadow="hover" :body-style="{ paddingBottom: '0' }">
 			<el-form :model="state.queryParams" ref="queryForm" :inline="true">
-        <el-row :gutter="35">
-          <el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="6">
-            <el-form-item label="作业编号" prop="jobId">
-              <el-input placeholder="作业编号" clearable @keyup.enter="handleQuery" v-model="state.queryParams.jobId" />
-            </el-form-item>
-          </el-col>
-          <el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="6">  
-            <el-form-item label="描述信息" prop="description">
-              <el-input placeholder="描述信息" clearable @keyup.enter="handleQuery" v-model="state.queryParams.description" />
-            </el-form-item>
-          </el-col>
-          <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20 search-actions">
-            <div>
-              <el-button-group style="margin: 0px 12px">
-                <el-tooltip content="增加作业">
-                  <el-button icon="ele-CirclePlus" @click="openAddJobDetail" v-auth="'sysJob:addJobDetail'"> </el-button>
-                </el-tooltip>
-                <el-tooltip content="启动所有作业">
-                  <el-button icon="ele-VideoPlay" @click="startAllJob" />
-                </el-tooltip>
-                <el-tooltip content="暂停所有作业">
-                  <el-button icon="ele-VideoPause" @click="pauseAllJob" />
-                </el-tooltip>
-              </el-button-group>
-              <el-button-group style="margin: 0px 12px 0px 0px">
-                <el-tooltip content="强制唤醒作业调度器">
-                  <el-button icon="ele-AlarmClock" @click="cancelSleep" />
-                </el-tooltip>
-                <el-tooltip content="强制触发所有作业持久化">
-                  <el-button icon="ele-Connection" @click="persistAll" />
-                </el-tooltip>
-              </el-button-group>
-              <el-button icon="ele-Coin" @click="openJobCluster" plain> 集群控制 </el-button>
-              <el-button icon="ele-Grid" @click="openJobDashboard" plain> 任务看板 </el-button>
-            </div>
-            <div>
-              <el-form-item>
-                <el-button icon="ele-Refresh" @click="resetQuery"> 重置 </el-button>
-                <el-button type="primary" icon="ele-Search" @click="handleQuery" v-auth="'sysJob:pageJobDetail'" plain> 查询 </el-button>
-              </el-form-item>
-            </div>
-          </el-col>
-        </el-row>
+				<el-form-item label="作业编号" prop="jobId">
+					<el-input placeholder="作业编号" clearable @keyup.enter="handleQuery" v-model="state.queryParams.jobId" />
+				</el-form-item>
+				<el-form-item label="描述信息" prop="description">
+					<el-input placeholder="描述信息" clearable @keyup.enter="handleQuery" v-model="state.queryParams.description" />
+				</el-form-item>
+				<el-form-item>
+					<el-button-group>
+						<el-button type="primary" icon="ele-Search" @click="handleQuery" v-auth="'sysJob:pageJobDetail'"> 查询 </el-button>
+						<el-button icon="ele-Refresh" @click="resetQuery"> 重置 </el-button>
+					</el-button-group>
+				</el-form-item>
+				<el-form-item>
+					<el-button-group style="margin: 0px 12px">
+						<el-tooltip content="增加作业">
+							<el-button icon="ele-CirclePlus" @click="openAddJobDetail" v-auth="'sysJob:addJobDetail'"> </el-button>
+						</el-tooltip>
+						<el-tooltip content="启动所有作业">
+							<el-button icon="ele-VideoPlay" @click="startAllJob" />
+						</el-tooltip>
+						<el-tooltip content="暂停所有作业">
+							<el-button icon="ele-VideoPause" @click="pauseAllJob" />
+						</el-tooltip>
+					</el-button-group>
+					<el-button-group style="margin: 0px 12px 0px 0px">
+						<el-tooltip content="强制唤醒作业调度器">
+							<el-button icon="ele-AlarmClock" @click="cancelSleep" />
+						</el-tooltip>
+						<el-tooltip content="强制触发所有作业持久化">
+							<el-button icon="ele-Connection" @click="persistAll" />
+						</el-tooltip>
+					</el-button-group>
+					<el-button icon="ele-Coin" @click="openJobCluster" plain> 集群控制 </el-button>
+					<el-button icon="ele-Grid" @click="openJobDashboard" plain> 任务看板 </el-button>
+				</el-form-item>
 			</el-form>
 		</el-card>
 
@@ -244,7 +236,8 @@ onUnmounted(() => {
 // 查询操作
 const handleQuery = async () => {
 	state.loading = true;
-	var res = await getAPI(SysJobApi).apiSysJobPageJobDetailGet(state.queryParams.jobId, state.queryParams.description, state.tableParams.page, state.tableParams.pageSize);
+	let params = Object.assign(state.queryParams, state.tableParams);
+	var res = await getAPI(SysJobApi).apiSysJobPageJobDetailPost(params);
 	state.jobData = res.data.result?.items ?? [];
 	state.tableParams.total = res.data.result?.total;
 	state.loading = false;

+ 18 - 24
Web/src/views/system/log/difflog/index.vue

@@ -2,29 +2,21 @@
 	<div class="sys-difflog-container">
 		<el-card shadow="hover" :body-style="{ paddingBottom: '0' }">
 			<el-form :model="state.queryParams" ref="queryForm" :inline="true">
-        <el-row :gutter="35">
-          <el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="6">
-            <el-form-item label="开始时间" prop="name">
-              <el-date-picker v-model="state.queryParams.startTime" type="datetime" placeholder="开始时间" :shortcuts="shortcuts" />
-            </el-form-item>
-          </el-col>
-          <el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="6">  
-            <el-form-item label="结束时间" prop="code">
-              <el-date-picker v-model="state.queryParams.endTime" type="datetime" placeholder="结束时间" :shortcuts="shortcuts" />
-            </el-form-item>
-          </el-col>
-          <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20 search-actions">
-            <div>
-              <el-button icon="ele-DeleteFilled" type="danger" @click="clearLog" v-auth="'sysDifflog:clear'"> 清空 </el-button>
-            </div>
-            <div>
-              <el-form-item>
-                <el-button icon="ele-Refresh" @click="resetQuery"> 重置 </el-button>
-                <el-button type="primary" icon="ele-Search" @click="handleQuery" v-auth="'sysDifflog:page'" plain> 查询 </el-button> 
-              </el-form-item>
-            </div>
-          </el-col>
-        </el-row>
+				<el-form-item label="开始时间" prop="name">
+					<el-date-picker v-model="state.queryParams.startTime" type="datetime" placeholder="开始时间" :shortcuts="shortcuts" />
+				</el-form-item>
+				<el-form-item label="结束时间" prop="code">
+					<el-date-picker v-model="state.queryParams.endTime" type="datetime" placeholder="结束时间" :shortcuts="shortcuts" />
+				</el-form-item>
+				<el-form-item>
+					<el-button-group>
+						<el-button type="primary" icon="ele-Search" @click="handleQuery" v-auth="'sysDifflog:page'"> 查询 </el-button>
+						<el-button icon="ele-Refresh" @click="resetQuery"> 重置 </el-button>
+					</el-button-group>
+				</el-form-item>
+				<el-form-item>
+					<el-button icon="ele-DeleteFilled" type="danger" @click="clearLog" v-auth="'sysDifflog:clear'"> 清空 </el-button>
+				</el-form-item>
 			</el-form>
 		</el-card>
 
@@ -86,8 +78,10 @@ onMounted(async () => {
 const handleQuery = async () => {
 	if (state.queryParams.startTime == null) state.queryParams.startTime = undefined;
 	if (state.queryParams.endTime == null) state.queryParams.endTime = undefined;
+
 	state.loading = true;
-	var res = await getAPI(SysLogDiffApi).apiSysLogDiffPageGet(state.queryParams.startTime, state.queryParams.endTime, state.tableParams.page, state.tableParams.pageSize);
+	let params = Object.assign(state.queryParams, state.tableParams);
+	var res = await getAPI(SysLogDiffApi).apiSysLogDiffPagePost(params);
 	state.logData = res.data.result?.items ?? [];
 	state.tableParams.total = res.data.result?.total;
 	state.loading = false;

+ 35 - 39
Web/src/views/system/log/oplog/index.vue

@@ -2,35 +2,27 @@
 	<div class="sys-oplog-container" v-loading="state.loading">
 		<el-card shadow="hover" :body-style="{ paddingBottom: '0' }">
 			<el-form :model="state.queryParams" ref="queryForm" :inline="true">
-        <el-row :gutter="35">
-          <el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="6">
-            <el-form-item label="开始时间" prop="name">
-              <el-date-picker v-model="state.queryParams.startTime" type="datetime" placeholder="开始时间" :shortcuts="shortcuts" />
-            </el-form-item>
-          </el-col>
-          <el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="6">  
-            <el-form-item label="结束时间" prop="code">
-              <el-date-picker v-model="state.queryParams.endTime" type="datetime" placeholder="结束时间" :shortcuts="shortcuts" />
-            </el-form-item>
-          </el-col>
-          <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20 search-actions">
-            <div>
-              <el-button icon="ele-DeleteFilled" type="danger" @click="clearLog" v-auth="'sysOplog:clear'"> 清空 </el-button>
-              <el-button icon="ele-FolderOpened" @click="exportLog" v-auth="'sysOplog:export'"> 导出 </el-button>
-            </div>
-            <div>
-              <el-form-item>
-                <el-button icon="ele-Refresh" @click="resetQuery"> 重置 </el-button>
-                <el-button type="primary" icon="ele-Search" @click="handleQuery" v-auth="'sysOplog:page'" plain> 查询 </el-button> 
-              </el-form-item>
-            </div>
-          </el-col>
-        </el-row>  
+				<el-form-item label="开始时间" prop="name">
+					<el-date-picker v-model="state.queryParams.startTime" type="datetime" placeholder="开始时间" :shortcuts="shortcuts" />
+				</el-form-item>
+				<el-form-item label="结束时间" prop="code">
+					<el-date-picker v-model="state.queryParams.endTime" type="datetime" placeholder="结束时间" :shortcuts="shortcuts" />
+				</el-form-item>
+				<el-form-item>
+					<el-button-group>
+						<el-button type="primary" icon="ele-Search" @click="handleQuery" v-auth="'sysOplog:page'"> 查询 </el-button>
+						<el-button icon="ele-Refresh" @click="resetQuery"> 重置 </el-button>
+					</el-button-group>
+				</el-form-item>
+				<el-form-item>
+					<el-button icon="ele-DeleteFilled" type="danger" @click="clearLog" v-auth="'sysOplog:clear'"> 清空 </el-button>
+					<el-button icon="ele-FolderOpened" @click="exportLog" v-auth="'sysOplog:export'"> 导出 </el-button>
+				</el-form-item>
 			</el-form>
 		</el-card>
 
 		<el-card shadow="hover" style="margin-top: 8px">
-			<el-table :data="state.logData" @sort-change="sortChange" style="width: 100%" border>
+			<el-table :data="state.logData" @sort-change="sortChange" style="width: 100%" border :row-class-name="tableRowClassName">
 				<el-table-column type="index" label="序号" width="55" align="center" />
 				<el-table-column prop="controllerName" label="模块名称" width="100" show-overflow-tooltip />
 				<el-table-column prop="displayTitle" label="显示名称" width="150" show-overflow-tooltip />
@@ -105,10 +97,10 @@ const state = reactive({
 	},
 	tableParams: {
 		page: 1,
-		pageSize: 10,
-		field: 'createTime', //默认的排序字段
-		order: 'descending', //排序方向
-		descStr: 'descending', //降序排序的关键字符,element-plus是descending; ant-design是descend
+		pageSize: 20,
+		field: 'createTime', // 默认的排序字段
+		order: 'descending', // 排序方向
+		descStr: 'descending', // 降序排序的关键字符
 		total: 0 as any,
 	},
 	logData: [] as Array<SysLogOp>,
@@ -124,16 +116,10 @@ onMounted(async () => {
 const handleQuery = async () => {
 	if (state.queryParams.startTime == null) state.queryParams.startTime = undefined;
 	if (state.queryParams.endTime == null) state.queryParams.endTime = undefined;
+
 	state.loading = true;
-	var res = await getAPI(SysLogOpApi).apiSysLogOpPageGet(
-		state.queryParams.startTime,
-		state.queryParams.endTime,
-		state.tableParams.page,
-		state.tableParams.pageSize,
-		state.tableParams.field,
-		state.tableParams.order,
-		state.tableParams.descStr
-	);
+	let params = Object.assign(state.queryParams, state.tableParams);
+	var res = await getAPI(SysLogOpApi).apiSysLogOpPagePost(params);
 	state.logData = res.data.result?.items ?? [];
 	state.tableParams.total = res.data.result?.total;
 	state.loading = false;
@@ -184,6 +170,11 @@ const viewDetail = (row: any) => {
 	state.dialogVisible = true;
 };
 
+// 设置行颜色
+const tableRowClassName = (row: any) => {
+	return row.row.exception != null ? 'warning-row' : '';
+};
+
 const shortcuts = [
 	{
 		text: '今天',
@@ -219,9 +210,14 @@ const sortChange = (column: any) => {
 .el-popper {
 	max-width: 60%;
 }
-
 pre {
 	white-space: break-spaces;
 	line-height: 20px;
 }
+.el-table .warning-row {
+	--el-table-tr-bg-color: var(--el-color-warning-light-9);
+}
+.el-table .success-row {
+	--el-table-tr-bg-color: var(--el-color-success-light-9);
+}
 </style>

+ 19 - 25
Web/src/views/system/log/vislog/index.vue

@@ -2,29 +2,21 @@
 	<div class="sys-vislog-container">
 		<el-card shadow="hover" :body-style="{ paddingBottom: '0' }">
 			<el-form :model="state.queryParams" ref="queryForm" :inline="true">
-        <el-row :gutter="35">
-          <el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="6">
-            <el-form-item label="开始时间" prop="name">
-              <el-date-picker v-model="state.queryParams.startTime" type="datetime" placeholder="开始时间" :shortcuts="shortcuts" />
-            </el-form-item>
-          </el-col>
-          <el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="6">  
-            <el-form-item label="结束时间" prop="code">
-              <el-date-picker v-model="state.queryParams.endTime" type="datetime" placeholder="结束时间" :shortcuts="shortcuts" />
-            </el-form-item>
-          </el-col>
-          <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20 search-actions">
-            <div>
-              <el-button icon="ele-DeleteFilled" type="danger" @click="clearLog" v-auth="'sysVislog:clear'"> 清空 </el-button>
-            </div>
-            <div>
-              <el-form-item>
-                <el-button icon="ele-Refresh" @click="resetQuery"> 重置 </el-button>
-                <el-button type="primary" icon="ele-Search" @click="handleQuery" v-auth="'sysVislog:page'" plain> 查询 </el-button> 
-              </el-form-item>
-            </div>
-          </el-col>
-        </el-row>
+				<el-form-item label="开始时间" prop="name">
+					<el-date-picker v-model="state.queryParams.startTime" type="datetime" placeholder="开始时间" :shortcuts="shortcuts" />
+				</el-form-item>
+				<el-form-item label="结束时间" prop="code">
+					<el-date-picker v-model="state.queryParams.endTime" type="datetime" placeholder="结束时间" :shortcuts="shortcuts" />
+				</el-form-item>
+				<el-form-item>
+					<el-button-group>
+						<el-button type="primary" icon="ele-Search" @click="handleQuery" v-auth="'sysVislog:page'"> 查询 </el-button>
+						<el-button icon="ele-Refresh" @click="resetQuery"> 重置 </el-button>
+					</el-button-group>
+				</el-form-item>
+				<el-form-item>
+					<el-button icon="ele-DeleteFilled" type="danger" @click="clearLog" v-auth="'sysVislog:clear'"> 清空 </el-button>
+				</el-form-item>
 			</el-form>
 		</el-card>
 
@@ -79,7 +71,7 @@ const state = reactive({
 	},
 	tableParams: {
 		page: 1,
-		pageSize: 10,
+		pageSize: 20,
 		total: 0 as any,
 	},
 	logData: [] as Array<SysLogVis>,
@@ -93,8 +85,10 @@ onMounted(async () => {
 const handleQuery = async () => {
 	if (state.queryParams.startTime == null) state.queryParams.startTime = undefined;
 	if (state.queryParams.endTime == null) state.queryParams.endTime = undefined;
+
 	state.loading = true;
-	var res = await getAPI(SysLogVisApi).apiSysLogVisPageGet(state.queryParams.startTime, state.queryParams.endTime, state.tableParams.page, state.tableParams.pageSize);
+	let params = Object.assign(state.queryParams, state.tableParams);
+	var res = await getAPI(SysLogVisApi).apiSysLogVisPagePost(params);
 	state.logData = res.data.result?.items ?? [];
 	state.tableParams.total = res.data.result?.total;
 	state.loading = false;

+ 19 - 27
Web/src/views/system/menu/index.vue

@@ -2,33 +2,25 @@
 	<div class="sys-menu-container">
 		<el-card shadow="hover" :body-style="{ paddingBottom: '0' }">
 			<el-form :model="state.queryParams" ref="queryForm" :inline="true">
-        <el-row :gutter="35">
-          <el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="6">
-            <el-form-item label="菜单名称" prop="title">
-              <el-input placeholder="菜单名称" clearable @keyup.enter="handleQuery" v-model="state.queryParams.title" />
-            </el-form-item>
-          </el-col>
-          <el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="6">  
-            <el-form-item label="类型" prop="type">
-              <el-select v-model="state.queryParams.type" placeholder="类型" clearable>
-                <el-option label="目录" :value="1" />
-                <el-option label="菜单" :value="2" />
-                <el-option label="按钮" :value="3" />
-              </el-select>
-            </el-form-item>
-          </el-col>
-          <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20 search-actions">
-            <div>
-              <el-button type="primary"  icon="ele-Plus" @click="openAddMenu" v-auth="'sysMenu:add'"> 新增 </el-button>
-            </div>
-            <div>
-              <el-form-item>
-                <el-button icon="ele-Refresh" @click="resetQuery"> 重置 </el-button>
-                <el-button type="primary" icon="ele-Search" @click="handleQuery" v-auth="'sysMenu:list'" plain> 查询 </el-button> 
-              </el-form-item>
-            </div>
-          </el-col>
-        </el-row>
+				<el-form-item label="菜单名称" prop="title">
+					<el-input placeholder="菜单名称" clearable @keyup.enter="handleQuery" v-model="state.queryParams.title" />
+				</el-form-item>
+				<el-form-item label="类型" prop="type">
+					<el-select v-model="state.queryParams.type" placeholder="类型" clearable>
+						<el-option label="目录" :value="1" />
+						<el-option label="菜单" :value="2" />
+						<el-option label="按钮" :value="3" />
+					</el-select>
+				</el-form-item>
+				<el-form-item>
+					<el-button-group>
+						<el-button type="primary" icon="ele-Search" @click="handleQuery" v-auth="'sysMenu:list'"> 查询 </el-button>
+						<el-button icon="ele-Refresh" @click="resetQuery"> 重置 </el-button>
+					</el-button-group>
+				</el-form-item>
+				<el-form-item>
+					<el-button type="primary" icon="ele-Plus" @click="openAddMenu" v-auth="'sysMenu:add'"> 新增 </el-button>
+				</el-form-item>
 			</el-form>
 		</el-card>
 

+ 20 - 27
Web/src/views/system/notice/index.vue

@@ -2,32 +2,24 @@
 	<div class="sys-notice-container">
 		<el-card shadow="hover" :body-style="{ paddingBottom: '0' }">
 			<el-form :model="state.queryParams" ref="queryForm" :inline="true">
-        <el-row :gutter="35">
-          <el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="6">   
-            <el-form-item label="标题" prop="title">
-              <el-input placeholder="标题" clearable @keyup.enter="handleQuery" v-model="state.queryParams.title" />
-            </el-form-item>
-          </el-col>
-          <el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="6">  
-            <el-form-item label="类型" prop="type">
-              <el-select v-model="state.queryParams.type" placeholder="类型" clearable style="width: 100%">
-                <el-option label="通知" :value="1" />
-                <el-option label="公告" :value="2" />
-              </el-select>
-            </el-form-item>
-          </el-col>
-          <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20 search-actions">
-            <div>
-              <el-button type="primary"  icon="ele-Plus" @click="openAddNotice" v-auth="'sysNotice:add'"> 新增 </el-button>
-            </div>
-            <div>
-              <el-form-item>
-                <el-button icon="ele-Refresh" @click="resetQuery"> 重置 </el-button>
-                <el-button type="primary" icon="ele-Search" @click="handleQuery" v-auth="'sysNotice:page'"> 查询 </el-button> 
-              </el-form-item>
-            </div>
-          </el-col>
-        </el-row>  
+				<el-form-item label="标题" prop="title">
+					<el-input placeholder="标题" clearable @keyup.enter="handleQuery" v-model="state.queryParams.title" />
+				</el-form-item>
+				<el-form-item label="类型" prop="type">
+					<el-select v-model="state.queryParams.type" placeholder="类型" clearable style="width: 100%">
+						<el-option label="通知" :value="1" />
+						<el-option label="公告" :value="2" />
+					</el-select>
+				</el-form-item>
+				<el-form-item>
+					<el-button-group>
+						<el-button type="primary" icon="ele-Search" @click="handleQuery" v-auth="'sysNotice:page'"> 查询 </el-button>
+						<el-button icon="ele-Refresh" @click="resetQuery"> 重置 </el-button>
+					</el-button-group>
+				</el-form-item>
+				<el-form-item>
+					<el-button type="primary" icon="ele-Plus" @click="openAddNotice" v-auth="'sysNotice:add'"> 新增 </el-button>
+				</el-form-item>
 			</el-form>
 		</el-card>
 
@@ -120,7 +112,8 @@ onUnmounted(() => {
 // 查询操作
 const handleQuery = async () => {
 	state.loading = true;
-	var res = await getAPI(SysNoticeApi).apiSysNoticePageGet(state.queryParams.title, state.queryParams.type, state.tableParams.page, state.tableParams.pageSize);
+	let params = Object.assign(state.queryParams, state.tableParams);
+	var res = await getAPI(SysNoticeApi).apiSysNoticePagePost(params);
 	state.noticeData = res.data.result?.items ?? [];
 	state.tableParams.total = res.data.result?.total;
 	state.loading = false;

+ 6 - 3
Web/src/views/system/onlineUser/index.vue

@@ -10,8 +10,10 @@
 						<el-input placeholder="账号名称" clearable @keyup.enter="handleQuery" v-model="state.queryParams.realName" />
 					</el-form-item> -->
 					<el-form-item>
-						<el-button icon="ele-Refresh" @click="resetQuery"> 重置 </el-button>
-						<el-button type="primary" icon="ele-Search" @click="handleQuery"> 查询 </el-button>
+						<el-button-group>
+							<el-button type="primary" icon="ele-Search" @click="handleQuery"> 查询 </el-button>
+							<el-button icon="ele-Refresh" @click="resetQuery"> 重置 </el-button>
+						</el-button-group>
 					</el-form-item>
 				</el-form>
 			</el-card>
@@ -105,7 +107,8 @@ const openDrawer = () => {
 // 查询操作
 const handleQuery = async () => {
 	state.loading = true;
-	var res = await getAPI(SysOnlineUserApi).apiSysOnlineUserPageGet(state.queryParams.userName, state.queryParams.realName, state.tableParams.page, state.tableParams.pageSize);
+	let params = Object.assign(state.queryParams, state.tableParams);
+	var res = await getAPI(SysOnlineUserApi).apiSysOnlineUserPagePost(params);
 	state.onlineUserList = res.data.result?.items ?? [];
 	state.tableParams.total = res.data.result?.total;
 	state.loading = false;

+ 15 - 23
Web/src/views/system/org/index.vue

@@ -8,29 +8,21 @@
 			<el-col :span="20" :xs="24">
 				<el-card shadow="hover" :body-style="{ paddingBottom: '0' }">
 					<el-form :model="state.queryParams" ref="queryForm" :inline="true">
-            <el-row :gutter="35">
-              <el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="6">   
-                <el-form-item label="机构名称" prop="name">
-                  <el-input placeholder="机构名称" clearable @keyup.enter="handleQuery" v-model="state.queryParams.name" />
-                </el-form-item>
-              </el-col>
-              <el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="6">  
-                <el-form-item label="机构编码" prop="code">
-                  <el-input placeholder="机构编码" clearable @keyup.enter="handleQuery" v-model="state.queryParams.code" />
-                </el-form-item>
-              </el-col>
-              <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20 search-actions">
-                <div>
-                  <el-button type="primary"  icon="ele-Plus" @click="openAddOrg" v-auth="'sysOrg:add'"> 新增 </el-button>
-                </div>
-                <div>
-                  <el-form-item>
-                    <el-button icon="ele-Refresh" @click="resetQuery"> 重置 </el-button>
-                    <el-button type="primary" icon="ele-Search" @click="handleQuery" v-auth="'sysOrg:list'" plain> 查询 </el-button> 
-                  </el-form-item>
-                </div>
-              </el-col>
-            </el-row>
+						<el-form-item label="机构名称" prop="name">
+							<el-input placeholder="机构名称" clearable @keyup.enter="handleQuery" v-model="state.queryParams.name" />
+						</el-form-item>
+						<el-form-item label="机构编码" prop="code">
+							<el-input placeholder="机构编码" clearable @keyup.enter="handleQuery" v-model="state.queryParams.code" />
+						</el-form-item>
+						<el-form-item>
+							<el-button-group>
+								<el-button type="primary" icon="ele-Search" @click="handleQuery" v-auth="'sysOrg:list'"> 查询 </el-button>
+								<el-button icon="ele-Refresh" @click="resetQuery"> 重置 </el-button>
+							</el-button-group>
+						</el-form-item>
+						<el-form-item>
+							<el-button type="primary" icon="ele-Plus" @click="openAddOrg" v-auth="'sysOrg:add'"> 新增 </el-button>
+						</el-form-item>
 					</el-form>
 				</el-card>
 

+ 15 - 23
Web/src/views/system/pos/index.vue

@@ -2,29 +2,21 @@
 	<div class="sys-pos-container">
 		<el-card shadow="hover" :body-style="{ paddingBottom: '0' }">
 			<el-form :model="state.queryParams" ref="queryForm" :inline="true">
-        <el-row :gutter="35">
-          <el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="6">   
-            <el-form-item label="职位名称" prop="name">
-              <el-input placeholder="职位名称" clearable @keyup.enter="handleQuery" v-model="state.queryParams.name" />
-            </el-form-item>
-          </el-col>
-          <el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="6">  
-            <el-form-item label="职位编码" prop="code">
-              <el-input placeholder="职位编码" clearable @keyup.enter="handleQuery" v-model="state.queryParams.code" />
-            </el-form-item>
-          </el-col>
-          <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20 search-actions">
-            <div>
-              <el-button type="primary"  icon="ele-Plus" @click="openAddPos" v-auth="'sysPos:add'"> 新增 </el-button>
-            </div>
-            <div>
-              <el-form-item>
-                <el-button icon="ele-Refresh" @click="resetQuery"> 重置 </el-button>
-                <el-button type="primary" icon="ele-Search" @click="handleQuery" v-auth="'sysPos:list'" plain> 查询 </el-button> 
-              </el-form-item>
-            </div>
-          </el-col>       
-        </el-row>
+				<el-form-item label="职位名称" prop="name">
+					<el-input placeholder="职位名称" clearable @keyup.enter="handleQuery" v-model="state.queryParams.name" />
+				</el-form-item>
+				<el-form-item label="职位编码" prop="code">
+					<el-input placeholder="职位编码" clearable @keyup.enter="handleQuery" v-model="state.queryParams.code" />
+				</el-form-item>
+				<el-form-item>
+					<el-button-group>
+						<el-button type="primary" icon="ele-Search" @click="handleQuery" v-auth="'sysPos:list'"> 查询 </el-button>
+						<el-button icon="ele-Refresh" @click="resetQuery"> 重置 </el-button>
+					</el-button-group>
+				</el-form-item>
+				<el-form-item>
+					<el-button type="primary" icon="ele-Plus" @click="openAddPos" v-auth="'sysPos:add'"> 新增 </el-button>
+				</el-form-item>
 			</el-form>
 		</el-card>
 

+ 18 - 25
Web/src/views/system/region/index.vue

@@ -8,30 +8,22 @@
 			<el-col :span="18" :xs="24">
 				<el-card shadow="hover" :body-style="{ paddingBottom: '0' }">
 					<el-form :model="state.queryParams" ref="queryForm" :inline="true">
-            <el-row :gutter="35">
-              <el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="6">
-                <el-form-item label="行政名称" prop="name">
-                  <el-input placeholder="行政名称" clearable @keyup.enter="handleQuery" v-model="state.queryParams.name" />
-                </el-form-item>
-              </el-col>
-              <el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="6">
-                <el-form-item label="行政代码" prop="code">
-                  <el-input placeholder="行政代码" clearable @keyup.enter="handleQuery" v-model="state.queryParams.code" />
-                </el-form-item>
-              </el-col>
-              <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20 search-actions">
-                <div>
-                  <el-button type="primary"  icon="ele-Plus" @click="openAddRegion" v-auth="'sysRegion:add'"> 新增 </el-button>
-                    <el-button type="danger" icon="ele-Lightning" @click="handlSync" v-auth="'sysRegion:sync'"> 同步国家统计局 </el-button>
-                </div>
-                <div>
-                  <el-form-item>
-                    <el-button icon="ele-Refresh" @click="resetQuery"> 重置 </el-button>
-                    <el-button type="primary" icon="ele-Search" @click="handleQuery" v-auth="'sysRegion:page'" plain> 查询 </el-button> 
-                  </el-form-item>
-                </div>
-              </el-col>
-            </el-row>
+						<el-form-item label="行政名称" prop="name">
+							<el-input placeholder="行政名称" clearable @keyup.enter="handleQuery" v-model="state.queryParams.name" />
+						</el-form-item>
+						<el-form-item label="行政代码" prop="code">
+							<el-input placeholder="行政代码" clearable @keyup.enter="handleQuery" v-model="state.queryParams.code" />
+						</el-form-item>
+						<el-form-item>
+							<el-button-group>
+								<el-button type="primary" icon="ele-Search" @click="handleQuery" v-auth="'sysRegion:page'"> 查询 </el-button>
+								<el-button icon="ele-Refresh" @click="resetQuery"> 重置 </el-button>
+							</el-button-group>
+						</el-form-item>
+						<el-form-item>
+							<el-button type="primary" icon="ele-Plus" @click="openAddRegion" v-auth="'sysRegion:add'"> 新增 </el-button>
+							<el-button type="danger" icon="ele-Lightning" @click="handlSync" v-auth="'sysRegion:sync'"> 同步统计局 </el-button>
+						</el-form-item>
 					</el-form>
 				</el-card>
 
@@ -114,7 +106,8 @@ onUnmounted(() => {
 // 查询操作
 const handleQuery = async () => {
 	state.loading = true;
-	var res = await getAPI(SysRegionApi).apiSysRegionPageGet(state.queryParams.id, state.queryParams.name, state.queryParams.code, state.tableParams.page, state.tableParams.pageSize);
+	let params = Object.assign(state.queryParams, state.tableParams);
+	var res = await getAPI(SysRegionApi).apiSysRegionPagePost(params);
 	state.regionData = res.data.result?.items ?? [];
 	state.tableParams.total = res.data.result?.total;
 	state.loading = false;

+ 17 - 24
Web/src/views/system/role/index.vue

@@ -2,29 +2,21 @@
 	<div class="sys-role-container">
 		<el-card shadow="hover" :body-style="{ paddingBottom: '0' }">
 			<el-form :model="state.queryParams" ref="queryForm" :inline="true">
-        <el-row :gutter="35">
-          <el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="6">   
-            <el-form-item label="角色名称" prop="name">
-              <el-input placeholder="角色名称" clearable @keyup.enter="handleQuery" v-model="state.queryParams.name" />
-            </el-form-item>
-          </el-col>
-          <el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="6">   
-            <el-form-item label="角色编码" prop="code">
-              <el-input placeholder="角色编码" clearable @keyup.enter="handleQuery" v-model="state.queryParams.code" />
-            </el-form-item>
-          </el-col>
-          <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20 search-actions">
-            <div>
-              <el-button type="primary"  icon="ele-Plus" @click="openAddRole" v-auth="'sysRole:add'"> 新增 </el-button>
-            </div>
-            <div>
-              <el-form-item>
-                <el-button icon="ele-Refresh" @click="resetQuery"> 重置 </el-button>
-                <el-button type="primary" icon="ele-Search" @click="handleQuery" v-auth="'sysRole:page'" plain> 查询 </el-button>              
-              </el-form-item>
-            </div>
-          </el-col> 
-        </el-row>
+				<el-form-item label="角色名称" prop="name">
+					<el-input placeholder="角色名称" clearable @keyup.enter="handleQuery" v-model="state.queryParams.name" />
+				</el-form-item>
+				<el-form-item label="角色编码" prop="code">
+					<el-input placeholder="角色编码" clearable @keyup.enter="handleQuery" v-model="state.queryParams.code" />
+				</el-form-item>
+				<el-form-item>
+					<el-button-group>
+						<el-button type="primary" icon="ele-Search" @click="handleQuery" v-auth="'sysRole:page'"> 查询 </el-button>
+						<el-button icon="ele-Refresh" @click="resetQuery"> 重置 </el-button>
+					</el-button-group>
+				</el-form-item>
+				<el-form-item>
+					<el-button type="primary" icon="ele-Plus" @click="openAddRole" v-auth="'sysRole:add'"> 新增 </el-button>
+				</el-form-item>
 			</el-form>
 		</el-card>
 
@@ -127,7 +119,8 @@ onUnmounted(() => {
 // 查询操作
 const handleQuery = async () => {
 	state.loading = true;
-	var res = await getAPI(SysRoleApi).apiSysRolePageGet(state.queryParams.name, state.queryParams.code, state.tableParams.page, state.tableParams.pageSize);
+	let params = Object.assign(state.queryParams, state.tableParams);
+	var res = await getAPI(SysRoleApi).apiSysRolePagePost(params);
 	state.roleData = res.data.result?.items ?? [];
 	state.tableParams.total = res.data.result?.total;
 	state.loading = false;

+ 17 - 24
Web/src/views/system/tenant/index.vue

@@ -2,29 +2,21 @@
 	<div class="sys-tenant-container">
 		<el-card shadow="hover" :body-style="{ paddingBottom: '0' }">
 			<el-form :model="state.queryParams" ref="queryForm" :inline="true">
-        <el-row :gutter="35">
-          <el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="6">
-            <el-form-item label="租户名称" prop="name">
-              <el-input placeholder="租户名称" clearable @keyup.enter="handleQuery" v-model="state.queryParams.name" />
-            </el-form-item>
-          </el-col>
-          <el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="6">  
-            <el-form-item label="联系电话" prop="phone">
-              <el-input placeholder="联系电话" clearable @keyup.enter="handleQuery" v-model="state.queryParams.phone" />
-            </el-form-item>
-          </el-col>
-          <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20 search-actions">
-            <div>
-              <el-button type="primary"  icon="ele-Plus" @click="openAddTenant" v-auth="'sysTenant:add'"> 新增 </el-button>
-            </div>
-            <div>
-              <el-form-item>
-                <el-button icon="ele-Refresh" @click="resetQuery"> 重置 </el-button>
-                <el-button type="primary" icon="ele-Search" @click="handleQuery" v-auth="'sysTenant:page'" plain> 查询 </el-button> 
-              </el-form-item>
-            </div>
-          </el-col>
-        </el-row>
+				<el-form-item label="租户名称" prop="name">
+					<el-input placeholder="租户名称" clearable @keyup.enter="handleQuery" v-model="state.queryParams.name" />
+				</el-form-item>
+				<el-form-item label="联系电话" prop="phone">
+					<el-input placeholder="联系电话" clearable @keyup.enter="handleQuery" v-model="state.queryParams.phone" />
+				</el-form-item>
+				<el-form-item>
+					<el-button-group>
+						<el-button type="primary" icon="ele-Search" @click="handleQuery" v-auth="'sysTenant:page'"> 查询 </el-button>
+						<el-button icon="ele-Refresh" @click="resetQuery"> 重置 </el-button>
+					</el-button-group>
+				</el-form-item>
+				<el-form-item>
+					<el-button type="primary" icon="ele-Plus" @click="openAddTenant" v-auth="'sysTenant:add'"> 新增 </el-button>
+				</el-form-item>
 			</el-form>
 		</el-card>
 
@@ -149,7 +141,8 @@ onUnmounted(() => {
 // 查询操作
 const handleQuery = async () => {
 	state.loading = true;
-	var res = await getAPI(SysTenantApi).apiSysTenantPageGet(state.queryParams.name, state.queryParams.phone, state.tableParams.page, state.tableParams.pageSize);
+	let params = Object.assign(state.queryParams, state.tableParams);
+	var res = await getAPI(SysTenantApi).apiSysTenantPagePost(params);
 	state.tenantData = res.data.result?.items ?? [];
 	state.tableParams.total = res.data.result?.total;
 	state.loading = false;

+ 180 - 294
Web/src/views/system/user/index.vue

@@ -1,356 +1,242 @@
 <template>
-  <div class="sys-user-container">
-    <el-row :gutter="8" style="width: 100%">
-      <el-col :span="4" :xs="24">
-        <OrgTree ref="orgTreeRef" @node-click="nodeClick" />
-      </el-col>
-
-      <el-col :span="20" :xs="24">
-        <el-card shadow="hover" :body-style="{ paddingBottom: '0' }">
-          <el-form :model="state.queryParams" ref="queryForm" :inline="true">
-            <el-row :gutter="35">
-              <el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="6">
-                <el-form-item label="账号" prop="account">
-                  <el-input
-                    placeholder="账号"
-                    clearable
-                    @keyup.enter="handleQuery"
-                    v-model="state.queryParams.account"
-                  />
-                </el-form-item>
-              </el-col>
-              <!-- <el-form-item label="姓名" prop="realName">
-							<el-input placeholder="姓名" clearable @keyup.enter="handleQuery" v-model="queryParams.realName" />
+	<div class="sys-user-container">
+		<el-row :gutter="8" style="width: 100%">
+			<el-col :span="4" :xs="24">
+				<OrgTree ref="orgTreeRef" @node-click="nodeClick" />
+			</el-col>
+
+			<el-col :span="20" :xs="24">
+				<el-card shadow="hover" :body-style="{ paddingBottom: '0' }">
+					<el-form :model="state.queryParams" ref="queryForm" :inline="true">
+						<el-form-item label="账号" prop="account">
+							<el-input placeholder="账号" clearable @keyup.enter="handleQuery" v-model="state.queryParams.account" />
+						</el-form-item>
+						<!-- <el-form-item label="姓名" prop="realName">
+							<el-input placeholder="姓名" clearable @keyup.enter="handleQuery" v-model="state.queryParams.realName" />
 						</el-form-item> -->
-              <el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="6">
-                <el-form-item label="手机号码" prop="phone">
-                  <el-input
-                    placeholder="手机号码"
-                    clearable
-                    @keyup.enter="handleQuery"
-                    v-model="state.queryParams.phone"
-                  />
-                </el-form-item>
-              </el-col>
-              <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20 search-actions">
-                <div>
-                  <el-button type="primary" icon="ele-Plus" @click="openAddUser" v-auth="'sysUser:add'" > 新增 </el-button>
-                </div>
-                <div>
-                  <el-form-item>
-                    <el-button icon="ele-Refresh" @click="resetQuery"> 重置 </el-button>
-                    <el-button type="primary" icon="ele-Search" @click="handleQuery" v-auth="'sysUser:page'" plain > 查询 </el-button>
-                  </el-form-item>
-                </div>
-              </el-col>
-            </el-row>
-          </el-form>
-        </el-card>
-
-        <el-card shadow="hover" style="margin-top: 8px">
-          <el-table
-            :data="state.userData"
-            style="width: 100%"
-            v-loading="state.loading"
-            border
-          >
-            <el-table-column type="index" label="序号" width="55" align="center" fixed />
-            <el-table-column
-              prop="account"
-              label="账号"
-              width="120"
-              fixed
-              show-overflow-tooltip
-            />
-            <el-table-column
-              prop="nickName"
-              label="昵称"
-              width="120"
-              show-overflow-tooltip
-            />
-            <el-table-column label="头像" width="80" align="center" show-overflow-tooltip>
-              <template #default="scope">
-                <el-avatar src="" size="small"
-                  >{{ scope.row.nickName?.slice(0, 1) }}
-                </el-avatar>
-              </template>
-            </el-table-column>
-            <el-table-column
-              prop="realName"
-              label="姓名"
-              width="120"
-              show-overflow-tooltip
-            />
-            <el-table-column
-              label="出生日期"
-              width="100"
-              align="center"
-              show-overflow-tooltip
-            >
-              <template #default="scope">
-                {{ formatDate(new Date(scope.row.birthday), "YYYY-mm-dd") }}
-              </template>
-            </el-table-column>
-            <el-table-column label="性别" width="70" align="center" show-overflow-tooltip>
-              <template #default="scope">
-                <el-tag type="success" v-if="scope.row.sex === 1"> 男 </el-tag>
-                <el-tag type="danger" v-else> 女 </el-tag>
-              </template>
-            </el-table-column>
-            <el-table-column
-              prop="phone"
-              label="手机号码"
-              width="120"
-              align="center"
-              show-overflow-tooltip
-            />
-            <el-table-column label="状态" width="70" align="center" show-overflow-tooltip>
-              <template #default="scope">
-                <el-switch
-                  v-model="scope.row.status"
-                  :active-value="1"
-                  :inactive-value="2"
-                  size="small"
-                  @change="changeStatus(scope.row)"
-                  v-auth="'sysUser:setStatus'"
-                />
-              </template>
-            </el-table-column>
-            <el-table-column
-              prop="orderNo"
-              label="排序"
-              width="70"
-              align="center"
-              show-overflow-tooltip
-            />
-            <el-table-column
-              prop="createTime"
-              label="修改时间"
-              width="160"
-              show-overflow-tooltip
-            />
-            <el-table-column prop="remark" label="备注" show-overflow-tooltip />
-            <el-table-column
-              label="操作"
-              width="110"
-              align="center"
-              fixed="right"
-              show-overflow-tooltip
-            >
-              <template #default="scope">
-                <el-button
-                  icon="ele-Edit"
-                  size="small"
-                  text
-                  type="primary"
-                  @click="openEditUser(scope.row)"
-                  v-auth="'sysUser:update'"
-                >
-                  编辑
-                </el-button>
-                <el-dropdown>
-                  <el-button
-                    icon="ele-MoreFilled"
-                    size="small"
-                    text
-                    type="primary"
-                    style="padding-left: 12px"
-                  />
-                  <template #dropdown>
-                    <el-dropdown-menu>
-                      <el-dropdown-item
-                        icon="ele-RefreshLeft"
-                        @click="resetUserPwd(scope.row)"
-                        :disabled="!auth('sysUser:resetPwd')"
-                      >
-                        重置密码
-                      </el-dropdown-item>
-                      <el-dropdown-item
-                        icon="ele-Delete"
-                        @click="delUser(scope.row)"
-                        divided
-                        :disabled="!auth('sysUser:delete')"
-                      >
-                        删除账号
-                      </el-dropdown-item>
-                    </el-dropdown-menu>
-                  </template>
-                </el-dropdown>
-              </template>
-            </el-table-column>
-          </el-table>
-          <el-pagination
-            v-model:currentPage="state.tableParams.page"
-            v-model:page-size="state.tableParams.pageSize"
-            :total="state.tableParams.total"
-            :page-sizes="[10, 20, 50, 100]"
-            small
-            background
-            @size-change="handleSizeChange"
-            @current-change="handleCurrentChange"
-            layout="total, sizes, prev, pager, next, jumper"
-          />
-        </el-card>
-      </el-col>
-    </el-row>
-    <EditUser
-      ref="editUserRef"
-      :title="state.editUserTitle"
-      :orgData="state.orgTreeData"
-    />
-  </div>
+						<el-form-item label="手机号码" prop="phone">
+							<el-input placeholder="手机号码" clearable @keyup.enter="handleQuery" v-model="state.queryParams.phone" />
+						</el-form-item>
+						<el-form-item>
+							<el-button-group>
+								<el-button type="primary" icon="ele-Search" @click="handleQuery" v-auth="'sysUser:page'"> 查询 </el-button>
+								<el-button icon="ele-Refresh" @click="resetQuery"> 重置 </el-button>
+							</el-button-group>
+						</el-form-item>
+						<el-form-item>
+							<el-button type="primary" icon="ele-Plus" @click="openAddUser" v-auth="'sysUser:add'"> 新增 </el-button>
+						</el-form-item>
+					</el-form>
+				</el-card>
+
+				<el-card shadow="hover" style="margin-top: 8px">
+					<el-table :data="state.userData" style="width: 100%" v-loading="state.loading" border>
+						<el-table-column type="index" label="序号" width="55" align="center" fixed />
+						<el-table-column prop="account" label="账号" width="120" fixed show-overflow-tooltip />
+						<el-table-column prop="nickName" label="昵称" width="120" show-overflow-tooltip />
+						<el-table-column label="头像" width="80" align="center" show-overflow-tooltip>
+							<template #default="scope">
+								<el-avatar src="" size="small">{{ scope.row.nickName?.slice(0, 1) }} </el-avatar>
+							</template>
+						</el-table-column>
+						<el-table-column prop="realName" label="姓名" width="120" show-overflow-tooltip />
+						<el-table-column label="出生日期" width="100" align="center" show-overflow-tooltip>
+							<template #default="scope">
+								{{ formatDate(new Date(scope.row.birthday), 'YYYY-mm-dd') }}
+							</template>
+						</el-table-column>
+						<el-table-column label="性别" width="70" align="center" show-overflow-tooltip>
+							<template #default="scope">
+								<el-tag type="success" v-if="scope.row.sex === 1"> 男 </el-tag>
+								<el-tag type="danger" v-else> 女 </el-tag>
+							</template>
+						</el-table-column>
+						<el-table-column prop="phone" label="手机号码" width="120" align="center" show-overflow-tooltip />
+						<el-table-column label="状态" width="70" align="center" show-overflow-tooltip>
+							<template #default="scope">
+								<el-switch v-model="scope.row.status" :active-value="1" :inactive-value="2" size="small" @change="changeStatus(scope.row)" v-auth="'sysUser:setStatus'" />
+							</template>
+						</el-table-column>
+						<el-table-column prop="orderNo" label="排序" width="70" align="center" show-overflow-tooltip />
+						<el-table-column prop="createTime" label="修改时间" width="160" show-overflow-tooltip />
+						<el-table-column prop="remark" label="备注" show-overflow-tooltip />
+						<el-table-column label="操作" width="110" align="center" fixed="right" show-overflow-tooltip>
+							<template #default="scope">
+								<el-button icon="ele-Edit" size="small" text type="primary" @click="openEditUser(scope.row)" v-auth="'sysUser:update'"> 编辑 </el-button>
+								<el-dropdown>
+									<el-button icon="ele-MoreFilled" size="small" text type="primary" style="padding-left: 12px" />
+									<template #dropdown>
+										<el-dropdown-menu>
+											<el-dropdown-item icon="ele-RefreshLeft" @click="resetUserPwd(scope.row)" :disabled="!auth('sysUser:resetPwd')"> 重置密码 </el-dropdown-item>
+											<el-dropdown-item icon="ele-Delete" @click="delUser(scope.row)" divided :disabled="!auth('sysUser:delete')"> 删除账号 </el-dropdown-item>
+										</el-dropdown-menu>
+									</template>
+								</el-dropdown>
+							</template>
+						</el-table-column>
+					</el-table>
+					<el-pagination
+						v-model:currentPage="state.tableParams.page"
+						v-model:page-size="state.tableParams.pageSize"
+						:total="state.tableParams.total"
+						:page-sizes="[10, 20, 50, 100]"
+						small
+						background
+						@size-change="handleSizeChange"
+						@current-change="handleCurrentChange"
+						layout="total, sizes, prev, pager, next, jumper"
+					/>
+				</el-card>
+			</el-col>
+		</el-row>
+		<EditUser ref="editUserRef" :title="state.editUserTitle" :orgData="state.orgTreeData" />
+	</div>
 </template>
 
 <script lang="ts" setup name="sysUser">
-import { onMounted, onUnmounted, reactive, ref } from "vue";
-import { ElMessageBox, ElMessage } from "element-plus";
-import { formatDate } from "/@/utils/formatTime";
-import { auth } from "/@/utils/authFunction";
-import mittBus from "/@/utils/mitt";
-import OrgTree from "/@/views/system/org/component/orgTree.vue";
-import EditUser from "/@/views/system/user/component/editUser.vue";
-
-import { getAPI } from "/@/utils/axios-utils";
-import { SysUserApi, SysOrgApi } from "/@/api-services/api";
-import { SysUser, SysOrg } from "/@/api-services/models";
+import { onMounted, onUnmounted, reactive, ref } from 'vue';
+import { ElMessageBox, ElMessage } from 'element-plus';
+import { formatDate } from '/@/utils/formatTime';
+import { auth } from '/@/utils/authFunction';
+import mittBus from '/@/utils/mitt';
+import OrgTree from '/@/views/system/org/component/orgTree.vue';
+import EditUser from '/@/views/system/user/component/editUser.vue';
+
+import { getAPI } from '/@/utils/axios-utils';
+import { SysUserApi, SysOrgApi } from '/@/api-services/api';
+import { SysUser, SysOrg } from '/@/api-services/models';
 
 const orgTreeRef = ref<InstanceType<typeof OrgTree>>();
 const editUserRef = ref<InstanceType<typeof EditUser>>();
 const state = reactive({
-  loading: false,
-  userData: [] as Array<SysUser>,
-  orgTreeData: [] as Array<SysOrg>,
-  queryParams: {
-    orgId: -1,
-    account: undefined,
-    realName: undefined,
-    phone: undefined,
-  },
-  tableParams: {
-    page: 1,
-    pageSize: 10,
-    total: 0 as any,
-  },
-  editUserTitle: "",
+	loading: false,
+	userData: [] as Array<SysUser>,
+	orgTreeData: [] as Array<SysOrg>,
+	queryParams: {
+		orgId: -1,
+		account: undefined,
+		realName: undefined,
+		phone: undefined,
+	},
+	tableParams: {
+		page: 1,
+		pageSize: 10,
+		total: 0 as any,
+	},
+	editUserTitle: '',
 });
 
 onMounted(async () => {
-  loadOrgData();
-  handleQuery();
+	loadOrgData();
+	handleQuery();
 
-  mittBus.on("submitRefresh", () => {
-    handleQuery();
-  });
+	mittBus.on('submitRefresh', () => {
+		handleQuery();
+	});
 });
 
 onUnmounted(() => {
-  mittBus.off("submitRefresh");
+	mittBus.off('submitRefresh');
 });
 
 // 查询机构数据
 const loadOrgData = async () => {
-  state.loading = true;
-  var res = await getAPI(SysOrgApi).apiSysOrgListGet(0);
-  state.orgTreeData = res.data.result ?? [];
-  state.loading = false;
+	state.loading = true;
+	var res = await getAPI(SysOrgApi).apiSysOrgListGet(0);
+	state.orgTreeData = res.data.result ?? [];
+	state.loading = false;
 };
 
 // 查询操作
 const handleQuery = async () => {
-  state.loading = true;
-  var res = await getAPI(SysUserApi).apiSysUserPageGet(
-    state.queryParams.account,
-    state.queryParams.realName,
-    state.queryParams.phone,
-    state.queryParams.orgId,
-    state.tableParams.page,
-    state.tableParams.pageSize
-  );
-  state.userData = res.data.result?.items ?? [];
-  state.tableParams.total = res.data.result?.total;
-  state.loading = false;
+	state.loading = true;
+	let params = Object.assign(state.queryParams, state.tableParams);
+	var res = await getAPI(SysUserApi).apiSysUserPagePost(params);
+	state.userData = res.data.result?.items ?? [];
+	state.tableParams.total = res.data.result?.total;
+	state.loading = false;
 };
 
 // 重置操作
 const resetQuery = () => {
-  state.queryParams.orgId = -1;
-  state.queryParams.account = undefined;
-  state.queryParams.realName = undefined;
-  state.queryParams.phone = undefined;
-  handleQuery();
+	state.queryParams.orgId = -1;
+	state.queryParams.account = undefined;
+	state.queryParams.realName = undefined;
+	state.queryParams.phone = undefined;
+	handleQuery();
 };
 
 // 打开新增页面
 const openAddUser = () => {
-  state.editUserTitle = "添加账号";
-  editUserRef.value?.openDialog({});
+	state.editUserTitle = '添加账号';
+	editUserRef.value?.openDialog({});
 };
 
 // 打开编辑页面
 const openEditUser = (row: any) => {
-  state.editUserTitle = "编辑账号";
-  editUserRef.value?.openDialog(row);
+	state.editUserTitle = '编辑账号';
+	editUserRef.value?.openDialog(row);
 };
 
 // 删除
 const delUser = (row: any) => {
-  ElMessageBox.confirm(`确定删除账号:【${row.account}】?`, "提示", {
-    confirmButtonText: "确定",
-    cancelButtonText: "取消",
-    type: "warning",
-  })
-    .then(async () => {
-      await getAPI(SysUserApi).apiSysUserDeletePost({ id: row.id });
-      handleQuery();
-      ElMessage.success("删除成功");
-    })
-    .catch(() => {});
+	ElMessageBox.confirm(`确定删除账号:【${row.account}】?`, '提示', {
+		confirmButtonText: '确定',
+		cancelButtonText: '取消',
+		type: 'warning',
+	})
+		.then(async () => {
+			await getAPI(SysUserApi).apiSysUserDeletePost({ id: row.id });
+			handleQuery();
+			ElMessage.success('删除成功');
+		})
+		.catch(() => {});
 };
 
 // 改变页面容量
 const handleSizeChange = (val: number) => {
-  state.tableParams.pageSize = val;
-  handleQuery();
+	state.tableParams.pageSize = val;
+	handleQuery();
 };
 
 // 改变页码序号
 const handleCurrentChange = (val: number) => {
-  state.tableParams.page = val;
-  handleQuery();
+	state.tableParams.page = val;
+	handleQuery();
 };
 
 // 修改状态
 const changeStatus = (row: any) => {
-  getAPI(SysUserApi)
-    .apiSysUserSetStatusPost({ id: row.id, status: row.status })
-    .then(() => {
-      ElMessage.success("账号状态设置成功");
-    })
-    .catch(() => {
-      row.status = row.status == 1 ? 2 : 1;
-    });
+	getAPI(SysUserApi)
+		.apiSysUserSetStatusPost({ id: row.id, status: row.status })
+		.then(() => {
+			ElMessage.success('账号状态设置成功');
+		})
+		.catch(() => {
+			row.status = row.status == 1 ? 2 : 1;
+		});
 };
 
 // 重置密码
 const resetUserPwd = async (row: any) => {
-  ElMessageBox.confirm(`确定重置密码:【${row.account}】?`, "提示", {
-    confirmButtonText: "确定",
-    cancelButtonText: "取消",
-    type: "warning",
-  })
-    .then(async () => {
-      await getAPI(SysUserApi).apiSysUserResetPwdPost({ id: row.id });
-      ElMessage.success("密码重置成功:123456");
-    })
-    .catch(() => {});
+	ElMessageBox.confirm(`确定重置密码:【${row.account}】?`, '提示', {
+		confirmButtonText: '确定',
+		cancelButtonText: '取消',
+		type: 'warning',
+	})
+		.then(async () => {
+			await getAPI(SysUserApi).apiSysUserResetPwdPost({ id: row.id });
+			ElMessage.success('密码重置成功:123456');
+		})
+		.catch(() => {});
 };
 
 // 树组件点击
 const nodeClick = async (node: any) => {
-  state.queryParams.orgId = node.id;
-  state.queryParams.account = undefined;
-  state.queryParams.realName = undefined;
-  state.queryParams.phone = undefined;
-  handleQuery();
+	state.queryParams.orgId = node.id;
+	state.queryParams.account = undefined;
+	state.queryParams.realName = undefined;
+	state.queryParams.phone = undefined;
+	handleQuery();
 };
 </script>

+ 14 - 23
Web/src/views/system/weChatUser/index.vue

@@ -2,28 +2,18 @@
 	<div class="weChatUser-container">
 		<el-card shadow="hover" :body-style="{ paddingBottom: '0' }">
 			<el-form :model="state.queryParams" ref="queryForm" :inline="true">
-        <el-row :gutter="35">
-          <el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="6">   
-            <el-form-item label="微信昵称" prop="nickName">
-              <el-input placeholder="微信昵称" clearable @keyup.enter="handleQuery" v-model="state.queryParams.nickName" />
-            </el-form-item>
-          </el-col>
-          <el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="6">  
-            <el-form-item label="手机号码" prop="mobile">
-              <el-input placeholder="手机号码" clearable @keyup.enter="handleQuery" v-model="state.queryParams.mobile" />
-            </el-form-item>
-          </el-col>
-          <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20 search-actions">
-            <div> 
-            </div>
-            <div>
-              <el-form-item>
-                <el-button icon="ele-Refresh" @click="resetQuery"> 重置 </el-button>
-                <el-button type="primary" icon="ele-Search" @click="handleQuery" v-auth="'sysWechatUser:page'"> 查询 </el-button>
-              </el-form-item>
-            </div>            
-          </el-col>
-        </el-row>  
+				<el-form-item label="微信昵称" prop="nickName">
+					<el-input placeholder="微信昵称" clearable @keyup.enter="handleQuery" v-model="state.queryParams.nickName" />
+				</el-form-item>
+				<el-form-item label="手机号码" prop="mobile">
+					<el-input placeholder="手机号码" clearable @keyup.enter="handleQuery" v-model="state.queryParams.mobile" />
+				</el-form-item>
+				<el-form-item>
+					<el-button-group>
+						<el-button type="primary" icon="ele-Search" @click="handleQuery" v-auth="'sysWechatUser:page'" plain> 查询 </el-button>
+						<el-button icon="ele-Refresh" @click="resetQuery"> 重置 </el-button>
+					</el-button-group>
+				</el-form-item>
 			</el-form>
 		</el-card>
 
@@ -122,7 +112,8 @@ onUnmounted(() => {
 // 查询操作
 const handleQuery = async () => {
 	state.loading = true;
-	var res = await getAPI(SysWechatUserApi).apiSysWechatUserPageGet(state.queryParams.nickName, state.queryParams.mobile, state.tableParams.page, state.tableParams.pageSize);
+	let params = Object.assign(state.queryParams, state.tableParams);
+	var res = await getAPI(SysWechatUserApi).apiSysWechatUserPagePost(params);
 	state.weChatUserData = res.data.result?.items ?? [];
 	state.tableParams.total = res.data.result?.total;
 	state.loading = false;