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