16 Komitmen cebe63fd58 ... e93ca66636

Pembuat SHA1 Pesan Tanggal
  mjh e93ca66636 coder测试页面样式修改 3 tahun lalu
  mjh 2b8b9a1346 Merge branch 'master' into seec 3 tahun lalu
  StackWwf 428d34ddde feat[wwf]:门户eaxm详情等UI逻辑修改 3 tahun lalu
  yhd12345 d4b41ab0b4 fix: 修复eval题目数量无法显示bug 3 tahun lalu
  yhd12345 8f20d00f90 fix: 修复学生eval测试是否完成bug 3 tahun lalu
  yhd12345 b006fc720a UI优化: eval学生页面初步优化 3 tahun lalu
  yhd12345 9203737ead fix: 修复eval学生页面跳转bug 3 tahun lalu
  mjh b6ce5ff356 添加coder考试 停止运行的功能 3 tahun lalu
  181250114 3470516d77 Merge remote-tracking branch 'origin/seec' into seec 3 tahun lalu
  181250114 a41ec0d1cb UI优化: 个人页面优化完成 3 tahun lalu
  181250114 d09a1d5539 UI优化: 小组页面优化完成 3 tahun lalu
  181250114 2ff6fff635 UI优化: 小组页面局部优化 3 tahun lalu
  yhd12345 3743b1a525 fix: 修复任务页面eval测试进不去的bug 3 tahun lalu
  yhd12345 c9f3a600a6 fix: 修复任务页面eval测试进不去的bug 3 tahun lalu
  yhd12345 6704f57936 Merge remote-tracking branch 'origin/seec' into seec 3 tahun lalu
  yhd12345 c4e4bbd19a feat: 支持根据知识点和标签查找题目 3 tahun lalu

+ 5 - 0
src/api/eval.js

@@ -40,6 +40,10 @@ function getExamQuestions(examId) {
   return axios.get(`${prefix}/exam/${examId}/questions`);
 }
 
+function getExamCodeQuestions(examId){
+  return axios.get(`${prefix}/exam/${examId}/codeQuestions`);
+}
+
 function getSamplePaper() {
   return axios.get(`${prefix}/exam/sample`);
 }
