fix(projects): 修复页面切换时导致的溢出滚动条

This commit is contained in:
Soybean 2022-05-10 23:22:24 +08:00
parent a0c405dadd
commit e0233061d3
6 changed files with 104 additions and 82 deletions

View File

@ -53,19 +53,19 @@ Soybean Admin 是一个基于 Vue3、Vite、TypeScript、Naive UI 的免费中
- [x] 引入ECharts替换AntV G2Plot - [x] 引入ECharts替换AntV G2Plot
- [ ] 多页签同一页面支持多个Tab(应用场景不同query参数的详情页面在不同tab展示) - [ ] 多页签同一页面支持多个Tab(应用场景不同query参数的详情页面在不同tab展示)
- [ ] 缓存主题配置 - [ ] 缓存主题配置
- [ ] 最近功能的有关文档更新 - [ ] 添加锁屏组件、全局Iframe组件
- [ ] 性能优化(优化递归函数) - [ ] 性能优化(优化递归函数)
- [ ] 精简版(新分支thin) - [ ] 精简版(新分支thin)
- [ ] 文档完善
- [ ] 表单、表格示例 - [ ] 表单、表格示例
- [ ] 添加锁屏组件、全局Iframe组件
- [ ] 示例页面完善 - [ ] 示例页面完善
- [ ] 其他UI版本
- [ ] element-plus版本 - [ ] element-plus版本
- [ ] 其他UI版本
- [ ] soybean-admin cli工具(选择不同UI) - [ ] soybean-admin cli工具(选择不同UI)
- [ ] 前端可视化创建路由页面
- [ ] soybean-admin 后台服务java版: [soybean-admin-java](https://github.com/honghuangdc/soybean-admin-java) - [ ] soybean-admin 后台服务java版: [soybean-admin-java](https://github.com/honghuangdc/soybean-admin-java)
- [ ] soybean-admin 后台服务go版: [soybean-admin-go](https://github.com/honghuangdc/soybean-admin-go) - [ ] soybean-admin 后台服务go版: [soybean-admin-go](https://github.com/honghuangdc/soybean-admin-go)
- [ ] soybean-admin 后台服务nodejs版: [soybean-admin-nestjs](https://github.com/honghuangdc/soybean-admin-nestjs) - [ ] soybean-admin 后台服务nodejs版: [soybean-admin-nestjs](https://github.com/honghuangdc/soybean-admin-nestjs)
- [ ] 前端可视化创建路由页面
## 安装使用 ## 安装使用

View File

@ -27,7 +27,7 @@
}, },
"dependencies": { "dependencies": {
"@better-scroll/core": "^2.4.2", "@better-scroll/core": "^2.4.2",
"@soybeanjs/vue-admin-layout": "^1.0.3", "@soybeanjs/vue-admin-layout": "^1.0.4",
"@soybeanjs/vue-admin-tab": "^1.0.1", "@soybeanjs/vue-admin-tab": "^1.0.1",
"@vueuse/core": "^8.4.2", "@vueuse/core": "^8.4.2",
"axios": "^0.27.2", "axios": "^0.27.2",
@ -54,15 +54,15 @@
"@amap/amap-jsapi-types": "^0.0.8", "@amap/amap-jsapi-types": "^0.0.8",
"@commitlint/cli": "^16.2.4", "@commitlint/cli": "^16.2.4",
"@commitlint/config-conventional": "^16.2.4", "@commitlint/config-conventional": "^16.2.4",
"@iconify/json": "^2.1.39", "@iconify/json": "^2.1.40",
"@iconify/vue": "^3.2.1", "@iconify/vue": "^3.2.1",
"@types/bmapgl": "^0.0.5", "@types/bmapgl": "^0.0.5",
"@types/crypto-js": "^4.1.1", "@types/crypto-js": "^4.1.1",
"@types/node": "^17.0.31", "@types/node": "^17.0.31",
"@types/qs": "^6.9.7", "@types/qs": "^6.9.7",
"@types/ua-parser-js": "^0.7.36", "@types/ua-parser-js": "^0.7.36",
"@typescript-eslint/eslint-plugin": "^5.22.0", "@typescript-eslint/eslint-plugin": "^5.23.0",
"@typescript-eslint/parser": "^5.22.0", "@typescript-eslint/parser": "^5.23.0",
"@vitejs/plugin-vue": "^2.3.2", "@vitejs/plugin-vue": "^2.3.2",
"@vitejs/plugin-vue-jsx": "^1.3.10", "@vitejs/plugin-vue-jsx": "^1.3.10",
"@vue/eslint-config-prettier": "^7.0.0", "@vue/eslint-config-prettier": "^7.0.0",
@ -95,7 +95,7 @@
"vite-plugin-compression": "^0.5.1", "vite-plugin-compression": "^0.5.1",
"vite-plugin-html": "^3.2.0", "vite-plugin-html": "^3.2.0",
"vite-plugin-mock": "^2.9.6", "vite-plugin-mock": "^2.9.6",
"vue-tsc": "^0.34.11", "vue-tsc": "^0.34.12",
"vueuc": "^0.4.32" "vueuc": "^0.4.32"
} }
} }

