Files
Migu2.0/MiGu.Server/wwwroot/assets/WizardView-DniZ4Y5l.js
T
zhaowei.huangandCursor 7382e85598 feat(platform): 部署配置向导 + 地图管理,地图编辑器接入统一存取与 AI 助手
- 配置向导:登录按 deployment 画像引导平台选型(导航方式/模块/场景),未完成则路由守卫强制进入 /wizard;选型驱动菜单按需裁剪,并联动 SimpleLite 写 plugins/active-scenes.json + 透传 --scenes 选择性加载导航场景插件
- 地图管理页:服务器地图列表/使用/重命名/删除、地图合并、多地图连接管理
- 地图编辑器:项目存取改为存入地图管理统一目录(同名替换确认),支持 ?map=/?new= 进入,新增右侧可停靠 AI 助手面板
- 集成 PTL 拣选模块;新增车队分配面板(运维总览/筛选联动)
- SimpleLiteBuildSync 同步运行时依赖 DLL;重新构建前端静态资源

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-03 09:37:07 +08:00

2 lines
5.8 KiB
JavaScript

import{aU as x,aI as L,bv as M,b7 as P,X as f,aE as o,aB as t,aF as A,bq as l,bt as v,aH as d,bJ as r,ai as h,bj as b,aD as z,bh as y,bg as F,ax as k,Q as O,r as R,bx as j,b9 as i,aw as G,b3 as C,aq as H,aT as J,aC as W,aG as K,as as Q,ad as U,ak as X}from"./index-368apsQG.js";/* empty css *//* empty css *//* empty css */import{_ as Y}from"./FRLD-logo-white-no_title-BE78iS6n.js";async function Z(){const{data:u}=await x.get("/wizard/options");return u}async function ss(){const{data:u}=await x.get("/wizard/profile");return u}async function ts(u){const{data:p}=await x.put("/wizard/profile",u);return p}const as={class:"wizard-page"},es={class:"wz-card"},ns={class:"wz-head"},is={class:"wz-user"},os={key:0,class:"wz-loading"},ls={key:1,class:"wz-grid"},ds={class:"wz-main"},cs={class:"wz-section"},rs={class:"wz-section-head"},us={class:"chip-grid"},vs=["onClick"],ms={class:"chip-name"},ps={class:"chip-desc"},_s={class:"wz-section"},gs={class:"wz-section-head"},fs={class:"chip-grid"},hs=["onClick"],bs={class:"chip-name"},ws={class:"chip-desc"},zs={key:0,class:"wz-section"},ys={class:"wz-section-head"},ks={class:"chip-grid"},Cs=["onClick"],Ks={class:"chip-name"},xs={class:"chip-desc"},Es={class:"wz-summary"},Ss={class:"sum-row"},Ts={class:"sum-row"},Ns={class:"sum-row"},Vs={class:"sum-scenes"},Bs={key:0,class:"sum-empty"},Ws={class:"wz-foot"},$s={class:"foot-right"},qs=L({__name:"WizardView",setup(u){const p=j(),m=M(),E=y(!0),_=y(!1),g=y(null),e=F({platformType:"standard",navigationKinds:[],modules:[],scenarios:[]}),S=k(()=>g.value?.scenarios?.templates??[]),$={magnetic:"scene.magnetic",qrcode:"scene.qrcode",laser:"scene.laser"},T=k(()=>e.navigationKinds.map(n=>$[n]??`scene.${n}`)),N=k(()=>e.navigationKinds.length>0);function w(n,s){const c=n.indexOf(s);c>=0?n.splice(c,1):n.push(s)}P(async()=>{try{const[n,s]=await Promise.all([Z(),ss()]);g.value=n,e.platformType=s.platformType||"standard",e.navigationKinds=[...s.navigationKinds??[]],e.modules=s.modules?.length?[...s.modules]:["wms"],e.scenarios=[...s.scenarios??[]]}catch(n){f.error(`加载向导失败:${n instanceof Error?n.message:String(n)}`)}finally{E.value=!1}});async function q(){if(!N.value){f.warning("请至少选择一种导航方式");return}_.value=!0;try{await ts({platformType:e.platformType,modules:e.modules,navigationKinds:e.navigationKinds,scenarios:e.scenarios}),m.markWizardDone(),f.success("部署配置已保存"),p.push(m.scope==="RCSMonitor"?"/monitor/map":"/admin/dashboard")}catch(n){f.error(`保存失败:${n instanceof Error?n.message:String(n)}`)}finally{_.value=!1}}function D(){m.logout(),p.push("/login")}return(n,s)=>{const c=O,I=U,V=R;return i(),o("div",as,[s[14]||(s[14]=t("div",{class:"wz-orb wz-orb-a","aria-hidden":"true"},null,-1)),s[15]||(s[15]=t("div",{class:"wz-orb wz-orb-b","aria-hidden":"true"},null,-1)),t("div",es,[t("header",ns,[s[0]||(s[0]=A('<div class="wz-brand" data-v-a4c5be60><div class="wz-mark" data-v-a4c5be60><img src="'+Y+'" alt="迷毂" class="wz-mark-img" data-v-a4c5be60></div><div class="wz-titles" data-v-a4c5be60><div class="wz-title" data-v-a4c5be60>平台配置向导</div><div class="wz-sub" data-v-a4c5be60>按需选择导航方式与功能模块,系统据此裁剪界面并按需加载内核能力</div></div></div>',1)),t("div",is,l(v(m).user?.displayName??v(m).user?.username??""),1)]),E.value?(i(),o("div",os,"正在加载配置选项…")):(i(),o("div",ls,[t("div",ds,[t("section",cs,[t("div",rs,[d(c,null,{default:r(()=>[d(v(G))]),_:1}),s[1]||(s[1]=t("h3",null,"导航方式",-1)),s[2]||(s[2]=t("span",{class:"req"},"至少选 1 项",-1))]),t("div",us,[(i(!0),o(h,null,b(g.value?.navigationKinds??[],a=>(i(),o("button",{key:a.id,type:"button",class:C(["chip",{on:e.navigationKinds.includes(a.id)}]),onClick:B=>w(e.navigationKinds,a.id)},[t("div",ms,l(a.name),1),t("div",ps,l(a.description),1)],10,vs))),128))])]),t("section",_s,[t("div",gs,[d(c,null,{default:r(()=>[d(v(H))]),_:1}),s[3]||(s[3]=t("h3",null,"功能模块",-1))]),t("div",fs,[(i(!0),o(h,null,b(g.value?.modules??[],a=>(i(),o("button",{key:a.id,type:"button",class:C(["chip",{on:e.modules.includes(a.id)}]),onClick:B=>w(e.modules,a.id)},[t("div",bs,l(a.name),1),t("div",ws,l(a.description),1)],10,hs))),128))])]),S.value.length?(i(),o("section",zs,[t("div",ys,[d(c,null,{default:r(()=>[d(v(J))]),_:1}),s[4]||(s[4]=t("h3",null,"业务场景",-1))]),t("div",ks,[(i(!0),o(h,null,b(S.value,a=>(i(),o("button",{key:a.id,type:"button",class:C(["chip",{on:e.scenarios.includes(a.id)}]),onClick:B=>w(e.scenarios,a.id)},[t("div",Ks,l(a.name),1),t("div",xs,l(a.category),1)],10,Cs))),128))])])):z("",!0)]),t("aside",Es,[s[8]||(s[8]=t("div",{class:"sum-title"},"已选概览",-1)),t("div",Ss,[s[5]||(s[5]=t("span",null,"导航方式",-1)),t("b",null,l(e.navigationKinds.length),1)]),t("div",Ts,[s[6]||(s[6]=t("span",null,"功能模块",-1)),t("b",null,l(e.modules.length),1)]),t("div",Ns,[s[7]||(s[7]=t("span",null,"业务场景",-1)),t("b",null,l(e.scenarios.length),1)]),s[9]||(s[9]=t("div",{class:"sum-divider"},null,-1)),s[10]||(s[10]=t("div",{class:"sum-label"},"将激活的内核场景插件",-1)),t("div",Vs,[(i(!0),o(h,null,b(T.value,a=>(i(),W(I,{key:a,size:"small",effect:"dark",class:"sum-tag"},{default:r(()=>[K(l(a),1)]),_:2},1024))),128)),T.value.length?z("",!0):(i(),o("span",Bs,"(请先选择导航方式)"))])])])),t("footer",Ws,[d(V,{text:"",class:"logout-btn",onClick:D},{default:r(()=>[...s[11]||(s[11]=[K("退出登录",-1)])]),_:1}),t("div",$s,[s[13]||(s[13]=t("span",{class:"foot-hint"},"保存后写入部署画像并联动 SimpleLite 选择性加载导航场景",-1)),d(V,{type:"primary",loading:_.value,disabled:!N.value,onClick:q},{default:r(()=>[_.value?z("",!0):(i(),W(c,{key:0,class:"btn-ic"},{default:r(()=>[d(v(Q))]),_:1})),s[12]||(s[12]=K("完成并进入平台 ",-1))]),_:1},8,["loading","disabled"])])])])])}}}),As=X(qs,[["__scopeId","data-v-a4c5be60"]]);export{As as default};