chore: 🔨 css 基础单位 (#98)

This commit is contained in:
nsnail 2024-03-21 21:47:47 +08:00 committed by GitHub
parent c117ddfe7a
commit d052e43b86
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
28 changed files with 180 additions and 52 deletions

View File

@ -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: ''

View File

@ -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>

View File

@ -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

View File

@ -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; }
}

View File

@ -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)]

View File

@ -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);
}
} }

View File

@ -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()

View File

@ -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>

View File

@ -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)
{ {

View File

@ -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();
} }
} }

View File

@ -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 />

View File

@ -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)
{ {

View File

@ -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
} }
} }

View File

@ -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>

View File

@ -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>

View File

@ -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%",

View File

@ -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)
},
},
/** /**
* 分页查询字典目录 * 分页查询字典目录
*/ */

View 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>

View File

@ -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'

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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

View File

@ -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>

View File

@ -130,7 +130,6 @@ export default {
filters: [], filters: [],
}, },
filter: {}, filter: {},
prop: 'lastExecTime',
}, },
dialog: { dialog: {
save: false, save: false,

View File

@ -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,

View File

@ -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>