- 配置向导:登录按 deployment 画像引导平台选型(导航方式/模块/场景),未完成则路由守卫强制进入 /wizard;选型驱动菜单按需裁剪,并联动 SimpleLite 写 plugins/active-scenes.json + 透传 --scenes 选择性加载导航场景插件 - 地图管理页:服务器地图列表/使用/重命名/删除、地图合并、多地图连接管理 - 地图编辑器:项目存取改为存入地图管理统一目录(同名替换确认),支持 ?map=/?new= 进入,新增右侧可停靠 AI 助手面板 - 集成 PTL 拣选模块;新增车队分配面板(运维总览/筛选联动) - SimpleLiteBuildSync 同步运行时依赖 DLL;重新构建前端静态资源 Co-authored-by: Cursor <cursoragent@cursor.com>
2 lines
6.7 KiB
JavaScript
2 lines
6.7 KiB
JavaScript
import{aI as K,b9 as c,aE as f,aB as r,bq as S,aH as d,bJ as s,aG as i,ad as L,aC as g,s as q,r as P,aD as B,v as H,ai as G,bj as O,u as X,E as Q,ax as $,ak as F,bh as k,b7 as R,X as V,bg as J,t as W,ac as Y,a9 as Z,bK as ee,bA as te,bt as j,bi as ae,as as le}from"./index-368apsQG.js";/* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css */import{P as se}from"./PermissionGuard-DUg2FNrM.js";/* empty css *//* empty css *//* empty css *//* empty css */import{b as D,r as I,e as ne}from"./reflection-C0K7EJ_N.js";/* empty css */const oe={class:"mmcg"},ie={class:"mmcg-head"},de={class:"mmcg-title"},ce={key:0,class:"mmcg-empty muted"},re={key:2,class:"mmcg-orphans"},ue={class:"orphan-list"},me=K({__name:"MapMonitorConfigGroup",props:{title:{},available:{},selected:{},emptyTip:{}},emits:["update:selected"],setup(p,{emit:M}){const n=p,m=M,_=$(()=>n.available.length?n.selected.length?`${n.selected.length} / ${n.available.length}`:`白名单空 = 显示全部 (${n.available.length})`:"空"),a=$(()=>n.selected.filter(u=>!n.available.includes(u))),b=$(()=>n.available.length>n.selected.length);function y(u){const e=[...u.filter(l=>typeof l=="string"),...a.value];m("update:selected",e)}function E(){m("update:selected",[...n.available,...a.value])}function h(){m("update:selected",[...a.value])}function x(u){m("update:selected",n.selected.filter(t=>t!==u))}function z(){m("update:selected",n.selected.filter(u=>n.available.includes(u)))}return(u,t)=>{const e=L,l=P,w=q,N=X,T=H,U=Q;return c(),f("section",oe,[r("header",ie,[r("span",de,S(p.title),1),d(e,{size:"small",effect:"plain",type:"info"},{default:s(()=>[i(S(_.value),1)]),_:1}),t[2]||(t[2]=r("div",{class:"spacer"},null,-1)),p.available.length?(c(),g(w,{key:0},{default:s(()=>[d(l,{size:"small",disabled:!b.value,onClick:E},{default:s(()=>[...t[0]||(t[0]=[i("全选",-1)])]),_:1},8,["disabled"]),d(l,{size:"small",disabled:!p.selected.length,onClick:h},{default:s(()=>[...t[1]||(t[1]=[i("清空",-1)])]),_:1},8,["disabled"])]),_:1})):B("",!0)]),p.available.length?(c(),g(T,{key:1,"model-value":p.selected,class:"mmcg-grid","onUpdate:modelValue":y},{default:s(()=>[(c(!0),f(G,null,O(p.available,v=>(c(),g(N,{key:v,value:v,label:v,class:"mmcg-cb"},null,8,["value","label"]))),128))]),_:1},8,["model-value"])):(c(),f("p",ce,S(p.emptyTip),1)),a.value.length?(c(),f("div",re,[d(U,{type:"warning",closable:!1,"show-icon":"",title:`检测到 ${a.value.length} 个残留键(后端已经不再暴露,但仍在白名单中)`},{default:s(()=>[r("div",ue,[(c(!0),f(G,null,O(a.value,v=>(c(),g(e,{key:v,type:"warning",size:"small",closable:"",onClose:o=>x(v)},{default:s(()=>[i(S(v),1)]),_:2},1032,["onClose"]))),128)),d(l,{link:"",type:"warning",size:"small",onClick:z},{default:s(()=>[...t[3]||(t[3]=[i("一键清理全部残留",-1)])]),_:1})])]),_:1},8,["title"])])):B("",!0)])}}}),A=F(me,[["__scopeId","data-v-242bdaa0"]]),pe={class:"mmc-header"},ve={class:"mmc-tab-body"},fe=K({__name:"MapMonitorConfigView",setup(p){const M=[{value:"car",label:"车辆 (Car)"},{value:"site",label:"站点 (Site)"},{value:"track",label:"路径 (Track)"}],n=k("car"),m=k(!1),_=k(!1),a=J(D()),b=J(ne()),y=k(JSON.stringify(D())),E=$(()=>y.value!==JSON.stringify(a));function h(t,e){for(const l of M)t[l.value].fields=[...e[l.value]?.fields??[]],t[l.value].status=[...e[l.value]?.status??[]],t[l.value].methods=[...e[l.value]?.methods??[]]}async function x(t=!1){m.value=!0;try{const e=await I.getMonitorConfig();h(a,e.config),h(b,e.available),y.value=JSON.stringify(a),t&&V.success("已重载")}catch(e){V.error(`加载失败:${e instanceof Error?e.message:String(e)}`)}finally{m.value=!1}}async function z(){_.value=!0;try{const t=await I.saveMonitorConfig({car:{...a.car},site:{...a.site},track:{...a.track}});h(a,t),y.value=JSON.stringify(a),V.success("已保存(已写入 simple.json)")}catch(t){V.error(`保存失败:${t instanceof Error?t.message:String(t)}`)}finally{_.value=!1}}function u(t,e,l){a[t][e]=[...l]}return R(()=>x()),(t,e)=>{const l=L,w=P,N=Z,T=Y,U=W,v=te;return c(),g(se,{"widget-id":"ConfigCenter"},{default:s(()=>[d(U,{shadow:"never",class:"mmc-card"},{header:s(()=>[r("div",pe,[e[6]||(e[6]=r("span",{class:"mmc-title"},"地图监控配置",-1)),d(l,{size:"small",effect:"plain"},{default:s(()=>[...e[2]||(e[2]=[i("section=map-monitor",-1)])]),_:1}),E.value?(c(),g(l,{key:0,size:"small",type:"warning",effect:"dark"},{default:s(()=>[...e[3]||(e[3]=[i("未保存",-1)])]),_:1})):B("",!0),e[7]||(e[7]=r("div",{class:"spacer"},null,-1)),d(w,{size:"small",icon:j(ae),loading:m.value,onClick:e[0]||(e[0]=o=>x(!0))},{default:s(()=>[...e[4]||(e[4]=[i("重载",-1)])]),_:1},8,["icon","loading"]),d(w,{size:"small",type:"primary",icon:j(le),loading:_.value,disabled:!E.value,onClick:z},{default:s(()=>[...e[5]||(e[5]=[i(" 保存 ",-1)])]),_:1},8,["icon","loading","disabled"])])]),default:s(()=>[e[8]||(e[8]=r("p",{class:"mmc-desc"},[i(" 勾选「地图监控」右侧选中信息面板要展示的内容白名单(按对象类型 - 车辆 / 站点 / 路径 分组)。 三组分别控制 "),r("b",null,"属性"),i("、"),r("b",null,"状态"),i("、"),r("b",null,"动作"),i(" Tab 里可见的字段 / 状态项 / 可执行方法。 每组留空 = 显示全部;勾选任何一项即进入白名单模式(仅显示已勾选)。保存后直接写入 SimpleLite 的 "),r("code",null,"simple.json"),i(" ("),r("code",null,"Configuration.conf.monitorVisibility"),i(")。 ")],-1)),d(T,{modelValue:n.value,"onUpdate:modelValue":e[1]||(e[1]=o=>n.value=o),class:"mmc-tabs"},{default:s(()=>[(c(),f(G,null,O(M,o=>d(N,{key:o.value,label:o.label,name:o.value},{default:s(()=>[ee((c(),f("div",ve,[d(A,{title:"属性字段(Properties)",available:b[o.value].fields,selected:a[o.value].fields,"empty-tip":"该类型暂未发现任何 [FieldMember]。在 SimpleLite 端添加字段后点重载会刷新。","onUpdate:selected":C=>u(o.value,"fields",C)},null,8,["available","selected","onUpdate:selected"]),d(A,{title:"状态项(Status)",available:b[o.value].status,selected:a[o.value].status,"empty-tip":"该类型暂未发现任何 status 字段(来自 obj.status 反射)。","onUpdate:selected":C=>u(o.value,"status",C)},null,8,["available","selected","onUpdate:selected"]),d(A,{title:"可执行动作(Methods)",available:b[o.value].methods,selected:a[o.value].methods,"empty-tip":"该类型暂未发现任何 [MethodMember] 方法。","onUpdate:selected":C=>u(o.value,"methods",C)},null,8,["available","selected","onUpdate:selected"])])),[[v,m.value]])]),_:2},1032,["label","name"])),64))]),_:1},8,["modelValue"])]),_:1})]),_:1})}}}),ze=F(fe,[["__scopeId","data-v-4d3be43b"]]);export{ze as default};
|