From 3356c2cd1266d4f645539be0a2dc3e7a64bd7ab8 Mon Sep 17 00:00:00 2001 From: "zhaowei.huang" <228127304@qq.com> Date: Fri, 29 May 2026 23:53:00 +0800 Subject: [PATCH] =?UTF-8?q?chore(web):=20=E9=87=8D=E6=96=B0=E6=9E=84?= =?UTF-8?q?=E5=BB=BA=E5=89=8D=E7=AB=AF=E9=9D=99=E6=80=81=E8=B5=84=E6=BA=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 更新 MiGu.Server/wwwroot/assets 产物与 index.html 入口哈希,对应本次前端源码改动 --- ...B4kZBtzl.js => AnnotationView-YwpSTL8W.js} | 2 +- .../wwwroot/assets/AppShell-Ca-gt8yg.js | 1 + ...ell-BiaaUnpv.css => AppShell-DXCOBttv.css} | 2 +- .../wwwroot/assets/AppShell-VGUYhBS-.js | 1 - .../wwwroot/assets/AuthRoleView-BSUZTQqc.js | 1 + .../wwwroot/assets/AuthRoleView-C2B4SEfx.js | 1 - .../wwwroot/assets/AuthRoleView-CTEbfTF-.css | 1 + ...w-C8B0n-h4.js => CarPanelView-Cd4CJJOn.js} | 2 +- .../assets/ChargePolicyView-BxJAPKKv.js | 1 - .../assets/ChargePolicyView-DdHAu5KF.js | 1 + .../assets/ConfigPageBase-C8mupMSy.css | 1 - .../assets/ConfigPageBase-DOgE48Ff.css | 1 + ...CPF7i-FB.js => ConfigPageBase-DmCcZeia.js} | 2 +- .../assets/CustomWidgetView-BfTj_5GQ.js | 1 + .../assets/CustomWidgetView-C3i7AzNk.js | 1 - ...-Cx5dlpj0.js => DashboardView-Djx6JpAP.js} | 30 +++++----- .../wwwroot/assets/DeviceHubView-BZqZwZ53.js | 1 + .../wwwroot/assets/DeviceHubView-DdDpWQEi.js | 1 - .../ExternalIntegrationView-C7sUKgfK.js | 1 + .../ExternalIntegrationView-ERIDBz7X.js | 1 - .../assets/FleetLifecycleView-BS2XUbob.js | 1 + .../assets/FleetLifecycleView-qDfurtqR.js | 1 - .../wwwroot/assets/LocationView-BM2ilHau.js | 1 - .../wwwroot/assets/LocationView-BfhVGCHM.js | 1 + .../wwwroot/assets/LoginView-96di2FHF.js | 1 + .../wwwroot/assets/LoginView-D_TsC36_.js | 1 - .../wwwroot/assets/MapEditorView-BGZHXeja.js | 1 + .../wwwroot/assets/MapEditorView-CaYR0T6s.js | 1 - .../assets/MapMonitorConfigView-B0CO4izu.js | 1 + .../assets/MapMonitorConfigView-BC-sAP6v.css | 1 + .../assets/MapMonitorConfigView-BIPqxkT5.js | 1 - .../assets/MapMonitorConfigView-CwieeOtF.css | 1 - .../assets/MapMonitorView-BfZJy2Kd.css | 1 - .../wwwroot/assets/MapMonitorView-C7AnAWKd.js | 1 - .../assets/MapMonitorView-CzPLvGSc.css | 1 + .../wwwroot/assets/MapMonitorView-DDv0PMYv.js | 2 + ...DJACU.js => MissionEditorView-B5xzVX97.js} | 2 +- ...xd.js => MonitorDashboardView-Bx7SRcpo.js} | 2 +- .../assets/MonitorDashboardView-C0ey2wYu.css | 1 - .../assets/MonitorDashboardView-CzA4Ot5V.css | 1 + .../wwwroot/assets/MonitorMapView-BKbbf9HS.js | 1 + .../wwwroot/assets/MonitorMapView-CClr5C8k.js | 2 - .../assets/MonitorMapView-CS49gkPx.css | 1 - ...AcDK.js => OpsActionPanelView-BXPdR8uI.js} | 4 +- .../wwwroot/assets/OpsConfigView-CYCdWXE0.js | 1 - .../wwwroot/assets/OpsConfigView-XdjkiZNS.js | 1 + .../assets/PermissionGuard-B-YLUKV0.css | 1 + .../assets/PermissionGuard-BxagL6-4.js | 1 - .../assets/PermissionGuard-CFqrez64.css | 1 - .../assets/PermissionGuard-DIZkcwyW.js | 1 + ...w-BUHRaurd.js => PlaybackView-Ccqdz_3D.js} | 2 +- ...s-UWlW.js => ProcessPanelView-BFyQO5Cz.js} | 2 +- ...h.js => ProjectPropertiesView-dRQK9OvP.js} | 4 +- ....js => ReflectionManagerPanel-BCWRRPd3.js} | 6 +- .../ReflectionManagerPanel-Btm77NGt.css | 1 + .../ReflectionManagerPanel-CZMd80yF.css | 1 - .../assets/RoutingPolicyView-3wwqo9Ra.js | 1 + .../assets/RoutingPolicyView-nAYjmKqM.js | 1 - .../assets/ScenarioTemplateView-teC0oCIP.js | 1 + .../assets/ScenarioTemplateView-w7x237Pe.js | 1 - ...nxZ-d2X.js => ScriptPanelView-lRrVtfnM.js} | 2 +- .../assets/ServiceStatusView-BYOao_aT.js | 1 - .../assets/ServiceStatusView-ClLWqMCP.js | 1 + .../assets/SystemConfigView-ByKpKyii.js | 2 - .../assets/SystemConfigView-C8IWuAG2.js | 2 + .../assets/TaskAllocationView-C8FWSK2V.js | 1 + .../assets/TaskAllocationView-DFHXgXFu.js | 1 - ...U1RVSBQt.js => TrackTableView-Cam8um3K.js} | 2 +- .../assets/TrafficRuleView-BLrd2OSe.js | 1 - .../assets/TrafficRuleView-LXvXdW1d.js | 1 + .../assets/VehicleMaintenanceView-BU7QbnHX.js | 1 - .../assets/VehicleMaintenanceView-IaG3gFys.js | 1 + ...3D-D7MYl2zT.js => Workspace3D-CHeE5zz3.js} | 2 +- .../assets/WorkspaceCanvasToolbar-1mCqpdq_.js | 1 - .../WorkspaceCanvasToolbar-CT6FJSzK.css | 1 - ...{index-CZ3kdi1Q.css => index-BCzHO7Kq.css} | 2 +- .../{index-DrvLDslf.js => index-C6ULY2Si.js} | 56 +++++++++---------- ...apEdit-DghrYjHu.js => mapEdit-D6_KBS33.js} | 2 +- .../{ops-CZkWvMAR.js => ops-BCWJhnEq.js} | 2 +- ...ion-CizY2UtH.js => projection-b1x6abrR.js} | 2 +- ...ion-Dr3WM5Rz.js => reflection-CKXyOCM_.js} | 2 +- ...AdbySW.js => useMapEditStream-CS7BmW9Q.js} | 2 +- .../assets/useProjectionStream-BoSdoSNC.js | 1 + .../assets/useProjectionStream-DMf_8m8X.js | 1 - MiGu.Server/wwwroot/index.html | 4 +- 85 files changed, 101 insertions(+), 103 deletions(-) rename MiGu.Server/wwwroot/assets/{AnnotationView-B4kZBtzl.js => AnnotationView-YwpSTL8W.js} (65%) create mode 100644 MiGu.Server/wwwroot/assets/AppShell-Ca-gt8yg.js rename MiGu.Server/wwwroot/assets/{AppShell-BiaaUnpv.css => AppShell-DXCOBttv.css} (74%) delete mode 100644 MiGu.Server/wwwroot/assets/AppShell-VGUYhBS-.js create mode 100644 MiGu.Server/wwwroot/assets/AuthRoleView-BSUZTQqc.js delete mode 100644 MiGu.Server/wwwroot/assets/AuthRoleView-C2B4SEfx.js create mode 100644 MiGu.Server/wwwroot/assets/AuthRoleView-CTEbfTF-.css rename MiGu.Server/wwwroot/assets/{CarPanelView-C8B0n-h4.js => CarPanelView-Cd4CJJOn.js} (54%) delete mode 100644 MiGu.Server/wwwroot/assets/ChargePolicyView-BxJAPKKv.js create mode 100644 MiGu.Server/wwwroot/assets/ChargePolicyView-DdHAu5KF.js delete mode 100644 MiGu.Server/wwwroot/assets/ConfigPageBase-C8mupMSy.css create mode 100644 MiGu.Server/wwwroot/assets/ConfigPageBase-DOgE48Ff.css rename MiGu.Server/wwwroot/assets/{ConfigPageBase-CPF7i-FB.js => ConfigPageBase-DmCcZeia.js} (69%) create mode 100644 MiGu.Server/wwwroot/assets/CustomWidgetView-BfTj_5GQ.js delete mode 100644 MiGu.Server/wwwroot/assets/CustomWidgetView-C3i7AzNk.js rename MiGu.Server/wwwroot/assets/{DashboardView-Cx5dlpj0.js => DashboardView-Djx6JpAP.js} (96%) create mode 100644 MiGu.Server/wwwroot/assets/DeviceHubView-BZqZwZ53.js delete mode 100644 MiGu.Server/wwwroot/assets/DeviceHubView-DdDpWQEi.js create mode 100644 MiGu.Server/wwwroot/assets/ExternalIntegrationView-C7sUKgfK.js delete mode 100644 MiGu.Server/wwwroot/assets/ExternalIntegrationView-ERIDBz7X.js create mode 100644 MiGu.Server/wwwroot/assets/FleetLifecycleView-BS2XUbob.js delete mode 100644 MiGu.Server/wwwroot/assets/FleetLifecycleView-qDfurtqR.js delete mode 100644 MiGu.Server/wwwroot/assets/LocationView-BM2ilHau.js create mode 100644 MiGu.Server/wwwroot/assets/LocationView-BfhVGCHM.js create mode 100644 MiGu.Server/wwwroot/assets/LoginView-96di2FHF.js delete mode 100644 MiGu.Server/wwwroot/assets/LoginView-D_TsC36_.js create mode 100644 MiGu.Server/wwwroot/assets/MapEditorView-BGZHXeja.js delete mode 100644 MiGu.Server/wwwroot/assets/MapEditorView-CaYR0T6s.js create mode 100644 MiGu.Server/wwwroot/assets/MapMonitorConfigView-B0CO4izu.js create mode 100644 MiGu.Server/wwwroot/assets/MapMonitorConfigView-BC-sAP6v.css delete mode 100644 MiGu.Server/wwwroot/assets/MapMonitorConfigView-BIPqxkT5.js delete mode 100644 MiGu.Server/wwwroot/assets/MapMonitorConfigView-CwieeOtF.css delete mode 100644 MiGu.Server/wwwroot/assets/MapMonitorView-BfZJy2Kd.css delete mode 100644 MiGu.Server/wwwroot/assets/MapMonitorView-C7AnAWKd.js create mode 100644 MiGu.Server/wwwroot/assets/MapMonitorView-CzPLvGSc.css create mode 100644 MiGu.Server/wwwroot/assets/MapMonitorView-DDv0PMYv.js rename MiGu.Server/wwwroot/assets/{MissionEditorView-UptDJACU.js => MissionEditorView-B5xzVX97.js} (81%) rename MiGu.Server/wwwroot/assets/{MonitorDashboardView-ChnHSdxd.js => MonitorDashboardView-Bx7SRcpo.js} (70%) delete mode 100644 MiGu.Server/wwwroot/assets/MonitorDashboardView-C0ey2wYu.css create mode 100644 MiGu.Server/wwwroot/assets/MonitorDashboardView-CzA4Ot5V.css create mode 100644 MiGu.Server/wwwroot/assets/MonitorMapView-BKbbf9HS.js delete mode 100644 MiGu.Server/wwwroot/assets/MonitorMapView-CClr5C8k.js delete mode 100644 MiGu.Server/wwwroot/assets/MonitorMapView-CS49gkPx.css rename MiGu.Server/wwwroot/assets/{OpsActionPanelView-OY2jAcDK.js => OpsActionPanelView-BXPdR8uI.js} (57%) delete mode 100644 MiGu.Server/wwwroot/assets/OpsConfigView-CYCdWXE0.js create mode 100644 MiGu.Server/wwwroot/assets/OpsConfigView-XdjkiZNS.js create mode 100644 MiGu.Server/wwwroot/assets/PermissionGuard-B-YLUKV0.css delete mode 100644 MiGu.Server/wwwroot/assets/PermissionGuard-BxagL6-4.js delete mode 100644 MiGu.Server/wwwroot/assets/PermissionGuard-CFqrez64.css create mode 100644 MiGu.Server/wwwroot/assets/PermissionGuard-DIZkcwyW.js rename MiGu.Server/wwwroot/assets/{PlaybackView-BUHRaurd.js => PlaybackView-Ccqdz_3D.js} (74%) rename MiGu.Server/wwwroot/assets/{ProcessPanelView-Bgs-UWlW.js => ProcessPanelView-BFyQO5Cz.js} (80%) rename MiGu.Server/wwwroot/assets/{ProjectPropertiesView-BUmjY6Qh.js => ProjectPropertiesView-dRQK9OvP.js} (53%) rename MiGu.Server/wwwroot/assets/{ReflectionManagerPanel-BP1OYef-.js => ReflectionManagerPanel-BCWRRPd3.js} (62%) create mode 100644 MiGu.Server/wwwroot/assets/ReflectionManagerPanel-Btm77NGt.css delete mode 100644 MiGu.Server/wwwroot/assets/ReflectionManagerPanel-CZMd80yF.css create mode 100644 MiGu.Server/wwwroot/assets/RoutingPolicyView-3wwqo9Ra.js delete mode 100644 MiGu.Server/wwwroot/assets/RoutingPolicyView-nAYjmKqM.js create mode 100644 MiGu.Server/wwwroot/assets/ScenarioTemplateView-teC0oCIP.js delete mode 100644 MiGu.Server/wwwroot/assets/ScenarioTemplateView-w7x237Pe.js rename MiGu.Server/wwwroot/assets/{ScriptPanelView-DnxZ-d2X.js => ScriptPanelView-lRrVtfnM.js} (80%) delete mode 100644 MiGu.Server/wwwroot/assets/ServiceStatusView-BYOao_aT.js create mode 100644 MiGu.Server/wwwroot/assets/ServiceStatusView-ClLWqMCP.js delete mode 100644 MiGu.Server/wwwroot/assets/SystemConfigView-ByKpKyii.js create mode 100644 MiGu.Server/wwwroot/assets/SystemConfigView-C8IWuAG2.js create mode 100644 MiGu.Server/wwwroot/assets/TaskAllocationView-C8FWSK2V.js delete mode 100644 MiGu.Server/wwwroot/assets/TaskAllocationView-DFHXgXFu.js rename MiGu.Server/wwwroot/assets/{TrackTableView-U1RVSBQt.js => TrackTableView-Cam8um3K.js} (77%) delete mode 100644 MiGu.Server/wwwroot/assets/TrafficRuleView-BLrd2OSe.js create mode 100644 MiGu.Server/wwwroot/assets/TrafficRuleView-LXvXdW1d.js delete mode 100644 MiGu.Server/wwwroot/assets/VehicleMaintenanceView-BU7QbnHX.js create mode 100644 MiGu.Server/wwwroot/assets/VehicleMaintenanceView-IaG3gFys.js rename MiGu.Server/wwwroot/assets/{Workspace3D-D7MYl2zT.js => Workspace3D-CHeE5zz3.js} (50%) delete mode 100644 MiGu.Server/wwwroot/assets/WorkspaceCanvasToolbar-1mCqpdq_.js delete mode 100644 MiGu.Server/wwwroot/assets/WorkspaceCanvasToolbar-CT6FJSzK.css rename MiGu.Server/wwwroot/assets/{index-CZ3kdi1Q.css => index-BCzHO7Kq.css} (89%) rename MiGu.Server/wwwroot/assets/{index-DrvLDslf.js => index-C6ULY2Si.js} (71%) rename MiGu.Server/wwwroot/assets/{mapEdit-DghrYjHu.js => mapEdit-D6_KBS33.js} (96%) rename MiGu.Server/wwwroot/assets/{ops-CZkWvMAR.js => ops-BCWJhnEq.js} (69%) rename MiGu.Server/wwwroot/assets/{projection-CizY2UtH.js => projection-b1x6abrR.js} (92%) rename MiGu.Server/wwwroot/assets/{reflection-Dr3WM5Rz.js => reflection-CKXyOCM_.js} (97%) rename MiGu.Server/wwwroot/assets/{useMapEditStream-DPAdbySW.js => useMapEditStream-CS7BmW9Q.js} (80%) create mode 100644 MiGu.Server/wwwroot/assets/useProjectionStream-BoSdoSNC.js delete mode 100644 MiGu.Server/wwwroot/assets/useProjectionStream-DMf_8m8X.js diff --git a/MiGu.Server/wwwroot/assets/AnnotationView-B4kZBtzl.js b/MiGu.Server/wwwroot/assets/AnnotationView-YwpSTL8W.js similarity index 65% rename from MiGu.Server/wwwroot/assets/AnnotationView-B4kZBtzl.js rename to MiGu.Server/wwwroot/assets/AnnotationView-YwpSTL8W.js index a9a3ee5..6949f19 100644 --- a/MiGu.Server/wwwroot/assets/AnnotationView-B4kZBtzl.js +++ b/MiGu.Server/wwwroot/assets/AnnotationView-YwpSTL8W.js @@ -1 +1 @@ -import{aG as S,bo as z,aA as b,bB as a,u as B,b3 as p,aF as e,P as N,S as A,a4 as O,aC as T,bd as F,_ as M,ai as U,s as D,bm as f,aE as d,bE as I,ab as G,ad as L,bj as j,az as c,ba as P,bb as Y,Y as g,O as $,aa as q,I as H}from"./index-DrvLDslf.js";/* empty css *//* empty css *//* empty css *//* empty css */import"./el-tooltip-l0sNRNKZ.js";/* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css */const J={style:{display:"flex","align-items":"center",gap:"8px"}},pe=S({__name:"AnnotationView",setup(K){const s=z(),l=P({title:"",target:"",level:"info",content:""}),m=Y([{id:"N001",ts:"2026-05-19 10:25",author:"ops",target:"C05",level:"warn",title:"AGV-005 故障观察",content:"出库点附近频繁停顿,怀疑激光被遮挡"}]);function w(r){return r==="error"?"danger":r==="warn"?"warning":"info"}function v(){if(!l.title){g.warning("请填写标题");return}const r=`N${String(m.value.length+1).padStart(3,"0")}`;m.value.unshift({id:r,ts:new Date().toLocaleString("zh-CN"),author:s.user?.username??"mock",target:l.target,level:l.level,title:l.title,content:l.content}),g.success("已记录(Mock,未写入数据库)"),l.title="",l.content="",l.target=""}return(r,t)=>{const u=L,_=A,i=N,V=M,y=O,E=D,x=$,h=H,n=G,k=q,C=B;return p(),b(C,{shadow:"never"},{header:a(()=>[c("div",J,[t[7]||(t[7]=c("span",null,"运营备注(monitor.note.write · 写 platform.db.Annotations)",-1)),f(s).hasOp("monitor.note.write")?(p(),b(u,{key:0,size:"small",type:"success"},{default:a(()=>[...t[5]||(t[5]=[d("可写",-1)])]),_:1})):(p(),b(u,{key:1,size:"small",type:"danger"},{default:a(()=>[...t[6]||(t[6]=[d("只读",-1)])]),_:1}))])]),default:a(()=>[e(x,{inline:"",onSubmit:t[3]||(t[3]=I(()=>{},["prevent"]))},{default:a(()=>[e(i,{label:"标题"},{default:a(()=>[e(_,{modelValue:l.title,"onUpdate:modelValue":t[0]||(t[0]=o=>l.title=o),style:{width:"240px"}},null,8,["modelValue"])]),_:1}),e(i,{label:"关联目标"},{default:a(()=>[e(_,{modelValue:l.target,"onUpdate:modelValue":t[1]||(t[1]=o=>l.target=o),placeholder:"例如 C01 / M02 / S006",style:{width:"200px"}},null,8,["modelValue"])]),_:1}),e(i,{label:"层级"},{default:a(()=>[e(y,{modelValue:l.level,"onUpdate:modelValue":t[2]||(t[2]=o=>l.level=o),style:{width:"120px"}},{default:a(()=>[(p(),T(U,null,F(["info","warn","error"],o=>e(V,{key:o,label:o,value:o},null,8,["label","value"])),64))]),_:1},8,["modelValue"])]),_:1}),e(i,null,{default:a(()=>[e(E,{type:"primary",disabled:!f(s).hasOp("monitor.note.write"),onClick:v},{default:a(()=>[...t[8]||(t[8]=[d("提交",-1)])]),_:1},8,["disabled"])]),_:1})]),_:1}),e(_,{modelValue:l.content,"onUpdate:modelValue":t[4]||(t[4]=o=>l.content=o),type:"textarea",rows:4,placeholder:"描述备注内容...",disabled:!f(s).hasOp("monitor.note.write")},null,8,["modelValue","disabled"]),e(h),e(k,{data:m.value,size:"small","max-height":"400"},{default:a(()=>[e(n,{prop:"ts",label:"时间",width:"180"}),e(n,{prop:"author",label:"作者",width:"100"}),e(n,{prop:"target",label:"目标",width:"100"}),e(n,{prop:"level",label:"层级",width:"80"},{default:a(o=>[e(u,{size:"small",type:w(o.row.level)},{default:a(()=>[d(j(o.row.level),1)]),_:2},1032,["type"])]),_:1}),e(n,{prop:"title",label:"标题"}),e(n,{prop:"content",label:"内容"})]),_:1},8,["data"])]),_:1})}}});export{pe as default}; +import{aE as S,bp as N,ay as f,bD as a,t as z,b4 as p,aD as e,N as A,bG as B,O as D,R as O,a3 as T,aA as M,ah as U,be as F,Z as G,r as I,bn as b,aC as d,H as L,a9 as H,aa as R,ac as X,bk as Z,ax as c,bb as $,bc as j,X as g}from"./index-C6ULY2Si.js";/* empty css *//* empty css *//* empty css *//* empty css */import"./el-tooltip-l0sNRNKZ.js";/* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css */const q={style:{display:"flex","align-items":"center",gap:"8px"}},pe=S({__name:"AnnotationView",setup(J){const s=N(),l=$({title:"",target:"",level:"info",content:""}),m=j([{id:"N001",ts:"2026-05-19 10:25",author:"ops",target:"C05",level:"warn",title:"AGV-005 故障观察",content:"出库点附近频繁停顿,怀疑激光被遮挡"}]);function w(r){return r==="error"?"danger":r==="warn"?"warning":"info"}function v(){if(!l.title){g.warning("请填写标题");return}const r=`N${String(m.value.length+1).padStart(3,"0")}`;m.value.unshift({id:r,ts:new Date().toLocaleString("zh-CN"),author:s.user?.username??"mock",target:l.target,level:l.level,title:l.title,content:l.content}),g.success("已记录(Mock,未写入数据库)"),l.title="",l.content="",l.target=""}return(r,t)=>{const u=X,_=O,i=D,y=G,V=T,E=I,x=A,h=L,n=R,k=H,C=z;return p(),f(C,{shadow:"never"},{header:a(()=>[c("div",q,[t[7]||(t[7]=c("span",null,"运营备注(monitor.note.write · 写 platform.db.Annotations)",-1)),b(s).hasOp("monitor.note.write")?(p(),f(u,{key:0,size:"small",type:"success"},{default:a(()=>[...t[5]||(t[5]=[d("可写",-1)])]),_:1})):(p(),f(u,{key:1,size:"small",type:"danger"},{default:a(()=>[...t[6]||(t[6]=[d("只读",-1)])]),_:1}))])]),default:a(()=>[e(x,{inline:"",onSubmit:t[3]||(t[3]=B(()=>{},["prevent"]))},{default:a(()=>[e(i,{label:"标题"},{default:a(()=>[e(_,{modelValue:l.title,"onUpdate:modelValue":t[0]||(t[0]=o=>l.title=o),style:{width:"240px"}},null,8,["modelValue"])]),_:1}),e(i,{label:"关联目标"},{default:a(()=>[e(_,{modelValue:l.target,"onUpdate:modelValue":t[1]||(t[1]=o=>l.target=o),placeholder:"例如 C01 / M02 / S006",style:{width:"200px"}},null,8,["modelValue"])]),_:1}),e(i,{label:"层级"},{default:a(()=>[e(V,{modelValue:l.level,"onUpdate:modelValue":t[2]||(t[2]=o=>l.level=o),style:{width:"120px"}},{default:a(()=>[(p(),M(U,null,F(["info","warn","error"],o=>e(y,{key:o,label:o,value:o},null,8,["label","value"])),64))]),_:1},8,["modelValue"])]),_:1}),e(i,null,{default:a(()=>[e(E,{type:"primary",disabled:!b(s).hasOp("monitor.note.write"),onClick:v},{default:a(()=>[...t[8]||(t[8]=[d("提交",-1)])]),_:1},8,["disabled"])]),_:1})]),_:1}),e(_,{modelValue:l.content,"onUpdate:modelValue":t[4]||(t[4]=o=>l.content=o),type:"textarea",rows:4,placeholder:"描述备注内容...",disabled:!b(s).hasOp("monitor.note.write")},null,8,["modelValue","disabled"]),e(h),e(k,{data:m.value,size:"small","max-height":"400"},{default:a(()=>[e(n,{prop:"ts",label:"时间",width:"180"}),e(n,{prop:"author",label:"作者",width:"100"}),e(n,{prop:"target",label:"目标",width:"100"}),e(n,{prop:"level",label:"层级",width:"80"},{default:a(o=>[e(u,{size:"small",type:w(o.row.level)},{default:a(()=>[d(Z(o.row.level),1)]),_:2},1032,["type"])]),_:1}),e(n,{prop:"title",label:"标题"}),e(n,{prop:"content",label:"内容"})]),_:1},8,["data"])]),_:1})}}});export{pe as default}; diff --git a/MiGu.Server/wwwroot/assets/AppShell-Ca-gt8yg.js b/MiGu.Server/wwwroot/assets/AppShell-Ca-gt8yg.js new file mode 100644 index 0000000..2c8082d --- /dev/null +++ b/MiGu.Server/wwwroot/assets/AppShell-Ca-gt8yg.js @@ -0,0 +1 @@ +import{aE as A,bp as O,br as q,b4 as o,ay as u,bD as e,aD as t,$ as pe,aC as m,at as b,a0 as me,X as ue,bs as G,ax as a,a$ as F,bk as l,bn as s,Q as J,ap as X,K as H,aA as y,ah as S,be as T,J as K,a_ as N,aq as _e,az as P,I as Q,aj as Y,aB as fe,A as be,bq as he,bg as ge,m as ve,V as ke,a6 as ye,W as we,bh as I,P as Ee,aN as Ce,aJ as Me,p as Se,q as xe,n as $e,U as De,M as Pe,aP as Ie,aX as W,bl as Te,b0 as j,bj as Ne,aY as Ae,b9 as Re}from"./index-C6ULY2Si.js";/* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css */import"./el-tooltip-l0sNRNKZ.js";/* empty css */const Be="/FRLD-logo-white-no_title.png",Le="/FRLD-logo-white.png",ze=A({__name:"ScopeSwitcher",setup(R){const i=O(),E=q(),r=b(()=>i.scope??"Platform");let c=!1;async function g(_){if(!c){c=!0;try{await w(_)}finally{c=!1}}}async function w(_){try{await i.switchScope(_),E.push(_==="Platform"?"/admin/map-monitor":"/monitor/map")}catch(f){ue.error(f?.message??`切换到 ${_} 失败`)}}return(_,f)=>{const C=pe,x=me;return o(),u(x,{"model-value":r.value,size:"small",onChange:g},{default:e(()=>[t(C,{value:"Platform"},{default:e(()=>[...f[0]||(f[0]=[m("管理员",-1)])]),_:1}),t(C,{value:"RCSMonitor"},{default:e(()=>[...f[1]||(f[1]=[m("运营",-1)])]),_:1})]),_:1},8,["model-value"])}}}),Ue=["title"],Ve={class:"theme-label"},Fe={class:"option-text"},We={class:"option-name"},je={class:"option-desc"},Oe=A({__name:"ThemeSwitcher",setup(R){const i=G(),E=b(()=>({background:`linear-gradient(135deg, ${i.activeTheme.preview} 0%, ${i.activeTheme.previewAccent} 100%)`}));function r(g){const w=i.getMergedTheme(g);return{background:`linear-gradient(135deg, ${w.preview} 0%, ${w.previewAccent} 100%)`}}function c(g){i.setThemeId(g)}return(g,w)=>{const _=J,f=K,C=H,x=Q;return o(),u(x,{trigger:"click",onCommand:c},{dropdown:e(()=>[t(C,{class:"theme-menu"},{default:e(()=>[(o(!0),y(S,null,T(s(i).availableThemes,h=>(o(),u(f,{key:h.id,command:h.id,class:N({"is-active":h.id===s(i).themeId})},{default:e(()=>[a("span",{class:"option-swatch",style:F(r(h))},null,4),a("span",Fe,[a("span",We,l(h.name),1),a("span",je,l(h.description),1)]),h.id===s(i).themeId?(o(),u(_,{key:0,class:"check"},{default:e(()=>[t(s(_e))]),_:1})):P("",!0)]),_:2},1032,["command","class"]))),128))]),_:1})]),default:e(()=>[a("button",{class:"theme-trigger",type:"button",title:`当前主题:${s(i).activeTheme.name}`},[a("span",{class:"swatch",style:F(E.value)},null,4),a("span",Ve,l(s(i).activeTheme.name),1),t(_,{class:"caret"},{default:e(()=>[t(s(X))]),_:1})],8,Ue)]),_:1})}}}),qe=Y(Oe,[["__scopeId","data-v-28ea4aeb"]]),Ge={class:"app-shell"},Je={class:"aside-footer"},Xe={key:0},He={class:"header-left"},Ke={class:"header-right"},Qe={class:"user-link"},Ye={class:"user-name"},Ze=A({__name:"AppShell",setup(R){const i=he(),E=q(),r=O(),c=G(),g=b(()=>"localhost:8223".split(":")[1]??"8223"),w=b(()=>"/api"),_=b(()=>(r.user?.displayName??r.user?.username??"?").slice(0,1).toUpperCase()),f=b(()=>r.scope==="Platform"?"管理员 (Platform)":"运营 (RCSMonitor)"),C=b(()=>{switch(r.runMode){case"WebOnly":return"Web-Only";case"WebEnabled":return"Web + Desktop";case"Detached":return"SimpleLite 未连接";default:return String(r.runMode??"Unknown")}}),x=[{path:"/admin/dashboard",label:"总览",icon:Ie,key:"admin-dashboard"},{path:"/admin/map-monitor",label:"地图监控",icon:W,key:"admin-map-monitor"},{path:"/admin/design",label:"设计与编排",icon:Te,children:[{path:"/admin/map-editor",label:"地图编辑",key:"admin-map-editor"},{path:"/admin/project-properties",label:"项目属性",key:"admin-project-properties"},{path:"/admin/tracks",label:"场景管理",key:"admin-tracks"},{path:"/admin/cars",label:"车辆管理",key:"admin-cars"},{path:"/admin/processes",label:"进程管理",key:"admin-processes"},{path:"/admin/scripts",label:"脚本管理",key:"admin-scripts"},{path:"/admin/missions",label:"任务编排",key:"admin-missions"}]},{path:"/admin/playback",label:"调度回放",icon:j,key:"admin-playback"},{path:"/admin/config",label:"平台配置中心",icon:Ne,children:[{path:"/admin/config/system",label:"系统级配置",key:"admin-config-system"},{path:"/admin/config/integrations",label:"外部系统对接",key:"admin-config-integrations"},{path:"/admin/config/routing",label:"路径规划",key:"admin-config-routing"},{path:"/admin/config/vehicle",label:"车辆维护",key:"admin-config-vehicle"},{path:"/admin/config/charge",label:"充电策略",key:"admin-config-charge"},{path:"/admin/config/task",label:"任务分配",key:"admin-config-task"},{path:"/admin/config/traffic",label:"交通管制",key:"admin-config-traffic"},{path:"/admin/config/auth",label:"权限与角色",key:"admin-config-auth"},{path:"/admin/config/device",label:"设备接入",key:"admin-config-device"},{path:"/admin/config/fleet",label:"车队生命周期",key:"admin-config-fleet"},{path:"/admin/config/scenario",label:"场景模板",key:"admin-config-scenario"},{path:"/admin/config/location",label:"库位管理",key:"admin-config-location"},{path:"/admin/config/ops",label:"运营维护",key:"admin-config-ops"},{path:"/admin/config/widget",label:"自定义控件",key:"admin-config-widget"}]}],h=[{path:"/monitor/dashboard",label:"运营总览",icon:Ae,key:"monitor-dashboard"},{path:"/monitor/map",label:"地图监控",icon:W,key:"monitor-map"},{path:"/monitor/ops",label:"运维操作",icon:Re,key:"monitor-ops"},{path:"/monitor/notes",label:"运营备注",icon:j,key:"monitor-notes"}];function Z(v){const n=[];for(const d of v)if(d.children){const M=d.children.filter(k=>!k.key||r.hasPage(k.key));M.length&&n.push({...d,children:M})}else(!d.key||r.hasPage(d.key))&&n.push(d);return n}const B=b(()=>Z(r.scope==="Platform"?x:h)),ee=b(()=>{const v=i.path,n=[],d=k=>{k.forEach($=>{n.push($),$.children&&d($.children)})};return d(B.value),n.find(k=>k.path===v)?.path??v}),L=b(()=>i.meta.title??"");function ae(v){v==="logout"?(r.logout(),E.push("/login")):v==="status"&&E.push("/status")}return(v,n)=>{const d=J,M=we,k=ye,$=ke,te=ve,z=xe,ne=Se,oe=$e,U=K,se=H,le=Q,ie=Ee,re=ge("router-view"),ce=De,de=Pe,V=be;return o(),y("div",Ge,[n[8]||(n[8]=fe('
',1)),t(V,{class:"app-container"},{default:e(()=>[t(te,{width:s(c).sidebarCollapsed?"76px":"240px",class:"aside"},{default:e(()=>[a("div",{class:N(["logo",{collapsed:s(c).sidebarCollapsed}])},[s(c).sidebarCollapsed?(o(),y(S,{key:0},[n[1]||(n[1]=a("img",{src:Be,alt:"FRLD",class:"logo-img-small"},null,-1)),n[2]||(n[2]=a("span",{class:"logo-abbr"},"迷毂",-1))],64)):(o(),y(S,{key:1},[n[3]||(n[3]=a("img",{src:Le,alt:"FRLD",class:"logo-img-full"},null,-1)),n[4]||(n[4]=a("div",{class:"logo-titles"},[a("span",{class:"logo-title-zh"},"迷 毂 · 智能调度平台"),a("span",{class:"logo-title-en"},[a("b",null,"M"),m("i "),a("b",null,"G"),m("u · "),a("b",null,"I"),m("ntelligent "),a("b",null,"D"),m("ispatch "),a("b",null,"P"),m("latform ")])],-1))],64))],2),t($,{"default-active":ee.value,collapse:s(c).sidebarCollapsed,"collapse-transition":!1,"background-color":"transparent","text-color":"rgba(255, 255, 255, 0.72)","active-text-color":"#fff",router:"",class:"menu"},{default:e(()=>[(o(!0),y(S,null,T(B.value,p=>(o(),y(S,{key:p.path},[p.children?(o(),u(k,{key:0,index:p.path},{title:e(()=>[t(d,null,{default:e(()=>[(o(),u(I(p.icon)))]),_:2},1024),a("span",null,l(p.label),1)]),default:e(()=>[(o(!0),y(S,null,T(p.children,D=>(o(),u(M,{key:D.path,index:D.path},{default:e(()=>[a("span",null,l(D.label),1)]),_:2},1032,["index"]))),128))]),_:2},1032,["index"])):(o(),u(M,{key:1,index:p.path},{title:e(()=>[m(l(p.label),1)]),default:e(()=>[t(d,null,{default:e(()=>[(o(),u(I(p.icon)))]),_:2},1024)]),_:2},1032,["index"]))],64))),128))]),_:1},8,["default-active","collapse"]),a("div",Je,[n[5]||(n[5]=a("span",{class:"aside-footer-badge"},"v1.6",-1)),s(c).sidebarCollapsed?P("",!0):(o(),y("span",Xe,l(s(c).activeTheme.name)+" · "+l(s(c).activeTheme.preview),1))])]),_:1},8,["width"]),t(V,{class:"container-right"},{default:e(()=>[t(ie,{class:"header"},{default:e(()=>[a("div",He,[a("button",{class:"icon-btn",onClick:n[0]||(n[0]=p=>s(c).toggleSidebar()),title:"切换侧栏"},[t(d,{size:"18"},{default:e(()=>[s(c).sidebarCollapsed?(o(),u(s(Me),{key:1})):(o(),u(s(Ce),{key:0}))]),_:1})]),t(ne,{separator:"/"},{default:e(()=>[t(z,null,{default:e(()=>[m(l(f.value),1)]),_:1}),L.value?(o(),u(z,{key:0},{default:e(()=>[m(l(L.value),1)]),_:1})):P("",!0)]),_:1})]),a("div",Ke,[t(qe),t(ze),a("span",{class:N(["runmode-tag",s(r).runMode])},l(C.value),3),t(le,{trigger:"click",onCommand:ae},{dropdown:e(()=>[t(se,null,{default:e(()=>[t(U,{command:"status"},{default:e(()=>[...n[6]||(n[6]=[m("服务状态",-1)])]),_:1}),t(U,{command:"logout",divided:""},{default:e(()=>[...n[7]||(n[7]=[m("退出登录",-1)])]),_:1})]),_:1})]),default:e(()=>[a("span",Qe,[t(oe,{size:"small"},{default:e(()=>[m(l(_.value),1)]),_:1}),a("span",Ye,l(s(r).user?.displayName??"未登录"),1),t(d,null,{default:e(()=>[t(s(X))]),_:1})])]),_:1})])]),_:1}),t(ce,{class:"main mg-content"},{default:e(()=>[t(re,null,{default:e(({Component:p,route:D})=>[p?(o(),u(I(p),{key:D.fullPath,class:"route-page"})):P("",!0)]),_:1})]),_:1}),t(de,{class:"footer"},{default:e(()=>[a("span",null,l(f.value)+" · webVRender :"+l(g.value)+" · API "+l(w.value),1)]),_:1})]),_:1})]),_:1})])}}}),ca=Y(Ze,[["__scopeId","data-v-800dedbc"]]);export{ca as default}; diff --git a/MiGu.Server/wwwroot/assets/AppShell-BiaaUnpv.css b/MiGu.Server/wwwroot/assets/AppShell-DXCOBttv.css similarity index 74% rename from MiGu.Server/wwwroot/assets/AppShell-BiaaUnpv.css rename to MiGu.Server/wwwroot/assets/AppShell-DXCOBttv.css index 7076078..5efce89 100644 --- a/MiGu.Server/wwwroot/assets/AppShell-BiaaUnpv.css +++ b/MiGu.Server/wwwroot/assets/AppShell-DXCOBttv.css @@ -1 +1 @@ -.el-aside{box-sizing:border-box;width:var(--el-aside-width,300px);flex-shrink:0;overflow:auto}.el-container{box-sizing:border-box;flex-direction:row;flex:auto;min-width:0;display:flex}.el-container.is-vertical{flex-direction:column}.el-footer{--el-footer-padding:0 20px;--el-footer-height:60px;padding:var(--el-footer-padding);box-sizing:border-box;height:var(--el-footer-height);flex-shrink:0}.el-header{--el-header-padding:0 20px;--el-header-height:60px;padding:var(--el-header-padding);box-sizing:border-box;height:var(--el-header-height);flex-shrink:0}.el-main{--el-main-padding:20px;box-sizing:border-box;padding:var(--el-main-padding);flex:auto;display:block;overflow:auto}.el-avatar{--el-avatar-text-color:var(--el-color-white);--el-avatar-bg-color:var(--el-text-color-disabled);--el-avatar-text-size:14px;--el-avatar-icon-size:18px;--el-avatar-border-radius:var(--el-border-radius-base);--el-avatar-size-large:56px;--el-avatar-size:40px;--el-avatar-size-small:24px;box-sizing:border-box;text-align:center;color:var(--el-avatar-text-color);background:var(--el-avatar-bg-color);width:var(--el-avatar-size);height:var(--el-avatar-size);font-size:var(--el-avatar-text-size);outline:none;justify-content:center;align-items:center;display:inline-flex;overflow:hidden}.el-avatar>img{width:100%;height:100%;display:block}.el-avatar--circle{border-radius:50%}.el-avatar--square{border-radius:var(--el-avatar-border-radius)}.el-avatar--icon{font-size:var(--el-avatar-icon-size)}.el-avatar--small{--el-avatar-size:24px}.el-avatar--large{--el-avatar-size:56px}.el-breadcrumb{font-size:14px;line-height:1}.el-breadcrumb:before,.el-breadcrumb:after{content:"";display:table}.el-breadcrumb:after{clear:both}.el-breadcrumb__separator{color:var(--el-text-color-placeholder);margin:0 9px;font-weight:700}.el-breadcrumb__separator.el-icon{margin:0 6px;font-weight:400}.el-breadcrumb__separator.el-icon svg{vertical-align:middle}.el-breadcrumb__item{float:left;align-items:center;display:inline-flex}.el-breadcrumb__inner{color:var(--el-text-color-regular)}.el-breadcrumb__inner.is-link,.el-breadcrumb__inner a{transition:var(--el-transition-color);color:var(--el-text-color-primary);font-weight:700;text-decoration:none}.el-breadcrumb__inner.is-link:hover,.el-breadcrumb__inner a:hover{color:var(--el-color-primary);cursor:pointer}.el-breadcrumb__item:last-child .el-breadcrumb__inner,.el-breadcrumb__item:last-child .el-breadcrumb__inner:hover,.el-breadcrumb__item:last-child .el-breadcrumb__inner a,.el-breadcrumb__item:last-child .el-breadcrumb__inner a:hover{color:var(--el-text-color-regular);cursor:text;font-weight:400}.el-breadcrumb__item:last-child .el-breadcrumb__separator{display:none}.fade-in-linear-enter-active,.fade-in-linear-leave-active{transition:var(--el-transition-fade-linear)}.fade-in-linear-enter-from,.fade-in-linear-leave-to{opacity:0}.el-fade-in-linear-enter-active,.el-fade-in-linear-leave-active{transition:var(--el-transition-fade-linear)}.el-fade-in-linear-enter-from,.el-fade-in-linear-leave-to{opacity:0}.el-fade-in-enter-active,.el-fade-in-leave-active{transition:all var(--el-transition-duration) cubic-bezier(.55,0,.1,1)}.el-fade-in-enter-from,.el-fade-in-leave-active{opacity:0}.el-zoom-in-center-enter-active,.el-zoom-in-center-leave-active{transition:all var(--el-transition-duration) cubic-bezier(.55,0,.1,1)}.el-zoom-in-center-enter-from,.el-zoom-in-center-leave-active{opacity:0;transform:scaleX(0)}.el-zoom-in-top-enter-active,.el-zoom-in-top-leave-active{opacity:1;transition:var(--el-transition-md-fade);transform-origin:top;transform:scaleY(1)}.el-zoom-in-top-enter-active[data-popper-placement^=top],.el-zoom-in-top-leave-active[data-popper-placement^=top]{transform-origin:bottom}.el-zoom-in-top-enter-from,.el-zoom-in-top-leave-active{opacity:0;transform:scaleY(0)}.el-zoom-in-bottom-enter-active,.el-zoom-in-bottom-leave-active{opacity:1;transition:var(--el-transition-md-fade);transform-origin:bottom;transform:scaleY(1)}.el-zoom-in-bottom-enter-from,.el-zoom-in-bottom-leave-active{opacity:0;transform:scaleY(0)}.el-zoom-in-left-enter-active,.el-zoom-in-left-leave-active{opacity:1;transition:var(--el-transition-md-fade);transform-origin:0 0;transform:scale(1)}.el-zoom-in-left-enter-from,.el-zoom-in-left-leave-active{opacity:0;transform:scale(.45)}.collapse-transition{transition:var(--el-transition-duration) height ease-in-out,var(--el-transition-duration) padding-top ease-in-out,var(--el-transition-duration) padding-bottom ease-in-out}.el-collapse-transition-leave-active,.el-collapse-transition-enter-active{transition:var(--el-transition-duration) max-height ease-in-out,var(--el-transition-duration) padding-top ease-in-out,var(--el-transition-duration) padding-bottom ease-in-out}.horizontal-collapse-transition{transition:var(--el-transition-duration) width ease-in-out,var(--el-transition-duration) padding-left ease-in-out,var(--el-transition-duration) padding-right ease-in-out}.el-list-enter-active,.el-list-leave-active{transition:all 1s}.el-list-enter-from,.el-list-leave-to{opacity:0;transform:translateY(-30px)}.el-list-leave-active{position:absolute!important}.el-opacity-transition{transition:opacity var(--el-transition-duration) cubic-bezier(.55,0,.1,1)}:root{--el-menu-active-color:var(--el-color-primary);--el-menu-text-color:var(--el-text-color-primary);--el-menu-hover-text-color:var(--el-color-primary);--el-menu-bg-color:var(--el-fill-color-blank);--el-menu-hover-bg-color:var(--el-color-primary-light-9);--el-menu-item-height:56px;--el-menu-sub-item-height:calc(var(--el-menu-item-height) - 6px);--el-menu-horizontal-height:60px;--el-menu-horizontal-sub-item-height:36px;--el-menu-item-font-size:var(--el-font-size-base);--el-menu-item-hover-fill:var(--el-color-primary-light-9);--el-menu-border-color:var(--el-border-color);--el-menu-base-level-padding:20px;--el-menu-level-padding:20px;--el-menu-icon-width:24px}.el-menu{border-right:solid 1px var(--el-menu-border-color);background-color:var(--el-menu-bg-color);box-sizing:border-box;margin:0;padding-left:0;list-style:none;position:relative}.el-menu--vertical:not(.el-menu--collapse):not(.el-menu--popup-container) .el-menu-item,.el-menu--vertical:not(.el-menu--collapse):not(.el-menu--popup-container) .el-sub-menu__title,.el-menu--vertical:not(.el-menu--collapse):not(.el-menu--popup-container) .el-menu-item-group__title{white-space:nowrap;padding-left:calc(var(--el-menu-base-level-padding) + var(--el-menu-level) * var(--el-menu-level-padding))}.el-menu:not(.el-menu--collapse) .el-sub-menu__title{padding-right:calc(var(--el-menu-base-level-padding) + var(--el-menu-icon-width))}.el-menu--horizontal{height:var(--el-menu-horizontal-height);border-right:none;flex-wrap:nowrap;display:flex}.el-menu--horizontal.el-menu--popup-container{height:unset}.el-menu--horizontal.el-menu{border-bottom:solid 1px var(--el-menu-border-color)}.el-menu--horizontal>.el-menu-item{height:100%;color:var(--el-menu-text-color);border-bottom:2px solid #0000;justify-content:center;align-items:center;margin:0;display:inline-flex}.el-menu--horizontal>.el-menu-item a,.el-menu--horizontal>.el-menu-item a:hover{color:inherit}.el-menu--horizontal>.el-sub-menu:focus,.el-menu--horizontal>.el-sub-menu:hover{outline:none}.el-menu--horizontal>.el-sub-menu:hover .el-sub-menu__title{color:var(--el-menu-hover-text-color)}.el-menu--horizontal>.el-sub-menu.is-active .el-sub-menu__title{border-bottom:2px solid var(--el-menu-active-color);color:var(--el-menu-active-color)}.el-menu--horizontal>.el-sub-menu .el-sub-menu__title{height:100%;color:var(--el-menu-text-color);border-bottom:2px solid #0000}.el-menu--horizontal>.el-sub-menu .el-sub-menu__title:hover{background-color:var(--el-menu-bg-color)}.el-menu--horizontal .el-menu .el-menu-item,.el-menu--horizontal .el-menu .el-sub-menu__title{background-color:var(--el-menu-bg-color);height:var(--el-menu-horizontal-sub-item-height);line-height:var(--el-menu-horizontal-sub-item-height);color:var(--el-menu-text-color);align-items:center;padding:0 10px;display:flex}.el-menu--horizontal .el-menu .el-sub-menu__title{padding-right:40px}.el-menu--horizontal .el-menu .el-menu-item.is-active,.el-menu--horizontal .el-menu .el-menu-item.is-active:hover,.el-menu--horizontal .el-menu .el-sub-menu.is-active>.el-sub-menu__title,.el-menu--horizontal .el-menu .el-sub-menu.is-active>.el-sub-menu__title:hover{color:var(--el-menu-active-color)}.el-menu--horizontal .el-menu-item:not(.is-disabled):hover,.el-menu--horizontal .el-menu-item:not(.is-disabled):focus{color:var(--el-menu-active-color,var(--el-menu-hover-text-color));background-color:var(--el-menu-hover-bg-color);outline:none}.el-menu--horizontal>.el-menu-item.is-active{border-bottom:2px solid var(--el-menu-active-color);color:var(--el-menu-active-color)!important}.el-menu--collapse{width:calc(var(--el-menu-icon-width) + var(--el-menu-base-level-padding) * 2)}.el-menu--collapse>.el-menu-item [class^=el-icon],.el-menu--collapse>.el-sub-menu>.el-sub-menu__title [class^=el-icon],.el-menu--collapse>.el-menu-item-group>ul>.el-sub-menu>.el-sub-menu__title [class^=el-icon]{vertical-align:middle;width:var(--el-menu-icon-width);text-align:center;margin:0}.el-menu--collapse>.el-menu-item .el-sub-menu__icon-arrow,.el-menu--collapse>.el-sub-menu>.el-sub-menu__title .el-sub-menu__icon-arrow,.el-menu--collapse>.el-menu-item-group>ul>.el-sub-menu>.el-sub-menu__title .el-sub-menu__icon-arrow{display:none}.el-menu--collapse>.el-menu-item>span,.el-menu--collapse>.el-sub-menu>.el-sub-menu__title>span,.el-menu--collapse>.el-menu-item-group>ul>.el-sub-menu>.el-sub-menu__title>span{visibility:hidden;width:0;height:0;display:inline-block;overflow:hidden}.el-menu--collapse>.el-menu-item.is-active i{color:inherit}.el-menu--collapse .el-menu .el-sub-menu{min-width:200px}.el-menu--collapse .el-sub-menu.is-active .el-sub-menu__title{color:var(--el-menu-active-color)}.el-menu--popup{z-index:100;border-radius:var(--el-border-radius-small);min-width:200px;box-shadow:var(--el-box-shadow-light);border:none;padding:5px 0}.el-menu .el-icon{flex-shrink:0}.el-menu-item{height:var(--el-menu-item-height);line-height:var(--el-menu-item-height);font-size:var(--el-menu-item-font-size);color:var(--el-menu-text-color);padding:0 var(--el-menu-base-level-padding);cursor:pointer;transition:border-color var(--el-transition-duration),background-color var(--el-transition-duration),color var(--el-transition-duration);box-sizing:border-box;white-space:nowrap;align-items:center;list-style:none;display:flex;position:relative}.el-menu-item *{vertical-align:bottom}.el-menu-item i{color:inherit}.el-menu-item:hover,.el-menu-item:focus{outline:none}.el-menu-item:hover{background-color:var(--el-menu-hover-bg-color)}.el-menu-item.is-disabled{opacity:.25;cursor:not-allowed;background:0 0!important}.el-menu-item [class^=el-icon]{width:var(--el-menu-icon-width);text-align:center;vertical-align:middle;margin-right:5px;font-size:18px}.el-menu-item.is-active{color:var(--el-menu-active-color)}.el-menu-item.is-active i{color:inherit}.el-menu-item .el-menu-tooltip__trigger{box-sizing:border-box;width:100%;height:100%;padding:0 var(--el-menu-base-level-padding);align-items:center;display:inline-flex;position:absolute;top:0;left:0}.el-sub-menu{margin:0;padding-left:0;list-style:none}.el-sub-menu__title{height:var(--el-menu-item-height);line-height:var(--el-menu-item-height);font-size:var(--el-menu-item-font-size);color:var(--el-menu-text-color);padding:0 var(--el-menu-base-level-padding);cursor:pointer;transition:border-color var(--el-transition-duration),background-color var(--el-transition-duration),color var(--el-transition-duration);box-sizing:border-box;white-space:nowrap;align-items:center;list-style:none;display:flex;position:relative}.el-sub-menu__title *{vertical-align:bottom}.el-sub-menu__title i{color:inherit}.el-sub-menu__title:hover,.el-sub-menu__title:focus{outline:none}.el-sub-menu__title.is-disabled{opacity:.25;cursor:not-allowed;background:0 0!important}.el-sub-menu__title:hover{background-color:var(--el-menu-hover-bg-color)}.el-sub-menu .el-menu{border:none}.el-sub-menu .el-menu-item{height:var(--el-menu-sub-item-height);line-height:var(--el-menu-sub-item-height)}.el-sub-menu.el-sub-menu__hide-arrow .el-sub-menu__title{padding-right:var(--el-menu-base-level-padding)}.el-sub-menu__hide-arrow .el-sub-menu__icon-arrow{display:none!important}.el-sub-menu.is-active .el-sub-menu__title{border-bottom-color:var(--el-menu-active-color)}.el-sub-menu.is-disabled .el-sub-menu__title,.el-sub-menu.is-disabled .el-menu-item{opacity:.25;cursor:not-allowed;background:0 0!important}.el-sub-menu .el-icon{vertical-align:middle;width:var(--el-menu-icon-width);text-align:center;margin-right:5px;font-size:18px}.el-sub-menu .el-icon.el-sub-menu__icon-more{margin-right:0!important}.el-sub-menu .el-sub-menu__icon-arrow{top:50%;right:var(--el-menu-base-level-padding);transition:transform var(--el-transition-duration);width:inherit;margin-top:-6px;margin-right:0;font-size:12px;position:absolute}.el-menu-item-group>ul{padding:0}.el-menu-item-group__title{padding:7px 0 7px var(--el-menu-base-level-padding);color:var(--el-text-color-secondary);font-size:12px;line-height:normal}.horizontal-collapse-transition .el-sub-menu__title .el-sub-menu__icon-arrow{transition:var(--el-transition-duration-fast);opacity:0}.el-popper,.el-menu--popup-container,.el-menu{outline:none}.theme-trigger[data-v-28ea4aeb]{appearance:none;display:inline-flex;align-items:center;gap:8px;padding:4px 12px 4px 8px;border-radius:999px;border:1px solid var(--mg-glass-border, rgba(255, 255, 255, .18));background:var(--mg-glass-bg, rgba(255, 255, 255, .05));color:var(--mg-text-light, rgba(255, 255, 255, .9));cursor:pointer;transition:var(--mg-transition, all .25s ease);font-size:12.5px}.theme-trigger[data-v-28ea4aeb]:hover{background:rgba(var(--mg-accent-rgb),.18);border-color:rgba(var(--mg-accent-rgb),.45);color:var(--mg-text-light, #fff)}.swatch[data-v-28ea4aeb]{width:18px;height:18px;border-radius:50%;box-shadow:0 0 0 2px var(--mg-glass-border-hi, rgba(255, 255, 255, .25));flex-shrink:0}.theme-label[data-v-28ea4aeb]{font-weight:600;letter-spacing:.3px;white-space:nowrap}.caret[data-v-28ea4aeb]{font-size:12px;opacity:.7}.theme-menu .el-dropdown-menu__item{display:flex!important;align-items:center;gap:12px;min-width:240px;padding:10px 16px!important}.theme-menu .el-dropdown-menu__item.is-active{background:rgba(var(--mg-accent-rgb),.22)!important}.theme-menu .option-swatch{width:28px;height:28px;border-radius:8px;flex-shrink:0;box-shadow:0 2px 8px #00000059}.theme-menu .option-text{flex:1;display:flex;flex-direction:column;gap:2px;line-height:1.3}.theme-menu .option-name{font-weight:600;font-size:13px}.theme-menu .option-desc{font-size:11px;opacity:.65}.theme-menu .check{color:var(--mg-accent);font-size:16px}.app-shell[data-v-a0d39774]{position:relative;height:100vh;overflow:hidden}.bg-orbs[data-v-a0d39774]{position:absolute;inset:0;pointer-events:none;z-index:0}.bg-orb[data-v-a0d39774]{position:absolute;border-radius:50%;filter:blur(120px);animation:drift-a0d39774 24s ease-in-out infinite;will-change:transform}.bg-orb-a[data-v-a0d39774]{width:520px;height:520px;top:-240px;left:-220px;background:radial-gradient(circle,var(--mg-primary-hover) 0%,var(--mg-primary) 55%,transparent 85%);opacity:var(--mg-orb-a-opacity, .55)}.bg-orb-b[data-v-a0d39774]{width:640px;height:640px;bottom:-280px;right:-260px;background:radial-gradient(circle,var(--mg-primary) 0%,var(--mg-primary-active) 55%,transparent 90%);opacity:var(--mg-orb-b-opacity, .5);animation-delay:-7s}.bg-orb-c[data-v-a0d39774]{width:320px;height:320px;top:58%;right:-140px;background:radial-gradient(circle,var(--mg-accent) 0%,var(--mg-primary-hover) 55%,transparent 95%);opacity:var(--mg-orb-c-opacity, .4);animation-delay:-14s}.bg-orb-d[data-v-a0d39774]{width:380px;height:380px;top:12%;right:28%;background:radial-gradient(circle,rgba(99,102,241,.85) 0%,var(--mg-primary) 60%,transparent 92%);opacity:.3;animation-delay:-18s;filter:blur(140px)}@keyframes drift-a0d39774{0%,to{transform:translate(0) scale(1)}50%{transform:translate(36px,-42px) scale(1.08)}}.app-container[data-v-a0d39774]{position:relative;z-index:1;height:100vh}.aside[data-v-a0d39774]{position:relative;background:linear-gradient(180deg,rgba(var(--mg-bg-aside-rgb),.78),rgba(var(--mg-bg-app-deep-rgb),.85));backdrop-filter:blur(24px) saturate(170%);-webkit-backdrop-filter:blur(24px) saturate(170%);border-right:1px solid rgba(var(--mg-accent-rgb),.18);display:flex;flex-direction:column;transition:width .28s cubic-bezier(.25,.8,.25,1);overflow:hidden;flex-shrink:0;box-shadow:inset -1px 0 #ffffff0a,4px 0 32px #00000073}.aside[data-v-a0d39774]:before{content:"";position:absolute;top:0;right:0;width:1px;height:100%;background:linear-gradient(180deg,transparent 0%,rgba(var(--mg-accent-rgb),.6) 50%,transparent 100%);pointer-events:none;opacity:.4}.logo[data-v-a0d39774]{flex-shrink:0;position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:22px 14px 18px;border-bottom:1px solid rgba(var(--mg-accent-rgb),.16);background:radial-gradient(ellipse at center top,rgba(var(--mg-primary-hover-rgb),.3) 0%,transparent 70%),linear-gradient(180deg,rgba(var(--mg-primary-rgb),.16) 0%,transparent 100%)}.logo.collapsed[data-v-a0d39774]{padding:18px 4px 14px}.logo-img-full[data-v-a0d39774]{height:36px;margin-bottom:12px;filter:drop-shadow(0 2px 10px rgba(var(--mg-accent-rgb),.5))}.logo-img-small[data-v-a0d39774]{height:26px;margin-bottom:4px;filter:drop-shadow(0 2px 8px rgba(var(--mg-accent-rgb),.5))}.logo-titles[data-v-a0d39774]{display:flex;flex-direction:column;align-items:center;gap:3px}.logo-title-zh[data-v-a0d39774]{font-size:13px;font-weight:700;letter-spacing:2.5px;background:linear-gradient(90deg,#ffffff 0%,var(--mg-accent) 60%,#ffffff 100%);-webkit-background-clip:text;background-clip:text;color:transparent;white-space:nowrap;text-shadow:0 0 18px rgba(var(--mg-accent-rgb),.3)}.logo-title-en[data-v-a0d39774]{color:#e8d7f573;font-size:7.5px;letter-spacing:.3px;white-space:nowrap;text-align:center}.logo-title-en b[data-v-a0d39774]{color:#ffffffe6;font-weight:700;font-size:8.5px}.logo-abbr[data-v-a0d39774]{color:#ffffffd9;font-size:10.5px;font-weight:700;letter-spacing:1.5px}.menu[data-v-a0d39774]{flex:1;overflow-y:auto;overflow-x:hidden;border-right:none!important;padding:8px 0;scrollbar-width:thin;scrollbar-color:rgba(var(--mg-accent-rgb),.3) transparent}.menu[data-v-a0d39774]::-webkit-scrollbar{width:4px}.menu[data-v-a0d39774]::-webkit-scrollbar-thumb{background:rgba(var(--mg-accent-rgb),.25);border-radius:2px}.menu[data-v-a0d39774]::-webkit-scrollbar-thumb:hover{background:rgba(var(--mg-accent-rgb),.55)}[data-v-a0d39774] .el-menu{border-right:none;background:transparent!important}[data-v-a0d39774] .el-menu-item,[data-v-a0d39774] .el-sub-menu__title{background:transparent!important;margin:2px 10px;border-radius:10px;height:42px;line-height:42px;transition:background .2s ease,color .2s ease,box-shadow .2s ease}[data-v-a0d39774] .el-menu--collapse .el-menu-item,[data-v-a0d39774] .el-menu--collapse .el-sub-menu__title{margin:2px 8px;padding:0!important;justify-content:center}[data-v-a0d39774] .el-menu-item:hover,[data-v-a0d39774] .el-sub-menu__title:hover{background:rgba(var(--mg-primary-rgb),.2)!important;color:#fff!important;box-shadow:inset 0 0 0 1px rgba(var(--mg-accent-rgb),.18)}[data-v-a0d39774] .el-menu-item.is-active{background:linear-gradient(90deg,rgba(var(--mg-primary-rgb),.55) 0%,rgba(var(--mg-primary-hover-rgb),.2) 70%,transparent 100%)!important;color:#fff!important;font-weight:600;box-shadow:inset 3px 0 0 var(--mg-accent),0 4px 14px rgba(var(--mg-primary-rgb),.25)}[data-v-a0d39774] .el-sub-menu.is-active>.el-sub-menu__title{color:#fff!important;font-weight:600}[data-v-a0d39774] .el-sub-menu .el-menu{background:#0000002e!important;border-radius:8px;margin:0 12px;padding:4px 0}[data-v-a0d39774] .el-sub-menu .el-menu .el-menu-item{margin:1px 4px;border-radius:6px;font-size:13px;height:36px;line-height:36px}[data-v-a0d39774] .el-sub-menu .el-menu .el-menu-item.is-active{background:rgba(var(--mg-accent-rgb),.18)!important;box-shadow:inset 2px 0 0 var(--mg-primary-hover);color:#fff!important}.aside-footer[data-v-a0d39774]{flex-shrink:0;padding:12px 16px;border-top:1px solid rgba(var(--mg-accent-rgb),.14);display:flex;align-items:center;gap:8px;font-size:10.5px;color:#ffffff8c;letter-spacing:.4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.aside-footer-badge[data-v-a0d39774]{padding:2px 7px;border-radius:8px;background:linear-gradient(135deg,rgba(var(--mg-primary-rgb),.35),rgba(var(--mg-accent-rgb),.2));border:1px solid rgba(var(--mg-accent-rgb),.36);color:#fff;font-weight:600;font-size:10px;font-family:var(--mg-font-mono);font-variant-numeric:tabular-nums;letter-spacing:0;box-shadow:0 0 12px rgba(var(--mg-primary-hover-rgb),.35)}.container-right[data-v-a0d39774]{background:transparent}.header[data-v-a0d39774]{position:relative;display:flex;justify-content:space-between;align-items:center;background:linear-gradient(180deg,rgba(var(--mg-bg-aside-rgb),.72),rgba(var(--mg-bg-aside-rgb),.55));backdrop-filter:blur(24px) saturate(170%);-webkit-backdrop-filter:blur(24px) saturate(170%);border-bottom:1px solid rgba(var(--mg-accent-rgb),.18);padding:0 20px}.header[data-v-a0d39774]:after{content:"";position:absolute;left:0;right:0;bottom:0;height:1px;background:linear-gradient(90deg,transparent 0%,rgba(var(--mg-accent-rgb),.45) 30%,rgba(var(--mg-primary-hover-rgb),.6) 50%,rgba(var(--mg-accent-rgb),.45) 70%,transparent 100%);opacity:.55}.header-left[data-v-a0d39774],.header-right[data-v-a0d39774]{display:flex;align-items:center;gap:14px}.icon-btn[data-v-a0d39774]{appearance:none;background:transparent;border:1px solid rgba(255,255,255,.18);color:#ffffffbf;border-radius:8px;width:32px;height:32px;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;transition:all .2s}.icon-btn[data-v-a0d39774]:hover{background:rgba(var(--mg-accent-rgb),.18);border-color:rgba(var(--mg-accent-rgb),.5);color:#fff}[data-v-a0d39774] .el-breadcrumb__inner{color:#ffffffc7;font-weight:500}[data-v-a0d39774] .el-breadcrumb__separator{color:#ffffff59}[data-v-a0d39774] .el-breadcrumb__item:last-child .el-breadcrumb__inner{color:#fff;font-weight:600}.runmode-tag[data-v-a0d39774]{padding:4px 10px;border-radius:999px;font-size:11.5px;letter-spacing:.5px;font-family:var(--mg-font-mono);font-variant-numeric:tabular-nums;border:1px solid rgba(255,255,255,.18);background:#ffffff0d;color:#ffffffd9}.runmode-tag.WebEnabled[data-v-a0d39774]{background:rgba(var(--mg-status-success-rgb),.18);border-color:rgba(var(--mg-status-success-rgb),.45);color:var(--mg-status-success)}.runmode-tag.WebOnly[data-v-a0d39774]{background:rgba(var(--mg-primary-hover-rgb),.18);border-color:rgba(var(--mg-primary-hover-rgb),.45);color:var(--mg-accent)}.runmode-tag.Detached[data-v-a0d39774]{background:rgba(var(--mg-status-warning-rgb),.18);border-color:rgba(var(--mg-status-warning-rgb),.45);color:var(--mg-status-warning)}.user-link[data-v-a0d39774]{display:inline-flex;align-items:center;gap:8px;cursor:pointer;color:#ffffffd9;padding:4px 10px;border-radius:999px;border:1px solid rgba(255,255,255,.12);background:#ffffff0a;transition:all .2s}.user-link[data-v-a0d39774]:hover{background:rgba(var(--mg-accent-rgb),.18);border-color:rgba(var(--mg-accent-rgb),.4)}.user-name[data-v-a0d39774]{font-size:13px;color:#fff;font-weight:500}[data-v-a0d39774] .el-avatar{background:linear-gradient(135deg,var(--mg-accent) 0%,var(--mg-primary) 60%,var(--mg-primary-active) 100%);color:#fff;font-weight:700;box-shadow:0 0 0 1px #fff3}.main[data-v-a0d39774]{padding:24px;background:transparent;color:#fff}.footer[data-v-a0d39774]{background:rgba(var(--mg-bg-aside-rgb),.25);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);border-top:1px solid rgba(255,255,255,.06);display:flex;align-items:center;justify-content:center;color:#ffffff8c;font-size:12px;font-family:var(--mg-font-mono);font-variant-numeric:tabular-nums;letter-spacing:.3px;height:32px!important;line-height:32px}.fade-up-enter-active[data-v-a0d39774],.fade-up-leave-active[data-v-a0d39774]{transition:opacity .25s cubic-bezier(.25,.8,.25,1),transform .25s cubic-bezier(.25,.8,.25,1)}.fade-up-enter-from[data-v-a0d39774]{opacity:0;transform:translateY(8px)}.fade-up-leave-to[data-v-a0d39774]{opacity:0;transform:translateY(-8px)} +.el-aside{box-sizing:border-box;width:var(--el-aside-width,300px);flex-shrink:0;overflow:auto}.el-container{box-sizing:border-box;flex-direction:row;flex:auto;min-width:0;display:flex}.el-container.is-vertical{flex-direction:column}.el-footer{--el-footer-padding:0 20px;--el-footer-height:60px;padding:var(--el-footer-padding);box-sizing:border-box;height:var(--el-footer-height);flex-shrink:0}.el-header{--el-header-padding:0 20px;--el-header-height:60px;padding:var(--el-header-padding);box-sizing:border-box;height:var(--el-header-height);flex-shrink:0}.el-main{--el-main-padding:20px;box-sizing:border-box;padding:var(--el-main-padding);flex:auto;display:block;overflow:auto}.el-avatar{--el-avatar-text-color:var(--el-color-white);--el-avatar-bg-color:var(--el-text-color-disabled);--el-avatar-text-size:14px;--el-avatar-icon-size:18px;--el-avatar-border-radius:var(--el-border-radius-base);--el-avatar-size-large:56px;--el-avatar-size:40px;--el-avatar-size-small:24px;box-sizing:border-box;text-align:center;color:var(--el-avatar-text-color);background:var(--el-avatar-bg-color);width:var(--el-avatar-size);height:var(--el-avatar-size);font-size:var(--el-avatar-text-size);outline:none;justify-content:center;align-items:center;display:inline-flex;overflow:hidden}.el-avatar>img{width:100%;height:100%;display:block}.el-avatar--circle{border-radius:50%}.el-avatar--square{border-radius:var(--el-avatar-border-radius)}.el-avatar--icon{font-size:var(--el-avatar-icon-size)}.el-avatar--small{--el-avatar-size:24px}.el-avatar--large{--el-avatar-size:56px}.el-breadcrumb{font-size:14px;line-height:1}.el-breadcrumb:before,.el-breadcrumb:after{content:"";display:table}.el-breadcrumb:after{clear:both}.el-breadcrumb__separator{color:var(--el-text-color-placeholder);margin:0 9px;font-weight:700}.el-breadcrumb__separator.el-icon{margin:0 6px;font-weight:400}.el-breadcrumb__separator.el-icon svg{vertical-align:middle}.el-breadcrumb__item{float:left;align-items:center;display:inline-flex}.el-breadcrumb__inner{color:var(--el-text-color-regular)}.el-breadcrumb__inner.is-link,.el-breadcrumb__inner a{transition:var(--el-transition-color);color:var(--el-text-color-primary);font-weight:700;text-decoration:none}.el-breadcrumb__inner.is-link:hover,.el-breadcrumb__inner a:hover{color:var(--el-color-primary);cursor:pointer}.el-breadcrumb__item:last-child .el-breadcrumb__inner,.el-breadcrumb__item:last-child .el-breadcrumb__inner:hover,.el-breadcrumb__item:last-child .el-breadcrumb__inner a,.el-breadcrumb__item:last-child .el-breadcrumb__inner a:hover{color:var(--el-text-color-regular);cursor:text;font-weight:400}.el-breadcrumb__item:last-child .el-breadcrumb__separator{display:none}.fade-in-linear-enter-active,.fade-in-linear-leave-active{transition:var(--el-transition-fade-linear)}.fade-in-linear-enter-from,.fade-in-linear-leave-to{opacity:0}.el-fade-in-linear-enter-active,.el-fade-in-linear-leave-active{transition:var(--el-transition-fade-linear)}.el-fade-in-linear-enter-from,.el-fade-in-linear-leave-to{opacity:0}.el-fade-in-enter-active,.el-fade-in-leave-active{transition:all var(--el-transition-duration) cubic-bezier(.55,0,.1,1)}.el-fade-in-enter-from,.el-fade-in-leave-active{opacity:0}.el-zoom-in-center-enter-active,.el-zoom-in-center-leave-active{transition:all var(--el-transition-duration) cubic-bezier(.55,0,.1,1)}.el-zoom-in-center-enter-from,.el-zoom-in-center-leave-active{opacity:0;transform:scaleX(0)}.el-zoom-in-top-enter-active,.el-zoom-in-top-leave-active{opacity:1;transition:var(--el-transition-md-fade);transform-origin:top;transform:scaleY(1)}.el-zoom-in-top-enter-active[data-popper-placement^=top],.el-zoom-in-top-leave-active[data-popper-placement^=top]{transform-origin:bottom}.el-zoom-in-top-enter-from,.el-zoom-in-top-leave-active{opacity:0;transform:scaleY(0)}.el-zoom-in-bottom-enter-active,.el-zoom-in-bottom-leave-active{opacity:1;transition:var(--el-transition-md-fade);transform-origin:bottom;transform:scaleY(1)}.el-zoom-in-bottom-enter-from,.el-zoom-in-bottom-leave-active{opacity:0;transform:scaleY(0)}.el-zoom-in-left-enter-active,.el-zoom-in-left-leave-active{opacity:1;transition:var(--el-transition-md-fade);transform-origin:0 0;transform:scale(1)}.el-zoom-in-left-enter-from,.el-zoom-in-left-leave-active{opacity:0;transform:scale(.45)}.collapse-transition{transition:var(--el-transition-duration) height ease-in-out,var(--el-transition-duration) padding-top ease-in-out,var(--el-transition-duration) padding-bottom ease-in-out}.el-collapse-transition-leave-active,.el-collapse-transition-enter-active{transition:var(--el-transition-duration) max-height ease-in-out,var(--el-transition-duration) padding-top ease-in-out,var(--el-transition-duration) padding-bottom ease-in-out}.horizontal-collapse-transition{transition:var(--el-transition-duration) width ease-in-out,var(--el-transition-duration) padding-left ease-in-out,var(--el-transition-duration) padding-right ease-in-out}.el-list-enter-active,.el-list-leave-active{transition:all 1s}.el-list-enter-from,.el-list-leave-to{opacity:0;transform:translateY(-30px)}.el-list-leave-active{position:absolute!important}.el-opacity-transition{transition:opacity var(--el-transition-duration) cubic-bezier(.55,0,.1,1)}:root{--el-menu-active-color:var(--el-color-primary);--el-menu-text-color:var(--el-text-color-primary);--el-menu-hover-text-color:var(--el-color-primary);--el-menu-bg-color:var(--el-fill-color-blank);--el-menu-hover-bg-color:var(--el-color-primary-light-9);--el-menu-item-height:56px;--el-menu-sub-item-height:calc(var(--el-menu-item-height) - 6px);--el-menu-horizontal-height:60px;--el-menu-horizontal-sub-item-height:36px;--el-menu-item-font-size:var(--el-font-size-base);--el-menu-item-hover-fill:var(--el-color-primary-light-9);--el-menu-border-color:var(--el-border-color);--el-menu-base-level-padding:20px;--el-menu-level-padding:20px;--el-menu-icon-width:24px}.el-menu{border-right:solid 1px var(--el-menu-border-color);background-color:var(--el-menu-bg-color);box-sizing:border-box;margin:0;padding-left:0;list-style:none;position:relative}.el-menu--vertical:not(.el-menu--collapse):not(.el-menu--popup-container) .el-menu-item,.el-menu--vertical:not(.el-menu--collapse):not(.el-menu--popup-container) .el-sub-menu__title,.el-menu--vertical:not(.el-menu--collapse):not(.el-menu--popup-container) .el-menu-item-group__title{white-space:nowrap;padding-left:calc(var(--el-menu-base-level-padding) + var(--el-menu-level) * var(--el-menu-level-padding))}.el-menu:not(.el-menu--collapse) .el-sub-menu__title{padding-right:calc(var(--el-menu-base-level-padding) + var(--el-menu-icon-width))}.el-menu--horizontal{height:var(--el-menu-horizontal-height);border-right:none;flex-wrap:nowrap;display:flex}.el-menu--horizontal.el-menu--popup-container{height:unset}.el-menu--horizontal.el-menu{border-bottom:solid 1px var(--el-menu-border-color)}.el-menu--horizontal>.el-menu-item{height:100%;color:var(--el-menu-text-color);border-bottom:2px solid #0000;justify-content:center;align-items:center;margin:0;display:inline-flex}.el-menu--horizontal>.el-menu-item a,.el-menu--horizontal>.el-menu-item a:hover{color:inherit}.el-menu--horizontal>.el-sub-menu:focus,.el-menu--horizontal>.el-sub-menu:hover{outline:none}.el-menu--horizontal>.el-sub-menu:hover .el-sub-menu__title{color:var(--el-menu-hover-text-color)}.el-menu--horizontal>.el-sub-menu.is-active .el-sub-menu__title{border-bottom:2px solid var(--el-menu-active-color);color:var(--el-menu-active-color)}.el-menu--horizontal>.el-sub-menu .el-sub-menu__title{height:100%;color:var(--el-menu-text-color);border-bottom:2px solid #0000}.el-menu--horizontal>.el-sub-menu .el-sub-menu__title:hover{background-color:var(--el-menu-bg-color)}.el-menu--horizontal .el-menu .el-menu-item,.el-menu--horizontal .el-menu .el-sub-menu__title{background-color:var(--el-menu-bg-color);height:var(--el-menu-horizontal-sub-item-height);line-height:var(--el-menu-horizontal-sub-item-height);color:var(--el-menu-text-color);align-items:center;padding:0 10px;display:flex}.el-menu--horizontal .el-menu .el-sub-menu__title{padding-right:40px}.el-menu--horizontal .el-menu .el-menu-item.is-active,.el-menu--horizontal .el-menu .el-menu-item.is-active:hover,.el-menu--horizontal .el-menu .el-sub-menu.is-active>.el-sub-menu__title,.el-menu--horizontal .el-menu .el-sub-menu.is-active>.el-sub-menu__title:hover{color:var(--el-menu-active-color)}.el-menu--horizontal .el-menu-item:not(.is-disabled):hover,.el-menu--horizontal .el-menu-item:not(.is-disabled):focus{color:var(--el-menu-active-color,var(--el-menu-hover-text-color));background-color:var(--el-menu-hover-bg-color);outline:none}.el-menu--horizontal>.el-menu-item.is-active{border-bottom:2px solid var(--el-menu-active-color);color:var(--el-menu-active-color)!important}.el-menu--collapse{width:calc(var(--el-menu-icon-width) + var(--el-menu-base-level-padding) * 2)}.el-menu--collapse>.el-menu-item [class^=el-icon],.el-menu--collapse>.el-sub-menu>.el-sub-menu__title [class^=el-icon],.el-menu--collapse>.el-menu-item-group>ul>.el-sub-menu>.el-sub-menu__title [class^=el-icon]{vertical-align:middle;width:var(--el-menu-icon-width);text-align:center;margin:0}.el-menu--collapse>.el-menu-item .el-sub-menu__icon-arrow,.el-menu--collapse>.el-sub-menu>.el-sub-menu__title .el-sub-menu__icon-arrow,.el-menu--collapse>.el-menu-item-group>ul>.el-sub-menu>.el-sub-menu__title .el-sub-menu__icon-arrow{display:none}.el-menu--collapse>.el-menu-item>span,.el-menu--collapse>.el-sub-menu>.el-sub-menu__title>span,.el-menu--collapse>.el-menu-item-group>ul>.el-sub-menu>.el-sub-menu__title>span{visibility:hidden;width:0;height:0;display:inline-block;overflow:hidden}.el-menu--collapse>.el-menu-item.is-active i{color:inherit}.el-menu--collapse .el-menu .el-sub-menu{min-width:200px}.el-menu--collapse .el-sub-menu.is-active .el-sub-menu__title{color:var(--el-menu-active-color)}.el-menu--popup{z-index:100;border-radius:var(--el-border-radius-small);min-width:200px;box-shadow:var(--el-box-shadow-light);border:none;padding:5px 0}.el-menu .el-icon{flex-shrink:0}.el-menu-item{height:var(--el-menu-item-height);line-height:var(--el-menu-item-height);font-size:var(--el-menu-item-font-size);color:var(--el-menu-text-color);padding:0 var(--el-menu-base-level-padding);cursor:pointer;transition:border-color var(--el-transition-duration),background-color var(--el-transition-duration),color var(--el-transition-duration);box-sizing:border-box;white-space:nowrap;align-items:center;list-style:none;display:flex;position:relative}.el-menu-item *{vertical-align:bottom}.el-menu-item i{color:inherit}.el-menu-item:hover,.el-menu-item:focus{outline:none}.el-menu-item:hover{background-color:var(--el-menu-hover-bg-color)}.el-menu-item.is-disabled{opacity:.25;cursor:not-allowed;background:0 0!important}.el-menu-item [class^=el-icon]{width:var(--el-menu-icon-width);text-align:center;vertical-align:middle;margin-right:5px;font-size:18px}.el-menu-item.is-active{color:var(--el-menu-active-color)}.el-menu-item.is-active i{color:inherit}.el-menu-item .el-menu-tooltip__trigger{box-sizing:border-box;width:100%;height:100%;padding:0 var(--el-menu-base-level-padding);align-items:center;display:inline-flex;position:absolute;top:0;left:0}.el-sub-menu{margin:0;padding-left:0;list-style:none}.el-sub-menu__title{height:var(--el-menu-item-height);line-height:var(--el-menu-item-height);font-size:var(--el-menu-item-font-size);color:var(--el-menu-text-color);padding:0 var(--el-menu-base-level-padding);cursor:pointer;transition:border-color var(--el-transition-duration),background-color var(--el-transition-duration),color var(--el-transition-duration);box-sizing:border-box;white-space:nowrap;align-items:center;list-style:none;display:flex;position:relative}.el-sub-menu__title *{vertical-align:bottom}.el-sub-menu__title i{color:inherit}.el-sub-menu__title:hover,.el-sub-menu__title:focus{outline:none}.el-sub-menu__title.is-disabled{opacity:.25;cursor:not-allowed;background:0 0!important}.el-sub-menu__title:hover{background-color:var(--el-menu-hover-bg-color)}.el-sub-menu .el-menu{border:none}.el-sub-menu .el-menu-item{height:var(--el-menu-sub-item-height);line-height:var(--el-menu-sub-item-height)}.el-sub-menu.el-sub-menu__hide-arrow .el-sub-menu__title{padding-right:var(--el-menu-base-level-padding)}.el-sub-menu__hide-arrow .el-sub-menu__icon-arrow{display:none!important}.el-sub-menu.is-active .el-sub-menu__title{border-bottom-color:var(--el-menu-active-color)}.el-sub-menu.is-disabled .el-sub-menu__title,.el-sub-menu.is-disabled .el-menu-item{opacity:.25;cursor:not-allowed;background:0 0!important}.el-sub-menu .el-icon{vertical-align:middle;width:var(--el-menu-icon-width);text-align:center;margin-right:5px;font-size:18px}.el-sub-menu .el-icon.el-sub-menu__icon-more{margin-right:0!important}.el-sub-menu .el-sub-menu__icon-arrow{top:50%;right:var(--el-menu-base-level-padding);transition:transform var(--el-transition-duration);width:inherit;margin-top:-6px;margin-right:0;font-size:12px;position:absolute}.el-menu-item-group>ul{padding:0}.el-menu-item-group__title{padding:7px 0 7px var(--el-menu-base-level-padding);color:var(--el-text-color-secondary);font-size:12px;line-height:normal}.horizontal-collapse-transition .el-sub-menu__title .el-sub-menu__icon-arrow{transition:var(--el-transition-duration-fast);opacity:0}.el-popper,.el-menu--popup-container,.el-menu{outline:none}.theme-trigger[data-v-28ea4aeb]{appearance:none;display:inline-flex;align-items:center;gap:8px;padding:4px 12px 4px 8px;border-radius:999px;border:1px solid var(--mg-glass-border, rgba(255, 255, 255, .18));background:var(--mg-glass-bg, rgba(255, 255, 255, .05));color:var(--mg-text-light, rgba(255, 255, 255, .9));cursor:pointer;transition:var(--mg-transition, all .25s ease);font-size:12.5px}.theme-trigger[data-v-28ea4aeb]:hover{background:rgba(var(--mg-accent-rgb),.18);border-color:rgba(var(--mg-accent-rgb),.45);color:var(--mg-text-light, #fff)}.swatch[data-v-28ea4aeb]{width:18px;height:18px;border-radius:50%;box-shadow:0 0 0 2px var(--mg-glass-border-hi, rgba(255, 255, 255, .25));flex-shrink:0}.theme-label[data-v-28ea4aeb]{font-weight:600;letter-spacing:.3px;white-space:nowrap}.caret[data-v-28ea4aeb]{font-size:12px;opacity:.7}.theme-menu .el-dropdown-menu__item{display:flex!important;align-items:center;gap:12px;min-width:240px;padding:10px 16px!important}.theme-menu .el-dropdown-menu__item.is-active{background:rgba(var(--mg-accent-rgb),.22)!important}.theme-menu .option-swatch{width:28px;height:28px;border-radius:8px;flex-shrink:0;box-shadow:0 2px 8px #00000059}.theme-menu .option-text{flex:1;display:flex;flex-direction:column;gap:2px;line-height:1.3}.theme-menu .option-name{font-weight:600;font-size:13px}.theme-menu .option-desc{font-size:11px;opacity:.65}.theme-menu .check{color:var(--mg-accent);font-size:16px}.app-shell[data-v-800dedbc]{position:relative;height:100vh;overflow:hidden}.bg-orbs[data-v-800dedbc]{position:absolute;inset:0;pointer-events:none;z-index:0}.bg-orb[data-v-800dedbc]{position:absolute;border-radius:50%;filter:blur(120px);animation:drift-800dedbc 24s ease-in-out infinite;will-change:transform}.bg-orb-a[data-v-800dedbc]{width:520px;height:520px;top:-240px;left:-220px;background:radial-gradient(circle,var(--mg-primary-hover) 0%,var(--mg-primary) 55%,transparent 85%);opacity:var(--mg-orb-a-opacity, .55)}.bg-orb-b[data-v-800dedbc]{width:640px;height:640px;bottom:-280px;right:-260px;background:radial-gradient(circle,var(--mg-primary) 0%,var(--mg-primary-active) 55%,transparent 90%);opacity:var(--mg-orb-b-opacity, .5);animation-delay:-7s}.bg-orb-c[data-v-800dedbc]{width:320px;height:320px;top:58%;right:-140px;background:radial-gradient(circle,var(--mg-accent) 0%,var(--mg-primary-hover) 55%,transparent 95%);opacity:var(--mg-orb-c-opacity, .4);animation-delay:-14s}.bg-orb-d[data-v-800dedbc]{width:380px;height:380px;top:12%;right:28%;background:radial-gradient(circle,rgba(99,102,241,.85) 0%,var(--mg-primary) 60%,transparent 92%);opacity:.3;animation-delay:-18s;filter:blur(140px)}@keyframes drift-800dedbc{0%,to{transform:translate(0) scale(1)}50%{transform:translate(36px,-42px) scale(1.08)}}.app-container[data-v-800dedbc]{position:relative;z-index:1;height:100vh}.aside[data-v-800dedbc]{position:relative;background:linear-gradient(180deg,rgba(var(--mg-bg-aside-rgb),.78),rgba(var(--mg-bg-app-deep-rgb),.85));backdrop-filter:blur(24px) saturate(170%);-webkit-backdrop-filter:blur(24px) saturate(170%);border-right:1px solid rgba(var(--mg-accent-rgb),.18);display:flex;flex-direction:column;transition:width .28s cubic-bezier(.25,.8,.25,1);overflow:hidden;flex-shrink:0;box-shadow:inset -1px 0 #ffffff0a,4px 0 32px #00000073}.aside[data-v-800dedbc]:before{content:"";position:absolute;top:0;right:0;width:1px;height:100%;background:linear-gradient(180deg,transparent 0%,rgba(var(--mg-accent-rgb),.6) 50%,transparent 100%);pointer-events:none;opacity:.4}.logo[data-v-800dedbc]{flex-shrink:0;position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:22px 14px 18px;border-bottom:1px solid rgba(var(--mg-accent-rgb),.16);background:radial-gradient(ellipse at center top,rgba(var(--mg-primary-hover-rgb),.3) 0%,transparent 70%),linear-gradient(180deg,rgba(var(--mg-primary-rgb),.16) 0%,transparent 100%)}.logo.collapsed[data-v-800dedbc]{padding:18px 4px 14px}.logo-img-full[data-v-800dedbc]{height:36px;margin-bottom:12px;filter:drop-shadow(0 2px 10px rgba(var(--mg-accent-rgb),.5))}.logo-img-small[data-v-800dedbc]{height:26px;margin-bottom:4px;filter:drop-shadow(0 2px 8px rgba(var(--mg-accent-rgb),.5))}.logo-titles[data-v-800dedbc]{display:flex;flex-direction:column;align-items:center;gap:3px}.logo-title-zh[data-v-800dedbc]{font-size:13px;font-weight:700;letter-spacing:2.5px;background:linear-gradient(90deg,#ffffff 0%,var(--mg-accent) 60%,#ffffff 100%);-webkit-background-clip:text;background-clip:text;color:transparent;white-space:nowrap;text-shadow:0 0 18px rgba(var(--mg-accent-rgb),.3)}.logo-title-en[data-v-800dedbc]{color:#e8d7f573;font-size:7.5px;letter-spacing:.3px;white-space:nowrap;text-align:center}.logo-title-en b[data-v-800dedbc]{color:#ffffffe6;font-weight:700;font-size:8.5px}.logo-abbr[data-v-800dedbc]{color:#ffffffd9;font-size:10.5px;font-weight:700;letter-spacing:1.5px}.menu[data-v-800dedbc]{flex:1;overflow-y:auto;overflow-x:hidden;border-right:none!important;padding:8px 0;scrollbar-width:thin;scrollbar-color:rgba(var(--mg-accent-rgb),.3) transparent}.menu[data-v-800dedbc]::-webkit-scrollbar{width:4px}.menu[data-v-800dedbc]::-webkit-scrollbar-thumb{background:rgba(var(--mg-accent-rgb),.25);border-radius:2px}.menu[data-v-800dedbc]::-webkit-scrollbar-thumb:hover{background:rgba(var(--mg-accent-rgb),.55)}[data-v-800dedbc] .el-menu{border-right:none;background:transparent!important}[data-v-800dedbc] .el-menu-item,[data-v-800dedbc] .el-sub-menu__title{background:transparent!important;margin:2px 10px;border-radius:10px;height:42px;line-height:42px;transition:background .2s ease,color .2s ease,box-shadow .2s ease}[data-v-800dedbc] .el-menu--collapse .el-menu-item,[data-v-800dedbc] .el-menu--collapse .el-sub-menu__title{margin:2px 8px;padding:0!important;justify-content:center}[data-v-800dedbc] .el-menu-item:hover,[data-v-800dedbc] .el-sub-menu__title:hover{background:rgba(var(--mg-primary-rgb),.2)!important;color:#fff!important;box-shadow:inset 0 0 0 1px rgba(var(--mg-accent-rgb),.18)}[data-v-800dedbc] .el-menu-item.is-active{background:linear-gradient(90deg,rgba(var(--mg-primary-rgb),.55) 0%,rgba(var(--mg-primary-hover-rgb),.2) 70%,transparent 100%)!important;color:#fff!important;font-weight:600;box-shadow:inset 3px 0 0 var(--mg-accent),0 4px 14px rgba(var(--mg-primary-rgb),.25)}[data-v-800dedbc] .el-sub-menu.is-active>.el-sub-menu__title{color:#fff!important;font-weight:600}[data-v-800dedbc] .el-sub-menu .el-menu{background:#0000002e!important;border-radius:8px;margin:0 12px;padding:4px 0}[data-v-800dedbc] .el-sub-menu .el-menu .el-menu-item{margin:1px 4px;border-radius:6px;font-size:13px;height:36px;line-height:36px}[data-v-800dedbc] .el-sub-menu .el-menu .el-menu-item.is-active{background:rgba(var(--mg-accent-rgb),.18)!important;box-shadow:inset 2px 0 0 var(--mg-primary-hover);color:#fff!important}.aside-footer[data-v-800dedbc]{flex-shrink:0;padding:12px 16px;border-top:1px solid rgba(var(--mg-accent-rgb),.14);display:flex;align-items:center;gap:8px;font-size:10.5px;color:#ffffff8c;letter-spacing:.4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.aside-footer-badge[data-v-800dedbc]{padding:2px 7px;border-radius:8px;background:linear-gradient(135deg,rgba(var(--mg-primary-rgb),.35),rgba(var(--mg-accent-rgb),.2));border:1px solid rgba(var(--mg-accent-rgb),.36);color:#fff;font-weight:600;font-size:10px;font-family:var(--mg-font-mono);font-variant-numeric:tabular-nums;letter-spacing:0;box-shadow:0 0 12px rgba(var(--mg-primary-hover-rgb),.35)}.container-right[data-v-800dedbc]{background:transparent;flex:1;min-height:0;display:flex;flex-direction:column}.header[data-v-800dedbc]{position:relative;display:flex;justify-content:space-between;align-items:center;background:linear-gradient(180deg,rgba(var(--mg-bg-aside-rgb),.72),rgba(var(--mg-bg-aside-rgb),.55));backdrop-filter:blur(24px) saturate(170%);-webkit-backdrop-filter:blur(24px) saturate(170%);border-bottom:1px solid rgba(var(--mg-accent-rgb),.18);padding:0 20px}.header[data-v-800dedbc]:after{content:"";position:absolute;left:0;right:0;bottom:0;height:1px;background:linear-gradient(90deg,transparent 0%,rgba(var(--mg-accent-rgb),.45) 30%,rgba(var(--mg-primary-hover-rgb),.6) 50%,rgba(var(--mg-accent-rgb),.45) 70%,transparent 100%);opacity:.55}.header-left[data-v-800dedbc],.header-right[data-v-800dedbc]{display:flex;align-items:center;gap:14px}.icon-btn[data-v-800dedbc]{appearance:none;background:transparent;border:1px solid rgba(255,255,255,.18);color:#ffffffbf;border-radius:8px;width:32px;height:32px;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;transition:all .2s}.icon-btn[data-v-800dedbc]:hover{background:rgba(var(--mg-accent-rgb),.18);border-color:rgba(var(--mg-accent-rgb),.5);color:#fff}[data-v-800dedbc] .el-breadcrumb__inner{color:#ffffffc7;font-weight:500}[data-v-800dedbc] .el-breadcrumb__separator{color:#ffffff59}[data-v-800dedbc] .el-breadcrumb__item:last-child .el-breadcrumb__inner{color:#fff;font-weight:600}.runmode-tag[data-v-800dedbc]{padding:4px 10px;border-radius:999px;font-size:11.5px;letter-spacing:.5px;font-family:var(--mg-font-mono);font-variant-numeric:tabular-nums;border:1px solid rgba(255,255,255,.18);background:#ffffff0d;color:#ffffffd9}.runmode-tag.WebEnabled[data-v-800dedbc]{background:rgba(var(--mg-status-success-rgb),.18);border-color:rgba(var(--mg-status-success-rgb),.45);color:var(--mg-status-success)}.runmode-tag.WebOnly[data-v-800dedbc]{background:rgba(var(--mg-primary-hover-rgb),.18);border-color:rgba(var(--mg-primary-hover-rgb),.45);color:var(--mg-accent)}.runmode-tag.Detached[data-v-800dedbc]{background:rgba(var(--mg-status-warning-rgb),.18);border-color:rgba(var(--mg-status-warning-rgb),.45);color:var(--mg-status-warning)}.user-link[data-v-800dedbc]{display:inline-flex;align-items:center;gap:8px;cursor:pointer;color:#ffffffd9;padding:4px 10px;border-radius:999px;border:1px solid rgba(255,255,255,.12);background:#ffffff0a;transition:all .2s}.user-link[data-v-800dedbc]:hover{background:rgba(var(--mg-accent-rgb),.18);border-color:rgba(var(--mg-accent-rgb),.4)}.user-name[data-v-800dedbc]{font-size:13px;color:#fff;font-weight:500}[data-v-800dedbc] .el-avatar{background:linear-gradient(135deg,var(--mg-accent) 0%,var(--mg-primary) 60%,var(--mg-primary-active) 100%);color:#fff;font-weight:700;box-shadow:0 0 0 1px #fff3}.main[data-v-800dedbc]{flex:1;min-height:0;overflow:auto;display:flex;flex-direction:column;padding:24px;background:transparent;color:#fff}.footer[data-v-800dedbc]{background:rgba(var(--mg-bg-aside-rgb),.25);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);border-top:1px solid rgba(255,255,255,.06);display:flex;align-items:center;justify-content:center;color:#ffffff8c;font-size:12px;font-family:var(--mg-font-mono);font-variant-numeric:tabular-nums;letter-spacing:.3px;height:32px!important;line-height:32px}.route-page[data-v-800dedbc]{min-height:0;flex:1;display:flex;flex-direction:column} diff --git a/MiGu.Server/wwwroot/assets/AppShell-VGUYhBS-.js b/MiGu.Server/wwwroot/assets/AppShell-VGUYhBS-.js deleted file mode 100644 index 1ce06ae..0000000 --- a/MiGu.Server/wwwroot/assets/AppShell-VGUYhBS-.js +++ /dev/null @@ -1 +0,0 @@ -import{aG as A,bo as G,b3 as n,aA as m,bB as e,aF as t,a0 as ce,aE as u,bq as j,av as b,a1 as pe,Y as ue,br as q,az as a,bm as l,a_ as U,bj as s,R as J,ar as X,L as H,aC as g,ai as E,bd as N,K,aZ as I,as as me,aB as R,J as Q,al as Y,aD as _e,B as be,n as fe,W as he,X as ge,bg as D,Q as ve,aN as we,aJ as ke,q as ye,r as Ee,o as Ce,V as Se,ak as xe,N as Me,a7 as Te,bf as $e,bp as De,aP as Ne,aW as W,bk as Ie,a$ as O,bi as Re,aX as Ae,b8 as Be}from"./index-DrvLDslf.js";/* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css */import"./el-tooltip-l0sNRNKZ.js";/* empty css */const Pe="/FRLD-logo-white-no_title.png",Ve="/FRLD-logo-white.png",Le=A({__name:"ScopeSwitcher",setup(B){const i=G(),k=j(),r=b({get:()=>i.scope??"Platform",set:d=>{f(d)}});async function c(d){await f(d)}async function f(d){try{await i.switchScope(d),k.push(d==="Platform"?"/admin/map-monitor":"/monitor/map")}catch(p){ue.error(p?.message??`切换到 ${d} 失败`)}}return(d,p)=>{const v=ce,C=pe;return n(),m(C,{modelValue:r.value,"onUpdate:modelValue":p[0]||(p[0]=S=>r.value=S),size:"small",onChange:c},{default:e(()=>[t(v,{label:"Platform"},{default:e(()=>[...p[1]||(p[1]=[u("管理员",-1)])]),_:1}),t(v,{label:"RCSMonitor"},{default:e(()=>[...p[2]||(p[2]=[u("运营",-1)])]),_:1})]),_:1},8,["modelValue"])}}}),ze=["title"],Fe={class:"theme-label"},Ue={class:"option-text"},We={class:"option-name"},Oe={class:"option-desc"},Ge=A({__name:"ThemeSwitcher",setup(B){const i=q(),k=b(()=>({background:`linear-gradient(135deg, ${i.activeTheme.preview} 0%, ${i.activeTheme.previewAccent} 100%)`}));function r(f){const d=i.getMergedTheme(f);return{background:`linear-gradient(135deg, ${d.preview} 0%, ${d.previewAccent} 100%)`}}function c(f){i.setThemeId(f)}return(f,d)=>{const p=J,v=K,C=H,S=Q;return n(),m(S,{trigger:"click",onCommand:c},{dropdown:e(()=>[t(C,{class:"theme-menu"},{default:e(()=>[(n(!0),g(E,null,N(l(i).availableThemes,h=>(n(),m(v,{key:h.id,command:h.id,class:I({"is-active":h.id===l(i).themeId})},{default:e(()=>[a("span",{class:"option-swatch",style:U(r(h))},null,4),a("span",Ue,[a("span",We,s(h.name),1),a("span",Oe,s(h.description),1)]),h.id===l(i).themeId?(n(),m(p,{key:0,class:"check"},{default:e(()=>[t(l(me))]),_:1})):R("",!0)]),_:2},1032,["command","class"]))),128))]),_:1})]),default:e(()=>[a("button",{class:"theme-trigger",type:"button",title:`当前主题:${l(i).activeTheme.name}`},[a("span",{class:"swatch",style:U(k.value)},null,4),a("span",Fe,s(l(i).activeTheme.name),1),t(p,{class:"caret"},{default:e(()=>[t(l(X))]),_:1})],8,ze)]),_:1})}}}),je=Y(Ge,[["__scopeId","data-v-28ea4aeb"]]),qe={class:"app-shell"},Je={class:"aside-footer"},Xe={key:0},He={class:"header-left"},Ke={class:"header-right"},Qe={class:"user-link"},Ye={class:"user-name"},Ze=A({__name:"AppShell",setup(B){const i=De(),k=j(),r=G(),c=q(),f=b(()=>"localhost:8223".split(":")[1]??"8223"),d=b(()=>"/api"),p=b(()=>(r.user?.displayName??r.user?.username??"?").slice(0,1).toUpperCase()),v=b(()=>r.scope==="Platform"?"管理员 (Platform)":"运营 (RCSMonitor)"),C=b(()=>{switch(r.runMode){case"WebOnly":return"Web-Only";case"WebEnabled":return"Web + Desktop";case"Detached":return"SimpleLite 未连接";default:return String(r.runMode??"Unknown")}}),S=[{path:"/admin/dashboard",label:"总览",icon:Ne},{path:"/admin/map-monitor",label:"地图监控",icon:W},{path:"/admin/design",label:"设计与编排",icon:Ie,children:[{path:"/admin/map-editor",label:"地图编辑"},{path:"/admin/project-properties",label:"项目属性"},{path:"/admin/tracks",label:"场景管理"},{path:"/admin/cars",label:"车辆管理"},{path:"/admin/processes",label:"进程管理"},{path:"/admin/scripts",label:"脚本管理"},{path:"/admin/missions",label:"任务编排"}]},{path:"/admin/playback",label:"调度回放",icon:O},{path:"/admin/config",label:"平台配置中心",icon:Re,children:[{path:"/admin/config/system",label:"系统级配置"},{path:"/admin/config/integrations",label:"外部系统对接"},{path:"/admin/config/routing",label:"路径规划"},{path:"/admin/config/vehicle",label:"车辆维护"},{path:"/admin/config/charge",label:"充电策略"},{path:"/admin/config/task",label:"任务分配"},{path:"/admin/config/traffic",label:"交通管制"},{path:"/admin/config/auth",label:"权限与角色"},{path:"/admin/config/device",label:"设备接入"},{path:"/admin/config/fleet",label:"车队生命周期"},{path:"/admin/config/scenario",label:"场景模板"},{path:"/admin/config/location",label:"库位管理"},{path:"/admin/config/ops",label:"运营维护"},{path:"/admin/config/widget",label:"自定义控件"}]}],h=[{path:"/monitor/dashboard",label:"运营总览",icon:Ae},{path:"/monitor/map",label:"地图监控",icon:W},{path:"/monitor/ops",label:"运维操作",icon:Be},{path:"/monitor/notes",label:"运营备注",icon:O}],P=b(()=>r.scope==="Platform"?S:h),Z=b(()=>{const y=i.path,o=[],w=x=>{x.forEach(M=>{o.push(M),M.children&&w(M.children)})};return w(P.value),o.find(x=>x.path===y)?.path??y}),V=b(()=>i.meta.title??"");function ee(y){y==="logout"?(r.logout(),k.push("/login")):y==="status"&&k.push("/status")}return(y,o)=>{const w=J,T=ge,x=Te,M=he,ae=fe,L=Ee,te=ye,oe=Ce,z=K,ne=H,le=Q,se=ve,ie=$e("router-view"),re=Se,de=Me,F=be;return n(),g("div",qe,[o[8]||(o[8]=_e('',1)),t(F,{class:"app-container"},{default:e(()=>[t(ae,{width:l(c).sidebarCollapsed?"76px":"240px",class:"aside"},{default:e(()=>[a("div",{class:I(["logo",{collapsed:l(c).sidebarCollapsed}])},[l(c).sidebarCollapsed?(n(),g(E,{key:0},[o[1]||(o[1]=a("img",{src:Pe,alt:"FRLD",class:"logo-img-small"},null,-1)),o[2]||(o[2]=a("span",{class:"logo-abbr"},"迷毂",-1))],64)):(n(),g(E,{key:1},[o[3]||(o[3]=a("img",{src:Ve,alt:"FRLD",class:"logo-img-full"},null,-1)),o[4]||(o[4]=a("div",{class:"logo-titles"},[a("span",{class:"logo-title-zh"},"迷 毂 · 智能调度平台"),a("span",{class:"logo-title-en"},[a("b",null,"M"),u("i "),a("b",null,"G"),u("u · "),a("b",null,"I"),u("ntelligent "),a("b",null,"D"),u("ispatch "),a("b",null,"P"),u("latform ")])],-1))],64))],2),t(M,{"default-active":Z.value,collapse:l(c).sidebarCollapsed,"collapse-transition":!1,"background-color":"transparent","text-color":"rgba(255, 255, 255, 0.72)","active-text-color":"#fff",router:"",class:"menu"},{default:e(()=>[(n(!0),g(E,null,N(P.value,_=>(n(),g(E,{key:_.path},[_.children?(n(),m(x,{key:0,index:_.path},{title:e(()=>[t(w,null,{default:e(()=>[(n(),m(D(_.icon)))]),_:2},1024),a("span",null,s(_.label),1)]),default:e(()=>[(n(!0),g(E,null,N(_.children,$=>(n(),m(T,{key:$.path,index:$.path},{default:e(()=>[a("span",null,s($.label),1)]),_:2},1032,["index"]))),128))]),_:2},1032,["index"])):(n(),m(T,{key:1,index:_.path},{title:e(()=>[u(s(_.label),1)]),default:e(()=>[t(w,null,{default:e(()=>[(n(),m(D(_.icon)))]),_:2},1024)]),_:2},1032,["index"]))],64))),128))]),_:1},8,["default-active","collapse"]),a("div",Je,[o[5]||(o[5]=a("span",{class:"aside-footer-badge"},"v1.6",-1)),l(c).sidebarCollapsed?R("",!0):(n(),g("span",Xe,s(l(c).activeTheme.name)+" · "+s(l(c).activeTheme.preview),1))])]),_:1},8,["width"]),t(F,{class:"container-right"},{default:e(()=>[t(se,{class:"header"},{default:e(()=>[a("div",He,[a("button",{class:"icon-btn",onClick:o[0]||(o[0]=_=>l(c).toggleSidebar()),title:"切换侧栏"},[t(w,{size:"18"},{default:e(()=>[l(c).sidebarCollapsed?(n(),m(l(ke),{key:1})):(n(),m(l(we),{key:0}))]),_:1})]),t(te,{separator:"/"},{default:e(()=>[t(L,null,{default:e(()=>[u(s(v.value),1)]),_:1}),V.value?(n(),m(L,{key:0},{default:e(()=>[u(s(V.value),1)]),_:1})):R("",!0)]),_:1})]),a("div",Ke,[t(je),t(Le),a("span",{class:I(["runmode-tag",l(r).runMode])},s(C.value),3),t(le,{trigger:"click",onCommand:ee},{dropdown:e(()=>[t(ne,null,{default:e(()=>[t(z,{command:"status"},{default:e(()=>[...o[6]||(o[6]=[u("服务状态",-1)])]),_:1}),t(z,{command:"logout",divided:""},{default:e(()=>[...o[7]||(o[7]=[u("退出登录",-1)])]),_:1})]),_:1})]),default:e(()=>[a("span",Qe,[t(oe,{size:"small"},{default:e(()=>[u(s(p.value),1)]),_:1}),a("span",Ye,s(l(r).user?.displayName??"未登录"),1),t(w,null,{default:e(()=>[t(l(X))]),_:1})])]),_:1})])]),_:1}),t(re,{class:"main mg-content"},{default:e(()=>[t(ie,null,{default:e(({Component:_})=>[t(xe,{name:"fade-up",mode:"out-in"},{default:e(()=>[(n(),m(D(_)))]),_:2},1024)]),_:1})]),_:1}),t(de,{class:"footer"},{default:e(()=>[a("span",null,s(v.value)+" · webVRender :"+s(f.value)+" · API "+s(d.value),1)]),_:1})]),_:1})]),_:1})])}}}),da=Y(Ze,[["__scopeId","data-v-a0d39774"]]);export{da as default}; diff --git a/MiGu.Server/wwwroot/assets/AuthRoleView-BSUZTQqc.js b/MiGu.Server/wwwroot/assets/AuthRoleView-BSUZTQqc.js new file mode 100644 index 0000000..4afc6d6 --- /dev/null +++ b/MiGu.Server/wwwroot/assets/AuthRoleView-BSUZTQqc.js @@ -0,0 +1 @@ +import{aQ as k,aE as Se,bp as De,b2 as Te,aA as b,aD as t,bD as s,ah as x,X as c,bc as f,bb as oe,t as Be,G as Oe,b4 as u,ab as Ae,a8 as Ge,ax as v,bk as g,r as je,bn as E,b7 as ue,aC as i,bE as ie,ay as w,a9 as qe,aa as Fe,be as R,ac as Me,az as j,a7 as Le,aI as de,aS as He,aG as re,bu as Qe,bd as We,N as Xe,O as Ye,R as Ze,a3 as Je,Z as Ke,a1 as el,w as ll,H as al,v as tl,u as sl,L as nl,at as X,Y as pe,aj as ol}from"./index-C6ULY2Si.js";/* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* 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 */async function ul(){const{data:d}=await k.get("/rbac/catalog");return d}async function il(){const{data:d}=await k.get("/rbac/roles");return d}async function dl(d){if(d.id){const{data:z}=await k.put(`/rbac/roles/${d.id}`,d);return z}const{data:V}=await k.post("/rbac/roles",d);return V}async function rl(d){await k.delete(`/rbac/roles/${d}`)}async function pl(){const{data:d}=await k.get("/rbac/users");return d}async function cl(d){const{data:V}=await k.post("/rbac/users",d);return V}async function ce(d,V){const{data:z}=await k.put(`/rbac/users/${d}`,V);return z}async function ml(d,V){await k.put(`/rbac/users/${d}/password`,{password:V})}async function fl(d){await k.delete(`/rbac/users/${d}`)}const vl={class:"rbac-header"},bl={class:"tab-toolbar"},gl={class:"toolbar-hint"},yl={key:0,class:"muted"},_l={class:"tab-toolbar"},wl={class:"toolbar-hint"},kl={key:1},Vl={key:0,class:"page-picker"},Cl={class:"page-group-head"},El={class:"page-group-title"},Ul={class:"page-group-actions"},$l={key:1,class:"wildcard-hint"},xl=Se({__name:"AuthRoleView",setup(d){const V=De(),z=X(()=>V.user?.id??""),Y=f("users"),S=f(!1),C=f(!1),q=f(null),D=f([]),F=f([]);function me(a){return D.value.find(e=>e.id===a)?.name??a}function G(a){return a==="*"?"通用":a==="Platform"?"管理端":a==="RCSMonitor"?"运营端":a}function fe(a){return a==="*"?"danger":a==="Platform"?"warning":"success"}async function N(){S.value=!0;try{const[a,e,o]=await Promise.all([ul(),il(),pl()]);q.value=a,D.value=e,F.value=o}catch(a){c.error(`加载失败:${$(a)}`)}finally{S.value=!1}}const h=f(!1),n=oe({id:null,username:"",displayName:"",password:"",roleIds:[],enabled:!0});function ve(){Object.assign(n,{id:null,username:"",displayName:"",password:"",roleIds:[],enabled:!0}),h.value=!0}function be(a){Object.assign(n,{id:a.id,username:a.username,displayName:a.displayName,password:"",roleIds:[...a.roleIds],enabled:a.enabled}),h.value=!0}async function ge(){C.value=!0;try{n.id?(await ce(n.id,{displayName:n.displayName,roleIds:n.roleIds,enabled:n.enabled}),c.success("用户已更新")):(await cl({username:n.username,displayName:n.displayName,password:n.password,roleIds:n.roleIds,enabled:n.enabled}),c.success("用户已创建")),h.value=!1,await N()}catch(a){c.error($(a))}finally{C.value=!1}}async function ye(a,e){a._busy=!0;try{await ce(a.id,{enabled:e}),a.enabled=e,c.success(e?"已启用":"已停用")}catch(o){c.error($(o))}finally{a._busy=!1}}async function _e(a){try{await pe.confirm(`确定删除用户「${a.username}」?此操作不可恢复。`,"删除确认",{type:"warning"})}catch{return}try{await fl(a.id),c.success("用户已删除"),await N()}catch(e){c.error($(e))}}const T=f(!1),B=f(null),O=f("");function we(a){B.value=a,O.value="",T.value=!0}async function ke(){if(B.value){if(!O.value){c.warning("请输入新密码");return}C.value=!0;try{await ml(B.value.id,O.value),c.success("密码已重置"),T.value=!1}catch(a){c.error($(a))}finally{C.value=!1}}}const I=f(!1),p=oe({id:null,name:"",description:"",scope:"Platform"}),y=f([]),U=f(!1),M=f([]),L=f([]),Z=X(()=>(q.value?.pages??[]).filter(a=>p.scope==="*"||a.scope===p.scope)),J=X(()=>{const a=new Map;for(const e of Z.value)a.has(e.group)||a.set(e.group,[]),a.get(e.group).push(e);return[...a.entries()].map(([e,o])=>({group:e,pages:o}))});function Ve(){Object.assign(p,{id:null,name:"",description:"",scope:"Platform"}),y.value=[],U.value=!1,M.value=[],L.value=[],I.value=!0}function Ce(a){Object.assign(p,{id:a.id,name:a.name,description:a.description,scope:a.scope}),U.value=a.pages.includes("*"),y.value=U.value?[]:[...a.pages],M.value=[...a.ops],L.value=a.widgetGrants.map(e=>({...e})),I.value=!0}function Ee(){const a=new Set(Z.value.map(e=>e.key));y.value=y.value.filter(e=>a.has(e))}function K(a,e){const o=a.map(m=>m.key);e?y.value=[...new Set([...y.value,...o])]:y.value=y.value.filter(m=>!o.includes(m))}async function Ue(){if(!p.name.trim()){c.warning("请填写角色名称");return}C.value=!0;try{await dl({id:p.id??void 0,name:p.name,description:p.description,scope:p.scope,pages:U.value?["*"]:y.value,ops:M.value,widgetGrants:L.value}),c.success(p.id?"角色已更新":"角色已创建"),I.value=!1,await N()}catch(a){c.error($(a))}finally{C.value=!1}}async function $e(a){try{await pe.confirm(`确定删除角色「${a.name}」?`,"删除确认",{type:"warning"})}catch{return}try{await rl(a.id),c.success("角色已删除"),await N()}catch(e){c.error($(e))}}function $(a){return a instanceof Error?a.message:String(a)}return Te(N),(a,e)=>{const o=je,m=Fe,A=Me,H=Le,ee=qe,le=Ge,xe=Ae,Ne=Be,P=Ze,_=Ye,ae=Ke,te=Je,Q=Xe,W=Oe,se=ll,he=el,Ie=al,Pe=sl,Re=tl,ze=nl,ne=Qe;return u(),b(x,null,[t(Ne,{shadow:"never",class:"rbac-card"},{header:s(()=>[v("div",vl,[e[19]||(e[19]=v("div",{class:"rbac-title-wrap"},[v("span",{class:"rbac-title"},"权限与角色管理"),v("span",{class:"rbac-desc"},"为角色分配可访问页面、操作与控件,并为用户指派角色(标准 RBAC)。")],-1)),t(o,{icon:E(We),loading:S.value,onClick:N},{default:s(()=>[...e[18]||(e[18]=[i("刷新",-1)])]),_:1},8,["icon","loading"])])]),default:s(()=>[t(xe,{modelValue:Y.value,"onUpdate:modelValue":e[0]||(e[0]=l=>Y.value=l),class:"rbac-tabs"},{default:s(()=>[t(le,{label:"用户管理",name:"users"},{default:s(()=>[v("div",bl,[v("span",gl,"共 "+g(F.value.length)+" 个用户",1),t(o,{type:"primary",icon:E(ue),onClick:ve},{default:s(()=>[...e[20]||(e[20]=[i("新增用户",-1)])]),_:1},8,["icon"])]),ie((u(),w(ee,{data:F.value,size:"default",border:"",stripe:""},{default:s(()=>[t(m,{label:"用户名",prop:"username",width:"140"}),t(m,{label:"显示名",prop:"displayName",width:"150"}),t(m,{label:"角色","min-width":"200"},{default:s(({row:l})=>[(u(!0),b(x,null,R(l.roleIds,r=>(u(),w(A,{key:r,size:"small",effect:"plain",class:"mg-tag"},{default:s(()=>[i(g(me(r)),1)]),_:2},1024))),128)),l.roleIds.length?j("",!0):(u(),b("span",yl,"—"))]),_:1}),t(m,{label:"可用域",width:"180"},{default:s(({row:l})=>[(u(!0),b(x,null,R(l.scopes,r=>(u(),w(A,{key:r,size:"small",type:"info",effect:"plain",class:"mg-tag"},{default:s(()=>[i(g(G(r)),1)]),_:2},1024))),128))]),_:1}),t(m,{label:"启用",width:"90",align:"center"},{default:s(({row:l})=>[t(H,{"model-value":l.enabled,loading:l._busy,onChange:r=>ye(l,!!r)},null,8,["model-value","loading","onChange"])]),_:1}),t(m,{label:"操作",width:"220",align:"center"},{default:s(({row:l})=>[t(o,{link:"",type:"primary",icon:E(de),onClick:r=>be(l)},{default:s(()=>[...e[21]||(e[21]=[i("编辑",-1)])]),_:1},8,["icon","onClick"]),t(o,{link:"",type:"warning",icon:E(He),onClick:r=>we(l)},{default:s(()=>[...e[22]||(e[22]=[i("改密",-1)])]),_:1},8,["icon","onClick"]),t(o,{link:"",type:"danger",icon:E(re),disabled:l.id===z.value,onClick:r=>_e(l)},{default:s(()=>[...e[23]||(e[23]=[i("删除",-1)])]),_:1},8,["icon","disabled","onClick"])]),_:1})]),_:1},8,["data"])),[[ne,S.value]])]),_:1}),t(le,{label:"角色与页面权限",name:"roles"},{default:s(()=>[v("div",_l,[v("span",wl,"共 "+g(D.value.length)+" 个角色",1),t(o,{type:"primary",icon:E(ue),onClick:Ve},{default:s(()=>[...e[24]||(e[24]=[i("新增角色",-1)])]),_:1},8,["icon"])]),ie((u(),w(ee,{data:D.value,size:"default",border:"",stripe:""},{default:s(()=>[t(m,{label:"角色名称",width:"160"},{default:s(({row:l})=>[v("span",null,g(l.name),1),l.system?(u(),w(A,{key:0,size:"small",type:"success",effect:"plain",class:"mg-tag"},{default:s(()=>[...e[25]||(e[25]=[i("内置",-1)])]),_:1})):j("",!0)]),_:1}),t(m,{label:"描述",prop:"description","min-width":"180","show-overflow-tooltip":""}),t(m,{label:"归属域",width:"120"},{default:s(({row:l})=>[t(A,{size:"small",type:fe(l.scope),effect:"plain"},{default:s(()=>[i(g(G(l.scope)),1)]),_:2},1032,["type"])]),_:1}),t(m,{label:"可访问页面",width:"130",align:"center"},{default:s(({row:l})=>[l.pages.includes("*")?(u(),w(A,{key:0,size:"small",type:"danger",effect:"plain"},{default:s(()=>[...e[26]||(e[26]=[i("全部页面",-1)])]),_:1})):(u(),b("span",kl,g(l.pages.length)+" 个",1))]),_:1}),t(m,{label:"操作",width:"160",align:"center"},{default:s(({row:l})=>[t(o,{link:"",type:"primary",icon:E(de),onClick:r=>Ce(l)},{default:s(()=>[...e[27]||(e[27]=[i("编辑",-1)])]),_:1},8,["icon","onClick"]),t(o,{link:"",type:"danger",icon:E(re),disabled:l.system,onClick:r=>$e(l)},{default:s(()=>[...e[28]||(e[28]=[i("删除",-1)])]),_:1},8,["icon","disabled","onClick"])]),_:1})]),_:1},8,["data"])),[[ne,S.value]])]),_:1})]),_:1},8,["modelValue"])]),_:1}),t(W,{modelValue:h.value,"onUpdate:modelValue":e[7]||(e[7]=l=>h.value=l),title:n.id?"编辑用户":"新增用户",width:"480px","destroy-on-close":""},{footer:s(()=>[t(o,{onClick:e[6]||(e[6]=l=>h.value=!1)},{default:s(()=>[...e[29]||(e[29]=[i("取消",-1)])]),_:1}),t(o,{type:"primary",loading:C.value,onClick:ge},{default:s(()=>[...e[30]||(e[30]=[i("保存",-1)])]),_:1},8,["loading"])]),default:s(()=>[t(Q,{"label-width":"84px","label-position":"right"},{default:s(()=>[t(_,{label:"用户名",required:""},{default:s(()=>[t(P,{modelValue:n.username,"onUpdate:modelValue":e[1]||(e[1]=l=>n.username=l),disabled:!!n.id,placeholder:"登录用户名"},null,8,["modelValue","disabled"])]),_:1}),t(_,{label:"显示名"},{default:s(()=>[t(P,{modelValue:n.displayName,"onUpdate:modelValue":e[2]||(e[2]=l=>n.displayName=l),placeholder:"界面展示名称(留空则同用户名)"},null,8,["modelValue"])]),_:1}),n.id?j("",!0):(u(),w(_,{key:0,label:"初始密码",required:""},{default:s(()=>[t(P,{modelValue:n.password,"onUpdate:modelValue":e[3]||(e[3]=l=>n.password=l),type:"password","show-password":"",placeholder:"设置初始登录密码"},null,8,["modelValue"])]),_:1})),t(_,{label:"角色"},{default:s(()=>[t(te,{modelValue:n.roleIds,"onUpdate:modelValue":e[4]||(e[4]=l=>n.roleIds=l),multiple:"",filterable:"",placeholder:"选择一个或多个角色",style:{width:"100%"}},{default:s(()=>[(u(!0),b(x,null,R(D.value,l=>(u(),w(ae,{key:l.id,label:`${l.name}(${G(l.scope)})`,value:l.id},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])]),_:1}),t(_,{label:"启用"},{default:s(()=>[t(H,{modelValue:n.enabled,"onUpdate:modelValue":e[5]||(e[5]=l=>n.enabled=l)},null,8,["modelValue"])]),_:1})]),_:1})]),_:1},8,["modelValue","title"]),t(W,{modelValue:T.value,"onUpdate:modelValue":e[10]||(e[10]=l=>T.value=l),title:"重置密码",width:"420px","destroy-on-close":""},{footer:s(()=>[t(o,{onClick:e[9]||(e[9]=l=>T.value=!1)},{default:s(()=>[...e[31]||(e[31]=[i("取消",-1)])]),_:1}),t(o,{type:"primary",loading:C.value,onClick:ke},{default:s(()=>[...e[32]||(e[32]=[i("确定",-1)])]),_:1},8,["loading"])]),default:s(()=>[t(Q,{"label-width":"84px"},{default:s(()=>[t(_,{label:"用户"},{default:s(()=>[v("span",null,g(B.value?.displayName)+"("+g(B.value?.username)+")",1)]),_:1}),t(_,{label:"新密码",required:""},{default:s(()=>[t(P,{modelValue:O.value,"onUpdate:modelValue":e[8]||(e[8]=l=>O.value=l),type:"password","show-password":"",placeholder:"输入新密码"},null,8,["modelValue"])]),_:1})]),_:1})]),_:1},8,["modelValue"]),t(W,{modelValue:I.value,"onUpdate:modelValue":e[17]||(e[17]=l=>I.value=l),title:p.id?"编辑角色":"新增角色",width:"760px",top:"6vh","destroy-on-close":""},{footer:s(()=>[t(o,{onClick:e[16]||(e[16]=l=>I.value=!1)},{default:s(()=>[...e[36]||(e[36]=[i("取消",-1)])]),_:1}),t(o,{type:"primary",loading:C.value,onClick:Ue},{default:s(()=>[...e[37]||(e[37]=[i("保存",-1)])]),_:1},8,["loading"])]),default:s(()=>[t(Q,{"label-width":"92px","label-position":"right"},{default:s(()=>[t(he,{gutter:12},{default:s(()=>[t(se,{span:12},{default:s(()=>[t(_,{label:"角色名称",required:""},{default:s(()=>[t(P,{modelValue:p.name,"onUpdate:modelValue":e[11]||(e[11]=l=>p.name=l),placeholder:"如:场景设计员"},null,8,["modelValue"])]),_:1})]),_:1}),t(se,{span:12},{default:s(()=>[t(_,{label:"归属域",required:""},{default:s(()=>[t(te,{modelValue:p.scope,"onUpdate:modelValue":e[12]||(e[12]=l=>p.scope=l),style:{width:"100%"},onChange:Ee},{default:s(()=>[(u(!0),b(x,null,R(q.value?.scopes??[],l=>(u(),w(ae,{key:l.value,label:l.label,value:l.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])]),_:1})]),_:1})]),_:1}),t(_,{label:"描述"},{default:s(()=>[t(P,{modelValue:p.description,"onUpdate:modelValue":e[13]||(e[13]=l=>p.description=l),placeholder:"角色用途说明"},null,8,["modelValue"])]),_:1}),t(Ie,{"content-position":"left"},{default:s(()=>[...e[33]||(e[33]=[i("可访问页面",-1)])]),_:1}),t(_,{label:"授权方式"},{default:s(()=>[t(H,{modelValue:U.value,"onUpdate:modelValue":e[14]||(e[14]=l=>U.value=l),"active-text":"该域全部页面(含未来新增)","inactive-text":"按页面精确勾选","inline-prompt":"",style:{"--el-switch-on-color":"var(--mg-primary, #6366f1)"}},null,8,["modelValue"])]),_:1}),U.value?(u(),b("div",$l,"已授予「"+g(G(p.scope))+"」下的全部页面(包括未来新增的页面)。",1)):(u(),b("div",Vl,[(u(!0),b(x,null,R(J.value,l=>(u(),b("div",{key:l.group,class:"page-group"},[v("div",Cl,[v("span",El,g(l.group),1),v("span",Ul,[t(o,{link:"",type:"primary",size:"small",onClick:r=>K(l.pages,!0)},{default:s(()=>[...e[34]||(e[34]=[i("全选",-1)])]),_:1},8,["onClick"]),t(o,{link:"",type:"info",size:"small",onClick:r=>K(l.pages,!1)},{default:s(()=>[...e[35]||(e[35]=[i("清空",-1)])]),_:1},8,["onClick"])])]),t(Re,{modelValue:y.value,"onUpdate:modelValue":e[15]||(e[15]=r=>y.value=r),class:"page-checks"},{default:s(()=>[(u(!0),b(x,null,R(l.pages,r=>(u(),w(Pe,{key:r.key,value:r.key,label:r.key},{default:s(()=>[i(g(r.label),1)]),_:2},1032,["value","label"]))),128))]),_:2},1032,["modelValue"])]))),128)),J.value.length?j("",!0):(u(),w(ze,{key:0,description:"该域暂无可分配页面","image-size":60}))]))]),_:1})]),_:1},8,["modelValue","title"])],64)}}}),Xl=ol(xl,[["__scopeId","data-v-2392979d"]]);export{Xl as default}; diff --git a/MiGu.Server/wwwroot/assets/AuthRoleView-C2B4SEfx.js b/MiGu.Server/wwwroot/assets/AuthRoleView-C2B4SEfx.js deleted file mode 100644 index 3f97b20..0000000 --- a/MiGu.Server/wwwroot/assets/AuthRoleView-C2B4SEfx.js +++ /dev/null @@ -1 +0,0 @@ -import{aG as y,aA as n,bB as a,bm as E,D as T,b3 as o,aF as e,a9 as V,aa as k,ab as x,aC as d,bd as u,ad as C,aE as p,bj as s,ai as m,a8 as z,ac as B}from"./index-DrvLDslf.js";/* empty css *//* empty css *//* empty css *//* empty css *//* empty css */import"./el-tooltip-l0sNRNKZ.js";/* empty css *//* empty css *//* empty css */import{C as D}from"./ConfigPageBase-CPF7i-FB.js";/* empty css *//* empty css *//* empty css */import"./PermissionGuard-BxagL6-4.js";import"./reflection-Dr3WM5Rz.js";const O=y({__name:"AuthRoleView",setup(v){function w(c){switch(c){case"hidden":return"danger";case"readonly":return"warning";case"interactive":return"success";default:return"info"}}return(c,A)=>{const l=x,i=C,_=k,b=V,h=z,g=B;return o(),n(D,{section:"auth",title:"权限与角色管理",description:"角色、权限码、控件级 WidgetGrant(auth.user.write / auth.role.write)",defaults:E(T)},{default:a(({payload:f})=>[e(g,{"model-value":"roles"},{default:a(()=>[e(b,{name:"roles",label:"角色"},{default:a(()=>[e(_,{data:f.roles,size:"small",border:""},{default:a(()=>[e(l,{label:"ID",prop:"id",width:"120"}),e(l,{label:"名称",prop:"name",width:"120"}),e(l,{label:"Scope",prop:"scope",width:"120"}),e(l,{label:"权限码"},{default:a(r=>[(o(!0),d(m,null,u(r.row.permissions,t=>(o(),n(i,{key:t,size:"small",effect:"plain",style:{margin:"2px"}},{default:a(()=>[p(s(t),1)]),_:2},1024))),128))]),_:1}),e(l,{label:"WidgetGrant",width:"280"},{default:a(r=>[(o(!0),d(m,null,u(r.row.widgetGrants,t=>(o(),n(i,{key:t.widgetId,size:"small",type:w(t.visibility),effect:"plain",style:{margin:"2px"}},{default:a(()=>[p(s(t.widgetId)+"="+s(t.visibility),1)]),_:2},1032,["type"]))),128))]),_:1})]),_:1},8,["data"])]),_:2},1024),e(b,{name:"users",label:"用户"},{default:a(()=>[e(_,{data:f.users,size:"small",border:""},{default:a(()=>[e(l,{label:"ID",prop:"id",width:"120"}),e(l,{label:"用户名",prop:"username",width:"140"}),e(l,{label:"角色"},{default:a(r=>[(o(!0),d(m,null,u(r.row.roles,t=>(o(),n(i,{key:t,size:"small"},{default:a(()=>[p(s(t),1)]),_:2},1024))),128))]),_:1}),e(l,{label:"启用",width:"80"},{default:a(r=>[e(h,{modelValue:r.row.enabled,"onUpdate:modelValue":t=>r.row.enabled=t},null,8,["modelValue","onUpdate:modelValue"])]),_:1})]),_:1},8,["data"])]),_:2},1024)]),_:2},1024)]),_:1},8,["defaults"])}}});export{O as default}; diff --git a/MiGu.Server/wwwroot/assets/AuthRoleView-CTEbfTF-.css b/MiGu.Server/wwwroot/assets/AuthRoleView-CTEbfTF-.css new file mode 100644 index 0000000..74e8c2a --- /dev/null +++ b/MiGu.Server/wwwroot/assets/AuthRoleView-CTEbfTF-.css @@ -0,0 +1 @@ +.rbac-header[data-v-2392979d]{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.rbac-title-wrap[data-v-2392979d]{display:flex;flex-direction:column;gap:4px}.rbac-title[data-v-2392979d]{font-weight:600;font-size:16px;color:var(--mg-text-light)}.rbac-desc[data-v-2392979d]{font-size:12.5px;color:var(--mg-text-muted)}.tab-toolbar[data-v-2392979d]{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}.toolbar-hint[data-v-2392979d]{font-size:13px;color:var(--mg-text-muted)}.mg-tag[data-v-2392979d]{margin:2px 4px 2px 0}.muted[data-v-2392979d]{color:var(--mg-text-faint)}.page-picker[data-v-2392979d]{display:flex;flex-direction:column;gap:14px;max-height:320px;overflow-y:auto;padding:4px 2px}.page-group-head[data-v-2392979d]{display:flex;align-items:center;justify-content:space-between;margin-bottom:4px}.page-group-title[data-v-2392979d]{font-weight:600;font-size:13px;color:var(--mg-accent, #c4b5fd)}.page-checks[data-v-2392979d]{display:flex;flex-wrap:wrap;gap:4px 18px}.wildcard-hint[data-v-2392979d]{font-size:13px;color:var(--mg-status-warning, #f59e0b);padding:4px 0 8px} diff --git a/MiGu.Server/wwwroot/assets/CarPanelView-C8B0n-h4.js b/MiGu.Server/wwwroot/assets/CarPanelView-Cd4CJJOn.js similarity index 54% rename from MiGu.Server/wwwroot/assets/CarPanelView-C8B0n-h4.js rename to MiGu.Server/wwwroot/assets/CarPanelView-Cd4CJJOn.js index 06bfb34..b54d31e 100644 --- a/MiGu.Server/wwwroot/assets/CarPanelView-C8B0n-h4.js +++ b/MiGu.Server/wwwroot/assets/CarPanelView-Cd4CJJOn.js @@ -1 +1 @@ -import{aG as W,b3 as y,aA as N,O as ae,bB as l,aF as a,a2 as se,x as oe,P as ne,T as re,a8 as ie,A as Y,az as r,bj as w,S as de,s as Z,aE as f,aB as P,av as J,bb as $,al as G,b1 as Q,bC as ue,bt as ce,aC as M,u as pe,ad as me,ai as H,bd as q,y as fe,R as ye,bm as ve,bc as _e,ba as K,Y as V,Z as be,z as ge,M as Ce,ac as ke,a9 as Ee}from"./index-DrvLDslf.js";/* empty css *//* empty css */import{R as $e}from"./ReflectionManagerPanel-BP1OYef-.js";/* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css */import{r as L}from"./reflection-Dr3WM5Rz.js";/* empty css *//* empty css *//* empty css *//* empty css *//* empty css */import"./el-tooltip-l0sNRNKZ.js";/* empty css *//* empty css *//* empty css *//* empty css */import"./useMapEditStream-DPAdbySW.js";import"./useProjectionStream-DMf_8m8X.js";const Ne={class:"cse-color-code"},Ae={class:"cse-color-code"},Ie={class:"cse-color-code"},Se={class:"cse-model-row"},Ve=W({__name:"CarStyleEditorForm",props:{typeFullName:{},modelValue:{},hasOverride:{type:Boolean},saving:{type:Boolean}},emits:["update:modelValue","save","reset"],setup(B,{emit:k}){const T=B,b=k,c=J(()=>T.modelValue);function m(n){b("update:modelValue",{...c.value,...n})}const A=$(null);function g(){A.value?.click()}function j(n){const t=n.target,v=t.files?.[0];v&&(m({modelPath:v.name}),t.value="")}function x(n){const t=n>>>24&255,v=n>>>16&255,p=n>>>8&255,_=n&255,E=z=>z.toString(16).padStart(2,"0");return`${E(v)}${E(p)}${E(_)}${E(t)}`}function h(n){const t=n.replace(/^#/,"");if(t.length===6){const v=parseInt(t.slice(0,2),16),p=parseInt(t.slice(2,4),16),_=parseInt(t.slice(4,6),16);return(255<<24|v<<16|p<<8|_)>>>0}if(t.length===8){const v=parseInt(t.slice(0,2),16),p=parseInt(t.slice(2,4),16),_=parseInt(t.slice(4,6),16);return(parseInt(t.slice(6,8),16)<<24|v<<16|p<<8|_)>>>0}return 0}return(n,t)=>{const v=re,p=ne,_=oe,E=ie,z=se,I=Y,O=Z,F=de,R=ae;return y(),N(R,{"label-width":"120px",size:"default",class:"cse-form",model:c.value},{default:l(()=>[a(z,{gutter:16},{default:l(()=>[a(_,{span:8},{default:l(()=>[a(p,{label:"长度 (m)"},{default:l(()=>[a(v,{"model-value":c.value.bodyLengthM,min:.12,max:4,step:.01,precision:2,"onUpdate:modelValue":t[0]||(t[0]=u=>m({bodyLengthM:Number(u??0)}))},null,8,["model-value"])]),_:1})]),_:1}),a(_,{span:8},{default:l(()=>[a(p,{label:"宽度 (m)"},{default:l(()=>[a(v,{"model-value":c.value.bodyWidthM,min:.08,max:3,step:.01,precision:2,"onUpdate:modelValue":t[1]||(t[1]=u=>m({bodyWidthM:Number(u??0)}))},null,8,["model-value"])]),_:1})]),_:1}),a(_,{span:8},{default:l(()=>[a(p,{label:"显示名称"},{default:l(()=>[a(E,{"model-value":c.value.showLabel,"onUpdate:modelValue":t[2]||(t[2]=u=>m({showLabel:!!u}))},null,8,["model-value"])]),_:1})]),_:1})]),_:1}),a(z,{gutter:16},{default:l(()=>[a(_,{span:8},{default:l(()=>[a(p,{label:"车体颜色"},{default:l(()=>[a(I,{"model-value":x(c.value.bodyColorArgb),"show-alpha":"","onUpdate:modelValue":t[3]||(t[3]=u=>m({bodyColorArgb:u?h(u):0}))},null,8,["model-value"]),r("code",Ne,"#"+w(x(c.value.bodyColorArgb).toUpperCase()),1),t[9]||(t[9]=r("span",{class:"cse-color-hint"},"无报警/上线时生效",-1))]),_:1})]),_:1}),a(_,{span:8},{default:l(()=>[a(p,{label:"描边颜色"},{default:l(()=>[a(I,{"model-value":x(c.value.outlineColorArgb),"show-alpha":"","onUpdate:modelValue":t[4]||(t[4]=u=>m({outlineColorArgb:u?h(u):0}))},null,8,["model-value"]),r("code",Ae,"#"+w(x(c.value.outlineColorArgb).toUpperCase()),1)]),_:1})]),_:1}),a(_,{span:8},{default:l(()=>[a(p,{label:"标签颜色"},{default:l(()=>[a(I,{"model-value":x(c.value.labelColorArgb),"show-alpha":"","onUpdate:modelValue":t[5]||(t[5]=u=>m({labelColorArgb:u?h(u):0}))},null,8,["model-value"]),r("code",Ie,"#"+w(x(c.value.labelColorArgb).toUpperCase()),1)]),_:1})]),_:1})]),_:1}),a(p,{label:"3D 模型路径"},{default:l(()=>[r("div",Se,[a(F,{"model-value":c.value.modelPath,placeholder:"如 ./models/agv-base.glb(路径仅保存,3D 替换矩形渲染由后续阶段接入)",clearable:"","onUpdate:modelValue":t[6]||(t[6]=u=>m({modelPath:u??""}))},{append:l(()=>[a(O,{onClick:g},{default:l(()=>[...t[10]||(t[10]=[f("浏览…",-1)])]),_:1})]),_:1},8,["model-value"]),r("input",{ref_key:"fileInput",ref:A,type:"file",accept:".glb,.gltf,.obj,.fbx",style:{display:"none"},onChange:j},null,544)]),t[11]||(t[11]=r("p",{class:"cse-model-hint"}," 现版本仅记录文件路径作为元信息。3D 渲染替代矩形将在后续阶段实现(CycleGUI Workspace LoadModel)。 如需上传文件到服务器请先用其它方式将模型放到 SimpleLite 可访问的相对路径。 ",-1))]),_:1}),a(p,null,{default:l(()=>[a(O,{type:"primary",loading:B.saving,onClick:t[7]||(t[7]=u=>n.$emit("save"))},{default:l(()=>[...t[12]||(t[12]=[f("保存此车型",-1)])]),_:1},8,["loading"]),B.hasOverride?(y(),N(O,{key:0,type:"warning",plain:"",onClick:t[8]||(t[8]=u=>n.$emit("reset"))},{default:l(()=>[...t[13]||(t[13]=[f("恢复为默认",-1)])]),_:1})):P("",!0)]),_:1})]),_:1},8,["model"])}}}),Te=G(Ve,[["__scopeId","data-v-3cdad944"]]),xe={class:"cse-root"},Ue={class:"cse-card-header"},we={class:"cse-desc"},he={class:"cse-palette"},ze={class:"cse-palette-label"},Pe={class:"cse-palette-key"},Be={class:"cse-palette-pickers"},Oe={class:"cse-color-code"},De={class:"cse-card-header"},Le={class:"cse-row-title"},Me={class:"cse-row-name"},je={class:"cse-row-fqn"},Fe=W({__name:"CarStyleEditor",setup(B,{expose:k}){const T=$(!1),b=$(!1),c=$(!1),m=$(null),A=$([]),g=K({}),j=$(void 0),x=$([]),h=$([]),n=K({}),t=K({}),v=J(()=>{const s=new Set([...Object.keys(n),...Object.keys(t)]);for(const e of s)if(n[e]!==t[e])return!0;return!1});function p(s){return n[s]??0}function _(s,e){n[s]=e?z(e):0}function E(s){const e=s>>>24&255,i=s>>>16&255,C=s>>>8&255,S=s&255,o=U=>U.toString(16).padStart(2,"0");return`${o(i)}${o(C)}${o(S)}${o(e)}`}function z(s){const e=s.replace(/^#/,"");if(e.length===6){const i=parseInt(e.slice(0,2),16),C=parseInt(e.slice(2,4),16),S=parseInt(e.slice(4,6),16);return(255<<24|i<<16|C<<8|S)>>>0}if(e.length===8){const i=parseInt(e.slice(0,2),16),C=parseInt(e.slice(2,4),16),S=parseInt(e.slice(4,6),16);return(parseInt(e.slice(6,8),16)<<24|i<<16|C<<8|S)>>>0}return 0}async function I(){T.value=!0;try{const s=await L.getCarStyleTypes().catch(o=>(console.warn("[CarStyleEditor] getCarStyleTypes failed:",o),null)),e=await L.getAlarmColors().catch(o=>(console.warn("[CarStyleEditor] getAlarmColors failed:",o),null)),i=Array.isArray(s?.types)?s.types:[];A.value=i;for(const o of i)g[o.typeName]={...o.style};for(const o of Object.keys(g))i.find(U=>U.typeName===o)||delete g[o];const C=Array.isArray(e?.entries)?e.entries:[],S=Array.isArray(e?.defaultKeys)?e.defaultKeys:[];x.value=S,h.value=C;for(const o of Object.keys(n))delete n[o];for(const o of Object.keys(t))delete t[o];for(const o of C){if(!o?.key)continue;const U=Number(o.colorArgb)>>>0;n[o.key]=U,t[o.key]=U}(!s||!e)&&V.warning("车型样式 / 报警颜色加载部分失败,请确认 SimpleLite 已启动(端口 8222)。")}catch(s){V.error(`加载车型样式失败:${s.message}`)}finally{T.value=!1}}async function O(){if(v.value){b.value=!0;try{await L.putAlarmColors({...n}),V.success("调色板已写入并生效"),await I()}catch(s){V.error(`保存调色板失败:${s.message}`)}finally{b.value=!1}}}function F(){c.value=!0;const s={避障:4294940672,运行:4283215696,上线:4280391411,下线:4288585374,导航失联:4288423856,报警:4294198070,低电量:4294951175};for(const e of Object.keys(n))delete n[e];for(const e of Object.keys(s))n[e]=s[e];c.value=!1,V.info("已恢复为 7 种默认颜色,未写入。点「保存调色板」生效。")}async function R(s){const e=g[s.typeName];if(e){m.value=s.typeName;try{const i=await L.putCarStyle(s.typeName,e);g[s.typeName]={...i},s.hasOverride=!0,V.success(`已保存 ${s.label} 车型样式`)}catch(i){V.error(`保存 ${s.label} 失败:${i.message}`)}finally{m.value=null}}}async function u(s){try{await be.confirm(`把 ${s.label} (${s.typeName}) 的样式恢复为全局默认?删除条目后将与未覆盖车型一致。`,"恢复默认",{confirmButtonText:"恢复",cancelButtonText:"取消",type:"warning"})}catch{return}try{await L.deleteCarStyle(s.typeName),V.success(`已恢复 ${s.label} 为默认样式`),await I()}catch(e){V.error(`恢复默认失败:${e.message}`)}}return Q(I),k({refresh:I}),(s,e)=>{const i=me,C=Z,S=Y,o=pe,U=ye,X=ge,ee=fe,te=Ce,le=ce;return ue((y(),M("div",xe,[a(o,{shadow:"never",class:"cse-card"},{header:l(()=>[r("div",Ue,[e[4]||(e[4]=r("span",{class:"cse-card-title"},"报警 / 状态调色板",-1)),a(i,{size:"small",type:"info",effect:"plain"},{default:l(()=>[...e[1]||(e[1]=[f("7 种默认状态",-1)])]),_:1}),e[5]||(e[5]=r("span",{class:"cse-card-spacer"},null,-1)),a(C,{size:"small",loading:c.value,onClick:F},{default:l(()=>[...e[2]||(e[2]=[f("恢复默认",-1)])]),_:1},8,["loading"]),a(C,{size:"small",type:"primary",disabled:!v.value,loading:b.value,onClick:O},{default:l(()=>[...e[3]||(e[3]=[f(" 保存调色板(写入 simple.json) ",-1)])]),_:1},8,["disabled","loading"])])]),default:l(()=>[r("p",we,[e[9]||(e[9]=f(" 车体颜色的判定优先级: ",-1)),a(i,{size:"small",effect:"plain"},{default:l(()=>[...e[6]||(e[6]=[f("1. AlarmInfo 非空 → 「报警」",-1)])]),_:1}),a(i,{size:"small",effect:"plain"},{default:l(()=>[...e[7]||(e[7]=[f("2. lstatus 包含关键字 → 对应键",-1)])]),_:1}),a(i,{size:"small",effect:"plain"},{default:l(()=>[...e[8]||(e[8]=[f("3. 兜底 → 上下线默认色",-1)])]),_:1}),e[10]||(e[10]=f(" 修改下方颜色 + 「保存调色板」即时生效。 ",-1))]),r("div",he,[(y(!0),M(H,null,q(h.value,d=>(y(),M("div",{key:d.key,class:"cse-palette-item"},[r("div",ze,[r("span",Pe,w(d.key),1),d.isDefault?P("",!0):(y(),N(i,{key:0,size:"small",type:"warning",effect:"plain"},{default:l(()=>[...e[11]||(e[11]=[f("自定义",-1)])]),_:1}))]),r("div",Be,[a(S,{"model-value":E(p(d.key)),"show-alpha":"",size:"small","onUpdate:modelValue":D=>_(d.key,D)},null,8,["model-value","onUpdate:modelValue"]),r("code",Oe,"#"+w(E(p(d.key)).toUpperCase()),1)])]))),128))])]),_:1}),a(o,{shadow:"never",class:"cse-card cse-types-card"},{header:l(()=>[r("div",De,[e[13]||(e[13]=r("span",{class:"cse-card-title"},"车型样式",-1)),a(i,{size:"small",type:"info",effect:"plain"},{default:l(()=>[f(w(A.value.length)+" 个已加载车型",1)]),_:1}),e[14]||(e[14]=r("span",{class:"cse-card-spacer"},null,-1)),a(C,{size:"small",onClick:I},{default:l(()=>[a(U,null,{default:l(()=>[a(ve(_e))]),_:1}),e[12]||(e[12]=r("span",{class:"cse-btn-text"},"刷新",-1))]),_:1})])]),default:l(()=>[e[17]||(e[17]=r("p",{class:"cse-desc"}," 点击车型行展开编辑:尺寸(米)、车体 / 描边 / 标签颜色、是否显示名称、3D 模型文件路径。 每辆车按 .NET 类型 (`assemblyName::shortName`) 索引样式。修改后点行内「保存」即时写入并生效。 ",-1)),a(ee,{modelValue:j.value,"onUpdate:modelValue":e[0]||(e[0]=d=>j.value=d),accordion:""},{default:l(()=>[(y(!0),M(H,null,q(A.value,d=>(y(),N(X,{key:d.typeName,name:d.typeName},{title:l(()=>[r("div",Le,[r("span",Me,w(d.label),1),r("code",je,w(d.typeName),1),d.hasOverride?(y(),N(i,{key:0,size:"small",type:"success",effect:"plain"},{default:l(()=>[...e[15]||(e[15]=[f("已覆盖",-1)])]),_:1})):(y(),N(i,{key:1,size:"small",type:"info",effect:"plain"},{default:l(()=>[...e[16]||(e[16]=[f("默认",-1)])]),_:1}))])]),default:l(()=>[g[d.typeName]?(y(),N(Te,{key:0,"type-full-name":d.typeName,"model-value":g[d.typeName],"has-override":d.hasOverride,saving:m.value===d.typeName,"onUpdate:modelValue":D=>g[d.typeName]=D,onSave:D=>R(d),onReset:D=>u(d)},null,8,["type-full-name","model-value","has-override","saving","onUpdate:modelValue","onSave","onReset"])):P("",!0)]),_:2},1032,["name"]))),128))]),_:1},8,["modelValue"]),!T.value&&A.value.length===0?(y(),N(te,{key:0,description:"未发现任何 Car 子类(请确认 SimpleLite 已加载相应插件 dll)"})):P("",!0)]),_:1})])),[[le,T.value]])}}}),Re=G(Fe,[["__scopeId","data-v-3af8f925"]]),Ke={class:"car-page"},We=W({__name:"CarPanelView",setup(B){const k=$("list");function T(b){k.value=b,sessionStorage.setItem("admin.cars.tab",k.value)}return Q(()=>{const b=sessionStorage.getItem("admin.cars.tab");(b==="list"||b==="style")&&(k.value=b)}),(b,c)=>{const m=Ee,A=ke;return y(),M("div",Ke,[a(A,{modelValue:k.value,"onUpdate:modelValue":c[0]||(c[0]=g=>k.value=g),type:"border-card",class:"car-tabs admin-tabs",onTabChange:T},{default:l(()=>[a(m,{label:"车辆列表",name:"list"},{default:l(()=>[k.value==="list"?(y(),N($e,{key:0,kind:"car","kind-label":"车辆",title:"车辆管理(Car / AbstractCar,含模拟车、插件车型 reflectionApi 实例化)","empty-text":"当前没有车辆;点击右上角「新建车辆」从已加载的 CarType 中选一个实例化。"})):P("",!0)]),_:1}),a(m,{label:"车型样式 / 报警颜色",name:"style"},{default:l(()=>[k.value==="style"?(y(),N(Re,{key:0})):P("",!0)]),_:1})]),_:1},8,["modelValue"])])}}}),kt=G(We,[["__scopeId","data-v-c3733824"]]);export{kt as default}; +import{aE as W,b4 as y,ay as $,N as ae,bD as l,aD as a,a1 as se,w as oe,O as ne,S as re,a7 as ie,z as Q,ax as r,bk as w,R as de,r as X,aC as f,az as P,at as Y,bc as N,aj as H,b2 as J,bE as ue,bu as ce,aA as j,t as pe,ac as me,ah as q,be as G,x as fe,Q as ye,bn as ve,bd as _e,bb as K,X as V,Y as be,y as ge,L as ke,ab as Ce,a8 as Ee}from"./index-C6ULY2Si.js";/* empty css *//* empty css */import{R as Ne}from"./ReflectionManagerPanel-BCWRRPd3.js";/* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css */import{r as B}from"./reflection-CKXyOCM_.js";/* empty css *//* empty css *//* empty css *//* empty css *//* empty css */import"./el-tooltip-l0sNRNKZ.js";/* empty css *//* empty css *//* empty css *//* empty css */import"./useMapEditStream-CS7BmW9Q.js";import"./useProjectionStream-BoSdoSNC.js";const $e={class:"cse-color-code"},Ie={class:"cse-color-code"},Se={class:"cse-color-code"},Ae={class:"cse-model-row"},Ve=W({__name:"CarStyleEditorForm",props:{typeFullName:{},modelValue:{},hasOverride:{type:Boolean},saving:{type:Boolean}},emits:["update:modelValue","save","reset"],setup(D,{emit:C}){const x=D,b=C,c=Y(()=>x.modelValue);function m(n){b("update:modelValue",{...c.value,...n})}const I=N(null);function g(){I.value?.click()}function M(n){const t=n.target,v=t.files?.[0];v&&(m({modelPath:v.name}),t.value="")}function T(n){const t=n>>>24&255,v=n>>>16&255,p=n>>>8&255,_=n&255,E=z=>z.toString(16).padStart(2,"0");return`${E(v)}${E(p)}${E(_)}${E(t)}`}function h(n){const t=n.replace(/^#/,"");if(t.length===6){const v=parseInt(t.slice(0,2),16),p=parseInt(t.slice(2,4),16),_=parseInt(t.slice(4,6),16);return(255<<24|v<<16|p<<8|_)>>>0}if(t.length===8){const v=parseInt(t.slice(0,2),16),p=parseInt(t.slice(2,4),16),_=parseInt(t.slice(4,6),16);return(parseInt(t.slice(6,8),16)<<24|v<<16|p<<8|_)>>>0}return 0}return(n,t)=>{const v=re,p=ne,_=oe,E=ie,z=se,S=Q,O=X,R=de,F=ae;return y(),$(F,{"label-width":"120px",size:"default",class:"cse-form",model:c.value},{default:l(()=>[a(z,{gutter:16},{default:l(()=>[a(_,{span:8},{default:l(()=>[a(p,{label:"长度 (m)"},{default:l(()=>[a(v,{"model-value":c.value.bodyLengthM,min:.12,max:4,step:.01,precision:2,"onUpdate:modelValue":t[0]||(t[0]=u=>m({bodyLengthM:Number(u??0)}))},null,8,["model-value"])]),_:1})]),_:1}),a(_,{span:8},{default:l(()=>[a(p,{label:"宽度 (m)"},{default:l(()=>[a(v,{"model-value":c.value.bodyWidthM,min:.08,max:3,step:.01,precision:2,"onUpdate:modelValue":t[1]||(t[1]=u=>m({bodyWidthM:Number(u??0)}))},null,8,["model-value"])]),_:1})]),_:1}),a(_,{span:8},{default:l(()=>[a(p,{label:"显示名称"},{default:l(()=>[a(E,{"model-value":c.value.showLabel,"onUpdate:modelValue":t[2]||(t[2]=u=>m({showLabel:!!u}))},null,8,["model-value"])]),_:1})]),_:1})]),_:1}),a(z,{gutter:16},{default:l(()=>[a(_,{span:8},{default:l(()=>[a(p,{label:"车体颜色"},{default:l(()=>[a(S,{"model-value":T(c.value.bodyColorArgb),"show-alpha":"","onUpdate:modelValue":t[3]||(t[3]=u=>m({bodyColorArgb:u?h(u):0}))},null,8,["model-value"]),r("code",$e,"#"+w(T(c.value.bodyColorArgb).toUpperCase()),1),t[9]||(t[9]=r("span",{class:"cse-color-hint"},"无报警/上线时生效",-1))]),_:1})]),_:1}),a(_,{span:8},{default:l(()=>[a(p,{label:"描边颜色"},{default:l(()=>[a(S,{"model-value":T(c.value.outlineColorArgb),"show-alpha":"","onUpdate:modelValue":t[4]||(t[4]=u=>m({outlineColorArgb:u?h(u):0}))},null,8,["model-value"]),r("code",Ie,"#"+w(T(c.value.outlineColorArgb).toUpperCase()),1)]),_:1})]),_:1}),a(_,{span:8},{default:l(()=>[a(p,{label:"标签颜色"},{default:l(()=>[a(S,{"model-value":T(c.value.labelColorArgb),"show-alpha":"","onUpdate:modelValue":t[5]||(t[5]=u=>m({labelColorArgb:u?h(u):0}))},null,8,["model-value"]),r("code",Se,"#"+w(T(c.value.labelColorArgb).toUpperCase()),1)]),_:1})]),_:1})]),_:1}),a(p,{label:"3D 模型路径"},{default:l(()=>[r("div",Ae,[a(R,{"model-value":c.value.modelPath,placeholder:"如 ./models/agv-base.glb(路径仅保存,3D 替换矩形渲染由后续阶段接入)",clearable:"","onUpdate:modelValue":t[6]||(t[6]=u=>m({modelPath:u??""}))},{append:l(()=>[a(O,{onClick:g},{default:l(()=>[...t[10]||(t[10]=[f("浏览…",-1)])]),_:1})]),_:1},8,["model-value"]),r("input",{ref_key:"fileInput",ref:I,type:"file",accept:".glb,.gltf,.obj,.fbx",style:{display:"none"},onChange:M},null,544)]),t[11]||(t[11]=r("p",{class:"cse-model-hint"}," 现版本仅记录文件路径作为元信息。3D 渲染替代矩形将在后续阶段实现(CycleGUI Workspace LoadModel)。 如需上传文件到服务器请先用其它方式将模型放到 SimpleLite 可访问的相对路径。 ",-1))]),_:1}),a(p,null,{default:l(()=>[a(O,{type:"primary",loading:D.saving,onClick:t[7]||(t[7]=u=>n.$emit("save"))},{default:l(()=>[...t[12]||(t[12]=[f("保存此车型",-1)])]),_:1},8,["loading"]),D.hasOverride?(y(),$(O,{key:0,type:"warning",plain:"",onClick:t[8]||(t[8]=u=>n.$emit("reset"))},{default:l(()=>[...t[13]||(t[13]=[f("恢复为默认",-1)])]),_:1})):P("",!0)]),_:1})]),_:1},8,["model"])}}}),xe=H(Ve,[["__scopeId","data-v-3cdad944"]]),Te={class:"cse-root"},Ue={class:"cse-card-header"},we={class:"cse-desc"},he={class:"cse-palette"},ze={class:"cse-palette-label"},Pe={class:"cse-palette-key"},De={class:"cse-palette-pickers"},Oe={class:"cse-color-code"},Le={class:"cse-card-header"},Be={class:"cse-row-title"},je={class:"cse-row-name"},Me={class:"cse-row-fqn"},Re=W({__name:"CarStyleEditor",setup(D,{expose:C}){const x=N(!1),b=N(!1),c=N(!1),m=N(null),I=N([]),g=K({}),M=N(void 0),T=N([]),h=N([]),n=K({}),t=K({}),v=Y(()=>{const s=new Set([...Object.keys(n),...Object.keys(t)]);for(const e of s)if(n[e]!==t[e])return!0;return!1});function p(s){return n[s]??0}function _(s,e){n[s]=e?z(e):0}function E(s){const e=s>>>24&255,i=s>>>16&255,k=s>>>8&255,A=s&255,o=U=>U.toString(16).padStart(2,"0");return`${o(i)}${o(k)}${o(A)}${o(e)}`}function z(s){const e=s.replace(/^#/,"");if(e.length===6){const i=parseInt(e.slice(0,2),16),k=parseInt(e.slice(2,4),16),A=parseInt(e.slice(4,6),16);return(255<<24|i<<16|k<<8|A)>>>0}if(e.length===8){const i=parseInt(e.slice(0,2),16),k=parseInt(e.slice(2,4),16),A=parseInt(e.slice(4,6),16);return(parseInt(e.slice(6,8),16)<<24|i<<16|k<<8|A)>>>0}return 0}async function S(){x.value=!0;try{const s=await B.getCarStyleTypes().catch(o=>(console.warn("[CarStyleEditor] getCarStyleTypes failed:",o),null)),e=await B.getAlarmColors().catch(o=>(console.warn("[CarStyleEditor] getAlarmColors failed:",o),null)),i=Array.isArray(s?.types)?s.types:[];I.value=i;for(const o of i)g[o.typeName]={...o.style};for(const o of Object.keys(g))i.find(U=>U.typeName===o)||delete g[o];const k=Array.isArray(e?.entries)?e.entries:[],A=Array.isArray(e?.defaultKeys)?e.defaultKeys:[];T.value=A,h.value=k;for(const o of Object.keys(n))delete n[o];for(const o of Object.keys(t))delete t[o];for(const o of k){if(!o?.key)continue;const U=Number(o.colorArgb)>>>0;n[o.key]=U,t[o.key]=U}(!s||!e)&&V.warning("车型样式 / 报警颜色加载部分失败,请确认 SimpleLite 已启动(端口 8222)。")}catch(s){V.error(`加载车型样式失败:${s.message}`)}finally{x.value=!1}}async function O(){if(v.value){b.value=!0;try{await B.putAlarmColors({...n}),V.success("调色板已写入并生效"),await S()}catch(s){V.error(`保存调色板失败:${s.message}`)}finally{b.value=!1}}}function R(){c.value=!0;const s={避障:4294940672,运行:4283215696,上线:4280391411,下线:4288585374,导航失联:4288423856,报警:4294198070,低电量:4294951175};for(const e of Object.keys(n))delete n[e];for(const e of Object.keys(s))n[e]=s[e];c.value=!1,V.info("已恢复为 7 种默认颜色,未写入。点「保存调色板」生效。")}async function F(s){const e=g[s.typeName];if(e){m.value=s.typeName;try{const i=await B.putCarStyle(s.typeName,e);g[s.typeName]={...i},s.hasOverride=!0,V.success(`已保存 ${s.label} 车型样式`)}catch(i){V.error(`保存 ${s.label} 失败:${i.message}`)}finally{m.value=null}}}async function u(s){try{await be.confirm(`把 ${s.label} (${s.typeName}) 的样式恢复为全局默认?删除条目后将与未覆盖车型一致。`,"恢复默认",{confirmButtonText:"恢复",cancelButtonText:"取消",type:"warning"})}catch{return}try{await B.deleteCarStyle(s.typeName),V.success(`已恢复 ${s.label} 为默认样式`),await S()}catch(e){V.error(`恢复默认失败:${e.message}`)}}return J(S),C({refresh:S}),(s,e)=>{const i=me,k=X,A=Q,o=pe,U=ye,Z=ge,ee=fe,te=ke,le=ce;return ue((y(),j("div",Te,[a(o,{shadow:"never",class:"cse-card"},{header:l(()=>[r("div",Ue,[e[4]||(e[4]=r("span",{class:"cse-card-title"},"报警 / 状态调色板",-1)),a(i,{size:"small",type:"info",effect:"plain"},{default:l(()=>[...e[1]||(e[1]=[f("7 种默认状态",-1)])]),_:1}),e[5]||(e[5]=r("span",{class:"cse-card-spacer"},null,-1)),a(k,{size:"small",loading:c.value,onClick:R},{default:l(()=>[...e[2]||(e[2]=[f("恢复默认",-1)])]),_:1},8,["loading"]),a(k,{size:"small",type:"primary",disabled:!v.value,loading:b.value,onClick:O},{default:l(()=>[...e[3]||(e[3]=[f(" 保存调色板(写入 simple.json) ",-1)])]),_:1},8,["disabled","loading"])])]),default:l(()=>[r("p",we,[e[9]||(e[9]=f(" 车体颜色的判定优先级: ",-1)),a(i,{size:"small",effect:"plain"},{default:l(()=>[...e[6]||(e[6]=[f("1. AlarmInfo 非空 → 「报警」",-1)])]),_:1}),a(i,{size:"small",effect:"plain"},{default:l(()=>[...e[7]||(e[7]=[f("2. lstatus 包含关键字 → 对应键",-1)])]),_:1}),a(i,{size:"small",effect:"plain"},{default:l(()=>[...e[8]||(e[8]=[f("3. 兜底 → 上下线默认色",-1)])]),_:1}),e[10]||(e[10]=f(" 修改下方颜色 + 「保存调色板」即时生效。 ",-1))]),r("div",he,[(y(!0),j(q,null,G(h.value,d=>(y(),j("div",{key:d.key,class:"cse-palette-item"},[r("div",ze,[r("span",Pe,w(d.key),1),d.isDefault?P("",!0):(y(),$(i,{key:0,size:"small",type:"warning",effect:"plain"},{default:l(()=>[...e[11]||(e[11]=[f("自定义",-1)])]),_:1}))]),r("div",De,[a(A,{"model-value":E(p(d.key)),"show-alpha":"",size:"small","onUpdate:modelValue":L=>_(d.key,L)},null,8,["model-value","onUpdate:modelValue"]),r("code",Oe,"#"+w(E(p(d.key)).toUpperCase()),1)])]))),128))])]),_:1}),a(o,{shadow:"never",class:"cse-card cse-types-card"},{header:l(()=>[r("div",Le,[e[13]||(e[13]=r("span",{class:"cse-card-title"},"车型样式",-1)),a(i,{size:"small",type:"info",effect:"plain"},{default:l(()=>[f(w(I.value.length)+" 个已加载车型",1)]),_:1}),e[14]||(e[14]=r("span",{class:"cse-card-spacer"},null,-1)),a(k,{size:"small",onClick:S},{default:l(()=>[a(U,null,{default:l(()=>[a(ve(_e))]),_:1}),e[12]||(e[12]=r("span",{class:"cse-btn-text"},"刷新",-1))]),_:1})])]),default:l(()=>[e[17]||(e[17]=r("p",{class:"cse-desc"}," 点击车型行展开编辑:尺寸(米)、车体 / 描边 / 标签颜色、是否显示名称、3D 模型文件路径。 每辆车按 .NET 类型 (`assemblyName::shortName`) 索引样式。修改后点行内「保存」即时写入并生效。 ",-1)),a(ee,{modelValue:M.value,"onUpdate:modelValue":e[0]||(e[0]=d=>M.value=d),accordion:""},{default:l(()=>[(y(!0),j(q,null,G(I.value,d=>(y(),$(Z,{key:d.typeName,name:d.typeName},{title:l(()=>[r("div",Be,[r("span",je,w(d.label),1),r("code",Me,w(d.typeName),1),d.hasOverride?(y(),$(i,{key:0,size:"small",type:"success",effect:"plain"},{default:l(()=>[...e[15]||(e[15]=[f("已覆盖",-1)])]),_:1})):(y(),$(i,{key:1,size:"small",type:"info",effect:"plain"},{default:l(()=>[...e[16]||(e[16]=[f("默认",-1)])]),_:1}))])]),default:l(()=>[g[d.typeName]?(y(),$(xe,{key:0,"type-full-name":d.typeName,"model-value":g[d.typeName],"has-override":d.hasOverride,saving:m.value===d.typeName,"onUpdate:modelValue":L=>g[d.typeName]=L,onSave:L=>F(d),onReset:L=>u(d)},null,8,["type-full-name","model-value","has-override","saving","onUpdate:modelValue","onSave","onReset"])):P("",!0)]),_:2},1032,["name"]))),128))]),_:1},8,["modelValue"]),!x.value&&I.value.length===0?(y(),$(te,{key:0,description:"未发现任何 Car 子类(请确认 SimpleLite 已加载相应插件 dll)"})):P("",!0)]),_:1})])),[[le,x.value]])}}}),Fe=H(Re,[["__scopeId","data-v-3af8f925"]]),Ke={class:"car-page"},We=W({__name:"CarPanelView",setup(D){const C=N("list");function x(b){C.value=b,sessionStorage.setItem("admin.cars.tab",C.value)}return J(()=>{const b=sessionStorage.getItem("admin.cars.tab");(b==="list"||b==="style")&&(C.value=b)}),(b,c)=>{const m=Ee,I=Ce;return y(),j("div",Ke,[a(I,{modelValue:C.value,"onUpdate:modelValue":c[0]||(c[0]=g=>C.value=g),type:"border-card",class:"car-tabs admin-tabs",onTabChange:x},{default:l(()=>[a(m,{label:"车辆列表",name:"list"},{default:l(()=>[C.value==="list"?(y(),$(Ne,{key:0,kind:"car","kind-label":"车辆",title:"车辆管理(Car / AbstractCar,含模拟车、插件车型 reflectionApi 实例化)","empty-text":"当前没有车辆;点击右上角「新建车辆」从已加载的 CarType 中选一个实例化。"})):P("",!0)]),_:1}),a(m,{label:"车型样式 / 报警颜色",name:"style"},{default:l(()=>[C.value==="style"?(y(),$(Fe,{key:0})):P("",!0)]),_:1})]),_:1},8,["modelValue"])])}}}),Ct=H(We,[["__scopeId","data-v-c3733824"]]);export{Ct as default}; diff --git a/MiGu.Server/wwwroot/assets/ChargePolicyView-BxJAPKKv.js b/MiGu.Server/wwwroot/assets/ChargePolicyView-BxJAPKKv.js deleted file mode 100644 index 127822e..0000000 --- a/MiGu.Server/wwwroot/assets/ChargePolicyView-BxJAPKKv.js +++ /dev/null @@ -1 +0,0 @@ -import{aG as s,aA as c,bB as t,bm as d,a as u,b3 as f,aF as e,P as b,a8 as h,T as C,aa as g,ab as w,O as E}from"./index-DrvLDslf.js";/* empty css *//* empty css *//* empty css *//* empty css */import"./el-tooltip-l0sNRNKZ.js";/* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css */import{C as T}from"./ConfigPageBase-CPF7i-FB.js";/* empty css *//* empty css *//* empty css */import"./PermissionGuard-BxagL6-4.js";import"./reflection-Dr3WM5Rz.js";const q=s({__name:"ChargePolicyView",setup(V){return(x,A)=>{const i=h,l=b,n=C,a=w,p=g,_=E;return f(),c(T,{section:"charge",title:"充电逻辑",description:"充电优先级、空闲充电、任务中断充电(ChargePolicy)",defaults:d(u)},{default:t(({payload:o,update:r})=>[e(_,{"label-width":"180px",model:o},{default:t(()=>[e(l,{label:"允许任务中断充电"},{default:t(()=>[e(i,{"model-value":o.allowMidTaskCharge,"onUpdate:modelValue":m=>r({...o,allowMidTaskCharge:!!m})},null,8,["model-value","onUpdate:modelValue"])]),_:2},1024),e(l,{label:"空闲多少秒后充电"},{default:t(()=>[e(n,{"model-value":o.idleChargeAfterSec,min:0,max:86400,"onUpdate:modelValue":m=>r({...o,idleChargeAfterSec:m??0})},null,8,["model-value","onUpdate:modelValue"])]),_:2},1024),e(l,{label:"充电优先级规则"},{default:t(()=>[e(p,{data:o.priority,size:"small"},{default:t(()=>[e(a,{label:"ID",prop:"id",width:"100"}),e(a,{label:"条件",prop:"condition"}),e(a,{label:"权重",prop:"weight",width:"100"})]),_:1},8,["data"])]),_:2},1024)]),_:2},1032,["model"])]),_:1},8,["defaults"])}}});export{q as default}; diff --git a/MiGu.Server/wwwroot/assets/ChargePolicyView-DdHAu5KF.js b/MiGu.Server/wwwroot/assets/ChargePolicyView-DdHAu5KF.js new file mode 100644 index 0000000..6965629 --- /dev/null +++ b/MiGu.Server/wwwroot/assets/ChargePolicyView-DdHAu5KF.js @@ -0,0 +1 @@ +import{aE as s,ay as c,bD as t,bn as d,b4 as u,aD as e,N as f,O as b,a7 as h,S as C,a9 as g,aa as w,D as E}from"./index-C6ULY2Si.js";/* empty css *//* empty css *//* empty css *//* empty css */import"./el-tooltip-l0sNRNKZ.js";/* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css */import{C as V}from"./ConfigPageBase-DmCcZeia.js";/* empty css *//* empty css *//* empty css */import"./PermissionGuard-DIZkcwyW.js";/* empty css */import"./reflection-CKXyOCM_.js";const J=s({__name:"ChargePolicyView",setup(x){return(D,T)=>{const i=h,l=b,n=C,a=w,p=g,_=f;return u(),c(V,{section:"charge",title:"充电逻辑",description:"充电优先级、空闲充电、任务中断充电(ChargePolicy)",defaults:d(E)},{default:t(({payload:o,update:r})=>[e(_,{"label-width":"180px",model:o},{default:t(()=>[e(l,{label:"允许任务中断充电"},{default:t(()=>[e(i,{"model-value":o.allowMidTaskCharge,"onUpdate:modelValue":m=>r({...o,allowMidTaskCharge:!!m})},null,8,["model-value","onUpdate:modelValue"])]),_:2},1024),e(l,{label:"空闲多少秒后充电"},{default:t(()=>[e(n,{"model-value":o.idleChargeAfterSec,min:0,max:86400,"onUpdate:modelValue":m=>r({...o,idleChargeAfterSec:m??0})},null,8,["model-value","onUpdate:modelValue"])]),_:2},1024),e(l,{label:"充电优先级规则"},{default:t(()=>[e(p,{data:o.priority,size:"small"},{default:t(()=>[e(a,{label:"ID",prop:"id",width:"100"}),e(a,{label:"条件",prop:"condition"}),e(a,{label:"权重",prop:"weight",width:"100"})]),_:1},8,["data"])]),_:2},1024)]),_:2},1032,["model"])]),_:1},8,["defaults"])}}});export{J as default}; diff --git a/MiGu.Server/wwwroot/assets/ConfigPageBase-C8mupMSy.css b/MiGu.Server/wwwroot/assets/ConfigPageBase-C8mupMSy.css deleted file mode 100644 index 95c4133..0000000 --- a/MiGu.Server/wwwroot/assets/ConfigPageBase-C8mupMSy.css +++ /dev/null @@ -1 +0,0 @@ -.cpb-header[data-v-83b90685]{display:flex;align-items:center;gap:8px}.cpb-title[data-v-83b90685]{font-weight:600;font-size:15px;color:#fff}.cpb-header .spacer[data-v-83b90685]{flex:1}.cpb-desc[data-v-83b90685]{color:#e8d7f5b3;font-size:12.5px;margin:0 0 14px;line-height:1.6}.cpb-body[data-v-83b90685]{margin-top:4px}.cpb-json[data-v-83b90685]{margin:0;padding:14px;font-size:12px;line-height:1.55;font-family:ui-monospace,Menlo,Consolas,monospace;background:#0f04208c;color:#d6c5ee;max-height:520px;overflow:auto} diff --git a/MiGu.Server/wwwroot/assets/ConfigPageBase-DOgE48Ff.css b/MiGu.Server/wwwroot/assets/ConfigPageBase-DOgE48Ff.css new file mode 100644 index 0000000..f529b76 --- /dev/null +++ b/MiGu.Server/wwwroot/assets/ConfigPageBase-DOgE48Ff.css @@ -0,0 +1 @@ +.cpb-header[data-v-1d51a575]{display:flex;align-items:center;gap:8px}.cpb-title[data-v-1d51a575]{font-weight:600;font-size:15px;color:var(--mg-text-light)}.cpb-header .spacer[data-v-1d51a575]{flex:1}.cpb-desc[data-v-1d51a575]{color:var(--mg-text-muted);font-size:12.5px;margin:0 0 14px;line-height:1.6}.cpb-body[data-v-1d51a575]{margin-top:4px}.cpb-json[data-v-1d51a575]{margin:0;padding:14px;font-size:12px;line-height:1.55;font-family:ui-monospace,Menlo,Consolas,monospace;background:var(--mg-veil-2);color:var(--mg-text-light);max-height:520px;overflow:auto} diff --git a/MiGu.Server/wwwroot/assets/ConfigPageBase-CPF7i-FB.js b/MiGu.Server/wwwroot/assets/ConfigPageBase-DmCcZeia.js similarity index 69% rename from MiGu.Server/wwwroot/assets/ConfigPageBase-CPF7i-FB.js rename to MiGu.Server/wwwroot/assets/ConfigPageBase-DmCcZeia.js index 7a22f2f..d373a14 100644 --- a/MiGu.Server/wwwroot/assets/ConfigPageBase-CPF7i-FB.js +++ b/MiGu.Server/wwwroot/assets/ConfigPageBase-DmCcZeia.js @@ -1 +1 @@ -import{aQ as T,f as J,aH as K,aG as L,bb as g,bA as R,b1 as V,aA as O,bB as i,b3 as k,aF as c,aC as j,bj as u,aB as w,az as p,a2 as D,x as G,u as I,be as H,aE as f,ad as Q,s as U,bm as z,bc as W,as as Y,av as E,Y as y,al as q}from"./index-DrvLDslf.js";/* empty css *//* empty css *//* empty css *//* empty css *//* empty css */import{P as X}from"./PermissionGuard-BxagL6-4.js";import{r as C,a as Z}from"./reflection-Dr3WM5Rz.js";async function tt(t){const{data:e}=await T.get(`/config/${t}`);return e}async function et(t,e){const{data:a}=await T.put(`/config/${t}`,e);return a}function S(){return JSON.parse(JSON.stringify(J.monitor))}function h(t){const e=JSON.parse(JSON.stringify(J));if(!t)return e;const a={...S(),...t.monitor??{},car:{...S().car,...t.monitor?.car??{}},site:{...S().site,...t.monitor?.site??{}},track:{...S().track,...t.monitor?.track??{}},carActionByType:{...t.monitor?.carActionByType??{}}};return{...e,...t,playback:{...e.playback,...t.playback??{}},logRetention:{...e.logRetention,...t.logRetention??{}},version:{...e.version,...t.version??{}},monitor:a}}function at(t){return{carActionByType:{...t.carActionByType??{}},siteActionKeys:[...t.site?.methods??[]],trackActionKeys:[...t.track?.methods??[]]}}async function ht(t){const e=h(t);try{const a=await C.getMonitorConfig(),r=at(a.config);e.monitor.carActionByType=r.carActionByType,e.monitor.site.actionKeys=r.siteActionKeys,e.monitor.track.actionKeys=r.trackActionKeys}catch{}return e}async function bt(t){const e=h(t).monitor;let a=Z();try{a=(await C.getMonitorConfig()).config}catch{}await C.saveMonitorConfig({car:{fields:[...a.car?.fields??[]],status:[...a.car?.status??[]],methods:[...a.car?.methods??[]]},site:{fields:[...a.site?.fields??[]],status:[...a.site?.status??[]],methods:[...e.site.actionKeys]},track:{fields:[...a.track?.fields??[]],status:[...a.track?.status??[]],methods:[...e.track.actionKeys]},carActionByType:{...e.carActionByType}})}const ot=K("config",{state:()=>({cache:{},loading:{}}),actions:{async load(t,e=!1){if(!e&&this.cache[t])return this.cache[t];this.loading[t]=!0;try{const a=await tt(t);return t==="ops"&&a.payload&&(a.payload=h(a.payload)),this.cache[t]=a,a}finally{this.loading[t]=!1}},async save(t,e){this.loading[t]=!0;try{const a=t==="ops"?h(e):e,r=await et(t,a);return this.cache[t]=r,r}finally{this.loading[t]=!1}}}}),nt={class:"cpb-header"},st={class:"cpb-title"},it={key:0,class:"cpb-desc"},rt={class:"cpb-body"},ct={class:"cpb-json"},lt=L({__name:"ConfigPageBase",props:{section:{},title:{},description:{},defaults:{},normalizePayload:{type:Function},afterLoad:{type:Function},beforeSave:{type:Function},afterSave:{type:Function}},setup(t){const e=t,a=ot(),r=g(null),l=g(JSON.parse(JSON.stringify(e.defaults))),b=g(!1),m=g(!1),P=E(()=>JSON.stringify(l.value,null,2)),M=E(()=>r.value?.updatedAt?new Date(r.value.updatedAt).toLocaleString("zh-CN"):"—");function A(s){l.value=s}function $(s){let o=JSON.parse(JSON.stringify(s||e.defaults));e.normalizePayload&&(o=e.normalizePayload(o)),l.value=o}async function B(s,o){b.value=!0;try{const n=await a.load(e.section,s);r.value=n,$(n.payload),e.afterLoad&&await e.afterLoad(l.value,A),o&&y.success("已重载")}catch(n){y.error(`加载失败:${n instanceof Error?n.message:String(n)}`)}finally{b.value=!1}}async function _(s=!1){await B(s,s)}async function x(){m.value=!0;let s=l.value;if(e.normalizePayload&&(s=e.normalizePayload(s)),e.beforeSave)try{await e.beforeSave(s)}catch(n){y.error(`地图监控配置保存失败:${n instanceof Error?n.message:String(n)}`),m.value=!1;return}let o="";try{const n=await a.save(e.section,s);if(r.value=n,l.value=s,e.afterSave)try{await e.afterSave(s)}catch(d){o=`(平台配置已保存,但 SimpleLite 同步失败:${d instanceof Error?d.message:String(d)})`}await B(!0,!1);const v=e.beforeSave||e.afterSave?",地图监控配置已写入 SimpleLite":"";y.success(`已保存 v${n.version}${v}${o}`)}catch(n){y.error(`保存失败:${n instanceof Error?n.message:String(n)}`)}finally{m.value=!1}}return R(()=>e.section,()=>_()),V(()=>_()),(s,o)=>{const n=Q,v=U,d=I,N=G,F=D;return k(),O(X,{"widget-id":"ConfigCenter"},{default:i(()=>[c(d,{shadow:"never"},{header:i(()=>[p("div",nt,[p("span",st,u(t.title),1),c(n,{size:"small",effect:"plain"},{default:i(()=>[f("section="+u(t.section),1)]),_:1}),c(n,{size:"small",type:"info",effect:"plain"},{default:i(()=>[f("v"+u(r.value?.version??"-"),1)]),_:1}),r.value?.updatedAt?(k(),O(n,{key:0,size:"small",type:"success",effect:"plain"},{default:i(()=>[f(u(M.value),1)]),_:1})):w("",!0),o[3]||(o[3]=p("div",{class:"spacer"},null,-1)),c(v,{size:"small",icon:z(W),loading:b.value,onClick:o[0]||(o[0]=dt=>_(!0))},{default:i(()=>[...o[1]||(o[1]=[f("重载",-1)])]),_:1},8,["icon","loading"]),c(v,{size:"small",type:"primary",icon:z(Y),loading:m.value,onClick:x},{default:i(()=>[...o[2]||(o[2]=[f("保存",-1)])]),_:1},8,["icon","loading"])])]),default:i(()=>[t.description?(k(),j("p",it,u(t.description),1)):w("",!0),p("div",rt,[c(F,{gutter:12},{default:i(()=>[c(N,{span:14},{default:i(()=>[c(d,{shadow:"never","body-style":"padding: 12px"},{header:i(()=>[...o[4]||(o[4]=[f("表单",-1)])]),default:i(()=>[H(s.$slots,"default",{payload:l.value,update:A},void 0,!0)]),_:3})]),_:3}),c(N,{span:10},{default:i(()=>[c(d,{shadow:"never","body-style":"padding: 0"},{header:i(()=>[...o[5]||(o[5]=[f("JSON 预览(保存即下发占位)",-1)])]),default:i(()=>[p("pre",ct,u(P.value),1)]),_:1})]),_:1})]),_:3})])]),_:3})]),_:3})}}}),_t=q(lt,[["__scopeId","data-v-83b90685"]]);export{_t as C,ht as l,h as n,bt as s}; +import{aQ as T,e as J,aF as K,aE as L,bc as g,bC as D,b2 as R,ay as B,bD as i,b4 as k,aD as c,aA as V,bk as u,az as w,ax as y,a1 as j,w as I,t as q,bf as G,aC as f,ac as Q,r as U,bn as z,bd as W,aq as X,at as E,X as p,aj as H}from"./index-C6ULY2Si.js";/* empty css *//* empty css *//* empty css *//* empty css *//* empty css */import{P as Y}from"./PermissionGuard-DIZkcwyW.js";import{r as C,a as Z}from"./reflection-CKXyOCM_.js";async function tt(t){const{data:e}=await T.get(`/config/${t}`);return e}async function et(t,e){const{data:a}=await T.put(`/config/${t}`,e);return a}function S(){return JSON.parse(JSON.stringify(J.monitor))}function h(t){const e=JSON.parse(JSON.stringify(J));if(!t)return e;const a={...S(),...t.monitor??{},car:{...S().car,...t.monitor?.car??{}},site:{...S().site,...t.monitor?.site??{}},track:{...S().track,...t.monitor?.track??{}},carActionByType:{...t.monitor?.carActionByType??{}}};return{...e,...t,playback:{...e.playback,...t.playback??{}},logRetention:{...e.logRetention,...t.logRetention??{}},version:{...e.version,...t.version??{}},monitor:a}}function at(t){return{carActionByType:{...t.carActionByType??{}},siteActionKeys:[...t.site?.methods??[]],trackActionKeys:[...t.track?.methods??[]]}}async function ht(t){const e=h(t);try{const a=await C.getMonitorConfig(),r=at(a.config);e.monitor.carActionByType=r.carActionByType,e.monitor.site.actionKeys=r.siteActionKeys,e.monitor.track.actionKeys=r.trackActionKeys}catch{}return e}async function bt(t){const e=h(t).monitor;let a=Z();try{a=(await C.getMonitorConfig()).config}catch{}await C.saveMonitorConfig({car:{fields:[...a.car?.fields??[]],status:[...a.car?.status??[]],methods:[...a.car?.methods??[]]},site:{fields:[...a.site?.fields??[]],status:[...a.site?.status??[]],methods:[...e.site.actionKeys]},track:{fields:[...a.track?.fields??[]],status:[...a.track?.status??[]],methods:[...e.track.actionKeys]},carActionByType:{...e.carActionByType}})}const ot=K("config",{state:()=>({cache:{},loading:{}}),actions:{async load(t,e=!1){if(!e&&this.cache[t])return this.cache[t];this.loading[t]=!0;try{const a=await tt(t);return t==="ops"&&a.payload&&(a.payload=h(a.payload)),this.cache[t]=a,a}finally{this.loading[t]=!1}},async save(t,e){this.loading[t]=!0;try{const a=t==="ops"?h(e):e,r=await et(t,a);return this.cache[t]=r,r}finally{this.loading[t]=!1}}}}),nt={class:"cpb-header"},st={class:"cpb-title"},it={key:0,class:"cpb-desc"},rt={class:"cpb-body"},ct={class:"cpb-json"},lt=L({__name:"ConfigPageBase",props:{section:{},title:{},description:{},defaults:{},normalizePayload:{type:Function},afterLoad:{type:Function},beforeSave:{type:Function},afterSave:{type:Function}},setup(t){const e=t,a=ot(),r=g(null),l=g(JSON.parse(JSON.stringify(e.defaults))),b=g(!1),m=g(!1),P=E(()=>JSON.stringify(l.value,null,2)),M=E(()=>r.value?.updatedAt?new Date(r.value.updatedAt).toLocaleString("zh-CN"):"—");function A(s){l.value=s}function $(s){let o=JSON.parse(JSON.stringify(s||e.defaults));e.normalizePayload&&(o=e.normalizePayload(o)),l.value=o}async function N(s,o){b.value=!0;try{const n=await a.load(e.section,s);r.value=n,$(n.payload),e.afterLoad&&await e.afterLoad(l.value,A),o&&p.success("已重载")}catch(n){p.error(`加载失败:${n instanceof Error?n.message:String(n)}`)}finally{b.value=!1}}async function _(s=!1){await N(s,s)}async function x(){m.value=!0;let s=l.value;if(e.normalizePayload&&(s=e.normalizePayload(s)),e.beforeSave)try{await e.beforeSave(s)}catch(n){p.error(`地图监控配置保存失败:${n instanceof Error?n.message:String(n)}`),m.value=!1;return}let o="";try{const n=await a.save(e.section,s);if(r.value=n,l.value=s,e.afterSave)try{await e.afterSave(s)}catch(d){o=`(平台配置已保存,但 SimpleLite 同步失败:${d instanceof Error?d.message:String(d)})`}await N(!0,!1);const v=e.beforeSave||e.afterSave?",地图监控配置已写入 SimpleLite":"";p.success(`已保存 v${n.version}${v}${o}`)}catch(n){p.error(`保存失败:${n instanceof Error?n.message:String(n)}`)}finally{m.value=!1}}return D(()=>e.section,()=>_()),R(()=>_()),(s,o)=>{const n=Q,v=U,d=q,O=I,F=j;return k(),B(Y,{"widget-id":"ConfigCenter"},{default:i(()=>[c(d,{shadow:"never"},{header:i(()=>[y("div",nt,[y("span",st,u(t.title),1),c(n,{size:"small",effect:"plain"},{default:i(()=>[f("section="+u(t.section),1)]),_:1}),c(n,{size:"small",type:"info",effect:"plain"},{default:i(()=>[f("v"+u(r.value?.version??"-"),1)]),_:1}),r.value?.updatedAt?(k(),B(n,{key:0,size:"small",type:"success",effect:"plain"},{default:i(()=>[f(u(M.value),1)]),_:1})):w("",!0),o[3]||(o[3]=y("div",{class:"spacer"},null,-1)),c(v,{size:"small",icon:z(W),loading:b.value,onClick:o[0]||(o[0]=dt=>_(!0))},{default:i(()=>[...o[1]||(o[1]=[f("重载",-1)])]),_:1},8,["icon","loading"]),c(v,{size:"small",type:"primary",icon:z(X),loading:m.value,onClick:x},{default:i(()=>[...o[2]||(o[2]=[f("保存",-1)])]),_:1},8,["icon","loading"])])]),default:i(()=>[t.description?(k(),V("p",it,u(t.description),1)):w("",!0),y("div",rt,[c(F,{gutter:12},{default:i(()=>[c(O,{span:14},{default:i(()=>[c(d,{shadow:"never","body-style":"padding: 12px"},{header:i(()=>[...o[4]||(o[4]=[f("表单",-1)])]),default:i(()=>[G(s.$slots,"default",{payload:l.value,update:A},void 0,!0)]),_:3})]),_:3}),c(O,{span:10},{default:i(()=>[c(d,{shadow:"never","body-style":"padding: 0"},{header:i(()=>[...o[5]||(o[5]=[f("JSON 预览(保存即下发占位)",-1)])]),default:i(()=>[y("pre",ct,u(P.value),1)]),_:1})]),_:1})]),_:3})])]),_:3})]),_:3})}}}),_t=H(lt,[["__scopeId","data-v-1d51a575"]]);export{_t as C,ht as l,h as n,bt as s}; diff --git a/MiGu.Server/wwwroot/assets/CustomWidgetView-BfTj_5GQ.js b/MiGu.Server/wwwroot/assets/CustomWidgetView-BfTj_5GQ.js new file mode 100644 index 0000000..8239ef5 --- /dev/null +++ b/MiGu.Server/wwwroot/assets/CustomWidgetView-BfTj_5GQ.js @@ -0,0 +1 @@ +import{aE as _,ay as i,bD as e,bn as d,b4 as s,aD as a,a9 as u,aa as f,ax as n,bk as r,aA as b,ah as g,be as h,ac as w,aC as C,l as y,aj as E}from"./index-C6ULY2Si.js";/* empty css *//* empty css *//* empty css */import"./el-tooltip-l0sNRNKZ.js";/* empty css *//* empty css *//* empty css */import{C as T}from"./ConfigPageBase-DmCcZeia.js";/* empty css *//* empty css *//* empty css */import"./PermissionGuard-DIZkcwyW.js";/* empty css */import"./reflection-CKXyOCM_.js";const x={class:"js-mini"},D={class:"js-mini"},k=_({__name:"CustomWidgetView",setup(B){return(S,V)=>{const t=f,p=w,m=u;return s(),i(T,{section:"widget",title:"自定义控件",description:"呼叫/展示界面可自由定义(platform-vue + rcsmonitor-vue 双渲染器)",defaults:d(y)},{default:e(({payload:c})=>[a(m,{data:c.items,size:"small",border:""},{default:e(()=>[a(t,{label:"ID",prop:"id",width:"180"}),a(t,{label:"名称",prop:"name",width:"140"}),a(t,{label:"Schema",prop:"schemaJson"},{default:e(o=>[n("pre",x,r(o.row.schemaJson),1)]),_:1}),a(t,{label:"Layout",prop:"layoutJson"},{default:e(o=>[n("pre",D,r(o.row.layoutJson),1)]),_:1}),a(t,{label:"绑定 Scope"},{default:e(o=>[(s(!0),b(g,null,h(o.row.bindToScopes,l=>(s(),i(p,{key:l,size:"small",effect:"plain",style:{"margin-right":"4px"}},{default:e(()=>[C(r(l),1)]),_:2},1024))),128))]),_:1})]),_:1},8,["data"])]),_:1},8,["defaults"])}}}),K=E(k,[["__scopeId","data-v-96b90481"]]);export{K as default}; diff --git a/MiGu.Server/wwwroot/assets/CustomWidgetView-C3i7AzNk.js b/MiGu.Server/wwwroot/assets/CustomWidgetView-C3i7AzNk.js deleted file mode 100644 index 8817841..0000000 --- a/MiGu.Server/wwwroot/assets/CustomWidgetView-C3i7AzNk.js +++ /dev/null @@ -1 +0,0 @@ -import{aG as _,aA as i,bB as e,bm as d,m as u,b3 as s,aF as a,ab as f,az as n,bj as r,aC as b,bd as g,ad as h,aE as w,ai as C,aa as E,al as T}from"./index-DrvLDslf.js";/* empty css *//* empty css *//* empty css */import"./el-tooltip-l0sNRNKZ.js";/* empty css *//* empty css *//* empty css */import{C as y}from"./ConfigPageBase-CPF7i-FB.js";/* empty css *//* empty css *//* empty css */import"./PermissionGuard-BxagL6-4.js";import"./reflection-Dr3WM5Rz.js";const B={class:"js-mini"},x={class:"js-mini"},S=_({__name:"CustomWidgetView",setup(V){return(k,D)=>{const t=f,m=h,p=E;return s(),i(y,{section:"widget",title:"自定义控件",description:"呼叫/展示界面可自由定义(platform-vue + rcsmonitor-vue 双渲染器)",defaults:d(u)},{default:e(({payload:c})=>[a(p,{data:c.items,size:"small",border:""},{default:e(()=>[a(t,{label:"ID",prop:"id",width:"180"}),a(t,{label:"名称",prop:"name",width:"140"}),a(t,{label:"Schema",prop:"schemaJson"},{default:e(o=>[n("pre",B,r(o.row.schemaJson),1)]),_:1}),a(t,{label:"Layout",prop:"layoutJson"},{default:e(o=>[n("pre",x,r(o.row.layoutJson),1)]),_:1}),a(t,{label:"绑定 Scope"},{default:e(o=>[(s(!0),b(C,null,g(o.row.bindToScopes,l=>(s(),i(m,{key:l,size:"small",effect:"plain",style:{"margin-right":"4px"}},{default:e(()=>[w(r(l),1)]),_:2},1024))),128))]),_:1})]),_:1},8,["data"])]),_:1},8,["defaults"])}}}),H=T(S,[["__scopeId","data-v-96b90481"]]);export{H as default}; diff --git a/MiGu.Server/wwwroot/assets/DashboardView-Cx5dlpj0.js b/MiGu.Server/wwwroot/assets/DashboardView-Djx6JpAP.js similarity index 96% rename from MiGu.Server/wwwroot/assets/DashboardView-Cx5dlpj0.js rename to MiGu.Server/wwwroot/assets/DashboardView-Djx6JpAP.js index c32924e..86d150f 100644 --- a/MiGu.Server/wwwroot/assets/DashboardView-Cx5dlpj0.js +++ b/MiGu.Server/wwwroot/assets/DashboardView-Djx6JpAP.js @@ -1,4 +1,4 @@ -import{aG as iL,bb as yr,b1 as oL,aY as sL,b2 as lL,aC as Kt,az as $,aZ as mr,bj as Wt,aE as Da,ai as Ma,bd as La,aD as pm,aF as me,bB as fe,av as _e,u as uL,b3 as $t,a_ as Yh,aA as $h,bg as gm,R as fL,bm as Vl,bl as hL,bu as ym,aB as mm,b5 as vL,ac as cL,ap as dL,U as pL,a9 as gL,bq as yL,bi as mL,b4 as Zh,ao as _L,bk as SL,bz as xL,aT as bL,b6 as wL,Y as TL,ay as AL,ax as CL,aq as DL,aS as ML,al as LL}from"./index-DrvLDslf.js";/* empty css *//* empty css *//* empty css *//* empty css */import{b as IL,c as PL,l as RL,a as EL}from"./projection-CizY2UtH.js";import"./reflection-Dr3WM5Rz.js";/*! ***************************************************************************** +import{aE as iL,bc as yr,b2 as oL,aZ as sL,b3 as lL,aA as Kt,ax as $,a_ as mr,bk as Wt,aC as Da,ah as Ma,be as La,aB as pm,aD as me,bD as fe,at as _e,t as uL,br as fL,b4 as $t,a$ as Yh,ay as $h,bh as gm,Q as hL,bn as Vl,bm as vL,bw as ym,az as mm,b6 as cL,ab as dL,a8 as pL,an as gL,T as yL,bj as mL,b5 as Zh,am as _L,bl as SL,bB as xL,aU as bL,b7 as wL,X as TL,aw as AL,av as CL,ao as DL,aT as ML,aj as LL}from"./index-C6ULY2Si.js";/* empty css *//* empty css *//* empty css *//* empty css */import{b as IL,c as PL,l as RL,a as EL}from"./projection-b1x6abrR.js";import"./reflection-CKXyOCM_.js";/*! ***************************************************************************** Copyright (c) Microsoft Corporation. Permission to use, copy, modify, and/or distribute this software for any @@ -11,8 +11,8 @@ INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -***************************************************************************** */var yd=function(r,e){return yd=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,a){t.__proto__=a}||function(t,a){for(var n in a)Object.prototype.hasOwnProperty.call(a,n)&&(t[n]=a[n])},yd(r,e)};function k(r,e){if(typeof e!="function"&&e!==null)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");yd(r,e);function t(){this.constructor=r}r.prototype=e===null?Object.create(e):(t.prototype=e.prototype,new t)}var kL=function(){function r(){this.firefox=!1,this.ie=!1,this.edge=!1,this.newEdge=!1,this.weChat=!1}return r}(),OL=function(){function r(){this.browser=new kL,this.node=!1,this.wxa=!1,this.worker=!1,this.svgSupported=!1,this.touchEventsSupported=!1,this.pointerEventsSupported=!1,this.domSupported=!1,this.transformSupported=!1,this.transform3dSupported=!1,this.hasGlobalWindow=typeof window<"u"}return r}(),xt=new OL;typeof wx=="object"&&typeof wx.getSystemInfoSync=="function"?(xt.wxa=!0,xt.touchEventsSupported=!0):typeof document>"u"&&typeof self<"u"?xt.worker=!0:!xt.hasGlobalWindow||"Deno"in window?(xt.node=!0,xt.svgSupported=!0):NL(navigator.userAgent,xt);function NL(r,e){var t=e.browser,a=r.match(/Firefox\/([\d.]+)/),n=r.match(/MSIE\s([\d.]+)/)||r.match(/Trident\/.+?rv:(([\d.]+))/),i=r.match(/Edge?\/([\d.]+)/),o=/micromessenger/i.test(r);a&&(t.firefox=!0,t.version=a[1]),n&&(t.ie=!0,t.version=n[1]),i&&(t.edge=!0,t.version=i[1],t.newEdge=+i[1].split(".")[0]>18),o&&(t.weChat=!0),e.svgSupported=typeof SVGRect<"u",e.touchEventsSupported="ontouchstart"in window&&!t.ie&&!t.edge,e.pointerEventsSupported="onpointerdown"in window&&(t.edge||t.ie&&+t.version>=11),e.domSupported=typeof document<"u";var s=document.documentElement.style;e.transform3dSupported=(t.ie&&"transition"in s||t.edge||"WebKitCSSMatrix"in window&&"m11"in new WebKitCSSMatrix||"MozPerspective"in s)&&!("OTransition"in s),e.transformSupported=e.transform3dSupported||t.ie&&+t.version>=9}var og=12,Tw="sans-serif",rn=og+"px "+Tw,BL=20,VL=100,zL="007LLmW'55;N0500LLLLLLLLLL00NNNLzWW\\\\WQb\\0FWLg\\bWb\\WQ\\WrWWQ000CL5LLFLL0LL**F*gLLLL5F0LF\\FFF5.5N";function GL(r){var e={};if(typeof JSON>"u")return e;for(var t=0;td&&(d=m,c=f+g)}var _=this.getRawIndex(h),S=this.getRawIndex(c);h d&&(d=m,c=f+g)}var _=this.getRawIndex(h),S=this.getRawIndex(c);hg[1]&&(g[1]=p)}return this._rawCount=this._count=l,{start:s,end:l}},r.prototype._initDataFromProvider=function(e,t,a){for(var n=this._provider,i=this._chunks,o=this._dimensions,s=o.length,l=this._rawExtent,u=H(o,function(m){return m.property}),f=0;fy[1]&&(y[1]=g)}}!n.persistent&&n.clean&&n.clean(),this._rawCount=this._count=t,this._extent=[]},r.prototype.count=function(){return this._count},r.prototype.get=function(e,t){if(!(t>=0&&t