SanHQin 2 месяцев назад
Родитель
Сommit
7998a329df

+ 1 - 1
dist/index.html

@@ -27,7 +27,7 @@
     html,
     body{
       font-family: '黑体';
-    }</style><link href=./static/css/app.b39ceb318dedf9e22011234f1aeeee8b.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.43cd677d9291e0373eea.js></script><script type=text/javascript src=./static/js/app.bd2313dd2b3358e29a06.js></script></body></html><script>function stopSafari() {
+    }</style><link href=./static/css/app.e02944c88d579dfadbb478ad05fa0401.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.43cd677d9291e0373eea.js></script><script type=text/javascript src=./static/js/app.3db0c85be684846b6859.js></script></body></html><script>function stopSafari() {
     //阻止safari浏览器双击放大功能
     let lastTouchEnd = 0  //更新手指弹起的时间
     document.documentElement.addEventListener("touchstart", function (event) {

Разница между файлами не показана из-за своего большого размера
+ 0 - 0
dist/static/css/app.e02944c88d579dfadbb478ad05fa0401.css


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
dist/static/css/app.e02944c88d579dfadbb478ad05fa0401.css.map


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
dist/static/js/app.3db0c85be684846b6859.js


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
dist/static/js/app.3db0c85be684846b6859.js.map


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
dist/static/js/manifest.3ad1d5771e9b13dbdad2.js.map


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

@@ -813,7 +813,7 @@ ${_textData}
     },
     setWidth() {
       let w = this.$refs.ch_box;
-      let w2 = w.offsetWidth + 30 + "px";
+      let w2 = w.offsetWidth + 20 + "px";
       this.$emit("setWidth", w2);
     },
     openSetting() {

+ 575 - 0
src/components/classRoomHelper/studentIndex.vue

@@ -0,0 +1,575 @@
+<template>
+  <div class="ch_box" ref="ch_box">
+    <div class="ch_content_box" v-show="type == 1">
+      <workFlowIframe v-show="itemType == 7 && iframeSrc2.length" :iframeSrc="iframeSrc2"></workFlowIframe>
+    </div>
+    <div class="ch_nav_box">
+
+      <div class="ch_nav_box_top">
+        <div @click="$emit('backPage')" class="ch_nav_box_top_item">
+        <img :src="require('../../assets/icon/course/return.png')" alt="" />
+      </div>
+
+      <div @click="$emit('refresh')" class="ch_nav_box_top_item">
+        <img :src="require('../../assets/icon/course/refresh.png')" alt="" />
+      </div>
+      </div>
+
+      <div class="ch_nav_box_middle">
+        <div
+          v-if="iframeSrc2.length"
+          :class="[
+            'ch_nav_box_middle_item',
+            itemType == 7 ? 'ch_nav_box_middle_item_active' : ''
+          ]"
+          @click.stop="changeItemType(7)"
+        >
+          <img
+            v-if="itemType == 7"
+            :src="require('../../assets/icon/course/teachingAssistant_active.svg')"
+          />
+          <img
+            v-if="itemType != 7"
+            :src="require('../../assets/icon/course/teachingAssistant_default.svg')"
+          />
+          <div>助教</div>
+        </div>
+      </div>
+      <div class="ch_nav_box_bottom">
+        <div @click.stop="$emit('goStep', 0)">
+          <el-tooltip
+            class="item"
+            effect="dark"
+            content="上一步"
+            placement="top"
+          >
+            <img :src="require('../../assets/icon/course/last.png')" />
+          </el-tooltip>
+        </div>
+
+        <div @click.stop="$emit('goStep', 1)">
+          <el-tooltip
+            class="item"
+            effect="dark"
+            content="下一步"
+            placement="top"
+          >
+            <img :src="require('../../assets/icon/course/next.png')" />
+          </el-tooltip>
+        </div>
+
+        <div @click="openSetting">
+          <el-tooltip
+            class="item"
+            effect="dark"
+            :content="type == 0 ? '展开' : '折叠'"
+            placement="top"
+          >
+            <img :src="require('../../assets/icon/course/menu.png')" />
+          </el-tooltip>
+        </div>
+      </div>
+    </div>
+    <!-- <div
+      v-if="fold"
+      class="itemFold"
+      ref="itemFoldRef"
+      v-click-outside="handleBlur"
+    >
+      <div @click="$emit('backPage')">
+        <img :src="require('../../assets/icon/course/return.png')" alt="" />
+        <span>返回</span>
+      </div>
+
+      <div @click="$emit('refresh')">
+        <img :src="require('../../assets/icon/course/refresh.png')" alt="" />
+        <span>刷新</span>
+      </div>
+    </div> -->
+
+  </div>
+</template>
+
+<script>
+
+import workFlowIframe from "./component/workFlowIframe.vue";
+export default {
+  emits: [
+    "refresh",
+    "goStep",
+    "backPage",
+    "authority",
+    "review",
+    "stopRecording",
+    "startRecording"
+  ],
+  components: {
+    workFlowIframe
+  },
+  props: {
+    courseDetail: {
+      type: Object,
+      default: () => {}
+    },
+    tType: {
+      type: String,
+      default: 0
+    },
+    navList: {
+      type: Array,
+      default: () => []
+    },
+    tcid: {
+      type: String,
+      default: ""
+    },
+    courseType: {
+      type: Number,
+      default: 0
+    },
+    taskCount: {
+      type: Number,
+      default: 0
+    },
+    worksStudent: {
+      type: Array,
+      default: () => []
+    },
+    fileList: {
+      type: Array,
+      default: () => []
+    },
+    videoStart: {
+      type: Boolean,
+      default: false
+    },
+    IsFollow: {
+      type: Boolean,
+      default: false
+    },
+    sIsOpen: {
+      type: Boolean,
+      default: false
+    },
+    IsLookOpen: {
+      type: Boolean,
+      default: false
+    },
+    splitScreenData: {
+      type: Object,
+      default: () => {
+        return {
+          isOpen: false,
+          userId: "",
+          uid: "",
+          myUid: ""
+        };
+      }
+    }
+  },
+  data() {
+    return {
+      isBtn:false,
+      userid: this.$route.query.userid,
+      oid: this.$route.query.oid,
+      courseId: this.$route.query.courseId,
+      tcid2: this.$route.query.tcid,
+      type: 0,
+      itemType: 0, //0--无  1-搜索  2-任务 3-对话
+      fileId: [],
+      showTipsLoading: false,
+      tipsList: [],
+      firstEnterTime: null,
+      canGetTips: true,
+      getTipsTimer: null,
+      getWangLoading: false,
+      canUseWangData: false,
+      wangData: "",
+      languageSetting: 0,
+      uploadFileStatus: {
+        file: null,
+        status: "",
+        percent: 0,
+        key: "",
+        uploadid: "",
+        loading: false
+      },
+      iframeSrc2: [],
+      canUseCourseId: ['bfbe1913-2f87-11ef-bf55-005056b86db5','3a64b199-d2eb-11ef-a2d1-005056b86db5', 'bb0b1995-0207-11ef-b534-005056b86db5', 'f77921c8-d2f1-11ef-a2d1-005056b86db5']
+    };
+  },
+	computed:{
+		showPopover:{
+			get(){
+				// return this.Annot
+				return (this.splitScreenData.isOpen && this.splitScreenData.uid === this.splitScreenData.myUid);
+			},
+			set(newValue){
+				console.log(newValue)
+
+				// this.AnnotationCanvasShow = newValue
+			}
+		}
+	},
+  watch: {
+    courseType(newValue, oldValue) {
+      this.getAiApp()
+    },
+    taskCount(newValue){
+      this.getAiApp()
+    },
+
+  },
+  mounted() {
+    let setting = this.courseDetail.setting;
+    if (setting) {
+      setting = JSON.parse(setting);
+      if (setting.languageSetting) {
+        this.languageSetting = setting.languageSetting;
+      }
+    }
+    this.setWidth();
+    this.firstEnterTime = new Date().getTime();
+    this.getAiApp();
+  },
+  methods: {
+    setWidth() {
+      let w = this.$refs.ch_box;
+      let w2 = w.offsetWidth + 20 + "px";
+      this.$emit("setWidth", w2);
+    },
+    openSetting() {
+      this.type = this.type == 1 ? 0 : 1;
+      this.$nextTick(() => {
+        if (this.type == 1) {
+          this.$parent.mlDialog = false;
+        }
+        this.setWidth();
+      });
+    },
+    changeItemType(type) {
+      this.type = 0;
+
+      if (this.itemType == type) {
+        this.itemType = 0;
+        this.type = 1;
+        this.openSetting();
+        return;
+      }
+      this.openSetting();
+      // this.$message.info("切换到"+type)
+      this.$nextTick(() => {
+        // if (this.itemType == 1 && type != 1) {
+        //   this.$refs.searchAreaRef.scrollBottom();
+        //   this.$refs.searchAreaRef.getWantSearch();
+        // } else if (this.itemType == 2) {
+        //   this.$refs.taskAreaRef.scrollBottom();
+        // } else if (this.itemType == 3) {
+        //   this.$refs.dialogAreaRef.scrollBottom();
+        // }
+        this.itemType = type;
+      });
+    },
+
+    getLang() {
+      let lang = "";
+      if (this.languageSetting == 0) {
+        lang = "Chinese.";
+      } else if (this.languageSetting == 1) {
+        lang = "Traditional Chinese.";
+      } else if (this.languageSetting == 2) {
+        lang = "English.";
+      }
+      return lang;
+    },
+    getAiApp(){
+      try {
+        let _chapters = JSON.parse(this.courseDetail.chapters);
+        let _list = _chapters[this.courseType].chapterInfo[0].taskJson[this.taskCount].chapterData;
+        let _app = _list.find(i=>i.type==15);
+        if(_app){
+          _app.src = _app.url;
+          this.iframeSrc2 = [_app]
+        }else{
+          this.iframeSrc2 = [];
+        }
+      } catch (error) {
+        console.log("👉==",error)
+        this.iframeSrc2 = [];
+      }
+    }
+  }
+};
+</script>
+
+<style scoped>
+.ch_box {
+  width: auto;
+  background: rgb(255, 255, 255);
+  position: fixed;
+  height: calc(100% - 40px);
+  border-radius: 10px;
+  box-sizing: border-box;
+  right: 20px;
+  display: flex;
+  top: 20px;
+  z-index: 1000;
+}
+
+.ch_nav_box {
+  height: 100%;
+  width: 65px;
+  display: flex;
+  flex-direction: column;
+  align-items: center;
+  overflow-y: auto !important; /* 上下溢出显示滚动条 */
+  overflow-x: hidden !important; /* 左右溢出正常溢出 */
+  position: relative;
+  box-sizing: border-box;
+}
+
+.ch_content_box {
+  width: 400px;
+  height: 100%;
+  border-right: 2px solid #e7e7e7;
+}
+
+.ch_nav_box_bottom {
+  width: 100%;
+  box-sizing: border-box;
+  border-top: solid 1px #eaeaea;
+  display: flex;
+  flex-direction: column;
+}
+
+.ch_nav_box_middle {
+  width: 100%;
+  box-sizing: border-box;
+  border-top: solid 1px #eaeaea;
+  flex-direction: column;
+  justify-content: space-between;
+}
+
+.ch_nav_box_middle_item {
+  width: 100%;
+  height: 80px;
+  display: flex;
+  flex-direction: column;
+  justify-content: center;
+  align-items: center;
+  cursor: pointer;
+  transition: 0.3s;
+  font-size: 14px;
+}
+
+.ch_nav_box_middle_item_active {
+  background-color: #3681fc;
+  color: white;
+}
+
+.ch_nav_box_middle_item > img {
+  width: 24px;
+  height: 24px;
+  margin-bottom: 5px;
+}
+
+.ch_nav_box_bottom > div {
+  width: 100%;
+  height: 65px;
+  display: flex;
+  flex-direction: column;
+  justify-content: center;
+  align-items: center;
+  cursor: pointer;
+}
+
+.ch_nav_box_bottom > div > img {
+  width: 24px;
+  height: 24px;
+}
+
+.ch_nav_box_top {
+  width: 100%;
+  height: auto;
+  margin-bottom: auto;
+}
+
+.ch_nav_box_top > div {
+  width: 100%;
+  height: 65px;
+  display: flex;
+  flex-direction:column;
+  justify-content: center;
+  align-items: center;
+  cursor: pointer;
+  position: relative;
+}
+
+.boxItem {
+  width: 100%;
+  height: 65px;
+  display: flex;
+  justify-content: center;
+  align-items: center;
+  cursor: pointer;
+  position: relative;
+}
+
+.boxItem > img {
+  width: 24px;
+  height: 24px;
+  transition: 0.3s;
+}
+.ch_nav_box_top > div > img {
+  width: 24px;
+  height: 24px;
+  transition: 0.3s;
+}
+
+.itemFold {
+  position: absolute;
+  width: 130px;
+  right: 65px;
+  top: 0;
+  background: rgb(255, 255, 255);
+  box-sizing: border-box;
+  border: solid 1px #eaeaea;
+  /* border-top: solid 1px #eaeaea; */
+  z-index: 1000; /* 确保二级菜单在主菜单上层 */
+  border-radius: 10px;
+  box-sizing: border-box;
+  padding: 10px;
+  display: flex;
+  flex-direction: column;
+  justify-content: center;
+  align-items: center;
+}
+
+.itemFold > div {
+  width: 100%;
+  height: 45px;
+  display: flex;
+  justify-content: center;
+  align-items: center;
+  cursor: pointer;
+  margin: 5px 0;
+  border-radius: 10px;
+}
+
+.itemFold > div:hover {
+  background: #f3f7fd;
+}
+
+.itemFold > div > img {
+  width: 24px;
+  height: 24px;
+}
+
+.itemFold > div > span {
+  margin-left: 10px;
+}
+
+@media screen and (max-height: 820px) {
+  .ch_nav_box_bottom > div {
+    height: auto;
+    padding: 8px 0;
+  }
+
+  .ch_nav_box_middle_item {
+    height: auto;
+    padding: 8px 0;
+  }
+
+  .ch_nav_box_top > div {
+    height: auto;
+    padding: 8px 0;
+  }
+}
+
+.foldActive {
+  background-color: #f0f2f5;
+  padding: 10px;
+  border-radius: 10px;
+}
+
+.ch_nav_box_topFixed {
+  width: 100%;
+  height: 65px;
+  position: absolute;
+  top: 0;
+  left: 0;
+}
+
+.ch_nav_box_topFixed_item {
+  display: flex;
+  flex-direction: column;
+  justify-content: center;
+  align-items: center;
+  width: 100%;
+  height: 65px;
+  padding-top: 5px;
+  cursor: pointer;
+  border-radius: 10px 10px 0 0;
+}
+
+.ch_nav_box_topFixed_item > svg {
+  width: 25px;
+  height: 25px;
+  fill: #000;
+}
+
+.ch_nav_box_topFixed_item > span {
+  margin-top: 5px;
+  font-size: 14px;
+}
+
+.ch_nav_box_topFixed_item_active {
+  background-color: #3681fc;
+  color: #fff;
+}
+
+.ch_nav_box_topFixed_item_active > svg {
+  fill: #fff;
+}
+
+.ch_nav_box_topFixed_popover {
+  width: 100%;
+  height: 65px;
+  display: flex;
+}
+
+.ch_nav_box_topFixed_popover_item {
+  width: 100px;
+  height: 65px;
+  display: flex;
+  flex-direction: column;
+  justify-content: center;
+  align-items: center;
+  cursor: pointer;
+}
+
+.ch_nav_box_topFixed_popover_item > svg {
+  width: 30px;
+  height: 30px;
+  fill: #000;
+}
+
+.ch_nav_box_topFixed_popover_item > span {
+  margin-top: 5px;
+}
+
+.drawerBox {
+  width: 100%;
+  height: 100%;
+  display: flex;
+  justify-content: center;
+  align-items: center;
+  font-weight: bold;
+}
+
+.drawerBox > span {
+  /* 字体竖着排列; */
+  writing-mode: vertical-rl;
+  margin-right: 10px;
+}
+</style>

+ 2 - 0
src/components/easy/studyStudent.vue

@@ -1497,6 +1497,7 @@
         </div>
         <iframe
             style="width: 100%; height: 100%; border: none"
+						:key="diffKey"
 						allow="camera *; microphone *;display-capture;midi;encrypted-media;"
             v-else-if="fulltype == 2 && (fullUrl.indexOf('knowledge.cocorobo.cn')!=-1 || fullUrl.indexOf('cloud.cocorobo.cn')!=-1) || fullUrl.indexOf('app.cocorobo.cn')!=-1"
             :src="fullUrl"
@@ -2906,6 +2907,7 @@ export default {
       tool: {},
       isWorkTool: [16, 32, 57, 4, 45, 15, 1, 3, 6, 7, 26, 41, 47, 48, 52, 50, 40],//, 40
       videoJson: {},
+      diffKey:"1",
     };
   },
   methods: {

+ 28 - 53
src/components/easy2/studyStudent.vue

@@ -258,55 +258,10 @@
           </div>
         </div>
       </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% - 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 class="body_student" :style="{width: mlDialog ? 'calc(100% - '+`${classRoomHelperWidth}`+' - 20% - 40px)' : 'calc(100% - '+`${classRoomHelperWidth}`+' - 10px)', left: mlDialog  ? 'calc(20% + 35px)' : '10px' }">
+        <div class="new_topFixed" :style="{width: mlDialog ? 'calc(100% - '+`${classRoomHelperWidth}`+' - 20% - 40px)' : 'calc(100% - '+`${classRoomHelperWidth}`+' - 10px)', left: mlDialog  ? 'calc(20% + 35px)' : '10px' }"></div>
+        <div class="new_top" :style="{width: mlDialog ? 'calc(100% - '+`${classRoomHelperWidth}`+' - 20% - 47px)' : 'calc(100% - '+`${classRoomHelperWidth}`+' - 18px)', left: mlDialog  ? 'calc(20% + 35px)' : '10px' }">
+          <div class="courseIndex" :style="{width: (orgArray.includes(org) || oidArray.includes(oid))? '100%' : 'calc(100% - 745px)'}">
             <div>任务{{ taskCount + 1 }}</div>
             <el-tooltip
               effect="light"
@@ -326,8 +281,7 @@
           <div
             class="btnAll"
             v-show="
-              (!orgArray.includes(org) && !oidArray.includes(oid)) ||
-                ['2'].includes(tType)
+              (!orgArray.includes(org) && !oidArray.includes(oid))
             "
           >
             <div class="btnLeft">
@@ -657,6 +611,7 @@
                   <iframe
                       style="width: 100%; height: 100%; border: none"
 											allow="camera *; microphone *;display-capture;midi;encrypted-media;"
+                      :key="diffKey"
                       v-if="pptImgUrl1.indexOf('knowledge.cocorobo.cn')!=-1 || pptImgUrl1.indexOf('cloud.cocorobo.cn')!=-1 || pptImgUrl1.indexOf('app.cocorobo.cn')!=-1"
                       :src="pptImgUrl1"
                     ></iframe>
@@ -11956,6 +11911,22 @@
         )
       "
     ></classRoomHelper>
+    <studentClassRoomHelper v-else-if="['2'].includes(tType)" @studentFreePreview="studentFreePreview" @OpenJobPreview="OpenJobPreview" :videoStart="videoStart" :IsFollow="IsFollow" :sIsOpen="sIsOpen" :IsLookOpen="IsLookOpen" :splitScreenData="splitScreenData" @splitScreenBehavior="splitScreenBehavior" @startRecording="startRecording" @stopRecording="stopRecording" :fileList="vChapterData[taskCount]" :worksStudent="worksStudent" :courseType="parseInt(courseType)" :taskCount="taskCount" :tcid="tcid" :navList="navList" v-show="orgArray.includes(org) || oidArray.includes(oid)" :courseDetail="courseDetail" :tType="tType" @setWidth="setClassRoomHelperWidth" @refresh="refreshCourse" @goStep="nextOrpreSteps" @authority="juriVisible = true" @review="setPz" @backPage="goTo(
+      '/courseDetail?userid=' +
+        userid +
+        '&oid=' +
+        oid +
+        '&org=' +
+        org +
+        '&cid=' +
+        classId +
+        '&courseId=' +
+        id +
+        '&tType=' +
+        tType +
+        '&screenType=' +
+        screenType
+    )"></studentClassRoomHelper>
     <div
       class="pButton"
       @click="(pzDialog = true), selectPz()"
