feat: 增强风险规则生成引擎与预算中心页面
后端拆分风险规则生成为解释器、语义分析、本体对齐等子模块, 优化模板执行和流程图生成,完善员工种子数据和导入逻辑,增强 报销单权限策略和草稿持久化,前端新增预算中心视图和趋势图 组件,重构审计页面和风险规则测试对话框交互,完善文档中心 和报销创建页面细节,补充单元测试覆盖。
This commit is contained in:
@@ -647,6 +647,10 @@
|
||||
box-shadow: 0 10px 22px rgba(226, 232, 240, 0.48);
|
||||
}
|
||||
|
||||
.message-bubble-application-preview {
|
||||
max-width: min(100%, 980px);
|
||||
}
|
||||
|
||||
.message-bubble-review-risk-low {
|
||||
border-color: rgba(37, 99, 235, 0.72);
|
||||
background: linear-gradient(180deg, rgba(239, 246, 255, 0.72), rgba(255, 255, 255, 0.96));
|
||||
@@ -759,6 +763,170 @@
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.application-preview-table {
|
||||
margin-top: 12px;
|
||||
overflow: hidden;
|
||||
border: 1px solid #d7e4f2;
|
||||
border-radius: 8px;
|
||||
background: #ffffff;
|
||||
color: #334155;
|
||||
font-size: var(--wb-fs-bubble);
|
||||
}
|
||||
|
||||
.application-preview-footer {
|
||||
margin-top: 12px;
|
||||
color: #334155;
|
||||
font-size: var(--wb-fs-bubble);
|
||||
line-height: 1.58;
|
||||
}
|
||||
|
||||
.application-preview-row {
|
||||
display: grid;
|
||||
grid-template-columns: 108px minmax(0, 1fr);
|
||||
min-height: 38px;
|
||||
border-top: 1px solid #e6edf5;
|
||||
}
|
||||
|
||||
.application-preview-row.editable {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.application-preview-row.editable:hover {
|
||||
background: #f8fbff;
|
||||
}
|
||||
|
||||
.application-preview-row.editable:hover .application-preview-label,
|
||||
.application-preview-row.editable:hover .application-preview-value {
|
||||
background: #f8fbff;
|
||||
}
|
||||
|
||||
.application-preview-row.editable.missing:hover .application-preview-value {
|
||||
background: #fff4e6;
|
||||
}
|
||||
|
||||
.application-preview-row.editable:focus-visible {
|
||||
position: relative;
|
||||
z-index: 1;
|
||||
outline: 2px solid rgba(37, 99, 235, 0.45);
|
||||
outline-offset: -2px;
|
||||
}
|
||||
|
||||
.application-preview-row:first-child {
|
||||
border-top: 0;
|
||||
}
|
||||
|
||||
.application-preview-row.head {
|
||||
min-height: 34px;
|
||||
background: #f8fafc;
|
||||
color: #475569;
|
||||
font-size: var(--wb-fs-caption);
|
||||
font-weight: 850;
|
||||
}
|
||||
|
||||
.application-preview-row > span {
|
||||
min-width: 0;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
padding: 8px 12px;
|
||||
}
|
||||
|
||||
.application-preview-label {
|
||||
border-right: 1px solid #e6edf5;
|
||||
background: #fbfdff;
|
||||
color: #64748b;
|
||||
font-weight: 760;
|
||||
}
|
||||
|
||||
.application-preview-value {
|
||||
position: relative;
|
||||
gap: 8px;
|
||||
color: #0f172a;
|
||||
font-weight: 650;
|
||||
}
|
||||
|
||||
.application-preview-row.missing .application-preview-value {
|
||||
background: #fff7ed;
|
||||
color: #b45309;
|
||||
}
|
||||
|
||||
.application-preview-row.highlight .application-preview-label {
|
||||
background: #f0fdf4;
|
||||
color: #047857;
|
||||
}
|
||||
|
||||
.application-preview-row.highlight .application-preview-value {
|
||||
background: #f7fee7;
|
||||
color: #166534;
|
||||
font-weight: 780;
|
||||
}
|
||||
|
||||
.application-preview-row.highlight.missing .application-preview-value {
|
||||
background: #fff7ed;
|
||||
color: #b45309;
|
||||
}
|
||||
|
||||
.application-preview-text {
|
||||
min-width: 0;
|
||||
overflow-wrap: anywhere;
|
||||
line-height: 1.45;
|
||||
}
|
||||
|
||||
.application-preview-edit-btn {
|
||||
flex: 0 0 auto;
|
||||
width: 24px;
|
||||
height: 24px;
|
||||
display: grid;
|
||||
place-items: center;
|
||||
border: 1px solid transparent;
|
||||
border-radius: 6px;
|
||||
background: #eff6ff;
|
||||
color: #2563eb;
|
||||
cursor: pointer;
|
||||
opacity: 0;
|
||||
transition: opacity 0.16s ease, border-color 0.16s ease, background 0.16s ease;
|
||||
}
|
||||
|
||||
.application-preview-edit-btn i {
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
.application-preview-row:hover .application-preview-edit-btn,
|
||||
.application-preview-edit-btn:focus-visible {
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
.application-preview-edit-btn:hover:not(:disabled),
|
||||
.application-preview-edit-btn:focus-visible {
|
||||
border-color: #bfdbfe;
|
||||
background: #dbeafe;
|
||||
}
|
||||
|
||||
.application-preview-edit-btn:disabled {
|
||||
cursor: not-allowed;
|
||||
opacity: 0.42;
|
||||
}
|
||||
|
||||
.application-preview-input {
|
||||
width: 100%;
|
||||
min-width: 0;
|
||||
height: 30px;
|
||||
border: 1px solid #93c5fd;
|
||||
border-radius: 6px;
|
||||
background: #ffffff;
|
||||
color: #0f172a;
|
||||
font: inherit;
|
||||
font-weight: 650;
|
||||
line-height: 1.2;
|
||||
padding: 0 9px;
|
||||
outline: none;
|
||||
box-shadow: 0 0 0 3px rgba(37, 99, 235, 0.12);
|
||||
}
|
||||
|
||||
.application-preview-select {
|
||||
cursor: pointer;
|
||||
appearance: auto;
|
||||
}
|
||||
|
||||
.message-answer-markdown :deep(ul),
|
||||
.message-answer-markdown :deep(ol) {
|
||||
margin: 0;
|
||||
|
||||
Reference in New Issue
Block a user