admin 3 år sedan
förälder
incheckning
22283bc87c

+ 187
- 154
package-lock.json Visa fil

@@ -1,5 +1,5 @@
{
"name": "etc-project",
"name": "etcProject",
"version": "0.0.0",
"lockfileVersion": 2,
"requires": true,
@@ -11,7 +11,7 @@
"@element-plus/icons-vue": "^1.1.4",
"axios": "^0.27.2",
"babel-polyfill": "^6.26.0",
"element-plus": "^2.1.7",
"element-plus": "^2.2.0",
"file-saver": "^2.0.5",
"fuse.js": "^6.5.3",
"js-cookie": "^3.0.1",
@@ -169,9 +169,9 @@
}
},
"node_modules/@ctrl/tinycolor": {
"version": "3.4.0",
"resolved": "https://registry.npmmirror.com/@ctrl/tinycolor/-/tinycolor-3.4.0.tgz",
"integrity": "sha512-JZButFdZ1+/xAfpguQHoabIXkcqRRKpMrWKBkpEZZyxfY9C1DpADFB8PEqGSTeFr135SaTRfKqGKx5xSCLI7ZQ==",
"version": "3.4.1",
"resolved": "https://registry.npmmirror.com/@ctrl/tinycolor/-/tinycolor-3.4.1.tgz",
"integrity": "sha512-ej5oVy6lykXsvieQtqZxCOaLT+xD4+QNarq78cIYISHmZXshCvROLudpQN3lfL8G0NL7plMSSK+zlyvCaIJ4Iw==",
"engines": {
"node": ">=10"
}
@@ -223,16 +223,16 @@
}
},
"node_modules/@floating-ui/core": {
"version": "0.6.1",
"resolved": "https://registry.npmmirror.com/@floating-ui/core/-/core-0.6.1.tgz",
"integrity": "sha512-Y30eVMcZva8o84c0HcXAtDO4BEzPJMvF6+B7x7urL2xbAqVsGJhojOyHLaoQHQYjb6OkqRq5kO+zeySycQwKqg=="
"version": "0.6.2",
"resolved": "https://registry.npmmirror.com/@floating-ui/core/-/core-0.6.2.tgz",
"integrity": "sha512-jktYRmZwmau63adUG3GKOAVCofBXkk55S/zQ94XOorAHhwqFIOFAy1rSp2N0Wp6/tGbe9V3u/ExlGZypyY17rg=="
},
"node_modules/@floating-ui/dom": {
"version": "0.4.2",
"resolved": "https://registry.npmmirror.com/@floating-ui/dom/-/dom-0.4.2.tgz",
"integrity": "sha512-2/4vOhMAujkMmGqGX1Gut84phe5MNfk1kGeM+RSTJCpeR0SWR2/RR+/f1r1msOvTQa28wn7HEhxGe71CjYY/vw==",
"version": "0.4.5",
"resolved": "https://registry.npmmirror.com/@floating-ui/dom/-/dom-0.4.5.tgz",
"integrity": "sha512-b+prvQgJt8pieaKYMSJBXHxX/DYwdLsAWxKYqnO5dO2V4oo/TYBZJAUQCVNjTWWsrs6o4VDrNcP9+E70HAhJdw==",
"dependencies": {
"@floating-ui/core": "^0.6.1"
"@floating-ui/core": "^0.6.2"
}
},
"node_modules/@humanwhocodes/config-array": {
@@ -291,9 +291,10 @@
}
},
"node_modules/@popperjs/core": {
"version": "2.11.4",
"resolved": "https://registry.npmmirror.com/@popperjs/core/-/core-2.11.4.tgz",
"integrity": "sha512-q/ytXxO5NKvyT37pmisQAItCFqA7FD/vNb8dgaJy3/630Fsc+Mz9/9f2SziBoIZ30TJooXyTwZmhi1zjXmObYg=="
"name": "@sxzz/popperjs-es",
"version": "2.11.7",
"resolved": "https://registry.npmmirror.com/@sxzz/popperjs-es/-/popperjs-es-2.11.7.tgz",
"integrity": "sha512-Ccy0NlLkzr0Ex2FKvh2X+OyERHXJ88XJ1MXtsI9y9fGexlaXaVTPzBCRBwIxFkORuOb+uBqeu+RqnpgYTEZRUQ=="
},
"node_modules/@rollup/pluginutils": {
"version": "4.1.1",
@@ -320,6 +321,19 @@
"integrity": "sha1-l+3JA36gw4WFMgsolk3eOznkZg0=",
"dev": true
},
"node_modules/@types/lodash": {
"version": "4.14.182",
"resolved": "https://registry.npmmirror.com/@types/lodash/-/lodash-4.14.182.tgz",
"integrity": "sha512-/THyiqyQAP9AfARo4pF+aCGcyiQ94tX/Is2I7HofNRqoYLgN1PBoOWu2/zTA5zMxzP5EFutMtWtGAFRKUe961Q=="
},
"node_modules/@types/lodash-es": {
"version": "4.17.6",
"resolved": "https://registry.npmmirror.com/@types/lodash-es/-/lodash-es-4.17.6.tgz",
"integrity": "sha512-R+zTeVUKDdfoRxpAryaQNRKk3105Rrgx2CFRClIgRGaqDTdjsm8h6IYA8ir584W3ePzkZfst5xIgDwYrlh9HLg==",
"dependencies": {
"@types/lodash": "*"
}
},
"node_modules/@typescript-eslint/eslint-plugin": {
"version": "5.4.0",
"resolved": "https://registry.npmmirror.com/@typescript-eslint/eslint-plugin/download/@typescript-eslint/eslint-plugin-5.4.0.tgz",
@@ -577,74 +591,10 @@
"resolved": "https://registry.npmmirror.com/@vue/shared/download/@vue/shared-3.2.22.tgz?cache=0&sync_timestamp=1636948014607&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2F%40vue%2Fshared%2Fdownload%2F%40vue%2Fshared-3.2.22.tgz",
"integrity": "sha512-qWVav014mpjEtbWbEgl0q9pEyrrIySKum8UVYjwhC6njrKzknLZPvfuYdQyVbApsqr94tf/3dP4pCuZmmjdCWQ=="
},
"node_modules/@vueuse/core": {
"version": "8.2.0",
"resolved": "https://registry.npmmirror.com/@vueuse/core/-/core-8.2.0.tgz",
"integrity": "sha512-89ZfKtFHz5ynfpWyFVXtK0yePJ2MZqFaOxnGeZn7cIp8KFbPRlu6Wsxi3gBkJNpjq+q9qbEh6MjV7QBvqCQ5Og==",
"dependencies": {
"@vueuse/metadata": "8.2.0",
"@vueuse/shared": "8.2.0",
"vue-demi": "*"
},
"peerDependencies": {
"@vue/composition-api": "^1.1.0",
"vue": "^2.6.0 || ^3.2.0"
},
"peerDependenciesMeta": {
"@vue/composition-api": {
"optional": true
},
"vue": {
"optional": true
}
}
},
"node_modules/@vueuse/core/node_modules/@vueuse/shared": {
"version": "8.2.0",
"resolved": "https://registry.npmmirror.com/@vueuse/shared/-/shared-8.2.0.tgz",
"integrity": "sha512-dTw7EJZgZCgG9DoVAiz4LtmKnIFXuE/idUFzvqRAJLjbPiVJc+qQH5kDUdKHI3W1U9t//1mdasQEKONArburiQ==",
"dependencies": {
"vue-demi": "*"
},
"peerDependencies": {
"@vue/composition-api": "^1.1.0",
"vue": "^2.6.0 || ^3.2.0"
},
"peerDependenciesMeta": {
"@vue/composition-api": {
"optional": true
},
"vue": {
"optional": true
}
}
},
"node_modules/@vueuse/core/node_modules/vue-demi": {
"version": "0.12.4",
"resolved": "https://registry.npmmirror.com/vue-demi/-/vue-demi-0.12.4.tgz",
"integrity": "sha512-ztPDkFt0TSUdoq1ZI6oD730vgztBkiByhUW7L1cOTebiSBqSYfSQgnhYakYigBkyAybqCTH7h44yZuDJf2xILQ==",
"hasInstallScript": true,
"bin": {
"vue-demi-fix": "bin/vue-demi-fix.js",
"vue-demi-switch": "bin/vue-demi-switch.js"
},
"engines": {
"node": ">=12"
},
"peerDependencies": {
"@vue/composition-api": "^1.0.0-rc.1",
"vue": "^3.0.0-0 || ^2.6.0"
},
"peerDependenciesMeta": {
"@vue/composition-api": {
"optional": true
}
}
},
"node_modules/@vueuse/metadata": {
"version": "8.2.0",
"resolved": "https://registry.npmmirror.com/@vueuse/metadata/-/metadata-8.2.0.tgz",
"integrity": "sha512-cbaezEccNuxQC+OiudG9VjZNg9/RbAAHkyuhC6+8Gsgsc+MvDhfn1NrV6NNTaldLlZgJFgUiYOkrf3JGTTTGXQ=="
"version": "8.5.0",
"resolved": "https://registry.npmmirror.com/@vueuse/metadata/-/metadata-8.5.0.tgz",
"integrity": "sha512-WxsD+Cd+bn+HcjpY6Dl9FJ8ywTRTT9pTwk3bCQpzEhXVYAyNczKDSahk50fCfIJKeWHhyI4B2+/ZEOxQAkUr0g=="
},
"node_modules/acorn": {
"version": "8.6.0",
@@ -758,9 +708,9 @@
}
},
"node_modules/async-validator": {
"version": "4.0.7",
"resolved": "https://registry.npmmirror.com/async-validator/-/async-validator-4.0.7.tgz",
"integrity": "sha512-Pj2IR7u8hmUEDOwB++su6baaRi+QvsgajuFB9j95foM1N2gy5HM4z60hfusIO0fBPG5uLAEl6yCJr1jNSVugEQ=="
"version": "4.1.1",
"resolved": "https://registry.npmmirror.com/async-validator/-/async-validator-4.1.1.tgz",
"integrity": "sha512-p4DO/JXwjs8klJyJL8Q2oM4ks5fUTze/h5k10oPPKMiLe1fj3G1QMzPHNmN1Py4ycOk7WlO2DcGXv1qiESJCZA=="
},
"node_modules/asynckit": {
"version": "0.4.0",
@@ -1127,9 +1077,9 @@
}
},
"node_modules/dayjs": {
"version": "1.11.0",
"resolved": "https://registry.npmmirror.com/dayjs/-/dayjs-1.11.0.tgz",
"integrity": "sha512-JLC809s6Y948/FuCZPm5IX8rRhQwOiyMb2TfVVQEixG7P8Lm/gt5S7yoQZmC8x1UehI9Pb7sksEt4xx14m+7Ug=="
"version": "1.11.2",
"resolved": "https://registry.npmmirror.com/dayjs/-/dayjs-1.11.2.tgz",
"integrity": "sha512-F4LXf1OeU9hrSYRPTTj/6FbO4HTjPKXvEIC1P2kcnFurViINCVk3ZV0xAS3XVx9MkMsXbbqlK6hjseaYbgKEHw=="
},
"node_modules/debug": {
"version": "4.3.4",
@@ -1207,28 +1157,94 @@
"dev": true
},
"node_modules/element-plus": {
"version": "2.1.7",
"resolved": "https://registry.npmmirror.com/element-plus/-/element-plus-2.1.7.tgz",
"integrity": "sha512-jamE9F/a2rfAQJwf3kLaDfWXxhjXuAJAvrto76SLJsJfr3iIUAzC849RHdn6h7tNJy9Yanq8GlQAsdBe5lJmrA==",
"version": "2.2.0",
"resolved": "https://registry.npmmirror.com/element-plus/-/element-plus-2.2.0.tgz",
"integrity": "sha512-zxmAFEAa1T/n09rR+NozXcWl5CjaFtqoaxhFSafag0dgc90tgEHitDXfegdFAl4ahugdNTqu9aLzngx3VhDAtA==",
"dependencies": {
"@ctrl/tinycolor": "^3.4.0",
"@ctrl/tinycolor": "^3.4.1",
"@element-plus/icons-vue": "^1.1.4",
"@floating-ui/dom": "^0.4.1",
"@popperjs/core": "^2.11.4",
"@vueuse/core": "^8.1.2",
"@floating-ui/dom": "^0.4.5",
"@popperjs/core": "npm:@sxzz/popperjs-es@^2.11.6",
"@types/lodash": "^4.14.182",
"@types/lodash-es": "^4.17.6",
"@vueuse/core": "^8.2.6",
"async-validator": "^4.0.7",
"dayjs": "^1.11.0",
"dayjs": "^1.11.1",
"escape-html": "^1.0.3",
"lodash": "^4.17.21",
"lodash-es": "^4.17.21",
"lodash-unified": "^1.0.2",
"memoize-one": "^6.0.0",
"normalize-wheel-es": "^1.1.1"
"normalize-wheel-es": "^1.1.2"
},
"peerDependencies": {
"vue": "^3.2.0"
}
},
"node_modules/element-plus/node_modules/@vueuse/core": {
"version": "8.5.0",
"resolved": "https://registry.npmmirror.com/@vueuse/core/-/core-8.5.0.tgz",
"integrity": "sha512-VEJ6sGNsPlUp0o9BGda2YISvDZbhWJSOJu5zlp2TufRGVrLcYUKr31jyFEOj6RXzG3k/H4aCYeZyjpItfU8glw==",
"dependencies": {
"@vueuse/metadata": "8.5.0",
"@vueuse/shared": "8.5.0",
"vue-demi": "*"
},
"peerDependencies": {
"@vue/composition-api": "^1.1.0",
"vue": "^2.6.0 || ^3.2.0"
},
"peerDependenciesMeta": {
"@vue/composition-api": {
"optional": true
},
"vue": {
"optional": true
}
}
},
"node_modules/element-plus/node_modules/@vueuse/core/node_modules/@vueuse/shared": {
"version": "8.5.0",
"resolved": "https://registry.npmmirror.com/@vueuse/shared/-/shared-8.5.0.tgz",
"integrity": "sha512-qKG+SZb44VvGD4dU5cQ63z4JE2Yk39hQUecR0a9sEdJA01cx+XrxAvFKJfPooxwoiqalAVw/ktWK6xbyc/jS3g==",
"dependencies": {
"vue-demi": "*"
},
"peerDependencies": {
"@vue/composition-api": "^1.1.0",
"vue": "^2.6.0 || ^3.2.0"
},
"peerDependenciesMeta": {
"@vue/composition-api": {
"optional": true
},
"vue": {
"optional": true
}
}
},
"node_modules/element-plus/node_modules/@vueuse/core/node_modules/vue-demi": {
"version": "0.12.5",
"resolved": "https://registry.npmmirror.com/vue-demi/-/vue-demi-0.12.5.tgz",
"integrity": "sha512-BREuTgTYlUr0zw0EZn3hnhC3I6gPWv+Kwh4MCih6QcAeaTlaIX0DwOVN0wHej7hSvDPecz4jygy/idsgKfW58Q==",
"hasInstallScript": true,
"bin": {
"vue-demi-fix": "bin/vue-demi-fix.js",
"vue-demi-switch": "bin/vue-demi-switch.js"
},
"engines": {
"node": ">=12"
},
"peerDependencies": {
"@vue/composition-api": "^1.0.0-rc.1",
"vue": "^3.0.0-0 || ^2.6.0"
},
"peerDependenciesMeta": {
"@vue/composition-api": {
"optional": true
}
}
},
"node_modules/emoji-regex": {
"version": "8.0.0",
"resolved": "https://registry.npmmirror.com/emoji-regex/download/emoji-regex-8.0.0.tgz?cache=0&sync_timestamp=1632751333727&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Femoji-regex%2Fdownload%2Femoji-regex-8.0.0.tgz",
@@ -3692,9 +3708,9 @@
}
},
"@ctrl/tinycolor": {
"version": "3.4.0",
"resolved": "https://registry.npmmirror.com/@ctrl/tinycolor/-/tinycolor-3.4.0.tgz",
"integrity": "sha512-JZButFdZ1+/xAfpguQHoabIXkcqRRKpMrWKBkpEZZyxfY9C1DpADFB8PEqGSTeFr135SaTRfKqGKx5xSCLI7ZQ=="
"version": "3.4.1",
"resolved": "https://registry.npmmirror.com/@ctrl/tinycolor/-/tinycolor-3.4.1.tgz",
"integrity": "sha512-ej5oVy6lykXsvieQtqZxCOaLT+xD4+QNarq78cIYISHmZXshCvROLudpQN3lfL8G0NL7plMSSK+zlyvCaIJ4Iw=="
},
"@element-plus/icons-vue": {
"version": "1.1.4",
@@ -3737,16 +3753,16 @@
}
},
"@floating-ui/core": {
"version": "0.6.1",
"resolved": "https://registry.npmmirror.com/@floating-ui/core/-/core-0.6.1.tgz",
"integrity": "sha512-Y30eVMcZva8o84c0HcXAtDO4BEzPJMvF6+B7x7urL2xbAqVsGJhojOyHLaoQHQYjb6OkqRq5kO+zeySycQwKqg=="
"version": "0.6.2",
"resolved": "https://registry.npmmirror.com/@floating-ui/core/-/core-0.6.2.tgz",
"integrity": "sha512-jktYRmZwmau63adUG3GKOAVCofBXkk55S/zQ94XOorAHhwqFIOFAy1rSp2N0Wp6/tGbe9V3u/ExlGZypyY17rg=="
},
"@floating-ui/dom": {
"version": "0.4.2",
"resolved": "https://registry.npmmirror.com/@floating-ui/dom/-/dom-0.4.2.tgz",
"integrity": "sha512-2/4vOhMAujkMmGqGX1Gut84phe5MNfk1kGeM+RSTJCpeR0SWR2/RR+/f1r1msOvTQa28wn7HEhxGe71CjYY/vw==",
"version": "0.4.5",
"resolved": "https://registry.npmmirror.com/@floating-ui/dom/-/dom-0.4.5.tgz",
"integrity": "sha512-b+prvQgJt8pieaKYMSJBXHxX/DYwdLsAWxKYqnO5dO2V4oo/TYBZJAUQCVNjTWWsrs6o4VDrNcP9+E70HAhJdw==",
"requires": {
"@floating-ui/core": "^0.6.1"
"@floating-ui/core": "^0.6.2"
}
},
"@humanwhocodes/config-array": {
@@ -3793,9 +3809,9 @@
}
},
"@popperjs/core": {
"version": "2.11.4",
"resolved": "https://registry.npmmirror.com/@popperjs/core/-/core-2.11.4.tgz",
"integrity": "sha512-q/ytXxO5NKvyT37pmisQAItCFqA7FD/vNb8dgaJy3/630Fsc+Mz9/9f2SziBoIZ30TJooXyTwZmhi1zjXmObYg=="
"version": "npm:@sxzz/popperjs-es@2.11.7",
"resolved": "https://registry.npmmirror.com/@sxzz/popperjs-es/-/popperjs-es-2.11.7.tgz",
"integrity": "sha512-Ccy0NlLkzr0Ex2FKvh2X+OyERHXJ88XJ1MXtsI9y9fGexlaXaVTPzBCRBwIxFkORuOb+uBqeu+RqnpgYTEZRUQ=="
},
"@rollup/pluginutils": {
"version": "4.1.1",
@@ -3819,6 +3835,19 @@
"integrity": "sha1-l+3JA36gw4WFMgsolk3eOznkZg0=",
"dev": true
},
"@types/lodash": {
"version": "4.14.182",
"resolved": "https://registry.npmmirror.com/@types/lodash/-/lodash-4.14.182.tgz",
"integrity": "sha512-/THyiqyQAP9AfARo4pF+aCGcyiQ94tX/Is2I7HofNRqoYLgN1PBoOWu2/zTA5zMxzP5EFutMtWtGAFRKUe961Q=="
},
"@types/lodash-es": {
"version": "4.17.6",
"resolved": "https://registry.npmmirror.com/@types/lodash-es/-/lodash-es-4.17.6.tgz",
"integrity": "sha512-R+zTeVUKDdfoRxpAryaQNRKk3105Rrgx2CFRClIgRGaqDTdjsm8h6IYA8ir584W3ePzkZfst5xIgDwYrlh9HLg==",
"requires": {
"@types/lodash": "*"
}
},
"@typescript-eslint/eslint-plugin": {
"version": "5.4.0",
"resolved": "https://registry.npmmirror.com/@typescript-eslint/eslint-plugin/download/@typescript-eslint/eslint-plugin-5.4.0.tgz",
@@ -4021,36 +4050,10 @@
"resolved": "https://registry.npmmirror.com/@vue/shared/download/@vue/shared-3.2.22.tgz?cache=0&sync_timestamp=1636948014607&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2F%40vue%2Fshared%2Fdownload%2F%40vue%2Fshared-3.2.22.tgz",
"integrity": "sha512-qWVav014mpjEtbWbEgl0q9pEyrrIySKum8UVYjwhC6njrKzknLZPvfuYdQyVbApsqr94tf/3dP4pCuZmmjdCWQ=="
},
"@vueuse/core": {
"version": "8.2.0",
"resolved": "https://registry.npmmirror.com/@vueuse/core/-/core-8.2.0.tgz",
"integrity": "sha512-89ZfKtFHz5ynfpWyFVXtK0yePJ2MZqFaOxnGeZn7cIp8KFbPRlu6Wsxi3gBkJNpjq+q9qbEh6MjV7QBvqCQ5Og==",
"requires": {
"@vueuse/metadata": "8.2.0",
"@vueuse/shared": "8.2.0",
"vue-demi": "*"
},
"dependencies": {
"@vueuse/shared": {
"version": "8.2.0",
"resolved": "https://registry.npmmirror.com/@vueuse/shared/-/shared-8.2.0.tgz",
"integrity": "sha512-dTw7EJZgZCgG9DoVAiz4LtmKnIFXuE/idUFzvqRAJLjbPiVJc+qQH5kDUdKHI3W1U9t//1mdasQEKONArburiQ==",
"requires": {
"vue-demi": "*"
}
},
"vue-demi": {
"version": "0.12.4",
"resolved": "https://registry.npmmirror.com/vue-demi/-/vue-demi-0.12.4.tgz",
"integrity": "sha512-ztPDkFt0TSUdoq1ZI6oD730vgztBkiByhUW7L1cOTebiSBqSYfSQgnhYakYigBkyAybqCTH7h44yZuDJf2xILQ==",
"requires": {}
}
}
},
"@vueuse/metadata": {
"version": "8.2.0",
"resolved": "https://registry.npmmirror.com/@vueuse/metadata/-/metadata-8.2.0.tgz",
"integrity": "sha512-cbaezEccNuxQC+OiudG9VjZNg9/RbAAHkyuhC6+8Gsgsc+MvDhfn1NrV6NNTaldLlZgJFgUiYOkrf3JGTTTGXQ=="
"version": "8.5.0",
"resolved": "https://registry.npmmirror.com/@vueuse/metadata/-/metadata-8.5.0.tgz",
"integrity": "sha512-WxsD+Cd+bn+HcjpY6Dl9FJ8ywTRTT9pTwk3bCQpzEhXVYAyNczKDSahk50fCfIJKeWHhyI4B2+/ZEOxQAkUr0g=="
},
"acorn": {
"version": "8.6.0",
@@ -4135,9 +4138,9 @@
"dev": true
},
"async-validator": {
"version": "4.0.7",
"resolved": "https://registry.npmmirror.com/async-validator/-/async-validator-4.0.7.tgz",
"integrity": "sha512-Pj2IR7u8hmUEDOwB++su6baaRi+QvsgajuFB9j95foM1N2gy5HM4z60hfusIO0fBPG5uLAEl6yCJr1jNSVugEQ=="
"version": "4.1.1",
"resolved": "https://registry.npmmirror.com/async-validator/-/async-validator-4.1.1.tgz",
"integrity": "sha512-p4DO/JXwjs8klJyJL8Q2oM4ks5fUTze/h5k10oPPKMiLe1fj3G1QMzPHNmN1Py4ycOk7WlO2DcGXv1qiESJCZA=="
},
"asynckit": {
"version": "0.4.0",
@@ -4426,9 +4429,9 @@
}
},
"dayjs": {
"version": "1.11.0",
"resolved": "https://registry.npmmirror.com/dayjs/-/dayjs-1.11.0.tgz",
"integrity": "sha512-JLC809s6Y948/FuCZPm5IX8rRhQwOiyMb2TfVVQEixG7P8Lm/gt5S7yoQZmC8x1UehI9Pb7sksEt4xx14m+7Ug=="
"version": "1.11.2",
"resolved": "https://registry.npmmirror.com/dayjs/-/dayjs-1.11.2.tgz",
"integrity": "sha512-F4LXf1OeU9hrSYRPTTj/6FbO4HTjPKXvEIC1P2kcnFurViINCVk3ZV0xAS3XVx9MkMsXbbqlK6hjseaYbgKEHw=="
},
"debug": {
"version": "4.3.4",
@@ -4489,23 +4492,53 @@
"dev": true
},
"element-plus": {
"version": "2.1.7",
"resolved": "https://registry.npmmirror.com/element-plus/-/element-plus-2.1.7.tgz",
"integrity": "sha512-jamE9F/a2rfAQJwf3kLaDfWXxhjXuAJAvrto76SLJsJfr3iIUAzC849RHdn6h7tNJy9Yanq8GlQAsdBe5lJmrA==",
"version": "2.2.0",
"resolved": "https://registry.npmmirror.com/element-plus/-/element-plus-2.2.0.tgz",
"integrity": "sha512-zxmAFEAa1T/n09rR+NozXcWl5CjaFtqoaxhFSafag0dgc90tgEHitDXfegdFAl4ahugdNTqu9aLzngx3VhDAtA==",
"requires": {
"@ctrl/tinycolor": "^3.4.0",
"@ctrl/tinycolor": "^3.4.1",
"@element-plus/icons-vue": "^1.1.4",
"@floating-ui/dom": "^0.4.1",
"@popperjs/core": "^2.11.4",
"@vueuse/core": "^8.1.2",
"@floating-ui/dom": "^0.4.5",
"@popperjs/core": "npm:@sxzz/popperjs-es@^2.11.6",
"@types/lodash": "^4.14.182",
"@types/lodash-es": "^4.17.6",
"@vueuse/core": "^8.2.6",
"async-validator": "^4.0.7",
"dayjs": "^1.11.0",
"dayjs": "^1.11.1",
"escape-html": "^1.0.3",
"lodash": "^4.17.21",
"lodash-es": "^4.17.21",
"lodash-unified": "^1.0.2",
"memoize-one": "^6.0.0",
"normalize-wheel-es": "^1.1.1"
"normalize-wheel-es": "^1.1.2"
},
"dependencies": {
"@vueuse/core": {
"version": "8.5.0",
"resolved": "https://registry.npmmirror.com/@vueuse/core/-/core-8.5.0.tgz",
"integrity": "sha512-VEJ6sGNsPlUp0o9BGda2YISvDZbhWJSOJu5zlp2TufRGVrLcYUKr31jyFEOj6RXzG3k/H4aCYeZyjpItfU8glw==",
"requires": {
"@vueuse/metadata": "8.5.0",
"@vueuse/shared": "8.5.0",
"vue-demi": "*"
},
"dependencies": {
"@vueuse/shared": {
"version": "8.5.0",
"resolved": "https://registry.npmmirror.com/@vueuse/shared/-/shared-8.5.0.tgz",
"integrity": "sha512-qKG+SZb44VvGD4dU5cQ63z4JE2Yk39hQUecR0a9sEdJA01cx+XrxAvFKJfPooxwoiqalAVw/ktWK6xbyc/jS3g==",
"requires": {
"vue-demi": "*"
}
},
"vue-demi": {
"version": "0.12.5",
"resolved": "https://registry.npmmirror.com/vue-demi/-/vue-demi-0.12.5.tgz",
"integrity": "sha512-BREuTgTYlUr0zw0EZn3hnhC3I6gPWv+Kwh4MCih6QcAeaTlaIX0DwOVN0wHej7hSvDPecz4jygy/idsgKfW58Q==",
"requires": {}
}
}
}
}
},
"emoji-regex": {

+ 1
- 1
package.json Visa fil

@@ -12,7 +12,7 @@
"@element-plus/icons-vue": "^1.1.4",
"axios": "^0.27.2",
"babel-polyfill": "^6.26.0",
"element-plus": "^2.1.7",
"element-plus": "^2.2.0",
"file-saver": "^2.0.5",
"fuse.js": "^6.5.3",
"js-cookie": "^3.0.1",

+ 12
- 6
src/crud/components/CRUD.operation.vue Visa fil

@@ -1,19 +1,19 @@
<template>
<div class="as-layout-horizontal">
<!-- CUD 按钮组件 -->
<el-button type="primary" icon="Plus" @click="toAdd"> 新增 </el-button>
<el-button :disabled="DEdit" type="success" icon="Edit" @click="toEdit">
<el-button v-if="processData.crud.add" type="primary" icon="Plus" @click="toAdd"> 新增 </el-button>
<el-button v-if="processData.crud.edit" :disabled="DEdit" type="success" icon="Edit" @click="toEdit">
修改
</el-button>
<el-button :disabled="DDelete" type="danger" icon="Delete" @click="toDelete">
<el-button v-if="processData.crud.delete" :disabled="DDelete" type="danger" icon="Delete" @click="toDelete">
删除
</el-button>
<el-button type="warning" icon="Download"> 导出 </el-button>
<el-button v-if="processData.crud.derive" type="warning" icon="Download"> 导出 </el-button>
<div class="as-weight" />
<!-- 搜索-刷新-->
<el-button-group v-if="child">
<el-button plain :type="SSearch ? 'info' : 'default'" icon="Search" @click="toSearch" />
<el-button icon="Refresh" @click="toRefresh" />
<el-button v-if="processData.crud.search" plain :type="SSearch ? 'info' : 'default'" icon="Search" @click="toSearch" />
<el-button v-if="processData.crud.refresh" type="default" icon="Refresh" @click="toRefresh" />
</el-button-group>
</div>
</template>
@@ -38,6 +38,12 @@ const props = defineProps({
child: { //子类是否显示
default: true,
type: Boolean
},
processData:{
type: Object,
default: function () {
return {}
}
}
})


+ 17
- 15
src/crud/components/UD.operation.vue Visa fil

@@ -1,6 +1,6 @@
<!-- 默认插槽值 -->
<template>
<el-button v-if="isEdit" size="small" @click="handleEdit(scope.$index, scope.row)">编辑</el-button>
<el-button v-if="isEdit" type="default" size="small" @click="handleEdit(scope.$index, scope.row)">编辑</el-button>
<!-- 弹出框提示 trigger="click" -->
<el-popover v-if="isDelete" trigger="click" v-model:visible="scope.row.visible" placement="top" :width="160">
<div>
@@ -8,7 +8,7 @@
<span>是否确认删除该条数据?</span>
</div>
<div class="as-layout-horizontal">
<el-button type="text" @click="scope.row.visible = false" style="width: 100%;">取消</el-button>
<el-button type="default" @click="scope.row.visible = false" style="width: 100%;">取消</el-button>
<el-button type="primary" @click="handleDelete(scope.$index, scope.row)" style="color: #fff;
margin-right: 10px;">确认</el-button>
</div>
@@ -59,25 +59,27 @@ const handleEdit = (idx: number, row: any) => {

//删除弹窗
const hintDelete = (scope: any, data: any) => {
let toolData: any = []
data.forEach((element: any, index: number) => {
if (element.children && element.children.length > 0) {
hintDelete(scope, element.children)
if (props.rowKey) {
if (scope.row[props.rowKey] === element.title) {
element.visible = true
} else {
element.visible = false
}
} else {
if (props.rowKey) {
if (scope.row[props.rowKey] === element.title) {
element.visible = true
} else {
element.visible = false
}
if (scope.$index === index) {
element.visible = true
} else {
if (scope.$index === index) {
element.visible = true
} else {
element.visible = false
}
element.visible = false
}
}
if (element.children && element.children.length > 0) {
hintDelete(scope, element.children)
}
});


}
</script>
<style scoped>

+ 8
- 0
src/crud/config.ts Visa fil

@@ -43,6 +43,14 @@ export const defaultOptions: {} = {
dialogFooter: false, //隐藏弹窗页脚显示 (默认false)
crudShow: true, //是否显示CURD操作栏 (默认true)
crudChildShow: true, //是否显示CURD子操作栏 (默认true)
crud: {
add: true,
edit: false,
delete: false,
derive: false,
search: false,
refresh: true
},
operateShow: true, //是否为表格添加操作栏(默认true)
operateTitle: '', //操作栏标题(默认为"")
operateFixed: false, //操作栏是否固定(默认false)

+ 16
- 9
src/crud/index.vue Visa fil

@@ -8,9 +8,9 @@
</search-operation>
</div>
<!-- CRUD组件 -->
<crud-operation v-if="tableFrom.crudShow" style="margin-bottom: 10px;" @toAdd="toAdd" @toEdit="toEdit" @toDelete="toDelete"
@toRefresh="toRefresh" @toSearch="toSearch" :DEdit="EStart" :DDelete="DStart" :SSearch="SSearch"
:child="tableFrom.crudChildShow">
<crud-operation v-if="tableFrom.crudShow" style="margin-bottom: 10px;" @toAdd="toAdd" @toEdit="toEdit"
@toDelete="toDelete" @toRefresh="toRefresh" @toSearch="toSearch" :DEdit="EStart" :DDelete="DStart"
:SSearch="SSearch" :processData="processData" :child="tableFrom.crudChildShow">
</crud-operation>
<!-- 表单组件 -->
<el-table ref="multipleTableRef" :data="testData" @selection-change="handleSelectionChange"
@@ -40,7 +40,8 @@
<!-- 分页组件 -->
<el-pagination v-if="false" :page-size="20" :pager-count="11" layout="prev, pager, next" :total="1000" />
<!-- 对话框 -->
<el-dialog v-model="dialogFormVisible" :title="tableFrom.titleDialog ? tableFrom.titleDialog : `${title}`">
<el-dialog v-model="dialogFormVisible" width="40%"
:title="tableFrom.titleDialog ? tableFrom.titleDialog : `${title}`">
<!-- 是否自定义Dialog -->
<div v-if="tableFrom.dialogCustom">
<slot name="dialog" :form="form" />
@@ -75,7 +76,7 @@

<template #footer>
<span v-if="!tableFrom.dialogFooter">
<el-button @click="cancel">取消</el-button>
<el-button type="default" @click="cancel">取消</el-button>
<el-button type="primary" @click="affirm(ruleFormRef)">提交</el-button>
</span>
<slot name="footer" />
@@ -240,6 +241,7 @@ const handleSelectionChange = (val: any) => {
//表单提交
const affirm = (formEl: any) => {
if (!formEl) {
emit('submit')
return
}
formEl.validate((valid: any, fields: any) => {
@@ -250,16 +252,20 @@ const affirm = (formEl: any) => {
} else {
testData.value.push(form.value)
}
emit('search', form.value)
index = -1 //重置标识
dialogFormVisible.value = false
multipleTableRef.value.clearSelection() //清空多选
emit('submit', toRaw(form.value))
reset()
} else {
return false
}
})
}

function reset() {
index = -1 //重置标识
dialogFormVisible.value = false
multipleTableRef.value.clearSelection() //清空多选
}

//取消
const cancel = () => {
dialogFormVisible.value = false
@@ -287,6 +293,7 @@ const handleDelete = (idx: any, row: any) => {
defineExpose({
dialogFormVisible,
title,
reset
})
</script>
<style lang="scss">

+ 6
- 1
src/data/menuData.ts Visa fil

@@ -134,6 +134,11 @@ export const list = [
path: 'menu',
icon: 'User',
children: []
},{
title: '部门管理',
path: 'department',
icon: 'HomeFilled',
children: []
}]
}
}
];

+ 2
- 2
src/layout/components/Head.vue Visa fil

@@ -19,11 +19,11 @@
<!-- 弹出框提示 -->
<el-popover v-model:visible="visible" placement="bottom" :width="160">
<div class="as-layout-vertical">
<el-button type="text" @click="hint('个人中心')" class="as-text-14px" style="width: 100%"
<el-button type="default" @click="hint('个人中心')" class="as-text-14px" style="width: 100%"
>个人中心</el-button
>
<el-button
type="text"
type="default"
@click="hint('退出登录')"
class="as-text-14px"
style="margin-right: 10px"

+ 9
- 1
src/router/index.ts Visa fil

@@ -21,10 +21,18 @@ const routes: RouteRecordRaw[] = [
key: () => import('@/views/system/home/Home.vue'),
},
},
{
path: '/views/system/department',
name: 'department',
meta: { title: '部门管理', isAuth: true }, //用户自定内容
components: {
key: () => import('@/views/system/department/department.vue'),
},
},
{
path: '/views/system/menu',
name: 'menu',
meta: { title: '菜单模块', isAuth: true }, //用户自定内容
meta: { title: '菜单管理', isAuth: true }, //用户自定内容
components: {
key: () => import('@/views/system/menu/index.vue'),
},

+ 15
- 3
src/utils/offLineData.ts Visa fil

@@ -8,7 +8,11 @@ import Cookies from 'js-cookie'
*/
export function add(key: string, value: any) {
let array: any = JSON.parse(Cookies.get(key) ? Cookies.get(key) + '' : '[]')
array.push(value)
if (array.length === 0) {
array = value
} else {
array.push(value)
}
Cookies.set(key, JSON.stringify(array))
}

@@ -16,8 +20,8 @@ export function add(key: string, value: any) {
* 获取
* @param key
*/
export function get(key: string) {
return JSON.parse(Cookies.get(key) + '')
export function get(key: string) {
return Cookies.get(key) ? JSON.parse(Cookies.get(key) + '') : []
}

/**
@@ -36,4 +40,12 @@ function remove(key: string, value: any) {
*/
function update(key: string, value: any) {

}

/**
* 清空
* @param key
*/
export function empty(key: string) {
Cookies.remove(key)
}

+ 176
- 0
src/views/system/department/department.vue Visa fil

@@ -0,0 +1,176 @@
<template>
<crud-template ref="crud" :home-data="field" :tableData="testData" @submit="submit" @handleEdit="handleEdit">
<template #dialog>
<el-form :inline="false" ref="ruleFormRef" :rules="rules" :model="item">

<el-form-item class="as-bold" :label-width="labelWidth" label="名称" prop="title">
<div style="width: 100%">
<el-input v-model="item.title" placeholder="请输入部门名称"></el-input>
</div>
</el-form-item>

<el-form-item class="as-bold" :label-width="labelWidth" label="排序">
<!-- 简单解决sort类型问题 -->
<div v-show="false">
{{ item.sort = Number(item.sort) }}
</div>
<el-input-number class="el-input-number" v-model="item.sort" style="width: 100%;"
controls-position="right">
</el-input-number>
</el-form-item>

<div class="as-layout-horizontal">
<el-form-item class="as-weight as-bold" :label-width="labelWidth" label="顶级部门">
<el-radio-group v-model="item.top" @change="change">
<el-radio label="是" />
<el-radio label="否" />
</el-radio-group>
</el-form-item>

<el-form-item class="as-weight as-bold" :label-width="labelWidth" label="状态">
<el-radio-group v-model="item.start">
<el-radio label="启用" />
<el-radio label="禁用" />
</el-radio-group>
</el-form-item>
</div>

<el-form-item v-show="topStart" class="as-bold" :label-width="labelWidth" label="上级部门">
<el-tree-select v-model="item.section" :data="threeData" />
</el-form-item>

</el-form>
</template>
</crud-template>
</template>
<!-- 部门管理模块 -->
<script lang="ts" setup>
// @ts-ignore crudFrom模板
import CrudTemplate from "@/crud/index.vue"
import { add, get, empty } from "@/utils/offLineData"
import { reactive, ref, toRaw } from 'vue'

const labelWidth = '80px'
const topStart = ref(false)
const initData = [
{
title: '黔通智联',
sort: 1,
start: '启用',
top: '是',
children: [{
title: '部门一',
start: '启用',
top: '否',
sort: 2,
children: []
}]
},
{
title: '世纪恒通',
sort: 3,
start: '启用',
top: '是',
children: [{
title: '部门二',
start: '启用',
top: '否',
sort: 4
}]
}]

const threeData = [
{
value: '黔通智联',
label: '黔通智联',
children: [
{
value: '部门一',
label: '部门一',
children: [],
},
],
}, {
value: '世纪恒通',
label: '世纪恒通',
children: [
{
value: '部门二',
label: '部门二',
children: [],
},
],
},
]

let item = ref({
title: '',
sort: 0,
top: '是',
start: '启用',
section: ''
})

//切换事件
const change = (event: any) => {
console.log(event);
if (event === '是') {
topStart.value = false;
} else {
topStart.value = true;
}
}

//编辑事件
const handleEdit = (idx: any, row: any) => {
console.log(row);

item.value = toRaw(row)
}

//表单校验
const ruleFormRef: any = ref()
const crud: any = ref()
const rules = reactive({ title: [{ required: true, message: '请输入部门名称', trigger: 'blur' }] })

empty('department')
if (get('department').length === 0) {
add('department', initData)
}
const testData: any = get('department')

const field = {
rowKey: 'title',
searchShow: false,
crudShow: true,
dialogCustom: true,
field: [{
prop: 'title',
label: '名称',
}, {
prop: 'sort',
label: '排序',
}, {
prop: 'start',
label: '状态',
}]
}

const submit = () => {
ruleFormRef.value.validate((valid: any, fields: any) => {
if (valid) {
console.log(item, ruleFormRef);
crud.value.reset()
} else {
return false
}
})
}

</script>
<style scoped>
/*数字文本框文本对齐方式 */
/deep/ .el-input-number .el-input__inner {
text-align: left;
}
</style>

+ 137
- 10
src/views/system/home/Home.vue Visa fil

@@ -1,38 +1,147 @@
<template>
<crud-template :home-data="field" :tableData="testData">
<crud-template ref="crud" :home-data="field" :tableData="testData" @submit="submit" @handleEdit="handleEdit">
<template #dialog>
<el-form :inline="false" ref="ruleFormRef" :rules="rules" :model="item">

<el-form-item class="as-bold" :label-width="labelWidth" label="名称" prop="title">
<div style="width: 100%">
<el-input v-model="item.title" placeholder="请输入部门名称"></el-input>
</div>
</el-form-item>

<el-form-item class="as-bold" :label-width="labelWidth" label="排序">
<!-- 简单解决sort类型问题 -->
<div v-show="false">
{{ item.sort = Number(item.sort) }}
</div>
<el-input-number class="el-input-number" v-model="item.sort" style="width: 100%;" controls-position="right">
</el-input-number>
</el-form-item>

<div class="as-layout-horizontal">
<el-form-item class="as-weight as-bold" :label-width="labelWidth" label="顶级部门">
<el-radio-group v-model="item.top" @change="change">
<el-radio label="是" />
<el-radio label="否" />
</el-radio-group>
</el-form-item>

<el-form-item class="as-weight as-bold" :label-width="labelWidth" label="状态">
<el-radio-group v-model="item.start">
<el-radio label="启用" />
<el-radio label="禁用" />
</el-radio-group>
</el-form-item>
</div>

<el-form-item v-show="topStart" class="as-bold" :label-width="labelWidth" label="上级部门">
<el-tree-select v-model="item.section" :data="threeData" />
</el-form-item>

</el-form>
</template>
</crud-template>
</template>
<script lang="ts" setup>
// @ts-ignore crudFrom模板
import CrudTemplate from "@/crud/index.vue"
import { add, get, empty } from "@/utils/offLineData"
import { reactive, ref, toRaw } from 'vue'

const testData: any = [
const labelWidth = '80px'
const topStart = ref(false)
const initData = [
{
title: '黔通智联',
sort: '1',
sort: 1,
start: '启用',
top: '是',
children: [{
title: '部门一',
start: '启用',
sort: '2'
top: '否',
sort: 2,
children: []
}]
},
{
title: '世纪恒通',
sort: '3',
sort: 3,
start: '启用',
top: '是',
children: [{
title: '部门二',
start: '启用',
sort: '4'
top: '否',
sort: 4
}]
}
}]

const threeData = [
{
value: '黔通智联',
label: '黔通智联',
children: [
{
value: '部门一',
label: '部门一',
children: [],
},
],
}, {
value: '世纪恒通',
label: '世纪恒通',
children: [
{
value: '部门二',
label: '部门二',
children: [],
},
],
},
]

let item = ref({
title: '',
sort: 0,
top: '是',
start: '启用',
section: ''
})

//切换事件
const change = (event: any) => {
console.log(event);
if (event === '是') {
topStart.value = false;
} else {
topStart.value = true;
}
}

//编辑事件
const handleEdit = (idx: any, row: any) => {
console.log(row);
item.value = toRaw(row)
}

//表单校验
const ruleFormRef: any = ref()
const crud: any = ref()
const rules = reactive({ title: [{ required: true, message: '请输入部门名称', trigger: 'blur' }] })

empty('department')
if (get('department').length === 0) {
add('department', initData)
}
const testData: any = get('department')

const field = {
rowKey: 'title',
rowKey: 'title',
searchShow: false,
crudShow: false,
crudShow: true,
dialogCustom: true,
field: [{
prop: 'title',
label: '名称',
@@ -44,4 +153,22 @@ const field = {
label: '状态',
}]
}
</script>

const submit = () => {
ruleFormRef.value.validate((valid: any, fields: any) => {
if (valid) {
console.log(item, ruleFormRef);
crud.value.reset()
} else {
return false
}
})
}

</script>
<style scoped>
/*数字文本框文本对齐方式 */
/deep/ .el-input-number .el-input__inner {
text-align: left;
}
</style>

+ 66
- 52
yarn.lock Visa fil

@@ -36,10 +36,10 @@
"@babel/helper-validator-identifier" "^7.15.7"
"to-fast-properties" "^2.0.0"

"@ctrl/tinycolor@^3.4.0":
"integrity" "sha512-JZButFdZ1+/xAfpguQHoabIXkcqRRKpMrWKBkpEZZyxfY9C1DpADFB8PEqGSTeFr135SaTRfKqGKx5xSCLI7ZQ=="
"resolved" "https://registry.npmmirror.com/@ctrl/tinycolor/-/tinycolor-3.4.0.tgz"
"version" "3.4.0"
"@ctrl/tinycolor@^3.4.1":
"integrity" "sha512-ej5oVy6lykXsvieQtqZxCOaLT+xD4+QNarq78cIYISHmZXshCvROLudpQN3lfL8G0NL7plMSSK+zlyvCaIJ4Iw=="
"resolved" "https://registry.npmmirror.com/@ctrl/tinycolor/-/tinycolor-3.4.1.tgz"
"version" "3.4.1"

"@element-plus/icons-vue@^1.1.4":
"integrity" "sha512-Iz/nHqdp1sFPmdzRwHkEQQA3lKvoObk8azgABZ81QUOpW9s/lUyQVUSh0tNtEPZXQlKwlSh7SPgoVxzrE0uuVQ=="
@@ -76,17 +76,17 @@
"minimatch" "^3.0.4"
"strip-json-comments" "^3.1.1"

"@floating-ui/core@^0.6.1":
"integrity" "sha512-Y30eVMcZva8o84c0HcXAtDO4BEzPJMvF6+B7x7urL2xbAqVsGJhojOyHLaoQHQYjb6OkqRq5kO+zeySycQwKqg=="
"resolved" "https://registry.npmmirror.com/@floating-ui/core/-/core-0.6.1.tgz"
"version" "0.6.1"
"@floating-ui/core@^0.6.2":
"integrity" "sha512-jktYRmZwmau63adUG3GKOAVCofBXkk55S/zQ94XOorAHhwqFIOFAy1rSp2N0Wp6/tGbe9V3u/ExlGZypyY17rg=="
"resolved" "https://registry.npmmirror.com/@floating-ui/core/-/core-0.6.2.tgz"
"version" "0.6.2"

"@floating-ui/dom@^0.4.1":
"integrity" "sha512-2/4vOhMAujkMmGqGX1Gut84phe5MNfk1kGeM+RSTJCpeR0SWR2/RR+/f1r1msOvTQa28wn7HEhxGe71CjYY/vw=="
"resolved" "https://registry.npmmirror.com/@floating-ui/dom/-/dom-0.4.2.tgz"
"version" "0.4.2"
"@floating-ui/dom@^0.4.5":
"integrity" "sha512-b+prvQgJt8pieaKYMSJBXHxX/DYwdLsAWxKYqnO5dO2V4oo/TYBZJAUQCVNjTWWsrs6o4VDrNcP9+E70HAhJdw=="
"resolved" "https://registry.npmmirror.com/@floating-ui/dom/-/dom-0.4.5.tgz"
"version" "0.4.5"
dependencies:
"@floating-ui/core" "^0.6.1"
"@floating-ui/core" "^0.6.2"

"@humanwhocodes/config-array@^0.5.0":
"integrity" "sha1-FAeWfUxu7Nc4j4Os8er00Mbljvk="
@@ -132,10 +132,10 @@
"@nodelib/fs.scandir" "2.1.5"
"fastq" "^1.6.0"

"@popperjs/core@^2.11.4":
"integrity" "sha512-q/ytXxO5NKvyT37pmisQAItCFqA7FD/vNb8dgaJy3/630Fsc+Mz9/9f2SziBoIZ30TJooXyTwZmhi1zjXmObYg=="
"resolved" "https://registry.npmmirror.com/@popperjs/core/-/core-2.11.4.tgz"
"version" "2.11.4"
"@popperjs/core@npm:@sxzz/popperjs-es@^2.11.6":
"integrity" "sha512-Ccy0NlLkzr0Ex2FKvh2X+OyERHXJ88XJ1MXtsI9y9fGexlaXaVTPzBCRBwIxFkORuOb+uBqeu+RqnpgYTEZRUQ=="
"resolved" "https://registry.npmmirror.com/@sxzz/popperjs-es/-/popperjs-es-2.11.7.tgz"
"version" "2.11.7"

"@rollup/pluginutils@^4.1.0":
"integrity" "sha1-HU2obdTt7RVlalfZM/2iuaCNR+w="
@@ -155,6 +155,18 @@
"resolved" "https://registry.npmmirror.com/@types/json-schema/download/@types/json-schema-7.0.9.tgz?cache=0&sync_timestamp=1637266073261&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2F%40types%2Fjson-schema%2Fdownload%2F%40types%2Fjson-schema-7.0.9.tgz"
"version" "7.0.9"

"@types/lodash-es@*", "@types/lodash-es@^4.17.6":
"integrity" "sha512-R+zTeVUKDdfoRxpAryaQNRKk3105Rrgx2CFRClIgRGaqDTdjsm8h6IYA8ir584W3ePzkZfst5xIgDwYrlh9HLg=="
"resolved" "https://registry.npmmirror.com/@types/lodash-es/-/lodash-es-4.17.6.tgz"
"version" "4.17.6"
dependencies:
"@types/lodash" "*"

"@types/lodash@*", "@types/lodash@^4.14.182":
"integrity" "sha512-/THyiqyQAP9AfARo4pF+aCGcyiQ94tX/Is2I7HofNRqoYLgN1PBoOWu2/zTA5zMxzP5EFutMtWtGAFRKUe961Q=="
"resolved" "https://registry.npmmirror.com/@types/lodash/-/lodash-4.14.182.tgz"
"version" "4.14.182"

"@typescript-eslint/eslint-plugin@^5.4.0":
"integrity" "sha512-9/yPSBlwzsetCsGEn9j24D8vGQgJkOTr4oMLas/w886ZtzKIs1iyoqFrwsX2fqYEeUwsdBpC21gcjRGo57u0eg=="
"resolved" "https://registry.npmmirror.com/@typescript-eslint/eslint-plugin/download/@typescript-eslint/eslint-plugin-5.4.0.tgz"
@@ -325,24 +337,24 @@
"resolved" "https://registry.npmmirror.com/@vue/shared/download/@vue/shared-3.2.22.tgz?cache=0&sync_timestamp=1636948014607&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2F%40vue%2Fshared%2Fdownload%2F%40vue%2Fshared-3.2.22.tgz"
"version" "3.2.22"

"@vueuse/core@^8.1.2":
"integrity" "sha512-89ZfKtFHz5ynfpWyFVXtK0yePJ2MZqFaOxnGeZn7cIp8KFbPRlu6Wsxi3gBkJNpjq+q9qbEh6MjV7QBvqCQ5Og=="
"resolved" "https://registry.npmmirror.com/@vueuse/core/-/core-8.2.0.tgz"
"version" "8.2.0"
"@vueuse/core@^8.2.6":
"integrity" "sha512-VEJ6sGNsPlUp0o9BGda2YISvDZbhWJSOJu5zlp2TufRGVrLcYUKr31jyFEOj6RXzG3k/H4aCYeZyjpItfU8glw=="
"resolved" "https://registry.npmmirror.com/@vueuse/core/-/core-8.5.0.tgz"
"version" "8.5.0"
dependencies:
"@vueuse/metadata" "8.2.0"
"@vueuse/shared" "8.2.0"
"@vueuse/metadata" "8.5.0"
"@vueuse/shared" "8.5.0"
"vue-demi" "*"

"@vueuse/metadata@8.2.0":
"integrity" "sha512-cbaezEccNuxQC+OiudG9VjZNg9/RbAAHkyuhC6+8Gsgsc+MvDhfn1NrV6NNTaldLlZgJFgUiYOkrf3JGTTTGXQ=="
"resolved" "https://registry.npmmirror.com/@vueuse/metadata/-/metadata-8.2.0.tgz"
"version" "8.2.0"
"@vueuse/metadata@8.5.0":
"integrity" "sha512-WxsD+Cd+bn+HcjpY6Dl9FJ8ywTRTT9pTwk3bCQpzEhXVYAyNczKDSahk50fCfIJKeWHhyI4B2+/ZEOxQAkUr0g=="
"resolved" "https://registry.npmmirror.com/@vueuse/metadata/-/metadata-8.5.0.tgz"
"version" "8.5.0"

"@vueuse/shared@8.2.0":
"integrity" "sha512-dTw7EJZgZCgG9DoVAiz4LtmKnIFXuE/idUFzvqRAJLjbPiVJc+qQH5kDUdKHI3W1U9t//1mdasQEKONArburiQ=="
"resolved" "https://registry.npmmirror.com/@vueuse/shared/-/shared-8.2.0.tgz"
"version" "8.2.0"
"@vueuse/shared@8.5.0":
"integrity" "sha512-qKG+SZb44VvGD4dU5cQ63z4JE2Yk39hQUecR0a9sEdJA01cx+XrxAvFKJfPooxwoiqalAVw/ktWK6xbyc/jS3g=="
"resolved" "https://registry.npmmirror.com/@vueuse/shared/-/shared-8.5.0.tgz"
"version" "8.5.0"
dependencies:
"vue-demi" "*"

@@ -441,9 +453,9 @@
"version" "2.0.0"

"async-validator@^4.0.7":
"integrity" "sha512-Pj2IR7u8hmUEDOwB++su6baaRi+QvsgajuFB9j95foM1N2gy5HM4z60hfusIO0fBPG5uLAEl6yCJr1jNSVugEQ=="
"resolved" "https://registry.npmmirror.com/async-validator/-/async-validator-4.0.7.tgz"
"version" "4.0.7"
"integrity" "sha512-p4DO/JXwjs8klJyJL8Q2oM4ks5fUTze/h5k10oPPKMiLe1fj3G1QMzPHNmN1Py4ycOk7WlO2DcGXv1qiESJCZA=="
"resolved" "https://registry.npmmirror.com/async-validator/-/async-validator-4.1.1.tgz"
"version" "4.1.1"

"asynckit@^0.4.0":
"integrity" "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q=="
@@ -705,10 +717,10 @@
dependencies:
"chokidar" ">=2.0.0 <4.0.0"

"dayjs@^1.11.0":
"integrity" "sha512-JLC809s6Y948/FuCZPm5IX8rRhQwOiyMb2TfVVQEixG7P8Lm/gt5S7yoQZmC8x1UehI9Pb7sksEt4xx14m+7Ug=="
"resolved" "https://registry.npmmirror.com/dayjs/-/dayjs-1.11.0.tgz"
"version" "1.11.0"
"dayjs@^1.11.1":
"integrity" "sha512-F4LXf1OeU9hrSYRPTTj/6FbO4HTjPKXvEIC1P2kcnFurViINCVk3ZV0xAS3XVx9MkMsXbbqlK6hjseaYbgKEHw=="
"resolved" "https://registry.npmmirror.com/dayjs/-/dayjs-1.11.2.tgz"
"version" "1.11.2"

"debug@^3.2.6":
"integrity" "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ=="
@@ -765,24 +777,26 @@
"resolved" "https://registry.npmmirror.com/electron-to-chromium/-/electron-to-chromium-1.4.100.tgz"
"version" "1.4.100"

"element-plus@^2.1.7":
"integrity" "sha512-jamE9F/a2rfAQJwf3kLaDfWXxhjXuAJAvrto76SLJsJfr3iIUAzC849RHdn6h7tNJy9Yanq8GlQAsdBe5lJmrA=="
"resolved" "https://registry.npmmirror.com/element-plus/-/element-plus-2.1.7.tgz"
"version" "2.1.7"
"element-plus@^2.2.0":
"integrity" "sha512-zxmAFEAa1T/n09rR+NozXcWl5CjaFtqoaxhFSafag0dgc90tgEHitDXfegdFAl4ahugdNTqu9aLzngx3VhDAtA=="
"resolved" "https://registry.npmmirror.com/element-plus/-/element-plus-2.2.0.tgz"
"version" "2.2.0"
dependencies:
"@ctrl/tinycolor" "^3.4.0"
"@ctrl/tinycolor" "^3.4.1"
"@element-plus/icons-vue" "^1.1.4"
"@floating-ui/dom" "^0.4.1"
"@popperjs/core" "^2.11.4"
"@vueuse/core" "^8.1.2"
"@floating-ui/dom" "^0.4.5"
"@popperjs/core" "npm:@sxzz/popperjs-es@^2.11.6"
"@types/lodash" "^4.14.182"
"@types/lodash-es" "^4.17.6"
"@vueuse/core" "^8.2.6"
"async-validator" "^4.0.7"
"dayjs" "^1.11.0"
"dayjs" "^1.11.1"
"escape-html" "^1.0.3"
"lodash" "^4.17.21"
"lodash-es" "^4.17.21"
"lodash-unified" "^1.0.2"
"memoize-one" "^6.0.0"
"normalize-wheel-es" "^1.1.1"
"normalize-wheel-es" "^1.1.2"

"emoji-regex@^8.0.0":
"integrity" "sha1-6Bj9ac5cz8tARZT4QpY79TFkzDc="
@@ -1649,7 +1663,7 @@
"resolved" "https://registry.npmmirror.com/normalize-range/-/normalize-range-0.1.2.tgz"
"version" "0.1.2"

"normalize-wheel-es@^1.1.1":
"normalize-wheel-es@^1.1.2":
"integrity" "sha512-scX83plWJXYH1J4+BhAuIHadROzxX0UBF3+HuZNY2Ks8BciE7tSTQ+5JhTsvzjaO0/EJdm4JBGrfObKxFf3Png=="
"resolved" "https://registry.npmmirror.com/normalize-wheel-es/-/normalize-wheel-es-1.1.2.tgz"
"version" "1.1.2"
@@ -2168,9 +2182,9 @@
"vue-loader" "^16.0.0-alpha.3"

"vue-demi@*":
"integrity" "sha512-ztPDkFt0TSUdoq1ZI6oD730vgztBkiByhUW7L1cOTebiSBqSYfSQgnhYakYigBkyAybqCTH7h44yZuDJf2xILQ=="
"resolved" "https://registry.npmmirror.com/vue-demi/-/vue-demi-0.12.4.tgz"
"version" "0.12.4"
"integrity" "sha512-BREuTgTYlUr0zw0EZn3hnhC3I6gPWv+Kwh4MCih6QcAeaTlaIX0DwOVN0wHej7hSvDPecz4jygy/idsgKfW58Q=="
"resolved" "https://registry.npmmirror.com/vue-demi/-/vue-demi-0.12.5.tgz"
"version" "0.12.5"

"vue-eslint-parser@^8.0.1":
"integrity" "sha1-JeCLIKQUVRUx8+GfmZkC4ez0XxM="

Laddar…
Avbryt
Spara