@@ -16246,6 +16217,7 @@ import correctText from "../components/correctText.vue";
 import scoreItem from "../scoreList/scoreItem.vue";
 import scoreZong from "../scoreZong/index.vue";
 import classRoomHelper from "../classRoomHelper/index.vue";
+import studentClassRoomHelper from '../classRoomHelper/studentIndex.vue'
 import markScore from "./commpont/markScore";
 import markDialog from "./commpont/markDialog";
 import evaTable from "./commpont/evaTable";
@@ -16350,7 +16322,8 @@ export default {
     statisticalAnalysis,
     choseWorksDetailDialog,
     appStoreC,
-    cocoFlowDia
+    cocoFlowDia,
+    studentClassRoomHelper
   },
   data() {
     return {
@@ -16764,7 +16737,8 @@ export default {
         behavior: null
       },
       confirmOpenDig:false,
-      confirmOpenDigData:''
+      confirmOpenDigData:'',
+      diffKey:"1"
     };
   },
   methods: {
@@ -22900,6 +22874,7 @@ export default {
         url = "https://" + url;
       }
       this.pptImgUrl1 = "";
+      this.diffKey = new Date().getTime();
 
       setTimeout(() => {
         this.pptImgUrl1 = url;

+ 43 - 22
src/components/easy3/studyStudent.vue

@@ -235,10 +235,10 @@
           </div>
         </div>
       </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% - 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 class="body_student" :style="{width: mlDialog ? 'calc(100% - '+`${classRoomHelperWidth}`+' - 20% - 40px)' : 'calc(100% - '+`${classRoomHelperWidth}`+' - 10px)', left: mlDialog  ? 'calc(20% + 35px)' : '10px' }">
+        <div class="new_topFixed" :style="{width: mlDialog ? 'calc(100% - '+`${classRoomHelperWidth}`+' - 20% - 40px)' : 'calc(100% - '+`${classRoomHelperWidth}`+' - 10px)', left: mlDialog  ? 'calc(20% + 35px)' : '10px' }"></div>
+        <div class="new_top" :style="{width: mlDialog ? 'calc(100% - '+`${classRoomHelperWidth}`+' - 20% - 47px)' : 'calc(100% - '+`${classRoomHelperWidth}`+' - 18px)', left: mlDialog  ? 'calc(20% + 35px)' : '10px' }">
+          <div class="courseIndex" :style="{width: (orgArray.includes(org) || oidArray.includes(oid))? '100%' : 'calc(100% - 745px)'}">
             <div>任务{{ taskCount + 1 }}</div>
             <el-tooltip
               effect="light"
@@ -256,7 +256,7 @@
             </el-tooltip>
           </div>
 					<!-- v-show="org !== '1973f6c7-1561-11ee-91d8-005056b86db5' || org !== '777559d2-7239-11ee-b98c-005056b86db5'" -->
-          <div class="btnAll" v-show="!orgArray.includes(org) && !oidArray.includes(oid) || ['2'].includes(tType)">
+          <div class="btnAll" v-show="!orgArray.includes(org) && !oidArray.includes(oid)">
             <div class="btnLeft">
               <el-tooltip effect="light" content="刷新" placement="top">
                 <div class="reBtnIcon" @click="refreshCourse">
@@ -620,6 +620,7 @@
 
                   <iframe
                       style="width: 100%; height: 100%; border: none"
+                      :key="diffKey"
 											allow="camera *; microphone *;display-capture;midi;encrypted-media;"
                       v-if="pptImgUrl1.indexOf('knowledge.cocorobo.cn')!=-1 || pptImgUrl1.indexOf('cloud.cocorobo.cn')!=-1 || pptImgUrl1.indexOf('app.cocorobo.cn')!=-1"
                       :src="pptImgUrl1"
@@ -8567,21 +8568,37 @@
     </div>
 				<!-- v-show="org == '1973f6c7-1561-11ee-91d8-005056b86db5' || org == '777559d2-7239-11ee-b98c-005056b86db5' || org == '884c5665-a453-46f3-b7b6-01d575290aa9'" -->
 		<classRoomHelper v-if="!['2'].includes(tType)" @studentFreePreview="studentFreePreview" @OpenJobPreview="OpenJobPreview" :videoStart="videoStart" :IsFollow="IsFollow" :sIsOpen="sIsOpen" :IsLookOpen="IsLookOpen" :splitScreenData="splitScreenData" @splitScreenBehavior="splitScreenBehavior" @startRecording="startRecording" @stopRecording="stopRecording" :fileList="vChapterData[taskCount]" :worksStudent="worksStudent" :courseType="parseInt(courseType)" :taskCount="taskCount" :tcid="tcid" :navList="navList" v-show="orgArray.includes(org) || oidArray.includes(oid)" ref="classRoomHelperRef" :courseDetail="courseDetail" :tType="tType" @setWidth="setClassRoomHelperWidth" @refresh="refreshCourse" @goStep="nextOrpreSteps" @authority="juriVisible = true" @review="setPz" @backPage="goTo(
-                    '/courseDetail?userid=' +
-                      userid +
-                      '&oid=' +
-                      oid +
-                      '&org=' +
-                      org +
-                      '&cid=' +
-                      classId +
-                      '&courseId=' +
-                      id +
-                      '&tType=' +
-                      tType +
-                      '&screenType=' +
-                      screenType
-                  )"></classRoomHelper>
+        '/courseDetail?userid=' +
+          userid +
+          '&oid=' +
+          oid +
+          '&org=' +
+          org +
+          '&cid=' +
+          classId +
+          '&courseId=' +
+          id +
+          '&tType=' +
+          tType +
+          '&screenType=' +
+          screenType
+      )"></classRoomHelper>
+    <studentClassRoomHelper v-else-if="['2'].includes(tType)" @studentFreePreview="studentFreePreview" @OpenJobPreview="OpenJobPreview" :videoStart="videoStart" :IsFollow="IsFollow" :sIsOpen="sIsOpen" :IsLookOpen="IsLookOpen" :splitScreenData="splitScreenData" @splitScreenBehavior="splitScreenBehavior" @startRecording="startRecording" @stopRecording="stopRecording" :fileList="vChapterData[taskCount]" :worksStudent="worksStudent" :courseType="parseInt(courseType)" :taskCount="taskCount" :tcid="tcid" :navList="navList" v-show="orgArray.includes(org) || oidArray.includes(oid)" :courseDetail="courseDetail" :tType="tType" @setWidth="setClassRoomHelperWidth" @refresh="refreshCourse" @goStep="nextOrpreSteps" @authority="juriVisible = true" @review="setPz" @backPage="goTo(
+    '/courseDetail?userid=' +
+      userid +
+      '&oid=' +
+      oid +
+      '&org=' +
+      org +
+      '&cid=' +
+      classId +
+      '&courseId=' +
+      id +
+      '&tType=' +
+      tType +
+      '&screenType=' +
+      screenType
+  )"></studentClassRoomHelper>
     <div
       class="pButton"
       @click="(pzDialog = true), selectPz()"
