xiatian 3 jaren geleden
bovenliggende
commit
f4b1365dd8

+ 35 - 6
src/modules/questions/styles/EditPaper.css

@@ -114,7 +114,7 @@ textarea {
   width: 200px;
 }
 .paperName {
-  margin-top: 30px;
+  margin-top: 100px;
   text-align: center;
 }
 .showContentBtn {
@@ -131,18 +131,40 @@ textarea {
   top: 0;
   right: 0;
   bottom: 0;
-  height: 60px;
-  line-height: 60px;
+  height: 40px;
+  line-height: 40px;
   z-index: 100;
   text-align: center;
+  padding-right: 3.5%;
+}
+.edit-paper-top2 {
+  background: #eff2f7;
+  color: #000;
+  position: fixed;
+  left: 0;
+  top: 40px;
+  right: 0;
+  bottom: 0;
+  height: 40px;
+  line-height: 40px;
+  z-index: 100;
+  text-align: center;
+  padding-right: 3.5%;
 }
 .edit-paper-top-inline {
-  margin-left: 6%;
+  margin-left: 3.5%;
+  height: 100%;
 }
 .paper-top-div {
   float: left;
-  margin-left: 5px;
-  padding-left: 5px;
+  padding-right: 10px;
+}
+.paper-top-right-div {
+  float: right;
+}
+.paper-top-left-div {
+  float: left;
+  margin-right: 10px;
 }
 .paper-top-title {
   font-size: 16px;
@@ -152,6 +174,13 @@ textarea {
   font-size: 16px;
   padding: 3px 10px;
 }
+.paper-top-text-btn {
+  font-size: 14px;
+  background-color: aliceblue;
+  padding: 3px 10px;
+  margin-left: 10px;
+  cursor: pointer;
+}
 .paperName-input {
   background-color: #eff2f7;
   border: 1px solid #000;

+ 121 - 126
src/modules/questions/views/EditPaper.vue

@@ -28,16 +28,19 @@
           </el-tooltip>
         </div>
         <div class="paper-top-div">
-          <span class="paper-top-title">试卷难度:</span>
-          <span class="paper-top-value">{{ paper.difficultyDegree }}</span>
+          <span class="paper-top-title">试卷总分:</span>
+          <span class="paper-top-value">{{ paper.totalScore }}</span>
         </div>
-        <div>
-          <el-button type="primary" size="small" @click="savePaper">
-            保存
-          </el-button>
-          <el-button type="danger" size="small" @click="deletePaper(paper.id)">
-            <i class="el-icon-delete"></i> 删除
-          </el-button>
+        <div class="paper-top-right-div">
+          <el-button
+            size="small"
+            type="primary"
+            style="margin-left: 10px"
+            @click="back"
+            ><i class="el-icon-arrow-left"></i> 返回</el-button
+          >
+        </div>
+        <div class="paper-top-right-div">
           <el-dropdown class="button_left">
             <el-button type="primary" size="small">
               更多 <i class="el-icon-arrow-down el-icon--right"></i>
@@ -72,57 +75,56 @@
               </el-dropdown-item>
             </el-dropdown-menu>
           </el-dropdown>
-
+        </div>
+        <div class="paper-top-right-div">
           <el-button
+            style="margin-left: 10px"
+            type="danger"
             size="small"
-            type="primary"
+            @click="deletePaper(paper.id)"
+          >
+            <i class="el-icon-delete"></i> 删除
+          </el-button>
+        </div>
+        <div class="paper-top-right-div">
+          <el-button
             style="margin-left: 10px"
-            @click="back"
-            ><i class="el-icon-arrow-left"></i> 返回</el-button
+            type="primary"
+            size="small"
+            @click="savePaper"
           >
+            保存
+          </el-button>
         </div>
       </div>
     </div>
-    <div class="paperName">
-      <div>
-        <br />
-        <h3 class="text-center">{{ paper.course.name }}&nbsp;试卷</h3>
-        <h5 class="text-center">
-          <span v-show="paper.hasAudio">(含音频试卷)</span>
-        </h5>
-        <br />
-        <h4 class="text-center">(课程代码&nbsp;{{ paper.course.code }})</h4>
-        <br />
+    <div class="edit-paper-top2">
+      <div class="edit-paper-top-inline">
+        <div class="paper-top-left-div">
+          <el-button type="primary" size="small" @click="savePaper">
+            保存
+          </el-button>
+        </div>
+        <div class="paper-top-left-div">
+          <el-button type="primary" size="small" @click="savePaper">
+            保存2
+          </el-button>
+        </div>
+
+        <div class="paper-top-right-div" @click="quesTagShowHide">
+          <span class="paper-top-text-btn"
+            >{{ quesTagShow ? "隐藏" : "显示" }}属性</span
+          >
+        </div>
+        <div class="paper-top-right-div" @click="quesAnswerShowHide">
+          <span class="paper-top-text-btn"
+            >{{ quesAnswerShow ? "隐藏" : "显示" }}答案</span
+          >
+        </div>
       </div>
+    </div>
+    <div class="paperName">
       <div class="text-left">
-        <el-table :data="paper.paperDetails" border style="width: 100%">
-          <el-table-column header-align="center" label="大题名称">
-            <template slot-scope="scope">
-              <span>{{ scope.row.name }}</span>
-            </template>
-          </el-table-column>
-          <el-table-column header-align="center" label="大题总分">
-            <template slot-scope="scope">
-              <span>{{ scope.row.score }}</span>
-            </template>
-          </el-table-column>
-          <el-table-column header-align="center" label="小题数量">
-            <template slot-scope="scope">
-              <span>{{ scope.row.unitCount }}</span>
-            </template>
-          </el-table-column>
-          <el-table-column header-align="center" label="公开数量">
-            <template slot-scope="scope">
-              <span>{{ scope.row.pubCount }}</span>
-            </template>
-          </el-table-column>
-          <el-table-column header-align="center" label="非公开数量">
-            <template slot-scope="scope">
-              <span>{{ scope.row.noPubCount }}</span>
-            </template>
-          </el-table-column>
-        </el-table>
-
         <div class="mainQues" style="margin-top: 20px; margin-left: 0px">
           <div class="mainQuesTitle">
             <span>考试说明:</span>
@@ -136,11 +138,6 @@
             </div>
           </div>
         </div>
-        <!-- end by wwh -->
-        <div>
-          <h1>本试卷满分{{ paper.totalScore }}分。</h1>
-        </div>
-        <br />
       </div>
     </div>
 
@@ -217,7 +214,7 @@
             </span>
             <span v-question-audio v-html="paperDetail.description"></span>
           </div>
-          <div class="ques-tag-main">
+          <div v-show="quesTagShow" class="ques-tag-main">
             <div
               v-for="(paperDetailTag, tagIndex) in paperDetail.tags"
               :key="tagIndex"
@@ -254,6 +251,7 @@
               @mouseout="quesMouseOut(paperDetailUnit.id)"
             >
               <div :id="paperDetailUnit.id" class="btnDiv">
+                <span>{{ paperDetailUnit.question.bodyLengthText }}</span>
                 <el-button
                   size="small"
                   @click="editQues(paperDetailUnit, paperDetailUnit.question)"
@@ -301,8 +299,14 @@
                   v-html="quesOption.optionBody"
                 ></span>
               </div>
+              <div v-if="!isNested(paperDetailUnit.questionType)">
+                <div v-show="quesAnswerShow">
+                  <span>答案:</span>
+                  <span v-html="paperDetailUnit.question.quesAnswer"></span>
+                </div>
+              </div>
             </div>
-            <div class="ques-tag-main">
+            <div v-show="quesTagShow" class="ques-tag-main">
               <div
                 v-for="(questionTag, tagIndex) in paperDetailUnit.question.tags"
                 :key="tagIndex"
@@ -360,9 +364,7 @@
                     >
                   </div>
 
-                  <div
-                    v-if="paperDetailUnit.questionType != 'MATCHING_QUESTION'"
-                  >
+                  <div v-if="!isMatchingQuestion(paperDetailUnit.questionType)">
                     <div
                       v-for="(
                         subQuesOption, subOptIndex
@@ -379,8 +381,12 @@
                       ></span>
                     </div>
                   </div>
+                  <div v-show="quesAnswerShow">
+                    <span>答案:</span>
+                    <span v-html="subQuestion.quesAnswer"></span>
+                  </div>
                 </div>
-                <div class="ques-tag-main">
+                <div v-show="quesTagShow" class="ques-tag-main">
                   <div
                     v-for="(subQuestionTag, tagIndex) in subQuestion.tags"
                     :key="tagIndex"
@@ -477,7 +483,7 @@
                   placeholder="分值"
                   :precision="1"
                   :min="0"
-                  :disabled="quesModel.questionType == 'NESTED_ANSWER_QUESTION'"
+                  :disabled="isNested(quesModel.questionType)"
                 ></el-input-number>
               </el-form-item>
             </el-col>
@@ -490,9 +496,7 @@
                   v-model="quesModel.difficultyDegree"
                   placeholder="请输入难度"
                   :disabled="
-                    quesModel.questionType == 'NESTED_ANSWER_QUESTION'
-                      ? true
-                      : updatePorperty
+                    isNested(quesModel.questionType) ? true : updatePorperty
                   "
                 >
                   <el-option
@@ -563,29 +567,7 @@
               </el-form-item>
             </el-col>
             <el-col
-              v-if="quesModel.questionType == 'MATCHING_QUESTION'"
-              :xs="10"
-              :sm="10"
-              :md="10"
-              :lg="10"
-            >
-              <el-form-item label="配对类型">
-                <el-select
-                  v-model="quesModel.quesParam.matchingType"
-                  :disabled="updatePorperty"
-                >
-                  <el-option
-                    v-for="item in matchingTypes"
-                    :key="item.value"
-                    :label="item.label"
-                    :value="item.value"
-                  >
-                  </el-option>
-                </el-select>
-              </el-form-item>
-            </el-col>
-            <el-col
-              v-if="quesModel.questionType == 'MATCHING_QUESTION'"
+              v-if="isMatchingQuestion(quesModel.questionType)"
               :xs="10"
               :sm="10"
               :md="10"
@@ -734,7 +716,7 @@
                 <div
                   v-if="
                     !quesModel.parentType ||
-                    quesModel.parentType != 'MATCHING_QUESTION' ||
+                    !isMatchingQuestion(quesModel.parentType) ||
                     !isInOtherSelect(optIndex, quesModel)
                   "
                 >
@@ -748,14 +730,14 @@
                     v-model="multipleRightAnswer"
                     :label="optIndex | optionOrderWordFilter"
                   ></el-checkbox>
-                  <span v-if="quesModel.questionType === 'MATCHING_QUESTION'">{{
+                  <span v-if="isMatchingQuestion(quesModel.questionType)">{{
                     optIndex | optionOrderWordFilter
                   }}</span>
                 </div>
                 <div
                   v-if="
                     quesModel.parentType &&
-                    quesModel.parentType == 'MATCHING_QUESTION' &&
+                    isMatchingQuestion(quesModel.parentType) &&
                     isInOtherSelect(optIndex, quesModel)
                   "
                 >
@@ -780,17 +762,16 @@
                       :disabled="true"
                       :label="optIndex | optionOrderWordFilter"
                     ></el-checkbox>
-                    <span
-                      v-if="quesModel.questionType === 'MATCHING_QUESTION'"
-                      >{{ optIndex | optionOrderWordFilter }}</span
-                    >
+                    <span v-if="isMatchingQuestion(quesModel.questionType)">{{
+                      optIndex | optionOrderWordFilter
+                    }}</span>
                   </el-tooltip>
                 </div>
               </el-col>
               <el-col
                 v-if="
                   !quesModel.parentType ||
-                  quesModel.parentType != 'MATCHING_QUESTION'
+                  !isMatchingQuestion(quesModel.parentType)
                 "
                 :span="20"
               >
@@ -799,7 +780,7 @@
               <el-col
                 v-if="
                   quesModel.parentType &&
-                  quesModel.parentType == 'MATCHING_QUESTION'
+                  isMatchingQuestion(quesModel.parentType)
                 "
                 :span="20"
               >
@@ -808,7 +789,7 @@
               <el-col
                 v-if="
                   !quesModel.parentType ||
-                  quesModel.parentType != 'MATCHING_QUESTION'
+                  !isMatchingQuestion(quesModel.parentType)
                 "
                 :span="2"
               >
@@ -822,12 +803,8 @@
 
             <div
               v-if="
-                quesModel.questionType != 'NESTED_ANSWER_QUESTION' &&
-                quesModel.questionType != 'SINGLE_ANSWER_QUESTION' &&
-                quesModel.questionType != 'MULTIPLE_ANSWER_QUESTION' &&
-                quesModel.questionType != 'BOOL_ANSWER_QUESTION' &&
-                quesModel.questionType != 'MATCHING_QUESTION' &&
-                quesModel.questionType != 'LISTENING_QUESTION'
+                quesModel.questionType == 'TEXT_ANSWER_QUESTION' ||
+                quesModel.questionType == 'FILL_BLANK_QUESTION'
               "
             >
               <el-form-item label="答案">
@@ -881,8 +858,8 @@
               v-if="
                 (quesModel.questionType == 'SINGLE_ANSWER_QUESTION' ||
                   quesModel.questionType == 'MULTIPLE_ANSWER_QUESTION' ||
-                  quesModel.questionType == 'MATCHING_QUESTION') &&
-                quesModel.parentType != 'MATCHING_QUESTION'
+                  isMatchingQuestion(quesModel.questionType)) &&
+                !isMatchingQuestion(quesModel.parentType)
               "
               type="primary"
               @click="addQuesOption"
@@ -1013,6 +990,8 @@ export default {
   },
   data() {
     return {
+      quesAnswerShow: true,
+      quesTagShow: true,
       hValue: "100px",
       wValue: "500px",
       display: "block",
@@ -1137,7 +1116,14 @@ export default {
     },
   },
   created() {
-    // $("body").attr("style", "");
+    let qt = sessionStorage.getItem("quesTagShow");
+    if (qt) {
+      this.quesTagShow = qt == "true";
+    }
+    let qa = sessionStorage.getItem("quesAnswerShow");
+    if (qa) {
+      this.quesAnswerShow = qa == "true";
+    }
     document.getElementsByTagName("body")[0].style = "";
     this.paperId = this.$route.params.id;
     this.parentView = this.$route.params.parentView;
@@ -1150,11 +1136,31 @@ export default {
     };
   },
   methods: {
+    quesAnswerShowHide() {
+      this.quesAnswerShow = !this.quesAnswerShow;
+      sessionStorage.setItem("quesAnswerShow", this.quesAnswerShow);
+    },
+    quesTagShowHide() {
+      this.quesTagShow = !this.quesTagShow;
+      sessionStorage.setItem("quesTagShow", this.quesTagShow);
+    },
+    isMatchingQuestion(questionType) {
+      if (
+        questionType == "PARAGRAPH_MATCHING" ||
+        questionType == "BANKED_CLOZE"
+      ) {
+        return true;
+      } else {
+        return false;
+      }
+    },
     isNested(questionType) {
       if (
-        questionType == "NESTED_ANSWER_QUESTION" ||
-        questionType == "LISTENING_QUESTION" ||
-        questionType == "MATCHING_QUESTION"
+        questionType == "PARAGRAPH_MATCHING" ||
+        questionType == "BANKED_CLOZE" ||
+        questionType == "CLOZE" ||
+        questionType == "READING_COMPREHENSION" ||
+        questionType == "LISTENING_QUESTION"
       ) {
         return true;
       } else {
@@ -1383,10 +1389,7 @@ export default {
                 paperDetil.paperDetailUnits.length > 0
               ) {
                 for (let paperDetilUt of paperDetil.paperDetailUnits) {
-                  if (
-                    paperDetilUt.question.questionType !=
-                    "NESTED_ANSWER_QUESTION"
-                  ) {
+                  if (!this.isNested(paperDetilUt.question.questionType)) {
                     //非套题
                     if (paperDetilUt.question.publicity) {
                       paperDetil.pubCount = paperDetil.pubCount + 1;
@@ -1565,12 +1568,8 @@ export default {
       this.quesModel.score = paperDetailUnit.score;
       //如果是套题下面的小题编辑 ( paperDetailUnit的类型是套题,question的类型不是套题)
       if (
-        (paperDetailUnit.questionType == "NESTED_ANSWER_QUESTION" &&
-          question.questionType != "NESTED_ANSWER_QUESTION") ||
-        (paperDetailUnit.questionType == "LISTENING_QUESTION" &&
-          question.questionType != "LISTENING_QUESTION") ||
-        (paperDetailUnit.questionType == "MATCHING_QUESTION" &&
-          question.questionType != "MATCHING_QUESTION")
+        this.isNested(paperDetailUnit.questionType) &&
+        question.questionType != paperDetailUnit.questionType
       ) {
         for (var i = 0; i < paperDetailUnit.question.subQuestions.length; i++) {
           if (
@@ -1595,11 +1594,7 @@ export default {
           "###"
         );
       }
-      if (
-        this.quesModel.questionType == "NESTED_ANSWER_QUESTION" ||
-        this.quesModel.questionType == "MATCHING_QUESTION" ||
-        this.quesModel.questionType == "LISTENING_QUESTION"
-      ) {
+      if (this.isNested(this.quesModel.questionType)) {
         this.quesModel.quesBody = this.quesModel.quesBody.replace(
           /___([1-9][0-9]*)___/g,
           "##$1##"

+ 53 - 45
src/modules/questions/views/ViewPaper.vue

@@ -202,61 +202,69 @@
               </div>
             </div>
             <br />
-
-            <div
-              v-for="(subQuestion, subIndex) in paperDetailUnit.question
-                .subQuestions"
-              v-show="quesShow(subQuestion.id)"
-              :key="subIndex"
-              class="subQues"
-            >
-              <reduplicate_mark
-                :show="reduplicateMarkShow(subQuestion.id)"
-              ></reduplicate_mark>
-
+            <div style="flex-basis: 100%"></div>
+            <div class="sub-ques-main-div">
               <div
-                class="quesSelect"
-                @mouseover="
-                  quesMouseOver(getSubQuesEditId(paperDetailUnit, subQuestion))
-                "
-                @mouseout="
-                  quesMouseOut(getSubQuesEditId(paperDetailUnit, subQuestion))
-                "
+                v-for="(subQuestion, subIndex) in paperDetailUnit.question
+                  .subQuestions"
+                v-show="quesShow(subQuestion.id)"
+                :key="subIndex"
+                class="subQues"
               >
+                <reduplicate_mark
+                  :show="reduplicateMarkShow(subQuestion.id)"
+                ></reduplicate_mark>
+
                 <div
-                  :id="getSubQuesEditId(paperDetailUnit, subQuestion)"
-                  class="btnDiv"
+                  class="quesSelect"
+                  @mouseover="
+                    quesMouseOver(
+                      getSubQuesEditId(paperDetailUnit, subQuestion)
+                    )
+                  "
+                  @mouseout="
+                    quesMouseOut(getSubQuesEditId(paperDetailUnit, subQuestion))
+                  "
                 >
-                  <el-button
-                    size="small"
-                    @click="editQues(paperDetailUnit, subQuestion)"
-                    >查看
-                  </el-button>
-                </div>
-
-                <div class="quesBody">
-                  <span class="ques-title">{{ subQuestion.subNumber }}. </span>
-
-                  <span v-html="subQuestion.quesBody"></span>
-                  <span
-                    >({{ paperDetailUnit.subScoreList[subIndex] }}分)</span
-                  >
-                </div>
-                <div v-if="paperDetailUnit.questionType != 'MATCHING_QUESTION'">
                   <div
-                    v-for="(
-                      subQuesOption, subOptIndex
-                    ) in subQuestion.quesOptions"
-                    :key="subOptIndex"
-                    class="quesOption"
+                    :id="getSubQuesEditId(paperDetailUnit, subQuestion)"
+                    class="btnDiv"
                   >
+                    <el-button
+                      size="small"
+                      @click="editQues(paperDetailUnit, subQuestion)"
+                      >查看
+                    </el-button>
+                  </div>
+
+                  <div class="quesBody">
                     <span class="ques-title"
-                      >{{ subOptIndex | optionOrderWordFilter }}.
+                      >{{ subQuestion.subNumber }}.
                     </span>
-                    <span v-html="subQuesOption.optionBody"></span>
+
+                    <span v-html="subQuestion.quesBody"></span>
+                    <span
+                      >({{ paperDetailUnit.subScoreList[subIndex] }}分)</span
+                    >
+                  </div>
+                  <div
+                    v-if="paperDetailUnit.questionType != 'MATCHING_QUESTION'"
+                  >
+                    <div
+                      v-for="(
+                        subQuesOption, subOptIndex
+                      ) in subQuestion.quesOptions"
+                      :key="subOptIndex"
+                      class="quesOption"
+                    >
+                      <span class="ques-title"
+                        >{{ subOptIndex | optionOrderWordFilter }}.
+                      </span>
+                      <span v-html="subQuesOption.optionBody"></span>
+                    </div>
                   </div>
+                  <br />
                 </div>
-                <br />
               </div>
             </div>
           </div>