add problem author

This commit is contained in:
2024-12-23 20:26:46 +08:00
parent 2d23e5ceb7
commit 06f9ca7194
6 changed files with 82 additions and 70 deletions

130
package-lock.json generated
View File

@@ -10,7 +10,7 @@
"dependencies": { "dependencies": {
"@codemirror/lang-cpp": "^6.0.2", "@codemirror/lang-cpp": "^6.0.2",
"@codemirror/lang-python": "^6.1.6", "@codemirror/lang-python": "^6.1.6",
"@vueuse/core": "^12.0.0", "@vueuse/core": "^12.2.0",
"@wangeditor-next/editor": "^5.6.19", "@wangeditor-next/editor": "^5.6.19",
"@wangeditor-next/editor-for-vue": "^5.1.14", "@wangeditor-next/editor-for-vue": "^5.1.14",
"axios": "^1.7.9", "axios": "^1.7.9",
@@ -20,7 +20,7 @@
"copy-text-to-clipboard": "^3.2.0", "copy-text-to-clipboard": "^3.2.0",
"date-fns": "^4.1.0", "date-fns": "^4.1.0",
"highlight.js": "^11.11.0", "highlight.js": "^11.11.0",
"naive-ui": "^2.40.3", "naive-ui": "^2.40.4",
"normalize.css": "^8.0.1", "normalize.css": "^8.0.1",
"pinia": "^2.3.0", "pinia": "^2.3.0",
"vue": "^3.5.13", "vue": "^3.5.13",
@@ -30,17 +30,17 @@
}, },
"devDependencies": { "devDependencies": {
"@iconify/vue": "^4.2.0", "@iconify/vue": "^4.2.0",
"@shikijs/markdown-it": "^1.24.2", "@shikijs/markdown-it": "^1.24.4",
"@types/canvas-confetti": "^1.9.0", "@types/canvas-confetti": "^1.9.0",
"@types/node": "^22.10.2", "@types/node": "^22.10.2",
"@vitejs/plugin-vue": "^5.2.1", "@vitejs/plugin-vue": "^5.2.1",
"prettier": "^3.4.2", "prettier": "^3.4.2",
"prettier-plugin-organize-imports": "^4.1.0", "prettier-plugin-organize-imports": "^4.1.0",
"typescript": "5.6.3", "typescript": "~5.6.3",
"unplugin-auto-import": "^0.19.0", "unplugin-auto-import": "^0.19.0",
"unplugin-vue-components": "^0.28.0", "unplugin-vue-components": "^0.28.0",
"unplugin-vue-markdown": "^0.28.0", "unplugin-vue-markdown": "^0.28.0",
"vite": "^6.0.3", "vite": "^6.0.5",
"vue-tsc": "^2.1.10" "vue-tsc": "^2.1.10"
} }
}, },
@@ -1530,62 +1530,62 @@
] ]
}, },
"node_modules/@shikijs/core": { "node_modules/@shikijs/core": {
"version": "1.24.2", "version": "1.24.4",
"resolved": "https://registry.npmmirror.com/@shikijs/core/-/core-1.24.2.tgz", "resolved": "https://registry.npmmirror.com/@shikijs/core/-/core-1.24.4.tgz",
"integrity": "sha512-BpbNUSKIwbKrRRA+BQj0BEWSw+8kOPKDJevWeSE/xIqGX7K0xrCZQ9kK0nnEQyrzsUoka1l81ZtJ2mGaCA32HQ==", "integrity": "sha512-jjLsld+xEEGYlxAXDyGwWsKJ1sw5Pc1pnp4ai2ORpjx2UX08YYTC0NNqQYO1PaghYaR+PvgMOGuvzw2he9sk0Q==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@shikijs/engine-javascript": "1.24.2", "@shikijs/engine-javascript": "1.24.4",
"@shikijs/engine-oniguruma": "1.24.2", "@shikijs/engine-oniguruma": "1.24.4",
"@shikijs/types": "1.24.2", "@shikijs/types": "1.24.4",
"@shikijs/vscode-textmate": "^9.3.0", "@shikijs/vscode-textmate": "^9.3.1",
"@types/hast": "^3.0.4", "@types/hast": "^3.0.4",
"hast-util-to-html": "^9.0.3" "hast-util-to-html": "^9.0.4"
} }
}, },
"node_modules/@shikijs/engine-javascript": { "node_modules/@shikijs/engine-javascript": {
"version": "1.24.2", "version": "1.24.4",
"resolved": "https://registry.npmmirror.com/@shikijs/engine-javascript/-/engine-javascript-1.24.2.tgz", "resolved": "https://registry.npmmirror.com/@shikijs/engine-javascript/-/engine-javascript-1.24.4.tgz",
"integrity": "sha512-EqsmYBJdLEwEiO4H+oExz34a5GhhnVp+jH9Q/XjPjmBPc6TE/x4/gD0X3i0EbkKKNqXYHHJTJUpOLRQNkEzS9Q==", "integrity": "sha512-TClaQOLvo9WEMJv6GoUsykQ6QdynuKszuORFWCke8qvi6PeLm7FcD9+7y45UenysxEWYpDL5KJaVXTngTE+2BA==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@shikijs/types": "1.24.2", "@shikijs/types": "1.24.4",
"@shikijs/vscode-textmate": "^9.3.0", "@shikijs/vscode-textmate": "^9.3.1",
"oniguruma-to-es": "0.7.0" "oniguruma-to-es": "0.8.1"
} }
}, },
"node_modules/@shikijs/engine-oniguruma": { "node_modules/@shikijs/engine-oniguruma": {
"version": "1.24.2", "version": "1.24.4",
"resolved": "https://registry.npmmirror.com/@shikijs/engine-oniguruma/-/engine-oniguruma-1.24.2.tgz", "resolved": "https://registry.npmmirror.com/@shikijs/engine-oniguruma/-/engine-oniguruma-1.24.4.tgz",
"integrity": "sha512-ZN6k//aDNWRJs1uKB12pturKHh7GejKugowOFGAuG7TxDRLod1Bd5JhpOikOiFqPmKjKEPtEA6mRCf7q3ulDyQ==", "integrity": "sha512-Do2ry6flp2HWdvpj2XOwwa0ljZBRy15HKZITzPcNIBOGSeprnA8gOooA/bLsSPuy8aJBa+Q/r34dMmC3KNL/zw==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@shikijs/types": "1.24.2", "@shikijs/types": "1.24.4",
"@shikijs/vscode-textmate": "^9.3.0" "@shikijs/vscode-textmate": "^9.3.1"
} }
}, },
"node_modules/@shikijs/markdown-it": { "node_modules/@shikijs/markdown-it": {
"version": "1.24.2", "version": "1.24.4",
"resolved": "https://registry.npmmirror.com/@shikijs/markdown-it/-/markdown-it-1.24.2.tgz", "resolved": "https://registry.npmmirror.com/@shikijs/markdown-it/-/markdown-it-1.24.4.tgz",
"integrity": "sha512-vLFRZYudSkrWWrtfBBZy7hM5mZjpC54zdxSNDn25nV6uVSilySmbdt70LyfiuTOtrKQ3p7fjuxojxqM/n6qVCg==", "integrity": "sha512-zSY4o6N6QudVd4SMw1G0fFe9l2ujOKhzR8vGPHUZTVGKhOTdSdp0JM0Zr8Vt3mSdgUxQC3dkdUOZQcSMwdG0Og==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"markdown-it": "^14.1.0", "markdown-it": "^14.1.0",
"shiki": "1.24.2" "shiki": "1.24.4"
} }
}, },
"node_modules/@shikijs/types": { "node_modules/@shikijs/types": {
"version": "1.24.2", "version": "1.24.4",
"resolved": "https://registry.npmmirror.com/@shikijs/types/-/types-1.24.2.tgz", "resolved": "https://registry.npmmirror.com/@shikijs/types/-/types-1.24.4.tgz",
"integrity": "sha512-bdeWZiDtajGLG9BudI0AHet0b6e7FbR0EsE4jpGaI0YwHm/XJunI9+3uZnzFtX65gsyJ6ngCIWUfA4NWRPnBkQ==", "integrity": "sha512-0r0XU7Eaow0PuDxuWC1bVqmWCgm3XqizIaT7SM42K03vc69LGooT0U8ccSR44xP/hGlNx4FKhtYpV+BU6aaKAA==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@shikijs/vscode-textmate": "^9.3.0", "@shikijs/vscode-textmate": "^9.3.1",
"@types/hast": "^3.0.4" "@types/hast": "^3.0.4"
} }
}, },
@@ -1975,14 +1975,14 @@
"license": "MIT" "license": "MIT"
}, },
"node_modules/@vueuse/core": { "node_modules/@vueuse/core": {
"version": "12.0.0", "version": "12.2.0",
"resolved": "https://registry.npmmirror.com/@vueuse/core/-/core-12.0.0.tgz", "resolved": "https://registry.npmmirror.com/@vueuse/core/-/core-12.2.0.tgz",
"integrity": "sha512-C12RukhXiJCbx4MGhjmd/gH52TjJsc3G0E0kQj/kb19H3Nt6n1CA4DRWuTdWWcaFRdlTe0npWDS942mvacvNBw==", "integrity": "sha512-jksyNu+5EGwggNkRWd6xX+8qBkYbmrwdFQMgCABsz+wq8bKF6w3soPFLB8vocFp3wFIzn0OYkSPM9JP+AFKwsg==",
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@types/web-bluetooth": "^0.0.20", "@types/web-bluetooth": "^0.0.20",
"@vueuse/metadata": "12.0.0", "@vueuse/metadata": "12.2.0",
"@vueuse/shared": "12.0.0", "@vueuse/shared": "12.2.0",
"vue": "^3.5.13" "vue": "^3.5.13"
}, },
"funding": { "funding": {
@@ -1990,18 +1990,18 @@
} }
}, },
"node_modules/@vueuse/metadata": { "node_modules/@vueuse/metadata": {
"version": "12.0.0", "version": "12.2.0",
"resolved": "https://registry.npmmirror.com/@vueuse/metadata/-/metadata-12.0.0.tgz", "resolved": "https://registry.npmmirror.com/@vueuse/metadata/-/metadata-12.2.0.tgz",
"integrity": "sha512-Yzimd1D3sjxTDOlF05HekU5aSGdKjxhuhRFHA7gDWLn57PRbBIh+SF5NmjhJ0WRgF3my7T8LBucyxdFJjIfRJQ==", "integrity": "sha512-x6zynZtTh1l52m0y8d/EgzpshnMjg8cNZ2KWoncJ62Z5qPSGoc4FUunmMVrrRM/I/5542rTEY89CGftngZvrkQ==",
"license": "MIT", "license": "MIT",
"funding": { "funding": {
"url": "https://github.com/sponsors/antfu" "url": "https://github.com/sponsors/antfu"
} }
}, },
"node_modules/@vueuse/shared": { "node_modules/@vueuse/shared": {
"version": "12.0.0", "version": "12.2.0",
"resolved": "https://registry.npmmirror.com/@vueuse/shared/-/shared-12.0.0.tgz", "resolved": "https://registry.npmmirror.com/@vueuse/shared/-/shared-12.2.0.tgz",
"integrity": "sha512-3i6qtcq2PIio5i/vVYidkkcgvmTjCqrf26u+Fd4LhnbBmIT6FN8y6q/GJERp8lfcB9zVEfjdV0Br0443qZuJpw==", "integrity": "sha512-SRr4AZwv/giS+EmyA1ZIzn3/iALjjnWAGaBNmoDTMEob9JwQaevAocuaMDnPAvU7Z35Y5g3CFRusCWgp1gVJ3Q==",
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"vue": "^3.5.13" "vue": "^3.5.13"
@@ -4008,9 +4008,9 @@
"license": "MIT" "license": "MIT"
}, },
"node_modules/naive-ui": { "node_modules/naive-ui": {
"version": "2.40.3", "version": "2.40.4",
"resolved": "https://registry.npmmirror.com/naive-ui/-/naive-ui-2.40.3.tgz", "resolved": "https://registry.npmmirror.com/naive-ui/-/naive-ui-2.40.4.tgz",
"integrity": "sha512-TpgYfOg0SNlG4HHhTdFnFcPc1trZiX3r10Pn6biyEgRoi6ZC5qbsY8xgKsqQuG4nWj2PHLT8pPVEkt2pKOlxag==", "integrity": "sha512-SDFbW9/VEZix/gmzj54jH6c0YDBVM6o0mG1520RAWKtPSqVrAp5r8qLi8dYvvDmcs/qoRbzM3QGuA4GxQJ/iEg==",
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@css-render/plugin-bem": "^0.15.14", "@css-render/plugin-bem": "^0.15.14",
@@ -4184,15 +4184,15 @@
} }
}, },
"node_modules/oniguruma-to-es": { "node_modules/oniguruma-to-es": {
"version": "0.7.0", "version": "0.8.1",
"resolved": "https://registry.npmmirror.com/oniguruma-to-es/-/oniguruma-to-es-0.7.0.tgz", "resolved": "https://registry.npmmirror.com/oniguruma-to-es/-/oniguruma-to-es-0.8.1.tgz",
"integrity": "sha512-HRaRh09cE0gRS3+wi2zxekB+I5L8C/gN60S+vb11eADHUaB/q4u8wGGOX3GvwvitG8ixaeycZfeoyruKQzUgNg==", "integrity": "sha512-dekySTEvCxCj0IgKcA2uUCO/e4ArsqpucDPcX26w9ajx+DvMWLc5eZeJaRQkd7oC/+rwif5gnT900tA34uN9Zw==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"emoji-regex-xs": "^1.0.0", "emoji-regex-xs": "^1.0.0",
"regex": "^5.0.2", "regex": "^5.0.2",
"regex-recursion": "^4.3.0" "regex-recursion": "^5.0.0"
} }
}, },
"node_modules/path-browserify": { "node_modules/path-browserify": {
@@ -4468,9 +4468,9 @@
} }
}, },
"node_modules/regex-recursion": { "node_modules/regex-recursion": {
"version": "4.3.0", "version": "5.0.0",
"resolved": "https://registry.npmmirror.com/regex-recursion/-/regex-recursion-4.3.0.tgz", "resolved": "https://registry.npmmirror.com/regex-recursion/-/regex-recursion-5.0.0.tgz",
"integrity": "sha512-5LcLnizwjcQ2ALfOj95MjcatxyqF5RPySx9yT+PaXu3Gox2vyAtLDjHB8NTJLtMGkvyau6nI3CfpwFCjPUIs/A==", "integrity": "sha512-UwyOqeobrCCqTXPcsSqH4gDhOjD5cI/b8kjngWgSZbxYh5yVjAwTjO5+hAuPRNiuR70+5RlWSs+U9PVcVcW9Lw==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
@@ -4615,17 +4615,17 @@
} }
}, },
"node_modules/shiki": { "node_modules/shiki": {
"version": "1.24.2", "version": "1.24.4",
"resolved": "https://registry.npmmirror.com/shiki/-/shiki-1.24.2.tgz", "resolved": "https://registry.npmmirror.com/shiki/-/shiki-1.24.4.tgz",
"integrity": "sha512-TR1fi6mkRrzW+SKT5G6uKuc32Dj2EEa7Kj0k8kGqiBINb+C1TiflVOiT9ta6GqOJtC4fraxO5SLUaKBcSY38Fg==", "integrity": "sha512-aVGSFAOAr1v26Hh/+GBIsRVDWJ583XYV7CuNURKRWh9gpGv4OdbisZGq96B9arMYTZhTQkmRF5BrShOSTvNqhw==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@shikijs/core": "1.24.2", "@shikijs/core": "1.24.4",
"@shikijs/engine-javascript": "1.24.2", "@shikijs/engine-javascript": "1.24.4",
"@shikijs/engine-oniguruma": "1.24.2", "@shikijs/engine-oniguruma": "1.24.4",
"@shikijs/types": "1.24.2", "@shikijs/types": "1.24.4",
"@shikijs/vscode-textmate": "^9.3.0", "@shikijs/vscode-textmate": "^9.3.1",
"@types/hast": "^3.0.4" "@types/hast": "^3.0.4"
} }
}, },
@@ -5371,13 +5371,13 @@
} }
}, },
"node_modules/vite": { "node_modules/vite": {
"version": "6.0.3", "version": "6.0.5",
"resolved": "https://registry.npmmirror.com/vite/-/vite-6.0.3.tgz", "resolved": "https://registry.npmmirror.com/vite/-/vite-6.0.5.tgz",
"integrity": "sha512-Cmuo5P0ENTN6HxLSo6IHsjCLn/81Vgrp81oaiFFMRa8gGDj5xEjIcEpf2ZymZtZR8oU0P2JX5WuUp/rlXcHkAw==", "integrity": "sha512-akD5IAH/ID5imgue2DYhzsEwCi0/4VKY31uhMLEYJwPP4TiUp8pL5PIK+Wo7H8qT8JY9i+pVfPydcFPYD1EL7g==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"esbuild": "^0.24.0", "esbuild": "0.24.0",
"postcss": "^8.4.49", "postcss": "^8.4.49",
"rollup": "^4.23.0" "rollup": "^4.23.0"
}, },

View File

@@ -11,7 +11,7 @@
"dependencies": { "dependencies": {
"@codemirror/lang-cpp": "^6.0.2", "@codemirror/lang-cpp": "^6.0.2",
"@codemirror/lang-python": "^6.1.6", "@codemirror/lang-python": "^6.1.6",
"@vueuse/core": "^12.0.0", "@vueuse/core": "^12.2.0",
"@wangeditor-next/editor": "^5.6.19", "@wangeditor-next/editor": "^5.6.19",
"@wangeditor-next/editor-for-vue": "^5.1.14", "@wangeditor-next/editor-for-vue": "^5.1.14",
"axios": "^1.7.9", "axios": "^1.7.9",
@@ -21,7 +21,7 @@
"copy-text-to-clipboard": "^3.2.0", "copy-text-to-clipboard": "^3.2.0",
"date-fns": "^4.1.0", "date-fns": "^4.1.0",
"highlight.js": "^11.11.0", "highlight.js": "^11.11.0",
"naive-ui": "^2.40.3", "naive-ui": "^2.40.4",
"normalize.css": "^8.0.1", "normalize.css": "^8.0.1",
"pinia": "^2.3.0", "pinia": "^2.3.0",
"vue": "^3.5.13", "vue": "^3.5.13",
@@ -31,17 +31,17 @@
}, },
"devDependencies": { "devDependencies": {
"@iconify/vue": "^4.2.0", "@iconify/vue": "^4.2.0",
"@shikijs/markdown-it": "^1.24.2", "@shikijs/markdown-it": "^1.24.4",
"@types/canvas-confetti": "^1.9.0", "@types/canvas-confetti": "^1.9.0",
"@types/node": "^22.10.2", "@types/node": "^22.10.2",
"@vitejs/plugin-vue": "^5.2.1", "@vitejs/plugin-vue": "^5.2.1",
"prettier": "^3.4.2", "prettier": "^3.4.2",
"prettier-plugin-organize-imports": "^4.1.0", "prettier-plugin-organize-imports": "^4.1.0",
"typescript": "5.6.3", "typescript": "~5.6.3",
"unplugin-auto-import": "^0.19.0", "unplugin-auto-import": "^0.19.0",
"unplugin-vue-components": "^0.28.0", "unplugin-vue-components": "^0.28.0",
"unplugin-vue-markdown": "^0.28.0", "unplugin-vue-markdown": "^0.28.0",
"vite": "^6.0.3", "vite": "^6.0.5",
"vue-tsc": "^2.1.10" "vue-tsc": "^2.1.10"
} }
} }

View File

@@ -233,12 +233,14 @@ declare global {
const usePreferredDark: typeof import('@vueuse/core')['usePreferredDark'] const usePreferredDark: typeof import('@vueuse/core')['usePreferredDark']
const usePreferredLanguages: typeof import('@vueuse/core')['usePreferredLanguages'] const usePreferredLanguages: typeof import('@vueuse/core')['usePreferredLanguages']
const usePreferredReducedMotion: typeof import('@vueuse/core')['usePreferredReducedMotion'] const usePreferredReducedMotion: typeof import('@vueuse/core')['usePreferredReducedMotion']
const usePreferredReducedTransparency: typeof import('@vueuse/core')['usePreferredReducedTransparency']
const usePrevious: typeof import('@vueuse/core')['usePrevious'] const usePrevious: typeof import('@vueuse/core')['usePrevious']
const useRafFn: typeof import('@vueuse/core')['useRafFn'] const useRafFn: typeof import('@vueuse/core')['useRafFn']
const useRefHistory: typeof import('@vueuse/core')['useRefHistory'] const useRefHistory: typeof import('@vueuse/core')['useRefHistory']
const useResizeObserver: typeof import('@vueuse/core')['useResizeObserver'] const useResizeObserver: typeof import('@vueuse/core')['useResizeObserver']
const useRoute: typeof import('vue-router')['useRoute'] const useRoute: typeof import('vue-router')['useRoute']
const useRouter: typeof import('vue-router')['useRouter'] const useRouter: typeof import('vue-router')['useRouter']
const useSSRWidth: typeof import('@vueuse/core')['useSSRWidth']
const useScreenOrientation: typeof import('@vueuse/core')['useScreenOrientation'] const useScreenOrientation: typeof import('@vueuse/core')['useScreenOrientation']
const useScreenSafeArea: typeof import('@vueuse/core')['useScreenSafeArea'] const useScreenSafeArea: typeof import('@vueuse/core')['useScreenSafeArea']
const useScriptTag: typeof import('@vueuse/core')['useScriptTag'] const useScriptTag: typeof import('@vueuse/core')['useScriptTag']

View File

@@ -18,6 +18,7 @@ function filterResult(result: Problem) {
submission: result.submission_number, submission: result.submission_number,
rate: getACRate(result.accepted_number, result.submission_number), rate: getACRate(result.accepted_number, result.submission_number),
status: "", status: "",
author: result.created_by.username,
} }
if (result.my_status === null || result.my_status === undefined) { if (result.my_status === null || result.my_status === undefined) {
newResult.status = "not_test" newResult.status = "not_test"

View File

@@ -181,6 +181,14 @@ const baseColumns: DataTableColumn<ProblemFiltered>[] = [
render: (row) => render: (row) =>
h(NSpace, () => row.tags.map((t) => h(NTag, { key: t }, () => t))), h(NSpace, () => row.tags.map((t) => h(NTag, { key: t }, () => t))),
}, },
{
title: renderTableTitle(
"出题者",
"streamline-emojis:smiling-face-with-sunglasses",
),
key: "author",
width: 130,
},
{ {
title: renderTableTitle("提交数", "streamline-emojis:clinking-beer-mugs"), title: renderTableTitle("提交数", "streamline-emojis:clinking-beer-mugs"),
key: "submission", key: "submission",

View File

@@ -159,6 +159,7 @@ export interface ProblemFiltered {
submission: number submission: number
rate: string rate: string
status: "not_test" | "passed" | "failed" status: "not_test" | "passed" | "failed"
author: string
} }
export interface AdminProblemFiltered { export interface AdminProblemFiltered {