550 lines
34 KiB
Plaintext
550 lines
34 KiB
Plaintext
/**
|
||
* 医院救援管理平台 · 移动端 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
|
||
]
|