Ver código fonte

自动组卷结构编辑

zhangjie 2 anos atrás
pai
commit
4bac3500d3

+ 15 - 0
src/assets/styles/pages.scss

@@ -941,6 +941,21 @@
   .detail-desc {
     margin-bottom: 10px;
   }
+  .detail-info {
+    display: flex;
+    justify-content: space-between;
+    align-items: center;
+
+    p {
+      display: inline-block;
+      vertical-align: top;
+      margin: 0 10px 0 0;
+
+      span:first-child {
+        color: #999;
+      }
+    }
+  }
   .detail-questions {
     padding: 10px 0;
   }

+ 12 - 1
src/modules/paper/components/AutoBuildPaperStructManage.vue

@@ -104,6 +104,13 @@
         </div>
       </div>
     </el-dialog>
+
+    <!-- ModifyAutoBuildPaperStruct -->
+    <modify-auto-build-paper-struct
+      ref="ModifyAutoBuildPaperStruct"
+      :instance="curRow"
+      @modified="getList"
+    ></modify-auto-build-paper-struct>
   </div>
 </template>
 
@@ -112,9 +119,11 @@ import {
   autoBuildPaperStructPageListApi,
   autoBuildPaperStructDeleteApi,
 } from "../api";
+import ModifyAutoBuildPaperStruct from "./ModifyAutoBuildPaperStruct.vue";
 
 export default {
   name: "AutoBuildPaperStructManage",
+  components: { ModifyAutoBuildPaperStruct },
   props: {
     courseId: {
       type: [String, Number],
@@ -133,6 +142,7 @@ export default {
       currentPage: 1,
       pageSize: 10,
       total: 0,
+      curRow: {},
       selectedQuestionIds: [],
     };
   },
@@ -172,7 +182,8 @@ export default {
       this.selectedQuestionIds = selections.map((item) => item.id);
     },
     toEdit(row) {
-      console.log(row);
+      this.curRow = row;
+      this.$refs.ModifyAutoBuildPaperStruct.open();
     },
     async toDelete(row) {
       const confirm = await this.$confirm("确认删除结构吗?", "提示", {

+ 45 - 13
src/modules/paper/components/BuildPaperAuto.vue

@@ -3,7 +3,11 @@
     <div class="build-step-title">
       <h3><span>试卷结构设置</span></h3>
       <div>
-        <el-button type="success" size="small" @click="toSelectStruct"
+        <el-button
+          v-if="!isEdit"
+          type="success"
+          size="small"
+          @click="toSelectStruct"
           >选择试卷结构</el-button
         >
         <el-button
@@ -42,19 +46,27 @@
             ></el-button>
           </div>
         </div>
-        <div v-if="detail.description" class="detail-desc">
+        <div v-if="!isAnEmptyRichText(detail.description)" class="detail-desc">
           <rich-text :text-json="detail.description"></rich-text>
         </div>
-        <table class="table detail-info">
-          <tr>
-            <td>题型</td>
-            <td>{{ detail.sourceDetailName }}</td>
-            <td>小题数</td>
-            <td>{{ detail.questionCount }}</td>
-            <td>总分</td>
-            <td>{{ detail.questionCount * detail.scorePerQuestion }}</td>
-          </tr>
-        </table>
+        <div class="detail-info">
+          <div>
+            <p>
+              <span>题型:</span>
+              <span>{{ detail.sourceDetailName }}</span>
+            </p>
+          </div>
+          <div>
+            <p>
+              <span>小题数:</span>
+              <span>{{ detail.questionCount }}</span>
+            </p>
+            <p>
+              <span>总分:</span>
+              <span>{{ detail.questionCount * detail.scorePerQuestion }}</span>
+            </p>
+          </div>
+        </div>
         <question-group-struct
           :ref="`QuestionStruct${detail.id}`"
           :filter-data="{
@@ -75,6 +87,7 @@
     ></modify-detail-struct>
     <!-- AutoBuildPaperStructManage -->
     <auto-build-paper-struct-manage
+      v-if="!isEdit"
       ref="AutoBuildPaperStructManage"
       :course-id="courseId"
     ></auto-build-paper-struct-manage>
@@ -82,9 +95,11 @@
 </template>
 
 <script>
-import ModifyDetailStruct from "../components/ModifyDetailStruct.vue";
+import ModifyDetailStruct from "./ModifyDetailStruct.vue";
 import QuestionGroupStruct from "./QuestionGroupStruct.vue";
 import AutoBuildPaperStructManage from "./AutoBuildPaperStructManage.vue";
+import { isAnEmptyRichText } from "@/utils/utils";
+import { deepCopy } from "@/plugins/utils";
 
 export default {
   name: "BuildPaperAuto",
@@ -98,6 +113,12 @@ export default {
       type: [String, Number],
       default: "",
     },
+    detailSource: {
+      type: Array,
+      default() {
+        return [];
+      },
+    },
   },
   data() {
     return {
@@ -106,7 +127,18 @@ export default {
       activeNames: [],
     };
   },
+  computed: {
+    isEdit() {
+      return !!(this.detailSource && this.detailSource.length);
+    },
+  },
+  mounted() {
+    if (this.detailSource) {
+      this.details = deepCopy(this.detailSource);
+    }
+  },
   methods: {
+    isAnEmptyRichText,
     toSelectStruct() {
       this.$refs.AutoBuildPaperStructManage.open();
     },

+ 98 - 0
src/modules/paper/components/ModifyAutoBuildPaperStruct.vue

@@ -0,0 +1,98 @@
+<template>
+  <div>
+    <el-dialog
+      :visible.sync="modalIsShow"
+      title="编辑试卷结构"
+      :modal="false"
+      :close-on-click-modal="false"
+      :close-on-press-escape="false"
+      append-to-body
+      fullscreen
+      @opened="dialogOpened"
+    >
+      <div slot="title" class="box-justify">
+        <div>
+          <h2>编辑试卷结构</h2>
+          <span>{{ instance.structName }}</span>
+        </div>
+        <div>
+          <el-button
+            size="small"
+            type="primary"
+            :loading="loading"
+            @click="confirm"
+            >确定</el-button
+          >
+          <el-button size="small" @click="cancel">取消</el-button>
+        </div>
+      </div>
+
+      <build-paper-auto
+        v-if="modalIsShow"
+        ref="BuildPaperDetail"
+        :course-id="instance.courseId"
+        :detail-source="instance.structInfo.detailInfo"
+      ></build-paper-auto>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import { deepCopy } from "@/plugins/utils";
+import { autoBuildPaperStructSaveApi } from "../api";
+import BuildPaperAuto from "./BuildPaperAuto.vue";
+
+export default {
+  name: "ModifyAutoBuildPaperStruct",
+  components: { BuildPaperAuto },
+  props: {
+    instance: {
+      type: Object,
+      default() {
+        return {};
+      },
+    },
+  },
+  data() {
+    return {
+      modalIsShow: false,
+      curDetail: {},
+      activeNames: [],
+      details: [],
+      loading: false,
+    };
+  },
+  methods: {
+    dialogOpened() {
+      this.details = deepCopy(this.instance.structInfo.detailInfo);
+    },
+    cancel() {
+      this.modalIsShow = false;
+    },
+    open() {
+      this.modalIsShow = true;
+    },
+    async confirm() {
+      const valid = await this.$refs.BuildPaperDetail.validate().catch(
+        () => {}
+      );
+      if (!valid) return;
+
+      if (this.loading) return;
+      this.loading = true;
+      let questionInfo = this.$refs.BuildPaperDetail.getData();
+
+      let datas = { ...this.instance };
+      datas.structInfo = JSON.stringify(questionInfo.detailInfo);
+      const res = await autoBuildPaperStructSaveApi(datas).catch((error) => {
+        this.$message.error(error.response.data.desc);
+      });
+
+      if (!res) return;
+      this.$message.success("修改成功");
+      this.cancel();
+      this.$emit("modified");
+    },
+  },
+};
+</script>

+ 97 - 11
src/modules/paper/components/QuestionGroupStruct.vue

@@ -141,13 +141,16 @@ export default {
         };
       },
     },
+    dataSource: {
+      type: Object,
+      default: null,
+    },
   },
   data() {
     return {
       useClassify: false,
       useDifficult: false,
       useProperty: false,
-      checkedSet: [],
       selectedFolderIds: [],
       classifyTree: [
         {
@@ -170,6 +173,7 @@ export default {
       difficultDistributeInfo: [],
       curCoursePropertyId: "",
       propertyInfo: [],
+      sourceDataMap: {},
     };
   },
   computed: {
@@ -182,6 +186,9 @@ export default {
     USE_NONE_SET() {
       return !this.useClassify && !this.useDifficult && !this.useProperty;
     },
+    SOURCE_REVIEW() {
+      return !!this.dataSource;
+    },
   },
   watch: {
     filterData: {
@@ -193,9 +200,23 @@ export default {
       },
     },
   },
-  mounted() {
-    this.resetDataList();
-    this.getClassifyTree();
+  async mounted() {
+    if (this.dataSource) {
+      this.parseSourceDataMap();
+      this.useProperty = this.dataSource.useProperty;
+      this.useClassify = this.dataSource.useClassify;
+      this.useDifficult = this.dataSource.useDifficult;
+      if (this.dataSource.useClassify)
+        this.selectedFolderIds = this.dataSource.classifyIdList;
+    }
+    await this.resetDataList();
+    await this.getClassifyTree();
+
+    if (this.selectedFolderIds.length) {
+      this.$nextTick(() => {
+        this.$refs.folderTree.setCheckedKeys(this.selectedFolderIds);
+      });
+    }
   },
   methods: {
     setChange() {
@@ -289,7 +310,7 @@ export default {
           classifyName: data.classifyName,
           isClassify: true,
           questionCount: data.questionCount,
-          selectCount: undefined,
+          selectCount: this.gerSourceData(data.classifyId),
           difficultDistributeInfo: [],
         };
         if (
@@ -297,7 +318,8 @@ export default {
           data.difficultDistributeInfo.length
         ) {
           classifyData.difficultDistributeInfo = parseQuestionDistributeInfo(
-            data.difficultDistributeInfo
+            data.difficultDistributeInfo,
+            data.classifyId
           );
         }
         if (
@@ -318,28 +340,33 @@ export default {
             parsePropertyData(item, classifyData.id)
           );
 
+        classifyData.propertyDistributeInfo = filterPropertyData(
+          classifyData.propertyDistributeInfo
+        );
+
         return classifyData;
       }
 
-      function parseQuestionDistributeInfo(data) {
+      function parseQuestionDistributeInfo(data, preInfo) {
         if (!_this.difficultDistributeInfo.length) {
           _this.difficultDistributeInfo = data.map(
             (item) => item.difficultLevel
           );
         }
         return data.map((item) => {
-          return { ...item, selectCount: undefined };
+          return { ...item, selectCount: this.gerSourceData(preInfo) };
         });
       }
 
       function parsePropertyData(data, parentId) {
+        const propId = `${parentId}_${data.propertyId}`;
         let propData = {
-          id: `${parentId}_${data.propertyId}`,
+          id: propId,
           name: data.propertyName,
           propertyId: data.propertyId,
           propertyName: data.propertyName,
           questionCount: data.questionCount,
-          selectCount: undefined,
+          selectCount: this.gerSourceData(propId),
           difficultDistributeInfo: null,
         };
         if (
@@ -347,7 +374,8 @@ export default {
           data.difficultDistributeInfo.length
         ) {
           propData.difficultDistributeInfo = parseQuestionDistributeInfo(
-            data.difficultDistributeInfo
+            data.difficultDistributeInfo,
+            propId
           );
         }
 
@@ -359,6 +387,26 @@ export default {
         return propData;
       }
 
+      function filterPropertyData(propertyDistributeInfo) {
+        // 只处理两级属性
+        let pDistributeInfo = propertyDistributeInfo.map((data) => {
+          if (
+            data.propertyDistributeInfo &&
+            data.propertyDistributeInfo.length
+          ) {
+            data.propertyDistributeInfo = data.propertyDistributeInfo.filter(
+              (item) => item.questionCount
+            );
+          }
+          return data;
+        });
+        pDistributeInfo = pDistributeInfo.filter(
+          (data) =>
+            data.propertyDistributeInfo && data.propertyDistributeInfo.length
+        );
+        return pDistributeInfo;
+      }
+
       this.dataList = this.originList.map((item) => buildClassifyData(item));
       this.tableData = this.dataList;
 
@@ -470,6 +518,7 @@ export default {
       });
 
       return {
+        classifyIdList: this.useClassify ? this.selectedFolderIds : [],
         questionDistributeInfo: dataList,
         questionCount: this.getTotalQuestionCount(),
         useClassify: this.useClassify,
@@ -478,6 +527,43 @@ export default {
         curCoursePropertyId: this.curCoursePropertyId,
       };
     },
+    // source relate
+    gerSourceData(k) {
+      return this.sourceDataMap[k] || undefined;
+    },
+    parseSourceDataMap() {
+      let sourceDataMap = {};
+
+      function parseDifficultMap(difficultDistributeInfo, preInfo) {
+        if (!difficultDistributeInfo || !difficultDistributeInfo.length) return;
+
+        difficultDistributeInfo.forEach((d) => {
+          if (d.selectCount)
+            sourceDataMap[`${preInfo}_${d.difficultLevel}`] = d.selectCount;
+        });
+      }
+
+      function parsePropertyMap(propertyDistributeInfo) {
+        if (!propertyDistributeInfo || !propertyDistributeInfo.length) return;
+
+        propertyDistributeInfo.forEach((pInfo) => {
+          if (pInfo.selectCount) sourceDataMap[pInfo.id] = pInfo.selectCount;
+          parseDifficultMap(pInfo.difficultDistributeInfo, pInfo.id);
+
+          parsePropertyMap(pInfo.propertyDistributeInfo);
+        });
+      }
+
+      this.dataSource.questionDistributeInfo.forEach((classifyData) => {
+        if (classifyData.selectCount) {
+          sourceDataMap[classifyData.id] = classifyData.selectCount;
+        }
+
+        parseDifficultMap(classifyData.difficultDistributeInfo);
+        parsePropertyMap(classifyData.propertyDistributeInfo);
+      });
+      this.sourceDataMap = sourceDataMap;
+    },
   },
 };
 </script>

+ 429 - 0
src/modules/paper/datas/autoPaperStruct.json

@@ -0,0 +1,429 @@
+[
+  {
+    "questionType": "SINGLE_ANSWER_QUESTION",
+    "description": {
+      "sections": []
+    },
+    "detailName": "打他答复",
+    "sourceDetailId": 28,
+    "courseId": 2,
+    "score": 4,
+    "questionDistributeInfo": [
+      {
+        "id": 0,
+        "name": null,
+        "classifyId": 0,
+        "classifyName": null,
+        "isClassify": true,
+        "questionCount": 10,
+        "difficultDistributeInfo": [],
+        "propertyDistributeInfo": [
+          {
+            "id": "0_8",
+            "name": "向量代数与空间解析几何",
+            "propertyId": 8,
+            "propertyName": "向量代数与空间解析几何",
+            "questionCount": 2,
+            "difficultDistributeInfo": [
+              {
+                "difficultLevel": "难",
+                "questionCount": 0
+              },
+              {
+                "difficultLevel": "中",
+                "questionCount": 0
+              },
+              {
+                "difficultLevel": "易",
+                "questionCount": 2,
+                "selectCount": 2
+              }
+            ],
+            "propertyDistributeInfo": [
+              {
+                "id": "0_8_9",
+                "name": "向量及其线性运算",
+                "propertyId": 9,
+                "propertyName": "向量及其线性运算",
+                "questionCount": 1,
+                "difficultDistributeInfo": [
+                  {
+                    "difficultLevel": "难",
+                    "questionCount": 0
+                  },
+                  {
+                    "difficultLevel": "中",
+                    "questionCount": 0
+                  },
+                  {
+                    "difficultLevel": "易",
+                    "questionCount": 1
+                  }
+                ]
+              },
+              {
+                "id": "0_8_10",
+                "name": "点的坐标与向量坐标",
+                "propertyId": 10,
+                "propertyName": "点的坐标与向量坐标",
+                "questionCount": 2,
+                "difficultDistributeInfo": [
+                  {
+                    "difficultLevel": "难",
+                    "questionCount": 0
+                  },
+                  {
+                    "difficultLevel": "中",
+                    "questionCount": 0
+                  },
+                  {
+                    "difficultLevel": "易",
+                    "questionCount": 2
+                  }
+                ]
+              },
+              {
+                "id": "0_8_11",
+                "name": "向量的乘法运算",
+                "propertyId": 11,
+                "propertyName": "向量的乘法运算",
+                "questionCount": 1,
+                "difficultDistributeInfo": [
+                  {
+                    "difficultLevel": "难",
+                    "questionCount": 0
+                  },
+                  {
+                    "difficultLevel": "中",
+                    "questionCount": 0
+                  },
+                  {
+                    "difficultLevel": "易",
+                    "questionCount": 1
+                  }
+                ]
+              }
+            ]
+          },
+          {
+            "id": "0_17",
+            "name": "多元函数微分法及其应用",
+            "propertyId": 17,
+            "propertyName": "多元函数微分法及其应用",
+            "questionCount": 4,
+            "difficultDistributeInfo": [
+              {
+                "difficultLevel": "难",
+                "questionCount": 0
+              },
+              {
+                "difficultLevel": "中",
+                "questionCount": 0
+              },
+              {
+                "difficultLevel": "易",
+                "questionCount": 4,
+                "selectCount": 2
+              }
+            ],
+            "propertyDistributeInfo": [
+              {
+                "id": "0_17_18",
+                "name": "多元函数的基本概念",
+                "propertyId": 18,
+                "propertyName": "多元函数的基本概念",
+                "questionCount": 1,
+                "difficultDistributeInfo": [
+                  {
+                    "difficultLevel": "难",
+                    "questionCount": 0
+                  },
+                  {
+                    "difficultLevel": "中",
+                    "questionCount": 0
+                  },
+                  {
+                    "difficultLevel": "易",
+                    "questionCount": 1
+                  }
+                ]
+              },
+              {
+                "id": "0_17_22",
+                "name": "多元函数的高阶偏导数",
+                "propertyId": 22,
+                "propertyName": "多元函数的高阶偏导数",
+                "questionCount": 1,
+                "difficultDistributeInfo": [
+                  {
+                    "difficultLevel": "难",
+                    "questionCount": 0
+                  },
+                  {
+                    "difficultLevel": "中",
+                    "questionCount": 0
+                  },
+                  {
+                    "difficultLevel": "易",
+                    "questionCount": 1
+                  }
+                ]
+              },
+              {
+                "id": "0_17_26",
+                "name": "二元函数的泰勒公式",
+                "propertyId": 26,
+                "propertyName": "二元函数的泰勒公式",
+                "questionCount": 1,
+                "difficultDistributeInfo": [
+                  {
+                    "difficultLevel": "难",
+                    "questionCount": 0
+                  },
+                  {
+                    "difficultLevel": "中",
+                    "questionCount": 0
+                  },
+                  {
+                    "difficultLevel": "易",
+                    "questionCount": 1
+                  }
+                ]
+              },
+              {
+                "id": "0_17_27",
+                "name": "多元函数的极值与最值",
+                "propertyId": 27,
+                "propertyName": "多元函数的极值与最值",
+                "questionCount": 1,
+                "difficultDistributeInfo": [
+                  {
+                    "difficultLevel": "难",
+                    "questionCount": 0
+                  },
+                  {
+                    "difficultLevel": "中",
+                    "questionCount": 0
+                  },
+                  {
+                    "difficultLevel": "易",
+                    "questionCount": 1
+                  }
+                ]
+              }
+            ]
+          }
+        ],
+        "coursePropertyDistributeInfo": [
+          {
+            "coursePropertyId": 2,
+            "coursePropertyName": "知识",
+            "propertyDistributeInfo": [
+              {
+                "id": "0_8",
+                "name": "向量代数与空间解析几何",
+                "propertyId": 8,
+                "propertyName": "向量代数与空间解析几何",
+                "questionCount": 2,
+                "difficultDistributeInfo": [
+                  {
+                    "difficultLevel": "难",
+                    "questionCount": 0
+                  },
+                  {
+                    "difficultLevel": "中",
+                    "questionCount": 0
+                  },
+                  {
+                    "difficultLevel": "易",
+                    "questionCount": 2,
+                    "selectCount": 2
+                  }
+                ],
+                "propertyDistributeInfo": [
+                  {
+                    "id": "0_8_9",
+                    "name": "向量及其线性运算",
+                    "propertyId": 9,
+                    "propertyName": "向量及其线性运算",
+                    "questionCount": 1,
+                    "difficultDistributeInfo": [
+                      {
+                        "difficultLevel": "难",
+                        "questionCount": 0
+                      },
+                      {
+                        "difficultLevel": "中",
+                        "questionCount": 0
+                      },
+                      {
+                        "difficultLevel": "易",
+                        "questionCount": 1
+                      }
+                    ]
+                  },
+                  {
+                    "id": "0_8_10",
+                    "name": "点的坐标与向量坐标",
+                    "propertyId": 10,
+                    "propertyName": "点的坐标与向量坐标",
+                    "questionCount": 2,
+                    "difficultDistributeInfo": [
+                      {
+                        "difficultLevel": "难",
+                        "questionCount": 0
+                      },
+                      {
+                        "difficultLevel": "中",
+                        "questionCount": 0
+                      },
+                      {
+                        "difficultLevel": "易",
+                        "questionCount": 2
+                      }
+                    ]
+                  },
+                  {
+                    "id": "0_8_11",
+                    "name": "向量的乘法运算",
+                    "propertyId": 11,
+                    "propertyName": "向量的乘法运算",
+                    "questionCount": 1,
+                    "difficultDistributeInfo": [
+                      {
+                        "difficultLevel": "难",
+                        "questionCount": 0
+                      },
+                      {
+                        "difficultLevel": "中",
+                        "questionCount": 0
+                      },
+                      {
+                        "difficultLevel": "易",
+                        "questionCount": 1
+                      }
+                    ]
+                  }
+                ]
+              },
+              {
+                "id": "0_17",
+                "name": "多元函数微分法及其应用",
+                "propertyId": 17,
+                "propertyName": "多元函数微分法及其应用",
+                "questionCount": 4,
+                "difficultDistributeInfo": [
+                  {
+                    "difficultLevel": "难",
+                    "questionCount": 0
+                  },
+                  {
+                    "difficultLevel": "中",
+                    "questionCount": 0
+                  },
+                  {
+                    "difficultLevel": "易",
+                    "questionCount": 4,
+                    "selectCount": 2
+                  }
+                ],
+                "propertyDistributeInfo": [
+                  {
+                    "id": "0_17_18",
+                    "name": "多元函数的基本概念",
+                    "propertyId": 18,
+                    "propertyName": "多元函数的基本概念",
+                    "questionCount": 1,
+                    "difficultDistributeInfo": [
+                      {
+                        "difficultLevel": "难",
+                        "questionCount": 0
+                      },
+                      {
+                        "difficultLevel": "中",
+                        "questionCount": 0
+                      },
+                      {
+                        "difficultLevel": "易",
+                        "questionCount": 1
+                      }
+                    ]
+                  },
+                  {
+                    "id": "0_17_22",
+                    "name": "多元函数的高阶偏导数",
+                    "propertyId": 22,
+                    "propertyName": "多元函数的高阶偏导数",
+                    "questionCount": 1,
+                    "difficultDistributeInfo": [
+                      {
+                        "difficultLevel": "难",
+                        "questionCount": 0
+                      },
+                      {
+                        "difficultLevel": "中",
+                        "questionCount": 0
+                      },
+                      {
+                        "difficultLevel": "易",
+                        "questionCount": 1
+                      }
+                    ]
+                  },
+                  {
+                    "id": "0_17_26",
+                    "name": "二元函数的泰勒公式",
+                    "propertyId": 26,
+                    "propertyName": "二元函数的泰勒公式",
+                    "questionCount": 1,
+                    "difficultDistributeInfo": [
+                      {
+                        "difficultLevel": "难",
+                        "questionCount": 0
+                      },
+                      {
+                        "difficultLevel": "中",
+                        "questionCount": 0
+                      },
+                      {
+                        "difficultLevel": "易",
+                        "questionCount": 1
+                      }
+                    ]
+                  },
+                  {
+                    "id": "0_17_27",
+                    "name": "多元函数的极值与最值",
+                    "propertyId": 27,
+                    "propertyName": "多元函数的极值与最值",
+                    "questionCount": 1,
+                    "difficultDistributeInfo": [
+                      {
+                        "difficultLevel": "难",
+                        "questionCount": 0
+                      },
+                      {
+                        "difficultLevel": "中",
+                        "questionCount": 0
+                      },
+                      {
+                        "difficultLevel": "易",
+                        "questionCount": 1
+                      }
+                    ]
+                  }
+                ]
+              }
+            ]
+          }
+        ]
+      }
+    ],
+    "questionCount": 4,
+    "classifyIdList": [],
+    "useClassify": false,
+    "useDifficult": true,
+    "useProperty": true,
+    "curCoursePropertyId": 2
+  }
+]