@@ -122,6 +126,7 @@ const evalAPIs = {
   getStudentEvalExamsByCourseId,
   createEvalExam,
   getExamQuestions,
+  getExamCodeQuestions,
   getSamplePaper,
   getQuestionInfo,
   setExamPaperFromSample,

+ 1 - 1
src/router/index.js

@@ -127,7 +127,7 @@ const routes = [
     component: () =>import("../views/EvalPage/teacherExamDetails.vue")
   },
   {
-    path: "/evalExam/student/details",
+    path: "/evalExam/:examId/student/details",
     name: "student-examDetails",
     component: () =>import("../views/EvalPage/studentExamDetails.vue")
   },

+ 30 - 14
src/views/CoderPage/ExamDetail.vue

@@ -213,19 +213,24 @@
             </template>
           </el-table-column>
           <el-table-column prop="score" label="成绩" width="150"/>
-          <el-table-column label="操作" width="150">
+<!--          <el-table-column label="操作" width="150">-->
+<!--            <template #default="scope">-->
+<!--              <el-button-->
+<!--                type="text"-->
+<!--                @click="-->
+<!--                    $router.push(-->
+<!--                    {-->
+<!--                      path: `/exam/${$route.params.examId}/commit/${scope.row.id}`-->
+<!--                    })-->
+<!--                "-->
+<!--              >-->
+<!--                详情-->
+<!--              </el-button>-->
+<!--            </template>-->
+<!--          </el-table-column>-->
+          <el-table-column label="详情" type="expand">
             <template #default="scope">
-              <el-button
-                type="text"
-                @click="
-                    $router.push(
-                    {
-                      path: `/exam/${$route.params.examId}/commit/${scope.row.id}`
-                    })
-                "
-              >
-                详情
-              </el-button>
+              <CommitBoard :commit-id="scope.row.id" :exam-id="$route.params.examId"></CommitBoard>
             </template>
           </el-table-column>
         </el-table>
@@ -414,15 +419,18 @@ import {
 } from "@/utils/coder-utils";
 import {mapGetters} from "vuex";
 import PageHeader from "../../components/PageHeader.vue";
+import CommitBoard from "@/views/CoderPage/ResultPage/CommitPage/components/CommitBoard.vue";
 import Echarts from "@/views/CoderPage/ResultPage/Echarts.vue";
 import {ElMessage} from "element-plus";
 import Clipboard from "clipboard";
+import colorUtil from "@/utils/color";
 
 export default {
   name: "ExamDetail",
   components: {
     PageHeader,
-    Echarts
+    Echarts,
+    CommitBoard
   },
   props: {},
   data() {
@@ -490,6 +498,9 @@ export default {
     };
   },
   computed: {
+    colorUtil() {
+      return colorUtil;
+    },
     ...mapGetters([
       "isStudentGroup",
       "isTeacherGroup",
@@ -761,7 +772,7 @@ export default {
     //跳转到具体结果信息页
     jumpToResultDetail(resultId) {
       this.$router.push(`${this.$route.path}/result/${resultId}`);
-    }
+    },
   }
 };
 </script>
@@ -817,4 +828,9 @@ export default {
 //  color: black;
 //  border-bottom: 1px solid #afaaaa;
 //}
+
+:deep(.el-table__expanded-cell[class*=cell]){
+  padding: 0;
+  box-shadow: inset 0px 0px 5px 0px var(--el-color-info);
+}
 </style>

+ 13 - 8
src/views/CoderPage/ResultPage/CommitPage/RecordPage/RecordDetail.vue

@@ -22,9 +22,9 @@
               查看控制台输出
             </el-button>
           </template>
-          <el-button @click="getBack" style="border: none;background: none;">
-            <el-icon :size="22"><Back /></el-icon>
-          </el-button>
+<!--          <el-button @click="getBack" style="border: none;background: none;">-->
+<!--            <el-icon :size="22"><Back /></el-icon>-->
+<!--          </el-button>-->
           <span style="font-size: 36px;font-family: 'Inter',sans-serif">运行详情</span>
         </page-header>
       </template>
@@ -95,7 +95,14 @@ export default {
   name: "RecordDetail",
   components: {PageHeader},
   props: {
-
+    examId:{
+      type: Number,
+      required: true
+    },
+    recordId:{
+      type: Number,
+      required: true
+    }
   },
   data() {
     return {
@@ -123,8 +130,7 @@ export default {
   },
   methods: {
     fetchData() {
-      const {recordId} = this.$route.params;
-      this.$apis.getRecordByRecordId(recordId)
+      this.$apis.getRecordByRecordId(this.recordId)
           .then(_res => {
             this.record = _res.data.res;
           }).catch(_err => {
@@ -132,8 +138,7 @@ export default {
       });
     },
     checkConsole() {
-      const {examId} = this.$route.params;
-      this.$apis.getExamIsShownForStu(examId)
+      this.$apis.getExamIsShownForStu(this.examId)
           .then(_res => {
             this.isConsoleOutputShownForStu = _res.data?.res;
           }).catch(_err => {

+ 46 - 27
src/views/CoderPage/ResultPage/CommitPage/components/CommitBoard.vue

@@ -1,29 +1,29 @@
 <template>
-  <el-descriptions class="commit-description">
-    <el-descriptions-item
-        label-class-name="label-bold"
-        label="编号:">{{ commit.id }}</el-descriptions-item>
-    <el-descriptions-item
-        :width="600"
-        label-class-name="label-bold"
-        label="提交时间:">{{ formatTimestamp(commit.createdAt) }}</el-descriptions-item>
-    <el-descriptions-item
-        :width="200"
-        label-class-name="label-bold"
-        label="分数:">{{ commit.score }}</el-descriptions-item>
-    <el-descriptions-item
-        label-class-name="label-bold"
-        label="Git Commit ID:" :span="2">{{ commit.hash }}</el-descriptions-item>
-  </el-descriptions>
+<!--  <el-descriptions class="commit-description">-->
+<!--    <el-descriptions-item-->
+<!--        label-class-name="label-bold"-->
+<!--        label="编号:">{{ commit.id }}</el-descriptions-item>-->
+<!--    <el-descriptions-item-->
+<!--        :width="600"-->
+<!--        label-class-name="label-bold"-->
+<!--        label="提交时间:">{{ formatTimestamp(commit.createdAt) }}</el-descriptions-item>-->
+<!--    <el-descriptions-item-->
+<!--        :width="200"-->
+<!--        label-class-name="label-bold"-->
+<!--        label="分数:">{{ commit.score }}</el-descriptions-item>-->
+<!--    <el-descriptions-item-->
+<!--        label-class-name="label-bold"-->
+<!--        label="Git Commit ID:" :span="2">{{ commit.hash }}</el-descriptions-item>-->
+<!--  </el-descriptions>-->
 
   <el-card
-      class="son-card"
-      style="background: none; box-shadow:none;border: none;">
-    <template #header>
-      <page-header>
-        <span style="font-size: 24px;font-family: 'Inter',sans-serif">提交列表</span>
-      </page-header>
-    </template>
+      class="son-card" border
+      style="background:none ; box-shadow: none; border: none">
+<!--    <template #header>-->
+<!--      <page-header>-->
+<!--        <span style="font-size: 24px;font-family: 'Inter',sans-serif;margin-left: 10px">提交列表</span>-->
+<!--      </page-header>-->
+<!--    </template>-->
     <el-table :data="commit.records">
       <el-table-column label="题目">
         <template #default="scope">
@@ -43,7 +43,7 @@
         <template #default="scope">
           <el-button
               type="text"
-              @click="$router.push(`${$route.path}/record/${scope.row.id}`)"
+              @click="this.openRecordDetail(scope.row.id)"
           >详情</el-button>
           <el-divider direction="vertical"/>
           <el-button type="text" class="stop-record-button" :disabled="scope.row.status!==`RUNNING`"
@@ -55,19 +55,28 @@
     </el-table>
   </el-card>
 
+  <el-dialog width="70%" v-model="recordDetailVisible" title="运行详情">
+    <RecordDetail :exam-id="this.examId" :record-id="this.selectedRecordId"></RecordDetail>
+  </el-dialog>
+
 </template>
 
 <script>
 import {formatTimestamp, buildStatusToTagType, buildStatusToTagContent} from "@/utils/coder-utils";
 import PageHeader from "@/views/ProblemPage/components/PageHeader.vue";
+import RecordDetail from "@/views/CoderPage/ResultPage/CommitPage/RecordPage/RecordDetail";
 
 export default {
   name: "CommitBoard",
-  components: {PageHeader},
+  components: {RecordDetail},
   props: {
     commitId: {
       type: Number,
       required: true
+    },
+    examId:{
+      type: Number,
+      required: true
     }
   },
   data() {
@@ -76,7 +85,9 @@ export default {
       dialog: {
         stop: -1
       },
-      loading: false
+      loading: false,
+      recordDetailVisible:false,
+      selectedRecordId:0
     };
   },
   mounted() {
@@ -87,12 +98,20 @@ export default {
       this.$apis.getCommitByCommitId(this.commitId)
           .then(_res => {
             this.commit = _res.data.res;
-            console.log(this.commit);
+            console.log("commit",this.commit);
           }).catch(_err => {
         console.log(_err);
 
       });
     },
+    openRecordDetail(id){
+      console.log("jumpToRecordDetail!");
+      this.selectedRecordId=id;
+      console.log("examId",this.examId);
+      console.log("recordId",this.selectedRecordId);
+      this.recordDetailVisible=true;
+      // this.$router.push(`${this.$route.path}/commit/${this.commitId}/record/${id}`);
+    },
     formatTimestamp,
     buildStatusToTagType,
     buildStatusToTagContent,

+ 1 - 3
src/views/CourseDetailPage/tabs/TaskTab.vue

@@ -551,9 +551,8 @@ export default {
         } else {
           _this.$router.push({
             name: "student-examDetails",
-            query: {
+            params: {
               examId: task["examId"],
-              isJoined: task["isJoined"]
             }
           });
         }
@@ -652,7 +651,6 @@ export default {
     problemTypeToTagContent,
 
     handleAddEvalClick() {
-      // window.open("https://eval.seec.seecoder.cn/teacher/created-exams?id_token=" + this.$store.state.user.token);
       this.evalExamDialog = true;
     },
 

+ 30 - 43
src/views/EvalPage/QuestionList.vue

@@ -40,8 +40,6 @@
         <span style="font-size: 20px">试题列表</span>
         <el-divider></el-divider>
         <el-row>
-          <el-col :span="8"></el-col>
-          <el-col :span="8"></el-col>
           <el-col :span="8">
             <el-input
                 v-model="stem"
@@ -57,37 +55,37 @@
               </template>
             </el-input>
           </el-col>
-<!--          <el-col :span="8">-->
+          <el-col :span="8">
 
-<!--            <el-input-->
-<!--                v-model="tags"-->
-<!--                class="w-50 m-2"-->
-<!--                placeholder="根据标签查找"-->
-<!--                size="small"-->
-<!--                @input="onSearch"-->
-<!--            >-->
-<!--            <template #prefix>-->
-<!--              <el-icon>-->
-<!--                <Search />-->
-<!--              </el-icon>-->
-<!--            </template>-->
-<!--            </el-input>-->
-<!--          </el-col>-->
-<!--          <el-col :span="8">-->
-<!--            <el-input-->
-<!--                v-model="knowledgeName"-->
-<!--                class="w-50 m-2"-->
-<!--                placeholder="根据关键词查找"-->
-<!--                size="small"-->
-<!--                @input="onSearch"-->
-<!--            >-->
-<!--              <template #prefix>-->
-<!--                <el-icon>-->
-<!--                  <Search />-->
-<!--                </el-icon>-->
-<!--              </template>-->
-<!--            </el-input>-->
-<!--          </el-col>-->
+            <el-input
+                v-model="tags"
+                class="w-50 m-2"
+                placeholder="根据标签查找"
+                size="small"
+                @input="onSearch"
+            >
+            <template #prefix>
+              <el-icon>
+                <Search />
+              </el-icon>
+            </template>
+            </el-input>
+          </el-col>
+          <el-col :span="8">
+            <el-input
+                v-model="knowledgeName"
+                class="w-50 m-2"
+                placeholder="根据关键词查找"
+                size="small"
+                @input="onSearch"
+            >
+              <template #prefix>
+                <el-icon>
+                  <Search />
+                </el-icon>
+              </template>
+            </el-input>
+          </el-col>
         </el-row>
         <el-table ref="questionsTable" :data="questions" :row-key="getRowKeys" style="width: 100%"
                   @select="handleSelect" @select-all="handleSelectAll">
@@ -164,9 +162,6 @@ export default {
   },
   methods: {
     fetchData() {
-      console.log(this.stem);
-      console.log(this.tags);
-      console.log(this.knowledgeName);
       this.$apis.getQuestionList(
           {pageSize: this.pageSize, pageNum: this.pageNum},
           this.stem,
@@ -184,14 +179,8 @@ export default {
       });
     },
     deleteItem(index,item) {
-      console.log(item);
-      console.log(this.selectedQuestions);
-      // this.selectedQuestions = this.selectedQuestions.filter(
-      //     (val) => val.id !== item.id
-      // );
       this.selectedQuestions.splice(index,1);
       this.$refs.questionsTable.toggleRowSelection(item, false);
-      console.log(this.selectedQuestions);
     },
     increasePoints(item) {
       let selectedIndex = this.selectedQuestions.indexOf(item);
@@ -255,8 +244,6 @@ export default {
       this.selectedQuestions.forEach((val) => {
         idAndScore.set(val.id, val.score);
       });
-      console.log("submit");
-      console.log(idAndScore);
       this.$apis.setExamPaperQuestions(this.examId, Object.fromEntries(idAndScore)).then(() => {
         this.selectQuestionsSuccess = true;
         ElMessage({

+ 103 - 82
src/views/EvalPage/studentExamDetails.vue

@@ -1,12 +1,12 @@
 <template>
   <el-row>
     <el-col :span="20" class="box">
-      <el-card class="box-card" v-if="this.examInfo">
+      <el-card class="box-card" v-if="examInfo">
         <span>评测详情</span>
         <el-divider></el-divider>
         <template #header>
           <div class="card-header">
-            <el-tooltip v-if="this.examInfo.isPublic" class="box-item" content="无需邀请码即可加入" placement="top"
+            <el-tooltip v-if="examInfo.isPublic" class="box-item" content="无需邀请码即可加入" placement="top"
                         effect="dark">
               <el-icon>
                 <Unlock/>
@@ -17,62 +17,62 @@
                 <Lock/>
               </el-icon>
             </el-tooltip>
-            <span style="font-size: 20px">评测「{{ this.examInfo.examName }}」</span>
-            <el-tag class="ml-2" :type="statusToType(state)">{{ state }}</el-tag>
-            <el-tag v-if="this.examInfo.isFinished" class="ml-2" type="info">已完成</el-tag>
+            <span style="font-size: 20px">评测「{{ examInfo.examName }}」</span>
+            <el-tag class="ml-2" :type="statusType">{{ state }}</el-tag>
+            <el-tag v-if="isFinished" class="ml-2" type="info">已完成</el-tag>
             <el-button
               v-if="!isJoined && (state === '未开始' || state === '进行中')"
-              :disabled="this.isJoined"
+              :disabled="isJoined"
               type="primary"
               style="float: right"
               @click="onJoinExam">
               报名参加
             </el-button>
             <el-button
-              v-if="this.isJoined && state === '未开始'"
-              :disabled="this.isJoined"
+              v-if="isJoined && state === '未开始'"
+              :disabled="isJoined"
               type="primary"
               style="float: right">
               等待加入
             </el-button>
             <el-button
-              v-if="this.isJoined && state === '进行中' && !this.examInfo.isFinished"
+              v-if="isJoined && state === '进行中' && !isFinished"
               type="success"
               style="float: right"
               @click="onStartExam">
               开始评测
             </el-button>
             <el-button
-              v-if="this.isJoined && (state === '已结束' || this.examInfo.isFinished)"
+              v-if="isJoined && (state === '已结束' || isFinished)"
               style="float: right"
               @click="onOpenResult">
               结果报告
             </el-button>
           </div>
         </template>
-        <el-row>评测ID: {{ this.examInfo.examId }}</el-row>
+        <el-row>评测ID: {{ examId }}</el-row>
         <el-row>
           <el-col :span="12">
-            所属课程: {{ this.courseInfo.name }}
+            所属课程: {{ courseInfo.name }}
           </el-col>
           <el-col :span="12">
-            监考:{{ this.examInfo.antiCheating ? "是" : "否" }}
+            监考:{{ examInfo.antiCheating ? "是" : "否" }}
           </el-col>
         </el-row>
         <el-row>
           <el-col :span="12">
-            职位: {{ this.examInfo.position }}
+            职位: {{ examInfo.position }}
           </el-col>
           <el-col :span="12">
-            技能点: {{ this.examInfo.skills }}
+            技能点: {{ examInfo.skills }}
           </el-col>
         </el-row>
         <el-row>
           <el-col :span="12">
-            开始时间:{{ this.examInfo.startTime }}
+            开始时间:{{ examInfo.startTime }}
           </el-col>
           <el-col :span="12">
-            结束时间:{{ this.examInfo.endTime }}
+            结束时间:{{ examInfo.endTime }}
           </el-col>
         </el-row>
         <el-row>
@@ -111,49 +111,34 @@ export default {
       courseInfo: [],
       examId: 0,
       isJoined: false,
-      state: "",
+      isFinished: false,
       inputInviteCode: false,
       examQuestionsNum: 0,
       examCodeQuestionsNum: 0,
       inviteCode: "",
       examList: [],
-      totalNum: 0
+      totalNum: 0,
     };
   },
-  created() {
-    this.examId = this.$route.query.examId;
-    this.isJoined = this.$route.query.isJoined === "true";
-    this.$apis.getExamById(this.examId).then(_res => {
-      this.examInfo = _res.data.data.result;
-      this.examInfo.skills = this.examInfo.skills.toString();
-      this.courseInfo = this.examInfo.course;
-      this.state = this.computeExamStateText(
-        this.examInfo.startTime,
-        this.examInfo.endTime
-      );
-      this.$apis.getExamSubmitRecordsByUserId(this.examId).then(({data}) => {
-        this.examInfo.isFinished = !!data.data.result.find((val) => !val.message);
-      });
-    });
-  },
 
-  mounted() {
-  },
+  computed: {
+    state() {
+      const TIME_FORMAT = "YYYY-MM-DD HH:mm:ss";
+      const now = dayjs();
+      const formattedStartTime = dayjs(this.examInfo.startTime, TIME_FORMAT);
+      const formattedEndTime = dayjs(this.examInfo.endTime, TIME_FORMAT);
 
-  updated() {
-    this.state = this.computeExamStateText(
-      this.examInfo.startTime,
-      this.examInfo.endTime
-    );
-    this.$apis.getExamSubmitRecordsByUserId(this.examId).then(({data}) => {
-      console.log(data.data.result);
-      this.examInfo.isFinished = !!data.data.result.find((val) => !val.message);
-    });
-  },
+      if (formattedEndTime < now) {
+        return "已结束";
+      }
+      if (formattedStartTime > now) {
+        return "未开始";
+      }
+      return "进行中";
+    },
 
-  methods: {
-    statusToType(state) {
-      switch (state) {
+    statusType() {
+      switch (this.state) {
         case "未开始":
           return "info";
         case "进行中":
@@ -161,27 +146,54 @@ export default {
         case "已结束":
           return "danger";
       }
+      return "";
     },
 
-    computeExamStateText(startTime, endTime) {
-      const TIME_FORMAT = "YYYY-MM-DD HH:mm:ss";
-      const now = dayjs();
-      const formattedStartTime = dayjs(startTime, TIME_FORMAT);
-      const formattedEndTime = dayjs(endTime, TIME_FORMAT);
+  },
 
-      if (formattedEndTime < now) {
-        return "已结束";
-      }
-      if (formattedStartTime > now) {
-        return "未开始";
-      }
-      return "进行中";
+  methods: {
+    initial() {
+      this.examId = this.$route.params.examId;
+      this.$apis.getExamById(this.examId).then(({data}) => {
+        this.examInfo = data.data.result;
+        this.examInfo.skills = this.examInfo.skills.toString();
+        this.courseInfo = this.examInfo.course;
+      });
+
+      this.$apis.getExamQuestions(this.examId).then(({data}) => {
+        if(!!data.data.result) {
+          this.examQuestionsNum = Object.keys(
+              data.data.result.questionAndScore
+          ).length;
+        }
+        this.$apis.getExamCodeQuestions(this.examId).then(({data}) => {
+          this.examCodeQuestionsNum = data.data.result.length;
+        });
+      });
+    },
+
+    getExamState() {
+      const curUserId = this.$store.state.user.id;
+      let userLists = [];
+      this.$apis.getExamJoinedUsers(this.examId).then(({data}) =>{
+        userLists = data.data.result;
+        if(!!userLists){
+          userLists.forEach((item) => {
+            if(item.id === curUserId) {
+              this.isJoined = true;
+            }
+          });
+        }
+      });
+
+      this.$apis.getExamSubmitRecordsByUserId(this.examId).then(({data}) => {
+        this.isFinished = !!data.data.result.find((val) => !val.message);
+      });
     },
 
     onJoinExam() {
       if (this.examInfo.isPublic) {
-        const examId = this.examInfo.examId ?? 0;
-        this.$apis.joinPublicExam(examId).then(() => {
+        this.$apis.joinPublicExam(this.examId).then(() => {
           this.isJoined = true;
           console.log(this.examInfo);
           ElMessage({
@@ -196,37 +208,46 @@ export default {
     },
 
     joinExamByInviteCode() {
-      const examId = this.examInfo.examId ?? 0;
       const inviteCode = this.inviteCode;
-      this.$apis.joinExamByInviteCode(inviteCode, examId)
-        .then(() => {
-          this.inputInviteCode = false;
-          this.isJoined = true;
-          console.log(this.examInfo);
-          ElMessage({
-            message: "加入考试成功",
-            type: "success",
+      this.$apis.joinExamByInviteCode(inviteCode, this.examId)
+          .then(() => {
+            this.inputInviteCode = false;
+            this.isJoined = true;
+            console.log(this.examInfo);
+            ElMessage({
+              message: "加入考试成功",
+              type: "success",
+            });
+          })
+          .catch(() => {
+          })
+          .finally(() => {
+            this.inviteCode = "";
           });
-        })
-        .catch(() => {
-        })
-        .finally(() => {
-          this.inviteCode = "";
-        });
     },
 
     onStartExam() {
-      const examId = this.examInfo.examId?.toString();
+      const examId = this.examId?.toString();
       const url = "https://eval.seec.seecoder.cn/exam/" + examId + "/before-exam";
       window.open(url + "?id_token=" + this.$store.state.user.token);
     },
     onOpenResult() {
-      const examId = this.examInfo.examId?.toString() ?? "";
+      const examId = this.examId?.toString() ?? "";
       const url = "https://eval.seec.seecoder.cn/student/result/" + examId;
       window.open(url + "?id_token=" + this.$store.state.user.token);
     },
 
-  }
+  },
+
+  created() {
+    this.initial();
+  },
+
+  mounted() {
+    this.getExamState();
+  },
+
+
 };
 </script>
 

+ 0 - 4
src/views/EvalPage/teacherExamDetails.vue

@@ -142,14 +142,10 @@ export default {
 
   created() {
     this.examId = this.$route.params.examId;
-    // const examId = 47;
-    console.log(this.examId);
     this.$apis.getExamById(this.examId).then(_res => {
       this.examInfo = _res.data.data.result;
-      console.log(this.examInfo);
       this.examInfo.skills = this.examInfo.skills.toString();
       this.examState=this.computeExamStateText(this.examInfo.startTime,this.examInfo.endTime);
-      console.log(this.examState);
 
 
     });

+ 1 - 1
src/views/ProblemPage/ProblemDetail.vue

@@ -129,7 +129,7 @@
       </span>
       </template>
     </el-dialog>
-    <el-dialog v-model="dialog.update" title="更新题目文件">
+    <el-dialog destroy-on-close v-model="dialog.update" title="更新题目文件">
       <el-form label-width="40px">
         <el-form-item label="路径" prop="name">
           <div>{{ selectedFile }}</div>

+ 9 - 0
src/views/ProjectPage/ProjectPage.vue

@@ -112,11 +112,20 @@
                     @click="$router.push('/login')">登录</span>
           </div>
 
+<!--          <div v-if="this.activeIndex === '2' ">-->
+<!--                            <span style="cursor: pointer;color: #409eff"-->
+<!--                                  @click="$router.push('/login')">跳转</span>-->
+<!--          </div>-->
+
+<!--          <div v-if="this.activeIndex === '3'" >-->
         <div v-if="this.activeIndex === '3' && isStudent">
+<!--            <AnalysisStudentCard :num="1575"/>-->
             <AnalysisStudentCard :num="$store.state.user.id"/>
         </div>
 
+<!--          <div v-if="this.activeIndex === '4'">-->
         <div v-if="this.activeIndex === '4' && isStudent">
+<!--            <AnalysisGroupCard :num="1575"/>-->
           <AnalysisGroupCard :num="$store.state.user.id"/>
         </div>
 

+ 223 - 204
src/views/ProjectPage/analysis/AnalysisGroupCard.vue

@@ -1,198 +1,173 @@
 <template xmlns:v-slot="http://www.w3.org/1999/XSL/Transform">
     <div class="main">
-        <!--        小组信息-->
-        <el-card class="box-card">
-            <template v-slot:header class="clearfix">
-                <span>小组信息</span>
-            </template>
-            <el-descriptions :column="2">
-                <el-descriptions-item label="小组总得分:">{{
-                    totalScore
-                    }}</el-descriptions-item>
-                <el-descriptions-item label="额外得分bonus:">{{
-                    bonus
-                    }}</el-descriptions-item>
-            </el-descriptions>
-            <el-card class="box-innercard">
-                <template v-slot:header class="clearfix">
-                    <span>项目信息</span>
-                </template>
-                <el-descriptions :column="2">
-                    <div v-for="item in productList" v-bind:key="item">
-                        <el-descriptions-item label="项目id:" :key="item.id">{{
-                            item.projectId
-                            }}</el-descriptions-item>
-                        <el-descriptions-item label="项目名称:" :key="item.name">{{
-                            item.projectName
-                            }}</el-descriptions-item>
-                    </div>
-                </el-descriptions>
-            </el-card>
-            <el-card class="box-innercard" style="margin-top: 20px">
-                <template v-slot:header class="clearfix">
-                    <span>小组成员</span>
-                </template>
-                <el-descriptions :column="3">
-                    <div v-for="item in userList" v-bind:key="item">
-                        <el-descriptions-item label="用户id:" :key="item.id">{{
-                            item.userId
-                            }}</el-descriptions-item>
-                        <el-descriptions-item label="姓名:" :key="item.number">{{
-                            item.name
-                            }}</el-descriptions-item>
-                        <el-descriptions-item label="电子邮箱:" :key="item.name">{{
-                            item.email
-                            }}</el-descriptions-item>
-                    </div>
-                </el-descriptions>
-            </el-card>
-        </el-card>
-        <!--        图表-->
-        <el-card class="box-card" style="margin-top: 20px">
-            <el-row :gutter="20">
-                <el-col :span="6">
-                    <p class="table_font">commit贡献占比</p>
-                    <div id="main1" class="pie"
-                    /></el-col>
-                <el-col :span="6">
-                    <p class="table_font">流水线部署贡献占比</p>
-                    <div id="main2" class="pie"
-                    />
-                </el-col>
-                <el-col :span="6">
-                    <p class="table_font">缺陷贡献占比</p>
-                    <div id="main3" class="pie"
-                    /></el-col>
-                <el-col :span="6">
-                    <p class="table_font">需求树贡献占比</p>
-                    <div id="main4" class="pie"
-                    />
-                </el-col>
-            </el-row>
-        </el-card>
-        <!--        commit信息-->
-        <el-card class="box-card" style="margin-top: 20px">
-            <template v-slot:header class="clearfix">
-                <span>commit信息</span>
-            </template>
-            <el-descriptions :column="1">
-                <el-descriptions-item label="commit得分:">{{
-                    commitScore
-                    }}</el-descriptions-item>
-            </el-descriptions>
-            <el-card class="box-innercard" >
-                <template v-slot:header class="clearfix">
-                    <span>commit统计信息</span>
-                </template>
-                <el-descriptions :column="2">
-                    <el-descriptions-item label="commit总次数:">{{
-                        commitMessage.commit_times
-                        }}</el-descriptions-item>
-                    <el-descriptions-item label="有效commit次数:">{{
-                        commitMessage.valid_commit_times
-                        }}</el-descriptions-item>
-                    <el-descriptions-item label="bugList_commit次数:">{{
-                        commitMessage.buglist_commit
-                        }}</el-descriptions-item>
-                    <el-descriptions-item label="feature_commit次数:">{{
-                        commitMessage.feature_commit
-                        }}</el-descriptions-item>
-                </el-descriptions>
-            </el-card>
-            <el-card class="box-innercard" style="margin-top: 20px">
-                <template v-slot:header class="clearfix">
-                    <span>commit具体信息(可下滑查看)</span>
-                </template>
-                <el-descriptions :column="1" :colon="false" class="nui-scroll">
-                    <div v-for="item in commitMessage.commit_msg_overview" v-bind:key="item">
-                        <el-descriptions-item :key="item">{{
-                            item
-                            }}</el-descriptions-item>
-                    </div>
-                </el-descriptions>
-            </el-card>
-        </el-card>
-        <!--        bug信息-->
-        <el-card class="box-card" style="margin-top: 20px">
-            <template v-slot:header class="clearfix">
-                <span>缺陷信息</span>
-            </template>
-            <el-descriptions :column="1">
-                <el-descriptions-item label="缺陷得分:">{{
-                    bugScore
-                    }}</el-descriptions-item>
-            </el-descriptions>
-            <el-card class="box-innercard" style="margin-top: 20px">
-                <template v-slot:header class="clearfix">
-                    <span>缺陷统计信息</span>
-                </template>
-                <el-descriptions :column="2">
-                    <el-descriptions-item label="缺陷数目:">{{
-                        bugList.bug_times
-                        }}</el-descriptions-item>
-                    <el-descriptions-item label="高优先级缺陷数目:">{{
-                        bugList.high_times
-                        }}</el-descriptions-item>
-                    <el-descriptions-item label="已经修复的缺陷数目:">{{
-                        bugList.finished_times
-                        }}</el-descriptions-item>
-                </el-descriptions>
-            </el-card>
-        </el-card>
-        <!--        treeNode信息-->
-        <el-card class="box-card" style="margin-top: 20px">
-            <template v-slot:header class="clearfix">
-                <span>需求树信息</span>
-            </template>
-            <el-descriptions :column="1">
-                <el-descriptions-item label="需求得分:">{{
-                    nodeScore
-                    }}</el-descriptions-item>
-            </el-descriptions>
-            <el-card class="box-card" style="margin-top: 20px">
-                <template v-slot:header class="clearfix">
-                    <span>需求统计信息</span>
-                </template>
-                <el-descriptions :column="2">
-                    <el-descriptions-item label="需求节点数目:">{{
-                        treeNode.treeNode_times
-                        }}</el-descriptions-item>
-                    <el-descriptions-item label="高优先级需求数目:">{{
-                        treeNode.high_treeNode_times
-                        }}</el-descriptions-item>
-                    <el-descriptions-item label="已经完成的需求数目:">{{
-                        treeNode.finished_treeNode_times
-                        }}</el-descriptions-item>
-                </el-descriptions>
-            </el-card>
-        </el-card>
-        <!--        部署信息-->
-        <el-card class="box-card" style="margin-top: 20px">
-            <template v-slot:header class="clearfix">
-                <span>流水线部署信息</span>
-            </template>
-            <el-descriptions :column="1">
-                <el-descriptions-item label="部署得分:">{{
-                    pipelineScore
-                    }}</el-descriptions-item>
-            </el-descriptions>
-            <el-card class="box-card" style="margin-top: 20px">
-                <template v-slot:header class="clearfix">
-                    <span>部署统计信息</span>
-                </template>
-                <el-descriptions :column="2">
-                    <el-descriptions-item label="流水线部署次数:">{{
-                        arrange.pipeline_deploy
-                        }}</el-descriptions-item>
-                    <el-descriptions-item label="流水线部署成功次数:">{{
-                        arrange.pipeline_pass
-                        }}</el-descriptions-item>
-                    <el-descriptions-item label="流水线部署失败次数:">{{
-                        arrange.pipline_failure
-                        }}</el-descriptions-item>
-                </el-descriptions>
-            </el-card>
-        </el-card>
+        <el-carousel trigger="click" height="560px" interval="1000000000">
+                        <el-carousel-item>
+                            <div>
+                                <div class="title">小组信息</div>
+                                <el-row class="box-innercard">
+                                    <el-col :span="12">
+                                       小组得分: {{totalScore}}
+                                    </el-col>
+                                    <el-col :span="12">
+                                        额外bonus: {{bonus}}
+                                    </el-col>
+                                </el-row>
+                                <div class="title-little">成员信息</div>
+                                <el-table
+                                        :data="userList"
+                                        class="table">
+                                    <el-table-column
+                                            prop="userId"
+                                            label="用户id"
+                                            width="150">
+                                    </el-table-column>
+                                    <el-table-column
+                                            prop="name"
+                                            label="学号信息"
+                                            width="150">
+                                    </el-table-column>
+                                    <el-table-column
+                                            prop="email"
+                                            label="电子邮箱">
+                                    </el-table-column>
+                                </el-table>
+                                <div class="title-little">项目信息</div>
+                                <el-table
+                                        :data="productList"
+                                        class="table">
+                                    <el-table-column
+                                            prop="projectId"
+                                            label="项目id"
+                                            width="150">
+                                    </el-table-column>
+                                    <el-table-column
+                                            prop="projectName"
+                                            label="项目名称">
+                                    </el-table-column>
+                                </el-table>
+                            </div>
+                        </el-carousel-item>
+                        <el-carousel-item>
+                            <div>
+                                <div class="title">commit信息</div>
+                                <el-row class="box-innercard">
+                                    commit得分: {{commitScore}}
+                                </el-row>
+                                <el-row class="box-innercard">
+                                    <el-col :span="12">
+                                        commit总次数: {{commitMessage.commit_times}}
+                                    </el-col>
+                                    <el-col :span="12">
+                                        有效commit次数: {{commitMessage.valid_commit_times}}
+                                    </el-col>
+                                </el-row>
+                                <el-row class="box-innercard">
+                                    <el-col :span="12">
+                                        bugList_commit次数: {{commitMessage.buglist_commit}}
+                                    </el-col>
+                                    <el-col :span="12">
+                                        feature_commit次数: {{commitMessage.feature_commit}}
+                                    </el-col>
+                                </el-row>
+                                <el-card class="box-innercard" style="background-color: #ffffff;margin: 10px;width: 90%;height:350px;">
+                                    <template v-slot:header class="clearfix">
+                                        <span style="font-size: 14px">commit具体信息(可下滑查看)</span>
+                                    </template>
+                                    <el-descriptions :column="1" :colon="false" class="nui-scroll">
+                                        <div v-for="item in commitMessage.commit_msg_overview" v-bind:key="item">
+                                            <el-descriptions-item :key="item">{{
+                                                item
+                                                }}</el-descriptions-item>
+                                        </div>
+                                    </el-descriptions>
+                                </el-card>
+                            </div>
+                        </el-carousel-item>
+                        <el-carousel-item>
+                            <div>
+                                <div class="title" style="margin-top: 50px">缺陷信息</div>
+                                <el-row class="box-innercard">
+                                    缺陷得分: {{bugScore}}
+                                </el-row>
+                                <el-row class="box-innercard">
+                                    <el-col :span="12">
+                                        缺陷数目: {{bugList.bug_times}}
+                                    </el-col>
+                                    <el-col :span="12">
+                                        高优先级缺陷数目: {{bugList.high_times}}
+                                    </el-col>
+                                </el-row>
+                                <el-row class="box-innercard">
+                                    <el-col :span="12">
+                                        已经修复的缺陷数目: {{bugList.finished_times}}
+                                    </el-col>
+                                </el-row>
+                            </div>
+                            <div>
+                                <div class="title" style="margin-top: 50px">需求树信息</div>
+                                <el-row class="box-innercard">
+                                    需求得分: {{nodeScore}}
+                                </el-row>
+                                <el-row class="box-innercard">
+                                    <el-col :span="12">
+                                        需求节点数目: {{treeNode.treeNode_times}}
+                                    </el-col>
+                                    <el-col :span="12">
+                                        高优先级需求数目: {{treeNode.high_treeNode_times}}
+                                    </el-col>
+                                </el-row>
+                                <el-row class="box-innercard">
+                                    <el-col :span="12">
+                                        已经完成的需求数目: {{treeNode.finished_treeNode_times}}
+                                    </el-col>
+                                </el-row>
+                            </div>
+                        </el-carousel-item>
+            <el-carousel-item>
+                <div>
+                    <div class="title" style="margin-top: 50px">流水线部署信息</div>
+                    <el-row class="box-innercard">
+                        部署得分: {{pipelineScore}}
+                    </el-row>
+                    <el-row class="box-innercard">
+                        <el-col :span="12">
+                            流水线部署次数: {{arrange.pipeline_deploy}}
+                        </el-col>
+                        <el-col :span="12">
+                            流水线部署成功次数: {{arrange.pipeline_pass}}
+                        </el-col>
+                    </el-row>
+                    <el-row class="box-innercard">
+                        <el-col :span="12">
+                            流水线部署失败次数: {{arrange.pipline_failure}}
+                        </el-col>
+                    </el-row>
+                </div>
+                <!--        图表-->
+                <el-card class="box-card" style="margin-top: 20px">
+                    <el-row :gutter="20">
+                        <el-col :span="5">
+                            <p class="table_font" style="text-align: center">commit贡献占比</p>
+                            <div id="main1" class="pie"
+                            /></el-col>
+                        <el-col :span="6">
+                            <p class="table_font" style="text-align: center">流水线部署贡献占比</p>
+                            <div id="main2" class="pie"
+                            />
+                        </el-col>
+                        <el-col :span="6">
+                            <p class="table_font" style="text-align: center">缺陷贡献占比</p>
+                            <div id="main3" class="pie"
+                            /></el-col>
+                        <el-col :span="7">
+                            <p class="table_font" style="text-align: center">需求树贡献占比</p>
+                            <div id="main4" class="pie"
+                            />
+                        </el-col>
+                    </el-row>
+                </el-card>
+            </el-carousel-item>
+        </el-carousel>
 
     </div>
 </template>
@@ -408,9 +383,9 @@
                     series: [
                         {
                             name: "commit次数",
-                            center: ["50%", "40%"],
+                            center: ["35%", "50%"],
                             type: "pie", // 设置图表类型为饼图
-                            radius: "55%", // 饼图的半径,外半径为可视区尺寸(容器高宽中较小一项)的 55% 长度。
+                            radius: "50%", // 饼图的半径,外半径为可视区尺寸(容器高宽中较小一项)的 55% 长度。
                             data: this.commitPie,
                         },
                     ],
@@ -462,9 +437,10 @@
                     series: [
                         {
                             name: "部署次数",
-                            center: ["50%", "40 %"],
+                            // center: ["50%", "40 %"],
+                            center: ["35%", "50%"],
                             type: "pie", // 设置图表类型为饼图
-                            radius: "55%", // 饼图的半径,外半径为可视区尺寸(容器高宽中较小一项)的 55% 长度。
+                            radius: "50%", // 饼图的半径,外半径为可视区尺寸(容器高宽中较小一项)的 55% 长度。
                             data: this.deployPie,
                         },
                     ],
@@ -489,9 +465,9 @@
                     series: [
                         {
                             name: "提交缺陷次数",
-                            center: ["50%", "40 %"],
+                            center: ["35%", "50%"],
                             type: "pie", // 设置图表类型为饼图
-                            radius: "55%", // 饼图的半径,外半径为可视区尺寸(容器高宽中较小一项)的 55% 长度。
+                            radius: "50%", // 饼图的半径,外半径为可视区尺寸(容器高宽中较小一项)的 55% 长度。
                             data: this.bugListPie,
                         },
                     ],
@@ -516,9 +492,9 @@
                     series: [
                         {
                             name: "提交需求次数",
-                            center: ["50%", "40 %"],
+                            center: ["35%", "50%"],
                             type: "pie", // 设置图表类型为饼图
-                            radius: "55%", // 饼图的半径,外半径为可视区尺寸(容器高宽中较小一项)的 55% 长度。
+                            radius: "50%", // 饼图的半径,外半径为可视区尺寸(容器高宽中较小一项)的 55% 长度。
                             data: this.treePie,
                         },
                     ],
@@ -533,6 +509,51 @@
 </script>
 
 <style scoped>
+
+    .box-innercard {
+        padding: 10px;
+        background-color: #F8F9FB;
+        font-size:14px;
+    }
+
+    .table{
+        margin: 10px;
+        margin-top: 20px;
+        margin-left: 15px;
+        margin-bottom: 20px;
+        width: 95%;
+    }
+
+    .el-carousel__item h3 {
+        color: #475669;
+        font-size: 14px;
+        opacity: 0.75;
+        line-height: 150px;
+        margin: 0;
+    }
+
+    .el-carousel__item{
+        /*background-color: #FFFFFF;*/
+        background-color: #F8F9FB;
+        /*border-radius: 10px;*/
+        padding: 10px;
+    }
+
+    .title{
+        margin-top: 10px;
+        margin-bottom: 10px;
+        font-size: 20px;
+        font-weight: bold;
+    }
+
+    .title-little{
+        margin-top: 10px;
+        padding-left: 15px;
+        font-size: 14px;
+        font-weight: bold;
+    }
+
+
     .score-box {
         width: 20px;
         height: 10px;
@@ -583,9 +604,7 @@
         background-color: rgba(0, 0, 0, .01);
     }
 
-    .box-innercard {
-        /*background-color: #1f00f5;*/
-    }
+
     .pie {
         width: 200px;
         height: 150px;

+ 213 - 173
src/views/ProjectPage/analysis/AnalysisStudentCard.vue

@@ -1,177 +1,173 @@
 <template xmlns:v-slot="http://www.w3.org/1999/XSL/Transform">
     <div class="main">
-        <!-- 个人信息 -->
-        <el-card class="box-card">
-            <template v-slot:header class="clearfix">
-                <span>个人信息</span>
-            </template>
-            <el-descriptions :column="2">
-                <el-descriptions-item label="个人总得分:">{{
-                    totalScore
-                    }}</el-descriptions-item>
-                <el-descriptions-item label="额外得分bonus:">{{
-                    bonus
-                    }}</el-descriptions-item>
-            </el-descriptions>
-            <el-card class="box-innercard">
-                <template v-slot:header class="clearfix">
-                    <span>基本信息</span>
-                </template>
-                <el-descriptions :column="2">
-                    <el-descriptions-item label="姓名:">{{
-                        user.name
-                        }}</el-descriptions-item>
-                    <el-descriptions-item label="用户id:">{{
-                        user.userId
-                        }}</el-descriptions-item>
-                    <el-descriptions-item label="电子邮箱:">{{
-                        user.email
-                        }}</el-descriptions-item>
-                </el-descriptions>
-            </el-card>
-            <el-card class="box-innercard" style="margin-top: 20px">
-                <template v-slot:header class="clearfix">
-                    <span>项目信息</span>
-                </template>
-                <el-descriptions :column="2" style="margin-top: 20px">
-                    <div v-for="item in productList" v-bind:key="item">
-                        <el-descriptions-item label="项目id:" :key="item.projectId">{{
-                            item.projectId
-                            }}</el-descriptions-item>
-                        <el-descriptions-item label="项目名称:" :key="item.projectName">{{
-                            item.projectName
-                            }}</el-descriptions-item>
-                    </div>
-                </el-descriptions>
-            </el-card>
-        </el-card>
-        <!-- 提交信息 -->
-        <el-card class="box-card" style="margin-top: 20px">
-            <template v-slot:header class="clearfix">
-                <span>commit信息</span>
-            </template>
-            <el-descriptions :column="1">
-                <el-descriptions-item label="commit得分:">{{
-                    commitScore
-                    }}</el-descriptions-item>
-            </el-descriptions>
-            <el-card class="box-innercard" >
-                <template v-slot:header class="clearfix">
-                    <span>commit统计信息</span>
-                </template>
-                <el-descriptions :column="2">
-                    <el-descriptions-item label="commit总次数:">{{
-                        commitMessage.commit_times
-                        }}</el-descriptions-item>
-                    <el-descriptions-item label="有效commit次数:">{{
-                        commitMessage.valid_commit_times
-                        }}</el-descriptions-item>
-                    <el-descriptions-item label="bugList_commit次数:">{{
-                        commitMessage.buglist_commit
-                        }}</el-descriptions-item>
-                    <el-descriptions-item label="feature_commit次数:">{{
-                        commitMessage.feature_commit
-                        }}</el-descriptions-item>
-                </el-descriptions>
-            </el-card>
-            <el-card class="box-innercard" style="margin-top: 20px">
-                <template v-slot:header class="clearfix">
-                    <span>commit具体信息(可下滑查看)</span>
-                </template>
-                <el-descriptions :column="1" :colon="false" class="nui-scroll">
-                    <div v-for="item in commitMessage.commit_msg_overview" v-bind:key="item">
-                        <el-descriptions-item :key="item">{{
-                            item
-                            }}</el-descriptions-item>
-                    </div>
-                </el-descriptions>
-            </el-card>
-            <el-button type="text" @click="showModel1">commit组成信息</el-button>
-        </el-card>
-        <!-- bug信息 -->
-        <el-card class="box-card" style="margin-top: 20px">
-            <template v-slot:header class="clearfix">
-                <span>缺陷信息</span>
-            </template>
-            <el-descriptions :column="1">
-                <el-descriptions-item label="缺陷得分:">{{
-                    bugScore
-                    }}</el-descriptions-item>
-            </el-descriptions>
-            <el-card class="box-innercard" style="margin-top: 20px">
-                <template v-slot:header class="clearfix">
-                    <span>缺陷统计信息</span>
-                </template>
-                <el-descriptions :column="2">
-                    <el-descriptions-item label="缺陷数目:">{{
-                        bugList.bug_times
-                        }}</el-descriptions-item>
-                    <el-descriptions-item label="高优先级缺陷数目:">{{
-                        bugList.high_times
-                        }}</el-descriptions-item>
-                    <el-descriptions-item label="已经修复的缺陷数目:">{{
-                        bugList.finished_times
-                        }}</el-descriptions-item>
-                </el-descriptions>
-            </el-card>
-            <el-button type="text" @click="showModel4">缺陷修复率</el-button>
-        </el-card>
-        <!-- treeNode信息 -->
-        <el-card class="box-card" style="margin-top: 20px">
-            <template v-slot:header class="clearfix">
-                <span>需求树信息</span>
-            </template>
-            <el-descriptions :column="1">
-                <el-descriptions-item label="需求得分:">{{
-                    nodeScore
-                    }}</el-descriptions-item>
-            </el-descriptions>
-            <el-card class="box-card" style="margin-top: 20px">
-                <template v-slot:header class="clearfix">
-                    <span>需求统计信息</span>
-                </template>
-                <el-descriptions :column="2">
-                    <el-descriptions-item label="需求节点数目:">{{
-                        treeNode.treeNode_times
-                        }}</el-descriptions-item>
-                    <el-descriptions-item label="高优先级需求数目:">{{
-                        treeNode.high_treeNode_times
-                        }}</el-descriptions-item>
-                    <el-descriptions-item label="已经完成的需求数目:">{{
-                        treeNode.finished_treeNode_times
-                        }}</el-descriptions-item>
-                </el-descriptions>
-            </el-card>
-            <el-button type="text" @click="showModel5">需求完成率</el-button>
-        </el-card>
-        <!-- 部署信息 -->
-        <el-card class="box-card" style="margin-top: 20px">
-            <template v-slot:header class="clearfix">
-                <span>流水线部署信息</span>
-            </template>
-            <el-descriptions :column="1">
-                <el-descriptions-item label="部署得分:">{{
-                    pipelineScore
-                    }}</el-descriptions-item>
-            </el-descriptions>
-            <el-card class="box-card" style="margin-top: 20px">
-                <template v-slot:header class="clearfix">
-                    <span>部署统计信息</span>
-                </template>
-                <el-descriptions :column="2">
-                    <el-descriptions-item label="流水线部署次数:">{{
-                        pipeline.pipeline_deploy
-                        }}</el-descriptions-item>
-                    <el-descriptions-item label="流水线部署成功次数:">{{
-                        pipeline.pipeline_pass
-                        }}</el-descriptions-item>
-                    <el-descriptions-item label="流水线部署失败次数:">{{
-                        pipeline.pipline_failure
-                        }}</el-descriptions-item>
-                </el-descriptions>
-            </el-card>
-            <el-button type="text" @click="showModel3">部署通过率</el-button>
-        </el-card>
+        <el-carousel trigeer="click" height="580px" interval="1000000000">
+            <el-carousel-item>
+                <div>
+                    <div class="title">个人信息</div>
+                    <el-row class="box-innercard">
+                        <el-col :span="12">
+                            个人得分: {{totalScore}}
+                        </el-col>
+                        <el-col :span="12">
+                            额外bonus: {{bonus}}
+                        </el-col>
+                    </el-row>
+                    <div class="title-little">基本信息</div>
+                    <el-row class="box-innercard" style="padding-left: 20px;">
+                        <el-col :span="12">
+                            姓名: {{user.name}}
+                        </el-col>
+                        <el-col :span="12">
+                            用户id: {{user.userId}}
+                        </el-col>
+                    </el-row>
+                    <el-row class="box-innercard" style="padding-left: 20px;">
+                        <el-col :span="12">
+                            电子邮箱: {{user.email}}
+                        </el-col>
+                    </el-row>
+                    <div class="title-little">项目信息</div>
+                    <el-table
+                            :data="productList"
+                            class="table">
+                        <el-table-column
+                                prop="projectId"
+                                label="项目id"
+                                width="150">
+                        </el-table-column>
+                        <el-table-column
+                                prop="projectName"
+                                label="项目名称">
+                        </el-table-column>
+                    </el-table>
+                </div>
+            </el-carousel-item>
+            <el-carousel-item>
+                <div>
+                    <el-row>
+                        <el-col :span="20" class="title">
+                            commit信息
+                        </el-col>
+                        <el-col :span="4">
+                            <el-button type="text" @click="showModel1">commit组成信息</el-button>
+                        </el-col>
+                    </el-row>
+                    <el-row class="box-innercard">
+                        commit得分: {{commitScore}}
+                    </el-row>
+                    <el-row class="box-innercard">
+                        <el-col :span="12">
+                            commit总次数: {{commitMessage.commit_times}}
+                        </el-col>
+                        <el-col :span="12">
+                            有效commit次数: {{commitMessage.valid_commit_times}}
+                        </el-col>
+                    </el-row>
+                    <el-row class="box-innercard">
+                        <el-col :span="12">
+                            bugList_commit次数: {{commitMessage.buglist_commit}}
+                        </el-col>
+                        <el-col :span="12">
+                            feature_commit次数: {{commitMessage.feature_commit}}
+                        </el-col>
+                    </el-row>
+                    <el-card class="box-innercard" style="background-color: #ffffff;margin: 10px;width: 90%;height:350px;">
+                        <template v-slot:header class="clearfix">
+                            <span style="font-size: 14px">commit具体信息(可下滑查看)</span>
+                        </template>
+                        <el-descriptions :column="1" :colon="false" class="nui-scroll">
+                            <div v-for="item in commitMessage.commit_msg_overview" v-bind:key="item">
+                                <el-descriptions-item :key="item">{{
+                                    item
+                                    }}</el-descriptions-item>
+                            </div>
+                        </el-descriptions>
+                    </el-card>
+                </div>
+            </el-carousel-item>
+            <el-carousel-item>
+                <div>
+                    <el-row style="margin-top: 50px">
+                        <el-col :span="20" class="title">
+                            缺陷信息
+                        </el-col>
+                        <el-col :span="4">
+                            <el-button type="text" @click="showModel4">缺陷修复率</el-button>
+                        </el-col>
+                    </el-row>
+                    <el-row class="box-innercard">
+                        缺陷得分: {{bugScore}}
+                    </el-row>
+                    <el-row class="box-innercard">
+                        <el-col :span="12">
+                            缺陷数目: {{bugList.bug_times}}
+                        </el-col>
+                        <el-col :span="12">
+                            高优先级缺陷数目: {{bugList.high_times}}
+                        </el-col>
+                    </el-row>
+                    <el-row class="box-innercard">
+                        <el-col :span="12">
+                            已经修复的缺陷数目: {{bugList.finished_times}}
+                        </el-col>
+                    </el-row>
+                </div>
+                <div>
+                    <el-row style="margin-top: 50px">
+                        <el-col :span="20" class="title">
+                            需求树信息
+                        </el-col>
+                        <el-col :span="4">
+                            <el-button type="text" @click="showModel5">需求完成率</el-button>
+                        </el-col>
+                    </el-row>
+                    <el-row class="box-innercard">
+                        需求得分: {{nodeScore}}
+                    </el-row>
+                    <el-row class="box-innercard">
+                        <el-col :span="12">
+                            需求节点数目: {{treeNode.treeNode_times}}
+                        </el-col>
+                        <el-col :span="12">
+                            高优先级需求数目: {{treeNode.high_treeNode_times}}
+                        </el-col>
+                    </el-row>
+                    <el-row class="box-innercard">
+                        <el-col :span="12">
+                            已经完成的需求数目: {{treeNode.finished_treeNode_times}}
+                        </el-col>
+                    </el-row>
+                </div>
+            </el-carousel-item>
+            <el-carousel-item>
+                <div>
+                    <el-row style="margin-top: 20%">
+                        <el-col :span="20" class="title">
+                            流水线部署信息
+                        </el-col>
+                        <el-col :span="4">
+                            <el-button type="text" @click="showModel3">部署通过率</el-button>
+                        </el-col>
+                    </el-row>
+                    <el-row class="box-innercard">
+                        部署得分: {{pipelineScore}}
+                    </el-row>
+                    <el-row class="box-innercard">
+                        <el-col :span="12">
+                            流水线部署次数: {{arrange.pipeline_deploy}}
+                        </el-col>
+                        <el-col :span="12">
+                            流水线部署成功次数: {{arrange.pipeline_pass}}
+                        </el-col>
+                    </el-row>
+                    <el-row class="box-innercard">
+                        <el-col :span="12">
+                            流水线部署失败次数: {{arrange.pipline_failure}}
+                        </el-col>
+                    </el-row>
+                </div>
+            </el-carousel-item>
+        </el-carousel>
         <el-dialog v-model="visible1">
             <div
                     class="righttop"
@@ -249,7 +245,7 @@
                 testAnalysis: [],
                 visible3: false,
                 deployAnalysis: [],
-                pipeline: {},
+                arrange: {},
                 user: {},
                 test: {},
                 commitMessage: {},
@@ -549,6 +545,50 @@
 </script>
 
 <style scoped>
+    .box-innercard {
+        padding: 10px;
+        background-color: #F8F9FB;
+        font-size:14px;
+    }
+
+    .table{
+        margin: 10px;
+        margin-top: 20px;
+        margin-left: 15px;
+        margin-bottom: 20px;
+        width: 95%;
+    }
+
+    .el-carousel__item h3 {
+        color: #475669;
+        font-size: 14px;
+        opacity: 0.75;
+        line-height: 150px;
+        margin: 0;
+    }
+
+    .el-carousel__item{
+        /*background-color: #FFFFFF;*/
+        background-color: #F8F9FB;
+        /*border-radius: 10px;*/
+        padding: 10px;
+    }
+
+    .title{
+        margin-top: 10px;
+        margin-bottom: 10px;
+        font-size: 20px;
+        font-weight: bold;
+    }
+
+    .title-little{
+        margin-top: 30px;
+        padding-left: 15px;
+        font-size: 14px;
+        font-weight: bold;
+    }
+
+
     .nui-scroll {
         margin-top: 5px;
         width: 99%;