@@ -12552,6 +12569,7 @@ import correctText from '../components/correctText.vue'
 import scoreItem from '../scoreList/scoreItem.vue'
 import scoreZong from '../scoreZong/index.vue'
 import classRoomHelper from '../classRoomHelper/index.vue'
+import studentClassRoomHelper from '../classRoomHelper/studentIndex.vue'
 import MarkdownIt from "markdown-it";
 import statisticalAnalysis from '../components/statisticalAnalysis.vue'
 import choseWorksDetailDialog from '../components/choseWorksDetailDialog.vue'
@@ -12648,7 +12666,8 @@ export default {
 		statisticalAnalysis,
 		choseWorksDetailDialog,
     appStoreC,
-    cocoFlowDia
+    cocoFlowDia,
+    studentClassRoomHelper
   },
   data() {
     return {
@@ -13029,7 +13048,8 @@ export default {
         behavior:null,
       },
       confirmOpenDig:false,
-      confirmOpenDigData:''
+      confirmOpenDigData:'',
+      diffKey:"1"
     };
   },
   methods: {
@@ -18333,6 +18353,7 @@ export default {
         url = "https://" + url;
       }
       this.pptImgUrl1 = "";
+      this.diffKey = new Date().getTime();
 
       setTimeout(() => {
         this.pptImgUrl1 = url;

+ 29 - 8
src/components/studyStudent.vue

@@ -241,10 +241,10 @@
         </div>
       </div>
       <!-- :class="{ navLeftCss: !mlDialog }" -->
-      <div class="body_student" :style="{width: mlDialog ? 'calc(100% - '+`${(!['2'].includes(tType) || canUseCourseId.includes(id))?classRoomHelperWidth:'10px'}`+' - 20% - 40px)' : 'calc(100% - '+`${(!['2'].includes(tType) || canUseCourseId.includes(id))?classRoomHelperWidth:'10px'}`+' - 10px)', left: mlDialog  ? 'calc(20% + 35px)' : '10px' }">
-        <div class="new_topFixed" :style="{width: mlDialog ? 'calc(100% - '+`${(!['2'].includes(tType) || canUseCourseId.includes(id))?classRoomHelperWidth:'10px'}`+' - 20% - 40px)' : 'calc(100% - '+`${(!['2'].includes(tType) || canUseCourseId.includes(id))?classRoomHelperWidth:'10px'}`+' - 10px)', left: mlDialog  ? 'calc(20% + 35px)' : '10px' }"></div>
-        <div class="new_top" :style="{width: mlDialog ? 'calc(100% - '+`${(!['2'].includes(tType) || canUseCourseId.includes(id))?classRoomHelperWidth:'10px'}`+' - 20% - 47px)' : 'calc(100% - '+`${(!['2'].includes(tType) || canUseCourseId.includes(id))?classRoomHelperWidth:'10px'}`+' - 18px)', left: mlDialog  ? 'calc(20% + 35px)' : '10px' }">
-          <div class="courseIndex" :style="{width: (orgArray.includes(org) || oidArray.includes(oid)) && (!['2'].includes(tType) || canUseCourseId.includes(id)) ? '100%' : 'calc(100% - 745px)'}">
+      <div class="body_student" :style="{width: mlDialog ? 'calc(100% - '+`${classRoomHelperWidth}`+' - 20% - 40px)' : 'calc(100% - '+`${classRoomHelperWidth}`+' - 10px)', left: mlDialog  ? 'calc(20% + 35px)' : '10px' }">
+        <div class="new_topFixed" :style="{width: mlDialog ? 'calc(100% - '+`${classRoomHelperWidth}`+' - 20% - 40px)' : 'calc(100% - '+`${classRoomHelperWidth}`+' - 10px)', left: mlDialog  ? 'calc(20% + 35px)' : '10px' }"></div>
+        <div class="new_top" :style="{width: mlDialog ? 'calc(100% - '+`${classRoomHelperWidth}`+' - 20% - 47px)' : 'calc(100% - '+`${classRoomHelperWidth}`+' - 18px)', left: mlDialog  ? 'calc(20% + 35px)' : '10px' }">
+          <div class="courseIndex" :style="{width: (orgArray.includes(org) || oidArray.includes(oid))? '100%' : 'calc(100% - 745px)'}">
             <div>任务{{ taskCount + 1 }}</div>
             <el-tooltip
               effect="light"
@@ -261,7 +261,7 @@
               </div>
             </el-tooltip>
           </div>
-          <div class="btnAll"  v-show="!orgArray.includes(org) && !oidArray.includes(oid) || (['2'].includes(tType)  && !canUseCourseId.includes(id))"><!--v-show="org !== '1973f6c7-1561-11ee-91d8-005056b86db5' || org !== '777559d2-7239-11ee-b98c-005056b86db5'"-->
+          <div class="btnAll"  v-show="!orgArray.includes(org) && !oidArray.includes(oid)"><!--v-show="org !== '1973f6c7-1561-11ee-91d8-005056b86db5' || org !== '777559d2-7239-11ee-b98c-005056b86db5'"-->
             <div class="btnLeft">
               <el-tooltip effect="light" content="刷新" placement="top">
                 <div class="reBtnIcon" @click="refreshCourse">
@@ -586,6 +586,7 @@
                   <iframe
                       style="width: 100%; height: 100%; border: none"
                       allow="camera *; microphone *;display-capture;midi;encrypted-media;"
+                      :key="diffKey"
                       v-if="pptImgUrl1.indexOf('knowledge.cocorobo.cn')!=-1 || pptImgUrl1.indexOf('cloud.cocorobo.cn')!=-1 || pptImgUrl1.indexOf('app.cocorobo.cn')!=-1"
                       :src="pptImgUrl1"
                     ></iframe>
@@ -8540,6 +8541,22 @@
                       '&screenType=' +
                       screenType
                   )"></classRoomHelper>
+      <studentClassRoomHelper v-else-if="['2'].includes(tType)" @studentFreePreview="studentFreePreview" @OpenJobPreview="OpenJobPreview" :videoStart="videoStart" :IsFollow="IsFollow" :sIsOpen="sIsOpen" :IsLookOpen="IsLookOpen" :splitScreenData="splitScreenData" @splitScreenBehavior="splitScreenBehavior" @startRecording="startRecording" @stopRecording="stopRecording" :fileList="vChapterData[taskCount]" :worksStudent="worksStudent" :courseType="parseInt(courseType)" :taskCount="taskCount" :tcid="tcid" :navList="navList" v-show="orgArray.includes(org) || oidArray.includes(oid)" :courseDetail="courseDetail" :tType="tType" @setWidth="setClassRoomHelperWidth" @refresh="refreshCourse" @goStep="nextOrpreSteps" @authority="juriVisible = true" @review="setPz" @backPage="goTo(
+                    '/courseDetail?userid=' +
+                      userid +
+                      '&oid=' +
+                      oid +
+                      '&org=' +
+                      org +
+                      '&cid=' +
+                      classId +
+                      '&courseId=' +
+                      id +
+                      '&tType=' +
+                      tType +
+                      '&screenType=' +
+                      screenType
+                  )"></studentClassRoomHelper>
     </div>
     <div
       class="pButton"
@@ -12490,6 +12507,7 @@ import correctText from './components/correctText.vue'
 import scoreItem from './scoreList/scoreItem.vue'
 import scoreZong from './scoreZong/index.vue'
 import classRoomHelper from './classRoomHelper/index.vue'
+import studentClassRoomHelper from './classRoomHelper/studentIndex.vue'
 import statisticalAnalysis from "./components/statisticalAnalysis.vue";
 import choseWorksDetailDialog from './components/choseWorksDetailDialog.vue';
 import { v4 as uuidv4 } from "uuid";
@@ -12584,7 +12602,8 @@ export default {
 		statisticalAnalysis,
 		choseWorksDetailDialog,
     appStoreC,
-    cocoFlowDia
+    cocoFlowDia,
+    studentClassRoomHelper
   },
   data() {
     return {
@@ -12964,7 +12983,8 @@ export default {
     },
       confirmOpenDig:false,
       confirmOpenDigData:'',
-      canUseCourseId: ['bfbe1913-2f87-11ef-bf55-005056b86db5','3a64b199-d2eb-11ef-a2d1-005056b86db5', 'bb0b1995-0207-11ef-b534-005056b86db5', 'f77921c8-d2f1-11ef-a2d1-005056b86db5']
+      canUseCourseId: ['bfbe1913-2f87-11ef-bf55-005056b86db5','3a64b199-d2eb-11ef-a2d1-005056b86db5', 'bb0b1995-0207-11ef-b534-005056b86db5', 'f77921c8-d2f1-11ef-a2d1-005056b86db5'],
+      diffKey:"1",
     };
   },
   methods: {
@@ -18278,7 +18298,7 @@ export default {
         url = "https://" + url;
       }
       this.pptImgUrl1 = "";
-
+      this.diffKey = new Date().getTime();
       setTimeout(() => {
         this.pptImgUrl1 = url;
       }, 500);
@@ -19680,6 +19700,7 @@ export default {
         this.fulltype = 2;
         this.fullUrl = f.url;
       }else if (t == 15) {
+        this.diffKey = new Date().getTime();
         this.fulltype = 4;
         this.fullUrl = f.url;
       } else if (

+ 44 - 23
src/components/studySutdentClass/studyStudent.vue

@@ -235,10 +235,10 @@
           </div>
         </div>
       </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% - 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 class="body_student" :style="{width: mlDialog ? 'calc(100% - '+`${classRoomHelperWidth}`+' - 20% - 40px)' : 'calc(100% - '+`${classRoomHelperWidth}`+' - 10px)', left: mlDialog  ? 'calc(20% + 35px)' : '10px' }">
+        <div class="new_topFixed" :style="{width: mlDialog ? 'calc(100% - '+`${classRoomHelperWidth}`+' - 20% - 40px)' : 'calc(100% - '+`${classRoomHelperWidth}`+' - 10px)', left: mlDialog  ? 'calc(20% + 35px)' : '10px' }"></div>
+        <div class="new_top" :style="{width: mlDialog ? 'calc(100% - '+`${classRoomHelperWidth}`+' - 20% - 47px)' : 'calc(100% - '+`${classRoomHelperWidth}`+' - 18px)', left: mlDialog  ? 'calc(20% + 35px)' : '10px' }">
+          <div class="courseIndex" :style="{width: (orgArray.includes(org) || oidArray.includes(oid))? '100%' : 'calc(100% - 745px)'}">
             <div>任务{{ taskCount + 1 }}</div>
             <el-tooltip
               effect="light"
@@ -256,7 +256,7 @@
             </el-tooltip>
           </div>
 					<!-- v-show="org !== '1973f6c7-1561-11ee-91d8-005056b86db5' || org !== '777559d2-7239-11ee-b98c-005056b86db5'" -->
-          <div class="btnAll" v-show="!orgArray.includes(org) && !oidArray.includes(oid) || ['2'].includes(tType)">
+          <div class="btnAll" v-show="!orgArray.includes(org) && !oidArray.includes(oid)">
             <div class="btnLeft">
               <el-tooltip effect="light" content="刷新" placement="top">
                 <div class="reBtnIcon" @click="refreshCourse">
@@ -456,7 +456,7 @@
         >
           <img src="../../assets/icon/isNoMessage.png" alt />
         </div>
-        <div class="study_top" :class="{ pzClass: pzDialog }">
+        <div class="study_top" :style="tType=='2'?'width:calc(100% - 10px)':''" :class="{ pzClass: pzDialog }">
           <!-- chapInfoList[courseType].chapterInfo[0].taskJson[taskCount]
                 .taskDetail3 || -->
           <div
@@ -620,6 +620,7 @@
                   <iframe
                       style="width: 100%; height: 100%; border: none"
                       allow="camera *; microphone *;display-capture;midi;encrypted-media;"
+                      :key="diffKey"
                       v-if="pptImgUrl1.indexOf('knowledge.cocorobo.cn')!=-1 || pptImgUrl1.indexOf('cloud.cocorobo.cn')!=-1 || pptImgUrl1.indexOf('app.cocorobo.cn')!=-1"
                       :src="pptImgUrl1"
 
@@ -11744,21 +11745,37 @@
     </div>
 				<!-- v-show="org == '1973f6c7-1561-11ee-91d8-005056b86db5' || org == '777559d2-7239-11ee-b98c-005056b86db5' || org == '884c5665-a453-46f3-b7b6-01d575290aa9'" -->
 		<classRoomHelper v-if="!['2'].includes(tType)" @studentFreePreview="studentFreePreview" @OpenJobPreview="OpenJobPreview" :videoStart="videoStart" :IsFollow="IsFollow" :sIsOpen="sIsOpen" :IsLookOpen="IsLookOpen" :splitScreenData="splitScreenData" @splitScreenBehavior="splitScreenBehavior" @startRecording="startRecording" @stopRecording="stopRecording" :fileList="vChapterData[taskCount]" :worksStudent="worksStudent" :courseType="parseInt(courseType)" :taskCount="taskCount" :tcid="tcid" :navList="navList" v-show="orgArray.includes(org) || oidArray.includes(oid)" ref="classRoomHelperRef" :courseDetail="courseDetail" :tType="tType" @setWidth="setClassRoomHelperWidth" @refresh="refreshCourse" @goStep="nextOrpreSteps" @authority="juriVisible = true" @review="setPz" @backPage="goTo(
-                    '/courseDetail?userid=' +
-                      userid +
-                      '&oid=' +
-                      oid +
-                      '&org=' +
-                      org +
-                      '&cid=' +
-                      classId +
-                      '&courseId=' +
-                      id +
-                      '&tType=' +
-                      tType +
-                      '&screenType=' +
-                      screenType
-                  )"></classRoomHelper>
+      '/courseDetail?userid=' +
+        userid +
+        '&oid=' +
+        oid +
+        '&org=' +
+        org +
+        '&cid=' +
+        classId +
+        '&courseId=' +
+        id +
+        '&tType=' +
+        tType +
+        '&screenType=' +
+        screenType
+    )"></classRoomHelper>
+  <studentClassRoomHelper v-else-if="['2'].includes(tType)" @studentFreePreview="studentFreePreview" @OpenJobPreview="OpenJobPreview" :videoStart="videoStart" :IsFollow="IsFollow" :sIsOpen="sIsOpen" :IsLookOpen="IsLookOpen" :splitScreenData="splitScreenData" @splitScreenBehavior="splitScreenBehavior" @startRecording="startRecording" @stopRecording="stopRecording" :fileList="vChapterData[taskCount]" :worksStudent="worksStudent" :courseType="parseInt(courseType)" :taskCount="taskCount" :tcid="tcid" :navList="navList" v-show="orgArray.includes(org) || oidArray.includes(oid)" :courseDetail="courseDetail" :tType="tType" @setWidth="setClassRoomHelperWidth" @refresh="refreshCourse" @goStep="nextOrpreSteps" @authority="juriVisible = true" @review="setPz" @backPage="goTo(
+    '/courseDetail?userid=' +
+      userid +
+      '&oid=' +
+      oid +
+      '&org=' +
+      org +
+      '&cid=' +
+      classId +
+      '&courseId=' +
+      id +
+      '&tType=' +
+      tType +
+      '&screenType=' +
+      screenType
+  )"></studentClassRoomHelper>
     <div
       class="pButton"
       @click="(pzDialog = true), selectPz()"
