feat(approval): 新增业务审批流程及配置管理
- 新增审批配置主子表(biz_approval_config / biz_approval_config_user),支持或签 - 5 个业务模块接入审批: 采购订单/客户报价/供应商报价/发货单/订单异议 - 统一审批动作接口(提交/通过/驳回),status=10 表示审批中 - 新增"待我审批"聚合页面,按业务类型筛选 - 修复 logback 写本地路径报错,去除文件 appender - 修复 Redis SSL 配置在 Spring Boot 4 下需对象格式 - 补齐部分业务表缺失的 update_by/update_time 审计列 Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
/* ═══════════════════════════════════════════════════════════════
|
||||
京东风格 — 全局主题(CSS 变量 + Element UI 覆盖)
|
||||
主色:#e4393c 深红:#c81623 背景灰:#f5f5f5
|
||||
主色:#e4393c 深红:#c81623 背景灰:#ffffff
|
||||
═══════════════════════════════════════════════════════════════ */
|
||||
|
||||
:root {
|
||||
@@ -8,11 +8,11 @@
|
||||
--jd-red: #e4393c;
|
||||
--jd-red-dark: #c81623;
|
||||
--jd-red-hover: #e55a5d;
|
||||
--jd-red-light: #fff5f5;
|
||||
--jd-red-bg: #fff0f0;
|
||||
--jd-red-light: #fafafa;
|
||||
--jd-red-bg: #ffffff;
|
||||
|
||||
/* ═══ 灰色系 ═══ */
|
||||
--bg-gray: #f5f5f5;
|
||||
--bg-gray: #ffffff;
|
||||
--bg-white: #ffffff;
|
||||
--border-gray: #e5e5e5;
|
||||
--border-light: #f0f0f0;
|
||||
@@ -23,7 +23,7 @@
|
||||
--text-light: #999999;
|
||||
|
||||
/* ═══ 功能色 ═══ */
|
||||
--link-blue: #005ea7;
|
||||
--link-blue: #e4393c;
|
||||
--color-success: #67c23a;
|
||||
--color-warning: #e6a23c;
|
||||
--color-danger: #f56c6c;
|
||||
@@ -61,7 +61,7 @@
|
||||
--space-xl: 20px;
|
||||
|
||||
/* ═══ 表格 ═══ */
|
||||
--table-header-bg: #f5f5f5;
|
||||
--table-header-bg: #ffffff;
|
||||
--table-header-text: #666666;
|
||||
--table-row-hover: #f5f7fa;
|
||||
--table-stripe: #fafafa;
|
||||
@@ -69,12 +69,12 @@
|
||||
|
||||
/* ═══ 导航 ═══ */
|
||||
--nav-height: 50px;
|
||||
--nav-bg: #f5f5f5;
|
||||
--nav-bg: #ffffff;
|
||||
--nav-text: #333333;
|
||||
--nav-hover: rgba(0, 0, 0, 0.04);
|
||||
|
||||
/* ═══ 侧栏 ═══ */
|
||||
--sidebar-width: 200px;
|
||||
--sidebar-width: 192px;
|
||||
--sidebar-bg: #ffffff;
|
||||
--sidebar-text: #666666;
|
||||
--sidebar-text-active: #e4393c;
|
||||
@@ -107,11 +107,21 @@ body {
|
||||
顶部导航栏
|
||||
═══════════════════════════════════════════ */
|
||||
.navbar {
|
||||
background: #f5f5f5 !important;
|
||||
border-bottom: 1px solid #e5e5e5 !important;
|
||||
box-shadow: none !important;
|
||||
background: #ffffff !important;
|
||||
border-bottom: 1px solid #ececec !important;
|
||||
box-shadow: 0 1px 4px rgba(0, 0, 0, 0.04) !important;
|
||||
height: var(--nav-height) !important;
|
||||
color: #333 !important;
|
||||
position: relative;
|
||||
|
||||
/* 顶部红色品牌细条 */
|
||||
&::before {
|
||||
content: '';
|
||||
position: absolute;
|
||||
left: 0; right: 0; top: 0;
|
||||
height: 3px;
|
||||
background: linear-gradient(90deg, #e4393c 0%, #c81623 60%, #e4393c 100%);
|
||||
}
|
||||
|
||||
.hamburger-container svg {
|
||||
color: #666 !important;
|
||||
@@ -119,7 +129,8 @@ body {
|
||||
}
|
||||
|
||||
.hamburger-container:hover {
|
||||
background: rgba(0, 0, 0, 0.04) !important;
|
||||
background: rgba(228, 57, 60, 0.06) !important;
|
||||
svg { fill: #e4393c !important; color: #e4393c !important; }
|
||||
}
|
||||
|
||||
.breadcrumb-container {
|
||||
@@ -127,12 +138,15 @@ body {
|
||||
.el-breadcrumb__inner a,
|
||||
.el-breadcrumb__separator {
|
||||
color: #999 !important;
|
||||
font-weight: 400 !important;
|
||||
}
|
||||
.el-breadcrumb__inner.is-link {
|
||||
font-weight: 400 !important;
|
||||
&:hover {
|
||||
color: #e4393c !important;
|
||||
}
|
||||
&:hover { color: #e4393c !important; }
|
||||
}
|
||||
.el-breadcrumb__item:last-child .el-breadcrumb__inner {
|
||||
color: #333 !important;
|
||||
font-weight: 500 !important;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -142,36 +156,25 @@ body {
|
||||
font-size: 16px !important;
|
||||
|
||||
&.hover-effect:hover {
|
||||
color: #333 !important;
|
||||
background: #f0f0f0 !important;
|
||||
color: #e4393c !important;
|
||||
background: rgba(228, 57, 60, 0.06) !important;
|
||||
}
|
||||
|
||||
svg,
|
||||
i {
|
||||
color: #666 !important;
|
||||
}
|
||||
&:hover svg,
|
||||
&:hover i {
|
||||
color: #333 !important;
|
||||
}
|
||||
svg, i { color: #666 !important; }
|
||||
&:hover svg, &:hover i { color: #e4393c !important; }
|
||||
}
|
||||
|
||||
.avatar-container {
|
||||
.user-nickname {
|
||||
color: #333 !important;
|
||||
font-weight: 500 !important;
|
||||
}
|
||||
.avatar-wrapper {
|
||||
margin-top: 6px !important;
|
||||
}
|
||||
.user-nickname { color: #333 !important; font-weight: 500 !important; }
|
||||
.avatar-wrapper { margin-top: 6px !important; }
|
||||
}
|
||||
|
||||
.el-dropdown {
|
||||
color: #333 !important;
|
||||
}
|
||||
.el-dropdown { color: #333 !important; }
|
||||
|
||||
.el-badge__content {
|
||||
border-color: #fff !important;
|
||||
background: #e4393c !important;
|
||||
color: #fff !important;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -183,7 +186,7 @@ body {
|
||||
|
||||
.el-menu-item,
|
||||
.el-submenu__title {
|
||||
color: #666 !important;
|
||||
color: #555 !important;
|
||||
background: transparent !important;
|
||||
border-bottom: none !important;
|
||||
height: var(--nav-height) !important;
|
||||
@@ -191,12 +194,13 @@ body {
|
||||
|
||||
&:hover {
|
||||
color: #e4393c !important;
|
||||
background: rgba(0, 0, 0, 0.03) !important;
|
||||
background: rgba(228, 57, 60, 0.04) !important;
|
||||
}
|
||||
|
||||
&.is-active {
|
||||
color: #e4393c !important;
|
||||
background: transparent !important;
|
||||
border-bottom: 2px solid #e4393c !important;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -269,6 +273,21 @@ body {
|
||||
|
||||
.el-submenu.is-active > .el-submenu__title {
|
||||
color: var(--sidebar-text-active) !important;
|
||||
background: transparent !important;
|
||||
}
|
||||
|
||||
/* 强制清除 element-ui 默认 hover 黄色背景 */
|
||||
.el-submenu__title:hover,
|
||||
.el-submenu__title:focus,
|
||||
.el-menu-item:focus {
|
||||
background: var(--sidebar-hover-bg) !important;
|
||||
outline: none !important;
|
||||
}
|
||||
|
||||
/* 子菜单展开时 inline-style 的浅色背景一并覆盖 */
|
||||
.el-menu .el-menu-item,
|
||||
.el-menu .el-submenu__title {
|
||||
background-color: transparent !important;
|
||||
}
|
||||
|
||||
/* 子菜单 */
|
||||
@@ -277,12 +296,23 @@ body {
|
||||
}
|
||||
|
||||
.el-submenu .el-menu-item {
|
||||
padding-left: 42px !important;
|
||||
padding-left: 32px !important;
|
||||
height: 34px !important;
|
||||
line-height: 34px !important;
|
||||
font-size: 12px !important;
|
||||
color: var(--text-medium) !important;
|
||||
|
||||
/* 二级菜单图标隐藏 */
|
||||
.svg-icon,
|
||||
> i,
|
||||
> .el-icon-,
|
||||
[class^="el-icon-"],
|
||||
[class*=" el-icon-"] {
|
||||
display: none !important;
|
||||
width: 0 !important;
|
||||
margin: 0 !important;
|
||||
}
|
||||
|
||||
&:hover {
|
||||
color: var(--text-medium) !important;
|
||||
background: var(--sidebar-hover-bg) !important;
|
||||
@@ -322,38 +352,39 @@ body {
|
||||
/* ═══════════════════════════════════════════
|
||||
按钮样式 — 银灰风格
|
||||
═══════════════════════════════════════════ */
|
||||
/* 主按钮 — 银灰色 */
|
||||
/* 主按钮 — 京东红 */
|
||||
.el-button--primary {
|
||||
background: #909399 !important;
|
||||
border: 1px solid #909399 !important;
|
||||
background: var(--jd-red) !important;
|
||||
border: 1px solid var(--jd-red) !important;
|
||||
color: #fff !important;
|
||||
border-radius: var(--radius-base) !important;
|
||||
transition: all 0.2s;
|
||||
|
||||
&:hover,
|
||||
&:focus {
|
||||
background: #6b7280 !important;
|
||||
border-color: #6b7280 !important;
|
||||
background: var(--jd-red-dark) !important;
|
||||
border-color: var(--jd-red-dark) !important;
|
||||
}
|
||||
|
||||
&:active {
|
||||
background: #4b5563 !important;
|
||||
border-color: #4b5563 !important;
|
||||
background: #a30f1c !important;
|
||||
border-color: #a30f1c !important;
|
||||
}
|
||||
|
||||
&.is-disabled,
|
||||
&.is-disabled:hover {
|
||||
background: #d1d5db !important;
|
||||
border-color: #d1d5db !important;
|
||||
background: #fbcecf !important;
|
||||
border-color: #fbcecf !important;
|
||||
color: #fff !important;
|
||||
}
|
||||
|
||||
&.is-plain {
|
||||
background: #fff !important;
|
||||
border-color: #909399 !important;
|
||||
color: #909399 !important;
|
||||
border-color: var(--jd-red) !important;
|
||||
color: var(--jd-red) !important;
|
||||
|
||||
&:hover {
|
||||
background: #909399 !important;
|
||||
background: var(--jd-red) !important;
|
||||
color: #fff !important;
|
||||
}
|
||||
}
|
||||
@@ -744,8 +775,8 @@ body {
|
||||
color: #e6a23c !important;
|
||||
}
|
||||
.el-tag--primary {
|
||||
background: #ecf5ff !important;
|
||||
color: #409eff !important;
|
||||
background: var(--jd-red-light) !important;
|
||||
color: var(--jd-red) !important;
|
||||
}
|
||||
.el-tag--success {
|
||||
background: #f0f9eb !important;
|
||||
|
||||
Reference in New Issue
Block a user