Damon 4 년 전
부모
커밋
22531a5107

BIN
src/assets/carousel-SE2.png


BIN
src/assets/carousel-java.png


+ 17 - 2
src/components/TestCard.vue

@@ -25,7 +25,7 @@
         <el-tag v-else-if="state==='CLOSED'" size="small" type="info">已关闭</el-tag>
       </el-col>
     </el-row>
-
+<!--    {{testVO}}-->
     <el-row class="course" v-if="course!==''">
       {{ course }}
     </el-row>
@@ -45,7 +45,8 @@
 </template>
 
 <script>
-import { ElMessageBox } from "element-plus";
+import { ElMessage, ElMessageBox } from "element-plus";
+import store from "@/store";
 
 export default {
   name: "TestCard",
@@ -58,6 +59,9 @@ export default {
     };
   },
   computed: {
+    isLogin() {
+      return store.state.user.token;
+    },
     type() {
       if (this.testVO.examId) {
         return "eval";
@@ -143,6 +147,17 @@ export default {
       return Y + M + D + h + m;
     },
     async toTestInfo() {
+      if (!this.isLogin) {
+        ElMessage({
+          showClose: true,
+          message: "请先登录",
+          type: "warning",
+          duration: 1000,
+        });
+        await this.$router.push({ name: "Auth", params: { login_to: "/portal" } });
+        return;
+      }
+
       let messageBoxContent = "";
       let messageBoxTitle = "";
       let confirmButtonText = "";

+ 0 - 0
src/enums/course.js


+ 0 - 0
src/enums/test.js


+ 3 - 2
src/views/CoursePage/CourseDetail.vue

@@ -196,10 +196,10 @@
                   <el-row>{{ message.messages[message.mainId].content }}</el-row>
                 </div>
                 <div v-for="(key,child) in message.messages" :key="'message'+key" class="comment-child">
-                  <el-row v-if="child.targetType==='COURSE'" style="font-weight: bold; margin-bottom: 10px">
+                  <el-row v-if="!child.targetType==='COURSE'" style="font-weight: bold; margin-bottom: 10px">
                     {{ child.sender.name }}
                   </el-row>
-                  <el-row v-if="child.targetType==='COURSE'">
+                  <el-row v-if="!child.targetType==='COURSE'">
                     @{{ message.messages[child.targetId].sender.name }}:{{ message.messages[child.targetId].content }}
                   </el-row>
                 </div>
@@ -715,6 +715,7 @@ export default {
           this.$apis.getCommentsByCourseId(this.$route.params.id)
             .then(res => {
               this.commentTree = res.data.data;
+              console.log(this.commentTree);
             })
             .catch();
           break;

+ 3 - 3
src/views/CoursePage/CoursePage.vue

@@ -1,7 +1,7 @@
 <template>
   <el-row id="course-page-body">
     <el-col :span="3">
-      <el-menu background-color="#f8f9fb" default-active="1" style="position: fixed; width: 180px;"
+      <el-menu background-color="#f8f9fb" default-active="1" style="position: fixed;"
                @select="handleSelect">
         <el-menu-item index="0">
           <el-icon>
@@ -50,12 +50,12 @@
 </template>
 
 <script>
-import {Back, Document, DocumentChecked} from "@element-plus/icons-vue";
+import { Back, Document, DocumentChecked } from "@element-plus/icons-vue";
 import CourseCard from "@/components/CourseCard";
 
 export default {
   name: "CoursePage",
-  components: {Back, CourseCard, Document, DocumentChecked},
+  components: { Back, CourseCard, Document, DocumentChecked },
   data() {
     return {
       activeIndex: "1",

+ 1 - 1
src/views/HomePage/HomePage.vue

@@ -1,7 +1,7 @@
 <template>
   <el-row id="home-page-body">
     <el-col :span="4">
-      <el-menu background-color="#f8f9fb" default-active="1" @select="handleSelect">
+      <el-menu background-color="#f8f9fb" default-active="1" @select="handleSelect" style="position: fixed;">
         <el-menu-item index="0">
           <el-icon>
             <Back/>

+ 1 - 1
src/views/ManagePage/ManagePage.vue

@@ -1,7 +1,7 @@
 <template>
   <el-row id="manage-page-body">
     <el-col :span="3">
-      <el-menu background-color="#f8f9fb" default-active="1" style="width: 180px; z-index: -1;"
+      <el-menu background-color="#f8f9fb" default-active="1" style="position: fixed;"
                @select="handleSelect">
         <el-menu-item index="0">
           <el-icon>

+ 3 - 1
src/views/MessagePage/MessagePage.vue

@@ -1,7 +1,7 @@
 <template>
   <el-row id="message-page-body">
     <el-col :span="4">
-      <el-menu background-color="#f8f9fb" default-active="1" @select="handleSelect">
+      <el-menu background-color="#f8f9fb" default-active="1" @select="handleSelect" style="position: fixed;">
         <el-menu-item index="0">
           <el-icon>
             <Back/>
@@ -63,6 +63,8 @@ export default {
   async created() {
     this.myUnReadAnnouncement = (await this.$apis.getUnreadAnnouncements()).data.data;
     this.myUnReadMessage = (await this.$apis.getUnreadMessages()).data.data;
+    // todo
+    // document.querySelector(".message-page-main").scrollIntoView({ behavior: "smooth" });
   },
   methods: {
     handleSelect(index) {

+ 1 - 1
src/views/PortalPage/PortalPage.vue

@@ -127,7 +127,7 @@
           <ElButton plain round type="primary" @click="toTest">查看全部测试</ElButton>
         </div>
         <el-divider class="portal-card-divider"/>
-        <el-tabs v-model="activeTestPaneName" @tab-click="changeTestPane">
+        <el-tabs v-model="activeTestPaneName" @tab-click="changeTestPane" style="min-height: 300px;">
           <el-tab-pane label="评测题" name="eval">
             <div class="portal-card-content">
               <TestCard v-for="item in showExampleEvalTestList" :key="item.id" :testVO="item"/>

+ 3 - 3
src/views/PortalPage/components/CarouselCard.vue

@@ -1,7 +1,7 @@
 <template>
   <el-carousel id="carousel-card-body" :interval="4000" height="180px" type="card">
     <el-carousel-item v-for="item in contents" :key="item">
-      <img :src=item alt="err" style="object-fit: cover;height: 180px">
+      <img :src=item alt="err" style="object-fit: cover;object-position:top;height: 180px; width: 600px">
     </el-carousel-item>
   </el-carousel>
 </template>
@@ -12,8 +12,8 @@ export default {
   data() {
     return {
       contents: [
-        require("@/assets/seec-banner.png"),
-        require("@/assets/seec-banner.png"),
+        require("@/assets/carousel-java.png"),
+        require("@/assets/carousel-SE2.png"),
         require("@/assets/seec-banner.png"),
       ],
     };

+ 9 - 9
src/views/TaskPage/TaskPage.vue

@@ -100,19 +100,19 @@ const options = [
       },
       {
         value: "EVAL_NOT_STARTED",
-        label: "未开始评测",
+        label: "未开始评测",
       },
       {
         value: "EVAL_RUNNING_IN",
-        label: "已参加评测",
+        label: "已参加评测",
       },
       {
         value: "EVAL_RUNNING_NOT",
-        label: "未参加评测",
+        label: "未参加评测",
       },
       {
         value: "EVAL_FINISHED",
-        label: "已结束评测",
+        label: "已结束评测",
       },
     ],
   },
@@ -125,19 +125,19 @@ const options = [
       },
       {
         value: "CODER_NOT_STARTED",
-        label: "未开始代码",
+        label: "未开始代码",
       },
       {
         value: "CODER_RUNNING_IN",
-        label: "已参加代码",
+        label: "已参加代码",
       },
       {
         value: "CODER_RUNNING_NOT",
-        label: "未参加代码",
+        label: "未参加代码",
       },
       {
         value: "CODER_FINISHED",
-        label: "已结束代码",
+        label: "已结束代码",
       },
     ],
   },
@@ -283,7 +283,7 @@ export default {
 
 .task-content {
   display: grid;
-  grid-template-columns: 1fr;
+  grid-template-columns: 1fr 1fr 1fr 1fr;
   grid-gap: 10px;
 }
 </style>

+ 8 - 9
src/views/TestPage/TestPage.vue

@@ -1,7 +1,7 @@
 <template>
   <el-row id="test-page-body">
     <el-col :span="3">
-      <el-menu background-color="#f8f9fb" default-active="1" style="position: fixed; width: 180px;"
+      <el-menu background-color="#f8f9fb" default-active="1" style="position: fixed;"
                @select="handleSelect">
         <el-menu-item index="0">
           <el-icon>
@@ -12,7 +12,7 @@
         <el-menu-item index="1">
           <el-icon>
             <Document/>
-<!--            todo 图标更改,数据要改-->
+            <!--            todo 图标更改,数据要改-->
           </el-icon>
           <span style="padding-left: 20px">公开测试</span>
         </el-menu-item>
@@ -35,10 +35,10 @@
         <div v-if="this.activeIndex === '1'">
           <el-tabs v-model="activeTestPaneName" style="width: 100%">
             <el-tab-pane class="test-page-main" label="评测题" name="eval">
-              <EvalCard v-for="item in evalExamList" :key="item.id" :examVO="item"/>
+              <TestCard v-for="item in evalExamList" :key="item.id" :testVO="item"/>
             </el-tab-pane>
             <el-tab-pane class="test-page-main" label="代码题" name="coder">
-              <CoderCard v-for="item in coderExamList" :key="item.id" :coderVO="item"/>
+              <TestCard v-for="item in coderExamList" :key="item.id" :testVO="item"/>
             </el-tab-pane>
           </el-tabs>
         </div>
@@ -46,10 +46,10 @@
         <div v-if="this.activeIndex === '2' && isStudent">
           <el-tabs v-model="activeTestPaneName_my" style="width: 100%">
             <el-tab-pane class="test-page-main" label="评测题" name="eval">
-              <EvalCard v-for="item in evalExamList_my" :key="item.id" :examVO="item"/>
+              <TestCard v-for="item in evalExamList_my" :key="item.id" :testVO="item"/>
             </el-tab-pane>
             <el-tab-pane class="test-page-main" label="代码题" name="coder">
-              <CoderCard v-for="item in coderExamList_my" :key="item.id" :coderVO="item"/>
+              <TestCard v-for="item in coderExamList_my" :key="item.id" :testVO="item"/>
             </el-tab-pane>
           </el-tabs>
         </div>
@@ -67,13 +67,12 @@
 </template>
 
 <script>
-import EvalCard from "@/components/EvalCard";
-import CoderCard from "@/components/CoderCard";
 import { Back, Document, DocumentChecked } from "@element-plus/icons-vue";
+import TestCard from "@/components/TestCard";
 
 export default {
   name: "TestPage",
-  components: { Back, Document, DocumentChecked, CoderCard, EvalCard, },
+  components: { TestCard, Back, Document, DocumentChecked, },
   data() {
     return {
       activeIndex: "1",