Bläddra i källkod

Merge branch 'master' of https://git.cocorobo.cn/CocoRoboLabs/pbl-student-table

lsc 2 år sedan
förälder
incheckning
afa355002d
1 ändrade filer med 332 tillägg och 7 borttagningar
  1. 332 7
      src/components/study.vue

+ 332 - 7
src/components/study.vue

@@ -178,9 +178,7 @@
                     "
                   >
                     <div
-                      style="
-                        padding: 20px;
-                      "
+                      style="padding: 20px"
                       v-if="rw.taskDetail != ''"
                       v-html="rw.taskDetail ? rw.taskDetail : '暂无描述'"
                     ></div>
@@ -905,6 +903,14 @@
                               />
                               <div style="margin: 5px 0">学生评价</div>
                             </div>
+                            <div v-if="tooC == 41">
+                              <img
+                                @click="addTools(tooC, toolIndex, taskCount)"
+                                src="../assets/icon/thirdToolList/select.png"
+                                alt
+                              />
+                              <div style="margin: 5px 0">选择填空</div>
+                            </div>
                           </div>
                         </div>
                       </div>
@@ -1765,6 +1771,69 @@
                         </div>
                       </div>
                     </div>
+                    <div
+                      v-if="
+                        worksStudent[jdIndex] &&
+                        worksStudent[jdIndex][rwIndex] &&
+                        tType &&
+                        tType == 3 &&
+                        tool.tool.indexOf(41) != -1
+                      "
+                      class="worksBox"
+                    >
+                      <div
+                        style="padding-top: 15px; font-size: 18px"
+                        v-if="
+                          worksStudent[jdIndex][rwIndex][toolIndex].length > 0
+                        "
+                      >
+                        作业预览
+                      </div>
+                      <div
+                        class="worksDetailBox"
+                        v-if="
+                          worksStudent[jdIndex][rwIndex][toolIndex].length > 0
+                        "
+                      >
+                        <div
+                          class="works"
+                          style="
+                            width: 200px;
+                            height: 140px;
+                            margin: 10px 10px 10px 0;
+                            border-radius: 15px;
+                            box-shadow: 0 0 6px 1px #dfdada;
+                          "
+                          v-for="(w, wIndex) in worksStudent[jdIndex][rwIndex][
+                            toolIndex
+                          ]"
+                          :key="wIndex"
+                        >
+                          <div class="workImg">
+                            <img
+                              src="../assets/icon/works/noImg.png"
+                              @click="openXz(w, jdIndex, rwIndex, toolIndex)"
+                              alt
+                            />
+                          </div>
+                          <div class="worksName">
+                            <div>{{ w.sName }}</div>
+                          </div>
+                        </div>
+                      </div>
+                      <div style="padding-top: 15px; font-size: 18px">
+                        未提交
+                      </div>
+                      <div class="noWorksS">
+                        <div
+                          v-for="(s, sIndex) in noWorksS[toolIndex]"
+                          :key="sIndex"
+                          class="noWorksName"
+                        >
+                          {{ s.student }}
+                        </div>
+                      </div>
+                    </div>
                   </div>
                   <!-- <div class="upload_toolBtn" @click="addImg($event)">
                   上传文件
@@ -2524,7 +2593,7 @@
           <div class="commentList">
             <div class="commentImg">
               <img
