Files
vueapp/dist/assets/pages-cases-cases.BgMZzNL8.js
T
2026-06-13 06:06:07 +08:00

2 lines
8.6 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import{d as e,r as a,a as l,c as t,J as s,o as u,b as c,e as i,f as n,w as o,i as r,E as d,j as v,t as f,l as m,m as p,F as _,g as y,n as h,z as g,A as k,y as b,I as C,S as T,s as w,G as j}from"./index-DR4MYR5F.js";import{o as $}from"./uni-app.es.CXV8m51O.js";import{f as S}from"./cases.CqwTWi6x.js";import{c as x,a as N,b as z}from"./navigation.DbARx0MO.js";import{_ as B}from"./_plugin-vue_export-helper.BCo6x5W8.js";import"./auth.CseBt7py.js";const I=B(e({__name:"cases",emits:["open-settings","open-profile","go-home"],setup(e,{emit:B}){const I=B,V=x(I),E=N(I),M=z(I),A=a([]),D=a(""),F=a(!1),G=a(!1),J=a(!1),U=a(""),q=a(0),H=a(1),K=a(10),L=a("recommended"),O=a(""),P=a(""),Q=a(""),R=a(!1),W=l({case_type:"",difficulty:""});let X=null,Y=null,Z=0;const ee={recommended:{title:"开始训练",subtitle:"基于您的训练画像智能推荐病例",placeholder:"搜索病例标题、科室、主诉"},specialty:{title:"专项强化",subtitle:"按配置科室聚焦专项病例",placeholder:"搜索专项病例"},weak:{title:"薄弱环节",subtitle:"优先呈现训练分数低于 70 分的病例",placeholder:"搜索待补强病例"},teaching:{title:"教学互动",subtitle:"练习模式与教学互动模式病例",placeholder:"搜索教学互动病例"},"teacher-task":{title:"教师任务",subtitle:"老师配置的针对性任务训练",placeholder:"搜索教师任务病例"}},ae=t((()=>"teaching"===L.value||"teacher-task"===L.value?[]:[{label:"全部类型",value:""},{label:"练习模式",value:"practice"},{label:"教学互动",value:"teaching"}])),le=[{label:"全部难度",value:""},{label:"简单",value:"easy"},{label:"中等",value:"medium"},{label:"困难",value:"hard"}],te=t((()=>ee[L.value])),se=t((()=>A.value.length<q.value));function ue(e,a){const l=e?{easy:"简单",medium:"中等",hard:"困难"}[e]||e:"难度未设置";return a?`${l} · ${a}`:l}function ce(){Y&&clearTimeout(Y),ne()}async function ie(e=1){var a;const l=1===e;if(F.value&&l||G.value)return;const t=++Z;F.value=l,G.value=!l,J.value=!1,U.value="";try{const s=await S(L.value,function(e){return{search:D.value.trim(),case_type:"teaching"===L.value||"teacher-task"===L.value?void 0:W.case_type,difficulty:W.difficulty,department:O.value,page:e,page_size:K.value}}(e));if(t!==Z)return;A.value=l?s.results:[...A.value,...s.results],q.value=s.count,H.value=e,P.value="specialty"===L.value?(null==(a=A.value.find((e=>e.department)))?void 0:a.department)||P.value:""}catch(s){if(t!==Z)return;J.value=l,U.value=s instanceof Error?s.message:"病例列表加载失败",function(e){X&&clearTimeout(X);Q.value=e,R.value=!0,X=setTimeout((()=>{R.value=!1}),2200)}(U.value)}finally{t===Z&&(F.value=!1,G.value=!1)}}function ne(){H.value=1,A.value=[],q.value=0,ie(1)}function oe(){F.value||G.value||!se.value||ie(H.value+1)}return s(D,(()=>{Y&&clearTimeout(Y),Y=setTimeout((()=>{ne()}),500)})),$((e=>{const a=null==e?void 0:e.source,l=null==e?void 0:e.mode,t=null==e?void 0:e.department,s=Number(null==e?void 0:e.page_size);var u;"recommended"===(u=a)||"specialty"===u||"weak"===u||"teaching"===u||"teacher-task"===u?L.value=a:"teaching"===l&&(L.value="teaching"),"string"==typeof t&&t.trim()&&(O.value=t),Number.isInteger(s)&&s>0&&(K.value=s)})),u(ie),c((()=>{X&&clearTimeout(X),Y&&clearTimeout(Y)})),(e,a)=>{const l=g,t=k,s=b,u=C,c=T;return i(),n(l,{class:"cases-page"},{default:o((()=>[r(l,{class:"case-shell"},{default:o((()=>[r(l,{class:"case-header"},{default:o((()=>[r(t,{class:"icon-button","aria-label":"设置",onClick:d(E)},{default:o((()=>[r(l,{class:"settings-icon"})])),_:1},8,["onClick"]),r(t,{class:"icon-button home-button","aria-label":"首页",onClick:d(M)},{default:o((()=>[r(l,{class:"home-icon"})])),_:1},8,["onClick"]),r(l,{class:"header-spacer"}),r(t,{class:"icon-button","aria-label":"个人中心",onClick:d(V)},{default:o((()=>[r(l,{class:"account-icon"})])),_:1},8,["onClick"])])),_:1}),r(c,{class:"case-content","scroll-y":"",onScrolltolower:oe},{default:o((()=>[r(l,{class:"list-hero"},{default:o((()=>[r(s,{class:"list-title"},{default:o((()=>[v(f(te.value.title),1)])),_:1}),r(s,{class:"list-subtitle"},{default:o((()=>[v(f(te.value.subtitle),1)])),_:1})])),_:1}),r(l,{class:"search-row"},{default:o((()=>[r(l,{class:"search-box"},{default:o((()=>[r(l,{class:"search-icon"}),r(u,{class:"search-input",modelValue:D.value,"onUpdate:modelValue":a[0]||(a[0]=e=>D.value=e),type:"text",placeholder:te.value.placeholder,"placeholder-class":"search-placeholder","confirm-type":"search",onConfirm:ce},null,8,["modelValue","placeholder"])])),_:1}),r(t,{class:"search-button",disabled:F.value,onClick:ce},{default:o((()=>[v("搜索")])),_:1},8,["disabled"])])),_:1}),ae.value.length?(i(),n(l,{key:0,class:"filter-row"},{default:o((()=>[(i(!0),m(_,null,p(ae.value,(e=>(i(),n(t,{key:e.value,class:h(["filter-chip",{active:W.case_type===e.value}]),onClick:a=>{return l=e.value,void(W.case_type!==l&&(W.case_type=l,ne()));var l}},{default:o((()=>[v(f(e.label),1)])),_:2},1032,["class","onClick"])))),128))])),_:1})):y("",!0),r(l,{class:"filter-row compact"},{default:o((()=>[(i(),m(_,null,p(le,(e=>r(t,{key:e.value,class:h(["filter-chip",{active:W.difficulty===e.value}]),onClick:a=>{return l=e.value,void(W.difficulty!==l&&(W.difficulty=l,ne()));var l}},{default:o((()=>[v(f(e.label),1)])),_:2},1032,["class","onClick"]))),64))])),_:1}),r(l,{class:"summary-row"},{default:o((()=>[r(s,null,{default:o((()=>[v(f(F.value&&0===A.value.length?"病例加载中...":`${q.value} 个病例`),1)])),_:1}),P.value?(i(),n(s,{key:0},{default:o((()=>[v("科室:"+f(P.value),1)])),_:1})):y("",!0)])),_:1}),r(l,{class:"case-list"},{default:o((()=>[(i(!0),m(_,null,p(A.value,(e=>(i(),n(l,{key:e.id,class:h(["case-card",`mode-${e.mode}`]),onClick:a=>function(e){w("clinical-thinking-selected-case",e),w("clinical-thinking-case-mode",e.mode),j({url:"teaching"===e.mode?"/pages/teaching/teaching":"/pages/scenario/scenario"})}(e)},{default:o((()=>[r(l,{class:"case-main"},{default:o((()=>[r(l,{class:h(["patient-avatar",`avatar-${e.tone}`])},{default:o((()=>[r(s,null,{default:o((()=>[v(f(e.patientName.slice(0,1)),1)])),_:2},1024)])),_:2},1032,["class"]),r(l,{class:"case-info"},{default:o((()=>{var a;return[r(s,{class:"case-title"},{default:o((()=>[v(f(e.title),1)])),_:2},1024),r(s,{class:"case-meta"},{default:o((()=>[v(f(e.gender)+""+f(e.age||"-")+"岁,"+f(e.department)+""+f(e.caseTypeDisplay||e.scene),1)])),_:2},1024),e.description?(i(),n(s,{key:0,class:"case-desc"},{default:o((()=>[v(f(e.description),1)])),_:2},1024)):y("",!0),(null==(a=e.competencyTags)?void 0:a.length)?(i(),n(l,{key:1,class:"tag-row"},{default:o((()=>[(i(!0),m(_,null,p(e.competencyTags.slice(0,3),(e=>(i(),n(s,{key:e,class:"case-tag"},{default:o((()=>[v(f(e),1)])),_:2},1024)))),128))])),_:2},1024)):y("",!0)]})),_:2},1024)])),_:2},1024),r(l,{class:"case-footer"},{default:o((()=>[r(s,{class:"case-no"},{default:o((()=>[v("病例编号: "+f(e.caseNo),1)])),_:2},1024),r(l,{class:h(["mode-badge",`mode-badge-${e.mode}`])},{default:o((()=>[r(l,{class:h(["mode-icon",`mode-icon-${e.mode}`])},null,8,["class"]),r(s,null,{default:o((()=>{return[v(f((a=e.mode,"teaching"===a?"教学模式":"训练模式")),1)];var a})),_:2},1024)])),_:2},1032,["class"])])),_:2},1024),r(l,{class:"stat-row"},{default:o((()=>[r(s,null,{default:o((()=>[v(f(ue(e.difficulty,e.difficultyScore)),1)])),_:2},1024),e.estimatedMinutes?(i(),n(s,{key:0},{default:o((()=>[v(f(e.estimatedMinutes)+"分钟",1)])),_:2},1024)):y("",!0),null!==e.myBestScore&&void 0!==e.myBestScore?(i(),n(s,{key:1},{default:o((()=>[v("最高分 "+f(e.myBestScore),1)])),_:2},1024)):y("",!0),null!==e.myTrainCount&&void 0!==e.myTrainCount?(i(),n(s,{key:2},{default:o((()=>[v("已练 "+f(e.myTrainCount)+" 次",1)])),_:2},1024)):y("",!0)])),_:2},1024)])),_:2},1032,["class","onClick"])))),128)),F.value&&0===A.value.length?(i(),n(l,{key:0,class:"empty-state"},{default:o((()=>[r(l,{class:"spinner"}),r(s,null,{default:o((()=>[v("正在获取病例列表...")])),_:1})])),_:1})):J.value?(i(),n(l,{key:1,class:"empty-state"},{default:o((()=>[r(s,null,{default:o((()=>[v(f(U.value||"病例列表加载失败"),1)])),_:1}),r(t,{class:"retry-button",onClick:ne},{default:o((()=>[v("重新加载")])),_:1})])),_:1})):0===A.value.length?(i(),n(l,{key:2,class:"empty-state"},{default:o((()=>[r(s,null,{default:o((()=>[v("暂无匹配病例")])),_:1})])),_:1})):G.value?(i(),n(l,{key:3,class:"load-more-state"},{default:o((()=>[r(s,null,{default:o((()=>[v("继续加载中...")])),_:1})])),_:1})):se.value?y("",!0):(i(),n(l,{key:4,class:"load-more-state"},{default:o((()=>[r(s,null,{default:o((()=>[v("已显示全部病例")])),_:1})])),_:1}))])),_:1})])),_:1})])),_:1}),r(l,{class:h(["toast",{visible:R.value}])},{default:o((()=>[v(f(Q.value),1)])),_:1},8,["class"])])),_:1})}}}),[["__scopeId","data-v-f34bc4ed"]]);export{I as default};