View File

@ -5,17 +5,17 @@ specifiers:
'@better-scroll/core': ^2.4.2 '@better-scroll/core': ^2.4.2
'@commitlint/cli': ^16.2.4 '@commitlint/cli': ^16.2.4
'@commitlint/config-conventional': ^16.2.4 '@commitlint/config-conventional': ^16.2.4
'@iconify/json': ^2.1.39 '@iconify/json': ^2.1.40
'@iconify/vue': ^3.2.1 '@iconify/vue': ^3.2.1
'@soybeanjs/vue-admin-layout': ^1.0.3 '@soybeanjs/vue-admin-layout': ^1.0.4
'@soybeanjs/vue-admin-tab': ^1.0.1 '@soybeanjs/vue-admin-tab': ^1.0.1
'@types/bmapgl': ^0.0.5 '@types/bmapgl': ^0.0.5
'@types/crypto-js': ^4.1.1 '@types/crypto-js': ^4.1.1
'@types/node': ^17.0.31 '@types/node': ^17.0.31
'@types/qs': ^6.9.7 '@types/qs': ^6.9.7
'@types/ua-parser-js': ^0.7.36 '@types/ua-parser-js': ^0.7.36
'@typescript-eslint/eslint-plugin': ^5.22.0 '@typescript-eslint/eslint-plugin': ^5.23.0
'@typescript-eslint/parser': ^5.22.0 '@typescript-eslint/parser': ^5.23.0
'@vitejs/plugin-vue': ^2.3.2 '@vitejs/plugin-vue': ^2.3.2
'@vitejs/plugin-vue-jsx': ^1.3.10 '@vitejs/plugin-vue-jsx': ^1.3.10
'@vue/eslint-config-prettier': ^7.0.0 '@vue/eslint-config-prettier': ^7.0.0
@ -66,14 +66,14 @@ specifiers:
vite-plugin-mock: ^2.9.6 vite-plugin-mock: ^2.9.6
vue: 3.2.33 vue: 3.2.33
vue-router: ^4.0.15 vue-router: ^4.0.15
vue-tsc: ^0.34.11 vue-tsc: ^0.34.12
vueuc: ^0.4.32 vueuc: ^0.4.32
wangeditor: ^4.7.15 wangeditor: ^4.7.15
xgplayer: ^2.31.6 xgplayer: ^2.31.6
dependencies: dependencies:
'@better-scroll/core': 2.4.2 '@better-scroll/core': 2.4.2
'@soybeanjs/vue-admin-layout': 1.0.3_vue@3.2.33 '@soybeanjs/vue-admin-layout': 1.0.4_vue@3.2.33
'@soybeanjs/vue-admin-tab': 1.0.1_vue@3.2.33 '@soybeanjs/vue-admin-tab': 1.0.1_vue@3.2.33
'@vueuse/core': 8.4.2_vue@3.2.33 '@vueuse/core': 8.4.2_vue@3.2.33
axios: 0.27.2 axios: 0.27.2
@ -100,15 +100,15 @@ devDependencies:
'@amap/amap-jsapi-types': 0.0.8 '@amap/amap-jsapi-types': 0.0.8
'@commitlint/cli': 16.2.4 '@commitlint/cli': 16.2.4
'@commitlint/config-conventional': 16.2.4 '@commitlint/config-conventional': 16.2.4
'@iconify/json': 2.1.39 '@iconify/json': 2.1.40
'@iconify/vue': 3.2.1_vue@3.2.33 '@iconify/vue': 3.2.1_vue@3.2.33
'@types/bmapgl': 0.0.5 '@types/bmapgl': 0.0.5
'@types/crypto-js': 4.1.1 '@types/crypto-js': 4.1.1
'@types/node': 17.0.31 '@types/node': 17.0.31
'@types/qs': 6.9.7 '@types/qs': 6.9.7
'@types/ua-parser-js': 0.7.36 '@types/ua-parser-js': 0.7.36
'@typescript-eslint/eslint-plugin': 5.22.0_9817cbad956b8aa5d1e3d9ec99e4a1e4 '@typescript-eslint/eslint-plugin': 5.23.0_17b6d2ce7129f0b36f2c30ae592c16e7
'@typescript-eslint/parser': 5.22.0_eslint@8.15.0+typescript@4.6.4 '@typescript-eslint/parser': 5.23.0_eslint@8.15.0+typescript@4.6.4
'@vitejs/plugin-vue': 2.3.2_vite@2.9.8+vue@3.2.33 '@vitejs/plugin-vue': 2.3.2_vite@2.9.8+vue@3.2.33
'@vitejs/plugin-vue-jsx': 1.3.10 '@vitejs/plugin-vue-jsx': 1.3.10
'@vue/eslint-config-prettier': 7.0.0_eslint@8.15.0+prettier@2.6.2 '@vue/eslint-config-prettier': 7.0.0_eslint@8.15.0+prettier@2.6.2
@ -141,7 +141,7 @@ devDependencies:
vite-plugin-compression: 0.5.1_vite@2.9.8 vite-plugin-compression: 0.5.1_vite@2.9.8
vite-plugin-html: 3.2.0_vite@2.9.8 vite-plugin-html: 3.2.0_vite@2.9.8
vite-plugin-mock: 2.9.6_mockjs@1.1.0+vite@2.9.8 vite-plugin-mock: 2.9.6_mockjs@1.1.0+vite@2.9.8
vue-tsc: 0.34.11_typescript@4.6.4 vue-tsc: 0.34.12_typescript@4.6.4
vueuc: 0.4.32_vue@3.2.33 vueuc: 0.4.32_vue@3.2.33
packages: packages:
@ -706,8 +706,8 @@ packages:
engines: {node: '>=6.9.0'} engines: {node: '>=6.9.0'}
dev: true dev: true
/@iconify/json/2.1.39: /@iconify/json/2.1.40:
resolution: {integrity: sha512-iz5ZpJJ8e6s9H+6ZS+JJ8PSZOblDTsT6XFAnzF+kDavuixmWGsS+RJab2Vg4FGXogrrPqlcUmeV2fMgM9gSvKA==} resolution: {integrity: sha512-2G5zYwr4Fl9jQpjzmd+j/+u81pmvJ6SkxVjk+Al1UM4EyE+ByuODHSE2Srp85cEiM9v4YAzkkgVSkleufgPLeQ==}
dependencies: dependencies:
'@iconify/types': 1.1.0 '@iconify/types': 1.1.0
pathe: 0.2.0 pathe: 0.2.0
@ -828,8 +828,8 @@ packages:
picomatch: 2.3.1 picomatch: 2.3.1
dev: true dev: true
/@soybeanjs/vue-admin-layout/1.0.3_vue@3.2.33: /@soybeanjs/vue-admin-layout/1.0.4_vue@3.2.33:
resolution: {integrity: sha512-ech9q8XOkQ2rIxF5D2p4ikzV/S5yk08N2sWuQWC6QSzF3c8seG89i+Pl+k0NZRkKlnD3ntz9Ai0VqxET/jhMdw==} resolution: {integrity: sha512-G+Kh2XHYH1I0PgEmOXsBjO68VJLqPi5DnSeao+ZuLLTXIT3cuEFwtp7XNraOWzSLsqipmIHzemHuVxVsWU83cw==}
peerDependencies: peerDependencies:
'@vue/composition-api': ^1.4.6 '@vue/composition-api': ^1.4.6
vue: ^2.0.0 || >=3.0.0 vue: ^2.0.0 || >=3.0.0
@ -837,7 +837,7 @@ packages:
'@vue/composition-api': '@vue/composition-api':
optional: true optional: true
dependencies: dependencies:
'@unocss/reset': 0.31.17 '@unocss/reset': 0.33.2
colord: 2.9.2 colord: 2.9.2
css-render: 0.15.9 css-render: 0.15.9
vue: 3.2.33 vue: 3.2.33
@ -944,8 +944,8 @@ packages:
resolution: {integrity: sha512-N1rW+njavs70y2cApeIw1vLMYXRwfBy+7trgavGuuTfOd7j1Yh7QTRc/yqsPl6ncokt72ZXuxEU0PiCp9bSwNQ==} resolution: {integrity: sha512-N1rW+njavs70y2cApeIw1vLMYXRwfBy+7trgavGuuTfOd7j1Yh7QTRc/yqsPl6ncokt72ZXuxEU0PiCp9bSwNQ==}
dev: true dev: true
/@typescript-eslint/eslint-plugin/5.22.0_9817cbad956b8aa5d1e3d9ec99e4a1e4: /@typescript-eslint/eslint-plugin/5.23.0_17b6d2ce7129f0b36f2c30ae592c16e7:
resolution: {integrity: sha512-YCiy5PUzpAeOPGQ7VSGDEY2NeYUV1B0swde2e0HzokRsHBYjSdF6DZ51OuRZxVPHx0032lXGLvOMls91D8FXlg==} resolution: {integrity: sha512-hEcSmG4XodSLiAp1uxv/OQSGsDY6QN3TcRU32gANp+19wGE1QQZLRS8/GV58VRUoXhnkuJ3ZxNQ3T6Z6zM59DA==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
peerDependencies: peerDependencies:
'@typescript-eslint/parser': ^5.0.0 '@typescript-eslint/parser': ^5.0.0
@ -955,10 +955,10 @@ packages:
typescript: typescript:
optional: true optional: true
dependencies: dependencies:
'@typescript-eslint/parser': 5.22.0_eslint@8.15.0+typescript@4.6.4 '@typescript-eslint/parser': 5.23.0_eslint@8.15.0+typescript@4.6.4
'@typescript-eslint/scope-manager': 5.22.0 '@typescript-eslint/scope-manager': 5.23.0
'@typescript-eslint/type-utils': 5.22.0_eslint@8.15.0+typescript@4.6.4 '@typescript-eslint/type-utils': 5.23.0_eslint@8.15.0+typescript@4.6.4
'@typescript-eslint/utils': 5.22.0_eslint@8.15.0+typescript@4.6.4 '@typescript-eslint/utils': 5.23.0_eslint@8.15.0+typescript@4.6.4
debug: 4.3.4 debug: 4.3.4
eslint: 8.15.0 eslint: 8.15.0
functional-red-black-tree: 1.0.1 functional-red-black-tree: 1.0.1
@ -971,8 +971,8 @@ packages:
- supports-color - supports-color
dev: true dev: true
/@typescript-eslint/parser/5.22.0_eslint@8.15.0+typescript@4.6.4: /@typescript-eslint/parser/5.23.0_eslint@8.15.0+typescript@4.6.4:
resolution: {integrity: sha512-piwC4krUpRDqPaPbFaycN70KCP87+PC5WZmrWs+DlVOxxmF+zI6b6hETv7Quy4s9wbkV16ikMeZgXsvzwI3icQ==} resolution: {integrity: sha512-V06cYUkqcGqpFjb8ttVgzNF53tgbB/KoQT/iB++DOIExKmzI9vBJKjZKt/6FuV9c+zrDsvJKbJ2DOCYwX91cbw==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
peerDependencies: peerDependencies:
eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 eslint: ^6.0.0 || ^7.0.0 || ^8.0.0
@ -981,9 +981,9 @@ packages:
typescript: typescript:
optional: true optional: true
dependencies: dependencies:
'@typescript-eslint/scope-manager': 5.22.0 '@typescript-eslint/scope-manager': 5.23.0
'@typescript-eslint/types': 5.22.0 '@typescript-eslint/types': 5.23.0
'@typescript-eslint/typescript-estree': 5.22.0_typescript@4.6.4 '@typescript-eslint/typescript-estree': 5.23.0_typescript@4.6.4
debug: 4.3.4 debug: 4.3.4
eslint: 8.15.0 eslint: 8.15.0
typescript: 4.6.4 typescript: 4.6.4
@ -991,16 +991,16 @@ packages:
- supports-color - supports-color
dev: true dev: true
/@typescript-eslint/scope-manager/5.22.0: /@typescript-eslint/scope-manager/5.23.0:
resolution: {integrity: sha512-yA9G5NJgV5esANJCO0oF15MkBO20mIskbZ8ijfmlKIvQKg0ynVKfHZ15/nhAJN5m8Jn3X5qkwriQCiUntC9AbA==} resolution: {integrity: sha512-EhjaFELQHCRb5wTwlGsNMvzK9b8Oco4aYNleeDlNuL6qXWDF47ch4EhVNPh8Rdhf9tmqbN4sWDk/8g+Z/J8JVw==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
dependencies: dependencies:
'@typescript-eslint/types': 5.22.0 '@typescript-eslint/types': 5.23.0
'@typescript-eslint/visitor-keys': 5.22.0 '@typescript-eslint/visitor-keys': 5.23.0
dev: true dev: true
/@typescript-eslint/type-utils/5.22.0_eslint@8.15.0+typescript@4.6.4: /@typescript-eslint/type-utils/5.23.0_eslint@8.15.0+typescript@4.6.4:
resolution: {integrity: sha512-iqfLZIsZhK2OEJ4cQ01xOq3NaCuG5FQRKyHicA3xhZxMgaxQazLUHbH/B2k9y5i7l3+o+B5ND9Mf1AWETeMISA==} resolution: {integrity: sha512-iuI05JsJl/SUnOTXA9f4oI+/4qS/Zcgk+s2ir+lRmXI+80D8GaGwoUqs4p+X+4AxDolPpEpVUdlEH4ADxFy4gw==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
peerDependencies: peerDependencies:
eslint: '*' eslint: '*'
@ -1009,7 +1009,7 @@ packages:
typescript: typescript:
optional: true optional: true
dependencies: dependencies:
'@typescript-eslint/utils': 5.22.0_eslint@8.15.0+typescript@4.6.4 '@typescript-eslint/utils': 5.23.0_eslint@8.15.0+typescript@4.6.4
debug: 4.3.4 debug: 4.3.4
eslint: 8.15.0 eslint: 8.15.0
tsutils: 3.21.0_typescript@4.6.4 tsutils: 3.21.0_typescript@4.6.4
@ -1018,13 +1018,13 @@ packages:
- supports-color - supports-color
dev: true dev: true
/@typescript-eslint/types/5.22.0: /@typescript-eslint/types/5.23.0:
resolution: {integrity: sha512-T7owcXW4l0v7NTijmjGWwWf/1JqdlWiBzPqzAWhobxft0SiEvMJB56QXmeCQjrPuM8zEfGUKyPQr/L8+cFUBLw==} resolution: {integrity: sha512-NfBsV/h4dir/8mJwdZz7JFibaKC3E/QdeMEDJhiAE3/eMkoniZ7MjbEMCGXw6MZnZDMN3G9S0mH/6WUIj91dmw==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
dev: true dev: true
/@typescript-eslint/typescript-estree/5.22.0_typescript@4.6.4: /@typescript-eslint/typescript-estree/5.23.0_typescript@4.6.4:
resolution: {integrity: sha512-EyBEQxvNjg80yinGE2xdhpDYm41so/1kOItl0qrjIiJ1kX/L/L8WWGmJg8ni6eG3DwqmOzDqOhe6763bF92nOw==} resolution: {integrity: sha512-xE9e0lrHhI647SlGMl+m+3E3CKPF1wzvvOEWnuE3CCjjT7UiRnDGJxmAcVKJIlFgK6DY9RB98eLr1OPigPEOGg==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
peerDependencies: peerDependencies:
typescript: '*' typescript: '*'
@ -1032,8 +1032,8 @@ packages:
typescript: typescript:
optional: true optional: true
dependencies: dependencies:
'@typescript-eslint/types': 5.22.0 '@typescript-eslint/types': 5.23.0
'@typescript-eslint/visitor-keys': 5.22.0 '@typescript-eslint/visitor-keys': 5.23.0
debug: 4.3.4 debug: 4.3.4
globby: 11.1.0 globby: 11.1.0
is-glob: 4.0.3 is-glob: 4.0.3
@ -1044,16 +1044,16 @@ packages:
- supports-color - supports-color
dev: true dev: true
/@typescript-eslint/utils/5.22.0_eslint@8.15.0+typescript@4.6.4: /@typescript-eslint/utils/5.23.0_eslint@8.15.0+typescript@4.6.4:
resolution: {integrity: sha512-HodsGb037iobrWSUMS7QH6Hl1kppikjA1ELiJlNSTYf/UdMEwzgj0WIp+lBNb6WZ3zTwb0tEz51j0Wee3iJ3wQ==} resolution: {integrity: sha512-dbgaKN21drqpkbbedGMNPCtRPZo1IOUr5EI9Jrrh99r5UW5Q0dz46RKXeSBoPV+56R6dFKpbrdhgUNSJsDDRZA==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
peerDependencies: peerDependencies:
eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 eslint: ^6.0.0 || ^7.0.0 || ^8.0.0
dependencies: dependencies:
'@types/json-schema': 7.0.11 '@types/json-schema': 7.0.11
'@typescript-eslint/scope-manager': 5.22.0 '@typescript-eslint/scope-manager': 5.23.0
'@typescript-eslint/types': 5.22.0 '@typescript-eslint/types': 5.23.0
'@typescript-eslint/typescript-estree': 5.22.0_typescript@4.6.4 '@typescript-eslint/typescript-estree': 5.23.0_typescript@4.6.4
eslint: 8.15.0 eslint: 8.15.0
eslint-scope: 5.1.1 eslint-scope: 5.1.1
eslint-utils: 3.0.0_eslint@8.15.0 eslint-utils: 3.0.0_eslint@8.15.0
@ -1062,11 +1062,11 @@ packages:
- typescript - typescript
dev: true dev: true
/@typescript-eslint/visitor-keys/5.22.0: /@typescript-eslint/visitor-keys/5.23.0:
resolution: {integrity: sha512-DbgTqn2Dv5RFWluG88tn0pP6Ex0ROF+dpDO1TNNZdRtLjUr6bdznjA6f/qNqJLjd2PgguAES2Zgxh/JzwzETDg==} resolution: {integrity: sha512-Vd4mFNchU62sJB8pX19ZSPog05B0Y0CE2UxAZPT5k4iqhRYjPnqyY3woMxCd0++t9OTqkgjST+1ydLBi7e2Fvg==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
dependencies: dependencies:
'@typescript-eslint/types': 5.22.0 '@typescript-eslint/types': 5.23.0
eslint-visitor-keys: 3.3.0 eslint-visitor-keys: 3.3.0
dev: true dev: true
@ -1155,13 +1155,8 @@ packages:
'@unocss/preset-mini': 0.33.2 '@unocss/preset-mini': 0.33.2
dev: true dev: true
/@unocss/reset/0.31.17:
resolution: {integrity: sha512-g3+bqtM6LetSEJ5NYhi2P4vdP8yVLUQLbNZUdMtggcmHXTY08ISWaJKWmnHptrO13rtRoQ+l9gFc4Y7kRpD7NA==}
dev: false
/@unocss/reset/0.33.2: /@unocss/reset/0.33.2:
resolution: {integrity: sha512-ArrkGVr8OEfCHZ5p3IiCi2sv5qXRJZ45zzhCr6vuwP+7+RbgMiyDKhV5oYqIGu7oxFesgXxeD+nRe/v4tKL33g==} resolution: {integrity: sha512-ArrkGVr8OEfCHZ5p3IiCi2sv5qXRJZ45zzhCr6vuwP+7+RbgMiyDKhV5oYqIGu7oxFesgXxeD+nRe/v4tKL33g==}
dev: true
/@unocss/scope/0.33.2: /@unocss/scope/0.33.2:
resolution: {integrity: sha512-Pt267ptQwvdefq16dJxxCKTsWEiIdSfUfYv1KLsr7BQB/AFiiJLuRNn1rjUCrdYrLlA7riav9zdVk85x/u0PAg==} resolution: {integrity: sha512-Pt267ptQwvdefq16dJxxCKTsWEiIdSfUfYv1KLsr7BQB/AFiiJLuRNn1rjUCrdYrLlA7riav9zdVk85x/u0PAg==}
@ -1226,32 +1221,32 @@ packages:
vue: 3.2.33 vue: 3.2.33
dev: true dev: true
/@volar/code-gen/0.34.11: /@volar/code-gen/0.34.12:
resolution: {integrity: sha512-A4w+y+zP8qCDFyZ0KIm2oydRerp14a+IAYXro9wLt0LLvvqUGHEu/6y87uAj6TDqiX4OL/W8r1cEdhOJqFrBlA==} resolution: {integrity: sha512-5GAPsSjScnfMmMoh9qLW7CWQjjnT0fTUsPWnDMMjKIOqQF9J5mOyo7rprt1VzX63zwayqFfx7V8W3EVNhUCE3w==}
dependencies: dependencies:
'@volar/source-map': 0.34.11 '@volar/source-map': 0.34.12
dev: true dev: true
/@volar/source-map/0.34.11: /@volar/source-map/0.34.12:
resolution: {integrity: sha512-ZsNZqFPUDDL1y6hK0ok7EriFb3CnCeapTLQrziTAbi3yOhcE4yM4G59XtRzc1i9EB+RXscm9a6Q6TgzD5KvoeA==} resolution: {integrity: sha512-07imKws1cz9g3eo0VWXdioNfc1eCjqwK7GsxVuYSc7OCzKASt9PywUW+F39QGB9g2Kewof+PjCVIPeGqGRECTA==}
dev: true dev: true
/@volar/vue-code-gen/0.34.11: /@volar/vue-code-gen/0.34.12:
resolution: {integrity: sha512-r/tnLd1eyy/PI0fBUYU7hKXkCyHb0JqBidTiADrazzkYMraRcwL6JNLOj/D7Pk75W0ObzlMUfHJdrAuxKvAHRg==} resolution: {integrity: sha512-PFcft62eIvQvcB6H2Z88fouTu2JmYwimORziFGr3LlGriQUEVmyDtqddtb+E+j2wGChtLkh6hf1py94C5VpI/Q==}
dependencies: dependencies:
'@volar/code-gen': 0.34.11 '@volar/code-gen': 0.34.12
'@volar/source-map': 0.34.11 '@volar/source-map': 0.34.12
'@vue/compiler-core': 3.2.33 '@vue/compiler-core': 3.2.33
'@vue/compiler-dom': 3.2.33 '@vue/compiler-dom': 3.2.33
'@vue/shared': 3.2.33 '@vue/shared': 3.2.33
dev: true dev: true
/@volar/vue-typescript/0.34.11: /@volar/vue-typescript/0.34.12:
resolution: {integrity: sha512-pZkIeCPIjRRc/Oj9uxyOk6UvE43ecD71B/CSbmtiMU9sqrSwpP8cdDr/B/cqm1jwebkChTaa1gLodNHS8BOLuw==} resolution: {integrity: sha512-mY5cZ2OFOKt1HcCuoX1ViEsccltX3mdACk/FAjrSZTrilTdVHI1zkmQlrpCSnjmE1qowd8I6YoVt7THCaVrHdg==}
dependencies: dependencies:
'@volar/code-gen': 0.34.11 '@volar/code-gen': 0.34.12
'@volar/source-map': 0.34.11 '@volar/source-map': 0.34.12
'@volar/vue-code-gen': 0.34.11 '@volar/vue-code-gen': 0.34.12
'@vue/compiler-sfc': 3.2.33 '@vue/compiler-sfc': 3.2.33
'@vue/reactivity': 3.2.33 '@vue/reactivity': 3.2.33
dev: true dev: true
@ -1334,8 +1329,8 @@ packages:
eslint: ^6.2.0 || ^7.0.0 || ^8.0.0 eslint: ^6.2.0 || ^7.0.0 || ^8.0.0
eslint-plugin-vue: ^8.0.1 eslint-plugin-vue: ^8.0.1
dependencies: dependencies:
'@typescript-eslint/eslint-plugin': 5.22.0_9817cbad956b8aa5d1e3d9ec99e4a1e4 '@typescript-eslint/eslint-plugin': 5.23.0_17b6d2ce7129f0b36f2c30ae592c16e7
'@typescript-eslint/parser': 5.22.0_eslint@8.15.0+typescript@4.6.4 '@typescript-eslint/parser': 5.23.0_eslint@8.15.0+typescript@4.6.4
eslint: 8.15.0 eslint: 8.15.0
eslint-plugin-vue: 8.7.1_eslint@8.15.0 eslint-plugin-vue: 8.7.1_eslint@8.15.0
vue-eslint-parser: 8.3.0_eslint@8.15.0 vue-eslint-parser: 8.3.0_eslint@8.15.0
@ -6203,13 +6198,13 @@ packages:
vue: 3.2.33 vue: 3.2.33
dev: false dev: false
/vue-tsc/0.34.11_typescript@4.6.4: /vue-tsc/0.34.12_typescript@4.6.4:
resolution: {integrity: sha512-5NM4oR8U/c3mTlJ9aNXbXkAGT2bhq+FJpCgZDqOKPpCjW5QDx1BXPC+nrBXNMwg8TRL6pK4fl+x+hrK97Siq/Q==} resolution: {integrity: sha512-CmuqLXHEW5UvS8UpT2RYom5MzOWBD142PLXxDX0ARdZ/u1oLobA3od4XY2XZACQYCFCzjTvfD1H5wrWwiGwoUA==}
hasBin: true hasBin: true
peerDependencies: peerDependencies:
typescript: '*' typescript: '*'
dependencies: dependencies:
'@volar/vue-typescript': 0.34.11 '@volar/vue-typescript': 0.34.12
typescript: 4.6.4 typescript: 4.6.4
dev: true dev: true

View File

@ -10,6 +10,7 @@
:sider-width="siderWidth" :sider-width="siderWidth"
:sider-collapsed-width="siderCollapsedWidth" :sider-collapsed-width="siderCollapsedWidth"
:sider-collapse="app.siderCollapse" :sider-collapse="app.siderCollapse"
:add-main-overflow-hidden="addMainOverflowHidden"
:fixed-footer="theme.footer.fixed" :fixed-footer="theme.footer.fixed"
> >
<template #header> <template #header>
@ -21,7 +22,7 @@
<template #sider> <template #sider>
<global-sider /> <global-sider />
</template> </template>
<global-content /> <global-content @hide-main-overflow="setAddMainOverflowHidden" />
<template #footer> <template #footer>
<global-footer /> <global-footer />
</template> </template>
@ -33,11 +34,14 @@
import AdminLayout from '@soybeanjs/vue-admin-layout'; import AdminLayout from '@soybeanjs/vue-admin-layout';
import { useAppStore, useThemeStore } from '@/store'; import { useAppStore, useThemeStore } from '@/store';
import { useBasicLayout } from '@/composables'; import { useBasicLayout } from '@/composables';
import { useBoolean } from '@/hooks';
import { SettingDrawer, GlobalHeader, GlobalTab, GlobalSider, GlobalContent, GlobalFooter } from '../common'; import { SettingDrawer, GlobalHeader, GlobalTab, GlobalSider, GlobalContent, GlobalFooter } from '../common';
const app = useAppStore(); const app = useAppStore();
const theme = useThemeStore(); const theme = useThemeStore();
const { mode, headerProps, siderVisible, siderWidth, siderCollapsedWidth } = useBasicLayout(); const { mode, headerProps, siderVisible, siderWidth, siderCollapsedWidth } = useBasicLayout();
const { bool: addMainOverflowHidden, setBool: setAddMainOverflowHidden } = useBoolean();
</script> </script>
<style scoped></style> <style scoped></style>

View File

@ -5,7 +5,13 @@
> >
<router-view v-slot="{ Component, route }"> <router-view v-slot="{ Component, route }">
<div class="h-full"> <div class="h-full">
<transition :name="theme.page.animate ? theme.page.animateMode : undefined" mode="out-in" appear> <transition
:name="theme.pageAnimateMode"
mode="out-in"
:appear="true"
@before-leave="handleBeforeLeave"
@after-enter="handleAfterEnter"
>
<keep-alive :include="routeStore.cacheRoutes"> <keep-alive :include="routeStore.cacheRoutes">
<component :is="Component" v-if="app.reloadFlag" :key="route.path" /> <component :is="Component" v-if="app.reloadFlag" :key="route.path" />
</keep-alive> </keep-alive>
@ -23,12 +29,26 @@ interface Props {
showPadding?: boolean; showPadding?: boolean;
} }
interface Emits {
/** 禁止主体溢出 */
(e: 'hide-main-overflow', hidden: boolean): void;
}
withDefaults(defineProps<Props>(), { withDefaults(defineProps<Props>(), {
showPadding: true showPadding: true
}); });
const emit = defineEmits<Emits>();
const app = useAppStore(); const app = useAppStore();
const theme = useThemeStore(); const theme = useThemeStore();
const routeStore = useRouteStore(); const routeStore = useRouteStore();
function handleBeforeLeave() {
emit('hide-main-overflow', true);
}
function handleAfterEnter() {
emit('hide-main-overflow', false);
}
</script> </script>
<style scoped></style> <style scoped></style>

View File

@ -15,6 +15,9 @@ export const useThemeStore = defineStore('theme-store', {
/** naive-ui暗黑主题 */ /** naive-ui暗黑主题 */
naiveTheme(state) { naiveTheme(state) {
return state.darkMode ? darkTheme : undefined; return state.darkMode ? darkTheme : undefined;
},
pageAnimateMode(state) {
return state.page.animate ? state.page.animateMode : undefined;
} }
}, },
actions: { actions: {