2 lines
8.5 KiB
JavaScript
2 lines
8.5 KiB
JavaScript
import{d as a,r as s,c as l,o as e,b as t,e as n,f as r,w as u,i as c,K as i,j as o,n as d,t as f,g as v,l as _,m,F as g,L as h,M as p,q as b,z as y,A as x,y as M,x as k,S as $,H as w}from"./index-DGiVEDOl.js";import{_ as j}from"./config-doctor.TgARj_nM.js";import{f as F}from"./profile.DeoOGLiN.js";import{_ as T}from"./_plugin-vue_export-helper.BCo6x5W8.js";import"./auth.vuBox8Gk.js";import"./session.AIvyRM0e.js";const N=T(a({__name:"profile-analysis",setup(a){const T=s(!1),N=s(""),I=s(!1),C=s(null),L=s(!1),X=s(!1),Y=s(!1);let P=null,S=null;const q=l((()=>{var a;const s=null==(a=C.value)?void 0:a.current_score;return"number"==typeof s&&Number.isFinite(s)?Number.isInteger(s)?String(s):s.toFixed(1):"--"})),z=l((()=>{var a;const s=null==(a=C.value)?void 0:a.score_delta_pct;if("number"!=typeof s||!Number.isFinite(s))return"";return`${s>0?"+":""}${s}%`})),A=l((()=>{var a;const s=null==(a=C.value)?void 0:a.score_delta_pct;return"number"==typeof s&&s<0})),B=l((()=>{var a;if(Y.value)return"智能分析加载失败,请稍后重试";if(!X.value)return"正在加载您的临床能力分析";const s=null==(a=C.value)?void 0:a.score_delta_pct;if("number"==typeof s&&Number.isFinite(s)){if(s>0)return"相较于近期表现,您的临床能力评分有所提升";if(s<0)return"相较于近期表现,当前评分略有回落,建议继续专项练习"}return"当前已生成您的临床能力评分"})),D=l((()=>{var a;const s=(null==(a=C.value)?void 0:a.recent_trend)||[],l=s.length-1;return s.map(((a,s)=>({label:a.label,score:a.score,height:`${V(a.score)}%`,highlight:s===l})))})),E=l((()=>{var a;const s=((null==(a=C.value)?void 0:a.radar)||[]).slice(0,6),l=s.length;return l<3?[]:s.map(((a,s)=>{const e=-Math.PI/2+2*Math.PI*s/l,t=V(a.score)/100*35,n=50+47*Math.cos(e),r=50+47*Math.sin(e),u=Z(n,14,86),c=Z(r,6,94);return{dimension:a.dimension,pointX:W(50+Math.cos(e)*t),pointY:W(50+Math.sin(e)*t),labelLeft:`${u}%`,labelTop:`${c}%`}}))})),H=l((()=>E.value.map((a=>`${a.pointX},${a.pointY}`)).join(" "))),K=l((()=>L.value?"分析数据加载中...":Y.value?"分析数据加载失败":"暂无趋势数据")),G=l((()=>{var a;return(null==(a=C.value)?void 0:a.comment)||K.value})),J=l((()=>{var a,s;return(null==(s=null==(a=C.value)?void 0:a.weak_dimensions)?void 0:s[0])||"病史采集"})),O=l((()=>{var a;const s=(null==(a=C.value)?void 0:a.current_score)||0;return s>=85?"高级":s>=70?"中级":"基础"})),Q=l((()=>{var a;return(null==(a=C.value)?void 0:a.comment)?`“${C.value.comment}”`:Y.value?"“分析数据暂时未能加载,请稍后再试。”":"“正在读取你的训练表现,稍后给出更具体的强化建议。”"}));function R(){"function"==typeof h&&h().length>1?p():b({url:"/pages/profile/profile"})}function U(a){S&&clearTimeout(S),N.value=a,I.value=!0,S=setTimeout((()=>{I.value=!1}),2200)}function V(a){return Number.isFinite(a)?Math.max(0,Math.min(100,Math.round(a))):0}function W(a){return Math.round(100*a)/100}function Z(a,s,l){return Math.max(s,Math.min(l,Math.round(100*a)/100))}return e((()=>{P=setTimeout((()=>{T.value=!0}),60),async function(){L.value=!0,Y.value=!1;try{C.value=await F(),X.value=!0}catch(a){Y.value=!0,U(a instanceof Error?a.message:"智能分析加载失败")}finally{L.value=!1}}()})),t((()=>{P&&clearTimeout(P),S&&clearTimeout(S)})),(a,s)=>{const l=y,e=x,t=M,h=k,p=$;return n(),r(l,{class:"analysis-page"},{default:u((()=>[c(l,{class:"analysis-shell"},{default:u((()=>[i("header",{class:"top-bar"},[c(e,{class:"icon-button","aria-label":"返回",onClick:R},{default:u((()=>[c(l,{class:"back-icon"})])),_:1}),c(t,{class:"page-title"},{default:u((()=>[o("智能分析")])),_:1})]),c(p,{class:"analysis-scroll","scroll-y":""},{default:u((()=>[c(l,{class:"analysis-main"},{default:u((()=>[c(l,{class:d(["fade-section",{visible:T.value}])},{default:u((()=>[c(l,{class:"summary-card"},{default:u((()=>[c(l,{class:"summary-copy"},{default:u((()=>[c(l,{class:"summary-head"},{default:u((()=>[c(t,{class:"summary-label"},{default:u((()=>[o("当前能力评分")])),_:1}),z.value?(n(),r(l,{key:0,class:d(["trend-chip",{down:A.value}])},{default:u((()=>[c(l,{class:"trend-icon"}),c(t,null,{default:u((()=>[o(f(z.value),1)])),_:1})])),_:1},8,["class"])):v("",!0)])),_:1}),c(t,{class:"summary-score"},{default:u((()=>[o(f(q.value),1)])),_:1}),c(t,{class:"summary-desc"},{default:u((()=>[o(f(B.value),1)])),_:1})])),_:1})])),_:1})])),_:1},8,["class"]),c(l,{class:d(["fade-section",{visible:T.value}])},{default:u((()=>[c(l,{class:"chart-card"},{default:u((()=>[c(l,{class:"section-head"},{default:u((()=>[c(t,{class:"section-title"},{default:u((()=>[o("近期分数趋势")])),_:1}),c(l,{class:"section-icon"},{default:u((()=>[c(l,{class:"chart-icon"})])),_:1})])),_:1}),c(l,{class:"bar-chart"},{default:u((()=>[(n(!0),_(g,null,m(D.value,(a=>(n(),r(l,{key:`${a.label}-${a.score}`,class:"bar-column"},{default:u((()=>[c(l,{class:"bar-track"},{default:u((()=>[c(l,{class:d(["bar-fill",{highlighted:a.highlight}]),style:w({height:a.height})},null,8,["class","style"])])),_:2},1024),c(t,{class:d(["bar-label",{active:a.highlight}])},{default:u((()=>[o(f(a.label),1)])),_:2},1032,["class"])])),_:2},1024)))),128))])),_:1}),0===D.value.length?(n(),r(l,{key:0,class:"empty-card-text"},{default:u((()=>[o(f(K.value),1)])),_:1})):v("",!0)])),_:1})])),_:1},8,["class"]),c(l,{class:d(["fade-section",{visible:T.value}])},{default:u((()=>[c(l,{class:"chart-card"},{default:u((()=>[c(l,{class:"section-head"},{default:u((()=>[c(t,{class:"section-title"},{default:u((()=>[o("临床胜任力雷达图")])),_:1}),c(l,{class:"section-icon"},{default:u((()=>[c(l,{class:"radar-icon"})])),_:1})])),_:1}),c(l,{class:"radar-wrap"},{default:u((()=>[c(l,{class:"radar-background"},{default:u((()=>[c(l,{class:"radar-ring ring-one"}),c(l,{class:"radar-ring ring-two"}),c(l,{class:"radar-ring ring-three"}),c(l,{class:"radar-ring ring-four"}),c(l,{class:"radar-axis axis-vertical"}),c(l,{class:"radar-axis axis-diagonal-one"}),c(l,{class:"radar-axis axis-diagonal-two"}),c(l,{class:"radar-axis axis-diagonal-three"}),c(l,{class:"radar-axis axis-diagonal-four"})])),_:1}),(n(!0),_(g,null,m(E.value,(a=>(n(),r(l,{key:a.dimension,class:"radar-label dynamic-label",style:w({left:a.labelLeft,top:a.labelTop})},{default:u((()=>[o(f(a.dimension),1)])),_:2},1032,["style"])))),128)),(n(),_("svg",{class:"radar-svg",viewBox:"0 0 100 100"},[H.value?(n(),_("polygon",{key:0,class:"radar-polygon",points:H.value},null,8,["points"])):v("",!0),(n(!0),_(g,null,m(E.value,(a=>(n(),_("circle",{key:`${a.dimension}-point`,cx:a.pointX,cy:a.pointY,r:"3"},null,8,["cx","cy"])))),128))]))])),_:1}),c(l,{class:"analysis-note"},{default:u((()=>[c(t,null,{default:u((()=>[o(f(G.value),1)])),_:1})])),_:1})])),_:1})])),_:1},8,["class"]),c(l,{class:d(["fade-section",{visible:T.value}])},{default:u((()=>[c(t,{class:"mini-title"},{default:u((()=>[o("分项提升建议")])),_:1}),c(l,{class:"suggestion-list"},{default:u((()=>[c(l,{class:"suggestion-card",onClick:s[0]||(s[0]=a=>U("重点回顾内容即将开放"))},{default:u((()=>[c(l,{class:"suggestion-icon-wrap secondary-tone"},{default:u((()=>[c(l,{class:"book-icon"})])),_:1}),c(l,{class:"suggestion-copy"},{default:u((()=>[c(t,{class:"suggestion-title"},{default:u((()=>[o("重点回顾:"+f(J.value),1)])),_:1}),c(t,{class:"suggestion-desc"},{default:u((()=>[o("基于当前能力雷达图的薄弱项推荐")])),_:1})])),_:1}),c(l,{class:"chevron-icon"})])),_:1}),c(l,{class:"suggestion-card",onClick:s[1]||(s[1]=a=>U("专项挑战即将开放"))},{default:u((()=>[c(l,{class:"suggestion-icon-wrap tertiary-tone"},{default:u((()=>[c(l,{class:"brain-icon"})])),_:1}),c(l,{class:"suggestion-copy"},{default:u((()=>[c(t,{class:"suggestion-title"},{default:u((()=>[o("临床思维专项挑战")])),_:1}),c(t,{class:"suggestion-desc"},{default:u((()=>[o("推荐参与难度等级:"+f(O.value),1)])),_:1})])),_:1}),c(l,{class:"chevron-icon"})])),_:1})])),_:1})])),_:1},8,["class"]),c(l,{class:d(["fade-section mentor-section",{visible:T.value}])},{default:u((()=>[c(l,{class:"mentor-card"},{default:u((()=>[c(l,{class:"mentor-head"},{default:u((()=>[c(h,{class:"mentor-avatar",src:j,mode:"aspectFill"}),c(l,null,{default:u((()=>[c(t,{class:"mentor-name"},{default:u((()=>[o("王主任的建议")])),_:1}),c(t,{class:"mentor-role"},{default:u((()=>[o("Director's Mentorship")])),_:1})])),_:1})])),_:1}),c(l,{class:"mentor-bubble"},{default:u((()=>[c(t,null,{default:u((()=>[o(f(Q.value),1)])),_:1})])),_:1})])),_:1})])),_:1},8,["class"])])),_:1})])),_:1}),c(l,{class:d(["toast",{visible:I.value}])},{default:u((()=>[o(f(N.value),1)])),_:1},8,["class"])])),_:1})])),_:1})}}}),[["__scopeId","data-v-e3b47e11"]]);export{N as default};
|