use ??.
This commit is contained in:
@@ -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>
|
||||
|
||||
@@ -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)
|
||||
@@ -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
|
||||
|
||||
@@ -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"
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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>
|
||||
@@ -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"
|
||||
|
||||
|
||||
@@ -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(
|
||||
() =>
|
||||
|
||||
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user