feat: 1. 本地化思源黑体的字体包并优先使用。

2. 添加权限映射表和全局查看权限的hook,便于路由控制不同权限按钮显示/隐藏。
3. 删除评查点分组的部分旧api方法。
4. 对接评查点分组接口,文档类型接口, 提示词管理接口, 入口模块管理的接口。
5. 优化角色权限管理的接口,完善不用地区的访问权限认证。
6. 优化主页交叉评查和设置的入口样式和布局。
7. 优化评查点分组,评查规则的功能权限校验。
This commit is contained in:
2025-11-29 10:37:35 +08:00
parent 61facf5d71
commit 30e100ef3e
29 changed files with 2527 additions and 2126 deletions
+43
View File
@@ -0,0 +1,43 @@
/**
* 思源黑体(Source Han Sans)字体定义
* 本地托管版本,支持 woff2/woff/otf 格式
*/
/* 思源黑体 - 常规(Regular/Normal - 400 */
@font-face {
font-family: 'Source Han Sans SC';
font-style: normal;
font-weight: 400;
font-display: swap; /* 快速显示文本,字体加载完成后替换 */
src: local('Source Han Sans SC Regular'),
local('SourceHanSansSC-Regular'),
url('/fonts/source-han-sans/SourceHanSansSC-Regular.otf') format('opentype');
}
/* 思源黑体 - 中等(Medium - 500 */
@font-face {
font-family: 'Source Han Sans SC';
font-style: normal;
font-weight: 500;
font-display: swap;
src: local('Source Han Sans SC Medium'),
local('SourceHanSansSC-Medium'),
url('/fonts/source-han-sans/SourceHanSansSC-Medium.otf') format('opentype');
}
/* 思源黑体 - 粗体(Bold - 700 */
@font-face {
font-family: 'Source Han Sans SC';
font-style: normal;
font-weight: 700;
font-display: swap;
src: local('Source Han Sans SC Bold'),
local('SourceHanSansSC-Bold'),
url('/fonts/source-han-sans/SourceHanSansSC-Bold.otf') format('opentype');
}
/* 如果需要更多字重,可以继续添加:
* - Light (300)
* - ExtraLight (250)
* - Heavy (900)
*/
+7
View File
@@ -107,6 +107,13 @@
.document-type-new-page .checkbox-input {
@apply mr-2 h-4 w-4 text-primary-600 border-gray-300 rounded;
@apply focus:ring-primary-500 cursor-pointer;
accent-color: #00684a;
}
/* 复选框选中状态 */
.document-type-new-page .checkbox-input:checked {
background-color: #00684a;
border-color: #00684a;
}
.document-type-new-page .checkbox-label {
+62 -24
View File
@@ -75,6 +75,7 @@
/* 主要内容区域 */
.index-main-content {
position: relative; /* 为绝对定位的管理入口提供定位上下文 */
height: 100%;
flex: 1;
display: flex;
@@ -113,17 +114,19 @@
margin: 0;
flex-shrink: 0; /* 防止被压缩 */
}
/* 模块网格容器 - 每行4个 */
.modules-container {
display: flex;
flex-wrap: wrap; /* 自动换行 */
justify-content: center;
align-content: flex-start; /* 内容从顶部开始排列 */
gap: 2.5rem;
flex: 1; /* 占据剩余空间 */
overflow-y: auto; /* 超出高度时显示垂直滚动条 */
overflow-x: hidden; /* 隐藏水平滚动条 */
padding: 2rem 0 3rem 0; /* 上下留出一些空间 */
padding: 2rem 0 3rem 0;
display: grid;
grid-template-columns: repeat(4, 1fr); /* 每行固定4列 */
gap: 2rem 2.5rem; /* 行间距2rem,列间距2.5rem */
align-content: flex-start;
max-width: 1200px; /* 限制最大宽度 */
margin: 0 auto; /* 居中 */
}
/* 滚动条样式优化 */
@@ -153,8 +156,7 @@
gap: 1.5rem;
padding: 0 2rem;
height: 136px;
width: 290px;
flex-shrink: 0; /* 防止卡片被压缩 */
width: 100%; /* 适应grid列宽 */
background: linear-gradient(180deg, #ebf1f7 0%, #ffffff 100%);
border-radius: 8px;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.05);
@@ -200,6 +202,33 @@
background-size: cover;
}
.settings-button {
display: flex;
align-items: center;
justify-content: center;
padding: 0.5rem;
background: transparent;
border: none;
color: #666;
cursor: pointer;
transition: all 0.2s;
border-radius: 4px;
}
.settings-button:hover {
background-color: rgba(0, 104, 74, 0.05);
color: #00684a;
}
.settings-button i {
font-size: 1.5rem;
transition: transform 0.5s ease;
}
.settings-button:hover i {
transform: rotate(90deg);
}
.logout-button {
display: flex;
align-items: center;
@@ -278,14 +307,12 @@
padding: 0 1rem;
}
/* 模块容器改为纵向排列 */
/* 模块容器改为列 */
.modules-container {
flex-direction: column;
flex-wrap: nowrap; /* 移动端不需要换行 */
padding: 1.5rem 0 2rem 0;
grid-template-columns: 1fr; /* 移动端单列 */
gap: 1.25rem;
align-items: center;
overflow-y: auto; /* 移动端超出长度滚动显示 */
padding: 1rem 0 2rem 0;
max-width: 100%; /* 移除最大宽度限制 */
}
/* 移动端滚动条样式 */
@@ -296,11 +323,10 @@
/* 模块卡片调整 */
.module-card {
width: 100%;
max-width: 340px;
max-width: 100%;
height: 100px;
padding: 0 1.5rem;
gap: 1.25rem;
flex-shrink: 0; /* 移动端也防止卡片被压缩 */
}
.module-card img {
@@ -312,6 +338,14 @@
font-size: 1.1rem;
}
.settings-button {
padding: 0.4rem;
}
.settings-button i {
font-size: 1.35rem;
}
.logout-button {
padding: 0.4rem;
}
@@ -344,8 +378,13 @@
height: 18vh; /* 超小屏幕标题区域更小 */
}
/* 超小屏幕模块网格 */
.modules-container {
gap: 1rem;
}
.module-card {
max-width: 300px;
max-width: 100%;
height: 90px;
padding: 0 1.25rem;
gap: 1rem;
@@ -359,10 +398,6 @@
.module-name {
font-size: 1rem;
}
.modules-container {
gap: 1rem;
}
}
/* 平板横屏 */
@@ -376,13 +411,16 @@
height: 22vh; /* 平板电脑标题区域高度 */
}
/* 平板模块网格 - 每行3个 */
.modules-container {
gap: 2rem;
padding: 1.5rem 0 2.5rem 0;
grid-template-columns: repeat(3, 1fr); /* 平板每行3列 */
gap: 1.75rem 2rem;
max-width: 900px; /* 平板上稍窄一些 */
}
.module-card {
width: 260px;
width: 100%;
height: 120px;
}
}