lsc 2 years ago
parent
commit
476dda3f52

+ 347 - 0
src/components/components/voteStatic.vue

@@ -0,0 +1,347 @@
+<template>
+  <div class="sjBox" v-if="askJSONC && askJSONC.askJson">
+    <div class="a_add_title">
+      <div style="font-size: 25px"><spna style="color:rgb(113, 113, 113);">投票标题:</spna>{{ askJSONC.askTitle }}</div>
+    </div>
+    <div class="a_addBox">
+      <div
+        class="a_add_box"
+        v-for="(item, index) in askJSONC.askJson"
+        :key="index"
+      >
+        <div class="a_add_head">
+          <div>
+            <span>{{ index + 1 + "、" + item.askstitle }}</span>
+          </div>
+          <!-- <el-button
+            type="primary"
+            @click="getA(checkJson[index].checkPerson, item.checkList)"
+            >查看</el-button
+          > -->
+        </div>
+        <div class="a_add_body">
+          <div class="a_add_input width100">
+            <div class="a_add_persent a_add_persent_div a_add_persent_title">
+              <span>投票选项</span><span>投票小计</span><span>投票比例</span>
+            </div>
+            <div class="a_add_persent">
+              <div
+                class="a_add_persent_div"
+                v-for="(item1, checkIndex) in item.askItem"
+                :key="checkIndex"
+              >
+                <span
+                  ><span
+                    style="max-width: calc(100% - 40px); width: auto"
+                    v-html="item.checkList[checkIndex]"
+                  ></span
+                ></span>
+                <span>{{
+                  checkJson[index].checkCount[checkIndex]
+                    ? checkJson[index].checkCount[checkIndex]
+                    : 0
+                }}</span>
+                <span>
+                  <el-progress
+                    :percentage="
+                      checkJson[index].checkPerent[checkIndex]
+                        ? checkJson[index].checkPerent[checkIndex]
+                        : 0
+                    "
+                    :show-text="false"
+                  ></el-progress>
+                </span>
+              </div>
+            </div>
+          </div>
+        </div>
+      </div>
+    </div>
+    <el-dialog
+      title="查看"
+      :visible.sync="dialogVisible"
+      :append-to-body="true"
+      width="900px"
+      :before-close="handleClose"
+      class="dialog_diy"
+    >
+      <div>
+        <div v-for="(item, index) in timu" :key="index" class="borderB">
+          <div v-html="item" class="s_title"></div>
+          <div class="stuBox" style="margin-top: 20px; align-items: flex-start">
+            <div style="margin: 0 0 10px 0; min-width: 70px; color: #adadad">
+              选择:
+            </div>
+            <div class="stuBox" style="flex-wrap: wrap">
+              <span
+                class="studentClass"
+                v-for="(pe, pi) in person[index]"
+                :key="index + '-' + pi"
+                >{{ pe }}</span
+              >
+            </div>
+          </div>
+        </div>
+      </div>
+      <span slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="dialogVisible = false"
+          >关 闭</el-button
+        >
+      </span>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+export default {
+  props: ["askJSON", "checkJson"],
+  data() {
+    return {
+      askJSONC: {},
+      dialogVisible: false,
+      person: [],
+      timu: [],
+      checkJson2: [],
+    };
+  },
+  watch: {
+    askJSON(val) {
+      this.askJSONC = this.askJSON ? JSON.parse(this.askJSON)[0] : {};
+    },
+  },
+  methods: {
+    handleClose(done) {
+      done();
+    },
+    getA(person, timu) {
+      this.person = person;
+      this.timu = timu;
+      this.dialogVisible = true;
+    },
+  },
+  watch: {
+    checkJson: {
+      immediate: true,
+      deep: true,
+      handler(newValue, oldValue) {
+        this.askJSONC = this.askJSON ? this.askJSON : {};
+        for (var i = 0; i < this.checkJson.length; i++) {
+          // debuggerA
+          let el = this.checkJson[i];
+          console.log(el);
+        }
+        this.checkJson2 = this.checkJson;
+      },
+    },
+  },
+  mounted() {
+    // this.askJSONC = this.askJSON ? JSON.parse(this.askJSON)[0] : {};
+    this.askJSONC = this.askJSON ? this.askJSON : {};
+    for (var i = 0; i < this.checkJson.length; i++) {
+      let el = this.checkJson[i];
+      console.log(el);
+    }
+    this.checkJson2 = this.checkJson;
+  },
+};
+</script>
+
+<style scoped>
+.sjBox {
+  margin-top: 25px;
+  /* max-height: 420px; */
+  overflow: auto;
+}
+
+.a_addBox {
+  margin: 20px 0;
+  background: #fff;
+}
+
+.a_add_box {
+  border-bottom: 2px solid #eee;
+  padding-bottom: 10px;
+}
+
+.a_add_head {
+  display: flex;
+  align-items: center;
+  justify-content: space-between;
+  margin: 10px 0;
+  font-size: 18px;
+}
+
+.a_add_head .a_add_head_input {
+  width: 300px;
+}
+
+.a_add_head .a_add_head_div {
+  display: flex;
+  align-items: center;
+  justify-content: space-between;
+}
+
+.a_add_head_div img {
+  cursor: pointer;
+  width: 23px;
+}
+
+.a_add_head_div img + img {
+  margin-left: 10px;
+}
+
+.a_add_body {
+  display: flex;
+  align-items: center;
+}
+
+.a_add_input {
+  display: flex;
+  align-items: center;
+  flex-wrap: wrap;
+  /* flex-direction: column; */
+  /* width: 100%; */
+}
+
+.width100 {
+  width: 100%;
+}
+
+.a_add_input .a_add_persent {
+  /* display: flex; */
+  /* flex-direction: column; */
+  width: 100%;
+}
+
+.a_add_persent_div {
+  width: 100%;
+  display: flex;
+  align-items: center;
+}
+
+.a_add_persent_div span {
+  margin: 5px 0;
+}
+
+.a_add_persent_div span:nth-child(1) {
+  width: 30%;
+}
+
+.a_add_persent_div span:nth-child(2) {
+  width: 7%;
+}
+
+.a_add_persent_div span:nth-child(3) {
+  width: 40%;
+}
+
+.sjBox::-webkit-scrollbar {
+  /*滚动条整体样式*/
+  width: 6px;
+  /*高宽分别对应横竖滚动条的尺寸*/
+  height: 6px;
+}
+
+/*定义滚动条轨道 内阴影+圆角*/
+.sjBox::-webkit-scrollbar {
+  border-radius: 10px;
+  background-color: #eee;
+}
+
+/*定义滑块 内阴影+圆角*/
+.sjBox::-webkit-scrollbar-thumb {
+  border-radius: 10px;
+  -webkit-box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.3);
+  background-color: rgba(0, 0, 0, 0.1);
+}
+
+.right {
+  color: rgb(0 123 255);
+  position: relative;
+  display: flex;
+  align-items: center;
+  flex-wrap: wrap;
+}
+
+.right::after {
+  content: "";
+  /* position: absolute; */
+  background-image: url(../../assets/right.png);
+  min-width: 15px;
+  min-height: 15px;
+  background-size: 100% 100%;
+  margin: 0 10px;
+}
+
+.dialog_diy >>> .el-dialog__header,
+.dialog_diy1 >>> .el-dialog__header {
+  background: #002e81 !important;
+  padding: 15px 20px;
+}
+
+.dialog_diy >>> .el-dialog__title,
+.dialog_diy1 >>> .el-dialog__title {
+  color: #fff;
+}
+
+.dialog_diy >>> .el-dialog__headerbtn,
+.dialog_diy1 >>> .el-dialog__headerbtn {
+  top: 19px;
+}
+
+.dialog_diy >>> .el-dialog__headerbtn .el-dialog__close,
+.dialog_diy1 >>> .el-dialog__headerbtn .el-dialog__close {
+  color: #fff;
+}
+
+.dialog_diy >>> .el-dialog__headerbtn .el-dialog__close:hover,
+.dialog_diy1 >>> .el-dialog__headerbtn .el-dialog__close:hover {
+  color: #fff;
+}
+
+.dialog_diy1 >>> .el-dialog__body {
+  padding: 0;
+}
+
+.dialog_diy >>> .el-dialog__body,
+.dialog_diy >>> .el-dialog__footer,
+.dialog_diy1 >>> .el-dialog__footer {
+  background: #fafafa;
+}
+
+.s_title {
+  /* margin-top: 10px; */
+  font-size: 18px;
+  margin-bottom: 10px;
+  word-break: break-word;
+  /* min-width: calc(100% / 2 - 200px); */
+}
+
+.stuBox {
+  display: flex;
+  /* flex-wrap: wrap; */
+  align-items: center;
+}
+
+.studentClass {
+  background: #46a1eb;
+  color: #fff;
+  width: 90px;
+  height: 25px;
+  text-align: center;
+  line-height: 25px;
+  border-radius: 5px;
+  margin: 0 15px 0 0;
+  white-space: nowrap;
+  overflow: hidden;
+  padding: 5px;
+  text-overflow: ellipsis;
+  font-size: 16px;
+  margin-bottom: 10px;
+}
+
+.borderB {
+  margin-bottom: 10px;
+  border-bottom: 1px solid #d8d8d8;
+}
+</style>

