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",
"@typescript-eslint/eslint-plugin": "^5.10.2",
"@typescript-eslint/parser": "^5.10.2",
"@vitejs/plugin-legacy": "^1.7.1",
"@vitejs/plugin-vue": "^2.2.4",
"@vitejs/plugin-vue-jsx": "^1.3.8",
"@vitejs/plugin-legacy": "^1.8.0",
"@vitejs/plugin-vue": "^2.3.1",
"@vitejs/plugin-vue-jsx": "^1.3.9",
"@vue/eslint-config-prettier": "^7.0.0",
"@vue/eslint-config-typescript": "^10.0.0",
"autoprefixer": "^10.4.2",
@ -120,7 +120,7 @@
"stylelint-order": "^5.0.0",
"typescript": "^4.6.3",
"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-mock": "^2.9.6",
"vite-plugin-remove-console": "^0.0.7",

View File

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

View File

@ -89,7 +89,13 @@ export const useMultiTagsStore = defineStore({
}
break;
case "splice":
this.multiTags.splice(position?.startIndex, position?.length);
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.tagsCache(this.multiTags);
return this.multiTags;
case "slice":

View File

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

View File

@ -65,3 +65,55 @@ export function buildHierarchyTree(menuTree, pathList = []) {
}
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">
import { useI18n } from "vue-i18n";
import { ref, computed } from "vue";
import { useRouter, useRoute } from "vue-router";
import { TreeSelect } from "@pureadmin/components";
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 router = useRouter();
const value = ref<string[]>([]);
function toDetail(index: number) {
useMultiTagsStoreHook().handleTags("push", {
@ -20,6 +41,15 @@ function toDetail(index: number) {
});
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>
<template>
@ -34,5 +64,33 @@ function toDetail(index: number) {
<el-button v-for="index in 6" :key="index" @click="toDetail(index)">
打开{{ index }}详情页
</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>
</template>