|
|
import{C as e,Ct as t,D as n,E as r,G as i,I as a,Qt as ee,S as o,T as s,X as te,Y as c,at as l,b as u,ht as d,m as f,ot as p,q as m,rt as h,tn as g,y as _,z as ne}from"./vue.runtime.esm-bundler-DUiYyeqQ.js";import{C as v,S as re,_ as y,b as ie,s as b,u as ae,x as oe}from"./index-D5LCIUJI.js";import{t as se}from"./usePageLoad-DFTLo_Lv.js";import{u as ce}from"./assets-CbazFD4_.js";import{t as le}from"./TeacherDetailDialog-D17H0U6s.js";import{n as ue}from"./teacherStar-By0_CBs7.js";import{a as de,i as fe,n as pe,r as me,s as he}from"./tiandituMap-Q15Nr3oH.js";/* empty css */var ge={class:`dashboard-page executive-dashboard`},x={key:0,class:`radar-top-grid`},S={class:`radar-kpi`},C={class:`kpi-icon`},w={class:`radar-kpi`},T={class:`kpi-icon`},E={class:`radar-kpi`},D={class:`kpi-icon`},O={class:`radar-kpi`},k={class:`kpi-icon`},A={class:`radar-map-card`},j={class:`radar-main`},M={class:`radar-map-container-wrap`},N={key:0,class:`radar-map-placeholder`},P={key:1,class:`radar-map-placeholder`},F={class:`radar-side`},I={class:`radar-side-head`},L={key:0,class:`radar-side-count`},_e={class:`radar-side-body`},ve={key:0,class:`radar-empty-panel`},R={class:`radar-teacher-avatar`},ye=[`onClick`],be={class:`stars`},xe={class:`radar-empty-panel`},Se={key:0,class:`radar-view-summary`},Ce={class:`radar-bottom-grid`},we={class:`radar-info-card`},Te={class:`radar-school-list`},Ee={class:`radar-info-card`},De={class:`radar-field-list`},Oe={class:`radar-field-bar`},ke={key:0,class:`empty-hint`},z=b(n({__name:`index`,setup(n){let b=d(!1),z=d(!1),B=d(``),V=d(null),H=d(null),U=d(!1),W=d(null),G=d(null),K=null,q=[],J=_(()=>V.value?.summary),Ae=_(()=>V.value?.quality||[]),Y=_(()=>V.value?.research_fields||[]),je=_(()=>Math.max(...Y.value.map(e=>e.percent),1));function Me(e,t){return e?e.length>t?`${e.slice(0,t)}…`:e:``}function Ne(e){return ue(e.star_level_item?.value,e.star_level_item?.label)}function X(e){W.value=e,U.value=!0}function Pe(e){H.value=e,Fe()}function Fe(){let e=H.value?.id??null;for(let{overlay:t,schoolId:n}of q)t.setActive?.(n===e)}async function Z(){b.value=!0;try{V.value=await ce(),H.value&&=V.value.schools.find(e=>e.id===H.value?.id)||null,await a(),await Q()}finally{b.value=!1}}async function Q(){if(!G.value)return;if(B.value=``,!de()){B.value=`未配置天地图 Key(VITE_TIANDITU_TK)`;return}let e=V.value?.schools||[];if(!e.length){$();return}z.value=!0;try{let t=await he();$();let n=G.value;n.innerHTML=``,K=new t.Map(n),me(K),q=[];let r=H.value?.id??null;for(let n of e){let e=fe(t,{name:n.name,longitude:n.longitude,latitude:n.latitude},r===n.id);K.addOverLay(e),e.addEventListener(`click`,()=>Pe(n)),q.push({overlay:e,schoolId:n.id})}pe(K,t)}catch(e){let t=e instanceof Error?e.message:`地图初始化失败`;B.value=t.includes(`脚本`)||t.includes(`SDK`)?`${t}。若 Key 已配置域名白名单,请使用 https://slake.ali251.langye.net 访问(本地开发可在 hosts 绑定该域名后访问 http://slake.ali251.langye.net:5173)`:t,$()}finally{z.value=!1}}function $(){if(K){for(let{overlay:e}of q)try{K.removeOverLay(e)}catch{}K.clearOverLays?.()}q=[],K=null}return h(()=>V.value?.schools.length,()=>{V.value&&!b.value&&a(()=>Q())}),se(Z),ne($),(n,a)=>{let d=c(`el-icon`),h=c(`el-button`),_=te(`loading`);return p((i(),e(`div`,ge,[a[18]||=u(`div`,{class:`page-head`},[u(`h1`,{class:`radar-page-title`},`高校雷达网地图`)],-1),J.value?(i(),e(`div`,x,[u(`div`,S,[u(`span`,C,[r(d,null,{default:l(()=>[r(t(ie))]),_:1})]),a[1]||=u(`span`,null,[s(`已覆盖高校`),u(`em`,null,`已配置经纬度的高校`)],-1),u(`strong`,null,g(J.value.covered_schools),1)]),u(`div`,w,[u(`span`,T,[r(d,null,{default:l(()=>[r(t(v))]),_:1})]),a[2]||=u(`span`,null,[s(`关联老师`),u(`em`,null,`地图点位老师总数`)],-1),u(`strong`,null,g(J.value.map_teachers),1)]),u(`div`,E,[u(`span`,D,[r(d,null,{default:l(()=>[r(t(re))]),_:1})]),a[3]||=u(`span`,null,[s(`五星老师`),u(`em`,null,`高价值合作对象`)],-1),u(`strong`,null,g(J.value.five_star_teachers),1)]),u(`div`,O,[u(`span`,k,[r(d,null,{default:l(()=>[r(t(y))]),_:1})]),a[4]||=u(`span`,null,[s(`待补坐标`),u(`em`,null,`高校坐标待完善`)],-1),u(`strong`,null,g(J.value.pending_coords),1)])])):o(``,!0),u(`section`,A,[a[15]||=u(`div`,{class:`radar-map-toolbar`},[u(`h2`,null,`高校分布`),u(`span`,{class:`toolbar-hint`},`以苏州为中心展示,点击圆点或学校名称查看高校详情`)],-1),u(`div`,j,[u(`div`,M,[B.value?(i(),e(`div`,N,[r(d,{size:24},{default:l(()=>[r(t(ae))]),_:1}),a[5]||=u(`strong`,null,`地图暂不可用`,-1),u(`span`,null,g(B.value),1)])):!V.value?.schools.length&&!z.value?(i(),e(`div`,P,[r(d,{size:24},{default:l(()=>[r(t(y))]),_:1}),a[6]||=u(`strong`,null,`暂无地图点位`,-1),a[7]||=u(`span`,null,`请先在「高校坐标库」维护经纬度。`,-1)])):p((i(),e(`div`,{key:2,ref_key:`mapContainerRef`,ref:G,class:`radar-map-container`},null,512)),[[_,z.value]])]),u(`aside`,F,[u(`div`,I,[u(`h3`,null,g(H.value?.name||`高校详情`),1),H.value?(i(),e(`span`,L,[r(d,null,{default:l(()=>[r(t(v))]),_:1}),s(` `+g(H.value.teachers_count)+` 位 `,1)])):o(``,!0)]),u(`div`,_e,[H.value?(i(),e(f,{key:0},[H.value.teachers.length?o(``,!0):(i(),e(`div`,ve,[r(d,{size:20},{default:l(()=>[r(t(v))]),_:1}),a[8]||=u(`strong`,null,`暂无关联老师`,-1),a[9]||=u(`span`,null,`该校已在地图上展示,可在老师库中关联高校后在此查看老师列表。`,-1)])),(i(!0),e(f,null,m(H.value.teachers,n=>(i(),e(`div`,{key:n.id,class:`radar-teacher-card`},[u(`span`,R,[r(d,null,{default:l(()=>[r(t(v))]),_:1})]),u(`span`,null,[u(`button`,{type:`button`,class:`radar-teacher-name`,onClick:e=>X(n.id)},g(n.name),9,ye),u(`em`,null,g(Me(n.research_direction,16)),1),u(`i`,be,g(Ne(n)),1)]),r(h,{size:`small`,plain:``,onClick:e=>X(n.id)},{default:l(()=>[...a[10]||=[s(`详情`,-1)]]),_:1},8,[`onClick`])]))),128))],64)):(i(),e(f,{key:1},[u(`div`,xe,[r(d,{size:20},{default:l(()=>[r(t(oe))]),_:1}),a[11]||=u(`strong`,null,`选择高校点位`,-1),a[12]||=u(`span`,null,`点击地图上的高校圆点,右侧会显示该校信息及关联老师列表。`,-1)]),J.value?(i(),e(`div`,Se,[a[13]||=u(`span`,null,`当前视图点位`,-1),u(`strong`,null,g(J.value.visible_points),1),a[14]||=u(`span`,null,`最高星级老师`,-1),u(`strong`,null,g(J.value.max_star)+` 星`,1)])):o(``,!0)],64))])])])]),u(`div`,Ce,[u(`section`,we,[a[16]||=u(`h2`,null,`数据质量`,-1),u(`div`,Te,[(i(!0),e(f,null,m(Ae.value,t=>(i(),e(`div`,{key:t.label,class:`radar-school-row`},[u(`span`,null,[s(g(t.label),1),u(`em`,null,g(t.detail),1)])]))),128))])]),u(`section`,Ee,[a[17]||=u(`h2`,null,`研究方向分布`,-1),u(`div`,De,[(i(!0),e(f,null,m(Y.value,t=>(i(),e(`div`,{key:t.label,class:`radar-field-row`},[u(`span`,null,[s(g(t.label)+` `,1),u(`em`,null,g(t.count)+` 位老师`,1),u(`div`,Oe,[u(`i`,{style:ee({width:`${Math.round(t.percent/je.value*100)}%`})},null,4)])]),u(`strong`,null,g(t.percent)+`%`,1)]))),128)),Y.value.length?o(``,!0):(i(),e(`p`,ke,`暂无研究方向统计数据`))])])]),r(le,{modelValue:U.value,"onUpdate:modelValue":a[0]||=e=>U.value=e,"teacher-id":W.value,readonly:``,onSaved:Z},null,8,[`modelValue`,`teacher-id`])])),[[_,b.value]])}}}),[[`__scopeId`,`data-v-c9b40d66`]]);export{z as default}; |