Przeglądaj źródła

😎1、优化我的日程页面 2、调整首页 3、其他优化

zuohuaijun 1 rok temu
rodzic
commit
f05e234824
76 zmienionych plików z 1095 dodań i 1101 usunięć
  1. 2 2
      Admin.NET/Admin.NET.Core/Admin.NET.Core.csproj
  2. 8 7
      Admin.NET/Admin.NET.Core/Entity/SysSchedule.cs
  3. 2 5
      Admin.NET/Admin.NET.Core/Extension/SqlSugarFilterExtension.cs
  4. 9 13
      Admin.NET/Admin.NET.Core/Service/Schedule/Dto/ScheduleInput.cs
  5. 29 33
      Admin.NET/Admin.NET.Core/Service/Schedule/SysScheduleService.cs
  6. 0 11
      Admin.NET/Admin.NET.Core/Service/User/Dto/UserScheduleOutput.cs
  7. 1 1
      Web/src/api-services/api.ts
  8. 82 86
      Web/src/api-services/apis/sys-schedule-api.ts
  9. 1 1
      Web/src/api-services/models/add-config-input.ts
  10. 1 1
      Web/src/api-services/models/add-dict-data-input.ts
  11. 1 1
      Web/src/api-services/models/add-dict-type-input.ts
  12. 1 1
      Web/src/api-services/models/add-menu-input.ts
  13. 1 1
      Web/src/api-services/models/add-notice-input.ts
  14. 1 1
      Web/src/api-services/models/add-open-access-input.ts
  15. 1 1
      Web/src/api-services/models/add-org-input.ts
  16. 1 1
      Web/src/api-services/models/add-plugin-input.ts
  17. 1 1
      Web/src/api-services/models/add-pos-input.ts
  18. 1 1
      Web/src/api-services/models/add-print-input.ts
  19. 1 1
      Web/src/api-services/models/add-role-input.ts
  20. 16 16
      Web/src/api-services/models/add-schedule-input.ts
  21. 1 1
      Web/src/api-services/models/add-sys-ldap-input.ts
  22. 1 1
      Web/src/api-services/models/add-tenant-input.ts
  23. 1 1
      Web/src/api-services/models/add-user-input.ts
  24. 11 11
      Web/src/api-services/models/admin-result-list-sys-schedule.ts
  25. 11 11
      Web/src/api-services/models/admin-result-sys-schedule.ts
  26. 3 3
      Web/src/api-services/models/delete-schedule-input.ts
  27. 7 0
      Web/src/api-services/models/index.ts
  28. 1 1
      Web/src/api-services/models/open-access-output.ts
  29. 4 4
      Web/src/api-services/models/schedule-input.ts
  30. 1 1
      Web/src/api-services/models/sys-code-gen-config.ts
  31. 1 1
      Web/src/api-services/models/sys-code-gen.ts
  32. 1 1
      Web/src/api-services/models/sys-config.ts
  33. 1 1
      Web/src/api-services/models/sys-dict-data.ts
  34. 1 1
      Web/src/api-services/models/sys-dict-type.ts
  35. 1 1
      Web/src/api-services/models/sys-file.ts
  36. 1 1
      Web/src/api-services/models/sys-ldap.ts
  37. 1 1
      Web/src/api-services/models/sys-log-diff.ts
  38. 1 1
      Web/src/api-services/models/sys-log-ex.ts
  39. 1 1
      Web/src/api-services/models/sys-log-op.ts
  40. 1 1
      Web/src/api-services/models/sys-log-vis.ts
  41. 1 1
      Web/src/api-services/models/sys-menu.ts
  42. 1 1
      Web/src/api-services/models/sys-notice.ts
  43. 1 1
      Web/src/api-services/models/sys-org.ts
  44. 1 1
      Web/src/api-services/models/sys-plugin.ts
  45. 1 1
      Web/src/api-services/models/sys-pos.ts
  46. 1 1
      Web/src/api-services/models/sys-print.ts
  47. 1 1
      Web/src/api-services/models/sys-role.ts
  48. 16 16
      Web/src/api-services/models/sys-schedule.ts
  49. 1 1
      Web/src/api-services/models/sys-user.ts
  50. 1 1
      Web/src/api-services/models/sys-wechat-pay.ts
  51. 1 1
      Web/src/api-services/models/sys-wechat-refund.ts
  52. 1 1
      Web/src/api-services/models/sys-wechat-user.ts
  53. 1 1
      Web/src/api-services/models/tenant-output.ts
  54. 1 1
      Web/src/api-services/models/update-config-input.ts
  55. 1 1
      Web/src/api-services/models/update-dict-data-input.ts
  56. 1 1
      Web/src/api-services/models/update-dict-type-input.ts
  57. 1 1
      Web/src/api-services/models/update-menu-input.ts
  58. 1 1
      Web/src/api-services/models/update-notice-input.ts
  59. 1 1
      Web/src/api-services/models/update-open-access-input.ts
  60. 1 1
      Web/src/api-services/models/update-org-input.ts
  61. 1 1
      Web/src/api-services/models/update-plugin-input.ts
  62. 1 1
      Web/src/api-services/models/update-pos-input.ts
  63. 1 1
      Web/src/api-services/models/update-print-input.ts
  64. 1 1
      Web/src/api-services/models/update-role-input.ts
  65. 15 15
      Web/src/api-services/models/update-schedule-input.ts
  66. 1 1
      Web/src/api-services/models/update-sys-ldap-input.ts
  67. 1 1
      Web/src/api-services/models/update-tenant-input.ts
  68. 1 1
      Web/src/api-services/models/update-user-input.ts
  69. 1 1
      Web/src/api-services/models/user-output.ts
  70. 1 0
      Web/src/views/home/widgets/components/about.vue
  71. 3 1
      Web/src/views/home/widgets/components/commit.vue
  72. 272 268
      Web/src/views/home/widgets/components/schedule.vue
  73. 79 83
      Web/src/views/home/widgets/components/scheduleEdit.vue
  74. 1 1
      Web/src/views/home/widgets/components/timer.vue
  75. 5 5
      Web/src/views/home/widgets/components/version.vue
  76. 465 456
      Web/src/views/home/widgets/index.vue

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

@@ -26,13 +26,13 @@
     <PackageReference Include="Magicodes.IE.Excel" Version="2.7.5.1" />
     <PackageReference Include="Magicodes.IE.Pdf" Version="2.7.5.1" />
     <PackageReference Include="Magicodes.IE.Word" Version="2.7.5.1" />
-    <PackageReference Include="MailKit" Version="4.7.1" />
+    <PackageReference Include="MailKit" Version="4.7.1.1" />
     <PackageReference Include="NewLife.Redis" Version="5.7.2024.709" />
     <PackageReference Include="Novell.Directory.Ldap.NETStandard" Version="3.6.0" />
     <PackageReference Include="QRCoder" Version="1.6.0" />
     <PackageReference Include="RabbitMQ.Client" Version="6.8.1" />
     <PackageReference Include="SixLabors.ImageSharp.Web" Version="3.1.2" />
-    <PackageReference Include="SKIT.FlurlHttpClient.Wechat.Api" Version="3.3.0" />
+    <PackageReference Include="SKIT.FlurlHttpClient.Wechat.Api" Version="3.4.0" />
     <PackageReference Include="SKIT.FlurlHttpClient.Wechat.TenpayV3" Version="3.6.0" />
     <PackageReference Include="SqlSugarCore" Version="5.1.4.162" />
     <PackageReference Include="SSH.NET" Version="2024.1.0" />

+ 8 - 7
Admin.NET/Admin.NET.Core/Entity/SysUserSchedule.cs → Admin.NET/Admin.NET.Core/Entity/SysSchedule.cs

@@ -4,30 +4,31 @@
 //
 // 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!
 
-
 namespace Admin.NET.Core;
 
 /// <summary>
-/// 系统用户日程表
+/// 系统日程表
 /// </summary>
-[SugarTable(null, "系统用户日程表")]
+[SugarTable(null, "系统日程表")]
 [SysTable]
-public class SysUserSchedule : EntityTenant
+public class SysSchedule : EntityTenant
 {
     /// <summary>
     /// 用户Id
     /// </summary>
     [SugarColumn(ColumnDescription = "用户Id")]
     public long UserId { get; set; }
+
     /// <summary>
     /// 日程时间
     /// </summary>
     [SugarColumn(ColumnDescription = "日程时间")]
     public DateTime? ScheduleTime { get; set; }
+
     /// <summary>
     /// 日程内容
     /// </summary>
-    [SugarColumn(ColumnDescription = "日程内容", Length = 255)]
-    [Required, MaxLength(255)]
+    [SugarColumn(ColumnDescription = "日程内容", Length = 256)]
+    [Required, MaxLength(256)]
     public virtual string Content { get; set; }
-}
+}

+ 2 - 5
Admin.NET/Admin.NET.Core/Extension/SqlSugarFilterExtension.cs

@@ -31,8 +31,7 @@ public static class SqlSugarFilterExtension
     /// <param name="type"></param>
     /// <param name="owners"></param>
     /// <returns></returns>
-    public static LambdaExpression GetConditionExpression<T>(this Type type, List<long> owners)
-        where T : Attribute
+    public static LambdaExpression GetConditionExpression<T>(this Type type, List<long> owners) where T : Attribute
     {
         var fieldNames = type.GetPropertyNames<T>();
 
@@ -52,9 +51,7 @@ public static class SqlSugarFilterExtension
                     temp = Expression.Convert(temp, Nullable.GetUnderlyingType(propertyType));
                 }
 
-                Expression left = Expression.Equal(
-                    temp, Expression.Constant(owner)
-                );
+                Expression left = Expression.Equal(temp, Expression.Constant(owner));
                 right = Expression.Or(left, right);
             });
         });

+ 9 - 13
Admin.NET/Admin.NET.Core/Service/User/Dto/UserScheduleInput.cs → Admin.NET/Admin.NET.Core/Service/Schedule/Dto/ScheduleInput.cs

@@ -4,32 +4,28 @@
 //
 // 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!
 
-
 namespace Admin.NET.Core.Service;
 
-
-public class UserScheduleInput : BaseIdInput
-{
-}
-
-public class PageUserScheduleInput 
+public class ScheduleInput
 {
     public DateTime? StartTime { get; set; }
+
     public DateTime? EndTime { get; set; }
 }
 
-public class AddUserScheduleInput : SysUserSchedule
-{    /// <summary>
-     /// 日程内容
-     /// </summary>
+public class AddScheduleInput : SysSchedule
+{
+    /// <summary>
+    /// 日程内容
+    /// </summary>
     [Required(ErrorMessage = "日程内容不能为空")]
     public override string Content { get; set; }
 }
 
-public class UpdateUserScheduleInput : AddUserScheduleInput
+public class UpdateScheduleInput : AddScheduleInput
 {
 }
 
-public class DeleteUserScheduleInput : BaseIdInput
+public class DeleteScheduleInput : BaseIdInput
 {
 }

+ 29 - 33
Admin.NET/Admin.NET.Core/Service/User/SysUserScheduleService.cs → Admin.NET/Admin.NET.Core/Service/Schedule/SysScheduleService.cs

@@ -4,50 +4,50 @@
 //
 // 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!
 
- 
 namespace Admin.NET.Core.Service;
+
 /// <summary>
-/// 用户日程服务
+/// 系统日程服务
 /// </summary>
-public class SysUserScheduleService : IDynamicApiController, ITransient
+[ApiDescriptionSettings(Order = 295)]
+public class SysScheduleService : IDynamicApiController, ITransient
 {
     private readonly UserManager _userManager;
-    private readonly SqlSugarRepository<SysUserSchedule> _sysUserSchedule;
+    private readonly SqlSugarRepository<SysSchedule> _sysSchedule;
 
-    public SysUserScheduleService(UserManager userManager
-        , SqlSugarRepository<SysUserSchedule> sysUserSchedle)
+    public SysScheduleService(UserManager userManager,
+        SqlSugarRepository<SysSchedule> sysSchedle)
     {
         _userManager = userManager;
-        _sysUserSchedule = sysUserSchedle;
+        _sysSchedule = sysSchedle;
     }
 
     /// <summary>
-    /// 获取日程详情
+    /// 获取日程列表
     /// </summary>
-    /// <param name="input"></param>
     /// <returns></returns>
-    [DisplayName("获取日程详情")]
-    public async Task<SysUserSchedule> GetDetail([FromQuery] UserScheduleInput input)
+    [DisplayName("获取日程列表")]
+    public async Task<List<SysSchedule>> Page(ScheduleInput input)
     {
-        return await _sysUserSchedule.GetFirstAsync(u => u.Id == input.Id);
+        return await _sysSchedule.AsQueryable()
+            .Where(u => u.UserId == _userManager.UserId)
+            .WhereIF(!string.IsNullOrWhiteSpace(input.StartTime.ToString()), u => u.ScheduleTime >= input.StartTime)
+            .WhereIF(!string.IsNullOrWhiteSpace(input.EndTime.ToString()), u => u.ScheduleTime <= input.EndTime)
+            .OrderBy(u => u.CreateTime, OrderByType.Asc)
+            .ToListAsync();
     }
 
     /// <summary>
-    /// 获取日程列表 
+    /// 获取日程详情
     /// </summary>
+    /// <param name="id"></param>
     /// <returns></returns>
-    [DisplayName("获取日程列表")]
-    public async Task<List<SysUserSchedule>> Page(PageUserScheduleInput input)
+    [DisplayName("获取日程详情")]
+    public async Task<SysSchedule> GetDetail(long id)
     {
-        return await _sysUserSchedule.AsQueryable()
-            .Where(z => z.UserId == _userManager.UserId)
-            .WhereIF(!string.IsNullOrWhiteSpace(input.StartTime.ToString()), z => z.ScheduleTime >= input.StartTime)
-            .WhereIF(!string.IsNullOrWhiteSpace(input.EndTime.ToString()), z => z.ScheduleTime <= input.EndTime)
-            .OrderBy(z => z.CreateTime, OrderByType.Asc)
-            .ToListAsync();
+        return await _sysSchedule.GetFirstAsync(u => u.Id == id);
     }
 
-
     /// <summary>
     /// 增加日程
     /// </summary>
@@ -55,12 +55,10 @@ public class SysUserScheduleService : IDynamicApiController, ITransient
     /// <returns></returns>
     [ApiDescriptionSettings(Name = "Add"), HttpPost]
     [DisplayName("增加日程")]
-    public async Task<long> AddUserSchedule(AddUserScheduleInput input)
+    public async Task AddUserSchedule(AddScheduleInput input)
     {
         input.UserId = _userManager.UserId;
-
-        var newOrg = await _sysUserSchedule.AsInsertable(input.Adapt<SysUserSchedule>()).ExecuteReturnEntityAsync();
-        return newOrg.Id;
+        await _sysSchedule.InsertAsync(input.Adapt<SysSchedule>());
     }
 
     /// <summary>
@@ -70,9 +68,9 @@ public class SysUserScheduleService : IDynamicApiController, ITransient
     /// <returns></returns>
     [ApiDescriptionSettings(Name = "Update"), HttpPost]
     [DisplayName("更新日程")]
-    public async Task UpdateUserSchedule(UpdateUserScheduleInput input)
+    public async Task UpdateUserSchedule(UpdateScheduleInput input)
     {
-        await _sysUserSchedule.AsUpdateable(input.Adapt<SysUserSchedule>()).IgnoreColumns(true).ExecuteCommandAsync();
+        await _sysSchedule.AsUpdateable(input.Adapt<SysSchedule>()).IgnoreColumns(true).ExecuteCommandAsync();
     }
 
     /// <summary>
@@ -82,10 +80,8 @@ public class SysUserScheduleService : IDynamicApiController, ITransient
     /// <returns></returns>
     [ApiDescriptionSettings(Name = "Delete"), HttpPost]
     [DisplayName("删除日程")]
-    public async Task DeleteUserSchedule(DeleteUserScheduleInput input)
+    public async Task DeleteUserSchedule(DeleteScheduleInput input)
     {
-        var sysUserSchedule = await _sysUserSchedule.GetFirstAsync(u => u.Id == input.Id) ?? throw Oops.Oh(ErrorCodeEnum.D1002);
-
-        await _sysUserSchedule.DeleteAsync(sysUserSchedule);
+        await _sysSchedule.DeleteAsync(u => u.Id == input.Id);
     }
-}
+}

