xto-fronted 0.4.6 → 0.4.8
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/.env.development +7 -7
- package/.env.production +7 -7
- package/dist/assets/403-AFBQifUI.js +1 -0
- package/dist/assets/403-BHEXXbt2.css +1 -0
- package/dist/assets/404-Ct_A1n7S.css +1 -0
- package/dist/assets/404-WFvpcD2_.js +1 -0
- package/dist/assets/_plugin-vue_export-helper-DlAUqK2U.js +1 -0
- package/dist/assets/index-1juADvYN.js +2 -0
- package/dist/assets/index-B-sX4Ru0.js +1 -0
- package/dist/assets/index-BMcziU5a.css +1 -0
- package/dist/assets/index-BRR97dc6.js +1 -0
- package/dist/assets/index-BZA0ksjx.css +1 -0
- package/dist/assets/index-BpV_8nl0.js +1 -0
- package/dist/assets/index-BvzhR4zp.js +1 -0
- package/dist/assets/index-CUh_s55Z.css +1 -0
- package/dist/assets/index-CVjdnIgR.css +1 -0
- package/dist/assets/index-CYq57-zj.js +1 -0
- package/dist/assets/index-CkL3sVAQ.js +2 -0
- package/dist/assets/index-CtrKVYJb.css +1 -0
- package/dist/assets/index-Cz2P_bsS.js +1 -0
- package/dist/assets/index-D9wlAuR_.js +1 -0
- package/dist/assets/index-DawJb02s.css +1 -0
- package/dist/assets/index-DfFR6NLf.js +1 -0
- package/dist/assets/index-DwVgMO8e.js +1 -0
- package/dist/assets/index-GDP-IkXE.css +1 -0
- package/dist/assets/index-Iaz1ZzPC.js +2 -0
- package/dist/assets/index-PfV8pzQz.css +1 -0
- package/dist/assets/index-Swfu6yvD.css +1 -0
- package/dist/assets/index-Te8_PRgJ.js +1 -0
- package/dist/assets/index-WyZ91RLx.css +1 -0
- package/dist/assets/index-tFYRoFdE.js +1 -0
- package/dist/assets/vendor-42ANG6Sg.js +6 -0
- package/dist/assets/vite-Dw-pgLOX.js +1 -0
- package/dist/assets/vue-vendor-Br-l7wbK.js +29 -0
- package/dist/assets/xto-base-C-IBqjVs.js +1 -0
- package/dist/assets/xto-base-C6eqMPdO.css +1 -0
- package/dist/assets/xto-business--V1F5Gwb.css +1 -0
- package/dist/assets/xto-core-DZK7Cyg0.js +1 -0
- package/dist/assets/xto-data-BFpiDgJi.js +1 -0
- package/dist/assets/xto-data-CnAQAQH2.css +1 -0
- package/dist/assets/xto-feedback-B7ipsTfz.js +1 -0
- package/dist/assets/xto-feedback-DBwJzoTj.css +1 -0
- package/dist/assets/xto-form-CrsyAjyr.css +1 -0
- package/dist/assets/xto-form-NRjKKNcY.js +1 -0
- package/dist/assets/xto-layout-BqU8RuWL.css +1 -0
- package/dist/assets/xto-navigation-BiSaXPfr.js +1 -0
- package/dist/assets/xto-navigation-C1cnSL2E.css +1 -0
- package/dist/assets/xto-navigation-CBPg4dCc.css +1 -0
- package/dist/assets/xto-navigation-CKabFu9d.js +1 -0
- package/dist/index-54irhCHL.js +1830 -0
- package/dist/{index-15Bu0M8D.js → index-BzRf1eoJ.js} +1 -1
- package/dist/{index-BO2Zf9u6.js → index-DH4aoCZb.js} +1 -1
- package/dist/{index-BBqvHkzE.js → index-Kqa7iZ9E.js} +1 -1
- package/dist/{index-BQqo0ZIb.js → index-pxkZlvBw.js} +1 -1
- package/dist/index.es.js +1 -1
- package/dist/index.html +28 -0
- package/dist/index.umd.js +1 -1
- package/dist/style.css +1 -1
- package/package.json +85 -86
- package/src/api/auth.ts +25 -25
- package/src/api/system.ts +66 -66
- package/src/assets/styles/_dark.scss +406 -406
- package/src/components/Layout/Header.vue +973 -973
- package/src/components/Layout/Sidebar.vue +273 -212
- package/src/components/Layout/index.vue +443 -63
- package/src/composables/useApp.ts +61 -61
- package/src/composables/useAuth.ts +16 -16
- package/src/directives/permission.ts +27 -27
- package/src/env.d.ts +18 -18
- package/src/index.ts +47 -47
- package/src/router/dynamicRoutes.ts +162 -162
- package/src/router/guards.ts +128 -128
- package/src/router/index.ts +79 -79
- package/src/stores/auth.ts +65 -65
- package/src/stores/menu.ts +48 -48
- package/src/stores/user.ts +50 -50
- package/src/types/api.d.ts +80 -80
- package/src/utils/auth.ts +99 -99
- package/src/utils/config.ts +80 -80
- package/src/utils/permission.ts +32 -32
- package/src/utils/request.ts +124 -124
- package/src/views/login/index.vue +194 -188
- package/vite.config.ts +135 -135
- package/dist/index-B3PLzNB0.js +0 -345
- package/dist/index-B6DTsC6l.js +0 -1715
- package/dist/index-B7etKk33.js +0 -372
- package/dist/index-B7mpL6Zf.js +0 -475
- package/dist/index-BC2PGkkJ.js +0 -1644
- package/dist/index-BGgbfcmf.js +0 -475
- package/dist/index-BGmUwemj.js +0 -372
- package/dist/index-BQFfQj5Q.js +0 -142
- package/dist/index-BkRneTya.js +0 -142
- package/dist/index-BlRrngsc.js +0 -475
- package/dist/index-BmVvM7sm.js +0 -345
- package/dist/index-Bn4ThpX9.js +0 -142
- package/dist/index-BwfjwDKr.js +0 -1477
- package/dist/index-BxIL2hrt.js +0 -475
- package/dist/index-C-3fhbN2.js +0 -1644
- package/dist/index-C0VN9nFF.js +0 -142
- package/dist/index-C0xyGOsz.js +0 -475
- package/dist/index-C3c8NAZq.js +0 -1477
- package/dist/index-C42VtP71.js +0 -142
- package/dist/index-C6Nm0r9k.js +0 -475
- package/dist/index-C6w0-8xN.js +0 -1648
- package/dist/index-CD364XjV.js +0 -142
- package/dist/index-CHww99-i.js +0 -345
- package/dist/index-CIgWYERJ.js +0 -1644
- package/dist/index-CTs6DTuQ.js +0 -345
- package/dist/index-CWRs4WMN.js +0 -372
- package/dist/index-Cb-SxHJp.js +0 -345
- package/dist/index-CeCysOnl.js +0 -345
- package/dist/index-Cg1UpC8D.js +0 -1644
- package/dist/index-Cgkqpyx2.js +0 -345
- package/dist/index-CiuDEfo-.js +0 -142
- package/dist/index-CmQfZC8r.js +0 -372
- package/dist/index-CmkjhpX_.js +0 -475
- package/dist/index-CpxpXTQX.js +0 -1462
- package/dist/index-CqXFk_ET.js +0 -345
- package/dist/index-Cqix1YLE.js +0 -1697
- package/dist/index-CtvB5J9E.js +0 -372
- package/dist/index-Cu3Z2-PY.js +0 -345
- package/dist/index-CvDxK7Ab.js +0 -372
- package/dist/index-D-FER0vJ.js +0 -372
- package/dist/index-D2fQ8TK8.js +0 -475
- package/dist/index-D3xVcFvg.js +0 -372
- package/dist/index-D4crnrO6.js +0 -142
- package/dist/index-D7EzwTM5.js +0 -372
- package/dist/index-D7TZamyY.js +0 -1664
- package/dist/index-D88fiqXR.js +0 -475
- package/dist/index-DEbpF-M4.js +0 -1457
- package/dist/index-DFXuyPge.js +0 -1627
- package/dist/index-DLgimJYb.js +0 -1667
- package/dist/index-DPEVEyik.js +0 -475
- package/dist/index-DWy_UGhI.js +0 -345
- package/dist/index-DYVtddfw.js +0 -142
- package/dist/index-DYnXaqYf.js +0 -142
- package/dist/index-DcvRPHuy.js +0 -372
- package/dist/index-DdC1uV2v.js +0 -1700
- package/dist/index-Dga14ZN7.js +0 -1774
- package/dist/index-Dk2V44uP.js +0 -372
- package/dist/index-DnJ481u1.js +0 -475
- package/dist/index-Do1CBqg8.js +0 -345
- package/dist/index-DqQRSPeF.js +0 -345
- package/dist/index-Jb4VMHIS.js +0 -142
- package/dist/index-MC3wWjNt.js +0 -475
- package/dist/index-MG0JePmx.js +0 -142
- package/dist/index-PRFGBLWt.js +0 -475
- package/dist/index-QgkT42dc.js +0 -372
- package/dist/index-TrLCW5xL.js +0 -372
- package/dist/index-YDlNLFVk.js +0 -142
- package/dist/index-ZAJgA3XD.js +0 -475
- package/dist/index-a_ilWAvi.js +0 -345
- package/dist/index-bi1TMGid.js +0 -372
- package/dist/index-fyarVCog.js +0 -475
- package/dist/index-mnTZtPFa.js +0 -345
- package/dist/index-orZCyV6I.js +0 -345
- package/dist/index-p3TbK44c.js +0 -142
- package/dist/index-sRwZYbZ4.js +0 -372
- package/dist/index-wATqKEcF.js +0 -142
- package/dist/setup.d.ts +0 -17
|
@@ -3,7 +3,7 @@ import { Form as T, FormItem as m, Input as b, Select as W, Switch as _ } from "
|
|
|
3
3
|
import { Card as w, Tag as X, Pagination as Y } from "@xto/data";
|
|
4
4
|
import { Popconfirm as Z, Modal as ee, Message as C } from "@xto/feedback";
|
|
5
5
|
import { Space as L, Button as g } from "@xto/base";
|
|
6
|
-
import { S as d, a as le, _ as te } from "./index-
|
|
6
|
+
import { S as d, a as le, _ as te } from "./index-54irhCHL.js";
|
|
7
7
|
const ae = { class: "user-page" }, ne = { class: "toolbar" }, ue = { class: "data-table" }, oe = { key: 0 }, se = { key: 1 }, de = { class: "pagination-wrapper" }, ie = /* @__PURE__ */ K({
|
|
8
8
|
__name: "index",
|
|
9
9
|
setup(re) {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { defineComponent as g, ref as r, resolveComponent as x, openBlock as o, createElementBlock as c, createElementVNode as s, Fragment as d, renderList as m, createBlock as u, unref as l, withCtx as i, normalizeStyle as p, toDisplayString as a, createVNode as n, createTextVNode as q } from "vue";
|
|
2
2
|
import { Card as _, Tag as C, Progress as y } from "@xto/data";
|
|
3
|
-
import { _ as V } from "./index-
|
|
3
|
+
import { _ as V } from "./index-54irhCHL.js";
|
|
4
4
|
const B = { class: "dashboard" }, L = { class: "dashboard__stats" }, N = { class: "stat-card__content" }, S = { class: "stat-card__info" }, w = { class: "stat-card__title" }, z = { class: "dashboard__main" }, E = { class: "quick-links" }, I = { class: "quick-link__icon" }, T = { class: "quick-link__title" }, D = { class: "activity-list" }, F = { class: "activity-item__action" }, P = { class: "activity-item__time" }, U = { class: "system-info" }, j = { class: "system-info__item" }, A = { class: "system-info__item" }, G = /* @__PURE__ */ g({
|
|
5
5
|
__name: "index",
|
|
6
6
|
setup(H) {
|
|
@@ -3,7 +3,7 @@ import { Form as q, FormItem as p, Input as v, Select as F, InputNumber as j, Sw
|
|
|
3
3
|
import { Card as G, Tag as c } from "@xto/data";
|
|
4
4
|
import { Modal as H, Message as J } from "@xto/feedback";
|
|
5
5
|
import { Button as E, Space as D } from "@xto/base";
|
|
6
|
-
import { S as r, M as u, b as K, _ as P } from "./index-
|
|
6
|
+
import { S as r, M as u, b as K, _ as P } from "./index-54irhCHL.js";
|
|
7
7
|
const Q = { class: "menu-page" }, W = { class: "toolbar" }, X = { class: "menu-tree" }, Z = { class: "tree-table" }, ee = { class: "tree-row tree-row--level-0" }, te = ["onClick"], le = ["onClick"], ae = /* @__PURE__ */ O({
|
|
8
8
|
__name: "index",
|
|
9
9
|
setup(ne) {
|
|
@@ -3,7 +3,7 @@ import { Form as N, FormItem as f, Input as E, Select as Q, Switch as W } from "
|
|
|
3
3
|
import { Card as x, Tag as A, Pagination as X } from "@xto/data";
|
|
4
4
|
import { Popconfirm as Y, Modal as Z, Message as U } from "@xto/feedback";
|
|
5
5
|
import { Space as S, Button as v } from "@xto/base";
|
|
6
|
-
import { S as r, a as h, _ as ee } from "./index-
|
|
6
|
+
import { S as r, a as h, _ as ee } from "./index-54irhCHL.js";
|
|
7
7
|
const le = { class: "role-page" }, te = { class: "toolbar" }, ae = { class: "data-table" }, oe = { key: 0 }, se = { key: 1 }, ne = { class: "pagination-wrapper" }, de = /* @__PURE__ */ j({
|
|
8
8
|
__name: "index",
|
|
9
9
|
setup(ue) {
|
package/dist/index.es.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { F as s, c as t, G as o, d as r, e as u, H as n, L as i, i as p, M as l, b as d, f as T, g, h as R, S as k, a as c, j as h, T as f, k as S, l as U, m, n as y, o as M, p as x, q as A, r as b, s as D, t as L, u as C, v as F, w as G, x as I, y as E, z as O, A as v, B as w, C as P, D as j, E as q, I as B, J as H, K as N, N as z, O as J, P as K, Q, R as V, U as W, V as X, W as Y, X as Z, Y as $, Z as _, $ as ee, a0 as ae, a1 as se, a2 as te, a3 as oe, a4 as re, a5 as ue, a6 as ne, a7 as ie, a8 as pe, a9 as le, aa as de, ab as Te, ac as ge, ad as Re, ae as ke, af as ce, ag as he, ah as fe, ai as Se, aj as Ue, ak as me, al as ye, am as Me, an as xe, ao as Ae, ap as be, aq as De, ar as Le, as as Ce, at as Fe, au as Ge, av as Ie, aw as Ee, ax as Oe, ay as ve } from "./index-
|
|
1
|
+
import { F as s, c as t, G as o, d as r, e as u, H as n, L as i, i as p, M as l, b as d, f as T, g, h as R, S as k, a as c, j as h, T as f, k as S, l as U, m, n as y, o as M, p as x, q as A, r as b, s as D, t as L, u as C, v as F, w as G, x as I, y as E, z as O, A as v, B as w, C as P, D as j, E as q, I as B, J as H, K as N, N as z, O as J, P as K, Q, R as V, U as W, V as X, W as Y, X as Z, Y as $, Z as _, $ as ee, a0 as ae, a1 as se, a2 as te, a3 as oe, a4 as re, a5 as ue, a6 as ne, a7 as ie, a8 as pe, a9 as le, aa as de, ab as Te, ac as ge, ad as Re, ae as ke, af as ce, ag as he, ah as fe, ai as Se, aj as Ue, ak as me, al as ye, am as Me, an as xe, ao as Ae, ap as be, aq as De, ar as Le, as as Ce, at as Fe, au as Ge, av as Ie, aw as Ee, ax as Oe, ay as ve } from "./index-54irhCHL.js";
|
|
2
2
|
export {
|
|
3
3
|
s as Footer,
|
|
4
4
|
t as Forbidden,
|
package/dist/index.html
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="zh-CN">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="UTF-8" />
|
|
5
|
+
<link rel="icon" type="image/svg+xml" href="/vite.svg" />
|
|
6
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
7
|
+
<title>Xto Demo - 后台管理系统</title>
|
|
8
|
+
<script type="module" crossorigin src="/assets/index-1juADvYN.js"></script>
|
|
9
|
+
<link rel="modulepreload" crossorigin href="/assets/vue-vendor-Br-l7wbK.js">
|
|
10
|
+
<link rel="modulepreload" crossorigin href="/assets/xto-core-DZK7Cyg0.js">
|
|
11
|
+
<link rel="modulepreload" crossorigin href="/assets/xto-base-C-IBqjVs.js">
|
|
12
|
+
<link rel="modulepreload" crossorigin href="/assets/xto-form-NRjKKNcY.js">
|
|
13
|
+
<link rel="modulepreload" crossorigin href="/assets/xto-data-BFpiDgJi.js">
|
|
14
|
+
<link rel="modulepreload" crossorigin href="/assets/xto-feedback-B7ipsTfz.js">
|
|
15
|
+
<link rel="modulepreload" crossorigin href="/assets/xto-navigation-BiSaXPfr.js">
|
|
16
|
+
<link rel="stylesheet" crossorigin href="/assets/xto-base-C6eqMPdO.css">
|
|
17
|
+
<link rel="stylesheet" crossorigin href="/assets/xto-form-CrsyAjyr.css">
|
|
18
|
+
<link rel="stylesheet" crossorigin href="/assets/xto-data-CnAQAQH2.css">
|
|
19
|
+
<link rel="stylesheet" crossorigin href="/assets/xto-feedback-DBwJzoTj.css">
|
|
20
|
+
<link rel="stylesheet" crossorigin href="/assets/xto-navigation-C1cnSL2E.css">
|
|
21
|
+
<link rel="stylesheet" crossorigin href="/assets/index-BZA0ksjx.css">
|
|
22
|
+
<link rel="stylesheet" crossorigin href="/assets/xto-layout-BqU8RuWL.css">
|
|
23
|
+
<link rel="stylesheet" crossorigin href="/assets/xto-business--V1F5Gwb.css">
|
|
24
|
+
</head>
|
|
25
|
+
<body>
|
|
26
|
+
<div id="app"></div>
|
|
27
|
+
</body>
|
|
28
|
+
</html>
|
package/dist/index.umd.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(n,e){typeof exports=="object"&&typeof module<"u"?e(exports,require("vue"),require("pinia"),require("vue-router"),require("@xto/navigation"),require("@xto/base"),require("@xto/feedback"),require("@xto/form"),require("axios"),require("@xto/data")):typeof define=="function"&&define.amd?define(["exports","vue","pinia","vue-router","@xto/navigation","@xto/base","@xto/feedback","@xto/form","axios","@xto/data"],e):(n=typeof globalThis<"u"?globalThis:n||self,e(n.XtoFronted={},n.Vue,n.Pinia,n.VueRouter,n.navigation,n.base,n.feedback,n.form,n.axios,n.data))})(this,function(n,e,v,A,j,E,$,h,ot,L){"use strict";const W="xto_",Se=t=>({get(o){const l=t.getItem(W+o);if(!l)return null;try{return JSON.parse(l)}catch{return l}},set(o,l){if(l==null){t.removeItem(W+o);return}const i=typeof l=="string"?l:JSON.stringify(l);t.setItem(W+o,i)},remove(o){t.removeItem(W+o)},clear(){Object.keys(t).forEach(l=>{l.startsWith(W)&&t.removeItem(l)})}}),H=Se(window.localStorage),X=Se(window.sessionStorage),k={get:H.get,set:H.set,remove:H.remove,clear:H.clear},lt={get:X.get,set:X.set,remove:X.remove,clear:X.clear},q=v.defineStore("app",()=>{const t=e.ref(k.get("appName")||"XTO App"),o=e.ref(k.get("indexPath")||"/dashboard"),l=e.ref(k.get("isDark")||!1),i=e.ref(k.get("theme")||"light"),c=e.ref(k.get("layout")||"sidebar"),r=e.ref(k.get("isCollapsed")||!1),m=e.ref(k.get("showTabs")??!0),a=e.ref(k.get("showFooter")??!0),V=e.ref(k.get("showBreadcrumb")??!0),g=e.ref(k.get("primaryColor")||"#409eff"),d=e.ref([]),N=e.computed(()=>l.value?"dark":"light"),y=I=>{t.value=I,k.set("appName",I)},x=I=>{o.value=I,k.set("indexPath",I)},b=()=>{l.value=!l.value,i.value=l.value?"dark":"light",u()},p=I=>{i.value=I,l.value=I==="dark",u()},u=()=>{const I=document.documentElement;l.value?I.classList.add("dark"):I.classList.remove("dark"),k.set("isDark",l.value),k.set("theme",i.value)},C=()=>{r.value=!r.value,k.set("isCollapsed",r.value)},R=I=>{c.value=I,k.set("layout",I)},P=()=>{m.value=!m.value,k.set("showTabs",m.value)},U=()=>{a.value=!a.value,k.set("showFooter",a.value)},f=()=>{V.value=!V.value,k.set("showBreadcrumb",V.value)},s=I=>{g.value=I,document.documentElement.style.setProperty("--color-primary",I),k.set("primaryColor",I)},w=I=>{d.value.includes(I)||d.value.push(I)},O=I=>{const ae=d.value.indexOf(I);ae>-1&&d.value.splice(ae,1)},Ce=()=>{d.value=[]},we=()=>{u(),g.value!=="#409eff"&&document.documentElement.style.setProperty("--color-primary",g.value)};return e.watch(l,u),{appName:t,indexPath:o,isDark:l,theme:i,layout:c,isCollapsed:r,showTabs:m,showFooter:a,showBreadcrumb:V,primaryColor:g,cachedViews:d,themeClass:N,setAppName:y,setIndexPath:x,toggleTheme:b,toggleCollapse:C,setTheme:p,setLayout:R,toggleTabs:P,toggleFooter:U,toggleBreadcrumb:f,setPrimaryColor:s,addCachedView:w,removeCachedView:O,clearCachedViews:Ce,initTheme:we}}),be="/vite.svg",re="menu_list",at={menuCode:"home",menuName:"首页",menuUrl:"/dashboard",icon:"home",closable:!1,isDefault:!1,isOut:!1},G=v.defineStore("menu",()=>{const t=e.ref(k.get(re)||[]),o=e.computed(()=>t.value.length>0);return{menuList:t,hasMenu:o,setMenuList:c=>{t.value=[at,...c],k.set(re,t.value)},clearMenu:()=>{t.value=[],k.remove(re)}}}),se="user_info",z=v.defineStore("user",()=>{const t=e.ref(k.get(se)),o=e.computed(()=>!!t.value),l=e.computed(()=>{var N;return((N=t.value)==null?void 0:N.userId)||""}),i=e.computed(()=>{var N;return((N=t.value)==null?void 0:N.userName)||""}),c=e.computed(()=>{var N;return((N=t.value)==null?void 0:N.departmentName)||""}),r=e.computed(()=>{var N;return((N=t.value)==null?void 0:N.email)||""}),m=e.computed(()=>{var N;return((N=t.value)==null?void 0:N.mobilePhone)||""}),a=e.computed(()=>{var N;return((N=t.value)==null?void 0:N.positionName)||""}),V=e.computed(()=>{var N;return((N=t.value)==null?void 0:N.avatar)||""});return{userInfo:t,isLoggedIn:o,userId:l,userName:i,departmentName:c,email:r,mobilePhone:m,positionName:a,avatar:V,setUserInfo:N=>{t.value=N,k.set(se,N)},clearUserInfo:()=>{t.value=null,k.remove(se)}}}),ie="token",de="token_type",ce="refresh_token",me="expires_time",pe="refresh_time",ue="code",J=()=>k.get(ie),xe=t=>{k.set(ie,t)},Ie=()=>k.get(de),Te=t=>{k.set(de,t)},rt=()=>k.get(ce),De=t=>{k.set(ce,t)},Le=()=>k.get(me),$e=t=>{k.set(me,t)},st=()=>k.get(pe),Ue=t=>{k.set(pe,t)},it=()=>k.get(ue),Me=t=>{k.set(ue,t)},fe=t=>{xe(t.access_token),Te(t.token_type||"Bearer"),De(t.refresh_token),$e(t.expires_time),Ue(t.refresh_time),t.code&&Me(t.code)},he=()=>{k.remove(ie),k.remove(de),k.remove(ce),k.remove(me),k.remove(pe),k.remove(ue)},Ae=()=>{const t=Le();return t?Date.now()>t:!0},Ve=()=>!!J()&&!Ae(),ee=v.defineStore("auth",()=>{const t=e.ref(J()),o=e.computed(()=>Ve()),l=e.ref(""),i=e.ref(""),c=e.ref(""),r=e.ref("/login");return{token:t,isLoggedIn:o,baseUrl:l,appId:i,clientId:c,loginPath:r,login:y=>{t.value=y.access_token,fe(y)},logout:()=>{t.value=null,he()},setBaseUrl:y=>{l.value=y},setAppId:y=>{i.value=y},setClientId:y=>{c.value=y},setLoginPath:y=>{r.value=y}}}),dt={class:"sidebar__logo"},ct={key:0,class:"sidebar__user"},mt={class:"sidebar__user-info"},pt={class:"sidebar__user-name"},ut={class:"sidebar__user-role"},ft=e.defineComponent({__name:"Sidebar",setup(t){const o=A.useRoute(),l=A.useRouter(),i=G(),c=z(),r=ee(),m=q(),a=e.computed(()=>m.isCollapsed),V=e.computed(()=>o.path),g=e.computed(()=>m.isDark?"#1d1e1f":"#fff"),d=e.computed(()=>m.isDark?"#cfd3dc":"#303133"),N=e.computed(()=>"#409eff"),y=p=>{p&&p!==o.path&&l.push(p)},x=()=>{r.logout(),c.clearUserInfo(),i.clearMenu(),l.push("/login")},b=p=>{if(!p||p==="")return"folder";if(p.startsWith("tineco-icon-")){const C=p.replace("tineco-icon-","");return{home:"home",dashboard:"dashboard",system:"system",user:"user",role:"role",menu:"list",setting:"setting",file:"file",folder:"folder",chart:"chart",report:"report",analytics:"analytics"}[C]||C}return{dashboard:"dashboard",system:"system",user:"user",role:"role",menu:"list",setting:"setting",home:"home",chart:"chart",report:"report",analytics:"analytics",permission:"permission",log:"log",notification:"notification",app:"app",list:"list",grid:"grid"}[p]||p};return(p,u)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["sidebar",{"sidebar--collapsed":a.value}])},[e.createElementVNode("div",dt,[u[0]||(u[0]=e.createElementVNode("img",{src:be,alt:"Logo",class:"sidebar__logo-img"},null,-1)),e.withDirectives(e.createElementVNode("span",{class:"sidebar__logo-text"},e.toDisplayString(e.unref(m).appName),513),[[e.vShow,!a.value]])]),e.createVNode(e.unref(j.Menu),{"default-active":V.value,mode:"vertical",collapse:a.value,"collapse-transition":!1,"background-color":g.value,"text-color":d.value,"active-text-color":N.value,class:"sidebar__menu",onSelect:y},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(i).menuList,C=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:C.menuUrl},[C.children&&C.children.length>0?(e.openBlock(),e.createBlock(e.unref(j.SubMenu),{key:0,index:C.menuUrl},{title:e.withCtx(()=>[e.createVNode(e.unref(E.Icon),{name:b(C.icon),size:16},null,8,["name"]),e.createElementVNode("span",null,e.toDisplayString(C.menuName),1)]),default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(C.children,R=>(e.openBlock(),e.createBlock(e.unref(j.MenuItem),{key:R.menuUrl,index:R.menuUrl},{default:e.withCtx(()=>[e.createVNode(e.unref(E.Icon),{name:b(R.icon),size:16},null,8,["name"]),e.createElementVNode("span",null,e.toDisplayString(R.menuName),1)]),_:2},1032,["index"]))),128))]),_:2},1032,["index"])):(e.openBlock(),e.createBlock(e.unref(j.MenuItem),{key:1,index:C.menuUrl},{default:e.withCtx(()=>[e.createVNode(e.unref(E.Icon),{name:b(C.icon),size:16},null,8,["name"]),e.createElementVNode("span",null,e.toDisplayString(C.menuName),1)]),_:2},1032,["index"]))],64))),128))]),_:1},8,["default-active","collapse","background-color","text-color","active-text-color"]),a.value?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("div",ct,[e.createElementVNode("div",mt,[e.createElementVNode("span",pt,e.toDisplayString(e.unref(c).userName),1),e.createElementVNode("span",ut,e.toDisplayString(e.unref(c).departmentName),1)]),e.createVNode(e.unref(E.Button),{type:"text",size:"small",onClick:x},{default:e.withCtx(()=>[...u[1]||(u[1]=[e.createTextVNode("退出",-1)])]),_:1})]))],2))}}),F=(t,o)=>{const l=t.__vccOpts||t;for(const[i,c]of o)l[i]=c;return l},Re=F(ft,[["__scopeId","data-v-556a489e"]]),ht={class:"header"},Vt={class:"header__left"},Nt={key:0,class:"header__breadcrumb"},gt={key:0,class:"breadcrumb-separator"},_t={class:"header__right"},Et=["title"],yt={class:"header__avatar"},kt={class:"header__user-name"},Ct={key:0,class:"header__dropdown"},wt={class:"header__dropdown-header"},Bt={class:"header__dropdown-avatar"},St={class:"header__dropdown-info"},bt={class:"header__dropdown-name"},xt={class:"header__dropdown-role"},It={class:"header__dropdown-menu"},Tt={class:"search-container"},Dt={class:"search-input-wrapper"},Lt={key:0,class:"search-results"},$t=["onClick"],Ut={class:"search-result-info"},Mt={class:"search-result-title"},At={key:0,class:"search-result-parent"},Rt={key:1,class:"search-empty"},Ft={class:"settings-drawer"},zt={class:"settings-section"},Pt={class:"settings-layout-options"},Ot=["onClick"],qt={class:"layout-option__preview"},jt={key:0,class:"layout-preview-sidebar"},Kt={key:1,class:"layout-preview-top"},Yt={key:2,class:"layout-preview-mix"},Wt={class:"layout-option__label"},Ht={class:"settings-section"},Xt={class:"settings-color-options"},Gt=["title","onClick"],Jt={class:"settings-section"},Qt={class:"settings-switch-list"},Zt={class:"settings-switch-item"},vt={class:"settings-switch-item"},Fe=F(e.defineComponent({__name:"Header",setup(t){const o=A.useRoute(),l=A.useRouter(),i=q(),c=z(),r=ee(),m=G(),a=e.ref(!1),V=e.ref(!1),g=e.ref(null),d=e.ref(!1),N=e.ref(!1),y=e.ref(""),x=e.ref(null),b=e.ref(!1),p=[{value:"sidebar",label:"左侧菜单",icon:"sidebar-left"},{value:"top",label:"顶部菜单",icon:"menu"},{value:"mix",label:"混合菜单",icon:"grid"}],u=[{value:"#409eff",label:"默认蓝"},{value:"#1890ff",label:"科技蓝"},{value:"#52c41a",label:"极光绿"},{value:"#faad14",label:"日落橙"},{value:"#f5222d",label:"薄暮红"},{value:"#722ed1",label:"酱紫"}],C=e.computed(()=>o.matched.filter(_=>_.meta&&_.meta.title).map(_=>({title:_.meta.title,path:_.path}))),R=(D,_="")=>{const K=[];return D.forEach(B=>{B.children&&B.children.length>0?K.push(...R(B.children,B.title)):K.push({...B,parentTitle:_})}),K},P=e.computed(()=>y.value.trim()?R(m.menuList).filter(_=>_.title.toLowerCase().includes(y.value.toLowerCase())):[]),U=e.computed(()=>i.layout),f=()=>{i.toggleCollapse()},s=()=>{i.toggleTheme()},w=()=>{V.value=!0},O=D=>{i.setLayout(D)},Ce=D=>{b.value=D;const _=document.documentElement;D?_.classList.add("grey-mode"):_.classList.remove("grey-mode")},we=()=>{document.fullscreenElement?document.exitFullscreen():document.documentElement.requestFullscreen()},I=()=>{d.value=!!document.fullscreenElement},ae=()=>{a.value=!a.value},Z=()=>{a.value=!1},ve=()=>{N.value=!0},Be=()=>{N.value=!1,y.value=""},et=D=>{l.push(D),Be()},Wo=D=>{i.setPrimaryColor(D)},Ho=()=>{Z(),l.push("/profile")},Xo=()=>{Z(),l.push("/change-password")},Go=()=>{Z(),r.logout(),c.clearUserInfo(),m.clearMenu(),l.push("/login")},tt=D=>{g.value&&!g.value.contains(D.target)&&Z(),x.value&&!x.value.contains(D.target)&&Be()},nt=D=>{D.key==="Escape"&&(Be(),Z()),(D.ctrlKey||D.metaKey)&&D.key==="k"&&(D.preventDefault(),ve())};return e.onMounted(()=>{document.addEventListener("click",tt),document.addEventListener("fullscreenchange",I),document.addEventListener("keydown",nt),i.initTheme(),b.value=document.documentElement.classList.contains("grey-mode")}),e.onUnmounted(()=>{document.removeEventListener("click",tt),document.removeEventListener("fullscreenchange",I),document.removeEventListener("keydown",nt)}),(D,_)=>{var K;return e.openBlock(),e.createElementBlock("div",ht,[e.createElementVNode("div",Vt,[e.createElementVNode("div",{class:"header__collapse",onClick:f},[e.createVNode(e.unref(E.Icon),{name:e.unref(i).isCollapsed?"menu-unfold":"menu-fold",size:18},null,8,["name"])]),e.unref(i).showBreadcrumb?(e.openBlock(),e.createElementBlock("div",Nt,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(C.value,(B,Y)=>(e.openBlock(),e.createElementBlock("span",{key:B.path},[Y>0?(e.openBlock(),e.createElementBlock("span",gt,"/")):e.createCommentVNode("",!0),e.createElementVNode("span",{class:e.normalizeClass({"is-current":Y===C.value.length-1})},e.toDisplayString(B.title),3)]))),128))])):e.createCommentVNode("",!0)]),e.createElementVNode("div",_t,[e.createElementVNode("div",{class:"header__action",onClick:ve,title:"搜索 (Ctrl+K)"},[e.createVNode(e.unref(E.Icon),{name:"search",size:16})]),e.createElementVNode("div",{class:"header__action",onClick:we,title:d.value?"退出全屏":"全屏"},[e.createVNode(e.unref(E.Icon),{name:d.value?"fullscreen-exit":"fullscreen",size:16},null,8,["name"])],8,Et),e.createElementVNode("div",{class:"header__action",onClick:w,title:"换肤设置"},[e.createVNode(e.unref(E.Icon),{name:"setting",size:16})]),e.createElementVNode("div",{class:"header__action",onClick:s,title:"切换主题"},[e.createVNode(e.unref(E.Icon),{name:e.unref(i).isDark?"sun":"moon",size:16},null,8,["name"])]),e.createElementVNode("div",{class:"header__user",ref_key:"dropdownRef",ref:g},[e.createElementVNode("div",{class:"header__user-trigger",onClick:e.withModifiers(ae,["stop"])},[e.createElementVNode("div",yt,[e.createElementVNode("span",null,e.toDisplayString(((K=e.unref(c).userName)==null?void 0:K.charAt(0))||"U"),1)]),e.createElementVNode("span",kt,e.toDisplayString(e.unref(c).userName),1),e.createElementVNode("span",{class:e.normalizeClass(["header__user-arrow",{"is-active":a.value}])},"▼",2)]),e.createVNode(e.Transition,{name:"dropdown"},{default:e.withCtx(()=>{var B;return[a.value?(e.openBlock(),e.createElementBlock("div",Ct,[e.createElementVNode("div",wt,[e.createElementVNode("div",Bt,[e.createElementVNode("span",null,e.toDisplayString(((B=e.unref(c).userName)==null?void 0:B.charAt(0))||"U"),1)]),e.createElementVNode("div",St,[e.createElementVNode("div",bt,e.toDisplayString(e.unref(c).userName),1),e.createElementVNode("div",xt,e.toDisplayString(e.unref(c).departmentName),1)])]),_[8]||(_[8]=e.createElementVNode("div",{class:"header__dropdown-divider"},null,-1)),e.createElementVNode("div",It,[e.createElementVNode("div",{class:"header__dropdown-item",onClick:Ho},[e.createVNode(e.unref(E.Icon),{name:"user",size:16}),_[4]||(_[4]=e.createElementVNode("span",null,"个人信息",-1))]),e.createElementVNode("div",{class:"header__dropdown-item",onClick:Xo},[e.createVNode(e.unref(E.Icon),{name:"lock",size:16}),_[5]||(_[5]=e.createElementVNode("span",null,"修改密码",-1))]),_[7]||(_[7]=e.createElementVNode("div",{class:"header__dropdown-divider"},null,-1)),e.createElementVNode("div",{class:"header__dropdown-item header__dropdown-item--danger",onClick:Go},[e.createVNode(e.unref(E.Icon),{name:"logout",size:16}),_[6]||(_[6]=e.createElementVNode("span",null,"退出登录",-1))])])])):e.createCommentVNode("",!0)]}),_:1})],512)]),e.createVNode(e.Transition,{name:"search"},{default:e.withCtx(()=>[N.value?(e.openBlock(),e.createElementBlock("div",{key:0,class:"header__search-modal",ref_key:"searchRef",ref:x},[e.createElementVNode("div",Tt,[e.createElementVNode("div",Dt,[e.createVNode(e.unref(E.Icon),{class:"search-icon",name:"search",size:20}),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":_[0]||(_[0]=B=>y.value=B),type:"text",class:"search-input",placeholder:"搜索菜单...",autofocus:"",onKeyup:_[1]||(_[1]=e.withKeys(B=>P.value[0]&&et(P.value[0].path),["enter"]))},null,544),[[e.vModelText,y.value]]),_[9]||(_[9]=e.createElementVNode("span",{class:"search-shortcut"},"ESC 关闭",-1))]),P.value.length>0?(e.openBlock(),e.createElementBlock("div",Lt,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(P.value,(B,Y)=>(e.openBlock(),e.createElementBlock("div",{key:B.path,class:e.normalizeClass(["search-result-item",{"is-first":Y===0}]),onClick:ml=>et(B.path)},[e.createVNode(e.unref(E.Icon),{class:"search-result-icon",name:B.icon||"file",size:20},null,8,["name"]),e.createElementVNode("div",Ut,[e.createElementVNode("span",Mt,e.toDisplayString(B.title),1),B.parentTitle?(e.openBlock(),e.createElementBlock("span",At,e.toDisplayString(B.parentTitle),1)):e.createCommentVNode("",!0)])],10,$t))),128))])):y.value?(e.openBlock(),e.createElementBlock("div",Rt," 未找到匹配的菜单 ")):e.createCommentVNode("",!0)])],512)):e.createCommentVNode("",!0)]),_:1}),e.createVNode(e.unref($.Drawer),{modelValue:V.value,"onUpdate:modelValue":_[3]||(_[3]=B=>V.value=B),title:"换肤设置",direction:"rtl",size:"320px"},{default:e.withCtx(()=>[e.createElementVNode("div",Ft,[e.createElementVNode("div",zt,[_[13]||(_[13]=e.createElementVNode("div",{class:"settings-title"},"布局模式",-1)),e.createElementVNode("div",Pt,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(p,B=>e.createElementVNode("div",{key:B.value,class:e.normalizeClass(["layout-option",{"is-active":U.value===B.value}]),onClick:Y=>O(B.value)},[e.createElementVNode("div",qt,[B.value==="sidebar"?(e.openBlock(),e.createElementBlock("div",jt,[..._[10]||(_[10]=[e.createElementVNode("div",{class:"preview-aside"},null,-1),e.createElementVNode("div",{class:"preview-main"},[e.createElementVNode("div",{class:"preview-header"}),e.createElementVNode("div",{class:"preview-content"})],-1)])])):B.value==="top"?(e.openBlock(),e.createElementBlock("div",Kt,[..._[11]||(_[11]=[e.createElementVNode("div",{class:"preview-header-full"},null,-1),e.createElementVNode("div",{class:"preview-content-full"},null,-1)])])):(e.openBlock(),e.createElementBlock("div",Yt,[..._[12]||(_[12]=[e.createElementVNode("div",{class:"preview-header-mix"},[e.createElementVNode("div",{class:"preview-mix-left"})],-1),e.createElementVNode("div",{class:"preview-mix-body"},[e.createElementVNode("div",{class:"preview-mix-aside"}),e.createElementVNode("div",{class:"preview-mix-content"})],-1)])]))]),e.createElementVNode("span",Wt,e.toDisplayString(B.label),1)],10,Ot)),64))])]),e.createElementVNode("div",Ht,[_[14]||(_[14]=e.createElementVNode("div",{class:"settings-title"},"主题色",-1)),e.createElementVNode("div",Xt,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(u,B=>e.createElementVNode("div",{key:B.value,class:e.normalizeClass(["color-option",{"is-active":e.unref(i).primaryColor===B.value}]),style:e.normalizeStyle({backgroundColor:B.value}),title:B.label,onClick:Y=>Wo(B.value)},[e.unref(i).primaryColor===B.value?(e.openBlock(),e.createBlock(e.unref(E.Icon),{key:0,name:"check",size:12,color:"#fff"})):e.createCommentVNode("",!0)],14,Gt)),64))])]),e.createElementVNode("div",Jt,[_[19]||(_[19]=e.createElementVNode("div",{class:"settings-title"},"功能设置",-1)),e.createElementVNode("div",Qt,[e.createElementVNode("div",Zt,[_[16]||(_[16]=e.createElementVNode("span",null,"灰色模式",-1)),e.createElementVNode("div",{class:e.normalizeClass(["switch-wrapper",{"is-checked":b.value}]),onClick:_[2]||(_[2]=B=>Ce(!b.value))},[..._[15]||(_[15]=[e.createElementVNode("span",{class:"switch-core"},null,-1)])],2)]),e.createElementVNode("div",vt,[_[18]||(_[18]=e.createElementVNode("span",null,"暗黑模式",-1)),e.createElementVNode("div",{class:e.normalizeClass(["switch-wrapper",{"is-checked":e.unref(i).isDark}]),onClick:s},[..._[17]||(_[17]=[e.createElementVNode("span",{class:"switch-core"},null,-1)])],2)])])])])]),_:1},8,["modelValue"])])}}}),[["__scopeId","data-v-de94213f"]]),en={class:"layout"},tn={class:"layout__main"},nn={class:"layout__header"},on={class:"layout__content"},Ne=F(e.defineComponent({__name:"index",setup(t){const o=q(),l=e.computed(()=>o.isCollapsed?"64px":"210px");return(i,c)=>{const r=e.resolveComponent("router-view");return e.openBlock(),e.createElementBlock("div",en,[e.createElementVNode("aside",{class:"layout__aside",style:e.normalizeStyle({width:l.value})},[e.createVNode(Re)],4),e.createElementVNode("div",tn,[e.createElementVNode("header",nn,[e.createVNode(Fe)]),e.createElementVNode("main",on,[e.createVNode(r)])])])}}}),[["__scopeId","data-v-a3110011"]]),ln=Object.freeze(Object.defineProperty({__proto__:null,default:Ne},Symbol.toStringTag,{value:"Module"})),an={class:"tabs-wrapper"},rn={class:"tab-label"},sn=["onClick"],dn=F(e.defineComponent({__name:"Tabs",setup(t){const o=A.useRoute(),l=A.useRouter(),i=e.computed(()=>{const a=[];return o.matched.forEach(V=>{var g;(g=V.meta)!=null&&g.affix&&a.push({name:V.name,title:V.meta.title,path:V.path,affix:!0})}),a}),c=e.computed(()=>o.path),r=a=>{l.push(a)},m=a=>{const V=i.value.find(g=>g.path===a);if(!(V!=null&&V.affix)&&a===c.value){const g=i.value.findIndex(N=>N.path===a),d=i.value[g-1]||i.value[g+1];d&&l.push(d.path)}};return(a,V)=>(e.openBlock(),e.createElementBlock("div",an,[e.createVNode(e.unref(j.Tabs),{modelValue:c.value,"onUpdate:modelValue":V[0]||(V[0]=g=>c.value=g),type:"card",onTabClick:r},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(i.value,g=>(e.openBlock(),e.createBlock(e.unref(j.TabPane),{key:g.path,name:g.path,label:g.title,closable:!g.affix},{label:e.withCtx(()=>[e.createElementVNode("span",rn,[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(d=>m(g.path),["stop"])}," ✕ ",8,sn))])]),_:2},1032,["name","label","closable"]))),128))]),_:1},8,["modelValue"])]))}}),[["__scopeId","data-v-9156d8cd"]]),cn={},mn={class:"footer"};function pn(t,o){return e.openBlock(),e.createElementBlock("div",mn,[...o[0]||(o[0]=[e.createElementVNode("span",null,"Copyright © 2024 Xto Demo. All Rights Reserved.",-1)])])}const un=F(cn,[["render",pn],["__scopeId","data-v-4852826a"]]),Q=(()=>{const t=ot.create({baseURL:void 0,timeout:3e4,headers:{"Content-Type":"application/json"}});return t.interceptors.request.use(o=>{const l=J(),i=Ie()||"Bearer";return l&&(o.headers.Authorization=`${i} ${l}`),o},o=>Promise.reject(o)),t.interceptors.response.use(o=>{const{data:l}=o;return l.code===200||l.code===0?l.data:($.Message.error(l.message||"请求失败"),Promise.reject(new Error(l.message||"请求失败")))},o=>{var i;const{response:l}=o;if(l)switch(l.status){case 401:$.Message.error("登录已过期,请重新登录"),he(),window.location.href="/login";break;case 403:$.Message.error("没有权限访问");break;case 404:$.Message.error("请求资源不存在");break;case 500:$.Message.error("服务器错误");break;default:$.Message.error(((i=l.data)==null?void 0:i.message)||"请求失败")}else $.Message.error("网络连接失败");return Promise.reject(o)}),t})(),T={get(t,o){return Q.get(t,o)},post(t,o,l){return Q.post(t,o,l)},put(t,o,l){return Q.put(t,o,l)},patch(t,o,l){return Q.patch(t,o,l)},delete(t,o){return Q.delete(t,o)}};function ze(t){return T.post("/user/v1.0/login/by-domain",t)}function fn(){return T.put("/user/v1.0/user/logout")}function Pe(){return T.get("/user/v1.0/user/get-me")}function hn(t){return T.post("/user/v1.0/refresh",{refreshToken:t})}const te=e.ref(""),ne=e.ref(""),oe=e.ref("");function Vn(t){t.appId&&(te.value=t.appId),t.clientId&&(ne.value=t.clientId),t.apiBaseUrl&&(oe.value=t.apiBaseUrl)}function le(){if(te.value)return te.value;try{return""}catch{return""}}function Oe(){if(ne.value)return ne.value;try{return""}catch{return""}}function Nn(){if(oe.value)return oe.value;try{return""}catch{return""}}const gn={appId:te,clientId:ne,apiBaseUrl:oe},_n={class:"login"},En={class:"login__container"},qe=F(e.defineComponent({__name:"index",setup(t){const o=A.useRouter(),l=A.useRoute(),i=e.ref(!1),c=e.ref(!1),r=e.reactive({uid:"",password:""}),m={uid:[{required:!0,message:"请输入用户名",trigger:"blur"}],password:[{required:!0,message:"请输入密码",trigger:"blur"},{min:6,message:"密码长度至少6位",trigger:"blur"}]},a=e.ref(),V=async()=>{var g;try{await((g=a.value)==null?void 0:g.validate()),i.value=!0;const d=await ze({appId:le(),clientId:Oe(),uid:r.uid,password:r.password,code:!0});fe(d),$.Message.success("登录成功");const N=l.query.redirect||"/";o.push(N)}catch(d){console.error("登录失败:",d)}finally{i.value=!1}};return(g,d)=>(e.openBlock(),e.createElementBlock("div",_n,[e.createElementVNode("div",En,[d[5]||(d[5]=e.createElementVNode("div",{class:"login__header"},[e.createElementVNode("img",{src:be,alt:"Logo",class:"login__logo"}),e.createElementVNode("h1",{class:"login__title"},"Xto Demo"),e.createElementVNode("p",{class:"login__subtitle"},"后台管理系统")],-1)),e.createVNode(e.unref(h.Form),{ref_key:"formRef",ref:a,model:r,rules:m,class:"login__form","label-width":"0"},{default:e.withCtx(()=>[e.createVNode(e.unref(h.FormItem),{prop:"uid"},{default:e.withCtx(()=>[e.createVNode(e.unref(h.Input),{modelValue:r.uid,"onUpdate:modelValue":d[0]||(d[0]=N=>r.uid=N),placeholder:"用户名","prefix-icon":"👤",size:"large"},null,8,["modelValue"])]),_:1}),e.createVNode(e.unref(h.FormItem),{prop:"password"},{default:e.withCtx(()=>[e.createVNode(e.unref(h.Input),{modelValue:r.password,"onUpdate:modelValue":d[1]||(d[1]=N=>r.password=N),type:"password",placeholder:"密码","prefix-icon":"🔒",size:"large","show-password":"",onKeyup:e.withKeys(V,["enter"])},null,8,["modelValue"])]),_:1}),e.createVNode(e.unref(h.FormItem),null,{default:e.withCtx(()=>[e.createVNode(e.unref(h.Checkbox),{modelValue:c.value,"onUpdate:modelValue":d[2]||(d[2]=N=>c.value=N)},{default:e.withCtx(()=>[...d[3]||(d[3]=[e.createTextVNode("记住我",-1)])]),_:1},8,["modelValue"])]),_:1}),e.createVNode(e.unref(h.FormItem),null,{default:e.withCtx(()=>[e.createVNode(e.unref(E.Button),{type:"primary",size:"large",loading:i.value,class:"login__submit",onClick:V},{default:e.withCtx(()=>[...d[4]||(d[4]=[e.createTextVNode(" 登录 ",-1)])]),_:1},8,["loading"])]),_:1})]),_:1},8,["model"]),d[6]||(d[6]=e.createElementVNode("div",{class:"login__footer"},[e.createElementVNode("p",null,"请输入您的用户名和密码")],-1))])]))}}),[["__scopeId","data-v-f8d69f9f"]]),yn=Object.freeze(Object.defineProperty({__proto__:null,default:qe},Symbol.toStringTag,{value:"Module"})),kn={class:"error-page"},Cn={class:"error-page__content"},je=F(e.defineComponent({__name:"404",setup(t){const o=A.useRouter(),l=()=>{o.push("/")};return(i,c)=>(e.openBlock(),e.createElementBlock("div",kn,[e.createElementVNode("div",Cn,[c[1]||(c[1]=e.createElementVNode("div",{class:"error-page__code"},"404",-1)),c[2]||(c[2]=e.createElementVNode("div",{class:"error-page__title"},"页面不存在",-1)),c[3]||(c[3]=e.createElementVNode("div",{class:"error-page__desc"},"抱歉,您访问的页面不存在或已被删除",-1)),e.createVNode(e.unref(E.Button),{type:"primary",onClick:l},{default:e.withCtx(()=>[...c[0]||(c[0]=[e.createTextVNode("返回首页",-1)])]),_:1})])]))}}),[["__scopeId","data-v-c3c12c24"]]),wn=Object.freeze(Object.defineProperty({__proto__:null,default:je},Symbol.toStringTag,{value:"Module"})),Bn={class:"error-page"},Sn={class:"error-page__content"},Ke=F(e.defineComponent({__name:"403",setup(t){const o=A.useRouter(),l=()=>{o.push("/")};return(i,c)=>(e.openBlock(),e.createElementBlock("div",Bn,[e.createElementVNode("div",Sn,[c[1]||(c[1]=e.createElementVNode("div",{class:"error-page__code"},"403",-1)),c[2]||(c[2]=e.createElementVNode("div",{class:"error-page__title"},"无访问权限",-1)),c[3]||(c[3]=e.createElementVNode("div",{class:"error-page__desc"},"抱歉,您没有权限访问此页面",-1)),e.createVNode(e.unref(E.Button),{type:"primary",onClick:l},{default:e.withCtx(()=>[...c[0]||(c[0]=[e.createTextVNode("返回首页",-1)])]),_:1})])]))}}),[["__scopeId","data-v-dd5f2795"]]),bn=Object.freeze(Object.defineProperty({__proto__:null,default:Ke},Symbol.toStringTag,{value:"Module"}));function xn(){const t=q(),o=z(),l=ee(),i=e.computed(()=>o.userName||""),c=e.computed(()=>o.userInfo),r=e.computed(()=>t.appName),m=e.computed(()=>l.isLoggedIn),a=e.computed(()=>t.isDark),V=e.computed(()=>t.theme),g=e.computed(()=>t.isCollapsed),d=e.computed(()=>t.layout);return{userName:i,userInfo:c,appName:r,isLoggedIn:m,isDark:a,theme:V,isCollapsed:g,layout:d,toggleTheme:()=>{t.toggleTheme()},toggleCollapse:()=>{t.toggleCollapse()}}}function In(){const t=z();return{isLoggedIn:e.computed(()=>t.isLoggedIn)}}function Tn(t,o={}){const{rules:l,onSubmit:i}=o,c=e.ref(),r=e.reactive({...t}),m=e.ref(!1),a=e.ref(!1),V=e.ref(!1),g=()=>{y(),V.value=!1,a.value=!0},d=b=>{Object.assign(r,b),V.value=!0,a.value=!0},N=()=>{a.value=!1,y()},y=()=>{var b;Object.keys(t).forEach(p=>{r[p]=t[p]}),(b=c.value)==null||b.resetFields()};return{formRef:c,formData:r,rules:l,loading:m,visible:a,isEdit:V,openAdd:g,openEdit:d,close:N,resetForm:y,handleSubmit:async()=>{var b;try{await((b=c.value)==null?void 0:b.validate()),m.value=!0,await(i==null?void 0:i(r)),N()}catch(p){console.error(p)}finally{m.value=!1}}}}function Dn(t){const{fetchData:o,defaultPageSize:l=10}=t,i=e.ref(!1),c=e.ref([]),r=e.ref(0),m=e.ref(1),a=e.ref(l),V=e.reactive({}),g=async()=>{i.value=!0;try{const u={...V,page:m.value,pageSize:a.value},C=await o(u);c.value=C.list,r.value=C.total}catch(u){console.error(u)}finally{i.value=!1}},d=()=>{m.value=1,g()},N=()=>{Object.keys(V).forEach(u=>{V[u]=void 0}),m.value=1,g()},y=u=>{m.value=u,g()},x=u=>{a.value=u,m.value=1,g()},b=()=>{g()},p=e.computed(()=>({current:m.value,pageSize:a.value,total:r.value}));return{loading:i,data:c,total:r,currentPage:m,pageSize:a,searchParams:V,pagination:p,getData:g,handleSearch:d,handleReset:N,handlePageChange:y,handleSizeChange:x,refresh:b}}function Ln(t){return z().isLoggedIn}function $n(t){return z().isLoggedIn}function Un(){return!0}const ge=[{path:"/login",name:"Login",component:()=>Promise.resolve().then(()=>yn),meta:{title:"登录",hidden:!0}},{path:"/404",name:"NotFound",component:()=>Promise.resolve().then(()=>wn),meta:{title:"404",hidden:!0}},{path:"/403",name:"Forbidden",component:()=>Promise.resolve().then(()=>bn),meta:{title:"403",hidden:!0}}],_e={path:"/:pathMatch(.*)*",redirect:"/404",meta:{hidden:!0}},Ee={path:"/",name:"Layout",component:()=>Promise.resolve().then(()=>ln),redirect:"/dashboard",children:[{path:"/dashboard",name:"Dashboard",component:()=>Promise.resolve().then(()=>Ge),meta:{title:"仪表盘",icon:"dashboard",keepAlive:!0,affix:!0}},{path:"/system/user",name:"SystemUser",component:()=>Promise.resolve().then(()=>Je),meta:{title:"用户管理",icon:"user",keepAlive:!0}},{path:"/system/role",name:"SystemRole",component:()=>Promise.resolve().then(()=>Qe),meta:{title:"角色管理",icon:"role",keepAlive:!0}},{path:"/system/menu",name:"SystemMenu",component:()=>Promise.resolve().then(()=>Ze),meta:{title:"菜单管理",icon:"menu",keepAlive:!0}}]},Mn=[{path:"/dashboard",name:"Dashboard",component:()=>Promise.resolve().then(()=>Ge),meta:{title:"仪表盘",icon:"dashboard",keepAlive:!0,affix:!0}},{path:"/system",name:"System",redirect:"/system/user",meta:{title:"系统管理",icon:"setting"},children:[{path:"user",name:"SystemUser",component:()=>Promise.resolve().then(()=>Je),meta:{title:"用户管理",icon:"user",keepAlive:!0}},{path:"role",name:"SystemRole",component:()=>Promise.resolve().then(()=>Qe),meta:{title:"角色管理",icon:"role",keepAlive:!0}},{path:"menu",name:"SystemMenu",component:()=>Promise.resolve().then(()=>Ze),meta:{title:"菜单管理",icon:"menu",keepAlive:!0}}]}],Ye=[{menuCode:"dashboard",menuName:"仪表盘",menuUrl:"/dashboard",icon:"dashboard",closable:!0,isDefault:!0,isOut:!1},{menuCode:"system",menuName:"系统管理",menuUrl:"/system",icon:"setting",closable:!1,isDefault:!1,isOut:!1,children:[{menuCode:"system_user",menuName:"用户管理",menuUrl:"/system/user",icon:"user",closable:!0,isDefault:!1,isOut:!1},{menuCode:"system_role",menuName:"角色管理",menuUrl:"/system/role",icon:"role",closable:!0,isDefault:!1,isOut:!1},{menuCode:"system_menu",menuName:"菜单管理",menuUrl:"/system/menu",icon:"menu",closable:!0,isDefault:!1,isOut:!1}]}],ye=A.createRouter({history:A.createWebHistory(),routes:[...ge,Ee,_e],scrollBehavior:()=>({left:0,top:0})}),An=["/login","/404","/403"];ye.beforeEach(async(t,o,l)=>{const i=q();if(i.initTheme(),Ve())if(t.path==="/login")l({path:"/"});else{const c=z();c.isLoggedIn||(c.setUserInfo({appId:le(),userId:"1",userName:"管理员",departmentName:"技术部",email:"admin@example.com",mobilePhone:"13800138000",positionName:"管理员",avatar:""}),G().setMenuList(Ye)),t.name&&t.meta.keepAlive&&i.addCachedView(t.name),l()}else An.includes(t.path)?l():l("/login")});function Rn(){const t=A.createRouter({history:A.createWebHistory(),routes:[...ge,Ee,_e]});ye.matcher=t.matcher}function Fn(t,o={}){const l=o.indexPath||"/dashboard";return{path:"/",name:"Layout",component:Ne,redirect:l,children:t}}function zn(t){return A.createRouter({history:A.createWebHistory(),routes:t,scrollBehavior:()=>({left:0,top:0})})}function Pn(t){return T.get("/role/list",{params:t})}function On(t){return T.get(`/role/${t}`)}function qn(t){return T.post("/role",t)}function jn(t,o){return T.put(`/role/${t}`,o)}function Kn(t){return T.delete(`/role/${t}`)}function Yn(t,o){return T.patch(`/role/${t}/status`,{status:o})}function Wn(){return T.get("/user/v1.0/menu/list")}function We(t){const o=t||le();return T.get(`/user/v1.0/menu/get-menu?appId=${o}`)}function Hn(t){return T.post("/menu",t)}function Xn(t,o){return T.put(`/menu/${t}`,o)}function Gn(t){return T.delete(`/menu/${t}`)}const Jn=["/login","/404","/403"];function Qn(t,o={}){const l=o.whiteList||Jn,i=o.loginPath||"/login",c=o.homePath||"/";t.beforeEach(async(r,m,a)=>{const V=q(),g=z(),d=G();if(V.initTheme(),J())if(r.path===i)a({path:c});else if(g.isLoggedIn)r.name&&r.meta.keepAlive&&V.addCachedView(r.name),a();else try{if(o.fetchUserInfo){const y=await o.fetchUserInfo();g.setUserInfo(y)}else{const y=await Pe();g.setUserInfo(y)}if(o.fetchMenu){const y=await o.fetchMenu();d.setMenuList(y)}else{const y=await We(o.appId);d.setMenuList(y)}o.onLoginSuccess&&o.onLoginSuccess(),r.name&&r.meta.keepAlive&&V.addCachedView(r.name),a({...r,replace:!0})}catch(y){console.error("获取用户信息失败:",y),g.clearUserInfo(),d.clearMenu(),localStorage.removeItem("token"),localStorage.removeItem("token_type"),localStorage.removeItem("refresh_token"),a({path:i,query:{redirect:r.fullPath}})}else l.includes(r.path)?a():a({path:i,query:{redirect:r.fullPath}})}),t.afterEach(()=>{})}function Zn(t){return T.get("/user/list",{params:t})}function vn(t){return T.get(`/user/${t}`)}function eo(t){return T.post("/user",t)}function to(t,o){return T.put(`/user/${t}`,o)}function no(t){return T.delete(`/user/${t}`)}function oo(t){return T.post("/user/batch-delete",{ids:t})}function lo(t,o){return T.patch(`/user/${t}/status`,{status:o})}function ao(t){return T.post(`/user/${t}/reset-password`)}var S=(t=>(t[t.ENABLED=1]="ENABLED",t[t.DISABLED=0]="DISABLED",t))(S||{}),He=(t=>(t[t.UNKNOWN=0]="UNKNOWN",t[t.MALE=1]="MALE",t[t.FEMALE=2]="FEMALE",t))(He||{}),M=(t=>(t[t.DIRECTORY=0]="DIRECTORY",t[t.MENU=1]="MENU",t[t.BUTTON=2]="BUTTON",t))(M||{});const ro={1:"启用",0:"禁用"},so={0:"未知",1:"男",2:"女"},io={0:"目录",1:"菜单",2:"按钮"},ke=[{label:"启用",value:1},{label:"禁用",value:0}],co=[{label:"未知",value:0},{label:"男",value:1},{label:"女",value:2}],Xe=[{label:"目录",value:0},{label:"菜单",value:1},{label:"按钮",value:2}],mo={mounted(t,o){var i;z().isLoggedIn||(i=t.parentNode)==null||i.removeChild(t)}},po={class:"dashboard"},uo={class:"dashboard__stats"},fo={class:"stat-card__content"},ho={class:"stat-card__info"},Vo={class:"stat-card__title"},No={class:"dashboard__main"},go={class:"quick-links"},_o={class:"quick-link__icon"},Eo={class:"quick-link__title"},yo={class:"activity-list"},ko={class:"activity-item__action"},Co={class:"activity-item__time"},wo={class:"system-info"},Bo={class:"system-info__item"},So={class:"system-info__item"},Ge=Object.freeze(Object.defineProperty({__proto__:null,default:F(e.defineComponent({__name:"index",setup(t){const o=e.ref([{title:"用户总数",value:1234,icon:"👥",color:"#409eff"},{title:"今日访问",value:567,icon:"👀",color:"#67c23a"},{title:"订单数量",value:890,icon:"📦",color:"#e6a23c"},{title:"销售金额",value:123456,icon:"💰",color:"#f56c6c"}]),l=e.ref([{user:"张三",action:"登录系统",time:"2分钟前",type:"success"},{user:"李四",action:"修改了用户信息",time:"5分钟前",type:"warning"},{user:"王五",action:"创建了新订单",time:"10分钟前",type:"info"},{user:"赵六",action:"删除了测试数据",time:"30分钟前",type:"danger"},{user:"钱七",action:"更新了系统配置",time:"1小时前",type:"primary"}]),i=e.ref([{title:"用户管理",path:"/system/user",icon:"👤"},{title:"角色管理",path:"/system/role",icon:"👥"},{title:"菜单管理",path:"/system/menu",icon:"📋"},{title:"系统设置",path:"/system",icon:"⚙️"}]);return(c,r)=>{const m=e.resolveComponent("router-link");return e.openBlock(),e.createElementBlock("div",po,[e.createElementVNode("div",uo,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.value,a=>(e.openBlock(),e.createBlock(e.unref(L.Card),{key:a.title,class:"stat-card"},{default:e.withCtx(()=>[e.createElementVNode("div",fo,[e.createElementVNode("div",{class:"stat-card__icon",style:e.normalizeStyle({backgroundColor:a.color+"20"})},e.toDisplayString(a.icon),5),e.createElementVNode("div",ho,[e.createElementVNode("div",Vo,e.toDisplayString(a.title),1),e.createElementVNode("div",{class:"stat-card__value",style:e.normalizeStyle({color:a.color})},e.toDisplayString(a.value.toLocaleString()),5)])])]),_:2},1024))),128))]),e.createElementVNode("div",No,[e.createVNode(e.unref(L.Card),{class:"dashboard__quick"},{header:e.withCtx(()=>[...r[0]||(r[0]=[e.createElementVNode("span",{class:"card-title"},"快捷入口",-1)])]),default:e.withCtx(()=>[e.createElementVNode("div",go,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(i.value,a=>(e.openBlock(),e.createBlock(m,{key:a.path,to:a.path,class:"quick-link"},{default:e.withCtx(()=>[e.createElementVNode("span",_o,e.toDisplayString(a.icon),1),e.createElementVNode("span",Eo,e.toDisplayString(a.title),1)]),_:2},1032,["to"]))),128))])]),_:1}),e.createVNode(e.unref(L.Card),{class:"dashboard__activity"},{header:e.withCtx(()=>[...r[1]||(r[1]=[e.createElementVNode("span",{class:"card-title"},"最近活动",-1)])]),default:e.withCtx(()=>[e.createElementVNode("div",yo,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(l.value,(a,V)=>(e.openBlock(),e.createElementBlock("div",{key:V,class:"activity-item"},[e.createVNode(e.unref(L.Tag),{type:a.type,size:"small"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(a.user),1)]),_:2},1032,["type"]),e.createElementVNode("span",ko,e.toDisplayString(a.action),1),e.createElementVNode("span",Co,e.toDisplayString(a.time),1)]))),128))])]),_:1})]),e.createVNode(e.unref(L.Card),{class:"dashboard__system"},{header:e.withCtx(()=>[...r[2]||(r[2]=[e.createElementVNode("span",{class:"card-title"},"系统信息",-1)])]),default:e.withCtx(()=>[e.createElementVNode("div",wo,[r[5]||(r[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)),r[6]||(r[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)),r[7]||(r[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)),r[8]||(r[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",Bo,[r[3]||(r[3]=e.createElementVNode("span",{class:"system-info__label"},"服务器状态",-1)),e.createVNode(e.unref(L.Progress),{percentage:75,status:"success"})]),e.createElementVNode("div",So,[r[4]||(r[4]=e.createElementVNode("span",{class:"system-info__label"},"内存使用",-1)),e.createVNode(e.unref(L.Progress),{percentage:45})])])]),_:1})])}}}),[["__scopeId","data-v-44648cb1"]])},Symbol.toStringTag,{value:"Module"})),bo={class:"user-page"},xo={class:"toolbar"},Io={class:"data-table"},To={key:0},Do={key:1},Lo={class:"pagination-wrapper"},Je=Object.freeze(Object.defineProperty({__proto__:null,default:F(e.defineComponent({__name:"index",setup(t){const o=[{id:1,username:"admin",nickname:"管理员",email:"admin@example.com",phone:"13800138001",status:S.ENABLED,roles:["admin"],createTime:"2024-01-01 10:00:00"},{id:2,username:"zhangsan",nickname:"张三",email:"zhangsan@example.com",phone:"13800138002",status:S.ENABLED,roles:["editor"],createTime:"2024-01-02 10:00:00"},{id:3,username:"lisi",nickname:"李四",email:"lisi@example.com",phone:"13800138003",status:S.DISABLED,roles:["viewer"],createTime:"2024-01-03 10:00:00"},{id:4,username:"wangwu",nickname:"王五",email:"wangwu@example.com",phone:"13800138004",status:S.ENABLED,roles:["editor"],createTime:"2024-01-04 10:00:00"},{id:5,username:"zhaoliu",nickname:"赵六",email:"zhaoliu@example.com",phone:"13800138005",status:S.ENABLED,roles:["viewer"],createTime:"2024-01-05 10:00:00"}],l=e.ref(!1),i=e.ref([]),c=e.ref(0),r=e.ref(1),m=e.ref(10),a=e.reactive({keyword:"",status:void 0}),V=e.ref(!1),g=e.computed(()=>d.id?"编辑用户":"新增用户"),d=e.reactive({id:0,username:"",nickname:"",email:"",phone:"",status:S.ENABLED,roles:[]}),N={username:[{required:!0,message:"请输入用户名",trigger:"blur"}],nickname:[{required:!0,message:"请输入昵称",trigger:"blur"}],email:[{required:!0,message:"请输入邮箱",trigger:"blur"},{type:"email",message:"请输入正确的邮箱格式",trigger:"blur"}]},y=e.ref(),x=()=>{l.value=!0,setTimeout(()=>{let f=[...o];a.keyword&&(f=f.filter(s=>s.username.includes(a.keyword)||s.nickname.includes(a.keyword))),a.status!==void 0&&(f=f.filter(s=>s.status===a.status)),c.value=f.length,i.value=f.slice((r.value-1)*m.value,r.value*m.value),l.value=!1},300)},b=()=>{r.value=1,x()},p=()=>{a.keyword="",a.status=void 0,r.value=1,x()},u=()=>{Object.assign(d,{id:0,username:"",nickname:"",email:"",phone:"",status:S.ENABLED,roles:[]}),V.value=!0},C=f=>{Object.assign(d,f),V.value=!0},R=f=>{$.Message.success("删除成功"),x()},P=async()=>{var f;try{await((f=y.value)==null?void 0:f.validate()),$.Message.success(d.id?"编辑成功":"新增成功"),V.value=!1,x()}catch(s){console.error(s)}},U=f=>{$.Message.success(`已${f.status===S.ENABLED?"启用":"禁用"}用户 ${f.username}`)};return e.onMounted(()=>{x()}),(f,s)=>(e.openBlock(),e.createElementBlock("div",bo,[e.createVNode(e.unref(L.Card),{class:"search-card"},{default:e.withCtx(()=>[e.createVNode(e.unref(h.Form),{model:a,inline:""},{default:e.withCtx(()=>[e.createVNode(e.unref(h.FormItem),{label:"关键词"},{default:e.withCtx(()=>[e.createVNode(e.unref(h.Input),{modelValue:a.keyword,"onUpdate:modelValue":s[0]||(s[0]=w=>a.keyword=w),placeholder:"用户名/昵称",clearable:"",onKeyup:e.withKeys(b,["enter"])},null,8,["modelValue"])]),_:1}),e.createVNode(e.unref(h.FormItem),{label:"状态"},{default:e.withCtx(()=>[e.createVNode(e.unref(h.Select),{modelValue:a.status,"onUpdate:modelValue":s[1]||(s[1]=w=>a.status=w),options:e.unref(ke),placeholder:"请选择",clearable:""},null,8,["modelValue","options"])]),_:1}),e.createVNode(e.unref(h.FormItem),null,{default:e.withCtx(()=>[e.createVNode(e.unref(E.Space),null,{default:e.withCtx(()=>[e.createVNode(e.unref(E.Button),{type:"primary",onClick:b},{default:e.withCtx(()=>[...s[11]||(s[11]=[e.createTextVNode("搜索",-1)])]),_:1}),e.createVNode(e.unref(E.Button),{onClick:p},{default:e.withCtx(()=>[...s[12]||(s[12]=[e.createTextVNode("重置",-1)])]),_:1})]),_:1})]),_:1})]),_:1},8,["model"])]),_:1}),e.createVNode(e.unref(L.Card),{class:"table-card"},{default:e.withCtx(()=>[e.createElementVNode("div",xo,[e.createVNode(e.unref(E.Button),{type:"primary",onClick:u},{default:e.withCtx(()=>[...s[13]||(s[13]=[e.createTextVNode("新增用户",-1)])]),_:1})]),e.createElementVNode("table",Io,[s[18]||(s[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",To,[...s[14]||(s[14]=[e.createElementVNode("td",{colspan:"9",class:"loading-cell"},"加载中...",-1)])])):i.value.length===0?(e.openBlock(),e.createElementBlock("tr",Do,[...s[15]||(s[15]=[e.createElementVNode("td",{colspan:"9",class:"empty-cell"},"暂无数据",-1)])])):(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:2},e.renderList(i.value,w=>(e.openBlock(),e.createElementBlock("tr",{key:w.id},[e.createElementVNode("td",null,e.toDisplayString(w.id),1),e.createElementVNode("td",null,e.toDisplayString(w.username),1),e.createElementVNode("td",null,e.toDisplayString(w.nickname),1),e.createElementVNode("td",null,e.toDisplayString(w.email),1),e.createElementVNode("td",null,e.toDisplayString(w.phone),1),e.createElementVNode("td",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(w.roles,O=>(e.openBlock(),e.createBlock(e.unref(L.Tag),{key:O,size:"small"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(O),1)]),_:2},1024))),128))]),e.createElementVNode("td",null,[e.createVNode(e.unref(h.Switch),{"model-value":w.status===e.unref(S).ENABLED,"onUpdate:modelValue":O=>{w.status=O?e.unref(S).ENABLED:e.unref(S).DISABLED,U(w)}},null,8,["model-value","onUpdate:modelValue"])]),e.createElementVNode("td",null,e.toDisplayString(w.createTime),1),e.createElementVNode("td",null,[e.createVNode(e.unref(E.Space),null,{default:e.withCtx(()=>[e.createVNode(e.unref(E.Button),{type:"primary",link:"",size:"small",onClick:O=>C(w)},{default:e.withCtx(()=>[...s[16]||(s[16]=[e.createTextVNode("编辑",-1)])]),_:1},8,["onClick"]),e.createVNode(e.unref($.Popconfirm),{title:"确定删除该用户吗?",onConfirm:O=>R(w.id)},{default:e.withCtx(()=>[e.createVNode(e.unref(E.Button),{type:"danger",link:"",size:"small"},{default:e.withCtx(()=>[...s[17]||(s[17]=[e.createTextVNode("删除",-1)])]),_:1})]),_:1},8,["onConfirm"])]),_:2},1024)])]))),128))])]),e.createElementVNode("div",Lo,[e.createVNode(e.unref(L.Pagination),{"current-page":r.value,"onUpdate:currentPage":s[2]||(s[2]=w=>r.value=w),"page-size":m.value,"onUpdate:pageSize":s[3]||(s[3]=w=>m.value=w),total:c.value,"page-sizes":[10,20,50,100],layout:"total, sizes, prev, pager, next",onCurrentChange:x,onSizeChange:x},null,8,["current-page","page-size","total"])])]),_:1}),e.createVNode(e.unref($.Modal),{modelValue:V.value,"onUpdate:modelValue":s[10]||(s[10]=w=>V.value=w),title:g.value,width:"500px"},{footer:e.withCtx(()=>[e.createVNode(e.unref(E.Space),null,{default:e.withCtx(()=>[e.createVNode(e.unref(E.Button),{onClick:s[9]||(s[9]=w=>V.value=!1)},{default:e.withCtx(()=>[...s[19]||(s[19]=[e.createTextVNode("取消",-1)])]),_:1}),e.createVNode(e.unref(E.Button),{type:"primary",onClick:P},{default:e.withCtx(()=>[...s[20]||(s[20]=[e.createTextVNode("确定",-1)])]),_:1})]),_:1})]),default:e.withCtx(()=>[e.createVNode(e.unref(h.Form),{ref_key:"formRef",ref:y,model:d,rules:N,"label-width":"80px"},{default:e.withCtx(()=>[e.createVNode(e.unref(h.FormItem),{label:"用户名",prop:"username"},{default:e.withCtx(()=>[e.createVNode(e.unref(h.Input),{modelValue:d.username,"onUpdate:modelValue":s[4]||(s[4]=w=>d.username=w),placeholder:"请输入用户名"},null,8,["modelValue"])]),_:1}),e.createVNode(e.unref(h.FormItem),{label:"昵称",prop:"nickname"},{default:e.withCtx(()=>[e.createVNode(e.unref(h.Input),{modelValue:d.nickname,"onUpdate:modelValue":s[5]||(s[5]=w=>d.nickname=w),placeholder:"请输入昵称"},null,8,["modelValue"])]),_:1}),e.createVNode(e.unref(h.FormItem),{label:"邮箱",prop:"email"},{default:e.withCtx(()=>[e.createVNode(e.unref(h.Input),{modelValue:d.email,"onUpdate:modelValue":s[6]||(s[6]=w=>d.email=w),placeholder:"请输入邮箱"},null,8,["modelValue"])]),_:1}),e.createVNode(e.unref(h.FormItem),{label:"手机号",prop:"phone"},{default:e.withCtx(()=>[e.createVNode(e.unref(h.Input),{modelValue:d.phone,"onUpdate:modelValue":s[7]||(s[7]=w=>d.phone=w),placeholder:"请输入手机号"},null,8,["modelValue"])]),_:1}),e.createVNode(e.unref(h.FormItem),{label:"状态"},{default:e.withCtx(()=>[e.createVNode(e.unref(h.Switch),{modelValue:d.status,"onUpdate:modelValue":s[8]||(s[8]=w=>d.status=w),"active-value":e.unref(S).ENABLED,"inactive-value":e.unref(S).DISABLED},null,8,["modelValue","active-value","inactive-value"])]),_:1})]),_:1},8,["model"])]),_:1},8,["modelValue","title"])]))}}),[["__scopeId","data-v-d2491ae0"]])},Symbol.toStringTag,{value:"Module"})),$o={class:"role-page"},Uo={class:"toolbar"},Mo={class:"data-table"},Ao={key:0},Ro={key:1},Fo={class:"pagination-wrapper"},Qe=Object.freeze(Object.defineProperty({__proto__:null,default:F(e.defineComponent({__name:"index",setup(t){const o=[{id:1,name:"超级管理员",code:"admin",description:"拥有所有权限",status:S.ENABLED,permissions:["*"],createTime:"2024-01-01 10:00:00"},{id:2,name:"编辑",code:"editor",description:"内容编辑权限",status:S.ENABLED,permissions:["user:read","user:write"],createTime:"2024-01-02 10:00:00"},{id:3,name:"访客",code:"viewer",description:"只读权限",status:S.ENABLED,permissions:["user:read"],createTime:"2024-01-03 10:00:00"}],l=e.ref(!1),i=e.ref([]),c=e.ref(0),r=e.ref(1),m=e.ref(10),a=e.reactive({keyword:"",status:void 0}),V=e.ref(!1),g=e.computed(()=>d.id?"编辑角色":"新增角色"),d=e.reactive({id:0,name:"",code:"",description:"",status:S.ENABLED,permissions:[]}),N={name:[{required:!0,message:"请输入角色名称",trigger:"blur"}],code:[{required:!0,message:"请输入角色编码",trigger:"blur"}]},y=e.ref(),x=()=>{l.value=!0,setTimeout(()=>{let U=[...o];a.keyword&&(U=U.filter(f=>f.name.includes(a.keyword)||f.code.includes(a.keyword))),a.status!==void 0&&(U=U.filter(f=>f.status===a.status)),c.value=U.length,i.value=U.slice((r.value-1)*m.value,r.value*m.value),l.value=!1},300)},b=()=>{r.value=1,x()},p=()=>{a.keyword="",a.status=void 0,r.value=1,x()},u=()=>{Object.assign(d,{id:0,name:"",code:"",description:"",status:S.ENABLED,permissions:[]}),V.value=!0},C=U=>{Object.assign(d,U),V.value=!0},R=U=>{$.Message.success("删除成功"),x()},P=async()=>{var U;try{await((U=y.value)==null?void 0:U.validate()),$.Message.success(d.id?"编辑成功":"新增成功"),V.value=!1,x()}catch(f){console.error(f)}};return e.onMounted(()=>{x()}),(U,f)=>(e.openBlock(),e.createElementBlock("div",$o,[e.createVNode(e.unref(L.Card),{class:"search-card"},{default:e.withCtx(()=>[e.createVNode(e.unref(h.Form),{model:a,inline:""},{default:e.withCtx(()=>[e.createVNode(e.unref(h.FormItem),{label:"关键词"},{default:e.withCtx(()=>[e.createVNode(e.unref(h.Input),{modelValue:a.keyword,"onUpdate:modelValue":f[0]||(f[0]=s=>a.keyword=s),placeholder:"角色名称/编码",clearable:"",onKeyup:e.withKeys(b,["enter"])},null,8,["modelValue"])]),_:1}),e.createVNode(e.unref(h.FormItem),{label:"状态"},{default:e.withCtx(()=>[e.createVNode(e.unref(h.Select),{modelValue:a.status,"onUpdate:modelValue":f[1]||(f[1]=s=>a.status=s),options:e.unref(ke),placeholder:"请选择",clearable:""},null,8,["modelValue","options"])]),_:1}),e.createVNode(e.unref(h.FormItem),null,{default:e.withCtx(()=>[e.createVNode(e.unref(E.Space),null,{default:e.withCtx(()=>[e.createVNode(e.unref(E.Button),{type:"primary",onClick:b},{default:e.withCtx(()=>[...f[10]||(f[10]=[e.createTextVNode("搜索",-1)])]),_:1}),e.createVNode(e.unref(E.Button),{onClick:p},{default:e.withCtx(()=>[...f[11]||(f[11]=[e.createTextVNode("重置",-1)])]),_:1})]),_:1})]),_:1})]),_:1},8,["model"])]),_:1}),e.createVNode(e.unref(L.Card),{class:"table-card"},{default:e.withCtx(()=>[e.createElementVNode("div",Uo,[e.createVNode(e.unref(E.Button),{type:"primary",onClick:u},{default:e.withCtx(()=>[...f[12]||(f[12]=[e.createTextVNode("新增角色",-1)])]),_:1})]),e.createElementVNode("table",Mo,[f[17]||(f[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",Ao,[...f[13]||(f[13]=[e.createElementVNode("td",{colspan:"7",class:"loading-cell"},"加载中...",-1)])])):i.value.length===0?(e.openBlock(),e.createElementBlock("tr",Ro,[...f[14]||(f[14]=[e.createElementVNode("td",{colspan:"7",class:"empty-cell"},"暂无数据",-1)])])):(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:2},e.renderList(i.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.name),1),e.createElementVNode("td",null,[e.createVNode(e.unref(L.Tag),{type:"primary",size:"small"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(s.code),1)]),_:2},1024)]),e.createElementVNode("td",null,e.toDisplayString(s.description),1),e.createElementVNode("td",null,[e.createVNode(e.unref(L.Tag),{type:s.status===e.unref(S).ENABLED?"success":"danger",size:"small"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(s.status===e.unref(S).ENABLED?"启用":"禁用"),1)]),_:2},1032,["type"])]),e.createElementVNode("td",null,e.toDisplayString(s.createTime),1),e.createElementVNode("td",null,[e.createVNode(e.unref(E.Space),null,{default:e.withCtx(()=>[e.createVNode(e.unref(E.Button),{type:"primary",link:"",size:"small",onClick:w=>C(s)},{default:e.withCtx(()=>[...f[15]||(f[15]=[e.createTextVNode("编辑",-1)])]),_:1},8,["onClick"]),e.createVNode(e.unref($.Popconfirm),{title:"确定删除该角色吗?",onConfirm:w=>R(s.id)},{default:e.withCtx(()=>[e.createVNode(e.unref(E.Button),{type:"danger",link:"",size:"small"},{default:e.withCtx(()=>[...f[16]||(f[16]=[e.createTextVNode("删除",-1)])]),_:1})]),_:1},8,["onConfirm"])]),_:2},1024)])]))),128))])]),e.createElementVNode("div",Fo,[e.createVNode(e.unref(L.Pagination),{"current-page":r.value,"onUpdate:currentPage":f[2]||(f[2]=s=>r.value=s),"page-size":m.value,"onUpdate:pageSize":f[3]||(f[3]=s=>m.value=s),total:c.value,"page-sizes":[10,20,50,100],layout:"total, sizes, prev, pager, next",onCurrentChange:x,onSizeChange:x},null,8,["current-page","page-size","total"])])]),_:1}),e.createVNode(e.unref($.Modal),{modelValue:V.value,"onUpdate:modelValue":f[9]||(f[9]=s=>V.value=s),title:g.value,width:"500px"},{footer:e.withCtx(()=>[e.createVNode(e.unref(E.Space),null,{default:e.withCtx(()=>[e.createVNode(e.unref(E.Button),{onClick:f[8]||(f[8]=s=>V.value=!1)},{default:e.withCtx(()=>[...f[18]||(f[18]=[e.createTextVNode("取消",-1)])]),_:1}),e.createVNode(e.unref(E.Button),{type:"primary",onClick:P},{default:e.withCtx(()=>[...f[19]||(f[19]=[e.createTextVNode("确定",-1)])]),_:1})]),_:1})]),default:e.withCtx(()=>[e.createVNode(e.unref(h.Form),{ref_key:"formRef",ref:y,model:d,rules:N,"label-width":"80px"},{default:e.withCtx(()=>[e.createVNode(e.unref(h.FormItem),{label:"角色名称",prop:"name"},{default:e.withCtx(()=>[e.createVNode(e.unref(h.Input),{modelValue:d.name,"onUpdate:modelValue":f[4]||(f[4]=s=>d.name=s),placeholder:"请输入角色名称"},null,8,["modelValue"])]),_:1}),e.createVNode(e.unref(h.FormItem),{label:"角色编码",prop:"code"},{default:e.withCtx(()=>[e.createVNode(e.unref(h.Input),{modelValue:d.code,"onUpdate:modelValue":f[5]||(f[5]=s=>d.code=s),placeholder:"请输入角色编码"},null,8,["modelValue"])]),_:1}),e.createVNode(e.unref(h.FormItem),{label:"描述"},{default:e.withCtx(()=>[e.createVNode(e.unref(h.Input),{modelValue:d.description,"onUpdate:modelValue":f[6]||(f[6]=s=>d.description=s),placeholder:"请输入描述"},null,8,["modelValue"])]),_:1}),e.createVNode(e.unref(h.FormItem),{label:"状态"},{default:e.withCtx(()=>[e.createVNode(e.unref(h.Switch),{modelValue:d.status,"onUpdate:modelValue":f[7]||(f[7]=s=>d.status=s),"active-value":e.unref(S).ENABLED,"inactive-value":e.unref(S).DISABLED},null,8,["modelValue","active-value","inactive-value"])]),_:1})]),_:1},8,["model"])]),_:1},8,["modelValue","title"])]))}}),[["__scopeId","data-v-8ad30bc6"]])},Symbol.toStringTag,{value:"Module"})),zo={class:"menu-page"},Po={class:"toolbar"},Oo={class:"menu-tree"},qo={class:"tree-table"},jo={class:"tree-row tree-row--level-0"},Ko=["onClick"],Yo=["onClick"],Ze=Object.freeze(Object.defineProperty({__proto__:null,default:F(e.defineComponent({__name:"index",setup(t){const o=[{id:1,parentId:null,name:"Dashboard",path:"/dashboard",component:"dashboard/index",redirect:"",icon:"dashboard",title:"仪表盘",type:M.MENU,sort:1,status:S.ENABLED,hidden:!1,keepAlive:!0},{id:2,parentId:null,name:"System",path:"/system",component:"",redirect:"/system/user",icon:"setting",title:"系统管理",type:M.DIRECTORY,sort:2,status:S.ENABLED,hidden:!1,keepAlive:!1,children:[{id:21,parentId:2,name:"SystemUser",path:"/system/user",component:"system/user/index",redirect:"",icon:"user",title:"用户管理",type:M.MENU,sort:1,status:S.ENABLED,hidden:!1,keepAlive:!0},{id:22,parentId:2,name:"SystemRole",path:"/system/role",component:"system/role/index",redirect:"",icon:"role",title:"角色管理",type:M.MENU,sort:2,status:S.ENABLED,hidden:!1,keepAlive:!0},{id:23,parentId:2,name:"SystemMenu",path:"/system/menu",component:"system/menu/index",redirect:"",icon:"menu",title:"菜单管理",type:M.MENU,sort:3,status:S.ENABLED,hidden:!1,keepAlive:!0}]}],l=e.ref(!1),i=e.ref([]),c=e.ref(!1),r=e.computed(()=>m.id?"编辑菜单":"新增菜单"),m=e.reactive({id:0,parentId:null,name:"",path:"",component:"",redirect:"",icon:"",title:"",type:M.MENU,sort:0,status:S.ENABLED,hidden:!1,keepAlive:!0}),a={name:[{required:!0,message:"请输入菜单名称",trigger:"blur"}],path:[{required:!0,message:"请输入路由路径",trigger:"blur"}],title:[{required:!0,message:"请输入菜单标题",trigger:"blur"}]},V=e.ref(),g=()=>{l.value=!0,setTimeout(()=>{i.value=o,l.value=!1},300)},d=(b=null)=>{Object.assign(m,{id:0,parentId:b,name:"",path:"",component:"",redirect:"",icon:"",title:"",type:M.MENU,sort:0,status:S.ENABLED,hidden:!1,keepAlive:!0}),c.value=!0},N=b=>{Object.assign(m,b),c.value=!0},y=async()=>{var b;try{await((b=V.value)==null?void 0:b.validate()),$.Message.success(m.id?"编辑成功":"新增成功"),c.value=!1,g()}catch(p){console.error(p)}},x=b=>({dashboard:"📊",system:"⚙️",user:"👤",role:"👥",menu:"📋",setting:"🔧"})[b||""]||"📄";return e.onMounted(()=>{g()}),(b,p)=>(e.openBlock(),e.createElementBlock("div",zo,[e.createVNode(e.unref(L.Card),{class:"menu-card"},{default:e.withCtx(()=>[e.createElementVNode("div",Po,[e.createVNode(e.unref(E.Button),{type:"primary",onClick:p[0]||(p[0]=u=>d())},{default:e.withCtx(()=>[...p[14]||(p[14]=[e.createTextVNode("新增菜单",-1)])]),_:1})]),e.createElementVNode("div",Oo,[e.createElementVNode("table",qo,[p[19]||(p[19]=e.createElementVNode("thead",null,[e.createElementVNode("tr",null,[e.createElementVNode("th",null,"菜单名称"),e.createElementVNode("th",null,"图标"),e.createElementVNode("th",null,"路由路径"),e.createElementVNode("th",null,"类型"),e.createElementVNode("th",null,"排序"),e.createElementVNode("th",null,"状态"),e.createElementVNode("th",null,"操作")])],-1)),e.createElementVNode("tbody",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(i.value,u=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:u.id},[e.createElementVNode("tr",jo,[e.createElementVNode("td",null,[e.createElementVNode("span",{class:"menu-name",onClick:C=>N(u)},e.toDisplayString(u.title),9,Ko)]),e.createElementVNode("td",null,e.toDisplayString(x(u.icon)),1),e.createElementVNode("td",null,e.toDisplayString(u.path),1),e.createElementVNode("td",null,[e.createVNode(e.unref(L.Tag),{type:u.type===e.unref(M).DIRECTORY?"primary":u.type===e.unref(M).MENU?"success":"warning",size:"small"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(u.type===e.unref(M).DIRECTORY?"目录":u.type===e.unref(M).MENU?"菜单":"按钮"),1)]),_:2},1032,["type"])]),e.createElementVNode("td",null,e.toDisplayString(u.sort),1),e.createElementVNode("td",null,[e.createVNode(e.unref(L.Tag),{type:u.status===e.unref(S).ENABLED?"success":"danger",size:"small"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(u.status===e.unref(S).ENABLED?"启用":"禁用"),1)]),_:2},1032,["type"])]),e.createElementVNode("td",null,[e.createVNode(e.unref(E.Space),null,{default:e.withCtx(()=>[e.createVNode(e.unref(E.Button),{type:"primary",link:"",size:"small",onClick:C=>d(u.id)},{default:e.withCtx(()=>[...p[15]||(p[15]=[e.createTextVNode("新增",-1)])]),_:1},8,["onClick"]),e.createVNode(e.unref(E.Button),{type:"primary",link:"",size:"small",onClick:C=>N(u)},{default:e.withCtx(()=>[...p[16]||(p[16]=[e.createTextVNode("编辑",-1)])]),_:1},8,["onClick"])]),_:2},1024)])]),u.children?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:0},e.renderList(u.children,C=>(e.openBlock(),e.createElementBlock("tr",{key:C.id,class:"tree-row tree-row--level-1"},[e.createElementVNode("td",null,[p[17]||(p[17]=e.createElementVNode("span",{class:"tree-indent"},null,-1)),e.createElementVNode("span",{class:"menu-name",onClick:R=>N(C)},e.toDisplayString(C.title),9,Yo)]),e.createElementVNode("td",null,e.toDisplayString(x(C.icon)),1),e.createElementVNode("td",null,e.toDisplayString(C.path),1),e.createElementVNode("td",null,[e.createVNode(e.unref(L.Tag),{type:C.type===e.unref(M).DIRECTORY?"primary":C.type===e.unref(M).MENU?"success":"warning",size:"small"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(C.type===e.unref(M).DIRECTORY?"目录":C.type===e.unref(M).MENU?"菜单":"按钮"),1)]),_:2},1032,["type"])]),e.createElementVNode("td",null,e.toDisplayString(C.sort),1),e.createElementVNode("td",null,[e.createVNode(e.unref(L.Tag),{type:C.status===e.unref(S).ENABLED?"success":"danger",size:"small"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(C.status===e.unref(S).ENABLED?"启用":"禁用"),1)]),_:2},1032,["type"])]),e.createElementVNode("td",null,[e.createVNode(e.unref(E.Space),null,{default:e.withCtx(()=>[e.createVNode(e.unref(E.Button),{type:"primary",link:"",size:"small",onClick:R=>N(C)},{default:e.withCtx(()=>[...p[18]||(p[18]=[e.createTextVNode("编辑",-1)])]),_:1},8,["onClick"])]),_:2},1024)])]))),128)):e.createCommentVNode("",!0)],64))),128))])])])]),_:1}),e.createVNode(e.unref($.Modal),{modelValue:c.value,"onUpdate:modelValue":p[13]||(p[13]=u=>c.value=u),title:r.value,width:"600px"},{footer:e.withCtx(()=>[e.createVNode(e.unref(E.Space),null,{default:e.withCtx(()=>[e.createVNode(e.unref(E.Button),{onClick:p[12]||(p[12]=u=>c.value=!1)},{default:e.withCtx(()=>[...p[20]||(p[20]=[e.createTextVNode("取消",-1)])]),_:1}),e.createVNode(e.unref(E.Button),{type:"primary",onClick:y},{default:e.withCtx(()=>[...p[21]||(p[21]=[e.createTextVNode("确定",-1)])]),_:1})]),_:1})]),default:e.withCtx(()=>[e.createVNode(e.unref(h.Form),{ref_key:"formRef",ref:V,model:m,rules:a,"label-width":"80px"},{default:e.withCtx(()=>[e.createVNode(e.unref(h.FormItem),{label:"上级菜单"},{default:e.withCtx(()=>[e.createVNode(e.unref(h.Input),{modelValue:m.parentId,"onUpdate:modelValue":p[1]||(p[1]=u=>m.parentId=u),placeholder:"上级菜单ID",disabled:""},null,8,["modelValue"])]),_:1}),e.createVNode(e.unref(h.FormItem),{label:"菜单类型"},{default:e.withCtx(()=>[e.createVNode(e.unref(h.Select),{modelValue:m.type,"onUpdate:modelValue":p[2]||(p[2]=u=>m.type=u),options:e.unref(Xe)},null,8,["modelValue","options"])]),_:1}),e.createVNode(e.unref(h.FormItem),{label:"菜单名称",prop:"name"},{default:e.withCtx(()=>[e.createVNode(e.unref(h.Input),{modelValue:m.name,"onUpdate:modelValue":p[3]||(p[3]=u=>m.name=u),placeholder:"请输入菜单名称(路由name)"},null,8,["modelValue"])]),_:1}),e.createVNode(e.unref(h.FormItem),{label:"菜单标题",prop:"title"},{default:e.withCtx(()=>[e.createVNode(e.unref(h.Input),{modelValue:m.title,"onUpdate:modelValue":p[4]||(p[4]=u=>m.title=u),placeholder:"请输入菜单标题"},null,8,["modelValue"])]),_:1}),e.createVNode(e.unref(h.FormItem),{label:"路由路径",prop:"path"},{default:e.withCtx(()=>[e.createVNode(e.unref(h.Input),{modelValue:m.path,"onUpdate:modelValue":p[5]||(p[5]=u=>m.path=u),placeholder:"请输入路由路径"},null,8,["modelValue"])]),_:1}),e.createVNode(e.unref(h.FormItem),{label:"组件路径"},{default:e.withCtx(()=>[e.createVNode(e.unref(h.Input),{modelValue:m.component,"onUpdate:modelValue":p[6]||(p[6]=u=>m.component=u),placeholder:"请输入组件路径"},null,8,["modelValue"])]),_:1}),e.createVNode(e.unref(h.FormItem),{label:"图标"},{default:e.withCtx(()=>[e.createVNode(e.unref(h.Input),{modelValue:m.icon,"onUpdate:modelValue":p[7]||(p[7]=u=>m.icon=u),placeholder:"请输入图标名称"},null,8,["modelValue"])]),_:1}),e.createVNode(e.unref(h.FormItem),{label:"排序"},{default:e.withCtx(()=>[e.createVNode(e.unref(h.InputNumber),{modelValue:m.sort,"onUpdate:modelValue":p[8]||(p[8]=u=>m.sort=u),min:0},null,8,["modelValue"])]),_:1}),e.createVNode(e.unref(h.FormItem),{label:"状态"},{default:e.withCtx(()=>[e.createVNode(e.unref(h.Switch),{modelValue:m.status,"onUpdate:modelValue":p[9]||(p[9]=u=>m.status=u),"active-value":e.unref(S).ENABLED,"inactive-value":e.unref(S).DISABLED},null,8,["modelValue","active-value","inactive-value"])]),_:1}),e.createVNode(e.unref(h.FormItem),{label:"隐藏"},{default:e.withCtx(()=>[e.createVNode(e.unref(h.Switch),{modelValue:m.hidden,"onUpdate:modelValue":p[10]||(p[10]=u=>m.hidden=u)},null,8,["modelValue"])]),_:1}),e.createVNode(e.unref(h.FormItem),{label:"缓存"},{default:e.withCtx(()=>[e.createVNode(e.unref(h.Switch),{modelValue:m.keepAlive,"onUpdate:modelValue":p[11]||(p[11]=u=>m.keepAlive=u)},null,8,["modelValue"])]),_:1})]),_:1},8,["model"])]),_:1},8,["modelValue","title"])]))}}),[["__scopeId","data-v-2a272a68"]])},Symbol.toStringTag,{value:"Module"}));n.Footer=un,n.Forbidden=Ke,n.Gender=He,n.GenderOptions=co,n.GenderText=so,n.Header=Fe,n.Layout=Ne,n.Login=qe,n.MenuType=M,n.MenuTypeOptions=Xe,n.MenuTypeText=io,n.NotFound=je,n.Sidebar=Re,n.Status=S,n.StatusOptions=ke,n.StatusText=ro,n.Tabs=dn,n.appConfig=gn,n.batchDeleteUsers=oo,n.clearToken=he,n.createLayoutRoute=Fn,n.createMenu=Hn,n.createRole=qn,n.createRouter=zn,n.createUser=eo,n.defaultDynamicRoutes=Mn,n.deleteMenu=Gn,n.deleteRole=Kn,n.deleteUser=no,n.errorRoute=_e,n.getApiBaseUrl=Nn,n.getAppId=le,n.getClientId=Oe,n.getCode=it,n.getMenuList=Wn,n.getMenuTree=We,n.getRefreshTime=st,n.getRefreshToken=rt,n.getRoleDetail=On,n.getRoleList=Pn,n.getToken=J,n.getTokenExpire=Le,n.getTokenType=Ie,n.getUserDetail=vn,n.getUserInfo=Pe,n.getUserList=Zn,n.hasPermission=Ln,n.hasRole=$n,n.hasToken=Ve,n.http=T,n.initAppConfig=Vn,n.isAdmin=Un,n.isTokenExpired=Ae,n.layoutRoute=Ee,n.local=k,n.localStorageUtil=H,n.login=ze,n.logout=fn,n.mockMenuData=Ye,n.permissionDirective=mo,n.refreshToken=hn,n.resetPassword=ao,n.resetRouter=Rn,n.router=ye,n.session=lt,n.sessionStorageUtil=X,n.setCode=Me,n.setRefreshTime=Ue,n.setRefreshToken=De,n.setToken=xe,n.setTokenExpire=$e,n.setTokenInfo=fe,n.setTokenType=Te,n.setupRouterGuards=Qn,n.staticRoutes=ge,n.updateMenu=Xn,n.updateRole=jn,n.updateRoleStatus=Yn,n.updateUser=to,n.updateUserStatus=lo,n.useApp=xn,n.useAppStore=q,n.useAuth=In,n.useAuthStore=ee,n.useForm=Tn,n.useMenuStore=G,n.useTable=Dn,n.useUserStore=z,Object.defineProperty(n,Symbol.toStringTag,{value:"Module"})});
|
|
1
|
+
(function(n,e){typeof exports=="object"&&typeof module<"u"?e(exports,require("vue"),require("pinia"),require("vue-router"),require("@xto/navigation"),require("@xto/base"),require("@xto/feedback"),require("@xto/form"),require("axios"),require("@xto/data")):typeof define=="function"&&define.amd?define(["exports","vue","pinia","vue-router","@xto/navigation","@xto/base","@xto/feedback","@xto/form","axios","@xto/data"],e):(n=typeof globalThis<"u"?globalThis:n||self,e(n.XtoFronted={},n.Vue,n.Pinia,n.VueRouter,n.navigation,n.base,n.feedback,n.form,n.axios,n.data))})(this,function(n,e,v,R,j,E,M,h,ot,U){"use strict";const W="xto_",Se=t=>({get(o){const l=t.getItem(W+o);if(!l)return null;try{return JSON.parse(l)}catch{return l}},set(o,l){if(l==null){t.removeItem(W+o);return}const i=typeof l=="string"?l:JSON.stringify(l);t.setItem(W+o,i)},remove(o){t.removeItem(W+o)},clear(){Object.keys(t).forEach(l=>{l.startsWith(W)&&t.removeItem(l)})}}),H=Se(window.localStorage),X=Se(window.sessionStorage),k={get:H.get,set:H.set,remove:H.remove,clear:H.clear},lt={get:X.get,set:X.set,remove:X.remove,clear:X.clear},q=v.defineStore("app",()=>{const t=e.ref(k.get("appName")||"XTO App"),o=e.ref(k.get("indexPath")||"/dashboard"),l=e.ref(k.get("isDark")||!1),i=e.ref(k.get("theme")||"light"),c=e.ref(k.get("layout")||"sidebar"),r=e.ref(k.get("isCollapsed")||!1),p=e.ref(k.get("showTabs")??!0),a=e.ref(k.get("showFooter")??!0),V=e.ref(k.get("showBreadcrumb")??!0),N=e.ref(k.get("primaryColor")||"#409eff"),d=e.ref([]),g=e.computed(()=>l.value?"dark":"light"),y=D=>{t.value=D,k.set("appName",D)},I=D=>{o.value=D,k.set("indexPath",D)},b=()=>{l.value=!l.value,i.value=l.value?"dark":"light",f()},u=D=>{i.value=D,l.value=D==="dark",f()},f=()=>{const D=document.documentElement;l.value?D.classList.add("dark"):D.classList.remove("dark"),k.set("isDark",l.value),k.set("theme",i.value)},x=()=>{r.value=!r.value,k.set("isCollapsed",r.value)},T=D=>{c.value=D,k.set("layout",D)},z=()=>{p.value=!p.value,k.set("showTabs",p.value)},S=()=>{a.value=!a.value,k.set("showFooter",a.value)},m=()=>{V.value=!V.value,k.set("showBreadcrumb",V.value)},s=D=>{N.value=D,document.documentElement.style.setProperty("--color-primary",D),k.set("primaryColor",D)},C=D=>{d.value.includes(D)||d.value.push(D)},O=D=>{const ae=d.value.indexOf(D);ae>-1&&d.value.splice(ae,1)},Ce=()=>{d.value=[]},we=()=>{f(),N.value!=="#409eff"&&document.documentElement.style.setProperty("--color-primary",N.value)};return e.watch(l,f),{appName:t,indexPath:o,isDark:l,theme:i,layout:c,isCollapsed:r,showTabs:p,showFooter:a,showBreadcrumb:V,primaryColor:N,cachedViews:d,themeClass:g,setAppName:y,setIndexPath:I,toggleTheme:b,toggleCollapse:x,setTheme:u,setLayout:T,toggleTabs:z,toggleFooter:S,toggleBreadcrumb:m,setPrimaryColor:s,addCachedView:C,removeCachedView:O,clearCachedViews:Ce,initTheme:we}}),be="/vite.svg",re="menu_list",at={menuCode:"home",menuName:"首页",menuUrl:"/dashboard",icon:"home",closable:!1,isDefault:!1,isOut:!1},G=v.defineStore("menu",()=>{const t=e.ref(k.get(re)||[]),o=e.computed(()=>t.value.length>0);return{menuList:t,hasMenu:o,setMenuList:c=>{t.value=[at,...c],k.set(re,t.value)},clearMenu:()=>{t.value=[],k.remove(re)}}}),se="user_info",P=v.defineStore("user",()=>{const t=e.ref(k.get(se)),o=e.computed(()=>!!t.value),l=e.computed(()=>{var g;return((g=t.value)==null?void 0:g.userId)||""}),i=e.computed(()=>{var g;return((g=t.value)==null?void 0:g.userName)||""}),c=e.computed(()=>{var g;return((g=t.value)==null?void 0:g.departmentName)||""}),r=e.computed(()=>{var g;return((g=t.value)==null?void 0:g.email)||""}),p=e.computed(()=>{var g;return((g=t.value)==null?void 0:g.mobilePhone)||""}),a=e.computed(()=>{var g;return((g=t.value)==null?void 0:g.positionName)||""}),V=e.computed(()=>{var g;return((g=t.value)==null?void 0:g.avatar)||""});return{userInfo:t,isLoggedIn:o,userId:l,userName:i,departmentName:c,email:r,mobilePhone:p,positionName:a,avatar:V,setUserInfo:g=>{t.value=g,k.set(se,g)},clearUserInfo:()=>{t.value=null,k.remove(se)}}}),ie="token",de="token_type",ce="refresh_token",me="expires_time",pe="refresh_time",ue="code",J=()=>k.get(ie),xe=t=>{k.set(ie,t)},Ie=()=>k.get(de),Te=t=>{k.set(de,t)},rt=()=>k.get(ce),De=t=>{k.set(ce,t)},Le=()=>k.get(me),$e=t=>{k.set(me,t)},st=()=>k.get(pe),Ue=t=>{k.set(pe,t)},it=()=>k.get(ue),Me=t=>{k.set(ue,t)},fe=t=>{xe(t.access_token),Te(t.token_type||"Bearer"),De(t.refresh_token),$e(t.expires_time),Ue(t.refresh_time),t.code&&Me(t.code)},he=()=>{k.remove(ie),k.remove(de),k.remove(ce),k.remove(me),k.remove(pe),k.remove(ue)},Ae=()=>{const t=Le();return t?Date.now()>t:!0},Ve=()=>!!J()&&!Ae(),ee=v.defineStore("auth",()=>{const t=e.ref(J()),o=e.computed(()=>Ve()),l=e.ref(""),i=e.ref(""),c=e.ref(""),r=e.ref("/login");return{token:t,isLoggedIn:o,baseUrl:l,appId:i,clientId:c,loginPath:r,login:y=>{t.value=y.access_token,fe(y)},logout:()=>{t.value=null,he()},setBaseUrl:y=>{l.value=y},setAppId:y=>{i.value=y},setClientId:y=>{c.value=y},setLoginPath:y=>{r.value=y}}}),dt={class:"sidebar__logo"},ct={class:"sidebar__menu-icon"},mt={key:1,class:"sidebar__menu-char"},pt={class:"sidebar__menu-icon"},ut={key:1,class:"sidebar__menu-char"},ft={class:"sidebar__menu-icon"},ht={key:1,class:"sidebar__menu-char"},Vt={key:0,class:"sidebar__user"},gt={class:"sidebar__user-info"},Nt={class:"sidebar__user-name"},_t={class:"sidebar__user-role"},Et=e.defineComponent({__name:"Sidebar",setup(t){const o=R.useRoute(),l=R.useRouter(),i=G(),c=P(),r=ee(),p=q(),a=e.computed(()=>p.isCollapsed),V=e.computed(()=>o.path),N=e.computed(()=>p.isDark?"#1d1e1f":"#fff"),d=e.computed(()=>p.isDark?"#cfd3dc":"#303133"),g=e.computed(()=>"#409eff"),y=T=>{T&&T!==o.path&&l.push(T)},I=()=>{r.logout(),c.clearUserInfo(),i.clearMenu(),l.push("/login")},b=new Set(["arrow-up","arrow-down","arrow-left","arrow-right","caret-down","caret-right","plus","minus","close","check","edit","delete","copy","download","upload","refresh","search","filter","more","setting","share","loading","info","success","warning","error","question","user","user-add","user-group","logout","login","file","folder","folder-open","document","image","video","music","camera","mail","phone","chat","bell","message","eye","eye-off","calendar","clock","history","timer","location","map","globe","star","heart","thumb-up","link","external-link","lock","unlock","key","home","menu","menu-fold","menu-unfold","sidebar-fold","sidebar-expand","sidebar-left","dashboard","chart","chart-pie","chart-line","report","analytics","system","permission","role","user-manage","log","notification","app","list","grid","fullscreen","fullscreen-exit","zoom-in","zoom-out","print","bookmark","tag","code","terminal","database","server","cloud","gift","moon","sun","theme","skin"]),u=T=>{if(!T||T==="")return"";if(T.startsWith("tineco-icon-")){const S=T.replace("tineco-icon-","");return{home:"home",dashboard:"dashboard",system:"system",user:"user",role:"role",menu:"list",setting:"setting",file:"file",folder:"folder",chart:"chart",report:"report",analytics:"analytics"}[S]||S}return{dashboard:"dashboard",system:"system",user:"user",role:"role",menu:"list",setting:"setting",home:"home",chart:"chart",report:"report",analytics:"analytics",permission:"permission",log:"log",notification:"notification",app:"app",list:"list",grid:"grid"}[T]||T},f=T=>T?T.charAt(0):"",x=T=>b.has(T);return(T,z)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["sidebar",{"sidebar--collapsed":a.value}])},[e.createElementVNode("div",dt,[z[0]||(z[0]=e.createElementVNode("img",{src:be,alt:"Logo",class:"sidebar__logo-img"},null,-1)),e.withDirectives(e.createElementVNode("span",{class:"sidebar__logo-text"},e.toDisplayString(e.unref(p).appName),513),[[e.vShow,!a.value]])]),e.createVNode(e.unref(j.Menu),{"default-active":V.value,mode:"vertical",collapse:a.value,"collapse-transition":!1,"background-color":N.value,"text-color":d.value,"active-text-color":g.value,class:"sidebar__menu",onSelect:y},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(i).menuList,S=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:S.menuUrl},[S.children&&S.children.length>0?(e.openBlock(),e.createBlock(e.unref(j.SubMenu),{key:0,index:S.menuUrl},{title:e.withCtx(()=>[e.createElementVNode("span",ct,[x(u(S.icon))?(e.openBlock(),e.createBlock(e.unref(E.Icon),{key:0,name:u(S.icon),size:16},null,8,["name"])):(e.openBlock(),e.createElementBlock("span",mt,e.toDisplayString(f(S.menuName)),1))]),e.createElementVNode("span",null,e.toDisplayString(S.menuName),1)]),default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(S.children,m=>(e.openBlock(),e.createBlock(e.unref(j.MenuItem),{key:m.menuUrl,index:m.menuUrl},{default:e.withCtx(()=>[e.createElementVNode("span",pt,[x(u(m.icon))?(e.openBlock(),e.createBlock(e.unref(E.Icon),{key:0,name:u(m.icon),size:16},null,8,["name"])):(e.openBlock(),e.createElementBlock("span",ut,e.toDisplayString(f(m.menuName)),1))]),e.createElementVNode("span",null,e.toDisplayString(m.menuName),1)]),_:2},1032,["index"]))),128))]),_:2},1032,["index"])):(e.openBlock(),e.createBlock(e.unref(j.MenuItem),{key:1,index:S.menuUrl},{default:e.withCtx(()=>[e.createElementVNode("span",ft,[x(u(S.icon))?(e.openBlock(),e.createBlock(e.unref(E.Icon),{key:0,name:u(S.icon),size:16},null,8,["name"])):(e.openBlock(),e.createElementBlock("span",ht,e.toDisplayString(f(S.menuName)),1))]),e.createElementVNode("span",null,e.toDisplayString(S.menuName),1)]),_:2},1032,["index"]))],64))),128))]),_:1},8,["default-active","collapse","background-color","text-color","active-text-color"]),a.value?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("div",Vt,[e.createElementVNode("div",gt,[e.createElementVNode("span",Nt,e.toDisplayString(e.unref(c).userName),1),e.createElementVNode("span",_t,e.toDisplayString(e.unref(c).departmentName),1)]),e.createVNode(e.unref(E.Button),{type:"text",size:"small",onClick:I},{default:e.withCtx(()=>[...z[1]||(z[1]=[e.createTextVNode("退出",-1)])]),_:1})]))],2))}}),F=(t,o)=>{const l=t.__vccOpts||t;for(const[i,c]of o)l[i]=c;return l},Re=F(Et,[["__scopeId","data-v-7f794ecb"]]),yt={class:"header"},kt={class:"header__left"},Ct={key:0,class:"header__breadcrumb"},wt={key:0,class:"breadcrumb-separator"},Bt={class:"header__right"},St=["title"],bt={class:"header__avatar"},xt={class:"header__user-name"},It={key:0,class:"header__dropdown"},Tt={class:"header__dropdown-header"},Dt={class:"header__dropdown-avatar"},Lt={class:"header__dropdown-info"},$t={class:"header__dropdown-name"},Ut={class:"header__dropdown-role"},Mt={class:"header__dropdown-menu"},At={class:"search-container"},Rt={class:"search-input-wrapper"},zt={key:0,class:"search-results"},Ft=["onClick"],Pt={class:"search-result-info"},Ot={class:"search-result-title"},qt={key:0,class:"search-result-parent"},jt={key:1,class:"search-empty"},Kt={class:"settings-drawer"},Yt={class:"settings-section"},Wt={class:"settings-layout-options"},Ht=["onClick"],Xt={class:"layout-option__preview"},Gt={key:0,class:"layout-preview-sidebar"},Jt={key:1,class:"layout-preview-top"},Qt={key:2,class:"layout-preview-mix"},Zt={class:"layout-option__label"},vt={class:"settings-section"},en={class:"settings-color-options"},tn=["title","onClick"],nn={class:"settings-section"},on={class:"settings-switch-list"},ln={class:"settings-switch-item"},an={class:"settings-switch-item"},ze=F(e.defineComponent({__name:"Header",setup(t){const o=R.useRoute(),l=R.useRouter(),i=q(),c=P(),r=ee(),p=G(),a=e.ref(!1),V=e.ref(!1),N=e.ref(null),d=e.ref(!1),g=e.ref(!1),y=e.ref(""),I=e.ref(null),b=e.ref(!1),u=[{value:"sidebar",label:"左侧菜单",icon:"sidebar-left"},{value:"top",label:"顶部菜单",icon:"menu"},{value:"mix",label:"混合菜单",icon:"grid"}],f=[{value:"#409eff",label:"默认蓝"},{value:"#1890ff",label:"科技蓝"},{value:"#52c41a",label:"极光绿"},{value:"#faad14",label:"日落橙"},{value:"#f5222d",label:"薄暮红"},{value:"#722ed1",label:"酱紫"}],x=e.computed(()=>o.matched.filter(_=>_.meta&&_.meta.title).map(_=>({title:_.meta.title,path:_.path}))),T=($,_="")=>{const K=[];return $.forEach(w=>{w.children&&w.children.length>0?K.push(...T(w.children,w.title)):K.push({...w,parentTitle:_})}),K},z=e.computed(()=>y.value.trim()?T(p.menuList).filter(_=>_.title.toLowerCase().includes(y.value.toLowerCase())):[]),S=e.computed(()=>i.layout),m=()=>{i.toggleCollapse()},s=()=>{i.toggleTheme()},C=()=>{V.value=!0},O=$=>{i.setLayout($)},Ce=$=>{b.value=$;const _=document.documentElement;$?_.classList.add("grey-mode"):_.classList.remove("grey-mode")},we=()=>{document.fullscreenElement?document.exitFullscreen():document.documentElement.requestFullscreen()},D=()=>{d.value=!!document.fullscreenElement},ae=()=>{a.value=!a.value},Z=()=>{a.value=!1},ve=()=>{g.value=!0},Be=()=>{g.value=!1,y.value=""},et=$=>{l.push($),Be()},Zo=$=>{i.setPrimaryColor($)},vo=()=>{Z(),l.push("/profile")},el=()=>{Z(),l.push("/change-password")},tl=()=>{Z(),r.logout(),c.clearUserInfo(),p.clearMenu(),l.push("/login")},tt=$=>{N.value&&!N.value.contains($.target)&&Z(),I.value&&!I.value.contains($.target)&&Be()},nt=$=>{$.key==="Escape"&&(Be(),Z()),($.ctrlKey||$.metaKey)&&$.key==="k"&&($.preventDefault(),ve())};return e.onMounted(()=>{document.addEventListener("click",tt),document.addEventListener("fullscreenchange",D),document.addEventListener("keydown",nt),i.initTheme(),b.value=document.documentElement.classList.contains("grey-mode")}),e.onUnmounted(()=>{document.removeEventListener("click",tt),document.removeEventListener("fullscreenchange",D),document.removeEventListener("keydown",nt)}),($,_)=>{var K;return e.openBlock(),e.createElementBlock("div",yt,[e.createElementVNode("div",kt,[e.createElementVNode("div",{class:"header__collapse",onClick:m},[e.createVNode(e.unref(E.Icon),{name:e.unref(i).isCollapsed?"menu-unfold":"menu-fold",size:18},null,8,["name"])]),e.unref(i).showBreadcrumb?(e.openBlock(),e.createElementBlock("div",Ct,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(x.value,(w,Y)=>(e.openBlock(),e.createElementBlock("span",{key:w.path},[Y>0?(e.openBlock(),e.createElementBlock("span",wt,"/")):e.createCommentVNode("",!0),e.createElementVNode("span",{class:e.normalizeClass({"is-current":Y===x.value.length-1})},e.toDisplayString(w.title),3)]))),128))])):e.createCommentVNode("",!0)]),e.createElementVNode("div",Bt,[e.createElementVNode("div",{class:"header__action",onClick:ve,title:"搜索 (Ctrl+K)"},[e.createVNode(e.unref(E.Icon),{name:"search",size:16})]),e.createElementVNode("div",{class:"header__action",onClick:we,title:d.value?"退出全屏":"全屏"},[e.createVNode(e.unref(E.Icon),{name:d.value?"fullscreen-exit":"fullscreen",size:16},null,8,["name"])],8,St),e.createElementVNode("div",{class:"header__action",onClick:C,title:"换肤设置"},[e.createVNode(e.unref(E.Icon),{name:"setting",size:16})]),e.createElementVNode("div",{class:"header__action",onClick:s,title:"切换主题"},[e.createVNode(e.unref(E.Icon),{name:e.unref(i).isDark?"sun":"moon",size:16},null,8,["name"])]),e.createElementVNode("div",{class:"header__user",ref_key:"dropdownRef",ref:N},[e.createElementVNode("div",{class:"header__user-trigger",onClick:e.withModifiers(ae,["stop"])},[e.createElementVNode("div",bt,[e.createElementVNode("span",null,e.toDisplayString(((K=e.unref(c).userName)==null?void 0:K.charAt(0))||"U"),1)]),e.createElementVNode("span",xt,e.toDisplayString(e.unref(c).userName),1),e.createElementVNode("span",{class:e.normalizeClass(["header__user-arrow",{"is-active":a.value}])},"▼",2)]),e.createVNode(e.Transition,{name:"dropdown"},{default:e.withCtx(()=>{var w;return[a.value?(e.openBlock(),e.createElementBlock("div",It,[e.createElementVNode("div",Tt,[e.createElementVNode("div",Dt,[e.createElementVNode("span",null,e.toDisplayString(((w=e.unref(c).userName)==null?void 0:w.charAt(0))||"U"),1)]),e.createElementVNode("div",Lt,[e.createElementVNode("div",$t,e.toDisplayString(e.unref(c).userName),1),e.createElementVNode("div",Ut,e.toDisplayString(e.unref(c).departmentName),1)])]),_[8]||(_[8]=e.createElementVNode("div",{class:"header__dropdown-divider"},null,-1)),e.createElementVNode("div",Mt,[e.createElementVNode("div",{class:"header__dropdown-item",onClick:vo},[e.createVNode(e.unref(E.Icon),{name:"user",size:16}),_[4]||(_[4]=e.createElementVNode("span",null,"个人信息",-1))]),e.createElementVNode("div",{class:"header__dropdown-item",onClick:el},[e.createVNode(e.unref(E.Icon),{name:"lock",size:16}),_[5]||(_[5]=e.createElementVNode("span",null,"修改密码",-1))]),_[7]||(_[7]=e.createElementVNode("div",{class:"header__dropdown-divider"},null,-1)),e.createElementVNode("div",{class:"header__dropdown-item header__dropdown-item--danger",onClick:tl},[e.createVNode(e.unref(E.Icon),{name:"logout",size:16}),_[6]||(_[6]=e.createElementVNode("span",null,"退出登录",-1))])])])):e.createCommentVNode("",!0)]}),_:1})],512)]),e.createVNode(e.Transition,{name:"search"},{default:e.withCtx(()=>[g.value?(e.openBlock(),e.createElementBlock("div",{key:0,class:"header__search-modal",ref_key:"searchRef",ref:I},[e.createElementVNode("div",At,[e.createElementVNode("div",Rt,[e.createVNode(e.unref(E.Icon),{class:"search-icon",name:"search",size:20}),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":_[0]||(_[0]=w=>y.value=w),type:"text",class:"search-input",placeholder:"搜索菜单...",autofocus:"",onKeyup:_[1]||(_[1]=e.withKeys(w=>z.value[0]&&et(z.value[0].path),["enter"]))},null,544),[[e.vModelText,y.value]]),_[9]||(_[9]=e.createElementVNode("span",{class:"search-shortcut"},"ESC 关闭",-1))]),z.value.length>0?(e.openBlock(),e.createElementBlock("div",zt,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(z.value,(w,Y)=>(e.openBlock(),e.createElementBlock("div",{key:w.path,class:e.normalizeClass(["search-result-item",{"is-first":Y===0}]),onClick:gl=>et(w.path)},[e.createVNode(e.unref(E.Icon),{class:"search-result-icon",name:w.icon||"file",size:20},null,8,["name"]),e.createElementVNode("div",Pt,[e.createElementVNode("span",Ot,e.toDisplayString(w.title),1),w.parentTitle?(e.openBlock(),e.createElementBlock("span",qt,e.toDisplayString(w.parentTitle),1)):e.createCommentVNode("",!0)])],10,Ft))),128))])):y.value?(e.openBlock(),e.createElementBlock("div",jt," 未找到匹配的菜单 ")):e.createCommentVNode("",!0)])],512)):e.createCommentVNode("",!0)]),_:1}),e.createVNode(e.unref(M.Drawer),{modelValue:V.value,"onUpdate:modelValue":_[3]||(_[3]=w=>V.value=w),title:"换肤设置",direction:"rtl",size:"320px"},{default:e.withCtx(()=>[e.createElementVNode("div",Kt,[e.createElementVNode("div",Yt,[_[13]||(_[13]=e.createElementVNode("div",{class:"settings-title"},"布局模式",-1)),e.createElementVNode("div",Wt,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(u,w=>e.createElementVNode("div",{key:w.value,class:e.normalizeClass(["layout-option",{"is-active":S.value===w.value}]),onClick:Y=>O(w.value)},[e.createElementVNode("div",Xt,[w.value==="sidebar"?(e.openBlock(),e.createElementBlock("div",Gt,[..._[10]||(_[10]=[e.createElementVNode("div",{class:"preview-aside"},null,-1),e.createElementVNode("div",{class:"preview-main"},[e.createElementVNode("div",{class:"preview-header"}),e.createElementVNode("div",{class:"preview-content"})],-1)])])):w.value==="top"?(e.openBlock(),e.createElementBlock("div",Jt,[..._[11]||(_[11]=[e.createElementVNode("div",{class:"preview-header-full"},null,-1),e.createElementVNode("div",{class:"preview-content-full"},null,-1)])])):(e.openBlock(),e.createElementBlock("div",Qt,[..._[12]||(_[12]=[e.createElementVNode("div",{class:"preview-header-mix"},[e.createElementVNode("div",{class:"preview-mix-left"})],-1),e.createElementVNode("div",{class:"preview-mix-body"},[e.createElementVNode("div",{class:"preview-mix-aside"}),e.createElementVNode("div",{class:"preview-mix-content"})],-1)])]))]),e.createElementVNode("span",Zt,e.toDisplayString(w.label),1)],10,Ht)),64))])]),e.createElementVNode("div",vt,[_[14]||(_[14]=e.createElementVNode("div",{class:"settings-title"},"主题色",-1)),e.createElementVNode("div",en,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(f,w=>e.createElementVNode("div",{key:w.value,class:e.normalizeClass(["color-option",{"is-active":e.unref(i).primaryColor===w.value}]),style:e.normalizeStyle({backgroundColor:w.value}),title:w.label,onClick:Y=>Zo(w.value)},[e.unref(i).primaryColor===w.value?(e.openBlock(),e.createBlock(e.unref(E.Icon),{key:0,name:"check",size:12,color:"#fff"})):e.createCommentVNode("",!0)],14,tn)),64))])]),e.createElementVNode("div",nn,[_[19]||(_[19]=e.createElementVNode("div",{class:"settings-title"},"功能设置",-1)),e.createElementVNode("div",on,[e.createElementVNode("div",ln,[_[16]||(_[16]=e.createElementVNode("span",null,"灰色模式",-1)),e.createElementVNode("div",{class:e.normalizeClass(["switch-wrapper",{"is-checked":b.value}]),onClick:_[2]||(_[2]=w=>Ce(!b.value))},[..._[15]||(_[15]=[e.createElementVNode("span",{class:"switch-core"},null,-1)])],2)]),e.createElementVNode("div",an,[_[18]||(_[18]=e.createElementVNode("span",null,"暗黑模式",-1)),e.createElementVNode("div",{class:e.normalizeClass(["switch-wrapper",{"is-checked":e.unref(i).isDark}]),onClick:s},[..._[17]||(_[17]=[e.createElementVNode("span",{class:"switch-core"},null,-1)])],2)])])])])]),_:1},8,["modelValue"])])}}}),[["__scopeId","data-v-de94213f"]]),rn={class:"layout"},sn={class:"layout__main"},dn={class:"layout__header"},cn={class:"layout__content"},ge=F(e.defineComponent({__name:"index",setup(t){const o=q(),l=e.computed(()=>o.isCollapsed?"64px":"210px");return(i,c)=>{const r=e.resolveComponent("router-view");return e.openBlock(),e.createElementBlock("div",rn,[e.createElementVNode("aside",{class:"layout__aside",style:e.normalizeStyle({width:l.value})},[e.createVNode(Re)],4),e.createElementVNode("div",sn,[e.createElementVNode("header",dn,[e.createVNode(ze)]),e.createElementVNode("main",cn,[e.createVNode(r)])])])}}}),[["__scopeId","data-v-a3110011"]]),mn=Object.freeze(Object.defineProperty({__proto__:null,default:ge},Symbol.toStringTag,{value:"Module"})),pn={class:"tabs-wrapper"},un={class:"tab-label"},fn=["onClick"],hn=F(e.defineComponent({__name:"Tabs",setup(t){const o=R.useRoute(),l=R.useRouter(),i=e.computed(()=>{const a=[];return o.matched.forEach(V=>{var N;(N=V.meta)!=null&&N.affix&&a.push({name:V.name,title:V.meta.title,path:V.path,affix:!0})}),a}),c=e.computed(()=>o.path),r=a=>{l.push(a)},p=a=>{const V=i.value.find(N=>N.path===a);if(!(V!=null&&V.affix)&&a===c.value){const N=i.value.findIndex(g=>g.path===a),d=i.value[N-1]||i.value[N+1];d&&l.push(d.path)}};return(a,V)=>(e.openBlock(),e.createElementBlock("div",pn,[e.createVNode(e.unref(j.Tabs),{modelValue:c.value,"onUpdate:modelValue":V[0]||(V[0]=N=>c.value=N),type:"card",onTabClick:r},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(i.value,N=>(e.openBlock(),e.createBlock(e.unref(j.TabPane),{key:N.path,name:N.path,label:N.title,closable:!N.affix},{label:e.withCtx(()=>[e.createElementVNode("span",un,[e.createTextVNode(e.toDisplayString(N.title)+" ",1),N.affix?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("span",{key:0,class:"tab-close",onClick:e.withModifiers(d=>p(N.path),["stop"])}," ✕ ",8,fn))])]),_:2},1032,["name","label","closable"]))),128))]),_:1},8,["modelValue"])]))}}),[["__scopeId","data-v-9156d8cd"]]),Vn={},gn={class:"footer"};function Nn(t,o){return e.openBlock(),e.createElementBlock("div",gn,[...o[0]||(o[0]=[e.createElementVNode("span",null,"Copyright © 2024 Xto Demo. All Rights Reserved.",-1)])])}const _n=F(Vn,[["render",Nn],["__scopeId","data-v-4852826a"]]),Q=(()=>{const t=ot.create({baseURL:void 0,timeout:3e4,headers:{"Content-Type":"application/json"}});return t.interceptors.request.use(o=>{const l=J(),i=Ie()||"Bearer";return l&&(o.headers.Authorization=`${i} ${l}`),o},o=>Promise.reject(o)),t.interceptors.response.use(o=>{const{data:l}=o;return l.code===200||l.code===0?l.data:(M.Message.error(l.message||"请求失败"),Promise.reject(new Error(l.message||"请求失败")))},o=>{var i;const{response:l}=o;if(l)switch(l.status){case 401:M.Message.error("登录已过期,请重新登录"),he(),window.location.href="/login";break;case 403:M.Message.error("没有权限访问");break;case 404:M.Message.error("请求资源不存在");break;case 500:M.Message.error("服务器错误");break;default:M.Message.error(((i=l.data)==null?void 0:i.message)||"请求失败")}else M.Message.error("网络连接失败");return Promise.reject(o)}),t})(),L={get(t,o){return Q.get(t,o)},post(t,o,l){return Q.post(t,o,l)},put(t,o,l){return Q.put(t,o,l)},patch(t,o,l){return Q.patch(t,o,l)},delete(t,o){return Q.delete(t,o)}};function Fe(t){return L.post("/user/v1.0/login/by-domain",t)}function En(){return L.put("/user/v1.0/user/logout")}function Pe(){return L.get("/user/v1.0/user/get-me")}function yn(t){return L.post("/user/v1.0/refresh",{refreshToken:t})}const te=e.ref(""),ne=e.ref(""),oe=e.ref("");function kn(t){t.appId&&(te.value=t.appId),t.clientId&&(ne.value=t.clientId),t.apiBaseUrl&&(oe.value=t.apiBaseUrl)}function le(){if(te.value)return te.value;try{return""}catch{return""}}function Oe(){if(ne.value)return ne.value;try{return""}catch{return""}}function Cn(){if(oe.value)return oe.value;try{return""}catch{return""}}const wn={appId:te,clientId:ne,apiBaseUrl:oe},Bn={class:"login"},Sn={class:"login__container"},qe=F(e.defineComponent({__name:"index",setup(t){const o=R.useRouter(),l=R.useRoute(),i=e.ref(!1),c=e.ref(!1),r=e.reactive({uid:"",password:""}),p={uid:[{required:!0,message:"请输入用户名",trigger:"blur"}],password:[{required:!0,message:"请输入密码",trigger:"blur"},{min:6,message:"密码长度至少6位",trigger:"blur"}]},a=e.ref(),V=async()=>{var N;try{await((N=a.value)==null?void 0:N.validate()),i.value=!0;const d=await Fe({appId:le(),clientId:Oe(),uid:r.uid,password:r.password,code:!0});fe(d),M.Message.success("登录成功");const g=l.query.redirect||"/";o.push(g)}catch(d){console.error("登录失败:",d)}finally{i.value=!1}};return(N,d)=>(e.openBlock(),e.createElementBlock("div",Bn,[e.createElementVNode("div",Sn,[d[5]||(d[5]=e.createElementVNode("div",{class:"login__header"},[e.createElementVNode("img",{src:be,alt:"Logo",class:"login__logo"}),e.createElementVNode("h1",{class:"login__title"},"Xto Demo"),e.createElementVNode("p",{class:"login__subtitle"},"后台管理系统")],-1)),e.createVNode(e.unref(h.Form),{ref_key:"formRef",ref:a,model:r,rules:p,class:"login__form","label-width":"0"},{default:e.withCtx(()=>[e.createVNode(e.unref(h.FormItem),{prop:"uid"},{default:e.withCtx(()=>[e.createVNode(e.unref(h.Input),{modelValue:r.uid,"onUpdate:modelValue":d[0]||(d[0]=g=>r.uid=g),placeholder:"用户名",size:"large"},{prefix:e.withCtx(()=>[e.createVNode(e.unref(E.Icon),{name:"user",size:18})]),_:1},8,["modelValue"])]),_:1}),e.createVNode(e.unref(h.FormItem),{prop:"password"},{default:e.withCtx(()=>[e.createVNode(e.unref(h.Input),{modelValue:r.password,"onUpdate:modelValue":d[1]||(d[1]=g=>r.password=g),type:"password",placeholder:"密码",size:"large","show-password":"",onKeyup:e.withKeys(V,["enter"])},{prefix:e.withCtx(()=>[e.createVNode(e.unref(E.Icon),{name:"lock",size:18})]),_:1},8,["modelValue"])]),_:1}),e.createVNode(e.unref(h.FormItem),null,{default:e.withCtx(()=>[e.createVNode(e.unref(h.Checkbox),{modelValue:c.value,"onUpdate:modelValue":d[2]||(d[2]=g=>c.value=g)},{default:e.withCtx(()=>[...d[3]||(d[3]=[e.createTextVNode("记住我",-1)])]),_:1},8,["modelValue"])]),_:1}),e.createVNode(e.unref(h.FormItem),null,{default:e.withCtx(()=>[e.createVNode(e.unref(E.Button),{type:"primary",size:"large",loading:i.value,class:"login__submit",onClick:V},{default:e.withCtx(()=>[...d[4]||(d[4]=[e.createTextVNode(" 登录 ",-1)])]),_:1},8,["loading"])]),_:1})]),_:1},8,["model"]),d[6]||(d[6]=e.createElementVNode("div",{class:"login__footer"},[e.createElementVNode("p",null,"请输入您的用户名和密码")],-1))])]))}}),[["__scopeId","data-v-6e75b294"]]),bn=Object.freeze(Object.defineProperty({__proto__:null,default:qe},Symbol.toStringTag,{value:"Module"})),xn={class:"error-page"},In={class:"error-page__content"},je=F(e.defineComponent({__name:"404",setup(t){const o=R.useRouter(),l=()=>{o.push("/")};return(i,c)=>(e.openBlock(),e.createElementBlock("div",xn,[e.createElementVNode("div",In,[c[1]||(c[1]=e.createElementVNode("div",{class:"error-page__code"},"404",-1)),c[2]||(c[2]=e.createElementVNode("div",{class:"error-page__title"},"页面不存在",-1)),c[3]||(c[3]=e.createElementVNode("div",{class:"error-page__desc"},"抱歉,您访问的页面不存在或已被删除",-1)),e.createVNode(e.unref(E.Button),{type:"primary",onClick:l},{default:e.withCtx(()=>[...c[0]||(c[0]=[e.createTextVNode("返回首页",-1)])]),_:1})])]))}}),[["__scopeId","data-v-c3c12c24"]]),Tn=Object.freeze(Object.defineProperty({__proto__:null,default:je},Symbol.toStringTag,{value:"Module"})),Dn={class:"error-page"},Ln={class:"error-page__content"},Ke=F(e.defineComponent({__name:"403",setup(t){const o=R.useRouter(),l=()=>{o.push("/")};return(i,c)=>(e.openBlock(),e.createElementBlock("div",Dn,[e.createElementVNode("div",Ln,[c[1]||(c[1]=e.createElementVNode("div",{class:"error-page__code"},"403",-1)),c[2]||(c[2]=e.createElementVNode("div",{class:"error-page__title"},"无访问权限",-1)),c[3]||(c[3]=e.createElementVNode("div",{class:"error-page__desc"},"抱歉,您没有权限访问此页面",-1)),e.createVNode(e.unref(E.Button),{type:"primary",onClick:l},{default:e.withCtx(()=>[...c[0]||(c[0]=[e.createTextVNode("返回首页",-1)])]),_:1})])]))}}),[["__scopeId","data-v-dd5f2795"]]),$n=Object.freeze(Object.defineProperty({__proto__:null,default:Ke},Symbol.toStringTag,{value:"Module"}));function Un(){const t=q(),o=P(),l=ee(),i=e.computed(()=>o.userName||""),c=e.computed(()=>o.userInfo),r=e.computed(()=>t.appName),p=e.computed(()=>l.isLoggedIn),a=e.computed(()=>t.isDark),V=e.computed(()=>t.theme),N=e.computed(()=>t.isCollapsed),d=e.computed(()=>t.layout);return{userName:i,userInfo:c,appName:r,isLoggedIn:p,isDark:a,theme:V,isCollapsed:N,layout:d,toggleTheme:()=>{t.toggleTheme()},toggleCollapse:()=>{t.toggleCollapse()}}}function Mn(){const t=P();return{isLoggedIn:e.computed(()=>t.isLoggedIn)}}function An(t,o={}){const{rules:l,onSubmit:i}=o,c=e.ref(),r=e.reactive({...t}),p=e.ref(!1),a=e.ref(!1),V=e.ref(!1),N=()=>{y(),V.value=!1,a.value=!0},d=b=>{Object.assign(r,b),V.value=!0,a.value=!0},g=()=>{a.value=!1,y()},y=()=>{var b;Object.keys(t).forEach(u=>{r[u]=t[u]}),(b=c.value)==null||b.resetFields()};return{formRef:c,formData:r,rules:l,loading:p,visible:a,isEdit:V,openAdd:N,openEdit:d,close:g,resetForm:y,handleSubmit:async()=>{var b;try{await((b=c.value)==null?void 0:b.validate()),p.value=!0,await(i==null?void 0:i(r)),g()}catch(u){console.error(u)}finally{p.value=!1}}}}function Rn(t){const{fetchData:o,defaultPageSize:l=10}=t,i=e.ref(!1),c=e.ref([]),r=e.ref(0),p=e.ref(1),a=e.ref(l),V=e.reactive({}),N=async()=>{i.value=!0;try{const f={...V,page:p.value,pageSize:a.value},x=await o(f);c.value=x.list,r.value=x.total}catch(f){console.error(f)}finally{i.value=!1}},d=()=>{p.value=1,N()},g=()=>{Object.keys(V).forEach(f=>{V[f]=void 0}),p.value=1,N()},y=f=>{p.value=f,N()},I=f=>{a.value=f,p.value=1,N()},b=()=>{N()},u=e.computed(()=>({current:p.value,pageSize:a.value,total:r.value}));return{loading:i,data:c,total:r,currentPage:p,pageSize:a,searchParams:V,pagination:u,getData:N,handleSearch:d,handleReset:g,handlePageChange:y,handleSizeChange:I,refresh:b}}function zn(t){return P().isLoggedIn}function Fn(t){return P().isLoggedIn}function Pn(){return!0}const Ne=[{path:"/login",name:"Login",component:()=>Promise.resolve().then(()=>bn),meta:{title:"登录",hidden:!0}},{path:"/404",name:"NotFound",component:()=>Promise.resolve().then(()=>Tn),meta:{title:"404",hidden:!0}},{path:"/403",name:"Forbidden",component:()=>Promise.resolve().then(()=>$n),meta:{title:"403",hidden:!0}}],_e={path:"/:pathMatch(.*)*",redirect:"/404",meta:{hidden:!0}},Ee={path:"/",name:"Layout",component:()=>Promise.resolve().then(()=>mn),redirect:"/dashboard",children:[{path:"/dashboard",name:"Dashboard",component:()=>Promise.resolve().then(()=>Ge),meta:{title:"仪表盘",icon:"dashboard",keepAlive:!0,affix:!0}},{path:"/system/user",name:"SystemUser",component:()=>Promise.resolve().then(()=>Je),meta:{title:"用户管理",icon:"user",keepAlive:!0}},{path:"/system/role",name:"SystemRole",component:()=>Promise.resolve().then(()=>Qe),meta:{title:"角色管理",icon:"role",keepAlive:!0}},{path:"/system/menu",name:"SystemMenu",component:()=>Promise.resolve().then(()=>Ze),meta:{title:"菜单管理",icon:"menu",keepAlive:!0}}]},On=[{path:"/dashboard",name:"Dashboard",component:()=>Promise.resolve().then(()=>Ge),meta:{title:"仪表盘",icon:"dashboard",keepAlive:!0,affix:!0}},{path:"/system",name:"System",redirect:"/system/user",meta:{title:"系统管理",icon:"setting"},children:[{path:"user",name:"SystemUser",component:()=>Promise.resolve().then(()=>Je),meta:{title:"用户管理",icon:"user",keepAlive:!0}},{path:"role",name:"SystemRole",component:()=>Promise.resolve().then(()=>Qe),meta:{title:"角色管理",icon:"role",keepAlive:!0}},{path:"menu",name:"SystemMenu",component:()=>Promise.resolve().then(()=>Ze),meta:{title:"菜单管理",icon:"menu",keepAlive:!0}}]}],Ye=[{menuCode:"dashboard",menuName:"仪表盘",menuUrl:"/dashboard",icon:"dashboard",closable:!0,isDefault:!0,isOut:!1},{menuCode:"system",menuName:"系统管理",menuUrl:"/system",icon:"setting",closable:!1,isDefault:!1,isOut:!1,children:[{menuCode:"system_user",menuName:"用户管理",menuUrl:"/system/user",icon:"user",closable:!0,isDefault:!1,isOut:!1},{menuCode:"system_role",menuName:"角色管理",menuUrl:"/system/role",icon:"role",closable:!0,isDefault:!1,isOut:!1},{menuCode:"system_menu",menuName:"菜单管理",menuUrl:"/system/menu",icon:"menu",closable:!0,isDefault:!1,isOut:!1}]}],ye=R.createRouter({history:R.createWebHistory(),routes:[...Ne,Ee,_e],scrollBehavior:()=>({left:0,top:0})}),qn=["/login","/404","/403"];ye.beforeEach(async(t,o,l)=>{const i=q();if(i.initTheme(),Ve())if(t.path==="/login")l({path:"/"});else{const c=P();c.isLoggedIn||(c.setUserInfo({appId:le(),userId:"1",userName:"管理员",departmentName:"技术部",email:"admin@example.com",mobilePhone:"13800138000",positionName:"管理员",avatar:""}),G().setMenuList(Ye)),t.name&&t.meta.keepAlive&&i.addCachedView(t.name),l()}else qn.includes(t.path)?l():l("/login")});function jn(){const t=R.createRouter({history:R.createWebHistory(),routes:[...Ne,Ee,_e]});ye.matcher=t.matcher}function Kn(t,o={}){const l=o.indexPath||"/dashboard";return{path:"/",name:"Layout",component:ge,redirect:l,children:t}}function Yn(t){return R.createRouter({history:R.createWebHistory(),routes:t,scrollBehavior:()=>({left:0,top:0})})}function Wn(t){return L.get("/role/list",{params:t})}function Hn(t){return L.get(`/role/${t}`)}function Xn(t){return L.post("/role",t)}function Gn(t,o){return L.put(`/role/${t}`,o)}function Jn(t){return L.delete(`/role/${t}`)}function Qn(t,o){return L.patch(`/role/${t}/status`,{status:o})}function Zn(){return L.get("/user/v1.0/menu/list")}function We(t){const o=t||le();return L.get(`/user/v1.0/menu/get-menu?appId=${o}`)}function vn(t){return L.post("/menu",t)}function eo(t,o){return L.put(`/menu/${t}`,o)}function to(t){return L.delete(`/menu/${t}`)}const no=["/login","/404","/403"];function oo(t,o={}){const l=o.whiteList||no,i=o.loginPath||"/login",c=o.homePath||"/";t.beforeEach(async(r,p,a)=>{const V=q(),N=P(),d=G();if(V.initTheme(),J())if(r.path===i)a({path:c});else if(N.isLoggedIn)r.name&&r.meta.keepAlive&&V.addCachedView(r.name),a();else try{if(o.fetchUserInfo){const y=await o.fetchUserInfo();N.setUserInfo(y)}else{const y=await Pe();N.setUserInfo(y)}if(o.fetchMenu){const y=await o.fetchMenu();d.setMenuList(y)}else{const y=await We(o.appId);d.setMenuList(y)}o.onLoginSuccess&&o.onLoginSuccess(),r.name&&r.meta.keepAlive&&V.addCachedView(r.name),a({...r,replace:!0})}catch(y){console.error("获取用户信息失败:",y),N.clearUserInfo(),d.clearMenu(),localStorage.removeItem("token"),localStorage.removeItem("token_type"),localStorage.removeItem("refresh_token"),a({path:i,query:{redirect:r.fullPath}})}else l.includes(r.path)?a():a({path:i,query:{redirect:r.fullPath}})}),t.afterEach(()=>{})}function lo(t){return L.get("/user/list",{params:t})}function ao(t){return L.get(`/user/${t}`)}function ro(t){return L.post("/user",t)}function so(t,o){return L.put(`/user/${t}`,o)}function io(t){return L.delete(`/user/${t}`)}function co(t){return L.post("/user/batch-delete",{ids:t})}function mo(t,o){return L.patch(`/user/${t}/status`,{status:o})}function po(t){return L.post(`/user/${t}/reset-password`)}var B=(t=>(t[t.ENABLED=1]="ENABLED",t[t.DISABLED=0]="DISABLED",t))(B||{}),He=(t=>(t[t.UNKNOWN=0]="UNKNOWN",t[t.MALE=1]="MALE",t[t.FEMALE=2]="FEMALE",t))(He||{}),A=(t=>(t[t.DIRECTORY=0]="DIRECTORY",t[t.MENU=1]="MENU",t[t.BUTTON=2]="BUTTON",t))(A||{});const uo={1:"启用",0:"禁用"},fo={0:"未知",1:"男",2:"女"},ho={0:"目录",1:"菜单",2:"按钮"},ke=[{label:"启用",value:1},{label:"禁用",value:0}],Vo=[{label:"未知",value:0},{label:"男",value:1},{label:"女",value:2}],Xe=[{label:"目录",value:0},{label:"菜单",value:1},{label:"按钮",value:2}],go={mounted(t,o){var i;P().isLoggedIn||(i=t.parentNode)==null||i.removeChild(t)}},No={class:"dashboard"},_o={class:"dashboard__stats"},Eo={class:"stat-card__content"},yo={class:"stat-card__info"},ko={class:"stat-card__title"},Co={class:"dashboard__main"},wo={class:"quick-links"},Bo={class:"quick-link__icon"},So={class:"quick-link__title"},bo={class:"activity-list"},xo={class:"activity-item__action"},Io={class:"activity-item__time"},To={class:"system-info"},Do={class:"system-info__item"},Lo={class:"system-info__item"},Ge=Object.freeze(Object.defineProperty({__proto__:null,default:F(e.defineComponent({__name:"index",setup(t){const o=e.ref([{title:"用户总数",value:1234,icon:"👥",color:"#409eff"},{title:"今日访问",value:567,icon:"👀",color:"#67c23a"},{title:"订单数量",value:890,icon:"📦",color:"#e6a23c"},{title:"销售金额",value:123456,icon:"💰",color:"#f56c6c"}]),l=e.ref([{user:"张三",action:"登录系统",time:"2分钟前",type:"success"},{user:"李四",action:"修改了用户信息",time:"5分钟前",type:"warning"},{user:"王五",action:"创建了新订单",time:"10分钟前",type:"info"},{user:"赵六",action:"删除了测试数据",time:"30分钟前",type:"danger"},{user:"钱七",action:"更新了系统配置",time:"1小时前",type:"primary"}]),i=e.ref([{title:"用户管理",path:"/system/user",icon:"👤"},{title:"角色管理",path:"/system/role",icon:"👥"},{title:"菜单管理",path:"/system/menu",icon:"📋"},{title:"系统设置",path:"/system",icon:"⚙️"}]);return(c,r)=>{const p=e.resolveComponent("router-link");return e.openBlock(),e.createElementBlock("div",No,[e.createElementVNode("div",_o,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.value,a=>(e.openBlock(),e.createBlock(e.unref(U.Card),{key:a.title,class:"stat-card"},{default:e.withCtx(()=>[e.createElementVNode("div",Eo,[e.createElementVNode("div",{class:"stat-card__icon",style:e.normalizeStyle({backgroundColor:a.color+"20"})},e.toDisplayString(a.icon),5),e.createElementVNode("div",yo,[e.createElementVNode("div",ko,e.toDisplayString(a.title),1),e.createElementVNode("div",{class:"stat-card__value",style:e.normalizeStyle({color:a.color})},e.toDisplayString(a.value.toLocaleString()),5)])])]),_:2},1024))),128))]),e.createElementVNode("div",Co,[e.createVNode(e.unref(U.Card),{class:"dashboard__quick"},{header:e.withCtx(()=>[...r[0]||(r[0]=[e.createElementVNode("span",{class:"card-title"},"快捷入口",-1)])]),default:e.withCtx(()=>[e.createElementVNode("div",wo,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(i.value,a=>(e.openBlock(),e.createBlock(p,{key:a.path,to:a.path,class:"quick-link"},{default:e.withCtx(()=>[e.createElementVNode("span",Bo,e.toDisplayString(a.icon),1),e.createElementVNode("span",So,e.toDisplayString(a.title),1)]),_:2},1032,["to"]))),128))])]),_:1}),e.createVNode(e.unref(U.Card),{class:"dashboard__activity"},{header:e.withCtx(()=>[...r[1]||(r[1]=[e.createElementVNode("span",{class:"card-title"},"最近活动",-1)])]),default:e.withCtx(()=>[e.createElementVNode("div",bo,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(l.value,(a,V)=>(e.openBlock(),e.createElementBlock("div",{key:V,class:"activity-item"},[e.createVNode(e.unref(U.Tag),{type:a.type,size:"small"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(a.user),1)]),_:2},1032,["type"]),e.createElementVNode("span",xo,e.toDisplayString(a.action),1),e.createElementVNode("span",Io,e.toDisplayString(a.time),1)]))),128))])]),_:1})]),e.createVNode(e.unref(U.Card),{class:"dashboard__system"},{header:e.withCtx(()=>[...r[2]||(r[2]=[e.createElementVNode("span",{class:"card-title"},"系统信息",-1)])]),default:e.withCtx(()=>[e.createElementVNode("div",To,[r[5]||(r[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)),r[6]||(r[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)),r[7]||(r[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)),r[8]||(r[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",Do,[r[3]||(r[3]=e.createElementVNode("span",{class:"system-info__label"},"服务器状态",-1)),e.createVNode(e.unref(U.Progress),{percentage:75,status:"success"})]),e.createElementVNode("div",Lo,[r[4]||(r[4]=e.createElementVNode("span",{class:"system-info__label"},"内存使用",-1)),e.createVNode(e.unref(U.Progress),{percentage:45})])])]),_:1})])}}}),[["__scopeId","data-v-44648cb1"]])},Symbol.toStringTag,{value:"Module"})),$o={class:"user-page"},Uo={class:"toolbar"},Mo={class:"data-table"},Ao={key:0},Ro={key:1},zo={class:"pagination-wrapper"},Je=Object.freeze(Object.defineProperty({__proto__:null,default:F(e.defineComponent({__name:"index",setup(t){const o=[{id:1,username:"admin",nickname:"管理员",email:"admin@example.com",phone:"13800138001",status:B.ENABLED,roles:["admin"],createTime:"2024-01-01 10:00:00"},{id:2,username:"zhangsan",nickname:"张三",email:"zhangsan@example.com",phone:"13800138002",status:B.ENABLED,roles:["editor"],createTime:"2024-01-02 10:00:00"},{id:3,username:"lisi",nickname:"李四",email:"lisi@example.com",phone:"13800138003",status:B.DISABLED,roles:["viewer"],createTime:"2024-01-03 10:00:00"},{id:4,username:"wangwu",nickname:"王五",email:"wangwu@example.com",phone:"13800138004",status:B.ENABLED,roles:["editor"],createTime:"2024-01-04 10:00:00"},{id:5,username:"zhaoliu",nickname:"赵六",email:"zhaoliu@example.com",phone:"13800138005",status:B.ENABLED,roles:["viewer"],createTime:"2024-01-05 10:00:00"}],l=e.ref(!1),i=e.ref([]),c=e.ref(0),r=e.ref(1),p=e.ref(10),a=e.reactive({keyword:"",status:void 0}),V=e.ref(!1),N=e.computed(()=>d.id?"编辑用户":"新增用户"),d=e.reactive({id:0,username:"",nickname:"",email:"",phone:"",status:B.ENABLED,roles:[]}),g={username:[{required:!0,message:"请输入用户名",trigger:"blur"}],nickname:[{required:!0,message:"请输入昵称",trigger:"blur"}],email:[{required:!0,message:"请输入邮箱",trigger:"blur"},{type:"email",message:"请输入正确的邮箱格式",trigger:"blur"}]},y=e.ref(),I=()=>{l.value=!0,setTimeout(()=>{let m=[...o];a.keyword&&(m=m.filter(s=>s.username.includes(a.keyword)||s.nickname.includes(a.keyword))),a.status!==void 0&&(m=m.filter(s=>s.status===a.status)),c.value=m.length,i.value=m.slice((r.value-1)*p.value,r.value*p.value),l.value=!1},300)},b=()=>{r.value=1,I()},u=()=>{a.keyword="",a.status=void 0,r.value=1,I()},f=()=>{Object.assign(d,{id:0,username:"",nickname:"",email:"",phone:"",status:B.ENABLED,roles:[]}),V.value=!0},x=m=>{Object.assign(d,m),V.value=!0},T=m=>{M.Message.success("删除成功"),I()},z=async()=>{var m;try{await((m=y.value)==null?void 0:m.validate()),M.Message.success(d.id?"编辑成功":"新增成功"),V.value=!1,I()}catch(s){console.error(s)}},S=m=>{M.Message.success(`已${m.status===B.ENABLED?"启用":"禁用"}用户 ${m.username}`)};return e.onMounted(()=>{I()}),(m,s)=>(e.openBlock(),e.createElementBlock("div",$o,[e.createVNode(e.unref(U.Card),{class:"search-card"},{default:e.withCtx(()=>[e.createVNode(e.unref(h.Form),{model:a,inline:""},{default:e.withCtx(()=>[e.createVNode(e.unref(h.FormItem),{label:"关键词"},{default:e.withCtx(()=>[e.createVNode(e.unref(h.Input),{modelValue:a.keyword,"onUpdate:modelValue":s[0]||(s[0]=C=>a.keyword=C),placeholder:"用户名/昵称",clearable:"",onKeyup:e.withKeys(b,["enter"])},null,8,["modelValue"])]),_:1}),e.createVNode(e.unref(h.FormItem),{label:"状态"},{default:e.withCtx(()=>[e.createVNode(e.unref(h.Select),{modelValue:a.status,"onUpdate:modelValue":s[1]||(s[1]=C=>a.status=C),options:e.unref(ke),placeholder:"请选择",clearable:""},null,8,["modelValue","options"])]),_:1}),e.createVNode(e.unref(h.FormItem),null,{default:e.withCtx(()=>[e.createVNode(e.unref(E.Space),null,{default:e.withCtx(()=>[e.createVNode(e.unref(E.Button),{type:"primary",onClick:b},{default:e.withCtx(()=>[...s[11]||(s[11]=[e.createTextVNode("搜索",-1)])]),_:1}),e.createVNode(e.unref(E.Button),{onClick:u},{default:e.withCtx(()=>[...s[12]||(s[12]=[e.createTextVNode("重置",-1)])]),_:1})]),_:1})]),_:1})]),_:1},8,["model"])]),_:1}),e.createVNode(e.unref(U.Card),{class:"table-card"},{default:e.withCtx(()=>[e.createElementVNode("div",Uo,[e.createVNode(e.unref(E.Button),{type:"primary",onClick:f},{default:e.withCtx(()=>[...s[13]||(s[13]=[e.createTextVNode("新增用户",-1)])]),_:1})]),e.createElementVNode("table",Mo,[s[18]||(s[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",Ao,[...s[14]||(s[14]=[e.createElementVNode("td",{colspan:"9",class:"loading-cell"},"加载中...",-1)])])):i.value.length===0?(e.openBlock(),e.createElementBlock("tr",Ro,[...s[15]||(s[15]=[e.createElementVNode("td",{colspan:"9",class:"empty-cell"},"暂无数据",-1)])])):(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:2},e.renderList(i.value,C=>(e.openBlock(),e.createElementBlock("tr",{key:C.id},[e.createElementVNode("td",null,e.toDisplayString(C.id),1),e.createElementVNode("td",null,e.toDisplayString(C.username),1),e.createElementVNode("td",null,e.toDisplayString(C.nickname),1),e.createElementVNode("td",null,e.toDisplayString(C.email),1),e.createElementVNode("td",null,e.toDisplayString(C.phone),1),e.createElementVNode("td",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(C.roles,O=>(e.openBlock(),e.createBlock(e.unref(U.Tag),{key:O,size:"small"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(O),1)]),_:2},1024))),128))]),e.createElementVNode("td",null,[e.createVNode(e.unref(h.Switch),{"model-value":C.status===e.unref(B).ENABLED,"onUpdate:modelValue":O=>{C.status=O?e.unref(B).ENABLED:e.unref(B).DISABLED,S(C)}},null,8,["model-value","onUpdate:modelValue"])]),e.createElementVNode("td",null,e.toDisplayString(C.createTime),1),e.createElementVNode("td",null,[e.createVNode(e.unref(E.Space),null,{default:e.withCtx(()=>[e.createVNode(e.unref(E.Button),{type:"primary",link:"",size:"small",onClick:O=>x(C)},{default:e.withCtx(()=>[...s[16]||(s[16]=[e.createTextVNode("编辑",-1)])]),_:1},8,["onClick"]),e.createVNode(e.unref(M.Popconfirm),{title:"确定删除该用户吗?",onConfirm:O=>T(C.id)},{default:e.withCtx(()=>[e.createVNode(e.unref(E.Button),{type:"danger",link:"",size:"small"},{default:e.withCtx(()=>[...s[17]||(s[17]=[e.createTextVNode("删除",-1)])]),_:1})]),_:1},8,["onConfirm"])]),_:2},1024)])]))),128))])]),e.createElementVNode("div",zo,[e.createVNode(e.unref(U.Pagination),{"current-page":r.value,"onUpdate:currentPage":s[2]||(s[2]=C=>r.value=C),"page-size":p.value,"onUpdate:pageSize":s[3]||(s[3]=C=>p.value=C),total:c.value,"page-sizes":[10,20,50,100],layout:"total, sizes, prev, pager, next",onCurrentChange:I,onSizeChange:I},null,8,["current-page","page-size","total"])])]),_:1}),e.createVNode(e.unref(M.Modal),{modelValue:V.value,"onUpdate:modelValue":s[10]||(s[10]=C=>V.value=C),title:N.value,width:"500px"},{footer:e.withCtx(()=>[e.createVNode(e.unref(E.Space),null,{default:e.withCtx(()=>[e.createVNode(e.unref(E.Button),{onClick:s[9]||(s[9]=C=>V.value=!1)},{default:e.withCtx(()=>[...s[19]||(s[19]=[e.createTextVNode("取消",-1)])]),_:1}),e.createVNode(e.unref(E.Button),{type:"primary",onClick:z},{default:e.withCtx(()=>[...s[20]||(s[20]=[e.createTextVNode("确定",-1)])]),_:1})]),_:1})]),default:e.withCtx(()=>[e.createVNode(e.unref(h.Form),{ref_key:"formRef",ref:y,model:d,rules:g,"label-width":"80px"},{default:e.withCtx(()=>[e.createVNode(e.unref(h.FormItem),{label:"用户名",prop:"username"},{default:e.withCtx(()=>[e.createVNode(e.unref(h.Input),{modelValue:d.username,"onUpdate:modelValue":s[4]||(s[4]=C=>d.username=C),placeholder:"请输入用户名"},null,8,["modelValue"])]),_:1}),e.createVNode(e.unref(h.FormItem),{label:"昵称",prop:"nickname"},{default:e.withCtx(()=>[e.createVNode(e.unref(h.Input),{modelValue:d.nickname,"onUpdate:modelValue":s[5]||(s[5]=C=>d.nickname=C),placeholder:"请输入昵称"},null,8,["modelValue"])]),_:1}),e.createVNode(e.unref(h.FormItem),{label:"邮箱",prop:"email"},{default:e.withCtx(()=>[e.createVNode(e.unref(h.Input),{modelValue:d.email,"onUpdate:modelValue":s[6]||(s[6]=C=>d.email=C),placeholder:"请输入邮箱"},null,8,["modelValue"])]),_:1}),e.createVNode(e.unref(h.FormItem),{label:"手机号",prop:"phone"},{default:e.withCtx(()=>[e.createVNode(e.unref(h.Input),{modelValue:d.phone,"onUpdate:modelValue":s[7]||(s[7]=C=>d.phone=C),placeholder:"请输入手机号"},null,8,["modelValue"])]),_:1}),e.createVNode(e.unref(h.FormItem),{label:"状态"},{default:e.withCtx(()=>[e.createVNode(e.unref(h.Switch),{modelValue:d.status,"onUpdate:modelValue":s[8]||(s[8]=C=>d.status=C),"active-value":e.unref(B).ENABLED,"inactive-value":e.unref(B).DISABLED},null,8,["modelValue","active-value","inactive-value"])]),_:1})]),_:1},8,["model"])]),_:1},8,["modelValue","title"])]))}}),[["__scopeId","data-v-d2491ae0"]])},Symbol.toStringTag,{value:"Module"})),Fo={class:"role-page"},Po={class:"toolbar"},Oo={class:"data-table"},qo={key:0},jo={key:1},Ko={class:"pagination-wrapper"},Qe=Object.freeze(Object.defineProperty({__proto__:null,default:F(e.defineComponent({__name:"index",setup(t){const o=[{id:1,name:"超级管理员",code:"admin",description:"拥有所有权限",status:B.ENABLED,permissions:["*"],createTime:"2024-01-01 10:00:00"},{id:2,name:"编辑",code:"editor",description:"内容编辑权限",status:B.ENABLED,permissions:["user:read","user:write"],createTime:"2024-01-02 10:00:00"},{id:3,name:"访客",code:"viewer",description:"只读权限",status:B.ENABLED,permissions:["user:read"],createTime:"2024-01-03 10:00:00"}],l=e.ref(!1),i=e.ref([]),c=e.ref(0),r=e.ref(1),p=e.ref(10),a=e.reactive({keyword:"",status:void 0}),V=e.ref(!1),N=e.computed(()=>d.id?"编辑角色":"新增角色"),d=e.reactive({id:0,name:"",code:"",description:"",status:B.ENABLED,permissions:[]}),g={name:[{required:!0,message:"请输入角色名称",trigger:"blur"}],code:[{required:!0,message:"请输入角色编码",trigger:"blur"}]},y=e.ref(),I=()=>{l.value=!0,setTimeout(()=>{let S=[...o];a.keyword&&(S=S.filter(m=>m.name.includes(a.keyword)||m.code.includes(a.keyword))),a.status!==void 0&&(S=S.filter(m=>m.status===a.status)),c.value=S.length,i.value=S.slice((r.value-1)*p.value,r.value*p.value),l.value=!1},300)},b=()=>{r.value=1,I()},u=()=>{a.keyword="",a.status=void 0,r.value=1,I()},f=()=>{Object.assign(d,{id:0,name:"",code:"",description:"",status:B.ENABLED,permissions:[]}),V.value=!0},x=S=>{Object.assign(d,S),V.value=!0},T=S=>{M.Message.success("删除成功"),I()},z=async()=>{var S;try{await((S=y.value)==null?void 0:S.validate()),M.Message.success(d.id?"编辑成功":"新增成功"),V.value=!1,I()}catch(m){console.error(m)}};return e.onMounted(()=>{I()}),(S,m)=>(e.openBlock(),e.createElementBlock("div",Fo,[e.createVNode(e.unref(U.Card),{class:"search-card"},{default:e.withCtx(()=>[e.createVNode(e.unref(h.Form),{model:a,inline:""},{default:e.withCtx(()=>[e.createVNode(e.unref(h.FormItem),{label:"关键词"},{default:e.withCtx(()=>[e.createVNode(e.unref(h.Input),{modelValue:a.keyword,"onUpdate:modelValue":m[0]||(m[0]=s=>a.keyword=s),placeholder:"角色名称/编码",clearable:"",onKeyup:e.withKeys(b,["enter"])},null,8,["modelValue"])]),_:1}),e.createVNode(e.unref(h.FormItem),{label:"状态"},{default:e.withCtx(()=>[e.createVNode(e.unref(h.Select),{modelValue:a.status,"onUpdate:modelValue":m[1]||(m[1]=s=>a.status=s),options:e.unref(ke),placeholder:"请选择",clearable:""},null,8,["modelValue","options"])]),_:1}),e.createVNode(e.unref(h.FormItem),null,{default:e.withCtx(()=>[e.createVNode(e.unref(E.Space),null,{default:e.withCtx(()=>[e.createVNode(e.unref(E.Button),{type:"primary",onClick:b},{default:e.withCtx(()=>[...m[10]||(m[10]=[e.createTextVNode("搜索",-1)])]),_:1}),e.createVNode(e.unref(E.Button),{onClick:u},{default:e.withCtx(()=>[...m[11]||(m[11]=[e.createTextVNode("重置",-1)])]),_:1})]),_:1})]),_:1})]),_:1},8,["model"])]),_:1}),e.createVNode(e.unref(U.Card),{class:"table-card"},{default:e.withCtx(()=>[e.createElementVNode("div",Po,[e.createVNode(e.unref(E.Button),{type:"primary",onClick:f},{default:e.withCtx(()=>[...m[12]||(m[12]=[e.createTextVNode("新增角色",-1)])]),_:1})]),e.createElementVNode("table",Oo,[m[17]||(m[17]=e.createElementVNode("thead",null,[e.createElementVNode("tr",null,[e.createElementVNode("th",null,"ID"),e.createElementVNode("th",null,"角色名称"),e.createElementVNode("th",null,"角色编码"),e.createElementVNode("th",null,"描述"),e.createElementVNode("th",null,"状态"),e.createElementVNode("th",null,"创建时间"),e.createElementVNode("th",null,"操作")])],-1)),e.createElementVNode("tbody",null,[l.value?(e.openBlock(),e.createElementBlock("tr",qo,[...m[13]||(m[13]=[e.createElementVNode("td",{colspan:"7",class:"loading-cell"},"加载中...",-1)])])):i.value.length===0?(e.openBlock(),e.createElementBlock("tr",jo,[...m[14]||(m[14]=[e.createElementVNode("td",{colspan:"7",class:"empty-cell"},"暂无数据",-1)])])):(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:2},e.renderList(i.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.name),1),e.createElementVNode("td",null,[e.createVNode(e.unref(U.Tag),{type:"primary",size:"small"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(s.code),1)]),_:2},1024)]),e.createElementVNode("td",null,e.toDisplayString(s.description),1),e.createElementVNode("td",null,[e.createVNode(e.unref(U.Tag),{type:s.status===e.unref(B).ENABLED?"success":"danger",size:"small"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(s.status===e.unref(B).ENABLED?"启用":"禁用"),1)]),_:2},1032,["type"])]),e.createElementVNode("td",null,e.toDisplayString(s.createTime),1),e.createElementVNode("td",null,[e.createVNode(e.unref(E.Space),null,{default:e.withCtx(()=>[e.createVNode(e.unref(E.Button),{type:"primary",link:"",size:"small",onClick:C=>x(s)},{default:e.withCtx(()=>[...m[15]||(m[15]=[e.createTextVNode("编辑",-1)])]),_:1},8,["onClick"]),e.createVNode(e.unref(M.Popconfirm),{title:"确定删除该角色吗?",onConfirm:C=>T(s.id)},{default:e.withCtx(()=>[e.createVNode(e.unref(E.Button),{type:"danger",link:"",size:"small"},{default:e.withCtx(()=>[...m[16]||(m[16]=[e.createTextVNode("删除",-1)])]),_:1})]),_:1},8,["onConfirm"])]),_:2},1024)])]))),128))])]),e.createElementVNode("div",Ko,[e.createVNode(e.unref(U.Pagination),{"current-page":r.value,"onUpdate:currentPage":m[2]||(m[2]=s=>r.value=s),"page-size":p.value,"onUpdate:pageSize":m[3]||(m[3]=s=>p.value=s),total:c.value,"page-sizes":[10,20,50,100],layout:"total, sizes, prev, pager, next",onCurrentChange:I,onSizeChange:I},null,8,["current-page","page-size","total"])])]),_:1}),e.createVNode(e.unref(M.Modal),{modelValue:V.value,"onUpdate:modelValue":m[9]||(m[9]=s=>V.value=s),title:N.value,width:"500px"},{footer:e.withCtx(()=>[e.createVNode(e.unref(E.Space),null,{default:e.withCtx(()=>[e.createVNode(e.unref(E.Button),{onClick:m[8]||(m[8]=s=>V.value=!1)},{default:e.withCtx(()=>[...m[18]||(m[18]=[e.createTextVNode("取消",-1)])]),_:1}),e.createVNode(e.unref(E.Button),{type:"primary",onClick:z},{default:e.withCtx(()=>[...m[19]||(m[19]=[e.createTextVNode("确定",-1)])]),_:1})]),_:1})]),default:e.withCtx(()=>[e.createVNode(e.unref(h.Form),{ref_key:"formRef",ref:y,model:d,rules:g,"label-width":"80px"},{default:e.withCtx(()=>[e.createVNode(e.unref(h.FormItem),{label:"角色名称",prop:"name"},{default:e.withCtx(()=>[e.createVNode(e.unref(h.Input),{modelValue:d.name,"onUpdate:modelValue":m[4]||(m[4]=s=>d.name=s),placeholder:"请输入角色名称"},null,8,["modelValue"])]),_:1}),e.createVNode(e.unref(h.FormItem),{label:"角色编码",prop:"code"},{default:e.withCtx(()=>[e.createVNode(e.unref(h.Input),{modelValue:d.code,"onUpdate:modelValue":m[5]||(m[5]=s=>d.code=s),placeholder:"请输入角色编码"},null,8,["modelValue"])]),_:1}),e.createVNode(e.unref(h.FormItem),{label:"描述"},{default:e.withCtx(()=>[e.createVNode(e.unref(h.Input),{modelValue:d.description,"onUpdate:modelValue":m[6]||(m[6]=s=>d.description=s),placeholder:"请输入描述"},null,8,["modelValue"])]),_:1}),e.createVNode(e.unref(h.FormItem),{label:"状态"},{default:e.withCtx(()=>[e.createVNode(e.unref(h.Switch),{modelValue:d.status,"onUpdate:modelValue":m[7]||(m[7]=s=>d.status=s),"active-value":e.unref(B).ENABLED,"inactive-value":e.unref(B).DISABLED},null,8,["modelValue","active-value","inactive-value"])]),_:1})]),_:1},8,["model"])]),_:1},8,["modelValue","title"])]))}}),[["__scopeId","data-v-8ad30bc6"]])},Symbol.toStringTag,{value:"Module"})),Yo={class:"menu-page"},Wo={class:"toolbar"},Ho={class:"menu-tree"},Xo={class:"tree-table"},Go={class:"tree-row tree-row--level-0"},Jo=["onClick"],Qo=["onClick"],Ze=Object.freeze(Object.defineProperty({__proto__:null,default:F(e.defineComponent({__name:"index",setup(t){const o=[{id:1,parentId:null,name:"Dashboard",path:"/dashboard",component:"dashboard/index",redirect:"",icon:"dashboard",title:"仪表盘",type:A.MENU,sort:1,status:B.ENABLED,hidden:!1,keepAlive:!0},{id:2,parentId:null,name:"System",path:"/system",component:"",redirect:"/system/user",icon:"setting",title:"系统管理",type:A.DIRECTORY,sort:2,status:B.ENABLED,hidden:!1,keepAlive:!1,children:[{id:21,parentId:2,name:"SystemUser",path:"/system/user",component:"system/user/index",redirect:"",icon:"user",title:"用户管理",type:A.MENU,sort:1,status:B.ENABLED,hidden:!1,keepAlive:!0},{id:22,parentId:2,name:"SystemRole",path:"/system/role",component:"system/role/index",redirect:"",icon:"role",title:"角色管理",type:A.MENU,sort:2,status:B.ENABLED,hidden:!1,keepAlive:!0},{id:23,parentId:2,name:"SystemMenu",path:"/system/menu",component:"system/menu/index",redirect:"",icon:"menu",title:"菜单管理",type:A.MENU,sort:3,status:B.ENABLED,hidden:!1,keepAlive:!0}]}],l=e.ref(!1),i=e.ref([]),c=e.ref(!1),r=e.computed(()=>p.id?"编辑菜单":"新增菜单"),p=e.reactive({id:0,parentId:null,name:"",path:"",component:"",redirect:"",icon:"",title:"",type:A.MENU,sort:0,status:B.ENABLED,hidden:!1,keepAlive:!0}),a={name:[{required:!0,message:"请输入菜单名称",trigger:"blur"}],path:[{required:!0,message:"请输入路由路径",trigger:"blur"}],title:[{required:!0,message:"请输入菜单标题",trigger:"blur"}]},V=e.ref(),N=()=>{l.value=!0,setTimeout(()=>{i.value=o,l.value=!1},300)},d=(b=null)=>{Object.assign(p,{id:0,parentId:b,name:"",path:"",component:"",redirect:"",icon:"",title:"",type:A.MENU,sort:0,status:B.ENABLED,hidden:!1,keepAlive:!0}),c.value=!0},g=b=>{Object.assign(p,b),c.value=!0},y=async()=>{var b;try{await((b=V.value)==null?void 0:b.validate()),M.Message.success(p.id?"编辑成功":"新增成功"),c.value=!1,N()}catch(u){console.error(u)}},I=b=>({dashboard:"📊",system:"⚙️",user:"👤",role:"👥",menu:"📋",setting:"🔧"})[b||""]||"📄";return e.onMounted(()=>{N()}),(b,u)=>(e.openBlock(),e.createElementBlock("div",Yo,[e.createVNode(e.unref(U.Card),{class:"menu-card"},{default:e.withCtx(()=>[e.createElementVNode("div",Wo,[e.createVNode(e.unref(E.Button),{type:"primary",onClick:u[0]||(u[0]=f=>d())},{default:e.withCtx(()=>[...u[14]||(u[14]=[e.createTextVNode("新增菜单",-1)])]),_:1})]),e.createElementVNode("div",Ho,[e.createElementVNode("table",Xo,[u[19]||(u[19]=e.createElementVNode("thead",null,[e.createElementVNode("tr",null,[e.createElementVNode("th",null,"菜单名称"),e.createElementVNode("th",null,"图标"),e.createElementVNode("th",null,"路由路径"),e.createElementVNode("th",null,"类型"),e.createElementVNode("th",null,"排序"),e.createElementVNode("th",null,"状态"),e.createElementVNode("th",null,"操作")])],-1)),e.createElementVNode("tbody",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(i.value,f=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:f.id},[e.createElementVNode("tr",Go,[e.createElementVNode("td",null,[e.createElementVNode("span",{class:"menu-name",onClick:x=>g(f)},e.toDisplayString(f.title),9,Jo)]),e.createElementVNode("td",null,e.toDisplayString(I(f.icon)),1),e.createElementVNode("td",null,e.toDisplayString(f.path),1),e.createElementVNode("td",null,[e.createVNode(e.unref(U.Tag),{type:f.type===e.unref(A).DIRECTORY?"primary":f.type===e.unref(A).MENU?"success":"warning",size:"small"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(f.type===e.unref(A).DIRECTORY?"目录":f.type===e.unref(A).MENU?"菜单":"按钮"),1)]),_:2},1032,["type"])]),e.createElementVNode("td",null,e.toDisplayString(f.sort),1),e.createElementVNode("td",null,[e.createVNode(e.unref(U.Tag),{type:f.status===e.unref(B).ENABLED?"success":"danger",size:"small"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(f.status===e.unref(B).ENABLED?"启用":"禁用"),1)]),_:2},1032,["type"])]),e.createElementVNode("td",null,[e.createVNode(e.unref(E.Space),null,{default:e.withCtx(()=>[e.createVNode(e.unref(E.Button),{type:"primary",link:"",size:"small",onClick:x=>d(f.id)},{default:e.withCtx(()=>[...u[15]||(u[15]=[e.createTextVNode("新增",-1)])]),_:1},8,["onClick"]),e.createVNode(e.unref(E.Button),{type:"primary",link:"",size:"small",onClick:x=>g(f)},{default:e.withCtx(()=>[...u[16]||(u[16]=[e.createTextVNode("编辑",-1)])]),_:1},8,["onClick"])]),_:2},1024)])]),f.children?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:0},e.renderList(f.children,x=>(e.openBlock(),e.createElementBlock("tr",{key:x.id,class:"tree-row tree-row--level-1"},[e.createElementVNode("td",null,[u[17]||(u[17]=e.createElementVNode("span",{class:"tree-indent"},null,-1)),e.createElementVNode("span",{class:"menu-name",onClick:T=>g(x)},e.toDisplayString(x.title),9,Qo)]),e.createElementVNode("td",null,e.toDisplayString(I(x.icon)),1),e.createElementVNode("td",null,e.toDisplayString(x.path),1),e.createElementVNode("td",null,[e.createVNode(e.unref(U.Tag),{type:x.type===e.unref(A).DIRECTORY?"primary":x.type===e.unref(A).MENU?"success":"warning",size:"small"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(x.type===e.unref(A).DIRECTORY?"目录":x.type===e.unref(A).MENU?"菜单":"按钮"),1)]),_:2},1032,["type"])]),e.createElementVNode("td",null,e.toDisplayString(x.sort),1),e.createElementVNode("td",null,[e.createVNode(e.unref(U.Tag),{type:x.status===e.unref(B).ENABLED?"success":"danger",size:"small"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(x.status===e.unref(B).ENABLED?"启用":"禁用"),1)]),_:2},1032,["type"])]),e.createElementVNode("td",null,[e.createVNode(e.unref(E.Space),null,{default:e.withCtx(()=>[e.createVNode(e.unref(E.Button),{type:"primary",link:"",size:"small",onClick:T=>g(x)},{default:e.withCtx(()=>[...u[18]||(u[18]=[e.createTextVNode("编辑",-1)])]),_:1},8,["onClick"])]),_:2},1024)])]))),128)):e.createCommentVNode("",!0)],64))),128))])])])]),_:1}),e.createVNode(e.unref(M.Modal),{modelValue:c.value,"onUpdate:modelValue":u[13]||(u[13]=f=>c.value=f),title:r.value,width:"600px"},{footer:e.withCtx(()=>[e.createVNode(e.unref(E.Space),null,{default:e.withCtx(()=>[e.createVNode(e.unref(E.Button),{onClick:u[12]||(u[12]=f=>c.value=!1)},{default:e.withCtx(()=>[...u[20]||(u[20]=[e.createTextVNode("取消",-1)])]),_:1}),e.createVNode(e.unref(E.Button),{type:"primary",onClick:y},{default:e.withCtx(()=>[...u[21]||(u[21]=[e.createTextVNode("确定",-1)])]),_:1})]),_:1})]),default:e.withCtx(()=>[e.createVNode(e.unref(h.Form),{ref_key:"formRef",ref:V,model:p,rules:a,"label-width":"80px"},{default:e.withCtx(()=>[e.createVNode(e.unref(h.FormItem),{label:"上级菜单"},{default:e.withCtx(()=>[e.createVNode(e.unref(h.Input),{modelValue:p.parentId,"onUpdate:modelValue":u[1]||(u[1]=f=>p.parentId=f),placeholder:"上级菜单ID",disabled:""},null,8,["modelValue"])]),_:1}),e.createVNode(e.unref(h.FormItem),{label:"菜单类型"},{default:e.withCtx(()=>[e.createVNode(e.unref(h.Select),{modelValue:p.type,"onUpdate:modelValue":u[2]||(u[2]=f=>p.type=f),options:e.unref(Xe)},null,8,["modelValue","options"])]),_:1}),e.createVNode(e.unref(h.FormItem),{label:"菜单名称",prop:"name"},{default:e.withCtx(()=>[e.createVNode(e.unref(h.Input),{modelValue:p.name,"onUpdate:modelValue":u[3]||(u[3]=f=>p.name=f),placeholder:"请输入菜单名称(路由name)"},null,8,["modelValue"])]),_:1}),e.createVNode(e.unref(h.FormItem),{label:"菜单标题",prop:"title"},{default:e.withCtx(()=>[e.createVNode(e.unref(h.Input),{modelValue:p.title,"onUpdate:modelValue":u[4]||(u[4]=f=>p.title=f),placeholder:"请输入菜单标题"},null,8,["modelValue"])]),_:1}),e.createVNode(e.unref(h.FormItem),{label:"路由路径",prop:"path"},{default:e.withCtx(()=>[e.createVNode(e.unref(h.Input),{modelValue:p.path,"onUpdate:modelValue":u[5]||(u[5]=f=>p.path=f),placeholder:"请输入路由路径"},null,8,["modelValue"])]),_:1}),e.createVNode(e.unref(h.FormItem),{label:"组件路径"},{default:e.withCtx(()=>[e.createVNode(e.unref(h.Input),{modelValue:p.component,"onUpdate:modelValue":u[6]||(u[6]=f=>p.component=f),placeholder:"请输入组件路径"},null,8,["modelValue"])]),_:1}),e.createVNode(e.unref(h.FormItem),{label:"图标"},{default:e.withCtx(()=>[e.createVNode(e.unref(h.Input),{modelValue:p.icon,"onUpdate:modelValue":u[7]||(u[7]=f=>p.icon=f),placeholder:"请输入图标名称"},null,8,["modelValue"])]),_:1}),e.createVNode(e.unref(h.FormItem),{label:"排序"},{default:e.withCtx(()=>[e.createVNode(e.unref(h.InputNumber),{modelValue:p.sort,"onUpdate:modelValue":u[8]||(u[8]=f=>p.sort=f),min:0},null,8,["modelValue"])]),_:1}),e.createVNode(e.unref(h.FormItem),{label:"状态"},{default:e.withCtx(()=>[e.createVNode(e.unref(h.Switch),{modelValue:p.status,"onUpdate:modelValue":u[9]||(u[9]=f=>p.status=f),"active-value":e.unref(B).ENABLED,"inactive-value":e.unref(B).DISABLED},null,8,["modelValue","active-value","inactive-value"])]),_:1}),e.createVNode(e.unref(h.FormItem),{label:"隐藏"},{default:e.withCtx(()=>[e.createVNode(e.unref(h.Switch),{modelValue:p.hidden,"onUpdate:modelValue":u[10]||(u[10]=f=>p.hidden=f)},null,8,["modelValue"])]),_:1}),e.createVNode(e.unref(h.FormItem),{label:"缓存"},{default:e.withCtx(()=>[e.createVNode(e.unref(h.Switch),{modelValue:p.keepAlive,"onUpdate:modelValue":u[11]||(u[11]=f=>p.keepAlive=f)},null,8,["modelValue"])]),_:1})]),_:1},8,["model"])]),_:1},8,["modelValue","title"])]))}}),[["__scopeId","data-v-2a272a68"]])},Symbol.toStringTag,{value:"Module"}));n.Footer=_n,n.Forbidden=Ke,n.Gender=He,n.GenderOptions=Vo,n.GenderText=fo,n.Header=ze,n.Layout=ge,n.Login=qe,n.MenuType=A,n.MenuTypeOptions=Xe,n.MenuTypeText=ho,n.NotFound=je,n.Sidebar=Re,n.Status=B,n.StatusOptions=ke,n.StatusText=uo,n.Tabs=hn,n.appConfig=wn,n.batchDeleteUsers=co,n.clearToken=he,n.createLayoutRoute=Kn,n.createMenu=vn,n.createRole=Xn,n.createRouter=Yn,n.createUser=ro,n.defaultDynamicRoutes=On,n.deleteMenu=to,n.deleteRole=Jn,n.deleteUser=io,n.errorRoute=_e,n.getApiBaseUrl=Cn,n.getAppId=le,n.getClientId=Oe,n.getCode=it,n.getMenuList=Zn,n.getMenuTree=We,n.getRefreshTime=st,n.getRefreshToken=rt,n.getRoleDetail=Hn,n.getRoleList=Wn,n.getToken=J,n.getTokenExpire=Le,n.getTokenType=Ie,n.getUserDetail=ao,n.getUserInfo=Pe,n.getUserList=lo,n.hasPermission=zn,n.hasRole=Fn,n.hasToken=Ve,n.http=L,n.initAppConfig=kn,n.isAdmin=Pn,n.isTokenExpired=Ae,n.layoutRoute=Ee,n.local=k,n.localStorageUtil=H,n.login=Fe,n.logout=En,n.mockMenuData=Ye,n.permissionDirective=go,n.refreshToken=yn,n.resetPassword=po,n.resetRouter=jn,n.router=ye,n.session=lt,n.sessionStorageUtil=X,n.setCode=Me,n.setRefreshTime=Ue,n.setRefreshToken=De,n.setToken=xe,n.setTokenExpire=$e,n.setTokenInfo=fe,n.setTokenType=Te,n.setupRouterGuards=oo,n.staticRoutes=Ne,n.updateMenu=eo,n.updateRole=Gn,n.updateRoleStatus=Qn,n.updateUser=so,n.updateUserStatus=mo,n.useApp=Un,n.useAppStore=q,n.useAuth=Mn,n.useAuthStore=ee,n.useForm=An,n.useMenuStore=G,n.useTable=Rn,n.useUserStore=P,Object.defineProperty(n,Symbol.toStringTag,{value:"Module"})});
|
package/dist/style.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
.sidebar[data-v-556a489e]{height:100%;display:flex;flex-direction:column;background-color:var(--bg-color);border-right:1px solid var(--color-border-lighter)}.sidebar--collapsed .sidebar__logo[data-v-556a489e]{justify-content:center;padding:0}.sidebar__logo[data-v-556a489e]{height:50px;display:flex;align-items:center;padding:0 20px;gap:10px;border-bottom:1px solid var(--color-border-lighter)}.sidebar__logo-img[data-v-556a489e]{width:32px;height:32px}.sidebar__logo-text[data-v-556a489e]{font-size:16px;font-weight:600;color:var(--color-primary)}.sidebar__menu[data-v-556a489e]{flex:1;border-right:none;overflow-y:auto}.sidebar__user[data-v-556a489e]{padding:10px;border-top:1px solid var(--color-border-lighter);display:flex;align-items:center;justify-content:space-between}.sidebar__user-info[data-v-556a489e]{display:flex;flex-direction:column;gap:2px}.sidebar__user-name[data-v-556a489e]{font-size:14px;font-weight:500}.sidebar__user-role[data-v-556a489e]{font-size:12px;color:var(--color-text-secondary)}.header[data-v-de94213f]{display:flex;align-items:center;justify-content:space-between;padding:0 20px;height:100%;background-color:var(--bg-color);border-bottom:1px solid var(--color-border-lighter)}.header__left[data-v-de94213f]{display:flex;align-items:center;gap:15px}.header__collapse[data-v-de94213f]{width:24px;height:24px;display:flex;align-items:center;justify-content:center;cursor:pointer;color:var(--color-text-regular);transition:color .2s}.header__collapse[data-v-de94213f]:hover{color:var(--color-primary)}.header__breadcrumb[data-v-de94213f]{font-size:14px;color:var(--color-text-secondary)}.header__breadcrumb .breadcrumb-separator[data-v-de94213f]{margin:0 8px;color:var(--color-text-placeholder)}.header__breadcrumb .is-current[data-v-de94213f]{color:var(--color-text-primary);font-weight:500}.header__right[data-v-de94213f]{display:flex;align-items:center;gap:8px}.header__action[data-v-de94213f]{width:32px;height:32px;display:flex;align-items:center;justify-content:center;cursor:pointer;border-radius:var(--border-radius-base);color:var(--color-text-regular);transition:all .2s}.header__action[data-v-de94213f]:hover{background-color:var(--color-fill);color:var(--color-primary)}.header__user[data-v-de94213f]{position:relative;margin-left:8px}.header__user-trigger[data-v-de94213f]{display:flex;align-items:center;gap:8px;cursor:pointer;padding:4px 8px;border-radius:var(--border-radius-base);transition:background-color .2s}.header__user-trigger[data-v-de94213f]:hover{background-color:var(--color-fill)}.header__user-name[data-v-de94213f]{font-size:14px;color:var(--color-text-primary);max-width:100px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.header__user-arrow[data-v-de94213f]{font-size:10px;color:var(--color-text-secondary);transition:transform .2s}.header__user-arrow.is-active[data-v-de94213f]{transform:rotate(180deg)}.header__avatar[data-v-de94213f]{width:32px;height:32px;border-radius:50%;background:linear-gradient(135deg,var(--color-primary),var(--color-primary-light-3));display:flex;align-items:center;justify-content:center;color:#fff;font-size:14px;font-weight:500}.header__dropdown[data-v-de94213f]{position:absolute;top:calc(100% + 8px);right:0;min-width:200px;background-color:var(--bg-color);border-radius:var(--border-radius-base);box-shadow:var(--box-shadow);overflow:hidden;z-index:100}.header__dropdown-header[data-v-de94213f]{display:flex;align-items:center;gap:12px;padding:16px}.header__dropdown-avatar[data-v-de94213f]{width:40px;height:40px;border-radius:50%;background:linear-gradient(135deg,var(--color-primary),var(--color-primary-light-3));display:flex;align-items:center;justify-content:center;color:#fff;font-size:16px;font-weight:500}.header__dropdown-info[data-v-de94213f]{flex:1}.header__dropdown-name[data-v-de94213f]{font-size:14px;font-weight:500;color:var(--color-text-primary)}.header__dropdown-role[data-v-de94213f]{font-size:12px;color:var(--color-text-secondary);margin-top:2px}.header__dropdown-divider[data-v-de94213f]{height:1px;background-color:var(--color-border-lighter)}.header__dropdown-menu[data-v-de94213f]{padding:8px 0}.header__dropdown-item[data-v-de94213f]{display:flex;align-items:center;gap:10px;padding:10px 16px;cursor:pointer;font-size:14px;color:var(--color-text-regular);transition:all .2s}.header__dropdown-item[data-v-de94213f]:hover{background-color:var(--color-fill);color:var(--color-text-primary)}.header__dropdown-item--danger[data-v-de94213f]{color:var(--color-danger)}.header__dropdown-item--danger[data-v-de94213f]:hover{background-color:var(--color-danger-light);color:var(--color-danger)}.header__search-modal[data-v-de94213f]{position:fixed;top:0;left:0;right:0;bottom:0;background-color:#00000080;display:flex;align-items:flex-start;justify-content:center;padding-top:100px;z-index:200}.search-container[data-v-de94213f]{width:600px;max-width:90vw;background-color:var(--bg-color);border-radius:var(--border-radius-large);box-shadow:var(--box-shadow-dark);overflow:hidden}.search-input-wrapper[data-v-de94213f]{display:flex;align-items:center;padding:16px 20px;border-bottom:1px solid var(--color-border-lighter)}.search-input-wrapper .search-icon[data-v-de94213f]{color:var(--color-text-secondary);margin-right:12px}.search-input-wrapper .search-input[data-v-de94213f]{flex:1;font-size:16px;color:var(--color-text-primary);background:transparent;border:none;outline:none}.search-input-wrapper .search-input[data-v-de94213f]::placeholder{color:var(--color-text-placeholder)}.search-input-wrapper .search-shortcut[data-v-de94213f]{font-size:12px;color:var(--color-text-secondary);padding:4px 8px;background-color:var(--color-fill);border-radius:var(--border-radius-base)}.search-results[data-v-de94213f]{max-height:400px;overflow-y:auto;padding:8px 0}.search-result-item[data-v-de94213f]{display:flex;align-items:center;gap:12px;padding:12px 20px;cursor:pointer;transition:background-color .2s}.search-result-item[data-v-de94213f]:hover{background-color:var(--color-fill)}.search-result-item.is-first[data-v-de94213f]{background-color:var(--color-primary-light-9)}.search-result-item .search-result-icon[data-v-de94213f]{color:var(--color-text-secondary)}.search-result-item .search-result-info[data-v-de94213f]{flex:1;display:flex;flex-direction:column;gap:2px}.search-result-item .search-result-title[data-v-de94213f]{font-size:14px;color:var(--color-text-primary)}.search-result-item .search-result-parent[data-v-de94213f]{font-size:12px;color:var(--color-text-secondary)}.search-empty[data-v-de94213f]{padding:40px 20px;text-align:center;color:var(--color-text-secondary);font-size:14px}.settings-drawer .settings-section[data-v-de94213f]{margin-bottom:24px}.settings-drawer .settings-title[data-v-de94213f]{font-size:14px;font-weight:500;color:var(--color-text-primary);margin-bottom:12px}.settings-drawer .settings-layout-options[data-v-de94213f]{display:flex;gap:12px}.settings-drawer .layout-option[data-v-de94213f]{flex:1;display:flex;flex-direction:column;align-items:center;gap:8px;padding:12px;border:1px solid var(--color-border);border-radius:var(--border-radius-base);cursor:pointer;transition:all .2s}.settings-drawer .layout-option[data-v-de94213f]:hover{border-color:var(--color-primary-light-5)}.settings-drawer .layout-option.is-active[data-v-de94213f]{border-color:var(--color-primary);background-color:var(--color-primary-light-9)}.settings-drawer .layout-option__preview[data-v-de94213f]{width:48px;height:36px;border:1px solid var(--color-border-light);border-radius:2px;overflow:hidden}.settings-drawer .layout-option__label[data-v-de94213f]{font-size:12px;color:var(--color-text-regular)}.settings-drawer .layout-preview-sidebar[data-v-de94213f]{display:flex;height:100%}.settings-drawer .layout-preview-sidebar .preview-aside[data-v-de94213f]{width:25%;height:100%;background-color:var(--color-primary-light-7)}.settings-drawer .layout-preview-sidebar .preview-main[data-v-de94213f]{flex:1;display:flex;flex-direction:column}.settings-drawer .layout-preview-sidebar .preview-main .preview-header[data-v-de94213f]{height:20%;background-color:var(--color-border-light)}.settings-drawer .layout-preview-sidebar .preview-main .preview-content[data-v-de94213f]{flex:1;background-color:var(--bg-color-page)}.settings-drawer .layout-preview-top[data-v-de94213f]{display:flex;flex-direction:column;height:100%}.settings-drawer .layout-preview-top .preview-header-full[data-v-de94213f]{height:25%;background-color:var(--color-primary-light-7)}.settings-drawer .layout-preview-top .preview-content-full[data-v-de94213f]{flex:1;background-color:var(--bg-color-page)}.settings-drawer .layout-preview-mix[data-v-de94213f]{display:flex;flex-direction:column;height:100%}.settings-drawer .layout-preview-mix .preview-header-mix[data-v-de94213f]{height:25%;background-color:var(--color-primary-light-7);display:flex}.settings-drawer .layout-preview-mix .preview-header-mix .preview-mix-left[data-v-de94213f]{width:30%;background-color:var(--color-primary)}.settings-drawer .layout-preview-mix .preview-mix-body[data-v-de94213f]{flex:1;display:flex}.settings-drawer .layout-preview-mix .preview-mix-body .preview-mix-aside[data-v-de94213f]{width:25%;background-color:var(--color-primary-light-8)}.settings-drawer .layout-preview-mix .preview-mix-body .preview-mix-content[data-v-de94213f]{flex:1;background-color:var(--bg-color-page)}.settings-drawer .settings-color-options[data-v-de94213f]{display:flex;gap:12px}.settings-drawer .color-option[data-v-de94213f]{width:24px;height:24px;border-radius:4px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:transform .2s}.settings-drawer .color-option[data-v-de94213f]:hover{transform:scale(1.1)}.settings-drawer .color-option.is-active[data-v-de94213f]{box-shadow:0 0 0 2px var(--bg-color),0 0 0 4px var(--color-primary)}.settings-drawer .settings-switch-list[data-v-de94213f]{display:flex;flex-direction:column;gap:12px}.settings-drawer .settings-switch-item[data-v-de94213f]{display:flex;align-items:center;justify-content:space-between}.settings-drawer .settings-switch-item span[data-v-de94213f]{font-size:14px;color:var(--color-text-regular)}.settings-drawer .switch-wrapper[data-v-de94213f]{width:44px;height:22px;display:flex;align-items:center;cursor:pointer}.settings-drawer .switch-wrapper .switch-core[data-v-de94213f]{width:100%;height:100%;border-radius:11px;background-color:var(--color-border);position:relative;transition:background-color .2s}.settings-drawer .switch-wrapper .switch-core[data-v-de94213f]:after{content:"";position:absolute;top:2px;left:2px;width:18px;height:18px;background-color:#fff;border-radius:50%;transition:left .2s}.settings-drawer .switch-wrapper.is-checked .switch-core[data-v-de94213f]{background-color:var(--color-primary)}.settings-drawer .switch-wrapper.is-checked .switch-core[data-v-de94213f]:after{left:24px}.dropdown-enter-active[data-v-de94213f],.dropdown-leave-active[data-v-de94213f]{transition:all .2s ease}.dropdown-enter-from[data-v-de94213f],.dropdown-leave-to[data-v-de94213f]{opacity:0;transform:translateY(-10px)}.search-enter-active[data-v-de94213f],.search-leave-active[data-v-de94213f]{transition:all .2s ease}.search-enter-from[data-v-de94213f],.search-leave-to[data-v-de94213f]{opacity:0}:root.grey-mode[data-v-de94213f]{filter:grayscale(100%)}.layout[data-v-a3110011]{display:flex;width:100%;height:100%}.layout__aside[data-v-a3110011]{transition:width .3s;overflow:hidden;flex-shrink:0;height:100%}.layout__main[data-v-a3110011]{flex:1;display:flex;flex-direction:column;overflow:hidden;height:100%}.layout__header[data-v-a3110011]{height:50px;background-color:var(--bg-color);border-bottom:1px solid var(--color-border-lighter);flex-shrink:0}.layout__content[data-v-a3110011]{flex:1;overflow:auto;background-color:var(--bg-color-page)}.tabs-wrapper[data-v-9156d8cd]{width:100%;height:100%;padding:0 10px}.tabs-wrapper[data-v-9156d8cd] .t-tabs{height:100%}.tabs-wrapper[data-v-9156d8cd] .t-tabs__header{margin:0;border-bottom:none}.tabs-wrapper[data-v-9156d8cd] .t-tabs__nav{border:none}.tabs-wrapper[data-v-9156d8cd] .t-tabs__item{height:32px;line-height:32px;border:1px solid var(--color-border-lighter);margin-right:5px;border-radius:var(--border-radius-base);padding:0 15px}.tabs-wrapper[data-v-9156d8cd] .t-tabs__item.is-active{background-color:var(--color-primary-light-9);border-color:var(--color-primary)}.tab-label[data-v-9156d8cd]{display:flex;align-items:center;gap:5px}.tab-close[data-v-9156d8cd]{width:14px;height:14px;display:flex;align-items:center;justify-content:center;font-size:10px;border-radius:50%}.tab-close[data-v-9156d8cd]:hover{background-color:var(--color-danger-light);color:var(--color-danger)}.footer[data-v-4852826a]{width:100%;text-align:center;font-size:12px;color:var(--color-text-secondary)}.login[data-v-f8d69f9f]{width:100%;min-height:100vh;display:flex;align-items:center;justify-content:flex-end;padding-right:15%;background:linear-gradient(135deg,var(--color-primary-light-9) 0%,var(--color-primary-light-7) 100%)}.login__container[data-v-f8d69f9f]{width:400px;padding:40px;background-color:var(--bg-color);border-radius:var(--border-radius-large);box-shadow:var(--box-shadow-dark)}.login__header[data-v-f8d69f9f]{text-align:center;margin-bottom:30px}.login__logo[data-v-f8d69f9f]{width:60px;height:60px}.login__title[data-v-f8d69f9f]{font-size:28px;font-weight:600;color:var(--color-primary);margin:15px 0 5px}.login__subtitle[data-v-f8d69f9f]{font-size:14px;color:var(--color-text-secondary)}.login__form[data-v-f8d69f9f] .x-form-item{margin-bottom:20px}.login__form[data-v-f8d69f9f] .x-input__prefix{margin-right:8px}.login__submit[data-v-f8d69f9f]{width:100%}.login__footer[data-v-f8d69f9f]{text-align:center;margin-top:20px;font-size:12px;color:var(--color-text-placeholder)}.error-page[data-v-c3c12c24]{width:100%;height:100vh;display:flex;align-items:center;justify-content:center;background-color:var(--bg-color-page)}.error-page__content[data-v-c3c12c24]{text-align:center}.error-page__code[data-v-c3c12c24]{font-size:120px;font-weight:600;color:var(--color-primary);line-height:1;margin-bottom:20px}.error-page__title[data-v-c3c12c24]{font-size:24px;font-weight:500;color:var(--color-text-primary);margin-bottom:10px}.error-page__desc[data-v-c3c12c24]{font-size:14px;color:var(--color-text-secondary);margin-bottom:30px}.error-page[data-v-dd5f2795]{width:100%;height:100vh;display:flex;align-items:center;justify-content:center;background-color:var(--bg-color-page)}.error-page__content[data-v-dd5f2795]{text-align:center}.error-page__code[data-v-dd5f2795]{font-size:120px;font-weight:600;color:var(--color-warning);line-height:1;margin-bottom:20px}.error-page__title[data-v-dd5f2795]{font-size:24px;font-weight:500;color:var(--color-text-primary);margin-bottom:10px}.error-page__desc[data-v-dd5f2795]{font-size:14px;color:var(--color-text-secondary);margin-bottom:30px}.dashboard[data-v-44648cb1]{padding:20px}.dashboard__stats[data-v-44648cb1]{display:grid;grid-template-columns:repeat(4,1fr);gap:20px;margin-bottom:20px}@media (max-width: 1200px){.dashboard__stats[data-v-44648cb1]{grid-template-columns:repeat(2,1fr)}}@media (max-width: 768px){.dashboard__stats[data-v-44648cb1]{grid-template-columns:1fr}}.dashboard__main[data-v-44648cb1]{display:grid;grid-template-columns:repeat(2,1fr);gap:20px;margin-bottom:20px}@media (max-width: 992px){.dashboard__main[data-v-44648cb1]{grid-template-columns:1fr}}.dashboard__quick[data-v-44648cb1],.dashboard__activity[data-v-44648cb1]{min-height:300px}.card-title[data-v-44648cb1]{font-size:16px;font-weight:500}.stat-card__content[data-v-44648cb1]{display:flex;align-items:center;gap:15px}.stat-card__icon[data-v-44648cb1]{width:50px;height:50px;display:flex;align-items:center;justify-content:center;font-size:24px;border-radius:var(--border-radius-base)}.stat-card__info[data-v-44648cb1]{flex:1}.stat-card__title[data-v-44648cb1]{font-size:14px;color:var(--color-text-secondary);margin-bottom:5px}.stat-card__value[data-v-44648cb1]{font-size:24px;font-weight:600}.quick-links[data-v-44648cb1]{display:grid;grid-template-columns:repeat(4,1fr);gap:15px}@media (max-width: 768px){.quick-links[data-v-44648cb1]{grid-template-columns:repeat(2,1fr)}}.quick-link[data-v-44648cb1]{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:20px;border-radius:var(--border-radius-base);background-color:var(--color-fill);text-decoration:none;transition:all var(--transition-duration-fast)}.quick-link[data-v-44648cb1]:hover{background-color:var(--color-primary-light-9);transform:translateY(-2px)}.quick-link__icon[data-v-44648cb1]{font-size:28px;margin-bottom:10px}.quick-link__title[data-v-44648cb1]{font-size:14px;color:var(--color-text-primary)}.activity-list[data-v-44648cb1]{display:flex;flex-direction:column;gap:15px}.activity-item[data-v-44648cb1]{display:flex;align-items:center;gap:10px;padding-bottom:15px;border-bottom:1px solid var(--color-border-lighter)}.activity-item[data-v-44648cb1]:last-child{border-bottom:none;padding-bottom:0}.activity-item__action[data-v-44648cb1]{flex:1;font-size:14px;color:var(--color-text-regular)}.activity-item__time[data-v-44648cb1]{font-size:12px;color:var(--color-text-placeholder)}.system-info[data-v-44648cb1]{display:grid;grid-template-columns:repeat(2,1fr);gap:20px}@media (max-width: 768px){.system-info[data-v-44648cb1]{grid-template-columns:1fr}}.system-info__item[data-v-44648cb1]{display:flex;align-items:center;gap:10px}.system-info__label[data-v-44648cb1]{font-size:14px;color:var(--color-text-secondary);min-width:80px}.system-info__value[data-v-44648cb1]{font-size:14px;color:var(--color-text-primary)}.user-page[data-v-d2491ae0]{padding:20px}.user-page .search-card[data-v-d2491ae0]{margin-bottom:20px}.user-page .toolbar[data-v-d2491ae0]{margin-bottom:15px}.data-table[data-v-d2491ae0]{width:100%;border-collapse:collapse}.data-table th[data-v-d2491ae0],.data-table td[data-v-d2491ae0]{padding:12px;text-align:left;border-bottom:1px solid var(--color-border-lighter)}.data-table th[data-v-d2491ae0]{font-weight:500;color:var(--color-text-regular);background-color:var(--color-fill-light)}.data-table .loading-cell[data-v-d2491ae0],.data-table .empty-cell[data-v-d2491ae0]{text-align:center;color:var(--color-text-secondary);padding:40px}.pagination-wrapper[data-v-d2491ae0]{display:flex;justify-content:flex-end;margin-top:20px}.role-page[data-v-8ad30bc6]{padding:20px}.role-page .search-card[data-v-8ad30bc6]{margin-bottom:20px}.role-page .toolbar[data-v-8ad30bc6]{margin-bottom:15px}.data-table[data-v-8ad30bc6]{width:100%;border-collapse:collapse}.data-table th[data-v-8ad30bc6],.data-table td[data-v-8ad30bc6]{padding:12px;text-align:left;border-bottom:1px solid var(--color-border-lighter)}.data-table th[data-v-8ad30bc6]{font-weight:500;color:var(--color-text-regular);background-color:var(--color-fill-light)}.data-table .loading-cell[data-v-8ad30bc6],.data-table .empty-cell[data-v-8ad30bc6]{text-align:center;color:var(--color-text-secondary);padding:40px}.pagination-wrapper[data-v-8ad30bc6]{display:flex;justify-content:flex-end;margin-top:20px}.menu-page[data-v-2a272a68]{padding:20px}.menu-page .toolbar[data-v-2a272a68]{margin-bottom:15px}.tree-table[data-v-2a272a68]{width:100%;border-collapse:collapse}.tree-table th[data-v-2a272a68],.tree-table td[data-v-2a272a68]{padding:12px;text-align:left;border-bottom:1px solid var(--color-border-lighter)}.tree-table th[data-v-2a272a68]{font-weight:500;color:var(--color-text-regular);background-color:var(--color-fill-light)}.tree-table .tree-row--level-1 td[data-v-2a272a68]:first-child{padding-left:30px}.tree-indent[data-v-2a272a68]{display:inline-block;width:20px}.menu-name[data-v-2a272a68]{cursor:pointer;color:var(--color-primary)}.menu-name[data-v-2a272a68]:hover{text-decoration:underline}
|
|
1
|
+
.sidebar[data-v-7f794ecb]{height:100%;display:flex;flex-direction:column;background-color:var(--bg-color);border-right:1px solid var(--color-border-lighter)}.sidebar--collapsed .sidebar__logo[data-v-7f794ecb]{justify-content:center;padding:0}.sidebar__logo[data-v-7f794ecb]{height:50px;display:flex;align-items:center;padding:0 20px;gap:10px;border-bottom:1px solid var(--color-border-lighter)}.sidebar__logo-img[data-v-7f794ecb]{width:32px;height:32px}.sidebar__logo-text[data-v-7f794ecb]{font-size:16px;font-weight:600;color:var(--color-primary)}.sidebar__menu[data-v-7f794ecb]{flex:1;border-right:none;overflow-y:auto}.sidebar__menu-icon[data-v-7f794ecb]{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;margin-right:8px}.sidebar__menu-char[data-v-7f794ecb]{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;font-size:12px;font-weight:600;color:var(--color-primary);background-color:var(--color-primary-light-8);border-radius:4px}.sidebar__user[data-v-7f794ecb]{padding:10px;border-top:1px solid var(--color-border-lighter);display:flex;align-items:center;justify-content:space-between}.sidebar__user-info[data-v-7f794ecb]{display:flex;flex-direction:column;gap:2px}.sidebar__user-name[data-v-7f794ecb]{font-size:14px;font-weight:500}.sidebar__user-role[data-v-7f794ecb]{font-size:12px;color:var(--color-text-secondary)}.header[data-v-de94213f]{display:flex;align-items:center;justify-content:space-between;padding:0 20px;height:100%;background-color:var(--bg-color);border-bottom:1px solid var(--color-border-lighter)}.header__left[data-v-de94213f]{display:flex;align-items:center;gap:15px}.header__collapse[data-v-de94213f]{width:24px;height:24px;display:flex;align-items:center;justify-content:center;cursor:pointer;color:var(--color-text-regular);transition:color .2s}.header__collapse[data-v-de94213f]:hover{color:var(--color-primary)}.header__breadcrumb[data-v-de94213f]{font-size:14px;color:var(--color-text-secondary)}.header__breadcrumb .breadcrumb-separator[data-v-de94213f]{margin:0 8px;color:var(--color-text-placeholder)}.header__breadcrumb .is-current[data-v-de94213f]{color:var(--color-text-primary);font-weight:500}.header__right[data-v-de94213f]{display:flex;align-items:center;gap:8px}.header__action[data-v-de94213f]{width:32px;height:32px;display:flex;align-items:center;justify-content:center;cursor:pointer;border-radius:var(--border-radius-base);color:var(--color-text-regular);transition:all .2s}.header__action[data-v-de94213f]:hover{background-color:var(--color-fill);color:var(--color-primary)}.header__user[data-v-de94213f]{position:relative;margin-left:8px}.header__user-trigger[data-v-de94213f]{display:flex;align-items:center;gap:8px;cursor:pointer;padding:4px 8px;border-radius:var(--border-radius-base);transition:background-color .2s}.header__user-trigger[data-v-de94213f]:hover{background-color:var(--color-fill)}.header__user-name[data-v-de94213f]{font-size:14px;color:var(--color-text-primary);max-width:100px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.header__user-arrow[data-v-de94213f]{font-size:10px;color:var(--color-text-secondary);transition:transform .2s}.header__user-arrow.is-active[data-v-de94213f]{transform:rotate(180deg)}.header__avatar[data-v-de94213f]{width:32px;height:32px;border-radius:50%;background:linear-gradient(135deg,var(--color-primary),var(--color-primary-light-3));display:flex;align-items:center;justify-content:center;color:#fff;font-size:14px;font-weight:500}.header__dropdown[data-v-de94213f]{position:absolute;top:calc(100% + 8px);right:0;min-width:200px;background-color:var(--bg-color);border-radius:var(--border-radius-base);box-shadow:var(--box-shadow);overflow:hidden;z-index:100}.header__dropdown-header[data-v-de94213f]{display:flex;align-items:center;gap:12px;padding:16px}.header__dropdown-avatar[data-v-de94213f]{width:40px;height:40px;border-radius:50%;background:linear-gradient(135deg,var(--color-primary),var(--color-primary-light-3));display:flex;align-items:center;justify-content:center;color:#fff;font-size:16px;font-weight:500}.header__dropdown-info[data-v-de94213f]{flex:1}.header__dropdown-name[data-v-de94213f]{font-size:14px;font-weight:500;color:var(--color-text-primary)}.header__dropdown-role[data-v-de94213f]{font-size:12px;color:var(--color-text-secondary);margin-top:2px}.header__dropdown-divider[data-v-de94213f]{height:1px;background-color:var(--color-border-lighter)}.header__dropdown-menu[data-v-de94213f]{padding:8px 0}.header__dropdown-item[data-v-de94213f]{display:flex;align-items:center;gap:10px;padding:10px 16px;cursor:pointer;font-size:14px;color:var(--color-text-regular);transition:all .2s}.header__dropdown-item[data-v-de94213f]:hover{background-color:var(--color-fill);color:var(--color-text-primary)}.header__dropdown-item--danger[data-v-de94213f]{color:var(--color-danger)}.header__dropdown-item--danger[data-v-de94213f]:hover{background-color:var(--color-danger-light);color:var(--color-danger)}.header__search-modal[data-v-de94213f]{position:fixed;top:0;left:0;right:0;bottom:0;background-color:#00000080;display:flex;align-items:flex-start;justify-content:center;padding-top:100px;z-index:200}.search-container[data-v-de94213f]{width:600px;max-width:90vw;background-color:var(--bg-color);border-radius:var(--border-radius-large);box-shadow:var(--box-shadow-dark);overflow:hidden}.search-input-wrapper[data-v-de94213f]{display:flex;align-items:center;padding:16px 20px;border-bottom:1px solid var(--color-border-lighter)}.search-input-wrapper .search-icon[data-v-de94213f]{color:var(--color-text-secondary);margin-right:12px}.search-input-wrapper .search-input[data-v-de94213f]{flex:1;font-size:16px;color:var(--color-text-primary);background:transparent;border:none;outline:none}.search-input-wrapper .search-input[data-v-de94213f]::placeholder{color:var(--color-text-placeholder)}.search-input-wrapper .search-shortcut[data-v-de94213f]{font-size:12px;color:var(--color-text-secondary);padding:4px 8px;background-color:var(--color-fill);border-radius:var(--border-radius-base)}.search-results[data-v-de94213f]{max-height:400px;overflow-y:auto;padding:8px 0}.search-result-item[data-v-de94213f]{display:flex;align-items:center;gap:12px;padding:12px 20px;cursor:pointer;transition:background-color .2s}.search-result-item[data-v-de94213f]:hover{background-color:var(--color-fill)}.search-result-item.is-first[data-v-de94213f]{background-color:var(--color-primary-light-9)}.search-result-item .search-result-icon[data-v-de94213f]{color:var(--color-text-secondary)}.search-result-item .search-result-info[data-v-de94213f]{flex:1;display:flex;flex-direction:column;gap:2px}.search-result-item .search-result-title[data-v-de94213f]{font-size:14px;color:var(--color-text-primary)}.search-result-item .search-result-parent[data-v-de94213f]{font-size:12px;color:var(--color-text-secondary)}.search-empty[data-v-de94213f]{padding:40px 20px;text-align:center;color:var(--color-text-secondary);font-size:14px}.settings-drawer .settings-section[data-v-de94213f]{margin-bottom:24px}.settings-drawer .settings-title[data-v-de94213f]{font-size:14px;font-weight:500;color:var(--color-text-primary);margin-bottom:12px}.settings-drawer .settings-layout-options[data-v-de94213f]{display:flex;gap:12px}.settings-drawer .layout-option[data-v-de94213f]{flex:1;display:flex;flex-direction:column;align-items:center;gap:8px;padding:12px;border:1px solid var(--color-border);border-radius:var(--border-radius-base);cursor:pointer;transition:all .2s}.settings-drawer .layout-option[data-v-de94213f]:hover{border-color:var(--color-primary-light-5)}.settings-drawer .layout-option.is-active[data-v-de94213f]{border-color:var(--color-primary);background-color:var(--color-primary-light-9)}.settings-drawer .layout-option__preview[data-v-de94213f]{width:48px;height:36px;border:1px solid var(--color-border-light);border-radius:2px;overflow:hidden}.settings-drawer .layout-option__label[data-v-de94213f]{font-size:12px;color:var(--color-text-regular)}.settings-drawer .layout-preview-sidebar[data-v-de94213f]{display:flex;height:100%}.settings-drawer .layout-preview-sidebar .preview-aside[data-v-de94213f]{width:25%;height:100%;background-color:var(--color-primary-light-7)}.settings-drawer .layout-preview-sidebar .preview-main[data-v-de94213f]{flex:1;display:flex;flex-direction:column}.settings-drawer .layout-preview-sidebar .preview-main .preview-header[data-v-de94213f]{height:20%;background-color:var(--color-border-light)}.settings-drawer .layout-preview-sidebar .preview-main .preview-content[data-v-de94213f]{flex:1;background-color:var(--bg-color-page)}.settings-drawer .layout-preview-top[data-v-de94213f]{display:flex;flex-direction:column;height:100%}.settings-drawer .layout-preview-top .preview-header-full[data-v-de94213f]{height:25%;background-color:var(--color-primary-light-7)}.settings-drawer .layout-preview-top .preview-content-full[data-v-de94213f]{flex:1;background-color:var(--bg-color-page)}.settings-drawer .layout-preview-mix[data-v-de94213f]{display:flex;flex-direction:column;height:100%}.settings-drawer .layout-preview-mix .preview-header-mix[data-v-de94213f]{height:25%;background-color:var(--color-primary-light-7);display:flex}.settings-drawer .layout-preview-mix .preview-header-mix .preview-mix-left[data-v-de94213f]{width:30%;background-color:var(--color-primary)}.settings-drawer .layout-preview-mix .preview-mix-body[data-v-de94213f]{flex:1;display:flex}.settings-drawer .layout-preview-mix .preview-mix-body .preview-mix-aside[data-v-de94213f]{width:25%;background-color:var(--color-primary-light-8)}.settings-drawer .layout-preview-mix .preview-mix-body .preview-mix-content[data-v-de94213f]{flex:1;background-color:var(--bg-color-page)}.settings-drawer .settings-color-options[data-v-de94213f]{display:flex;gap:12px}.settings-drawer .color-option[data-v-de94213f]{width:24px;height:24px;border-radius:4px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:transform .2s}.settings-drawer .color-option[data-v-de94213f]:hover{transform:scale(1.1)}.settings-drawer .color-option.is-active[data-v-de94213f]{box-shadow:0 0 0 2px var(--bg-color),0 0 0 4px var(--color-primary)}.settings-drawer .settings-switch-list[data-v-de94213f]{display:flex;flex-direction:column;gap:12px}.settings-drawer .settings-switch-item[data-v-de94213f]{display:flex;align-items:center;justify-content:space-between}.settings-drawer .settings-switch-item span[data-v-de94213f]{font-size:14px;color:var(--color-text-regular)}.settings-drawer .switch-wrapper[data-v-de94213f]{width:44px;height:22px;display:flex;align-items:center;cursor:pointer}.settings-drawer .switch-wrapper .switch-core[data-v-de94213f]{width:100%;height:100%;border-radius:11px;background-color:var(--color-border);position:relative;transition:background-color .2s}.settings-drawer .switch-wrapper .switch-core[data-v-de94213f]:after{content:"";position:absolute;top:2px;left:2px;width:18px;height:18px;background-color:#fff;border-radius:50%;transition:left .2s}.settings-drawer .switch-wrapper.is-checked .switch-core[data-v-de94213f]{background-color:var(--color-primary)}.settings-drawer .switch-wrapper.is-checked .switch-core[data-v-de94213f]:after{left:24px}.dropdown-enter-active[data-v-de94213f],.dropdown-leave-active[data-v-de94213f]{transition:all .2s ease}.dropdown-enter-from[data-v-de94213f],.dropdown-leave-to[data-v-de94213f]{opacity:0;transform:translateY(-10px)}.search-enter-active[data-v-de94213f],.search-leave-active[data-v-de94213f]{transition:all .2s ease}.search-enter-from[data-v-de94213f],.search-leave-to[data-v-de94213f]{opacity:0}:root.grey-mode[data-v-de94213f]{filter:grayscale(100%)}.layout[data-v-a3110011]{display:flex;width:100%;height:100%}.layout__aside[data-v-a3110011]{transition:width .3s;overflow:hidden;flex-shrink:0;height:100%}.layout__main[data-v-a3110011]{flex:1;display:flex;flex-direction:column;overflow:hidden;height:100%}.layout__header[data-v-a3110011]{height:50px;background-color:var(--bg-color);border-bottom:1px solid var(--color-border-lighter);flex-shrink:0}.layout__content[data-v-a3110011]{flex:1;overflow:auto;background-color:var(--bg-color-page)}.tabs-wrapper[data-v-9156d8cd]{width:100%;height:100%;padding:0 10px}.tabs-wrapper[data-v-9156d8cd] .t-tabs{height:100%}.tabs-wrapper[data-v-9156d8cd] .t-tabs__header{margin:0;border-bottom:none}.tabs-wrapper[data-v-9156d8cd] .t-tabs__nav{border:none}.tabs-wrapper[data-v-9156d8cd] .t-tabs__item{height:32px;line-height:32px;border:1px solid var(--color-border-lighter);margin-right:5px;border-radius:var(--border-radius-base);padding:0 15px}.tabs-wrapper[data-v-9156d8cd] .t-tabs__item.is-active{background-color:var(--color-primary-light-9);border-color:var(--color-primary)}.tab-label[data-v-9156d8cd]{display:flex;align-items:center;gap:5px}.tab-close[data-v-9156d8cd]{width:14px;height:14px;display:flex;align-items:center;justify-content:center;font-size:10px;border-radius:50%}.tab-close[data-v-9156d8cd]:hover{background-color:var(--color-danger-light);color:var(--color-danger)}.footer[data-v-4852826a]{width:100%;text-align:center;font-size:12px;color:var(--color-text-secondary)}.login[data-v-6e75b294]{width:100%;min-height:100vh;display:flex;align-items:center;justify-content:flex-end;padding-right:15%;background:linear-gradient(135deg,var(--color-primary-light-9) 0%,var(--color-primary-light-7) 100%)}.login__container[data-v-6e75b294]{width:400px;padding:40px;background-color:var(--bg-color);border-radius:var(--border-radius-large);box-shadow:var(--box-shadow-dark)}.login__header[data-v-6e75b294]{text-align:center;margin-bottom:30px}.login__logo[data-v-6e75b294]{width:60px;height:60px}.login__title[data-v-6e75b294]{font-size:28px;font-weight:600;color:var(--color-primary);margin:15px 0 5px}.login__subtitle[data-v-6e75b294]{font-size:14px;color:var(--color-text-secondary)}.login__form[data-v-6e75b294] .x-form-item{margin-bottom:20px}.login__form[data-v-6e75b294] .x-input__prefix{margin-right:8px}.login__submit[data-v-6e75b294]{width:100%}.login__footer[data-v-6e75b294]{text-align:center;margin-top:20px;font-size:12px;color:var(--color-text-placeholder)}.error-page[data-v-c3c12c24]{width:100%;height:100vh;display:flex;align-items:center;justify-content:center;background-color:var(--bg-color-page)}.error-page__content[data-v-c3c12c24]{text-align:center}.error-page__code[data-v-c3c12c24]{font-size:120px;font-weight:600;color:var(--color-primary);line-height:1;margin-bottom:20px}.error-page__title[data-v-c3c12c24]{font-size:24px;font-weight:500;color:var(--color-text-primary);margin-bottom:10px}.error-page__desc[data-v-c3c12c24]{font-size:14px;color:var(--color-text-secondary);margin-bottom:30px}.error-page[data-v-dd5f2795]{width:100%;height:100vh;display:flex;align-items:center;justify-content:center;background-color:var(--bg-color-page)}.error-page__content[data-v-dd5f2795]{text-align:center}.error-page__code[data-v-dd5f2795]{font-size:120px;font-weight:600;color:var(--color-warning);line-height:1;margin-bottom:20px}.error-page__title[data-v-dd5f2795]{font-size:24px;font-weight:500;color:var(--color-text-primary);margin-bottom:10px}.error-page__desc[data-v-dd5f2795]{font-size:14px;color:var(--color-text-secondary);margin-bottom:30px}.dashboard[data-v-44648cb1]{padding:20px}.dashboard__stats[data-v-44648cb1]{display:grid;grid-template-columns:repeat(4,1fr);gap:20px;margin-bottom:20px}@media (max-width: 1200px){.dashboard__stats[data-v-44648cb1]{grid-template-columns:repeat(2,1fr)}}@media (max-width: 768px){.dashboard__stats[data-v-44648cb1]{grid-template-columns:1fr}}.dashboard__main[data-v-44648cb1]{display:grid;grid-template-columns:repeat(2,1fr);gap:20px;margin-bottom:20px}@media (max-width: 992px){.dashboard__main[data-v-44648cb1]{grid-template-columns:1fr}}.dashboard__quick[data-v-44648cb1],.dashboard__activity[data-v-44648cb1]{min-height:300px}.card-title[data-v-44648cb1]{font-size:16px;font-weight:500}.stat-card__content[data-v-44648cb1]{display:flex;align-items:center;gap:15px}.stat-card__icon[data-v-44648cb1]{width:50px;height:50px;display:flex;align-items:center;justify-content:center;font-size:24px;border-radius:var(--border-radius-base)}.stat-card__info[data-v-44648cb1]{flex:1}.stat-card__title[data-v-44648cb1]{font-size:14px;color:var(--color-text-secondary);margin-bottom:5px}.stat-card__value[data-v-44648cb1]{font-size:24px;font-weight:600}.quick-links[data-v-44648cb1]{display:grid;grid-template-columns:repeat(4,1fr);gap:15px}@media (max-width: 768px){.quick-links[data-v-44648cb1]{grid-template-columns:repeat(2,1fr)}}.quick-link[data-v-44648cb1]{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:20px;border-radius:var(--border-radius-base);background-color:var(--color-fill);text-decoration:none;transition:all var(--transition-duration-fast)}.quick-link[data-v-44648cb1]:hover{background-color:var(--color-primary-light-9);transform:translateY(-2px)}.quick-link__icon[data-v-44648cb1]{font-size:28px;margin-bottom:10px}.quick-link__title[data-v-44648cb1]{font-size:14px;color:var(--color-text-primary)}.activity-list[data-v-44648cb1]{display:flex;flex-direction:column;gap:15px}.activity-item[data-v-44648cb1]{display:flex;align-items:center;gap:10px;padding-bottom:15px;border-bottom:1px solid var(--color-border-lighter)}.activity-item[data-v-44648cb1]:last-child{border-bottom:none;padding-bottom:0}.activity-item__action[data-v-44648cb1]{flex:1;font-size:14px;color:var(--color-text-regular)}.activity-item__time[data-v-44648cb1]{font-size:12px;color:var(--color-text-placeholder)}.system-info[data-v-44648cb1]{display:grid;grid-template-columns:repeat(2,1fr);gap:20px}@media (max-width: 768px){.system-info[data-v-44648cb1]{grid-template-columns:1fr}}.system-info__item[data-v-44648cb1]{display:flex;align-items:center;gap:10px}.system-info__label[data-v-44648cb1]{font-size:14px;color:var(--color-text-secondary);min-width:80px}.system-info__value[data-v-44648cb1]{font-size:14px;color:var(--color-text-primary)}.user-page[data-v-d2491ae0]{padding:20px}.user-page .search-card[data-v-d2491ae0]{margin-bottom:20px}.user-page .toolbar[data-v-d2491ae0]{margin-bottom:15px}.data-table[data-v-d2491ae0]{width:100%;border-collapse:collapse}.data-table th[data-v-d2491ae0],.data-table td[data-v-d2491ae0]{padding:12px;text-align:left;border-bottom:1px solid var(--color-border-lighter)}.data-table th[data-v-d2491ae0]{font-weight:500;color:var(--color-text-regular);background-color:var(--color-fill-light)}.data-table .loading-cell[data-v-d2491ae0],.data-table .empty-cell[data-v-d2491ae0]{text-align:center;color:var(--color-text-secondary);padding:40px}.pagination-wrapper[data-v-d2491ae0]{display:flex;justify-content:flex-end;margin-top:20px}.role-page[data-v-8ad30bc6]{padding:20px}.role-page .search-card[data-v-8ad30bc6]{margin-bottom:20px}.role-page .toolbar[data-v-8ad30bc6]{margin-bottom:15px}.data-table[data-v-8ad30bc6]{width:100%;border-collapse:collapse}.data-table th[data-v-8ad30bc6],.data-table td[data-v-8ad30bc6]{padding:12px;text-align:left;border-bottom:1px solid var(--color-border-lighter)}.data-table th[data-v-8ad30bc6]{font-weight:500;color:var(--color-text-regular);background-color:var(--color-fill-light)}.data-table .loading-cell[data-v-8ad30bc6],.data-table .empty-cell[data-v-8ad30bc6]{text-align:center;color:var(--color-text-secondary);padding:40px}.pagination-wrapper[data-v-8ad30bc6]{display:flex;justify-content:flex-end;margin-top:20px}.menu-page[data-v-2a272a68]{padding:20px}.menu-page .toolbar[data-v-2a272a68]{margin-bottom:15px}.tree-table[data-v-2a272a68]{width:100%;border-collapse:collapse}.tree-table th[data-v-2a272a68],.tree-table td[data-v-2a272a68]{padding:12px;text-align:left;border-bottom:1px solid var(--color-border-lighter)}.tree-table th[data-v-2a272a68]{font-weight:500;color:var(--color-text-regular);background-color:var(--color-fill-light)}.tree-table .tree-row--level-1 td[data-v-2a272a68]:first-child{padding-left:30px}.tree-indent[data-v-2a272a68]{display:inline-block;width:20px}.menu-name[data-v-2a272a68]{cursor:pointer;color:var(--color-primary)}.menu-name[data-v-2a272a68]:hover{text-decoration:underline}
|