/** * 医院救援管理平台 · 移动端 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:1(WCAG AA)' } as HrTokenRow ] } as HrDesignSection ]