+ 0 - 11
Admin.NET/Admin.NET.Core/Service/User/Dto/UserScheduleOutput.cs

@@ -1,11 +0,0 @@
-// Admin.NET 项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。
-//
-// 本项目主要遵循 MIT 许可证和 Apache 许可证(版本 2.0)进行分发和使用。许可证位于源代码树根目录中的 LICENSE-MIT 和 LICENSE-APACHE 文件。
-//
-// 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!
-
-namespace Admin.NET.Core.Service;
-
-public class UserScheduleOutput
-{
-}

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

@@ -44,12 +44,12 @@ export * from './apis/sys-print-api';
 export * from './apis/sys-proc-api';
 export * from './apis/sys-region-api';
 export * from './apis/sys-role-api';
+export * from './apis/sys-schedule-api';
 export * from './apis/sys-server-api';
 export * from './apis/sys-sms-api';
 export * from './apis/sys-tenant-api';
 export * from './apis/sys-user-api';
 export * from './apis/sys-user-menu-api';
-export * from './apis/sys-user-schedule-api';
 export * from './apis/sys-wechat-api';
 export * from './apis/sys-wechat-pay-api';
 export * from './apis/sys-wechat-user-api';

+ 82 - 86
Web/src/api-services/apis/sys-user-schedule-api.ts → Web/src/api-services/apis/sys-schedule-api.ts

@@ -17,28 +17,27 @@ 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 { AddUserScheduleInput } from '../models';
-import { AdminResultInt64 } from '../models';
-import { AdminResultListSysUserSchedule } from '../models';
-import { AdminResultSysUserSchedule } from '../models';
-import { DeleteUserScheduleInput } from '../models';
-import { PageUserScheduleInput } from '../models';
-import { UpdateUserScheduleInput } from '../models';
+import { AddScheduleInput } from '../models';
+import { AdminResultListSysSchedule } from '../models';
+import { AdminResultSysSchedule } from '../models';
+import { DeleteScheduleInput } from '../models';
+import { ScheduleInput } from '../models';
+import { UpdateScheduleInput } from '../models';
 /**
- * SysUserScheduleApi - axios parameter creator
+ * SysScheduleApi - axios parameter creator
  * @export
  */
