5 lines
22 KiB
JavaScript
5 lines
22 KiB
JavaScript
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<b.value.length-1},null,8,["label","value","depth","comma"]))),128)),m("div",Xe,[m("span",Ye,M(y.value),1),r.comma?(o(),c("span",He,",")):O("",!0)])])):O("",!0)],64)):(o(),c("div",Ze,[r.label?(o(),c("span",Qe,M(r.label)+": ",1)):O("",!0),m("span",{class:me(f.value)},M(V.value),3),r.comma?(o(),c("span",We,",")):O("",!0)]))],2))}}),xe=ne(et,[["__scopeId","data-v-99ed5a4d"]]),tt={class:"json-fold-viewer"},at={key:1,class:"json-fold-fallback"},lt=le({__name:"JsonFoldViewer",props:{raw:{},data:{}},setup(r){const l=r,d=N(()=>{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=
|
||||
|
|
`);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()
|