Kaynağa Gözat

feat(i18n+ppt): add controls for showing/hiding quiz results

新增了展示/隐藏答题结果的全局开关,同步多语言配置项,实现对应控制逻辑
lsc 6 gün önce
ebeveyn
işleme
2946d0e351

+ 34 - 0
src/components/pptEasyClass/index.vue

@@ -65,6 +65,11 @@
             <span class="switch-label" :class="{ active: freeBrowse }">{{ freeBrowse ? lang.ssFreeBrowse :
             <span class="switch-label" :class="{ active: freeBrowse }">{{ freeBrowse ? lang.ssFreeBrowse :
               lang.ssFollowMode }}</span>
               lang.ssFollowMode }}</span>
           </div>
           </div>
+          <div class="free-browse-switch" v-if="courseDetail.userid == userid">
+            <el-switch v-model="isCan" :active-value="true" :inactive-value="false" class="custom-switch"
+              active-color="#03ae2b" inactive-color="#d8d8d8" @change="onIsCanChange"></el-switch>
+            <span class="switch-label" :class="{ active: isCan }">{{ isCan ? lang.ssShowResult : lang.ssHideResult }}</span>
+          </div>
           <div class="free-browse-switch" v-if="tType == 2">
           <div class="free-browse-switch" v-if="tType == 2">
             <span class="switch-label" :class="{ active: freeBrowse }">{{ freeBrowse ? lang.ssFreeBrowse :
             <span class="switch-label" :class="{ active: freeBrowse }">{{ freeBrowse ? lang.ssFreeBrowse :
               lang.ssFollowMode }}</span>
               lang.ssFollowMode }}</span>