-              @click="
+                @click="
                   isLikes(
                     commentDetail.wid,
                     commentDetail.userid,
@@ -2701,6 +2770,93 @@
         <el-button type="primary" @click="addBzWorks">确 定</el-button>
       </div>
     </el-dialog>
+    <el-dialog
+      title="选择填空"
+      :visible.sync="dialogVisibleSelect"
+      :append-to-body="true"
+      :width="isSelect ? '1000px' : '800px'"
+      :before-close="handleClose"
+      class="dialog_diy dialog_diy3"
+    >
+      <div v-if="selectJson">
+        <div class="select_box2">
+          <div class="select_box2_title">
+            <div>选择填空</div>
+            <div>请选择对应的答案进行答题!</div>
+          </div>
+          <div class="select_box2_box">
+            <div class="select_box2_img">
+              <img :src="selectJson.url" alt="" />
+            </div>
+            <div :class="isSelect ? 'rightWidthCss' : 'select_box2_answer'">
+              <div style="padding-top: 15px">
+                <div class="select_answer_title" v-if="isSelect">
+                  {{ selectAnswer.stu }}
+                </div>
+                <div class="select_answer_title" v-else>
+                  根据题目选择对应答案
+                </div>
+                <div
+                  class="select_box2_answer_box"
+                  v-for="(item2, checkIndex) in selectJson.select"
+                  :key="checkIndex"
+                >
+                  <span>{{ checkIndex + 1 }}、</span>
+                  <el-select
+                    :disabled="isSelect"
+                    v-model="selectAnswer.answer[checkIndex]"
+                    placeholder="请选择正确答案"
+                  >
+                    <el-option
+                      v-for="(e, eIndex) in selectJson.select"
+                      :key="eIndex"
+                      :label="e"
+                      :value="eIndex"
+                    ></el-option>
+                  </el-select>
+                </div>
+              </div>
+              <div class="rightAnswerCss"  v-if="isSelect && tType == 3">
+                <div
+                  v-for="(a, aIndex) in selectJson.answer"
+                  :key="aIndex"
+                  class="rightAnswer"
+                >
+                  <div
+                    v-if="selectAnswer.answer[aIndex] == selectJson.answer[a]"
+                    style="color: #767de1"
+                  >
+                    回答正确
+                  </div>
+                  <div v-else>回答错误</div>
+                  <div
+                    style="margin-left: 10px"
+                    v-if="selectAnswer.answer[aIndex] != selectJson.answer[a]"
+                  >
+                    正确答案:
+                  </div>
+                  <div
+                    :class="
+                      selectAnswer.answer[aIndex] == selectJson.answer[a]
+                        ? 'blueCss'
+                        : 'redCss'
+                    "
+                  >
+                    {{ selectJson.select[a] }}
+                  </div>
+                </div>
+              </div>
+
+              <div class="upAnswerCss">
+                <el-button type="primary" @click="addSelectAnswer"
+                  >提交答案</el-button
+                >
+              </div>
+            </div>
+          </div>
+        </div>
+      </div>
+    </el-dialog>
   </div>
 </template>
 
@@ -2755,6 +2911,9 @@ export default {
         ca: 0,
       },
       rateParams: [],
+      selectAnswer: [],
+      isSelect: false,
+      dialogVisibleSelect: false,
       colors: ["#DFDFDF", "#DFDFDF", "#DFDFDF"],
       studyJuri: [
         {
@@ -3337,7 +3496,7 @@ export default {
 
                     if (b[j].stage == q && b[j].task == w) {
                       // 1、电子白板,3、思维导图,6协同文档,7思维网格 16、作业提交
-                      let _toolsAarry1 = [1, 3, 6, 7, 16, 40];
+                      let _toolsAarry1 = [1, 3, 6, 7, 16, 40, 41];
                       let _toolsAarry2 = [4];
                       let _toolsAarry3 = [15];
                       for (var k = 0; k < p.length; k++) {
@@ -3367,7 +3526,8 @@ export default {
                         (b[j].type == 1 ||
                           b[j].type == 4 ||
                           b[j].type == 5 ||
-                          b[j].type == 6) &&
+                          b[j].type == 6 ||
+                          b[j].type == 7) &&
                         _toolsAarry1.indexOf(e[i].tool[0]) != -1
                       ) {
                         if (
@@ -3425,6 +3585,19 @@ export default {
                             isLikes: isLikes,
                             commentJson: commentJson,
                           });
+                        } else if (b[j].type == 7) {
+                          this.worksStudent[q][w][i].push({
+                            userid: b[j].userid,
+                            wid: b[j].id,
+                            works: b[j].content,
+                            sName: b[j].name,
+                            type: 5,
+                            time: b[j].time,
+                            likesCount: likesCount,
+                            commentCount: commentCount,
+                            isLikes: isLikes,
+                            commentJson: commentJson,
+                          });
                         } else {
                           this.worksStudent[q][w][i].push({
                             userid: b[j].userid,
@@ -4781,7 +4954,66 @@ export default {
 
         this.isStar = false;
         this.studentEvalDialogVisible = true;
+      } else if (t == 41) {
+        this.selectJson = this.chapInfoList[this.courseType].chapterInfo[0]
+          .taskJson[index].toolChoose[i].selectJson
+          ? JSON.parse(
+              JSON.stringify(
+                this.chapInfoList[this.courseType].chapterInfo[0].taskJson[
+                  index
+                ].toolChoose[i].selectJson
+              )
+            )
+          : { url: "", select: [], answer: [] };
+        this.isSelect = false;
+        this.dialogVisibleSelect = true;
+      }
+    },
+    addSelectAnswer() {
+      let params = [
+        {
+          uid: this.userid,
+          cid: this.id,
+          stage: this.courseType,
+          task: this.taskCount,
+          tool: this.toolindex,
+          content: this.selectAnswer,
+          type: 7,
+        },
+      ];
+      this.ajax
+        .post(this.$store.state.api + "addCourseWorks", params)
+        .then((res) => {
+          this.$message({
+            message: "提交成功",
+            type: "success",
+          });
+          this.selectAnswer = [];
+          this.dialogVisibleSelect = false;
+        })
+        .catch((err) => {
+          this.$message.error("提交失败");
+          console.error(err);
+        });
+    },
+    openXz(w, jd, rw, toolindex) {
+      this.selectJson = this.chapInfoList[jd].chapterInfo[0].taskJson[rw]
+        .toolChoose[toolindex].selectJson
+        ? JSON.parse(
+            JSON.stringify(
+              this.chapInfoList[jd].chapterInfo[0].taskJson[rw].toolChoose[
+                toolindex
+              ].selectJson
+            )
+          )
+        : { url: "", select: [], answer: [] };
+      var a = w.works.split(",");
+      for (var k = 0; k < a.length; k++) {
+        a[k] = parseInt(a[k]);
       }
+      this.selectAnswer = { answer: a, stu: w.sName };
+      this.isSelect = true;
+      this.dialogVisibleSelect = true;
     },
     openPj(w, jd, rw, toolindex) {
       this.isStar = true;
@@ -4988,7 +5220,7 @@ export default {
     flex-direction: column !important;
     align-items: center !important;
   }
-  .dialog_diy1 >>> .el-dialog{
+  .dialog_diy1 >>> .el-dialog {
     width: 100% !important;
   }
   /* .courseIndex {
@@ -6661,4 +6893,97 @@ export default {
 .bz > div {
   padding: 0 10px;
 }
+.select_box2_title {
+  background: #fff;
+  border-radius: 5px;
+  padding: 15px 10px;
+  box-sizing: border-box;
+  margin-bottom: 10px;
+  display: flex;
+  flex-direction: row;
+  flex-wrap: nowrap;
+  align-items: center;
+}
+.select_box2_title > div:nth-child(2) {
+  margin-left: 10px;
+  color: #c4c4c4;
+}
+.select_box2_box {
+  display: flex;
+  height: 500px;
+}
+.select_box2_img {
+  width: calc(100% - 310px);
+  height: 100%;
+  overflow: auto;
+  background: #fff;
+  border-radius: 5px;
+}
+.select_box2_img img {
+  width: 100%;
+}
+.select_box2_answer {
+  background: #fff;
+  margin-left: 10px;
+  border-radius: 5px;
+  width: 300px;
+  overflow: auto;
+  height: 100%;
+  display: flex;
+  flex-direction: column;
+  align-items: flex-start;
+  padding-top: 10px;
+  box-sizing: border-box;
+  position: relative;
+}
+.select_answer_title {
+  padding: 0 0 15px 20px;
+  color: #c4c4c4;
+}
+.select_box2_answer_box {
+  margin: 0 0 10px 20px;
+  width: 85%;
+  display: flex;
+  flex-direction: row;
+  flex-wrap: nowrap;
+  align-items: center;
+}
+.upAnswerCss {
+  position: absolute;
+  bottom: 15px;
+  right: 15px;
+}
+.upAnswerCss >>> .el-button {
+  width: 95px;
+  height: 35px;
+  line-height: 35px;
+  padding: 0;
+}
+.rightWidthCss {
+  width: 60%;
+  display: flex;
+  flex-direction: row;
+  align-items: flex-start;
+}
+.rightAnswer {
+  display: flex;
+  flex-direction: row;
+  flex-wrap: nowrap;
+  align-items: center;
+  color: red;
+  margin-bottom: 31px;
+}
+.rightAnswerCss {
+  display: flex;
+  flex-direction: column;
+  flex-wrap: nowrap;
+  padding-top: 60px;
+}
+.blueCss{
+  color: #767DE1;
+  margin-left: 10px;
+}
+.redCss{
+  color:red;
+}
 </style>