This commit is contained in:
2023-01-13 10:54:34 +08:00
parent ab5cb8610b
commit edce7c4cc7
15 changed files with 30 additions and 29 deletions

View File

@@ -1,7 +1,7 @@
<script setup lang="ts">
import Login from "../shared/user/login.vue"
import Signup from "../shared/user/signup.vue"
import Header from "../shared/layout/header.vue"
import Login from "../shared/Login/index.vue"
import Signup from "../shared/Signup/index.vue"
import Header from "../shared/Header/index.vue"
</script>
<template>

View File

@@ -13,14 +13,14 @@ import {
import { Problem, Submission, SubmitCodePayload } from "../../../utils/types"
import { getSubmission, submitCode } from "../../api"
import SubmissionResultTag from "../../components/submission-result-tag.vue"
import SubmissionResultTag from "../../components/SubmissionResultTag.vue"
import { useCodeStore } from "../../stores/code"
const problem = inject<Ref<Problem>>("problem")
const { code } = useCodeStore()
const route = useRoute()
const contestID = <string>route.params.contestID || ""
const contestID = <string>route.params.contestID ?? ""
const submissionId = ref("")
const submission = ref<Submission | null>(null)

View File

@@ -6,8 +6,8 @@ import { submissionExists } from "../../api"
import { TabsPaneContext } from "element-plus"
import Monaco from "../../../shared/monaco/index.vue"
import SubmitPanel from "../components/submit-panel.vue"
import TestcasePanel from "../components/testcase-panel.vue"
import SubmitPanel from "./SubmitPanel.vue"
import TestcasePanel from "./TestcasePanel.vue"
interface Props {
problem: Problem

View File

@@ -1,7 +1,7 @@
<script setup lang="ts">
import Editor from "./components/editor.vue"
import ProblemContent from "./components/problem-content.vue"
import ProblemInfo from "./components/problem-info.vue"
import Editor from "./components/Editor.vue"
import ProblemContent from "./components/ProblemContent.vue"
import ProblemInfo from "./components/ProblemInfo.vue"
import { getProblem } from "../api"
import { isDesktop, isMobile } from "../../utils/breakpoints"

View File

@@ -20,19 +20,19 @@ const total = ref(0)
const { data: tags } = getProblemTagList()
const query = reactive({
keyword: (route.query.keyword as string) || "",
difficulty: route.query.difficulty || "",
tag: route.query.tag || "",
page: parseInt(<string>route.query.page) || 1,
limit: parseInt(<string>route.query.limit) || 10,
keyword: route.query.keyword ?? "",
difficulty: route.query.difficulty ?? "",
tag: route.query.tag ?? "",
page: parseInt(<string>route.query.page) ?? 1,
limit: parseInt(<string>route.query.limit) ?? 10,
})
async function listProblems() {
query.keyword = (route.query.keyword as string) || ""
query.difficulty = route.query.difficulty || ""
query.tag = route.query.tag || ""
query.page = parseInt(<string>route.query.page) || 1
query.limit = parseInt(<string>route.query.limit) || 10
query.keyword = route.query.keyword ?? ""
query.difficulty = route.query.difficulty ?? ""
query.tag = route.query.tag ?? ""
query.page = parseInt(<string>route.query.page) ?? 1
query.limit = parseInt(<string>route.query.limit) ?? 10
if (query.page < 1) query.page = 1
const offset = (query.page - 1) * query.limit

View File

@@ -1,7 +1,7 @@
<script setup lang="ts">
import { FormInstance } from "element-plus"
import { useSignupStore } from "../../oj/stores/signup"
import { login } from "../../shared/api"
import { login } from "../api"
import { useLoginStore } from "../store/login"
import { useUserStore } from "../store/user"
@@ -56,15 +56,16 @@ function goSignup() {
label-position="right"
label-width="70px"
>
<el-form-item label="用户名" required prop="username" name="username">
<el-input v-model="form.username"></el-input>
<el-form-item label="用户名" required prop="username">
<el-input v-model="form.username" name="username"></el-input>
</el-form-item>
<el-form-item label="密码" required prop="password" name="password">
<el-form-item label="密码" required prop="password">
<el-input
v-model="form.password"
type="password"
show-password
@change="submit"
name="password"
></el-input>
</el-form-item>
<el-form-item>

View File

@@ -33,8 +33,8 @@
</template>
<script setup lang="ts">
import Resizer from "./resizer.vue"
import Pane from "./pane.vue"
import Resizer from "./Resizer.vue"
import Pane from "./Pane.vue"
import { computed, ref } from "vue"
import { classNameToArray } from "element-plus/es/utils"

View File

@@ -8,7 +8,7 @@ import { getUserInfo } from "../api"
export const useUserStore = defineStore("user", () => {
const { data: profile, isFinished, execute } = getUserInfo("")
const user = computed(() => profile.value.user || {})
const user = computed(() => profile?.value?.user ?? {})
const isAuthed = computed(() => !!user.value.email)
const isAdminRole = computed(
() =>

View File

@@ -5,11 +5,11 @@ import { Code } from "./types"
const http = axios.create({ baseURL: "https://judge0api.hyyz.izhai.net" })
function encode(str: string) {
return btoa(unescape(encodeURIComponent(str || "")))
return btoa(unescape(encodeURIComponent(str ?? "")))
}
function decode(bytes: string) {
let escaped = escape(atob(bytes || ""))
let escaped = escape(atob(bytes ?? ""))
try {
return decodeURIComponent(escaped)
} catch (e) {