浏览代码

Merge branch 'beta'

lsc 4 月之前
父节点
当前提交
cd1ee6e64f
共有 28 个文件被更改,包括 2994 次插入461 次删除
  1. 1 1
      dist/index.html
  2. 0 0
      dist/static/css/app.1039bdcf2d877af640d7d05e649be903.css
  3. 0 0
      dist/static/css/app.1039bdcf2d877af640d7d05e649be903.css.map
  4. 0 0
      dist/static/css/app.6032150ca60d9fefbb2296ca6462ed52.css
  5. 0 0
      dist/static/css/app.6032150ca60d9fefbb2296ca6462ed52.css.map
  6. 二进制
      dist/static/img/FrameXK.5a4818f.gif
  7. 0 0
      dist/static/js/app.9fc361454ad4ac51428e.js
  8. 0 0
      dist/static/js/app.9fc361454ad4ac51428e.js.map
  9. 0 0
      dist/static/js/manifest.3ad1d5771e9b13dbdad2.js.map
  10. 0 0
      dist/static/js/vendor.d6d47d008c180699b2a1.js
  11. 0 0
      dist/static/js/vendor.d6d47d008c180699b2a1.js.map
  12. 22 0
      package-lock.json
  13. 1 0
      package.json
  14. 7 1
      src/App.vue
  15. 二进制
      src/assets/icon/course/FrameXK.gif
  16. 3 0
      src/assets/icon/course/confirmOpenDig.svg
  17. 11 4
      src/components/classRoomHelper/component/taskArea.vue
  18. 1 0
      src/components/classRoomHelper/index.vue
  19. 189 0
      src/components/components/choseWordCloud.vue
  20. 727 131
      src/components/components/choseWorksDetailDialog.vue
  21. 1 1
      src/components/components/statisticalAnalysis.vue
  22. 647 0
      src/components/components/studentWorkPreviewDialog.vue
  23. 3 3
      src/components/easy2/commpont/markDialog.vue
  24. 314 56
      src/components/easy2/studyStudent.vue
  25. 368 111
      src/components/easy3/studyStudent.vue
  26. 357 98
      src/components/studyStudent.vue
  27. 3 3
      src/components/studySutdentClass/commpont/markDialog.vue
  28. 339 52
      src/components/studySutdentClass/studyStudent.vue

+ 1 - 1
dist/index.html

@@ -27,7 +27,7 @@
     html,
     body{
       font-family: '黑体';
-    }</style><link href=./static/css/app.6032150ca60d9fefbb2296ca6462ed52.css rel=stylesheet></head><body><div id=app></div><script type=text/javascript src=./static/js/manifest.3ad1d5771e9b13dbdad2.js></script><script type=text/javascript src=./static/js/vendor.264e3d6e7c524117db80.js></script><script type=text/javascript src=./static/js/app.886db097bad0ba21a255.js></script></body></html><script>function stopSafari() {
+    }</style><link href=./static/css/app.1039bdcf2d877af640d7d05e649be903.css rel=stylesheet></head><body><div id=app></div><script type=text/javascript src=./static/js/manifest.3ad1d5771e9b13dbdad2.js></script><script type=text/javascript src=./static/js/vendor.d6d47d008c180699b2a1.js></script><script type=text/javascript src=./static/js/app.9fc361454ad4ac51428e.js></script></body></html><script>function stopSafari() {
     //阻止safari浏览器双击放大功能
     let lastTouchEnd = 0  //更新手指弹起的时间
     document.documentElement.addEventListener("touchstart", function (event) {

文件差异内容过多而无法显示
+ 0 - 0
dist/static/css/app.1039bdcf2d877af640d7d05e649be903.css


文件差异内容过多而无法显示
+ 0 - 0
dist/static/css/app.1039bdcf2d877af640d7d05e649be903.css.map


文件差异内容过多而无法显示
+ 0 - 0
dist/static/css/app.6032150ca60d9fefbb2296ca6462ed52.css


文件差异内容过多而无法显示
+ 0 - 0
dist/static/css/app.6032150ca60d9fefbb2296ca6462ed52.css.map


二进制
dist/static/img/FrameXK.5a4818f.gif


文件差异内容过多而无法显示
+ 0 - 0
dist/static/js/app.9fc361454ad4ac51428e.js


文件差异内容过多而无法显示
+ 0 - 0
dist/static/js/app.9fc361454ad4ac51428e.js.map


文件差异内容过多而无法显示
+ 0 - 0
dist/static/js/manifest.3ad1d5771e9b13dbdad2.js.map


文件差异内容过多而无法显示
+ 0 - 0
dist/static/js/vendor.d6d47d008c180699b2a1.js


文件差异内容过多而无法显示
+ 0 - 0
dist/static/js/vendor.d6d47d008c180699b2a1.js.map


+ 22 - 0
package-lock.json

@@ -13,6 +13,7 @@
         "dayjs": "^1.11.7",
         "diff": "^5.1.0",
         "echarts": "^5.2.2",
+        "echarts-wordcloud": "^2.1.0",
         "element-ui": "^2.15.6",
         "file-saver": "^2.0.5",
         "gantt-elastic": "^1.0.12",
@@ -10360,6 +10361,14 @@
         "zrender": "5.2.1"
       }
     },
+    "node_modules/echarts-wordcloud": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmmirror.com/echarts-wordcloud/-/echarts-wordcloud-2.1.0.tgz",
+      "integrity": "sha512-Kt1JmbcROgb+3IMI48KZECK2AP5lG6bSsOEs+AsuwaWJxQom31RTNd6NFYI01E/YaI1PFZeueaupjlmzSQasjQ==",
+      "peerDependencies": {
+        "echarts": "^5.0.1"
+      }
+    },
     "node_modules/echarts/node_modules/tslib": {
       "version": "2.3.0",
       "resolved": "https://registry.nlark.com/tslib/download/tslib-2.3.0.tgz?cache=0&sync_timestamp=1628722556410&other_urls=https%3A%2F%2Fregistry.nlark.com%2Ftslib%2Fdownload%2Ftslib-2.3.0.tgz",
@@ -32542,6 +32551,12 @@
         }
       }
     },
+    "echarts-wordcloud": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmmirror.com/echarts-wordcloud/-/echarts-wordcloud-2.1.0.tgz",
+      "integrity": "sha512-Kt1JmbcROgb+3IMI48KZECK2AP5lG6bSsOEs+AsuwaWJxQom31RTNd6NFYI01E/YaI1PFZeueaupjlmzSQasjQ==",
+      "requires": {}
+    },
     "ee-first": {
       "version": "1.1.1",
       "resolved": "https://registry.npm.taobao.org/ee-first/download/ee-first-1.1.1.tgz",
@@ -37336,6 +37351,7 @@
         "dayjs": "^1.11.7",
         "diff": "^5.1.0",
         "echarts": "^5.2.2",
+        "echarts-wordcloud": "^2.1.0",
         "element-ui": "^2.15.6",
         "extract-text-webpack-plugin": "^3.0.0",
         "file-loader": "^1.1.4",
@@ -45754,6 +45770,12 @@
             }
           }
         },
