feat: 导出关闭某个标签的hooks

This commit is contained in:
xiaoxian521 2022-04-03 15:30:45 +08:00
parent de76497e8a
commit 5e8723a031
6 changed files with 225 additions and 108 deletions

View File

@ -88,9 +88,9 @@
"@types/qs": "^6.9.7", "@types/qs": "^6.9.7",
"@typescript-eslint/eslint-plugin": "^5.10.2", "@typescript-eslint/eslint-plugin": "^5.10.2",
"@typescript-eslint/parser": "^5.10.2", "@typescript-eslint/parser": "^5.10.2",
"@vitejs/plugin-legacy": "^1.7.1", "@vitejs/plugin-legacy": "^1.8.0",
"@vitejs/plugin-vue": "^2.2.4", "@vitejs/plugin-vue": "^2.3.1",
"@vitejs/plugin-vue-jsx": "^1.3.8", "@vitejs/plugin-vue-jsx": "^1.3.9",
"@vue/eslint-config-prettier": "^7.0.0", "@vue/eslint-config-prettier": "^7.0.0",
"@vue/eslint-config-typescript": "^10.0.0", "@vue/eslint-config-typescript": "^10.0.0",
"autoprefixer": "^10.4.2", "autoprefixer": "^10.4.2",
@ -120,7 +120,7 @@
"stylelint-order": "^5.0.0", "stylelint-order": "^5.0.0",
"typescript": "^4.6.3", "typescript": "^4.6.3",
"unplugin-element-plus": "^0.3.1", "unplugin-element-plus": "^0.3.1",
"vite": "^2.9.0-beta.10", "vite": "^2.9.1",
"vite-plugin-live-reload": "^2.1.0", "vite-plugin-live-reload": "^2.1.0",
"vite-plugin-mock": "^2.9.6", "vite-plugin-mock": "^2.9.6",
"vite-plugin-remove-console": "^0.0.7", "vite-plugin-remove-console": "^0.0.7",

198
pnpm-lock.yaml generated
View File

