xto-fronted 0.4.1 → 0.4.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/api/system.d.ts +1 -1
- package/dist/index-C6w0-8xN.js +1648 -0
- package/dist/index-D2fQ8TK8.js +475 -0
- package/dist/index-D4crnrO6.js +142 -0
- package/dist/index-a_ilWAvi.js +345 -0
- package/dist/index-sRwZYbZ4.js +372 -0
- package/dist/index.es.js +1 -1
- package/dist/index.umd.js +1 -1
- package/dist/style.css +1 -1
- package/package.json +1 -1
- package/src/api/auth.ts +4 -4
- package/src/api/system.ts +5 -4
- package/src/types/api.d.ts +4 -2
- package/src/views/login/index.vue +11 -8
package/dist/index.umd.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(i,e){typeof exports=="object"&&typeof module<"u"?e(exports,require("vue"),require("pinia"),require("vue-router"),require("@xto/navigation"),require("@xto/base"),require("@xto/feedback"),require("@xto/form"),require("axios"),require("@xto/data")):typeof define=="function"&&define.amd?define(["exports","vue","pinia","vue-router","@xto/navigation","@xto/base","@xto/feedback","@xto/form","axios","@xto/data"],e):(i=typeof globalThis<"u"?globalThis:i||self,e(i.XtoFronted={},i.Vue,i.Pinia,i.VueRouter,i.navigation,i.base,i.feedback,i.form,i.axios,i.data))})(this,function(i,e,v,R,K,y,A,N,Ke,L){"use strict";const H="xto_",Ne=t=>({get(l){const o=t.getItem(H+l);if(!o)return null;try{return JSON.parse(o)}catch{return o}},set(l,o){if(o==null){t.removeItem(H+l);return}const r=typeof o=="string"?o:JSON.stringify(o);t.setItem(H+l,r)},remove(l){t.removeItem(H+l)},clear(){Object.keys(t).forEach(o=>{o.startsWith(H)&&t.removeItem(o)})}}),W=Ne(window.localStorage),X=Ne(window.sessionStorage),E={get:W.get,set:W.set,remove:W.remove,clear:W.clear},Ye={get:X.get,set:X.set,remove:X.remove,clear:X.clear},q=v.defineStore("app",()=>{const t=e.ref(E.get("appName")||"XTO App"),l=e.ref(E.get("indexPath")||"/dashboard"),o=e.ref(E.get("isDark")||!1),r=e.ref(E.get("theme")||"light"),d=e.ref(E.get("layout")||"sidebar"),a=e.ref(E.get("isCollapsed")||!1),s=e.ref(E.get("showTabs")??!0),n=e.ref(E.get("showFooter")??!0),h=e.ref(E.get("showBreadcrumb")??!0),g=e.ref(E.get("primaryColor")||"#409eff"),m=e.ref([]),B=e.computed(()=>o.value?"dark":"light"),p=I=>{t.value=I,E.set("appName",I)},x=I=>{l.value=I,E.set("indexPath",I)},S=()=>{o.value=!o.value,r.value=o.value?"dark":"light",f()},u=I=>{r.value=I,o.value=I==="dark",f()},f=()=>{const I=document.documentElement;o.value?I.classList.add("dark"):I.classList.remove("dark"),E.set("isDark",o.value),E.set("theme",r.value)},b=()=>{a.value=!a.value,E.set("isCollapsed",a.value)},$=I=>{d.value=I,E.set("layout",I)},z=()=>{s.value=!s.value,E.set("showTabs",s.value)},U=()=>{n.value=!n.value,E.set("showFooter",n.value)},V=()=>{h.value=!h.value,E.set("showBreadcrumb",h.value)},c=I=>{g.value=I,document.documentElement.style.setProperty("--color-primary",I),E.set("primaryColor",I)},k=I=>{m.value.includes(I)||m.value.push(I)},O=I=>{const ne=m.value.indexOf(I);ne>-1&&m.value.splice(ne,1)},fe=()=>{m.value=[]},he=()=>{f(),g.value!=="#409eff"&&document.documentElement.style.setProperty("--color-primary",g.value)};return e.watch(o,f),{appName:t,indexPath:l,isDark:o,theme:r,layout:d,isCollapsed:a,showTabs:s,showFooter:n,showBreadcrumb:h,primaryColor:g,cachedViews:m,themeClass:B,setAppName:p,setIndexPath:x,toggleTheme:S,toggleCollapse:b,setTheme:u,setLayout:$,toggleTabs:z,toggleFooter:U,toggleBreadcrumb:V,setPrimaryColor:c,addCachedView:k,removeCachedView:O,clearCachedViews:fe,initTheme:he}}),ge="/vite.svg",He=(t,l,o)=>{const r=t[l];return r?typeof r=="function"?r():Promise.resolve(r):new Promise((d,a)=>{(typeof queueMicrotask=="function"?queueMicrotask:setTimeout)(a.bind(null,new Error("Unknown variable dynamic import: "+l+(l.split("/").length!==o?". Note that variables only represent file names one level deep.":""))))})},oe=[{path:"/login",name:"Login",component:()=>Promise.resolve().then(()=>an),meta:{title:"登录",hidden:!0}},{path:"/404",name:"NotFound",component:()=>Promise.resolve().then(()=>dn),meta:{title:"404",hidden:!0}},{path:"/403",name:"Forbidden",component:()=>Promise.resolve().then(()=>pn),meta:{title:"403",hidden:!0}}],le={path:"/:pathMatch(.*)*",redirect:"/404",meta:{hidden:!0}},ae={path:"/",name:"Layout",component:()=>Promise.resolve().then(()=>Ht),redirect:"/dashboard",children:[{path:"/dashboard",name:"Dashboard",component:()=>Promise.resolve().then(()=>Me),meta:{title:"仪表盘",icon:"dashboard",keepAlive:!0,affix:!0}},{path:"/system/user",name:"SystemUser",component:()=>Promise.resolve().then(()=>Re),meta:{title:"用户管理",icon:"user",keepAlive:!0}},{path:"/system/role",name:"SystemRole",component:()=>Promise.resolve().then(()=>ze),meta:{title:"角色管理",icon:"role",keepAlive:!0}},{path:"/system/menu",name:"SystemMenu",component:()=>Promise.resolve().then(()=>Fe),meta:{title:"菜单管理",icon:"menu",keepAlive:!0}}]},We=[{path:"/dashboard",name:"Dashboard",component:()=>Promise.resolve().then(()=>Me),meta:{title:"仪表盘",icon:"dashboard",keepAlive:!0,affix:!0}},{path:"/system",name:"System",redirect:"/system/user",meta:{title:"系统管理",icon:"setting"},children:[{path:"user",name:"SystemUser",component:()=>Promise.resolve().then(()=>Re),meta:{title:"用户管理",icon:"user",keepAlive:!0}},{path:"role",name:"SystemRole",component:()=>Promise.resolve().then(()=>ze),meta:{title:"角色管理",icon:"role",keepAlive:!0}},{path:"menu",name:"SystemMenu",component:()=>Promise.resolve().then(()=>Fe),meta:{title:"菜单管理",icon:"menu",keepAlive:!0}}]}],_e=[{id:1,name:"Dashboard",path:"/dashboard",component:"dashboard/index",icon:"dashboard",title:"仪表盘",keepAlive:!0,affix:!0},{id:2,name:"System",path:"/system",redirect:"/system/user",icon:"setting",title:"系统管理",children:[{id:21,name:"SystemUser",path:"/system/user",component:"system/user/index",icon:"user",title:"用户管理",keepAlive:!0},{id:22,name:"SystemRole",path:"/system/role",component:"system/role/index",icon:"role",title:"角色管理",keepAlive:!0},{id:23,name:"SystemMenu",path:"/system/menu",component:"system/menu/index",icon:"menu",title:"菜单管理",keepAlive:!0}]}],re="token",se="refresh_token",ie="token_expire",G=()=>E.get(re),ye=t=>{E.set(re,t)},Xe=()=>E.get(se),Ee=t=>{E.set(se,t)},ke=()=>E.get(ie),Ce=t=>{E.set(ie,t)},de=t=>{ye(t.token),Ee(t.refreshToken),Ce(t.expireTime)},ce=()=>{E.remove(re),E.remove(se),E.remove(ie)},we=()=>{const t=ke();return t?Date.now()>t:!0},me=()=>!!G()&&!we(),P=v.defineStore("user",()=>{const t=e.ref(E.get("userInfo")),l=e.ref(E.get("roles")||[]),o=e.ref(E.get("permissions")||[]),r=e.computed(()=>!!t.value),d=e.computed(()=>{var p;return((p=t.value)==null?void 0:p.username)||""}),a=e.computed(()=>{var p;return((p=t.value)==null?void 0:p.nickname)||""}),s=e.computed(()=>{var p;return((p=t.value)==null?void 0:p.avatar)||""}),n=e.computed(()=>{var p;return(p=t.value)==null?void 0:p.id});return{userInfo:t,roles:l,permissions:o,isLoggedIn:r,username:d,nickname:a,avatar:s,userId:n,setUserInfo:p=>{t.value=p,l.value=p.roles||[],o.value=p.permissions||[],E.set("userInfo",p),E.set("roles",p.roles||[]),E.set("permissions",p.permissions||[])},clearUserInfo:()=>{t.value=null,l.value=[],o.value=[],E.remove("userInfo"),E.remove("roles"),E.remove("permissions")},hasPermission:p=>Array.isArray(p)?p.some(x=>o.value.includes(x)):o.value.includes(p),hasRole:p=>Array.isArray(p)?p.some(x=>l.value.includes(x)):l.value.includes(p)}}),ee=R.createRouter({history:R.createWebHistory(),routes:[...oe,ae,le],scrollBehavior:()=>({left:0,top:0})}),Ge=["/login","/404","/403"];ee.beforeEach(async(t,l,o)=>{const r=q();if(r.initTheme(),me())if(t.path==="/login")o({path:"/"});else{const d=P();d.isLoggedIn||(d.setUserInfo({id:1,username:"admin",nickname:"管理员",avatar:"",email:"admin@example.com",phone:"13800138000",status:1,roles:["admin"],permissions:["*"],createTime:new Date().toISOString()}),J().setMenuList(_e)),t.name&&t.meta.keepAlive&&r.addCachedView(t.name),o()}else Ge.includes(t.path)?o():o("/login")});function Je(){const t=R.createRouter({history:R.createWebHistory(),routes:[...oe,ae,le]});ee.matcher=t.matcher}const J=v.defineStore("menu",()=>{const t=e.ref(E.get("menuList")||[]),l=e.computed(()=>t.value.length>0),o=s=>{t.value=s,E.set("menuList",s)},r=()=>{t.value=[],E.remove("menuList")},d=s=>s.filter(n=>!n.hidden).map(n=>{const h={path:n.path,name:n.name,meta:{title:n.title,icon:n.icon,keepAlive:n.keepAlive,hidden:n.hidden}};return n.redirect&&(h.redirect=n.redirect),n.component&&(h.component=()=>He(Object.assign({}),`../views/${n.component}.vue`,3)),n.children&&n.children.length>0&&(h.children=d(n.children)),h});return{menuList:t,hasMenu:l,setMenuList:o,clearMenu:r,generateRoutes:d,addRoutes:s=>{d(s).forEach(h=>{ee.addRoute("Layout",h)})}}}),te=v.defineStore("auth",()=>{const t=e.ref(G()),l=e.computed(()=>me()),o=e.ref(""),r=e.ref(""),d=e.ref(""),a=e.ref("/login");return{token:t,isLoggedIn:l,baseUrl:o,appId:r,clientId:d,loginPath:a,login:p=>{t.value=p.token,de(p)},logout:()=>{t.value=null,ce()},setBaseUrl:p=>{o.value=p},setAppId:p=>{r.value=p},setClientId:p=>{d.value=p},setLoginPath:p=>{a.value=p}}}),Qe={class:"sidebar__logo"},Ze={key:0,class:"sidebar__user"},ve={class:"sidebar__user-info"},et={class:"sidebar__user-name"},tt={class:"sidebar__user-role"},nt=e.defineComponent({__name:"Sidebar",setup(t){const l=R.useRoute(),o=R.useRouter(),r=J(),d=P(),a=te(),s=q(),n=e.computed(()=>s.isCollapsed),h=e.computed(()=>l.path),g=e.computed(()=>s.isDark?"#1d1e1f":"#fff"),m=e.computed(()=>s.isDark?"#cfd3dc":"#303133"),B=e.computed(()=>"#409eff"),p=u=>{u&&u!==l.path&&o.push(u)},x=()=>{a.logout(),d.clearUserInfo(),r.clearMenu(),o.push("/login")},S=u=>({dashboard:"dashboard",system:"system",user:"user",role:"role",menu:"list",setting:"setting"})[u||""]||"file";return(u,f)=>{var b;return e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["sidebar",{"sidebar--collapsed":n.value}])},[e.createElementVNode("div",Qe,[f[0]||(f[0]=e.createElementVNode("img",{src:ge,alt:"Logo",class:"sidebar__logo-img"},null,-1)),e.withDirectives(e.createElementVNode("span",{class:"sidebar__logo-text"},e.toDisplayString(e.unref(s).appName),513),[[e.vShow,!n.value]])]),e.createVNode(e.unref(K.Menu),{"default-active":h.value,mode:"vertical",collapse:n.value,"collapse-transition":!1,"background-color":g.value,"text-color":m.value,"active-text-color":B.value,class:"sidebar__menu",onSelect:p},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(r).menuList,$=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:$.path},[$.children&&$.children.length>0?(e.openBlock(),e.createBlock(e.unref(K.SubMenu),{key:0,index:$.path},{title:e.withCtx(()=>[e.createVNode(e.unref(y.Icon),{name:S($.icon),size:16},null,8,["name"]),e.createElementVNode("span",null,e.toDisplayString($.title),1)]),default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList($.children,z=>(e.openBlock(),e.createBlock(e.unref(K.MenuItem),{key:z.path,index:z.path},{default:e.withCtx(()=>[e.createVNode(e.unref(y.Icon),{name:S(z.icon),size:16},null,8,["name"]),e.createElementVNode("span",null,e.toDisplayString(z.title),1)]),_:2},1032,["index"]))),128))]),_:2},1032,["index"])):(e.openBlock(),e.createBlock(e.unref(K.MenuItem),{key:1,index:$.path},{default:e.withCtx(()=>[e.createVNode(e.unref(y.Icon),{name:S($.icon),size:16},null,8,["name"]),e.createElementVNode("span",null,e.toDisplayString($.title),1)]),_:2},1032,["index"]))],64))),128))]),_:1},8,["default-active","collapse","background-color","text-color","active-text-color"]),n.value?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("div",Ze,[e.createElementVNode("div",ve,[e.createElementVNode("span",et,e.toDisplayString(e.unref(d).nickname),1),e.createElementVNode("span",tt,e.toDisplayString((b=e.unref(d).roles)==null?void 0:b.join(", ")),1)]),e.createVNode(e.unref(y.Button),{type:"text",size:"small",onClick:x},{default:e.withCtx(()=>[...f[1]||(f[1]=[e.createTextVNode("退出",-1)])]),_:1})]))],2)}}}),F=(t,l)=>{const o=t.__vccOpts||t;for(const[r,d]of l)o[r]=d;return o},Se=F(nt,[["__scopeId","data-v-a7668285"]]),ot={class:"header"},lt={class:"header__left"},at={key:0,class:"header__breadcrumb"},rt={key:0,class:"breadcrumb-separator"},st={class:"header__right"},it=["title"],dt={class:"header__avatar"},ct={class:"header__user-name"},mt={key:0,class:"header__dropdown"},pt={class:"header__dropdown-header"},ut={class:"header__dropdown-avatar"},ft={class:"header__dropdown-info"},ht={class:"header__dropdown-name"},Vt={class:"header__dropdown-role"},Nt={class:"header__dropdown-menu"},gt={class:"search-container"},_t={class:"search-input-wrapper"},yt={key:0,class:"search-results"},Et=["onClick"],kt={class:"search-result-info"},Ct={class:"search-result-title"},wt={key:0,class:"search-result-parent"},St={key:1,class:"search-empty"},Bt={class:"settings-drawer"},xt={class:"settings-section"},bt={class:"settings-layout-options"},It=["onClick"],Tt={class:"layout-option__preview"},Dt={key:0,class:"layout-preview-sidebar"},Lt={key:1,class:"layout-preview-top"},$t={key:2,class:"layout-preview-mix"},At={class:"layout-option__label"},Ut={class:"settings-section"},Mt={class:"settings-color-options"},Rt=["title","onClick"],zt={class:"settings-section"},Ft={class:"settings-switch-list"},Pt={class:"settings-switch-item"},Ot={class:"settings-switch-item"},Be=F(e.defineComponent({__name:"Header",setup(t){const l=R.useRoute(),o=R.useRouter(),r=q(),d=P(),a=te(),s=J(),n=e.ref(!1),h=e.ref(!1),g=e.ref(null),m=e.ref(!1),B=e.ref(!1),p=e.ref(""),x=e.ref(null),S=e.ref(!1),u=[{value:"sidebar",label:"左侧菜单",icon:"sidebar-left"},{value:"top",label:"顶部菜单",icon:"menu"},{value:"mix",label:"混合菜单",icon:"grid"}],f=[{value:"#409eff",label:"默认蓝"},{value:"#1890ff",label:"科技蓝"},{value:"#52c41a",label:"极光绿"},{value:"#faad14",label:"日落橙"},{value:"#f5222d",label:"薄暮红"},{value:"#722ed1",label:"酱紫"}],b=e.computed(()=>l.matched.filter(_=>_.meta&&_.meta.title).map(_=>({title:_.meta.title,path:_.path}))),$=(D,_="")=>{const Y=[];return D.forEach(C=>{C.children&&C.children.length>0?Y.push(...$(C.children,C.title)):Y.push({...C,parentTitle:_})}),Y},z=e.computed(()=>p.value.trim()?$(s.menuList).filter(_=>_.title.toLowerCase().includes(p.value.toLowerCase())):[]),U=e.computed(()=>r.layout),V=()=>{r.toggleCollapse()},c=()=>{r.toggleTheme()},k=()=>{h.value=!0},O=D=>{r.setLayout(D)},fe=D=>{S.value=D;const _=document.documentElement;D?_.classList.add("grey-mode"):_.classList.remove("grey-mode")},he=()=>{document.fullscreenElement?document.exitFullscreen():document.documentElement.requestFullscreen()},I=()=>{m.value=!!document.fullscreenElement},ne=()=>{n.value=!n.value},Z=()=>{n.value=!1},Pe=()=>{B.value=!0},Ve=()=>{B.value=!1,p.value=""},Oe=D=>{o.push(D),Ve()},xo=D=>{r.setPrimaryColor(D)},bo=()=>{Z(),o.push("/profile")},Io=()=>{Z(),o.push("/change-password")},To=()=>{Z(),a.logout(),d.clearUserInfo(),s.clearMenu(),o.push("/login")},je=D=>{g.value&&!g.value.contains(D.target)&&Z(),x.value&&!x.value.contains(D.target)&&Ve()},qe=D=>{D.key==="Escape"&&(Ve(),Z()),(D.ctrlKey||D.metaKey)&&D.key==="k"&&(D.preventDefault(),Pe())};return e.onMounted(()=>{document.addEventListener("click",je),document.addEventListener("fullscreenchange",I),document.addEventListener("keydown",qe),r.initTheme(),S.value=document.documentElement.classList.contains("grey-mode")}),e.onUnmounted(()=>{document.removeEventListener("click",je),document.removeEventListener("fullscreenchange",I),document.removeEventListener("keydown",qe)}),(D,_)=>{var Y;return e.openBlock(),e.createElementBlock("div",ot,[e.createElementVNode("div",lt,[e.createElementVNode("div",{class:"header__collapse",onClick:V},[e.createVNode(e.unref(y.Icon),{name:e.unref(r).isCollapsed?"menu-unfold":"menu-fold",size:18},null,8,["name"])]),e.unref(r).showBreadcrumb?(e.openBlock(),e.createElementBlock("div",at,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(b.value,(C,j)=>(e.openBlock(),e.createElementBlock("span",{key:C.path},[j>0?(e.openBlock(),e.createElementBlock("span",rt,"/")):e.createCommentVNode("",!0),e.createElementVNode("span",{class:e.normalizeClass({"is-current":j===b.value.length-1})},e.toDisplayString(C.title),3)]))),128))])):e.createCommentVNode("",!0)]),e.createElementVNode("div",st,[e.createElementVNode("div",{class:"header__action",onClick:Pe,title:"搜索 (Ctrl+K)"},[e.createVNode(e.unref(y.Icon),{name:"search",size:16})]),e.createElementVNode("div",{class:"header__action",onClick:he,title:m.value?"退出全屏":"全屏"},[e.createVNode(e.unref(y.Icon),{name:m.value?"fullscreen-exit":"fullscreen",size:16},null,8,["name"])],8,it),e.createElementVNode("div",{class:"header__action",onClick:k,title:"换肤设置"},[e.createVNode(e.unref(y.Icon),{name:"setting",size:16})]),e.createElementVNode("div",{class:"header__action",onClick:c,title:"切换主题"},[e.createVNode(e.unref(y.Icon),{name:e.unref(r).isDark?"sun":"moon",size:16},null,8,["name"])]),e.createElementVNode("div",{class:"header__user",ref_key:"dropdownRef",ref:g},[e.createElementVNode("div",{class:"header__user-trigger",onClick:e.withModifiers(ne,["stop"])},[e.createElementVNode("div",dt,[e.createElementVNode("span",null,e.toDisplayString(((Y=e.unref(d).nickname)==null?void 0:Y.charAt(0))||"U"),1)]),e.createElementVNode("span",ct,e.toDisplayString(e.unref(d).nickname),1),e.createElementVNode("span",{class:e.normalizeClass(["header__user-arrow",{"is-active":n.value}])},"▼",2)]),e.createVNode(e.Transition,{name:"dropdown"},{default:e.withCtx(()=>{var C,j;return[n.value?(e.openBlock(),e.createElementBlock("div",mt,[e.createElementVNode("div",pt,[e.createElementVNode("div",ut,[e.createElementVNode("span",null,e.toDisplayString(((C=e.unref(d).nickname)==null?void 0:C.charAt(0))||"U"),1)]),e.createElementVNode("div",ft,[e.createElementVNode("div",ht,e.toDisplayString(e.unref(d).nickname),1),e.createElementVNode("div",Vt,e.toDisplayString((j=e.unref(d).roles)==null?void 0:j.join(", ")),1)])]),_[8]||(_[8]=e.createElementVNode("div",{class:"header__dropdown-divider"},null,-1)),e.createElementVNode("div",Nt,[e.createElementVNode("div",{class:"header__dropdown-item",onClick:bo},[e.createVNode(e.unref(y.Icon),{name:"user",size:16}),_[4]||(_[4]=e.createElementVNode("span",null,"个人信息",-1))]),e.createElementVNode("div",{class:"header__dropdown-item",onClick:Io},[e.createVNode(e.unref(y.Icon),{name:"lock",size:16}),_[5]||(_[5]=e.createElementVNode("span",null,"修改密码",-1))]),_[7]||(_[7]=e.createElementVNode("div",{class:"header__dropdown-divider"},null,-1)),e.createElementVNode("div",{class:"header__dropdown-item header__dropdown-item--danger",onClick:To},[e.createVNode(e.unref(y.Icon),{name:"logout",size:16}),_[6]||(_[6]=e.createElementVNode("span",null,"退出登录",-1))])])])):e.createCommentVNode("",!0)]}),_:1})],512)]),e.createVNode(e.Transition,{name:"search"},{default:e.withCtx(()=>[B.value?(e.openBlock(),e.createElementBlock("div",{key:0,class:"header__search-modal",ref_key:"searchRef",ref:x},[e.createElementVNode("div",gt,[e.createElementVNode("div",_t,[e.createVNode(e.unref(y.Icon),{class:"search-icon",name:"search",size:20}),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":_[0]||(_[0]=C=>p.value=C),type:"text",class:"search-input",placeholder:"搜索菜单...",autofocus:"",onKeyup:_[1]||(_[1]=e.withKeys(C=>z.value[0]&&Oe(z.value[0].path),["enter"]))},null,544),[[e.vModelText,p.value]]),_[9]||(_[9]=e.createElementVNode("span",{class:"search-shortcut"},"ESC 关闭",-1))]),z.value.length>0?(e.openBlock(),e.createElementBlock("div",yt,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(z.value,(C,j)=>(e.openBlock(),e.createElementBlock("div",{key:C.path,class:e.normalizeClass(["search-result-item",{"is-first":j===0}]),onClick:Ho=>Oe(C.path)},[e.createVNode(e.unref(y.Icon),{class:"search-result-icon",name:C.icon||"file",size:20},null,8,["name"]),e.createElementVNode("div",kt,[e.createElementVNode("span",Ct,e.toDisplayString(C.title),1),C.parentTitle?(e.openBlock(),e.createElementBlock("span",wt,e.toDisplayString(C.parentTitle),1)):e.createCommentVNode("",!0)])],10,Et))),128))])):p.value?(e.openBlock(),e.createElementBlock("div",St," 未找到匹配的菜单 ")):e.createCommentVNode("",!0)])],512)):e.createCommentVNode("",!0)]),_:1}),e.createVNode(e.unref(A.Drawer),{modelValue:h.value,"onUpdate:modelValue":_[3]||(_[3]=C=>h.value=C),title:"换肤设置",direction:"rtl",size:"320px"},{default:e.withCtx(()=>[e.createElementVNode("div",Bt,[e.createElementVNode("div",xt,[_[13]||(_[13]=e.createElementVNode("div",{class:"settings-title"},"布局模式",-1)),e.createElementVNode("div",bt,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(u,C=>e.createElementVNode("div",{key:C.value,class:e.normalizeClass(["layout-option",{"is-active":U.value===C.value}]),onClick:j=>O(C.value)},[e.createElementVNode("div",Tt,[C.value==="sidebar"?(e.openBlock(),e.createElementBlock("div",Dt,[..._[10]||(_[10]=[e.createElementVNode("div",{class:"preview-aside"},null,-1),e.createElementVNode("div",{class:"preview-main"},[e.createElementVNode("div",{class:"preview-header"}),e.createElementVNode("div",{class:"preview-content"})],-1)])])):C.value==="top"?(e.openBlock(),e.createElementBlock("div",Lt,[..._[11]||(_[11]=[e.createElementVNode("div",{class:"preview-header-full"},null,-1),e.createElementVNode("div",{class:"preview-content-full"},null,-1)])])):(e.openBlock(),e.createElementBlock("div",$t,[..._[12]||(_[12]=[e.createElementVNode("div",{class:"preview-header-mix"},[e.createElementVNode("div",{class:"preview-mix-left"})],-1),e.createElementVNode("div",{class:"preview-mix-body"},[e.createElementVNode("div",{class:"preview-mix-aside"}),e.createElementVNode("div",{class:"preview-mix-content"})],-1)])]))]),e.createElementVNode("span",At,e.toDisplayString(C.label),1)],10,It)),64))])]),e.createElementVNode("div",Ut,[_[14]||(_[14]=e.createElementVNode("div",{class:"settings-title"},"主题色",-1)),e.createElementVNode("div",Mt,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(f,C=>e.createElementVNode("div",{key:C.value,class:e.normalizeClass(["color-option",{"is-active":e.unref(r).primaryColor===C.value}]),style:e.normalizeStyle({backgroundColor:C.value}),title:C.label,onClick:j=>xo(C.value)},[e.unref(r).primaryColor===C.value?(e.openBlock(),e.createBlock(e.unref(y.Icon),{key:0,name:"check",size:12,color:"#fff"})):e.createCommentVNode("",!0)],14,Rt)),64))])]),e.createElementVNode("div",zt,[_[19]||(_[19]=e.createElementVNode("div",{class:"settings-title"},"功能设置",-1)),e.createElementVNode("div",Ft,[e.createElementVNode("div",Pt,[_[16]||(_[16]=e.createElementVNode("span",null,"灰色模式",-1)),e.createElementVNode("div",{class:e.normalizeClass(["switch-wrapper",{"is-checked":S.value}]),onClick:_[2]||(_[2]=C=>fe(!S.value))},[..._[15]||(_[15]=[e.createElementVNode("span",{class:"switch-core"},null,-1)])],2)]),e.createElementVNode("div",Ot,[_[18]||(_[18]=e.createElementVNode("span",null,"暗黑模式",-1)),e.createElementVNode("div",{class:e.normalizeClass(["switch-wrapper",{"is-checked":e.unref(r).isDark}]),onClick:c},[..._[17]||(_[17]=[e.createElementVNode("span",{class:"switch-core"},null,-1)])],2)])])])])]),_:1},8,["modelValue"])])}}}),[["__scopeId","data-v-015c45c9"]]),jt={class:"layout"},qt={class:"layout__main"},Kt={class:"layout__header"},Yt={class:"layout__content"},pe=F(e.defineComponent({__name:"index",setup(t){const l=q(),o=e.computed(()=>l.isCollapsed?"64px":"210px");return(r,d)=>{const a=e.resolveComponent("router-view");return e.openBlock(),e.createElementBlock("div",jt,[e.createElementVNode("aside",{class:"layout__aside",style:e.normalizeStyle({width:o.value})},[e.createVNode(Se)],4),e.createElementVNode("div",qt,[e.createElementVNode("header",Kt,[e.createVNode(Be)]),e.createElementVNode("main",Yt,[e.createVNode(a)])])])}}}),[["__scopeId","data-v-a3110011"]]),Ht=Object.freeze(Object.defineProperty({__proto__:null,default:pe},Symbol.toStringTag,{value:"Module"})),Wt={class:"tabs-wrapper"},Xt={class:"tab-label"},Gt=["onClick"],Jt=F(e.defineComponent({__name:"Tabs",setup(t){const l=R.useRoute(),o=R.useRouter(),r=e.computed(()=>{const n=[];return l.matched.forEach(h=>{var g;(g=h.meta)!=null&&g.affix&&n.push({name:h.name,title:h.meta.title,path:h.path,affix:!0})}),n}),d=e.computed(()=>l.path),a=n=>{o.push(n)},s=n=>{const h=r.value.find(g=>g.path===n);if(!(h!=null&&h.affix)&&n===d.value){const g=r.value.findIndex(B=>B.path===n),m=r.value[g-1]||r.value[g+1];m&&o.push(m.path)}};return(n,h)=>(e.openBlock(),e.createElementBlock("div",Wt,[e.createVNode(e.unref(K.Tabs),{modelValue:d.value,"onUpdate:modelValue":h[0]||(h[0]=g=>d.value=g),type:"card",onTabClick:a},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(r.value,g=>(e.openBlock(),e.createBlock(e.unref(K.TabPane),{key:g.path,name:g.path,label:g.title,closable:!g.affix},{label:e.withCtx(()=>[e.createElementVNode("span",Xt,[e.createTextVNode(e.toDisplayString(g.title)+" ",1),g.affix?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("span",{key:0,class:"tab-close",onClick:e.withModifiers(m=>s(g.path),["stop"])}," ✕ ",8,Gt))])]),_:2},1032,["name","label","closable"]))),128))]),_:1},8,["modelValue"])]))}}),[["__scopeId","data-v-9156d8cd"]]),Qt={},Zt={class:"footer"};function vt(t,l){return e.openBlock(),e.createElementBlock("div",Zt,[...l[0]||(l[0]=[e.createElementVNode("span",null,"Copyright © 2024 Xto Demo. All Rights Reserved.",-1)])])}const en=F(Qt,[["render",vt],["__scopeId","data-v-4852826a"]]),Q=(()=>{const t=Ke.create({baseURL:void 0,timeout:3e4,headers:{"Content-Type":"application/json"}});return t.interceptors.request.use(l=>{const o=G();return o&&(l.headers.Authorization=`Bearer ${o}`),l},l=>Promise.reject(l)),t.interceptors.response.use(l=>{const{data:o}=l;return o.code===200||o.code===0?o.data:(A.Message.error(o.message||"请求失败"),Promise.reject(new Error(o.message||"请求失败")))},l=>{var r;const{response:o}=l;if(o)switch(o.status){case 401:A.Message.error("登录已过期,请重新登录"),ce(),window.location.href="/login";break;case 403:A.Message.error("没有权限访问");break;case 404:A.Message.error("请求资源不存在");break;case 500:A.Message.error("服务器错误");break;default:A.Message.error(((r=o.data)==null?void 0:r.message)||"请求失败")}else A.Message.error("网络连接失败");return Promise.reject(l)}),t})(),T={get(t,l){return Q.get(t,l)},post(t,l,o){return Q.post(t,l,o)},put(t,l,o){return Q.put(t,l,o)},patch(t,l,o){return Q.patch(t,l,o)},delete(t,l){return Q.delete(t,l)}};function xe(t){return T.post("/user/user-service/login",t)}function tn(){return T.post("/user/user-service/logout")}function be(){return T.get("/user/user-service/info")}function nn(t){return T.post("/user/user-service/refresh",{refreshToken:t})}const on={class:"login"},ln={class:"login__container"},Ie=F(e.defineComponent({__name:"index",setup(t){const l=R.useRouter(),o=R.useRoute(),r=e.ref(!1),d=e.ref(!1),a=e.reactive({username:"admin",password:"123456"}),s={username:[{required:!0,message:"请输入用户名",trigger:"blur"}],password:[{required:!0,message:"请输入密码",trigger:"blur"},{min:6,message:"密码长度至少6位",trigger:"blur"}]},n=e.ref(),h=async()=>{var g;try{await((g=n.value)==null?void 0:g.validate()),r.value=!0;const m=await xe({username:a.username,password:a.password});de(m),A.Message.success("登录成功");const B=o.query.redirect||"/";l.push(B)}catch(m){console.error("登录失败:",m)}finally{r.value=!1}};return(g,m)=>(e.openBlock(),e.createElementBlock("div",on,[e.createElementVNode("div",ln,[m[5]||(m[5]=e.createElementVNode("div",{class:"login__header"},[e.createElementVNode("img",{src:ge,alt:"Logo",class:"login__logo"}),e.createElementVNode("h1",{class:"login__title"},"Xto Demo"),e.createElementVNode("p",{class:"login__subtitle"},"后台管理系统")],-1)),e.createVNode(e.unref(N.Form),{ref_key:"formRef",ref:n,model:a,rules:s,class:"login__form","label-width":"0"},{default:e.withCtx(()=>[e.createVNode(e.unref(N.FormItem),{prop:"username"},{default:e.withCtx(()=>[e.createVNode(e.unref(N.Input),{modelValue:a.username,"onUpdate:modelValue":m[0]||(m[0]=B=>a.username=B),placeholder:"用户名","prefix-icon":"👤",size:"large"},null,8,["modelValue"])]),_:1}),e.createVNode(e.unref(N.FormItem),{prop:"password"},{default:e.withCtx(()=>[e.createVNode(e.unref(N.Input),{modelValue:a.password,"onUpdate:modelValue":m[1]||(m[1]=B=>a.password=B),type:"password",placeholder:"密码","prefix-icon":"🔒",size:"large","show-password":"",onKeyup:e.withKeys(h,["enter"])},null,8,["modelValue"])]),_:1}),e.createVNode(e.unref(N.FormItem),null,{default:e.withCtx(()=>[e.createVNode(e.unref(N.Checkbox),{modelValue:d.value,"onUpdate:modelValue":m[2]||(m[2]=B=>d.value=B)},{default:e.withCtx(()=>[...m[3]||(m[3]=[e.createTextVNode("记住我",-1)])]),_:1},8,["modelValue"])]),_:1}),e.createVNode(e.unref(N.FormItem),null,{default:e.withCtx(()=>[e.createVNode(e.unref(y.Button),{type:"primary",size:"large",loading:r.value,class:"login__submit",onClick:h},{default:e.withCtx(()=>[...m[4]||(m[4]=[e.createTextVNode(" 登录 ",-1)])]),_:1},8,["loading"])]),_:1})]),_:1},8,["model"]),m[6]||(m[6]=e.createElementVNode("div",{class:"login__footer"},[e.createElementVNode("p",null,"默认账号: admin / 123456")],-1))])]))}}),[["__scopeId","data-v-c2cc908e"]]),an=Object.freeze(Object.defineProperty({__proto__:null,default:Ie},Symbol.toStringTag,{value:"Module"})),rn={class:"error-page"},sn={class:"error-page__content"},Te=F(e.defineComponent({__name:"404",setup(t){const l=R.useRouter(),o=()=>{l.push("/")};return(r,d)=>(e.openBlock(),e.createElementBlock("div",rn,[e.createElementVNode("div",sn,[d[1]||(d[1]=e.createElementVNode("div",{class:"error-page__code"},"404",-1)),d[2]||(d[2]=e.createElementVNode("div",{class:"error-page__title"},"页面不存在",-1)),d[3]||(d[3]=e.createElementVNode("div",{class:"error-page__desc"},"抱歉,您访问的页面不存在或已被删除",-1)),e.createVNode(e.unref(y.Button),{type:"primary",onClick:o},{default:e.withCtx(()=>[...d[0]||(d[0]=[e.createTextVNode("返回首页",-1)])]),_:1})])]))}}),[["__scopeId","data-v-c3c12c24"]]),dn=Object.freeze(Object.defineProperty({__proto__:null,default:Te},Symbol.toStringTag,{value:"Module"})),cn={class:"error-page"},mn={class:"error-page__content"},De=F(e.defineComponent({__name:"403",setup(t){const l=R.useRouter(),o=()=>{l.push("/")};return(r,d)=>(e.openBlock(),e.createElementBlock("div",cn,[e.createElementVNode("div",mn,[d[1]||(d[1]=e.createElementVNode("div",{class:"error-page__code"},"403",-1)),d[2]||(d[2]=e.createElementVNode("div",{class:"error-page__title"},"无访问权限",-1)),d[3]||(d[3]=e.createElementVNode("div",{class:"error-page__desc"},"抱歉,您没有权限访问此页面",-1)),e.createVNode(e.unref(y.Button),{type:"primary",onClick:o},{default:e.withCtx(()=>[...d[0]||(d[0]=[e.createTextVNode("返回首页",-1)])]),_:1})])]))}}),[["__scopeId","data-v-dd5f2795"]]),pn=Object.freeze(Object.defineProperty({__proto__:null,default:De},Symbol.toStringTag,{value:"Module"}));function un(){const t=q(),l=P(),o=te(),r=e.computed(()=>l.nickname||l.username||""),d=e.computed(()=>l.userInfo),a=e.computed(()=>t.appName),s=e.computed(()=>o.isLoggedIn),n=e.computed(()=>t.isDark),h=e.computed(()=>t.theme),g=e.computed(()=>t.isCollapsed),m=e.computed(()=>t.layout);return{userName:r,userInfo:d,appName:a,isLoggedIn:s,isDark:n,theme:h,isCollapsed:g,layout:m,toggleTheme:()=>{t.toggleTheme()},toggleCollapse:()=>{t.toggleCollapse()}}}function fn(){const t=P(),l=a=>{const s=t.permissions;return s.includes("*")?!0:Array.isArray(a)?a.some(n=>s.includes(n)):s.includes(a)},o=a=>{const s=t.roles;return s.includes("admin")?!0:Array.isArray(a)?a.some(n=>s.includes(n)):s.includes(a)},r=e.computed(()=>t.roles.includes("admin")),d=e.computed(()=>t.isLoggedIn);return{hasPermission:l,hasRole:o,isAdmin:r,isLoggedIn:d}}function hn(t,l={}){const{rules:o,onSubmit:r}=l,d=e.ref(),a=e.reactive({...t}),s=e.ref(!1),n=e.ref(!1),h=e.ref(!1),g=()=>{p(),h.value=!1,n.value=!0},m=S=>{Object.assign(a,S),h.value=!0,n.value=!0},B=()=>{n.value=!1,p()},p=()=>{var S;Object.keys(t).forEach(u=>{a[u]=t[u]}),(S=d.value)==null||S.resetFields()};return{formRef:d,formData:a,rules:o,loading:s,visible:n,isEdit:h,openAdd:g,openEdit:m,close:B,resetForm:p,handleSubmit:async()=>{var S;try{await((S=d.value)==null?void 0:S.validate()),s.value=!0,await(r==null?void 0:r(a)),B()}catch(u){console.error(u)}finally{s.value=!1}}}}function Vn(t){const{fetchData:l,defaultPageSize:o=10}=t,r=e.ref(!1),d=e.ref([]),a=e.ref(0),s=e.ref(1),n=e.ref(o),h=e.reactive({}),g=async()=>{r.value=!0;try{const f={...h,page:s.value,pageSize:n.value},b=await l(f);d.value=b.list,a.value=b.total}catch(f){console.error(f)}finally{r.value=!1}},m=()=>{s.value=1,g()},B=()=>{Object.keys(h).forEach(f=>{h[f]=void 0}),s.value=1,g()},p=f=>{s.value=f,g()},x=f=>{n.value=f,s.value=1,g()},S=()=>{g()},u=e.computed(()=>({current:s.value,pageSize:n.value,total:a.value}));return{loading:r,data:d,total:a,currentPage:s,pageSize:n,searchParams:h,pagination:u,getData:g,handleSearch:m,handleReset:B,handlePageChange:p,handleSizeChange:x,refresh:S}}function Nn(t){const o=P().permissions;return Array.isArray(t)?t.some(r=>o.includes(r)):o.includes(t)}function Le(t){const o=P().roles;return Array.isArray(t)?t.some(r=>o.includes(r)):o.includes(t)}function gn(){return Le("admin")}function _n(t,l={}){const o=l.indexPath||"/dashboard";return{path:"/",name:"Layout",component:pe,redirect:o,children:t}}function yn(t){return R.createRouter({history:R.createWebHistory(),routes:t,scrollBehavior:()=>({left:0,top:0})})}function En(t){return T.get("/role/list",{params:t})}function kn(t){return T.get(`/role/${t}`)}function Cn(t){return T.post("/role",t)}function wn(t,l){return T.put(`/role/${t}`,l)}function Sn(t){return T.delete(`/role/${t}`)}function Bn(t,l){return T.patch(`/role/${t}/status`,{status:l})}function xn(){return T.get("/user/user-service/menu/list")}function $e(){return T.get("/user/user-service/menu/tree")}function bn(t){return T.post("/menu",t)}function In(t,l){return T.put(`/menu/${t}`,l)}function Tn(t){return T.delete(`/menu/${t}`)}const Dn=["/login","/404","/403"];function Ln(t,l={}){const o=l.whiteList||Dn,r=l.loginPath||"/login",d=l.homePath||"/";t.beforeEach(async(a,s,n)=>{const h=q(),g=P(),m=J();if(h.initTheme(),G())if(a.path===r)n({path:d});else if(g.isLoggedIn)a.name&&a.meta.keepAlive&&h.addCachedView(a.name),n();else try{if(l.fetchUserInfo){const p=await l.fetchUserInfo();g.setUserInfo(p)}else{const p=await be();g.setUserInfo(p)}if(l.fetchMenu){const p=await l.fetchMenu();m.setMenuList(p)}else{const p=await $e();m.setMenuList(p)}l.onLoginSuccess&&l.onLoginSuccess(),a.name&&a.meta.keepAlive&&h.addCachedView(a.name),n({...a,replace:!0})}catch(p){console.error("获取用户信息失败:",p),g.clearUserInfo(),m.clearMenu(),localStorage.removeItem("token"),localStorage.removeItem("refreshToken"),n({path:r,query:{redirect:a.fullPath}})}else o.includes(a.path)?n():n({path:r,query:{redirect:a.fullPath}})}),t.afterEach(()=>{})}function $n(t){return T.get("/user/list",{params:t})}function An(t){return T.get(`/user/${t}`)}function Un(t){return T.post("/user",t)}function Mn(t,l){return T.put(`/user/${t}`,l)}function Rn(t){return T.delete(`/user/${t}`)}function zn(t){return T.post("/user/batch-delete",{ids:t})}function Fn(t,l){return T.patch(`/user/${t}/status`,{status:l})}function Pn(t){return T.post(`/user/${t}/reset-password`)}var w=(t=>(t[t.ENABLED=1]="ENABLED",t[t.DISABLED=0]="DISABLED",t))(w||{}),Ae=(t=>(t[t.UNKNOWN=0]="UNKNOWN",t[t.MALE=1]="MALE",t[t.FEMALE=2]="FEMALE",t))(Ae||{}),M=(t=>(t[t.DIRECTORY=0]="DIRECTORY",t[t.MENU=1]="MENU",t[t.BUTTON=2]="BUTTON",t))(M||{});const On={1:"启用",0:"禁用"},jn={0:"未知",1:"男",2:"女"},qn={0:"目录",1:"菜单",2:"按钮"},ue=[{label:"启用",value:1},{label:"禁用",value:0}],Kn=[{label:"未知",value:0},{label:"男",value:1},{label:"女",value:2}],Ue=[{label:"目录",value:0},{label:"菜单",value:1},{label:"按钮",value:2}],Yn={mounted(t,l){var s;const o=P(),{value:r}=l;if(!r)return;const d=o.permissions;let a=!1;Array.isArray(r)?a=r.some(n=>d.includes(n)||d.includes("*")):a=d.includes(r)||d.includes("*"),a||(s=t.parentNode)==null||s.removeChild(t)}},Hn={class:"dashboard"},Wn={class:"dashboard__stats"},Xn={class:"stat-card__content"},Gn={class:"stat-card__info"},Jn={class:"stat-card__title"},Qn={class:"dashboard__main"},Zn={class:"quick-links"},vn={class:"quick-link__icon"},eo={class:"quick-link__title"},to={class:"activity-list"},no={class:"activity-item__action"},oo={class:"activity-item__time"},lo={class:"system-info"},ao={class:"system-info__item"},ro={class:"system-info__item"},Me=Object.freeze(Object.defineProperty({__proto__:null,default:F(e.defineComponent({__name:"index",setup(t){const l=e.ref([{title:"用户总数",value:1234,icon:"👥",color:"#409eff"},{title:"今日访问",value:567,icon:"👀",color:"#67c23a"},{title:"订单数量",value:890,icon:"📦",color:"#e6a23c"},{title:"销售金额",value:123456,icon:"💰",color:"#f56c6c"}]),o=e.ref([{user:"张三",action:"登录系统",time:"2分钟前",type:"success"},{user:"李四",action:"修改了用户信息",time:"5分钟前",type:"warning"},{user:"王五",action:"创建了新订单",time:"10分钟前",type:"info"},{user:"赵六",action:"删除了测试数据",time:"30分钟前",type:"danger"},{user:"钱七",action:"更新了系统配置",time:"1小时前",type:"primary"}]),r=e.ref([{title:"用户管理",path:"/system/user",icon:"👤"},{title:"角色管理",path:"/system/role",icon:"👥"},{title:"菜单管理",path:"/system/menu",icon:"📋"},{title:"系统设置",path:"/system",icon:"⚙️"}]);return(d,a)=>{const s=e.resolveComponent("router-link");return e.openBlock(),e.createElementBlock("div",Hn,[e.createElementVNode("div",Wn,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(l.value,n=>(e.openBlock(),e.createBlock(e.unref(L.Card),{key:n.title,class:"stat-card"},{default:e.withCtx(()=>[e.createElementVNode("div",Xn,[e.createElementVNode("div",{class:"stat-card__icon",style:e.normalizeStyle({backgroundColor:n.color+"20"})},e.toDisplayString(n.icon),5),e.createElementVNode("div",Gn,[e.createElementVNode("div",Jn,e.toDisplayString(n.title),1),e.createElementVNode("div",{class:"stat-card__value",style:e.normalizeStyle({color:n.color})},e.toDisplayString(n.value.toLocaleString()),5)])])]),_:2},1024))),128))]),e.createElementVNode("div",Qn,[e.createVNode(e.unref(L.Card),{class:"dashboard__quick"},{header:e.withCtx(()=>[...a[0]||(a[0]=[e.createElementVNode("span",{class:"card-title"},"快捷入口",-1)])]),default:e.withCtx(()=>[e.createElementVNode("div",Zn,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(r.value,n=>(e.openBlock(),e.createBlock(s,{key:n.path,to:n.path,class:"quick-link"},{default:e.withCtx(()=>[e.createElementVNode("span",vn,e.toDisplayString(n.icon),1),e.createElementVNode("span",eo,e.toDisplayString(n.title),1)]),_:2},1032,["to"]))),128))])]),_:1}),e.createVNode(e.unref(L.Card),{class:"dashboard__activity"},{header:e.withCtx(()=>[...a[1]||(a[1]=[e.createElementVNode("span",{class:"card-title"},"最近活动",-1)])]),default:e.withCtx(()=>[e.createElementVNode("div",to,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.value,(n,h)=>(e.openBlock(),e.createElementBlock("div",{key:h,class:"activity-item"},[e.createVNode(e.unref(L.Tag),{type:n.type,size:"small"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(n.user),1)]),_:2},1032,["type"]),e.createElementVNode("span",no,e.toDisplayString(n.action),1),e.createElementVNode("span",oo,e.toDisplayString(n.time),1)]))),128))])]),_:1})]),e.createVNode(e.unref(L.Card),{class:"dashboard__system"},{header:e.withCtx(()=>[...a[2]||(a[2]=[e.createElementVNode("span",{class:"card-title"},"系统信息",-1)])]),default:e.withCtx(()=>[e.createElementVNode("div",lo,[a[5]||(a[5]=e.createElementVNode("div",{class:"system-info__item"},[e.createElementVNode("span",{class:"system-info__label"},"系统版本"),e.createElementVNode("span",{class:"system-info__value"},"v1.0.0")],-1)),a[6]||(a[6]=e.createElementVNode("div",{class:"system-info__item"},[e.createElementVNode("span",{class:"system-info__label"},"Vue 版本"),e.createElementVNode("span",{class:"system-info__value"},"3.4.21")],-1)),a[7]||(a[7]=e.createElementVNode("div",{class:"system-info__item"},[e.createElementVNode("span",{class:"system-info__label"},"构建工具"),e.createElementVNode("span",{class:"system-info__value"},"Vite 5")],-1)),a[8]||(a[8]=e.createElementVNode("div",{class:"system-info__item"},[e.createElementVNode("span",{class:"system-info__label"},"UI 组件库"),e.createElementVNode("span",{class:"system-info__value"},"xto")],-1)),e.createElementVNode("div",ao,[a[3]||(a[3]=e.createElementVNode("span",{class:"system-info__label"},"服务器状态",-1)),e.createVNode(e.unref(L.Progress),{percentage:75,status:"success"})]),e.createElementVNode("div",ro,[a[4]||(a[4]=e.createElementVNode("span",{class:"system-info__label"},"内存使用",-1)),e.createVNode(e.unref(L.Progress),{percentage:45})])])]),_:1})])}}}),[["__scopeId","data-v-44648cb1"]])},Symbol.toStringTag,{value:"Module"})),so={class:"user-page"},io={class:"toolbar"},co={class:"data-table"},mo={key:0},po={key:1},uo={class:"pagination-wrapper"},Re=Object.freeze(Object.defineProperty({__proto__:null,default:F(e.defineComponent({__name:"index",setup(t){const l=[{id:1,username:"admin",nickname:"管理员",email:"admin@example.com",phone:"13800138001",status:w.ENABLED,roles:["admin"],createTime:"2024-01-01 10:00:00"},{id:2,username:"zhangsan",nickname:"张三",email:"zhangsan@example.com",phone:"13800138002",status:w.ENABLED,roles:["editor"],createTime:"2024-01-02 10:00:00"},{id:3,username:"lisi",nickname:"李四",email:"lisi@example.com",phone:"13800138003",status:w.DISABLED,roles:["viewer"],createTime:"2024-01-03 10:00:00"},{id:4,username:"wangwu",nickname:"王五",email:"wangwu@example.com",phone:"13800138004",status:w.ENABLED,roles:["editor"],createTime:"2024-01-04 10:00:00"},{id:5,username:"zhaoliu",nickname:"赵六",email:"zhaoliu@example.com",phone:"13800138005",status:w.ENABLED,roles:["viewer"],createTime:"2024-01-05 10:00:00"}],o=e.ref(!1),r=e.ref([]),d=e.ref(0),a=e.ref(1),s=e.ref(10),n=e.reactive({keyword:"",status:void 0}),h=e.ref(!1),g=e.computed(()=>m.id?"编辑用户":"新增用户"),m=e.reactive({id:0,username:"",nickname:"",email:"",phone:"",status:w.ENABLED,roles:[]}),B={username:[{required:!0,message:"请输入用户名",trigger:"blur"}],nickname:[{required:!0,message:"请输入昵称",trigger:"blur"}],email:[{required:!0,message:"请输入邮箱",trigger:"blur"},{type:"email",message:"请输入正确的邮箱格式",trigger:"blur"}]},p=e.ref(),x=()=>{o.value=!0,setTimeout(()=>{let V=[...l];n.keyword&&(V=V.filter(c=>c.username.includes(n.keyword)||c.nickname.includes(n.keyword))),n.status!==void 0&&(V=V.filter(c=>c.status===n.status)),d.value=V.length,r.value=V.slice((a.value-1)*s.value,a.value*s.value),o.value=!1},300)},S=()=>{a.value=1,x()},u=()=>{n.keyword="",n.status=void 0,a.value=1,x()},f=()=>{Object.assign(m,{id:0,username:"",nickname:"",email:"",phone:"",status:w.ENABLED,roles:[]}),h.value=!0},b=V=>{Object.assign(m,V),h.value=!0},$=V=>{A.Message.success("删除成功"),x()},z=async()=>{var V;try{await((V=p.value)==null?void 0:V.validate()),A.Message.success(m.id?"编辑成功":"新增成功"),h.value=!1,x()}catch(c){console.error(c)}},U=V=>{A.Message.success(`已${V.status===w.ENABLED?"启用":"禁用"}用户 ${V.username}`)};return e.onMounted(()=>{x()}),(V,c)=>(e.openBlock(),e.createElementBlock("div",so,[e.createVNode(e.unref(L.Card),{class:"search-card"},{default:e.withCtx(()=>[e.createVNode(e.unref(N.Form),{model:n,inline:""},{default:e.withCtx(()=>[e.createVNode(e.unref(N.FormItem),{label:"关键词"},{default:e.withCtx(()=>[e.createVNode(e.unref(N.Input),{modelValue:n.keyword,"onUpdate:modelValue":c[0]||(c[0]=k=>n.keyword=k),placeholder:"用户名/昵称",clearable:"",onKeyup:e.withKeys(S,["enter"])},null,8,["modelValue"])]),_:1}),e.createVNode(e.unref(N.FormItem),{label:"状态"},{default:e.withCtx(()=>[e.createVNode(e.unref(N.Select),{modelValue:n.status,"onUpdate:modelValue":c[1]||(c[1]=k=>n.status=k),options:e.unref(ue),placeholder:"请选择",clearable:""},null,8,["modelValue","options"])]),_:1}),e.createVNode(e.unref(N.FormItem),null,{default:e.withCtx(()=>[e.createVNode(e.unref(y.Space),null,{default:e.withCtx(()=>[e.createVNode(e.unref(y.Button),{type:"primary",onClick:S},{default:e.withCtx(()=>[...c[11]||(c[11]=[e.createTextVNode("搜索",-1)])]),_:1}),e.createVNode(e.unref(y.Button),{onClick:u},{default:e.withCtx(()=>[...c[12]||(c[12]=[e.createTextVNode("重置",-1)])]),_:1})]),_:1})]),_:1})]),_:1},8,["model"])]),_:1}),e.createVNode(e.unref(L.Card),{class:"table-card"},{default:e.withCtx(()=>[e.createElementVNode("div",io,[e.createVNode(e.unref(y.Button),{type:"primary",onClick:f},{default:e.withCtx(()=>[...c[13]||(c[13]=[e.createTextVNode("新增用户",-1)])]),_:1})]),e.createElementVNode("table",co,[c[18]||(c[18]=e.createElementVNode("thead",null,[e.createElementVNode("tr",null,[e.createElementVNode("th",null,"ID"),e.createElementVNode("th",null,"用户名"),e.createElementVNode("th",null,"昵称"),e.createElementVNode("th",null,"邮箱"),e.createElementVNode("th",null,"手机号"),e.createElementVNode("th",null,"角色"),e.createElementVNode("th",null,"状态"),e.createElementVNode("th",null,"创建时间"),e.createElementVNode("th",null,"操作")])],-1)),e.createElementVNode("tbody",null,[o.value?(e.openBlock(),e.createElementBlock("tr",mo,[...c[14]||(c[14]=[e.createElementVNode("td",{colspan:"9",class:"loading-cell"},"加载中...",-1)])])):r.value.length===0?(e.openBlock(),e.createElementBlock("tr",po,[...c[15]||(c[15]=[e.createElementVNode("td",{colspan:"9",class:"empty-cell"},"暂无数据",-1)])])):(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:2},e.renderList(r.value,k=>(e.openBlock(),e.createElementBlock("tr",{key:k.id},[e.createElementVNode("td",null,e.toDisplayString(k.id),1),e.createElementVNode("td",null,e.toDisplayString(k.username),1),e.createElementVNode("td",null,e.toDisplayString(k.nickname),1),e.createElementVNode("td",null,e.toDisplayString(k.email),1),e.createElementVNode("td",null,e.toDisplayString(k.phone),1),e.createElementVNode("td",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(k.roles,O=>(e.openBlock(),e.createBlock(e.unref(L.Tag),{key:O,size:"small"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(O),1)]),_:2},1024))),128))]),e.createElementVNode("td",null,[e.createVNode(e.unref(N.Switch),{"model-value":k.status===e.unref(w).ENABLED,"onUpdate:modelValue":O=>{k.status=O?e.unref(w).ENABLED:e.unref(w).DISABLED,U(k)}},null,8,["model-value","onUpdate:modelValue"])]),e.createElementVNode("td",null,e.toDisplayString(k.createTime),1),e.createElementVNode("td",null,[e.createVNode(e.unref(y.Space),null,{default:e.withCtx(()=>[e.createVNode(e.unref(y.Button),{type:"primary",link:"",size:"small",onClick:O=>b(k)},{default:e.withCtx(()=>[...c[16]||(c[16]=[e.createTextVNode("编辑",-1)])]),_:1},8,["onClick"]),e.createVNode(e.unref(A.Popconfirm),{title:"确定删除该用户吗?",onConfirm:O=>$(k.id)},{default:e.withCtx(()=>[e.createVNode(e.unref(y.Button),{type:"danger",link:"",size:"small"},{default:e.withCtx(()=>[...c[17]||(c[17]=[e.createTextVNode("删除",-1)])]),_:1})]),_:1},8,["onConfirm"])]),_:2},1024)])]))),128))])]),e.createElementVNode("div",uo,[e.createVNode(e.unref(L.Pagination),{"current-page":a.value,"onUpdate:currentPage":c[2]||(c[2]=k=>a.value=k),"page-size":s.value,"onUpdate:pageSize":c[3]||(c[3]=k=>s.value=k),total:d.value,"page-sizes":[10,20,50,100],layout:"total, sizes, prev, pager, next",onCurrentChange:x,onSizeChange:x},null,8,["current-page","page-size","total"])])]),_:1}),e.createVNode(e.unref(A.Modal),{modelValue:h.value,"onUpdate:modelValue":c[10]||(c[10]=k=>h.value=k),title:g.value,width:"500px"},{footer:e.withCtx(()=>[e.createVNode(e.unref(y.Space),null,{default:e.withCtx(()=>[e.createVNode(e.unref(y.Button),{onClick:c[9]||(c[9]=k=>h.value=!1)},{default:e.withCtx(()=>[...c[19]||(c[19]=[e.createTextVNode("取消",-1)])]),_:1}),e.createVNode(e.unref(y.Button),{type:"primary",onClick:z},{default:e.withCtx(()=>[...c[20]||(c[20]=[e.createTextVNode("确定",-1)])]),_:1})]),_:1})]),default:e.withCtx(()=>[e.createVNode(e.unref(N.Form),{ref_key:"formRef",ref:p,model:m,rules:B,"label-width":"80px"},{default:e.withCtx(()=>[e.createVNode(e.unref(N.FormItem),{label:"用户名",prop:"username"},{default:e.withCtx(()=>[e.createVNode(e.unref(N.Input),{modelValue:m.username,"onUpdate:modelValue":c[4]||(c[4]=k=>m.username=k),placeholder:"请输入用户名"},null,8,["modelValue"])]),_:1}),e.createVNode(e.unref(N.FormItem),{label:"昵称",prop:"nickname"},{default:e.withCtx(()=>[e.createVNode(e.unref(N.Input),{modelValue:m.nickname,"onUpdate:modelValue":c[5]||(c[5]=k=>m.nickname=k),placeholder:"请输入昵称"},null,8,["modelValue"])]),_:1}),e.createVNode(e.unref(N.FormItem),{label:"邮箱",prop:"email"},{default:e.withCtx(()=>[e.createVNode(e.unref(N.Input),{modelValue:m.email,"onUpdate:modelValue":c[6]||(c[6]=k=>m.email=k),placeholder:"请输入邮箱"},null,8,["modelValue"])]),_:1}),e.createVNode(e.unref(N.FormItem),{label:"手机号",prop:"phone"},{default:e.withCtx(()=>[e.createVNode(e.unref(N.Input),{modelValue:m.phone,"onUpdate:modelValue":c[7]||(c[7]=k=>m.phone=k),placeholder:"请输入手机号"},null,8,["modelValue"])]),_:1}),e.createVNode(e.unref(N.FormItem),{label:"状态"},{default:e.withCtx(()=>[e.createVNode(e.unref(N.Switch),{modelValue:m.status,"onUpdate:modelValue":c[8]||(c[8]=k=>m.status=k),"active-value":e.unref(w).ENABLED,"inactive-value":e.unref(w).DISABLED},null,8,["modelValue","active-value","inactive-value"])]),_:1})]),_:1},8,["model"])]),_:1},8,["modelValue","title"])]))}}),[["__scopeId","data-v-d2491ae0"]])},Symbol.toStringTag,{value:"Module"})),fo={class:"role-page"},ho={class:"toolbar"},Vo={class:"data-table"},No={key:0},go={key:1},_o={class:"pagination-wrapper"},ze=Object.freeze(Object.defineProperty({__proto__:null,default:F(e.defineComponent({__name:"index",setup(t){const l=[{id:1,name:"超级管理员",code:"admin",description:"拥有所有权限",status:w.ENABLED,permissions:["*"],createTime:"2024-01-01 10:00:00"},{id:2,name:"编辑",code:"editor",description:"内容编辑权限",status:w.ENABLED,permissions:["user:read","user:write"],createTime:"2024-01-02 10:00:00"},{id:3,name:"访客",code:"viewer",description:"只读权限",status:w.ENABLED,permissions:["user:read"],createTime:"2024-01-03 10:00:00"}],o=e.ref(!1),r=e.ref([]),d=e.ref(0),a=e.ref(1),s=e.ref(10),n=e.reactive({keyword:"",status:void 0}),h=e.ref(!1),g=e.computed(()=>m.id?"编辑角色":"新增角色"),m=e.reactive({id:0,name:"",code:"",description:"",status:w.ENABLED,permissions:[]}),B={name:[{required:!0,message:"请输入角色名称",trigger:"blur"}],code:[{required:!0,message:"请输入角色编码",trigger:"blur"}]},p=e.ref(),x=()=>{o.value=!0,setTimeout(()=>{let U=[...l];n.keyword&&(U=U.filter(V=>V.name.includes(n.keyword)||V.code.includes(n.keyword))),n.status!==void 0&&(U=U.filter(V=>V.status===n.status)),d.value=U.length,r.value=U.slice((a.value-1)*s.value,a.value*s.value),o.value=!1},300)},S=()=>{a.value=1,x()},u=()=>{n.keyword="",n.status=void 0,a.value=1,x()},f=()=>{Object.assign(m,{id:0,name:"",code:"",description:"",status:w.ENABLED,permissions:[]}),h.value=!0},b=U=>{Object.assign(m,U),h.value=!0},$=U=>{A.Message.success("删除成功"),x()},z=async()=>{var U;try{await((U=p.value)==null?void 0:U.validate()),A.Message.success(m.id?"编辑成功":"新增成功"),h.value=!1,x()}catch(V){console.error(V)}};return e.onMounted(()=>{x()}),(U,V)=>(e.openBlock(),e.createElementBlock("div",fo,[e.createVNode(e.unref(L.Card),{class:"search-card"},{default:e.withCtx(()=>[e.createVNode(e.unref(N.Form),{model:n,inline:""},{default:e.withCtx(()=>[e.createVNode(e.unref(N.FormItem),{label:"关键词"},{default:e.withCtx(()=>[e.createVNode(e.unref(N.Input),{modelValue:n.keyword,"onUpdate:modelValue":V[0]||(V[0]=c=>n.keyword=c),placeholder:"角色名称/编码",clearable:"",onKeyup:e.withKeys(S,["enter"])},null,8,["modelValue"])]),_:1}),e.createVNode(e.unref(N.FormItem),{label:"状态"},{default:e.withCtx(()=>[e.createVNode(e.unref(N.Select),{modelValue:n.status,"onUpdate:modelValue":V[1]||(V[1]=c=>n.status=c),options:e.unref(ue),placeholder:"请选择",clearable:""},null,8,["modelValue","options"])]),_:1}),e.createVNode(e.unref(N.FormItem),null,{default:e.withCtx(()=>[e.createVNode(e.unref(y.Space),null,{default:e.withCtx(()=>[e.createVNode(e.unref(y.Button),{type:"primary",onClick:S},{default:e.withCtx(()=>[...V[10]||(V[10]=[e.createTextVNode("搜索",-1)])]),_:1}),e.createVNode(e.unref(y.Button),{onClick:u},{default:e.withCtx(()=>[...V[11]||(V[11]=[e.createTextVNode("重置",-1)])]),_:1})]),_:1})]),_:1})]),_:1},8,["model"])]),_:1}),e.createVNode(e.unref(L.Card),{class:"table-card"},{default:e.withCtx(()=>[e.createElementVNode("div",ho,[e.createVNode(e.unref(y.Button),{type:"primary",onClick:f},{default:e.withCtx(()=>[...V[12]||(V[12]=[e.createTextVNode("新增角色",-1)])]),_:1})]),e.createElementVNode("table",Vo,[V[17]||(V[17]=e.createElementVNode("thead",null,[e.createElementVNode("tr",null,[e.createElementVNode("th",null,"ID"),e.createElementVNode("th",null,"角色名称"),e.createElementVNode("th",null,"角色编码"),e.createElementVNode("th",null,"描述"),e.createElementVNode("th",null,"状态"),e.createElementVNode("th",null,"创建时间"),e.createElementVNode("th",null,"操作")])],-1)),e.createElementVNode("tbody",null,[o.value?(e.openBlock(),e.createElementBlock("tr",No,[...V[13]||(V[13]=[e.createElementVNode("td",{colspan:"7",class:"loading-cell"},"加载中...",-1)])])):r.value.length===0?(e.openBlock(),e.createElementBlock("tr",go,[...V[14]||(V[14]=[e.createElementVNode("td",{colspan:"7",class:"empty-cell"},"暂无数据",-1)])])):(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:2},e.renderList(r.value,c=>(e.openBlock(),e.createElementBlock("tr",{key:c.id},[e.createElementVNode("td",null,e.toDisplayString(c.id),1),e.createElementVNode("td",null,e.toDisplayString(c.name),1),e.createElementVNode("td",null,[e.createVNode(e.unref(L.Tag),{type:"primary",size:"small"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(c.code),1)]),_:2},1024)]),e.createElementVNode("td",null,e.toDisplayString(c.description),1),e.createElementVNode("td",null,[e.createVNode(e.unref(L.Tag),{type:c.status===e.unref(w).ENABLED?"success":"danger",size:"small"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(c.status===e.unref(w).ENABLED?"启用":"禁用"),1)]),_:2},1032,["type"])]),e.createElementVNode("td",null,e.toDisplayString(c.createTime),1),e.createElementVNode("td",null,[e.createVNode(e.unref(y.Space),null,{default:e.withCtx(()=>[e.createVNode(e.unref(y.Button),{type:"primary",link:"",size:"small",onClick:k=>b(c)},{default:e.withCtx(()=>[...V[15]||(V[15]=[e.createTextVNode("编辑",-1)])]),_:1},8,["onClick"]),e.createVNode(e.unref(A.Popconfirm),{title:"确定删除该角色吗?",onConfirm:k=>$(c.id)},{default:e.withCtx(()=>[e.createVNode(e.unref(y.Button),{type:"danger",link:"",size:"small"},{default:e.withCtx(()=>[...V[16]||(V[16]=[e.createTextVNode("删除",-1)])]),_:1})]),_:1},8,["onConfirm"])]),_:2},1024)])]))),128))])]),e.createElementVNode("div",_o,[e.createVNode(e.unref(L.Pagination),{"current-page":a.value,"onUpdate:currentPage":V[2]||(V[2]=c=>a.value=c),"page-size":s.value,"onUpdate:pageSize":V[3]||(V[3]=c=>s.value=c),total:d.value,"page-sizes":[10,20,50,100],layout:"total, sizes, prev, pager, next",onCurrentChange:x,onSizeChange:x},null,8,["current-page","page-size","total"])])]),_:1}),e.createVNode(e.unref(A.Modal),{modelValue:h.value,"onUpdate:modelValue":V[9]||(V[9]=c=>h.value=c),title:g.value,width:"500px"},{footer:e.withCtx(()=>[e.createVNode(e.unref(y.Space),null,{default:e.withCtx(()=>[e.createVNode(e.unref(y.Button),{onClick:V[8]||(V[8]=c=>h.value=!1)},{default:e.withCtx(()=>[...V[18]||(V[18]=[e.createTextVNode("取消",-1)])]),_:1}),e.createVNode(e.unref(y.Button),{type:"primary",onClick:z},{default:e.withCtx(()=>[...V[19]||(V[19]=[e.createTextVNode("确定",-1)])]),_:1})]),_:1})]),default:e.withCtx(()=>[e.createVNode(e.unref(N.Form),{ref_key:"formRef",ref:p,model:m,rules:B,"label-width":"80px"},{default:e.withCtx(()=>[e.createVNode(e.unref(N.FormItem),{label:"角色名称",prop:"name"},{default:e.withCtx(()=>[e.createVNode(e.unref(N.Input),{modelValue:m.name,"onUpdate:modelValue":V[4]||(V[4]=c=>m.name=c),placeholder:"请输入角色名称"},null,8,["modelValue"])]),_:1}),e.createVNode(e.unref(N.FormItem),{label:"角色编码",prop:"code"},{default:e.withCtx(()=>[e.createVNode(e.unref(N.Input),{modelValue:m.code,"onUpdate:modelValue":V[5]||(V[5]=c=>m.code=c),placeholder:"请输入角色编码"},null,8,["modelValue"])]),_:1}),e.createVNode(e.unref(N.FormItem),{label:"描述"},{default:e.withCtx(()=>[e.createVNode(e.unref(N.Input),{modelValue:m.description,"onUpdate:modelValue":V[6]||(V[6]=c=>m.description=c),placeholder:"请输入描述"},null,8,["modelValue"])]),_:1}),e.createVNode(e.unref(N.FormItem),{label:"状态"},{default:e.withCtx(()=>[e.createVNode(e.unref(N.Switch),{modelValue:m.status,"onUpdate:modelValue":V[7]||(V[7]=c=>m.status=c),"active-value":e.unref(w).ENABLED,"inactive-value":e.unref(w).DISABLED},null,8,["modelValue","active-value","inactive-value"])]),_:1})]),_:1},8,["model"])]),_:1},8,["modelValue","title"])]))}}),[["__scopeId","data-v-8ad30bc6"]])},Symbol.toStringTag,{value:"Module"})),yo={class:"menu-page"},Eo={class:"toolbar"},ko={class:"menu-tree"},Co={class:"tree-table"},wo={class:"tree-row tree-row--level-0"},So=["onClick"],Bo=["onClick"],Fe=Object.freeze(Object.defineProperty({__proto__:null,default:F(e.defineComponent({__name:"index",setup(t){const l=[{id:1,parentId:null,name:"Dashboard",path:"/dashboard",component:"dashboard/index",redirect:"",icon:"dashboard",title:"仪表盘",type:M.MENU,sort:1,status:w.ENABLED,hidden:!1,keepAlive:!0},{id:2,parentId:null,name:"System",path:"/system",component:"",redirect:"/system/user",icon:"setting",title:"系统管理",type:M.DIRECTORY,sort:2,status:w.ENABLED,hidden:!1,keepAlive:!1,children:[{id:21,parentId:2,name:"SystemUser",path:"/system/user",component:"system/user/index",redirect:"",icon:"user",title:"用户管理",type:M.MENU,sort:1,status:w.ENABLED,hidden:!1,keepAlive:!0},{id:22,parentId:2,name:"SystemRole",path:"/system/role",component:"system/role/index",redirect:"",icon:"role",title:"角色管理",type:M.MENU,sort:2,status:w.ENABLED,hidden:!1,keepAlive:!0},{id:23,parentId:2,name:"SystemMenu",path:"/system/menu",component:"system/menu/index",redirect:"",icon:"menu",title:"菜单管理",type:M.MENU,sort:3,status:w.ENABLED,hidden:!1,keepAlive:!0}]}],o=e.ref(!1),r=e.ref([]),d=e.ref(!1),a=e.computed(()=>s.id?"编辑菜单":"新增菜单"),s=e.reactive({id:0,parentId:null,name:"",path:"",component:"",redirect:"",icon:"",title:"",type:M.MENU,sort:0,status:w.ENABLED,hidden:!1,keepAlive:!0}),n={name:[{required:!0,message:"请输入菜单名称",trigger:"blur"}],path:[{required:!0,message:"请输入路由路径",trigger:"blur"}],title:[{required:!0,message:"请输入菜单标题",trigger:"blur"}]},h=e.ref(),g=()=>{o.value=!0,setTimeout(()=>{r.value=l,o.value=!1},300)},m=(S=null)=>{Object.assign(s,{id:0,parentId:S,name:"",path:"",component:"",redirect:"",icon:"",title:"",type:M.MENU,sort:0,status:w.ENABLED,hidden:!1,keepAlive:!0}),d.value=!0},B=S=>{Object.assign(s,S),d.value=!0},p=async()=>{var S;try{await((S=h.value)==null?void 0:S.validate()),A.Message.success(s.id?"编辑成功":"新增成功"),d.value=!1,g()}catch(u){console.error(u)}},x=S=>({dashboard:"📊",system:"⚙️",user:"👤",role:"👥",menu:"📋",setting:"🔧"})[S||""]||"📄";return e.onMounted(()=>{g()}),(S,u)=>(e.openBlock(),e.createElementBlock("div",yo,[e.createVNode(e.unref(L.Card),{class:"menu-card"},{default:e.withCtx(()=>[e.createElementVNode("div",Eo,[e.createVNode(e.unref(y.Button),{type:"primary",onClick:u[0]||(u[0]=f=>m())},{default:e.withCtx(()=>[...u[14]||(u[14]=[e.createTextVNode("新增菜单",-1)])]),_:1})]),e.createElementVNode("div",ko,[e.createElementVNode("table",Co,[u[19]||(u[19]=e.createElementVNode("thead",null,[e.createElementVNode("tr",null,[e.createElementVNode("th",null,"菜单名称"),e.createElementVNode("th",null,"图标"),e.createElementVNode("th",null,"路由路径"),e.createElementVNode("th",null,"类型"),e.createElementVNode("th",null,"排序"),e.createElementVNode("th",null,"状态"),e.createElementVNode("th",null,"操作")])],-1)),e.createElementVNode("tbody",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(r.value,f=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:f.id},[e.createElementVNode("tr",wo,[e.createElementVNode("td",null,[e.createElementVNode("span",{class:"menu-name",onClick:b=>B(f)},e.toDisplayString(f.title),9,So)]),e.createElementVNode("td",null,e.toDisplayString(x(f.icon)),1),e.createElementVNode("td",null,e.toDisplayString(f.path),1),e.createElementVNode("td",null,[e.createVNode(e.unref(L.Tag),{type:f.type===e.unref(M).DIRECTORY?"primary":f.type===e.unref(M).MENU?"success":"warning",size:"small"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(f.type===e.unref(M).DIRECTORY?"目录":f.type===e.unref(M).MENU?"菜单":"按钮"),1)]),_:2},1032,["type"])]),e.createElementVNode("td",null,e.toDisplayString(f.sort),1),e.createElementVNode("td",null,[e.createVNode(e.unref(L.Tag),{type:f.status===e.unref(w).ENABLED?"success":"danger",size:"small"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(f.status===e.unref(w).ENABLED?"启用":"禁用"),1)]),_:2},1032,["type"])]),e.createElementVNode("td",null,[e.createVNode(e.unref(y.Space),null,{default:e.withCtx(()=>[e.createVNode(e.unref(y.Button),{type:"primary",link:"",size:"small",onClick:b=>m(f.id)},{default:e.withCtx(()=>[...u[15]||(u[15]=[e.createTextVNode("新增",-1)])]),_:1},8,["onClick"]),e.createVNode(e.unref(y.Button),{type:"primary",link:"",size:"small",onClick:b=>B(f)},{default:e.withCtx(()=>[...u[16]||(u[16]=[e.createTextVNode("编辑",-1)])]),_:1},8,["onClick"])]),_:2},1024)])]),f.children?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:0},e.renderList(f.children,b=>(e.openBlock(),e.createElementBlock("tr",{key:b.id,class:"tree-row tree-row--level-1"},[e.createElementVNode("td",null,[u[17]||(u[17]=e.createElementVNode("span",{class:"tree-indent"},null,-1)),e.createElementVNode("span",{class:"menu-name",onClick:$=>B(b)},e.toDisplayString(b.title),9,Bo)]),e.createElementVNode("td",null,e.toDisplayString(x(b.icon)),1),e.createElementVNode("td",null,e.toDisplayString(b.path),1),e.createElementVNode("td",null,[e.createVNode(e.unref(L.Tag),{type:b.type===e.unref(M).DIRECTORY?"primary":b.type===e.unref(M).MENU?"success":"warning",size:"small"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(b.type===e.unref(M).DIRECTORY?"目录":b.type===e.unref(M).MENU?"菜单":"按钮"),1)]),_:2},1032,["type"])]),e.createElementVNode("td",null,e.toDisplayString(b.sort),1),e.createElementVNode("td",null,[e.createVNode(e.unref(L.Tag),{type:b.status===e.unref(w).ENABLED?"success":"danger",size:"small"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(b.status===e.unref(w).ENABLED?"启用":"禁用"),1)]),_:2},1032,["type"])]),e.createElementVNode("td",null,[e.createVNode(e.unref(y.Space),null,{default:e.withCtx(()=>[e.createVNode(e.unref(y.Button),{type:"primary",link:"",size:"small",onClick:$=>B(b)},{default:e.withCtx(()=>[...u[18]||(u[18]=[e.createTextVNode("编辑",-1)])]),_:1},8,["onClick"])]),_:2},1024)])]))),128)):e.createCommentVNode("",!0)],64))),128))])])])]),_:1}),e.createVNode(e.unref(A.Modal),{modelValue:d.value,"onUpdate:modelValue":u[13]||(u[13]=f=>d.value=f),title:a.value,width:"600px"},{footer:e.withCtx(()=>[e.createVNode(e.unref(y.Space),null,{default:e.withCtx(()=>[e.createVNode(e.unref(y.Button),{onClick:u[12]||(u[12]=f=>d.value=!1)},{default:e.withCtx(()=>[...u[20]||(u[20]=[e.createTextVNode("取消",-1)])]),_:1}),e.createVNode(e.unref(y.Button),{type:"primary",onClick:p},{default:e.withCtx(()=>[...u[21]||(u[21]=[e.createTextVNode("确定",-1)])]),_:1})]),_:1})]),default:e.withCtx(()=>[e.createVNode(e.unref(N.Form),{ref_key:"formRef",ref:h,model:s,rules:n,"label-width":"80px"},{default:e.withCtx(()=>[e.createVNode(e.unref(N.FormItem),{label:"上级菜单"},{default:e.withCtx(()=>[e.createVNode(e.unref(N.Input),{modelValue:s.parentId,"onUpdate:modelValue":u[1]||(u[1]=f=>s.parentId=f),placeholder:"上级菜单ID",disabled:""},null,8,["modelValue"])]),_:1}),e.createVNode(e.unref(N.FormItem),{label:"菜单类型"},{default:e.withCtx(()=>[e.createVNode(e.unref(N.Select),{modelValue:s.type,"onUpdate:modelValue":u[2]||(u[2]=f=>s.type=f),options:e.unref(Ue)},null,8,["modelValue","options"])]),_:1}),e.createVNode(e.unref(N.FormItem),{label:"菜单名称",prop:"name"},{default:e.withCtx(()=>[e.createVNode(e.unref(N.Input),{modelValue:s.name,"onUpdate:modelValue":u[3]||(u[3]=f=>s.name=f),placeholder:"请输入菜单名称(路由name)"},null,8,["modelValue"])]),_:1}),e.createVNode(e.unref(N.FormItem),{label:"菜单标题",prop:"title"},{default:e.withCtx(()=>[e.createVNode(e.unref(N.Input),{modelValue:s.title,"onUpdate:modelValue":u[4]||(u[4]=f=>s.title=f),placeholder:"请输入菜单标题"},null,8,["modelValue"])]),_:1}),e.createVNode(e.unref(N.FormItem),{label:"路由路径",prop:"path"},{default:e.withCtx(()=>[e.createVNode(e.unref(N.Input),{modelValue:s.path,"onUpdate:modelValue":u[5]||(u[5]=f=>s.path=f),placeholder:"请输入路由路径"},null,8,["modelValue"])]),_:1}),e.createVNode(e.unref(N.FormItem),{label:"组件路径"},{default:e.withCtx(()=>[e.createVNode(e.unref(N.Input),{modelValue:s.component,"onUpdate:modelValue":u[6]||(u[6]=f=>s.component=f),placeholder:"请输入组件路径"},null,8,["modelValue"])]),_:1}),e.createVNode(e.unref(N.FormItem),{label:"图标"},{default:e.withCtx(()=>[e.createVNode(e.unref(N.Input),{modelValue:s.icon,"onUpdate:modelValue":u[7]||(u[7]=f=>s.icon=f),placeholder:"请输入图标名称"},null,8,["modelValue"])]),_:1}),e.createVNode(e.unref(N.FormItem),{label:"排序"},{default:e.withCtx(()=>[e.createVNode(e.unref(N.InputNumber),{modelValue:s.sort,"onUpdate:modelValue":u[8]||(u[8]=f=>s.sort=f),min:0},null,8,["modelValue"])]),_:1}),e.createVNode(e.unref(N.FormItem),{label:"状态"},{default:e.withCtx(()=>[e.createVNode(e.unref(N.Switch),{modelValue:s.status,"onUpdate:modelValue":u[9]||(u[9]=f=>s.status=f),"active-value":e.unref(w).ENABLED,"inactive-value":e.unref(w).DISABLED},null,8,["modelValue","active-value","inactive-value"])]),_:1}),e.createVNode(e.unref(N.FormItem),{label:"隐藏"},{default:e.withCtx(()=>[e.createVNode(e.unref(N.Switch),{modelValue:s.hidden,"onUpdate:modelValue":u[10]||(u[10]=f=>s.hidden=f)},null,8,["modelValue"])]),_:1}),e.createVNode(e.unref(N.FormItem),{label:"缓存"},{default:e.withCtx(()=>[e.createVNode(e.unref(N.Switch),{modelValue:s.keepAlive,"onUpdate:modelValue":u[11]||(u[11]=f=>s.keepAlive=f)},null,8,["modelValue"])]),_:1})]),_:1},8,["model"])]),_:1},8,["modelValue","title"])]))}}),[["__scopeId","data-v-2a272a68"]])},Symbol.toStringTag,{value:"Module"}));i.Footer=en,i.Forbidden=De,i.Gender=Ae,i.GenderOptions=Kn,i.GenderText=jn,i.Header=Be,i.Layout=pe,i.Login=Ie,i.MenuType=M,i.MenuTypeOptions=Ue,i.MenuTypeText=qn,i.NotFound=Te,i.Sidebar=Se,i.Status=w,i.StatusOptions=ue,i.StatusText=On,i.Tabs=Jt,i.batchDeleteUsers=zn,i.clearToken=ce,i.createLayoutRoute=_n,i.createMenu=bn,i.createRole=Cn,i.createRouter=yn,i.createUser=Un,i.defaultDynamicRoutes=We,i.deleteMenu=Tn,i.deleteRole=Sn,i.deleteUser=Rn,i.errorRoute=le,i.getMenuList=xn,i.getMenuTree=$e,i.getRefreshToken=Xe,i.getRoleDetail=kn,i.getRoleList=En,i.getToken=G,i.getTokenExpire=ke,i.getUserDetail=An,i.getUserInfo=be,i.getUserList=$n,i.hasPermission=Nn,i.hasRole=Le,i.hasToken=me,i.http=T,i.isAdmin=gn,i.isTokenExpired=we,i.layoutRoute=ae,i.local=E,i.localStorageUtil=W,i.login=xe,i.logout=tn,i.mockMenuData=_e,i.permissionDirective=Yn,i.refreshToken=nn,i.resetPassword=Pn,i.resetRouter=Je,i.router=ee,i.session=Ye,i.sessionStorageUtil=X,i.setRefreshToken=Ee,i.setToken=ye,i.setTokenExpire=Ce,i.setTokenInfo=de,i.setupRouterGuards=Ln,i.staticRoutes=oe,i.updateMenu=In,i.updateRole=wn,i.updateRoleStatus=Bn,i.updateUser=Mn,i.updateUserStatus=Fn,i.useApp=un,i.useAppStore=q,i.useAuth=fn,i.useAuthStore=te,i.useForm=hn,i.useMenuStore=J,i.useTable=Vn,i.useUserStore=P,Object.defineProperty(i,Symbol.toStringTag,{value:"Module"})});
|
|
1
|
+
(function(i,e){typeof exports=="object"&&typeof module<"u"?e(exports,require("vue"),require("pinia"),require("vue-router"),require("@xto/navigation"),require("@xto/base"),require("@xto/feedback"),require("@xto/form"),require("axios"),require("@xto/data")):typeof define=="function"&&define.amd?define(["exports","vue","pinia","vue-router","@xto/navigation","@xto/base","@xto/feedback","@xto/form","axios","@xto/data"],e):(i=typeof globalThis<"u"?globalThis:i||self,e(i.XtoFronted={},i.Vue,i.Pinia,i.VueRouter,i.navigation,i.base,i.feedback,i.form,i.axios,i.data))})(this,function(i,e,v,R,K,y,A,N,Ke,L){"use strict";const H="xto_",Ne=t=>({get(l){const o=t.getItem(H+l);if(!o)return null;try{return JSON.parse(o)}catch{return o}},set(l,o){if(o==null){t.removeItem(H+l);return}const r=typeof o=="string"?o:JSON.stringify(o);t.setItem(H+l,r)},remove(l){t.removeItem(H+l)},clear(){Object.keys(t).forEach(o=>{o.startsWith(H)&&t.removeItem(o)})}}),W=Ne(window.localStorage),X=Ne(window.sessionStorage),E={get:W.get,set:W.set,remove:W.remove,clear:W.clear},Ye={get:X.get,set:X.set,remove:X.remove,clear:X.clear},q=v.defineStore("app",()=>{const t=e.ref(E.get("appName")||"XTO App"),l=e.ref(E.get("indexPath")||"/dashboard"),o=e.ref(E.get("isDark")||!1),r=e.ref(E.get("theme")||"light"),d=e.ref(E.get("layout")||"sidebar"),a=e.ref(E.get("isCollapsed")||!1),s=e.ref(E.get("showTabs")??!0),n=e.ref(E.get("showFooter")??!0),h=e.ref(E.get("showBreadcrumb")??!0),g=e.ref(E.get("primaryColor")||"#409eff"),m=e.ref([]),B=e.computed(()=>o.value?"dark":"light"),p=I=>{t.value=I,E.set("appName",I)},x=I=>{l.value=I,E.set("indexPath",I)},S=()=>{o.value=!o.value,r.value=o.value?"dark":"light",f()},u=I=>{r.value=I,o.value=I==="dark",f()},f=()=>{const I=document.documentElement;o.value?I.classList.add("dark"):I.classList.remove("dark"),E.set("isDark",o.value),E.set("theme",r.value)},b=()=>{a.value=!a.value,E.set("isCollapsed",a.value)},$=I=>{d.value=I,E.set("layout",I)},z=()=>{s.value=!s.value,E.set("showTabs",s.value)},U=()=>{n.value=!n.value,E.set("showFooter",n.value)},V=()=>{h.value=!h.value,E.set("showBreadcrumb",h.value)},c=I=>{g.value=I,document.documentElement.style.setProperty("--color-primary",I),E.set("primaryColor",I)},k=I=>{m.value.includes(I)||m.value.push(I)},O=I=>{const ne=m.value.indexOf(I);ne>-1&&m.value.splice(ne,1)},fe=()=>{m.value=[]},he=()=>{f(),g.value!=="#409eff"&&document.documentElement.style.setProperty("--color-primary",g.value)};return e.watch(o,f),{appName:t,indexPath:l,isDark:o,theme:r,layout:d,isCollapsed:a,showTabs:s,showFooter:n,showBreadcrumb:h,primaryColor:g,cachedViews:m,themeClass:B,setAppName:p,setIndexPath:x,toggleTheme:S,toggleCollapse:b,setTheme:u,setLayout:$,toggleTabs:z,toggleFooter:U,toggleBreadcrumb:V,setPrimaryColor:c,addCachedView:k,removeCachedView:O,clearCachedViews:fe,initTheme:he}}),ge="/vite.svg",He=(t,l,o)=>{const r=t[l];return r?typeof r=="function"?r():Promise.resolve(r):new Promise((d,a)=>{(typeof queueMicrotask=="function"?queueMicrotask:setTimeout)(a.bind(null,new Error("Unknown variable dynamic import: "+l+(l.split("/").length!==o?". Note that variables only represent file names one level deep.":""))))})},oe=[{path:"/login",name:"Login",component:()=>Promise.resolve().then(()=>an),meta:{title:"登录",hidden:!0}},{path:"/404",name:"NotFound",component:()=>Promise.resolve().then(()=>dn),meta:{title:"404",hidden:!0}},{path:"/403",name:"Forbidden",component:()=>Promise.resolve().then(()=>pn),meta:{title:"403",hidden:!0}}],le={path:"/:pathMatch(.*)*",redirect:"/404",meta:{hidden:!0}},ae={path:"/",name:"Layout",component:()=>Promise.resolve().then(()=>Ht),redirect:"/dashboard",children:[{path:"/dashboard",name:"Dashboard",component:()=>Promise.resolve().then(()=>Me),meta:{title:"仪表盘",icon:"dashboard",keepAlive:!0,affix:!0}},{path:"/system/user",name:"SystemUser",component:()=>Promise.resolve().then(()=>Re),meta:{title:"用户管理",icon:"user",keepAlive:!0}},{path:"/system/role",name:"SystemRole",component:()=>Promise.resolve().then(()=>ze),meta:{title:"角色管理",icon:"role",keepAlive:!0}},{path:"/system/menu",name:"SystemMenu",component:()=>Promise.resolve().then(()=>Fe),meta:{title:"菜单管理",icon:"menu",keepAlive:!0}}]},We=[{path:"/dashboard",name:"Dashboard",component:()=>Promise.resolve().then(()=>Me),meta:{title:"仪表盘",icon:"dashboard",keepAlive:!0,affix:!0}},{path:"/system",name:"System",redirect:"/system/user",meta:{title:"系统管理",icon:"setting"},children:[{path:"user",name:"SystemUser",component:()=>Promise.resolve().then(()=>Re),meta:{title:"用户管理",icon:"user",keepAlive:!0}},{path:"role",name:"SystemRole",component:()=>Promise.resolve().then(()=>ze),meta:{title:"角色管理",icon:"role",keepAlive:!0}},{path:"menu",name:"SystemMenu",component:()=>Promise.resolve().then(()=>Fe),meta:{title:"菜单管理",icon:"menu",keepAlive:!0}}]}],_e=[{id:1,name:"Dashboard",path:"/dashboard",component:"dashboard/index",icon:"dashboard",title:"仪表盘",keepAlive:!0,affix:!0},{id:2,name:"System",path:"/system",redirect:"/system/user",icon:"setting",title:"系统管理",children:[{id:21,name:"SystemUser",path:"/system/user",component:"system/user/index",icon:"user",title:"用户管理",keepAlive:!0},{id:22,name:"SystemRole",path:"/system/role",component:"system/role/index",icon:"role",title:"角色管理",keepAlive:!0},{id:23,name:"SystemMenu",path:"/system/menu",component:"system/menu/index",icon:"menu",title:"菜单管理",keepAlive:!0}]}],re="token",se="refresh_token",ie="token_expire",G=()=>E.get(re),ye=t=>{E.set(re,t)},Xe=()=>E.get(se),Ee=t=>{E.set(se,t)},ke=()=>E.get(ie),Ce=t=>{E.set(ie,t)},de=t=>{ye(t.token),Ee(t.refreshToken),Ce(t.expireTime)},ce=()=>{E.remove(re),E.remove(se),E.remove(ie)},we=()=>{const t=ke();return t?Date.now()>t:!0},me=()=>!!G()&&!we(),P=v.defineStore("user",()=>{const t=e.ref(E.get("userInfo")),l=e.ref(E.get("roles")||[]),o=e.ref(E.get("permissions")||[]),r=e.computed(()=>!!t.value),d=e.computed(()=>{var p;return((p=t.value)==null?void 0:p.username)||""}),a=e.computed(()=>{var p;return((p=t.value)==null?void 0:p.nickname)||""}),s=e.computed(()=>{var p;return((p=t.value)==null?void 0:p.avatar)||""}),n=e.computed(()=>{var p;return(p=t.value)==null?void 0:p.id});return{userInfo:t,roles:l,permissions:o,isLoggedIn:r,username:d,nickname:a,avatar:s,userId:n,setUserInfo:p=>{t.value=p,l.value=p.roles||[],o.value=p.permissions||[],E.set("userInfo",p),E.set("roles",p.roles||[]),E.set("permissions",p.permissions||[])},clearUserInfo:()=>{t.value=null,l.value=[],o.value=[],E.remove("userInfo"),E.remove("roles"),E.remove("permissions")},hasPermission:p=>Array.isArray(p)?p.some(x=>o.value.includes(x)):o.value.includes(p),hasRole:p=>Array.isArray(p)?p.some(x=>l.value.includes(x)):l.value.includes(p)}}),ee=R.createRouter({history:R.createWebHistory(),routes:[...oe,ae,le],scrollBehavior:()=>({left:0,top:0})}),Ge=["/login","/404","/403"];ee.beforeEach(async(t,l,o)=>{const r=q();if(r.initTheme(),me())if(t.path==="/login")o({path:"/"});else{const d=P();d.isLoggedIn||(d.setUserInfo({id:1,username:"admin",nickname:"管理员",avatar:"",email:"admin@example.com",phone:"13800138000",status:1,roles:["admin"],permissions:["*"],createTime:new Date().toISOString()}),J().setMenuList(_e)),t.name&&t.meta.keepAlive&&r.addCachedView(t.name),o()}else Ge.includes(t.path)?o():o("/login")});function Je(){const t=R.createRouter({history:R.createWebHistory(),routes:[...oe,ae,le]});ee.matcher=t.matcher}const J=v.defineStore("menu",()=>{const t=e.ref(E.get("menuList")||[]),l=e.computed(()=>t.value.length>0),o=s=>{t.value=s,E.set("menuList",s)},r=()=>{t.value=[],E.remove("menuList")},d=s=>s.filter(n=>!n.hidden).map(n=>{const h={path:n.path,name:n.name,meta:{title:n.title,icon:n.icon,keepAlive:n.keepAlive,hidden:n.hidden}};return n.redirect&&(h.redirect=n.redirect),n.component&&(h.component=()=>He(Object.assign({}),`../views/${n.component}.vue`,3)),n.children&&n.children.length>0&&(h.children=d(n.children)),h});return{menuList:t,hasMenu:l,setMenuList:o,clearMenu:r,generateRoutes:d,addRoutes:s=>{d(s).forEach(h=>{ee.addRoute("Layout",h)})}}}),te=v.defineStore("auth",()=>{const t=e.ref(G()),l=e.computed(()=>me()),o=e.ref(""),r=e.ref(""),d=e.ref(""),a=e.ref("/login");return{token:t,isLoggedIn:l,baseUrl:o,appId:r,clientId:d,loginPath:a,login:p=>{t.value=p.token,de(p)},logout:()=>{t.value=null,ce()},setBaseUrl:p=>{o.value=p},setAppId:p=>{r.value=p},setClientId:p=>{d.value=p},setLoginPath:p=>{a.value=p}}}),Qe={class:"sidebar__logo"},Ze={key:0,class:"sidebar__user"},ve={class:"sidebar__user-info"},et={class:"sidebar__user-name"},tt={class:"sidebar__user-role"},nt=e.defineComponent({__name:"Sidebar",setup(t){const l=R.useRoute(),o=R.useRouter(),r=J(),d=P(),a=te(),s=q(),n=e.computed(()=>s.isCollapsed),h=e.computed(()=>l.path),g=e.computed(()=>s.isDark?"#1d1e1f":"#fff"),m=e.computed(()=>s.isDark?"#cfd3dc":"#303133"),B=e.computed(()=>"#409eff"),p=u=>{u&&u!==l.path&&o.push(u)},x=()=>{a.logout(),d.clearUserInfo(),r.clearMenu(),o.push("/login")},S=u=>({dashboard:"dashboard",system:"system",user:"user",role:"role",menu:"list",setting:"setting"})[u||""]||"file";return(u,f)=>{var b;return e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["sidebar",{"sidebar--collapsed":n.value}])},[e.createElementVNode("div",Qe,[f[0]||(f[0]=e.createElementVNode("img",{src:ge,alt:"Logo",class:"sidebar__logo-img"},null,-1)),e.withDirectives(e.createElementVNode("span",{class:"sidebar__logo-text"},e.toDisplayString(e.unref(s).appName),513),[[e.vShow,!n.value]])]),e.createVNode(e.unref(K.Menu),{"default-active":h.value,mode:"vertical",collapse:n.value,"collapse-transition":!1,"background-color":g.value,"text-color":m.value,"active-text-color":B.value,class:"sidebar__menu",onSelect:p},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(r).menuList,$=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:$.path},[$.children&&$.children.length>0?(e.openBlock(),e.createBlock(e.unref(K.SubMenu),{key:0,index:$.path},{title:e.withCtx(()=>[e.createVNode(e.unref(y.Icon),{name:S($.icon),size:16},null,8,["name"]),e.createElementVNode("span",null,e.toDisplayString($.title),1)]),default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList($.children,z=>(e.openBlock(),e.createBlock(e.unref(K.MenuItem),{key:z.path,index:z.path},{default:e.withCtx(()=>[e.createVNode(e.unref(y.Icon),{name:S(z.icon),size:16},null,8,["name"]),e.createElementVNode("span",null,e.toDisplayString(z.title),1)]),_:2},1032,["index"]))),128))]),_:2},1032,["index"])):(e.openBlock(),e.createBlock(e.unref(K.MenuItem),{key:1,index:$.path},{default:e.withCtx(()=>[e.createVNode(e.unref(y.Icon),{name:S($.icon),size:16},null,8,["name"]),e.createElementVNode("span",null,e.toDisplayString($.title),1)]),_:2},1032,["index"]))],64))),128))]),_:1},8,["default-active","collapse","background-color","text-color","active-text-color"]),n.value?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("div",Ze,[e.createElementVNode("div",ve,[e.createElementVNode("span",et,e.toDisplayString(e.unref(d).nickname),1),e.createElementVNode("span",tt,e.toDisplayString((b=e.unref(d).roles)==null?void 0:b.join(", ")),1)]),e.createVNode(e.unref(y.Button),{type:"text",size:"small",onClick:x},{default:e.withCtx(()=>[...f[1]||(f[1]=[e.createTextVNode("退出",-1)])]),_:1})]))],2)}}}),F=(t,l)=>{const o=t.__vccOpts||t;for(const[r,d]of l)o[r]=d;return o},Se=F(nt,[["__scopeId","data-v-a7668285"]]),ot={class:"header"},lt={class:"header__left"},at={key:0,class:"header__breadcrumb"},rt={key:0,class:"breadcrumb-separator"},st={class:"header__right"},it=["title"],dt={class:"header__avatar"},ct={class:"header__user-name"},mt={key:0,class:"header__dropdown"},pt={class:"header__dropdown-header"},ut={class:"header__dropdown-avatar"},ft={class:"header__dropdown-info"},ht={class:"header__dropdown-name"},Vt={class:"header__dropdown-role"},Nt={class:"header__dropdown-menu"},gt={class:"search-container"},_t={class:"search-input-wrapper"},yt={key:0,class:"search-results"},Et=["onClick"],kt={class:"search-result-info"},Ct={class:"search-result-title"},wt={key:0,class:"search-result-parent"},St={key:1,class:"search-empty"},Bt={class:"settings-drawer"},xt={class:"settings-section"},bt={class:"settings-layout-options"},It=["onClick"],Tt={class:"layout-option__preview"},Dt={key:0,class:"layout-preview-sidebar"},Lt={key:1,class:"layout-preview-top"},$t={key:2,class:"layout-preview-mix"},At={class:"layout-option__label"},Ut={class:"settings-section"},Mt={class:"settings-color-options"},Rt=["title","onClick"],zt={class:"settings-section"},Ft={class:"settings-switch-list"},Pt={class:"settings-switch-item"},Ot={class:"settings-switch-item"},Be=F(e.defineComponent({__name:"Header",setup(t){const l=R.useRoute(),o=R.useRouter(),r=q(),d=P(),a=te(),s=J(),n=e.ref(!1),h=e.ref(!1),g=e.ref(null),m=e.ref(!1),B=e.ref(!1),p=e.ref(""),x=e.ref(null),S=e.ref(!1),u=[{value:"sidebar",label:"左侧菜单",icon:"sidebar-left"},{value:"top",label:"顶部菜单",icon:"menu"},{value:"mix",label:"混合菜单",icon:"grid"}],f=[{value:"#409eff",label:"默认蓝"},{value:"#1890ff",label:"科技蓝"},{value:"#52c41a",label:"极光绿"},{value:"#faad14",label:"日落橙"},{value:"#f5222d",label:"薄暮红"},{value:"#722ed1",label:"酱紫"}],b=e.computed(()=>l.matched.filter(_=>_.meta&&_.meta.title).map(_=>({title:_.meta.title,path:_.path}))),$=(D,_="")=>{const Y=[];return D.forEach(C=>{C.children&&C.children.length>0?Y.push(...$(C.children,C.title)):Y.push({...C,parentTitle:_})}),Y},z=e.computed(()=>p.value.trim()?$(s.menuList).filter(_=>_.title.toLowerCase().includes(p.value.toLowerCase())):[]),U=e.computed(()=>r.layout),V=()=>{r.toggleCollapse()},c=()=>{r.toggleTheme()},k=()=>{h.value=!0},O=D=>{r.setLayout(D)},fe=D=>{S.value=D;const _=document.documentElement;D?_.classList.add("grey-mode"):_.classList.remove("grey-mode")},he=()=>{document.fullscreenElement?document.exitFullscreen():document.documentElement.requestFullscreen()},I=()=>{m.value=!!document.fullscreenElement},ne=()=>{n.value=!n.value},Z=()=>{n.value=!1},Pe=()=>{B.value=!0},Ve=()=>{B.value=!1,p.value=""},Oe=D=>{o.push(D),Ve()},xo=D=>{r.setPrimaryColor(D)},bo=()=>{Z(),o.push("/profile")},Io=()=>{Z(),o.push("/change-password")},To=()=>{Z(),a.logout(),d.clearUserInfo(),s.clearMenu(),o.push("/login")},je=D=>{g.value&&!g.value.contains(D.target)&&Z(),x.value&&!x.value.contains(D.target)&&Ve()},qe=D=>{D.key==="Escape"&&(Ve(),Z()),(D.ctrlKey||D.metaKey)&&D.key==="k"&&(D.preventDefault(),Pe())};return e.onMounted(()=>{document.addEventListener("click",je),document.addEventListener("fullscreenchange",I),document.addEventListener("keydown",qe),r.initTheme(),S.value=document.documentElement.classList.contains("grey-mode")}),e.onUnmounted(()=>{document.removeEventListener("click",je),document.removeEventListener("fullscreenchange",I),document.removeEventListener("keydown",qe)}),(D,_)=>{var Y;return e.openBlock(),e.createElementBlock("div",ot,[e.createElementVNode("div",lt,[e.createElementVNode("div",{class:"header__collapse",onClick:V},[e.createVNode(e.unref(y.Icon),{name:e.unref(r).isCollapsed?"menu-unfold":"menu-fold",size:18},null,8,["name"])]),e.unref(r).showBreadcrumb?(e.openBlock(),e.createElementBlock("div",at,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(b.value,(C,j)=>(e.openBlock(),e.createElementBlock("span",{key:C.path},[j>0?(e.openBlock(),e.createElementBlock("span",rt,"/")):e.createCommentVNode("",!0),e.createElementVNode("span",{class:e.normalizeClass({"is-current":j===b.value.length-1})},e.toDisplayString(C.title),3)]))),128))])):e.createCommentVNode("",!0)]),e.createElementVNode("div",st,[e.createElementVNode("div",{class:"header__action",onClick:Pe,title:"搜索 (Ctrl+K)"},[e.createVNode(e.unref(y.Icon),{name:"search",size:16})]),e.createElementVNode("div",{class:"header__action",onClick:he,title:m.value?"退出全屏":"全屏"},[e.createVNode(e.unref(y.Icon),{name:m.value?"fullscreen-exit":"fullscreen",size:16},null,8,["name"])],8,it),e.createElementVNode("div",{class:"header__action",onClick:k,title:"换肤设置"},[e.createVNode(e.unref(y.Icon),{name:"setting",size:16})]),e.createElementVNode("div",{class:"header__action",onClick:c,title:"切换主题"},[e.createVNode(e.unref(y.Icon),{name:e.unref(r).isDark?"sun":"moon",size:16},null,8,["name"])]),e.createElementVNode("div",{class:"header__user",ref_key:"dropdownRef",ref:g},[e.createElementVNode("div",{class:"header__user-trigger",onClick:e.withModifiers(ne,["stop"])},[e.createElementVNode("div",dt,[e.createElementVNode("span",null,e.toDisplayString(((Y=e.unref(d).nickname)==null?void 0:Y.charAt(0))||"U"),1)]),e.createElementVNode("span",ct,e.toDisplayString(e.unref(d).nickname),1),e.createElementVNode("span",{class:e.normalizeClass(["header__user-arrow",{"is-active":n.value}])},"▼",2)]),e.createVNode(e.Transition,{name:"dropdown"},{default:e.withCtx(()=>{var C,j;return[n.value?(e.openBlock(),e.createElementBlock("div",mt,[e.createElementVNode("div",pt,[e.createElementVNode("div",ut,[e.createElementVNode("span",null,e.toDisplayString(((C=e.unref(d).nickname)==null?void 0:C.charAt(0))||"U"),1)]),e.createElementVNode("div",ft,[e.createElementVNode("div",ht,e.toDisplayString(e.unref(d).nickname),1),e.createElementVNode("div",Vt,e.toDisplayString((j=e.unref(d).roles)==null?void 0:j.join(", ")),1)])]),_[8]||(_[8]=e.createElementVNode("div",{class:"header__dropdown-divider"},null,-1)),e.createElementVNode("div",Nt,[e.createElementVNode("div",{class:"header__dropdown-item",onClick:bo},[e.createVNode(e.unref(y.Icon),{name:"user",size:16}),_[4]||(_[4]=e.createElementVNode("span",null,"个人信息",-1))]),e.createElementVNode("div",{class:"header__dropdown-item",onClick:Io},[e.createVNode(e.unref(y.Icon),{name:"lock",size:16}),_[5]||(_[5]=e.createElementVNode("span",null,"修改密码",-1))]),_[7]||(_[7]=e.createElementVNode("div",{class:"header__dropdown-divider"},null,-1)),e.createElementVNode("div",{class:"header__dropdown-item header__dropdown-item--danger",onClick:To},[e.createVNode(e.unref(y.Icon),{name:"logout",size:16}),_[6]||(_[6]=e.createElementVNode("span",null,"退出登录",-1))])])])):e.createCommentVNode("",!0)]}),_:1})],512)]),e.createVNode(e.Transition,{name:"search"},{default:e.withCtx(()=>[B.value?(e.openBlock(),e.createElementBlock("div",{key:0,class:"header__search-modal",ref_key:"searchRef",ref:x},[e.createElementVNode("div",gt,[e.createElementVNode("div",_t,[e.createVNode(e.unref(y.Icon),{class:"search-icon",name:"search",size:20}),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":_[0]||(_[0]=C=>p.value=C),type:"text",class:"search-input",placeholder:"搜索菜单...",autofocus:"",onKeyup:_[1]||(_[1]=e.withKeys(C=>z.value[0]&&Oe(z.value[0].path),["enter"]))},null,544),[[e.vModelText,p.value]]),_[9]||(_[9]=e.createElementVNode("span",{class:"search-shortcut"},"ESC 关闭",-1))]),z.value.length>0?(e.openBlock(),e.createElementBlock("div",yt,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(z.value,(C,j)=>(e.openBlock(),e.createElementBlock("div",{key:C.path,class:e.normalizeClass(["search-result-item",{"is-first":j===0}]),onClick:Ho=>Oe(C.path)},[e.createVNode(e.unref(y.Icon),{class:"search-result-icon",name:C.icon||"file",size:20},null,8,["name"]),e.createElementVNode("div",kt,[e.createElementVNode("span",Ct,e.toDisplayString(C.title),1),C.parentTitle?(e.openBlock(),e.createElementBlock("span",wt,e.toDisplayString(C.parentTitle),1)):e.createCommentVNode("",!0)])],10,Et))),128))])):p.value?(e.openBlock(),e.createElementBlock("div",St," 未找到匹配的菜单 ")):e.createCommentVNode("",!0)])],512)):e.createCommentVNode("",!0)]),_:1}),e.createVNode(e.unref(A.Drawer),{modelValue:h.value,"onUpdate:modelValue":_[3]||(_[3]=C=>h.value=C),title:"换肤设置",direction:"rtl",size:"320px"},{default:e.withCtx(()=>[e.createElementVNode("div",Bt,[e.createElementVNode("div",xt,[_[13]||(_[13]=e.createElementVNode("div",{class:"settings-title"},"布局模式",-1)),e.createElementVNode("div",bt,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(u,C=>e.createElementVNode("div",{key:C.value,class:e.normalizeClass(["layout-option",{"is-active":U.value===C.value}]),onClick:j=>O(C.value)},[e.createElementVNode("div",Tt,[C.value==="sidebar"?(e.openBlock(),e.createElementBlock("div",Dt,[..._[10]||(_[10]=[e.createElementVNode("div",{class:"preview-aside"},null,-1),e.createElementVNode("div",{class:"preview-main"},[e.createElementVNode("div",{class:"preview-header"}),e.createElementVNode("div",{class:"preview-content"})],-1)])])):C.value==="top"?(e.openBlock(),e.createElementBlock("div",Lt,[..._[11]||(_[11]=[e.createElementVNode("div",{class:"preview-header-full"},null,-1),e.createElementVNode("div",{class:"preview-content-full"},null,-1)])])):(e.openBlock(),e.createElementBlock("div",$t,[..._[12]||(_[12]=[e.createElementVNode("div",{class:"preview-header-mix"},[e.createElementVNode("div",{class:"preview-mix-left"})],-1),e.createElementVNode("div",{class:"preview-mix-body"},[e.createElementVNode("div",{class:"preview-mix-aside"}),e.createElementVNode("div",{class:"preview-mix-content"})],-1)])]))]),e.createElementVNode("span",At,e.toDisplayString(C.label),1)],10,It)),64))])]),e.createElementVNode("div",Ut,[_[14]||(_[14]=e.createElementVNode("div",{class:"settings-title"},"主题色",-1)),e.createElementVNode("div",Mt,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(f,C=>e.createElementVNode("div",{key:C.value,class:e.normalizeClass(["color-option",{"is-active":e.unref(r).primaryColor===C.value}]),style:e.normalizeStyle({backgroundColor:C.value}),title:C.label,onClick:j=>xo(C.value)},[e.unref(r).primaryColor===C.value?(e.openBlock(),e.createBlock(e.unref(y.Icon),{key:0,name:"check",size:12,color:"#fff"})):e.createCommentVNode("",!0)],14,Rt)),64))])]),e.createElementVNode("div",zt,[_[19]||(_[19]=e.createElementVNode("div",{class:"settings-title"},"功能设置",-1)),e.createElementVNode("div",Ft,[e.createElementVNode("div",Pt,[_[16]||(_[16]=e.createElementVNode("span",null,"灰色模式",-1)),e.createElementVNode("div",{class:e.normalizeClass(["switch-wrapper",{"is-checked":S.value}]),onClick:_[2]||(_[2]=C=>fe(!S.value))},[..._[15]||(_[15]=[e.createElementVNode("span",{class:"switch-core"},null,-1)])],2)]),e.createElementVNode("div",Ot,[_[18]||(_[18]=e.createElementVNode("span",null,"暗黑模式",-1)),e.createElementVNode("div",{class:e.normalizeClass(["switch-wrapper",{"is-checked":e.unref(r).isDark}]),onClick:c},[..._[17]||(_[17]=[e.createElementVNode("span",{class:"switch-core"},null,-1)])],2)])])])])]),_:1},8,["modelValue"])])}}}),[["__scopeId","data-v-015c45c9"]]),jt={class:"layout"},qt={class:"layout__main"},Kt={class:"layout__header"},Yt={class:"layout__content"},pe=F(e.defineComponent({__name:"index",setup(t){const l=q(),o=e.computed(()=>l.isCollapsed?"64px":"210px");return(r,d)=>{const a=e.resolveComponent("router-view");return e.openBlock(),e.createElementBlock("div",jt,[e.createElementVNode("aside",{class:"layout__aside",style:e.normalizeStyle({width:o.value})},[e.createVNode(Se)],4),e.createElementVNode("div",qt,[e.createElementVNode("header",Kt,[e.createVNode(Be)]),e.createElementVNode("main",Yt,[e.createVNode(a)])])])}}}),[["__scopeId","data-v-a3110011"]]),Ht=Object.freeze(Object.defineProperty({__proto__:null,default:pe},Symbol.toStringTag,{value:"Module"})),Wt={class:"tabs-wrapper"},Xt={class:"tab-label"},Gt=["onClick"],Jt=F(e.defineComponent({__name:"Tabs",setup(t){const l=R.useRoute(),o=R.useRouter(),r=e.computed(()=>{const n=[];return l.matched.forEach(h=>{var g;(g=h.meta)!=null&&g.affix&&n.push({name:h.name,title:h.meta.title,path:h.path,affix:!0})}),n}),d=e.computed(()=>l.path),a=n=>{o.push(n)},s=n=>{const h=r.value.find(g=>g.path===n);if(!(h!=null&&h.affix)&&n===d.value){const g=r.value.findIndex(B=>B.path===n),m=r.value[g-1]||r.value[g+1];m&&o.push(m.path)}};return(n,h)=>(e.openBlock(),e.createElementBlock("div",Wt,[e.createVNode(e.unref(K.Tabs),{modelValue:d.value,"onUpdate:modelValue":h[0]||(h[0]=g=>d.value=g),type:"card",onTabClick:a},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(r.value,g=>(e.openBlock(),e.createBlock(e.unref(K.TabPane),{key:g.path,name:g.path,label:g.title,closable:!g.affix},{label:e.withCtx(()=>[e.createElementVNode("span",Xt,[e.createTextVNode(e.toDisplayString(g.title)+" ",1),g.affix?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("span",{key:0,class:"tab-close",onClick:e.withModifiers(m=>s(g.path),["stop"])}," ✕ ",8,Gt))])]),_:2},1032,["name","label","closable"]))),128))]),_:1},8,["modelValue"])]))}}),[["__scopeId","data-v-9156d8cd"]]),Qt={},Zt={class:"footer"};function vt(t,l){return e.openBlock(),e.createElementBlock("div",Zt,[...l[0]||(l[0]=[e.createElementVNode("span",null,"Copyright © 2024 Xto Demo. All Rights Reserved.",-1)])])}const en=F(Qt,[["render",vt],["__scopeId","data-v-4852826a"]]),Q=(()=>{const t=Ke.create({baseURL:void 0,timeout:3e4,headers:{"Content-Type":"application/json"}});return t.interceptors.request.use(l=>{const o=G();return o&&(l.headers.Authorization=`Bearer ${o}`),l},l=>Promise.reject(l)),t.interceptors.response.use(l=>{const{data:o}=l;return o.code===200||o.code===0?o.data:(A.Message.error(o.message||"请求失败"),Promise.reject(new Error(o.message||"请求失败")))},l=>{var r;const{response:o}=l;if(o)switch(o.status){case 401:A.Message.error("登录已过期,请重新登录"),ce(),window.location.href="/login";break;case 403:A.Message.error("没有权限访问");break;case 404:A.Message.error("请求资源不存在");break;case 500:A.Message.error("服务器错误");break;default:A.Message.error(((r=o.data)==null?void 0:r.message)||"请求失败")}else A.Message.error("网络连接失败");return Promise.reject(l)}),t})(),T={get(t,l){return Q.get(t,l)},post(t,l,o){return Q.post(t,l,o)},put(t,l,o){return Q.put(t,l,o)},patch(t,l,o){return Q.patch(t,l,o)},delete(t,l){return Q.delete(t,l)}};function xe(t){return T.post("/user/v1.0/login/by-domain",t)}function tn(){return T.put("/user/v1.0/user/logout")}function be(){return T.get("/user/v1.0/user/get-me")}function nn(t){return T.post("/user/v1.0/refresh",{refreshToken:t})}const on={class:"login"},ln={class:"login__container"},Ie=F(e.defineComponent({__name:"index",setup(t){const l=R.useRouter(),o=R.useRoute(),r=e.ref(!1),d=e.ref(!1),a=e.reactive({uid:"",password:""}),s={uid:[{required:!0,message:"请输入用户名",trigger:"blur"}],password:[{required:!0,message:"请输入密码",trigger:"blur"},{min:6,message:"密码长度至少6位",trigger:"blur"}]},n=e.ref(),h=async()=>{var g;try{await((g=n.value)==null?void 0:g.validate()),r.value=!0;const m=await xe({appId:void 0,clientId:void 0,uid:a.uid,password:a.password,code:!0});de(m),A.Message.success("登录成功");const B=o.query.redirect||"/";l.push(B)}catch(m){console.error("登录失败:",m)}finally{r.value=!1}};return(g,m)=>(e.openBlock(),e.createElementBlock("div",on,[e.createElementVNode("div",ln,[m[5]||(m[5]=e.createElementVNode("div",{class:"login__header"},[e.createElementVNode("img",{src:ge,alt:"Logo",class:"login__logo"}),e.createElementVNode("h1",{class:"login__title"},"Xto Demo"),e.createElementVNode("p",{class:"login__subtitle"},"后台管理系统")],-1)),e.createVNode(e.unref(N.Form),{ref_key:"formRef",ref:n,model:a,rules:s,class:"login__form","label-width":"0"},{default:e.withCtx(()=>[e.createVNode(e.unref(N.FormItem),{prop:"uid"},{default:e.withCtx(()=>[e.createVNode(e.unref(N.Input),{modelValue:a.uid,"onUpdate:modelValue":m[0]||(m[0]=B=>a.uid=B),placeholder:"用户名","prefix-icon":"👤",size:"large"},null,8,["modelValue"])]),_:1}),e.createVNode(e.unref(N.FormItem),{prop:"password"},{default:e.withCtx(()=>[e.createVNode(e.unref(N.Input),{modelValue:a.password,"onUpdate:modelValue":m[1]||(m[1]=B=>a.password=B),type:"password",placeholder:"密码","prefix-icon":"🔒",size:"large","show-password":"",onKeyup:e.withKeys(h,["enter"])},null,8,["modelValue"])]),_:1}),e.createVNode(e.unref(N.FormItem),null,{default:e.withCtx(()=>[e.createVNode(e.unref(N.Checkbox),{modelValue:d.value,"onUpdate:modelValue":m[2]||(m[2]=B=>d.value=B)},{default:e.withCtx(()=>[...m[3]||(m[3]=[e.createTextVNode("记住我",-1)])]),_:1},8,["modelValue"])]),_:1}),e.createVNode(e.unref(N.FormItem),null,{default:e.withCtx(()=>[e.createVNode(e.unref(y.Button),{type:"primary",size:"large",loading:r.value,class:"login__submit",onClick:h},{default:e.withCtx(()=>[...m[4]||(m[4]=[e.createTextVNode(" 登录 ",-1)])]),_:1},8,["loading"])]),_:1})]),_:1},8,["model"]),m[6]||(m[6]=e.createElementVNode("div",{class:"login__footer"},[e.createElementVNode("p",null,"请输入您的用户名和密码")],-1))])]))}}),[["__scopeId","data-v-ed827d66"]]),an=Object.freeze(Object.defineProperty({__proto__:null,default:Ie},Symbol.toStringTag,{value:"Module"})),rn={class:"error-page"},sn={class:"error-page__content"},Te=F(e.defineComponent({__name:"404",setup(t){const l=R.useRouter(),o=()=>{l.push("/")};return(r,d)=>(e.openBlock(),e.createElementBlock("div",rn,[e.createElementVNode("div",sn,[d[1]||(d[1]=e.createElementVNode("div",{class:"error-page__code"},"404",-1)),d[2]||(d[2]=e.createElementVNode("div",{class:"error-page__title"},"页面不存在",-1)),d[3]||(d[3]=e.createElementVNode("div",{class:"error-page__desc"},"抱歉,您访问的页面不存在或已被删除",-1)),e.createVNode(e.unref(y.Button),{type:"primary",onClick:o},{default:e.withCtx(()=>[...d[0]||(d[0]=[e.createTextVNode("返回首页",-1)])]),_:1})])]))}}),[["__scopeId","data-v-c3c12c24"]]),dn=Object.freeze(Object.defineProperty({__proto__:null,default:Te},Symbol.toStringTag,{value:"Module"})),cn={class:"error-page"},mn={class:"error-page__content"},De=F(e.defineComponent({__name:"403",setup(t){const l=R.useRouter(),o=()=>{l.push("/")};return(r,d)=>(e.openBlock(),e.createElementBlock("div",cn,[e.createElementVNode("div",mn,[d[1]||(d[1]=e.createElementVNode("div",{class:"error-page__code"},"403",-1)),d[2]||(d[2]=e.createElementVNode("div",{class:"error-page__title"},"无访问权限",-1)),d[3]||(d[3]=e.createElementVNode("div",{class:"error-page__desc"},"抱歉,您没有权限访问此页面",-1)),e.createVNode(e.unref(y.Button),{type:"primary",onClick:o},{default:e.withCtx(()=>[...d[0]||(d[0]=[e.createTextVNode("返回首页",-1)])]),_:1})])]))}}),[["__scopeId","data-v-dd5f2795"]]),pn=Object.freeze(Object.defineProperty({__proto__:null,default:De},Symbol.toStringTag,{value:"Module"}));function un(){const t=q(),l=P(),o=te(),r=e.computed(()=>l.nickname||l.username||""),d=e.computed(()=>l.userInfo),a=e.computed(()=>t.appName),s=e.computed(()=>o.isLoggedIn),n=e.computed(()=>t.isDark),h=e.computed(()=>t.theme),g=e.computed(()=>t.isCollapsed),m=e.computed(()=>t.layout);return{userName:r,userInfo:d,appName:a,isLoggedIn:s,isDark:n,theme:h,isCollapsed:g,layout:m,toggleTheme:()=>{t.toggleTheme()},toggleCollapse:()=>{t.toggleCollapse()}}}function fn(){const t=P(),l=a=>{const s=t.permissions;return s.includes("*")?!0:Array.isArray(a)?a.some(n=>s.includes(n)):s.includes(a)},o=a=>{const s=t.roles;return s.includes("admin")?!0:Array.isArray(a)?a.some(n=>s.includes(n)):s.includes(a)},r=e.computed(()=>t.roles.includes("admin")),d=e.computed(()=>t.isLoggedIn);return{hasPermission:l,hasRole:o,isAdmin:r,isLoggedIn:d}}function hn(t,l={}){const{rules:o,onSubmit:r}=l,d=e.ref(),a=e.reactive({...t}),s=e.ref(!1),n=e.ref(!1),h=e.ref(!1),g=()=>{p(),h.value=!1,n.value=!0},m=S=>{Object.assign(a,S),h.value=!0,n.value=!0},B=()=>{n.value=!1,p()},p=()=>{var S;Object.keys(t).forEach(u=>{a[u]=t[u]}),(S=d.value)==null||S.resetFields()};return{formRef:d,formData:a,rules:o,loading:s,visible:n,isEdit:h,openAdd:g,openEdit:m,close:B,resetForm:p,handleSubmit:async()=>{var S;try{await((S=d.value)==null?void 0:S.validate()),s.value=!0,await(r==null?void 0:r(a)),B()}catch(u){console.error(u)}finally{s.value=!1}}}}function Vn(t){const{fetchData:l,defaultPageSize:o=10}=t,r=e.ref(!1),d=e.ref([]),a=e.ref(0),s=e.ref(1),n=e.ref(o),h=e.reactive({}),g=async()=>{r.value=!0;try{const f={...h,page:s.value,pageSize:n.value},b=await l(f);d.value=b.list,a.value=b.total}catch(f){console.error(f)}finally{r.value=!1}},m=()=>{s.value=1,g()},B=()=>{Object.keys(h).forEach(f=>{h[f]=void 0}),s.value=1,g()},p=f=>{s.value=f,g()},x=f=>{n.value=f,s.value=1,g()},S=()=>{g()},u=e.computed(()=>({current:s.value,pageSize:n.value,total:a.value}));return{loading:r,data:d,total:a,currentPage:s,pageSize:n,searchParams:h,pagination:u,getData:g,handleSearch:m,handleReset:B,handlePageChange:p,handleSizeChange:x,refresh:S}}function Nn(t){const o=P().permissions;return Array.isArray(t)?t.some(r=>o.includes(r)):o.includes(t)}function Le(t){const o=P().roles;return Array.isArray(t)?t.some(r=>o.includes(r)):o.includes(t)}function gn(){return Le("admin")}function _n(t,l={}){const o=l.indexPath||"/dashboard";return{path:"/",name:"Layout",component:pe,redirect:o,children:t}}function yn(t){return R.createRouter({history:R.createWebHistory(),routes:t,scrollBehavior:()=>({left:0,top:0})})}function En(t){return T.get("/role/list",{params:t})}function kn(t){return T.get(`/role/${t}`)}function Cn(t){return T.post("/role",t)}function wn(t,l){return T.put(`/role/${t}`,l)}function Sn(t){return T.delete(`/role/${t}`)}function Bn(t,l){return T.patch(`/role/${t}/status`,{status:l})}function xn(){return T.get("/user/v1.0/menu/list")}function $e(t){const l=t||void 0;return T.get(`/user/v1.0/menu/get-menu?appId=${l}`)}function bn(t){return T.post("/menu",t)}function In(t,l){return T.put(`/menu/${t}`,l)}function Tn(t){return T.delete(`/menu/${t}`)}const Dn=["/login","/404","/403"];function Ln(t,l={}){const o=l.whiteList||Dn,r=l.loginPath||"/login",d=l.homePath||"/";t.beforeEach(async(a,s,n)=>{const h=q(),g=P(),m=J();if(h.initTheme(),G())if(a.path===r)n({path:d});else if(g.isLoggedIn)a.name&&a.meta.keepAlive&&h.addCachedView(a.name),n();else try{if(l.fetchUserInfo){const p=await l.fetchUserInfo();g.setUserInfo(p)}else{const p=await be();g.setUserInfo(p)}if(l.fetchMenu){const p=await l.fetchMenu();m.setMenuList(p)}else{const p=await $e();m.setMenuList(p)}l.onLoginSuccess&&l.onLoginSuccess(),a.name&&a.meta.keepAlive&&h.addCachedView(a.name),n({...a,replace:!0})}catch(p){console.error("获取用户信息失败:",p),g.clearUserInfo(),m.clearMenu(),localStorage.removeItem("token"),localStorage.removeItem("refreshToken"),n({path:r,query:{redirect:a.fullPath}})}else o.includes(a.path)?n():n({path:r,query:{redirect:a.fullPath}})}),t.afterEach(()=>{})}function $n(t){return T.get("/user/list",{params:t})}function An(t){return T.get(`/user/${t}`)}function Un(t){return T.post("/user",t)}function Mn(t,l){return T.put(`/user/${t}`,l)}function Rn(t){return T.delete(`/user/${t}`)}function zn(t){return T.post("/user/batch-delete",{ids:t})}function Fn(t,l){return T.patch(`/user/${t}/status`,{status:l})}function Pn(t){return T.post(`/user/${t}/reset-password`)}var w=(t=>(t[t.ENABLED=1]="ENABLED",t[t.DISABLED=0]="DISABLED",t))(w||{}),Ae=(t=>(t[t.UNKNOWN=0]="UNKNOWN",t[t.MALE=1]="MALE",t[t.FEMALE=2]="FEMALE",t))(Ae||{}),M=(t=>(t[t.DIRECTORY=0]="DIRECTORY",t[t.MENU=1]="MENU",t[t.BUTTON=2]="BUTTON",t))(M||{});const On={1:"启用",0:"禁用"},jn={0:"未知",1:"男",2:"女"},qn={0:"目录",1:"菜单",2:"按钮"},ue=[{label:"启用",value:1},{label:"禁用",value:0}],Kn=[{label:"未知",value:0},{label:"男",value:1},{label:"女",value:2}],Ue=[{label:"目录",value:0},{label:"菜单",value:1},{label:"按钮",value:2}],Yn={mounted(t,l){var s;const o=P(),{value:r}=l;if(!r)return;const d=o.permissions;let a=!1;Array.isArray(r)?a=r.some(n=>d.includes(n)||d.includes("*")):a=d.includes(r)||d.includes("*"),a||(s=t.parentNode)==null||s.removeChild(t)}},Hn={class:"dashboard"},Wn={class:"dashboard__stats"},Xn={class:"stat-card__content"},Gn={class:"stat-card__info"},Jn={class:"stat-card__title"},Qn={class:"dashboard__main"},Zn={class:"quick-links"},vn={class:"quick-link__icon"},eo={class:"quick-link__title"},to={class:"activity-list"},no={class:"activity-item__action"},oo={class:"activity-item__time"},lo={class:"system-info"},ao={class:"system-info__item"},ro={class:"system-info__item"},Me=Object.freeze(Object.defineProperty({__proto__:null,default:F(e.defineComponent({__name:"index",setup(t){const l=e.ref([{title:"用户总数",value:1234,icon:"👥",color:"#409eff"},{title:"今日访问",value:567,icon:"👀",color:"#67c23a"},{title:"订单数量",value:890,icon:"📦",color:"#e6a23c"},{title:"销售金额",value:123456,icon:"💰",color:"#f56c6c"}]),o=e.ref([{user:"张三",action:"登录系统",time:"2分钟前",type:"success"},{user:"李四",action:"修改了用户信息",time:"5分钟前",type:"warning"},{user:"王五",action:"创建了新订单",time:"10分钟前",type:"info"},{user:"赵六",action:"删除了测试数据",time:"30分钟前",type:"danger"},{user:"钱七",action:"更新了系统配置",time:"1小时前",type:"primary"}]),r=e.ref([{title:"用户管理",path:"/system/user",icon:"👤"},{title:"角色管理",path:"/system/role",icon:"👥"},{title:"菜单管理",path:"/system/menu",icon:"📋"},{title:"系统设置",path:"/system",icon:"⚙️"}]);return(d,a)=>{const s=e.resolveComponent("router-link");return e.openBlock(),e.createElementBlock("div",Hn,[e.createElementVNode("div",Wn,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(l.value,n=>(e.openBlock(),e.createBlock(e.unref(L.Card),{key:n.title,class:"stat-card"},{default:e.withCtx(()=>[e.createElementVNode("div",Xn,[e.createElementVNode("div",{class:"stat-card__icon",style:e.normalizeStyle({backgroundColor:n.color+"20"})},e.toDisplayString(n.icon),5),e.createElementVNode("div",Gn,[e.createElementVNode("div",Jn,e.toDisplayString(n.title),1),e.createElementVNode("div",{class:"stat-card__value",style:e.normalizeStyle({color:n.color})},e.toDisplayString(n.value.toLocaleString()),5)])])]),_:2},1024))),128))]),e.createElementVNode("div",Qn,[e.createVNode(e.unref(L.Card),{class:"dashboard__quick"},{header:e.withCtx(()=>[...a[0]||(a[0]=[e.createElementVNode("span",{class:"card-title"},"快捷入口",-1)])]),default:e.withCtx(()=>[e.createElementVNode("div",Zn,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(r.value,n=>(e.openBlock(),e.createBlock(s,{key:n.path,to:n.path,class:"quick-link"},{default:e.withCtx(()=>[e.createElementVNode("span",vn,e.toDisplayString(n.icon),1),e.createElementVNode("span",eo,e.toDisplayString(n.title),1)]),_:2},1032,["to"]))),128))])]),_:1}),e.createVNode(e.unref(L.Card),{class:"dashboard__activity"},{header:e.withCtx(()=>[...a[1]||(a[1]=[e.createElementVNode("span",{class:"card-title"},"最近活动",-1)])]),default:e.withCtx(()=>[e.createElementVNode("div",to,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.value,(n,h)=>(e.openBlock(),e.createElementBlock("div",{key:h,class:"activity-item"},[e.createVNode(e.unref(L.Tag),{type:n.type,size:"small"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(n.user),1)]),_:2},1032,["type"]),e.createElementVNode("span",no,e.toDisplayString(n.action),1),e.createElementVNode("span",oo,e.toDisplayString(n.time),1)]))),128))])]),_:1})]),e.createVNode(e.unref(L.Card),{class:"dashboard__system"},{header:e.withCtx(()=>[...a[2]||(a[2]=[e.createElementVNode("span",{class:"card-title"},"系统信息",-1)])]),default:e.withCtx(()=>[e.createElementVNode("div",lo,[a[5]||(a[5]=e.createElementVNode("div",{class:"system-info__item"},[e.createElementVNode("span",{class:"system-info__label"},"系统版本"),e.createElementVNode("span",{class:"system-info__value"},"v1.0.0")],-1)),a[6]||(a[6]=e.createElementVNode("div",{class:"system-info__item"},[e.createElementVNode("span",{class:"system-info__label"},"Vue 版本"),e.createElementVNode("span",{class:"system-info__value"},"3.4.21")],-1)),a[7]||(a[7]=e.createElementVNode("div",{class:"system-info__item"},[e.createElementVNode("span",{class:"system-info__label"},"构建工具"),e.createElementVNode("span",{class:"system-info__value"},"Vite 5")],-1)),a[8]||(a[8]=e.createElementVNode("div",{class:"system-info__item"},[e.createElementVNode("span",{class:"system-info__label"},"UI 组件库"),e.createElementVNode("span",{class:"system-info__value"},"xto")],-1)),e.createElementVNode("div",ao,[a[3]||(a[3]=e.createElementVNode("span",{class:"system-info__label"},"服务器状态",-1)),e.createVNode(e.unref(L.Progress),{percentage:75,status:"success"})]),e.createElementVNode("div",ro,[a[4]||(a[4]=e.createElementVNode("span",{class:"system-info__label"},"内存使用",-1)),e.createVNode(e.unref(L.Progress),{percentage:45})])])]),_:1})])}}}),[["__scopeId","data-v-44648cb1"]])},Symbol.toStringTag,{value:"Module"})),so={class:"user-page"},io={class:"toolbar"},co={class:"data-table"},mo={key:0},po={key:1},uo={class:"pagination-wrapper"},Re=Object.freeze(Object.defineProperty({__proto__:null,default:F(e.defineComponent({__name:"index",setup(t){const l=[{id:1,username:"admin",nickname:"管理员",email:"admin@example.com",phone:"13800138001",status:w.ENABLED,roles:["admin"],createTime:"2024-01-01 10:00:00"},{id:2,username:"zhangsan",nickname:"张三",email:"zhangsan@example.com",phone:"13800138002",status:w.ENABLED,roles:["editor"],createTime:"2024-01-02 10:00:00"},{id:3,username:"lisi",nickname:"李四",email:"lisi@example.com",phone:"13800138003",status:w.DISABLED,roles:["viewer"],createTime:"2024-01-03 10:00:00"},{id:4,username:"wangwu",nickname:"王五",email:"wangwu@example.com",phone:"13800138004",status:w.ENABLED,roles:["editor"],createTime:"2024-01-04 10:00:00"},{id:5,username:"zhaoliu",nickname:"赵六",email:"zhaoliu@example.com",phone:"13800138005",status:w.ENABLED,roles:["viewer"],createTime:"2024-01-05 10:00:00"}],o=e.ref(!1),r=e.ref([]),d=e.ref(0),a=e.ref(1),s=e.ref(10),n=e.reactive({keyword:"",status:void 0}),h=e.ref(!1),g=e.computed(()=>m.id?"编辑用户":"新增用户"),m=e.reactive({id:0,username:"",nickname:"",email:"",phone:"",status:w.ENABLED,roles:[]}),B={username:[{required:!0,message:"请输入用户名",trigger:"blur"}],nickname:[{required:!0,message:"请输入昵称",trigger:"blur"}],email:[{required:!0,message:"请输入邮箱",trigger:"blur"},{type:"email",message:"请输入正确的邮箱格式",trigger:"blur"}]},p=e.ref(),x=()=>{o.value=!0,setTimeout(()=>{let V=[...l];n.keyword&&(V=V.filter(c=>c.username.includes(n.keyword)||c.nickname.includes(n.keyword))),n.status!==void 0&&(V=V.filter(c=>c.status===n.status)),d.value=V.length,r.value=V.slice((a.value-1)*s.value,a.value*s.value),o.value=!1},300)},S=()=>{a.value=1,x()},u=()=>{n.keyword="",n.status=void 0,a.value=1,x()},f=()=>{Object.assign(m,{id:0,username:"",nickname:"",email:"",phone:"",status:w.ENABLED,roles:[]}),h.value=!0},b=V=>{Object.assign(m,V),h.value=!0},$=V=>{A.Message.success("删除成功"),x()},z=async()=>{var V;try{await((V=p.value)==null?void 0:V.validate()),A.Message.success(m.id?"编辑成功":"新增成功"),h.value=!1,x()}catch(c){console.error(c)}},U=V=>{A.Message.success(`已${V.status===w.ENABLED?"启用":"禁用"}用户 ${V.username}`)};return e.onMounted(()=>{x()}),(V,c)=>(e.openBlock(),e.createElementBlock("div",so,[e.createVNode(e.unref(L.Card),{class:"search-card"},{default:e.withCtx(()=>[e.createVNode(e.unref(N.Form),{model:n,inline:""},{default:e.withCtx(()=>[e.createVNode(e.unref(N.FormItem),{label:"关键词"},{default:e.withCtx(()=>[e.createVNode(e.unref(N.Input),{modelValue:n.keyword,"onUpdate:modelValue":c[0]||(c[0]=k=>n.keyword=k),placeholder:"用户名/昵称",clearable:"",onKeyup:e.withKeys(S,["enter"])},null,8,["modelValue"])]),_:1}),e.createVNode(e.unref(N.FormItem),{label:"状态"},{default:e.withCtx(()=>[e.createVNode(e.unref(N.Select),{modelValue:n.status,"onUpdate:modelValue":c[1]||(c[1]=k=>n.status=k),options:e.unref(ue),placeholder:"请选择",clearable:""},null,8,["modelValue","options"])]),_:1}),e.createVNode(e.unref(N.FormItem),null,{default:e.withCtx(()=>[e.createVNode(e.unref(y.Space),null,{default:e.withCtx(()=>[e.createVNode(e.unref(y.Button),{type:"primary",onClick:S},{default:e.withCtx(()=>[...c[11]||(c[11]=[e.createTextVNode("搜索",-1)])]),_:1}),e.createVNode(e.unref(y.Button),{onClick:u},{default:e.withCtx(()=>[...c[12]||(c[12]=[e.createTextVNode("重置",-1)])]),_:1})]),_:1})]),_:1})]),_:1},8,["model"])]),_:1}),e.createVNode(e.unref(L.Card),{class:"table-card"},{default:e.withCtx(()=>[e.createElementVNode("div",io,[e.createVNode(e.unref(y.Button),{type:"primary",onClick:f},{default:e.withCtx(()=>[...c[13]||(c[13]=[e.createTextVNode("新增用户",-1)])]),_:1})]),e.createElementVNode("table",co,[c[18]||(c[18]=e.createElementVNode("thead",null,[e.createElementVNode("tr",null,[e.createElementVNode("th",null,"ID"),e.createElementVNode("th",null,"用户名"),e.createElementVNode("th",null,"昵称"),e.createElementVNode("th",null,"邮箱"),e.createElementVNode("th",null,"手机号"),e.createElementVNode("th",null,"角色"),e.createElementVNode("th",null,"状态"),e.createElementVNode("th",null,"创建时间"),e.createElementVNode("th",null,"操作")])],-1)),e.createElementVNode("tbody",null,[o.value?(e.openBlock(),e.createElementBlock("tr",mo,[...c[14]||(c[14]=[e.createElementVNode("td",{colspan:"9",class:"loading-cell"},"加载中...",-1)])])):r.value.length===0?(e.openBlock(),e.createElementBlock("tr",po,[...c[15]||(c[15]=[e.createElementVNode("td",{colspan:"9",class:"empty-cell"},"暂无数据",-1)])])):(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:2},e.renderList(r.value,k=>(e.openBlock(),e.createElementBlock("tr",{key:k.id},[e.createElementVNode("td",null,e.toDisplayString(k.id),1),e.createElementVNode("td",null,e.toDisplayString(k.username),1),e.createElementVNode("td",null,e.toDisplayString(k.nickname),1),e.createElementVNode("td",null,e.toDisplayString(k.email),1),e.createElementVNode("td",null,e.toDisplayString(k.phone),1),e.createElementVNode("td",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(k.roles,O=>(e.openBlock(),e.createBlock(e.unref(L.Tag),{key:O,size:"small"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(O),1)]),_:2},1024))),128))]),e.createElementVNode("td",null,[e.createVNode(e.unref(N.Switch),{"model-value":k.status===e.unref(w).ENABLED,"onUpdate:modelValue":O=>{k.status=O?e.unref(w).ENABLED:e.unref(w).DISABLED,U(k)}},null,8,["model-value","onUpdate:modelValue"])]),e.createElementVNode("td",null,e.toDisplayString(k.createTime),1),e.createElementVNode("td",null,[e.createVNode(e.unref(y.Space),null,{default:e.withCtx(()=>[e.createVNode(e.unref(y.Button),{type:"primary",link:"",size:"small",onClick:O=>b(k)},{default:e.withCtx(()=>[...c[16]||(c[16]=[e.createTextVNode("编辑",-1)])]),_:1},8,["onClick"]),e.createVNode(e.unref(A.Popconfirm),{title:"确定删除该用户吗?",onConfirm:O=>$(k.id)},{default:e.withCtx(()=>[e.createVNode(e.unref(y.Button),{type:"danger",link:"",size:"small"},{default:e.withCtx(()=>[...c[17]||(c[17]=[e.createTextVNode("删除",-1)])]),_:1})]),_:1},8,["onConfirm"])]),_:2},1024)])]))),128))])]),e.createElementVNode("div",uo,[e.createVNode(e.unref(L.Pagination),{"current-page":a.value,"onUpdate:currentPage":c[2]||(c[2]=k=>a.value=k),"page-size":s.value,"onUpdate:pageSize":c[3]||(c[3]=k=>s.value=k),total:d.value,"page-sizes":[10,20,50,100],layout:"total, sizes, prev, pager, next",onCurrentChange:x,onSizeChange:x},null,8,["current-page","page-size","total"])])]),_:1}),e.createVNode(e.unref(A.Modal),{modelValue:h.value,"onUpdate:modelValue":c[10]||(c[10]=k=>h.value=k),title:g.value,width:"500px"},{footer:e.withCtx(()=>[e.createVNode(e.unref(y.Space),null,{default:e.withCtx(()=>[e.createVNode(e.unref(y.Button),{onClick:c[9]||(c[9]=k=>h.value=!1)},{default:e.withCtx(()=>[...c[19]||(c[19]=[e.createTextVNode("取消",-1)])]),_:1}),e.createVNode(e.unref(y.Button),{type:"primary",onClick:z},{default:e.withCtx(()=>[...c[20]||(c[20]=[e.createTextVNode("确定",-1)])]),_:1})]),_:1})]),default:e.withCtx(()=>[e.createVNode(e.unref(N.Form),{ref_key:"formRef",ref:p,model:m,rules:B,"label-width":"80px"},{default:e.withCtx(()=>[e.createVNode(e.unref(N.FormItem),{label:"用户名",prop:"username"},{default:e.withCtx(()=>[e.createVNode(e.unref(N.Input),{modelValue:m.username,"onUpdate:modelValue":c[4]||(c[4]=k=>m.username=k),placeholder:"请输入用户名"},null,8,["modelValue"])]),_:1}),e.createVNode(e.unref(N.FormItem),{label:"昵称",prop:"nickname"},{default:e.withCtx(()=>[e.createVNode(e.unref(N.Input),{modelValue:m.nickname,"onUpdate:modelValue":c[5]||(c[5]=k=>m.nickname=k),placeholder:"请输入昵称"},null,8,["modelValue"])]),_:1}),e.createVNode(e.unref(N.FormItem),{label:"邮箱",prop:"email"},{default:e.withCtx(()=>[e.createVNode(e.unref(N.Input),{modelValue:m.email,"onUpdate:modelValue":c[6]||(c[6]=k=>m.email=k),placeholder:"请输入邮箱"},null,8,["modelValue"])]),_:1}),e.createVNode(e.unref(N.FormItem),{label:"手机号",prop:"phone"},{default:e.withCtx(()=>[e.createVNode(e.unref(N.Input),{modelValue:m.phone,"onUpdate:modelValue":c[7]||(c[7]=k=>m.phone=k),placeholder:"请输入手机号"},null,8,["modelValue"])]),_:1}),e.createVNode(e.unref(N.FormItem),{label:"状态"},{default:e.withCtx(()=>[e.createVNode(e.unref(N.Switch),{modelValue:m.status,"onUpdate:modelValue":c[8]||(c[8]=k=>m.status=k),"active-value":e.unref(w).ENABLED,"inactive-value":e.unref(w).DISABLED},null,8,["modelValue","active-value","inactive-value"])]),_:1})]),_:1},8,["model"])]),_:1},8,["modelValue","title"])]))}}),[["__scopeId","data-v-d2491ae0"]])},Symbol.toStringTag,{value:"Module"})),fo={class:"role-page"},ho={class:"toolbar"},Vo={class:"data-table"},No={key:0},go={key:1},_o={class:"pagination-wrapper"},ze=Object.freeze(Object.defineProperty({__proto__:null,default:F(e.defineComponent({__name:"index",setup(t){const l=[{id:1,name:"超级管理员",code:"admin",description:"拥有所有权限",status:w.ENABLED,permissions:["*"],createTime:"2024-01-01 10:00:00"},{id:2,name:"编辑",code:"editor",description:"内容编辑权限",status:w.ENABLED,permissions:["user:read","user:write"],createTime:"2024-01-02 10:00:00"},{id:3,name:"访客",code:"viewer",description:"只读权限",status:w.ENABLED,permissions:["user:read"],createTime:"2024-01-03 10:00:00"}],o=e.ref(!1),r=e.ref([]),d=e.ref(0),a=e.ref(1),s=e.ref(10),n=e.reactive({keyword:"",status:void 0}),h=e.ref(!1),g=e.computed(()=>m.id?"编辑角色":"新增角色"),m=e.reactive({id:0,name:"",code:"",description:"",status:w.ENABLED,permissions:[]}),B={name:[{required:!0,message:"请输入角色名称",trigger:"blur"}],code:[{required:!0,message:"请输入角色编码",trigger:"blur"}]},p=e.ref(),x=()=>{o.value=!0,setTimeout(()=>{let U=[...l];n.keyword&&(U=U.filter(V=>V.name.includes(n.keyword)||V.code.includes(n.keyword))),n.status!==void 0&&(U=U.filter(V=>V.status===n.status)),d.value=U.length,r.value=U.slice((a.value-1)*s.value,a.value*s.value),o.value=!1},300)},S=()=>{a.value=1,x()},u=()=>{n.keyword="",n.status=void 0,a.value=1,x()},f=()=>{Object.assign(m,{id:0,name:"",code:"",description:"",status:w.ENABLED,permissions:[]}),h.value=!0},b=U=>{Object.assign(m,U),h.value=!0},$=U=>{A.Message.success("删除成功"),x()},z=async()=>{var U;try{await((U=p.value)==null?void 0:U.validate()),A.Message.success(m.id?"编辑成功":"新增成功"),h.value=!1,x()}catch(V){console.error(V)}};return e.onMounted(()=>{x()}),(U,V)=>(e.openBlock(),e.createElementBlock("div",fo,[e.createVNode(e.unref(L.Card),{class:"search-card"},{default:e.withCtx(()=>[e.createVNode(e.unref(N.Form),{model:n,inline:""},{default:e.withCtx(()=>[e.createVNode(e.unref(N.FormItem),{label:"关键词"},{default:e.withCtx(()=>[e.createVNode(e.unref(N.Input),{modelValue:n.keyword,"onUpdate:modelValue":V[0]||(V[0]=c=>n.keyword=c),placeholder:"角色名称/编码",clearable:"",onKeyup:e.withKeys(S,["enter"])},null,8,["modelValue"])]),_:1}),e.createVNode(e.unref(N.FormItem),{label:"状态"},{default:e.withCtx(()=>[e.createVNode(e.unref(N.Select),{modelValue:n.status,"onUpdate:modelValue":V[1]||(V[1]=c=>n.status=c),options:e.unref(ue),placeholder:"请选择",clearable:""},null,8,["modelValue","options"])]),_:1}),e.createVNode(e.unref(N.FormItem),null,{default:e.withCtx(()=>[e.createVNode(e.unref(y.Space),null,{default:e.withCtx(()=>[e.createVNode(e.unref(y.Button),{type:"primary",onClick:S},{default:e.withCtx(()=>[...V[10]||(V[10]=[e.createTextVNode("搜索",-1)])]),_:1}),e.createVNode(e.unref(y.Button),{onClick:u},{default:e.withCtx(()=>[...V[11]||(V[11]=[e.createTextVNode("重置",-1)])]),_:1})]),_:1})]),_:1})]),_:1},8,["model"])]),_:1}),e.createVNode(e.unref(L.Card),{class:"table-card"},{default:e.withCtx(()=>[e.createElementVNode("div",ho,[e.createVNode(e.unref(y.Button),{type:"primary",onClick:f},{default:e.withCtx(()=>[...V[12]||(V[12]=[e.createTextVNode("新增角色",-1)])]),_:1})]),e.createElementVNode("table",Vo,[V[17]||(V[17]=e.createElementVNode("thead",null,[e.createElementVNode("tr",null,[e.createElementVNode("th",null,"ID"),e.createElementVNode("th",null,"角色名称"),e.createElementVNode("th",null,"角色编码"),e.createElementVNode("th",null,"描述"),e.createElementVNode("th",null,"状态"),e.createElementVNode("th",null,"创建时间"),e.createElementVNode("th",null,"操作")])],-1)),e.createElementVNode("tbody",null,[o.value?(e.openBlock(),e.createElementBlock("tr",No,[...V[13]||(V[13]=[e.createElementVNode("td",{colspan:"7",class:"loading-cell"},"加载中...",-1)])])):r.value.length===0?(e.openBlock(),e.createElementBlock("tr",go,[...V[14]||(V[14]=[e.createElementVNode("td",{colspan:"7",class:"empty-cell"},"暂无数据",-1)])])):(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:2},e.renderList(r.value,c=>(e.openBlock(),e.createElementBlock("tr",{key:c.id},[e.createElementVNode("td",null,e.toDisplayString(c.id),1),e.createElementVNode("td",null,e.toDisplayString(c.name),1),e.createElementVNode("td",null,[e.createVNode(e.unref(L.Tag),{type:"primary",size:"small"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(c.code),1)]),_:2},1024)]),e.createElementVNode("td",null,e.toDisplayString(c.description),1),e.createElementVNode("td",null,[e.createVNode(e.unref(L.Tag),{type:c.status===e.unref(w).ENABLED?"success":"danger",size:"small"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(c.status===e.unref(w).ENABLED?"启用":"禁用"),1)]),_:2},1032,["type"])]),e.createElementVNode("td",null,e.toDisplayString(c.createTime),1),e.createElementVNode("td",null,[e.createVNode(e.unref(y.Space),null,{default:e.withCtx(()=>[e.createVNode(e.unref(y.Button),{type:"primary",link:"",size:"small",onClick:k=>b(c)},{default:e.withCtx(()=>[...V[15]||(V[15]=[e.createTextVNode("编辑",-1)])]),_:1},8,["onClick"]),e.createVNode(e.unref(A.Popconfirm),{title:"确定删除该角色吗?",onConfirm:k=>$(c.id)},{default:e.withCtx(()=>[e.createVNode(e.unref(y.Button),{type:"danger",link:"",size:"small"},{default:e.withCtx(()=>[...V[16]||(V[16]=[e.createTextVNode("删除",-1)])]),_:1})]),_:1},8,["onConfirm"])]),_:2},1024)])]))),128))])]),e.createElementVNode("div",_o,[e.createVNode(e.unref(L.Pagination),{"current-page":a.value,"onUpdate:currentPage":V[2]||(V[2]=c=>a.value=c),"page-size":s.value,"onUpdate:pageSize":V[3]||(V[3]=c=>s.value=c),total:d.value,"page-sizes":[10,20,50,100],layout:"total, sizes, prev, pager, next",onCurrentChange:x,onSizeChange:x},null,8,["current-page","page-size","total"])])]),_:1}),e.createVNode(e.unref(A.Modal),{modelValue:h.value,"onUpdate:modelValue":V[9]||(V[9]=c=>h.value=c),title:g.value,width:"500px"},{footer:e.withCtx(()=>[e.createVNode(e.unref(y.Space),null,{default:e.withCtx(()=>[e.createVNode(e.unref(y.Button),{onClick:V[8]||(V[8]=c=>h.value=!1)},{default:e.withCtx(()=>[...V[18]||(V[18]=[e.createTextVNode("取消",-1)])]),_:1}),e.createVNode(e.unref(y.Button),{type:"primary",onClick:z},{default:e.withCtx(()=>[...V[19]||(V[19]=[e.createTextVNode("确定",-1)])]),_:1})]),_:1})]),default:e.withCtx(()=>[e.createVNode(e.unref(N.Form),{ref_key:"formRef",ref:p,model:m,rules:B,"label-width":"80px"},{default:e.withCtx(()=>[e.createVNode(e.unref(N.FormItem),{label:"角色名称",prop:"name"},{default:e.withCtx(()=>[e.createVNode(e.unref(N.Input),{modelValue:m.name,"onUpdate:modelValue":V[4]||(V[4]=c=>m.name=c),placeholder:"请输入角色名称"},null,8,["modelValue"])]),_:1}),e.createVNode(e.unref(N.FormItem),{label:"角色编码",prop:"code"},{default:e.withCtx(()=>[e.createVNode(e.unref(N.Input),{modelValue:m.code,"onUpdate:modelValue":V[5]||(V[5]=c=>m.code=c),placeholder:"请输入角色编码"},null,8,["modelValue"])]),_:1}),e.createVNode(e.unref(N.FormItem),{label:"描述"},{default:e.withCtx(()=>[e.createVNode(e.unref(N.Input),{modelValue:m.description,"onUpdate:modelValue":V[6]||(V[6]=c=>m.description=c),placeholder:"请输入描述"},null,8,["modelValue"])]),_:1}),e.createVNode(e.unref(N.FormItem),{label:"状态"},{default:e.withCtx(()=>[e.createVNode(e.unref(N.Switch),{modelValue:m.status,"onUpdate:modelValue":V[7]||(V[7]=c=>m.status=c),"active-value":e.unref(w).ENABLED,"inactive-value":e.unref(w).DISABLED},null,8,["modelValue","active-value","inactive-value"])]),_:1})]),_:1},8,["model"])]),_:1},8,["modelValue","title"])]))}}),[["__scopeId","data-v-8ad30bc6"]])},Symbol.toStringTag,{value:"Module"})),yo={class:"menu-page"},Eo={class:"toolbar"},ko={class:"menu-tree"},Co={class:"tree-table"},wo={class:"tree-row tree-row--level-0"},So=["onClick"],Bo=["onClick"],Fe=Object.freeze(Object.defineProperty({__proto__:null,default:F(e.defineComponent({__name:"index",setup(t){const l=[{id:1,parentId:null,name:"Dashboard",path:"/dashboard",component:"dashboard/index",redirect:"",icon:"dashboard",title:"仪表盘",type:M.MENU,sort:1,status:w.ENABLED,hidden:!1,keepAlive:!0},{id:2,parentId:null,name:"System",path:"/system",component:"",redirect:"/system/user",icon:"setting",title:"系统管理",type:M.DIRECTORY,sort:2,status:w.ENABLED,hidden:!1,keepAlive:!1,children:[{id:21,parentId:2,name:"SystemUser",path:"/system/user",component:"system/user/index",redirect:"",icon:"user",title:"用户管理",type:M.MENU,sort:1,status:w.ENABLED,hidden:!1,keepAlive:!0},{id:22,parentId:2,name:"SystemRole",path:"/system/role",component:"system/role/index",redirect:"",icon:"role",title:"角色管理",type:M.MENU,sort:2,status:w.ENABLED,hidden:!1,keepAlive:!0},{id:23,parentId:2,name:"SystemMenu",path:"/system/menu",component:"system/menu/index",redirect:"",icon:"menu",title:"菜单管理",type:M.MENU,sort:3,status:w.ENABLED,hidden:!1,keepAlive:!0}]}],o=e.ref(!1),r=e.ref([]),d=e.ref(!1),a=e.computed(()=>s.id?"编辑菜单":"新增菜单"),s=e.reactive({id:0,parentId:null,name:"",path:"",component:"",redirect:"",icon:"",title:"",type:M.MENU,sort:0,status:w.ENABLED,hidden:!1,keepAlive:!0}),n={name:[{required:!0,message:"请输入菜单名称",trigger:"blur"}],path:[{required:!0,message:"请输入路由路径",trigger:"blur"}],title:[{required:!0,message:"请输入菜单标题",trigger:"blur"}]},h=e.ref(),g=()=>{o.value=!0,setTimeout(()=>{r.value=l,o.value=!1},300)},m=(S=null)=>{Object.assign(s,{id:0,parentId:S,name:"",path:"",component:"",redirect:"",icon:"",title:"",type:M.MENU,sort:0,status:w.ENABLED,hidden:!1,keepAlive:!0}),d.value=!0},B=S=>{Object.assign(s,S),d.value=!0},p=async()=>{var S;try{await((S=h.value)==null?void 0:S.validate()),A.Message.success(s.id?"编辑成功":"新增成功"),d.value=!1,g()}catch(u){console.error(u)}},x=S=>({dashboard:"📊",system:"⚙️",user:"👤",role:"👥",menu:"📋",setting:"🔧"})[S||""]||"📄";return e.onMounted(()=>{g()}),(S,u)=>(e.openBlock(),e.createElementBlock("div",yo,[e.createVNode(e.unref(L.Card),{class:"menu-card"},{default:e.withCtx(()=>[e.createElementVNode("div",Eo,[e.createVNode(e.unref(y.Button),{type:"primary",onClick:u[0]||(u[0]=f=>m())},{default:e.withCtx(()=>[...u[14]||(u[14]=[e.createTextVNode("新增菜单",-1)])]),_:1})]),e.createElementVNode("div",ko,[e.createElementVNode("table",Co,[u[19]||(u[19]=e.createElementVNode("thead",null,[e.createElementVNode("tr",null,[e.createElementVNode("th",null,"菜单名称"),e.createElementVNode("th",null,"图标"),e.createElementVNode("th",null,"路由路径"),e.createElementVNode("th",null,"类型"),e.createElementVNode("th",null,"排序"),e.createElementVNode("th",null,"状态"),e.createElementVNode("th",null,"操作")])],-1)),e.createElementVNode("tbody",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(r.value,f=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:f.id},[e.createElementVNode("tr",wo,[e.createElementVNode("td",null,[e.createElementVNode("span",{class:"menu-name",onClick:b=>B(f)},e.toDisplayString(f.title),9,So)]),e.createElementVNode("td",null,e.toDisplayString(x(f.icon)),1),e.createElementVNode("td",null,e.toDisplayString(f.path),1),e.createElementVNode("td",null,[e.createVNode(e.unref(L.Tag),{type:f.type===e.unref(M).DIRECTORY?"primary":f.type===e.unref(M).MENU?"success":"warning",size:"small"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(f.type===e.unref(M).DIRECTORY?"目录":f.type===e.unref(M).MENU?"菜单":"按钮"),1)]),_:2},1032,["type"])]),e.createElementVNode("td",null,e.toDisplayString(f.sort),1),e.createElementVNode("td",null,[e.createVNode(e.unref(L.Tag),{type:f.status===e.unref(w).ENABLED?"success":"danger",size:"small"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(f.status===e.unref(w).ENABLED?"启用":"禁用"),1)]),_:2},1032,["type"])]),e.createElementVNode("td",null,[e.createVNode(e.unref(y.Space),null,{default:e.withCtx(()=>[e.createVNode(e.unref(y.Button),{type:"primary",link:"",size:"small",onClick:b=>m(f.id)},{default:e.withCtx(()=>[...u[15]||(u[15]=[e.createTextVNode("新增",-1)])]),_:1},8,["onClick"]),e.createVNode(e.unref(y.Button),{type:"primary",link:"",size:"small",onClick:b=>B(f)},{default:e.withCtx(()=>[...u[16]||(u[16]=[e.createTextVNode("编辑",-1)])]),_:1},8,["onClick"])]),_:2},1024)])]),f.children?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:0},e.renderList(f.children,b=>(e.openBlock(),e.createElementBlock("tr",{key:b.id,class:"tree-row tree-row--level-1"},[e.createElementVNode("td",null,[u[17]||(u[17]=e.createElementVNode("span",{class:"tree-indent"},null,-1)),e.createElementVNode("span",{class:"menu-name",onClick:$=>B(b)},e.toDisplayString(b.title),9,Bo)]),e.createElementVNode("td",null,e.toDisplayString(x(b.icon)),1),e.createElementVNode("td",null,e.toDisplayString(b.path),1),e.createElementVNode("td",null,[e.createVNode(e.unref(L.Tag),{type:b.type===e.unref(M).DIRECTORY?"primary":b.type===e.unref(M).MENU?"success":"warning",size:"small"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(b.type===e.unref(M).DIRECTORY?"目录":b.type===e.unref(M).MENU?"菜单":"按钮"),1)]),_:2},1032,["type"])]),e.createElementVNode("td",null,e.toDisplayString(b.sort),1),e.createElementVNode("td",null,[e.createVNode(e.unref(L.Tag),{type:b.status===e.unref(w).ENABLED?"success":"danger",size:"small"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(b.status===e.unref(w).ENABLED?"启用":"禁用"),1)]),_:2},1032,["type"])]),e.createElementVNode("td",null,[e.createVNode(e.unref(y.Space),null,{default:e.withCtx(()=>[e.createVNode(e.unref(y.Button),{type:"primary",link:"",size:"small",onClick:$=>B(b)},{default:e.withCtx(()=>[...u[18]||(u[18]=[e.createTextVNode("编辑",-1)])]),_:1},8,["onClick"])]),_:2},1024)])]))),128)):e.createCommentVNode("",!0)],64))),128))])])])]),_:1}),e.createVNode(e.unref(A.Modal),{modelValue:d.value,"onUpdate:modelValue":u[13]||(u[13]=f=>d.value=f),title:a.value,width:"600px"},{footer:e.withCtx(()=>[e.createVNode(e.unref(y.Space),null,{default:e.withCtx(()=>[e.createVNode(e.unref(y.Button),{onClick:u[12]||(u[12]=f=>d.value=!1)},{default:e.withCtx(()=>[...u[20]||(u[20]=[e.createTextVNode("取消",-1)])]),_:1}),e.createVNode(e.unref(y.Button),{type:"primary",onClick:p},{default:e.withCtx(()=>[...u[21]||(u[21]=[e.createTextVNode("确定",-1)])]),_:1})]),_:1})]),default:e.withCtx(()=>[e.createVNode(e.unref(N.Form),{ref_key:"formRef",ref:h,model:s,rules:n,"label-width":"80px"},{default:e.withCtx(()=>[e.createVNode(e.unref(N.FormItem),{label:"上级菜单"},{default:e.withCtx(()=>[e.createVNode(e.unref(N.Input),{modelValue:s.parentId,"onUpdate:modelValue":u[1]||(u[1]=f=>s.parentId=f),placeholder:"上级菜单ID",disabled:""},null,8,["modelValue"])]),_:1}),e.createVNode(e.unref(N.FormItem),{label:"菜单类型"},{default:e.withCtx(()=>[e.createVNode(e.unref(N.Select),{modelValue:s.type,"onUpdate:modelValue":u[2]||(u[2]=f=>s.type=f),options:e.unref(Ue)},null,8,["modelValue","options"])]),_:1}),e.createVNode(e.unref(N.FormItem),{label:"菜单名称",prop:"name"},{default:e.withCtx(()=>[e.createVNode(e.unref(N.Input),{modelValue:s.name,"onUpdate:modelValue":u[3]||(u[3]=f=>s.name=f),placeholder:"请输入菜单名称(路由name)"},null,8,["modelValue"])]),_:1}),e.createVNode(e.unref(N.FormItem),{label:"菜单标题",prop:"title"},{default:e.withCtx(()=>[e.createVNode(e.unref(N.Input),{modelValue:s.title,"onUpdate:modelValue":u[4]||(u[4]=f=>s.title=f),placeholder:"请输入菜单标题"},null,8,["modelValue"])]),_:1}),e.createVNode(e.unref(N.FormItem),{label:"路由路径",prop:"path"},{default:e.withCtx(()=>[e.createVNode(e.unref(N.Input),{modelValue:s.path,"onUpdate:modelValue":u[5]||(u[5]=f=>s.path=f),placeholder:"请输入路由路径"},null,8,["modelValue"])]),_:1}),e.createVNode(e.unref(N.FormItem),{label:"组件路径"},{default:e.withCtx(()=>[e.createVNode(e.unref(N.Input),{modelValue:s.component,"onUpdate:modelValue":u[6]||(u[6]=f=>s.component=f),placeholder:"请输入组件路径"},null,8,["modelValue"])]),_:1}),e.createVNode(e.unref(N.FormItem),{label:"图标"},{default:e.withCtx(()=>[e.createVNode(e.unref(N.Input),{modelValue:s.icon,"onUpdate:modelValue":u[7]||(u[7]=f=>s.icon=f),placeholder:"请输入图标名称"},null,8,["modelValue"])]),_:1}),e.createVNode(e.unref(N.FormItem),{label:"排序"},{default:e.withCtx(()=>[e.createVNode(e.unref(N.InputNumber),{modelValue:s.sort,"onUpdate:modelValue":u[8]||(u[8]=f=>s.sort=f),min:0},null,8,["modelValue"])]),_:1}),e.createVNode(e.unref(N.FormItem),{label:"状态"},{default:e.withCtx(()=>[e.createVNode(e.unref(N.Switch),{modelValue:s.status,"onUpdate:modelValue":u[9]||(u[9]=f=>s.status=f),"active-value":e.unref(w).ENABLED,"inactive-value":e.unref(w).DISABLED},null,8,["modelValue","active-value","inactive-value"])]),_:1}),e.createVNode(e.unref(N.FormItem),{label:"隐藏"},{default:e.withCtx(()=>[e.createVNode(e.unref(N.Switch),{modelValue:s.hidden,"onUpdate:modelValue":u[10]||(u[10]=f=>s.hidden=f)},null,8,["modelValue"])]),_:1}),e.createVNode(e.unref(N.FormItem),{label:"缓存"},{default:e.withCtx(()=>[e.createVNode(e.unref(N.Switch),{modelValue:s.keepAlive,"onUpdate:modelValue":u[11]||(u[11]=f=>s.keepAlive=f)},null,8,["modelValue"])]),_:1})]),_:1},8,["model"])]),_:1},8,["modelValue","title"])]))}}),[["__scopeId","data-v-2a272a68"]])},Symbol.toStringTag,{value:"Module"}));i.Footer=en,i.Forbidden=De,i.Gender=Ae,i.GenderOptions=Kn,i.GenderText=jn,i.Header=Be,i.Layout=pe,i.Login=Ie,i.MenuType=M,i.MenuTypeOptions=Ue,i.MenuTypeText=qn,i.NotFound=Te,i.Sidebar=Se,i.Status=w,i.StatusOptions=ue,i.StatusText=On,i.Tabs=Jt,i.batchDeleteUsers=zn,i.clearToken=ce,i.createLayoutRoute=_n,i.createMenu=bn,i.createRole=Cn,i.createRouter=yn,i.createUser=Un,i.defaultDynamicRoutes=We,i.deleteMenu=Tn,i.deleteRole=Sn,i.deleteUser=Rn,i.errorRoute=le,i.getMenuList=xn,i.getMenuTree=$e,i.getRefreshToken=Xe,i.getRoleDetail=kn,i.getRoleList=En,i.getToken=G,i.getTokenExpire=ke,i.getUserDetail=An,i.getUserInfo=be,i.getUserList=$n,i.hasPermission=Nn,i.hasRole=Le,i.hasToken=me,i.http=T,i.isAdmin=gn,i.isTokenExpired=we,i.layoutRoute=ae,i.local=E,i.localStorageUtil=W,i.login=xe,i.logout=tn,i.mockMenuData=_e,i.permissionDirective=Yn,i.refreshToken=nn,i.resetPassword=Pn,i.resetRouter=Je,i.router=ee,i.session=Ye,i.sessionStorageUtil=X,i.setRefreshToken=Ee,i.setToken=ye,i.setTokenExpire=Ce,i.setTokenInfo=de,i.setupRouterGuards=Ln,i.staticRoutes=oe,i.updateMenu=In,i.updateRole=wn,i.updateRoleStatus=Bn,i.updateUser=Mn,i.updateUserStatus=Fn,i.useApp=un,i.useAppStore=q,i.useAuth=fn,i.useAuthStore=te,i.useForm=hn,i.useMenuStore=J,i.useTable=Vn,i.useUserStore=P,Object.defineProperty(i,Symbol.toStringTag,{value:"Module"})});
|
package/dist/style.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
.sidebar[data-v-a7668285]{height:100%;display:flex;flex-direction:column;background-color:var(--bg-color);border-right:1px solid var(--color-border-lighter)}.sidebar--collapsed .sidebar__logo[data-v-a7668285]{justify-content:center;padding:0}.sidebar__logo[data-v-a7668285]{height:50px;display:flex;align-items:center;padding:0 20px;gap:10px;border-bottom:1px solid var(--color-border-lighter)}.sidebar__logo-img[data-v-a7668285]{width:32px;height:32px}.sidebar__logo-text[data-v-a7668285]{font-size:16px;font-weight:600;color:var(--color-primary)}.sidebar__menu[data-v-a7668285]{flex:1;border-right:none;overflow-y:auto}.sidebar__user[data-v-a7668285]{padding:10px;border-top:1px solid var(--color-border-lighter);display:flex;align-items:center;justify-content:space-between}.sidebar__user-info[data-v-a7668285]{display:flex;flex-direction:column;gap:2px}.sidebar__user-name[data-v-a7668285]{font-size:14px;font-weight:500}.sidebar__user-role[data-v-a7668285]{font-size:12px;color:var(--color-text-secondary)}.header[data-v-015c45c9]{display:flex;align-items:center;justify-content:space-between;padding:0 20px;height:100%;background-color:var(--bg-color);border-bottom:1px solid var(--color-border-lighter)}.header__left[data-v-015c45c9]{display:flex;align-items:center;gap:15px}.header__collapse[data-v-015c45c9]{width:24px;height:24px;display:flex;align-items:center;justify-content:center;cursor:pointer;color:var(--color-text-regular);transition:color .2s}.header__collapse[data-v-015c45c9]:hover{color:var(--color-primary)}.header__breadcrumb[data-v-015c45c9]{font-size:14px;color:var(--color-text-secondary)}.header__breadcrumb .breadcrumb-separator[data-v-015c45c9]{margin:0 8px;color:var(--color-text-placeholder)}.header__breadcrumb .is-current[data-v-015c45c9]{color:var(--color-text-primary);font-weight:500}.header__right[data-v-015c45c9]{display:flex;align-items:center;gap:8px}.header__action[data-v-015c45c9]{width:32px;height:32px;display:flex;align-items:center;justify-content:center;cursor:pointer;border-radius:var(--border-radius-base);color:var(--color-text-regular);transition:all .2s}.header__action[data-v-015c45c9]:hover{background-color:var(--color-fill);color:var(--color-primary)}.header__user[data-v-015c45c9]{position:relative;margin-left:8px}.header__user-trigger[data-v-015c45c9]{display:flex;align-items:center;gap:8px;cursor:pointer;padding:4px 8px;border-radius:var(--border-radius-base);transition:background-color .2s}.header__user-trigger[data-v-015c45c9]:hover{background-color:var(--color-fill)}.header__user-name[data-v-015c45c9]{font-size:14px;color:var(--color-text-primary);max-width:100px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.header__user-arrow[data-v-015c45c9]{font-size:10px;color:var(--color-text-secondary);transition:transform .2s}.header__user-arrow.is-active[data-v-015c45c9]{transform:rotate(180deg)}.header__avatar[data-v-015c45c9]{width:32px;height:32px;border-radius:50%;background:linear-gradient(135deg,var(--color-primary),var(--color-primary-light-3));display:flex;align-items:center;justify-content:center;color:#fff;font-size:14px;font-weight:500}.header__dropdown[data-v-015c45c9]{position:absolute;top:calc(100% + 8px);right:0;min-width:200px;background-color:var(--bg-color);border-radius:var(--border-radius-base);box-shadow:var(--box-shadow);overflow:hidden;z-index:100}.header__dropdown-header[data-v-015c45c9]{display:flex;align-items:center;gap:12px;padding:16px}.header__dropdown-avatar[data-v-015c45c9]{width:40px;height:40px;border-radius:50%;background:linear-gradient(135deg,var(--color-primary),var(--color-primary-light-3));display:flex;align-items:center;justify-content:center;color:#fff;font-size:16px;font-weight:500}.header__dropdown-info[data-v-015c45c9]{flex:1}.header__dropdown-name[data-v-015c45c9]{font-size:14px;font-weight:500;color:var(--color-text-primary)}.header__dropdown-role[data-v-015c45c9]{font-size:12px;color:var(--color-text-secondary);margin-top:2px}.header__dropdown-divider[data-v-015c45c9]{height:1px;background-color:var(--color-border-lighter)}.header__dropdown-menu[data-v-015c45c9]{padding:8px 0}.header__dropdown-item[data-v-015c45c9]{display:flex;align-items:center;gap:10px;padding:10px 16px;cursor:pointer;font-size:14px;color:var(--color-text-regular);transition:all .2s}.header__dropdown-item[data-v-015c45c9]:hover{background-color:var(--color-fill);color:var(--color-text-primary)}.header__dropdown-item--danger[data-v-015c45c9]{color:var(--color-danger)}.header__dropdown-item--danger[data-v-015c45c9]:hover{background-color:var(--color-danger-light);color:var(--color-danger)}.header__search-modal[data-v-015c45c9]{position:fixed;top:0;left:0;right:0;bottom:0;background-color:#00000080;display:flex;align-items:flex-start;justify-content:center;padding-top:100px;z-index:200}.search-container[data-v-015c45c9]{width:600px;max-width:90vw;background-color:var(--bg-color);border-radius:var(--border-radius-large);box-shadow:var(--box-shadow-dark);overflow:hidden}.search-input-wrapper[data-v-015c45c9]{display:flex;align-items:center;padding:16px 20px;border-bottom:1px solid var(--color-border-lighter)}.search-input-wrapper .search-icon[data-v-015c45c9]{color:var(--color-text-secondary);margin-right:12px}.search-input-wrapper .search-input[data-v-015c45c9]{flex:1;font-size:16px;color:var(--color-text-primary);background:transparent;border:none;outline:none}.search-input-wrapper .search-input[data-v-015c45c9]::placeholder{color:var(--color-text-placeholder)}.search-input-wrapper .search-shortcut[data-v-015c45c9]{font-size:12px;color:var(--color-text-secondary);padding:4px 8px;background-color:var(--color-fill);border-radius:var(--border-radius-base)}.search-results[data-v-015c45c9]{max-height:400px;overflow-y:auto;padding:8px 0}.search-result-item[data-v-015c45c9]{display:flex;align-items:center;gap:12px;padding:12px 20px;cursor:pointer;transition:background-color .2s}.search-result-item[data-v-015c45c9]:hover{background-color:var(--color-fill)}.search-result-item.is-first[data-v-015c45c9]{background-color:var(--color-primary-light-9)}.search-result-item .search-result-icon[data-v-015c45c9]{color:var(--color-text-secondary)}.search-result-item .search-result-info[data-v-015c45c9]{flex:1;display:flex;flex-direction:column;gap:2px}.search-result-item .search-result-title[data-v-015c45c9]{font-size:14px;color:var(--color-text-primary)}.search-result-item .search-result-parent[data-v-015c45c9]{font-size:12px;color:var(--color-text-secondary)}.search-empty[data-v-015c45c9]{padding:40px 20px;text-align:center;color:var(--color-text-secondary);font-size:14px}.settings-drawer .settings-section[data-v-015c45c9]{margin-bottom:24px}.settings-drawer .settings-title[data-v-015c45c9]{font-size:14px;font-weight:500;color:var(--color-text-primary);margin-bottom:12px}.settings-drawer .settings-layout-options[data-v-015c45c9]{display:flex;gap:12px}.settings-drawer .layout-option[data-v-015c45c9]{flex:1;display:flex;flex-direction:column;align-items:center;gap:8px;padding:12px;border:1px solid var(--color-border);border-radius:var(--border-radius-base);cursor:pointer;transition:all .2s}.settings-drawer .layout-option[data-v-015c45c9]:hover{border-color:var(--color-primary-light-5)}.settings-drawer .layout-option.is-active[data-v-015c45c9]{border-color:var(--color-primary);background-color:var(--color-primary-light-9)}.settings-drawer .layout-option__preview[data-v-015c45c9]{width:48px;height:36px;border:1px solid var(--color-border-light);border-radius:2px;overflow:hidden}.settings-drawer .layout-option__label[data-v-015c45c9]{font-size:12px;color:var(--color-text-regular)}.settings-drawer .layout-preview-sidebar[data-v-015c45c9]{display:flex;height:100%}.settings-drawer .layout-preview-sidebar .preview-aside[data-v-015c45c9]{width:25%;height:100%;background-color:var(--color-primary-light-7)}.settings-drawer .layout-preview-sidebar .preview-main[data-v-015c45c9]{flex:1;display:flex;flex-direction:column}.settings-drawer .layout-preview-sidebar .preview-main .preview-header[data-v-015c45c9]{height:20%;background-color:var(--color-border-light)}.settings-drawer .layout-preview-sidebar .preview-main .preview-content[data-v-015c45c9]{flex:1;background-color:var(--bg-color-page)}.settings-drawer .layout-preview-top[data-v-015c45c9]{display:flex;flex-direction:column;height:100%}.settings-drawer .layout-preview-top .preview-header-full[data-v-015c45c9]{height:25%;background-color:var(--color-primary-light-7)}.settings-drawer .layout-preview-top .preview-content-full[data-v-015c45c9]{flex:1;background-color:var(--bg-color-page)}.settings-drawer .layout-preview-mix[data-v-015c45c9]{display:flex;flex-direction:column;height:100%}.settings-drawer .layout-preview-mix .preview-header-mix[data-v-015c45c9]{height:25%;background-color:var(--color-primary-light-7);display:flex}.settings-drawer .layout-preview-mix .preview-header-mix .preview-mix-left[data-v-015c45c9]{width:30%;background-color:var(--color-primary)}.settings-drawer .layout-preview-mix .preview-mix-body[data-v-015c45c9]{flex:1;display:flex}.settings-drawer .layout-preview-mix .preview-mix-body .preview-mix-aside[data-v-015c45c9]{width:25%;background-color:var(--color-primary-light-8)}.settings-drawer .layout-preview-mix .preview-mix-body .preview-mix-content[data-v-015c45c9]{flex:1;background-color:var(--bg-color-page)}.settings-drawer .settings-color-options[data-v-015c45c9]{display:flex;gap:12px}.settings-drawer .color-option[data-v-015c45c9]{width:24px;height:24px;border-radius:4px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:transform .2s}.settings-drawer .color-option[data-v-015c45c9]:hover{transform:scale(1.1)}.settings-drawer .color-option.is-active[data-v-015c45c9]{box-shadow:0 0 0 2px var(--bg-color),0 0 0 4px var(--color-primary)}.settings-drawer .settings-switch-list[data-v-015c45c9]{display:flex;flex-direction:column;gap:12px}.settings-drawer .settings-switch-item[data-v-015c45c9]{display:flex;align-items:center;justify-content:space-between}.settings-drawer .settings-switch-item span[data-v-015c45c9]{font-size:14px;color:var(--color-text-regular)}.settings-drawer .switch-wrapper[data-v-015c45c9]{width:44px;height:22px;display:flex;align-items:center;cursor:pointer}.settings-drawer .switch-wrapper .switch-core[data-v-015c45c9]{width:100%;height:100%;border-radius:11px;background-color:var(--color-border);position:relative;transition:background-color .2s}.settings-drawer .switch-wrapper .switch-core[data-v-015c45c9]:after{content:"";position:absolute;top:2px;left:2px;width:18px;height:18px;background-color:#fff;border-radius:50%;transition:left .2s}.settings-drawer .switch-wrapper.is-checked .switch-core[data-v-015c45c9]{background-color:var(--color-primary)}.settings-drawer .switch-wrapper.is-checked .switch-core[data-v-015c45c9]:after{left:24px}.dropdown-enter-active[data-v-015c45c9],.dropdown-leave-active[data-v-015c45c9]{transition:all .2s ease}.dropdown-enter-from[data-v-015c45c9],.dropdown-leave-to[data-v-015c45c9]{opacity:0;transform:translateY(-10px)}.search-enter-active[data-v-015c45c9],.search-leave-active[data-v-015c45c9]{transition:all .2s ease}.search-enter-from[data-v-015c45c9],.search-leave-to[data-v-015c45c9]{opacity:0}:root.grey-mode[data-v-015c45c9]{filter:grayscale(100%)}.layout[data-v-a3110011]{display:flex;width:100%;height:100%}.layout__aside[data-v-a3110011]{transition:width .3s;overflow:hidden;flex-shrink:0;height:100%}.layout__main[data-v-a3110011]{flex:1;display:flex;flex-direction:column;overflow:hidden;height:100%}.layout__header[data-v-a3110011]{height:50px;background-color:var(--bg-color);border-bottom:1px solid var(--color-border-lighter);flex-shrink:0}.layout__content[data-v-a3110011]{flex:1;overflow:auto;background-color:var(--bg-color-page)}.tabs-wrapper[data-v-9156d8cd]{width:100%;height:100%;padding:0 10px}.tabs-wrapper[data-v-9156d8cd] .t-tabs{height:100%}.tabs-wrapper[data-v-9156d8cd] .t-tabs__header{margin:0;border-bottom:none}.tabs-wrapper[data-v-9156d8cd] .t-tabs__nav{border:none}.tabs-wrapper[data-v-9156d8cd] .t-tabs__item{height:32px;line-height:32px;border:1px solid var(--color-border-lighter);margin-right:5px;border-radius:var(--border-radius-base);padding:0 15px}.tabs-wrapper[data-v-9156d8cd] .t-tabs__item.is-active{background-color:var(--color-primary-light-9);border-color:var(--color-primary)}.tab-label[data-v-9156d8cd]{display:flex;align-items:center;gap:5px}.tab-close[data-v-9156d8cd]{width:14px;height:14px;display:flex;align-items:center;justify-content:center;font-size:10px;border-radius:50%}.tab-close[data-v-9156d8cd]:hover{background-color:var(--color-danger-light);color:var(--color-danger)}.footer[data-v-4852826a]{width:100%;text-align:center;font-size:12px;color:var(--color-text-secondary)}.login[data-v-c2cc908e]{width:100%;min-height:100vh;display:flex;align-items:center;justify-content:flex-end;padding-right:15%;background:linear-gradient(135deg,var(--color-primary-light-9) 0%,var(--color-primary-light-7) 100%)}.login__container[data-v-c2cc908e]{width:400px;padding:40px;background-color:var(--bg-color);border-radius:var(--border-radius-large);box-shadow:var(--box-shadow-dark)}.login__header[data-v-c2cc908e]{text-align:center;margin-bottom:30px}.login__logo[data-v-c2cc908e]{width:60px;height:60px}.login__title[data-v-c2cc908e]{font-size:28px;font-weight:600;color:var(--color-primary);margin:15px 0 5px}.login__subtitle[data-v-c2cc908e]{font-size:14px;color:var(--color-text-secondary)}.login__form[data-v-c2cc908e] .x-form-item{margin-bottom:20px}.login__form[data-v-c2cc908e] .x-input__prefix{margin-right:8px}.login__submit[data-v-c2cc908e]{width:100%}.login__footer[data-v-c2cc908e]{text-align:center;margin-top:20px;font-size:12px;color:var(--color-text-placeholder)}.error-page[data-v-c3c12c24]{width:100%;height:100vh;display:flex;align-items:center;justify-content:center;background-color:var(--bg-color-page)}.error-page__content[data-v-c3c12c24]{text-align:center}.error-page__code[data-v-c3c12c24]{font-size:120px;font-weight:600;color:var(--color-primary);line-height:1;margin-bottom:20px}.error-page__title[data-v-c3c12c24]{font-size:24px;font-weight:500;color:var(--color-text-primary);margin-bottom:10px}.error-page__desc[data-v-c3c12c24]{font-size:14px;color:var(--color-text-secondary);margin-bottom:30px}.error-page[data-v-dd5f2795]{width:100%;height:100vh;display:flex;align-items:center;justify-content:center;background-color:var(--bg-color-page)}.error-page__content[data-v-dd5f2795]{text-align:center}.error-page__code[data-v-dd5f2795]{font-size:120px;font-weight:600;color:var(--color-warning);line-height:1;margin-bottom:20px}.error-page__title[data-v-dd5f2795]{font-size:24px;font-weight:500;color:var(--color-text-primary);margin-bottom:10px}.error-page__desc[data-v-dd5f2795]{font-size:14px;color:var(--color-text-secondary);margin-bottom:30px}.dashboard[data-v-44648cb1]{padding:20px}.dashboard__stats[data-v-44648cb1]{display:grid;grid-template-columns:repeat(4,1fr);gap:20px;margin-bottom:20px}@media (max-width: 1200px){.dashboard__stats[data-v-44648cb1]{grid-template-columns:repeat(2,1fr)}}@media (max-width: 768px){.dashboard__stats[data-v-44648cb1]{grid-template-columns:1fr}}.dashboard__main[data-v-44648cb1]{display:grid;grid-template-columns:repeat(2,1fr);gap:20px;margin-bottom:20px}@media (max-width: 992px){.dashboard__main[data-v-44648cb1]{grid-template-columns:1fr}}.dashboard__quick[data-v-44648cb1],.dashboard__activity[data-v-44648cb1]{min-height:300px}.card-title[data-v-44648cb1]{font-size:16px;font-weight:500}.stat-card__content[data-v-44648cb1]{display:flex;align-items:center;gap:15px}.stat-card__icon[data-v-44648cb1]{width:50px;height:50px;display:flex;align-items:center;justify-content:center;font-size:24px;border-radius:var(--border-radius-base)}.stat-card__info[data-v-44648cb1]{flex:1}.stat-card__title[data-v-44648cb1]{font-size:14px;color:var(--color-text-secondary);margin-bottom:5px}.stat-card__value[data-v-44648cb1]{font-size:24px;font-weight:600}.quick-links[data-v-44648cb1]{display:grid;grid-template-columns:repeat(4,1fr);gap:15px}@media (max-width: 768px){.quick-links[data-v-44648cb1]{grid-template-columns:repeat(2,1fr)}}.quick-link[data-v-44648cb1]{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:20px;border-radius:var(--border-radius-base);background-color:var(--color-fill);text-decoration:none;transition:all var(--transition-duration-fast)}.quick-link[data-v-44648cb1]:hover{background-color:var(--color-primary-light-9);transform:translateY(-2px)}.quick-link__icon[data-v-44648cb1]{font-size:28px;margin-bottom:10px}.quick-link__title[data-v-44648cb1]{font-size:14px;color:var(--color-text-primary)}.activity-list[data-v-44648cb1]{display:flex;flex-direction:column;gap:15px}.activity-item[data-v-44648cb1]{display:flex;align-items:center;gap:10px;padding-bottom:15px;border-bottom:1px solid var(--color-border-lighter)}.activity-item[data-v-44648cb1]:last-child{border-bottom:none;padding-bottom:0}.activity-item__action[data-v-44648cb1]{flex:1;font-size:14px;color:var(--color-text-regular)}.activity-item__time[data-v-44648cb1]{font-size:12px;color:var(--color-text-placeholder)}.system-info[data-v-44648cb1]{display:grid;grid-template-columns:repeat(2,1fr);gap:20px}@media (max-width: 768px){.system-info[data-v-44648cb1]{grid-template-columns:1fr}}.system-info__item[data-v-44648cb1]{display:flex;align-items:center;gap:10px}.system-info__label[data-v-44648cb1]{font-size:14px;color:var(--color-text-secondary);min-width:80px}.system-info__value[data-v-44648cb1]{font-size:14px;color:var(--color-text-primary)}.user-page[data-v-d2491ae0]{padding:20px}.user-page .search-card[data-v-d2491ae0]{margin-bottom:20px}.user-page .toolbar[data-v-d2491ae0]{margin-bottom:15px}.data-table[data-v-d2491ae0]{width:100%;border-collapse:collapse}.data-table th[data-v-d2491ae0],.data-table td[data-v-d2491ae0]{padding:12px;text-align:left;border-bottom:1px solid var(--color-border-lighter)}.data-table th[data-v-d2491ae0]{font-weight:500;color:var(--color-text-regular);background-color:var(--color-fill-light)}.data-table .loading-cell[data-v-d2491ae0],.data-table .empty-cell[data-v-d2491ae0]{text-align:center;color:var(--color-text-secondary);padding:40px}.pagination-wrapper[data-v-d2491ae0]{display:flex;justify-content:flex-end;margin-top:20px}.role-page[data-v-8ad30bc6]{padding:20px}.role-page .search-card[data-v-8ad30bc6]{margin-bottom:20px}.role-page .toolbar[data-v-8ad30bc6]{margin-bottom:15px}.data-table[data-v-8ad30bc6]{width:100%;border-collapse:collapse}.data-table th[data-v-8ad30bc6],.data-table td[data-v-8ad30bc6]{padding:12px;text-align:left;border-bottom:1px solid var(--color-border-lighter)}.data-table th[data-v-8ad30bc6]{font-weight:500;color:var(--color-text-regular);background-color:var(--color-fill-light)}.data-table .loading-cell[data-v-8ad30bc6],.data-table .empty-cell[data-v-8ad30bc6]{text-align:center;color:var(--color-text-secondary);padding:40px}.pagination-wrapper[data-v-8ad30bc6]{display:flex;justify-content:flex-end;margin-top:20px}.menu-page[data-v-2a272a68]{padding:20px}.menu-page .toolbar[data-v-2a272a68]{margin-bottom:15px}.tree-table[data-v-2a272a68]{width:100%;border-collapse:collapse}.tree-table th[data-v-2a272a68],.tree-table td[data-v-2a272a68]{padding:12px;text-align:left;border-bottom:1px solid var(--color-border-lighter)}.tree-table th[data-v-2a272a68]{font-weight:500;color:var(--color-text-regular);background-color:var(--color-fill-light)}.tree-table .tree-row--level-1 td[data-v-2a272a68]:first-child{padding-left:30px}.tree-indent[data-v-2a272a68]{display:inline-block;width:20px}.menu-name[data-v-2a272a68]{cursor:pointer;color:var(--color-primary)}.menu-name[data-v-2a272a68]:hover{text-decoration:underline}
|
|
1
|
+
.sidebar[data-v-a7668285]{height:100%;display:flex;flex-direction:column;background-color:var(--bg-color);border-right:1px solid var(--color-border-lighter)}.sidebar--collapsed .sidebar__logo[data-v-a7668285]{justify-content:center;padding:0}.sidebar__logo[data-v-a7668285]{height:50px;display:flex;align-items:center;padding:0 20px;gap:10px;border-bottom:1px solid var(--color-border-lighter)}.sidebar__logo-img[data-v-a7668285]{width:32px;height:32px}.sidebar__logo-text[data-v-a7668285]{font-size:16px;font-weight:600;color:var(--color-primary)}.sidebar__menu[data-v-a7668285]{flex:1;border-right:none;overflow-y:auto}.sidebar__user[data-v-a7668285]{padding:10px;border-top:1px solid var(--color-border-lighter);display:flex;align-items:center;justify-content:space-between}.sidebar__user-info[data-v-a7668285]{display:flex;flex-direction:column;gap:2px}.sidebar__user-name[data-v-a7668285]{font-size:14px;font-weight:500}.sidebar__user-role[data-v-a7668285]{font-size:12px;color:var(--color-text-secondary)}.header[data-v-015c45c9]{display:flex;align-items:center;justify-content:space-between;padding:0 20px;height:100%;background-color:var(--bg-color);border-bottom:1px solid var(--color-border-lighter)}.header__left[data-v-015c45c9]{display:flex;align-items:center;gap:15px}.header__collapse[data-v-015c45c9]{width:24px;height:24px;display:flex;align-items:center;justify-content:center;cursor:pointer;color:var(--color-text-regular);transition:color .2s}.header__collapse[data-v-015c45c9]:hover{color:var(--color-primary)}.header__breadcrumb[data-v-015c45c9]{font-size:14px;color:var(--color-text-secondary)}.header__breadcrumb .breadcrumb-separator[data-v-015c45c9]{margin:0 8px;color:var(--color-text-placeholder)}.header__breadcrumb .is-current[data-v-015c45c9]{color:var(--color-text-primary);font-weight:500}.header__right[data-v-015c45c9]{display:flex;align-items:center;gap:8px}.header__action[data-v-015c45c9]{width:32px;height:32px;display:flex;align-items:center;justify-content:center;cursor:pointer;border-radius:var(--border-radius-base);color:var(--color-text-regular);transition:all .2s}.header__action[data-v-015c45c9]:hover{background-color:var(--color-fill);color:var(--color-primary)}.header__user[data-v-015c45c9]{position:relative;margin-left:8px}.header__user-trigger[data-v-015c45c9]{display:flex;align-items:center;gap:8px;cursor:pointer;padding:4px 8px;border-radius:var(--border-radius-base);transition:background-color .2s}.header__user-trigger[data-v-015c45c9]:hover{background-color:var(--color-fill)}.header__user-name[data-v-015c45c9]{font-size:14px;color:var(--color-text-primary);max-width:100px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.header__user-arrow[data-v-015c45c9]{font-size:10px;color:var(--color-text-secondary);transition:transform .2s}.header__user-arrow.is-active[data-v-015c45c9]{transform:rotate(180deg)}.header__avatar[data-v-015c45c9]{width:32px;height:32px;border-radius:50%;background:linear-gradient(135deg,var(--color-primary),var(--color-primary-light-3));display:flex;align-items:center;justify-content:center;color:#fff;font-size:14px;font-weight:500}.header__dropdown[data-v-015c45c9]{position:absolute;top:calc(100% + 8px);right:0;min-width:200px;background-color:var(--bg-color);border-radius:var(--border-radius-base);box-shadow:var(--box-shadow);overflow:hidden;z-index:100}.header__dropdown-header[data-v-015c45c9]{display:flex;align-items:center;gap:12px;padding:16px}.header__dropdown-avatar[data-v-015c45c9]{width:40px;height:40px;border-radius:50%;background:linear-gradient(135deg,var(--color-primary),var(--color-primary-light-3));display:flex;align-items:center;justify-content:center;color:#fff;font-size:16px;font-weight:500}.header__dropdown-info[data-v-015c45c9]{flex:1}.header__dropdown-name[data-v-015c45c9]{font-size:14px;font-weight:500;color:var(--color-text-primary)}.header__dropdown-role[data-v-015c45c9]{font-size:12px;color:var(--color-text-secondary);margin-top:2px}.header__dropdown-divider[data-v-015c45c9]{height:1px;background-color:var(--color-border-lighter)}.header__dropdown-menu[data-v-015c45c9]{padding:8px 0}.header__dropdown-item[data-v-015c45c9]{display:flex;align-items:center;gap:10px;padding:10px 16px;cursor:pointer;font-size:14px;color:var(--color-text-regular);transition:all .2s}.header__dropdown-item[data-v-015c45c9]:hover{background-color:var(--color-fill);color:var(--color-text-primary)}.header__dropdown-item--danger[data-v-015c45c9]{color:var(--color-danger)}.header__dropdown-item--danger[data-v-015c45c9]:hover{background-color:var(--color-danger-light);color:var(--color-danger)}.header__search-modal[data-v-015c45c9]{position:fixed;top:0;left:0;right:0;bottom:0;background-color:#00000080;display:flex;align-items:flex-start;justify-content:center;padding-top:100px;z-index:200}.search-container[data-v-015c45c9]{width:600px;max-width:90vw;background-color:var(--bg-color);border-radius:var(--border-radius-large);box-shadow:var(--box-shadow-dark);overflow:hidden}.search-input-wrapper[data-v-015c45c9]{display:flex;align-items:center;padding:16px 20px;border-bottom:1px solid var(--color-border-lighter)}.search-input-wrapper .search-icon[data-v-015c45c9]{color:var(--color-text-secondary);margin-right:12px}.search-input-wrapper .search-input[data-v-015c45c9]{flex:1;font-size:16px;color:var(--color-text-primary);background:transparent;border:none;outline:none}.search-input-wrapper .search-input[data-v-015c45c9]::placeholder{color:var(--color-text-placeholder)}.search-input-wrapper .search-shortcut[data-v-015c45c9]{font-size:12px;color:var(--color-text-secondary);padding:4px 8px;background-color:var(--color-fill);border-radius:var(--border-radius-base)}.search-results[data-v-015c45c9]{max-height:400px;overflow-y:auto;padding:8px 0}.search-result-item[data-v-015c45c9]{display:flex;align-items:center;gap:12px;padding:12px 20px;cursor:pointer;transition:background-color .2s}.search-result-item[data-v-015c45c9]:hover{background-color:var(--color-fill)}.search-result-item.is-first[data-v-015c45c9]{background-color:var(--color-primary-light-9)}.search-result-item .search-result-icon[data-v-015c45c9]{color:var(--color-text-secondary)}.search-result-item .search-result-info[data-v-015c45c9]{flex:1;display:flex;flex-direction:column;gap:2px}.search-result-item .search-result-title[data-v-015c45c9]{font-size:14px;color:var(--color-text-primary)}.search-result-item .search-result-parent[data-v-015c45c9]{font-size:12px;color:var(--color-text-secondary)}.search-empty[data-v-015c45c9]{padding:40px 20px;text-align:center;color:var(--color-text-secondary);font-size:14px}.settings-drawer .settings-section[data-v-015c45c9]{margin-bottom:24px}.settings-drawer .settings-title[data-v-015c45c9]{font-size:14px;font-weight:500;color:var(--color-text-primary);margin-bottom:12px}.settings-drawer .settings-layout-options[data-v-015c45c9]{display:flex;gap:12px}.settings-drawer .layout-option[data-v-015c45c9]{flex:1;display:flex;flex-direction:column;align-items:center;gap:8px;padding:12px;border:1px solid var(--color-border);border-radius:var(--border-radius-base);cursor:pointer;transition:all .2s}.settings-drawer .layout-option[data-v-015c45c9]:hover{border-color:var(--color-primary-light-5)}.settings-drawer .layout-option.is-active[data-v-015c45c9]{border-color:var(--color-primary);background-color:var(--color-primary-light-9)}.settings-drawer .layout-option__preview[data-v-015c45c9]{width:48px;height:36px;border:1px solid var(--color-border-light);border-radius:2px;overflow:hidden}.settings-drawer .layout-option__label[data-v-015c45c9]{font-size:12px;color:var(--color-text-regular)}.settings-drawer .layout-preview-sidebar[data-v-015c45c9]{display:flex;height:100%}.settings-drawer .layout-preview-sidebar .preview-aside[data-v-015c45c9]{width:25%;height:100%;background-color:var(--color-primary-light-7)}.settings-drawer .layout-preview-sidebar .preview-main[data-v-015c45c9]{flex:1;display:flex;flex-direction:column}.settings-drawer .layout-preview-sidebar .preview-main .preview-header[data-v-015c45c9]{height:20%;background-color:var(--color-border-light)}.settings-drawer .layout-preview-sidebar .preview-main .preview-content[data-v-015c45c9]{flex:1;background-color:var(--bg-color-page)}.settings-drawer .layout-preview-top[data-v-015c45c9]{display:flex;flex-direction:column;height:100%}.settings-drawer .layout-preview-top .preview-header-full[data-v-015c45c9]{height:25%;background-color:var(--color-primary-light-7)}.settings-drawer .layout-preview-top .preview-content-full[data-v-015c45c9]{flex:1;background-color:var(--bg-color-page)}.settings-drawer .layout-preview-mix[data-v-015c45c9]{display:flex;flex-direction:column;height:100%}.settings-drawer .layout-preview-mix .preview-header-mix[data-v-015c45c9]{height:25%;background-color:var(--color-primary-light-7);display:flex}.settings-drawer .layout-preview-mix .preview-header-mix .preview-mix-left[data-v-015c45c9]{width:30%;background-color:var(--color-primary)}.settings-drawer .layout-preview-mix .preview-mix-body[data-v-015c45c9]{flex:1;display:flex}.settings-drawer .layout-preview-mix .preview-mix-body .preview-mix-aside[data-v-015c45c9]{width:25%;background-color:var(--color-primary-light-8)}.settings-drawer .layout-preview-mix .preview-mix-body .preview-mix-content[data-v-015c45c9]{flex:1;background-color:var(--bg-color-page)}.settings-drawer .settings-color-options[data-v-015c45c9]{display:flex;gap:12px}.settings-drawer .color-option[data-v-015c45c9]{width:24px;height:24px;border-radius:4px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:transform .2s}.settings-drawer .color-option[data-v-015c45c9]:hover{transform:scale(1.1)}.settings-drawer .color-option.is-active[data-v-015c45c9]{box-shadow:0 0 0 2px var(--bg-color),0 0 0 4px var(--color-primary)}.settings-drawer .settings-switch-list[data-v-015c45c9]{display:flex;flex-direction:column;gap:12px}.settings-drawer .settings-switch-item[data-v-015c45c9]{display:flex;align-items:center;justify-content:space-between}.settings-drawer .settings-switch-item span[data-v-015c45c9]{font-size:14px;color:var(--color-text-regular)}.settings-drawer .switch-wrapper[data-v-015c45c9]{width:44px;height:22px;display:flex;align-items:center;cursor:pointer}.settings-drawer .switch-wrapper .switch-core[data-v-015c45c9]{width:100%;height:100%;border-radius:11px;background-color:var(--color-border);position:relative;transition:background-color .2s}.settings-drawer .switch-wrapper .switch-core[data-v-015c45c9]:after{content:"";position:absolute;top:2px;left:2px;width:18px;height:18px;background-color:#fff;border-radius:50%;transition:left .2s}.settings-drawer .switch-wrapper.is-checked .switch-core[data-v-015c45c9]{background-color:var(--color-primary)}.settings-drawer .switch-wrapper.is-checked .switch-core[data-v-015c45c9]:after{left:24px}.dropdown-enter-active[data-v-015c45c9],.dropdown-leave-active[data-v-015c45c9]{transition:all .2s ease}.dropdown-enter-from[data-v-015c45c9],.dropdown-leave-to[data-v-015c45c9]{opacity:0;transform:translateY(-10px)}.search-enter-active[data-v-015c45c9],.search-leave-active[data-v-015c45c9]{transition:all .2s ease}.search-enter-from[data-v-015c45c9],.search-leave-to[data-v-015c45c9]{opacity:0}:root.grey-mode[data-v-015c45c9]{filter:grayscale(100%)}.layout[data-v-a3110011]{display:flex;width:100%;height:100%}.layout__aside[data-v-a3110011]{transition:width .3s;overflow:hidden;flex-shrink:0;height:100%}.layout__main[data-v-a3110011]{flex:1;display:flex;flex-direction:column;overflow:hidden;height:100%}.layout__header[data-v-a3110011]{height:50px;background-color:var(--bg-color);border-bottom:1px solid var(--color-border-lighter);flex-shrink:0}.layout__content[data-v-a3110011]{flex:1;overflow:auto;background-color:var(--bg-color-page)}.tabs-wrapper[data-v-9156d8cd]{width:100%;height:100%;padding:0 10px}.tabs-wrapper[data-v-9156d8cd] .t-tabs{height:100%}.tabs-wrapper[data-v-9156d8cd] .t-tabs__header{margin:0;border-bottom:none}.tabs-wrapper[data-v-9156d8cd] .t-tabs__nav{border:none}.tabs-wrapper[data-v-9156d8cd] .t-tabs__item{height:32px;line-height:32px;border:1px solid var(--color-border-lighter);margin-right:5px;border-radius:var(--border-radius-base);padding:0 15px}.tabs-wrapper[data-v-9156d8cd] .t-tabs__item.is-active{background-color:var(--color-primary-light-9);border-color:var(--color-primary)}.tab-label[data-v-9156d8cd]{display:flex;align-items:center;gap:5px}.tab-close[data-v-9156d8cd]{width:14px;height:14px;display:flex;align-items:center;justify-content:center;font-size:10px;border-radius:50%}.tab-close[data-v-9156d8cd]:hover{background-color:var(--color-danger-light);color:var(--color-danger)}.footer[data-v-4852826a]{width:100%;text-align:center;font-size:12px;color:var(--color-text-secondary)}.login[data-v-ed827d66]{width:100%;min-height:100vh;display:flex;align-items:center;justify-content:flex-end;padding-right:15%;background:linear-gradient(135deg,var(--color-primary-light-9) 0%,var(--color-primary-light-7) 100%)}.login__container[data-v-ed827d66]{width:400px;padding:40px;background-color:var(--bg-color);border-radius:var(--border-radius-large);box-shadow:var(--box-shadow-dark)}.login__header[data-v-ed827d66]{text-align:center;margin-bottom:30px}.login__logo[data-v-ed827d66]{width:60px;height:60px}.login__title[data-v-ed827d66]{font-size:28px;font-weight:600;color:var(--color-primary);margin:15px 0 5px}.login__subtitle[data-v-ed827d66]{font-size:14px;color:var(--color-text-secondary)}.login__form[data-v-ed827d66] .x-form-item{margin-bottom:20px}.login__form[data-v-ed827d66] .x-input__prefix{margin-right:8px}.login__submit[data-v-ed827d66]{width:100%}.login__footer[data-v-ed827d66]{text-align:center;margin-top:20px;font-size:12px;color:var(--color-text-placeholder)}.error-page[data-v-c3c12c24]{width:100%;height:100vh;display:flex;align-items:center;justify-content:center;background-color:var(--bg-color-page)}.error-page__content[data-v-c3c12c24]{text-align:center}.error-page__code[data-v-c3c12c24]{font-size:120px;font-weight:600;color:var(--color-primary);line-height:1;margin-bottom:20px}.error-page__title[data-v-c3c12c24]{font-size:24px;font-weight:500;color:var(--color-text-primary);margin-bottom:10px}.error-page__desc[data-v-c3c12c24]{font-size:14px;color:var(--color-text-secondary);margin-bottom:30px}.error-page[data-v-dd5f2795]{width:100%;height:100vh;display:flex;align-items:center;justify-content:center;background-color:var(--bg-color-page)}.error-page__content[data-v-dd5f2795]{text-align:center}.error-page__code[data-v-dd5f2795]{font-size:120px;font-weight:600;color:var(--color-warning);line-height:1;margin-bottom:20px}.error-page__title[data-v-dd5f2795]{font-size:24px;font-weight:500;color:var(--color-text-primary);margin-bottom:10px}.error-page__desc[data-v-dd5f2795]{font-size:14px;color:var(--color-text-secondary);margin-bottom:30px}.dashboard[data-v-44648cb1]{padding:20px}.dashboard__stats[data-v-44648cb1]{display:grid;grid-template-columns:repeat(4,1fr);gap:20px;margin-bottom:20px}@media (max-width: 1200px){.dashboard__stats[data-v-44648cb1]{grid-template-columns:repeat(2,1fr)}}@media (max-width: 768px){.dashboard__stats[data-v-44648cb1]{grid-template-columns:1fr}}.dashboard__main[data-v-44648cb1]{display:grid;grid-template-columns:repeat(2,1fr);gap:20px;margin-bottom:20px}@media (max-width: 992px){.dashboard__main[data-v-44648cb1]{grid-template-columns:1fr}}.dashboard__quick[data-v-44648cb1],.dashboard__activity[data-v-44648cb1]{min-height:300px}.card-title[data-v-44648cb1]{font-size:16px;font-weight:500}.stat-card__content[data-v-44648cb1]{display:flex;align-items:center;gap:15px}.stat-card__icon[data-v-44648cb1]{width:50px;height:50px;display:flex;align-items:center;justify-content:center;font-size:24px;border-radius:var(--border-radius-base)}.stat-card__info[data-v-44648cb1]{flex:1}.stat-card__title[data-v-44648cb1]{font-size:14px;color:var(--color-text-secondary);margin-bottom:5px}.stat-card__value[data-v-44648cb1]{font-size:24px;font-weight:600}.quick-links[data-v-44648cb1]{display:grid;grid-template-columns:repeat(4,1fr);gap:15px}@media (max-width: 768px){.quick-links[data-v-44648cb1]{grid-template-columns:repeat(2,1fr)}}.quick-link[data-v-44648cb1]{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:20px;border-radius:var(--border-radius-base);background-color:var(--color-fill);text-decoration:none;transition:all var(--transition-duration-fast)}.quick-link[data-v-44648cb1]:hover{background-color:var(--color-primary-light-9);transform:translateY(-2px)}.quick-link__icon[data-v-44648cb1]{font-size:28px;margin-bottom:10px}.quick-link__title[data-v-44648cb1]{font-size:14px;color:var(--color-text-primary)}.activity-list[data-v-44648cb1]{display:flex;flex-direction:column;gap:15px}.activity-item[data-v-44648cb1]{display:flex;align-items:center;gap:10px;padding-bottom:15px;border-bottom:1px solid var(--color-border-lighter)}.activity-item[data-v-44648cb1]:last-child{border-bottom:none;padding-bottom:0}.activity-item__action[data-v-44648cb1]{flex:1;font-size:14px;color:var(--color-text-regular)}.activity-item__time[data-v-44648cb1]{font-size:12px;color:var(--color-text-placeholder)}.system-info[data-v-44648cb1]{display:grid;grid-template-columns:repeat(2,1fr);gap:20px}@media (max-width: 768px){.system-info[data-v-44648cb1]{grid-template-columns:1fr}}.system-info__item[data-v-44648cb1]{display:flex;align-items:center;gap:10px}.system-info__label[data-v-44648cb1]{font-size:14px;color:var(--color-text-secondary);min-width:80px}.system-info__value[data-v-44648cb1]{font-size:14px;color:var(--color-text-primary)}.user-page[data-v-d2491ae0]{padding:20px}.user-page .search-card[data-v-d2491ae0]{margin-bottom:20px}.user-page .toolbar[data-v-d2491ae0]{margin-bottom:15px}.data-table[data-v-d2491ae0]{width:100%;border-collapse:collapse}.data-table th[data-v-d2491ae0],.data-table td[data-v-d2491ae0]{padding:12px;text-align:left;border-bottom:1px solid var(--color-border-lighter)}.data-table th[data-v-d2491ae0]{font-weight:500;color:var(--color-text-regular);background-color:var(--color-fill-light)}.data-table .loading-cell[data-v-d2491ae0],.data-table .empty-cell[data-v-d2491ae0]{text-align:center;color:var(--color-text-secondary);padding:40px}.pagination-wrapper[data-v-d2491ae0]{display:flex;justify-content:flex-end;margin-top:20px}.role-page[data-v-8ad30bc6]{padding:20px}.role-page .search-card[data-v-8ad30bc6]{margin-bottom:20px}.role-page .toolbar[data-v-8ad30bc6]{margin-bottom:15px}.data-table[data-v-8ad30bc6]{width:100%;border-collapse:collapse}.data-table th[data-v-8ad30bc6],.data-table td[data-v-8ad30bc6]{padding:12px;text-align:left;border-bottom:1px solid var(--color-border-lighter)}.data-table th[data-v-8ad30bc6]{font-weight:500;color:var(--color-text-regular);background-color:var(--color-fill-light)}.data-table .loading-cell[data-v-8ad30bc6],.data-table .empty-cell[data-v-8ad30bc6]{text-align:center;color:var(--color-text-secondary);padding:40px}.pagination-wrapper[data-v-8ad30bc6]{display:flex;justify-content:flex-end;margin-top:20px}.menu-page[data-v-2a272a68]{padding:20px}.menu-page .toolbar[data-v-2a272a68]{margin-bottom:15px}.tree-table[data-v-2a272a68]{width:100%;border-collapse:collapse}.tree-table th[data-v-2a272a68],.tree-table td[data-v-2a272a68]{padding:12px;text-align:left;border-bottom:1px solid var(--color-border-lighter)}.tree-table th[data-v-2a272a68]{font-weight:500;color:var(--color-text-regular);background-color:var(--color-fill-light)}.tree-table .tree-row--level-1 td[data-v-2a272a68]:first-child{padding-left:30px}.tree-indent[data-v-2a272a68]{display:inline-block;width:20px}.menu-name[data-v-2a272a68]{cursor:pointer;color:var(--color-primary)}.menu-name[data-v-2a272a68]:hover{text-decoration:underline}
|
package/package.json
CHANGED
package/src/api/auth.ts
CHANGED
|
@@ -7,20 +7,20 @@ import type { LoginParams, LoginResult, UserInfo } from '@/types/api'
|
|
|
7
7
|
|
|
8
8
|
// 登录
|
|
9
9
|
export function login(data: LoginParams) {
|
|
10
|
-
return http.post<LoginResult>('/user/
|
|
10
|
+
return http.post<LoginResult>('/user/v1.0/login/by-domain', data)
|
|
11
11
|
}
|
|
12
12
|
|
|
13
13
|
// 登出
|
|
14
14
|
export function logout() {
|
|
15
|
-
return http.
|
|
15
|
+
return http.put('/user/v1.0/user/logout')
|
|
16
16
|
}
|
|
17
17
|
|
|
18
18
|
// 获取用户信息
|
|
19
19
|
export function getUserInfo() {
|
|
20
|
-
return http.get<UserInfo>('/user/user-
|
|
20
|
+
return http.get<UserInfo>('/user/v1.0/user/get-me')
|
|
21
21
|
}
|
|
22
22
|
|
|
23
23
|
// 刷新 Token
|
|
24
24
|
export function refreshToken(refreshToken: string) {
|
|
25
|
-
return http.post<{ token: string; expireTime: number }>('/user/
|
|
25
|
+
return http.post<{ token: string; expireTime: number }>('/user/v1.0/refresh', { refreshToken })
|
|
26
26
|
}
|
package/src/api/system.ts
CHANGED
|
@@ -41,12 +41,13 @@ export function updateRoleStatus(id: string | number, status: number) {
|
|
|
41
41
|
|
|
42
42
|
// 获取菜单列表
|
|
43
43
|
export function getMenuList() {
|
|
44
|
-
return http.get<MenuItem[]>('/user/
|
|
44
|
+
return http.get<MenuItem[]>('/user/v1.0/menu/list')
|
|
45
45
|
}
|
|
46
46
|
|
|
47
|
-
//
|
|
48
|
-
export function getMenuTree() {
|
|
49
|
-
|
|
47
|
+
// 获取用户菜单(根据 appId)
|
|
48
|
+
export function getMenuTree(appId?: string) {
|
|
49
|
+
const id = appId || import.meta.env.VITE_APP_ID
|
|
50
|
+
return http.get<MenuItem[]>(`/user/v1.0/menu/get-menu?appId=${id}`)
|
|
50
51
|
}
|
|
51
52
|
|
|
52
53
|
// 创建菜单
|
package/src/types/api.d.ts
CHANGED
|
@@ -14,12 +14,12 @@ const loading = ref(false)
|
|
|
14
14
|
const rememberMe = ref(false)
|
|
15
15
|
|
|
16
16
|
const formData = reactive({
|
|
17
|
-
|
|
18
|
-
password: '
|
|
17
|
+
uid: '',
|
|
18
|
+
password: ''
|
|
19
19
|
})
|
|
20
20
|
|
|
21
21
|
const rules: Record<string, any[]> = {
|
|
22
|
-
|
|
22
|
+
uid: [
|
|
23
23
|
{ required: true, message: '请输入用户名', trigger: 'blur' }
|
|
24
24
|
],
|
|
25
25
|
password: [
|
|
@@ -38,8 +38,11 @@ const handleLogin = async () => {
|
|
|
38
38
|
|
|
39
39
|
// 调用登录 API
|
|
40
40
|
const result = await login({
|
|
41
|
-
|
|
42
|
-
|
|
41
|
+
appId: import.meta.env.VITE_APP_ID,
|
|
42
|
+
clientId: import.meta.env.VITE_APP_CLIENT_ID,
|
|
43
|
+
uid: formData.uid,
|
|
44
|
+
password: formData.password,
|
|
45
|
+
code: true
|
|
43
46
|
})
|
|
44
47
|
|
|
45
48
|
// 保存 token
|
|
@@ -76,9 +79,9 @@ const handleLogin = async () => {
|
|
|
76
79
|
class="login__form"
|
|
77
80
|
label-width="0"
|
|
78
81
|
>
|
|
79
|
-
<FormItem prop="
|
|
82
|
+
<FormItem prop="uid">
|
|
80
83
|
<Input
|
|
81
|
-
v-model="formData.
|
|
84
|
+
v-model="formData.uid"
|
|
82
85
|
placeholder="用户名"
|
|
83
86
|
prefix-icon="👤"
|
|
84
87
|
size="large"
|
|
@@ -115,7 +118,7 @@ const handleLogin = async () => {
|
|
|
115
118
|
</Form>
|
|
116
119
|
|
|
117
120
|
<div class="login__footer">
|
|
118
|
-
<p
|
|
121
|
+
<p>请输入您的用户名和密码</p>
|
|
119
122
|
</div>
|
|
120
123
|
</div>
|
|
121
124
|
</div>
|