2 次代碼提交 3766b774cc ... 4ab8076181

作者 SHA1 備註 提交日期
  ChenYangfan 4ab8076181 feat: 推荐知识点 6 年之前
  ChenYangfan bcfa5540b0 fix: 跨域测试 6 年之前

+ 1 - 0
src/server/ml-recommend.js

@@ -7,4 +7,5 @@ export function recommendKnowledge ({ text }) {
 
   return axios
     .post('http://ml.seec.seecoder.cn/api/graph', data)
+    .then(res => res.data)
 }

+ 33 - 11
src/views/quiz/components/QuestionEditorFactory.vue

@@ -1,14 +1,21 @@
 <template>
   <div>
     <div>知识点(选填)</div>
-    <treeselect
-      class="mt-16"
-      v-if="knowledgeTree"
-      v-model="selectedKnowledgeIdList"
-      :multiple="true"
-      :options="knowledgeTree ? knowledgeTree : null"
-      placeholder="选择相关知识点"
-    />
+    <template v-if="knowledgeTree">
+      <treeselect
+        class="mt-16 mb-12"
+        v-model="selectedKnowledgeIdList"
+        :multiple="true"
+        :options="knowledgeTree ? knowledgeTree : null"
+        placeholder="选择相关知识点"
+      />
+      推荐知识点:
+      <c-button :right="6" :key="item" :theme="selectedKnowledgeIdList.indexOf(item) !== -1 ? 'green' : ''"
+                v-for="item of recommended" @click="pushToSelectedKnowledgeIdList(item)">
+        {{knowledgeTreeNaming[item]}}
+      </c-button>
+    </template>
+
     <div v-else class="mt-24">知识点加载中...</div>
     <slide-in-same-transition>
       <keep-alive>
@@ -32,11 +39,12 @@ import Treeselect from '@riophae/vue-treeselect'
 import '@riophae/vue-treeselect/dist/vue-treeselect.css'
 import { constructTree } from '@/utils/construct-tree'
 import debounce from '@/utils/debounce'
-// import { recommendKnowledge } from '@/server/ml-recommend'
+import { recommendKnowledge } from '@/server/ml-recommend'
+import CButton from '@/components/Basic/CButton'
 
 export default {
   name: 'QuestionEditorFactory',
-  components: { Treeselect, TrueFalseQuestionEditor, ChoiceQuestionEditor, SlideInSameTransition },
+  components: { CButton, Treeselect, TrueFalseQuestionEditor, ChoiceQuestionEditor, SlideInSameTransition },
   props: {
     initValue: {
       type: Object,
@@ -55,9 +63,12 @@ export default {
       knowledgeTree: null,
       selectedKnowledgeIdList: this.initValue.knowledgeId,
       stem: null,
+      recommended: null,
+      knowledgeTreeNaming: {},
 
       debounceRecommend: debounce(() => {
-        // recommendKnowledge({ text: JSON.stringify(this.stem) })
+        recommendKnowledge({ text: JSON.stringify(this.stem) })
+          .then(res => { this.recommended = res })
       }, 500),
       QuestionKind
     }
@@ -71,6 +82,9 @@ export default {
     getKnowledgeNodes () {
       getKnowledgeNodes()
         .then(res => {
+          res.forEach(item => {
+            this.knowledgeTreeNaming[item.abbreviation] = item.name
+          })
           this.knowledgeTree = constructTree(res)
         })
         .catch(err => this.$setErrorMessage(err.response.data.msg))
@@ -81,6 +95,14 @@ export default {
     handleInput (event) {
       this.stem = event
       this.debounceRecommend()
+    },
+    pushToSelectedKnowledgeIdList (item) {
+      const index = this.selectedKnowledgeIdList.indexOf(item)
+      if (index === -1) {
+        this.selectedKnowledgeIdList.push(item)
+      } else {
+        this.selectedKnowledgeIdList.splice(index, 1)
+      }
     }
   }
 }

+ 1 - 1
src/views/quiz/components/QuestionTable.vue

@@ -84,7 +84,7 @@ export default {
       size = 10
     } = {}) {
       this.showOwn
-        ? getCreatedQuestions({ key: stem, size, page, sort: 'createAt,desc' })
+        ? getCreatedQuestions({ key: stem, size, page })
           .then(({ data: questions, page }) => {
             this.questionList = questions
             this.page = page