Ver Fonte

Merge branch 'develop' into feature/styleModified-zhouweilu

soleil há 7 anos atrás
pai
commit
6e9ad2ec5b

+ 39 - 0
mock/modules/question/index.js

@@ -0,0 +1,39 @@
+const express = require("express");
+const router = express.Router();
+const QuestionSerializer = require("../../serializers/question/QuestionSerializer");
+const QuestionTypeSerializer = require("../../serializers/question/QuestionTypeSerializer");
+
+//获取全部题目分类
+router.route("/teacher/questionType").get((req, res) => {
+  res.send({
+    data: [
+      QuestionTypeSerializer(),
+      QuestionTypeSerializer(),
+      QuestionTypeSerializer()
+    ]
+  });
+});
+
+//按题目分类获得题目(分页) || 根据作业分类获得题目
+router.route("/teacher/questions").get((req, res) => {
+  res.send({
+    data: [QuestionSerializer(), QuestionSerializer(), QuestionSerializer()],
+    pageNum: 1
+  });
+});
+
+//根据关键字进行模糊查找
+router.route("/teacher/keyword").get((req, res) => {
+  res.send({
+    data: [QuestionSerializer(), QuestionSerializer(), QuestionSerializer()]
+  });
+});
+
+//根据ID查看某个题目
+router.route("/question/:questionId").get((req, res) => {
+  res.send({
+    data: QuestionSerializer()
+  });
+});
+
+module.exports = router;

+ 1 - 0
mock/routes.js

@@ -5,6 +5,7 @@ router.use("/auth", require("./modules/auth"));
 router.use("/user", require("./modules/user"));
 router.use("/course", require("./modules/course"));
 router.use("/group", require("./modules/group"));
+router.use("/question", require("./modules/question"));
 router.use("/review", require("./modules/review"));
 
 module.exports = router;

+ 22 - 0
mock/serializers/FileSerializer.js

@@ -0,0 +1,22 @@
+const makeId = require("../util/makeId");
+/**
+ * @description 文件基本信息
+ * @typedef {Object} FileSerializerType
+ * @property {string} filename 文件名
+ * @property {string} content 文件内容
+ * @property {number} size 文件大小
+ * @property {number} uploader 上传者ID
+ */
+
+/**
+ * @description 生成文件基本信息
+ * @returns {FileSerializerType}
+ */
+module.exports = () => {
+  return {
+    filename: "第一次代码作业需求描述",
+    content: "这里是第一次代码作业的描述bulabulabulala",
+    size: 20,
+    uploader: makeId()
+  };
+};

+ 18 - 0
mock/serializers/assignment/AssignmentTypeSerializer.js

@@ -0,0 +1,18 @@
+/**
+ * @description 作业类型
+ * @typedef {Object} AssignmentTypeSerializerType
+ * @property {string} name 作业分类名
+ * @property {string} value 作业分类内容
+ */
+
+/**
+ * @description 生成作业类型
+ * @returns {AssignmentTypeSerializerType}
+ */
+
+module.exports = () => {
+  return {
+    name: "CODE",
+    value: "团队代码作业"
+  };
+};

+ 28 - 0
mock/serializers/assignment/CodeResultSerializer.js

@@ -0,0 +1,28 @@
+const makeId = require("../../util/makeId");
+const groupSerializer = require("../course/GroupSerializer");
+/**
+ * @description 代码作业成绩(单元测试、功能测试TBD)
+ * @typedef {Object} CodeResultSerializerType
+ * @property {number | string} id 成绩Id
+ * @property {number} code 所属代码作业Id
+ * @property {GroupSerializerType} group 所属小组
+ * @property {number} unitTestScore 单元测试分数
+ * @property {number} functionTestScore 功能测试分数
+ * @property {number} score 总分
+ */
+
+/**
+ * @description 生成代码作业成绩
+ * @returns {CodeResultSerializerType}
+ */
+
+module.exports = () => {
+  return {
+    id: makeId(),
+    code: makeId(),
+    group: groupSerializer(),
+    unitTestScore: 70,
+    functionTestScore: 90,
+    score: 80
+  };
+};

+ 33 - 0
mock/serializers/assignment/CodeSerializer.js

