xto-fronted 0.4.20 → 0.4.21
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/components/Layout/TopMenu.vue.d.ts +3 -1
- package/dist/index-B3kL6i_g.js +345 -0
- package/dist/index-CIb06BxE.js +372 -0
- package/dist/index-DGh_w_v1.js +475 -0
- package/dist/index-DUv28uVd.js +142 -0
- package/dist/index-HMYRCPrs.js +2326 -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/assets/styles/_dark.scss +48 -0
- package/src/components/Layout/TopMenu.vue +667 -1
- package/src/components/Layout/index.vue +124 -120
package/dist/index.es.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { F as s, c as t, G as o, d as r, e as u, H as n, L as i, i as p, M as l, b as d, f as T, g, h as R, S as k, a as c, j as h, T as f, k as S, l as U, m, n as y, o as M, p as x, q as A, r as b, s as D, t as L, u as C, v as F, w as G, x as I, y as E, z as O, A as v, B as w, C as P, D as j, E as q, I as B, J as H, K as N, N as z, O as J, P as K, Q, R as V, U as W, V as X, W as Y, X as Z, Y as $, Z as _, $ as ee, a0 as ae, a1 as se, a2 as te, a3 as oe, a4 as re, a5 as ue, a6 as ne, a7 as ie, a8 as pe, a9 as le, aa as de, ab as Te, ac as ge, ad as Re, ae as ke, af as ce, ag as he, ah as fe, ai as Se, aj as Ue, ak as me, al as ye, am as Me, an as xe, ao as Ae, ap as be, aq as De, ar as Le, as as Ce, at as Fe, au as Ge, av as Ie, aw as Ee, ax as Oe, ay as ve } from "./index-
|
|
1
|
+
import { F as s, c as t, G as o, d as r, e as u, H as n, L as i, i as p, M as l, b as d, f as T, g, h as R, S as k, a as c, j as h, T as f, k as S, l as U, m, n as y, o as M, p as x, q as A, r as b, s as D, t as L, u as C, v as F, w as G, x as I, y as E, z as O, A as v, B as w, C as P, D as j, E as q, I as B, J as H, K as N, N as z, O as J, P as K, Q, R as V, U as W, V as X, W as Y, X as Z, Y as $, Z as _, $ as ee, a0 as ae, a1 as se, a2 as te, a3 as oe, a4 as re, a5 as ue, a6 as ne, a7 as ie, a8 as pe, a9 as le, aa as de, ab as Te, ac as ge, ad as Re, ae as ke, af as ce, ag as he, ah as fe, ai as Se, aj as Ue, ak as me, al as ye, am as Me, an as xe, ao as Ae, ap as be, aq as De, ar as Le, as as Ce, at as Fe, au as Ge, av as Ie, aw as Ee, ax as Oe, ay as ve } from "./index-HMYRCPrs.js";
|
|
2
2
|
export {
|
|
3
3
|
s as Footer,
|
|
4
4
|
t as Forbidden,
|
package/dist/index.umd.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(o,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):(o=typeof globalThis<"u"?globalThis:o||self,e(o.XtoFronted={},o.Vue,o.Pinia,o.VueRouter,o.navigation,o.base,o.feedback,o.form,o.axios,o.data))})(this,function(o,e,v,M,P,N,U,_,lt,$){"use strict";const H="xto_",Se=t=>({get(n){const l=t.getItem(H+n);if(!l)return null;try{return JSON.parse(l)}catch{return l}},set(n,l){if(l==null){t.removeItem(H+n);return}const i=typeof l=="string"?l:JSON.stringify(l);t.setItem(H+n,i)},remove(n){t.removeItem(H+n)},clear(){Object.keys(t).forEach(l=>{l.startsWith(H)&&t.removeItem(l)})}}),X=Se(window.localStorage),G=Se(window.sessionStorage),w={get:X.get,set:X.set,remove:X.remove,clear:X.clear},at={get:G.get,set:G.set,remove:G.remove,clear:G.clear},j=v.defineStore("app",()=>{const t=e.ref(w.get("appName")||"XTO App"),n=e.ref(w.get("indexPath")||"/dashboard"),l=e.ref(w.get("isDark")||!1),i=e.ref(w.get("theme")||"light"),c=e.ref(w.get("layout")||"sidebar"),s=e.ref(w.get("isCollapsed")||!1),p=e.ref(w.get("showTabs")??!0),r=e.ref(w.get("showFooter")??!0),f=e.ref(w.get("showBreadcrumb")??!0),V=e.ref(w.get("primaryColor")||"#409eff"),d=e.ref([]),g=e.computed(()=>l.value?"dark":"light"),E=T=>{t.value=T,w.set("appName",T)},I=T=>{n.value=T,w.set("indexPath",T)},y=()=>{l.value=!l.value,i.value=l.value?"dark":"light",m()},h=T=>{i.value=T,l.value=T==="dark",m()},m=()=>{const T=document.documentElement;l.value?T.classList.add("dark"):T.classList.remove("dark"),w.set("isDark",l.value),w.set("theme",i.value)},B=()=>{s.value=!s.value,w.set("isCollapsed",s.value)},z=T=>{c.value=T,w.set("layout",T)},F=()=>{p.value=!p.value,w.set("showTabs",p.value)},x=()=>{r.value=!r.value,w.set("showFooter",r.value)},u=()=>{f.value=!f.value,w.set("showBreadcrumb",f.value)},a=T=>{V.value=T,document.documentElement.style.setProperty("--color-primary",T),w.set("primaryColor",T)},C=T=>{d.value.includes(T)||d.value.push(T)},q=T=>{const ae=d.value.indexOf(T);ae>-1&&d.value.splice(ae,1)},Ce=()=>{d.value=[]},we=()=>{m(),V.value!=="#409eff"&&document.documentElement.style.setProperty("--color-primary",V.value)};return e.watch(l,m),{appName:t,indexPath:n,isDark:l,theme:i,layout:c,isCollapsed:s,showTabs:p,showFooter:r,showBreadcrumb:f,primaryColor:V,cachedViews:d,themeClass:g,setAppName:E,setIndexPath:I,toggleTheme:y,toggleCollapse:B,setTheme:h,setLayout:z,toggleTabs:F,toggleFooter:x,toggleBreadcrumb:u,setPrimaryColor:a,addCachedView:C,removeCachedView:q,clearCachedViews:Ce,initTheme:we}}),re="menu_list",rt={menuCode:"home",menuName:"首页",menuUrl:"/dashboard",icon:"home",closable:!1,isDefault:!1,isOut:!1},K=v.defineStore("menu",()=>{const t=e.ref(w.get(re)||[]),n=e.computed(()=>t.value.length>0);return{menuList:t,hasMenu:n,setMenuList:c=>{t.value=[rt,...c],w.set(re,t.value)},clearMenu:()=>{t.value=[],w.remove(re)}}}),be="/vite.svg",se="user_info",O=v.defineStore("user",()=>{const t=e.ref(w.get(se)),n=e.computed(()=>!!t.value),l=e.computed(()=>{var g;return((g=t.value)==null?void 0:g.userId)||""}),i=e.computed(()=>{var g;return((g=t.value)==null?void 0:g.userName)||""}),c=e.computed(()=>{var g;return((g=t.value)==null?void 0:g.departmentName)||""}),s=e.computed(()=>{var g;return((g=t.value)==null?void 0:g.email)||""}),p=e.computed(()=>{var g;return((g=t.value)==null?void 0:g.mobilePhone)||""}),r=e.computed(()=>{var g;return((g=t.value)==null?void 0:g.positionName)||""}),f=e.computed(()=>{var g;return((g=t.value)==null?void 0:g.avatar)||""});return{userInfo:t,isLoggedIn:n,userId:l,userName:i,departmentName:c,email:s,mobilePhone:p,positionName:r,avatar:f,setUserInfo:g=>{t.value=g,w.set(se,g)},clearUserInfo:()=>{t.value=null,w.remove(se)}}}),ie="token",ce="token_type",de="refresh_token",me="expires_time",pe="refresh_time",ue="code",J=()=>w.get(ie),xe=t=>{w.set(ie,t)},Ie=()=>w.get(ce),Te=t=>{w.set(ce,t)},st=()=>w.get(de),De=t=>{w.set(de,t)},Le=()=>w.get(me),$e=t=>{w.set(me,t)},it=()=>w.get(pe),Ue=t=>{w.set(pe,t)},ct=()=>w.get(ue),Me=t=>{w.set(ue,t)},fe=t=>{xe(t.access_token),Te(t.token_type||"Bearer"),De(t.refresh_token),$e(t.expires_time),Ue(t.refresh_time),t.code&&Me(t.code)},he=()=>{w.remove(ie),w.remove(ce),w.remove(de),w.remove(me),w.remove(pe),w.remove(ue)},Ae=()=>{const t=Le();return t?Date.now()>t:!0},ge=()=>!!J()&&!Ae(),ee=v.defineStore("auth",()=>{const t=e.ref(J()),n=e.computed(()=>ge()),l=e.ref(""),i=e.ref(""),c=e.ref(""),s=e.ref("/login");return{token:t,isLoggedIn:n,baseUrl:l,appId:i,clientId:c,loginPath:s,login:E=>{t.value=E.access_token,fe(E)},logout:()=>{t.value=null,he()},setBaseUrl:E=>{l.value=E},setAppId:E=>{i.value=E},setClientId:E=>{c.value=E},setLoginPath:E=>{s.value=E}}}),dt={class:"sidebar__logo"},mt={class:"sidebar__menu-icon"},pt={key:1,class:"sidebar__menu-char"},ut={class:"sidebar__menu-icon"},ft={key:1,class:"sidebar__menu-char"},ht={class:"sidebar__menu-icon"},gt={key:1,class:"sidebar__menu-char"},_t={key:0,class:"sidebar__user"},Vt={class:"sidebar__user-info"},Nt={class:"sidebar__user-name"},yt={class:"sidebar__user-role"},kt=e.defineComponent({__name:"Sidebar",props:{menuList:{default:()=>[]}},setup(t){const n=t,l=M.useRoute(),i=M.useRouter(),c=K(),s=O(),p=ee(),r=j(),f=e.computed(()=>n.menuList.length>0?n.menuList:c.menuList),V=e.computed(()=>r.isCollapsed),d=e.computed(()=>l.path),g=e.computed(()=>r.isDark?"#1d1e1f":"#fff"),E=e.computed(()=>r.isDark?"#cfd3dc":"#303133"),I=e.computed(()=>"#409eff"),y=x=>{x&&x!==l.path&&i.push(x)},h=()=>{p.logout(),s.clearUserInfo(),c.clearMenu(),i.push("/login")},m=new Set(["arrow-up","arrow-down","arrow-left","arrow-right","caret-down","caret-right","plus","minus","close","check","edit","delete","copy","download","upload","refresh","search","filter","more","setting","share","loading","info","success","warning","error","question","user","user-add","user-group","logout","login","file","folder","folder-open","document","image","video","music","camera","mail","phone","chat","bell","message","eye","eye-off","calendar","clock","history","timer","location","map","globe","star","heart","thumb-up","link","external-link","lock","unlock","key","home","menu","menu-fold","menu-unfold","sidebar-fold","sidebar-expand","sidebar-left","dashboard","chart","chart-pie","chart-line","report","analytics","system","permission","role","user-manage","log","notification","app","list","grid","fullscreen","fullscreen-exit","zoom-in","zoom-out","print","bookmark","tag","code","terminal","database","server","cloud","gift","moon","sun","theme","skin"]),B=x=>{if(!x||x==="")return"";if(x.startsWith("tineco-icon-")){const a=x.replace("tineco-icon-","");return{home:"home",dashboard:"dashboard",system:"system",user:"user",role:"role",menu:"list",setting:"setting",file:"file",folder:"folder",chart:"chart",report:"report",analytics:"analytics"}[a]||a}return{dashboard:"dashboard",system:"system",user:"user",role:"role",menu:"list",setting:"setting",home:"home",chart:"chart",report:"report",analytics:"analytics",permission:"permission",log:"log",notification:"notification",app:"app",list:"list",grid:"grid"}[x]||x},z=x=>x?x.charAt(0):"",F=x=>m.has(x);return(x,u)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["sidebar",{"sidebar--collapsed":V.value}])},[e.createElementVNode("div",dt,[u[0]||(u[0]=e.createElementVNode("img",{src:be,alt:"Logo",class:"sidebar__logo-img"},null,-1)),e.withDirectives(e.createElementVNode("span",{class:"sidebar__logo-text"},e.toDisplayString(e.unref(r).appName),513),[[e.vShow,!V.value]])]),e.createVNode(e.unref(P.Menu),{"default-active":d.value,mode:"vertical",collapse:V.value,"collapse-transition":!1,"background-color":g.value,"text-color":E.value,"active-text-color":I.value,class:"sidebar__menu",onSelect:y},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(f.value,a=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:a.menuUrl},[a.children&&a.children.length>0?(e.openBlock(),e.createBlock(e.unref(P.SubMenu),{key:0,index:a.menuUrl},{title:e.withCtx(()=>[e.createElementVNode("span",mt,[F(B(a.icon))?(e.openBlock(),e.createBlock(e.unref(N.Icon),{key:0,name:B(a.icon),size:16},null,8,["name"])):(e.openBlock(),e.createElementBlock("span",pt,e.toDisplayString(z(a.menuName)),1))]),e.createElementVNode("span",null,e.toDisplayString(a.menuName),1)]),default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(a.children,C=>(e.openBlock(),e.createBlock(e.unref(P.MenuItem),{key:C.menuUrl,index:C.menuUrl},{default:e.withCtx(()=>[e.createElementVNode("span",ut,[F(B(C.icon))?(e.openBlock(),e.createBlock(e.unref(N.Icon),{key:0,name:B(C.icon),size:16},null,8,["name"])):(e.openBlock(),e.createElementBlock("span",ft,e.toDisplayString(z(C.menuName)),1))]),e.createElementVNode("span",null,e.toDisplayString(C.menuName),1)]),_:2},1032,["index"]))),128))]),_:2},1032,["index"])):(e.openBlock(),e.createBlock(e.unref(P.MenuItem),{key:1,index:a.menuUrl},{default:e.withCtx(()=>[e.createElementVNode("span",ht,[F(B(a.icon))?(e.openBlock(),e.createBlock(e.unref(N.Icon),{key:0,name:B(a.icon),size:16},null,8,["name"])):(e.openBlock(),e.createElementBlock("span",gt,e.toDisplayString(z(a.menuName)),1))]),e.createElementVNode("span",null,e.toDisplayString(a.menuName),1)]),_:2},1032,["index"]))],64))),128))]),_:1},8,["default-active","collapse","background-color","text-color","active-text-color"]),V.value?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("div",_t,[e.createElementVNode("div",Vt,[e.createElementVNode("span",Nt,e.toDisplayString(e.unref(s).userName),1),e.createElementVNode("span",yt,e.toDisplayString(e.unref(s).departmentName),1)]),e.createVNode(e.unref(N.Button),{type:"text",size:"small",onClick:h},{default:e.withCtx(()=>[...u[1]||(u[1]=[e.createTextVNode("退出",-1)])]),_:1})]))],2))}}),R=(t,n)=>{const l=t.__vccOpts||t;for(const[i,c]of n)l[i]=c;return l},ze=R(kt,[["__scopeId","data-v-480fc818"]]),Et={class:"header"},Ct={class:"header__left"},wt={key:0,class:"header__breadcrumb"},Bt={key:0,class:"breadcrumb-separator"},St={class:"header__right"},bt=["title"],xt={class:"header__avatar"},It={class:"header__user-name"},Tt={key:0,class:"header__dropdown"},Dt={class:"header__dropdown-header"},Lt={class:"header__dropdown-avatar"},$t={class:"header__dropdown-info"},Ut={class:"header__dropdown-name"},Mt={class:"header__dropdown-role"},At={class:"header__dropdown-menu"},zt={class:"search-container"},Ft={class:"search-input-wrapper"},Rt={key:0,class:"search-results"},Pt=["onClick"],Ot={class:"search-result-info"},qt={class:"search-result-title"},jt={key:0,class:"search-result-parent"},Kt={key:1,class:"search-empty"},Yt={class:"settings-drawer"},Wt={class:"settings-section"},Ht={class:"settings-layout-options"},Xt=["onClick"],Gt={class:"layout-option__preview"},Jt={key:0,class:"layout-preview-sidebar"},Qt={key:1,class:"layout-preview-top"},Zt={key:2,class:"layout-preview-mix"},vt={class:"layout-option__label"},en={class:"settings-section"},tn={class:"settings-color-options"},nn=["title","onClick"],on={class:"settings-section"},ln={class:"settings-switch-list"},an={class:"settings-switch-item"},rn={class:"settings-switch-item"},Fe=R(e.defineComponent({__name:"Header",setup(t){const n=M.useRoute(),l=M.useRouter(),i=j(),c=O(),s=ee(),p=K(),r=e.ref(!1),f=e.ref(!1),V=e.ref(null),d=e.ref(!1),g=e.ref(!1),E=e.ref(""),I=e.ref(null),y=e.ref(!1),h=[{value:"sidebar",label:"左侧菜单",icon:"sidebar-left"},{value:"top",label:"顶部菜单",icon:"menu"},{value:"mix",label:"混合菜单",icon:"grid"}],m=[{value:"#409eff",label:"默认蓝"},{value:"#1890ff",label:"科技蓝"},{value:"#52c41a",label:"极光绿"},{value:"#faad14",label:"日落橙"},{value:"#f5222d",label:"薄暮红"},{value:"#722ed1",label:"酱紫"}],B=e.computed(()=>n.matched.filter(k=>k.meta&&k.meta.title).map(k=>({title:k.meta.title,path:k.path}))),z=(L,k="")=>{const Y=[];return L.forEach(b=>{b.children&&b.children.length>0?Y.push(...z(b.children,b.title)):Y.push({...b,parentTitle:k})}),Y},F=e.computed(()=>E.value.trim()?z(p.menuList).filter(k=>k.title.toLowerCase().includes(E.value.toLowerCase())):[]),x=e.computed(()=>i.layout),u=()=>{i.toggleCollapse()},a=()=>{i.toggleTheme()},C=()=>{f.value=!0},q=L=>{i.setLayout(L),f.value=!1},Ce=L=>{y.value=L;const k=document.documentElement;L?k.classList.add("grey-mode"):k.classList.remove("grey-mode")},we=()=>{Ce(!y.value),f.value=!1},T=()=>{i.toggleTheme(),f.value=!1},ae=()=>{document.fullscreenElement?document.exitFullscreen():document.documentElement.requestFullscreen()},ve=()=>{d.value=!!document.fullscreenElement},sl=()=>{r.value=!r.value},Z=()=>{r.value=!1},et=()=>{g.value=!0},Be=()=>{g.value=!1,E.value=""},tt=L=>{l.push(L),Be()},il=L=>{i.setPrimaryColor(L),f.value=!1},cl=()=>{Z(),l.push("/profile")},dl=()=>{Z(),l.push("/change-password")},ml=()=>{Z(),s.logout(),c.clearUserInfo(),p.clearMenu(),l.push("/login")},nt=L=>{V.value&&!V.value.contains(L.target)&&Z(),I.value&&!I.value.contains(L.target)&&Be()},ot=L=>{L.key==="Escape"&&(Be(),Z()),(L.ctrlKey||L.metaKey)&&L.key==="k"&&(L.preventDefault(),et())};return e.onMounted(()=>{document.addEventListener("click",nt),document.addEventListener("fullscreenchange",ve),document.addEventListener("keydown",ot),i.initTheme(),y.value=document.documentElement.classList.contains("grey-mode")}),e.onUnmounted(()=>{document.removeEventListener("click",nt),document.removeEventListener("fullscreenchange",ve),document.removeEventListener("keydown",ot)}),(L,k)=>{var Y;return e.openBlock(),e.createElementBlock("div",Et,[e.createElementVNode("div",Ct,[e.createElementVNode("div",{class:"header__collapse",onClick:u},[e.createVNode(e.unref(N.Icon),{name:e.unref(i).isCollapsed?"menu-unfold":"menu-fold",size:18},null,8,["name"])]),e.unref(i).showBreadcrumb?(e.openBlock(),e.createElementBlock("div",wt,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(B.value,(b,W)=>(e.openBlock(),e.createElementBlock("span",{key:b.path},[W>0?(e.openBlock(),e.createElementBlock("span",Bt,"/")):e.createCommentVNode("",!0),e.createElementVNode("span",{class:e.normalizeClass({"is-current":W===B.value.length-1})},e.toDisplayString(b.title),3)]))),128))])):e.createCommentVNode("",!0)]),e.createElementVNode("div",St,[e.createElementVNode("div",{class:"header__action",onClick:et,title:"搜索 (Ctrl+K)"},[e.createVNode(e.unref(N.Icon),{name:"search",size:16})]),e.createElementVNode("div",{class:"header__action",onClick:ae,title:d.value?"退出全屏":"全屏"},[e.createVNode(e.unref(N.Icon),{name:d.value?"fullscreen-exit":"fullscreen",size:16},null,8,["name"])],8,bt),e.createElementVNode("div",{class:"header__action",onClick:C,title:"换肤设置"},[e.createVNode(e.unref(N.Icon),{name:"skin",size:16})]),e.createElementVNode("div",{class:"header__action",onClick:a,title:"切换主题"},[e.createVNode(e.unref(N.Icon),{name:e.unref(i).isDark?"sun":"moon",size:16},null,8,["name"])]),e.createElementVNode("div",{class:"header__user",ref_key:"dropdownRef",ref:V},[e.createElementVNode("div",{class:"header__user-trigger",onClick:e.withModifiers(sl,["stop"])},[e.createElementVNode("div",xt,[e.createElementVNode("span",null,e.toDisplayString(((Y=e.unref(c).userName)==null?void 0:Y.charAt(0))||"U"),1)]),e.createElementVNode("span",It,e.toDisplayString(e.unref(c).userName),1),e.createElementVNode("span",{class:e.normalizeClass(["header__user-arrow",{"is-active":r.value}])},"▼",2)]),e.createVNode(e.Transition,{name:"dropdown"},{default:e.withCtx(()=>{var b;return[r.value?(e.openBlock(),e.createElementBlock("div",Tt,[e.createElementVNode("div",Dt,[e.createElementVNode("div",Lt,[e.createElementVNode("span",null,e.toDisplayString(((b=e.unref(c).userName)==null?void 0:b.charAt(0))||"U"),1)]),e.createElementVNode("div",$t,[e.createElementVNode("div",Ut,e.toDisplayString(e.unref(c).userName),1),e.createElementVNode("div",Mt,e.toDisplayString(e.unref(c).departmentName),1)])]),k[7]||(k[7]=e.createElementVNode("div",{class:"header__dropdown-divider"},null,-1)),e.createElementVNode("div",At,[e.createElementVNode("div",{class:"header__dropdown-item",onClick:cl},[e.createVNode(e.unref(N.Icon),{name:"user",size:16}),k[3]||(k[3]=e.createElementVNode("span",null,"个人信息",-1))]),e.createElementVNode("div",{class:"header__dropdown-item",onClick:dl},[e.createVNode(e.unref(N.Icon),{name:"lock",size:16}),k[4]||(k[4]=e.createElementVNode("span",null,"修改密码",-1))]),k[6]||(k[6]=e.createElementVNode("div",{class:"header__dropdown-divider"},null,-1)),e.createElementVNode("div",{class:"header__dropdown-item header__dropdown-item--danger",onClick:ml},[e.createVNode(e.unref(N.Icon),{name:"logout",size:16}),k[5]||(k[5]=e.createElementVNode("span",null,"退出登录",-1))])])])):e.createCommentVNode("",!0)]}),_:1})],512)]),e.createVNode(e.Transition,{name:"search"},{default:e.withCtx(()=>[g.value?(e.openBlock(),e.createElementBlock("div",{key:0,class:"header__search-modal",ref_key:"searchRef",ref:I},[e.createElementVNode("div",zt,[e.createElementVNode("div",Ft,[e.createVNode(e.unref(N.Icon),{class:"search-icon",name:"search",size:20}),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":k[0]||(k[0]=b=>E.value=b),type:"text",class:"search-input",placeholder:"搜索菜单...",autofocus:"",onKeyup:k[1]||(k[1]=e.withKeys(b=>F.value[0]&&tt(F.value[0].path),["enter"]))},null,544),[[e.vModelText,E.value]]),k[8]||(k[8]=e.createElementVNode("span",{class:"search-shortcut"},"ESC 关闭",-1))]),F.value.length>0?(e.openBlock(),e.createElementBlock("div",Rt,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(F.value,(b,W)=>(e.openBlock(),e.createElementBlock("div",{key:b.path,class:e.normalizeClass(["search-result-item",{"is-first":W===0}]),onClick:xl=>tt(b.path)},[e.createVNode(e.unref(N.Icon),{class:"search-result-icon",name:b.icon||"file",size:20},null,8,["name"]),e.createElementVNode("div",Ot,[e.createElementVNode("span",qt,e.toDisplayString(b.title),1),b.parentTitle?(e.openBlock(),e.createElementBlock("span",jt,e.toDisplayString(b.parentTitle),1)):e.createCommentVNode("",!0)])],10,Pt))),128))])):E.value?(e.openBlock(),e.createElementBlock("div",Kt," 未找到匹配的菜单 ")):e.createCommentVNode("",!0)])],512)):e.createCommentVNode("",!0)]),_:1}),e.createVNode(e.unref(U.Drawer),{modelValue:f.value,"onUpdate:modelValue":k[2]||(k[2]=b=>f.value=b),title:"换肤设置",direction:"rtl",size:"320px"},{default:e.withCtx(()=>[e.createElementVNode("div",Yt,[e.createElementVNode("div",Wt,[k[12]||(k[12]=e.createElementVNode("div",{class:"settings-title"},"布局模式",-1)),e.createElementVNode("div",Ht,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(h,b=>e.createElementVNode("div",{key:b.value,class:e.normalizeClass(["layout-option",{"is-active":x.value===b.value}]),onClick:W=>q(b.value)},[e.createElementVNode("div",Gt,[b.value==="sidebar"?(e.openBlock(),e.createElementBlock("div",Jt,[...k[9]||(k[9]=[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)])])):b.value==="top"?(e.openBlock(),e.createElementBlock("div",Qt,[...k[10]||(k[10]=[e.createElementVNode("div",{class:"preview-header-full"},null,-1),e.createElementVNode("div",{class:"preview-content-full"},null,-1)])])):(e.openBlock(),e.createElementBlock("div",Zt,[...k[11]||(k[11]=[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",vt,e.toDisplayString(b.label),1)],10,Xt)),64))])]),e.createElementVNode("div",en,[k[13]||(k[13]=e.createElementVNode("div",{class:"settings-title"},"主题色",-1)),e.createElementVNode("div",tn,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(m,b=>e.createElementVNode("div",{key:b.value,class:e.normalizeClass(["color-option",{"is-active":e.unref(i).primaryColor===b.value}]),style:e.normalizeStyle({backgroundColor:b.value}),title:b.label,onClick:W=>il(b.value)},[e.unref(i).primaryColor===b.value?(e.openBlock(),e.createBlock(e.unref(N.Icon),{key:0,name:"check",size:12,color:"#fff"})):e.createCommentVNode("",!0)],14,nn)),64))])]),e.createElementVNode("div",on,[k[18]||(k[18]=e.createElementVNode("div",{class:"settings-title"},"功能设置",-1)),e.createElementVNode("div",ln,[e.createElementVNode("div",an,[k[15]||(k[15]=e.createElementVNode("span",null,"灰色模式",-1)),e.createElementVNode("div",{class:e.normalizeClass(["switch-wrapper",{"is-checked":y.value}]),onClick:we},[...k[14]||(k[14]=[e.createElementVNode("span",{class:"switch-core"},null,-1)])],2)]),e.createElementVNode("div",rn,[k[17]||(k[17]=e.createElementVNode("span",null,"暗黑模式",-1)),e.createElementVNode("div",{class:e.normalizeClass(["switch-wrapper",{"is-checked":e.unref(i).isDark}]),onClick:T},[...k[16]||(k[16]=[e.createElementVNode("span",{class:"switch-core"},null,-1)])],2)])])])])]),_:1},8,["modelValue"])])}}}),[["__scopeId","data-v-702ab2d7"]]),sn={class:"top-menu"},cn={class:"top-menu__menu-icon"},dn={key:1,class:"top-menu__menu-char"},mn={class:"top-menu__menu-icon"},pn={key:1,class:"top-menu__menu-char"},un={class:"top-menu__menu-icon"},fn={key:1,class:"top-menu__menu-char"},hn=R(e.defineComponent({__name:"TopMenu",setup(t){const n=M.useRoute(),l=M.useRouter(),i=K(),c=j(),s=e.computed(()=>n.path),p=e.computed(()=>c.isDark?"#1d1e1f":"#fff"),r=e.computed(()=>c.isDark?"#cfd3dc":"#303133"),f=e.computed(()=>"#409eff"),V=y=>{y&&y!==n.path&&l.push(y)},d=new Set(["arrow-up","arrow-down","arrow-left","arrow-right","caret-down","caret-right","plus","minus","close","check","edit","delete","copy","download","upload","refresh","search","filter","more","setting","share","loading","info","success","warning","error","question","user","user-add","user-group","logout","login","file","folder","folder-open","document","image","video","music","camera","mail","phone","chat","bell","message","eye","eye-off","calendar","clock","history","timer","location","map","globe","star","heart","thumb-up","link","external-link","lock","unlock","key","home","menu","menu-fold","menu-unfold","sidebar-fold","sidebar-expand","sidebar-left","dashboard","chart","chart-pie","chart-line","report","analytics","system","permission","role","user-manage","log","notification","app","list","grid","fullscreen","fullscreen-exit","zoom-in","zoom-out","print","bookmark","tag","code","terminal","database","server","cloud","gift","moon","sun","theme","skin"]),g=y=>{if(!y||y==="")return"";if(y.startsWith("tineco-icon-")){const m=y.replace("tineco-icon-","");return{home:"home",dashboard:"dashboard",system:"system",user:"user",role:"role",menu:"list",setting:"setting",file:"file",folder:"folder",chart:"chart",report:"report",analytics:"analytics"}[m]||m}return{dashboard:"dashboard",system:"system",user:"user",role:"role",menu:"list",setting:"setting",home:"home",chart:"chart",report:"report",analytics:"analytics",permission:"permission",log:"log",notification:"notification",app:"app",list:"list",grid:"grid"}[y]||y},E=y=>y?y.charAt(0):"",I=y=>d.has(y);return(y,h)=>(e.openBlock(),e.createElementBlock("div",sn,[e.createVNode(e.unref(P.Menu),{"default-active":s.value,mode:"horizontal","background-color":p.value,"text-color":r.value,"active-text-color":f.value,class:"top-menu__menu",onSelect:V},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(i).menuList,m=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:m.menuUrl},[m.children&&m.children.length>0?(e.openBlock(),e.createBlock(e.unref(P.SubMenu),{key:0,index:m.menuUrl},{title:e.withCtx(()=>[e.createElementVNode("span",cn,[I(g(m.icon))?(e.openBlock(),e.createBlock(e.unref(N.Icon),{key:0,name:g(m.icon),size:16},null,8,["name"])):(e.openBlock(),e.createElementBlock("span",dn,e.toDisplayString(E(m.menuName)),1))]),e.createElementVNode("span",null,e.toDisplayString(m.menuName),1)]),default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(m.children,B=>(e.openBlock(),e.createBlock(e.unref(P.MenuItem),{key:B.menuUrl,index:B.menuUrl},{default:e.withCtx(()=>[e.createElementVNode("span",mn,[I(g(B.icon))?(e.openBlock(),e.createBlock(e.unref(N.Icon),{key:0,name:g(B.icon),size:16},null,8,["name"])):(e.openBlock(),e.createElementBlock("span",pn,e.toDisplayString(E(B.menuName)),1))]),e.createElementVNode("span",null,e.toDisplayString(B.menuName),1)]),_:2},1032,["index"]))),128))]),_:2},1032,["index"])):(e.openBlock(),e.createBlock(e.unref(P.MenuItem),{key:1,index:m.menuUrl},{default:e.withCtx(()=>[e.createElementVNode("span",un,[I(g(m.icon))?(e.openBlock(),e.createBlock(e.unref(N.Icon),{key:0,name:g(m.icon),size:16},null,8,["name"])):(e.openBlock(),e.createElementBlock("span",fn,e.toDisplayString(E(m.menuName)),1))]),e.createElementVNode("span",null,e.toDisplayString(m.menuName),1)]),_:2},1032,["index"]))],64))),128))]),_:1},8,["default-active","background-color","text-color","active-text-color"])]))}}),[["__scopeId","data-v-8b571a75"]]),gn={key:1,class:"layout__top-menu"},_n={class:"layout__main"},Vn={class:"layout__header"},Nn={class:"layout__content"},_e=R(e.defineComponent({__name:"index",setup(t){const n=j(),l=K(),i=e.computed(()=>n.isCollapsed?"64px":"210px"),c=e.computed(()=>n.layout),s=e.computed(()=>c.value==="sidebar"||c.value==="mix"),p=e.computed(()=>c.value==="top"),r=e.computed(()=>(c.value!=="mix",l.menuList));return(f,V)=>{const d=e.resolveComponent("router-view");return e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["layout",`layout--${c.value}`])},[s.value?(e.openBlock(),e.createElementBlock("aside",{key:0,class:"layout__aside",style:e.normalizeStyle({width:i.value})},[e.createVNode(ze,{"menu-list":c.value==="mix"?r.value:e.unref(l).menuList},null,8,["menu-list"])],4)):e.createCommentVNode("",!0),p.value?(e.openBlock(),e.createElementBlock("div",gn,[e.createVNode(hn)])):e.createCommentVNode("",!0),e.createElementVNode("div",_n,[e.createElementVNode("header",Vn,[e.createVNode(Fe)]),e.createElementVNode("main",Nn,[e.createVNode(d)])])],2)}}}),[["__scopeId","data-v-0cb5ef3f"]]),yn=Object.freeze(Object.defineProperty({__proto__:null,default:_e},Symbol.toStringTag,{value:"Module"})),kn={class:"tabs-wrapper"},En={class:"tab-label"},Cn=["onClick"],wn=R(e.defineComponent({__name:"Tabs",setup(t){const n=M.useRoute(),l=M.useRouter(),i=e.computed(()=>{const r=[];return n.matched.forEach(f=>{var V;(V=f.meta)!=null&&V.affix&&r.push({name:f.name,title:f.meta.title,path:f.path,affix:!0})}),r}),c=e.computed(()=>n.path),s=r=>{l.push(r)},p=r=>{const f=i.value.find(V=>V.path===r);if(!(f!=null&&f.affix)&&r===c.value){const V=i.value.findIndex(g=>g.path===r),d=i.value[V-1]||i.value[V+1];d&&l.push(d.path)}};return(r,f)=>(e.openBlock(),e.createElementBlock("div",kn,[e.createVNode(e.unref(P.Tabs),{modelValue:c.value,"onUpdate:modelValue":f[0]||(f[0]=V=>c.value=V),type:"card",onTabClick:s},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(i.value,V=>(e.openBlock(),e.createBlock(e.unref(P.TabPane),{key:V.path,name:V.path,label:V.title,closable:!V.affix},{label:e.withCtx(()=>[e.createElementVNode("span",En,[e.createTextVNode(e.toDisplayString(V.title)+" ",1),V.affix?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("span",{key:0,class:"tab-close",onClick:e.withModifiers(d=>p(V.path),["stop"])}," ✕ ",8,Cn))])]),_:2},1032,["name","label","closable"]))),128))]),_:1},8,["modelValue"])]))}}),[["__scopeId","data-v-9156d8cd"]]),Bn={},Sn={class:"footer"};function bn(t,n){return e.openBlock(),e.createElementBlock("div",Sn,[...n[0]||(n[0]=[e.createElementVNode("span",null,"Copyright © 2024 Xto Demo. All Rights Reserved.",-1)])])}const xn=R(Bn,[["render",bn],["__scopeId","data-v-4852826a"]]),Q=(()=>{const t=lt.create({baseURL:void 0,timeout:3e4,headers:{"Content-Type":"application/json"}});return t.interceptors.request.use(n=>{const l=J(),i=Ie()||"Bearer";return l&&(n.headers.Authorization=`${i} ${l}`),n},n=>Promise.reject(n)),t.interceptors.response.use(n=>{const{data:l}=n;return l.code===200||l.code===0?l.data:(U.Message.error(l.message||"请求失败"),Promise.reject(new Error(l.message||"请求失败")))},n=>{var i;const{response:l}=n;if(l)switch(l.status){case 401:U.Message.error("登录已过期,请重新登录"),he(),window.location.href="/login";break;case 403:U.Message.error("没有权限访问");break;case 404:U.Message.error("请求资源不存在");break;case 500:U.Message.error("服务器错误");break;default:U.Message.error(((i=l.data)==null?void 0:i.message)||"请求失败")}else U.Message.error("网络连接失败");return Promise.reject(n)}),t})(),D={get(t,n){return Q.get(t,n)},post(t,n,l){return Q.post(t,n,l)},put(t,n,l){return Q.put(t,n,l)},patch(t,n,l){return Q.patch(t,n,l)},delete(t,n){return Q.delete(t,n)}};function Re(t){return D.post("/user/v1.0/login/by-domain",t)}function In(){return D.put("/user/v1.0/user/logout")}function Pe(){return D.get("/user/v1.0/user/get-me")}function Tn(t){return D.post("/user/v1.0/refresh",{refreshToken:t})}const te=e.ref(""),ne=e.ref(""),oe=e.ref("");function Dn(t){t.appId&&(te.value=t.appId),t.clientId&&(ne.value=t.clientId),t.apiBaseUrl&&(oe.value=t.apiBaseUrl)}function le(){if(te.value)return te.value;try{return""}catch{return""}}function Oe(){if(ne.value)return ne.value;try{return""}catch{return""}}function Ln(){if(oe.value)return oe.value;try{return""}catch{return""}}const $n={appId:te,clientId:ne,apiBaseUrl:oe},Un={class:"login"},Mn={class:"login__container"},qe=R(e.defineComponent({__name:"index",setup(t){const n=M.useRouter(),l=M.useRoute(),i=e.ref(!1),c=e.ref(!1),s=e.reactive({uid:"",password:""}),p={uid:[{required:!0,message:"请输入用户名",trigger:"blur"}],password:[{required:!0,message:"请输入密码",trigger:"blur"},{min:6,message:"密码长度至少6位",trigger:"blur"}]},r=e.ref(),f=async()=>{var V;try{await((V=r.value)==null?void 0:V.validate()),i.value=!0;const d=await Re({appId:le(),clientId:Oe(),uid:s.uid,password:s.password,code:!0});fe(d),U.Message.success("登录成功");const g=l.query.redirect||"/";n.push(g)}catch(d){console.error("登录失败:",d)}finally{i.value=!1}};return(V,d)=>(e.openBlock(),e.createElementBlock("div",Un,[e.createElementVNode("div",Mn,[d[5]||(d[5]=e.createElementVNode("div",{class:"login__header"},[e.createElementVNode("img",{src:be,alt:"Logo",class:"login__logo"}),e.createElementVNode("h1",{class:"login__title"},"Xto Demo"),e.createElementVNode("p",{class:"login__subtitle"},"后台管理系统")],-1)),e.createVNode(e.unref(_.Form),{ref_key:"formRef",ref:r,model:s,rules:p,class:"login__form","label-width":"0"},{default:e.withCtx(()=>[e.createVNode(e.unref(_.FormItem),{prop:"uid"},{default:e.withCtx(()=>[e.createVNode(e.unref(_.Input),{modelValue:s.uid,"onUpdate:modelValue":d[0]||(d[0]=g=>s.uid=g),placeholder:"用户名",size:"large"},{prefix:e.withCtx(()=>[e.createVNode(e.unref(N.Icon),{name:"user",size:18})]),_:1},8,["modelValue"])]),_:1}),e.createVNode(e.unref(_.FormItem),{prop:"password"},{default:e.withCtx(()=>[e.createVNode(e.unref(_.Input),{modelValue:s.password,"onUpdate:modelValue":d[1]||(d[1]=g=>s.password=g),type:"password",placeholder:"密码",size:"large","show-password":"",onKeyup:e.withKeys(f,["enter"])},{prefix:e.withCtx(()=>[e.createVNode(e.unref(N.Icon),{name:"lock",size:18})]),_:1},8,["modelValue"])]),_:1}),e.createVNode(e.unref(_.FormItem),null,{default:e.withCtx(()=>[e.createVNode(e.unref(_.Checkbox),{modelValue:c.value,"onUpdate:modelValue":d[2]||(d[2]=g=>c.value=g)},{default:e.withCtx(()=>[...d[3]||(d[3]=[e.createTextVNode("记住我",-1)])]),_:1},8,["modelValue"])]),_:1}),e.createVNode(e.unref(_.FormItem),null,{default:e.withCtx(()=>[e.createVNode(e.unref(N.Button),{type:"primary",size:"large",loading:i.value,class:"login__submit",onClick:f},{default:e.withCtx(()=>[...d[4]||(d[4]=[e.createTextVNode(" 登录 ",-1)])]),_:1},8,["loading"])]),_:1})]),_:1},8,["model"]),d[6]||(d[6]=e.createElementVNode("div",{class:"login__footer"},[e.createElementVNode("p",null,"请输入您的用户名和密码")],-1))])]))}}),[["__scopeId","data-v-f3e724b6"]]),An=Object.freeze(Object.defineProperty({__proto__:null,default:qe},Symbol.toStringTag,{value:"Module"})),zn={class:"error-page"},Fn={class:"error-page__content"},je=R(e.defineComponent({__name:"404",setup(t){const n=M.useRouter(),l=()=>{n.push("/")};return(i,c)=>(e.openBlock(),e.createElementBlock("div",zn,[e.createElementVNode("div",Fn,[c[1]||(c[1]=e.createElementVNode("div",{class:"error-page__code"},"404",-1)),c[2]||(c[2]=e.createElementVNode("div",{class:"error-page__title"},"页面不存在",-1)),c[3]||(c[3]=e.createElementVNode("div",{class:"error-page__desc"},"抱歉,您访问的页面不存在或已被删除",-1)),e.createVNode(e.unref(N.Button),{type:"primary",onClick:l},{default:e.withCtx(()=>[...c[0]||(c[0]=[e.createTextVNode("返回首页",-1)])]),_:1})])]))}}),[["__scopeId","data-v-c3c12c24"]]),Rn=Object.freeze(Object.defineProperty({__proto__:null,default:je},Symbol.toStringTag,{value:"Module"})),Pn={class:"error-page"},On={class:"error-page__content"},Ke=R(e.defineComponent({__name:"403",setup(t){const n=M.useRouter(),l=()=>{n.push("/")};return(i,c)=>(e.openBlock(),e.createElementBlock("div",Pn,[e.createElementVNode("div",On,[c[1]||(c[1]=e.createElementVNode("div",{class:"error-page__code"},"403",-1)),c[2]||(c[2]=e.createElementVNode("div",{class:"error-page__title"},"无访问权限",-1)),c[3]||(c[3]=e.createElementVNode("div",{class:"error-page__desc"},"抱歉,您没有权限访问此页面",-1)),e.createVNode(e.unref(N.Button),{type:"primary",onClick:l},{default:e.withCtx(()=>[...c[0]||(c[0]=[e.createTextVNode("返回首页",-1)])]),_:1})])]))}}),[["__scopeId","data-v-dd5f2795"]]),qn=Object.freeze(Object.defineProperty({__proto__:null,default:Ke},Symbol.toStringTag,{value:"Module"}));function jn(){const t=j(),n=O(),l=ee(),i=e.computed(()=>n.userName||""),c=e.computed(()=>n.userInfo),s=e.computed(()=>t.appName),p=e.computed(()=>l.isLoggedIn),r=e.computed(()=>t.isDark),f=e.computed(()=>t.theme),V=e.computed(()=>t.isCollapsed),d=e.computed(()=>t.layout);return{userName:i,userInfo:c,appName:s,isLoggedIn:p,isDark:r,theme:f,isCollapsed:V,layout:d,toggleTheme:()=>{t.toggleTheme()},toggleCollapse:()=>{t.toggleCollapse()}}}function Kn(){const t=O();return{isLoggedIn:e.computed(()=>t.isLoggedIn)}}function Yn(t,n={}){const{rules:l,onSubmit:i}=n,c=e.ref(),s=e.reactive({...t}),p=e.ref(!1),r=e.ref(!1),f=e.ref(!1),V=()=>{E(),f.value=!1,r.value=!0},d=y=>{Object.assign(s,y),f.value=!0,r.value=!0},g=()=>{r.value=!1,E()},E=()=>{var y;Object.keys(t).forEach(h=>{s[h]=t[h]}),(y=c.value)==null||y.resetFields()};return{formRef:c,formData:s,rules:l,loading:p,visible:r,isEdit:f,openAdd:V,openEdit:d,close:g,resetForm:E,handleSubmit:async()=>{var y;try{await((y=c.value)==null?void 0:y.validate()),p.value=!0,await(i==null?void 0:i(s)),g()}catch(h){console.error(h)}finally{p.value=!1}}}}function Wn(t){const{fetchData:n,defaultPageSize:l=10}=t,i=e.ref(!1),c=e.ref([]),s=e.ref(0),p=e.ref(1),r=e.ref(l),f=e.reactive({}),V=async()=>{i.value=!0;try{const m={...f,page:p.value,pageSize:r.value},B=await n(m);c.value=B.list,s.value=B.total}catch(m){console.error(m)}finally{i.value=!1}},d=()=>{p.value=1,V()},g=()=>{Object.keys(f).forEach(m=>{f[m]=void 0}),p.value=1,V()},E=m=>{p.value=m,V()},I=m=>{r.value=m,p.value=1,V()},y=()=>{V()},h=e.computed(()=>({current:p.value,pageSize:r.value,total:s.value}));return{loading:i,data:c,total:s,currentPage:p,pageSize:r,searchParams:f,pagination:h,getData:V,handleSearch:d,handleReset:g,handlePageChange:E,handleSizeChange:I,refresh:y}}function Hn(t){return O().isLoggedIn}function Xn(t){return O().isLoggedIn}function Gn(){return!0}const Ve=[{path:"/login",name:"Login",component:()=>Promise.resolve().then(()=>An),meta:{title:"登录",hidden:!0}},{path:"/404",name:"NotFound",component:()=>Promise.resolve().then(()=>Rn),meta:{title:"404",hidden:!0}},{path:"/403",name:"Forbidden",component:()=>Promise.resolve().then(()=>qn),meta:{title:"403",hidden:!0}}],Ne={path:"/:pathMatch(.*)*",redirect:"/404",meta:{hidden:!0}},ye={path:"/",name:"Layout",component:()=>Promise.resolve().then(()=>yn),redirect:"/dashboard",children:[{path:"/dashboard",name:"Dashboard",component:()=>Promise.resolve().then(()=>Ge),meta:{title:"仪表盘",icon:"dashboard",keepAlive:!0,affix:!0}},{path:"/system/user",name:"SystemUser",component:()=>Promise.resolve().then(()=>Je),meta:{title:"用户管理",icon:"user",keepAlive:!0}},{path:"/system/role",name:"SystemRole",component:()=>Promise.resolve().then(()=>Qe),meta:{title:"角色管理",icon:"role",keepAlive:!0}},{path:"/system/menu",name:"SystemMenu",component:()=>Promise.resolve().then(()=>Ze),meta:{title:"菜单管理",icon:"menu",keepAlive:!0}}]},Jn=[{path:"/dashboard",name:"Dashboard",component:()=>Promise.resolve().then(()=>Ge),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(()=>Je),meta:{title:"用户管理",icon:"user",keepAlive:!0}},{path:"role",name:"SystemRole",component:()=>Promise.resolve().then(()=>Qe),meta:{title:"角色管理",icon:"role",keepAlive:!0}},{path:"menu",name:"SystemMenu",component:()=>Promise.resolve().then(()=>Ze),meta:{title:"菜单管理",icon:"menu",keepAlive:!0}}]}],Ye=[{menuCode:"dashboard",menuName:"仪表盘",menuUrl:"/dashboard",icon:"dashboard",closable:!0,isDefault:!0,isOut:!1},{menuCode:"system",menuName:"系统管理",menuUrl:"/system",icon:"setting",closable:!1,isDefault:!1,isOut:!1,children:[{menuCode:"system_user",menuName:"用户管理",menuUrl:"/system/user",icon:"user",closable:!0,isDefault:!1,isOut:!1},{menuCode:"system_role",menuName:"角色管理",menuUrl:"/system/role",icon:"role",closable:!0,isDefault:!1,isOut:!1},{menuCode:"system_menu",menuName:"菜单管理",menuUrl:"/system/menu",icon:"menu",closable:!0,isDefault:!1,isOut:!1}]}],ke=M.createRouter({history:M.createWebHistory(),routes:[...Ve,ye,Ne],scrollBehavior:()=>({left:0,top:0})}),Qn=["/login","/404","/403"];ke.beforeEach(async(t,n,l)=>{const i=j();if(i.initTheme(),ge())if(t.path==="/login")l({path:"/"});else{const c=O();c.isLoggedIn||(c.setUserInfo({appId:le(),userId:"1",userName:"管理员",departmentName:"技术部",email:"admin@example.com",mobilePhone:"13800138000",positionName:"管理员",avatar:""}),K().setMenuList(Ye)),t.name&&t.meta.keepAlive&&i.addCachedView(t.name),l()}else Qn.includes(t.path)?l():l("/login")});function Zn(){const t=M.createRouter({history:M.createWebHistory(),routes:[...Ve,ye,Ne]});ke.matcher=t.matcher}function vn(t,n={}){const l=n.indexPath||"/dashboard";return{path:"/",name:"Layout",component:_e,redirect:l,children:t}}function eo(t){return M.createRouter({history:M.createWebHistory(),routes:t,scrollBehavior:()=>({left:0,top:0})})}function to(t){return D.get("/role/list",{params:t})}function no(t){return D.get(`/role/${t}`)}function oo(t){return D.post("/role",t)}function lo(t,n){return D.put(`/role/${t}`,n)}function ao(t){return D.delete(`/role/${t}`)}function ro(t,n){return D.patch(`/role/${t}/status`,{status:n})}function so(){return D.get("/user/v1.0/menu/list")}function We(t){const n=t||le();return D.get(`/user/v1.0/menu/get-menu?appId=${n}`)}function io(t){return D.post("/menu",t)}function co(t,n){return D.put(`/menu/${t}`,n)}function mo(t){return D.delete(`/menu/${t}`)}const po=["/login","/404","/403"];function uo(t,n={}){const l=n.whiteList||po,i=n.loginPath||"/login",c=n.homePath||"/";t.beforeEach(async(s,p,r)=>{const f=j(),V=O(),d=K();if(f.initTheme(),J())if(s.path===i)r({path:c});else if(V.isLoggedIn)s.name&&s.meta.keepAlive&&f.addCachedView(s.name),r();else try{if(n.fetchUserInfo){const E=await n.fetchUserInfo();V.setUserInfo(E)}else{const E=await Pe();V.setUserInfo(E)}if(n.fetchMenu){const E=await n.fetchMenu();d.setMenuList(E)}else{const E=await We(n.appId);d.setMenuList(E)}n.onLoginSuccess&&n.onLoginSuccess(),s.name&&s.meta.keepAlive&&f.addCachedView(s.name),r({...s,replace:!0})}catch(E){console.error("获取用户信息失败:",E),V.clearUserInfo(),d.clearMenu(),localStorage.removeItem("token"),localStorage.removeItem("token_type"),localStorage.removeItem("refresh_token"),r({path:i,query:{redirect:s.fullPath}})}else l.includes(s.path)?r():r({path:i,query:{redirect:s.fullPath}})}),t.afterEach(()=>{})}function fo(t){return D.get("/user/list",{params:t})}function ho(t){return D.get(`/user/${t}`)}function go(t){return D.post("/user",t)}function _o(t,n){return D.put(`/user/${t}`,n)}function Vo(t){return D.delete(`/user/${t}`)}function No(t){return D.post("/user/batch-delete",{ids:t})}function yo(t,n){return D.patch(`/user/${t}/status`,{status:n})}function ko(t){return D.post(`/user/${t}/reset-password`)}var S=(t=>(t[t.ENABLED=1]="ENABLED",t[t.DISABLED=0]="DISABLED",t))(S||{}),He=(t=>(t[t.UNKNOWN=0]="UNKNOWN",t[t.MALE=1]="MALE",t[t.FEMALE=2]="FEMALE",t))(He||{}),A=(t=>(t[t.DIRECTORY=0]="DIRECTORY",t[t.MENU=1]="MENU",t[t.BUTTON=2]="BUTTON",t))(A||{});const Eo={1:"启用",0:"禁用"},Co={0:"未知",1:"男",2:"女"},wo={0:"目录",1:"菜单",2:"按钮"},Ee=[{label:"启用",value:1},{label:"禁用",value:0}],Bo=[{label:"未知",value:0},{label:"男",value:1},{label:"女",value:2}],Xe=[{label:"目录",value:0},{label:"菜单",value:1},{label:"按钮",value:2}],So={mounted(t,n){var i;O().isLoggedIn||(i=t.parentNode)==null||i.removeChild(t)}},bo={class:"dashboard"},xo={class:"dashboard__stats"},Io={class:"stat-card__content"},To={class:"stat-card__info"},Do={class:"stat-card__title"},Lo={class:"dashboard__main"},$o={class:"quick-links"},Uo={class:"quick-link__icon"},Mo={class:"quick-link__title"},Ao={class:"activity-list"},zo={class:"activity-item__action"},Fo={class:"activity-item__time"},Ro={class:"system-info"},Po={class:"system-info__item"},Oo={class:"system-info__item"},Ge=Object.freeze(Object.defineProperty({__proto__:null,default:R(e.defineComponent({__name:"index",setup(t){const n=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"}]),l=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"}]),i=e.ref([{title:"用户管理",path:"/system/user",icon:"👤"},{title:"角色管理",path:"/system/role",icon:"👥"},{title:"菜单管理",path:"/system/menu",icon:"📋"},{title:"系统设置",path:"/system",icon:"⚙️"}]);return(c,s)=>{const p=e.resolveComponent("router-link");return e.openBlock(),e.createElementBlock("div",bo,[e.createElementVNode("div",xo,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(n.value,r=>(e.openBlock(),e.createBlock(e.unref($.Card),{key:r.title,class:"stat-card"},{default:e.withCtx(()=>[e.createElementVNode("div",Io,[e.createElementVNode("div",{class:"stat-card__icon",style:e.normalizeStyle({backgroundColor:r.color+"20"})},e.toDisplayString(r.icon),5),e.createElementVNode("div",To,[e.createElementVNode("div",Do,e.toDisplayString(r.title),1),e.createElementVNode("div",{class:"stat-card__value",style:e.normalizeStyle({color:r.color})},e.toDisplayString(r.value.toLocaleString()),5)])])]),_:2},1024))),128))]),e.createElementVNode("div",Lo,[e.createVNode(e.unref($.Card),{class:"dashboard__quick"},{header:e.withCtx(()=>[...s[0]||(s[0]=[e.createElementVNode("span",{class:"card-title"},"快捷入口",-1)])]),default:e.withCtx(()=>[e.createElementVNode("div",$o,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(i.value,r=>(e.openBlock(),e.createBlock(p,{key:r.path,to:r.path,class:"quick-link"},{default:e.withCtx(()=>[e.createElementVNode("span",Uo,e.toDisplayString(r.icon),1),e.createElementVNode("span",Mo,e.toDisplayString(r.title),1)]),_:2},1032,["to"]))),128))])]),_:1}),e.createVNode(e.unref($.Card),{class:"dashboard__activity"},{header:e.withCtx(()=>[...s[1]||(s[1]=[e.createElementVNode("span",{class:"card-title"},"最近活动",-1)])]),default:e.withCtx(()=>[e.createElementVNode("div",Ao,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(l.value,(r,f)=>(e.openBlock(),e.createElementBlock("div",{key:f,class:"activity-item"},[e.createVNode(e.unref($.Tag),{type:r.type,size:"small"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(r.user),1)]),_:2},1032,["type"]),e.createElementVNode("span",zo,e.toDisplayString(r.action),1),e.createElementVNode("span",Fo,e.toDisplayString(r.time),1)]))),128))])]),_:1})]),e.createVNode(e.unref($.Card),{class:"dashboard__system"},{header:e.withCtx(()=>[...s[2]||(s[2]=[e.createElementVNode("span",{class:"card-title"},"系统信息",-1)])]),default:e.withCtx(()=>[e.createElementVNode("div",Ro,[s[5]||(s[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)),s[6]||(s[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)),s[7]||(s[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)),s[8]||(s[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",Po,[s[3]||(s[3]=e.createElementVNode("span",{class:"system-info__label"},"服务器状态",-1)),e.createVNode(e.unref($.Progress),{percentage:75,status:"success"})]),e.createElementVNode("div",Oo,[s[4]||(s[4]=e.createElementVNode("span",{class:"system-info__label"},"内存使用",-1)),e.createVNode(e.unref($.Progress),{percentage:45})])])]),_:1})])}}}),[["__scopeId","data-v-44648cb1"]])},Symbol.toStringTag,{value:"Module"})),qo={class:"user-page"},jo={class:"toolbar"},Ko={class:"data-table"},Yo={key:0},Wo={key:1},Ho={class:"pagination-wrapper"},Je=Object.freeze(Object.defineProperty({__proto__:null,default:R(e.defineComponent({__name:"index",setup(t){const n=[{id:1,username:"admin",nickname:"管理员",email:"admin@example.com",phone:"13800138001",status:S.ENABLED,roles:["admin"],createTime:"2024-01-01 10:00:00"},{id:2,username:"zhangsan",nickname:"张三",email:"zhangsan@example.com",phone:"13800138002",status:S.ENABLED,roles:["editor"],createTime:"2024-01-02 10:00:00"},{id:3,username:"lisi",nickname:"李四",email:"lisi@example.com",phone:"13800138003",status:S.DISABLED,roles:["viewer"],createTime:"2024-01-03 10:00:00"},{id:4,username:"wangwu",nickname:"王五",email:"wangwu@example.com",phone:"13800138004",status:S.ENABLED,roles:["editor"],createTime:"2024-01-04 10:00:00"},{id:5,username:"zhaoliu",nickname:"赵六",email:"zhaoliu@example.com",phone:"13800138005",status:S.ENABLED,roles:["viewer"],createTime:"2024-01-05 10:00:00"}],l=e.ref(!1),i=e.ref([]),c=e.ref(0),s=e.ref(1),p=e.ref(10),r=e.reactive({keyword:"",status:void 0}),f=e.ref(!1),V=e.computed(()=>d.id?"编辑用户":"新增用户"),d=e.reactive({id:0,username:"",nickname:"",email:"",phone:"",status:S.ENABLED,roles:[]}),g={username:[{required:!0,message:"请输入用户名",trigger:"blur"}],nickname:[{required:!0,message:"请输入昵称",trigger:"blur"}],email:[{required:!0,message:"请输入邮箱",trigger:"blur"},{type:"email",message:"请输入正确的邮箱格式",trigger:"blur"}]},E=e.ref(),I=()=>{l.value=!0,setTimeout(()=>{let u=[...n];r.keyword&&(u=u.filter(a=>a.username.includes(r.keyword)||a.nickname.includes(r.keyword))),r.status!==void 0&&(u=u.filter(a=>a.status===r.status)),c.value=u.length,i.value=u.slice((s.value-1)*p.value,s.value*p.value),l.value=!1},300)},y=()=>{s.value=1,I()},h=()=>{r.keyword="",r.status=void 0,s.value=1,I()},m=()=>{Object.assign(d,{id:0,username:"",nickname:"",email:"",phone:"",status:S.ENABLED,roles:[]}),f.value=!0},B=u=>{Object.assign(d,u),f.value=!0},z=u=>{U.Message.success("删除成功"),I()},F=async()=>{var u;try{await((u=E.value)==null?void 0:u.validate()),U.Message.success(d.id?"编辑成功":"新增成功"),f.value=!1,I()}catch(a){console.error(a)}},x=u=>{U.Message.success(`已${u.status===S.ENABLED?"启用":"禁用"}用户 ${u.username}`)};return e.onMounted(()=>{I()}),(u,a)=>(e.openBlock(),e.createElementBlock("div",qo,[e.createVNode(e.unref($.Card),{class:"search-card"},{default:e.withCtx(()=>[e.createVNode(e.unref(_.Form),{model:r,inline:""},{default:e.withCtx(()=>[e.createVNode(e.unref(_.FormItem),{label:"关键词"},{default:e.withCtx(()=>[e.createVNode(e.unref(_.Input),{modelValue:r.keyword,"onUpdate:modelValue":a[0]||(a[0]=C=>r.keyword=C),placeholder:"用户名/昵称",clearable:"",onKeyup:e.withKeys(y,["enter"])},null,8,["modelValue"])]),_:1}),e.createVNode(e.unref(_.FormItem),{label:"状态"},{default:e.withCtx(()=>[e.createVNode(e.unref(_.Select),{modelValue:r.status,"onUpdate:modelValue":a[1]||(a[1]=C=>r.status=C),options:e.unref(Ee),placeholder:"请选择",clearable:""},null,8,["modelValue","options"])]),_:1}),e.createVNode(e.unref(_.FormItem),null,{default:e.withCtx(()=>[e.createVNode(e.unref(N.Space),null,{default:e.withCtx(()=>[e.createVNode(e.unref(N.Button),{type:"primary",onClick:y},{default:e.withCtx(()=>[...a[11]||(a[11]=[e.createTextVNode("搜索",-1)])]),_:1}),e.createVNode(e.unref(N.Button),{onClick:h},{default:e.withCtx(()=>[...a[12]||(a[12]=[e.createTextVNode("重置",-1)])]),_:1})]),_:1})]),_:1})]),_:1},8,["model"])]),_:1}),e.createVNode(e.unref($.Card),{class:"table-card"},{default:e.withCtx(()=>[e.createElementVNode("div",jo,[e.createVNode(e.unref(N.Button),{type:"primary",onClick:m},{default:e.withCtx(()=>[...a[13]||(a[13]=[e.createTextVNode("新增用户",-1)])]),_:1})]),e.createElementVNode("table",Ko,[a[18]||(a[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,[l.value?(e.openBlock(),e.createElementBlock("tr",Yo,[...a[14]||(a[14]=[e.createElementVNode("td",{colspan:"9",class:"loading-cell"},"加载中...",-1)])])):i.value.length===0?(e.openBlock(),e.createElementBlock("tr",Wo,[...a[15]||(a[15]=[e.createElementVNode("td",{colspan:"9",class:"empty-cell"},"暂无数据",-1)])])):(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:2},e.renderList(i.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.username),1),e.createElementVNode("td",null,e.toDisplayString(C.nickname),1),e.createElementVNode("td",null,e.toDisplayString(C.email),1),e.createElementVNode("td",null,e.toDisplayString(C.phone),1),e.createElementVNode("td",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(C.roles,q=>(e.openBlock(),e.createBlock(e.unref($.Tag),{key:q,size:"small"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(q),1)]),_:2},1024))),128))]),e.createElementVNode("td",null,[e.createVNode(e.unref(_.Switch),{"model-value":C.status===e.unref(S).ENABLED,"onUpdate:modelValue":q=>{C.status=q?e.unref(S).ENABLED:e.unref(S).DISABLED,x(C)}},null,8,["model-value","onUpdate:modelValue"])]),e.createElementVNode("td",null,e.toDisplayString(C.createTime),1),e.createElementVNode("td",null,[e.createVNode(e.unref(N.Space),null,{default:e.withCtx(()=>[e.createVNode(e.unref(N.Button),{type:"primary",link:"",size:"small",onClick:q=>B(C)},{default:e.withCtx(()=>[...a[16]||(a[16]=[e.createTextVNode("编辑",-1)])]),_:1},8,["onClick"]),e.createVNode(e.unref(U.Popconfirm),{title:"确定删除该用户吗?",onConfirm:q=>z(C.id)},{default:e.withCtx(()=>[e.createVNode(e.unref(N.Button),{type:"danger",link:"",size:"small"},{default:e.withCtx(()=>[...a[17]||(a[17]=[e.createTextVNode("删除",-1)])]),_:1})]),_:1},8,["onConfirm"])]),_:2},1024)])]))),128))])]),e.createElementVNode("div",Ho,[e.createVNode(e.unref($.Pagination),{"current-page":s.value,"onUpdate:currentPage":a[2]||(a[2]=C=>s.value=C),"page-size":p.value,"onUpdate:pageSize":a[3]||(a[3]=C=>p.value=C),total:c.value,"page-sizes":[10,20,50,100],layout:"total, sizes, prev, pager, next",onCurrentChange:I,onSizeChange:I},null,8,["current-page","page-size","total"])])]),_:1}),e.createVNode(e.unref(U.Modal),{modelValue:f.value,"onUpdate:modelValue":a[10]||(a[10]=C=>f.value=C),title:V.value,width:"500px"},{footer:e.withCtx(()=>[e.createVNode(e.unref(N.Space),null,{default:e.withCtx(()=>[e.createVNode(e.unref(N.Button),{onClick:a[9]||(a[9]=C=>f.value=!1)},{default:e.withCtx(()=>[...a[19]||(a[19]=[e.createTextVNode("取消",-1)])]),_:1}),e.createVNode(e.unref(N.Button),{type:"primary",onClick:F},{default:e.withCtx(()=>[...a[20]||(a[20]=[e.createTextVNode("确定",-1)])]),_:1})]),_:1})]),default:e.withCtx(()=>[e.createVNode(e.unref(_.Form),{ref_key:"formRef",ref:E,model:d,rules:g,"label-width":"80px"},{default:e.withCtx(()=>[e.createVNode(e.unref(_.FormItem),{label:"用户名",prop:"username"},{default:e.withCtx(()=>[e.createVNode(e.unref(_.Input),{modelValue:d.username,"onUpdate:modelValue":a[4]||(a[4]=C=>d.username=C),placeholder:"请输入用户名"},null,8,["modelValue"])]),_:1}),e.createVNode(e.unref(_.FormItem),{label:"昵称",prop:"nickname"},{default:e.withCtx(()=>[e.createVNode(e.unref(_.Input),{modelValue:d.nickname,"onUpdate:modelValue":a[5]||(a[5]=C=>d.nickname=C),placeholder:"请输入昵称"},null,8,["modelValue"])]),_:1}),e.createVNode(e.unref(_.FormItem),{label:"邮箱",prop:"email"},{default:e.withCtx(()=>[e.createVNode(e.unref(_.Input),{modelValue:d.email,"onUpdate:modelValue":a[6]||(a[6]=C=>d.email=C),placeholder:"请输入邮箱"},null,8,["modelValue"])]),_:1}),e.createVNode(e.unref(_.FormItem),{label:"手机号",prop:"phone"},{default:e.withCtx(()=>[e.createVNode(e.unref(_.Input),{modelValue:d.phone,"onUpdate:modelValue":a[7]||(a[7]=C=>d.phone=C),placeholder:"请输入手机号"},null,8,["modelValue"])]),_:1}),e.createVNode(e.unref(_.FormItem),{label:"状态"},{default:e.withCtx(()=>[e.createVNode(e.unref(_.Switch),{modelValue:d.status,"onUpdate:modelValue":a[8]||(a[8]=C=>d.status=C),"active-value":e.unref(S).ENABLED,"inactive-value":e.unref(S).DISABLED},null,8,["modelValue","active-value","inactive-value"])]),_:1})]),_:1},8,["model"])]),_:1},8,["modelValue","title"])]))}}),[["__scopeId","data-v-d2491ae0"]])},Symbol.toStringTag,{value:"Module"})),Xo={class:"role-page"},Go={class:"toolbar"},Jo={class:"data-table"},Qo={key:0},Zo={key:1},vo={class:"pagination-wrapper"},Qe=Object.freeze(Object.defineProperty({__proto__:null,default:R(e.defineComponent({__name:"index",setup(t){const n=[{id:1,name:"超级管理员",code:"admin",description:"拥有所有权限",status:S.ENABLED,permissions:["*"],createTime:"2024-01-01 10:00:00"},{id:2,name:"编辑",code:"editor",description:"内容编辑权限",status:S.ENABLED,permissions:["user:read","user:write"],createTime:"2024-01-02 10:00:00"},{id:3,name:"访客",code:"viewer",description:"只读权限",status:S.ENABLED,permissions:["user:read"],createTime:"2024-01-03 10:00:00"}],l=e.ref(!1),i=e.ref([]),c=e.ref(0),s=e.ref(1),p=e.ref(10),r=e.reactive({keyword:"",status:void 0}),f=e.ref(!1),V=e.computed(()=>d.id?"编辑角色":"新增角色"),d=e.reactive({id:0,name:"",code:"",description:"",status:S.ENABLED,permissions:[]}),g={name:[{required:!0,message:"请输入角色名称",trigger:"blur"}],code:[{required:!0,message:"请输入角色编码",trigger:"blur"}]},E=e.ref(),I=()=>{l.value=!0,setTimeout(()=>{let x=[...n];r.keyword&&(x=x.filter(u=>u.name.includes(r.keyword)||u.code.includes(r.keyword))),r.status!==void 0&&(x=x.filter(u=>u.status===r.status)),c.value=x.length,i.value=x.slice((s.value-1)*p.value,s.value*p.value),l.value=!1},300)},y=()=>{s.value=1,I()},h=()=>{r.keyword="",r.status=void 0,s.value=1,I()},m=()=>{Object.assign(d,{id:0,name:"",code:"",description:"",status:S.ENABLED,permissions:[]}),f.value=!0},B=x=>{Object.assign(d,x),f.value=!0},z=x=>{U.Message.success("删除成功"),I()},F=async()=>{var x;try{await((x=E.value)==null?void 0:x.validate()),U.Message.success(d.id?"编辑成功":"新增成功"),f.value=!1,I()}catch(u){console.error(u)}};return e.onMounted(()=>{I()}),(x,u)=>(e.openBlock(),e.createElementBlock("div",Xo,[e.createVNode(e.unref($.Card),{class:"search-card"},{default:e.withCtx(()=>[e.createVNode(e.unref(_.Form),{model:r,inline:""},{default:e.withCtx(()=>[e.createVNode(e.unref(_.FormItem),{label:"关键词"},{default:e.withCtx(()=>[e.createVNode(e.unref(_.Input),{modelValue:r.keyword,"onUpdate:modelValue":u[0]||(u[0]=a=>r.keyword=a),placeholder:"角色名称/编码",clearable:"",onKeyup:e.withKeys(y,["enter"])},null,8,["modelValue"])]),_:1}),e.createVNode(e.unref(_.FormItem),{label:"状态"},{default:e.withCtx(()=>[e.createVNode(e.unref(_.Select),{modelValue:r.status,"onUpdate:modelValue":u[1]||(u[1]=a=>r.status=a),options:e.unref(Ee),placeholder:"请选择",clearable:""},null,8,["modelValue","options"])]),_:1}),e.createVNode(e.unref(_.FormItem),null,{default:e.withCtx(()=>[e.createVNode(e.unref(N.Space),null,{default:e.withCtx(()=>[e.createVNode(e.unref(N.Button),{type:"primary",onClick:y},{default:e.withCtx(()=>[...u[10]||(u[10]=[e.createTextVNode("搜索",-1)])]),_:1}),e.createVNode(e.unref(N.Button),{onClick:h},{default:e.withCtx(()=>[...u[11]||(u[11]=[e.createTextVNode("重置",-1)])]),_:1})]),_:1})]),_:1})]),_:1},8,["model"])]),_:1}),e.createVNode(e.unref($.Card),{class:"table-card"},{default:e.withCtx(()=>[e.createElementVNode("div",Go,[e.createVNode(e.unref(N.Button),{type:"primary",onClick:m},{default:e.withCtx(()=>[...u[12]||(u[12]=[e.createTextVNode("新增角色",-1)])]),_:1})]),e.createElementVNode("table",Jo,[u[17]||(u[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,[l.value?(e.openBlock(),e.createElementBlock("tr",Qo,[...u[13]||(u[13]=[e.createElementVNode("td",{colspan:"7",class:"loading-cell"},"加载中...",-1)])])):i.value.length===0?(e.openBlock(),e.createElementBlock("tr",Zo,[...u[14]||(u[14]=[e.createElementVNode("td",{colspan:"7",class:"empty-cell"},"暂无数据",-1)])])):(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:2},e.renderList(i.value,a=>(e.openBlock(),e.createElementBlock("tr",{key:a.id},[e.createElementVNode("td",null,e.toDisplayString(a.id),1),e.createElementVNode("td",null,e.toDisplayString(a.name),1),e.createElementVNode("td",null,[e.createVNode(e.unref($.Tag),{type:"primary",size:"small"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(a.code),1)]),_:2},1024)]),e.createElementVNode("td",null,e.toDisplayString(a.description),1),e.createElementVNode("td",null,[e.createVNode(e.unref($.Tag),{type:a.status===e.unref(S).ENABLED?"success":"danger",size:"small"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(a.status===e.unref(S).ENABLED?"启用":"禁用"),1)]),_:2},1032,["type"])]),e.createElementVNode("td",null,e.toDisplayString(a.createTime),1),e.createElementVNode("td",null,[e.createVNode(e.unref(N.Space),null,{default:e.withCtx(()=>[e.createVNode(e.unref(N.Button),{type:"primary",link:"",size:"small",onClick:C=>B(a)},{default:e.withCtx(()=>[...u[15]||(u[15]=[e.createTextVNode("编辑",-1)])]),_:1},8,["onClick"]),e.createVNode(e.unref(U.Popconfirm),{title:"确定删除该角色吗?",onConfirm:C=>z(a.id)},{default:e.withCtx(()=>[e.createVNode(e.unref(N.Button),{type:"danger",link:"",size:"small"},{default:e.withCtx(()=>[...u[16]||(u[16]=[e.createTextVNode("删除",-1)])]),_:1})]),_:1},8,["onConfirm"])]),_:2},1024)])]))),128))])]),e.createElementVNode("div",vo,[e.createVNode(e.unref($.Pagination),{"current-page":s.value,"onUpdate:currentPage":u[2]||(u[2]=a=>s.value=a),"page-size":p.value,"onUpdate:pageSize":u[3]||(u[3]=a=>p.value=a),total:c.value,"page-sizes":[10,20,50,100],layout:"total, sizes, prev, pager, next",onCurrentChange:I,onSizeChange:I},null,8,["current-page","page-size","total"])])]),_:1}),e.createVNode(e.unref(U.Modal),{modelValue:f.value,"onUpdate:modelValue":u[9]||(u[9]=a=>f.value=a),title:V.value,width:"500px"},{footer:e.withCtx(()=>[e.createVNode(e.unref(N.Space),null,{default:e.withCtx(()=>[e.createVNode(e.unref(N.Button),{onClick:u[8]||(u[8]=a=>f.value=!1)},{default:e.withCtx(()=>[...u[18]||(u[18]=[e.createTextVNode("取消",-1)])]),_:1}),e.createVNode(e.unref(N.Button),{type:"primary",onClick:F},{default:e.withCtx(()=>[...u[19]||(u[19]=[e.createTextVNode("确定",-1)])]),_:1})]),_:1})]),default:e.withCtx(()=>[e.createVNode(e.unref(_.Form),{ref_key:"formRef",ref:E,model:d,rules:g,"label-width":"80px"},{default:e.withCtx(()=>[e.createVNode(e.unref(_.FormItem),{label:"角色名称",prop:"name"},{default:e.withCtx(()=>[e.createVNode(e.unref(_.Input),{modelValue:d.name,"onUpdate:modelValue":u[4]||(u[4]=a=>d.name=a),placeholder:"请输入角色名称"},null,8,["modelValue"])]),_:1}),e.createVNode(e.unref(_.FormItem),{label:"角色编码",prop:"code"},{default:e.withCtx(()=>[e.createVNode(e.unref(_.Input),{modelValue:d.code,"onUpdate:modelValue":u[5]||(u[5]=a=>d.code=a),placeholder:"请输入角色编码"},null,8,["modelValue"])]),_:1}),e.createVNode(e.unref(_.FormItem),{label:"描述"},{default:e.withCtx(()=>[e.createVNode(e.unref(_.Input),{modelValue:d.description,"onUpdate:modelValue":u[6]||(u[6]=a=>d.description=a),placeholder:"请输入描述"},null,8,["modelValue"])]),_:1}),e.createVNode(e.unref(_.FormItem),{label:"状态"},{default:e.withCtx(()=>[e.createVNode(e.unref(_.Switch),{modelValue:d.status,"onUpdate:modelValue":u[7]||(u[7]=a=>d.status=a),"active-value":e.unref(S).ENABLED,"inactive-value":e.unref(S).DISABLED},null,8,["modelValue","active-value","inactive-value"])]),_:1})]),_:1},8,["model"])]),_:1},8,["modelValue","title"])]))}}),[["__scopeId","data-v-8ad30bc6"]])},Symbol.toStringTag,{value:"Module"})),el={class:"menu-page"},tl={class:"toolbar"},nl={class:"menu-tree"},ol={class:"tree-table"},ll={class:"tree-row tree-row--level-0"},al=["onClick"],rl=["onClick"],Ze=Object.freeze(Object.defineProperty({__proto__:null,default:R(e.defineComponent({__name:"index",setup(t){const n=[{id:1,parentId:null,name:"Dashboard",path:"/dashboard",component:"dashboard/index",redirect:"",icon:"dashboard",title:"仪表盘",type:A.MENU,sort:1,status:S.ENABLED,hidden:!1,keepAlive:!0},{id:2,parentId:null,name:"System",path:"/system",component:"",redirect:"/system/user",icon:"setting",title:"系统管理",type:A.DIRECTORY,sort:2,status:S.ENABLED,hidden:!1,keepAlive:!1,children:[{id:21,parentId:2,name:"SystemUser",path:"/system/user",component:"system/user/index",redirect:"",icon:"user",title:"用户管理",type:A.MENU,sort:1,status:S.ENABLED,hidden:!1,keepAlive:!0},{id:22,parentId:2,name:"SystemRole",path:"/system/role",component:"system/role/index",redirect:"",icon:"role",title:"角色管理",type:A.MENU,sort:2,status:S.ENABLED,hidden:!1,keepAlive:!0},{id:23,parentId:2,name:"SystemMenu",path:"/system/menu",component:"system/menu/index",redirect:"",icon:"menu",title:"菜单管理",type:A.MENU,sort:3,status:S.ENABLED,hidden:!1,keepAlive:!0}]}],l=e.ref(!1),i=e.ref([]),c=e.ref(!1),s=e.computed(()=>p.id?"编辑菜单":"新增菜单"),p=e.reactive({id:0,parentId:null,name:"",path:"",component:"",redirect:"",icon:"",title:"",type:A.MENU,sort:0,status:S.ENABLED,hidden:!1,keepAlive:!0}),r={name:[{required:!0,message:"请输入菜单名称",trigger:"blur"}],path:[{required:!0,message:"请输入路由路径",trigger:"blur"}],title:[{required:!0,message:"请输入菜单标题",trigger:"blur"}]},f=e.ref(),V=()=>{l.value=!0,setTimeout(()=>{i.value=n,l.value=!1},300)},d=(y=null)=>{Object.assign(p,{id:0,parentId:y,name:"",path:"",component:"",redirect:"",icon:"",title:"",type:A.MENU,sort:0,status:S.ENABLED,hidden:!1,keepAlive:!0}),c.value=!0},g=y=>{Object.assign(p,y),c.value=!0},E=async()=>{var y;try{await((y=f.value)==null?void 0:y.validate()),U.Message.success(p.id?"编辑成功":"新增成功"),c.value=!1,V()}catch(h){console.error(h)}},I=y=>({dashboard:"📊",system:"⚙️",user:"👤",role:"👥",menu:"📋",setting:"🔧"})[y||""]||"📄";return e.onMounted(()=>{V()}),(y,h)=>(e.openBlock(),e.createElementBlock("div",el,[e.createVNode(e.unref($.Card),{class:"menu-card"},{default:e.withCtx(()=>[e.createElementVNode("div",tl,[e.createVNode(e.unref(N.Button),{type:"primary",onClick:h[0]||(h[0]=m=>d())},{default:e.withCtx(()=>[...h[14]||(h[14]=[e.createTextVNode("新增菜单",-1)])]),_:1})]),e.createElementVNode("div",nl,[e.createElementVNode("table",ol,[h[19]||(h[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(i.value,m=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:m.id},[e.createElementVNode("tr",ll,[e.createElementVNode("td",null,[e.createElementVNode("span",{class:"menu-name",onClick:B=>g(m)},e.toDisplayString(m.title),9,al)]),e.createElementVNode("td",null,e.toDisplayString(I(m.icon)),1),e.createElementVNode("td",null,e.toDisplayString(m.path),1),e.createElementVNode("td",null,[e.createVNode(e.unref($.Tag),{type:m.type===e.unref(A).DIRECTORY?"primary":m.type===e.unref(A).MENU?"success":"warning",size:"small"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(m.type===e.unref(A).DIRECTORY?"目录":m.type===e.unref(A).MENU?"菜单":"按钮"),1)]),_:2},1032,["type"])]),e.createElementVNode("td",null,e.toDisplayString(m.sort),1),e.createElementVNode("td",null,[e.createVNode(e.unref($.Tag),{type:m.status===e.unref(S).ENABLED?"success":"danger",size:"small"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(m.status===e.unref(S).ENABLED?"启用":"禁用"),1)]),_:2},1032,["type"])]),e.createElementVNode("td",null,[e.createVNode(e.unref(N.Space),null,{default:e.withCtx(()=>[e.createVNode(e.unref(N.Button),{type:"primary",link:"",size:"small",onClick:B=>d(m.id)},{default:e.withCtx(()=>[...h[15]||(h[15]=[e.createTextVNode("新增",-1)])]),_:1},8,["onClick"]),e.createVNode(e.unref(N.Button),{type:"primary",link:"",size:"small",onClick:B=>g(m)},{default:e.withCtx(()=>[...h[16]||(h[16]=[e.createTextVNode("编辑",-1)])]),_:1},8,["onClick"])]),_:2},1024)])]),m.children?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:0},e.renderList(m.children,B=>(e.openBlock(),e.createElementBlock("tr",{key:B.id,class:"tree-row tree-row--level-1"},[e.createElementVNode("td",null,[h[17]||(h[17]=e.createElementVNode("span",{class:"tree-indent"},null,-1)),e.createElementVNode("span",{class:"menu-name",onClick:z=>g(B)},e.toDisplayString(B.title),9,rl)]),e.createElementVNode("td",null,e.toDisplayString(I(B.icon)),1),e.createElementVNode("td",null,e.toDisplayString(B.path),1),e.createElementVNode("td",null,[e.createVNode(e.unref($.Tag),{type:B.type===e.unref(A).DIRECTORY?"primary":B.type===e.unref(A).MENU?"success":"warning",size:"small"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(B.type===e.unref(A).DIRECTORY?"目录":B.type===e.unref(A).MENU?"菜单":"按钮"),1)]),_:2},1032,["type"])]),e.createElementVNode("td",null,e.toDisplayString(B.sort),1),e.createElementVNode("td",null,[e.createVNode(e.unref($.Tag),{type:B.status===e.unref(S).ENABLED?"success":"danger",size:"small"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(B.status===e.unref(S).ENABLED?"启用":"禁用"),1)]),_:2},1032,["type"])]),e.createElementVNode("td",null,[e.createVNode(e.unref(N.Space),null,{default:e.withCtx(()=>[e.createVNode(e.unref(N.Button),{type:"primary",link:"",size:"small",onClick:z=>g(B)},{default:e.withCtx(()=>[...h[18]||(h[18]=[e.createTextVNode("编辑",-1)])]),_:1},8,["onClick"])]),_:2},1024)])]))),128)):e.createCommentVNode("",!0)],64))),128))])])])]),_:1}),e.createVNode(e.unref(U.Modal),{modelValue:c.value,"onUpdate:modelValue":h[13]||(h[13]=m=>c.value=m),title:s.value,width:"600px"},{footer:e.withCtx(()=>[e.createVNode(e.unref(N.Space),null,{default:e.withCtx(()=>[e.createVNode(e.unref(N.Button),{onClick:h[12]||(h[12]=m=>c.value=!1)},{default:e.withCtx(()=>[...h[20]||(h[20]=[e.createTextVNode("取消",-1)])]),_:1}),e.createVNode(e.unref(N.Button),{type:"primary",onClick:E},{default:e.withCtx(()=>[...h[21]||(h[21]=[e.createTextVNode("确定",-1)])]),_:1})]),_:1})]),default:e.withCtx(()=>[e.createVNode(e.unref(_.Form),{ref_key:"formRef",ref:f,model:p,rules:r,"label-width":"80px"},{default:e.withCtx(()=>[e.createVNode(e.unref(_.FormItem),{label:"上级菜单"},{default:e.withCtx(()=>[e.createVNode(e.unref(_.Input),{modelValue:p.parentId,"onUpdate:modelValue":h[1]||(h[1]=m=>p.parentId=m),placeholder:"上级菜单ID",disabled:""},null,8,["modelValue"])]),_:1}),e.createVNode(e.unref(_.FormItem),{label:"菜单类型"},{default:e.withCtx(()=>[e.createVNode(e.unref(_.Select),{modelValue:p.type,"onUpdate:modelValue":h[2]||(h[2]=m=>p.type=m),options:e.unref(Xe)},null,8,["modelValue","options"])]),_:1}),e.createVNode(e.unref(_.FormItem),{label:"菜单名称",prop:"name"},{default:e.withCtx(()=>[e.createVNode(e.unref(_.Input),{modelValue:p.name,"onUpdate:modelValue":h[3]||(h[3]=m=>p.name=m),placeholder:"请输入菜单名称(路由name)"},null,8,["modelValue"])]),_:1}),e.createVNode(e.unref(_.FormItem),{label:"菜单标题",prop:"title"},{default:e.withCtx(()=>[e.createVNode(e.unref(_.Input),{modelValue:p.title,"onUpdate:modelValue":h[4]||(h[4]=m=>p.title=m),placeholder:"请输入菜单标题"},null,8,["modelValue"])]),_:1}),e.createVNode(e.unref(_.FormItem),{label:"路由路径",prop:"path"},{default:e.withCtx(()=>[e.createVNode(e.unref(_.Input),{modelValue:p.path,"onUpdate:modelValue":h[5]||(h[5]=m=>p.path=m),placeholder:"请输入路由路径"},null,8,["modelValue"])]),_:1}),e.createVNode(e.unref(_.FormItem),{label:"组件路径"},{default:e.withCtx(()=>[e.createVNode(e.unref(_.Input),{modelValue:p.component,"onUpdate:modelValue":h[6]||(h[6]=m=>p.component=m),placeholder:"请输入组件路径"},null,8,["modelValue"])]),_:1}),e.createVNode(e.unref(_.FormItem),{label:"图标"},{default:e.withCtx(()=>[e.createVNode(e.unref(_.Input),{modelValue:p.icon,"onUpdate:modelValue":h[7]||(h[7]=m=>p.icon=m),placeholder:"请输入图标名称"},null,8,["modelValue"])]),_:1}),e.createVNode(e.unref(_.FormItem),{label:"排序"},{default:e.withCtx(()=>[e.createVNode(e.unref(_.InputNumber),{modelValue:p.sort,"onUpdate:modelValue":h[8]||(h[8]=m=>p.sort=m),min:0},null,8,["modelValue"])]),_:1}),e.createVNode(e.unref(_.FormItem),{label:"状态"},{default:e.withCtx(()=>[e.createVNode(e.unref(_.Switch),{modelValue:p.status,"onUpdate:modelValue":h[9]||(h[9]=m=>p.status=m),"active-value":e.unref(S).ENABLED,"inactive-value":e.unref(S).DISABLED},null,8,["modelValue","active-value","inactive-value"])]),_:1}),e.createVNode(e.unref(_.FormItem),{label:"隐藏"},{default:e.withCtx(()=>[e.createVNode(e.unref(_.Switch),{modelValue:p.hidden,"onUpdate:modelValue":h[10]||(h[10]=m=>p.hidden=m)},null,8,["modelValue"])]),_:1}),e.createVNode(e.unref(_.FormItem),{label:"缓存"},{default:e.withCtx(()=>[e.createVNode(e.unref(_.Switch),{modelValue:p.keepAlive,"onUpdate:modelValue":h[11]||(h[11]=m=>p.keepAlive=m)},null,8,["modelValue"])]),_:1})]),_:1},8,["model"])]),_:1},8,["modelValue","title"])]))}}),[["__scopeId","data-v-2a272a68"]])},Symbol.toStringTag,{value:"Module"}));o.Footer=xn,o.Forbidden=Ke,o.Gender=He,o.GenderOptions=Bo,o.GenderText=Co,o.Header=Fe,o.Layout=_e,o.Login=qe,o.MenuType=A,o.MenuTypeOptions=Xe,o.MenuTypeText=wo,o.NotFound=je,o.Sidebar=ze,o.Status=S,o.StatusOptions=Ee,o.StatusText=Eo,o.Tabs=wn,o.appConfig=$n,o.batchDeleteUsers=No,o.clearToken=he,o.createLayoutRoute=vn,o.createMenu=io,o.createRole=oo,o.createRouter=eo,o.createUser=go,o.defaultDynamicRoutes=Jn,o.deleteMenu=mo,o.deleteRole=ao,o.deleteUser=Vo,o.errorRoute=Ne,o.getApiBaseUrl=Ln,o.getAppId=le,o.getClientId=Oe,o.getCode=ct,o.getMenuList=so,o.getMenuTree=We,o.getRefreshTime=it,o.getRefreshToken=st,o.getRoleDetail=no,o.getRoleList=to,o.getToken=J,o.getTokenExpire=Le,o.getTokenType=Ie,o.getUserDetail=ho,o.getUserInfo=Pe,o.getUserList=fo,o.hasPermission=Hn,o.hasRole=Xn,o.hasToken=ge,o.http=D,o.initAppConfig=Dn,o.isAdmin=Gn,o.isTokenExpired=Ae,o.layoutRoute=ye,o.local=w,o.localStorageUtil=X,o.login=Re,o.logout=In,o.mockMenuData=Ye,o.permissionDirective=So,o.refreshToken=Tn,o.resetPassword=ko,o.resetRouter=Zn,o.router=ke,o.session=at,o.sessionStorageUtil=G,o.setCode=Me,o.setRefreshTime=Ue,o.setRefreshToken=De,o.setToken=xe,o.setTokenExpire=$e,o.setTokenInfo=fe,o.setTokenType=Te,o.setupRouterGuards=uo,o.staticRoutes=Ve,o.updateMenu=co,o.updateRole=lo,o.updateRoleStatus=ro,o.updateUser=_o,o.updateUserStatus=yo,o.useApp=jn,o.useAppStore=j,o.useAuth=Kn,o.useAuthStore=ee,o.useForm=Yn,o.useMenuStore=K,o.useTable=Wn,o.useUserStore=O,Object.defineProperty(o,Symbol.toStringTag,{value:"Module"})});
|
|
1
|
+
(function(a,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):(a=typeof globalThis<"u"?globalThis:a||self,e(a.XtoFronted={},a.Vue,a.Pinia,a.VueRouter,a.navigation,a.base,a.feedback,a.form,a.axios,a.data))})(this,function(a,e,re,F,Y,E,U,V,ct,z){"use strict";const Z="xto_",ze=t=>({get(n){const o=t.getItem(Z+n);if(!o)return null;try{return JSON.parse(o)}catch{return o}},set(n,o){if(o==null){t.removeItem(Z+n);return}const c=typeof o=="string"?o:JSON.stringify(o);t.setItem(Z+n,c)},remove(n){t.removeItem(Z+n)},clear(){Object.keys(t).forEach(o=>{o.startsWith(Z)&&t.removeItem(o)})}}),v=ze(window.localStorage),ee=ze(window.sessionStorage),w={get:v.get,set:v.set,remove:v.remove,clear:v.clear},dt={get:ee.get,set:ee.set,remove:ee.remove,clear:ee.clear},W=re.defineStore("app",()=>{const t=e.ref(w.get("appName")||"XTO App"),n=e.ref(w.get("indexPath")||"/dashboard"),o=e.ref(w.get("isDark")||!1),c=e.ref(w.get("theme")||"light"),s=e.ref(w.get("layout")||"sidebar"),i=e.ref(w.get("isCollapsed")||!1),u=e.ref(w.get("showTabs")??!0),r=e.ref(w.get("showFooter")??!0),f=e.ref(w.get("showBreadcrumb")??!0),N=e.ref(w.get("primaryColor")||"#409eff"),m=e.ref([]),g=e.computed(()=>o.value?"dark":"light"),k=L=>{t.value=L,w.set("appName",L)},T=L=>{n.value=L,w.set("indexPath",L)},C=()=>{o.value=!o.value,c.value=o.value?"dark":"light",_()},h=L=>{c.value=L,o.value=L==="dark",_()},_=()=>{const L=document.documentElement;o.value?L.classList.add("dark"):L.classList.remove("dark"),w.set("isDark",o.value),w.set("theme",c.value)},x=()=>{i.value=!i.value,w.set("isCollapsed",i.value)},A=L=>{s.value=L,w.set("layout",L)},R=()=>{u.value=!u.value,w.set("showTabs",u.value)},B=()=>{r.value=!r.value,w.set("showFooter",r.value)},p=()=>{f.value=!f.value,w.set("showBreadcrumb",f.value)},l=L=>{N.value=L,document.documentElement.style.setProperty("--color-primary",L),w.set("primaryColor",L)},y=L=>{m.value.includes(L)||m.value.push(L)},j=L=>{const J=m.value.indexOf(L);J>-1&&m.value.splice(J,1)},H=()=>{m.value=[]},le=()=>{_(),N.value!=="#409eff"&&document.documentElement.style.setProperty("--color-primary",N.value)};return e.watch(o,_),{appName:t,indexPath:n,isDark:o,theme:c,layout:s,isCollapsed:i,showTabs:u,showFooter:r,showBreadcrumb:f,primaryColor:N,cachedViews:m,themeClass:g,setAppName:k,setIndexPath:T,toggleTheme:C,toggleCollapse:x,setTheme:h,setLayout:A,toggleTabs:R,toggleFooter:B,toggleBreadcrumb:p,setPrimaryColor:l,addCachedView:y,removeCachedView:j,clearCachedViews:H,initTheme:le}}),he="menu_list",mt={menuCode:"home",menuName:"首页",menuUrl:"/dashboard",icon:"home",closable:!1,isDefault:!1,isOut:!1},G=re.defineStore("menu",()=>{const t=e.ref(w.get(he)||[]),n=e.computed(()=>t.value.length>0);return{menuList:t,hasMenu:n,setMenuList:s=>{t.value=[mt,...s],w.set(he,t.value)},clearMenu:()=>{t.value=[],w.remove(he)}}}),Ae="/vite.svg",_e="user_info",K=re.defineStore("user",()=>{const t=e.ref(w.get(_e)),n=e.computed(()=>!!t.value),o=e.computed(()=>{var g;return((g=t.value)==null?void 0:g.userId)||""}),c=e.computed(()=>{var g;return((g=t.value)==null?void 0:g.userName)||""}),s=e.computed(()=>{var g;return((g=t.value)==null?void 0:g.departmentName)||""}),i=e.computed(()=>{var g;return((g=t.value)==null?void 0:g.email)||""}),u=e.computed(()=>{var g;return((g=t.value)==null?void 0:g.mobilePhone)||""}),r=e.computed(()=>{var g;return((g=t.value)==null?void 0:g.positionName)||""}),f=e.computed(()=>{var g;return((g=t.value)==null?void 0:g.avatar)||""});return{userInfo:t,isLoggedIn:n,userId:o,userName:c,departmentName:s,email:i,mobilePhone:u,positionName:r,avatar:f,setUserInfo:g=>{t.value=g,w.set(_e,g)},clearUserInfo:()=>{t.value=null,w.remove(_e)}}}),ge="token",Ve="token_type",Ne="refresh_token",Ee="expires_time",ye="refresh_time",ke="code",te=()=>w.get(ge),Fe=t=>{w.set(ge,t)},Re=()=>w.get(Ve),Pe=t=>{w.set(Ve,t)},pt=()=>w.get(Ne),Oe=t=>{w.set(Ne,t)},qe=()=>w.get(Ee),je=t=>{w.set(Ee,t)},ut=()=>w.get(ye),Ke=t=>{w.set(ye,t)},ft=()=>w.get(ke),Ye=t=>{w.set(ke,t)},we=t=>{Fe(t.access_token),Pe(t.token_type||"Bearer"),Oe(t.refresh_token),je(t.expires_time),Ke(t.refresh_time),t.code&&Ye(t.code)},Ce=()=>{w.remove(ge),w.remove(Ve),w.remove(Ne),w.remove(Ee),w.remove(ye),w.remove(ke)},We=()=>{const t=qe();return t?Date.now()>t:!0},Be=()=>!!te()&&!We(),ne=re.defineStore("auth",()=>{const t=e.ref(te()),n=e.computed(()=>Be()),o=e.ref(""),c=e.ref(""),s=e.ref(""),i=e.ref("/login");return{token:t,isLoggedIn:n,baseUrl:o,appId:c,clientId:s,loginPath:i,login:k=>{t.value=k.access_token,we(k)},logout:()=>{t.value=null,Ce()},setBaseUrl:k=>{o.value=k},setAppId:k=>{c.value=k},setClientId:k=>{s.value=k},setLoginPath:k=>{i.value=k}}}),ht={class:"sidebar__logo"},_t={class:"sidebar__menu-icon"},gt={key:1,class:"sidebar__menu-char"},Vt={class:"sidebar__menu-icon"},Nt={key:1,class:"sidebar__menu-char"},Et={class:"sidebar__menu-icon"},yt={key:1,class:"sidebar__menu-char"},kt={key:0,class:"sidebar__user"},wt={class:"sidebar__user-info"},Ct={class:"sidebar__user-name"},Bt={class:"sidebar__user-role"},St=e.defineComponent({__name:"Sidebar",props:{menuList:{default:()=>[]}},setup(t){const n=t,o=F.useRoute(),c=F.useRouter(),s=G(),i=K(),u=ne(),r=W(),f=e.computed(()=>n.menuList.length>0?n.menuList:s.menuList),N=e.computed(()=>r.isCollapsed),m=e.computed(()=>o.path),g=e.computed(()=>r.isDark?"#1d1e1f":"#fff"),k=e.computed(()=>r.isDark?"#cfd3dc":"#303133"),T=e.computed(()=>"#409eff"),C=B=>{B&&B!==o.path&&c.push(B)},h=()=>{u.logout(),i.clearUserInfo(),s.clearMenu(),c.push("/login")},_=new Set(["arrow-up","arrow-down","arrow-left","arrow-right","caret-down","caret-right","plus","minus","close","check","edit","delete","copy","download","upload","refresh","search","filter","more","setting","share","loading","info","success","warning","error","question","user","user-add","user-group","logout","login","file","folder","folder-open","document","image","video","music","camera","mail","phone","chat","bell","message","eye","eye-off","calendar","clock","history","timer","location","map","globe","star","heart","thumb-up","link","external-link","lock","unlock","key","home","menu","menu-fold","menu-unfold","sidebar-fold","sidebar-expand","sidebar-left","dashboard","chart","chart-pie","chart-line","report","analytics","system","permission","role","user-manage","log","notification","app","list","grid","fullscreen","fullscreen-exit","zoom-in","zoom-out","print","bookmark","tag","code","terminal","database","server","cloud","gift","moon","sun","theme","skin"]),x=B=>{if(!B||B==="")return"";if(B.startsWith("tineco-icon-")){const l=B.replace("tineco-icon-","");return{home:"home",dashboard:"dashboard",system:"system",user:"user",role:"role",menu:"list",setting:"setting",file:"file",folder:"folder",chart:"chart",report:"report",analytics:"analytics"}[l]||l}return{dashboard:"dashboard",system:"system",user:"user",role:"role",menu:"list",setting:"setting",home:"home",chart:"chart",report:"report",analytics:"analytics",permission:"permission",log:"log",notification:"notification",app:"app",list:"list",grid:"grid"}[B]||B},A=B=>B?B.charAt(0):"",R=B=>_.has(B);return(B,p)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["sidebar",{"sidebar--collapsed":N.value}])},[e.createElementVNode("div",ht,[p[0]||(p[0]=e.createElementVNode("img",{src:Ae,alt:"Logo",class:"sidebar__logo-img"},null,-1)),e.withDirectives(e.createElementVNode("span",{class:"sidebar__logo-text"},e.toDisplayString(e.unref(r).appName),513),[[e.vShow,!N.value]])]),e.createVNode(e.unref(Y.Menu),{"default-active":m.value,mode:"vertical",collapse:N.value,"collapse-transition":!1,"background-color":g.value,"text-color":k.value,"active-text-color":T.value,class:"sidebar__menu",onSelect:C},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(f.value,l=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:l.menuUrl},[l.children&&l.children.length>0?(e.openBlock(),e.createBlock(e.unref(Y.SubMenu),{key:0,index:l.menuUrl},{title:e.withCtx(()=>[e.createElementVNode("span",_t,[R(x(l.icon))?(e.openBlock(),e.createBlock(e.unref(E.Icon),{key:0,name:x(l.icon),size:16},null,8,["name"])):(e.openBlock(),e.createElementBlock("span",gt,e.toDisplayString(A(l.menuName)),1))]),e.createElementVNode("span",null,e.toDisplayString(l.menuName),1)]),default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(l.children,y=>(e.openBlock(),e.createBlock(e.unref(Y.MenuItem),{key:y.menuUrl,index:y.menuUrl},{default:e.withCtx(()=>[e.createElementVNode("span",Vt,[R(x(y.icon))?(e.openBlock(),e.createBlock(e.unref(E.Icon),{key:0,name:x(y.icon),size:16},null,8,["name"])):(e.openBlock(),e.createElementBlock("span",Nt,e.toDisplayString(A(y.menuName)),1))]),e.createElementVNode("span",null,e.toDisplayString(y.menuName),1)]),_:2},1032,["index"]))),128))]),_:2},1032,["index"])):(e.openBlock(),e.createBlock(e.unref(Y.MenuItem),{key:1,index:l.menuUrl},{default:e.withCtx(()=>[e.createElementVNode("span",Et,[R(x(l.icon))?(e.openBlock(),e.createBlock(e.unref(E.Icon),{key:0,name:x(l.icon),size:16},null,8,["name"])):(e.openBlock(),e.createElementBlock("span",yt,e.toDisplayString(A(l.menuName)),1))]),e.createElementVNode("span",null,e.toDisplayString(l.menuName),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",kt,[e.createElementVNode("div",wt,[e.createElementVNode("span",Ct,e.toDisplayString(e.unref(i).userName),1),e.createElementVNode("span",Bt,e.toDisplayString(e.unref(i).departmentName),1)]),e.createVNode(e.unref(E.Button),{type:"text",size:"small",onClick:h},{default:e.withCtx(()=>[...p[1]||(p[1]=[e.createTextVNode("退出",-1)])]),_:1})]))],2))}}),q=(t,n)=>{const o=t.__vccOpts||t;for(const[c,s]of n)o[c]=s;return o},He=q(St,[["__scopeId","data-v-480fc818"]]),bt={class:"header"},xt={class:"header__left"},It={key:0,class:"header__breadcrumb"},Tt={key:0,class:"breadcrumb-separator"},Dt={class:"header__right"},$t=["title"],Lt={class:"header__avatar"},Mt={class:"header__user-name"},Ut={key:0,class:"header__dropdown"},zt={class:"header__dropdown-header"},At={class:"header__dropdown-avatar"},Ft={class:"header__dropdown-info"},Rt={class:"header__dropdown-name"},Pt={class:"header__dropdown-role"},Ot={class:"header__dropdown-menu"},qt={class:"search-container"},jt={class:"search-input-wrapper"},Kt={key:0,class:"search-results"},Yt=["onClick"],Wt={class:"search-result-info"},Ht={class:"search-result-title"},Gt={key:0,class:"search-result-parent"},Xt={key:1,class:"search-empty"},Jt={class:"settings-drawer"},Qt={class:"settings-section"},Zt={class:"settings-layout-options"},vt=["onClick"],en={class:"layout-option__preview"},tn={key:0,class:"layout-preview-sidebar"},nn={key:1,class:"layout-preview-top"},on={key:2,class:"layout-preview-mix"},ln={class:"layout-option__label"},an={class:"settings-section"},rn={class:"settings-color-options"},sn=["title","onClick"],cn={class:"settings-section"},dn={class:"settings-switch-list"},mn={class:"settings-switch-item"},pn={class:"settings-switch-item"},Ge=q(e.defineComponent({__name:"Header",setup(t){const n=F.useRoute(),o=F.useRouter(),c=W(),s=K(),i=ne(),u=G(),r=e.ref(!1),f=e.ref(!1),N=e.ref(null),m=e.ref(!1),g=e.ref(!1),k=e.ref(""),T=e.ref(null),C=e.ref(!1),h=[{value:"sidebar",label:"左侧菜单",icon:"sidebar-left"},{value:"top",label:"顶部菜单",icon:"menu"},{value:"mix",label:"混合菜单",icon:"grid"}],_=[{value:"#409eff",label:"默认蓝"},{value:"#1890ff",label:"科技蓝"},{value:"#52c41a",label:"极光绿"},{value:"#faad14",label:"日落橙"},{value:"#f5222d",label:"薄暮红"},{value:"#722ed1",label:"酱紫"}],x=e.computed(()=>n.matched.filter(d=>d.meta&&d.meta.title).map(d=>({title:d.meta.title,path:d.path}))),A=($,d="")=>{const O=[];return $.forEach(I=>{I.children&&I.children.length>0?O.push(...A(I.children,I.title)):O.push({...I,parentTitle:d})}),O},R=e.computed(()=>k.value.trim()?A(u.menuList).filter(d=>d.title.toLowerCase().includes(k.value.toLowerCase())):[]),B=e.computed(()=>c.layout),p=()=>{c.toggleCollapse()},l=()=>{c.toggleTheme()},y=()=>{f.value=!0},j=$=>{c.setLayout($),f.value=!1},H=$=>{C.value=$;const d=document.documentElement;$?d.classList.add("grey-mode"):d.classList.remove("grey-mode")},le=()=>{H(!C.value),f.value=!1},L=()=>{c.toggleTheme(),f.value=!1},J=()=>{document.fullscreenElement?document.exitFullscreen():document.documentElement.requestFullscreen()},me=()=>{m.value=!!document.fullscreenElement},$e=()=>{r.value=!r.value},X=()=>{r.value=!1},pe=()=>{g.value=!0},ae=()=>{g.value=!1,k.value=""},ue=$=>{o.push($),ae()},Le=$=>{c.setPrimaryColor($),f.value=!1},Me=()=>{X(),o.push("/profile")},Ue=()=>{X(),o.push("/change-password")},fe=()=>{X(),i.logout(),s.clearUserInfo(),u.clearMenu(),o.push("/login")},D=$=>{N.value&&!N.value.contains($.target)&&X(),T.value&&!T.value.contains($.target)&&ae()},S=$=>{$.key==="Escape"&&(ae(),X()),($.ctrlKey||$.metaKey)&&$.key==="k"&&($.preventDefault(),pe())};return e.onMounted(()=>{document.addEventListener("click",D),document.addEventListener("fullscreenchange",me),document.addEventListener("keydown",S),c.initTheme(),C.value=document.documentElement.classList.contains("grey-mode")}),e.onUnmounted(()=>{document.removeEventListener("click",D),document.removeEventListener("fullscreenchange",me),document.removeEventListener("keydown",S)}),($,d)=>{var O;return e.openBlock(),e.createElementBlock("div",bt,[e.createElementVNode("div",xt,[e.createElementVNode("div",{class:"header__collapse",onClick:p},[e.createVNode(e.unref(E.Icon),{name:e.unref(c).isCollapsed?"menu-unfold":"menu-fold",size:18},null,8,["name"])]),e.unref(c).showBreadcrumb?(e.openBlock(),e.createElementBlock("div",It,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(x.value,(I,Q)=>(e.openBlock(),e.createElementBlock("span",{key:I.path},[Q>0?(e.openBlock(),e.createElementBlock("span",Tt,"/")):e.createCommentVNode("",!0),e.createElementVNode("span",{class:e.normalizeClass({"is-current":Q===x.value.length-1})},e.toDisplayString(I.title),3)]))),128))])):e.createCommentVNode("",!0)]),e.createElementVNode("div",Dt,[e.createElementVNode("div",{class:"header__action",onClick:pe,title:"搜索 (Ctrl+K)"},[e.createVNode(e.unref(E.Icon),{name:"search",size:16})]),e.createElementVNode("div",{class:"header__action",onClick:J,title:m.value?"退出全屏":"全屏"},[e.createVNode(e.unref(E.Icon),{name:m.value?"fullscreen-exit":"fullscreen",size:16},null,8,["name"])],8,$t),e.createElementVNode("div",{class:"header__action",onClick:y,title:"换肤设置"},[e.createVNode(e.unref(E.Icon),{name:"skin",size:16})]),e.createElementVNode("div",{class:"header__action",onClick:l,title:"切换主题"},[e.createVNode(e.unref(E.Icon),{name:e.unref(c).isDark?"sun":"moon",size:16},null,8,["name"])]),e.createElementVNode("div",{class:"header__user",ref_key:"dropdownRef",ref:N},[e.createElementVNode("div",{class:"header__user-trigger",onClick:e.withModifiers($e,["stop"])},[e.createElementVNode("div",Lt,[e.createElementVNode("span",null,e.toDisplayString(((O=e.unref(s).userName)==null?void 0:O.charAt(0))||"U"),1)]),e.createElementVNode("span",Mt,e.toDisplayString(e.unref(s).userName),1),e.createElementVNode("span",{class:e.normalizeClass(["header__user-arrow",{"is-active":r.value}])},"▼",2)]),e.createVNode(e.Transition,{name:"dropdown"},{default:e.withCtx(()=>{var I;return[r.value?(e.openBlock(),e.createElementBlock("div",Ut,[e.createElementVNode("div",zt,[e.createElementVNode("div",At,[e.createElementVNode("span",null,e.toDisplayString(((I=e.unref(s).userName)==null?void 0:I.charAt(0))||"U"),1)]),e.createElementVNode("div",Ft,[e.createElementVNode("div",Rt,e.toDisplayString(e.unref(s).userName),1),e.createElementVNode("div",Pt,e.toDisplayString(e.unref(s).departmentName),1)])]),d[7]||(d[7]=e.createElementVNode("div",{class:"header__dropdown-divider"},null,-1)),e.createElementVNode("div",Ot,[e.createElementVNode("div",{class:"header__dropdown-item",onClick:Me},[e.createVNode(e.unref(E.Icon),{name:"user",size:16}),d[3]||(d[3]=e.createElementVNode("span",null,"个人信息",-1))]),e.createElementVNode("div",{class:"header__dropdown-item",onClick:Ue},[e.createVNode(e.unref(E.Icon),{name:"lock",size:16}),d[4]||(d[4]=e.createElementVNode("span",null,"修改密码",-1))]),d[6]||(d[6]=e.createElementVNode("div",{class:"header__dropdown-divider"},null,-1)),e.createElementVNode("div",{class:"header__dropdown-item header__dropdown-item--danger",onClick:fe},[e.createVNode(e.unref(E.Icon),{name:"logout",size:16}),d[5]||(d[5]=e.createElementVNode("span",null,"退出登录",-1))])])])):e.createCommentVNode("",!0)]}),_:1})],512)]),e.createVNode(e.Transition,{name:"search"},{default:e.withCtx(()=>[g.value?(e.openBlock(),e.createElementBlock("div",{key:0,class:"header__search-modal",ref_key:"searchRef",ref:T},[e.createElementVNode("div",qt,[e.createElementVNode("div",jt,[e.createVNode(e.unref(E.Icon),{class:"search-icon",name:"search",size:20}),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":d[0]||(d[0]=I=>k.value=I),type:"text",class:"search-input",placeholder:"搜索菜单...",autofocus:"",onKeyup:d[1]||(d[1]=e.withKeys(I=>R.value[0]&&ue(R.value[0].path),["enter"]))},null,544),[[e.vModelText,k.value]]),d[8]||(d[8]=e.createElementVNode("span",{class:"search-shortcut"},"ESC 关闭",-1))]),R.value.length>0?(e.openBlock(),e.createElementBlock("div",Kt,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(R.value,(I,Q)=>(e.openBlock(),e.createElementBlock("div",{key:I.path,class:e.normalizeClass(["search-result-item",{"is-first":Q===0}]),onClick:ta=>ue(I.path)},[e.createVNode(e.unref(E.Icon),{class:"search-result-icon",name:I.icon||"file",size:20},null,8,["name"]),e.createElementVNode("div",Wt,[e.createElementVNode("span",Ht,e.toDisplayString(I.title),1),I.parentTitle?(e.openBlock(),e.createElementBlock("span",Gt,e.toDisplayString(I.parentTitle),1)):e.createCommentVNode("",!0)])],10,Yt))),128))])):k.value?(e.openBlock(),e.createElementBlock("div",Xt," 未找到匹配的菜单 ")):e.createCommentVNode("",!0)])],512)):e.createCommentVNode("",!0)]),_:1}),e.createVNode(e.unref(U.Drawer),{modelValue:f.value,"onUpdate:modelValue":d[2]||(d[2]=I=>f.value=I),title:"换肤设置",direction:"rtl",size:"320px"},{default:e.withCtx(()=>[e.createElementVNode("div",Jt,[e.createElementVNode("div",Qt,[d[12]||(d[12]=e.createElementVNode("div",{class:"settings-title"},"布局模式",-1)),e.createElementVNode("div",Zt,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(h,I=>e.createElementVNode("div",{key:I.value,class:e.normalizeClass(["layout-option",{"is-active":B.value===I.value}]),onClick:Q=>j(I.value)},[e.createElementVNode("div",en,[I.value==="sidebar"?(e.openBlock(),e.createElementBlock("div",tn,[...d[9]||(d[9]=[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)])])):I.value==="top"?(e.openBlock(),e.createElementBlock("div",nn,[...d[10]||(d[10]=[e.createElementVNode("div",{class:"preview-header-full"},null,-1),e.createElementVNode("div",{class:"preview-content-full"},null,-1)])])):(e.openBlock(),e.createElementBlock("div",on,[...d[11]||(d[11]=[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",ln,e.toDisplayString(I.label),1)],10,vt)),64))])]),e.createElementVNode("div",an,[d[13]||(d[13]=e.createElementVNode("div",{class:"settings-title"},"主题色",-1)),e.createElementVNode("div",rn,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(_,I=>e.createElementVNode("div",{key:I.value,class:e.normalizeClass(["color-option",{"is-active":e.unref(c).primaryColor===I.value}]),style:e.normalizeStyle({backgroundColor:I.value}),title:I.label,onClick:Q=>Le(I.value)},[e.unref(c).primaryColor===I.value?(e.openBlock(),e.createBlock(e.unref(E.Icon),{key:0,name:"check",size:12,color:"#fff"})):e.createCommentVNode("",!0)],14,sn)),64))])]),e.createElementVNode("div",cn,[d[18]||(d[18]=e.createElementVNode("div",{class:"settings-title"},"功能设置",-1)),e.createElementVNode("div",dn,[e.createElementVNode("div",mn,[d[15]||(d[15]=e.createElementVNode("span",null,"灰色模式",-1)),e.createElementVNode("div",{class:e.normalizeClass(["switch-wrapper",{"is-checked":C.value}]),onClick:le},[...d[14]||(d[14]=[e.createElementVNode("span",{class:"switch-core"},null,-1)])],2)]),e.createElementVNode("div",pn,[d[17]||(d[17]=e.createElementVNode("span",null,"暗黑模式",-1)),e.createElementVNode("div",{class:e.normalizeClass(["switch-wrapper",{"is-checked":e.unref(c).isDark}]),onClick:L},[...d[16]||(d[16]=[e.createElementVNode("span",{class:"switch-core"},null,-1)])],2)])])])])]),_:1},8,["modelValue"])])}}}),[["__scopeId","data-v-702ab2d7"]]),un={class:"top-menu"},fn={class:"top-menu__menu-icon"},hn={key:1,class:"top-menu__menu-char"},_n={class:"top-menu__menu-icon"},gn={key:1,class:"top-menu__menu-char"},Vn={class:"top-menu__menu-icon"},Nn={key:1,class:"top-menu__menu-char"},En={class:"top-menu__actions"},yn=["title"],kn={class:"top-menu__avatar"},wn={class:"top-menu__user-name"},Cn={key:0,class:"top-menu__dropdown"},Bn={class:"top-menu__dropdown-header"},Sn={class:"top-menu__dropdown-avatar"},bn={class:"top-menu__dropdown-info"},xn={class:"top-menu__dropdown-name"},In={class:"top-menu__dropdown-role"},Tn={class:"top-menu__dropdown-menu"},Dn={class:"settings-drawer"},$n={class:"settings-section"},Ln={class:"settings-layout-options"},Mn=["onClick"],Un={class:"layout-option__preview"},zn={key:0,class:"layout-preview-sidebar"},An={key:1,class:"layout-preview-top"},Fn={key:2,class:"layout-preview-mix"},Rn={class:"layout-option__label"},Pn={class:"settings-section"},On={class:"settings-color-options"},qn=["title","onClick"],jn={class:"settings-section"},Kn={class:"settings-switch-list"},Yn={class:"settings-switch-item"},Wn={class:"settings-switch-item"},Hn=q(e.defineComponent({__name:"TopMenu",setup(t){const n=F.useRoute(),o=F.useRouter(),c=G(),s=W(),i=K(),u=ne(),r=e.computed(()=>n.path),f=e.computed(()=>s.isDark?"#1d1e1f":"#fff"),N=e.computed(()=>s.isDark?"#cfd3dc":"#303133"),m=e.computed(()=>"#409eff"),g=e.ref(!1),k=e.ref(null),T=e.ref(!1),C=e.ref(!1),h=e.ref(!1),_=D=>{D&&D!==n.path&&o.push(D)},x=new Set(["arrow-up","arrow-down","arrow-left","arrow-right","caret-down","caret-right","plus","minus","close","check","edit","delete","copy","download","upload","refresh","search","filter","more","setting","share","loading","info","success","warning","error","question","user","user-add","user-group","logout","login","file","folder","folder-open","document","image","video","music","camera","mail","phone","chat","bell","message","eye","eye-off","calendar","clock","history","timer","location","map","globe","star","heart","thumb-up","link","external-link","lock","unlock","key","home","menu","menu-fold","menu-unfold","sidebar-fold","sidebar-expand","sidebar-left","dashboard","chart","chart-pie","chart-line","report","analytics","system","permission","role","user-manage","log","notification","app","list","grid","fullscreen","fullscreen-exit","zoom-in","zoom-out","print","bookmark","tag","code","terminal","database","server","cloud","gift","moon","sun","theme","skin"]),A=D=>{if(!D||D==="")return"";if(D.startsWith("tineco-icon-")){const $=D.replace("tineco-icon-","");return{home:"home",dashboard:"dashboard",system:"system",user:"user",role:"role",menu:"list",setting:"setting",file:"file",folder:"folder",chart:"chart",report:"report",analytics:"analytics"}[$]||$}return{dashboard:"dashboard",system:"system",user:"user",role:"role",menu:"list",setting:"setting",home:"home",chart:"chart",report:"report",analytics:"analytics",permission:"permission",log:"log",notification:"notification",app:"app",list:"list",grid:"grid"}[D]||D},R=D=>D?D.charAt(0):"",B=D=>x.has(D),p=()=>{s.toggleTheme(),C.value=!1},l=()=>{document.fullscreenElement?document.exitFullscreen():document.documentElement.requestFullscreen()},y=()=>{T.value=!!document.fullscreenElement},j=()=>{g.value=!g.value},H=()=>{g.value=!1},le=()=>{C.value=!0},L=D=>{h.value=D;const S=document.documentElement;D?S.classList.add("grey-mode"):S.classList.remove("grey-mode")},J=()=>{L(!h.value),C.value=!1},me=()=>{s.toggleTheme(),C.value=!1},$e=[{value:"sidebar",label:"左侧菜单",icon:"sidebar-left"},{value:"top",label:"顶部菜单",icon:"menu"},{value:"mix",label:"混合菜单",icon:"grid"}],X=e.computed(()=>s.layout),pe=D=>{s.setLayout(D),C.value=!1},ae=[{value:"#409eff",label:"默认蓝"},{value:"#1890ff",label:"科技蓝"},{value:"#52c41a",label:"极光绿"},{value:"#faad14",label:"日落橙"},{value:"#f5222d",label:"薄暮红"},{value:"#722ed1",label:"酱紫"}],ue=D=>{s.setPrimaryColor(D),C.value=!1},Le=()=>{H(),o.push("/profile")},Me=()=>{H(),o.push("/change-password")},Ue=()=>{H(),u.logout(),i.clearUserInfo(),c.clearMenu(),o.push("/login")},fe=D=>{k.value&&!k.value.contains(D.target)&&H()};return e.onMounted(()=>{document.addEventListener("click",fe),document.addEventListener("fullscreenchange",y),h.value=document.documentElement.classList.contains("grey-mode")}),e.onUnmounted(()=>{document.removeEventListener("click",fe),document.removeEventListener("fullscreenchange",y)}),(D,S)=>{var $;return e.openBlock(),e.createElementBlock("div",un,[e.createVNode(e.unref(Y.Menu),{"default-active":r.value,mode:"horizontal","background-color":f.value,"text-color":N.value,"active-text-color":m.value,class:"top-menu__menu",onSelect:_},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(c).menuList,d=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:d.menuUrl},[d.children&&d.children.length>0?(e.openBlock(),e.createBlock(e.unref(Y.SubMenu),{key:0,index:d.menuUrl},{title:e.withCtx(()=>[e.createElementVNode("span",fn,[B(A(d.icon))?(e.openBlock(),e.createBlock(e.unref(E.Icon),{key:0,name:A(d.icon),size:16},null,8,["name"])):(e.openBlock(),e.createElementBlock("span",hn,e.toDisplayString(R(d.menuName)),1))]),e.createElementVNode("span",null,e.toDisplayString(d.menuName),1)]),default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(d.children,O=>(e.openBlock(),e.createBlock(e.unref(Y.MenuItem),{key:O.menuUrl,index:O.menuUrl},{default:e.withCtx(()=>[e.createElementVNode("span",_n,[B(A(O.icon))?(e.openBlock(),e.createBlock(e.unref(E.Icon),{key:0,name:A(O.icon),size:16},null,8,["name"])):(e.openBlock(),e.createElementBlock("span",gn,e.toDisplayString(R(O.menuName)),1))]),e.createElementVNode("span",null,e.toDisplayString(O.menuName),1)]),_:2},1032,["index"]))),128))]),_:2},1032,["index"])):(e.openBlock(),e.createBlock(e.unref(Y.MenuItem),{key:1,index:d.menuUrl},{default:e.withCtx(()=>[e.createElementVNode("span",Vn,[B(A(d.icon))?(e.openBlock(),e.createBlock(e.unref(E.Icon),{key:0,name:A(d.icon),size:16},null,8,["name"])):(e.openBlock(),e.createElementBlock("span",Nn,e.toDisplayString(R(d.menuName)),1))]),e.createElementVNode("span",null,e.toDisplayString(d.menuName),1)]),_:2},1032,["index"]))],64))),128))]),_:1},8,["default-active","background-color","text-color","active-text-color"]),e.createElementVNode("div",En,[e.createElementVNode("div",{class:"top-menu__action",onClick:l,title:T.value?"退出全屏":"全屏"},[e.createVNode(e.unref(E.Icon),{name:T.value?"fullscreen-exit":"fullscreen",size:16},null,8,["name"])],8,yn),e.createElementVNode("div",{class:"top-menu__action",onClick:le,title:"换肤设置"},[e.createVNode(e.unref(E.Icon),{name:"skin",size:16})]),e.createElementVNode("div",{class:"top-menu__action",onClick:p,title:"切换主题"},[e.createVNode(e.unref(E.Icon),{name:e.unref(s).isDark?"sun":"moon",size:16},null,8,["name"])]),e.createElementVNode("div",{class:"top-menu__user",ref_key:"dropdownRef",ref:k},[e.createElementVNode("div",{class:"top-menu__user-trigger",onClick:e.withModifiers(j,["stop"])},[e.createElementVNode("div",kn,[e.createElementVNode("span",null,e.toDisplayString((($=e.unref(i).userName)==null?void 0:$.charAt(0))||"U"),1)]),e.createElementVNode("span",wn,e.toDisplayString(e.unref(i).userName),1),e.createElementVNode("span",{class:e.normalizeClass(["top-menu__user-arrow",{"is-active":g.value}])},"▼",2)]),e.createVNode(e.Transition,{name:"dropdown"},{default:e.withCtx(()=>{var d;return[g.value?(e.openBlock(),e.createElementBlock("div",Cn,[e.createElementVNode("div",Bn,[e.createElementVNode("div",Sn,[e.createElementVNode("span",null,e.toDisplayString(((d=e.unref(i).userName)==null?void 0:d.charAt(0))||"U"),1)]),e.createElementVNode("div",bn,[e.createElementVNode("div",xn,e.toDisplayString(e.unref(i).userName),1),e.createElementVNode("div",In,e.toDisplayString(e.unref(i).departmentName),1)])]),S[5]||(S[5]=e.createElementVNode("div",{class:"top-menu__dropdown-divider"},null,-1)),e.createElementVNode("div",Tn,[e.createElementVNode("div",{class:"top-menu__dropdown-item",onClick:Le},[e.createVNode(e.unref(E.Icon),{name:"user",size:16}),S[1]||(S[1]=e.createElementVNode("span",null,"个人信息",-1))]),e.createElementVNode("div",{class:"top-menu__dropdown-item",onClick:Me},[e.createVNode(e.unref(E.Icon),{name:"lock",size:16}),S[2]||(S[2]=e.createElementVNode("span",null,"修改密码",-1))]),S[4]||(S[4]=e.createElementVNode("div",{class:"top-menu__dropdown-divider"},null,-1)),e.createElementVNode("div",{class:"top-menu__dropdown-item top-menu__dropdown-item--danger",onClick:Ue},[e.createVNode(e.unref(E.Icon),{name:"logout",size:16}),S[3]||(S[3]=e.createElementVNode("span",null,"退出登录",-1))])])])):e.createCommentVNode("",!0)]}),_:1})],512)]),e.createVNode(e.unref(U.Drawer),{modelValue:C.value,"onUpdate:modelValue":S[0]||(S[0]=d=>C.value=d),title:"换肤设置",direction:"rtl",size:"320px"},{default:e.withCtx(()=>[e.createElementVNode("div",Dn,[e.createElementVNode("div",$n,[S[9]||(S[9]=e.createElementVNode("div",{class:"settings-title"},"布局模式",-1)),e.createElementVNode("div",Ln,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList($e,d=>e.createElementVNode("div",{key:d.value,class:e.normalizeClass(["layout-option",{"is-active":X.value===d.value}]),onClick:O=>pe(d.value)},[e.createElementVNode("div",Un,[d.value==="sidebar"?(e.openBlock(),e.createElementBlock("div",zn,[...S[6]||(S[6]=[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)])])):d.value==="top"?(e.openBlock(),e.createElementBlock("div",An,[...S[7]||(S[7]=[e.createElementVNode("div",{class:"preview-header-full"},null,-1),e.createElementVNode("div",{class:"preview-content-full"},null,-1)])])):(e.openBlock(),e.createElementBlock("div",Fn,[...S[8]||(S[8]=[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",Rn,e.toDisplayString(d.label),1)],10,Mn)),64))])]),e.createElementVNode("div",Pn,[S[10]||(S[10]=e.createElementVNode("div",{class:"settings-title"},"主题色",-1)),e.createElementVNode("div",On,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(ae,d=>e.createElementVNode("div",{key:d.value,class:e.normalizeClass(["color-option",{"is-active":e.unref(s).primaryColor===d.value}]),style:e.normalizeStyle({backgroundColor:d.value}),title:d.label,onClick:O=>ue(d.value)},[e.unref(s).primaryColor===d.value?(e.openBlock(),e.createBlock(e.unref(E.Icon),{key:0,name:"check",size:12,color:"#fff"})):e.createCommentVNode("",!0)],14,qn)),64))])]),e.createElementVNode("div",jn,[S[15]||(S[15]=e.createElementVNode("div",{class:"settings-title"},"功能设置",-1)),e.createElementVNode("div",Kn,[e.createElementVNode("div",Yn,[S[12]||(S[12]=e.createElementVNode("span",null,"灰色模式",-1)),e.createElementVNode("div",{class:e.normalizeClass(["switch-wrapper",{"is-checked":h.value}]),onClick:J},[...S[11]||(S[11]=[e.createElementVNode("span",{class:"switch-core"},null,-1)])],2)]),e.createElementVNode("div",Wn,[S[14]||(S[14]=e.createElementVNode("span",null,"暗黑模式",-1)),e.createElementVNode("div",{class:e.normalizeClass(["switch-wrapper",{"is-checked":e.unref(s).isDark}]),onClick:me},[...S[13]||(S[13]=[e.createElementVNode("span",{class:"switch-core"},null,-1)])],2)])])])])]),_:1},8,["modelValue"])])}}}),[["__scopeId","data-v-7d6e8cc1"]]),Gn={key:1,class:"layout__top-menu"},Xn={class:"layout__main"},Jn={key:0,class:"layout__header"},Qn={class:"layout__content"},Se=q(e.defineComponent({__name:"index",setup(t){const n=W(),o=G(),c=e.computed(()=>n.isCollapsed?"64px":"210px"),s=e.computed(()=>n.layout),i=e.computed(()=>s.value==="sidebar"||s.value==="mix"),u=e.computed(()=>s.value==="top"),r=e.computed(()=>s.value!=="top"),f=e.computed(()=>(s.value!=="mix",o.menuList));return(N,m)=>{const g=e.resolveComponent("router-view");return e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["layout",`layout--${s.value}`])},[i.value?(e.openBlock(),e.createElementBlock("aside",{key:0,class:"layout__aside",style:e.normalizeStyle({width:c.value})},[e.createVNode(He,{"menu-list":s.value==="mix"?f.value:e.unref(o).menuList},null,8,["menu-list"])],4)):e.createCommentVNode("",!0),u.value?(e.openBlock(),e.createElementBlock("div",Gn,[e.createVNode(Hn)])):e.createCommentVNode("",!0),e.createElementVNode("div",Xn,[r.value?(e.openBlock(),e.createElementBlock("header",Jn,[e.createVNode(Ge)])):e.createCommentVNode("",!0),e.createElementVNode("main",Qn,[e.createVNode(g)])])],2)}}}),[["__scopeId","data-v-cac35527"]]),Zn=Object.freeze(Object.defineProperty({__proto__:null,default:Se},Symbol.toStringTag,{value:"Module"})),vn={class:"tabs-wrapper"},eo={class:"tab-label"},to=["onClick"],no=q(e.defineComponent({__name:"Tabs",setup(t){const n=F.useRoute(),o=F.useRouter(),c=e.computed(()=>{const r=[];return n.matched.forEach(f=>{var N;(N=f.meta)!=null&&N.affix&&r.push({name:f.name,title:f.meta.title,path:f.path,affix:!0})}),r}),s=e.computed(()=>n.path),i=r=>{o.push(r)},u=r=>{const f=c.value.find(N=>N.path===r);if(!(f!=null&&f.affix)&&r===s.value){const N=c.value.findIndex(g=>g.path===r),m=c.value[N-1]||c.value[N+1];m&&o.push(m.path)}};return(r,f)=>(e.openBlock(),e.createElementBlock("div",vn,[e.createVNode(e.unref(Y.Tabs),{modelValue:s.value,"onUpdate:modelValue":f[0]||(f[0]=N=>s.value=N),type:"card",onTabClick:i},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(c.value,N=>(e.openBlock(),e.createBlock(e.unref(Y.TabPane),{key:N.path,name:N.path,label:N.title,closable:!N.affix},{label:e.withCtx(()=>[e.createElementVNode("span",eo,[e.createTextVNode(e.toDisplayString(N.title)+" ",1),N.affix?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("span",{key:0,class:"tab-close",onClick:e.withModifiers(m=>u(N.path),["stop"])}," ✕ ",8,to))])]),_:2},1032,["name","label","closable"]))),128))]),_:1},8,["modelValue"])]))}}),[["__scopeId","data-v-9156d8cd"]]),oo={},lo={class:"footer"};function ao(t,n){return e.openBlock(),e.createElementBlock("div",lo,[...n[0]||(n[0]=[e.createElementVNode("span",null,"Copyright © 2024 Xto Demo. All Rights Reserved.",-1)])])}const ro=q(oo,[["render",ao],["__scopeId","data-v-4852826a"]]),oe=(()=>{const t=ct.create({baseURL:void 0,timeout:3e4,headers:{"Content-Type":"application/json"}});return t.interceptors.request.use(n=>{const o=te(),c=Re()||"Bearer";return o&&(n.headers.Authorization=`${c} ${o}`),n},n=>Promise.reject(n)),t.interceptors.response.use(n=>{const{data:o}=n;return o.code===200||o.code===0?o.data:(U.Message.error(o.message||"请求失败"),Promise.reject(new Error(o.message||"请求失败")))},n=>{var c;const{response:o}=n;if(o)switch(o.status){case 401:U.Message.error("登录已过期,请重新登录"),Ce(),window.location.href="/login";break;case 403:U.Message.error("没有权限访问");break;case 404:U.Message.error("请求资源不存在");break;case 500:U.Message.error("服务器错误");break;default:U.Message.error(((c=o.data)==null?void 0:c.message)||"请求失败")}else U.Message.error("网络连接失败");return Promise.reject(n)}),t})(),M={get(t,n){return oe.get(t,n)},post(t,n,o){return oe.post(t,n,o)},put(t,n,o){return oe.put(t,n,o)},patch(t,n,o){return oe.patch(t,n,o)},delete(t,n){return oe.delete(t,n)}};function Xe(t){return M.post("/user/v1.0/login/by-domain",t)}function so(){return M.put("/user/v1.0/user/logout")}function Je(){return M.get("/user/v1.0/user/get-me")}function io(t){return M.post("/user/v1.0/refresh",{refreshToken:t})}const se=e.ref(""),ie=e.ref(""),ce=e.ref("");function co(t){t.appId&&(se.value=t.appId),t.clientId&&(ie.value=t.clientId),t.apiBaseUrl&&(ce.value=t.apiBaseUrl)}function de(){if(se.value)return se.value;try{return""}catch{return""}}function Qe(){if(ie.value)return ie.value;try{return""}catch{return""}}function mo(){if(ce.value)return ce.value;try{return""}catch{return""}}const po={appId:se,clientId:ie,apiBaseUrl:ce},uo={class:"login"},fo={class:"login__container"},Ze=q(e.defineComponent({__name:"index",setup(t){const n=F.useRouter(),o=F.useRoute(),c=e.ref(!1),s=e.ref(!1),i=e.reactive({uid:"",password:""}),u={uid:[{required:!0,message:"请输入用户名",trigger:"blur"}],password:[{required:!0,message:"请输入密码",trigger:"blur"},{min:6,message:"密码长度至少6位",trigger:"blur"}]},r=e.ref(),f=async()=>{var N;try{await((N=r.value)==null?void 0:N.validate()),c.value=!0;const m=await Xe({appId:de(),clientId:Qe(),uid:i.uid,password:i.password,code:!0});we(m),U.Message.success("登录成功");const g=o.query.redirect||"/";n.push(g)}catch(m){console.error("登录失败:",m)}finally{c.value=!1}};return(N,m)=>(e.openBlock(),e.createElementBlock("div",uo,[e.createElementVNode("div",fo,[m[5]||(m[5]=e.createElementVNode("div",{class:"login__header"},[e.createElementVNode("img",{src:Ae,alt:"Logo",class:"login__logo"}),e.createElementVNode("h1",{class:"login__title"},"Xto Demo"),e.createElementVNode("p",{class:"login__subtitle"},"后台管理系统")],-1)),e.createVNode(e.unref(V.Form),{ref_key:"formRef",ref:r,model:i,rules:u,class:"login__form","label-width":"0"},{default:e.withCtx(()=>[e.createVNode(e.unref(V.FormItem),{prop:"uid"},{default:e.withCtx(()=>[e.createVNode(e.unref(V.Input),{modelValue:i.uid,"onUpdate:modelValue":m[0]||(m[0]=g=>i.uid=g),placeholder:"用户名",size:"large"},{prefix:e.withCtx(()=>[e.createVNode(e.unref(E.Icon),{name:"user",size:18})]),_:1},8,["modelValue"])]),_:1}),e.createVNode(e.unref(V.FormItem),{prop:"password"},{default:e.withCtx(()=>[e.createVNode(e.unref(V.Input),{modelValue:i.password,"onUpdate:modelValue":m[1]||(m[1]=g=>i.password=g),type:"password",placeholder:"密码",size:"large","show-password":"",onKeyup:e.withKeys(f,["enter"])},{prefix:e.withCtx(()=>[e.createVNode(e.unref(E.Icon),{name:"lock",size:18})]),_:1},8,["modelValue"])]),_:1}),e.createVNode(e.unref(V.FormItem),null,{default:e.withCtx(()=>[e.createVNode(e.unref(V.Checkbox),{modelValue:s.value,"onUpdate:modelValue":m[2]||(m[2]=g=>s.value=g)},{default:e.withCtx(()=>[...m[3]||(m[3]=[e.createTextVNode("记住我",-1)])]),_:1},8,["modelValue"])]),_:1}),e.createVNode(e.unref(V.FormItem),null,{default:e.withCtx(()=>[e.createVNode(e.unref(E.Button),{type:"primary",size:"large",loading:c.value,class:"login__submit",onClick:f},{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-f3e724b6"]]),ho=Object.freeze(Object.defineProperty({__proto__:null,default:Ze},Symbol.toStringTag,{value:"Module"})),_o={class:"error-page"},go={class:"error-page__content"},ve=q(e.defineComponent({__name:"404",setup(t){const n=F.useRouter(),o=()=>{n.push("/")};return(c,s)=>(e.openBlock(),e.createElementBlock("div",_o,[e.createElementVNode("div",go,[s[1]||(s[1]=e.createElementVNode("div",{class:"error-page__code"},"404",-1)),s[2]||(s[2]=e.createElementVNode("div",{class:"error-page__title"},"页面不存在",-1)),s[3]||(s[3]=e.createElementVNode("div",{class:"error-page__desc"},"抱歉,您访问的页面不存在或已被删除",-1)),e.createVNode(e.unref(E.Button),{type:"primary",onClick:o},{default:e.withCtx(()=>[...s[0]||(s[0]=[e.createTextVNode("返回首页",-1)])]),_:1})])]))}}),[["__scopeId","data-v-c3c12c24"]]),Vo=Object.freeze(Object.defineProperty({__proto__:null,default:ve},Symbol.toStringTag,{value:"Module"})),No={class:"error-page"},Eo={class:"error-page__content"},et=q(e.defineComponent({__name:"403",setup(t){const n=F.useRouter(),o=()=>{n.push("/")};return(c,s)=>(e.openBlock(),e.createElementBlock("div",No,[e.createElementVNode("div",Eo,[s[1]||(s[1]=e.createElementVNode("div",{class:"error-page__code"},"403",-1)),s[2]||(s[2]=e.createElementVNode("div",{class:"error-page__title"},"无访问权限",-1)),s[3]||(s[3]=e.createElementVNode("div",{class:"error-page__desc"},"抱歉,您没有权限访问此页面",-1)),e.createVNode(e.unref(E.Button),{type:"primary",onClick:o},{default:e.withCtx(()=>[...s[0]||(s[0]=[e.createTextVNode("返回首页",-1)])]),_:1})])]))}}),[["__scopeId","data-v-dd5f2795"]]),yo=Object.freeze(Object.defineProperty({__proto__:null,default:et},Symbol.toStringTag,{value:"Module"}));function ko(){const t=W(),n=K(),o=ne(),c=e.computed(()=>n.userName||""),s=e.computed(()=>n.userInfo),i=e.computed(()=>t.appName),u=e.computed(()=>o.isLoggedIn),r=e.computed(()=>t.isDark),f=e.computed(()=>t.theme),N=e.computed(()=>t.isCollapsed),m=e.computed(()=>t.layout);return{userName:c,userInfo:s,appName:i,isLoggedIn:u,isDark:r,theme:f,isCollapsed:N,layout:m,toggleTheme:()=>{t.toggleTheme()},toggleCollapse:()=>{t.toggleCollapse()}}}function wo(){const t=K();return{isLoggedIn:e.computed(()=>t.isLoggedIn)}}function Co(t,n={}){const{rules:o,onSubmit:c}=n,s=e.ref(),i=e.reactive({...t}),u=e.ref(!1),r=e.ref(!1),f=e.ref(!1),N=()=>{k(),f.value=!1,r.value=!0},m=C=>{Object.assign(i,C),f.value=!0,r.value=!0},g=()=>{r.value=!1,k()},k=()=>{var C;Object.keys(t).forEach(h=>{i[h]=t[h]}),(C=s.value)==null||C.resetFields()};return{formRef:s,formData:i,rules:o,loading:u,visible:r,isEdit:f,openAdd:N,openEdit:m,close:g,resetForm:k,handleSubmit:async()=>{var C;try{await((C=s.value)==null?void 0:C.validate()),u.value=!0,await(c==null?void 0:c(i)),g()}catch(h){console.error(h)}finally{u.value=!1}}}}function Bo(t){const{fetchData:n,defaultPageSize:o=10}=t,c=e.ref(!1),s=e.ref([]),i=e.ref(0),u=e.ref(1),r=e.ref(o),f=e.reactive({}),N=async()=>{c.value=!0;try{const _={...f,page:u.value,pageSize:r.value},x=await n(_);s.value=x.list,i.value=x.total}catch(_){console.error(_)}finally{c.value=!1}},m=()=>{u.value=1,N()},g=()=>{Object.keys(f).forEach(_=>{f[_]=void 0}),u.value=1,N()},k=_=>{u.value=_,N()},T=_=>{r.value=_,u.value=1,N()},C=()=>{N()},h=e.computed(()=>({current:u.value,pageSize:r.value,total:i.value}));return{loading:c,data:s,total:i,currentPage:u,pageSize:r,searchParams:f,pagination:h,getData:N,handleSearch:m,handleReset:g,handlePageChange:k,handleSizeChange:T,refresh:C}}function So(t){return K().isLoggedIn}function bo(t){return K().isLoggedIn}function xo(){return!0}const be=[{path:"/login",name:"Login",component:()=>Promise.resolve().then(()=>ho),meta:{title:"登录",hidden:!0}},{path:"/404",name:"NotFound",component:()=>Promise.resolve().then(()=>Vo),meta:{title:"404",hidden:!0}},{path:"/403",name:"Forbidden",component:()=>Promise.resolve().then(()=>yo),meta:{title:"403",hidden:!0}}],xe={path:"/:pathMatch(.*)*",redirect:"/404",meta:{hidden:!0}},Ie={path:"/",name:"Layout",component:()=>Promise.resolve().then(()=>Zn),redirect:"/dashboard",children:[{path:"/dashboard",name:"Dashboard",component:()=>Promise.resolve().then(()=>at),meta:{title:"仪表盘",icon:"dashboard",keepAlive:!0,affix:!0}},{path:"/system/user",name:"SystemUser",component:()=>Promise.resolve().then(()=>rt),meta:{title:"用户管理",icon:"user",keepAlive:!0}},{path:"/system/role",name:"SystemRole",component:()=>Promise.resolve().then(()=>st),meta:{title:"角色管理",icon:"role",keepAlive:!0}},{path:"/system/menu",name:"SystemMenu",component:()=>Promise.resolve().then(()=>it),meta:{title:"菜单管理",icon:"menu",keepAlive:!0}}]},Io=[{path:"/dashboard",name:"Dashboard",component:()=>Promise.resolve().then(()=>at),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(()=>rt),meta:{title:"用户管理",icon:"user",keepAlive:!0}},{path:"role",name:"SystemRole",component:()=>Promise.resolve().then(()=>st),meta:{title:"角色管理",icon:"role",keepAlive:!0}},{path:"menu",name:"SystemMenu",component:()=>Promise.resolve().then(()=>it),meta:{title:"菜单管理",icon:"menu",keepAlive:!0}}]}],tt=[{menuCode:"dashboard",menuName:"仪表盘",menuUrl:"/dashboard",icon:"dashboard",closable:!0,isDefault:!0,isOut:!1},{menuCode:"system",menuName:"系统管理",menuUrl:"/system",icon:"setting",closable:!1,isDefault:!1,isOut:!1,children:[{menuCode:"system_user",menuName:"用户管理",menuUrl:"/system/user",icon:"user",closable:!0,isDefault:!1,isOut:!1},{menuCode:"system_role",menuName:"角色管理",menuUrl:"/system/role",icon:"role",closable:!0,isDefault:!1,isOut:!1},{menuCode:"system_menu",menuName:"菜单管理",menuUrl:"/system/menu",icon:"menu",closable:!0,isDefault:!1,isOut:!1}]}],Te=F.createRouter({history:F.createWebHistory(),routes:[...be,Ie,xe],scrollBehavior:()=>({left:0,top:0})}),To=["/login","/404","/403"];Te.beforeEach(async(t,n,o)=>{const c=W();if(c.initTheme(),Be())if(t.path==="/login")o({path:"/"});else{const s=K();s.isLoggedIn||(s.setUserInfo({appId:de(),userId:"1",userName:"管理员",departmentName:"技术部",email:"admin@example.com",mobilePhone:"13800138000",positionName:"管理员",avatar:""}),G().setMenuList(tt)),t.name&&t.meta.keepAlive&&c.addCachedView(t.name),o()}else To.includes(t.path)?o():o("/login")});function Do(){const t=F.createRouter({history:F.createWebHistory(),routes:[...be,Ie,xe]});Te.matcher=t.matcher}function $o(t,n={}){const o=n.indexPath||"/dashboard";return{path:"/",name:"Layout",component:Se,redirect:o,children:t}}function Lo(t){return F.createRouter({history:F.createWebHistory(),routes:t,scrollBehavior:()=>({left:0,top:0})})}function Mo(t){return M.get("/role/list",{params:t})}function Uo(t){return M.get(`/role/${t}`)}function zo(t){return M.post("/role",t)}function Ao(t,n){return M.put(`/role/${t}`,n)}function Fo(t){return M.delete(`/role/${t}`)}function Ro(t,n){return M.patch(`/role/${t}/status`,{status:n})}function Po(){return M.get("/user/v1.0/menu/list")}function nt(t){const n=t||de();return M.get(`/user/v1.0/menu/get-menu?appId=${n}`)}function Oo(t){return M.post("/menu",t)}function qo(t,n){return M.put(`/menu/${t}`,n)}function jo(t){return M.delete(`/menu/${t}`)}const Ko=["/login","/404","/403"];function Yo(t,n={}){const o=n.whiteList||Ko,c=n.loginPath||"/login",s=n.homePath||"/";t.beforeEach(async(i,u,r)=>{const f=W(),N=K(),m=G();if(f.initTheme(),te())if(i.path===c)r({path:s});else if(N.isLoggedIn)i.name&&i.meta.keepAlive&&f.addCachedView(i.name),r();else try{if(n.fetchUserInfo){const k=await n.fetchUserInfo();N.setUserInfo(k)}else{const k=await Je();N.setUserInfo(k)}if(n.fetchMenu){const k=await n.fetchMenu();m.setMenuList(k)}else{const k=await nt(n.appId);m.setMenuList(k)}n.onLoginSuccess&&n.onLoginSuccess(),i.name&&i.meta.keepAlive&&f.addCachedView(i.name),r({...i,replace:!0})}catch(k){console.error("获取用户信息失败:",k),N.clearUserInfo(),m.clearMenu(),localStorage.removeItem("token"),localStorage.removeItem("token_type"),localStorage.removeItem("refresh_token"),r({path:c,query:{redirect:i.fullPath}})}else o.includes(i.path)?r():r({path:c,query:{redirect:i.fullPath}})}),t.afterEach(()=>{})}function Wo(t){return M.get("/user/list",{params:t})}function Ho(t){return M.get(`/user/${t}`)}function Go(t){return M.post("/user",t)}function Xo(t,n){return M.put(`/user/${t}`,n)}function Jo(t){return M.delete(`/user/${t}`)}function Qo(t){return M.post("/user/batch-delete",{ids:t})}function Zo(t,n){return M.patch(`/user/${t}/status`,{status:n})}function vo(t){return M.post(`/user/${t}/reset-password`)}var b=(t=>(t[t.ENABLED=1]="ENABLED",t[t.DISABLED=0]="DISABLED",t))(b||{}),ot=(t=>(t[t.UNKNOWN=0]="UNKNOWN",t[t.MALE=1]="MALE",t[t.FEMALE=2]="FEMALE",t))(ot||{}),P=(t=>(t[t.DIRECTORY=0]="DIRECTORY",t[t.MENU=1]="MENU",t[t.BUTTON=2]="BUTTON",t))(P||{});const el={1:"启用",0:"禁用"},tl={0:"未知",1:"男",2:"女"},nl={0:"目录",1:"菜单",2:"按钮"},De=[{label:"启用",value:1},{label:"禁用",value:0}],ol=[{label:"未知",value:0},{label:"男",value:1},{label:"女",value:2}],lt=[{label:"目录",value:0},{label:"菜单",value:1},{label:"按钮",value:2}],ll={mounted(t,n){var c;K().isLoggedIn||(c=t.parentNode)==null||c.removeChild(t)}},al={class:"dashboard"},rl={class:"dashboard__stats"},sl={class:"stat-card__content"},il={class:"stat-card__info"},cl={class:"stat-card__title"},dl={class:"dashboard__main"},ml={class:"quick-links"},pl={class:"quick-link__icon"},ul={class:"quick-link__title"},fl={class:"activity-list"},hl={class:"activity-item__action"},_l={class:"activity-item__time"},gl={class:"system-info"},Vl={class:"system-info__item"},Nl={class:"system-info__item"},at=Object.freeze(Object.defineProperty({__proto__:null,default:q(e.defineComponent({__name:"index",setup(t){const n=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"}]),c=e.ref([{title:"用户管理",path:"/system/user",icon:"👤"},{title:"角色管理",path:"/system/role",icon:"👥"},{title:"菜单管理",path:"/system/menu",icon:"📋"},{title:"系统设置",path:"/system",icon:"⚙️"}]);return(s,i)=>{const u=e.resolveComponent("router-link");return e.openBlock(),e.createElementBlock("div",al,[e.createElementVNode("div",rl,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(n.value,r=>(e.openBlock(),e.createBlock(e.unref(z.Card),{key:r.title,class:"stat-card"},{default:e.withCtx(()=>[e.createElementVNode("div",sl,[e.createElementVNode("div",{class:"stat-card__icon",style:e.normalizeStyle({backgroundColor:r.color+"20"})},e.toDisplayString(r.icon),5),e.createElementVNode("div",il,[e.createElementVNode("div",cl,e.toDisplayString(r.title),1),e.createElementVNode("div",{class:"stat-card__value",style:e.normalizeStyle({color:r.color})},e.toDisplayString(r.value.toLocaleString()),5)])])]),_:2},1024))),128))]),e.createElementVNode("div",dl,[e.createVNode(e.unref(z.Card),{class:"dashboard__quick"},{header:e.withCtx(()=>[...i[0]||(i[0]=[e.createElementVNode("span",{class:"card-title"},"快捷入口",-1)])]),default:e.withCtx(()=>[e.createElementVNode("div",ml,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(c.value,r=>(e.openBlock(),e.createBlock(u,{key:r.path,to:r.path,class:"quick-link"},{default:e.withCtx(()=>[e.createElementVNode("span",pl,e.toDisplayString(r.icon),1),e.createElementVNode("span",ul,e.toDisplayString(r.title),1)]),_:2},1032,["to"]))),128))])]),_:1}),e.createVNode(e.unref(z.Card),{class:"dashboard__activity"},{header:e.withCtx(()=>[...i[1]||(i[1]=[e.createElementVNode("span",{class:"card-title"},"最近活动",-1)])]),default:e.withCtx(()=>[e.createElementVNode("div",fl,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.value,(r,f)=>(e.openBlock(),e.createElementBlock("div",{key:f,class:"activity-item"},[e.createVNode(e.unref(z.Tag),{type:r.type,size:"small"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(r.user),1)]),_:2},1032,["type"]),e.createElementVNode("span",hl,e.toDisplayString(r.action),1),e.createElementVNode("span",_l,e.toDisplayString(r.time),1)]))),128))])]),_:1})]),e.createVNode(e.unref(z.Card),{class:"dashboard__system"},{header:e.withCtx(()=>[...i[2]||(i[2]=[e.createElementVNode("span",{class:"card-title"},"系统信息",-1)])]),default:e.withCtx(()=>[e.createElementVNode("div",gl,[i[5]||(i[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)),i[6]||(i[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)),i[7]||(i[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)),i[8]||(i[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",Vl,[i[3]||(i[3]=e.createElementVNode("span",{class:"system-info__label"},"服务器状态",-1)),e.createVNode(e.unref(z.Progress),{percentage:75,status:"success"})]),e.createElementVNode("div",Nl,[i[4]||(i[4]=e.createElementVNode("span",{class:"system-info__label"},"内存使用",-1)),e.createVNode(e.unref(z.Progress),{percentage:45})])])]),_:1})])}}}),[["__scopeId","data-v-44648cb1"]])},Symbol.toStringTag,{value:"Module"})),El={class:"user-page"},yl={class:"toolbar"},kl={class:"data-table"},wl={key:0},Cl={key:1},Bl={class:"pagination-wrapper"},rt=Object.freeze(Object.defineProperty({__proto__:null,default:q(e.defineComponent({__name:"index",setup(t){const n=[{id:1,username:"admin",nickname:"管理员",email:"admin@example.com",phone:"13800138001",status:b.ENABLED,roles:["admin"],createTime:"2024-01-01 10:00:00"},{id:2,username:"zhangsan",nickname:"张三",email:"zhangsan@example.com",phone:"13800138002",status:b.ENABLED,roles:["editor"],createTime:"2024-01-02 10:00:00"},{id:3,username:"lisi",nickname:"李四",email:"lisi@example.com",phone:"13800138003",status:b.DISABLED,roles:["viewer"],createTime:"2024-01-03 10:00:00"},{id:4,username:"wangwu",nickname:"王五",email:"wangwu@example.com",phone:"13800138004",status:b.ENABLED,roles:["editor"],createTime:"2024-01-04 10:00:00"},{id:5,username:"zhaoliu",nickname:"赵六",email:"zhaoliu@example.com",phone:"13800138005",status:b.ENABLED,roles:["viewer"],createTime:"2024-01-05 10:00:00"}],o=e.ref(!1),c=e.ref([]),s=e.ref(0),i=e.ref(1),u=e.ref(10),r=e.reactive({keyword:"",status:void 0}),f=e.ref(!1),N=e.computed(()=>m.id?"编辑用户":"新增用户"),m=e.reactive({id:0,username:"",nickname:"",email:"",phone:"",status:b.ENABLED,roles:[]}),g={username:[{required:!0,message:"请输入用户名",trigger:"blur"}],nickname:[{required:!0,message:"请输入昵称",trigger:"blur"}],email:[{required:!0,message:"请输入邮箱",trigger:"blur"},{type:"email",message:"请输入正确的邮箱格式",trigger:"blur"}]},k=e.ref(),T=()=>{o.value=!0,setTimeout(()=>{let p=[...n];r.keyword&&(p=p.filter(l=>l.username.includes(r.keyword)||l.nickname.includes(r.keyword))),r.status!==void 0&&(p=p.filter(l=>l.status===r.status)),s.value=p.length,c.value=p.slice((i.value-1)*u.value,i.value*u.value),o.value=!1},300)},C=()=>{i.value=1,T()},h=()=>{r.keyword="",r.status=void 0,i.value=1,T()},_=()=>{Object.assign(m,{id:0,username:"",nickname:"",email:"",phone:"",status:b.ENABLED,roles:[]}),f.value=!0},x=p=>{Object.assign(m,p),f.value=!0},A=p=>{U.Message.success("删除成功"),T()},R=async()=>{var p;try{await((p=k.value)==null?void 0:p.validate()),U.Message.success(m.id?"编辑成功":"新增成功"),f.value=!1,T()}catch(l){console.error(l)}},B=p=>{U.Message.success(`已${p.status===b.ENABLED?"启用":"禁用"}用户 ${p.username}`)};return e.onMounted(()=>{T()}),(p,l)=>(e.openBlock(),e.createElementBlock("div",El,[e.createVNode(e.unref(z.Card),{class:"search-card"},{default:e.withCtx(()=>[e.createVNode(e.unref(V.Form),{model:r,inline:""},{default:e.withCtx(()=>[e.createVNode(e.unref(V.FormItem),{label:"关键词"},{default:e.withCtx(()=>[e.createVNode(e.unref(V.Input),{modelValue:r.keyword,"onUpdate:modelValue":l[0]||(l[0]=y=>r.keyword=y),placeholder:"用户名/昵称",clearable:"",onKeyup:e.withKeys(C,["enter"])},null,8,["modelValue"])]),_:1}),e.createVNode(e.unref(V.FormItem),{label:"状态"},{default:e.withCtx(()=>[e.createVNode(e.unref(V.Select),{modelValue:r.status,"onUpdate:modelValue":l[1]||(l[1]=y=>r.status=y),options:e.unref(De),placeholder:"请选择",clearable:""},null,8,["modelValue","options"])]),_:1}),e.createVNode(e.unref(V.FormItem),null,{default:e.withCtx(()=>[e.createVNode(e.unref(E.Space),null,{default:e.withCtx(()=>[e.createVNode(e.unref(E.Button),{type:"primary",onClick:C},{default:e.withCtx(()=>[...l[11]||(l[11]=[e.createTextVNode("搜索",-1)])]),_:1}),e.createVNode(e.unref(E.Button),{onClick:h},{default:e.withCtx(()=>[...l[12]||(l[12]=[e.createTextVNode("重置",-1)])]),_:1})]),_:1})]),_:1})]),_:1},8,["model"])]),_:1}),e.createVNode(e.unref(z.Card),{class:"table-card"},{default:e.withCtx(()=>[e.createElementVNode("div",yl,[e.createVNode(e.unref(E.Button),{type:"primary",onClick:_},{default:e.withCtx(()=>[...l[13]||(l[13]=[e.createTextVNode("新增用户",-1)])]),_:1})]),e.createElementVNode("table",kl,[l[18]||(l[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",wl,[...l[14]||(l[14]=[e.createElementVNode("td",{colspan:"9",class:"loading-cell"},"加载中...",-1)])])):c.value.length===0?(e.openBlock(),e.createElementBlock("tr",Cl,[...l[15]||(l[15]=[e.createElementVNode("td",{colspan:"9",class:"empty-cell"},"暂无数据",-1)])])):(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:2},e.renderList(c.value,y=>(e.openBlock(),e.createElementBlock("tr",{key:y.id},[e.createElementVNode("td",null,e.toDisplayString(y.id),1),e.createElementVNode("td",null,e.toDisplayString(y.username),1),e.createElementVNode("td",null,e.toDisplayString(y.nickname),1),e.createElementVNode("td",null,e.toDisplayString(y.email),1),e.createElementVNode("td",null,e.toDisplayString(y.phone),1),e.createElementVNode("td",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(y.roles,j=>(e.openBlock(),e.createBlock(e.unref(z.Tag),{key:j,size:"small"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(j),1)]),_:2},1024))),128))]),e.createElementVNode("td",null,[e.createVNode(e.unref(V.Switch),{"model-value":y.status===e.unref(b).ENABLED,"onUpdate:modelValue":j=>{y.status=j?e.unref(b).ENABLED:e.unref(b).DISABLED,B(y)}},null,8,["model-value","onUpdate:modelValue"])]),e.createElementVNode("td",null,e.toDisplayString(y.createTime),1),e.createElementVNode("td",null,[e.createVNode(e.unref(E.Space),null,{default:e.withCtx(()=>[e.createVNode(e.unref(E.Button),{type:"primary",link:"",size:"small",onClick:j=>x(y)},{default:e.withCtx(()=>[...l[16]||(l[16]=[e.createTextVNode("编辑",-1)])]),_:1},8,["onClick"]),e.createVNode(e.unref(U.Popconfirm),{title:"确定删除该用户吗?",onConfirm:j=>A(y.id)},{default:e.withCtx(()=>[e.createVNode(e.unref(E.Button),{type:"danger",link:"",size:"small"},{default:e.withCtx(()=>[...l[17]||(l[17]=[e.createTextVNode("删除",-1)])]),_:1})]),_:1},8,["onConfirm"])]),_:2},1024)])]))),128))])]),e.createElementVNode("div",Bl,[e.createVNode(e.unref(z.Pagination),{"current-page":i.value,"onUpdate:currentPage":l[2]||(l[2]=y=>i.value=y),"page-size":u.value,"onUpdate:pageSize":l[3]||(l[3]=y=>u.value=y),total:s.value,"page-sizes":[10,20,50,100],layout:"total, sizes, prev, pager, next",onCurrentChange:T,onSizeChange:T},null,8,["current-page","page-size","total"])])]),_:1}),e.createVNode(e.unref(U.Modal),{modelValue:f.value,"onUpdate:modelValue":l[10]||(l[10]=y=>f.value=y),title:N.value,width:"500px"},{footer:e.withCtx(()=>[e.createVNode(e.unref(E.Space),null,{default:e.withCtx(()=>[e.createVNode(e.unref(E.Button),{onClick:l[9]||(l[9]=y=>f.value=!1)},{default:e.withCtx(()=>[...l[19]||(l[19]=[e.createTextVNode("取消",-1)])]),_:1}),e.createVNode(e.unref(E.Button),{type:"primary",onClick:R},{default:e.withCtx(()=>[...l[20]||(l[20]=[e.createTextVNode("确定",-1)])]),_:1})]),_:1})]),default:e.withCtx(()=>[e.createVNode(e.unref(V.Form),{ref_key:"formRef",ref:k,model:m,rules:g,"label-width":"80px"},{default:e.withCtx(()=>[e.createVNode(e.unref(V.FormItem),{label:"用户名",prop:"username"},{default:e.withCtx(()=>[e.createVNode(e.unref(V.Input),{modelValue:m.username,"onUpdate:modelValue":l[4]||(l[4]=y=>m.username=y),placeholder:"请输入用户名"},null,8,["modelValue"])]),_:1}),e.createVNode(e.unref(V.FormItem),{label:"昵称",prop:"nickname"},{default:e.withCtx(()=>[e.createVNode(e.unref(V.Input),{modelValue:m.nickname,"onUpdate:modelValue":l[5]||(l[5]=y=>m.nickname=y),placeholder:"请输入昵称"},null,8,["modelValue"])]),_:1}),e.createVNode(e.unref(V.FormItem),{label:"邮箱",prop:"email"},{default:e.withCtx(()=>[e.createVNode(e.unref(V.Input),{modelValue:m.email,"onUpdate:modelValue":l[6]||(l[6]=y=>m.email=y),placeholder:"请输入邮箱"},null,8,["modelValue"])]),_:1}),e.createVNode(e.unref(V.FormItem),{label:"手机号",prop:"phone"},{default:e.withCtx(()=>[e.createVNode(e.unref(V.Input),{modelValue:m.phone,"onUpdate:modelValue":l[7]||(l[7]=y=>m.phone=y),placeholder:"请输入手机号"},null,8,["modelValue"])]),_:1}),e.createVNode(e.unref(V.FormItem),{label:"状态"},{default:e.withCtx(()=>[e.createVNode(e.unref(V.Switch),{modelValue:m.status,"onUpdate:modelValue":l[8]||(l[8]=y=>m.status=y),"active-value":e.unref(b).ENABLED,"inactive-value":e.unref(b).DISABLED},null,8,["modelValue","active-value","inactive-value"])]),_:1})]),_:1},8,["model"])]),_:1},8,["modelValue","title"])]))}}),[["__scopeId","data-v-d2491ae0"]])},Symbol.toStringTag,{value:"Module"})),Sl={class:"role-page"},bl={class:"toolbar"},xl={class:"data-table"},Il={key:0},Tl={key:1},Dl={class:"pagination-wrapper"},st=Object.freeze(Object.defineProperty({__proto__:null,default:q(e.defineComponent({__name:"index",setup(t){const n=[{id:1,name:"超级管理员",code:"admin",description:"拥有所有权限",status:b.ENABLED,permissions:["*"],createTime:"2024-01-01 10:00:00"},{id:2,name:"编辑",code:"editor",description:"内容编辑权限",status:b.ENABLED,permissions:["user:read","user:write"],createTime:"2024-01-02 10:00:00"},{id:3,name:"访客",code:"viewer",description:"只读权限",status:b.ENABLED,permissions:["user:read"],createTime:"2024-01-03 10:00:00"}],o=e.ref(!1),c=e.ref([]),s=e.ref(0),i=e.ref(1),u=e.ref(10),r=e.reactive({keyword:"",status:void 0}),f=e.ref(!1),N=e.computed(()=>m.id?"编辑角色":"新增角色"),m=e.reactive({id:0,name:"",code:"",description:"",status:b.ENABLED,permissions:[]}),g={name:[{required:!0,message:"请输入角色名称",trigger:"blur"}],code:[{required:!0,message:"请输入角色编码",trigger:"blur"}]},k=e.ref(),T=()=>{o.value=!0,setTimeout(()=>{let B=[...n];r.keyword&&(B=B.filter(p=>p.name.includes(r.keyword)||p.code.includes(r.keyword))),r.status!==void 0&&(B=B.filter(p=>p.status===r.status)),s.value=B.length,c.value=B.slice((i.value-1)*u.value,i.value*u.value),o.value=!1},300)},C=()=>{i.value=1,T()},h=()=>{r.keyword="",r.status=void 0,i.value=1,T()},_=()=>{Object.assign(m,{id:0,name:"",code:"",description:"",status:b.ENABLED,permissions:[]}),f.value=!0},x=B=>{Object.assign(m,B),f.value=!0},A=B=>{U.Message.success("删除成功"),T()},R=async()=>{var B;try{await((B=k.value)==null?void 0:B.validate()),U.Message.success(m.id?"编辑成功":"新增成功"),f.value=!1,T()}catch(p){console.error(p)}};return e.onMounted(()=>{T()}),(B,p)=>(e.openBlock(),e.createElementBlock("div",Sl,[e.createVNode(e.unref(z.Card),{class:"search-card"},{default:e.withCtx(()=>[e.createVNode(e.unref(V.Form),{model:r,inline:""},{default:e.withCtx(()=>[e.createVNode(e.unref(V.FormItem),{label:"关键词"},{default:e.withCtx(()=>[e.createVNode(e.unref(V.Input),{modelValue:r.keyword,"onUpdate:modelValue":p[0]||(p[0]=l=>r.keyword=l),placeholder:"角色名称/编码",clearable:"",onKeyup:e.withKeys(C,["enter"])},null,8,["modelValue"])]),_:1}),e.createVNode(e.unref(V.FormItem),{label:"状态"},{default:e.withCtx(()=>[e.createVNode(e.unref(V.Select),{modelValue:r.status,"onUpdate:modelValue":p[1]||(p[1]=l=>r.status=l),options:e.unref(De),placeholder:"请选择",clearable:""},null,8,["modelValue","options"])]),_:1}),e.createVNode(e.unref(V.FormItem),null,{default:e.withCtx(()=>[e.createVNode(e.unref(E.Space),null,{default:e.withCtx(()=>[e.createVNode(e.unref(E.Button),{type:"primary",onClick:C},{default:e.withCtx(()=>[...p[10]||(p[10]=[e.createTextVNode("搜索",-1)])]),_:1}),e.createVNode(e.unref(E.Button),{onClick:h},{default:e.withCtx(()=>[...p[11]||(p[11]=[e.createTextVNode("重置",-1)])]),_:1})]),_:1})]),_:1})]),_:1},8,["model"])]),_:1}),e.createVNode(e.unref(z.Card),{class:"table-card"},{default:e.withCtx(()=>[e.createElementVNode("div",bl,[e.createVNode(e.unref(E.Button),{type:"primary",onClick:_},{default:e.withCtx(()=>[...p[12]||(p[12]=[e.createTextVNode("新增角色",-1)])]),_:1})]),e.createElementVNode("table",xl,[p[17]||(p[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",Il,[...p[13]||(p[13]=[e.createElementVNode("td",{colspan:"7",class:"loading-cell"},"加载中...",-1)])])):c.value.length===0?(e.openBlock(),e.createElementBlock("tr",Tl,[...p[14]||(p[14]=[e.createElementVNode("td",{colspan:"7",class:"empty-cell"},"暂无数据",-1)])])):(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:2},e.renderList(c.value,l=>(e.openBlock(),e.createElementBlock("tr",{key:l.id},[e.createElementVNode("td",null,e.toDisplayString(l.id),1),e.createElementVNode("td",null,e.toDisplayString(l.name),1),e.createElementVNode("td",null,[e.createVNode(e.unref(z.Tag),{type:"primary",size:"small"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(l.code),1)]),_:2},1024)]),e.createElementVNode("td",null,e.toDisplayString(l.description),1),e.createElementVNode("td",null,[e.createVNode(e.unref(z.Tag),{type:l.status===e.unref(b).ENABLED?"success":"danger",size:"small"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(l.status===e.unref(b).ENABLED?"启用":"禁用"),1)]),_:2},1032,["type"])]),e.createElementVNode("td",null,e.toDisplayString(l.createTime),1),e.createElementVNode("td",null,[e.createVNode(e.unref(E.Space),null,{default:e.withCtx(()=>[e.createVNode(e.unref(E.Button),{type:"primary",link:"",size:"small",onClick:y=>x(l)},{default:e.withCtx(()=>[...p[15]||(p[15]=[e.createTextVNode("编辑",-1)])]),_:1},8,["onClick"]),e.createVNode(e.unref(U.Popconfirm),{title:"确定删除该角色吗?",onConfirm:y=>A(l.id)},{default:e.withCtx(()=>[e.createVNode(e.unref(E.Button),{type:"danger",link:"",size:"small"},{default:e.withCtx(()=>[...p[16]||(p[16]=[e.createTextVNode("删除",-1)])]),_:1})]),_:1},8,["onConfirm"])]),_:2},1024)])]))),128))])]),e.createElementVNode("div",Dl,[e.createVNode(e.unref(z.Pagination),{"current-page":i.value,"onUpdate:currentPage":p[2]||(p[2]=l=>i.value=l),"page-size":u.value,"onUpdate:pageSize":p[3]||(p[3]=l=>u.value=l),total:s.value,"page-sizes":[10,20,50,100],layout:"total, sizes, prev, pager, next",onCurrentChange:T,onSizeChange:T},null,8,["current-page","page-size","total"])])]),_:1}),e.createVNode(e.unref(U.Modal),{modelValue:f.value,"onUpdate:modelValue":p[9]||(p[9]=l=>f.value=l),title:N.value,width:"500px"},{footer:e.withCtx(()=>[e.createVNode(e.unref(E.Space),null,{default:e.withCtx(()=>[e.createVNode(e.unref(E.Button),{onClick:p[8]||(p[8]=l=>f.value=!1)},{default:e.withCtx(()=>[...p[18]||(p[18]=[e.createTextVNode("取消",-1)])]),_:1}),e.createVNode(e.unref(E.Button),{type:"primary",onClick:R},{default:e.withCtx(()=>[...p[19]||(p[19]=[e.createTextVNode("确定",-1)])]),_:1})]),_:1})]),default:e.withCtx(()=>[e.createVNode(e.unref(V.Form),{ref_key:"formRef",ref:k,model:m,rules:g,"label-width":"80px"},{default:e.withCtx(()=>[e.createVNode(e.unref(V.FormItem),{label:"角色名称",prop:"name"},{default:e.withCtx(()=>[e.createVNode(e.unref(V.Input),{modelValue:m.name,"onUpdate:modelValue":p[4]||(p[4]=l=>m.name=l),placeholder:"请输入角色名称"},null,8,["modelValue"])]),_:1}),e.createVNode(e.unref(V.FormItem),{label:"角色编码",prop:"code"},{default:e.withCtx(()=>[e.createVNode(e.unref(V.Input),{modelValue:m.code,"onUpdate:modelValue":p[5]||(p[5]=l=>m.code=l),placeholder:"请输入角色编码"},null,8,["modelValue"])]),_:1}),e.createVNode(e.unref(V.FormItem),{label:"描述"},{default:e.withCtx(()=>[e.createVNode(e.unref(V.Input),{modelValue:m.description,"onUpdate:modelValue":p[6]||(p[6]=l=>m.description=l),placeholder:"请输入描述"},null,8,["modelValue"])]),_:1}),e.createVNode(e.unref(V.FormItem),{label:"状态"},{default:e.withCtx(()=>[e.createVNode(e.unref(V.Switch),{modelValue:m.status,"onUpdate:modelValue":p[7]||(p[7]=l=>m.status=l),"active-value":e.unref(b).ENABLED,"inactive-value":e.unref(b).DISABLED},null,8,["modelValue","active-value","inactive-value"])]),_:1})]),_:1},8,["model"])]),_:1},8,["modelValue","title"])]))}}),[["__scopeId","data-v-8ad30bc6"]])},Symbol.toStringTag,{value:"Module"})),$l={class:"menu-page"},Ll={class:"toolbar"},Ml={class:"menu-tree"},Ul={class:"tree-table"},zl={class:"tree-row tree-row--level-0"},Al=["onClick"],Fl=["onClick"],it=Object.freeze(Object.defineProperty({__proto__:null,default:q(e.defineComponent({__name:"index",setup(t){const n=[{id:1,parentId:null,name:"Dashboard",path:"/dashboard",component:"dashboard/index",redirect:"",icon:"dashboard",title:"仪表盘",type:P.MENU,sort:1,status:b.ENABLED,hidden:!1,keepAlive:!0},{id:2,parentId:null,name:"System",path:"/system",component:"",redirect:"/system/user",icon:"setting",title:"系统管理",type:P.DIRECTORY,sort:2,status:b.ENABLED,hidden:!1,keepAlive:!1,children:[{id:21,parentId:2,name:"SystemUser",path:"/system/user",component:"system/user/index",redirect:"",icon:"user",title:"用户管理",type:P.MENU,sort:1,status:b.ENABLED,hidden:!1,keepAlive:!0},{id:22,parentId:2,name:"SystemRole",path:"/system/role",component:"system/role/index",redirect:"",icon:"role",title:"角色管理",type:P.MENU,sort:2,status:b.ENABLED,hidden:!1,keepAlive:!0},{id:23,parentId:2,name:"SystemMenu",path:"/system/menu",component:"system/menu/index",redirect:"",icon:"menu",title:"菜单管理",type:P.MENU,sort:3,status:b.ENABLED,hidden:!1,keepAlive:!0}]}],o=e.ref(!1),c=e.ref([]),s=e.ref(!1),i=e.computed(()=>u.id?"编辑菜单":"新增菜单"),u=e.reactive({id:0,parentId:null,name:"",path:"",component:"",redirect:"",icon:"",title:"",type:P.MENU,sort:0,status:b.ENABLED,hidden:!1,keepAlive:!0}),r={name:[{required:!0,message:"请输入菜单名称",trigger:"blur"}],path:[{required:!0,message:"请输入路由路径",trigger:"blur"}],title:[{required:!0,message:"请输入菜单标题",trigger:"blur"}]},f=e.ref(),N=()=>{o.value=!0,setTimeout(()=>{c.value=n,o.value=!1},300)},m=(C=null)=>{Object.assign(u,{id:0,parentId:C,name:"",path:"",component:"",redirect:"",icon:"",title:"",type:P.MENU,sort:0,status:b.ENABLED,hidden:!1,keepAlive:!0}),s.value=!0},g=C=>{Object.assign(u,C),s.value=!0},k=async()=>{var C;try{await((C=f.value)==null?void 0:C.validate()),U.Message.success(u.id?"编辑成功":"新增成功"),s.value=!1,N()}catch(h){console.error(h)}},T=C=>({dashboard:"📊",system:"⚙️",user:"👤",role:"👥",menu:"📋",setting:"🔧"})[C||""]||"📄";return e.onMounted(()=>{N()}),(C,h)=>(e.openBlock(),e.createElementBlock("div",$l,[e.createVNode(e.unref(z.Card),{class:"menu-card"},{default:e.withCtx(()=>[e.createElementVNode("div",Ll,[e.createVNode(e.unref(E.Button),{type:"primary",onClick:h[0]||(h[0]=_=>m())},{default:e.withCtx(()=>[...h[14]||(h[14]=[e.createTextVNode("新增菜单",-1)])]),_:1})]),e.createElementVNode("div",Ml,[e.createElementVNode("table",Ul,[h[19]||(h[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(c.value,_=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:_.id},[e.createElementVNode("tr",zl,[e.createElementVNode("td",null,[e.createElementVNode("span",{class:"menu-name",onClick:x=>g(_)},e.toDisplayString(_.title),9,Al)]),e.createElementVNode("td",null,e.toDisplayString(T(_.icon)),1),e.createElementVNode("td",null,e.toDisplayString(_.path),1),e.createElementVNode("td",null,[e.createVNode(e.unref(z.Tag),{type:_.type===e.unref(P).DIRECTORY?"primary":_.type===e.unref(P).MENU?"success":"warning",size:"small"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(_.type===e.unref(P).DIRECTORY?"目录":_.type===e.unref(P).MENU?"菜单":"按钮"),1)]),_:2},1032,["type"])]),e.createElementVNode("td",null,e.toDisplayString(_.sort),1),e.createElementVNode("td",null,[e.createVNode(e.unref(z.Tag),{type:_.status===e.unref(b).ENABLED?"success":"danger",size:"small"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(_.status===e.unref(b).ENABLED?"启用":"禁用"),1)]),_:2},1032,["type"])]),e.createElementVNode("td",null,[e.createVNode(e.unref(E.Space),null,{default:e.withCtx(()=>[e.createVNode(e.unref(E.Button),{type:"primary",link:"",size:"small",onClick:x=>m(_.id)},{default:e.withCtx(()=>[...h[15]||(h[15]=[e.createTextVNode("新增",-1)])]),_:1},8,["onClick"]),e.createVNode(e.unref(E.Button),{type:"primary",link:"",size:"small",onClick:x=>g(_)},{default:e.withCtx(()=>[...h[16]||(h[16]=[e.createTextVNode("编辑",-1)])]),_:1},8,["onClick"])]),_:2},1024)])]),_.children?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:0},e.renderList(_.children,x=>(e.openBlock(),e.createElementBlock("tr",{key:x.id,class:"tree-row tree-row--level-1"},[e.createElementVNode("td",null,[h[17]||(h[17]=e.createElementVNode("span",{class:"tree-indent"},null,-1)),e.createElementVNode("span",{class:"menu-name",onClick:A=>g(x)},e.toDisplayString(x.title),9,Fl)]),e.createElementVNode("td",null,e.toDisplayString(T(x.icon)),1),e.createElementVNode("td",null,e.toDisplayString(x.path),1),e.createElementVNode("td",null,[e.createVNode(e.unref(z.Tag),{type:x.type===e.unref(P).DIRECTORY?"primary":x.type===e.unref(P).MENU?"success":"warning",size:"small"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(x.type===e.unref(P).DIRECTORY?"目录":x.type===e.unref(P).MENU?"菜单":"按钮"),1)]),_:2},1032,["type"])]),e.createElementVNode("td",null,e.toDisplayString(x.sort),1),e.createElementVNode("td",null,[e.createVNode(e.unref(z.Tag),{type:x.status===e.unref(b).ENABLED?"success":"danger",size:"small"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(x.status===e.unref(b).ENABLED?"启用":"禁用"),1)]),_:2},1032,["type"])]),e.createElementVNode("td",null,[e.createVNode(e.unref(E.Space),null,{default:e.withCtx(()=>[e.createVNode(e.unref(E.Button),{type:"primary",link:"",size:"small",onClick:A=>g(x)},{default:e.withCtx(()=>[...h[18]||(h[18]=[e.createTextVNode("编辑",-1)])]),_:1},8,["onClick"])]),_:2},1024)])]))),128)):e.createCommentVNode("",!0)],64))),128))])])])]),_:1}),e.createVNode(e.unref(U.Modal),{modelValue:s.value,"onUpdate:modelValue":h[13]||(h[13]=_=>s.value=_),title:i.value,width:"600px"},{footer:e.withCtx(()=>[e.createVNode(e.unref(E.Space),null,{default:e.withCtx(()=>[e.createVNode(e.unref(E.Button),{onClick:h[12]||(h[12]=_=>s.value=!1)},{default:e.withCtx(()=>[...h[20]||(h[20]=[e.createTextVNode("取消",-1)])]),_:1}),e.createVNode(e.unref(E.Button),{type:"primary",onClick:k},{default:e.withCtx(()=>[...h[21]||(h[21]=[e.createTextVNode("确定",-1)])]),_:1})]),_:1})]),default:e.withCtx(()=>[e.createVNode(e.unref(V.Form),{ref_key:"formRef",ref:f,model:u,rules:r,"label-width":"80px"},{default:e.withCtx(()=>[e.createVNode(e.unref(V.FormItem),{label:"上级菜单"},{default:e.withCtx(()=>[e.createVNode(e.unref(V.Input),{modelValue:u.parentId,"onUpdate:modelValue":h[1]||(h[1]=_=>u.parentId=_),placeholder:"上级菜单ID",disabled:""},null,8,["modelValue"])]),_:1}),e.createVNode(e.unref(V.FormItem),{label:"菜单类型"},{default:e.withCtx(()=>[e.createVNode(e.unref(V.Select),{modelValue:u.type,"onUpdate:modelValue":h[2]||(h[2]=_=>u.type=_),options:e.unref(lt)},null,8,["modelValue","options"])]),_:1}),e.createVNode(e.unref(V.FormItem),{label:"菜单名称",prop:"name"},{default:e.withCtx(()=>[e.createVNode(e.unref(V.Input),{modelValue:u.name,"onUpdate:modelValue":h[3]||(h[3]=_=>u.name=_),placeholder:"请输入菜单名称(路由name)"},null,8,["modelValue"])]),_:1}),e.createVNode(e.unref(V.FormItem),{label:"菜单标题",prop:"title"},{default:e.withCtx(()=>[e.createVNode(e.unref(V.Input),{modelValue:u.title,"onUpdate:modelValue":h[4]||(h[4]=_=>u.title=_),placeholder:"请输入菜单标题"},null,8,["modelValue"])]),_:1}),e.createVNode(e.unref(V.FormItem),{label:"路由路径",prop:"path"},{default:e.withCtx(()=>[e.createVNode(e.unref(V.Input),{modelValue:u.path,"onUpdate:modelValue":h[5]||(h[5]=_=>u.path=_),placeholder:"请输入路由路径"},null,8,["modelValue"])]),_:1}),e.createVNode(e.unref(V.FormItem),{label:"组件路径"},{default:e.withCtx(()=>[e.createVNode(e.unref(V.Input),{modelValue:u.component,"onUpdate:modelValue":h[6]||(h[6]=_=>u.component=_),placeholder:"请输入组件路径"},null,8,["modelValue"])]),_:1}),e.createVNode(e.unref(V.FormItem),{label:"图标"},{default:e.withCtx(()=>[e.createVNode(e.unref(V.Input),{modelValue:u.icon,"onUpdate:modelValue":h[7]||(h[7]=_=>u.icon=_),placeholder:"请输入图标名称"},null,8,["modelValue"])]),_:1}),e.createVNode(e.unref(V.FormItem),{label:"排序"},{default:e.withCtx(()=>[e.createVNode(e.unref(V.InputNumber),{modelValue:u.sort,"onUpdate:modelValue":h[8]||(h[8]=_=>u.sort=_),min:0},null,8,["modelValue"])]),_:1}),e.createVNode(e.unref(V.FormItem),{label:"状态"},{default:e.withCtx(()=>[e.createVNode(e.unref(V.Switch),{modelValue:u.status,"onUpdate:modelValue":h[9]||(h[9]=_=>u.status=_),"active-value":e.unref(b).ENABLED,"inactive-value":e.unref(b).DISABLED},null,8,["modelValue","active-value","inactive-value"])]),_:1}),e.createVNode(e.unref(V.FormItem),{label:"隐藏"},{default:e.withCtx(()=>[e.createVNode(e.unref(V.Switch),{modelValue:u.hidden,"onUpdate:modelValue":h[10]||(h[10]=_=>u.hidden=_)},null,8,["modelValue"])]),_:1}),e.createVNode(e.unref(V.FormItem),{label:"缓存"},{default:e.withCtx(()=>[e.createVNode(e.unref(V.Switch),{modelValue:u.keepAlive,"onUpdate:modelValue":h[11]||(h[11]=_=>u.keepAlive=_)},null,8,["modelValue"])]),_:1})]),_:1},8,["model"])]),_:1},8,["modelValue","title"])]))}}),[["__scopeId","data-v-2a272a68"]])},Symbol.toStringTag,{value:"Module"}));a.Footer=ro,a.Forbidden=et,a.Gender=ot,a.GenderOptions=ol,a.GenderText=tl,a.Header=Ge,a.Layout=Se,a.Login=Ze,a.MenuType=P,a.MenuTypeOptions=lt,a.MenuTypeText=nl,a.NotFound=ve,a.Sidebar=He,a.Status=b,a.StatusOptions=De,a.StatusText=el,a.Tabs=no,a.appConfig=po,a.batchDeleteUsers=Qo,a.clearToken=Ce,a.createLayoutRoute=$o,a.createMenu=Oo,a.createRole=zo,a.createRouter=Lo,a.createUser=Go,a.defaultDynamicRoutes=Io,a.deleteMenu=jo,a.deleteRole=Fo,a.deleteUser=Jo,a.errorRoute=xe,a.getApiBaseUrl=mo,a.getAppId=de,a.getClientId=Qe,a.getCode=ft,a.getMenuList=Po,a.getMenuTree=nt,a.getRefreshTime=ut,a.getRefreshToken=pt,a.getRoleDetail=Uo,a.getRoleList=Mo,a.getToken=te,a.getTokenExpire=qe,a.getTokenType=Re,a.getUserDetail=Ho,a.getUserInfo=Je,a.getUserList=Wo,a.hasPermission=So,a.hasRole=bo,a.hasToken=Be,a.http=M,a.initAppConfig=co,a.isAdmin=xo,a.isTokenExpired=We,a.layoutRoute=Ie,a.local=w,a.localStorageUtil=v,a.login=Xe,a.logout=so,a.mockMenuData=tt,a.permissionDirective=ll,a.refreshToken=io,a.resetPassword=vo,a.resetRouter=Do,a.router=Te,a.session=dt,a.sessionStorageUtil=ee,a.setCode=Ye,a.setRefreshTime=Ke,a.setRefreshToken=Oe,a.setToken=Fe,a.setTokenExpire=je,a.setTokenInfo=we,a.setTokenType=Pe,a.setupRouterGuards=Yo,a.staticRoutes=be,a.updateMenu=qo,a.updateRole=Ao,a.updateRoleStatus=Ro,a.updateUser=Xo,a.updateUserStatus=Zo,a.useApp=ko,a.useAppStore=W,a.useAuth=wo,a.useAuthStore=ne,a.useForm=Co,a.useMenuStore=G,a.useTable=Bo,a.useUserStore=K,Object.defineProperty(a,Symbol.toStringTag,{value:"Module"})});
|
package/dist/style.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
.sidebar[data-v-480fc818]{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-480fc818]{justify-content:center;padding:0}.sidebar__logo[data-v-480fc818]{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-480fc818]{width:32px;height:32px}.sidebar__logo-text[data-v-480fc818]{font-size:16px;font-weight:600;color:var(--color-primary)}.sidebar__menu[data-v-480fc818]{flex:1;border-right:none;overflow-y:auto}.sidebar__menu-icon[data-v-480fc818]{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;margin-right:8px}.sidebar__menu-char[data-v-480fc818]{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;font-size:12px;font-weight:600;color:var(--color-primary);background-color:var(--color-primary-light-8);border-radius:4px}.sidebar__user[data-v-480fc818]{padding:10px;border-top:1px solid var(--color-border-lighter);display:flex;align-items:center;justify-content:space-between}.sidebar__user-info[data-v-480fc818]{display:flex;flex-direction:column;gap:2px}.sidebar__user-name[data-v-480fc818]{font-size:14px;font-weight:500}.sidebar__user-role[data-v-480fc818]{font-size:12px;color:var(--color-text-secondary)}.header[data-v-702ab2d7]{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-702ab2d7]{display:flex;align-items:center;gap:15px}.header__collapse[data-v-702ab2d7]{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-702ab2d7]:hover{color:var(--color-primary)}.header__breadcrumb[data-v-702ab2d7]{font-size:14px;color:var(--color-text-secondary)}.header__breadcrumb .breadcrumb-separator[data-v-702ab2d7]{margin:0 8px;color:var(--color-text-placeholder)}.header__breadcrumb .is-current[data-v-702ab2d7]{color:var(--color-text-primary);font-weight:500}.header__right[data-v-702ab2d7]{display:flex;align-items:center;gap:8px}.header__action[data-v-702ab2d7]{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-702ab2d7]:hover{background-color:var(--color-fill);color:var(--color-primary)}.header__user[data-v-702ab2d7]{position:relative;margin-left:8px}.header__user-trigger[data-v-702ab2d7]{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-702ab2d7]:hover{background-color:var(--color-fill)}.header__user-name[data-v-702ab2d7]{font-size:14px;color:var(--color-text-primary);max-width:100px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.header__user-arrow[data-v-702ab2d7]{font-size:10px;color:var(--color-text-secondary);transition:transform .2s}.header__user-arrow.is-active[data-v-702ab2d7]{transform:rotate(180deg)}.header__avatar[data-v-702ab2d7]{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-702ab2d7]{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-702ab2d7]{display:flex;align-items:center;gap:12px;padding:16px}.header__dropdown-avatar[data-v-702ab2d7]{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-702ab2d7]{flex:1}.header__dropdown-name[data-v-702ab2d7]{font-size:14px;font-weight:500;color:var(--color-text-primary)}.header__dropdown-role[data-v-702ab2d7]{font-size:12px;color:var(--color-text-secondary);margin-top:2px}.header__dropdown-divider[data-v-702ab2d7]{height:1px;background-color:var(--color-border-lighter)}.header__dropdown-menu[data-v-702ab2d7]{padding:8px 0}.header__dropdown-item[data-v-702ab2d7]{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-702ab2d7]:hover{background-color:var(--color-fill);color:var(--color-text-primary)}.header__dropdown-item--danger[data-v-702ab2d7]{color:var(--color-danger)}.header__dropdown-item--danger[data-v-702ab2d7]:hover{background-color:var(--color-danger-light);color:var(--color-danger)}.header__search-modal[data-v-702ab2d7]{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-702ab2d7]{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-702ab2d7]{display:flex;align-items:center;padding:16px 20px;border-bottom:1px solid var(--color-border-lighter)}.search-input-wrapper .search-icon[data-v-702ab2d7]{color:var(--color-text-secondary);margin-right:12px}.search-input-wrapper .search-input[data-v-702ab2d7]{flex:1;font-size:16px;color:var(--color-text-primary);background:transparent;border:none;outline:none}.search-input-wrapper .search-input[data-v-702ab2d7]::placeholder{color:var(--color-text-placeholder)}.search-input-wrapper .search-shortcut[data-v-702ab2d7]{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-702ab2d7]{max-height:400px;overflow-y:auto;padding:8px 0}.search-result-item[data-v-702ab2d7]{display:flex;align-items:center;gap:12px;padding:12px 20px;cursor:pointer;transition:background-color .2s}.search-result-item[data-v-702ab2d7]:hover{background-color:var(--color-fill)}.search-result-item.is-first[data-v-702ab2d7]{background-color:var(--color-primary-light-9)}.search-result-item .search-result-icon[data-v-702ab2d7]{color:var(--color-text-secondary)}.search-result-item .search-result-info[data-v-702ab2d7]{flex:1;display:flex;flex-direction:column;gap:2px}.search-result-item .search-result-title[data-v-702ab2d7]{font-size:14px;color:var(--color-text-primary)}.search-result-item .search-result-parent[data-v-702ab2d7]{font-size:12px;color:var(--color-text-secondary)}.search-empty[data-v-702ab2d7]{padding:40px 20px;text-align:center;color:var(--color-text-secondary);font-size:14px}.settings-drawer .settings-section[data-v-702ab2d7]{margin-bottom:24px}.settings-drawer .settings-title[data-v-702ab2d7]{font-size:14px;font-weight:500;color:var(--color-text-primary);margin-bottom:12px}.settings-drawer .settings-layout-options[data-v-702ab2d7]{display:flex;gap:12px}.settings-drawer .layout-option[data-v-702ab2d7]{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-702ab2d7]:hover{border-color:var(--color-primary-light-5)}.settings-drawer .layout-option.is-active[data-v-702ab2d7]{border-color:var(--color-primary);background-color:var(--color-primary-light-9)}.settings-drawer .layout-option__preview[data-v-702ab2d7]{width:48px;height:36px;border:1px solid var(--color-border-light);border-radius:2px;overflow:hidden}.settings-drawer .layout-option__label[data-v-702ab2d7]{font-size:12px;color:var(--color-text-regular)}.settings-drawer .layout-preview-sidebar[data-v-702ab2d7]{display:flex;height:100%}.settings-drawer .layout-preview-sidebar .preview-aside[data-v-702ab2d7]{width:25%;height:100%;background-color:var(--color-primary-light-7)}.settings-drawer .layout-preview-sidebar .preview-main[data-v-702ab2d7]{flex:1;display:flex;flex-direction:column}.settings-drawer .layout-preview-sidebar .preview-main .preview-header[data-v-702ab2d7]{height:20%;background-color:var(--color-border-light)}.settings-drawer .layout-preview-sidebar .preview-main .preview-content[data-v-702ab2d7]{flex:1;background-color:var(--bg-color-page)}.settings-drawer .layout-preview-top[data-v-702ab2d7]{display:flex;flex-direction:column;height:100%}.settings-drawer .layout-preview-top .preview-header-full[data-v-702ab2d7]{height:25%;background-color:var(--color-primary-light-7)}.settings-drawer .layout-preview-top .preview-content-full[data-v-702ab2d7]{flex:1;background-color:var(--bg-color-page)}.settings-drawer .layout-preview-mix[data-v-702ab2d7]{display:flex;flex-direction:column;height:100%}.settings-drawer .layout-preview-mix .preview-header-mix[data-v-702ab2d7]{height:25%;background-color:var(--color-primary-light-7);display:flex}.settings-drawer .layout-preview-mix .preview-header-mix .preview-mix-left[data-v-702ab2d7]{width:30%;background-color:var(--color-primary)}.settings-drawer .layout-preview-mix .preview-mix-body[data-v-702ab2d7]{flex:1;display:flex}.settings-drawer .layout-preview-mix .preview-mix-body .preview-mix-aside[data-v-702ab2d7]{width:25%;background-color:var(--color-primary-light-8)}.settings-drawer .layout-preview-mix .preview-mix-body .preview-mix-content[data-v-702ab2d7]{flex:1;background-color:var(--bg-color-page)}.settings-drawer .settings-color-options[data-v-702ab2d7]{display:flex;gap:12px}.settings-drawer .color-option[data-v-702ab2d7]{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-702ab2d7]:hover{transform:scale(1.1)}.settings-drawer .color-option.is-active[data-v-702ab2d7]{box-shadow:0 0 0 2px var(--bg-color),0 0 0 4px var(--color-primary)}.settings-drawer .settings-switch-list[data-v-702ab2d7]{display:flex;flex-direction:column;gap:12px}.settings-drawer .settings-switch-item[data-v-702ab2d7]{display:flex;align-items:center;justify-content:space-between}.settings-drawer .settings-switch-item span[data-v-702ab2d7]{font-size:14px;color:var(--color-text-regular)}.settings-drawer .switch-wrapper[data-v-702ab2d7]{width:44px;height:22px;display:flex;align-items:center;cursor:pointer}.settings-drawer .switch-wrapper .switch-core[data-v-702ab2d7]{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-702ab2d7]: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-702ab2d7]{background-color:var(--color-primary)}.settings-drawer .switch-wrapper.is-checked .switch-core[data-v-702ab2d7]:after{left:24px}.dropdown-enter-active[data-v-702ab2d7],.dropdown-leave-active[data-v-702ab2d7]{transition:all .2s ease}.dropdown-enter-from[data-v-702ab2d7],.dropdown-leave-to[data-v-702ab2d7]{opacity:0;transform:translateY(-10px)}.search-enter-active[data-v-702ab2d7],.search-leave-active[data-v-702ab2d7]{transition:all .2s ease}.search-enter-from[data-v-702ab2d7],.search-leave-to[data-v-702ab2d7]{opacity:0}.top-menu[data-v-8b571a75]{width:100%;height:100%;display:flex;align-items:center;padding:0 20px}.top-menu__menu[data-v-8b571a75]{flex:1;border-bottom:none;height:100%}.top-menu__menu-icon[data-v-8b571a75]{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;margin-right:8px}.top-menu__menu-char[data-v-8b571a75]{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;font-size:12px;font-weight:600;color:var(--color-primary);background-color:var(--color-primary-light-8);border-radius:4px}.layout[data-v-0cb5ef3f]{display:flex;width:100%;height:100%}.layout--sidebar[data-v-0cb5ef3f]{flex-direction:row}.layout--top[data-v-0cb5ef3f]{flex-direction:column}.layout--top .layout__aside[data-v-0cb5ef3f]{display:none}.layout--top .layout__main[data-v-0cb5ef3f]{flex:1}.layout--mix[data-v-0cb5ef3f]{flex-direction:row}.layout__aside[data-v-0cb5ef3f]{transition:width .3s;overflow:hidden;flex-shrink:0;height:100%}.layout__top-menu[data-v-0cb5ef3f]{width:100%;height:50px;background-color:var(--bg-color);border-bottom:1px solid var(--color-border-lighter)}.layout__main[data-v-0cb5ef3f]{flex:1;display:flex;flex-direction:column;overflow:hidden;height:100%}.layout__header[data-v-0cb5ef3f]{height:50px;background-color:var(--bg-color);border-bottom:1px solid var(--color-border-lighter);flex-shrink:0}.layout__content[data-v-0cb5ef3f]{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-f3e724b6]{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-f3e724b6]{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-f3e724b6]{text-align:center;margin-bottom:30px}.login__logo[data-v-f3e724b6]{width:60px;height:60px}.login__title[data-v-f3e724b6]{font-size:28px;font-weight:600;color:var(--color-primary);margin:15px 0 5px}.login__subtitle[data-v-f3e724b6]{font-size:14px;color:var(--color-text-secondary)}.login__form[data-v-f3e724b6] .x-form-item{margin-bottom:20px}.login__form[data-v-f3e724b6] .x-input__prefix{margin-right:8px}.login__submit[data-v-f3e724b6]{width:100%}.login__footer[data-v-f3e724b6]{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-480fc818]{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-480fc818]{justify-content:center;padding:0}.sidebar__logo[data-v-480fc818]{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-480fc818]{width:32px;height:32px}.sidebar__logo-text[data-v-480fc818]{font-size:16px;font-weight:600;color:var(--color-primary)}.sidebar__menu[data-v-480fc818]{flex:1;border-right:none;overflow-y:auto}.sidebar__menu-icon[data-v-480fc818]{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;margin-right:8px}.sidebar__menu-char[data-v-480fc818]{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;font-size:12px;font-weight:600;color:var(--color-primary);background-color:var(--color-primary-light-8);border-radius:4px}.sidebar__user[data-v-480fc818]{padding:10px;border-top:1px solid var(--color-border-lighter);display:flex;align-items:center;justify-content:space-between}.sidebar__user-info[data-v-480fc818]{display:flex;flex-direction:column;gap:2px}.sidebar__user-name[data-v-480fc818]{font-size:14px;font-weight:500}.sidebar__user-role[data-v-480fc818]{font-size:12px;color:var(--color-text-secondary)}.header[data-v-702ab2d7]{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-702ab2d7]{display:flex;align-items:center;gap:15px}.header__collapse[data-v-702ab2d7]{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-702ab2d7]:hover{color:var(--color-primary)}.header__breadcrumb[data-v-702ab2d7]{font-size:14px;color:var(--color-text-secondary)}.header__breadcrumb .breadcrumb-separator[data-v-702ab2d7]{margin:0 8px;color:var(--color-text-placeholder)}.header__breadcrumb .is-current[data-v-702ab2d7]{color:var(--color-text-primary);font-weight:500}.header__right[data-v-702ab2d7]{display:flex;align-items:center;gap:8px}.header__action[data-v-702ab2d7]{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-702ab2d7]:hover{background-color:var(--color-fill);color:var(--color-primary)}.header__user[data-v-702ab2d7]{position:relative;margin-left:8px}.header__user-trigger[data-v-702ab2d7]{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-702ab2d7]:hover{background-color:var(--color-fill)}.header__user-name[data-v-702ab2d7]{font-size:14px;color:var(--color-text-primary);max-width:100px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.header__user-arrow[data-v-702ab2d7]{font-size:10px;color:var(--color-text-secondary);transition:transform .2s}.header__user-arrow.is-active[data-v-702ab2d7]{transform:rotate(180deg)}.header__avatar[data-v-702ab2d7]{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-702ab2d7]{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-702ab2d7]{display:flex;align-items:center;gap:12px;padding:16px}.header__dropdown-avatar[data-v-702ab2d7]{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-702ab2d7]{flex:1}.header__dropdown-name[data-v-702ab2d7]{font-size:14px;font-weight:500;color:var(--color-text-primary)}.header__dropdown-role[data-v-702ab2d7]{font-size:12px;color:var(--color-text-secondary);margin-top:2px}.header__dropdown-divider[data-v-702ab2d7]{height:1px;background-color:var(--color-border-lighter)}.header__dropdown-menu[data-v-702ab2d7]{padding:8px 0}.header__dropdown-item[data-v-702ab2d7]{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-702ab2d7]:hover{background-color:var(--color-fill);color:var(--color-text-primary)}.header__dropdown-item--danger[data-v-702ab2d7]{color:var(--color-danger)}.header__dropdown-item--danger[data-v-702ab2d7]:hover{background-color:var(--color-danger-light);color:var(--color-danger)}.header__search-modal[data-v-702ab2d7]{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-702ab2d7]{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-702ab2d7]{display:flex;align-items:center;padding:16px 20px;border-bottom:1px solid var(--color-border-lighter)}.search-input-wrapper .search-icon[data-v-702ab2d7]{color:var(--color-text-secondary);margin-right:12px}.search-input-wrapper .search-input[data-v-702ab2d7]{flex:1;font-size:16px;color:var(--color-text-primary);background:transparent;border:none;outline:none}.search-input-wrapper .search-input[data-v-702ab2d7]::placeholder{color:var(--color-text-placeholder)}.search-input-wrapper .search-shortcut[data-v-702ab2d7]{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-702ab2d7]{max-height:400px;overflow-y:auto;padding:8px 0}.search-result-item[data-v-702ab2d7]{display:flex;align-items:center;gap:12px;padding:12px 20px;cursor:pointer;transition:background-color .2s}.search-result-item[data-v-702ab2d7]:hover{background-color:var(--color-fill)}.search-result-item.is-first[data-v-702ab2d7]{background-color:var(--color-primary-light-9)}.search-result-item .search-result-icon[data-v-702ab2d7]{color:var(--color-text-secondary)}.search-result-item .search-result-info[data-v-702ab2d7]{flex:1;display:flex;flex-direction:column;gap:2px}.search-result-item .search-result-title[data-v-702ab2d7]{font-size:14px;color:var(--color-text-primary)}.search-result-item .search-result-parent[data-v-702ab2d7]{font-size:12px;color:var(--color-text-secondary)}.search-empty[data-v-702ab2d7]{padding:40px 20px;text-align:center;color:var(--color-text-secondary);font-size:14px}.settings-drawer .settings-section[data-v-702ab2d7]{margin-bottom:24px}.settings-drawer .settings-title[data-v-702ab2d7]{font-size:14px;font-weight:500;color:var(--color-text-primary);margin-bottom:12px}.settings-drawer .settings-layout-options[data-v-702ab2d7]{display:flex;gap:12px}.settings-drawer .layout-option[data-v-702ab2d7]{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-702ab2d7]:hover{border-color:var(--color-primary-light-5)}.settings-drawer .layout-option.is-active[data-v-702ab2d7]{border-color:var(--color-primary);background-color:var(--color-primary-light-9)}.settings-drawer .layout-option__preview[data-v-702ab2d7]{width:48px;height:36px;border:1px solid var(--color-border-light);border-radius:2px;overflow:hidden}.settings-drawer .layout-option__label[data-v-702ab2d7]{font-size:12px;color:var(--color-text-regular)}.settings-drawer .layout-preview-sidebar[data-v-702ab2d7]{display:flex;height:100%}.settings-drawer .layout-preview-sidebar .preview-aside[data-v-702ab2d7]{width:25%;height:100%;background-color:var(--color-primary-light-7)}.settings-drawer .layout-preview-sidebar .preview-main[data-v-702ab2d7]{flex:1;display:flex;flex-direction:column}.settings-drawer .layout-preview-sidebar .preview-main .preview-header[data-v-702ab2d7]{height:20%;background-color:var(--color-border-light)}.settings-drawer .layout-preview-sidebar .preview-main .preview-content[data-v-702ab2d7]{flex:1;background-color:var(--bg-color-page)}.settings-drawer .layout-preview-top[data-v-702ab2d7]{display:flex;flex-direction:column;height:100%}.settings-drawer .layout-preview-top .preview-header-full[data-v-702ab2d7]{height:25%;background-color:var(--color-primary-light-7)}.settings-drawer .layout-preview-top .preview-content-full[data-v-702ab2d7]{flex:1;background-color:var(--bg-color-page)}.settings-drawer .layout-preview-mix[data-v-702ab2d7]{display:flex;flex-direction:column;height:100%}.settings-drawer .layout-preview-mix .preview-header-mix[data-v-702ab2d7]{height:25%;background-color:var(--color-primary-light-7);display:flex}.settings-drawer .layout-preview-mix .preview-header-mix .preview-mix-left[data-v-702ab2d7]{width:30%;background-color:var(--color-primary)}.settings-drawer .layout-preview-mix .preview-mix-body[data-v-702ab2d7]{flex:1;display:flex}.settings-drawer .layout-preview-mix .preview-mix-body .preview-mix-aside[data-v-702ab2d7]{width:25%;background-color:var(--color-primary-light-8)}.settings-drawer .layout-preview-mix .preview-mix-body .preview-mix-content[data-v-702ab2d7]{flex:1;background-color:var(--bg-color-page)}.settings-drawer .settings-color-options[data-v-702ab2d7]{display:flex;gap:12px}.settings-drawer .color-option[data-v-702ab2d7]{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-702ab2d7]:hover{transform:scale(1.1)}.settings-drawer .color-option.is-active[data-v-702ab2d7]{box-shadow:0 0 0 2px var(--bg-color),0 0 0 4px var(--color-primary)}.settings-drawer .settings-switch-list[data-v-702ab2d7]{display:flex;flex-direction:column;gap:12px}.settings-drawer .settings-switch-item[data-v-702ab2d7]{display:flex;align-items:center;justify-content:space-between}.settings-drawer .settings-switch-item span[data-v-702ab2d7]{font-size:14px;color:var(--color-text-regular)}.settings-drawer .switch-wrapper[data-v-702ab2d7]{width:44px;height:22px;display:flex;align-items:center;cursor:pointer}.settings-drawer .switch-wrapper .switch-core[data-v-702ab2d7]{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-702ab2d7]: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-702ab2d7]{background-color:var(--color-primary)}.settings-drawer .switch-wrapper.is-checked .switch-core[data-v-702ab2d7]:after{left:24px}.dropdown-enter-active[data-v-702ab2d7],.dropdown-leave-active[data-v-702ab2d7]{transition:all .2s ease}.dropdown-enter-from[data-v-702ab2d7],.dropdown-leave-to[data-v-702ab2d7]{opacity:0;transform:translateY(-10px)}.search-enter-active[data-v-702ab2d7],.search-leave-active[data-v-702ab2d7]{transition:all .2s ease}.search-enter-from[data-v-702ab2d7],.search-leave-to[data-v-702ab2d7]{opacity:0}.top-menu[data-v-7d6e8cc1]{width:100%;height:100%;display:flex;align-items:center;padding:0 20px}.top-menu__menu[data-v-7d6e8cc1]{flex:1;border-bottom:none;height:100%}.top-menu__menu-icon[data-v-7d6e8cc1]{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;margin-right:8px}.top-menu__menu-char[data-v-7d6e8cc1]{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;font-size:12px;font-weight:600;color:var(--color-primary);background-color:var(--color-primary-light-8);border-radius:4px}.top-menu__actions[data-v-7d6e8cc1]{display:flex;align-items:center;gap:8px}.top-menu__action[data-v-7d6e8cc1]{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}.top-menu__action[data-v-7d6e8cc1]:hover{background-color:var(--color-fill);color:var(--color-primary)}.top-menu__user[data-v-7d6e8cc1]{position:relative;margin-left:8px}.top-menu__user-trigger[data-v-7d6e8cc1]{display:flex;align-items:center;gap:8px;cursor:pointer;padding:4px 8px;border-radius:var(--border-radius-base);transition:background-color .2s}.top-menu__user-trigger[data-v-7d6e8cc1]:hover{background-color:var(--color-fill)}.top-menu__user-name[data-v-7d6e8cc1]{font-size:14px;color:var(--color-text-primary);max-width:100px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.top-menu__user-arrow[data-v-7d6e8cc1]{font-size:10px;color:var(--color-text-secondary);transition:transform .2s}.top-menu__user-arrow.is-active[data-v-7d6e8cc1]{transform:rotate(180deg)}.top-menu__avatar[data-v-7d6e8cc1]{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}.top-menu__dropdown[data-v-7d6e8cc1]{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}.top-menu__dropdown-header[data-v-7d6e8cc1]{display:flex;align-items:center;gap:12px;padding:16px}.top-menu__dropdown-avatar[data-v-7d6e8cc1]{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}.top-menu__dropdown-info[data-v-7d6e8cc1]{flex:1}.top-menu__dropdown-name[data-v-7d6e8cc1]{font-size:14px;font-weight:500;color:var(--color-text-primary)}.top-menu__dropdown-role[data-v-7d6e8cc1]{font-size:12px;color:var(--color-text-secondary);margin-top:2px}.top-menu__dropdown-divider[data-v-7d6e8cc1]{height:1px;background-color:var(--color-border-lighter)}.top-menu__dropdown-menu[data-v-7d6e8cc1]{padding:8px 0}.top-menu__dropdown-item[data-v-7d6e8cc1]{display:flex;align-items:center;gap:10px;padding:10px 16px;cursor:pointer;font-size:14px;color:var(--color-text-regular);transition:all .2s}.top-menu__dropdown-item[data-v-7d6e8cc1]:hover{background-color:var(--color-fill);color:var(--color-text-primary)}.top-menu__dropdown-item--danger[data-v-7d6e8cc1]{color:var(--color-danger)}.top-menu__dropdown-item--danger[data-v-7d6e8cc1]:hover{background-color:var(--color-danger-light);color:var(--color-danger)}.settings-drawer .settings-section[data-v-7d6e8cc1]{margin-bottom:24px}.settings-drawer .settings-title[data-v-7d6e8cc1]{font-size:14px;font-weight:500;color:var(--color-text-primary);margin-bottom:12px}.settings-drawer .settings-layout-options[data-v-7d6e8cc1]{display:flex;gap:12px}.settings-drawer .layout-option[data-v-7d6e8cc1]{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-7d6e8cc1]:hover{border-color:var(--color-primary-light-5)}.settings-drawer .layout-option.is-active[data-v-7d6e8cc1]{border-color:var(--color-primary);background-color:var(--color-primary-light-9)}.settings-drawer .layout-option__preview[data-v-7d6e8cc1]{width:48px;height:36px;border:1px solid var(--color-border-light);border-radius:2px;overflow:hidden}.settings-drawer .layout-option__label[data-v-7d6e8cc1]{font-size:12px;color:var(--color-text-regular)}.settings-drawer .layout-preview-sidebar[data-v-7d6e8cc1]{display:flex;height:100%}.settings-drawer .layout-preview-sidebar .preview-aside[data-v-7d6e8cc1]{width:25%;height:100%;background-color:var(--color-primary-light-7)}.settings-drawer .layout-preview-sidebar .preview-main[data-v-7d6e8cc1]{flex:1;display:flex;flex-direction:column}.settings-drawer .layout-preview-sidebar .preview-main .preview-header[data-v-7d6e8cc1]{height:20%;background-color:var(--color-border-light)}.settings-drawer .layout-preview-sidebar .preview-main .preview-content[data-v-7d6e8cc1]{flex:1;background-color:var(--bg-color-page)}.settings-drawer .layout-preview-top[data-v-7d6e8cc1]{display:flex;flex-direction:column;height:100%}.settings-drawer .layout-preview-top .preview-header-full[data-v-7d6e8cc1]{height:25%;background-color:var(--color-primary-light-7)}.settings-drawer .layout-preview-top .preview-content-full[data-v-7d6e8cc1]{flex:1;background-color:var(--bg-color-page)}.settings-drawer .layout-preview-mix[data-v-7d6e8cc1]{display:flex;flex-direction:column;height:100%}.settings-drawer .layout-preview-mix .preview-header-mix[data-v-7d6e8cc1]{height:25%;background-color:var(--color-primary-light-7);display:flex}.settings-drawer .layout-preview-mix .preview-header-mix .preview-mix-left[data-v-7d6e8cc1]{width:30%;background-color:var(--color-primary)}.settings-drawer .layout-preview-mix .preview-mix-body[data-v-7d6e8cc1]{flex:1;display:flex}.settings-drawer .layout-preview-mix .preview-mix-body .preview-mix-aside[data-v-7d6e8cc1]{width:25%;background-color:var(--color-primary-light-8)}.settings-drawer .layout-preview-mix .preview-mix-body .preview-mix-content[data-v-7d6e8cc1]{flex:1;background-color:var(--bg-color-page)}.settings-drawer .settings-color-options[data-v-7d6e8cc1]{display:flex;gap:12px}.settings-drawer .color-option[data-v-7d6e8cc1]{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-7d6e8cc1]:hover{transform:scale(1.1)}.settings-drawer .color-option.is-active[data-v-7d6e8cc1]{box-shadow:0 0 0 2px var(--bg-color),0 0 0 4px var(--color-primary)}.settings-drawer .settings-switch-list[data-v-7d6e8cc1]{display:flex;flex-direction:column;gap:12px}.settings-drawer .settings-switch-item[data-v-7d6e8cc1]{display:flex;align-items:center;justify-content:space-between}.settings-drawer .settings-switch-item span[data-v-7d6e8cc1]{font-size:14px;color:var(--color-text-regular)}.settings-drawer .switch-wrapper[data-v-7d6e8cc1]{width:44px;height:22px;display:flex;align-items:center;cursor:pointer}.settings-drawer .switch-wrapper .switch-core[data-v-7d6e8cc1]{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-7d6e8cc1]: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-7d6e8cc1]{background-color:var(--color-primary)}.settings-drawer .switch-wrapper.is-checked .switch-core[data-v-7d6e8cc1]:after{left:24px}.dropdown-enter-active[data-v-7d6e8cc1],.dropdown-leave-active[data-v-7d6e8cc1]{transition:all .2s ease}.dropdown-enter-from[data-v-7d6e8cc1],.dropdown-leave-to[data-v-7d6e8cc1]{opacity:0;transform:translateY(-10px)}.layout[data-v-cac35527]{display:flex;width:100%;height:100%}.layout--sidebar[data-v-cac35527]{flex-direction:row}.layout--top[data-v-cac35527]{flex-direction:column}.layout--top .layout__aside[data-v-cac35527]{display:none}.layout--top .layout__main[data-v-cac35527]{flex:1}.layout--mix[data-v-cac35527]{flex-direction:row}.layout__aside[data-v-cac35527]{transition:width .3s;overflow:hidden;flex-shrink:0;height:100%}.layout__top-menu[data-v-cac35527]{width:100%;height:50px;background-color:var(--bg-color);border-bottom:1px solid var(--color-border-lighter)}.layout__main[data-v-cac35527]{flex:1;display:flex;flex-direction:column;overflow:hidden;height:100%}.layout__header[data-v-cac35527]{height:50px;background-color:var(--bg-color);border-bottom:1px solid var(--color-border-lighter);flex-shrink:0}.layout__content[data-v-cac35527]{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-f3e724b6]{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-f3e724b6]{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-f3e724b6]{text-align:center;margin-bottom:30px}.login__logo[data-v-f3e724b6]{width:60px;height:60px}.login__title[data-v-f3e724b6]{font-size:28px;font-weight:600;color:var(--color-primary);margin:15px 0 5px}.login__subtitle[data-v-f3e724b6]{font-size:14px;color:var(--color-text-secondary)}.login__form[data-v-f3e724b6] .x-form-item{margin-bottom:20px}.login__form[data-v-f3e724b6] .x-input__prefix{margin-right:8px}.login__submit[data-v-f3e724b6]{width:100%}.login__footer[data-v-f3e724b6]{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}
|