ui 优化
This commit is contained in:
@@ -33,8 +33,8 @@ body {
|
||||
--lux-coral-glow: rgba(251, 113, 133, 0.25);
|
||||
|
||||
/* 玻璃表面 */
|
||||
--lux-glass-bg-card: rgba(30, 41, 59, 0.55);
|
||||
--lux-glass-bg-table: rgba(30, 41, 59, 0.45);
|
||||
--lux-glass-bg-card: rgba(30, 41, 59, 0.42);
|
||||
--lux-glass-bg-table: rgba(30, 41, 59, 0.20);
|
||||
--lux-glass-bg-input: rgba(15, 23, 42, 0.45);
|
||||
--lux-glass-bg-dialog: rgba(30, 41, 59, 0.72);
|
||||
--lux-glass-bg-sidebar: rgba(15, 23, 42, 0.60);
|
||||
@@ -52,9 +52,14 @@ body {
|
||||
--lux-blur-sm: blur(8px);
|
||||
--lux-blur-md: blur(14px);
|
||||
--lux-blur-lg: blur(20px);
|
||||
--lux-blur-lg-saturate: blur(20px) saturate(1.4);
|
||||
--lux-blur-xl: blur(24px);
|
||||
|
||||
/* Elevation shadows */
|
||||
--lux-shadow-card:
|
||||
0 4px 24px rgba(0, 0, 0, 0.22),
|
||||
0 0 0 1px rgba(255, 255, 255, 0.05) inset,
|
||||
0 1px 0 rgba(255, 255, 255, 0.08) inset;
|
||||
--lux-shadow-1: 0 2px 8px rgba(0, 0, 0, 0.18);
|
||||
--lux-shadow-2: 0 4px 16px rgba(0, 0, 0, 0.25);
|
||||
--lux-shadow-3: 0 8px 32px rgba(0, 0, 0, 0.35);
|
||||
@@ -356,16 +361,16 @@ body {
|
||||
.lux-shell .el-card {
|
||||
border-radius: var(--lux-radius-lg) !important;
|
||||
background: var(--lux-glass-bg-card) !important;
|
||||
backdrop-filter: var(--lux-blur-lg);
|
||||
-webkit-backdrop-filter: var(--lux-blur-lg);
|
||||
border: 1px solid var(--lux-glass-border) !important;
|
||||
box-shadow: var(--lux-shadow-1);
|
||||
backdrop-filter: var(--lux-blur-lg-saturate);
|
||||
-webkit-backdrop-filter: var(--lux-blur-lg-saturate);
|
||||
border: 1px solid rgba(255, 255, 255, 0.12) !important;
|
||||
box-shadow: var(--lux-shadow-card);
|
||||
color: var(--lux-text-strong);
|
||||
transition: box-shadow 0.2s ease, transform 0.15s ease, border-color 0.2s ease;
|
||||
}
|
||||
|
||||
.lux-shell .el-card:hover {
|
||||
box-shadow: var(--lux-shadow-2);
|
||||
box-shadow: var(--lux-shadow-2), 0 0 0 1px rgba(255, 255, 255, 0.05) inset;
|
||||
border-color: var(--lux-glass-border-hover) !important;
|
||||
}
|
||||
|
||||
@@ -397,7 +402,7 @@ body {
|
||||
.lux-shell .el-table {
|
||||
--el-table-border-color: rgba(255, 255, 255, 0.06);
|
||||
--el-table-header-bg-color: rgba(15, 23, 42, 0.65);
|
||||
--el-table-row-hover-bg-color: rgba(251, 113, 133, 0.06);
|
||||
--el-table-row-hover-bg-color: rgba(56, 189, 248, 0.06);
|
||||
--el-table-bg-color: transparent;
|
||||
--el-table-tr-bg-color: transparent;
|
||||
--el-table-header-text-color: var(--lux-text-muted);
|
||||
@@ -409,17 +414,48 @@ body {
|
||||
background: transparent !important;
|
||||
}
|
||||
|
||||
.lux-shell .el-table::before,
|
||||
.lux-shell .el-table--border::after,
|
||||
.lux-shell .el-table--border::before,
|
||||
.lux-shell .el-table__inner-wrapper::before {
|
||||
background-color: rgba(255, 255, 255, 0.06) !important;
|
||||
}
|
||||
|
||||
.lux-shell .el-table th.el-table__cell {
|
||||
font-weight: 600;
|
||||
letter-spacing: 0.02em;
|
||||
color: var(--lux-text-muted);
|
||||
background: rgba(15, 23, 42, 0.65) !important;
|
||||
backdrop-filter: var(--lux-blur-md);
|
||||
-webkit-backdrop-filter: var(--lux-blur-md);
|
||||
border-bottom: 1px solid rgba(255, 255, 255, 0.10) !important;
|
||||
}
|
||||
|
||||
/* 表格条纹行 */
|
||||
.lux-shell .el-table td.el-table__cell {
|
||||
background: transparent !important;
|
||||
border-bottom: 1px solid rgba(255, 255, 255, 0.04) !important;
|
||||
}
|
||||
|
||||
/* 斑马纹 */
|
||||
.lux-shell .el-table--striped .el-table__body tr.el-table__row--striped td.el-table__cell {
|
||||
background: rgba(255, 255, 255, 0.02) !important;
|
||||
background: rgba(255, 255, 255, 0.025) !important;
|
||||
}
|
||||
|
||||
/* hover:品牌青 */
|
||||
.lux-shell .el-table__body tr:hover > td.el-table__cell {
|
||||
background: rgba(56, 189, 248, 0.06) !important;
|
||||
}
|
||||
|
||||
/* 固定列透出卡片玻璃 */
|
||||
.lux-shell .el-table .el-table__fixed,
|
||||
.lux-shell .el-table .el-table__fixed-right,
|
||||
.lux-shell .el-table .el-table__fixed-right-patch {
|
||||
background: transparent !important;
|
||||
}
|
||||
|
||||
.lux-shell .el-table .el-table__fixed::before,
|
||||
.lux-shell .el-table .el-table__fixed-right::before {
|
||||
background-color: rgba(255, 255, 255, 0.04);
|
||||
}
|
||||
|
||||
/* ── 分页玻璃 ── */
|
||||
@@ -737,24 +773,68 @@ body {
|
||||
color: var(--lux-text-dim) !important;
|
||||
}
|
||||
|
||||
/* ── Tabs (el-tabs type=card) ── */
|
||||
/* ── Tabs (el-tabs type=card) ──
|
||||
* Element Plus card tabs 在 closable 项 hover 时会改 padding 并展开关闭按钮,
|
||||
* tab 宽度随之变化,鼠标停在交界处会在相邻 tab 间来回抢 hover。
|
||||
* 固定 padding + 始终预留关闭按钮占位,hover/active 只改颜色与 inset 阴影。
|
||||
*/
|
||||
.lux-shell .el-tabs--card > .el-tabs__header .el-tabs__item {
|
||||
position: relative;
|
||||
z-index: 1;
|
||||
margin-left: 0 !important;
|
||||
margin-top: 0 !important;
|
||||
padding-left: 16px !important;
|
||||
padding-right: 16px !important;
|
||||
background: var(--lux-glass-bg-tab) !important;
|
||||
border: 1px solid var(--lux-glass-border) !important;
|
||||
border-radius: var(--lux-radius-md) var(--lux-radius-md) 0 0;
|
||||
color: var(--lux-text-muted);
|
||||
transition: background 0.2s ease, color 0.2s ease;
|
||||
transition: background 0.2s ease, color 0.2s ease, border-color 0.2s ease, box-shadow 0.2s ease !important;
|
||||
}
|
||||
|
||||
.lux-shell .el-tabs--card > .el-tabs__header .el-tabs__item + .el-tabs__item {
|
||||
margin-left: 6px !important;
|
||||
}
|
||||
|
||||
.lux-shell .el-tabs--card > .el-tabs__header .el-tabs__item.is-closable,
|
||||
.lux-shell .el-tabs--card > .el-tabs__header .el-tabs__item.is-closable:hover,
|
||||
.lux-shell .el-tabs--card > .el-tabs__header .el-tabs__item.is-closable.is-active,
|
||||
.lux-shell .el-tabs--card > .el-tabs__header .el-tabs__item.is-closable.is-active:hover {
|
||||
padding-left: 16px !important;
|
||||
padding-right: 16px !important;
|
||||
}
|
||||
|
||||
.lux-shell .el-tabs--card > .el-tabs__header .el-tabs__item .is-icon-close {
|
||||
width: 14px !important;
|
||||
height: 14px !important;
|
||||
margin-left: 6px !important;
|
||||
overflow: visible !important;
|
||||
opacity: 0.45;
|
||||
transition: opacity 0.2s ease, background-color 0.2s ease, color 0.2s ease !important;
|
||||
}
|
||||
|
||||
.lux-shell .el-tabs--card > .el-tabs__header .el-tabs__item:hover .is-icon-close,
|
||||
.lux-shell .el-tabs--card > .el-tabs__header .el-tabs__item.is-active .is-icon-close {
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
.lux-shell .el-tabs--card > .el-tabs__header .el-tabs__item.is-active {
|
||||
z-index: 2;
|
||||
background: var(--lux-glass-bg-tab-active) !important;
|
||||
color: var(--lux-text-strong);
|
||||
border-color: var(--lux-glass-border) !important;
|
||||
border-bottom-color: transparent !important;
|
||||
box-shadow: inset 0 2px 0 var(--lux-cyan);
|
||||
}
|
||||
|
||||
.lux-shell .el-tabs--card > .el-tabs__header .el-tabs__item:hover {
|
||||
z-index: 2;
|
||||
color: var(--lux-text-strong);
|
||||
border-color: var(--lux-glass-border-hover) !important;
|
||||
}
|
||||
|
||||
.lux-shell .el-tabs--card > .el-tabs__header .el-tabs__item.is-active:hover {
|
||||
border-bottom-color: transparent !important;
|
||||
}
|
||||
|
||||
.lux-shell .el-tabs--card > .el-tabs__header {
|
||||
@@ -799,8 +879,8 @@ body {
|
||||
--lux-coral: #fb7185;
|
||||
--lux-indigo: #6366f1;
|
||||
--lux-violet: #7c3aed;
|
||||
--lux-card-bg: #1e293b;
|
||||
--lux-card-border: rgba(148, 163, 184, 0.12);
|
||||
--lux-card-bg: var(--lux-glass-bg-card);
|
||||
--lux-card-border: rgba(255, 255, 255, 0.12);
|
||||
--lux-glass-sidebar: rgba(15, 23, 42, 0.6);
|
||||
--lux-glass-header: rgba(30, 41, 59, 0.8);
|
||||
--lux-input-bg: #0f172a;
|
||||
@@ -1065,73 +1145,6 @@ body {
|
||||
color: #f59e0b;
|
||||
}
|
||||
|
||||
/* —— 卡片 / 表格(深色风格) —— */
|
||||
.lux-shell .el-card {
|
||||
border-radius: 16px !important;
|
||||
background: #1e293b !important;
|
||||
border: 1px solid rgba(148, 163, 184, 0.12) !important;
|
||||
box-shadow:
|
||||
0 4px 6px -1px rgba(0, 0, 0, 0.2),
|
||||
0 14px 32px -10px rgba(0, 0, 0, 0.3) !important;
|
||||
color: #e2e8f0;
|
||||
}
|
||||
|
||||
.lux-shell .el-card__header {
|
||||
border-bottom: 1px solid rgba(148, 163, 184, 0.12) !important;
|
||||
font-weight: 600;
|
||||
color: #e2e8f0;
|
||||
}
|
||||
|
||||
/* 列表页顶部筛选栏:压低整体高度 */
|
||||
.lux-shell .el-card.search-card {
|
||||
margin-bottom: 14px !important;
|
||||
}
|
||||
|
||||
.lux-shell .el-card.search-card .el-card__body {
|
||||
padding: 8px 14px 10px !important;
|
||||
}
|
||||
|
||||
.lux-shell .search-form.el-form--inline .el-form-item {
|
||||
margin-bottom: 4px;
|
||||
margin-top: 0;
|
||||
}
|
||||
|
||||
.lux-shell .el-table {
|
||||
--el-table-border-color: rgba(148, 163, 184, 0.1);
|
||||
--el-table-header-bg-color: #0f172a;
|
||||
--el-table-row-hover-bg-color: rgba(251, 113, 133, 0.06);
|
||||
--el-table-bg-color: #1e293b;
|
||||
--el-table-tr-bg-color: #1e293b;
|
||||
--el-table-header-text-color: #cbd5e1;
|
||||
--el-table-text-color: #cbd5e1;
|
||||
color: #e2e8f0;
|
||||
border-radius: 12px;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.lux-shell .el-table th.el-table__cell {
|
||||
font-weight: 600;
|
||||
color: #94a3b8;
|
||||
background: #0f172a !important;
|
||||
}
|
||||
|
||||
.lux-shell .el-pagination {
|
||||
--el-pagination-font-size: 13px;
|
||||
--el-pagination-button-color: #94a3b8;
|
||||
--el-pagination-hover-color: var(--lux-cyan);
|
||||
--el-pagination-bg-color: transparent;
|
||||
}
|
||||
|
||||
.lux-shell .el-pagination .el-pager li {
|
||||
color: #94a3b8;
|
||||
}
|
||||
|
||||
.lux-shell .el-pagination .el-pager li.is-active {
|
||||
color: #fff !important;
|
||||
background: #38bdf8 !important;
|
||||
border-radius: 8px;
|
||||
}
|
||||
|
||||
/* 主按钮 */
|
||||
.lux-shell .el-button--primary {
|
||||
--el-button-bg-color: transparent;
|
||||
|
||||
@@ -38,14 +38,8 @@
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" @click="handleSearch">
|
||||
<el-icon><Search /></el-icon>
|
||||
搜索
|
||||
</el-button>
|
||||
<el-button @click="handleReset">
|
||||
<el-icon><Refresh /></el-icon>
|
||||
重置
|
||||
</el-button>
|
||||
<el-button type="primary" circle :icon="Search" title="搜索" @click="handleSearch" />
|
||||
<el-button circle :icon="Refresh" title="重置" @click="handleReset" />
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-card>
|
||||
@@ -53,10 +47,7 @@
|
||||
<el-card class="table-card">
|
||||
<div class="card-header">
|
||||
<span class="title">黑名单列表</span>
|
||||
<el-button type="primary" @click="handleAdd">
|
||||
<el-icon><Plus /></el-icon>
|
||||
新增黑名单
|
||||
</el-button>
|
||||
<el-button type="primary" circle :icon="Plus" title="新增黑名单" @click="handleAdd" />
|
||||
</div>
|
||||
|
||||
<div class="table-loading-host" v-loading="loading">
|
||||
|
||||
@@ -11,14 +11,8 @@
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" @click="handleSearch">
|
||||
<el-icon><Search /></el-icon>
|
||||
搜索
|
||||
</el-button>
|
||||
<el-button @click="handleReset">
|
||||
<el-icon><Refresh /></el-icon>
|
||||
重置
|
||||
</el-button>
|
||||
<el-button type="primary" circle :icon="Search" title="搜索" @click="handleSearch" />
|
||||
<el-button circle :icon="Refresh" title="重置" @click="handleReset" />
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-card>
|
||||
@@ -26,10 +20,7 @@
|
||||
<el-card class="table-card">
|
||||
<div class="card-header">
|
||||
<span class="title">品牌列表</span>
|
||||
<el-button type="primary" @click="handleAdd">
|
||||
<el-icon><Plus /></el-icon>
|
||||
新增品牌
|
||||
</el-button>
|
||||
<el-button type="primary" circle :icon="Plus" title="新增品牌" @click="handleAdd" />
|
||||
</div>
|
||||
|
||||
<div class="table-loading-host" v-loading="loading">
|
||||
|
||||
@@ -27,14 +27,8 @@
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" @click="handleSearch">
|
||||
<el-icon><Search /></el-icon>
|
||||
搜索
|
||||
</el-button>
|
||||
<el-button @click="handleReset">
|
||||
<el-icon><Refresh /></el-icon>
|
||||
重置
|
||||
</el-button>
|
||||
<el-button type="primary" circle :icon="Search" title="搜索" @click="handleSearch" />
|
||||
<el-button circle :icon="Refresh" title="重置" @click="handleReset" />
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-card>
|
||||
@@ -51,10 +45,7 @@
|
||||
<el-icon><Upload /></el-icon>
|
||||
推送搜索 「{{ selectedIds.length }}」
|
||||
</el-button>
|
||||
<el-button type="primary" @click="handleAdd">
|
||||
<el-icon><Plus /></el-icon>
|
||||
新型号
|
||||
</el-button>
|
||||
<el-button type="primary" circle :icon="Plus" title="新型号" @click="handleAdd" />
|
||||
<el-button
|
||||
type="success"
|
||||
:disabled="selectedIds.length === 0"
|
||||
|
||||
@@ -38,14 +38,8 @@
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" @click="handleSearch">
|
||||
<el-icon><Search /></el-icon>
|
||||
搜索
|
||||
</el-button>
|
||||
<el-button @click="handleReset">
|
||||
<el-icon><Refresh /></el-icon>
|
||||
重置
|
||||
</el-button>
|
||||
<el-button type="primary" circle :icon="Search" title="搜索" @click="handleSearch" />
|
||||
<el-button circle :icon="Refresh" title="重置" @click="handleReset" />
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-card>
|
||||
@@ -53,10 +47,7 @@
|
||||
<el-card class="table-card">
|
||||
<div class="card-header">
|
||||
<span class="title">定向升级列表</span>
|
||||
<el-button type="primary" @click="handleAdd">
|
||||
<el-icon><Plus /></el-icon>
|
||||
新增定向设备
|
||||
</el-button>
|
||||
<el-button type="primary" circle :icon="Plus" title="新增定向设备" @click="handleAdd" />
|
||||
</div>
|
||||
|
||||
<div class="table-loading-host" v-loading="loading">
|
||||
|
||||
@@ -54,14 +54,8 @@
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" @click="handleSearch">
|
||||
<el-icon><Search /></el-icon>
|
||||
搜索
|
||||
</el-button>
|
||||
<el-button @click="handleReset">
|
||||
<el-icon><Refresh /></el-icon>
|
||||
重置
|
||||
</el-button>
|
||||
<el-button type="primary" circle :icon="Search" title="搜索" @click="handleSearch" />
|
||||
<el-button circle :icon="Refresh" title="重置" @click="handleReset" />
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-card>
|
||||
@@ -69,10 +63,7 @@
|
||||
<el-card class="table-card">
|
||||
<div class="card-header">
|
||||
<span class="title">OTA 版本列表</span>
|
||||
<el-button type="primary" @click="handleAdd">
|
||||
<el-icon><Plus /></el-icon>
|
||||
新增 OTA
|
||||
</el-button>
|
||||
<el-button type="primary" circle :icon="Plus" title="新增 OTA" @click="handleAdd" />
|
||||
</div>
|
||||
|
||||
<div class="table-loading-host" v-loading="loading">
|
||||
|
||||
@@ -51,14 +51,8 @@
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" @click="handleSearch">
|
||||
<el-icon><Search /></el-icon>
|
||||
搜索
|
||||
</el-button>
|
||||
<el-button @click="handleReset">
|
||||
<el-icon><Refresh /></el-icon>
|
||||
重置
|
||||
</el-button>
|
||||
<el-button type="primary" circle :icon="Search" title="搜索" @click="handleSearch" />
|
||||
<el-button circle :icon="Refresh" title="重置" @click="handleReset" />
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-card>
|
||||
|
||||
@@ -11,14 +11,8 @@
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" @click="handleSearch">
|
||||
<el-icon><Search /></el-icon>
|
||||
搜索
|
||||
</el-button>
|
||||
<el-button @click="handleReset">
|
||||
<el-icon><Refresh /></el-icon>
|
||||
重置
|
||||
</el-button>
|
||||
<el-button type="primary" circle :icon="Search" title="搜索" @click="handleSearch" />
|
||||
<el-button circle :icon="Refresh" title="重置" @click="handleReset" />
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-card>
|
||||
@@ -26,10 +20,7 @@
|
||||
<el-card class="table-card">
|
||||
<div class="card-header">
|
||||
<span class="title">账号列表</span>
|
||||
<el-button type="primary" @click="handleAdd">
|
||||
<el-icon><Plus /></el-icon>
|
||||
新建账号
|
||||
</el-button>
|
||||
<el-button type="primary" circle :icon="Plus" title="新建账号" @click="handleAdd" />
|
||||
</div>
|
||||
|
||||
<div class="table-loading-host" v-loading="loading">
|
||||
|
||||
Reference in New Issue
Block a user