11wqe1 4 月之前
父節點
當前提交
48e682a7ae

+ 9 - 6
src/components/pages/components/exjsmind.vue

@@ -85,13 +85,16 @@ export default {
 
 <style scoped>
 .exjsmind >>> jmnode {
-  font-size: 12px !important;
-  display: flex;
-  align-items: center;
-  justify-content: center;
-  min-width: 20px;
-  max-width: 300px;
+
+  /* display: flex; */
+  /* align-items: center; */
+  /* justify-content: center; */
+  /* min-width: 20px; */
+  max-width: 250px;
   overflow: hidden;
+  letter-spacing: 3px;
+  font-size: 12px !important;
+  /* flex-wrap: wrap; */
   /* white-space: wrap; */
 }
 </style>

+ 18 - 4
src/components/pages/components/exportDataDialog.vue

@@ -2665,12 +2665,14 @@ export default {
 
     // 编辑
     extCon(val) {
-      this.exitCon.splice(val, 1, false);
+      // this.exitCon.splice(val, 1, false);
+      this.$set(this.exitCon, val, false);
     },
     // 确定
     qutCon(val, mc) {
-      console.log("qutCon");
-      this.exitCon.splice(val, 1, true);
+      // console.log("qutCon");
+      // this.exitCon.splice(val, 1, true);
+      this.$set(this.exitCon, val, true);
 
       this.AiAnalysisCon2Copy[mc] = this.AiAnalysisCon2[mc];
       this.upOneData();
@@ -3087,6 +3089,18 @@ export default {
           scoList[index] = scoList[index] / e.length;
         }
       });
+      // let repeatWorkCopyTwo = []
+
+      // repeatWorkCopy.forEach((e,i)=>{
+      //   repeatWorkCopyTwo[i]= []
+      //   if (e.length) {
+      //     e.forEach(k=>{
+      //       repeatWorkCopyTwo[i].push(k.sco)
+      //     })
+      //   }
+      //   repeatWorkCopyTwo[i]=
+      // })
+
 
       this.claScoFoldLineData = scoList.map(e => {
         if (e == 0) {
@@ -4066,7 +4080,7 @@ export default {
 .zhBlockCon2 > div {
   display: flex;
   flex-wrap: wrap;
-
+  overflow: auto;
   flex: 1;
 }
 .zhBlockCon2 > div > span {

+ 1 - 1
src/components/pages/components/exportWorksDialog.vue

@@ -1351,7 +1351,7 @@ export default {
   display: flex;
   flex-direction: column;
   padding: 0 110px;
-  padding-bottom: 30px;
+  padding-bottom: 100px;
   box-sizing: border-box;
   font-family: PingFang SC;
 }

+ 498 - 15
src/components/pages/components/report.vue

@@ -88,7 +88,9 @@
       <el-button class="btn" type="primary" @click="confirmPdf">确定</el-button>
     </div>
 
-    <!-- 自定义导出作业pdf弹框 -->
+
+
+
     <el-dialog
       :visible.sync="worksDialog"
       :before-close="handleClose"
@@ -100,6 +102,487 @@
         <div style="color: #fff">{{dataJson.state == 5 ?"按任务导出" :'自定义导出' + ':' +dataJson.title }}</div>
       </div>
 
+      <div class="worksDiaCon" ref="reportPdf">
+        <div style="margin-bottom: 30px;font-size: 42px;">
+          {{ dataJson.title }}
+        </div>
+        <!-- <div
+          v-for="(userP, upi) in pdfUser"
+          style="background-color: #fff;border-radius: 8px;margin-top: 10px;"
+          :key="upi + 'upi'" 
+        >-->
+          <!-- <div style="padding: 10px;box-sizing: border-box;">
+            <h1>{{ userP.username }}</h1>
+          </div> -->
+
+          <div
+            v-for="(i, wip) in workList"
+           
+            :key="i.id"
+            class="stageCon"
+          >
+          <!-- v-if="
+              isStage(i.taskList, userP.userid) &&
+                (chap.length ? chap.indexOf(wip) != -1 : true)
+            " -->
+            <div v-if="dataJson.state != 5" class="stageTit">
+              第{{ i.id * 1 + 1 }}阶段<span v-if="i.name">:{{ i.name }}</span>
+            </div>
+            <div
+              v-for="k in i.taskList"
+              :key="k.task + 'a'"
+              
+              style="margin-bottom: 15px"
+            >
+            <!-- v-if="isTask(k.toolEList, userP.userid, k)" -->
+              <div
+                style="
+                    width: 100%;
+                    display: flex;
+                    justify-content: space-between;
+                    margin-bottom: 10px;
+                  "
+              >
+                <div class="taskTitInd">
+                  <span>任务{{ k.task + 1 }}</span>
+                  <span>{{ k.taskTit }}</span>
+                </div>
+                <div></div>
+              </div>
+              <div v-if="k.taskDetail" class="taskBri">
+                <div v-html="k.taskDetail"></div>
+              </div>
+              <div
+                class="WorksCon"
+                v-for="(l, lind) in k.toolEList"
+                :key="lind + 'l'"
+              >
+                <div
+                  v-if="l.content && l.content.length"
+                  v-for="(imgp, imgIdx) in l.content"
+                  :key="imgIdx + 'img'"
+                >
+                  <!-- <div
+                    v-if="
+                      (imgp && imgp[0] && imgp[0].userid == userP.userid) ||
+                        imgp.userid == userP.userid
+                    "
+                  > -->
+                  <div
+                    v-for="(userP, upi) in pdfUser"
+                    style="background-color: #fff;border-radius: 8px;margin-top: 10px;"
+                    :key="upi + 'upi'"
+                  >
+                    <div  v-if="
+                      (imgp && imgp[0] && imgp[0].userid == userP.userid) ||
+                        imgp.userid == userP.userid
+                    ">
+                      <div style="padding: 10px;box-sizing: border-box;">
+                        <h1>{{ userP.username }}</h1>
+                      </div>
+                      <div v-if="l.tool[0] == 15">
+                        <div class="toolBlk">
+                          <img
+                            src="../../../assets/icon/thirdToolList/answer.png"
+                            alt=""
+                          />
+                          <div class="toolTit">
+                            <div>工具{{ lind + 1 }}:问答工具</div>
+                            <div>提问:{{ l.content[0][0].answerTitle }}</div>
+                          </div>
+                        </div>
+                        <div class="answerTxt">
+                          回答:{{ l.content[0][0].answer }}
+                        </div>
+                      </div>
+                      <div v-if="l.tool[0] == 52">
+                        <div class="toolBlk">
+                          <img
+                            src="../../../assets/icon/fourthToolList/text.png"
+                            alt=""
+                          />
+                          <div class="toolTit">
+                            <div>工具{{ lind + 1 }}:文档工具</div>
+                            <div>
+                              根据前期的了解与实地调研对于项目的了解,进行思考与讨论提出问题。
+                            </div>
+                          </div>
+                        </div>
+                        <div class="answerTxt" v-html="l.content[0].text"></div>
+                      </div>
+                      <div v-if="l.tool[0] == 16 || l.tool[0] == 50">
+                        <div class="toolBlk">
+                          <img
+                            v-if="l.tool[0] == 16"
+                            src="../../../assets/icon/thirdToolList/work.png"
+                            alt=""
+                          />
+                          <img
+                            v-if="l.tool[0] == 50"
+                            src="../../../assets/icon/thirdToolList/plwork.png"
+                            alt=""
+                          />
+
+                          <div class="toolTit">
+                            <div>
+                              工具{{ lind + 1 }}:{{
+                                l.tool[0] == 16 ? "作业提交" : "批量上传"
+                              }}
+                            </div>
+                            <div>
+                              根据前期的了解与实地调研对于项目的了解,进行思考与讨论提出问题。
+                            </div>
+                          </div>
+                        </div>
+                        <div v-for="(i, codex) in l.content" :key="codex + 'co'">
+                          <div class="answerTxt" v-html="i.con"></div>
+                        </div>
+                      </div>
+                      <div
+                        v-if="l.tool[0] == 7 || l.tool[0] == 1 || l.tool[0] == 3"
+                      >
+                        <div class="toolBlk">
+                          <img
+                            v-if="l.tool[0] == 1"
+                            src="../../../assets/icon/secondToolList/whiteBoard.png"
+                            alt=""
+                          />
+                          <img
+                            v-if="l.tool[0] == 3"
+                            src="../../../assets/icon/secondToolList/mindMapping.png"
+                            alt=""
+                          />
+                          <img
+                            v-if="l.tool[0] == 7"
+                            src="../../../assets/icon/secondToolList/mindNetwork.png"
+                            alt=""
+                          />
+
+                          <div class="toolTit">
+                            <div>
+                              工具{{ lind + 1 }}:{{
+                                l.tool[0] == 1
+                                  ? "电子白板"
+                                  : l.tool[0] == 7
+                                  ? "思维网格"
+                                  : "思维导图"
+                              }}
+                            </div>
+                            <div>
+                              根据前期的了解与实地调研对于项目的了解,进行思考与讨论提出问题。
+                            </div>
+                          </div>
+                        </div>
+                        <img
+                          style="max-width: 200px"
+                          :src="l.content[0].con"
+                          alt=""
+                        />
+                        <div>{{ l.content[0].con }}</div>
+                      </div>
+                      <div v-if="l.tool[0] == 48">
+                        <div class="toolBlk">
+                          <img
+                            src="../../../assets/icon/fourthToolList/table.png"
+                            alt=""
+                          />
+                          <div class="toolTit">
+                            <div>工具{{ lind + 1 }}:表格</div>
+                            <div>
+                              根据前期的了解与实地调研对于项目的了解,进行思考与讨论提出问题。
+                            </div>
+                          </div>
+                        </div>
+                        <el-form>
+                          <div class="cont" v-html="l.content[0].text"></div>
+                        </el-form>
+                      </div>
+                      <div v-if="l.tool[0] == 4">
+                        <div class="toolBlk">
+                          <img
+                            src="../../../assets/icon/thirdToolList/ask.png"
+                            alt=""
+                          />
+                          <div class="toolTit">
+                            <div>工具{{ lind + 1 }}:问卷调查</div>
+                            <div>标题:{{ l.content[0][0].askJson.askTitle }}</div>
+                          </div>
+                        </div>
+
+                        <div
+                          style="margin-bottom: 5px"
+                          v-for="(i, index) in l.content[0][0].askJson.askJson"
+                          :key="index"
+                        >
+                          <div>题目:{{ i.askstitle }}</div>
+                          <el-radio-group
+                            v-if="!i.type"
+                            v-model="l.content[0][0].anwer[index]"
+                          >
+                            <el-radio
+                              v-for="(item2, checkIndex) in i.checkList"
+                              :key="checkIndex + 'b'"
+                              :label="checkIndex"
+                              disabled
+                            >
+                              {{ item2 }}
+                            </el-radio>
+                          </el-radio-group>
+                          <el-checkbox-group
+                            v-model="l.content[0][0].anwer[index]"
+                            v-else
+                          >
+                            <div class="radioBox">
+                              <el-checkbox
+                                v-for="(item2, checkIndex) in i.checkList"
+                                :key="checkIndex + 'c'"
+                                :label="checkIndex"
+                                disabled
+                              >
+                                {{ item2 }}
+                              </el-checkbox>
+                            </div>
+                          </el-checkbox-group>
+                        </div>
+                      </div>
+                      <div v-if="l.tool[0] == 45">
+                        <div class="toolBlk">
+                          <img
+                            src="../../../assets/icon/thirdToolList/choose.png"
+                            alt=""
+                          />
+                          <div class="toolTit">
+                            <div>工具{{ lind + 1 }}:选择题</div>
+                            <div>
+                              根据前期的了解与实地调研对于项目的了解,进行思考与讨论提出问题。
+                            </div>
+                          </div>
+                        </div>
+                        <div
+                          v-for="(i, index) in l.content[0].testJson"
+                          :key="index + 'm'"
+                        >
+                          <div>题目:{{ i.teststitle }}</div>
+                          <div
+                            v-if="i.type == 1"
+                            style="display: flex; flex-direction: column"
+                          >
+                            <el-radio-group v-model="l.content[0].radio[index]">
+                              <div class="radioBox">
+                                <el-radio
+                                  v-for="(item2, checkIndex) in i.checkList"
+                                  :key="checkIndex + 'b'"
+                                  :label="checkIndex"
+                                  disabled
+                                  :class="[
+                                    i.answer == checkIndex
+                                      ? 'redioStyle5'
+                                      : 'redioStyle2'
+                                  ]"
+                                >
+                                  <div
+                                    v-if="
+                                      item2 && item2.imgType && item2.imgType == 1
+                                    "
+                                  >
+                                    <div
+                                      class="inImg"
+                                      @click.stop="previewImg(item2.src)"
+                                    >
+                                      <img
+                                        style="display: block"
+                                        :src="item2.src"
+                                        alt=""
+                                      />
+                                    </div>
+                                    <span>{{ item2.src }}</span>
+                                  </div>
+                                  <span v-else v-html="item2"></span>
+                                </el-radio>
+                              </div>
+                            </el-radio-group>
+                          </div>
+                          <div class="radioBox">
+                            <el-checkbox-group
+                              v-model="l.content[0].radio[index]"
+                              v-if="i.type == '2'"
+                            >
+                              <div class="radioBox">
+                                <el-checkbox
+                                  v-for="(item2, checkIndex) in i.checkList"
+                                  :key="checkIndex + 'c'"
+                                  :label="checkIndex"
+                                  disabled
+                                  :class="[
+                                    i.answer.includes(checkIndex)
+                                      ? 'redioStyle3'
+                                      : 'redioStyle4'
+                                  ]"
+                                >
+                                  <div style="display: flex">
+                                    <div
+                                      v-if="
+                                        item2 &&
+                                          item2.imgType &&
+                                          item2.imgType == 1
+                                      "
+                                    >
+                                      <div
+                                        class="inImg"
+                                        @click.stop="previewImg(item2.src)"
+                                      >
+                                        <img
+                                          style="display: block"
+                                          :src="item2.src"
+                                          alt=""
+                                        />
+                                      </div>
+                                    </div>
+                                    <span v-else v-html="item2"></span>
+                                  </div>
+                                </el-checkbox>
+                              </div>
+                            </el-checkbox-group>
+                          </div>
+                        </div>
+                      </div>
+                      <div v-if="l.tool[0] == 41">
+                        <div class="toolBlk">
+                          <img
+                            src="../../../assets/icon/thirdToolList/select.png"
+                            alt=""
+                          />
+                          <div class="toolTit">
+                            <div>工具{{ lind + 1 }}:选择匹配</div>
+                            <div>
+                              根据前期的了解与实地调研对于项目的了解,进行思考与讨论提出问题。
+                            </div>
+                          </div>
+                        </div>
+                        <img
+                          style="max-width: 200px"
+                          :src="l.selectJson.url"
+                          alt=""
+                        />
+                        <div>
+                          {{ l.selectJson.url }}
+                        </div>
+                        <div>
+                          <span style="margin-right: 10px">选项:</span
+                          ><span
+                            style="margin-right: 10px"
+                            v-for="(item, itInd) in l.selectJson.select"
+                            :key="itInd"
+                            >{{ item }}</span
+                          >
+                        </div>
+                        <div>
+                          <span style="margin-right: 10px">答案:</span>
+
+                          <span
+                            style="margin-right: 10px"
+                            v-for="(item, itInd) in l.content[0].con"
+                            :key="itInd"
+                            >{{ itInd + 1 }}、{{
+                              l.selectJson.select[item]
+                            }}</span
+                          >
+                        </div>
+                      </div>
+                      <div v-if="l.tool[0] == 47">
+                        <div class="toolBlk">
+                          <img
+                            src="../../../assets/icon/fourthToolList/conSentences.png"
+                            alt=""
+                          />
+                          <div class="toolTit">
+                            <div>工具{{ lind + 1 }}:排序</div>
+                            <div>
+                              根据前期的了解与实地调研对于项目的了解,进行思考与讨论提出问题。
+                            </div>
+                          </div>
+                        </div>
+                        <div
+                          v-for="(i, index) in l.content[0]"
+                          :key="index"
+                          style="margin-bottom: 10px"
+                        >
+                          <div
+                            style="
+                              height: 20px;
+                              display: flex;
+                              align-items: center;
+                              flex-wrap: wrap;
+                            "
+                          >
+                            题目:
+                            <div
+                              class="sortTool"
+                              v-for="(i, index) in i.addSentence"
+                              :key="index"
+                            >
+                              {{ i }}
+                            </div>
+                            <span
+                              v-if="
+                                JSON.stringify(i.chooseSenList) ==
+                                  JSON.stringify(i.addSentence)
+                              "
+                              style="color: #868ce4"
+                              >回答正确</span
+                            >
+                            <span v-else style="color: red">回答错误</span>
+                          </div>
+                          <div
+                            style="
+                              margin: 10px 0;
+                              display: flex;
+                              align-items: center;
+                              flex-wrap: wrap;
+                            "
+                          >
+                            学生回答:
+                            <div
+                              class="sortTool"
+                              v-for="(i, index) in i.chooseSenList"
+                              :key="index"
+                            >
+                              {{ i }}
+                            </div>
+                          </div>
+                          <div>
+                            正确答案:
+                            <span style="margin: 0 5px">{{
+                              i.addSentence.join(",")
+                            }}</span>
+                          </div>
+                        </div>
+                      </div>
+                    </div>
+                  </div>
+                  <!-- </div> -->
+                </div>
+              </div>
+            </div>
+          </div>
+        <!-- </div> -->
+      </div>
+    </el-dialog>
+
+
+
+    <!-- 自定义导出作业pdf弹框 -->
+    <!-- <el-dialog
+      :visible.sync="worksDialog"
+      :before-close="handleClose"
+      class="worksDialogCSSExp"
+      :append-to-body="true"
+      :fullscreen="true"
+    >
+      <div slot="title" class="header-title">
+        <div style="color: #fff">{{dataJson.state == 5 ?"按任务导出" :'自定义导出' + ':' +dataJson.title }}</div>
+      </div>
+
       <div class="worksDiaCon" ref="reportPdf">
         <div style="margin-bottom: 30px;font-size: 42px;">
           {{ dataJson.title }}
@@ -549,7 +1032,7 @@
           </div>
         </div>
       </div>
-    </el-dialog>
+    </el-dialog> -->
   </div>
 </template>
 
@@ -716,7 +1199,7 @@ export default {
               taskName += `${e.name}、`;
             }
           });
-          taskName = taskName.slice(0 , -1 ) + '-'
+          taskName = taskName.slice(0 , -1 )
 
           pdf.save(className + this.dataJson.title + "-" + taskName + ".pdf");
         } else {
@@ -734,17 +1217,17 @@ export default {
       this.ajax
         .get(this.$store.state.api + "getCourseWorksReport1", params)
         .then(res => {
-          res.data[1];
-          res.data[3]; //问卷
-          res.data[4]; //问答题
-          res.data[5];
-          res.data[6]; //选择题
-          res.data[7]; //个人评价作业
-          res.data[8]; //选择匹配作业
-          res.data[9]; //排序作业
-          res.data[10]; //表格作业
-          res.data[11]; //cocopi或源码编辑作业
-          res.data[12]; //文档作业
+          // res.data[1];
+          // res.data[3]; //问卷
+          // res.data[4]; //问答题
+          // res.data[5];
+          // res.data[6]; //选择题
+          // res.data[7]; //个人评价作业
+          // res.data[8]; //选择匹配作业
+          // res.data[9]; //排序作业
+          // res.data[10]; //表格作业
+          // res.data[11]; //cocopi或源码编辑作业
+          // res.data[12]; //文档作业
           this.workEvaList = res.data[13];
           this.userAarrayCopy = JSON.parse(JSON.stringify(res.data[14]));
           this.userAarray = res.data[14];
@@ -901,7 +1384,7 @@ export default {
       }
       console.log("this.pdfUser", this.pdfUser);
 
-      this.worksDialog = true;
+        this.worksDialog = true;        
       setTimeout(() => {
         this.getPdf();
       }, 500);

+ 33 - 5
src/components/pages/components/studentWorksDetail.vue

@@ -200,7 +200,7 @@
             <div style="color: #fff">查看&批改</div>
           </div>
 
-          <LookWorks :id="checkCourse" :isStu="1" :studentId="studentId" :key="countM"></LookWorks>
+          <LookWorks @childExportPdfSetBtn="childExportPdfSetBtn" :id="checkCourse" :isStu="1" :studentId="studentId" :key="countM"></LookWorks>
 
           <!-- <div v-else class="zyBoxC" ref="reportPdf">
             <div class="courseTitle" v-if="allWorks.course">
@@ -1496,7 +1496,20 @@
         :typeNum = "1"
       ></studentReport>
     </div>
-   
+
+
+    <el-dialog
+      :visible.sync="worksDialog"
+      :before-close="handleClose"
+      class="worksDialogCSSExp"
+      :append-to-body="true"
+      :fullscreen="true"
+    >
+      <div slot="title" class="header-title">
+        <div style="color: #fff">导出作业集</div>
+      </div>
+      <exportWorksDialog  :key="exportW" :digNum="digNum" :oid="oid" :worksDialog.sync="worksDialog" :worksDialogCon="worksDialogCon" :uid="exportPdfSetUid" :cid="checkCourse"></exportWorksDialog>
+    </el-dialog>
   </div>
 </template>
 
@@ -1508,6 +1521,8 @@ import saveAs from "file-saver";
 import html2canvas from "html2canvas";
 import LookWorks from "./lookWork.vue";
 import exportDataDialog from "./exportDataDialog.vue";
+import exportWorksDialog from "./exportWorksDialog.vue";
+
 
 import jspdf from "jspdf";
 export default {
@@ -1515,8 +1530,8 @@ export default {
     StudentData,
     studentReport,
     LookWorks,
-    exportDataDialog
-
+    exportDataDialog,
+    exportWorksDialog
   },
   props: ["uid", "ooid", "oorg","username","dialogVisibleS"],
   data() {
@@ -1747,7 +1762,12 @@ export default {
       exportData:'',
       DState:'',
       cid:'',
-      countM: 0
+      countM: 0,
+      worksDialog:false,
+      worksDialogCon:'',
+      exportPdfSetUid:'',
+      digNum:2,
+      exportW:0
     };
   },
   mounted() {
@@ -1804,6 +1824,14 @@ export default {
     goTo(path) {
       this.$router.push(path);
     },
+    // 子元素调用父元素 按任务查看导出作业集
+    childExportPdfSetBtn(val) {
+      this.worksDialog = true;
+      this.worksDialogCon = val.con;
+      this.exportPdfSetUid = val.uid;
+      this.digNum = 0;
+      this.exportW++
+    },
     backPage(){
       this.$emit("StuCancel");
     },