zhangjie 2 anos atrás
pai
commit
f18361bb22

+ 1 - 1
src/constants/constants.js

@@ -143,7 +143,7 @@ export const QUESTION_TYPES = [
   { code: "TEXT_ANSWER_QUESTION", name: "问答" },
   { code: "READING_COMPREHENSION", name: "阅读理解" },
   { code: "LISTENING_QUESTION", name: "听力" },
-  { code: "CLOZE", name: "完填空" },
+  { code: "CLOZE", name: "完填空" },
   { code: "PARAGRAPH_MATCHING", name: "段落匹配" },
   { code: "BANKED_CLOZE", name: "选词填空" },
 ];

+ 4 - 1
src/modules/paper-export/api.js

@@ -34,7 +34,10 @@ export const savePaperTemplateApi = (datas) => {
 export const checkPaperTemplateNameApi = (datas) => {
   return $httpWithMsg.post(
     QUESTION_API + "/paper_template/check_name_repeat",
-    datas
+    {},
+    {
+      params: datas,
+    }
   );
 };
 export const paperTemplateEnableApi = ({ id, enable }) => {

+ 5 - 1
src/modules/paper-export/components/ModifyPaperTemplateInfo.vue

@@ -119,7 +119,11 @@ export default {
       if (!valid) return;
 
       if (!this.isEdit) {
-        await checkPaperTemplateNameApi(this.modalForm);
+        const repeated = await checkPaperTemplateNameApi(this.modalForm);
+        if (repeated) {
+          this.$message.error("模板名称重复!");
+          return;
+        }
         this.$emit("new-temp", this.modalForm);
         this.cancel();
         return;

+ 1 - 1
src/modules/paper/components/SelectQuestionDialog.vue

@@ -179,7 +179,7 @@
 
     <question-preview-dialog
       ref="QuestionPreviewDialog"
-      :topic="curQuestion"
+      :question="curQuestion"
     ></question-preview-dialog>
   </el-dialog>
 </template>

+ 2 - 2
src/modules/question/api.js

@@ -60,12 +60,12 @@ export function moveQuestionApi(questionIdList, targetClassifyId) {
     }
   );
 }
-export function copyQuestionApi(questionIdList, targetClassifyId) {
+export function copyQuestionApi(oldQuestionId, classifyId) {
   return $httpWithMsg.post(
     `${QUESTION_API}/question/copy`,
     {},
     {
-      params: { questionIdList, targetClassifyId },
+      params: { oldQuestionId, classifyId },
     }
   );
 }

+ 3 - 1
src/modules/question/components/FolderQuestionManageDialog.vue

@@ -268,8 +268,10 @@ export default {
       this.selectedQuestionIds = selections.map((item) => item.id);
     },
     folderFilterSelected(folder) {
+      if (!folder) return;
+
       this.filter = {
-        classifyId: folder && folder.id,
+        classifyId: folder.id,
         courseId: "",
         questionType: "",
         sourceDetailId: "",

+ 1 - 0
src/modules/question/components/ModifySourceDetail.vue

@@ -29,6 +29,7 @@
           v-model="modalForm.questionType"
           size="medium"
           style="line-height: 46px"
+          :disabled="isEdit"
         >
           <el-radio
             v-for="item in QUESTION_TYPES"

+ 22 - 0
src/modules/question/components/QuestionFolder.vue

@@ -22,6 +22,10 @@
       default-expand-all
       :expand-on-click-node="false"
       :props="defaultProps"
+      :draggable="isEdit"
+      :allow-drop="allowDrop"
+      :allow-drag="allowDrag"
+      @node-drop="handleDrop"
       @node-click="nodeClick"
     >
       <span slot-scope="{ node, data }">
@@ -251,6 +255,24 @@ export default {
     getSelectedNode() {
       return this.curNodeData;
     },
+    // drop
+    handleDrop(draggingNode, dropNode, dropType) {
+      console.log("draggingNode", draggingNode);
+      console.log("dropNode", dropNode);
+      console.log("dropType", dropType);
+    },
+    allowDrop(draggingNode, dropNode, type) {
+      if (
+        (dropNode.data.level === this.MAX_FOLDER_LEVEL && type === "inner") ||
+        (!dropNode.data.id && type !== "inner")
+      )
+        return false;
+
+      return true;
+    },
+    allowDrag(draggingNode) {
+      return !!draggingNode.data.id;
+    },
   },
 };
 </script>

+ 1 - 1
src/modules/question/datas/distributionData.json

@@ -90,7 +90,7 @@
         ]
       },
       {
-        "questionTypeName": "完填空",
+        "questionTypeName": "完填空",
         "questionCount": 0,
         "questionDifficultInfo": []
       },

+ 1 - 44
src/modules/questions/views/Course.vue

@@ -20,16 +20,6 @@
         <el-form-item label="课程代码">
           <el-input v-model="formSearch.code" placeholder="请输入课程代码" />
         </el-form-item>
-        <el-form-item label="课程状态">
-          <el-select v-model="formSearch.enable" placeholder="请选择" clearable>
-            <el-option
-              v-for="item in statusList"
-              :key="item.value"
-              :label="item.label"
-              :value="item.value"
-            />
-          </el-select>
-        </el-form-item>
         <el-form-item label="层次">
           <el-select v-model="formSearch.level" placeholder="请选择" clearable>
             <el-option
@@ -94,30 +84,6 @@
         <el-table-column label="层次">
           <span slot-scope="scope">{{ getLevel(scope.row.level) }}</span>
         </el-table-column>
-        <el-table-column width="50" label="状态">
-          <span slot-scope="scope">
-            <span v-if="scope.row.enable">
-              <el-tooltip
-                class="item"
-                effect="dark"
-                content="启用"
-                placement="left"
-              >
-                <i class="icon icon-right"></i>
-              </el-tooltip>
-            </span>
-            <span v-else>
-              <el-tooltip
-                class="item"
-                effect="dark"
-                content="禁用"
-                placement="left"
-              >
-                <i class="icon icon-error"></i>
-              </el-tooltip>
-            </span>
-          </span>
-        </el-table-column>
         <el-table-column
           sortable
           prop="updateTime"
@@ -218,15 +184,6 @@
             />
           </el-select>
         </el-form-item>
-        <el-form-item label="课程状态" prop="enable">
-          <el-radio-group
-            v-model="courseForm.enable"
-            class="dialog-input-width"
-          >
-            <el-radio label="true">启用</el-radio>
-            <el-radio label="false">禁用</el-radio>
-          </el-radio-group>
-        </el-form-item>
       </el-form>
 
       <div slot="footer">
@@ -329,7 +286,7 @@ export default {
       formSearch: {
         name: "",
         code: "",
-        enable: "",
+        enable: "true",
         level: "",
       },
       courseForm: {

+ 1 - 1
src/modules/questions/views/OrgProperty.vue

@@ -63,7 +63,7 @@
               >阅读理解</el-checkbox
             >
             <el-checkbox label="CLOZE" class="checkbox_length"
-              >完填空</el-checkbox
+              >完填空</el-checkbox
             >
             <el-checkbox label="PARAGRAPH_MATCHING" class="checkbox_length"
               >段落匹配</el-checkbox

+ 8 - 2
src/modules/questions/views/PropertyInfo.vue

@@ -39,7 +39,7 @@
       </el-form>
 
       <div class="part-box-action">
-        <div>
+        <div v-if="!IS_ASSIGN_TEACHER">
           <el-button
             type="primary"
             icon="icon icon-plus-white"
@@ -103,7 +103,7 @@
         :props="defaultProps"
         :default-expanded-keys="ids"
         highlight-current
-        show-checkbox
+        :show-checkbox="!IS_ASSIGN_TEACHER"
         @node-click="handleNodeClick"
         @check-change="checkChange"
         ><span
@@ -264,6 +264,12 @@ export default {
       }
       return courseList;
     },
+    IS_ASSIGN_TEACHER() {
+      // 命题老师
+      return this.user.roleList.some(
+        (item) => item.roleCode === "ASSIGN_TEACHER"
+      );
+    },
   },
   created() {
     this.coursePropertyId = this.$route.params.id;