Vue 2 + Element UI + SCSS | 目标分辨率:1080p (1920×1080)
| 用途 | 字号 | 字重 | 适用范围 |
|---|---|---|---|
| 页面标题 | 16px | 700/bold | comDoc_big__title / dicTitle / adviceTitle |
| 正文/按钮/表格/筛选栏label | 14px | 400 | 表格内容、按钮文字、表单输入、筛选区标签 |
| 辅助文字/说明/时间戳 | 12px | 400 | 说明文字、时间戳、次要备注 |
字体族:标题 PingFangSC-Medium / 正文 PingFangSC-Regular / 打印 宋体
注意:筛选栏 label 属于正文级别 14px,不是辅助文字 12px。
本系统存在三套等级色,用途不同,不可混淆。
| 位置 | 值 |
|---|---|
| 页面标题 padding | 10px 12px |
| 搜索区 padding | 8px 12px |
| 搜索区与表格间间隔条 | 6px solid --bg-gap |
| 表格区域 padding | 8px 12px |
| 表单行间距 | 8-10px |
| 弹窗 header / body padding | 12px 16px |
| 分页区 margin-top | 8px |
| 相邻按钮 margin-left | 6px |
| form-item margin-bottom | 10-16px |
三大系统(住院/门诊/护理)共归纳出 7 种页面布局类型,新开发界面应先确定属于哪种类型,再套用对应规范。
场景:字典维护、模板管理、规则配置 — "搜索+表格+弹窗编辑"的CRUD
场景:多功能并列切换
Tab高度 51px / 字号 16px 500 / 选中色 #1890FF / 激活条 全宽 border-bottom 2px solid
场景:左侧选择+右侧详情
左 260-294px fixed / 右 calc(100%-左宽) / 间隔 4-8px
左 23% / 右 flex:1 / 间隔 10px
场景:病房管理 — 多患者状态概览
场景:批量操作 — 左侧选择多患者,右侧集中录入
场景:独立小功能弹窗(二维码/签名) 或 打印预览(iframe)
弹窗宽 228-480px / 居中 / destroy-on-close
左侧类型列表 211px / 右侧 850px / 底部按钮居中
场景:多功能工作台 — 护士站、病房管理等需要频繁切换功能模块
导航栏 60px / 背景 --bg-search / 激活态 --color-primary 白字 / 点击切换,禁止hover滑出
| 业务特征 | 推荐布局 | 举例 |
|---|---|---|
| 增删改查+搜索 | 查询维护页 | 字典管理、模板维护 |
| 多功能并列切换 | Tab页签页 | 患者接诊 |
| 选项目+看详情 | 左右分栏页 | 医嘱模板、文书书写 |
| 全局概览+快捷操作 | 综合管理页 | 病房管理、护士站 |
| 批量操作多对象 | 批量录入页 | 体征批量录入 |
| 独立小工具/打印 | 弹窗工具页 | 二维码、诊断证明打印 |
| 多功能工作台 | 侧边导航工作台 | 护士站、病房管理 |
| 类型 | 组件 | 场景 | 交互 |
|---|---|---|---|
| 业务弹窗 | el-dialog | 新增/编辑/详情/复杂表单 | 遮罩+居中, 可拖拽 |
| 抽屉面板 | el-drawer | 患者列表/历史处方/模板引用 | 左侧(ltr)或右侧(rtl)滑入 |
| 轻提示 | $message | 操作即时反馈 | 顶部居中, 3s自动消失 |
| 确认框 | $confirm/$alert | 删除/提交确认 | 遮罩+居中小弹窗 |
| 角标通知 | $notify | 后台任务完成/系统消息 | 右上角滑入 |
header 16px bold / body padding 12-16px / footer 主按钮 --color-primary / 可拖拽(v-dialogDrag)
患者列表、导航菜单
历史处方、模板引用、药典查询
header 50px高 / 16px bold / 阴影 2px 12px rgba(0,0,0,0.08) / 宽度 300-760px
组件选型:字典维护型 → el-table / 业务列表型 → vxe-table@3.7.9 / 禁止原生 <table>
| 业务场景 | 表格组件 | 抽屉组件 | 示例 |
|---|---|---|---|
| 字典维护型 | el-table | el-drawer | 药品字典、科室维护 |
| 业务列表型 | vxe-table | 自定义侧边栏 | 医嘱列表、请药明细 |
表头 --bg-thead + --text-primary / 内容 --text-regular / 斑马纹 --bg-stripe / hover --bg-hover / 边框 --border-light
| 床号 | 姓名 | 诊断 | 状态 |
|---|---|---|---|
| 03 | 张三 | 急性阑尾炎 | 在科 |
| 05 | 李四 | 高血压3级 | 危急 |
| 12 | 王五 | 2型糖尿病 | 诊疗中 |
全局主题覆盖使 vxe-table 与 HIS-UI 视觉风格一致。统一行高 35px,表头与数据行一致,用 height + line-height 控制,padding 上下归零;.vxe-cell 统一 display:flex; align-items:center 消除表头/数据行布局模型差异。基础配置:border="inner" + stripe + isHover + show-overflow + auto-resize
| 属性 | 值 | 说明 |
|---|---|---|
border | "inner" | 内边框,与 HIS-UI 表格风格一致 |
stripe | — | 斑马纹,使用 --bg-stripe |
row-config.isHover | true | hover 高亮,使用 --bg-hover |
show-overflow | — | 超宽列省略号+tooltip |
auto-resize | — | 自动适应容器宽度 |
通过虚拟行 { _isGroup: true } + :row-class-name 回调实现。分组行样式:背景 --bg-group,文字色 --color-primary,字重 500。
分组行:背景 --bg-group / 文字 --color-primary / 字重 500 — 与表头(--bg-thead/600)和数据行(400)形成三层视觉层次
<vxe-column type="checkbox" width="34" align="center">,通过 checkbox-config.checkMethod 排除分组行。
表格内编辑组件(如药房切换)使用 #default slot 嵌入 el-select size="mini"。
height 30px / border-radius 3px / font-size 14px / 垂直居中用 line-height: 28px
用于查询区多选一筛选项,区别于 radio-button 蓝色填充样式,避免与查询按钮撞色。组内紧贴排列(margin-left:-1px 合并边框),组间竖线分隔。
| 状态 | 文字色 | 背景 | 边框 | 字重 |
|---|---|---|---|---|
| 默认 | --text-secondary | 透明 | 1px solid --border-normal | 400 |
| 悬停 | --text-primary | 透明 | --border-normal | 400 |
| 选中 | --color-primary | --color-primary-light | --color-primary | 600 |
组内 gap:0, margin-left:-1px 合并相邻边框, 首尾圆角 3px, 中间 0 | 组间竖线分隔 1px×16px | z-index 选中态覆盖悬停态
height 28-30px / border-radius 3px / padding 0 8px / font-size 14px / focus: border-color --color-primary
| 属性 | 值 |
|---|---|
| 背景 | #005CAB (--bg-header) 医疗蓝品牌色 |
| 阴影 | 1px 1px 4px 1px rgba(0,0,0,0.12) inset 内阴影 |
| 高度 | 48px |
| 文字色 | #fff |
| 右侧区透明度 | 0.65 |
| 系统名称 | 16px |
| 操作文字 | 14px |
| Logo | 30×30px |
| 左/右内边距 | 24px / 40px |
标准滚动条(主区域/表格/列表):6px宽, 轨道透明, 滑块 rgba(80,79,79,0.2)
大滚动条(目录树/编辑区):10px宽, 轨道 #d6d6d6, 滑块 #bfbfbf
节点 14px / 图标 14×14px / 间距 10px / 选中背景 #e2eaff / 文字溢出省略 / 缩进每级 16-20px
左侧(门诊):20px宽, 竖排文字, 靠左贴边, hover展开抽屉
右侧(护理引用):39×39px圆形, 背景 #43D381, 子按钮 --color-primary 白字
门诊医生站和住院医生站共享同一套布局结构,区别仅在左侧患者列表的有无和宽度。整体为顶部导航 + 左侧列表 + 右侧工作区的三段式。
┌──────────────────────────────────────────────────────────┐
│ 顶部导航栏(48px, --bg-header #005CAB) │
│ logo + 系统名 + 患者横幅 + 用户信息 + 全屏 + 退出 │
├──────────────────────────────────────────────────────────┤
│ Tab页签栏(51px, 白底) │
│ 字号16px/500, 选中色 --color-primary │
│ 激活条: 全宽 border-bottom 2px solid --color-primary │
│ 右侧:功能按钮组(absolute right) │
├──────────────────────────────────────────────────────────┤
│ 患者信息栏(姓名/性别/年龄/ID/过敏/费别/GCP标签) │
├──────────────────────────────────────────────────────────┤
│ 间隔条 6px, background: --bg-gap │
├──────────────────────────────────────────────────────────┤
│ Tab内容区(白底, flex:1, overflow:hidden) │
│ ┌──────────────────────────────────────────────────┐ │
│ │ 筛选栏(32px高, flex横排, mb:4px) │ │
│ │ select + radio-group + input + 按钮 │ │
│ ├──────────────────────────────────────────────────┤ │
│ │ 数据表格(vxe-table / el-table) │ │
│ │ header: 36px, row: 40px, stripe │ │
│ │ flex:1, overflow:auto │ │
│ ├──────────────────────────────────────────────────┤ │
│ │ 录入区(搜索栏60px + 动态子组件区) │ │
│ │ border: 1px solid --border-light │ │
│ └──────────────────────────────────────────────────┘ │
└──────────────────────────────────────────────────────────┘
注:左侧患者列表为独立的收缩栏组件(PatientLeftBar),
不属于主布局结构,按需展开/收起。
| 区域 | 属性 | 规范值 | 备注 |
|---|---|---|---|
| 整体 | background | --bg-page #F2F4F8 | 灰底 + 白面板分层 |
| Tab页签 | 高度 | 51px, line-height:51px | |
| Tab页签 | 字号/字重 | 16px/500 | |
| Tab页签 | 选中色 | --color-primary #1890FF | |
| Tab页签 | 激活条 | 全宽 border-bottom 2px solid --color-primary | 非居中短条 |
| Tab页签 | 非选中色 | --text-secondary #606266 | |
| Tab页签 | item padding | 0 12px | |
| 间隔条 | 高度/背景 | 6px / --bg-gap #D8DEE9 | |
| 患者信息栏 | 高度 | 64px | 两行布局:基础信息(26px) + 标签区(26px) |
| 患者信息栏 | 头像 | 48×48px, 圆形, background:--bg-search | 左侧垂直居中 |
| 患者信息栏 | 姓名 | 16px/700, --text-primary | |
| 患者信息栏 | 标签 | el-tag size=mini, 1px 6px, border-radius:3px | GCP/慢特/医保/费别/身份 |
| 按钮 | 高度 | 30px | line-height:28px + 1px边框 |
| 按钮 | 圆角 | 3px | |
| 按钮 | 间距 | margin-left:6px | |
| 筛选栏 | 高度 | 32px | |
| 筛选标签 | 字号/色 | 14px / --text-secondary | |
| 表格表头 | 背景 | --bg-thead #D8DEE9 | |
| 表格表头 | 字重 | 600 | |
| 表格表头高度 | 门诊/住院 | 34px / 36px | |
| 表格行高 | 门诊/住院 | 40px / 38px | |
| 患者姓名 | 字号/字重 | 14px/600 | |
| 患者次要 | 字号 | 12px | |
| 录入搜索栏 | 高度/padding | 60px / 14px | |
| 录入区 | 边框 | 1px solid --border-light |
| 维度 | 现有系统 | HIS-UI规范 | 处理方式 |
|---|---|---|---|
| 页面底色 | #fff | #F2F4F8 | 改用CSS变量 |
| 间隔条 | #F0F2F5, 8-10px | --bg-gap #D8DEE9, 6px | 换变量 |
| Tab选中色 | #409EFF | --color-primary #1890FF | 换变量 |
| Tab非选中色 | #1F1F1F | --text-secondary #606266 | 换变量 |
| 按钮高度 | 32px | 30px | 全局覆盖 |
| 按钮圆角 | 4px | 3px | 全局覆盖 |
| 边框色 | #E8E8E8 | --border-light #E2E6EC | 换变量 |
| 表头背景 | vxe默认 | --bg-thead #D8DEE9 | 全局覆盖 |
| 表头字重 | 默认 | 600 | 全局覆盖 |
| 门诊外壳字号 | 12px | 14px | 调整 |
以下为门诊医生站标准布局示例:Tab页签 + 患者信息栏 + 筛选栏 + 医嘱列表(表头固定/表体独立滚动)+ 录入区。点击Tab可切换内容。
/* App.vue style (非scoped) — 全局层次增强覆盖 */
:root {
--bg-page: #F2F4F8;
--bg-search: #F0F3F8;
--bg-thead: #D8DEE9;
--bg-group: #E8ECF4;
--bg-stripe: #F5F7FA;
--bg-hover: #D0E2F5;
--bg-selected: #C9DCF2;
--bg-gap: #D8DEE9;
--border-light: #E2E6EC;
--border-normal: #C8CDD6;
}
body { background: var(--bg-page); }
/* el-table 主题覆盖(字典维护型页面) */
.el-table th.el-table__cell { background: var(--bg-thead) !important; }
.el-table--striped .el-table__body tr.el-table__row--striped td {
background: var(--bg-stripe) !important; }
/* vxe-table 主题覆盖(业务列表型页面) — 统一行高 35px + flex 布局 */
.vxe-table--render-default .vxe-header--column,
.vxe-table--render-default .vxe-body--column {
height: 35px !important;
line-height: 35px !important;
padding: 0 8px !important;
vertical-align: middle !important; }
.vxe-table .vxe-header--column {
background: var(--bg-thead); color: var(--text-primary);
font-weight: 600; font-size: 14px; }
.vxe-table .vxe-body--column { font-size: 14px; color: var(--text-regular); }
.vxe-table .vxe-body--row.row--stripe .vxe-body--column {
background: var(--bg-stripe); }
.vxe-table .vxe-body--row.row--hover .vxe-body--column {
background: var(--bg-hover); }
.vxe-table--border-line { border-color: var(--border-light); }
.vxe-table .vxe-cell { display: flex; align-items: center; line-height: 35px !important; padding: 0 8px !important; }
.vxe-table .vxe-cell--checkbox { overflow: visible; }
.vxe-table .row--group .vxe-body--column {
background: var(--bg-group) !important;
color: var(--color-primary); font-weight: 500; font-size: 14px; }
.vxe-table--render-default .vxe-cell--checkbox .vxe-checkbox--icon {
font-size: 1.1em; color: var(--text-secondary); }
.vxe-table--render-default .vxe-header--column .vxe-cell--checkbox .vxe-checkbox--icon {
color: var(--text-primary); }
.vxe-table--render-default .is--checked.vxe-cell--checkbox .vxe-checkbox--icon,
.vxe-table--render-default .is--indeterminate.vxe-cell--checkbox .vxe-checkbox--icon {
color: var(--color-primary); }
.vxe-table--render-default .vxe-cell--checkbox:not(.is--disabled):hover .vxe-checkbox--icon {
color: var(--color-primary); }
#005CAB 医疗蓝品牌色不变@media print 单独控制