@axewo/cnsframework
Version:
一个免费开源的中后台管理系统基础解决方案,基于 Vue3、TypeScript、Element Plus、Pinia 和 Vite 等主流技术
1,551 lines • 55.9 kB
JavaScript
import { reactive as We, ref as z, watch as Me, onBeforeMount as He, onMounted as $e, onBeforeUnmount as Oe, defineComponent as A, openBlock as d, createElementBlock as k, createElementVNode as x, toDisplayString as F, unref as p, resolveComponent as g, createVNode as u, withCtx as f, Transition as Ae, createBlock as w, KeepAlive as qe, resolveDynamicComponent as fe, createCommentVNode as M, Fragment as j, renderList as Q, withModifiers as oe, renderSlot as ae, computed as C, normalizeClass as D, createSlots as Ue, createTextVNode as J, normalizeStyle as Le, useCssVars as Ve, watchEffect as le, pushScopeId as Re, popScopeId as Ie, nextTick as Ge, getCurrentInstance as Xe, withDirectives as re, vShow as ce } from "vue";
import { d as je, g as Je, s as xe, u as ie, a as O, b as H, c as Fe, e as ue, f as de, r as Ke, h as Pe, i as Ye, j as Ze, k as Qe, R as et } from "./main-ba2a9cc9.js";
import { Fold as tt, Expand as nt, Bell as ot, MagicStick as st, UserFilled as at, Refresh as lt, ArrowLeft as rt, ArrowRight as ct, Close as it, Setting as ut } from "@element-plus/icons-vue";
import "dayjs";
import { ElMessage as De, ElScrollbar as dt } from "element-plus";
var X = /* @__PURE__ */ ((n) => (n[n.Mobile = 0] = "Mobile", n[n.Desktop = 1] = "Desktop", n))(X || {});
const _t = "opened", Ne = "closed";
function ft(n) {
n ? xe(_t) : xe(Ne);
}
const ne = je("app", () => {
const n = We({
opened: Je() !== Ne,
withoutAnimation: !1
}), e = z(X.Desktop);
return Me(
() => n.opened,
(s) => ft(s)
), { device: e, sidebar: n, toggleSidebar: (s) => {
n.opened = !n.opened, n.withoutAnimation = s;
}, closeSidebar: (s) => {
n.opened = !1, n.withoutAnimation = s;
}, toggleDevice: (s) => {
e.value = s;
} };
}), pt = 992, vt = () => {
const n = ne(), { listenerRouteChange: e } = ie(), t = () => document.body.getBoundingClientRect().width - 1 < pt, l = () => {
if (!document.hidden) {
const o = t();
n.toggleDevice(o ? X.Mobile : X.Desktop), o && n.closeSidebar(!0);
}
};
e(() => {
n.device === X.Mobile && n.sidebar.opened && n.closeSidebar(!1);
}), He(() => {
window.addEventListener("resize", l);
}), $e(() => {
t() && (n.toggleDevice(X.Mobile), n.closeSidebar(!0));
}), Oe(() => {
window.removeEventListener("resize", l);
});
}, mt = { class: "layout-footer" }, ht = /* @__PURE__ */ A({
__name: "index",
setup(n) {
const e = O(), { copyrightZh: t, copyrightEn: l } = H(e);
return (o, s) => (d(), k("footer", mt, [
x("div", null, F(p(t)), 1),
x("div", null, F(p(l)), 1)
]));
}
});
const R = (n, e) => {
const t = n.__vccOpts || n;
for (const [l, o] of e)
t[l] = o;
return t;
}, gt = /* @__PURE__ */ R(ht, [["__scopeId", "data-v-365aeeb6"]]), bt = { class: "app-main" }, yt = { class: "app-scrollbar" }, wt = /* @__PURE__ */ A({
__name: "AppMain",
setup(n) {
const e = Fe(), t = O();
return (l, o) => {
const s = g("router-view"), a = g("el-backtop");
return d(), k("section", bt, [
x("div", yt, [
u(s, null, {
default: f(({ Component: r, route: c }) => [
u(Ae, {
name: "el-fade-in",
mode: "out-in"
}, {
default: f(() => [
(d(), w(qe, {
include: p(e).cachedViews
}, [
(d(), w(fe(r), {
key: c.path,
class: "app-container-grow"
}))
], 1032, ["include"]))
]),
_: 2
}, 1024)
]),
_: 1
}),
p(t).showFooter ? (d(), w(gt, { key: 0 })) : M("", !0)
]),
u(a),
u(a, { target: ".app-scrollbar" })
]);
};
}
});
const ve = /* @__PURE__ */ R(wt, [["__scopeId", "data-v-849e13d2"]]), xt = /* @__PURE__ */ A({
__name: "index",
props: {
isActive: { type: Boolean, default: !1 }
},
emits: ["toggleClick"],
setup(n, { emit: e }) {
const t = n, l = e, o = () => {
l("toggleClick");
};
return (s, a) => {
const r = g("el-icon");
return d(), k("div", { onClick: o }, [
u(r, {
size: 20,
class: "icon"
}, {
default: f(() => [
t.isActive ? (d(), w(p(tt), { key: 0 })) : (d(), w(p(nt), { key: 1 }))
]),
_: 1
})
]);
};
}
});
const kt = /* @__PURE__ */ R(xt, [["__scopeId", "data-v-9f145668"]]);
function St(n) {
for (var e = [], t = 0; t < n.length; ) {
var l = n[t];
if (l === "*" || l === "+" || l === "?") {
e.push({ type: "MODIFIER", index: t, value: n[t++] });
continue;
}
if (l === "\\") {
e.push({ type: "ESCAPED_CHAR", index: t++, value: n[t++] });
continue;
}
if (l === "{") {
e.push({ type: "OPEN", index: t, value: n[t++] });
continue;
}
if (l === "}") {
e.push({ type: "CLOSE", index: t, value: n[t++] });
continue;
}
if (l === ":") {
for (var o = "", s = t + 1; s < n.length; ) {
var a = n.charCodeAt(s);
if (
// `0-9`
a >= 48 && a <= 57 || // `A-Z`
a >= 65 && a <= 90 || // `a-z`
a >= 97 && a <= 122 || // `_`
a === 95
) {
o += n[s++];
continue;
}
break;
}
if (!o)
throw new TypeError("Missing parameter name at ".concat(t));
e.push({ type: "NAME", index: t, value: o }), t = s;
continue;
}
if (l === "(") {
var r = 1, c = "", s = t + 1;
if (n[s] === "?")
throw new TypeError('Pattern cannot start with "?" at '.concat(s));
for (; s < n.length; ) {
if (n[s] === "\\") {
c += n[s++] + n[s++];
continue;
}
if (n[s] === ")") {
if (r--, r === 0) {
s++;
break;
}
} else if (n[s] === "(" && (r++, n[s + 1] !== "?"))
throw new TypeError("Capturing groups are not allowed at ".concat(s));
c += n[s++];
}
if (r)
throw new TypeError("Unbalanced pattern at ".concat(t));
if (!c)
throw new TypeError("Missing pattern at ".concat(t));
e.push({ type: "PATTERN", index: t, value: c }), t = s;
continue;
}
e.push({ type: "CHAR", index: t, value: n[t++] });
}
return e.push({ type: "END", index: t, value: "" }), e;
}
function Ct(n, e) {
e === void 0 && (e = {});
for (var t = St(n), l = e.prefixes, o = l === void 0 ? "./" : l, s = "[^".concat(Mt(e.delimiter || "/#?"), "]+?"), a = [], r = 0, c = 0, v = "", _ = function(P) {
if (c < t.length && t[c].type === P)
return t[c++].value;
}, i = function(P) {
var q = _(P);
if (q !== void 0)
return q;
var K = t[c], b = K.type, $ = K.index;
throw new TypeError("Unexpected ".concat(b, " at ").concat($, ", expected ").concat(P));
}, m = function() {
for (var P = "", q; q = _("CHAR") || _("ESCAPED_CHAR"); )
P += q;
return P;
}; c < t.length; ) {
var h = _("CHAR"), y = _("NAME"), E = _("PATTERN");
if (y || E) {
var S = h || "";
o.indexOf(S) === -1 && (v += S, S = ""), v && (a.push(v), v = ""), a.push({
name: y || r++,
prefix: S,
suffix: "",
pattern: E || s,
modifier: _("MODIFIER") || ""
});
continue;
}
var I = h || _("ESCAPED_CHAR");
if (I) {
v += I;
continue;
}
v && (a.push(v), v = "");
var L = _("OPEN");
if (L) {
var S = m(), V = _("NAME") || "", W = _("PATTERN") || "", U = m();
i("CLOSE"), a.push({
name: V || (W ? r++ : ""),
pattern: V && !W ? s : W,
prefix: S,
suffix: U,
modifier: _("MODIFIER") || ""
});
continue;
}
i("END");
}
return a;
}
function Et(n, e) {
return Tt(Ct(n, e), e);
}
function Tt(n, e) {
e === void 0 && (e = {});
var t = $t(e), l = e.encode, o = l === void 0 ? function(c) {
return c;
} : l, s = e.validate, a = s === void 0 ? !0 : s, r = n.map(function(c) {
if (typeof c == "object")
return new RegExp("^(?:".concat(c.pattern, ")$"), t);
});
return function(c) {
for (var v = "", _ = 0; _ < n.length; _++) {
var i = n[_];
if (typeof i == "string") {
v += i;
continue;
}
var m = c ? c[i.name] : void 0, h = i.modifier === "?" || i.modifier === "*", y = i.modifier === "*" || i.modifier === "+";
if (Array.isArray(m)) {
if (!y)
throw new TypeError('Expected "'.concat(i.name, '" to not repeat, but got an array'));
if (m.length === 0) {
if (h)
continue;
throw new TypeError('Expected "'.concat(i.name, '" to not be empty'));
}
for (var E = 0; E < m.length; E++) {
var S = o(m[E], i);
if (a && !r[_].test(S))
throw new TypeError('Expected all "'.concat(i.name, '" to match "').concat(i.pattern, '", but got "').concat(S, '"'));
v += i.prefix + S + i.suffix;
}
continue;
}
if (typeof m == "string" || typeof m == "number") {
var S = o(String(m), i);
if (a && !r[_].test(S))
throw new TypeError('Expected "'.concat(i.name, '" to match "').concat(i.pattern, '", but got "').concat(S, '"'));
v += i.prefix + S + i.suffix;
continue;
}
if (!h) {
var I = y ? "an array" : "a string";
throw new TypeError('Expected "'.concat(i.name, '" to be ').concat(I));
}
}
return v;
};
}
function Mt(n) {
return n.replace(/([.+*?=^!:${}()[\]|/\\])/g, "\\$1");
}
function $t(n) {
return n && n.sensitive ? "" : "i";
}
const At = {
key: 0,
class: "no-redirect"
}, Lt = ["onClick"], Vt = /* @__PURE__ */ A({
__name: "index",
setup(n) {
const e = ue(), t = de(), { listenerRouteChange: l } = ie(), o = z([]), s = () => {
o.value = e.matched.filter((c) => c.meta?.title && c.meta?.breadcrumb !== !1);
}, a = (c) => Et(c)(e.params), r = (c) => {
const { redirect: v, path: _ } = c;
if (v) {
t.push(v);
return;
}
t.push(a(_));
};
return l((c) => {
c.path.startsWith("/redirect/") || s();
}, !0), (c, v) => {
const _ = g("el-breadcrumb-item"), i = g("el-breadcrumb");
return d(), w(i, { class: "app-breadcrumb" }, {
default: f(() => [
(d(!0), k(j, null, Q(o.value, (m, h) => (d(), w(_, {
key: m.path
}, {
default: f(() => [
m.redirect === "noRedirect" || h === o.value.length - 1 ? (d(), k("span", At, F(m.meta.title), 1)) : (d(), k("a", {
key: 1,
onClick: oe((y) => r(m), ["prevent"])
}, F(m.meta.title), 9, Lt))
]),
_: 2
}, 1024))), 128))
]),
_: 1
});
};
}
});
const Rt = /* @__PURE__ */ R(Vt, [["__scopeId", "data-v-3a94d4c6"]]), pe = (n) => /^(https?:|mailto:|tel:)/.test(n), It = ["href"], Ft = /* @__PURE__ */ A({
__name: "SidebarItemLink",
props: {
to: {}
},
setup(n) {
const e = n;
return (t, l) => {
const o = g("router-link");
return p(pe)(e.to) ? (d(), k("a", {
key: 0,
href: e.to,
target: "_blank",
rel: "noopener"
}, [
ae(t.$slots, "default")
], 8, It)) : (d(), w(o, {
key: 1,
to: e.to
}, {
default: f(() => [
ae(t.$slots, "default")
]),
_: 3
}, 8, ["to"]));
};
}
});
function Pt(n) {
return n && n.__esModule && Object.prototype.hasOwnProperty.call(n, "default") ? n.default : n;
}
function G(n) {
if (typeof n != "string")
throw new TypeError("Path must be a string. Received " + JSON.stringify(n));
}
function ke(n, e) {
for (var t = "", l = 0, o = -1, s = 0, a, r = 0; r <= n.length; ++r) {
if (r < n.length)
a = n.charCodeAt(r);
else {
if (a === 47)
break;
a = 47;
}
if (a === 47) {
if (!(o === r - 1 || s === 1))
if (o !== r - 1 && s === 2) {
if (t.length < 2 || l !== 2 || t.charCodeAt(t.length - 1) !== 46 || t.charCodeAt(t.length - 2) !== 46) {
if (t.length > 2) {
var c = t.lastIndexOf("/");
if (c !== t.length - 1) {
c === -1 ? (t = "", l = 0) : (t = t.slice(0, c), l = t.length - 1 - t.lastIndexOf("/")), o = r, s = 0;
continue;
}
} else if (t.length === 2 || t.length === 1) {
t = "", l = 0, o = r, s = 0;
continue;
}
}
e && (t.length > 0 ? t += "/.." : t = "..", l = 2);
} else
t.length > 0 ? t += "/" + n.slice(o + 1, r) : t = n.slice(o + 1, r), l = r - o - 1;
o = r, s = 0;
} else
a === 46 && s !== -1 ? ++s : s = -1;
}
return t;
}
function Dt(n, e) {
var t = e.dir || e.root, l = e.base || (e.name || "") + (e.ext || "");
return t ? t === e.root ? t + l : t + n + l : l;
}
var te = {
// path.resolve([from ...], to)
resolve: function() {
for (var e = "", t = !1, l, o = arguments.length - 1; o >= -1 && !t; o--) {
var s;
o >= 0 ? s = arguments[o] : (l === void 0 && (l = process.cwd()), s = l), G(s), s.length !== 0 && (e = s + "/" + e, t = s.charCodeAt(0) === 47);
}
return e = ke(e, !t), t ? e.length > 0 ? "/" + e : "/" : e.length > 0 ? e : ".";
},
normalize: function(e) {
if (G(e), e.length === 0)
return ".";
var t = e.charCodeAt(0) === 47, l = e.charCodeAt(e.length - 1) === 47;
return e = ke(e, !t), e.length === 0 && !t && (e = "."), e.length > 0 && l && (e += "/"), t ? "/" + e : e;
},
isAbsolute: function(e) {
return G(e), e.length > 0 && e.charCodeAt(0) === 47;
},
join: function() {
if (arguments.length === 0)
return ".";
for (var e, t = 0; t < arguments.length; ++t) {
var l = arguments[t];
G(l), l.length > 0 && (e === void 0 ? e = l : e += "/" + l);
}
return e === void 0 ? "." : te.normalize(e);
},
relative: function(e, t) {
if (G(e), G(t), e === t || (e = te.resolve(e), t = te.resolve(t), e === t))
return "";
for (var l = 1; l < e.length && e.charCodeAt(l) === 47; ++l)
;
for (var o = e.length, s = o - l, a = 1; a < t.length && t.charCodeAt(a) === 47; ++a)
;
for (var r = t.length, c = r - a, v = s < c ? s : c, _ = -1, i = 0; i <= v; ++i) {
if (i === v) {
if (c > v) {
if (t.charCodeAt(a + i) === 47)
return t.slice(a + i + 1);
if (i === 0)
return t.slice(a + i);
} else
s > v && (e.charCodeAt(l + i) === 47 ? _ = i : i === 0 && (_ = 0));
break;
}
var m = e.charCodeAt(l + i), h = t.charCodeAt(a + i);
if (m !== h)
break;
m === 47 && (_ = i);
}
var y = "";
for (i = l + _ + 1; i <= o; ++i)
(i === o || e.charCodeAt(i) === 47) && (y.length === 0 ? y += ".." : y += "/..");
return y.length > 0 ? y + t.slice(a + _) : (a += _, t.charCodeAt(a) === 47 && ++a, t.slice(a));
},
_makeLong: function(e) {
return e;
},
dirname: function(e) {
if (G(e), e.length === 0)
return ".";
for (var t = e.charCodeAt(0), l = t === 47, o = -1, s = !0, a = e.length - 1; a >= 1; --a)
if (t = e.charCodeAt(a), t === 47) {
if (!s) {
o = a;
break;
}
} else
s = !1;
return o === -1 ? l ? "/" : "." : l && o === 1 ? "//" : e.slice(0, o);
},
basename: function(e, t) {
if (t !== void 0 && typeof t != "string")
throw new TypeError('"ext" argument must be a string');
G(e);
var l = 0, o = -1, s = !0, a;
if (t !== void 0 && t.length > 0 && t.length <= e.length) {
if (t.length === e.length && t === e)
return "";
var r = t.length - 1, c = -1;
for (a = e.length - 1; a >= 0; --a) {
var v = e.charCodeAt(a);
if (v === 47) {
if (!s) {
l = a + 1;
break;
}
} else
c === -1 && (s = !1, c = a + 1), r >= 0 && (v === t.charCodeAt(r) ? --r === -1 && (o = a) : (r = -1, o = c));
}
return l === o ? o = c : o === -1 && (o = e.length), e.slice(l, o);
} else {
for (a = e.length - 1; a >= 0; --a)
if (e.charCodeAt(a) === 47) {
if (!s) {
l = a + 1;
break;
}
} else
o === -1 && (s = !1, o = a + 1);
return o === -1 ? "" : e.slice(l, o);
}
},
extname: function(e) {
G(e);
for (var t = -1, l = 0, o = -1, s = !0, a = 0, r = e.length - 1; r >= 0; --r) {
var c = e.charCodeAt(r);
if (c === 47) {
if (!s) {
l = r + 1;
break;
}
continue;
}
o === -1 && (s = !1, o = r + 1), c === 46 ? t === -1 ? t = r : a !== 1 && (a = 1) : t !== -1 && (a = -1);
}
return t === -1 || o === -1 || // We saw a non-dot character immediately before the dot
a === 0 || // The (right-most) trimmed path component is exactly '..'
a === 1 && t === o - 1 && t === l + 1 ? "" : e.slice(t, o);
},
format: function(e) {
if (e === null || typeof e != "object")
throw new TypeError('The "pathObject" argument must be of type Object. Received type ' + typeof e);
return Dt("/", e);
},
parse: function(e) {
G(e);
var t = { root: "", dir: "", base: "", ext: "", name: "" };
if (e.length === 0)
return t;
var l = e.charCodeAt(0), o = l === 47, s;
o ? (t.root = "/", s = 1) : s = 0;
for (var a = -1, r = 0, c = -1, v = !0, _ = e.length - 1, i = 0; _ >= s; --_) {
if (l = e.charCodeAt(_), l === 47) {
if (!v) {
r = _ + 1;
break;
}
continue;
}
c === -1 && (v = !1, c = _ + 1), l === 46 ? a === -1 ? a = _ : i !== 1 && (i = 1) : a !== -1 && (i = -1);
}
return a === -1 || c === -1 || // We saw a non-dot character immediately before the dot
i === 0 || // The (right-most) trimmed path component is exactly '..'
i === 1 && a === c - 1 && a === r + 1 ? c !== -1 && (r === 0 && o ? t.base = t.name = e.slice(1, c) : t.base = t.name = e.slice(r, c)) : (r === 0 && o ? (t.name = e.slice(1, a), t.base = e.slice(1, c)) : (t.name = e.slice(r, a), t.base = e.slice(r, c)), t.ext = e.slice(a, c)), r > 0 ? t.dir = e.slice(0, r - 1) : o && (t.dir = "/"), t;
},
sep: "/",
delimiter: ":",
win32: null,
posix: null
};
te.posix = te;
var Nt = te;
const Be = /* @__PURE__ */ Pt(Nt), Bt = { key: 2 }, zt = /* @__PURE__ */ A({
__name: "SidebarItem",
props: {
item: {},
isCollapse: { type: Boolean, default: !1 },
isTop: { type: Boolean, default: !1 },
isFirstLevel: { type: Boolean, default: !0 },
basePath: { default: "" }
},
setup(n) {
const e = n, t = C(() => e.item.meta?.alwaysShow), l = C(() => e.item.children?.filter((r) => !r.meta?.hidden) ?? []), o = C(() => l.value.length), s = C(() => {
const r = o.value;
switch (!0) {
case r > 1:
return null;
case r === 1:
return l.value[0];
default:
return { ...e.item, path: "" };
}
}), a = (r) => {
switch (!0) {
case pe(r):
return r;
case pe(e.basePath):
return e.basePath;
default:
return Be.resolve(e.basePath, r);
}
};
return (r, c) => {
const v = g("SvgIcon"), _ = g("el-menu-item"), i = g("sidebar-item", !0), m = g("el-sub-menu");
return e.item.meta?.hidden ? M("", !0) : (d(), k("div", {
key: 0,
class: D({ "simple-mode": e.isCollapse && !r.isTop, "first-level": e.isFirstLevel })
}, [
!t.value && s.value && !s.value.children ? (d(), k(j, { key: 0 }, [
s.value.meta ? (d(), w(Ft, {
key: 0,
to: a(s.value.path)
}, {
default: f(() => [
u(_, {
index: a(s.value.path)
}, Ue({
default: f(() => [
s.value.meta.svgIcon ? (d(), w(v, {
key: 0,
name: s.value.meta.svgIcon
}, null, 8, ["name"])) : s.value.meta.elIcon ? (d(), w(fe(s.value.meta.elIcon), {
key: 1,
class: "el-icon"
})) : M("", !0)
]),
_: 2
}, [
s.value.meta.title ? {
name: "title",
fn: f(() => [
J(F(s.value.meta.title), 1)
]),
key: "0"
} : void 0
]), 1032, ["index"])
]),
_: 1
}, 8, ["to"])) : M("", !0)
], 64)) : (d(), w(m, {
key: 1,
index: a(e.item.path),
teleported: ""
}, {
title: f(() => [
e.item.meta?.svgIcon ? (d(), w(v, {
key: 0,
name: e.item.meta.svgIcon
}, null, 8, ["name"])) : e.item.meta?.elIcon ? (d(), w(fe(e.item.meta.elIcon), {
key: 1,
class: "el-icon"
})) : M("", !0),
e.item.meta?.title ? (d(), k("span", Bt, F(e.item.meta.title), 1)) : M("", !0)
]),
default: f(() => [
e.item.children && e.item.children.length > 0 ? (d(!0), k(j, { key: 0 }, Q(e.item.children, (h) => (d(), w(i, {
key: h.path,
item: h,
"is-collapse": e.isCollapse,
"is-first-level": !1,
"base-path": a(h.path)
}, null, 8, ["item", "is-collapse", "base-path"]))), 128)) : M("", !0)
]),
_: 1
}, 8, ["index"]))
], 2));
};
}
});
const Wt = /* @__PURE__ */ R(zt, [["__scopeId", "data-v-2227fea7"]]), Ht = ["src"], Ot = ["src"], qt = /* @__PURE__ */ A({
__name: "index",
props: {
collapse: { type: Boolean, default: !0 }
},
setup(n) {
const e = n, t = O(), { layoutMode: l, sideLogo: o, title: s } = H(t);
return (a, r) => {
const c = g("router-link");
return d(), k("div", {
class: D(["layout-logo-container", { collapse: e.collapse, "layout-mode-top": p(l) === "top" }])
}, [
u(Ae, { name: "layout-logo-fade" }, {
default: f(() => [
e.collapse ? (d(), w(c, {
key: "collapse",
to: "/"
}, {
default: f(() => [
x("img", {
src: p(o),
class: "layout-logo"
}, null, 8, Ht)
]),
_: 1
})) : (d(), w(c, {
key: "expand",
to: "/",
class: "layout-logo-text"
}, {
default: f(() => [
x("img", {
src: p(o),
style: { flex: "32px 0 0", width: "32px", "margin-left": "10px" }
}, null, 8, Ot),
x("div", {
class: "layout-title",
style: Le({ color: p(l) !== "left" ? "#000" : "#fff" })
}, F(p(s)), 5)
]),
_: 1
}))
]),
_: 1
})
], 2);
};
}
});
const me = /* @__PURE__ */ R(qt, [["__scopeId", "data-v-fa229ec7"]]), se = (n) => {
let e = "";
try {
e = getComputedStyle(document.documentElement).getPropertyValue(n);
} catch (t) {
console.error(t);
}
return e;
}, Se = (n, e) => {
try {
document.documentElement.style.setProperty(n, e);
} catch (t) {
console.error(t);
}
}, Ut = () => {
Ke(), location.reload();
}, Gt = /* @__PURE__ */ A({
__name: "index",
setup(n) {
Ve((b) => ({
"56bea8c8": q.value,
"107712b2": K.value,
"75d0f4f8": U.value,
"4df57e2c": P.value,
"38d5ff3f": W.value
}));
const e = se("--v3-sidebar-menu-bg-color"), t = se("--v3-sidebar-menu-text-color"), l = se("--v3-sidebar-menu-active-text-color"), o = ue(), s = ne(), a = Pe(), r = O(), { sidebar: c, device: v } = H(s), { layoutMode: _, showLogo: i } = H(r), m = C(() => {
const {
meta: { activeMenu: b },
path: $
} = o;
return b || $;
}), h = C(() => !c.value.opened), y = C(() => _.value === "left"), E = C(() => _.value === "top"), S = C(() => v.value === X.Mobile), I = C(() => y.value && i.value), L = C(() => y.value ? e : void 0), V = C(() => y.value ? t : void 0), W = C(() => y.value ? l : void 0), U = C(() => _.value !== "top" ? "var(--v3-sidebar-menu-item-height)" : "var(--v3-navigationbar-height)"), P = C(() => _.value !== "top" ? "var(--v3-sidebar-menu-hover-bg-color)" : "transparent"), q = C(() => _.value !== "top" ? "2px" : "0px"), K = C(() => _.value === "top" ? "none" : "block");
return (b, $) => {
const Y = g("el-menu"), T = g("el-scrollbar");
return d(), k("div", {
class: D({ "has-logo": I.value })
}, [
I.value ? (d(), w(me, {
key: 0,
collapse: h.value
}, null, 8, ["collapse"])) : M("", !0),
u(T, { "wrap-class": "scrollbar-wrapper" }, {
default: f(() => [
u(Y, {
"default-active": m.value,
collapse: h.value && !E.value,
"background-color": L.value,
"text-color": V.value,
"active-text-color": W.value,
"unique-opened": !0,
"collapse-transition": !1,
mode: E.value && !S.value ? "horizontal" : "vertical"
}, {
default: f(() => [
(d(!0), k(j, null, Q(p(a).routes, (N) => (d(), w(Wt, {
key: N.path,
item: N,
"base-path": N.path,
"is-collapse": h.value,
"is-top": E.value
}, null, 8, ["item", "base-path", "is-collapse", "is-top"]))), 128))
]),
_: 1
}, 8, ["default-active", "collapse", "background-color", "text-color", "active-text-color", "mode"])
]),
_: 1
})
], 2);
};
}
});
const he = /* @__PURE__ */ R(Gt, [["__scopeId", "data-v-1b00bae0"]]), Xt = { class: "card-header" }, jt = { class: "card-title" }, Jt = { class: "card-time" }, Kt = {
key: 0,
class: "card-avatar"
}, Yt = ["src"], Zt = { class: "card-body" }, Qt = /* @__PURE__ */ A({
__name: "NotifyList",
props: {
list: {},
prop: {}
},
setup(n) {
return (e, t) => {
const l = g("el-empty"), o = g("el-tag"), s = g("el-card");
return e.list.length === 0 ? (d(), w(l, { key: 0 })) : (d(!0), k(j, { key: 1 }, Q(e.list, (a, r) => (d(), w(s, {
key: r,
shadow: "never",
class: "card-container"
}, {
header: f(() => [
x("div", Xt, [
x("div", null, [
x("span", null, [
x("span", jt, F(a[e.prop.title]), 1),
a[e.prop.extra] ? (d(), w(o, {
key: 0,
type: a[e.prop.status],
effect: "plain",
size: "small"
}, {
default: f(() => [
J(F(a[e.prop.extra]), 1)
]),
_: 2
}, 1032, ["type"])) : M("", !0)
]),
x("div", Jt, F(a[e.prop.datetime]), 1)
]),
a[e.prop.avatar] ? (d(), k("div", Kt, [
x("img", {
src: a[e.prop.avatar],
width: "34"
}, null, 8, Yt)
])) : M("", !0)
])
]),
default: f(() => [
x("div", Zt, F(a[e.prop.description] ?? "No Data"), 1)
]),
_: 2
}, 1024))), 128));
};
}
});
const en = /* @__PURE__ */ R(Qt, [["__scopeId", "data-v-7cda7a8f"]]), tn = { class: "notify" }, nn = { class: "notify-history" }, Ce = 99, on = 350, sn = /* @__PURE__ */ A({
__name: "index",
setup(n) {
const e = de(), { notityProps: t } = Ye(), { column: l, jumpUrl: o } = t, s = C(() => l.reduce((c, v) => c + v.badge, 0)), a = z(l[0].name || "通知"), r = () => {
o || De.error(`您还没有配置跳转到${a.value}历史页面`), e.push(o);
};
return (c, v) => {
const _ = g("el-icon"), i = g("el-tooltip"), m = g("el-badge"), h = g("el-scrollbar"), y = g("el-tab-pane"), E = g("el-tabs"), S = g("el-button"), I = g("el-popover");
return d(), k("div", tn, [
u(I, {
placement: "bottom",
width: on,
trigger: "click"
}, {
reference: f(() => [
u(m, {
value: s.value,
max: Ce,
hidden: s.value === 0
}, {
default: f(() => [
u(i, {
effect: "dark",
content: "消息通知",
placement: "bottom"
}, {
default: f(() => [
u(_, { size: 20 }, {
default: f(() => [
u(p(ot))
]),
_: 1
})
]),
_: 1
})
]),
_: 1
}, 8, ["value", "hidden"])
]),
default: f(() => [
u(E, {
modelValue: a.value,
"onUpdate:modelValue": v[0] || (v[0] = (L) => a.value = L),
class: "demo-tabs",
stretch: ""
}, {
default: f(() => [
(d(!0), k(j, null, Q(p(l), (L, V) => (d(), w(y, {
name: L.name,
key: V
}, {
label: f(() => [
J(F(L.name) + " ", 1),
u(m, {
value: L.badgeMax,
max: Ce,
type: L.type
}, null, 8, ["value", "type"])
]),
default: f(() => [
u(h, { height: "400px" }, {
default: f(() => [
u(en, {
list: L.list,
prop: L.props
}, null, 8, ["list", "prop"])
]),
_: 2
}, 1024)
]),
_: 2
}, 1032, ["name"]))), 128))
]),
_: 1
}, 8, ["modelValue"]),
x("div", nn, [
u(S, {
link: "",
onClick: r
}, {
default: f(() => [
J("查看" + F(a.value) + "历史", 1)
]),
_: 1
})
])
]),
_: 1
})
]);
};
}
});
const an = /* @__PURE__ */ R(sn, [["__scopeId", "data-v-836e55c3"]]), ln = /* @__PURE__ */ A({
__name: "index",
setup(n) {
const { themeList: e, activeThemeName: t, setTheme: l } = Ze();
return (o, s) => {
const a = g("el-icon"), r = g("el-tooltip"), c = g("el-dropdown-item"), v = g("el-dropdown-menu"), _ = g("el-dropdown");
return d(), w(_, {
trigger: "click",
onCommand: p(l)
}, {
dropdown: f(() => [
u(v, null, {
default: f(() => [
(d(!0), k(j, null, Q(p(e), (i, m) => (d(), w(c, {
key: m,
disabled: p(t) === i.name,
command: i.name
}, {
default: f(() => [
x("span", null, F(i.title), 1)
]),
_: 2
}, 1032, ["disabled", "command"]))), 128))
]),
_: 1
})
]),
default: f(() => [
x("div", null, [
u(r, {
effect: "dark",
content: "主题模式",
placement: "bottom"
}, {
default: f(() => [
u(a, { size: 20 }, {
default: f(() => [
u(p(st))
]),
_: 1
})
]),
_: 1
})
])
]),
_: 1
}, 8, ["onCommand"]);
};
}
}), Ee = [
[
"requestFullscreen",
"exitFullscreen",
"fullscreenElement",
"fullscreenEnabled",
"fullscreenchange",
"fullscreenerror"
],
// New WebKit
[
"webkitRequestFullscreen",
"webkitExitFullscreen",
"webkitFullscreenElement",
"webkitFullscreenEnabled",
"webkitfullscreenchange",
"webkitfullscreenerror"
],
// Old WebKit
[
"webkitRequestFullScreen",
"webkitCancelFullScreen",
"webkitCurrentFullScreenElement",
"webkitCancelFullScreen",
"webkitfullscreenchange",
"webkitfullscreenerror"
],
[
"mozRequestFullScreen",
"mozCancelFullScreen",
"mozFullScreenElement",
"mozFullScreenEnabled",
"mozfullscreenchange",
"mozfullscreenerror"
],
[
"msRequestFullscreen",
"msExitFullscreen",
"msFullscreenElement",
"msFullscreenEnabled",
"MSFullscreenChange",
"MSFullscreenError"
]
], Z = (() => {
if (typeof document > "u")
return !1;
const n = Ee[0], e = {};
for (const t of Ee)
if (t?.[1] in document) {
for (const [o, s] of t.entries())
e[n[o]] = s;
return e;
}
return !1;
})(), Te = {
change: Z.fullscreenchange,
error: Z.fullscreenerror
};
let B = {
// eslint-disable-next-line default-param-last
request(n = document.documentElement, e) {
return new Promise((t, l) => {
const o = () => {
B.off("change", o), t();
};
B.on("change", o);
const s = n[Z.requestFullscreen](e);
s instanceof Promise && s.then(o).catch(l);
});
},
exit() {
return new Promise((n, e) => {
if (!B.isFullscreen) {
n();
return;
}
const t = () => {
B.off("change", t), n();
};
B.on("change", t);
const l = document[Z.exitFullscreen]();
l instanceof Promise && l.then(t).catch(e);
});
},
toggle(n, e) {
return B.isFullscreen ? B.exit() : B.request(n, e);
},
onchange(n) {
B.on("change", n);
},
onerror(n) {
B.on("error", n);
},
on(n, e) {
const t = Te[n];
t && document.addEventListener(t, e, !1);
},
off(n, e) {
const t = Te[n];
t && document.removeEventListener(t, e, !1);
},
raw: Z
};
Object.defineProperties(B, {
isFullscreen: {
get: () => !!document[Z.fullscreenElement]
},
element: {
enumerable: !0,
get: () => document[Z.fullscreenElement] ?? void 0
},
isEnabled: {
enumerable: !0,
// Coerce to boolean in case of old WebKit.
get: () => !!document[Z.fullscreenEnabled]
}
});
Z || (B = { isEnabled: !1 });
const ee = B, rn = /* @__PURE__ */ A({
__name: "index",
props: {
element: { default: "html" },
openTips: { default: "全屏" },
exitTips: { default: "退出全屏" },
content: { type: Boolean, default: !1 }
},
setup(n) {
const e = n, t = z(!1), l = C(() => t.value ? e.exitTips : e.openTips), o = C(() => t.value ? "fullscreen-exit" : "fullscreen"), s = () => {
const i = document.querySelector(e.element) || void 0;
ee.isEnabled ? ee.toggle(i) : De.warning("您的浏览器无法工作");
}, a = () => {
t.value = ee.isFullscreen;
};
le((i) => {
ee.on("change", a), i(() => {
ee.isEnabled && ee.off("change", a);
});
});
const r = z(!1), c = C(() => r.value ? "内容区复原" : "内容区放大"), v = C(() => r.value ? "fullscreen-exit" : "fullscreen"), _ = () => {
document.body.className = r.value ? "" : "content-large", r.value = !r.value;
};
return (i, m) => {
const h = g("SvgIcon"), y = g("el-tooltip"), E = g("el-dropdown-item"), S = g("el-dropdown-menu"), I = g("el-dropdown");
return d(), k("div", null, [
i.content ? (d(), w(I, { key: 1 }, {
dropdown: f(() => [
u(S, null, {
default: f(() => [
u(E, { onClick: _ }, {
default: f(() => [
J(F(c.value), 1)
]),
_: 1
}),
u(E, {
onClick: s,
disabled: t.value
}, {
default: f(() => [
J("内容区全屏")
]),
_: 1
}, 8, ["disabled"])
]),
_: 1
})
]),
default: f(() => [
u(h, { name: v.value }, null, 8, ["name"])
]),
_: 1
})) : (d(), w(y, {
key: 0,
effect: "dark",
content: l.value,
placement: "bottom"
}, {
default: f(() => [
u(h, {
name: o.value,
onClick: s
}, null, 8, ["name"])
]),
_: 1
}, 8, ["content"]))
]);
};
}
});
const cn = /* @__PURE__ */ R(rn, [["__scopeId", "data-v-0baf781b"]]), un = (n) => (Re("data-v-70ce923e"), n = n(), Ie(), n), dn = { class: "navigation-bar" }, _n = { class: "right-menu" }, fn = { class: "right-menu-avatar" }, pn = {
target: "_blank",
href: "https://github.com/un-pany/v3-admin-vite"
}, vn = {
target: "_blank",
href: "https://gitee.com/un-pany/v3-admin-vite"
}, mn = /* @__PURE__ */ un(() => /* @__PURE__ */ x("span", { style: { display: "block" } }, "退出登录", -1)), hn = /* @__PURE__ */ A({
__name: "index",
setup(n) {
const e = de(), t = ne(), l = O(), o = Qe(), { sidebar: s, device: a } = H(t), { layoutMode: r, showNotify: c, showThemeSwitch: v, showScreenfull: _, showSearchMenu: i } = H(l), m = C(() => r.value === "top"), h = C(() => a.value === X.Mobile), y = () => {
t.toggleSidebar(!1);
}, E = () => {
o.logout(), e.push("/login");
};
return (S, I) => {
const L = g("el-avatar"), V = g("el-dropdown-item"), W = g("el-dropdown-menu"), U = g("el-dropdown");
return d(), k("div", dn, [
!m.value || h.value ? (d(), w(kt, {
key: 0,
"is-active": p(s).opened,
class: "hamburger",
onToggleClick: y
}, null, 8, ["is-active"])) : M("", !0),
!m.value || h.value ? (d(), w(Rt, {
key: 1,
class: "breadcrumb"
})) : M("", !0),
m.value && !h.value ? (d(), w(he, {
key: 2,
class: "sidebar"
})) : M("", !0),
x("div", _n, [
p(_) ? (d(), w(cn, {
key: 0,
class: "right-menu-item"
})) : M("", !0),
p(v) ? (d(), w(ln, {
key: 1,
class: "right-menu-item"
})) : M("", !0),
p(c) ? (d(), w(an, {
key: 2,
class: "right-menu-item"
})) : M("", !0),
u(U, { class: "right-menu-item" }, {
dropdown: f(() => [
u(W, null, {
default: f(() => [
x("a", pn, [
u(V, null, {
default: f(() => [
J("GitHub")
]),
_: 1
})
]),
x("a", vn, [
u(V, null, {
default: f(() => [
J("Gitee")
]),
_: 1
})
]),
u(V, {
divided: "",
onClick: E
}, {
default: f(() => [
mn
]),
_: 1
})
]),
_: 1
})
]),
default: f(() => [
x("div", fn, [
u(L, {
icon: p(at),
size: 30
}, null, 8, ["icon"]),
x("span", null, F(p(o).username), 1)
])
]),
_: 1
})
])
]);
};
}
});
const ge = /* @__PURE__ */ R(hn, [["__scopeId", "data-v-70ce923e"]]), gn = { class: "select-layout-mode" }, bn = /* @__PURE__ */ A({
__name: "SelectLayoutMode",
setup(n) {
const e = O(), { layoutMode: t } = H(e), l = C(() => t.value === "left"), o = C(() => t.value === "top"), s = C(() => t.value === "left-top");
return (a, r) => {
const c = g("el-aside"), v = g("el-header"), _ = g("el-main"), i = g("el-container"), m = g("el-tooltip");
return d(), k("div", gn, [
u(m, { content: "左侧模式" }, {
default: f(() => [
u(i, {
class: D(["layout-mode left", { active: l.value }]),
onClick: r[0] || (r[0] = (h) => t.value = "left")
}, {
default: f(() => [
u(c),
u(i, null, {
default: f(() => [
u(v),
u(_)
]),
_: 1
})
]),
_: 1
}, 8, ["class"])
]),
_: 1
}),
u(m, { content: "顶部模式" }, {
default: f(() => [
u(i, {
class: D(["layout-mode top", { active: o.value }]),
onClick: r[1] || (r[1] = (h) => t.value = "top")
}, {
default: f(() => [
u(v),
u(_)
]),
_: 1
}, 8, ["class"])
]),
_: 1
}),
u(m, { content: "混合模式" }, {
default: f(() => [
u(i, {
class: D(["layout-mode left-top", { active: s.value }]),
onClick: r[2] || (r[2] = (h) => t.value = "left-top")
}, {
default: f(() => [
u(v),
u(i, null, {
default: f(() => [
u(c),
u(_)
]),
_: 1
})
]),
_: 1
}, 8, ["class"])
]),
_: 1
})
]);
};
}
});
const yn = /* @__PURE__ */ R(bn, [["__scopeId", "data-v-d031256f"]]), ze = (n) => (Re("data-v-d5c669d1"), n = n(), Ie(), n), wn = { class: "setting-container" }, xn = /* @__PURE__ */ ze(() => /* @__PURE__ */ x("h4", null, "布局配置", -1)), kn = /* @__PURE__ */ ze(() => /* @__PURE__ */ x("h4", null, "功能配置", -1)), Sn = { class: "setting-name" }, Cn = /* @__PURE__ */ A({
__name: "index",
setup(n) {
const e = O(), {
layoutMode: t,
showTagsView: l,
showLogo: o,
fixedHeader: s,
showFooter: a,
showNotify: r,
showThemeSwitch: c,
showScreenfull: v,
showSearchMenu: _,
cacheTagsView: i,
showWatermark: m,
showGreyMode: h,
showColorWeakness: y
} = H(e), E = {
显示标签栏: l,
"显示 Logo": o,
"固定 Header": s,
"显示页脚 Footer": a,
显示消息通知: r,
显示切换主题按钮: c,
显示全屏按钮: v,
显示搜索按钮: _,
是否缓存标签栏: i,
开启系统水印: m,
显示灰色模式: h,
显示色弱模式: y
};
return le(() => {
t.value !== "left" && (s.value = !0);
}), (S, I) => {
const L = g("el-divider"), V = g("el-switch"), W = g("el-button");
return d(), k("div", wn, [
xn,
u(yn),
u(L),
kn,
(d(), k(j, null, Q(E, (U, P, q) => x("div", {
class: "setting-item",
key: q
}, [
x("span", Sn, F(P), 1),
u(V, {
modelValue: U.value,
"onUpdate:modelValue": (K) => U.value = K,
disabled: p(t) !== "left" && P === "固定 Header"
}, null, 8, ["modelValue", "onUpdate:modelValue", "disabled"])
])), 64)),
u(W, {
type: "danger",
icon: p(lt),
onClick: p(Ut)
}, {
default: f(() => [
J("重 置")
]),
_: 1
}, 8, ["icon", "onClick"])
]);
};
}
});
const En = /* @__PURE__ */ R(Cn, [["__scopeId", "data-v-d5c669d1"]]), Tn = { class: "scroll-container" }, Mn = 200, $n = /* @__PURE__ */ A({
__name: "ScrollPane",
props: {
tagRefs: {}
},
setup(n) {
const e = n, t = ue();
O();
const { listenerRouteChange: l } = ie(), o = z(), s = z();
let a = 0;
const r = ({ scrollLeft: m }) => {
a = m;
}, c = ({ deltaY: m }) => {
/^-/.test(m.toString()) ? _("left") : _("right");
}, v = () => {
const m = s.value.clientWidth, h = o.value.wrapRef.clientWidth, y = m - h - a;
return { scrollbarContentRefWidth: m, scrollbarRefWidth: h, lastDistance: y };
}, _ = (m, h = Mn) => {
let y = 0;
const { scrollbarContentRefWidth: E, scrollbarRefWidth: S, lastDistance: I } = v();
S > E || (m === "left" ? y = Math.max(0, a - h) : y = Math.min(a + h, a + I), o.value.setScrollLeft(y));
}, i = () => {
const m = e.tagRefs;
for (let h = 0; h < m.length; h++)
if (t.path === m[h].$props.to.path) {
const y = m[h].$el, E = y.offsetWidth, S = y.offsetLeft, { scrollbarRefWidth: I } = v();
if (S < a) {
const V = a - S;
_("left", V);
return;
}
const L = I + a - E;
if (S > L) {
const V = S - L;
_("right", V);
return;
}
}
};
return l(() => {
Ge(i);
}), (m, h) => {
const y = g("el-icon");
return d(), k("div", Tn, [
u(y, {
class: "arrow left",
onClick: h[0] || (h[0] = (E) => _("left"))
}, {
default: f(() => [
u(p(rt))
]),
_: 1
}),
u(p(dt), {
ref_key: "scrollbarRef",
ref: o,
onWheelPassive: c,
onScroll: r
}, {
default: f(() => [
x("div", {
ref_key: "scrollbarContentRef",
ref: s,
class: "scrollbar-content"
}, [
ae(m.$slots, "default", {}, void 0, !0)
], 512)
]),
_: 3
}, 512),
u(y, {
class: "arrow right",
onClick: h[1] || (h[1] = (E) => _("right"))
}, {
default: f(() => [
u(p(ct))
]),
_: 1
})
]);
};
}
});
const An = /* @__PURE__ */ R($n, [["__scopeId", "data-v-b5475e98"]]), Ln = { class: "tags-view-container" }, Vn = /* @__PURE__ */ A({
__name: "index",
setup(n) {
const e = Xe(), t = de(), l = ue(), o = Fe(), s = Pe(), { listenerRouteChange: a } = ie(), r = z([]), c = z(!1), v = z(0), _ = z(0), i = z({});
let m = [];
const h = (b) => b.path === l.path, y = (b) => b.meta?.affix, E = (b, $ = "/") => {
const Y = [];
return b.forEach((T) => {
if (y(T)) {
const N = Be.resolve($, T.path);
Y.push({
fullPath: N,
path: N,
name: T.name,
meta: { ...T.meta }
});
}
if (T.children) {
const N = E(T.children, T.path);
Y.push(...N);
}
}), Y;
}, S = () => {
m = E(s.routes);
for (const b of m)
b.name && o.addVisitedView(b);
}, I = (b) => {
b.name && (o.addVisitedView(b), o.addCachedView(b));
}, L = (b) => {
o.delCachedView(b), t.replace({ path: "/redirect" + b.path, query: b.query });
}, V = (b) => {
o.delVisitedView(b), o.delCachedView(b), h(b) && P(o.visitedViews, b);
}, W = () => {
const b = i.value.fullPath;
b !== l.path && b !== void 0 && t.push(b), o.delOthersVisitedViews(i.value), o.delOthersCachedViews(i.value);
}, U = (b) => {
o.delAllVisitedViews(), o.delAllCachedViews(), !m.some(($) => $.path === l.path) && P(o.visitedViews, b);
}, P = (b, $) => {
const T = b.slice(-1)[0]?.fullPath;
T !== void 0 ? t.push(T) : $.name === "Dashboard" ? t.push({ path: "/redirect" + $.path, query: $.query }) : t.push("/");
}, q = (b, $) => {
const T = e.proxy.$el.getBoundingClientRect().left, ye = e.proxy.$el.offsetWidth - 105, we = $.clientX - T + 15;
_.value = we > ye ? ye : we, v.value = $.clientY, c.value = !0, i.value = b;
}, K = () => {
c.value = !1;
};
return Me(c, (b) => {
b ? document.body.addEventListener("click", K) : document.body.removeEventListener("click", K);
}), $e(() => {
S(), a((b) => {
I(b);
}, !0);
}), (b, $) => {
const Y = g("el-icon");
return d(), k("div", Ln, [
u(An, {
class: "tags-view-wrapper",
"tag-refs": r.value
}, {
default: f(() => [
(d(!0), k(j, null, Q(p(o).visitedViews, (T) => (d(), w(p(et), {
ref_for: !0,
ref_key: "tagRefs",
ref: r,
key: T.path,
class: D([{ active: h(T) }, "tags-view-item"]),
to: { path: T.path, query: T.query },
onMouseup: oe((N) => !y(T) && V(T), ["middle"]),
onContextmenu: oe((N) => q(T, N), ["prevent"])
}, {
default: f(() => [
J(F(T.meta?.title) + " ", 1),
y(T) ? M("", !0) : (d(), w(Y, {
key: 0,
size: 12,
onClick: oe((N) => V(T), ["prevent", "stop"])
}, {
default: f(() => [
u(p(it))
]),
_: