From 6aa722c64acce9924492cbfd4e7b8894b4a174aa Mon Sep 17 00:00:00 2001 From: yuetsh <517252939@qq.com> Date: Tue, 31 Jan 2023 11:11:42 +0800 Subject: [PATCH] add access. --- package-lock.json | 94 +++++++------- package.json | 6 +- src/components.d.ts | 1 + src/oj/api.ts | 10 +- src/oj/contest/components/ContestType.vue | 20 +++ src/oj/contest/detail.vue | 148 ++++++++++++++++++---- src/oj/submission/list.vue | 4 +- src/utils/types.ts | 1 + 8 files changed, 207 insertions(+), 77 deletions(-) create mode 100644 src/oj/contest/components/ContestType.vue diff --git a/package-lock.json b/package-lock.json index cb713b6..0af6231 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,7 +11,7 @@ "@element-plus/icons-vue": "^2.0.10", "@monaco-editor/loader": "^1.3.2", "@vueuse/core": "^9.11.1", - "axios": "1.2.3", + "axios": "1.2.5", "chart.js": "^4.2.0", "copy-text-to-clipboard": "^3.0.1", "date-fns": "^2.29.3", @@ -31,8 +31,8 @@ "monaco-editor": "^0.34.1", "prettier": "^2.8.3", "typescript": "^4.9.4", - "unplugin-auto-import": "^0.12.1", - "unplugin-icons": "^0.15.1", + "unplugin-auto-import": "^0.12.2", + "unplugin-icons": "^0.15.2", "unplugin-vue-components": "^0.22.12", "vite": "^4.0.4", "vite-plugin-vue-markdown": "^0.22.2", @@ -463,9 +463,9 @@ "dev": true }, "node_modules/@iconify/utils": { - "version": "2.0.12", - "resolved": "https://registry.npmmirror.com/@iconify/utils/-/utils-2.0.12.tgz", - "integrity": "sha512-hhUyt1/k5RRhfcW/PRRdBw8e1ACehJT5QEZJRm7HnkCiUx11/0ccLr7K0OMlPSwjnfYcBS2gAUD3EpmL0iJCkQ==", + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/@iconify/utils/-/utils-2.1.0.tgz", + "integrity": "sha512-ouXv1hQfOKq4k3wxQ2OJBYQ2gXBMeFoUCIiORmuUVUNlSq9oOTzQBF3jpFRb0+/P0bnV+RIoHcbZKufZTlJ16g==", "dev": true, "dependencies": { "@antfu/install-pkg": "^0.1.1", @@ -970,9 +970,9 @@ "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" }, "node_modules/axios": { - "version": "1.2.3", - "resolved": "https://registry.npmmirror.com/axios/-/axios-1.2.3.tgz", - "integrity": "sha512-pdDkMYJeuXLZ6Xj/Q5J3Phpe+jbGdsSzlQaFVkMQzRUL05+6+tetX8TV3p4HrU4kzuO9bt+io/yGQxuyxA/xcw==", + "version": "1.2.5", + "resolved": "https://registry.npmmirror.com/axios/-/axios-1.2.5.tgz", + "integrity": "sha512-9pU/8mmjSSOb4CXVsvGIevN+MlO/t9OWtKadTaLuN85Gge3HGorUckgp8A/2FH4V4hJ7JuQ3LIeI7KAV9ITZrQ==", "dependencies": { "follow-redirects": "^1.15.0", "form-data": "^4.0.0", @@ -1902,9 +1902,9 @@ "dev": true }, "node_modules/pathe": { - "version": "1.0.0", - "resolved": "https://registry.npmmirror.com/pathe/-/pathe-1.0.0.tgz", - "integrity": "sha512-nPdMG0Pd09HuSsr7QOKUXO2Jr9eqaDiZvDwdyIhNG5SHYujkQHYKDfGQkulBxvbDHz8oHLsTgKN86LSwYzSHAg==", + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/pathe/-/pathe-1.1.0.tgz", + "integrity": "sha512-ODbEPR0KKHqECXW1GoxdDb+AZvULmXjVPy4rt+pGo2+TnjJTIPJQSVS6N63n8T2Ip+syHhbn52OewKicV0373w==", "dev": true }, "node_modules/picocolors": { @@ -2276,9 +2276,9 @@ "dev": true }, "node_modules/unimport": { - "version": "1.3.0", - "resolved": "https://registry.npmmirror.com/unimport/-/unimport-1.3.0.tgz", - "integrity": "sha512-fOkrdxglsHd428yegH0wPH/6IfaSdDeMXtdRGn6en/ccyzc2aaoxiUTMrJyc6Bu+xoa18RJRPMfLUHEzjz8atw==", + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/unimport/-/unimport-2.0.1.tgz", + "integrity": "sha512-hMeDspGrEcocahicTr0AQYUGes24FvJtOxk9QEjeEOGv+n1EdpsDiT6z8t209PWhemPg0T5w/ooTVhup2GdrFA==", "dev": true, "dependencies": { "@rollup/pluginutils": "^5.0.2", @@ -2287,7 +2287,7 @@ "local-pkg": "^0.4.3", "magic-string": "^0.27.0", "mlly": "^1.1.0", - "pathe": "^1.0.0", + "pathe": "^1.1.0", "pkg-types": "^1.0.1", "scule": "^1.0.0", "strip-literal": "^1.0.0", @@ -2307,16 +2307,16 @@ } }, "node_modules/unplugin-auto-import": { - "version": "0.12.1", - "resolved": "https://registry.npmmirror.com/unplugin-auto-import/-/unplugin-auto-import-0.12.1.tgz", - "integrity": "sha512-J/3ZORq5YGKG+8D5vLLOgqaHNK77izlVN07mQ752yRLqBNDbJiwPRSnUwwYqH5N6rDay1SqnJCHaUdbJ9QMI2w==", + "version": "0.12.2", + "resolved": "https://registry.npmmirror.com/unplugin-auto-import/-/unplugin-auto-import-0.12.2.tgz", + "integrity": "sha512-hC4w0GZjPjmLtrxV0u10XO350V9eCtQyEyifXr7B9UGD7SvbbIvKuOcHt58Zd4FAqZJXKWoXkpr9mdhBp85Usw==", "dev": true, "dependencies": { "@antfu/utils": "^0.7.2", "@rollup/pluginutils": "^5.0.2", - "local-pkg": "^0.4.2", + "local-pkg": "^0.4.3", "magic-string": "^0.27.0", - "unimport": "^1.0.2", + "unimport": "^2.0.1", "unplugin": "^1.0.1" }, "engines": { @@ -2332,14 +2332,14 @@ } }, "node_modules/unplugin-icons": { - "version": "0.15.1", - "resolved": "https://registry.npmmirror.com/unplugin-icons/-/unplugin-icons-0.15.1.tgz", - "integrity": "sha512-d4Gc8A4qIJYIXKueltTwoHfR3Cxsdfnmz8lSN5dsITEyai5tdb0uWpbQkn3j9HUlLDSB1ybdQIf5CItxJT3UDw==", + "version": "0.15.2", + "resolved": "https://registry.npmmirror.com/unplugin-icons/-/unplugin-icons-0.15.2.tgz", + "integrity": "sha512-oWTTdLMuqfEYfZcko+KZHDEOIsqT4OeyJB1e4U7luCOo9gto/JLyHkqfbqjmjkjdQqA3DNHS18WOKh5esqQM5g==", "dev": true, "dependencies": { "@antfu/install-pkg": "^0.1.1", "@antfu/utils": "^0.7.2", - "@iconify/utils": "^2.0.9", + "@iconify/utils": "^2.1.0", "debug": "^4.3.4", "kolorist": "^1.6.0", "local-pkg": "^0.4.2", @@ -2827,9 +2827,9 @@ "dev": true }, "@iconify/utils": { - "version": "2.0.12", - "resolved": "https://registry.npmmirror.com/@iconify/utils/-/utils-2.0.12.tgz", - "integrity": "sha512-hhUyt1/k5RRhfcW/PRRdBw8e1ACehJT5QEZJRm7HnkCiUx11/0ccLr7K0OMlPSwjnfYcBS2gAUD3EpmL0iJCkQ==", + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/@iconify/utils/-/utils-2.1.0.tgz", + "integrity": "sha512-ouXv1hQfOKq4k3wxQ2OJBYQ2gXBMeFoUCIiORmuUVUNlSq9oOTzQBF3jpFRb0+/P0bnV+RIoHcbZKufZTlJ16g==", "dev": true, "requires": { "@antfu/install-pkg": "^0.1.1", @@ -3268,9 +3268,9 @@ "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" }, "axios": { - "version": "1.2.3", - "resolved": "https://registry.npmmirror.com/axios/-/axios-1.2.3.tgz", - "integrity": "sha512-pdDkMYJeuXLZ6Xj/Q5J3Phpe+jbGdsSzlQaFVkMQzRUL05+6+tetX8TV3p4HrU4kzuO9bt+io/yGQxuyxA/xcw==", + "version": "1.2.5", + "resolved": "https://registry.npmmirror.com/axios/-/axios-1.2.5.tgz", + "integrity": "sha512-9pU/8mmjSSOb4CXVsvGIevN+MlO/t9OWtKadTaLuN85Gge3HGorUckgp8A/2FH4V4hJ7JuQ3LIeI7KAV9ITZrQ==", "requires": { "follow-redirects": "^1.15.0", "form-data": "^4.0.0", @@ -3990,9 +3990,9 @@ "dev": true }, "pathe": { - "version": "1.0.0", - "resolved": "https://registry.npmmirror.com/pathe/-/pathe-1.0.0.tgz", - "integrity": "sha512-nPdMG0Pd09HuSsr7QOKUXO2Jr9eqaDiZvDwdyIhNG5SHYujkQHYKDfGQkulBxvbDHz8oHLsTgKN86LSwYzSHAg==", + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/pathe/-/pathe-1.1.0.tgz", + "integrity": "sha512-ODbEPR0KKHqECXW1GoxdDb+AZvULmXjVPy4rt+pGo2+TnjJTIPJQSVS6N63n8T2Ip+syHhbn52OewKicV0373w==", "dev": true }, "picocolors": { @@ -4270,9 +4270,9 @@ "dev": true }, "unimport": { - "version": "1.3.0", - "resolved": "https://registry.npmmirror.com/unimport/-/unimport-1.3.0.tgz", - "integrity": "sha512-fOkrdxglsHd428yegH0wPH/6IfaSdDeMXtdRGn6en/ccyzc2aaoxiUTMrJyc6Bu+xoa18RJRPMfLUHEzjz8atw==", + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/unimport/-/unimport-2.0.1.tgz", + "integrity": "sha512-hMeDspGrEcocahicTr0AQYUGes24FvJtOxk9QEjeEOGv+n1EdpsDiT6z8t209PWhemPg0T5w/ooTVhup2GdrFA==", "dev": true, "requires": { "@rollup/pluginutils": "^5.0.2", @@ -4281,7 +4281,7 @@ "local-pkg": "^0.4.3", "magic-string": "^0.27.0", "mlly": "^1.1.0", - "pathe": "^1.0.0", + "pathe": "^1.1.0", "pkg-types": "^1.0.1", "scule": "^1.0.0", "strip-literal": "^1.0.0", @@ -4301,28 +4301,28 @@ } }, "unplugin-auto-import": { - "version": "0.12.1", - "resolved": "https://registry.npmmirror.com/unplugin-auto-import/-/unplugin-auto-import-0.12.1.tgz", - "integrity": "sha512-J/3ZORq5YGKG+8D5vLLOgqaHNK77izlVN07mQ752yRLqBNDbJiwPRSnUwwYqH5N6rDay1SqnJCHaUdbJ9QMI2w==", + "version": "0.12.2", + "resolved": "https://registry.npmmirror.com/unplugin-auto-import/-/unplugin-auto-import-0.12.2.tgz", + "integrity": "sha512-hC4w0GZjPjmLtrxV0u10XO350V9eCtQyEyifXr7B9UGD7SvbbIvKuOcHt58Zd4FAqZJXKWoXkpr9mdhBp85Usw==", "dev": true, "requires": { "@antfu/utils": "^0.7.2", "@rollup/pluginutils": "^5.0.2", - "local-pkg": "^0.4.2", + "local-pkg": "^0.4.3", "magic-string": "^0.27.0", - "unimport": "^1.0.2", + "unimport": "^2.0.1", "unplugin": "^1.0.1" } }, "unplugin-icons": { - "version": "0.15.1", - "resolved": "https://registry.npmmirror.com/unplugin-icons/-/unplugin-icons-0.15.1.tgz", - "integrity": "sha512-d4Gc8A4qIJYIXKueltTwoHfR3Cxsdfnmz8lSN5dsITEyai5tdb0uWpbQkn3j9HUlLDSB1ybdQIf5CItxJT3UDw==", + "version": "0.15.2", + "resolved": "https://registry.npmmirror.com/unplugin-icons/-/unplugin-icons-0.15.2.tgz", + "integrity": "sha512-oWTTdLMuqfEYfZcko+KZHDEOIsqT4OeyJB1e4U7luCOo9gto/JLyHkqfbqjmjkjdQqA3DNHS18WOKh5esqQM5g==", "dev": true, "requires": { "@antfu/install-pkg": "^0.1.1", "@antfu/utils": "^0.7.2", - "@iconify/utils": "^2.0.9", + "@iconify/utils": "^2.1.0", "debug": "^4.3.4", "kolorist": "^1.6.0", "local-pkg": "^0.4.2", diff --git a/package.json b/package.json index a49332b..64cfb78 100644 --- a/package.json +++ b/package.json @@ -13,7 +13,7 @@ "@element-plus/icons-vue": "^2.0.10", "@monaco-editor/loader": "^1.3.2", "@vueuse/core": "^9.11.1", - "axios": "1.2.3", + "axios": "1.2.5", "chart.js": "^4.2.0", "copy-text-to-clipboard": "^3.0.1", "date-fns": "^2.29.3", @@ -33,8 +33,8 @@ "monaco-editor": "^0.34.1", "prettier": "^2.8.3", "typescript": "^4.9.4", - "unplugin-auto-import": "^0.12.1", - "unplugin-icons": "^0.15.1", + "unplugin-auto-import": "^0.12.2", + "unplugin-icons": "^0.15.2", "unplugin-vue-components": "^0.22.12", "vite": "^4.0.4", "vite-plugin-vue-markdown": "^0.22.2", diff --git a/src/components.d.ts b/src/components.d.ts index fa14842..d49b76c 100644 --- a/src/components.d.ts +++ b/src/components.d.ts @@ -13,6 +13,7 @@ declare module '@vue/runtime-core' { IEpLock: typeof import('~icons/ep/lock')['default'] NAlert: typeof import('naive-ui')['NAlert'] NButton: typeof import('naive-ui')['NButton'] + NButtonGroup: typeof import('naive-ui')['NButtonGroup'] NCard: typeof import('naive-ui')['NCard'] NCode: typeof import('naive-ui')['NCode'] NConfigProvider: typeof import('naive-ui')['NConfigProvider'] diff --git a/src/oj/api.ts b/src/oj/api.ts index 2e06be7..69f3602 100644 --- a/src/oj/api.ts +++ b/src/oj/api.ts @@ -112,9 +112,11 @@ export function getContestAccess(id: string) { export function checkContestPassword(contestID: string, password: string) { return http.post("contest/password", { - data: { - contest_id: contestID, - password, - }, + contest_id: contestID, + password, }) } + +export function getContestProblem(contestID: string) { + return http.get("contest/problem", { params: { contest_id: contestID } }) +} diff --git a/src/oj/contest/components/ContestType.vue b/src/oj/contest/components/ContestType.vue new file mode 100644 index 0000000..6951415 --- /dev/null +++ b/src/oj/contest/components/ContestType.vue @@ -0,0 +1,20 @@ + + + diff --git a/src/oj/contest/detail.vue b/src/oj/contest/detail.vue index b087b2a..f642c83 100644 --- a/src/oj/contest/detail.vue +++ b/src/oj/contest/detail.vue @@ -1,42 +1,129 @@ diff --git a/src/oj/submission/list.vue b/src/oj/submission/list.vue index c597b0b..f05dd0a 100644 --- a/src/oj/submission/list.vue +++ b/src/oj/submission/list.vue @@ -132,7 +132,9 @@ const columns = computed(() => { { text: true, type: "info", - onClick: () => router.push("/submission/" + row.id), + onClick: () => { + if (row.show_link) router.push("/submission/" + row.id) + }, }, () => row.id.slice(0, 12) ), diff --git a/src/utils/types.ts b/src/utils/types.ts index 84375e8..749f8e3 100644 --- a/src/utils/types.ts +++ b/src/utils/types.ts @@ -140,6 +140,7 @@ export interface Submission { info: Info language: LANGUAGE shared: boolean + show_link: boolean statistic_info: { score?: number err_info?: string