@@ -0,0 +1,33 @@
+const makeId = require("../../util/makeId");
+const questionSerializer = require("../question/QuestionSerializer");
+const dayjs = require("dayjs");
+/**
+ * @description 代码作业详情
+ * @typedef {Object} CodeSerializerType
+ * @property {number | string} id 代码作业Id
+ * @property {string} name 代码作业名称
+ * @property {string} description 代码作业描述
+ * @property {string} status 作业状态
+ * @property {number} createAt 创建时间
+ * @property {number} startAt 开始时间
+ * @property {number} endAt 结束时间
+ * @property {QuestionSerializerType[]} problem 作业题目
+ */
+
+/**
+ * @description 生成代码作业
+ * @returns {CodeSerializerType}
+ */
+
+module.exports = () => {
+  return {
+    id: makeId(),
+    name: "物流管理系统",
+    description: "请为顺丰公司编写一个在线物流管理系统",
+    status: "PREPARING",
+    createAt: dayjs("2018-10-21").unix(),
+    startAt: dayjs("2019-01-01").unix(),
+    endAt: dayjs("2019-01-20").unix(),
+    problem: [questionSerializer(), questionSerializer()]
+  };
+};

+ 26 - 0
mock/serializers/assignment/DocumentResultSerializer.js

@@ -0,0 +1,26 @@
+const makeId = require("../../util/makeId");
+const groupSerializer = require("../course/GroupSerializer");
+/**
+ * @description 文档作业成绩
+ * @typedef {Object} DocumentResultSerializerType
+ * @property {number | string} id 文档作业成绩id
+ * @property {number} document 所属文档作业Id
+ * @property {GroupSerializerType} group 所属小组
+ * @property {string} state 作业状态
+ * @property {string} result 成绩等级
+ */
+
+/**
+ * @description 生成文档作业成绩
+ * @returns {DocumentResultSerializerType}
+ */
+
+module.exports = () => {
+  return {
+    id: makeId(),
+    document: makeId(),
+    group: groupSerializer(),
+    state: "互评中",
+    result: "B"
+  };
+};

+ 35 - 0
mock/serializers/assignment/DocumentSerializer.js

@@ -0,0 +1,35 @@
+const makeId = require("../../util/makeId");
+const questionSerializer = require("../question/QuestionSerializer");
+const dayjs = require("dayjs");
+/**
+ * @description 文档作业信息
+ * @typedef {Object} DocumentSerializerType
+ * @property {number | string} id 文档作业id
+ * @property {string} name 文档作业名称
+ * @property {string} description 文档作业描述
+ * @property {string} status 作业状态
+ * @property {number} createAt 创建时间
+ * @property {number} startAt 开始时间
+ * @property {number} endAt 结束时间
+ * @property {QuestionSerializerType[]} problem 作业题目
+ * @property {string} url 作业git地址
+ */
+
+/**
+ * @description 生成文档作业详情
+ * @returns {DocumentSerializerType}
+ */
+
+module.exports = () => {
+  return {
+    id: makeId(),
+    name: "物流系统需求规格说明文档",
+    description: "请给出物流系统的需求规格说明文档",
+    status: "READY",
+    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"
+  };
+};

+ 31 - 0
mock/serializers/assignment/ProjectSerializer.js

@@ -0,0 +1,31 @@
+const makeId = require("../../util/makeId");
+/**
+ * @description 代码作业项目信息
+ * @typedef {Object} ProjectSerializerType
+ * @property {number | string} id 代码作业项目Id
+ * @property {number | string} codeId 代码作业Id
+ * @property {string} url 项目git地址
+ * @property {string} name 项目名称
+ * @property {number[]} buildIdList 构建IDList
+ * @property {number[]} deployIdList 部署IDList
+ * @property {number[]} unitTestIdList 单元测试IDList
+ * @property {number[]} functionTestIdList 功能测试IDList
+ */
+
+/**
+ * @description 生成代码作业项目信息
+ * @returns {ProjectSerializerType}
+ */
+
+module.exports = function projectSerializer() {
+  return {
+    id: makeId(),
+    codeId: makeId(),
+    url: "http://47.100.18.120:3000/SEEC-II-DOC/API-DOC",
+    name: "物流作业系统_01组",
+    buildIdList: [makeId(), makeId()],
+    deployIdList: [makeId(), makeId(), makeId()],
+    unitTestIdList: [makeId()],
+    functionTestIdList: [makeId(), makeId()]
+  };
+};

