import{aN as le,bC as v,bs as o,aG as c,bk as me,ai as U,aD as m,bL as M,aF as O,bE as G,aE as x,ay as N,ak as ne,L as ge,c7 as Ie,bp as de,aK as t,R as _e,bS as ve,bI as Ne,r as pe,bv as Te,c8 as n,aJ as h,c9 as ce,b$ as ye,ab as be,_ as Be,F as Oe,N as we,O as he,a4 as ke,S as Re,bA as Je,X as E,Y,aa as $e,Z as Me,E as Ce,cb as ae,ad as Se,bj as fe,ac as ze,bX as Ae,a9 as Pe,t as Ue}from"./index-D5GfLbIx.js";/* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css */import"./el-tooltip-l0sNRNKZ.js";/* empty css *//* empty css *//* empty css *//* empty css *//* empty css */import{b as P}from"./mapEdit-BXIATxCI.js";/* empty css *//* empty css *//* empty css *//* empty css *//* empty css */const De={class:"jfn-toggle"},Fe={key:0,class:"jfn-key"},Le={class:"jfn-brace"},qe={key:1,class:"jfn-ellipsis"},Ge={key:2,class:"jfn-brace"},Ke={key:0,class:"jfn-children"},Xe={class:"jfn-line jfn-close"},Ye={class:"jfn-brace"},He={key:0,class:"jfn-comma"},Ze={key:1,class:"jfn-line jfn-primitive"},Qe={key:0,class:"jfn-key"},We={key:1,class:"jfn-comma"},et=le({__name:"JsonFoldNode",props:{value:{},label:{},depth:{default:0},comma:{type:Boolean,default:!1}},setup(r){const l=r,d=v(l.depth<1),_=N(()=>Array.isArray(l.value)),k=N(()=>l.value!==null&&typeof l.value=="object"&&!_.value),$=N(()=>_.value||k.value),T=N(()=>_.value?"[":"{"),y=N(()=>_.value?"]":"}"),b=N(()=>_.value?l.value.map((s,R)=>({key:String(R),label:String(R),value:s})):k.value?Object.entries(l.value).map(([s,R])=>({key:s,label:JSON.stringify(s),value:R})):[]),C=N(()=>{const s=b.value.length;return _.value?` … ${s} items `:` … ${s} keys `}),f=N(()=>{const s=typeof l.value;return s==="string"?"jfn-val jfn-val--str":s==="number"?"jfn-val jfn-val--num":s==="boolean"?"jfn-val jfn-val--bool":"jfn-val jfn-val--null"}),V=N(()=>l.value===null?"null":l.value===void 0?"undefined":typeof l.value=="string"?JSON.stringify(l.value):String(l.value));function S(){d.value=!d.value}return(s,R)=>(o(),c("div",{class:me(["jfn",{"jfn--root":r.depth===0}])},[$.value?(o(),c(U,{key:0},[m("div",{class:"jfn-line",onClick:S},[m("span",De,M(d.value?"▼":"▶"),1),r.label?(o(),c("span",Fe,M(r.label)+": ",1)):O("",!0),m("span",Le,M(T.value),1),d.value?O("",!0):(o(),c("span",qe,M(C.value),1)),d.value?O("",!0):(o(),c("span",Ge,M(y.value),1))]),d.value?(o(),c("div",Ke,[(o(!0),c(U,null,G(b.value,(A,j)=>(o(),x(xe,{key:A.key,label:A.label,value:A.value,depth:r.depth+1,comma:j{if(l.data!==void 0)return l.data;if(l.raw?.trim())try{return JSON.parse(l.raw)}catch{return}});return(_,k)=>{const $=ge;return o(),c("div",tt,[d.value!==void 0?(o(),x(xe,{key:0,value:d.value,depth:0},null,8,["value"])):r.raw?(o(),c("pre",at,M(r.raw),1)):(o(),x($,{key:2,description:"无 JSON 内容"}))])}}}),nt=ne(lt,[["__scopeId","data-v-af36af72"]]),Ve="mapEditor.mapConnections.v1",je="mapEditor.mapIdRegistry.v1";function te(){try{const r=localStorage.getItem(Ve);if(!r)return[];const l=JSON.parse(r);return Array.isArray(l)?l:[]}catch{return[]}}function ue(r){localStorage.setItem(Ve,JSON.stringify(r))}function ot(){try{return JSON.parse(localStorage.getItem(je)??"{}")||{}}catch{return{}}}function st(r){localStorage.setItem(je,JSON.stringify(r))}function se(r){if(!r)return 0;const l=ot();if(l[r]!=null)return l[r];const d=Object.values(l).reduce((_,k)=>Math.max(_,k),0)+1;return l[r]=d,st(l),d}function re(r){return new Promise(l=>setTimeout(()=>l(r),60))}const q={list(){return re(te().slice().sort((r,l)=>l.id-r.id))},create(r){const l=te(),_={id:l.reduce((k,$)=>Math.max(k,$.id),0)+1,...r,sourceMapId:se(r.sourceMap),targetMapId:se(r.targetMap)};return l.push(_),ue(l),re(_)},update(r,l){const d=te(),_=d.findIndex($=>$.id===r);if(_<0)return Promise.reject(new Error("连接不存在或已被删除"));const k={id:r,...l,sourceMapId:se(l.sourceMap),targetMapId:se(l.targetMap)};return d[_]=k,ue(d),re(k)},remove(r){return ue(te().filter(l=>l.id!==r)),re({id:r,deleted:!0})},stationSuggestions(){const r=new Set;for(const l of te())l.sourceStation&&r.add(l.sourceStation),l.targetStation&&r.add(l.targetStation);return Array.from(r)}},rt={class:"mc-panel"},it={class:"mc-toolbar"},ut={class:"mc-cost mg-mono"},ct={class:"mc-pager"},dt=le({__name:"MapConnectionPanel",setup(r,{expose:l}){const d=v(!1),_=v(!1),k=v([]),$=v([]),T=v([]),y=v(""),b=v(1),C=v(10),f=v(!1),V=v(null),S=v(),s=Je({sourceMap:"",sourceStation:"",targetMap:"",targetStation:"",cost:1e3}),R={sourceMap:[{required:!0,message:"请选择起始地图",trigger:"change"}],sourceStation:[{required:!0,message:"请选择起始切换点站点",trigger:"change"}],targetMap:[{required:!0,message:"请选择目的地图",trigger:"change"}],targetStation:[{required:!0,message:"请选择目的切换点站点",trigger:"change"}],cost:[{required:!0,message:"请输入转移代价",trigger:"blur"}]},A=N(()=>{const g=y.value.trim().toLowerCase();return g?k.value.filter(e=>e.sourceMap.toLowerCase().includes(g)||e.targetMap.toLowerCase().includes(g)):k.value}),j=N(()=>{const g=(b.value-1)*C.value;return A.value.slice(g,g+C.value)});Ie([y,C],()=>{b.value=1});async function u(){d.value=!0;try{k.value=await q.list(),T.value=q.stationSuggestions()}catch(g){E.error(`加载地图连接失败:${g.message}`)}finally{d.value=!1}}async function J(){try{const g=await P.list();$.value=g.maps.map(e=>e.name)}catch{$.value=[]}}function w(){s.sourceMap="",s.sourceStation="",s.targetMap="",s.targetStation="",s.cost=1e3}function z(){V.value=null,w(),T.value=q.stationSuggestions(),f.value=!0}function H(g){V.value=g.id,s.sourceMap=g.sourceMap,s.sourceStation=g.sourceStation,s.targetMap=g.targetMap,s.targetStation=g.targetStation,s.cost=g.cost,T.value=q.stationSuggestions(),f.value=!0}function Z(){S.value?.clearValidate()}async function Q(){S.value&&await S.value.validate(async g=>{if(g){_.value=!0;try{const e={sourceMap:s.sourceMap,sourceStation:s.sourceStation,targetMap:s.targetMap,targetStation:s.targetStation,cost:s.cost};V.value===null?(await q.create(e),E.success("已添加地图连接")):(await q.update(V.value,e),E.success("已更新地图连接")),f.value=!1,await u()}catch(e){E.error(`保存失败:${e.message}`)}finally{_.value=!1}}})}async function K(g){try{await Y.confirm(`确认删除「${g.sourceMap} → ${g.targetMap}」这条地图连接?`,"删除地图连接",{type:"warning",confirmButtonText:"删除",cancelButtonText:"取消",confirmButtonClass:"el-button--danger"}),await q.remove(g.id),E.success("已删除"),j.value.length===1&&b.value>1&&(b.value-=1),await u()}catch(e){if(e==="cancel"||e==="close")return;E.error(`删除失败:${e.message}`)}}return de(()=>{u(),J()}),l({refresh:u}),(g,e)=>{const a=_e,p=pe,I=be,D=$e,W=Be,X=Me,L=ke,F=he,ee=Re,ie=we,oe=Oe,B=ye;return o(),c("div",rt,[m("div",it,[t(a,{modelValue:y.value,"onUpdate:modelValue":e[0]||(e[0]=i=>y.value=i),class:"mc-search",placeholder:"请输入地图名称搜索",clearable:"","prefix-icon":ve(Ne)},null,8,["modelValue","prefix-icon"]),t(p,{type:"primary",icon:ve(Te),onClick:z},{default:n(()=>[...e[10]||(e[10]=[h("添加地图关系",-1)])]),_:1},8,["icon"])]),ce((o(),x(D,{data:j.value,class:"mc-table",border:"","empty-text":"还没有地图连接关系,点击右上角「添加地图关系」创建跨楼层 / 拼接连接。"},{default:n(()=>[t(I,{prop:"id",label:"ID",width:"80",sortable:""}),t(I,{prop:"sourceMap",label:"起始地图名称","min-width":"160","show-overflow-tooltip":""}),t(I,{prop:"sourceMapId",label:"起始地图ID",width:"110"}),t(I,{prop:"sourceStation",label:"起始切换点站点","min-width":"150","show-overflow-tooltip":""}),t(I,{prop:"targetMap",label:"目的地图名称","min-width":"160","show-overflow-tooltip":""}),t(I,{prop:"targetMapId",label:"目的地图ID",width:"110"}),t(I,{prop:"targetStation",label:"目的切换点站点","min-width":"150","show-overflow-tooltip":""}),t(I,{label:"转移代价(cm)",width:"130"},{default:n(({row:i})=>[m("span",ut,M(i.cost),1)]),_:1}),t(I,{label:"操作",width:"130",align:"right",fixed:"right"},{default:n(({row:i})=>[t(p,{link:"",type:"primary",onClick:Ee=>H(i)},{default:n(()=>[...e[11]||(e[11]=[h("编辑",-1)])]),_:1},8,["onClick"]),t(p,{link:"",type:"danger",onClick:Ee=>K(i)},{default:n(()=>[...e[12]||(e[12]=[h("删除",-1)])]),_:1},8,["onClick"])]),_:1})]),_:1},8,["data"])),[[B,d.value]]),m("div",ct,[t(W,{"current-page":b.value,"onUpdate:currentPage":e[1]||(e[1]=i=>b.value=i),"page-size":C.value,"onUpdate:pageSize":e[2]||(e[2]=i=>C.value=i),total:A.value.length,"page-sizes":[10,20,50],layout:"total, sizes, prev, pager, next, jumper",background:""},null,8,["current-page","page-size","total"])]),t(oe,{modelValue:f.value,"onUpdate:modelValue":e[9]||(e[9]=i=>f.value=i),title:V.value===null?"添加地图关系":"编辑地图关系",width:"520px",class:"map-conn-dialog","append-to-body":"",onClosed:Z},{footer:n(()=>[t(p,{onClick:e[8]||(e[8]=i=>f.value=!1)},{default:n(()=>[...e[13]||(e[13]=[h("取消",-1)])]),_:1}),t(p,{type:"primary",loading:_.value,onClick:Q},{default:n(()=>[...e[14]||(e[14]=[h("确定",-1)])]),_:1},8,["loading"])]),default:n(()=>[t(ie,{ref_key:"formRef",ref:S,model:s,rules:R,"label-width":"120px","label-position":"right"},{default:n(()=>[t(F,{label:"起始地图",prop:"sourceMap"},{default:n(()=>[t(L,{modelValue:s.sourceMap,"onUpdate:modelValue":e[3]||(e[3]=i=>s.sourceMap=i),placeholder:"请选择起始地图",filterable:"",style:{width:"100%"}},{default:n(()=>[(o(!0),c(U,null,G($.value,i=>(o(),x(X,{key:i,label:i,value:i},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])]),_:1}),t(F,{label:"起始切换点站点",prop:"sourceStation"},{default:n(()=>[t(L,{modelValue:s.sourceStation,"onUpdate:modelValue":e[4]||(e[4]=i=>s.sourceStation=i),placeholder:"请选择起始切换点站点",filterable:"","allow-create":"","default-first-option":"",style:{width:"100%"}},{default:n(()=>[(o(!0),c(U,null,G(T.value,i=>(o(),x(X,{key:i,label:i,value:i},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])]),_:1}),t(F,{label:"目的地图",prop:"targetMap"},{default:n(()=>[t(L,{modelValue:s.targetMap,"onUpdate:modelValue":e[5]||(e[5]=i=>s.targetMap=i),placeholder:"请选择目的地图",filterable:"",style:{width:"100%"}},{default:n(()=>[(o(!0),c(U,null,G($.value,i=>(o(),x(X,{key:i,label:i,value:i},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])]),_:1}),t(F,{label:"目的切换点站点",prop:"targetStation"},{default:n(()=>[t(L,{modelValue:s.targetStation,"onUpdate:modelValue":e[6]||(e[6]=i=>s.targetStation=i),placeholder:"请选择目的切换点站点",filterable:"","allow-create":"","default-first-option":"",style:{width:"100%"}},{default:n(()=>[(o(!0),c(U,null,G(T.value,i=>(o(),x(X,{key:i,label:i,value:i},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])]),_:1}),t(F,{label:"转移代价(cm)",prop:"cost"},{default:n(()=>[t(ee,{modelValue:s.cost,"onUpdate:modelValue":e[7]||(e[7]=i=>s.cost=i),min:0,step:100,controls:!1,style:{width:"100%"}},null,8,["modelValue"])]),_:1})]),_:1},8,["model"])]),_:1},8,["modelValue","title"])])}}}),pt=ne(dt,[["__scopeId","data-v-bad72017"]]),mt={class:"mm-merge"},vt={class:"merge-body"},ft={key:1,class:"merge-hint"},gt={class:"merge-hint"},_t={key:0,class:"merge-order"},yt={class:"order-list"},bt={class:"order-item"},wt={class:"order-name"},ht={class:"order-name"},kt=le({__name:"MapMergePanel",emits:["merged"],setup(r,{expose:l,emit:d}){const _=d,k=v(!1),$=v(!1),T=v([]),y=v(""),b=v([]),C=v(""),f=N(()=>T.value.filter(j=>j!==y.value)),V=N(()=>!!y.value&&b.value.length>=1&&C.value.trim().length>0);async function S(){k.value=!0;try{const j=await P.list();T.value=j.maps.map(u=>u.name),y.value=j.maps.find(u=>u.isCurrent)?.name??"",b.value=b.value.filter(u=>f.value.includes(u))}catch(j){E.error(`加载地图列表失败:${j.message}`)}finally{k.value=!1}}function s(){b.value=[],C.value=""}async function R(j){const u=[...b.value],J=C.value.trim(),w=await P.merge(u,J,j);if(w.ok){const z=w.data.overwroteCurrent?"(已覆盖当前地图)":"";E.success(`已把 ${w.data.sourceCount} 张地图合并进「${w.data.baseMap}」并另存为「${w.data.name}」${z}(站点 ${w.data.sites} · 路径 ${w.data.tracks})`),s(),await S(),_("merged",J);return}if(w.conflict){const z=J===y.value?`目标与当前地图「${J}」同名,将用合并结果覆盖当前地图,是否继续?`:`地图「${J}」已存在,是否替换原地图?`;try{await Y.confirm(z,"目标地图已存在",{type:"warning",confirmButtonText:"替换",cancelButtonText:"取消"})}catch{return}await R(!0);return}E.error(w.message)}async function A(){if(V.value){$.value=!0;try{await R(!1)}finally{$.value=!1}}}return de(S),l({refresh:S}),(j,u)=>{const J=Ce,w=Se,z=he,H=Me,Z=ke,Q=_e,K=pe,g=we;return o(),c("div",mt,[t(J,{class:"merge-tip",type:"info",closable:!1,"show-icon":""},{title:n(()=>[...u[3]||(u[3]=[h(" 与桌面端「合并」一致:以",-1),m("strong",null,"当前使用地图",-1),h("为底图,把选中的地图依次合并进来(自动分配独立图层、 站点 / 路径 ID 自动避让,互不冲突),再另存为目标地图。可用于多楼层汇总、多区域拼接。 ",-1)])]),_:1}),!k.value&&!y.value?(o(),x(J,{key:0,class:"merge-tip",type:"warning",closable:!1,"show-icon":"",title:"当前未设置「使用中」地图。请先到「服务器地图」页对某张地图点「使用」,再来执行合并。"})):O("",!0),m("div",vt,[t(g,{"label-width":"120px","label-position":"right",class:"merge-form",onSubmit:u[2]||(u[2]=ae(()=>{},["prevent"]))},{default:n(()=>[t(z,{label:"底图(当前地图)"},{default:n(()=>[y.value?(o(),x(w,{key:0,type:"success",effect:"plain"},{default:n(()=>[h(M(y.value),1)]),_:1})):(o(),c("span",ft,"未设置"))]),_:1}),t(z,{label:"合并进来的地图",required:""},{default:n(()=>[t(Z,{modelValue:b.value,"onUpdate:modelValue":u[0]||(u[0]=e=>b.value=e),multiple:"",filterable:"",loading:k.value,disabled:!y.value,placeholder:"选择 1 张及以上要合并进当前地图的地图",style:{width:"100%"}},{default:n(()=>[(o(!0),c(U,null,G(f.value,e=>(o(),x(H,{key:e,label:e,value:e},null,8,["label","value"]))),128))]),_:1},8,["modelValue","loading","disabled"])]),_:1}),t(z,{label:"另存为",required:""},{default:n(()=>[t(Q,{modelValue:C.value,"onUpdate:modelValue":u[1]||(u[1]=e=>C.value=e),disabled:!y.value,placeholder:"目标地图名称(与当前地图同名则覆盖当前地图)",clearable:"",maxlength:"60"},null,8,["modelValue","disabled"])]),_:1}),t(z,null,{default:n(()=>[t(K,{type:"primary",loading:$.value,disabled:!V.value,onClick:A},{default:n(()=>[...u[4]||(u[4]=[h("开始合并",-1)])]),_:1},8,["loading","disabled"]),t(K,{text:"",disabled:!y.value,onClick:s},{default:n(()=>[...u[5]||(u[5]=[h("重置",-1)])]),_:1},8,["disabled"]),m("span",gt,"已选 "+M(b.value.length)+" 张",1)]),_:1})]),_:1}),y.value?(o(),c("div",_t,[u[7]||(u[7]=m("div",{class:"order-title"},"叠加顺序",-1)),m("ol",yt,[m("li",bt,[t(w,{size:"small",type:"success",effect:"plain"},{default:n(()=>[...u[6]||(u[6]=[h("底图",-1)])]),_:1}),m("span",wt,M(y.value),1)]),(o(!0),c(U,null,G(b.value,(e,a)=>(o(),c("li",{key:e,class:"order-item"},[t(w,{size:"small",type:"info",effect:"plain"},{default:n(()=>[h("叠加 "+M(a+1),1)]),_:2},1024),m("span",ht,M(e),1)]))),128))])])):O("",!0)])])}}}),$t=ne(kt,[["__scopeId","data-v-bd67282a"]]),Mt={class:"map-mgr-page"},Ct={class:"mm-section"},St={class:"map-mgr-header"},xt={class:"actions"},Vt={key:0},jt={key:1},Et={class:"mm-body"},It={class:"map-name"},Nt={class:"mm-detail-head"},Tt={class:"mm-detail-title"},Bt={class:"map-name"},Ot={key:0,class:"mm-detail-meta"},Rt={class:"mm-json-wrap"},Jt=le({__name:"MapManagementView",setup(r){const l=Ae(),d=v(),_=v("maps");function k(){_.value="maps",w()}const $=v(!1),T=v([]),y=v(""),b=v(""),C=v(""),f=v(""),V=v(""),S=v(""),s=v(!1),R=N(()=>T.value.find(e=>e.name===f.value)?.isCurrent??!1);function A({row:e}){const a=[];return e.isCurrent&&a.push("current-row"),e.name===f.value&&a.push("viewing-row"),a.join(" ")}async function j(e){s.value=!0,S.value="",V.value="";try{const a=await P.readContent(e);V.value=a.path,S.value=a.content}catch(a){E.error(`加载地图配置失败:${a.message}`)}finally{s.value=!1}}async function u(e){f.value=e.name,await j(e.name),await fe(),d.value?.setCurrentRow(e)}function J(e){f.value===e.name&&S.value||u(e)}async function w(){$.value=!0;try{const e=await P.list();T.value=e.maps,y.value=e.directory;const a=e.maps.find(p=>p.isCurrent);if(b.value=a?.name??"",f.value&&!e.maps.some(p=>p.name===f.value))f.value="",S.value="",V.value="",d.value?.setCurrentRow(void 0);else if(f.value){const p=e.maps.find(I=>I.name===f.value);await j(f.value),p&&(await fe(),d.value?.setCurrentRow(p))}}catch(e){E.error(`加载地图列表失败:${e.message}`)}finally{$.value=!1}}function z(){l.push({path:"/admin/map-editor",query:{new:"1"}})}function H(e){l.push({path:"/admin/map-editor",query:{map:e.name}})}async function Z(e){if(!e.isCurrent){C.value=e.name;try{const a=await P.sceneTaskStatus();if(a.hasTask){const I=a.busyCars.slice(0,5).map(D=>`${D.name}(#${D.id}):${D.reasons.join("、")}`).join(` `);await Y.alert(`场景内仍有 ${a.busyCount} 台车辆存在任务,无法切换当前地图。 ${I}`,"禁止切换地图",{type:"warning",confirmButtonText:"我知道了"});return}await Y.confirm(`确认将「${e.name}」设为当前项目默认使用的地图?切换会重新加载场景。`,"切换使用地图",{type:"warning",confirmButtonText:"确认切换",cancelButtonText:"取消"});const p=await P.use(e.name);E.success(`已切换到「${p.name}」:${p.sites} 站点 / ${p.tracks} 路径`),await w()}catch(a){if(a==="cancel"||a==="close")return;E.error(`切换失败:${a.message}`)}finally{C.value=""}}}const Q=/^[^\\/:*?"<>|]+$/;async function K(e){try{const p=((await Y.prompt("请输入新的地图名称","重命名地图",{inputValue:e.name,inputPattern:Q,inputErrorMessage:'名称不能包含 \\ / : * ? " < > | 等字符',confirmButtonText:"确定",cancelButtonText:"取消"})).value??"").trim();if(!p||p===e.name)return;C.value=e.name,await P.rename(e.name,p),f.value===e.name&&(f.value=p),E.success(`已重命名为「${p}」`),await w()}catch(a){if(a==="cancel"||a==="close")return;E.error(`重命名失败:${a.message}`)}finally{C.value=""}}async function g(e){try{await Y.confirm(`确认删除地图「${e.name}」?该操作会从固定文件夹中移除对应 JSON 文件,不可恢复。`,"删除地图",{type:"warning",confirmButtonText:"删除",cancelButtonText:"取消",confirmButtonClass:"el-button--danger"}),await P.delete(e.name),f.value===e.name&&(f.value="",S.value="",V.value="",d.value?.setCurrentRow(void 0)),E.success(`已删除「${e.name}」`),await w()}catch(a){if(a==="cancel"||a==="close")return;E.error(`删除失败:${a.message}`)}}return de(w),(e,a)=>{const p=pe,I=Ce,D=Se,W=be,X=$e,L=Ue,F=ge,ee=Pe,ie=ze,oe=ye;return o(),c("div",Mt,[t(ie,{modelValue:_.value,"onUpdate:modelValue":a[0]||(a[0]=B=>_.value=B),type:"border-card",class:"map-mgr-tabs admin-tabs"},{default:n(()=>[t(ee,{label:"服务器地图",name:"maps"},{default:n(()=>[m("div",Ct,[m("div",St,[a[3]||(a[3]=m("span",{class:"subtitle"}," 统一维护后台所有地图资源(固定文件夹 / JSON),可新增 / 使用 / 重命名 / 编辑 / 删除。 ",-1)),m("div",xt,[t(p,{loading:$.value,onClick:w},{default:n(()=>[...a[1]||(a[1]=[h("刷新",-1)])]),_:1},8,["loading"]),t(p,{type:"primary",onClick:z},{default:n(()=>[...a[2]||(a[2]=[h("新增地图",-1)])]),_:1})])]),y.value?(o(),x(I,{key:0,class:"dir-tip",type:"info",closable:!1,"show-icon":""},{title:n(()=>[a[5]||(a[5]=h(" 地图文件夹:",-1)),m("code",null,M(y.value),1),b.value?(o(),c("span",Vt,[a[4]||(a[4]=h(" · 当前使用:",-1)),m("strong",null,M(b.value),1)])):(o(),c("span",jt," · 当前未设置默认使用地图"))]),_:1})):O("",!0),m("div",Et,[t(L,{shadow:"never",class:"mm-list-card"},{default:n(()=>[ce((o(),x(X,{ref_key:"tableRef",ref:d,data:T.value,class:"map-table",border:"","highlight-current-row":"","row-key":"name","row-class-name":A,"empty-text":"固定文件夹内还没有地图,点击右上角「新增地图」创建。",onRowClick:J},{default:n(()=>[t(W,{label:"地图名称","min-width":"180"},{default:n(({row:B})=>[m("span",It,M(B.name),1),B.isCurrent?(o(),x(D,{key:0,size:"small",type:"success",effect:"dark",class:"current-tag"},{default:n(()=>[...a[6]||(a[6]=[h(" 使用中 ",-1)])]),_:1})):O("",!0)]),_:1}),t(W,{label:"修改时间",prop:"modified",width:"170"}),t(W,{label:"操作",width:"260",align:"right"},{default:n(({row:B})=>[t(p,{size:"small",type:"primary",plain:"",disabled:B.isCurrent,loading:C.value===B.name,onClick:ae(i=>Z(B),["stop"])},{default:n(()=>[h(M(B.isCurrent?"使用中":"使用"),1)]),_:2},1032,["disabled","loading","onClick"]),t(p,{size:"small",onClick:ae(i=>K(B),["stop"])},{default:n(()=>[...a[7]||(a[7]=[h("重命名",-1)])]),_:1},8,["onClick"]),t(p,{size:"small",onClick:ae(i=>H(B),["stop"])},{default:n(()=>[...a[8]||(a[8]=[h("编辑",-1)])]),_:1},8,["onClick"]),t(p,{size:"small",type:"danger",plain:"",onClick:ae(i=>g(B),["stop"])},{default:n(()=>[...a[9]||(a[9]=[h("删除",-1)])]),_:1},8,["onClick"])]),_:1})]),_:1},8,["data"])),[[oe,$.value]])]),_:1}),t(L,{shadow:"never",class:"mm-detail-card"},{default:n(()=>[f.value?(o(),c(U,{key:1},[m("div",Nt,[m("div",Tt,[m("span",Bt,M(f.value),1),R.value?(o(),x(D,{key:0,size:"small",type:"success",effect:"dark"},{default:n(()=>[...a[10]||(a[10]=[h("使用中",-1)])]),_:1})):O("",!0)]),V.value?(o(),c("div",Ot,[m("code",null,M(V.value),1)])):O("",!0)]),ce((o(),c("div",Rt,[S.value?(o(),x(nt,{key:0,raw:S.value},null,8,["raw"])):s.value?O("",!0):(o(),x(F,{key:1,description:"未能加载地图配置"}))])),[[oe,s.value]])],64)):(o(),x(F,{key:0,description:"点击左侧地图行,右侧预览 JSON 配置(可按 {} 折叠)"}))]),_:1})])])]),_:1}),t(ee,{label:"多地图连接管理",name:"connections"},{default:n(()=>[t(pt)]),_:1}),t(ee,{label:"地图合并",name:"merge"},{default:n(()=>[t($t,{onMerged:k})]),_:1})]),_:1},8,["modelValue"])])}}}),na=ne(Jt,[["__scopeId","data-v-2d014670"]]);export{na as default};