3 Commits 26ad8fe52b ... ef6381938d

Author SHA1 Message Date
  y595705120 ef6381938d media 2 weeks ago
  y595705120 0d0c538959 Merge branch 'master-sm' of https://git.ndjsxh.cn:18442/ndjsxh/study_sm into master-sm 2 weeks ago
  y595705120 d621e8de97 默认 2 weeks ago

+ 8 - 2
src/containers/center/class/train/index.vue

@@ -17,7 +17,7 @@
 
               <div class="hover-block">
                 <div class="mask-bg tc"></div>
-                <el-button @click="gotoPlay(item.courseId)" class="ui-btn">进入学习</el-button>
+                <el-button @click="gotoPlay(item)" class="ui-btn">进入学习</el-button>
               </div>
             </div>
 
@@ -49,6 +49,7 @@
 <script>
   import { httpServer} from "@/components/httpServer/httpServer.js";
   import { getMediaOptions} from "@/utils/index.js";
+  import {curDatetime} from '@/utils/date.js'
   import setting from '@/setting';
   export default {
     name: "Index",
@@ -75,7 +76,12 @@
         this.page = currentPage;
         this.getData()
       },
-      gotoPlay( courseId ){
+      gotoPlay( item ){
+        let courseId = item.courseId
+        if( curDatetime() < item.startDate){
+          this.$message.warning("还未到学习时间");
+          return
+        }
         this.$router.push({name:'play', params:{courseId}})
       },
       getData() {

+ 8 - 4
src/containers/center/home/index.vue

@@ -37,7 +37,7 @@
         <div class="clear mt10">
           <div class="m-history-course fl ng-scope" v-for="item in list" :key="item.courseId"
             style="width:460px; margin-left:8px;cursor:pointer">
-            <a  class="course-img" @click="gotoPlay(item.courseId)">
+            <a  class="course-img" @click="gotoPlay(item)">
               <img :src="item.tb">
               <span class="p-ico2"></span>
             </a>
@@ -86,14 +86,18 @@
       this.getData()
     },
     methods: {
-      gotoPlay(courseId) {
-        this.$router.push({name:'play', params:{courseId}})
+      gotoPlay(item) {
+        this.curDate = curDatetime();
+        if( this.curDate < item.startDate){
+          this.$message.warning("还未到学习时间");
+          return
+        }
+        this.$router.push({name:'play', params:{courseId:item.courseId}})
       },
       gotoPage(route) {
         this.$router.push(route);
       },
       getPercent(item) {
-
         if (item.getXs > item.totalXs) {
           return 100
         } else {

+ 9 - 4
src/containers/center/market/index.vue

@@ -101,7 +101,7 @@
 
               <div class="hover-block">
                 <div class="mask-bg"></div>
-                <el-button @click="gotoPlay(item.course_id)" v-if="item.is_pay==1"
+                <el-button @click="gotoPlay(item)" v-if="item.is_pay==1"
                   class="ui-btn btn-blue">进入学习</el-button>
                 <el-button @click="goPay(item)" v-else-if="item.is_pay==2 || !!item.buyImg"
                   class="ui-btn btn-w">补充材料</el-button>
@@ -217,7 +217,7 @@
   } from "@/utils";
   import DoUpload from '@/components/upload/index.vue'
   import exampleImg from '@/assets/template.png'
-
+  import {curDatetime} from '@/utils/date.js'
 
   import {
     mapGetters,
@@ -592,8 +592,13 @@
           }
         });
       },
-      gotoPlay(courseId) {
-        this.$router.push(`/center/class/train`);
+      gotoPlay(item) {
+        let courseId = item.course_id||item.courseId;
+        if( curDatetime() < item.startDate){
+          this.$message.warning("还未到学习时间");
+          return
+        }
+        this.$router.push({name:'play', params:{courseId:item.courseId}})
       },
       handleCurrentChange(page) {
         this.page = page;

+ 9 - 4
src/containers/center/market/trainIndex.vue

@@ -91,7 +91,7 @@
 
               <div class="hover-block">
                 <div class="mask-bg"></div>
-                <el-button @click="gotoPlay(item.course_id)" v-if="item.is_pay==1" class="ui-btn">进入学习</el-button>
+                <el-button @click="gotoPlay(item)" v-if="item.is_pay==1" class="ui-btn">进入学习</el-button>
 
                 <el-button @click="goPay(item)" v-else-if="item.is_pay==2 || !!item.buyImg" class="ui-btn btn-o">补充材料</el-button>
                 <el-button @click="goPay(item)" v-else class="ui-btn btn-o">购买课程</el-button>
@@ -268,7 +268,7 @@
   } from "@/utils";
   import DoUpload from '@/components/upload/index.vue'
   import exampleImg from '@/assets/template.png'
-
+  import {curDatetime} from '@/utils/date.js'
 
   import {
     mapGetters,
@@ -537,8 +537,13 @@
           }
         });
       },