+ 184 - 11
src/components/student/studyStudent.vue

@@ -171,7 +171,7 @@
     taskCount
   ].time) ? '5px auto 5px' : '15px auto 5px'
 }">
-                <div class="task_pbox">协同者:<span :class="{tcMember:getMan(men)}" v-for="(men, mindex) in chapInfoList[courseType].chapterInfo[0].taskJson[
+                <div class="task_pbox">协同者:<span :class="{ tcMember: getMan(men) }" v-for="(men, mindex) in chapInfoList[courseType].chapterInfo[0].taskJson[
                   taskCount
                 ].tcMember" :key="mindex">{{ getMan(men) }}</span></div>
               </div>
@@ -485,6 +485,8 @@
                           <img v-if="photo.type == 4" :src="word" @click="openFile(photo.content)">
                           <img v-if="photo.type == 5" :src="video" @click="openVideo(photo.content)">
                           <img v-if="photo.type == 12" :src="word" @click="openText(photo.content)">
+                          <img v-if="photo.type == 14" :src="word"
+                            @click="openAsk(photo.content, taskCount, toolIndex)">
                           <img v-if="photo.type == 13" :src="zip" @click="downloadFile(photo.content)">
                           <div class="answerBg" v-if="photo.type == 3">
                             <!-- <div>{{ w.sName }}</div> -->
