feat: 新增预算助手报告组件并优化报销交互细节

新增预算助手报告视图模型和组件,优化报销洞察面板和消息项
样式细节,完善预算中心页面布局和文档中心视图,增强报销创
建会话管理和提交编排器,调整 Vite 构建配置,补充单元测试。
This commit is contained in:
caoxiaozhu
2026-05-27 12:27:17 +08:00
parent b1a9c8a194
commit 7d32eae74e
23 changed files with 1197 additions and 464 deletions

View File

@@ -265,6 +265,46 @@
font-weight: 800;
}
.budget-table-search {
position: relative;
width: min(260px, 42%);
min-width: 190px;
display: flex;
align-items: center;
}
.budget-table-search i {
position: absolute;
left: 11px;
color: #94a3b8;
font-size: 15px;
pointer-events: none;
}
.budget-table-search input {
width: 100%;
height: 32px;
border: 1px solid #dbe4ee;
border-radius: 6px;
padding: 0 11px 0 32px;
background: #fff;
color: #1f2937;
font-size: 13px;
font-weight: 650;
outline: none;
transition: border-color 160ms ease, box-shadow 160ms ease;
}
.budget-table-search input::placeholder {
color: #94a3b8;
font-weight: 500;
}
.budget-table-search input:focus {
border-color: rgba(var(--theme-primary-rgb), .48);
box-shadow: 0 0 0 3px rgba(var(--theme-primary-rgb), .1);
}
.department-search {
position: relative;
margin: 12px 14px 8px;
@@ -320,7 +360,7 @@
.budget-table-panel table {
width: 100%;
min-width: 1040px;
min-width: 1460px;
border-collapse: collapse;
}
@@ -383,29 +423,36 @@
background: var(--danger);
}
.budget-warning-red {
color: var(--danger) !important;
font-weight: 800;
.budget-threshold-cell {
padding-left: 12px !important;
padding-right: 12px !important;
}
.budget-warning-yellow {
color: var(--warning-active) !important;
font-weight: 800;
}
.budget-row-actions {
display: flex;
.budget-threshold-badge {
min-width: 58px;
display: inline-flex;
align-items: center;
justify-content: center;
gap: 14px;
padding: 4px 9px;
border-radius: 999px;
font-size: 12px;
font-weight: 800;
line-height: 1.2;
}
.budget-row-actions button {
border: 0;
background: transparent;
color: var(--theme-primary-active);
font-size: 14px;
font-weight: 800;
.budget-threshold-badge.reminder {
background: rgba(37, 99, 235, .1);
color: #2563eb;
}
.budget-threshold-badge.alert {
background: rgba(245, 158, 11, .14);
color: #b45309;
}
.budget-threshold-badge.risk {
background: rgba(127, 29, 29, .1);
color: #7f1d1d;
}
.budget-table-foot {

View File

@@ -29,6 +29,7 @@
}
.employee-detail {
--employee-detail-radius: 4px;
display: grid;
grid-template-rows: minmax(0, 1fr) auto;
gap: 12px;
@@ -699,6 +700,7 @@ tbody tr:last-child td {
display: grid;
gap: 18px;
padding: 18px 20px;
border-radius: var(--employee-detail-radius);
}
.hero-profile {
@@ -712,7 +714,7 @@ tbody tr:last-child td {
height: 64px;
display: grid;
place-items: center;
border-radius: 18px;
border-radius: var(--employee-detail-radius);
background: var(--theme-gradient-primary);
color: #fff;
font-size: 24px;
@@ -724,7 +726,7 @@ tbody tr:last-child td {
align-items: center;
min-height: 26px;
padding: 0 10px;
border-radius: 999px;
border-radius: var(--employee-detail-radius);
background: #eff6ff;
color: #2563eb;
font-size: 12px;
@@ -753,7 +755,7 @@ tbody tr:last-child td {
.hero-stat {
padding: 14px 16px;
border-radius: 12px;
border-radius: var(--employee-detail-radius);
background: linear-gradient(180deg, #ffffff, #f8fafc);
border: 1px solid #edf2f7;
}
@@ -791,6 +793,7 @@ tbody tr:last-child td {
.detail-card,
.side-card {
padding: 18px;
border-radius: var(--employee-detail-radius);
}
.card-head {
@@ -819,7 +822,7 @@ tbody tr:last-child td {
align-items: center;
min-height: 28px;
padding: 0 10px;
border-radius: 999px;
border-radius: var(--employee-detail-radius);
background: #ecfeff;
color: #0891b2;
font-size: 12px;
@@ -847,7 +850,7 @@ tbody tr:last-child td {
.field input {
width: 100%;
border: 1px solid #d7e0ea;
border-radius: 10px;
border-radius: var(--employee-detail-radius);
background: #fff;
color: #0f172a;
font-size: 13px;
@@ -985,7 +988,7 @@ tbody tr:last-child td {
align-items: start;
padding: 14px;
border: 1px solid #edf2f7;
border-radius: 14px;
border-radius: var(--employee-detail-radius);
background: #fbfdff;
}
@@ -1018,6 +1021,19 @@ tbody tr:last-child td {
flex-wrap: wrap;
}
.tag-list span {
display: inline-flex;
min-height: 26px;
align-items: center;
padding: 0 9px;
border: 1px solid rgba(var(--theme-primary-rgb), 0.18);
border-radius: var(--employee-detail-radius);
background: var(--theme-primary-soft);
color: var(--theme-primary-active);
font-size: 12px;
font-weight: 760;
}
.bullet-list {
display: grid;
gap: 8px;
@@ -1108,7 +1124,7 @@ td.cell-updated {
gap: 12px;
min-height: 42px;
padding: 0 12px;
border-radius: 10px;
border-radius: var(--employee-detail-radius);
background: #f8fafc;
}
@@ -1142,7 +1158,7 @@ td.cell-updated {
justify-content: center;
gap: 6px;
padding: 0 14px;
border-radius: 8px;
border-radius: var(--employee-detail-radius);
font-size: 13px;
font-weight: 760;
}