xto-fronted 0.4.81 → 0.4.83
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/assets/404-CrBiLyvr.js +1 -0
- package/dist/assets/404-Cw_4ZCL6.css +1 -0
- package/dist/assets/_plugin-vue_export-helper-DlAUqK2U.js +1 -0
- package/dist/assets/index-B58q1gWi.js +1 -0
- package/dist/assets/index-BRR97dc6.js +1 -0
- package/dist/assets/index-BlRslYYI.css +1 -0
- package/dist/assets/index-BudArKxR.css +1 -0
- package/dist/assets/index-BvJMwvx-.js +1 -0
- package/dist/assets/index-CFhWBbxk.css +1 -0
- package/dist/assets/index-CfMs36V8.js +1 -0
- package/dist/assets/index-CfpZmcpk.css +1 -0
- package/dist/assets/index-ChwM56sh.js +2 -0
- package/dist/assets/index-Cmf2-p8P.js +1 -0
- package/dist/assets/index-DkkuYBgT.css +1 -0
- package/dist/assets/index-DmrM_IuD.js +1 -0
- package/dist/assets/index-WcdktCzT.js +1 -0
- package/dist/assets/index-t-2Y0KhA.css +1 -0
- package/dist/assets/index-vfvEFrCH.css +1 -0
- package/dist/assets/vendor-CUVPinTg.js +13 -0
- package/dist/assets/vue-vendor-D8SAgT8u.js +29 -0
- package/dist/assets/xto-base-BD3OH0V6.js +1 -0
- package/dist/assets/xto-base-CojW9IFO.css +1 -0
- package/dist/assets/xto-business--V1F5Gwb.css +1 -0
- package/dist/assets/xto-core-Boim7B0B.js +1 -0
- package/dist/assets/xto-data-YheCZfV4.css +1 -0
- package/dist/assets/xto-data-_xzIYqb-.js +1 -0
- package/dist/assets/xto-feedback-C-ESp-Y1.css +1 -0
- package/dist/assets/xto-feedback-XZPSQcJN.js +1 -0
- package/dist/assets/xto-form-CpcozvK5.css +1 -0
- package/dist/assets/xto-form-X369Lz91.js +1 -0
- package/dist/assets/xto-layout-D1stVnJI.css +1 -0
- package/dist/assets/xto-navigation-BRzSCpAw.css +1 -0
- package/dist/assets/xto-navigation-CDWfzPP5.js +1 -0
- package/dist/index.html +28 -0
- package/package.json +1 -1
- package/src/components/Layout/Sidebar.vue +19 -22
- package/src/components/Layout/TopMenu.vue +37 -12
- package/dist/App.vue.d.ts +0 -2
- package/dist/api/auth.d.ts +0 -8
- package/dist/api/system.d.ts +0 -16
- package/dist/api/user.d.ts +0 -13
- package/dist/components/Layout/Footer.vue.d.ts +0 -2
- package/dist/components/Layout/Header.vue.d.ts +0 -5
- package/dist/components/Layout/MixTopMenu.vue.d.ts +0 -5
- package/dist/components/Layout/Sidebar.vue.d.ts +0 -11
- package/dist/components/Layout/SidebarMenuItem.vue.d.ts +0 -5
- package/dist/components/Layout/Tabs.vue.d.ts +0 -2
- package/dist/components/Layout/TopMenu.vue.d.ts +0 -5
- package/dist/components/Layout/index.vue.d.ts +0 -2
- package/dist/composables/useApp.d.ts +0 -29
- package/dist/composables/useAuth.d.ts +0 -6
- package/dist/composables/useForm.d.ts +0 -20
- package/dist/composables/useTable.d.ts +0 -29
- package/dist/directives/permission.d.ts +0 -4
- package/dist/enums/index.d.ts +0 -32
- package/dist/index-BIbDky4c.js +0 -189
- package/dist/index-BtIXVAVa.js +0 -479
- package/dist/index-Cm5czPiu.js +0 -515
- package/dist/index-DynapQge.js +0 -641
- package/dist/index-FOOV1KUl.js +0 -4128
- package/dist/index.d.ts +0 -54
- package/dist/index.es.js +0 -91
- package/dist/index.umd.js +0 -8
- package/dist/main.d.ts +0 -0
- package/dist/router/dynamicRoutes.d.ts +0 -30
- package/dist/router/guards.d.ts +0 -17
- package/dist/router/index.d.ts +0 -6
- package/dist/router/layoutRoute.d.ts +0 -18
- package/dist/router/staticRoutes.d.ts +0 -2
- package/dist/stores/app.d.ts +0 -93
- package/dist/stores/auth.d.ts +0 -41
- package/dist/stores/index.d.ts +0 -9
- package/dist/stores/menu.d.ts +0 -77
- package/dist/stores/user.d.ts +0 -92
- package/dist/style.css +0 -1
- package/dist/utils/auth.d.ts +0 -27
- package/dist/utils/config.d.ts +0 -30
- package/dist/utils/permission.d.ts +0 -18
- package/dist/utils/request.d.ts +0 -24
- package/dist/utils/storage.d.ts +0 -24
- package/dist/views/dashboard/index.vue.d.ts +0 -2
- package/dist/views/error/403.vue.d.ts +0 -2
- package/dist/views/error/404.vue.d.ts +0 -2
- package/dist/views/login/index.vue.d.ts +0 -4
- package/dist/views/system/menu/index.vue.d.ts +0 -4
- package/dist/views/system/role/index.vue.d.ts +0 -4
- package/dist/views/system/user/index.vue.d.ts +0 -4
|
@@ -322,19 +322,44 @@ onUnmounted(() => {
|
|
|
322
322
|
<span class="top-menu__menu-text">{{ menu.menuName }}</span>
|
|
323
323
|
</span>
|
|
324
324
|
</template>
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
:
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
325
|
+
<!-- 递归渲染子菜单 -->
|
|
326
|
+
<template v-for="child in menu.children" :key="child.menuUrl">
|
|
327
|
+
<SubMenu v-if="child.children && child.children.length > 0" :index="child.menuUrl">
|
|
328
|
+
<template #title>
|
|
329
|
+
<span class="top-menu__menu-content">
|
|
330
|
+
<span class="top-menu__menu-icon">
|
|
331
|
+
<Icon v-if="iconExists(getMenuIcon(child.icon))" :name="getMenuIcon(child.icon)" :size="16" />
|
|
332
|
+
<span v-else class="top-menu__menu-char">{{ getFirstChar(child.menuName) }}</span>
|
|
333
|
+
</span>
|
|
334
|
+
<span class="top-menu__menu-text">{{ child.menuName }}</span>
|
|
335
|
+
</span>
|
|
336
|
+
</template>
|
|
337
|
+
<!-- 三级菜单项 -->
|
|
338
|
+
<MenuItem
|
|
339
|
+
v-for="grandChild in child.children"
|
|
340
|
+
:key="grandChild.menuUrl"
|
|
341
|
+
:index="grandChild.menuUrl"
|
|
342
|
+
>
|
|
343
|
+
<span class="top-menu__menu-content">
|
|
344
|
+
<span class="top-menu__menu-icon">
|
|
345
|
+
<Icon v-if="iconExists(getMenuIcon(grandChild.icon))" :name="getMenuIcon(grandChild.icon)" :size="16" />
|
|
346
|
+
<span v-else class="top-menu__menu-char">{{ getFirstChar(grandChild.menuName) }}</span>
|
|
347
|
+
</span>
|
|
348
|
+
<span class="top-menu__menu-text">{{ grandChild.menuName }}</span>
|
|
349
|
+
</span>
|
|
350
|
+
</MenuItem>
|
|
351
|
+
</SubMenu>
|
|
352
|
+
<!-- 二级菜单项 -->
|
|
353
|
+
<MenuItem v-else :index="child.menuUrl">
|
|
354
|
+
<span class="top-menu__menu-content">
|
|
355
|
+
<span class="top-menu__menu-icon">
|
|
356
|
+
<Icon v-if="iconExists(getMenuIcon(child.icon))" :name="getMenuIcon(child.icon)" :size="16" />
|
|
357
|
+
<span v-else class="top-menu__menu-char">{{ getFirstChar(child.menuName) }}</span>
|
|
358
|
+
</span>
|
|
359
|
+
<span class="top-menu__menu-text">{{ child.menuName }}</span>
|
|
334
360
|
</span>
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
</MenuItem>
|
|
361
|
+
</MenuItem>
|
|
362
|
+
</template>
|
|
338
363
|
</SubMenu>
|
|
339
364
|
<!-- 无子菜单 -->
|
|
340
365
|
<MenuItem v-else :index="menu.menuUrl">
|
package/dist/App.vue.d.ts
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
declare const _default: import('vue').DefineComponent<{}, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, HTMLDivElement>;
|
|
2
|
-
export default _default;
|
package/dist/api/auth.d.ts
DELETED
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import { LoginParams, LoginResult, UserInfo } from '../types/api';
|
|
2
|
-
export declare function login(data: LoginParams): Promise<LoginResult>;
|
|
3
|
-
export declare function logout(): Promise<unknown>;
|
|
4
|
-
export declare function getUserInfo(): Promise<UserInfo>;
|
|
5
|
-
export declare function refreshToken(refreshToken: string): Promise<{
|
|
6
|
-
token: string;
|
|
7
|
-
expireTime: number;
|
|
8
|
-
}>;
|
package/dist/api/system.d.ts
DELETED
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import { PageParams, PageResponse } from '../utils/request';
|
|
2
|
-
import { RoleInfo, MenuItem } from '../types/api';
|
|
3
|
-
export declare function getRoleList(params: PageParams & {
|
|
4
|
-
status?: number;
|
|
5
|
-
keyword?: string;
|
|
6
|
-
}): Promise<PageResponse<RoleInfo>>;
|
|
7
|
-
export declare function getRoleDetail(id: string | number): Promise<RoleInfo>;
|
|
8
|
-
export declare function createRole(data: Partial<RoleInfo>): Promise<RoleInfo>;
|
|
9
|
-
export declare function updateRole(id: string | number, data: Partial<RoleInfo>): Promise<RoleInfo>;
|
|
10
|
-
export declare function deleteRole(id: string | number): Promise<unknown>;
|
|
11
|
-
export declare function updateRoleStatus(id: string | number, status: number): Promise<unknown>;
|
|
12
|
-
export declare function getMenuList(): Promise<MenuItem[]>;
|
|
13
|
-
export declare function getMenuTree(appId?: string): Promise<MenuItem[]>;
|
|
14
|
-
export declare function createMenu(data: Partial<MenuItem>): Promise<MenuItem>;
|
|
15
|
-
export declare function updateMenu(id: string | number, data: Partial<MenuItem>): Promise<MenuItem>;
|
|
16
|
-
export declare function deleteMenu(id: string | number): Promise<unknown>;
|
package/dist/api/user.d.ts
DELETED
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import { PageParams, PageResponse } from '../utils/request';
|
|
2
|
-
import { UserInfo } from '../types/api';
|
|
3
|
-
export declare function getUserList(params: PageParams & {
|
|
4
|
-
status?: number;
|
|
5
|
-
keyword?: string;
|
|
6
|
-
}): Promise<PageResponse<UserInfo>>;
|
|
7
|
-
export declare function getUserDetail(id: string | number): Promise<UserInfo>;
|
|
8
|
-
export declare function createUser(data: Partial<UserInfo>): Promise<UserInfo>;
|
|
9
|
-
export declare function updateUser(id: string | number, data: Partial<UserInfo>): Promise<UserInfo>;
|
|
10
|
-
export declare function deleteUser(id: string | number): Promise<unknown>;
|
|
11
|
-
export declare function batchDeleteUsers(ids: (string | number)[]): Promise<unknown>;
|
|
12
|
-
export declare function updateUserStatus(id: string | number, status: number): Promise<unknown>;
|
|
13
|
-
export declare function resetPassword(id: string | number): Promise<unknown>;
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
declare const _default: import('vue').DefineComponent<{}, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, HTMLDivElement>;
|
|
2
|
-
export default _default;
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
declare const _default: import('vue').DefineComponent<{}, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {
|
|
2
|
-
searchRef: HTMLDivElement;
|
|
3
|
-
dropdownRef: HTMLDivElement;
|
|
4
|
-
}, HTMLDivElement>;
|
|
5
|
-
export default _default;
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
declare const _default: import('vue').DefineComponent<{}, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {
|
|
2
|
-
searchRef: HTMLDivElement;
|
|
3
|
-
dropdownRef: HTMLDivElement;
|
|
4
|
-
}, HTMLDivElement>;
|
|
5
|
-
export default _default;
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
type __VLS_Props = {
|
|
2
|
-
menuList?: any[];
|
|
3
|
-
showLogo?: boolean;
|
|
4
|
-
showUser?: boolean;
|
|
5
|
-
};
|
|
6
|
-
declare const _default: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
|
|
7
|
-
menuList: any[];
|
|
8
|
-
showLogo: boolean;
|
|
9
|
-
showUser: boolean;
|
|
10
|
-
}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, HTMLDivElement>;
|
|
11
|
-
export default _default;
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
type __VLS_Props = {
|
|
2
|
-
menu: any;
|
|
3
|
-
};
|
|
4
|
-
declare const _default: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
|
|
5
|
-
export default _default;
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
declare const _default: import('vue').DefineComponent<{}, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, HTMLDivElement>;
|
|
2
|
-
export default _default;
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
declare const _default: import('vue').DefineComponent<{}, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {
|
|
2
|
-
searchRef: HTMLDivElement;
|
|
3
|
-
dropdownRef: HTMLDivElement;
|
|
4
|
-
}, HTMLDivElement>;
|
|
5
|
-
export default _default;
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
declare const _default: import('vue').DefineComponent<{}, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
|
|
2
|
-
export default _default;
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* 应用组合函数
|
|
3
|
-
* 提供应用级别的状态和方法
|
|
4
|
-
*/
|
|
5
|
-
/**
|
|
6
|
-
* 应用级别组合函数
|
|
7
|
-
* @returns 应用状态和方法
|
|
8
|
-
*/
|
|
9
|
-
export declare function useApp(): {
|
|
10
|
-
userName: import('vue').ComputedRef<string>;
|
|
11
|
-
userInfo: import('vue').ComputedRef<{
|
|
12
|
-
appId: string;
|
|
13
|
-
userId: string;
|
|
14
|
-
userName: string;
|
|
15
|
-
departmentName?: string | undefined;
|
|
16
|
-
email?: string | undefined;
|
|
17
|
-
mobilePhone?: string | undefined;
|
|
18
|
-
positionName?: string | undefined;
|
|
19
|
-
avatar?: string | undefined;
|
|
20
|
-
} | null>;
|
|
21
|
-
appName: import('vue').ComputedRef<string>;
|
|
22
|
-
isLoggedIn: import('vue').ComputedRef<boolean>;
|
|
23
|
-
isDark: import('vue').ComputedRef<boolean>;
|
|
24
|
-
theme: import('vue').ComputedRef<import('../stores/app').ThemeMode>;
|
|
25
|
-
isCollapsed: import('vue').ComputedRef<boolean>;
|
|
26
|
-
layout: import('vue').ComputedRef<import('../stores/app').LayoutMode>;
|
|
27
|
-
toggleTheme: () => void;
|
|
28
|
-
toggleCollapse: () => void;
|
|
29
|
-
};
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* 表单组合函数
|
|
3
|
-
*/
|
|
4
|
-
export interface FormOptions<T = any> {
|
|
5
|
-
rules?: Record<string, any[]>;
|
|
6
|
-
onSubmit?: (data: T) => Promise<void> | void;
|
|
7
|
-
}
|
|
8
|
-
export declare function useForm<T extends Record<string, any> = Record<string, any>>(initialValues: T, options?: FormOptions<T>): {
|
|
9
|
-
formRef: import('vue').Ref<any, any>;
|
|
10
|
-
formData: import('vue').Reactive<T>;
|
|
11
|
-
rules: Record<string, any[]> | undefined;
|
|
12
|
-
loading: import('vue').Ref<boolean, boolean>;
|
|
13
|
-
visible: import('vue').Ref<boolean, boolean>;
|
|
14
|
-
isEdit: import('vue').Ref<boolean, boolean>;
|
|
15
|
-
openAdd: () => void;
|
|
16
|
-
openEdit: (data: Partial<T>) => void;
|
|
17
|
-
close: () => void;
|
|
18
|
-
resetForm: () => void;
|
|
19
|
-
handleSubmit: () => Promise<void>;
|
|
20
|
-
};
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* 表格组合函数
|
|
3
|
-
*/
|
|
4
|
-
export interface TableOptions<T = any> {
|
|
5
|
-
fetchData: (params: any) => Promise<{
|
|
6
|
-
list: T[];
|
|
7
|
-
total: number;
|
|
8
|
-
}>;
|
|
9
|
-
defaultPageSize?: number;
|
|
10
|
-
}
|
|
11
|
-
export declare function useTable<T = any>(options: TableOptions<T>): {
|
|
12
|
-
loading: import('vue').Ref<boolean, boolean>;
|
|
13
|
-
data: any;
|
|
14
|
-
total: import('vue').Ref<number, number>;
|
|
15
|
-
currentPage: import('vue').Ref<number, number>;
|
|
16
|
-
pageSize: import('vue').Ref<number, number>;
|
|
17
|
-
searchParams: Record<string, any>;
|
|
18
|
-
pagination: import('vue').ComputedRef<{
|
|
19
|
-
current: number;
|
|
20
|
-
pageSize: number;
|
|
21
|
-
total: number;
|
|
22
|
-
}>;
|
|
23
|
-
getData: () => Promise<void>;
|
|
24
|
-
handleSearch: () => void;
|
|
25
|
-
handleReset: () => void;
|
|
26
|
-
handlePageChange: (page: number) => void;
|
|
27
|
-
handleSizeChange: (size: number) => void;
|
|
28
|
-
refresh: () => void;
|
|
29
|
-
};
|
package/dist/enums/index.d.ts
DELETED
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* 枚举常量
|
|
3
|
-
*/
|
|
4
|
-
export declare enum Status {
|
|
5
|
-
ENABLED = 1,
|
|
6
|
-
DISABLED = 0
|
|
7
|
-
}
|
|
8
|
-
export declare enum Gender {
|
|
9
|
-
UNKNOWN = 0,
|
|
10
|
-
MALE = 1,
|
|
11
|
-
FEMALE = 2
|
|
12
|
-
}
|
|
13
|
-
export declare enum MenuType {
|
|
14
|
-
DIRECTORY = 0,
|
|
15
|
-
MENU = 1,
|
|
16
|
-
BUTTON = 2
|
|
17
|
-
}
|
|
18
|
-
export declare const StatusText: Record<Status, string>;
|
|
19
|
-
export declare const GenderText: Record<Gender, string>;
|
|
20
|
-
export declare const MenuTypeText: Record<MenuType, string>;
|
|
21
|
-
export declare const StatusOptions: {
|
|
22
|
-
label: string;
|
|
23
|
-
value: Status;
|
|
24
|
-
}[];
|
|
25
|
-
export declare const GenderOptions: {
|
|
26
|
-
label: string;
|
|
27
|
-
value: Gender;
|
|
28
|
-
}[];
|
|
29
|
-
export declare const MenuTypeOptions: {
|
|
30
|
-
label: string;
|
|
31
|
-
value: MenuType;
|
|
32
|
-
}[];
|
package/dist/index-BIbDky4c.js
DELETED
|
@@ -1,189 +0,0 @@
|
|
|
1
|
-
import { defineComponent as g, ref as l, resolveComponent as b, openBlock as a, createElementBlock as o, createElementVNode as s, Fragment as n, renderList as c, normalizeStyle as r, toDisplayString as i, normalizeClass as d, createBlock as w, withCtx as U, createVNode as u, unref as v } from "vue";
|
|
2
|
-
import { Progress as _ } from "@xto/data";
|
|
3
|
-
import { _ as q } from "./index-FOOV1KUl.js";
|
|
4
|
-
const x = { class: "dashboard" }, C = { class: "stats-section" }, B = { class: "stat-content" }, M = { class: "stat-title" }, I = {
|
|
5
|
-
key: 0,
|
|
6
|
-
viewBox: "0 0 24 24",
|
|
7
|
-
fill: "none",
|
|
8
|
-
stroke: "currentColor",
|
|
9
|
-
"stroke-width": "2"
|
|
10
|
-
}, V = {
|
|
11
|
-
key: 1,
|
|
12
|
-
viewBox: "0 0 24 24",
|
|
13
|
-
fill: "none",
|
|
14
|
-
stroke: "currentColor",
|
|
15
|
-
"stroke-width": "2"
|
|
16
|
-
}, L = { class: "main-section" }, S = { class: "quick-section" }, $ = { class: "quick-grid" }, z = { class: "quick-icon" }, E = { class: "quick-info" }, N = { class: "quick-title" }, P = { class: "quick-desc" }, D = { class: "activity-section" }, F = { class: "activity-list" }, O = { class: "activity-content" }, T = { class: "activity-main" }, X = { class: "activity-user" }, j = { class: "activity-action" }, A = { class: "activity-time" }, G = { class: "system-section" }, H = { class: "system-grid" }, J = { class: "system-info-list" }, K = { class: "info-label" }, Q = { class: "info-value" }, R = { class: "system-status" }, W = { class: "status-item" }, Y = { class: "status-item" }, Z = { class: "status-item" }, ss = /* @__PURE__ */ g({
|
|
17
|
-
__name: "index",
|
|
18
|
-
setup(ts) {
|
|
19
|
-
const p = l([
|
|
20
|
-
{ title: "用户总数", value: 1234, icon: "👥", color: "#1677ff", trend: "+12.5%", trendUp: !0 },
|
|
21
|
-
{ title: "今日访问", value: 567, icon: "👀", color: "#52c41a", trend: "+8.2%", trendUp: !0 },
|
|
22
|
-
{ title: "订单数量", value: 890, icon: "📦", color: "#faad14", trend: "-3.1%", trendUp: !1 },
|
|
23
|
-
{ title: "销售金额", value: 123456, icon: "💰", color: "#ff4d4f", trend: "+15.8%", trendUp: !0 }
|
|
24
|
-
]), m = l([
|
|
25
|
-
{ user: "张三", action: "登录系统", time: "2分钟前", type: "success", avatar: "张" },
|
|
26
|
-
{ user: "李四", action: "修改了用户信息", time: "5分钟前", type: "warning", avatar: "李" },
|
|
27
|
-
{ user: "王五", action: "创建了新订单", time: "10分钟前", type: "info", avatar: "王" },
|
|
28
|
-
{ user: "赵六", action: "删除了测试数据", time: "30分钟前", type: "danger", avatar: "赵" },
|
|
29
|
-
{ user: "钱七", action: "更新了系统配置", time: "1小时前", type: "primary", avatar: "钱" }
|
|
30
|
-
]), h = l([
|
|
31
|
-
{ title: "用户管理", path: "/system/user", icon: "👤", desc: "管理系统用户" },
|
|
32
|
-
{ title: "角色管理", path: "/system/role", icon: "👥", desc: "角色权限配置" },
|
|
33
|
-
{ title: "菜单管理", path: "/system/menu", icon: "📋", desc: "菜单路由管理" },
|
|
34
|
-
{ title: "系统设置", path: "/system", icon: "⚙️", desc: "系统参数配置" }
|
|
35
|
-
]), y = l([
|
|
36
|
-
{ label: "系统版本", value: "v1.0.0" },
|
|
37
|
-
{ label: "Vue 版本", value: "3.4.21" },
|
|
38
|
-
{ label: "构建工具", value: "Vite 5" },
|
|
39
|
-
{ label: "UI 组件库", value: "XTO UI" }
|
|
40
|
-
]);
|
|
41
|
-
return (es, e) => {
|
|
42
|
-
const f = b("router-link");
|
|
43
|
-
return a(), o("div", x, [
|
|
44
|
-
s("div", C, [
|
|
45
|
-
(a(!0), o(n, null, c(p.value, (t) => (a(), o("div", {
|
|
46
|
-
key: t.title,
|
|
47
|
-
class: "stat-card"
|
|
48
|
-
}, [
|
|
49
|
-
s("div", {
|
|
50
|
-
class: "stat-icon",
|
|
51
|
-
style: r({ background: `linear-gradient(135deg, ${t.color}20 0%, ${t.color}10 100%)` })
|
|
52
|
-
}, [
|
|
53
|
-
s("span", null, i(t.icon), 1)
|
|
54
|
-
], 4),
|
|
55
|
-
s("div", B, [
|
|
56
|
-
s("div", M, i(t.title), 1),
|
|
57
|
-
s("div", {
|
|
58
|
-
class: "stat-value",
|
|
59
|
-
style: r({ color: t.color })
|
|
60
|
-
}, i(t.value.toLocaleString()), 5),
|
|
61
|
-
s("div", {
|
|
62
|
-
class: d(["stat-trend", { up: t.trendUp, down: !t.trendUp }])
|
|
63
|
-
}, [
|
|
64
|
-
t.trendUp ? (a(), o("svg", I, [...e[0] || (e[0] = [
|
|
65
|
-
s("path", { d: "M7 17l5-5 5 5M7 7l5 5 5-5" }, null, -1)
|
|
66
|
-
])])) : (a(), o("svg", V, [...e[1] || (e[1] = [
|
|
67
|
-
s("path", { d: "M7 7l5 5 5-5M7 17l5-5 5 5" }, null, -1)
|
|
68
|
-
])])),
|
|
69
|
-
s("span", null, i(t.trend), 1)
|
|
70
|
-
], 2)
|
|
71
|
-
]),
|
|
72
|
-
s("div", {
|
|
73
|
-
class: "stat-decoration",
|
|
74
|
-
style: r({ background: `linear-gradient(135deg, ${t.color}08 0%, transparent 100%)` })
|
|
75
|
-
}, null, 4)
|
|
76
|
-
]))), 128))
|
|
77
|
-
]),
|
|
78
|
-
s("div", L, [
|
|
79
|
-
s("div", S, [
|
|
80
|
-
e[3] || (e[3] = s("div", { class: "section-header" }, [
|
|
81
|
-
s("h3", null, "快捷入口"),
|
|
82
|
-
s("span", { class: "section-badge" }, "4 个入口")
|
|
83
|
-
], -1)),
|
|
84
|
-
s("div", $, [
|
|
85
|
-
(a(!0), o(n, null, c(h.value, (t) => (a(), w(f, {
|
|
86
|
-
key: t.path,
|
|
87
|
-
to: t.path,
|
|
88
|
-
class: "quick-card"
|
|
89
|
-
}, {
|
|
90
|
-
default: U(() => [
|
|
91
|
-
s("div", z, i(t.icon), 1),
|
|
92
|
-
s("div", E, [
|
|
93
|
-
s("div", N, i(t.title), 1),
|
|
94
|
-
s("div", P, i(t.desc), 1)
|
|
95
|
-
]),
|
|
96
|
-
e[2] || (e[2] = s("div", { class: "quick-arrow" }, [
|
|
97
|
-
s("svg", {
|
|
98
|
-
viewBox: "0 0 24 24",
|
|
99
|
-
fill: "none",
|
|
100
|
-
stroke: "currentColor",
|
|
101
|
-
"stroke-width": "2"
|
|
102
|
-
}, [
|
|
103
|
-
s("path", { d: "M9 18l6-6-6-6" })
|
|
104
|
-
])
|
|
105
|
-
], -1))
|
|
106
|
-
]),
|
|
107
|
-
_: 2
|
|
108
|
-
}, 1032, ["to"]))), 128))
|
|
109
|
-
])
|
|
110
|
-
]),
|
|
111
|
-
s("div", D, [
|
|
112
|
-
e[4] || (e[4] = s("div", { class: "section-header" }, [
|
|
113
|
-
s("h3", null, "最近活动"),
|
|
114
|
-
s("a", {
|
|
115
|
-
href: "#",
|
|
116
|
-
class: "section-link"
|
|
117
|
-
}, "查看全部")
|
|
118
|
-
], -1)),
|
|
119
|
-
s("div", F, [
|
|
120
|
-
(a(!0), o(n, null, c(m.value, (t, k) => (a(), o("div", {
|
|
121
|
-
key: k,
|
|
122
|
-
class: "activity-item"
|
|
123
|
-
}, [
|
|
124
|
-
s("div", {
|
|
125
|
-
class: d(["activity-avatar", t.type])
|
|
126
|
-
}, i(t.avatar), 3),
|
|
127
|
-
s("div", O, [
|
|
128
|
-
s("div", T, [
|
|
129
|
-
s("span", X, i(t.user), 1),
|
|
130
|
-
s("span", j, i(t.action), 1)
|
|
131
|
-
]),
|
|
132
|
-
s("div", A, i(t.time), 1)
|
|
133
|
-
]),
|
|
134
|
-
s("div", {
|
|
135
|
-
class: d(["activity-dot", t.type])
|
|
136
|
-
}, null, 2)
|
|
137
|
-
]))), 128))
|
|
138
|
-
])
|
|
139
|
-
])
|
|
140
|
-
]),
|
|
141
|
-
s("div", G, [
|
|
142
|
-
e[8] || (e[8] = s("div", { class: "section-header" }, [
|
|
143
|
-
s("h3", null, "系统信息")
|
|
144
|
-
], -1)),
|
|
145
|
-
s("div", H, [
|
|
146
|
-
s("div", J, [
|
|
147
|
-
(a(!0), o(n, null, c(y.value, (t) => (a(), o("div", {
|
|
148
|
-
key: t.label,
|
|
149
|
-
class: "info-item"
|
|
150
|
-
}, [
|
|
151
|
-
s("span", K, i(t.label), 1),
|
|
152
|
-
s("span", Q, i(t.value), 1)
|
|
153
|
-
]))), 128))
|
|
154
|
-
]),
|
|
155
|
-
s("div", R, [
|
|
156
|
-
s("div", W, [
|
|
157
|
-
e[5] || (e[5] = s("div", { class: "status-header" }, [
|
|
158
|
-
s("span", { class: "status-label" }, "服务器状态"),
|
|
159
|
-
s("span", { class: "status-value" }, "75%")
|
|
160
|
-
], -1)),
|
|
161
|
-
u(v(_), {
|
|
162
|
-
percentage: 75,
|
|
163
|
-
status: "success"
|
|
164
|
-
})
|
|
165
|
-
]),
|
|
166
|
-
s("div", Y, [
|
|
167
|
-
e[6] || (e[6] = s("div", { class: "status-header" }, [
|
|
168
|
-
s("span", { class: "status-label" }, "内存使用"),
|
|
169
|
-
s("span", { class: "status-value" }, "45%")
|
|
170
|
-
], -1)),
|
|
171
|
-
u(v(_), { percentage: 45 })
|
|
172
|
-
]),
|
|
173
|
-
s("div", Z, [
|
|
174
|
-
e[7] || (e[7] = s("div", { class: "status-header" }, [
|
|
175
|
-
s("span", { class: "status-label" }, "CPU 使用率"),
|
|
176
|
-
s("span", { class: "status-value" }, "32%")
|
|
177
|
-
], -1)),
|
|
178
|
-
u(v(_), { percentage: 32 })
|
|
179
|
-
])
|
|
180
|
-
])
|
|
181
|
-
])
|
|
182
|
-
])
|
|
183
|
-
]);
|
|
184
|
-
};
|
|
185
|
-
}
|
|
186
|
-
}), ls = /* @__PURE__ */ q(ss, [["__scopeId", "data-v-545d4c27"]]);
|
|
187
|
-
export {
|
|
188
|
-
ls as default
|
|
189
|
-
};
|