-export const SysUserScheduleApiAxiosParamCreator = function (configuration?: Configuration) {
+export const SysScheduleApiAxiosParamCreator = function (configuration?: Configuration) {
     return {
         /**
          * 
          * @summary 增加日程
-         * @param {AddUserScheduleInput} [body] 
+         * @param {AddScheduleInput} [body] 
          * @param {*} [options] Override http request option.
          * @throws {RequiredError}
          */
-        apiSysUserScheduleAddPost: async (body?: AddUserScheduleInput, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
-            const localVarPath = `/api/sysUserSchedule/add`;
+        apiSysScheduleAddPost: async (body?: AddScheduleInput, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
+            const localVarPath = `/api/sysSchedule/add`;
             // use dummy base URL string because the URL constructor only accepts absolute URLs.
             const localVarUrlObj = new URL(localVarPath, 'https://example.com');
             let baseOptions;
@@ -81,12 +80,12 @@ export const SysUserScheduleApiAxiosParamCreator = function (configuration?: Con
         /**
          * 
          * @summary 删除日程
-         * @param {DeleteUserScheduleInput} [body] 
+         * @param {DeleteScheduleInput} [body] 
          * @param {*} [options] Override http request option.
          * @throws {RequiredError}
          */
-        apiSysUserScheduleDeletePost: async (body?: DeleteUserScheduleInput, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
-            const localVarPath = `/api/sysUserSchedule/delete`;
+        apiSysScheduleDeletePost: async (body?: DeleteScheduleInput, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
+            const localVarPath = `/api/sysSchedule/delete`;
             // use dummy base URL string because the URL constructor only accepts absolute URLs.
             const localVarUrlObj = new URL(localVarPath, 'https://example.com');
             let baseOptions;
@@ -129,16 +128,17 @@ export const SysUserScheduleApiAxiosParamCreator = function (configuration?: Con
         /**
          * 
          * @summary 获取日程详情
-         * @param {number} id 主键Id
+         * @param {number} id 
          * @param {*} [options] Override http request option.
          * @throws {RequiredError}
          */
-        apiSysUserScheduleDetailGet: async (id: number, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
+        apiSysScheduleDetailIdGet: async (id: number, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
             // verify required parameter 'id' is not null or undefined
             if (id === null || id === undefined) {
-                throw new RequiredError('id','Required parameter id was null or undefined when calling apiSysUserScheduleDetailGet.');
+                throw new RequiredError('id','Required parameter id was null or undefined when calling apiSysScheduleDetailIdGet.');
             }
-            const localVarPath = `/api/sysUserSchedule/detail`;
+            const localVarPath = `/api/sysSchedule/detail/{id}`
+                .replace(`{${"id"}}`, encodeURIComponent(String(id)));
             // use dummy base URL string because the URL constructor only accepts absolute URLs.
             const localVarUrlObj = new URL(localVarPath, 'https://example.com');
             let baseOptions;
@@ -158,10 +158,6 @@ export const SysUserScheduleApiAxiosParamCreator = function (configuration?: Con
                 localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
             }
 
-            if (id !== undefined) {
-                localVarQueryParameter['Id'] = id;
-            }
-
             const query = new URLSearchParams(localVarUrlObj.search);
             for (const key in localVarQueryParameter) {
                 query.set(key, localVarQueryParameter[key]);
@@ -181,12 +177,12 @@ export const SysUserScheduleApiAxiosParamCreator = function (configuration?: Con
         /**
          * 
          * @summary 获取日程列表
-         * @param {PageUserScheduleInput} [body] 
+         * @param {ScheduleInput} [body] 
          * @param {*} [options] Override http request option.
          * @throws {RequiredError}
          */
-        apiSysUserSchedulePagePost: async (body?: PageUserScheduleInput, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
-            const localVarPath = `/api/sysUserSchedule/page`;
+        apiSysSchedulePagePost: async (body?: ScheduleInput, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
+            const localVarPath = `/api/sysSchedule/page`;
             // use dummy base URL string because the URL constructor only accepts absolute URLs.
             const localVarUrlObj = new URL(localVarPath, 'https://example.com');
             let baseOptions;
@@ -229,12 +225,12 @@ export const SysUserScheduleApiAxiosParamCreator = function (configuration?: Con
         /**
          * 
          * @summary 更新日程
-         * @param {UpdateUserScheduleInput} [body] 
+         * @param {UpdateScheduleInput} [body] 
          * @param {*} [options] Override http request option.
          * @throws {RequiredError}
          */
-        apiSysUserScheduleUpdatePost: async (body?: UpdateUserScheduleInput, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
-            const localVarPath = `/api/sysUserSchedule/update`;
+        apiSysScheduleUpdatePost: async (body?: UpdateScheduleInput, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
+            const localVarPath = `/api/sysSchedule/update`;
             // use dummy base URL string because the URL constructor only accepts absolute URLs.
             const localVarUrlObj = new URL(localVarPath, 'https://example.com');
             let baseOptions;
@@ -278,20 +274,20 @@ export const SysUserScheduleApiAxiosParamCreator = function (configuration?: Con
 };
 
 /**
- * SysUserScheduleApi - functional programming interface
+ * SysScheduleApi - functional programming interface
  * @export
  */
-export const SysUserScheduleApiFp = function(configuration?: Configuration) {
+export const SysScheduleApiFp = function(configuration?: Configuration) {
     return {
         /**
          * 
          * @summary 增加日程
-         * @param {AddUserScheduleInput} [body] 
+         * @param {AddScheduleInput} [body] 
          * @param {*} [options] Override http request option.
          * @throws {RequiredError}
          */
-        async apiSysUserScheduleAddPost(body?: AddUserScheduleInput, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<AdminResultInt64>>> {
-            const localVarAxiosArgs = await SysUserScheduleApiAxiosParamCreator(configuration).apiSysUserScheduleAddPost(body, options);
+        async apiSysScheduleAddPost(body?: AddScheduleInput, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<void>>> {
+            const localVarAxiosArgs = await SysScheduleApiAxiosParamCreator(configuration).apiSysScheduleAddPost(body, options);
             return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                 const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                 return axios.request(axiosRequestArgs);
@@ -300,12 +296,12 @@ export const SysUserScheduleApiFp = function(configuration?: Configuration) {
         /**
          * 
          * @summary 删除日程
-         * @param {DeleteUserScheduleInput} [body] 
+         * @param {DeleteScheduleInput} [body] 
          * @param {*} [options] Override http request option.
          * @throws {RequiredError}
          */
-        async apiSysUserScheduleDeletePost(body?: DeleteUserScheduleInput, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<void>>> {
-            const localVarAxiosArgs = await SysUserScheduleApiAxiosParamCreator(configuration).apiSysUserScheduleDeletePost(body, options);
+        async apiSysScheduleDeletePost(body?: DeleteScheduleInput, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<void>>> {
+            const localVarAxiosArgs = await SysScheduleApiAxiosParamCreator(configuration).apiSysScheduleDeletePost(body, options);
             return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                 const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                 return axios.request(axiosRequestArgs);
@@ -314,12 +310,12 @@ export const SysUserScheduleApiFp = function(configuration?: Configuration) {
         /**
          * 
          * @summary 获取日程详情
-         * @param {number} id 主键Id
+         * @param {number} id 
          * @param {*} [options] Override http request option.
          * @throws {RequiredError}
          */
-        async apiSysUserScheduleDetailGet(id: number, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<AdminResultSysUserSchedule>>> {
-            const localVarAxiosArgs = await SysUserScheduleApiAxiosParamCreator(configuration).apiSysUserScheduleDetailGet(id, options);
+        async apiSysScheduleDetailIdGet(id: number, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<AdminResultSysSchedule>>> {
+            const localVarAxiosArgs = await SysScheduleApiAxiosParamCreator(configuration).apiSysScheduleDetailIdGet(id, options);
             return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                 const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                 return axios.request(axiosRequestArgs);
@@ -328,12 +324,12 @@ export const SysUserScheduleApiFp = function(configuration?: Configuration) {
         /**
          * 
          * @summary 获取日程列表
-         * @param {PageUserScheduleInput} [body] 
+         * @param {ScheduleInput} [body] 
          * @param {*} [options] Override http request option.
          * @throws {RequiredError}
          */
-        async apiSysUserSchedulePagePost(body?: PageUserScheduleInput, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<AdminResultListSysUserSchedule>>> {
-            const localVarAxiosArgs = await SysUserScheduleApiAxiosParamCreator(configuration).apiSysUserSchedulePagePost(body, options);
+        async apiSysSchedulePagePost(body?: ScheduleInput, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<AdminResultListSysSchedule>>> {
+            const localVarAxiosArgs = await SysScheduleApiAxiosParamCreator(configuration).apiSysSchedulePagePost(body, options);
             return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                 const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                 return axios.request(axiosRequestArgs);
@@ -342,12 +338,12 @@ export const SysUserScheduleApiFp = function(configuration?: Configuration) {
         /**
          * 
          * @summary 更新日程
-         * @param {UpdateUserScheduleInput} [body] 
+         * @param {UpdateScheduleInput} [body] 
          * @param {*} [options] Override http request option.
          * @throws {RequiredError}
          */
-        async apiSysUserScheduleUpdatePost(body?: UpdateUserScheduleInput, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<void>>> {
-            const localVarAxiosArgs = await SysUserScheduleApiAxiosParamCreator(configuration).apiSysUserScheduleUpdatePost(body, options);
+        async apiSysScheduleUpdatePost(body?: UpdateScheduleInput, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<void>>> {
+            const localVarAxiosArgs = await SysScheduleApiAxiosParamCreator(configuration).apiSysScheduleUpdatePost(body, options);
             return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
                 const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
                 return axios.request(axiosRequestArgs);
@@ -357,124 +353,124 @@ export const SysUserScheduleApiFp = function(configuration?: Configuration) {
 };
 
 /**
- * SysUserScheduleApi - factory interface
+ * SysScheduleApi - factory interface
  * @export
  */
-export const SysUserScheduleApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) {
+export const SysScheduleApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) {
     return {
         /**
          * 
          * @summary 增加日程
-         * @param {AddUserScheduleInput} [body] 
+         * @param {AddScheduleInput} [body] 
          * @param {*} [options] Override http request option.
          * @throws {RequiredError}
          */
-        async apiSysUserScheduleAddPost(body?: AddUserScheduleInput, options?: AxiosRequestConfig): Promise<AxiosResponse<AdminResultInt64>> {
-            return SysUserScheduleApiFp(configuration).apiSysUserScheduleAddPost(body, options).then((request) => request(axios, basePath));
+        async apiSysScheduleAddPost(body?: AddScheduleInput, options?: AxiosRequestConfig): Promise<AxiosResponse<void>> {
+            return SysScheduleApiFp(configuration).apiSysScheduleAddPost(body, options).then((request) => request(axios, basePath));
         },
         /**
          * 
          * @summary 删除日程
-         * @param {DeleteUserScheduleInput} [body] 
+         * @param {DeleteScheduleInput} [body] 
          * @param {*} [options] Override http request option.
          * @throws {RequiredError}
          */
-        async apiSysUserScheduleDeletePost(body?: DeleteUserScheduleInput, options?: AxiosRequestConfig): Promise<AxiosResponse<void>> {
-            return SysUserScheduleApiFp(configuration).apiSysUserScheduleDeletePost(body, options).then((request) => request(axios, basePath));
+        async apiSysScheduleDeletePost(body?: DeleteScheduleInput, options?: AxiosRequestConfig): Promise<AxiosResponse<void>> {
+            return SysScheduleApiFp(configuration).apiSysScheduleDeletePost(body, options).then((request) => request(axios, basePath));
         },
         /**
          * 
          * @summary 获取日程详情
-         * @param {number} id 主键Id
+         * @param {number} id 
          * @param {*} [options] Override http request option.
          * @throws {RequiredError}
          */
-        async apiSysUserScheduleDetailGet(id: number, options?: AxiosRequestConfig): Promise<AxiosResponse<AdminResultSysUserSchedule>> {
-            return SysUserScheduleApiFp(configuration).apiSysUserScheduleDetailGet(id, options).then((request) => request(axios, basePath));
+        async apiSysScheduleDetailIdGet(id: number, options?: AxiosRequestConfig): Promise<AxiosResponse<AdminResultSysSchedule>> {
+            return SysScheduleApiFp(configuration).apiSysScheduleDetailIdGet(id, options).then((request) => request(axios, basePath));
         },
         /**
          * 
          * @summary 获取日程列表
-         * @param {PageUserScheduleInput} [body] 
+         * @param {ScheduleInput} [body] 
          * @param {*} [options] Override http request option.
          * @throws {RequiredError}
          */
-        async apiSysUserSchedulePagePost(body?: PageUserScheduleInput, options?: AxiosRequestConfig): Promise<AxiosResponse<AdminResultListSysUserSchedule>> {
-            return SysUserScheduleApiFp(configuration).apiSysUserSchedulePagePost(body, options).then((request) => request(axios, basePath));
+        async apiSysSchedulePagePost(body?: ScheduleInput, options?: AxiosRequestConfig): Promise<AxiosResponse<AdminResultListSysSchedule>> {
+            return SysScheduleApiFp(configuration).apiSysSchedulePagePost(body, options).then((request) => request(axios, basePath));
         },
         /**
          * 
          * @summary 更新日程
-         * @param {UpdateUserScheduleInput} [body] 
+         * @param {UpdateScheduleInput} [body] 
          * @param {*} [options] Override http request option.
          * @throws {RequiredError}
          */
-        async apiSysUserScheduleUpdatePost(body?: UpdateUserScheduleInput, options?: AxiosRequestConfig): Promise<AxiosResponse<void>> {
-            return SysUserScheduleApiFp(configuration).apiSysUserScheduleUpdatePost(body, options).then((request) => request(axios, basePath));
+        async apiSysScheduleUpdatePost(body?: UpdateScheduleInput, options?: AxiosRequestConfig): Promise<AxiosResponse<void>> {
+            return SysScheduleApiFp(configuration).apiSysScheduleUpdatePost(body, options).then((request) => request(axios, basePath));
         },
     };
 };
 
 /**
- * SysUserScheduleApi - object-oriented interface
+ * SysScheduleApi - object-oriented interface
  * @export
- * @class SysUserScheduleApi
+ * @class SysScheduleApi
  * @extends {BaseAPI}
  */
-export class SysUserScheduleApi extends BaseAPI {
+export class SysScheduleApi extends BaseAPI {
     /**
      * 
      * @summary 增加日程
-     * @param {AddUserScheduleInput} [body] 
+     * @param {AddScheduleInput} [body] 
      * @param {*} [options] Override http request option.
      * @throws {RequiredError}
-     * @memberof SysUserScheduleApi
+     * @memberof SysScheduleApi
      */
-    public async apiSysUserScheduleAddPost(body?: AddUserScheduleInput, options?: AxiosRequestConfig) : Promise<AxiosResponse<AdminResultInt64>> {
-        return SysUserScheduleApiFp(this.configuration).apiSysUserScheduleAddPost(body, options).then((request) => request(this.axios, this.basePath));
+    public async apiSysScheduleAddPost(body?: AddScheduleInput, options?: AxiosRequestConfig) : Promise<AxiosResponse<void>> {
+        return SysScheduleApiFp(this.configuration).apiSysScheduleAddPost(body, options).then((request) => request(this.axios, this.basePath));
     }
     /**
      * 
      * @summary 删除日程
-     * @param {DeleteUserScheduleInput} [body] 
+     * @param {DeleteScheduleInput} [body] 
      * @param {*} [options] Override http request option.
      * @throws {RequiredError}
-     * @memberof SysUserScheduleApi
+     * @memberof SysScheduleApi
      */
-    public async apiSysUserScheduleDeletePost(body?: DeleteUserScheduleInput, options?: AxiosRequestConfig) : Promise<AxiosResponse<void>> {
-        return SysUserScheduleApiFp(this.configuration).apiSysUserScheduleDeletePost(body, options).then((request) => request(this.axios, this.basePath));
+    public async apiSysScheduleDeletePost(body?: DeleteScheduleInput, options?: AxiosRequestConfig) : Promise<AxiosResponse<void>> {
+        return SysScheduleApiFp(this.configuration).apiSysScheduleDeletePost(body, options).then((request) => request(this.axios, this.basePath));
     }
     /**
      * 
      * @summary 获取日程详情
-     * @param {number} id 主键Id
+     * @param {number} id 
      * @param {*} [options] Override http request option.
      * @throws {RequiredError}
-     * @memberof SysUserScheduleApi
+     * @memberof SysScheduleApi
      */
-    public async apiSysUserScheduleDetailGet(id: number, options?: AxiosRequestConfig) : Promise<AxiosResponse<AdminResultSysUserSchedule>> {
-        return SysUserScheduleApiFp(this.configuration).apiSysUserScheduleDetailGet(id, options).then((request) => request(this.axios, this.basePath));
+    public async apiSysScheduleDetailIdGet(id: number, options?: AxiosRequestConfig) : Promise<AxiosResponse<AdminResultSysSchedule>> {
+        return SysScheduleApiFp(this.configuration).apiSysScheduleDetailIdGet(id, options).then((request) => request(this.axios, this.basePath));
     }
     /**
      * 
      * @summary 获取日程列表
-     * @param {PageUserScheduleInput} [body] 
+     * @param {ScheduleInput} [body] 
      * @param {*} [options] Override http request option.
      * @throws {RequiredError}
-     * @memberof SysUserScheduleApi
+     * @memberof SysScheduleApi
      */
-    public async apiSysUserSchedulePagePost(body?: PageUserScheduleInput, options?: AxiosRequestConfig) : Promise<AxiosResponse<AdminResultListSysUserSchedule>> {
-        return SysUserScheduleApiFp(this.configuration).apiSysUserSchedulePagePost(body, options).then((request) => request(this.axios, this.basePath));
+    public async apiSysSchedulePagePost(body?: ScheduleInput, options?: AxiosRequestConfig) : Promise<AxiosResponse<AdminResultListSysSchedule>> {
+        return SysScheduleApiFp(this.configuration).apiSysSchedulePagePost(body, options).then((request) => request(this.axios, this.basePath));
     }
     /**
      * 
      * @summary 更新日程
-     * @param {UpdateUserScheduleInput} [body] 
+     * @param {UpdateScheduleInput} [body] 
      * @param {*} [options] Override http request option.
      * @throws {RequiredError}
-     * @memberof SysUserScheduleApi
+     * @memberof SysScheduleApi
      */
-    public async apiSysUserScheduleUpdatePost(body?: UpdateUserScheduleInput, options?: AxiosRequestConfig) : Promise<AxiosResponse<void>> {
-        return SysUserScheduleApiFp(this.configuration).apiSysUserScheduleUpdatePost(body, options).then((request) => request(this.axios, this.basePath));
+    public async apiSysScheduleUpdatePost(body?: UpdateScheduleInput, options?: AxiosRequestConfig) : Promise<AxiosResponse<void>> {
+        return SysScheduleApiFp(this.configuration).apiSysScheduleUpdatePost(body, options).then((request) => request(this.axios, this.basePath));
     }
 }

+ 1 - 1
Web/src/api-services/models/add-config-input.ts

@@ -51,7 +51,7 @@ export interface AddConfigInput {
      * @type {number}
      * @memberof AddConfigInput
      */
-    createUserId?: number;
+    createUserId?: number | null;
 
     /**
      * 创建者姓名

+ 1 - 1
Web/src/api-services/models/add-dict-data-input.ts

@@ -51,7 +51,7 @@ export interface AddDictDataInput {
      * @type {number}
      * @memberof AddDictDataInput
      */
-    createUserId?: number;
+    createUserId?: number | null;
 
     /**
      * 创建者姓名

+ 1 - 1
Web/src/api-services/models/add-dict-type-input.ts

@@ -52,7 +52,7 @@ export interface AddDictTypeInput {
      * @type {number}
      * @memberof AddDictTypeInput
      */
-    createUserId?: number;
+    createUserId?: number | null;
 
     /**
      * 创建者姓名

+ 1 - 1
Web/src/api-services/models/add-menu-input.ts

@@ -53,7 +53,7 @@ export interface AddMenuInput {
      * @type {number}
      * @memberof AddMenuInput
      */
-    createUserId?: number;
+    createUserId?: number | null;
 
     /**
      * 创建者姓名

+ 1 - 1
Web/src/api-services/models/add-notice-input.ts

@@ -52,7 +52,7 @@ export interface AddNoticeInput {
      * @type {number}
      * @memberof AddNoticeInput
      */
-    createUserId?: number;
+    createUserId?: number | null;
 
     /**
      * 创建者姓名

+ 1 - 1
Web/src/api-services/models/add-open-access-input.ts

@@ -51,7 +51,7 @@ export interface AddOpenAccessInput {
      * @type {number}
      * @memberof AddOpenAccessInput
      */
-    createUserId?: number;
+    createUserId?: number | null;
 
     /**
      * 创建者姓名

+ 1 - 1
Web/src/api-services/models/add-org-input.ts

@@ -52,7 +52,7 @@ export interface AddOrgInput {
      * @type {number}
      * @memberof AddOrgInput
      */
-    createUserId?: number;
+    createUserId?: number | null;
 
     /**
      * 创建者姓名

+ 1 - 1
Web/src/api-services/models/add-plugin-input.ts

@@ -51,7 +51,7 @@ export interface AddPluginInput {
      * @type {number}
      * @memberof AddPluginInput
      */
-    createUserId?: number;
+    createUserId?: number | null;
 
     /**
      * 创建者姓名

+ 1 - 1
Web/src/api-services/models/add-pos-input.ts

@@ -51,7 +51,7 @@ export interface AddPosInput {
      * @type {number}
      * @memberof AddPosInput
      */
-    createUserId?: number;
+    createUserId?: number | null;
 
     /**
      * 创建者姓名

+ 1 - 1
Web/src/api-services/models/add-print-input.ts

@@ -52,7 +52,7 @@ export interface AddPrintInput {
      * @type {number}
      * @memberof AddPrintInput
      */
-    createUserId?: number;
+    createUserId?: number | null;
 
     /**
      * 创建者姓名

+ 1 - 1
Web/src/api-services/models/add-role-input.ts

@@ -52,7 +52,7 @@ export interface AddRoleInput {
      * @type {number}
      * @memberof AddRoleInput
      */
-    createUserId?: number;
+    createUserId?: number | null;
 
     /**
      * 创建者姓名

+ 16 - 16
Web/src/api-services/models/sys-user-schedule.ts → Web/src/api-services/models/add-schedule-input.ts

@@ -13,18 +13,18 @@
  */
 
  /**
- * 系统用户日程表
+ * 
  *
  * @export
- * @interface SysUserSchedule
+ * @interface AddScheduleInput
  */
-export interface SysUserSchedule {
+export interface AddScheduleInput {
 
     /**
      * 雪花Id
      *
      * @type {number}
-     * @memberof SysUserSchedule
+     * @memberof AddScheduleInput
      */
     id?: number;
 
@@ -32,7 +32,7 @@ export interface SysUserSchedule {
      * 创建时间
      *
      * @type {Date}
-     * @memberof SysUserSchedule
+     * @memberof AddScheduleInput
      */
     createTime?: Date;
 
@@ -40,7 +40,7 @@ export interface SysUserSchedule {
      * 更新时间
      *
      * @type {Date}
-     * @memberof SysUserSchedule
+     * @memberof AddScheduleInput
      */
     updateTime?: Date | null;
 
@@ -48,15 +48,15 @@ export interface SysUserSchedule {
      * 创建者Id
      *
      * @type {number}
-     * @memberof SysUserSchedule
+     * @memberof AddScheduleInput
      */
-    createUserId?: number;
+    createUserId?: number | null;
 
     /**
      * 创建者姓名
      *
      * @type {string}
-     * @memberof SysUserSchedule
+     * @memberof AddScheduleInput
      */
     createUserName?: string | null;
 
@@ -64,7 +64,7 @@ export interface SysUserSchedule {
      * 修改者Id
      *
      * @type {number}
-     * @memberof SysUserSchedule
+     * @memberof AddScheduleInput
      */
     updateUserId?: number | null;
 
@@ -72,7 +72,7 @@ export interface SysUserSchedule {
      * 修改者姓名
      *
      * @type {string}
-     * @memberof SysUserSchedule
+     * @memberof AddScheduleInput
      */
     updateUserName?: string | null;
 
@@ -80,7 +80,7 @@ export interface SysUserSchedule {
      * 软删除
      *
      * @type {boolean}
-     * @memberof SysUserSchedule
+     * @memberof AddScheduleInput
      */
     isDelete?: boolean;
 
@@ -88,7 +88,7 @@ export interface SysUserSchedule {
      * 租户Id
      *
      * @type {number}
-     * @memberof SysUserSchedule
+     * @memberof AddScheduleInput
      */
     tenantId?: number | null;
 
@@ -96,7 +96,7 @@ export interface SysUserSchedule {
      * 用户Id
      *
      * @type {number}
-     * @memberof SysUserSchedule
+     * @memberof AddScheduleInput
      */
     userId?: number;
 
@@ -104,7 +104,7 @@ export interface SysUserSchedule {
      * 日程时间
      *
      * @type {Date}
-     * @memberof SysUserSchedule
+     * @memberof AddScheduleInput
      */
     scheduleTime?: Date | null;
 
@@ -112,7 +112,7 @@ export interface SysUserSchedule {
      * 日程内容
      *
      * @type {string}
-     * @memberof SysUserSchedule
+     * @memberof AddScheduleInput
      */
     content: string;
 }

+ 1 - 1
Web/src/api-services/models/add-sys-ldap-input.ts

@@ -51,7 +51,7 @@ export interface AddSysLdapInput {
      * @type {number}
      * @memberof AddSysLdapInput
      */
-    createUserId?: number;
+    createUserId?: number | null;
 
     /**
      * 创建者姓名

+ 1 - 1
Web/src/api-services/models/add-tenant-input.ts

@@ -53,7 +53,7 @@ export interface AddTenantInput {
      * @type {number}
      * @memberof AddTenantInput
      */
-    createUserId?: number;
+    createUserId?: number | null;
 
     /**
      * 创建者姓名

+ 1 - 1
Web/src/api-services/models/add-user-input.ts

@@ -57,7 +57,7 @@ export interface AddUserInput {
      * @type {number}
      * @memberof AddUserInput
      */
-    createUserId?: number;
+    createUserId?: number | null;
 
     /**
      * 创建者姓名

+ 11 - 11
Web/src/api-services/models/admin-result-list-sys-user-schedule.ts → Web/src/api-services/models/admin-result-list-sys-schedule.ts

@@ -12,20 +12,20 @@
  * Do not edit the class manually.
  */
 
-import { SysUserSchedule } from './sys-user-schedule';
+import { SysSchedule } from './sys-schedule';
  /**
  * 全局返回结果
  *
  * @export
- * @interface AdminResultListSysUserSchedule
+ * @interface AdminResultListSysSchedule
  */
-export interface AdminResultListSysUserSchedule {
+export interface AdminResultListSysSchedule {
 
     /**
      * 状态码
      *
      * @type {number}
-     * @memberof AdminResultListSysUserSchedule
+     * @memberof AdminResultListSysSchedule
      */
     code?: number;
 
@@ -33,7 +33,7 @@ export interface AdminResultListSysUserSchedule {
      * 类型success、warning、error
      *
      * @type {string}
-     * @memberof AdminResultListSysUserSchedule
+     * @memberof AdminResultListSysSchedule
      */
     type?: string | null;
 
@@ -41,23 +41,23 @@ export interface AdminResultListSysUserSchedule {
      * 错误信息
      *
      * @type {string}
-     * @memberof AdminResultListSysUserSchedule
+     * @memberof AdminResultListSysSchedule
      */
     message?: string | null;
 
     /**
      * 数据
      *
-     * @type {Array<SysUserSchedule>}
-     * @memberof AdminResultListSysUserSchedule
+     * @type {Array<SysSchedule>}
+     * @memberof AdminResultListSysSchedule
      */
-    result?: Array<SysUserSchedule> | null;
+    result?: Array<SysSchedule> | null;
 
     /**
      * 附加数据
      *
      * @type {any}
-     * @memberof AdminResultListSysUserSchedule
+     * @memberof AdminResultListSysSchedule
      */
     extras?: any | null;
 
@@ -65,7 +65,7 @@ export interface AdminResultListSysUserSchedule {
      * 时间
      *
      * @type {Date}
-     * @memberof AdminResultListSysUserSchedule
+     * @memberof AdminResultListSysSchedule
      */
     time?: Date;
 }

+ 11 - 11
Web/src/api-services/models/admin-result-sys-user-schedule.ts → Web/src/api-services/models/admin-result-sys-schedule.ts

@@ -12,20 +12,20 @@
  * Do not edit the class manually.
  */
 
-import { SysUserSchedule } from './sys-user-schedule';
+import { SysSchedule } from './sys-schedule';
  /**
  * 全局返回结果
  *
  * @export
- * @interface AdminResultSysUserSchedule
+ * @interface AdminResultSysSchedule
  */
-export interface AdminResultSysUserSchedule {
+export interface AdminResultSysSchedule {
 
     /**
      * 状态码
      *
      * @type {number}
-     * @memberof AdminResultSysUserSchedule
+     * @memberof AdminResultSysSchedule
      */
     code?: number;
 
@@ -33,7 +33,7 @@ export interface AdminResultSysUserSchedule {
      * 类型success、warning、error
      *
      * @type {string}
-     * @memberof AdminResultSysUserSchedule
+     * @memberof AdminResultSysSchedule
      */
     type?: string | null;
 
@@ -41,21 +41,21 @@ export interface AdminResultSysUserSchedule {
      * 错误信息
      *
      * @type {string}
-     * @memberof AdminResultSysUserSchedule
+     * @memberof AdminResultSysSchedule
      */
     message?: string | null;
 
     /**
-     * @type {SysUserSchedule}
-     * @memberof AdminResultSysUserSchedule
+     * @type {SysSchedule}
+     * @memberof AdminResultSysSchedule
      */
-    result?: SysUserSchedule;
+    result?: SysSchedule;
 
     /**
      * 附加数据
      *
      * @type {any}
-     * @memberof AdminResultSysUserSchedule
+     * @memberof AdminResultSysSchedule
      */
     extras?: any | null;
 
@@ -63,7 +63,7 @@ export interface AdminResultSysUserSchedule {
      * 时间
      *
      * @type {Date}
-     * @memberof AdminResultSysUserSchedule
+     * @memberof AdminResultSysSchedule
      */
     time?: Date;
 }

+ 3 - 3
Web/src/api-services/models/delete-user-schedule-input.ts → Web/src/api-services/models/delete-schedule-input.ts

@@ -16,15 +16,15 @@
  * 
  *
  * @export
- * @interface DeleteUserScheduleInput
+ * @interface DeleteScheduleInput
  */
-export interface DeleteUserScheduleInput {
+export interface DeleteScheduleInput {
 
     /**
      * 主键Id
      *
      * @type {number}
-     * @memberof DeleteUserScheduleInput
+     * @memberof DeleteScheduleInput
      */
     id: number;
 }

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

@@ -14,6 +14,7 @@ export * from './add-pos-input';
 export * from './add-print-input';
 export * from './add-region-input';
 export * from './add-role-input';
+export * from './add-schedule-input';
 export * from './add-subscribe-message-template-input';
 export * from './add-sys-ldap-input';
 export * from './add-tenant-input';
@@ -52,6 +53,7 @@ export * from './admin-result-list-sys-notice';
 export * from './admin-result-list-sys-org';
 export * from './admin-result-list-sys-pos';
 export * from './admin-result-list-sys-region';
+export * from './admin-result-list-sys-schedule';
 export * from './admin-result-list-sys-user';
 export * from './admin-result-list-sys-user-ext-org';
 export * from './admin-result-list-sys-wechat-refund';
@@ -93,6 +95,7 @@ export * from './admin-result-sys-dict-type';
 export * from './admin-result-sys-file';
 export * from './admin-result-sys-ldap';
 export * from './admin-result-sys-print';
+export * from './admin-result-sys-schedule';
 export * from './admin-result-sys-user';
 export * from './admin-result-sys-wechat-pay';
 export * from './admin-result-sys-wechat-refund';
@@ -162,6 +165,7 @@ export * from './delete-pos-input';
 export * from './delete-print-input';
 export * from './delete-region-input';
 export * from './delete-role-input';
+export * from './delete-schedule-input';
 export * from './delete-sys-ldap-input';
 export * from './delete-tenant-input';
 export * from './delete-user-input';
@@ -256,6 +260,7 @@ export * from './role-output';
 export * from './runtime-field-handle';
 export * from './runtime-method-handle';
 export * from './runtime-type-handle';
+export * from './schedule-input';
 export * from './schema-serialization-mode';
 export * from './search';
 export * from './security-rule-set';
@@ -323,6 +328,7 @@ export * from './sys-pos';
 export * from './sys-print';
 export * from './sys-region';
 export * from './sys-role';
+export * from './sys-schedule';
 export * from './sys-user';
 export * from './sys-user-ext-org';
 export * from './sys-wechat-pay';
@@ -357,6 +363,7 @@ export * from './update-pos-input';
 export * from './update-print-input';
 export * from './update-region-input';
 export * from './update-role-input';
+export * from './update-schedule-input';
 export * from './update-sys-ldap-input';
 export * from './update-tenant-input';
 export * from './update-user-input';

+ 1 - 1
Web/src/api-services/models/open-access-output.ts

@@ -51,7 +51,7 @@ export interface OpenAccessOutput {
      * @type {number}
      * @memberof OpenAccessOutput
      */
-    createUserId?: number;
+    createUserId?: number | null;
 
     /**
      * 创建者姓名

+ 4 - 4
Web/src/api-services/models/page-user-schedule-input.ts → Web/src/api-services/models/schedule-input.ts

@@ -16,19 +16,19 @@
  * 
  *
  * @export
- * @interface PageUserScheduleInput
+ * @interface ScheduleInput
  */
-export interface PageUserScheduleInput {
+export interface ScheduleInput {
 
     /**
      * @type {Date}
-     * @memberof PageUserScheduleInput
+     * @memberof ScheduleInput
      */
     startTime?: Date | null;
 
     /**
      * @type {Date}
-     * @memberof PageUserScheduleInput
+     * @memberof ScheduleInput
      */
     endTime?: Date | null;
 }

+ 1 - 1
Web/src/api-services/models/sys-code-gen-config.ts

@@ -50,7 +50,7 @@ export interface SysCodeGenConfig {
      * @type {number}
      * @memberof SysCodeGenConfig
      */
-    createUserId?: number;
+    createUserId?: number | null;
 
     /**
      * 创建者姓名

+ 1 - 1
Web/src/api-services/models/sys-code-gen.ts

@@ -50,7 +50,7 @@ export interface SysCodeGen {
      * @type {number}
      * @memberof SysCodeGen
      */
-    createUserId?: number;
+    createUserId?: number | null;
 
     /**
      * 创建者姓名

+ 1 - 1
Web/src/api-services/models/sys-config.ts

@@ -51,7 +51,7 @@ export interface SysConfig {
      * @type {number}
      * @memberof SysConfig
      */
-    createUserId?: number;
+    createUserId?: number | null;
 
     /**
      * 创建者姓名

+ 1 - 1
Web/src/api-services/models/sys-dict-data.ts

@@ -51,7 +51,7 @@ export interface SysDictData {
      * @type {number}
      * @memberof SysDictData
      */
-    createUserId?: number;
+    createUserId?: number | null;
 
     /**
      * 创建者姓名

+ 1 - 1
Web/src/api-services/models/sys-dict-type.ts

@@ -52,7 +52,7 @@ export interface SysDictType {
      * @type {number}
      * @memberof SysDictType
      */
-    createUserId?: number;
+    createUserId?: number | null;
 
     /**
      * 创建者姓名

+ 1 - 1
Web/src/api-services/models/sys-file.ts

@@ -50,7 +50,7 @@ export interface SysFile {
      * @type {number}
      * @memberof SysFile
      */
-    createUserId?: number;
+    createUserId?: number | null;
 
     /**
      * 创建者姓名

+ 1 - 1
Web/src/api-services/models/sys-ldap.ts

@@ -51,7 +51,7 @@ export interface SysLdap {
      * @type {number}
      * @memberof SysLdap
      */
-    createUserId?: number;
+    createUserId?: number | null;
 
     /**
      * 创建者姓名

+ 1 - 1
Web/src/api-services/models/sys-log-diff.ts

@@ -50,7 +50,7 @@ export interface SysLogDiff {
      * @type {number}
      * @memberof SysLogDiff
      */
-    createUserId?: number;
+    createUserId?: number | null;
 
     /**
      * 创建者姓名

+ 1 - 1
Web/src/api-services/models/sys-log-ex.ts

@@ -51,7 +51,7 @@ export interface SysLogEx {
      * @type {number}
      * @memberof SysLogEx
      */
-    createUserId?: number;
+    createUserId?: number | null;
 
     /**
      * 创建者姓名

+ 1 - 1
Web/src/api-services/models/sys-log-op.ts

@@ -51,7 +51,7 @@ export interface SysLogOp {
      * @type {number}
      * @memberof SysLogOp
      */
-    createUserId?: number;
+    createUserId?: number | null;
 
     /**
      * 创建者姓名

+ 1 - 1
Web/src/api-services/models/sys-log-vis.ts

@@ -51,7 +51,7 @@ export interface SysLogVis {
      * @type {number}
      * @memberof SysLogVis
      */
-    createUserId?: number;
+    createUserId?: number | null;
 
     /**
      * 创建者姓名

+ 1 - 1
Web/src/api-services/models/sys-menu.ts

@@ -53,7 +53,7 @@ export interface SysMenu {
      * @type {number}
      * @memberof SysMenu
      */
-    createUserId?: number;
+    createUserId?: number | null;
 
     /**
      * 创建者姓名

+ 1 - 1
Web/src/api-services/models/sys-notice.ts

@@ -52,7 +52,7 @@ export interface SysNotice {
      * @type {number}
      * @memberof SysNotice
      */
-    createUserId?: number;
+    createUserId?: number | null;
 
     /**
      * 创建者姓名

+ 1 - 1
Web/src/api-services/models/sys-org.ts

@@ -52,7 +52,7 @@ export interface SysOrg {
      * @type {number}
      * @memberof SysOrg
      */
-    createUserId?: number;
+    createUserId?: number | null;
 
     /**
      * 创建者姓名

+ 1 - 1
Web/src/api-services/models/sys-plugin.ts

@@ -51,7 +51,7 @@ export interface SysPlugin {
      * @type {number}
      * @memberof SysPlugin
      */
-    createUserId?: number;
+    createUserId?: number | null;
 
     /**
      * 创建者姓名

+ 1 - 1
Web/src/api-services/models/sys-pos.ts

@@ -51,7 +51,7 @@ export interface SysPos {
      * @type {number}
      * @memberof SysPos
      */
-    createUserId?: number;
+    createUserId?: number | null;
 
     /**
      * 创建者姓名

+ 1 - 1
Web/src/api-services/models/sys-print.ts

@@ -52,7 +52,7 @@ export interface SysPrint {
      * @type {number}
      * @memberof SysPrint
      */
-    createUserId?: number;
+    createUserId?: number | null;
 
     /**
      * 创建者姓名

+ 1 - 1
Web/src/api-services/models/sys-role.ts

@@ -52,7 +52,7 @@ export interface SysRole {
      * @type {number}
      * @memberof SysRole
      */
-    createUserId?: number;
+    createUserId?: number | null;
 
     /**
      * 创建者姓名

+ 16 - 16
Web/src/api-services/models/update-user-schedule-input.ts → Web/src/api-services/models/sys-schedule.ts

@@ -13,18 +13,18 @@
  */
 
  /**
- * 
+ * 系统日程表
  *
  * @export
- * @interface UpdateUserScheduleInput
+ * @interface SysSchedule
  */
-export interface UpdateUserScheduleInput {
+export interface SysSchedule {
 
     /**
      * 雪花Id
      *
      * @type {number}
-     * @memberof UpdateUserScheduleInput
+     * @memberof SysSchedule
      */
     id?: number;
 
@@ -32,7 +32,7 @@ export interface UpdateUserScheduleInput {
      * 创建时间
      *
      * @type {Date}
-     * @memberof UpdateUserScheduleInput
+     * @memberof SysSchedule
      */
     createTime?: Date;
 
@@ -40,7 +40,7 @@ export interface UpdateUserScheduleInput {
      * 更新时间
      *
      * @type {Date}
-     * @memberof UpdateUserScheduleInput
+     * @memberof SysSchedule
      */
     updateTime?: Date | null;
 
@@ -48,15 +48,15 @@ export interface UpdateUserScheduleInput {
      * 创建者Id
      *
      * @type {number}
-     * @memberof UpdateUserScheduleInput
+     * @memberof SysSchedule
      */
-    createUserId?: number;
+    createUserId?: number | null;
 
     /**
      * 创建者姓名
      *
      * @type {string}
-     * @memberof UpdateUserScheduleInput
+     * @memberof SysSchedule
      */
     createUserName?: string | null;
 
@@ -64,7 +64,7 @@ export interface UpdateUserScheduleInput {
      * 修改者Id
      *
      * @type {number}
-     * @memberof UpdateUserScheduleInput
+     * @memberof SysSchedule
      */
     updateUserId?: number | null;
 
@@ -72,7 +72,7 @@ export interface UpdateUserScheduleInput {
      * 修改者姓名
      *
      * @type {string}
-     * @memberof UpdateUserScheduleInput
+     * @memberof SysSchedule
      */
     updateUserName?: string | null;
 
@@ -80,7 +80,7 @@ export interface UpdateUserScheduleInput {
      * 软删除
      *
      * @type {boolean}
-     * @memberof UpdateUserScheduleInput
+     * @memberof SysSchedule
      */
     isDelete?: boolean;
 
@@ -88,7 +88,7 @@ export interface UpdateUserScheduleInput {
      * 租户Id
      *
      * @type {number}
-     * @memberof UpdateUserScheduleInput
+     * @memberof SysSchedule
      */
     tenantId?: number | null;
 
@@ -96,7 +96,7 @@ export interface UpdateUserScheduleInput {
      * 用户Id
      *
      * @type {number}
-     * @memberof UpdateUserScheduleInput
+     * @memberof SysSchedule
      */
     userId?: number;
 
@@ -104,7 +104,7 @@ export interface UpdateUserScheduleInput {
      * 日程时间
      *
      * @type {Date}
-     * @memberof UpdateUserScheduleInput
+     * @memberof SysSchedule
      */
     scheduleTime?: Date | null;
 
@@ -112,7 +112,7 @@ export interface UpdateUserScheduleInput {
      * 日程内容
      *
      * @type {string}
-     * @memberof UpdateUserScheduleInput
+     * @memberof SysSchedule
      */
     content: string;
 }

+ 1 - 1
Web/src/api-services/models/sys-user.ts

@@ -56,7 +56,7 @@ export interface SysUser {
      * @type {number}
      * @memberof SysUser
      */
-    createUserId?: number;
+    createUserId?: number | null;
 
     /**
      * 创建者姓名

+ 1 - 1
Web/src/api-services/models/sys-wechat-pay.ts

@@ -50,7 +50,7 @@ export interface SysWechatPay {
      * @type {number}
      * @memberof SysWechatPay
      */
-    createUserId?: number;
+    createUserId?: number | null;
 
     /**
      * 创建者姓名

+ 1 - 1
Web/src/api-services/models/sys-wechat-refund.ts

@@ -50,7 +50,7 @@ export interface SysWechatRefund {
      * @type {number}
      * @memberof SysWechatRefund
      */
-    createUserId?: number;
+    createUserId?: number | null;
 
     /**
      * 创建者姓名

+ 1 - 1
Web/src/api-services/models/sys-wechat-user.ts

@@ -51,7 +51,7 @@ export interface SysWechatUser {
      * @type {number}
      * @memberof SysWechatUser
      */
-    createUserId?: number;
+    createUserId?: number | null;
 
     /**
      * 创建者姓名

+ 1 - 1
Web/src/api-services/models/tenant-output.ts

@@ -53,7 +53,7 @@ export interface TenantOutput {
      * @type {number}
      * @memberof TenantOutput
      */
-    createUserId?: number;
+    createUserId?: number | null;
 
     /**
      * 创建者姓名

+ 1 - 1
Web/src/api-services/models/update-config-input.ts

@@ -51,7 +51,7 @@ export interface UpdateConfigInput {
      * @type {number}
      * @memberof UpdateConfigInput
      */
-    createUserId?: number;
+    createUserId?: number | null;
 
     /**
      * 创建者姓名

+ 1 - 1
Web/src/api-services/models/update-dict-data-input.ts

@@ -51,7 +51,7 @@ export interface UpdateDictDataInput {
      * @type {number}
      * @memberof UpdateDictDataInput
      */
-    createUserId?: number;
+    createUserId?: number | null;
 
     /**
      * 创建者姓名

+ 1 - 1
Web/src/api-services/models/update-dict-type-input.ts

@@ -52,7 +52,7 @@ export interface UpdateDictTypeInput {
      * @type {number}
      * @memberof UpdateDictTypeInput
      */
-    createUserId?: number;
+    createUserId?: number | null;
 
     /**
      * 创建者姓名

+ 1 - 1
Web/src/api-services/models/update-menu-input.ts

@@ -53,7 +53,7 @@ export interface UpdateMenuInput {
      * @type {number}
      * @memberof UpdateMenuInput
      */
-    createUserId?: number;
+    createUserId?: number | null;
 
     /**
      * 创建者姓名

+ 1 - 1
Web/src/api-services/models/update-notice-input.ts

@@ -52,7 +52,7 @@ export interface UpdateNoticeInput {
      * @type {number}
      * @memberof UpdateNoticeInput
      */
-    createUserId?: number;
+    createUserId?: number | null;
 
     /**
      * 创建者姓名

+ 1 - 1
Web/src/api-services/models/update-open-access-input.ts

@@ -51,7 +51,7 @@ export interface UpdateOpenAccessInput {
      * @type {number}
      * @memberof UpdateOpenAccessInput
      */
-    createUserId?: number;
+    createUserId?: number | null;
 
     /**
      * 创建者姓名

+ 1 - 1
Web/src/api-services/models/update-org-input.ts

@@ -52,7 +52,7 @@ export interface UpdateOrgInput {
      * @type {number}
      * @memberof UpdateOrgInput
      */
-    createUserId?: number;
+    createUserId?: number | null;
 
     /**
      * 创建者姓名

+ 1 - 1
Web/src/api-services/models/update-plugin-input.ts

@@ -51,7 +51,7 @@ export interface UpdatePluginInput {
      * @type {number}
      * @memberof UpdatePluginInput
      */
-    createUserId?: number;
+    createUserId?: number | null;
 
     /**
      * 创建者姓名

+ 1 - 1
Web/src/api-services/models/update-pos-input.ts

@@ -51,7 +51,7 @@ export interface UpdatePosInput {
      * @type {number}
      * @memberof UpdatePosInput
      */
-    createUserId?: number;
+    createUserId?: number | null;
 
     /**
      * 创建者姓名

+ 1 - 1
Web/src/api-services/models/update-print-input.ts

@@ -52,7 +52,7 @@ export interface UpdatePrintInput {
      * @type {number}
      * @memberof UpdatePrintInput
      */
-    createUserId?: number;
+    createUserId?: number | null;
 
     /**
      * 创建者姓名

+ 1 - 1
Web/src/api-services/models/update-role-input.ts

@@ -52,7 +52,7 @@ export interface UpdateRoleInput {
      * @type {number}
      * @memberof UpdateRoleInput
      */
-    createUserId?: number;
+    createUserId?: number | null;
 
     /**
      * 创建者姓名

+ 15 - 15
Web/src/api-services/models/add-user-schedule-input.ts → Web/src/api-services/models/update-schedule-input.ts

@@ -16,15 +16,15 @@
  * 
  *
  * @export
- * @interface AddUserScheduleInput
+ * @interface UpdateScheduleInput
  */
-export interface AddUserScheduleInput {
+export interface UpdateScheduleInput {
 
     /**
      * 雪花Id
      *
      * @type {number}
-     * @memberof AddUserScheduleInput
+     * @memberof UpdateScheduleInput
      */
     id?: number;
 
@@ -32,7 +32,7 @@ export interface AddUserScheduleInput {
      * 创建时间
      *
      * @type {Date}
-     * @memberof AddUserScheduleInput
+     * @memberof UpdateScheduleInput
      */
     createTime?: Date;
 
@@ -40,7 +40,7 @@ export interface AddUserScheduleInput {
      * 更新时间
      *
      * @type {Date}
-     * @memberof AddUserScheduleInput
+     * @memberof UpdateScheduleInput
      */
     updateTime?: Date | null;
 
@@ -48,15 +48,15 @@ export interface AddUserScheduleInput {
      * 创建者Id
      *
      * @type {number}
-     * @memberof AddUserScheduleInput
+     * @memberof UpdateScheduleInput
      */
-    createUserId?: number;
+    createUserId?: number | null;
 
     /**
      * 创建者姓名
      *
      * @type {string}
-     * @memberof AddUserScheduleInput
+     * @memberof UpdateScheduleInput
      */
     createUserName?: string | null;
 
@@ -64,7 +64,7 @@ export interface AddUserScheduleInput {
      * 修改者Id
      *
      * @type {number}
-     * @memberof AddUserScheduleInput
+     * @memberof UpdateScheduleInput
      */
     updateUserId?: number | null;
 
@@ -72,7 +72,7 @@ export interface AddUserScheduleInput {
      * 修改者姓名
      *
      * @type {string}
-     * @memberof AddUserScheduleInput
+     * @memberof UpdateScheduleInput
      */
     updateUserName?: string | null;
 
@@ -80,7 +80,7 @@ export interface AddUserScheduleInput {
      * 软删除
      *
      * @type {boolean}
-     * @memberof AddUserScheduleInput
+     * @memberof UpdateScheduleInput
      */
     isDelete?: boolean;
 
@@ -88,7 +88,7 @@ export interface AddUserScheduleInput {
      * 租户Id
      *
      * @type {number}
-     * @memberof AddUserScheduleInput
+     * @memberof UpdateScheduleInput
      */
     tenantId?: number | null;
 
@@ -96,7 +96,7 @@ export interface AddUserScheduleInput {
      * 用户Id
      *
      * @type {number}
-     * @memberof AddUserScheduleInput
+     * @memberof UpdateScheduleInput
      */
     userId?: number;
 
@@ -104,7 +104,7 @@ export interface AddUserScheduleInput {
      * 日程时间
      *
      * @type {Date}
-     * @memberof AddUserScheduleInput
+     * @memberof UpdateScheduleInput
      */
     scheduleTime?: Date | null;
 
@@ -112,7 +112,7 @@ export interface AddUserScheduleInput {
      * 日程内容
      *
      * @type {string}
-     * @memberof AddUserScheduleInput
+     * @memberof UpdateScheduleInput
      */
     content: string;
 }

+ 1 - 1
Web/src/api-services/models/update-sys-ldap-input.ts

@@ -51,7 +51,7 @@ export interface UpdateSysLdapInput {
      * @type {number}
      * @memberof UpdateSysLdapInput
      */
-    createUserId?: number;
+    createUserId?: number | null;
 
     /**
      * 创建者姓名

+ 1 - 1
Web/src/api-services/models/update-tenant-input.ts

@@ -53,7 +53,7 @@ export interface UpdateTenantInput {
      * @type {number}
      * @memberof UpdateTenantInput
      */
-    createUserId?: number;
+    createUserId?: number | null;
 
     /**
      * 创建者姓名

+ 1 - 1
Web/src/api-services/models/update-user-input.ts

@@ -57,7 +57,7 @@ export interface UpdateUserInput {
      * @type {number}
      * @memberof UpdateUserInput
      */
-    createUserId?: number;
+    createUserId?: number | null;
 
     /**
      * 创建者姓名

+ 1 - 1
Web/src/api-services/models/user-output.ts

@@ -56,7 +56,7 @@ export interface UserOutput {
      * @type {number}
      * @memberof UserOutput
      */
-    createUserId?: number;
+    createUserId?: number | null;
 
     /**
      * 创建者姓名

+ 1 - 0
Web/src/views/home/widgets/components/about.vue

@@ -32,5 +32,6 @@ export default {
 	color: #999;
 	margin-top: 10px;
 	line-height: 1.8;
+	/* height: 100px; */
 }
 </style>

+ 3 - 1
Web/src/views/home/widgets/components/commit.vue

@@ -1,7 +1,9 @@
 <template>
 	<el-card shadow="hover" header="更新记录">
 		<template #header>
-			<el-button type="primary" icon="ele-Refresh" round @click="refresh">更新记录</el-button>
+			<el-icon style="display: inline; vertical-align: middle"> <ele-DocumentCopy /> </el-icon>
+			<span style=""> 更新记录 </span>
+			<el-button type="primary" icon="ele-Refresh" round plain @click="refresh" style="float: right">更新记录</el-button>
 		</template>
 		<div class="commit" v-loading="state.loading">
 			<el-timeline style="max-width: 600px" v-if="state.list.length > 0">

+ 272 - 268
Web/src/views/home/widgets/components/schedule.vue

@@ -1,299 +1,303 @@
 <template>
-    <el-card shadow="hover" header="我的日程" class="item-background">
-        <template #header>
-            <el-icon style="display: inline; vertical-align: middle"> <ele-Calendar /> </el-icon>
-            <span style=""> 我的日程 </span>
-            <el-button type="primary" icon="ele-CirclePlus" round @click="openAddSchedule">添加日程</el-button>
-        </template>
-        <div class="custome-canlendar">
-            <div class="block">
-                <div class="data-analysis">
-                    <el-calendar v-model="state.calendarValue">
-                        <!--选中小红点-->
-                        <template #date-cell="{ data }">
-                            <div @click="handleClickDate(data)">
-                                <div class="spandate">{{ data.day.split('-').slice(2).join('-') }}</div>
-                                <div v-for="(item, key) in state.ScheduleData" :key="key">
-                                    <el-badge v-if="FormatDate(data.day) == FormatDate(item.scheduleTime)" is-dot class="item"></el-badge>
-                                </div>
-                            </div>
-                        </template>
-                    </el-calendar>
-                </div>
-                <div class="schedule-list">
-                    <div class="item" v-for="(item,index) in state.TodayScheduleData" :key="index" @click="openEditSchedule(item)">
-                        <!-- <span class="date">{{ item.start_time + '-' + item.end_time }}</span> -->
-                        <span class="content">{{ item.content }}</span>
-                    </div>
-                </div>
-            </div>
-            <EditSchedule ref="editScheduleRef" :title="state.editTitle" @handleQuery="handleQuery">
-            </EditSchedule>
-        </div>
-    </el-card>
+	<el-card shadow="hover" header="我的日程" class="item-background">
+		<template #header>
+			<el-icon style="display: inline; vertical-align: middle"> <ele-Calendar /> </el-icon>
+			<span style=""> 我的日程 </span>
+			<el-button type="primary" icon="ele-CirclePlus" round plain @click="openAddSchedule" style="float: right">添加日程</el-button>
+		</template>
+		<div class="custome-canlendar">
+			<div class="block">
+				<div class="data-analysis">
+					<el-calendar v-model="state.calendarValue">
+						<!--选中小红点-->
+						<template #date-cell="{ data }">
+							<div @click="handleClickDate(data)">
+								<div class="spandate">{{ data.day.split('-').slice(2).join('-') }}</div>
+								<div v-for="(item, key) in state.ScheduleData" :key="key">
+									<el-badge v-if="FormatDate(data.day) == FormatDate(item.scheduleTime)" is-dot class="item"></el-badge>
+								</div>
+							</div>
+						</template>
+					</el-calendar>
+				</div>
+				<div class="schedule-list">
+					<div class="item" v-for="(item, index) in state.TodayScheduleData" :key="index" @click="openEditSchedule(item)">
+						<!-- <span class="date">{{ item.start_time + '-' + item.end_time }}</span> -->
+						<el-icon style="display: inline; vertical-align: middle"> <ele-Calendar /> </el-icon>
+						<span class="content" style="padding-left: 10px">{{ item.content }}</span>
+					</div>
+				</div>
+			</div>
+		</div>
 
+		<EditSchedule ref="editScheduleRef" :title="state.editTitle" @handleQuery="handleQuery"> </EditSchedule>
+	</el-card>
 </template>
 
 <script lang="ts">
-    export default {
-    	title: '日程',
-    	icon: 'ele-Odometer',
-    	description: '日程演示',
-    };
+export default {
+	title: '日程',
+	icon: 'ele-Odometer',
+	description: '日程演示',
+};
 </script>
 
 <script setup lang="ts">
-    import { reactive, onMounted, ref } from 'vue';
-    import { dayjs, ElMessageBox, ElNotification } from 'element-plus';
+import { reactive, onMounted, ref } from 'vue';
+import { dayjs } from 'element-plus';
 
-    import { getAPI } from '/@/utils/axios-utils';
-    import { SysUserScheduleApi } from '/@/api-services/api';
-    import { SysUserSchedule } from '/@/api-services/models';
-    import EditSchedule from '/@/views/home/widgets/components/scheduleEdit.vue';
+import EditSchedule from '/@/views/home/widgets/components/scheduleEdit.vue';
 
-    const editScheduleRef = ref<InstanceType<typeof EditSchedule>>();
+import { getAPI } from '/@/utils/axios-utils';
+import { SysScheduleApi } from '/@/api-services/api';
+import { SysSchedule } from '/@/api-services/models';
 
-    const state = reactive({
-    	ScheduleData: [] as Array<SysUserSchedule>, // 日程列表数据
-    	TodayScheduleData: [] as Array<SysUserSchedule>, // 当天列表数据
-    	calendarValue: new Date(),
-    	queryParams: {
-    		startTime: new Date(),
-    		endTime: new Date(),
-    	},
-    	editTitle: '',
-    });
+const editScheduleRef = ref<InstanceType<typeof EditSchedule>>();
+const state = reactive({
+	ScheduleData: [] as Array<SysSchedule>, // 日程列表数据
+	TodayScheduleData: [] as Array<SysSchedule>, // 当天列表数据
+	calendarValue: new Date(),
+	queryParams: {
+		startTime: new Date(),
+		endTime: new Date(),
+	},
+	editTitle: '',
+});
 
-    onMounted(async () => {
-    	handleQuery();
-    });
+// 页面初始化
+onMounted(async () => {
+	await handleQuery();
+});
 
-    // 查询操作
-    const handleQuery = async () => {
-    	debugger;
-    	state.queryParams.startTime = GetMonthFirstDay(state.calendarValue);
-    	state.queryParams.endTime = GetMonthLastDay(state.calendarValue);
+// 查询操作
+const handleQuery = async () => {
+	debugger;
+	state.queryParams.startTime = GetMonthFirstDay(state.calendarValue);
+	state.queryParams.endTime = GetMonthLastDay(state.calendarValue);
 
-    	let params = Object.assign(state.queryParams);
-    	var res = await getAPI(SysUserScheduleApi).apiSysUserSchedulePagePost(params);
-    	state.ScheduleData = res.data.result ?? [];
-    	if (state.ScheduleData.length > 0) {
-    		state.TodayScheduleData = state.ScheduleData.filter((item) => {
-    			return FormatDate(item.scheduleTime) == FormatDate(state.calendarValue);
-    		});
-    	}
-    };
-    //按天查询
-    const handleQueryByDate = async (date) => {
-    	state.queryParams.startTime = FormatDateDelHMS(date);
-    	state.queryParams.endTime = FormatDateDelHMS(date);
-    	let params = Object.assign(state.queryParams);
-    	var res = await getAPI(SysUserScheduleApi).apiSysUserSchedulePagePost(params);
-    	state.TodayScheduleData = res.data.result ?? [];
-    };
+	let params = Object.assign(state.queryParams);
+	var res = await getAPI(SysScheduleApi).apiSysSchedulePagePost(params);
+	state.ScheduleData = res.data.result ?? [];
+	if (state.ScheduleData.length > 0) {
+		state.TodayScheduleData = state.ScheduleData.filter((item) => {
+			return FormatDate(item.scheduleTime) == FormatDate(state.calendarValue);
+		});
+	}
+};
 
-    // 打开新增页面
-    const openAddSchedule = () => {
-    	state.editTitle = '添加日程';
-    	editScheduleRef.value?.openDialog({ id: undefined, status: 1, orderNo: 100 });
-    };
+// 按天查询
+const handleQueryByDate = async (date: any) => {
+	state.queryParams.startTime = FormatDateDelHMS(date);
+	state.queryParams.endTime = FormatDateDelHMS(date);
+	let params = Object.assign(state.queryParams);
+	var res = await getAPI(SysScheduleApi).apiSysSchedulePagePost(params);
+	state.TodayScheduleData = res.data.result ?? [];
+};
 
-    // 打开编辑页面
-    const openEditSchedule = async (row: any) => {
-    	state.editTitle = '编辑日程';
-    	editScheduleRef.value?.openDialog(row);
-    };
+// 打开新增页面
+const openAddSchedule = () => {
+	state.editTitle = '添加日程';
+	editScheduleRef.value?.openDialog({ id: undefined, status: 1, orderNo: 100 });
+};
 
-    // 点击日历中的日期
-    function handleClickDate(data) {
-    	handleQueryByDate(data.day);
-    }
+// 打开编辑页面
+const openEditSchedule = async (row: any) => {
+	state.editTitle = '编辑日程';
+	editScheduleRef.value?.openDialog(row);
+};
 
-    function GetMonthFirstDay(date) {
-    	var newDate = new Date(date);
-    	newDate.setDate(1);
-    	newDate.setHours(0);
-    	newDate.setMinutes(0);
-    	newDate.setSeconds(0);
-    	return newDate;
-    }
-    function GetMonthLastDay(date) {
-    	var newDate = new Date(date);
-    	newDate.setMonth(newDate.getMonth() + 1);
-    	newDate.setDate(0);
-    	newDate.setHours(0);
-    	newDate.setMinutes(0);
-    	newDate.setSeconds(0);
-    	return newDate;
-    }
-    /// 去掉时分秒的日期
-    function FormatDateDelHMS(date) {
-    	var newDate = new Date(date);
-    	newDate.setHours(0);
-    	newDate.setMinutes(0);
-    	newDate.setSeconds(0);
-    	return newDate;
-    }
-    // 格式化日期
-    function FormatDate(date) {
-    	return dayjs(date).format('YYYY-MM-DD');
-    }
-</script>
+// 点击日历中的日期
+async function handleClickDate(data: any) {
+	await handleQueryByDate(data.day);
+}
+
+function GetMonthFirstDay(date: any) {
+	var newDate = new Date(date);
+	newDate.setDate(1);
+	newDate.setHours(0);
+	newDate.setMinutes(0);
+	newDate.setSeconds(0);
+	return newDate;
+}
+
+function GetMonthLastDay(date: any) {
+	var newDate = new Date(date);
+	newDate.setMonth(newDate.getMonth() + 1);
+	newDate.setDate(0);
+	newDate.setHours(0);
+	newDate.setMinutes(0);
+	newDate.setSeconds(0);
+	return newDate;
+}
 
+// 去掉时分秒的日期
+function FormatDateDelHMS(date: any) {
+	var newDate = new Date(date);
+	newDate.setHours(0);
+	newDate.setMinutes(0);
+	newDate.setSeconds(0);
+	return newDate;
+}
+
+// 格式化日期
+function FormatDate(date: any) {
+	return dayjs(date).format('YYYY-MM-DD');
+}
+</script>
 
 <style lang="scss" scoped>
-    .custome-canlendar {
-    	background: #fff;
-    	.title {
-    		padding: 13px 8px 12px 19px;
-    		border-bottom: 1px solid #f2f2f2;
-    		font-weight: 500;
-    		color: #1a1a1a;
-    		font-size: 16px;
-    		position: relative;
+.custome-canlendar {
+	background: #fff;
+	.title {
+		padding: 13px 8px 12px 19px;
+		border-bottom: 1px solid #f2f2f2;
+		font-weight: 500;
+		color: #1a1a1a;
+		font-size: 16px;
+		position: relative;
 
-    		&:before {
-    			content: '';
-    			display: inline-block;
-    			height: calc(100% - 30px);
-    			width: 3px;
-    			margin-right: 0px;
-    			background: #c70019;
-    			/*margin-top: 10px;*/
-    			border-radius: 5px;
-    			/*margin-left: 10px;*/
-    			position: absolute;
-    			left: 10px;
-    			top: calc(50% - 7px);
-    		}
-    		.rtbtn {
-    			float: right;
-    			:deep(span) {
-    				font-size: 14px;
-    			}
-    		}
-    	}
-    }
-    .block {
-    	height: calc(100% - 10px);
-    	overflow-y: auto;
-    }
-    /*日历样式修改*/
-    .data-analysis {
-    	position: relative;
+		&:before {
+			content: '';
+			display: inline-block;
+			height: calc(100% - 30px);
+			width: 3px;
+			margin-right: 0px;
+			background: #c70019;
+			/*margin-top: 10px;*/
+			border-radius: 5px;
+			/*margin-left: 10px;*/
+			position: absolute;
+			left: 10px;
+			top: calc(50% - 7px);
+		}
+		.rtbtn {
+			float: right;
+			:deep(span) {
+				font-size: 14px;
+			}
+		}
+	}
+}
+.block {
+	height: calc(100% - 10px);
+	overflow-y: auto;
+}
+/*日历样式修改*/
+.data-analysis {
+	position: relative;
 
-    	:deep(.el-calendar) {
-    		.el-calendar-table .el-calendar-day {
-    			width: 100%;
-    			height: 100%;
-    		}
-    		.el-calendar__header {
-    			padding: 6px 10px;
-    			border: 0;
-    			justify-content: space-between;
-    			border-bottom: #666 1px solid;
-    		}
+	:deep(.el-calendar) {
+		.el-calendar-table .el-calendar-day {
+			width: 100%;
+			height: 100%;
+		}
+		.el-calendar__header {
+			padding: 6px 10px;
+			border: 0;
+			justify-content: space-between;
+			border-bottom: #666 1px solid;
+		}
 
-    		.el-calendar__button-group .el-button-group > .el-button span {
-    			font-size: 14px;
-    		}
-    		.el-calendar-table thead th {
-    			padding: 6px 0;
-    			font-weight: bold;
-    		}
+		.el-calendar__button-group .el-button-group > .el-button span {
+			font-size: 14px;
+		}
+		.el-calendar-table thead th {
+			padding: 6px 0;
+			font-weight: bold;
+		}
 
-    		.el-calendar__body {
-    			padding: 8px 0;
-    		}
+		.el-calendar__body {
+			padding: 8px 0;
+		}
 
-    		/*去掉原本背景颜色*/
-    		.el-calendar-table td:hover {
-    			background: transparent;
-    		}
-    		/*去掉选中背景颜色*/
-    		.el-calendar-table td.is-selected {
-    			background: transparent !important;
-    		}
-    		/*修改每一小格大小*/
-    		.el-calendar-table .el-calendar-day {
-    			position: relative;
-    			padding: 6px 8px;
-    			text-align: center;
-    		}
-    		.el-calendar-table .el-calendar-day:hover {
-    			background: transparent;
-    		}
+		/*去掉原本背景颜色*/
+		.el-calendar-table td:hover {
+			background: transparent;
+		}
+		/*去掉选中背景颜色*/
+		.el-calendar-table td.is-selected {
+			background: transparent !important;
+		}
+		/*修改每一小格大小*/
+		.el-calendar-table .el-calendar-day {
+			position: relative;
+			padding: 6px 8px;
+			text-align: center;
+		}
+		.el-calendar-table .el-calendar-day:hover {
+			background: transparent;
+		}
 
-    		td .spandate {
-    			margin: auto;
-    			width: 26px;
-    			height: 26px;
-    			line-height: 26px;
-    			border-radius: 50%;
-    			// @include level3_fontsize();
-    		}
-    		td.is-selected .spandate {
-    			width: 26px;
-    			height: 26px;
-    			line-height: 26px;
-    			border-radius: 50%;
-    			color: #fff;
-    			background-color: var(--el-color-primary);
-    		}
-    		/*小红点样式*/
-    		.el-badge {
-    			position: absolute;
-    			left: 0;
-    			bottom: -13px;
-    			width: 100%;
-    		}
-    		.el-badge__content {
-    			background-color: var(--el-color-primary);
+		td .spandate {
+			margin: auto;
+			width: 26px;
+			height: 26px;
+			line-height: 26px;
+			border-radius: 50%;
+			// @include level3_fontsize();
+		}
+		td.is-selected .spandate {
+			width: 26px;
+			height: 26px;
+			line-height: 26px;
+			border-radius: 50%;
+			color: #fff;
+			background-color: var(--el-color-primary);
+		}
+		/*小红点样式*/
+		.el-badge {
+			position: absolute;
+			left: 0;
+			bottom: -13px;
+			width: 100%;
+		}
+		.el-badge__content {
+			background-color: var(--el-color-primary);
 
-    			&.is-dot {
-    				width: 7px;
-    				height: 7px;
-    			}
-    		}
-    		/*日历边框颜色*/
-    		.el-calendar-table tr td:first-child,
-    		.el-calendar-table tr:first-child td,
-    		.el-calendar-table td {
-    			border: 0;
-    		}
-    	}
-    }
+			&.is-dot {
+				width: 7px;
+				height: 7px;
+			}
+		}
+		/*日历边框颜色*/
+		.el-calendar-table tr td:first-child,
+		.el-calendar-table tr:first-child td,
+		.el-calendar-table td {
+			border: 0;
+		}
+	}
+}
 
-    .schedule-list {
-    	padding: 0 20px 10px;
-    	overflow-y: auto; /* 使div可滚动 */
-    	height: 150px;
-    	.item {
-    		position: relative;
-    		margin-bottom: 5px;
-    		padding: 0 11px;
-    		line-height: 24px;
-    		background-color: #f1f1f1;
-    		cursor: pointer;
+.schedule-list {
+	padding: 0 20px 10px;
+	overflow-y: auto; /* 使div可滚动 */
+	height: 150px;
+	.item {
+		position: relative;
+		margin-bottom: 5px;
+		padding: 0 11px;
+		line-height: 24px;
+		background-color: #f1f1f1;
+		cursor: pointer;
 
-    		&::before {
-    			position: absolute;
-    			left: 0;
-    			top: 0;
-    			height: 100%;
-    			content: '';
-    			width: 3px;
-    			background: var(--el-color-primary);
-    		}
+		&::before {
+			position: absolute;
+			left: 0;
+			top: 0;
+			height: 100%;
+			content: '';
+			width: 3px;
+			background: var(--el-color-primary);
+		}
 
-    		.date {
-    			margin-right: 5px;
-    			font-size: 14px;
-    		}
-    		.content {
-    			color: #666;
-    			font-size: 14px;
-    		}
-    	}
-    }
-</style>
+		.date {
+			margin-right: 5px;
+			font-size: 14px;
+		}
+		.content {
+			color: #666;
+			font-size: 14px;
+		}
+	}
+}
+</style>

+ 79 - 83
Web/src/views/home/widgets/components/scheduleEdit.vue

@@ -1,97 +1,93 @@
 <template>
-    <div class="sys-userSchedule-container">
-        <el-dialog v-model="state.isShowDialog" draggable :close-on-click-modal="false" width="700px">
-            <template #header>
-                <div style="color: #fff">
-                    <el-icon size="16" style="margin-right: 3px; display: inline; vertical-align: middle"> <ele-Edit /> </el-icon>
-                    <span> {{ props.title }} </span>
-                </div>
-            </template>
-            <el-form :model="state.ruleForm" ref="ruleFormRef" label-width="auto">
-                <el-row :gutter="35">
-                    <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
-                        <el-form-item label="日程时间" prop="scheduleTime" :rules="[{ required: true, message: '日程时间不能为空', trigger: 'blur' }]">
-                            <el-date-picker v-model="state.ruleForm.scheduleTime" type="date" placeholder="请选择日程时间" format="YYYY-MM-DD" 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">
-                        <el-form-item label="日程内容" prop="content" :rules="[{ required: true, message: '内容内容不能为空', trigger: 'blur' }]">
-                            <el-input v-model="state.ruleForm.content" placeholder="内容内容" clearable type="textarea" />
-                        </el-form-item>
-                    </el-col>
-                </el-row>
-            </el-form>
-            <template #footer>
-                <span class="dialog-footer">
-                    <el-button @click="cancel">取 消</el-button>
-                    <el-button type="primary" @click="submit">确 定</el-button>
-                </span>
-            </template>
-        </el-dialog>
-    </div>
+	<div class="editSchedule-container">
+		<el-dialog v-model="state.isShowDialog" draggable :close-on-click-modal="false" width="700px">
+			<template #header>
+				<div style="color: #fff">
+					<el-icon size="16" style="margin-right: 3px; display: inline; vertical-align: middle"> <ele-Edit /> </el-icon>
+					<span> {{ props.title }} </span>
+				</div>
+			</template>
+			<el-form :model="state.ruleForm" ref="ruleFormRef" label-width="auto">
+				<el-row :gutter="35">
+					<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
+						<el-form-item label="日程时间" prop="scheduleTime" :rules="[{ required: true, message: '日程时间不能为空', trigger: 'blur' }]">
+							<el-date-picker v-model="state.ruleForm.scheduleTime" type="date" placeholder="请选择日程时间" format="YYYY-MM-DD" value-format="YYYY-MM-DD HH:mm:ss" class="w100" />
+						</el-form-item>
+					</el-col>
+					<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
+						<el-form-item label="日程内容" prop="content" :rules="[{ required: true, message: '内容内容不能为空', trigger: 'blur' }]">
+							<el-input v-model="state.ruleForm.content" placeholder="内容内容" clearable type="textarea" />
+						</el-form-item>
+					</el-col>
+				</el-row>
+			</el-form>
+			<template #footer>
+				<span class="dialog-footer">
+					<el-button @click="cancel">取 消</el-button>
+					<el-button type="primary" @click="submit">确 定</el-button>
+				</span>
+			</template>
+		</el-dialog>
+	</div>
 </template>
 
-<script lang="ts" setup name="sysEditUserSchedule">
-    import { onMounted, reactive, ref } from 'vue';
-    import { dayjs, ElMessageBox, ElNotification } from 'element-plus';
+<script lang="ts" setup name="editSchedule">
+import { onMounted, reactive, ref } from 'vue';
+import { dayjs, ElMessageBox, ElNotification } from 'element-plus';
 
-    import { getAPI } from '/@/utils/axios-utils';
-    import { SysUserScheduleApi } from '/@/api-services/api';
-    import { SysUserSchedule, UpdateUserScheduleInput } from '/@/api-services/models';
+import { getAPI } from '/@/utils/axios-utils';
+import { SysScheduleApi } from '/@/api-services/api';
+import { SysSchedule, UpdateScheduleInput } from '/@/api-services/models';
 
-    const props = defineProps({
-    	title: String,
-    	userScheduleData: Array<SysUserSchedule>,
-    });
-    const emits = defineEmits(['handleQuery']);
-    const ruleFormRef = ref();
-    const state = reactive({
-    	isShowDialog: false,
-    	ruleForm: {} as UpdateUserScheduleInput,
-    });
+const props = defineProps({
+	title: String,
+	userScheduleData: Array<SysSchedule>,
+});
+const emits = defineEmits(['handleQuery']);
+const ruleFormRef = ref();
+const state = reactive({
+	isShowDialog: false,
+	ruleForm: {} as any,
+});
 
-    onMounted(async () => {});
+// 页面初始化
+onMounted(async () => {});
 
-    // 打开弹窗
-    const openDialog = (row: any) => {
-    	ruleFormRef.value?.resetFields();
+// 打开弹窗
+const openDialog = (row: any) => {
+	ruleFormRef.value?.resetFields();
 
-    	state.ruleForm = JSON.parse(JSON.stringify(row));
+	state.ruleForm = JSON.parse(JSON.stringify(row));
+	state.ruleForm.scheduleTime = dayjs(state.ruleForm.scheduleTime ?? new Date()).format('YYYY-MM-DD HH:mm:ss');
+	state.isShowDialog = true;
+};
 
-    	console.log(JSON.stringify(state.ruleForm));
-    	console.log(state.ruleForm.scheduleTime);
-    	state.ruleForm.scheduleTime = dayjs(state.ruleForm.scheduleTime ?? new Date()).format('YYYY-MM-DD HH:mm:ss');
-    	state.isShowDialog = true;
-    	console.log(JSON.stringify(state.ruleForm.scheduleTime));
-    	console.log(JSON.stringify(state.ruleForm));
-    };
+// 关闭弹窗
+const closeDialog = () => {
+	emits('handleQuery', true);
+	state.isShowDialog = false;
+};
 
-    // 关闭弹窗
-    const closeDialog = () => {
-    	emits('handleQuery', true);
-    	state.isShowDialog = false;
-    };
+// 取消
+const cancel = () => {
+	state.isShowDialog = false;
+};
 
-    // 取消
-    const cancel = () => {
-    	state.isShowDialog = false;
-    };
+// 提交
+const submit = () => {
+	console.log(JSON.stringify(state.ruleForm));
 
-    // 提交
-    const submit = () => {
-    	console.log(JSON.stringify(state.ruleForm));
+	ruleFormRef.value.validate(async (valid: boolean) => {
+		if (!valid) return;
+		if (state.ruleForm.id != undefined && state.ruleForm.id > 0) {
+			await getAPI(SysScheduleApi).apiSysScheduleUpdatePost(state.ruleForm);
+		} else {
+			await getAPI(SysScheduleApi).apiSysScheduleAddPost(state.ruleForm);
+		}
+		closeDialog();
+	});
+};
 
-    	ruleFormRef.value.validate(async (valid: boolean) => {
-    		if (!valid) return;
-    		if (state.ruleForm.id != undefined && state.ruleForm.id > 0) {
-    			await getAPI(SysUserScheduleApi).apiSysUserScheduleUpdatePost(state.ruleForm);
-    		} else {
-    			await getAPI(SysUserScheduleApi).apiSysUserScheduleAddPost(state.ruleForm);
-    		}
-    		closeDialog();
-    	});
-    };
-
-    // 导出对象
-    defineExpose({ openDialog });
+// 导出对象
+defineExpose({ openDialog });
 </script>

+ 1 - 1
Web/src/views/home/widgets/components/timeing.vue → Web/src/views/home/widgets/components/timer.vue

@@ -19,7 +19,7 @@ export default {
 };
 </script>
 
-<script setup lang="ts" name="timeing">
+<script setup lang="ts" name="timer">
 import { formatDate } from '/@/utils/formatTime';
 import { ref, onMounted, onUnmounted } from 'vue';
 const time = ref<string>('');

+ 5 - 5
Web/src/views/home/widgets/components/ver.vue → Web/src/views/home/widgets/components/version.vue

@@ -7,7 +7,7 @@
 		<div style="height: 210px; text-align: center">
 			<img :src="verSvg" style="height: 140px" />
 			<h2 style="margin-top: 15px">Admin.NET</h2>
-			<p style="margin-top: 5px">最新版本 {{ ver }}</p>
+			<p style="margin-top: 5px">最新版本 {{ version }}</p>
 		</div>
 		<div style="margin-top: 20px">
 			<el-button type="primary" plain round @click="golog">更新日志</el-button>
@@ -24,18 +24,18 @@ export default {
 };
 </script>
 
-<script setup lang="ts" name="ver">
+<script setup lang="ts" name="version">
 import { ref, onMounted } from 'vue';
 import verSvg from '/@/assets/img/ver.svg';
 
-const ver = ref<string>('loading...');
+const version = ref<string>('loading...');
 
 onMounted(() => {
-	ver.value = 'v2.0.0';
+	version.value = 'v2.0.0';
 });
 
 const getVer = () => {
-	ver.value = 'v2.0.0';
+	version.value = 'v2.0.0';
 };
 
 const golog = () => {

+ 465 - 456
Web/src/views/home/widgets/index.vue

@@ -1,488 +1,497 @@
 <template>
-    <div :class="['widgets-home', customizing ? 'customizing' : '']" ref="main">
-        <div class="widgets-content">
-            <div class="widgets-top">
-                <div class="widgets-top-title">控制台</div>
-                <div class="widgets-top-actions">
-                    <el-button v-if="customizing" type="primary" icon="ele-Check" round @click="save">完成</el-button>
-                    <el-button v-else type="primary" icon="ele-Edit" round @click="custom">自定义</el-button>
-                </div>
-            </div>
-            <div class="widgets" ref="widgetsRef">
-                <div class="widgets-wrapper">
-                    <div v-if="nowCompsList.length <= 0" class="no-widgets">
-                        <el-empty description="没有部件啦" :image-size="300"></el-empty>
-                    </div>
-                    <el-row :gutter="15">
-                        <el-col v-for="(item, index) in grid.layout" :key="index" :md="item" :xs="24">
-                            <draggable v-model="grid.copmsList[index]" animation="200" handle=".customize-overlay" group="people" item-key="com" drag-class="aaaaa" force-fallback fallback-on-body class="draggable-box">
-                                <template #item="{ element }">
-                                    <div class="widgets-item mb15">
-                                        <component :is="allComps[element]"></component>
-                                        <div v-if="customizing" class="customize-overlay">
-                                            <el-button class="close" type="danger" plain icon="ele-Close" @click="remove(element)"></el-button>
-                                            <label>
-                                                <el-icon>
-                                                    <component :is="allComps[element].icon" />
-                                                </el-icon>{{ allComps[element].title }}
-                                            </label>
-                                        </div>
-                                    </div>
-                                </template>
-                            </draggable>
-                        </el-col>
-                    </el-row>
-                </div>
-            </div>
-        </div>
-        <div v-if="customizing" class="widgets-aside">
-            <div class="widgets-top">
-                <div class="widgets-aside-title">
-                    <el-icon><ele-CirclePlusFilled /></el-icon>添加部件
-                </div>
-                <div class="widgets-top-actions">
-                    <div class="widgets-aside-close" @click="close">
-                        <el-icon><ele-Close /></el-icon>
-                    </div>
-                </div>
-            </div>
-            <el-container>
-                <el-header style="height: auto">
-                    <div class="selectLayout">
-                        <div class="selectLayout-item item01" :class="{ active: grid.layout.join(',') === '12,6,6' }" @click="setLayout([12, 6, 6])">
-                            <el-row :gutter="2">
-                                <el-col :span="12"><span></span></el-col>
-                                <el-col :span="6"><span></span></el-col>
-                                <el-col :span="6"><span></span></el-col>
-                            </el-row>
-                        </div>
-                        <div class="selectLayout-item item02" :class="{ active: grid.layout.join(',') === '24,16,8' }" @click="setLayout([24, 16, 8])">
-                            <el-row :gutter="2">
-                                <el-col :span="24"><span></span></el-col>
-                                <el-col :span="16"><span></span></el-col>
-                                <el-col :span="8"><span></span></el-col>
-                            </el-row>
-                        </div>
-                        <div class="selectLayout-item item03" :class="{ active: grid.layout.join(',') === '24' }" @click="setLayout([24])">
-                            <el-row :gutter="2">
-                                <el-col :span="24"><span></span></el-col>
-                                <el-col :span="24"><span></span></el-col>
-                                <el-col :span="24"><span></span></el-col>
-                            </el-row>
-                        </div>
-                        <div class="selectLayout-item item01" :class="{ active: grid.layout.join(',') === '6,12,6' }" @click="setLayout([6, 12, 6])">
-                            <el-row :gutter="2">
-                                <el-col :span="6"><span></span></el-col>
-                                <el-col :span="12"><span></span></el-col>
-                                <el-col :span="6"><span></span></el-col>
-                            </el-row>
-                        </div>
-                        <div class="selectLayout-item item02" :class="{ active: grid.layout.join(',') === '24,6,12,6' }" @click="setLayout([24, 6, 12, 6])">
-                            <el-row :gutter="2">
-                                <el-col :span="24"><span></span></el-col>
-                                <el-col :span="6"><span></span></el-col>
-                                <el-col :span="12"><span></span></el-col>
-                                <el-col :span="6"><span></span></el-col>
-                            </el-row>
-                        </div>
-                        <div class="selectLayout-item item05" :class="{ active: grid.layout.join(',') === '24,6,12,6,24' }" @click="setLayout([24, 6, 12, 6, 24])">
-                            <el-row :gutter="2">
-                                <el-col :span="24"><span></span></el-col>
-                                <el-col :span="6"><span></span></el-col>
-                                <el-col :span="12"><span></span></el-col>
-                                <el-col :span="6"><span></span></el-col>
-                                <el-col :span="24"><span></span></el-col>
-                            </el-row>
-                        </div>
-                    </div>
-                </el-header>
-                <el-main class="nopadding">
-                    <div class="widgets-list">
-                        <div v-if="myCompsList.length <= 0" class="widgets-list-nodata">
-                            <el-empty description="没有部件啦" :image-size="60"></el-empty>
-                        </div>
-                        <div v-for="item in myCompsList" :key="item.title" class="widgets-list-item">
-                            <div class="item-logo">
-                                <el-icon>
-                                    <component :is="item.icon" />
-                                </el-icon>
-                            </div>
-                            <div class="item-info">
-                                <h2>{{ item.title }}</h2>
-                                <p>{{ item.description }}</p>
-                            </div>
-                            <div class="item-actions">
-                                <el-button type="primary" icon="ele-Plus" @click="push(item)"></el-button>
-                            </div>
-                        </div>
-                    </div>
-                </el-main>
-                <el-footer style="height: 51px">
-                    <el-button @click="backDefault">恢复默认</el-button>
-                </el-footer>
-            </el-container>
-        </div>
-    </div>
+	<div :class="['widgets-home', customizing ? 'customizing' : '']" ref="main">
+		<div class="widgets-content">
+			<div class="widgets-top">
+				<div class="widgets-top-title">控制台</div>
+				<div class="widgets-top-actions">
+					<el-button v-if="customizing" type="primary" icon="ele-Check" round @click="save">完成</el-button>
+					<el-button v-else type="primary" icon="ele-Edit" round @click="custom">自定义</el-button>
+				</div>
+			</div>
+			<div class="widgets" ref="widgetsRef">
+				<div class="widgets-wrapper">
+					<div v-if="nowCompsList.length <= 0" class="no-widgets">
+						<el-empty description="没有部件啦" :image-size="300"></el-empty>
+					</div>
+					<el-row :gutter="8">
+						<el-col v-for="(item, index) in grid.layout" :key="index" :md="item" :xs="24">
+							<draggable
+								v-model="grid.copmsList[index]"
+								animation="200"
+								handle=".customize-overlay"
+								group="people"
+								item-key="com"
+								drag-class="aaaaa"
+								force-fallback
+								fallback-on-body
+								class="draggable-box"
+							>
+								<template #item="{ element }">
+									<div class="widgets-item mb8">
+										<component :is="allComps[element]"></component>
+										<div v-if="customizing" class="customize-overlay">
+											<el-button class="close" type="danger" plain icon="ele-Close" @click="remove(element)"></el-button>
+											<label>
+												<el-icon> <component :is="allComps[element].icon" /> </el-icon>{{ allComps[element].title }}
+											</label>
+										</div>
+									</div>
+								</template>
+							</draggable>
+						</el-col>
+					</el-row>
+				</div>
+			</div>
+		</div>
+		
+		<div v-if="customizing" class="widgets-aside">
+			<div class="widgets-top">
+				<div class="widgets-aside-title">
+					<el-icon><ele-CirclePlusFilled /></el-icon>添加部件
+				</div>
+				<div class="widgets-top-actions">
+					<div class="widgets-aside-close" @click="close">
+						<el-icon><ele-Close /></el-icon>
+					</div>
+				</div>
+			</div>
+			<el-container>
+				<el-header style="height: auto">
+					<div class="selectLayout">
+						<div class="selectLayout-item item01" :class="{ active: grid.layout.join(',') === '12,6,6' }" @click="setLayout([12, 6, 6])">
+							<el-row :gutter="2">
+								<el-col :span="12"><span></span></el-col>
+								<el-col :span="6"><span></span></el-col>
+								<el-col :span="6"><span></span></el-col>
+							</el-row>
+						</div>
+						<div class="selectLayout-item item02" :class="{ active: grid.layout.join(',') === '24,16,8' }" @click="setLayout([24, 16, 8])">
+							<el-row :gutter="2">
+								<el-col :span="24"><span></span></el-col>
+								<el-col :span="16"><span></span></el-col>
+								<el-col :span="8"><span></span></el-col>
+							</el-row>
+						</div>
+						<div class="selectLayout-item item03" :class="{ active: grid.layout.join(',') === '24' }" @click="setLayout([24])">
+							<el-row :gutter="2">
+								<el-col :span="24"><span></span></el-col>
+								<el-col :span="24"><span></span></el-col>
+								<el-col :span="24"><span></span></el-col>
+							</el-row>
+						</div>
+						<div class="selectLayout-item item01" :class="{ active: grid.layout.join(',') === '6,12,6' }" @click="setLayout([6, 12, 6])">
+							<el-row :gutter="2">
+								<el-col :span="6"><span></span></el-col>
+								<el-col :span="12"><span></span></el-col>
+								<el-col :span="6"><span></span></el-col>
+							</el-row>
+						</div>
+						<div class="selectLayout-item item02" :class="{ active: grid.layout.join(',') === '24,6,12,6' }" @click="setLayout([24, 6, 12, 6])">
+							<el-row :gutter="2">
+								<el-col :span="24"><span></span></el-col>
+								<el-col :span="6"><span></span></el-col>
+								<el-col :span="12"><span></span></el-col>
+								<el-col :span="6"><span></span></el-col>
+							</el-row>
+						</div>
+						<div class="selectLayout-item item05" :class="{ active: grid.layout.join(',') === '24,6,12,6,24' }" @click="setLayout([24, 6, 12, 6, 24])">
+							<el-row :gutter="2">
+								<el-col :span="24"><span></span></el-col>
+								<el-col :span="6"><span></span></el-col>
+								<el-col :span="12"><span></span></el-col>
+								<el-col :span="6"><span></span></el-col>
+								<el-col :span="24"><span></span></el-col>
+							</el-row>
+						</div>
+					</div>
+				</el-header>
+				<el-main class="nopadding">
+					<div class="widgets-list">
+						<div v-if="myCompsList.length <= 0" class="widgets-list-nodata">
+							<el-empty description="没有部件啦" :image-size="60"></el-empty>
+						</div>
+						<div v-for="item in myCompsList" :key="item.title" class="widgets-list-item">
+							<div class="item-logo">
+								<el-icon>
+									<component :is="item.icon" />
+								</el-icon>
+							</div>
+							<div class="item-info">
+								<h2>{{ item.title }}</h2>
+								<p>{{ item.description }}</p>
+							</div>
+							<div class="item-actions">
+								<el-button type="primary" icon="ele-Plus" @click="push(item)"></el-button>
+							</div>
+						</div>
+					</div>
+				</el-main>
+				<el-footer style="height: 51px">
+					<el-button @click="backDefault">恢复默认</el-button>
+				</el-footer>
+			</el-container>
+		</div>
+	</div>
 </template>
 
 <script setup lang="ts">
-    import { ref, reactive, computed, onMounted, nextTick } from 'vue';
-    import draggable from 'vuedraggable';
-    import { clone } from '/@/utils/arrayOperation';
-    import allComps from './components/index';
-    import { Local } from '/@/utils/storage';
+import { ref, computed, onMounted, nextTick } from 'vue';
+import draggable from 'vuedraggable';
+import { clone } from '/@/utils/arrayOperation';
+import allComps from './components/index';
+import { Local } from '/@/utils/storage';
 
-    interface Grid {
-    	layout: number[];
-    	copmsList: string[][];
-    }
-    const defaultGrid = {
-    	layout: [12, 6, 6],
-    	copmsList: [
-    		['welcome', 'commit'],
-    		['about', 'ver'],
-    		['timeing', 'progressing'],
-    	],
-    };
+interface Grid {
+	layout: number[];
+	copmsList: string[][];
+}
+const defaultGrid = {
+	layout: [12, 6, 6],
+	copmsList: [
+		['welcome', 'commit'],
+		['about', 'version'],
+		['timer', 'schedule'],
+	],
+};
 
-    const customizing = ref<boolean>(false);
-    const allCompsList = ref(allComps);
-    const widgetsRef = ref<HTMLElement | null>(null);
-    const grid = ref<Grid>(clone(defaultGrid));
+const customizing = ref<boolean>(false);
+const allCompsList = ref(allComps);
+const widgetsRef = ref<HTMLElement | null>(null);
+const grid = ref<Grid>(clone(defaultGrid));
 
-    onMounted(() => {
-    	const savedGrid = Local.get('grid');
-    	if (savedGrid) {
-    		grid.value = savedGrid;
-    	}
-    });
+onMounted(() => {
+	const savedGrid = Local.get('grid');
+	if (savedGrid) {
+		grid.value = savedGrid;
+	}
+});
 
-    const availableCompsList = computed(() => {
-    	const compsList = [];
-    	for (const key in allCompsList.value) {
-    		const comp = allCompsList.value[key];
-    		compsList.push({
-    			key,
-    			title: comp.title,
-    			icon: comp.icon,
-    			description: comp.description,
-    		});
-    	}
-    	const activeComps = grid.value.copmsList.flat();
-    	return compsList.map((comp) => ({
-    		...comp,
-    		disabled: activeComps.includes(comp.key),
-    	}));
-    });
+const availableCompsList = computed(() => {
+	const compsList = [];
+	for (const key in allCompsList.value) {
+		const comp = allCompsList.value[key];
+		compsList.push({
+			key,
+			title: comp.title,
+			icon: comp.icon,
+			description: comp.description,
+		});
+	}
+	const activeComps = grid.value.copmsList.flat();
+	return compsList.map((comp) => ({
+		...comp,
+		disabled: activeComps.includes(comp.key),
+	}));
+});
 
-    const myCompsList = computed(() => {
-    	const myGrid = Local.get('DASHBOARDGRID') || ['welcome', 'myapp', 'ver', 'timeing', 'progressing', 'echarts', 'about', 'commit', 'schedule'];
-    	return availableCompsList.value.filter((comp) => !comp.disabled && myGrid.includes(comp.key));
-    });
+const myCompsList = computed(() => {
+	const myGrid = Local.get('DASHBOARDGRID') || ['welcome', 'myapp', 'version', 'timer', 'echarts', 'about', 'commit', 'schedule'];
+	return availableCompsList.value.filter((comp) => !comp.disabled && myGrid.includes(comp.key));
+});
 
-    const nowCompsList = computed(() => grid.value.copmsList.flat());
+const nowCompsList = computed(() => grid.value.copmsList.flat());
 
-    // 开启自定义
-    const custom = () => {
-    	customizing.value = true;
-    	const oldWidth = widgetsRef.value?.offsetWidth || 0;
-    	nextTick(() => {
-    		if (widgetsRef.value) {
-    			const scale = widgetsRef.value.offsetWidth / oldWidth;
-    			widgetsRef.value.style.setProperty('transform', `scale(${scale})`);
-    		}
-    	});
-    };
+// 开启自定义
+const custom = () => {
+	customizing.value = true;
+	const oldWidth = widgetsRef.value?.offsetWidth || 0;
+	nextTick(() => {
+		if (widgetsRef.value) {
+			const scale = widgetsRef.value.offsetWidth / oldWidth;
+			widgetsRef.value.style.setProperty('transform', `scale(${scale})`);
+		}
+	});
+};
 
-    // 设置布局
-    const setLayout = (layout: number[]) => {
-    	grid.value.layout = layout;
-    	const diff = grid.value.layout.length - grid.value.copmsList.length;
-    	if (diff < 0) {
-    		grid.value.copmsList = [...grid.value.copmsList.slice(0, grid.value.layout.length - 1), grid.value.copmsList.slice(grid.value.layout.length - 1).flat()];
-    	} else if (diff > 0) {
-    		grid.value.copmsList = grid.value.copmsList.concat(Array.from({ length: diff }, () => []));
-    	}
-    };
+// 设置布局
+const setLayout = (layout: number[]) => {
+	grid.value.layout = layout;
+	const diff = grid.value.layout.length - grid.value.copmsList.length;
+	if (diff < 0) {
+		grid.value.copmsList = [...grid.value.copmsList.slice(0, grid.value.layout.length - 1), grid.value.copmsList.slice(grid.value.layout.length - 1).flat()];
+	} else if (diff > 0) {
+		grid.value.copmsList = grid.value.copmsList.concat(Array.from({ length: diff }, () => []));
+	}
+};
 
-    // 追加
-    const push = (item: any) => {
-    	grid.value.copmsList[0].push(item.key);
-    };
+// 追加
+const push = (item: any) => {
+	grid.value.copmsList[0].push(item.key);
+};
 
-    // 隐藏组件
-    const remove = (item: string) => {
-    	grid.value.copmsList = grid.value.copmsList.map((list) => list.filter((comp) => comp !== item));
-    };
+// 隐藏组件
+const remove = (item: string) => {
+	grid.value.copmsList = grid.value.copmsList.map((list) => list.filter((comp) => comp !== item));
+};
 
-    // 保存
-    const save = () => {
-    	customizing.value = false;
-    	widgetsRef.value?.style.removeProperty('transform');
-    	Local.set('grid', grid.value);
-    };
+// 保存
+const save = () => {
+	customizing.value = false;
+	widgetsRef.value?.style.removeProperty('transform');
+	Local.set('grid', grid.value);
+};
 
-    // 恢复默认
-    const backDefault = () => {
-    	customizing.value = false;
-    	widgetsRef.value?.style.removeProperty('transform');
-    	grid.value = clone(defaultGrid);
-    	Local.remove('grid');
-    };
+// 恢复默认
+const backDefault = () => {
+	customizing.value = false;
+	widgetsRef.value?.style.removeProperty('transform');
+	grid.value = clone(defaultGrid);
+	Local.remove('grid');
+};
 
-    // 关闭
-    const close = () => {
-    	customizing.value = false;
-    	widgetsRef.value?.style.removeProperty('transform');
-    	grid.value = Local.get('grid') ? Local.get('grid') : defaultGrid;
-    };
+// 关闭
+const close = () => {
+	customizing.value = false;
+	widgetsRef.value?.style.removeProperty('transform');
+	grid.value = Local.get('grid') ? Local.get('grid') : defaultGrid;
+};
 </script>
 
 <style scoped lang="scss">
-    .widgets-home {
-    	display: flex;
-    	flex-direction: row;
-    	flex: 1;
-    	height: 100%;
-    }
-    .widgets-content {
-    	flex: 1;
-    	overflow: auto;
-    	overflow-x: hidden;
-    	padding: 10px;
-    }
-    .widgets-aside {
-    	width: 360px;
-    	background: #fff;
-    	box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
-    	position: relative;
-    	overflow: auto;
-    	padding-top: 20px;
-    }
-    .widgets-aside-title {
-    	margin-top: 10px;
-    	margin-left: 10px;
-    	font-size: 14px;
-    	display: flex;
-    	align-items: center;
-    	justify-content: center;
-    }
-    .widgets-aside-title i {
-    	margin-right: 10px;
-    	font-size: 18px;
-    }
-    .widgets-aside-close {
-    	font-size: 18px;
-    	width: 30px;
-    	height: 30px;
-    	display: flex;
-    	align-items: center;
-    	justify-content: center;
-    	border-radius: 3px;
-    	cursor: pointer;
-    }
-    .widgets-aside-close:hover {
-    	background: rgba(180, 180, 180, 0.1);
-    }
+.widgets-home {
+	display: flex;
+	flex-direction: row;
+	flex: 1;
+	height: 100%;
+}
+.widgets-content {
+	flex: 1;
+	overflow: auto;
+	overflow-x: hidden;
+	padding: 4px;
+}
+.widgets-aside {
+	width: 360px;
+	background: #fff;
+	box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
+	position: relative;
+	overflow: auto;
+	padding-top: 20px;
+}
+.widgets-aside-title {
+	margin-top: 10px;
+	margin-left: 10px;
+	font-size: 14px;
+	display: flex;
+	align-items: center;
+	justify-content: center;
+}
+.widgets-aside-title i {
+	margin-right: 10px;
+	font-size: 18px;
+}
+.widgets-aside-close {
+	font-size: 18px;
+	width: 30px;
+	height: 30px;
+	display: flex;
+	align-items: center;
+	justify-content: center;
+	border-radius: 3px;
+	cursor: pointer;
+}
+.widgets-aside-close:hover {
+	background: rgba(180, 180, 180, 0.1);
+}
 
-    .widgets-top {
-    	margin-bottom: 15px;
-    	display: flex;
-    	justify-content: space-between;
-    	align-items: center;
-    }
-    .widgets-top-title {
-    	// font-size: 18px;
-    	// font-weight: bold;
-    	color: #999;
-    }
+.widgets-top {
+	margin-bottom: 8px;
+	display: flex;
+	justify-content: space-between;
+	align-items: center;
+}
+.widgets-top-title {
+	// font-size: 18px;
+	// font-weight: bold;
+	color: #999;
+}
 
-    .widgets {
-    	transform-origin: top left;
-    	transition: transform 0.15s;
-    }
+.widgets {
+	transform-origin: top left;
+	transition: transform 0.15s;
+}
 
-    .draggable-box {
-    	height: 100%;
-    }
+.draggable-box {
+	height: 100%;
+}
 
-    .customizing .widgets-wrapper {
-    	margin-right: -360px;
-    }
-    .customizing .widgets-wrapper .el-col {
-    	padding-bottom: 15px;
-    }
-    .customizing .widgets-wrapper .draggable-box {
-    	border: 1px dashed var(--el-color-primary);
-    	padding: 15px;
-    }
-    .customizing .widgets-wrapper .no-widgets {
-    	display: none;
-    }
-    .customizing .widgets-item {
-    	position: relative;
-    }
+.customizing .widgets-wrapper {
+	margin-right: -360px;
+}
+.customizing .widgets-wrapper .el-col {
+	padding-bottom: 15px;
+}
+.customizing .widgets-wrapper .draggable-box {
+	border: 1px dashed var(--el-color-primary);
+	padding: 15px;
+}
+.customizing .widgets-wrapper .no-widgets {
+	display: none;
+}
+.customizing .widgets-item {
+	position: relative;
+}
 
-    .customize-overlay {
-    	position: absolute;
-    	top: 0;
-    	right: 0;
-    	bottom: 0;
-    	left: 0;
-    	z-index: 1;
-    	display: flex;
-    	flex-direction: column;
-    	align-items: center;
-    	justify-content: center;
-    	background: rgba(255, 255, 255, 0.9);
-    	cursor: move;
-    }
-    .customize-overlay label {
-    	background: var(--el-color-primary);
-    	color: #fff;
-    	height: 40px;
-    	padding: 0 30px;
-    	border-radius: 40px;
-    	font-size: 18px;
-    	display: flex;
-    	align-items: center;
-    	justify-content: center;
-    	cursor: move;
-    }
-    .customize-overlay label i {
-    	margin-right: 15px;
-    	font-size: 24px;
-    }
-    .customize-overlay .close {
-    	position: absolute;
-    	padding-right: 6px;
-    	width: 30px;
-    	height: 30px;
-    	top: 15px;
-    	right: 15px;
-    }
-    .customize-overlay .close:focus,
-    .customize-overlay .close:hover {
-    	background: var(--el-button-hover-color);
-    }
+.customize-overlay {
+	position: absolute;
+	top: 0;
+	right: 0;
+	bottom: 0;
+	left: 0;
+	z-index: 1;
+	display: flex;
+	flex-direction: column;
+	align-items: center;
+	justify-content: center;
+	background: rgba(255, 255, 255, 0.9);
+	cursor: move;
+}
+.customize-overlay label {
+	background: var(--el-color-primary);
+	color: #fff;
+	height: 40px;
+	padding: 0 30px;
+	border-radius: 40px;
+	font-size: 18px;
+	display: flex;
+	align-items: center;
+	justify-content: center;
+	cursor: move;
+}
+.customize-overlay label i {
+	margin-right: 15px;
+	font-size: 24px;
+}
+.customize-overlay .close {
+	position: absolute;
+	padding-right: 6px;
+	width: 30px;
+	height: 30px;
+	top: 15px;
+	right: 15px;
+}
+.customize-overlay .close:focus,
+.customize-overlay .close:hover {
+	background: var(--el-button-hover-color);
+}
 
-    .widgets-list-item {
-    	display: flex;
-    	flex-direction: row;
-    	padding: 15px;
-    	align-items: center;
-    }
-    .widgets-list-item .item-logo {
-    	width: 40px;
-    	height: 40px;
-    	border-radius: 50%;
-    	background: rgba(180, 180, 180, 0.1);
-    	display: flex;
-    	align-items: center;
-    	justify-content: center;
-    	font-size: 18px;
-    	margin-right: 15px;
-    	color: #6a8bad;
-    }
-    .widgets-list-item .item-info {
-    	flex: 1;
-    }
-    .widgets-list-item .item-info h2 {
-    	font-size: 16px;
-    	font-weight: normal;
-    	cursor: default;
-    }
-    .widgets-list-item .item-info p {
-    	font-size: 12px;
-    	color: #999;
-    	cursor: default;
-    }
-    .widgets-list-item:hover {
-    	background: rgba(180, 180, 180, 0.1);
-    }
+.widgets-list-item {
+	display: flex;
+	flex-direction: row;
+	padding: 15px;
+	align-items: center;
+}
+.widgets-list-item .item-logo {
+	width: 40px;
+	height: 40px;
+	border-radius: 50%;
+	background: rgba(180, 180, 180, 0.1);
+	display: flex;
+	align-items: center;
+	justify-content: center;
+	font-size: 18px;
+	margin-right: 15px;
+	color: #6a8bad;
+}
+.widgets-list-item .item-info {
+	flex: 1;
+}
+.widgets-list-item .item-info h2 {
+	font-size: 16px;
+	font-weight: normal;
+	cursor: default;
+}
+.widgets-list-item .item-info p {
+	font-size: 12px;
+	color: #999;
+	cursor: default;
+}
+.widgets-list-item:hover {
+	background: rgba(180, 180, 180, 0.1);
+}
 
-    .widgets-wrapper .sortable-ghost {
-    	opacity: 0.5;
-    }
+.widgets-wrapper .sortable-ghost {
+	opacity: 0.5;
+}
 
-    .layout-list {
-    	height: 120px;
-    }
+.layout-list {
+	height: 120px;
+}
 
-    .selectLayout {
-    	width: 100%;
-    	height: auto;
-    	display: flex;
-    	flex-wrap: wrap;
-    }
-    .selectLayout-item {
-    	margin: 5px;
-    	width: 60px;
-    	height: 60px;
-    	border: 2px solid var(--el-border-color-light);
-    	padding: 5px;
-    	cursor: pointer;
-    	margin-right: 15px;
-    }
-    .selectLayout-item span {
-    	display: block;
-    	background: var(--el-border-color-light);
-    	height: 46px;
-    }
-    .selectLayout-item.item02 span {
-    	height: 30px;
-    }
-    .selectLayout-item.item02 .el-col:nth-child(1) span {
-    	height: 14px;
-    	margin-bottom: 2px;
-    }
-    .selectLayout-item.item03 span {
-    	height: 14px;
-    	margin-bottom: 2px;
-    }
-    .selectLayout-item.item05 span {
-    	height: 15px;
-    }
-    .selectLayout-item.item05 .el-col:first-child span {
-    	height: 14px;
-    	margin-bottom: 2px;
-    }
-    .selectLayout-item.item05 .el-col:last-child span {
-    	height: 14px;
-    	margin-top: 2px;
-    }
-    .selectLayout-item:hover {
-    	border-color: var(--el-color-primary);
-    }
-    .selectLayout-item.active {
-    	border-color: var(--el-color-primary);
-    }
-    .selectLayout-item.active span {
-    	background: var(--el-color-primary);
-    }
+.selectLayout {
+	width: 100%;
+	height: auto;
+	display: flex;
+	flex-wrap: wrap;
+}
+.selectLayout-item {
+	margin: 5px;
+	width: 60px;
+	height: 60px;
+	border: 2px solid var(--el-border-color-light);
+	padding: 5px;
+	cursor: pointer;
+	margin-right: 15px;
+}
+.selectLayout-item span {
+	display: block;
+	background: var(--el-border-color-light);
+	height: 46px;
+}
+.selectLayout-item.item02 span {
+	height: 30px;
+}
+.selectLayout-item.item02 .el-col:nth-child(1) span {
+	height: 14px;
+	margin-bottom: 2px;
+}
+.selectLayout-item.item03 span {
+	height: 14px;
+	margin-bottom: 2px;
+}
+.selectLayout-item.item05 span {
+	height: 15px;
+}
+.selectLayout-item.item05 .el-col:first-child span {
+	height: 14px;
+	margin-bottom: 2px;
+}
+.selectLayout-item.item05 .el-col:last-child span {
+	height: 14px;
+	margin-top: 2px;
+}
+.selectLayout-item:hover {
+	border-color: var(--el-color-primary);
+}
+.selectLayout-item.active {
+	border-color: var(--el-color-primary);
+}
+.selectLayout-item.active span {
+	background: var(--el-color-primary);
+}
 
-    .dark {
-    	.widgets-aside {
-    		background: #2b2b2b;
-    	}
-    	.customize-overlay {
-    		background: rgba(43, 43, 43, 0.9);
-    	}
-    }
+.dark {
+	.widgets-aside {
+		background: #2b2b2b;
+	}
+	.customize-overlay {
+		background: rgba(43, 43, 43, 0.9);
+	}
+}
 
-    @media (max-width: 992px) {
-    	.customizing .widgets {
-    		transform: scale(1) !important;
-    	}
-    	.customizing .widgets-aside {
-    		width: 100%;
-    		position: absolute;
-    		top: 50%;
-    		right: 0;
-    		bottom: 0;
-    	}
-    	.customizing .widgets-wrapper {
-    		margin-right: 0;
-    	}
-    }
+@media (max-width: 992px) {
+	.customizing .widgets {
+		transform: scale(1) !important;
+	}
+	.customizing .widgets-aside {
+		width: 100%;
+		position: absolute;
+		top: 50%;
+		right: 0;
+		bottom: 0;
+	}
+	.customizing .widgets-wrapper {
+		margin-right: 0;
+	}
+}
 </style>