This commit is contained in:
YI FANG
2025-11-26 09:50:49 +08:00
commit 8155c9f95d
43 changed files with 7687 additions and 0 deletions

138
src/data/mockData.ts Normal file
View File

@@ -0,0 +1,138 @@
export interface ExamClient {
id: string;
name: string;
gender: '男' | '女';
age: number;
level: string;
packageName: string;
status: '体检中' | '已签到' | '用餐';
elapsed: string;
checkedItems: string[];
pendingItems: string[];
timeSlot: '上午' | '下午';
vipType: '高客' | '普客';
signStatus: '已登记' | '未登记';
customerType: '团客' | '散客';
guidePrinted?: boolean;
addonCount?: number;
[key: string]: unknown;
}
export type ExamModalTab = 'detail' | 'sign' | 'addon' | 'print';
export type QuickActionType = 'none' | 'meal' | 'vip' | 'delivery' | 'note';
export const HOME_STATS: [string, number][] = [
['今日预约', 80],
['签到人数', 60],
['在检人数', 25],
['打印导检单', 40],
['已完成人数', 30],
];
export const REVENUE_STATS: [string, string][] = [
['体检收入', '¥ 86,000'],
['加项收入', '¥ 12,400'],
['整体收入', '¥ 98,400'],
['目标收入', '¥ 120,000'],
['完成百分比', '82%'],
['缺口', '¥ 21,600'],
];
export const B1_ROWS: [string, string, number, number, number, number][] = [
['B超1', '张医生', 6, 2, 2, 15],
['B超2', '李医生', 5, 2, 1, 14],
['B超3', '王医生', 4, 2, 2, 16],
['耳鼻喉', '王医生', 10, 3, 2, 10],
['外科', '周医生', 8, 3, 2, 20],
];
export const B1_SUMMARY = {
totalClients: B1_ROWS.reduce((s, r) => s + r[2] + r[3] + r[4], 0),
waiting: B1_ROWS.reduce((s, r) => s + r[4], 0),
inExam: B1_ROWS.reduce((s, r) => s + r[3], 0),
};
export const NORTH3_ROWS: [string, number, number][] = [
['刘医生', 15, 9],
['高医生', 12, 7],
['马医生', 18, 10],
];
export const NORTH3_SUMMARY = {
totalDoctor: NORTH3_ROWS.length,
totalAssigned: NORTH3_ROWS.reduce((s, r) => s + r[1], 0),
consult: NORTH3_ROWS.reduce((s, r) => s + r[2], 0),
};
export const EXAM_CLIENTS: ExamClient[] = [
{
id: 'A001',
name: '张伟',
gender: '男',
age: 35,
level: 'VIP',
packageName: '高端入职体检套餐',
status: '体检中',
elapsed: '00:45',
checkedItems: ['签到', '更衣', '预检', '抽血'],
pendingItems: ['家医面诊', 'B超'],
timeSlot: '上午',
vipType: '高客',
signStatus: '已登记',
customerType: '团客',
guidePrinted: true,
addonCount: 2,
},
{
id: 'A002',
name: '李静',
gender: '女',
age: 29,
level: '普通',
packageName: '基础体检套餐',
status: '已签到',
elapsed: '00:10',
checkedItems: ['签到'],
pendingItems: ['更衣', '预检', '抽血'],
timeSlot: '上午',
vipType: '普客',
signStatus: '已登记',
customerType: '散客',
guidePrinted: false,
addonCount: 0,
},
{
id: 'A003',
name: '孙丽',
gender: '女',
age: 31,
level: 'VIP',
packageName: '健康管理套餐',
status: '用餐',
elapsed: '00:50',
checkedItems: ['签到', '更衣', '预检', '抽血', '家医面诊'],
pendingItems: ['B超'],
timeSlot: '下午',
vipType: '高客',
signStatus: '已登记',
customerType: '团客',
guidePrinted: true,
addonCount: 1,
},
];
export const EXAM_STATS: [string, number][] = [
['预约人数', EXAM_CLIENTS.length],
['已签到', EXAM_CLIENTS.filter((c) => c.status === '已签到').length],
['体检中', EXAM_CLIENTS.filter((c) => c.status === '体检中').length],
['用餐', EXAM_CLIENTS.filter((c) => c.status === '用餐').length],
];
export const EXAM_TAGS = ['全部', '上午', '下午', '高客', '普客', '已登记', '未登记', '散客', '团客'] as const;
export const BOOKING_DOCTORS = [
{ id: 'zhang', name: '张主任', dept: '内科 · 主任医师', period: '上午', total: 20, remain: 8 },
{ id: 'wang', name: '王教授', dept: '外科 · 主任医师', period: '下午', total: 16, remain: 10 },
];