From e5470f9f62ffec0e61e09a1961865fb7826ac2a4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E5=A4=A9=E9=AA=84?= <5307576@qq.com> Date: Mon, 1 Jun 2026 15:35:17 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=96=B0=E5=A2=9E=E6=95=99=E5=AD=A6?= =?UTF-8?q?=E6=A8=A1=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/cases.ts | 23 +- pages.json | 7 + pages/cases/cases.vue | 82 +++- pages/teaching/teaching.vue | 845 ++++++++++++++++++++++++++++++++++++ 4 files changed, 947 insertions(+), 10 deletions(-) create mode 100644 pages/teaching/teaching.vue diff --git a/api/cases.ts b/api/cases.ts index 5a94d56..f24a4ec 100644 --- a/api/cases.ts +++ b/api/cases.ts @@ -1,3 +1,5 @@ +export type CaseMode = 'training' | 'teaching' + export type ClinicalCase = { id: string title: string @@ -8,6 +10,7 @@ export type ClinicalCase = { scene: string caseNo: string tone: 'blue' | 'teal' | 'pink' | 'orange' | 'purple' | 'green' + mode: CaseMode } export function fetchCaseList(): Promise { @@ -21,7 +24,8 @@ export function fetchCaseList(): Promise { department: '风湿免疫科', scene: '门诊部', caseNo: '31190016', - tone: 'blue' + tone: 'blue', + mode: 'training' }, { id: 'case-31180002', @@ -32,7 +36,8 @@ export function fetchCaseList(): Promise { department: '风湿免疫科', scene: '住院部', caseNo: '31180002', - tone: 'teal' + tone: 'teal', + mode: 'training' }, { id: 'case-2238015', @@ -43,18 +48,20 @@ export function fetchCaseList(): Promise { department: '妇科', scene: '住院部', caseNo: '2238015', - tone: 'pink' + tone: 'pink', + mode: 'training' }, { id: 'case-1006004', title: '持续胸痛3小时', - patientName: '毕波涛', + patientName: '陈先生', gender: '男', age: 60, department: '心血管内科', scene: '住院部', caseNo: '1006004', - tone: 'orange' + tone: 'orange', + mode: 'teaching' }, { id: 'case-31190042', @@ -65,7 +72,8 @@ export function fetchCaseList(): Promise { department: '呼吸内科', scene: '普通门诊', caseNo: '31190042', - tone: 'purple' + tone: 'purple', + mode: 'training' }, { id: 'case-2238019', @@ -76,7 +84,8 @@ export function fetchCaseList(): Promise { department: '泌尿外科', scene: '急诊留观', caseNo: '2238019', - tone: 'green' + tone: 'green', + mode: 'training' } ]) } diff --git a/pages.json b/pages.json index 9e9c099..7089a88 100644 --- a/pages.json +++ b/pages.json @@ -49,6 +49,13 @@ "navigationBarTitleText": "临床对话" } }, + { + "path": "pages/teaching/teaching", + "style": { + "navigationStyle": "custom", + "navigationBarTitleText": "教学模式" + } + }, { "path": "pages/diagnosis/diagnosis", "style": { diff --git a/pages/cases/cases.vue b/pages/cases/cases.vue index b167f34..c843ff1 100644 --- a/pages/cases/cases.vue +++ b/pages/cases/cases.vue @@ -6,6 +6,13 @@ @open-profile="emit('open-profile')" @go-home="emit('go-home')" /> + @@ -40,6 +47,7 @@ v-for="item in filteredCases" :key="item.id" class="case-card" + :class="`mode-${item.mode}`" @click="selectCase(item)" > @@ -55,6 +63,10 @@ 病例编号: {{ item.caseNo }} + + + {{ getModeLabel(item.mode) }} + @@ -71,8 +83,10 @@ + +