@@ -501,7 +503,12 @@
                   <div class="homeWorkBox" v-else-if="tool.tool != 51">
                     <div class="htitle">暂无作业</div>
                   </div>
-
+                  <div class="homeWorkBox" v-if="
+                    tool.toolPhoto.length &&
+                    tool.tool == 56
+                  ">
+                    <voteStatic :askJSON="tool.askJson" :checkJson="checkJson[toolIndex]"></voteStatic>
+                  </div>
                   <div v-if="tool.tool == 51" style="margin-top:20px">
                     <div class="vedioTaskBox">
                       <div class="box_course" :class="'box_course' + toolIndex" v-if="
@@ -647,12 +654,11 @@
           <div class="addPz" @click="(addPzDialog = true), (pzType = 1)">
             添加批注
           </div>
-          <div class="img1">
+          <!-- <div class="img1">
             <div @click="(addPzDialog = true), (pzType = 2)">
               <img src="../../assets/audio.png" /><span>音频</span>
             </div>
-            <!-- <img src="../assets/picture.png" @click="addPzDialog = true,pzType = 3" /> -->
-          </div>
+          </div> -->
         </div>
       </div>
     </div>
@@ -765,6 +771,45 @@
           关 闭</el-button>
       </div>
     </el-dialog>
+    <el-dialog title='查看投票' :visible.sync="dialogVisible5" :append-to-body="true" width="1000px"
+      :before-close="handleClose" class="dialog_diy dialog_diy3">
+      <div>
+        <div class="a_add_title" style="
+            display: flex;
+            flex-direction: row;
+            align-items: center;
+            justify-content: center;
+          ">
+          <div style="margin-right: 20px; font-size: 20px">投票标题:</div>
+          <div style="font-size: 20px">{{ askJson.askTitle }}</div>
+        </div>
+        <div class="a_addBox">
+          <div style="font-size: 16px; color: #c7c7c7">投票内容</div>
+          <div class="a_add_box" v-for="(item1, index1) in askJson.askCount" :key="index1">
+            <div class="a_add_head">
+              <div style="display: flex">
+                {{ index1 + 1 + "、" }}
+                <div>{{ askJson.askJson[index1].askstitle }}</div>
+              </div>
+              <img v-if="askJson.askJson[index1].img" :src="askJson.askJson[index1].img"
+                style="height: 300px; margin-top: 10px; max-width: 100%" />
+            </div>
+            <div class="a_add_body">
+              <div class="a_add_input">
+                <el-radio-group v-model="radio[index1]">
+                  <el-radio v-for="(item2, checkIndex) in askJson.askJson[index1]
+                  .checkList" :key="checkIndex" :label="checkIndex" :disabled="true" class="redioStyle"><span
+                      v-html="item2"></span></el-radio>
+                </el-radio-group>
+              </div>
+            </div>
+          </div>
+        </div>
+      </div>
+      <span slot="footer" class="dialog-footer">
+        <el-button @click="dialogVisible5 = false">关 闭</el-button>
+      </span>
+    </el-dialog>
   </div>
 </template>
 
