feat(验收微调轮): 状态徽标描边化+树卡300px+截断预留收窄+全应用/日志链接主题色
build / build (push) Successful in 2m3s

- group-user 状态列 Tag 加 border 描边(对齐「当前生效」徽标样式,弃实心块)
- 组树顶部操作钮图标 18→16px、内边距收窄,第5钮不再贴边
- main.scss UserBase 专项:tree-wrapper 左树卡统一 300px(撤 AppList 180px 局部覆写)
- GroupAuth ztree 节点名预留 90→36px(子组继承复选框悬停才注入,常态不该预留),消除有空间却截断成 ...
- 角色授权「全应用」徽标改描边主题色 tag-brand;AppModuleCheckTree 当前角色文字 var(--brand)、面板 min-height 320→0
- 三个日志详情弹窗「下载/在线预览」链接 #577afb/#3d5afe → var(--brand)/var(--brand-2)
- 注:本机 I/O 风暴(冷读 node_modules 停顿 30-45s)致 npm run build 门禁未跑通验证,改动均为样式/props 级
This commit is contained in:
chenxing
2026-10-11 10:46:49 +08:00
parent 3b0f29b0d1
commit d034320406
10 changed files with 35 additions and 20 deletions
+6
View File
@@ -156,3 +156,9 @@ h4.subtitle {
background-color: rgba(232, 104, 74, 0.08); background-color: rgba(232, 104, 74, 0.08);
} }
} }
/* UserBase 专项(不上收通道,勿写入接入规范):左侧树卡统一 300px——
通道默认 240 装不下组树操作钮与节点名,本端树页多、统一加宽 */
.base-wrap-main .tree-wrapper .tree-container {
width: 300px;
}
+3 -1
View File
@@ -755,7 +755,9 @@ onMounted(async () => {
} }
:deep(.ztree li a) { :deep(.ztree li a) {
max-width: calc(100% - 90px); /* 子组继承复选框仅悬停时由 addHoverDom 注入(绝对定位 right:14,占位约 30px),
常态无需预留 90px——收窄预留,消除「明明有空间却截断成 ...」 */
max-width: calc(100% - 36px);
overflow: hidden; overflow: hidden;
text-overflow: ellipsis; text-overflow: ellipsis;
white-space: nowrap; white-space: nowrap;
-1
View File
@@ -299,7 +299,6 @@ const goModuleManage = (row: any) => {
flex-direction: column; flex-direction: column;
overflow: hidden; overflow: hidden;
padding: 0; padding: 0;
width: 180px;
} }
.school-select { .school-select {
+5 -5
View File
@@ -352,8 +352,8 @@ onMounted(async () => {
padding-bottom: 10px; padding-bottom: 10px;
li { li {
padding: 10px; padding: 8px;
height: 38px; height: 34px;
border-radius: 50%; border-radius: 50%;
cursor: pointer; cursor: pointer;
@@ -363,12 +363,12 @@ onMounted(async () => {
} }
svg { svg {
width: 18px; width: 16px;
height: 18px; height: 16px;
} }
.ivu-icon { .ivu-icon {
font-size: 18px; font-size: 16px;
} }
} }
+4 -3
View File
@@ -164,15 +164,16 @@ const columns = [
title: '状态', key: 'disabled', width: 130, align: 'center', title: '状态', key: 'disabled', width: 130, align: 'center',
render: (h: any, { row }: any) => { render: (h: any, { row }: any) => {
// Vue3 渲染函数须 import 真组件:h('Tag') 会建未知原生元素(无样式不渲染) // Vue3 渲染函数须 import 真组件:h('Tag') 会建未知原生元素(无样式不渲染)
if (row.disabled) return h(Tag, { color: 'default' }, () => '禁用'); // border 描边徽标(对齐 UserHome「当前生效」样式),非实心块
if (row.disabled) return h(Tag, { color: 'default', border: true }, () => '禁用');
if (row.groupStatus === 1) { if (row.groupStatus === 1) {
// 正常 Tag + 转出徽标(view-ui-plus Badge status 模式:圆点 + 文本) // 正常 Tag + 转出徽标(view-ui-plus Badge status 模式:圆点 + 文本)
return h('div', { style: 'display:inline-flex;align-items:center;gap:6px' }, [ return h('div', { style: 'display:inline-flex;align-items:center;gap:6px' }, [
h(Tag, { color: 'success' }, () => '正常'), h(Tag, { color: 'success', border: true }, () => '正常'),
h(Badge, { status: 'warning', text: '转出' }), h(Badge, { status: 'warning', text: '转出' }),
]); ]);
} }
return h(Tag, { color: 'success' }, () => '正常'); return h(Tag, { color: 'success', border: true }, () => '正常');
}, },
}, },
{ {
+2 -2
View File
@@ -158,10 +158,10 @@ async function handlePreview() {
} }
.download-link { .download-link {
color: #577afb; color: var(--brand);
&:hover { &:hover {
color: #3d5afe; color: var(--brand-2);
} }
} }
+2 -2
View File
@@ -150,10 +150,10 @@ async function handlePreview() {
} }
.download-link { .download-link {
color: #577afb; color: var(--brand);
&:hover { &:hover {
color: #3d5afe; color: var(--brand-2);
} }
} }
} }
+2 -2
View File
@@ -169,10 +169,10 @@ function formatTime(val: any): string {
} }
.download-link { .download-link {
color: #577afb; color: var(--brand);
&:hover { &:hover {
color: #3d5afe; color: var(--brand-2);
} }
} }
} }
+2 -2
View File
@@ -299,7 +299,7 @@ watch(
.role-authz-tree { .role-authz-tree {
position: relative; position: relative;
flex: 1; flex: 1;
min-height: 320px; min-height: 0;
padding: 0; padding: 0;
background: #fff; background: #fff;
overflow: auto; overflow: auto;
@@ -343,7 +343,7 @@ watch(
} }
.role-name { .role-name {
color: #2d8cf0; color: var(--brand);
font-weight: 600; font-weight: 600;
} }
+9 -2
View File
@@ -18,7 +18,7 @@
:class="['role-item', selectedRoleId === role.id ? 'active' : '']" @click="selectRole(role)"> :class="['role-item', selectedRoleId === role.id ? 'active' : '']" @click="selectRole(role)">
<div class="role-name">{{ role.name }}</div> <div class="role-name">{{ role.name }}</div>
<div class="role-app"> <div class="role-app">
<Tag v-if="role.allAppFlag" color="blue" size="small">全应用</Tag> <Tag v-if="role.allAppFlag" class="tag-brand" border size="small">全应用</Tag>
<span v-else>{{ role.appName || "-" }}</span> <span v-else>{{ role.appName || "-" }}</span>
</div> </div>
</div> </div>
@@ -36,7 +36,7 @@
<div class="authz-bar"> <div class="authz-bar">
<span class="authz-title">当前角色:<b>{{ selectedRole.name }}</b></span> <span class="authz-title">当前角色:<b>{{ selectedRole.name }}</b></span>
<span class="authz-app"> <span class="authz-app">
<Tag v-if="selectedRole.allAppFlag" color="blue">全应用</Tag> <Tag v-if="selectedRole.allAppFlag" class="tag-brand" border>全应用</Tag>
<span v-else>{{ selectedRole.appName || "-" }}</span> <span v-else>{{ selectedRole.appName || "-" }}</span>
</span> </span>
<Tag v-if="selectedRole.disabled" color="red">已禁用</Tag> <Tag v-if="selectedRole.disabled" color="red">已禁用</Tag>
@@ -258,6 +258,13 @@ function goManage() {
color: var(--brand); color: var(--brand);
} }
/* 主题色描边徽标(iView color 预设是写死蓝,改挂通道令牌随档变化) */
.tag-brand {
color: var(--brand) !important;
border: 1px solid var(--brand) !important;
background: #fff;
}
.authz-app { .authz-app {
color: #515a6e; color: #515a6e;
font-size: 13px; font-size: 13px;