Jelajahi Sumber

Merge branch 'beta'

SanHQin 1 hari lalu
induk
melakukan
8cebce3942

+ 1 - 1
dist/index.html

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

File diff ditekan karena terlalu besar
+ 0 - 0
dist/static/css/app.9524a12215073097665e7700fb52cdcd.css


File diff ditekan karena terlalu besar
+ 0 - 0
dist/static/css/app.9524a12215073097665e7700fb52cdcd.css.map


File diff ditekan karena terlalu besar
+ 0 - 0
dist/static/css/app.ba09f141c0d483170ff52766b385f9ca.css


File diff ditekan karena terlalu besar
+ 0 - 0
dist/static/css/app.ba09f141c0d483170ff52766b385f9ca.css.map


File diff ditekan karena terlalu besar
+ 0 - 0
dist/static/js/app.56e44dcd12b311b04722.js


File diff ditekan karena terlalu besar
+ 0 - 0
dist/static/js/app.56e44dcd12b311b04722.js.map


File diff ditekan karena terlalu besar
+ 0 - 0
dist/static/js/manifest.3ad1d5771e9b13dbdad2.js.map


TEMPAT SAMPAH
src/assets/icon/works/xiaz.png


+ 8 - 5
src/components/components/cocoFlowDia.vue

@@ -10,7 +10,7 @@
             <div slot="title">
             <div slot="title">
                 <div class="markScore_diyTit">
                 <div class="markScore_diyTit">
                     <div>{{ lang.ssViewWork }}</div>
                     <div>{{ lang.ssViewWork }}</div>
-                    <img  @click="markFullScreenBtn" style="cursor: pointer;height: 16px;" src="../../assets/icon/svgImg/nrk_fullscreen.svg" alt="" />
+                    <!-- <img  @click="markFullScreenBtn" style="cursor: pointer;height: 16px;" src="../../assets/icon/svgImg/nrk_fullscreen.svg" alt="" /> -->
                 </div>
                 </div>
             </div>
             </div>
            
            
@@ -52,7 +52,7 @@
                     align-items: center;
                     align-items: center;
                     height: 100%;
                     height: 100%;
                     min-height: 500px;">
                     min-height: 500px;">
-{{ lang.ssWorkOnlyShowsDialog }}
+                    {{ lang.ssWorkOnlyShowsDialog }}
                 </div>
                 </div>
             </div>
             </div>
             
             
@@ -138,9 +138,9 @@ import { myMixin } from "@/mixins/mixin.js"
                 return function (val) {
                 return function (val) {
                    let kk = val.map(e=> e.messages).flat()
                    let kk = val.map(e=> e.messages).flat()
                    console.log('kk',kk);
                    console.log('kk',kk);
-                   if (kk.length == 0) {
-                    return false
-                   }
+                   if (!kk.length || kk.every(v => v == null || v === 'undefined' || v === '')) {
+                     return false
+                    }
                    return true
                    return true
                 };
                 };
             },
             },