@@ -772,11 +817,12 @@
 import "../../common/aws-sdk-2.235.1.min.js";
 import EditorBar from "../tools/wangEnduit.vue";
 import Audio from "../components/audio.vue";
+import voteStatic from "../components/voteStatic.vue";
 import pdf from "../components/vpdf";
 
 export default {
   components: {
-    EditorBar, Audio,
+    EditorBar, Audio, voteStatic,
     pdf
   },
   data() {
@@ -1480,7 +1526,9 @@ export default {
                 var tool = task[j].toolArray
                 for (var z = 0; z < tool.length; z++) {
                   let _tool = tool[z]
-                  _tool.toolPhoto = []
+                  _tool.toolPhoto = [];
+                  this.checkJson[z] = [];
+                  let checkPeople = 0
                   for (var k = 0; k < works.length; k++) {
                     let _work = works[k]
                     if (_work.stage == i && _work.task == j && _work.tool == z && _work.atool == _tool.tool) {
@@ -1502,10 +1550,69 @@ export default {
                         _work.workContent = `(${_work.username})使用(拍照)提交了:`
                       } else if (_tool.tool == 55) {
                         _work.workContent = `(${_work.username})使用(压缩文件)提交了:`
+                      } else if (_tool.tool == 56) {
+                        _work.workContent = `(${_work.username})使用(投票)提交了:`
+                        checkPeople++
+                        var checkL = JSON.parse(_work.content);
+                        for (var kz = 0; kz < checkL.length; kz++) {
+                          if (!this.checkJson[z][kz]) {
+                            this.checkJson[z].push({
+                              checkCount: [],
+                              checkPerson: [],
+                              rightPerson: [],
+                            });
+                          }
+                          if (!this.checkJson[z][kz].checkCount.length) {
+                            this.checkJson[z][kz].checkCount = [];
+                            let _askItemCount = _tool.askJson
+                              .askJson[kz].askItem;
+                            for (var aic = 0; aic < _askItemCount; aic++) {
+                              this.checkJson[z][kz].checkCount.push(0);
+                            }
+                          }
+                          this.checkJson[z][kz].checkPerson[parseInt(checkL[kz])]
+                            ? this.checkJson[z][kz].checkPerson[
+                              parseInt(checkL[kz])
+                            ].push(_work.username)
+                            : (this.checkJson[z][kz].checkPerson[parseInt(checkL[kz])] =
+                              [_work.username]);
+                          this.checkJson[z][kz].checkCount[parseInt(checkL[kz])]
+                            ? this.checkJson[z][kz].checkCount[parseInt(checkL[kz])]++
+                            : (this.checkJson[z][kz].checkCount[
+                              parseInt(checkL[kz])
+                            ] = 1);
+                        }
                       }
-                      _tool.toolPhoto.push(_work);
+
+                      if (_tool.tool == 48 || _tool.tool == 52) {
+                        _tool.toolPhoto[0] = _work
+                      } else {
+                        _tool.toolPhoto.push(_work);
+                      }
+                    }
+                  }
+
+                  for (var kz = 0; kz < this.checkJson[z].length; kz++) {
+                    this.checkJson[z][kz].checkPerent = [];
+                    let aaaa = this.checkJson[z][kz];
+                    console.log(aaaa);
+                    for (
+                      var kc = 0;
+                      kc < this.checkJson[z][kz].checkCount.length;
+                      kc++
+                    ) {
+                      this.checkJson[z][kz].checkPerent.push(
+                        Math.round(
+                          (this.checkJson[z][kz].checkCount[kc] /
+                            checkPeople) *
+                          100
+                        )
+                      );
                     }
                   }
+
+
+
                   if (_tool.tool == 51) {
                     _tool.sourceIndex = 0
                   }
@@ -1528,6 +1635,8 @@ export default {
                 for (var z = 0; z < tool.length; z++) {
                   let _tool = tool[z]
                   _tool.toolPhoto = []
+                  this.checkJson[z] = []
+                  let checkPeople = 0
                   for (var k = 0; k < works.length; k++) {
                     let _work = works[k]
                     if (_work.stage == i && _work.task == j && _work.tool == z && _work.atool == _tool.tool) {
@@ -1549,8 +1658,66 @@ export default {
                         _work.workContent = `(${_work.username})使用(拍照)提交了:`
                       } else if (_tool.tool == 55) {
                         _work.workContent = `(${_work.username})使用(压缩文件)提交了:`
+                      } else if (_tool.tool == 56) {
+                        console.log(_tool);
+                        _work.workContent = `(${_work.username})使用(投票)提交了:`
+                        checkPeople++
+                        var checkL = JSON.parse(_work.content);
+                        for (var kz = 0; kz < checkL.length; kz++) {
+                          if (!this.checkJson[z][kz]) {
+                            this.checkJson[z].push({
+                              checkCount: [],
+                              checkPerson: [],
+                              rightPerson: [],
+                            });
+                          }
+                          if (!this.checkJson[z][kz].checkCount.length) {
+                            this.checkJson[z][kz].checkCount = [];
+                            let _askItemCount = _tool.askJson
+                              .askJson[kz].askItem;
+                            for (var aic = 0; aic < _askItemCount; aic++) {
+                              this.checkJson[z][kz].checkCount.push(0);
+                            }
+                          }
+                          this.checkJson[z][kz].checkPerson[parseInt(checkL[kz])]
+                            ? this.checkJson[z][kz].checkPerson[
+                              parseInt(checkL[kz])
+                            ].push(_work.username)
+                            : (this.checkJson[z][kz].checkPerson[parseInt(checkL[kz])] =
+                              [_work.username]);
+                          console.log(_work.username);
+                          this.checkJson[z][kz].checkCount[parseInt(checkL[kz])]
+                            ? this.checkJson[z][kz].checkCount[parseInt(checkL[kz])]++
+                            : (this.checkJson[z][kz].checkCount[
+                              parseInt(checkL[kz])
+                            ] = 1);
+                        }
+                      }
+
+                      if (_tool.tool == 48 || _tool.tool == 52) {
+                        _tool.toolPhoto[0] = _work
+                      } else {
+                        _tool.toolPhoto.push(_work);
+                      }
+                    }
+
+                    for (var kz = 0; kz < this.checkJson[z].length; kz++) {
+                      this.checkJson[z][kz].checkPerent = [];
+                      let aaaa = this.checkJson[z][kz];
+                      console.log(aaaa);
+                      for (
+                        var kc = 0;
+                        kc < this.checkJson[z][kz].checkCount.length;
+                        kc++
+                      ) {
+                        this.checkJson[z][kz].checkPerent.push(
+                          Math.round(
+                            (this.checkJson[z][kz].checkCount[kc] /
+                              checkPeople) *
+                            100
+                          )
+                        );
                       }
-                      _tool.toolPhoto.push(_work);
                     }
                   }
                 }
@@ -1724,7 +1891,6 @@ export default {
         .then((res) => {
           let teacherJuri = res.data[0];
           this.ManAarray = teacherJuri;
-          this.setMan();
         })
         .catch((err) => {
           console.error(err);
@@ -2215,6 +2381,11 @@ export default {
       this.tableJson.text = JSON.parse(f)
       this.dialogVisibleText2 = true
     },
+    openAsk(f, taskCount, i) {
+      this.askJson = JSON.parse(JSON.stringify(this.chapInfoList[this.courseType].chapterInfo[0].taskJson[taskCount].toolArray[i].askJson))
+      this.radio = JSON.parse(f)
+      this.dialogVisible5 = true
+    },
     setChapterIndex2(tool, index, toolIndex) {
       tool.sourceIndex = index;
       this.$nextTick(function () {
@@ -4821,8 +4992,10 @@ export default {
 .cont>>>table th {
   border-bottom: 1px solid #ccc;
   border-right: 1px solid #ccc;
-  padding: 10px 10px;
+  /* padding: 20px 5px; */
+  padding: 5px 10px;
   max-width: 0px;
+  height: 30px;
   vertical-align: baseline;
 }
 

+ 2 - 3
src/components/studyStudent.vue

@@ -4852,12 +4852,11 @@
           <div class="addPz" @click="(addPzDialog = true), (pzType = 1)">
             添加批注
           </div>
-          <div class="img1">
+          <!-- <div class="img1">
             <div @click="(addPzDialog = true), (pzType = 2)">
               <img src="../assets/audio.png" /><span>音频</span>
             </div>
-            <!-- <img src="../assets/picture.png" @click="addPzDialog = true,pzType = 3" /> -->
-          </div>
+          </div> -->
         </div>
       </div>
     </div>