提交 711b92b3 authored 作者: 王鹏飞's avatar 王鹏飞

fix: #3155

上级 161e358a
<script setup lang="ts"> <script setup lang="ts">
import type { Contest } from '../types' import type { Contest } from '../types'
import dayjs from 'dayjs'
import { contestMode } from '@/utils/dictionary' import { contestMode } from '@/utils/dictionary'
interface Props { interface Props {
data: Contest data: Contest
} }
const props = defineProps<Props>() const props = defineProps<Props>()
const router = useRouter()
const isMy = $computed(() => { const isMy = $computed(() => {
return !!props.data.login_id return !!props.data.login_id
}) })
const modeText = $computed(() => { const modeText = $computed(() => {
return contestMode[props.data.mode] return contestMode[props.data.mode]
}) })
// 是否可以训练
const canTrain = $computed(() => {
return dayjs().isBefore(dayjs(parseInt(props.data.end_range) * 1000))
})
// 是否可以报名
const canJoin = $computed(() => {
return dayjs().isBefore(dayjs(parseInt(props.data.apply_expiration_date) * 1000))
})
// 我要报名
function handleJoin() {
router.push({ path: '/student/contest/join', query: { id: props.data.id, name: props.data.name } })
}
</script> </script>
<template> <template>
...@@ -22,18 +38,20 @@ const modeText = $computed(() => { ...@@ -22,18 +38,20 @@ const modeText = $computed(() => {
<div class="contest-item-main__inner"> <div class="contest-item-main__inner">
<!-- <img :src="data.logo" class="logo" /> --> <!-- <img :src="data.logo" class="logo" /> -->
<div class="cover"> <div class="cover">
<ul class="info-list" v-if="isMy"> <template v-if="isMy">
<ul class="info-list">
<li>姓名:{{ data.student_name }}</li> <li>姓名:{{ data.student_name }}</li>
<li>参赛ID:{{ data.login_id }}</li> <li>参赛ID:{{ data.login_id }}</li>
<li>参赛形式:{{ modeText }}</li> <li>参赛形式:{{ modeText }}</li>
<li>所属学校:{{ data.org_name }}</li> <li>所属学校:{{ data.org_name }}</li>
</ul> </ul>
<router-link :to="`/student/contest/lab/${data.id}?name=${data.name}`" v-if="isMy"> <router-link :to="`/student/contest/lab/${data.id}?name=${data.name}`" v-if="canTrain">
<el-button round type="primary">我要训练</el-button> <el-button round type="primary">我要训练</el-button>
</router-link> </router-link>
<router-link :to="{ path: '/student/contest/join', query: { id: data.id, name: data.name } }" v-else> </template>
<el-button round type="primary">我要报名</el-button> <template v-else>
</router-link> <el-button round :disabled="!canJoin" type="primary" @click="handleJoin">我要报名</el-button>
</template>
</div> </div>
</div> </div>
</div> </div>
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论