Files
vueapp/dist/assets/pages-profile-profile-records.-O6EFJFn.js
T
2026-06-13 06:06:07 +08:00

2 lines
5.4 KiB
JavaScript

import{d as e,r as a,c as l,J as s,o as t,b as u,e as c,f as r,w as o,i as n,K as i,j as d,l as v,m as f,F as m,t as _,g as p,n as h,L as g,M as b,q as y,z as k,A as $,y as x,I as T,S as w,k as C,s as S,G as j}from"./index-DR4MYR5F.js";import{a as I}from"./profile.e1L0urBE.js";import{_ as N}from"./_plugin-vue_export-helper.BCo6x5W8.js";import"./auth.CseBt7py.js";const F=N(e({__name:"profile-records",setup(e){const N=a(""),F=a(""),D=a(!1),V=a([]),M=a({total_cases:0,total_hours:0,avg_accuracy:0}),U=a(1),q=a(0),z=a(!1),A=a(!1),B=a(!1),E=a(!1);let G=null,J=null,K=0;const L=l((()=>[{label:"总病例",value:ee(M.value.total_cases)},{label:"总时长",value:`${ee(M.value.total_hours)}h`},{label:"平均正确率",value:`${ee(M.value.avg_accuracy)}%`,secondary:!0}])),R=l((()=>V.value.map(((e,a)=>({id:e.record_id,title:e.case_title||"未命名病例",department:e.department||"未标注科室",date:Z(e.trained_at),score:ee(e.score),abbr:ae(e),tone:le(a),dimmed:a>2}))))),Y=l((()=>A.value&&!B.value?"训练记录加载中...":E.value?"训练记录加载失败,请稍后重试":N.value.trim()?"没有找到匹配的训练记录":"暂无训练记录")),H=l((()=>A.value&&B.value?"加载更多...":z.value?"上拉加载更多":V.value.length>0?"已经到底啦":""));function O(){"function"==typeof g&&g().length>1?b():y({url:"/pages/profile/profile"})}function P(e){e?(S("clinical-thinking-current-evaluation-id",e),j({url:`/pages/assessment/assessment?evaluation_id=${encodeURIComponent(String(e))}`})):X("未找到报告 ID")}async function Q(e=1,a=!1){const l=++K;A.value=!0,a||(E.value=!1,z.value=!1);try{const s=await I({search:N.value.trim(),page:e});if(l!==K)return;V.value=a?V.value.concat(s.results||[]):s.results||[],M.value=s.summary||M.value,q.value=s.count||V.value.length,U.value=e,z.value=Boolean(s.next)||V.value.length<q.value,B.value=!0,E.value=!1}catch(s){if(l!==K)return;E.value=!0,a||(V.value=[]),X(s instanceof Error?s.message:"训练记录加载失败")}finally{l===K&&(A.value=!1)}}function W(){z.value&&!A.value&&Q(U.value+1,!0)}function X(e){G&&clearTimeout(G),F.value=e,D.value=!0,G=setTimeout((()=>{D.value=!1}),2200)}function Z(e){if(!e)return"--";const a=new Date(e);if(Number.isNaN(a.getTime()))return e;const l=`${a.getMonth()+1}`.padStart(2,"0"),s=`${a.getDate()}`.padStart(2,"0");return`${a.getFullYear()}-${l}-${s}`}function ee(e){return Number.isFinite(e)?Number.isInteger(e)?String(e):e.toFixed(1):"0"}function ae(e){return(e.department||e.case_title||"训").trim().slice(0,1)||"训"}function le(e){const a=["primary","secondary","tertiary"];return a[e%a.length]}return s(N,(()=>{J&&clearTimeout(J),J=setTimeout((()=>{Q(1)}),350)})),t((()=>{Q(1)})),u((()=>{G&&clearTimeout(G),J&&clearTimeout(J)})),(e,a)=>{const l=k,s=$,t=x,u=T,g=w;return c(),r(l,{class:"records-page"},{default:o((()=>[n(l,{class:"records-shell"},{default:o((()=>[i("header",{class:"top-bar"},[n(s,{class:"icon-button","aria-label":"返回",onClick:O},{default:o((()=>[n(l,{class:"back-icon"})])),_:1}),n(t,{class:"page-title"},{default:o((()=>[d("学习记录")])),_:1})]),n(g,{class:"records-scroll","scroll-y":"",onScrolltolower:W},{default:o((()=>[i("main",{class:"records-main"},[i("section",{class:"stats-grid"},[(c(!0),v(m,null,f(L.value,(e=>(c(),r(l,{key:e.label,class:"stat-card"},{default:o((()=>[n(t,{class:"stat-label"},{default:o((()=>[d(_(e.label),1)])),_:2},1024),n(t,{class:h(["stat-value",{secondary:e.secondary}])},{default:o((()=>[d(_(e.value),1)])),_:2},1032,["class"])])),_:2},1024)))),128))]),i("section",{class:"search-section"},[n(l,{class:"search-field"},{default:o((()=>[n(l,{class:"search-icon"}),n(u,{modelValue:N.value,"onUpdate:modelValue":a[0]||(a[0]=e=>N.value=e),class:"search-input",placeholder:"搜索病例标题或科室...","placeholder-class":"search-placeholder",type:"text"},null,8,["modelValue"])])),_:1})]),i("section",{class:"history-section"},[n(t,{class:"section-title"},{default:o((()=>[d("最近训练")])),_:1}),n(l,{class:"record-list"},{default:o((()=>[(c(!0),v(m,null,f(R.value,(e=>(c(),r(l,{key:e.id,class:h(["record-card",{dimmed:e.dimmed}]),onClick:a=>P(e.id)},{default:o((()=>[n(l,{class:h(["case-icon-wrap",e.tone])},{default:o((()=>[n(t,{class:"case-icon-text"},{default:o((()=>[d(_(e.abbr),1)])),_:2},1024)])),_:2},1032,["class"]),n(l,{class:"case-copy"},{default:o((()=>[n(t,{class:"case-title"},{default:o((()=>[d(_(e.title),1)])),_:2},1024),n(l,{class:"case-meta"},{default:o((()=>[n(t,null,{default:o((()=>[d(_(e.department),1)])),_:2},1024),n(t,{class:"dot"},{default:o((()=>[d("•")])),_:1}),n(t,null,{default:o((()=>[d(_(e.date),1)])),_:2},1024)])),_:2},1024)])),_:2},1024),n(l,{class:"score-block"},{default:o((()=>[n(l,{class:"score-row"},{default:o((()=>[n(t,{class:"score-value"},{default:o((()=>[d(_(e.score),1)])),_:2},1024),n(t,{class:"score-unit"},{default:o((()=>[d("分")])),_:1})])),_:2},1024),n(s,{class:"report-button",onClick:C((a=>P(e.id)),["stop"])},{default:o((()=>[n(t,null,{default:o((()=>[d("查看报告")])),_:1}),n(l,{class:"small-chevron"})])),_:2},1032,["onClick"])])),_:2},1024)])),_:2},1032,["class","onClick"])))),128)),0===R.value.length?(c(),r(l,{key:0,class:"empty-state"},{default:o((()=>[n(t,null,{default:o((()=>[d(_(Y.value),1)])),_:1})])),_:1})):p("",!0)])),_:1})]),n(l,{class:"bottom-hint"},{default:o((()=>[n(t,null,{default:o((()=>[d(_(H.value),1)])),_:1})])),_:1})])])),_:1}),n(l,{class:h(["toast",{visible:D.value}])},{default:o((()=>[d(_(F.value),1)])),_:1},8,["class"])])),_:1})])),_:1})}}}),[["__scopeId","data-v-fee61cbe"]]);export{F as default};