+        "echarts-wordcloud": {
+          "version": "2.1.0",
+          "resolved": "https://registry.npmmirror.com/echarts-wordcloud/-/echarts-wordcloud-2.1.0.tgz",
+          "integrity": "sha512-Kt1JmbcROgb+3IMI48KZECK2AP5lG6bSsOEs+AsuwaWJxQom31RTNd6NFYI01E/YaI1PFZeueaupjlmzSQasjQ==",
+          "requires": {}
+        },
         "ee-first": {
           "version": "1.1.1",
           "resolved": "https://registry.npm.taobao.org/ee-first/download/ee-first-1.1.1.tgz",

+ 1 - 0
package.json

@@ -17,6 +17,7 @@
     "dayjs": "^1.11.7",
     "diff": "^5.1.0",
     "echarts": "^5.2.2",
+    "echarts-wordcloud": "^2.1.0",
     "element-ui": "^2.15.6",
     "file-saver": "^2.0.5",
     "gantt-elastic": "^1.0.12",

+ 7 - 1
src/App.vue

@@ -29,7 +29,7 @@
 				</div>
 			</div>
 		</div> -->
-    <div :class="{ liveCss: $route.path == '/liveProjectDetail' }">
+    <div :class="{ liveCss: $route.path == '/liveProjectDetail', oHeight: panRouter.includes($route.path) }">
       <!-- main 内容 -->
       <keep-alive v-if="$route.meta.keepAlive">
         <!-- 这里是会被缓存的视图组件 -->
@@ -77,6 +77,7 @@ export default {
   data() {
     return {
       isShowNav: true, // 是否显示导航 Tab
+      panRouter: ['/studystudentE2','/studystudentE3','/studyStudent','/studySutdentClass']
     };
   },
   components: {},
@@ -477,4 +478,9 @@ html::-webkit-scrollbar-thumb {
     color: #FFF !important;
 }
 
+
+.oHeight{
+  height: 100%;
+  overflow: hidden;
+}
 </style>

二进制
src/assets/icon/course/FrameXK.gif


+ 3 - 0
src/assets/icon/course/confirmOpenDig.svg

@@ -0,0 +1,3 @@
+<svg width="22" height="22" viewBox="0 0 22 22" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path d="M11 21.5C16.799 21.5 21.5 16.799 21.5 11C21.5 5.20101 16.799 0.5 11 0.5C5.20101 0.5 0.5 5.20101 0.5 11C0.5 16.799 5.20101 21.5 11 21.5ZM10.0999 5H11.8998V6.79993H10.0999V5ZM10.2584 8.75H11.7584V16.9996H10.2584V8.75Z" fill="#0052D9"/>
+</svg>

+ 11 - 4
src/components/classRoomHelper/component/taskArea.vue

@@ -604,6 +604,10 @@ export default {
       type: Object,
       default: () => {}
     },
+    itemType: {
+      type: Number,
+      default: 0
+    },
     navList: {
       type: Array,
       default: () => []
@@ -1229,7 +1233,6 @@ ${_textData}
         file_ids: this.fileId,
         model: "gpt-4o-2024-11-20"
       };
-
       this.ajax
         // .post("https://gpt4.cocorobo.cn/chat", params)
         // .post("https://claude3.cocorobo.cn/chat", params)
@@ -1237,7 +1240,7 @@ ${_textData}
         .then(res => {
           let _data = res.data.FunctionResponse.message;
           _data = _data.replaceAll("```json", "").replaceAll("```", "");
-          const match = _data.match(/\[\s*\{[\s\S]*?\}\s*\]/);
+          const match = _data.match(/\[\s*\{[\s\S]*?\}\s*\]/);        
           let _result = JSON.parse(match[0]) || [];
           _result.forEach(i => {
             i.answer2 = i.answer.length ? [] : "";
@@ -1251,13 +1254,17 @@ ${_textData}
             this.saveTaskList(1);
             // this.$message.success("一键出题成功");
           } else {
-            this.$message.error("一键出题失败");
+            if (this.itemType == 2) {
+              this.$message.error("一键出题失败");
+            }
           }
           this.aiBoxLoading = false;
         })
         .catch(e => {
           this.aiBoxLoading = false;
-          this.$message.error("一键出题失败");
+          if (this.itemType == 2) {
+              this.$message.error("一键出题失败");
+          }
           console.log(e);
         });
       this.insertMemorandum(

+ 1 - 0
src/components/classRoomHelper/index.vue

@@ -21,6 +21,7 @@
         :taskCount="taskCount"
         :worksStudent="worksStudent"
         :openMegaphone="openMegaphone"
+        :itemType = "itemType"
         ref="taskAreaRef"
         :fileId="fileId"
         v-show="itemType == 2"

+ 189 - 0
src/components/components/choseWordCloud.vue

@@ -0,0 +1,189 @@
+<template>
+  <div style="display: flex;justify-content: center;align-items: center;">
+    <div v-if="loading" style="position: relative;">
+      <img style="width: 220px;" src="../../assets/icon/course/FrameXK.gif"  alt="">
+      <div class="loadCss">小可正在努力加载ing</div>
+    </div>
+	  <div  v-if="!loading" class="chart" id="charts_canvas" ref="chartRef"></div>
+  </div>
+</template>
+
+<script>
+import { v4 as uuidv4 } from "uuid";
+import * as echarts from 'echarts';
+import "echarts-wordcloud";
+export default {
+  name: "cloudWork",
+  props: {
+    dialogVisibleWordCloud: {
+      type: Boolean
+    },
+    // 测试数据
+    cloudData: {
+      type: String,
+      default: ''
+    }
+  },
+  data() {
+    return {
+        chartObj:"",
+        loading:false
+    }
+  },
+
+  mounted() {
+    this.addNephogram();
+  },
+  methods: {
+    //添加云图
+    addNephogram() {
+      if (!this.cloudData.length) return
+
+        this.loading=true
+      const _msg = `NOTICE
+        Language: Please use the same language as the user requirement, if the user speaks Chinese, the specific text of your answer should also be in Chinese.
+        ATTENTION: Use '##' to SPLIT SECTIONS, not '#'. Output format carefully referenced "Format example".
+        Instruction: Based on the context, follow "Format example", write content.
+
+        ## 任务
+
+        请基于以下学生回答,提炼出10-20个答案,用于绘制词云图。
+
+        ## 要求
+
+        1. **提取关键词**:从提供的答案文本中提取出10-20个最具代表性的答案。
+        2. **词频统计**:计算每个关键字在文本中出现的频率。
+        3. **词汇大小**:根据词频数量,确定每个关键字在词云图中的大小。词频越高,词汇大小数值越大,数值范围1-100。
+        4. **输出格式**:输出结果应包含每个关键字、对应的词频数量以及词汇大小数值。
+
+        ## 输出格式
+
+        ### 输出格式
+
+        [
+            {"value":1,"name":"氯化钠","textStyle":{"color":"#ee7959"}},
+            {"value":2,"name":"溶液","textStyle":{"color":"#db9b34"}},
+            {"value":1,"name":"实验","textStyle":{"color":"#9d9d82"}},
+            {"value":3,"name":"质量分数","textStyle":{"color":"#ea5514"}},
+            {"value":1,"name":"溶质","textStyle":{"color":"#c8161d"}},
+            {"value":2,"name":"氢氧化钠","textStyle":{"color":"#e60012"}},
+            {"value":1,"name":"溶解度","textStyle":{"color":"#1e2732"}},
+            {"value":4,"name":"饱和溶液","textStyle":{"color":"#e3adb9"}}
+        ]
+
+        请仅仅输出表头,输出关键词和相应的内容,无需其它任何说明文字。
+        冒号、逗号等符号均使用英文字符。
+
+        ### 输出示例
+
+        [
+            {"value":1,"name":"氯化钠","textStyle":{"color":"#ee7959"}},
+            {"value":2,"name":"溶液","textStyle":{"color":"#db9b34"}},
+            {"value":1,"name":"实验","textStyle":{"color":"#9d9d82"}},
+            {"value":3,"name":"质量分数","textStyle":{"color":"#ea5514"}},
+            {"value":1,"name":"溶质","textStyle":{"color":"#c8161d"}},
+            {"value":2,"name":"氢氧化钠","textStyle":{"color":"#e60012"}},
+            {"value":1,"name":"溶解度","textStyle":{"color":"#1e2732"}},
+            {"value":4,"name":"饱和溶液","textStyle":{"color":"#e3adb9"}}
+        ]
+
+        ## 学生回答 
+        ${this.cloudData ? this.cloudData : ""}
+        `;
+      const _uuid = uuidv4();
+      let params = {
+        temperature: 0,
+        max_tokens: 4096,
+        top_p: 1,
+        frequency_penalty: 0,
+        presence_penalty: 0,
+        messages: [{ role: "user", content: _msg }],
+        uid: _uuid,
+        mind_map_question: "",
+        stream: false,
+        model: "gpt-4o-2024-11-20"
+      };
+      this.ajax
+        .post("https://gpt4.cocorobo.cn/chat", params)
+        .then(res => {
+          let _data = res.data.FunctionResponse.choices[0];
+          let _jsonData = _data.message.content;
+          _jsonData = _jsonData.replaceAll("```json", "").replaceAll("```", "");
+          let _result = JSON.parse(_jsonData);
+          console.log('_result',_result);
+
+          let poi = {
+            tooltip: {
+              show: false
+            },
+            series: [
+              {
+                type: "wordCloud",
+                sizeRange: [14, 38],
+                rotationRange: [0, 0],
+                keepAspect: false,
+                shape: "circle",
+                left: "center",
+                top: "center",
+                right: null,
+                bottom: null,
+                width: "90%",
+                height: "90%",
+                rotationRange: [-90, 90],
+                rotationStep: 45,
+                data: _result
+              }
+            ]
+          }
+          console.log('poi',poi);
+          this.getChartData(poi)
+        //   this.saveData(poi)
+        })
+        .catch(e => {
+          console.log(e);
+          this.$message.error("生成词云图失败");
+          this.loading=false
+
+        })
+        .finally(_ => {
+        });
+    },
+   
+    getChartData(poi) {	
+        this.loading=false
+        setTimeout(() => {
+          this.chartObj = echarts.init(this.$refs.chartRef);
+          this.chartObj.setOption(poi);
+          window.addEventListener("resize", () => {
+                  this.chartObj.resize();
+          });
+        }, 100);
+       
+	},
+  }
+};
+</script>
+
+<style scoped>
+.chart {
+	width: 100%;
+	height: 500px;
+	background-color: #fff;
+  margin: auto;
+}
+.loadCss{
+    font-family: PingFang SC;
+    font-size: 14px;
+    font-weight: 400;
+    line-height: 22px;
+    width: 100%;
+    text-align: center;
+    text-underline-position: from-font;
+    text-decoration-skip-ink: none;
+    color: rgba(54, 129, 252, 1);
+    position: absolute;
+    left: 50%;
+    bottom: 30px;
+    transform: translate(-50%,0);
+}
+</style>

+ 727 - 131
src/components/components/choseWorksDetailDialog.vue

@@ -1,5 +1,5 @@
 <template>
-  <div class="choseWorksDetailDialog">
+  <div class="choseWorksDetailDialog" v-if="show">
     <el-dialog
       :visible.sync="show"
       width="100%"
@@ -19,7 +19,7 @@
                 :class="{ s_b_m_t_l_active: showType === item.value }"
                 @click="changeShowType(item.value)"
 								v-if="item.showType.includes(toolType)"
-                >{{ item.label }}</span
+                >{{ (toolType == 15 && item.value ==1)? "词云" : item.label }}</span
               >
             </div>
             <div class="s_b_m_t_right">
@@ -31,7 +31,7 @@
               <div class="s_b_m_b_i_main">
                 <div class="s_b_m_b_i_m_title" v-if="testData">
                   <div>
-            
+
 										<img :src="toolList.find(item=>item.value===toolType).img" alt/>
 
 										<span>{{ toolList.find(item=>item.value===toolType).label }}</span>
@@ -42,69 +42,74 @@
 
                 <span>题目内容</span>
 
-                <div
-									v-if="[45].includes(toolType)"
-                  class="s_b_m_b_i_m_choseList"
-                  v-for="(item, index) in testJson"
-                >
-                  <div class="s_b_m_b_i_m_c_title">
-                    <span>{{ index + 1 }}</span>
-                    <svg
-                      width="16"
-                      height="16"
-                      viewBox="0 0 16 16"
-                      fill="none"
-                      xmlns="http://www.w3.org/2000/svg"
-                    >
-                      <path
-                        d="M15.3536 8.35355C15.5488 8.15829 15.5488 7.84171 15.3536 7.64645L12.1716 4.46447C11.9763 4.2692 11.6597 4.2692 11.4645 4.46447C11.2692 4.65973 11.2692 4.97631 11.4645 5.17157L14.2929 8L11.4645 10.8284C11.2692 11.0237 11.2692 11.3403 11.4645 11.5355C11.6597 11.7308 11.9763 11.7308 12.1716 11.5355L15.3536 8.35355ZM1 8.5H15V7.5H1V8.5Z"
-                        fill="#3681FC"
-                      />
-                    </svg>
+                <div v-if="[45].includes(toolType) && testJson">
+                  <div
+                    class="s_b_m_b_i_m_choseList"
+                    v-for="(item, index) in testJson"
+                  >
+                    <div class="s_b_m_b_i_m_c_title">
+                      <span>{{ index + 1 }}</span>
+                      <svg
+                        width="16"
+                        height="16"
+                        viewBox="0 0 16 16"
+                        fill="none"
+                        xmlns="http://www.w3.org/2000/svg"
+                      >
+                        <path
+                          d="M15.3536 8.35355C15.5488 8.15829 15.5488 7.84171 15.3536 7.64645L12.1716 4.46447C11.9763 4.2692 11.6597 4.2692 11.4645 4.46447C11.2692 4.65973 11.2692 4.97631 11.4645 5.17157L14.2929 8L11.4645 10.8284C11.2692 11.0237 11.2692 11.3403 11.4645 11.5355C11.6597 11.7308 11.9763 11.7308 12.1716 11.5355L15.3536 8.35355ZM1 8.5H15V7.5H1V8.5Z"
+                          fill="#3681FC"
+                        />
+                      </svg>
 
-                    <span
-                      >{{
-                        typeof item.answer === "number"
-                          ? "单选题:"
-                          : "多选题:"
-                      }}{{ item.teststitle }}</span
-                    >
+                      <span
+                        >{{
+                          item.type == 1
+                            ? "单选题:"
+                            : "多选题:"
+                        }}{{ item.teststitle }}</span
+                      >
                   </div>
 
                   <div
                     class="s_b_m_b_i_m_c_options"
                     v-for="(item2, index2) in item.checkList"
-                    :class="{
-                      s_b_m_b_i_m_c_o_right:
-                        typeof item.answer === 'number'
-                          ? item.answer === index2
-                          : item.answer.includes(index2)
-                    }"
+
                   >
+                  <!-- :class="{
+                      s_b_m_b_i_m_c_o_right:
+                          item.type == 1
+                          ? testJsonCopy.anwer[index] == index2
+                          : testJsonCopy.anwer[index].includes(index2)
+                    }" -->
                     <div class="s_b_m_b_i_m_c_o_btn">
                       <span
                         class="s_b_m_b_i_m_c_o_btn1"
-                        v-if="typeof item.answer === 'number'"
+                        v-if="item.type == 1"
                       >
-                        <span v-if="item.answer === index2"></span>
+                      <!-- {{testJson}} -->
+                          <!-- <span ></span> -->
+                          <!-- v-if="testJson.anwer[index] == index2" -->
                       </span>
                       <span class="s_b_m_b_i_m_c_o_btn2" v-else>
-                        <span v-if="item.answer.includes(index2)">
-                          <svg
-                            width="8"
-                            height="6"
-                            viewBox="0 0 8 6"
-                            fill="none"
-                            xmlns="http://www.w3.org/2000/svg"
-                          >
-                            <path
-                              fill-rule="evenodd"
-                              clip-rule="evenodd"
-                              d="M7.44194 0.558058C7.68602 0.802136 7.68602 1.19786 7.44194 1.44194L3.44194 5.44194C3.19786 5.68602 2.80214 5.68602 2.55806 5.44194L0.558058 3.44194C0.313981 3.19786 0.313981 2.80214 0.558058 2.55806C0.802136 2.31398 1.19786 2.31398 1.44194 2.55806L3 4.11612L6.55806 0.558058C6.80214 0.313981 7.19786 0.313981 7.44194 0.558058Z"
-                              fill="white"
-                            />
-                          </svg>
-                        </span>
+
+                          <!-- <span v-if="testJson.anwer[index].includes(index2)"> -->
+                            <!-- <svg
+                              width="8"
+                              height="6"
+                              viewBox="0 0 8 6"
+                              fill="none"
+                              xmlns="http://www.w3.org/2000/svg"
+                            >
+                              <path
+                                fill-rule="evenodd"
+                                clip-rule="evenodd"
+                                d="M7.44194 0.558058C7.68602 0.802136 7.68602 1.19786 7.44194 1.44194L3.44194 5.44194C3.19786 5.68602 2.80214 5.68602 2.55806 5.44194L0.558058 3.44194C0.313981 3.19786 0.313981 2.80214 0.558058 2.55806C0.802136 2.31398 1.19786 2.31398 1.44194 2.55806L3 4.11612L6.55806 0.558058C6.80214 0.313981 7.19786 0.313981 7.44194 0.558058Z"
+                                fill="white"
+                              />
+                            </svg> -->
+                          <!-- </span> -->
+
                       </span>
                     </div>
                     <span>
@@ -118,11 +123,13 @@
                     </span>
                   </div>
                 </div>
+                </div>
+
 
 								<div v-if="[15].includes(toolType)" class="s_b_m_b_i_m_question">
 									<div class="s_b_m_b_i_m_c_title">
-                    <span>{{1 }}</span>
-                    <svg
+                     <span></span>
+                   <!-- <svg
                       width="16"
                       height="16"
                       viewBox="0 0 16 16"
@@ -133,16 +140,17 @@
                         d="M15.3536 8.35355C15.5488 8.15829 15.5488 7.84171 15.3536 7.64645L12.1716 4.46447C11.9763 4.2692 11.6597 4.2692 11.4645 4.46447C11.2692 4.65973 11.2692 4.97631 11.4645 5.17157L14.2929 8L11.4645 10.8284C11.2692 11.0237 11.2692 11.3403 11.4645 11.5355C11.6597 11.7308 11.9763 11.7308 12.1716 11.5355L15.3536 8.35355ZM1 8.5H15V7.5H1V8.5Z"
                         fill="#3681FC"
                       />
-                    </svg>
+                    </svg> -->
 
                     <span>提问:{{ testData.answerQ }}</span>
                   </div>
-									<span>
-
+                  <!-- v-if="testJsonCopy && testJsonCopy.answer"  -->
+									<span style="padding: 10px;">
+                    <!-- {{ testJsonCopy.answer }} -->
 									</span>
 								</div>
 
-								<div v-if="[41].includes(toolType)" class="s_b_m_b_i_m_selectiveMatching">
+                <div v-if="[41].includes(toolType)" class="s_b_m_b_i_m_selectiveMatching">
 									<div class="sm_left">
 										<img :src="testData.selectJson.url" alt="" @click="$hevueImgPreview(testData.selectJson.url)">
 									</div>
@@ -159,44 +167,68 @@
 											</el-select>
 										</div>
 									</div>
-								</div
-								
-								>
+								</div>
 
-								<div v-if="[47].includes(toolType)" class="s_b_m_b_i_m_sorting">
+                <div v-if="[47].includes(toolType)" class="s_b_m_b_i_m_sorting">
 									<div class="sortingItem" v-for="(item,index) in testData.sentenceList" :key="index">
-										<div class="s_b_m_b_i_m_c_title">
-                    <span>{{ index + 1 }}</span>
-                    <svg
-                      width="16"
-                      height="16"
-                      viewBox="0 0 16 16"
-                      fill="none"
-                      xmlns="http://www.w3.org/2000/svg"
-                    >
-                      <path
-                        d="M15.3536 8.35355C15.5488 8.15829 15.5488 7.84171 15.3536 7.64645L12.1716 4.46447C11.9763 4.2692 11.6597 4.2692 11.4645 4.46447C11.2692 4.65973 11.2692 4.97631 11.4645 5.17157L14.2929 8L11.4645 10.8284C11.2692 11.0237 11.2692 11.3403 11.4645 11.5355C11.6597 11.7308 11.9763 11.7308 12.1716 11.5355L15.3536 8.35355ZM1 8.5H15V7.5H1V8.5Z"
-                        fill="#3681FC"
-                      />
-                    </svg>
+										<div class="s_b_m_b_i_m_c_title2">
+                      <span></span>
+                      <span>题目{{ index + 1 }}:请选择正确顺序</span>
+                    </div>
 
-                    <span>{{ item.sentenceTitle?item.sentenceTitle:"无标题" }}</span>
-                  </div>
+                    <div class="si_box2">
+                      <div class="si_b_top">
+                        <div class="si_b_t_item" v-for="(item2,index2) in item.addSentence" :key="index2"></div>
+                      </div>
 
-									<div class="si_box">
-										<!-- <span v-for="(item2,index2) in item.sentenceContent" :key="index2">{{ item2 }}</span> -->
-										<div class="si_b_top">
-											<span class="si_b_t_item" v-for="(item2,index2) in item.addSentence" :key="index2">{{ item.rightAnswer[index2] }}</span>
-										</div>
-										<div class="si_b_bottom">
-											<span class="si_b_b_item" v-for="(item2,index2) in item.rightAnswer" :key="index2">{{ item2 }}</span>
-										</div>
-									</div>
+                      <div style="height: 1px;background-color: #ccc;width: 100%;margin: 10px 0"></div>
+
+                      <div class="si_b_bottom">
+                        <div class="si_b_b_item" v-for="(item2,index2) in item.rightAnswer" :key="index2">{{ item2 }}</div>
+                      </div>
+                    </div>
 									</div>
 								</div>
 
-								<div v-if="[40].includes(toolType)" class="s_b_m_b_i_m_evaluation">
-									<div class="e_item" v-for="(item,index) in testData.rateJson" :key="index">
+                <div v-if="[40].includes(toolType)" class="s_b_m_b_i_m_evaluation">
+                  <div class="middleBox">
+                    <div class="pfBox" v-for="(e, eIndex) in testData.rateJson" :key="eIndex">
+                      <div class="nameAndrate">
+                        <div>{{ e.value }}</div>
+                        <el-rate
+                          disabled
+                        ></el-rate>
+                      </div>
+                      <div v-if="e.detail">{{ e.detail }}</div>
+                    </div>
+                    <div class="easy_comment" v-if="false">
+                      <div
+                        v-for="(p, pIndex) in PlTextList"
+                        :key="pIndex"
+                        @click="fastText(p, 2)"
+                      >
+                        {{ p }}
+                      </div>
+                    </div>
+                    <div class="bz">
+                      <textarea
+                        disabled
+                        rows="4"
+                        class="pj"
+                        style="
+                          padding: 10px 5px;
+                          width: 70%;
+                          background: #f7f6f9;
+                          font-size: 14px;
+                          text-indent: 10px;
+                          resize:none
+                        "
+                        cols
+                        placeholder="请输入评价内容..."
+                      ></textarea>
+                    </div>
+                  </div>
+									<!-- <div class="e_item" v-for="(item,index) in testData.rateJson" :key="index">
 										<div class="s_b_m_b_i_m_c_title">
                     <span>{{ index + 1 }}</span>
                     <svg
@@ -213,38 +245,152 @@
                     </svg>
 
                     <span>{{ item.value?item.value:"无标题" }}</span>
-                  </div>
-									<div class="e_item_content">
-										<span class="e_i_c_detail">{{ item.detail?item.detail:"无内容" }}</span>
-										<el-rate :value="item.score" disabled :max="item.score"></el-rate>
-									</div>
-									
+                    </div>
+                    <div class="e_item_content" v-if="testJson">
+                      <span class="e_i_c_detail">{{ item.detail?item.detail:"无内容" }}</span>
+                      <el-rate :value="testJson.eStar[index]" disabled :max="item.score"></el-rate>
+                    </div>
+
 									</div>
-									<span>请输入评价内容...</span>
-								</div>
-              </div>
+									<span v-if="testJson" style="padding: 10px;">{{ testJson.eBzText }}</span>
+								</div> -->
+                </div>
+                <div v-if="[48].includes(toolType)" class="s_b_m_b_i_m_evaluation">
+                  <el-form>
+                    <div  class="cont" v-if="testData && testData.tableJson && testData.tableJson.text" v-html="testData.tableJson.text"></div>
+                  </el-form>
+                </div>
+                <div v-if="[52].includes(toolType)" class="s_b_m_b_i_m_evaluation">
+                  <div v-if="testData && testData.wordJson && testData.wordJson.text">
+                    <div v-html="testData.wordJson.text"></div>
+                  </div>
+                </div>
+                <div v-if="[7,1,3].includes(toolType)" class="s_b_m_b_i_m_iframe">
+                  <div v-if="[3].includes(toolType)">
+										<iframe></iframe>
+                  </div>
+                </div>
+                <div v-if="[49].includes(toolType)" class="s_b_m_b_i_m_evaluation">
+                  <div>
+                    <div
+                      class="g_d_box"
+                      v-if="testData.groupJson.group"
+                    >
+                      <div
+                        class="g_d_group"
+                        v-for="(g, gindex) in testData.groupJson.group"
+                        :key="gindex"
+                      >
+
+                      <div class="g_d_group_chair">
+                        <div v-if="testData.groupJson.number > 1">
+                          <span class="isChair">
+                              <span class="updateChairBtn">修改</span>
+                          </span>
+                          <span>空位置</span>
+                        </div>
+                        <div v-if="testData.groupJson.number > 4">
+                          <span class="isChair">
+                              <span class="updateChairBtn">修改</span>
+                          </span>
+                          <span>空位置</span>
+                        </div>
+                        <div v-if="testData.groupJson.number > 8">
+                          <span class="isChair">
+                              <span class="updateChairBtn">修改</span>
+                          </span>
+                          <span>空位置</span>
+                        </div>
+                      </div>
+                      <div class="g_d_group_tableBox">
+                        <div class="g_d_group_chair2">
+                          <div v-if="testData.groupJson.number > 2">
+                            <span class="isChair">
+                              <span class="updateChairBtn">修改</span>
+                            </span>
+                            <span>空位置</span>
+                          </div>
+                          <div v-if="testData.groupJson.number > 6">
+                            <span class="isChair">
+                              <span class="updateChairBtn">修改</span>
+                            </span>
+                            <span>空位置</span>
+                          </div>
+                        </div>
+                        <div class="g_d_group_table">
+                          <div>
+                            {{ g.name }}
+                          </div>
+                          <div>
+                            <div>
+                              加入分组
+                            </div>
+                          </div>
+                        </div>
+                        <div class="g_d_group_chair2">
+                          <div v-if="testData.groupJson.number > 3">
+                            <span class="isChair">
+                              <span class="updateChairBtn">修改</span>
+                            </span>
+                            <span>空位置</span>
+                          </div>
+                          <div v-if="testData.groupJson.number > 7">
+                            <span class="isChair">
+                              <span class="updateChairBtn">修改</span>
+                            </span>
+                            <span>空位置</span>
+                          </div>
+                        </div>
+                      </div>
+                      <div class="g_d_group_chair">
+                        <div v-if="testData.groupJson.number > 1">
+                          <span class="isChair">
+                              <span class="updateChairBtn">修改</span>
+                          </span>
+                          <span>空位置</span>
+                        </div>
+                        <div v-if="testData.groupJson.number > 5">
+                          <span class="isChair">
+                              <span class="updateChairBtn">修改</span>
+                          </span>
+                          <span>空位置</span>
+                        </div>
+                        <div v-if="testData.groupJson.number > 9">
+                          <span class="isChair">
+                              <span class="updateChairBtn">修改</span>
+                          </span>
+                          <span>空位置</span>
+                        </div>
+                      </div>
+                      </div>
+                    </div>
+                  </div>
 
+                </div>
+              </div>
             </div>
             <div class="s_b_m_b_item" v-if="showType === 1 && dialogTypeList[1].showType.includes(toolType)">
 
-							<div class="s_b_m_b_i_eChartsArea">
+              <div v-if="toolType == 45">
+                <div class="s_b_m_b_i_eChartsArea">
 								<div class="s_b_m_b_i_e_title">
 									<span v-for="item in statisticsTypeList" :key="item.value" :class="{'s_b_m_b_i_e_t_active':showStatisticsType===item.value}" @click="changeShowStatisticsType(item.value)">{{item.label}}</span>
 								</div>
-								
+
 								<div class="s_b_m_b_i_e_charts">
 									<eChartsView1 v-if="showStatisticsType===0 && accuracyRateData" :data="accuracyRateData"/>
 									<eChartsView2 v-if="showStatisticsType===1 && optionSummaryData" :data="optionSummaryData"/>
 								</div>
-								
+
 								<div class="s_b_m_b_i_e_charts_bottom">
-									<span v-if="accuracyRateData" v-for="(item,index) in accuracyRateData.series[0].data">第{{ index+1 }}题 {{ item }}%</span>
+									<span style="cursor: pointer;" v-if="accuracyRateData" @click="jumpTo(index)" v-for="(item,index) in accuracyRateData.series[0].data">第{{ index+1 }}题 {{ item }}%</span>
 								</div>
 							</div>
 
               <div class="s_b_m_b_i_table">
                 <div
                   class="s_b_m_b_i_m_choseList"
+                  :id="index+'JP'"
                   v-for="(item, index) in tableData"
                 >
                   <div class="s_b_m_b_i_m_c_title">
@@ -294,8 +440,15 @@
                       </el-table-column>
                     </el-table>
                   </div>
+
                 </div>
               </div>
+              </div>
+							<div v-if="toolType == 15">
+                <choseWordCloud :cloudData="cy" :dialogVisibleWordCloud="dialogVisibleWordCloud"></choseWordCloud>
+              </div>
+
+
             </div>
             <div class="s_b_m_b_item s_b_m_b_worksSubmit" v-if="showType === 2 && dialogTypeList[2].showType.includes(toolType)">
               <div class="s_b_b_i_noSubmit">
@@ -371,16 +524,24 @@
                     v-for="item in worksStudent"
                     :key="item.userid"
                   >
-                    <div class="s_b_b_i_ws_b_i_s_i_t_top" :style="`cursor: ${[45,7,52,48].includes(toolType)?'pointer':'default'};padding: ${[7,52,48].includes(toolType)?'0px':'10px'};`" @click="openTools(item)">
+                    <div
+                      class="s_b_b_i_ws_b_i_s_i_t_top"
+                      :style="`cursor: ${[45,7,52,48].includes(toolType)?'pointer':'default'};padding: ${[7,52,48].includes(toolType)?'0px':'10px'};`"
+                      @click="StudentWork(item)"
+                      >
+
+                      <!-- @click="openTools(item)"  -->
                       <div
                         class="s_b_b_i_ws_b_i_s_i_t_t_delIcon"
-                        @click.stop="deleteWorks(item.wid)"
                       >
-                        <img src="../../assets/deleteworks.png" alt="" />
+                        <div>
+                          <span v-if="toolType == 45">{{ accuracy(item) }}</span>
+                        </div>
+                        <img @click.stop="deleteWorks(item.wid)" src="../../assets/deleteworks.png" alt="" />
                       </div>
 
 											<div class="s_b_b_i_ws_b_i_s_i_t_t_answer">
-												
+
 
 
 												<span v-if="[15].includes(toolType)" class="questionsAndAnswersSpan">{{ questionsAndAnswers(item) }}</span>
@@ -409,10 +570,14 @@
 													<span>{{ JSON.parse(item.works).eBzText }}</span>
 												</div>
 
-												<div class="imageWorks" v-if="[7].includes(toolType)">
+												<div class="imageWorks" v-if="[7,1,3].includes(toolType)">
 														<img :src="item.works" alt="" @click.stop="$hevueImgPreview(item.works)">
 												</div>
 
+                        <!-- <div class="imageWorks" v-if="[1].includes(toolType)">
+														<img :src="item.works" alt="" @click.stop="$hevueImgPreview(item.works)">
+												</div> -->
+
 												<div class="imageWorks" v-if="[52,48].includes(toolType)">
 													<img :src="require('../../assets/icon/isWord.png')" alt="">
 													<!-- <img v-if="[48].includes(toolType)" :src="require('../../assets/icon/isTxt.png')" alt=""> -->
@@ -442,15 +607,20 @@
         </div>
       </div>
     </el-dialog>
+    <studentWorkPreviewDialog ref="studentWorkPreviewDialogRef" @close="studentPreviewClose"/>
   </div>
 </template>
 
 <script>
 import eChartsView from './eChartsView.vue'
+import choseWordCloud from './choseWordCloud.vue'
+import studentWorkPreviewDialog from './studentWorkPreviewDialog.vue';
 export default {
 	components:{
 		eChartsView1:eChartsView,
-		eChartsView2:eChartsView
+		eChartsView2:eChartsView,
+    choseWordCloud,
+    studentWorkPreviewDialog
 	},
   props: {
     worksStudentData: {
@@ -466,8 +636,8 @@ export default {
       default: () => []
     },
     courseType: {
-      type: String || Number,
-      default: ""
+      type: [String , Number],
+      default: 0
     },
     taskCount: {
       type: Number,
@@ -478,9 +648,13 @@ export default {
     return {
       show: false,
       showType: 0,
+      wordCloudData:[], //词云数据
+      dialogVisibleWordCloud:false,
 			showStatisticsType:0,
       data: null,
       testJson: null,
+      testJsonCopy: null,
+      screenCopy:'',
       testData: null,
       toolIndex: null,
       worksStudent: [],
@@ -491,12 +665,17 @@ export default {
         worksPreview: false
       },
       dialogTypeList: [
-        { label: "作业详细", value: 0,showType:[45,15,41,47,40], loading: false },
-        { label: "题目统计", value: 1,showType:[45], loading: false },
-        { label: "学生统计", value: 2,showType:[45,15,41,47,40,7,52,48], loading: false }
+        { label: "作业详细", value: 0,showType:[1,7,15,40,41,45,47,48,49,52,3], loading: false },
+        { label: "题目统计", value: 1,showType:[45,15], loading: false },
+        { label: "学生统计", value: 2,showType:[1,7,15,40,41,45,47,48,52,3], loading: false }
       ],
 			toolList:[
 				{label:"选择题",value:45,img:require("../../assets/icon/thirdToolList/choose.png")},
+				{label:"思维导图",value:3,img:require("../../assets/icon/secondToolList/mindMapping.png")},
+				{label:"表格",value:48,img:require("../../assets/icon/fourthToolList/table.png")},
+        {label:"文档",value:52,img:require("../../assets/icon/fourthToolList/text.png")},
+				{label:"学生分组",value:49,img:require("../../assets/icon/fourthToolList/group.png")},
+				{label:"电子白板",value:1,img:require("../../assets/icon/secondToolList/whiteBoard.png")},
 				{label:"问答题",value:15,img:require("../../assets/icon/thirdToolList/answer.png")},
 				{label:"选择匹配",value:41,img:require("../../assets/icon/thirdToolList/select.png")},
 				{label:"排序",value:47,img:require("../../assets/icon/fourthToolList/conSentences.png")},
@@ -526,6 +705,7 @@ export default {
         let pushData = [];
 
         isWorksData = this.worksStudent.map(i => JSON.parse(i.works)[0].anwer);
+        console.log('worksJson',worksJson);
 
         pushData = worksJson.map((item, index) => {
           return {
@@ -586,14 +766,14 @@ export default {
     		    {
     		      name: '准确率',
     		      type: 'bar',
-    		      data: [], 
+    		      data: [],
     		      itemStyle: {
     		        color: '#5c87ef'  // 设置条形图的颜色
     		      }
     		    }
     		  ],
     		  // 设置条形图的间隔
-    		  barCategoryGap: '50%', 
+    		  barCategoryGap: '50%',
     		}
 
 				this.tableData.forEach((item,index)=>{
@@ -703,7 +883,48 @@ export default {
 				}
 				return _result;
 			}
-		}
+		},
+    cy(){
+      let _result = ''
+      if(this.toolType==15){
+        this.worksStudent.forEach(e=>{
+          _result += JSON.parse(e.works)[0].answer+','
+        })
+      }
+
+      return _result;
+    },
+    accuracy(){
+      return data=>{
+        console.log('data',JSON.parse(data.works));
+
+        let allData = JSON.parse(data.works)[0]
+        let answerData = []
+        let num = 0
+        allData.testJson.testJson.forEach(e=>{
+          answerData.push(e.answer)
+        })
+
+        answerData.forEach((e,i)=>{
+          if (JSON.stringify(e) == JSON.stringify(allData.anwer[i])) {
+            num++
+          }
+        })
+
+
+
+				// let _result = "";
+				// if([15].includes(this.toolType)){
+				// 	let _work = data.works?JSON.parse(data.works)[0]:null;
+				// 	if(_work){
+				// 		_result = _work.answer;
+				// 	}
+				// }
+
+        let et = ((num / answerData.length).toFixed(1)) * 100
+				return  et+'%';
+			}
+    }
   },
   watch: {
     worksStudentData: {
@@ -740,17 +961,79 @@ export default {
     }
   },
   methods: {
+    jumpTo(val){
+      let a = document.getElementById(val+"JP");
+      a.scrollIntoView({
+        behavior: "smooth" // 平滑滚动效果
+      });
+
+    },
     open(data) {
       if (this.show) return;
       this.show = true;
       this.data = data;
       this.toolIndex = data.toolIndex;
 			this.toolType = data.toolType;
-			if(this.dialogTypeList.findIndex(i=>i.showType.includes(this.toolType))!==-1){
+			if(this.dialogTypeList.findIndex(i=>i.showType.includes(this.toolType))==-1){
 				this.changeShowType(this.dialogTypeList.findIndex(i=>i.showType.includes(this.toolType)))
 			}
       this.setData();
     },
+    openWordCloud() {
+      this.dialogVisibleWordCloud = true
+    },
+    StudentWork(item){
+
+      this.$refs.studentWorkPreviewDialogRef.open({work:item,testData:this.testData,testJson:this.testJson,tool:this.toolType});
+      this.$emit("changeSplitScreenBehavior",{code: 1,
+        form: {
+          toolType:this.toolType,
+          toolIndex: this.toolIndex,
+          courseType: this.courseType,
+          taskCount: this.taskCount,
+          type: this.showType,
+					showStatisticsType:this.showStatisticsType,
+					lookWorks:item.wid
+        }})
+      // if (this.toolType == 41) {
+      //   this.testJsonCopy=val.works.split(',')
+      // }else if(this.toolType == 52 ) {
+      //   return this.openTools(val)
+      // }else if(this.toolType == 48) {
+      //   return this.openTools(val)
+      //   return this.openTools(JSON.parse(val))
+      // }else if(this.toolType == 40){
+      //   this.testJsonCopy=JSON.parse(val.works)
+      // }else{
+      //   this.testJsonCopy=JSON.parse(val.works)[0]
+      // }
+
+      // console.log('this.testJson',JSON.parse(JSON.stringify(this.testJsonCopy)));
+
+      // this.showType = 0;
+			// this.$emit("changeSplitScreenBehavior",{code: 1,
+      //   form: {
+      //     toolType:this.toolType,
+      //     toolIndex: this.toolIndex,
+      //     courseType: this.courseType,
+      //     taskCount: this.taskCount,
+      //     type: this.showType,
+			// 		showStatisticsType:this.showStatisticsType,
+			// 		lookWorks:val.wid
+      //   }})
+    },
+    studentPreviewClose(){
+      this.$emit("changeSplitScreenBehavior",{code: 1,
+        form: {
+          toolType:this.toolType,
+          toolIndex: this.toolIndex,
+          courseType: this.courseType,
+          taskCount: this.taskCount,
+          type: this.showType,
+					showStatisticsType:this.showStatisticsType,
+					lookWorks:null
+        }})
+    },
     setData() {
       if (this.show && this.toolIndex !== null) {
         this.worksStudent = JSON.parse(
@@ -759,14 +1042,14 @@ export default {
         this.noWorksStudent = JSON.parse(
           JSON.stringify(this.noWorksSData[this.toolIndex])
         );
-        if(![52,48].includes(this.toolType)){
+        // if(![52].includes(this.toolType)){
           let _tempData = this.chapInfoListData[this.courseType].chapterInfo[0]
             .taskJson[this.taskCount].toolChoose[this.toolIndex];
           this.testData = _tempData ? _tempData : null;
           this.testJson = this.testData.testJson
             ? this.testData.testJson.testJson
             : null;
-        }
+        // }
       }
     },
     close() {
@@ -779,6 +1062,7 @@ export default {
       this.showType = 0;
 			this.showStatisticsType = 0;
       this.testJson = null;
+      this.testJsonCopy = null;
       this.worksStudent = [];
       this.noWorksStudent = [];
       this.toolIndex = null;
@@ -790,15 +1074,20 @@ export default {
       };
     },
     changeShowType(type) {
+      if (type == 1 && this.toolType == 15) {
+        this.openWordCloud()
+      }
       this.showType = type;
 			this.$emit("changeSplitScreenBehavior",{code: 1,
         form: {
+          toolType:this.toolType,
           toolIndex: this.toolIndex,
           courseType: this.courseType,
           taskCount: this.taskCount,
           type: this.showType,
-					showStatisticsType:this.showStatisticsType
+					showStatisticsType:this.showStatisticsType,
         }})
+
     },
     deleteWorks(wid) {
       this.$emit("deleteWorks", wid);
@@ -815,6 +1104,7 @@ export default {
 			this.showStatisticsType = type;
 			this.$emit("changeSplitScreenBehavior",{code: 1,
         form: {
+          toolType:this.toolType,
           toolIndex: this.toolIndex,
           courseType: this.courseType,
           taskCount: this.taskCount,
@@ -829,8 +1119,19 @@ export default {
 			if(data.showStatisticsType!==undefined){
 				this.showStatisticsType = data.showStatisticsType;
 			}
-			if(data.toolType!==undefined){
+			if(data.toolType!==undefined &&this.toolType != data.toolType){
 				this.toolType = data.toolType;
+        this.setData();
+        this.$forceUpdate();
+			}
+
+			if(data.lookWorks !== undefined){
+        let work = this.worksStudent.find(e=>e.wid==data.lookWorks);
+        if(work){
+          this.StudentWork(work)
+        }else if(data.lookWorks===null){
+        this.$refs.studentWorkPreviewDialogRef.close();
+      }
 			}
 		}
   }
@@ -943,6 +1244,9 @@ export default {
   margin: 0 auto;
   min-width: 1000px;
   padding: 10px 0 30px 0;
+  height: calc(100% - 40px);
+  display: flex;
+  flex-direction: column;
 }
 
 .s_b_m_b_i_main > span {
@@ -950,6 +1254,7 @@ export default {
   font-weight: bold;
   display: block;
   margin: 30px 0 40px 20px;
+
 }
 
 .s_b_m_b_i_m_title {
@@ -997,6 +1302,17 @@ export default {
   margin-bottom: 30px;
 }
 
+.s_b_m_b_i_m_c_title2 {
+  display: flex;
+  align-items: center;
+}
+
+.s_b_m_b_i_m_c_title2 > span:nth-of-type(1) {
+  font-size: 14px;
+  /* font-weight: bold; */
+  color: #3681fc;
+}
+
 .s_b_m_b_i_m_c_title {
   display: flex;
   align-items: center;
@@ -1194,16 +1510,19 @@ export default {
 }
 
 .s_b_b_i_ws_b_i_s_i_t_t_delIcon {
-  width: 25px;
+  width: 70px;
   height: 25px;
   position: absolute;
+  display: flex;
+  justify-content: space-between;
+  align-items: center;
   right: 10px;
   top: 10px;
   cursor: pointer;
 }
 
 .s_b_b_i_ws_b_i_s_i_t_t_delIcon > img {
-  width: 100%;
+  width: 25px;
   height: 100%;
 }
 
@@ -1421,19 +1740,19 @@ export default {
 }
 
 .sm_left{
-	width: calc(100% - 300px);
+	width: calc(100% - 350px);
 	height: 100%;
 }
 
 .sm_left>img{
-	width: 100%;
+	width: 85%;
 	height: auto;
 	cursor: pointer;
 	border-radius: 2px;
 }
 
 .sm_right{
-	width: 300px;
+	width: 350px;
 	min-height: 600px;
 	box-sizing: border-box;
 	padding: 10px;
@@ -1447,20 +1766,22 @@ export default {
 	margin-bottom: 20px;
 	display: flex;
 	align-items: center;
-	justify-content: center;
+	/* justify-content: center; */
 }
 
 .sm_right_item>>>.el-select{
-	width: 100%;
+	width: 200px;
+}
+.sm_right_item >>> .el-input__inner{
+	width: 200px;
 }
-
 .answerSelect>span{
 	font-size: 18px;
 	font-weight: bold;
 	margin: 2px 4px;
 	display: block;
 	float: left;
-	
+
 }
 
 .s_b_m_b_i_m_sorting{
@@ -1474,6 +1795,52 @@ export default {
 	margin-bottom: 20px;
 }
 
+.si_box2{
+	width: auto;
+	min-height: 100px;
+	box-sizing: border-box;
+	padding: 10px;
+}
+.si_box2 > .si_b_top{
+	width: 100%;
+	margin-top: 20px;
+  display: flex;
+  flex-wrap: wrap;
+}
+.si_box2 > .si_b_top > .si_b_t_item{
+	font-size: 24px;
+	margin-right: 20px;
+	padding: 10px 40px;
+  height: 47px;
+	border: dashed 2px #d7d9e0;
+	border-radius: 5px;
+	color: #ebedf3;
+	font-weight: bold;
+	box-sizing: border-box;
+}
+
+.si_box2 > .si_b_bottom{
+	width: 100%;
+  margin: 0;
+  display: flex;
+  flex-wrap: wrap;
+
+}
+.si_box2 > .si_b_bottom > div{
+  flex-shrink: 0;
+  font-size: 18px;
+	margin-right: 20px;
+	padding: 10px 40px;
+  height: 47px;
+	border: solid 2px #A3C7F9;
+	border-radius: 5px;
+	font-weight: bold;
+	color: black;
+  line-height: 24px;
+	box-sizing: border-box;
+  margin-bottom: 10px;
+}
+
 .si_box{
 	width: 100%;
 	height: auto;
@@ -1524,6 +1891,7 @@ export default {
 .s_b_m_b_i_m_evaluation{
 	box-sizing: border-box;
 	padding-left: 15px;
+  width: 100%;
 }
 
 .e_item{
@@ -1587,4 +1955,232 @@ export default {
   padding: 20px;
   background-color: blue;
 } */
+.middleBox {
+  padding: 5px 0 15px 20px;
+}
+.pfBox {
+  padding-bottom: 30px;
+}
+
+.nameAndrate {
+  display: flex;
+  flex-direction: row;
+  flex-wrap: nowrap;
+  align-items: center;
+  padding-bottom: 10px;
+  height: 30px;
+  line-height: 30px;
+}
+
+.nameAndrate > div {
+  margin-left: 10px;
+  color: #000;
+  height: 30px;
+}
+
+.nameAndrate >>> .el-rate__icon {
+  font-size: 28px !important;
+}
+
+.pfBox > div:nth-child(2) {
+  background: #f7f6f9;
+  width: 400px;
+  min-height: 45px;
+  border-radius: 10px;
+  font-size: 16px;
+  display: flex;
+  flex-wrap: wrap;
+  align-items: center;
+  padding: 10px 20px;
+  box-sizing: border-box;
+  color: #000;
+}
+
+.bz {
+  display: flex;
+  flex-direction: row;
+  flex-wrap: nowrap;
+  align-items: flex-start;
+}
+
+.bz > div {
+  padding: 0 10px;
+}
+/* table 样式 */
+.cont >>> table {
+  border-top: 1px solid #ccc;
+  border-left: 1px solid #ccc;
+}
+
+.cont >>> table td,
+.cont >>> table th {
+  border-bottom: 1px solid #ccc;
+  border-right: 1px solid #ccc;
+  /* padding: 20px 5px; */
+  padding: 5px 10px;
+  max-width: 0px;
+  height: 30px;
+  vertical-align: baseline;
+  box-sizing: border-box;
+}
+
+.cont >>> table th {
+  border-bottom: 2px solid #ccc;
+  text-align: center;
+}
+
+/* blockquote 样式 */
+.cont >>> blockquote {
+  display: block;
+  border-left: 8px solid #d0e5f2;
+  padding: 5px 10px;
+  margin: 10px 0;
+  line-height: 1.4;
+  font-size: 100%;
+  background-color: #f1f1f1;
+}
+
+/* code 样式 */
+.cont >>> code {
+  display: inline-block;
+  /* *display: inline; */
+  zoom: 1;
+  background-color: #f1f1f1;
+  border-radius: 3px;
+  padding: 3px 5px;
+  margin: 0 3px;
+}
+
+.cont >>> pre code {
+  display: block;
+}
+
+/* ul ol 样式 */
+.cont >>> ul,
+ol {
+  margin: 10px 0 10px 20px;
+}
+.g_d_box {
+  display: flex;
+  flex-flow: wrap;
+  justify-content: space-around;
+}
+
+.g_d_box .isChair {
+  background-image: url(../../assets/avatar.png) !important;
+}
+.updateChairBtn {
+  position: absolute;
+  width: 50px;
+  height: 50px;
+  overflow: hidden;
+  /* display: flex; */
+  align-items: center;
+  justify-content: center;
+  background: #00000087;
+  color: #fff;
+  border-radius: 50px;
+  display: none;
+  cursor: pointer;
+}
+.g_d_group_table {
+  background-image: url(../../assets/icon/groupBg.png);
+  width: 354px;
+  height: 196px;
+  background-size: 100% 100%;
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  flex-direction: column;
+  color: #fff;
+}
+
+.g_d_group_table > div:nth-child(1) {
+  font-size: 24px;
+  margin-bottom: 5px;
+}
+
+.g_d_group_table > div:nth-child(2) div {
+  cursor: pointer;
+  background: #2e77bf;
+  padding: 4px 10px;
+  border-radius: 5px;
+}
+.g_d_group_chair {
+  display: flex;
+  align-items: center;
+  justify-content: center;
+}
+
+.g_d_group_chair > div + div {
+  margin-left: 30px;
+}
+
+.g_d_group_chair > div,
+.g_d_group_chair2 > div {
+  display: flex;
+  flex-direction: column;
+  align-items: center;
+}
+
+.g_d_group_chair > div > span:nth-child(1),
+.g_d_group_chair2 > div > span:nth-child(1) {
+  background-image: url(../../assets/icon/chair.png);
+  width: 50px;
+  height: 50px;
+  display: block;
+  background-size: 100% 100%;
+}
+
+.g_d_group_tableBox {
+  display: flex;
+  align-items: center;
+  justify-content: center;
+}
+
+.g_d_group_chair2 {
+  display: flex;
+  flex-direction: column;
+  align-items: center;
+  justify-content: center;
+}
+
+.g_d_group_chair2 > div + div {
+  margin-top: 10px;
+}
+
+.g_d_group_table {
+  background-image: url(../../assets/icon/groupBg.png);
+  width: 354px;
+  height: 196px;
+  background-size: 100% 100%;
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  flex-direction: column;
+  color: #fff;
+}
+
+.g_d_group_table > div:nth-child(1) {
+  font-size: 24px;
+  margin-bottom: 5px;
+}
+
+.g_d_group_table > div:nth-child(2) div {
+  cursor: pointer;
+  background: #2e77bf;
+  padding: 4px 10px;
+  border-radius: 5px;
+}
+
+.s_b_m_b_i_m_iframe{
+  width: 100%;
+  flex: 1;
+}
+
+.s_b_m_b_i_m_iframe>div{
+  width: 100%;
+  height: 100%;
+  background-color: red;
+}
 </style>

+ 1 - 1
src/components/components/statisticalAnalysis.vue

@@ -1,5 +1,5 @@
 <template>
-  <div class="statisticalAnalysis">
+  <div class="statisticalAnalysis" v-if="show">
     <el-dialog
       :visible.sync="show"
       width="100%"

+ 647 - 0
src/components/components/studentWorkPreviewDialog.vue

@@ -0,0 +1,647 @@
+<template>
+  <div class="studentWorkPreviewDialog">
+    <el-dialog
+      :visible.sync="show"
+      width="100%"
+      height="100%"
+      fullscreen
+      :modal="true"
+      :close-on-click-modal="false"
+      :show-close="false"
+    >
+      <div class="s_body">
+        <div class="s_b_main">
+          <div class="s_b_m_top">
+            <div>学生作业预览</div>
+            <span @click="close()">退出</span>
+          </div>
+          <div
+            class="s_b_m_content"
+            v-if="[45, 48, 52, 15, 41, 47,40].includes(tool)"
+          >
+            <div class="s_b_m_tool45" v-if="[45].includes(tool)">
+              <div class="s_b_m_toolItem" v-for="(item, index) in testJson">
+                <div class="s_b_m_ti_title">
+                  <span>{{ index + 1 }}</span>
+                  <svg
+                    width="16"
+                    height="16"
+                    viewBox="0 0 16 16"
+                    fill="none"
+                    xmlns="http://www.w3.org/2000/svg"
+                  >
+                    <path
+                      d="M15.3536 8.35355C15.5488 8.15829 15.5488 7.84171 15.3536 7.64645L12.1716 4.46447C11.9763 4.2692 11.6597 4.2692 11.4645 4.46447C11.2692 4.65973 11.2692 4.97631 11.4645 5.17157L14.2929 8L11.4645 10.8284C11.2692 11.0237 11.2692 11.3403 11.4645 11.5355C11.6597 11.7308 11.9763 11.7308 12.1716 11.5355L15.3536 8.35355ZM1 8.5H15V7.5H1V8.5Z"
+                      fill="#3681FC"
+                    />
+                  </svg>
+
+                  <span
+                    >{{ item.type == 1 ? "单选题:" : "多选题:"
+                    }}{{ item.teststitle }}</span
+                  >
+                </div>
+                <div
+                  class="s_b_m_ti_option"
+                  v-for="(item2, index2) in item.checkList"
+                  :class="{
+                    s_b_m_ti_o_choice:
+                      item.type == '1'
+                        ? userAnswer[index] == index2
+                        : userAnswer[index].includes(index2)
+                  }"
+                >
+                  <!-- :class="{
+                           s_b_m_ti_o_choice:
+                          item2.type == 1
+                          ? item2.answer == index2
+                          : item2.answer[index].includes(index2)
+                    }" -->
+                  <div class="s_b_m_ti_o_btn">
+                    <span class="s_b_m_ti_o_btn1" v-if="item.type == 1">
+                      <!-- {{testJson}} -->
+                      <span v-if="userAnswer[index] == index2"></span>
+                      <!-- v-if="testJson.anwer[index] == index2" -->
+                    </span>
+                    <span class="s_b_m_ti_o_btn2" v-else>
+                      <span v-if="userAnswer[index].includes(index2)">
+                        <!-- <svg
+                              width="8"
+                              height="6"
+                              viewBox="0 0 8 6"
+                              fill="none"
+                              xmlns="http://www.w3.org/2000/svg"
+                            >
+                              <path
+                                fill-rule="evenodd"
+                                clip-rule="evenodd"
+                                d="M7.44194 0.558058C7.68602 0.802136 7.68602 1.19786 7.44194 1.44194L3.44194 5.44194C3.19786 5.68602 2.80214 5.68602 2.55806 5.44194L0.558058 3.44194C0.313981 3.19786 0.313981 2.80214 0.558058 2.55806C0.802136 2.31398 1.19786 2.31398 1.44194 2.55806L3 4.11612L6.55806 0.558058C6.80214 0.313981 7.19786 0.313981 7.44194 0.558058Z"
+                                fill="white"
+                              />
+                            </svg> -->
+                      </span>
+                    </span>
+                  </div>
+                  <span>
+                    <img
+                      v-if="item2.imgType && item2.imgType === 1"
+                      :src="item2.src"
+                      alt=""
+                      @click="$hevueImgPreview(item2.src)"
+                    />
+                    <span v-else>{{ item2 }}</span>
+                  </span>
+                </div>
+                <div></div>
+              </div>
+            </div>
+
+            <div class="s_b_m_tool48" v-if="[48, 52].includes(tool)">
+              <div v-html="userAnswer"></div>
+            </div>
+
+            <div class="s_b_m_tool15" v-if="[15].includes(tool)">
+              <div class="s_b_m_ti_title">
+                <div>提问:{{ testData.answerQ }}</div>
+              </div>
+
+              <div class="s_b_m_ti_answer">{{ userAnswer }}</div>
+            </div>
+
+            <div class="s_b_m_tool41" v-if="[41].includes(tool)">
+              <div class="s_b_m_t_image">
+                <img :src="testData.selectJson.url" alt="题目图片" />
+              </div>
+              <div class="s_b_m_t_select">
+                <div
+                  class="s_b_m_t_selectItem"
+                  v-for="(item, index) in testData.selectJson.answer"
+                >
+                  <el-select v-model="userAnswer[index]" placeholder="请选择">
+                    <el-option
+                      v-for="(item2, index2) in testData.selectJson.select"
+                      :disabled="true"
+                      :key="index2"
+                      :label="item2"
+                      :value="index2"
+                    >
+                    </el-option>
+                  </el-select>
+                </div>
+              </div>
+            </div>
+
+            <div class="s_b_m_tool47" v-if="[47].includes(tool)">
+              <div
+                class="s_b_m_sortItem"
+                v-for="(item, index) in testData.sentenceList"
+              >
+                <div class="s_b_m_ti_title">
+                  <span></span>
+                  <span>第{{ index + 1 }}题</span>
+                </div>
+
+                <div class="s_s_b_m_s_rightOrError">
+                  <div v-if="JSON.stringify(item.rightAnswer)==JSON.stringify(userAnswer[index])">
+                    <img
+                      src="../../assets/icon/conSentences/right.png"
+                      alt=""
+                    />
+                    回答正确
+                  </div>
+                  <div v-else>
+                    <img
+                      src="../../assets/icon/conSentences/wrong.png"
+                      alt=""
+                    />
+                    回答错误
+                  </div>
+                </div>
+
+                <div class="s_b_m_s_answer">
+                  <span v-for="(item2, index2) in userAnswer[index]">{{
+                    item2
+                  }}</span>
+                </div>
+
+                <div class="s_b_m_s_sortText">
+                  <div>
+                    组成句子:<span
+                      v-for="(item2, index2) in userAnswer[index]"
+                      >{{ item2 }}</span
+                    >
+                  </div>
+                </div>
+              </div>
+            </div>
+
+            <div class="s_b_m_tool40" v-if="[40].includes(tool)">
+              <div class="s_b_m_t_rateItem" v-for="(item,index) in testData.rateJson">
+                <div>
+                  <span>{{ item.value }}</span>
+                  <el-rate
+                    :value="userAnswer.eStar[index]"
+                    disabled
+                  ></el-rate>
+                </div>
+                <span>{{ item.detail }}</span>
+              </div>
+
+              <div class="s_b_m_t_rateText">
+                {{ userAnswer.eBzText }}
+              </div>
+            </div>
+          </div>
+        </div>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+export default {
+  components: {},
+  data() {
+    return {
+      show: false,
+      toolList: [
+        {
+          label: "选择题",
+          value: 45,
+          img: require("../../assets/icon/thirdToolList/choose.png")
+        },
+        {
+          label: "表格",
+          value: 48,
+          img: require("../../assets/icon/fourthToolList/table.png")
+        },
+        {
+          label: "文档",
+          value: 52,
+          img: require("../../assets/icon/fourthToolList/text.png")
+        },
+        {
+          label: "学生分组",
+          value: 49,
+          img: require("../../assets/icon/fourthToolList/group.png")
+        },
+        {
+          label: "电子白板",
+          value: 1,
+          img: require("../../assets/icon/secondToolList/whiteBoard.png")
+        },
+        {
+          label: "问答题",
+          value: 15,
+          img: require("../../assets/icon/thirdToolList/answer.png")
+        },
+        {
+          label: "选择匹配",
+          value: 41,
+          img: require("../../assets/icon/thirdToolList/select.png")
+        },
+        {
+          label: "排序",
+          value: 47,
+          img: require("../../assets/icon/fourthToolList/conSentences.png")
+        },
+        {
+          label: "个人评价",
+          value: 40,
+          img: require("../../assets/icon/secondToolList/eval.png")
+        },
+        {
+          label: "思维网格",
+          value: 7,
+          img: require("../../assets/icon/secondToolList/mindNetwork.png")
+        }
+      ],
+      studentWork: null,
+      testData: null,
+      testJson: null,
+      tool: null
+    };
+  },
+  methods: {
+    open({ work, testData, testJson, tool }) {
+      this.studentWork = work;
+      (this.testData = testData),
+        (this.testJson = testJson),
+        (this.tool = tool);
+      this.show = true;
+    },
+    close() {
+      this.show = false;
+      (this.studentWork = null),
+        (this.testData = null),
+        (this.testJson = null),
+        (this.tool = null);
+        this.$emit("close")
+    },
+    init() {
+      this.studentWork = null;
+    }
+  },
+  computed: {
+    userAnswer() {
+      let _result = [];
+
+      if (this.studentWork && this.tool) {
+        let _studentWorks = [41].includes(this.tool)
+          ? this.studentWork.works
+          : JSON.parse(this.studentWork.works);
+        if ([45].includes(this.tool)) {
+          let _answer = _studentWorks[0].anwer;
+          _result = _answer;
+        } else if ([48, 52].includes(this.tool)) {
+          let _answer = _studentWorks.text;
+          _result = _answer;
+        } else if ([15].includes(this.tool)) {
+          let _answer = _studentWorks[0].answer;
+          _result = _answer;
+        } else if ([41].includes(this.tool)) {
+          let _answer = _studentWorks.split(",");
+          _answer.forEach((item, index) => (_answer[index] = parseInt(item)));
+          _result = _answer;
+        } else if ([47].includes(this.tool)) {
+          let _answer = _studentWorks.map(i => i.chooseSenList);
+          _result = _answer;
+        }else if([40].includes(this.tool)){
+          _result = _studentWorks;
+        }
+      }
+
+      return _result;
+    }
+  }
+};
+</script>
+
+<style scoped>
+.studentWorkPreviewDialog {
+  width: 100vw;
+  height: 100vh;
+}
+
+.studentWorkPreviewDialog >>> .el-dialog__header,
+.studentWorkPreviewDialog >>> .el-dialog__footer {
+  display: none; /* 隐藏头部和底部 */
+}
+
+.studentWorkPreviewDialog >>> .el-dialog__body {
+  padding: 0;
+  margin: 0;
+  height: 100vh;
+  width: 100vw;
+  overflow: auto;
+}
+
+.s_body {
+  width: 100%;
+  height: 100%;
+  box-sizing: border-box;
+  padding: 25px;
+  background-color: #f3f7fd;
+}
+
+.s_b_main {
+  width: 100%;
+  height: 100%;
+  border-radius: 10px;
+  background-color: #fff;
+}
+
+.s_b_m_top {
+  width: 100%;
+  height: 70px;
+  display: flex;
+  justify-content: space-between;
+  align-items: center;
+  box-sizing: border-box;
+  padding: 0 30px;
+  font-size: 20px;
+}
+
+.s_b_m_top > span {
+  cursor: pointer;
+}
+
+.s_b_m_ti_title {
+  display: flex;
+  align-items: center;
+}
+
+.s_b_m_ti_title > span:nth-of-type(1) {
+  font-size: 30px;
+  font-weight: bold;
+  color: #3681fc;
+}
+
+.s_b_m_ti_title > svg {
+  width: 30px;
+  height: 30px;
+  margin: 0 20px 0 5px;
+}
+
+.s_b_m_ti_title > span:nth-of-type(2) {
+  font-size: 20px;
+  font-weight: bold;
+}
+
+.s_b_m_ti_title > div {
+  font-size: 30px;
+  font-weight: bold;
+}
+
+.s_b_m_content {
+  width: 100%;
+  overflow: auto;
+  height: calc(100% - 70px);
+  box-sizing: border-box;
+}
+
+.s_b_m_content > div {
+  width: 70%;
+  height: auto;
+  margin: 0 auto;
+  min-width: 1000px;
+  padding: 10px 0 30px 0px;
+}
+
+.s_b_m_toolItem {
+  width: 100%;
+  height: auto;
+  margin-bottom: 40px;
+}
+
+.s_b_m_ti_option {
+  width: 100%;
+  height: auto;
+  padding: 15px 15px 15px 15px;
+  display: flex;
+  flex-wrap: wrap;
+  background-color: #f3f7fd;
+  border-radius: 30px;
+  margin: 10px 0 10px 0px;
+  box-sizing: border-box;
+}
+
+.s_b_m_ti_option > span > img {
+  max-height: 150px;
+  border-radius: 2px;
+  cursor: pointer;
+}
+
+.s_b_m_ti_o_btn {
+  width: 20px;
+  height: 100%;
+  min-height: 20px;
+  display: flex;
+  justify-content: center;
+  align-items: center;
+  margin-right: 10px;
+}
+
+.s_b_m_ti_o_btn > span {
+  width: 20px;
+  height: 20px;
+  display: block;
+  box-sizing: border-box;
+  border: solid 1px #3681fc;
+  overflow: hidden;
+}
+
+.s_b_m_ti_o_btn > span > span {
+  width: 100%;
+  height: 100%;
+  display: flex;
+  justify-content: center;
+  align-items: center;
+  background-color: #3681fc;
+  position: relative;
+}
+
+.s_b_m_ti_o_btn1 {
+  border-radius: 50%;
+}
+
+.s_b_m_ti_o_btn1 > span::after {
+  content: "";
+  width: 8px;
+  height: 8px;
+  position: absolute;
+  background-color: #fff;
+  border-radius: 50%;
+}
+
+.s_b_m_ti_o_btn2 {
+  border-radius: 2px;
+}
+/*
+.s_b_m_ti_o_btn2 > span > svg {
+  width: 12px;
+  height: 12px;
+} */
+
+.s_b_m_ti_o_btn2 > span::after {
+  content: "";
+  width: 8px;
+  height: 8px;
+  position: absolute;
+  background-color: #fff;
+  /* border-radius: 50%; */
+}
+
+.s_b_m_ti_o_choice {
+  border: solid 1px #3681fc;
+}
+
+.s_b_m_tool48 >>> table {
+  border-top: solid 1px #ccc;
+  border-left: solid 1px #ccc;
+}
+
+.s_b_m_tool48 >>> table th {
+  border-bottom: 2px solid #ccc;
+  text-align: center;
+  height: 30px;
+  vertical-align: baseline;
+  border-right: 1px solid #ccc;
+  padding: 5px 10px;
+  max-width: 0;
+  box-sizing: border-box;
+  background-color: #f1f1f1;
+}
+
+.s_b_m_tool48 >>> table td {
+  border-bottom: 1px solid #ccc;
+  border-right: 1px solid #ccc;
+  padding: 5px 10px;
+  text-align: center;
+  height: 30px;
+  min-height: 30px;
+  vertical-align: baseline;
+  max-width: 0;
+  box-sizing: border-box;
+  background-color: #fff;
+}
+
+.s_b_m_ti_answer {
+  margin-top: 20px;
+  font-size: 20px;
+  color: #4078dd;
+}
+
+.s_b_m_tool41 {
+  display: flex;
+}
+
+.s_b_m_t_image {
+  width: calc(100% - 350px);
+  height: auto;
+}
+
+.s_b_m_t_image > img {
+  width: 95%;
+  height: auto;
+  object-fit: cover;
+}
+
+.s_b_m_t_select {
+  width: 350px;
+  display: flex;
+  flex-direction: column;
+  align-items: center;
+  height: auto;
+}
+
+.s_b_m_t_selectItem {
+  margin-bottom: 20px;
+}
+
+.s_b_m_sortItem {
+  margin-bottom: 30px;
+}
+
+.s_b_m_s_answer {
+  width: 100%;
+  height: auto;
+  padding-top: 30px;
+  padding-bottom: 30px;
+}
+
+.s_b_m_s_answer > span {
+  padding: 10px 35px;
+  border-radius: 8px;
+  margin-right: 20px;
+  border: solid 2px #a3c7f9;
+  font-size: 20px;
+  font-weight: bold;
+}
+
+.s_b_m_s_sortText {
+  font-size: 20px;
+}
+
+.s_s_b_m_s_rightOrError {
+  display: flex;
+  margin-top: 20px;
+}
+
+.s_s_b_m_s_rightOrError > div {
+  font-size: 18px;
+  display: flex;
+  align-items: center;
+}
+
+.s_s_b_m_s_rightOrError > div > img {
+  width: 25px;
+  height: 25px;
+  margin-right: 10px;
+}
+
+.s_b_m_t_rateItem{
+  width: 100%;
+  height: auto;
+  margin-bottom: 30px;
+  font-size: 18px;
+}
+
+.s_b_m_t_rateItem>div{
+  display: flex;
+  align-items: center;
+  margin-bottom: 25px;
+}
+
+
+.s_b_m_t_rateItem>div>>> .el-rate {
+  height: 30px;
+}
+
+
+.s_b_m_t_rateItem>div>>> .el-rate__icon{
+  font-size: 28px;
+}
+
+.s_b_m_t_rateItem>div>span{
+  margin-right: 20px;
+}
+
+.s_b_m_t_rateItem>span{
+  padding: 10px 30px;
+  background-color: #F7F6F9;
+  border-radius: 8px;
+  font-size: 18px;
+}
+
+.s_b_m_t_rateText{
+  margin-top: 20px;
+  min-width: 200px;
+  min-height: 100px;
+  height: auto;
+  width: auto;
+  padding: 10px 10px;
+  border: solid 1px #D0D0D2;
+  background-color: #F7F6F9;
+}
+</style>

+ 3 - 3
src/components/easy2/commpont/markDialog.vue

@@ -1713,8 +1713,7 @@ export default {
   height: 100%;
 }
 .left {
-  /* overflow: auto; */
-  width: 310px;
+  width: 316px;
   /* border-right: 1px rgba(231, 231, 231, 1) solid; */
   padding: 20px 20px 0;
   box-sizing: border-box;
@@ -1739,8 +1738,9 @@ export default {
   margin-bottom: 5px;
 }
 .AreaCss >>> .el-textarea__inner {
+  /* height: 150px !important; */
   min-height: 150px !important;
-  /* max-height: 150px; */
+  max-height: 350px !important;
   color: #606266;
   padding-bottom: 20px;
 }

+ 314 - 56
src/components/easy2/studyStudent.vue

@@ -1,13 +1,14 @@
 <template>
-  <div class="pb_content" style="overflow: unset">
+  <div class="pb_content" style="height: 100%;overflow: unset;">
     <div
       class="pb_content_body"
       style="
         display: flex;
-        height: 900px;
+        height: 100%;
         position: relative;
         padding: 20px 0 20px 20px;
         box-sizing: border-box;
+        overflow: auto;
       "
     >
       <!-- <div class="btnAllNT">
@@ -279,10 +280,10 @@
             width: mlDialog
               ? 'calc(100% - ' +
                 `${!['2'].includes(tType) ? classRoomHelperWidth : '10px'}` +
-                ' - 20% - 40px)'
+                ' - 20% - 47px)'
               : 'calc(100% - ' +
                 `${!['2'].includes(tType) ? classRoomHelperWidth : '10px'}` +
-                ' - 10px)',
+                ' - 18px)',
             left: mlDialog ? 'calc(20% + 35px)' : '10px'
           }"
         >
@@ -1019,6 +1020,10 @@
                               @click="addTools(tooC, toolIndex, taskCount)"
                             />
                             <div style="margin: 5px 0">电子白板</div>
+                            <div class="upload_toolBtn" v-if="tType==='1'" @click="openChoseWorksDetailDialog(tooC,toolIndex,taskCount,1)"
+                            style="position: absolute;right: 33px;top: -30px;">
+                              投影
+                            </div>
                           </div>
                           <div v-if="tooC == 3">
                             <img
@@ -1027,6 +1032,10 @@
                               @click="addTools(tooC, toolIndex, taskCount)"
                             />
                             <div style="margin: 5px 0">思维导图</div>
+                            <div class="upload_toolBtn" v-if="tType==='1'" @click="openChoseWorksDetailDialog(tooC,toolIndex,taskCount,3)"
+                            style="position: absolute;right: 33px;top: -30px;">
+                              投影
+                            </div>
                           </div>
                           <div v-if="tooC == 6">
                             <img
@@ -1043,9 +1052,10 @@
                               @click="addTools(tooC, toolIndex, taskCount)"
                             />
                             <div style="margin: 5px 0">思维网格</div>
-														<div class="upload_toolBtn" v-if="tType==='1' && worksStudent[toolIndex].length>0" @click="openChoseWorksDetailDialog(tooC,toolIndex,taskCount,7)"
+                            <!-- && worksStudent[toolIndex].length>0 -->
+														<div class="upload_toolBtn" v-if="tType==='1' " @click="openChoseWorksDetailDialog(tooC,toolIndex,taskCount,7)"
                               style="position: absolute;right: 33px;top: -30px;">
-                              作业详细
+                              投影
                             </div>
                           </div>
                           <div v-if="tooC == 8">
@@ -1105,8 +1115,7 @@
                             <div
                               class="upload_toolBtn"
                               v-if="
-                                tType === '1' &&
-                                  worksStudent[toolIndex].length > 0
+                                tType === '1'
                               "
                               @click="
                                 openChoseWorksDetailDialog(
@@ -1118,7 +1127,7 @@
                               "
                               style="position: absolute;right: 33px;top: -30px;"
                             >
-                              作业详细
+                            投影
                             </div>
                           </div>
                           <!-- <div v-if="tooC == 5">
@@ -1144,9 +1153,9 @@
                               alt
                             />
                             <div style="margin: 5px 0">问答</div>
-														<div class="upload_toolBtn" v-if="tType==='1' && worksStudent[toolIndex].length>0" @click="openChoseWorksDetailDialog(tooC,toolIndex,taskCount,15)"
+														<div class="upload_toolBtn" v-if="tType==='1'" @click="openChoseWorksDetailDialog(tooC,toolIndex,taskCount,15)"
                               style="position: absolute;right: 135px;top: -45px;height: 40px;display: flex;align-items: center;justify-content: center;background: #409EFF;">
-                              作业详细
+                              投影
                             </div>
                           </div>
                           <div v-if="tooC == 26">
@@ -1282,9 +1291,9 @@
                               alt
                             />
                             <div style="margin: 5px 0">个人评价</div>
-														<div class="upload_toolBtn" v-if="tType==='1' && worksStudent[toolIndex].length>0" @click="openChoseWorksDetailDialog(tooC,toolIndex,taskCount,40)"
+														<div class="upload_toolBtn" v-if="tType==='1' " @click="openChoseWorksDetailDialog(tooC,toolIndex,taskCount,40)"
                               style="position: absolute;right: 33px;top: -30px;">
-                              作业详细
+                              投影
                             </div>
                           </div>
                           <div v-if="tooC == 41">
@@ -1294,9 +1303,9 @@
                               alt
                             />
                             <div style="margin: 5px 0">选择匹配</div>
-														<div class="upload_toolBtn" v-if="tType==='1' && worksStudent[toolIndex].length>0" @click="openChoseWorksDetailDialog(tooC,toolIndex,taskCount,41)"
+														<div class="upload_toolBtn" v-if="tType==='1'" @click="openChoseWorksDetailDialog(tooC,toolIndex,taskCount,41)"
                               style="position: absolute;right: 33px;top: -30px;">
-                              作业详细
+                              投影
                             </div>
                           </div>
                           <div v-if="tooC == 44">
@@ -1314,9 +1323,9 @@
                               alt
                             />
                             <div style="margin: 5px 0">排序</div>
-														<div class="upload_toolBtn" v-if="tType==='1' && worksStudent[toolIndex].length>0" @click="openChoseWorksDetailDialog(tooC,toolIndex,taskCount,47)"
+														<div class="upload_toolBtn" v-if="tType==='1'" @click="openChoseWorksDetailDialog(tooC,toolIndex,taskCount,47)"
                               style="position: absolute;right: 33px;top: -30px;">
-                              作业详细
+                              投影
                             </div>
                           </div>
                           <div v-if="tooC == 48">
@@ -1326,9 +1335,9 @@
                               alt
                             />
                             <div style="margin: 5px 0">表格</div>
-														<div class="upload_toolBtn" v-if="tType==='1' && worksStudent[toolIndex].length>0" @click="openChoseWorksDetailDialog(tooC,toolIndex,taskCount,48)"
+														<div class="upload_toolBtn" v-if="tType==='1' " @click="openChoseWorksDetailDialog(tooC,toolIndex,taskCount,48)"
                               style="position: absolute;right: 33px;top: -30px;">
-                              作业详细
+                              投影
                             </div>
                           </div>
                           <div v-if="tooC == 52">
@@ -1338,9 +1347,9 @@
                               alt
                             />
                             <div style="margin: 5px 0">文档</div>
-														<div class="upload_toolBtn" v-if="tType==='1' && worksStudent[toolIndex].length>0" @click="openChoseWorksDetailDialog(tooC,toolIndex,taskCount,52)"
+														<div class="upload_toolBtn" v-if="tType==='1'" @click="openChoseWorksDetailDialog(tooC,toolIndex,taskCount,52)"
                               style="position: absolute;right: 33px;top: -30px;">
-                              作业详细
+                              投影
                             </div>
                           </div>
                           <div v-if="tooC == 49">
@@ -1350,6 +1359,10 @@
                               alt
                             />
                             <div style="margin: 5px 0">学生分组</div>
+                            <div class="upload_toolBtn" v-if="tType==='1'" @click="openChoseWorksDetailDialog(tooC,toolIndex,taskCount,49)"
+                              style="position: absolute;right: 33px;top: -30px;">
+                              投影
+                            </div>
                           </div>
                           <div v-if="tooC == 57">
                             <img
@@ -9514,7 +9527,7 @@
                                     w.ateacher == userid,
                                 }"
                               >
-                                {{ AIloading[toolIndex][wIndex].sco ? AIloading[toolIndex][wIndex].sco :'评分'}}    
+                                {{ AIloading[toolIndex][wIndex].sco ? AIloading[toolIndex][wIndex].sco :'评分'}}
                             </div> -->
 
                             <!-- @show="handleShow(toolIndex,wIndex)"
@@ -13180,14 +13193,12 @@
       </div>
     </el-dialog>
     <el-dialog
-      title="查看文档"
       :visible.sync="fullDialogVisible"
       :append-to-body="true"
       width="100%"
       :before-close="handleClose"
       :show-close="false"
-      class="dialog_diy full_diy"
-      :class="{ full_diy2: fulltype == 3 }"
+      :class="['dialog_diy','full_diy', fulltype == 3 ? 'full_diy2' : '', (splitScreenData.isOpen && (splitScreenData.uid != splitScreenData.myUid)) ? 'dialog_diyCopy' : ''] "
     >
       <div slot="title" class="header-title">
         <div style="color: #fff">查看文档</div>
@@ -13209,7 +13220,27 @@
           退出全屏
         </div>
       </div>
-      <div style="height: 100%">
+      <div style="height: 100%;position: relative;">
+        <el-button
+          v-if="(splitScreenData.isOpen && (splitScreenData.uid != splitScreenData.myUid))"
+          size="medium" 
+          type="primary"
+          @click="
+            () => {
+              (fullDialogVisible = false),
+                changeSplitScreenBehavior({ code: 99 });
+            }
+          "
+          style="
+            cursor: pointer;
+            position: absolute;
+            top: 10px;
+            right: 20px;
+            color: #fff;
+          "
+        >
+          退出全屏
+        </el-button>
         <div
           class="wheel"
           v-if="
@@ -14678,7 +14709,7 @@
           <!-- <el-input v-model="groupJson.number" placeholder="2-10人以内"
             style="width: 150px; margin: 10px 10px 0 0"></el-input> -->
           <el-input
-            v-model="groupJson.number"
+            v-model="groupJson2.number"
             style="width: 150px"
             placeholder="请输入2-10的数字"
             @change="numberPan"
@@ -15450,6 +15481,27 @@
 			@openScore="openScore"
       @changeSplitScreenBehavior="changeSplitScreenBehavior"
     />
+    <el-dialog
+      :visible.sync="confirmOpenDig"
+      width="500px"
+      :modal="false"
+      class="confirmOpenDigCss dialog_diyCopy"
+      :before-close="handleClose">
+      <div style="display: flex;align-items: center;">
+        <img src="../../assets/icon/course/confirmOpenDig.svg" alt="">
+        <span>“{{ courseDetail.title }}”开课啦</span>
+      </div>
+      <div style="margin: 20px 0 35px;">
+        <div style="margin-bottom: 10px;">接下来你将跟随老师一起开始今天的学习! </div>
+        <div>要认真听讲哦~</div>
+      </div>
+      
+
+      <div style="text-align: center;">
+        <el-button type="primary" style="width: 95%;" @click="confirmOpen">开始学习</el-button>
+      </div>
+   
+    </el-dialog>
   </div>
 </template>
 
@@ -15493,7 +15545,11 @@ import evaTable from "./commpont/evaTable";
 import { v4 as uuidv4 } from "uuid";
 import statisticalAnalysis from "../components/statisticalAnalysis.vue";
 import choseWorksDetailDialog from "../components/choseWorksDetailDialog.vue";
-
+var OpenCC = require("opencc-js");
+let converter = OpenCC.Converter({
+  from: "hk",
+  to: "cn"
+});
 const getFile = url => {
   return new Promise((resolve, reject) => {
     var credentials = {
@@ -15858,6 +15914,7 @@ export default {
       isHovered2: false,
       commentTagShow: 0,
       timer: null,
+      timer2: null,
       opertimer: null,
       showType: 0,
       fileType: 0,
@@ -15983,7 +16040,9 @@ export default {
         myUid: "",
         loading: false,
         behavior: null
-      }
+      },
+      confirmOpenDig:false,
+      confirmOpenDigData:''
     };
   },
   methods: {
@@ -16295,7 +16354,7 @@ export default {
         #评分资料#
         评价标准:${std}
         评价细则:${laws}
-        作业内容:${_fileid ? "上传的文件内容" : JSON.parse(con[i].works).text} 
+        作业内容:${_fileid ? "上传的文件内容" : JSON.parse(con[i].works).text}
         任务描述:${taskDetail}
         工具描述:${toolDetail}
 
@@ -16373,15 +16432,15 @@ export default {
         }
 
         # Format example
-        == 
+        ==
         0 星,作业内容与作业要求无关;
         1 星,没有识别问题和需求;
         2 星,问题或需求没有被清晰理解或准确识别;
         3 星,问题或需求的一部分被识别;
         4 星,问题或需求的大部分被识别;
-        5 星,问题或需求都被识别。 
+        5 星,问题或需求都被识别。
         ==
-        
+
         `;
 
       let params = {
@@ -16867,6 +16926,7 @@ export default {
         this.courseType = i;
         // this.navId = l;
         this.taskCount = j;
+        this.changeSplitScreenBehavior({form:{courseType:this.courseType,taskCount:this.taskCount,toolType:k}})
         this.selectPz();
         this.getHomeWork();
         this.getCourseDetail(2);
@@ -16902,9 +16962,6 @@ export default {
           );
         }
       }
-
-      // var b = this.$refs["bz" + k][0];
-      // a.scrollTop = b.offsetTop;
     },
     addTools2(i) {
       if (i == 4) {
@@ -20585,6 +20642,7 @@ export default {
       this.courseType = s;
       this.navId = i;
       this.taskCount = n;
+      this.changeSplitScreenBehavior({form:{courseType:this.courseType,taskCount:this.taskCount}})
       this.navList[this.courseType].task[this.taskCount].isOpen = !this.navList[
         this.courseType
       ].task[this.taskCount].isOpen;
@@ -20825,6 +20883,16 @@ export default {
               this.fileC[i] = c.filter(el => {
                 return el.type == 12;
               });
+              if (this.tType == 2) {
+                if (this.fileC[i].length) {
+                  let yym1 =  this.fileC[i].filter(e=>{
+                    if(!converter(e.name).includes(converter("教案"))){
+                      return e
+                    }
+                  })
+                  this.fileC[i] = yym1
+                }
+              }
               // else if (c[j].type == 12) {
               //     this.fileC[i].push(c[j]);
               //   }
@@ -20952,7 +21020,19 @@ export default {
               this.isClickNav = "";
               this.showType = "";
             }
-
+            if (this.tType == 2) {
+              _chapterData.forEach((e,i)=>{
+                if (e.length) {
+                  let yym =  e.filter(k=>{
+                    if(!converter(k.name).includes(converter("教案"))){
+                      return k
+                    }
+                  })
+                  _chapterData[i] = yym
+                }
+              })
+            }
+            
             this.vChapterData = _chapterData;
           } else {
             this.showType = 0;
@@ -21007,6 +21087,17 @@ export default {
               this.fileC[i] = c.filter(el => {
                 return el.type == 12;
               });
+
+              if (this.tType == 2) {
+                if (this.fileC[i].length) {
+                  let yym1 =  this.fileC[i].filter(e=>{
+                    if(!converter(e.name).includes(converter("教案"))){
+                      return e
+                    }
+                  })
+                  this.fileC[i] = yym1
+                }
+              }
               for (var j = 0; j < c.length; j++) {
                 if (c[j].type == 7) {
                   this.chapToolList[i].push(c[j]);
@@ -21094,7 +21185,18 @@ export default {
               this.isClickNav = "";
               this.showType = "";
             }
-
+            if (this.tType == 2) {
+              _chapterData.forEach((e,i)=>{
+                if (e.length) {
+                  let yym =  e.filter(k=>{
+                    if(!converter(k.name).includes(converter("教案"))){
+                      return k
+                    }
+                  })
+                  _chapterData[i] = yym
+                }
+              })
+            }
             this.vChapterData = _chapterData;
             this.$forceUpdate();
           }
@@ -21212,7 +21314,7 @@ export default {
             _this.selectStudent();
             _this.selectSLook();
             _this.getPick();
-            _this.getSplitScreenData();
+            // _this.getSplitScreenData();
             if (_this.courseDetail.userid == _this.userid && _this.IsFollow) {
               _this.setCTask();
             }
@@ -21227,6 +21329,11 @@ export default {
               _this.selectPz();
             }
           }, 5000);
+          if (_this.timer2 == null) {
+            _this.timer2 = setInterval(()=> {
+              _this.getSplitScreenData();//获取分屏数据
+            },  5000);
+          }
           _this.$nextTick(function() {
             setTimeout(() => {
               // var a =
@@ -21634,8 +21741,8 @@ export default {
           } else {
             this.getCourseState(1);
           }
-
-					if ((this.IsFollow && this.tType == 2) || (this.splitScreenData.isOpen && this.splitScreenData.uid != this.splitScreenData.myUid)) {
+          //  || (this.splitScreenData.isOpen && this.splitScreenData.uid != this.splitScreenData.myUid)
+					if ((this.IsFollow && this.tType == 2)) {
             this.setContent2(false);
             let _followC = res.data[0][0].followC.split("-");
             if (
@@ -23304,7 +23411,7 @@ export default {
           "https://view.officeapps.live.com/op/view.aspx?src=" +
           encodeURIComponent(_uuurl);
       }
-      this.changeSplitScreenBehavior({ code: 0, form: [t, f] });
+      this.changeSplitScreenBehavior({code:0,form:{t:t,f:f}})
     },
     openSname(n, id, i, uid) {
       this.snameWid = id;
@@ -24575,6 +24682,7 @@ export default {
           this.$message.success("已开启分屏");
           this.studentFreePreview(true);
           this.OpenJobPreview(true);
+          this.changeSplitScreenBehavior({form:{}})
           // this.followingMode(true);
         } else {
           this.splitScreenData.isOpen = false;
@@ -24585,6 +24693,49 @@ export default {
         }
       }
     },
+    enterFullScreen() {
+      let element = document.documentElement;
+      if (element.requestFullscreen) {
+        element.requestFullscreen();
+      } else if (element.mozRequestFullScreen) { /* Firefox */
+        element.mozRequestFullScreen();
+      } else if (element.webkitRequestFullscreen) { /* Chrome, Safari & Opera */
+        element.webkitRequestFullscreen();
+      } else if (element.msRequestFullscreen) { /* IE/Edge */
+        element.msRequestFullscreen();
+      }
+    },
+    exitFullScreen() {
+      if (document.exitFullscreen) {
+        document.exitFullscreen();
+      } else if (document.mozCancelFullScreen) { /* Firefox */
+        document.mozCancelFullScreen();
+      } else if (document.webkitExitFullscreen) { /* Chrome, Safari and Opera */
+        document.webkitExitFullscreen();
+      } else if (document.msExitFullscreen) { /* IE/Edge */
+        document.msExitFullscreen();
+      }
+    },
+    confirmOpen(){
+      this.splitScreenData.isOpen = true;
+      this.splitScreenData.uid = this.confirmOpenDigData.uid;
+      this.splitScreenData.userId = this.confirmOpenDigData.userId;
+      this.splitScreenData.behavior = this.confirmOpenDigData.behavior;
+      this.confirmOpenDig = false
+      if (!document.fullscreenElement) {
+        this.enterFullScreen();
+      } 
+      if (this.timer2) {
+        clearInterval(this.timer2);
+        this.timer2 = null;
+        console.log('清除定时器');
+        
+      } 
+      this.timer2 = setInterval(()=> {
+        this.getSplitScreenData();//获取分屏数据
+      }, 1000);
+      this.$message.success("分屏模式已开启");
+    },
     getSplitScreenData() {
       // return;
       if (this.tType != 1) return;
@@ -24609,11 +24760,9 @@ export default {
               this.splitScreenData.behavior = null;
               await this.updateSplitScreenData(1);
             } else if (!this.splitScreenData.isOpen && data.isOpen) {
-              this.splitScreenData.isOpen = true;
-              this.splitScreenData.uid = data.uid;
-              this.splitScreenData.userId = data.userId;
-              this.splitScreenData.behavior = data.behavior;
-              this.$message.success("分屏模式已开启");
+              this.confirmOpenDig = true
+              this.confirmOpenDigData = data
+             
             } else if (this.splitScreenData.isOpen && !data.isOpen) {
               this.splitScreenData.isOpen = false;
               this.splitScreenData.userId = "";
@@ -24635,6 +24784,26 @@ export default {
               this.splitScreenData.uid = "";
               this.splitScreenData.behavior = null;
               this.$message.error("已结束分屏模式");
+              if (this.timer2) {
+                clearInterval(this.timer2);
+                this.timer2 = null;
+              }
+              this.timer2 = setInterval(()=> {
+                this.getSplitScreenData();//获取分屏数据
+              }, 5000);
+              this.$confirm("教师已结束分屏,确定后自由预览。", "提示", {
+                confirmButtonText: '确定', //确认按钮的文字
+                showCancelButton: false, //是否显示取消按钮
+                showClose: false, //是否显示关闭按钮
+                closeOnClickModal: false, //是否可以通过点击空白处关闭弹窗
+                type: "warning",
+              })
+                .then(() => {
+                  if (document.fullscreenElement) {
+                      this.exitFullScreen();
+                  } 
+                })
+                .catch(() => {});
             }
           }
         })
@@ -24651,17 +24820,21 @@ export default {
         if (behavior) {
           if (behavior.code === 99) {
             //初始化
-            this.fullDialogVisible = false;
+            this.fullDialogVisible = false;             
 						if(this.$refs.choseWorksDetailDialogRef.show){
 							this.$refs.choseWorksDetailDialogRef.close();
 						}
 						if(this.$refs.statisticalAnalysisRef.show){
 							this.$refs.statisticalAnalysisRef.close();
 						}
-          } else if (behavior.code === 0) {
+          }
+           if (behavior.code === 0) {
             //开启内容列表弹窗
-            this.checkFileFull1(behavior.form[0], behavior.form[1]);
-          } else if (behavior.code === 1) {
+            this.checkFileFull1(behavior.form.t, behavior.form.f);
+            }else{
+              this.fullDialogVisible = false;         
+            }
+           if (behavior.code === 1) {
             //关于选择题的作业详细的操作
             // toolIndex:toolIndex,courseType:this.courseType,taskCount:this.taskCount,type:0
             if(this.courseType!==behavior.form.courseType || this.taskCount!==behavior.form.taskCount){
@@ -24671,12 +24844,15 @@ export default {
             this.$nextTick(() => {
 							if (this.$refs.choseWorksDetailDialogRef.show) {
                 //已经打开了
-								this.$refs.choseWorksDetailDialogRef.splitScreenFn({toolType:behavior.form.toolType,type:behavior.form.type,showStatisticsType:behavior.form.showStatisticsType})
+								this.$refs.choseWorksDetailDialogRef.splitScreenFn({toolType:behavior.form.toolType,type:behavior.form.type,showStatisticsType:behavior.form.showStatisticsType,lookWorks:behavior.form.lookWorks})
               } else {
-								this.$refs.choseWorksDetailDialogRef.open({toolType:behavior.form.toolType,toolIndex:behavior.form.toolIndex,tType: this.tType,})
+								this.$refs.choseWorksDetailDialogRef.open({toolType:behavior.form.toolType,toolIndex:behavior.form.toolIndex,tType: this.tType,lookWorks:behavior.form.lookWorks})
               }
             });
-          }else if(behavior.code === 2){
+          }else{
+            this.$refs.choseWorksDetailDialogRef.close()
+          }
+           if(behavior.code === 2){
 						if(this.$refs.statisticalAnalysisRef.show){
 							this.$refs.statisticalAnalysisRef.splitScreenFn({type:behavior.form.type})
 						}else{
@@ -24686,7 +24862,42 @@ export default {
       				  toolIndex: behavior.form.toolIndex
       				});
 						}
-					}
+					}else{
+            this.$refs.statisticalAnalysisRef.close();
+          }
+          if(behavior.form.taskCount!=="" && behavior.form.courseType !==""){
+
+            let oldData = [parseInt(this.courseType),parseInt(this.taskCount)]
+            let newData = [parseInt(behavior.form.courseType),parseInt(behavior.form.taskCount)]
+
+            if(this.courseType !=behavior.form.courseType){
+              this.courseType = behavior.form.courseType;
+            }
+            if(this.taskCount !=behavior.form.taskCount){
+              this.taskCount = behavior.form.taskCount;
+            }
+
+              var a = document.scrollingElement;
+                let target = document.querySelector(`#gj${behavior.form.toolType}`);
+                if (target) {
+                  target.scrollIntoView(true);
+                  setTimeout(() => {
+                    a.scrollTop = 0
+                  }, 0);
+                }
+
+            // if(behavior.form.navId){
+            //   this.navId = behavior.form.navId
+            // }
+            // console.log("分屏阶段和任务",JSON.stringify(oldData),JSON.stringify(newData))
+            if(JSON.stringify(oldData)!=JSON.stringify(newData)){
+              // console.log("分屏测试====",JSON.stringify(oldData),JSON.stringify(newData))
+              this.getCourseDetail()
+              
+            }
+            this.setContent2(false)
+            
+          }
         } else {
         }
       }
@@ -24755,7 +24966,22 @@ export default {
         this.splitScreenData.isOpen &&
         this.splitScreenData.uid == this.splitScreenData.myUid
       ) {
-        this.splitScreenData.behavior = newValue;
+        let _behavior = null;
+        if(!newValue){
+          _behavior = {}
+        }else{
+          _behavior = newValue
+        }
+        if(_behavior.form){
+          _behavior.form.taskCount = this.taskCount;
+          _behavior.form.courseType = this.courseType
+        }else{
+          _behavior.form = {
+            taskCount:this.taskCount,
+            courseType:this.courseType
+          }
+        }
+        this.splitScreenData.behavior = _behavior;
         this.updateSplitScreenData(0);
       }
     },
@@ -24812,7 +25038,11 @@ export default {
   beforeDestroy() {
     window.onresize = null;
     clearInterval(this.timer);
+    clearInterval(this.timer2);
+
     this.timer = null;
+    this.timer2 = null;
+
     clearInterval(this.opertimer);
     this.opertimer = null;
     this.updateSplitScreenData(1);
@@ -25213,6 +25443,8 @@ export default {
   width: 100%;
   height: auto;
   padding-bottom: 20px;
+  margin-left: 2px;
+  min-height: 90%;
 }
 
 .study_top .checkbox {
@@ -26097,7 +26329,29 @@ export default {
 .binfo_input:focus-visible {
   border: 1px solid rgba(61, 103, 188);
 }
+.dialog_diyCopy >>> .el-dialog__header {
+  display: none !important;
+}
+.dialog_diyCopy >>> .el-dialog__body {
+  padding: 0 !important;
+  height: 100% !important;
+}
 
+.confirmOpenDigCss > div{
+  font-size: 14px;
+  color: rgba(0, 0, 0, 0.6);
+}
+.confirmOpenDigCss >>> .el-dialog{
+  border-radius: 6px;
+}
+.confirmOpenDigCss >>> .el-dialog__body{
+  padding: 25px !important;
+}
+.confirmOpenDigCss > span{
+  font-size: 16px;
+  font-weight: 600;
+  color: rgba(0, 0, 0, 0.8);
+}
 .dialog_diy >>> .el-dialog__header,
 .dialog_diy1 >>> .el-dialog__header {
   background: #454545 !important;
@@ -29485,4 +29739,8 @@ ol {
   color: #fff;
   cursor: pointer;
 }
+div::-webkit-scrollbar {
+    width: 10px;
+    height: 6px;
+}
 </style>

+ 368 - 111
src/components/easy3/studyStudent.vue

@@ -1,13 +1,14 @@
 <template>
-  <div class="pb_content" style="overflow: unset">
+  <div class="pb_content" style="height: 100%;overflow: unset;">
     <div
       class="pb_content_body"
       style="
         display: flex;
-        height: 900px;
+        height: 100%;
         position: relative;
         padding: 20px 0 20px 20px;
         box-sizing: border-box;
+        overflow: auto;
       "
     >
       <!-- <div class="btnAllNT">
@@ -226,7 +227,7 @@
       </div>
       <div class="body_student" :style="{width: mlDialog ? 'calc(100% - '+`${!['2'].includes(tType)?classRoomHelperWidth:'10px'}`+' - 20% - 40px)' : 'calc(100% - '+`${!['2'].includes(tType)?classRoomHelperWidth:'10px'}`+' - 10px)', left: mlDialog ? 'calc(20% + 35px)' : '10px' }">
         <div class="new_topFixed" :style="{width: mlDialog ? 'calc(100% - '+`${!['2'].includes(tType)?classRoomHelperWidth:'10px'}`+' - 20% - 40px)' : 'calc(100% - '+`${!['2'].includes(tType)?classRoomHelperWidth:'10px'}`+' - 10px)', left: mlDialog ? 'calc(20% + 35px)' : '10px' }"></div>
-        <div class="new_top" :style="{width: mlDialog ? 'calc(100% - '+`${!['2'].includes(tType)?classRoomHelperWidth:'10px'}`+' - 20% - 40px)' : 'calc(100% - '+`${!['2'].includes(tType)?classRoomHelperWidth:'10px'}`+' - 10px)', left: mlDialog ? 'calc(20% + 35px)' : '10px' }">
+        <div class="new_top" :style="{width: mlDialog ? 'calc(100% - '+`${!['2'].includes(tType)?classRoomHelperWidth:'10px'}`+' - 20% - 47px)' : 'calc(100% - '+`${!['2'].includes(tType)?classRoomHelperWidth:'10px'}`+' - 18px)', left: mlDialog ? 'calc(20% + 35px)' : '10px' }">
           <div class="courseIndex" :style="{width: (orgArray.includes(org) || oidArray.includes(oid)) && !['2'].includes(tType) ? '100%' : 'calc(100% - 745px)'}">
             <div>任务{{ taskCount + 1 }}</div>
             <el-tooltip
@@ -972,6 +973,10 @@
                               @click="addTools(tooC, toolIndex, taskCount)"
                             />
                             <div style="margin: 5px 0">电子白板</div>
+                            <div class="upload_toolBtn" v-if="tType==='1'" @click="openChoseWorksDetailDialog(tooC,toolIndex,taskCount,1)"
+                            style="position: absolute;right: 33px;top: -30px;">
+                              投影
+                            </div>
                           </div>
                           <div v-if="tooC == 3">
                             <img
@@ -980,6 +985,10 @@
                               @click="addTools(tooC, toolIndex, taskCount)"
                             />
                             <div style="margin: 5px 0">思维导图</div>
+                            <div class="upload_toolBtn" v-if="tType==='1'" @click="openChoseWorksDetailDialog(tooC,toolIndex,taskCount,3)"
+                            style="position: absolute;right: 33px;top: -30px;">
+                              投影
+                            </div>
                           </div>
                           <div v-if="tooC == 6">
                             <img
@@ -996,9 +1005,10 @@
                               @click="addTools(tooC, toolIndex, taskCount)"
                             />
                             <div style="margin: 5px 0">思维网格</div>
-														<div class="upload_toolBtn" v-if="tType==='1' && worksStudent[toolIndex].length>0" @click="openChoseWorksDetailDialog(tooC,toolIndex,taskCount,7)"
+                            <!-- && worksStudent[toolIndex].length>0 -->
+														<div class="upload_toolBtn" v-if="tType==='1' " @click="openChoseWorksDetailDialog(tooC,toolIndex,taskCount,7)"
                               style="position: absolute;right: 33px;top: -30px;">
-                              作业详细
+                              投影
                             </div>
                           </div>
                           <div v-if="tooC == 8">
@@ -1045,9 +1055,9 @@
                             />
                             <div style="margin: 5px 0">选择题</div>
 
-														<div class="upload_toolBtn" v-if="tType==='1' && worksStudent[toolIndex].length>0" @click="openChoseWorksDetailDialog(tooC,toolIndex,taskCount,45)"
+														<div class="upload_toolBtn" v-if="tType==='1' " @click="openChoseWorksDetailDialog(tooC,toolIndex,taskCount,45)"
                               style="position: absolute;right: 33px;top: -30px;">
-                              作业详细
+                              投影
                             </div>
                           </div>
                           <!-- <div v-if="tooC == 5">
@@ -1074,9 +1084,9 @@
                             />
                             <div style="margin: 5px 0">问答</div>
 
-														<div class="upload_toolBtn" v-if="tType==='1' && worksStudent[toolIndex].length>0" @click="openChoseWorksDetailDialog(tooC,toolIndex,taskCount,15)"
+														<div class="upload_toolBtn" v-if="tType==='1' " @click="openChoseWorksDetailDialog(tooC,toolIndex,taskCount,15)"
                               style="position: absolute;right: 135px;top: -45px;height: 40px;display: flex;align-items: center;justify-content: center;background: #409EFF;">
-                              作业详细
+                              投影
                             </div>
                           </div>
                           <div v-if="tooC == 26">
@@ -1212,9 +1222,9 @@
                               alt
                             />
                             <div style="margin: 5px 0">个人评价</div>
-														<div class="upload_toolBtn" v-if="tType==='1' && worksStudent[toolIndex].length>0" @click="openChoseWorksDetailDialog(tooC,toolIndex,taskCount,40)"
+														<div class="upload_toolBtn" v-if="tType==='1'" @click="openChoseWorksDetailDialog(tooC,toolIndex,taskCount,40)"
                               style="position: absolute;right: 33px;top: -30px;">
-                              作业详细
+                              投影
                             </div>
                           </div>
                           <div v-if="tooC == 41">
@@ -1224,9 +1234,9 @@
                               alt
                             />
                             <div style="margin: 5px 0">选择匹配</div>
-														<div class="upload_toolBtn" v-if="tType==='1' && worksStudent[toolIndex].length>0" @click="openChoseWorksDetailDialog(tooC,toolIndex,taskCount,41)"
+														<div class="upload_toolBtn" v-if="tType==='1'" @click="openChoseWorksDetailDialog(tooC,toolIndex,taskCount,41)"
                               style="position: absolute;right: 33px;top: -30px;">
-                              作业详细
+                              投影
                             </div>
                           </div>
                           <div v-if="tooC == 44">
@@ -1244,9 +1254,9 @@
                               alt
                             />
                             <div style="margin: 5px 0">排序</div>
-														<div class="upload_toolBtn" v-if="tType==='1' && worksStudent[toolIndex].length>0" @click="openChoseWorksDetailDialog(tooC,toolIndex,taskCount,47)"
+														<div class="upload_toolBtn" v-if="tType==='1'" @click="openChoseWorksDetailDialog(tooC,toolIndex,taskCount,47)"
                               style="position: absolute;right: 33px;top: -30px;">
-                              作业详细
+                              投影
                             </div>
                           </div>
                           <div v-if="tooC == 48">
@@ -1256,9 +1266,9 @@
                               alt
                             />
                             <div style="margin: 5px 0">表格</div>
-														<div class="upload_toolBtn" v-if="tType==='1' && worksStudent[toolIndex].length>0" @click="openChoseWorksDetailDialog(tooC,toolIndex,taskCount,48)"
+														<div class="upload_toolBtn" v-if="tType==='1'" @click="openChoseWorksDetailDialog(tooC,toolIndex,taskCount,48)"
                               style="position: absolute;right: 33px;top: -30px;">
-                              作业详细
+                              投影
                             </div>
                           </div>
                           <div v-if="tooC == 52">
@@ -1268,9 +1278,9 @@
                               alt
                             />
                             <div style="margin: 5px 0">文档</div>
-														<div class="upload_toolBtn" v-if="tType==='1' && worksStudent[toolIndex].length>0" @click="openChoseWorksDetailDialog(tooC,toolIndex,taskCount,52)"
+														<div class="upload_toolBtn" v-if="tType==='1'" @click="openChoseWorksDetailDialog(tooC,toolIndex,taskCount,52)"
                               style="position: absolute;right: 33px;top: -30px;">
-                              作业详细
+                              投影
                             </div>
                           </div>
                           <div v-if="tooC == 49">
@@ -1280,6 +1290,10 @@
                               alt
                             />
                             <div style="margin: 5px 0">学生分组</div>
+                            <div class="upload_toolBtn" v-if="tType==='1'" @click="openChoseWorksDetailDialog(tooC,toolIndex,taskCount,49)"
+                              style="position: absolute;right: 33px;top: -30px;">
+                              投影
+                            </div>
                           </div>
                           <div v-if="tooC == 57">
                             <img
@@ -7954,7 +7968,7 @@
                     margin-top: 20px;
                     box-shadow: 3px 1px 15px 3px #e0e0e0;
                   "
-                  :style="{width:chapInfoList[courseType].chapterInfo[0].taskJson[taskCount].isEvaFold2?'100%':'116px'}" 
+                  :style="{width:chapInfoList[courseType].chapterInfo[0].taskJson[taskCount].isEvaFold2?'100%':'116px'}"
                 >
                   <div class="e_add_top">
                     <div class="e_add_title" style="width: 100%">
@@ -10010,8 +10024,8 @@
       width="100%"
       :before-close="handleClose"
       :show-close="false"
-      class="dialog_diy full_diy"
-      :class="{ full_diy2: fulltype == 3 }"
+      :class="['dialog_diy','full_diy', fulltype == 3 ? 'full_diy2' : '', (splitScreenData.isOpen && (splitScreenData.uid != splitScreenData.myUid)) ? 'dialog_diyCopy' : ''] "
+
     >
       <div slot="title" class="header-title">
         <div style="color: #fff">查看文档</div>
@@ -10028,7 +10042,27 @@
           退出全屏
         </div>
       </div>
-      <div style="height: 100%">
+      <div style="height: 100%;position: relative;">
+        <el-button
+          v-if="(splitScreenData.isOpen && (splitScreenData.uid != splitScreenData.myUid))"
+          size="medium" 
+          type="primary"
+          @click="
+            () => {
+              (fullDialogVisible = false),
+                changeSplitScreenBehavior({ code: 99 });
+            }
+          "
+          style="
+            cursor: pointer;
+            position: absolute;
+            top: 10px;
+            right: 20px;
+            color: #fff;
+          "
+        >
+          退出全屏
+        </el-button>
         <div
           class="wheel"
           v-if="
@@ -11495,7 +11529,7 @@
           <!-- <el-input v-model="groupJson.number" placeholder="2-10人以内"
             style="width: 150px; margin: 10px 10px 0 0"></el-input> -->
           <el-input
-            v-model="groupJson.number"
+            v-model="groupJson2.number"
             style="width: 150px"
             placeholder="请输入2-10的数字"
             @change="numberPan"
@@ -11963,24 +11997,24 @@
         </div>
       </div>
     </el-dialog>
-    <EnglishVoice :EnglishVoiceDialog.sync='EnglishVoiceDialog' 
-    :englishVoiceJson='englishVoiceJson' 
-    :userid="userid" 
-    :id="id" 
-    :courseType="courseType" 
-    :taskCount="taskCount" 
-    :toolindex="toolindex" 
-    @selectSWorks="selectSWorks" 
+    <EnglishVoice :EnglishVoiceDialog.sync='EnglishVoiceDialog'
+    :englishVoiceJson='englishVoiceJson'
+    :userid="userid"
+    :id="id"
+    :courseType="courseType"
+    :taskCount="taskCount"
+    :toolindex="toolindex"
+    @selectSWorks="selectSWorks"
     @selectStudent="selectStudent"
     :englishVoiceJsonWork="englishVoiceJsonWork"></EnglishVoice>
-    <checkEnglishVoice :englishVoiceJson='englishVoiceJson'  
-    :userid="userid" 
+    <checkEnglishVoice :englishVoiceJson='englishVoiceJson'
+    :userid="userid"
     :dialogVisibleENScore.sync='dialogVisibleENScore'
-    :commentDetail="commentDetail" 
-    :courseDetail="courseDetail" 
+    :commentDetail="commentDetail"
+    :courseDetail="courseDetail"
     :wScore="wScore"
     :scoreDetail="scoreDetail"
-    @selectSWorks="selectSWorks" 
+    @selectSWorks="selectSWorks"
     @selectStudent="selectStudent"></checkEnglishVoice>
 		<statisticalAnalysis ref="statisticalAnalysisRef" @refresh="statisticalAnalysisRefresh"  @changeSplitScreenBehavior="changeSplitScreenBehavior"  :courseType="courseType" :taskCount="taskCount"/>
 		<choseWorksDetailDialog
@@ -11996,6 +12030,27 @@
 			@openScore="openScore"
       @changeSplitScreenBehavior="changeSplitScreenBehavior"
     />
+    <el-dialog
+      :visible.sync="confirmOpenDig"
+      width="500px"
+      :modal="false"
+      class="confirmOpenDigCss dialog_diyCopy"
+      :before-close="handleClose">
+      <div style="display: flex;align-items: center;">
+        <img src="../../assets/icon/course/confirmOpenDig.svg" alt="">
+        <span>“{{ courseDetail.title }}”开课啦</span>
+      </div>
+      <div style="margin: 20px 0 35px;">
+        <div style="margin-bottom: 10px;">接下来你将跟随老师一起开始今天的学习! </div>
+        <div>要认真听讲哦~</div>
+      </div>
+      
+
+      <div style="text-align: center;">
+        <el-button type="primary" style="width: 95%;" @click="confirmOpen">开始学习</el-button>
+      </div>
+   
+    </el-dialog>
   </div>
 </template>
 
@@ -12037,7 +12092,11 @@ import MarkdownIt from "markdown-it";
 import statisticalAnalysis from '../components/statisticalAnalysis.vue'
 import choseWorksDetailDialog from '../components/choseWorksDetailDialog.vue'
 import { v4 as uuidv4 } from "uuid";
-
+var OpenCC = require("opencc-js");
+let converter = OpenCC.Converter({
+  from: "hk",
+  to: "cn"
+});
 const getFile = (url) => {
   return new Promise((resolve, reject) => {
     var credentials = {
@@ -12069,7 +12128,7 @@ const getFile = (url) => {
           resolve({ data: 1 });
         }else {
           resolve({ data: data.Body });
-          console.log(data); 
+          console.log(data);
         }          // sxuccessful response
 
       });
@@ -12397,6 +12456,7 @@ export default {
       isHovered2: false,
 			commentTagShow:0,
       timer: null,
+      timer2: null,
       opertimer: null,
       showType: '',
       fileType: 0,
@@ -12478,19 +12538,21 @@ export default {
       englishVoiceJsonWork:[],
 			scoreList:{
 				listdata:[],
-				isScoreList:[],	
+				isScoreList:[],
 			},
 			classRoomHelperWidth: '85px',
 			orgArray:[],
       oidArray:[],
 			splitScreenData:{
-			isOpen:false,
-			userId:"",
-			uid:"",
-			myUid:"",
-			loading:false,
-			behavior:null,
-		}
+        isOpen:false,
+        userId:"",
+        uid:"",
+        myUid:"",
+        loading:false,
+        behavior:null,
+      },
+      confirmOpenDig:false,
+      confirmOpenDigData:''
     };
   },
   methods: {
@@ -12623,7 +12685,7 @@ export default {
           console.log(err);
           loading.close();
         }
-      );      
+      );
     },
     addToolChoose() {
       if (!this.checktoolArray.length) {
@@ -12728,7 +12790,7 @@ export default {
               type: "success",
             });
             this.toolDetailIndex = null;
-            
+
             this.updateToolDetailInner = "";
             this.getCourseDetail(2);
             this.$forceUpdate();
@@ -12757,7 +12819,7 @@ export default {
               message: "修改成功",
               type: "success",
             });
-            
+
             this.toolDetailIndex = i;
             this.isUpdateToolDetail1 = true;
             setTimeout(() => {
@@ -12808,6 +12870,7 @@ export default {
         this.selectPz();
         this.getHomeWork();
         this.getCourseDetail(2);
+        this.changeSplitScreenBehavior({form:{courseType:this.courseType,taskCount:this.taskCount,toolType:k}})
 				if(flag){
 					if(flag2){
 						this.insertMemorandum(`选择<span class="variable">工具${k+1}:${this.toolsList[this.navList[i].task[j].tool[k].tool]}</span>`)
@@ -12941,6 +13004,7 @@ export default {
         this.videoDetail.sources[0].src = "";
       }
       this.commentIndexJson = {};
+      this.changeSplitScreenBehavior({code:99})
       done();
     },
     fullTools() {
@@ -14327,7 +14391,7 @@ export default {
           ? this.chapInfoList[this.courseType].chapterInfo[0].taskJson[this.taskCount]
               .toolChoose[index].englishVoiceJson
           : {};
-        
+
         this.englishVoiceJson = JSON.parse(JSON.stringify(englishVoiceJson));
       }
 			this.insertMemorandum(`查看<span class="variable">${w.sName}</span>的作业`)
@@ -16157,7 +16221,7 @@ export default {
                 !this.navList[b].task[this.navList[b].task.length - 1].isLook
               ) {
                 if (
-                  this.courseDetail.userid != this.userid && 
+                  this.courseDetail.userid != this.userid &&
                   (!this.courseDetail.course_teacher ||
           (this.courseDetail.course_teacher &&
           this.courseDetail.course_teacher.indexOf(this.userid) == -1))
@@ -16206,7 +16270,7 @@ export default {
             if (
               !this.chapInfoList[this.courseType].chapterInfo[0].taskJson[bbb]
                 .isLook &&
-              this.courseDetail.userid != this.userid && 
+              this.courseDetail.userid != this.userid &&
               (!this.courseDetail.course_teacher ||
           (this.courseDetail.course_teacher &&
           this.courseDetail.course_teacher.indexOf(this.userid) == -1)) &&
@@ -16232,7 +16296,7 @@ export default {
             var bbb = parseInt(this.courseType) + 1;
             if (
               !this.chapInfoList[bbb].chapterInfo[0].taskJson[0].isLook &&
-              this.courseDetail.userid != this.userid && 
+              this.courseDetail.userid != this.userid &&
               (!this.courseDetail.course_teacher ||
           (this.courseDetail.course_teacher &&
           this.courseDetail.course_teacher.indexOf(this.userid) == -1)) &&
@@ -16250,7 +16314,7 @@ export default {
             if (
               !this.chapInfoList[this.courseType].chapterInfo[0].taskJson[bbb]
                 .isLook &&
-              this.courseDetail.userid != this.userid && 
+              this.courseDetail.userid != this.userid &&
               (!this.courseDetail.course_teacher ||
           (this.courseDetail.course_teacher &&
           this.courseDetail.course_teacher.indexOf(this.userid) == -1)) &&
@@ -16316,7 +16380,7 @@ export default {
       if (this.IsLookOpen) {
         if (
           !this.chapInfoList[s].chapterInfo[0].taskJson[n].isLook &&
-          this.courseDetail.userid != this.userid && 
+          this.courseDetail.userid != this.userid &&
           (!this.courseDetail.course_teacher ||
           (this.courseDetail.course_teacher &&
           this.courseDetail.course_teacher.indexOf(this.userid) == -1))
@@ -16357,10 +16421,11 @@ export default {
 
 			let flag = this.courseType==s;
 
-	
+
       this.courseType = s;
       this.navId = i;
       this.taskCount = n;
+      this.changeSplitScreenBehavior({form:{courseType:this.courseType,taskCount:this.taskCount}})
       this.navList[this.courseType].task[this.taskCount].isOpen =
         !this.navList[this.courseType].task[this.taskCount].isOpen;
       if (this.IsLookOpen) {
@@ -16380,7 +16445,7 @@ export default {
           }, 0)
         })
       }
-      this.showType = 7;
+      // this.showType = 7;
       this.isNoHomeWork = false;
       (this.studyJuri = [
         {
@@ -16586,6 +16651,16 @@ export default {
               this.fileC[i] = c.filter((el) => {
                 return el.type == 12;
               });
+              if (this.tType == 2) {
+                if (this.fileC[i].length) {
+                  let yym1 =  this.fileC[i].filter(e=>{
+                    if(!converter(e.name).includes(converter("教案"))){
+                      return e
+                    }
+                  })
+                  this.fileC[i] = yym1
+                }
+              }
               // else if (c[j].type == 12) {
               //     this.fileC[i].push(c[j]);
               //   }
@@ -16714,9 +16789,21 @@ export default {
               this.showType = "";
             }
 
+            if (this.tType == 2) {
+              _chapterData.forEach((e,i)=>{
+                if (e.length) {
+                  let yym =  e.filter(k=>{
+                    if(!converter(k.name).includes(converter("教案"))){
+                      return k
+                    }
+                  })
+                  _chapterData[i] = yym
+                }
+              })
+            }
             this.vChapterData = _chapterData;
           } else {
-            this.showType = 0;
+            // this.showType = 0;
             var a = JSON.parse(res.data[0][0].chapters)[this.courseType]
               .chapterInfo[0].taskJson;
             var b = [
@@ -16768,6 +16855,16 @@ export default {
               this.fileC[i] = c.filter((el) => {
                 return el.type == 12;
               });
+              if (this.tType == 2) {
+                if (this.fileC[i].length) {
+                  let yym1 =  this.fileC[i].filter(e=>{
+                    if(!converter(e.name).includes(converter("教案"))){
+                      return e
+                    }
+                  })
+                  this.fileC[i] = yym1
+                }
+              }
               for (var j = 0; j < c.length; j++) {
                 if (c[j].type == 7) {
                   this.chapToolList[i].push(c[j]);
@@ -16800,8 +16897,8 @@ export default {
               _chapterData[taskCount].length &&
               _chapterData[taskCount][0].type == 2
             ) {
-              this.showType = 0;
-              this.pptImgUrl1 = _chapterData[taskCount][0].url;
+              // this.showType = 0;
+              // this.pptImgUrl1 = _chapterData[taskCount][0].url;
             } else {
               if (_chapterData[taskCount].length > 0) {
                 let _url = _chapterData[taskCount][0].url;
@@ -16809,22 +16906,22 @@ export default {
                   _chapterData[taskCount][0].type == 8 ||
                   _chapterData[taskCount][0].type == 14
                 ) {
-                  this.showType = 2;
+                  // this.showType = 2;
                   if (
                     _url.indexOf("https://") == -1 &&
                     _url.indexOf("http://") == -1
                   ) {
                     _url = "https://" + _url;
                   }
-                  this.pptImgUrl1 = _url;
+                  // this.pptImgUrl1 = _url;
                 } else if (_chapterData[taskCount][0].type == 3) {
                   if (
                     _url
                       .split(".")
                       [_url.split(".").length - 1].toLocaleUpperCase() == "PDF"
                   ) {
-                    this.showType = 3;
-                    this.pptImgUrl1 = _url;
+                    // this.showType = 3;
+                    // this.pptImgUrl1 = _url;
                   } else if (
                     this.isAssetTypeAnImage(
                       _url
@@ -16832,17 +16929,17 @@ export default {
                         [_url.split(".").length - 1].toLocaleLowerCase()
                     )
                   ) {
-                    this.showType = 4;
-                    this.pptImgUrl1 = _url;
+                    // this.showType = 4;
+                    // this.pptImgUrl1 = _url;
                   } else {
-                    this.showType = 2;
-                    this.pptImgUrl1 =
-                      "https://view.officeapps.live.com/op/view.aspx?src=" +
-                      encodeURIComponent(_url);
+                    // this.showType = 2;
+                    // this.pptImgUrl1 =
+                    //   "https://view.officeapps.live.com/op/view.aspx?src=" +
+                    //   encodeURIComponent(_url);
                   }
                 } else if (_chapterData[taskCount][0].type == 13) {
-                  this.showType = 4;
-                  this.pptImgUrl1 = _url;
+                  // this.showType = 4;
+                  // this.pptImgUrl1 = _url;
                 } else if (_chapterData[taskCount][0].type == 6) {
                   this.showType = 1;
                   this.text = this.textList[taskCount][0];
@@ -16855,10 +16952,21 @@ export default {
               _chapterData[taskCount][0].type == 12
             ) {
               this.isClickNav = "";
-              this.showType = "";
+              // this.showType = "";
             }
-
-            this.vChapterData = _chapterData;
+            if (this.tType == 2) {
+              _chapterData.forEach((e,i)=>{
+                if (e.length) {
+                  let yym =  e.filter(k=>{
+                    if(!converter(k.name).includes(converter("教案"))){
+                      return k
+                    }
+                  })
+                  _chapterData[i] = yym
+                }
+              })
+            }
+            this.vChapterData = _chapterData;         
             this.$forceUpdate();
           }
           //  else {
@@ -16881,7 +16989,7 @@ export default {
           _this.selectStudent();
           _this.selectSLook();
           _this.getPick();
-					
+
           if (_this.courseDetail.userid == _this.userid && _this.IsFollow) {
             _this.setCTask();
           }
@@ -16907,7 +17015,7 @@ export default {
             _this.selectStudent();
             _this.selectSLook();
             _this.getPick();
-						_this.getSplitScreenData();//获取分屏数据
+						// _this.getSplitScreenData();//获取分屏数据
             if (_this.courseDetail.userid == _this.userid && _this.IsFollow) {
               _this.setCTask();
             }
@@ -16922,6 +17030,11 @@ export default {
               _this.selectPz();
             }
           }, 5000);
+          if (_this.timer2 == null) {
+            _this.timer2 = setInterval(()=> {
+              _this.getSplitScreenData();//获取分屏数据
+            },  5000);
+          }
           _this.$nextTick(function () {
             setTimeout(() => {
               // var a =
@@ -17328,7 +17441,7 @@ export default {
             this.getCourseState(1);
           }
 
-					if ((this.IsFollow && this.tType == 2) || (this.splitScreenData.isOpen && this.splitScreenData.uid != this.splitScreenData.myUid)) {
+					if ((this.IsFollow && this.tType == 2)) {
             this.setContent2(false);
             let _followC = res.data[0][0].followC.split("-");
             if (
@@ -17554,7 +17667,7 @@ export default {
 			this.insertMemorandum(`查看文件<span class="variable">任务${this.taskCount+1}:${this.vChapterData[this.taskCount].find(i=>i.url==u).name}</span>`)
     },
     lookText(i, t) {
-      this.isClickNav = "";
+            this.isClickNav = "";
       // this.text = this.textList[i][t];
       this.text = this.vChapterData[i][t];
       // this.dialogVisible1 = true;
@@ -18050,7 +18163,7 @@ export default {
         //     index
         //   ].toolChoose[i].videoJson;
 				this.dialogVisibleVideo = true;
-				
+
       }
       //  else if (t == 15) {
       //   this.answerQ = "";
@@ -18388,7 +18501,7 @@ export default {
           ? this.chapInfoList[this.courseType].chapterInfo[0].taskJson[index]
               .toolChoose[i].englishList
           : {};
-        
+
         this.englishToolIndex = i;
         this.myAnList = this.myAnswerList1;
         this.engDialogVisible = true;
@@ -18411,7 +18524,7 @@ export default {
           ? this.chapInfoList[this.courseType].chapterInfo[0].taskJson[index]
               .toolChoose[i].englishVoiceJson
           : {};
-        
+
         this.englishVoiceJson = JSON.parse(JSON.stringify(englishVoiceJson));
         this.EnglishVoiceDialog = true;
       } else if (t == 65) {
@@ -18980,7 +19093,7 @@ export default {
         this.fullUrl =
           "https://view.officeapps.live.com/op/view.aspx?src=" + encodeURIComponent(_uuurl);
       }
-			this.changeSplitScreenBehavior({code:0,form:[t,f]})
+			this.changeSplitScreenBehavior({code:0,form:{t:t,f:f}})
     },
     openSname(n, id, i, uid) {
       this.snameWid = id;
@@ -19099,11 +19212,11 @@ export default {
           a.href = url;
           a.download = f.name;
           a.click();
-          console.log(data); 
+          console.log(data);
         }          // sxuccessful response
 
       });
-      
+
       return;
       let url = f.url;
       let _url = "";
@@ -19176,11 +19289,11 @@ export default {
           a.href = url;
           a.download = name;
           a.click();
-          console.log(data); 
+          console.log(data);
         }          // sxuccessful response
 
       });
-      
+
       return;
       let _this = this;
       let _url = "";
@@ -19955,7 +20068,7 @@ export default {
             this.newEnglishList.engText = z.engText;
           }else{
             var a = res.data[0];
-            var ppp = JSON.parse(JSON.stringify(res.data[0])); 
+            var ppp = JSON.parse(JSON.stringify(res.data[0]));
             if(this.userMes[0].type == 2){
               var snum = 0;
               for(var i = 0;i<a.length;i++){
@@ -20116,7 +20229,7 @@ export default {
         _url = await this.checkLink("https://ccrb.s3.cn-northwest-1.amazonaws.com.cn/" + encodeURIComponent(_url.split('https://ccrb.s3.cn-northwest-1.amazonaws.com.cn/')[1]))
       }
       // console.log(_url)
-      return _url 
+      return _url
     },
 		getScoreList(){
 			let params = {
@@ -20199,7 +20312,7 @@ export default {
         this.splitScreenData.uid = this.splitScreenData.myUid;
         this.splitScreenData.behavior = null;
         let status = await this.updateSplitScreenData(0);
-
+        this.changeSplitScreenBehavior({form:{}})
         if (status == 1) {
           this.$message.success("已开启分屏");
           this.studentFreePreview(true);
@@ -20214,6 +20327,47 @@ export default {
         }
       }
     },
+    enterFullScreen() {
+      let element = document.documentElement;
+      if (element.requestFullscreen) {
+        element.requestFullscreen();
+      } else if (element.mozRequestFullScreen) { /* Firefox */
+        element.mozRequestFullScreen();
+      } else if (element.webkitRequestFullscreen) { /* Chrome, Safari & Opera */
+        element.webkitRequestFullscreen();
+      } else if (element.msRequestFullscreen) { /* IE/Edge */
+        element.msRequestFullscreen();
+      }
+    },
+    exitFullScreen() {
+      if (document.exitFullscreen) {
+        document.exitFullscreen();
+      } else if (document.mozCancelFullScreen) { /* Firefox */
+        document.mozCancelFullScreen();
+      } else if (document.webkitExitFullscreen) { /* Chrome, Safari and Opera */
+        document.webkitExitFullscreen();
+      } else if (document.msExitFullscreen) { /* IE/Edge */
+        document.msExitFullscreen();
+      }
+    },
+    confirmOpen(){
+      this.splitScreenData.isOpen = true;
+      this.splitScreenData.uid = this.confirmOpenDigData.uid;
+      this.splitScreenData.userId = this.confirmOpenDigData.userId;
+      this.splitScreenData.behavior = this.confirmOpenDigData.behavior;
+      this.confirmOpenDig = false
+      if (!document.fullscreenElement) {
+        this.enterFullScreen();
+      } 
+      if (this.timer2) {
+        clearInterval(this.timer2);
+        this.timer2 = null;
+      } 
+      this.timer2 = setInterval(()=> {
+        this.getSplitScreenData();//获取分屏数据
+      }, 1000);
+      this.$message.success("分屏模式已开启");
+    },
     getSplitScreenData() {
       // return;
       if (this.tType != 1) return;
@@ -20238,11 +20392,8 @@ export default {
               this.splitScreenData.behavior = null;
               await this.updateSplitScreenData(1);
             } else if (!this.splitScreenData.isOpen && data.isOpen) {
-              this.splitScreenData.isOpen = true;
-              this.splitScreenData.uid = data.uid;
-              this.splitScreenData.userId = data.userId;
-              this.splitScreenData.behavior = data.behavior;
-              this.$message.success("分屏模式已开启");
+              this.confirmOpenDig = true
+              this.confirmOpenDigData = data
             } else if (this.splitScreenData.isOpen && !data.isOpen) {
               this.splitScreenData.isOpen = false;
               this.splitScreenData.userId = "";
@@ -20264,6 +20415,26 @@ export default {
               this.splitScreenData.uid = "";
               this.splitScreenData.behavior = null;
               this.$message.error("已结束分屏模式");
+              if (this.timer2) {
+                clearInterval(this.timer2);
+                this.timer2 = null;
+              }
+              this.timer2 = setInterval(()=> {
+                this.getSplitScreenData();//获取分屏数据
+              }, 5000);
+              this.$confirm("教师已结束分屏,确定后自由预览。", "提示", {
+                confirmButtonText: '确定', //确认按钮的文字
+                showCancelButton: false, //是否显示取消按钮
+                showClose: false, //是否显示关闭按钮
+                closeOnClickModal: false, //是否可以通过点击空白处关闭弹窗
+                type: "warning",
+              })
+                .then(() => {
+                  if (document.fullscreenElement) {
+                      this.exitFullScreen();
+                  } 
+                })
+                .catch(() => {});
             }
           }
         })
@@ -20280,17 +20451,21 @@ export default {
         if (behavior) {
           if (behavior.code === 99) {
             //初始化
-            this.fullDialogVisible = false;
+            this.fullDialogVisible = false;             
 						if(this.$refs.choseWorksDetailDialogRef.show){
 							this.$refs.choseWorksDetailDialogRef.close();
 						}
 						if(this.$refs.statisticalAnalysisRef.show){
 							this.$refs.statisticalAnalysisRef.close();
 						}
-          } else if (behavior.code === 0) {
+          }
+           if (behavior.code === 0) {
             //开启内容列表弹窗
-            this.checkFileFull1(behavior.form[0], behavior.form[1]);
-          } else if (behavior.code === 1) {
+            this.checkFileFull1(behavior.form.t, behavior.form.f);
+            }else{
+              this.fullDialogVisible = false;         
+            }
+           if (behavior.code === 1) {
             //关于选择题的作业详细的操作
             // toolIndex:toolIndex,courseType:this.courseType,taskCount:this.taskCount,type:0
             if(this.courseType!==behavior.form.courseType || this.taskCount!==behavior.form.taskCount){
@@ -20300,12 +20475,15 @@ export default {
             this.$nextTick(() => {
 							if (this.$refs.choseWorksDetailDialogRef.show) {
                 //已经打开了
-								this.$refs.choseWorksDetailDialogRef.splitScreenFn({toolType:behavior.form.toolType,type:behavior.form.type,showStatisticsType:behavior.form.showStatisticsType})
+								this.$refs.choseWorksDetailDialogRef.splitScreenFn({toolType:behavior.form.toolType,type:behavior.form.type,showStatisticsType:behavior.form.showStatisticsType,lookWorks:behavior.form.lookWorks})
               } else {
-								this.$refs.choseWorksDetailDialogRef.open({toolType:behavior.form.toolType,toolIndex:behavior.form.toolIndex,tType: this.tType,})
+								this.$refs.choseWorksDetailDialogRef.open({toolType:behavior.form.toolType,toolIndex:behavior.form.toolIndex,tType: this.tType,lookWorks:behavior.form.lookWorks})
               }
             });
-          }else if(behavior.code === 2){
+          }else{
+            this.$refs.choseWorksDetailDialogRef.close()
+          }
+           if(behavior.code === 2){
 						if(this.$refs.statisticalAnalysisRef.show){
 							this.$refs.statisticalAnalysisRef.splitScreenFn({type:behavior.form.type})
 						}else{
@@ -20315,7 +20493,42 @@ export default {
       				  toolIndex: behavior.form.toolIndex
       				});
 						}
-					}
+					}else{
+            this.$refs.statisticalAnalysisRef.close();
+          }
+          if(behavior.form.taskCount!=="" && behavior.form.courseType !==""){
+
+            let oldData = [parseInt(this.courseType),parseInt(this.taskCount)]
+            let newData = [parseInt(behavior.form.courseType),parseInt(behavior.form.taskCount)]
+
+            if(this.courseType !=behavior.form.courseType){
+              this.courseType = behavior.form.courseType;
+            }
+            if(this.taskCount !=behavior.form.taskCount){
+              this.taskCount = behavior.form.taskCount;
+            }
+
+              var a = document.scrollingElement;
+                let target = document.querySelector(`#gj${behavior.form.toolType}`);
+                if (target) {
+                  target.scrollIntoView(true);
+                  setTimeout(() => {
+                    a.scrollTop = 0
+                  }, 0);
+                }
+
+            // if(behavior.form.navId){
+            //   this.navId = behavior.form.navId
+            // }
+            // console.log("分屏阶段和任务",JSON.stringify(oldData),JSON.stringify(newData))
+            if(JSON.stringify(oldData)!=JSON.stringify(newData)){
+              // console.log("分屏测试====",JSON.stringify(oldData),JSON.stringify(newData))
+              this.getCourseDetail()
+            }
+            this.setContent2(false)
+
+            
+          }
         } else {
         }
       }
@@ -20384,7 +20597,22 @@ export default {
         this.splitScreenData.isOpen &&
         this.splitScreenData.uid == this.splitScreenData.myUid
       ) {
-        this.splitScreenData.behavior = newValue;
+        let _behavior = null;
+        if(!newValue){
+          _behavior = {}
+        }else{
+          _behavior = newValue
+        }
+        if(_behavior.form){
+          _behavior.form.taskCount = this.taskCount;
+          _behavior.form.courseType = this.courseType
+        }else{
+          _behavior.form = {
+            taskCount:this.taskCount,
+            courseType:this.courseType
+          }
+        }
+        this.splitScreenData.behavior = _behavior;
         this.updateSplitScreenData(0);
       }
     },
@@ -20442,9 +20670,11 @@ export default {
     window.onresize = null;
     clearInterval(this.timer);
     this.timer = null;
+    clearInterval(this.timer2);
+    this.timer2 = null;
     clearInterval(this.opertimer);
     this.opertimer = null;
-		this.updateSplitScreenData(1); 
+		this.updateSplitScreenData(1);
   },
   computed: {
     getHeight(){
@@ -20822,6 +21052,8 @@ export default {
   width: 100%;
   height: auto;
   padding-bottom: 20px;
+  margin-left: 2px;
+  min-height: 90%;
 }
 
 .study_top .checkbox {
@@ -23304,7 +23536,7 @@ export default {
 .checkbox>.cb-tabList{
 	display:flex;
 	align-items:center;
-	
+
 }
 
 .cb-tabList>div{
@@ -24893,7 +25125,7 @@ ol {
   display: flex;
   flex-direction: row;
   flex-wrap: nowrap;
-  align-items: flex-start;    
+  align-items: flex-start;
   padding: 0 20px 20px 20px;
   box-sizing: border-box;
 }
@@ -24982,7 +25214,7 @@ ol {
 }
 
 .isUpdateToolDetailClass{
- padding: 0 !important; 
+ padding: 0 !important;
 }
 
 .isUpdateToolDetailClass textarea{
@@ -25019,11 +25251,36 @@ ol {
 .show_taskD.show > img {
   transform: rotate(0deg);
 }
-
+.dialog_diyCopy >>> .el-dialog__header {
+  display: none !important;
+}
+.dialog_diyCopy >>> .el-dialog__body {
+  padding: 0 !important;
+  height: 100% !important;
+}
+.confirmOpenDigCss > div{
+  font-size: 14px;
+  color: rgba(0, 0, 0, 0.6);
+}
+.confirmOpenDigCss >>> .el-dialog{
+  border-radius: 6px;
+}
+.confirmOpenDigCss >>> .el-dialog__body{
+  padding: 25px !important;
+}
+.confirmOpenDigCss > span{
+  font-size: 16px;
+  font-weight: 600;
+  color: rgba(0, 0, 0, 0.8);
+}
 .correctCss{
   position: absolute;
   bottom: -70px;
   background: #409eff;
   color: #fff;
 }
-</style>
+div::-webkit-scrollbar {
+    width: 10px;
+    height: 6px;
+}
+</style>

+ 357 - 98
src/components/studyStudent.vue

@@ -1,13 +1,14 @@
 <template>
-  <div class="pb_content" style="overflow: unset">
+  <div class="pb_content" style="height: 100%;overflow: unset;">
     <div
       class="pb_content_body"
       style="
         display: flex;
-        height: 900px;
+        height: 100%;
         position: relative;
         padding: 20px 0 20px 20px;
         box-sizing: border-box;
+        overflow: auto;
       "
     >
       <div class="btnAllNT" v-if="false">
@@ -86,7 +87,7 @@
             <div
               class="stageBoxCss"
               @click="get(stageIndex)"
-              :class="{ 
+              :class="{
                 // stageBoxIsCss: stageIndex == courseType,
                }"
             >
@@ -228,7 +229,7 @@
                       <div v-if="t.tool == 26">课程设计</div>
                       <div v-if="t.tool == 62">交互视频</div>
                       <div v-if="t.tool == 71">AI智能体</div>
-											
+
                     </div>
                   </div>
                 </div>
@@ -240,7 +241,7 @@
       <!-- :class="{ navLeftCss: !mlDialog }" -->
       <div class="body_student" :style="{width: mlDialog ? 'calc(100% - '+`${!['2'].includes(tType)?classRoomHelperWidth:'10px'}`+' - 20% - 40px)' : 'calc(100% - '+`${!['2'].includes(tType)?classRoomHelperWidth:'10px'}`+' - 10px)', left: mlDialog  ? 'calc(20% + 35px)' : '10px' }">
         <div class="new_topFixed" :style="{width: mlDialog ? 'calc(100% - '+`${!['2'].includes(tType)?classRoomHelperWidth:'10px'}`+' - 20% - 40px)' : 'calc(100% - '+`${!['2'].includes(tType)?classRoomHelperWidth:'10px'}`+' - 10px)', left: mlDialog  ? 'calc(20% + 35px)' : '10px' }"></div>
-        <div class="new_top" :style="{width: mlDialog ? 'calc(100% - '+`${!['2'].includes(tType)?classRoomHelperWidth:'10px'}`+' - 20% - 40px)' : 'calc(100% - '+`${!['2'].includes(tType)?classRoomHelperWidth:'10px'}`+' - 10px)', left: mlDialog  ? 'calc(20% + 35px)' : '10px' }">
+        <div class="new_top" :style="{width: mlDialog ? 'calc(100% - '+`${!['2'].includes(tType)?classRoomHelperWidth:'10px'}`+' - 20% - 47px)' : 'calc(100% - '+`${!['2'].includes(tType)?classRoomHelperWidth:'10px'}`+' - 18px)', left: mlDialog  ? 'calc(20% + 35px)' : '10px' }">
           <div class="courseIndex" :style="{width: (orgArray.includes(org) || oidArray.includes(oid)) && !['2'].includes(tType) ? '100%' : 'calc(100% - 745px)'}">
             <div>任务{{ taskCount + 1 }}</div>
             <el-tooltip
@@ -941,6 +942,10 @@
                               @click="addTools(tooC, toolIndex, taskCount)"
                             />
                             <div style="margin: 5px 0">电子白板</div>
+                            <div class="upload_toolBtn" v-if="tType==='1'" @click="openChoseWorksDetailDialog(tooC,toolIndex,taskCount,1)"
+                            style="position: absolute;right: 33px;top: -30px;">
+                              投影
+                            </div>
                           </div>
                           <div v-if="tooC == 3">
                             <img
@@ -949,6 +954,10 @@
                               @click="addTools(tooC, toolIndex, taskCount)"
                             />
                             <div style="margin: 5px 0">思维导图</div>
+                            <div class="upload_toolBtn" v-if="tType==='1'" @click="openChoseWorksDetailDialog(tooC,toolIndex,taskCount,3)"
+                            style="position: absolute;right: 33px;top: -30px;">
+                              投影
+                            </div>
                           </div>
                           <div v-if="tooC == 6">
                             <img
@@ -965,9 +974,10 @@
                               @click="addTools(tooC, toolIndex, taskCount)"
                             />
                             <div style="margin: 5px 0">思维网格</div>
-														<div class="upload_toolBtn" v-if="tType==='1' && worksStudent[toolIndex].length>0" @click="openChoseWorksDetailDialog(tooC,toolIndex,taskCount,7)"
+                            <!-- && worksStudent[toolIndex].length>0 -->
+														<div class="upload_toolBtn" v-if="tType==='1' " @click="openChoseWorksDetailDialog(tooC,toolIndex,taskCount,7)"
                               style="position: absolute;right: 33px;top: -30px;">
-                              作业详细
+                              投影
                             </div>
                           </div>
                           <div v-if="tooC == 8">
@@ -1005,7 +1015,7 @@
                               style="position: absolute;right: 33px;top: -30px;">
                               统计分析
                             </div>
-														
+
                           </div>
                           <div v-if="tooC == 45">
                             <img
@@ -1017,7 +1027,7 @@
 
 														<div class="upload_toolBtn" v-if="tType==='1'" @click="openChoseWorksDetailDialog(tooC,toolIndex,taskCount,45)"
                               style="position: absolute;right: 33px;top: -30px;">
-                              作业详细
+                              投影
                             </div>
                           </div>
                           <!-- <div v-if="tooC == 5">
@@ -1043,9 +1053,9 @@
                               alt
                             />
                             <div style="margin: 5px 0">问答</div>
-														<div class="upload_toolBtn" v-if="tType==='1' && worksStudent[toolIndex].length>0" @click="openChoseWorksDetailDialog(tooC,toolIndex,taskCount,15)"
+														<div class="upload_toolBtn" v-if="tType==='1' " @click="openChoseWorksDetailDialog(tooC,toolIndex,taskCount,15)"
                               style="position: absolute;right: 135px;top: -45px;height: 40px;display: flex;align-items: center;justify-content: center;background: #409EFF;">
-                              作业详细
+                              投影
                             </div>
                           </div>
                           <div v-if="tooC == 26">
@@ -1181,9 +1191,9 @@
                               alt
                             />
                             <div style="margin: 5px 0">个人评价</div>
-														<div class="upload_toolBtn" v-if="tType==='1' && worksStudent[toolIndex].length>0" @click="openChoseWorksDetailDialog(tooC,toolIndex,taskCount,40)"
+														<div class="upload_toolBtn" v-if="tType==='1'" @click="openChoseWorksDetailDialog(tooC,toolIndex,taskCount,40)"
                               style="position: absolute;right: 33px;top: -30px;">
-                              作业详细
+                              投影
                             </div>
                           </div>
                           <div v-if="tooC == 41">
@@ -1193,9 +1203,9 @@
                               alt
                             />
                             <div style="margin: 5px 0">选择匹配</div>
-														<div class="upload_toolBtn" v-if="tType==='1' && worksStudent[toolIndex].length>0" @click="openChoseWorksDetailDialog(tooC,toolIndex,taskCount,41)"
+														<div class="upload_toolBtn" v-if="tType==='1'" @click="openChoseWorksDetailDialog(tooC,toolIndex,taskCount,41)"
                               style="position: absolute;right: 33px;top: -30px;">
-                              作业详细
+                              投影
                             </div>
                           </div>
                           <div v-if="tooC == 44">
@@ -1213,9 +1223,9 @@
                               alt
                             />
                             <div style="margin: 5px 0">排序</div>
-														<div class="upload_toolBtn" v-if="tType==='1' && worksStudent[toolIndex].length>0" @click="openChoseWorksDetailDialog(tooC,toolIndex,taskCount,47)"
+														<div class="upload_toolBtn" v-if="tType==='1' " @click="openChoseWorksDetailDialog(tooC,toolIndex,taskCount,47)"
                               style="position: absolute;right: 33px;top: -30px;">
-                              作业详细
+                              投影
                             </div>
                           </div>
                           <div v-if="tooC == 48">
@@ -1225,9 +1235,9 @@
                               alt
                             />
                             <div style="margin: 5px 0">表格</div>
-														<div class="upload_toolBtn" v-if="tType==='1' && worksStudent[toolIndex].length>0" @click="openChoseWorksDetailDialog(tooC,toolIndex,taskCount,48)"
+														<div class="upload_toolBtn" v-if="tType==='1'" @click="openChoseWorksDetailDialog(tooC,toolIndex,taskCount,48)"
                               style="position: absolute;right: 33px;top: -30px;">
-                              作业详细
+                              投影
                             </div>
                           </div>
                           <div v-if="tooC == 52">
@@ -1237,9 +1247,9 @@
                               alt
                             />
                             <div style="margin: 5px 0">文档</div>
-														<div class="upload_toolBtn" v-if="tType==='1' && worksStudent[toolIndex].length>0" @click="openChoseWorksDetailDialog(tooC,toolIndex,taskCount,52)"
+														<div class="upload_toolBtn" v-if="tType==='1' " @click="openChoseWorksDetailDialog(tooC,toolIndex,taskCount,52)"
                               style="position: absolute;right: 33px;top: -30px;">
-                              作业详细
+                              投影
                             </div>
                           </div>
                           <div v-if="tooC == 49">
@@ -1249,6 +1259,10 @@
                               alt
                             />
                             <div style="margin: 5px 0">学生分组</div>
+                            <div class="upload_toolBtn" v-if="tType==='1'" @click="openChoseWorksDetailDialog(tooC,toolIndex,taskCount,49)"
+                              style="position: absolute;right: 33px;top: -30px;">
+                              投影
+                            </div>
                           </div>
                           <div v-if="tooC == 57">
                             <img
@@ -7923,7 +7937,7 @@
                     margin-top: 20px;
                     box-shadow: 3px 1px 15px 3px #e0e0e0;
                   "
-                  :style="{width:chapInfoList[courseType].chapterInfo[0].taskJson[taskCount].isEvaFold2?'100%':'116px'}" 
+                  :style="{width:chapInfoList[courseType].chapterInfo[0].taskJson[taskCount].isEvaFold2?'100%':'116px'}"
                 >
                   <div class="e_add_top">
                     <div class="e_add_title" style="width: 100%">
@@ -9955,8 +9969,8 @@
       width="100%"
       :before-close="handleClose"
       :show-close="false"
-      class="dialog_diy full_diy"
-      :class="{ full_diy2: fulltype == 3 }"
+      :class="['dialog_diy','full_diy', fulltype == 3 ? 'full_diy2' : '', (splitScreenData.isOpen && (splitScreenData.uid != splitScreenData.myUid)) ? 'dialog_diyCopy' : ''] "
+
     >
       <div slot="title" class="header-title">
         <div style="color: #fff">查看文档</div>
@@ -9973,7 +9987,27 @@
           退出全屏
         </div>
       </div>
-      <div style="height: 100%">
+      <div style="height: 100%;position: relative;">
+        <el-button
+          v-if="(splitScreenData.isOpen && (splitScreenData.uid != splitScreenData.myUid))"
+          size="medium" 
+          type="primary"
+          @click="
+            () => {
+              (fullDialogVisible = false),
+                changeSplitScreenBehavior({ code: 99 });
+            }
+          "
+          style="
+            cursor: pointer;
+            position: absolute;
+            top: 10px;
+            right: 20px;
+            color: #fff;
+          "
+        >
+          退出全屏
+        </el-button>
         <div
           class="wheel"
           v-if="
@@ -11440,7 +11474,7 @@
           <!-- <el-input v-model="groupJson.number" placeholder="2-10人以内"
             style="width: 150px; margin: 10px 10px 0 0"></el-input> -->
           <el-input
-            v-model="groupJson.number"
+            v-model="groupJson2.number"
             style="width: 150px"
             placeholder="请输入2-10的数字"
             @change="numberPan"
@@ -11904,24 +11938,24 @@
         </div>
       </div>
     </el-dialog>
-    <EnglishVoice :EnglishVoiceDialog.sync='EnglishVoiceDialog' 
-    :englishVoiceJson='englishVoiceJson' 
-    :userid="userid" 
-    :id="id" 
-    :courseType="courseType" 
-    :taskCount="taskCount" 
-    :toolindex="toolindex" 
-    @selectSWorks="selectSWorks" 
+    <EnglishVoice :EnglishVoiceDialog.sync='EnglishVoiceDialog'
+    :englishVoiceJson='englishVoiceJson'
+    :userid="userid"
+    :id="id"
+    :courseType="courseType"
+    :taskCount="taskCount"
+    :toolindex="toolindex"
+    @selectSWorks="selectSWorks"
     @selectStudent="selectStudent"
     :englishVoiceJsonWork="englishVoiceJsonWork"></EnglishVoice>
-    <checkEnglishVoice :englishVoiceJson='englishVoiceJson'  
-    :userid="userid" 
+    <checkEnglishVoice :englishVoiceJson='englishVoiceJson'
+    :userid="userid"
     :dialogVisibleENScore.sync='dialogVisibleENScore'
-    :commentDetail="commentDetail" 
-    :courseDetail="courseDetail" 
+    :commentDetail="commentDetail"
+    :courseDetail="courseDetail"
     :wScore="wScore"
     :scoreDetail="scoreDetail"
-    @selectSWorks="selectSWorks" 
+    @selectSWorks="selectSWorks"
     @selectStudent="selectStudent"></checkEnglishVoice>
 		<statisticalAnalysis ref="statisticalAnalysisRef" @refresh="statisticalAnalysisRefresh"  @changeSplitScreenBehavior="changeSplitScreenBehavior"  :courseType="courseType" :taskCount="taskCount"/>
 		<choseWorksDetailDialog
@@ -11937,6 +11971,27 @@
 			@openScore="openScore"
       @changeSplitScreenBehavior="changeSplitScreenBehavior"
     />
+    <el-dialog
+      :visible.sync="confirmOpenDig"
+      width="500px"
+      :modal="false"
+      class="confirmOpenDigCss dialog_diyCopy"
+      :before-close="handleClose">
+      <div style="display: flex;align-items: center;">
+        <img src="../assets/icon/course/confirmOpenDig.svg" alt="">
+        <span>“{{ courseDetail.title }}”开课啦</span>
+      </div>
+      <div style="margin: 20px 0 35px;">
+        <div style="margin-bottom: 10px;">接下来你将跟随老师一起开始今天的学习! </div>
+        <div>要认真听讲哦~</div>
+      </div>
+      
+
+      <div style="text-align: center;">
+        <el-button type="primary" style="width: 95%;" @click="confirmOpen">开始学习</el-button>
+      </div>
+   
+    </el-dialog>
   </div>
 </template>
 
@@ -11977,7 +12032,11 @@ import classRoomHelper from './classRoomHelper/index.vue'
 import statisticalAnalysis from "./components/statisticalAnalysis.vue";
 import choseWorksDetailDialog from './components/choseWorksDetailDialog.vue';
 import { v4 as uuidv4 } from "uuid";
-
+var OpenCC = require("opencc-js");
+let converter = OpenCC.Converter({
+  from: "hk",
+  to: "cn"
+});
 const getFile = (url) => {
   return new Promise((resolve, reject) => {
     var credentials = {
@@ -12009,7 +12068,7 @@ const getFile = (url) => {
           resolve({ data: 1 });
         }else {
           resolve({ data: data.Body });
-          console.log(data); 
+          console.log(data);
         }          // sxuccessful response
 
       });
@@ -12334,6 +12393,7 @@ export default {
       isHovered2: false,
 			commentTagShow:0,
       timer: null,
+      timer2: null,
       opertimer: null,
       showType: 0,
       fileType: 0,
@@ -12416,7 +12476,7 @@ export default {
       englishVoiceJsonWork:[],
 			scoreList:{
 				listdata:[],
-				isScoreList:[],	
+				isScoreList:[],
 			},
       classRoomHelperWidth: '85px',
 			orgArray:[],
@@ -12468,7 +12528,9 @@ export default {
 			myUid:"",
 			loading:false,
 			behavior:null,
-		}
+    },
+      confirmOpenDig:false,
+      confirmOpenDigData:''
     };
   },
   methods: {
@@ -12601,7 +12663,7 @@ export default {
           console.log(err);
           loading.close();
         }
-      );      
+      );
     },
     addToolChoose() {
       if (!this.checktoolArray.length) {
@@ -12706,7 +12768,7 @@ export default {
               type: "success",
             });
             this.toolDetailIndex = null;
-            
+
             this.updateToolDetailInner = "";
             this.getCourseDetail(2);
             this.$forceUpdate();
@@ -12735,7 +12797,7 @@ export default {
               message: "修改成功",
               type: "success",
             });
-            
+
             this.toolDetailIndex = i;
             this.isUpdateToolDetail1 = true;
             setTimeout(() => {
@@ -12782,10 +12844,11 @@ export default {
         this.courseType = i;
         // this.navId = l;
         this.taskCount = j;
-				
+
         this.selectPz();
         this.getHomeWork();
         this.getCourseDetail(2);
+        this.changeSplitScreenBehavior({form:{courseType:this.courseType,taskCount:this.taskCount,toolType:k}})
 				if(flag){
 					if(flag2){
 						this.insertMemorandum(`选择<span class="variable">工具${k+1}:${this.toolsList[this.navList[i].task[j].tool[k].tool]}</span>`)
@@ -14259,7 +14322,7 @@ export default {
       }
     },
     async openScore(w, index) {
-			
+
       this.wScore = 0;
       this.wScore = w.score ? JSON.parse(w.score).wScore : 0;
       this.scoreDetail = w.score ? JSON.parse(w.score).detail : "";
@@ -14304,13 +14367,13 @@ export default {
           ? this.chapInfoList[this.courseType].chapterInfo[0].taskJson[this.taskCount]
               .toolChoose[index].englishVoiceJson
           : {};
-        
+
         this.englishVoiceJson = JSON.parse(JSON.stringify(englishVoiceJson));
       }
 			this.insertMemorandum(`查看<span class="variable">${w.sName}</span>的作业`)
     },
     addComment(wid, uid, t,detail) {
-			
+
       if (this.commentText == "") {
         this.$message.error("请输入评论");
         return;
@@ -14393,7 +14456,7 @@ export default {
         });
     },
     openXz(w, i) {
-			
+
       this.selectJson = this.chapInfoList[this.courseType].chapterInfo[0]
         .taskJson[this.taskCount].toolChoose[i].selectJson
         ? JSON.parse(
@@ -16141,7 +16204,7 @@ export default {
                 !this.navList[b].task[this.navList[b].task.length - 1].isLook
               ) {
                 if (
-                  this.courseDetail.userid != this.userid && 
+                  this.courseDetail.userid != this.userid &&
                   (!this.courseDetail.course_teacher ||
                   (this.courseDetail.course_teacher &&
                   this.courseDetail.course_teacher.indexOf(this.userid) == -1))
@@ -16341,13 +16404,13 @@ export default {
       }
 			let flag = this.courseType==s;
 
-			
+
       this.courseType = s;
-			
+
       this.navId = i;
       this.taskCount = n;
-			
-			
+      this.changeSplitScreenBehavior({form:{courseType:this.courseType,taskCount:this.taskCount}})
+
       if(ctype == 2){
         this.navList[s].task[n].isOpen = true
       }else{
@@ -16578,7 +16641,17 @@ export default {
               });
               this.fileC[i] = c.filter((el) => {
                 return el.type == 12;
-              });
+              });              
+              if (this.tType == 2) {
+                if (this.fileC[i].length) {
+                  let yym1 =  this.fileC[i].filter(e=>{
+                    if(!converter(e.name).includes(converter("教案"))){
+                      return e
+                    }
+                  })
+                  this.fileC[i] = yym1
+                }
+              }
               // else if (c[j].type == 12) {
               //     this.fileC[i].push(c[j]);
               //   }
@@ -16706,6 +16779,18 @@ export default {
               this.showType = "";
             }
 
+            if (this.tType == 2) {
+              _chapterData.forEach((e,i)=>{
+                if (e.length) {
+                  let yym =  e.filter(k=>{
+                    if(!converter(k.name).includes(converter("教案"))){
+                      return k
+                    }
+                  })
+                  _chapterData[i] = yym
+                }
+              })
+            }
             this.vChapterData = _chapterData;
           } else {
             this.showType = 0;
@@ -16760,6 +16845,17 @@ export default {
               this.fileC[i] = c.filter((el) => {
                 return el.type == 12;
               });
+
+              if (this.tType == 2) {
+                if (this.fileC[i].length) {
+                  let yym1 =  this.fileC[i].filter(e=>{
+                    if(!converter(e.name).includes(converter("教案"))){
+                      return e
+                    }
+                  })
+                  this.fileC[i] = yym1
+                }
+              }
               for (var j = 0; j < c.length; j++) {
                 if (c[j].type == 7) {
                   this.chapToolList[i].push(c[j]);
@@ -16847,7 +16943,20 @@ export default {
               this.isClickNav = "";
               this.showType = "";
             }
-
+            console.log('_chapterData66666',_chapterData);
+
+            if (this.tType == 2) {
+              _chapterData.forEach((e,i)=>{
+                if (e.length) {
+                  let yym =  e.filter(k=>{
+                    if(!converter(k.name).includes(converter("教案"))){
+                      return k
+                    }
+                  })
+                  _chapterData[i] = yym
+                }
+              })
+            }
             this.vChapterData = _chapterData;
             this.$forceUpdate();
           }
@@ -16896,7 +17005,7 @@ export default {
             _this.selectStudent();
             _this.selectSLook();
             _this.getPick();
-						_this.getSplitScreenData();
+						// _this.getSplitScreenData();
 
             if (_this.courseDetail.userid == _this.userid && _this.IsFollow) {
               _this.setCTask();
@@ -16912,6 +17021,11 @@ export default {
               _this.selectPz();
             }
           }, 5000);
+          if (_this.timer2 == null) {
+            _this.timer2 = setInterval(()=> {
+              _this.getSplitScreenData();//获取分屏数据
+            },  5000);
+          }
           _this.$nextTick(function () {
             setTimeout(() => {
               // var a =
@@ -17049,7 +17163,7 @@ export default {
           this.$message.error("添加失败");
           console.error(err);
         });
-				
+
     },
     setReplyIndex(id, i) {
       this.replyIndex = i;
@@ -17319,7 +17433,7 @@ export default {
             this.getCourseState(1);
           }
 
-          if ((this.IsFollow && this.tType == 2) || (this.splitScreenData.isOpen && this.splitScreenData.uid != this.splitScreenData.myUid)) {
+          if ((this.IsFollow && this.tType == 2)) {
             this.setContent2(false);
             let _followC = res.data[0][0].followC.split("-");
             if (
@@ -17588,7 +17702,7 @@ export default {
       this.tableJson = JSON.parse(f.works);
       this.dialogVisibleTable3 = true;
 			this.insertMemorandum(`查看<span class="variable">${f.sName}的作业</span>`)
-	
+
     },
     doUrl(url, i) {
       this.isClickNav = "";
@@ -17999,7 +18113,7 @@ export default {
         });
     },
     openTools(t, i, index, c, sName,id) {
-			
+
       var z = JSON.parse(c);
       this.noteName = sName;
       if (t == 4) {
@@ -18378,7 +18492,7 @@ export default {
           ? this.chapInfoList[this.courseType].chapterInfo[0].taskJson[index]
               .toolChoose[i].englishList
           : {};
-        
+
         this.englishToolIndex = i;
         this.myAnList = this.myAnswerList1;
         this.engDialogVisible = true;
@@ -18401,7 +18515,7 @@ export default {
           ? this.chapInfoList[this.courseType].chapterInfo[0].taskJson[index]
               .toolChoose[i].englishVoiceJson
           : {};
-        
+
         this.englishVoiceJson = JSON.parse(JSON.stringify(englishVoiceJson));
         this.EnglishVoiceDialog = true;
       } else if (t == 65) {
@@ -18950,7 +19064,7 @@ export default {
     },
     async checkFileFull1(t, f) {
 
-			
+
 
       this.fullDialogVisible = true;
       if (t == 6) {
@@ -18972,7 +19086,7 @@ export default {
         this.fullUrl =
           "https://view.officeapps.live.com/op/view.aspx?src=" + encodeURIComponent(_uuurl);
       }
-			this.changeSplitScreenBehavior({code:0,form:[t,f]})
+			this.changeSplitScreenBehavior({code:0,form:{t:t,f:f}})
 		},
     openSname(n, id, i, uid) {
       this.snameWid = id;
@@ -19093,11 +19207,11 @@ export default {
           a.href = url;
           a.download = f.name;
           a.click();
-          console.log(data); 
+          console.log(data);
         }          // sxuccessful response
 
       });
-      
+
       return;
       let url = f.url;
       let _url = "";
@@ -19165,11 +19279,11 @@ export default {
           a.href = url;
           a.download = name;
           a.click();
-          console.log(data); 
+          console.log(data);
         }          // sxuccessful response
 
       });
-      
+
       return;
       let _this = this;
       let _url = "";
@@ -19900,7 +20014,7 @@ export default {
     },
     setEngText(i){
       this.newEngIndex = i;
-			
+
       this.$forceUpdate();
     },
     addCorrect(){
@@ -19944,7 +20058,7 @@ export default {
             this.newEnglishList.engText = z.engText;
           }else{
             var a = res.data[0];
-            var ppp = JSON.parse(JSON.stringify(res.data[0])); 
+            var ppp = JSON.parse(JSON.stringify(res.data[0]));
             if(this.userMes[0].type == 2){
               var snum = 0;
               for(var i = 0;i<a.length;i++){
@@ -20105,7 +20219,7 @@ export default {
         _url = await this.checkLink("https://ccrb.s3.cn-northwest-1.amazonaws.com.cn/" + encodeURIComponent(_url.split('https://ccrb.s3.cn-northwest-1.amazonaws.com.cn/')[1]))
       }
       // console.log(_url)
-      return _url 
+      return _url
     },
 		getScoreList(){
 			let params = {
@@ -20188,7 +20302,7 @@ export default {
         this.splitScreenData.uid = this.splitScreenData.myUid;
         this.splitScreenData.behavior = null;
         let status = await this.updateSplitScreenData(0);
-
+        this.changeSplitScreenBehavior({form:{}})
         if (status == 1) {
           this.$message.success("已开启分屏");
           this.studentFreePreview(true);
@@ -20203,6 +20317,47 @@ export default {
         }
       }
     },
+    enterFullScreen() {
+      let element = document.documentElement;
+      if (element.requestFullscreen) {
+        element.requestFullscreen();
+      } else if (element.mozRequestFullScreen) { /* Firefox */
+        element.mozRequestFullScreen();
+      } else if (element.webkitRequestFullscreen) { /* Chrome, Safari & Opera */
+        element.webkitRequestFullscreen();
+      } else if (element.msRequestFullscreen) { /* IE/Edge */
+        element.msRequestFullscreen();
+      }
+    },
+    exitFullScreen() {
+      if (document.exitFullscreen) {
+        document.exitFullscreen();
+      } else if (document.mozCancelFullScreen) { /* Firefox */
+        document.mozCancelFullScreen();
+      } else if (document.webkitExitFullscreen) { /* Chrome, Safari and Opera */
+        document.webkitExitFullscreen();
+      } else if (document.msExitFullscreen) { /* IE/Edge */
+        document.msExitFullscreen();
+      }
+    },
+    confirmOpen(){
+      this.splitScreenData.isOpen = true;
+      this.splitScreenData.uid = this.confirmOpenDigData.uid;
+      this.splitScreenData.userId = this.confirmOpenDigData.userId;
+      this.splitScreenData.behavior = this.confirmOpenDigData.behavior;
+      this.confirmOpenDig = false
+      if (!document.fullscreenElement) {
+        this.enterFullScreen();
+      } 
+      if (this.timer2) {
+        clearInterval(this.timer2);
+        this.timer2 = null;
+      } 
+      this.timer2 = setInterval(()=> {
+        this.getSplitScreenData();//获取分屏数据
+      }, 1000);
+      this.$message.success("分屏模式已开启");
+    },
     getSplitScreenData() {
       // return;
       if (this.tType != 1) return;
@@ -20227,11 +20382,8 @@ export default {
               this.splitScreenData.behavior = null;
               await this.updateSplitScreenData(1);
             } else if (!this.splitScreenData.isOpen && data.isOpen) {
-              this.splitScreenData.isOpen = true;
-              this.splitScreenData.uid = data.uid;
-              this.splitScreenData.userId = data.userId;
-              this.splitScreenData.behavior = data.behavior;
-              this.$message.success("分屏模式已开启");
+              this.confirmOpenDig = true
+              this.confirmOpenDigData = data      
             } else if (this.splitScreenData.isOpen && !data.isOpen) {
               this.splitScreenData.isOpen = false;
               this.splitScreenData.userId = "";
@@ -20253,6 +20405,26 @@ export default {
               this.splitScreenData.uid = "";
               this.splitScreenData.behavior = null;
               this.$message.error("已结束分屏模式");
+              if (this.timer2) {
+                clearInterval(this.timer2);
+                this.timer2 = null;
+              }
+              this.timer2 = setInterval(()=> {
+                this.getSplitScreenData();//获取分屏数据
+              }, 5000);
+              this.$confirm("教师已结束分屏,确定后自由预览。", "提示", {
+                confirmButtonText: '确定', //确认按钮的文字
+                showCancelButton: false, //是否显示取消按钮
+                showClose: false, //是否显示关闭按钮
+                closeOnClickModal: false, //是否可以通过点击空白处关闭弹窗
+                type: "warning",
+              })
+                .then(() => {
+                  if (document.fullscreenElement) {
+                      this.exitFullScreen();
+                  } 
+                })
+                .catch(() => {});
             }
           }
         })
@@ -20260,7 +20432,7 @@ export default {
           console.log("获取分屏数出错:", e);
         });
     },
-		doSplitScreenBehavior() {
+    doSplitScreenBehavior() {
       if (
         this.splitScreenData.isOpen &&
         this.splitScreenData.uid != this.splitScreenData.myUid
@@ -20269,17 +20441,21 @@ export default {
         if (behavior) {
           if (behavior.code === 99) {
             //初始化
-            this.fullDialogVisible = false;
+            this.fullDialogVisible = false;             
 						if(this.$refs.choseWorksDetailDialogRef.show){
 							this.$refs.choseWorksDetailDialogRef.close();
 						}
 						if(this.$refs.statisticalAnalysisRef.show){
 							this.$refs.statisticalAnalysisRef.close();
 						}
-          } else if (behavior.code === 0) {
+          }
+           if (behavior.code === 0) {
             //开启内容列表弹窗
-            this.checkFileFull1(behavior.form[0], behavior.form[1]);
-          } else if (behavior.code === 1) {
+            this.checkFileFull1(behavior.form.t, behavior.form.f);
+            }else{
+              this.fullDialogVisible = false;         
+            }
+           if (behavior.code === 1) {
             //关于选择题的作业详细的操作
             // toolIndex:toolIndex,courseType:this.courseType,taskCount:this.taskCount,type:0
             if(this.courseType!==behavior.form.courseType || this.taskCount!==behavior.form.taskCount){
@@ -20289,12 +20465,15 @@ export default {
             this.$nextTick(() => {
 							if (this.$refs.choseWorksDetailDialogRef.show) {
                 //已经打开了
-								this.$refs.choseWorksDetailDialogRef.splitScreenFn({toolType:behavior.form.toolType,type:behavior.form.type,showStatisticsType:behavior.form.showStatisticsType})
+								this.$refs.choseWorksDetailDialogRef.splitScreenFn({toolType:behavior.form.toolType,type:behavior.form.type,showStatisticsType:behavior.form.showStatisticsType,lookWorks:behavior.form.lookWorks})
               } else {
-								this.$refs.choseWorksDetailDialogRef.open({toolType:behavior.form.toolType,toolIndex:behavior.form.toolIndex,tType: this.tType,})
+								this.$refs.choseWorksDetailDialogRef.open({toolType:behavior.form.toolType,toolIndex:behavior.form.toolIndex,tType: this.tType,lookWorks:behavior.form.lookWorks})
               }
             });
-          }else if(behavior.code === 2){
+          }else{
+            this.$refs.choseWorksDetailDialogRef.close()
+          }
+           if(behavior.code === 2){
 						if(this.$refs.statisticalAnalysisRef.show){
 							this.$refs.statisticalAnalysisRef.splitScreenFn({type:behavior.form.type})
 						}else{
@@ -20304,7 +20483,42 @@ export default {
       				  toolIndex: behavior.form.toolIndex
       				});
 						}
-					}
+					}else{
+            this.$refs.statisticalAnalysisRef.close();
+          }
+          if(behavior.form.taskCount!=="" && behavior.form.courseType !==""){
+
+            let oldData = [parseInt(this.courseType),parseInt(this.taskCount)]
+            let newData = [parseInt(behavior.form.courseType),parseInt(behavior.form.taskCount)]
+
+            if(this.courseType !=behavior.form.courseType){
+              this.courseType = behavior.form.courseType;
+            }
+            if(this.taskCount !=behavior.form.taskCount){
+              this.taskCount = behavior.form.taskCount;
+            }
+
+              var a = document.scrollingElement;
+                let target = document.querySelector(`#gj${behavior.form.toolType}`);
+                if (target) {
+                  target.scrollIntoView(true);
+                  setTimeout(() => {
+                    a.scrollTop = 0
+                  }, 0);
+                }
+
+            // if(behavior.form.navId){
+            //   this.navId = behavior.form.navId
+            // }
+            // console.log("分屏阶段和任务",JSON.stringify(oldData),JSON.stringify(newData))
+            if(JSON.stringify(oldData)!=JSON.stringify(newData)){
+              // console.log("分屏测试====",JSON.stringify(oldData),JSON.stringify(newData))
+              this.getCourseDetail()
+            }
+            this.setContent2(false)
+
+            
+          }
         } else {
         }
       }
@@ -20374,7 +20588,22 @@ export default {
         this.splitScreenData.isOpen &&
         this.splitScreenData.uid == this.splitScreenData.myUid
       ) {
-        this.splitScreenData.behavior = newValue;
+        let _behavior = null;
+        if(!newValue){
+          _behavior = {}
+        }else{
+          _behavior = newValue
+        }
+        if(_behavior.form){
+          _behavior.form.taskCount = this.taskCount;
+          _behavior.form.courseType = this.courseType
+        }else{
+          _behavior.form = {
+            taskCount:this.taskCount,
+            courseType:this.courseType
+          }
+        }
+        this.splitScreenData.behavior = _behavior;
         this.updateSplitScreenData(0);
       }
     },
@@ -20382,7 +20611,7 @@ export default {
       this.IsLookOpen = flag;
 			this.updateLookOpen();
 			this.followingMode(flag)
-      
+
     },
     OpenJobPreview(flag) {
       this.sIsOpen = flag;
@@ -20433,9 +20662,11 @@ export default {
     window.onresize = null;
     clearInterval(this.timer);
     this.timer = null;
+    clearInterval(this.timer2);
+    this.timer2 = null;
     clearInterval(this.opertimer);
     this.opertimer = null;
-		this.updateSplitScreenData(1); 
+		this.updateSplitScreenData(1);
   },
   computed: {
     contentConvent() {
@@ -20533,7 +20764,7 @@ export default {
           //       }else if(a[k].removed == true){
           //         w = '<span>' + a[k - 1].value + '</span>' + '<span style="text-decoration: line-through;color:red">' + a[k].value + '</span>';
           //       }
-              
+
           //   }else{
           //     if(k == a.length - 1){
           //       if(a[k].added == true){
@@ -20557,7 +20788,7 @@ export default {
         return c;
       };
     },
-		
+
   },
   mounted() {
     document.body.addEventListener("click", (e) => {
@@ -20804,6 +21035,8 @@ export default {
   width: 100%;
   height: auto;
   padding-bottom: 20px;
+  margin-left: 2px;
+  min-height: 90%;
 }
 
 .study_top .checkbox {
@@ -23287,7 +23520,7 @@ export default {
 .checkbox>.cb-tabList{
 	display:flex;
 	align-items:center;
-	
+
 }
 
 .cb-tabList>div{
@@ -24899,7 +25132,7 @@ ol {
   display: flex;
   flex-direction: row;
   flex-wrap: nowrap;
-  align-items: flex-start;    
+  align-items: flex-start;
   padding: 0 20px 20px 20px;
   box-sizing: border-box;
 }
@@ -24988,7 +25221,7 @@ ol {
 }
 
 .isUpdateToolDetailClass{
- padding: 0 !important; 
+ padding: 0 !important;
 }
 
 .isUpdateToolDetailClass textarea{
@@ -25032,4 +25265,30 @@ ol {
   background: #409eff;
   color: #fff;
 }
-</style>
+.dialog_diyCopy >>> .el-dialog__header {
+  display: none !important;
+}
+.dialog_diyCopy >>> .el-dialog__body {
+  padding: 0 !important;
+  height: 100% !important;
+}
+.confirmOpenDigCss > div{
+  font-size: 14px;
+  color: rgba(0, 0, 0, 0.6);
+}
+.confirmOpenDigCss >>> .el-dialog{
+  border-radius: 6px;
+}
+.confirmOpenDigCss >>> .el-dialog__body{
+  padding: 25px !important;
+}
+.confirmOpenDigCss > span{
+  font-size: 16px;
+  font-weight: 600;
+  color: rgba(0, 0, 0, 0.8);
+}
+div::-webkit-scrollbar {
+    width: 10px;
+    height: 6px;
+}
+</style>

+ 3 - 3
src/components/studySutdentClass/commpont/markDialog.vue

@@ -1712,8 +1712,7 @@ export default {
   height: 100%;
 }
 .left {
-  /* overflow: auto; */
-  width: 310px;
+  width: 316px;
   /* border-right: 1px rgba(231, 231, 231, 1) solid; */
   padding: 20px 20px 0;
   box-sizing: border-box;
@@ -1738,8 +1737,9 @@ export default {
   margin-bottom: 5px;
 }
 .AreaCss >>> .el-textarea__inner {
+  /* height: 150px !important; */
   min-height: 150px !important;
-  /* max-height: 150px; */
+  max-height: 350px !important;
   color: #606266;
   padding-bottom: 20px;
 }

+ 339 - 52
src/components/studySutdentClass/studyStudent.vue

@@ -1,13 +1,14 @@
 <template>
-  <div class="pb_content" style="overflow: unset">
+  <div class="pb_content" style="height: 100%;overflow: unset;">
     <div
       class="pb_content_body"
       style="
         display: flex;
-        height: 900px;
+        height: 100%;
         position: relative;
         padding: 20px 0 20px 20px;
         box-sizing: border-box;
+        overflow: auto;
       "
     >
       <!-- <div class="btnAllNT">
@@ -226,7 +227,7 @@
       </div>
       <div class="body_student" :style="{width: mlDialog ? 'calc(100% - '+`${!['2'].includes(tType)?classRoomHelperWidth:'10px'}`+' - 20% - 40px)' : 'calc(100% - '+`${!['2'].includes(tType)?classRoomHelperWidth:'10px'}`+' - 10px)', left: mlDialog ? 'calc(20% + 35px)' : '10px' }">
         <div class="new_topFixed" :style="{width: mlDialog ? 'calc(100% - '+`${!['2'].includes(tType)?classRoomHelperWidth:'10px'}`+' - 20% - 40px)' : 'calc(100% - '+`${!['2'].includes(tType)?classRoomHelperWidth:'10px'}`+' - 10px)', left: mlDialog ? 'calc(20% + 35px)' : '10px' }"></div>
-        <div class="new_top" :style="{width: mlDialog ? 'calc(100% - '+`${!['2'].includes(tType)?classRoomHelperWidth:'10px'}`+' - 20% - 40px)' : 'calc(100% - '+`${!['2'].includes(tType)?classRoomHelperWidth:'10px'}`+' - 10px)', left: mlDialog ? 'calc(20% + 35px)' : '10px' }">
+        <div class="new_top" :style="{width: mlDialog ? 'calc(100% - '+`${!['2'].includes(tType)?classRoomHelperWidth:'10px'}`+' - 20% - 47px)' : 'calc(100% - '+`${!['2'].includes(tType)?classRoomHelperWidth:'10px'}`+' - 18px)', left: mlDialog ? 'calc(20% + 35px)' : '10px' }">
           <div class="courseIndex" :style="{width: (orgArray.includes(org) || oidArray.includes(oid)) && !['2'].includes(tType) ? '100%' : 'calc(100% - 745px)'}">
             <div>任务{{ taskCount + 1 }}</div>
             <el-tooltip
@@ -972,6 +973,10 @@
                               @click="addTools(tooC, toolIndex, taskCount)"
                             />
                             <div style="margin: 5px 0">电子白板</div>
+                            <div class="upload_toolBtn" v-if="tType==='1'" @click="openChoseWorksDetailDialog(tooC,toolIndex,taskCount,1)"
+                              style="position: absolute;right: 33px;top: -30px;">
+                              投影
+                            </div>
                           </div>
                           <div v-if="tooC == 3">
                             <img
@@ -980,6 +985,10 @@
                               @click="addTools(tooC, toolIndex, taskCount)"
                             />
                             <div style="margin: 5px 0">思维导图</div>
+                            <div class="upload_toolBtn" v-if="tType==='1'" @click="openChoseWorksDetailDialog(tooC,toolIndex,taskCount,3)"
+                            style="position: absolute;right: 33px;top: -30px;">
+                              投影
+                            </div>
                           </div>
                           <div v-if="tooC == 6">
                             <img
@@ -996,6 +1005,11 @@
                               @click="addTools(tooC, toolIndex, taskCount)"
                             />
                             <div style="margin: 5px 0">思维网格</div>
+                            <!-- && worksStudent[toolIndex].length>0 -->
+                            <div class="upload_toolBtn" v-if="tType==='1' " @click="openChoseWorksDetailDialog(tooC,toolIndex,taskCount,7)"
+                              style="position: absolute;right: 33px;top: -30px;">
+                              投影
+                            </div>
                           </div>
                           <div v-if="tooC == 8">
                             <img
@@ -1051,11 +1065,11 @@
                               alt
                             />
                             <div style="margin: 5px 0">选择题</div>
+                            <!-- &&worksStudent[toolIndex].length > 0 -->
                             <div
                               class="upload_toolBtn"
                               v-if="
-                                tType === '1' &&
-                                  worksStudent[toolIndex].length > 0
+                                tType === '1' 
                               "
                               @click="
                                 openChoseWorksDetailDialog(
@@ -1066,7 +1080,7 @@
                               "
                               style="position: absolute;right: 33px;top: -30px;"
                             >
-                              作业详细
+                            投影
                             </div>
                           </div>
                           <!-- <div v-if="tooC == 5">
@@ -1092,9 +1106,9 @@
                               alt
                             />
                             <div style="margin: 5px 0">问答</div>
-														<div class="upload_toolBtn" v-if="tType==='1' && worksStudent[toolIndex].length>0" @click="openChoseWorksDetailDialog(tooC,toolIndex,taskCount,15)"
+														<div class="upload_toolBtn" v-if="tType==='1'" @click="openChoseWorksDetailDialog(tooC,toolIndex,taskCount,15)"
                               style="position: absolute;right: 135px;top: -45px;height: 40px;display: flex;align-items: center;justify-content: center;background: #409EFF;">
-                              作业详细
+                              投影
                             </div>
                           </div>
                           <div v-if="tooC == 26">
@@ -1230,9 +1244,9 @@
                               alt
                             />
                             <div style="margin: 5px 0">个人评价</div>
-                            <div class="upload_toolBtn" v-if="tType==='1' && worksStudent[toolIndex].length>0" @click="openChoseWorksDetailDialog(tooC,toolIndex,taskCount,40)"
+                            <div class="upload_toolBtn" v-if="tType==='1'" @click="openChoseWorksDetailDialog(tooC,toolIndex,taskCount,40)"
                               style="position: absolute;right: 33px;top: -30px;">
-                              作业详细
+                              投影
                             </div>
                           </div>
                           <div v-if="tooC == 41">
@@ -1242,9 +1256,9 @@
                               alt
                             />
                             <div style="margin: 5px 0">选择匹配</div>
-														<div class="upload_toolBtn" v-if="tType==='1' && worksStudent[toolIndex].length>0" @click="openChoseWorksDetailDialog(tooC,toolIndex,taskCount,41)"
+														<div class="upload_toolBtn" v-if="tType==='1'" @click="openChoseWorksDetailDialog(tooC,toolIndex,taskCount,41)"
                               style="position: absolute;right: 33px;top: -30px;">
-                              作业详细
+                              投影
                             </div>
                           </div>
                           <div v-if="tooC == 44">
@@ -1262,9 +1276,9 @@
                               alt
                             />
                             <div style="margin: 5px 0">排序</div>
-														<div class="upload_toolBtn" v-if="tType==='1' && worksStudent[toolIndex].length>0" @click="openChoseWorksDetailDialog(tooC,toolIndex,taskCount,47)"
+														<div class="upload_toolBtn" v-if="tType==='1'" @click="openChoseWorksDetailDialog(tooC,toolIndex,taskCount,47)"
                               style="position: absolute;right: 33px;top: -30px;">
-                              作业详细
+                              投影
                             </div>
                           </div>
                           <div v-if="tooC == 48">
@@ -1274,6 +1288,10 @@
                               alt
                             />
                             <div style="margin: 5px 0">表格</div>
+                            <div class="upload_toolBtn" v-if="tType==='1'" @click="openChoseWorksDetailDialog(tooC,toolIndex,taskCount,48)"
+                              style="position: absolute;right: 33px;top: -30px;">
+                              投影
+                            </div>
                           </div>
                           <div v-if="tooC == 52">
                             <img
@@ -1282,6 +1300,10 @@
                               alt
                             />
                             <div style="margin: 5px 0">文档</div>
+                            <div class="upload_toolBtn" v-if="tType==='1'" @click="openChoseWorksDetailDialog(tooC,toolIndex,taskCount,52)"
+                              style="position: absolute;right: 33px;top: -30px;">
+                              投影
+                            </div>
                           </div>
                           <div v-if="tooC == 49">
                             <img
@@ -1290,6 +1312,10 @@
                               alt
                             />
                             <div style="margin: 5px 0">学生分组</div>
+                            <div class="upload_toolBtn" v-if="tType==='1'" @click="openChoseWorksDetailDialog(tooC,toolIndex,taskCount,49)"
+                              style="position: absolute;right: 33px;top: -30px;">
+                              投影
+                            </div>
                           </div>
                           <div v-if="tooC == 57">
                             <img
@@ -12939,8 +12965,8 @@
       width="100%"
       :before-close="handleClose"
       :show-close="false"
-      class="dialog_diy full_diy"
-      :class="{ full_diy2: fulltype == 3 }"
+      :class="['dialog_diy','full_diy', fulltype == 3 ? 'full_diy2' : '', (splitScreenData.isOpen && (splitScreenData.uid != splitScreenData.myUid)) ? 'dialog_diyCopy' : ''] "
+
     >
       <div slot="title" class="header-title">
         <div style="color: #fff">查看文档</div>
@@ -12957,7 +12983,27 @@
           退出全屏
         </div>
       </div>
-      <div style="height: 100%">
+      <div style="height: 100%;position: relative;">
+        <el-button
+          v-if="(splitScreenData.isOpen && (splitScreenData.uid != splitScreenData.myUid))"
+          size="medium" 
+          type="primary"
+          @click="
+            () => {
+              (fullDialogVisible = false),
+                changeSplitScreenBehavior({ code: 99 });
+            }
+          "
+          style="
+            cursor: pointer;
+            position: absolute;
+            top: 10px;
+            right: 20px;
+            color: #fff;
+          "
+        >
+          退出全屏
+        </el-button>
         <div
           class="wheel"
           v-if="
@@ -14424,7 +14470,7 @@
           <!-- <el-input v-model="groupJson.number" placeholder="2-10人以内"
             style="width: 150px; margin: 10px 10px 0 0"></el-input> -->
           <el-input
-            v-model="groupJson.number"
+            v-model="groupJson2.number"
             style="width: 150px"
             placeholder="请输入2-10的数字"
             @change="numberPan"
@@ -14984,10 +15030,33 @@
       :chapInfoListData="chapInfoList"
       :courseType="courseType"
       :taskCount="taskCount"
+			@openWord="openWord"
+			@openScore="openScore"
       @deleteWorks="deleteWorks"
       @openTools="openTools"
       @changeSplitScreenBehavior="changeSplitScreenBehavior"
     />
+    <el-dialog
+      :visible.sync="confirmOpenDig"
+      width="500px"
+      :modal="false"
+      class="confirmOpenDigCss dialog_diyCopy"
+      :before-close="handleClose">
+      <div style="display: flex;align-items: center;">
+        <img src="../../assets/icon/course/confirmOpenDig.svg" alt="">
+        <span>“{{ courseDetail.title }}”开课啦</span>
+      </div>
+      <div style="margin: 20px 0 35px;">
+        <div style="margin-bottom: 10px;">接下来你将跟随老师一起开始今天的学习! </div>
+        <div>要认真听讲哦~</div>
+      </div>
+      
+
+      <div style="text-align: center;">
+        <el-button type="primary" style="width: 95%;" @click="confirmOpen">开始学习</el-button>
+      </div>
+   
+    </el-dialog>
   </div>
 </template>
 
@@ -15033,6 +15102,11 @@ import markScore from "./commpont/markScore";
 import markDialog from "./commpont/markDialog";
 import evaTable from "./commpont/evaTable";
 
+var OpenCC = require("opencc-js");
+let converter = OpenCC.Converter({
+  from: "hk",
+  to: "cn"
+});
 const getFile = (url) => {
   return new Promise((resolve, reject) => {
     var credentials = {
@@ -15395,6 +15469,7 @@ export default {
       isHovered2: false,
 			commentTagShow:0,
       timer: null,
+      timer2: null,
       opertimer: null,
       showType: '',
       fileType: 0,
@@ -15489,6 +15564,9 @@ export default {
         loading:false,
         behavior:null,
       },
+      confirmOpenDig:false,
+      confirmOpenDigData:'',
+      
       refreshKey: 0,
       AIloading: [],
       worksStudentCopy: [],
@@ -16388,6 +16466,8 @@ export default {
         this.selectPz();
         this.getHomeWork();
         this.getCourseDetail(2);
+        this.changeSplitScreenBehavior({form:{courseType:this.courseType,taskCount:this.taskCount,toolType:k}})
+
 				if(flag){
 					if(flag2){
 						this.insertMemorandum(`选择<span class="variable">工具${k+1}:${this.toolsList[this.navList[i].task[j].tool[k].tool]}</span>`)
@@ -16521,6 +16601,7 @@ export default {
         this.videoDetail.sources[0].src = "";
       }
       this.commentIndexJson = {};
+      this.changeSplitScreenBehavior({code:99})
       done();
     },
     fullTools() {
@@ -20003,6 +20084,8 @@ export default {
       this.courseType = s;
       this.navId = i;
       this.taskCount = n;
+      this.changeSplitScreenBehavior({form:{courseType:this.courseType,taskCount:this.taskCount}})
+
       this.navList[this.courseType].task[this.taskCount].isOpen =
         !this.navList[this.courseType].task[this.taskCount].isOpen;
       if (this.IsLookOpen) {
@@ -20022,7 +20105,7 @@ export default {
           }, 0)
         })
       }
-      this.showType = 7;
+      // this.showType = 7;
       this.isNoHomeWork = false;
       (this.studyJuri = [
         {
@@ -20228,6 +20311,16 @@ export default {
               this.fileC[i] = c.filter((el) => {
                 return el.type == 12;
               });
+              if (this.tType == 2) {
+                if (this.fileC[i].length) {
+                  let yym1 =  this.fileC[i].filter(e=>{
+                    if(!converter(e.name).includes(converter("教案"))){
+                      return e
+                    }
+                  })
+                  this.fileC[i] = yym1
+                }
+              }
               // else if (c[j].type == 12) {
               //     this.fileC[i].push(c[j]);
               //   }
@@ -20355,10 +20448,22 @@ export default {
               this.isClickNav = "";
               this.showType = "";
             }
+            if (this.tType == 2) {
+              _chapterData.forEach((e,i)=>{
+                if (e.length) {
+                  let yym =  e.filter(k=>{
+                    if(!converter(k.name).includes(converter("教案"))){
+                      return k
+                    }
+                  })
+                  _chapterData[i] = yym
+                }
+              })
+            }
 
             this.vChapterData = _chapterData;
           } else {
-            this.showType = 0;
+            // this.showType = 0;
             var a = JSON.parse(res.data[0][0].chapters)[this.courseType]
               .chapterInfo[0].taskJson;
             var b = [
@@ -20410,6 +20515,16 @@ export default {
               this.fileC[i] = c.filter((el) => {
                 return el.type == 12;
               });
+              if (this.tType == 2) {
+                if (this.fileC[i].length) {
+                  let yym1 =  this.fileC[i].filter(e=>{
+                    if(!converter(e.name).includes(converter("教案"))){
+                      return e
+                    }
+                  })
+                  this.fileC[i] = yym1
+                }
+              }
               for (var j = 0; j < c.length; j++) {
                 if (c[j].type == 7) {
                   this.chapToolList[i].push(c[j]);
@@ -20442,8 +20557,8 @@ export default {
               _chapterData[taskCount].length &&
               _chapterData[taskCount][0].type == 2
             ) {
-              this.showType = 0;
-              this.pptImgUrl1 = _chapterData[taskCount][0].url;
+              // this.showType = 0;
+              // this.pptImgUrl1 = _chapterData[taskCount][0].url;
             } else {
               if (_chapterData[taskCount].length > 0) {
                 let _url = _chapterData[taskCount][0].url;
@@ -20451,22 +20566,22 @@ export default {
                   _chapterData[taskCount][0].type == 8 ||
                   _chapterData[taskCount][0].type == 14
                 ) {
-                  this.showType = 2;
+                  // this.showType = 2;
                   if (
                     _url.indexOf("https://") == -1 &&
                     _url.indexOf("http://") == -1
                   ) {
                     _url = "https://" + _url;
                   }
-                  this.pptImgUrl1 = _url;
+                  // this.pptImgUrl1 = _url;
                 } else if (_chapterData[taskCount][0].type == 3) {
                   if (
                     _url
                       .split(".")
                       [_url.split(".").length - 1].toLocaleUpperCase() == "PDF"
                   ) {
-                    this.showType = 3;
-                    this.pptImgUrl1 = _url;
+                    // this.showType = 3;
+                    // this.pptImgUrl1 = _url;
                   } else if (
                     this.isAssetTypeAnImage(
                       _url
@@ -20474,17 +20589,17 @@ export default {
                         [_url.split(".").length - 1].toLocaleLowerCase()
                     )
                   ) {
-                    this.showType = 4;
-                    this.pptImgUrl1 = _url;
+                    // this.showType = 4;
+                    // this.pptImgUrl1 = _url;
                   } else {
-                    this.showType = 2;
-                    this.pptImgUrl1 =
-                      "https://view.officeapps.live.com/op/view.aspx?src=" +
-                      encodeURIComponent(_url);
+                    // this.showType = 2;
+                    // this.pptImgUrl1 =
+                    //   "https://view.officeapps.live.com/op/view.aspx?src=" +
+                    //   encodeURIComponent(_url);
                   }
                 } else if (_chapterData[taskCount][0].type == 13) {
-                  this.showType = 4;
-                  this.pptImgUrl1 = _url;
+                  // this.showType = 4;
+                  // this.pptImgUrl1 = _url;
                 } else if (_chapterData[taskCount][0].type == 6) {
                   this.showType = 1;
                   this.text = this.textList[taskCount][0];
@@ -20497,9 +20612,21 @@ export default {
               _chapterData[taskCount][0].type == 12
             ) {
               this.isClickNav = "";
-              this.showType = "";
+              // this.showType = "";
             }
 
+            if (this.tType == 2) {
+              _chapterData.forEach((e,i)=>{
+                if (e.length) {
+                  let yym =  e.filter(k=>{
+                    if(!converter(k.name).includes(converter("教案"))){
+                      return k
+                    }
+                  })
+                  _chapterData[i] = yym
+                }
+              })
+            }
             this.vChapterData = _chapterData;
             this.$forceUpdate();
           }
@@ -20585,7 +20712,10 @@ export default {
             clearInterval(_this.timer);
             _this.timer = null;
           }
-
+          // if (_this.timer2) {
+          //   clearInterval(_this.timer2);
+          //   _this.timer2 = null;
+          // }
           if (_this.tcid) {
             _this.getCourseGroup(gindex);
           } else {
@@ -20621,7 +20751,6 @@ export default {
             _this.selectStudent();
             _this.selectSLook();
             _this.getPick();
-						_this.getSplitScreenData();//获取分屏数据
             if (_this.courseDetail.userid == _this.userid && _this.IsFollow) {
               _this.setCTask();
             }
@@ -20636,6 +20765,13 @@ export default {
               _this.selectPz();
             }
           }, 5000);
+          if (_this.timer2 == null) {
+            _this.timer2 = setInterval(()=> {
+              _this.getSplitScreenData();//获取分屏数据
+            },  5000);
+          }
+
+         
           _this.$nextTick(function () {
             setTimeout(() => {
               // var a =
@@ -22694,7 +22830,8 @@ export default {
         this.fullUrl =
           "https://view.officeapps.live.com/op/view.aspx?src=" + encodeURIComponent(_uuurl);
       }
-			this.changeSplitScreenBehavior({code:0,form:[t,f]})
+      this.changeSplitScreenBehavior({code:0,form:{t:t,f:f}})
+  
     },
     openSname(n, id, i, uid) {
       this.snameWid = id;
@@ -23455,6 +23592,8 @@ export default {
           }
         }
       }
+      console.log('array',array);
+
       this.wordCloudData = array;
       this.dialogVisibleWordCloud = true;
     },
@@ -23919,6 +24058,7 @@ export default {
         this.splitScreenData.uid = this.splitScreenData.myUid;
         this.splitScreenData.behavior = null;
         let status = await this.updateSplitScreenData(0);
+        this.changeSplitScreenBehavior({form:{}})
 
         if (status == 1) {
           this.$message.success("已开启分屏");
@@ -23934,6 +24074,47 @@ export default {
         }
       }
     },
+    enterFullScreen() {
+      let element = document.documentElement;
+      if (element.requestFullscreen) {
+        element.requestFullscreen();
+      } else if (element.mozRequestFullScreen) { /* Firefox */
+        element.mozRequestFullScreen();
+      } else if (element.webkitRequestFullscreen) { /* Chrome, Safari & Opera */
+        element.webkitRequestFullscreen();
+      } else if (element.msRequestFullscreen) { /* IE/Edge */
+        element.msRequestFullscreen();
+      }
+    },
+    exitFullScreen() {
+      if (document.exitFullscreen) {
+        document.exitFullscreen();
+      } else if (document.mozCancelFullScreen) { /* Firefox */
+        document.mozCancelFullScreen();
+      } else if (document.webkitExitFullscreen) { /* Chrome, Safari and Opera */
+        document.webkitExitFullscreen();
+      } else if (document.msExitFullscreen) { /* IE/Edge */
+        document.msExitFullscreen();
+      }
+    },
+    confirmOpen(){
+      this.splitScreenData.isOpen = true;
+      this.splitScreenData.uid = this.confirmOpenDigData.uid;
+      this.splitScreenData.userId = this.confirmOpenDigData.userId;
+      this.splitScreenData.behavior = this.confirmOpenDigData.behavior;
+      this.confirmOpenDig = false
+      if (!document.fullscreenElement) {
+        this.enterFullScreen();
+      } 
+        if (this.timer2) {
+          clearInterval(this.timer2);
+          this.timer2 = null;
+        } 
+        this.timer2 = setInterval(()=> {
+          this.getSplitScreenData();//获取分屏数据
+        }, 1000);
+      this.$message.success("分屏模式已开启");
+    },
     getSplitScreenData() {
       // return;
       if (this.tType != 1) return;
@@ -23958,11 +24139,8 @@ export default {
               this.splitScreenData.behavior = null;
               await this.updateSplitScreenData(1);
             } else if (!this.splitScreenData.isOpen && data.isOpen) {
-              this.splitScreenData.isOpen = true;
-              this.splitScreenData.uid = data.uid;
-              this.splitScreenData.userId = data.userId;
-              this.splitScreenData.behavior = data.behavior;
-              this.$message.success("分屏模式已开启");
+              this.confirmOpenDig = true
+              this.confirmOpenDigData = data
             } else if (this.splitScreenData.isOpen && !data.isOpen) {
               this.splitScreenData.isOpen = false;
               this.splitScreenData.userId = "";
@@ -23984,6 +24162,26 @@ export default {
               this.splitScreenData.uid = "";
               this.splitScreenData.behavior = null;
               this.$message.error("已结束分屏模式");
+              if (this.timer2) {
+                clearInterval(this.timer2);
+                this.timer2 = null;
+              }
+              this.timer2 = setInterval(()=> {
+                this.getSplitScreenData();//获取分屏数据
+              }, 5000);
+              this.$confirm("教师已结束分屏,确定后自由预览。", "提示", {
+                confirmButtonText: '确定', //确认按钮的文字
+                showCancelButton: false, //是否显示取消按钮
+                showClose: false, //是否显示关闭按钮
+                closeOnClickModal: false, //是否可以通过点击空白处关闭弹窗
+                type: "warning",
+              })
+                .then(() => {
+                  if (document.fullscreenElement) {
+                      this.exitFullScreen();
+                  } 
+                })
+                .catch(() => {});
             }
           }
         })
@@ -24000,17 +24198,21 @@ export default {
         if (behavior) {
           if (behavior.code === 99) {
             //初始化
-            this.fullDialogVisible = false;
+            this.fullDialogVisible = false;             
 						if(this.$refs.choseWorksDetailDialogRef.show){
 							this.$refs.choseWorksDetailDialogRef.close();
 						}
 						if(this.$refs.statisticalAnalysisRef.show){
 							this.$refs.statisticalAnalysisRef.close();
 						}
-          } else if (behavior.code === 0) {
+          }
+           if (behavior.code === 0) {
             //开启内容列表弹窗
-            this.checkFileFull1(behavior.form[0], behavior.form[1]);
-          } else if (behavior.code === 1) {
+            this.checkFileFull1(behavior.form.t, behavior.form.f);
+            }else{
+              this.fullDialogVisible = false;         
+            }
+           if (behavior.code === 1) {
             //关于选择题的作业详细的操作
             // toolIndex:toolIndex,courseType:this.courseType,taskCount:this.taskCount,type:0
             if(this.courseType!==behavior.form.courseType || this.taskCount!==behavior.form.taskCount){
@@ -24020,12 +24222,15 @@ export default {
             this.$nextTick(() => {
 							if (this.$refs.choseWorksDetailDialogRef.show) {
                 //已经打开了
-								this.$refs.choseWorksDetailDialogRef.splitScreenFn({toolType:behavior.form.toolType,type:behavior.form.type,showStatisticsType:behavior.form.showStatisticsType})
+								this.$refs.choseWorksDetailDialogRef.splitScreenFn({toolType:behavior.form.toolType,type:behavior.form.type,showStatisticsType:behavior.form.showStatisticsType,lookWorks:behavior.form.lookWorks})
               } else {
-								this.$refs.choseWorksDetailDialogRef.open({toolType:behavior.form.toolType,toolIndex:behavior.form.toolIndex,tType: this.tType,})
+								this.$refs.choseWorksDetailDialogRef.open({toolType:behavior.form.toolType,toolIndex:behavior.form.toolIndex,tType: this.tType,lookWorks:behavior.form.lookWorks})
               }
             });
-          }else if(behavior.code === 2){
+          }else{
+            this.$refs.choseWorksDetailDialogRef.close()
+          }
+           if(behavior.code === 2){
 						if(this.$refs.statisticalAnalysisRef.show){
 							this.$refs.statisticalAnalysisRef.splitScreenFn({type:behavior.form.type})
 						}else{
@@ -24035,7 +24240,42 @@ export default {
       				  toolIndex: behavior.form.toolIndex
       				});
 						}
-					}
+					}else{
+            this.$refs.statisticalAnalysisRef.close();
+          }
+          if(behavior.form.taskCount!=="" && behavior.form.courseType !==""){
+
+            let oldData = [parseInt(this.courseType),parseInt(this.taskCount)]
+            let newData = [parseInt(behavior.form.courseType),parseInt(behavior.form.taskCount)]
+
+            if(this.courseType !=behavior.form.courseType){
+              this.courseType = behavior.form.courseType;
+            }
+            if(this.taskCount !=behavior.form.taskCount){
+              this.taskCount = behavior.form.taskCount;
+            }
+
+              var a = document.scrollingElement;
+                let target = document.querySelector(`#gj${behavior.form.toolType}`);
+                if (target) {
+                  target.scrollIntoView(true);
+                  setTimeout(() => {
+                    a.scrollTop = 0
+                  }, 0);
+                }
+
+            // if(behavior.form.navId){
+            //   this.navId = behavior.form.navId
+            // }
+            // console.log("分屏阶段和任务",JSON.stringify(oldData),JSON.stringify(newData))
+            if(JSON.stringify(oldData)!=JSON.stringify(newData)){
+              // console.log("分屏测试====",JSON.stringify(oldData),JSON.stringify(newData))
+              this.getCourseDetail()
+            }
+            this.setContent2(false)
+
+            
+          }
         } else {
         }
       }
@@ -24104,7 +24344,22 @@ export default {
         this.splitScreenData.isOpen &&
         this.splitScreenData.uid == this.splitScreenData.myUid
       ) {
-        this.splitScreenData.behavior = newValue;
+        let _behavior = null;
+        if(!newValue){
+          _behavior = {}
+        }else{
+          _behavior = newValue
+        }
+        if(_behavior.form){
+          _behavior.form.taskCount = this.taskCount;
+          _behavior.form.courseType = this.courseType
+        }else{
+          _behavior.form = {
+            taskCount:this.taskCount,
+            courseType:this.courseType
+          }
+        }
+        this.splitScreenData.behavior = _behavior;
         this.updateSplitScreenData(0);
       }
     },
@@ -24161,7 +24416,11 @@ export default {
   beforeDestroy() {
     window.onresize = null;
     clearInterval(this.timer);
+    clearInterval(this.timer2);
+
     this.timer = null;
+    this.timer2 = null;
+
     clearInterval(this.opertimer);
     this.opertimer = null;
 		this.updateSplitScreenData(1); 
@@ -24542,6 +24801,8 @@ export default {
   width: 100%;
   height: auto;
   padding-bottom: 20px;
+  margin-left: 2px;
+  min-height: 90%;
 }
 
 .study_top .checkbox {
@@ -28789,4 +29050,30 @@ ol {
   color: #fff;
   cursor: pointer;
 }
+.dialog_diyCopy >>> .el-dialog__header {
+  display: none !important;
+}
+.dialog_diyCopy >>> .el-dialog__body {
+  padding: 0 !important;
+  height: 100% !important;
+}
+.confirmOpenDigCss > div{
+  font-size: 14px;
+  color: rgba(0, 0, 0, 0.6);
+}
+.confirmOpenDigCss >>> .el-dialog{
+  border-radius: 6px;
+}
+.confirmOpenDigCss >>> .el-dialog__body{
+  padding: 25px !important;
+}
+.confirmOpenDigCss > span{
+  font-size: 16px;
+  font-weight: 600;
+  color: rgba(0, 0, 0, 0.8);
+}
+div::-webkit-scrollbar {
+    width: 10px;
+    height: 6px;
+}
 </style>

部分文件因为文件数量过多而无法显示