Przeglądaj źródła

样式调整 && 我的活动显示进度

XW 1 rok temu
rodzic
commit
a6f83c701d

+ 55 - 32
Contest/contest.client/src/view/myactivity/MyActivity.vue

@@ -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