Prevalence 7 年 前
コミット
cb9d4ca177

BIN
dist.zip


+ 1 - 1
mock/modules/resultstatistics/index.js

@@ -3,7 +3,7 @@ const router = express.Router();
 const resultstatisticsSerializer = require("../../serializers/resultstatistics/ResultstatisticsSerializer");
 const resultstatisticsSerializer = require("../../serializers/resultstatistics/ResultstatisticsSerializer");
 
 
 router.route("/course/:courseId").post((req, res) => {
 router.route("/course/:courseId").post((req, res) => {
-  console.log("enter api");
+  // console.log("enter api");
   //获得用户信息
   //获得用户信息
   res.send({
   res.send({
     data: [
     data: [

+ 6 - 0
mock/serializers/review/CheckListResultItemSerializer.js

@@ -6,6 +6,9 @@ const makeId = require("../../util/makeId");
  * @property {number|string} id checkListItem id
  * @property {number|string} id checkListItem id
  * @property {string} content 评价内容
  * @property {string} content 评价内容
  * @property {string} explain 老师说明
  * @property {string} explain 老师说明
+ * @property {boolean} teacherLevel 老师作出的评价
+ * @property {string} teacherComment 老师做出的备注
+ * @property {boolean} hasTeacherReview 老师是否评审过
  * @property {ResultByGroupType[]} results 各个小组的评价
  * @property {ResultByGroupType[]} results 各个小组的评价
  */
  */
 
 
@@ -37,6 +40,9 @@ module.exports = ({ id = makeId() }) => {
     id,
     id,
     content: "该项评价的内容, String",
     content: "该项评价的内容, String",
     explain: "老师的说明,String",
     explain: "老师的说明,String",
+    teacherLevel: true,
+    teacherComment: "老师的评论论论",
+    hasTeacherReview: true,
     results: [groupResult(), groupResult(), groupResult()]
     results: [groupResult(), groupResult(), groupResult()]
   };
   };
 };
 };

ファイルの差分が大きいため隠しています
+ 25 - 58
mock/util/makeLongMarkdown.js


+ 2 - 1
package.json

@@ -15,12 +15,13 @@
     "chart.js": "^2.7.3",
     "chart.js": "^2.7.3",
     "dayjs": "^1.7.8",
     "dayjs": "^1.7.8",
     "file-saver": "^2.0.1",
     "file-saver": "^2.0.1",
+    "highlight.js": "^9.15.6",
+    "marked": "^0.6.2",
     "register-service-worker": "^1.5.2",
     "register-service-worker": "^1.5.2",
     "vue": "^2.5.17",
     "vue": "^2.5.17",
     "vue-chartjs": "^3.4.0",
     "vue-chartjs": "^3.4.0",
     "vue-clipboard2": "^0.3.0",
     "vue-clipboard2": "^0.3.0",
     "vue-flatpickr-component": "^8.1.1",
     "vue-flatpickr-component": "^8.1.1",
-    "vue-markdown": "^2.2.4",
     "vue-router": "^3.0.1",
     "vue-router": "^3.0.1",
     "vuelidate": "^0.7.4",
     "vuelidate": "^0.7.4",
     "vuex": "^3.0.1",
     "vuex": "^3.0.1",

+ 11 - 16
src/api/codehw.js

@@ -1,18 +1,17 @@
 import request from "@/util/request";
 import request from "@/util/request";
 import { CODE_HOMEWORK_MODULE } from "./_prefix";
 import { CODE_HOMEWORK_MODULE } from "./_prefix";
 
 
-/**
- * 获得学生的 代码作业 列表
- */
-export const getCodeHomeworkList = courseId => {
-  console.log(courseId);
-  return {
-    data: [
-      { homeworkId: "1", description: "codeHomework1" },
-      { homeworkId: "2", description: "codeHomework2" }
-    ]
-  };
-};
+// /**
+//  * 获得学生的 代码作业 列表
+//  */
+// export const getCodeHomeworkList = courseId => {
+//   return {
+//     data: [
+//       { homeworkId: "1", description: "codeHomework1" },
+//       { homeworkId: "2", description: "codeHomework2" }
+//     ]
+//   };
+// };
 
 
 /**
 /**
  * 获得某个 Homework 的 Project 列表(应该只有一个)
  * 获得某个 Homework 的 Project 列表(应该只有一个)
@@ -20,8 +19,6 @@ export const getCodeHomeworkList = courseId => {
  * @return {Promise<{data:{projectId:string,name:string}[]}>}
  * @return {Promise<{data:{projectId:string,name:string}[]}>}
  */
  */
 export const getProjectList = homeworkId => {
 export const getProjectList = homeworkId => {
-  //TODO:delete this before deploy
-  console.log(homeworkId);
   return request(`${CODE_HOMEWORK_MODULE}/projects`, {
   return request(`${CODE_HOMEWORK_MODULE}/projects`, {
     method: "POST",
     method: "POST",
     body: {
     body: {
@@ -36,8 +33,6 @@ export const getProjectList = homeworkId => {
  * @return {Promise<{id:string,data:ProjectSerializerType}>}
  * @return {Promise<{id:string,data:ProjectSerializerType}>}
  */
  */
 export const getProjectDetail = projectId => {
 export const getProjectDetail = projectId => {
-  //TODO:delete this before deploy
-  console.log(projectId);
   return request(`${CODE_HOMEWORK_MODULE}/project/${projectId}`);
   return request(`${CODE_HOMEWORK_MODULE}/project/${projectId}`);
 };
 };
 
 

+ 3 - 3
src/api/review.js

@@ -98,13 +98,13 @@ export const getTeacherStartArgue = (reviewId, groupId) => {
  * 老师提交对某次互评作业一个小组的评价结果
  * 老师提交对某次互评作业一个小组的评价结果
  * @param {string|number} reviewId
  * @param {string|number} reviewId
  * @param {string|number} groupId
  * @param {string|number} groupId
- * @param {CheckListItemSerializerType[]} checkList
+ * @param {CheckListItemSerializerType[]} checkListItem
  * @return {Promise<{checkList:CheckListItemSerializerType[]}>}
  * @return {Promise<{checkList:CheckListItemSerializerType[]}>}
  */
  */
-export const postTeacherArgueResult = (reviewId, groupId, checkList) => {
+export const postTeacherArgueResult = (reviewId, groupId, checkListItem) => {
   return request(`${REVIEW_MODULE}/sum/${reviewId}/argue/${groupId}`, {
   return request(`${REVIEW_MODULE}/sum/${reviewId}/argue/${groupId}`, {
     method: "POST",
     method: "POST",
-    body: { checkList }
+    body: { checkList: checkListItem }
   });
   });
 };
 };
 
 

BIN
src/assets/icon/edit-dark.png


+ 24 - 2
src/assets/scss/app.scss

@@ -80,7 +80,29 @@
 }
 }
 
 
 .table td, .table th{
 .table td, .table th{
-  border-width: 0 0 1px;
+  //border-width: 0 0 1px;
   padding: 1em 0.75em;
   padding: 1em 0.75em;
   border-bottom: 1px solid rgba(112, 96, 255, 0.22);
   border-bottom: 1px solid rgba(112, 96, 255, 0.22);
-}
+}
+
+.content pre{
+  background-color: hsl(258, 29%, 97%);
+}
+
+.content table {
+  td{
+    border-bottom: 1px solid hsla(255, 40%, 96%, 1);
+  }
+  th{
+    border-bottom: 1px solid hsla(255, 40%, 96%, 1);
+  }
+
+  display: block;
+  overflow: auto;
+  width: 100%;
+  @extend .table, .is-striped, .is-narrow, .is-fullwidth;
+}
+
+.table.is-striped tbody tr:not(.is-selected):nth-child(even), .content table tbody tr:not(.is-selected):nth-child(even) {
+  background-color: hsla(252, 33%, 98%, 1);
+}

+ 109 - 7
src/components/CheckList/ResultCheckListItem.vue

@@ -1,17 +1,34 @@
 <template>
 <template>
   <card-judge-item :success="pass">
   <card-judge-item :success="pass">
     <div class="result-section">
     <div class="result-section">
-      <strong>{{ checkResultItem.content }}</strong>
+      <div class="line-container">
+        <strong style="flex-grow: 1">
+          <b-tooltip :label="checkResultItem.explain" position="is-top">
+            {{ checkResultItem.content }}
+          </b-tooltip>
+        </strong>
+        <div
+          v-if="canBeReviewed"
+          @click="selectReviewingTarget"
+          class="image-container"
+        >
+          <img
+            style="width: 20px;height: 20px"
+            alt=""
+            src="../../assets/icon/edit-dark.png"
+          />
+        </div>
+      </div>
       <div
       <div
-        :class="{ 'group-line--hover': !result.isArgued }"
+        :class="{ 'group-line--hover': !result.isArgued && !canBeReviewed }"
         class="group-line"
         class="group-line"
         v-for="result in checkResultItem.results"
         v-for="result in checkResultItem.results"
         :key="result.rid"
         :key="result.rid"
         @click="argue(result)"
         @click="argue(result)"
       >
       >
-        <strong style="padding-right:10px;color:grey"
-          >+ id:{{ result.groupId + "\t" }}</strong
-        >
+        <strong style="padding-right:10px;color:grey">
+          + id:{{ result.groupId + "\t" }}
+        </strong>
         <span class="state state-success" v-if="result.level">PASS</span>
         <span class="state state-success" v-if="result.level">PASS</span>
         <span class="state state-error" v-else>ERROR</span>
         <span class="state state-error" v-else>ERROR</span>
         <span class="comments">{{ result.comment }}</span>
         <span class="comments">{{ result.comment }}</span>
@@ -20,9 +37,47 @@
           type="is-warning"
           type="is-warning"
           class="state"
           class="state"
           style="margin-left: 10px;"
           style="margin-left: 10px;"
-          >已申请
+        >
+          已申请
         </b-tag>
         </b-tag>
       </div>
       </div>
+      <div
+        v-if="checkResultItem.hasTeacherReview && !isReviewing"
+        :class="{ 'group-line--hover': canBeReviewed }"
+        @click="selectReviewingTarget"
+        class="group-line"
+      >
+        <strong style="padding-right:10px;color:grey">「老师评价」</strong>
+        <span class="state state-success" v-if="checkResultItem.teacherLevel">
+          PASS
+        </span>
+        <span class="state state-error" v-else>ERROR</span>
+        <span class="comments">{{ checkResultItem.teacherComment }}</span>
+      </div>
+      <div v-if="isReviewing">
+        <div class="line-container">
+          <b-checkbox
+            class="checkbox-section"
+            v-model="reviewLevel"
+            type="is-primary"
+          >
+            是否满足条件
+          </b-checkbox>
+          <a
+            class="button is-small is-primary"
+            :class="{ 'is-loading': submitLoading }"
+            @click="submitReviewResult"
+          >
+            提交
+          </a>
+        </div>
+
+        <b-input
+          placeholder="请输入评价"
+          v-model="reviewComment"
+          type="textarea"
+        ></b-input>
+      </div>
     </div>
     </div>
 
 
     <b-modal :active.sync="showModal" :width="400">
     <b-modal :active.sync="showModal" :width="400">
@@ -60,6 +115,14 @@ export default {
     arguable: {
     arguable: {
       type: Boolean,
       type: Boolean,
       default: false
       default: false
+    },
+    canBeReviewed: {
+      type: Boolean,
+      default: false
+    },
+    isReviewing: {
+      type: Boolean,
+      default: false
     }
     }
   },
   },
   data() {
   data() {
@@ -67,16 +130,26 @@ export default {
       selectedResult: {},
       selectedResult: {},
       showModal: false,
       showModal: false,
       remark: "",
       remark: "",
-      submitLoading: false
+      submitLoading: false,
+      reviewLevel: this.checkResultItem.teacherLevel,
+      reviewComment: this.checkResultItem.teacherComment || ""
     };
     };
   },
   },
   computed: {
   computed: {
     pass() {
     pass() {
       const { results = [] } = this.checkResultItem;
       const { results = [] } = this.checkResultItem;
+      if (this.checkResultItem.hasTeacherReview) {
+        return this.checkResultItem.teacherLevel;
+      }
       return results.filter(result => result.level === false).length === 0;
       return results.filter(result => result.level === false).length === 0;
     }
     }
   },
   },
   methods: {
   methods: {
+    selectReviewingTarget() {
+      if (this.canBeReviewed) {
+        this.$emit("review-item", this.checkResultItem.id);
+      }
+    },
     argue(result) {
     argue(result) {
       if (this.arguable && !result.isArgued) {
       if (this.arguable && !result.isArgued) {
         this.selectedResult = result;
         this.selectedResult = result;
@@ -93,6 +166,15 @@ export default {
       this.submitLoading = false;
       this.submitLoading = false;
       this.showModal = false;
       this.showModal = false;
       this.remark = "";
       this.remark = "";
+    },
+    async submitReviewResult() {
+      this.submitLoading = true;
+      await this.$emit("review-teacher", {
+        id: this.checkResultItem.id,
+        level: this.reviewLevel,
+        comment: this.reviewComment
+      });
+      this.submitLoading = false;
     }
     }
   }
   }
 };
 };
@@ -100,6 +182,10 @@ export default {
 
 
 <style lang="scss" scoped>
 <style lang="scss" scoped>
 @import "../../assets/scss/app";
 @import "../../assets/scss/app";
+.checkbox-section {
+  padding: $default-margin 0;
+}
+
 .result-section {
 .result-section {
   padding: $default-margin;
   padding: $default-margin;
   border-bottom: 1px solid rgba(0, 0, 0, 0.12);
   border-bottom: 1px solid rgba(0, 0, 0, 0.12);
@@ -110,6 +196,12 @@ export default {
   border-radius: $default-radius;
   border-radius: $default-radius;
 }
 }
 
 
+.line-container {
+  display: flex;
+  justify-content: space-between;
+  align-items: center;
+}
+
 .state {
 .state {
   padding: 2px 5px;
   padding: 2px 5px;
   font-weight: bold;
   font-weight: bold;
@@ -131,6 +223,16 @@ export default {
   font-size: 14px;
   font-size: 14px;
 }
 }
 
 
+.image-container {
+  border-radius: 2px;
+  height: 20px;
+  cursor: pointer;
+}
+
+.image-container:hover {
+  background-color: #f6f5fa;
+}
+
 .group-line {
 .group-line {
   padding: 2px 0;
   padding: 2px 0;
   border-radius: $default-radius;
   border-radius: $default-radius;

+ 4 - 3
src/components/CheckList/index.vue

@@ -44,7 +44,7 @@
       />
       />
       <div
       <div
         class="action-section--warning action-section "
         class="action-section--warning action-section "
-        v-if="item.state === 'PENDING'"
+        v-if="item.state === 'PENDING' && review.state === 'ARGUING'"
       >
       >
         <span
         <span
           @click="acceptArgue(item)"
           @click="acceptArgue(item)"
@@ -61,14 +61,15 @@
       </div>
       </div>
       <div
       <div
         class="action-section--primary action-section "
         class="action-section--primary action-section "
-        v-if="item.state === 'SOLVING'"
+        v-if="item.state === 'SOLVING' && review.state === 'SOLVING'"
       >
       >
         <span
         <span
           @click="submitSolution(item)"
           @click="submitSolution(item)"
           :class="{ 'is-loading': submitSolutionLoading }"
           :class="{ 'is-loading': submitSolutionLoading }"
           class="button is-primary"
           class="button is-primary"
-          >提交处理好的申诉</span
         >
         >
+          提交处理好的申诉
+        </span>
       </div>
       </div>
     </card-judge-item>
     </card-judge-item>
   </div>
   </div>

+ 22 - 0
src/components/Markdown/index.jsx

@@ -0,0 +1,22 @@
+import marked from "marked";
+import highlight from "highlight.js";
+import "highlight.js/styles/github.css";
+// import VueMarkdown from "vue-markdown";
+
+export default {
+  name: "Markdown",
+  render() {
+    const content = this.$slots.default;
+    return (
+      <div
+        domPropsInnerHTML={marked(content[0].text || "", {
+          pedantic: false,
+          breaks: true,
+          gfm: true,
+          highlight: code => highlight.highlightAuto(code).value
+        })}
+      />
+    );
+    // return <VueMarkdown>{content[0].text}</VueMarkdown>;
+  }
+};

+ 4 - 4
src/layouts/courseLayouts/LayoutStructure.vue

@@ -72,6 +72,8 @@ $left-padding-calc: calc(#{$left-padding});
 $left-width-calc: calc(#{$left-width});
 $left-width-calc: calc(#{$left-width});
 $top-section-height: 4.25rem;
 $top-section-height: 4.25rem;
 
 
+$left-final-width: 280px;
+
 .course-layout {
 .course-layout {
   display: flex;
   display: flex;
   min-height: 100vh;
   min-height: 100vh;
@@ -80,14 +82,12 @@ $top-section-height: 4.25rem;
 }
 }
 
 
 .router-section {
 .router-section {
-  /*padding: 24px;*/
-  flex: 1;
-  /*max-width: 1000px;*/
+  width: calc(100vw - #{$left-final-width});
 }
 }
 .menu-section {
 .menu-section {
   //min-width: $menu-width;
   //min-width: $menu-width;
   //width: $left-width-calc;
   //width: $left-width-calc;
-  min-width: 280px;
+  width: 280px;
   /*background: white;*/
   /*background: white;*/
   /*border-right: 3px solid rgb(159, 148, 254);*/
   /*border-right: 3px solid rgb(159, 148, 254);*/
   padding-left: $left-padding-calc;
   padding-left: $left-padding-calc;

+ 1 - 1
src/views/student/Code/ProjectDetail/Test/UnitTestDetail.vue

@@ -48,7 +48,7 @@
             <div>
             <div>
               <pass-tag :pass="item.pass" />
               <pass-tag :pass="item.pass" />
               <strong style="padding-left: 10px">
               <strong style="padding-left: 10px">
-                页面测试用例 : #{{ item.id }}
+                单元测试用例 : #{{ item.id }}
               </strong>
               </strong>
             </div>
             </div>
             <div v-if="!item.pass" class="code-section">
             <div v-if="!item.pass" class="code-section">

+ 0 - 1
src/views/student/Code/ProjectDetail/TestDetail.vue

@@ -136,7 +136,6 @@ export default {
       }
       }
     },
     },
     sortTestList(list) {
     sortTestList(list) {
-      console.log(list);
       if (!list) return [];
       if (!list) return [];
       const copyList = list.slice(0);
       const copyList = list.slice(0);
       copyList.sort((a, b) => b.time - a.time);
       copyList.sort((a, b) => b.time - a.time);

+ 8 - 4
src/views/student/Code/ProjectDetail/index.vue

@@ -32,9 +32,14 @@
       <template slot="content">
       <template slot="content">
         <strong>git 地址 : </strong>
         <strong>git 地址 : </strong>
         <a :href="projectDetail.url" target="_blank">{{ projectDetail.url }}</a>
         <a :href="projectDetail.url" target="_blank">{{ projectDetail.url }}</a>
-        <a style="margin-left:10px;" class="button is-small" v-clipboard:copy="projectDetail.url"
-           v-clipboard:success="onCopy"
-           v-clipboard:error="onError">复制地址</a>
+        <a
+          style="margin-left:10px;"
+          class="button is-small"
+          v-clipboard:copy="projectDetail.url"
+          v-clipboard:success="onCopy"
+          v-clipboard:error="onError"
+          >复制地址</a
+        >
       </template>
       </template>
     </page-header>
     </page-header>
     <page-body>
     <page-body>
@@ -79,7 +84,6 @@ export default {
     const { projectId } = this.$route.params;
     const { projectId } = this.$route.params;
     this.detailLoading = true;
     this.detailLoading = true;
     const detail = await getProjectDetail(projectId);
     const detail = await getProjectDetail(projectId);
-    console.log(detail.data);
     this.projectDetail = detail.data;
     this.projectDetail = detail.data;
     this.detailLoading = false;
     this.detailLoading = false;
   }
   }

+ 16 - 0
src/views/student/Code/index.vue

@@ -27,6 +27,12 @@
           >
           >
             <card hoverable>
             <card hoverable>
               {{ item.name }}
               {{ item.name }}
+              <div class="hw-time">
+                <small
+                  >{{ timeExchange(item.createAt) }} ~
+                  {{ timeExchange(item.endAt) }}</small
+                >
+              </div>
               <div><code-state-tag :state="item.status"></code-state-tag></div>
               <div><code-state-tag :state="item.status"></code-state-tag></div>
             </card>
             </card>
           </router-link>
           </router-link>
@@ -71,6 +77,13 @@ export default {
       codeHomeworkListLoading: false
       codeHomeworkListLoading: false
     };
     };
   },
   },
+  methods: {
+    timeExchange(timestamp) {
+      return new Date(parseInt(timestamp) * 1000)
+        .toLocaleString()
+        .replace(/:\d{1,2}$/, " ");
+    }
+  },
   async mounted() {
   async mounted() {
     this.codeHomeworkListLoading = true;
     this.codeHomeworkListLoading = true;
     const { courseId } = this.$route.params;
     const { courseId } = this.$route.params;
@@ -85,4 +98,7 @@ export default {
 .top-nav-section {
 .top-nav-section {
   padding: 0 40px;
   padding: 0 40px;
 }
 }
+.hw-time {
+  color: #656565;
+}
 </style>
 </style>

+ 6 - 1
src/views/student/Document/detail.vue

@@ -63,7 +63,12 @@
           <div class="columns is-desktop" v-show="isAvailable">
           <div class="columns is-desktop" v-show="isAvailable">
             <div class="column">
             <div class="column">
               <h5 class="title is-5">查看文档内容</h5>
               <h5 class="title is-5">查看文档内容</h5>
-              <div class="subtitle is-6"><router-link :to="{path: `${$route.path}/content/${docResult.id}`}">查看文档内容</router-link></div>
+              <div class="subtitle is-6">
+                <router-link
+                  :to="{ path: `${$route.path}/content/${docResult.id}` }"
+                  >查看文档内容</router-link
+                >
+              </div>
             </div>
             </div>
           </div>
           </div>
           <div class="columns is-desktop" v-show="isAvailable">
           <div class="columns is-desktop" v-show="isAvailable">

+ 18 - 8
src/views/student/Document/docContent.vue

@@ -17,11 +17,21 @@
       <template slot="content">
       <template slot="content">
         题目名称:{{ contentResult.name }} <br />
         题目名称:{{ contentResult.name }} <br />
         <br />
         <br />
-      对应提交: <b-tag type="is-primary">{{contentResult.gitCommit ? contentResult.gitCommit.substring(0,8) : '暂无commit记录' }}</b-tag>
-          <a class="button is-small" v-clipboard:copy="message"
-                  v-clipboard:success="onCopy"
-                  v-clipboard:error="onError" style="margin-left:10px;">复制</a>
-      <br/><br/>
+        对应提交:
+        <b-tag type="is-primary">{{
+          contentResult.gitCommit
+            ? contentResult.gitCommit.substring(0, 8)
+            : "暂无commit记录"
+        }}</b-tag>
+        <a
+          class="button is-small"
+          v-clipboard:copy="message"
+          v-clipboard:success="onCopy"
+          v-clipboard:error="onError"
+          style="margin-left:10px;"
+          >复制</a
+        >
+        <br /><br />
         小组成员:<span
         小组成员:<span
           v-for="member in contentResult.group.members"
           v-for="member in contentResult.group.members"
           :key="member.id"
           :key="member.id"
@@ -47,7 +57,7 @@
         <page-section-loading :show="loadingDocContent" />
         <page-section-loading :show="loadingDocContent" />
         <div v-if="!loadingDocContent" class="page-section">
         <div v-if="!loadingDocContent" class="page-section">
           <div v-if="contentResult.content" class="content">
           <div v-if="contentResult.content" class="content">
-            <vue-markdown>{{ contentResult.content }}</vue-markdown>
+            <markdown>{{ contentResult.content }}</markdown>
           </div>
           </div>
         </div>
         </div>
       </div>
       </div>
@@ -59,15 +69,15 @@
 import PageHeader from "@/components/PageHeader";
 import PageHeader from "@/components/PageHeader";
 import PageBody from "@/components/PageBody/index";
 import PageBody from "@/components/PageBody/index";
 import { getDocAssignmentContentByDocId } from "@/api/assignment";
 import { getDocAssignmentContentByDocId } from "@/api/assignment";
-import VueMarkdown from "vue-markdown";
 import PageSectionLoading from "@/components/PageBody/PageSectionLoading/index";
 import PageSectionLoading from "@/components/PageBody/PageSectionLoading/index";
 import timeMixins from "@/mixins/time";
 import timeMixins from "@/mixins/time";
+import Markdown from "@/components/Markdown";
 export default {
 export default {
   mixins: [timeMixins],
   mixins: [timeMixins],
   components: {
   components: {
+    Markdown,
     PageBody,
     PageBody,
     PageHeader,
     PageHeader,
-    VueMarkdown,
     PageSectionLoading
     PageSectionLoading
   },
   },
   methods: {
   methods: {

+ 4 - 4
src/views/student/Review/ReviewDetail/ReviewSelfDetail/index.vue

@@ -5,7 +5,7 @@
         <page-section-loading :show="selfDetailLoading" />
         <page-section-loading :show="selfDetailLoading" />
         <div v-if="!selfDetailLoading" class="page-section">
         <div v-if="!selfDetailLoading" class="page-section">
           <div v-if="detail.docContent" class="content">
           <div v-if="detail.docContent" class="content">
-            <vue-markdown>{{ detail.docContent }}</vue-markdown>
+            <markdown>{{ detail.docContent }}</markdown>
           </div>
           </div>
         </div>
         </div>
       </div>
       </div>
@@ -31,7 +31,6 @@
   </div>
   </div>
 </template>
 </template>
 <script>
 <script>
-import VueMarkdown from "vue-markdown";
 import {
 import {
   getStudentReviewSelfDetail,
   getStudentReviewSelfDetail,
   postStudentArgueReview
   postStudentArgueReview
@@ -39,11 +38,12 @@ import {
 import timeMixins from "@/mixins/time";
 import timeMixins from "@/mixins/time";
 import ResultCheckListItem from "@/components/CheckList/ResultCheckListItem";
 import ResultCheckListItem from "@/components/CheckList/ResultCheckListItem";
 import PageSectionLoading from "@/components/PageBody/PageSectionLoading/index";
 import PageSectionLoading from "@/components/PageBody/PageSectionLoading/index";
+import Markdown from "@/components/Markdown";
 export default {
 export default {
   components: {
   components: {
+    Markdown,
     PageSectionLoading,
     PageSectionLoading,
-    ResultCheckListItem,
-    VueMarkdown
+    ResultCheckListItem
   },
   },
   data() {
   data() {
     return {
     return {

+ 4 - 4
src/views/student/Review/ReviewDocDetail/index.vue

@@ -23,7 +23,7 @@
           <div v-if="fetchLoading"><page-section-loading show /></div>
           <div v-if="fetchLoading"><page-section-loading show /></div>
           <div v-else class="page-section">
           <div v-else class="page-section">
             <div v-if="detail.docContent" class="content">
             <div v-if="detail.docContent" class="content">
-              <vue-markdown>{{ detail.docContent }}</vue-markdown>
+              <markdown>{{ detail.docContent }}</markdown>
             </div>
             </div>
           </div>
           </div>
         </div>
         </div>
@@ -57,7 +57,6 @@
 <script>
 <script>
 import PageHeader from "@/components/PageHeader";
 import PageHeader from "@/components/PageHeader";
 import PageBody from "@/components/PageBody/index";
 import PageBody from "@/components/PageBody/index";
-import VueMarkdown from "vue-markdown";
 import {
 import {
   getStudentReviewDocDetail,
   getStudentReviewDocDetail,
   postStudentArgueAcceptation,
   postStudentArgueAcceptation,
@@ -68,14 +67,15 @@ import timeMixins from "@/mixins/time";
 import ReviewStateTag from "@/components/ReviewStateTag/index";
 import ReviewStateTag from "@/components/ReviewStateTag/index";
 import CheckList from "@/components/CheckList/index";
 import CheckList from "@/components/CheckList/index";
 import PageSectionLoading from "@/components/PageBody/PageSectionLoading/index";
 import PageSectionLoading from "@/components/PageBody/PageSectionLoading/index";
+import Markdown from "@/components/Markdown";
 export default {
 export default {
   components: {
   components: {
+    Markdown,
     PageSectionLoading,
     PageSectionLoading,
     CheckList,
     CheckList,
     ReviewStateTag,
     ReviewStateTag,
     PageBody,
     PageBody,
-    PageHeader,
-    VueMarkdown
+    PageHeader
   },
   },
   data() {
   data() {
     return {
     return {

+ 1 - 1
src/views/teacher/Code/ProjectDetail/TestDetail.vue

@@ -15,7 +15,7 @@
           tag="div"
           tag="div"
         >
         >
           <div><strong>UNIT TEST : #</strong> {{ item.id }}</div>
           <div><strong>UNIT TEST : #</strong> {{ item.id }}</div>
-          <pass-tag :pass="item.isPassAll" />
+          <pass-tag :pass="item.passAll" />
           <span style="padding-left: 10px">{{
           <span style="padding-left: 10px">{{
             displayUnixTime(item.time)
             displayUnixTime(item.time)
           }}</span>
           }}</span>

+ 11 - 6
src/views/teacher/Document/docContent.vue

@@ -17,9 +17,14 @@
       <template slot="content">
       <template slot="content">
         题目名称:{{ contentResult.name }} <br />
         题目名称:{{ contentResult.name }} <br />
         <br />
         <br />
-        对应提交: <b-tag type="is-primary">{{contentResult.gitCommit ? contentResult.gitCommit.substring(0,8) : '暂无commit记录' }}</b-tag>
-        <br/>
-        <br/>
+        对应提交:
+        <b-tag type="is-primary">{{
+          contentResult.gitCommit
+            ? contentResult.gitCommit.substring(0, 8)
+            : "暂无commit记录"
+        }}</b-tag>
+        <br />
+        <br />
         小组成员:<span
         小组成员:<span
           v-for="member in contentResult.group.members"
           v-for="member in contentResult.group.members"
           :key="member.id"
           :key="member.id"
@@ -45,7 +50,7 @@
         <page-section-loading :show="loadingDocContent" />
         <page-section-loading :show="loadingDocContent" />
         <div v-if="!loadingDocContent" class="page-section">
         <div v-if="!loadingDocContent" class="page-section">
           <div v-if="contentResult.content" class="content">
           <div v-if="contentResult.content" class="content">
-            <vue-markdown>{{ contentResult.content }}</vue-markdown>
+            <markdown>{{ contentResult.content }}</markdown>
           </div>
           </div>
         </div>
         </div>
       </div>
       </div>
@@ -57,15 +62,15 @@
 import PageHeader from "@/components/PageHeader";
 import PageHeader from "@/components/PageHeader";
 import PageBody from "@/components/PageBody/index";
 import PageBody from "@/components/PageBody/index";
 import { getDocContentByDocId } from "@/api/assignment";
 import { getDocContentByDocId } from "@/api/assignment";
-import VueMarkdown from "vue-markdown";
 import PageSectionLoading from "@/components/PageBody/PageSectionLoading/index";
 import PageSectionLoading from "@/components/PageBody/PageSectionLoading/index";
 import timeMixins from "@/mixins/time";
 import timeMixins from "@/mixins/time";
+import Markdown from "@/components/Markdown";
 export default {
 export default {
   mixins: [timeMixins],
   mixins: [timeMixins],
   components: {
   components: {
+    Markdown,
     PageBody,
     PageBody,
     PageHeader,
     PageHeader,
-    VueMarkdown,
     PageSectionLoading
     PageSectionLoading
   },
   },
   data() {
   data() {

+ 1 - 1
src/views/teacher/Question/questionDetail.vue

@@ -78,7 +78,7 @@ export default {
     this.questionName = this.$route.query.questionName;
     this.questionName = this.$route.query.questionName;
     this.questionId = this.$route.query.questionId;
     this.questionId = this.$route.query.questionId;
     getQuestionDetail(this.questionId).then(res => {
     getQuestionDetail(this.questionId).then(res => {
-      console.log(res.data);
+      // console.log(res.data);
       this.questionInfo = res.data;
       this.questionInfo = res.data;
       this.isQuestionDetailLoading = false;
       this.isQuestionDetailLoading = false;
     });
     });

+ 5 - 5
src/views/teacher/Result/index.vue

@@ -257,7 +257,7 @@ export default {
         ];
         ];
         data.push(outPutInfo);
         data.push(outPutInfo);
       }
       }
-      console.log(data);
+      // console.log(data);
       const [fileName, fileType, sheetName] = ["学生成绩", "xlsx", "成绩"];
       const [fileName, fileType, sheetName] = ["学生成绩", "xlsx", "成绩"];
       toExcel({ th, data, fileName, fileType, sheetName });
       toExcel({ th, data, fileName, fileType, sheetName });
     },
     },
@@ -303,7 +303,7 @@ export default {
         resultPercentList.push(reviewHw);
         resultPercentList.push(reviewHw);
       }
       }
       this.resultPercentList = resultPercentList;
       this.resultPercentList = resultPercentList;
-      console.log(resultPercentList);
+      // console.log(resultPercentList);
     },
     },
     //统计学生成绩分段
     //统计学生成绩分段
     studenResultStatistics(studentResults) {
     studenResultStatistics(studentResults) {
@@ -430,8 +430,8 @@ export default {
           codePercentList,
           codePercentList,
           reviewPercentList
           reviewPercentList
         )
         )
-          .then(res => {
-            console.log(res);
+          .then(() => {
+            // console.log(res);
             this.$toast.open({
             this.$toast.open({
               message: "成绩比例调整成功",
               message: "成绩比例调整成功",
               type: "is-success"
               type: "is-success"
@@ -442,7 +442,7 @@ export default {
             this.getFinalResult(this.data);
             this.getFinalResult(this.data);
             this.studenResultStatistics(this.studentFinalResultList);
             this.studenResultStatistics(this.studentFinalResultList);
             let myChart2 = this.myChart2;
             let myChart2 = this.myChart2;
-            console.log(myChart2);
+            // console.log(myChart2);
             myChart2.data.datasets[0].data = this.studentResultChartData;
             myChart2.data.datasets[0].data = this.studentResultChartData;
             myChart2.update();
             myChart2.update();
           })
           })

+ 4 - 4
src/views/teacher/Review/ReviewDetail/GroupArgueDetail/index.vue

@@ -32,7 +32,7 @@
         <div class="column is-8">
         <div class="column is-8">
           <div class="page-section">
           <div class="page-section">
             <div v-if="detail.docContent" class="content">
             <div v-if="detail.docContent" class="content">
-              <vue-markdown>{{ detail.docContent }}</vue-markdown>
+              <markdown>{{ detail.docContent }}</markdown>
             </div>
             </div>
           </div>
           </div>
         </div>
         </div>
@@ -53,19 +53,19 @@
   </div>
   </div>
 </template>
 </template>
 <script>
 <script>
-import VueMarkdown from "vue-markdown";
 import { getTeacherStartArgue, postTeacherArgueResult } from "@/api/review";
 import { getTeacherStartArgue, postTeacherArgueResult } from "@/api/review";
 import timeMixins from "@/mixins/time";
 import timeMixins from "@/mixins/time";
 import PageHeader from "@/components/PageHeader";
 import PageHeader from "@/components/PageHeader";
 import PageBody from "@/components/PageBody/index";
 import PageBody from "@/components/PageBody/index";
 import { getGroupDetail } from "@/api/group";
 import { getGroupDetail } from "@/api/group";
 import CheckList from "@/components/CheckList/index";
 import CheckList from "@/components/CheckList/index";
+import Markdown from "@/components/Markdown";
 export default {
 export default {
   components: {
   components: {
+    Markdown,
     PageBody,
     PageBody,
     PageHeader,
     PageHeader,
-    CheckList,
-    VueMarkdown
+    CheckList
   },
   },
   data() {
   data() {
     return {
     return {

+ 45 - 17
src/views/teacher/Review/ReviewDetail/GroupDocDetail/index.vue

@@ -16,11 +16,6 @@
       <template slot="title">
       <template slot="title">
         {{ groupDetail.name }}
         {{ groupDetail.name }}
       </template>
       </template>
-      <template slot="action">
-        <router-link :to="`${$route.path}/argue`" class="button is-primary">
-          开始重评
-        </router-link>
-      </template>
     </page-header>
     </page-header>
     <page-body>
     <page-body>
       <div class="columns">
       <div class="columns">
@@ -28,19 +23,27 @@
           <div v-if="detailLoading"><page-section-loading show /></div>
           <div v-if="detailLoading"><page-section-loading show /></div>
           <div v-else class="page-section">
           <div v-else class="page-section">
             <div v-if="detail.docContent" class="content">
             <div v-if="detail.docContent" class="content">
-              <vue-markdown>{{ detail.docContent }}</vue-markdown>
+              <markdown>{{ detail.docContent }}</markdown>
             </div>
             </div>
           </div>
           </div>
         </div>
         </div>
         <div class="column is-4">
         <div class="column is-4">
           <div class="right-part">
           <div class="right-part">
             <div v-if="detailLoading"><page-section-loading show /></div>
             <div v-if="detailLoading"><page-section-loading show /></div>
-            <result-check-list-item
-              v-else
-              v-for="item in detail.checkListResult"
-              :key="item.id"
-              :check-result-item="item"
-            />
+            <div v-else>
+              <div v-if="!!detail.level" class="notification is-success">
+                <strong>小组得分 : </strong>{{ detail.level }}
+              </div>
+              <result-check-list-item
+                v-for="item in detail.checkListResult"
+                :key="item.id"
+                :check-result-item="item"
+                :can-be-reviewed="true"
+                :is-reviewing="item.id === reviewingId"
+                @review-item="onReviewItem"
+                @review-teacher="onReviewSubmit"
+              />
+            </div>
           </div>
           </div>
         </div>
         </div>
       </div>
       </div>
@@ -48,21 +51,24 @@
   </div>
   </div>
 </template>
 </template>
 <script>
 <script>
-import VueMarkdown from "vue-markdown";
-import { getTeacherReviewGroupDetail } from "@/api/review";
+import {
+  getTeacherReviewGroupDetail,
+  postTeacherArgueResult
+} from "@/api/review";
 import timeMixins from "@/mixins/time";
 import timeMixins from "@/mixins/time";
 import ResultCheckListItem from "@/components/CheckList/ResultCheckListItem";
 import ResultCheckListItem from "@/components/CheckList/ResultCheckListItem";
 import PageHeader from "@/components/PageHeader";
 import PageHeader from "@/components/PageHeader";
 import PageBody from "@/components/PageBody/index";
 import PageBody from "@/components/PageBody/index";
 import { getGroupDetail } from "@/api/group";
 import { getGroupDetail } from "@/api/group";
 import PageSectionLoading from "@/components/PageBody/PageSectionLoading/index";
 import PageSectionLoading from "@/components/PageBody/PageSectionLoading/index";
+import Markdown from "@/components/Markdown";
 export default {
 export default {
   components: {
   components: {
+    Markdown,
     PageSectionLoading,
     PageSectionLoading,
     PageBody,
     PageBody,
     PageHeader,
     PageHeader,
-    ResultCheckListItem,
-    VueMarkdown
+    ResultCheckListItem
   },
   },
   data() {
   data() {
     return {
     return {
@@ -73,10 +79,32 @@ export default {
       detailLoading: false,
       detailLoading: false,
       groupDetail: {},
       groupDetail: {},
       groupDetailLoading: false,
       groupDetailLoading: false,
-      submitLoading: false
+      submitLoading: false,
+      reviewingId: -1
     };
     };
   },
   },
   mixins: [timeMixins],
   mixins: [timeMixins],
+  methods: {
+    onReviewItem(id) {
+      this.reviewingId = id;
+    },
+    onReviewSubmit(checkListItem) {
+      const { reviewId, groupId } = this.$route.params;
+      postTeacherArgueResult(reviewId, groupId, checkListItem)
+        .then(() =>
+          getTeacherReviewGroupDetail(reviewId, groupId).then(resp => {
+            this.detail = resp.data;
+            this.reviewingId = -1;
+          })
+        )
+        .catch(err =>
+          this.$toast.open({
+            message: err.message || "服务器未知错误",
+            type: "is-danger"
+          })
+        );
+    }
+  },
   mounted() {
   mounted() {
     const { reviewId, groupId } = this.$route.params;
     const { reviewId, groupId } = this.$route.params;
     this.detailLoading = true;
     this.detailLoading = true;

+ 2 - 4
vue.config.js

@@ -2,12 +2,10 @@ module.exports = {
   devServer: {
   devServer: {
     proxy: {
     proxy: {
       "^/api": {
       "^/api": {
-        // target: "http://localhost:18080/",
         target: "http://localhost:4000/",
         target: "http://localhost:4000/",
-
         // target: "http://10.1.1.198:8080/",
         // target: "http://10.1.1.198:8080/",
-        //target: "http://192.168.0.101:8080",
-        // target: "http://10.1.2.3:8080/",
+        // target: "http://192.168.0.100:8080",
+        // target: "http://seec.yangshan.tech",
 
 
         ws: true,
         ws: true,
         changeOrigin: true
         changeOrigin: true

+ 14 - 123
yarn.lock

@@ -1978,7 +1978,7 @@ cli-width@^2.0.0:
 
 
 clipboard@^2.0.0:
 clipboard@^2.0.0:
   version "2.0.4"
   version "2.0.4"
-  resolved "http://registry.npm.taobao.org/clipboard/download/clipboard-2.0.4.tgz#836dafd66cf0fea5d71ce5d5b0bf6e958009112d"
+  resolved "https://registry.npm.taobao.org/clipboard/download/clipboard-2.0.4.tgz#836dafd66cf0fea5d71ce5d5b0bf6e958009112d"
   integrity sha1-g22v1mzw/qXXHOXVsL9ulYAJES0=
   integrity sha1-g22v1mzw/qXXHOXVsL9ulYAJES0=
   dependencies:
   dependencies:
     good-listener "^1.2.2"
     good-listener "^1.2.2"
@@ -2021,10 +2021,6 @@ clone@^1.0.2:
   version "1.0.4"
   version "1.0.4"
   resolved "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e"
   resolved "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e"
 
 
-clone@^2.1.0:
-  version "2.1.2"
-  resolved "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f"
-
 co@^4.6.0:
 co@^4.6.0:
   version "4.6.0"
   version "4.6.0"
   resolved "https://registry.npmjs.org/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184"
   resolved "https://registry.npmjs.org/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184"
@@ -2662,7 +2658,7 @@ delayed-stream@~1.0.0:
 
 
 delegate@^3.1.2:
 delegate@^3.1.2:
   version "3.2.0"
   version "3.2.0"
-  resolved "http://registry.npm.taobao.org/delegate/download/delegate-3.2.0.tgz#b66b71c3158522e8ab5744f720d8ca0c2af59166"
+  resolved "https://registry.npm.taobao.org/delegate/download/delegate-3.2.0.tgz#b66b71c3158522e8ab5744f720d8ca0c2af59166"
   integrity sha1-tmtxwxWFIuirV0T3INjKDCr1kWY=
   integrity sha1-tmtxwxWFIuirV0T3INjKDCr1kWY=
 
 
 delegates@^1.0.0:
 delegates@^1.0.0:
@@ -3810,7 +3806,7 @@ globule@^1.0.0:
 
 
 good-listener@^1.2.2:
 good-listener@^1.2.2:
   version "1.2.2"
   version "1.2.2"
-  resolved "http://registry.npm.taobao.org/good-listener/download/good-listener-1.2.2.tgz#d53b30cdf9313dffb7dc9a0d477096aa6d145c50"
+  resolved "https://registry.npm.taobao.org/good-listener/download/good-listener-1.2.2.tgz#d53b30cdf9313dffb7dc9a0d477096aa6d145c50"
   integrity sha1-1TswzfkxPf+33JoNR3CWqm0UXFA=
   integrity sha1-1TswzfkxPf+33JoNR3CWqm0UXFA=
   dependencies:
   dependencies:
     delegate "^3.1.2"
     delegate "^3.1.2"
@@ -3918,9 +3914,10 @@ hex-color-regex@^1.1.0:
   version "1.1.0"
   version "1.1.0"
   resolved "https://registry.npmjs.org/hex-color-regex/-/hex-color-regex-1.1.0.tgz#4c06fccb4602fe2602b3c93df82d7e7dbf1a8a8e"
   resolved "https://registry.npmjs.org/hex-color-regex/-/hex-color-regex-1.1.0.tgz#4c06fccb4602fe2602b3c93df82d7e7dbf1a8a8e"
 
 
-highlight.js@^9.12.0:
-  version "9.13.1"
-  resolved "http://registry.npm.taobao.org/highlight.js/download/highlight.js-9.13.1.tgz#054586d53a6863311168488a0f58d6c505ce641e"
+highlight.js@^9.15.6:
+  version "9.15.6"
+  resolved "https://registry.npm.taobao.org/highlight.js/download/highlight.js-9.15.6.tgz#72d4d8d779ec066af9a17cb14360c3def0aa57c4"
+  integrity sha1-ctTY13nsBmr5oXyxQ2DD3vCqV8Q=
 
 
 hmac-drbg@^1.0.0:
 hmac-drbg@^1.0.0:
   version "1.0.1"
   version "1.0.1"
@@ -4711,12 +4708,6 @@ just-extend@^4.0.2:
   version "4.0.2"
   version "4.0.2"
   resolved "https://registry.npmjs.org/just-extend/-/just-extend-4.0.2.tgz#f3f47f7dfca0f989c55410a7ebc8854b07108afc"
   resolved "https://registry.npmjs.org/just-extend/-/just-extend-4.0.2.tgz#f3f47f7dfca0f989c55410a7ebc8854b07108afc"
 
 
-katex@^0.6.0:
-  version "0.6.0"
-  resolved "http://registry.npm.taobao.org/katex/download/katex-0.6.0.tgz#12418e09121c05c92041b6b3b9fb6bab213cb6f3"
-  dependencies:
-    match-at "^0.1.0"
-
 killable@^1.0.0:
 killable@^1.0.0:
   version "1.0.1"
   version "1.0.1"
   resolved "https://registry.npmjs.org/killable/-/killable-1.0.1.tgz#4c8ce441187a061c7474fb87ca08e2a638194892"
   resolved "https://registry.npmjs.org/killable/-/killable-1.0.1.tgz#4c8ce441187a061c7474fb87ca08e2a638194892"
@@ -4783,12 +4774,6 @@ levn@^0.3.0, levn@~0.3.0:
     prelude-ls "~1.1.2"
     prelude-ls "~1.1.2"
     type-check "~0.3.2"
     type-check "~0.3.2"
 
 
-linkify-it@~1.2.2:
-  version "1.2.4"
-  resolved "http://registry.npm.taobao.org/linkify-it/download/linkify-it-1.2.4.tgz#0773526c317c8fd13bd534ee1d180ff88abf881a"
-  dependencies:
-    uc.micro "^1.0.1"
-
 lint-staged@^7.2.2:
 lint-staged@^7.2.2:
   version "7.3.0"
   version "7.3.0"
   resolved "https://registry.npmjs.org/lint-staged/-/lint-staged-7.3.0.tgz#90ff33e5ca61ed3dbac35b6f6502dbefdc0db58d"
   resolved "https://registry.npmjs.org/lint-staged/-/lint-staged-7.3.0.tgz#90ff33e5ca61ed3dbac35b6f6502dbefdc0db58d"
@@ -5065,68 +5050,10 @@ map-visit@^1.0.0:
   dependencies:
   dependencies:
     object-visit "^1.0.0"
     object-visit "^1.0.0"
 
 
-markdown-it-abbr@^1.0.3:
-  version "1.0.4"
-  resolved "http://registry.npm.taobao.org/markdown-it-abbr/download/markdown-it-abbr-1.0.4.tgz#d66b5364521cbb3dd8aa59dadfba2fb6865c8fd8"
-
-markdown-it-deflist@^2.0.1:
-  version "2.0.3"
-  resolved "http://registry.npm.taobao.org/markdown-it-deflist/download/markdown-it-deflist-2.0.3.tgz#5727db04184d3cb2bc6ee4a9641e3a1091d5fd6f"
-
-markdown-it-emoji@^1.1.1:
-  version "1.4.0"
-  resolved "http://registry.npm.taobao.org/markdown-it-emoji/download/markdown-it-emoji-1.4.0.tgz#9bee0e9a990a963ba96df6980c4fddb05dfb4dcc"
-
-markdown-it-footnote@^2.0.0:
-  version "2.0.0"
-  resolved "http://registry.npm.taobao.org/markdown-it-footnote/download/markdown-it-footnote-2.0.0.tgz#14e9c4f68ff12cf354fa365ae378276e8104ca94"
-
-markdown-it-ins@^2.0.0:
-  version "2.0.0"
-  resolved "http://registry.npm.taobao.org/markdown-it-ins/download/markdown-it-ins-2.0.0.tgz#a5aa6a30f1e2f71e9497567cfdff40f1fde67483"
-
-markdown-it-katex@^2.0.3:
-  version "2.0.3"
-  resolved "http://registry.npm.taobao.org/markdown-it-katex/download/markdown-it-katex-2.0.3.tgz#d7b86a1aea0b9d6496fab4e7919a18fdef589c39"
-  dependencies:
-    katex "^0.6.0"
-
-markdown-it-mark@^2.0.0:
-  version "2.0.0"
-  resolved "http://registry.npm.taobao.org/markdown-it-mark/download/markdown-it-mark-2.0.0.tgz#46a1aa947105aed8188978e0a016179e404f42c7"
-
-markdown-it-sub@^1.0.0:
-  version "1.0.0"
-  resolved "http://registry.npm.taobao.org/markdown-it-sub/download/markdown-it-sub-1.0.0.tgz#375fd6026eae7ddcb012497f6411195ea1e3afe8"
-
-markdown-it-sup@^1.0.0:
-  version "1.0.0"
-  resolved "http://registry.npm.taobao.org/markdown-it-sup/download/markdown-it-sup-1.0.0.tgz#cb9c9ff91a5255ac08f3fd3d63286e15df0a1fc3"
-
-markdown-it-task-lists@^2.0.1:
-  version "2.1.1"
-  resolved "http://registry.npm.taobao.org/markdown-it-task-lists/download/markdown-it-task-lists-2.1.1.tgz#f68f4d2ac2bad5a2c373ba93081a1a6848417088"
-
-markdown-it-toc-and-anchor@^4.1.2:
-  version "4.2.0"
-  resolved "http://registry.npm.taobao.org/markdown-it-toc-and-anchor/download/markdown-it-toc-and-anchor-4.2.0.tgz#d1613327cc63c61f82cd66cbac5564f4db12c0e9"
-  dependencies:
-    clone "^2.1.0"
-    uslug "^1.0.4"
-
-markdown-it@^6.0.1:
-  version "6.1.1"
-  resolved "http://registry.npm.taobao.org/markdown-it/download/markdown-it-6.1.1.tgz#ced037f4473ee9f5153ac414f77dc83c91ba927c"
-  dependencies:
-    argparse "^1.0.7"
-    entities "~1.1.1"
-    linkify-it "~1.2.2"
-    mdurl "~1.0.1"
-    uc.micro "^1.0.1"
-
-match-at@^0.1.0:
-  version "0.1.1"
-  resolved "http://registry.npm.taobao.org/match-at/download/match-at-0.1.1.tgz#25d040d291777704d5e6556bbb79230ec2de0540"
+marked@^0.6.2:
+  version "0.6.2"
+  resolved "https://registry.npm.taobao.org/marked/download/marked-0.6.2.tgz#c574be8b545a8b48641456ca1dbe0e37b6dccc1a"
+  integrity sha1-xXS+i1Rai0hkFFbKHb4ON7bczBo=
 
 
 math-random@^1.0.1:
 math-random@^1.0.1:
   version "1.0.1"
   version "1.0.1"
@@ -5144,10 +5071,6 @@ mdn-data@~1.1.0:
   version "1.1.4"
   version "1.1.4"
   resolved "https://registry.npmjs.org/mdn-data/-/mdn-data-1.1.4.tgz#50b5d4ffc4575276573c4eedb8780812a8419f01"
   resolved "https://registry.npmjs.org/mdn-data/-/mdn-data-1.1.4.tgz#50b5d4ffc4575276573c4eedb8780812a8419f01"
 
 
-mdurl@~1.0.1:
-  version "1.0.1"
-  resolved "http://registry.npm.taobao.org/mdurl/download/mdurl-1.0.1.tgz#fe85b2ec75a59037f2adfec100fd6c601761152e"
-
 media-typer@0.3.0:
 media-typer@0.3.0:
   version "0.3.0"
   version "0.3.0"
   resolved "http://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748"
   resolved "http://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748"
@@ -6976,7 +6899,7 @@ select-hose@^2.0.0:
 
 
 select@^1.1.2:
 select@^1.1.2:
   version "1.1.2"
   version "1.1.2"
-  resolved "http://registry.npm.taobao.org/select/download/select-1.1.2.tgz#0e7350acdec80b1108528786ec1d4418d11b396d"
+  resolved "https://registry.npm.taobao.org/select/download/select-1.1.2.tgz#0e7350acdec80b1108528786ec1d4418d11b396d"
   integrity sha1-DnNQrN7ICxEIUoeG7B1EGNEbOW0=
   integrity sha1-DnNQrN7ICxEIUoeG7B1EGNEbOW0=
 
 
 selfsigned@^1.9.1:
 selfsigned@^1.9.1:
@@ -7659,7 +7582,7 @@ timsort@^0.3.0:
 
 
 tiny-emitter@^2.0.0:
 tiny-emitter@^2.0.0:
   version "2.1.0"
   version "2.1.0"
-  resolved "http://registry.npm.taobao.org/tiny-emitter/download/tiny-emitter-2.1.0.tgz#1d1a56edfc51c43e863cbb5382a72330e3555423"
+  resolved "https://registry.npm.taobao.org/tiny-emitter/download/tiny-emitter-2.1.0.tgz#1d1a56edfc51c43e863cbb5382a72330e3555423"
   integrity sha1-HRpW7fxRxD6GPLtTgqcjMONVVCM=
   integrity sha1-HRpW7fxRxD6GPLtTgqcjMONVVCM=
 
 
 tmp@^0.0.33:
 tmp@^0.0.33:
@@ -7793,10 +7716,6 @@ typedarray@^0.0.6:
   version "0.0.6"
   version "0.0.6"
   resolved "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777"
   resolved "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777"
 
 
-uc.micro@^1.0.1:
-  version "1.0.5"
-  resolved "http://registry.npm.taobao.org/uc.micro/download/uc.micro-1.0.5.tgz#0c65f15f815aa08b560a61ce8b4db7ffc3f45376"
-
 uglify-js@3.4.x:
 uglify-js@3.4.x:
   version "3.4.9"
   version "3.4.9"
   resolved "https://registry.npmjs.org/uglify-js/-/uglify-js-3.4.9.tgz#af02f180c1207d76432e473ed24a28f4a782bae3"
   resolved "https://registry.npmjs.org/uglify-js/-/uglify-js-3.4.9.tgz#af02f180c1207d76432e473ed24a28f4a782bae3"
@@ -7856,10 +7775,6 @@ universalify@^0.1.0:
   version "0.1.2"
   version "0.1.2"
   resolved "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66"
   resolved "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66"
 
 
-"unorm@>= 1.0.0":
-  version "1.4.1"
-  resolved "http://registry.npm.taobao.org/unorm/download/unorm-1.4.1.tgz#364200d5f13646ca8bcd44490271335614792300"
-
 unpipe@1.0.0, unpipe@~1.0.0:
 unpipe@1.0.0, unpipe@~1.0.0:
   version "1.0.0"
   version "1.0.0"
   resolved "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec"
   resolved "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec"
@@ -7919,12 +7834,6 @@ use@^3.1.0:
   version "3.1.1"
   version "3.1.1"
   resolved "https://registry.npmjs.org/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f"
   resolved "https://registry.npmjs.org/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f"
 
 
-uslug@^1.0.4:
-  version "1.0.4"
-  resolved "http://registry.npm.taobao.org/uslug/download/uslug-1.0.4.tgz#b9a22f0914e0a86140633dacc302e5f4fa450677"
-  dependencies:
-    unorm ">= 1.0.0"
-
 utf8-byte-length@^1.0.4:
 utf8-byte-length@^1.0.4:
   version "1.0.4"
   version "1.0.4"
   resolved "https://registry.npmjs.org/utf8-byte-length/-/utf8-byte-length-1.0.4.tgz#f45f150c4c66eee968186505ab93fcbb8ad6bf61"
   resolved "https://registry.npmjs.org/utf8-byte-length/-/utf8-byte-length-1.0.4.tgz#f45f150c4c66eee968186505ab93fcbb8ad6bf61"
@@ -8003,7 +7912,7 @@ vue-cli-plugin-buefy@^0.3.3:
 
 
 vue-clipboard2@^0.3.0:
 vue-clipboard2@^0.3.0:
   version "0.3.0"
   version "0.3.0"
-  resolved "http://registry.npm.taobao.org/vue-clipboard2/download/vue-clipboard2-0.3.0.tgz#b04d3f9a2d46f12ca85178445930b38463640b22"
+  resolved "https://registry.npm.taobao.org/vue-clipboard2/download/vue-clipboard2-0.3.0.tgz#b04d3f9a2d46f12ca85178445930b38463640b22"
   integrity sha1-sE0/mi1G8SyoUXhEWTCzhGNkCyI=
   integrity sha1-sE0/mi1G8SyoUXhEWTCzhGNkCyI=
   dependencies:
   dependencies:
     clipboard "^2.0.0"
     clipboard "^2.0.0"
@@ -8050,24 +7959,6 @@ vue-loader@^15.4.2:
     vue-hot-reload-api "^2.3.0"
     vue-hot-reload-api "^2.3.0"
     vue-style-loader "^4.1.0"
     vue-style-loader "^4.1.0"
 
 
-vue-markdown@^2.2.4:
-  version "2.2.4"
-  resolved "http://registry.npm.taobao.org/vue-markdown/download/vue-markdown-2.2.4.tgz#db0f774178f3bc91ee18c626d86a3a0d2de22746"
-  dependencies:
-    highlight.js "^9.12.0"
-    markdown-it "^6.0.1"
-    markdown-it-abbr "^1.0.3"
-    markdown-it-deflist "^2.0.1"
-    markdown-it-emoji "^1.1.1"
-    markdown-it-footnote "^2.0.0"
-    markdown-it-ins "^2.0.0"
-    markdown-it-katex "^2.0.3"
-    markdown-it-mark "^2.0.0"
-    markdown-it-sub "^1.0.0"
-    markdown-it-sup "^1.0.0"
-    markdown-it-task-lists "^2.0.1"
-    markdown-it-toc-and-anchor "^4.1.2"
-
 vue-router@^3.0.1:
 vue-router@^3.0.1:
   version "3.0.2"
   version "3.0.2"
   resolved "https://registry.npmjs.org/vue-router/-/vue-router-3.0.2.tgz#dedc67afe6c4e2bc25682c8b1c2a8c0d7c7e56be"
   resolved "https://registry.npmjs.org/vue-router/-/vue-router-3.0.2.tgz#dedc67afe6c4e2bc25682c8b1c2a8c0d7c7e56be"

この差分においてかなりの量のファイルが変更されているため、一部のファイルを表示していません