@@ -185,6 +190,8 @@ export default {
       // 录音时间记录
       // 录音时间记录
       recordingStartTime: "", // 开始录音时间
       recordingStartTime: "", // 开始录音时间
       recordingEndTime: "", // 结束录音时间
       recordingEndTime: "", // 结束录音时间
+      isResultArray: [],
+      isCan: false,
     };
     };
   },
   },
   computed: {
   computed: {
@@ -833,6 +840,19 @@ export default {
       console.log('自由浏览模式已切换为1:', this.freeBrowse);
       console.log('自由浏览模式已切换为1:', this.freeBrowse);
       this.$refs.ppt.contentWindow.PPTistStudent.toggleFollowMode()
       this.$refs.ppt.contentWindow.PPTistStudent.toggleFollowMode()
     },
     },
+    onIsCanChange(value) {
+      this.isCan = value;
+      for(var i = 0; i < this.isResultArray.length; i++){
+        let item = this.isResultArray[i];
+        if(value && item.isTool){
+          item.can = true
+        }else if(!item.isTool){
+          item.can = false
+          item.like = false
+        }
+      }
+      this.$refs.ppt.contentWindow.PPTistStudent.setCan(this.isResultArray)
+    },
     setOperationTime() {
     setOperationTime() {
       let _this = this;
       let _this = this;
       if (_this.opertimer) {
       if (_this.opertimer) {
@@ -956,6 +976,20 @@ export default {
       this.freeBrowse = value;
       this.freeBrowse = value;
       console.log('自由浏览模式已切换为:', this.freeBrowse);
       console.log('自由浏览模式已切换为:', this.freeBrowse);
     }
     }
+    window.setIsResultArray = (value) => {
+      this.isResultArray = value;
+      // 判断数组中isTool为true的项的can是否都为true
+      const toolItems = value.filter(item => item.isTool);
+      if (toolItems.length > 0) {
+        const allCanTrue = toolItems.every(item => item.can === true);
+        const allCanFalse = toolItems.every(item => item.can === false);
+        if (allCanTrue) {
+          this.isCan = true;
+        } else if (allCanFalse) {
+          this.isCan = false;
+        }
+      }
+    }
     if (!this.userJson || !this.userJson.accountNumber) {
     if (!this.userJson || !this.userJson.accountNumber) {
       let res = await this.ajax.get(this.$store.state.api + "selectUser", {
       let res = await this.ajax.get(this.$store.state.api + "selectUser", {
         userid: this.$route.query.userid
         userid: this.$route.query.userid

+ 36 - 2
src/components/pptEasyClass/indexPS.vue

@@ -65,6 +65,11 @@
             <span class="switch-label" :class="{ active: freeBrowse }">{{ freeBrowse ? lang.ssFreeBrowse :
             <span class="switch-label" :class="{ active: freeBrowse }">{{ freeBrowse ? lang.ssFreeBrowse :
               lang.ssFollowMode }}</span>
               lang.ssFollowMode }}</span>
           </div>
           </div>
+          <div class="free-browse-switch" v-if="courseDetail.userid == userid">
+            <el-switch v-model="isCan" :active-value="true" :inactive-value="false" class="custom-switch"
+              active-color="#03ae2b" inactive-color="#d8d8d8" @change="onIsCanChange"></el-switch>
+            <span class="switch-label" :class="{ active: isCan }">{{ isCan ? lang.ssShowResult : lang.ssHideResult }}</span>
+          </div>
           <div class="free-browse-switch" v-if="tType == 2">
           <div class="free-browse-switch" v-if="tType == 2">
             <span class="switch-label" :class="{ active: freeBrowse }">{{ freeBrowse ? lang.ssFreeBrowse :
             <span class="switch-label" :class="{ active: freeBrowse }">{{ freeBrowse ? lang.ssFreeBrowse :
               lang.ssFollowMode }}</span>
               lang.ssFollowMode }}</span>
@@ -125,7 +130,6 @@ import selectTeachingClassDialog from "../dialog/selectTeachingClassDialog2.vue"
 import messageInstruction from '../components/messageInstruction.vue';
 import messageInstruction from '../components/messageInstruction.vue';
 import confirmInstruction from '../components/confirmInstruction.vue';
 import confirmInstruction from '../components/confirmInstruction.vue';
 import shareDialog from './shareDialog.vue';
 import shareDialog from './shareDialog.vue';
-
 export default {
 export default {
   mixins: [myMixin],
   mixins: [myMixin],
   components: {
   components: {
@@ -186,6 +190,8 @@ export default {
       // 录音时间记录
       // 录音时间记录
       recordingStartTime: "", // 开始录音时间
       recordingStartTime: "", // 开始录音时间
       recordingEndTime: "", // 结束录音时间
       recordingEndTime: "", // 结束录音时间
+      isResultArray: [],
+      isCan: false,
     };
     };
   },
   },
   computed: {
   computed: {
@@ -834,6 +840,19 @@ export default {
       console.log('自由浏览模式已切换为1:', this.freeBrowse);
       console.log('自由浏览模式已切换为1:', this.freeBrowse);
       this.$refs.ppt.contentWindow.PPTistStudent.toggleFollowMode()
       this.$refs.ppt.contentWindow.PPTistStudent.toggleFollowMode()
     },
     },
+    onIsCanChange(value) {
+      this.isCan = value;
+      for(var i = 0; i < this.isResultArray.length; i++){
+        let item = this.isResultArray[i];
+        if(value && item.isTool){
+          item.can = true
+        }else if(!item.isTool){
+          item.can = false
+          item.like = false
+        }
+      }
+      this.$refs.ppt.contentWindow.PPTistStudent.setCan(this.isResultArray)
+    },
     setOperationTime() {
     setOperationTime() {
       let _this = this;
       let _this = this;
       if (_this.opertimer) {
       if (_this.opertimer) {
@@ -931,10 +950,12 @@ export default {
         // }
         // }
       }
       }
     },
     },
+    // 打开分享弹窗
     openShareDialog() {
     openShareDialog() {
       let code = this.userJson.oidCode || this.userJson.orgCode
       let code = this.userJson.oidCode || this.userJson.orgCode
       this.$refs.shareDialogRef.open(code, this.inviteCode)
       this.$refs.shareDialogRef.open(code, this.inviteCode)
     }
     }
+    
   },
   },
   destroyed() {
   destroyed() {
     clearInterval(this.opertimer);
     clearInterval(this.opertimer);
@@ -955,6 +976,20 @@ export default {
       this.freeBrowse = value;
       this.freeBrowse = value;
       console.log('自由浏览模式已切换为:', this.freeBrowse);
       console.log('自由浏览模式已切换为:', this.freeBrowse);
     }
     }
+    window.setIsResultArray = (value) => {
+      this.isResultArray = value;
+      // 判断数组中isTool为true的项的can是否都为true
+      const toolItems = value.filter(item => item.isTool);
+      if (toolItems.length > 0) {
+        const allCanTrue = toolItems.every(item => item.can === true);
+        const allCanFalse = toolItems.every(item => item.can === false);
+        if (allCanTrue) {
+          this.isCan = true;
+        } else if (allCanFalse) {
+          this.isCan = false;
+        }
+      }
+    }
     if (!this.userJson || !this.userJson.accountNumber) {
     if (!this.userJson || !this.userJson.accountNumber) {
       let res = await this.ajax.get(this.$store.state.api + "selectUser", {
       let res = await this.ajax.get(this.$store.state.api + "selectUser", {
         userid: this.$route.query.userid
         userid: this.$route.query.userid
@@ -1155,7 +1190,6 @@ export default {
   height: 100%;
   height: 100%;
 }
 }
 
 
-
 .class-info-group {
 .class-info-group {
   display: flex;
   display: flex;
   align-items: center;
   align-items: center;

+ 3 - 1
src/lang/cn.json

@@ -904,5 +904,7 @@
   "ssShareSetting": "分享链接",
   "ssShareSetting": "分享链接",
   "ssCopyLink": "复制链接",
   "ssCopyLink": "复制链接",
   "ssPleaseGenerateLink": "请先生成链接",
   "ssPleaseGenerateLink": "请先生成链接",
-  "ssCopyFailed": "复制失败"
+  "ssCopyFailed": "复制失败",
+  "ssShowResult": "展示结果",
+  "ssHideResult": "隐藏结果"
 }
 }

+ 3 - 1
src/lang/en.json

@@ -904,5 +904,7 @@
   "ssShareSetting": "Share Link",
   "ssShareSetting": "Share Link",
   "ssCopyLink": "Copy Link",
   "ssCopyLink": "Copy Link",
   "ssPleaseGenerateLink": "Please generate link first",
   "ssPleaseGenerateLink": "Please generate link first",
-  "ssCopyFailed": "Copy failed"
+  "ssCopyFailed": "Copy failed",
+  "ssShowResult": "Show Result",
+  "ssHideResult": "Hide Result"
 }
 }

+ 3 - 1
src/lang/hk.json

@@ -904,5 +904,7 @@
   "ssShareSetting": "分享鏈接",
   "ssShareSetting": "分享鏈接",
   "ssCopyLink": "複製鏈接",
   "ssCopyLink": "複製鏈接",
   "ssPleaseGenerateLink": "請先生成鏈接",
   "ssPleaseGenerateLink": "請先生成鏈接",
-  "ssCopyFailed": "複製失敗"
+  "ssCopyFailed": "複製失敗",
+  "ssShowResult": "展示結果",
+  "ssHideResult": "隱藏結果"
 }
 }