Jelajahi Sumber

日常commit

Johnson 7 tahun lalu
induk
melakukan
c38b698922

+ 38 - 3
mock/modules/assignment/index.js

@@ -5,6 +5,8 @@ const ProjectSerializer = require("../../serializers/assignment/ProjectSerialize
 const CodeResultSerializer = require("../../serializers/assignment/CodeResultSerializer");
 const DocumentSerializer = require("../../serializers/assignment/DocumentSerializer");
 const DocumentResultSerializer = require("../../serializers/assignment/DocumentResultSerializer");
+const codeProcedureSerializer = require("../../serializers/assignment/CodeProcedureSerializer");
+const groupSerializer = require("../../serializers/course/GroupSerializer");
 
 //新建代码作业
 router.route("/course/:courseId/code").post((req, res) => {
@@ -56,6 +58,20 @@ router.route("/student/code/:codeId/project").get((req, res) => {
   });
 });
 
+//老师查看单个代码作业下所有已提交组的过程统计信息
+router.route("/teacher/code/:codeId/submitted/procedure").get((req, res) => {
+  res.send({
+    data: [codeProcedureSerializer(), codeProcedureSerializer()]
+  });
+});
+
+//老师查看单个代码作业下所有未提交组的信息
+router.route("/teacher/code/:codeId/unsubmitted/groups").get((req, res) => {
+  res.send({
+    data: [groupSerializer(), groupSerializer()]
+  });
+});
+
 //老师查看单个代码作业的成绩列表(所有组的)
 router.route("/teacher/code/:codeId/result").get((req, res) => {
   res.send({
@@ -107,13 +123,32 @@ router.route("/student/course/:courseId/document").get((req, res) => {
   });
 });
 
-//老师查看文档作业的成绩列表(所有小组)
-router.route("/teacher/document/:documentId/result").get((req, res) => {
+//学生查看单个文档作业信息
+router.route("/student/document/:documentId").get((req, res) => {
   res.send({
-    data: [DocumentResultSerializer(), DocumentResultSerializer()]
+    data: DocumentSerializer()
   });
 });
 
+//老师查看文档作业的成绩列表(已提交小组)
+router
+  .route("/teacher/document/:documentId/submitted/result")
+  .get((req, res) => {
+    res.send({
+      status: "正在互评",
+      data: [DocumentResultSerializer(), DocumentResultSerializer()]
+    });
+  });
+
+//老师查看未提交文档作业小组列表
+router
+  .route("/teacher/document/:documentId/unsubmitted/groups")
+  .get((req, res) => {
+    res.send({
+      data: [groupSerializer(), groupSerializer()]
+    });
+  });
+
 //学生查看文档作业的成绩
 router.route("/student/document/:documentId/result").get((req, res) => {
   res.send({

+ 16 - 0
mock/serializers/assignment/CodeProcedureSerializer.js

@@ -0,0 +1,16 @@
+const makeId = require("../../util/makeId");
+const groupSerializer = require("../course/GroupSerializer");
+const statusSerializer = require("./StatusSerializer");
+const testStatusSerializer = require("./TestStatusSerializer");
+
+module.exports = () => {
+  return {
+    id: makeId(),
+    code: makeId(),
+    group: groupSerializer(),
+    buildStatus: statusSerializer(),
+    deployStatus: statusSerializer(),
+    unitTestStatus: testStatusSerializer(),
+    functionTestStatus: testStatusSerializer()
+  };
+};

+ 3 - 2
mock/serializers/assignment/CodeResultSerializer.js

@@ -1,5 +1,6 @@
 const makeId = require("../../util/makeId");
 const groupSerializer = require("../course/GroupSerializer");
+const scoreSerializer = require("./ScoreSerializer");
 /**
  * @description 代码作业成绩(单元测试、功能测试TBD)
  * @typedef {Object} CodeResultSerializerType
@@ -21,8 +22,8 @@ module.exports = () => {
     id: makeId(),
     code: makeId(),
     group: groupSerializer(),
-    unitTestScore: 70,
-    functionTestScore: 90,
+    unitTestScore: [scoreSerializer(), scoreSerializer()],
+    functionTestScore: [scoreSerializer(), scoreSerializer()],
     score: 80
   };
 };

+ 2 - 2
mock/serializers/assignment/CodeSerializer.js

@@ -1,5 +1,5 @@
 const makeId = require("../../util/makeId");
-const questionSerializer = require("../question/QuestionSerializer");
+const nestedProblemSerializer = require("./NestedProblemSerializer");
 const dayjs = require("dayjs");
 /**
  * @description 代码作业详情
@@ -28,6 +28,6 @@ module.exports = () => {
     createAt: dayjs("2018-10-21").unix(),
     startAt: dayjs("2019-01-01").unix(),
     endAt: dayjs("2019-01-20").unix(),
-    problem: [questionSerializer(), questionSerializer()]
+    problem: nestedProblemSerializer()
   };
 };

+ 3 - 1
mock/serializers/assignment/DocumentResultSerializer.js

@@ -21,6 +21,8 @@ module.exports = () => {
     document: makeId(),
     group: groupSerializer(),
     state: "互评中",
-    result: "B"
+    result: "B",
+    url: "https://github.com",
+    reviewGroup: [1, 2, 3]
   };
 };

+ 5 - 6
mock/serializers/assignment/DocumentSerializer.js

@@ -1,5 +1,5 @@
 const makeId = require("../../util/makeId");
-const questionSerializer = require("../question/QuestionSerializer");
+const nestedProblemSerializer = require("../assignment/NestedProblemSerializer");
 const dayjs = require("dayjs");
 /**
  * @description 文档作业信息
@@ -23,13 +23,12 @@ const dayjs = require("dayjs");
 module.exports = () => {
   return {
     id: makeId(),
-    name: "物流系统需求规格说明文档",
-    description: "请给出物流系统的需求规格说明文档",
-    status: "READY",
+    name: "需求规格说明文档",
+    description: "请给该项目的需求规格说明文档",
+    status: "Underway",
     createAt: dayjs("2018-10-21").unix(),
     startAt: dayjs("2019-01-01").unix(),
     endAt: dayjs("2019-01-20").unix(),
-    problem: [questionSerializer(), questionSerializer()],
-    url: "http://47.100.18.120:3000/SEEC-II-DOC/API-DOC"
+    problem: nestedProblemSerializer()
   };
 };

+ 2 - 2
mock/serializers/assignment/NestedProblemSerializer.js

@@ -14,7 +14,7 @@ const makeId = require("../../util/makeId");
 module.exports = () => {
   return {
     id: makeId(),
-    name: "完型填空",
-    description: "请完成那些完型填空题目啊"
+    name: "购物车web项目",
+    description: "请完成购物车web项目的软件需求规格说明书"
   };
 };

+ 0 - 3
mock/serializers/assignment/ScoreSerializer.js

@@ -13,12 +13,9 @@ const makeId = require("../../util/makeId");
  */
 
 module.exports = () => {
-  // function f() {
   return {
     id: makeId(),
     name: "测试",
     score: "90"
   };
 };
-
-// console.log(f());

+ 5 - 0
mock/serializers/assignment/StatusSerializer.js

@@ -0,0 +1,5 @@
+module.exports = () => {
+  return {
+    key: "1"
+  };
+};

+ 7 - 0
mock/serializers/assignment/TestStatusSerializer.js

@@ -0,0 +1,7 @@
+module.exports = () => {
+  return {
+    key: "1",
+    testCount: 10,
+    passCount: 9
+  };
+};

+ 53 - 10
src/api/assignment.js

@@ -77,7 +77,7 @@ export const getCodeAssignmentListByStu = () => {
 };
 
 /**
- * 学生查看单个代码作业列表
+ * 学生查看单个代码作业
  * @returns {Promise<{data:CodeSerializerType}>}
  */
 export const getCodeAssignmentByStu = () => {
@@ -100,6 +100,28 @@ export const getCodeResultByCode = () => {
   return request(`${ASSIGNMENT_MODULE}/student/code/:codeId/result`);
 };
 
+/**
+ * 老师查看单个代码作业下所有已提交组的过程统计信息
+ * @param codeId
+ * @returns {Promise<{data:CodeProcedureSerializerType[]}>}
+ */
+export const getCodeProcedureListByCodeId = (codeId = 123) => {
+  return request(
+    `${ASSIGNMENT_MODULE}/teacher/code/${codeId}/submitted/procedure`
+  );
+};
+
+/**
+ * 老师查看单个代码作业下所有未提交组的信息
+ * @param codeId
+ * @returns {Promise<{data:GroupSerializerType[]}>}
+ */
+export const getUnsubmittedCodeGroupsList = (codeId = 123) => {
+  return request(
+    `${ASSIGNMENT_MODULE}/teacher/code/${codeId}/unsubmitted/groups`
+  );
+};
+
 /**
  * 老师查看单个代码作业的成绩列表(所有组的)
  * @returns {Promise<{data:CodeResultSerializerType}>}
@@ -171,30 +193,51 @@ export const delDocAssignment = () => {
  * 老师查看文档作业列表
  * @returns {Promise<{data:DocumentSerializerType[]}>}
  */
-export const getDocAssignmentListByTeacher = () => {
-  return request(`${ASSIGNMENT_MODULE}/teacher/course/:courseId/document`);
+export const getDocAssignmentListByTeacher = (courseId = 123) => {
+  return request(`${ASSIGNMENT_MODULE}/teacher/course/${courseId}/document`);
 };
 
 /**
  * 学生查看文档作业列表
  * @returns {Promise<{data:DocumentSerializerType[]}>}
  */
-export const getDocAssignmentListByStu = () => {
-  return request(`${ASSIGNMENT_MODULE}/student/course/:courseId/document`);
+export const getDocAssignmentListByCrs = (courseId = 123) => {
+  return request(`${ASSIGNMENT_MODULE}/student/course/${courseId}/document`);
+};
+
+/**
+ * 学生查看单个文档作业信息
+ * @returns {Promise<{data:DocumentSerializerType}>}
+ */
+export const getDocAssignmentDetailByDocuId = (documentId = 123) => {
+  return request(`${ASSIGNMENT_MODULE}/student/document/${documentId}`);
 };
 
 /**
  * 学生查看单个文档作业下的成绩
  * @returns {Promise<{data:DocumentResultSerializerType}>}
  */
-export const getDocResultByDoc = () => {
-  return request(`${ASSIGNMENT_MODULE}/student/document/:documentId/result`);
+export const getDocResultById = (documentId = 123) => {
+  return request(`${ASSIGNMENT_MODULE}/student/document/${documentId}/result`);
 };
 
 /**
- * 老师查看单个文档作业的成绩列表(所有组的
+ * 老师查看文档作业的成绩列表(已提交小组
  * @returns {Promise<{data:DocumentResultSerializerType}>}
  */
-export const getDocResultListByDoc = () => {
-  return request(`${ASSIGNMENT_MODULE}/teacher/document/:documentId/result`);
+export const getDocResultListByDocId = (documentId = 123) => {
+  return request(
+    `${ASSIGNMENT_MODULE}/teacher/document/${documentId}/submitted/result`
+  );
+};
+
+/**
+ * 老师查看未提交文档作业小组列表
+ * @param documentId
+ * @returns {Promise<{data:GroupSerializerType[]}>}
+ */
+export const getUnsubmittedDocGroupsByDocId = (documentId = 123) => {
+  return request(
+    `${ASSIGNMENT_MODULE}/teacher/document/${documentId}/unsubmitted/groups`
+  );
 };

+ 1 - 1
src/router/routes.js

@@ -130,7 +130,7 @@ export default [
         component: () => import("@/views/student/Document/index")
       },
       {
-        path: "document/detail",
+        path: "document/:documentId",
         component: () => import("@/views/student/Document/detail")
       },
       {

+ 62 - 67
src/views/student/Document/detail.vue

@@ -3,7 +3,7 @@
     <page-header
       :routes="[
         { name: '文档作业', path: 'document' },
-        { name: `${assignmentInfo.name}`, path: 'document/detail' }
+        { name: `${assignmentInfo.name}`, path: 'document/123' }
       ]"
     >
       <template slot="title">
@@ -14,7 +14,33 @@
       </template>
     </page-header>
     <page-body>
-      <b-table :data="tableData" :columns="tableColumns"></b-table>
+      <div class="data-table">
+        <div class="detail-description">
+          <div class="subtitle">题目名称</div>
+          <div class="detail-content">
+            {{ detail.problem ? detail.problem.name : "" }}
+          </div>
+        </div>
+        <div class="detail-description">
+          <div class="subtitle">作业详情</div>
+          <div class="detail-content">
+            {{ detail.problem ? detail.problem.description : "" }}
+          </div>
+        </div>
+        <div class="detail-description">
+          <div class="subtitle">git地址</div>
+          <div class="detail-content">{{ detail.url }}</div>
+        </div>
+
+        <div class="detail-description">
+          <div class="subtitle">所处阶段</div>
+          <div class="detail-content">{{ detail.status }}</div>
+        </div>
+        <div class="detail-description">
+          <div class="subtitle">成绩</div>
+          <div class="detail-content">{{ result.result }}</div>
+        </div>
+      </div>
     </page-body>
   </div>
 </template>
@@ -22,68 +48,9 @@
 <script>
 import PageHeader from "../../../components/PageHeader";
 import PageBody from "../../../components/PageBody";
-const tableData = [
-  {
-    id: 1,
-    first_name: "Jesse",
-    last_name: "Simmons",
-    date: "2016-10-15 13:43:27",
-    gender: "Male"
-  },
-  {
-    id: 2,
-    first_name: "John",
-    last_name: "Jacobs",
-    date: "2016-12-15 06:00:53",
-    gender: "Male"
-  },
-  {
-    id: 3,
-    first_name: "Tina",
-    last_name: "Gilbert",
-    date: "2016-04-26 06:26:28",
-    gender: "Female"
-  },
-  {
-    id: 4,
-    first_name: "Clarence",
-    last_name: "Flores",
-    date: "2016-04-10 10:28:46",
-    gender: "Male"
-  },
-  {
-    id: 5,
-    first_name: "Anne",
-    last_name: "Lee",
-    date: "2016-12-06 14:38:38",
-    gender: "Female"
-  }
-];
-const tableColumns = [
-  {
-    field: "id",
-    label: "ID",
-    width: "40",
-    numeric: true
-  },
-  {
-    field: "first_name",
-    label: "First Name"
-  },
-  {
-    field: "last_name",
-    label: "Last Name"
-  },
-  {
-    field: "date",
-    label: "Date",
-    centered: true
-  },
-  {
-    field: "gender",
-    label: "Gender"
-  }
-];
+import { getDocAssignmentDetailByDocuId } from "@/api/assignment";
+import { getDocResultById } from "@/api/assignment";
+
 const assignmentInfo = {
   id: 0,
   name: "",
@@ -91,6 +58,7 @@ const assignmentInfo = {
   startAt: 0,
   endAt: 0
 };
+
 export default {
   components: {
     PageBody,
@@ -98,15 +66,42 @@ export default {
   },
   mounted() {
     this.assignmentInfo = this.$route.query.assignmentInfo;
+    getDocAssignmentDetailByDocuId(123).then(res => {
+      console.log(res.data);
+      this.detail = res.data;
+    });
+    getDocResultById(123).then(res => {
+      console.log(res.data);
+      this.result = res.data;
+    });
   },
   data() {
     return {
       assignmentInfo,
-      tableData,
-      tableColumns
+      detail: {},
+      result: {}
     };
   }
 };
 </script>
 
-<style scoped></style>
+<style lang="scss" scoped>
+.tag {
+  margin-right: 10px;
+}
+.detail-description {
+  margin-bottom: 1.5rem;
+  .subtitle {
+    width: 100%;
+    font-weight: bold;
+    padding-bottom: 10px;
+    border-bottom: 1px solid #dbdbdb;
+  }
+  .file-info {
+    margin-bottom: 0.75rem;
+    span {
+      margin-left: 0.75rem;
+    }
+  }
+}
+</style>

+ 18 - 47
src/views/student/Document/index.vue

@@ -5,13 +5,13 @@
         文档作业列表
       </template>
       <template slot="content">
-        Here might be a page title
+        共有{n}份作业
       </template>
     </page-header>
     <page-body>
       <div>
         <b-table
-          :data="docData"
+          :data="docList"
           paginated
           per-page="5"
           detailed
@@ -33,15 +33,19 @@
               >
             </b-table-column>
             <b-table-column label="状态" centered>
-              {{ props.row.state }}
+              {{ props.row.status }}
             </b-table-column>
 
             <b-table-column label="开始时间" centered>
-              {{ props.row.startAt }}
+              {{ new Date(props.row.startAt * 1000).getFullYear() }}-{{
+                new Date(props.row.startAt * 1000).getMonth() + 1
+              }}-{{ new Date(props.row.startAt * 1000).getDate() }}
             </b-table-column>
 
             <b-table-column label="结束时间" centered>
-              {{ props.row.endAt }}
+              {{ new Date(props.row.endAt * 1000).getFullYear() }}-{{
+                new Date(props.row.endAt * 1000).getMonth() + 1
+              }}-{{ new Date(props.row.endAt * 1000).getDate() }}
             </b-table-column>
           </template>
 
@@ -52,13 +56,6 @@
                   <p>
                     <strong>作业详情:</strong>
                     <small>{{ props.row.description }}</small> <br />
-                    <strong>git地址:</strong>
-                    <small>{{ props.row.url }}</small> <br />
-                    <strong>题目名称:</strong>
-                    <small>购物车web项目软件需求规格说明书</small> <br />
-                    <strong>处于阶段:</strong>
-                    <small>未开始、正在互评、已评多少份、互评完成</small> <br />
-                    <strong>成绩:</strong> <small>A</small>
                   </p>
                 </div>
               </div>
@@ -73,53 +70,27 @@
 <script>
 import PageHeader from "@/components/PageHeader";
 import PageBody from "@/components/PageBody/index";
-const docData = [
-  {
-    id: 1,
-    name: "软件需求规格说明书",
-    description:
-      "1111111111111111这里是作业详情这里是作业详情这里是作业详情这里是作业详情这里是作业详情这里是作业详情",
-    state: "未开始",
-    startAt: "2019-1-1",
-    endAt: "2019-6-1",
-    url: "https://www.github.com/********************"
-  },
-  {
-    id: 2,
-    name: "用户需求列表",
-    description:
-      "22222222222222222这里是作业详情这里是作业详情这里是作业详情这里是作业详情这里是作业详情这里是作业详情",
-    state: "已结束",
-    startAt: "2019-1-1",
-    endAt: "2019-6-1",
-    url: "https://www.github.com/********************"
-  },
-  {
-    id: 3,
-    name: "项目前景文档",
-    description:
-      "3333333333333333333333这里是作业详情这里是作业详情这里是作业详情这里是作业详情这里是作业详情这里是作业详情",
-    state: "正在进行",
-    startAt: "2019-1-1",
-    endAt: "2019-6-1",
-    url: "https://www.github.com/********************"
-  }
-];
+import { getDocAssignmentListByCrs } from "@/api/assignment";
 export default {
   components: {
     PageBody,
     PageHeader
   },
+  mounted() {
+    getDocAssignmentListByCrs(123).then(res => {
+      console.log(typeof res.data);
+      this.docList = res.data;
+    });
+  },
   data() {
     return {
-      docData,
+      docList: [],
       docAssignment: {
         name: "",
         description: "",
         startAt: new Date(),
         endAt: new Date()
-      },
-      isCardModalActive: false
+      }
     };
   },
   methods: {}

+ 1 - 3
src/views/teacher/Code/detail.vue

@@ -133,7 +133,6 @@ const unsubmited = {
 const info = [
   {
     id: 1,
-    stage: "测试",
     PM: "Jesse",
     members: "Simmons\tClarence\tTina\tJohn",
     build: 0,
@@ -144,7 +143,6 @@ const info = [
   },
   {
     id: 2,
-    stage: "测试",
     build: 1,
     deploy: 1,
     test: 0,
@@ -153,7 +151,6 @@ const info = [
   },
   {
     id: 3,
-    stage: "测试",
     build: 1,
     deploy: 1,
     test: 1,
@@ -177,6 +174,7 @@ const tag = {
 };
 
 const status = {
+  pending: "PENDING",
   success: "SUCCESS",
   failed: "FAILED",
   blank: "BLANK"

+ 2 - 9
src/views/teacher/Document/detail.vue

@@ -10,7 +10,7 @@
         {{ assignmentInfo.name }}
       </template>
       <template slot="content">
-        Here might be a page title
+        作业进行阶段:{{ status }}
       </template>
     </page-header>
 
@@ -51,10 +51,6 @@
                     {{ props.row.id }}
                   </b-table-column>
 
-                  <b-table-column label="阶段" centered>
-                    {{ props.row.stage }}
-                  </b-table-column>
-
                   <b-table-column label="互评负责组" centered>
                     {{ props.row.charge }}
                   </b-table-column>
@@ -150,7 +146,6 @@ const submitInfo = {
 const data = [
   {
     id: 1,
-    stage: "正在互评中",
     charge: "2,3,4,5",
     score: "暂无",
     detail: "查看详情-直接跳转至git地址",
@@ -158,7 +153,6 @@ const data = [
   },
   {
     id: 2,
-    stage: "正在互评中",
     charge: "1,3,5",
     score: "暂无",
     detail: "查看详情",
@@ -166,7 +160,6 @@ const data = [
   },
   {
     id: 3,
-    stage: "互评完成",
     charge: "1,3,5",
     score: "C",
     detail: "查看详情",
@@ -174,7 +167,6 @@ const data = [
   },
   {
     id: 4,
-    stage: "互评完成",
     charge: "1,3,5",
     score: "D",
     detail: "查看详情",
@@ -202,6 +194,7 @@ export default {
   },
   data() {
     return {
+      status: "正在互评",
       courses: [],
       review: [],
       questionType: [