@ -25,9 +25,9 @@ specifiers:
"@types/qs": ^6.9.7 "@types/qs": ^6.9.7
"@typescript-eslint/eslint-plugin": ^5.10.2 "@typescript-eslint/eslint-plugin": ^5.10.2
"@typescript-eslint/parser": ^5.10.2 "@typescript-eslint/parser": ^5.10.2
"@vitejs/plugin-legacy": ^1.7.1 "@vitejs/plugin-legacy": ^1.8.0
"@vitejs/plugin-vue": ^2.2.4 "@vitejs/plugin-vue": ^2.3.1
"@vitejs/plugin-vue-jsx": ^1.3.8 "@vitejs/plugin-vue-jsx": ^1.3.9
"@vue/eslint-config-prettier": ^7.0.0 "@vue/eslint-config-prettier": ^7.0.0
"@vue/eslint-config-typescript": ^10.0.0 "@vue/eslint-config-typescript": ^10.0.0
"@vueuse/core": ^8.2.0 "@vueuse/core": ^8.2.0
@ -83,7 +83,7 @@ specifiers:
typescript: ^4.6.3 typescript: ^4.6.3
unplugin-element-plus: ^0.3.1 unplugin-element-plus: ^0.3.1
v-contextmenu: 3.0.0 v-contextmenu: 3.0.0
vite: ^2.9.0-beta.10 vite: ^2.9.1
vite-plugin-live-reload: ^2.1.0 vite-plugin-live-reload: ^2.1.0
vite-plugin-mock: ^2.9.6 vite-plugin-mock: ^2.9.6
vite-plugin-remove-console: ^0.0.7 vite-plugin-remove-console: ^0.0.7
@ -154,7 +154,7 @@ devDependencies:
"@iconify-icons/fa-solid": 1.2.2 "@iconify-icons/fa-solid": 1.2.2
"@iconify-icons/ri": 1.2.1 "@iconify-icons/ri": 1.2.1
"@iconify/vue": 3.2.0_vue@3.2.31 "@iconify/vue": 3.2.0_vue@3.2.31
"@intlify/vite-plugin-vue-i18n": 3.3.1_d85b7878c756a0dafc9a31d02a659e34 "@intlify/vite-plugin-vue-i18n": 3.3.1_5e55492be6688dd52c71c76ed1867e7f
"@pureadmin/theme": 0.0.1 "@pureadmin/theme": 0.0.1
"@types/element-resize-detector": 1.1.3 "@types/element-resize-detector": 1.1.3
"@types/js-cookie": 3.0.1 "@types/js-cookie": 3.0.1
@ -166,9 +166,9 @@ devDependencies:
"@types/qs": 6.9.7 "@types/qs": 6.9.7
"@typescript-eslint/eslint-plugin": 5.16.0_bc68a9cd5bf604202498b1a9faaf9387 "@typescript-eslint/eslint-plugin": 5.16.0_bc68a9cd5bf604202498b1a9faaf9387
"@typescript-eslint/parser": 5.16.0_eslint@8.11.0+typescript@4.6.3 "@typescript-eslint/parser": 5.16.0_eslint@8.11.0+typescript@4.6.3
"@vitejs/plugin-legacy": 1.7.1_vite@2.9.0-beta.10 "@vitejs/plugin-legacy": 1.8.0_vite@2.9.1
"@vitejs/plugin-vue": 2.2.4_vite@2.9.0-beta.10+vue@3.2.31 "@vitejs/plugin-vue": 2.3.1_vite@2.9.1+vue@3.2.31
"@vitejs/plugin-vue-jsx": 1.3.8 "@vitejs/plugin-vue-jsx": 1.3.9
"@vue/eslint-config-prettier": 7.0.0_eslint@8.11.0+prettier@2.6.0 "@vue/eslint-config-prettier": 7.0.0_eslint@8.11.0+prettier@2.6.0
"@vue/eslint-config-typescript": 10.0.0_67e26bb50fed2173443e3fe1262a69b2 "@vue/eslint-config-typescript": 10.0.0_67e26bb50fed2173443e3fe1262a69b2
autoprefixer: 10.4.4_postcss@8.4.12 autoprefixer: 10.4.4_postcss@8.4.12
@ -197,13 +197,13 @@ devDependencies:
stylelint-config-standard: 24.0.0_stylelint@14.6.0 stylelint-config-standard: 24.0.0_stylelint@14.6.0
stylelint-order: 5.0.0_stylelint@14.6.0 stylelint-order: 5.0.0_stylelint@14.6.0
typescript: 4.6.3 typescript: 4.6.3
unplugin-element-plus: 0.3.2_rollup@2.70.1+vite@2.9.0-beta.10 unplugin-element-plus: 0.3.2_rollup@2.70.1+vite@2.9.1
vite: 2.9.0-beta.10_sass@1.49.9 vite: 2.9.1_sass@1.49.9
vite-plugin-live-reload: 2.1.0 vite-plugin-live-reload: 2.1.0
vite-plugin-mock: 2.9.6_9f12a304f5d96f739756818b56e7825f vite-plugin-mock: 2.9.6_9cb7b45a435b0b365a3d11bf7a7969b0
vite-plugin-remove-console: 0.0.7 vite-plugin-remove-console: 0.0.7
vite-plugin-style-import: 1.4.1_vite@2.9.0-beta.10 vite-plugin-style-import: 1.4.1_vite@2.9.1
vite-plugin-windicss: 1.8.3_vite@2.9.0-beta.10 vite-plugin-windicss: 1.8.3_vite@2.9.1
vite-svg-loader: 2.2.0 vite-svg-loader: 2.2.0
vue-eslint-parser: 8.3.0_eslint@8.11.0 vue-eslint-parser: 8.3.0_eslint@8.11.0
windicss: 3.5.1 windicss: 3.5.1
@ -1078,7 +1078,7 @@ packages:
} }
engines: { node: ">= 12" } engines: { node: ">= 12" }
/@intlify/vite-plugin-vue-i18n/3.3.1_d85b7878c756a0dafc9a31d02a659e34: /@intlify/vite-plugin-vue-i18n/3.3.1_5e55492be6688dd52c71c76ed1867e7f:
resolution: resolution:
{ {
integrity: sha512-b9HIUANzL4/LmrA5RqeiPabZl2/RiWNAJ90TVZ8kSi3APRZ4BbmwUAclKe8ip+1jCDhqaGO/qfAI7SbQ0Y76Uw== integrity: sha512-b9HIUANzL4/LmrA5RqeiPabZl2/RiWNAJ90TVZ8kSi3APRZ4BbmwUAclKe8ip+1jCDhqaGO/qfAI7SbQ0Y76Uw==
@ -1100,7 +1100,7 @@ packages:
debug: 4.3.4 debug: 4.3.4
fast-glob: 3.2.11 fast-glob: 3.2.11
source-map: 0.6.1 source-map: 0.6.1
vite: 2.9.0-beta.10_sass@1.49.9 vite: 2.9.1_sass@1.49.9
vue-i18n: 9.2.0-beta.33_vue@3.2.31 vue-i18n: 9.2.0-beta.33_vue@3.2.31
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
@ -1551,10 +1551,10 @@ packages:
eslint-visitor-keys: 3.3.0 eslint-visitor-keys: 3.3.0
dev: true dev: true
/@vitejs/plugin-legacy/1.7.1_vite@2.9.0-beta.10: /@vitejs/plugin-legacy/1.8.0_vite@2.9.1:
resolution: resolution:
{ {
integrity: sha512-RqgILXsGpfV7NHodVCdBVau8ss5+ynMXp6JGF/F7nhSy0bnwSQPlMS3KFqh7twfifXK8VuMriqfU4CxOiqmNnA== integrity: sha512-S3+uL1zp8GLUbmJAQk2wQbZLTyISKRFSMBwCFI3XQVRD3OZshqkiPyOKdRiSPlP9HoGz+q90kk+1qPm1tJRqCg==
} }
engines: { node: ">=12.0.0" } engines: { node: ">=12.0.0" }
peerDependencies: peerDependencies:
@ -1562,16 +1562,16 @@ packages:
dependencies: dependencies:
"@babel/standalone": 7.17.8 "@babel/standalone": 7.17.8
core-js: 3.21.1 core-js: 3.21.1
magic-string: 0.25.9 magic-string: 0.26.1
regenerator-runtime: 0.13.9 regenerator-runtime: 0.13.9
systemjs: 6.12.1 systemjs: 6.12.1
vite: 2.9.0-beta.10_sass@1.49.9 vite: 2.9.1_sass@1.49.9
dev: true dev: true
/@vitejs/plugin-vue-jsx/1.3.8: /@vitejs/plugin-vue-jsx/1.3.9:
resolution: resolution:
{ {
integrity: sha512-gPtie8IM7G5OI2O2/Xwk/oYjnw2gKBzayVuEOM5Jx65KmpVcW444F+H7IsIMduvAgwLQPEYMGiO1V8dBgk7qog== integrity: sha512-aJpmBpAXM9jbVWaf7UR22/c0v/wfNPqOj0nBibuOndnrM8YmPAj4NnHEasguXxf0wVH00DinWqyzgZV8CZqEOQ==
} }
engines: { node: ">=12.0.0" } engines: { node: ">=12.0.0" }
dependencies: dependencies:
@ -1585,17 +1585,17 @@ packages:
- supports-color - supports-color
dev: true dev: true
/@vitejs/plugin-vue/2.2.4_vite@2.9.0-beta.10+vue@3.2.31: /@vitejs/plugin-vue/2.3.1_vite@2.9.1+vue@3.2.31:
resolution: resolution:
{ {
integrity: sha512-ev9AOlp0ljCaDkFZF3JwC/pD2N4Hh+r5srl5JHM6BKg5+99jiiK0rE/XaRs3pVm1wzyKkjUy/StBSoXX5fFzcw== integrity: sha512-YNzBt8+jt6bSwpt7LP890U1UcTOIZZxfpE5WOJ638PNxSEKOqAi0+FSKS0nVeukfdZ0Ai/H7AFd6k3hayfGZqQ==
} }
engines: { node: ">=12.0.0" } engines: { node: ">=12.0.0" }
peerDependencies: peerDependencies:
vite: ^2.5.10 vite: ^2.5.10
vue: ^3.2.25 vue: ^3.2.25
dependencies: dependencies:
vite: 2.9.0-beta.10_sass@1.49.9 vite: 2.9.1_sass@1.49.9
vue: 3.2.31 vue: 3.2.31
dev: true dev: true
@ -3239,10 +3239,10 @@ packages:
ext: 1.6.0 ext: 1.6.0
dev: false dev: false
/esbuild-android-64/0.14.28: /esbuild-android-64/0.14.29:
resolution: resolution:
{ {
integrity: sha512-A52C3zq+9tNwCqZ+4kVLBxnk/WnrYM8P2+QNvNE9B6d2OVPs214lp3g6UyO+dKDhUdefhfPCuwkP8j2A/+szNA== integrity: sha512-tJuaN33SVZyiHxRaVTo1pwW+rn3qetJX/SRuc/83rrKYtyZG0XfsQ1ao1nEudIt9w37ZSNXR236xEfm2C43sbw==
} }
engines: { node: ">=12" } engines: { node: ">=12" }
cpu: [x64] cpu: [x64]
@ -3251,10 +3251,10 @@ packages:
dev: true dev: true
optional: true optional: true
/esbuild-android-arm64/0.14.28: /esbuild-android-arm64/0.14.29:
resolution: resolution:
{ {
integrity: sha512-sm0fDEGElZhMC3HLZeECI2juE4aG7uPfMBMqNUhy9CeX399Pz8rC6e78OXMXInGjSdEAwQmCOHmfsP7uv3Q8rA== integrity: sha512-D74dCv6yYnMTlofVy1JKiLM5JdVSQd60/rQfJSDP9qvRAI0laPXIG/IXY1RG6jobmFMUfL38PbFnCqyI/6fPXg==
} }
engines: { node: ">=12" } engines: { node: ">=12" }
cpu: [arm64] cpu: [arm64]
@ -3263,10 +3263,10 @@ packages:
dev: true dev: true
optional: true optional: true
/esbuild-darwin-64/0.14.28: /esbuild-darwin-64/0.14.29:
resolution: resolution:
{ {
integrity: sha512-nzDd7mQ44FvsFHtOafZdBgn3Li5SMsnMnoz1J2MM37xJmR3wGNTFph88KypjHgWqwbxCI7MXS1U+sN4qDeeW6Q== integrity: sha512-+CJaRvfTkzs9t+CjGa0Oa28WoXa7EeLutQhxus+fFcu0MHhsBhlmeWHac3Cc/Sf/xPi1b2ccDFfzGYJCfV0RrA==
} }
engines: { node: ">=12" } engines: { node: ">=12" }
cpu: [x64] cpu: [x64]
@ -3275,10 +3275,10 @@ packages:
dev: true dev: true
optional: true optional: true
/esbuild-darwin-arm64/0.14.28: /esbuild-darwin-arm64/0.14.29:
resolution: resolution:
{ {
integrity: sha512-XEq/bLR/glsUl+uGrBimQzOVs/CmwI833fXUhP9xrLI3IJ+rKyrZ5IA8u+1crOEf1LoTn8tV+hInmX6rGjbScw== integrity: sha512-5Wgz/+zK+8X2ZW7vIbwoZ613Vfr4A8HmIs1XdzRmdC1kG0n5EG5fvKk/jUxhNlrYPx1gSY7XadQ3l4xAManPSw==
} }
engines: { node: ">=12" } engines: { node: ">=12" }
cpu: [arm64] cpu: [arm64]
@ -3287,10 +3287,10 @@ packages:
dev: true dev: true
optional: true optional: true
/esbuild-freebsd-64/0.14.28: /esbuild-freebsd-64/0.14.29:
resolution: resolution:
{ {
integrity: sha512-rTKLgUj/HEcPeE5XZ7IZwWpFx7IWMfprN7QRk/TUJE1s1Ipb58esboIesUpjirJz/BwrgHq+FDG9ChAI8dZAtQ== integrity: sha512-VTfS7Bm9QA12JK1YXF8+WyYOfvD7WMpbArtDj6bGJ5Sy5xp01c/q70Arkn596aGcGj0TvQRplaaCIrfBG1Wdtg==
} }
engines: { node: ">=12" } engines: { node: ">=12" }
cpu: [x64] cpu: [x64]
@ -3299,10 +3299,10 @@ packages:
dev: true dev: true
optional: true optional: true
/esbuild-freebsd-arm64/0.14.28: /esbuild-freebsd-arm64/0.14.29:
resolution: resolution:
{ {
integrity: sha512-sBffxD1UMOsB7aWMoExmipycjcy3HJGwmqE4GQZUTZvdiH4GhjgUiVdtPyt7kSCdL40JqnWQJ4b1l8Y51oCF4Q== integrity: sha512-WP5L4ejwLWWvd3Fo2J5mlXvG3zQHaw5N1KxFGnUc4+2ZFZknP0ST63i0IQhpJLgEJwnQpXv2uZlU1iWZjFqEIg==
} }
engines: { node: ">=12" } engines: { node: ">=12" }
cpu: [arm64] cpu: [arm64]
@ -3311,10 +3311,10 @@ packages:
dev: true dev: true
optional: true optional: true
/esbuild-linux-32/0.14.28: /esbuild-linux-32/0.14.29:
resolution: resolution:
{ {
integrity: sha512-+Wxidh3fBEQ9kHcCsD4etlBTMb1n6QY2uXv3rFhVn88CY/JP782MhA57/ipLMY4kOLeSKEuFGN4rtjHuhmRMig== integrity: sha512-4myeOvFmQBWdI2U1dEBe2DCSpaZyjdQtmjUY11Zu2eQg4ynqLb8Y5mNjNU9UN063aVsCYYfbs8jbken/PjyidA==
} }
engines: { node: ">=12" } engines: { node: ">=12" }
cpu: [ia32] cpu: [ia32]
@ -3323,10 +3323,10 @@ packages:
dev: true dev: true
optional: true optional: true
/esbuild-linux-64/0.14.28: /esbuild-linux-64/0.14.29:
resolution: resolution:
{ {
integrity: sha512-7+xgsC4LvR6cnzaBdiljNnPDjbkwzahogN+S9uy9AoYw7ZjPnnXc6sjQAVCbqGb7MEgrWdpa6u/Tao79i4lWxg== integrity: sha512-iaEuLhssReAKE7HMwxwFJFn7D/EXEs43fFy5CJeA4DGmU6JHh0qVJD2p/UP46DvUXLRKXsXw0i+kv5TdJ1w5pg==
} }
engines: { node: ">=12" } engines: { node: ">=12" }
cpu: [x64] cpu: [x64]
@ -3335,10 +3335,10 @@ packages:
dev: true dev: true
optional: true optional: true
/esbuild-linux-arm/0.14.28: /esbuild-linux-arm/0.14.29:
resolution: resolution:
{ {
integrity: sha512-L5isjmlLbh9E0WVllXiVETbScgMbth/+XkXQii1WwgO1RvLIfaGrVFz8d2n6EH/ImtgYxPYGx+OcvIKQBc91Rg== integrity: sha512-OXa9D9QL1hwrAnYYAHt/cXAuSCmoSqYfTW/0CEY0LgJNyTxJKtqc5mlwjAZAvgyjmha0auS/sQ0bXfGf2wAokQ==
} }
engines: { node: ">=12" } engines: { node: ">=12" }
cpu: [arm] cpu: [arm]
@ -3347,10 +3347,10 @@ packages:
dev: true dev: true
optional: true optional: true
/esbuild-linux-arm64/0.14.28: /esbuild-linux-arm64/0.14.29:
resolution: resolution:
{ {
integrity: sha512-EjRHgwg+kgXABzyoPGPOPg4d5wZqRnZ/ZAxBDzLY+i6DS8OUfTSlZHWIOZzU4XF7125WxRBg9ULbrFJBl+57Eg== integrity: sha512-KYf7s8wDfUy+kjKymW3twyGT14OABjGHRkm9gPJ0z4BuvqljfOOUbq9qT3JYFnZJHOgkr29atT//hcdD0Pi7Mw==
} }
engines: { node: ">=12" } engines: { node: ">=12" }
cpu: [arm64] cpu: [arm64]
@ -3359,10 +3359,10 @@ packages:
dev: true dev: true
optional: true optional: true
/esbuild-linux-mips64le/0.14.28: /esbuild-linux-mips64le/0.14.29:
resolution: resolution:
{ {
integrity: sha512-krx9SSg7yfiUKk64EmjefOyiEF6nv2bRE4um/LiTaQ6Y/6FP4UF3/Ou/AxZVyR154uSRq63xejcAsmswXAYRsw== integrity: sha512-05jPtWQMsZ1aMGfHOvnR5KrTvigPbU35BtuItSSWLI2sJu5VrM8Pr9Owym4wPvA4153DFcOJ1EPN/2ujcDt54g==
} }
engines: { node: ">=12" } engines: { node: ">=12" }
cpu: [mips64el] cpu: [mips64el]
@ -3371,10 +3371,10 @@ packages:
dev: true dev: true
optional: true optional: true
/esbuild-linux-ppc64le/0.14.28: /esbuild-linux-ppc64le/0.14.29:
resolution: resolution:
{ {
integrity: sha512-LD0Xxu9g+DNuhsEBV5QuVZ4uKVBMup0xPIruLweuAf9/mHXFnaCuNXUBF5t0DxKl7GQ5MSioKtnb92oMo+QXEw== integrity: sha512-FYhBqn4Ir9xG+f6B5VIQVbRuM4S6qwy29dDNYFPoxLRnwTEKToIYIUESN1qHyUmIbfO0YB4phG2JDV2JDN9Kgw==
} }
engines: { node: ">=12" } engines: { node: ">=12" }
cpu: [ppc64] cpu: [ppc64]
@ -3383,10 +3383,10 @@ packages:
dev: true dev: true
optional: true optional: true
/esbuild-linux-riscv64/0.14.28: /esbuild-linux-riscv64/0.14.29:
resolution: resolution:
{ {
integrity: sha512-L/DWfRh2P0vxq4Y+qieSNXKGdMg+e9Qe8jkbN2/8XSGYDTPzO2OcAxSujob4qIh7iSl+cknbXV+BvH0YFR0jbg== integrity: sha512-eqZMqPehkb4nZcffnuOpXJQdGURGd6GXQ4ZsDHSWyIUaA+V4FpMBe+5zMPtXRD2N4BtyzVvnBko6K8IWWr36ew==
} }
engines: { node: ">=12" } engines: { node: ">=12" }
cpu: [riscv64] cpu: [riscv64]
@ -3395,10 +3395,10 @@ packages:
dev: true dev: true
optional: true optional: true
/esbuild-linux-s390x/0.14.28: /esbuild-linux-s390x/0.14.29:
resolution: resolution:
{ {
integrity: sha512-rrgxmsbmL8QQknWGnAL9bGJRQYLOi2AzXy5OTwfhxnj9eqjo5mSVbJXjgiq5LPUAMQZGdPH5yaNK0obAXS81Zw== integrity: sha512-o7EYajF1rC/4ho7kpSG3gENVx0o2SsHm7cJ5fvewWB/TEczWU7teDgusGSujxCYcMottE3zqa423VTglNTYhjg==
} }
engines: { node: ">=12" } engines: { node: ">=12" }
cpu: [s390x] cpu: [s390x]
@ -3407,10 +3407,10 @@ packages:
dev: true dev: true
optional: true optional: true
/esbuild-netbsd-64/0.14.28: /esbuild-netbsd-64/0.14.29:
resolution: resolution:
{ {
integrity: sha512-h8wntIyOR8/xMVVM6TvJxxWKh4AjmLK87IPKpuVi8Pq0kyk0RMA+eo4PFGk5j2XK0D7dj8PcSF5NSlP9kN/j0A== integrity: sha512-/esN6tb6OBSot6+JxgeOZeBk6P8V/WdR3GKBFeFpSqhgw4wx7xWUqPrdx4XNpBVO7X4Ipw9SAqgBrWHlXfddww==
} }
engines: { node: ">=12" } engines: { node: ">=12" }
cpu: [x64] cpu: [x64]
@ -3419,10 +3419,10 @@ packages:
dev: true dev: true
optional: true optional: true
/esbuild-openbsd-64/0.14.28: /esbuild-openbsd-64/0.14.29:
resolution: resolution:
{ {
integrity: sha512-HBv18rVapbuDx52/fhZ/c/w6TXyaQAvRxiDDn5Hz/pBcwOs3cdd2WxeIKlWmDoqm2JMx5EVlq4IWgoaRX9mVkw== integrity: sha512-jUTdDzhEKrD0pLpjmk0UxwlfNJNg/D50vdwhrVcW/D26Vg0hVbthMfb19PJMatzclbK7cmgk1Nu0eNS+abzoHw==
} }
engines: { node: ">=12" } engines: { node: ">=12" }
cpu: [x64] cpu: [x64]
@ -3431,10 +3431,10 @@ packages:
dev: true dev: true
optional: true optional: true
/esbuild-sunos-64/0.14.28: /esbuild-sunos-64/0.14.29:
resolution: resolution:
{ {
integrity: sha512-zlIxePhZxKYheR2vBCgPVvTixgo/ozOfOMoP6RZj8dxzquU1NgeyhjkcRXucbLCtmoNJ+i4PtWwPZTLuDd3bGg== integrity: sha512-EfhQN/XO+TBHTbkxwsxwA7EfiTHFe+MNDfxcf0nj97moCppD9JHPq48MLtOaDcuvrTYOcrMdJVeqmmeQ7doTcg==
} }
engines: { node: ">=12" } engines: { node: ">=12" }
cpu: [x64] cpu: [x64]
@ -3443,10 +3443,10 @@ packages:
dev: true dev: true
optional: true optional: true
/esbuild-windows-32/0.14.28: /esbuild-windows-32/0.14.29:
resolution: resolution:
{ {
integrity: sha512-am9DIJxXlld1BOAY/VlvBQHMUCPL7S3gB/lnXIY3M4ys0gfuRqPf4EvMwZMzYUbFKBY+/Qb8SRgPRRGhwnJ8Kg== integrity: sha512-uoyb0YAJ6uWH4PYuYjfGNjvgLlb5t6b3zIaGmpWPOjgpr1Nb3SJtQiK4YCPGhONgfg2v6DcJgSbOteuKXhwqAw==
} }
engines: { node: ">=12" } engines: { node: ">=12" }
cpu: [ia32] cpu: [ia32]
@ -3455,10 +3455,10 @@ packages:
dev: true dev: true
optional: true optional: true
/esbuild-windows-64/0.14.28: /esbuild-windows-64/0.14.29:
resolution: resolution:
{ {
integrity: sha512-78PhySDnmRZlsPNp/W/5Fim8iivlBQQxfhBFIqR7xwvfDmCFUSByyMKP7LCHgNtb04yNdop8nJJkJaQ8Xnwgiw== integrity: sha512-X9cW/Wl95QjsH8WUyr3NqbmfdU72jCp71cH3pwPvI4CgBM2IeOUDdbt6oIGljPu2bf5eGDIo8K3Y3vvXCCTd8A==
} }
engines: { node: ">=12" } engines: { node: ">=12" }
cpu: [x64] cpu: [x64]
@ -3467,10 +3467,10 @@ packages:
dev: true dev: true
optional: true optional: true
/esbuild-windows-arm64/0.14.28: /esbuild-windows-arm64/0.14.29:
resolution: resolution:
{ {
integrity: sha512-VhXGBTo6HELD8zyHXynV6+L2jWx0zkKnGx4TmEdSBK7UVFACtOyfUqpToG0EtnYyRZ0HESBhzPSVpP781ovmvA== integrity: sha512-+O/PI+68fbUZPpl3eXhqGHTGK7DjLcexNnyJqtLZXOFwoAjaXlS5UBCvVcR3o2va+AqZTj8o6URaz8D2K+yfQQ==
} }
engines: { node: ">=12" } engines: { node: ">=12" }
cpu: [arm64] cpu: [arm64]
@ -3488,35 +3488,35 @@ packages:
requiresBuild: true requiresBuild: true
dev: true dev: true
/esbuild/0.14.28: /esbuild/0.14.29:
resolution: resolution:
{ {
integrity: sha512-YLNprkCcMVKQ5sekmCKEQ3Obu/L7s6+iij38xNKyBeSmSsTWur4Ky/9zB3XIGT8SCJITG/bZwAR2l7YOAXch4Q== integrity: sha512-SQS8cO8xFEqevYlrHt6exIhK853Me4nZ4aMW6ieysInLa0FMAL+AKs87HYNRtR2YWRcEIqoXAHh+Ytt5/66qpg==
} }
engines: { node: ">=12" } engines: { node: ">=12" }
hasBin: true hasBin: true
requiresBuild: true requiresBuild: true
optionalDependencies: optionalDependencies:
esbuild-android-64: 0.14.28 esbuild-android-64: 0.14.29
esbuild-android-arm64: 0.14.28 esbuild-android-arm64: 0.14.29
esbuild-darwin-64: 0.14.28 esbuild-darwin-64: 0.14.29
esbuild-darwin-arm64: 0.14.28 esbuild-darwin-arm64: 0.14.29
esbuild-freebsd-64: 0.14.28 esbuild-freebsd-64: 0.14.29
esbuild-freebsd-arm64: 0.14.28 esbuild-freebsd-arm64: 0.14.29
esbuild-linux-32: 0.14.28 esbuild-linux-32: 0.14.29
esbuild-linux-64: 0.14.28 esbuild-linux-64: 0.14.29
esbuild-linux-arm: 0.14.28 esbuild-linux-arm: 0.14.29
esbuild-linux-arm64: 0.14.28 esbuild-linux-arm64: 0.14.29
esbuild-linux-mips64le: 0.14.28 esbuild-linux-mips64le: 0.14.29
esbuild-linux-ppc64le: 0.14.28 esbuild-linux-ppc64le: 0.14.29
esbuild-linux-riscv64: 0.14.28 esbuild-linux-riscv64: 0.14.29
esbuild-linux-s390x: 0.14.28 esbuild-linux-s390x: 0.14.29
esbuild-netbsd-64: 0.14.28 esbuild-netbsd-64: 0.14.29
esbuild-openbsd-64: 0.14.28 esbuild-openbsd-64: 0.14.29
esbuild-sunos-64: 0.14.28 esbuild-sunos-64: 0.14.29
esbuild-windows-32: 0.14.28 esbuild-windows-32: 0.14.29
esbuild-windows-64: 0.14.28 esbuild-windows-64: 0.14.29
esbuild-windows-arm64: 0.14.28 esbuild-windows-arm64: 0.14.29
dev: true dev: true
/escalade/3.1.1: /escalade/3.1.1:
@ -7223,7 +7223,7 @@ packages:
engines: { node: ">= 0.8" } engines: { node: ">= 0.8" }
dev: true dev: true
/unplugin-element-plus/0.3.2_rollup@2.70.1+vite@2.9.0-beta.10: /unplugin-element-plus/0.3.2_rollup@2.70.1+vite@2.9.1:
resolution: resolution:
{ {
integrity: sha512-/oPbLA1ByrZ3VvN3jrVtVZcGJ147+ccyrL1w9d8wNLTTMH+buxdtiMQQv9R7Muz22ocJvebXZzlRVlA/JeeVPA== integrity: sha512-/oPbLA1ByrZ3VvN3jrVtVZcGJ147+ccyrL1w9d8wNLTTMH+buxdtiMQQv9R7Muz22ocJvebXZzlRVlA/JeeVPA==
@ -7233,7 +7233,7 @@ packages:
"@rollup/pluginutils": 4.2.0 "@rollup/pluginutils": 4.2.0
es-module-lexer: 0.10.4 es-module-lexer: 0.10.4
magic-string: 0.26.1 magic-string: 0.26.1
unplugin: 0.3.3_rollup@2.70.1+vite@2.9.0-beta.10 unplugin: 0.3.3_rollup@2.70.1+vite@2.9.1
transitivePeerDependencies: transitivePeerDependencies:
- esbuild - esbuild
- rollup - rollup
@ -7241,7 +7241,7 @@ packages:
- webpack - webpack
dev: true dev: true
/unplugin/0.3.3_rollup@2.70.1+vite@2.9.0-beta.10: /unplugin/0.3.3_rollup@2.70.1+vite@2.9.1:
resolution: resolution:
{ {
integrity: sha512-WjZWpUqqcYPQ/efR00Zm2m1+J1LitwoZ4uhHV4VdZ+IpW0Nh/qnDYtVf+nLhozXdGxslMPecOshVR7NiWFl4gA== integrity: sha512-WjZWpUqqcYPQ/efR00Zm2m1+J1LitwoZ4uhHV4VdZ+IpW0Nh/qnDYtVf+nLhozXdGxslMPecOshVR7NiWFl4gA==
@ -7262,7 +7262,7 @@ packages:
optional: true optional: true
dependencies: dependencies:
rollup: 2.70.1 rollup: 2.70.1
vite: 2.9.0-beta.10_sass@1.49.9 vite: 2.9.1_sass@1.49.9
webpack-virtual-modules: 0.4.3 webpack-virtual-modules: 0.4.3
dev: true dev: true
@ -7358,7 +7358,7 @@ packages:
chokidar: 3.5.3 chokidar: 3.5.3
dev: true dev: true
/vite-plugin-mock/2.9.6_9f12a304f5d96f739756818b56e7825f: /vite-plugin-mock/2.9.6_9cb7b45a435b0b365a3d11bf7a7969b0:
resolution: resolution:
{ {
integrity: sha512-/Rm59oPppe/ncbkSrUuAxIQihlI2YcBmnbR4ST1RA2VzM1C0tEQc1KlbQvnUGhXECAGTaQN2JyasiwXP6EtKgg== integrity: sha512-/Rm59oPppe/ncbkSrUuAxIQihlI2YcBmnbR4ST1RA2VzM1C0tEQc1KlbQvnUGhXECAGTaQN2JyasiwXP6EtKgg==
@ -7378,7 +7378,7 @@ packages:
fast-glob: 3.2.11 fast-glob: 3.2.11
mockjs: 1.1.0 mockjs: 1.1.0
path-to-regexp: 6.2.0 path-to-regexp: 6.2.0
vite: 2.9.0-beta.10_sass@1.49.9 vite: 2.9.1_sass@1.49.9
transitivePeerDependencies: transitivePeerDependencies:
- rollup - rollup
- supports-color - supports-color
@ -7391,7 +7391,7 @@ packages:
} }
dev: true dev: true
/vite-plugin-style-import/1.4.1_vite@2.9.0-beta.10: /vite-plugin-style-import/1.4.1_vite@2.9.1:
resolution: resolution:
{ {
integrity: sha512-lJCRvm7+So0hHdnSJiJPg9gD5mxtL6YY0jmhEph+k7ArpsyvqOh6han2kG5htbWWDZxHkUN9d1BuTFL//yCLLQ== integrity: sha512-lJCRvm7+So0hHdnSJiJPg9gD5mxtL6YY0jmhEph+k7ArpsyvqOh6han2kG5htbWWDZxHkUN9d1BuTFL//yCLLQ==
@ -7405,12 +7405,12 @@ packages:
es-module-lexer: 0.9.3 es-module-lexer: 0.9.3
fs-extra: 10.0.1 fs-extra: 10.0.1
magic-string: 0.25.9 magic-string: 0.25.9
vite: 2.9.0-beta.10_sass@1.49.9 vite: 2.9.1_sass@1.49.9
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
dev: true dev: true
/vite-plugin-windicss/1.8.3_vite@2.9.0-beta.10: /vite-plugin-windicss/1.8.3_vite@2.9.1:
resolution: resolution:
{ {
integrity: sha512-RIw2GD6H6cKNE8wZXVOBs4L1uTicVS0FaAkeqXvy1oyuXLC4SXmvnzEuoK0+qFuWJjW0ECNwE8eU+ZZhzNQKUg== integrity: sha512-RIw2GD6H6cKNE8wZXVOBs4L1uTicVS0FaAkeqXvy1oyuXLC4SXmvnzEuoK0+qFuWJjW0ECNwE8eU+ZZhzNQKUg==
@ -7421,7 +7421,7 @@ packages:
"@windicss/plugin-utils": 1.8.3 "@windicss/plugin-utils": 1.8.3
debug: 4.3.4 debug: 4.3.4
kolorist: 1.5.1 kolorist: 1.5.1
vite: 2.9.0-beta.10_sass@1.49.9 vite: 2.9.1_sass@1.49.9
windicss: 3.5.1 windicss: 3.5.1
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
@ -7437,10 +7437,10 @@ packages:
svgo: 2.8.0 svgo: 2.8.0
dev: true dev: true
/vite/2.9.0-beta.10_sass@1.49.9: /vite/2.9.1_sass@1.49.9:
resolution: resolution:
{ {
integrity: sha512-CvAssYHcjWHGyxEUG+lt5KHWwL0VdUI9DlXnNnxkZqWlNpzcqxuU4V/mxOh83Eg71R8ya2BjA5yX1RwPijoKZA== integrity: sha512-vSlsSdOYGcYEJfkQ/NeLXgnRv5zZfpAsdztkIrs7AZHV8RCMZQkwjo4DS5BnrYTqoWqLoUe1Cah4aVO4oNNqCQ==
} }
engines: { node: ">=12.2.0" } engines: { node: ">=12.2.0" }
hasBin: true hasBin: true
@ -7456,7 +7456,7 @@ packages:
stylus: stylus:
optional: true optional: true
dependencies: dependencies:
esbuild: 0.14.28 esbuild: 0.14.29
postcss: 8.4.12 postcss: 8.4.12
resolve: 1.22.0 resolve: 1.22.0
rollup: 2.70.1 rollup: 2.70.1

View File

@ -89,7 +89,13 @@ export const useMultiTagsStore = defineStore({
} }
break; break;
case "splice": case "splice":
if (!position) {
const index = this.multiTags.findIndex(v => v.path === value);
if (index === -1) return;
this.multiTags.splice(index, 1);
} else {
this.multiTags.splice(position?.startIndex, position?.length); this.multiTags.splice(position?.startIndex, position?.length);
}
this.tagsCache(this.multiTags); this.tagsCache(this.multiTags);
return this.multiTags; return this.multiTags;
case "slice": case "slice":

View File

@ -42,9 +42,10 @@
} }
/* 动态改变cssvar 用于主题切换 https://github.com/element-plus/element-plus/issues/4856#issuecomment-1000174357 */ /* 动态改变cssvar 用于主题切换 https://github.com/element-plus/element-plus/issues/4856#issuecomment-1000174357 */
.el-button--primary { .el-button--primary,
--el-button-active-bg-color: var(--el-color-primary-active) !important; .el-button--primary.is-plain {
--el-button-active-border-color: var(--el-color-primary-active) !important; --el-button-active-bg-color: var(--el-color-primary) !important;
--el-button-active-border-color: var(--el-color-primary) !important;
} }
/* button--primary plain */ /* button--primary plain */

View File

@ -65,3 +65,55 @@ export function buildHierarchyTree(menuTree, pathList = []) {
} }
return menuTree; return menuTree;
} }
/**
* 广
* @param {Array} tree
* @param {Number|String} uniqueId uniqueId
* @return {Object} node
*/
export function getNodeByUniqueId(menuTree, uniqueId) {
if (!Array.isArray(menuTree)) {
console.warn("menuTree must be an array");
return;
}
if (!menuTree || menuTree.length === 0) return;
const item = menuTree.find(node => node.uniqueId === uniqueId);
if (item) return item;
const childrenList = menuTree
.filter(node => node.children)
.map(i => i.children)
.flat(1);
return getNodeByUniqueId(childrenList, uniqueId);
}
/**
* uniqueId节点追加字段
* @param {Array} {menuTree }
* @param {Number|String} uniqueId uniqueId
* @param {Object} fields uniqueId
* @return {menuTree}
*/
export function appendFieldByUniqueId(
menuTree: Array<any>,
uniqueId: Number | String,
fields: Object
) {
if (!Array.isArray(menuTree)) {
console.warn("menuTree must be an array");
return;
}
if (!menuTree || menuTree.length === 0) return {};
for (const node of menuTree) {
const hasChildren = node.children && node.children.length > 0;
if (
node.uniqueId === uniqueId &&
Object.prototype.toString.call(fields) === "[object Object]"
)
Object.assign(node, fields);
if (hasChildren) {
appendFieldByUniqueId(node.children, uniqueId, fields);
}
}
return menuTree;
}

View File

@ -1,9 +1,30 @@
<script setup lang="ts"> <script setup lang="ts">
import { useI18n } from "vue-i18n";
import { ref, computed } from "vue";
import { useRouter, useRoute } from "vue-router"; import { useRouter, useRoute } from "vue-router";
import { TreeSelect } from "@pureadmin/components";
import { useMultiTagsStoreHook } from "/@/store/modules/multiTags"; import { useMultiTagsStoreHook } from "/@/store/modules/multiTags";
const router = useRouter(); import {
deleteChildren,
appendFieldByUniqueId,
getNodeByUniqueId
} from "/@/utils/tree";
import { usePermissionStoreHook } from "/@/store/modules/permission";
let treeData = computed(() => {
return appendFieldByUniqueId(
deleteChildren(usePermissionStoreHook().menusTree),
0,
{ disabled: true }
);
});
const { t } = useI18n();
const route = useRoute(); const route = useRoute();
const router = useRouter();
const value = ref<string[]>([]);
function toDetail(index: number) { function toDetail(index: number) {
useMultiTagsStoreHook().handleTags("push", { useMultiTagsStoreHook().handleTags("push", {
@ -20,6 +41,15 @@ function toDetail(index: number) {
}); });
router.push({ name: "tabDetail", query: { id: String(index) } }); router.push({ name: "tabDetail", query: { id: String(index) } });
} }
function onCloseTags() {
value.value.forEach(uniqueId => {
let currentPath =
getNodeByUniqueId(treeData.value, uniqueId).redirect ??
getNodeByUniqueId(treeData.value, uniqueId).path;
useMultiTagsStoreHook().handleTags("splice", currentPath);
});
}
</script> </script>
<template> <template>
@ -34,5 +64,33 @@ function toDetail(index: number) {
<el-button v-for="index in 6" :key="index" @click="toDetail(index)"> <el-button v-for="index in 6" :key="index" @click="toDetail(index)">
打开{{ index }}详情页 打开{{ index }}详情页
</el-button> </el-button>
<el-divider />
<TreeSelect
class="w-300px"
v-model:value="value"
show-search
:dropdown-style="{ maxHeight: '400px', overflow: 'auto' }"
placeholder="请选择要关闭的标签"
:fieldNames="{
children: 'children',
key: 'uniqueId',
value: 'uniqueId'
}"
allow-clear
multiple
tree-default-expand-all
:tree-data="treeData"
>
<template #tagRender="{ closable, onClose, option }">
<el-tag class="mr-3px" :closable="closable" @close="onClose">
{{ t(option.meta.title) }}
</el-tag>
</template>
<template #title="{ data }">
<span>{{ t(data.meta.title) }}</span>
</template>
</TreeSelect>
<el-button class="ml-2" @click="onCloseTags">关闭标签</el-button>
</el-card> </el-card>
</template> </template>