feat: logoBar显示程序版本号 (#153)

[skip ci]

Co-authored-by: tk <fiyne1a@dingtalk.com>
This commit is contained in:
nsnail 2024-07-04 21:14:16 +08:00 committed by GitHub
parent 67eaa5b783
commit be5b9a160d
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
27 changed files with 89 additions and 63 deletions

View File

@ -74,4 +74,5 @@ global using NetAdmin.Domain.DbMaps.Sys;
global using CsvIndex = CsvHelper.Configuration.Attributes.IndexAttribute;
global using DynamicFilterInfo = NetAdmin.Domain.Dto.Dependency.DynamicFilterInfo;
global using DynamicFilterOperators = NetAdmin.Domain.Enums.DynamicFilterOperators;
global using SqlIndex = FreeSql.DataAnnotations.IndexAttribute;
#endif

View File

@ -17,6 +17,7 @@ public abstract record LiteVersionEntity<T> : LiteMutableEntity<T>, IFieldVersio
{
/// <inheritdoc cref="EntityBase{T}.Id" />
[Column(IsIdentity = false, IsPrimary = true, Position = 1)]
[Snowflake]
public override T Id { get; init; }
/// <inheritdoc cref="IFieldVersion.Version" />

View File

@ -3,8 +3,8 @@ namespace NetAdmin.Domain.DbMaps.Sys;
/// <summary>
/// 字典目录表
/// </summary>
[FreeSql.DataAnnotations.Index(Chars.FLG_DB_INDEX_PREFIX + nameof(Code), nameof(Code), true)]
[Table(Name = Chars.FLG_DB_TABLE_NAME_PREFIX + nameof(Sys_DicCatalog))]
[SqlIndex(Chars.FLG_DB_INDEX_PREFIX + nameof(Code), nameof(Code), true)]
[Table(Name = Chars.FLG_DB_TABLE_NAME_PREFIX + nameof(Sys_DicCatalog))]
public record Sys_DicCatalog : VersionEntity
{
/// <summary>

View File

@ -3,10 +3,9 @@ namespace NetAdmin.Domain.DbMaps.Sys;
/// <summary>
/// 字典内容表
/// </summary>
[FreeSql.DataAnnotations.Index( //
$"{Chars.FLG_DB_INDEX_PREFIX}{nameof(CatalogId)}_{nameof(Key)}", $"{nameof(CatalogId)},{nameof(Key)}", true)]
[FreeSql.DataAnnotations.Index( //
$"{Chars.FLG_DB_INDEX_PREFIX}{nameof(CatalogId)}_{nameof(Value)}", $"{nameof(CatalogId)},{nameof(Value)}", true)]
[SqlIndex($"{Chars.FLG_DB_INDEX_PREFIX}{nameof(CatalogId)}_{nameof(Key)}", $"{nameof(CatalogId)},{nameof(Key)}", true)]
[SqlIndex($"{Chars.FLG_DB_INDEX_PREFIX}{nameof(CatalogId)}_{nameof(Value)}", $"{nameof(CatalogId)},{nameof(Value)}"
, true)]
[Table(Name = Chars.FLG_DB_TABLE_NAME_PREFIX + nameof(Sys_DicContent))]
public record Sys_DicContent : VersionEntity
{

View File

@ -5,11 +5,10 @@ namespace NetAdmin.Domain.DbMaps.Sys;
/// <summary>
/// 计划作业执行记录表
/// </summary>
[FreeSql.DataAnnotations.Index( //
$"{Chars.FLG_DB_INDEX_PREFIX}{nameof(JobId)}_{nameof(TimeId)}", $"{nameof(JobId)},{nameof(TimeId)}", true)]
[FreeSql.DataAnnotations.Index(Chars.FLG_DB_INDEX_PREFIX + nameof(CreatedTime), nameof(CreatedTime), false)]
[FreeSql.DataAnnotations.Index(Chars.FLG_DB_INDEX_PREFIX + nameof(JobId), nameof(JobId), false)]
[FreeSql.DataAnnotations.Index(Chars.FLG_DB_INDEX_PREFIX + nameof(HttpStatusCode), nameof(HttpStatusCode), false)]
[SqlIndex($"{Chars.FLG_DB_INDEX_PREFIX}{nameof(JobId)}_{nameof(TimeId)}", $"{nameof(JobId)},{nameof(TimeId)}", true)]
[SqlIndex(Chars.FLG_DB_INDEX_PREFIX + nameof(CreatedTime), nameof(CreatedTime), false)]
[SqlIndex(Chars.FLG_DB_INDEX_PREFIX + nameof(JobId), nameof(JobId), false)]
[SqlIndex(Chars.FLG_DB_INDEX_PREFIX + nameof(HttpStatusCode), nameof(HttpStatusCode), false)]
[Table(Name = Chars.FLG_DB_TABLE_NAME_PREFIX + nameof(Sys_JobRecord))]
public record Sys_JobRecord : LiteImmutableEntity
{

View File

@ -5,8 +5,8 @@ namespace NetAdmin.Domain.DbMaps.Sys;
/// <summary>
/// 菜单表
/// </summary>
[FreeSql.DataAnnotations.Index(Chars.FLG_DB_INDEX_PREFIX + nameof(Name), nameof(Name), true)]
[Table(Name = Chars.FLG_DB_TABLE_NAME_PREFIX + nameof(Sys_Menu))]
[SqlIndex(Chars.FLG_DB_INDEX_PREFIX + nameof(Name), nameof(Name), true)]
[Table(Name = Chars.FLG_DB_TABLE_NAME_PREFIX + nameof(Sys_Menu))]
public record Sys_Menu : VersionEntity, IFieldSort
{
/// <summary>

View File

@ -3,11 +3,11 @@ namespace NetAdmin.Domain.DbMaps.Sys;
/// <summary>
/// 请求日志表
/// </summary>
[FreeSql.DataAnnotations.Index(Chars.FLG_DB_INDEX_PREFIX + nameof(ApiId), nameof(ApiId), false)]
[FreeSql.DataAnnotations.Index(Chars.FLG_DB_INDEX_PREFIX + nameof(CreatedTime), nameof(CreatedTime), false)]
[FreeSql.DataAnnotations.Index(Chars.FLG_DB_INDEX_PREFIX + nameof(UserId), nameof(UserId), false)]
[FreeSql.DataAnnotations.Index(Chars.FLG_DB_INDEX_PREFIX + nameof(HttpStatusCode), nameof(HttpStatusCode), false)]
[Table(Name = Chars.FLG_DB_TABLE_NAME_PREFIX + nameof(Sys_RequestLog))]
[SqlIndex(Chars.FLG_DB_INDEX_PREFIX + nameof(ApiId), nameof(ApiId), false)]
[SqlIndex(Chars.FLG_DB_INDEX_PREFIX + nameof(CreatedTime), nameof(CreatedTime), false)]
[SqlIndex(Chars.FLG_DB_INDEX_PREFIX + nameof(UserId), nameof(UserId), false)]
[SqlIndex(Chars.FLG_DB_INDEX_PREFIX + nameof(HttpStatusCode), nameof(HttpStatusCode), false)]
[Table(Name = Chars.FLG_DB_TABLE_NAME_PREFIX + nameof(Sys_RequestLog))]
public record Sys_RequestLog : SimpleEntity, IFieldCreatedTime, IFieldCreatedClient
{
/// <summary>

View File

@ -6,8 +6,8 @@ namespace NetAdmin.Domain.DbMaps.Sys;
/// <summary>
/// 角色表
/// </summary>
[FreeSql.DataAnnotations.Index(Chars.FLG_DB_INDEX_PREFIX + nameof(Name), nameof(Name), true)]
[Table(Name = Chars.FLG_DB_TABLE_NAME_PREFIX + nameof(Sys_Role))]
[SqlIndex(Chars.FLG_DB_INDEX_PREFIX + nameof(Name), nameof(Name), true)]
[Table(Name = Chars.FLG_DB_TABLE_NAME_PREFIX + nameof(Sys_Role))]
public record Sys_Role : VersionEntity, IFieldSort, IFieldEnabled, IFieldSummary, IRegister
{
/// <summary>

View File

@ -3,8 +3,7 @@ namespace NetAdmin.Domain.DbMaps.Sys;
/// <summary>
/// 角色-部门映射表
/// </summary>
[FreeSql.DataAnnotations.Index( //
$"{Chars.FLG_DB_INDEX_PREFIX}{nameof(RoleId)}_{nameof(DeptId)}", $"{nameof(RoleId)},{nameof(DeptId)}", true)]
[SqlIndex($"{Chars.FLG_DB_INDEX_PREFIX}{nameof(RoleId)}_{nameof(DeptId)}", $"{nameof(RoleId)},{nameof(DeptId)}", true)]
[Table(Name = Chars.FLG_DB_TABLE_NAME_PREFIX + nameof(Sys_RoleDept))]
public record Sys_RoleDept : ImmutableEntity
{

View File

@ -3,8 +3,7 @@ namespace NetAdmin.Domain.DbMaps.Sys;
/// <summary>
/// 角色-菜单映射表
/// </summary>
[FreeSql.DataAnnotations.Index( //
$"{Chars.FLG_DB_INDEX_PREFIX}{nameof(RoleId)}_{nameof(MenuId)}", $"{nameof(RoleId)},{nameof(MenuId)}", true)]
[SqlIndex($"{Chars.FLG_DB_INDEX_PREFIX}{nameof(RoleId)}_{nameof(MenuId)}", $"{nameof(RoleId)},{nameof(MenuId)}", true)]
[Table(Name = Chars.FLG_DB_TABLE_NAME_PREFIX + nameof(Sys_RoleMenu))]
public record Sys_RoleMenu : ImmutableEntity
{

View File

@ -3,8 +3,8 @@ namespace NetAdmin.Domain.DbMaps.Sys;
/// <summary>
/// 站内信-部门映射表
/// </summary>
[FreeSql.DataAnnotations.Index( //
$"{Chars.FLG_DB_INDEX_PREFIX}{nameof(DeptId)}_{nameof(SiteMsgId)}", $"{nameof(DeptId)},{nameof(SiteMsgId)}", true)]
[SqlIndex($"{Chars.FLG_DB_INDEX_PREFIX}{nameof(DeptId)}_{nameof(SiteMsgId)}", $"{nameof(DeptId)},{nameof(SiteMsgId)}"
, true)]
[Table(Name = Chars.FLG_DB_TABLE_NAME_PREFIX + nameof(Sys_SiteMsgDept))]
public record Sys_SiteMsgDept : ImmutableEntity
{

View File

@ -5,8 +5,8 @@ namespace NetAdmin.Domain.DbMaps.Sys;
/// <summary>
/// 站内信标记表
/// </summary>
[FreeSql.DataAnnotations.Index( //
$"{Chars.FLG_DB_INDEX_PREFIX}{nameof(SiteMsgId)}_{nameof(UserId)}", $"{nameof(SiteMsgId)},{nameof(UserId)}", true)]
[SqlIndex($"{Chars.FLG_DB_INDEX_PREFIX}{nameof(SiteMsgId)}_{nameof(UserId)}", $"{nameof(SiteMsgId)},{nameof(UserId)}"
, true)]
[Table(Name = Chars.FLG_DB_TABLE_NAME_PREFIX + nameof(Sys_SiteMsgFlag))]
public record Sys_SiteMsgFlag : MutableEntity
{

View File

@ -3,8 +3,8 @@ namespace NetAdmin.Domain.DbMaps.Sys;
/// <summary>
/// 站内信-角色映射表
/// </summary>
[FreeSql.DataAnnotations.Index( //
$"{Chars.FLG_DB_INDEX_PREFIX}{nameof(RoleId)}_{nameof(SiteMsgId)}", $"{nameof(RoleId)},{nameof(SiteMsgId)}", true)]
[SqlIndex($"{Chars.FLG_DB_INDEX_PREFIX}{nameof(RoleId)}_{nameof(SiteMsgId)}", $"{nameof(RoleId)},{nameof(SiteMsgId)}"
, true)]
[Table(Name = Chars.FLG_DB_TABLE_NAME_PREFIX + nameof(Sys_SiteMsgRole))]
public record Sys_SiteMsgRole : ImmutableEntity
{

View File

@ -3,8 +3,8 @@ namespace NetAdmin.Domain.DbMaps.Sys;
/// <summary>
/// 站内信-用户映射表
/// </summary>
[FreeSql.DataAnnotations.Index( //
$"{Chars.FLG_DB_INDEX_PREFIX}{nameof(UserId)}_{nameof(SiteMsgId)}", $"{nameof(UserId)},{nameof(SiteMsgId)}", true)]
[SqlIndex($"{Chars.FLG_DB_INDEX_PREFIX}{nameof(UserId)}_{nameof(SiteMsgId)}", $"{nameof(UserId)},{nameof(SiteMsgId)}"
, true)]
[Table(Name = Chars.FLG_DB_TABLE_NAME_PREFIX + nameof(Sys_SiteMsgUser))]
public record Sys_SiteMsgUser : ImmutableEntity
{

View File

@ -5,10 +5,10 @@ namespace NetAdmin.Domain.DbMaps.Sys;
/// <summary>
/// 用户基本信息表
/// </summary>
[FreeSql.DataAnnotations.Index(Chars.FLG_DB_INDEX_PREFIX + nameof(Email), nameof(Email), true)]
[FreeSql.DataAnnotations.Index(Chars.FLG_DB_INDEX_PREFIX + nameof(Mobile), nameof(Mobile), true)]
[FreeSql.DataAnnotations.Index(Chars.FLG_DB_INDEX_PREFIX + nameof(UserName), nameof(UserName), true)]
[Table(Name = Chars.FLG_DB_TABLE_NAME_PREFIX + nameof(Sys_User))]
[SqlIndex(Chars.FLG_DB_INDEX_PREFIX + nameof(Email), nameof(Email), true)]
[SqlIndex(Chars.FLG_DB_INDEX_PREFIX + nameof(Mobile), nameof(Mobile), true)]
[SqlIndex(Chars.FLG_DB_INDEX_PREFIX + nameof(UserName), nameof(UserName), true)]
[Table(Name = Chars.FLG_DB_TABLE_NAME_PREFIX + nameof(Sys_User))]
public record Sys_User : VersionEntity, IFieldSummary, IFieldEnabled, IRegister
{
/// <summary>

View File

@ -27,7 +27,7 @@ import selectConfig from '@/config/select'
export default {
props: {
apiObj: {
queryApi: {
type: Object,
default: () => {},
},
@ -55,7 +55,7 @@ export default {
methods: {
//
visibleChange(isOpen) {
if (isOpen && this.options.length === 0 && (this.dic || this.apiObj)) {
if (isOpen && this.options.length === 0 && (this.dic || this.queryApi)) {
this.getRemoteData()
}
},
@ -64,8 +64,8 @@ export default {
this.loading = true
this.dicParams[selectConfig.request.name] = this.dic
let res = {}
if (this.apiObj) {
res = await this.apiObj.post(this.params)
if (this.queryApi) {
res = await this.queryApi.post(this.params)
} else if (this.dic) {
res = await selectConfig.dicApiObj.get(this.params)
}

View File

@ -5,7 +5,10 @@
<div class="adminui-header-left">
<div class="logo-bar">
<img class="logo" src="@/assets/img/logo.png" />
<span>{{ $CONFIG.APP_NAME }}</span>
<div>
<p>{{ $CONFIG.APP_NAME }}</p>
<p class="version">{{ version }}</p>
</div>
</div>
<ul v-if="!ismobile" class="nav">
<li v-for="item in menu" :class="pmenu.path === item.path ? 'active' : ''" :key="item" @click="showMenu(item)">
@ -63,7 +66,10 @@
<div class="adminui-header-left">
<div class="logo-bar">
<img class="logo" src="@/assets/img/logo.png" />
<span>{{ $CONFIG.APP_NAME }}</span>
<div>
<p>{{ $CONFIG.APP_NAME }}</p>
<p class="version">{{ version }}</p>
</div>
</div>
</div>
<div class="adminui-header-right">
@ -108,7 +114,10 @@
<div class="adminui-header-left">
<div class="logo-bar">
<img class="logo" src="@/assets/img/logo.png" />
<span>{{ $CONFIG.APP_NAME }}</span>
<div>
<p>{{ $CONFIG.APP_NAME }}</p>
<p class="version">{{ version }}</p>
</div>
</div>
</div>
<div class="adminui-header-right">
@ -237,6 +246,7 @@ export default {
nextMenu: [],
pmenu: {},
active: '',
version: '',
}
},
computed: {
@ -253,12 +263,14 @@ export default {
return this.$store.state.global.menuIsCollapse
},
},
created() {
async created() {
this.onLayoutResize()
window.addEventListener('resize', this.onLayoutResize)
const menu = this.$router.sc_getMenu()
this.menu = this.filterUrl(menu)
this.showThis()
const res = await this.$API.sys_tools.getVersion.post()
this.version = res.data.slice(0, res.data.indexOf('+'))
},
watch: {
$route() {
@ -319,4 +331,11 @@ export default {
},
},
}
</script>
</script>
<style scoped>
.version {
font-size: var(--el-font-size-small);
font-weight: var(--el-font-weight-primary);
color: var(--el-text-color-disabled);
}
</style>

View File

@ -150,6 +150,11 @@
margin-left: 0.8rem;
}
.el-button-group {
display: flex;
justify-content: end;
}
.el-button-group + .el-dropdown {
margin-left: 0.8rem;
}

View File

@ -150,4 +150,8 @@
.user-bar .user-avatar label {
display: none !important;
}
.sc-select-filter__item {
width: 100% !important;
}
}

View File

@ -86,7 +86,8 @@
type: 'danger',
})
"
:vue="this" />
:vue="this"
width="150" />
</sc-table>
</el-main>
</el-container>

View File

@ -92,7 +92,8 @@
type: 'danger',
})
"
:vue="this" />
:vue="this"
width="150" />
</sc-table>
</el-main>
</el-container>

View File

@ -52,7 +52,8 @@
type: 'danger',
})
"
:vue="this" />
:vue="this"
width="150" />
</sc-table>
</el-main>
</el-container>

View File

@ -185,7 +185,8 @@
},
)
"
:vue="this" />
:vue="this"
width="200" />
</sc-table>
</el-main>
</el-container>

View File

@ -1,15 +1,9 @@
<template>
<el-container>
<el-header style="border: none">
<el-tabs v-model="tabId" class="w100p">
<el-tab-pane :label="$t('所有作业')" name="all"></el-tab-pane>
<el-tab-pane :label="$t('异常作业')" name="fail"></el-tab-pane>
</el-tabs>
</el-header>
<el-main class="nopadding">
<component :is="tabId" :status-codes="['300,399', '400,499', '500,599', '900,999']" />
</el-main>
</el-container>
<el-tabs v-model="tabId" class="w100p" style="background: var(--el-bg-color-overlay); padding-left: 1rem">
<el-tab-pane :label="$t('所有作业')" name="all"></el-tab-pane>
<el-tab-pane :label="$t('异常作业')" name="fail"></el-tab-pane>
</el-tabs>
<component :is="tabId" :status-codes="['300,399', '400,499', '500,599', '900,999']" />
</template>
<script>

View File

@ -71,7 +71,7 @@ export default {
this.loading = true
this.mode = data.mode
if (data.row?.id) {
const res = await this.$API.sys_job.recordGet.post({ id: data.row.id })
const res = await this.$API.sys_job.getRecord.post({ id: data.row.id })
Object.assign(this.form, res.data)
}
this.loading = false

View File

@ -84,7 +84,8 @@
type: 'danger',
})
"
:vue="this" />
:vue="this"
width="150" />
</sc-table>
</el-main>
</el-container>

View File

@ -138,7 +138,8 @@
},
)
"
:vue="this" />
:vue="this"
width="200" />
</sc-table>
</el-main>
</el-container>