diff --git a/package-lock.json b/package-lock.json
index 8c8b8ca..9366b11 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -18,7 +18,8 @@
"pinia-plugin-persistedstate": "^3.2.1",
"vue": "^3.3.13",
"vue-i18n": "^9.8.0",
- "vue-router": "^4.2.5"
+ "vue-router": "^4.2.5",
+ "vue-virtual-scroller": "^2.0.0-beta.8"
},
"devDependencies": {
"@rushstack/eslint-patch": "^1.6.1",
@@ -2463,6 +2464,11 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/mitt": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/mitt/-/mitt-2.1.0.tgz",
+ "integrity": "sha512-ILj2TpLiysu2wkBbWjAmww7TkZb65aiQO+DkVdUTBpBXq+MHYiETENkKFMtsJZX1Lf4pe4QOrTSjIfUwN5lRdg=="
+ },
"node_modules/ms": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
@@ -3458,6 +3464,22 @@
"vue": "^3.0.0"
}
},
+ "node_modules/vue-observe-visibility": {
+ "version": "2.0.0-alpha.1",
+ "resolved": "https://registry.npmjs.org/vue-observe-visibility/-/vue-observe-visibility-2.0.0-alpha.1.tgz",
+ "integrity": "sha512-flFbp/gs9pZniXR6fans8smv1kDScJ8RS7rEpMjhVabiKeq7Qz3D9+eGsypncjfIyyU84saU88XZ0zjbD6Gq/g==",
+ "peerDependencies": {
+ "vue": "^3.0.0"
+ }
+ },
+ "node_modules/vue-resize": {
+ "version": "2.0.0-alpha.1",
+ "resolved": "https://registry.npmjs.org/vue-resize/-/vue-resize-2.0.0-alpha.1.tgz",
+ "integrity": "sha512-7+iqOueLU7uc9NrMfrzbG8hwMqchfVfSzpVlCMeJQe4pyibqyoifDNbKTZvwxZKDvGkB+PdFeKvnGZMoEb8esg==",
+ "peerDependencies": {
+ "vue": "^3.0.0"
+ }
+ },
"node_modules/vue-router": {
"version": "4.2.5",
"resolved": "https://registry.npmjs.org/vue-router/-/vue-router-4.2.5.tgz",
@@ -3472,6 +3494,19 @@
"vue": "^3.2.0"
}
},
+ "node_modules/vue-virtual-scroller": {
+ "version": "2.0.0-beta.8",
+ "resolved": "https://registry.npmjs.org/vue-virtual-scroller/-/vue-virtual-scroller-2.0.0-beta.8.tgz",
+ "integrity": "sha512-b8/f5NQ5nIEBRTNi6GcPItE4s7kxNHw2AIHLtDp+2QvqdTjVN0FgONwX9cr53jWRgnu+HRLPaWDOR2JPI5MTfQ==",
+ "dependencies": {
+ "mitt": "^2.1.0",
+ "vue-observe-visibility": "^2.0.0-alpha.1",
+ "vue-resize": "^2.0.0-alpha.1"
+ },
+ "peerDependencies": {
+ "vue": "^3.2.0"
+ }
+ },
"node_modules/which": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
diff --git a/package.json b/package.json
index 2615c4f..108b260 100644
--- a/package.json
+++ b/package.json
@@ -19,7 +19,8 @@
"pinia-plugin-persistedstate": "^3.2.1",
"vue": "^3.3.13",
"vue-i18n": "^9.8.0",
- "vue-router": "^4.2.5"
+ "vue-router": "^4.2.5",
+ "vue-virtual-scroller": "^2.0.0-beta.8"
},
"devDependencies": {
"@rushstack/eslint-patch": "^1.6.1",
diff --git a/src/components/common-input/index.vue b/src/components/common-form-input/index.vue
similarity index 100%
rename from src/components/common-input/index.vue
rename to src/components/common-form-input/index.vue
diff --git a/src/components/index.js b/src/components/index.js
index e84abea..3bb1d08 100644
--- a/src/components/index.js
+++ b/src/components/index.js
@@ -1,5 +1,5 @@
import CommonIcon from '@/components/common-icon/index.vue'
-import CommonInput from '@/components/common-input/index.vue'
+import CommonInput from '@/components/common-form-input/index.vue'
import CommonMenu from '@/components/common-menu/index.vue'
import CommonMenuItem from '@/components/common-menu-item/index.vue'
diff --git a/src/main.js b/src/main.js
index 3a08662..ed89ba2 100644
--- a/src/main.js
+++ b/src/main.js
@@ -2,6 +2,8 @@ import { createApp } from 'vue'
import ElementPlus from 'element-plus'
import 'element-plus/dist/index.css'
import 'element-plus/theme-chalk/dark/css-vars.css'
+import VueVirtualScroller from 'vue-virtual-scroller'
+import 'vue-virtual-scroller/dist/vue-virtual-scroller.css'
import stores from '@/stores'
import icons from '@/icons'
import messages from '@/messages'
@@ -14,6 +16,7 @@ import './assets/main.css'
const app = createApp(App)
+app.use(VueVirtualScroller)
app.use(stores)
app.use(router)
app.use(ElementPlus)
diff --git a/src/messages/menu_cn.js b/src/messages/menu_cn.js
index bb9c45d..2d53d14 100644
--- a/src/messages/menu_cn.js
+++ b/src/messages/menu_cn.js
@@ -7,7 +7,9 @@ menu.label.roleManagement = '角色管理'
menu.label.authorityManagement = '权限管理'
menu.label.menuManagement = '菜单管理'
menu.label.toolsManagement = '工具管理'
-menu.label.toolsIcons = '图标管理'
+menu.label.toolsIcons = '图标工具'
+menu.label.toolsForms = '表单工具'
+menu.label.toolsTables = '表格工具'
menu.label.errorPage = '错误页面'
menu.label.errorPage404 = '找不到页面'
menu.label.errorPage403 = '没有权限'
diff --git a/src/messages/menu_en.js b/src/messages/menu_en.js
index e7a10f3..0a890e7 100644
--- a/src/messages/menu_en.js
+++ b/src/messages/menu_en.js
@@ -8,6 +8,8 @@ menu.label.authorityManagement = 'Authority Management'
menu.label.menuManagement = 'Menu Management'
menu.label.toolsManagement = 'Tools'
menu.label.toolsIcons = 'Icons'
+menu.label.toolsForms = 'Forms'
+menu.label.toolsTables = 'Tables'
menu.label.errorPage = 'Error Page'
menu.label.errorPage404 = 'Not Found'
menu.label.errorPage403 = 'Access Denied'
diff --git a/src/route/ToolsRoutes.js b/src/route/ToolsRoutes.js
new file mode 100644
index 0000000..6ec84e1
--- /dev/null
+++ b/src/route/ToolsRoutes.js
@@ -0,0 +1,13 @@
+export default [{
+ path: 'icons',
+ name: 'icons',
+ component: () => import('@/views/tools/Icons.vue')
+}, {
+ path: 'forms',
+ name: 'forms',
+ component: () => import('@/views/tools/Forms.vue')
+}, {
+ path: 'tables',
+ name: 'tables',
+ component: () => import('@/views/tools/Tables.vue')
+}]
diff --git a/src/route/routes.js b/src/route/routes.js
index 182a54c..b4a5db4 100644
--- a/src/route/routes.js
+++ b/src/route/routes.js
@@ -1,6 +1,7 @@
import { createRouter, createWebHashHistory } from 'vue-router'
import HomeView from '@/views/HomeView.vue'
import AdminRoutes from '@/route/AdminRoutes'
+import ToolsRoutes from '@/route/ToolsRoutes'
const router = createRouter({
history: createWebHashHistory(import.meta.env.BASE_URL),
@@ -12,22 +13,19 @@ const router = createRouter({
children: [{
path: 'about',
name: 'about',
- component: () => import('@/views/AboutView.vue')
+ component: () => import('@/views/account/AboutView.vue')
}, {
path: 'personal',
name: 'personal',
component: () => import('@/views/account/PersonalInfo.vue')
- }, {
- path: 'icons',
- name: 'icons',
- component: () => import('@/views/Icons.vue')
},
{
path: '/:pathMatch(.*)*',
name: 'notFound',
component: () => import('@/views/404.vue')
},
- ...AdminRoutes
+ ...AdminRoutes,
+ ...ToolsRoutes
]
}
]
diff --git a/src/services/global/GlobalService.js b/src/services/global/GlobalService.js
index e4b7627..7803200 100644
--- a/src/services/global/GlobalService.js
+++ b/src/services/global/GlobalService.js
@@ -89,7 +89,7 @@ export const useBusinessMenus = () => {
},
{
index: '/admin/roles',
- icon: 'menu',
+ icon: 'GroupFilled',
labelKey: 'menu.label.roleManagement'
},
{
@@ -117,6 +117,16 @@ export const useBusinessMenus = () => {
index: '/icons',
icon: 'InsertEmoticonOutlined',
labelKey: 'menu.label.toolsIcons'
+ },
+ {
+ index: '/forms',
+ icon: 'TableRowsTwotone',
+ labelKey: 'menu.label.toolsForms'
+ },
+ {
+ index: '/tables',
+ icon: 'Grid',
+ labelKey: 'menu.label.toolsTables'
}
]
}])
diff --git a/src/views/Icons.vue b/src/views/Icons.vue
deleted file mode 100644
index 96bfb70..0000000
--- a/src/views/Icons.vue
+++ /dev/null
@@ -1,80 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/views/AboutView.vue b/src/views/account/AboutView.vue
similarity index 100%
rename from src/views/AboutView.vue
rename to src/views/account/AboutView.vue
diff --git a/src/views/tools/Forms.vue b/src/views/tools/Forms.vue
new file mode 100644
index 0000000..fc3f666
--- /dev/null
+++ b/src/views/tools/Forms.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 表单测试
+
+
+
+
diff --git a/src/views/tools/Icons.vue b/src/views/tools/Icons.vue
new file mode 100644
index 0000000..a48b738
--- /dev/null
+++ b/src/views/tools/Icons.vue
@@ -0,0 +1,92 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/tools/Tables.vue b/src/views/tools/Tables.vue
new file mode 100644
index 0000000..38038b2
--- /dev/null
+++ b/src/views/tools/Tables.vue
@@ -0,0 +1,13 @@
+
+
+
+
+ 表格测试
+
+
+
+