ChenYangfan пре 6 година
родитељ
комит
4ab8076181

+ 2 - 2
src/config/server-info.js

@@ -4,9 +4,9 @@
 
 // const host = 'http://106.14.178.184:8080/seec_helper'
 // const host = 'http://192.168.3.70:18080'
-const host = process.env.NODE_ENV === 'development' ? 'http://helper.seecoder.cn' : ''
+// const host = process.env.NODE_ENV === 'development' ? 'http://helper.seecoder.cn' : ''
 
-// const host = process.env.NODE_ENV === 'development' ? 'http://localhost:8080' : ''
+const host = process.env.NODE_ENV === 'development' ? 'http://localhost:8080' : ''
 const wsHost = process.env.NODE_ENV === 'development' ? 'ws://localhost:8080' : 'ws://' + location.host
 
 const adminUrl = host + '/api/admin'

+ 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)
 }

+ 29 - 10
src/views/quiz/components/QuestionEditorFactory.vue

@@ -1,16 +1,22 @@
 <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>
-    {{recommended}}
     <slide-in-same-transition>
       <keep-alive>
         <choice-question-editor @input="handleInput" v-if="kind === QuestionKind.choice" :initValue="initValue"
@@ -34,10 +40,11 @@ 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 CButton from '@/components/Basic/CButton'
 
 export default {
   name: 'QuestionEditorFactory',
-  components: { Treeselect, TrueFalseQuestionEditor, ChoiceQuestionEditor, SlideInSameTransition },
+  components: { CButton, Treeselect, TrueFalseQuestionEditor, ChoiceQuestionEditor, SlideInSameTransition },
   props: {
     initValue: {
       type: Object,
@@ -57,6 +64,7 @@ export default {
       selectedKnowledgeIdList: this.initValue.knowledgeId,
       stem: null,
       recommended: null,
+      knowledgeTreeNaming: {},
 
       debounceRecommend: debounce(() => {
         recommendKnowledge({ text: JSON.stringify(this.stem) })
@@ -74,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))
@@ -84,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)
+      }
     }
   }
 }