-      gotoPlay(courseId) {
-        this.$router.push(`/center/class/train`);
+      gotoPlay(item) {
+        let courseId = item.course_id
+        if( curDatetime() < item.startDate){
+          this.$message.warning("还未到学习时间");
+          return
+        }
+        this.$router.push({name:'play', params:{courseId}})
       },
       handleCurrentChange(page) {
         this.page = page;

+ 74 - 11
src/containers/center/play/components/media.vue

@@ -9,7 +9,7 @@
     </video-player>
     <div class="dialog-footer pt30">
       <el-row class="media-footer">
-        <el-col :span="10" class="media-time">
+        <el-col :span="8" class="media-time">
           <span>{{curTimes|useTime}}</span>
           <strong>/</strong>
           <span>{{media.duration|useTime}}</span>
@@ -19,7 +19,14 @@
             circle></el-button>
           <el-button class="bicon" v-else type="warning" @click="doPause" icon="el-icon-video-pause" circle></el-button>
         </el-col>
-        <el-col :span="10" class="media-select">
+        <el-col :span="6" class="media-center">
+          <span class="volume-control">
+            <span class="vol-icon" @click="toggleMute">音量</span>
+            <el-slider class="volume-slider" :value="volume" :min="0" :max="1" :step="0.05"
+              @input="setVolume"></el-slider>
+          </span>
+        </el-col>
+        <el-col :span="6" class="media-select">
           <el-button class="bicon" type="danger" icon="el-icon-close" @click="onClose" style="float: right;">
           </el-button>
           <div style="margin-top:0px;float: right;">
@@ -57,7 +64,9 @@
         prevTime: 0,
         isReady: false,
         curTimes: 0,
-        onPlay: false
+        onPlay: false,
+        volume: 0.5,
+        isMuted: false
       }
     },
     components: {
@@ -99,13 +108,6 @@
         }
       }
     },
-    mounted() {
-      setTimeout(() => {
-        this.$emit("updateOption", {
-          muted: false
-        })
-      }, 3000)
-    },
     filters: {
       useTime(val) {
         let timestr = ""
@@ -125,7 +127,7 @@
     computed: {
       player() {
         return this.$refs.videoPlayer.player
-      }
+      },
     },
     created() {
       this.startTick()
@@ -173,6 +175,13 @@
         }
         this.isReady = true
         setTimeout(() => this.setMarks(), 600);
+
+        setTimeout(() => {
+          if (that.player && that.player.volume) {
+            that.player.volume(that.volume)
+            that.player.muted(that.isMuted)
+          }
+        }, 1000)
       },
       onPlayerTimeupdate(player) {
         let myPlayer = this.$refs.videoPlayer.player;
@@ -224,6 +233,20 @@
         myPlayer && myPlayer.play()
         this.tickNum = 0
       },
+      setVolume(val) {
+        this.volume = val
+        this.isMuted = val === 0
+        if (this.player && this.player.volume) {
+          this.player.volume(val)
+          this.player.muted(this.isMuted)
+        }
+      },
+      toggleMute() {
+        this.isMuted = !this.isMuted
+        if (this.player && this.player.volume) {
+          this.player.muted(this.isMuted)
+        }
+      },
       onPlayerStart() {
         // console.log("onPlayerStart")
         this.reportErr("play", 'start');
@@ -403,6 +426,46 @@
   .media-center {
     text-align: center;
     padding: 0px;
+    display: flex;
+    align-items: center;
+    justify-content: center;
+    gap: 8px;
+  }
+
+  .volume-control {
+    display: inline-flex;
+    align-items: center;
+    gap: 4px;
+  }
+
+  .vol-icon {
+    font-size: 12px;
+    font-weight: bold;
+    cursor: pointer;
+    color: #606266;
+    user-select: none;
+    line-height: 1;
+  }
+
+  .vol-icon:hover {
+    color: #409eff;
+  }
+
+  .volume-slider {
+    width: 80px !important;
+  }
+
+  .volume-slider .el-slider__runway {
+    height: 4px;
+  }
+
+  .volume-slider .el-slider__bar {
+    height: 4px;
+  }
+
+  .volume-slider .el-slider__button {
+    width: 12px;
+    height: 12px;
   }
 
   .media-time {

+ 4 - 2
src/containers/center/studyArchives/index.vue

@@ -7,7 +7,7 @@
       </div>
 
       <ul class="m-course-list clear mt10 ng-scope" v-if="total>0">
-        <li v-for="item in list" :key="item.courseId" class="ng-scope" @click="gotoPlay(item.courseId)">
+        <li v-for="item in list" :key="item.courseId" class="ng-scope" @click="gotoPlay(item)">
 
           <div class="course-bd">
             <div class="course-img"><img :src="item.tb" alt=" ">
@@ -36,6 +36,7 @@
   import {
     httpServer
   } from "@/components/httpServer/httpServer.js";
+  import {curDatetime} from '@/utils/date.js'
   export default {
     name: "Index",
     data() {
@@ -55,7 +56,8 @@
         this.page = currentPage;
         this.getData()
       },
-      gotoPlay( courseId ){
+      gotoPlay( item ){
+        let courseId = item.courseId
         const { href } = this.$router.resolve({
             name: "播放视频",
             path: '/play/'+ courseId