mirror of
https://github.com/nsnail/NetAdmin.git
synced 2025-04-22 22:22:51 +08:00
feat: ✨ logoBar显示程序版本号 (#153)
[skip ci] Co-authored-by: tk <fiyne1a@dingtalk.com>
This commit is contained in:
parent
67eaa5b783
commit
be5b9a160d
@ -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
|
@ -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" />
|
||||
|
@ -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>
|
||||
|
@ -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
|
||||
{
|
||||
|
@ -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
|
||||
{
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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
|
||||
{
|
||||
|
@ -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
|
||||
{
|
||||
|
@ -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
|
||||
{
|
||||
|
@ -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
|
||||
{
|
||||
|
@ -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
|
||||
{
|
||||
|
@ -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
|
||||
{
|
||||
|
@ -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>
|
||||
|
@ -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)
|
||||
}
|
||||
|
@ -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>
|
@ -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;
|
||||
}
|
||||
|
@ -150,4 +150,8 @@
|
||||
.user-bar .user-avatar label {
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
.sc-select-filter__item {
|
||||
width: 100% !important;
|
||||
}
|
||||
}
|
@ -86,7 +86,8 @@
|
||||
type: 'danger',
|
||||
})
|
||||
"
|
||||
:vue="this" />
|
||||
:vue="this"
|
||||
width="150" />
|
||||
</sc-table>
|
||||
</el-main>
|
||||
</el-container>
|
||||
|
@ -92,7 +92,8 @@
|
||||
type: 'danger',
|
||||
})
|
||||
"
|
||||
:vue="this" />
|
||||
:vue="this"
|
||||
width="150" />
|
||||
</sc-table>
|
||||
</el-main>
|
||||
</el-container>
|
||||
|
@ -52,7 +52,8 @@
|
||||
type: 'danger',
|
||||
})
|
||||
"
|
||||
:vue="this" />
|
||||
:vue="this"
|
||||
width="150" />
|
||||
</sc-table>
|
||||
</el-main>
|
||||
</el-container>
|
||||
|
@ -185,7 +185,8 @@
|
||||
},
|
||||
)
|
||||
"
|
||||
:vue="this" />
|
||||
:vue="this"
|
||||
width="200" />
|
||||
</sc-table>
|
||||
</el-main>
|
||||
</el-container>
|
||||
|
@ -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>
|
||||
|
@ -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
|
||||
|
@ -84,7 +84,8 @@
|
||||
type: 'danger',
|
||||
})
|
||||
"
|
||||
:vue="this" />
|
||||
:vue="this"
|
||||
width="150" />
|
||||
</sc-table>
|
||||
</el-main>
|
||||
</el-container>
|
||||
|
@ -138,7 +138,8 @@
|
||||
},
|
||||
)
|
||||
"
|
||||
:vue="this" />
|
||||
:vue="this"
|
||||
width="200" />
|
||||
</sc-table>
|
||||
</el-main>
|
||||
</el-container>
|
||||
|
Loading…
x
Reference in New Issue
Block a user