2 lines
7.5 KiB
JavaScript
2 lines
7.5 KiB
JavaScript
import{d as e,b as a,a as l,c as s,o as t,e as o,f as c,g as n,C as i,w as u,j as d,k as r,t as m,m as p,p as f,F as _,n as v,s as g,u as b,x as h,z as y,y as k,A as C,S as I}from"./index-BYZeXb15.js";import{_ as j}from"./config-doctor.TgARj_nM.js";import{c as G,C as w}from"./chat.CREdEGEh.js";import{c as O}from"./navigation.DDtmshLK.js";import{_ as S}from"./_plugin-vue_export-helper.BCo6x5W8.js";const T=""+new URL("config-hospital-BKoUC35q.png",import.meta.url).href;const x=S(e({__name:"scenario",props:{caseItem:{}},emits:["open-settings","open-profile","go-home"],setup(e,{emit:S}){const x=e,P=S,F=O(P),N=a({environment:"outpatient",ageGroup:"youth",education:"higher",personality:"calm"}),z=l([]),A=l({environments:[],ageGroups:[],educations:[],personalities:[]}),U=l(""),$=l(!1),q=l(""),B=l(!1),D=l(!1);let E=null;const H=s((()=>x.caseItem?`${x.caseItem.title}(${x.caseItem.caseNo})`:"未选择病例"));function K(e,a){N[e]=a,U.value=""}function L(){var e;x.caseItem?($.value=!0,(e={...N,caseId:x.caseItem.id,caseNo:x.caseItem.caseNo,mode:"teaching"===x.caseItem.mode?"teaching":"practice",recommendationId:U.value||void 0},G({case_id:1,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,createdAt:(new Date).toISOString()})))).then((e=>{g("clinical-thinking-scenario",e),M("模拟场景已生成"),setTimeout((()=>{D.value=!0}),450)})).catch((e=>{M(e instanceof Error?e.message:"模拟场景生成失败")})).finally((()=>{setTimeout((()=>{$.value=!1}),600)}))):M("请先选择病例")}function M(e){E&&clearTimeout(E),q.value=e,B.value=!0,b({title:e,icon:"none"}),E=setTimeout((()=>{B.value=!1}),2200)}return t((function(){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:{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:"多疑"}]}}).then((e=>{z.value=e.recommendations,A.value=e.options}))})),o((()=>{E&&clearTimeout(E)})),(e,a)=>{const l=h,s=y,t=k,o=C,g=I;return D.value?(c(),n(w,{key:0,"case-item":e.caseItem,onOpenSettings:a[0]||(a[0]=e=>P("open-settings")),onOpenProfile:i(F),onGoHome:a[1]||(a[1]=e=>P("go-home"))},null,8,["case-item","onOpenProfile"])):(c(),n(s,{key:1,class:"scenario-page"},{default:u((()=>[d(s,{class:"scenario-shell"},{default:u((()=>[d(s,{class:"hero"},{default:u((()=>[d(l,{class:"hero-image",src:T,mode:"aspectFill"}),d(s,{class:"hero-fade"})])),_:1}),d(s,{class:"director-row"},{default:u((()=>[d(s,{class:"director-avatar"},{default:u((()=>[d(l,{class:"director-image",src:j,mode:"aspectFit"})])),_:1}),d(s,{class:"speech-bubble"},{default:u((()=>[d(t,null,{default:u((()=>[r("欢迎回来!请根据您的教学目标配置临床场景。")])),_:1})])),_:1})])),_:1}),d(g,{class:"config-scroll","scroll-y":""},{default:u((()=>[d(s,{class:"selected-case"},{default:u((()=>[d(t,{class:"case-label"},{default:u((()=>[r("当前病例")])),_:1}),d(t,{class:"case-title"},{default:u((()=>[r(m(H.value),1)])),_:1})])),_:1}),d(s,{class:"section"},{default:u((()=>[d(s,{class:"section-title"},{default:u((()=>[d(s,{class:"star-icon"}),d(t,null,{default:u((()=>[r("王主任推荐")])),_:1})])),_:1}),d(s,{class:"recommend-list"},{default:u((()=>[(c(!0),p(_,null,f(z.value,(e=>(c(),n(o,{key:e.id,class:v(["recommend-card",{active:U.value===e.id}]),onClick:a=>function(e){U.value=e.id,Object.assign(N,e.defaults)}(e)},{default:u((()=>[d(s,{class:"recommend-head"},{default:u((()=>[d(t,{class:"recommend-icon"},{default:u((()=>[r(m(e.tags[0]),1)])),_:2},1024),d(t,{class:"recommend-title"},{default:u((()=>[r(m(e.title),1)])),_:2},1024)])),_:2},1024),d(t,{class:"recommend-desc"},{default:u((()=>[r(m(e.desc),1)])),_:2},1024),d(s,{class:"tag-row"},{default:u((()=>[(c(!0),p(_,null,f(e.tags,(e=>(c(),n(t,{key:e,class:v(["tag",{danger:"急躁"===e}])},{default:u((()=>[r(m(e),1)])),_:2},1032,["class"])))),128))])),_:2},1024)])),_:2},1032,["class","onClick"])))),128))])),_:1})])),_:1}),d(s,{class:"section custom-section"},{default:u((()=>[d(s,{class:"section-title"},{default:u((()=>[d(s,{class:"tune-icon"}),d(t,null,{default:u((()=>[r("自定义配置")])),_:1})])),_:1}),d(s,{class:"option-block"},{default:u((()=>[d(s,{class:"option-label"},{default:u((()=>[d(s,{class:"location-icon"}),d(t,null,{default:u((()=>[r("就诊环境")])),_:1})])),_:1}),d(s,{class:"option-grid grid-3"},{default:u((()=>[(c(!0),p(_,null,f(A.value.environments,(e=>(c(),n(o,{key:e.value,class:v(["choice",{selected:N.environment===e.value}]),onClick:a=>K("environment",e.value)},{default:u((()=>[r(m(e.label),1)])),_:2},1032,["class","onClick"])))),128))])),_:1})])),_:1}),d(s,{class:"option-block"},{default:u((()=>[d(s,{class:"option-label"},{default:u((()=>[d(s,{class:"cake-icon"}),d(t,null,{default:u((()=>[r("年龄段")])),_:1})])),_:1}),d(s,{class:"option-grid grid-4"},{default:u((()=>[(c(!0),p(_,null,f(A.value.ageGroups,(e=>(c(),n(o,{key:e.value,class:v(["choice small",{selected:N.ageGroup===e.value}]),onClick:a=>K("ageGroup",e.value)},{default:u((()=>[r(m(e.label),1)])),_:2},1032,["class","onClick"])))),128))])),_:1})])),_:1}),d(s,{class:"option-block"},{default:u((()=>[d(s,{class:"option-label"},{default:u((()=>[d(s,{class:"school-icon"}),d(t,null,{default:u((()=>[r("文化程度")])),_:1})])),_:1}),d(s,{class:"option-grid grid-3"},{default:u((()=>[(c(!0),p(_,null,f(A.value.educations,(e=>(c(),n(o,{key:e.value,class:v(["choice mini",{selected:N.education===e.value}]),onClick:a=>K("education",e.value)},{default:u((()=>[r(m(e.label),1)])),_:2},1032,["class","onClick"])))),128))])),_:1})])),_:1}),d(s,{class:"option-block personality-block"},{default:u((()=>[d(s,{class:"option-label"},{default:u((()=>[d(s,{class:"mind-icon"}),d(t,null,{default:u((()=>[r("性格")])),_:1})])),_:1}),d(s,{class:"option-grid grid-3"},{default:u((()=>[(c(!0),p(_,null,f(A.value.personalities,(e=>(c(),n(o,{key:e.value,class:v(["choice",{selected:N.personality===e.value}]),onClick:a=>K("personality",e.value)},{default:u((()=>[r(m(e.label),1)])),_:2},1032,["class","onClick"])))),128))])),_:1})])),_:1})])),_:1})])),_:1}),d(s,{class:"bottom-action"},{default:u((()=>[d(o,{class:"generate-button",disabled:$.value,onClick:L},{default:u((()=>[d(t,null,{default:u((()=>[r(m($.value?"正在生成...":"生成模拟场景"),1)])),_:1}),d(s,{class:"arrow-icon"})])),_:1},8,["disabled"])])),_:1})])),_:1}),d(s,{class:v(["toast",{visible:B.value}])},{default:u((()=>[r(m(q.value),1)])),_:1},8,["class"])])),_:1}))}}}),[["__scopeId","data-v-c7367ab5"]]),P=Object.freeze(Object.defineProperty({__proto__:null,default:x},Symbol.toStringTag,{value:"Module"}));export{x as S,T as _,P as s};
|