-
-
+
+
diff --git a/packages/grid-layouts/src/components/notify/data.ts b/packages/grid-layouts/src/components/notify/data.ts
new file mode 100644
index 00000000..6b75088c
--- /dev/null
+++ b/packages/grid-layouts/src/components/notify/data.ts
@@ -0,0 +1,206 @@
+export interface ListItem {
+ id: string
+ avatar: string
+ // 通知的标题内容
+ title: string
+ // 是否在标题上显示删除线
+ titleDelete?: boolean
+ datetime: string
+ type: string
+ read?: boolean
+ description: string
+ clickClose?: boolean
+ extra?: string
+ color?: string
+}
+
+export interface TabItem {
+ key: string
+ name: string
+ list: ListItem[]
+ unreadlist?: ListItem[]
+}
+
+export const tabListData: TabItem[] = [
+ {
+ key: '1',
+ name: '通知',
+ list: [
+ {
+ id: '000000001',
+ avatar:
+ 'https://gw.alipayobjects.com/zos/rmsportal/ThXAXghbEsBCCSDihZxY.png',
+ title: '你收到了 14 份新周报',
+ description: '',
+ datetime: '2017-08-09',
+ type: '1',
+ },
+ {
+ id: '000000002',
+ avatar:
+ 'https://gw.alipayobjects.com/zos/rmsportal/OKJXDXrmkNshAMvwtvhu.png',
+ title: '你推荐的 曲妮妮 已通过第三轮面试',
+ description: '',
+ datetime: '2017-08-08',
+ type: '1',
+ },
+ {
+ id: '000000003',
+ avatar:
+ 'https://gw.alipayobjects.com/zos/rmsportal/kISTdvpyTAhtGxpovNWd.png',
+ title: '这种模板可以区分多种通知类型',
+ description: '',
+ datetime: '2017-08-07',
+ // read: true,
+ type: '1',
+ },
+ {
+ id: '000000004',
+ avatar:
+ 'https://gw.alipayobjects.com/zos/rmsportal/GvqBnKhFgObvnSGkDsje.png',
+ title: '左侧图标用于区分不同的类型',
+ description: '',
+ datetime: '2017-08-07',
+ type: '1',
+ },
+ {
+ id: '000000005',
+ avatar:
+ 'https://gw.alipayobjects.com/zos/rmsportal/GvqBnKhFgObvnSGkDsje.png',
+ title:
+ '标题可以设置自动显示省略号,本例中标题行数已设为1行,如果内容超过1行将自动截断并支持tooltip显示完整标题。',
+ description: '',
+ datetime: '2017-08-07',
+ type: '1',
+ },
+ {
+ id: '000000006',
+ avatar:
+ 'https://gw.alipayobjects.com/zos/rmsportal/GvqBnKhFgObvnSGkDsje.png',
+ title: '左侧图标用于区分不同的类型',
+ description: '',
+ datetime: '2017-08-07',
+ type: '1',
+ },
+ {
+ id: '000000007',
+ avatar:
+ 'https://gw.alipayobjects.com/zos/rmsportal/GvqBnKhFgObvnSGkDsje.png',
+ title: '左侧图标用于区分不同的类型',
+ description: '',
+ datetime: '2017-08-07',
+ type: '1',
+ },
+ {
+ id: '000000008',
+ avatar:
+ 'https://gw.alipayobjects.com/zos/rmsportal/GvqBnKhFgObvnSGkDsje.png',
+ title: '左侧图标用于区分不同的类型',
+ description: '',
+ datetime: '2017-08-07',
+ type: '1',
+ },
+ {
+ id: '000000009',
+ avatar:
+ 'https://gw.alipayobjects.com/zos/rmsportal/GvqBnKhFgObvnSGkDsje.png',
+ title: '左侧图标用于区分不同的类型',
+ description: '',
+ datetime: '2017-08-07',
+ type: '1',
+ },
+ {
+ id: '000000010',
+ avatar:
+ 'https://gw.alipayobjects.com/zos/rmsportal/GvqBnKhFgObvnSGkDsje.png',
+ title: '左侧图标用于区分不同的类型',
+ description: '',
+ datetime: '2017-08-07',
+ type: '1',
+ },
+ ],
+ },
+ {
+ key: '2',
+ name: '消息',
+ list: [
+ {
+ id: '000000006',
+ avatar:
+ 'https://gw.alipayobjects.com/zos/rmsportal/fcHMVNCjPOsbUGdEduuv.jpeg',
+ title: '曲丽丽 评论了你',
+ description: '描述信息描述信息描述信息',
+ datetime: '2017-08-07',
+ type: '2',
+ clickClose: true,
+ },
+ {
+ id: '000000007',
+ avatar:
+ 'https://gw.alipayobjects.com/zos/rmsportal/fcHMVNCjPOsbUGdEduuv.jpeg',
+ title: '朱偏右 回复了你',
+ description: '这种模板用于提醒谁与你发生了互动',
+ datetime: '2017-08-07',
+ type: '2',
+ clickClose: true,
+ },
+ {
+ id: '000000008',
+ avatar:
+ 'https://gw.alipayobjects.com/zos/rmsportal/fcHMVNCjPOsbUGdEduuv.jpeg',
+ title: '标题',
+ description:
+ '请将鼠标移动到此处,以便测试超长的消息在此处将如何处理。本例中设置的描述最大行数为2,超过2行的描述内容将被省略并且可以通过tooltip查看完整内容',
+ datetime: '2017-08-07',
+ type: '2',
+ clickClose: true,
+ },
+ ],
+ },
+ {
+ key: '3',
+ name: '待办',
+ list: [
+ {
+ id: '000000009',
+ avatar: '',
+ title: '任务名称',
+ description: '任务需要在 2017-01-12 20:00 前启动',
+ datetime: '',
+ extra: '未开始',
+ color: 'info',
+ type: '3',
+ },
+ {
+ id: '000000010',
+ avatar: '',
+ title: '第三方紧急代码变更',
+ description: '冠霖 需在 2017-01-07 前完成代码变更任务',
+ datetime: '',
+ extra: '紧急处理',
+ color: 'error',
+ type: '3',
+ },
+ {
+ id: '000000011',
+ avatar: '',
+ title: '信息安全考试',
+ description: '指派竹尔于 2017-01-09 前完成更新并发布',
+ datetime: '',
+ extra: '已耗时 8 天',
+ color: 'error',
+ type: '3',
+ },
+ {
+ id: '000000012',
+ avatar: '',
+ title: 'ABCD 版本发布',
+ description: '指派竹尔于 2017-01-09 前完成更新并发布',
+ datetime: '',
+ extra: '进行中',
+ color: 'success',
+ type: '3',
+ },
+ ],
+ },
+]
diff --git a/packages/grid-layouts/src/components/notify/index.vue b/packages/grid-layouts/src/components/notify/index.vue
index 7f0f7655..888073c0 100644
--- a/packages/grid-layouts/src/components/notify/index.vue
+++ b/packages/grid-layouts/src/components/notify/index.vue
@@ -1,9 +1,33 @@
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/packages/grid-layouts/src/components/tabs-bar/components/TabItem.vue b/packages/grid-layouts/src/components/tabs-bar/components/TabItem.vue
index bf02a9fb..5ce5ddd1 100644
--- a/packages/grid-layouts/src/components/tabs-bar/components/TabItem.vue
+++ b/packages/grid-layouts/src/components/tabs-bar/components/TabItem.vue
@@ -16,12 +16,12 @@ const handleClose = (e: PointerEvent) => {
{{ title }}
-import {useAppConfig, usePromise, useTabs} from '@vben/hooks'
+import { useAppConfig, usePromise, useTabs } from '@vben/hooks'
import SuffixItemWrapper from '../../comm/SuffixItemWrapper.vue'
const { refreshPage } = useTabs()
diff --git a/packages/grid-layouts/src/components/tabs-bar/index.vue b/packages/grid-layouts/src/components/tabs-bar/index.vue
index a5be9fa3..6058fc38 100644
--- a/packages/grid-layouts/src/components/tabs-bar/index.vue
+++ b/packages/grid-layouts/src/components/tabs-bar/index.vue
@@ -7,7 +7,7 @@ import { listenerRouteChange } from '@vben/router'
import { REDIRECT_NAME } from '@vben/constants'
import { useI18n } from '@vben/locale'
import { useGo, useTabs } from '@vben/hooks'
-import TabDropdown from "./components/TabDropdown.vue";
+import TabDropdown from './components/TabDropdown.vue'
const { t } = useI18n()
const multipleTabStore = useMultipleTab()
@@ -51,11 +51,14 @@ listenerRouteChange((route) => {
multipleTabStore.checkTab(unref(route))
}
})
-const handleContextMenu = (e: PointerEvent, tabItem: RouteLocationNormalized) => {
+const handleContextMenu = (
+ e: PointerEvent,
+ tabItem: RouteLocationNormalized,
+) => {
e.preventDefault()
if (!tabItem) return
// @ts-ignore
- unref(tabDropdownRef)?.openDropdown(e,tabItem)
+ unref(tabDropdownRef)?.openDropdown(e, tabItem)
}
const handleChange = (value: string) => {
@@ -73,13 +76,13 @@ const handleChange = (value: string) => {
@update:value="handleChange"
>
{
/>
-
+
diff --git a/packages/grid-layouts/src/components/widgets/MenuFixedTrigger.vue b/packages/grid-layouts/src/components/widgets/MenuFixedTrigger.vue
index 4df7c1dd..a3654bb6 100644
--- a/packages/grid-layouts/src/components/widgets/MenuFixedTrigger.vue
+++ b/packages/grid-layouts/src/components/widgets/MenuFixedTrigger.vue
@@ -8,9 +8,7 @@ const { menu, toggleMenuFixed } = useAppConfig()
diff --git a/packages/grid-layouts/src/components/widgets/UserDropdown.vue b/packages/grid-layouts/src/components/widgets/UserDropdown.vue
index 52f67788..3e0d0212 100644
--- a/packages/grid-layouts/src/components/widgets/UserDropdown.vue
+++ b/packages/grid-layouts/src/components/widgets/UserDropdown.vue
@@ -53,7 +53,12 @@ const handleLock = () => {
}
-
+
diff --git a/packages/hooks/src/config/useTabs.ts b/packages/hooks/src/config/useTabs.ts
index 360a04c2..f47327c3 100644
--- a/packages/hooks/src/config/useTabs.ts
+++ b/packages/hooks/src/config/useTabs.ts
@@ -4,6 +4,7 @@ import { useRouter } from 'vue-router'
import { unref } from 'vue'
import { useMultipleTab, useAppConfig } from '@vben/stores'
import { TabActionEnum } from '@vben/constants'
+import { useGo, useRedo } from '../usePage'
export function useTabs(_router?: Router) {
const appStore = useAppConfig()
@@ -59,6 +60,7 @@ export function useTabs(_router?: Router) {
switch (action) {
case TabActionEnum.REFRESH_PAGE:
await tabStore.refreshPage(router)
+ await useRedo(router)
break
case TabActionEnum.CLOSE_ALL:
diff --git a/packages/router/src/routes/modules/dashboard.ts b/packages/router/src/routes/modules/dashboard.ts
index 63957991..451920cd 100644
--- a/packages/router/src/routes/modules/dashboard.ts
+++ b/packages/router/src/routes/modules/dashboard.ts
@@ -19,6 +19,7 @@ const dashboard: RouteRecordItem = {
meta: {
icon: 'mdi:monitor-dashboard',
title: 'routes.dashboard.analysis',
+ affix: true,
},
},
{
diff --git a/packages/stores/package.json b/packages/stores/package.json
index 9f18ad46..a7b78f96 100644
--- a/packages/stores/package.json
+++ b/packages/stores/package.json
@@ -10,9 +10,7 @@
"dependencies": {
"@vben/constants": "workspace:*",
"@vben/locale": "workspace:*",
- "@vben/hooks": "workspace:*",
"@vben/utils": "workspace:*",
- "@vben/router": "workspace:*",
"pinia": "^2.0.30",
"pinia-plugin-persistedstate": "^3.0.2",
"vue": "^3.2.47",
diff --git a/packages/stores/src/modules/multipleTab.ts b/packages/stores/src/modules/multipleTab.ts
index c4984613..3aadc774 100644
--- a/packages/stores/src/modules/multipleTab.ts
+++ b/packages/stores/src/modules/multipleTab.ts
@@ -1,16 +1,11 @@
import { defineStore } from 'pinia'
import { toRaw, unref } from 'vue'
-// @ts-ignore
-import { useGo, useRedo } from '@vben/hooks'
-import { PageEnum } from '@vben/constants'
-import {
- PAGE_NOT_FOUND_ROUTE,
- REDIRECT_ROUTE,
- type RouteLocationNormalized,
- type RouteLocationRaw,
- type Router,
- // @ts-ignore
-} from '@vben/router'
+import { PAGE_NOT_FOUND_NAME, PageEnum, REDIRECT_NAME } from '@vben/constants'
+import type {
+ RouteLocationNormalized,
+ RouteLocationRaw,
+ Router,
+} from 'vue-router'
import { getRawRoute, RemovableRef } from '@vben/utils'
import { useAppConfig } from './appConfig'
@@ -21,8 +16,8 @@ export interface MultipleTabState {
}
function handleGotoPage(router: Router) {
- const go = useGo(router)
- go(unref(router.currentRoute).path, true)
+ // const go = useGo(router)
+ // go(unref(router.currentRoute).path, true)
}
const getToTarget = (tabItem: RouteLocationNormalized) => {
@@ -91,8 +86,6 @@ export const useMultipleTab = defineStore({
if (findTab) {
this.cacheTabList.delete(findTab)
}
- const redo = useRedo(router)
- await redo()
},
clearCacheTabs(): void {
this.cacheTabList = new Set()
@@ -129,9 +122,7 @@ export const useMultipleTab = defineStore({
) ||
meta?.hideTab ||
!name ||
- [REDIRECT_ROUTE.name, PAGE_NOT_FOUND_ROUTE.name].includes(
- name as string,
- )
+ [REDIRECT_NAME, PAGE_NOT_FOUND_NAME].includes(name as string)
) {
return
}
@@ -373,7 +364,7 @@ export const useMultipleTab = defineStore({
}
},
},
- // persist: {
- // paths: []
- // }
+ persist: {
+ paths: ['tabList'],
+ },
})
From 93ff2a5b946af70dd8b8df4b14ca94411cd87aa6 Mon Sep 17 00:00:00 2001
From: h_mo <596417202@qq.com>
Date: Fri, 17 Feb 2023 18:01:31 +0800
Subject: [PATCH 13/13] =?UTF-8?q?pref:=20=E5=88=A0=E9=99=A4grid-admin?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
apps/admin/src/layout/index.vue | 4 +-
apps/grid-admin/.env | 5 -
apps/grid-admin/.env.development | 21 -
apps/grid-admin/.env.production | 28 --
apps/grid-admin/index.html | 146 -------
apps/grid-admin/init-components.ts | 194 ---------
apps/grid-admin/mock/_mock-server.ts | 16 -
apps/grid-admin/mock/auth.ts | 121 ------
apps/grid-admin/mock/demo/form.ts | 271 ------------
apps/grid-admin/mock/demo/table.ts | 52 ---
apps/grid-admin/mock/menu.ts | 269 ------------
apps/grid-admin/package.json | 63 ---
apps/grid-admin/postcss.config.js | 1 -
apps/grid-admin/public/favicon.ico | Bin 894 -> 0 bytes
apps/grid-admin/public/logo.png | Bin 4042 -> 0 bytes
apps/grid-admin/src/apis/auth.ts | 57 ---
apps/grid-admin/src/apis/menu.ts | 29 --
apps/grid-admin/src/apis/sys/index.ts | 2 -
apps/grid-admin/src/apis/sys/menu.ts | 29 --
apps/grid-admin/src/apis/sys/user.ts | 84 ----
.../src/apis/system/model/useModel.ts | 38 --
apps/grid-admin/src/app.vue | 58 ---
.../src/assets/icons/download-count.svg | 1 -
.../src/assets/icons/dynamic-avatar-1.svg | 1 -
.../src/assets/icons/dynamic-avatar-2.svg | 1 -
.../src/assets/icons/dynamic-avatar-3.svg | 1 -
.../src/assets/icons/dynamic-avatar-4.svg | 1 -
.../src/assets/icons/dynamic-avatar-5.svg | 1 -
.../src/assets/icons/dynamic-avatar-6.svg | 1 -
apps/grid-admin/src/assets/icons/moon.svg | 16 -
apps/grid-admin/src/assets/icons/sun.svg | 42 --
.../src/assets/icons/total-sales.svg | 1 -
.../src/assets/icons/transaction.svg | 1 -
.../src/assets/icons/visit-count.svg | 1 -
apps/grid-admin/src/assets/images/header.jpg | Bin 16880 -> 0 bytes
apps/grid-admin/src/assets/images/logo.png | Bin 28304 -> 0 bytes
.../src/assets/svg/illustration.svg | 1 -
.../src/assets/svg/login-bg-dark.svg | 19 -
apps/grid-admin/src/assets/svg/login-bg.svg | 17 -
.../src/assets/svg/login-box-bg.svg | 1 -
apps/grid-admin/src/assets/svg/net-error.svg | 1 -
apps/grid-admin/src/assets/svg/no-data.svg | 1 -
apps/grid-admin/src/config.ts | 26 --
apps/grid-admin/src/init-application.ts | 70 ----
.../src/layout/components/app/AppProvider.tsx | 46 ---
.../grid-admin/src/layout/components/logo.vue | 64 ---
.../src/layout/components/useLockPage.ts | 66 ---
apps/grid-admin/src/layout/feature/index.vue | 9 -
apps/grid-admin/src/layout/index.vue | 13 -
.../grid-admin/src/logics/mitt/routeChange.ts | 30 --
apps/grid-admin/src/main.ts | 37 --
.../src/pages/dashboard/analysis/index.vue | 6 -
.../src/pages/dashboard/workbench/index.vue | 1 -
apps/grid-admin/src/pages/demo/Card.vue | 6 -
apps/grid-admin/src/pages/demo/Draggable.vue | 6 -
apps/grid-admin/src/pages/demo/Form.vue | 6 -
apps/grid-admin/src/pages/demo/Table.vue | 6 -
.../src/pages/demo/editor/monaco-editor.vue | 18 -
apps/grid-admin/src/pages/demo/page/index.vue | 4 -
.../src/pages/demo/table/BasicTable.vue | 6 -
.../src/pages/sys/exception/index.vue | 167 --------
.../src/pages/sys/iframe/FrameBlank.vue | 3 -
apps/grid-admin/src/pages/sys/lock/index.vue | 13 -
.../src/pages/sys/lock/lock-page.vue | 221 ----------
apps/grid-admin/src/pages/sys/lock/use-now.ts | 60 ---
.../pages/sys/login/forget-password-form.vue | 75 ----
.../src/pages/sys/login/login-form-title.vue | 27 --
.../src/pages/sys/login/login-form.vue | 163 --------
apps/grid-admin/src/pages/sys/login/login.vue | 136 ------
.../src/pages/sys/login/mobile-form.vue | 77 ----
.../src/pages/sys/login/qrcode-form.vue | 35 --
.../src/pages/sys/login/register-form.vue | 123 ------
.../src/pages/sys/login/use-login.ts | 129 ------
apps/grid-admin/src/router/guard.ts | 30 --
apps/grid-admin/src/router/helper/index.ts | 2 -
apps/grid-admin/src/router/helper/menu.ts | 105 -----
apps/grid-admin/src/router/helper/route.ts | 182 --------
apps/grid-admin/src/router/index.ts | 30 --
apps/grid-admin/src/router/menus/index.ts | 106 -----
apps/grid-admin/src/router/routes/basic.ts | 95 -----
apps/grid-admin/src/router/routes/index.ts | 30 --
.../src/router/routes/modules/dashboard.ts | 34 --
.../src/router/routes/modules/demo/demo.ts | 60 ---
.../src/router/routes/modules/demo/editor.ts | 24 --
.../src/router/routes/modules/demo/page.ts | 13 -
apps/grid-admin/src/setting/design.ts | 23 --
apps/grid-admin/src/setting/index.ts | 2 -
apps/grid-admin/src/setting/project.ts | 185 ---------
apps/grid-admin/src/store/auth.ts | 210 ----------
apps/grid-admin/src/store/config.ts | 87 ----
apps/grid-admin/src/store/lock.ts | 55 ---
apps/grid-admin/src/store/modules/app.ts | 45 --
apps/grid-admin/src/store/multipleTab.ts | 387 ------------------
apps/grid-admin/src/store/user.ts | 166 --------
apps/grid-admin/tsconfig.json | 25 --
apps/grid-admin/vite.config.ts | 7 -
96 files changed, 2 insertions(+), 5146 deletions(-)
delete mode 100644 apps/grid-admin/.env
delete mode 100644 apps/grid-admin/.env.development
delete mode 100644 apps/grid-admin/.env.production
delete mode 100644 apps/grid-admin/index.html
delete mode 100644 apps/grid-admin/init-components.ts
delete mode 100644 apps/grid-admin/mock/_mock-server.ts
delete mode 100644 apps/grid-admin/mock/auth.ts
delete mode 100644 apps/grid-admin/mock/demo/form.ts
delete mode 100644 apps/grid-admin/mock/demo/table.ts
delete mode 100644 apps/grid-admin/mock/menu.ts
delete mode 100644 apps/grid-admin/package.json
delete mode 100644 apps/grid-admin/postcss.config.js
delete mode 100644 apps/grid-admin/public/favicon.ico
delete mode 100644 apps/grid-admin/public/logo.png
delete mode 100644 apps/grid-admin/src/apis/auth.ts
delete mode 100644 apps/grid-admin/src/apis/menu.ts
delete mode 100644 apps/grid-admin/src/apis/sys/index.ts
delete mode 100644 apps/grid-admin/src/apis/sys/menu.ts
delete mode 100644 apps/grid-admin/src/apis/sys/user.ts
delete mode 100644 apps/grid-admin/src/apis/system/model/useModel.ts
delete mode 100644 apps/grid-admin/src/app.vue
delete mode 100644 apps/grid-admin/src/assets/icons/download-count.svg
delete mode 100644 apps/grid-admin/src/assets/icons/dynamic-avatar-1.svg
delete mode 100644 apps/grid-admin/src/assets/icons/dynamic-avatar-2.svg
delete mode 100644 apps/grid-admin/src/assets/icons/dynamic-avatar-3.svg
delete mode 100644 apps/grid-admin/src/assets/icons/dynamic-avatar-4.svg
delete mode 100644 apps/grid-admin/src/assets/icons/dynamic-avatar-5.svg
delete mode 100644 apps/grid-admin/src/assets/icons/dynamic-avatar-6.svg
delete mode 100644 apps/grid-admin/src/assets/icons/moon.svg
delete mode 100644 apps/grid-admin/src/assets/icons/sun.svg
delete mode 100644 apps/grid-admin/src/assets/icons/total-sales.svg
delete mode 100644 apps/grid-admin/src/assets/icons/transaction.svg
delete mode 100644 apps/grid-admin/src/assets/icons/visit-count.svg
delete mode 100644 apps/grid-admin/src/assets/images/header.jpg
delete mode 100644 apps/grid-admin/src/assets/images/logo.png
delete mode 100644 apps/grid-admin/src/assets/svg/illustration.svg
delete mode 100644 apps/grid-admin/src/assets/svg/login-bg-dark.svg
delete mode 100644 apps/grid-admin/src/assets/svg/login-bg.svg
delete mode 100644 apps/grid-admin/src/assets/svg/login-box-bg.svg
delete mode 100644 apps/grid-admin/src/assets/svg/net-error.svg
delete mode 100644 apps/grid-admin/src/assets/svg/no-data.svg
delete mode 100644 apps/grid-admin/src/config.ts
delete mode 100644 apps/grid-admin/src/init-application.ts
delete mode 100644 apps/grid-admin/src/layout/components/app/AppProvider.tsx
delete mode 100644 apps/grid-admin/src/layout/components/logo.vue
delete mode 100644 apps/grid-admin/src/layout/components/useLockPage.ts
delete mode 100644 apps/grid-admin/src/layout/feature/index.vue
delete mode 100644 apps/grid-admin/src/layout/index.vue
delete mode 100644 apps/grid-admin/src/logics/mitt/routeChange.ts
delete mode 100644 apps/grid-admin/src/main.ts
delete mode 100644 apps/grid-admin/src/pages/dashboard/analysis/index.vue
delete mode 100644 apps/grid-admin/src/pages/dashboard/workbench/index.vue
delete mode 100644 apps/grid-admin/src/pages/demo/Card.vue
delete mode 100644 apps/grid-admin/src/pages/demo/Draggable.vue
delete mode 100644 apps/grid-admin/src/pages/demo/Form.vue
delete mode 100644 apps/grid-admin/src/pages/demo/Table.vue
delete mode 100644 apps/grid-admin/src/pages/demo/editor/monaco-editor.vue
delete mode 100644 apps/grid-admin/src/pages/demo/page/index.vue
delete mode 100644 apps/grid-admin/src/pages/demo/table/BasicTable.vue
delete mode 100644 apps/grid-admin/src/pages/sys/exception/index.vue
delete mode 100644 apps/grid-admin/src/pages/sys/iframe/FrameBlank.vue
delete mode 100644 apps/grid-admin/src/pages/sys/lock/index.vue
delete mode 100644 apps/grid-admin/src/pages/sys/lock/lock-page.vue
delete mode 100644 apps/grid-admin/src/pages/sys/lock/use-now.ts
delete mode 100644 apps/grid-admin/src/pages/sys/login/forget-password-form.vue
delete mode 100644 apps/grid-admin/src/pages/sys/login/login-form-title.vue
delete mode 100644 apps/grid-admin/src/pages/sys/login/login-form.vue
delete mode 100644 apps/grid-admin/src/pages/sys/login/login.vue
delete mode 100644 apps/grid-admin/src/pages/sys/login/mobile-form.vue
delete mode 100644 apps/grid-admin/src/pages/sys/login/qrcode-form.vue
delete mode 100644 apps/grid-admin/src/pages/sys/login/register-form.vue
delete mode 100644 apps/grid-admin/src/pages/sys/login/use-login.ts
delete mode 100644 apps/grid-admin/src/router/guard.ts
delete mode 100644 apps/grid-admin/src/router/helper/index.ts
delete mode 100644 apps/grid-admin/src/router/helper/menu.ts
delete mode 100644 apps/grid-admin/src/router/helper/route.ts
delete mode 100644 apps/grid-admin/src/router/index.ts
delete mode 100644 apps/grid-admin/src/router/menus/index.ts
delete mode 100644 apps/grid-admin/src/router/routes/basic.ts
delete mode 100644 apps/grid-admin/src/router/routes/index.ts
delete mode 100644 apps/grid-admin/src/router/routes/modules/dashboard.ts
delete mode 100644 apps/grid-admin/src/router/routes/modules/demo/demo.ts
delete mode 100644 apps/grid-admin/src/router/routes/modules/demo/editor.ts
delete mode 100644 apps/grid-admin/src/router/routes/modules/demo/page.ts
delete mode 100644 apps/grid-admin/src/setting/design.ts
delete mode 100644 apps/grid-admin/src/setting/index.ts
delete mode 100644 apps/grid-admin/src/setting/project.ts
delete mode 100644 apps/grid-admin/src/store/auth.ts
delete mode 100644 apps/grid-admin/src/store/config.ts
delete mode 100644 apps/grid-admin/src/store/lock.ts
delete mode 100644 apps/grid-admin/src/store/modules/app.ts
delete mode 100644 apps/grid-admin/src/store/multipleTab.ts
delete mode 100644 apps/grid-admin/src/store/user.ts
delete mode 100644 apps/grid-admin/tsconfig.json
delete mode 100644 apps/grid-admin/vite.config.ts
diff --git a/apps/admin/src/layout/index.vue b/apps/admin/src/layout/index.vue
index 31f5d52d..7bd5fc2d 100644
--- a/apps/admin/src/layout/index.vue
+++ b/apps/admin/src/layout/index.vue
@@ -1,7 +1,7 @@
diff --git a/apps/grid-admin/.env b/apps/grid-admin/.env
deleted file mode 100644
index 41883baa..00000000
--- a/apps/grid-admin/.env
+++ /dev/null
@@ -1,5 +0,0 @@
-# spa title
-VITE_GLOB_APP_TITLE = Vben Admin
-
-# spa shortname
-VITE_GLOB_APP_SHORT_NAME = vben_admin
diff --git a/apps/grid-admin/.env.development b/apps/grid-admin/.env.development
deleted file mode 100644
index cbc16168..00000000
--- a/apps/grid-admin/.env.development
+++ /dev/null
@@ -1,21 +0,0 @@
-# Whether to open mock
-VITE_USE_MOCK = true
-
-# public path
-VITE_PUBLIC_PATH = /
-
-# Cross-domain proxy, you can configure multiple
-# Please note that no line breaks
-VITE_PROXY = [["/basic-api","http://localhost:3000"]]
-# VITE_PROXY=[["/api","https://vvbin.cn/test"]]
-
-# Whether to enable https and http2 in the development environment
-# it will greatly optimize the loading speed at the first startup
-# 是否在开发环境开启 https 和 http2(开启后将大幅优化首次启动时加载速度)
-VITE_USE_HTTPS = true
-
-# Delete console
-VITE_DROP_CONSOLE = false
-
-# Basic interface address SPA
-VITE_GLOB_API_URL=/basic-api
diff --git a/apps/grid-admin/.env.production b/apps/grid-admin/.env.production
deleted file mode 100644
index ac329c9c..00000000
--- a/apps/grid-admin/.env.production
+++ /dev/null
@@ -1,28 +0,0 @@
-# Whether to open mock
-VITE_USE_MOCK = true
-
-# public path
-VITE_PUBLIC_PATH = /
-
-# Delete console
-VITE_DROP_CONSOLE = true
-
-# Whether to enable gzip or brotli compression
-# Optional: gzip | brotli | none
-# If you need multiple forms, you can use `,` to separate
-VITE_BUILD_COMPRESS = 'none'
-
-# Whether to delete origin files when using compress, default false
-VITE_BUILD_COMPRESS_DELETE_ORIGIN_FILE = false
-
-# Basic interface address SPA
-VITE_GLOB_API_URL=/basic-api
-
-# Whether to enable image compression
-VITE_USE_IMAGEMIN= true
-
-# use pwa
-VITE_USE_PWA = false
-
-# Is it compatible with older browsers
-VITE_LEGACY = false
diff --git a/apps/grid-admin/index.html b/apps/grid-admin/index.html
deleted file mode 100644
index 9b193a7f..00000000
--- a/apps/grid-admin/index.html
+++ /dev/null
@@ -1,146 +0,0 @@
-
-
-
-
-
-
-
- <%= title %>
-
-
-
-
-
-
-
-
-
-
-
-
-
<%= title %>
-
-
-
-
-
-
diff --git a/apps/grid-admin/init-components.ts b/apps/grid-admin/init-components.ts
deleted file mode 100644
index cf3fa770..00000000
--- a/apps/grid-admin/init-components.ts
+++ /dev/null
@@ -1,194 +0,0 @@
-// 按需导入组件
-import naive, {
- darkTheme,
- NTag,
- NCard,
- NDivider,
- NSpace,
- NPopover,
- NButton,
- NAvatar,
- NStatistic,
- NSelect,
- NInput,
- NThing,
- NPopconfirm,
- NIcon,
- NIconWrapper,
- NCheckbox,
- NCheckboxGroup,
- NButtonGroup,
- NModal,
- NEmpty,
- NUpload,
- NUploadDragger,
- NTabs,
- NTabPane,
- NGrid,
- NGridItem,
- NEllipsis,
- NImage,
- NMessageProvider,
- useMessage,
- NPagination,
- NRadio,
- NRadioButton,
- NRadioGroup,
- NText,
- NConfigProvider,
- NDynamicTags,
- NColorPicker,
- NDescriptions,
- NDescriptionsItem,
- useNotification,
- NNotificationProvider,
- NSwitch,
- NMenu,
- // dateZhCN,
- zhCN,
- // darkTheme,
- NBreadcrumb,
- NBreadcrumbItem,
- NLayout,
- NLayoutSider,
- NLayoutFooter,
- NLayoutContent,
- NLayoutHeader,
- NForm,
- NFormItem,
- NDropdown,
- NInputNumber,
- NTreeSelect,
- NBadge,
- NListItem,
- NList,
- NAutoComplete,
- NCascader,
- NDatePicker,
- NTimePicker,
- NRate,
- NSlider,
- NTransfer,
- NMention,
- NFormItemGi,
- NTree,
- NH1,
- NH2,
- NH3,
- NH4,
- NH5,
- NH6,
- NInputGroupLabel,
- NInputGroup,
- NDrawer,
- NDrawerContent,
- NDynamicInput,
- NPopselect,
- NTime,
- NScrollbar,
- NElement,
- NSkeleton,
- NTooltip,
- NTab,
- NResult,
- NAffix, NGradientText
-} from 'naive-ui'
-
-import { initVbenComponent, setNotice, setMessage } from '@vben/vbencomponents'
-
-export async function registerComponents(app) {
- initVbenComponent(app, {
- Drawer: NDrawer,
- DrawerContent: NDrawerContent,
- Tag: NTag,
- Card: NCard,
- Menu: NMenu,
- Divider: NDivider,
- Space: NSpace,
- Popover: NPopover,
- Button: NButton,
- ButtonGroup: NButtonGroup,
- Avatar: NAvatar,
- Statistic: NStatistic,
- Select: NSelect,
- Input: NInput,
- InputGroup: NInputGroup,
- InputGroupLabel: NInputGroupLabel,
- InputNumber: NInputNumber,
- Form: NForm,
- FormItem: NFormItem,
- Thing: NThing,
- Popconfirm: NPopconfirm,
- Icon: NIcon,
- IconWrapper: NIconWrapper,
- Checkbox: NCheckbox,
- CheckboxGroup: NCheckboxGroup,
- Breadcrumb: NBreadcrumb,
- BreadcrumbItem: NBreadcrumbItem,
- Modal: NModal,
- Empty: NEmpty,
- Upload: NUpload,
- UploadDragger: NUploadDragger,
- Tabs: NTabs,
- Tab: NTab,
- TabPane: NTabPane,
- Grid: NGrid,
- GridItem: NGridItem,
- Ellipsis: NEllipsis,
- Image: NImage,
- MessageProvider: NMessageProvider,
- Pagination: NPagination,
- Radio: NRadio,
- RadioButton: NRadioButton,
- RadioGroup: NRadioGroup,
- Text: NText,
- Config: NConfigProvider,
- DynamicTags: NDynamicTags,
- ColorPicker: NColorPicker,
- Descriptions: NDescriptions,
- DescriptionsItem: NDescriptionsItem,
- NotificationProvider: NNotificationProvider,
- Switch: NSwitch,
- Layout: NLayout,
- LayoutHeader: NLayoutHeader,
- LayoutFooter: NLayoutFooter,
- LayoutSider: NLayoutSider,
- LayoutContent: NLayoutContent,
- Dropdown: NDropdown,
- TreeSelect: NTreeSelect,
- Badge: NBadge,
- ListItem: NListItem,
- List: NList,
- AutoComplete: NAutoComplete,
- Cascader: NCascader,
- DatePicker: NDatePicker,
- TimePicker: NTimePicker,
- Rate: NRate,
- Slider: NSlider,
- Transfer: NTransfer,
- Mention: NMention,
- FormItemGi: NFormItemGi,
- Tree: NTree,
- H1: NH1,
- H2: NH2,
- H3: NH3,
- H4: NH4,
- H5: NH5,
- H6: NH6,
- DynamicInput: NDynamicInput,
- PopSelect: NPopselect,
- Time: NTime,
- Scrollbar: NScrollbar,
- DarkTheme: darkTheme,
- Element: NElement,
- Skeleton: NSkeleton,
- Tooltip: NTooltip,
- Result: NResult,
- Affix: NAffix,
- GradientText: NGradientText
- })
- setMessage(useMessage)
- setNotice(useNotification)
- // @ts-ignore
- // app.use(naive)
-}
diff --git a/apps/grid-admin/mock/_mock-server.ts b/apps/grid-admin/mock/_mock-server.ts
deleted file mode 100644
index ff06484a..00000000
--- a/apps/grid-admin/mock/_mock-server.ts
+++ /dev/null
@@ -1,16 +0,0 @@
-import { createProdMockServer } from 'vite-plugin-mock/es/createProdMockServer'
-
-const modules = import.meta.globEager('./**/*.ts')
-
-const mockModules: any[] = []
-Object.keys(modules).forEach((key) => {
- if (key.includes('/_')) {
- return
- }
- mockModules.push(...modules[key].default)
-})
-
-/**
- * Used in a production environment. Need to manually import all modules
- */
-export const setupProdMockServer = () => createProdMockServer(mockModules)
diff --git a/apps/grid-admin/mock/auth.ts b/apps/grid-admin/mock/auth.ts
deleted file mode 100644
index 2a6505f0..00000000
--- a/apps/grid-admin/mock/auth.ts
+++ /dev/null
@@ -1,121 +0,0 @@
-import { MockMethod } from 'vite-plugin-mock'
-import {
- resultError,
- resultSuccess,
- getRequestToken,
- requestParams,
-} from '@vben/utils/mock-util'
-
-export function createFakeUserList() {
- return [
- {
- userId: '1',
- username: 'vben',
- realname: 'Vben Admin',
- avatar: 'https://q1.qlogo.cn/g?b=qq&nk=190848757&s=640',
- desc: 'manager',
- password: '123456',
- accessToken: 'fakeToken1',
- roles: [
- {
- name: 'Super Admin',
- value: 'super',
- },
- ],
- },
- {
- userId: '2',
- username: 'test',
- password: '123456',
- realname: 'test user',
- avatar: 'https://q1.qlogo.cn/g?b=qq&nk=339449197&s=640',
- desc: 'tester',
- accessToken: 'fakeToken2',
- roles: [
- {
- name: 'Tester',
- value: 'test',
- },
- ],
- },
- ]
-}
-
-const fakeCodeList: any = {
- '1': ['1000', '3000', '5000'],
-
- '2': ['2000', '4000', '6000'],
-}
-export default [
- // mock user login
- {
- url: '/basic-api/login',
- timeout: 200,
- method: 'post',
- response: ({ body }) => {
- const { username, password } = body
-
- const checkUser = createFakeUserList().find(
- (item) => item.username === username && password === item.password,
- )
-
- if (!checkUser) {
- return resultError('Incorrect account or password!')
- }
-
- return resultSuccess(checkUser)
- },
- },
- {
- url: '/basic-api/getUserInfo',
- method: 'get',
- response: (request: requestParams) => {
- const accessToken = getRequestToken(request)
-
- if (!accessToken) return resultError('Invalid accessToken.')
- const checkUser = createFakeUserList().find(
- (item) => item.accessToken === accessToken,
- )
- if (!checkUser) {
- return resultError(
- 'The corresponding user information was not obtained!',
- )
- }
- return resultSuccess(checkUser)
- },
- },
- {
- url: '/basic-api/getPermCode',
- timeout: 200,
- method: 'get',
- response: (request: requestParams) => {
- const accessToken = getRequestToken(request)
- if (!accessToken) return resultError('Invalid accessToken.')
- const checkUser = createFakeUserList().find(
- (item) => item.accessToken === accessToken,
- )
- if (!checkUser) {
- return resultError('Invalid accessToken.')
- }
- const codeList = fakeCodeList[checkUser.userId]
-
- return resultSuccess(codeList)
- },
- },
- {
- url: '/basic-api/logout',
- timeout: 200,
- method: 'get',
- response: (request: requestParams) => {
- const accessToken = getRequestToken(request)
- if (!accessToken) return resultError('Invalid accessToken.')
- const checkUser = createFakeUserList().find(
- (item) => item.accessToken === accessToken,
- )
- if (!checkUser) {
- return resultError('Invalid accessToken.')
- }
- return resultSuccess(undefined, { message: 'Token has been destroyed' })
- },
- },
-] as MockMethod[]
diff --git a/apps/grid-admin/mock/demo/form.ts b/apps/grid-admin/mock/demo/form.ts
deleted file mode 100644
index f3f33948..00000000
--- a/apps/grid-admin/mock/demo/form.ts
+++ /dev/null
@@ -1,271 +0,0 @@
-import { MockMethod } from 'vite-plugin-mock'
-import { resultError, resultSuccess } from '@vben/utils/mock-util'
-
-export function createSelectData() {
- return {
- options: [
- {
- label: "Everybody's Got Something to Hide Except Me and My Monkey",
- value: 'song0',
- disabled: true,
- },
- {
- label: 'Drive My Car',
- value: 'song1',
- },
- {
- label: 'Norwegian Wood',
- value: 'song2',
- },
- {
- label: "You Won't See",
- value: 'song3',
- disabled: true,
- },
- {
- label: 'Nowhere Man',
- value: 'song4',
- },
- {
- label: 'Think For Yourself',
- value: 'song5',
- },
- {
- label: 'The Word',
- value: 'song6',
- },
- {
- label: 'Michelle',
- value: 'song7',
- disabled: true,
- },
- {
- label: 'What goes on',
- value: 'song8',
- },
- {
- label: 'Girl',
- value: 'song9',
- },
- {
- label: "I'm looking through you",
- value: 'song10',
- },
- {
- label: 'In My Life',
- value: 'song11',
- },
- {
- label: 'Wait',
- value: 'song12',
- },
- ],
- }
-}
-
-export function createTreeSelectData() {
- return {
- options: [
- {
- label: 'Rubber Soul',
- key: 'Rubber Soul',
- children: [
- {
- label: "Everybody's Got Something to Hide Except Me and My Monkey",
- key: "Everybody's Got Something to Hide Except Me and My Monkey",
- },
- {
- label: 'Drive My Car',
- key: 'Drive My Car',
- disabled: true,
- },
- {
- label: 'Norwegian Wood',
- key: 'Norwegian Wood',
- },
- {
- label: "You Won't See",
- key: "You Won't See",
- disabled: true,
- },
- {
- label: 'Nowhere Man',
- key: 'Nowhere Man',
- },
- {
- label: 'Think For Yourself',
- key: 'Think For Yourself',
- },
- {
- label: 'The Word',
- key: 'The Word',
- },
- {
- label: 'Michelle',
- key: 'Michelle',
- disabled: true,
- },
- {
- label: 'What goes on',
- key: 'What goes on',
- },
- {
- label: 'Girl',
- key: 'Girl',
- },
- {
- label: "I'm looking through you",
- key: "I'm looking through you",
- },
- {
- label: 'In My Life',
- key: 'In My Life',
- },
- {
- label: 'Wait',
- key: 'Wait',
- },
- ],
- },
- {
- label: 'Let It Be',
- key: 'Let It Be Album',
- children: [
- {
- label: 'Two Of Us',
- key: 'Two Of Us',
- },
- {
- label: 'Dig A Pony',
- key: 'Dig A Pony',
- },
- {
- label: 'Across The Universe',
- key: 'Across The Universe',
- },
- {
- label: 'I Me Mine',
- key: 'I Me Mine',
- },
- {
- label: 'Dig It',
- key: 'Dig It',
- },
- {
- label: 'Let It Be',
- key: 'Let It Be',
- },
- {
- label: 'Maggie Mae',
- key: 'Maggie Mae',
- },
- {
- label: "I've Got A Feeling",
- key: "I've Got A Feeling",
- },
- {
- label: 'One After 909',
- key: 'One After 909',
- },
- {
- label: 'The Long And Winding Road',
- key: 'The Long And Winding Road',
- },
- {
- label: 'For You Blue',
- key: 'For You Blue',
- },
- {
- label: 'Get Back',
- key: 'Get Back',
- },
- ],
- },
- ],
- }
-}
-
-export function createRadioData() {
- return {
- options: [
- {
- label: '选项1',
- value: '1',
- },
- {
- label: '选项2',
- value: '2',
- },
- {
- label: '选项3',
- value: '3',
- disabled: true,
- },
- ],
- }
-}
-
-export function createCascaderOptions(depth = 3, iterator = 1, prefix = '') {
- const length = 12
- const options = []
- for (let i = 1; i <= length; ++i) {
- if (iterator === 1) {
- options.push({
- value: `v-${i}`,
- label: `l-${i}`,
- disabled: i % 5 === 0,
- children: createCascaderOptions(depth, iterator + 1, '' + String(i)),
- })
- } else if (iterator === depth) {
- options.push({
- value: `v-${prefix}-${i}`,
- label: `l-${prefix}-${i}`,
- disabled: i % 5 === 0,
- })
- } else {
- options.push({
- value: `v-${prefix}-${i}`,
- label: `l-${prefix}-${i}`,
- disabled: i % 5 === 0,
- children: createCascaderOptions(depth, iterator + 1, `${prefix}-${i}`),
- })
- }
- }
- return options
-}
-
-export default [
- // mock user login
- {
- url: '/basic-api/demo/form/select',
- timeout: 200,
- method: 'post',
- response: ({ body }) => {
- return resultSuccess(createSelectData())
- },
- },
- {
- url: '/basic-api/demo/form/treeSelect',
- timeout: 200,
- method: 'post',
- response: ({ body }) => {
- return resultSuccess(createTreeSelectData())
- },
- },
- {
- url: '/basic-api/demo/form/radio',
- timeout: 200,
- method: 'post',
- response: ({ body }) => {
- return resultSuccess(createRadioData())
- },
- },
- {
- url: '/basic-api/demo/form/cascader',
- timeout: 200,
- method: 'post',
- response: ({ body }) => {
- return resultSuccess({ options: createCascaderOptions() })
- },
- },
-] as MockMethod[]
diff --git a/apps/grid-admin/mock/demo/table.ts b/apps/grid-admin/mock/demo/table.ts
deleted file mode 100644
index 1afafa42..00000000
--- a/apps/grid-admin/mock/demo/table.ts
+++ /dev/null
@@ -1,52 +0,0 @@
-import { MockMethod } from 'vite-plugin-mock'
-import { resultError, resultSuccess } from '@vben/utils/mock-util'
-
-export function createFakeTableData() {
- return {
- items: [
- {
- userId: '1',
- username: 'vben',
- realname: 'Vben Admin',
- avatar: 'https://q1.qlogo.cn/g?b=qq&nk=190848757&s=640',
- desc: 'manager',
- password: '123456',
- accessToken: 'fakeToken1',
- roles: [
- {
- name: 'Super Admin',
- value: 'super',
- },
- ],
- },
- {
- userId: '2',
- username: 'test',
- password: '123456',
- realname: 'test user',
- avatar: 'https://q1.qlogo.cn/g?b=qq&nk=339449197&s=640',
- desc: 'tester',
- accessToken: 'fakeToken2',
- roles: [
- {
- name: 'Tester',
- value: 'test',
- },
- ],
- },
- ],
- total: 2,
- }
-}
-
-export default [
- // mock user login
- {
- url: '/basic-api/demo/table',
- timeout: 200,
- method: 'post',
- response: ({ body }) => {
- return resultSuccess(createFakeTableData())
- },
- },
-] as MockMethod[]
diff --git a/apps/grid-admin/mock/menu.ts b/apps/grid-admin/mock/menu.ts
deleted file mode 100644
index d20aebd1..00000000
--- a/apps/grid-admin/mock/menu.ts
+++ /dev/null
@@ -1,269 +0,0 @@
-import {
- resultSuccess,
- resultError,
- getRequestToken,
- requestParams,
-} from '@vben/utils/mock-util'
-import { MockMethod } from 'vite-plugin-mock'
-import { createFakeUserList } from './auth'
-
-// single
-const dashboardRoute = {
- path: '/dashboard',
- name: 'Dashboard',
- component: 'LAYOUT',
- redirect: '/dashboard/analysis',
- meta: {
- title: 'routes.dashboard.dashboard',
- icon: 'bx:bx-home',
- },
- children: [
- {
- path: 'analysis',
- name: 'Analysis',
- component: '/dashboard/analysis/index',
- meta: {
- title: 'routes.dashboard.analysis',
- icon: 'bx:bx-home',
- },
- },
- {
- path: 'workbench',
- name: 'Workbench',
- component: '/dashboard/workbench/index',
- meta: {
- title: 'routes.dashboard.workbench',
- icon: 'bx:bx-home',
- },
- },
- ],
-}
-
-const backRoute = {
- path: 'back',
- name: 'PermissionBackDemo',
- meta: {
- title: 'routes.demo.permission.back',
- },
-
- children: [
- {
- path: 'page',
- name: 'BackAuthPage',
- component: '/demo/permission/back/index',
- meta: {
- title: 'routes.demo.permission.backPage',
- },
- },
- {
- path: 'btn',
- name: 'BackAuthBtn',
- component: '/demo/permission/back/Btn',
- meta: {
- title: 'routes.demo.permission.backBtn',
- },
- },
- ],
-}
-
-const authRoute = {
- path: '/permission',
- name: 'Permission',
- component: 'LAYOUT',
- redirect: '/permission/front/page',
- meta: {
- icon: 'carbon:user-role',
- title: 'routes.demo.permission.permission',
- },
- children: [backRoute],
-}
-
-const levelRoute = {
- path: '/level',
- name: 'Level',
- component: 'LAYOUT',
- redirect: '/level/menu1/menu1-1',
- meta: {
- icon: 'carbon:user-role',
- title: 'routes.demo.level.level',
- },
-
- children: [
- {
- path: 'menu1',
- name: 'Menu1Demo',
- meta: {
- title: 'Menu1',
- },
- children: [
- {
- path: 'menu1-1',
- name: 'Menu11Demo',
- meta: {
- title: 'Menu1-1',
- },
- children: [
- {
- path: 'menu1-1-1',
- name: 'Menu111Demo',
- component: '/demo/level/Menu111',
- meta: {
- title: 'Menu111',
- },
- },
- ],
- },
- {
- path: 'menu1-2',
- name: 'Menu12Demo',
- component: '/demo/level/Menu12',
- meta: {
- title: 'Menu1-2',
- },
- },
- ],
- },
- {
- path: 'menu2',
- name: 'Menu2Demo',
- component: '/demo/level/Menu2',
- meta: {
- title: 'Menu2',
- },
- },
- ],
-}
-
-const sysRoute = {
- path: '/system',
- name: 'System',
- component: 'LAYOUT',
- redirect: '/system/account',
- meta: {
- icon: 'ion:settings-outline',
- title: 'routes.demo.system.moduleName',
- },
- children: [
- {
- path: 'account',
- name: 'AccountManagement',
- meta: {
- title: 'routes.demo.system.account',
- ignoreKeepAlive: true,
- },
- component: '/demo/system/account/index',
- },
- {
- path: 'account_detail/:id',
- name: 'AccountDetail',
- meta: {
- title: 'routes.demo.system.account_detail',
- ignoreKeepAlive: true,
- showMenu: false,
- },
- component: '/demo/system/account/AccountDetail',
- },
- {
- path: 'role',
- name: 'RoleManagement',
- meta: {
- title: 'routes.demo.system.role',
- ignoreKeepAlive: true,
- },
- component: '/demo/system/role/index',
- },
-
- {
- path: 'menu',
- name: 'MenuManagement',
- meta: {
- title: 'routes.demo.system.menu',
- ignoreKeepAlive: true,
- },
- component: '/demo/system/menu/index',
- },
- {
- path: 'dept',
- name: 'DeptManagement',
- meta: {
- title: 'routes.demo.system.dept',
- ignoreKeepAlive: true,
- },
- component: '/demo/system/dept/index',
- },
- {
- path: 'changePassword',
- name: 'ChangePassword',
- meta: {
- title: 'routes.demo.system.password',
- ignoreKeepAlive: true,
- },
- component: '/demo/system/password/index',
- },
- ],
-}
-
-const linkRoute = {
- path: '/link',
- name: 'Link',
- component: 'LAYOUT',
- meta: {
- icon: 'ion:tv-outline',
- title: 'routes.demo.iframe.frame',
- },
- children: [
- {
- path: 'doc',
- name: 'Doc',
- meta: {
- title: 'routes.demo.iframe.doc',
- },
- },
- {
- path: 'https://vvbin.cn/doc-next/',
- name: 'DocExternal',
- component: 'LAYOUT',
- meta: {
- title: 'routes.demo.iframe.docExternal',
- },
- },
- ],
-}
-
-export default [
- {
- url: '/basic-api/getMenuList',
- timeout: 1000,
- method: 'get',
- response: (request: requestParams) => {
- const token = getRequestToken(request)
- if (!token) {
- return resultError('Invalid token!')
- }
- const checkUser = createFakeUserList().find(
- (item) => item.token === token,
- )
- if (!checkUser) {
- return resultError('Invalid user token!')
- }
- const id = checkUser.userId
- let menu: Object[]
- switch (id) {
- case '1':
- dashboardRoute.redirect =
- dashboardRoute.path + '/' + dashboardRoute.children[0].path
- menu = [dashboardRoute, authRoute, levelRoute, sysRoute, linkRoute]
- break
- case '2':
- dashboardRoute.redirect =
- dashboardRoute.path + '/' + dashboardRoute.children[1].path
- menu = [dashboardRoute, authRoute, levelRoute, linkRoute]
- break
- default:
- menu = []
- }
-
- return resultSuccess(menu)
- },
- },
-] as MockMethod[]
diff --git a/apps/grid-admin/package.json b/apps/grid-admin/package.json
deleted file mode 100644
index 6fb2a7c3..00000000
--- a/apps/grid-admin/package.json
+++ /dev/null
@@ -1,63 +0,0 @@
-{
- "name": "@apps/grid-admin",
- "version": "3.0.0-bata.1",
- "repository": {
- "type": "git",
- "url": "git+https://github.com/vbenjs/vue-vben-admin.git",
- "directory": "apps/ant-app"
- },
- "author": {
- "name": "vben",
- "email": "anncwb@126.com",
- "url": "https://github.com/anncwb"
- },
- "scripts": {
- "build": "pnpm cross-env NODE_ENV=production vite build",
- "clean": "pnpm rimraf node_modules && pnpm rimraf dist && pnpm rimraf .turbo",
- "dev": "vite",
- "preview": "npm run build && vite preview",
- "preview:dist": "vite preview",
- "report": "pnpm cross-env REPORT=true npm run build",
- "server:br": "pnpx http-server dist --cors --brotli -c-1",
- "server:gzip": "pnpx http-server dist --cors --gzip -c-1",
- "type:check": "vue-tsc --noEmit --skipLibCheck"
- },
- "dependencies": {
- "@ant-design/icons-vue": "^6.1.0",
- "@iconify/iconify": "^3.1.0",
- "@vben/components": "workspace:*",
- "@vben/constants": "workspace:*",
- "@vben/demo": "workspace:*",
- "@vben/directives": "workspace:*",
- "@vben/grid-layouts": "workspace:*",
- "@vben/hooks": "workspace:*",
- "@vben/locale": "workspace:*",
- "@vben/request": "workspace:*",
- "@vben/stores": "workspace:*",
- "@vben/styles": "workspace:*",
- "@vben/utils": "workspace:*",
- "@vben/vbencomponents": "workspace:*",
- "@vben/router": "workspace:*",
- "dayjs": "^1.11.7",
- "mockjs": "^1.1.0",
- "monaco-editor": "^0.34.1",
- "path-to-regexp": "^6.2.1",
- "pinia": "2.0.30",
- "vue": "3.2.47",
- "vue-demi": "^0.13.11",
- "vue-router": "^4.1.6"
- },
- "devDependencies": {
- "@config/css-preprocess": "workspace:*",
- "@config/vite": "workspace:*",
- "@types/mockjs": "^1.0.7",
- "@types/nprogress": "^0.2.0",
- "@vben/types": "workspace:*",
- "@vue/compiler-sfc": "3.2.47",
- "@vue/test-utils": "^2.2.9",
- "naive-ui": "^2.34.3",
- "typescript": "^4.9.5",
- "vite": "4.0.4",
- "vue-tsc": "^1.0.24"
- }
-}
diff --git a/apps/grid-admin/postcss.config.js b/apps/grid-admin/postcss.config.js
deleted file mode 100644
index db0f61f9..00000000
--- a/apps/grid-admin/postcss.config.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = require('@config/css-preprocess/postcss')
diff --git a/apps/grid-admin/public/favicon.ico b/apps/grid-admin/public/favicon.ico
deleted file mode 100644
index d92e0b8c4963f1ae81021bbed63e94c2699dea66..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 894
zcmZQzU<5(|0R|u`!H~hsz#zuJz@P!dKp_SNAO?x!2k(<*|Mp73(S^ghaCG}W3micV
zd6}gJRR66~2Cn|nK^;8mfr=prt{%vMt3Q887jFKoe=I;N;Of6uAgs8$R~xS7)?Ze*
z7G(86jaaP!YD8B5HAMw(#m^dPxRwit(0u_9G`M>FR>0MN^(+15GZl&w=KiVL1wn6T
z6kkZ}DT8x=g_XnA|4v>HSO33$3S12u1Fjy#fSC_upeciM
zfBAL8wfs)p0oU^X|9`j|GzMHfvK44*kh#ACs}Nd}*5GjrTo*z;*cWhd@)!pg85kNs
n7^oeNfqano0bpKwAP>a+3=AJYn4N*)2ax^&6#E0jpkM$1?7KMX
diff --git a/apps/grid-admin/public/logo.png b/apps/grid-admin/public/logo.png
deleted file mode 100644
index cd4c33d8b71f31d32aaed9fefe14f237b81e764f..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 4042
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
diff --git a/apps/grid-admin/src/apis/auth.ts b/apps/grid-admin/src/apis/auth.ts
deleted file mode 100644
index d144e2b6..00000000
--- a/apps/grid-admin/src/apis/auth.ts
+++ /dev/null
@@ -1,57 +0,0 @@
-import type { ErrorMessageMode } from '@vben/types'
-import { request } from '@vben/request'
-
-export interface RoleInfo {
- name: string
- value: string
-}
-
-export interface LoginParams {
- username: string
- password: string
-}
-
-export interface LoginResultModel {
- userId: string | number
- accessToken: string
- role: RoleInfo
-}
-
-export interface UserInfoModel {
- roles: RoleInfo[]
- userId: string | number
- username: string
- realName?: string
- avatar: string
- desc?: string
-}
-
-export function doLoginApi(
- params: LoginParams,
- mode: ErrorMessageMode = 'modal',
-) {
- return request.post(
- {
- url: '/login',
- params,
- },
- {
- errorMessageMode: mode,
- },
- )
-}
-
-export function getUserInfoApi() {
- return request.get(
- { url: '/getUserInfo' },
- { errorMessageMode: 'none' },
- )
-}
-
-export function getPermCode() {
- return request.get({ url: '/getPermCode' })
-}
-
-export function doLogoutApi() {
- return request.get({ url: '/logout' })
-}
diff --git a/apps/grid-admin/src/apis/menu.ts b/apps/grid-admin/src/apis/menu.ts
deleted file mode 100644
index 1ba0ccd0..00000000
--- a/apps/grid-admin/src/apis/menu.ts
+++ /dev/null
@@ -1,29 +0,0 @@
-import { request } from '@vben/request'
-
-export interface RouteItem {
- path: string
- component: any
- meta: any
- name?: string
- alias?: string | string[]
- redirect?: string
- caseSensitive?: boolean
- children?: RouteItem[]
-}
-
-/**
- * @description: Get menu return value
- */
-export type GetMenuListResultModel = RouteItem[]
-
-enum Api {
- GetMenuList = '/getMenuList',
-}
-
-/**
- * @description: Get user menu based on id
- */
-
-export const getMenuList = () => {
- return request.get({ url: Api.GetMenuList })
-}
diff --git a/apps/grid-admin/src/apis/sys/index.ts b/apps/grid-admin/src/apis/sys/index.ts
deleted file mode 100644
index d35d236a..00000000
--- a/apps/grid-admin/src/apis/sys/index.ts
+++ /dev/null
@@ -1,2 +0,0 @@
-export * from './menu'
-export * from './user'
diff --git a/apps/grid-admin/src/apis/sys/menu.ts b/apps/grid-admin/src/apis/sys/menu.ts
deleted file mode 100644
index 1ba0ccd0..00000000
--- a/apps/grid-admin/src/apis/sys/menu.ts
+++ /dev/null
@@ -1,29 +0,0 @@
-import { request } from '@vben/request'
-
-export interface RouteItem {
- path: string
- component: any
- meta: any
- name?: string
- alias?: string | string[]
- redirect?: string
- caseSensitive?: boolean
- children?: RouteItem[]
-}
-
-/**
- * @description: Get menu return value
- */
-export type GetMenuListResultModel = RouteItem[]
-
-enum Api {
- GetMenuList = '/getMenuList',
-}
-
-/**
- * @description: Get user menu based on id
- */
-
-export const getMenuList = () => {
- return request.get({ url: Api.GetMenuList })
-}
diff --git a/apps/grid-admin/src/apis/sys/user.ts b/apps/grid-admin/src/apis/sys/user.ts
deleted file mode 100644
index d18a0e04..00000000
--- a/apps/grid-admin/src/apis/sys/user.ts
+++ /dev/null
@@ -1,84 +0,0 @@
-import type { ErrorMessageMode } from '@vben/types'
-import { request } from '@vben/request'
-
-/**
- * @description: Login interface parameters
- */
-export interface LoginParams {
- username: string
- password: string
-}
-
-export interface RoleInfo {
- roleName: string
- value: string
-}
-
-/**
- * @description: Login interface return value
- */
-export interface LoginResultModel {
- userId: string | number
- token: string
- role: RoleInfo
-}
-
-/**
- * @description: Get user information return value
- */
-export interface GetUserInfoModel {
- roles: RoleInfo[]
- // 用户id
- userId: string | number
- // 用户名
- username: string
- // 真实名字
- realName: string
- // 头像
- avatar: string
- // 介绍
- desc?: string
-}
-
-enum Api {
- Login = '/login',
- Logout = '/logout',
- GetUserInfo = '/getUserInfo',
- GetPermCode = '/getPermCode',
-}
-
-/**
- * @description: user login api
- */
-export function loginApi(
- params: LoginParams,
- mode: ErrorMessageMode = 'modal',
-) {
- return request.post(
- {
- url: Api.Login,
- params,
- },
- {
- errorMessageMode: mode,
- },
- )
-}
-
-/**
- * @description: getUserInfo
- */
-export function getUserInfo() {
- return request.get(
- { url: Api.GetUserInfo },
- { errorMessageMode: 'none' },
- )
-}
-
-export function getPermCode() {
- return request.get({ url: Api.GetPermCode })
-}
-
-export function doLogout() {
- return request.get({ url: Api.Logout })
-}
diff --git a/apps/grid-admin/src/apis/system/model/useModel.ts b/apps/grid-admin/src/apis/system/model/useModel.ts
deleted file mode 100644
index 2415c911..00000000
--- a/apps/grid-admin/src/apis/system/model/useModel.ts
+++ /dev/null
@@ -1,38 +0,0 @@
-/**
- * @description: Login interface parameters
- */
-export interface LoginParams {
- username: string;
- password: string;
-}
-
-export interface RoleInfo {
- roleName: string;
- value: string;
-}
-
-/**
- * @description: Login interface return value
- */
-export interface LoginResultModel {
- userId: string | number;
- token: string;
- role: RoleInfo;
-}
-
-/**
- * @description: Get user information return value
- */
-export interface GetUserInfoModel {
- roles: RoleInfo[];
- // 用户id
- userId: string | number;
- // 用户名
- username: string;
- // 真实名字
- realName: string;
- // 头像
- avatar: string;
- // 介绍
- desc?: string;
-}
diff --git a/apps/grid-admin/src/app.vue b/apps/grid-admin/src/app.vue
deleted file mode 100644
index c171f3a0..00000000
--- a/apps/grid-admin/src/app.vue
+++ /dev/null
@@ -1,58 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/apps/grid-admin/src/assets/icons/download-count.svg b/apps/grid-admin/src/assets/icons/download-count.svg
deleted file mode 100644
index 1c951958..00000000
--- a/apps/grid-admin/src/assets/icons/download-count.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/apps/grid-admin/src/assets/icons/dynamic-avatar-1.svg b/apps/grid-admin/src/assets/icons/dynamic-avatar-1.svg
deleted file mode 100644
index e1553e50..00000000
--- a/apps/grid-admin/src/assets/icons/dynamic-avatar-1.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/apps/grid-admin/src/assets/icons/dynamic-avatar-2.svg b/apps/grid-admin/src/assets/icons/dynamic-avatar-2.svg
deleted file mode 100644
index c4c17223..00000000
--- a/apps/grid-admin/src/assets/icons/dynamic-avatar-2.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/apps/grid-admin/src/assets/icons/dynamic-avatar-3.svg b/apps/grid-admin/src/assets/icons/dynamic-avatar-3.svg
deleted file mode 100644
index 81145f9b..00000000
--- a/apps/grid-admin/src/assets/icons/dynamic-avatar-3.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/apps/grid-admin/src/assets/icons/dynamic-avatar-4.svg b/apps/grid-admin/src/assets/icons/dynamic-avatar-4.svg
deleted file mode 100644
index e586ed4e..00000000
--- a/apps/grid-admin/src/assets/icons/dynamic-avatar-4.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/apps/grid-admin/src/assets/icons/dynamic-avatar-5.svg b/apps/grid-admin/src/assets/icons/dynamic-avatar-5.svg
deleted file mode 100644
index 746e4b88..00000000
--- a/apps/grid-admin/src/assets/icons/dynamic-avatar-5.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/apps/grid-admin/src/assets/icons/dynamic-avatar-6.svg b/apps/grid-admin/src/assets/icons/dynamic-avatar-6.svg
deleted file mode 100644
index b2432f22..00000000
--- a/apps/grid-admin/src/assets/icons/dynamic-avatar-6.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/apps/grid-admin/src/assets/icons/moon.svg b/apps/grid-admin/src/assets/icons/moon.svg
deleted file mode 100644
index e6667f0d..00000000
--- a/apps/grid-admin/src/assets/icons/moon.svg
+++ /dev/null
@@ -1,16 +0,0 @@
-
-
diff --git a/apps/grid-admin/src/assets/icons/sun.svg b/apps/grid-admin/src/assets/icons/sun.svg
deleted file mode 100644
index a3997cbf..00000000
--- a/apps/grid-admin/src/assets/icons/sun.svg
+++ /dev/null
@@ -1,42 +0,0 @@
-
-
diff --git a/apps/grid-admin/src/assets/icons/total-sales.svg b/apps/grid-admin/src/assets/icons/total-sales.svg
deleted file mode 100644
index eff79640..00000000
--- a/apps/grid-admin/src/assets/icons/total-sales.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/apps/grid-admin/src/assets/icons/transaction.svg b/apps/grid-admin/src/assets/icons/transaction.svg
deleted file mode 100644
index 7ba9e2f0..00000000
--- a/apps/grid-admin/src/assets/icons/transaction.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/apps/grid-admin/src/assets/icons/visit-count.svg b/apps/grid-admin/src/assets/icons/visit-count.svg
deleted file mode 100644
index ba2a3061..00000000
--- a/apps/grid-admin/src/assets/icons/visit-count.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/apps/grid-admin/src/assets/images/header.jpg b/apps/grid-admin/src/assets/images/header.jpg
deleted file mode 100644
index 977584b6877cf4abc6c3e3a3d51bfbb0d474da74..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 16880
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
K^riIu-2VXLS6svZ
diff --git a/apps/grid-admin/src/assets/images/logo.png b/apps/grid-admin/src/assets/images/logo.png
deleted file mode 100644
index 16f2e7ab7c74552c5653652547ebce7adc4901dc..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 28304
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
diff --git a/apps/grid-admin/src/assets/svg/illustration.svg b/apps/grid-admin/src/assets/svg/illustration.svg
deleted file mode 100644
index b45215b0..00000000
--- a/apps/grid-admin/src/assets/svg/illustration.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/apps/grid-admin/src/assets/svg/login-bg-dark.svg b/apps/grid-admin/src/assets/svg/login-bg-dark.svg
deleted file mode 100644
index 888da7af..00000000
--- a/apps/grid-admin/src/assets/svg/login-bg-dark.svg
+++ /dev/null
@@ -1,19 +0,0 @@
-
diff --git a/apps/grid-admin/src/assets/svg/login-bg.svg b/apps/grid-admin/src/assets/svg/login-bg.svg
deleted file mode 100644
index 7b66bafc..00000000
--- a/apps/grid-admin/src/assets/svg/login-bg.svg
+++ /dev/null
@@ -1,17 +0,0 @@
-
diff --git a/apps/grid-admin/src/assets/svg/login-box-bg.svg b/apps/grid-admin/src/assets/svg/login-box-bg.svg
deleted file mode 100644
index ee7dbdc2..00000000
--- a/apps/grid-admin/src/assets/svg/login-box-bg.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/apps/grid-admin/src/assets/svg/net-error.svg b/apps/grid-admin/src/assets/svg/net-error.svg
deleted file mode 100644
index 81f20044..00000000
--- a/apps/grid-admin/src/assets/svg/net-error.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/apps/grid-admin/src/assets/svg/no-data.svg b/apps/grid-admin/src/assets/svg/no-data.svg
deleted file mode 100644
index 2b9f2570..00000000
--- a/apps/grid-admin/src/assets/svg/no-data.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/apps/grid-admin/src/config.ts b/apps/grid-admin/src/config.ts
deleted file mode 100644
index c73c4148..00000000
--- a/apps/grid-admin/src/config.ts
+++ /dev/null
@@ -1,26 +0,0 @@
-import type { StaticConfig, DynamicConfig } from '@vben/types'
-
-// github repo url
-export const GITHUB_URL = 'https://github.com/vbenjs/vben3'
-
-// vue-vben-admin-next-doc
-export const DOC_URL = 'https://vbenjs.github.io/vben3-doc/'
-
-// site url
-export const SITE_URL = 'http://vben.mufei88.com/'
-
-const dynamicConfig: DynamicConfig = {
- __: '',
-}
-
-// ! You need to clear the browser cache after the change
-const staticConfig: StaticConfig = {
- authType: 'frontend',
-
- // enable
- enableProgress: true,
-}
-
-export const config = { ...staticConfig, ...dynamicConfig }
-
-export const siteSetting = {GITHUB_URL, DOC_URL, SITE_URL}
diff --git a/apps/grid-admin/src/init-application.ts b/apps/grid-admin/src/init-application.ts
deleted file mode 100644
index e4e198eb..00000000
--- a/apps/grid-admin/src/init-application.ts
+++ /dev/null
@@ -1,70 +0,0 @@
-import { initRequest } from '@vben/request'
-import { useUserStoreWithout } from '@/store/user'
-import { useI18n, useLocale } from '@vben/locale'
-import { getGlobalConfig } from '@vben/utils'
-import { useConfigStore } from '@/store/config'
-import { initComp } from '@vben/vbencomponents'
-import { localeList } from '@vben/locale/src/config'
-import { useAppStore } from '@/store/modules/app'
-// To decouple the modules below `packages/*`, they no longer depend on each other
-// If the modules are heavily dependent on each other, you need to provide a decoupling method, and the caller will pass the parameters
-// Each module needs to provide `bridge` file as a decoupling method
-
-// 为了解耦 `packages/*` 下面各模块,不再相互依赖
-// 如果模块相互依赖严重,则需要对外提供解耦方式,由调用方去进行参数传递
-// 各个模块需要提供 `bridge` 文件作为解耦方式
-async function initPackages() {
- const _initRequest = async () => {
- const { apiUrl } = getGlobalConfig(import.meta.env)
- const { t } = useI18n()
- await initRequest(() => {
- return {
- apiUrl,
- getTokenFunction: () => {
- const userStore = useUserStoreWithout()
- return userStore.getAccessToken
- },
- errorFunction: null,
- noticeFunction: null,
- errorModalFunction: null,
- timeoutFunction: () => {
- const userStore = useUserStoreWithout()
- userStore.setAccessToken(undefined)
- userStore.logout(true)
- },
- unauthorizedFunction: (msg?: string) => {
- const userStore = useUserStoreWithout()
- userStore.setAccessToken(undefined)
- userStore.logout(true)
- return msg || t('sys.api.errMsg401')
- },
- handleErrorFunction: (msg, mode) => {
- if (mode === 'modal') {
- Modal.error({ title: t('sys.api.errorTip'), content: msg })
- } else if (mode === 'message') {
- message.error(msg)
- }
- },
- }
- })
- }
-
- const _initComp = async () => {
- await initComp(() => {
- return {
- useLocale,
- localeList,
- useAppStore,
- useConfigStore,
- }
- })
-
- await Promise.all([_initRequest(), _initComp()])
- }
-}
-
-export async function initApplication() {
- // ! Need to pay attention to the timing of execution
- // ! 需要注意调用时机
- await initPackages()
-}
diff --git a/apps/grid-admin/src/layout/components/app/AppProvider.tsx b/apps/grid-admin/src/layout/components/app/AppProvider.tsx
deleted file mode 100644
index a6f328ff..00000000
--- a/apps/grid-admin/src/layout/components/app/AppProvider.tsx
+++ /dev/null
@@ -1,46 +0,0 @@
-import {
- createMediaPrefersColorSchemeListen,
- createBreakpointListen,
-} from '@vben/hooks'
-import { namespace } from '@/setting'
-import { defineComponent, toRefs, ref } from 'vue'
-import { createAppProviderContext } from '@vben/hooks'
-import { useMsg, useNotice } from '@vben/vbencomponents'
-import { setMsg, setNoice } from '@vben/request'
-
-const props = {
- /**
- * class style prefix
- */
- prefixCls: { type: String, default: namespace },
-}
-
-export default defineComponent({
- name: 'AppProvider',
- inheritAttrs: false,
- props,
- setup(props, { slots }) {
- const isMobile = ref(false)
- //注册msg以及notice,方便全局使用
- const msg = useMsg()
- const notice = useNotice()
- setMsg(msg)
- setNoice(notice)
- // Monitor screen breakpoint information changes
- createBreakpointListen(({ screenMap, sizeEnum, width }) => {
- const lgWidth = screenMap.get(sizeEnum.LG)
- if (lgWidth) {
- isMobile.value = width.value - 1 < lgWidth
- }
- })
- // Listen for system theme changes
- createMediaPrefersColorSchemeListen()
-
- const { prefixCls } = toRefs(props)
-
- // Inject variables into the global
- createAppProviderContext({ prefixCls, isMobile })
-
- return () => slots.default?.()
- },
-})
diff --git a/apps/grid-admin/src/layout/components/logo.vue b/apps/grid-admin/src/layout/components/logo.vue
deleted file mode 100644
index d27bc974..00000000
--- a/apps/grid-admin/src/layout/components/logo.vue
+++ /dev/null
@@ -1,64 +0,0 @@
-
-
-
-
-
-
- {{ title }}
-
-
-
-
-
diff --git a/apps/grid-admin/src/layout/components/useLockPage.ts b/apps/grid-admin/src/layout/components/useLockPage.ts
deleted file mode 100644
index 2d7ed1e5..00000000
--- a/apps/grid-admin/src/layout/components/useLockPage.ts
+++ /dev/null
@@ -1,66 +0,0 @@
-import { computed, onUnmounted, watchEffect } from 'vue'
-import { useThrottleFn } from '@vben/utils'
-import { useLockStore } from '@/store/lock'
-import { useUserStore } from '@/store/user'
-
-export function useLockPage() {
- const lockStore = useLockStore()
- const userStore = useUserStore()
-
- let timeId: TimeoutHandle
-
- function clear(): void {
- window.clearTimeout(timeId)
- }
-
- function resetCalcLockTimeout(): void {
- // not login
- if (!userStore.getToken) {
- clear()
- return
- }
- const lockTime = 0
- if (!lockTime || lockTime < 1) {
- clear()
- return
- }
- clear()
-
- timeId = setTimeout(() => {
- lockPage()
- }, lockTime * 60 * 1000)
- }
-
- function lockPage(): void {
- lockStore.setLockInfo({
- isLock: true,
- pwd: undefined,
- })
- }
-
- watchEffect((onClean) => {
- if (userStore.getToken) {
- resetCalcLockTimeout()
- } else {
- clear()
- }
- onClean(() => {
- clear()
- })
- })
-
- onUnmounted(() => {
- clear()
- })
-
- const keyupFn = useThrottleFn(resetCalcLockTimeout, 2000)
-
- return computed(() => {
- if (0) {
- return { onKeyup: keyupFn, onMousemove: keyupFn }
- } else {
- clear()
- return {}
- }
- })
-}
diff --git a/apps/grid-admin/src/layout/feature/index.vue b/apps/grid-admin/src/layout/feature/index.vue
deleted file mode 100644
index 528bc88b..00000000
--- a/apps/grid-admin/src/layout/feature/index.vue
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-
-
-
-
diff --git a/apps/grid-admin/src/layout/index.vue b/apps/grid-admin/src/layout/index.vue
deleted file mode 100644
index d460f8f5..00000000
--- a/apps/grid-admin/src/layout/index.vue
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
-
-
-
-
-
-
-
diff --git a/apps/grid-admin/src/logics/mitt/routeChange.ts b/apps/grid-admin/src/logics/mitt/routeChange.ts
deleted file mode 100644
index 0c4e3571..00000000
--- a/apps/grid-admin/src/logics/mitt/routeChange.ts
+++ /dev/null
@@ -1,30 +0,0 @@
-/**
- * Used to monitor routing changes to change the status of menus and tabs. There is no need to monitor the route, because the route status change is affected by the page rendering time, which will be slow
- */
-
-import type { RouteLocationNormalized } from 'vue-router';
-import { getRawRoute, mitt } from "@vben/utils";
-
-const emitter = mitt();
-
-const key = Symbol();
-
-let lastChangeTab: RouteLocationNormalized;
-
-export function setRouteChange(lastChangeRoute: RouteLocationNormalized) {
- const r = getRawRoute(lastChangeRoute);
- emitter.emit(key, r);
- lastChangeTab = r;
-}
-
-export function listenerRouteChange(
- callback: (route: RouteLocationNormalized) => void,
- immediate = true,
-) {
- emitter.on(key, callback);
- immediate && lastChangeTab && callback(lastChangeTab);
-}
-
-export function removeTabChangeListener() {
- emitter.clear();
-}
diff --git a/apps/grid-admin/src/main.ts b/apps/grid-admin/src/main.ts
deleted file mode 100644
index e9d2445a..00000000
--- a/apps/grid-admin/src/main.ts
+++ /dev/null
@@ -1,37 +0,0 @@
-import '@vben/styles'
-// import 'ant-design-vue/dist/antd.variable.css'
-import 'virtual:svg-icons-register'
-import App from './app.vue'
-import { createApp } from 'vue'
-import { InitRouter } from '@vben/router'
-import { setupRouteGuard } from '@/router/guard'
-import { setupI18n } from '@vben/locale'
-import { setupPinia } from '@vben/stores'
-import { initApplication } from './init-application'
-import { registerComponents } from '../init-components'
-;(async () => {
- const app = createApp(App)
-
- setupPinia(app)
-
- await registerComponents(app)
-
- await initApplication()
- // Register Global Components
-
- // Multilingual configuration
- // Asynchronous case: language files may be obtained from the server side
- await setupI18n(app)
- // Init Router
- const router = InitRouter(import.meta.env.VITE_PUBLIC_PATH)
- app.use(router)
- await setupRouteGuard()
- await router.isReady()
- app.mount('#app')
- // When Closing mock, Tree Shaking `mockjs` dep
- if (__VITE_USE_MOCK__) {
- import('../mock/_mock-server').then(({ setupProdMockServer }) =>
- setupProdMockServer(),
- )
- }
-})()
diff --git a/apps/grid-admin/src/pages/dashboard/analysis/index.vue b/apps/grid-admin/src/pages/dashboard/analysis/index.vue
deleted file mode 100644
index ea15ff2c..00000000
--- a/apps/grid-admin/src/pages/dashboard/analysis/index.vue
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
- analysis
-
diff --git a/apps/grid-admin/src/pages/dashboard/workbench/index.vue b/apps/grid-admin/src/pages/dashboard/workbench/index.vue
deleted file mode 100644
index 96ac82c0..00000000
--- a/apps/grid-admin/src/pages/dashboard/workbench/index.vue
+++ /dev/null
@@ -1 +0,0 @@
-workbench
diff --git a/apps/grid-admin/src/pages/demo/Card.vue b/apps/grid-admin/src/pages/demo/Card.vue
deleted file mode 100644
index 2a70d82a..00000000
--- a/apps/grid-admin/src/pages/demo/Card.vue
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
diff --git a/apps/grid-admin/src/pages/demo/Draggable.vue b/apps/grid-admin/src/pages/demo/Draggable.vue
deleted file mode 100644
index 28be7eb1..00000000
--- a/apps/grid-admin/src/pages/demo/Draggable.vue
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
- 拖拽
-
-
diff --git a/apps/grid-admin/src/pages/demo/Form.vue b/apps/grid-admin/src/pages/demo/Form.vue
deleted file mode 100644
index 229db5c3..00000000
--- a/apps/grid-admin/src/pages/demo/Form.vue
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
diff --git a/apps/grid-admin/src/pages/demo/Table.vue b/apps/grid-admin/src/pages/demo/Table.vue
deleted file mode 100644
index 81dde2a3..00000000
--- a/apps/grid-admin/src/pages/demo/Table.vue
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
diff --git a/apps/grid-admin/src/pages/demo/editor/monaco-editor.vue b/apps/grid-admin/src/pages/demo/editor/monaco-editor.vue
deleted file mode 100644
index c66a9f90..00000000
--- a/apps/grid-admin/src/pages/demo/editor/monaco-editor.vue
+++ /dev/null
@@ -1,18 +0,0 @@
-
-
-
-
diff --git a/apps/grid-admin/src/pages/demo/page/index.vue b/apps/grid-admin/src/pages/demo/page/index.vue
deleted file mode 100644
index 5db5b320..00000000
--- a/apps/grid-admin/src/pages/demo/page/index.vue
+++ /dev/null
@@ -1,4 +0,0 @@
-
-PageTest
-
-
diff --git a/apps/grid-admin/src/pages/demo/table/BasicTable.vue b/apps/grid-admin/src/pages/demo/table/BasicTable.vue
deleted file mode 100644
index 2ce0dfc9..00000000
--- a/apps/grid-admin/src/pages/demo/table/BasicTable.vue
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
diff --git a/apps/grid-admin/src/pages/sys/exception/index.vue b/apps/grid-admin/src/pages/sys/exception/index.vue
deleted file mode 100644
index 8085eb6c..00000000
--- a/apps/grid-admin/src/pages/sys/exception/index.vue
+++ /dev/null
@@ -1,167 +0,0 @@
-
-
diff --git a/apps/grid-admin/src/pages/sys/iframe/FrameBlank.vue b/apps/grid-admin/src/pages/sys/iframe/FrameBlank.vue
deleted file mode 100644
index 7b8b46cb..00000000
--- a/apps/grid-admin/src/pages/sys/iframe/FrameBlank.vue
+++ /dev/null
@@ -1,3 +0,0 @@
-
-
-
diff --git a/apps/grid-admin/src/pages/sys/lock/index.vue b/apps/grid-admin/src/pages/sys/lock/index.vue
deleted file mode 100644
index 5195a055..00000000
--- a/apps/grid-admin/src/pages/sys/lock/index.vue
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
-
-
-
-
diff --git a/apps/grid-admin/src/pages/sys/lock/lock-page.vue b/apps/grid-admin/src/pages/sys/lock/lock-page.vue
deleted file mode 100644
index 65679232..00000000
--- a/apps/grid-admin/src/pages/sys/lock/lock-page.vue
+++ /dev/null
@@ -1,221 +0,0 @@
-
-
-
-
-
-
- {{ t('sys.lock.unlock') }}
-
-
-
-
- {{ hour }}
-
- {{ meridiem }}
-
-
-
- {{ minute }}
-
-
-
-