feat: 联调对话功能
This commit is contained in:
Vendored
+1
File diff suppressed because one or more lines are too long
Vendored
-1
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Vendored
+1
@@ -0,0 +1 @@
|
||||
import{C as e}from"./index-CpNRQgjE.js";function t(){return Promise.resolve([{id:"case-31190016",title:"间断四肢多关节肿痛5年,加重1个月",patientName:"郭爱和",gender:"男",age:43,department:"风湿免疫科",scene:"门诊部",caseNo:"31190016",tone:"blue",mode:"training"},{id:"case-31180002",title:"右膝关节疼痛8年,腰背部疼痛2年",patientName:"索航",gender:"男",age:51,department:"风湿免疫科",scene:"住院部",caseNo:"31180002",tone:"teal",mode:"training"},{id:"case-2238015",title:"阴道不规则流血4月。",patientName:"韩爱利",gender:"女",age:52,department:"妇科",scene:"住院部",caseNo:"2238015",tone:"pink",mode:"training"},{id:"case-1006004",title:"持续胸痛3小时",patientName:"陈先生",gender:"男",age:60,department:"心血管内科",scene:"住院部",caseNo:"1006004",tone:"orange",mode:"teaching"},{id:"case-31190042",title:"咳嗽、咳痰10余年,加重1周",patientName:"厉明",gender:"男",age:52,department:"呼吸内科",scene:"普通门诊",caseNo:"31190042",tone:"purple",mode:"training"},{id:"case-2238019",title:"尿频、尿急、尿痛3天",patientName:"刘晓元",gender:"女",age:25,department:"泌尿外科",scene:"急诊留观",caseNo:"2238019",tone:"green",mode:"training"}])}function n(){const t=e("clinical-thinking-selected-case");return t&&"object"==typeof t?t:null}export{t as f,n as r};
|
||||
File diff suppressed because one or more lines are too long
Vendored
-1
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Vendored
+1
File diff suppressed because one or more lines are too long
Vendored
-1
File diff suppressed because one or more lines are too long
Vendored
+1
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Vendored
-1
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Vendored
+1
File diff suppressed because one or more lines are too long
+1
-1
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Vendored
-1
@@ -1 +0,0 @@
|
||||
import{Q as o,J as n}from"./index-BcNbz4lX.js";function e(e){var r;const i=n(),l=Boolean(null==(r=null==i?void 0:i.vnode.props)?void 0:r.onOpenProfile);return function(){l?e("open-profile"):o({url:"/pages/profile/profile"})}}export{e as c};
|
||||
Vendored
+1
@@ -0,0 +1 @@
|
||||
import{G as o,D as n,L as e}from"./index-CpNRQgjE.js";function i(n){var i;const l=e(),r=Boolean(null==(i=null==l?void 0:l.vnode.props)?void 0:i.onOpenProfile);return function(){r?n("open-profile"):o({url:"/pages/profile/profile"})}}function l(n){var i;const l=e(),r=Boolean(null==(i=null==l?void 0:l.vnode.props)?void 0:i.onOpenSettings);return function(){r?n("open-settings"):o({url:"/pages/config/config"})}}function r(o){var i;const l=e(),r=Boolean(null==(i=null==l?void 0:l.vnode.props)?void 0:i.onGoHome);return function(){r?o("go-home"):n({url:"/pages/home/home"})}}export{l as a,r as b,i as c};
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+1
@@ -0,0 +1 @@
|
||||
import{J as a,K as e,L as s,O as l,d as t,r as c,c as o,o as n,b as i,e as u,f as d,w as r,i as m,E as f,l as _,m as p,F as g,j as h,g as v,t as b,n as k,y as C,z as j,I as x,x as y,S as N,s as w,G as $}from"./index-CpNRQgjE.js";import{f as L}from"./cases.BlouN7SM.js";import{c as V,a as I,b as S}from"./navigation.CsipbD6y.js";import{_ as z}from"./_plugin-vue_export-helper.BCo6x5W8.js";const E=((l,t=0)=>(t,c=s())=>{!a&&e(l,t,c)})(l,2),F=z(t({__name:"cases",emits:["open-settings","open-profile","go-home"],setup(a,{emit:e}){const s=e,l=V(s),t=I(s),z=S(s),F=c([]),G=c(""),J=c(""),K=c(!1),O=c(""),U=o((()=>{const a=G.value.trim().toLowerCase(),e=O.value?F.value.filter((a=>a.mode===O.value)):F.value;return a?e.filter((e=>[e.title,e.patientName,e.gender,String(e.age),e.department,e.scene,e.caseNo].some((e=>e.toLowerCase().includes(a))))):e}));return E((a=>{const e=null==a?void 0:a.mode;"teaching"!==e&&"training"!==e||(O.value=e)})),n((function(){L().then((a=>{F.value=a}))})),i((()=>{})),(a,e)=>{const s=C,c=j,o=x,n=y,i=N;return u(),d(s,{class:"cases-page"},{default:r((()=>[m(s,{class:"case-shell"},{default:r((()=>[m(s,{class:"case-header"},{default:r((()=>[m(c,{class:"icon-button","aria-label":"设置",onClick:f(t)},{default:r((()=>[m(s,{class:"settings-icon"})])),_:1},8,["onClick"]),m(c,{class:"icon-button home-button","aria-label":"首页",onClick:f(z)},{default:r((()=>[m(s,{class:"home-icon"})])),_:1},8,["onClick"]),m(s,{class:"header-spacer"}),m(c,{class:"icon-button","aria-label":"个人中心",onClick:f(l)},{default:r((()=>[m(s,{class:"account-icon"})])),_:1},8,["onClick"])])),_:1}),m(i,{class:"case-content","scroll-y":""},{default:r((()=>[m(s,{class:"search-row"},{default:r((()=>[m(s,{class:"search-box"},{default:r((()=>[m(s,{class:"search-icon"}),m(o,{class:"search-input",modelValue:G.value,"onUpdate:modelValue":e[0]||(e[0]=a=>G.value=a),type:"text",placeholder:"科室、主诉模糊搜索","placeholder-class":"search-placeholder"},null,8,["modelValue"])])),_:1})])),_:1}),m(s,{class:"case-list"},{default:r((()=>[(u(!0),_(g,null,p(U.value,(a=>(u(),d(s,{key:a.id,class:k(["case-card",`mode-${a.mode}`]),onClick:e=>function(a){w("clinical-thinking-selected-case",a),w("clinical-thinking-case-mode",a.mode),$({url:"teaching"===a.mode?"/pages/teaching/teaching":"/pages/scenario/scenario"})}(a)},{default:r((()=>[m(s,{class:"case-main"},{default:r((()=>[m(s,{class:k(["patient-avatar",`avatar-${a.tone}`])},{default:r((()=>[m(n,null,{default:r((()=>[h(b(a.patientName.slice(0,1)),1)])),_:2},1024)])),_:2},1032,["class"]),m(s,{class:"case-info"},{default:r((()=>[m(n,{class:"case-title"},{default:r((()=>[h(b(a.title),1)])),_:2},1024),m(n,{class:"case-meta"},{default:r((()=>[h(b(a.patientName)+","+b(a.gender)+","+b(a.age)+"岁,"+b(a.department)+","+b(a.scene),1)])),_:2},1024)])),_:2},1024)])),_:2},1024),m(s,{class:"case-footer"},{default:r((()=>[m(n,{class:"case-no"},{default:r((()=>[h("病例编号: "+b(a.caseNo),1)])),_:2},1024),m(s,{class:k(["mode-badge",`mode-badge-${a.mode}`])},{default:r((()=>[m(s,{class:k(["mode-icon",`mode-icon-${a.mode}`])},null,8,["class"]),m(n,null,{default:r((()=>{return[h(b((e=a.mode,"teaching"===e?"教学模式":"训练模式")),1)];var e})),_:2},1024)])),_:2},1032,["class"])])),_:2},1024)])),_:2},1032,["class","onClick"])))),128)),0===U.value.length?(u(),d(s,{key:0,class:"empty-state"},{default:r((()=>[m(n,null,{default:r((()=>[h("暂无匹配病例")])),_:1})])),_:1})):v("",!0)])),_:1})])),_:1})])),_:1}),m(s,{class:k(["toast",{visible:K.value}])},{default:r((()=>[h(b(J.value),1)])),_:1},8,["class"])])),_:1})}}}),[["__scopeId","data-v-64c7a872"]]);export{F as default};
|
||||
-1
File diff suppressed because one or more lines are too long
+1
File diff suppressed because one or more lines are too long
-1
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+1
@@ -0,0 +1 @@
|
||||
import{d as s,a,r as e,o as l,b as t,e as i,f as n,w as o,i as c,E as u,j as d,g as r,t as f,l as m,m as g,F as _,n as b,s as p,G as h,y as v,z as k,x as y,u as j}from"./index-CpNRQgjE.js";import{_ as C}from"./config-doctor.TgARj_nM.js";import{c as I,a as w}from"./navigation.CsipbD6y.js";import{_ as x}from"./_plugin-vue_export-helper.BCo6x5W8.js";const T=x(s({__name:"home",emits:["open-settings","open-profile"],setup(s,{emit:x}){const T=x,A=I(T),M=w(T),D=a({greeting:"下午好,医生。",highlight:"让我们继续提升您的临床思维能力吧。",remainingModules:3,doctorName:"王主任"}),E=[{title:"精准补强·薄弱环节训练",icon:"trend-icon"},{title:"实战进阶·科室专项训练",icon:"notes-icon"},{title:"新手入门·教学互动模式模式训练",icon:"school-icon"},{title:"精益管理·老师针对性任务训练",icon:"admin-icon"}],F=e(!1),N=e(""),O=e(!1);let P=null;function S(){F.value||(F.value=!0,Promise.resolve({sessionId:`mock-session-${Date.now()}`,startedAt:(new Date).toISOString()}).then((s=>{p("clinical-thinking-session",s),h({url:"/pages/matching/matching"})})).catch((s=>{!function(s){P&&clearTimeout(P);N.value=s,O.value=!0,P=setTimeout((()=>{O.value=!1}),2200)}(s instanceof Error?s.message:"进入训练失败")})).finally((()=>{setTimeout((()=>{F.value=!1}),300)})))}function z(){h({url:"/pages/learning-assistant/learning-assistant"})}return l((function(){Promise.resolve({greeting:"下午好,医生。",highlight:"让我们继续提升您的临床思维能力吧。",remainingModules:3,doctorName:"王主任"}).then((s=>{Object.assign(D,s)}))})),t((()=>{P&&clearTimeout(P)})),(s,a)=>{const e=v,l=k,t=y,p=j;return i(),n(e,{class:"home-page"},{default:o((()=>[c(e,{class:"home-shell"},{default:o((()=>[c(e,{class:"top-bar"},{default:o((()=>[c(l,{class:"icon-button","aria-label":"配置",onClick:u(M)},{default:o((()=>[c(e,{class:"settings-icon"})])),_:1},8,["onClick"]),c(e,{class:"top-spacer"}),c(l,{class:"icon-button","aria-label":"个人中心",onClick:u(A)},{default:o((()=>[c(e,{class:"account-icon"})])),_:1},8,["onClick"])])),_:1}),c(e,{class:"home-main"},{default:o((()=>[c(e,{class:"speech-bubble"},{default:o((()=>[c(t,{class:"bubble-copy"},{default:o((()=>[d("下午好,医生。准备好开始今天的")])),_:1}),c(t,{class:"bubble-strong"},{default:o((()=>[d("带教模拟")])),_:1}),c(t,{class:"bubble-copy"},{default:o((()=>[d(",精进")])),_:1}),c(t,{class:"bubble-highlight"},{default:o((()=>[d("临床思维")])),_:1}),c(t,{class:"bubble-copy"},{default:o((()=>[d("了吗?")])),_:1})])),_:1}),c(e,{class:"doctor-stage"},{default:o((()=>[c(e,{class:"doctor-shadow"}),c(p,{class:"director-image",src:C,mode:"aspectFit"})])),_:1}),c(e,{class:"training-panel"},{default:o((()=>[c(e,{class:"primary-action"},{default:o((()=>[c(l,{class:"start-button",disabled:F.value,onClick:S},{default:o((()=>[F.value?(i(),n(e,{key:0,class:"spinner"})):r("",!0),c(t,null,{default:o((()=>[d(f(F.value?"正在进入...":"开始训练"),1)])),_:1})])),_:1},8,["disabled"]),c(t,{class:"remaining"},{default:o((()=>[d("今日剩余:"+f(D.remainingModules)+"个模块",1)])),_:1})])),_:1}),c(e,{class:"module-grid"},{default:o((()=>[(i(),m(_,null,g(E,(s=>c(l,{key:s.title,class:"module-card",onClick:S},{default:o((()=>[c(e,{class:b(["module-icon",s.icon])},null,8,["class"]),c(t,{class:"module-title"},{default:o((()=>[d(f(s.title),1)])),_:2},1024)])),_:2},1024))),64))])),_:1}),c(e,{class:"assistant-actions"},{default:o((()=>[c(l,{class:"assistant-button",onClick:z},{default:o((()=>[c(e,{class:"assistant-icon chat-icon"}),c(t,null,{default:o((()=>[d("AI 学习助手(医院知识库)")])),_:1})])),_:1}),c(l,{class:"assistant-button disabled",disabled:"","aria-disabled":"true"},{default:o((()=>[c(e,{class:"assistant-icon forum-icon"}),c(t,null,{default:o((()=>[d("方老师AI教学助手沟通")])),_:1})])),_:1})])),_:1})])),_:1})])),_:1})])),_:1}),c(e,{class:b(["toast",{visible:O.value}])},{default:o((()=>[d(f(N.value),1)])),_:1},8,["class"])])),_:1})}}}),[["__scopeId","data-v-cfd573f5"]]);export{T as default};
|
||||
-1
@@ -1 +0,0 @@
|
||||
import{d as s,b as e,a,o as t,e as l,f as n,g as o,C as i,w as c,j as u,k as r,h as d,t as m,m as p,p as f,F as g,n as b,s as _,u as h,z as v,A as j,y as k,x as y}from"./index-BcNbz4lX.js";import{_ as O}from"./config-doctor.TgARj_nM.js";import{c as C}from"./navigation.C2H9AjnS.js";import{C as P}from"./chat.BJUnN6Cc.js";import I from"./pages-learning-assistant-learning-assistant.vx1Z8Ujc.js";import S from"./pages-matching-matching.CuL-3Fys.js";import{_ as w}from"./_plugin-vue_export-helper.BCo6x5W8.js";import"./pages-diagnosis-diagnosis.m6R6jwOM.js";import"./pages-treatment-treatment.Dvv4RUD4.js";import"./pages-assessment-assessment.4dFS83cn.js";import"./pages-cases-cases.RDgMig8l.js";import"./scenario.CjEHAMEH.js";import"./pages-teaching-teaching.B94VaxdH.js";const x=w(s({__name:"home",emits:["open-settings","open-profile"],setup(s,{emit:w}){const x=w,A=C(x),T=e({greeting:"下午好,医生。",highlight:"让我们继续提升您的临床思维能力吧。",remainingModules:3,doctorName:"王主任"}),G=[{title:"精准补强·薄弱环节训练",icon:"trend-icon"},{title:"实战进阶·科室专项训练",icon:"notes-icon"},{title:"新手入门·教学互动模式模式训练",icon:"school-icon"},{title:"精益管理·老师针对性任务训练",icon:"admin-icon"}],H=a(!1),M=a(""),D=a(!1),F=a(!1),N=a(!1),z=a(!1);let E=null;function $(){H.value||(H.value=!0,Promise.resolve({sessionId:`mock-session-${Date.now()}`,startedAt:(new Date).toISOString()}).then((s=>{_("clinical-thinking-session",s),F.value=!0})).catch((s=>{!function(s){E&&clearTimeout(E);M.value=s,D.value=!0,h({title:s,icon:"none"}),E=setTimeout((()=>{D.value=!1}),2200)}(s instanceof Error?s.message:"进入训练失败")})).finally((()=>{setTimeout((()=>{H.value=!1}),300)})))}function q(){N.value=!0}return t((function(){Promise.resolve({greeting:"下午好,医生。",highlight:"让我们继续提升您的临床思维能力吧。",remainingModules:3,doctorName:"王主任"}).then((s=>{Object.assign(T,s)}))})),l((()=>{E&&clearTimeout(E)})),(s,e)=>{const a=v,t=j,l=k,_=y;return F.value?(n(),o(S,{key:0,onOpenSettings:e[0]||(e[0]=s=>x("open-settings")),onOpenProfile:i(A),onGoHome:e[1]||(e[1]=s=>F.value=!1)},null,8,["onOpenProfile"])):N.value?(n(),o(I,{key:1,onOpenSettings:e[2]||(e[2]=s=>x("open-settings")),onOpenProfile:i(A),onGoHome:e[3]||(e[3]=s=>N.value=!1)},null,8,["onOpenProfile"])):z.value?(n(),o(P,{key:2,"case-item":null,onOpenSettings:e[4]||(e[4]=s=>x("open-settings")),onOpenProfile:i(A),onGoHome:e[5]||(e[5]=s=>z.value=!1)},null,8,["onOpenProfile"])):(n(),o(a,{key:3,class:"home-page"},{default:c((()=>[u(a,{class:"home-shell"},{default:c((()=>[u(a,{class:"top-bar"},{default:c((()=>[u(t,{class:"icon-button","aria-label":"配置",onClick:e[6]||(e[6]=s=>x("open-settings"))},{default:c((()=>[u(a,{class:"settings-icon"})])),_:1}),u(a,{class:"top-spacer"}),u(t,{class:"icon-button","aria-label":"个人中心",onClick:i(A)},{default:c((()=>[u(a,{class:"account-icon"})])),_:1},8,["onClick"])])),_:1}),u(a,{class:"home-main"},{default:c((()=>[u(a,{class:"speech-bubble"},{default:c((()=>[u(l,{class:"bubble-copy"},{default:c((()=>[r("下午好,医生。准备好开始今天的")])),_:1}),u(l,{class:"bubble-strong"},{default:c((()=>[r("带教模拟")])),_:1}),u(l,{class:"bubble-copy"},{default:c((()=>[r(",精进")])),_:1}),u(l,{class:"bubble-highlight"},{default:c((()=>[r("临床思维")])),_:1}),u(l,{class:"bubble-copy"},{default:c((()=>[r("了吗?")])),_:1})])),_:1}),u(a,{class:"doctor-stage"},{default:c((()=>[u(a,{class:"doctor-shadow"}),u(_,{class:"director-image",src:O,mode:"aspectFit"})])),_:1}),u(a,{class:"training-panel"},{default:c((()=>[u(a,{class:"primary-action"},{default:c((()=>[u(t,{class:"start-button",disabled:H.value,onClick:$},{default:c((()=>[H.value?(n(),o(a,{key:0,class:"spinner"})):d("",!0),u(l,null,{default:c((()=>[r(m(H.value?"正在进入...":"开始训练"),1)])),_:1})])),_:1},8,["disabled"]),u(l,{class:"remaining"},{default:c((()=>[r("今日剩余:"+m(T.remainingModules)+"个模块",1)])),_:1})])),_:1}),u(a,{class:"module-grid"},{default:c((()=>[(n(),p(g,null,f(G,(s=>u(t,{key:s.title,class:"module-card",onClick:$},{default:c((()=>[u(a,{class:b(["module-icon",s.icon])},null,8,["class"]),u(l,{class:"module-title"},{default:c((()=>[r(m(s.title),1)])),_:2},1024)])),_:2},1024))),64))])),_:1}),u(a,{class:"assistant-actions"},{default:c((()=>[u(t,{class:"assistant-button",onClick:q},{default:c((()=>[u(a,{class:"assistant-icon chat-icon"}),u(l,null,{default:c((()=>[r("AI 学习助手(医院知识库)")])),_:1})])),_:1}),u(t,{class:"assistant-button disabled",disabled:"","aria-disabled":"true"},{default:c((()=>[u(a,{class:"assistant-icon forum-icon"}),u(l,null,{default:c((()=>[r("方老师AI教学助手沟通")])),_:1})])),_:1})])),_:1})])),_:1})])),_:1})])),_:1}),u(a,{class:b(["toast",{visible:D.value}])},{default:c((()=>[r(m(M.value),1)])),_:1},8,["class"])])),_:1}))}}}),[["__scopeId","data-v-0c6a4ade"]]);export{x as default};
|
||||
-1
File diff suppressed because one or more lines are too long
+1
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1 +0,0 @@
|
||||
import{d as s,b as e,a,o as t,e as l,f as n,g as r,C as o,w as i,j as c,m as u,p as g,F as p,k as d,t as m,E as f,z as b,y as v,x as _,n as h}from"./index-BcNbz4lX.js";import{_ as y}from"./config-doctor.TgARj_nM.js";import{c as j}from"./navigation.C2H9AjnS.js";import x from"./pages-cases-cases.RDgMig8l.js";import{_ as $}from"./_plugin-vue_export-helper.BCo6x5W8.js";import"./scenario.CjEHAMEH.js";import"./chat.BJUnN6Cc.js";import"./pages-diagnosis-diagnosis.m6R6jwOM.js";import"./pages-treatment-treatment.Dvv4RUD4.js";import"./pages-assessment-assessment.4dFS83cn.js";import"./pages-teaching-teaching.B94VaxdH.js";const k=$(s({__name:"matching",emits:["open-settings","open-profile","go-home"],setup(s,{emit:$}){const k=$,I=j(k),M=e({message:"王主任正在为您智能匹配病例",subtitle:"正在通过大模型计算最适合您的临床案例库...",progressTarget:92,tags:[]}),T=a([]),w=a(0),O=a(!1);let P=0,F=null,z=null;function C(){Promise.resolve({message:"王主任正在为您智能匹配病例",subtitle:"正在通过大模型计算最适合您的临床案例库...",progressTarget:92,tags:[{label:"薄弱环节",tone:"secondary"},{label:"主治医级别",tone:"primary"},{label:"高匹配度",tone:"tertiary"},{label:"基于历史偏好",tone:"neutral"}]}).then((s=>{Object.assign(M,s),function(){z&&clearInterval(z);w.value=0,z=setInterval((()=>{if(w.value>=M.progressTarget)return z&&clearInterval(z),z=null,void setTimeout((()=>{O.value=!0}),700);w.value=Math.min(M.progressTarget,w.value+3*Math.random())}),600)}()}))}function D(){const s=P++,e=256*Math.random(),a=256*Math.random(),t=150*(Math.random()-.5),l=150*(Math.random()-.5),n=2+3*Math.random();T.value.push({id:s,style:{left:`${e}px`,top:`${a}px`,"--particle-x":`${t}px`,"--particle-y":`${l}px`,animationDuration:`${n}s`}}),setTimeout((()=>{T.value=T.value.filter((e=>e.id!==s))}),1e3*n)}return t((()=>{C(),function(){for(let s=0;s<12;s+=1)D();F=setInterval(D,300)}()})),l((()=>{F&&clearInterval(F),z&&clearInterval(z)})),(s,e)=>{const a=b,t=v,l=_;return O.value?(n(),r(x,{key:0,onOpenSettings:e[0]||(e[0]=s=>k("open-settings")),onOpenProfile:o(I),onGoHome:e[1]||(e[1]=s=>k("go-home"))},null,8,["onOpenProfile"])):(n(),r(a,{key:1,class:"matching-page"},{default:i((()=>[c(a,{class:"matching-shell"},{default:i((()=>[c(a,{class:"top-visual"},{default:i((()=>[c(a,{class:"network"},{default:i((()=>[c(a,{class:"ring ring-large"}),c(a,{class:"ring ring-middle"}),c(a,{class:"ring ring-small"}),c(a,{class:"node node-top"}),c(a,{class:"node node-left"}),c(a,{class:"node node-right"}),(n(!0),u(p,null,g(T.value,(s=>(n(),r(a,{key:s.id,class:"particle",style:f(s.style)},null,8,["style"])))),128))])),_:1})])),_:1}),c(a,{class:"middle-visual"},{default:i((()=>[c(a,{class:"match-bubble"},{default:i((()=>[c(t,null,{default:i((()=>[d(m(M.message),1)])),_:1}),c(t,{class:"typing-dots"}),c(a,{class:"bubble-tail"})])),_:1}),c(a,{class:"director-card"},{default:i((()=>[c(l,{class:"director-image",src:y,mode:"aspectFit"})])),_:1}),c(a,{class:"intelligence-area"},{default:i((()=>[c(a,{class:"scan-circle"},{default:i((()=>[c(a,{class:"pulse-ring ring-one"}),c(a,{class:"pulse-ring ring-two"}),c(a,{class:"brain-core"},{default:i((()=>[c(a,{class:"scan-bar"}),c(a,{class:"brain-icon"})])),_:1})])),_:1}),(n(!0),u(p,null,g(M.tags,((s,e)=>(n(),r(a,{key:s.label,class:h(["float-tag",[`tag-${s.tone}`,`tag-pos-${e}`]])},{default:i((()=>[c(t,null,{default:i((()=>[d(m(s.label),1)])),_:2},1024)])),_:2},1032,["class"])))),128))])),_:1})])),_:1}),c(a,{class:"bottom-progress"},{default:i((()=>[c(a,{class:"progress-track"},{default:i((()=>[c(a,{class:"progress-fill",style:f({width:`${w.value}%`})},null,8,["style"])])),_:1}),c(t,{class:"progress-subtitle"},{default:i((()=>[d(m(M.subtitle),1)])),_:1}),c(a,{class:"security-icon"})])),_:1})])),_:1})])),_:1}))}}}),[["__scopeId","data-v-deb9eb1c"]]);export{k as default};
|
||||
@@ -0,0 +1 @@
|
||||
import{d as a,a as s,r as e,o as l,b as t,e as r,f as n,w as c,i as o,l as i,m as u,F as d,j as g,t as p,H as f,p as m,y as _,x as b,u as v,n as h}from"./index-CpNRQgjE.js";import{_ as y}from"./config-doctor.TgARj_nM.js";import{_ as x}from"./_plugin-vue_export-helper.BCo6x5W8.js";const $=x(a({__name:"matching",setup(a){const x=s({message:"王主任正在为您智能匹配病例",subtitle:"正在通过大模型计算最适合您的临床案例库...",progressTarget:92,tags:[]}),$=e([]),I=e(0);let M=0,w=null,j=null;function k(){Promise.resolve({message:"王主任正在为您智能匹配病例",subtitle:"正在通过大模型计算最适合您的临床案例库...",progressTarget:92,tags:[{label:"薄弱环节",tone:"secondary"},{label:"主治医级别",tone:"primary"},{label:"高匹配度",tone:"tertiary"},{label:"基于历史偏好",tone:"neutral"}]}).then((a=>{Object.assign(x,a),function(){j&&clearInterval(j);I.value=0;const a=Date.now();j=setInterval((()=>{const s=Date.now()-a,e=Math.min(1,s/1e4);if(I.value=Math.round(x.progressTarget*e),e>=1)return j&&clearInterval(j),j=null,void m({url:"/pages/cases/cases"})}),100)}()}))}function T(){const a=M++,s=256*Math.random(),e=256*Math.random(),l=150*(Math.random()-.5),t=150*(Math.random()-.5),r=2+3*Math.random();$.value.push({id:a,style:{left:`${s}px`,top:`${e}px`,"--particle-x":`${l}px`,"--particle-y":`${t}px`,animationDuration:`${r}s`}}),setTimeout((()=>{$.value=$.value.filter((s=>s.id!==a))}),1e3*r)}return l((()=>{k(),function(){for(let a=0;a<12;a+=1)T();w=setInterval(T,300)}()})),t((()=>{w&&clearInterval(w),j&&clearInterval(j)})),(a,s)=>{const e=_,l=b,t=v;return r(),n(e,{class:"matching-page"},{default:c((()=>[o(e,{class:"matching-shell"},{default:c((()=>[o(e,{class:"top-visual"},{default:c((()=>[o(e,{class:"network"},{default:c((()=>[o(e,{class:"ring ring-large"}),o(e,{class:"ring ring-middle"}),o(e,{class:"ring ring-small"}),o(e,{class:"node node-top"}),o(e,{class:"node node-left"}),o(e,{class:"node node-right"}),(r(!0),i(d,null,u($.value,(a=>(r(),n(e,{key:a.id,class:"particle",style:f(a.style)},null,8,["style"])))),128))])),_:1})])),_:1}),o(e,{class:"middle-visual"},{default:c((()=>[o(e,{class:"match-bubble"},{default:c((()=>[o(l,null,{default:c((()=>[g(p(x.message),1)])),_:1}),o(l,{class:"typing-dots"}),o(e,{class:"bubble-tail"})])),_:1}),o(e,{class:"director-card"},{default:c((()=>[o(t,{class:"director-image",src:y,mode:"aspectFit"})])),_:1}),o(e,{class:"intelligence-area"},{default:c((()=>[o(e,{class:"scan-circle"},{default:c((()=>[o(e,{class:"pulse-ring ring-one"}),o(e,{class:"pulse-ring ring-two"}),o(e,{class:"brain-core"},{default:c((()=>[o(e,{class:"scan-bar"}),o(e,{class:"brain-icon"})])),_:1})])),_:1}),(r(!0),i(d,null,u(x.tags,((a,s)=>(r(),n(e,{key:a.label,class:h(["float-tag",[`tag-${a.tone}`,`tag-pos-${s}`]])},{default:c((()=>[o(l,null,{default:c((()=>[g(p(a.label),1)])),_:2},1024)])),_:2},1032,["class"])))),128))])),_:1})])),_:1}),o(e,{class:"bottom-progress"},{default:c((()=>[o(e,{class:"progress-track"},{default:c((()=>[o(e,{class:"progress-fill",style:f({width:`${I.value}%`})},null,8,["style"])])),_:1}),o(l,{class:"progress-subtitle"},{default:c((()=>[g(p(x.subtitle),1)])),_:1}),o(e,{class:"security-icon"})])),_:1})])),_:1})])),_:1})}}}),[["__scopeId","data-v-a610ab33"]]);export{$ as default};
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+1
-1
@@ -1 +1 @@
|
||||
import{d as a,a as e,c as s,e as l,f as t,g as c,w as r,j as d,L as o,k as u,m as n,p as i,F as f,h as p,n as _,t as m,M as b,N as h,P as y,z as v,A as g,y as k,I as x,S as j,l as w,Q as C}from"./index-BcNbz4lX.js";import{_ as V}from"./_plugin-vue_export-helper.BCo6x5W8.js";const I=V(a({__name:"profile-records",setup(a){const V=e(""),I=e(""),z=e(!1),A=[{label:"总病例",value:"12"},{label:"总时长",value:"128h"},{label:"平均正确率",value:"92%",secondary:!0}],F=[{title:"急性心肌梗死",department:"心内科",date:"2023-11-20",score:"98",abbr:"心",tone:"primary"},{title:"缺血性脑卒中",department:"神经内科",date:"2023-11-18",score:"85",abbr:"神",tone:"secondary"},{title:"重症肺炎伴呼吸衰竭",department:"呼吸科",date:"2023-11-15",score:"92",abbr:"肺",tone:"tertiary"},{title:"急性胰腺炎",department:"消化内科",date:"2023-11-12",score:"78",abbr:"消",tone:"primary",dimmed:!0},{title:"糖尿病肾病五期",department:"肾内科",date:"2023-11-10",score:"95",abbr:"肾",tone:"secondary",dimmed:!0}],L=s((()=>{const a=V.value.trim();return a?F.filter((e=>[e.title,e.department,e.date].some((e=>e.includes(a))))):F}));function M(){"function"==typeof b&&b().length>1?h():y({url:"/pages/profile/profile"})}function N(){C({url:"/pages/assessment/assessment"})}return l((()=>{})),(a,e)=>{const s=v,l=g,b=k,h=x,y=j;return t(),c(s,{class:"records-page"},{default:r((()=>[d(s,{class:"records-shell"},{default:r((()=>[o("header",{class:"top-bar"},[d(l,{class:"icon-button","aria-label":"返回",onClick:M},{default:r((()=>[d(s,{class:"back-icon"})])),_:1}),d(b,{class:"page-title"},{default:r((()=>[u("学习记录")])),_:1})]),d(y,{class:"records-scroll","scroll-y":""},{default:r((()=>[o("main",{class:"records-main"},[o("section",{class:"stats-grid"},[(t(),n(f,null,i(A,(a=>d(s,{key:a.label,class:"stat-card"},{default:r((()=>[d(b,{class:"stat-label"},{default:r((()=>[u(m(a.label),1)])),_:2},1024),d(b,{class:_(["stat-value",{secondary:a.secondary}])},{default:r((()=>[u(m(a.value),1)])),_:2},1032,["class"])])),_:2},1024))),64))]),o("section",{class:"search-section"},[d(s,{class:"search-field"},{default:r((()=>[d(s,{class:"search-icon"}),d(h,{modelValue:V.value,"onUpdate:modelValue":e[0]||(e[0]=a=>V.value=a),class:"search-input",placeholder:"搜索病例标题或科室...","placeholder-class":"search-placeholder",type:"text"},null,8,["modelValue"])])),_:1})]),o("section",{class:"history-section"},[d(b,{class:"section-title"},{default:r((()=>[u("最近训练")])),_:1}),d(s,{class:"record-list"},{default:r((()=>[(t(!0),n(f,null,i(L.value,(a=>(t(),c(s,{key:a.title,class:_(["record-card",{dimmed:a.dimmed}]),onClick:N},{default:r((()=>[d(s,{class:_(["case-icon-wrap",a.tone])},{default:r((()=>[d(b,{class:"case-icon-text"},{default:r((()=>[u(m(a.abbr),1)])),_:2},1024)])),_:2},1032,["class"]),d(s,{class:"case-copy"},{default:r((()=>[d(b,{class:"case-title"},{default:r((()=>[u(m(a.title),1)])),_:2},1024),d(s,{class:"case-meta"},{default:r((()=>[d(b,null,{default:r((()=>[u(m(a.department),1)])),_:2},1024),d(b,{class:"dot"},{default:r((()=>[u("•")])),_:1}),d(b,null,{default:r((()=>[u(m(a.date),1)])),_:2},1024)])),_:2},1024)])),_:2},1024),d(s,{class:"score-block"},{default:r((()=>[d(s,{class:"score-row"},{default:r((()=>[d(b,{class:"score-value"},{default:r((()=>[u(m(a.score),1)])),_:2},1024),d(b,{class:"score-unit"},{default:r((()=>[u("分")])),_:1})])),_:2},1024),d(l,{class:"report-button",onClick:w(N,["stop"])},{default:r((()=>[d(b,null,{default:r((()=>[u("查看报告")])),_:1}),d(s,{class:"small-chevron"})])),_:1})])),_:2},1024)])),_:2},1032,["class"])))),128)),0===L.value.length?(t(),c(s,{key:0,class:"empty-state"},{default:r((()=>[d(b,null,{default:r((()=>[u("没有找到匹配的训练记录")])),_:1})])),_:1})):p("",!0)])),_:1})]),d(s,{class:"bottom-hint"},{default:r((()=>[d(b,null,{default:r((()=>[u("已经到底啦")])),_:1})])),_:1})])])),_:1}),d(s,{class:_(["toast",{visible:z.value}])},{default:r((()=>[u(m(I.value),1)])),_:1},8,["class"])])),_:1})])),_:1})}}}),[["__scopeId","data-v-192e7c16"]]);export{I as default};
|
||||
import{d as a,r as e,c as s,b as l,e as t,f as c,w as r,i as d,N as o,j as u,l as n,m as i,F as f,g as _,n as p,t as m,P as b,Q as h,D as y,y as v,z as g,x as k,I as x,S as j,k as w,G as C}from"./index-CpNRQgjE.js";import{_ as V}from"./_plugin-vue_export-helper.BCo6x5W8.js";const I=V(a({__name:"profile-records",setup(a){const V=e(""),I=e(""),z=e(!1),D=[{label:"总病例",value:"12"},{label:"总时长",value:"128h"},{label:"平均正确率",value:"92%",secondary:!0}],F=[{title:"急性心肌梗死",department:"心内科",date:"2023-11-20",score:"98",abbr:"心",tone:"primary"},{title:"缺血性脑卒中",department:"神经内科",date:"2023-11-18",score:"85",abbr:"神",tone:"secondary"},{title:"重症肺炎伴呼吸衰竭",department:"呼吸科",date:"2023-11-15",score:"92",abbr:"肺",tone:"tertiary"},{title:"急性胰腺炎",department:"消化内科",date:"2023-11-12",score:"78",abbr:"消",tone:"primary",dimmed:!0},{title:"糖尿病肾病五期",department:"肾内科",date:"2023-11-10",score:"95",abbr:"肾",tone:"secondary",dimmed:!0}],G=s((()=>{const a=V.value.trim();return a?F.filter((e=>[e.title,e.department,e.date].some((e=>e.includes(a))))):F}));function N(){"function"==typeof b&&b().length>1?h():y({url:"/pages/profile/profile"})}function P(){C({url:"/pages/assessment/assessment"})}return l((()=>{})),(a,e)=>{const s=v,l=g,b=k,h=x,y=j;return t(),c(s,{class:"records-page"},{default:r((()=>[d(s,{class:"records-shell"},{default:r((()=>[o("header",{class:"top-bar"},[d(l,{class:"icon-button","aria-label":"返回",onClick:N},{default:r((()=>[d(s,{class:"back-icon"})])),_:1}),d(b,{class:"page-title"},{default:r((()=>[u("学习记录")])),_:1})]),d(y,{class:"records-scroll","scroll-y":""},{default:r((()=>[o("main",{class:"records-main"},[o("section",{class:"stats-grid"},[(t(),n(f,null,i(D,(a=>d(s,{key:a.label,class:"stat-card"},{default:r((()=>[d(b,{class:"stat-label"},{default:r((()=>[u(m(a.label),1)])),_:2},1024),d(b,{class:p(["stat-value",{secondary:a.secondary}])},{default:r((()=>[u(m(a.value),1)])),_:2},1032,["class"])])),_:2},1024))),64))]),o("section",{class:"search-section"},[d(s,{class:"search-field"},{default:r((()=>[d(s,{class:"search-icon"}),d(h,{modelValue:V.value,"onUpdate:modelValue":e[0]||(e[0]=a=>V.value=a),class:"search-input",placeholder:"搜索病例标题或科室...","placeholder-class":"search-placeholder",type:"text"},null,8,["modelValue"])])),_:1})]),o("section",{class:"history-section"},[d(b,{class:"section-title"},{default:r((()=>[u("最近训练")])),_:1}),d(s,{class:"record-list"},{default:r((()=>[(t(!0),n(f,null,i(G.value,(a=>(t(),c(s,{key:a.title,class:p(["record-card",{dimmed:a.dimmed}]),onClick:P},{default:r((()=>[d(s,{class:p(["case-icon-wrap",a.tone])},{default:r((()=>[d(b,{class:"case-icon-text"},{default:r((()=>[u(m(a.abbr),1)])),_:2},1024)])),_:2},1032,["class"]),d(s,{class:"case-copy"},{default:r((()=>[d(b,{class:"case-title"},{default:r((()=>[u(m(a.title),1)])),_:2},1024),d(s,{class:"case-meta"},{default:r((()=>[d(b,null,{default:r((()=>[u(m(a.department),1)])),_:2},1024),d(b,{class:"dot"},{default:r((()=>[u("•")])),_:1}),d(b,null,{default:r((()=>[u(m(a.date),1)])),_:2},1024)])),_:2},1024)])),_:2},1024),d(s,{class:"score-block"},{default:r((()=>[d(s,{class:"score-row"},{default:r((()=>[d(b,{class:"score-value"},{default:r((()=>[u(m(a.score),1)])),_:2},1024),d(b,{class:"score-unit"},{default:r((()=>[u("分")])),_:1})])),_:2},1024),d(l,{class:"report-button",onClick:w(P,["stop"])},{default:r((()=>[d(b,null,{default:r((()=>[u("查看报告")])),_:1}),d(s,{class:"small-chevron"})])),_:1})])),_:2},1024)])),_:2},1032,["class"])))),128)),0===G.value.length?(t(),c(s,{key:0,class:"empty-state"},{default:r((()=>[d(b,null,{default:r((()=>[u("没有找到匹配的训练记录")])),_:1})])),_:1})):_("",!0)])),_:1})]),d(s,{class:"bottom-hint"},{default:r((()=>[d(b,null,{default:r((()=>[u("已经到底啦")])),_:1})])),_:1})])])),_:1}),d(s,{class:p(["toast",{visible:z.value}])},{default:r((()=>[u(m(I.value),1)])),_:1},8,["class"])])),_:1})])),_:1})}}}),[["__scopeId","data-v-15539840"]]);export{I as default};
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+1
-1
File diff suppressed because one or more lines are too long
Vendored
+1
File diff suppressed because one or more lines are too long
Vendored
-1
File diff suppressed because one or more lines are too long
Vendored
-1
File diff suppressed because one or more lines are too long
Vendored
+1
@@ -0,0 +1 @@
|
||||
import{C as e,s as t}from"./index-CpNRQgjE.js";const n="/fastapi/api/v1";function s(){const t=e("clinical-thinking-access-token");if("string"!=typeof t||!t.trim())throw new Error("登录已过期,请重新登录");return t}function o(e="application/json"){return{"Content-Type":"application/json",Accept:e,Authorization:`Bearer ${s()}`,"X-Entry-Scene":"vue_frontend"}}async function a(e){const t=await e.text().catch((()=>""));if(!t)return`请求失败(${e.status})`;try{const e=JSON.parse(t),n=e.message||e.detail||e.error;if("string"==typeof n&&n.trim())return n}catch{}return t}function r(){const t=e("clinical-thinking-scenario");return t&&"object"==typeof t?t:null}function i(){var e,t;const n=null==(t=null==(e=r())?void 0:e.session)?void 0:t.session_id;if("number"==typeof n&&Number.isInteger(n)&&n>0)return n;throw new Error("未找到当前会话,请先生成模拟场景")}function c(e){const n=r();(null==n?void 0:n.session)&&t("clinical-thinking-scenario",{...n,session:{...n.session,status:e}})}async function f(e){var t;const n=await fetch("/fastapi/api/v1/sessions",{method:"POST",headers:o(),body:JSON.stringify(e)});if(!n.ok)throw new Error(await a(n));const s=await n.json();if("OK"!==s.code||!(null==(t=s.data)?void 0:t.session_id))throw new Error(s.message||"新建会话失败");return s.data}async function d(e){var t;const n=await fetch(`/fastapi/api/v1/sessions/${e}/complete-inquiry`,{method:"POST",headers:o()});if(!n.ok)throw new Error(await a(n));const s=await n.json();if("OK"!==s.code||!(null==(t=s.data)?void 0:t.session_id))throw new Error(s.message||"完成采集失败");return s.data}async function l(e,t,n,s){var r,i,c;const f=await fetch(`/fastapi/api/v1/sessions/${e}/chat/stream`,{method:"POST",headers:o("text/event-stream"),body:JSON.stringify({message:t}),signal:s});if(!f.ok||!f.body)throw new Error(await a(f));const d=f.body.getReader(),l=new TextDecoder;let u="",w=!1;for(;;){const{value:e,done:t}=await d.read();if(t)break;u+=l.decode(e,{stream:!0});const s=u.split("\n\n");u=s.pop()||"";for(const o of s){const e=null==(r=o.match(/^event:\s*(.+)$/m))?void 0:r[1],t=null==(i=o.match(/^data:\s*(.+)$/m))?void 0:i[1];if(!e||!t)continue;const s=JSON.parse(t);if("message_delta"===e){const e=s.delta;"string"==typeof e&&n.onDelta(e)}else if("message_done"===e)w=!0,null==(c=n.onDone)||c.call(n,s);else if("error"===e)throw new Error("string"==typeof s.message?s.message:"AI 流式回复异常")}}if(!w)throw new Error("AI 流式回复未正常结束,请重试")}async function u(e,t,n,s){var r,i,c;const f={last_user_message:t,scope:"current_conversation"},d=await fetch(`/fastapi/api/v1/sessions/${e}/hints/stream`,{method:"POST",headers:o("text/event-stream"),body:JSON.stringify(f),signal:s});if(!d.ok||!d.body)throw new Error(await a(d));const l=d.body.getReader(),u=new TextDecoder;let w="",h=!1;for(;;){const{value:e,done:t}=await l.read();if(t)break;w+=u.decode(e,{stream:!0});const s=w.split("\n\n");w=s.pop()||"";for(const o of s){const e=null==(r=o.match(/^event:\s*(.+)$/m))?void 0:r[1],t=null==(i=o.match(/^data:\s*(.+)$/m))?void 0:i[1];if(!e||!t)continue;const s=JSON.parse(t);if("hint_delta"===e){const e=s.delta;"string"==typeof e&&n.onDelta(e)}else if("hint_done"===e)h=!0,null==(c=n.onDone)||c.call(n,s);else if("error"===e)throw new Error("string"==typeof s.message?s.message:"练习提示生成失败,请稍后重试")}}if(!h)throw new Error("练习提示未正常结束,请重试")}export{n as F,o as a,r as b,f as c,d,u as e,i as f,a as r,l as s,c as u};
|
||||
File diff suppressed because one or more lines are too long
Vendored
+1
File diff suppressed because one or more lines are too long
Vendored
-1
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user