|
|
import{C as e,Ct as t,D as n,E as r,G as i,H as a,I as o,P as s,Qt as c,S as l,T as u,X as d,Y as f,at as p,b as m,d as ee,et as h,ht as g,m as _,ot as v,q as te,rt as y,tn as b,x,z as S}from"./vue.runtime.esm-bundler-DUiYyeqQ.js";import{_ as C,c as w,l as T,s as E}from"./index-BKGTVidA.js";import{n as D,t as O}from"./usePageLoad-D9c6HmVf.js";import{g as k,i as A,n as j,u as M}from"./assets-Dso48Xrt.js";import{c as N,d as P,f as F,h as I,i as L,l as ne,o as R,p as z,t as B,u as V}from"./tiandituMap-B0Q-vV8c.js";var re={class:`pick-map-wrap`},ie={key:0,class:`pick-search-bar`},ae={key:1,class:`pick-search-results`},oe=[`onClick`],se={key:2,class:`pick-map-error`},ce={key:3,class:`pick-map-shell`},le={key:0,class:`pick-map-loading`},H={key:4,class:`pick-hint`},U=E(n({__name:`TiandituPickMap`,props:s({height:{default:360},defaultKeyword:{default:``}},{longitude:{default:``},longitudeModifiers:{},latitude:{default:``},latitudeModifiers:{}}),emits:[`update:longitude`,`update:latitude`],setup(t){let n=t,s=h(t,`longitude`),d=h(t,`latitude`),v=`tianditu-pick-map-${Math.random().toString(36).slice(2)}`,x=g(null),C=g(``),w=g(!1),E=g(``),D=g(!1),O=g([]),k=null,A=null,j=null,M=null,U=null,W=!1;function G(e){if(e==null||String(e).trim()===``)return null;let t=Number(e);return Number.isFinite(t)?t:null}function K(){let e=G(s.value),t=G(d.value);return e!=null&&t!=null?{lng:e,lat:t,zoom:14}:{lng:B.lng,lat:B.lat,zoom:14}}function q(){if(U?.(),U=null,W=!1,k&&A)try{k.removeOverLay(A)}catch{}A=null,k?.destroy?.(),k=null,j=null,x.value&&(x.value.innerHTML=``)}function J(e,t,n=16){s.value=e.toFixed(6),d.value=t.toFixed(6),k&&M&&(z(k,M,{lng:e,lat:t},n),Y(M,e,t))}function Y(e,t,n){k&&(A&&=(k.removeOverLay(A),null),A=new e.Marker(new e.LngLat(t,n)),k.addOverLay(A))}function ue(e){!k||!e.LocalSearch||(j=new e.LocalSearch(k,{pageCapacity:10,onSearchComplete:e=>{if(D.value=!1,Number(e.getResultType())!==1){O.value=[],T.warning(`未找到相关地点,请换个关键词试试`);return}let t=P(e.getPois()).filter(e=>!!F(e));O.value=t,t.length||T.warning(`未找到有效坐标的地点,请换个关键词试试`)}}))}function X(){let e=E.value.trim();if(!e){T.warning(`请输入搜索关键词`);return}if(!j){T.warning(`地图尚未就绪,请稍后再试`);return}D.value=!0,O.value=[],j.search(e)}function Z(e){let t=F(e);if(!t){T.warning(`该地点坐标无效,请换一条结果`);return}J(t.lng,t.lat),O.value=[]}function de(){W&&(W=!1,n.defaultKeyword.trim()&&(E.value=n.defaultKeyword.trim(),X()))}function Q(){if(!k||!M)return;let e=K();z(k,M,{lng:e.lng,lat:e.lat},e.zoom)}async function $(){await o();let e=x.value;if(e){if(C.value=``,!ne()){C.value=`未配置天地图 Key(VITE_TIANDITU_TK)`;return}w.value=!0;try{if(q(),!await I(e)){C.value=`地图容器未就绪,请关闭后重试`;return}let t=await V();M=t,e.innerHTML=``,e.id=v,e.style.width=`100%`,e.style.height=`${n.height}px`,k=N(t,v),R(k);let r=K();k.centerAndZoom(new t.LngLat(r.lng,r.lat),r.zoom);let i=G(s.value),a=G(d.value);i!=null&&a!=null?Y(t,i,a):Y(t,r.lng,r.lat),ue(t),k.addEventListener?.(`click`,e=>{let t=e?.lnglat?.lng,n=e?.lnglat?.lat;t==null||n==null||(J(t,n),O.value=[])}),k.addEventListener?.(`load`,()=>{if(!k||!M)return;let e=K();z(k,M,{lng:e.lng,lat:e.lat},e.zoom),de()}),U=L(e,()=>k),z(k,t,{lng:r.lng,lat:r.lat},r.zoom),window.setTimeout(Q,300),window.setTimeout(Q,800),window.setTimeout(Q,1500),n.defaultKeyword.trim()&&(W=!0)}catch(e){C.value=e instanceof Error?e.message:`地图加载失败`}finally{if(w.value=!1,k&&M){let e=K();z(k,M,{lng:e.lng,lat:e.lat},e.zoom)}}}}return y([s,d],async()=>{let e=G(s.value),t=G(d.value);!k||e==null||t==null||Y(await V(),e,t)}),a(()=>{$()}),S(()=>{q(),M=null}),(t,a)=>{let o=f(`el-input`),s=f(`el-button`);return i(),e(`div`,re,[C.value?l(``,!0):(i(),e(`div`,ie,[r(o,{modelValue:E.value,"onUpdate:modelValue":a[0]||=e=>E.value=e,placeholder:`搜索地点,如:复旦大学`,clearable:``,onKeyup:ee(X,[`enter`])},null,8,[`modelValue`]),r(s,{type:`primary`,loading:D.value,onClick:X},{default:p(()=>[...a[1]||=[u(`搜索`,-1)]]),_:1},8,[`loading`])])),O.value.length?(i(),e(`ul`,ae,[(i(!0),e(_,null,te(O.value,(t,n)=>(i(),e(`li`,{key:`${t.name}-${n}`},[m(`button`,{type:`button`,class:`pick-search-item`,onClick:e=>Z(t)},[m(`strong`,null,b(t.name),1),m(`span`,null,b(t.address||`—`),1)],8,oe)]))),128))])):l(``,!0),C.value?(i(),e(`div`,se,b(C.value),1)):(i(),e(`div`,ce,[w.value?(i(),e(`div`,le,`地图加载中…`)):l(``,!0),m(`div`,{ref_key:`containerRef`,ref:x,class:`pick-map`,style:c({height:`${n.height}px`})},null,4)])),C.value?l(``,!0):(i(),e(`p`,H,`可搜索地点或点击地图选点,确定后将填入经纬度`))])}}}),[[`__scopeId`,`data-v-0a469e9f`]]),W={class:`list-page`},G={class:`page-header`},K={class:`list-filter-bar`},q={class:`table-row-actions`},J={key:0,class:`list-pager`},Y={class:`coord-inline`},ue={key:0,class:`pick-coord-preview`},X=E(n({__name:`index`,setup(n){let a=g(!1),s=g([]),c=g({current_page:1,per_page:20,total:0}),h=g(1),y=g(``),S=g(``),E=g(!1),N=g(!1),P=g(!1),F=g(null),I=g({longitude:``,latitude:``}),L=g({name:``,longitude:``,latitude:``,city:``,province:``}),ne=[{label:`上海高校`,value:`上海`},{label:`苏州高校`,value:`苏州`},{label:`浙江高校`,value:`浙江`}];async function R(){a.value=!0;try{let e={page:h.value,page_size:c.value.per_page};y.value&&(e.keyword=y.value),S.value&&(e.region=S.value);let t=await M(e);s.value=t.items,c.value=t.meta}finally{a.value=!1}}function z(){y.value=``,S.value=``,h.value=1,R()}function B(){h.value=1,R()}function V(){F.value=null,L.value={name:``,longitude:``,latitude:``,city:``,province:``},E.value=!0}function re(e){F.value=e,L.value={name:e.name,longitude:e.longitude==null?``:String(e.longitude),latitude:e.latitude==null?``:String(e.latitude),city:e.city||``,province:e.province||``},E.value=!0}function ie(){I.value={longitude:L.value.longitude,latitude:L.value.latitude},P.value=!1,N.value=!0}function ae(){P.value=!1,o(()=>{window.setTimeout(()=>{P.value=!0},800)})}function oe(){P.value=!1}function se(){if(!I.value.longitude||!I.value.latitude){T.warning(`请先在地图上选点`);return}L.value.longitude=I.value.longitude,L.value.latitude=I.value.latitude,N.value=!1}async function ce(){if(!L.value.name||!L.value.longitude||!L.value.latitude){T.warning(`请填写高校名称与经纬度`);return}let e={name:L.value.name.trim(),longitude:Number(L.value.longitude),latitude:Number(L.value.latitude),city:L.value.city||null,province:L.value.province||null};F.value?await k(F.value.id,e):await j(e),T.success(`已保存`),E.value=!1,await R()}async function le(e){await w.confirm(`确定要删除高校「${e.name}」?`,`确认删除`,{type:`warning`}),await A(e.id),T.success(`已删除`),await R()}return O(R),(n,o)=>{let g=f(`el-button`),w=f(`el-input`),T=f(`el-option`),O=f(`el-select`),k=f(`el-table-column`),A=f(`el-table`),j=f(`el-pagination`),M=f(`el-card`),H=f(`el-form-item`),X=f(`el-icon`),Z=f(`el-col`),de=f(`el-row`),Q=f(`el-form`),$=f(`el-dialog`),fe=d(`loading`);return i(),e(_,null,[m(`div`,W,[m(`div`,G,[r(D),r(g,{type:`primary`,size:`small`,class:`btn-create`,onClick:V},{default:p(()=>[...o[14]||=[u(`新增高校`,-1)]]),_:1})]),r(M,{shadow:`never`,class:`admin-list-card`},{default:p(()=>[o[19]||=m(`p`,{class:`list-page-hint`},`长三角主要高校经纬度预置录入,供雷达地图映射使用。`,-1),m(`div`,K,[r(w,{modelValue:y.value,"onUpdate:modelValue":o[0]||=e=>y.value=e,placeholder:`搜索高校名称、经纬度…`,clearable:``,class:`filter-search`,onKeyup:ee(B,[`enter`])},null,8,[`modelValue`]),r(O,{modelValue:S.value,"onUpdate:modelValue":o[1]||=e=>S.value=e,placeholder:`地区`,clearable:``,class:`filter-select-wide`},{default:p(()=>[(i(),e(_,null,te(ne,e=>r(T,{key:e.value,label:e.label,value:e.value},null,8,[`label`,`value`])),64))]),_:1},8,[`modelValue`]),r(g,{type:`primary`,onClick:B},{default:p(()=>[...o[15]||=[u(`搜索`,-1)]]),_:1}),r(g,{onClick:z},{default:p(()=>[...o[16]||=[u(`重置`,-1)]]),_:1})]),v((i(),x(A,{data:s.value,"row-key":`id`},{default:p(()=>[r(k,{prop:`name`,label:`高校名称`,"min-width":`180`}),r(k,{label:`经度`,width:`120`},{default:p(({row:e})=>[u(b(e.longitude??`—`),1)]),_:1}),r(k,{label:`纬度`,width:`120`},{default:p(({row:e})=>[u(b(e.latitude??`—`),1)]),_:1}),r(k,{prop:`city`,label:`城市`,width:`100`}),r(k,{label:`操作`,width:`160`,fixed:`right`},{default:p(({row:e})=>[m(`div`,q,[r(g,{class:`btn-action-primary`,onClick:t=>re(e)},{default:p(()=>[...o[17]||=[u(`编辑`,-1)]]),_:1},8,[`onClick`]),r(g,{class:`btn-action-brand`,onClick:t=>le(e)},{default:p(()=>[...o[18]||=[u(`删除`,-1)]]),_:1},8,[`onClick`])])]),_:1})]),_:1},8,[`data`])),[[fe,a.value]]),c.value.total>0?(i(),e(`div`,J,[r(j,{layout:`total, prev, pager, next`,total:c.value.total,"page-size":c.value.per_page,"current-page":h.value,onCurrentChange:o[2]||=e=>{h.value=e,R()}},null,8,[`total`,`page-size`,`current-page`])])):l(``,!0)]),_:1})]),r($,{modelValue:E.value,"onUpdate:modelValue":o[9]||=e=>E.value=e,title:F.value?`编辑高校`:`新增高校`,width:`480px`,"destroy-on-close":``},{footer:p(()=>[r(g,{onClick:o[8]||=e=>E.value=!1},{default:p(()=>[...o[21]||=[u(`取消`,-1)]]),_:1}),r(g,{type:`primary`,onClick:ce},{default:p(()=>[...o[22]||=[u(`保存`,-1)]]),_:1})]),default:p(()=>[r(Q,{"label-position":`top`},{default:p(()=>[r(H,{label:`高校名称`,required:``},{default:p(()=>[r(w,{modelValue:L.value.name,"onUpdate:modelValue":o[3]||=e=>L.value.name=e,placeholder:`如:复旦大学`},null,8,[`modelValue`])]),_:1}),r(H,{label:`经纬度`,required:``},{default:p(()=>[m(`div`,Y,[r(w,{modelValue:L.value.longitude,"onUpdate:modelValue":o[4]||=e=>L.value.longitude=e,placeholder:`经度`,class:`coord-input`},null,8,[`modelValue`]),r(w,{modelValue:L.value.latitude,"onUpdate:modelValue":o[5]||=e=>L.value.latitude=e,placeholder:`纬度`,class:`coord-input`},null,8,[`modelValue`]),r(g,{class:`pick-map-btn`,onClick:ie},{default:p(()=>[r(X,null,{default:p(()=>[r(t(C))]),_:1}),o[20]||=u(` 地图选点 `,-1)]),_:1})])]),_:1}),r(de,{gutter:12},{default:p(()=>[r(Z,{span:12},{default:p(()=>[r(H,{label:`省份`},{default:p(()=>[r(w,{modelValue:L.value.province,"onUpdate:modelValue":o[6]||=e=>L.value.province=e,placeholder:`如:上海`},null,8,[`modelValue`])]),_:1})]),_:1}),r(Z,{span:12},{default:p(()=>[r(H,{label:`城市`},{default:p(()=>[r(w,{modelValue:L.value.city,"onUpdate:modelValue":o[7]||=e=>L.value.city=e,placeholder:`如:上海`},null,8,[`modelValue`])]),_:1})]),_:1})]),_:1})]),_:1})]),_:1},8,[`modelValue`,`title`]),r($,{modelValue:N.value,"onUpdate:modelValue":o[13]||=e=>N.value=e,class:`map-pick-dialog`,title:`地图选点`,width:`720px`,"destroy-on-close":``,"append-to-body":``,"align-center":``,onOpened:ae,onClosed:oe},{footer:p(()=>[r(g,{onClick:o[12]||=e=>N.value=!1},{default:p(()=>[...o[23]||=[u(`取消`,-1)]]),_:1}),r(g,{type:`primary`,onClick:se},{default:p(()=>[...o[24]||=[u(`确定`,-1)]]),_:1})]),default:p(()=>[I.value.longitude&&I.value.latitude?(i(),e(`p`,ue,` 当前选点:`+b(I.value.longitude)+`,`+b(I.value.latitude),1)):l(``,!0),N.value&&P.value?(i(),x(U,{key:1,longitude:I.value.longitude,"onUpdate:longitude":o[10]||=e=>I.value.longitude=e,latitude:I.value.latitude,"onUpdate:latitude":o[11]||=e=>I.value.latitude=e,"default-keyword":L.value.name,height:400},null,8,[`longitude`,`latitude`,`default-keyword`])):l(``,!0)]),_:1},8,[`modelValue`])],64)}}}),[[`__scopeId`,`data-v-37a4bf6b`]]);export{X as default}; |