😎增加系统更新日志管理及显示
This commit is contained in:
parent
56fc8ce049
commit
c0b590a5ec
@ -3,8 +3,6 @@
|
||||
|
||||
// Lazy.Captcha.Core 组件详细文档(https://api.gitee.com/pojianbing/lazy-captcha/)
|
||||
"CaptchaOptions": {
|
||||
"CacheType": "Memory", // Memory、Redis
|
||||
"RedisCacheString": "127.0.0.1:6379,password=, defaultDatabase=2", // Redis连接字符串
|
||||
"CaptchaType": 10, // 验证码类型0、1、2、3、4、5、6、7、8、9、10、11
|
||||
"CodeLength": 1, // 验证码长度, 要放在CaptchaType设置后 当类型为算术表达式时,长度代表操作的个数, 例如2
|
||||
"ExpirySeconds": 60, // 验证码过期秒数
|
||||
|
||||
@ -46,7 +46,7 @@
|
||||
<PackageReference Include="SSH.NET" Version="2024.2.0" />
|
||||
<PackageReference Include="System.Linq.Dynamic.Core" Version="1.5.1" />
|
||||
<PackageReference Include="System.Net.Http" Version="4.3.4" />
|
||||
<PackageReference Include="TencentCloudSDK.Sms" Version="3.0.1145" />
|
||||
<PackageReference Include="TencentCloudSDK.Sms" Version="3.0.1146" />
|
||||
<PackageReference Include="UAParser" Version="3.1.47" />
|
||||
<PackageReference Include="Yitter.IdGenerator" Version="1.0.14" />
|
||||
</ItemGroup>
|
||||
|
||||
@ -116,6 +116,11 @@ public class ConfigConst
|
||||
/// </summary>
|
||||
public const string SysPasswordRecord = "sys_password_record";
|
||||
|
||||
/// <summary>
|
||||
/// 显示系统更新日志
|
||||
/// </summary>
|
||||
public const string SysUpgrade = "sys_upgrade";
|
||||
|
||||
/// <summary>
|
||||
/// Default 分组
|
||||
/// </summary>
|
||||
|
||||
23
Admin.NET/Admin.NET.Core/Entity/SysUpgrade.cs
Normal file
23
Admin.NET/Admin.NET.Core/Entity/SysUpgrade.cs
Normal file
@ -0,0 +1,23 @@
|
||||
// Admin.NET 项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。
|
||||
//
|
||||
// 本项目主要遵循 MIT 许可证和 Apache 许可证(版本 2.0)进行分发和使用。许可证位于源代码树根目录中的 LICENSE-MIT 和 LICENSE-APACHE 文件。
|
||||
//
|
||||
// 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!
|
||||
|
||||
namespace Admin.NET.Core;
|
||||
|
||||
/// <summary>
|
||||
/// 系统更新日志表
|
||||
/// </summary>
|
||||
[SugarTable(null, "系统更新日志表")]
|
||||
[SysTable]
|
||||
public partial class SysUpgrade : EntityBase
|
||||
{
|
||||
/// <summary>
|
||||
/// 内容
|
||||
/// </summary>
|
||||
[SugarColumn(ColumnDescription = "内容", ColumnDataType = StaticConfig.CodeFirst_BigString)]
|
||||
[Required]
|
||||
[SensitiveDetection('*')]
|
||||
public virtual string Content { get; set; }
|
||||
}
|
||||
33
Admin.NET/Admin.NET.Core/Entity/SysUpgradeUser.cs
Normal file
33
Admin.NET/Admin.NET.Core/Entity/SysUpgradeUser.cs
Normal file
@ -0,0 +1,33 @@
|
||||
// Admin.NET 项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。
|
||||
//
|
||||
// 本项目主要遵循 MIT 许可证和 Apache 许可证(版本 2.0)进行分发和使用。许可证位于源代码树根目录中的 LICENSE-MIT 和 LICENSE-APACHE 文件。
|
||||
//
|
||||
// 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!
|
||||
|
||||
namespace Admin.NET.Core;
|
||||
|
||||
/// <summary>
|
||||
/// 系统更新日志用户表
|
||||
/// </summary>
|
||||
[SugarTable(null, "系统更新日志用户表")]
|
||||
[SysTable]
|
||||
public partial class SysUpgradeUser : EntityBaseId
|
||||
{
|
||||
/// <summary>
|
||||
/// 更新日志Id
|
||||
/// </summary>
|
||||
[SugarColumn(ColumnDescription = "更新日志Id")]
|
||||
public long UpgradeId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 用户Id
|
||||
/// </summary>
|
||||
[SugarColumn(ColumnDescription = "用户Id")]
|
||||
public long UserId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 阅读时间
|
||||
/// </summary>
|
||||
[SugarColumn(ColumnDescription = "阅读时间")]
|
||||
public DateTime? ReadTime { get; set; }
|
||||
}
|
||||
@ -1,11 +1,8 @@
|
||||
// 麻省理工学院许可证
|
||||
// Admin.NET 项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。
|
||||
//
|
||||
// 版权所有 (c) 2021-2023 zuohuaijun,大名科技(天津)有限公司 联系电话/微信:18020030720 QQ:515096995
|
||||
// 本项目主要遵循 MIT 许可证和 Apache 许可证(版本 2.0)进行分发和使用。许可证位于源代码树根目录中的 LICENSE-MIT 和 LICENSE-APACHE 文件。
|
||||
//
|
||||
// 特此免费授予获得本软件的任何人以处理本软件的权利,但须遵守以下条件:在所有副本或重要部分的软件中必须包括上述版权声明和本许可声明。
|
||||
//
|
||||
// 软件按“原样”提供,不提供任何形式的明示或暗示的保证,包括但不限于对适销性、适用性和非侵权的保证。
|
||||
// 在任何情况下,作者或版权持有人均不对任何索赔、损害或其他责任负责,无论是因合同、侵权或其他方式引起的,与软件或其使用或其他交易有关。
|
||||
// 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!
|
||||
|
||||
namespace Admin.NET.Core;
|
||||
|
||||
|
||||
@ -31,16 +31,17 @@ public class SysConfigSeedData : ISqlSugarEntitySeedData<SysConfig>
|
||||
new SysConfig{ Id=1300000000191, Name="RefreshToken过期时间", Code=ConfigConst.SysRefreshTokenExpire, Value="20160", SysFlag=YesNoEnum.Y, Remark="刷新Token过期时间(分钟)(一般 refresh_token 的有效时间 > 2 * access_token 的有效时间)", OrderNo=100, GroupCode=ConfigConst.SysDefaultGroup, CreateTime=DateTime.Parse("2022-02-10 00:00:00") },
|
||||
new SysConfig{ Id=1300000000201, Name="发送异常日志邮件", Code=ConfigConst.SysErrorMail, Value="False", SysFlag=YesNoEnum.Y, Remark="是否发送异常日志邮件", OrderNo=110, GroupCode=ConfigConst.SysDefaultGroup, CreateTime=DateTime.Parse("2022-02-10 00:00:00") },
|
||||
new SysConfig{ Id=1300000000211, Name="域登录验证", Code=ConfigConst.SysDomainLogin, Value="False", SysFlag=YesNoEnum.Y, Remark="是否开启域登录验证", OrderNo=120, GroupCode=ConfigConst.SysDefaultGroup, CreateTime=DateTime.Parse("2022-02-10 00:00:00") },
|
||||
new SysConfig{ Id=1300000000221, Name="租户隔离登录验证", Code=ConfigConst.SysTenantHostLogin, Value="False", SysFlag=YesNoEnum.Y, Remark="租户隔离登录验证", OrderNo=370, GroupCode=ConfigConst.SysDefaultGroup, CreateTime=DateTime.Parse("2022-02-10 00:00:00") },
|
||||
new SysConfig{ Id=1300000000231, Name="数据校验日志", Code=ConfigConst.SysValidationLog, Value="True", SysFlag=YesNoEnum.Y, Remark="是否数据校验日志", OrderNo=130, GroupCode=ConfigConst.SysDefaultGroup, CreateTime=DateTime.Parse("2022-02-10 00:00:00") },
|
||||
new SysConfig{ Id=1300000000241, Name="行政区划同步层级", Code=ConfigConst.SysRegionSyncLevel, Value="3", SysFlag=YesNoEnum.Y, Remark="行政区划同步层级 1-省级,2-市级,3-区县级,4-街道级,5-村级", OrderNo=140, GroupCode=ConfigConst.SysDefaultGroup, CreateTime=DateTime.Parse("2022-02-10 00:00:00") },
|
||||
new SysConfig{ Id=1300000000221, Name="租户隔离登录验证", Code=ConfigConst.SysTenantHostLogin, Value="False", SysFlag=YesNoEnum.Y, Remark="租户隔离登录验证", OrderNo=130, GroupCode=ConfigConst.SysDefaultGroup, CreateTime=DateTime.Parse("2022-02-10 00:00:00") },
|
||||
new SysConfig{ Id=1300000000231, Name="数据校验日志", Code=ConfigConst.SysValidationLog, Value="True", SysFlag=YesNoEnum.Y, Remark="是否数据校验日志", OrderNo=140, GroupCode=ConfigConst.SysDefaultGroup, CreateTime=DateTime.Parse("2022-02-10 00:00:00") },
|
||||
new SysConfig{ Id=1300000000241, Name="行政区划同步层级", Code=ConfigConst.SysRegionSyncLevel, Value="3", SysFlag=YesNoEnum.Y, Remark="行政区划同步层级 1-省级,2-市级,3-区县级,4-街道级,5-村级", OrderNo=150, GroupCode=ConfigConst.SysDefaultGroup, CreateTime=DateTime.Parse("2022-02-10 00:00:00") },
|
||||
// 新业务系统记得更改密匙,通过接口(http://localhost:5005/api/sysCommon/smKeyPair)获取
|
||||
new SysConfig{ Id=1300000000251, Name="国密SM2密匙", Code=ConfigConst.SysSM2Key, Value="04851D329AA3E38C2E7670AFE70E6E70E92F8769CA27C8766B12209A0FFBA4493B603EF7A0B9B1E16F0E8930C0406EA0B179B68DF28E25334BDEC4AE76D907E9E9;3A61D1D30C6302DABFF36201D936D0143EEF0C850AF28C5CA6D5C045AF8C5C8A", SysFlag=YesNoEnum.Y, Remark="国密SM2密匙", OrderNo=160, GroupCode=ConfigConst.SysDefaultGroup, CreateTime=DateTime.Parse("2024-11-21 00:00:00") },
|
||||
new SysConfig{ Id=1300000000261, Name="开启强制修改密码", Code=ConfigConst.SysForceChangePassword, Value="False", SysFlag=YesNoEnum.Y, Remark="开启强制修改密码", OrderNo=150, GroupCode=ConfigConst.SysDefaultGroup, CreateTime=DateTime.Parse("2022-02-10 00:00:00") },
|
||||
new SysConfig{ Id=1300000000271, Name="开启密码强度验证", Code=ConfigConst.SysPasswordStrength, Value="False", SysFlag=YesNoEnum.Y, Remark="开启强制修改密码", OrderNo=170, GroupCode=ConfigConst.SysDefaultGroup, CreateTime=DateTime.Parse("2022-02-10 00:00:00") },
|
||||
new SysConfig{ Id=1300000000281, Name="密码强度验证正则表达式", Code=ConfigConst.SysPasswordStrengthExpression, Value="(?=^.{6,20}$)(?=.*\\d)(?=.*\\W+)(?=.*[A-Z])(?=.*[a-z])(?!.*\\n).*$", SysFlag=YesNoEnum.Y, Remark="必须包含大小写字母、数字和特殊字符的组合,长度在6-20之间", OrderNo=180, GroupCode=ConfigConst.SysDefaultGroup, CreateTime=DateTime.Parse("2024-11-21 00:00:00") },
|
||||
new SysConfig{ Id=1300000000291, Name="密码时间有效期", Code=ConfigConst.SysPasswordExpirationTime, Value="0", SysFlag=YesNoEnum.Y, Remark="默认0表示永不过期,否则表示过期天数", OrderNo=190, GroupCode=ConfigConst.SysDefaultGroup, CreateTime=DateTime.Parse("2024-12-17 00:00:00") },
|
||||
new SysConfig{ Id=1300000000301, Name="密码历史记录验证", Code=ConfigConst.SysPasswordRecord, Value="False", SysFlag=YesNoEnum.Y, Remark="是否验证历史密码禁止再次使用", OrderNo=200, GroupCode=ConfigConst.SysDefaultGroup, CreateTime=DateTime.Parse("2024-12-17 00:00:00") },
|
||||
new SysConfig{ Id=1300000000261, Name="开启强制修改密码", Code=ConfigConst.SysForceChangePassword, Value="False", SysFlag=YesNoEnum.Y, Remark="开启强制修改密码", OrderNo=170, GroupCode=ConfigConst.SysDefaultGroup, CreateTime=DateTime.Parse("2022-02-10 00:00:00") },
|
||||
new SysConfig{ Id=1300000000271, Name="开启密码强度验证", Code=ConfigConst.SysPasswordStrength, Value="False", SysFlag=YesNoEnum.Y, Remark="开启强制修改密码", OrderNo=180, GroupCode=ConfigConst.SysDefaultGroup, CreateTime=DateTime.Parse("2022-02-10 00:00:00") },
|
||||
new SysConfig{ Id=1300000000281, Name="密码强度验证正则表达式", Code=ConfigConst.SysPasswordStrengthExpression, Value="(?=^.{6,20}$)(?=.*\\d)(?=.*\\W+)(?=.*[A-Z])(?=.*[a-z])(?!.*\\n).*$", SysFlag=YesNoEnum.Y, Remark="必须包含大小写字母、数字和特殊字符的组合,长度在6-20之间", OrderNo=190, GroupCode=ConfigConst.SysDefaultGroup, CreateTime=DateTime.Parse("2024-11-21 00:00:00") },
|
||||
new SysConfig{ Id=1300000000291, Name="密码时间有效期", Code=ConfigConst.SysPasswordExpirationTime, Value="0", SysFlag=YesNoEnum.Y, Remark="默认0表示永不过期,否则表示过期天数", OrderNo=200, GroupCode=ConfigConst.SysDefaultGroup, CreateTime=DateTime.Parse("2024-12-17 00:00:00") },
|
||||
new SysConfig{ Id=1300000000301, Name="密码历史记录验证", Code=ConfigConst.SysPasswordRecord, Value="False", SysFlag=YesNoEnum.Y, Remark="是否验证历史密码禁止再次使用", OrderNo=210, GroupCode=ConfigConst.SysDefaultGroup, CreateTime=DateTime.Parse("2024-12-17 00:00:00") },
|
||||
new SysConfig{ Id=1300000000401, Name="显示系统更新日志", Code=ConfigConst.SysUpgrade, Value="True", SysFlag=YesNoEnum.Y, Remark="是否显示系统更新日志", OrderNo=220, GroupCode=ConfigConst.SysDefaultGroup, CreateTime=DateTime.Parse("2024-12-20 00:00:00") },
|
||||
|
||||
new SysConfig{ Id=1310000000301, Name="系统主标题", Code=ConfigConst.SysWebTitle, Value="Admin.NET.Pro", SysFlag=YesNoEnum.Y, Remark="系统主标题", OrderNo=300, GroupCode=ConfigConst.SysWebConfigGroup, CreateTime=DateTime.Parse("2022-02-10 00:00:00") },
|
||||
new SysConfig{ Id=1310000000311, Name="系统副标题", Code=ConfigConst.SysWebViceTitle, Value="Admin.NET.Pro", SysFlag=YesNoEnum.Y, Remark="系统副标题", OrderNo=310, GroupCode=ConfigConst.SysWebConfigGroup, CreateTime=DateTime.Parse("2022-02-10 00:00:00") },
|
||||
|
||||
@ -176,10 +176,12 @@ public class SysMenuSeedData : ISqlSugarEntitySeedData<SysMenu>
|
||||
new SysMenu{ Id=1310000000445, Pid=1310000000441, Title="获取支付订单详情(微信接口)", Permission="sysWechatPay/payInfoFromWechat", Type=MenuTypeEnum.Btn, CreateTime=DateTime.Parse("2022-02-10 00:00:00"), OrderNo=100 },
|
||||
new SysMenu{ Id=1310000000446, Pid=1310000000441, Title="退款申请", Permission="sysWechatPay/refundDomestic", Type=MenuTypeEnum.Btn, CreateTime=DateTime.Parse("2022-02-10 00:00:00"), OrderNo=100 },
|
||||
|
||||
//new SysMenu{ Id=1310000000451, Pid=1310000000301, Title="数据库备份", Path="/platform/dbBackup", Name="dbBackup", Component="/system/database/dbBackup", Icon="ele-Coin", Type=MenuTypeEnum.Menu, CreateTime=DateTime.Parse("2022-02-10 00:00:00"), OrderNo=240 },
|
||||
//new SysMenu{ Id=1310000000452, Pid=1310000000451, Title="查询", Permission="dbBackup/page", Type=MenuTypeEnum.Btn, CreateTime=DateTime.Parse("2022-02-10 00:00:00"), OrderNo=100 },
|
||||
//new SysMenu{ Id=1310000000453, Pid=1310000000451, Title="删除", Permission="dbBackup/delete", Type=MenuTypeEnum.Btn, CreateTime=DateTime.Parse("2022-02-10 00:00:00"), OrderNo=100 },
|
||||
//new SysMenu{ Id=1310000000454, Pid=1310000000451, Title="增加", Permission="dbBackup/add", Type=MenuTypeEnum.Btn, CreateTime=DateTime.Parse("2022-02-10 00:00:00"), OrderNo=100 },
|
||||
new SysMenu{ Id=1310000000451, Pid=1310000000301, Title="更新日志", Path="/platform/upgrade", Name="sysUpgrade", Component="/system/upgrade/index", Icon="ele-Paperclip", Type=MenuTypeEnum.Menu, CreateTime=DateTime.Parse("2022-02-10 00:00:00"), OrderNo=220 },
|
||||
|
||||
//new SysMenu{ Id=1310000000461, Pid=1310000000301, Title="数据库备份", Path="/platform/dbBackup", Name="dbBackup", Component="/system/database/dbBackup", Icon="ele-Coin", Type=MenuTypeEnum.Menu, CreateTime=DateTime.Parse("2022-02-10 00:00:00"), OrderNo=240 },
|
||||
//new SysMenu{ Id=1310000000462, Pid=1310000000461, Title="查询", Permission="dbBackup/page", Type=MenuTypeEnum.Btn, CreateTime=DateTime.Parse("2022-02-10 00:00:00"), OrderNo=100 },
|
||||
//new SysMenu{ Id=1310000000463, Pid=1310000000461, Title="删除", Permission="dbBackup/delete", Type=MenuTypeEnum.Btn, CreateTime=DateTime.Parse("2022-02-10 00:00:00"), OrderNo=100 },
|
||||
//new SysMenu{ Id=1310000000464, Pid=1310000000461, Title="增加", Permission="dbBackup/add", Type=MenuTypeEnum.Btn, CreateTime=DateTime.Parse("2022-02-10 00:00:00"), OrderNo=100 },
|
||||
|
||||
new SysMenu{ Id=1310000000501, Pid=0, Title="日志管理", Path="/log", Name="log", Component="Layout", Icon="ele-DocumentCopy", Type=MenuTypeEnum.Dir, CreateTime=DateTime.Parse("2022-02-10 00:00:00"), OrderNo=12000 },
|
||||
new SysMenu{ Id=1310000000511, Pid=1310000000501, Title="访问日志", Path="/log/logvis", Name="sysLogVis", Component="/system/log/logvis/index", Icon="ele-Document", Type=MenuTypeEnum.Menu, CreateTime=DateTime.Parse("2022-02-10 00:00:00"), OrderNo=100 },
|
||||
|
||||
@ -18,8 +18,7 @@ public class SysNoticeService : IDynamicApiController, ITransient
|
||||
private readonly SqlSugarRepository<SysNoticeUser> _sysNoticeUserRep;
|
||||
private readonly SysOnlineUserService _sysOnlineUserService;
|
||||
|
||||
public SysNoticeService(
|
||||
UserManager userManager,
|
||||
public SysNoticeService(UserManager userManager,
|
||||
SqlSugarRepository<SysUser> sysUserRep,
|
||||
SqlSugarRepository<SysNotice> sysNoticeRep,
|
||||
SqlSugarRepository<SysNoticeUser> sysNoticeUserRep,
|
||||
|
||||
27
Admin.NET/Admin.NET.Core/Service/Upgrade/Dto/UpgradeInput.cs
Normal file
27
Admin.NET/Admin.NET.Core/Service/Upgrade/Dto/UpgradeInput.cs
Normal file
@ -0,0 +1,27 @@
|
||||
// Admin.NET 项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。
|
||||
//
|
||||
// 本项目主要遵循 MIT 许可证和 Apache 许可证(版本 2.0)进行分发和使用。许可证位于源代码树根目录中的 LICENSE-MIT 和 LICENSE-APACHE 文件。
|
||||
//
|
||||
// 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!
|
||||
|
||||
namespace Admin.NET.Core.Service;
|
||||
|
||||
public class PageUpgradeInput : BasePageInput
|
||||
{
|
||||
}
|
||||
|
||||
public class AddUpgradeInput : SysUpgrade
|
||||
{
|
||||
}
|
||||
|
||||
public class UpdateUpgradeInput : AddUpgradeInput
|
||||
{
|
||||
}
|
||||
|
||||
public class DeleteUpgradeInput : BaseIdInput
|
||||
{
|
||||
}
|
||||
|
||||
public class UpgradeInput : BaseIdInput
|
||||
{
|
||||
}
|
||||
120
Admin.NET/Admin.NET.Core/Service/Upgrade/SysUpgradeService.cs
Normal file
120
Admin.NET/Admin.NET.Core/Service/Upgrade/SysUpgradeService.cs
Normal file
@ -0,0 +1,120 @@
|
||||
// Admin.NET 项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。
|
||||
//
|
||||
// 本项目主要遵循 MIT 许可证和 Apache 许可证(版本 2.0)进行分发和使用。许可证位于源代码树根目录中的 LICENSE-MIT 和 LICENSE-APACHE 文件。
|
||||
//
|
||||
// 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!
|
||||
|
||||
namespace Admin.NET.Core.Service;
|
||||
|
||||
/// <summary>
|
||||
/// 系统更新日志服务 🧩
|
||||
/// </summary>
|
||||
[ApiDescriptionSettings(Order = 380, Description = "更新日志")]
|
||||
public class SysUpgradeService : IDynamicApiController, ITransient
|
||||
{
|
||||
private readonly UserManager _userManager;
|
||||
private readonly SqlSugarRepository<SysUpgrade> _sysUpgradeRep;
|
||||
private readonly SqlSugarRepository<SysUpgradeUser> _sysUpgradeUserRep;
|
||||
private readonly SysConfigService _sysConfigService;
|
||||
|
||||
public SysUpgradeService(UserManager userManager,
|
||||
SqlSugarRepository<SysUpgrade> sysUpgradeRep,
|
||||
SqlSugarRepository<SysUpgradeUser> sysUpgradeUserRep,
|
||||
SysConfigService sysConfigService)
|
||||
{
|
||||
_userManager = userManager;
|
||||
_sysUpgradeRep = sysUpgradeRep;
|
||||
_sysUpgradeUserRep = sysUpgradeUserRep;
|
||||
_sysConfigService = sysConfigService;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取系统更新日志分页列表 🔖
|
||||
/// </summary>
|
||||
/// <param name="input"></param>
|
||||
/// <returns></returns>
|
||||
[DisplayName("获取系统更新日志分页列表")]
|
||||
public async Task<SqlSugarPagedList<SysUpgrade>> Page(PageUpgradeInput input)
|
||||
{
|
||||
return await _sysUpgradeRep.AsQueryable()
|
||||
.OrderBy(u => u.CreateTime, OrderByType.Desc)
|
||||
.ToPagedListAsync(input.Page, input.PageSize);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 增加系统更新日志 🔖
|
||||
/// </summary>
|
||||
/// <param name="input"></param>
|
||||
/// <returns></returns>
|
||||
[ApiDescriptionSettings(Name = "Add"), HttpPost]
|
||||
[DisplayName("增加系统更新日志")]
|
||||
public async Task AddUpgrade(AddUpgradeInput input)
|
||||
{
|
||||
var upgrade = input.Adapt<SysUpgrade>();
|
||||
await _sysUpgradeRep.InsertAsync(upgrade);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 更新系统更新日志 🔖
|
||||
/// </summary>
|
||||
/// <param name="input"></param>
|
||||
/// <returns></returns>
|
||||
[UnitOfWork]
|
||||
[ApiDescriptionSettings(Name = "Update"), HttpPost]
|
||||
[DisplayName("更新系统更新日志")]
|
||||
public async Task UpdateUpgrade(UpdateUpgradeInput input)
|
||||
{
|
||||
var upgrade = input.Adapt<SysUpgrade>();
|
||||
await _sysUpgradeRep.UpdateAsync(upgrade);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 删除系统更新日志 🔖
|
||||
/// </summary>
|
||||
/// <param name="input"></param>
|
||||
/// <returns></returns>
|
||||
[UnitOfWork]
|
||||
[ApiDescriptionSettings(Name = "Delete"), HttpPost]
|
||||
[DisplayName("删除系统更新日志")]
|
||||
public async Task DeleteUpgrade(DeleteUpgradeInput input)
|
||||
{
|
||||
await _sysUpgradeRep.DeleteAsync(u => u.Id == input.Id);
|
||||
|
||||
await _sysUpgradeUserRep.DeleteAsync(u => u.UpgradeId == input.Id);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 设置系统更新日志已读状态 🔖
|
||||
/// </summary>
|
||||
/// <param name="input"></param>
|
||||
/// <returns></returns>
|
||||
[DisplayName("设置系统更新日志已读状态")]
|
||||
public async Task SetRead(UpgradeInput input)
|
||||
{
|
||||
await _sysUpgradeUserRep.InsertAsync(new SysUpgradeUser
|
||||
{
|
||||
UpgradeId = input.Id,
|
||||
UserId = _userManager.UserId,
|
||||
ReadTime = DateTime.Now
|
||||
});
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取最新的系统更新日志 🔖
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
[DisplayName("获取最新的系统更新日志")]
|
||||
public async Task<SysUpgrade> GetLastUnRead()
|
||||
{
|
||||
// 是否启用显示系统更新日志
|
||||
var enableUpgrade = await _sysConfigService.GetConfigValueByCode<bool>(ConfigConst.SysUpgrade);
|
||||
if (!enableUpgrade) return null;
|
||||
|
||||
// 取最新的系统更新日志
|
||||
var upgrade = await _sysUpgradeRep.AsQueryable().OrderBy(u => u.CreateTime, OrderByType.Desc).FirstAsync();
|
||||
if (upgrade == null) return null;
|
||||
|
||||
// 若当前用户没有阅读过则进行显示
|
||||
return (await _sysUpgradeUserRep.IsAnyAsync(u => u.UserId == _userManager.UserId && u.UpgradeId == upgrade.Id)) ? null : upgrade;
|
||||
}
|
||||
}
|
||||
@ -32,7 +32,7 @@ public class SysUserService : IDynamicApiController, ITransient
|
||||
SysUserRoleService sysUserRoleService,
|
||||
SysConfigService sysConfigService,
|
||||
SysOnlineUserService sysOnlineUserService,
|
||||
SysUserMenuService sysUserMenuService,
|
||||
SysUserMenuService sysUserMenuService,
|
||||
SysCacheService sysCacheService,
|
||||
SysUserLdapService sysUserLdapService,
|
||||
SqlSugarRepository<SysUser> sysUserRep,
|
||||
|
||||
@ -4,8 +4,6 @@
|
||||
//
|
||||
// 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!
|
||||
|
||||
using Lazy.Captcha.Core;
|
||||
|
||||
namespace Admin.NET.Core;
|
||||
|
||||
public static class SqlSugarSetup
|
||||
@ -24,8 +22,7 @@ public static class SqlSugarSetup
|
||||
{
|
||||
// 注册雪花Id
|
||||
var snowIdOpt = App.GetConfig<SnowIdOptions>("SnowId", true);
|
||||
var cacheOpt = App.GetConfig<CacheOptions>("Cache", true);
|
||||
if(cacheOpt.CacheType == "Memory")
|
||||
if (App.GetConfig<CacheOptions>("Cache", true).CacheType == "Memory")
|
||||
{
|
||||
YitIdHelper.SetIdGenerator(snowIdOpt);
|
||||
SnowFlakeSingle.WorkId = snowIdOpt.WorkerId;
|
||||
|
||||
@ -32,7 +32,6 @@ using System.Linq;
|
||||
using System.Text.Encodings.Web;
|
||||
using System.Text.Unicode;
|
||||
using System.Threading.Tasks;
|
||||
using Microsoft.Extensions.Configuration;
|
||||
|
||||
namespace Admin.NET.Web.Core;
|
||||
|
||||
@ -212,19 +211,6 @@ public class Startup : AppStartup
|
||||
// 验证码
|
||||
services.AddCaptcha();
|
||||
|
||||
var captchaCacheType = App.GetService<IConfiguration>().GetSection("CaptchaOptions:CacheType")?.Value;
|
||||
if (captchaCacheType == "Redis")
|
||||
{
|
||||
var connectionString = App.GetService<IConfiguration>().GetSection("CaptchaOptions:RedisCacheString")?.Value;
|
||||
// 如果使用redis分布式缓存
|
||||
services.AddStackExchangeRedisCache(options =>
|
||||
{
|
||||
options.Configuration = connectionString;
|
||||
options.InstanceName = "captcha:";
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
// 控制台logo
|
||||
services.AddConsoleLogo();
|
||||
|
||||
|
||||
@ -80,7 +80,7 @@
|
||||
}else if(@column.EffectType == "InputTextArea"){
|
||||
@:<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
|
||||
@:<el-form-item label="@column.ColumnComment" prop="@(@column.LowerPropertyName)">
|
||||
@:<el-input v-model="state.ruleForm.@(@column.LowerPropertyName)" autocomplete="new-password" placeholder="请输入@(@column.ColumnComment)" type="textarea"
|
||||
@:<el-input v-model="state.ruleForm.@(@column.LowerPropertyName)" autocomplete="new-password" placeholder="请输入@(@column.ColumnComment)" type="textarea"
|
||||
@if(@column.ColumnLength>0){
|
||||
@:maxlength="@(@column.ColumnLength)"
|
||||
}
|
||||
|
||||
@ -74,7 +74,7 @@
|
||||
"vue-router": "^4.5.0",
|
||||
"vue-signature-pad": "^3.0.2",
|
||||
"vue3-tree-org": "^4.2.2",
|
||||
"vxe-pc-ui": "^4.3.38",
|
||||
"vxe-pc-ui": "^4.3.40",
|
||||
"vxe-table": "^4.8.10",
|
||||
"vxe-table-plugin-element": "^4.0.4",
|
||||
"vxe-table-plugin-export-xlsx": "^4.0.7",
|
||||
@ -103,7 +103,7 @@
|
||||
"sass": "^1.83.0",
|
||||
"terser": "^5.37.0",
|
||||
"typescript": "^5.7.2",
|
||||
"vite": "^6.0.4",
|
||||
"vite": "^6.0.5",
|
||||
"vite-plugin-cdn-import": "^1.0.1",
|
||||
"vite-plugin-compression2": "^1.3.3",
|
||||
"vite-plugin-vue-setup-extend": "^0.4.0",
|
||||
|
||||
@ -52,6 +52,7 @@ 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-upgrade-api';
|
||||
export * from './apis/sys-user-api';
|
||||
export * from './apis/sys-user-menu-api';
|
||||
export * from './apis/sys-wechat-api';
|
||||
|
||||
551
Web/src/api-services/apis/sys-upgrade-api.ts
Normal file
551
Web/src/api-services/apis/sys-upgrade-api.ts
Normal file
@ -0,0 +1,551 @@
|
||||
/* tslint:disable */
|
||||
/* eslint-disable */
|
||||
/**
|
||||
* Admin.NET 通用权限开发平台
|
||||
* 让 .NET 开发更简单、更通用、更流行。整合最新技术,模块插件式开发,前后端分离,开箱即用。<br/><u><b><font color='FF0000'> 👮不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!</font></b></u>
|
||||
*
|
||||
* OpenAPI spec version: 1.0.0
|
||||
*
|
||||
*
|
||||
* NOTE: This class is auto generated by the swagger code generator program.
|
||||
* https://github.com/swagger-api/swagger-codegen.git
|
||||
* Do not edit the class manually.
|
||||
*/
|
||||
|
||||
import globalAxios, { AxiosResponse, AxiosInstance, AxiosRequestConfig } from 'axios';
|
||||
import { Configuration } from '../configuration';
|
||||
// Some imports not used depending on template conditions
|
||||
// @ts-ignore
|
||||
import { BASE_PATH, COLLECTION_FORMATS, RequestArgs, BaseAPI, RequiredError } from '../base';
|
||||
import { AddUpgradeInput } from '../models';
|
||||
import { AdminResultSqlSugarPagedListSysUpgrade } from '../models';
|
||||
import { AdminResultSysUpgrade } from '../models';
|
||||
import { DeleteUpgradeInput } from '../models';
|
||||
import { PageUpgradeInput } from '../models';
|
||||
import { UpdateUpgradeInput } from '../models';
|
||||
import { UpgradeInput } from '../models';
|
||||
/**
|
||||
* SysUpgradeApi - axios parameter creator
|
||||
* @export
|
||||
*/
|
||||
export const SysUpgradeApiAxiosParamCreator = function (configuration?: Configuration) {
|
||||
return {
|
||||
/**
|
||||
*
|
||||
* @summary 增加系统更新日志 🔖
|
||||
* @param {AddUpgradeInput} [body]
|
||||
* @param {*} [options] Override http request option.
|
||||
* @throws {RequiredError}
|
||||
*/
|
||||
apiSysUpgradeAddPost: async (body?: AddUpgradeInput, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
|
||||
const localVarPath = `/api/sysUpgrade/add`;
|
||||
// use dummy base URL string because the URL constructor only accepts absolute URLs.
|
||||
const localVarUrlObj = new URL(localVarPath, 'https://example.com');
|
||||
let baseOptions;
|
||||
if (configuration) {
|
||||
baseOptions = configuration.baseOptions;
|
||||
}
|
||||
const localVarRequestOptions :AxiosRequestConfig = { method: 'POST', ...baseOptions, ...options};
|
||||
const localVarHeaderParameter = {} as any;
|
||||
const localVarQueryParameter = {} as any;
|
||||
|
||||
// authentication Bearer required
|
||||
// http bearer authentication required
|
||||
if (configuration && configuration.accessToken) {
|
||||
const accessToken = typeof configuration.accessToken === 'function'
|
||||
? await configuration.accessToken()
|
||||
: await configuration.accessToken;
|
||||
localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
|
||||
}
|
||||
|
||||
localVarHeaderParameter['Content-Type'] = 'application/json-patch+json';
|
||||
|
||||
const query = new URLSearchParams(localVarUrlObj.search);
|
||||
for (const key in localVarQueryParameter) {
|
||||
query.set(key, localVarQueryParameter[key]);
|
||||
}
|
||||
for (const key in options.params) {
|
||||
query.set(key, options.params[key]);
|
||||
}
|
||||
localVarUrlObj.search = (new URLSearchParams(query)).toString();
|
||||
let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
|
||||
localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
|
||||
const needsSerialization = (typeof body !== "string") || localVarRequestOptions.headers['Content-Type'] === 'application/json';
|
||||
localVarRequestOptions.data = needsSerialization ? JSON.stringify(body !== undefined ? body : {}) : (body || "");
|
||||
|
||||
return {
|
||||
url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,
|
||||
options: localVarRequestOptions,
|
||||
};
|
||||
},
|
||||
/**
|
||||
*
|
||||
* @summary 删除系统更新日志 🔖
|
||||
* @param {DeleteUpgradeInput} [body]
|
||||
* @param {*} [options] Override http request option.
|
||||
* @throws {RequiredError}
|
||||
*/
|
||||
apiSysUpgradeDeletePost: async (body?: DeleteUpgradeInput, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
|
||||
const localVarPath = `/api/sysUpgrade/delete`;
|
||||
// use dummy base URL string because the URL constructor only accepts absolute URLs.
|
||||
const localVarUrlObj = new URL(localVarPath, 'https://example.com');
|
||||
let baseOptions;
|
||||
if (configuration) {
|
||||
baseOptions = configuration.baseOptions;
|
||||
}
|
||||
const localVarRequestOptions :AxiosRequestConfig = { method: 'POST', ...baseOptions, ...options};
|
||||
const localVarHeaderParameter = {} as any;
|
||||
const localVarQueryParameter = {} as any;
|
||||
|
||||
// authentication Bearer required
|
||||
// http bearer authentication required
|
||||
if (configuration && configuration.accessToken) {
|
||||
const accessToken = typeof configuration.accessToken === 'function'
|
||||
? await configuration.accessToken()
|
||||
: await configuration.accessToken;
|
||||
localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
|
||||
}
|
||||
|
||||
localVarHeaderParameter['Content-Type'] = 'application/json-patch+json';
|
||||
|
||||
const query = new URLSearchParams(localVarUrlObj.search);
|
||||
for (const key in localVarQueryParameter) {
|
||||
query.set(key, localVarQueryParameter[key]);
|
||||
}
|
||||
for (const key in options.params) {
|
||||
query.set(key, options.params[key]);
|
||||
}
|
||||
localVarUrlObj.search = (new URLSearchParams(query)).toString();
|
||||
let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
|
||||
localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
|
||||
const needsSerialization = (typeof body !== "string") || localVarRequestOptions.headers['Content-Type'] === 'application/json';
|
||||
localVarRequestOptions.data = needsSerialization ? JSON.stringify(body !== undefined ? body : {}) : (body || "");
|
||||
|
||||
return {
|
||||
url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,
|
||||
options: localVarRequestOptions,
|
||||
};
|
||||
},
|
||||
/**
|
||||
*
|
||||
* @summary 获取最新的系统更新日志 🔖
|
||||
* @param {*} [options] Override http request option.
|
||||
* @throws {RequiredError}
|
||||
*/
|
||||
apiSysUpgradeLastUnReadGet: async (options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
|
||||
const localVarPath = `/api/sysUpgrade/lastUnRead`;
|
||||
// use dummy base URL string because the URL constructor only accepts absolute URLs.
|
||||
const localVarUrlObj = new URL(localVarPath, 'https://example.com');
|
||||
let baseOptions;
|
||||
if (configuration) {
|
||||
baseOptions = configuration.baseOptions;
|
||||
}
|
||||
const localVarRequestOptions :AxiosRequestConfig = { method: 'GET', ...baseOptions, ...options};
|
||||
const localVarHeaderParameter = {} as any;
|
||||
const localVarQueryParameter = {} as any;
|
||||
|
||||
// authentication Bearer required
|
||||
// http bearer authentication required
|
||||
if (configuration && configuration.accessToken) {
|
||||
const accessToken = typeof configuration.accessToken === 'function'
|
||||
? await configuration.accessToken()
|
||||
: await configuration.accessToken;
|
||||
localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
|
||||
}
|
||||
|
||||
const query = new URLSearchParams(localVarUrlObj.search);
|
||||
for (const key in localVarQueryParameter) {
|
||||
query.set(key, localVarQueryParameter[key]);
|
||||
}
|
||||
for (const key in options.params) {
|
||||
query.set(key, options.params[key]);
|
||||
}
|
||||
localVarUrlObj.search = (new URLSearchParams(query)).toString();
|
||||
let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
|
||||
localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
|
||||
|
||||
return {
|
||||
url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,
|
||||
options: localVarRequestOptions,
|
||||
};
|
||||
},
|
||||
/**
|
||||
*
|
||||
* @summary 获取系统更新日志分页列表 🔖
|
||||
* @param {PageUpgradeInput} [body]
|
||||
* @param {*} [options] Override http request option.
|
||||
* @throws {RequiredError}
|
||||
*/
|
||||
apiSysUpgradePagePost: async (body?: PageUpgradeInput, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
|
||||
const localVarPath = `/api/sysUpgrade/page`;
|
||||
// use dummy base URL string because the URL constructor only accepts absolute URLs.
|
||||
const localVarUrlObj = new URL(localVarPath, 'https://example.com');
|
||||
let baseOptions;
|
||||
if (configuration) {
|
||||
baseOptions = configuration.baseOptions;
|
||||
}
|
||||
const localVarRequestOptions :AxiosRequestConfig = { method: 'POST', ...baseOptions, ...options};
|
||||
const localVarHeaderParameter = {} as any;
|
||||
const localVarQueryParameter = {} as any;
|
||||
|
||||
// authentication Bearer required
|
||||
// http bearer authentication required
|
||||
if (configuration && configuration.accessToken) {
|
||||
const accessToken = typeof configuration.accessToken === 'function'
|
||||
? await configuration.accessToken()
|
||||
: await configuration.accessToken;
|
||||
localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
|
||||
}
|
||||
|
||||
localVarHeaderParameter['Content-Type'] = 'application/json-patch+json';
|
||||
|
||||
const query = new URLSearchParams(localVarUrlObj.search);
|
||||
for (const key in localVarQueryParameter) {
|
||||
query.set(key, localVarQueryParameter[key]);
|
||||
}
|
||||
for (const key in options.params) {
|
||||
query.set(key, options.params[key]);
|
||||
}
|
||||
localVarUrlObj.search = (new URLSearchParams(query)).toString();
|
||||
let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
|
||||
localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
|
||||
const needsSerialization = (typeof body !== "string") || localVarRequestOptions.headers['Content-Type'] === 'application/json';
|
||||
localVarRequestOptions.data = needsSerialization ? JSON.stringify(body !== undefined ? body : {}) : (body || "");
|
||||
|
||||
return {
|
||||
url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,
|
||||
options: localVarRequestOptions,
|
||||
};
|
||||
},
|
||||
/**
|
||||
*
|
||||
* @summary 设置系统更新日志已读状态 🔖
|
||||
* @param {UpgradeInput} [body]
|
||||
* @param {*} [options] Override http request option.
|
||||
* @throws {RequiredError}
|
||||
*/
|
||||
apiSysUpgradeSetReadPost: async (body?: UpgradeInput, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
|
||||
const localVarPath = `/api/sysUpgrade/setRead`;
|
||||
// use dummy base URL string because the URL constructor only accepts absolute URLs.
|
||||
const localVarUrlObj = new URL(localVarPath, 'https://example.com');
|
||||
let baseOptions;
|
||||
if (configuration) {
|
||||
baseOptions = configuration.baseOptions;
|
||||
}
|
||||
const localVarRequestOptions :AxiosRequestConfig = { method: 'POST', ...baseOptions, ...options};
|
||||
const localVarHeaderParameter = {} as any;
|
||||
const localVarQueryParameter = {} as any;
|
||||
|
||||
// authentication Bearer required
|
||||
// http bearer authentication required
|
||||
if (configuration && configuration.accessToken) {
|
||||
const accessToken = typeof configuration.accessToken === 'function'
|
||||
? await configuration.accessToken()
|
||||
: await configuration.accessToken;
|
||||
localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
|
||||
}
|
||||
|
||||
localVarHeaderParameter['Content-Type'] = 'application/json-patch+json';
|
||||
|
||||
const query = new URLSearchParams(localVarUrlObj.search);
|
||||
for (const key in localVarQueryParameter) {
|
||||
query.set(key, localVarQueryParameter[key]);
|
||||
}
|
||||
for (const key in options.params) {
|
||||
query.set(key, options.params[key]);
|
||||
}
|
||||
localVarUrlObj.search = (new URLSearchParams(query)).toString();
|
||||
let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
|
||||
localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
|
||||
const needsSerialization = (typeof body !== "string") || localVarRequestOptions.headers['Content-Type'] === 'application/json';
|
||||
localVarRequestOptions.data = needsSerialization ? JSON.stringify(body !== undefined ? body : {}) : (body || "");
|
||||
|
||||
return {
|
||||
url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,
|
||||
options: localVarRequestOptions,
|
||||
};
|
||||
},
|
||||
/**
|
||||
*
|
||||
* @summary 更新系统更新日志 🔖
|
||||
* @param {UpdateUpgradeInput} [body]
|
||||
* @param {*} [options] Override http request option.
|
||||
* @throws {RequiredError}
|
||||
*/
|
||||
apiSysUpgradeUpdatePost: async (body?: UpdateUpgradeInput, options: AxiosRequestConfig = {}): Promise<RequestArgs> => {
|
||||
const localVarPath = `/api/sysUpgrade/update`;
|
||||
// use dummy base URL string because the URL constructor only accepts absolute URLs.
|
||||
const localVarUrlObj = new URL(localVarPath, 'https://example.com');
|
||||
let baseOptions;
|
||||
if (configuration) {
|
||||
baseOptions = configuration.baseOptions;
|
||||
}
|
||||
const localVarRequestOptions :AxiosRequestConfig = { method: 'POST', ...baseOptions, ...options};
|
||||
const localVarHeaderParameter = {} as any;
|
||||
const localVarQueryParameter = {} as any;
|
||||
|
||||
// authentication Bearer required
|
||||
// http bearer authentication required
|
||||
if (configuration && configuration.accessToken) {
|
||||
const accessToken = typeof configuration.accessToken === 'function'
|
||||
? await configuration.accessToken()
|
||||
: await configuration.accessToken;
|
||||
localVarHeaderParameter["Authorization"] = "Bearer " + accessToken;
|
||||
}
|
||||
|
||||
localVarHeaderParameter['Content-Type'] = 'application/json-patch+json';
|
||||
|
||||
const query = new URLSearchParams(localVarUrlObj.search);
|
||||
for (const key in localVarQueryParameter) {
|
||||
query.set(key, localVarQueryParameter[key]);
|
||||
}
|
||||
for (const key in options.params) {
|
||||
query.set(key, options.params[key]);
|
||||
}
|
||||
localVarUrlObj.search = (new URLSearchParams(query)).toString();
|
||||
let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
|
||||
localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
|
||||
const needsSerialization = (typeof body !== "string") || localVarRequestOptions.headers['Content-Type'] === 'application/json';
|
||||
localVarRequestOptions.data = needsSerialization ? JSON.stringify(body !== undefined ? body : {}) : (body || "");
|
||||
|
||||
return {
|
||||
url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,
|
||||
options: localVarRequestOptions,
|
||||
};
|
||||
},
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* SysUpgradeApi - functional programming interface
|
||||
* @export
|
||||
*/
|
||||
export const SysUpgradeApiFp = function(configuration?: Configuration) {
|
||||
return {
|
||||
/**
|
||||
*
|
||||
* @summary 增加系统更新日志 🔖
|
||||
* @param {AddUpgradeInput} [body]
|
||||
* @param {*} [options] Override http request option.
|
||||
* @throws {RequiredError}
|
||||
*/
|
||||
async apiSysUpgradeAddPost(body?: AddUpgradeInput, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<void>>> {
|
||||
const localVarAxiosArgs = await SysUpgradeApiAxiosParamCreator(configuration).apiSysUpgradeAddPost(body, options);
|
||||
return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
|
||||
const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
|
||||
return axios.request(axiosRequestArgs);
|
||||
};
|
||||
},
|
||||
/**
|
||||
*
|
||||
* @summary 删除系统更新日志 🔖
|
||||
* @param {DeleteUpgradeInput} [body]
|
||||
* @param {*} [options] Override http request option.
|
||||
* @throws {RequiredError}
|
||||
*/
|
||||
async apiSysUpgradeDeletePost(body?: DeleteUpgradeInput, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<void>>> {
|
||||
const localVarAxiosArgs = await SysUpgradeApiAxiosParamCreator(configuration).apiSysUpgradeDeletePost(body, options);
|
||||
return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
|
||||
const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
|
||||
return axios.request(axiosRequestArgs);
|
||||
};
|
||||
},
|
||||
/**
|
||||
*
|
||||
* @summary 获取最新的系统更新日志 🔖
|
||||
* @param {*} [options] Override http request option.
|
||||
* @throws {RequiredError}
|
||||
*/
|
||||
async apiSysUpgradeLastUnReadGet(options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<AdminResultSysUpgrade>>> {
|
||||
const localVarAxiosArgs = await SysUpgradeApiAxiosParamCreator(configuration).apiSysUpgradeLastUnReadGet(options);
|
||||
return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
|
||||
const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
|
||||
return axios.request(axiosRequestArgs);
|
||||
};
|
||||
},
|
||||
/**
|
||||
*
|
||||
* @summary 获取系统更新日志分页列表 🔖
|
||||
* @param {PageUpgradeInput} [body]
|
||||
* @param {*} [options] Override http request option.
|
||||
* @throws {RequiredError}
|
||||
*/
|
||||
async apiSysUpgradePagePost(body?: PageUpgradeInput, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<AdminResultSqlSugarPagedListSysUpgrade>>> {
|
||||
const localVarAxiosArgs = await SysUpgradeApiAxiosParamCreator(configuration).apiSysUpgradePagePost(body, options);
|
||||
return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
|
||||
const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
|
||||
return axios.request(axiosRequestArgs);
|
||||
};
|
||||
},
|
||||
/**
|
||||
*
|
||||
* @summary 设置系统更新日志已读状态 🔖
|
||||
* @param {UpgradeInput} [body]
|
||||
* @param {*} [options] Override http request option.
|
||||
* @throws {RequiredError}
|
||||
*/
|
||||
async apiSysUpgradeSetReadPost(body?: UpgradeInput, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<void>>> {
|
||||
const localVarAxiosArgs = await SysUpgradeApiAxiosParamCreator(configuration).apiSysUpgradeSetReadPost(body, options);
|
||||
return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
|
||||
const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
|
||||
return axios.request(axiosRequestArgs);
|
||||
};
|
||||
},
|
||||
/**
|
||||
*
|
||||
* @summary 更新系统更新日志 🔖
|
||||
* @param {UpdateUpgradeInput} [body]
|
||||
* @param {*} [options] Override http request option.
|
||||
* @throws {RequiredError}
|
||||
*/
|
||||
async apiSysUpgradeUpdatePost(body?: UpdateUpgradeInput, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise<AxiosResponse<void>>> {
|
||||
const localVarAxiosArgs = await SysUpgradeApiAxiosParamCreator(configuration).apiSysUpgradeUpdatePost(body, options);
|
||||
return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
|
||||
const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
|
||||
return axios.request(axiosRequestArgs);
|
||||
};
|
||||
},
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* SysUpgradeApi - factory interface
|
||||
* @export
|
||||
*/
|
||||
export const SysUpgradeApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) {
|
||||
return {
|
||||
/**
|
||||
*
|
||||
* @summary 增加系统更新日志 🔖
|
||||
* @param {AddUpgradeInput} [body]
|
||||
* @param {*} [options] Override http request option.
|
||||
* @throws {RequiredError}
|
||||
*/
|
||||
async apiSysUpgradeAddPost(body?: AddUpgradeInput, options?: AxiosRequestConfig): Promise<AxiosResponse<void>> {
|
||||
return SysUpgradeApiFp(configuration).apiSysUpgradeAddPost(body, options).then((request) => request(axios, basePath));
|
||||
},
|
||||
/**
|
||||
*
|
||||
* @summary 删除系统更新日志 🔖
|
||||
* @param {DeleteUpgradeInput} [body]
|
||||
* @param {*} [options] Override http request option.
|
||||
* @throws {RequiredError}
|
||||
*/
|
||||
async apiSysUpgradeDeletePost(body?: DeleteUpgradeInput, options?: AxiosRequestConfig): Promise<AxiosResponse<void>> {
|
||||
return SysUpgradeApiFp(configuration).apiSysUpgradeDeletePost(body, options).then((request) => request(axios, basePath));
|
||||
},
|
||||
/**
|
||||
*
|
||||
* @summary 获取最新的系统更新日志 🔖
|
||||
* @param {*} [options] Override http request option.
|
||||
* @throws {RequiredError}
|
||||
*/
|
||||
async apiSysUpgradeLastUnReadGet(options?: AxiosRequestConfig): Promise<AxiosResponse<AdminResultSysUpgrade>> {
|
||||
return SysUpgradeApiFp(configuration).apiSysUpgradeLastUnReadGet(options).then((request) => request(axios, basePath));
|
||||
},
|
||||
/**
|
||||
*
|
||||
* @summary 获取系统更新日志分页列表 🔖
|
||||
* @param {PageUpgradeInput} [body]
|
||||
* @param {*} [options] Override http request option.
|
||||
* @throws {RequiredError}
|
||||
*/
|
||||
async apiSysUpgradePagePost(body?: PageUpgradeInput, options?: AxiosRequestConfig): Promise<AxiosResponse<AdminResultSqlSugarPagedListSysUpgrade>> {
|
||||
return SysUpgradeApiFp(configuration).apiSysUpgradePagePost(body, options).then((request) => request(axios, basePath));
|
||||
},
|
||||
/**
|
||||
*
|
||||
* @summary 设置系统更新日志已读状态 🔖
|
||||
* @param {UpgradeInput} [body]
|
||||
* @param {*} [options] Override http request option.
|
||||
* @throws {RequiredError}
|
||||
*/
|
||||
async apiSysUpgradeSetReadPost(body?: UpgradeInput, options?: AxiosRequestConfig): Promise<AxiosResponse<void>> {
|
||||
return SysUpgradeApiFp(configuration).apiSysUpgradeSetReadPost(body, options).then((request) => request(axios, basePath));
|
||||
},
|
||||
/**
|
||||
*
|
||||
* @summary 更新系统更新日志 🔖
|
||||
* @param {UpdateUpgradeInput} [body]
|
||||
* @param {*} [options] Override http request option.
|
||||
* @throws {RequiredError}
|
||||
*/
|
||||
async apiSysUpgradeUpdatePost(body?: UpdateUpgradeInput, options?: AxiosRequestConfig): Promise<AxiosResponse<void>> {
|
||||
return SysUpgradeApiFp(configuration).apiSysUpgradeUpdatePost(body, options).then((request) => request(axios, basePath));
|
||||
},
|
||||
};
|
||||
};
|
||||
|
||||
/**
|
||||
* SysUpgradeApi - object-oriented interface
|
||||
* @export
|
||||
* @class SysUpgradeApi
|
||||
* @extends {BaseAPI}
|
||||
*/
|
||||
export class SysUpgradeApi extends BaseAPI {
|
||||
/**
|
||||
*
|
||||
* @summary 增加系统更新日志 🔖
|
||||
* @param {AddUpgradeInput} [body]
|
||||
* @param {*} [options] Override http request option.
|
||||
* @throws {RequiredError}
|
||||
* @memberof SysUpgradeApi
|
||||
*/
|
||||
public async apiSysUpgradeAddPost(body?: AddUpgradeInput, options?: AxiosRequestConfig) : Promise<AxiosResponse<void>> {
|
||||
return SysUpgradeApiFp(this.configuration).apiSysUpgradeAddPost(body, options).then((request) => request(this.axios, this.basePath));
|
||||
}
|
||||
/**
|
||||
*
|
||||
* @summary 删除系统更新日志 🔖
|
||||
* @param {DeleteUpgradeInput} [body]
|
||||
* @param {*} [options] Override http request option.
|
||||
* @throws {RequiredError}
|
||||
* @memberof SysUpgradeApi
|
||||
*/
|
||||
public async apiSysUpgradeDeletePost(body?: DeleteUpgradeInput, options?: AxiosRequestConfig) : Promise<AxiosResponse<void>> {
|
||||
return SysUpgradeApiFp(this.configuration).apiSysUpgradeDeletePost(body, options).then((request) => request(this.axios, this.basePath));
|
||||
}
|
||||
/**
|
||||
*
|
||||
* @summary 获取最新的系统更新日志 🔖
|
||||
* @param {*} [options] Override http request option.
|
||||
* @throws {RequiredError}
|
||||
* @memberof SysUpgradeApi
|
||||
*/
|
||||
public async apiSysUpgradeLastUnReadGet(options?: AxiosRequestConfig) : Promise<AxiosResponse<AdminResultSysUpgrade>> {
|
||||
return SysUpgradeApiFp(this.configuration).apiSysUpgradeLastUnReadGet(options).then((request) => request(this.axios, this.basePath));
|
||||
}
|
||||
/**
|
||||
*
|
||||
* @summary 获取系统更新日志分页列表 🔖
|
||||
* @param {PageUpgradeInput} [body]
|
||||
* @param {*} [options] Override http request option.
|
||||
* @throws {RequiredError}
|
||||
* @memberof SysUpgradeApi
|
||||
*/
|
||||
public async apiSysUpgradePagePost(body?: PageUpgradeInput, options?: AxiosRequestConfig) : Promise<AxiosResponse<AdminResultSqlSugarPagedListSysUpgrade>> {
|
||||
return SysUpgradeApiFp(this.configuration).apiSysUpgradePagePost(body, options).then((request) => request(this.axios, this.basePath));
|
||||
}
|
||||
/**
|
||||
*
|
||||
* @summary 设置系统更新日志已读状态 🔖
|
||||
* @param {UpgradeInput} [body]
|
||||
* @param {*} [options] Override http request option.
|
||||
* @throws {RequiredError}
|
||||
* @memberof SysUpgradeApi
|
||||
*/
|
||||
public async apiSysUpgradeSetReadPost(body?: UpgradeInput, options?: AxiosRequestConfig) : Promise<AxiosResponse<void>> {
|
||||
return SysUpgradeApiFp(this.configuration).apiSysUpgradeSetReadPost(body, options).then((request) => request(this.axios, this.basePath));
|
||||
}
|
||||
/**
|
||||
*
|
||||
* @summary 更新系统更新日志 🔖
|
||||
* @param {UpdateUpgradeInput} [body]
|
||||
* @param {*} [options] Override http request option.
|
||||
* @throws {RequiredError}
|
||||
* @memberof SysUpgradeApi
|
||||
*/
|
||||
public async apiSysUpgradeUpdatePost(body?: UpdateUpgradeInput, options?: AxiosRequestConfig) : Promise<AxiosResponse<void>> {
|
||||
return SysUpgradeApiFp(this.configuration).apiSysUpgradeUpdatePost(body, options).then((request) => request(this.axios, this.basePath));
|
||||
}
|
||||
}
|
||||
94
Web/src/api-services/models/add-upgrade-input.ts
Normal file
94
Web/src/api-services/models/add-upgrade-input.ts
Normal file
@ -0,0 +1,94 @@
|
||||
/* tslint:disable */
|
||||
/* eslint-disable */
|
||||
/**
|
||||
* Admin.NET 通用权限开发平台
|
||||
* 让 .NET 开发更简单、更通用、更流行。整合最新技术,模块插件式开发,前后端分离,开箱即用。<br/><u><b><font color='FF0000'> 👮不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!</font></b></u>
|
||||
*
|
||||
* OpenAPI spec version: 1.0.0
|
||||
*
|
||||
*
|
||||
* NOTE: This class is auto generated by the swagger code generator program.
|
||||
* https://github.com/swagger-api/swagger-codegen.git
|
||||
* Do not edit the class manually.
|
||||
*/
|
||||
|
||||
/**
|
||||
*
|
||||
*
|
||||
* @export
|
||||
* @interface AddUpgradeInput
|
||||
*/
|
||||
export interface AddUpgradeInput {
|
||||
|
||||
/**
|
||||
* 雪花Id
|
||||
*
|
||||
* @type {number}
|
||||
* @memberof AddUpgradeInput
|
||||
*/
|
||||
id?: number;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*
|
||||
* @type {Date}
|
||||
* @memberof AddUpgradeInput
|
||||
*/
|
||||
createTime?: Date;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
*
|
||||
* @type {Date}
|
||||
* @memberof AddUpgradeInput
|
||||
*/
|
||||
updateTime?: Date | null;
|
||||
|
||||
/**
|
||||
* 创建者Id
|
||||
*
|
||||
* @type {number}
|
||||
* @memberof AddUpgradeInput
|
||||
*/
|
||||
createUserId?: number | null;
|
||||
|
||||
/**
|
||||
* 创建者姓名
|
||||
*
|
||||
* @type {string}
|
||||
* @memberof AddUpgradeInput
|
||||
*/
|
||||
createUserName?: string | null;
|
||||
|
||||
/**
|
||||
* 修改者Id
|
||||
*
|
||||
* @type {number}
|
||||
* @memberof AddUpgradeInput
|
||||
*/
|
||||
updateUserId?: number | null;
|
||||
|
||||
/**
|
||||
* 修改者姓名
|
||||
*
|
||||
* @type {string}
|
||||
* @memberof AddUpgradeInput
|
||||
*/
|
||||
updateUserName?: string | null;
|
||||
|
||||
/**
|
||||
* 软删除
|
||||
*
|
||||
* @type {boolean}
|
||||
* @memberof AddUpgradeInput
|
||||
*/
|
||||
isDelete?: boolean;
|
||||
|
||||
/**
|
||||
* 内容
|
||||
*
|
||||
* @type {string}
|
||||
* @memberof AddUpgradeInput
|
||||
*/
|
||||
content: string;
|
||||
}
|
||||
@ -0,0 +1,69 @@
|
||||
/* tslint:disable */
|
||||
/* eslint-disable */
|
||||
/**
|
||||
* Admin.NET 通用权限开发平台
|
||||
* 让 .NET 开发更简单、更通用、更流行。整合最新技术,模块插件式开发,前后端分离,开箱即用。<br/><u><b><font color='FF0000'> 👮不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!</font></b></u>
|
||||
*
|
||||
* OpenAPI spec version: 1.0.0
|
||||
*
|
||||
*
|
||||
* NOTE: This class is auto generated by the swagger code generator program.
|
||||
* https://github.com/swagger-api/swagger-codegen.git
|
||||
* Do not edit the class manually.
|
||||
*/
|
||||
|
||||
import { SqlSugarPagedListSysUpgrade } from './sql-sugar-paged-list-sys-upgrade';
|
||||
/**
|
||||
* 全局返回结果
|
||||
*
|
||||
* @export
|
||||
* @interface AdminResultSqlSugarPagedListSysUpgrade
|
||||
*/
|
||||
export interface AdminResultSqlSugarPagedListSysUpgrade {
|
||||
|
||||
/**
|
||||
* 状态码
|
||||
*
|
||||
* @type {number}
|
||||
* @memberof AdminResultSqlSugarPagedListSysUpgrade
|
||||
*/
|
||||
code?: number;
|
||||
|
||||
/**
|
||||
* 类型success、warning、error
|
||||
*
|
||||
* @type {string}
|
||||
* @memberof AdminResultSqlSugarPagedListSysUpgrade
|
||||
*/
|
||||
type?: string | null;
|
||||
|
||||
/**
|
||||
* 错误信息
|
||||
*
|
||||
* @type {string}
|
||||
* @memberof AdminResultSqlSugarPagedListSysUpgrade
|
||||
*/
|
||||
message?: string | null;
|
||||
|
||||
/**
|
||||
* @type {SqlSugarPagedListSysUpgrade}
|
||||
* @memberof AdminResultSqlSugarPagedListSysUpgrade
|
||||
*/
|
||||
result?: SqlSugarPagedListSysUpgrade;
|
||||
|
||||
/**
|
||||
* 附加数据
|
||||
*
|
||||
* @type {any}
|
||||
* @memberof AdminResultSqlSugarPagedListSysUpgrade
|
||||
*/
|
||||
extras?: any | null;
|
||||
|
||||
/**
|
||||
* 时间
|
||||
*
|
||||
* @type {Date}
|
||||
* @memberof AdminResultSqlSugarPagedListSysUpgrade
|
||||
*/
|
||||
time?: Date;
|
||||
}
|
||||
69
Web/src/api-services/models/admin-result-sys-upgrade.ts
Normal file
69
Web/src/api-services/models/admin-result-sys-upgrade.ts
Normal file
@ -0,0 +1,69 @@
|
||||
/* tslint:disable */
|
||||
/* eslint-disable */
|
||||
/**
|
||||
* Admin.NET 通用权限开发平台
|
||||
* 让 .NET 开发更简单、更通用、更流行。整合最新技术,模块插件式开发,前后端分离,开箱即用。<br/><u><b><font color='FF0000'> 👮不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!</font></b></u>
|
||||
*
|
||||
* OpenAPI spec version: 1.0.0
|
||||
*
|
||||
*
|
||||
* NOTE: This class is auto generated by the swagger code generator program.
|
||||
* https://github.com/swagger-api/swagger-codegen.git
|
||||
* Do not edit the class manually.
|
||||
*/
|
||||
|
||||
import { SysUpgrade } from './sys-upgrade';
|
||||
/**
|
||||
* 全局返回结果
|
||||
*
|
||||
* @export
|
||||
* @interface AdminResultSysUpgrade
|
||||
*/
|
||||
export interface AdminResultSysUpgrade {
|
||||
|
||||
/**
|
||||
* 状态码
|
||||
*
|
||||
* @type {number}
|
||||
* @memberof AdminResultSysUpgrade
|
||||
*/
|
||||
code?: number;
|
||||
|
||||
/**
|
||||
* 类型success、warning、error
|
||||
*
|
||||
* @type {string}
|
||||
* @memberof AdminResultSysUpgrade
|
||||
*/
|
||||
type?: string | null;
|
||||
|
||||
/**
|
||||
* 错误信息
|
||||
*
|
||||
* @type {string}
|
||||
* @memberof AdminResultSysUpgrade
|
||||
*/
|
||||
message?: string | null;
|
||||
|
||||
/**
|
||||
* @type {SysUpgrade}
|
||||
* @memberof AdminResultSysUpgrade
|
||||
*/
|
||||
result?: SysUpgrade;
|
||||
|
||||
/**
|
||||
* 附加数据
|
||||
*
|
||||
* @type {any}
|
||||
* @memberof AdminResultSysUpgrade
|
||||
*/
|
||||
extras?: any | null;
|
||||
|
||||
/**
|
||||
* 时间
|
||||
*
|
||||
* @type {Date}
|
||||
* @memberof AdminResultSysUpgrade
|
||||
*/
|
||||
time?: Date;
|
||||
}
|
||||
30
Web/src/api-services/models/delete-upgrade-input.ts
Normal file
30
Web/src/api-services/models/delete-upgrade-input.ts
Normal file
@ -0,0 +1,30 @@
|
||||
/* tslint:disable */
|
||||
/* eslint-disable */
|
||||
/**
|
||||
* Admin.NET 通用权限开发平台
|
||||
* 让 .NET 开发更简单、更通用、更流行。整合最新技术,模块插件式开发,前后端分离,开箱即用。<br/><u><b><font color='FF0000'> 👮不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!</font></b></u>
|
||||
*
|
||||
* OpenAPI spec version: 1.0.0
|
||||
*
|
||||
*
|
||||
* NOTE: This class is auto generated by the swagger code generator program.
|
||||
* https://github.com/swagger-api/swagger-codegen.git
|
||||
* Do not edit the class manually.
|
||||
*/
|
||||
|
||||
/**
|
||||
*
|
||||
*
|
||||
* @export
|
||||
* @interface DeleteUpgradeInput
|
||||
*/
|
||||
export interface DeleteUpgradeInput {
|
||||
|
||||
/**
|
||||
* 主键Id
|
||||
*
|
||||
* @type {number}
|
||||
* @memberof DeleteUpgradeInput
|
||||
*/
|
||||
id: number;
|
||||
}
|
||||
@ -19,6 +19,7 @@ export * from './add-subscribe-message-template-input';
|
||||
export * from './add-sys-app-input';
|
||||
export * from './add-sys-ldap-input';
|
||||
export * from './add-tenant-input';
|
||||
export * from './add-upgrade-input';
|
||||
export * from './add-user-input';
|
||||
export * from './admin-result-boolean';
|
||||
export * from './admin-result-captcha-output';
|
||||
@ -99,6 +100,7 @@ export * from './admin-result-sql-sugar-paged-list-sys-online-user';
|
||||
export * from './admin-result-sql-sugar-paged-list-sys-plugin';
|
||||
export * from './admin-result-sql-sugar-paged-list-sys-print';
|
||||
export * from './admin-result-sql-sugar-paged-list-sys-region';
|
||||
export * from './admin-result-sql-sugar-paged-list-sys-upgrade';
|
||||
export * from './admin-result-sql-sugar-paged-list-sys-wechat-pay';
|
||||
export * from './admin-result-sql-sugar-paged-list-tenant-output';
|
||||
export * from './admin-result-sql-sugar-paged-list-user-output';
|
||||
@ -115,6 +117,7 @@ export * from './admin-result-sys-log-ex';
|
||||
export * from './admin-result-sys-log-op';
|
||||
export * from './admin-result-sys-print';
|
||||
export * from './admin-result-sys-schedule';
|
||||
export * from './admin-result-sys-upgrade';
|
||||
export * from './admin-result-sys-user';
|
||||
export * from './admin-result-sys-wechat-pay';
|
||||
export * from './admin-result-visual-db-table';
|
||||
@ -194,6 +197,7 @@ export * from './delete-role-input';
|
||||
export * from './delete-schedule-input';
|
||||
export * from './delete-sys-ldap-input';
|
||||
export * from './delete-tenant-input';
|
||||
export * from './delete-upgrade-input';
|
||||
export * from './delete-user-input';
|
||||
export * from './dict-data-input';
|
||||
export * from './dict-type-input';
|
||||
@ -289,6 +293,7 @@ export * from './page-role-input';
|
||||
export * from './page-role-output';
|
||||
export * from './page-sys-wechat-pay-input';
|
||||
export * from './page-tenant-input';
|
||||
export * from './page-upgrade-input';
|
||||
export * from './page-user-input';
|
||||
export * from './page-vis-log-input';
|
||||
export * from './parameter-attributes';
|
||||
@ -346,6 +351,7 @@ export * from './sql-sugar-paged-list-sys-online-user';
|
||||
export * from './sql-sugar-paged-list-sys-plugin';
|
||||
export * from './sql-sugar-paged-list-sys-print';
|
||||
export * from './sql-sugar-paged-list-sys-region';
|
||||
export * from './sql-sugar-paged-list-sys-upgrade';
|
||||
export * from './sql-sugar-paged-list-sys-wechat-pay';
|
||||
export * from './sql-sugar-paged-list-tenant-output';
|
||||
export * from './sql-sugar-paged-list-user-output';
|
||||
@ -387,6 +393,7 @@ export * from './sys-plugin';
|
||||
export * from './sys-print';
|
||||
export * from './sys-region';
|
||||
export * from './sys-schedule';
|
||||
export * from './sys-upgrade';
|
||||
export * from './sys-user';
|
||||
export * from './sys-user-ext-org';
|
||||
export * from './sys-user-ldap';
|
||||
@ -431,7 +438,9 @@ export * from './update-schedule-input';
|
||||
export * from './update-sys-app-input';
|
||||
export * from './update-sys-ldap-input';
|
||||
export * from './update-tenant-input';
|
||||
export * from './update-upgrade-input';
|
||||
export * from './update-user-input';
|
||||
export * from './upgrade-input';
|
||||
export * from './upload-file-from-base64-input';
|
||||
export * from './user-input';
|
||||
export * from './user-menu-input';
|
||||
|
||||
84
Web/src/api-services/models/page-upgrade-input.ts
Normal file
84
Web/src/api-services/models/page-upgrade-input.ts
Normal file
@ -0,0 +1,84 @@
|
||||
/* tslint:disable */
|
||||
/* eslint-disable */
|
||||
/**
|
||||
* Admin.NET 通用权限开发平台
|
||||
* 让 .NET 开发更简单、更通用、更流行。整合最新技术,模块插件式开发,前后端分离,开箱即用。<br/><u><b><font color='FF0000'> 👮不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!</font></b></u>
|
||||
*
|
||||
* OpenAPI spec version: 1.0.0
|
||||
*
|
||||
*
|
||||
* NOTE: This class is auto generated by the swagger code generator program.
|
||||
* https://github.com/swagger-api/swagger-codegen.git
|
||||
* Do not edit the class manually.
|
||||
*/
|
||||
|
||||
import { Filter } from './filter';
|
||||
import { Search } from './search';
|
||||
/**
|
||||
*
|
||||
*
|
||||
* @export
|
||||
* @interface PageUpgradeInput
|
||||
*/
|
||||
export interface PageUpgradeInput {
|
||||
|
||||
/**
|
||||
* @type {Search}
|
||||
* @memberof PageUpgradeInput
|
||||
*/
|
||||
search?: Search;
|
||||
|
||||
/**
|
||||
* 模糊查询关键字
|
||||
*
|
||||
* @type {string}
|
||||
* @memberof PageUpgradeInput
|
||||
*/
|
||||
keyword?: string | null;
|
||||
|
||||
/**
|
||||
* @type {Filter}
|
||||
* @memberof PageUpgradeInput
|
||||
*/
|
||||
filter?: Filter;
|
||||
|
||||
/**
|
||||
* 当前页码
|
||||
*
|
||||
* @type {number}
|
||||
* @memberof PageUpgradeInput
|
||||
*/
|
||||
page?: number;
|
||||
|
||||
/**
|
||||
* 页码容量
|
||||
*
|
||||
* @type {number}
|
||||
* @memberof PageUpgradeInput
|
||||
*/
|
||||
pageSize?: number;
|
||||
|
||||
/**
|
||||
* 排序字段
|
||||
*
|
||||
* @type {string}
|
||||
* @memberof PageUpgradeInput
|
||||
*/
|
||||
field?: string | null;
|
||||
|
||||
/**
|
||||
* 排序方向
|
||||
*
|
||||
* @type {string}
|
||||
* @memberof PageUpgradeInput
|
||||
*/
|
||||
order?: string | null;
|
||||
|
||||
/**
|
||||
* 降序排序
|
||||
*
|
||||
* @type {string}
|
||||
* @memberof PageUpgradeInput
|
||||
*/
|
||||
descStr?: string | null;
|
||||
}
|
||||
@ -0,0 +1,79 @@
|
||||
/* tslint:disable */
|
||||
/* eslint-disable */
|
||||
/**
|
||||
* Admin.NET 通用权限开发平台
|
||||
* 让 .NET 开发更简单、更通用、更流行。整合最新技术,模块插件式开发,前后端分离,开箱即用。<br/><u><b><font color='FF0000'> 👮不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!</font></b></u>
|
||||
*
|
||||
* OpenAPI spec version: 1.0.0
|
||||
*
|
||||
*
|
||||
* NOTE: This class is auto generated by the swagger code generator program.
|
||||
* https://github.com/swagger-api/swagger-codegen.git
|
||||
* Do not edit the class manually.
|
||||
*/
|
||||
|
||||
import { SysUpgrade } from './sys-upgrade';
|
||||
/**
|
||||
* 分页泛型集合
|
||||
*
|
||||
* @export
|
||||
* @interface SqlSugarPagedListSysUpgrade
|
||||
*/
|
||||
export interface SqlSugarPagedListSysUpgrade {
|
||||
|
||||
/**
|
||||
* 页码
|
||||
*
|
||||
* @type {number}
|
||||
* @memberof SqlSugarPagedListSysUpgrade
|
||||
*/
|
||||
page?: number;
|
||||
|
||||
/**
|
||||
* 页容量
|
||||
*
|
||||
* @type {number}
|
||||
* @memberof SqlSugarPagedListSysUpgrade
|
||||
*/
|
||||
pageSize?: number;
|
||||
|
||||
/**
|
||||
* 总条数
|
||||
*
|
||||
* @type {number}
|
||||
* @memberof SqlSugarPagedListSysUpgrade
|
||||
*/
|
||||
total?: number;
|
||||
|
||||
/**
|
||||
* 总页数
|
||||
*
|
||||
* @type {number}
|
||||
* @memberof SqlSugarPagedListSysUpgrade
|
||||
*/
|
||||
totalPages?: number;
|
||||
|
||||
/**
|
||||
* 当前页集合
|
||||
*
|
||||
* @type {Array<SysUpgrade>}
|
||||
* @memberof SqlSugarPagedListSysUpgrade
|
||||
*/
|
||||
items?: Array<SysUpgrade> | null;
|
||||
|
||||
/**
|
||||
* 是否有上一页
|
||||
*
|
||||
* @type {boolean}
|
||||
* @memberof SqlSugarPagedListSysUpgrade
|
||||
*/
|
||||
hasPrevPage?: boolean;
|
||||
|
||||
/**
|
||||
* 是否有下一页
|
||||
*
|
||||
* @type {boolean}
|
||||
* @memberof SqlSugarPagedListSysUpgrade
|
||||
*/
|
||||
hasNextPage?: boolean;
|
||||
}
|
||||
94
Web/src/api-services/models/sys-upgrade.ts
Normal file
94
Web/src/api-services/models/sys-upgrade.ts
Normal file
@ -0,0 +1,94 @@
|
||||
/* tslint:disable */
|
||||
/* eslint-disable */
|
||||
/**
|
||||
* Admin.NET 通用权限开发平台
|
||||
* 让 .NET 开发更简单、更通用、更流行。整合最新技术,模块插件式开发,前后端分离,开箱即用。<br/><u><b><font color='FF0000'> 👮不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!</font></b></u>
|
||||
*
|
||||
* OpenAPI spec version: 1.0.0
|
||||
*
|
||||
*
|
||||
* NOTE: This class is auto generated by the swagger code generator program.
|
||||
* https://github.com/swagger-api/swagger-codegen.git
|
||||
* Do not edit the class manually.
|
||||
*/
|
||||
|
||||
/**
|
||||
* 系统更新日志表
|
||||
*
|
||||
* @export
|
||||
* @interface SysUpgrade
|
||||
*/
|
||||
export interface SysUpgrade {
|
||||
|
||||
/**
|
||||
* 雪花Id
|
||||
*
|
||||
* @type {number}
|
||||
* @memberof SysUpgrade
|
||||
*/
|
||||
id?: number;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*
|
||||
* @type {Date}
|
||||
* @memberof SysUpgrade
|
||||
*/
|
||||
createTime?: Date;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
*
|
||||
* @type {Date}
|
||||
* @memberof SysUpgrade
|
||||
*/
|
||||
updateTime?: Date | null;
|
||||
|
||||
/**
|
||||
* 创建者Id
|
||||
*
|
||||
* @type {number}
|
||||
* @memberof SysUpgrade
|
||||
*/
|
||||
createUserId?: number | null;
|
||||
|
||||
/**
|
||||
* 创建者姓名
|
||||
*
|
||||
* @type {string}
|
||||
* @memberof SysUpgrade
|
||||
*/
|
||||
createUserName?: string | null;
|
||||
|
||||
/**
|
||||
* 修改者Id
|
||||
*
|
||||
* @type {number}
|
||||
* @memberof SysUpgrade
|
||||
*/
|
||||
updateUserId?: number | null;
|
||||
|
||||
/**
|
||||
* 修改者姓名
|
||||
*
|
||||
* @type {string}
|
||||
* @memberof SysUpgrade
|
||||
*/
|
||||
updateUserName?: string | null;
|
||||
|
||||
/**
|
||||
* 软删除
|
||||
*
|
||||
* @type {boolean}
|
||||
* @memberof SysUpgrade
|
||||
*/
|
||||
isDelete?: boolean;
|
||||
|
||||
/**
|
||||
* 内容
|
||||
*
|
||||
* @type {string}
|
||||
* @memberof SysUpgrade
|
||||
*/
|
||||
content: string;
|
||||
}
|
||||
94
Web/src/api-services/models/update-upgrade-input.ts
Normal file
94
Web/src/api-services/models/update-upgrade-input.ts
Normal file
@ -0,0 +1,94 @@
|
||||
/* tslint:disable */
|
||||
/* eslint-disable */
|
||||
/**
|
||||
* Admin.NET 通用权限开发平台
|
||||
* 让 .NET 开发更简单、更通用、更流行。整合最新技术,模块插件式开发,前后端分离,开箱即用。<br/><u><b><font color='FF0000'> 👮不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!</font></b></u>
|
||||
*
|
||||
* OpenAPI spec version: 1.0.0
|
||||
*
|
||||
*
|
||||
* NOTE: This class is auto generated by the swagger code generator program.
|
||||
* https://github.com/swagger-api/swagger-codegen.git
|
||||
* Do not edit the class manually.
|
||||
*/
|
||||
|
||||
/**
|
||||
*
|
||||
*
|
||||
* @export
|
||||
* @interface UpdateUpgradeInput
|
||||
*/
|
||||
export interface UpdateUpgradeInput {
|
||||
|
||||
/**
|
||||
* 雪花Id
|
||||
*
|
||||
* @type {number}
|
||||
* @memberof UpdateUpgradeInput
|
||||
*/
|
||||
id?: number;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*
|
||||
* @type {Date}
|
||||
* @memberof UpdateUpgradeInput
|
||||
*/
|
||||
createTime?: Date;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
*
|
||||
* @type {Date}
|
||||
* @memberof UpdateUpgradeInput
|
||||
*/
|
||||
updateTime?: Date | null;
|
||||
|
||||
/**
|
||||
* 创建者Id
|
||||
*
|
||||
* @type {number}
|
||||
* @memberof UpdateUpgradeInput
|
||||
*/
|
||||
createUserId?: number | null;
|
||||
|
||||
/**
|
||||
* 创建者姓名
|
||||
*
|
||||
* @type {string}
|
||||
* @memberof UpdateUpgradeInput
|
||||
*/
|
||||
createUserName?: string | null;
|
||||
|
||||
/**
|
||||
* 修改者Id
|
||||
*
|
||||
* @type {number}
|
||||
* @memberof UpdateUpgradeInput
|
||||
*/
|
||||
updateUserId?: number | null;
|
||||
|
||||
/**
|
||||
* 修改者姓名
|
||||
*
|
||||
* @type {string}
|
||||
* @memberof UpdateUpgradeInput
|
||||
*/
|
||||
updateUserName?: string | null;
|
||||
|
||||
/**
|
||||
* 软删除
|
||||
*
|
||||
* @type {boolean}
|
||||
* @memberof UpdateUpgradeInput
|
||||
*/
|
||||
isDelete?: boolean;
|
||||
|
||||
/**
|
||||
* 内容
|
||||
*
|
||||
* @type {string}
|
||||
* @memberof UpdateUpgradeInput
|
||||
*/
|
||||
content: string;
|
||||
}
|
||||
30
Web/src/api-services/models/upgrade-input.ts
Normal file
30
Web/src/api-services/models/upgrade-input.ts
Normal file
@ -0,0 +1,30 @@
|
||||
/* tslint:disable */
|
||||
/* eslint-disable */
|
||||
/**
|
||||
* Admin.NET 通用权限开发平台
|
||||
* 让 .NET 开发更简单、更通用、更流行。整合最新技术,模块插件式开发,前后端分离,开箱即用。<br/><u><b><font color='FF0000'> 👮不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!</font></b></u>
|
||||
*
|
||||
* OpenAPI spec version: 1.0.0
|
||||
*
|
||||
*
|
||||
* NOTE: This class is auto generated by the swagger code generator program.
|
||||
* https://github.com/swagger-api/swagger-codegen.git
|
||||
* Do not edit the class manually.
|
||||
*/
|
||||
|
||||
/**
|
||||
*
|
||||
*
|
||||
* @export
|
||||
* @interface UpgradeInput
|
||||
*/
|
||||
export interface UpgradeInput {
|
||||
|
||||
/**
|
||||
* 主键Id
|
||||
*
|
||||
* @type {number}
|
||||
* @memberof UpgradeInput
|
||||
*/
|
||||
id: number;
|
||||
}
|
||||
@ -84,6 +84,7 @@
|
||||
<Search ref="searchRef" />
|
||||
<OnlineUser ref="onlineUserRef" />
|
||||
<ChangePassword ref="changePasswordRef" />
|
||||
<UpgradeInfo ref="upgradeInfoRef" />
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@ -105,13 +106,14 @@ import { signalR } from '/@/views/system/onlineUser/signalR';
|
||||
import { Avatar, CircleCloseFilled, Loading, Lock } from '@element-plus/icons-vue';
|
||||
|
||||
import { clearAccessTokens, getAPI } from '/@/utils/axios-utils';
|
||||
import { SysAuthApi, SysNoticeApi, SysUserApi } from '/@/api-services/api';
|
||||
import { SysAuthApi, SysNoticeApi, SysUpgradeApi, SysUserApi } from '/@/api-services/api';
|
||||
|
||||
// 引入组件
|
||||
const UserNews = defineAsyncComponent(() => import('/@/layout/navBars/topBar/userNews.vue'));
|
||||
const Search = defineAsyncComponent(() => import('/@/layout/navBars/topBar/search.vue'));
|
||||
const OnlineUser = defineAsyncComponent(() => import('/@/views/system/onlineUser/index.vue'));
|
||||
const ChangePassword = defineAsyncComponent(() => import('/@/views/system/user/component/changePassword.vue'));
|
||||
const UpgradeInfo = defineAsyncComponent(() => import('/@/views/system/upgrade/component/upgradeInfo.vue'));
|
||||
|
||||
// 定义变量内容
|
||||
const { locale, t } = useI18n();
|
||||
@ -123,6 +125,7 @@ const { themeConfig } = storeToRefs(storesThemeConfig);
|
||||
const searchRef = ref();
|
||||
const onlineUserRef = ref();
|
||||
const changePasswordRef = ref();
|
||||
const upgradeInfoRef = ref();
|
||||
const state = reactive({
|
||||
isScreenfull: false,
|
||||
disabledI18n: 'zh-cn',
|
||||
@ -263,6 +266,12 @@ onMounted(async () => {
|
||||
// notice.readStatus = 1;
|
||||
// });
|
||||
|
||||
// 加载系统更新日志
|
||||
var res1 = await getAPI(SysUpgradeApi).apiSysUpgradeLastUnReadGet();
|
||||
if (res1.data.result != null) {
|
||||
upgradeInfoRef.value?.openDialog(res1.data.result);
|
||||
}
|
||||
|
||||
// 是否修改密码
|
||||
await changePassword();
|
||||
});
|
||||
|
||||
83
Web/src/views/system/upgrade/component/editUpgrade.vue
Normal file
83
Web/src/views/system/upgrade/component/editUpgrade.vue
Normal file
@ -0,0 +1,83 @@
|
||||
<template>
|
||||
<div class="sys-upgrade-container">
|
||||
<vxe-modal v-model="state.isShowDialog" width="60vw" height="600px" resize show-footer show-zoom @close="cancel">
|
||||
<template #title>
|
||||
<div>
|
||||
<el-icon size="16" style="margin-right: 3px; display: inline; vertical-align: middle"> <ele-Edit /> </el-icon>
|
||||
<span> {{ props.title }} </span>
|
||||
</div>
|
||||
</template>
|
||||
<template #default>
|
||||
<el-form :model="state.ruleForm" ref="ruleFormRef" label-width="auto">
|
||||
<el-form-item label="" prop="content" :rules="[{ required: true, message: '系统更新日志不能为空', trigger: 'blur' }]">
|
||||
<Editor v-model:get-html="state.ruleForm.content" style="width: 100%; height: 100%" />
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</template>
|
||||
<template #footer>
|
||||
<vxe-button @click="cancel">取 消</vxe-button>
|
||||
<vxe-button status="primary" @click="submit">确 定</vxe-button>
|
||||
</template>
|
||||
</vxe-modal>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup name="sysUpgradeEdit">
|
||||
import { reactive, ref } from 'vue';
|
||||
import Editor from '/@/components/editor/index.vue';
|
||||
|
||||
import { getAPI } from '/@/utils/axios-utils';
|
||||
import { SysUpgradeApi } from '/@/api-services/api';
|
||||
import { UpdateUpgradeInput } from '/@/api-services/models';
|
||||
|
||||
const props = defineProps({
|
||||
title: String,
|
||||
});
|
||||
const emits = defineEmits(['handleQuery']);
|
||||
const ruleFormRef = ref();
|
||||
const state = reactive({
|
||||
isShowDialog: false,
|
||||
ruleForm: {} as UpdateUpgradeInput,
|
||||
});
|
||||
|
||||
// 打开弹窗
|
||||
const openDialog = (row: any) => {
|
||||
state.ruleForm = JSON.parse(JSON.stringify(row));
|
||||
state.isShowDialog = true;
|
||||
ruleFormRef.value?.resetFields();
|
||||
};
|
||||
|
||||
// 关闭弹窗
|
||||
const closeDialog = () => {
|
||||
emits('handleQuery');
|
||||
state.isShowDialog = false;
|
||||
};
|
||||
|
||||
// 取消
|
||||
const cancel = () => {
|
||||
state.isShowDialog = false;
|
||||
};
|
||||
|
||||
// 提交
|
||||
const submit = () => {
|
||||
ruleFormRef.value.validate(async (valid: boolean) => {
|
||||
if (!valid || state.ruleForm.content == undefined || state.ruleForm.content.length < 20) return;
|
||||
if (state.ruleForm.id != undefined && state.ruleForm.id > 0) {
|
||||
await getAPI(SysUpgradeApi).apiSysUpgradeUpdatePost(state.ruleForm);
|
||||
} else {
|
||||
await getAPI(SysUpgradeApi).apiSysUpgradeAddPost(state.ruleForm);
|
||||
}
|
||||
closeDialog();
|
||||
});
|
||||
};
|
||||
|
||||
// 导出对象
|
||||
defineExpose({ openDialog });
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss">
|
||||
// :deep(.vxe-modal--header) {
|
||||
// background: var(--el-color-primary) !important;
|
||||
// color: #fff;
|
||||
// }
|
||||
</style>
|
||||
43
Web/src/views/system/upgrade/component/upgradeInfo.vue
Normal file
43
Web/src/views/system/upgrade/component/upgradeInfo.vue
Normal file
@ -0,0 +1,43 @@
|
||||
<template>
|
||||
<div class="sys-upgrade-container">
|
||||
<el-dialog v-model="state.isShowDialog" draggable :close-on-click-modal="false" width="50vw" :before-close="cancel">
|
||||
<template #header>
|
||||
<div style="color: #fff">
|
||||
<el-icon size="16" style="margin-right: 3px; display: inline; vertical-align: middle"> <ele-InfoFilled /> </el-icon>
|
||||
<span> 系统更新日志 </span>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<div v-html="state.ruleForm.content" style="padding: 20px"></div>
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup>
|
||||
import { reactive } from 'vue';
|
||||
|
||||
import { getAPI } from '/@/utils/axios-utils';
|
||||
import { SysUpgradeApi } from '/@/api-services/api';
|
||||
|
||||
const state = reactive({
|
||||
isShowDialog: false,
|
||||
ruleForm: {} as any,
|
||||
});
|
||||
|
||||
// 打开弹窗
|
||||
const openDialog = (row: any) => {
|
||||
state.ruleForm = JSON.parse(JSON.stringify(row));
|
||||
state.isShowDialog = true;
|
||||
};
|
||||
|
||||
// 关闭弹窗
|
||||
const cancel = async () => {
|
||||
// 设置当前用户已读
|
||||
await getAPI(SysUpgradeApi).apiSysUpgradeSetReadPost({ id: state.ruleForm.id });
|
||||
|
||||
state.isShowDialog = false;
|
||||
};
|
||||
|
||||
// 导出对象
|
||||
defineExpose({ openDialog });
|
||||
</script>
|
||||
143
Web/src/views/system/upgrade/index.vue
Normal file
143
Web/src/views/system/upgrade/index.vue
Normal file
@ -0,0 +1,143 @@
|
||||
<template>
|
||||
<div class="sys-upgrade-container">
|
||||
<el-card class="full-table" shadow="hover" style="margin-top: 5px">
|
||||
<vxe-grid ref="xGrid" class="xGrid-style" v-bind="options" v-on="gridEvents">
|
||||
<template #toolbar_buttons>
|
||||
<el-button type="primary" icon="ele-Plus" @click="handleAdd" v-auth="'sysNotice/add'"> 新增 </el-button>
|
||||
</template>
|
||||
<template #toolbar_tools> </template>
|
||||
<template #empty>
|
||||
<el-empty :image-size="200" />
|
||||
</template>
|
||||
<template #row_record="{ row }">
|
||||
<ModifyRecord :data="row" />
|
||||
</template>
|
||||
<template #row_buttons="{ row }">
|
||||
<el-button icon="ele-Edit" size="small" text type="primary" @click="handleEdit(row)" />
|
||||
<!-- <el-button icon="ele-Delete" size="small" text type="danger" @click="handleDelete(row)" /> -->
|
||||
</template>
|
||||
</vxe-grid>
|
||||
</el-card>
|
||||
|
||||
<EditUpgrade ref="editUpgradeRef" :title="state.title" @handleQuery="handleQuery" />
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup name="sysUpgrade">
|
||||
import { onMounted, reactive, ref } from 'vue';
|
||||
import { ElMessageBox, ElMessage } from 'element-plus';
|
||||
import { VxeGridInstance, VxeGridListeners, VxeGridPropTypes } from 'vxe-table';
|
||||
import { useVxeTable } from '/@/hooks/useVxeTableOptionsHook';
|
||||
import { Local } from '/@/utils/storage';
|
||||
|
||||
import EditUpgrade from './component/editUpgrade.vue';
|
||||
import ModifyRecord from '/@/components/table/modifyRecord.vue';
|
||||
|
||||
import { getAPI } from '/@/utils/axios-utils';
|
||||
import { SysUpgradeApi } from '/@/api-services/api';
|
||||
import { SysUpgrade, PageUpgradeInput } from '/@/api-services/models';
|
||||
|
||||
const xGrid = ref<VxeGridInstance>();
|
||||
const editUpgradeRef = ref<InstanceType<typeof EditUpgrade>>();
|
||||
const state = reactive({
|
||||
queryParams: {
|
||||
title: undefined,
|
||||
type: undefined,
|
||||
},
|
||||
localPageParam: {
|
||||
pageSize: 50 as number,
|
||||
defaultSort: { field: 'orderNo', order: 'asc', descStr: 'desc' },
|
||||
},
|
||||
visible: false,
|
||||
title: '',
|
||||
});
|
||||
|
||||
// 本地存储参数
|
||||
const localPageParamKey = 'localPageParam:sysUpgrade';
|
||||
// 表格参数配置
|
||||
const options = useVxeTable<SysUpgrade>(
|
||||
{
|
||||
id: 'sysUpgrade',
|
||||
name: '更新日志',
|
||||
columns: [
|
||||
{ type: 'seq', title: '序号', width: 60, fixed: 'left' },
|
||||
{ field: 'content', title: '系统更新日志', align: 'left', headerAlign: 'center', type: 'html', showOverflow: 'tooltip' },
|
||||
{ field: 'createTime', title: '创建时间', width: 160, showOverflow: 'tooltip' },
|
||||
{ field: '', title: '修改记录', width: 100, showOverflow: 'tooltip', slots: { default: 'row_record' } },
|
||||
{ title: '操作', fixed: 'right', width: 100, showOverflow: true, slots: { default: 'row_buttons' } },
|
||||
],
|
||||
},
|
||||
// vxeGrid配置参数(此处可覆写任何参数),参考vxe-table官方文档
|
||||
{
|
||||
// 代理配置
|
||||
proxyConfig: { autoLoad: true, ajax: { query: ({ page, sort }) => handleQueryApi(page, sort) } },
|
||||
// 排序配置
|
||||
sortConfig: { defaultSort: Local.get(localPageParamKey)?.defaultSort || state.localPageParam.defaultSort },
|
||||
// 分页配置
|
||||
pagerConfig: { pageSize: Local.get(localPageParamKey)?.pageSize || state.localPageParam.pageSize },
|
||||
// 工具栏配置
|
||||
toolbarConfig: { export: false },
|
||||
// 行设置
|
||||
rowConfig: { height: 120 },
|
||||
}
|
||||
);
|
||||
|
||||
// 页面初始化
|
||||
onMounted(() => {
|
||||
state.localPageParam = Local.get(localPageParamKey) || state.localPageParam;
|
||||
});
|
||||
|
||||
// 查询api
|
||||
const handleQueryApi = async (page: VxeGridPropTypes.ProxyAjaxQueryPageParams, sort: VxeGridPropTypes.ProxyAjaxQuerySortCheckedParams) => {
|
||||
const params = Object.assign(state.queryParams, { page: page.currentPage, pageSize: page.pageSize, field: sort.field, order: sort.order, descStr: 'desc' }) as PageUpgradeInput;
|
||||
return getAPI(SysUpgradeApi).apiSysUpgradePagePost(params);
|
||||
};
|
||||
|
||||
// 查询操作
|
||||
const handleQuery = async (reset = false) => {
|
||||
options.loading = true;
|
||||
reset ? await xGrid.value?.commitProxy('reload') : await xGrid.value?.commitProxy('query');
|
||||
options.loading = false;
|
||||
};
|
||||
|
||||
// 打开新增页面
|
||||
const handleAdd = () => {
|
||||
state.title = '添加系统更新日志';
|
||||
editUpgradeRef.value?.openDialog({ type: 1 });
|
||||
};
|
||||
|
||||
// 打开编辑页面
|
||||
const handleEdit = (row: any) => {
|
||||
state.title = '编辑系统更新日志';
|
||||
editUpgradeRef.value?.openDialog(row);
|
||||
};
|
||||
|
||||
// 删除
|
||||
const handleDelete = (row: any) => {
|
||||
ElMessageBox.confirm(`确定删除系统更新日志:【${row.createTime}】?`, '提示', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning',
|
||||
})
|
||||
.then(async () => {
|
||||
await getAPI(SysUpgradeApi).apiSysUpgradeDeletePost({ id: row.id });
|
||||
handleQuery();
|
||||
ElMessage.success('删除成功');
|
||||
})
|
||||
.catch(() => {});
|
||||
};
|
||||
|
||||
// 表格事件
|
||||
const gridEvents: VxeGridListeners<SysUpgrade> = {
|
||||
// 只对 pager-config 配置时有效,分页发生改变时会触发该事件
|
||||
async pageChange({ pageSize }) {
|
||||
state.localPageParam.pageSize = pageSize;
|
||||
Local.set(localPageParamKey, state.localPageParam);
|
||||
},
|
||||
// 当排序条件发生变化时会触发该事件
|
||||
async sortChange({ field, order }) {
|
||||
state.localPageParam.defaultSort = { field: field, order: order!, descStr: 'desc' };
|
||||
Local.set(localPageParamKey, state.localPageParam);
|
||||
},
|
||||
};
|
||||
</script>
|
||||
Loading…
Reference in New Issue
Block a user