xto-fronted 0.1.1 → 0.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{403-MQkNUulz.js → 403-DM5wfQkM.js} +6 -6
- package/dist/{404-BOFYLq4X.js → 404-BurAu5LC.js} +7 -7
- package/dist/api/auth.d.ts +9 -8
- package/dist/api/menu.d.ts +3 -0
- package/dist/api/user.d.ts +2 -12
- package/dist/composables/index.d.ts +8 -0
- package/dist/composables/useApp.d.ts +64 -0
- package/dist/composables/useAuth.d.ts +19 -4
- package/dist/composables/useMenu.d.ts +34 -0
- package/dist/config/index.d.ts +11 -0
- package/dist/index-BNiEld34.js +15 -0
- package/dist/index-Be9RiEfo.js +98 -0
- package/dist/index-BqRv1bdN.js +1185 -0
- package/dist/index-CQLVXvNJ.js +15 -0
- package/dist/index-CyiE8n2V.js +15 -0
- package/dist/index-xauR1bOL.js +15 -0
- package/dist/index.d.ts +7 -4
- package/dist/index.es.js +50 -66
- package/dist/index.umd.js +1 -1
- package/dist/stores/auth.d.ts +60 -23
- package/dist/stores/menu.d.ts +40 -29
- package/dist/stores/user.d.ts +63 -84
- package/dist/style.css +1 -1
- package/dist/utils/auth.d.ts +15 -7
- package/dist/utils/permission.d.ts +1 -6
- package/dist/views/system/menu/index.vue.d.ts +1 -3
- package/dist/views/system/role/index.vue.d.ts +1 -3
- package/dist/views/system/user/index.vue.d.ts +1 -3
- package/package.json +21 -26
- package/.env.development +0 -4
- package/.env.production +0 -4
- package/dist/index-BJxYdNPy.js +0 -475
- package/dist/index-BvnIIBR1.js +0 -142
- package/dist/index-CEvAq6KE.js +0 -372
- package/dist/index-DPkqej__.js +0 -345
- package/dist/index-pq9Z5K62.js +0 -184
- package/dist/index-vVfjShJR.js +0 -1183
- package/index.html +0 -13
- package/public/vite.svg +0 -10
- package/src/App.vue +0 -20
- package/src/api/auth.ts +0 -26
- package/src/api/system.ts +0 -65
- package/src/api/user.ts +0 -46
- package/src/assets/styles/_dark.scss +0 -407
- package/src/assets/styles/_reset.scss +0 -126
- package/src/assets/styles/_root.scss +0 -140
- package/src/assets/styles/_transition.scss +0 -119
- package/src/assets/styles/_variables.scss +0 -45
- package/src/assets/styles/index.scss +0 -187
- package/src/components/Layout/Footer.vue +0 -17
- package/src/components/Layout/Header.vue +0 -390
- package/src/components/Layout/Sidebar.vue +0 -297
- package/src/components/Layout/Tabs.vue +0 -134
- package/src/components/Layout/index.vue +0 -62
- package/src/composables/useAuth.ts +0 -45
- package/src/composables/useForm.ts +0 -79
- package/src/composables/useTable.ts +0 -97
- package/src/directives/permission.ts +0 -38
- package/src/enums/index.ts +0 -63
- package/src/env.d.ts +0 -17
- package/src/index.ts +0 -39
- package/src/main.ts +0 -34
- package/src/router/dynamicRoutes.ts +0 -163
- package/src/router/index.ts +0 -81
- package/src/router/staticRoutes.ts +0 -43
- package/src/stores/app.ts +0 -145
- package/src/stores/auth.ts +0 -32
- package/src/stores/index.ts +0 -15
- package/src/stores/menu.ts +0 -80
- package/src/stores/user.ts +0 -73
- package/src/types/api.d.ts +0 -84
- package/src/types/global.d.ts +0 -45
- package/src/types/router.d.ts +0 -48
- package/src/types/xto.d.ts +0 -149
- package/src/utils/auth.ts +0 -62
- package/src/utils/permission.ts +0 -42
- package/src/utils/request.ts +0 -126
- package/src/utils/storage.ts +0 -63
- package/src/views/dashboard/index.vue +0 -284
- package/src/views/error/403.vue +0 -57
- package/src/views/error/404.vue +0 -57
- package/src/views/login/index.vue +0 -248
- package/src/views/system/menu/index.vue +0 -381
- package/src/views/system/role/index.vue +0 -304
- package/src/views/system/user/index.vue +0 -327
- package/tsconfig.json +0 -26
- package/tsconfig.node.json +0 -11
- package/vite.config.ts +0 -139
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { openBlock as a, createElementBlock as r, createElementVNode as e } from "vue";
|
|
2
|
+
import { a as t } from "./index-BqRv1bdN.js";
|
|
3
|
+
const s = {}, d = { class: "dashboard" };
|
|
4
|
+
function n(c, o) {
|
|
5
|
+
return a(), r("div", d, [...o[0] || (o[0] = [
|
|
6
|
+
e("div", { class: "dashboard__placeholder" }, [
|
|
7
|
+
e("h2", null, "首页"),
|
|
8
|
+
e("p", null, "功能开发中...")
|
|
9
|
+
], -1)
|
|
10
|
+
])]);
|
|
11
|
+
}
|
|
12
|
+
const i = /* @__PURE__ */ t(s, [["render", n], ["__scopeId", "data-v-a57037a8"]]);
|
|
13
|
+
export {
|
|
14
|
+
i as default
|
|
15
|
+
};
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { openBlock as t, createElementBlock as c, createElementVNode as e } from "vue";
|
|
2
|
+
import { a as n } from "./index-BqRv1bdN.js";
|
|
3
|
+
const r = {}, s = { class: "page" };
|
|
4
|
+
function a(l, o) {
|
|
5
|
+
return t(), c("div", s, [...o[0] || (o[0] = [
|
|
6
|
+
e("div", { class: "page__placeholder" }, [
|
|
7
|
+
e("h2", null, "菜单管理"),
|
|
8
|
+
e("p", null, "功能开发中...")
|
|
9
|
+
], -1)
|
|
10
|
+
])]);
|
|
11
|
+
}
|
|
12
|
+
const p = /* @__PURE__ */ n(r, [["render", a], ["__scopeId", "data-v-7bc14131"]]);
|
|
13
|
+
export {
|
|
14
|
+
p as default
|
|
15
|
+
};
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { openBlock as t, createElementBlock as c, createElementVNode as e } from "vue";
|
|
2
|
+
import { a as n } from "./index-BqRv1bdN.js";
|
|
3
|
+
const r = {}, s = { class: "page" };
|
|
4
|
+
function a(l, o) {
|
|
5
|
+
return t(), c("div", s, [...o[0] || (o[0] = [
|
|
6
|
+
e("div", { class: "page__placeholder" }, [
|
|
7
|
+
e("h2", null, "用户管理"),
|
|
8
|
+
e("p", null, "功能开发中...")
|
|
9
|
+
], -1)
|
|
10
|
+
])]);
|
|
11
|
+
}
|
|
12
|
+
const p = /* @__PURE__ */ n(r, [["render", a], ["__scopeId", "data-v-715bfcf7"]]);
|
|
13
|
+
export {
|
|
14
|
+
p as default
|
|
15
|
+
};
|
package/dist/index.d.ts
CHANGED
|
@@ -3,9 +3,11 @@ export { default as Header } from './components/Layout/Header.vue';
|
|
|
3
3
|
export { default as Sidebar } from './components/Layout/Sidebar.vue';
|
|
4
4
|
export { default as Tabs } from './components/Layout/Tabs.vue';
|
|
5
5
|
export { default as Footer } from './components/Layout/Footer.vue';
|
|
6
|
-
export
|
|
7
|
-
export
|
|
8
|
-
export
|
|
6
|
+
export { useApp } from './composables/useApp';
|
|
7
|
+
export { useAuth } from './composables/useAuth';
|
|
8
|
+
export { useMenu } from './composables/useMenu';
|
|
9
|
+
export { useForm } from './composables/useForm';
|
|
10
|
+
export { useTable } from './composables/useTable';
|
|
9
11
|
export * from './utils/auth';
|
|
10
12
|
export * from './utils/permission';
|
|
11
13
|
export * from './utils/request';
|
|
@@ -18,7 +20,8 @@ export { default as router, resetRouter } from './router';
|
|
|
18
20
|
export * from './router/staticRoutes';
|
|
19
21
|
export * from './router/dynamicRoutes';
|
|
20
22
|
export * from './api/auth';
|
|
21
|
-
export * from './api/
|
|
23
|
+
export * from './api/menu';
|
|
22
24
|
export * from './api/user';
|
|
25
|
+
export { default as appConfig } from './config';
|
|
23
26
|
export * from './enums';
|
|
24
27
|
export { default as permissionDirective } from './directives/permission';
|
package/dist/index.es.js
CHANGED
|
@@ -1,73 +1,57 @@
|
|
|
1
|
-
import { F as a, G as t,
|
|
1
|
+
import { F as a, G as t, b as o, c as r, H as n, i as u, M as i, d as p, e as g, S as l, f as T, g as S, h as d, T as c, j as f, k as y, l as U, m, n as M, o as h, p as k, q as A, r as I, s as R, t as x, v as C, w as b, x as D, y as G, z as L, A as O, B as F, C as v, D as B, E as H, I as P, J as j, K as q, L as w, N as z, O as E, P as J, Q as K, R as N, U as Q, u as V, V as W, W as X, X as Y, Y as Z, Z as $, $ as _, a0 as ss, a1 as es } from "./index-BqRv1bdN.js";
|
|
2
2
|
export {
|
|
3
3
|
a as Footer,
|
|
4
4
|
t as Gender,
|
|
5
5
|
o as GenderOptions,
|
|
6
6
|
r as GenderText,
|
|
7
|
-
|
|
8
|
-
|
|
7
|
+
n as Header,
|
|
8
|
+
u as Layout,
|
|
9
9
|
i as MenuType,
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
M as
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
G as
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
j as
|
|
40
|
-
q as
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
J as
|
|
45
|
-
K as
|
|
46
|
-
N as
|
|
47
|
-
Q as
|
|
48
|
-
V as
|
|
49
|
-
W as
|
|
50
|
-
X as
|
|
51
|
-
Y as
|
|
52
|
-
Z as
|
|
53
|
-
$ as
|
|
54
|
-
_ as
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
ae as setToken,
|
|
58
|
-
te as setTokenExpire,
|
|
59
|
-
oe as setTokenInfo,
|
|
60
|
-
re as staticRoutes,
|
|
61
|
-
ue as updateMenu,
|
|
62
|
-
ne as updateRole,
|
|
63
|
-
ie as updateRoleStatus,
|
|
64
|
-
le as updateUser,
|
|
65
|
-
Te as updateUserStatus,
|
|
66
|
-
pe as useAppStore,
|
|
67
|
-
de as useAuth,
|
|
68
|
-
ge as useAuthStore,
|
|
69
|
-
Re as useForm,
|
|
70
|
-
ke as useMenuStore,
|
|
71
|
-
Se as useTable,
|
|
72
|
-
ce as useUserStore
|
|
10
|
+
p as MenuTypeOptions,
|
|
11
|
+
g as MenuTypeText,
|
|
12
|
+
l as Sidebar,
|
|
13
|
+
T as Status,
|
|
14
|
+
S as StatusOptions,
|
|
15
|
+
d as StatusText,
|
|
16
|
+
c as Tabs,
|
|
17
|
+
f as appConfig,
|
|
18
|
+
y as clearToken,
|
|
19
|
+
U as clearUserInfo,
|
|
20
|
+
m as defaultDynamicRoutes,
|
|
21
|
+
M as errorRoute,
|
|
22
|
+
h as getCode,
|
|
23
|
+
k as getCurrentUser,
|
|
24
|
+
A as getLoginInfo,
|
|
25
|
+
I as getToken,
|
|
26
|
+
R as getTokenType,
|
|
27
|
+
x as getUserInfo,
|
|
28
|
+
C as getUserMenu,
|
|
29
|
+
b as hasPermission,
|
|
30
|
+
D as hasToken,
|
|
31
|
+
G as http,
|
|
32
|
+
L as isAdmin,
|
|
33
|
+
O as layoutRoute,
|
|
34
|
+
F as local,
|
|
35
|
+
v as localStorageUtil,
|
|
36
|
+
B as login,
|
|
37
|
+
H as loginByCode,
|
|
38
|
+
P as logout,
|
|
39
|
+
j as mockMenuData,
|
|
40
|
+
q as permissionDirective,
|
|
41
|
+
w as resetRouter,
|
|
42
|
+
z as router,
|
|
43
|
+
E as session,
|
|
44
|
+
J as sessionStorageUtil,
|
|
45
|
+
K as setLoginInfo,
|
|
46
|
+
N as setUserInfo,
|
|
47
|
+
Q as staticRoutes,
|
|
48
|
+
V as useApp,
|
|
49
|
+
W as useAppStore,
|
|
50
|
+
X as useAuth,
|
|
51
|
+
Y as useAuthStore,
|
|
52
|
+
Z as useForm,
|
|
53
|
+
$ as useMenu,
|
|
54
|
+
_ as useMenuStore,
|
|
55
|
+
ss as useTable,
|
|
56
|
+
es as useUserStore
|
|
73
57
|
};
|
package/dist/index.umd.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(i,e){typeof exports=="object"&&typeof module<"u"?e(exports,require("vue"),require("vue-router"),require("@xto/navigation"),require("@xto/base"),require("@xto/form"),require("axios"),require("@xto/feedback"),require("pinia"),require("@xto/data")):typeof define=="function"&&define.amd?define(["exports","vue","vue-router","@xto/navigation","@xto/base","@xto/form","axios","@xto/feedback","pinia","@xto/data"],e):(i=typeof globalThis<"u"?globalThis:i||self,e(i.XtoFronted={},i.Vue,i.VueRouter,i.navigation,i.base,i.form,i.axios,i.feedback,i.Pinia,i.data))})(this,function(i,e,I,F,w,f,xe,T,Y,D){"use strict";const z="xto_",re=t=>({get(r){const l=t.getItem(z+r);if(!l)return null;try{return JSON.parse(l)}catch{return l}},set(r,l){if(l==null){t.removeItem(z+r);return}const c=typeof l=="string"?l:JSON.stringify(l);t.setItem(z+r,c)},remove(r){t.removeItem(z+r)},clear(){Object.keys(t).forEach(l=>{l.startsWith(z)&&t.removeItem(l)})}}),P=re(window.localStorage),O=re(window.sessionStorage),y={get:P.get,set:P.set,remove:P.remove,clear:P.clear},Se={get:O.get,set:O.set,remove:O.remove,clear:O.clear},j=Y.defineStore("app",()=>{const t=e.ref(y.get("isDark")||!1),r=e.ref(y.get("theme")||"light"),l=e.ref(y.get("layout")||"sidebar"),c=e.ref(y.get("isCollapsed")||!1),m=e.ref(y.get("showTabs")??!0),p=e.ref(y.get("showFooter")??!0),a=e.ref(y.get("showBreadcrumb")??!0),n=e.ref(y.get("primaryColor")||"#409eff"),u=e.ref([]),g=e.computed(()=>t.value?"dark":"light"),N=()=>{t.value=!t.value,r.value=t.value?"dark":"light",h()},B=s=>{r.value=s,t.value=s==="dark",h()},h=()=>{const s=document.documentElement;t.value?s.classList.add("dark"):s.classList.remove("dark"),y.set("isDark",t.value),y.set("theme",r.value)},E=()=>{c.value=!c.value,y.set("isCollapsed",c.value)},x=s=>{l.value=s,y.set("layout",s)},V=()=>{m.value=!m.value,y.set("showTabs",m.value)},_=()=>{p.value=!p.value,y.set("showFooter",p.value)},S=()=>{a.value=!a.value,y.set("showBreadcrumb",a.value)},U=s=>{n.value=s,document.documentElement.style.setProperty("--color-primary",s),y.set("primaryColor",s)},A=s=>{u.value.includes(s)||u.value.push(s)},k=s=>{const M=u.value.indexOf(s);M>-1&&u.value.splice(M,1)},d=()=>{u.value=[]},o=()=>{h(),n.value!=="#409eff"&&document.documentElement.style.setProperty("--color-primary",n.value)};return e.watch(t,h),{isDark:t,theme:r,layout:l,isCollapsed:c,showTabs:m,showFooter:p,showBreadcrumb:a,primaryColor:n,cachedViews:u,themeClass:g,toggleTheme:N,toggleCollapse:E,setTheme:B,setLayout:x,toggleTabs:V,toggleFooter:_,toggleBreadcrumb:S,setPrimaryColor:U,addCachedView:A,removeCachedView:k,clearCachedViews:d,initTheme:o}}),ae="/vite.svg",Be=(t,r,l)=>{const c=t[r];return c?typeof c=="function"?c():Promise.resolve(c):new Promise((m,p)=>{(typeof queueMicrotask=="function"?queueMicrotask:setTimeout)(p.bind(null,new Error("Unknown variable dynamic import: "+r+(r.split("/").length!==l?". Note that variables only represent file names one level deep.":""))))})},G=[{path:"/login",name:"Login",component:()=>Promise.resolve().then(()=>cn),meta:{title:"登录",hidden:!0}},{path:"/404",name:"NotFound",component:()=>Promise.resolve().then(()=>un),meta:{title:"404",hidden:!0}},{path:"/403",name:"Forbidden",component:()=>Promise.resolve().then(()=>Vn),meta:{title:"403",hidden:!0}}],Q={path:"/:pathMatch(.*)*",redirect:"/404",meta:{hidden:!0}},Z={path:"/",name:"Layout",component:()=>Promise.resolve().then(()=>gt),redirect:"/dashboard",children:[{path:"/dashboard",name:"Dashboard",component:()=>Promise.resolve().then(()=>ye),meta:{title:"仪表盘",icon:"dashboard",keepAlive:!0,affix:!0}},{path:"/system/user",name:"SystemUser",component:()=>Promise.resolve().then(()=>Ee),meta:{title:"用户管理",icon:"user",keepAlive:!0}},{path:"/system/role",name:"SystemRole",component:()=>Promise.resolve().then(()=>ke),meta:{title:"角色管理",icon:"role",keepAlive:!0}},{path:"/system/menu",name:"SystemMenu",component:()=>Promise.resolve().then(()=>Ce),meta:{title:"菜单管理",icon:"menu",keepAlive:!0}}]},be=[{path:"/dashboard",name:"Dashboard",component:()=>Promise.resolve().then(()=>ye),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(()=>Ee),meta:{title:"用户管理",icon:"user",keepAlive:!0}},{path:"role",name:"SystemRole",component:()=>Promise.resolve().then(()=>ke),meta:{title:"角色管理",icon:"role",keepAlive:!0}},{path:"menu",name:"SystemMenu",component:()=>Promise.resolve().then(()=>Ce),meta:{title:"菜单管理",icon:"menu",keepAlive:!0}}]}],se=[{id:1,name:"Dashboard",path:"/dashboard",component:"dashboard/index",icon:"dashboard",title:"仪表盘",keepAlive:!0,affix:!0},{id:2,name:"System",path:"/system",redirect:"/system/user",icon:"setting",title:"系统管理",children:[{id:21,name:"SystemUser",path:"/system/user",component:"system/user/index",icon:"user",title:"用户管理",keepAlive:!0},{id:22,name:"SystemRole",path:"/system/role",component:"system/role/index",icon:"role",title:"角色管理",keepAlive:!0},{id:23,name:"SystemMenu",path:"/system/menu",component:"system/menu/index",icon:"menu",title:"菜单管理",keepAlive:!0}]}],v="token",ee="refresh_token",te="token_expire",W=()=>y.get(v),ie=t=>{y.set(v,t)},De=()=>y.get(ee),de=t=>{y.set(ee,t)},ce=()=>y.get(te),me=t=>{y.set(te,t)},pe=t=>{ie(t.token),de(t.refreshToken),me(t.expireTime)},ne=()=>{y.remove(v),y.remove(ee),y.remove(te)},ue=()=>{const t=ce();return t?Date.now()>t:!0},oe=()=>!!W()&&!ue(),R=Y.defineStore("user",()=>{const t=e.ref(y.get("userInfo")),r=e.ref(y.get("roles")||[]),l=e.ref(y.get("permissions")||[]),c=e.computed(()=>!!t.value),m=e.computed(()=>{var h;return((h=t.value)==null?void 0:h.username)||""}),p=e.computed(()=>{var h;return((h=t.value)==null?void 0:h.nickname)||""}),a=e.computed(()=>{var h;return((h=t.value)==null?void 0:h.avatar)||""}),n=e.computed(()=>{var h;return(h=t.value)==null?void 0:h.id});return{userInfo:t,roles:r,permissions:l,isLoggedIn:c,username:m,nickname:p,avatar:a,userId:n,setUserInfo:h=>{t.value=h,r.value=h.roles||[],l.value=h.permissions||[],y.set("userInfo",h),y.set("roles",h.roles||[]),y.set("permissions",h.permissions||[])},clearUserInfo:()=>{t.value=null,r.value=[],l.value=[],y.remove("userInfo"),y.remove("roles"),y.remove("permissions")},hasPermission:h=>Array.isArray(h)?h.some(E=>l.value.includes(E)):l.value.includes(h),hasRole:h=>Array.isArray(h)?h.some(E=>r.value.includes(E)):r.value.includes(h)}}),X=I.createRouter({history:I.createWebHistory(),routes:[...G,Z,Q],scrollBehavior:()=>({left:0,top:0})}),Te=["/login","/404","/403"];X.beforeEach(async(t,r,l)=>{const c=j();if(c.initTheme(),oe())if(t.path==="/login")l({path:"/"});else{const m=R();m.isLoggedIn||(m.setUserInfo({id:1,username:"admin",nickname:"管理员",avatar:"",email:"admin@example.com",phone:"13800138000",status:1,roles:["admin"],permissions:["*"],createTime:new Date().toISOString()}),q().setMenuList(se)),t.name&&t.meta.keepAlive&&c.addCachedView(t.name),l()}else Te.includes(t.path)?l():l("/login")});function $e(){const t=I.createRouter({history:I.createWebHistory(),routes:[...G,Z,Q]});X.matcher=t.matcher}const q=Y.defineStore("menu",()=>{const t=e.ref(y.get("menuList")||[]),r=e.computed(()=>t.value.length>0),l=a=>{t.value=a,y.set("menuList",a)},c=()=>{t.value=[],y.remove("menuList")},m=a=>a.filter(n=>!n.hidden).map(n=>{const u={path:n.path,name:n.name,meta:{title:n.title,icon:n.icon,keepAlive:n.keepAlive,hidden:n.hidden}};return n.redirect&&(u.redirect=n.redirect),n.component&&(u.component=()=>Be(Object.assign({}),`../views/${n.component}.vue`,3)),n.children&&n.children.length>0&&(u.children=m(n.children)),u});return{menuList:t,hasMenu:r,setMenuList:l,clearMenu:c,generateRoutes:m,addRoutes:a=>{m(a).forEach(u=>{X.addRoute("Layout",u)})}}}),J=Y.defineStore("auth",()=>{const t=e.ref(W()),r=e.computed(()=>oe());return{token:t,isLoggedIn:r,login:m=>{t.value=m.token,pe(m)},logout:()=>{t.value=null,ne()}}}),Ie={class:"sidebar"},Le={class:"sidebar__logo"},Ae={class:"sidebar__logo-text"},Me={key:0,class:"sidebar__search"},Ue={key:0,class:"sidebar__search-results"},Re=["onClick"],Fe={class:"menu-icon"},ze={class:"sidebar__search-item-info"},Pe={class:"sidebar__search-item-title"},Oe={key:0,class:"sidebar__search-item-parent"},je={class:"menu-icon"},qe={class:"menu-icon"},Ke={class:"menu-icon"},He={key:1,class:"sidebar__user"},Ye={class:"sidebar__user-info"},We={class:"sidebar__user-name"},Xe={class:"sidebar__user-role"},Je=e.defineComponent({__name:"Sidebar",setup(t){const r=I.useRoute(),l=I.useRouter(),c=q(),m=R(),p=J(),a=j(),n=e.ref(""),u=e.computed(()=>a.isCollapsed),g=e.computed(()=>r.path),N=e.computed(()=>a.isDark?"#1d1e1f":"#fff"),B=e.computed(()=>a.isDark?"#cfd3dc":"#303133"),h=e.computed(()=>"#409eff"),E=(k,d="")=>{const o=[];return k.forEach(s=>{s.children&&s.children.length>0?o.push(...E(s.children,s.title)):o.push({...s,parentTitle:d})}),o},x=e.computed(()=>n.value.trim()?E(c.menuList).filter(d=>d.title.toLowerCase().includes(n.value.toLowerCase())):[]),V=e.computed(()=>n.value.trim()?c.menuList.map(k=>{if(k.children&&k.children.length>0){const d=k.children.filter(o=>o.title.toLowerCase().includes(n.value.toLowerCase()));return d.length>0?{...k,children:d}:null}return k.title.toLowerCase().includes(n.value.toLowerCase())?k:null}).filter(Boolean):c.menuList),_=k=>{k&&k!==r.path&&(l.push(k),n.value="")},S=k=>{l.push(k),n.value=""},U=()=>{p.logout(),m.clearUserInfo(),c.clearMenu(),l.push("/login")},A=k=>({dashboard:"📊",system:"⚙️",user:"👤",role:"👥",menu:"📋",setting:"🔧"})[k||""]||"📄";return(k,d)=>(e.openBlock(),e.createElementBlock("div",Ie,[e.createElementVNode("div",Le,[d[1]||(d[1]=e.createElementVNode("img",{src:ae,alt:"Logo",class:"sidebar__logo-img"},null,-1)),e.withDirectives(e.createElementVNode("span",Ae,"Xto Demo",512),[[e.vShow,!u.value]])]),u.value?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("div",Me,[e.createVNode(e.unref(f.Input),{modelValue:n.value,"onUpdate:modelValue":d[0]||(d[0]=o=>n.value=o),placeholder:"搜索菜单...",size:"small",clearable:""},null,8,["modelValue"]),x.value.length>0?(e.openBlock(),e.createElementBlock("div",Ue,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(x.value,o=>(e.openBlock(),e.createElementBlock("div",{key:o.path,class:"sidebar__search-item",onClick:s=>S(o.path)},[e.createElementVNode("span",Fe,e.toDisplayString(A(o.icon)),1),e.createElementVNode("div",ze,[e.createElementVNode("span",Pe,e.toDisplayString(o.title),1),o.parentTitle?(e.openBlock(),e.createElementBlock("span",Oe,e.toDisplayString(o.parentTitle),1)):e.createCommentVNode("",!0)])],8,Re))),128))])):e.createCommentVNode("",!0)])),e.createVNode(e.unref(F.Menu),{"default-active":g.value,collapse:u.value,"collapse-transition":!1,"background-color":N.value,"text-color":B.value,"active-text-color":h.value,class:"sidebar__menu",onSelect:_},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(V.value,o=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:o.path},[o.children&&o.children.length>0?(e.openBlock(),e.createBlock(e.unref(F.SubMenu),{key:0,index:o.path},{title:e.withCtx(()=>[e.createElementVNode("span",je,e.toDisplayString(A(o.icon)),1),e.createElementVNode("span",null,e.toDisplayString(o.title),1)]),default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.children,s=>(e.openBlock(),e.createBlock(e.unref(F.MenuItem),{key:s.path,index:s.path},{default:e.withCtx(()=>[e.createElementVNode("span",qe,e.toDisplayString(A(s.icon)),1),e.createElementVNode("span",null,e.toDisplayString(s.title),1)]),_:2},1032,["index"]))),128))]),_:2},1032,["index"])):(e.openBlock(),e.createBlock(e.unref(F.MenuItem),{key:1,index:o.path},{default:e.withCtx(()=>[e.createElementVNode("span",Ke,e.toDisplayString(A(o.icon)),1),e.createElementVNode("span",null,e.toDisplayString(o.title),1)]),_:2},1032,["index"]))],64))),128))]),_:1},8,["default-active","collapse","background-color","text-color","active-text-color"]),u.value?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("div",He,[e.createElementVNode("div",Ye,[e.createElementVNode("span",We,e.toDisplayString(e.unref(m).nickname),1),e.createElementVNode("span",Xe,e.toDisplayString(e.unref(m).roles.join(", ")),1)]),e.createVNode(e.unref(w.Button),{type:"text",size:"small",onClick:U},{default:e.withCtx(()=>[...d[2]||(d[2]=[e.createTextVNode("退出",-1)])]),_:1})]))]))}}),L=(t,r)=>{const l=t.__vccOpts||t;for(const[c,m]of r)l[c]=m;return l},fe=L(Je,[["__scopeId","data-v-69e6558d"]]),Ge={class:"header"},Qe={class:"header__left"},Ze={key:0},ve={key:1},et={class:"header__breadcrumb"},tt={key:0},nt={class:"header__right"},ot=["title"],lt={key:0,viewBox:"0 0 24 24",width:"16",height:"16",fill:"currentColor"},rt={key:1,viewBox:"0 0 24 24",width:"16",height:"16",fill:"currentColor"},at={key:0},st={key:1},it={class:"header__avatar"},dt={class:"header__user-name"},ct={key:0,class:"header__dropdown"},mt={class:"header__dropdown-header"},pt={class:"header__dropdown-avatar"},ut={class:"header__dropdown-info"},ft={class:"header__dropdown-name"},ht={class:"header__dropdown-role"},he=L(e.defineComponent({__name:"Header",setup(t){const r=I.useRoute(),l=I.useRouter(),c=j(),m=R(),p=J(),a=q(),n=e.computed(()=>c.isCollapsed),u=e.ref(!1),g=e.ref(null),N=e.ref(!1),B=e.computed(()=>r.matched.filter(s=>s.meta&&s.meta.title).map(s=>({title:s.meta.title,path:s.path}))),h=()=>{c.toggleCollapse()},E=()=>{c.toggleTheme()},x=()=>{document.fullscreenElement?document.exitFullscreen():document.documentElement.requestFullscreen()},V=()=>{N.value=!!document.fullscreenElement},_=()=>{u.value=!u.value},S=()=>{u.value=!1},U=()=>{S(),alert("个人信息功能开发中...")},A=()=>{S(),alert("修改密码功能开发中...")},k=()=>{S(),p.logout(),m.clearUserInfo(),a.clearMenu(),l.push("/login")},d=o=>{g.value&&!g.value.contains(o.target)&&S()};return e.onMounted(()=>{document.addEventListener("click",d),document.addEventListener("fullscreenchange",V)}),e.onUnmounted(()=>{document.removeEventListener("click",d),document.removeEventListener("fullscreenchange",V)}),(o,s)=>{var M;return e.openBlock(),e.createElementBlock("div",Ge,[e.createElementVNode("div",Qe,[e.createElementVNode("div",{class:"header__collapse",onClick:h},[n.value?(e.openBlock(),e.createElementBlock("span",Ze,"☰")):(e.openBlock(),e.createElementBlock("span",ve,"☰"))]),e.createElementVNode("div",et,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(B.value,(H,we)=>(e.openBlock(),e.createElementBlock("span",{key:H.path},[we>0?(e.openBlock(),e.createElementBlock("span",tt," / ")):e.createCommentVNode("",!0),e.createElementVNode("span",{class:e.normalizeClass({"is-current":we===B.value.length-1})},e.toDisplayString(H.title),3)]))),128))])]),e.createElementVNode("div",nt,[e.createElementVNode("div",{class:"header__action",onClick:x,title:N.value?"Exit Fullscreen":"Fullscreen"},[N.value?(e.openBlock(),e.createElementBlock("svg",lt,[...s[0]||(s[0]=[e.createElementVNode("path",{d:"M5 16h3v3h2v-5H5v2zm3-8H5v2h5V5H8v3zm6 11h2v-3h3v-2h-5v5zm2-11V5h-2v5h5V8h-3z"},null,-1)])])):(e.openBlock(),e.createElementBlock("svg",rt,[...s[1]||(s[1]=[e.createElementVNode("path",{d:"M7 14H5v5h5v-2H7v-3zm-2-4h2V7h3V5H5v5zm12 7h-3v2h5v-5h-2v3zM14 5v2h3v3h2V5h-5z"},null,-1)])]))],8,ot),e.createElementVNode("div",{class:"header__action",onClick:E,title:"切换主题"},[e.unref(c).isDark?(e.openBlock(),e.createElementBlock("span",at,"🌙")):(e.openBlock(),e.createElementBlock("span",st,"☀️"))]),e.createElementVNode("div",{class:"header__user",ref_key:"dropdownRef",ref:g},[e.createElementVNode("div",{class:"header__user-trigger",onClick:e.withModifiers(_,["stop"])},[e.createElementVNode("div",it,[e.createElementVNode("span",null,e.toDisplayString(((M=e.unref(m).nickname)==null?void 0:M.charAt(0))||"U"),1)]),e.createElementVNode("span",dt,e.toDisplayString(e.unref(m).nickname),1),e.createElementVNode("span",{class:e.normalizeClass(["header__user-arrow",{"is-active":u.value}])},"▼",2)]),e.createVNode(e.Transition,{name:"dropdown"},{default:e.withCtx(()=>{var H;return[u.value?(e.openBlock(),e.createElementBlock("div",ct,[e.createElementVNode("div",mt,[e.createElementVNode("div",pt,[e.createElementVNode("span",null,e.toDisplayString(((H=e.unref(m).nickname)==null?void 0:H.charAt(0))||"U"),1)]),e.createElementVNode("div",ut,[e.createElementVNode("div",ft,e.toDisplayString(e.unref(m).nickname),1),e.createElementVNode("div",ht,e.toDisplayString(e.unref(m).roles.join(", ")),1)])]),s[6]||(s[6]=e.createElementVNode("div",{class:"header__dropdown-divider"},null,-1)),e.createElementVNode("div",{class:"header__dropdown-menu"},[e.createElementVNode("div",{class:"header__dropdown-item",onClick:U},[...s[2]||(s[2]=[e.createElementVNode("span",{class:"header__dropdown-icon"},"👤",-1),e.createElementVNode("span",null,"个人信息",-1)])]),e.createElementVNode("div",{class:"header__dropdown-item",onClick:A},[...s[3]||(s[3]=[e.createElementVNode("span",{class:"header__dropdown-icon"},"🔐",-1),e.createElementVNode("span",null,"修改密码",-1)])]),s[5]||(s[5]=e.createElementVNode("div",{class:"header__dropdown-divider"},null,-1)),e.createElementVNode("div",{class:"header__dropdown-item header__dropdown-item--danger",onClick:k},[...s[4]||(s[4]=[e.createElementVNode("span",{class:"header__dropdown-icon"},"🚪",-1),e.createElementVNode("span",null,"退出登录",-1)])])])])):e.createCommentVNode("",!0)]}),_:1})],512)])])}}}),[["__scopeId","data-v-a8667482"]]),Vt={class:"layout"},_t={class:"layout__main"},Nt={class:"layout__content"},Ve=L(e.defineComponent({__name:"index",setup(t){const r=j(),l=e.computed(()=>r.isCollapsed?"64px":"210px");return(c,m)=>{const p=e.resolveComponent("router-view");return e.openBlock(),e.createElementBlock("div",Vt,[e.createElementVNode("aside",{class:"layout__aside",style:e.normalizeStyle({width:l.value})},[e.createVNode(fe)],4),e.createElementVNode("div",_t,[e.createVNode(he,{class:"layout__header"}),e.createElementVNode("main",Nt,[e.createVNode(p)])])])}}}),[["__scopeId","data-v-1a24e6d0"]]),gt=Object.freeze(Object.defineProperty({__proto__:null,default:Ve},Symbol.toStringTag,{value:"Module"})),yt={class:"tabs-wrapper"},Et={class:"tab-label"},kt=["onClick"],Ct=L(e.defineComponent({__name:"Tabs",setup(t){const r=I.useRoute(),l=I.useRouter(),c=e.computed(()=>{const n=[];return r.matched.forEach(u=>{var g;(g=u.meta)!=null&&g.affix&&n.push({name:u.name,title:u.meta.title,path:u.path,affix:!0})}),n}),m=e.computed(()=>r.path),p=n=>{l.push(n)},a=n=>{const u=c.value.find(g=>g.path===n);if(!(u!=null&&u.affix)&&n===m.value){const g=c.value.findIndex(B=>B.path===n),N=c.value[g-1]||c.value[g+1];N&&l.push(N.path)}};return(n,u)=>(e.openBlock(),e.createElementBlock("div",yt,[e.createVNode(e.unref(F.Tabs),{modelValue:m.value,"onUpdate:modelValue":u[0]||(u[0]=g=>m.value=g),type:"card",onTabClick:p},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(c.value,g=>(e.openBlock(),e.createBlock(e.unref(F.TabPane),{key:g.path,name:g.path,label:g.title,closable:!g.affix},{label:e.withCtx(()=>[e.createElementVNode("span",Et,[e.createTextVNode(e.toDisplayString(g.title)+" ",1),g.affix?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("span",{key:0,class:"tab-close",onClick:e.withModifiers(N=>a(g.path),["stop"])}," ✕ ",8,kt))])]),_:2},1032,["name","label","closable"]))),128))]),_:1},8,["modelValue"])]))}}),[["__scopeId","data-v-bd3be691"]]),wt={},xt={class:"footer"};function St(t,r){return e.openBlock(),e.createElementBlock("div",xt,[...r[0]||(r[0]=[e.createElementVNode("span",null,"Copyright © 2024 Xto Demo. All Rights Reserved.",-1)])])}const Bt=L(wt,[["render",St],["__scopeId","data-v-317ae311"]]);function bt(){const t=R(),r=p=>{const a=t.permissions;return a.includes("*")?!0:Array.isArray(p)?p.some(n=>a.includes(n)):a.includes(p)},l=p=>{const a=t.roles;return a.includes("admin")?!0:Array.isArray(p)?p.some(n=>a.includes(n)):a.includes(p)},c=e.computed(()=>t.roles.includes("admin")),m=e.computed(()=>t.isLoggedIn);return{hasPermission:r,hasRole:l,isAdmin:c,isLoggedIn:m}}function Dt(t,r={}){const{rules:l,onSubmit:c}=r,m=e.ref(),p=e.reactive({...t}),a=e.ref(!1),n=e.ref(!1),u=e.ref(!1),g=()=>{h(),u.value=!1,n.value=!0},N=x=>{Object.assign(p,x),u.value=!0,n.value=!0},B=()=>{n.value=!1,h()},h=()=>{var x;Object.keys(t).forEach(V=>{p[V]=t[V]}),(x=m.value)==null||x.resetFields()};return{formRef:m,formData:p,rules:l,loading:a,visible:n,isEdit:u,openAdd:g,openEdit:N,close:B,resetForm:h,handleSubmit:async()=>{var x;try{await((x=m.value)==null?void 0:x.validate()),a.value=!0,await(c==null?void 0:c(p)),B()}catch(V){console.error(V)}finally{a.value=!1}}}}function Tt(t){const{fetchData:r,defaultPageSize:l=10}=t,c=e.ref(!1),m=e.ref([]),p=e.ref(0),a=e.ref(1),n=e.ref(l),u=e.reactive({}),g=async()=>{c.value=!0;try{const _={...u,page:a.value,pageSize:n.value},S=await r(_);m.value=S.list,p.value=S.total}catch(_){console.error(_)}finally{c.value=!1}},N=()=>{a.value=1,g()},B=()=>{Object.keys(u).forEach(_=>{u[_]=void 0}),a.value=1,g()},h=_=>{a.value=_,g()},E=_=>{n.value=_,a.value=1,g()},x=()=>{g()},V=e.computed(()=>({current:a.value,pageSize:n.value,total:p.value}));return{loading:c,data:m,total:p,currentPage:a,pageSize:n,searchParams:u,pagination:V,getData:g,handleSearch:N,handleReset:B,handlePageChange:h,handleSizeChange:E,refresh:x}}function $t(t){const l=R().permissions;return Array.isArray(t)?t.some(c=>l.includes(c)):l.includes(t)}function _e(t){const l=R().roles;return Array.isArray(t)?t.some(c=>l.includes(c)):l.includes(t)}function It(){return _e("admin")}const K=(()=>{const t=xe.create({baseURL:void 0,timeout:15e3,headers:{"Content-Type":"application/json"}});return t.interceptors.request.use(r=>{const l=W();return l&&(r.headers.Authorization=`Bearer ${l}`),r},r=>Promise.reject(r)),t.interceptors.response.use(r=>{const{data:l}=r;return l.code===200||l.code===0?r:(T.Message.error(l.message||"请求失败"),Promise.reject(new Error(l.message||"请求失败")))},r=>{var c;const{response:l}=r;if(l)switch(l.status){case 401:T.Message.error("登录已过期,请重新登录"),ne(),window.location.href="/login";break;case 403:T.Message.error("没有权限访问");break;case 404:T.Message.error("请求资源不存在");break;case 500:T.Message.error("服务器错误");break;default:T.Message.error(((c=l.data)==null?void 0:c.message)||"请求失败")}else T.Message.error("网络连接失败");return Promise.reject(r)}),t})(),b={get(t,r){return K.get(t,r).then(l=>l.data)},post(t,r,l){return K.post(t,r,l).then(c=>c.data)},put(t,r,l){return K.put(t,r,l).then(c=>c.data)},patch(t,r,l){return K.patch(t,r,l).then(c=>c.data)},delete(t,r){return K.delete(t,r).then(l=>l.data)}};function Lt(t){return b.post("/auth/login",t)}function At(){return b.post("/auth/logout")}function Mt(){return b.get("/user/info")}function Ut(t){return b.post("/auth/refresh",{refreshToken:t})}function Rt(t){return b.get("/role/list",{params:t})}function Ft(t){return b.get(`/role/${t}`)}function zt(t){return b.post("/role",t)}function Pt(t,r){return b.put(`/role/${t}`,r)}function Ot(t){return b.delete(`/role/${t}`)}function jt(t,r){return b.patch(`/role/${t}/status`,{status:r})}function qt(){return b.get("/menu/list")}function Kt(){return b.get("/menu/tree")}function Ht(t){return b.post("/menu",t)}function Yt(t,r){return b.put(`/menu/${t}`,r)}function Wt(t){return b.delete(`/menu/${t}`)}function Xt(t){return b.get("/user/list",{params:t})}function Jt(t){return b.get(`/user/${t}`)}function Gt(t){return b.post("/user",t)}function Qt(t,r){return b.put(`/user/${t}`,r)}function Zt(t){return b.delete(`/user/${t}`)}function vt(t){return b.post("/user/batch-delete",{ids:t})}function en(t,r){return b.patch(`/user/${t}/status`,{status:r})}function tn(t){return b.post(`/user/${t}/reset-password`)}var C=(t=>(t[t.ENABLED=1]="ENABLED",t[t.DISABLED=0]="DISABLED",t))(C||{}),Ne=(t=>(t[t.UNKNOWN=0]="UNKNOWN",t[t.MALE=1]="MALE",t[t.FEMALE=2]="FEMALE",t))(Ne||{}),$=(t=>(t[t.DIRECTORY=0]="DIRECTORY",t[t.MENU=1]="MENU",t[t.BUTTON=2]="BUTTON",t))($||{});const nn={1:"启用",0:"禁用"},on={0:"未知",1:"男",2:"女"},ln={0:"目录",1:"菜单",2:"按钮"},le=[{label:"启用",value:1},{label:"禁用",value:0}],rn=[{label:"未知",value:0},{label:"男",value:1},{label:"女",value:2}],ge=[{label:"目录",value:0},{label:"菜单",value:1},{label:"按钮",value:2}],an={mounted(t,r){var a;const l=R(),{value:c}=r;if(!c)return;const m=l.permissions;let p=!1;Array.isArray(c)?p=c.some(n=>m.includes(n)||m.includes("*")):p=m.includes(c)||m.includes("*"),p||(a=t.parentNode)==null||a.removeChild(t)}},sn={class:"login"},dn={class:"login__container"},cn=Object.freeze(Object.defineProperty({__proto__:null,default:L(e.defineComponent({__name:"index",setup(t){const r=I.useRouter(),l=J(),c=R(),m=q(),p=e.ref(!1),a=e.ref(!1),n=e.reactive({username:"admin",password:"123456"}),u={username:[{required:!0,message:"请输入用户名",trigger:"blur"}],password:[{required:!0,message:"请输入密码",trigger:"blur"},{min:6,message:"密码长度至少6位",trigger:"blur"}]},g=e.ref(),N=async()=>{var B;try{await((B=g.value)==null?void 0:B.validate()),p.value=!0,setTimeout(()=>{l.login({token:"mock_token_"+Date.now(),refreshToken:"mock_refresh_token",expireTime:Date.now()+7*24*60*60*1e3}),c.setUserInfo({id:1,username:n.username,nickname:"管理员",avatar:"",email:"admin@example.com",phone:"13800138000",status:1,roles:["admin"],permissions:["*"],createTime:new Date().toISOString()}),m.setMenuList([{id:1,name:"Dashboard",path:"/dashboard",component:"dashboard/index",icon:"dashboard",title:"仪表盘",keepAlive:!0,affix:!0},{id:2,name:"System",path:"/system",redirect:"/system/user",icon:"setting",title:"系统管理",children:[{id:21,name:"SystemUser",path:"/system/user",component:"system/user/index",icon:"user",title:"用户管理",keepAlive:!0},{id:22,name:"SystemRole",path:"/system/role",component:"system/role/index",icon:"role",title:"角色管理",keepAlive:!0},{id:23,name:"SystemMenu",path:"/system/menu",component:"system/menu/index",icon:"menu",title:"菜单管理",keepAlive:!0}]}]),T.Message.success("登录成功"),r.push("/"),p.value=!1},1e3)}catch{p.value=!1}};return(B,h)=>(e.openBlock(),e.createElementBlock("div",sn,[e.createElementVNode("div",dn,[h[5]||(h[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(f.Form),{ref_key:"formRef",ref:g,model:n,rules:u,class:"login__form","label-width":"0"},{default:e.withCtx(()=>[e.createVNode(e.unref(f.FormItem),{prop:"username"},{default:e.withCtx(()=>[e.createVNode(e.unref(f.Input),{modelValue:n.username,"onUpdate:modelValue":h[0]||(h[0]=E=>n.username=E),placeholder:"用户名","prefix-icon":"👤",size:"large"},null,8,["modelValue"])]),_:1}),e.createVNode(e.unref(f.FormItem),{prop:"password"},{default:e.withCtx(()=>[e.createVNode(e.unref(f.Input),{modelValue:n.password,"onUpdate:modelValue":h[1]||(h[1]=E=>n.password=E),type:"password",placeholder:"密码","prefix-icon":"🔒",size:"large","show-password":"",onKeyup:e.withKeys(N,["enter"])},null,8,["modelValue"])]),_:1}),e.createVNode(e.unref(f.FormItem),null,{default:e.withCtx(()=>[e.createVNode(e.unref(f.Checkbox),{modelValue:a.value,"onUpdate:modelValue":h[2]||(h[2]=E=>a.value=E)},{default:e.withCtx(()=>[...h[3]||(h[3]=[e.createTextVNode("记住我",-1)])]),_:1},8,["modelValue"])]),_:1}),e.createVNode(e.unref(f.FormItem),null,{default:e.withCtx(()=>[e.createVNode(e.unref(w.Button),{type:"primary",size:"large",loading:p.value,class:"login__submit",onClick:N},{default:e.withCtx(()=>[...h[4]||(h[4]=[e.createTextVNode(" 登录 ",-1)])]),_:1},8,["loading"])]),_:1})]),_:1},8,["model"]),h[6]||(h[6]=e.createElementVNode("div",{class:"login__footer"},[e.createElementVNode("p",null,"提示: 任意用户名密码即可登录 (Mock 模式)")],-1))])]))}}),[["__scopeId","data-v-eb51a732"]])},Symbol.toStringTag,{value:"Module"})),mn={class:"error-page"},pn={class:"error-page__content"},un=Object.freeze(Object.defineProperty({__proto__:null,default:L(e.defineComponent({__name:"404",setup(t){const r=I.useRouter(),l=()=>{r.push("/")};return(c,m)=>(e.openBlock(),e.createElementBlock("div",mn,[e.createElementVNode("div",pn,[m[1]||(m[1]=e.createElementVNode("div",{class:"error-page__code"},"404",-1)),m[2]||(m[2]=e.createElementVNode("div",{class:"error-page__title"},"页面不存在",-1)),m[3]||(m[3]=e.createElementVNode("div",{class:"error-page__desc"},"抱歉,您访问的页面不存在或已被删除",-1)),e.createVNode(e.unref(w.Button),{type:"primary",onClick:l},{default:e.withCtx(()=>[...m[0]||(m[0]=[e.createTextVNode("返回首页",-1)])]),_:1})])]))}}),[["__scopeId","data-v-f1a1acb0"]])},Symbol.toStringTag,{value:"Module"})),fn={class:"error-page"},hn={class:"error-page__content"},Vn=Object.freeze(Object.defineProperty({__proto__:null,default:L(e.defineComponent({__name:"403",setup(t){const r=I.useRouter(),l=()=>{r.push("/")};return(c,m)=>(e.openBlock(),e.createElementBlock("div",fn,[e.createElementVNode("div",hn,[m[1]||(m[1]=e.createElementVNode("div",{class:"error-page__code"},"403",-1)),m[2]||(m[2]=e.createElementVNode("div",{class:"error-page__title"},"无访问权限",-1)),m[3]||(m[3]=e.createElementVNode("div",{class:"error-page__desc"},"抱歉,您没有权限访问此页面",-1)),e.createVNode(e.unref(w.Button),{type:"primary",onClick:l},{default:e.withCtx(()=>[...m[0]||(m[0]=[e.createTextVNode("返回首页",-1)])]),_:1})])]))}}),[["__scopeId","data-v-f6105e3d"]])},Symbol.toStringTag,{value:"Module"})),_n={class:"dashboard"},Nn={class:"dashboard__stats"},gn={class:"stat-card__content"},yn={class:"stat-card__info"},En={class:"stat-card__title"},kn={class:"dashboard__main"},Cn={class:"quick-links"},wn={class:"quick-link__icon"},xn={class:"quick-link__title"},Sn={class:"activity-list"},Bn={class:"activity-item__action"},bn={class:"activity-item__time"},Dn={class:"system-info"},Tn={class:"system-info__item"},$n={class:"system-info__item"},ye=Object.freeze(Object.defineProperty({__proto__:null,default:L(e.defineComponent({__name:"index",setup(t){const r=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"}]),c=e.ref([{title:"用户管理",path:"/system/user",icon:"👤"},{title:"角色管理",path:"/system/role",icon:"👥"},{title:"菜单管理",path:"/system/menu",icon:"📋"},{title:"系统设置",path:"/system",icon:"⚙️"}]);return(m,p)=>{const a=e.resolveComponent("router-link");return e.openBlock(),e.createElementBlock("div",_n,[e.createElementVNode("div",Nn,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(r.value,n=>(e.openBlock(),e.createBlock(e.unref(D.Card),{key:n.title,class:"stat-card"},{default:e.withCtx(()=>[e.createElementVNode("div",gn,[e.createElementVNode("div",{class:"stat-card__icon",style:e.normalizeStyle({backgroundColor:n.color+"20"})},e.toDisplayString(n.icon),5),e.createElementVNode("div",yn,[e.createElementVNode("div",En,e.toDisplayString(n.title),1),e.createElementVNode("div",{class:"stat-card__value",style:e.normalizeStyle({color:n.color})},e.toDisplayString(n.value.toLocaleString()),5)])])]),_:2},1024))),128))]),e.createElementVNode("div",kn,[e.createVNode(e.unref(D.Card),{class:"dashboard__quick"},{header:e.withCtx(()=>[...p[0]||(p[0]=[e.createElementVNode("span",{class:"card-title"},"快捷入口",-1)])]),default:e.withCtx(()=>[e.createElementVNode("div",Cn,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(c.value,n=>(e.openBlock(),e.createBlock(a,{key:n.path,to:n.path,class:"quick-link"},{default:e.withCtx(()=>[e.createElementVNode("span",wn,e.toDisplayString(n.icon),1),e.createElementVNode("span",xn,e.toDisplayString(n.title),1)]),_:2},1032,["to"]))),128))])]),_:1}),e.createVNode(e.unref(D.Card),{class:"dashboard__activity"},{header:e.withCtx(()=>[...p[1]||(p[1]=[e.createElementVNode("span",{class:"card-title"},"最近活动",-1)])]),default:e.withCtx(()=>[e.createElementVNode("div",Sn,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(l.value,(n,u)=>(e.openBlock(),e.createElementBlock("div",{key:u,class:"activity-item"},[e.createVNode(e.unref(D.Tag),{type:n.type,size:"small"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(n.user),1)]),_:2},1032,["type"]),e.createElementVNode("span",Bn,e.toDisplayString(n.action),1),e.createElementVNode("span",bn,e.toDisplayString(n.time),1)]))),128))])]),_:1})]),e.createVNode(e.unref(D.Card),{class:"dashboard__system"},{header:e.withCtx(()=>[...p[2]||(p[2]=[e.createElementVNode("span",{class:"card-title"},"系统信息",-1)])]),default:e.withCtx(()=>[e.createElementVNode("div",Dn,[p[5]||(p[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)),p[6]||(p[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)),p[7]||(p[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)),p[8]||(p[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",Tn,[p[3]||(p[3]=e.createElementVNode("span",{class:"system-info__label"},"服务器状态",-1)),e.createVNode(e.unref(D.Progress),{percentage:75,status:"success"})]),e.createElementVNode("div",$n,[p[4]||(p[4]=e.createElementVNode("span",{class:"system-info__label"},"内存使用",-1)),e.createVNode(e.unref(D.Progress),{percentage:45})])])]),_:1})])}}}),[["__scopeId","data-v-4bb1b10a"]])},Symbol.toStringTag,{value:"Module"})),In={class:"user-page"},Ln={class:"toolbar"},An={class:"data-table"},Mn={key:0},Un={key:1},Rn={class:"pagination-wrapper"},Ee=Object.freeze(Object.defineProperty({__proto__:null,default:L(e.defineComponent({__name:"index",setup(t){const r=[{id:1,username:"admin",nickname:"管理员",email:"admin@example.com",phone:"13800138001",status:C.ENABLED,roles:["admin"],createTime:"2024-01-01 10:00:00"},{id:2,username:"zhangsan",nickname:"张三",email:"zhangsan@example.com",phone:"13800138002",status:C.ENABLED,roles:["editor"],createTime:"2024-01-02 10:00:00"},{id:3,username:"lisi",nickname:"李四",email:"lisi@example.com",phone:"13800138003",status:C.DISABLED,roles:["viewer"],createTime:"2024-01-03 10:00:00"},{id:4,username:"wangwu",nickname:"王五",email:"wangwu@example.com",phone:"13800138004",status:C.ENABLED,roles:["editor"],createTime:"2024-01-04 10:00:00"},{id:5,username:"zhaoliu",nickname:"赵六",email:"zhaoliu@example.com",phone:"13800138005",status:C.ENABLED,roles:["viewer"],createTime:"2024-01-05 10:00:00"}],l=e.ref(!1),c=e.ref([]),m=e.ref(0),p=e.ref(1),a=e.ref(10),n=e.reactive({keyword:"",status:void 0}),u=e.ref(!1),g=e.computed(()=>N.id?"编辑用户":"新增用户"),N=e.reactive({id:0,username:"",nickname:"",email:"",phone:"",status:C.ENABLED,roles:[]}),B={username:[{required:!0,message:"请输入用户名",trigger:"blur"}],nickname:[{required:!0,message:"请输入昵称",trigger:"blur"}],email:[{required:!0,message:"请输入邮箱",trigger:"blur"},{type:"email",message:"请输入正确的邮箱格式",trigger:"blur"}]},h=e.ref(),E=()=>{l.value=!0,setTimeout(()=>{let d=[...r];n.keyword&&(d=d.filter(o=>o.username.includes(n.keyword)||o.nickname.includes(n.keyword))),n.status!==void 0&&(d=d.filter(o=>o.status===n.status)),m.value=d.length,c.value=d.slice((p.value-1)*a.value,p.value*a.value),l.value=!1},300)},x=()=>{p.value=1,E()},V=()=>{n.keyword="",n.status=void 0,p.value=1,E()},_=()=>{Object.assign(N,{id:0,username:"",nickname:"",email:"",phone:"",status:C.ENABLED,roles:[]}),u.value=!0},S=d=>{Object.assign(N,d),u.value=!0},U=d=>{T.Message.success("删除成功"),E()},A=async()=>{var d;try{await((d=h.value)==null?void 0:d.validate()),T.Message.success(N.id?"编辑成功":"新增成功"),u.value=!1,E()}catch(o){console.error(o)}},k=d=>{T.Message.success(`已${d.status===C.ENABLED?"启用":"禁用"}用户 ${d.username}`)};return e.onMounted(()=>{E()}),(d,o)=>(e.openBlock(),e.createElementBlock("div",In,[e.createVNode(e.unref(D.Card),{class:"search-card"},{default:e.withCtx(()=>[e.createVNode(e.unref(f.Form),{model:n,inline:""},{default:e.withCtx(()=>[e.createVNode(e.unref(f.FormItem),{label:"关键词"},{default:e.withCtx(()=>[e.createVNode(e.unref(f.Input),{modelValue:n.keyword,"onUpdate:modelValue":o[0]||(o[0]=s=>n.keyword=s),placeholder:"用户名/昵称",clearable:"",onKeyup:e.withKeys(x,["enter"])},null,8,["modelValue"])]),_:1}),e.createVNode(e.unref(f.FormItem),{label:"状态"},{default:e.withCtx(()=>[e.createVNode(e.unref(f.Select),{modelValue:n.status,"onUpdate:modelValue":o[1]||(o[1]=s=>n.status=s),options:e.unref(le),placeholder:"请选择",clearable:""},null,8,["modelValue","options"])]),_:1}),e.createVNode(e.unref(f.FormItem),null,{default:e.withCtx(()=>[e.createVNode(e.unref(w.Space),null,{default:e.withCtx(()=>[e.createVNode(e.unref(w.Button),{type:"primary",onClick:x},{default:e.withCtx(()=>[...o[11]||(o[11]=[e.createTextVNode("搜索",-1)])]),_:1}),e.createVNode(e.unref(w.Button),{onClick:V},{default:e.withCtx(()=>[...o[12]||(o[12]=[e.createTextVNode("重置",-1)])]),_:1})]),_:1})]),_:1})]),_:1},8,["model"])]),_:1}),e.createVNode(e.unref(D.Card),{class:"table-card"},{default:e.withCtx(()=>[e.createElementVNode("div",Ln,[e.createVNode(e.unref(w.Button),{type:"primary",onClick:_},{default:e.withCtx(()=>[...o[13]||(o[13]=[e.createTextVNode("新增用户",-1)])]),_:1})]),e.createElementVNode("table",An,[o[18]||(o[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",Mn,[...o[14]||(o[14]=[e.createElementVNode("td",{colspan:"9",class:"loading-cell"},"加载中...",-1)])])):c.value.length===0?(e.openBlock(),e.createElementBlock("tr",Un,[...o[15]||(o[15]=[e.createElementVNode("td",{colspan:"9",class:"empty-cell"},"暂无数据",-1)])])):(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:2},e.renderList(c.value,s=>(e.openBlock(),e.createElementBlock("tr",{key:s.id},[e.createElementVNode("td",null,e.toDisplayString(s.id),1),e.createElementVNode("td",null,e.toDisplayString(s.username),1),e.createElementVNode("td",null,e.toDisplayString(s.nickname),1),e.createElementVNode("td",null,e.toDisplayString(s.email),1),e.createElementVNode("td",null,e.toDisplayString(s.phone),1),e.createElementVNode("td",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(s.roles,M=>(e.openBlock(),e.createBlock(e.unref(D.Tag),{key:M,size:"small"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(M),1)]),_:2},1024))),128))]),e.createElementVNode("td",null,[e.createVNode(e.unref(f.Switch),{"model-value":s.status===e.unref(C).ENABLED,"onUpdate:modelValue":M=>{s.status=M?e.unref(C).ENABLED:e.unref(C).DISABLED,k(s)}},null,8,["model-value","onUpdate:modelValue"])]),e.createElementVNode("td",null,e.toDisplayString(s.createTime),1),e.createElementVNode("td",null,[e.createVNode(e.unref(w.Space),null,{default:e.withCtx(()=>[e.createVNode(e.unref(w.Button),{type:"primary",link:"",size:"small",onClick:M=>S(s)},{default:e.withCtx(()=>[...o[16]||(o[16]=[e.createTextVNode("编辑",-1)])]),_:1},8,["onClick"]),e.createVNode(e.unref(T.Popconfirm),{title:"确定删除该用户吗?",onConfirm:M=>U(s.id)},{default:e.withCtx(()=>[e.createVNode(e.unref(w.Button),{type:"danger",link:"",size:"small"},{default:e.withCtx(()=>[...o[17]||(o[17]=[e.createTextVNode("删除",-1)])]),_:1})]),_:1},8,["onConfirm"])]),_:2},1024)])]))),128))])]),e.createElementVNode("div",Rn,[e.createVNode(e.unref(D.Pagination),{"current-page":p.value,"onUpdate:currentPage":o[2]||(o[2]=s=>p.value=s),"page-size":a.value,"onUpdate:pageSize":o[3]||(o[3]=s=>a.value=s),total:m.value,"page-sizes":[10,20,50,100],layout:"total, sizes, prev, pager, next",onCurrentChange:E,onSizeChange:E},null,8,["current-page","page-size","total"])])]),_:1}),e.createVNode(e.unref(T.Modal),{modelValue:u.value,"onUpdate:modelValue":o[10]||(o[10]=s=>u.value=s),title:g.value,width:"500px"},{footer:e.withCtx(()=>[e.createVNode(e.unref(w.Space),null,{default:e.withCtx(()=>[e.createVNode(e.unref(w.Button),{onClick:o[9]||(o[9]=s=>u.value=!1)},{default:e.withCtx(()=>[...o[19]||(o[19]=[e.createTextVNode("取消",-1)])]),_:1}),e.createVNode(e.unref(w.Button),{type:"primary",onClick:A},{default:e.withCtx(()=>[...o[20]||(o[20]=[e.createTextVNode("确定",-1)])]),_:1})]),_:1})]),default:e.withCtx(()=>[e.createVNode(e.unref(f.Form),{ref_key:"formRef",ref:h,model:N,rules:B,"label-width":"80px"},{default:e.withCtx(()=>[e.createVNode(e.unref(f.FormItem),{label:"用户名",prop:"username"},{default:e.withCtx(()=>[e.createVNode(e.unref(f.Input),{modelValue:N.username,"onUpdate:modelValue":o[4]||(o[4]=s=>N.username=s),placeholder:"请输入用户名"},null,8,["modelValue"])]),_:1}),e.createVNode(e.unref(f.FormItem),{label:"昵称",prop:"nickname"},{default:e.withCtx(()=>[e.createVNode(e.unref(f.Input),{modelValue:N.nickname,"onUpdate:modelValue":o[5]||(o[5]=s=>N.nickname=s),placeholder:"请输入昵称"},null,8,["modelValue"])]),_:1}),e.createVNode(e.unref(f.FormItem),{label:"邮箱",prop:"email"},{default:e.withCtx(()=>[e.createVNode(e.unref(f.Input),{modelValue:N.email,"onUpdate:modelValue":o[6]||(o[6]=s=>N.email=s),placeholder:"请输入邮箱"},null,8,["modelValue"])]),_:1}),e.createVNode(e.unref(f.FormItem),{label:"手机号",prop:"phone"},{default:e.withCtx(()=>[e.createVNode(e.unref(f.Input),{modelValue:N.phone,"onUpdate:modelValue":o[7]||(o[7]=s=>N.phone=s),placeholder:"请输入手机号"},null,8,["modelValue"])]),_:1}),e.createVNode(e.unref(f.FormItem),{label:"状态"},{default:e.withCtx(()=>[e.createVNode(e.unref(f.Switch),{modelValue:N.status,"onUpdate:modelValue":o[8]||(o[8]=s=>N.status=s),"active-value":e.unref(C).ENABLED,"inactive-value":e.unref(C).DISABLED},null,8,["modelValue","active-value","inactive-value"])]),_:1})]),_:1},8,["model"])]),_:1},8,["modelValue","title"])]))}}),[["__scopeId","data-v-4ebcfe66"]])},Symbol.toStringTag,{value:"Module"})),Fn={class:"role-page"},zn={class:"toolbar"},Pn={class:"data-table"},On={key:0},jn={key:1},qn={class:"pagination-wrapper"},ke=Object.freeze(Object.defineProperty({__proto__:null,default:L(e.defineComponent({__name:"index",setup(t){const r=[{id:1,name:"超级管理员",code:"admin",description:"拥有所有权限",status:C.ENABLED,permissions:["*"],createTime:"2024-01-01 10:00:00"},{id:2,name:"编辑",code:"editor",description:"内容编辑权限",status:C.ENABLED,permissions:["user:read","user:write"],createTime:"2024-01-02 10:00:00"},{id:3,name:"访客",code:"viewer",description:"只读权限",status:C.ENABLED,permissions:["user:read"],createTime:"2024-01-03 10:00:00"}],l=e.ref(!1),c=e.ref([]),m=e.ref(0),p=e.ref(1),a=e.ref(10),n=e.reactive({keyword:"",status:void 0}),u=e.ref(!1),g=e.computed(()=>N.id?"编辑角色":"新增角色"),N=e.reactive({id:0,name:"",code:"",description:"",status:C.ENABLED,permissions:[]}),B={name:[{required:!0,message:"请输入角色名称",trigger:"blur"}],code:[{required:!0,message:"请输入角色编码",trigger:"blur"}]},h=e.ref(),E=()=>{l.value=!0,setTimeout(()=>{let k=[...r];n.keyword&&(k=k.filter(d=>d.name.includes(n.keyword)||d.code.includes(n.keyword))),n.status!==void 0&&(k=k.filter(d=>d.status===n.status)),m.value=k.length,c.value=k.slice((p.value-1)*a.value,p.value*a.value),l.value=!1},300)},x=()=>{p.value=1,E()},V=()=>{n.keyword="",n.status=void 0,p.value=1,E()},_=()=>{Object.assign(N,{id:0,name:"",code:"",description:"",status:C.ENABLED,permissions:[]}),u.value=!0},S=k=>{Object.assign(N,k),u.value=!0},U=k=>{T.Message.success("删除成功"),E()},A=async()=>{var k;try{await((k=h.value)==null?void 0:k.validate()),T.Message.success(N.id?"编辑成功":"新增成功"),u.value=!1,E()}catch(d){console.error(d)}};return e.onMounted(()=>{E()}),(k,d)=>(e.openBlock(),e.createElementBlock("div",Fn,[e.createVNode(e.unref(D.Card),{class:"search-card"},{default:e.withCtx(()=>[e.createVNode(e.unref(f.Form),{model:n,inline:""},{default:e.withCtx(()=>[e.createVNode(e.unref(f.FormItem),{label:"关键词"},{default:e.withCtx(()=>[e.createVNode(e.unref(f.Input),{modelValue:n.keyword,"onUpdate:modelValue":d[0]||(d[0]=o=>n.keyword=o),placeholder:"角色名称/编码",clearable:"",onKeyup:e.withKeys(x,["enter"])},null,8,["modelValue"])]),_:1}),e.createVNode(e.unref(f.FormItem),{label:"状态"},{default:e.withCtx(()=>[e.createVNode(e.unref(f.Select),{modelValue:n.status,"onUpdate:modelValue":d[1]||(d[1]=o=>n.status=o),options:e.unref(le),placeholder:"请选择",clearable:""},null,8,["modelValue","options"])]),_:1}),e.createVNode(e.unref(f.FormItem),null,{default:e.withCtx(()=>[e.createVNode(e.unref(w.Space),null,{default:e.withCtx(()=>[e.createVNode(e.unref(w.Button),{type:"primary",onClick:x},{default:e.withCtx(()=>[...d[10]||(d[10]=[e.createTextVNode("搜索",-1)])]),_:1}),e.createVNode(e.unref(w.Button),{onClick:V},{default:e.withCtx(()=>[...d[11]||(d[11]=[e.createTextVNode("重置",-1)])]),_:1})]),_:1})]),_:1})]),_:1},8,["model"])]),_:1}),e.createVNode(e.unref(D.Card),{class:"table-card"},{default:e.withCtx(()=>[e.createElementVNode("div",zn,[e.createVNode(e.unref(w.Button),{type:"primary",onClick:_},{default:e.withCtx(()=>[...d[12]||(d[12]=[e.createTextVNode("新增角色",-1)])]),_:1})]),e.createElementVNode("table",Pn,[d[17]||(d[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",On,[...d[13]||(d[13]=[e.createElementVNode("td",{colspan:"7",class:"loading-cell"},"加载中...",-1)])])):c.value.length===0?(e.openBlock(),e.createElementBlock("tr",jn,[...d[14]||(d[14]=[e.createElementVNode("td",{colspan:"7",class:"empty-cell"},"暂无数据",-1)])])):(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:2},e.renderList(c.value,o=>(e.openBlock(),e.createElementBlock("tr",{key:o.id},[e.createElementVNode("td",null,e.toDisplayString(o.id),1),e.createElementVNode("td",null,e.toDisplayString(o.name),1),e.createElementVNode("td",null,[e.createVNode(e.unref(D.Tag),{type:"primary",size:"small"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(o.code),1)]),_:2},1024)]),e.createElementVNode("td",null,e.toDisplayString(o.description),1),e.createElementVNode("td",null,[e.createVNode(e.unref(D.Tag),{type:o.status===e.unref(C).ENABLED?"success":"danger",size:"small"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(o.status===e.unref(C).ENABLED?"启用":"禁用"),1)]),_:2},1032,["type"])]),e.createElementVNode("td",null,e.toDisplayString(o.createTime),1),e.createElementVNode("td",null,[e.createVNode(e.unref(w.Space),null,{default:e.withCtx(()=>[e.createVNode(e.unref(w.Button),{type:"primary",link:"",size:"small",onClick:s=>S(o)},{default:e.withCtx(()=>[...d[15]||(d[15]=[e.createTextVNode("编辑",-1)])]),_:1},8,["onClick"]),e.createVNode(e.unref(T.Popconfirm),{title:"确定删除该角色吗?",onConfirm:s=>U(o.id)},{default:e.withCtx(()=>[e.createVNode(e.unref(w.Button),{type:"danger",link:"",size:"small"},{default:e.withCtx(()=>[...d[16]||(d[16]=[e.createTextVNode("删除",-1)])]),_:1})]),_:1},8,["onConfirm"])]),_:2},1024)])]))),128))])]),e.createElementVNode("div",qn,[e.createVNode(e.unref(D.Pagination),{"current-page":p.value,"onUpdate:currentPage":d[2]||(d[2]=o=>p.value=o),"page-size":a.value,"onUpdate:pageSize":d[3]||(d[3]=o=>a.value=o),total:m.value,"page-sizes":[10,20,50,100],layout:"total, sizes, prev, pager, next",onCurrentChange:E,onSizeChange:E},null,8,["current-page","page-size","total"])])]),_:1}),e.createVNode(e.unref(T.Modal),{modelValue:u.value,"onUpdate:modelValue":d[9]||(d[9]=o=>u.value=o),title:g.value,width:"500px"},{footer:e.withCtx(()=>[e.createVNode(e.unref(w.Space),null,{default:e.withCtx(()=>[e.createVNode(e.unref(w.Button),{onClick:d[8]||(d[8]=o=>u.value=!1)},{default:e.withCtx(()=>[...d[18]||(d[18]=[e.createTextVNode("取消",-1)])]),_:1}),e.createVNode(e.unref(w.Button),{type:"primary",onClick:A},{default:e.withCtx(()=>[...d[19]||(d[19]=[e.createTextVNode("确定",-1)])]),_:1})]),_:1})]),default:e.withCtx(()=>[e.createVNode(e.unref(f.Form),{ref_key:"formRef",ref:h,model:N,rules:B,"label-width":"80px"},{default:e.withCtx(()=>[e.createVNode(e.unref(f.FormItem),{label:"角色名称",prop:"name"},{default:e.withCtx(()=>[e.createVNode(e.unref(f.Input),{modelValue:N.name,"onUpdate:modelValue":d[4]||(d[4]=o=>N.name=o),placeholder:"请输入角色名称"},null,8,["modelValue"])]),_:1}),e.createVNode(e.unref(f.FormItem),{label:"角色编码",prop:"code"},{default:e.withCtx(()=>[e.createVNode(e.unref(f.Input),{modelValue:N.code,"onUpdate:modelValue":d[5]||(d[5]=o=>N.code=o),placeholder:"请输入角色编码"},null,8,["modelValue"])]),_:1}),e.createVNode(e.unref(f.FormItem),{label:"描述"},{default:e.withCtx(()=>[e.createVNode(e.unref(f.Input),{modelValue:N.description,"onUpdate:modelValue":d[6]||(d[6]=o=>N.description=o),placeholder:"请输入描述"},null,8,["modelValue"])]),_:1}),e.createVNode(e.unref(f.FormItem),{label:"状态"},{default:e.withCtx(()=>[e.createVNode(e.unref(f.Switch),{modelValue:N.status,"onUpdate:modelValue":d[7]||(d[7]=o=>N.status=o),"active-value":e.unref(C).ENABLED,"inactive-value":e.unref(C).DISABLED},null,8,["modelValue","active-value","inactive-value"])]),_:1})]),_:1},8,["model"])]),_:1},8,["modelValue","title"])]))}}),[["__scopeId","data-v-b714caf1"]])},Symbol.toStringTag,{value:"Module"})),Kn={class:"menu-page"},Hn={class:"toolbar"},Yn={class:"menu-tree"},Wn={class:"tree-table"},Xn={class:"tree-row tree-row--level-0"},Jn=["onClick"],Gn=["onClick"],Ce=Object.freeze(Object.defineProperty({__proto__:null,default:L(e.defineComponent({__name:"index",setup(t){const r=[{id:1,parentId:null,name:"Dashboard",path:"/dashboard",component:"dashboard/index",redirect:"",icon:"dashboard",title:"仪表盘",type:$.MENU,sort:1,status:C.ENABLED,hidden:!1,keepAlive:!0},{id:2,parentId:null,name:"System",path:"/system",component:"",redirect:"/system/user",icon:"setting",title:"系统管理",type:$.DIRECTORY,sort:2,status:C.ENABLED,hidden:!1,keepAlive:!1,children:[{id:21,parentId:2,name:"SystemUser",path:"/system/user",component:"system/user/index",redirect:"",icon:"user",title:"用户管理",type:$.MENU,sort:1,status:C.ENABLED,hidden:!1,keepAlive:!0},{id:22,parentId:2,name:"SystemRole",path:"/system/role",component:"system/role/index",redirect:"",icon:"role",title:"角色管理",type:$.MENU,sort:2,status:C.ENABLED,hidden:!1,keepAlive:!0},{id:23,parentId:2,name:"SystemMenu",path:"/system/menu",component:"system/menu/index",redirect:"",icon:"menu",title:"菜单管理",type:$.MENU,sort:3,status:C.ENABLED,hidden:!1,keepAlive:!0}]}],l=e.ref(!1),c=e.ref([]),m=e.ref(!1),p=e.computed(()=>a.id?"编辑菜单":"新增菜单"),a=e.reactive({id:0,parentId:null,name:"",path:"",component:"",redirect:"",icon:"",title:"",type:$.MENU,sort:0,status:C.ENABLED,hidden:!1,keepAlive:!0}),n={name:[{required:!0,message:"请输入菜单名称",trigger:"blur"}],path:[{required:!0,message:"请输入路由路径",trigger:"blur"}],title:[{required:!0,message:"请输入菜单标题",trigger:"blur"}]},u=e.ref(),g=()=>{l.value=!0,setTimeout(()=>{c.value=r,l.value=!1},300)},N=(x=null)=>{Object.assign(a,{id:0,parentId:x,name:"",path:"",component:"",redirect:"",icon:"",title:"",type:$.MENU,sort:0,status:C.ENABLED,hidden:!1,keepAlive:!0}),m.value=!0},B=x=>{Object.assign(a,x),m.value=!0},h=async()=>{var x;try{await((x=u.value)==null?void 0:x.validate()),T.Message.success(a.id?"编辑成功":"新增成功"),m.value=!1,g()}catch(V){console.error(V)}},E=x=>({dashboard:"📊",system:"⚙️",user:"👤",role:"👥",menu:"📋",setting:"🔧"})[x||""]||"📄";return e.onMounted(()=>{g()}),(x,V)=>(e.openBlock(),e.createElementBlock("div",Kn,[e.createVNode(e.unref(D.Card),{class:"menu-card"},{default:e.withCtx(()=>[e.createElementVNode("div",Hn,[e.createVNode(e.unref(w.Button),{type:"primary",onClick:V[0]||(V[0]=_=>N())},{default:e.withCtx(()=>[...V[14]||(V[14]=[e.createTextVNode("新增菜单",-1)])]),_:1})]),e.createElementVNode("div",Yn,[e.createElementVNode("table",Wn,[V[19]||(V[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",Xn,[e.createElementVNode("td",null,[e.createElementVNode("span",{class:"menu-name",onClick:S=>B(_)},e.toDisplayString(_.title),9,Jn)]),e.createElementVNode("td",null,e.toDisplayString(E(_.icon)),1),e.createElementVNode("td",null,e.toDisplayString(_.path),1),e.createElementVNode("td",null,[e.createVNode(e.unref(D.Tag),{type:_.type===e.unref($).DIRECTORY?"primary":_.type===e.unref($).MENU?"success":"warning",size:"small"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(_.type===e.unref($).DIRECTORY?"目录":_.type===e.unref($).MENU?"菜单":"按钮"),1)]),_:2},1032,["type"])]),e.createElementVNode("td",null,e.toDisplayString(_.sort),1),e.createElementVNode("td",null,[e.createVNode(e.unref(D.Tag),{type:_.status===e.unref(C).ENABLED?"success":"danger",size:"small"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(_.status===e.unref(C).ENABLED?"启用":"禁用"),1)]),_:2},1032,["type"])]),e.createElementVNode("td",null,[e.createVNode(e.unref(w.Space),null,{default:e.withCtx(()=>[e.createVNode(e.unref(w.Button),{type:"primary",link:"",size:"small",onClick:S=>N(_.id)},{default:e.withCtx(()=>[...V[15]||(V[15]=[e.createTextVNode("新增",-1)])]),_:1},8,["onClick"]),e.createVNode(e.unref(w.Button),{type:"primary",link:"",size:"small",onClick:S=>B(_)},{default:e.withCtx(()=>[...V[16]||(V[16]=[e.createTextVNode("编辑",-1)])]),_:1},8,["onClick"])]),_:2},1024)])]),_.children?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:0},e.renderList(_.children,S=>(e.openBlock(),e.createElementBlock("tr",{key:S.id,class:"tree-row tree-row--level-1"},[e.createElementVNode("td",null,[V[17]||(V[17]=e.createElementVNode("span",{class:"tree-indent"},null,-1)),e.createElementVNode("span",{class:"menu-name",onClick:U=>B(S)},e.toDisplayString(S.title),9,Gn)]),e.createElementVNode("td",null,e.toDisplayString(E(S.icon)),1),e.createElementVNode("td",null,e.toDisplayString(S.path),1),e.createElementVNode("td",null,[e.createVNode(e.unref(D.Tag),{type:S.type===e.unref($).DIRECTORY?"primary":S.type===e.unref($).MENU?"success":"warning",size:"small"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(S.type===e.unref($).DIRECTORY?"目录":S.type===e.unref($).MENU?"菜单":"按钮"),1)]),_:2},1032,["type"])]),e.createElementVNode("td",null,e.toDisplayString(S.sort),1),e.createElementVNode("td",null,[e.createVNode(e.unref(D.Tag),{type:S.status===e.unref(C).ENABLED?"success":"danger",size:"small"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(S.status===e.unref(C).ENABLED?"启用":"禁用"),1)]),_:2},1032,["type"])]),e.createElementVNode("td",null,[e.createVNode(e.unref(w.Space),null,{default:e.withCtx(()=>[e.createVNode(e.unref(w.Button),{type:"primary",link:"",size:"small",onClick:U=>B(S)},{default:e.withCtx(()=>[...V[18]||(V[18]=[e.createTextVNode("编辑",-1)])]),_:1},8,["onClick"])]),_:2},1024)])]))),128)):e.createCommentVNode("",!0)],64))),128))])])])]),_:1}),e.createVNode(e.unref(T.Modal),{modelValue:m.value,"onUpdate:modelValue":V[13]||(V[13]=_=>m.value=_),title:p.value,width:"600px"},{footer:e.withCtx(()=>[e.createVNode(e.unref(w.Space),null,{default:e.withCtx(()=>[e.createVNode(e.unref(w.Button),{onClick:V[12]||(V[12]=_=>m.value=!1)},{default:e.withCtx(()=>[...V[20]||(V[20]=[e.createTextVNode("取消",-1)])]),_:1}),e.createVNode(e.unref(w.Button),{type:"primary",onClick:h},{default:e.withCtx(()=>[...V[21]||(V[21]=[e.createTextVNode("确定",-1)])]),_:1})]),_:1})]),default:e.withCtx(()=>[e.createVNode(e.unref(f.Form),{ref_key:"formRef",ref:u,model:a,rules:n,"label-width":"80px"},{default:e.withCtx(()=>[e.createVNode(e.unref(f.FormItem),{label:"上级菜单"},{default:e.withCtx(()=>[e.createVNode(e.unref(f.Input),{modelValue:a.parentId,"onUpdate:modelValue":V[1]||(V[1]=_=>a.parentId=_),placeholder:"上级菜单ID",disabled:""},null,8,["modelValue"])]),_:1}),e.createVNode(e.unref(f.FormItem),{label:"菜单类型"},{default:e.withCtx(()=>[e.createVNode(e.unref(f.Select),{modelValue:a.type,"onUpdate:modelValue":V[2]||(V[2]=_=>a.type=_),options:e.unref(ge)},null,8,["modelValue","options"])]),_:1}),e.createVNode(e.unref(f.FormItem),{label:"菜单名称",prop:"name"},{default:e.withCtx(()=>[e.createVNode(e.unref(f.Input),{modelValue:a.name,"onUpdate:modelValue":V[3]||(V[3]=_=>a.name=_),placeholder:"请输入菜单名称(路由name)"},null,8,["modelValue"])]),_:1}),e.createVNode(e.unref(f.FormItem),{label:"菜单标题",prop:"title"},{default:e.withCtx(()=>[e.createVNode(e.unref(f.Input),{modelValue:a.title,"onUpdate:modelValue":V[4]||(V[4]=_=>a.title=_),placeholder:"请输入菜单标题"},null,8,["modelValue"])]),_:1}),e.createVNode(e.unref(f.FormItem),{label:"路由路径",prop:"path"},{default:e.withCtx(()=>[e.createVNode(e.unref(f.Input),{modelValue:a.path,"onUpdate:modelValue":V[5]||(V[5]=_=>a.path=_),placeholder:"请输入路由路径"},null,8,["modelValue"])]),_:1}),e.createVNode(e.unref(f.FormItem),{label:"组件路径"},{default:e.withCtx(()=>[e.createVNode(e.unref(f.Input),{modelValue:a.component,"onUpdate:modelValue":V[6]||(V[6]=_=>a.component=_),placeholder:"请输入组件路径"},null,8,["modelValue"])]),_:1}),e.createVNode(e.unref(f.FormItem),{label:"图标"},{default:e.withCtx(()=>[e.createVNode(e.unref(f.Input),{modelValue:a.icon,"onUpdate:modelValue":V[7]||(V[7]=_=>a.icon=_),placeholder:"请输入图标名称"},null,8,["modelValue"])]),_:1}),e.createVNode(e.unref(f.FormItem),{label:"排序"},{default:e.withCtx(()=>[e.createVNode(e.unref(f.InputNumber),{modelValue:a.sort,"onUpdate:modelValue":V[8]||(V[8]=_=>a.sort=_),min:0},null,8,["modelValue"])]),_:1}),e.createVNode(e.unref(f.FormItem),{label:"状态"},{default:e.withCtx(()=>[e.createVNode(e.unref(f.Switch),{modelValue:a.status,"onUpdate:modelValue":V[9]||(V[9]=_=>a.status=_),"active-value":e.unref(C).ENABLED,"inactive-value":e.unref(C).DISABLED},null,8,["modelValue","active-value","inactive-value"])]),_:1}),e.createVNode(e.unref(f.FormItem),{label:"隐藏"},{default:e.withCtx(()=>[e.createVNode(e.unref(f.Switch),{modelValue:a.hidden,"onUpdate:modelValue":V[10]||(V[10]=_=>a.hidden=_)},null,8,["modelValue"])]),_:1}),e.createVNode(e.unref(f.FormItem),{label:"缓存"},{default:e.withCtx(()=>[e.createVNode(e.unref(f.Switch),{modelValue:a.keepAlive,"onUpdate:modelValue":V[11]||(V[11]=_=>a.keepAlive=_)},null,8,["modelValue"])]),_:1})]),_:1},8,["model"])]),_:1},8,["modelValue","title"])]))}}),[["__scopeId","data-v-14a9dcbc"]])},Symbol.toStringTag,{value:"Module"}));i.Footer=Bt,i.Gender=Ne,i.GenderOptions=rn,i.GenderText=on,i.Header=he,i.Layout=Ve,i.MenuType=$,i.MenuTypeOptions=ge,i.MenuTypeText=ln,i.Sidebar=fe,i.Status=C,i.StatusOptions=le,i.StatusText=nn,i.Tabs=Ct,i.batchDeleteUsers=vt,i.clearToken=ne,i.createMenu=Ht,i.createRole=zt,i.createUser=Gt,i.defaultDynamicRoutes=be,i.deleteMenu=Wt,i.deleteRole=Ot,i.deleteUser=Zt,i.errorRoute=Q,i.getMenuList=qt,i.getMenuTree=Kt,i.getRefreshToken=De,i.getRoleDetail=Ft,i.getRoleList=Rt,i.getToken=W,i.getTokenExpire=ce,i.getUserDetail=Jt,i.getUserInfo=Mt,i.getUserList=Xt,i.hasPermission=$t,i.hasRole=_e,i.hasToken=oe,i.http=b,i.isAdmin=It,i.isTokenExpired=ue,i.layoutRoute=Z,i.local=y,i.localStorageUtil=P,i.login=Lt,i.logout=At,i.mockMenuData=se,i.permissionDirective=an,i.refreshToken=Ut,i.resetPassword=tn,i.resetRouter=$e,i.router=X,i.session=Se,i.sessionStorageUtil=O,i.setRefreshToken=de,i.setToken=ie,i.setTokenExpire=me,i.setTokenInfo=pe,i.staticRoutes=G,i.updateMenu=Yt,i.updateRole=Pt,i.updateRoleStatus=jt,i.updateUser=Qt,i.updateUserStatus=en,i.useAppStore=j,i.useAuth=bt,i.useAuthStore=J,i.useForm=Dt,i.useMenuStore=q,i.useTable=Tt,i.useUserStore=R,Object.defineProperty(i,Symbol.toStringTag,{value:"Module"})});
|
|
1
|
+
(function(a,e){typeof exports=="object"&&typeof module<"u"?e(exports,require("vue"),require("vue-router"),require("@xto/navigation"),require("@xto/base"),require("@xto/form"),require("@xto/feedback"),require("pinia"),require("axios")):typeof define=="function"&&define.amd?define(["exports","vue","vue-router","@xto/navigation","@xto/base","@xto/form","@xto/feedback","pinia","axios"],e):(a=typeof globalThis<"u"?globalThis:a||self,e(a.XtoFronted={},a.Vue,a.VueRouter,a.navigation,a.base,a.form,a.feedback,a.Pinia,a.axios))})(this,function(a,e,C,F,z,$,I,j,Ne){"use strict";const T={webTitle:"analysis-web",baseUrl:"https://cloud-api-test.tineco.com",appId:"DBU-CONTENT-ANALYSIS",clientId:"Tineco"},q=()=>`tooyu-cloud:${T.appId}:`,te=t=>({get(n){const o=q(),s=t.getItem(o+n);if(!s)return null;try{return JSON.parse(s)}catch{return s}},set(n,o){const s=q();if(o==null){t.removeItem(s+n);return}const r=typeof o=="string"?o:JSON.stringify(o);t.setItem(s+n,r)},remove(n){const o=q();t.removeItem(o+n)},clear(){const n=q();Object.keys(t).forEach(s=>{s.startsWith(n)&&t.removeItem(s)})}}),P=te(window.localStorage),D=te(window.sessionStorage),g={get:P.get,set:P.set,remove:P.remove,clear:P.clear},be={get:D.get,set:D.set,remove:D.remove,clear:D.clear},x=j.defineStore("app",()=>{const t=e.ref(g.get("isDark")||!1),n=e.ref(g.get("theme")||"light"),o=e.ref(g.get("layout")||"sidebar"),s=e.ref(g.get("isCollapsed")||!1),r=e.ref(g.get("showTabs")??!0),d=e.ref(g.get("showFooter")??!0),c=e.ref(g.get("showBreadcrumb")??!0),l=e.ref(g.get("primaryColor")||"#409eff"),m=e.ref([]),_=e.computed(()=>t.value?"dark":"light"),k=()=>{t.value=!t.value,n.value=t.value?"dark":"light",E()},f=b=>{n.value=b,t.value=b==="dark",E()},E=()=>{const b=document.documentElement;t.value?b.classList.add("dark"):b.classList.remove("dark"),g.set("isDark",t.value),g.set("theme",n.value)},y=()=>{s.value=!s.value,g.set("isCollapsed",s.value)},i=b=>{o.value=b,g.set("layout",b)},u=()=>{r.value=!r.value,g.set("showTabs",r.value)},p=()=>{d.value=!d.value,g.set("showFooter",d.value)},N=()=>{c.value=!c.value,g.set("showBreadcrumb",c.value)},h=b=>{l.value=b,document.documentElement.style.setProperty("--color-primary",b),g.set("primaryColor",b)},w=b=>{m.value.includes(b)||m.value.push(b)},S=b=>{const Ee=m.value.indexOf(b);Ee>-1&&m.value.splice(Ee,1)},B=()=>{m.value=[]},L=()=>{E(),l.value!=="#409eff"&&document.documentElement.style.setProperty("--color-primary",l.value)};return e.watch(t,E),{isDark:t,theme:n,layout:o,isCollapsed:s,showTabs:r,showFooter:d,showBreadcrumb:c,primaryColor:l,cachedViews:m,themeClass:_,toggleTheme:k,toggleCollapse:y,setTheme:f,setLayout:i,toggleTabs:u,toggleFooter:p,toggleBreadcrumb:N,setPrimaryColor:h,addCachedView:w,removeCachedView:S,clearCachedViews:B,initTheme:L}}),ne="/vite.svg",K="login_info",H="user_info",M=()=>g.get(K),oe=t=>{const n={accessToken:t.access_token,refreshToken:t.refresh_token,expiresTime:t.expires_time,refreshTime:t.refresh_time,tokenType:t.token_type,code:t.code};g.set(K,n)},W=()=>{const t=M();return(t==null?void 0:t.accessToken)||null},se=()=>{const t=M();return(t==null?void 0:t.tokenType)||"Bearer"},we=()=>{const t=M();return(t==null?void 0:t.code)||null},Y=()=>{g.remove(K),g.remove(H)},J=()=>!!W(),Ve=t=>{g.set(H,t)},Se=()=>g.get(H),Ce=()=>{g.remove(H)},X=j.defineStore("auth",()=>{const t=e.ref(M()),n=e.computed(()=>J()),o=l=>{oe(l),t.value=M()},s=()=>{t.value=null,Y()},r=e.computed(()=>{var l;return((l=t.value)==null?void 0:l.accessToken)||null}),d=e.computed(()=>{var l;return((l=t.value)==null?void 0:l.tokenType)||"Bearer"}),c=e.computed(()=>{var l;return((l=t.value)==null?void 0:l.code)||null});return{loginInfo:t,isLoggedIn:n,accessToken:r,tokenType:d,code:c,login:o,logout:s}}),G=j.defineStore("user",()=>{const t=e.ref(g.get("user_info")),n=e.computed(()=>!!t.value),o=e.computed(()=>{var l;return((l=t.value)==null?void 0:l.userName)||""}),s=e.computed(()=>{var l;return((l=t.value)==null?void 0:l.avatar)||""}),r=e.computed(()=>{var l;return(l=t.value)==null?void 0:l.userId});return{userInfo:t,isLoggedIn:n,userName:o,avatar:s,userId:r,setUserInfo:l=>{t.value=l,g.set("user_info",l)},clearUserInfo:()=>{t.value=null,g.remove("user_info")}}}),U=j.defineStore("menu",()=>{const t="menu_list",n="menu_btn_list",o=e.ref(g.get(t)||[]),s=e.ref(g.get(n)||{}),r={code:"home",name:"首页",icon:"home",closable:!1,default:!1,out:!1,path:"/dashboard",title:"首页"},d=e.computed(()=>o.value.length>0),c=e.computed(()=>{function f(y){if(y&&y.length>0)for(let i=0;i<y.length;i++){const u=y[i];if(u.default)return u.path;{const p=f(u.children||[]);if(p)return p}}return null}return f(o.value)||r.path}),l=(f,E)=>{const y=[];return!f||f.length<=0||f.forEach(i=>{if(i.type===1){const u={code:i.menuCode,name:i.menuName,path:"",title:i.menuName},p=E||"";let N=s.value[p]||[];N.push(u),s.value[p]=N}else{const u=[];let p=i.menuUrl,N=i.isOut||!1;!N&&i.menuUrl&&(i.menuUrl.startsWith("http")?p="/iframe/"+encodeURIComponent(p):i.menuUrl.startsWith("keep-alive:")&&(p="/iframe/keep-alive/"+encodeURIComponent(p.split("keep-alive:")[1])));const h={code:i.menuCode,name:i.menuName,path:p,icon:i.icon,closable:i.closable,default:i.isDefault,out:N,children:u,title:i.menuName};if(y.push(h),i.children&&i.children.length>0){const w=l(i.children,i.menuUrl);h.children=w}}}),y},m=f=>{o.value=f,g.set(t,f)},_=f=>{k(),o.value.push(r);const E=l(f);o.value.push(...E),g.set(t,o.value),g.set(n,s.value)},k=()=>{o.value=[],s.value={},g.remove(t),g.remove(n)};return{menuList:o,menuBtnListMap:s,hasMenu:d,index:c,indexMenu:r,setMenuList:m,setMenuFromRemote:_,clearMenu:k}}),O=(()=>{const t=Ne.create({baseURL:T.baseUrl,timeout:15e3,headers:{"Content-Type":"application/json"}});return t.interceptors.request.use(n=>{const o=W();if(o){const s=se();n.headers.Authorization=`${s} ${o}`}return n},n=>Promise.reject(n)),t.interceptors.response.use(n=>{const{data:o}=n;return o.code===200||o.code===0?n:(I.Message.error(o.message||"请求失败"),Promise.reject(new Error(o.message||"请求失败")))},n=>{var s;const{response:o}=n;if(o)switch(o.status){case 401:case 403:I.Message.error("登录已过期,请重新登录"),Y(),window.location.href="/login";break;case 404:I.Message.error("请求资源不存在");break;case 500:I.Message.error("服务器错误");break;default:I.Message.error(((s=o.data)==null?void 0:s.message)||"请求失败")}else I.Message.error("网络连接失败");return Promise.reject(n)}),t})(),A={get(t,n){return O.get(t,n).then(o=>o.data)},post(t,n,o){return O.post(t,n,o).then(s=>s.data)},put(t,n,o){return O.put(t,n,o).then(s=>s.data)},patch(t,n,o){return O.patch(t,n,o).then(s=>s.data)},delete(t,n){return O.delete(t,n).then(o=>o.data)}};function re(t){return A.post("/user/v1.0/login/by-domain",{appId:T.appId,clientId:T.clientId,uid:t.uid,password:t.password,code:!0})}function ae(){return A.put("/user/v1.0/user/logout")}function Be(t,n){return A.get(`/user/v1.0/login/by-code?appId=${t}&code=${n}`)}function le(){return A.get("/user/v1.0/user/get-me")}function ce(){return A.get(`/user/v1.0/menu/get-menu?appId=${T.appId}`)}function R(){const t=C.useRouter(),n=C.useRoute(),o=X(),s=G(),r=U(),d=e.ref(!1),c=e.computed(()=>o.isLoggedIn),l=e.computed(()=>s.userInfo),m=e.computed(()=>s.userName||""),_=e.computed(()=>r.menuList),k=e.computed(()=>r.index),f=async(N,h)=>{d.value=!0;try{p();const S=(await re({uid:N,password:h})).data;o.login(S),await y(),await i();const B=n.query.redirectUrl;if(B){const L=decodeURIComponent(B);if(L.startsWith("http")){const b=S.code;location.href=L.includes("?")?`${L}&code=${b}`:`${L}?code=${b}`}else await t.replace(L)}else await t.replace(k.value||"/");return I.Message.success("登录成功"),{success:!0,data:S}}catch(w){return I.Message.error((w==null?void 0:w.message)||"登录失败"),{success:!1,error:w}}finally{d.value=!1}},E=async(N=!0)=>{try{await ae()}catch(h){console.error("退出登录接口失败",h)}finally{p(),t.push("/login"),N&&I.Message.success("退出登录成功")}},y=async()=>{const N=await le();return s.setUserInfo(N.data),N.data},i=async()=>{const N=await ce();return r.setMenuFromRemote(N.data),r.menuList},u=async()=>{if(!o.isLoggedIn)return!1;try{return s.userInfo||await y(),r.hasMenu||await i(),!0}catch(N){return console.error("初始化应用失败",N),p(),!1}},p=()=>{o.logout(),s.clearUserInfo(),r.clearMenu()};return{loading:d,isLoggedIn:c,userInfo:l,userName:m,menuList:_,indexPath:k,login:f,logout:E,loadUserInfo:y,loadMenu:i,initApp:u,clearAllState:p}}function Ie(){const t=U(),n=X(),o=G(),s=e.computed(()=>n.isLoggedIn),r=e.computed(()=>o.userName),d=e.computed(()=>o.userInfo),c=k=>{const f=window.location.pathname,y=(t.menuBtnListMap[f]||[]).map(i=>i.code);return Array.isArray(k)?k.some(i=>y.includes(i)):y.includes(k)};return{isLoggedIn:s,userName:r,userInfo:d,hasPermission:c,hasAnyPermission:k=>k.some(f=>c(f)),hasAllPermissions:k=>k.every(f=>c(f)),getCurrentPagePermissions:()=>{const k=window.location.pathname;return(t.menuBtnListMap[k]||[]).map(E=>E.code)}}}const $e={home:"🏠",dashboard:"📊",system:"⚙️",user:"👤",role:"👥",menu:"📋",setting:"🔧"};function ie(t){const n=C.useRoute(),o=C.useRouter(),s=U(),r=x(),d={...$e,...t},c=e.ref(""),l=e.computed(()=>n.path),m=e.computed(()=>r.isCollapsed),_=e.computed(()=>s.menuList),k=e.computed(()=>s.hasMenu),f=(h,w="")=>{const S=[];return h.forEach(B=>{B.children&&B.children.length>0?S.push(...f(B.children,B.title)):S.push({...B,parentTitle:w})}),S},E=e.computed(()=>c.value.trim()?f(_.value).filter(w=>w.title.toLowerCase().includes(c.value.toLowerCase())):[]),y=e.computed(()=>c.value.trim()?_.value.map(h=>{if(h.children&&h.children.length>0){const w=h.children.filter(S=>S.title.toLowerCase().includes(c.value.toLowerCase()));return w.length>0?{...h,children:w}:null}return h.title.toLowerCase().includes(c.value.toLowerCase())?h:null}).filter(Boolean):_.value);return{searchKeyword:c,activeMenu:l,isCollapsed:m,menuList:_,hasMenu:k,searchResults:E,filteredMenuList:y,flattenMenus:f,getMenuIcon:h=>d[h||""]||"📄",handleMenuSelect:h=>{h&&h!==n.path&&(o.push(h),c.value="")},handleSearchItemClick:h=>{o.push(h),c.value=""},clearSearch:()=>{c.value=""}}}function Te(t,n={}){const{rules:o,onSubmit:s}=n,r=e.ref(),d=e.reactive({...t}),c=e.ref(!1),l=e.ref(!1),m=e.ref(!1),_=()=>{E(),m.value=!1,l.value=!0},k=i=>{Object.assign(d,i),m.value=!0,l.value=!0},f=()=>{l.value=!1,E()},E=()=>{var i;Object.keys(t).forEach(u=>{d[u]=t[u]}),(i=r.value)==null||i.resetFields()};return{formRef:r,formData:d,rules:o,loading:c,visible:l,isEdit:m,openAdd:_,openEdit:k,close:f,resetForm:E,handleSubmit:async()=>{var i;try{await((i=r.value)==null?void 0:i.validate()),c.value=!0,await(s==null?void 0:s(d)),f()}catch(u){console.error(u)}finally{c.value=!1}}}}function Le(t){const{fetchData:n,defaultPageSize:o=10}=t,s=e.ref(!1),r=e.ref([]),d=e.ref(0),c=e.ref(1),l=e.ref(o),m=e.reactive({}),_=async()=>{s.value=!0;try{const p={...m,page:c.value,pageSize:l.value},N=await n(p);r.value=N.list,d.value=N.total}catch(p){console.error(p)}finally{s.value=!1}},k=()=>{c.value=1,_()},f=()=>{Object.keys(m).forEach(p=>{m[p]=void 0}),c.value=1,_()},E=p=>{c.value=p,_()},y=p=>{l.value=p,c.value=1,_()},i=()=>{_()},u=e.computed(()=>({current:c.value,pageSize:l.value,total:d.value}));return{loading:s,data:r,total:d,currentPage:c,pageSize:l,searchParams:m,pagination:u,getData:_,handleSearch:k,handleReset:f,handlePageChange:E,handleSizeChange:y,refresh:i}}const Me={class:"sidebar"},Ue={class:"sidebar__logo"},Ae={key:0,class:"sidebar__search"},Pe={key:0,class:"sidebar__search-results"},De=["onClick"],xe={class:"menu-icon"},Oe={class:"sidebar__search-item-info"},Re={class:"sidebar__search-item-title"},Fe={key:0,class:"sidebar__search-item-parent"},ze={class:"menu-icon"},je={class:"menu-icon"},qe={class:"menu-icon"},He={key:1,class:"sidebar__user"},Ke={class:"sidebar__user-info"},We={class:"sidebar__user-name"},Ye={class:"sidebar__user-role"},Je=e.defineComponent({__name:"Sidebar",setup(t){const{logout:n,userName:o,userInfo:s}=R(),{searchKeyword:r,activeMenu:d,isCollapsed:c,searchResults:l,filteredMenuList:m,getMenuIcon:_,handleMenuSelect:k,handleSearchItemClick:f}=ie();return(E,y)=>{var i;return e.openBlock(),e.createElementBlock("div",Me,[e.createElementVNode("div",Ue,[y[1]||(y[1]=e.createElementVNode("img",{src:ne,alt:"Logo",class:"sidebar__logo-img"},null,-1)),e.withDirectives(e.createElementVNode("span",{class:"sidebar__logo-text"},e.toDisplayString(e.unref(T).webTitle),513),[[e.vShow,!e.unref(c)]])]),e.unref(c)?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("div",Ae,[e.createVNode(e.unref($.Input),{modelValue:e.unref(r),"onUpdate:modelValue":y[0]||(y[0]=u=>e.isRef(r)?r.value=u:null),placeholder:"搜索菜单...",size:"small",clearable:""},null,8,["modelValue"]),e.unref(l).length>0?(e.openBlock(),e.createElementBlock("div",Pe,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(l),u=>(e.openBlock(),e.createElementBlock("div",{key:u.path,class:"sidebar__search-item",onClick:p=>e.unref(f)(u.path)},[e.createElementVNode("span",xe,e.toDisplayString(e.unref(_)(u.icon)),1),e.createElementVNode("div",Oe,[e.createElementVNode("span",Re,e.toDisplayString(u.title),1),u.parentTitle?(e.openBlock(),e.createElementBlock("span",Fe,e.toDisplayString(u.parentTitle),1)):e.createCommentVNode("",!0)])],8,De))),128))])):e.createCommentVNode("",!0)])),e.createVNode(e.unref(F.Menu),{"default-active":e.unref(d),collapse:e.unref(c),"collapse-transition":!1,class:"sidebar__menu",onSelect:e.unref(k)},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(m),u=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:u.path},[u.children&&u.children.length>0?(e.openBlock(),e.createBlock(e.unref(F.SubMenu),{key:0,index:u.path},{title:e.withCtx(()=>[e.createElementVNode("span",ze,e.toDisplayString(e.unref(_)(u.icon)),1),e.createElementVNode("span",null,e.toDisplayString(u.title),1)]),default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(u.children,p=>(e.openBlock(),e.createBlock(e.unref(F.MenuItem),{key:p.path,index:p.path},{default:e.withCtx(()=>[e.createElementVNode("span",je,e.toDisplayString(e.unref(_)(p.icon)),1),e.createElementVNode("span",null,e.toDisplayString(p.title),1)]),_:2},1032,["index"]))),128))]),_:2},1032,["index"])):(e.openBlock(),e.createBlock(e.unref(F.MenuItem),{key:1,index:u.path},{default:e.withCtx(()=>[e.createElementVNode("span",qe,e.toDisplayString(e.unref(_)(u.icon)),1),e.createElementVNode("span",null,e.toDisplayString(u.title),1)]),_:2},1032,["index"]))],64))),128))]),_:1},8,["default-active","collapse","onSelect"]),e.unref(c)?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("div",He,[e.createElementVNode("div",Ke,[e.createElementVNode("span",We,e.toDisplayString(e.unref(o)||"用户"),1),e.createElementVNode("span",Ye,e.toDisplayString(((i=e.unref(s))==null?void 0:i.departmentName)||""),1)]),e.createVNode(e.unref(z.Button),{type:"text",size:"small",onClick:e.unref(n)},{default:e.withCtx(()=>[...y[2]||(y[2]=[e.createTextVNode("退出",-1)])]),_:1},8,["onClick"])]))])}}}),V=(t,n)=>{const o=t.__vccOpts||t;for(const[s,r]of n)o[s]=r;return o},de=V(Je,[["__scopeId","data-v-bd43a7b8"]]),Xe={class:"header"},Ge={class:"header__right"},Qe=["title"],Ze={key:0,viewBox:"0 0 24 24",width:"16",height:"16",fill:"currentColor"},ve={key:1,viewBox:"0 0 24 24",width:"16",height:"16",fill:"currentColor"},et={key:0},tt={key:1},nt={class:"header__avatar"},ot={class:"header__user-name"},st={key:0,class:"header__dropdown"},rt={class:"header__dropdown-header"},at={class:"header__dropdown-avatar"},lt={class:"header__dropdown-info"},ct={class:"header__dropdown-name"},it={class:"header__dropdown-role"},me=V(e.defineComponent({__name:"Header",setup(t){const n=x(),{logout:o,userName:s,userInfo:r}=R(),d=e.ref(!1),c=e.ref(null),l=e.ref(!1),m=e.computed(()=>s.value||"用户"),_=()=>{n.toggleCollapse()},k=()=>{n.toggleTheme()},f=()=>{document.fullscreenElement?document.exitFullscreen():document.documentElement.requestFullscreen()},E=()=>{l.value=!!document.fullscreenElement},y=()=>{d.value=!d.value},i=()=>{d.value=!1},u=async()=>{i(),await o()},p=N=>{c.value&&!c.value.contains(N.target)&&i()};return e.onMounted(()=>{document.addEventListener("click",p),document.addEventListener("fullscreenchange",E)}),e.onUnmounted(()=>{document.removeEventListener("click",p),document.removeEventListener("fullscreenchange",E)}),(N,h)=>(e.openBlock(),e.createElementBlock("div",Xe,[e.createElementVNode("div",{class:"header__left"},[e.createElementVNode("div",{class:"header__collapse",onClick:_},[...h[0]||(h[0]=[e.createElementVNode("span",null,"☰",-1)])])]),e.createElementVNode("div",Ge,[e.createElementVNode("div",{class:"header__action",onClick:f,title:l.value?"退出全屏":"全屏"},[l.value?(e.openBlock(),e.createElementBlock("svg",Ze,[...h[1]||(h[1]=[e.createElementVNode("path",{d:"M5 16h3v3h2v-5H5v2zm3-8H5v2h5V5H8v3zm6 11h2v-3h3v-2h-5v5zm2-11V5h-2v5h5V8h-3z"},null,-1)])])):(e.openBlock(),e.createElementBlock("svg",ve,[...h[2]||(h[2]=[e.createElementVNode("path",{d:"M7 14H5v5h5v-2H7v-3zm-2-4h2V7h3V5H5v5zm12 7h-3v2h5v-5h-2v3zM14 5v2h3v3h2V5h-5z"},null,-1)])]))],8,Qe),e.createElementVNode("div",{class:"header__action",onClick:k,title:"切换主题"},[e.unref(n).isDark?(e.openBlock(),e.createElementBlock("span",et,"🌙")):(e.openBlock(),e.createElementBlock("span",tt,"☀️"))]),e.createElementVNode("div",{class:"header__user",ref_key:"dropdownRef",ref:c},[e.createElementVNode("div",{class:"header__user-trigger",onClick:e.withModifiers(y,["stop"])},[e.createElementVNode("div",nt,[e.createElementVNode("span",null,e.toDisplayString(m.value.charAt(0)),1)]),e.createElementVNode("span",ot,e.toDisplayString(m.value),1),e.createElementVNode("span",{class:e.normalizeClass(["header__user-arrow",{"is-active":d.value}])},"▼",2)]),e.createVNode(e.Transition,{name:"dropdown"},{default:e.withCtx(()=>{var w;return[d.value?(e.openBlock(),e.createElementBlock("div",st,[e.createElementVNode("div",rt,[e.createElementVNode("div",at,[e.createElementVNode("span",null,e.toDisplayString(m.value.charAt(0)),1)]),e.createElementVNode("div",lt,[e.createElementVNode("div",ct,e.toDisplayString(m.value),1),e.createElementVNode("div",it,e.toDisplayString(((w=e.unref(r))==null?void 0:w.departmentName)||""),1)])]),h[4]||(h[4]=e.createElementVNode("div",{class:"header__dropdown-divider"},null,-1)),e.createElementVNode("div",{class:"header__dropdown-menu"},[e.createElementVNode("div",{class:"header__dropdown-item header__dropdown-item--danger",onClick:u},[...h[3]||(h[3]=[e.createElementVNode("span",{class:"header__dropdown-icon"},"🚪",-1),e.createElementVNode("span",null,"退出登录",-1)])])])])):e.createCommentVNode("",!0)]}),_:1})],512)])]))}}),[["__scopeId","data-v-2bf8f3d2"]]),dt={class:"layout"},mt={class:"layout__main"},ut={class:"layout__content"},ue=V(e.defineComponent({__name:"index",setup(t){const n=x(),o=e.computed(()=>n.isCollapsed?"64px":"210px");return(s,r)=>{const d=e.resolveComponent("router-view");return e.openBlock(),e.createElementBlock("div",dt,[e.createElementVNode("aside",{class:"layout__aside",style:e.normalizeStyle({width:o.value})},[e.createVNode(de)],4),e.createElementVNode("div",mt,[e.createVNode(me,{class:"layout__header"}),e.createElementVNode("main",ut,[e.createVNode(d)])])])}}}),[["__scopeId","data-v-1a24e6d0"]]),pt=Object.freeze(Object.defineProperty({__proto__:null,default:ue},Symbol.toStringTag,{value:"Module"})),ht={},_t={class:"tabs-wrapper"};function ft(t,n){return e.openBlock(),e.createElementBlock("div",_t)}const gt=V(ht,[["render",ft],["__scopeId","data-v-3b1e382a"]]),yt={},kt={class:"footer"};function Et(t,n){return e.openBlock(),e.createElementBlock("div",kt,[...n[0]||(n[0]=[e.createElementVNode("span",null,"Copyright © 2024 Xto Demo. All Rights Reserved.",-1)])])}const Nt=V(yt,[["render",Et],["__scopeId","data-v-317ae311"]]);function bt(t){const n=U(),o=window.location.pathname,r=(n.menuBtnListMap[o]||[]).map(d=>d.code);return Array.isArray(t)?t.some(d=>r.includes(d)):r.includes(t)}function wt(){return!0}const Q=[{path:"/login",name:"Login",component:()=>Promise.resolve().then(()=>xt),meta:{title:"登录",hidden:!0}},{path:"/404",name:"NotFound",component:()=>Promise.resolve().then(()=>Ft),meta:{title:"404",hidden:!0}},{path:"/403",name:"Forbidden",component:()=>Promise.resolve().then(()=>qt),meta:{title:"403",hidden:!0}}],Z={path:"/:pathMatch(.*)*",redirect:"/404",meta:{hidden:!0}},v={path:"/",name:"Layout",component:()=>Promise.resolve().then(()=>pt),redirect:"/dashboard",children:[{path:"/dashboard",name:"Dashboard",component:()=>Promise.resolve().then(()=>fe),meta:{title:"仪表盘",icon:"dashboard",keepAlive:!0,affix:!0}},{path:"/system/user",name:"SystemUser",component:()=>Promise.resolve().then(()=>ge),meta:{title:"用户管理",icon:"user",keepAlive:!0}},{path:"/system/role",name:"SystemRole",component:()=>Promise.resolve().then(()=>ye),meta:{title:"角色管理",icon:"role",keepAlive:!0}},{path:"/system/menu",name:"SystemMenu",component:()=>Promise.resolve().then(()=>ke),meta:{title:"菜单管理",icon:"menu",keepAlive:!0}}]},Vt=[{path:"/dashboard",name:"Dashboard",component:()=>Promise.resolve().then(()=>fe),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(()=>ge),meta:{title:"用户管理",icon:"user",keepAlive:!0}},{path:"role",name:"SystemRole",component:()=>Promise.resolve().then(()=>ye),meta:{title:"角色管理",icon:"role",keepAlive:!0}},{path:"menu",name:"SystemMenu",component:()=>Promise.resolve().then(()=>ke),meta:{title:"菜单管理",icon:"menu",keepAlive:!0}}]}],St=[{id:1,name:"Dashboard",path:"/dashboard",component:"dashboard/index",icon:"dashboard",title:"仪表盘",keepAlive:!0,affix:!0},{id:2,name:"System",path:"/system",redirect:"/system/user",icon:"setting",title:"系统管理",children:[{id:21,name:"SystemUser",path:"/system/user",component:"system/user/index",icon:"user",title:"用户管理",keepAlive:!0},{id:22,name:"SystemRole",path:"/system/role",component:"system/role/index",icon:"role",title:"角色管理",keepAlive:!0},{id:23,name:"SystemMenu",path:"/system/menu",component:"system/menu/index",icon:"menu",title:"菜单管理",keepAlive:!0}]}],ee=C.createRouter({history:C.createWebHistory(),routes:[...Q,v,Z],scrollBehavior:()=>({left:0,top:0})}),Ct=["/login","/404","/403"];ee.beforeEach(async(t,n,o)=>{const s=x();if(s.initTheme(),J())if(t.path==="/login")o({path:"/"});else{const{initApp:r,isLoggedIn:d}=R();if(!d.value&&!await r()){o("/login");return}t.name&&t.meta.keepAlive&&s.addCachedView(t.name),o()}else Ct.includes(t.path)?o():o({path:"/login",query:{redirectUrl:encodeURIComponent(t.fullPath)}})});function Bt(){const t=C.createRouter({history:C.createWebHistory(),routes:[...Q,v,Z]});ee.matcher=t.matcher}var pe=(t=>(t[t.ENABLED=1]="ENABLED",t[t.DISABLED=0]="DISABLED",t))(pe||{}),he=(t=>(t[t.UNKNOWN=0]="UNKNOWN",t[t.MALE=1]="MALE",t[t.FEMALE=2]="FEMALE",t))(he||{}),_e=(t=>(t[t.DIRECTORY=0]="DIRECTORY",t[t.MENU=1]="MENU",t[t.BUTTON=2]="BUTTON",t))(_e||{});const It={1:"启用",0:"禁用"},$t={0:"未知",1:"男",2:"女"},Tt={0:"目录",1:"菜单",2:"按钮"},Lt=[{label:"启用",value:1},{label:"禁用",value:0}],Mt=[{label:"未知",value:0},{label:"男",value:1},{label:"女",value:2}],Ut=[{label:"目录",value:0},{label:"菜单",value:1},{label:"按钮",value:2}],At={mounted(t,n){var m;const o=U(),{value:s}=n;if(!s)return;const r=window.location.pathname,c=(o.menuBtnListMap[r]||[]).map(_=>_.code);let l=!1;Array.isArray(s)?l=s.some(_=>c.includes(_)):l=c.includes(s),l||(m=t.parentNode)==null||m.removeChild(t)}},Pt={class:"login"},Dt={class:"login__container"},xt=Object.freeze(Object.defineProperty({__proto__:null,default:V(e.defineComponent({__name:"index",setup(t){const{login:n,loading:o}=R(),s=e.reactive({uid:"",password:""}),r={uid:[{required:!0,message:"请输入账号",trigger:"blur"}],password:[{required:!0,message:"请输入密码",trigger:"blur"}]},d=e.ref(),c=async()=>{var l;try{await((l=d.value)==null?void 0:l.validate()),await n(s.uid,s.password)}catch(m){console.error("登录失败",m)}};return(l,m)=>(e.openBlock(),e.createElementBlock("div",Pt,[e.createElementVNode("div",Dt,[m[3]||(m[3]=e.createElementVNode("div",{class:"login__header"},[e.createElementVNode("img",{src:ne,alt:"Logo",class:"login__logo"}),e.createElementVNode("h1",{class:"login__title"},"Analysis Web"),e.createElementVNode("p",{class:"login__subtitle"},"后台管理系统")],-1)),e.createVNode(e.unref($.Form),{ref_key:"formRef",ref:d,model:s,rules:r,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":m[0]||(m[0]=_=>s.uid=_),placeholder:"请输入账号",size:"large"},null,8,["modelValue"])]),_:1}),e.createVNode(e.unref($.FormItem),{prop:"password"},{default:e.withCtx(()=>[e.createVNode(e.unref($.Input),{modelValue:s.password,"onUpdate:modelValue":m[1]||(m[1]=_=>s.password=_),type:"password",placeholder:"请输入密码",size:"large","show-password":"",onKeyup:e.withKeys(c,["enter"])},null,8,["modelValue"])]),_:1}),e.createVNode(e.unref($.FormItem),null,{default:e.withCtx(()=>[e.createVNode(e.unref(z.Button),{type:"primary",size:"large",loading:e.unref(o),class:"login__submit",onClick:c},{default:e.withCtx(()=>[...m[2]||(m[2]=[e.createTextVNode(" 登录 ",-1)])]),_:1},8,["loading"])]),_:1})]),_:1},8,["model"])])]))}}),[["__scopeId","data-v-728dba9d"]])},Symbol.toStringTag,{value:"Module"})),Ot={class:"error-page"},Rt={class:"error-page__content"},Ft=Object.freeze(Object.defineProperty({__proto__:null,default:V(e.defineComponent({__name:"404",setup(t){const n=C.useRouter(),o=()=>{n.push("/")};return(s,r)=>(e.openBlock(),e.createElementBlock("div",Ot,[e.createElementVNode("div",Rt,[r[1]||(r[1]=e.createElementVNode("div",{class:"error-page__code"},"404",-1)),r[2]||(r[2]=e.createElementVNode("div",{class:"error-page__title"},"页面不存在",-1)),r[3]||(r[3]=e.createElementVNode("div",{class:"error-page__desc"},"抱歉,您访问的页面不存在或已被删除",-1)),e.createVNode(e.unref(z.Button),{type:"primary",onClick:o},{default:e.withCtx(()=>[...r[0]||(r[0]=[e.createTextVNode("返回首页",-1)])]),_:1})])]))}}),[["__scopeId","data-v-f1a1acb0"]])},Symbol.toStringTag,{value:"Module"})),zt={class:"error-page"},jt={class:"error-page__content"},qt=Object.freeze(Object.defineProperty({__proto__:null,default:V(e.defineComponent({__name:"403",setup(t){const n=C.useRouter(),o=()=>{n.push("/")};return(s,r)=>(e.openBlock(),e.createElementBlock("div",zt,[e.createElementVNode("div",jt,[r[1]||(r[1]=e.createElementVNode("div",{class:"error-page__code"},"403",-1)),r[2]||(r[2]=e.createElementVNode("div",{class:"error-page__title"},"无访问权限",-1)),r[3]||(r[3]=e.createElementVNode("div",{class:"error-page__desc"},"抱歉,您没有权限访问此页面",-1)),e.createVNode(e.unref(z.Button),{type:"primary",onClick:o},{default:e.withCtx(()=>[...r[0]||(r[0]=[e.createTextVNode("返回首页",-1)])]),_:1})])]))}}),[["__scopeId","data-v-f6105e3d"]])},Symbol.toStringTag,{value:"Module"})),Ht={},Kt={class:"dashboard"};function Wt(t,n){return e.openBlock(),e.createElementBlock("div",Kt,[...n[0]||(n[0]=[e.createElementVNode("div",{class:"dashboard__placeholder"},[e.createElementVNode("h2",null,"首页"),e.createElementVNode("p",null,"功能开发中...")],-1)])])}const fe=Object.freeze(Object.defineProperty({__proto__:null,default:V(Ht,[["render",Wt],["__scopeId","data-v-a57037a8"]])},Symbol.toStringTag,{value:"Module"})),Yt={},Jt={class:"page"};function Xt(t,n){return e.openBlock(),e.createElementBlock("div",Jt,[...n[0]||(n[0]=[e.createElementVNode("div",{class:"page__placeholder"},[e.createElementVNode("h2",null,"用户管理"),e.createElementVNode("p",null,"功能开发中...")],-1)])])}const ge=Object.freeze(Object.defineProperty({__proto__:null,default:V(Yt,[["render",Xt],["__scopeId","data-v-715bfcf7"]])},Symbol.toStringTag,{value:"Module"})),Gt={},Qt={class:"page"};function Zt(t,n){return e.openBlock(),e.createElementBlock("div",Qt,[...n[0]||(n[0]=[e.createElementVNode("div",{class:"page__placeholder"},[e.createElementVNode("h2",null,"角色管理"),e.createElementVNode("p",null,"功能开发中...")],-1)])])}const ye=Object.freeze(Object.defineProperty({__proto__:null,default:V(Gt,[["render",Zt],["__scopeId","data-v-0802c3db"]])},Symbol.toStringTag,{value:"Module"})),vt={},en={class:"page"};function tn(t,n){return e.openBlock(),e.createElementBlock("div",en,[...n[0]||(n[0]=[e.createElementVNode("div",{class:"page__placeholder"},[e.createElementVNode("h2",null,"菜单管理"),e.createElementVNode("p",null,"功能开发中...")],-1)])])}const ke=Object.freeze(Object.defineProperty({__proto__:null,default:V(vt,[["render",tn],["__scopeId","data-v-7bc14131"]])},Symbol.toStringTag,{value:"Module"}));a.Footer=Nt,a.Gender=he,a.GenderOptions=Mt,a.GenderText=$t,a.Header=me,a.Layout=ue,a.MenuType=_e,a.MenuTypeOptions=Ut,a.MenuTypeText=Tt,a.Sidebar=de,a.Status=pe,a.StatusOptions=Lt,a.StatusText=It,a.Tabs=gt,a.appConfig=T,a.clearToken=Y,a.clearUserInfo=Ce,a.defaultDynamicRoutes=Vt,a.errorRoute=Z,a.getCode=we,a.getCurrentUser=le,a.getLoginInfo=M,a.getToken=W,a.getTokenType=se,a.getUserInfo=Se,a.getUserMenu=ce,a.hasPermission=bt,a.hasToken=J,a.http=A,a.isAdmin=wt,a.layoutRoute=v,a.local=g,a.localStorageUtil=P,a.login=re,a.loginByCode=Be,a.logout=ae,a.mockMenuData=St,a.permissionDirective=At,a.resetRouter=Bt,a.router=ee,a.session=be,a.sessionStorageUtil=D,a.setLoginInfo=oe,a.setUserInfo=Ve,a.staticRoutes=Q,a.useApp=R,a.useAppStore=x,a.useAuth=Ie,a.useAuthStore=X,a.useForm=Te,a.useMenu=ie,a.useMenuStore=U,a.useTable=Le,a.useUserStore=G,Object.defineProperty(a,Symbol.toStringTag,{value:"Module"})});
|
package/dist/stores/auth.d.ts
CHANGED
|
@@ -1,31 +1,68 @@
|
|
|
1
|
-
|
|
2
|
-
* 认证状态
|
|
3
|
-
*/
|
|
1
|
+
import { LoginInfo } from '../utils/auth';
|
|
4
2
|
export declare const useAuthStore: import('pinia').StoreDefinition<"auth", Pick<{
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
login: (tokenInfo: {
|
|
8
|
-
token: string;
|
|
3
|
+
loginInfo: import('vue').Ref<{
|
|
4
|
+
accessToken: string;
|
|
9
5
|
refreshToken: string;
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
login: (tokenInfo: {
|
|
17
|
-
token: string;
|
|
6
|
+
expiresTime: string;
|
|
7
|
+
refreshTime: string;
|
|
8
|
+
tokenType: string;
|
|
9
|
+
code: string;
|
|
10
|
+
} | null, LoginInfo | {
|
|
11
|
+
accessToken: string;
|
|
18
12
|
refreshToken: string;
|
|
19
|
-
|
|
20
|
-
|
|
13
|
+
expiresTime: string;
|
|
14
|
+
refreshTime: string;
|
|
15
|
+
tokenType: string;
|
|
16
|
+
code: string;
|
|
17
|
+
} | null>;
|
|
18
|
+
isLoggedIn: import('vue').ComputedRef<boolean>;
|
|
19
|
+
accessToken: import('vue').ComputedRef<string | null>;
|
|
20
|
+
tokenType: import('vue').ComputedRef<string>;
|
|
21
|
+
code: import('vue').ComputedRef<string | null>;
|
|
22
|
+
login: (data: Record<string, unknown>) => void;
|
|
21
23
|
logout: () => void;
|
|
22
|
-
}, "
|
|
23
|
-
|
|
24
|
+
}, "loginInfo">, Pick<{
|
|
25
|
+
loginInfo: import('vue').Ref<{
|
|
26
|
+
accessToken: string;
|
|
27
|
+
refreshToken: string;
|
|
28
|
+
expiresTime: string;
|
|
29
|
+
refreshTime: string;
|
|
30
|
+
tokenType: string;
|
|
31
|
+
code: string;
|
|
32
|
+
} | null, LoginInfo | {
|
|
33
|
+
accessToken: string;
|
|
34
|
+
refreshToken: string;
|
|
35
|
+
expiresTime: string;
|
|
36
|
+
refreshTime: string;
|
|
37
|
+
tokenType: string;
|
|
38
|
+
code: string;
|
|
39
|
+
} | null>;
|
|
24
40
|
isLoggedIn: import('vue').ComputedRef<boolean>;
|
|
25
|
-
|
|
26
|
-
|
|
41
|
+
accessToken: import('vue').ComputedRef<string | null>;
|
|
42
|
+
tokenType: import('vue').ComputedRef<string>;
|
|
43
|
+
code: import('vue').ComputedRef<string | null>;
|
|
44
|
+
login: (data: Record<string, unknown>) => void;
|
|
45
|
+
logout: () => void;
|
|
46
|
+
}, "code" | "accessToken" | "tokenType" | "isLoggedIn">, Pick<{
|
|
47
|
+
loginInfo: import('vue').Ref<{
|
|
48
|
+
accessToken: string;
|
|
27
49
|
refreshToken: string;
|
|
28
|
-
|
|
29
|
-
|
|
50
|
+
expiresTime: string;
|
|
51
|
+
refreshTime: string;
|
|
52
|
+
tokenType: string;
|
|
53
|
+
code: string;
|
|
54
|
+
} | null, LoginInfo | {
|
|
55
|
+
accessToken: string;
|
|
56
|
+
refreshToken: string;
|
|
57
|
+
expiresTime: string;
|
|
58
|
+
refreshTime: string;
|
|
59
|
+
tokenType: string;
|
|
60
|
+
code: string;
|
|
61
|
+
} | null>;
|
|
62
|
+
isLoggedIn: import('vue').ComputedRef<boolean>;
|
|
63
|
+
accessToken: import('vue').ComputedRef<string | null>;
|
|
64
|
+
tokenType: import('vue').ComputedRef<string>;
|
|
65
|
+
code: import('vue').ComputedRef<string | null>;
|
|
66
|
+
login: (data: Record<string, unknown>) => void;
|
|
30
67
|
logout: () => void;
|
|
31
68
|
}, "login" | "logout">>;
|