|
@@ -74,7 +74,36 @@
|
|
|
<div class="act-info" v-if="actListShow.length">
|
|
|
<div class="info-box" v-if="actListShow[actIndex]?.isJoin">
|
|
|
<el-tabs v-model="actTab" class="demo-tabs">
|
|
|
- <el-tab-pane label="成员信息" name="user">
|
|
|
+ <el-tab-pane label="活动信息" name="info">
|
|
|
+ <el-scrollbar>
|
|
|
+ <div style="margin-bottom: 20px;" class="sk-info">
|
|
|
+ <img :src="actInfo.posterSas" alt="">
|
|
|
+ <p style="text-align: center; font-size: 20px;font-weight: bold; margin: 10px 0;">
|
|
|
+ <span>{{ $tools.formatTime(actInfo.stime, 'yyyy-MM-dd') }}</span>
|
|
|
+ -
|
|
|
+ <span>{{ $tools.formatTime(actInfo.etime, 'yyyy-MM-dd') }}</span>
|
|
|
+ </p>
|
|
|
+ <p>主题:{{ actInfo.subject || '-' }}</p>
|
|
|
+ <p>简介:{{ actInfo.description || '-' }}</p>
|
|
|
+ <p>地点:{{ actInfo.address || '-' }}</p>
|
|
|
+ <p>主办:
|
|
|
+ <span v-for="item in actInfo.zb" :key="item">{{ item || '-' }}</span>
|
|
|
+ </p>
|
|
|
+ <p>承办:
|
|
|
+ <span v-for="item in actInfo.cb" :key="item">{{ item || '-' }}</span>
|
|
|
+ </p>
|
|
|
+ <p>免责声明:{{ actInfo.mzsm || '-' }}</p>
|
|
|
+ <div style="display: flex; margin: 10px;">
|
|
|
+ <p style="min-width: 50px;">附件:</p>
|
|
|
+ <div v-if="actInfo.attachment.length">
|
|
|
+ <p v-for="item in actInfo.attachment" :key="item.blob" @click="onPreview(item)" class="attach-name">{{ item.name }}</p>
|
|
|
+ </div>
|
|
|
+ <span v-else>-</span>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </el-scrollbar>
|
|
|
+ </el-tab-pane>
|
|
|
+ <el-tab-pane label="参与信息" name="user">
|
|
|
<div v-if="!contest && !research && !training">
|
|
|
本次活动未发布模块任务
|
|
|
</div>
|
|
@@ -86,6 +115,23 @@
|
|
|
赛课模块
|
|
|
</p>
|
|
|
<div v-show="skModule">
|
|
|
+ <el-steps :active="contestStep" align-center style="margin: 10px 0;">
|
|
|
+ <el-step v-for="(item, index) in contest.modules" :key="index" :title="skModuleList[index]">
|
|
|
+ <template v-slot:icon>
|
|
|
+ <el-icon v-show="item === 'sign'" size="20"><Edit /></el-icon>
|
|
|
+ <el-icon v-show="item === 'upload'" size="20"><Folder /></el-icon>
|
|
|
+ <el-icon v-show="item === 'review'" size="20"><Finished /></el-icon>
|
|
|
+ <el-icon v-show="item === 'score'" size="20"><CircleCheck /></el-icon>
|
|
|
+ </template>
|
|
|
+ <template v-slot:description>
|
|
|
+ <span>
|
|
|
+ {{ $tools.formatTime(contest[item].stime, 'yyyy-MM-dd') }}
|
|
|
+ -
|
|
|
+ {{ $tools.formatTime(contest[item].etime, 'yyyy-MM-dd') }}
|
|
|
+ </span>
|
|
|
+ </template>
|
|
|
+ </el-step>
|
|
|
+ </el-steps>
|
|
|
<el-alert title="上传作品时间已过" v-show="contest.upload.actState === 'finish'" type="warning" :closable="false" show-icon style="margin-top: 20px;" />
|
|
|
<div class="cipher-box" v-show="contest.sign.type">
|
|
|
<p>队伍名称:{{ cipher.teamName }}</p>
|
|
@@ -215,35 +261,6 @@
|
|
|
</el-table>
|
|
|
</el-scrollbar>
|
|
|
</el-tab-pane>
|
|
|
- <el-tab-pane label="活动信息" name="info">
|
|
|
- <el-scrollbar>
|
|
|
- <div style="margin-bottom: 20px;" class="sk-info">
|
|
|
- <img :src="actInfo.posterSas" alt="">
|
|
|
- <p style="text-align: center; font-size: 20px;font-weight: bold; margin: 10px 0;">
|
|
|
- <span>{{ $tools.formatTime(actInfo.stime, 'yyyy-MM-dd') }}</span>
|
|
|
- -
|
|
|
- <span>{{ $tools.formatTime(actInfo.etime, 'yyyy-MM-dd') }}</span>
|
|
|
- </p>
|
|
|
- <p>主题:{{ actInfo.subject || '-' }}</p>
|
|
|
- <p>简介:{{ actInfo.description || '-' }}</p>
|
|
|
- <p>地点:{{ actInfo.address || '-' }}</p>
|
|
|
- <p>主办:
|
|
|
- <span v-for="item in actInfo.zb" :key="item">{{ item || '-' }}</span>
|
|
|
- </p>
|
|
|
- <p>承办:
|
|
|
- <span v-for="item in actInfo.cb" :key="item">{{ item || '-' }}</span>
|
|
|
- </p>
|
|
|
- <p>免责声明:{{ actInfo.mzsm || '-' }}</p>
|
|
|
- <div style="display: flex; margin: 10px;">
|
|
|
- <p style="min-width: 50px;">附件:</p>
|
|
|
- <div v-if="actInfo.attachment.length">
|
|
|
- <p v-for="item in actInfo.attachment" :key="item.blob" @click="onPreview(item)" class="attach-name">{{ item.name }}</p>
|
|
|
- </div>
|
|
|
- <span v-else>-</span>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- </el-scrollbar>
|
|
|
- </el-tab-pane>
|
|
|
</el-tabs>
|
|
|
</div>
|
|
|
<div class="info-box not-sign" v-else>
|
|
@@ -296,7 +313,7 @@
|
|
|
</template>
|
|
|
|
|
|
<script setup>
|
|
|
-import { Search, Delete, UserFilled, Clock, UploadFilled, CaretBottom, CaretRight, WarnTriangleFilled, DArrowRight, CloseBold, Warning, Filter, Trophy } from '@element-plus/icons-vue'
|
|
|
+import { Search, Delete, UserFilled, Clock, UploadFilled, CaretBottom, CaretRight, WarnTriangleFilled, DArrowRight, CloseBold, Warning, Filter, Trophy, Edit, Folder, Finished, CircleCheck } from '@element-plus/icons-vue'
|
|
|
import { ElMessageBox, ElMessage, FormRules, ElLoading } from 'element-plus'
|
|
|
import { getCurrentInstance, nextTick, onMounted, reactive, ref, toRaw, watch } from 'vue'
|
|
|
import { useStore } from "@/pinia/common"
|
|
@@ -309,7 +326,8 @@ let router = useRouter()
|
|
|
|
|
|
let actIndex = ref(0)
|
|
|
let activeStep = ref(0)
|
|
|
-let actTab = ref('user')
|
|
|
+let contestStep = ref(-1)
|
|
|
+let actTab = ref('info')
|
|
|
let searchName = ref('')
|
|
|
let accept = ref('')
|
|
|
let nowYear = ref('')
|
|
@@ -340,6 +358,7 @@ let scoreData = ref({detailScore: []})
|
|
|
|
|
|
const refUpload = ref(HTMLElement)
|
|
|
const cipher = ref({})
|
|
|
+const skModuleList = ref(['报名', '上传', '评审', '公示'])
|
|
|
|
|
|
let loading = reactive({
|
|
|
lock: true,
|
|
@@ -406,6 +425,10 @@ function getListInfo(info, index) {
|
|
|
res.contest.modules.forEach((item, index) => {
|
|
|
res.contest[item].actState = nowDate < res.contest[item].stime ? 'notStart' : (nowDate > res.contest[item].etime ? 'finish' : 'going')
|
|
|
})
|
|
|
+ let index = res.contest.modules.findIndex(item => {
|
|
|
+ return res.contest[item].actState === 'going'
|
|
|
+ })
|
|
|
+ contestStep.value = index === -1 ? 4 : (!index && res.contest.upload.actState === 'going' ? 1 : index)
|
|
|
contest.value = res.contest
|
|
|
contestScores.value = res.contestScores || []
|
|
|
research.value = res.research
|