提交 8ad8de5c authored 作者: 王鹏飞's avatar 王鹏飞

chore: update

上级 fdfd11dc
...@@ -204,6 +204,7 @@ ...@@ -204,6 +204,7 @@
"usePreferredDark": true, "usePreferredDark": true,
"usePreferredLanguages": true, "usePreferredLanguages": true,
"usePreferredReducedMotion": true, "usePreferredReducedMotion": true,
"usePrevious": true,
"useRafFn": true, "useRafFn": true,
"useRefHistory": true, "useRefHistory": true,
"useResizeObserver": true, "useResizeObserver": true,
......
...@@ -205,6 +205,7 @@ declare global { ...@@ -205,6 +205,7 @@ declare global {
const usePreferredDark: typeof import('@vueuse/core')['usePreferredDark'] const usePreferredDark: typeof import('@vueuse/core')['usePreferredDark']
const usePreferredLanguages: typeof import('@vueuse/core')['usePreferredLanguages'] const usePreferredLanguages: typeof import('@vueuse/core')['usePreferredLanguages']
const usePreferredReducedMotion: typeof import('@vueuse/core')['usePreferredReducedMotion'] const usePreferredReducedMotion: typeof import('@vueuse/core')['usePreferredReducedMotion']
const usePrevious: typeof import('@vueuse/core')['usePrevious']
const useRafFn: typeof import('@vueuse/core')['useRafFn'] const useRafFn: typeof import('@vueuse/core')['useRafFn']
const useRefHistory: typeof import('@vueuse/core')['useRefHistory'] const useRefHistory: typeof import('@vueuse/core')['useRefHistory']
const useResizeObserver: typeof import('@vueuse/core')['useResizeObserver'] const useResizeObserver: typeof import('@vueuse/core')['useResizeObserver']
......
...@@ -10,12 +10,12 @@ ...@@ -10,12 +10,12 @@
"dependencies": { "dependencies": {
"@element-plus/icons-vue": "^2.0.10", "@element-plus/icons-vue": "^2.0.10",
"@tinymce/tinymce-vue": "^5.0.0", "@tinymce/tinymce-vue": "^5.0.0",
"@vueuse/core": "^9.11.1", "@vueuse/core": "^9.12.0",
"axios": "^1.2.5", "axios": "^1.3.1",
"blueimp-md5": "^2.19.0", "blueimp-md5": "^2.19.0",
"element-plus": "^2.2.28", "element-plus": "^2.2.28",
"pinia": "^2.0.29", "pinia": "^2.0.30",
"vue": "^3.2.45", "vue": "^3.2.47",
"vue-router": "^4.1.6" "vue-router": "^4.1.6"
}, },
"devDependencies": { "devDependencies": {
...@@ -27,13 +27,13 @@ ...@@ -27,13 +27,13 @@
"@vue/tsconfig": "^0.1.3", "@vue/tsconfig": "^0.1.3",
"ali-oss": "^6.17.1", "ali-oss": "^6.17.1",
"chalk": "^5.2.0", "chalk": "^5.2.0",
"eslint": "^8.32.0", "eslint": "^8.33.0",
"eslint-plugin-vue": "^9.9.0", "eslint-plugin-vue": "^9.9.0",
"npm-run-all": "^4.1.5", "npm-run-all": "^4.1.5",
"sass": "^1.57.1", "sass": "^1.58.0",
"typescript": "~4.9.4", "typescript": "~4.9.5",
"unplugin-auto-import": "^0.12.2", "unplugin-auto-import": "^0.13.0",
"vite": "^4.0.4", "vite": "^4.1.1",
"vue-tsc": "^1.0.24" "vue-tsc": "^1.0.24"
} }
}, },
...@@ -71,9 +71,9 @@ ...@@ -71,9 +71,9 @@
} }
}, },
"node_modules/@esbuild/android-arm": { "node_modules/@esbuild/android-arm": {
"version": "0.16.12", "version": "0.16.17",
"resolved": "https://registry.npmmirror.com/@esbuild/android-arm/-/android-arm-0.16.12.tgz", "resolved": "https://registry.npmmirror.com/@esbuild/android-arm/-/android-arm-0.16.17.tgz",
"integrity": "sha512-CTWgMJtpCyCltrvipZrrcjjRu+rzm6pf9V8muCsJqtKujR3kPmU4ffbckvugNNaRmhxAF1ZI3J+0FUIFLFg8KA==", "integrity": "sha512-N9x1CMXVhtWEAMS7pNNONyA14f71VPQN9Cnavj1XQh6T7bskqiLLrSca4O0Vr8Wdcga943eThxnVp3JLnBMYtw==",
"cpu": [ "cpu": [
"arm" "arm"
], ],
...@@ -87,9 +87,9 @@ ...@@ -87,9 +87,9 @@
} }
}, },
"node_modules/@esbuild/android-arm64": { "node_modules/@esbuild/android-arm64": {
"version": "0.16.12", "version": "0.16.17",
"resolved": "https://registry.npmmirror.com/@esbuild/android-arm64/-/android-arm64-0.16.12.tgz", "resolved": "https://registry.npmmirror.com/@esbuild/android-arm64/-/android-arm64-0.16.17.tgz",
"integrity": "sha512-0LacmiIW+X0/LOLMZqYtZ7d4uY9fxYABAYhSSOu+OGQVBqH4N5eIYgkT7bBFnR4Nm3qo6qS3RpHKVrDASqj/uQ==", "integrity": "sha512-MIGl6p5sc3RDTLLkYL1MyL8BMRN4tLMRCn+yRJJmEDvYZ2M7tmAf80hx1kbNEUX2KJ50RRtxZ4JHLvCfuB6kBg==",
"cpu": [ "cpu": [
"arm64" "arm64"
], ],
...@@ -103,9 +103,9 @@ ...@@ -103,9 +103,9 @@
} }
}, },
"node_modules/@esbuild/android-x64": { "node_modules/@esbuild/android-x64": {
"version": "0.16.12", "version": "0.16.17",
"resolved": "https://registry.npmmirror.com/@esbuild/android-x64/-/android-x64-0.16.12.tgz", "resolved": "https://registry.npmmirror.com/@esbuild/android-x64/-/android-x64-0.16.17.tgz",
"integrity": "sha512-sS5CR3XBKQXYpSGMM28VuiUnbX83Z+aWPZzClW+OB2JquKqxoiwdqucJ5qvXS8pM6Up3RtJfDnRQZkz3en2z5g==", "integrity": "sha512-a3kTv3m0Ghh4z1DaFEuEDfz3OLONKuFvI4Xqczqx4BqLyuFaFkuaG4j2MtA6fuWEFeC5x9IvqnX7drmRq/fyAQ==",
"cpu": [ "cpu": [
"x64" "x64"
], ],
...@@ -119,9 +119,9 @@ ...@@ -119,9 +119,9 @@
} }
}, },
"node_modules/@esbuild/darwin-arm64": { "node_modules/@esbuild/darwin-arm64": {
"version": "0.16.12", "version": "0.16.17",
"resolved": "https://registry.npmmirror.com/@esbuild/darwin-arm64/-/darwin-arm64-0.16.12.tgz", "resolved": "https://registry.npmmirror.com/@esbuild/darwin-arm64/-/darwin-arm64-0.16.17.tgz",
"integrity": "sha512-Dpe5hOAQiQRH20YkFAg+wOpcd4PEuXud+aGgKBQa/VriPJA8zuVlgCOSTwna1CgYl05lf6o5els4dtuyk1qJxQ==", "integrity": "sha512-/2agbUEfmxWHi9ARTX6OQ/KgXnOWfsNlTeLcoV7HSuSTv63E4DqtAc+2XqGw1KHxKMHGZgbVCZge7HXWX9Vn+w==",
"cpu": [ "cpu": [
"arm64" "arm64"
], ],
...@@ -135,9 +135,9 @@ ...@@ -135,9 +135,9 @@
} }
}, },
"node_modules/@esbuild/darwin-x64": { "node_modules/@esbuild/darwin-x64": {
"version": "0.16.12", "version": "0.16.17",
"resolved": "https://registry.npmmirror.com/@esbuild/darwin-x64/-/darwin-x64-0.16.12.tgz", "resolved": "https://registry.npmmirror.com/@esbuild/darwin-x64/-/darwin-x64-0.16.17.tgz",
"integrity": "sha512-ApGRA6X5txIcxV0095X4e4KKv87HAEXfuDRcGTniDWUUN+qPia8sl/BqG/0IomytQWajnUn4C7TOwHduk/FXBQ==", "integrity": "sha512-2By45OBHulkd9Svy5IOCZt376Aa2oOkiE9QWUK9fe6Tb+WDr8hXL3dpqi+DeLiMed8tVXspzsTAvd0jUl96wmg==",
"cpu": [ "cpu": [
"x64" "x64"
], ],
...@@ -151,9 +151,9 @@ ...@@ -151,9 +151,9 @@
} }
}, },
"node_modules/@esbuild/freebsd-arm64": { "node_modules/@esbuild/freebsd-arm64": {
"version": "0.16.12", "version": "0.16.17",
"resolved": "https://registry.npmmirror.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.16.12.tgz", "resolved": "https://registry.npmmirror.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.16.17.tgz",
"integrity": "sha512-AMdK2gA9EU83ccXCWS1B/KcWYZCj4P3vDofZZkl/F/sBv/fphi2oUqUTox/g5GMcIxk8CF1CVYTC82+iBSyiUg==", "integrity": "sha512-mt+cxZe1tVx489VTb4mBAOo2aKSnJ33L9fr25JXpqQqzbUIw/yzIzi+NHwAXK2qYV1lEFp4OoVeThGjUbmWmdw==",
"cpu": [ "cpu": [
"arm64" "arm64"
], ],
...@@ -167,9 +167,9 @@ ...@@ -167,9 +167,9 @@
} }
}, },
"node_modules/@esbuild/freebsd-x64": { "node_modules/@esbuild/freebsd-x64": {
"version": "0.16.12", "version": "0.16.17",
"resolved": "https://registry.npmmirror.com/@esbuild/freebsd-x64/-/freebsd-x64-0.16.12.tgz", "resolved": "https://registry.npmmirror.com/@esbuild/freebsd-x64/-/freebsd-x64-0.16.17.tgz",
"integrity": "sha512-KUKB9w8G/xaAbD39t6gnRBuhQ8vIYYlxGT2I+mT6UGRnCGRr1+ePFIGBQmf5V16nxylgUuuWVW1zU2ktKkf6WQ==", "integrity": "sha512-8ScTdNJl5idAKjH8zGAsN7RuWcyHG3BAvMNpKOBaqqR7EbUhhVHOqXRdL7oZvz8WNHL2pr5+eIT5c65kA6NHug==",
"cpu": [ "cpu": [
"x64" "x64"
], ],
...@@ -183,9 +183,9 @@ ...@@ -183,9 +183,9 @@
} }
}, },
"node_modules/@esbuild/linux-arm": { "node_modules/@esbuild/linux-arm": {
"version": "0.16.12", "version": "0.16.17",
"resolved": "https://registry.npmmirror.com/@esbuild/linux-arm/-/linux-arm-0.16.12.tgz", "resolved": "https://registry.npmmirror.com/@esbuild/linux-arm/-/linux-arm-0.16.17.tgz",
"integrity": "sha512-vhDdIv6z4eL0FJyNVfdr3C/vdd/Wc6h1683GJsFoJzfKb92dU/v88FhWdigg0i6+3TsbSDeWbsPUXb4dif2abg==", "integrity": "sha512-iihzrWbD4gIT7j3caMzKb/RsFFHCwqqbrbH9SqUSRrdXkXaygSZCZg1FybsZz57Ju7N/SHEgPyaR0LZ8Zbe9gQ==",
"cpu": [ "cpu": [
"arm" "arm"
], ],
...@@ -199,9 +199,9 @@ ...@@ -199,9 +199,9 @@
} }
}, },
"node_modules/@esbuild/linux-arm64": { "node_modules/@esbuild/linux-arm64": {
"version": "0.16.12", "version": "0.16.17",
"resolved": "https://registry.npmmirror.com/@esbuild/linux-arm64/-/linux-arm64-0.16.12.tgz", "resolved": "https://registry.npmmirror.com/@esbuild/linux-arm64/-/linux-arm64-0.16.17.tgz",
"integrity": "sha512-29HXMLpLklDfmw7T2buGqq3HImSUaZ1ArmrPOMaNiZZQptOSZs32SQtOHEl8xWX5vfdwZqrBfNf8Te4nArVzKQ==", "integrity": "sha512-7S8gJnSlqKGVJunnMCrXHU9Q8Q/tQIxk/xL8BqAP64wchPCTzuM6W3Ra8cIa1HIflAvDnNOt2jaL17vaW+1V0g==",
"cpu": [ "cpu": [
"arm64" "arm64"
], ],
...@@ -215,9 +215,9 @@ ...@@ -215,9 +215,9 @@
} }
}, },
"node_modules/@esbuild/linux-ia32": { "node_modules/@esbuild/linux-ia32": {
"version": "0.16.12", "version": "0.16.17",
"resolved": "https://registry.npmmirror.com/@esbuild/linux-ia32/-/linux-ia32-0.16.12.tgz", "resolved": "https://registry.npmmirror.com/@esbuild/linux-ia32/-/linux-ia32-0.16.17.tgz",
"integrity": "sha512-JFDuNDTTfgD1LJg7wHA42o2uAO/9VzHYK0leAVnCQE/FdMB599YMH73ux+nS0xGr79pv/BK+hrmdRin3iLgQjg==", "integrity": "sha512-kiX69+wcPAdgl3Lonh1VI7MBr16nktEvOfViszBSxygRQqSpzv7BffMKRPMFwzeJGPxcio0pdD3kYQGpqQ2SSg==",
"cpu": [ "cpu": [
"ia32" "ia32"
], ],
...@@ -231,9 +231,9 @@ ...@@ -231,9 +231,9 @@
} }
}, },
"node_modules/@esbuild/linux-loong64": { "node_modules/@esbuild/linux-loong64": {
"version": "0.16.12", "version": "0.16.17",
"resolved": "https://registry.npmmirror.com/@esbuild/linux-loong64/-/linux-loong64-0.16.12.tgz", "resolved": "https://registry.npmmirror.com/@esbuild/linux-loong64/-/linux-loong64-0.16.17.tgz",
"integrity": "sha512-xTGzVPqm6WKfCC0iuj1fryIWr1NWEM8DMhAIo+4rFgUtwy/lfHl+Obvus4oddzRDbBetLLmojfVZGmt/g/g+Rw==", "integrity": "sha512-dTzNnQwembNDhd654cA4QhbS9uDdXC3TKqMJjgOWsC0yNCbpzfWoXdZvp0mY7HU6nzk5E0zpRGGx3qoQg8T2DQ==",
"cpu": [ "cpu": [
"loong64" "loong64"
], ],
...@@ -247,9 +247,9 @@ ...@@ -247,9 +247,9 @@
} }
}, },
"node_modules/@esbuild/linux-mips64el": { "node_modules/@esbuild/linux-mips64el": {
"version": "0.16.12", "version": "0.16.17",
"resolved": "https://registry.npmmirror.com/@esbuild/linux-mips64el/-/linux-mips64el-0.16.12.tgz", "resolved": "https://registry.npmmirror.com/@esbuild/linux-mips64el/-/linux-mips64el-0.16.17.tgz",
"integrity": "sha512-zI1cNgHa3Gol+vPYjIYHzKhU6qMyOQrvZ82REr5Fv7rlh5PG6SkkuCoH7IryPqR+BK2c/7oISGsvPJPGnO2bHQ==", "integrity": "sha512-ezbDkp2nDl0PfIUn0CsQ30kxfcLTlcx4Foz2kYv8qdC6ia2oX5Q3E/8m6lq84Dj/6b0FrkgD582fJMIfHhJfSw==",
"cpu": [ "cpu": [
"mips64el" "mips64el"
], ],
...@@ -263,9 +263,9 @@ ...@@ -263,9 +263,9 @@
} }
}, },
"node_modules/@esbuild/linux-ppc64": { "node_modules/@esbuild/linux-ppc64": {
"version": "0.16.12", "version": "0.16.17",
"resolved": "https://registry.npmmirror.com/@esbuild/linux-ppc64/-/linux-ppc64-0.16.12.tgz", "resolved": "https://registry.npmmirror.com/@esbuild/linux-ppc64/-/linux-ppc64-0.16.17.tgz",
"integrity": "sha512-/C8OFXExoMmvTDIOAM54AhtmmuDHKoedUd0Otpfw3+AuuVGemA1nQK99oN909uZbLEU6Bi+7JheFMG3xGfZluQ==", "integrity": "sha512-dzS678gYD1lJsW73zrFhDApLVdM3cUF2MvAa1D8K8KtcSKdLBPP4zZSLy6LFZ0jYqQdQ29bjAHJDgz0rVbLB3g==",
"cpu": [ "cpu": [
"ppc64" "ppc64"
], ],
...@@ -279,9 +279,9 @@ ...@@ -279,9 +279,9 @@
} }
}, },
"node_modules/@esbuild/linux-riscv64": { "node_modules/@esbuild/linux-riscv64": {
"version": "0.16.12", "version": "0.16.17",
"resolved": "https://registry.npmmirror.com/@esbuild/linux-riscv64/-/linux-riscv64-0.16.12.tgz", "resolved": "https://registry.npmmirror.com/@esbuild/linux-riscv64/-/linux-riscv64-0.16.17.tgz",
"integrity": "sha512-qeouyyc8kAGV6Ni6Isz8hUsKMr00EHgVwUKWNp1r4l88fHEoNTDB8mmestvykW6MrstoGI7g2EAsgr0nxmuGYg==", "integrity": "sha512-ylNlVsxuFjZK8DQtNUwiMskh6nT0vI7kYl/4fZgV1llP5d6+HIeL/vmmm3jpuoo8+NuXjQVZxmKuhDApK0/cKw==",
"cpu": [ "cpu": [
"riscv64" "riscv64"
], ],
...@@ -295,9 +295,9 @@ ...@@ -295,9 +295,9 @@
} }
}, },
"node_modules/@esbuild/linux-s390x": { "node_modules/@esbuild/linux-s390x": {
"version": "0.16.12", "version": "0.16.17",
"resolved": "https://registry.npmmirror.com/@esbuild/linux-s390x/-/linux-s390x-0.16.12.tgz", "resolved": "https://registry.npmmirror.com/@esbuild/linux-s390x/-/linux-s390x-0.16.17.tgz",
"integrity": "sha512-s9AyI/5vz1U4NNqnacEGFElqwnHusWa81pskAf8JNDM2eb6b2E6PpBmT8RzeZv6/TxE6/TADn2g9bb0jOUmXwQ==", "integrity": "sha512-gzy7nUTO4UA4oZ2wAMXPNBGTzZFP7mss3aKR2hH+/4UUkCOyqmjXiKpzGrY2TlEUhbbejzXVKKGazYcQTZWA/w==",
"cpu": [ "cpu": [
"s390x" "s390x"
], ],
...@@ -311,9 +311,9 @@ ...@@ -311,9 +311,9 @@
} }
}, },
"node_modules/@esbuild/linux-x64": { "node_modules/@esbuild/linux-x64": {
"version": "0.16.12", "version": "0.16.17",
"resolved": "https://registry.npmmirror.com/@esbuild/linux-x64/-/linux-x64-0.16.12.tgz", "resolved": "https://registry.npmmirror.com/@esbuild/linux-x64/-/linux-x64-0.16.17.tgz",
"integrity": "sha512-e8YA7GQGLWhvakBecLptUiKxOk4E/EPtSckS1i0MGYctW8ouvNUoh7xnU15PGO2jz7BYl8q1R6g0gE5HFtzpqQ==", "integrity": "sha512-mdPjPxfnmoqhgpiEArqi4egmBAMYvaObgn4poorpUaqmvzzbvqbowRllQ+ZgzGVMGKaPkqUmPDOOFQRUFDmeUw==",
"cpu": [ "cpu": [
"x64" "x64"
], ],
...@@ -327,9 +327,9 @@ ...@@ -327,9 +327,9 @@
} }
}, },
"node_modules/@esbuild/netbsd-x64": { "node_modules/@esbuild/netbsd-x64": {
"version": "0.16.12", "version": "0.16.17",
"resolved": "https://registry.npmmirror.com/@esbuild/netbsd-x64/-/netbsd-x64-0.16.12.tgz", "resolved": "https://registry.npmmirror.com/@esbuild/netbsd-x64/-/netbsd-x64-0.16.17.tgz",
"integrity": "sha512-z2+kUxmOqBS+6SRVd57iOLIHE8oGOoEnGVAmwjm2aENSP35HPS+5cK+FL1l+rhrsJOFIPrNHqDUNechpuG96Sg==", "integrity": "sha512-/PzmzD/zyAeTUsduZa32bn0ORug+Jd1EGGAUJvqfeixoEISYpGnAezN6lnJoskauoai0Jrs+XSyvDhppCPoKOA==",
"cpu": [ "cpu": [
"x64" "x64"
], ],
...@@ -343,9 +343,9 @@ ...@@ -343,9 +343,9 @@
} }
}, },
"node_modules/@esbuild/openbsd-x64": { "node_modules/@esbuild/openbsd-x64": {
"version": "0.16.12", "version": "0.16.17",
"resolved": "https://registry.npmmirror.com/@esbuild/openbsd-x64/-/openbsd-x64-0.16.12.tgz", "resolved": "https://registry.npmmirror.com/@esbuild/openbsd-x64/-/openbsd-x64-0.16.17.tgz",
"integrity": "sha512-PAonw4LqIybwn2/vJujhbg1N9W2W8lw9RtXIvvZoyzoA/4rA4CpiuahVbASmQohiytRsixbNoIOUSjRygKXpyA==", "integrity": "sha512-2yaWJhvxGEz2RiftSk0UObqJa/b+rIAjnODJgv2GbGGpRwAfpgzyrg1WLK8rqA24mfZa9GvpjLcBBg8JHkoodg==",
"cpu": [ "cpu": [
"x64" "x64"
], ],
...@@ -359,9 +359,9 @@ ...@@ -359,9 +359,9 @@
} }
}, },
"node_modules/@esbuild/sunos-x64": { "node_modules/@esbuild/sunos-x64": {
"version": "0.16.12", "version": "0.16.17",
"resolved": "https://registry.npmmirror.com/@esbuild/sunos-x64/-/sunos-x64-0.16.12.tgz", "resolved": "https://registry.npmmirror.com/@esbuild/sunos-x64/-/sunos-x64-0.16.17.tgz",
"integrity": "sha512-+wr1tkt1RERi+Zi/iQtkzmMH4nS8+7UIRxjcyRz7lur84wCkAITT50Olq/HiT4JN2X2bjtlOV6vt7ptW5Gw60Q==", "integrity": "sha512-xtVUiev38tN0R3g8VhRfN7Zl42YCJvyBhRKw1RJjwE1d2emWTVToPLNEQj/5Qxc6lVFATDiy6LjVHYhIPrLxzw==",
"cpu": [ "cpu": [
"x64" "x64"
], ],
...@@ -375,9 +375,9 @@ ...@@ -375,9 +375,9 @@
} }
}, },
"node_modules/@esbuild/win32-arm64": { "node_modules/@esbuild/win32-arm64": {
"version": "0.16.12", "version": "0.16.17",
"resolved": "https://registry.npmmirror.com/@esbuild/win32-arm64/-/win32-arm64-0.16.12.tgz", "resolved": "https://registry.npmmirror.com/@esbuild/win32-arm64/-/win32-arm64-0.16.17.tgz",
"integrity": "sha512-XEjeUSHmjsAOJk8+pXJu9pFY2O5KKQbHXZWQylJzQuIBeiGrpMeq9sTVrHefHxMOyxUgoKQTcaTS+VK/K5SviA==", "integrity": "sha512-ga8+JqBDHY4b6fQAmOgtJJue36scANy4l/rL97W+0wYmijhxKetzZdKOJI7olaBaMhWt8Pac2McJdZLxXWUEQw==",
"cpu": [ "cpu": [
"arm64" "arm64"
], ],
...@@ -391,9 +391,9 @@ ...@@ -391,9 +391,9 @@
} }
}, },
"node_modules/@esbuild/win32-ia32": { "node_modules/@esbuild/win32-ia32": {
"version": "0.16.12", "version": "0.16.17",
"resolved": "https://registry.npmmirror.com/@esbuild/win32-ia32/-/win32-ia32-0.16.12.tgz", "resolved": "https://registry.npmmirror.com/@esbuild/win32-ia32/-/win32-ia32-0.16.17.tgz",
"integrity": "sha512-eRKPM7e0IecUAUYr2alW7JGDejrFJXmpjt4MlfonmQ5Rz9HWpKFGCjuuIRgKO7W9C/CWVFXdJ2GjddsBXqQI4A==", "integrity": "sha512-WnsKaf46uSSF/sZhwnqE4L/F89AYNMiD4YtEcYekBt9Q7nj0DiId2XH2Ng2PHM54qi5oPrQ8luuzGszqi/veig==",
"cpu": [ "cpu": [
"ia32" "ia32"
], ],
...@@ -407,9 +407,9 @@ ...@@ -407,9 +407,9 @@
} }
}, },
"node_modules/@esbuild/win32-x64": { "node_modules/@esbuild/win32-x64": {
"version": "0.16.12", "version": "0.16.17",
"resolved": "https://registry.npmmirror.com/@esbuild/win32-x64/-/win32-x64-0.16.12.tgz", "resolved": "https://registry.npmmirror.com/@esbuild/win32-x64/-/win32-x64-0.16.17.tgz",
"integrity": "sha512-iPYKN78t3op2+erv2frW568j1q0RpqX6JOLZ7oPPaAV1VaF7dDstOrNw37PVOYoTWE11pV4A1XUitpdEFNIsPg==", "integrity": "sha512-y+EHuSchhL7FjHgvQL/0fnnFmO4T1bhvWANX6gcnqTjtnKWbTvUMCpGnv2+t+31d7RzyEAYAd4u2fnIhHL6N/Q==",
"cpu": [ "cpu": [
"x64" "x64"
], ],
...@@ -871,36 +871,36 @@ ...@@ -871,36 +871,36 @@
} }
}, },
"node_modules/@vue/compiler-core": { "node_modules/@vue/compiler-core": {
"version": "3.2.45", "version": "3.2.47",
"resolved": "https://registry.npmmirror.com/@vue/compiler-core/-/compiler-core-3.2.45.tgz", "resolved": "https://registry.npmmirror.com/@vue/compiler-core/-/compiler-core-3.2.47.tgz",
"integrity": "sha512-rcMj7H+PYe5wBV3iYeUgbCglC+pbpN8hBLTJvRiK2eKQiWqu+fG9F+8sW99JdL4LQi7Re178UOxn09puSXvn4A==", "integrity": "sha512-p4D7FDnQb7+YJmO2iPEv0SQNeNzcbHdGByJDsT4lynf63AFkOTFN07HsiRSvjGo0QrxR/o3d0hUyNCUnBU2Tig==",
"dependencies": { "dependencies": {
"@babel/parser": "^7.16.4", "@babel/parser": "^7.16.4",
"@vue/shared": "3.2.45", "@vue/shared": "3.2.47",
"estree-walker": "^2.0.2", "estree-walker": "^2.0.2",
"source-map": "^0.6.1" "source-map": "^0.6.1"
} }
}, },
"node_modules/@vue/compiler-dom": { "node_modules/@vue/compiler-dom": {
"version": "3.2.45", "version": "3.2.47",
"resolved": "https://registry.npmmirror.com/@vue/compiler-dom/-/compiler-dom-3.2.45.tgz", "resolved": "https://registry.npmmirror.com/@vue/compiler-dom/-/compiler-dom-3.2.47.tgz",
"integrity": "sha512-tyYeUEuKqqZO137WrZkpwfPCdiiIeXYCcJ8L4gWz9vqaxzIQRccTSwSWZ/Axx5YR2z+LvpUbmPNXxuBU45lyRw==", "integrity": "sha512-dBBnEHEPoftUiS03a4ggEig74J2YBZ2UIeyfpcRM2tavgMWo4bsEfgCGsu+uJIL/vax9S+JztH8NmQerUo7shQ==",
"dependencies": { "dependencies": {
"@vue/compiler-core": "3.2.45", "@vue/compiler-core": "3.2.47",
"@vue/shared": "3.2.45" "@vue/shared": "3.2.47"
} }
}, },
"node_modules/@vue/compiler-sfc": { "node_modules/@vue/compiler-sfc": {
"version": "3.2.45", "version": "3.2.47",
"resolved": "https://registry.npmmirror.com/@vue/compiler-sfc/-/compiler-sfc-3.2.45.tgz", "resolved": "https://registry.npmmirror.com/@vue/compiler-sfc/-/compiler-sfc-3.2.47.tgz",
"integrity": "sha512-1jXDuWah1ggsnSAOGsec8cFjT/K6TMZ0sPL3o3d84Ft2AYZi2jWJgRMjw4iaK0rBfA89L5gw427H4n1RZQBu6Q==", "integrity": "sha512-rog05W+2IFfxjMcFw10tM9+f7i/+FFpZJJ5XHX72NP9eC2uRD+42M3pYcQqDXVYoj74kHMSEdQ/WmCjt8JFksQ==",
"dependencies": { "dependencies": {
"@babel/parser": "^7.16.4", "@babel/parser": "^7.16.4",
"@vue/compiler-core": "3.2.45", "@vue/compiler-core": "3.2.47",
"@vue/compiler-dom": "3.2.45", "@vue/compiler-dom": "3.2.47",
"@vue/compiler-ssr": "3.2.45", "@vue/compiler-ssr": "3.2.47",
"@vue/reactivity-transform": "3.2.45", "@vue/reactivity-transform": "3.2.47",
"@vue/shared": "3.2.45", "@vue/shared": "3.2.47",
"estree-walker": "^2.0.2", "estree-walker": "^2.0.2",
"magic-string": "^0.25.7", "magic-string": "^0.25.7",
"postcss": "^8.1.10", "postcss": "^8.1.10",
...@@ -908,12 +908,12 @@ ...@@ -908,12 +908,12 @@
} }
}, },
"node_modules/@vue/compiler-ssr": { "node_modules/@vue/compiler-ssr": {
"version": "3.2.45", "version": "3.2.47",
"resolved": "https://registry.npmmirror.com/@vue/compiler-ssr/-/compiler-ssr-3.2.45.tgz", "resolved": "https://registry.npmmirror.com/@vue/compiler-ssr/-/compiler-ssr-3.2.47.tgz",
"integrity": "sha512-6BRaggEGqhWht3lt24CrIbQSRD5O07MTmd+LjAn5fJj568+R9eUD2F7wMQJjX859seSlrYog7sUtrZSd7feqrQ==", "integrity": "sha512-wVXC+gszhulcMD8wpxMsqSOpvDZ6xKXSVWkf50Guf/S+28hTAXPDYRTbLQ3EDkOP5Xz/+SY37YiwDquKbJOgZw==",
"dependencies": { "dependencies": {
"@vue/compiler-dom": "3.2.45", "@vue/compiler-dom": "3.2.47",
"@vue/shared": "3.2.45" "@vue/shared": "3.2.47"
} }
}, },
"node_modules/@vue/devtools-api": { "node_modules/@vue/devtools-api": {
...@@ -946,60 +946,60 @@ ...@@ -946,60 +946,60 @@
} }
}, },
"node_modules/@vue/reactivity": { "node_modules/@vue/reactivity": {
"version": "3.2.45", "version": "3.2.47",
"resolved": "https://registry.npmmirror.com/@vue/reactivity/-/reactivity-3.2.45.tgz", "resolved": "https://registry.npmmirror.com/@vue/reactivity/-/reactivity-3.2.47.tgz",
"integrity": "sha512-PRvhCcQcyEVohW0P8iQ7HDcIOXRjZfAsOds3N99X/Dzewy8TVhTCT4uXpAHfoKjVTJRA0O0K+6QNkDIZAxNi3A==", "integrity": "sha512-7khqQ/75oyyg+N/e+iwV6lpy1f5wq759NdlS1fpAhFXa8VeAIKGgk2E/C4VF59lx5b+Ezs5fpp/5WsRYXQiKxQ==",
"dependencies": { "dependencies": {
"@vue/shared": "3.2.45" "@vue/shared": "3.2.47"
} }
}, },
"node_modules/@vue/reactivity-transform": { "node_modules/@vue/reactivity-transform": {
"version": "3.2.45", "version": "3.2.47",
"resolved": "https://registry.npmmirror.com/@vue/reactivity-transform/-/reactivity-transform-3.2.45.tgz", "resolved": "https://registry.npmmirror.com/@vue/reactivity-transform/-/reactivity-transform-3.2.47.tgz",
"integrity": "sha512-BHVmzYAvM7vcU5WmuYqXpwaBHjsS8T63jlKGWVtHxAHIoMIlmaMyurUSEs1Zcg46M4AYT5MtB1U274/2aNzjJQ==", "integrity": "sha512-m8lGXw8rdnPVVIdIFhf0LeQ/ixyHkH5plYuS83yop5n7ggVJU+z5v0zecwEnX7fa7HNLBhh2qngJJkxpwEEmYA==",
"dependencies": { "dependencies": {
"@babel/parser": "^7.16.4", "@babel/parser": "^7.16.4",
"@vue/compiler-core": "3.2.45", "@vue/compiler-core": "3.2.47",
"@vue/shared": "3.2.45", "@vue/shared": "3.2.47",
"estree-walker": "^2.0.2", "estree-walker": "^2.0.2",
"magic-string": "^0.25.7" "magic-string": "^0.25.7"
} }
}, },
"node_modules/@vue/runtime-core": { "node_modules/@vue/runtime-core": {
"version": "3.2.45", "version": "3.2.47",
"resolved": "https://registry.npmmirror.com/@vue/runtime-core/-/runtime-core-3.2.45.tgz", "resolved": "https://registry.npmmirror.com/@vue/runtime-core/-/runtime-core-3.2.47.tgz",
"integrity": "sha512-gzJiTA3f74cgARptqzYswmoQx0fIA+gGYBfokYVhF8YSXjWTUA2SngRzZRku2HbGbjzB6LBYSbKGIaK8IW+s0A==", "integrity": "sha512-RZxbLQIRB/K0ev0K9FXhNbBzT32H9iRtYbaXb0ZIz2usLms/D55dJR2t6cIEUn6vyhS3ALNvNthI+Q95C+NOpA==",
"dependencies": { "dependencies": {
"@vue/reactivity": "3.2.45", "@vue/reactivity": "3.2.47",
"@vue/shared": "3.2.45" "@vue/shared": "3.2.47"
} }
}, },
"node_modules/@vue/runtime-dom": { "node_modules/@vue/runtime-dom": {
"version": "3.2.45", "version": "3.2.47",
"resolved": "https://registry.npmmirror.com/@vue/runtime-dom/-/runtime-dom-3.2.45.tgz", "resolved": "https://registry.npmmirror.com/@vue/runtime-dom/-/runtime-dom-3.2.47.tgz",
"integrity": "sha512-cy88YpfP5Ue2bDBbj75Cb4bIEZUMM/mAkDMfqDTpUYVgTf/kuQ2VQ8LebuZ8k6EudgH8pYhsGWHlY0lcxlvTwA==", "integrity": "sha512-ArXrFTjS6TsDei4qwNvgrdmHtD930KgSKGhS5M+j8QxXrDJYLqYw4RRcDy1bz1m1wMmb6j+zGLifdVHtkXA7gA==",
"dependencies": { "dependencies": {
"@vue/runtime-core": "3.2.45", "@vue/runtime-core": "3.2.47",
"@vue/shared": "3.2.45", "@vue/shared": "3.2.47",
"csstype": "^2.6.8" "csstype": "^2.6.8"
} }
}, },
"node_modules/@vue/server-renderer": { "node_modules/@vue/server-renderer": {
"version": "3.2.45", "version": "3.2.47",
"resolved": "https://registry.npmmirror.com/@vue/server-renderer/-/server-renderer-3.2.45.tgz", "resolved": "https://registry.npmmirror.com/@vue/server-renderer/-/server-renderer-3.2.47.tgz",
"integrity": "sha512-ebiMq7q24WBU1D6uhPK//2OTR1iRIyxjF5iVq/1a5I1SDMDyDu4Ts6fJaMnjrvD3MqnaiFkKQj+LKAgz5WIK3g==", "integrity": "sha512-dN9gc1i8EvmP9RCzvneONXsKfBRgqFeFZLurmHOveL7oH6HiFXJw5OGu294n1nHc/HMgTy6LulU/tv5/A7f/LA==",
"dependencies": { "dependencies": {
"@vue/compiler-ssr": "3.2.45", "@vue/compiler-ssr": "3.2.47",
"@vue/shared": "3.2.45" "@vue/shared": "3.2.47"
}, },
"peerDependencies": { "peerDependencies": {
"vue": "3.2.45" "vue": "3.2.47"
} }
}, },
"node_modules/@vue/shared": { "node_modules/@vue/shared": {
"version": "3.2.45", "version": "3.2.47",
"resolved": "https://registry.npmmirror.com/@vue/shared/-/shared-3.2.45.tgz", "resolved": "https://registry.npmmirror.com/@vue/shared/-/shared-3.2.47.tgz",
"integrity": "sha512-Ewzq5Yhimg7pSztDV+RH1UDKBzmtqieXQlpTVm2AwraoRL/Rks96mvd8Vgi7Lj+h+TH8dv7mXD3FRZR3TUvbSg==" "integrity": "sha512-BHGyyGN3Q97EZx0taMQ+OLNuZcW3d37ZEVmEAyeoA9ERdGvm9Irc/0Fua8SNyOtV1w6BS4q25wbMzJujO9HIfQ=="
}, },
"node_modules/@vue/tsconfig": { "node_modules/@vue/tsconfig": {
"version": "0.1.3", "version": "0.1.3",
...@@ -1016,13 +1016,13 @@ ...@@ -1016,13 +1016,13 @@
} }
}, },
"node_modules/@vueuse/core": { "node_modules/@vueuse/core": {
"version": "9.11.1", "version": "9.12.0",
"resolved": "https://registry.npmmirror.com/@vueuse/core/-/core-9.11.1.tgz", "resolved": "https://registry.npmmirror.com/@vueuse/core/-/core-9.12.0.tgz",
"integrity": "sha512-E/cizD1w9ILkq4axYjZrXLkKaBfzloaby2n3NMjUfd6yI/jkfTVgc6iwy/Cw2e++Ld4LphGbO+3MhzizvwUslQ==", "integrity": "sha512-h/Di8Bvf6xRcvS/PvUVheiMYYz3U0tH3X25YxONSaAUBa841ayMwxkuzx/DGUMCW/wHWzD8tRy2zYmOC36r4sg==",
"dependencies": { "dependencies": {
"@types/web-bluetooth": "^0.0.16", "@types/web-bluetooth": "^0.0.16",
"@vueuse/metadata": "9.11.1", "@vueuse/metadata": "9.12.0",
"@vueuse/shared": "9.11.1", "@vueuse/shared": "9.12.0",
"vue-demi": "*" "vue-demi": "*"
} }
}, },
...@@ -1049,14 +1049,14 @@ ...@@ -1049,14 +1049,14 @@
} }
}, },
"node_modules/@vueuse/metadata": { "node_modules/@vueuse/metadata": {
"version": "9.11.1", "version": "9.12.0",
"resolved": "https://registry.npmmirror.com/@vueuse/metadata/-/metadata-9.11.1.tgz", "resolved": "https://registry.npmmirror.com/@vueuse/metadata/-/metadata-9.12.0.tgz",
"integrity": "sha512-ABjkrG+VXggNhjfGyw5e/sekxTZfXTwjrYXkkWQmQ7Biyv+Gq9UD6IDNfeGvQZEINI0Qzw6nfuO2UFCd3hlrxQ==" "integrity": "sha512-9oJ9MM9lFLlmvxXUqsR1wLt1uF7EVbP5iYaHJYqk+G2PbMjY6EXvZeTjbdO89HgoF5cI6z49o2zT/jD9SVoNpQ=="
}, },
"node_modules/@vueuse/shared": { "node_modules/@vueuse/shared": {
"version": "9.11.1", "version": "9.12.0",
"resolved": "https://registry.npmmirror.com/@vueuse/shared/-/shared-9.11.1.tgz", "resolved": "https://registry.npmmirror.com/@vueuse/shared/-/shared-9.12.0.tgz",
"integrity": "sha512-UTZYGAjT96hWn4buf4wstZbeheBVNcKPQuej6qpoSkjF1atdaeCD6kqm9uGL2waHfisSgH9mq0qCRiBOk5C/2w==", "integrity": "sha512-TWuJLACQ0BVithVTRbex4Wf1a1VaRuSpVeyEd4vMUWl54PzlE0ciFUshKCXnlLuD0lxIaLK4Ypj3NXYzZh4+SQ==",
"dependencies": { "dependencies": {
"vue-demi": "*" "vue-demi": "*"
} }
...@@ -1292,9 +1292,9 @@ ...@@ -1292,9 +1292,9 @@
"integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q=="
}, },
"node_modules/axios": { "node_modules/axios": {
"version": "1.2.5", "version": "1.3.1",
"resolved": "https://registry.npmmirror.com/axios/-/axios-1.2.5.tgz", "resolved": "https://registry.npmmirror.com/axios/-/axios-1.3.1.tgz",
"integrity": "sha512-9pU/8mmjSSOb4CXVsvGIevN+MlO/t9OWtKadTaLuN85Gge3HGorUckgp8A/2FH4V4hJ7JuQ3LIeI7KAV9ITZrQ==", "integrity": "sha512-78pWJsQTceInlyaeBQeYZ/QgZeWS8hGeKiIJiDKQe3hEyBb7sEMq0K4gjx+Va6WHTYO4zI/RRl8qGRzn0YMadA==",
"dependencies": { "dependencies": {
"follow-redirects": "^1.15.0", "follow-redirects": "^1.15.0",
"form-data": "^4.0.0", "form-data": "^4.0.0",
...@@ -1782,9 +1782,9 @@ ...@@ -1782,9 +1782,9 @@
} }
}, },
"node_modules/esbuild": { "node_modules/esbuild": {
"version": "0.16.12", "version": "0.16.17",
"resolved": "https://registry.npmmirror.com/esbuild/-/esbuild-0.16.12.tgz", "resolved": "https://registry.npmmirror.com/esbuild/-/esbuild-0.16.17.tgz",
"integrity": "sha512-eq5KcuXajf2OmivCl4e89AD3j8fbV+UTE9vczEzq5haA07U9oOTzBWlh3+6ZdjJR7Rz2QfWZ2uxZyhZxBgJ4+g==", "integrity": "sha512-G8LEkV0XzDMNwXKgM0Jwu3nY3lSTwSGY6XbxM9cr9+s0T/qSV1q1JVPBGzm3dcjhCic9+emZDmMffkwgPeOeLg==",
"dev": true, "dev": true,
"hasInstallScript": true, "hasInstallScript": true,
"bin": { "bin": {
...@@ -1794,28 +1794,28 @@ ...@@ -1794,28 +1794,28 @@
"node": ">=12" "node": ">=12"
}, },
"optionalDependencies": { "optionalDependencies": {
"@esbuild/android-arm": "0.16.12", "@esbuild/android-arm": "0.16.17",
"@esbuild/android-arm64": "0.16.12", "@esbuild/android-arm64": "0.16.17",
"@esbuild/android-x64": "0.16.12", "@esbuild/android-x64": "0.16.17",
"@esbuild/darwin-arm64": "0.16.12", "@esbuild/darwin-arm64": "0.16.17",
"@esbuild/darwin-x64": "0.16.12", "@esbuild/darwin-x64": "0.16.17",
"@esbuild/freebsd-arm64": "0.16.12", "@esbuild/freebsd-arm64": "0.16.17",
"@esbuild/freebsd-x64": "0.16.12", "@esbuild/freebsd-x64": "0.16.17",
"@esbuild/linux-arm": "0.16.12", "@esbuild/linux-arm": "0.16.17",
"@esbuild/linux-arm64": "0.16.12", "@esbuild/linux-arm64": "0.16.17",
"@esbuild/linux-ia32": "0.16.12", "@esbuild/linux-ia32": "0.16.17",
"@esbuild/linux-loong64": "0.16.12", "@esbuild/linux-loong64": "0.16.17",
"@esbuild/linux-mips64el": "0.16.12", "@esbuild/linux-mips64el": "0.16.17",
"@esbuild/linux-ppc64": "0.16.12", "@esbuild/linux-ppc64": "0.16.17",
"@esbuild/linux-riscv64": "0.16.12", "@esbuild/linux-riscv64": "0.16.17",
"@esbuild/linux-s390x": "0.16.12", "@esbuild/linux-s390x": "0.16.17",
"@esbuild/linux-x64": "0.16.12", "@esbuild/linux-x64": "0.16.17",
"@esbuild/netbsd-x64": "0.16.12", "@esbuild/netbsd-x64": "0.16.17",
"@esbuild/openbsd-x64": "0.16.12", "@esbuild/openbsd-x64": "0.16.17",
"@esbuild/sunos-x64": "0.16.12", "@esbuild/sunos-x64": "0.16.17",
"@esbuild/win32-arm64": "0.16.12", "@esbuild/win32-arm64": "0.16.17",
"@esbuild/win32-ia32": "0.16.12", "@esbuild/win32-ia32": "0.16.17",
"@esbuild/win32-x64": "0.16.12" "@esbuild/win32-x64": "0.16.17"
} }
}, },
"node_modules/escape-html": { "node_modules/escape-html": {
...@@ -1906,9 +1906,9 @@ ...@@ -1906,9 +1906,9 @@
} }
}, },
"node_modules/eslint": { "node_modules/eslint": {
"version": "8.32.0", "version": "8.33.0",
"resolved": "https://registry.npmmirror.com/eslint/-/eslint-8.32.0.tgz", "resolved": "https://registry.npmmirror.com/eslint/-/eslint-8.33.0.tgz",
"integrity": "sha512-nETVXpnthqKPFyuY2FNjz/bEd6nbosRgKbkgS/y1C7LJop96gYHWpiguLecMHQ2XCPxn77DS0P+68WzG6vkZSQ==", "integrity": "sha512-WjOpFQgKK8VrCnAtl8We0SUOy/oVZ5NHykyMiagV1M9r8IFpIJX7DduK6n1mpfhlG7T1NLWm2SuD8QB7KFySaA==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"@eslint/eslintrc": "^1.4.1", "@eslint/eslintrc": "^1.4.1",
...@@ -3842,9 +3842,9 @@ ...@@ -3842,9 +3842,9 @@
} }
}, },
"node_modules/pinia": { "node_modules/pinia": {
"version": "2.0.29", "version": "2.0.30",
"resolved": "https://registry.npmmirror.com/pinia/-/pinia-2.0.29.tgz", "resolved": "https://registry.npmmirror.com/pinia/-/pinia-2.0.30.tgz",
"integrity": "sha512-5z/KpFecq/cIgfeTnulJXldiLcTITRkTe3N58RKYSj0Pc1EdR6oyCdnf5A9jLoVwBqX5LtHhd0kGlpzWvk9oiQ==", "integrity": "sha512-q6DUmxWwe/mQgg+55QQjykpKC+aGeGdaJV3niminl19V08dE+LRTvSEuqi6/NLSGCKHI49KGL6tMNEOssFiMyA==",
"dependencies": { "dependencies": {
"@vue/devtools-api": "^6.4.5", "@vue/devtools-api": "^6.4.5",
"vue-demi": "*" "vue-demi": "*"
...@@ -3903,9 +3903,9 @@ ...@@ -3903,9 +3903,9 @@
"dev": true "dev": true
}, },
"node_modules/postcss": { "node_modules/postcss": {
"version": "8.4.20", "version": "8.4.21",
"resolved": "https://registry.npmmirror.com/postcss/-/postcss-8.4.20.tgz", "resolved": "https://registry.npmmirror.com/postcss/-/postcss-8.4.21.tgz",
"integrity": "sha512-6Q04AXR1212bXr5fh03u8aAwbLxAQNGQ/Q1LNa0VfOI06ZAlhPHtQvE4OIdpj4kLThXilalPnmDSOD65DcHt+g==", "integrity": "sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==",
"dependencies": { "dependencies": {
"nanoid": "^3.3.4", "nanoid": "^3.3.4",
"picocolors": "^1.0.0", "picocolors": "^1.0.0",
...@@ -4156,9 +4156,9 @@ ...@@ -4156,9 +4156,9 @@
} }
}, },
"node_modules/rollup": { "node_modules/rollup": {
"version": "3.9.0", "version": "3.12.1",
"resolved": "https://registry.npmmirror.com/rollup/-/rollup-3.9.0.tgz", "resolved": "https://registry.npmmirror.com/rollup/-/rollup-3.12.1.tgz",
"integrity": "sha512-nGGylpmblyjTpF4lEUPgmOw6OVxRvnI6Iuuh6Lz4O/X66cVOX1XJSsqP1YamxQ+mPuFE7qJxLFDSCk8rNv5dDw==", "integrity": "sha512-t9elERrz2i4UU9z7AwISj3CQcXP39cWxgRWLdf4Tm6aKm1eYrqHIgjzXBgb67GNY1sZckTFFi0oMozh3/S++Ig==",
"dev": true, "dev": true,
"bin": { "bin": {
"rollup": "dist/bin/rollup" "rollup": "dist/bin/rollup"
...@@ -4204,9 +4204,9 @@ ...@@ -4204,9 +4204,9 @@
"dev": true "dev": true
}, },
"node_modules/sass": { "node_modules/sass": {
"version": "1.57.1", "version": "1.58.0",
"resolved": "https://registry.npmmirror.com/sass/-/sass-1.57.1.tgz", "resolved": "https://registry.npmmirror.com/sass/-/sass-1.58.0.tgz",
"integrity": "sha512-O2+LwLS79op7GI0xZ8fqzF7X2m/m8WFfI02dHOdsK5R2ECeS5F62zrwg/relM1rjSLy7Vd/DiMNIvPrQGsA0jw==", "integrity": "sha512-PiMJcP33DdKtZ/1jSjjqVIKihoDc6yWmYr9K/4r3fVVIEDAluD0q7XZiRKrNJcPK3qkLRF/79DND1H5q1LBjgg==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"chokidar": ">=3.0.0 <4.0.0", "chokidar": ">=3.0.0 <4.0.0",
...@@ -4651,9 +4651,9 @@ ...@@ -4651,9 +4651,9 @@
} }
}, },
"node_modules/typescript": { "node_modules/typescript": {
"version": "4.9.4", "version": "4.9.5",
"resolved": "https://registry.npmmirror.com/typescript/-/typescript-4.9.4.tgz", "resolved": "https://registry.npmmirror.com/typescript/-/typescript-4.9.5.tgz",
"integrity": "sha512-Uz+dTXYzxXXbsFpM86Wh3dKCxrQqUcVMxwU54orwlJjOpO3ao8L7j5lH+dWfTwgCwIuM9GQ2kvVotzYJMXTBZg==", "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==",
"devOptional": true, "devOptional": true,
"bin": { "bin": {
"tsc": "bin/tsc", "tsc": "bin/tsc",
...@@ -4694,9 +4694,9 @@ ...@@ -4694,9 +4694,9 @@
} }
}, },
"node_modules/unimport": { "node_modules/unimport": {
"version": "2.0.1", "version": "2.1.0",
"resolved": "https://registry.npmmirror.com/unimport/-/unimport-2.0.1.tgz", "resolved": "https://registry.npmmirror.com/unimport/-/unimport-2.1.0.tgz",
"integrity": "sha512-hMeDspGrEcocahicTr0AQYUGes24FvJtOxk9QEjeEOGv+n1EdpsDiT6z8t209PWhemPg0T5w/ooTVhup2GdrFA==", "integrity": "sha512-GDVIxATluUquX8EqelT6DtnmnZaXGID1jsO9IXwlnxb0OIEqKAxTOnTlnGmHbseoGTh+ZC9kcNDaO18HYQj9KA==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"@rollup/pluginutils": "^5.0.2", "@rollup/pluginutils": "^5.0.2",
...@@ -4764,16 +4764,16 @@ ...@@ -4764,16 +4764,16 @@
} }
}, },
"node_modules/unplugin-auto-import": { "node_modules/unplugin-auto-import": {
"version": "0.12.2", "version": "0.13.0",
"resolved": "https://registry.npmmirror.com/unplugin-auto-import/-/unplugin-auto-import-0.12.2.tgz", "resolved": "https://registry.npmmirror.com/unplugin-auto-import/-/unplugin-auto-import-0.13.0.tgz",
"integrity": "sha512-hC4w0GZjPjmLtrxV0u10XO350V9eCtQyEyifXr7B9UGD7SvbbIvKuOcHt58Zd4FAqZJXKWoXkpr9mdhBp85Usw==", "integrity": "sha512-nKMxDbkjM4FRPInFfm7sWrJOKgxfKKwb5yLPP+DEGl/SG0/FtBoW1LnZL4PQfx0FXjertoHO1P/5nDf+RSip2Q==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"@antfu/utils": "^0.7.2", "@antfu/utils": "^0.7.2",
"@rollup/pluginutils": "^5.0.2", "@rollup/pluginutils": "^5.0.2",
"local-pkg": "^0.4.3", "local-pkg": "^0.4.3",
"magic-string": "^0.27.0", "magic-string": "^0.27.0",
"unimport": "^2.0.1", "unimport": "^2.1.0",
"unplugin": "^1.0.1" "unplugin": "^1.0.1"
}, },
"engines": { "engines": {
...@@ -4883,15 +4883,15 @@ ...@@ -4883,15 +4883,15 @@
} }
}, },
"node_modules/vite": { "node_modules/vite": {
"version": "4.0.4", "version": "4.1.1",
"resolved": "https://registry.npmmirror.com/vite/-/vite-4.0.4.tgz", "resolved": "https://registry.npmmirror.com/vite/-/vite-4.1.1.tgz",
"integrity": "sha512-xevPU7M8FU0i/80DMR+YhgrzR5KS2ORy1B4xcX/cXLsvnUWvfHuqMmVU6N0YiJ4JWGRJJsLCgjEzKjG9/GKoSw==", "integrity": "sha512-LM9WWea8vsxhr782r9ntg+bhSFS06FJgCvvB0+8hf8UWtvaiDagKYWXndjfX6kGl74keHJUcpzrQliDXZlF5yg==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"esbuild": "^0.16.3", "esbuild": "^0.16.14",
"postcss": "^8.4.20", "postcss": "^8.4.21",
"resolve": "^1.22.1", "resolve": "^1.22.1",
"rollup": "^3.7.0" "rollup": "^3.10.0"
}, },
"bin": { "bin": {
"vite": "bin/vite.js" "vite": "bin/vite.js"
...@@ -4948,15 +4948,15 @@ ...@@ -4948,15 +4948,15 @@
} }
}, },
"node_modules/vue": { "node_modules/vue": {
"version": "3.2.45", "version": "3.2.47",
"resolved": "https://registry.npmmirror.com/vue/-/vue-3.2.45.tgz", "resolved": "https://registry.npmmirror.com/vue/-/vue-3.2.47.tgz",
"integrity": "sha512-9Nx/Mg2b2xWlXykmCwiTUCWHbWIj53bnkizBxKai1g61f2Xit700A1ljowpTIM11e3uipOeiPcSqnmBg6gyiaA==", "integrity": "sha512-60188y/9Dc9WVrAZeUVSDxRQOZ+z+y5nO2ts9jWXSTkMvayiWxCWOWtBQoYjLeccfXkiiPZWAHcV+WTPhkqJHQ==",
"dependencies": { "dependencies": {
"@vue/compiler-dom": "3.2.45", "@vue/compiler-dom": "3.2.47",
"@vue/compiler-sfc": "3.2.45", "@vue/compiler-sfc": "3.2.47",
"@vue/runtime-dom": "3.2.45", "@vue/runtime-dom": "3.2.47",
"@vue/server-renderer": "3.2.45", "@vue/server-renderer": "3.2.47",
"@vue/shared": "3.2.45" "@vue/shared": "3.2.47"
} }
}, },
"node_modules/vue-eslint-parser": { "node_modules/vue-eslint-parser": {
......
...@@ -17,12 +17,12 @@ ...@@ -17,12 +17,12 @@
"dependencies": { "dependencies": {
"@element-plus/icons-vue": "^2.0.10", "@element-plus/icons-vue": "^2.0.10",
"@tinymce/tinymce-vue": "^5.0.0", "@tinymce/tinymce-vue": "^5.0.0",
"@vueuse/core": "^9.11.1", "@vueuse/core": "^9.12.0",
"axios": "^1.2.5", "axios": "^1.3.1",
"blueimp-md5": "^2.19.0", "blueimp-md5": "^2.19.0",
"element-plus": "^2.2.28", "element-plus": "^2.2.28",
"pinia": "^2.0.29", "pinia": "^2.0.30",
"vue": "^3.2.45", "vue": "^3.2.47",
"vue-router": "^4.1.6" "vue-router": "^4.1.6"
}, },
"devDependencies": { "devDependencies": {
...@@ -34,13 +34,13 @@ ...@@ -34,13 +34,13 @@
"@vue/tsconfig": "^0.1.3", "@vue/tsconfig": "^0.1.3",
"ali-oss": "^6.17.1", "ali-oss": "^6.17.1",
"chalk": "^5.2.0", "chalk": "^5.2.0",
"eslint": "^8.32.0", "eslint": "^8.33.0",
"eslint-plugin-vue": "^9.9.0", "eslint-plugin-vue": "^9.9.0",
"npm-run-all": "^4.1.5", "npm-run-all": "^4.1.5",
"sass": "^1.57.1", "sass": "^1.58.0",
"typescript": "~4.9.4", "typescript": "~4.9.5",
"unplugin-auto-import": "^0.12.2", "unplugin-auto-import": "^0.13.0",
"vite": "^4.0.4", "vite": "^4.1.1",
"vue-tsc": "^1.0.24" "vue-tsc": "^1.0.24"
} }
} }
.rule {
display: flex;
}
.rule-and-or {
position: relative;
min-width: 30px;
min-height: 40px;
&::before {
content: ' ';
position: absolute;
left: 50%;
top: 0;
bottom: 0;
width: 2px;
background-color: #d4dbe1;
transform: translateX(-50%);
}
span {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
width: 24px;
height: 24px;
line-height: 24px;
color: #00b2a6;
background: #fff;
text-align: center;
border: 1px solid #d4dbe1;
border-radius: 50%;
cursor: pointer;
}
}
.rule-right {
flex: 1;
}
<script setup lang="ts">
import { Operation } from '@element-plus/icons-vue'
</script>
<template>
<el-card shadow="never" style="margin-top: 20px">
<template #header>
<el-button circle color="#f90" :icon="Operation"></el-button>
事件属性满足以下条件</template
>
</el-card>
</template>
<script setup lang="ts"></script>
<template></template>
<script setup lang="ts">
import type { UserAttrRule } from '@/types'
import { UserFilled, Plus } from '@element-plus/icons-vue'
import RuleGroup from './UserRuleGroup.vue'
const rule = ref<UserAttrRule>({
items: [
{
attr_id: '属性ID',
attr: '属性',
attr_name: '属性名称',
attr_type: 1,
operate: '操作',
operate_name: '操作名称',
value: '值'
}
],
current_logic_operate: 'and'
})
function handleChange(data: UserAttrRule) {
rule.value = data
}
</script>
<template>
<el-card shadow="never">
<template #header>
<el-button circle color="#006df1" :icon="UserFilled"></el-button>
用户属性满足以下条件</template
>
<RuleGroup :data="rule" @update="handleChange"></RuleGroup>
<el-button text :icon="Plus">添加条件</el-button>
</el-card>
</template>
<script setup lang="ts">
import type { UserAttrRule } from '@/types'
interface Props {
data: UserAttrRule
}
const props = defineProps<Props>()
const emit = defineEmits<{
(e: 'update', data: UserAttrRule): void
}>()
const andOrText = computed(() => {
const map = { or: '或', and: '且' }
return map[props.data.current_logic_operate]
})
// 切换and 或者 or
function toggleOperate() {
update({ ...props.data, current_logic_operate: props.data.current_logic_operate === 'or' ? 'and' : 'or' })
}
function update(data: UserAttrRule) {
emit('update', data)
}
</script>
<template>
<div class="rule">
<div class="rule-and-or">
<span @click="toggleOperate">{{ andOrText }}</span>
</div>
<div class="rule-item-wrap">
<div class="rule-item" v-for="item in data.items">
<el-select>
<el-option label="1" value="1"></el-option>
</el-select>
<el-select>
<el-option label="1" value="1"></el-option>
</el-select>
</div>
</div>
</div>
</template>
<style src="@/assets/styles/rule.scss"></style>
<script setup lang="ts">
import type { Group } from '../types'
import type { FormInstance, FormRules } from 'element-plus'
import { ElMessage } from 'element-plus'
import { dateUnitList, weekList } from '@/utils/dictionary'
interface Props {
data: Partial<Group>
}
const props = defineProps<Props>()
const emit = defineEmits<{
(e: 'update'): void
(e: 'update:modelValue', visible: boolean): void
}>()
const isUpdate = $computed(() => !!props.data?.id)
const title = $computed(() => {
if (isUpdate) {
return props.data.type === 1 ? '修改静态群组' : '修改动态群组'
} else {
return props.data.type === 1 ? '新建静态群组' : '新建动态群组'
}
})
const formRef = $ref<FormInstance>()
const form = reactive({
id: '',
name: '',
type: '',
status: '',
update_rule: {
type: '1',
info: { unit: undefined, week: undefined, day: undefined }
}
})
const rules = ref<FormRules>({
name: [{ required: true, message: '请输入群组名称' }],
url: [{ required: true, message: '请选择标签类型图标' }]
})
// 提交
function handleSubmit() {
formRef?.validate().then(() => (isUpdate ? handleUpdate() : handleCreate()))
}
// 新建
function handleCreate() {
ElMessage({ message: '创建成功', type: 'success' })
emit('update')
emit('update:modelValue', false)
}
// 修改
function handleUpdate() {
ElMessage({ message: '修改成功', type: 'success' })
emit('update')
emit('update:modelValue', false)
}
</script>
<template>
<el-dialog :title="title" :close-on-click-modal="false" width="600px" @update:modelValue="$emit('update:modelValue')">
<el-form ref="formRef" :model="form" :rules="rules" label-suffix=":" label-width="100px">
<el-form-item label="群组名称" prop="name">
<el-input v-model="form.name" placeholder="请输入" />
</el-form-item>
<el-form-item label="更新频率" prop="update_rule.type" v-if="data.type === 2">
<el-radio-group v-model="form.update_rule.type">
<el-radio label="1">自动更新</el-radio>
<el-radio label="2">手动更新</el-radio>
</el-radio-group>
<div class="update-rule-wrap" v-if="form.update_rule.type === '1'">
<span></span>
<el-select v-model="form.update_rule.info.unit" placeholder=" " style="width: 60px">
<el-option v-for="item in dateUnitList" :label="item.label" :value="item.value"></el-option>
</el-select>
<template v-if="form.update_rule.info.unit === 1">
<span>的凌晨更新</span>
</template>
<template v-if="form.update_rule.info.unit === 2">
<span></span>
<el-select v-model="form.update_rule.info.week" placeholder=" " style="width: 80px">
<el-option v-for="item in weekList" :label="item.label" :value="item.value"></el-option>
</el-select>
<span>的凌晨更新</span>
</template>
<template v-if="form.update_rule.info.unit === 3">
<span></span>
<el-select v-model="form.update_rule.info.day" placeholder=" " style="width: 60px">
<el-option v-for="item in 6" :label="item" :value="item"></el-option>
</el-select>
<span>天的凌晨更新</span>
</template>
</div>
</el-form-item>
<el-form-item label="状态" prop="status">
<el-switch v-model="form.status" active-text="生效" inactive-text="失效" />
</el-form-item>
</el-form>
<template #footer>
<el-row justify="center">
<el-button plain auto-insert-space @click="$emit('update:modelValue', false)">关闭</el-button>
<el-button type="primary" auto-insert-space @click="handleSubmit">保存</el-button>
</el-row>
</template>
</el-dialog>
</template>
<style lang="scss">
.update-rule-wrap {
width: 100%;
.el-select {
margin: 0 10px;
}
}
</style>
<script setup lang="ts">
import type { Group } from '../types'
import { UserFilled } from '@element-plus/icons-vue'
// import { ElMessage } from 'element-plus'
interface Props {
data: Group
}
const props = defineProps<Props>()
const emit = defineEmits<{
(e: 'update'): void
(e: 'update:modelValue', visible: boolean): void
}>()
// 列表配置
const listOptions = computed(() => {
return {
columns: [
{ label: '序号', type: 'index', width: 60 },
{ label: '用户ID', prop: 'id' },
{ label: '姓名', prop: 'name' },
{ label: '性别', prop: 'name' },
{ label: '手机号码', prop: 'name' },
{ label: '来源连接', prop: 'name' },
{ label: '状态', prop: 'name' },
{ label: '更新人', prop: 'name' },
{ label: '更新时间', prop: 'name' }
],
data: [{ id: 1 }, { id: 2 }]
}
})
</script>
<template>
<el-dialog
title="查看群组信息"
:close-on-click-modal="false"
width="800px"
@update:modelValue="$emit('update:modelValue')">
<el-form label-suffix=":" label-width="82px">
<el-row>
<el-col :span="12"><el-form-item label="群组名称">群组名称</el-form-item></el-col>
<el-col :span="12">
<el-form-item label="群组类型">群组类型</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12"><el-form-item label="更新频率">自动更新</el-form-item></el-col>
<el-col :span="12"><el-form-item label="状态">生效</el-form-item></el-col>
</el-row>
</el-form>
<el-card>
<div class="group-box">
<dl>
<dt>符合群组人数</dt>
<dd class="group-box__count">
<el-icon><UserFilled></UserFilled></el-icon>
<span>199人</span>
</dd>
</dl>
<dl>
<dt>最后更新时间</dt>
<dd>2022-10-12 13:24:23</dd>
</dl>
<dl>
<dt>更新状态</dt>
<dd>
<span>完成</span>
<el-button type="primary" plain size="small">立即更新</el-button>
</dd>
</dl>
</div>
</el-card>
<el-card style="margin-top: 20px">
<template #header>群组用户</template>
<AppList v-bind="listOptions" ref="appList"></AppList>
</el-card>
<template #footer>
<el-row justify="center">
<el-button plain auto-insert-space @click="$emit('update:modelValue', false)">关闭</el-button>
</el-row>
</template>
</el-dialog>
</template>
<style lang="scss">
.group-box {
display: flex;
justify-content: space-between;
dt {
margin-bottom: 10px;
text-align: center;
}
dd {
display: flex;
align-items: center;
justify-content: center;
span {
padding: 0 5px;
}
}
}
.group-box__count {
font-weight: bold;
color: var(--main-color);
}
</style>
export interface Group {
id: string
name: string
status: number
type: 1 | 2
}
<script setup lang="ts"> <script setup lang="ts">
import type { Group } from '../types'
import { Plus, Delete } from '@element-plus/icons-vue' import { Plus, Delete } from '@element-plus/icons-vue'
import AppList from '@/components/base/AppList.vue' import AppList from '@/components/base/AppList.vue'
import { ElMessageBox } from 'element-plus'
const FormDialog = defineAsyncComponent(() => import('../components/FormDialog.vue'))
const ViewDialog = defineAsyncComponent(() => import('../components/ViewDialog.vue'))
const appList = $ref<InstanceType<typeof AppList> | null>(null) const appList = $ref<InstanceType<typeof AppList> | null>(null)
// 列表配置 // 列表配置
const listOptions = computed(() => { const listOptions = computed(() => {
return { return {
filters: [{ type: 'input', prop: 'name', placeholder: '请输入群组名称' }], filters: [
{ type: 'input', prop: 'name', placeholder: '请输入群组名称' },
{ type: 'input', prop: 'id', placeholder: '请输入群组ID' },
{ type: 'select', prop: 'status', placeholder: '请输入群组名称' },
{ type: 'input', prop: 'user', placeholder: '更新人' }
],
columns: [ columns: [
{ type: 'selection' }, { type: 'selection' },
{ label: '序号', type: 'index', width: 60 }, { label: '序号', type: 'index', width: 60 },
...@@ -20,7 +30,10 @@ const listOptions = computed(() => { ...@@ -20,7 +30,10 @@ const listOptions = computed(() => {
{ label: '更新时间', prop: 'name' }, { label: '更新时间', prop: 'name' },
{ label: '操作', slots: 'table-x', width: 240 } { label: '操作', slots: 'table-x', width: 240 }
], ],
data: [{}, {}] data: [
{ id: 1, type: 1 },
{ id: 2, type: 2 }
]
} }
}) })
...@@ -28,6 +41,30 @@ const listOptions = computed(() => { ...@@ -28,6 +41,30 @@ const listOptions = computed(() => {
function handleRefresh() { function handleRefresh() {
appList?.refetch() appList?.refetch()
} }
let formVisible = $ref(false)
let currentRow = $ref<Partial<Group>>()
// 新建
function handleAdd(type: 1 | 2) {
currentRow = { type }
formVisible = true
}
// 修改
function handleUpdate(row: Group) {
currentRow = row
formVisible = true
}
// 删除
function handleRemove(row: Group) {
ElMessageBox.confirm('确定要删除该群组吗?', '提示').then(() => {})
}
let viewVisible = $ref(false)
// 查看
function handleView(row: Group) {
currentRow = row
viewVisible = true
}
</script> </script>
<template> <template>
...@@ -35,16 +72,29 @@ function handleRefresh() { ...@@ -35,16 +72,29 @@ function handleRefresh() {
<AppList v-bind="listOptions" ref="appList"> <AppList v-bind="listOptions" ref="appList">
<template #header-buttons> <template #header-buttons>
<el-space> <el-space>
<el-button type="primary" :icon="Plus">新建</el-button> <el-dropdown>
<el-button type="primary" :icon="Plus">新建</el-button>
<template #dropdown>
<el-dropdown-menu>
<el-dropdown-item @click="handleAdd(2)">新建动态群组</el-dropdown-item>
<el-dropdown-item @click="handleAdd(1)">新建静态群组</el-dropdown-item>
</el-dropdown-menu>
</template>
</el-dropdown>
<el-button type="danger" plain :icon="Delete">删除</el-button> <el-button type="danger" plain :icon="Delete">删除</el-button>
</el-space> </el-space>
</template> </template>
<template #table-x> <template #table-x="{ row }">
<el-button type="primary" plain>查看</el-button> <el-button type="primary" plain @click="handleView(row)">查看</el-button>
<el-button type="primary" plain>编辑</el-button> <el-button type="primary" plain @click="handleUpdate(row)">编辑</el-button>
<el-button type="primary" plain>删除</el-button> <el-button type="primary" plain @click="handleRemove(row)">删除</el-button>
</template> </template>
</AppList> </AppList>
</AppCard> </AppCard>
<!-- 新建/修改群组 -->
<FormDialog v-model="formVisible" :data="currentRow" v-if="formVisible && currentRow"></FormDialog>
<!-- 查看 -->
<ViewDialog v-model="viewVisible" :data="(currentRow as Group)" v-if="viewVisible && currentRow"></ViewDialog>
</template> </template>
...@@ -2,6 +2,7 @@ ...@@ -2,6 +2,7 @@
import type { Label } from '../types' import type { Label } from '../types'
import type { FormInstance, FormRules } from 'element-plus' import type { FormInstance, FormRules } from 'element-plus'
import { ElMessage } from 'element-plus' import { ElMessage } from 'element-plus'
import { dateUnitList, weekList } from '@/utils/dictionary'
interface Props { interface Props {
data?: Label data?: Label
...@@ -32,23 +33,6 @@ const rules = ref<FormRules>({ ...@@ -32,23 +33,6 @@ const rules = ref<FormRules>({
type: [{ required: true, message: '请选择标签类型' }] type: [{ required: true, message: '请选择标签类型' }]
}) })
const unitList = [
{ label: '天', value: 1 },
{ label: '周', value: 2 },
{ label: '月', value: 3 }
]
const weekList = [
{ label: '周一', value: 1 },
{ label: '周二', value: 2 },
{ label: '周三', value: 3 },
{ label: '周四', value: 4 },
{ label: '周五', value: 5 },
{ label: '周六', value: 6 },
{ label: '周日', value: 7 }
]
const dayList = [1, 2, 3, 4, 5, 6]
// 提交 // 提交
function handleSubmit() { function handleSubmit() {
formRef?.validate().then(() => (isUpdate ? handleUpdate() : handleCreate())) formRef?.validate().then(() => (isUpdate ? handleUpdate() : handleCreate()))
...@@ -83,23 +67,23 @@ function handleUpdate() { ...@@ -83,23 +67,23 @@ function handleUpdate() {
</el-radio-group> </el-radio-group>
<div class="update-rule-wrap" v-if="form.update_rule.type === '1'"> <div class="update-rule-wrap" v-if="form.update_rule.type === '1'">
<span></span> <span></span>
<el-select v-model="form.update_rule.info.unit" placeholder="" style="width: 60px"> <el-select v-model="form.update_rule.info.unit" placeholder=" " style="width: 60px">
<el-option v-for="item in unitList" :label="item.label" :value="item.value"></el-option> <el-option v-for="item in dateUnitList" :label="item.label" :value="item.value"></el-option>
</el-select> </el-select>
<template v-if="form.update_rule.info.unit === 1"> <template v-if="form.update_rule.info.unit === 1">
<span>的凌晨更新</span> <span>的凌晨更新</span>
</template> </template>
<template v-if="form.update_rule.info.unit === 2"> <template v-if="form.update_rule.info.unit === 2">
<span></span> <span></span>
<el-select v-model="form.update_rule.info.week" placeholder="" style="width: 80px"> <el-select v-model="form.update_rule.info.week" placeholder=" " style="width: 80px">
<el-option v-for="item in weekList" :label="item.label" :value="item.value"></el-option> <el-option v-for="item in weekList" :label="item.label" :value="item.value"></el-option>
</el-select> </el-select>
<span>的凌晨更新</span> <span>的凌晨更新</span>
</template> </template>
<template v-if="form.update_rule.info.unit === 3"> <template v-if="form.update_rule.info.unit === 3">
<span></span> <span></span>
<el-select v-model="form.update_rule.info.day" placeholder="" style="width: 60px"> <el-select v-model="form.update_rule.info.day" placeholder=" " style="width: 60px">
<el-option v-for="item in dayList" :label="item" :value="item"></el-option> <el-option v-for="item in 6" :label="item" :value="item"></el-option>
</el-select> </el-select>
<span>天的凌晨更新</span> <span>天的凌晨更新</span>
</template> </template>
......
<script setup lang="ts">
import type { Label } from '../types'
import type { FormInstance, FormRules } from 'element-plus'
import { ElMessage } from 'element-plus'
import UserRule from '@/components/rule/UserRule.vue'
import EventRule from '@/components/rule/EventRule.vue'
interface Props {
data: Label
}
const props = defineProps<Props>()
const emit = defineEmits<{
(e: 'update'): void
(e: 'update:modelValue', visible: boolean): void
}>()
const formRef = $ref<FormInstance>()
const form = reactive({
id: '',
name: '',
type: '',
status: ''
})
const rules = ref<FormRules>({
name: [{ required: true, message: '请输入标签名称' }],
type: [{ required: true, message: '请选择标签类型' }]
})
// 提交
function handleSubmit() {
formRef?.validate().then(handleUpdate)
}
// 修改
function handleUpdate() {
ElMessage({ message: '保存成功', type: 'success' })
emit('update')
emit('update:modelValue', false)
}
</script>
<template>
<el-dialog
title="标签规则管理"
:close-on-click-modal="false"
width="800px"
@update:modelValue="$emit('update:modelValue')">
<el-form label-suffix=":" label-width="82px">
<el-row>
<el-col :span="12"><el-form-item label="标签名称">标签名称</el-form-item></el-col>
<el-col :span="12">
<el-form-item label="标签类型">标签类型</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12"><el-form-item label="更新频率">自动更新</el-form-item></el-col>
<el-col :span="12"><el-form-item label="状态">生效</el-form-item></el-col>
</el-row>
</el-form>
<!-- 用户属性规则 -->
<UserRule></UserRule>
<!-- 事件属性规则 -->
<EventRule></EventRule>
<template #footer>
<el-row justify="center">
<el-button plain auto-insert-space @click="$emit('update:modelValue', false)">关闭</el-button>
<el-button type="primary" auto-insert-space @click="handleSubmit">保存</el-button>
</el-row>
</template>
</el-dialog>
</template>
<style lang="scss">
.update-rule-wrap {
width: 100%;
.el-select {
margin: 0 10px;
}
}
</style>
...@@ -7,6 +7,7 @@ import { ElMessageBox } from 'element-plus' ...@@ -7,6 +7,7 @@ import { ElMessageBox } from 'element-plus'
const LabelFormDialog = defineAsyncComponent(() => import('../components/LabelFormDialog.vue')) const LabelFormDialog = defineAsyncComponent(() => import('../components/LabelFormDialog.vue'))
const LabelViewDialog = defineAsyncComponent(() => import('../components/LabelViewDialog.vue')) const LabelViewDialog = defineAsyncComponent(() => import('../components/LabelViewDialog.vue'))
const LabelRuleDialog = defineAsyncComponent(() => import('../components/LabelRuleDialog.vue'))
const appList = $ref<InstanceType<typeof AppList> | null>(null) const appList = $ref<InstanceType<typeof AppList> | null>(null)
// 列表配置 // 列表配置
...@@ -54,12 +55,18 @@ function handleUpdate(row: Label) { ...@@ -54,12 +55,18 @@ function handleUpdate(row: Label) {
function handleRemove(row: Label) { function handleRemove(row: Label) {
ElMessageBox.confirm('确定要删除该标签吗?', '提示').then(() => {}) ElMessageBox.confirm('确定要删除该标签吗?', '提示').then(() => {})
} }
let viewVisible = $ref(false)
// 查看 // 查看
let viewVisible = $ref(false)
function handleView(row: Label) { function handleView(row: Label) {
currentRow = row currentRow = row
viewVisible = true viewVisible = true
} }
// 规则
let ruleVisible = $ref(false)
function handleRule(row: Label) {
currentRow = row
ruleVisible = true
}
</script> </script>
<template> <template>
...@@ -74,7 +81,7 @@ function handleView(row: Label) { ...@@ -74,7 +81,7 @@ function handleView(row: Label) {
</template> </template>
<template #table-x="{ row }"> <template #table-x="{ row }">
<el-button type="primary" plain>规则</el-button> <el-button type="primary" plain @click="handleRule(row)">规则</el-button>
<el-button type="primary" plain @click="handleView(row)">查看</el-button> <el-button type="primary" plain @click="handleView(row)">查看</el-button>
<el-button type="primary" plain @click="handleUpdate(row)">编辑</el-button> <el-button type="primary" plain @click="handleUpdate(row)">编辑</el-button>
<el-button type="primary" plain @click="handleRemove(row)">删除</el-button> <el-button type="primary" plain @click="handleRemove(row)">删除</el-button>
...@@ -86,6 +93,8 @@ function handleView(row: Label) { ...@@ -86,6 +93,8 @@ function handleView(row: Label) {
<LabelFormDialog v-model="formVisible" :data="currentRow" v-if="formVisible"></LabelFormDialog> <LabelFormDialog v-model="formVisible" :data="currentRow" v-if="formVisible"></LabelFormDialog>
<!-- 查看标签 --> <!-- 查看标签 -->
<LabelViewDialog v-model="viewVisible" :data="currentRow" v-if="viewVisible && currentRow"></LabelViewDialog> <LabelViewDialog v-model="viewVisible" :data="currentRow" v-if="viewVisible && currentRow"></LabelViewDialog>
<!-- 规则 -->
<LabelRuleDialog v-model="ruleVisible" :data="currentRow" v-if="ruleVisible && currentRow"></LabelRuleDialog>
</template> </template>
<style lang="scss"> <style lang="scss">
......
...@@ -54,33 +54,23 @@ export interface PermissionType { ...@@ -54,33 +54,23 @@ export interface PermissionType {
tag: string tag: string
} }
export interface MessageType {
cancel_time: string
channel: 0 | 1 | 2 | 3 | 4 | 5
created_at: string
fail_detail: string
from: string
from_source: number
id: string
is_cancel: 0 | 1
is_platform: number
is_read: 0 | 1
is_send: 0 | 1
messagebus_id: string
parent_id: number
payload: any
read_time: string
send_time: string
source: number
template_id: number
title: string
to: string
type: 1 | 2
updated_at: string
}
export interface SystemDictionary { export interface SystemDictionary {
id: string id: string
label: string label: string
value: string value: string
} }
export interface UserAttrRule {
current_logic_operate: 'and' | 'or'
items: UserAttrRuleItem[]
}
export interface UserAttrRuleItem {
attr_id: string
attr: string
attr_name: string
attr_type: number
operate: string
operate_name: string
value: string
}
...@@ -3,37 +3,46 @@ export const json2Array = function (data: any, isValueToNumber = true) { ...@@ -3,37 +3,46 @@ export const json2Array = function (data: any, isValueToNumber = true) {
return Object.keys(data).map(value => ({ label: data[value], value: isValueToNumber ? parseInt(value) : value })) return Object.keys(data).map(value => ({ label: data[value], value: isValueToNumber ? parseInt(value) : value }))
} }
// 参赛模式 export const dateUnitList = [
export const contestMode: Record<string, any> = { { label: '天', value: 1 },
'1': '个人赛' { label: '周', value: 2 },
} { label: '月', value: 3 }
// 参赛模式列表 ]
export const contestModeList = json2Array(contestMode, false)
// 评分规则 export const weekList = [
export const scoreRule: Record<number, any> = { { label: '周一', value: 1 },
1: '平均法', { label: '周二', value: 2 },
2: '加权平均法', { label: '周三', value: 3 },
3: '综合得分法', { label: '周四', value: 4 },
4: '最高分' { label: '周五', value: 5 },
} { label: '周六', value: 6 },
// 参赛模式列表 { label: '周日', value: 7 }
export const scoreRuleList = json2Array(scoreRule, false) ]
// 实验成绩规则 export const stringConditionList = [
export const gradeRule: Record<number, any> = { { label: '等于', value: 1 },
1: '实验报告', { label: '不等于', value: 2 },
2: '实验准备', { label: '包含', value: 3 },
3: '实验结果', { label: '不包含', value: 4 },
4: '课堂活跃度', { label: '空值', value: 5 },
5: '自定义' { label: '非空', value: 6 }
} ]
// 参赛模式列表
export const gradeRuleList = json2Array(gradeRule)
// 实验报告评分规则 export const numberConditionList = [
export const reportScoreRule: Record<number, any> = { { label: '=', value: 1 },
1: '人工评分', { label: '≠', value: 2 },
2: '自动评分' { label: '>', value: 3 },
} { label: '≥', value: 4 },
export const reportScoreRuleList = json2Array(reportScoreRule) { label: '<', value: 5 },
{ label: '≤', value: 6 },
{ label: '区间', value: 7 },
{ label: '空值', value: 8 },
{ label: '非空', value: 9 }
]
export const dateConditionList = [
{ label: '绝对时间前后', value: 1 },
{ label: '绝对时间区间', value: 2 },
{ label: '相对时间点', value: 3 },
{ label: '在...天内', value: 4 }
]
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论