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 CsvIndex = CsvHelper.Configuration.Attributes.IndexAttribute;
global using DynamicFilterInfo = NetAdmin.Domain.Dto.Dependency.DynamicFilterInfo; global using DynamicFilterInfo = NetAdmin.Domain.Dto.Dependency.DynamicFilterInfo;
global using DynamicFilterOperators = NetAdmin.Domain.Enums.DynamicFilterOperators; global using DynamicFilterOperators = NetAdmin.Domain.Enums.DynamicFilterOperators;
global using SqlIndex = FreeSql.DataAnnotations.IndexAttribute;
#endif #endif

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -5,7 +5,10 @@
<div class="adminui-header-left"> <div class="adminui-header-left">
<div class="logo-bar"> <div class="logo-bar">
<img class="logo" src="@/assets/img/logo.png" /> <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>
<ul v-if="!ismobile" class="nav"> <ul v-if="!ismobile" class="nav">
<li v-for="item in menu" :class="pmenu.path === item.path ? 'active' : ''" :key="item" @click="showMenu(item)"> <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="adminui-header-left">
<div class="logo-bar"> <div class="logo-bar">
<img class="logo" src="@/assets/img/logo.png" /> <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> </div>
<div class="adminui-header-right"> <div class="adminui-header-right">
@ -108,7 +114,10 @@
<div class="adminui-header-left"> <div class="adminui-header-left">
<div class="logo-bar"> <div class="logo-bar">
<img class="logo" src="@/assets/img/logo.png" /> <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> </div>
<div class="adminui-header-right"> <div class="adminui-header-right">
@ -237,6 +246,7 @@ export default {
nextMenu: [], nextMenu: [],
pmenu: {}, pmenu: {},
active: '', active: '',
version: '',
} }
}, },
computed: { computed: {
@ -253,12 +263,14 @@ export default {
return this.$store.state.global.menuIsCollapse return this.$store.state.global.menuIsCollapse
}, },
}, },
created() { async created() {
this.onLayoutResize() this.onLayoutResize()
window.addEventListener('resize', this.onLayoutResize) window.addEventListener('resize', this.onLayoutResize)
const menu = this.$router.sc_getMenu() const menu = this.$router.sc_getMenu()
this.menu = this.filterUrl(menu) this.menu = this.filterUrl(menu)
this.showThis() this.showThis()
const res = await this.$API.sys_tools.getVersion.post()
this.version = res.data.slice(0, res.data.indexOf('+'))
}, },
watch: { watch: {
$route() { $route() {
@ -320,3 +332,10 @@ 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; margin-left: 0.8rem;
} }
.el-button-group {
display: flex;
justify-content: end;
}
.el-button-group + .el-dropdown { .el-button-group + .el-dropdown {
margin-left: 0.8rem; margin-left: 0.8rem;
} }

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -71,7 +71,7 @@ export default {
this.loading = true this.loading = true
this.mode = data.mode this.mode = data.mode
if (data.row?.id) { 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) Object.assign(this.form, res.data)
} }
this.loading = false this.loading = false

View File

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

View File

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