feat: 前端 UI 样式全面优化

- 建立 Design Token 体系(variables.scss),统一颜色、间距、圆角、阴影、字体
- Element Plus 主题对接,通过 CSS 变量覆盖组件样式,删除所有 !important 按钮覆盖
- 统一侧边栏/头部/标签栏配色,侧边栏背景跟随主色调
- 全局组件样式规范化(按钮、输入框、表格、弹窗、抽屉、标签、分页等圆角和交互统一)
- 左侧树面板改为搜索区级联选择器(7个基础信息页面+计划任务)
- 搜索区封装为 qu-search-area 卡片式组件,超过5项自动展开/收起
- 表格操作按钮集成到 qu-table 组件工具栏
- 表格高度自动撑满(ResizeObserver),列宽自动伸缩(min-width)
- 新增主题设置(主色切换+调色板+暗色/浅色模式+跟随系统)
- 新增上下布局模式(顶部水平导航菜单+页面标题)
- 暗色模式完整适配(表格、弹窗、分页、斑马纹等)
- 布局优化:tags+头像合并一行,收缩按钮改为侧边栏半圆触发器
- 后端 MySQL 配置添加 allowPublicKeyRetrieval=true

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
xqzp2026
2026-04-13 16:41:59 +09:30
parent 515f1bec5b
commit d27abbb529
51 changed files with 3168 additions and 2071 deletions

View File

@@ -2,27 +2,21 @@
<div class='user-manage'>
<!-- <el-skeleton :rows='10' animated v-if='!isLoaded' :throttle='500' /> -->
<div class='main-container'>
<div ref='buttonGroupRef'>
<qu-button-group :buttonList='tableButtons' @buttonClick='buttonClick'></qu-button-group>
</div>
<div class='top-screen' ref='topScreenRef'>
<el-form :model='screenForm' ref='screenFormRef' inline size='small'>
<qu-search-area :model="screenForm" @search="restSearch" @reset="clearScreen(screenFormRef)">
<el-form-item label="所属站点" prop="districtId">
<div class="screen-item">
<district-screen v-model:districtId="screenForm.districtId" ref="districtScreenRef"
@districtChange="districtChange"></district-screen>
</div>
</el-form-item>
<el-form-item>
<el-button type='primary' icon='search' size='small' @click='restSearch'>查询</el-button>
<el-button icon='Refresh' size='small' @click='clearScreen(screenFormRef)'>重置</el-button>
</el-form-item>
</el-form>
</qu-search-area>
</div>
<div class='main-table' style="padding-bottom:20px">
<qu-table :tableData='tableData' v-model:tableHeader='tableHeader' :height='tableHeight'
:pageProps='pageProps' :showPage="false" :rowButtons='rowButtons' @rowButtonClick='rowButtonClick'
@pageChange='pageChange' @sortChange='sortChange' v-loading='tableLoading'></qu-table>
@pageChange='pageChange' @sortChange='sortChange' v-loading='tableLoading'
:tableButtons='tableButtons' @buttonClick='buttonClick'></qu-table>
</div>
<div v-if="showEditForm">
<el-dialog :title="currentRow.data.id ? '编辑' : '新建'" v-model="showEditForm" width="30%">
@@ -74,7 +68,6 @@ import { HEConfigService } from '@/ApiService/configService';
const isLoaded = ref(false);
const tableLoading = ref(false);
const topScreenRef = ref()
const buttonGroupRef = ref()
const tableHeight = ref(500)
const districtScreenRef = ref()
const showEditForm = ref(false)