Files
vueapp/dist/assets/pages-scenario-scenario.m98f7F1b.js
T

2 lines
9.0 KiB
JavaScript
Raw Normal View History

2026-06-13 06:06:07 +08:00
import{d as e,a,r as l,c as s,o as t,b as o,e as n,f as c,w as i,i as u,j as r,t as d,l as m,m as v,F as p,n as f,s as _,G as g,x as b,z as h,y,A as k,S as w}from"./index-DR4MYR5F.js";import{_ as C}from"./config-doctor.TgARj_nM.js";import{r as G,a as j}from"./cases.CqwTWi6x.js";import{F as I,a as N,r as x,c as E}from"./session.EmQEGqqa.js";import{_ as T}from"./_plugin-vue_export-helper.BCo6x5W8.js";import"./auth.CseBt7py.js";const O=""+new URL("config-hospital-BKoUC35q.png",import.meta.url).href,A={environments:[{value:"outpatient",label:"门诊"},{value:"emergency",label:"急诊"},{value:"ward",label:"病房"}],ageGroups:[{value:"child",label:"儿童"},{value:"youth",label:"青年"},{value:"middle_aged",label:"中年"},{value:"elderly",label:"老年"}],educations:[{value:"primary_or_below",label:"小学及以下"},{value:"secondary",label:"中等教育"},{value:"higher",label:"高等教育"}],personalities:[{value:"calm",label:"平和"},{value:"anxious",label:"焦虑"},{value:"impatient",label:"急躁"},{value:"cooperative",label:"配合"},{value:"suspicious",label:"多疑"}]};function F(e,a,l){const s=null==e?void 0:e[a];return Array.isArray(s)?s:s&&"object"==typeof s?Object.entries(s).map((([e,a])=>({value:e,label:String(a)}))):l}async function S(e){var a;const l=await fetch(`${I}/training-config/options?case_id=${encodeURIComponent(e)}`,{method:"GET",headers:N()});if(!l.ok)throw new Error(await x(l));const s=await l.json();if("OK"!==s.code||!(null==(a=s.data)?void 0:a.recommended))throw new Error(s.message||"推荐配置加载失败");return{recommended:{environment:(t=s.data).recommended.visit_environment,ageGroup:t.recommended.age_group,education:t.recommended.education_level,personality:t.recommended.personality},recommendedLabels:{environment:t.recommended_labels.visit_environment,ageGroup:t.recommended_labels.age_group,education:t.recommended_labels.education_level,personality:t.recommended_labels.personality},options:{environments:F(t.options,"visit_environment",A.environments),ageGroups:F(t.options,"age_group",A.ageGroups),educations:F(t.options,"education_level",A.educations),personalities:F(t.options,"personality",A.personalities)}};var t}function $(e){const a=Number(e.caseId);if(Number.isInteger(a)&&a>0)return a;const l=Number(e.caseNo);if(Number.isInteger(l)&&l>0)return l;const s=e.caseId.match(/\d+/),t=s?Number(s[0]):0;if(Number.isInteger(t)&&t>0)return t;throw new Error("病例 ID 无效,无法新建会话")}const U=T(e({__name:"scenario",props:{caseItem:{}},setup(e){const I=e,N=a({environment:"outpatient",ageGroup:"youth",education:"higher",personality:"calm"}),x=l([]),T=l(A),F=l(""),U=l(!1),D=l(""),K=l(!1),L=l(!1),R=l(null);let q=null;const z=s((()=>I.caseItem||R.value)),B=s((()=>z.value?`${z.value.title}${z.value.caseNo}`:"未选择病例"));async function P(){const e=await Promise.resolve({recommendations:[{id:"typical-outpatient",title:"典型门诊病例",desc:"门诊常规病例:针对初学者设计的标准化沟通流程。",tags:["中年","配合"],defaults:{environment:"outpatient",ageGroup:"middle_aged",education:"higher",personality:"calm"}},{id:"emergency-crisis",title:"急诊重症危机",desc:"急诊危重:急性心梗紧急入院。",tags:["老年","急躁"],defaults:{environment:"emergency",ageGroup:"elderly",education:"secondary",personality:"impatient"}}],options:A});x.value=e.recommendations,T.value=e.options;try{const e=j(z.value);if(!e)return;const a=await S(e);T.value=a.options,Object.assign(N,a.recommended)}catch(a){Q(a instanceof Error?a.message:"推荐配置加载失败")}}function H(e,a){N[e]=a,F.value=""}function J(){L.value=!L.value}function M(){var e;z.value?(U.value=!0,(e={...N,caseId:z.value.id,caseNo:z.value.caseNo,mode:"teaching"===z.value.mode?"teaching":"practice",recommendationId:F.value||void 0},E({case_id:$(e),training_type:"diagnosis_treatment",mode:e.mode,score_type:"percentage",patient_config:{visit_environment:e.environment,age_group:e.ageGroup,education_level:e.education,personality:e.personality}}).then((a=>({id:a.session_code,...e,session:a,cre