Files
Migu2.0/MiGu.Server/wwwroot/assets/LoginView-BoWUwdFm.js
T
zhaowei.huangandCursor e2269e430d feat(platform): 合并车辆运维页并优化 3D 画布嵌入体验
将维护策略与车队生命周期并入车辆运维 Tab,补充旧路由重定向与 RBAC 页面 key 迁移;改进 Workspace3D 就绪探测与 wwwroot 静态资源。

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-31 14:39:50 +08:00

2 lines
8.7 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import{aG as N,bu as q,bv as F,bt as B,bw as H,b7 as C,aC as M,aD as P,az as a,ah as O,bh as G,b2 as Y,br as r,bo as y,aF as s,bH as o,O as j,R as Q,Q as X,bx as J,aY as K,b1 as c,bm as Z,a_ as ee,af as ae,bd as se,aE as p,ay as oe,aw as te,u as le,T as ne,x as de,y as re,S as ie,r as ue,N as pe,bf as h,be as x,av as me,X as f,aj as ce}from"./index-CC_hCGHZ.js";/* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css */import"./el-tooltip-l0sNRNKZ.js";const fe={class:"login-page"},ve={class:"bg-stars","aria-hidden":"true"},be={class:"login-card mg-glass-lg"},ge={class:"hero"},_e={class:"hero-footnote"},we={class:"panel"},Ve={class:"scope-wrap"},ye={class:"launch-mode-head"},he={class:"scope-wrap launch-wrap"},ke={class:"row row-between"},Ee={class:"adv-grid"},Ce={class:"footer-stamp"},Me=N({__name:"LoginView",setup(Pe){const R=q(),S=F(),k=B(),E=H(),v=h(),b=h(!1),m=h([]),l=x({username:"admin",password:"admin",scope:"Platform",launchMode:"DesktopAndWeb",remember:!0}),i=x({host:"0.0.0.0",apiPort:7001,platformPort:8080,vrPort:8223}),W={username:[{required:!0,message:"请输入用户名",trigger:"blur"}],password:[{required:!0,message:"请输入密码",trigger:"blur"}],scope:[{required:!0,message:"请选择 scope",trigger:"change"}],launchMode:[{required:!0,message:"请选择启动模式",trigger:"change"}]},T=me(()=>new Date().getFullYear()),I=Array.from({length:18},(g,e)=>{const n=Math.random()*100,u=Math.random()*100,d=2+Math.random()*3,_=-Math.random()*6,w=.35+Math.random()*.45;return{top:`${n}%`,left:`${u}%`,width:`${d}px`,height:`${d}px`,opacity:`${w}`,animationDelay:`${_}s`}});async function $(){v.value&&await v.value.validate(async g=>{if(g){b.value=!0;try{const e=await k.login({username:l.username,password:l.password,scope:l.scope,launchMode:l.launchMode});f.success(`欢迎,${k.user?.displayName??l.username}`),e.launchWarning?f({message:e.launchWarning,type:"warning",duration:6e3,showClose:!0}):e.runMode==="Detached"&&f({message:"SimpleLite 未启动(Platform.Server 单独运行),/api/sl/* 相关功能将不可用。",type:"warning",duration:6e3,showClose:!0});const n=R.query.redirect??(l.scope==="Platform"?"/admin/dashboard":"/monitor/map");S.push(n)}catch(e){const n=e instanceof Error?e.message:String(e);f.error(`登录失败:${n}`)}finally{b.value=!1}}})}return(g,e)=>{const n=X,u=Q,d=j,_=ae,w=le,z=ne,V=ie,L=re,U=de,A=ue,D=pe;return C(),M("div",fe,[e[27]||(e[27]=P('<div class="bg-image" data-v-a5f3efd2></div><div class="bg-overlay" data-v-a5f3efd2></div><div class="bg-orb bg-orb-a" data-v-a5f3efd2></div><div class="bg-orb bg-orb-b" data-v-a5f3efd2></div><div class="bg-orb bg-orb-c" data-v-a5f3efd2></div>',5)),a("div",ve,[(C(),M(O,null,G(18,t=>a("span",{key:t,style:Y(r(I)[t-1])},null,4)),64))]),a("div",be,[a("div",ge,[e[14]||(e[14]=P('<div class="hero-brand" data-v-a5f3efd2><div class="hero-mark" data-v-a5f3efd2>迷</div><div class="hero-name" data-v-a5f3efd2>迷毂</div></div><div class="hero-tagline" data-v-a5f3efd2>智 能 调 度 平 台</div><div class="hero-tagline-en" data-v-a5f3efd2>INTELLIGENT · DISPATCH · PLATFORM</div><div class="hero-divider" data-v-a5f3efd2></div><ul class="hero-points" data-v-a5f3efd2><li data-v-a5f3efd2><span class="dot" data-v-a5f3efd2></span> 复刻 ARCHITECTURE.md §3.2 启动登录窗</li><li data-v-a5f3efd2><span class="dot" data-v-a5f3efd2></span> Web-Enabled · 管理员 / 运营 双视图</li><li data-v-a5f3efd2><span class="dot" data-v-a5f3efd2></span> 嵌入 webVRender 真实 3D 场景</li></ul>',5)),a("div",_e,[e[13]||(e[13]=a("span",{class:"badge"},"v1.7",-1)),a("span",null,y(r(E).activeTheme.name)+" · "+y(r(E).activeTheme.preview),1)])]),a("div",we,[e[26]||(e[26]=a("div",{class:"panel-head"},[a("div",{class:"panel-title"},"登 录"),a("div",{class:"panel-sub"},"访问 SimpleLite 的 Vue 外壳")],-1)),s(D,{ref_key:"formRef",ref:v,model:l,rules:W,class:"glass-form","hide-required-asterisk":""},{default:o(()=>[s(d,{prop:"username"},{default:o(()=>[s(u,{modelValue:l.username,"onUpdate:modelValue":e[0]||(e[0]=t=>l.username=t),size:"large",placeholder:"用户名",autocomplete:"username",clearable:""},{prefix:o(()=>[s(n,null,{default:o(()=>[s(r(J))]),_:1})]),_:1},8,["modelValue"])]),_:1}),s(d,{prop:"password"},{default:o(()=>[s(u,{modelValue:l.password,"onUpdate:modelValue":e[1]||(e[1]=t=>l.password=t),type:"password",size:"large","show-password":"",placeholder:"密码(Mock,任意非空)",autocomplete:"current-password"},{prefix:o(()=>[s(n,null,{default:o(()=>[s(r(K))]),_:1})]),_:1},8,["modelValue"])]),_:1}),s(d,{prop:"scope",class:"scope-item"},{default:o(()=>[a("div",Ve,[a("button",{type:"button",class:c(["scope-tab",{active:l.scope==="Platform"}]),onClick:e[2]||(e[2]=t=>l.scope="Platform")},[s(n,null,{default:o(()=>[s(r(Z))]),_:1}),e[15]||(e[15]=a("div",{class:"scope-meta"},[a("div",{class:"scope-name"},"管理员"),a("div",{class:"scope-desc"},"platform-vue · 全功能")],-1))],2),a("button",{type:"button",class:c(["scope-tab",{active:l.scope==="RCSMonitor"}]),onClick:e[3]||(e[3]=t=>l.scope="RCSMonitor")},[s(n,null,{default:o(()=>[s(r(ee))]),_:1}),e[16]||(e[16]=a("div",{class:"scope-meta"},[a("div",{class:"scope-name"},"运营"),a("div",{class:"scope-desc"},"rcsmonitor-vue · 受限")],-1))],2)])]),_:1}),s(d,{prop:"launchMode",class:"scope-item launch-mode-item"},{default:o(()=>[a("div",ye,[e[18]||(e[18]=a("span",{class:"launch-mode-title"},"SimpleLite 启动模式",-1)),s(_,{placement:"top"},{content:o(()=>[...e[17]||(e[17]=[a("div",{class:"launch-tip"},[a("div",null,[a("b",null,"本地+Web"),p(":登录后由 Platform 后端拉起 SimpleLite,同时打开桌面端 ImGui 窗口与浏览器端 webVRender。")]),a("div",null,[a("b",null,"仅 Web"),p(":只起 WebTerminal,不弹本地桌面窗口,适合远程办公 / 服务器部署。")])],-1)])]),default:o(()=>[s(n,{class:"launch-mode-help"},{default:o(()=>[s(r(se))]),_:1})]),_:1})]),a("div",he,[a("button",{type:"button",class:c(["scope-tab",{active:l.launchMode==="DesktopAndWeb"}]),onClick:e[4]||(e[4]=t=>l.launchMode="DesktopAndWeb")},[s(n,null,{default:o(()=>[s(r(oe))]),_:1}),e[19]||(e[19]=a("div",{class:"scope-meta"},[a("div",{class:"scope-name"},"本地 + Web"),a("div",{class:"scope-desc"},"桌面窗口 & 浏览器同时启动")],-1))],2),a("button",{type:"button",class:c(["scope-tab",{active:l.launchMode==="WebOnly"}]),onClick:e[5]||(e[5]=t=>l.launchMode="WebOnly")},[s(n,null,{default:o(()=>[s(r(te))]),_:1}),e[20]||(e[20]=a("div",{class:"scope-meta"},[a("div",{class:"scope-name"},"仅 Web"),a("div",{class:"scope-desc"},"不启桌面窗口 · 浏览器使用")],-1))],2)])]),_:1}),a("div",ke,[s(w,{modelValue:l.remember,"onUpdate:modelValue":e[6]||(e[6]=t=>l.remember=t),size:"default",class:"remember"},{default:o(()=>[...e[21]||(e[21]=[p("下次自动按当前 scope 进入",-1)])]),_:1},8,["modelValue"]),s(z,{underline:"never",class:"adv-link",onClick:e[7]||(e[7]=t=>m.value=m.value.length?[]:["adv"])},{default:o(()=>[...e[22]||(e[22]=[p("高级 ",-1)])]),_:1})]),s(U,{modelValue:m.value,"onUpdate:modelValue":e[12]||(e[12]=t=>m.value=t),class:"adv-collapse"},{default:o(()=>[s(L,{name:"adv"},{title:o(()=>[...e[23]||(e[23]=[a("span",{class:"adv-title"},"Web-Enabled · 端口与监听",-1)])]),default:o(()=>[a("div",Ee,[s(d,{label:"监听地址"},{default:o(()=>[s(u,{modelValue:i.host,"onUpdate:modelValue":e[8]||(e[8]=t=>i.host=t),size:"default"},null,8,["modelValue"])]),_:1}),s(d,{label:"WebAPI"},{default:o(()=>[s(V,{modelValue:i.apiPort,"onUpdate:modelValue":e[9]||(e[9]=t=>i.apiPort=t),min:1,max:65535,size:"default","controls-position":"right"},null,8,["modelValue"])]),_:1}),s(d,{label:"Platform"},{default:o(()=>[s(V,{modelValue:i.platformPort,"onUpdate:modelValue":e[10]||(e[10]=t=>i.platformPort=t),min:1,max:65535,size:"default","controls-position":"right"},null,8,["modelValue"])]),_:1}),s(d,{label:"webVRender"},{default:o(()=>[s(V,{modelValue:i.vrPort,"onUpdate:modelValue":e[11]||(e[11]=t=>i.vrPort=t),min:1,max:65535,size:"default","controls-position":"right"},null,8,["modelValue"])]),_:1})])]),_:1})]),_:1},8,["modelValue"]),s(A,{type:"primary",loading:b.value,class:"btn-login",size:"large",onClick:$},{default:o(()=>[...e[24]||(e[24]=[p(" 登 录 ",-1)])]),_:1},8,["loading"]),e[25]||(e[25]=a("div",{class:"bottom-note"}," 任意非空用户名 + 任意密码即可登录;scope 决定进入 admin / monitor 视图;权限按 Mock 表生成。 ",-1))]),_:1},8,["model"])])]),a("div",Ce," 迷毂 · "+y(T.value)+" · ARCHITECTURE v1.6 · powered by webVRender ",1)])}}}),De=ce(Me,[["__scopeId","data-v-a5f3efd2"]]);export{De as default};