fix+style: 修复中文乱码,主题改为深色侧边栏+浅灰内容区

- application.yml 强制 UTF-8 响应编码
- 前端主题:深钢蓝侧边栏 + 浅灰(#f0f2f5)内容区 + 工业蓝主色

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-04-28 13:20:59 +08:00
parent 291deecf9b
commit 8ce9489c92
5 changed files with 78 additions and 239 deletions

View File

@@ -20,6 +20,10 @@ server:
servlet:
# 应用的访问路径
context-path: /
encoding:
charset: UTF-8
force: true
enabled: true
tomcat:
# tomcat的URI编码
uri-encoding: UTF-8
@@ -68,13 +72,13 @@ spring:
# redis 配置
redis:
# 地址
host: localhost
host: 140.143.206.120
# 端口默认为6379
port: 6379
# 数据库索引
database: 0
# 密码
password:
password: KeLunPu123!
# 连接超时时间
timeout: 10s
lettuce:

View File

@@ -1,121 +1,26 @@
/**
* 冷轧二级控制系统 — Element-UI 主题覆盖(工业风格
* 冷轧二级控制系统 — Element-UI 主题(工业
*/
/* 主色:工业蓝 */
$--color-primary: #0099cc;
$--color-success: #00c853;
$--color-warning: #ff8c00;
$--color-danger: #ff3d00;
$--color-info: #546e8a;
/* 主色:工业蓝 */
$--color-primary: #1565c0;
$--color-success: #52c41a;
$--color-warning: #faad14;
$--color-danger: #f5222d;
$--color-info: #909399;
$--button-font-weight: 500;
/* 边框 */
$--border-color-light: #1a3a5c;
$--border-color-lighter: #152e4a;
$--border-color-light: #dde1e7;
$--border-color-lighter: #ebeef5;
$--table-border: 1px solid #1a3a5c;
$--table-border: 1px solid #e8eaec;
/* icon font path */
$--font-path: '~element-ui/lib/theme-chalk/fonts';
@import "~element-ui/packages/theme-chalk/src/index";
// 深色背景下全局 Element 样式覆盖
.el-table {
background-color: #0e2137 !important;
color: #c8d8e8 !important;
th.el-table__cell {
background-color: #0a1e35 !important;
color: #00d4ff !important;
border-bottom: 1px solid #1a3a5c !important;
font-size: 13px;
font-weight: 600;
letter-spacing: 0.5px;
}
td.el-table__cell {
border-bottom: 1px solid #132030 !important;
}
tr:hover > td {
background-color: #122840 !important;
}
&::before {
background-color: #1a3a5c;
}
}
.el-card {
background-color: #0e2137 !important;
border: 1px solid #1a3a5c !important;
border-radius: 4px;
color: #c8d8e8;
.el-card__header {
border-bottom: 1px solid #1a3a5c;
color: #00d4ff;
font-weight: 600;
font-size: 14px;
padding: 12px 20px;
}
}
.el-input__inner {
background-color: #071120 !important;
border-color: #1a3a5c !important;
color: #c8d8e8 !important;
&::placeholder { color: #4a6a8a; }
&:focus { border-color: #00d4ff !important; }
}
.el-select .el-input__inner { background-color: #071120 !important; }
.el-dropdown-menu,
.el-select-dropdown {
background-color: #0e2137 !important;
border: 1px solid #1a3a5c !important;
.el-select-dropdown__item { color: #c8d8e8 !important; }
.el-select-dropdown__item.hover,
.el-select-dropdown__item:hover { background-color: #0a2545 !important; }
.el-select-dropdown__item.selected { color: #00d4ff !important; }
}
.el-pagination {
color: #8ab0cc !important;
.btn-prev, .btn-next, .el-pager li {
background-color: #0e2137 !important;
color: #8ab0cc !important;
border: 1px solid #1a3a5c !important;
}
.el-pager li.active { color: #00d4ff !important; border-color: #00d4ff !important; }
}
.el-dialog {
background-color: #0e2137 !important;
border: 1px solid #1a3a5c;
.el-dialog__title { color: #00d4ff !important; }
.el-dialog__body { color: #c8d8e8 !important; }
}
.el-form-item__label { color: #8ab0cc !important; }
.el-tag {
&.el-tag--success { background-color: rgba(0,200,83,.15); border-color: #00c853; color: #00c853; }
&.el-tag--danger { background-color: rgba(255,61,0,.15); border-color: #ff3d00; color: #ff3d00; }
&.el-tag--warning { background-color: rgba(255,140,0,.15); border-color: #ff8c00; color: #ff8c00; }
&.el-tag--info { background-color: rgba(84,110,138,.15);border-color: #546e8a; color: #8ab0cc; }
}
.el-button--primary {
background-color: #0077aa !important;
border-color: #0099cc !important;
&:hover { background-color: #0099cc !important; }
}
// webpack JS/SCSS 变量共享
:export {
theme: $--color-primary;

View File

@@ -5,21 +5,20 @@
@import './sidebar.scss';
@import './btn.scss';
// 工业风全局字体与背景
body {
height: 100%;
margin: 0;
background-color: #071120;
color: $industrial-text;
background-color: #f0f2f5;
color: #303133;
-moz-osx-font-smoothing: grayscale;
-webkit-font-smoothing: antialiased;
text-rendering: optimizeLegibility;
font-family: 'Helvetica Neue', Helvetica, 'PingFang SC', 'Microsoft YaHei',
'Source Han Sans CN', Arial, monospace;
'Source Han Sans CN', Arial, sans-serif;
font-size: 14px;
}
label { font-weight: 600; color: #8ab0cc; }
label { font-weight: 600; }
html {
height: 100%;
@@ -33,13 +32,12 @@ html {
a:focus, a:active { outline: none; }
a, a:focus, a:hover {
cursor: pointer;
color: $industrial-cyan;
color: inherit;
text-decoration: none;
}
div:focus { outline: none; }
// 工具类
.fr { float: right; }
.fl { float: left; }
.pr-5 { padding-right: 5px; }
@@ -63,17 +61,15 @@ div:focus { outline: none; }
// 页面内容容器
.app-container {
padding: 16px 20px;
background-color: transparent;
}
// 搜索/过滤栏
// 搜索过滤栏
.filter-container {
padding-bottom: 12px;
background-color: $industrial-surface;
padding: 12px 16px;
border: 1px solid $industrial-border;
border-radius: 4px;
padding: 16px;
margin-bottom: 12px;
background: #ffffff;
border: 1px solid #e8eaec;
border-radius: 4px;
.filter-item {
display: inline-block;
@@ -83,7 +79,7 @@ div:focus { outline: none; }
}
}
// 状态徽标 — 机组运行状态
// 机组运行状态
.status-dot {
display: inline-block;
width: 8px;
@@ -91,24 +87,24 @@ div:focus { outline: none; }
border-radius: 50%;
margin-right: 6px;
&.running { background-color: $industrial-green; box-shadow: 0 0 6px $industrial-green; }
&.stopped { background-color: $industrial-red; box-shadow: 0 0 6px $industrial-red; }
&.standby { background-color: $industrial-amber; box-shadow: 0 0 6px $industrial-amber; }
&.offline { background-color: $industrial-text-muted; }
&.running { background-color: #52c41a; box-shadow: 0 0 5px #52c41a; }
&.stopped { background-color: #f5222d; box-shadow: 0 0 5px #f5222d; }
&.standby { background-color: #faad14; box-shadow: 0 0 5px #faad14; }
&.offline { background-color: #909399; }
}
// 数据看板 — 工艺参数数值
// 工艺参数数值
.param-value {
font-family: 'Courier New', Courier, monospace;
font-size: 20px;
font-weight: 700;
color: $industrial-cyan;
color: #1565c0;
letter-spacing: 1px;
}
.param-unit {
font-size: 11px;
color: $industrial-text-muted;
color: #909399;
margin-left: 4px;
}
@@ -117,80 +113,28 @@ div:focus { outline: none; }
0%, 100% { opacity: 1; }
50% { opacity: 0.3; }
}
.alarm-blink {
animation: alarmBlink 1s ease-in-out infinite;
color: $industrial-red;
color: #f5222d;
}
// 顶部导航栏
.navbar {
background-color: #091628 !important;
border-bottom: 1px solid #00d4ff33 !important;
box-shadow: 0 2px 12px rgba(0, 212, 255, 0.08) !important;
.link-type, .link-type:focus {
color: #1890ff;
cursor: pointer;
&:hover { color: #40a9ff; }
}
// 面包屑
.el-breadcrumb__inner { color: #6b8aaa !important; }
.el-breadcrumb__inner.is-link:hover { color: #00d4ff !important; }
.el-breadcrumb__separator { color: #1a3a5c !important; }
// 标签页(tab-view)
.tags-view-container {
background-color: #071120 !important;
border-bottom: 1px solid #1a3a5c !important;
.tags-view-wrapper .tags-view-item {
background-color: #0e2137 !important;
border: 1px solid #1a3a5c !important;
color: #8ab0cc !important;
&.active {
background-color: #0077aa !important;
border-color: #00d4ff !important;
color: #ffffff !important;
}
}
}
// 侧边栏 Logo 区域
.sidebar-logo-container {
background-color: #060f1e !important;
border-bottom: 1px solid #1a3a5c !important;
.sidebar-title {
color: #00d4ff !important;
font-size: 16px !important;
font-weight: 700 !important;
letter-spacing: 1px;
}
}
// 滚动条工业风格
::-webkit-scrollbar { width: 6px; height: 6px; }
::-webkit-scrollbar-track { background: #071120; }
::-webkit-scrollbar-thumb { background: #1a3a5c; border-radius: 3px; }
::-webkit-scrollbar-thumb:hover { background: #00d4ff55; }
// 提示/备注区域
aside {
background: #0e2137;
background: #e8f4ff;
padding: 8px 16px;
margin-bottom: 16px;
border-left: 3px solid #00d4ff;
border-left: 3px solid #1890ff;
border-radius: 2px;
display: block;
line-height: 32px;
font-size: 13px;
color: #8ab0cc;
a { color: #00d4ff; &:hover { color: #40e0ff; } }
}
.link-type, .link-type:focus {
color: #00d4ff;
cursor: pointer;
&:hover { color: #40e0ff; }
color: #606266;
a { color: #1890ff; &:hover { color: #40a9ff; } }
}
.sub-navbar {
@@ -200,8 +144,7 @@ aside {
width: 100%;
text-align: right;
padding-right: 20px;
background: linear-gradient(90deg, #0a1e35 0%, #0077aa 100%);
border-bottom: 1px solid #00d4ff44;
background: linear-gradient(90deg, #1565c0 0%, #1890ff 100%);
.subtitle { font-size: 16px; color: #fff; letter-spacing: 1px; }
}
@@ -211,6 +154,5 @@ aside {
position: relative;
}
// 多选
.multiselect { line-height: 16px; }
.multiselect--active { z-index: 1000 !important; }

View File

@@ -76,12 +76,11 @@
white-space: nowrap !important;
}
// menu hover — 工业风高亮
// menu hover
.submenu-title-noDropdown,
.el-submenu__title {
&:hover {
background-color: rgba(0, 212, 255, 0.08) !important;
border-left: 2px solid #00d4ff;
background-color: rgba(255, 255, 255, 0.06) !important;
}
}
@@ -90,9 +89,8 @@
}
.el-menu-item.is-active {
background-color: rgba(0, 119, 170, 0.30) !important;
border-left: 3px solid #00d4ff !important;
color: #00d4ff !important;
background-color: #1565c0 !important;
color: #ffffff !important;
}
& .nest-menu .el-submenu>.el-submenu__title,
@@ -100,7 +98,7 @@
min-width: $base-sidebar-width !important;
&:hover {
background-color: rgba(0, 212, 255, 0.08) !important;
background-color: rgba(255, 255, 255, 0.06) !important;
}
}

View File

@@ -1,53 +1,43 @@
// ============================================================
// 冷轧双机架二级控制系统 — 工业深色主题色板
// 冷轧双机架二级控制系统 — 工业标准配色
// 深色侧边栏 + 浅灰内容区(工业管理系统经典布局)
// ============================================================
// btn.scss 依赖的旧变量(映射到工业色板)
$blue: #0099cc;
$light-blue:#00d4ff;
$red: #ff3d00;
$pink: #ff6b6b;
$green: #00c853;
$tiffany: #00b4d8;
$yellow: #ff8c00;
$panGreen: #00c853;
// btn.scss 依赖变量
$blue: #1565c0;
$light-blue:#1890ff;
$red: #f5222d;
$pink: #eb2f96;
$green: #52c41a;
$tiffany: #13c2c2;
$yellow: #faad14;
$panGreen: #52c41a;
// 工业色调
$industrial-bg: #0a1628; // 深海军蓝,主背景
$industrial-surface: #0e2137; // 卡片/面板背景
$industrial-border: #1a3a5c; // 边框色
$industrial-cyan: #00d4ff; // 工业青色,主高亮
$industrial-amber: #ff8c00; // 琥珀橙,警告/重点
$industrial-green: #00e676; // 状态绿,正常/运行
$industrial-red: #ff3d00; // 告警红
$industrial-text: #c8d8e8; // 主文字
$industrial-text-muted: #6b8aaa; // 次要文字
// 侧边栏(深钢蓝)
$base-menu-color: #b8cce4;
$base-menu-color-active: #ffffff;
$base-menu-background: #1b2a3b;
$base-logo-title-color: #ffffff;
// 默认侧边栏主题(工业深色)
$base-menu-color: #8ab0cc;
$base-menu-color-active: #00d4ff;
$base-menu-background: #0a1628;
$base-logo-title-color: #e0f0ff;
$base-menu-light-color: rgba(0,0,0,.70);
$base-menu-light-color: rgba(0,0,0,.65);
$base-menu-light-background: #ffffff;
$base-logo-light-title-color:#001529;
$base-sub-menu-background: #071120;
$base-sub-menu-hover: #0d2040;
$base-sub-menu-background: #132233;
$base-sub-menu-hover: #0d1e2e;
$base-sidebar-width: 210px;
// webpack JS/SCSS 变量共享
:export {
menuColor: $base-menu-color;
menuLightColor: $base-menu-light-color;
menuColorActive: $base-menu-color-active;
menuBackground: $base-menu-background;
menuLightBackground: $base-menu-light-background;
subMenuBackground: $base-sub-menu-background;
subMenuHover: $base-sub-menu-hover;
sideBarWidth: $base-sidebar-width;
logoTitleColor: $base-logo-title-color;
logoLightTitleColor: $base-logo-light-title-color;
menuColor: $base-menu-color;
menuLightColor: $base-menu-light-color;
menuColorActive: $base-menu-color-active;
menuBackground: $base-menu-background;
menuLightBackground: $base-menu-light-background;
subMenuBackground: $base-sub-menu-background;
subMenuHover: $base-sub-menu-hover;
sideBarWidth: $base-sidebar-width;
logoTitleColor: $base-logo-title-color;
logoLightTitleColor: $base-logo-light-title-color;
}