mirror of
https://github.com/nsnail/NetAdmin.git
synced 2025-04-23 14:42:51 +08:00
chore: 🔨 css 基础单位 (#98)
This commit is contained in:
parent
c117ddfe7a
commit
d052e43b86
@ -64,7 +64,7 @@ module.exports = {
|
|||||||
maxSubjectLength: Infinity,
|
maxSubjectLength: Infinity,
|
||||||
minSubjectLength: 0,
|
minSubjectLength: 0,
|
||||||
scopeOverrides: undefined,
|
scopeOverrides: undefined,
|
||||||
defaultBody: '',
|
defaultBody: '[skip ci]',
|
||||||
defaultIssues: '',
|
defaultIssues: '',
|
||||||
defaultScope: '',
|
defaultScope: '',
|
||||||
defaultSubject: ''
|
defaultSubject: ''
|
||||||
|
@ -23,7 +23,7 @@
|
|||||||
<PrivateAssets>all</PrivateAssets>
|
<PrivateAssets>all</PrivateAssets>
|
||||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||||
</PackageReference>
|
</PackageReference>
|
||||||
<PackageReference Include="SonarAnalyzer.CSharp" Version="9.20.0.85982">
|
<PackageReference Include="SonarAnalyzer.CSharp" Version="9.21.0.86780">
|
||||||
<PrivateAssets>all</PrivateAssets>
|
<PrivateAssets>all</PrivateAssets>
|
||||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||||
</PackageReference>
|
</PackageReference>
|
||||||
|
@ -1,6 +1,10 @@
|
|||||||
$branch = $( git branch --show-current )
|
$branch = $( git branch --show-current )
|
||||||
git add ../
|
git add ../
|
||||||
./code.clean.ps1
|
$skipFormat = Read-Host "输入 n 跳过代码整理"
|
||||||
|
if ($skipFormat -ne "n")
|
||||||
|
{
|
||||||
|
./code.clean.ps1
|
||||||
|
}
|
||||||
git add ../
|
git add ../
|
||||||
../node_modules/.bin/git-cz.ps1
|
../node_modules/.bin/git-cz.ps1
|
||||||
git pull
|
git pull
|
||||||
|
@ -0,0 +1,19 @@
|
|||||||
|
using NetAdmin.Domain.DbMaps.Sys;
|
||||||
|
|
||||||
|
namespace NetAdmin.Domain.Dto.Sys.Dic.Content;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 请求:获取字典值
|
||||||
|
/// </summary>
|
||||||
|
public sealed record GetDicValueReq : Sys_DicContent
|
||||||
|
{
|
||||||
|
/// <inheritdoc />
|
||||||
|
[JsonIgnore(Condition = JsonIgnoreCondition.Never)]
|
||||||
|
[Required(ErrorMessageResourceType = typeof(Ln), ErrorMessageResourceName = nameof(Ln.字典目录编号不能为空))]
|
||||||
|
public override long CatalogId { get; init; }
|
||||||
|
|
||||||
|
/// <inheritdoc />
|
||||||
|
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
|
||||||
|
[Required(ErrorMessageResourceType = typeof(Ln), ErrorMessageResourceName = nameof(Ln.键名称不能为空))]
|
||||||
|
public override string Key { get; init; }
|
||||||
|
}
|
@ -16,7 +16,7 @@ public sealed record QueryRequestLogRsp : Sys_RequestLog, IRegister
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// 操作系统
|
/// 操作系统
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string Os => UserAgentParser.Create(CreatedUserAgent).Platform;
|
public string Os => UserAgentParser.Create(CreatedUserAgent)?.Platform;
|
||||||
|
|
||||||
/// <inheritdoc cref="Sys_RequestLog.ApiId" />
|
/// <inheritdoc cref="Sys_RequestLog.ApiId" />
|
||||||
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
|
[JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)]
|
||||||
|
@ -41,4 +41,12 @@ public static class StringExtensions
|
|||||||
{
|
{
|
||||||
return _regex.Replace(me, string.Empty);
|
return _regex.Replace(me, string.Empty);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 去掉前部字符串
|
||||||
|
/// </summary>
|
||||||
|
public static string TrimStart(this string me, string clearStr)
|
||||||
|
{
|
||||||
|
return Regex.Replace(me, $"^{clearStr}", string.Empty);
|
||||||
|
}
|
||||||
}
|
}
|
@ -278,7 +278,7 @@ public sealed class UserAgentParser
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public static UserAgentParser Create(string userAgentString)
|
public static UserAgentParser Create(string userAgentString)
|
||||||
{
|
{
|
||||||
return new UserAgentParser(userAgentString);
|
return userAgentString == null ? null : new UserAgentParser(userAgentString);
|
||||||
}
|
}
|
||||||
|
|
||||||
private bool SetBrowser()
|
private bool SetBrowser()
|
||||||
|
@ -49,6 +49,11 @@ public interface IDicModule
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
Task<QueryDicContentRsp> GetContentAsync(QueryDicContentReq req);
|
Task<QueryDicContentRsp> GetContentAsync(QueryDicContentReq req);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 获取字典值
|
||||||
|
/// </summary>
|
||||||
|
public Task<string> GetDicValueAsync(GetDicValueReq req);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 分页查询字典目录
|
/// 分页查询字典目录
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@ -66,6 +66,28 @@ public sealed class DicService(IDicCatalogService catalogService, IDicContentSer
|
|||||||
return contentService.GetAsync(req);
|
return contentService.GetAsync(req);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <inheritdoc />
|
||||||
|
public async Task<string> GetDicValueAsync(GetDicValueReq req)
|
||||||
|
{
|
||||||
|
req.ThrowIfInvalid();
|
||||||
|
var df = new DynamicFilterInfo {
|
||||||
|
Filters = [
|
||||||
|
new DynamicFilterInfo {
|
||||||
|
Field = nameof(QueryDicContentReq.CatalogId)
|
||||||
|
, Operator = DynamicFilterOperators.Eq
|
||||||
|
, Value = req.CatalogId
|
||||||
|
}
|
||||||
|
, new DynamicFilterInfo {
|
||||||
|
Field = nameof(QueryDicContentReq.Key)
|
||||||
|
, Operator = DynamicFilterOperators.Eq
|
||||||
|
, Value = req.Key
|
||||||
|
}
|
||||||
|
]
|
||||||
|
};
|
||||||
|
var queryParam = new QueryReq<QueryDicContentReq> { Count = 1, DynamicFilter = df };
|
||||||
|
return (await QueryContentAsync(queryParam).ConfigureAwait(false)).FirstOrDefault()?.Value;
|
||||||
|
}
|
||||||
|
|
||||||
/// <inheritdoc />
|
/// <inheritdoc />
|
||||||
public Task<PagedQueryRsp<QueryDicCatalogRsp>> PagedQueryCatalogAsync(PagedQueryReq<QueryDicCatalogReq> req)
|
public Task<PagedQueryRsp<QueryDicCatalogRsp>> PagedQueryCatalogAsync(PagedQueryReq<QueryDicCatalogReq> req)
|
||||||
{
|
{
|
||||||
|
@ -79,6 +79,7 @@ public sealed class JobService(DefaultRepository<Sys_Job> rpo, IJobRecordService
|
|||||||
/// <inheritdoc />
|
/// <inheritdoc />
|
||||||
public async Task FinishJobAsync(UpdateJobReq req)
|
public async Task FinishJobAsync(UpdateJobReq req)
|
||||||
{
|
{
|
||||||
|
req.ThrowIfInvalid();
|
||||||
var nextExecTime = GetNextExecTime(req.ExecutionCron);
|
var nextExecTime = GetNextExecTime(req.ExecutionCron);
|
||||||
_ = await UpdateAsync(req with {
|
_ = await UpdateAsync(req with {
|
||||||
Status = JobStatues.Idle
|
Status = JobStatues.Idle
|
||||||
@ -100,7 +101,9 @@ public sealed class JobService(DefaultRepository<Sys_Job> rpo, IJobRecordService
|
|||||||
public async Task<QueryJobRsp> GetNextJobAsync()
|
public async Task<QueryJobRsp> GetNextJobAsync()
|
||||||
{
|
{
|
||||||
var df = new DynamicFilterInfo {
|
var df = new DynamicFilterInfo {
|
||||||
Filters = [ new DynamicFilterInfo { Field = nameof(QueryJobReq.NextExecTime)
|
Filters = [
|
||||||
|
new DynamicFilterInfo {
|
||||||
|
Field = nameof(QueryJobReq.NextExecTime)
|
||||||
, Value = DateTime.UtcNow
|
, Value = DateTime.UtcNow
|
||||||
, Operator = DynamicFilterOperators.LessThan
|
, Operator = DynamicFilterOperators.LessThan
|
||||||
}
|
}
|
||||||
@ -163,6 +166,7 @@ public sealed class JobService(DefaultRepository<Sys_Job> rpo, IJobRecordService
|
|||||||
/// <inheritdoc />
|
/// <inheritdoc />
|
||||||
public Task<PagedQueryRsp<QueryJobRecordRsp>> RecordPagedQueryAsync(PagedQueryReq<QueryJobRecordReq> req)
|
public Task<PagedQueryRsp<QueryJobRecordRsp>> RecordPagedQueryAsync(PagedQueryReq<QueryJobRecordReq> req)
|
||||||
{
|
{
|
||||||
|
req.ThrowIfInvalid();
|
||||||
return jobRecordService.PagedQueryAsync(req);
|
return jobRecordService.PagedQueryAsync(req);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -217,7 +221,7 @@ public sealed class JobService(DefaultRepository<Sys_Job> rpo, IJobRecordService
|
|||||||
, a => a.Id == req.Keywords.Int64Try(0) || a.JobName.Contains(req.Keywords))
|
, a => a.Id == req.Keywords.Int64Try(0) || a.JobName.Contains(req.Keywords))
|
||||||
.OrderByPropertyNameIf(req.Prop?.Length > 0, req.Prop, req.Order == Orders.Ascending);
|
.OrderByPropertyNameIf(req.Prop?.Length > 0, req.Prop, req.Order == Orders.Ascending);
|
||||||
return !orderByRandom && (!req.Prop?.Equals(nameof(req.Filter.Id), StringComparison.OrdinalIgnoreCase) ?? true)
|
return !orderByRandom && (!req.Prop?.Equals(nameof(req.Filter.Id), StringComparison.OrdinalIgnoreCase) ?? true)
|
||||||
? ret.OrderByDescending(a => a.Id)
|
? ret.OrderByDescending(a => a.LastExecTime)
|
||||||
: ret.OrderByRandom();
|
: ret.OrderByRandom();
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -13,8 +13,12 @@ public sealed class CacheCache(IDistributedCache cache, ICacheService service) /
|
|||||||
/// <inheritdoc />
|
/// <inheritdoc />
|
||||||
public Task<CacheStatisticsRsp> CacheStatisticsAsync()
|
public Task<CacheStatisticsRsp> CacheStatisticsAsync()
|
||||||
{
|
{
|
||||||
|
#if !DEBUG
|
||||||
return GetOrCreateAsync( //
|
return GetOrCreateAsync( //
|
||||||
GetCacheKey(string.Empty), Service.CacheStatisticsAsync, TimeSpan.FromMinutes(1));
|
GetCacheKey(string.Empty), Service.CacheStatisticsAsync, TimeSpan.FromMinutes(1));
|
||||||
|
#else
|
||||||
|
return Service.CacheStatisticsAsync();
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <inheritdoc />
|
/// <inheritdoc />
|
||||||
|
@ -59,6 +59,18 @@ public sealed class DicCache(IDistributedCache cache, IDicService service) //
|
|||||||
return Service.GetContentAsync(req);
|
return Service.GetContentAsync(req);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <inheritdoc />
|
||||||
|
public Task<string> GetDicValueAsync(GetDicValueReq req)
|
||||||
|
{
|
||||||
|
#if !DEBUG
|
||||||
|
return GetOrCreateAsync( //
|
||||||
|
GetCacheKey(req.GetHashCode().ToString(CultureInfo.InvariantCulture)) //
|
||||||
|
, () => Service.GetDicValueAsync(req), TimeSpan.FromMinutes(1));
|
||||||
|
#else
|
||||||
|
return Service.GetDicValueAsync(req);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
/// <inheritdoc />
|
/// <inheritdoc />
|
||||||
public Task<PagedQueryRsp<QueryDicCatalogRsp>> PagedQueryCatalogAsync(PagedQueryReq<QueryDicCatalogReq> req)
|
public Task<PagedQueryRsp<QueryDicCatalogRsp>> PagedQueryCatalogAsync(PagedQueryReq<QueryDicCatalogReq> req)
|
||||||
{
|
{
|
||||||
|
@ -74,7 +74,13 @@ public sealed class UserCache(IDistributedCache cache, IUserService service, IVe
|
|||||||
/// <inheritdoc />
|
/// <inheritdoc />
|
||||||
public Task<IEnumerable<QueryUserRsp>> QueryAsync(QueryReq<QueryUserReq> req)
|
public Task<IEnumerable<QueryUserRsp>> QueryAsync(QueryReq<QueryUserReq> req)
|
||||||
{
|
{
|
||||||
|
#if !DEBUG
|
||||||
|
return GetOrCreateAsync( //
|
||||||
|
GetCacheKey(req.GetHashCode().ToString(CultureInfo.InvariantCulture)) //
|
||||||
|
, () => Service.QueryAsync(req), TimeSpan.FromMinutes(1));
|
||||||
|
#else
|
||||||
return Service.QueryAsync(req);
|
return Service.QueryAsync(req);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <inheritdoc />
|
/// <inheritdoc />
|
||||||
@ -185,8 +191,12 @@ public sealed class UserCache(IDistributedCache cache, IUserService service, IVe
|
|||||||
/// <inheritdoc />
|
/// <inheritdoc />
|
||||||
public Task<UserInfoRsp> UserInfoAsync()
|
public Task<UserInfoRsp> UserInfoAsync()
|
||||||
{
|
{
|
||||||
|
#if !DEBUG
|
||||||
return GetOrCreateAsync( //
|
return GetOrCreateAsync( //
|
||||||
GetCacheKey(Service.UserToken.Id.ToString(CultureInfo.InvariantCulture)), Service.UserInfoAsync
|
GetCacheKey(Service.UserToken.Id.ToString(CultureInfo.InvariantCulture)), Service.UserInfoAsync
|
||||||
, TimeSpan.FromMinutes(1));
|
, TimeSpan.FromMinutes(1));
|
||||||
|
#else
|
||||||
|
return Service.UserInfoAsync();
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -85,6 +85,14 @@ public sealed class DicController(IDicCache cache) : ControllerBase<IDicCache, I
|
|||||||
return Cache.GetContentAsync(req);
|
return Cache.GetContentAsync(req);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 获取字典值
|
||||||
|
/// </summary>
|
||||||
|
public Task<string> GetDicValueAsync(GetDicValueReq req)
|
||||||
|
{
|
||||||
|
return Cache.GetDicValueAsync(req);
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 分页查询字典目录
|
/// 分页查询字典目录
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@ -9,7 +9,7 @@
|
|||||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||||
<PrivateAssets>all</PrivateAssets>
|
<PrivateAssets>all</PrivateAssets>
|
||||||
</PackageReference>
|
</PackageReference>
|
||||||
<PackageReference Include="coverlet.collector" Version="6.0.1">
|
<PackageReference Include="coverlet.collector" Version="6.0.2">
|
||||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||||
<PrivateAssets>all</PrivateAssets>
|
<PrivateAssets>all</PrivateAssets>
|
||||||
</PackageReference>
|
</PackageReference>
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
"name": "NetAdmin",
|
"name": "net-admin",
|
||||||
"private": true,
|
"private": true,
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"dev": "vite",
|
"dev": "vite",
|
||||||
@ -17,7 +17,7 @@
|
|||||||
"cropperjs": "^1.6.1",
|
"cropperjs": "^1.6.1",
|
||||||
"crypto-js": "^4.2.0",
|
"crypto-js": "^4.2.0",
|
||||||
"echarts": "^5.5.0",
|
"echarts": "^5.5.0",
|
||||||
"element-plus": "^2.5.6",
|
"element-plus": "^2.6.1",
|
||||||
"json-bigint": "^1.0.0",
|
"json-bigint": "^1.0.0",
|
||||||
"json5-to-table": "^0.1.8",
|
"json5-to-table": "^0.1.8",
|
||||||
"markdown-it": "^14.0.0",
|
"markdown-it": "^14.0.0",
|
||||||
@ -27,22 +27,22 @@
|
|||||||
"qrcodejs2": "^0.0.2",
|
"qrcodejs2": "^0.0.2",
|
||||||
"sortablejs": "^1.15.2",
|
"sortablejs": "^1.15.2",
|
||||||
"tinymce": "^6.8.3",
|
"tinymce": "^6.8.3",
|
||||||
"vue": "^3.4.20",
|
"vue": "^3.4.21",
|
||||||
"vue-i18n": "^9.9.1",
|
"vue-i18n": "^9.10.1",
|
||||||
"vue-router": "^4.3.0",
|
"vue-router": "^4.3.0",
|
||||||
"vue3-json-viewer": "^2.2.2",
|
"vue3-json-viewer": "^2.2.2",
|
||||||
"vuedraggable": "^4.0.3",
|
"vuedraggable": "^4.0.3",
|
||||||
"vuex": "^4.1.0",
|
"vuex": "^4.1.0",
|
||||||
"xgplayer": "^3.0.13",
|
"xgplayer": "^3.0.14",
|
||||||
"xgplayer-hls": "^3.0.13"
|
"xgplayer-hls": "^3.0.14"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@vitejs/plugin-vue": "^5.0.4",
|
"@vitejs/plugin-vue": "^5.0.4",
|
||||||
"prettier": "^3.2.5",
|
"prettier": "^3.2.5",
|
||||||
"prettier-plugin-organize-attributes": "^1.0.0",
|
"prettier-plugin-organize-attributes": "^1.0.0",
|
||||||
"sass": "^1.71.1",
|
"sass": "^1.71.1",
|
||||||
"terser": "^5.28.1",
|
"terser": "^5.29.1",
|
||||||
"vite": "^5.1.4"
|
"vite": "^5.1.5"
|
||||||
},
|
},
|
||||||
"browserslist": [
|
"browserslist": [
|
||||||
"> 1%",
|
"> 1%",
|
||||||
|
@ -93,6 +93,17 @@ export default {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取字典值
|
||||||
|
*/
|
||||||
|
getDicValue: {
|
||||||
|
url: `${config.API_URL}/api/sys/dic/get.dic.value`,
|
||||||
|
name: `获取字典值`,
|
||||||
|
post: async function (data = {}, config = {}) {
|
||||||
|
return await http.post(this.url, data, config)
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 分页查询字典目录
|
* 分页查询字典目录
|
||||||
*/
|
*/
|
||||||
|
7
src/frontend/admin/src/assets/icons/Collect.vue
Normal file
7
src/frontend/admin/src/assets/icons/Collect.vue
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
<template>
|
||||||
|
<svg class="icon" height="128" p-id="6915" t="1709972418776" version="1.1" viewBox="0 0 1024 1024" width="128" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<path
|
||||||
|
d="M933.211762 811.120588l-392.396995-392.395972c13.674441-24.118304 10.30367-55.356772-10.232039-75.886341l-1.49812-1.502213 203.161073-203.164143c9.534144-9.534144 13.573133-23.113417 10.804067-36.329417-2.75474-13.139252-11.852956-23.88806-24.336268-28.751834-11.576663-4.51278-24.885783-6.80294-39.555901-6.80294-69.431326 0-174.58934 52.42807-284.039101 141.085272l-8.54256-8.544607c-11.932774-11.933797-27.810393-18.503423-44.713364-18.503423-11.127432 0-21.784142 2.90005-31.193443 8.255011l-2.227738-2.231831c-16.493649-16.491603-38.414915-25.570375-61.73811-25.570375-23.322172 0-45.243437 9.079796-61.734016 25.570375-16.489556 16.491603-25.570375 38.411845-25.570375 61.734016s9.081843 45.243437 25.570375 61.736063l2.248204 2.248204c-13.669324 24.118304-10.304693 55.353702 10.232039 75.890434l8.553817 8.55177C118.609886 504.639359 41.083186 641.523959 71.712787 720.097502c5.962805 15.294334 20.479427 25.184589 36.965913 25.184589 10.611685 0 20.596084-4.13825 28.110221-11.656481l203.165166-203.168236 1.499144 1.503237c11.93175 11.936867 27.810393 18.507516 44.717458 18.507516 11.122315 0 21.783119-2.901073 31.188326-8.255011l392.373459 392.374482c16.488533 16.486486 38.417985 25.567305 61.732993 25.567305 23.323195 0 45.245484-9.080819 61.739133-25.567305C967.253066 900.547317 967.253066 845.169055 933.211762 811.120588zM386.170688 502.32464c-4.043083 0-7.833409-1.563612-10.66899-4.400217l-35.542494-35.545564-226.508827 226.504734c-2.406816-23.743774 6.246261-58.854433 24.837688-99.437733 24.992207-54.552453 66.007343-116.448152 118.622678-178.99979l14.217816-16.902972-39.630602-39.630602c-5.89015-5.886057-5.89015-15.46318 0-21.348214l99.694583-99.6997c2.839675-2.841721 6.631024-4.405333 10.673084-4.405333 4.043083 0 7.834432 1.563612 10.673084 4.405333l39.631626 39.632649 16.897855-14.21577c105.491613-88.732927 208.986755-143.856385 270.096555-143.856385 2.923586 0 5.706979 0.134053 8.339946 0.403183L460.999954 341.330946l35.542494 35.542494c5.885034 5.885034 5.885034 15.461133 0 21.348214l-99.698676 99.697653C394.004097 500.761028 390.212748 502.32464 386.170688 502.32464zM209.150996 236.933247c0.716314-2.422166 1.672082-4.790096 2.863211-7.063883 1.793856-3.409656 4.122901-6.610558 6.991228-9.480932 4.779863-4.77884 10.487865-8.068769 16.542768-9.859555 3.632737-1.074472 7.388271-1.613754 11.146874-1.613754s7.517207 0.539282 11.150968 1.613754c4.844332 1.434675 9.465582 3.824095 13.564947 7.172353 1.025353 0.835018 2.022053 1.733481 2.973728 2.686179l0.595564 0.593518-55.391565 55.388495-0.590448-0.593518c-5.735631-5.737678-9.320273-12.808724-10.754948-20.212344-0.476861-2.469238-0.716314-4.974291-0.716314-7.479345C207.538265 244.325611 208.077547 240.567008 209.150996 236.933247zM910.460596 876.609115c-0.357134 3.751441-1.251503 7.451716-2.684132 10.984169-1.912559 4.714372-4.779863 9.139148-8.604982 12.961196-3.823072 3.823072-8.241708 6.692423-12.958126 8.602935-2.355651 0.956791-4.79112 1.669012-7.257288 2.148943-2.467191 0.476861-4.974291 0.720408-7.482415 0.720408-10.028401 0-20.049638-3.824095-27.696806-11.472286L453.035562 509.812171l55.390541-55.388495 78.352509 78.355579 312.384683 312.3898c3.826142 3.822049 6.692423 8.237615 8.602935 12.95301 1.437745 3.540639 2.333138 7.232728 2.689249 10.984169C910.700049 871.593891 910.700049 874.112248 910.460596 876.609115z"
|
||||||
|
p-id="6916"></path>
|
||||||
|
</svg>
|
||||||
|
</template>
|
@ -63,3 +63,4 @@ export { default as Help } from './Help.vue'
|
|||||||
export { default as Version } from './Version.vue'
|
export { default as Version } from './Version.vue'
|
||||||
export { default as Home } from './Home.vue'
|
export { default as Home } from './Home.vue'
|
||||||
export { default as Exception } from './Exception.vue'
|
export { default as Exception } from './Exception.vue'
|
||||||
|
export { default as Collect } from './Collect.vue'
|
@ -11,6 +11,7 @@
|
|||||||
<slot :row="scope.row" :text="item.text"></slot>
|
<slot :row="scope.row" :text="item.text"></slot>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
<slot :row="scope.row" name="info"></slot>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
</template>
|
</template>
|
||||||
|
@ -21,7 +21,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<el-tabs>
|
<el-tabs>
|
||||||
<el-tab-pane :label="$t('常规')" lazy>
|
<el-tab-pane :label="$t('常规')" lazy>
|
||||||
<el-form label-position="left" label-width="100px" style="margin: 10px 0 20px 0">
|
<el-form label-position="left" label-width="10rem" style="margin: 10px 0 20px 0">
|
||||||
<el-form-item :label="$t('文件名')">
|
<el-form-item :label="$t('文件名')">
|
||||||
<el-input v-model="formData.fileName" :placeholder="$t('请输入文件名')" />
|
<el-input v-model="formData.fileName" :placeholder="$t('请输入文件名')" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
@ -24,7 +24,7 @@
|
|||||||
@visible-change="visibleChange"
|
@visible-change="visibleChange"
|
||||||
ref="select">
|
ref="select">
|
||||||
<template #empty>
|
<template #empty>
|
||||||
<div v-loading="loading" :style="{ width: tableWidth + 'px' }" class="sc-table-select__table">
|
<div v-loading="loading" :style="{ width: tableWidth + 'rem' }" class="sc-table-select__table">
|
||||||
<div class="sc-table-select__header">
|
<div class="sc-table-select__header">
|
||||||
<slot :form="formData" :submit="formSubmit" name="header"></slot>
|
<slot :form="formData" :submit="formSubmit" name="header"></slot>
|
||||||
</div>
|
</div>
|
||||||
@ -81,7 +81,7 @@ export default {
|
|||||||
collapseTags: { type: Boolean, default: false },
|
collapseTags: { type: Boolean, default: false },
|
||||||
collapseTagsTooltip: { type: Boolean, default: false },
|
collapseTagsTooltip: { type: Boolean, default: false },
|
||||||
disabled: { type: Boolean, default: false },
|
disabled: { type: Boolean, default: false },
|
||||||
tableWidth: { type: Number, default: 400 },
|
tableWidth: { type: Number, default: 40 },
|
||||||
mode: { type: String, default: 'popover' },
|
mode: { type: String, default: 'popover' },
|
||||||
props: {
|
props: {
|
||||||
type: Object,
|
type: Object,
|
||||||
@ -273,10 +273,10 @@ export default {
|
|||||||
|
|
||||||
<style scoped>
|
<style scoped>
|
||||||
.sc-table-select__table {
|
.sc-table-select__table {
|
||||||
padding: 12px;
|
padding: 1rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.sc-table-select__page {
|
.sc-table-select__page {
|
||||||
padding-top: 12px;
|
padding-top: 1rem;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
@ -42,7 +42,7 @@ export default {
|
|||||||
text.font = 'bold 20px SimHei'
|
text.font = 'bold 20px SimHei'
|
||||||
text.textAlign = 'center'
|
text.textAlign = 'center'
|
||||||
text.fillText(this.text, canvas.width / 2, canvas.height / 2)
|
text.fillText(this.text, canvas.width / 2, canvas.height / 2)
|
||||||
text.font = '14px Microsoft YaHei'
|
text.font = '1rem Microsoft YaHei'
|
||||||
text.fillText(this.subtext, canvas.width / 2, canvas.height / 2 + 20)
|
text.fillText(this.subtext, canvas.width / 2, canvas.height / 2 + 20)
|
||||||
//创建水印容器
|
//创建水印容器
|
||||||
const watermark = document.createElement('div')
|
const watermark = document.createElement('div')
|
||||||
|
File diff suppressed because one or more lines are too long
@ -1,6 +1,6 @@
|
|||||||
<template>
|
<template>
|
||||||
<el-container>
|
<el-container>
|
||||||
<el-aside v-loading="loading" width="300px">
|
<el-aside v-loading="loading" width="30rem">
|
||||||
<el-container>
|
<el-container>
|
||||||
<el-header>
|
<el-header>
|
||||||
<el-input v-model="filterText" :placeholder="$t('输入关键字进行过滤')" clearable></el-input>
|
<el-input v-model="filterText" :placeholder="$t('输入关键字进行过滤')" clearable></el-input>
|
||||||
|
@ -130,7 +130,6 @@ export default {
|
|||||||
filters: [],
|
filters: [],
|
||||||
},
|
},
|
||||||
filter: {},
|
filter: {},
|
||||||
prop: 'lastExecTime',
|
|
||||||
},
|
},
|
||||||
dialog: {
|
dialog: {
|
||||||
save: false,
|
save: false,
|
||||||
|
@ -63,17 +63,25 @@
|
|||||||
remoteSort
|
remoteSort
|
||||||
row-key="id"
|
row-key="id"
|
||||||
stripe>
|
stripe>
|
||||||
<el-table-column :label="$t('日志编号')" prop="id" sortable="custom" width="150"></el-table-column>
|
<el-table-column :label="$t('日志编号')" align="center" prop="id" sortable="custom" width="150"></el-table-column>
|
||||||
<el-table-column :label="$t('日志时间')" prop="createdTime" sortable="custom" width="170"></el-table-column>
|
<el-table-column :label="$t('日志时间')" align="center" prop="createdTime" sortable="custom" width="170"></el-table-column>
|
||||||
<el-table-column :label="$t('响应码')" prop="httpStatusCode" sortable="custom" width="90"></el-table-column>
|
<el-table-column :label="$t('响应码')" align="center" prop="httpStatusCode" sortable="custom" width="90"></el-table-column>
|
||||||
<el-table-column :label="$t('请求服务')">
|
<el-table-column :label="$t('请求服务')">
|
||||||
<el-table-column :label="$t('路径')" min-width="150" prop="apiId" sortable="custom"></el-table-column>
|
<el-table-column
|
||||||
|
:label="$t('路径')"
|
||||||
|
min-width="150"
|
||||||
|
prop="apiId"
|
||||||
|
show-overflow-tooltip
|
||||||
|
sortable="custom"></el-table-column>
|
||||||
<el-table-column :label="$t('描述')" prop="apiSummary"></el-table-column>
|
<el-table-column :label="$t('描述')" prop="apiSummary"></el-table-column>
|
||||||
<el-table-column :label="$t('方法')" prop="method" sortable="custom" width="100"></el-table-column>
|
<el-table-column :label="$t('方法')" align="center" prop="method" sortable="custom" width="100"></el-table-column>
|
||||||
<el-table-column :label="$t('耗时(毫秒)')" align="right" prop="duration" sortable="custom" width="120">
|
<el-table-column
|
||||||
<template #default="scope">
|
:formatter="(row) => tool.groupSeparator((row.duration / 1000).toFixed(0))"
|
||||||
{{ (scope.row.duration / 1000).toFixed(2) }}
|
:label="$t('耗时(毫秒)')"
|
||||||
</template>
|
align="right"
|
||||||
|
prop="duration"
|
||||||
|
sortable="custom"
|
||||||
|
width="120">
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column :label="$t('用户')" prop="createdUserName" sortable="custom">
|
<el-table-column :label="$t('用户')" prop="createdUserName" sortable="custom">
|
||||||
@ -82,7 +90,7 @@
|
|||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column :label="$t('客户端IP')" prop="createdClientIp" sortable="custom" width="150"></el-table-column>
|
<el-table-column :label="$t('客户端IP')" prop="createdClientIp" sortable="custom" width="150"></el-table-column>
|
||||||
<el-table-column :label="$t('操作系统')" prop="os" sortable="custom"></el-table-column>
|
<el-table-column :label="$t('操作系统')" align="center" prop="os" sortable="custom"></el-table-column>
|
||||||
</sc-table>
|
</sc-table>
|
||||||
</el-main>
|
</el-main>
|
||||||
</el-container>
|
</el-container>
|
||||||
@ -98,6 +106,11 @@ import tool from '@/utils/tool'
|
|||||||
import ScTable from '@/components/scTable/index.vue'
|
import ScTable from '@/components/scTable/index.vue'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
|
computed: {
|
||||||
|
tool() {
|
||||||
|
return tool
|
||||||
|
},
|
||||||
|
},
|
||||||
components: {
|
components: {
|
||||||
ScTable,
|
ScTable,
|
||||||
naInfo,
|
naInfo,
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
<template>
|
<template>
|
||||||
<el-container>
|
<el-container>
|
||||||
<el-aside v-loading="loading" width="300px">
|
<el-aside v-loading="loading" width="30rem">
|
||||||
<el-container>
|
<el-container>
|
||||||
<el-header>
|
<el-header>
|
||||||
<el-input v-model="filterText" :placeholder="$t('输入关键字进行过滤')" clearable></el-input>
|
<el-input v-model="filterText" :placeholder="$t('输入关键字进行过滤')" clearable></el-input>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user