Files
hospital-rescue-app-v2/mock/index.uts
T
2026-09-24 16:25:22 +08:00

550 lines
34 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/**
* 医院救援管理平台 · 移动端 Mock 数据
* ------------------------------------------------------------
* 所有页面数据均从本文件读取,后续对接接口时只需替换本文件的取数实现,
* 页面层无需改动(保持低耦合)。
*/
import {
HrUser, HrTodoTask, HrActivity, HrToolBox,
HrCatalog, HrGroup, HrSubject, HrMaterial,
HrExamRecord, HrCert, HrExamPlan, HrQuestion, HrOption, HrPracticeMeta,
HrInjuryMark, HrVital, HrTimelineNode, HrVictim,
HrEventMember, HrEventItem, HrEventDetail,
HrScanFeedback, HrScanRecord, HrStockItem, HrGoods, HrDevice, HrDeviceCheck,
HrMsg, HrMsgGroup, HrContact, HrContactGroup, HrOfflineTask,
HrSettingSwitch, HrSettingRow, HrDesignSection, HrSwatch, HrTokenRow
} from './types.uts'
/* ============================ 用户 ============================ */
export const rescuerUser : HrUser = {
name: '张明远', avatar: '张', title: '主治医师', dept: '急诊科', jobNo: '1247',
role: 'rescuer', roleLabel: '救援人员 · 急救中心',
tags: ['ACLS 认证', 'BLS 认证', '创伤急救', '培训等级 B'],
hours: 42.5, courseCount: 12, certCount: 3
} as HrUser
export const keeperUser : HrUser = {
name: '陈志强', avatar: '陈', title: '物资管理员', dept: '后勤保障科', jobNo: '2083',
role: 'keeper', roleLabel: '仓管人员 · 后勤保障科',
tags: ['仓储管理', '设备维保', '危化品资质', '培训等级 A'],
hours: 26.0, courseCount: 8, certCount: 2
} as HrUser
/* ============================ 学员首页 ============================ */
export const todoTasks : HrTodoTask[] = [
{ icon: '⚑', iconTheme: 'amb', title: '成人 CPR 课题 · 还剩 2 份资料', sub: '09-30 截止 · 已学 68%', action: '继续 ' } as HrTodoTask,
{ icon: '✓', iconTheme: 'red', title: '年度急救复训 · 报名确认', sub: '09-30 截止 · 未开始', action: '去完成 ' } as HrTodoTask
]
export const activities : HrActivity[] = [
{ icon: '▦', iconTheme: 'pri', title: '完成「创伤评估」资料学习', sub: '今天 09:20 · 学习 38 分钟' } as HrActivity,
{ icon: '✗', iconTheme: 'red', title: '错题 +2(已复习 1', sub: '昨天 21:12 · 心肺复苏' } as HrActivity,
{ icon: '▤', iconTheme: 'grn', title: '获得「AED 操作」证书', sub: '2 天前 · 有效期至 2028-09' } as HrActivity
]
export const toolBox : HrToolBox[] = [
{ icon: 'book-2-line', name: '课程库', iconBg: '#EFF6FF', iconColor: '#2563EB' } as HrToolBox,
{ icon: 'file-edit-line', name: '我的考试', iconBg: '#FEF3C7', iconColor: '#B45309' } as HrToolBox,
{ icon: 'award-line', name: '我的证书', iconBg: '#ECFDF5', iconColor: '#059669' } as HrToolBox,
{ icon: 'file-warning-line', name: '错题本', iconBg: '#FEF2F2', iconColor: '#DC2626' } as HrToolBox
]
/* ============================ 课程库 ============================ */
export const catalogList : HrCatalog[] = [
{ id: 'c1', name: '急救基础', count: 11, icon: '', iconBg: '#FEF2F2', iconColor: '#DC2626' } as HrCatalog,
{ id: 'c2', name: '创伤急救', count: 9, icon: '⚡', iconBg: '#FEF3C7', iconColor: '#B45309' } as HrCatalog,
{ id: 'c3', name: 'ACLS / BLS', count: 8, icon: '✓', iconBg: '#ECFDF5', iconColor: '#059669' } as HrCatalog,
{ id: 'c4', name: '检伤分类', count: 6, icon: '♡', iconBg: '#EFF6FF', iconColor: '#2563EB' } as HrCatalog,
{ id: 'c5', name: '设备操作', count: 5, icon: '⚙', iconBg: '#F5F3FF', iconColor: '#7C3AED' } as HrCatalog,
{ id: 'c6', name: '心理干预', count: 4, icon: '◈', iconBg: '#FFFBEB', iconColor: '#92400E' } as HrCatalog,
{ id: 'c7', name: '中毒急救', count: 3, icon: '☣', iconBg: '#FEF2F2', iconColor: '#B91C1C' } as HrCatalog,
{ id: 'c8', name: '应急指挥', count: 3, icon: '⚠', iconBg: '#ECFEFF', iconColor: '#0E7490' } as HrCatalog
]
/** 每个一级分类下的二级分组(三级课题为唯一可点项) */
export const courseGroups : HrGroup[] = [
{
name: '心肺复苏', count: 4,
items: [
{ no: '01', name: '成人 CPR(高级生命支持)', meta: '资料 6 份 · 题库 50 · 必修' } as HrSubject,
{ no: '02', name: '儿童 CPR', meta: '资料 4 份 · 题库 32 · 必修' } as HrSubject,
{ no: '03', name: '婴儿 CPR', meta: '资料 4 份 · 题库 28 · 必修' } as HrSubject,
{ no: '04', name: '溺水者心肺复苏', meta: '资料 3 份 · 题库 18 · 选修' } as HrSubject
]
} as HrGroup,
{
name: 'AED 操作', count: 3,
items: [
{ no: '01', name: 'AED 设备认知与自检', meta: '资料 3 份 · 题库 20 · 必修' } as HrSubject,
{ no: '02', name: 'AED 操作流程与除颤时机', meta: '资料 4 份 · 题库 26 · 必修' } as HrSubject,
{ no: '03', name: '特殊场景 AED(潮湿 / 儿童 / 起搏器)', meta: '资料 2 份 · 题库 15 · 选修' } as HrSubject
]
} as HrGroup,
{
name: '气道管理', count: 4,
items: [
{ no: '01', name: '气道开放与评估', meta: '资料 3 份 · 题库 22 · 必修' } as HrSubject,
{ no: '02', name: '球囊面罩通气', meta: '资料 3 份 · 题库 18 · 必修' } as HrSubject,
{ no: '03', name: '气管插管术', meta: '资料 5 份 · 题库 30 · 认证' } as HrSubject,
{ no: '04', name: '喉罩与声门上气道', meta: '资料 2 份 · 题库 16 · 选修' } as HrSubject
]
} as HrGroup
]
/** 课题详情对应的资料列表 */
export const subjectMaterials : HrMaterial[] = [
{ id: 'm1', kind: 'video', badge: '视频', badgeColor: '#7C3AED', icon: '▶', title: '高质量胸外按压操作示范', meta: '视频 · 时长 08:24 · 09-20 更新', summary: '由急诊科教学组录制,演示成人胸外按压的手位、深度、频率与胸廓回弹要点,并对比 3 处常见错误动作。', from: '成人 CPR(高级生命支持) · 急救基础 / 心肺复苏', progress: 62 } as HrMaterial,
{ id: 'm2', kind: 'doc', badge: 'PDF', badgeColor: '#DC2626', icon: 'PDF', title: '成人 CPR 操作流程(2025 版)', meta: '文档 · PDF · 2.4 MB · 12 页', summary: '依据《2025 心肺复苏与心血管急救指南》整理的操作流程速查手册,含成人基础生命支持流程图、除颤时机判定表与 3 个常见错误对照。', from: '成人 CPR(高级生命支持) · 急救基础 / 心肺复苏', progress: 0 } as HrMaterial,
{ id: 'm3', kind: 'doc', badge: 'DOC', badgeColor: '#2563EB', icon: 'DOC', title: '高质量胸外按压要点', meta: '文档 · Word · 860 KB · 6 页', summary: '按压深度 5~6cm、频率 100~120 次/分,每次按压后必须保证胸廓完全回弹,中断控制在 10 秒以内。', from: '成人 CPR(高级生命支持) · 急救基础 / 心肺复苏', progress: 100 } as HrMaterial,
{ id: 'm4', kind: 'doc', badge: 'PPT', badgeColor: '#D97706', icon: 'PPT', title: '心肺复苏教学课件', meta: '文档 · PPT · 5.6 MB · 38 页', summary: '急救基础课程配套课件,覆盖 BLS 全流程、团队分工与考核要点。', from: '成人 CPR(高级生命支持) · 急救基础 / 心肺复苏', progress: 0 } as HrMaterial,
{ id: 'm5', kind: 'doc', badge: 'XLS', badgeColor: '#059669', icon: 'XLS', title: 'CPR 考核评分表', meta: '文档 · Excel · 124 KB · 2 个工作表', summary: '实操考核使用评分表,包含操作步骤分值、扣分项与总评标准。', from: '成人 CPR(高级生命支持) · 急救基础 / 心肺复苏', progress: 0 } as HrMaterial,
{ id: 'm6', kind: 'video', badge: '视频', badgeColor: '#7C3AED', icon: '▶', title: '双人配合通气节律演示', meta: '视频 · 时长 06:12 · 09-12 更新', summary: '双人配合心肺复苏中通气节律与按压衔接的演示视频。', from: '成人 CPR(高级生命支持) · 急救基础 / 心肺复苏', progress: 0 } as HrMaterial
]
/* ============================ 练习 / 考试 / 证书 ============================ */
export const practiceMeta : HrPracticeMeta = {
subject: '成人 CPR(高级生命支持)',
total: 50,
minutes: 30,
goal: '80%',
lastTime: '09-21 21:08',
lastDone: 18,
lastRate: 72
} as HrPracticeMeta
export const quizQuestions : HrQuestion[] = [
{
id: 'q1', stem: '成人心肺复苏时,胸外按压的深度应达到多少?', answer: 1,
options: [
{ key: 'A', text: '3 ~ 4 cm' } as HrOption,
{ key: 'B', text: '5 ~ 6 cm' } as HrOption,
{ key: 'C', text: '6 ~ 8 cm' } as HrOption,
{ key: 'D', text: '按压至胸廓完全塌陷即可' } as HrOption
],
analysis: '成人胸外按压深度为 5~6 cm,过浅无法产生有效心排血量,过深易造成肋骨骨折等损伤。',
from: '成人 CPR'
} as HrQuestion,
{
id: 'q2', stem: '成人胸外按压的频率应保持在每分钟多少次?', answer: 1,
options: [
{ key: 'A', text: '60 ~ 80 次' } as HrOption,
{ key: 'B', text: '100 ~ 120 次' } as HrOption,
{ key: 'C', text: '120 ~ 140 次' } as HrOption,
{ key: 'D', text: '越快越好' } as HrOption
],
analysis: '指南推荐成人胸外按压频率为 100~120 次/分,过快会降低按压深度与回弹质量。',
from: '成人 CPR'
} as HrQuestion,
{
id: 'q3', stem: '球囊面罩通气时,成人推荐的通气频率是?', answer: 0,
options: [
{ key: 'A', text: '每 6 秒 1 次(10 次/分)' } as HrOption,
{ key: 'B', text: '每 3 秒 1 次(20 次/分)' } as HrOption,
{ key: 'C', text: '每 10 秒 1 次(6 次/分)' } as HrOption,
{ key: 'D', text: '每 6 秒 1 次(6 次/分)' } as HrOption
],
analysis: '建立高级气道后,成人通气频率为每 6 秒 1 次,即 10 次/分,且不再与按压交替中断。',
from: '气道管理'
} as HrQuestion,
{
id: 'q4', stem: '发现有人倒地无反应、无呼吸,首先应当?', answer: 2,
options: [
{ key: 'A', text: '立即开始胸外按压' } as HrOption,
{ key: 'B', text: '先寻找 AED' } as HrOption,
{ key: 'C', text: '判断环境安全并呼救、启动应急系统' } as HrOption,
{ key: 'D', text: '掐人中并等待家属到来' } as HrOption
],
analysis: '施救前必须先确认现场环境安全,随后判断反应与呼吸,呼救并启动应急反应系统,再开始 CPR。',
from: '成人 CPR'
} as HrQuestion,
{
id: 'q5', stem: 'AED 到达后,正确做法是?', answer: 1,
options: [
{ key: 'A', text: '先停止按压擦干胸部再贴电极片' } as HrOption,
{ key: 'B', text: '尽量不中断按压,开机贴片后按提示操作' } as HrOption,
{ key: 'C', text: '等专业医护到场再使用' } as HrOption,
{ key: 'D', text: '除颤后不需要继续按压' } as HrOption
],
analysis: 'AED 到达应尽快使用,尽量缩短按压中断;电击后立即恢复胸外按压。',
from: 'AED 操作'
} as HrQuestion
]
export const examPlans : HrExamPlan[] = [
{ name: 'BLS 基础生命支持 · 年度复训', priority: 0, countdown: '距开考 02 天 04 小时 12 分', time: '2026-09-24 14:00', place: '临床技能中心 3F' } as HrExamPlan
]
export const examRecords : HrExamRecord[] = [
{ name: '心肺复苏理论测验', date: '09-18', score: 92, passed: true } as HrExamRecord,
{ name: 'AED 操作规范考核', date: '08-30', score: 88, passed: true } as HrExamRecord,
{ name: '创伤急救理论测验', date: '08-12', score: 71, passed: false } as HrExamRecord
]
export const certList : HrCert[] = [
{ name: 'AED 操作证书', gotAt: '2025-09', expireAt: '2028-09', status: '有效', statusTheme: 'grn' } as HrCert,
{ name: '成人心肺复苏(CPR)证书', gotAt: '2025-06', expireAt: '2028-06', status: '有效', statusTheme: 'grn' } as HrCert,
{ name: 'BLS 基础生命支持证书', gotAt: '2024-10', expireAt: '2026-10-15', status: '即将到期', statusTheme: 'amb' } as HrCert
]
/** 错题本 / 学习中心共用 */
export const wrongQuestions : HrQuestion[] = [
{
id: 'w1', stem: '成人心肺复苏时,胸外按压的深度应达到多少?', answer: 1,
options: [ { key: 'A', text: '3 ~ 4 cm' } as HrOption, { key: 'B', text: '5 ~ 6 cm' } as HrOption ],
analysis: '成人胸外按压深度为 5~6 cm。', from: '成人 CPR'
} as HrQuestion,
{
id: 'w2', stem: '成人胸外按压的频率应保持在每分钟多少次?', answer: 1,
options: [ { key: 'A', text: '60 ~ 80 次' } as HrOption, { key: 'B', text: '100 ~ 120 次' } as HrOption ],
analysis: '推荐频率为 100~120 次/分。', from: '成人 CPR'
} as HrQuestion,
{
id: 'w3', stem: '球囊面罩通气时,成人推荐的通气频率是?', answer: 0,
options: [ { key: 'A', text: '每 6 秒 1 次(10 次/分)' } as HrOption, { key: 'D', text: '每 6 秒 1 次' } as HrOption ],
analysis: '建立高级气道后每 6 秒 1 次,即 10 次/分。', from: '气道管理'
} as HrQuestion
]
/* ============================ 伤员 ============================ */
export const victimList : HrVictim[] = [
{ id: 'v1', name: '王建国', gender: '男', age: 52, code: 'TRIAGE-20260922-0001', level: 1, injury: '开放性颅脑损伤、左股骨骨折 · 意识模糊,GCS 9 分', status: '已转运 · 协和医院急诊', statusTheme: 'pri', createdAt: '14:21 建档' } as HrVictim,
{ id: 'v2', name: '李华', gender: '男', age: 35, code: 'TRIAGE-20260922-0003', level: 2, injury: '头部开放性外伤、右前臂疑似骨折、左小腿挤压伤', status: '转运中 · 平车 → 创伤外科', statusTheme: 'amb', createdAt: '14:23 建档' } as HrVictim,
{ id: 'v3', name: '陈小梅', gender: '女', age: 28, code: 'TRIAGE-20260922-0006', level: 3, injury: '右膝软组织挫伤 · 可自行行走,生命体征平稳', status: '待转运 · 轻症观察区', statusTheme: 'grn', createdAt: '14:31 建档' } as HrVictim,
{ id: 'v4', name: '赵国强', gender: '男', age: 41, code: 'TRIAGE-20260922-0008', level: 2, injury: '胸部挤压伤、多发肋骨骨折(4-7 肋) · 呼吸 26 次/分', status: '未转运 · 现场待命', statusTheme: 'gray', createdAt: '14:38 建档' } as HrVictim,
{ id: 'v5', name: '吴长胜', gender: '男', age: 61, code: 'TRIAGE-20260922-0012', level: 4, injury: '重度颅脑损伤 · 无呼吸无脉搏,经确认已无生命体征', status: '已确认 · 待移交', statusTheme: 'gray', createdAt: '14:45 建档' } as HrVictim
]
/** 检伤分级(一行四级) */
export const gradeList : string[] = ['轻伤', '重伤', '危重', '死亡']
/** 2D 人体图鉴标记 */
export const injuryMarks : HrInjuryMark[] = [
{ no: '1', title: '头部 · 开放性外伤', sub: '顶枕部裂伤约 4cm · 出血中', theme: 'red' } as HrInjuryMark,
{ no: '2', title: '右前臂 · 疑似骨折', sub: '肿胀畸形 · 触痛明显', theme: 'amb' } as HrInjuryMark,
{ no: '3', title: '左小腿 · 挤压伤', sub: '皮肤瘀斑 · 局部压痛', theme: 'amb' } as HrInjuryMark
]
/** 生命体征 */
export const vitalSigns : HrVital[] = [
{ value: '37.8', unit: 'T ℃', abnormal: false } as HrVital,
{ value: '102', unit: 'P 次/分', abnormal: true } as HrVital,
{ value: '22', unit: 'R 次/分', abnormal: false } as HrVital,
{ value: '95/60', unit: 'BP mmHg', abnormal: true } as HrVital,
{ value: '88', unit: 'SpO₂ %', abnormal: true } as HrVital
]
/** 检伤评估下拉 */
export const triagePickList : string[] = ['行走能力', '呼吸', '循环', '意识 AVPU']
export const triagePickValues : string[] = ['不可走', '受限', '出血', '声音']
export const triagePickOptions : string[][] = [
['可走', '不可走'],
['正常', '受限', '无呼吸'],
['循环正常', '出血', '脉搏消失'],
['清醒', '声音', '疼痛', '无反应']
]
/** 伤员详情:流转时间线 */
export const victimTimeline : HrTimelineNode[] = [
{ time: '14:23', title: '现场检伤建档', sub: '张明 于坍塌现场完成建档,标记 3 处伤情,判定「重伤」', theme: 'normal' } as HrTimelineNode,
{ time: '14:28', title: '分级确认', sub: '现场检伤组 3 组复核,维持「重伤」· 操作人 张明', theme: 'ok' } as HrTimelineNode,
{ time: '14:35', title: '转运交接', sub: '平车送达 协和医院 创伤外科,转出方 张明 / 接收方 刘伟 电子签字', theme: 'normal' } as HrTimelineNode,
{ time: '15:10', title: '院内处置', sub: '创伤外科接诊,建立静脉通路 + 持续心电监护,清创缝合待执行', theme: 'warn' } as HrTimelineNode
]
/** 处置记录时间线 */
export const treatRecords : HrTimelineNode[] = [
{ time: '15:25', title: '分级调整:重伤 → 危重', sub: 'BP 88/56 mmHg · 判断失血性休克进展', theme: 'warn' } as HrTimelineNode,
{ time: '15:10', title: '建立静脉通路', sub: '左上肢 · 16G · 生理盐水 500 ml 快滴', theme: 'normal' } as HrTimelineNode,
{ time: '15:02', title: '止血包扎', sub: '右前臂加压包扎 + 额部敷料', theme: 'ok' } as HrTimelineNode,
{ time: '14:55', title: '检伤分级', sub: '判定「重伤」· START 协议', theme: 'normal' } as HrTimelineNode
]
/* ============================ 转运 ============================ */
export const hospitalList : string[] = ['协和医院 · 急诊创伤中心', '市第一人民医院 · 急诊', '同仁医院 · 急诊']
export const hospitalMeta : string[] = ['距现场 6.2 km · 约 14 分钟', '距现场 8.9 km · 约 21 分钟', '距现场 4.1 km · 但急诊已满']
export const hospitalBed : string[] = ['床位 2', '床位 5', '满员 ✕']
export const hospitalAvail : boolean[] = [true, true, false]
/* ============================ 离线队列 ============================ */
export const offlineTasks : HrOfflineTask[] = [
{ icon: '⇅', theme: 'amb', title: '检伤建档 · 李华(含 3 个附件)', sub: '15:32 暂存 · 等待上传', status: '待传', statusColor: '#D97706' } as HrOfflineTask,
{ icon: '⇅', theme: 'amb', title: '检伤建档 · 赵国强', sub: '15:28 暂存 · 等待上传', status: '待传', statusColor: '#D97706' } as HrOfflineTask,
{ icon: '✓', theme: 'grn', title: '处置记录 · 李华止血包扎', sub: '15:02 提交成功', status: '已同步', statusColor: '#059669' } as HrOfflineTask
]
/* ============================ 事件 ============================ */
export const eventList : HrEventItem[] = [
{
id: 'e1', name: '京港澳高速 K120 多车追尾', kind: '大型交通事故', place: '京港澳高速 K120', distance: '距您 3.2 km',
priority: 0, dotColor: '#DC2626', stage: 'ongoing', urgent: false,
members: [
{ name: '张', avatar: '张', theme: 'blue' } as HrEventMember,
{ name: '李', avatar: '李', theme: 'gn' } as HrEventMember,
{ name: '王', avatar: '王', theme: 'ag' } as HrEventMember
]
} as HrEventItem,
{
id: 'e2', name: '阳光养老院 · 老人跌倒', kind: '一般救援', place: '阳光养老院 3 号楼', distance: '距您 1.1 km',
priority: 2, dotColor: '#10B981', stage: 'ongoing', urgent: false,
members: [ { name: '陈', avatar: '陈', theme: 'gn' } as HrEventMember ]
} as HrEventItem,
{
id: 'e3', name: '城东工业园区 · 化学品泄漏', kind: '危化品事故', place: '城东工业园 B 区', distance: '距您 9.6 km',
priority: 0, dotColor: '#DC2626', stage: 'pending', urgent: true, members: [] as HrEventMember[]
} as HrEventItem,
{
id: 'e4', name: '城南小学 · 学生集体腹痛', kind: '群体性事件', place: '城南小学食堂', distance: '距您 4.3 km',
priority: 1, dotColor: '#F59E0B', stage: 'pending', urgent: true, members: [] as HrEventMember[]
} as HrEventItem,
{
id: 'e5', name: '幸福小区 · 老人心梗', kind: '一般救援', place: '幸福小区 6 号楼', distance: '距您 2.4 km',
priority: 1, dotColor: '#F59E0B', stage: 'history', urgent: false,
members: [ { name: '张', avatar: '张', theme: 'blue' } as HrEventMember ]
} as HrEventItem,
{
id: 'e6', name: '滨江路 · 电动车相撞', kind: '交通事故', place: '滨江路与建设街路口', distance: '已完成',
priority: 2, dotColor: '#9CA3AF', stage: 'history', urgent: false,
members: [ { name: '李', avatar: '李', theme: 'gn' } as HrEventMember ]
} as HrEventItem,
{
id: 'e7', name: '第一中学 · 学生运动损伤', kind: '一般救援', place: '第一中学操场', distance: '已完成',
priority: 2, dotColor: '#9CA3AF', stage: 'history', urgent: false,
members: [ { name: '陈', avatar: '陈', theme: 'gy' } as HrEventMember ]
} as HrEventItem,
{
id: 'e8', name: '老城街区 · 煤气泄漏排查', kind: '危化品事故', place: '老城街区 12 巷', distance: '已完成',
priority: 1, dotColor: '#9CA3AF', stage: 'history', urgent: false,
members: [ { name: '王', avatar: '王', theme: 'ag' } as HrEventMember ]
} as HrEventItem,
{
id: 'e9', name: '火车站 · 旅客突发晕厥', kind: '一般救援', place: '火车站候车大厅', distance: '已完成',
priority: 2, dotColor: '#9CA3AF', stage: 'history', urgent: false,
members: [ { name: '赵', avatar: '赵', theme: 'blue' } as HrEventMember ]
} as HrEventItem
]
export const eventDetail : HrEventDetail = {
id: 'e1',
name: '京港澳高速 K120 多车追尾',
sub: '大型交通事故 · 京港澳高速 K120 · 距您 3.2 km',
teamKey: '小组类型',
teamValue: '现场搜救组 · 组长 张明远',
tags: ['P0 紧急', '已抵达现场'],
victimTotal: 8, transferred: 5, pending: 3,
redCount: 3, amberCount: 2, greenCount: 1, blackCount: 2,
members: [
{ name: '张', avatar: '张', theme: 'blue' } as HrEventMember,
{ name: '李', avatar: '李', theme: 'gn' } as HrEventMember,
{ name: '王', avatar: '王', theme: 'ag' } as HrEventMember,
{ name: '陈', avatar: '陈', theme: 'gy' } as HrEventMember,
{ name: '赵', avatar: '赵', theme: 'blue' } as HrEventMember
],
timeline: [
{ time: '15:20', title: '已完成首轮检伤', sub: '8 人全部分级 · 红 3 / 黄 2 / 绿 1 / 黑 2', theme: 'normal' } as HrTimelineNode,
{ time: '14:50', title: '抵达现场 · 建立临时指挥点', sub: '现场 A 区 · 已设置警戒', theme: 'ok' } as HrTimelineNode,
{ time: '14:35', title: '接收派单并出发', sub: '响应耗时 3 分钟', theme: 'normal' } as HrTimelineNode,
{ time: '14:32', title: '后台调度派单', sub: 'P0 紧急 · 已推送全屏告警', theme: 'normal' } as HrTimelineNode
]
} as HrEventDetail
/* ============================ 扫码作业(批量处置 / 转运) ============================ */
export const scanVictims : HrVictim[] = [
{ id: 'v1', name: '王建国', gender: '男', age: 52, code: 'TRIAGE-20260922-0001', level: 1, injury: '开放性颅脑损伤', status: '', statusTheme: '', createdAt: '' } as HrVictim,
{ id: 'v2', name: '李华', gender: '男', age: 35, code: 'TRIAGE-20260922-0003', level: 2, injury: '头部外伤 / 右前臂骨折', status: '', statusTheme: '', createdAt: '' } as HrVictim,
{ id: 'v3', name: '陈小梅', gender: '女', age: 28, code: 'TRIAGE-20260922-0006', level: 3, injury: '右膝软组织挫伤', status: '', statusTheme: '', createdAt: '' } as HrVictim,
{ id: 'v4', name: '赵国强', gender: '男', age: 41, code: 'TRIAGE-20260922-0008', level: 2, injury: '胸部挤压伤 / 多发肋骨骨折', status: '', statusTheme: '', createdAt: '' } as HrVictim,
{ id: 'v5', name: '吴长胜', gender: '男', age: 61, code: 'TRIAGE-20260922-0012', level: 4, injury: '重度颅脑损伤', status: '', statusTheme: '', createdAt: '' } as HrVictim
]
/** 批量处置 · 处置类型 */
export const treatTypes : string[] = ['止血包扎', '固定制动', '静脉通路', '清创消毒', '给氧']
/* ============================ 仓管 · 扫码 ============================ */
export const scanFeedbacks : HrScanFeedback[] = [
{ theme: 'ok', icon: '✓', title: '一次性医用口罩 · 入库成功', sub: '规格 50 只/盒 · 现存 320 盒 · 张明远' } as HrScanFeedback,
{ theme: 'warn', icon: '!', title: 'N95 防护口罩 · 库存不足', sub: '当前仅 8 盒,低于预警线 20 盒,请及时补货' } as HrScanFeedback,
{ theme: 'err', icon: '✕', title: '条码未登记 · 无法识别', sub: '该编码不在物资台账中,请先建档或联系管理员' } as HrScanFeedback
]
export const scanRecords : HrScanRecord[] = [
{ name: '一次性医用口罩', time: '15:41', delta: '+20 盒', status: '已入库', theme: 'grn', icon: '✓' } as HrScanRecord,
{ name: '医用无菌纱布', time: '15:40', delta: '+12 包', status: '已入库', theme: 'grn', icon: '✓' } as HrScanRecord,
{ name: 'N95 防护口罩', time: '15:39', delta: '库存不足未入库', status: '待处理', theme: 'amb', icon: '!' } as HrScanRecord
]
/* ============================ 仓管 · 库存 ============================ */
export const stockWarn : HrStockItem[] = [
{ name: 'N95 防护口罩', spec: '现存 8 盒 · 预警线 20 盒', value: '严重不足 ', valueTheme: 'red', low: true, icon: '!' } as HrStockItem,
{ name: '肾上腺素注射液', spec: '现存 12 支 · 预警线 30 支', value: '严重不足 ', valueTheme: 'red', low: true, icon: '!' } as HrStockItem,
{ name: '一次性输液器', spec: '现存 46 套 · 预警线 50 套', value: '接近预警 ', valueTheme: 'amb', low: false, icon: '!' } as HrStockItem
]
export const stockAll : HrStockItem[] = [
{ name: '一次性医用口罩', spec: '规格 50 只/盒 · 09-20 入库', value: '320', valueTheme: 't1', low: false, icon: '▦' } as HrStockItem,
{ name: '医用无菌纱布', spec: '规格 8×10cm · 09-18 入库', value: '186', valueTheme: 't1', low: false, icon: '▦' } as HrStockItem,
{ name: '一次性输液器', spec: '规格 1.2m · 09-15 入库', value: '46', valueTheme: 'amb', low: true, icon: '▦' } as HrStockItem,
{ name: '肾上腺素注射液', spec: '规格 1mg/1ml · 09-12 入库', value: '12', valueTheme: 'red', low: true, icon: '▦' } as HrStockItem
]
export const goodsDetail : HrGoods = {
id: 'g1', name: 'N95 防护口罩', code: 'MZ-0042', spec: '规格 20 只/盒',
stock: 8, unit: '盒', warnLine: 20, statusLabel: '库存告急',
out30: 72, dailyUse: '日均消耗 2.4 盒', lastIn: '09-12 · 供应商 XX 医疗', lastInQty: '+40 盒',
trend: [38, 52, 44, 68, 56, 84, 96]
} as HrGoods
/* ============================ 仓管 · 设备 ============================ */
export const deviceList : HrDevice[] = [
{ id: 'd1', name: '便携式除颤仪(AED', code: 'SB-0018', meta: '编码 SB-0018 · 电池 82% · 03-15 维护', status: '可借', theme: 'grn', icon: 'flashlight-line', iconBg: '#EFF6FF', iconColor: '#2563EB', checkList: [] as HrDeviceCheck[], maintain: [] as HrTimelineNode[] } as HrDevice,
{ id: 'd2', name: '折叠式担架', code: 'SB-0031', meta: '编码 SB-0031 · 承重 150kg · 06-20 维护', status: '借用中', theme: 'amb', icon: 'file-list-3-line', iconBg: '#FEF3C7', iconColor: '#B45309', checkList: [] as HrDeviceCheck[], maintain: [] as HrTimelineNode[] } as HrDevice,
{ id: 'd3', name: '便携式氧气瓶(2L', code: 'SB-0055', meta: '编码 SB-0055 · 压力正常 · 09-01 检查', status: '可借', theme: 'grn', icon: 'bubble-chart-line', iconBg: '#ECFDF5', iconColor: '#059669', checkList: [] as HrDeviceCheck[], maintain: [] as HrTimelineNode[] } as HrDevice,
{ id: 'd4', name: '多参数监护仪', code: 'SB-0063', meta: '编码 SB-0063 · 屏幕故障 · 待维修', status: '维修中', theme: 'red', icon: 'monitor-line', iconBg: '#FEF2F2', iconColor: '#DC2626', checkList: [] as HrDeviceCheck[], maintain: [] as HrTimelineNode[] } as HrDevice
]
export const deviceDetail : HrDevice = {
id: 'd1', name: '便携式除颤仪(AED', code: 'SB-0018', meta: '编码 SB-0018 · 型号 HeartSave PAD',
status: '可借用', theme: 'pri', icon: '⚡', iconBg: '#EFF6FF', iconColor: '#2563EB',
checkList: [
{ title: '电池电量 ≥ 50%', sub: '当前 82% · 满足', checked: true } as HrDeviceCheck,
{ title: '电极片在有效期内', sub: '有效期至 2027-03', checked: true } as HrDeviceCheck,
{ title: '设备外观无破损', sub: '外壳 / 按键 / 屏幕正常', checked: true } as HrDeviceCheck,
{ title: '自检指示正常', sub: '开机绿灯闪烁 · 待确认', checked: false } as HrDeviceCheck,
{ title: '附件齐全(剪刀 / 剃刀 / 手套)', sub: '待确认', checked: false } as HrDeviceCheck
],
maintain: [
{ time: '03-15', title: '季度维护完成', sub: '更换电极片 · 电池校准 · 设备科 陈工', theme: 'ok' } as HrTimelineNode,
{ time: '2025-12-08', title: '电池更换', sub: '更换原厂电池组', theme: 'normal' } as HrTimelineNode
]
} as HrDevice
/* ============================ 消息中心 ============================ */
export const keeperMsgGroups : HrMsgGroup[] = [
{
title: '库存预警', count: 4, danger: true,
items: [
{ icon: '!', theme: 'red', title: 'N95 防护口罩库存告急', sub: '现存 8 盒,低于预警线 · 10 分钟前', action: '', unread: 1 } as HrMsg,
{ icon: '!', theme: 'red', title: '肾上腺素注射液库存告急', sub: '现存 12 支,低于预警线 · 1 小时前', action: '', unread: 1 } as HrMsg
]
} as HrMsgGroup,
{
title: '借用审批', count: 3, danger: false,
items: [
{ icon: '⚑', theme: 'amb', title: '张明远 申请借用「便携式除颤仪」', sub: '用途:院前急救 · 2 小时前', action: '去审批 ', unread: 0 } as HrMsg,
{ icon: '✓', theme: 'grn', title: '李承志 借用「折叠担架」已通过', sub: '预计 09-24 归还 · 昨天', action: '', unread: 0 } as HrMsg
]
} as HrMsgGroup,
{
title: '系统通知', count: 0, danger: false,
items: [
{ icon: '⚙', theme: 'gray', title: '9 月物资盘点任务已下发', sub: '09-30 前完成 · 3 天前', action: '', unread: 0 } as HrMsg
]
} as HrMsgGroup
]
export const rescuerMsgGroups : HrMsgGroup[] = [
{
title: '派单通知', count: 2, danger: true,
items: [
{ icon: '⚠', theme: 'red', title: 'P0 派单 · 城东工业园区化学品泄漏', sub: '15:38 · 距您 9.6 km · 待接收', action: '去接收 ', unread: 0 } as HrMsg,
{ icon: '⚠', theme: 'amb', title: '事件已归档 · 幸福小区老人心梗', sub: '09-21 08:12 · 系统自动归档', action: '', unread: 0 } as HrMsg
]
} as HrMsgGroup,
{
title: '系统消息', count: 3, danger: false,
items: [
{ icon: '▤', theme: 'amb', title: 'BLS 证书即将到期提醒', sub: '2026-10-15 到期 · 请完成复训', action: '', unread: 0 } as HrMsg,
{ icon: '▦', theme: 'pri', title: '新课题已上线:溺水者心肺复苏', sub: '昨天 · 急救基础 / 心肺复苏', action: '', unread: 0 } as HrMsg,
{ icon: '⚙', theme: 'gray', title: '系统将于本周日凌晨维护', sub: '09-19 · 预计 2 小时', action: '', unread: 0 } as HrMsg
]
} as HrMsgGroup
]
/* ============================ 通讯录 ============================ */
export const contactGroups : HrContactGroup[] = [
{
title: '指挥调度',
items: [
{ name: '刘建国 · 调度室主任', duty: '', phone: '值班室 8801 · 手机 138****2201', avatar: '刘', theme: 'blue', useAvatar: true, icon: '' } as HrContact,
{ name: '陈静 · 现场指挥', duty: '', phone: '值班室 8802 · 手机 139****3387', avatar: '陈', theme: 'blue', useAvatar: true, icon: '' } as HrContact
]
} as HrContactGroup,
{
title: '协作医院',
items: [
{ name: '协和医院 · 急诊创伤中心', duty: '', phone: '急诊台 010-6688 0001', avatar: '', theme: 'pri', useAvatar: false, icon: '▤' } as HrContact,
{ name: '市第一人民医院 · 急诊', duty: '', phone: '急诊台 010-6688 0022', avatar: '', theme: 'pri', useAvatar: false, icon: '▤' } as HrContact
]
} as HrContactGroup,
{
title: '本队同事',
items: [
{ name: '李承志 · 主治医师', duty: '', phone: '急诊科 · 工号 1248', avatar: '李', theme: 'gn', useAvatar: true, icon: '' } as HrContact,
{ name: '王志远 · 主管护师', duty: '', phone: '急诊科 · 工号 1252', avatar: '王', theme: 'ag', useAvatar: true, icon: '' } as HrContact
]
} as HrContactGroup
]
/* ============================ 设置 ============================ */
export const settingSwitches : HrSettingSwitch[] = [
{ title: 'P0 派单强提醒', sub: '全屏告警 + 强制震动', on: true } as HrSettingSwitch,
{ title: '任务推送', sub: '跟随调度后台的派单通知', on: true } as HrSettingSwitch,
{ title: '学习提醒', sub: '课程与考试到期提醒', on: true } as HrSettingSwitch
]
export const offlineSettingRows : HrSettingRow[] = [
{ title: '离线队列', sub: '3 条待上传', value: '' } as HrSettingRow,
{ title: '已下载学习资料', sub: '占用 8.6 MB', value: '清理 ' } as HrSettingRow
]
export const commonSettingRows : HrSettingRow[] = [
{ title: '清理缓存', sub: '当前 24.3 MB', value: '清理 ' } as HrSettingRow,
{ title: '关于我们', sub: '版本 v2.0.0', value: '' } as HrSettingRow,
{ title: '隐私政策', sub: '', value: '' } as HrSettingRow
]
/* ============================ 设计系统 ============================ */
export const designSections : HrDesignSection[] = [
{
title: '主色 / 语义色',
swatches: [
{ label: '主色', color: '#2563EB', hex: '#2563EB' } as HrSwatch,
{ label: '主色深', color: '#1D4ED8', hex: '#1D4ED8' } as HrSwatch,
{ label: '浅底', color: '#EFF6FF', hex: '#EFF6FF' } as HrSwatch,
{ label: '页面底', color: '#F3F4F6', hex: '#F3F4F6' } as HrSwatch
],
rows: [] as HrTokenRow[]
} as HrDesignSection,
{
title: '四色腕带分级(颜色 + 文字双重编码)',
swatches: [
{ label: 'I 级 红', color: '#DC2626', hex: '#DC2626' } as HrSwatch,
{ label: 'II 级 黄', color: '#F59E0B', hex: '#F59E0B' } as HrSwatch,
{ label: 'III 级 绿', color: '#10B981', hex: '#10B981' } as HrSwatch,
{ label: 'IV 级 黑', color: '#1F2937', hex: '#1F2937' } as HrSwatch
],
rows: [] as HrTokenRow[]
} as HrDesignSection,
{
title: '字号梯度',
swatches: [] as HrSwatch[],
rows: [
{ key: '标题 / 32', value: '救援事件' } as HrTokenRow,
{ key: '小标题 / 20', value: '伤员查询' } as HrTokenRow,
{ key: '正文 / 14', value: '创伤性失血' } as HrTokenRow,
{ key: '辅助 / 12', value: '14:55 建档' } as HrTokenRow,
{ key: '角标 / 10', value: 'I 级 · 红' } as HrTokenRow
]
} as HrDesignSection,
{
title: '圆角 / 间距 / 触控',
swatches: [] as HrSwatch[],
rows: [
{ key: '圆角', value: '8 / 12 / 16 / 24' } as HrTokenRow,
{ key: '间距', value: '8 点网格' } as HrTokenRow,
{ key: '主按钮高度', value: '≥ 56pt' } as HrTokenRow,
{ key: '其他可点高度', value: '≥ 44pt' } as HrTokenRow,
{ key: '正文对比度', value: '≥ 4.5:1WCAG AA' } as HrTokenRow
]
} as HrDesignSection
]