feat(projects): 菜单数据及组件接入
This commit is contained in:
parent
57e00e6417
commit
3226a724be
13
package.json
13
package.json
@ -26,7 +26,6 @@
|
||||
"naive-ui": "^2.18.2",
|
||||
"pinia": "^2.0.0-rc.4",
|
||||
"qs": "^6.10.1",
|
||||
"smoothscroll-polyfill": "^0.4.4",
|
||||
"vue": "^3.2.10",
|
||||
"vue-router": "^4.0.11"
|
||||
},
|
||||
@ -41,6 +40,14 @@
|
||||
"@types/smoothscroll-polyfill": "^0.3.1",
|
||||
"@typescript-eslint/eslint-plugin": "^4.31.1",
|
||||
"@typescript-eslint/parser": "^4.31.1",
|
||||
"@vicons/antd": "^0.11.0",
|
||||
"@vicons/carbon": "^0.11.0",
|
||||
"@vicons/fa": "^0.11.0",
|
||||
"@vicons/fluent": "^0.11.0",
|
||||
"@vicons/ionicons4": "^0.11.0",
|
||||
"@vicons/ionicons5": "^0.11.0",
|
||||
"@vicons/material": "^0.11.0",
|
||||
"@vicons/tabler": "^0.11.0",
|
||||
"@vitejs/plugin-vue": "^1.6.2",
|
||||
"@vue/compiler-sfc": "^3.2.11",
|
||||
"@vue/eslint-config-prettier": "^6.0.0",
|
||||
@ -60,9 +67,9 @@
|
||||
"patch-package": "^6.4.7",
|
||||
"postinstall-postinstall": "^2.1.0",
|
||||
"prettier": "^2.4.0",
|
||||
"sass": "^1.40.0",
|
||||
"sass": "^1.41.0",
|
||||
"typescript": "^4.4.3",
|
||||
"unplugin-icons": "^0.10.0",
|
||||
"unplugin-icons": "^0.11.1",
|
||||
"unplugin-vue-components": "^0.15.1",
|
||||
"vite": "^2.5.7",
|
||||
"vite-plugin-html": "^2.1.0",
|
||||
|
212
pnpm-lock.yaml
212
pnpm-lock.yaml
@ -11,6 +11,14 @@ specifiers:
|
||||
'@types/smoothscroll-polyfill': ^0.3.1
|
||||
'@typescript-eslint/eslint-plugin': ^4.31.1
|
||||
'@typescript-eslint/parser': ^4.31.1
|
||||
'@vicons/antd': ^0.11.0
|
||||
'@vicons/carbon': ^0.11.0
|
||||
'@vicons/fa': ^0.11.0
|
||||
'@vicons/fluent': ^0.11.0
|
||||
'@vicons/ionicons4': ^0.11.0
|
||||
'@vicons/ionicons5': ^0.11.0
|
||||
'@vicons/material': ^0.11.0
|
||||
'@vicons/tabler': ^0.11.0
|
||||
'@vitejs/plugin-vue': ^1.6.2
|
||||
'@vue/compiler-sfc': ^3.2.11
|
||||
'@vue/eslint-config-prettier': ^6.0.0
|
||||
@ -38,10 +46,9 @@ specifiers:
|
||||
postinstall-postinstall: ^2.1.0
|
||||
prettier: ^2.4.0
|
||||
qs: ^6.10.1
|
||||
sass: ^1.40.0
|
||||
smoothscroll-polyfill: ^0.4.4
|
||||
sass: ^1.41.0
|
||||
typescript: ^4.4.3
|
||||
unplugin-icons: ^0.10.0
|
||||
unplugin-icons: ^0.11.1
|
||||
unplugin-vue-components: ^0.15.1
|
||||
vite: ^2.5.7
|
||||
vite-plugin-html: ^2.1.0
|
||||
@ -60,7 +67,6 @@ dependencies:
|
||||
naive-ui: registry.nlark.com/naive-ui/2.18.2_vue@3.2.10
|
||||
pinia: registry.nlark.com/pinia/2.0.0-rc.4_typescript@4.4.3+vue@3.2.10
|
||||
qs: 6.10.1
|
||||
smoothscroll-polyfill: registry.nlark.com/smoothscroll-polyfill/0.4.4
|
||||
vue: registry.nlark.com/vue/3.2.10
|
||||
vue-router: registry.nlark.com/vue-router/4.0.11_vue@3.2.10
|
||||
|
||||
@ -75,6 +81,14 @@ devDependencies:
|
||||
'@types/smoothscroll-polyfill': registry.nlark.com/@types/smoothscroll-polyfill/0.3.1
|
||||
'@typescript-eslint/eslint-plugin': registry.nlark.com/@typescript-eslint/eslint-plugin/4.31.1_e2d3c88d378335c4183365c112128ce9
|
||||
'@typescript-eslint/parser': registry.nlark.com/@typescript-eslint/parser/4.31.1_eslint@7.32.0+typescript@4.4.3
|
||||
'@vicons/antd': registry.nlark.com/@vicons/antd/0.11.0
|
||||
'@vicons/carbon': registry.nlark.com/@vicons/carbon/0.11.0
|
||||
'@vicons/fa': registry.nlark.com/@vicons/fa/0.11.0
|
||||
'@vicons/fluent': registry.nlark.com/@vicons/fluent/0.11.0
|
||||
'@vicons/ionicons4': registry.nlark.com/@vicons/ionicons4/0.11.0
|
||||
'@vicons/ionicons5': registry.nlark.com/@vicons/ionicons5/0.11.0
|
||||
'@vicons/material': registry.nlark.com/@vicons/material/0.11.0
|
||||
'@vicons/tabler': registry.nlark.com/@vicons/tabler/0.11.0
|
||||
'@vitejs/plugin-vue': registry.nlark.com/@vitejs/plugin-vue/1.6.2_@vue+compiler-sfc@3.2.11
|
||||
'@vue/compiler-sfc': registry.nlark.com/@vue/compiler-sfc/3.2.11
|
||||
'@vue/eslint-config-prettier': 6.0.0_b4d73ff40db55d7af7de6f3602f2b630
|
||||
@ -94,9 +108,9 @@ devDependencies:
|
||||
patch-package: registry.nlark.com/patch-package/6.4.7
|
||||
postinstall-postinstall: registry.nlark.com/postinstall-postinstall/2.1.0
|
||||
prettier: registry.nlark.com/prettier/2.4.0
|
||||
sass: registry.nlark.com/sass/1.40.0
|
||||
sass: registry.nlark.com/sass/1.41.0
|
||||
typescript: registry.nlark.com/typescript/4.4.3
|
||||
unplugin-icons: registry.nlark.com/unplugin-icons/0.10.0_54da2e3458e54be8937824c348b2c77e
|
||||
unplugin-icons: registry.nlark.com/unplugin-icons/0.11.1_54da2e3458e54be8937824c348b2c77e
|
||||
unplugin-vue-components: registry.nlark.com/unplugin-vue-components/0.15.1_vite@2.5.7+vue@3.2.10
|
||||
vite: registry.nlark.com/vite/2.5.7
|
||||
vite-plugin-html: registry.nlark.com/vite-plugin-html/2.1.0_vite@2.5.7
|
||||
@ -917,11 +931,6 @@ packages:
|
||||
engines: {node: '>= 0.4'}
|
||||
dev: true
|
||||
|
||||
/is-number/7.0.0:
|
||||
resolution: {integrity: sha1-dTU0W4lnNNX4DE0GxQlVUnoU8Ss=, tarball: is-number/download/is-number-7.0.0.tgz}
|
||||
engines: {node: '>=0.12.0'}
|
||||
dev: true
|
||||
|
||||
/is-obj/1.0.1:
|
||||
resolution: {integrity: sha1-PkcprB9f3gJc19g6iW2rn09n2w8=, tarball: is-obj/download/is-obj-1.0.1.tgz}
|
||||
engines: {node: '>=0.10.0'}
|
||||
@ -2038,6 +2047,14 @@ packages:
|
||||
'@types/throttle-debounce': registry.nlark.com/@types/throttle-debounce/2.1.0
|
||||
dev: true
|
||||
|
||||
registry.nlark.com/@antfu/utils/0.3.0:
|
||||
resolution: {integrity: sha1-YwbEO1Kog72Olz4+2N1kJIQYvMQ=, registry: http://registry.npm.taobao.org/, tarball: https://registry.nlark.com/@antfu/utils/download/@antfu/utils-0.3.0.tgz}
|
||||
name: '@antfu/utils'
|
||||
version: 0.3.0
|
||||
dependencies:
|
||||
'@types/throttle-debounce': registry.nlark.com/@types/throttle-debounce/2.1.0
|
||||
dev: true
|
||||
|
||||
registry.nlark.com/@babel/code-frame/7.12.11:
|
||||
resolution: {integrity: sha1-9K1DWqJj25NbjxDyxVLSP7cWpj8=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/@babel/code-frame/download/@babel/code-frame-7.12.11.tgz}
|
||||
name: '@babel/code-frame'
|
||||
@ -2165,7 +2182,7 @@ packages:
|
||||
dev: true
|
||||
|
||||
registry.nlark.com/@commitlint/load/13.1.0:
|
||||
resolution: {integrity: sha1-1sm1R1UfIhZYbWwZZNk/kuewQnc=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/@commitlint/load/download/@commitlint/load-13.1.0.tgz}
|
||||
resolution: {integrity: sha1-1sm1R1UfIhZYbWwZZNk/kuewQnc=, registry: http://registry.npm.taobao.org/, tarball: https://registry.nlark.com/@commitlint/load/download/@commitlint/load-13.1.0.tgz}
|
||||
name: '@commitlint/load'
|
||||
version: 13.1.0
|
||||
engines: {node: '>=v12'}
|
||||
@ -2315,6 +2332,8 @@ packages:
|
||||
js-yaml: 3.14.1
|
||||
minimatch: 3.0.4
|
||||
strip-json-comments: 3.1.1
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
dev: true
|
||||
|
||||
registry.nlark.com/@humanwhocodes/config-array/0.5.0:
|
||||
@ -2326,6 +2345,8 @@ packages:
|
||||
'@humanwhocodes/object-schema': registry.nlark.com/@humanwhocodes/object-schema/1.2.0
|
||||
debug: registry.nlark.com/debug/4.3.2
|
||||
minimatch: 3.0.4
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
dev: true
|
||||
|
||||
registry.nlark.com/@humanwhocodes/object-schema/1.2.0:
|
||||
@ -2335,7 +2356,7 @@ packages:
|
||||
dev: true
|
||||
|
||||
registry.nlark.com/@iconify/json-tools/1.0.10:
|
||||
resolution: {integrity: sha1-2acFDbvouynWhNSz+URu0tC+o8w=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/@iconify/json-tools/download/@iconify/json-tools-1.0.10.tgz}
|
||||
resolution: {integrity: sha1-2acFDbvouynWhNSz+URu0tC+o8w=, registry: http://registry.npm.taobao.org/, tarball: https://registry.nlark.com/@iconify/json-tools/download/@iconify/json-tools-1.0.10.tgz}
|
||||
name: '@iconify/json-tools'
|
||||
version: 1.0.10
|
||||
dev: true
|
||||
@ -2525,7 +2546,7 @@ packages:
|
||||
dev: true
|
||||
|
||||
registry.nlark.com/@types/throttle-debounce/2.1.0:
|
||||
resolution: {integrity: sha1-HD32JL/Eti+ZLTASuExW1B6rN3Y=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/@types/throttle-debounce/download/@types/throttle-debounce-2.1.0.tgz}
|
||||
resolution: {integrity: sha1-HD32JL/Eti+ZLTASuExW1B6rN3Y=, registry: http://registry.npm.taobao.org/, tarball: https://registry.nlark.com/@types/throttle-debounce/download/@types/throttle-debounce-2.1.0.tgz}
|
||||
name: '@types/throttle-debounce'
|
||||
version: 2.1.0
|
||||
dev: true
|
||||
@ -2667,6 +2688,54 @@ packages:
|
||||
eslint-visitor-keys: registry.nlark.com/eslint-visitor-keys/2.1.0
|
||||
dev: true
|
||||
|
||||
registry.nlark.com/@vicons/antd/0.11.0:
|
||||
resolution: {integrity: sha1-PSiVLQKK7XEtymHLgdvbEUVMVUI=, registry: http://registry.npm.taobao.org/, tarball: https://registry.nlark.com/@vicons/antd/download/@vicons/antd-0.11.0.tgz}
|
||||
name: '@vicons/antd'
|
||||
version: 0.11.0
|
||||
dev: true
|
||||
|
||||
registry.nlark.com/@vicons/carbon/0.11.0:
|
||||
resolution: {integrity: sha1-UQ4B6IOnOx1DQ6PrHRAUFEZGOr4=, registry: http://registry.npm.taobao.org/, tarball: https://registry.nlark.com/@vicons/carbon/download/@vicons/carbon-0.11.0.tgz}
|
||||
name: '@vicons/carbon'
|
||||
version: 0.11.0
|
||||
dev: true
|
||||
|
||||
registry.nlark.com/@vicons/fa/0.11.0:
|
||||
resolution: {integrity: sha1-3GeAslt5Q3NOfHXXTfL0RDsFcq4=, registry: http://registry.npm.taobao.org/, tarball: https://registry.nlark.com/@vicons/fa/download/@vicons/fa-0.11.0.tgz}
|
||||
name: '@vicons/fa'
|
||||
version: 0.11.0
|
||||
dev: true
|
||||
|
||||
registry.nlark.com/@vicons/fluent/0.11.0:
|
||||
resolution: {integrity: sha1-hPPNolVTnLlvRcicFgHiiS15gm8=, registry: http://registry.npm.taobao.org/, tarball: https://registry.nlark.com/@vicons/fluent/download/@vicons/fluent-0.11.0.tgz}
|
||||
name: '@vicons/fluent'
|
||||
version: 0.11.0
|
||||
dev: true
|
||||
|
||||
registry.nlark.com/@vicons/ionicons4/0.11.0:
|
||||
resolution: {integrity: sha1-pg9erWYdRz8XEDrQBRzoKtdxu+Y=, registry: http://registry.npm.taobao.org/, tarball: https://registry.nlark.com/@vicons/ionicons4/download/@vicons/ionicons4-0.11.0.tgz}
|
||||
name: '@vicons/ionicons4'
|
||||
version: 0.11.0
|
||||
dev: true
|
||||
|
||||
registry.nlark.com/@vicons/ionicons5/0.11.0:
|
||||
resolution: {integrity: sha1-VBhb+lcqCd9wCU2xlU8ov78TY+0=, registry: http://registry.npm.taobao.org/, tarball: https://registry.nlark.com/@vicons/ionicons5/download/@vicons/ionicons5-0.11.0.tgz}
|
||||
name: '@vicons/ionicons5'
|
||||
version: 0.11.0
|
||||
dev: true
|
||||
|
||||
registry.nlark.com/@vicons/material/0.11.0:
|
||||
resolution: {integrity: sha1-LCCRIfP/akZFD0loOX32wwCN+NE=, registry: http://registry.npm.taobao.org/, tarball: https://registry.nlark.com/@vicons/material/download/@vicons/material-0.11.0.tgz}
|
||||
name: '@vicons/material'
|
||||
version: 0.11.0
|
||||
dev: true
|
||||
|
||||
registry.nlark.com/@vicons/tabler/0.11.0:
|
||||
resolution: {integrity: sha1-nrBXnADKowQMLBz55cDHa6EgT7M=, registry: http://registry.npm.taobao.org/, tarball: https://registry.nlark.com/@vicons/tabler/download/@vicons/tabler-0.11.0.tgz}
|
||||
name: '@vicons/tabler'
|
||||
version: 0.11.0
|
||||
dev: true
|
||||
|
||||
registry.nlark.com/@vitejs/plugin-vue/1.6.2_@vue+compiler-sfc@3.2.11:
|
||||
resolution: {integrity: sha1-QN/jFM/2ENTdAnoLTqKpOiV/P8k=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/@vitejs/plugin-vue/download/@vitejs/plugin-vue-1.6.2.tgz}
|
||||
id: registry.nlark.com/@vitejs/plugin-vue/1.6.2
|
||||
@ -3083,12 +3152,12 @@ packages:
|
||||
dev: true
|
||||
|
||||
registry.nlark.com/anymatch/3.1.2:
|
||||
resolution: {integrity: sha1-wFV8CWrzLxBhmPT04qODU343hxY=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/anymatch/download/anymatch-3.1.2.tgz}
|
||||
resolution: {integrity: sha1-wFV8CWrzLxBhmPT04qODU343hxY=, registry: http://registry.npm.taobao.org/, tarball: https://registry.nlark.com/anymatch/download/anymatch-3.1.2.tgz}
|
||||
name: anymatch
|
||||
version: 3.1.2
|
||||
engines: {node: '>= 8'}
|
||||
dependencies:
|
||||
normalize-path: 3.0.0
|
||||
normalize-path: registry.nlark.com/normalize-path/3.0.0
|
||||
picomatch: registry.nlark.com/picomatch/2.3.0
|
||||
dev: true
|
||||
|
||||
@ -3129,6 +3198,8 @@ packages:
|
||||
version: 0.21.4
|
||||
dependencies:
|
||||
follow-redirects: registry.nlark.com/follow-redirects/1.14.2
|
||||
transitivePeerDependencies:
|
||||
- debug
|
||||
dev: false
|
||||
|
||||
registry.nlark.com/babel-walk/3.0.0-canary-5:
|
||||
@ -3147,7 +3218,7 @@ packages:
|
||||
dev: true
|
||||
|
||||
registry.nlark.com/binary-extensions/2.2.0:
|
||||
resolution: {integrity: sha1-dfUC7q+f/eQvyYgpZFvk6na9ni0=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/binary-extensions/download/binary-extensions-2.2.0.tgz}
|
||||
resolution: {integrity: sha1-dfUC7q+f/eQvyYgpZFvk6na9ni0=, registry: http://registry.npm.taobao.org/, tarball: https://registry.nlark.com/binary-extensions/download/binary-extensions-2.2.0.tgz}
|
||||
name: binary-extensions
|
||||
version: 2.2.0
|
||||
engines: {node: '>=8'}
|
||||
@ -3168,6 +3239,15 @@ packages:
|
||||
concat-map: 0.0.1
|
||||
dev: true
|
||||
|
||||
registry.nlark.com/braces/3.0.2:
|
||||
resolution: {integrity: sha1-NFThpGLujVmeI23zNs2epPiv4Qc=, registry: http://registry.npm.taobao.org/, tarball: https://registry.nlark.com/braces/download/braces-3.0.2.tgz}
|
||||
name: braces
|
||||
version: 3.0.2
|
||||
engines: {node: '>=8'}
|
||||
dependencies:
|
||||
fill-range: registry.nlark.com/fill-range/7.0.1
|
||||
dev: true
|
||||
|
||||
registry.nlark.com/buffer-from/1.1.2:
|
||||
resolution: {integrity: sha1-KxRqb9cugLT1XSVfNe1Zo6mkG9U=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/buffer-from/download/buffer-from-1.1.2.tgz}
|
||||
name: buffer-from
|
||||
@ -3227,17 +3307,17 @@ packages:
|
||||
supports-color: registry.nlark.com/supports-color/7.2.0
|
||||
|
||||
registry.nlark.com/chokidar/3.5.2:
|
||||
resolution: {integrity: sha1-26OXb8rbAW9m/TZQIdkWANAcHnU=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/chokidar/download/chokidar-3.5.2.tgz?cache=0&sync_timestamp=1623763535523&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fchokidar%2Fdownload%2Fchokidar-3.5.2.tgz}
|
||||
resolution: {integrity: sha1-26OXb8rbAW9m/TZQIdkWANAcHnU=, registry: http://registry.npm.taobao.org/, tarball: https://registry.nlark.com/chokidar/download/chokidar-3.5.2.tgz}
|
||||
name: chokidar
|
||||
version: 3.5.2
|
||||
engines: {node: '>= 8.10.0'}
|
||||
dependencies:
|
||||
anymatch: registry.nlark.com/anymatch/3.1.2
|
||||
braces: 3.0.2
|
||||
braces: registry.nlark.com/braces/3.0.2
|
||||
glob-parent: registry.nlark.com/glob-parent/5.1.2
|
||||
is-binary-path: registry.nlark.com/is-binary-path/2.1.0
|
||||
is-glob: registry.nlark.com/is-glob/4.0.1
|
||||
normalize-path: 3.0.0
|
||||
normalize-path: registry.nlark.com/normalize-path/3.0.0
|
||||
readdirp: registry.nlark.com/readdirp/3.6.0
|
||||
optionalDependencies:
|
||||
fsevents: registry.nlark.com/fsevents/2.3.2
|
||||
@ -3826,6 +3906,8 @@ packages:
|
||||
table: registry.nlark.com/table/6.7.1
|
||||
text-table: 0.2.0
|
||||
v8-compile-cache: 2.3.0
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
dev: true
|
||||
|
||||
registry.nlark.com/espree/6.2.1:
|
||||
@ -3923,7 +4005,7 @@ packages:
|
||||
dev: true
|
||||
|
||||
registry.nlark.com/fill-range/7.0.1:
|
||||
resolution: {integrity: sha1-GRmmp8df44ssfHflGYU12prN2kA=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/fill-range/download/fill-range-7.0.1.tgz}
|
||||
resolution: {integrity: sha1-GRmmp8df44ssfHflGYU12prN2kA=, registry: http://registry.npm.taobao.org/, tarball: https://registry.nlark.com/fill-range/download/fill-range-7.0.1.tgz}
|
||||
name: fill-range
|
||||
version: 7.0.1
|
||||
engines: {node: '>=8'}
|
||||
@ -3968,6 +4050,11 @@ packages:
|
||||
name: follow-redirects
|
||||
version: 1.14.2
|
||||
engines: {node: '>=4.0'}
|
||||
peerDependencies:
|
||||
debug: '*'
|
||||
peerDependenciesMeta:
|
||||
debug:
|
||||
optional: true
|
||||
dev: false
|
||||
|
||||
registry.nlark.com/fs-extra/10.0.0:
|
||||
@ -4010,7 +4097,7 @@ packages:
|
||||
dev: true
|
||||
|
||||
registry.nlark.com/fsevents/2.3.2:
|
||||
resolution: {integrity: sha1-ilJveLj99GI7cJ4Ll1xSwkwC/Ro=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/fsevents/download/fsevents-2.3.2.tgz}
|
||||
resolution: {integrity: sha1-ilJveLj99GI7cJ4Ll1xSwkwC/Ro=, registry: http://registry.npm.taobao.org/, tarball: https://registry.nlark.com/fsevents/download/fsevents-2.3.2.tgz}
|
||||
name: fsevents
|
||||
version: 2.3.2
|
||||
engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
|
||||
@ -4263,7 +4350,7 @@ packages:
|
||||
dev: true
|
||||
|
||||
registry.nlark.com/is-binary-path/2.1.0:
|
||||
resolution: {integrity: sha1-6h9/O4DwZCNug0cPhsCcJU+0Wwk=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/is-binary-path/download/is-binary-path-2.1.0.tgz}
|
||||
resolution: {integrity: sha1-6h9/O4DwZCNug0cPhsCcJU+0Wwk=, registry: http://registry.npm.taobao.org/, tarball: https://registry.nlark.com/is-binary-path/download/is-binary-path-2.1.0.tgz}
|
||||
name: is-binary-path
|
||||
version: 2.1.0
|
||||
engines: {node: '>=8'}
|
||||
@ -4305,13 +4392,20 @@ packages:
|
||||
has-tostringtag: registry.nlark.com/has-tostringtag/1.0.0
|
||||
dev: true
|
||||
|
||||
registry.nlark.com/is-extglob/2.1.1:
|
||||
resolution: {integrity: sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=, registry: http://registry.npm.taobao.org/, tarball: https://registry.nlark.com/is-extglob/download/is-extglob-2.1.1.tgz}
|
||||
name: is-extglob
|
||||
version: 2.1.1
|
||||
engines: {node: '>=0.10.0'}
|
||||
dev: true
|
||||
|
||||
registry.nlark.com/is-glob/4.0.1:
|
||||
resolution: {integrity: sha1-dWfb6fL14kZ7x3q4PEopSCQHpdw=, registry: http://registry.npm.taobao.org/, tarball: https://registry.nlark.com/is-glob/download/is-glob-4.0.1.tgz?cache=0&sync_timestamp=1624543039732&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fis-glob%2Fdownload%2Fis-glob-4.0.1.tgz}
|
||||
resolution: {integrity: sha1-dWfb6fL14kZ7x3q4PEopSCQHpdw=, registry: http://registry.npm.taobao.org/, tarball: https://registry.nlark.com/is-glob/download/is-glob-4.0.1.tgz}
|
||||
name: is-glob
|
||||
version: 4.0.1
|
||||
engines: {node: '>=0.10.0'}
|
||||
dependencies:
|
||||
is-extglob: 2.1.1
|
||||
is-extglob: registry.nlark.com/is-extglob/2.1.1
|
||||
dev: true
|
||||
|
||||
registry.nlark.com/is-number-object/1.0.6:
|
||||
@ -4323,6 +4417,13 @@ packages:
|
||||
has-tostringtag: registry.nlark.com/has-tostringtag/1.0.0
|
||||
dev: true
|
||||
|
||||
registry.nlark.com/is-number/7.0.0:
|
||||
resolution: {integrity: sha1-dTU0W4lnNNX4DE0GxQlVUnoU8Ss=, registry: http://registry.npm.taobao.org/, tarball: https://registry.nlark.com/is-number/download/is-number-7.0.0.tgz}
|
||||
name: is-number
|
||||
version: 7.0.0
|
||||
engines: {node: '>=0.12.0'}
|
||||
dev: true
|
||||
|
||||
registry.nlark.com/is-regex/1.1.4:
|
||||
resolution: {integrity: sha1-7vVmPNWfpMCuM5UFMj32hUuxWVg=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/is-regex/download/is-regex-1.1.4.tgz}
|
||||
name: is-regex
|
||||
@ -4724,6 +4825,13 @@ packages:
|
||||
validate-npm-package-license: 3.0.4
|
||||
dev: true
|
||||
|
||||
registry.nlark.com/normalize-path/3.0.0:
|
||||
resolution: {integrity: sha1-Dc1p/yOhybEf0JeDFmRKA4ghamU=, registry: http://registry.npm.taobao.org/, tarball: https://registry.nlark.com/normalize-path/download/normalize-path-3.0.0.tgz}
|
||||
name: normalize-path
|
||||
version: 3.0.0
|
||||
engines: {node: '>=0.10.0'}
|
||||
dev: true
|
||||
|
||||
registry.nlark.com/object-assign/4.1.1:
|
||||
resolution: {integrity: sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/object-assign/download/object-assign-4.1.1.tgz?cache=0&sync_timestamp=1618847043548&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fobject-assign%2Fdownload%2Fobject-assign-4.1.1.tgz}
|
||||
name: object-assign
|
||||
@ -4885,7 +4993,7 @@ packages:
|
||||
dev: true
|
||||
|
||||
registry.nlark.com/picomatch/2.3.0:
|
||||
resolution: {integrity: sha1-8fBh3o9qS/AiiS4tEoI0+5gwKXI=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/picomatch/download/picomatch-2.3.0.tgz}
|
||||
resolution: {integrity: sha1-8fBh3o9qS/AiiS4tEoI0+5gwKXI=, registry: http://registry.npm.taobao.org/, tarball: https://registry.nlark.com/picomatch/download/picomatch-2.3.0.tgz}
|
||||
name: picomatch
|
||||
version: 2.3.0
|
||||
engines: {node: '>=8.6'}
|
||||
@ -4937,6 +5045,9 @@ packages:
|
||||
engines: {node: '>= 10'}
|
||||
peerDependencies:
|
||||
ts-node: '>=9.0.0'
|
||||
peerDependenciesMeta:
|
||||
ts-node:
|
||||
optional: true
|
||||
dependencies:
|
||||
import-cwd: registry.nlark.com/import-cwd/3.0.0
|
||||
lilconfig: registry.nlark.com/lilconfig/2.0.3
|
||||
@ -5112,7 +5223,7 @@ packages:
|
||||
dev: true
|
||||
|
||||
registry.nlark.com/readdirp/3.6.0:
|
||||
resolution: {integrity: sha1-dKNwvYVxFuJFspzJc0DNQxoCpsc=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/readdirp/download/readdirp-3.6.0.tgz}
|
||||
resolution: {integrity: sha1-dKNwvYVxFuJFspzJc0DNQxoCpsc=, registry: http://registry.npm.taobao.org/, tarball: https://registry.nlark.com/readdirp/download/readdirp-3.6.0.tgz}
|
||||
name: readdirp
|
||||
version: 3.6.0
|
||||
engines: {node: '>=8.10.0'}
|
||||
@ -5200,10 +5311,10 @@ packages:
|
||||
tslib: registry.nlark.com/tslib/1.14.1
|
||||
dev: true
|
||||
|
||||
registry.nlark.com/sass/1.40.0:
|
||||
resolution: {integrity: sha1-/6cQbZwBhRafWwjqqxPWNN75SPI=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/sass/download/sass-1.40.0.tgz?cache=0&sync_timestamp=1631577412662&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fsass%2Fdownload%2Fsass-1.40.0.tgz}
|
||||
registry.nlark.com/sass/1.41.0:
|
||||
resolution: {integrity: sha1-97QdwAM2pMA0KcN7loC4Z1ivYdQ=, registry: http://registry.npm.taobao.org/, tarball: https://registry.nlark.com/sass/download/sass-1.41.0.tgz}
|
||||
name: sass
|
||||
version: 1.40.0
|
||||
version: 1.41.0
|
||||
engines: {node: '>=8.9.0'}
|
||||
hasBin: true
|
||||
dependencies:
|
||||
@ -5254,12 +5365,6 @@ packages:
|
||||
engines: {node: '>=8'}
|
||||
dev: true
|
||||
|
||||
registry.nlark.com/smoothscroll-polyfill/0.4.4:
|
||||
resolution: {integrity: sha1-OiWRMdxpMObKgAA+HLA7YDtpq/g=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/smoothscroll-polyfill/download/smoothscroll-polyfill-0.4.4.tgz}
|
||||
name: smoothscroll-polyfill
|
||||
version: 0.4.4
|
||||
dev: false
|
||||
|
||||
registry.nlark.com/source-map-js/0.6.2:
|
||||
resolution: {integrity: sha1-C7XeYxtBz72mz7qL0FqA79/SOF4=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/source-map-js/download/source-map-js-0.6.2.tgz}
|
||||
name: source-map-js
|
||||
@ -5423,12 +5528,12 @@ packages:
|
||||
engines: {node: '>=4'}
|
||||
|
||||
registry.nlark.com/to-regex-range/5.0.1:
|
||||
resolution: {integrity: sha1-FkjESq58jZiKMmAY7XL1tN0DkuQ=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/to-regex-range/download/to-regex-range-5.0.1.tgz}
|
||||
resolution: {integrity: sha1-FkjESq58jZiKMmAY7XL1tN0DkuQ=, registry: http://registry.npm.taobao.org/, tarball: https://registry.nlark.com/to-regex-range/download/to-regex-range-5.0.1.tgz}
|
||||
name: to-regex-range
|
||||
version: 5.0.1
|
||||
engines: {node: '>=8.0'}
|
||||
dependencies:
|
||||
is-number: 7.0.0
|
||||
is-number: registry.nlark.com/is-number/7.0.0
|
||||
dev: true
|
||||
|
||||
registry.nlark.com/token-stream/1.0.0:
|
||||
@ -5488,6 +5593,9 @@ packages:
|
||||
hasBin: true
|
||||
peerDependencies:
|
||||
typescript: ^4.2.3
|
||||
peerDependenciesMeta:
|
||||
typescript:
|
||||
optional: true
|
||||
dependencies:
|
||||
cac: registry.nlark.com/cac/6.7.3
|
||||
chalk: registry.nlark.com/chalk/4.1.2
|
||||
@ -5560,18 +5668,28 @@ packages:
|
||||
hasBin: true
|
||||
dev: true
|
||||
|
||||
registry.nlark.com/unplugin-icons/0.10.0_54da2e3458e54be8937824c348b2c77e:
|
||||
resolution: {integrity: sha1-u4LobC5YdZnVLfDw0HzjB7Ivjq4=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/unplugin-icons/download/unplugin-icons-0.10.0.tgz}
|
||||
id: registry.nlark.com/unplugin-icons/0.10.0
|
||||
registry.nlark.com/unplugin-icons/0.11.1_54da2e3458e54be8937824c348b2c77e:
|
||||
resolution: {integrity: sha1-nodRKlzdyx0RPsD6N+xtlR/IS8U=, registry: http://registry.npm.taobao.org/, tarball: https://registry.nlark.com/unplugin-icons/download/unplugin-icons-0.11.1.tgz}
|
||||
id: registry.nlark.com/unplugin-icons/0.11.1
|
||||
name: unplugin-icons
|
||||
version: 0.10.0
|
||||
version: 0.11.1
|
||||
peerDependencies:
|
||||
'@iconify/json': '*'
|
||||
'@svgr/core': ^5.5.0
|
||||
'@vue/compiler-sfc': ^3.0.2
|
||||
vue-template-compiler: ^2.6.12
|
||||
vue-template-es2015-compiler: ^1.9.0
|
||||
peerDependenciesMeta:
|
||||
'@svgr/core':
|
||||
optional: true
|
||||
'@vue/compiler-sfc':
|
||||
optional: true
|
||||
vue-template-compiler:
|
||||
optional: true
|
||||
vue-template-es2015-compiler:
|
||||
optional: true
|
||||
dependencies:
|
||||
'@antfu/utils': registry.nlark.com/@antfu/utils/0.3.0
|
||||
'@iconify/json': registry.nlark.com/@iconify/json/1.1.401
|
||||
'@iconify/json-tools': registry.nlark.com/@iconify/json-tools/1.0.10
|
||||
'@vue/compiler-sfc': registry.nlark.com/@vue/compiler-sfc/3.2.11
|
||||
@ -5618,6 +5736,13 @@ packages:
|
||||
rollup: ^2.50.0
|
||||
vite: ^2.3.0
|
||||
webpack: 4 || 5
|
||||
peerDependenciesMeta:
|
||||
rollup:
|
||||
optional: true
|
||||
vite:
|
||||
optional: true
|
||||
webpack:
|
||||
optional: true
|
||||
dependencies:
|
||||
upath: 2.0.1
|
||||
vite: registry.nlark.com/vite/2.5.7
|
||||
@ -5870,9 +5995,6 @@ packages:
|
||||
peerDependencies:
|
||||
'@vue/composition-api': ^1.0.0-rc.1
|
||||
vue: ^3.0.0-0 || ^2.6.0
|
||||
peerDependenciesMeta:
|
||||
'@vue/composition-api':
|
||||
optional: true
|
||||
dependencies:
|
||||
vue: registry.nlark.com/vue/3.2.10
|
||||
dev: false
|
||||
|
@ -1,8 +1,10 @@
|
||||
import type { Component } from 'vue';
|
||||
import type { RouteRecordRaw } from 'vue-router';
|
||||
import type { MenuOption } from 'naive-ui';
|
||||
import { EnumRoutePath, EnumLoginModule } from '@/enum';
|
||||
|
||||
/** 路由描述 */
|
||||
export interface RouteMeta {
|
||||
interface RouteMeta {
|
||||
/** 路由名称 */
|
||||
title?: string;
|
||||
/** 页面100%视高 */
|
||||
@ -10,11 +12,16 @@ export interface RouteMeta {
|
||||
/** 作为菜单 */
|
||||
asMenu?: boolean;
|
||||
/** 菜单和面包屑对应的图标 */
|
||||
icon?: string;
|
||||
icon?: Component;
|
||||
}
|
||||
|
||||
export type CustomRoute = RouteRecordRaw & { meta: RouteMeta };
|
||||
|
||||
export type RoutePathKey = keyof typeof EnumRoutePath;
|
||||
|
||||
export type GlobalMenuOption = MenuOption & {
|
||||
routeName: string;
|
||||
routePath: string;
|
||||
};
|
||||
|
||||
export type LoginModuleType = keyof typeof EnumLoginModule;
|
||||
|
@ -1,3 +1,3 @@
|
||||
export { UserInfo } from './business';
|
||||
export { ThemeSettings, NavMode, AnimateType } from './theme';
|
||||
export { CustomRoute, RoutePathKey, LoginModuleType } from './common';
|
||||
export { CustomRoute, RoutePathKey, GlobalMenuOption, LoginModuleType } from './common';
|
||||
|
@ -0,0 +1,45 @@
|
||||
<template>
|
||||
<n-dropdown :options="options" @select="handleDropdown">
|
||||
<header-item class="px-12px">
|
||||
<n-avatar :src="avatar" :round="true" />
|
||||
<span class="pl-8px text-16px font-medium">Soybean</span>
|
||||
</header-item>
|
||||
</n-dropdown>
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup>
|
||||
import { NDropdown, NAvatar } from 'naive-ui';
|
||||
import { UserAvatar, Logout } from '@vicons/carbon';
|
||||
import { dynamicIconRender } from '@/utils';
|
||||
import HeaderItem from './HeaderItem.vue';
|
||||
import avatar from '@/assets/img/common/logo-fill.png';
|
||||
import { useAuthStore } from '@/store';
|
||||
|
||||
type DropdownKey = 'user-center' | 'logout';
|
||||
|
||||
const { resetAuthState } = useAuthStore();
|
||||
|
||||
const options = [
|
||||
{
|
||||
label: '用户中心',
|
||||
key: 'user-center',
|
||||
icon: dynamicIconRender(UserAvatar)
|
||||
},
|
||||
{
|
||||
type: 'divider',
|
||||
key: 'divider'
|
||||
},
|
||||
{
|
||||
label: '退出登录',
|
||||
key: 'logout',
|
||||
icon: dynamicIconRender(Logout)
|
||||
}
|
||||
];
|
||||
|
||||
function handleDropdown(key: DropdownKey) {
|
||||
if (key === 'logout') {
|
||||
resetAuthState();
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<style scoped></style>
|
@ -1,3 +1,4 @@
|
||||
import UserAvatar from './UserAvatar.vue';
|
||||
import HeaderItem from './HeaderItem.vue';
|
||||
|
||||
export { HeaderItem };
|
||||
export { UserAvatar, HeaderItem };
|
||||
|
@ -10,6 +10,7 @@
|
||||
<icon-gridicons-fullscreen-exit v-if="isFullscreen" class="text-16px" />
|
||||
<icon-gridicons-fullscreen v-else class="text-16px" />
|
||||
</header-item>
|
||||
<user-avatar />
|
||||
<header-item class="w-40px h-full" @click="openSettingDrawer">
|
||||
<icon-mdi-light-cog class="text-16px" />
|
||||
</header-item>
|
||||
@ -23,7 +24,7 @@ import { computed } from 'vue';
|
||||
import { NLayoutHeader } from 'naive-ui';
|
||||
import { useFullscreen } from '@vueuse/core';
|
||||
import { useAppStore, useThemeStore } from '@/store';
|
||||
import { HeaderItem } from './components';
|
||||
import { UserAvatar, HeaderItem } from './components';
|
||||
import { GlobalLogo } from '../common';
|
||||
|
||||
defineProps({
|
||||
|
@ -1,18 +1,21 @@
|
||||
<template>
|
||||
<router-link to="/" class="nowrap-hidden flex-center h-64px">
|
||||
<a :href="homePath" class="nowrap-hidden flex-center h-64px cursor-pointer">
|
||||
<img src="@/assets/img/common/logo.png" alt="" class="w-32px h-32px" />
|
||||
<h2 v-show="showTitle" class="pl-8px text-16px text-primary font-bold">{{ title }}</h2>
|
||||
</router-link>
|
||||
</a>
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup>
|
||||
import { computed } from 'vue';
|
||||
import { useAppStore, useThemeStore } from '@/store';
|
||||
import { useAppTitle } from '@/hooks';
|
||||
import { EnumRoutePath } from '@/enum';
|
||||
|
||||
const app = useAppStore();
|
||||
const theme = useThemeStore();
|
||||
const showTitle = computed(() => !app.menu.collapsed && theme.navStyle.mode !== 'vertical-mix');
|
||||
const title = useAppTitle();
|
||||
|
||||
const showTitle = computed(() => !app.menu.collapsed && theme.navStyle.mode !== 'vertical-mix');
|
||||
const homePath = EnumRoutePath['dashboard-analysis'];
|
||||
</script>
|
||||
<style scoped></style>
|
||||
|
@ -1,11 +1,35 @@
|
||||
<template>
|
||||
<div>
|
||||
<h3 class="text-center text-18px text-error">菜单</h3>
|
||||
<div class="flex-center h-48px">
|
||||
<router-link to="/login" class="text-primary text-18px">登录页</router-link>
|
||||
</div>
|
||||
</div>
|
||||
<n-menu
|
||||
:value="activeKey"
|
||||
:collapsed="app.menu.collapsed"
|
||||
:collapsed-width="theme.menuStyle.collapsedWidth"
|
||||
:collapsed-icon-size="22"
|
||||
:options="menus"
|
||||
@update:value="handleUpdateMenu"
|
||||
/>
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup></script>
|
||||
<script lang="ts" setup>
|
||||
import { computed } from 'vue';
|
||||
import { useRoute, useRouter } from 'vue-router';
|
||||
import { NMenu } from 'naive-ui';
|
||||
import { useThemeStore, useAppStore } from '@/store';
|
||||
import { menus } from '@/router';
|
||||
import { GlobalMenuOption } from '@/interface';
|
||||
|
||||
const theme = useThemeStore();
|
||||
const app = useAppStore();
|
||||
const router = useRouter();
|
||||
const route = useRoute();
|
||||
|
||||
const activeKey = computed(() => getActiveKey());
|
||||
|
||||
function getActiveKey() {
|
||||
return route.name as string;
|
||||
}
|
||||
|
||||
function handleUpdateMenu(key: string, menuItem: GlobalMenuOption) {
|
||||
router.push(menuItem.routePath);
|
||||
}
|
||||
</script>
|
||||
<style scoped></style>
|
||||
|
@ -3,7 +3,7 @@ import App from './App.vue';
|
||||
import AppProvider from './AppProvider.vue';
|
||||
import { setupStore } from './store';
|
||||
import { setupRouter } from './router';
|
||||
import { setupSmoothScroll, setupWindicssDarkMode } from './plugins';
|
||||
import { setupWindicssDarkMode } from './plugins';
|
||||
import 'virtual:windi.css';
|
||||
import './styles/css/global.css';
|
||||
|
||||
@ -27,5 +27,4 @@ async function setupApp() {
|
||||
setupWindicssDarkMode();
|
||||
}
|
||||
|
||||
setupSmoothScroll();
|
||||
setupApp();
|
||||
|
@ -1,4 +1,3 @@
|
||||
import setupSmoothScroll from './smooth-scroll';
|
||||
import setupWindicssDarkMode from './dark-mode';
|
||||
|
||||
export { setupSmoothScroll, setupWindicssDarkMode };
|
||||
export { setupWindicssDarkMode };
|
||||
|
@ -1,6 +0,0 @@
|
||||
import smoothscroll from 'smoothscroll-polyfill';
|
||||
|
||||
/** 平滑滚动插件(兼容主流浏览器) */
|
||||
export default function setupSmoothScroll(): void {
|
||||
smoothscroll.polyfill();
|
||||
}
|
@ -21,3 +21,4 @@ export async function setupRouter(app: App) {
|
||||
}
|
||||
|
||||
export { RouteNameMap };
|
||||
export { menus } from './menus';
|
||||
|
@ -1,5 +1,49 @@
|
||||
import { CustomRoute } from '@/interface';
|
||||
import type { Component } from 'vue';
|
||||
import { customRoutes } from './routes';
|
||||
import { CustomRoute, GlobalMenuOption } from '@/interface';
|
||||
import { dynamicIconRender } from '@/utils';
|
||||
|
||||
export function transformRouteToMenu(routes: CustomRoute[]) {
|
||||
return routes;
|
||||
const globalMenu: GlobalMenuOption[] = [];
|
||||
routes.forEach(route => {
|
||||
if (asMenu(route)) {
|
||||
const { name, path, meta } = route;
|
||||
const routeName = name as string;
|
||||
let menuChildren: GlobalMenuOption[] | undefined;
|
||||
if (route.children) {
|
||||
menuChildren = transformRouteToMenu(route.children as CustomRoute[]);
|
||||
}
|
||||
const menuItem: GlobalMenuOption = addPartialProps(
|
||||
{
|
||||
key: routeName,
|
||||
label: meta?.title ?? routeName,
|
||||
routeName,
|
||||
routePath: path
|
||||
},
|
||||
meta?.icon,
|
||||
menuChildren
|
||||
);
|
||||
globalMenu.push(menuItem);
|
||||
}
|
||||
});
|
||||
return globalMenu;
|
||||
}
|
||||
|
||||
/** 判断路由是否作为菜单 */
|
||||
function asMenu(route: CustomRoute) {
|
||||
return Boolean(route.meta?.asMenu);
|
||||
}
|
||||
|
||||
/** 给菜单添加可选属性 */
|
||||
function addPartialProps(menuItem: GlobalMenuOption, icon?: Component, children?: GlobalMenuOption[]) {
|
||||
const item = { ...menuItem };
|
||||
if (icon) {
|
||||
Object.assign(item, { icon: dynamicIconRender(icon) });
|
||||
}
|
||||
if (children) {
|
||||
Object.assign(item, { children });
|
||||
}
|
||||
return item;
|
||||
}
|
||||
|
||||
export const menus = transformRouteToMenu(customRoutes);
|
||||
|
@ -1,4 +1,6 @@
|
||||
import type { RouteRecordRaw } from 'vue-router';
|
||||
import { Dashboard } from '@vicons/carbon';
|
||||
import { ExceptionOutlined } from '@vicons/antd';
|
||||
import { BasicLayout, BlankLayout } from '@/layouts';
|
||||
import { EnumRoutePath, EnumRouteTitle } from '@/enum';
|
||||
import type { CustomRoute, RoutePathKey, LoginModuleType } from '@/interface';
|
||||
@ -100,7 +102,7 @@ export const customRoutes: CustomRoute[] = [
|
||||
meta: {
|
||||
title: EnumRouteTitle.dashboard,
|
||||
asMenu: true,
|
||||
icon: 'mdi:view-dashboard'
|
||||
icon: Dashboard
|
||||
},
|
||||
children: [
|
||||
{
|
||||
@ -130,7 +132,7 @@ export const customRoutes: CustomRoute[] = [
|
||||
meta: {
|
||||
title: EnumRouteTitle.exception,
|
||||
asMenu: true,
|
||||
icon: 'ant-design:exception-outlined'
|
||||
icon: ExceptionOutlined
|
||||
},
|
||||
children: [
|
||||
{
|
||||
@ -157,7 +159,7 @@ export const customRoutes: CustomRoute[] = [
|
||||
component: () => import('@/views/system/exception/500.vue'),
|
||||
meta: {
|
||||
title: EnumRouteTitle['exception-500'],
|
||||
asMenu: true
|
||||
asMenu: false
|
||||
}
|
||||
}
|
||||
]
|
||||
|
@ -1,5 +1,6 @@
|
||||
import { defineStore } from 'pinia';
|
||||
import { store } from '@/store';
|
||||
import { removeToken } from '@/utils';
|
||||
import type { UserInfo } from '@/interface';
|
||||
|
||||
interface AuthState {
|
||||
@ -30,7 +31,9 @@ const authStore = defineStore({
|
||||
actions: {
|
||||
/** 重置auth状态 */
|
||||
resetAuthState() {
|
||||
removeToken();
|
||||
this.$reset();
|
||||
window.location.reload();
|
||||
}
|
||||
}
|
||||
});
|
||||
|
@ -1,2 +1,2 @@
|
||||
export { getToken, setToken, getUserInfo, getLoginModuleRegExp } from './user';
|
||||
export { getToken, setToken, removeToken, getUserInfo, getLoginModuleRegExp } from './user';
|
||||
export { getLoginRedirectUrl, toLoginRedirectUrl, toHomeByLocation } from './location';
|
||||
|
@ -1,6 +1,6 @@
|
||||
import { EnumStorageKey } from '@/enum';
|
||||
import type { LoginModuleType } from '@/interface';
|
||||
import { setLocal, getLocal } from '../storage';
|
||||
import { setLocal, getLocal, removeLocal } from '../storage';
|
||||
|
||||
/** 设置token */
|
||||
export function getToken() {
|
||||
@ -12,6 +12,10 @@ export function setToken(token: string) {
|
||||
setLocal(EnumStorageKey.token, token);
|
||||
}
|
||||
|
||||
export function removeToken() {
|
||||
removeLocal(EnumStorageKey.token);
|
||||
}
|
||||
|
||||
export function getUserInfo() {}
|
||||
|
||||
/** 获取登录模块的正则字符串 */
|
||||
|
12
src/utils/common/icon.ts
Normal file
12
src/utils/common/icon.ts
Normal file
@ -0,0 +1,12 @@
|
||||
import { h } from 'vue';
|
||||
import type { Component } from 'vue';
|
||||
import { NIcon } from 'naive-ui';
|
||||
|
||||
/** 动态渲染vicon */
|
||||
export function dynamicIconRender(icon: Component) {
|
||||
return () => {
|
||||
return h(NIcon, null, {
|
||||
default: () => h(icon)
|
||||
});
|
||||
};
|
||||
}
|
@ -13,3 +13,5 @@ export {
|
||||
} from './typeof';
|
||||
|
||||
export { brightenColor, darkenColor } from './color';
|
||||
|
||||
export { dynamicIconRender } from './icon';
|
||||
|
@ -1,6 +1,7 @@
|
||||
export {
|
||||
setToken,
|
||||
getToken,
|
||||
removeToken,
|
||||
getUserInfo,
|
||||
getLoginModuleRegExp,
|
||||
getLoginRedirectUrl,
|
||||
@ -21,7 +22,8 @@ export {
|
||||
isSet,
|
||||
isMap,
|
||||
brightenColor,
|
||||
darkenColor
|
||||
darkenColor,
|
||||
dynamicIconRender
|
||||
} from './common';
|
||||
|
||||
export { setLocal, getLocal, setSession, getSession } from './storage';
|
||||
|
@ -1,2 +1,2 @@
|
||||
export { setLocal, getLocal } from './local';
|
||||
export { setLocal, getLocal, removeLocal } from './local';
|
||||
export { setSession, getSession } from './session';
|
||||
|
@ -1,12 +1,16 @@
|
||||
export function setLocal(key: string, value: unknown) {
|
||||
const json = JSON.stringify(value);
|
||||
localStorage.setItem(key, json);
|
||||
window.localStorage.setItem(key, json);
|
||||
}
|
||||
|
||||
export function getLocal<T>(key: string) {
|
||||
const json = localStorage.getItem(key);
|
||||
const json = window.localStorage.getItem(key);
|
||||
if (json) {
|
||||
return JSON.parse(json) as T;
|
||||
}
|
||||
return json;
|
||||
}
|
||||
|
||||
export function removeLocal(key: string) {
|
||||
window.localStorage.removeItem(key);
|
||||
}
|
||||
|
@ -2,20 +2,10 @@
|
||||
<div>
|
||||
<h2>工作台</h2>
|
||||
<router-link :to="EnumRoutePath['dashboard-analysis']">analysis</router-link>
|
||||
<n-button @click="removeCurrent">去除</n-button>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup>
|
||||
import { NButton } from 'naive-ui';
|
||||
import { useRouter } from 'vue-router';
|
||||
import { EnumRoutePath } from '@/enum';
|
||||
import { RouteNameMap } from '@/router';
|
||||
|
||||
const router = useRouter();
|
||||
|
||||
function removeCurrent() {
|
||||
router.removeRoute(RouteNameMap.get('dashboard-workbench')!);
|
||||
}
|
||||
</script>
|
||||
<style scoped></style>
|
||||
|
@ -1,6 +1,5 @@
|
||||
<template>
|
||||
<div class="relative flex-center w-full h-full bg-[#DBE0F9]">
|
||||
<login-bg />
|
||||
<div class="w-400px p-40px bg-white rounded-20px z-10">
|
||||
<header class="flex-y-center justify-between">
|
||||
<div class="w-70px h-70px rounded-35px overflow-hidden">
|
||||
@ -15,6 +14,7 @@
|
||||
</div>
|
||||
</main>
|
||||
</div>
|
||||
<login-bg />
|
||||
</div>
|
||||
</template>
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user