提交 7df325a6 authored 作者: 王鹏飞's avatar 王鹏飞

chore: update

上级 080c2348
...@@ -8,14 +8,16 @@ ...@@ -8,14 +8,16 @@
"name": "center-zws", "name": "center-zws",
"version": "0.0.0", "version": "0.0.0",
"dependencies": { "dependencies": {
"@vueuse/core": "^9.6.0", "@vueuse/core": "^9.7.0",
"axios": "^1.2.1", "axios": "^1.2.1",
"blueimp-md5": "^2.19.0", "blueimp-md5": "^2.19.0",
"element-plus": "^2.2.26", "element-plus": "^2.2.27",
"lodash-es": "^4.17.21", "lodash-es": "^4.17.21",
"pinia": "^2.0.28", "pinia": "^2.0.28",
"qrcode.vue": "^3.3.3",
"qs": "^6.11.0", "qs": "^6.11.0",
"vue": "^3.2.45", "vue": "^3.2.45",
"vue-qrcode": "^2.2.0",
"vue-router": "^4.1.6" "vue-router": "^4.1.6"
}, },
"devDependencies": { "devDependencies": {
...@@ -28,13 +30,13 @@ ...@@ -28,13 +30,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.29.0", "eslint": "^8.30.0",
"eslint-plugin-vue": "^9.8.0", "eslint-plugin-vue": "^9.8.0",
"sass": "^1.56.2", "sass": "^1.57.0",
"typescript": "~4.9.4", "typescript": "~4.9.4",
"unplugin-auto-import": "^0.12.1", "unplugin-auto-import": "^0.12.1",
"vite": "^4.0.1", "vite": "^4.0.2",
"vue-tsc": "^1.0.13" "vue-tsc": "^1.0.14"
} }
}, },
"node_modules/@antfu/utils": { "node_modules/@antfu/utils": {
...@@ -426,15 +428,15 @@ ...@@ -426,15 +428,15 @@
} }
}, },
"node_modules/@eslint/eslintrc": { "node_modules/@eslint/eslintrc": {
"version": "1.3.3", "version": "1.4.0",
"resolved": "https://registry.npmmirror.com/@eslint/eslintrc/-/eslintrc-1.3.3.tgz", "resolved": "https://registry.npmmirror.com/@eslint/eslintrc/-/eslintrc-1.4.0.tgz",
"integrity": "sha512-uj3pT6Mg+3t39fvLrj8iuCIJ38zKO9FpGtJ4BBJebJhEwjoT+KLVNCcHT5QC9NGRIEi7fZ0ZR8YRb884auB4Lg==", "integrity": "sha512-7yfvXy6MWLgWSFsLhz5yH3iQ52St8cdUY6FoGieKkRDVxuxmrNuUetIuu6cmjNWwniUHiWXjxCr5tTXDrbYS5A==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"ajv": "^6.12.4", "ajv": "^6.12.4",
"debug": "^4.3.2", "debug": "^4.3.2",
"espree": "^9.4.0", "espree": "^9.4.0",
"globals": "^13.15.0", "globals": "^13.19.0",
"ignore": "^5.2.0", "ignore": "^5.2.0",
"import-fresh": "^3.2.1", "import-fresh": "^3.2.1",
"js-yaml": "^4.1.0", "js-yaml": "^4.1.0",
...@@ -459,9 +461,9 @@ ...@@ -459,9 +461,9 @@
} }
}, },
"node_modules/@humanwhocodes/config-array": { "node_modules/@humanwhocodes/config-array": {
"version": "0.11.7", "version": "0.11.8",
"resolved": "https://registry.npmmirror.com/@humanwhocodes/config-array/-/config-array-0.11.7.tgz", "resolved": "https://registry.npmmirror.com/@humanwhocodes/config-array/-/config-array-0.11.8.tgz",
"integrity": "sha512-kBbPWzN8oVMLb0hOUYXhmxggL/1cJE6ydvjDIGi9EnAGUyA7cLVKQg+d/Dsm+KZwx2czGHrCmMVLiyg8s5JPKw==", "integrity": "sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"@humanwhocodes/object-schema": "^1.2.1", "@humanwhocodes/object-schema": "^1.2.1",
...@@ -793,42 +795,42 @@ ...@@ -793,42 +795,42 @@
} }
}, },
"node_modules/@volar/language-core": { "node_modules/@volar/language-core": {
"version": "1.0.13", "version": "1.0.14",
"resolved": "https://registry.npmmirror.com/@volar/language-core/-/language-core-1.0.13.tgz", "resolved": "https://registry.npmmirror.com/@volar/language-core/-/language-core-1.0.14.tgz",
"integrity": "sha512-aJhRiNjKFgLLB3nRJOfAeyle4StnEQgOKa0UpJU+k5EZd3QdiMfQmekXjxYeQj7NOZNQU7zCBEIvQ3gy15I7tA==", "integrity": "sha512-j1tMQgw0qCV2amM4qDJNG/zc0yj3ay8HoWNt05IaiCPsULtSSpF/9+F6Izvn0DF7nWOd6MUHTxaQAeZwLfr56Q==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"@volar/source-map": "1.0.13", "@volar/source-map": "1.0.14",
"@vue/reactivity": "^3.2.45", "@vue/reactivity": "^3.2.45",
"muggle-string": "^0.1.0" "muggle-string": "^0.1.0"
} }
}, },
"node_modules/@volar/source-map": { "node_modules/@volar/source-map": {
"version": "1.0.13", "version": "1.0.14",
"resolved": "https://registry.npmmirror.com/@volar/source-map/-/source-map-1.0.13.tgz", "resolved": "https://registry.npmmirror.com/@volar/source-map/-/source-map-1.0.14.tgz",
"integrity": "sha512-dU0plR9BS+bLs7u4chWay+VEIFTrLF15rG2634lGcu7o+z01bRO1U2cegZuIPy46SNkN3ONErLHwS09NBM+Ucg==", "integrity": "sha512-8pHCbEWHWaSDGb/FM9zRIW1lY1OAo16MENVSQGCgTwz7PWf3Gw6WW3TFVKCtzaFhLjPH0i5e9hALy7vBPbSHoA==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"muggle-string": "^0.1.0" "muggle-string": "^0.1.0"
} }
}, },
"node_modules/@volar/typescript": { "node_modules/@volar/typescript": {
"version": "1.0.13", "version": "1.0.14",
"resolved": "https://registry.npmmirror.com/@volar/typescript/-/typescript-1.0.13.tgz", "resolved": "https://registry.npmmirror.com/@volar/typescript/-/typescript-1.0.14.tgz",
"integrity": "sha512-CfJ4higRZrLDAHVGY84gZ444ZUcA3ktPqVMW0fM3mgHDbzYViB3/tsvXOtZk76D3HK2ap6n4cDwBSv3cY4xqlg==", "integrity": "sha512-67qcjjz7KGFhMCG9EKMA9qJK3BRGQecO4dGyAKfMfClZ/PaVoKfDvJvYo89McGTQ8SeczD48I9TPnaJM0zK8JQ==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"@volar/language-core": "1.0.13" "@volar/language-core": "1.0.14"
} }
}, },
"node_modules/@volar/vue-language-core": { "node_modules/@volar/vue-language-core": {
"version": "1.0.13", "version": "1.0.14",
"resolved": "https://registry.npmmirror.com/@volar/vue-language-core/-/vue-language-core-1.0.13.tgz", "resolved": "https://registry.npmmirror.com/@volar/vue-language-core/-/vue-language-core-1.0.14.tgz",
"integrity": "sha512-DRUg7yk4w2+5XFk8LS1dbXEM0na2uAddOj3KWHROPQmn78pfgXEH3r0NGDCnxElWJX5Y16iameisOjtOhevxog==", "integrity": "sha512-grJ4dQ7c/suZmBBmZtw2O2XeDX+rtgpdBtHxMug1NMPRDxj5EZ9WGphWtGnMQj8RyVgpz9ByvV5GbQjk4/wfBw==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"@volar/language-core": "1.0.13", "@volar/language-core": "1.0.14",
"@volar/source-map": "1.0.13", "@volar/source-map": "1.0.14",
"@vue/compiler-dom": "^3.2.45", "@vue/compiler-dom": "^3.2.45",
"@vue/compiler-sfc": "^3.2.45", "@vue/compiler-sfc": "^3.2.45",
"@vue/reactivity": "^3.2.45", "@vue/reactivity": "^3.2.45",
...@@ -859,13 +861,13 @@ ...@@ -859,13 +861,13 @@
} }
}, },
"node_modules/@volar/vue-typescript": { "node_modules/@volar/vue-typescript": {
"version": "1.0.13", "version": "1.0.14",
"resolved": "https://registry.npmmirror.com/@volar/vue-typescript/-/vue-typescript-1.0.13.tgz", "resolved": "https://registry.npmmirror.com/@volar/vue-typescript/-/vue-typescript-1.0.14.tgz",
"integrity": "sha512-iEdkF5l6G10fv/G5hs7WcvtT48AT6y/Pm7pvafnB6SxPhm2uHQ+130x3zeWLMaUel5t6h5LBw2pFsF5Bh85QAQ==", "integrity": "sha512-2P0QeGLLY05fDTu8GqY8SR2+jldXRTrkQdD2Nc0sVOjMJ7j3RYYY0wJyZ9hCBDuxV4Micc6jdB8nKS0yxQgNvA==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"@volar/typescript": "1.0.13", "@volar/typescript": "1.0.14",
"@volar/vue-language-core": "1.0.13" "@volar/vue-language-core": "1.0.14"
} }
}, },
"node_modules/@vue/compiler-core": { "node_modules/@vue/compiler-core": {
...@@ -1030,13 +1032,13 @@ ...@@ -1030,13 +1032,13 @@
} }
}, },
"node_modules/@vueuse/core": { "node_modules/@vueuse/core": {
"version": "9.6.0", "version": "9.7.0",
"resolved": "https://registry.npmmirror.com/@vueuse/core/-/core-9.6.0.tgz", "resolved": "https://registry.npmmirror.com/@vueuse/core/-/core-9.7.0.tgz",
"integrity": "sha512-qGUcjKQXHgN+jqXEgpeZGoxdCbIDCdVPz3QiF1uyecVGbMuM63o96I1GjYx5zskKgRI0FKSNsVWM7rwrRMTf6A==", "integrity": "sha512-/AGY/t7jJPxCyRoVTygNKoroTiCvRaaZIW+yeSlBCnI7QRpQ9cvXNTdNaSl3GvSyFbn83+XwZwEZvI1OpQfeGw==",
"dependencies": { "dependencies": {
"@types/web-bluetooth": "^0.0.16", "@types/web-bluetooth": "^0.0.16",
"@vueuse/metadata": "9.6.0", "@vueuse/metadata": "9.7.0",
"@vueuse/shared": "9.6.0", "@vueuse/shared": "9.7.0",
"vue-demi": "*" "vue-demi": "*"
} }
}, },
...@@ -1063,14 +1065,14 @@ ...@@ -1063,14 +1065,14 @@
} }
}, },
"node_modules/@vueuse/metadata": { "node_modules/@vueuse/metadata": {
"version": "9.6.0", "version": "9.7.0",
"resolved": "https://registry.npmmirror.com/@vueuse/metadata/-/metadata-9.6.0.tgz", "resolved": "https://registry.npmmirror.com/@vueuse/metadata/-/metadata-9.7.0.tgz",
"integrity": "sha512-sIC8R+kWkIdpi5X2z2Gk8TRYzmczDwHRhEFfCu2P+XW2JdPoXrziqsGpDDsN7ykBx4ilwieS7JUIweVGhvZ93w==" "integrity": "sha512-M7WsAgw28FNtTH0bzsGuHEtJOPJqPpyeHS6PHq+8UesLgNjZ9waMAntiUrgUQlxt09M4i2lH7y9sRi0jkfeXGA=="
}, },
"node_modules/@vueuse/shared": { "node_modules/@vueuse/shared": {
"version": "9.6.0", "version": "9.7.0",
"resolved": "https://registry.npmmirror.com/@vueuse/shared/-/shared-9.6.0.tgz", "resolved": "https://registry.npmmirror.com/@vueuse/shared/-/shared-9.7.0.tgz",
"integrity": "sha512-/eDchxYYhkHnFyrb00t90UfjCx94kRHxc7J1GtBCqCG4HyPMX+krV9XJgVtWIsAMaxKVU4fC8NSUviG1JkwhUQ==", "integrity": "sha512-pwmt1y3TJ2s5KqWmkv9ZKEV59GwuZQZk8XLiU+hGswz0jej318ozbea9E4A/A50ksyM26swSFr7sZ9llNPsZHg==",
"dependencies": { "dependencies": {
"vue-demi": "*" "vue-demi": "*"
} }
...@@ -1226,7 +1228,6 @@ ...@@ -1226,7 +1228,6 @@
"version": "5.0.1", "version": "5.0.1",
"resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-5.0.1.tgz", "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-5.0.1.tgz",
"integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
"dev": true,
"engines": { "engines": {
"node": ">=8" "node": ">=8"
} }
...@@ -1235,7 +1236,6 @@ ...@@ -1235,7 +1236,6 @@
"version": "4.3.0", "version": "4.3.0",
"resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz", "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz",
"integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
"dev": true,
"dependencies": { "dependencies": {
"color-convert": "^2.0.1" "color-convert": "^2.0.1"
}, },
...@@ -1402,6 +1402,15 @@ ...@@ -1402,6 +1402,15 @@
"node": ">=6" "node": ">=6"
} }
}, },
"node_modules/camelcase": {
"version": "5.3.1",
"resolved": "https://registry.npmmirror.com/camelcase/-/camelcase-5.3.1.tgz",
"integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
"peer": true,
"engines": {
"node": ">=6"
}
},
"node_modules/chalk": { "node_modules/chalk": {
"version": "5.2.0", "version": "5.2.0",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-5.2.0.tgz", "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.2.0.tgz",
...@@ -1447,11 +1456,21 @@ ...@@ -1447,11 +1456,21 @@
"node": ">= 6" "node": ">= 6"
} }
}, },
"node_modules/cliui": {
"version": "6.0.0",
"resolved": "https://registry.npmmirror.com/cliui/-/cliui-6.0.0.tgz",
"integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==",
"peer": true,
"dependencies": {
"string-width": "^4.2.0",
"strip-ansi": "^6.0.0",
"wrap-ansi": "^6.2.0"
}
},
"node_modules/color-convert": { "node_modules/color-convert": {
"version": "2.0.1", "version": "2.0.1",
"resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz", "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz",
"integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
"dev": true,
"dependencies": { "dependencies": {
"color-name": "~1.1.4" "color-name": "~1.1.4"
}, },
...@@ -1462,8 +1481,7 @@ ...@@ -1462,8 +1481,7 @@
"node_modules/color-name": { "node_modules/color-name": {
"version": "1.1.4", "version": "1.1.4",
"resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz", "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz",
"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
"dev": true
}, },
"node_modules/combined-stream": { "node_modules/combined-stream": {
"version": "1.0.8", "version": "1.0.8",
...@@ -1580,6 +1598,15 @@ ...@@ -1580,6 +1598,15 @@
} }
} }
}, },
"node_modules/decamelize": {
"version": "1.2.0",
"resolved": "https://registry.npmmirror.com/decamelize/-/decamelize-1.2.0.tgz",
"integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==",
"peer": true,
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/deep-is": { "node_modules/deep-is": {
"version": "0.1.4", "version": "0.1.4",
"resolved": "https://registry.npmmirror.com/deep-is/-/deep-is-0.1.4.tgz", "resolved": "https://registry.npmmirror.com/deep-is/-/deep-is-0.1.4.tgz",
...@@ -1652,6 +1679,12 @@ ...@@ -1652,6 +1679,12 @@
"node": ">= 8.0.0" "node": ">= 8.0.0"
} }
}, },
"node_modules/dijkstrajs": {
"version": "1.0.2",
"resolved": "https://registry.npmmirror.com/dijkstrajs/-/dijkstrajs-1.0.2.tgz",
"integrity": "sha512-QV6PMaHTCNmKSeP6QoXhVTw9snc9VD8MulTT0Bd99Pacp4SS1cjcrYPgBPmibqKVtMJJfqC6XvOXgPMEEPH/fg==",
"peer": true
},
"node_modules/dir-glob": { "node_modules/dir-glob": {
"version": "3.0.1", "version": "3.0.1",
"resolved": "https://registry.npmmirror.com/dir-glob/-/dir-glob-3.0.1.tgz", "resolved": "https://registry.npmmirror.com/dir-glob/-/dir-glob-3.0.1.tgz",
...@@ -1683,9 +1716,9 @@ ...@@ -1683,9 +1716,9 @@
"dev": true "dev": true
}, },
"node_modules/element-plus": { "node_modules/element-plus": {
"version": "2.2.26", "version": "2.2.27",
"resolved": "https://registry.npmjs.org/element-plus/-/element-plus-2.2.26.tgz", "resolved": "https://registry.npmmirror.com/element-plus/-/element-plus-2.2.27.tgz",
"integrity": "sha512-O/rdY5m9DkclpVg8r3GynyqCunm7MxSR142xSsjrZA77bi7bcwA3SIy6SPEDqHi5R4KqgkGYgKSp4Q4e3irbYg==", "integrity": "sha512-P04HDOZBYDdvlYuleuCZRULzAc5xJVOBfLDK9xWxVo0vyo8ntdaXS5sTU+/76vrNzuO3FhLn9kvrsbiJEVa1jg==",
"dependencies": { "dependencies": {
"@ctrl/tinycolor": "^3.4.1", "@ctrl/tinycolor": "^3.4.1",
"@element-plus/icons-vue": "^2.0.6", "@element-plus/icons-vue": "^2.0.6",
...@@ -1707,6 +1740,18 @@ ...@@ -1707,6 +1740,18 @@
"vue": "^3.2.0" "vue": "^3.2.0"
} }
}, },
"node_modules/emoji-regex": {
"version": "8.0.0",
"resolved": "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-8.0.0.tgz",
"integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
"peer": true
},
"node_modules/encode-utf8": {
"version": "1.0.3",
"resolved": "https://registry.npmmirror.com/encode-utf8/-/encode-utf8-1.0.3.tgz",
"integrity": "sha512-ucAnuBEhUK4boH2HjVYG5Q2mQyPorvv0u/ocS+zhdw0S8AlHYY+GOFhP1Gio5z4icpP2ivFSvhtFjQi8+T9ppw==",
"peer": true
},
"node_modules/end-of-stream": { "node_modules/end-of-stream": {
"version": "1.4.4", "version": "1.4.4",
"resolved": "https://registry.npmmirror.com/end-of-stream/-/end-of-stream-1.4.4.tgz", "resolved": "https://registry.npmmirror.com/end-of-stream/-/end-of-stream-1.4.4.tgz",
...@@ -1850,13 +1895,13 @@ ...@@ -1850,13 +1895,13 @@
} }
}, },
"node_modules/eslint": { "node_modules/eslint": {
"version": "8.29.0", "version": "8.30.0",
"resolved": "https://registry.npmjs.org/eslint/-/eslint-8.29.0.tgz", "resolved": "https://registry.npmmirror.com/eslint/-/eslint-8.30.0.tgz",
"integrity": "sha512-isQ4EEiyUjZFbEKvEGJKKGBwXtvXX+zJbkVKCgTuB9t/+jUBcy8avhkEwWJecI15BkRkOYmvIM5ynbhRjEkoeg==", "integrity": "sha512-MGADB39QqYuzEGov+F/qb18r4i7DohCDOfatHaxI2iGlPuC65bwG2gxgO+7DkyL38dRFaRH7RaRAgU6JKL9rMQ==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"@eslint/eslintrc": "^1.3.3", "@eslint/eslintrc": "^1.4.0",
"@humanwhocodes/config-array": "^0.11.6", "@humanwhocodes/config-array": "^0.11.8",
"@humanwhocodes/module-importer": "^1.0.1", "@humanwhocodes/module-importer": "^1.0.1",
"@nodelib/fs.walk": "^1.2.8", "@nodelib/fs.walk": "^1.2.8",
"ajv": "^6.10.0", "ajv": "^6.10.0",
...@@ -1875,7 +1920,7 @@ ...@@ -1875,7 +1920,7 @@
"file-entry-cache": "^6.0.1", "file-entry-cache": "^6.0.1",
"find-up": "^5.0.0", "find-up": "^5.0.0",
"glob-parent": "^6.0.2", "glob-parent": "^6.0.2",
"globals": "^13.15.0", "globals": "^13.19.0",
"grapheme-splitter": "^1.0.4", "grapheme-splitter": "^1.0.4",
"ignore": "^5.2.0", "ignore": "^5.2.0",
"import-fresh": "^3.0.0", "import-fresh": "^3.0.0",
...@@ -1900,9 +1945,6 @@ ...@@ -1900,9 +1945,6 @@
}, },
"engines": { "engines": {
"node": "^12.22.0 || ^14.17.0 || >=16.0.0" "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
},
"funding": {
"url": "https://opencollective.com/eslint"
} }
}, },
"node_modules/eslint-plugin-vue": { "node_modules/eslint-plugin-vue": {
...@@ -2344,6 +2386,15 @@ ...@@ -2344,6 +2386,15 @@
"resolved": "https://registry.npmmirror.com/function-bind/-/function-bind-1.1.1.tgz", "resolved": "https://registry.npmmirror.com/function-bind/-/function-bind-1.1.1.tgz",
"integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="
}, },
"node_modules/get-caller-file": {
"version": "2.0.5",
"resolved": "https://registry.npmmirror.com/get-caller-file/-/get-caller-file-2.0.5.tgz",
"integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
"peer": true,
"engines": {
"node": "6.* || 8.* || >= 10.*"
}
},
"node_modules/get-intrinsic": { "node_modules/get-intrinsic": {
"version": "1.1.3", "version": "1.1.3",
"resolved": "https://registry.npmmirror.com/get-intrinsic/-/get-intrinsic-1.1.3.tgz", "resolved": "https://registry.npmmirror.com/get-intrinsic/-/get-intrinsic-1.1.3.tgz",
...@@ -2407,9 +2458,9 @@ ...@@ -2407,9 +2458,9 @@
} }
}, },
"node_modules/globals": { "node_modules/globals": {
"version": "13.17.0", "version": "13.19.0",
"resolved": "https://registry.npmmirror.com/globals/-/globals-13.17.0.tgz", "resolved": "https://registry.npmmirror.com/globals/-/globals-13.19.0.tgz",
"integrity": "sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==", "integrity": "sha512-dkQ957uSRWHw7CFXLUtUHQI3g3aWApYhfNR2O6jn/907riyTYKVBmxYVROkBcY614FSSeSJh7Xm7SrUWCxvJMQ==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"type-fest": "^0.20.2" "type-fest": "^0.20.2"
...@@ -2661,6 +2712,15 @@ ...@@ -2661,6 +2712,15 @@
"node": ">=0.10.0" "node": ">=0.10.0"
} }
}, },
"node_modules/is-fullwidth-code-point": {
"version": "3.0.0",
"resolved": "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
"integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
"peer": true,
"engines": {
"node": ">=8"
}
},
"node_modules/is-glob": { "node_modules/is-glob": {
"version": "4.0.3", "version": "4.0.3",
"resolved": "https://registry.npmmirror.com/is-glob/-/is-glob-4.0.3.tgz", "resolved": "https://registry.npmmirror.com/is-glob/-/is-glob-4.0.3.tgz",
...@@ -3171,6 +3231,15 @@ ...@@ -3171,6 +3231,15 @@
"node": ">=10" "node": ">=10"
} }
}, },
"node_modules/p-try": {
"version": "2.2.0",
"resolved": "https://registry.npmmirror.com/p-try/-/p-try-2.2.0.tgz",
"integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
"peer": true,
"engines": {
"node": ">=6"
}
},
"node_modules/pac-proxy-agent": { "node_modules/pac-proxy-agent": {
"version": "5.0.0", "version": "5.0.0",
"resolved": "https://registry.npmmirror.com/pac-proxy-agent/-/pac-proxy-agent-5.0.0.tgz", "resolved": "https://registry.npmmirror.com/pac-proxy-agent/-/pac-proxy-agent-5.0.0.tgz",
...@@ -3221,7 +3290,6 @@ ...@@ -3221,7 +3290,6 @@
"version": "4.0.0", "version": "4.0.0",
"resolved": "https://registry.npmmirror.com/path-exists/-/path-exists-4.0.0.tgz", "resolved": "https://registry.npmmirror.com/path-exists/-/path-exists-4.0.0.tgz",
"integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
"dev": true,
"engines": { "engines": {
"node": ">=8" "node": ">=8"
} }
...@@ -3349,6 +3417,15 @@ ...@@ -3349,6 +3417,15 @@
"integrity": "sha512-fnWVljUchTro6RiCFvCXBbNhJc2NijN7oIQxbwsyL0buWJPG85v81ehlHI9fXrJsMNgTofEoWIQeClKpgxFLrg==", "integrity": "sha512-fnWVljUchTro6RiCFvCXBbNhJc2NijN7oIQxbwsyL0buWJPG85v81ehlHI9fXrJsMNgTofEoWIQeClKpgxFLrg==",
"dev": true "dev": true
}, },
"node_modules/pngjs": {
"version": "5.0.0",
"resolved": "https://registry.npmmirror.com/pngjs/-/pngjs-5.0.0.tgz",
"integrity": "sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw==",
"peer": true,
"engines": {
"node": ">=10.13.0"
}
},
"node_modules/postcss": { "node_modules/postcss": {
"version": "8.4.20", "version": "8.4.20",
"resolved": "https://registry.npmmirror.com/postcss/-/postcss-8.4.20.tgz", "resolved": "https://registry.npmmirror.com/postcss/-/postcss-8.4.20.tgz",
...@@ -3448,6 +3525,32 @@ ...@@ -3448,6 +3525,32 @@
"node": ">=6" "node": ">=6"
} }
}, },
"node_modules/qrcode": {
"version": "1.5.1",
"resolved": "https://registry.npmmirror.com/qrcode/-/qrcode-1.5.1.tgz",
"integrity": "sha512-nS8NJ1Z3md8uTjKtP+SGGhfqmTCs5flU/xR623oI0JX+Wepz9R8UrRVCTBTJm3qGw3rH6jJ6MUHjkDx15cxSSg==",
"peer": true,
"dependencies": {
"dijkstrajs": "^1.0.1",
"encode-utf8": "^1.0.3",
"pngjs": "^5.0.0",
"yargs": "^15.3.1"
},
"bin": {
"qrcode": "bin/qrcode"
},
"engines": {
"node": ">=10.13.0"
}
},
"node_modules/qrcode.vue": {
"version": "3.3.3",
"resolved": "https://registry.npmmirror.com/qrcode.vue/-/qrcode.vue-3.3.3.tgz",
"integrity": "sha512-OsD4tQjIbxg/K6D5ZkWjBdYI9eg9K2i8qeYILdEAX5mdAydSAxV7xKmmZSP/hA12olLqEMZ9ryqDQrwa9jEMgw==",
"peerDependencies": {
"vue": "^3.0.0"
}
},
"node_modules/qs": { "node_modules/qs": {
"version": "6.11.0", "version": "6.11.0",
"resolved": "https://registry.npmmirror.com/qs/-/qs-6.11.0.tgz", "resolved": "https://registry.npmmirror.com/qs/-/qs-6.11.0.tgz",
...@@ -3516,6 +3619,21 @@ ...@@ -3516,6 +3619,21 @@
"node": ">=8" "node": ">=8"
} }
}, },
"node_modules/require-directory": {
"version": "2.1.1",
"resolved": "https://registry.npmmirror.com/require-directory/-/require-directory-2.1.1.tgz",
"integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==",
"peer": true,
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/require-main-filename": {
"version": "2.0.0",
"resolved": "https://registry.npmmirror.com/require-main-filename/-/require-main-filename-2.0.0.tgz",
"integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==",
"peer": true
},
"node_modules/resolve": { "node_modules/resolve": {
"version": "1.22.1", "version": "1.22.1",
"resolved": "https://registry.npmmirror.com/resolve/-/resolve-1.22.1.tgz", "resolved": "https://registry.npmmirror.com/resolve/-/resolve-1.22.1.tgz",
...@@ -3599,9 +3717,9 @@ ...@@ -3599,9 +3717,9 @@
"dev": true "dev": true
}, },
"node_modules/sass": { "node_modules/sass": {
"version": "1.56.2", "version": "1.57.0",
"resolved": "https://registry.npmjs.org/sass/-/sass-1.56.2.tgz", "resolved": "https://registry.npmmirror.com/sass/-/sass-1.57.0.tgz",
"integrity": "sha512-ciEJhnyCRwzlBCB+h5cCPM6ie/6f8HrhZMQOf5vlU60Y1bI1rx5Zb0vlDZvaycHsg/MqFfF1Eq2eokAa32iw8w==", "integrity": "sha512-IZNEJDTK1cF5B1cGA593TPAV/1S0ysUDxq9XHjX/+SMy0QfUny+nfUsq5ZP7wWSl4eEf7wDJcEZ8ABYFmh3m/w==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"chokidar": ">=3.0.0 <4.0.0", "chokidar": ">=3.0.0 <4.0.0",
...@@ -3651,6 +3769,12 @@ ...@@ -3651,6 +3769,12 @@
"node": ">=10" "node": ">=10"
} }
}, },
"node_modules/set-blocking": {
"version": "2.0.0",
"resolved": "https://registry.npmmirror.com/set-blocking/-/set-blocking-2.0.0.tgz",
"integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==",
"peer": true
},
"node_modules/setprototypeof": { "node_modules/setprototypeof": {
"version": "1.2.0", "version": "1.2.0",
"resolved": "https://registry.npmmirror.com/setprototypeof/-/setprototypeof-1.2.0.tgz", "resolved": "https://registry.npmmirror.com/setprototypeof/-/setprototypeof-1.2.0.tgz",
...@@ -3802,11 +3926,24 @@ ...@@ -3802,11 +3926,24 @@
"safe-buffer": "~5.1.0" "safe-buffer": "~5.1.0"
} }
}, },
"node_modules/string-width": {
"version": "4.2.3",
"resolved": "https://registry.npmmirror.com/string-width/-/string-width-4.2.3.tgz",
"integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
"peer": true,
"dependencies": {
"emoji-regex": "^8.0.0",
"is-fullwidth-code-point": "^3.0.0",
"strip-ansi": "^6.0.1"
},
"engines": {
"node": ">=8"
}
},
"node_modules/strip-ansi": { "node_modules/strip-ansi": {
"version": "6.0.1", "version": "6.0.1",
"resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz", "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz",
"integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
"dev": true,
"dependencies": { "dependencies": {
"ansi-regex": "^5.0.1" "ansi-regex": "^5.0.1"
}, },
...@@ -4142,9 +4279,9 @@ ...@@ -4142,9 +4279,9 @@
} }
}, },
"node_modules/vite": { "node_modules/vite": {
"version": "4.0.1", "version": "4.0.2",
"resolved": "https://registry.npmmirror.com/vite/-/vite-4.0.1.tgz", "resolved": "https://registry.npmmirror.com/vite/-/vite-4.0.2.tgz",
"integrity": "sha512-kZQPzbDau35iWOhy3CpkrRC7It+HIHtulAzBhMqzGHKRf/4+vmh8rPDDdv98SWQrFWo6//3ozwsRmwQIPZsK9g==", "integrity": "sha512-QJaY3R+tFlTagH0exVqbgkkw45B+/bXVBzF2ZD1KB5Z8RiAoiKo60vSUf6/r4c2Vh9jfGBKM4oBI9b4/1ZJYng==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"esbuild": "^0.16.3", "esbuild": "^0.16.3",
...@@ -4261,6 +4398,23 @@ ...@@ -4261,6 +4398,23 @@
"node": ">=4.0" "node": ">=4.0"
} }
}, },
"node_modules/vue-qrcode": {
"version": "2.2.0",
"resolved": "https://registry.npmmirror.com/vue-qrcode/-/vue-qrcode-2.2.0.tgz",
"integrity": "sha512-pEwy/IznxEY5MXptFLaxbGdeDWIJRgU5VhBcFmg1avDjD2z2jjWAGE5dlDwqagXtUjcgkvFSSQ40boog1maLuw==",
"dependencies": {
"tslib": "^2.4.0"
},
"peerDependencies": {
"qrcode": "^1.5.0",
"vue": "^2.7.0 || ^3.0.0"
}
},
"node_modules/vue-qrcode/node_modules/tslib": {
"version": "2.4.1",
"resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.4.1.tgz",
"integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA=="
},
"node_modules/vue-router": { "node_modules/vue-router": {
"version": "4.1.6", "version": "4.1.6",
"resolved": "https://registry.npmmirror.com/vue-router/-/vue-router-4.1.6.tgz", "resolved": "https://registry.npmmirror.com/vue-router/-/vue-router-4.1.6.tgz",
...@@ -4283,13 +4437,13 @@ ...@@ -4283,13 +4437,13 @@
} }
}, },
"node_modules/vue-tsc": { "node_modules/vue-tsc": {
"version": "1.0.13", "version": "1.0.14",
"resolved": "https://registry.npmmirror.com/vue-tsc/-/vue-tsc-1.0.13.tgz", "resolved": "https://registry.npmmirror.com/vue-tsc/-/vue-tsc-1.0.14.tgz",
"integrity": "sha512-DORISA3Fu9595xbg5HQqUj4XZVvkyRkcZFJCkCt1CeN7tIMgVRQ8ow07AKcbuHoEkqg7OI4qLu1wyC/VH3o5Ug==", "integrity": "sha512-HeqtyxMrSRUCnU5nxB0lQc3o7zirMppZ/V6HLL3l4FsObGepH3A3beNmNehpLQs0Gt7DkSWVi3CpVCFgrf+/sQ==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"@volar/vue-language-core": "1.0.13", "@volar/vue-language-core": "1.0.14",
"@volar/vue-typescript": "1.0.13" "@volar/vue-typescript": "1.0.14"
}, },
"bin": { "bin": {
"vue-tsc": "bin/vue-tsc.js" "vue-tsc": "bin/vue-tsc.js"
...@@ -4328,6 +4482,12 @@ ...@@ -4328,6 +4482,12 @@
"node": ">= 8" "node": ">= 8"
} }
}, },
"node_modules/which-module": {
"version": "2.0.0",
"resolved": "https://registry.npmmirror.com/which-module/-/which-module-2.0.0.tgz",
"integrity": "sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q==",
"peer": true
},
"node_modules/win-release": { "node_modules/win-release": {
"version": "1.1.1", "version": "1.1.1",
"resolved": "https://registry.npmmirror.com/win-release/-/win-release-1.1.1.tgz", "resolved": "https://registry.npmmirror.com/win-release/-/win-release-1.1.1.tgz",
...@@ -4358,6 +4518,20 @@ ...@@ -4358,6 +4518,20 @@
"node": ">=0.10.0" "node": ">=0.10.0"
} }
}, },
"node_modules/wrap-ansi": {
"version": "6.2.0",
"resolved": "https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz",
"integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==",
"peer": true,
"dependencies": {
"ansi-styles": "^4.0.0",
"string-width": "^4.1.0",
"strip-ansi": "^6.0.0"
},
"engines": {
"node": ">=8"
}
},
"node_modules/wrappy": { "node_modules/wrappy": {
"version": "1.0.2", "version": "1.0.2",
"resolved": "https://registry.npmmirror.com/wrappy/-/wrappy-1.0.2.tgz", "resolved": "https://registry.npmmirror.com/wrappy/-/wrappy-1.0.2.tgz",
...@@ -4413,12 +4587,102 @@ ...@@ -4413,12 +4587,102 @@
"node": ">=0.4" "node": ">=0.4"
} }
}, },
"node_modules/y18n": {
"version": "4.0.3",
"resolved": "https://registry.npmmirror.com/y18n/-/y18n-4.0.3.tgz",
"integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==",
"peer": true
},
"node_modules/yallist": { "node_modules/yallist": {
"version": "4.0.0", "version": "4.0.0",
"resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz", "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz",
"integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
"dev": true "dev": true
}, },
"node_modules/yargs": {
"version": "15.4.1",
"resolved": "https://registry.npmmirror.com/yargs/-/yargs-15.4.1.tgz",
"integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==",
"peer": true,
"dependencies": {
"cliui": "^6.0.0",
"decamelize": "^1.2.0",
"find-up": "^4.1.0",
"get-caller-file": "^2.0.1",
"require-directory": "^2.1.1",
"require-main-filename": "^2.0.0",
"set-blocking": "^2.0.0",
"string-width": "^4.2.0",
"which-module": "^2.0.0",
"y18n": "^4.0.0",
"yargs-parser": "^18.1.2"
},
"engines": {
"node": ">=8"
}
},
"node_modules/yargs-parser": {
"version": "18.1.3",
"resolved": "https://registry.npmmirror.com/yargs-parser/-/yargs-parser-18.1.3.tgz",
"integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==",
"peer": true,
"dependencies": {
"camelcase": "^5.0.0",
"decamelize": "^1.2.0"
},
"engines": {
"node": ">=6"
}
},
"node_modules/yargs/node_modules/find-up": {
"version": "4.1.0",
"resolved": "https://registry.npmmirror.com/find-up/-/find-up-4.1.0.tgz",
"integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
"peer": true,
"dependencies": {
"locate-path": "^5.0.0",
"path-exists": "^4.0.0"
},
"engines": {
"node": ">=8"
}
},
"node_modules/yargs/node_modules/locate-path": {
"version": "5.0.0",
"resolved": "https://registry.npmmirror.com/locate-path/-/locate-path-5.0.0.tgz",
"integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
"peer": true,
"dependencies": {
"p-locate": "^4.1.0"
},
"engines": {
"node": ">=8"
}
},
"node_modules/yargs/node_modules/p-limit": {
"version": "2.3.0",
"resolved": "https://registry.npmmirror.com/p-limit/-/p-limit-2.3.0.tgz",
"integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
"peer": true,
"dependencies": {
"p-try": "^2.0.0"
},
"engines": {
"node": ">=6"
}
},
"node_modules/yargs/node_modules/p-locate": {
"version": "4.1.0",
"resolved": "https://registry.npmmirror.com/p-locate/-/p-locate-4.1.0.tgz",
"integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
"peer": true,
"dependencies": {
"p-limit": "^2.2.0"
},
"engines": {
"node": ">=8"
}
},
"node_modules/yocto-queue": { "node_modules/yocto-queue": {
"version": "0.1.0", "version": "0.1.0",
"resolved": "https://registry.npmmirror.com/yocto-queue/-/yocto-queue-0.1.0.tgz", "resolved": "https://registry.npmmirror.com/yocto-queue/-/yocto-queue-0.1.0.tgz",
...@@ -4607,15 +4871,15 @@ ...@@ -4607,15 +4871,15 @@
"optional": true "optional": true
}, },
"@eslint/eslintrc": { "@eslint/eslintrc": {
"version": "1.3.3", "version": "1.4.0",
"resolved": "https://registry.npmmirror.com/@eslint/eslintrc/-/eslintrc-1.3.3.tgz", "resolved": "https://registry.npmmirror.com/@eslint/eslintrc/-/eslintrc-1.4.0.tgz",
"integrity": "sha512-uj3pT6Mg+3t39fvLrj8iuCIJ38zKO9FpGtJ4BBJebJhEwjoT+KLVNCcHT5QC9NGRIEi7fZ0ZR8YRb884auB4Lg==", "integrity": "sha512-7yfvXy6MWLgWSFsLhz5yH3iQ52St8cdUY6FoGieKkRDVxuxmrNuUetIuu6cmjNWwniUHiWXjxCr5tTXDrbYS5A==",
"dev": true, "dev": true,
"requires": { "requires": {
"ajv": "^6.12.4", "ajv": "^6.12.4",
"debug": "^4.3.2", "debug": "^4.3.2",
"espree": "^9.4.0", "espree": "^9.4.0",
"globals": "^13.15.0", "globals": "^13.19.0",
"ignore": "^5.2.0", "ignore": "^5.2.0",
"import-fresh": "^3.2.1", "import-fresh": "^3.2.1",
"js-yaml": "^4.1.0", "js-yaml": "^4.1.0",
...@@ -4637,9 +4901,9 @@ ...@@ -4637,9 +4901,9 @@
} }
}, },
"@humanwhocodes/config-array": { "@humanwhocodes/config-array": {
"version": "0.11.7", "version": "0.11.8",
"resolved": "https://registry.npmmirror.com/@humanwhocodes/config-array/-/config-array-0.11.7.tgz", "resolved": "https://registry.npmmirror.com/@humanwhocodes/config-array/-/config-array-0.11.8.tgz",
"integrity": "sha512-kBbPWzN8oVMLb0hOUYXhmxggL/1cJE6ydvjDIGi9EnAGUyA7cLVKQg+d/Dsm+KZwx2czGHrCmMVLiyg8s5JPKw==", "integrity": "sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==",
"dev": true, "dev": true,
"requires": { "requires": {
"@humanwhocodes/object-schema": "^1.2.1", "@humanwhocodes/object-schema": "^1.2.1",
...@@ -4878,42 +5142,42 @@ ...@@ -4878,42 +5142,42 @@
"requires": {} "requires": {}
}, },
"@volar/language-core": { "@volar/language-core": {
"version": "1.0.13", "version": "1.0.14",
"resolved": "https://registry.npmmirror.com/@volar/language-core/-/language-core-1.0.13.tgz", "resolved": "https://registry.npmmirror.com/@volar/language-core/-/language-core-1.0.14.tgz",
"integrity": "sha512-aJhRiNjKFgLLB3nRJOfAeyle4StnEQgOKa0UpJU+k5EZd3QdiMfQmekXjxYeQj7NOZNQU7zCBEIvQ3gy15I7tA==", "integrity": "sha512-j1tMQgw0qCV2amM4qDJNG/zc0yj3ay8HoWNt05IaiCPsULtSSpF/9+F6Izvn0DF7nWOd6MUHTxaQAeZwLfr56Q==",
"dev": true, "dev": true,
"requires": { "requires": {
"@volar/source-map": "1.0.13", "@volar/source-map": "1.0.14",
"@vue/reactivity": "^3.2.45", "@vue/reactivity": "^3.2.45",
"muggle-string": "^0.1.0" "muggle-string": "^0.1.0"
} }
}, },
"@volar/source-map": { "@volar/source-map": {
"version": "1.0.13", "version": "1.0.14",
"resolved": "https://registry.npmmirror.com/@volar/source-map/-/source-map-1.0.13.tgz", "resolved": "https://registry.npmmirror.com/@volar/source-map/-/source-map-1.0.14.tgz",
"integrity": "sha512-dU0plR9BS+bLs7u4chWay+VEIFTrLF15rG2634lGcu7o+z01bRO1U2cegZuIPy46SNkN3ONErLHwS09NBM+Ucg==", "integrity": "sha512-8pHCbEWHWaSDGb/FM9zRIW1lY1OAo16MENVSQGCgTwz7PWf3Gw6WW3TFVKCtzaFhLjPH0i5e9hALy7vBPbSHoA==",
"dev": true, "dev": true,
"requires": { "requires": {
"muggle-string": "^0.1.0" "muggle-string": "^0.1.0"
} }
}, },
"@volar/typescript": { "@volar/typescript": {
"version": "1.0.13", "version": "1.0.14",
"resolved": "https://registry.npmmirror.com/@volar/typescript/-/typescript-1.0.13.tgz", "resolved": "https://registry.npmmirror.com/@volar/typescript/-/typescript-1.0.14.tgz",
"integrity": "sha512-CfJ4higRZrLDAHVGY84gZ444ZUcA3ktPqVMW0fM3mgHDbzYViB3/tsvXOtZk76D3HK2ap6n4cDwBSv3cY4xqlg==", "integrity": "sha512-67qcjjz7KGFhMCG9EKMA9qJK3BRGQecO4dGyAKfMfClZ/PaVoKfDvJvYo89McGTQ8SeczD48I9TPnaJM0zK8JQ==",
"dev": true, "dev": true,
"requires": { "requires": {
"@volar/language-core": "1.0.13" "@volar/language-core": "1.0.14"
} }
}, },
"@volar/vue-language-core": { "@volar/vue-language-core": {
"version": "1.0.13", "version": "1.0.14",
"resolved": "https://registry.npmmirror.com/@volar/vue-language-core/-/vue-language-core-1.0.13.tgz", "resolved": "https://registry.npmmirror.com/@volar/vue-language-core/-/vue-language-core-1.0.14.tgz",
"integrity": "sha512-DRUg7yk4w2+5XFk8LS1dbXEM0na2uAddOj3KWHROPQmn78pfgXEH3r0NGDCnxElWJX5Y16iameisOjtOhevxog==", "integrity": "sha512-grJ4dQ7c/suZmBBmZtw2O2XeDX+rtgpdBtHxMug1NMPRDxj5EZ9WGphWtGnMQj8RyVgpz9ByvV5GbQjk4/wfBw==",
"dev": true, "dev": true,
"requires": { "requires": {
"@volar/language-core": "1.0.13", "@volar/language-core": "1.0.14",
"@volar/source-map": "1.0.13", "@volar/source-map": "1.0.14",
"@vue/compiler-dom": "^3.2.45", "@vue/compiler-dom": "^3.2.45",
"@vue/compiler-sfc": "^3.2.45", "@vue/compiler-sfc": "^3.2.45",
"@vue/reactivity": "^3.2.45", "@vue/reactivity": "^3.2.45",
...@@ -4943,13 +5207,13 @@ ...@@ -4943,13 +5207,13 @@
} }
}, },
"@volar/vue-typescript": { "@volar/vue-typescript": {
"version": "1.0.13", "version": "1.0.14",
"resolved": "https://registry.npmmirror.com/@volar/vue-typescript/-/vue-typescript-1.0.13.tgz", "resolved": "https://registry.npmmirror.com/@volar/vue-typescript/-/vue-typescript-1.0.14.tgz",
"integrity": "sha512-iEdkF5l6G10fv/G5hs7WcvtT48AT6y/Pm7pvafnB6SxPhm2uHQ+130x3zeWLMaUel5t6h5LBw2pFsF5Bh85QAQ==", "integrity": "sha512-2P0QeGLLY05fDTu8GqY8SR2+jldXRTrkQdD2Nc0sVOjMJ7j3RYYY0wJyZ9hCBDuxV4Micc6jdB8nKS0yxQgNvA==",
"dev": true, "dev": true,
"requires": { "requires": {
"@volar/typescript": "1.0.13", "@volar/typescript": "1.0.14",
"@volar/vue-language-core": "1.0.13" "@volar/vue-language-core": "1.0.14"
} }
}, },
"@vue/compiler-core": { "@vue/compiler-core": {
...@@ -5095,13 +5359,13 @@ ...@@ -5095,13 +5359,13 @@
"requires": {} "requires": {}
}, },
"@vueuse/core": { "@vueuse/core": {
"version": "9.6.0", "version": "9.7.0",
"resolved": "https://registry.npmmirror.com/@vueuse/core/-/core-9.6.0.tgz", "resolved": "https://registry.npmmirror.com/@vueuse/core/-/core-9.7.0.tgz",
"integrity": "sha512-qGUcjKQXHgN+jqXEgpeZGoxdCbIDCdVPz3QiF1uyecVGbMuM63o96I1GjYx5zskKgRI0FKSNsVWM7rwrRMTf6A==", "integrity": "sha512-/AGY/t7jJPxCyRoVTygNKoroTiCvRaaZIW+yeSlBCnI7QRpQ9cvXNTdNaSl3GvSyFbn83+XwZwEZvI1OpQfeGw==",
"requires": { "requires": {
"@types/web-bluetooth": "^0.0.16", "@types/web-bluetooth": "^0.0.16",
"@vueuse/metadata": "9.6.0", "@vueuse/metadata": "9.7.0",
"@vueuse/shared": "9.6.0", "@vueuse/shared": "9.7.0",
"vue-demi": "*" "vue-demi": "*"
}, },
"dependencies": { "dependencies": {
...@@ -5114,14 +5378,14 @@ ...@@ -5114,14 +5378,14 @@
} }
}, },
"@vueuse/metadata": { "@vueuse/metadata": {
"version": "9.6.0", "version": "9.7.0",
"resolved": "https://registry.npmmirror.com/@vueuse/metadata/-/metadata-9.6.0.tgz", "resolved": "https://registry.npmmirror.com/@vueuse/metadata/-/metadata-9.7.0.tgz",
"integrity": "sha512-sIC8R+kWkIdpi5X2z2Gk8TRYzmczDwHRhEFfCu2P+XW2JdPoXrziqsGpDDsN7ykBx4ilwieS7JUIweVGhvZ93w==" "integrity": "sha512-M7WsAgw28FNtTH0bzsGuHEtJOPJqPpyeHS6PHq+8UesLgNjZ9waMAntiUrgUQlxt09M4i2lH7y9sRi0jkfeXGA=="
}, },
"@vueuse/shared": { "@vueuse/shared": {
"version": "9.6.0", "version": "9.7.0",
"resolved": "https://registry.npmmirror.com/@vueuse/shared/-/shared-9.6.0.tgz", "resolved": "https://registry.npmmirror.com/@vueuse/shared/-/shared-9.7.0.tgz",
"integrity": "sha512-/eDchxYYhkHnFyrb00t90UfjCx94kRHxc7J1GtBCqCG4HyPMX+krV9XJgVtWIsAMaxKVU4fC8NSUviG1JkwhUQ==", "integrity": "sha512-pwmt1y3TJ2s5KqWmkv9ZKEV59GwuZQZk8XLiU+hGswz0jej318ozbea9E4A/A50ksyM26swSFr7sZ9llNPsZHg==",
"requires": { "requires": {
"vue-demi": "*" "vue-demi": "*"
}, },
...@@ -5241,14 +5505,12 @@ ...@@ -5241,14 +5505,12 @@
"ansi-regex": { "ansi-regex": {
"version": "5.0.1", "version": "5.0.1",
"resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-5.0.1.tgz", "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-5.0.1.tgz",
"integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="
"dev": true
}, },
"ansi-styles": { "ansi-styles": {
"version": "4.3.0", "version": "4.3.0",
"resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz", "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz",
"integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
"dev": true,
"requires": { "requires": {
"color-convert": "^2.0.1" "color-convert": "^2.0.1"
} }
...@@ -5393,6 +5655,12 @@ ...@@ -5393,6 +5655,12 @@
"integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
"dev": true "dev": true
}, },
"camelcase": {
"version": "5.3.1",
"resolved": "https://registry.npmmirror.com/camelcase/-/camelcase-5.3.1.tgz",
"integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
"peer": true
},
"chalk": { "chalk": {
"version": "5.2.0", "version": "5.2.0",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-5.2.0.tgz", "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.2.0.tgz",
...@@ -5426,11 +5694,21 @@ ...@@ -5426,11 +5694,21 @@
} }
} }
}, },
"cliui": {
"version": "6.0.0",
"resolved": "https://registry.npmmirror.com/cliui/-/cliui-6.0.0.tgz",
"integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==",
"peer": true,
"requires": {
"string-width": "^4.2.0",
"strip-ansi": "^6.0.0",
"wrap-ansi": "^6.2.0"
}
},
"color-convert": { "color-convert": {
"version": "2.0.1", "version": "2.0.1",
"resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz", "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz",
"integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
"dev": true,
"requires": { "requires": {
"color-name": "~1.1.4" "color-name": "~1.1.4"
} }
...@@ -5438,8 +5716,7 @@ ...@@ -5438,8 +5716,7 @@
"color-name": { "color-name": {
"version": "1.1.4", "version": "1.1.4",
"resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz", "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz",
"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
"dev": true
}, },
"combined-stream": { "combined-stream": {
"version": "1.0.8", "version": "1.0.8",
...@@ -5527,6 +5804,12 @@ ...@@ -5527,6 +5804,12 @@
"ms": "2.1.2" "ms": "2.1.2"
} }
}, },
"decamelize": {
"version": "1.2.0",
"resolved": "https://registry.npmmirror.com/decamelize/-/decamelize-1.2.0.tgz",
"integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==",
"peer": true
},
"deep-is": { "deep-is": {
"version": "0.1.4", "version": "0.1.4",
"resolved": "https://registry.npmmirror.com/deep-is/-/deep-is-0.1.4.tgz", "resolved": "https://registry.npmmirror.com/deep-is/-/deep-is-0.1.4.tgz",
...@@ -5580,6 +5863,12 @@ ...@@ -5580,6 +5863,12 @@
"utility": "^1.17.0" "utility": "^1.17.0"
} }
}, },
"dijkstrajs": {
"version": "1.0.2",
"resolved": "https://registry.npmmirror.com/dijkstrajs/-/dijkstrajs-1.0.2.tgz",
"integrity": "sha512-QV6PMaHTCNmKSeP6QoXhVTw9snc9VD8MulTT0Bd99Pacp4SS1cjcrYPgBPmibqKVtMJJfqC6XvOXgPMEEPH/fg==",
"peer": true
},
"dir-glob": { "dir-glob": {
"version": "3.0.1", "version": "3.0.1",
"resolved": "https://registry.npmmirror.com/dir-glob/-/dir-glob-3.0.1.tgz", "resolved": "https://registry.npmmirror.com/dir-glob/-/dir-glob-3.0.1.tgz",
...@@ -5605,9 +5894,9 @@ ...@@ -5605,9 +5894,9 @@
"dev": true "dev": true
}, },
"element-plus": { "element-plus": {
"version": "2.2.26", "version": "2.2.27",
"resolved": "https://registry.npmjs.org/element-plus/-/element-plus-2.2.26.tgz", "resolved": "https://registry.npmmirror.com/element-plus/-/element-plus-2.2.27.tgz",
"integrity": "sha512-O/rdY5m9DkclpVg8r3GynyqCunm7MxSR142xSsjrZA77bi7bcwA3SIy6SPEDqHi5R4KqgkGYgKSp4Q4e3irbYg==", "integrity": "sha512-P04HDOZBYDdvlYuleuCZRULzAc5xJVOBfLDK9xWxVo0vyo8ntdaXS5sTU+/76vrNzuO3FhLn9kvrsbiJEVa1jg==",
"requires": { "requires": {
"@ctrl/tinycolor": "^3.4.1", "@ctrl/tinycolor": "^3.4.1",
"@element-plus/icons-vue": "^2.0.6", "@element-plus/icons-vue": "^2.0.6",
...@@ -5626,6 +5915,18 @@ ...@@ -5626,6 +5915,18 @@
"normalize-wheel-es": "^1.2.0" "normalize-wheel-es": "^1.2.0"
} }
}, },
"emoji-regex": {
"version": "8.0.0",
"resolved": "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-8.0.0.tgz",
"integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
"peer": true
},
"encode-utf8": {
"version": "1.0.3",
"resolved": "https://registry.npmmirror.com/encode-utf8/-/encode-utf8-1.0.3.tgz",
"integrity": "sha512-ucAnuBEhUK4boH2HjVYG5Q2mQyPorvv0u/ocS+zhdw0S8AlHYY+GOFhP1Gio5z4icpP2ivFSvhtFjQi8+T9ppw==",
"peer": true
},
"end-of-stream": { "end-of-stream": {
"version": "1.4.4", "version": "1.4.4",
"resolved": "https://registry.npmmirror.com/end-of-stream/-/end-of-stream-1.4.4.tgz", "resolved": "https://registry.npmmirror.com/end-of-stream/-/end-of-stream-1.4.4.tgz",
...@@ -5737,13 +6038,13 @@ ...@@ -5737,13 +6038,13 @@
} }
}, },
"eslint": { "eslint": {
"version": "8.29.0", "version": "8.30.0",
"resolved": "https://registry.npmjs.org/eslint/-/eslint-8.29.0.tgz", "resolved": "https://registry.npmmirror.com/eslint/-/eslint-8.30.0.tgz",
"integrity": "sha512-isQ4EEiyUjZFbEKvEGJKKGBwXtvXX+zJbkVKCgTuB9t/+jUBcy8avhkEwWJecI15BkRkOYmvIM5ynbhRjEkoeg==", "integrity": "sha512-MGADB39QqYuzEGov+F/qb18r4i7DohCDOfatHaxI2iGlPuC65bwG2gxgO+7DkyL38dRFaRH7RaRAgU6JKL9rMQ==",
"dev": true, "dev": true,
"requires": { "requires": {
"@eslint/eslintrc": "^1.3.3", "@eslint/eslintrc": "^1.4.0",
"@humanwhocodes/config-array": "^0.11.6", "@humanwhocodes/config-array": "^0.11.8",
"@humanwhocodes/module-importer": "^1.0.1", "@humanwhocodes/module-importer": "^1.0.1",
"@nodelib/fs.walk": "^1.2.8", "@nodelib/fs.walk": "^1.2.8",
"ajv": "^6.10.0", "ajv": "^6.10.0",
...@@ -5762,7 +6063,7 @@ ...@@ -5762,7 +6063,7 @@
"file-entry-cache": "^6.0.1", "file-entry-cache": "^6.0.1",
"find-up": "^5.0.0", "find-up": "^5.0.0",
"glob-parent": "^6.0.2", "glob-parent": "^6.0.2",
"globals": "^13.15.0", "globals": "^13.19.0",
"grapheme-splitter": "^1.0.4", "grapheme-splitter": "^1.0.4",
"ignore": "^5.2.0", "ignore": "^5.2.0",
"import-fresh": "^3.0.0", "import-fresh": "^3.0.0",
...@@ -6128,6 +6429,12 @@ ...@@ -6128,6 +6429,12 @@
"resolved": "https://registry.npmmirror.com/function-bind/-/function-bind-1.1.1.tgz", "resolved": "https://registry.npmmirror.com/function-bind/-/function-bind-1.1.1.tgz",
"integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="
}, },
"get-caller-file": {
"version": "2.0.5",
"resolved": "https://registry.npmmirror.com/get-caller-file/-/get-caller-file-2.0.5.tgz",
"integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
"peer": true
},
"get-intrinsic": { "get-intrinsic": {
"version": "1.1.3", "version": "1.1.3",
"resolved": "https://registry.npmmirror.com/get-intrinsic/-/get-intrinsic-1.1.3.tgz", "resolved": "https://registry.npmmirror.com/get-intrinsic/-/get-intrinsic-1.1.3.tgz",
...@@ -6182,9 +6489,9 @@ ...@@ -6182,9 +6489,9 @@
} }
}, },
"globals": { "globals": {
"version": "13.17.0", "version": "13.19.0",
"resolved": "https://registry.npmmirror.com/globals/-/globals-13.17.0.tgz", "resolved": "https://registry.npmmirror.com/globals/-/globals-13.19.0.tgz",
"integrity": "sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==", "integrity": "sha512-dkQ957uSRWHw7CFXLUtUHQI3g3aWApYhfNR2O6jn/907riyTYKVBmxYVROkBcY614FSSeSJh7Xm7SrUWCxvJMQ==",
"dev": true, "dev": true,
"requires": { "requires": {
"type-fest": "^0.20.2" "type-fest": "^0.20.2"
...@@ -6387,6 +6694,12 @@ ...@@ -6387,6 +6694,12 @@
"integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
"dev": true "dev": true
}, },
"is-fullwidth-code-point": {
"version": "3.0.0",
"resolved": "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
"integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
"peer": true
},
"is-glob": { "is-glob": {
"version": "4.0.3", "version": "4.0.3",
"resolved": "https://registry.npmmirror.com/is-glob/-/is-glob-4.0.3.tgz", "resolved": "https://registry.npmmirror.com/is-glob/-/is-glob-4.0.3.tgz",
...@@ -6802,6 +7115,12 @@ ...@@ -6802,6 +7115,12 @@
"p-limit": "^3.0.2" "p-limit": "^3.0.2"
} }
}, },
"p-try": {
"version": "2.2.0",
"resolved": "https://registry.npmmirror.com/p-try/-/p-try-2.2.0.tgz",
"integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
"peer": true
},
"pac-proxy-agent": { "pac-proxy-agent": {
"version": "5.0.0", "version": "5.0.0",
"resolved": "https://registry.npmmirror.com/pac-proxy-agent/-/pac-proxy-agent-5.0.0.tgz", "resolved": "https://registry.npmmirror.com/pac-proxy-agent/-/pac-proxy-agent-5.0.0.tgz",
...@@ -6842,8 +7161,7 @@ ...@@ -6842,8 +7161,7 @@
"path-exists": { "path-exists": {
"version": "4.0.0", "version": "4.0.0",
"resolved": "https://registry.npmmirror.com/path-exists/-/path-exists-4.0.0.tgz", "resolved": "https://registry.npmmirror.com/path-exists/-/path-exists-4.0.0.tgz",
"integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w=="
"dev": true
}, },
"path-is-absolute": { "path-is-absolute": {
"version": "1.0.1", "version": "1.0.1",
...@@ -6929,6 +7247,12 @@ ...@@ -6929,6 +7247,12 @@
"integrity": "sha512-fnWVljUchTro6RiCFvCXBbNhJc2NijN7oIQxbwsyL0buWJPG85v81ehlHI9fXrJsMNgTofEoWIQeClKpgxFLrg==", "integrity": "sha512-fnWVljUchTro6RiCFvCXBbNhJc2NijN7oIQxbwsyL0buWJPG85v81ehlHI9fXrJsMNgTofEoWIQeClKpgxFLrg==",
"dev": true "dev": true
}, },
"pngjs": {
"version": "5.0.0",
"resolved": "https://registry.npmmirror.com/pngjs/-/pngjs-5.0.0.tgz",
"integrity": "sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw==",
"peer": true
},
"postcss": { "postcss": {
"version": "8.4.20", "version": "8.4.20",
"resolved": "https://registry.npmmirror.com/postcss/-/postcss-8.4.20.tgz", "resolved": "https://registry.npmmirror.com/postcss/-/postcss-8.4.20.tgz",
...@@ -7015,6 +7339,24 @@ ...@@ -7015,6 +7339,24 @@
"integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
"dev": true "dev": true
}, },
"qrcode": {
"version": "1.5.1",
"resolved": "https://registry.npmmirror.com/qrcode/-/qrcode-1.5.1.tgz",
"integrity": "sha512-nS8NJ1Z3md8uTjKtP+SGGhfqmTCs5flU/xR623oI0JX+Wepz9R8UrRVCTBTJm3qGw3rH6jJ6MUHjkDx15cxSSg==",
"peer": true,
"requires": {
"dijkstrajs": "^1.0.1",
"encode-utf8": "^1.0.3",
"pngjs": "^5.0.0",
"yargs": "^15.3.1"
}
},
"qrcode.vue": {
"version": "3.3.3",
"resolved": "https://registry.npmmirror.com/qrcode.vue/-/qrcode.vue-3.3.3.tgz",
"integrity": "sha512-OsD4tQjIbxg/K6D5ZkWjBdYI9eg9K2i8qeYILdEAX5mdAydSAxV7xKmmZSP/hA12olLqEMZ9ryqDQrwa9jEMgw==",
"requires": {}
},
"qs": { "qs": {
"version": "6.11.0", "version": "6.11.0",
"resolved": "https://registry.npmmirror.com/qs/-/qs-6.11.0.tgz", "resolved": "https://registry.npmmirror.com/qs/-/qs-6.11.0.tgz",
...@@ -7071,6 +7413,18 @@ ...@@ -7071,6 +7413,18 @@
"integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==",
"dev": true "dev": true
}, },
"require-directory": {
"version": "2.1.1",
"resolved": "https://registry.npmmirror.com/require-directory/-/require-directory-2.1.1.tgz",
"integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==",
"peer": true
},
"require-main-filename": {
"version": "2.0.0",
"resolved": "https://registry.npmmirror.com/require-main-filename/-/require-main-filename-2.0.0.tgz",
"integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==",
"peer": true
},
"resolve": { "resolve": {
"version": "1.22.1", "version": "1.22.1",
"resolved": "https://registry.npmmirror.com/resolve/-/resolve-1.22.1.tgz", "resolved": "https://registry.npmmirror.com/resolve/-/resolve-1.22.1.tgz",
...@@ -7134,9 +7488,9 @@ ...@@ -7134,9 +7488,9 @@
"dev": true "dev": true
}, },
"sass": { "sass": {
"version": "1.56.2", "version": "1.57.0",
"resolved": "https://registry.npmjs.org/sass/-/sass-1.56.2.tgz", "resolved": "https://registry.npmmirror.com/sass/-/sass-1.57.0.tgz",
"integrity": "sha512-ciEJhnyCRwzlBCB+h5cCPM6ie/6f8HrhZMQOf5vlU60Y1bI1rx5Zb0vlDZvaycHsg/MqFfF1Eq2eokAa32iw8w==", "integrity": "sha512-IZNEJDTK1cF5B1cGA593TPAV/1S0ysUDxq9XHjX/+SMy0QfUny+nfUsq5ZP7wWSl4eEf7wDJcEZ8ABYFmh3m/w==",
"dev": true, "dev": true,
"requires": { "requires": {
"chokidar": ">=3.0.0 <4.0.0", "chokidar": ">=3.0.0 <4.0.0",
...@@ -7174,6 +7528,12 @@ ...@@ -7174,6 +7528,12 @@
"lru-cache": "^6.0.0" "lru-cache": "^6.0.0"
} }
}, },
"set-blocking": {
"version": "2.0.0",
"resolved": "https://registry.npmmirror.com/set-blocking/-/set-blocking-2.0.0.tgz",
"integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==",
"peer": true
},
"setprototypeof": { "setprototypeof": {
"version": "1.2.0", "version": "1.2.0",
"resolved": "https://registry.npmmirror.com/setprototypeof/-/setprototypeof-1.2.0.tgz", "resolved": "https://registry.npmmirror.com/setprototypeof/-/setprototypeof-1.2.0.tgz",
...@@ -7295,11 +7655,21 @@ ...@@ -7295,11 +7655,21 @@
"safe-buffer": "~5.1.0" "safe-buffer": "~5.1.0"
} }
}, },
"string-width": {
"version": "4.2.3",
"resolved": "https://registry.npmmirror.com/string-width/-/string-width-4.2.3.tgz",
"integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
"peer": true,
"requires": {
"emoji-regex": "^8.0.0",
"is-fullwidth-code-point": "^3.0.0",
"strip-ansi": "^6.0.1"
}
},
"strip-ansi": { "strip-ansi": {
"version": "6.0.1", "version": "6.0.1",
"resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz", "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz",
"integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
"dev": true,
"requires": { "requires": {
"ansi-regex": "^5.0.1" "ansi-regex": "^5.0.1"
} }
...@@ -7570,9 +7940,9 @@ ...@@ -7570,9 +7940,9 @@
} }
}, },
"vite": { "vite": {
"version": "4.0.1", "version": "4.0.2",
"resolved": "https://registry.npmmirror.com/vite/-/vite-4.0.1.tgz", "resolved": "https://registry.npmmirror.com/vite/-/vite-4.0.2.tgz",
"integrity": "sha512-kZQPzbDau35iWOhy3CpkrRC7It+HIHtulAzBhMqzGHKRf/4+vmh8rPDDdv98SWQrFWo6//3ozwsRmwQIPZsK9g==", "integrity": "sha512-QJaY3R+tFlTagH0exVqbgkkw45B+/bXVBzF2ZD1KB5Z8RiAoiKo60vSUf6/r4c2Vh9jfGBKM4oBI9b4/1ZJYng==",
"dev": true, "dev": true,
"requires": { "requires": {
"esbuild": "^0.16.3", "esbuild": "^0.16.3",
...@@ -7637,6 +8007,21 @@ ...@@ -7637,6 +8007,21 @@
} }
} }
}, },
"vue-qrcode": {
"version": "2.2.0",
"resolved": "https://registry.npmmirror.com/vue-qrcode/-/vue-qrcode-2.2.0.tgz",
"integrity": "sha512-pEwy/IznxEY5MXptFLaxbGdeDWIJRgU5VhBcFmg1avDjD2z2jjWAGE5dlDwqagXtUjcgkvFSSQ40boog1maLuw==",
"requires": {
"tslib": "^2.4.0"
},
"dependencies": {
"tslib": {
"version": "2.4.1",
"resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.4.1.tgz",
"integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA=="
}
}
},
"vue-router": { "vue-router": {
"version": "4.1.6", "version": "4.1.6",
"resolved": "https://registry.npmmirror.com/vue-router/-/vue-router-4.1.6.tgz", "resolved": "https://registry.npmmirror.com/vue-router/-/vue-router-4.1.6.tgz",
...@@ -7656,13 +8041,13 @@ ...@@ -7656,13 +8041,13 @@
} }
}, },
"vue-tsc": { "vue-tsc": {
"version": "1.0.13", "version": "1.0.14",
"resolved": "https://registry.npmmirror.com/vue-tsc/-/vue-tsc-1.0.13.tgz", "resolved": "https://registry.npmmirror.com/vue-tsc/-/vue-tsc-1.0.14.tgz",
"integrity": "sha512-DORISA3Fu9595xbg5HQqUj4XZVvkyRkcZFJCkCt1CeN7tIMgVRQ8ow07AKcbuHoEkqg7OI4qLu1wyC/VH3o5Ug==", "integrity": "sha512-HeqtyxMrSRUCnU5nxB0lQc3o7zirMppZ/V6HLL3l4FsObGepH3A3beNmNehpLQs0Gt7DkSWVi3CpVCFgrf+/sQ==",
"dev": true, "dev": true,
"requires": { "requires": {
"@volar/vue-language-core": "1.0.13", "@volar/vue-language-core": "1.0.14",
"@volar/vue-typescript": "1.0.13" "@volar/vue-typescript": "1.0.14"
} }
}, },
"webpack-sources": { "webpack-sources": {
...@@ -7686,6 +8071,12 @@ ...@@ -7686,6 +8071,12 @@
"isexe": "^2.0.0" "isexe": "^2.0.0"
} }
}, },
"which-module": {
"version": "2.0.0",
"resolved": "https://registry.npmmirror.com/which-module/-/which-module-2.0.0.tgz",
"integrity": "sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q==",
"peer": true
},
"win-release": { "win-release": {
"version": "1.1.1", "version": "1.1.1",
"resolved": "https://registry.npmmirror.com/win-release/-/win-release-1.1.1.tgz", "resolved": "https://registry.npmmirror.com/win-release/-/win-release-1.1.1.tgz",
...@@ -7709,6 +8100,17 @@ ...@@ -7709,6 +8100,17 @@
"integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==",
"dev": true "dev": true
}, },
"wrap-ansi": {
"version": "6.2.0",
"resolved": "https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz",
"integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==",
"peer": true,
"requires": {
"ansi-styles": "^4.0.0",
"string-width": "^4.1.0",
"strip-ansi": "^6.0.0"
}
},
"wrappy": { "wrappy": {
"version": "1.0.2", "version": "1.0.2",
"resolved": "https://registry.npmmirror.com/wrappy/-/wrappy-1.0.2.tgz", "resolved": "https://registry.npmmirror.com/wrappy/-/wrappy-1.0.2.tgz",
...@@ -7749,12 +8151,86 @@ ...@@ -7749,12 +8151,86 @@
"integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==",
"dev": true "dev": true
}, },
"y18n": {
"version": "4.0.3",
"resolved": "https://registry.npmmirror.com/y18n/-/y18n-4.0.3.tgz",
"integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==",
"peer": true
},
"yallist": { "yallist": {
"version": "4.0.0", "version": "4.0.0",
"resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz", "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz",
"integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
"dev": true "dev": true
}, },
"yargs": {
"version": "15.4.1",
"resolved": "https://registry.npmmirror.com/yargs/-/yargs-15.4.1.tgz",
"integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==",
"peer": true,
"requires": {
"cliui": "^6.0.0",
"decamelize": "^1.2.0",
"find-up": "^4.1.0",
"get-caller-file": "^2.0.1",
"require-directory": "^2.1.1",
"require-main-filename": "^2.0.0",
"set-blocking": "^2.0.0",
"string-width": "^4.2.0",
"which-module": "^2.0.0",
"y18n": "^4.0.0",
"yargs-parser": "^18.1.2"
},
"dependencies": {
"find-up": {
"version": "4.1.0",
"resolved": "https://registry.npmmirror.com/find-up/-/find-up-4.1.0.tgz",
"integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
"peer": true,
"requires": {
"locate-path": "^5.0.0",
"path-exists": "^4.0.0"
}
},
"locate-path": {
"version": "5.0.0",
"resolved": "https://registry.npmmirror.com/locate-path/-/locate-path-5.0.0.tgz",
"integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
"peer": true,
"requires": {
"p-locate": "^4.1.0"
}
},
"p-limit": {
"version": "2.3.0",
"resolved": "https://registry.npmmirror.com/p-limit/-/p-limit-2.3.0.tgz",
"integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
"peer": true,
"requires": {
"p-try": "^2.0.0"
}
},
"p-locate": {
"version": "4.1.0",
"resolved": "https://registry.npmmirror.com/p-locate/-/p-locate-4.1.0.tgz",
"integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
"peer": true,
"requires": {
"p-limit": "^2.2.0"
}
}
}
},
"yargs-parser": {
"version": "18.1.3",
"resolved": "https://registry.npmmirror.com/yargs-parser/-/yargs-parser-18.1.3.tgz",
"integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==",
"peer": true,
"requires": {
"camelcase": "^5.0.0",
"decamelize": "^1.2.0"
}
},
"yocto-queue": { "yocto-queue": {
"version": "0.1.0", "version": "0.1.0",
"resolved": "https://registry.npmmirror.com/yocto-queue/-/yocto-queue-0.1.0.tgz", "resolved": "https://registry.npmmirror.com/yocto-queue/-/yocto-queue-0.1.0.tgz",
......
...@@ -14,14 +14,16 @@ ...@@ -14,14 +14,16 @@
"cert": "node ./cert.js" "cert": "node ./cert.js"
}, },
"dependencies": { "dependencies": {
"@vueuse/core": "^9.6.0", "@vueuse/core": "^9.7.0",
"axios": "^1.2.1", "axios": "^1.2.1",
"blueimp-md5": "^2.19.0", "blueimp-md5": "^2.19.0",
"element-plus": "^2.2.26", "element-plus": "^2.2.27",
"lodash-es": "^4.17.21", "lodash-es": "^4.17.21",
"pinia": "^2.0.28", "pinia": "^2.0.28",
"qrcode.vue": "^3.3.3",
"qs": "^6.11.0", "qs": "^6.11.0",
"vue": "^3.2.45", "vue": "^3.2.45",
"vue-qrcode": "^2.2.0",
"vue-router": "^4.1.6" "vue-router": "^4.1.6"
}, },
"devDependencies": { "devDependencies": {
...@@ -34,12 +36,12 @@ ...@@ -34,12 +36,12 @@
"@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.29.0", "eslint": "^8.30.0",
"eslint-plugin-vue": "^9.8.0", "eslint-plugin-vue": "^9.8.0",
"sass": "^1.56.2", "sass": "^1.57.0",
"typescript": "~4.9.4", "typescript": "~4.9.4",
"unplugin-auto-import": "^0.12.1", "unplugin-auto-import": "^0.12.1",
"vite": "^4.0.1", "vite": "^4.0.2",
"vue-tsc": "^1.0.13" "vue-tsc": "^1.0.14"
} }
} }
<script lang="ts" setup> <script lang="ts" setup>
import type { UploadProps, UploadUserFile } from 'element-plus'
import { ElMessage } from 'element-plus' import { ElMessage } from 'element-plus'
import { Plus } from '@element-plus/icons-vue' import { Plus } from '@element-plus/icons-vue'
import type { UploadProps, UploadUserFile, UploadFile, UploadFiles, UploadInstance } from 'element-plus'
import md5 from 'blueimp-md5' import md5 from 'blueimp-md5'
import axios from 'axios'
import { getSignature } from '@/api/base' import { getSignature } from '@/api/base'
interface Props { interface Props {
modelValue: string | { name: string; url: string }[] modelValue: string | { name: string; url: string }[] | File
prefix?: string prefix?: string
size?: number size?: number
limit?: number beforeUpload?: UploadProps['beforeUpload']
beforeUpload?: (file: any) => void onChange?: (uploadFile: UploadFile, uploadFiles: UploadFiles, uploadRef?: UploadInstance) => void
} }
const props = withDefaults(defineProps<Props>(), { const props = withDefaults(defineProps<Props>(), {
...@@ -19,95 +20,92 @@ const props = withDefaults(defineProps<Props>(), { ...@@ -19,95 +20,92 @@ const props = withDefaults(defineProps<Props>(), {
const emit = defineEmits(['update:modelValue', 'success']) const emit = defineEmits(['update:modelValue', 'success'])
const uploadData = ref() const uploadRef = ref<UploadInstance>()
const fileList = ref<UploadUserFile[]>([]) const fileList = ref<UploadUserFile[]>([])
watchEffect(() => { watch(
fileList.value = Array.isArray(props.modelValue) ? props.modelValue.map(item => ({ ...item })) : [] () => props.modelValue,
}) value => {
fileList.value = Array.isArray(value) ? value.map(item => ({ ...item })) : []
}
)
const showFileList = computed(() => { const showFileList = computed(() => {
return Array.isArray(props.modelValue) return Array.isArray(props.modelValue)
}) })
// 上传之前 // 自定义上传
const handleBeforeUpload = async (file: any) => { const handleHttpRequest: UploadProps['httpRequest'] = async xhr => {
if (props.limit && fileList.value.length >= props.limit && props.limit > 1) { const name = xhr.file.name
ElMessage.error(`只能上传${props.limit}个文件`) const key = `${props.prefix}${md5(name + Date.now())}.${name.split('.').pop()}`
return false const signature: Record<string, any> = await getSignature()
const params = {
key,
OSSAccessKeyId: signature.accessid,
policy: signature.policy,
signature: signature.signature,
success_action_status: '200',
url: `${signature.host}/${key}`,
file: xhr.file
} }
return axios
.post('https://webapp-pub.oss-cn-beijing.aliyuncs.com', Object.assign(params, xhr.data), {
headers: { 'Content-Type': 'multipart/form-data' },
onUploadProgress(progress: any) {
progress.percent = progress.total > 0 ? (progress.loaded / progress.total) * 100 : 0
xhr.onProgress(progress)
}
})
.then(() => {
return params
})
}
// 文件改变
const handleChange: UploadProps['onChange'] = (uploadFile, uploadFiles) => {
props.onChange && props.onChange(uploadFile, uploadFiles, uploadRef.value)
}
// 上传之前
const handleBeforeUpload: UploadProps['beforeUpload'] = file => {
if (props.size && file.size > props.size) { if (props.size && file.size > props.size) {
ElMessage.error(`文件大小不能超过${props.size / 1024 / 1024}M`) ElMessage.error(`文件大小不能超过${props.size / 1024 / 1024}M`)
return false return false
} }
const fileName = file.name
const key = props.prefix + md5(fileName + new Date().getTime()) + fileName.substr(fileName.lastIndexOf('.'))
const response: Record<string, any> = await getSignature()
uploadData.value = {
key,
OSSAccessKeyId: response.accessid,
policy: response.policy,
signature: response.signature,
success_action_status: '200',
url: `${response.host}/${key}`
}
file.url = `${response.host}/${key}`
if (props.beforeUpload) { if (props.beforeUpload) {
return props.beforeUpload(file) return props.beforeUpload(file)
} }
} }
// 上传成功
const handleSuccess = (response: any, file: any, files: any) => {
if (!files.every((item: any) => item.status === 'success')) return
if (showFileList.value) {
if (props.limit && props.limit === 1) {
const last = files[files.length - 1]
emit('update:modelValue', [
{
name: last.name,
url: last.url || last.raw?.url,
size: last.size || last.raw?.size,
type: last.type || last.raw?.type
}
])
} else {
emit(
'update:modelValue',
files.map((item: any) => {
return {
name: item.name,
url: item.url || item.raw?.url,
size: item.size || item.raw?.size,
type: item.type || item.raw?.type
}
})
)
}
} else {
emit('update:modelValue', file.raw.url)
}
emit('success', file, files)
}
// 上传限制 // 上传限制
const handleExceed: UploadProps['onExceed'] = () => { const handleExceed: UploadProps['onExceed'] = () => {
ElMessage.warning('文件超出个数限制') ElMessage.warning('文件超出个数限制')
} }
// 删除 // 上传成功
const handleRemove: UploadProps['onRemove'] = (file, files) => { const handleSuccess: UploadProps['onSuccess'] = (response, uploadFile: any, uploadFiles) => {
if (showFileList.value) { if (!uploadFiles.every(item => item.status === 'success')) return
emit( uploadFile.type = uploadFile.raw?.type
'update:modelValue', uploadFile.url = response.url
files.map((item: any) => { const value = showFileList.value
return { name: item.name, url: item.url || item.raw.url } ? uploadFiles.map((item: any) => {
return {
name: item.name,
url: item.url,
size: item.size || item.raw?.size,
type: item.type || item.raw?.type
}
}) })
) : response.url
} else { emit('update:modelValue', value)
emit('update:modelValue', '') emit('success', uploadFile, uploadFiles)
} }
// 删除
const handleRemove: UploadProps['onRemove'] = (uploadFile, uploadFiles) => {
const value = showFileList.value ? uploadFiles : ''
emit('update:modelValue', value)
} }
// 预览 // 预览
...@@ -119,22 +117,24 @@ const handlePreview: UploadProps['onPreview'] = uploadFile => { ...@@ -119,22 +117,24 @@ const handlePreview: UploadProps['onPreview'] = uploadFile => {
<template> <template>
<el-upload <el-upload
action="https://webapp-pub.oss-cn-beijing.aliyuncs.com" action="https://webapp-pub.oss-cn-beijing.aliyuncs.com"
:data="uploadData"
:show-file-list="showFileList" :show-file-list="showFileList"
:http-request="handleHttpRequest"
:before-upload="handleBeforeUpload" :before-upload="handleBeforeUpload"
:on-change="handleChange"
:on-exceed="handleExceed" :on-exceed="handleExceed"
:on-remove="handleRemove" :on-remove="handleRemove"
:on-preview="handlePreview" :on-preview="handlePreview"
:on-success="handleSuccess" :on-success="handleSuccess"
:file-list="fileList" :file-list="fileList"
class="uploader"> class="uploader"
ref="uploadRef">
<slot> <slot>
<template v-if="showFileList"> <template v-if="showFileList">
<template v-if="$attrs['list-type'] === 'picture-card'"> <template v-if="$attrs['list-type'] === 'picture-card'">
<el-icon><Plus /></el-icon> <el-icon><Plus /></el-icon>
</template> </template>
<template v-else> <template v-else>
<el-button type="primary" plain round>本地文件</el-button> <el-button size="default" round>点击上传</el-button>
</template> </template>
</template> </template>
<div class="avatar-uploader" v-else> <div class="avatar-uploader" v-else>
......
import httpRequest from '@/utils/axios' import httpRequest from '@/utils/axios'
import type { ChannelRequestParams, ChannelListSearch } from './types' import type { ChannelRequestParams } from './types'
// https://gitlab.ezijing.com/root/api-documents/-/blob/master/%E6%96%B0%E7%9A%84zws%E7%B3%BB%E7%BB%9F/%E6%B8%A0%E9%81%93%E7%AE%A1%E7%90%86.md // https://gitlab.ezijing.com/root/api-documents/-/blob/master/%E6%96%B0%E7%9A%84zws%E7%B3%BB%E7%BB%9F/%E6%B8%A0%E9%81%93%E7%AE%A1%E7%90%86.md
...@@ -14,7 +14,18 @@ export function getRoles() { ...@@ -14,7 +14,18 @@ export function getRoles() {
} }
// 获取渠道列表 // 获取渠道列表
export function getChannelList(params?: ChannelListSearch) { export function getChannelList(params?: {
channel_id?: string
title?: string
company_short_name?: string
tags?: string
service_dialog_status?: string
case_withdraw_status?: string
distribution_status?: string
channel_quality?: string
'per-page'?: number
page?: number
}) {
return httpRequest.get('/api/zws/v1/backend/channel/list', { params }) return httpRequest.get('/api/zws/v1/backend/channel/list', { params })
} }
...@@ -25,12 +36,21 @@ export function getChannelDetail(params: { id: string }) { ...@@ -25,12 +36,21 @@ export function getChannelDetail(params: { id: string }) {
// 创建渠道 // 创建渠道
export function createChannel(data: ChannelRequestParams) { export function createChannel(data: ChannelRequestParams) {
return httpRequest.post('/api/zws/v1/backend/channel/create', data) return httpRequest.post('/api/zws/v1/backend/channel/create', data, {
headers: { 'Content-Type': 'multipart/form-data' }
})
} }
// 更新渠道 // 更新渠道
export function updateChannel(data: { id: string } & ChannelRequestParams) { export function updateChannel(data: { id: string } & ChannelRequestParams) {
return httpRequest.post('/api/zws/v1/backend/channel/update', data) return httpRequest.post('/api/zws/v1/backend/channel/update', data, {
headers: { 'Content-Type': 'multipart/form-data' }
})
}
// 删除渠道
export function deleteChannel(data: { id: string }) {
return httpRequest.post('/api/zws/v1/backend/channel/delete', data)
} }
// 获取成员列表 // 获取成员列表
...@@ -55,15 +75,29 @@ export function getProjectList(params: { id: string; 'per-page'?: number; page?: ...@@ -55,15 +75,29 @@ export function getProjectList(params: { id: string; 'per-page'?: number; page?:
// 新增渠道项目 // 新增渠道项目
export function addProject(data: any) { export function addProject(data: any) {
return httpRequest.post('/api/zws/v1/backend/channel/project-create', data) return httpRequest.post('/api/zws/v1/backend/channel/project-create', data, {
headers: { 'Content-Type': 'multipart/form-data' }
})
} }
// 更新渠道项目 // 更新渠道项目
export function updateProject(data: any) { export function updateProject(data: any) {
return httpRequest.post('/api/zws/v1/backend/channel/project-update', data) return httpRequest.post('/api/zws/v1/backend/channel/project-update', data, {
headers: { 'Content-Type': 'multipart/form-data' }
})
} }
// 删除渠道项目 // 删除渠道项目
export function deleteProject(data: { id: string; contract_id: string }) { export function deleteProject(data: { id: string; contract_id: string }) {
return httpRequest.post('/api/zws/v1/backend/channel/project-delete', data) return httpRequest.post('/api/zws/v1/backend/channel/project-delete', data)
} }
// 批量设置标签
export function bindTag(data: { channels_id: string; tags: string }) {
return httpRequest.post('/api/zws/v1/backend/channel/tag-create', data)
}
// 生成二维码
export function getQrcode(params: { id: string; project_id: string }) {
return httpRequest.get('/api/zws/v1/backend/channel/qrcode', { params })
}
<script setup lang="ts"> <script setup lang="ts">
import type { FormInstance, FormRules } from 'element-plus' import type { FormInstance, FormRules, UploadFile } from 'element-plus'
import type { SearchUser } from '@/types' import type { SearchUser } from '@/types'
import AppUpload from '@/components/base/AppUpload.vue' import AppUpload from '@/components/base/AppUpload.vue'
import SelectUser from '@/components/SelectUser.vue' import SelectUser from '@/components/SelectUser.vue'
...@@ -15,7 +15,7 @@ const emit = defineEmits<{ ...@@ -15,7 +15,7 @@ const emit = defineEmits<{
}>() }>()
const formRef = $ref<FormInstance>() const formRef = $ref<FormInstance>()
const form = reactive({ const form: any = reactive({
project_id: '', project_id: '',
project_id_name: '', project_id_name: '',
conversion_type: '', conversion_type: '',
...@@ -25,19 +25,36 @@ const form = reactive({ ...@@ -25,19 +25,36 @@ const form = reactive({
expire_month: 0, expire_month: 0,
follower_user_id: '', follower_user_id: '',
follower_user_id_name: '', follower_user_id_name: '',
division_rule: '', division_rule: '1',
division_proportion: '', division_proportion: '',
division_proportion_arr: [{ start: undefined, end: undefined, value: undefined }],
expire_range_month_start: '', expire_range_month_start: '',
expire_range_month_end: '', expire_range_month_end: '',
upload: '', upload: '',
secondary_channel_id: '', secondary_channel_id: '',
secondary_division_type: '', secondary_division_type: '',
secondary_division_rule: '', secondary_division_rule: '',
secondary_division_proportion: '' secondary_division_proportion: '',
secondary_division_proportion_arr: [{ start: undefined, end: undefined, value: undefined }],
contract_document: '',
files: {}
}) })
watchEffect(() => { watchEffect(() => {
if (props.data) { if (props.data) {
Object.assign(form, props.data) let division_proportion_arr = [{ start: undefined, end: undefined, value: undefined }]
try {
division_proportion_arr = JSON.parse(props.data.division_proportion)
} catch (error) {
console.log(error)
}
let secondary_division_proportion_arr = [{ start: undefined, end: undefined, value: undefined }]
try {
secondary_division_proportion_arr = JSON.parse(props.data.secondary_division_proportion)
} catch (error) {
console.log(error)
}
Object.assign(form, props.data, { division_proportion_arr, secondary_division_proportion_arr })
} }
}) })
...@@ -50,17 +67,41 @@ const rules = reactive<FormRules>({ ...@@ -50,17 +67,41 @@ const rules = reactive<FormRules>({
division_proportion: [{ required: true, message: '请输入' }] division_proportion: [{ required: true, message: '请输入' }]
}) })
// 是否有二级渠道
const hasSecondChannel = $computed(() => {
return ['1008', '1019'].includes(form.project_id)
})
// 渠道归属人 // 渠道归属人
function handleChangeUser(user: SearchUser) { function handleChangeUser(user: SearchUser) {
form.follower_user_id = user.id form.follower_user_id = user.id
form.follower_user_id_name = user.realname || user.nickname || user.username form.follower_user_id_name = user.realname || user.nickname || user.username
} }
// 合同
function handleSuccess(uploadFile: UploadFile, key: string) {
form.files[key] = uploadFile.raw
}
// 添加
function handleAdd(arr: any) {
arr.push({ start: undefined, end: undefined, value: undefined })
}
// 删除
function handleRemove(index: number, arr: any) {
arr.splice(index, 1)
}
// 选择完成 // 选择完成
function submit() { function submit() {
formRef?.validate().then(() => { formRef?.validate().then(() => {
const temp = { const temp = {
...form, ...form,
division_proportion: ['1', '3'].includes(form.division_rule)
? form.division_proportion
: JSON.stringify(form.division_proportion_arr),
secondary_division_proportion: ['1', '3'].includes(form.secondary_division_rule)
? form.secondary_division_proportion
: JSON.stringify(form.secondary_division_proportion_arr),
project_id_name: options.value.projects.find(item => item.project_id === form.project_id)?.title, project_id_name: options.value.projects.find(item => item.project_id === form.project_id)?.title,
conversion_type_name: options.value.contractConversionType.find(item => item.id === form.conversion_type)?.name, conversion_type_name: options.value.contractConversionType.find(item => item.id === form.conversion_type)?.name,
division_rule_name: options.value.contractDivisionRuleType.find(item => item.id === form.division_rule)?.name, division_rule_name: options.value.contractDivisionRuleType.find(item => item.id === form.division_rule)?.name,
...@@ -116,7 +157,7 @@ function submit() { ...@@ -116,7 +157,7 @@ function submit() {
</el-row> </el-row>
<el-row :gutter="40"> <el-row :gutter="40">
<el-col :span="6"> <el-col :span="6">
<el-form-item label="学员上线"> <el-form-item label="学员上">
<el-input v-model="form.unpaid_list_limit" :rows="2" type="input" placeholder="请输入" /> <el-input v-model="form.unpaid_list_limit" :rows="2" type="input" placeholder="请输入" />
</el-form-item> </el-form-item>
</el-col> </el-col>
...@@ -125,69 +166,160 @@ function submit() { ...@@ -125,69 +166,160 @@ function submit() {
<el-input-number v-model="form.expire_month" :min="1" style="width: 100%" /> <el-input-number v-model="form.expire_month" :min="1" style="width: 100%" />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="6"> <el-col :span="12">
<el-form-item label="跟进人" prop="follower_user_id_name"> <el-form-item label="跟进人" prop="follower_user_id_name">
<SelectUser :model-value="form.follower_user_id_name" @change="handleChangeUser"></SelectUser> <SelectUser :model-value="form.follower_user_id_name" @change="handleChangeUser"></SelectUser>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="6">
<el-form-item label="分成规则" prop="division_rule">
<el-select v-model="form.division_rule" placeholder="请选择" style="width: 100%">
<el-option
v-for="item in options.contractDivisionRuleType"
:key="item.id"
:label="item.name"
:value="item.id" />
</el-select>
</el-form-item>
</el-col>
</el-row> </el-row>
<el-row :gutter="40"> <el-row :gutter="40">
<el-col :span="6"> <el-col :span="12">
<el-form-item label="统一分成比例(%)" prop="division_proportion">
<el-input v-model="form.division_proportion" type="input" placeholder="请输入" />
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="有效期开始时间"> <el-form-item label="有效期开始时间">
<el-date-picker v-model="form.expire_range_month_start" type="date" placeholder="请选择" /> <el-date-picker
v-model="form.expire_range_month_start"
type="date"
placeholder="请选择"
style="width: 100%" />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="6"> <el-col :span="12">
<el-form-item label="有效期结束时间"> <el-form-item label="有效期结束时间">
<el-date-picker v-model="form.expire_range_month_end" type="date" placeholder="请选择" /> <el-date-picker
v-model="form.expire_range_month_end"
type="date"
placeholder="请选择"
style="width: 100%" />
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
<el-form-item label="分成规则" prop="division_rule">
<el-select v-model="form.division_rule" placeholder="请选择" style="width: 100%">
<el-option
v-for="item in options.contractDivisionRuleType"
:key="item.id"
:label="item.name"
:value="item.id" />
</el-select>
</el-form-item>
<el-form-item label="统一分成比例(%)" prop="division_proportion" v-if="form.division_rule === '1'">
<el-input v-model="form.division_proportion" type="input" placeholder="请输入" />
</el-form-item>
<el-form-item label="每人分成金额(元/人)" prop="division_proportion" v-else-if="form.division_rule === '3'">
<el-input v-model="form.division_proportion" type="input" placeholder="请输入" />
</el-form-item>
<template v-else>
<el-row :gutter="40" align="bottom" v-for="(item, index) in form.division_proportion_arr" :key="index">
<el-col :span="6">
<el-form-item label="人数范围(1-99999)">
<el-input-number v-model="item.start" :controls="false" style="width: 100%" />
</el-form-item>
</el-col>
<el-col :span="1"> <el-form-item label=""> ~ </el-form-item></el-col>
<el-col :span="6">
<el-form-item label="">
<el-input-number v-model="item.end" :controls="false" style="width: 100%" />
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="分成比例">
<el-input-number v-model="item.value" :controls="false" style="width: 100%" />
</el-form-item>
</el-col>
<el-col :span="5">
<el-form-item label="">
<el-button @click="handleAdd(form.division_proportion_arr)">添加</el-button>
<el-button :disabled="!index" @click="handleRemove(index, form.division_proportion_arr)">删除</el-button>
</el-form-item>
</el-col>
</el-row>
</template>
<el-form-item label="合同"> <el-form-item label="合同">
<AppUpload v-model="form.upload"></AppUpload> <AppUpload
v-model="form.contract_document"
@success="uploadFile => handleSuccess(uploadFile, 'contract_document')"></AppUpload>
</el-form-item> </el-form-item>
<!-- 二级渠道 -->
<template v-if="false"> <template v-if="hasSecondChannel">
<el-form-item label="二级渠道商"> <el-divider></el-divider>
<SelectUser></SelectUser> <el-row :gutter="40">
</el-form-item> <el-col :span="8">
<el-form-item label="二级渠道分成方式"> <el-form-item label="二级渠道商">
<el-select v-model="form.secondary_division_type" placeholder="请选择"> <el-select v-model="form.secondary_channel_id" placeholder="请选择" style="width: 100%">
<el-option <el-option
v-for="item in options.contractSecondaryDivisionType" v-for="item in options.channels"
:key="item.id" :key="item.channel_id"
:label="item.name" :label="item.title"
:value="item.id" /> :value="item.channel_id" />
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="二级渠道分成规则"> </el-col>
<el-select v-model="form.secondary_division_rule" placeholder="请选择"> <el-col :span="8">
<el-option <el-form-item label="二级渠道分成方式">
v-for="item in options.contractDivisionRuleType" <el-select v-model="form.secondary_division_type" placeholder="请选择" style="width: 100%">
:key="item.id" <el-option
:label="item.name" v-for="item in options.contractSecondaryDivisionType"
:value="item.id" /> :key="item.id"
</el-select> :label="item.name"
:value="item.id" />
</el-select>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="二级渠道分成规则">
<el-select v-model="form.secondary_division_rule" placeholder="请选择" style="width: 100%">
<el-option
v-for="item in options.contractDivisionRuleType"
:key="item.id"
:label="item.name"
:value="item.id" />
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-form-item
label="统一分成比例(%)"
prop="secondary_division_proportion"
v-if="form.secondary_division_rule === '1'">
<el-input v-model="form.secondary_division_proportion" type="input" placeholder="请输入" />
</el-form-item> </el-form-item>
<el-form-item label="统一分成比例(%)"> <el-form-item
<el-input v-model="form.secondary_division_proportion" :rows="2" type="input" placeholder="请输入" /> label="每人分成金额(元/人)"
prop="secondary_division_proportion"
v-else-if="form.division_rule === '3'">
<el-input v-model="form.secondary_division_proportion" type="input" placeholder="请输入" />
</el-form-item> </el-form-item>
<template v-else>
<el-row
:gutter="40"
align="bottom"
v-for="(item, index) in form.secondary_division_proportion_arr"
:key="index">
<el-col :span="6">
<el-form-item label="人数范围(1-99999)">
<el-input-number v-model="item.start" :controls="false" style="width: 100%" />
</el-form-item>
</el-col>
<el-col :span="1"> <el-form-item label=""> ~ </el-form-item></el-col>
<el-col :span="6">
<el-form-item label="">
<el-input-number v-model="item.end" :controls="false" style="width: 100%" />
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="分成比例">
<el-input-number v-model="item.value" :controls="false" style="width: 100%" />
</el-form-item>
</el-col>
<el-col :span="5">
<el-form-item label="">
<el-button @click="handleAdd(form.secondary_division_proportion_arr)">添加</el-button>
<el-button :disabled="!index" @click="handleRemove(index, form.secondary_division_proportion_arr)"
>删除</el-button
>
</el-form-item>
</el-col>
</el-row>
</template>
<el-form-item label="二级渠道合同"> <el-form-item label="二级渠道合同">
<AppUpload v-model="form.upload"></AppUpload> <AppUpload v-model="form.upload"></AppUpload>
</el-form-item> </el-form-item>
......
<script setup lang="ts"> <script setup lang="ts">
import type { UploadFile } from 'element-plus'
import type { ChannelFormData } from '../types' import type { ChannelFormData } from '../types'
import { provideForm } from '../util' import { provideForm } from '../util'
import AppUpload from '@/components/base/AppUpload.vue' import AppUpload from '@/components/base/AppUpload.vue'
const form = inject(provideForm) as ChannelFormData const form = inject(provideForm) as ChannelFormData
function handleSuccess(uploadFile: UploadFile, key: string) {
form.files[key] = uploadFile.raw
}
</script> </script>
<template> <template>
...@@ -86,17 +90,28 @@ const form = inject(provideForm) as ChannelFormData ...@@ -86,17 +90,28 @@ const form = inject(provideForm) as ChannelFormData
<el-row :gutter="40"> <el-row :gutter="40">
<el-col :span="6"> <el-col :span="6">
<el-form-item label="法人身份证(国徽面)"> <el-form-item label="法人身份证(国徽面)">
<AppUpload v-model="form.partner.company_legal_representative_id_card_front" accept="image/*"></AppUpload> <AppUpload
v-model="form.partner.company_legal_representative_id_card_front"
accept="image/*"
@success="
uploadFile => handleSuccess(uploadFile, 'company_legal_representative_id_card_front')
"></AppUpload>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="6"> <el-col :span="6">
<el-form-item label="法人身份证(头像面)"> <el-form-item label="法人身份证(头像面)">
<AppUpload v-model="form.partner.company_legal_representative_id_card_back" accept="image/*"></AppUpload> <AppUpload
v-model="form.partner.company_legal_representative_id_card_back"
accept="image/*"
@success="uploadFile => handleSuccess(uploadFile, 'company_legal_representative_id_card_back')"></AppUpload>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="6"> <el-col :span="6">
<el-form-item label="营业执照"> <el-form-item label="营业执照">
<AppUpload v-model="form.partner.business_license" accept="image/*"></AppUpload> <AppUpload
v-model="form.partner.business_license"
accept="image/*"
@success="uploadFile => handleSuccess(uploadFile, 'business_license')"></AppUpload>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
......
<script setup lang="ts"> <script setup lang="ts">
import type { FormInstance, FormRules } from 'element-plus'
import { useMap } from '../composables/useMap'
const { options } = await useMap()
const emit = defineEmits<{ const emit = defineEmits<{
(e: 'update:modelValue', visible: boolean): void (e: 'update:modelValue', modelValue: boolean): void
(e: 'submit', data: any): void
}>() }>()
const options = [ const formRef = $ref<FormInstance>()
{ const form = reactive({ tag: [] })
value: 'Option1', const rules = reactive<FormRules>({
label: 'O1' tag: { type: 'array', required: true, message: '请选择', trigger: 'change' }
},
{
value: 'Option2',
label: 'Option2'
},
{
value: 'Option3',
label: 'Option3'
},
{
value: 'Option4',
label: 'Option4'
},
{
value: 'Option5',
label: 'Option5'
}
]
const formInline = reactive({
tag: ''
}) })
// 选择完成
function submit() {
formRef?.validate().then(() => {
emit('submit', form)
})
}
</script> </script>
<template> <template>
<el-dialog title="选择标签" width="400px" :close-on-click-modal="false"> <el-dialog title="选择标签" width="400px" :close-on-click-modal="false">
<el-form style="display: block; width: 80%; margin: 0 auto" :model="formInline" class="demo-form-inline"> <el-form :model="form" :rules="rules" ref="formRef">
<el-form-item label="渠道标签"> <el-form-item label="渠道标签" prop="tag">
<el-select style="width: 200px" v-model="formInline.tag" multiple placeholder="Select"> <el-select style="width: 100%" v-model="form.tag" multiple>
<el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value" /> <el-option v-for="item in options.channelTags" :key="item" :value="item" />
</el-select> </el-select>
</el-form-item> </el-form-item>
<!-- <el-form-item>
<el-button type="primary" @click="onSubmit">Query</el-button>
</el-form-item> -->
</el-form> </el-form>
<template #footer> <template #footer>
<span class="dialog-footer"> <el-button auto-insert-space @click="emit('update:modelValue', false)">取消</el-button>
<el-button @click="emit('update:modelValue', false)">取消</el-button> <el-button auto-insert-space type="primary" @click="submit">确定</el-button>
<el-button type="primary"> 确定 </el-button>
</span>
</template> </template>
</el-dialog> </el-dialog>
</template> </template>
<script setup lang="ts"></script> <script setup lang="ts">
import type { ChannelItem } from '../types'
import type { FormInstance } from 'element-plus'
import QrcodeVue from 'qrcode.vue'
import { getQrcode } from '../api'
import { useMap } from '../composables/useMap'
const { options } = await useMap()
const props = defineProps<{
data: ChannelItem
}>()
const formRef = $ref<FormInstance>()
const form = reactive({ project_id: '' })
let qrcodeValue = $ref('')
function fetchQrcode() {
getQrcode({ id: props.data.id, project_id: form.project_id }).then(res => {
qrcodeValue = res.data.url
})
}
</script>
<template> <template>
<el-dialog title="生成二维码" width="400px"> <el-dialog title="生成二维码" width="400px">
<el-form style="display:block;width: 80%; margin: 0 auto"> <el-form :model="form" ref="formRef">
<el-form-item label="选择项目"> <el-form-item label="选择项目">
<el-select></el-select> <el-select v-model="form.project_id" @change="fetchQrcode" style="width: 100%">
<el-option
v-for="item in options.projects"
:key="item.project_id"
:label="item.title"
:value="item.project_id"></el-option>
</el-select>
</el-form-item> </el-form-item>
</el-form> </el-form>
<el-row justify="center" style="padding: 20px 0">
<QrcodeVue :value="qrcodeValue" :size="200" v-if="qrcodeValue" />
</el-row>
<p>
<a :href="qrcodeValue" target="_blank">{{ qrcodeValue }}</a>
</p>
</el-dialog> </el-dialog>
</template> </template>
...@@ -30,6 +30,7 @@ const options = ref<{ ...@@ -30,6 +30,7 @@ const options = ref<{
agreementType: State[] agreementType: State[]
channelTaxRate: State[] channelTaxRate: State[]
projects: { project_id: string; title: string }[] projects: { project_id: string; title: string }[]
channels: { channel_id: string; title: string }[]
}>({ }>({
channelType: [], channelType: [],
channelQuality: [], channelQuality: [],
...@@ -44,7 +45,8 @@ const options = ref<{ ...@@ -44,7 +45,8 @@ const options = ref<{
contractSecondaryDivisionType: [], contractSecondaryDivisionType: [],
agreementType: [], agreementType: [],
channelTaxRate: [], channelTaxRate: [],
projects: [] projects: [],
channels: []
}) })
// 领导 // 领导
...@@ -70,7 +72,8 @@ export async function useMap() { ...@@ -70,7 +72,8 @@ export async function useMap() {
contractSecondaryDivisionType: data.contract_secondary_division_type_map || [], contractSecondaryDivisionType: data.contract_secondary_division_type_map || [],
agreementType: data.agreement_type_map || [], agreementType: data.agreement_type_map || [],
channelTaxRate: data.channel_tax_rate_map || [], channelTaxRate: data.channel_tax_rate_map || [],
projects: data.projects || [] projects: data.projects || [],
channels: data.channels || []
} }
authList.value = data.channel_auth_map || [] authList.value = data.channel_auth_map || []
tags.value = data.tags || {} tags.value = data.tags || {}
......
export interface ChannelListSearch { export interface ChannelItem {
channel_id?: string id: string
title?: string title: string
company_short_name?: string channel_id: string
tags?: string channel_type: string
service_dialog_status?: string tags: string[]
case_withdraw_status?: string service_phone: string
distribution_status?: string service_dialog_status: string
channel_quality?: string landing_page: string
['per-page']?: string summary: string
page?: string project_id: string
channel_status: string
comment: string
status: string
operator: string
created_time: string
updated_time: string
channel_quality: string
distribution_status: string
case_withdraw_status: string
call_status: string
channel_owner_user_id: string
channel_type_name: string
channel_status_name: string
channel_owner_user_id_name: string
} }
export interface ChannelRequestParams { export interface ChannelRequestParams {
...@@ -30,6 +44,15 @@ export interface ChannelRequestParams { ...@@ -30,6 +44,15 @@ export interface ChannelRequestParams {
projects?: string projects?: string
} }
export type ChannelFormData = Omit<ChannelRequestParams, 'tags' | 'members' | 'projects'> & {
tags: string[]
channel_id: string
channel_owner_user_id_name?: string
members: ChannelMember[]
projects: ChannelProject[]
files: any
}
// 渠道成员 // 渠道成员
export interface ChannelMember { export interface ChannelMember {
user_id: string user_id: string
...@@ -81,14 +104,6 @@ export interface ChannelProject { ...@@ -81,14 +104,6 @@ export interface ChannelProject {
secondary_division_proportion_name: string secondary_division_proportion_name: string
} }
export type ChannelFormData = Omit<ChannelRequestParams, 'members' | 'projects'> & {
tags: string[]
channel_id: string
channel_owner_user_id_name: string
members: ChannelMember[]
projects: ChannelProject[]
}
// 用户信息 // 用户信息
export interface User { export interface User {
id: string id: string
......
<script setup lang="ts"> <script setup lang="ts">
import type { ChannelItem } from '../types'
import { ElMessage, ElMessageBox } from 'element-plus'
import AppList from '@/components/base/AppList.vue' import AppList from '@/components/base/AppList.vue'
import { useMap } from '../composables/useMap' import { useMap } from '../composables/useMap'
import { getChannelList } from '../api' import { getChannelList, deleteChannel, bindTag } from '../api'
const { options } = await useMap() const { options, hasAuth } = await useMap()
const Label = defineAsyncComponent(() => import('../components/Label.vue')) const Label = defineAsyncComponent(() => import('../components/Label.vue'))
const QRCode = defineAsyncComponent(() => import('../components/QRCode.vue')) const QRCode = defineAsyncComponent(() => import('../components/QRCode.vue'))
...@@ -33,7 +35,7 @@ const listOptions = $computed(() => { ...@@ -33,7 +35,7 @@ const listOptions = $computed(() => {
type: 'select', type: 'select',
prop: 'tags', prop: 'tags',
placeholder: '渠道标签', placeholder: '渠道标签',
options: options.value.channelTags.reduce((a: any, b: string) => a.push({ label: b, value: b }) && a, []) options: options.value.channelTags.map(item => ({ label: item, value: item }))
}, },
{ {
type: 'select', type: 'select',
...@@ -63,7 +65,7 @@ const listOptions = $computed(() => { ...@@ -63,7 +65,7 @@ const listOptions = $computed(() => {
type: 'select', type: 'select',
prop: 'channel_quality', prop: 'channel_quality',
placeholder: '渠道质量', placeholder: '渠道质量',
options: options.value.channelQuality.reduce((a: any, b: number) => a.push({ label: b, value: b }) && a, []) options: options.value.channelQuality.map(item => ({ label: item, value: item }))
} }
] ]
} }
...@@ -75,8 +77,8 @@ const columns = $computed(() => { ...@@ -75,8 +77,8 @@ const columns = $computed(() => {
{ {
label: '渠道标签', label: '渠道标签',
prop: 'tags', prop: 'tags',
computed(row: any) { computed({ row }: { row: ChannelItem }) {
return Array.isArray(row.row.tags) ? row.row.tags.toString() : row.row.tags return row.tags.join(',')
} }
}, },
{ {
...@@ -99,22 +101,40 @@ function toggleSelection() { ...@@ -99,22 +101,40 @@ function toggleSelection() {
appList?.tableRef.clearSelection() appList?.tableRef.clearSelection()
} }
let multipleSelection = $ref([]) let multipleSelection = $ref<any[]>([])
function handleSelectionChange(value: any) { function handleSelectionChange(value: any) {
multipleSelection = value multipleSelection = value
} }
const labelVisible = $ref(false) let labelVisible = $ref(false)
// 打标签
function handleSubmitLabel(data: any) {
const params = {
channels_id: multipleSelection.map(item => item.channel_id).join(','),
tags: data.tag.join(',')
}
bindTag(params).then(() => {
labelVisible = false
appList?.refetch()
ElMessage({ message: '添加成功', type: 'success' })
})
}
let currentRow = $ref() let currentRow = $ref<ChannelItem>()
// 二维码 // 二维码
let qrcodeVisible = $ref(false) let qrcodeVisible = $ref(false)
function handleQRCode(row: any) { function handleQRCode(row: ChannelItem) {
currentRow = row currentRow = row
qrcodeVisible = true qrcodeVisible = true
} }
// 删除 // 删除
function handleRemove(row: any) { function handleRemove(row: ChannelItem) {
ElMessageBox.confirm('确定要删除该渠道吗?', '提示').then(() => {
deleteChannel({ id: row.id }).then(() => {
ElMessage({ message: '删除成功', type: 'success' })
appList?.refetch()
})
})
currentRow = row currentRow = row
} }
</script> </script>
...@@ -129,25 +149,39 @@ function handleRemove(row: any) { ...@@ -129,25 +149,39 @@ function handleRemove(row: any) {
<el-button type="primary" :disabled="!multipleSelection.length" @click="labelVisible = true" <el-button type="primary" :disabled="!multipleSelection.length" @click="labelVisible = true"
>选择标签</el-button >选择标签</el-button
> >
<el-button type="primary" @click="toggleSelection">取消</el-button> <el-button type="primary" plain @click="toggleSelection">取消</el-button>
</template> </template>
</template> </template>
<template #table-x="{ row }"> <template #table-x="{ row }">
<el-button text> <el-button text v-if="hasAuth('channel-view', row.channel_id)">
<router-link :to="{ name: 'channelView', params: { id: row.id }, query: { channel_id: row.channel_id } }" <router-link :to="{ name: 'channelView', params: { id: row.id }, query: { channel_id: row.channel_id } }"
>查看</router-link >查看</router-link
> >
</el-button> </el-button>
<el-button text style="--el-button-text-color: #3276fc"> <el-button text style="--el-button-text-color: #3276fc" v-if="hasAuth('channel-update', row.channel_id)">
<router-link :to="{ name: 'channelUpdate', params: { id: row.id }, query: { channel_id: row.channel_id } }" <router-link :to="{ name: 'channelUpdate', params: { id: row.id }, query: { channel_id: row.channel_id } }"
>编辑</router-link >编辑</router-link
> >
</el-button> </el-button>
<el-button text style="--el-button-text-color: #f59a23" @click="handleQRCode(row)">二维码</el-button> <el-button
<el-button text style="--el-button-text-color: #d9001b" @click="handleRemove(row)">删除</el-button> text
style="--el-button-text-color: #f59a23"
@click="handleQRCode(row)"
v-if="hasAuth('channel-qrcode', row.channel_id)"
>二维码</el-button
>
<el-button
text
style="--el-button-text-color: #d9001b"
@click="handleRemove(row)"
v-if="hasAuth('channel-delete', row.channel_id)"
>删除</el-button
>
</template> </template>
</AppList> </AppList>
</AppCard> </AppCard>
<Label v-model="labelVisible" :data="multipleSelection"></Label> <!-- 选择标签 -->
<QRCode v-model="qrcodeVisible" :data="currentRow"></QRCode> <Label v-model="labelVisible" @submit="handleSubmitLabel" v-if="labelVisible"></Label>
<!-- 生成二维码 -->
<QRCode v-model="qrcodeVisible" :data="currentRow" v-if="qrcodeVisible && currentRow"></QRCode>
</template> </template>
...@@ -48,7 +48,8 @@ const form: ChannelFormData = reactive({ ...@@ -48,7 +48,8 @@ const form: ChannelFormData = reactive({
leaders_id: '', leaders_id: '',
partner: {}, partner: {},
members: [], members: [],
projects: [] projects: [],
files: {}
}) })
provide(provideForm, form) provide(provideForm, form)
watchEffect(() => { watchEffect(() => {
...@@ -112,6 +113,7 @@ function handleAdd(params: ChannelRequestParams) { ...@@ -112,6 +113,7 @@ function handleAdd(params: ChannelRequestParams) {
} }
// 修改 // 修改
function handleUpdate(params: ChannelRequestParams) { function handleUpdate(params: ChannelRequestParams) {
console.log(params)
updateChannel({ id: props.id, ...params }).then(() => { updateChannel({ id: props.id, ...params }).then(() => {
ElMessage({ message: '更新成功', type: 'success' }) ElMessage({ message: '更新成功', type: 'success' })
router.push('/base/channel') router.push('/base/channel')
......
...@@ -126,7 +126,7 @@ const handleDelete = function (row: any) { ...@@ -126,7 +126,7 @@ const handleDelete = function (row: any) {
<el-button type="primary" @click="toggleSelection" v-if="!selectionVisible">添加成员</el-button> <el-button type="primary" @click="toggleSelection" v-if="!selectionVisible">添加成员</el-button>
<template v-else> <template v-else>
<el-button type="primary" :disabled="!multipleSelection.length" @click="addProjectMember">选择成员</el-button> <el-button type="primary" :disabled="!multipleSelection.length" @click="addProjectMember">选择成员</el-button>
<el-button type="primary" @click="toggleSelection">取消</el-button> <el-button type="primary" plain @click="toggleSelection">取消</el-button>
</template> </template>
</template> </template>
<template #table-x="{ row }"> <template #table-x="{ row }">
......
...@@ -16,13 +16,6 @@ httpRequest.interceptors.request.use( ...@@ -16,13 +16,6 @@ httpRequest.interceptors.request.use(
if (config.headers?.['Content-Type'] === 'application/x-www-form-urlencoded') { if (config.headers?.['Content-Type'] === 'application/x-www-form-urlencoded') {
config.data = qs.stringify(config.data, { skipNulls: true }) config.data = qs.stringify(config.data, { skipNulls: true })
} }
if (config.headers?.['Content-Type'] === 'multipart/form-data') {
const formData = new window.FormData()
for (const key in config.data) {
formData.append(key, config.data[key])
}
config.data = formData
}
return config return config
}, },
function (error) { function (error) {
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论