@@ -221,6 +221,7 @@ import { myMixin } from "@/mixins/mixin.js"
 <style scoped>
 <style scoped>
     .dialog_diy {
     .dialog_diy {
         min-width: 800px;
         min-width: 800px;
+        display: flex;
     }
     }
 
 
     .dialog_diy >>> .el-dialog__header {
     .dialog_diy >>> .el-dialog__header {
@@ -232,6 +233,8 @@ import { myMixin } from "@/mixins/mixin.js"
     .dialog_diy >>> .el-dialog{
     .dialog_diy >>> .el-dialog{
         border-radius: 12px;
         border-radius: 12px;
         overflow: hidden;
         overflow: hidden;
+        height: 95% !important;
+        margin: auto !important;
     }
     }
 
 
     .dialog_diy >>> .el-dialog__title{
     .dialog_diy >>> .el-dialog__title{

+ 154 - 0
src/components/components/confirmInstruction.vue

@@ -0,0 +1,154 @@
+<template>
+  <div class="confirmInstruction" :style="{display:show?'flex':'none'}">
+    <div class="mask" v-if="show" @click="close()"></div>
+    <div class="dialog" v-if="show">
+      <div class="title">{{ title }}</div>
+      <div class="message" v-html="message"></div>
+      <div class="footer">
+        <div class="cancel" @click="cancelFn()">{{ cancelText }}</div>
+        <div class="submit" @click="submitFn()">{{ submitText }}</div>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script>
+  export default {
+    name: 'confirmInstruction',
+    data() {
+      return {
+        show: false,
+        cancel:null,
+        submit:null,
+        title:'',
+        message:'',
+        cancelText:'取消',
+        submitText:'确认',
+        cancelCallback:null,
+        submitCallback:null,
+        type:'',
+      }
+    },
+    methods: {
+      open({title='',message='',cancelText='取消',submitText='确认',cancelCallback=null,submitCallback=null,type=''}) {
+        this.show = true;
+        this.type = type;
+        this.title = title;
+        this.message = message;
+        this.cancelText = cancelText;
+        this.submitText = submitText;
+        this.cancelCallback = cancelCallback;
+        this.submitCallback = submitCallback;
+      },
+      init(){
+        this.title = ''
+        this.message = ''
+        this.cancelText = '取消'
+        this.submitText = '确认'
+        this.cancelCallback = null
+        this.submitCallback = null
+      },
+      cancelFn(){
+        this.cancelCallback ? this.cancelCallback() : null
+        this.close()
+      },
+      submitFn(){
+        this.submitCallback ? this.submitCallback() : null
+        this.close()
+      },
+      close() {
+        this.show = false;
+        this.init()
+      },
+    }
+  }
+</script>
+
+<style scoped>
+.confirmInstruction{
+  position: fixed;
+  top: 0;
+  left: 0;
+  width: 100%;
+  height: 100%;
+  z-index: 9998;
+  overflow: hidden;
+  display: flex;
+  align-items: center;
+  justify-content: center;
+}
+
+.mask{
+  position: absolute;
+  top: 0;
+  left: 0;
+  width: 100%;
+  height: 100%;
+  background: rgba(0, 0, 0, 0.5);
+}
+
+.dialog{
+  width: 30rem;
+  padding: 1.5rem;
+  max-width: 80vw;
+  height: auto;
+  background: #FFFFFF;
+  z-index: 9999;
+  border-radius: .5rem;
+  animation: slideDownFadeIn 0.3s ease-out;
+}
+
+.dialog>.title{
+  font-size: 1.1rem;
+  font-weight: bold;
+  margin-bottom: 2rem;
+}
+
+.dialog>.message{
+  font-size: 1rem;
+  margin-bottom: 2rem;
+  color: #737373;
+}
+
+.dialog>.footer{
+  display: flex;
+  justify-content: flex-end;
+  gap: .5rem;
+}
+
+.dialog>.footer>div{
+  padding: .5rem 1rem;
+  border-radius: .5rem;
+  font-size: .9rem;
+  cursor: pointer;
+  border: 1px solid #EAEAEA;
+  transition: .2s;
+}
+
+.dialog>.footer>div:hover{
+  background: #EAEAEA;
+}
+
+.dialog>.footer>.submit{
+  background: #F1C600;
+  border-color: #F1C600;
+}
+
+.dialog>.footer>.submit:hover{
+  background: #e4ba00;
+}
+
+
+@keyframes slideDownFadeIn {
+  from {
+    opacity: 0;
+    transform: translateY(-2rem);
+  }
+  to {
+    opacity: 1;
+    transform: translateY(0);
+  }
+}
+
+
+</style>

+ 181 - 0
src/components/components/messageInstruction.vue

@@ -0,0 +1,181 @@
+<template>
+  <div class="messageInstruction">
+    <div class="messageItem" :class="item.type" v-for="item in messageList" :key="item.id">
+      <div class="icon">
+        <svg v-if="['success'].includes(item.type)" viewBox="0 0 1024 1024"><path d="M512 85.333333c235.648 0 426.666667 191.018667 426.666667 426.666667s-191.018667 426.666667-426.666667 426.666667S85.333333 747.648 85.333333 512 276.352 85.333333 512 85.333333z m-74.965333 550.4L346.453333 545.152a42.666667 42.666667 0 1 0-60.330666 60.330667l120.704 120.704a42.666667 42.666667 0 0 0 60.330666 0l301.653334-301.696a42.666667 42.666667 0 1 0-60.288-60.330667l-271.530667 271.488z" fill="#67C239"></path></svg>
+        <svg v-if="['pptMessage'].includes(item.type)" viewBox="0 0 1024 1024" ><path d="M512 85.333c-234.667 0-426.667 192-426.667 426.667s192 426.667 426.667 426.667 426.667-192 426.667-426.667S746.667 85.333 512 85.333z m21.333 640h-42.666c-12.8 0-21.334-8.533-21.334-21.333v-42.667c0-12.8 8.534-21.333 21.334-21.333h42.666c12.8 0 21.334 8.533 21.334 21.333V704c0 12.8-8.534 21.333-21.334 21.333zM512 554.667c-25.6 0-42.667-17.067-42.667-42.667V341.333c0-25.6 17.067-42.666 42.667-42.666s42.667 17.066 42.667 42.666V512c0 25.6-17.067 42.667-42.667 42.667z" fill="#FCCF00"></path></svg>
+        <!-- <svg v-if="['pptMessage'].includes(item.type)" viewBox="0 0 1024 1024"><path d="M512 28.444444C244.906667 28.444444 28.444444 244.906667 28.444444 512s216.462222 483.555556 483.555556 483.555556 483.555556-216.462222 483.555556-483.555556S779.093333 28.444444 512 28.444444z m30.225067 755.5584A30.190933 30.190933 0 0 1 512 814.222222a30.190933 30.190933 0 0 1-30.225067-30.225066A30.190933 30.190933 0 0 1 512 753.777778a30.190933 30.190933 0 0 1 30.225067 30.225066z m0-120.888888A30.190933 30.190933 0 0 1 512 693.327644a30.190933 30.190933 0 0 1-30.225067-30.225066V240.008533A30.190933 30.190933 0 0 1 512 209.772089a30.190933 30.190933 0 0 1 30.225067 30.225067v423.105422z" fill="#FCCF00"></path></svg> -->
+      </div>
+      <div class="message" v-html="item.message"></div>
+      <div class="close" @click="close(item.id)" v-if="item.showClose">
+        <svg viewBox="0 0 1025 1024"><path d="M997.553471 154.252491 639.804427 512.001535 997.553471 869.751602l0 0c16.34988 16.374439 26.450623 38.948897 26.450623 63.898376 0 49.899981-40.450041 90.350022-90.351045 90.350022-24.949479 0-47.549519-10.100743-63.897353-26.475181l0 0L512.003581 639.775775 154.255561 997.525842l0 0c-16.34988 16.374439-38.948897 26.475181-63.899399 26.475181-49.901004 0-90.350022-40.450041-90.350022-90.350022 0-24.950502 10.099719-47.523938 26.449599-63.898376l0 0 357.750067-357.750067L26.454716 154.252491l0 0c-16.34988-16.350903-26.449599-38.949921-26.449599-63.900423 0-49.899981 40.449018-90.348999 90.350022-90.348999 24.950502 0 47.550543 10.099719 63.899399 26.474158l0 0 357.748021 357.749044L869.754672 26.477228l0 0c16.348857-16.374439 38.948897-26.474158 63.897353-26.474158 49.901004 0 90.351045 40.449018 90.351045 90.348999C1024.00307 115.301547 1013.902327 137.901588 997.553471 154.252491L997.553471 154.252491z" fill="#1A1A1A"></path></svg>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script>
+export default {
+  name: 'messageInstruction',
+  data() {
+    return {
+      messageList: []
+    }
+  },
+  methods: {
+    success(data) {
+      if (typeof data === 'string') {
+        let _id = Date.now();
+        this.messageList.push({
+          id: _id,
+          type: 'success',
+          message: data
+        })
+        setTimeout(() => {
+          this.messageList = this.messageList.filter(item => item.id !== _id);
+        }, 3000);
+      } else if (typeof data === 'object' && data.message && data.duration) {
+        let _id = Date.now();
+        this.messageList.push({
+          id: _id,
+          type: 'success',
+          message: data.message
+        })
+        setTimeout(() => {
+          this.messageList = this.messageList.filter(item => item.id !== _id);
+        }, data.duration);
+      }
+    },
+    // error(data){
+    //   if(typeof data === 'string'){
+    //     let _id = Date.now();
+    //     this.messageList.push({
+    //       id: _id,
+    //       type: 'error',
+    //       message: data
+    //     })
+    //     setTimeout(() => {
+    //       this.messageList = this.messageList.filter(item => item.id !== _id);
+    //     }, 3000);
+    //   }else if(typeof data === 'object' && data.message && data.duration){
+    //     let _id = Date.now();
+    //     this.messageList.push({
+    //       id: _id,
+    //       type: 'error',
+    //       message: data.message
+    //     })
+    //     setTimeout(() => {
+    //       this.messageList = this.messageList.filter(item => item.id !== _id);
+    //     }, data.duration);
+    //   }
+    // },
+    pptMessage(data){
+      if(typeof data === 'string'){
+        let _id = Date.now();
+        this.messageList.push({
+          id: _id,
+          type: 'pptMessage',
+          message: data,
+          showClose:data.showClose || true
+        })
+        setTimeout(() => {
+          this.messageList = this.messageList.filter(item => item.id !== _id);
+        }, 3000);
+      }else if(typeof data === 'object' && data.message && data.duration){
+        let _id = Date.now();
+        this.messageList.push({
+          id: _id,
+          type: 'pptMessage',
+          message: data.message,
+          showClose:data.showClose || true
+        })
+        setTimeout(() => {
+          this.messageList = this.messageList.filter(item => item.id !== _id);
+        }, data.duration);
+      }
+    },
+    close(id){
+      this.messageList = this.messageList.filter(item => item.id !== id);
+    }
+  },
+}
+</script>
+
+<style scoped>
+.messageInstruction {
+  position: fixed;
+  top: 80px;
+  left: 50%;
+  transform: translate(-50%, 0%);
+  width: auto;
+  height: auto;
+  z-index: 9999;
+  display: flex;
+  flex-direction: column;
+  gap: .5rem;
+}
+
+.messageItem{
+  padding: 15px 20px;
+  border-radius: .2rem;
+  font-size: 1rem;
+  display: flex;
+  /* align-items: center; */
+  justify-content: space-between;
+  background: #FFFFFF;
+  box-shadow: 0 0 .2rem rgba(0, 0, 0, 0.1);
+  transition: .3s;
+}
+
+.messageItem>.icon{
+  width: 1.3rem;
+  height: 1.3rem;
+  margin-right: .8rem;
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  margin-top: -.1rem;
+}
+
+.messageItem>.icon>svg{
+  width: 100%;
+  height: 100%;
+}
+
+.messageItem>.close{
+  width: .6rem;
+  height: .6rem;
+  margin-left: 1.5rem;
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  margin-top: .3rem;
+}
+
+.messageItem>.close>svg{
+  width: 100%;
+  height: 100%;
+  cursor: pointer;
+}
+
+.messageItem>.message{
+  flex: 1;
+  max-width: 50vh;
+}
+
+.messageItem {
+  animation: slideDownFadeIn 0.3s ease-out;
+}
+
+@keyframes slideDownFadeIn {
+  from {
+    opacity: 0;
+    transform: translateY(-20px);
+  }
+  to {
+    opacity: 1;
+    transform: translateY(0);
+  }
+}
+
+</style>

+ 3 - 2
src/components/courseDetail.vue

@@ -1974,8 +1974,9 @@ export default {
         }
         }
       }
       }
 
 
-      if(this.courseDetail.state == 7 && this.tType == 2){
-        this.goToStudyRate('')
+      if(this.courseDetail.state == 7){ //  && this.tType == 2
+        // this.goToStudyRate('')
+        this.addUserRate('');
       }
       }
       const element = document.getElementsByClassName("pb_body")[0];
       const element = document.getElementsByClassName("pb_body")[0];
       if (element) {
       if (element) {

+ 303 - 0
src/components/dialog/selectTeachingClassDialog2.vue

@@ -0,0 +1,303 @@
+<template>
+	<div>
+		<el-dialog
+			:center="true"
+			:visible.sync="show"
+			:close-on-click-modal="false"
+			:modal="true"
+			width="auto"
+			height="auto"
+			:append-to-body="true"
+			class="dialog"
+		>
+			<div class="box">
+				<div class="b_head">
+					<span>{{ lang.ssSelectTeachingClass }}</span>
+					<svg
+						@click="close()"
+						t="1748587270371"
+						class="icon"
+						viewBox="0 0 1024 1024"
+						version="1.1"
+						xmlns="http://www.w3.org/2000/svg"
+						p-id="5023"
+						width="200"
+						height="200"
+					>
+						<path
+							d="M0 0h1024v1024H0z"
+							fill="#FF0033"
+							fill-opacity="0"
+							p-id="5024"
+						></path>
+						<path
+							d="M240.448 168l2.346667 2.154667 289.92 289.941333 279.253333-279.253333a42.666667 42.666667 0 0 1 62.506667 58.026666l-2.133334 2.346667-279.296 279.210667 279.274667 279.253333a42.666667 42.666667 0 0 1-58.005333 62.528l-2.346667-2.176-279.253333-279.253333-289.92 289.962666a42.666667 42.666667 0 0 1-62.506667-58.005333l2.154667-2.346667 289.941333-289.962666-289.92-289.92a42.666667 42.666667 0 0 1 57.984-62.506667z"
+							fill="#fff"
+							p-id="5025"
+						></path>
+					</svg>
+				</div>
+				<div class="b_main" v-loading="loading">
+          <template v-for="item in classList">
+            <div class="b_m_classItem" :class="{'b_m_classItem_active':selectId == item.id}" :key="item.id" v-if="item.name" @click="selectId == item.id ? selectId = '' : selectId = item.id" >
+            <div>{{ item.name }}</div>
+            <span v-if="item.studentNum>=0">{{ lang.ssStudentNum.replace(/\*/g, item.studentNum) }}</span>
+          </div>
+          </template>
+
+          <div class="b_m_classItem" @click="editClass" v-if="courseDetail.userid == userId">
+              <div>
+                <span>+</span>
+                <svg t="1756867649445" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="10274" width="200" height="200"><path d="M417.664 921.6l317.184-824.32h-63.616L353.152 921.6z" fill="#999999" p-id="10275"></path></svg>
+                <span>-</span>
+              </div>
+            <div>{{ lang.ssAddOrModifyClass }}</div>
+          </div>
+
+          <div class="b_m_noClassMsg" v-if="classList.length<=0 && courseDetail.userid != userId">
+            <span>{{ lang.ssCreatorNotAddedClass }}</span>
+          </div>
+				</div>
+				<div class="b_bottom">
+					<!-- <div @click="close()">{{ lang.ssCancel }}</div> -->
+          <div class="b_b_submit" @click="submit()">{{selectId ? lang.ssConfirm : lang.ssEnterDirectly}}</div>
+				</div>
+			</div>
+		</el-dialog>
+    <addClassDialog ref="addClassDialogRef" @success="addClassSuccess" :courseDetail="courseDetail"/>
+	</div>
+</template>
+
+<script>
+import addClassDialog from './addClassDialog.vue';
+export default {
+  props:{
+    courseDetail:{
+      type:Object,
+      default:()=>{return {}}
+    },
+    userId:{
+      type:String,
+      default:""
+    }
+  },
+  components:{
+    addClassDialog
+  },
+	data() {
+		return {
+			loading: false,
+			show: false,
+			data: null,
+      classList:[],
+      selectId:"",
+		};
+	},
+	computed: {},
+	methods: {
+		open(data, tcid2) {
+			console.log(data, tcid2);
+			
+			this.data = JSON.parse(JSON.stringify(data));
+			this.classList = this.data.classList;
+			if(this.classList.length>0){
+				this.selectId = this.classList[0].id;
+			}
+			this.loading = false;
+			this.selectId = tcid2 ? tcid2 : this.selectId;
+			this.show = true;
+		},
+		close() {
+			this.show = false;
+			this.init();
+		},
+		init() {
+			this.data = null;
+      this.classList = [];
+      this.selectId = "";
+			this.loading = false;
+		},
+    submit(){
+      // console.log(this.selectId)
+      this.$emit("success",this.selectId)
+    },
+    editClass(){
+      this.$refs.addClassDialogRef.open({classList:this.classList});
+    },
+    addClassSuccess(data){
+      this.classList = data;
+      this.$emit("changeClassList",this.classList);
+      this.$refs.addClassDialogRef.close();
+
+    },
+	},
+};
+</script>
+
+<style scoped>
+.dialog >>> .el-dialog {
+	width: 900px !important;
+	border-radius: 8px;
+	padding: 0;
+	background-color: #fff;
+	overflow: hidden;
+}
+
+.dialog >>> .el-dialog__body {
+	width: 900px !important;
+	height: auto;
+	flex-shrink: 0;
+	padding: 0;
+	box-sizing: border-box;
+	overflow: auto;
+}
+
+.dialog >>> .el-dialog__header {
+	display: none !important;
+}
+
+.box {
+	width: 900px;
+	height: auto;
+	background: #fafafa;
+	border-radius: 15px;
+	box-shadow: 0px 6px 30px 5px rgba(0, 0, 0, 0.05),
+		0px 16px 24px 2px rgba(0, 0, 0, 0.04), 0px 8px 10px -5px rgba(0, 0, 0, 0.08);
+}
+
+.b_head {
+	width: 100%;
+	height: 50px;
+	/* border-radius: 15px 15px 0 0; */
+	background: #1A1A1A;
+	display: flex;
+	align-items: center;
+	justify-content: space-between;
+	box-sizing: border-box;
+	padding: 0 20px;
+  color: #fff;
+}
+
+.b_head > span {
+	font-size: 18px;
+	font-weight: bold;
+	color: #fff;
+}
+
+.b_head > img {
+	width: 20px;
+	height: 20px;
+	cursor: pointer;
+}
+
+.b_head > svg {
+	width: 20px;
+	height: 20px;
+	cursor: pointer;
+}
+
+.b_main {
+	width: 100%;
+	height: 400px;
+	background: #fafafa;
+	padding: 20px 20px 20px 20px;
+	box-sizing: border-box;
+  overflow: auto;
+}
+
+.b_bottom {
+	width: 100%;
+	height: 70px;
+	display: flex;
+	align-items: center;
+	justify-content: flex-end;
+	box-sizing: border-box;
+	padding: 0 20px;
+}
+
+.b_bottom>div{
+  padding: 10px 25px;
+  background: #fff;
+  color: #000;
+  border-radius: 4px;
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  border: solid 1px #EEEEEE;
+  margin-left: 15px;
+  cursor: pointer;
+  font-size: 16px;
+}
+
+.b_bottom>.b_b_submit{
+  background: #1A1A1A;
+  color: #D4D4D4;
+  border-color: #1A1A1A;
+}
+
+.b_m_classItem{
+  width: 32%;
+  height: 85px;
+  float: left;
+  margin-bottom: 20px;
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  flex-direction: column;
+  background: #fff;
+  box-shadow: 0px 6px 30px 5px rgba(0, 0, 0, 0.05),
+		0px 16px 24px 2px rgba(0, 0, 0, 0.04), 0px 8px 10px -5px rgba(0, 0, 0, 0.08);
+  border-radius: 12px;
+  cursor: pointer;
+  transition: .2s;
+}
+
+.b_m_classItem>div{
+  color: #5F5F5F;
+  font-size: 16px;
+  margin: 4px 0;
+  display: flex;
+  flex-wrap: wrap;
+  align-content: center;
+}
+
+.b_m_classItem>div>span{
+  display: flex;
+  justify-content: center;
+  align-items: center;
+  width: 25px;
+  height: 25px;
+  border-radius: 4px;
+  border: solid 1px #B0B0B0;
+}
+
+.b_m_classItem>div>svg{
+  width: 20px;
+  height: 25px;
+  margin: 0 5px;
+}
+
+.b_m_classItem>span{
+  color: #A3A3A3;
+  font-size: 14px;
+}
+
+.b_main > div:nth-child(3n-1) {
+  margin: 0 2%;
+}
+
+.b_m_classItem_active{
+  /* box-shadow: 4px 4px 4px 0px rgba(138, 238, 138, 0.555); */
+  background: #fccf00;
+  font-weight: 600;
+  color: #000;
+}
+
+.b_m_noClassMsg{
+  width:100%;
+  height: 100%;
+  display: flex;
+  justify-content: center;
+  align-items: center;
+}
+</style>

+ 21 - 0
src/components/easy2/studyStudent.vue

@@ -10577,6 +10577,8 @@
                                 >
                                 >
                                   {{lang.ssMarkScore}}
                                   {{lang.ssMarkScore}}
                                 </div>
                                 </div>
+                                <!-- <div class="answerScore">1</div> -->
+                                <!-- <img class="xiaz" @click="downloadFile(w.works,w.userid)" style="right: 40px;" src="../../assets/icon/works/xiaz.png" alt=""> -->
                                 <img
                                 <img
                                   class="deleteImg"
                                   class="deleteImg"
                                   src="../../assets/deleteworks.png"
                                   src="../../assets/deleteworks.png"
@@ -10598,6 +10600,7 @@
                                 <!-- @click="openFile(w.works)" -->
                                 <!-- @click="openFile(w.works)" -->
                                 <div
                                 <div
                                   class="answerScore"
                                   class="answerScore"
+                                  style="right: 70px;"
                                   v-if="w.score"
                                   v-if="w.score"
                                   @click.stop="openScore(w)"
                                   @click.stop="openScore(w)"
                                   :class="{
                                   :class="{
@@ -10612,6 +10615,7 @@
                                 </div>
                                 </div>
                                 <div
                                 <div
                                   class="answerScore"
                                   class="answerScore"
+                                  style="right: 70px;"
                                   @click.stop="openScore(w)"
                                   @click.stop="openScore(w)"
                                   v-else-if="courseDetail.userid == userid"
                                   v-else-if="courseDetail.userid == userid"
                                   :class="{
                                   :class="{
@@ -10624,6 +10628,8 @@
                                 >
                                 >
                                   {{lang.ssMarkScore}}
                                   {{lang.ssMarkScore}}
                                 </div>
                                 </div>
+                                <img class="xiaz" @click="downloadFile(w.works,w.userid)" style="right: 40px;" src="../../assets/icon/works/xiaz.png" alt="">
+
                                 <img
                                 <img
                                   class="deleteImg"
                                   class="deleteImg"
                                   src="../../assets/deleteworks.png"
                                   src="../../assets/deleteworks.png"
@@ -10646,6 +10652,7 @@
                                 <!--  @click="openVideo(w.works)" -->
                                 <!--  @click="openVideo(w.works)" -->
                                 <div
                                 <div
                                   class="answerScore"
                                   class="answerScore"
+                                  style="right: 70px;"
                                   v-if="w.score"
                                   v-if="w.score"
                                   @click.stop="openScore(w)"
                                   @click.stop="openScore(w)"
                                   :class="{
                                   :class="{
@@ -10660,6 +10667,7 @@
                                 </div>
                                 </div>
                                 <div
                                 <div
                                   class="answerScore"
                                   class="answerScore"
+                                  style="right: 70px;"
                                   @click.stop="openScore(w)"
                                   @click.stop="openScore(w)"
                                   v-else-if="courseDetail.userid == userid"
                                   v-else-if="courseDetail.userid == userid"
                                   :class="{
                                   :class="{
@@ -10672,6 +10680,8 @@
                                 >
                                 >
                                   {{lang.ssMarkScore}}
                                   {{lang.ssMarkScore}}
                                 </div>
                                 </div>
+                                <img class="xiaz" @click="downloadFile(w.works,w.userid)" style="right: 40px;" src="../../assets/icon/works/xiaz.png" alt="">
+
                                 <img
                                 <img
                                   class="deleteImg"
                                   class="deleteImg"
                                   src="../../assets/deleteworks.png"
                                   src="../../assets/deleteworks.png"
@@ -30626,4 +30636,15 @@ div::-webkit-scrollbar {
 .notop >>> .vjs-fluid{
 .notop >>> .vjs-fluid{
   padding-top: 0 !important;
   padding-top: 0 !important;
 }
 }
+.xiaz{
+  position: absolute;
+  right: 40px;
+  top: 10px;
+  width: 24px !important;
+  padding: 4px;
+  box-sizing: border-box;
+  background: #243052;
+  border-radius: 8px;
+  height: 24px !important;
+}
 </style>
 </style>

+ 18 - 0
src/components/easy3/studyStudent.vue

@@ -7414,6 +7414,7 @@
                                 >
                                 >
                                   {{ lang.ssMarkScore }}
                                   {{ lang.ssMarkScore }}
                                 </div>
                                 </div>
+                                <!-- <img class="xiaz" @click="downloadFile(w.works,w.userid)" style="right: 40px;" src="../../assets/icon/works/xiaz.png" alt=""> -->
                                 <img
                                 <img
                                   class="deleteImg"
                                   class="deleteImg"
                                   src="../../assets/deleteworks.png"
                                   src="../../assets/deleteworks.png"
@@ -7435,6 +7436,7 @@
                                 <!-- @click="openFile(w.works)" -->
                                 <!-- @click="openFile(w.works)" -->
                                 <div
                                 <div
                                   class="answerScore"
                                   class="answerScore"
+                                  style="right: 70px;"
                                   v-if="w.score"
                                   v-if="w.score"
                                   @click.stop="openScore(w)"
                                   @click.stop="openScore(w)"
                                   :class="{
                                   :class="{
@@ -7449,6 +7451,7 @@
                                 </div>
                                 </div>
                                 <div
                                 <div
                                   class="answerScore"
                                   class="answerScore"
+                                  style="right: 70px;"
                                   @click.stop="openScore(w)"
                                   @click.stop="openScore(w)"
                                   v-else-if="courseDetail.userid == userid"
                                   v-else-if="courseDetail.userid == userid"
                                   :class="{
                                   :class="{
@@ -7461,6 +7464,7 @@
                                 >
                                 >
                                   {{ lang.ssMarkScore }}
                                   {{ lang.ssMarkScore }}
                                 </div>
                                 </div>
+                                <img class="xiaz" @click="downloadFile(w.works,w.userid)" style="right: 40px;" src="../../assets/icon/works/xiaz.png" alt="">
                                 <img
                                 <img
                                   class="deleteImg"
                                   class="deleteImg"
                                   src="../../assets/deleteworks.png"
                                   src="../../assets/deleteworks.png"
@@ -7483,6 +7487,7 @@
                                 <!--  @click="openVideo(w.works)" -->
                                 <!--  @click="openVideo(w.works)" -->
                                 <div
                                 <div
                                   class="answerScore"
                                   class="answerScore"
+                                  style="right: 70px;"
                                   v-if="w.score"
                                   v-if="w.score"
                                   @click.stop="openScore(w)"
                                   @click.stop="openScore(w)"
                                   :class="{
                                   :class="{
@@ -7497,6 +7502,7 @@
                                 </div>
                                 </div>
                                 <div
                                 <div
                                   class="answerScore"
                                   class="answerScore"
+                                  style="right: 70px;"
                                   @click.stop="openScore(w)"
                                   @click.stop="openScore(w)"
                                   v-else-if="courseDetail.userid == userid"
                                   v-else-if="courseDetail.userid == userid"
                                   :class="{
                                   :class="{
@@ -7509,6 +7515,7 @@
                                 >
                                 >
                                   {{ lang.ssMarkScore }}
                                   {{ lang.ssMarkScore }}
                                 </div>
                                 </div>
+                                <img class="xiaz" @click="downloadFile(w.works,w.userid)" style="right: 40px;" src="../../assets/icon/works/xiaz.png" alt="">
                                 <img
                                 <img
                                   class="deleteImg"
                                   class="deleteImg"
                                   src="../../assets/deleteworks.png"
                                   src="../../assets/deleteworks.png"
@@ -25892,4 +25899,15 @@ div::-webkit-scrollbar {
 .notop >>> .vjs-fluid{
 .notop >>> .vjs-fluid{
   padding-top: 0 !important;
   padding-top: 0 !important;
 }
 }
+.xiaz{
+  position: absolute;
+  right: 40px;
+  top: 10px;
+  width: 24px !important;
+  padding: 4px;
+  box-sizing: border-box;
+  background: #243052;
+  border-radius: 8px;
+  height: 24px !important;
+}
 </style>
 </style>

+ 229 - 82
src/components/pptEasyClass/index.vue

@@ -6,12 +6,21 @@
         v-show="false"></iframe>
         v-show="false"></iframe>
       <div class="pec_header">
       <div class="pec_header">
         <div class="pec_h_left">
         <div class="pec_h_left">
-          <div @click.stop="back" class="backBtn" v-if="screenType != 2 || tType == 1">
+          <!-- || tType == 1 -->
+          <div @click.stop="back" class="backBtn" v-if="screenType != 2">
             <img src="../../assets/icon/newIcon/return.svg" alt="" />
             <img src="../../assets/icon/newIcon/return.svg" alt="" />
           </div>
           </div>
           <div v-if="tcid" class="class-info-group">
           <div v-if="tcid" class="class-info-group">
             <span class="class-label">{{ lang.ssClass }}</span>
             <span class="class-label">{{ lang.ssClass }}</span>
-            <span class="class-value">{{ className }}</span>
+            <span class="class-value class-value2" @click="openSelectClass">
+              {{ className }}
+              <svg t="1776672009773" class="xia-icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg"
+                p-id="4735" xmlns:xlink="http://www.w3.org/1999/xlink" width="12" height="12">
+                <path
+                  d="M562.5 771c-14.3 14.3-33.7 27.5-52 23.5-18.4 3.1-35.7-11.2-50-23.5L18.8 327.3c-22.4-22.4-22.4-59.2 0-81.6s59.2-22.4 81.6 0L511.5 668l412.1-422.3c22.4-22.4 59.2-22.4 81.6 0s22.4 59.2 0 81.6L562.5 771z"
+                  p-id="4736" fill="currentColor"></path>
+              </svg>
+            </span>
           </div>
           </div>
           <div v-if="tcid" class="class-info-group">
           <div v-if="tcid" class="class-info-group">
             <span class="class-label" v-if="inviteCode">{{ lang.ssInviteCode }}</span>
             <span class="class-label" v-if="inviteCode">{{ lang.ssInviteCode }}</span>
@@ -91,14 +100,29 @@
       <iframe v-if="showObserveDialog" :src="observeDialogUrl" frameborder="0"
       <iframe v-if="showObserveDialog" :src="observeDialogUrl" frameborder="0"
         style="width: 100%; height: 85vh; border: none;"></iframe>
         style="width: 100%; height: 85vh; border: none;"></iframe>
     </el-dialog>
     </el-dialog>
+    <selectTeachingClassDialog :courseDetail="courseDetail" :userId="userid" ref="selectTeachingClassDialogRef" @success="selectClassSuccess" @changeClassList="changeClassList"/>
+
+
+    <!-- 消息提示组件 -->
+    <messageInstruction ref="messageInstructionRef"></messageInstruction>
+    <!-- 确认提示组件 -->
+    <confirmInstruction ref="confirmInstructionRef"></confirmInstruction>
   </div>
   </div>
 </template>
 </template>
 
 
 <script>
 <script>
 import { myMixin } from '../../mixins/mixin';
 import { myMixin } from '../../mixins/mixin';
+import selectTeachingClassDialog from "../dialog/selectTeachingClassDialog2.vue";
 
 
+import messageInstruction from '../components/messageInstruction.vue';
+import confirmInstruction from '../components/confirmInstruction.vue';
 export default {
 export default {
   mixins: [myMixin],
   mixins: [myMixin],
+  components: {
+    messageInstruction,
+    confirmInstruction,
+    selectTeachingClassDialog
+  },
   data() {
   data() {
     return {
     return {
       id: this.$route.query.courseId,
       id: this.$route.query.courseId,
@@ -111,6 +135,7 @@ export default {
       courseType: this.$route.query.type,
       courseType: this.$route.query.type,
       screenType: this.$route.query.screenType,
       screenType: this.$route.query.screenType,
       tcid2: this.$route.query.tcid,
       tcid2: this.$route.query.tcid,
+      classList: [],
       tcid: "",
       tcid: "",
       className: "",
       className: "",
       showIframe: false,
       showIframe: false,
@@ -164,6 +189,57 @@ export default {
     }
     }
   },
   },
   methods: {
   methods: {
+    openSelectClass(){
+      this.$refs.selectTeachingClassDialogRef.open({classList:this.classList}, this.tcid2)
+    },
+    addInviteCodeOne(cid) {
+      return new Promise((resolve)=>{
+        let params = [
+        {
+          courseId: this.id,
+          inviteCode: cid,
+        },
+      ];
+      this.ajax
+        .post(this.$store.state.api + "add_courseInviteCode2", params)
+        .then((res) => {
+          console.log(res.data)
+          resolve(res.data)
+        })
+        .catch((err) => {
+          resolve(err.messages)
+          console.error(err);
+        });
+      })
+    },
+    async selectClassSuccess(classId){
+      if(classId){
+        let data = await this.addInviteCodeOne(classId)
+        console.log("addInviteCodeOne",data)
+        this.tcid2 = classId
+        this.getClassName()
+        this.getCourseDetail();
+      }else if(this.tcid2){
+        this.ticd2 = ''
+        this.getCourseDetail();
+      }
+      // this.gotoCourse(classId);
+      this.$refs.selectTeachingClassDialogRef.close();
+    },
+    async changeClassList(data){
+      this.classList = JSON.parse(JSON.stringify(data))
+      let params = [{
+        cid:this.id,
+        juri:this.classList.map(i=>i.id).join(',')
+      }]
+      this.ajax.post(this.$store.state.api+"update_CourseJuriById",params).then(res=>{
+        if(res.data==1){
+          console.log(this.lang.ssModifySuccess)
+        }
+      })
+
+      //this.inviteCodeFn();
+    },
     goTo(path) {
     goTo(path) {
       this.$router.push(path);
       this.$router.push(path);
     },
     },
@@ -183,25 +259,43 @@ export default {
             this.$message.warning(this.lang.ssRecordingTimeAtLeast5Seconds);
             this.$message.warning(this.lang.ssRecordingTimeAtLeast5Seconds);
             return;
             return;
           }
           }
-          this.$confirm(this.lang.ssStopRecordingNotice, this.lang.ssStopRecordingConfirm, {
-            confirmButtonText: this.lang.ssConfirm,
-            cancelButtonText: this.lang.ssCancel,
-            confirmButtonClass: "pptEasyClassConfirmButtonText",
-            cancelButtonClass: "pptEasyClassCancelButtonText"
-          }).then(() => {
-            console.log("确定")
-            // this.$message({
-            //   dangerouslyUseHTMLString: true,
-            //   customClass:"pptEasyClassMessage",
-            //   message: '已停止录制 <p style="color:#3AB855;text-decoration: underline;cursor: pointer;float:right;margin-left:10px" target="_blank">查看结果</p>'
-            // });
-            this.onFinishRecordWithMicrosoft().then(() => {
-              resolve(true)
-            });
-          }).catch(() => {
-            console.log("取消")
-            resolve(false)
-          });
+
+          this.$refs.confirmInstructionRef.open({
+            title: this.lang.ssStopRecordingConfirm,
+            message: this.lang.ssStopRecordingNotice,
+            cancelText: this.lang.ssCancel,
+            submitText: this.lang.ssConfirm,
+            submitCallback: () => {
+              console.log("确定")
+              this.onFinishRecordWithMicrosoft().then(() => {
+                resolve(true)
+              });
+            },
+            cancelCallback: () => {
+              console.log("取消")
+              resolve(false)
+            },
+          })
+
+          // this.$confirm(this.lang.ssStopRecordingNotice, this.lang.ssStopRecordingConfirm, {
+          //   confirmButtonText: this.lang.ssConfirm,
+          //   cancelButtonText: this.lang.ssCancel,
+          //   confirmButtonClass: "pptEasyClassConfirmButtonText",
+          //   cancelButtonClass: "pptEasyClassCancelButtonText"
+          // }).then(() => {
+          //   console.log("确定")
+          //   // this.$message({
+          //   //   dangerouslyUseHTMLString: true,
+          //   //   customClass:"pptEasyClassMessage",
+          //   //   message: '已停止录制 <p style="color:#3AB855;text-decoration: underline;cursor: pointer;float:right;margin-left:10px" target="_blank">查看结果</p>'
+          //   // });
+          //   this.onFinishRecordWithMicrosoft().then(() => {
+          //     resolve(true)
+          //   });
+          // }).catch(() => {
+          //   console.log("取消")
+          //   resolve(false)
+          // });
 
 
         } else {
         } else {
           const now = new Date();
           const now = new Date();
@@ -489,12 +583,7 @@ export default {
         _pageWindow.focus()
         _pageWindow.focus()
       }
       }
 
 
-      this.$message({
-        dangerouslyUseHTMLString: true,
-        customClass: "pptEasyClassMessage",
-        duration: 3000,
-        message: `${this.lang.ssStoppedRecording} <p style="color:#3AB855;text-decoration: underline;cursor: pointer;float:right;margin-left:10px" target="_blank" onclick="(${openPageWindow.toString()})()">${this.lang.ssViewRecordingResult}</p>`
-      });
+      this.$refs.messageInstructionRef.pptMessage(`${this.lang.ssStoppedRecording} <p style="color:#3AB855;text-decoration: underline;cursor: pointer;float:right;margin-left:10px" target="_blank" onClick="(${openPageWindow.toString()})()">${this.lang.ssViewRecordingResult}</p>`)
 
 
     },
     },
     addPPTClass(file) {
     addPPTClass(file) {
@@ -543,6 +632,8 @@ export default {
             this.courseDetail.juri ? this.courseDetail.juri.split(",") : [],
             this.courseDetail.juri ? this.courseDetail.juri.split(",") : [],
             this.tcid2 ? this.tcid2.split(",") : []
             this.tcid2 ? this.tcid2.split(",") : []
           )[0] || "";
           )[0] || "";
+          console.log('tcid', this.tcid)
+          console.log('tcid2', this.tcid2)
           if (this.tcid && res.data[1].length) {
           if (this.tcid && res.data[1].length) {
             let _inviteA = [];
             let _inviteA = [];
             for (var ik = 0; ik < res.data[1].length; ik++) {
             for (var ik = 0; ik < res.data[1].length; ik++) {
@@ -564,6 +655,10 @@ export default {
             }
             }
           }
           }
           this.setPptIframe()
           this.setPptIframe()
+          this.classList = res.data[2]
+          if(!this.tcid2 && this.tType == '1'){
+            this.$refs.selectTeachingClassDialogRef.open({classList:this.classList})
+          }
           this.pageLoading = false;
           this.pageLoading = false;
         })
         })
         .catch(err => {
         .catch(err => {
@@ -613,70 +708,109 @@ export default {
       this.className = courseGrade.data[0][0].grade;
       this.className = courseGrade.data[0][0].grade;
     },
     },
     back() {
     back() {
-      if (this.tType != 2) {
-        this.goTo(
-          '/courseDetail?userid=' +
-          this.userid +
-          '&oid=' +
-          this.oid +
-          '&org=' +
-          this.org +
-          '&cid=' +
-          this.classId +
-          '&courseId=' +
-          this.id +
-          '&tType=' +
-          this.tType +
-          '&screenType=' +
-          this.screenType
-        )
-      } else {
-        this.goTo(
-          '/index?userid=' +
-          this.userid +
-          '&oid=' +
-          this.oid +
-          '&org=' +
-          this.org +
-          '&cid=' +
-          this.classId +
-          '&tType=' +
-          this.tType +
-          '&screenType=' +
-          this.screenType
-        )
-      }
+      // if (this.tType != 2) {
+      //   this.goTo(
+      //     '/courseDetail?userid=' +
+      //     this.userid +
+      //     '&oid=' +
+      //     this.oid +
+      //     '&org=' +
+      //     this.org +
+      //     '&cid=' +
+      //     this.classId +
+      //     '&courseId=' +
+      //     this.id +
+      //     '&tType=' +
+      //     this.tType +
+      //     '&screenType=' +
+      //     this.screenType
+      //   )
+      // } else {
+      this.goTo(
+        '/index?userid=' +
+        this.userid +
+        '&oid=' +
+        this.oid +
+        '&org=' +
+        this.org +
+        '&cid=' +
+        this.classId +
+        '&tType=' +
+        this.tType +
+        '&screenType=' +
+        this.screenType
+      )
+      // }
     },
     },
     afterClass() {
     afterClass() {
       if (this.recordedForm.status == 1) {
       if (this.recordedForm.status == 1) {
         this.toggleRecording().then((flag) => {
         this.toggleRecording().then((flag) => {
           if (flag) {
           if (flag) {
-            this.$confirm(this.lang.ssEndClassConfirm, this.lang.ssPrompt, {
-              confirmButtonText: this.lang.ssConfirm,
-              cancelButtonText: this.lang.ssCancel,
-              type: 'warning'
-            }).then(() => {
-              this.$refs.ppt.contentWindow.PPTistStudent.forceLogout();
-              this.$message.success(this.lang.ssStudentLoggedOut)
-              setTimeout(() => {
-                this.back()
-              }, 1000)
-            }).catch(() => { });
+
+            this.$refs.confirmInstructionRef.open({
+              title: this.lang.ssPrompt,
+              message: this.lang.ssEndClassConfirm,
+              cancelText: this.lang.ssCancel,
+              submitText: this.lang.ssConfirm,
+              submitCallback: () => {
+                this.$refs.ppt.contentWindow.PPTistStudent.forceLogout();
+                this.$refs.messageInstructionRef.pptMessage(this.lang.ssStudentLoggedOut)
+                setTimeout(() => {
+                  this.tcid2 = ""
+                  this.refreshCourse()
+                }, 1000)
+              },
+              cancelCallback: () => {
+                console.log("取消")
+              }
+            })
+
+
+            //   this.$confirm(this.lang.ssEndClassConfirm, this.lang.ssPrompt, {
+            //     confirmButtonText: this.lang.ssConfirm,
+            //     cancelButtonText: this.lang.ssCancel,
+            //     type: 'warning'
+            //   }).then(() => {
+            //     this.$refs.ppt.contentWindow.PPTistStudent.forceLogout();
+            //     this.$refs.messageInstructionRef.pptMessage(this.lang.ssStudentLoggedOut)
+            //     setTimeout(() => {
+            //       this.tcid2 = ""
+            //       this.refreshCourse()
+            //     }, 1000)
+            //   }).catch(() => { });
 
 
           }
           }
         })
         })
       } else {
       } else {
-        this.$confirm(this.lang.ssEndClassConfirm, this.lang.ssPrompt, {
-          confirmButtonText: this.lang.ssConfirm,
-          cancelButtonText: this.lang.ssCancel,
-          type: 'warning'
-        }).then(() => {
-          this.$refs.ppt.contentWindow.PPTistStudent.forceLogout();
-          this.$message.success(this.lang.ssStudentLoggedOut)
-          setTimeout(() => {
-            this.back()
-          }, 1000)
-        }).catch(() => { });
+        // this.$confirm(this.lang.ssEndClassConfirm, this.lang.ssPrompt, {
+        //   confirmButtonText: this.lang.ssConfirm,
+        //   cancelButtonText: this.lang.ssCancel,
+        //   type: 'warning'
+        // }).then(() => {
+        //   this.$refs.ppt.contentWindow.PPTistStudent.forceLogout();
+        //   this.$refs.messageInstructionRef.pptMessage(this.lang.ssStudentLoggedOut)
+        //   setTimeout(() => {
+        //     this.tcid2 = ""
+        //     this.refreshCourse()
+        //   }, 1000)
+        // }).catch(() => { });
+        this.$refs.confirmInstructionRef.open({
+          title: this.lang.ssPrompt,
+          message: this.lang.ssEndClassConfirm,
+          cancelText: this.lang.ssCancel,
+          submitText: this.lang.ssConfirm,
+          submitCallback: () => {
+            this.$refs.ppt.contentWindow.PPTistStudent.forceLogout();
+            this.$refs.messageInstructionRef.pptMessage(this.lang.ssStudentLoggedOut)
+            setTimeout(() => {
+              this.tcid2 = ""
+              this.refreshCourse()
+            }, 1000)
+          },
+          cancelCallback: () => {
+            console.log("取消")
+          }
+        })
       }
       }
 
 
     },
     },
@@ -1011,6 +1145,19 @@ export default {
   text-align: center;
   text-align: center;
   display: inline-block;
   display: inline-block;
   box-sizing: border-box;
   box-sizing: border-box;
+  display: flex;
+  align-items: center;
+}
+
+.class-value2 {
+  cursor: pointer;
+  background: #fff;
+}
+
+.class-value > svg{
+  width: 13px;
+  height: 13px;
+  margin-left: 8px;
 }
 }
 
 
 .pec_content {
 .pec_content {

+ 18 - 0
src/components/studyStudent.vue

@@ -7365,6 +7365,7 @@
                                 >
                                 >
                                   {{ lang.ssMarkScore }}
                                   {{ lang.ssMarkScore }}
                                 </div>
                                 </div>
+                                <!-- <img class="xiaz" @click="downloadFile(w.works,w.userid)" style="right: 40px;" src="../assets/icon/works/xiaz.png" alt=""> -->
                                 <img
                                 <img
                                   class="deleteImg"
                                   class="deleteImg"
                                   src="../assets/deleteworks.png"
                                   src="../assets/deleteworks.png"
@@ -7386,6 +7387,7 @@
                                 <!-- @click="openFile(w.works)" -->
                                 <!-- @click="openFile(w.works)" -->
                                 <div
                                 <div
                                   class="answerScore"
                                   class="answerScore"
+                                  style="right: 70px;"
                                   v-if="w.score"
                                   v-if="w.score"
                                   @click.stop="openScore(w)"
                                   @click.stop="openScore(w)"
                                   :class="{
                                   :class="{
@@ -7400,6 +7402,7 @@
                                 </div>
                                 </div>
                                 <div
                                 <div
                                   class="answerScore"
                                   class="answerScore"
+                                  style="right: 70px;"
                                   @click.stop="openScore(w)"
                                   @click.stop="openScore(w)"
                                   v-else-if="courseDetail.userid == userid"
                                   v-else-if="courseDetail.userid == userid"
                                   :class="{
                                   :class="{
@@ -7412,6 +7415,7 @@
                                 >
                                 >
                                   {{ lang.ssMarkScore }}
                                   {{ lang.ssMarkScore }}
                                 </div>
                                 </div>
+                                <img class="xiaz" @click="downloadFile(w.works,w.userid)" style="right: 40px;" src="../assets/icon/works/xiaz.png" alt="">
                                 <img
                                 <img
                                   class="deleteImg"
                                   class="deleteImg"
                                   src="../assets/deleteworks.png"
                                   src="../assets/deleteworks.png"
@@ -7434,6 +7438,7 @@
                                 <!--  @click="openVideo(w.works)" -->
                                 <!--  @click="openVideo(w.works)" -->
                                 <div
                                 <div
                                   class="answerScore"
                                   class="answerScore"
+                                  style="right: 70px;"
                                   v-if="w.score"
                                   v-if="w.score"
                                   @click.stop="openScore(w)"
                                   @click.stop="openScore(w)"
                                   :class="{
                                   :class="{
@@ -7448,6 +7453,7 @@
                                 </div>
                                 </div>
                                 <div
                                 <div
                                   class="answerScore"
                                   class="answerScore"
+                                  style="right: 70px;"
                                   @click.stop="openScore(w)"
                                   @click.stop="openScore(w)"
                                   v-else-if="courseDetail.userid == userid"
                                   v-else-if="courseDetail.userid == userid"
                                   :class="{
                                   :class="{
@@ -7460,6 +7466,7 @@
                                 >
                                 >
                                   {{ lang.ssMarkScore }}
                                   {{ lang.ssMarkScore }}
                                 </div>
                                 </div>
+                                <img class="xiaz" @click="downloadFile(w.works,w.userid)" style="right: 40px;" src="../assets/icon/works/xiaz.png" alt="">
                                 <img
                                 <img
                                   class="deleteImg"
                                   class="deleteImg"
                                   src="../assets/deleteworks.png"
                                   src="../assets/deleteworks.png"
@@ -25856,4 +25863,15 @@ div::-webkit-scrollbar {
 .notop >>> .vjs-fluid{
 .notop >>> .vjs-fluid{
   padding-top: 0 !important;
   padding-top: 0 !important;
 }
 }
+.xiaz{
+  position: absolute;
+  right: 40px;
+  top: 10px;
+  width: 24px !important;
+  padding: 4px;
+  box-sizing: border-box;
+  background: #243052;
+  border-radius: 8px;
+  height: 24px !important;
+}
 </style>
 </style>

+ 18 - 0
src/components/studySutdentClass/studyStudent.vue

@@ -10574,6 +10574,7 @@
                                 >
                                 >
                                   {{ lang.ssMarkScore }}
                                   {{ lang.ssMarkScore }}
                                 </div>
                                 </div>
+                                <!-- <img class="xiaz" @click="downloadFile(w.works,w.userid)" style="right: 40px;" src="../../assets/icon/works/xiaz.png" alt=""> -->
                                 <img
                                 <img
                                   class="deleteImg"
                                   class="deleteImg"
                                   src="../../assets/deleteworks.png"
                                   src="../../assets/deleteworks.png"
@@ -10595,6 +10596,7 @@
                                 <!-- @click="openFile(w.works)" -->
                                 <!-- @click="openFile(w.works)" -->
                                 <div
                                 <div
                                   class="answerScore"
                                   class="answerScore"
+                                  style="right: 70px;"
                                   v-if="w.score"
                                   v-if="w.score"
                                   @click.stop="openScore(w)"
                                   @click.stop="openScore(w)"
                                   :class="{
                                   :class="{
@@ -10609,6 +10611,7 @@
                                 </div>
                                 </div>
                                 <div
                                 <div
                                   class="answerScore"
                                   class="answerScore"
+                                  style="right: 70px;"
                                   @click.stop="openScore(w)"
                                   @click.stop="openScore(w)"
                                   v-else-if="courseDetail.userid == userid"
                                   v-else-if="courseDetail.userid == userid"
                                   :class="{
                                   :class="{
@@ -10621,6 +10624,7 @@
                                 >
                                 >
                                   {{ lang.ssMarkScore }}
                                   {{ lang.ssMarkScore }}
                                 </div>
                                 </div>
+                                <img class="xiaz" @click="downloadFile(w.works,w.userid)" style="right: 40px;" src="../../assets/icon/works/xiaz.png" alt="">
                                 <img
                                 <img
                                   class="deleteImg"
                                   class="deleteImg"
                                   src="../../assets/deleteworks.png"
                                   src="../../assets/deleteworks.png"
@@ -10643,6 +10647,7 @@
                                 <!--  @click="openVideo(w.works)" -->
                                 <!--  @click="openVideo(w.works)" -->
                                 <div
                                 <div
                                   class="answerScore"
                                   class="answerScore"
+                                  style="right: 70px;"
                                   v-if="w.score"
                                   v-if="w.score"
                                   @click.stop="openScore(w)"
                                   @click.stop="openScore(w)"
                                   :class="{
                                   :class="{
@@ -10657,6 +10662,7 @@
                                 </div>
                                 </div>
                                 <div
                                 <div
                                   class="answerScore"
                                   class="answerScore"
+                                  style="right: 70px;"
                                   @click.stop="openScore(w)"
                                   @click.stop="openScore(w)"
                                   v-else-if="courseDetail.userid == userid"
                                   v-else-if="courseDetail.userid == userid"
                                   :class="{
                                   :class="{
@@ -10669,6 +10675,7 @@
                                 >
                                 >
                                   {{ lang.ssMarkScore }}
                                   {{ lang.ssMarkScore }}
                                 </div>
                                 </div>
+                                <img class="xiaz" @click="downloadFile(w.works,w.userid)" style="right: 40px;" src="../../assets/icon/works/xiaz.png" alt="">
                                 <img
                                 <img
                                   class="deleteImg"
                                   class="deleteImg"
                                   src="../../assets/deleteworks.png"
                                   src="../../assets/deleteworks.png"
@@ -29952,4 +29959,15 @@ div::-webkit-scrollbar {
 .notop >>> .vjs-fluid{
 .notop >>> .vjs-fluid{
   padding-top: 0 !important;
   padding-top: 0 !important;
 }
 }
+.xiaz{
+  position: absolute;
+  right: 40px;
+  top: 10px;
+  width: 24px !important;
+  padding: 4px;
+  box-sizing: border-box;
+  background: #243052;
+  border-radius: 8px;
+  height: 24px !important;
+}
 </style>
 </style>

Beberapa file tidak ditampilkan karena terlalu banyak file yang berubah dalam diff ini