You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1 line
7.2 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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-DXyzmFFT.js";import{n as se,t as ce}from"./usePageLoad-COyWIJSl.js";import{u as le}from"./assets-CTEndQXH.js";import{t as ue}from"./TeacherDetailDialog-Beqq1F05.js";import{n as de}from"./teacherStar-DhP_EdY6.js";import{a as fe,c as pe,l as me,m as he,n as x,o as ge,r as _e,s as S,u as C}from"./tiandituMap-B0Q-vV8c.js";/* empty css */var w={class:`dashboard-page executive-dashboard`},T={class:`page-head`},E={key:0,class:`radar-top-grid`},D={class:`radar-kpi`},O={class:`kpi-icon`},k={class:`radar-kpi`},A={class:`kpi-icon`},j={class:`radar-kpi`},M={class:`kpi-icon`},N={class:`radar-kpi`},P={class:`kpi-icon`},F={class:`radar-map-card`},I={class:`radar-main`},ve={class:`radar-map-container-wrap`},ye={key:0,class:`radar-map-placeholder`},be={key:1,class:`radar-map-placeholder`},xe={key:2,class:`radar-map-stage`},Se={class:`radar-side`},Ce={class:`radar-side-head`},we={key:0,class:`radar-side-count`},Te={class:`radar-side-body`},Ee={key:0,class:`radar-empty-panel`},De={class:`radar-teacher-avatar`},L=[`onClick`],Oe={class:`stars`},ke={class:`radar-empty-panel`},Ae={key:0,class:`radar-view-summary`},je={class:`radar-bottom-grid`},Me={class:`radar-info-card`},Ne={class:`radar-school-list`},Pe={class:`radar-info-card`},Fe={class:`radar-field-list`},Ie={class:`radar-field-bar`},Le={key:0,class:`empty-hint`},R=b(n({__name:`index`,setup(n){let b=d(!1),R=d(!1),z=d(``),B=d(null),V=d(null),H=d(!1),U=d(null),W=d(null),G=null,K=null,q=[],J=_(()=>B.value?.summary),Re=_(()=>B.value?.quality||[]),Y=_(()=>B.value?.research_fields||[]),ze=_(()=>Math.max(...Y.value.map(e=>e.percent),1));function Be(e,t){return e?e.length>t?`${e.slice(0,t)}`:e:``}function Ve(e){return de(e.star_level_item?.value,e.star_level_item?.label)}function X(e){U.value=e,H.value=!0}function He(e){V.value=e;for(let t of q)t.overlay.setActive?.(t.school.id===e.id)}async function Z(){b.value=!0;try{B.value=await le(),V.value&&=B.value.schools.find(e=>e.id===V.value?.id)||null,await a(),await Q()}finally{b.value=!1}}async function Q(){if(!W.value)return;if(z.value=``,!me()){z.value=`未配置天地图 KeyVITE_TIANDITU_TK`;return}let e=B.value?.schools||[];if(!e.length){$();return}R.value=!0;try{let t=await C();$();let n=W.value;n.innerHTML=``,G=pe(t,n),ge(G),fe(G,t),q=[];for(let n of e){let e=S(t,{name:n.name,longitude:n.longitude,latitude:n.latitude},V.value?.id===n.id);e.addEventListener(`click`,()=>He(n)),G.addOverLay(e),q.push({school:n,overlay:e})}x(G),K=_e(G,t),he(G);let r=()=>{G&&x(G)};G.addEventListener?.(`load`,r),window.setTimeout(r,300),window.setTimeout(r,800)}catch(e){let t=e instanceof Error?e.message:`地图初始化失败`;z.value=t.includes(`脚本`)||t.includes(`SDK`)?`${t}。若 Key 已配置域名白名单,请使用 https://slake.ali251.langye.net 访问(本地开发可在 hosts 绑定该域名后访问 http://slake.ali251.langye.net:5173`:t,$()}finally{R.value=!1}}function $(){K?.(),K=null,G&&(G.clearOverLays?.(),G.destroy?.()),q=[],G=null}return h(()=>B.value?.schools.length,()=>{B.value&&!b.value&&a(()=>Q())}),ce(Z),ne($),(n,a)=>{let d=c(`el-icon`),h=c(`el-button`),_=te(`loading`);return p((i(),e(`div`,w,[u(`div`,T,[r(se,{variant:`radar`})]),J.value?(i(),e(`div`,E,[u(`div`,D,[u(`span`,O,[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`,k,[u(`span`,A,[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`,j,[u(`span`,M,[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`,N,[u(`span`,P,[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`,F,[a[15]||=u(`div`,{class:`radar-map-toolbar`},[u(`h2`,null,`高校分布`),u(`span`,{class:`toolbar-hint`},`以苏州为中心展示,点击圆点或学校名称查看高校详情`)],-1),u(`div`,I,[u(`div`,ve,[z.value?(i(),e(`div`,ye,[r(d,{size:24},{default:l(()=>[r(t(ae))]),_:1}),a[5]||=u(`strong`,null,`地图暂不可用`,-1),u(`span`,null,g(z.value),1)])):!B.value?.schools.length&&!R.value?(i(),e(`div`,be,[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`,xe,[u(`div`,{ref_key:`mapContainerRef`,ref:W,class:`radar-map-container`},null,512)])),[[_,R.value]])]),u(`aside`,Se,[u(`div`,Ce,[u(`h3`,null,g(V.value?.name||`高校详情`),1),V.value?(i(),e(`span`,we,[r(d,null,{default:l(()=>[r(t(v))]),_:1}),s(` `+g(V.value.teachers_count)+``,1)])):o(``,!0)]),u(`div`,Te,[V.value?(i(),e(f,{key:0},[V.value.teachers.length?o(``,!0):(i(),e(`div`,Ee,[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(V.value.teachers,n=>(i(),e(`div`,{key:n.id,class:`radar-teacher-card`},[u(`span`,De,[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,L),u(`em`,null,g(Be(n.research_direction,16)),1),u(`i`,Oe,g(Ve(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`,ke,[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`,Ae,[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`,je,[u(`section`,Me,[a[16]||=u(`h2`,null,`数据质量`,-1),u(`div`,Ne,[(i(!0),e(f,null,m(Re.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`,Pe,[a[17]||=u(`h2`,null,`研究方向分布`,-1),u(`div`,Fe,[(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`,Ie,[u(`i`,{style:ee({width:`${Math.round(t.percent/ze.value*100)}%`})},null,4)])]),u(`strong`,null,g(t.percent)+`%`,1)]))),128)),Y.value.length?o(``,!0):(i(),e(`p`,Le,`暂无研究方向统计数据`))])])]),r(ue,{modelValue:H.value,"onUpdate:modelValue":a[0]||=e=>H.value=e,"teacher-id":U.value,readonly:``,onSaved:Z},null,8,[`modelValue`,`teacher-id`])])),[[_,b.value]])}}}),[[`__scopeId`,`data-v-23c6e84c`]]);export{R as default};