mirror of
https://github.com/nsnail/NetAdmin.git
synced 2025-04-20 05:02:50 +08:00
parent
d9c7085472
commit
b01b8b24ba
@ -6,7 +6,7 @@
|
||||
"Id": 373837717815301,
|
||||
"Name": "home",
|
||||
"Path": "/home",
|
||||
"Sort": 100,
|
||||
"Sort": 999,
|
||||
"Title": "主控面板",
|
||||
"Type": 1
|
||||
},
|
||||
|
@ -14,5 +14,25 @@
|
||||
{
|
||||
"ApiId": "api/sys/user",
|
||||
"RoleId": 371729946431493
|
||||
},
|
||||
{
|
||||
"ApiId": "api/sys/site.msg/unread.count",
|
||||
"RoleId": 371729946431493,
|
||||
},
|
||||
{
|
||||
"ApiId": "api/sys/site.msg",
|
||||
"RoleId": 371729946431493,
|
||||
},
|
||||
{
|
||||
"ApiId": "api/sys/site.msg/get.mine",
|
||||
"RoleId": 371729946431493,
|
||||
},
|
||||
{
|
||||
"ApiId": "api/sys/site.msg/paged.query.mine",
|
||||
"RoleId": 371729946431493,
|
||||
},
|
||||
{
|
||||
"ApiId": "api/sys/site.msg/set.site.msg.status",
|
||||
"RoleId": 371729946431493,
|
||||
}
|
||||
]
|
@ -23,7 +23,7 @@
|
||||
<PrivateAssets>all</PrivateAssets>
|
||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||
</PackageReference>
|
||||
<PackageReference Include="SonarAnalyzer.CSharp" Version="9.25.0.90414">
|
||||
<PackageReference Include="SonarAnalyzer.CSharp" Version="9.25.1.91650">
|
||||
<PrivateAssets>all</PrivateAssets>
|
||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||
</PackageReference>
|
||||
|
@ -4,6 +4,6 @@
|
||||
<ProjectReference Include="../NetAdmin.AdmServer.Host/NetAdmin.AdmServer.Host.csproj"/>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.10.0-release-24177-07"/>
|
||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.10.0"/>
|
||||
</ItemGroup>
|
||||
</Project>
|
@ -0,0 +1,29 @@
|
||||
using NetAdmin.Application.Repositories;
|
||||
using NetAdmin.Domain.DbMaps.Dependency;
|
||||
using RedLockNet;
|
||||
|
||||
namespace NetAdmin.Application.Services;
|
||||
|
||||
/// <summary>
|
||||
/// RedLocker Service Base
|
||||
/// </summary>
|
||||
public abstract class RedLockerService<T1, T2>(DefaultRepository<T1> rpo, RedLocker redLocker)
|
||||
: RepositoryService<T1, T2>(rpo)
|
||||
where T1 : EntityBase
|
||||
{
|
||||
/// <summary>
|
||||
/// 获取锁
|
||||
/// </summary>
|
||||
/// <exception cref="NetAdminGetLockerException">NetAdminGetLockerException</exception>
|
||||
protected async Task<IRedLock> GetLockerAsync(string lockName)
|
||||
{
|
||||
// 加锁
|
||||
var redLock = await redLocker.RedLockFactory.CreateLockAsync( //
|
||||
lockName, TimeSpan.FromSeconds(Numbers.SECS_RED_LOCK_EXPIRY)
|
||||
, TimeSpan.FromSeconds(Numbers.SECS_RED_LOCK_WAIT)
|
||||
, TimeSpan.FromSeconds(Numbers.SECS_RED_LOCK_RETRY))
|
||||
.ConfigureAwait(false);
|
||||
|
||||
return redLock.IsAcquired ? redLock : throw new NetAdminGetLockerException();
|
||||
}
|
||||
}
|
@ -12,7 +12,7 @@ public sealed class MobileAttribute : RegexAttribute
|
||||
public MobileAttribute() //
|
||||
: base(Chars.RGX_MOBILE)
|
||||
{
|
||||
ErrorMessageResourceName = nameof(Ln.手机号码不正确);
|
||||
ErrorMessageResourceName = nameof(Ln.手机号不正确);
|
||||
ErrorMessageResourceType = typeof(Ln);
|
||||
}
|
||||
}
|
@ -61,7 +61,11 @@ public record Sys_Dept : VersionEntity, IFieldEnabled, IFieldSummary, IFieldSort
|
||||
/// <summary>
|
||||
/// 部门描述
|
||||
/// </summary>
|
||||
#if DBTYPE_SQLITE
|
||||
[Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_255)]
|
||||
#else
|
||||
[Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_MAX)]
|
||||
#endif
|
||||
[JsonIgnore]
|
||||
public virtual string Summary { get; init; }
|
||||
}
|
@ -68,21 +68,33 @@ public record Sys_Job : VersionEntity, IFieldEnabled, IFieldSummary
|
||||
/// <summary>
|
||||
/// 请求体
|
||||
/// </summary>
|
||||
#if DBTYPE_SQLITE
|
||||
[Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_255)]
|
||||
#else
|
||||
[Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_MAX)]
|
||||
#endif
|
||||
[JsonIgnore]
|
||||
public virtual string RequestBody { get; init; }
|
||||
|
||||
/// <summary>
|
||||
/// 请求头
|
||||
/// </summary>
|
||||
#if DBTYPE_SQLITE
|
||||
[Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_255)]
|
||||
#else
|
||||
[Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_MAX)]
|
||||
#endif
|
||||
[JsonIgnore]
|
||||
public virtual string RequestHeader { get; init; }
|
||||
|
||||
/// <summary>
|
||||
/// 请求的网络地址
|
||||
/// </summary>
|
||||
#if DBTYPE_SQLITE
|
||||
[Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_255)]
|
||||
#else
|
||||
[Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_MAX)]
|
||||
#endif
|
||||
[JsonIgnore]
|
||||
public virtual string RequestUrl { get; init; }
|
||||
|
||||
@ -94,7 +106,11 @@ public record Sys_Job : VersionEntity, IFieldEnabled, IFieldSummary
|
||||
public virtual JobStatues Status { get; init; }
|
||||
|
||||
/// <inheritdoc cref="IFieldSummary.Summary" />
|
||||
#if DBTYPE_SQLITE
|
||||
[Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_255)]
|
||||
#else
|
||||
[Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_MAX)]
|
||||
#endif
|
||||
[JsonIgnore]
|
||||
public virtual string Summary { get; init; }
|
||||
|
||||
|
@ -48,14 +48,22 @@ public record Sys_JobRecord : LiteImmutableEntity
|
||||
/// <summary>
|
||||
/// 请求体
|
||||
/// </summary>
|
||||
#if DBTYPE_SQLITE
|
||||
[Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_255)]
|
||||
#else
|
||||
[Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_MAX)]
|
||||
#endif
|
||||
[JsonIgnore]
|
||||
public virtual string RequestBody { get; init; }
|
||||
|
||||
/// <summary>
|
||||
/// 请求头
|
||||
/// </summary>
|
||||
#if DBTYPE_SQLITE
|
||||
[Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_255)]
|
||||
#else
|
||||
[Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_MAX)]
|
||||
#endif
|
||||
[JsonIgnore]
|
||||
public virtual string RequestHeader { get; init; }
|
||||
|
||||
@ -69,14 +77,22 @@ public record Sys_JobRecord : LiteImmutableEntity
|
||||
/// <summary>
|
||||
/// 响应体
|
||||
/// </summary>
|
||||
#if DBTYPE_SQLITE
|
||||
[Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_255)]
|
||||
#else
|
||||
[Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_MAX)]
|
||||
#endif
|
||||
[JsonIgnore]
|
||||
public virtual string ResponseBody { get; init; }
|
||||
|
||||
/// <summary>
|
||||
/// 响应头
|
||||
/// </summary>
|
||||
#if DBTYPE_SQLITE
|
||||
[Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_255)]
|
||||
#else
|
||||
[Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_MAX)]
|
||||
#endif
|
||||
[JsonIgnore]
|
||||
public virtual string ResponseHeader { get; init; }
|
||||
|
||||
|
@ -35,14 +35,22 @@ public record Sys_RequestLog : ImmutableEntity, IFieldCreatedClient
|
||||
/// <summary>
|
||||
/// 创建者来源地址
|
||||
/// </summary>
|
||||
[Column(Position = -1, DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_255)]
|
||||
#if DBTYPE_SQLITE
|
||||
[Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_255)]
|
||||
#else
|
||||
[Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_MAX)]
|
||||
#endif
|
||||
[JsonIgnore]
|
||||
public string CreatedReferer { get; init; }
|
||||
|
||||
/// <summary>
|
||||
/// 创建者客户端用户代理
|
||||
/// </summary>
|
||||
[Column(Position = -1, DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_255)]
|
||||
#if DBTYPE_SQLITE
|
||||
[Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_255)]
|
||||
#else
|
||||
[Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_MAX)]
|
||||
#endif
|
||||
[JsonIgnore]
|
||||
public virtual string CreatedUserAgent { get; init; }
|
||||
|
||||
@ -63,14 +71,22 @@ public record Sys_RequestLog : ImmutableEntity, IFieldCreatedClient
|
||||
/// <summary>
|
||||
/// 异常信息
|
||||
/// </summary>
|
||||
#if DBTYPE_SQLITE
|
||||
[Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_255)]
|
||||
#else
|
||||
[Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_MAX)]
|
||||
#endif
|
||||
[JsonIgnore]
|
||||
public virtual string Exception { get; init; }
|
||||
|
||||
/// <summary>
|
||||
/// 附加数据
|
||||
/// </summary>
|
||||
#if DBTYPE_SQLITE
|
||||
[Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_255)]
|
||||
#else
|
||||
[Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_MAX)]
|
||||
#endif
|
||||
[JsonIgnore]
|
||||
public virtual string ExtraData { get; init; }
|
||||
|
||||
@ -91,14 +107,22 @@ public record Sys_RequestLog : ImmutableEntity, IFieldCreatedClient
|
||||
/// <summary>
|
||||
/// 来源地址
|
||||
/// </summary>
|
||||
#if DBTYPE_SQLITE
|
||||
[Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_255)]
|
||||
#else
|
||||
[Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_MAX)]
|
||||
#endif
|
||||
[JsonIgnore]
|
||||
public virtual string ReferUrl { get; init; }
|
||||
|
||||
/// <summary>
|
||||
/// 请求内容
|
||||
/// </summary>
|
||||
#if DBTYPE_SQLITE
|
||||
[Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_255)]
|
||||
#else
|
||||
[Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_MAX)]
|
||||
#endif
|
||||
[JsonIgnore]
|
||||
public virtual string RequestBody { get; init; }
|
||||
|
||||
@ -112,7 +136,11 @@ public record Sys_RequestLog : ImmutableEntity, IFieldCreatedClient
|
||||
/// <summary>
|
||||
/// 请求头信息
|
||||
/// </summary>
|
||||
#if DBTYPE_SQLITE
|
||||
[Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_255)]
|
||||
#else
|
||||
[Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_MAX)]
|
||||
#endif
|
||||
[JsonIgnore]
|
||||
public virtual string RequestHeaders { get; init; }
|
||||
|
||||
@ -126,7 +154,11 @@ public record Sys_RequestLog : ImmutableEntity, IFieldCreatedClient
|
||||
/// <summary>
|
||||
/// 响应内容
|
||||
/// </summary>
|
||||
#if DBTYPE_SQLITE
|
||||
[Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_255)]
|
||||
#else
|
||||
[Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_MAX)]
|
||||
#endif
|
||||
[JsonIgnore]
|
||||
public virtual string ResponseBody { get; init; }
|
||||
|
||||
@ -140,7 +172,11 @@ public record Sys_RequestLog : ImmutableEntity, IFieldCreatedClient
|
||||
/// <summary>
|
||||
/// 响应头
|
||||
/// </summary>
|
||||
#if DBTYPE_SQLITE
|
||||
[Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_255)]
|
||||
#else
|
||||
[Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_MAX)]
|
||||
#endif
|
||||
[JsonIgnore]
|
||||
public virtual string ResponseHeaders { get; init; }
|
||||
|
||||
|
@ -85,7 +85,11 @@ public record Sys_Role : VersionEntity, IFieldSort, IFieldEnabled, IFieldSummary
|
||||
/// <summary>
|
||||
/// 备注
|
||||
/// </summary>
|
||||
#if DBTYPE_SQLITE
|
||||
[Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_255)]
|
||||
#else
|
||||
[Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_MAX)]
|
||||
#endif
|
||||
[JsonIgnore]
|
||||
public virtual string Summary { get; init; }
|
||||
|
||||
|
@ -14,7 +14,11 @@ public record Sys_SiteMsg : VersionEntity, IRegister, IFieldSummary
|
||||
/// <summary>
|
||||
/// 消息内容
|
||||
/// </summary>
|
||||
#if DBTYPE_SQLITE
|
||||
[Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_255)]
|
||||
#else
|
||||
[Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_MAX)]
|
||||
#endif
|
||||
[JsonIgnore]
|
||||
public virtual string Content { get; init; }
|
||||
|
||||
@ -55,14 +59,22 @@ public record Sys_SiteMsg : VersionEntity, IRegister, IFieldSummary
|
||||
/// <summary>
|
||||
/// 消息摘要
|
||||
/// </summary>
|
||||
#if DBTYPE_SQLITE
|
||||
[Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_255)]
|
||||
#else
|
||||
[Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_MAX)]
|
||||
#endif
|
||||
[JsonIgnore]
|
||||
public virtual string Summary { get; init; }
|
||||
|
||||
/// <summary>
|
||||
/// 消息主题
|
||||
/// </summary>
|
||||
#if DBTYPE_SQLITE
|
||||
[Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_255)]
|
||||
#else
|
||||
[Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_MAX)]
|
||||
#endif
|
||||
[JsonIgnore]
|
||||
public virtual string Title { get; init; }
|
||||
|
||||
|
@ -85,7 +85,11 @@ public record Sys_User : VersionEntity, IFieldSummary, IFieldEnabled, IRegister
|
||||
/// <summary>
|
||||
/// 描述
|
||||
/// </summary>
|
||||
#if DBTYPE_SQLITE
|
||||
[Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_255)]
|
||||
#else
|
||||
[Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_MAX)]
|
||||
#endif
|
||||
[JsonIgnore]
|
||||
public virtual string Summary { get; init; }
|
||||
|
||||
|
@ -33,7 +33,11 @@ public record Sys_VerifyCode : VersionEntity
|
||||
/// <summary>
|
||||
/// 发送报告
|
||||
/// </summary>
|
||||
#if DBTYPE_SQLITE
|
||||
[Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_255)]
|
||||
#else
|
||||
[Column(DbType = Chars.FLG_DB_FIELD_TYPE_VARCHAR_MAX)]
|
||||
#endif
|
||||
[JsonIgnore]
|
||||
public string Report { get; init; }
|
||||
|
||||
|
@ -11,6 +11,6 @@ public sealed record CheckMobileAvailableReq : Sys_User
|
||||
/// <inheritdoc cref="Sys_User.Mobile" />
|
||||
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
|
||||
[Mobile]
|
||||
[Required(ErrorMessageResourceType = typeof(Ln), ErrorMessageResourceName = nameof(Ln.手机号码不能为空))]
|
||||
[Required(ErrorMessageResourceType = typeof(Ln), ErrorMessageResourceName = nameof(Ln.手机号不能为空))]
|
||||
public override string Mobile { get; init; }
|
||||
}
|
@ -1,4 +1,7 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<PropertyGroup>
|
||||
<DefineConstants>DBTYPE_SQLITE</DefineConstants>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(SolutionDir)/build/code.quality.props"/>
|
||||
<ItemGroup>
|
||||
<Content Include="$(SolutionDir)/assets/seed-data/**" LinkBase="SeedData" CopyToOutputDirectory="PreserveNewest"/>
|
||||
|
@ -24,7 +24,12 @@ public sealed class RequestAuditMiddleware(
|
||||
// 跳过处理的情况:
|
||||
if (!context.Request.Path.StartsWithSegments(_defaultRoutePrefix) // 非api请求
|
||||
|| context.Request.Path.StartsWithSegments(_healthCheckRoutePrefix) // 健康检查
|
||||
|| context.Request.Method == Chars.FLG_HTTP_METHOD_OPTIONS) { // is options 请求
|
||||
|| context.Request.Method == Chars.FLG_HTTP_METHOD_OPTIONS // is options 请求
|
||||
|| (context.Request.ContentType?.StartsWith("multipart/form-data", true, CultureInfo.InvariantCulture) ??
|
||||
false) // 文件上传
|
||||
#pragma warning disable SA1009
|
||||
) {
|
||||
#pragma warning restore SA1009
|
||||
await next(context).ConfigureAwait(false);
|
||||
return;
|
||||
}
|
||||
|
@ -8,6 +8,7 @@
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Cronos" Version="0.8.4"/>
|
||||
<PackageReference Include="FreeSql.DbContext.NS" Version="3.2.821-ns1"/>
|
||||
<PackageReference Include="FreeSql.Provider.SqlServer.NS" Version="3.2.821-ns1"/>
|
||||
<PackageReference Include="FreeSql.Provider.Sqlite.NS" Version="3.2.821-ns1"/>
|
||||
<PackageReference Include="Furion.Extras.Authentication.JwtBearer" Version="4.9.3"/>
|
||||
<PackageReference Include="Furion.Extras.ObjectMapper.Mapster.NS" Version="4.9.3-ns1"/>
|
||||
|
@ -291,7 +291,7 @@ public sealed class UserService(
|
||||
}
|
||||
|
||||
if (user.Mobile != req.VerifySmsCodeReq.DestDevice) {
|
||||
throw new NetAdminInvalidOperationException($"{Ln.手机号码不正确}");
|
||||
throw new NetAdminInvalidOperationException($"{Ln.手机号不正确}");
|
||||
}
|
||||
}
|
||||
|
||||
@ -330,17 +330,17 @@ public sealed class UserService(
|
||||
if (!user.Mobile.NullOrEmpty()) {
|
||||
// 已有手机号,需验证旧手机
|
||||
if (!await verifyCodeService.VerifyAsync(req.OriginVerifySmsCodeReq).ConfigureAwait(false)) {
|
||||
throw new NetAdminInvalidOperationException($"{Ln.旧手机号码验证码不正确}");
|
||||
throw new NetAdminInvalidOperationException($"{Ln.旧手机号验证码不正确}");
|
||||
}
|
||||
|
||||
if (user.Mobile != req.OriginVerifySmsCodeReq.DestDevice) {
|
||||
throw new NetAdminInvalidOperationException($"{Ln.旧手机号码不正确}");
|
||||
throw new NetAdminInvalidOperationException($"{Ln.旧手机号不正确}");
|
||||
}
|
||||
}
|
||||
|
||||
// 验证新手机号
|
||||
if (!await verifyCodeService.VerifyAsync(req.NewVerifySmsCodeReq).ConfigureAwait(false)) {
|
||||
throw new NetAdminInvalidOperationException($"{Ln.新手机号码验证码不正确}");
|
||||
throw new NetAdminInvalidOperationException($"{Ln.新手机号验证码不正确}");
|
||||
}
|
||||
|
||||
if (await Rpo.UpdateDiy
|
||||
|
@ -3,9 +3,9 @@
|
||||
<ProjectReference Include="../NetAdmin.Host/NetAdmin.Host.csproj"/>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<PackageReference Include="xunit" Version="2.8.0"/>
|
||||
<PackageReference Include="xunit" Version="2.8.1"/>
|
||||
<PackageReference Include="Microsoft.AspNetCore.Mvc.Testing" Version="9.0.0-preview.4.24267.6"/>
|
||||
<PackageReference Include="xunit.runner.visualstudio" Version="2.8.0">
|
||||
<PackageReference Include="xunit.runner.visualstudio" Version="2.8.1">
|
||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||
<PrivateAssets>all</PrivateAssets>
|
||||
</PackageReference>
|
||||
|
@ -11,14 +11,14 @@
|
||||
"dependencies": {
|
||||
"@element-plus/icons-vue": "^2.3.1",
|
||||
"@tinymce/tinymce-vue": "^5.1.1",
|
||||
"ace-builds": "^1.33.1",
|
||||
"ace-builds": "^1.33.2",
|
||||
"axios": "^1.6.8",
|
||||
"clipboard": "^2.0.11",
|
||||
"core-js": "^3.37.0",
|
||||
"core-js": "^3.37.1",
|
||||
"cropperjs": "^1.6.2",
|
||||
"crypto-js": "^4.2.0",
|
||||
"echarts": "^5.5.0",
|
||||
"element-plus": "^2.7.1",
|
||||
"element-plus": "^2.7.3",
|
||||
"json-bigint": "^1.0.0",
|
||||
"json5-to-table": "^0.1.8",
|
||||
"markdown-it": "^14.1.0",
|
||||
@ -29,23 +29,23 @@
|
||||
"sortablejs": "^1.15.2",
|
||||
"tinymce": "^6.8.3",
|
||||
"vkbeautify": "^0.99.3",
|
||||
"vue": "^3.4.25",
|
||||
"vue": "^3.4.27",
|
||||
"vue-i18n": "^9.13.1",
|
||||
"vue-router": "^4.3.2",
|
||||
"vue3-ace-editor": "^2.2.4",
|
||||
"vue3-json-viewer": "^2.2.2",
|
||||
"vuedraggable": "^4.0.3",
|
||||
"vuex": "^4.1.0",
|
||||
"xgplayer": "^3.0.16",
|
||||
"xgplayer-hls": "^3.0.16"
|
||||
"xgplayer": "^3.0.17",
|
||||
"xgplayer-hls": "^3.0.17"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@vitejs/plugin-vue": "^5.0.4",
|
||||
"prettier": "^3.2.5",
|
||||
"prettier-plugin-organize-attributes": "^1.0.0",
|
||||
"sass": "^1.75.0",
|
||||
"terser": "^5.30.4",
|
||||
"vite": "^5.2.10"
|
||||
"sass": "^1.77.2",
|
||||
"terser": "^5.31.0",
|
||||
"vite": "^5.2.11"
|
||||
},
|
||||
"browserslist": [
|
||||
"> 1%",
|
||||
|
7
src/frontend/admin/src/assets/icons/Email.vue
Normal file
7
src/frontend/admin/src/assets/icons/Email.vue
Normal file
@ -0,0 +1,7 @@
|
||||
<template>
|
||||
<svg class="icon" height="256" p-id="2661" t="1716619036537" version="1.1" viewBox="0 0 1024 1024" width="256" xmlns="http://www.w3.org/2000/svg">
|
||||
<path
|
||||
d="M874.666667 181.333333H149.333333c-40.533333 0-74.666667 34.133333-74.666666 74.666667v512c0 40.533333 34.133333 74.666667 74.666666 74.666667h725.333334c40.533333 0 74.666667-34.133333 74.666666-74.666667V256c0-40.533333-34.133333-74.666667-74.666666-74.666667z m-725.333334 64h725.333334c6.4 0 10.666667 4.266667 10.666666 10.666667v25.6L512 516.266667l-373.333333-234.666667V256c0-6.4 4.266667-10.666667 10.666666-10.666667z m725.333334 533.333334H149.333333c-6.4 0-10.666667-4.266667-10.666666-10.666667V356.266667l356.266666 224c4.266667 4.266667 10.666667 4.266667 17.066667 4.266666s12.8-2.133333 17.066667-4.266666l356.266666-224V768c0 6.4-4.266667 10.666667-10.666666 10.666667z"
|
||||
p-id="2662"></path>
|
||||
</svg>
|
||||
</template>
|
13
src/frontend/admin/src/assets/icons/MailCode.vue
Normal file
13
src/frontend/admin/src/assets/icons/MailCode.vue
Normal file
@ -0,0 +1,13 @@
|
||||
<template>
|
||||
<svg class="icon" height="256" p-id="9218" t="1716619196030" version="1.1" viewBox="0 0 1024 1024" width="256" xmlns="http://www.w3.org/2000/svg">
|
||||
<path
|
||||
d="M642.0992 501.5552a33.28 33.28 0 0 1 52.4288 40.6528l-3.328 4.2496-154.624 168.96a33.28 33.28 0 0 1-41.6256 6.144l-4.3008-3.072-128-107.008a33.28 33.28 0 0 1 38.1952-54.1696l4.4544 3.072 103.5776 86.6304 133.2224-145.4592z"
|
||||
p-id="9219"></path>
|
||||
<path
|
||||
d="M793.6 153.6a102.4 102.4 0 0 1 102.4 102.4v512a102.4 102.4 0 0 1-102.4 102.4h-563.2a102.4 102.4 0 0 1-102.4-102.4V256a102.4 102.4 0 0 1 102.4-102.4h563.2z m0 66.56h-563.2a35.84 35.84 0 0 0-35.5328 30.976L194.56 256v512a35.84 35.84 0 0 0 30.976 35.5328l4.864 0.3072h563.2a35.84 35.84 0 0 0 35.5328-30.976L829.44 768V256a35.84 35.84 0 0 0-30.976-35.5328L793.6 220.16z"
|
||||
p-id="9220"></path>
|
||||
<path
|
||||
d="M821.248 242.176a33.28 33.28 0 0 1 36.352 55.3984l-4.5056 2.9696-300.7488 164.096a84.48 84.48 0 0 1-72.9088 3.84l-7.68-3.6864-304.128-164.1472a33.28 33.28 0 0 1 26.7264-60.7744l4.9152 2.2016 304.128 164.1984a17.92 17.92 0 0 0 13.7728 1.3312l3.2768-1.3824 300.8-164.096z"
|
||||
p-id="9221"></path>
|
||||
</svg>
|
||||
</template>
|
7
src/frontend/admin/src/assets/icons/Mobile.vue
Normal file
7
src/frontend/admin/src/assets/icons/Mobile.vue
Normal file
@ -0,0 +1,7 @@
|
||||
<template>
|
||||
<svg class="icon" height="256" p-id="3820" t="1716618918266" version="1.1" viewBox="0 0 1024 1024" width="256" xmlns="http://www.w3.org/2000/svg">
|
||||
<path
|
||||
d="M736 0h-448C235.2 0 192 43.2 192 96v832c0 52.8 43.2 96 96 96h448c52.8 0 96-43.2 96-96v-832c0-52.8-43.2-96-96-96zM384 48h256v32H384v-32zM512 960a64 64 0 1 1 0-128 64 64 0 0 1 0 128z m256-192H256V128h512v640z"
|
||||
p-id="3821"></path>
|
||||
</svg>
|
||||
</template>
|
@ -1,15 +1,16 @@
|
||||
<template>
|
||||
<svg
|
||||
class="icon"
|
||||
height="128"
|
||||
p-id="17757"
|
||||
t="1708507211716"
|
||||
version="1.1"
|
||||
viewBox="0 0 1024 1024"
|
||||
width="128"
|
||||
xmlns="http://www.w3.org/2000/svg">
|
||||
<svg class="icon" height="256" p-id="5451" t="1716619102648" version="1.1" viewBox="0 0 1024 1024" width="256" xmlns="http://www.w3.org/2000/svg">
|
||||
<path
|
||||
d="M179.2 742.4v102.4c0 26.368 21.6576 48.128 49.408 50.8928l6.0416 0.3072h554.7008c28.5696 0 52.1216-19.968 55.1424-45.6192l0.3072-5.5808v-102.4h51.2v102.4c0 54.1184-44.9536 98.4064-101.888 102.144l-7.8336 0.256H237.7216c-57.9584 0-105.472-41.984-109.4656-95.0784L128 844.8v-102.4h51.2z m682.5984-399.36v45.6192l-65.8944 78.336c49.7664 2.7648 78.336 40.0896 78.336 97.2288 0 61.2864-35.0208 106.9056-102.2976 106.9056-67.7376 0-102.7584-45.1584-102.7584-106.4448v-0.9216l56.6784-3.6864v3.6864c0 40.0896 18.8928 58.5216 46.08 58.5216 26.7264 0 45.6192-18.432 45.6192-58.5216s-17.9712-58.5216-47.0016-58.5216a50.3296 50.3296 0 0 0-22.1184 5.0688l-27.648-30.4128 74.1888-88.0128h-115.6608V343.04h182.4768z m-570.2144 0v273.2544h61.7472V665.6H172.2368v-49.3056h62.6688V403.4048l-62.6688 25.8048V375.7568L243.6608 343.04h47.9232z m220.8256-5.5296c60.8256 0 99.9936 42.3936 99.9936 97.6896 0 32.7168-11.52 52.5312-31.7952 76.032l-92.6208 105.5232h124.416V665.6H412.416v-41.0112l123.9552-142.848c14.7456-17.0496 19.3536-29.952 19.3536-46.08 0-32.256-17.9712-49.3056-43.3152-49.3056-25.8048 0-43.3152 17.0496-43.3152 49.3056v11.0592l-56.6784-3.6864V435.2c0-55.296 37.3248-97.6896 99.9936-97.6896z m273.92-260.7104c57.9072 0 105.3696 41.984 109.4144 95.0784l0.256 7.3216v102.4h-51.2v-102.4c0-26.368-21.6576-48.128-49.408-50.8928l-6.0416-0.3072H234.6496c-28.5696 0-52.1216 19.968-55.1424 45.6192L179.2 179.2v102.4h-51.2v-102.4c0-54.1184 44.9536-98.4064 101.888-102.144l7.8336-0.256h548.5568z"
|
||||
p-id="17758"></path>
|
||||
d="M932.8 1024H495.274667c-50.304 0-91.242667-41.088-91.242667-91.562667V588.032a21.333333 21.333333 0 1 1 42.666667 0v344.405333A48.789333 48.789333 0 0 0 495.274667 981.333333h437.525333A48.768 48.768 0 0 0 981.333333 932.437333V310.208a48.768 48.768 0 0 0-48.533333-48.874667H771.2a21.333333 21.333333 0 1 1 0-42.666666h161.578667c50.282667 0 91.2 41.066667 91.2 91.541333v622.229333C1024 982.912 983.082667 1024 932.8 1024z"
|
||||
p-id="5452"></path>
|
||||
<path
|
||||
d="M930.133333 876.394667H497.941333a21.333333 21.333333 0 0 1-21.333333-21.333334V599.786667a21.333333 21.333333 0 1 1 42.666667 0v233.941333H908.8V342.656h-121.92a21.333333 21.333333 0 1 1 0-42.666667H930.133333a21.333333 21.333333 0 0 1 21.333334 21.333334v533.738666a21.333333 21.333333 0 0 1-21.333334 21.333334zM745.770667 951.04H682.24a21.333333 21.333333 0 1 1 0-42.666667h63.530667a21.333333 21.333333 0 1 1 0 42.666667z"
|
||||
p-id="5453"></path>
|
||||
<path
|
||||
d="M780.352 699.285333a21.269333 21.269333 0 0 1-5.973333-0.853333l-334.421334-97.621333c-13.866667 1.024-26.688 1.514667-39.104 1.514666C179.818667 602.325333 0 467.221333 0 301.162667S179.818667 0 400.832 0s400.832 135.104 400.832 301.162667c0 6.656-0.32 13.312-0.874667 19.861333-7.36 85.205333-63.552 164.522667-152.170666 216.938667l145.536 123.733333a21.312 21.312 0 0 1-13.802667 37.589333z m-338.154667-141.376c2.026667 0 4.032 0.298667 5.973334 0.853334l242.197333 70.677333-93.141333-79.168a21.312 21.312 0 0 1 4.416-35.392c91.264-44.821333 149.824-118.656 156.650666-197.482667 0.448-5.333333 0.704-10.794667 0.704-16.256C758.997333 158.634667 598.336 42.666667 400.832 42.666667 203.349333 42.666667 42.666667 158.634667 42.666667 301.162667s160.682667 258.496 358.186666 258.496c12.437333 0 25.386667-0.533333 39.658667-1.685334 0.554667-0.042667 1.130667-0.064 1.685333-0.064z"
|
||||
p-id="5454"></path>
|
||||
<path
|
||||
d="M190.528 355.946667a77.802667 77.802667 0 0 0 39.488 11.157333c22.528 0 35.690667-11.904 35.690667-29.141333 0-15.914667-9.130667-25.066667-32.149334-33.877334-27.84-9.898667-45.056-24.32-45.056-48.362666 0-26.581333 22.016-46.314667 55.168-46.314667 17.450667 0 30.144 4.032 37.717334 8.362667l-6.08 17.962666a67.776 67.776 0 0 0-32.405334-8.106666c-23.296 0-32.128 13.930667-32.128 25.557333 0 15.957333 10.368 23.786667 33.898667 32.938667 28.864 11.114667 43.541333 25.024 43.541333 50.069333 0 26.346667-19.498667 49.130667-59.733333 49.130667-16.448 0-34.410667-4.821333-43.541333-10.88l5.589333-18.496zM462.186667 307.882667c-1.258667-23.829333-2.773333-52.394667-2.538667-73.664h-0.768a1007.829333 1007.829333 0 0 1-21.482667 64.789333l-30.144 82.773333h-16.682666l-27.584-81.237333c-8.106667-24.064-14.954667-46.08-19.754667-66.325333h-0.512c-0.490667 21.269333-1.770667 49.834667-3.285333 75.434666l-4.544 73.130667h-21.013334l11.904-170.602667h28.096l29.098667 82.517334c7.082667 21.013333 12.885333 39.722667 17.216 57.450666h0.768c4.309333-17.194667 10.389333-35.946667 17.962667-57.450666l30.378666-82.517334h28.096l10.645334 170.602667h-21.525334l-4.330666-74.901333zM518.997333 355.946667a77.76 77.76 0 0 0 39.509334 11.157333c22.506667 0 35.669333-11.904 35.669333-29.141333 0-15.914667-9.130667-25.066667-32.128-33.877334-27.882667-9.898667-45.077333-24.32-45.077333-48.362666 0-26.581333 22.037333-46.314667 55.146666-46.314667 17.450667 0 30.122667 4.032 37.738667 8.362667l-6.08 17.962666a67.776 67.776 0 0 0-32.405333-8.106666c-23.296 0-32.170667 13.930667-32.170667 25.557333 0 15.957333 10.368 23.786667 33.941333 32.938667 28.864 11.114667 43.541333 25.024 43.541334 50.069333 0 26.346667-19.477333 49.130667-59.733334 49.130667-16.448 0-34.432-4.821333-43.562666-10.88l5.610666-18.496z"
|
||||
p-id="5455"></path>
|
||||
</svg>
|
||||
</template>
|
@ -44,7 +44,6 @@ export { default as Robot } from './Robot.vue'
|
||||
export { default as Role } from './Role.vue'
|
||||
export { default as ScheduledJob } from './ScheduledJob.vue'
|
||||
export { default as Send } from './Send.vue'
|
||||
export { default as SmsCode } from './SmsCode.vue'
|
||||
export { default as Stats } from './Stats.vue'
|
||||
export { default as Sync } from './Sync.vue'
|
||||
export { default as Task } from './Task.vue'
|
||||
@ -67,4 +66,8 @@ export { default as Collect } from './Collect.vue'
|
||||
export { default as FreeSql } from './FreeSql.vue'
|
||||
export { default as Performance } from './Performance.vue'
|
||||
export { default as Proxy } from './Proxy.vue'
|
||||
export { default as ECharts } from './ECharts.vue'
|
||||
export { default as ECharts } from './ECharts.vue'
|
||||
export { default as Mobile } from './Mobile.vue'
|
||||
export { default as Email } from './Email.vue'
|
||||
export { default as SmsCode } from './SmsCode.vue'
|
||||
export { default as MailCode } from './MailCode.vue'
|
@ -312,7 +312,7 @@ export default {
|
||||
} catch {
|
||||
return
|
||||
}
|
||||
await this.vue.deleteRow(this.current.row)
|
||||
await this.vue.rowDel(this.current.row)
|
||||
return
|
||||
}
|
||||
|
||||
|
File diff suppressed because one or more lines are too long
@ -45,11 +45,9 @@ export default {
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.main {
|
||||
height: 25rem;
|
||||
}
|
||||
|
||||
.wrap {
|
||||
gap: 1rem;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user