+ 40 - 0
mock/serializers/question/QuestionSerializer.js

@@ -0,0 +1,40 @@
+const makeId = require("../../util/makeId");
+const fileSerializer = require("../FileSerializer");
+
+/**
+ * @description 题目信息
+ * @typedef {Object} QuestionSerializerType
+ * @property {number|string} id 题目id
+ * @property {string} name 题目名称
+ * @property {string} description 题目描述
+ * @property {Object} assignmentType 作业类型
+ * @property {Object} type 题目类型
+ * @property {number} creator 创建者id
+ * @property {number} expectTime 预计完成时间
+ * @property {number} difficulty 题目难度
+ * @property {FileSerializerType} file 题目文件
+ */
+
+/**
+ * @description 题目信息
+ * @returns {QuestionSerializerType}
+ */
+module.exports = () => {
+  return {
+    id: makeId(),
+    name: "物流系统需求规格说明书",
+    description: "某公司为xxx快递公司,请为该公司设计一个物流管理系统",
+    assignmentType: {
+      name: "DOCUMENT",
+      value: "文档作业"
+    },
+    type: {
+      name: "DOCUMENT",
+      value: "文档作业"
+    },
+    creator: makeId(),
+    expectTime: 20,
+    difficulty: 1,
+    file: fileSerializer()
+  };
+};

+ 18 - 0
mock/serializers/question/QuestionTypeSerializer.js

@@ -0,0 +1,18 @@
+/**
+ * @description 题目类型
+ * @typedef {Object} QuestionTypeSerializerType
+ * @property {string} name 题目分类名
+ * @property {string} value 题目分类内容
+ */
+
+/**
+ * @description 生成题目类型
+ * @returns {QuestionTypeSerializerType}
+ */
+
+module.exports = () => {
+  return {
+    name: "JAVA",
+    value: "JAVA语言"
+  };
+};

+ 1 - 0
src/api/_prefix.js

@@ -6,4 +6,5 @@ export const PHOTO_MODULE = `${API_VERSION}/photo`;
 export const TAG_MODULE = `${API_VERSION}/tag`;
 export const COURSE_MODULE = `${API_VERSION}/course`;
 export const GROUP_MODULE = `${API_VERSION}/group`;
+export const QUESTION_MODULE = `${API_VERSION}/question`;
 export const REVIEW_MODULE = `${API_VERSION}/review`;

+ 36 - 0
src/api/question.js

@@ -0,0 +1,36 @@
+import request from "@/util/request";
+import { QUESTION_MODULE } from "./_prefix";
+
+/**
+ * 获取全部题目分类
+ * @returns {Promise<{data:QuestionTypeSerializer[]}>}
+ */
+export const getTeacherQuestionType = () => {
+  return request(`${QUESTION_MODULE}/teacher/questionType`);
+};
+
+/**
+ * 按题目分类 || 作业分类获得题目
+ * @returns {Promise<{data:QuestionSerializer[]}>}
+ */
+export const getTeacherQuestions = () => {
+  return request(`${QUESTION_MODULE}/teacher/questions`);
+};
+
+/**
+ * 根据关键字进行查找
+ * @param {string} keyword
+ * @returns {Promise<{data:QuestionSerializer[]}>}
+ */
+export const getTeacherKeywordQuestions = (keyword = "123") => {
+  return request(`${QUESTION_MODULE}/teacher/keyword?keyword=${keyword}`);
+};
+
+/**
+ * 根据题目ID查看单个题目
+ * @param {number | string} questionId
+ * @returns {Promise<{data:QuestionSerializer}>}
+ */
+export const getQuestionDetail = (questionId = 123) => {
+  return request(`${QUESTION_MODULE}/question/${questionId}`);
+};

+ 8 - 0
src/layouts/TeacherMainLayout.vue

@@ -0,0 +1,8 @@
+<template>
+  <div>
+    <div></div>
+    <router-view></router-view>
+  </div>
+</template>
+
+<style lang="scss"></style>