Forráskód Böngészése

feat: 对于非自己创建的题目不显示编辑按钮

ChenYangfan 6 éve
szülő
commit
5b4a938e94

+ 2 - 1
src/views/quiz/components/QuestionCard.vue

@@ -11,7 +11,7 @@
       </h3>
       <div class="spacer"></div>
       <div class="actions">
-        <router-link :to="{ name: 'edit-question', params: { questionId }}">
+        <router-link v-if="editable" :to="{ name: 'edit-question', params: { questionId }}">
           <icon-button theme="green" :size="32">edit</icon-button>
         </router-link>
         <router-link :to="{ name: 'question-detail', params: { questionId }}">
@@ -45,6 +45,7 @@ export default {
       type: String,
       required: true
     },
+    editable: Boolean,
     selected: {
       type: Boolean,
       default: false

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

@@ -8,6 +8,7 @@
         <question-card
           v-if="item !== null"
           :key="item.id"
+          :editable="ownQuestionIds.indexOf(item.id) !== -1"
           :type="item.type"
           :stem="item.stem"
           :question-id="item.id"
@@ -22,7 +23,7 @@
 
 <script>
 import debounce from '@/utils/debounce'
-import { getCreatedQuestions, getQuestionList } from '@/server/question'
+import { getCreatedQuestionIds, getCreatedQuestions, getQuestionList } from '@/server/question'
 import Pagination from '@/components/Pagination'
 import { markdownToHTML } from '@/utils/markdown'
 import QuestionCard from '@/views/quiz/components/QuestionCard'
@@ -62,6 +63,9 @@ export default {
       inputStem: '',
       questionList: [],
       ownQuestionList: [],
+      // 该属性与上面属性不同之处在于所有id是一次全拿的
+      // List为分页获取,因此不能用于判断这个问题是否能够编辑
+      ownQuestionIds: [],
       page: {},
 
       // 模糊搜索时使用
@@ -70,6 +74,7 @@ export default {
   },
   mounted () {
     this.fetchQuestionList()
+    this.fetchOwnQuestionIds()
   },
   methods: {
     fetchQuestionList ({
@@ -89,6 +94,11 @@ export default {
             this.page = page
           })
     },
+    fetchOwnQuestionIds () {
+      getCreatedQuestionIds()
+        .then(res => (this.ownQuestionIds = res))
+        .catch(err => this.$setErrorMessage(err.response.data.msg))
+    },
     judgeIsSelected (question) {
       return Boolean(this.selectedQuestions
         .find(item => item.id === question.id))