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