@@ -15797,6 +15814,7 @@ import correctText from '../components/correctText.vue'
 import scoreItem from '../scoreList/scoreItem.vue'
 import scoreZong from '../scoreZong/index.vue'
 import classRoomHelper from '../classRoomHelper/index.vue'
+import studentClassRoomHelper from '../classRoomHelper/studentIndex.vue'
 import MarkdownIt from "markdown-it";
 import statisticalAnalysis from '../components/statisticalAnalysis.vue'
 import choseWorksDetailDialog from '../components/choseWorksDetailDialog.vue'
@@ -15899,7 +15917,8 @@ export default {
 		statisticalAnalysis,
 		choseWorksDetailDialog,
     appStoreC,
-    cocoFlowDia
+    cocoFlowDia,
+    studentClassRoomHelper
   },
   data() {
     return {
@@ -16300,6 +16319,7 @@ export default {
       languageSetting: 0, //0中文 1繁体 2英文
       toolListS: [],
       commentDetailCopy: "",
+      diffKey:"1"
     };
   },
   methods: {
@@ -22307,7 +22327,7 @@ export default {
         url = "https://" + url;
       }
       this.pptImgUrl1 = "";
-
+      this.diffKey = new Date().getTime();
       setTimeout(() => {
         this.pptImgUrl1 = url;
       }, 500);
@@ -23707,6 +23727,7 @@ export default {
       }else if (t == 15) {
         this.fulltype = 4;
         this.fullUrl = f.url;
+
       } else if (
         t == 3 &&
         f.url.split(".")[f.url.split(".").length - 1].toLocaleUpperCase() ==

Некоторые файлы не были показаны из-за большого количества измененных файлов