@@ -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": { |
@@ -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", |
@@ -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 {} | |||
} | |||
} | |||
}) | |||
@@ -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> |
@@ -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) |
@@ -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"> |
@@ -134,6 +134,11 @@ export const list = [ | |||
path: 'menu', | |||
icon: 'User', | |||
children: [] | |||
},{ | |||
title: '部门管理', | |||
path: 'department', | |||
icon: 'HomeFilled', | |||
children: [] | |||
}] | |||
} | |||
} | |||
]; |
@@ -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" |
@@ -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'), | |||
}, |
@@ -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) | |||
} |
@@ -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> |
@@ -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> |
@@ -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=" |