小彬 hace 2 años
padre
commit
10e7771d82

+ 30 - 10
activityPages/activityDetail/activityDetail.vue

@@ -18,7 +18,16 @@
             </view>
             <view class="slider-paly">
               <view style="flex: 1; padding-top: 20rpx">
-                <slider activeColor="#3385FF" :max="detailData.VoiceList.PlaySeconds" :value="curTime" @changing="handleAudioSliderChangeing($event)" block-size="16" class="slider" />
+                <slider
+                  activeColor="#3385FF"
+                  :max="detailData.VoiceList.PlaySeconds"
+                  :value="curTime"
+                  @touchstart="touchstartHandler"
+                  @change="handleAudioSliderChange($event)"
+                  @changing="handleAudioSliderChangeing($event)"
+                  block-size="16"
+                  class="slider"
+                />
                 <view class="card-time">
                   <view class="time">{{ curTime | formatVoiceTime }}</view>
                   <view class="time">{{ detailData.VoiceList.PlaySeconds | formatVoiceTime }}</view>
@@ -185,9 +194,6 @@
             <view class="make-outbound" @click="wanttosignup" v-if="detailData.IsSignup == 0 && detailData.IsShowSignup">
               {{ detailData.LimitPeopleNum > 0 ? `我要报名(${detailData.SignupNum}/${detailData.LimitPeopleNum})` : "我要报名" }}
             </view>
-            <!-- <view v-if="detailData.IsSignup != 0 && detailData.IsShowSignup && detailData.SignupType == 1" class="make-outbound" @click="signupCancel(2)">
-              {{ detailData.LimitPeopleNum > 0 ? `取消外呼(${detailData.SignupNum}/${detailData.LimitPeopleNum})` : "取消外呼" }}
-            </view> -->
             <view v-if="detailData.IsSignup != 0 && detailData.IsShowSignup" class="make-outbound" @click="signupCancel(2)">
               {{ detailData.LimitPeopleNum > 0 ? `${showWay}(${detailData.SignupNum}/${detailData.LimitPeopleNum})` : showWay }}
             </view>
@@ -523,23 +529,37 @@ export default {
       } else {
         this.$store.commit("audioBg/addAudio", { list: this.detailData.VoiceList, activityId: this.detailData.ActivityId, activityTitle: this.detailData.ActivityName });
       }
-      
     },
+    // //拖动进度条
+    // handleAudioSliderChangeing(e) {
+    //   this.curTime = e.detail.value;
+    //   this.globalBgAudioManager.seek(this.curTime);
+    // },
     //拖动进度条
     handleAudioSliderChangeing(e) {
       this.curTime = e.detail.value;
-      this.globalBgAudioManager.seek(this.curTime);
+    },
+    //拖动进度条
+    handleAudioSliderChange(e) {
+      const value = e.detail.value;
+      this.globalBgAudioManager.seek(value);
+      setTimeout(() => {
+        this.$store.commit("audioBg/setSlide", false);
+      }, 300);
+    },
+    touchstartHandler() {
+      this.$store.commit("audioBg/setSlide", true);
     },
     //倍速播放
     isTimesHandler(i) {
       if (this.$store.state.audioBg.activityId == this.detailData.ActivityId) {
         let index = i == 3 ? 0 : i + 1;
         this.$store.commit("audioBg/setMultiple", this.timesTheSpeed[index].value);
-        this.globalBgAudioManager.pause();
-        this.play = true;
         this.globalBgAudioManager.playbackRate = this.isTimes;
         this.globalBgAudioManager.startTime = this.curTime;
-        this.globalBgAudioManager.play();
+        if (this.globalBgAudioManager.paused) {
+          this.globalBgAudioManager.play();
+        }
       } else {
         this.$store.commit("audioBg/removeAudio");
         this.$store.commit("audioBg/addAudio", { list: this.detailData.VoiceList, activityId: this.detailData.ActivityId, activityTitle: this.detailData.ActivityName });
@@ -548,7 +568,7 @@ export default {
     //快进 快退
     speedReverseHandler(type) {
       let isTime = type == "reverse" ? this.curTime - 15 : this.curTime + 15;
-      isTime = isTime <= 0 ? 0 : isTime >= this.audioTime ? this.audioTime - 1 : isTime;
+      isTime = isTime <= 0 ? 0 : isTime >= this.detailData.VoiceList.PlaySeconds ? this.detailData.VoiceList.PlaySeconds - 1 : isTime;
       this.globalBgAudioManager.seek(isTime);
     },
   },

+ 47 - 11
activityPages/activitySearch/activitySearch.vue

@@ -98,6 +98,7 @@
                       <text @click="askingGo(item)">帮我带问</text>
                     </view>
                     <text v-if="item.IsShowOutboundCall && item.ActivityTypeId != 1" class="button" @click="signupIsAddOfCancel(item, 1)">{{ item.IsSignup == 1 ? "取消外呼" : "预约外呼" }}</text>
+                    <text v-if="item.IsShowDetails" @click="goDetail(item)" class="button" >查看详情</text>
                     <block v-if="item.IsShowSignup">
                       <block v-if="item.IsCClassMeeting">
                         <text class="button" @click="signupIsAddOfCancel(item, 3, 'CClass')">{{ item.IsSignup == 1 ? "取消报名" : "我要报名" }}</text>
@@ -314,20 +315,55 @@ export default {
       this.page_no = 1;
       this.getList();
     },
+    // //点击了回放
+    // audioPlayBack(item) {
+    //   this.$store.commit("audioBg/parseIntAudio", true);
+    //   // 判断是否为同一个音频
+    //   if (this.$store.state.audioBg.activityId == item.ActivityId) {
+    //     if (this.globalBgAudioManager.paused) {
+    //       this.globalBgAudioManager.play();
+    //     } else {
+    //       this.globalBgAudioManager.pause();
+    //     }
+    //   } else {
+    //     this.$store.commit("audioBg/addAudio", { list: item.VoiceList, activityId: item.ActivityId, activityTitle: item.ActivityName });
+    //   }
+    //   this.showAudioPop = true;
+    // },
     //点击了回放
-    audioPlayBack(item) {
-      this.$store.commit("audioBg/parseIntAudio", true);
-      // 判断是否为同一个音频
-      if (this.$store.state.audioBg.activityId == item.ActivityId) {
-        if (this.globalBgAudioManager.paused) {
-          this.globalBgAudioManager.play();
+    async audioPlayBack(item) {
+      if (!item.BackAudioPlay) {
+        const res = await activity.getActivityDetail({
+          ActivityId: item.ActivityId,
+        });
+        if (res.Ret === 200) {
+          item.BackAudioPlay = res.Data;
+        }
+      }
+      this.hasPermission = item.BackAudioPlay.HasPermission;
+      this.jurisdictionList.ActivityId = item.BackAudioPlay.ActivityId;
+      if (this.hasPermission == 1) {
+        this.$store.commit("audioBg/parseIntAudio", true);
+        // 判断是否为同一个音频
+        if (this.$store.state.audioBg.activityId == item.ActivityId) {
+          if (this.globalBgAudioManager.paused) {
+            this.globalBgAudioManager.play();
+          } else {
+            this.globalBgAudioManager.pause();
+          }
         } else {
-          this.globalBgAudioManager.pause();
+          this.$store.commit("audioBg/addAudio", { list: item.VoiceList, activityId: item.ActivityId, activityTitle: item.ActivityName });
         }
-      } else {
-        this.$store.commit("audioBg/addAudio", { list: item.VoiceList, activityId: item.ActivityId, activityTitle: item.ActivityName });
+        this.showAudioPop = true;
+      } else if (this.hasPermission == 2) {
+        this.jurisdictionList.SellerMobile = item.BackAudioPlay.SellerMobile;
+        this.jurisdictionList.SellerName = item.BackAudioPlay.SellerName;
+        this.jurisdictionList.PopupMsg = item.BackAudioPlay.PopupMsg;
+        this.isShowhasPermission = true;
+      } else if (this.hasPermission == 3 || this.hasPermission == 4 || this.hasPermission == 5) {
+        this.jurisdictionList.PopupMsg = item.BackAudioPlay.PopupMsg;
+        this.applyForIsShow = true;
       }
-      this.showAudioPop = true;
     },
   },
   computed: {
@@ -344,9 +380,9 @@ export default {
     },
   },
   onShow() {
+    this.$store.commit("audioBg/parseIntAudio", true);
     this.countryCcode(); //判断是否加区号
     this.$store.dispatch("statistics", { PageType: "ActivitSearch" });
-    this.$store.commit("audioBg/parseIntAudio", true);
   },
   onHide() {
     this.$store.commit("audioBg/parseIntAudio", false);

+ 59 - 54
activityPages/playBack/playBack.vue

@@ -31,15 +31,17 @@
           <text :class="item.ActivityType == 1 ? '' : 'xianxia'">{{ item.ActivityType == 1 ? "线上" : "线下" }}</text>
           {{ item.ActivityTimeText }}
           <view class="audio-back" v-if="item.AudioLink" @click.stop="audioPlayBack(item)">
-            <image
-              class="audio-img"
-              :src="
-                curVoiceId === item.ActivityId && !curAudioPaused
-                  ? 'https://hzchart.oss-cn-shanghai.aliyuncs.com/cygx/back_stop.png'
-                  : 'https://hzchart.oss-cn-shanghai.aliyuncs.com/cygx/back_group.png'
-              "
-            ></image>
-            {{ curVoiceId === item.ActivityId && !curAudioPaused ? "暂停" : "回放" }}
+            <view class="audio-box">
+              <image
+                class="audio-img"
+                :src="
+                  curVoiceId === item.ActivityId && !curAudioPaused
+                    ? 'https://hzchart.oss-cn-shanghai.aliyuncs.com/cygx/back_stop.png'
+                    : 'https://hzchart.oss-cn-shanghai.aliyuncs.com/cygx/back_group.png'
+                "
+              ></image>
+              {{ curVoiceId === item.ActivityId && !curAudioPaused ? "暂停" : "回放" }}
+            </view>
           </view>
         </view>
         <view class="item-li">
@@ -99,13 +101,7 @@ export default {
       showAudioPop: false,
       isShowhasPermission: false, //  联系销售的提交申请
       applyForIsShow: false, // 提交申请
-      jurisdictionList: {
-        SellerMobile: "",
-        PopupMsg: "",
-        OperationMode: "",
-        SellerName: "",
-        ActivityId: "",
-      },
+      jurisdictionList: {},
       hasPermission: "", //权限
     };
   },
@@ -217,35 +213,37 @@ export default {
     },
     //点击了回放
     async audioPlayBack(item) {
-      const res = await activity.getActivityDetail({
-        ActivityId: item.ActivityId,
-      });
-      if (res.Ret === 200) {
-        this.hasPermission = res.Data.HasPermission;
-        this.jurisdictionList.ActivityId = item.ActivityId;
-        if (this.hasPermission == 1) {
-          this.globalBgAudioManager.playbackRate = 1;
-          this.$store.commit("audioBg/parseIntAudio", true);
-          // 判断是否为同一个音频
-          if (this.$store.state.audioBg.activityId == item.ActivityId) {
-            if (this.globalBgAudioManager.paused) {
-              this.globalBgAudioManager.play();
-            } else {
-              this.globalBgAudioManager.pause();
-            }
+      if (!item.BackAudioPlay) {
+        const res = await activity.getActivityDetail({
+          ActivityId: item.ActivityId,
+        });
+        if (res.Ret === 200) {
+          item.BackAudioPlay = res.Data;
+        }
+      }
+      this.hasPermission = item.BackAudioPlay.HasPermission;
+      this.jurisdictionList.ActivityId = item.BackAudioPlay.ActivityId;
+      if (this.hasPermission == 1) {
+        this.$store.commit("audioBg/parseIntAudio", true);
+        // 判断是否为同一个音频
+        if (this.$store.state.audioBg.activityId == item.ActivityId) {
+          if (this.globalBgAudioManager.paused) {
+            this.globalBgAudioManager.play();
           } else {
-            this.$store.commit("audioBg/addAudio", { list: item.VoiceList, activityId: item.ActivityId, activityTitle: item.ActivityName });
+            this.globalBgAudioManager.pause();
           }
-          this.showAudioPop = true;
-        } else if (this.hasPermission == 2) {
-          this.jurisdictionList.SellerMobile = res.Data.SellerMobile;
-          this.jurisdictionList.SellerName = res.Data.SellerName;
-          this.jurisdictionList.PopupMsg = res.Data.PopupMsg;
-          this.isShowhasPermission = true;
-        } else if (this.hasPermission == 3 || this.hasPermission == 4 || this.hasPermission == 5) {
-          this.jurisdictionList.PopupMsg = res.Data.PopupMsg;
-          this.applyForIsShow = true;
+        } else {
+          this.$store.commit("audioBg/addAudio", { list: item.VoiceList, activityId: item.ActivityId, activityTitle: item.ActivityName });
         }
+        this.showAudioPop = true;
+      } else if (this.hasPermission == 2) {
+        this.jurisdictionList.SellerMobile = item.BackAudioPlay.SellerMobile;
+        this.jurisdictionList.SellerName = item.BackAudioPlay.SellerName;
+        this.jurisdictionList.PopupMsg = item.BackAudioPlay.PopupMsg;
+        this.isShowhasPermission = true;
+      } else if (this.hasPermission == 3 || this.hasPermission == 4 || this.hasPermission == 5) {
+        this.jurisdictionList.PopupMsg = item.BackAudioPlay.PopupMsg;
+        this.applyForIsShow = true;
       }
     },
   },
@@ -266,8 +264,8 @@ export default {
     this.getActivityList();
     this.getUserSearchContent();
   },
-  onShow() {
-    this.$store.dispatch("checkHandle");
+  async onShow() {
+    await this.$store.dispatch("checkHandle", "noGO");
     this.$store.commit("audioBg/parseIntAudio", true);
   },
   onHide() {
@@ -303,19 +301,26 @@ export default {
       right: 0;
       top: 50%;
       transform: translateY(-50%);
-      width: 99rpx;
-      height: 39rpx;
+      width: 125rpx;
+      height: 90rpx;
       font-size: 24rpx;
-      color: #fff;
       display: flex;
       align-items: center;
-      background-color: #3385ff;
-      border-radius: 20rpx;
-      padding-left: 4rpx;
-      .audio-img {
-        width: 30rpx;
-        height: 30rpx;
-        margin: 0 5rpx;
+      justify-content: flex-end;
+      color: #fff;
+      .audio-box {
+        width: 99rpx;
+        height: 39rpx;
+        display: flex;
+        align-items: center;
+        border-radius: 20rpx;
+        padding-left: 4rpx;
+        background-color: #3385ff;
+        .audio-img {
+          width: 30rpx;
+          height: 30rpx;
+          margin: 0 5rpx;
+        }
       }
     }
   }

+ 2 - 1
activityPages/themeActivity/themeActivity.vue

@@ -3,7 +3,7 @@
     <view class="top-title" v-if="!type">
       <view :class="['content-title', !contentDetail.IsJump && 'jump-title']" @click="jumpHandler">
         <text>{{ contentDetail.Label }}</text>
-        <image v-if="contentDetail.IsNew" class="new_icon" src="https://hzchart.oss-cn-shanghai.aliyuncs.com/cygx/new_report.png" mode=""></image>
+        <image v-if="contentDetail.IndustryNewLabel" class="new_icon" src="https://hzchart.oss-cn-shanghai.aliyuncs.com/cygx/new_report.png" mode=""></image>
       </view>
     </view>
     <!-- 活动列表 -->
@@ -47,6 +47,7 @@
                       <text @click="askingGo(item)">帮我带问</text>
                     </view>
                     <text v-if="item.IsShowOutboundCall && item.ActivityTypeId != 1" class="button" @click="signupIsAddOfCancel(item, 1)">{{ item.IsSignup == 1 ? "取消外呼" : "预约外呼" }}</text>
+                    <text v-if="item.IsShowDetails" @click="goDetail(item)" class="button" >查看详情</text>
                     <block v-if="item.IsShowSignup">
                       <block v-if="item.IsCClassMeeting">
                         <text class="button" @click="signupIsAddOfCancel(item, 3, 'CClass')">{{ item.IsSignup == 1 ? "取消报名" : "我要报名" }}</text>

+ 323 - 0
components/audioModule/1.vue

@@ -0,0 +1,323 @@
+<template>
+  <view class="container global-audio-box" v-if="showAudioPop">
+    <view class="bg-overlay" @click="isShowMaskHandler"></view>
+    <view class="audio-box">
+      <view class="activity-title">
+        {{ activityTitle }}
+        <view class="icon-cross" @click.stop="isShowMaskHandler">
+          <van-icon name="cross" font-size="32" />
+        </view>
+      </view>
+      <view class="audio-card">
+        <view class="card-title text_oneLine">
+          {{ title }}
+        </view>
+        <view class="slider-paly">
+          <view style="flex: 1; padding-top: 20rpx">
+            <slider activeColor="#3385FF" :max="audioTime" :value="curTime" @changing="handleAudioSliderChangeing($event)" block-size="16" class="slider" />
+            <view class="card-time">
+              <text class="time">{{ curTime | formatVoiceTime }}</text>
+              <text class="time">{{ audioTime | formatVoiceTime }}</text>
+            </view>
+          </view>
+          <view class="is-paly-card">
+            <image
+              @click.stop="handleChangePlayStatus"
+              :src="play ? 'https://hzchart.oss-cn-shanghai.aliyuncs.com/cygx/play_icon.gif' : 'https://hzchart.oss-cn-shanghai.aliyuncs.com/cygx/pause_icon.png'"
+            ></image>
+          </view>
+        </view>
+        <view class="fast-reverse">
+          <image @click="speedReverseHandler('reverse')" class="speed-img" src="https://hzchart.oss-cn-shanghai.aliyuncs.com/cygx/fastReverse_icon.png"></image>
+          <block v-for="(item, index) in timesTheSpeed" :key="item.value">
+            <view class="speed-button" v-if="isTimes == item.value" @click="isTimesHandler(index)">
+              {{ item.name }}
+            </view>
+          </block>
+          <image @click="speedReverseHandler('speed')" class="speed-img" src="https://hzchart.oss-cn-shanghai.aliyuncs.com/cygx/speed_icon.png"></image>
+        </view>
+      </view>
+    </view>
+  </view>
+</template>
+
+<script>
+import { activity } from "@/config/api";
+export default {
+  name: "",
+  filters: {
+    formatVoiceTime(e) {
+      let m = parseInt(e / 60);
+      let s = parseInt(e % 60);
+      return `${m > 9 ? m : "0" + m}:${s > 9 ? s : "0" + s}`;
+    },
+  },
+  components: {},
+  props: {
+    showAudioPop: {
+      type: Boolean,
+      default: false,
+      required: true,
+    },
+  },
+  data() {
+    return {
+      curTime: 0,
+      audioTime: 0, //当前音频总时长
+      title: "", //当前音频标题
+      activityTitle: "", //当前活动标题
+      play: false,
+      isEnded: false,
+      timesTheSpeed: [
+        { name: "倍速", value: 1 },
+        { name: "1.25倍", value: 1.25 },
+        { name: "1.5倍", value: 1.5 },
+        { name: "2倍", value: 2 },
+      ],
+    };
+  },
+  computed: {
+    //重新
+    audioInit() {
+      return {
+        activityId: this.$store.state.audioBg.activityId,
+        reportId: this.$store.state.audioBg.reportId,
+      };
+    },
+    // 几倍的播放速度
+    isTimes() {
+      return this.$store.state.audioBg.multiple;
+    },
+  },
+  watch: {
+    audioInit: {
+      handler(nval) {
+        this.init();
+      },
+      immediate: true,
+    },
+  },
+
+  created() {},
+  mounted() {},
+  methods: {
+    //点击隐藏事件
+    isShowMaskHandler() {
+      this.$emit("update:showAudioPop", false);
+    },
+    //数据初次加载
+    init() {
+      const curAudio = this.$store.state.audioBg.list;
+      if (this.globalBgAudioManager.src != curAudio.Url && curAudio.Url) {
+        this.$store.commit("audioBg/setMultiple", 1);
+        this.$store.commit("audioBg/updateAudioTime", 0);
+        this.globalBgAudioManager.src = curAudio.Url;
+        this.globalBgAudioManager.title = curAudio.Name;
+        this.globalBgAudioManager.startTime = 0;
+        this.globalBgAudioManager.playbackRate = this.isTimes;
+        this.curTime = 0;
+      } else {
+        this.curTime = parseInt(this.globalBgAudioManager.currentTime);
+      }
+      this.audioTime = curAudio.PlaySeconds;
+      this.title = curAudio.Name;
+      this.activityTitle = this.$store.state.audioBg.activityTitle;
+      this.play = !this.globalBgAudioManager.paused;
+      this.listenAudio();
+    },
+    //音频播放事件
+    listenAudio() {
+      this.globalBgAudioManager.onPlay(async () => {
+        console.log("音频播放");
+        this.play = true;
+        this.$store.commit("audioBg/updateAudioPause", false);
+        if (this.$store.state.audioBg.activityId) {
+          activity.backAudioPlay({ ActivityId: this.$store.state.audioBg.activityId });
+        }
+      });
+
+      this.globalBgAudioManager.onPause(() => {
+        console.log("音频暂停");
+        this.play = false;
+        this.$store.commit("audioBg/updateAudioPause", true);
+      });
+
+      this.globalBgAudioManager.onStop(() => {
+        console.log("音频停止");
+        this.$emit("update:showAudioPop", false);
+        uni.getSystemInfo({
+          success: (res) => {
+            if (res.osName == "ios") {
+              this.play = false;
+              this.$store.commit("audioBg/removeAudio");
+            } else {
+              this.play = false;
+              this.$store.commit("audioBg/updateAudioPause", true);
+            }
+          },
+        });
+      });
+
+      this.globalBgAudioManager.onEnded(() => {
+        console.log("音频onEnded");
+        this.$emit("update:showAudioPop", false);
+        this.$store.commit("audioBg/removeAudio");
+        this.$store.commit("audioBg/parseIntAudio", false);
+      });
+
+      this.globalBgAudioManager.onError((e) => {
+        console.log("音频onError", e);
+        this.$store.commit("audioBg/removeAudio");
+        this.$store.commit("audioBg/setMultiple", 1);
+        uni.showToast({
+          title: "音频播放错误",
+          icon: "none",
+        });
+      });
+
+      //音频的播放时间更新
+      this.globalBgAudioManager.onTimeUpdate(() => {
+        if (this.globalBgAudioManager.src && parseInt(this.globalBgAudioManager.currentTime) !== 0) {
+          this.curTime = parseInt(this.globalBgAudioManager.currentTime);
+          this.$store.commit("audioBg/updateAudioTime", this.curTime);
+        }
+      });
+    },
+    //拖动进度条
+    handleAudioSliderChangeing(e) {
+      this.curTime = e.detail.value;
+      this.globalBgAudioManager.seek(this.curTime);
+    },
+    //音频点击暂停播放
+    handleChangePlayStatus() {
+      if (!this.globalBgAudioManager.paused) {
+        this.globalBgAudioManager.pause();
+      } else {
+        this.globalBgAudioManager.play();
+      }
+    },
+    //倍速播放
+    isTimesHandler(i) {
+      console.log(this.curTime);
+      let index = i == 3 ? 0 : i + 1;
+      this.$store.commit("audioBg/setMultiple", this.timesTheSpeed[index].value);
+      this.globalBgAudioManager.playbackRate = this.isTimes;
+      this.globalBgAudioManager.startTime = this.curTime;
+      if (this.globalBgAudioManager.paused) {
+        this.globalBgAudioManager.play();
+      }
+    },
+    //快进 快退
+    speedReverseHandler(type) {
+      let isTime = type == "reverse" ? this.curTime - 15 : this.curTime + 15;
+      isTime = isTime <= 0 ? 0 : isTime >= this.audioTime ? this.audioTime - 1 : isTime;
+      this.globalBgAudioManager.seek(isTime);
+    },
+  },
+};
+</script>
+<style scoped lang="scss">
+.global-audio-box {
+  display: flex;
+  height: 100%;
+  position: fixed;
+  width: 100%;
+  top: 0;
+  left: 0;
+  z-index: 11;
+  .bg-overlay {
+    width: 100%;
+    height: 100%;
+    position: absolute;
+    top: 0;
+    left: 0;
+    background-color: rgba(0, 0, 0, 0.7);
+  }
+  .activity-title {
+    position: relative;
+    width: 100%;
+    font-size: 30rpx;
+    font-weight: 500;
+    margin-bottom: 35rpx;
+    padding-right: 30rpx;
+    .icon-cross {
+      position: absolute;
+      right: 0;
+      top: 50%;
+      transform: translateY(-50%);
+      padding: 10rpx;
+    }
+  }
+  .audio-box {
+    position: absolute;
+    bottom: 0;
+    left: 0;
+    padding: 30rpx;
+    padding-bottom: constant(safe-area-inset-bottom);
+    padding-bottom: env(safe-area-inset-bottom);
+    width: 100%;
+    background: #ffffff;
+    box-sizing: border-box;
+    border-radius: 30rpx 30rpx 0 0;
+  }
+  .audio-card {
+    width: 100%;
+    height: 282rpx;
+    background: #f9f9f9;
+    border-radius: 16rpx;
+    margin: 0 auto;
+    padding: 30rpx;
+    .slider {
+      width: 100%;
+      margin: 0;
+    }
+    .slider-paly {
+      display: flex;
+      height: 80rpx;
+      align-items: center;
+    }
+    .card-title {
+      color: #3385ff;
+      font-size: 28rpx;
+      padding: 0 40rpx;
+      text-align: center;
+      margin-bottom: 35rpx;
+    }
+    .card-time {
+      display: flex;
+      justify-content: space-between;
+      color: #999999;
+      font-size: 20rpx;
+    }
+    .is-paly-card {
+      width: 70rpx;
+      height: 70rpx;
+      flex-shrink: 0;
+      margin-left: 30rpx;
+      image {
+        width: 70rpx;
+        height: 70rpx;
+      }
+    }
+    .fast-reverse {
+      display: flex;
+      align-items: center;
+      justify-content: center;
+      margin-top: 30rpx;
+      .speed-button {
+        width: 96rpx;
+        height: 47rpx;
+        background: #eaeaea;
+        border-radius: 8rpx;
+        text-align: center;
+        line-height: 47rpx;
+        margin: 0 70rpx;
+      }
+      .speed-img {
+        width: 50rpx;
+        height: 50rpx;
+      }
+    }
+  }
+}
+</style>

+ 50 - 23
components/audioModule/index.vue

@@ -14,7 +14,16 @@
         </view>
         <view class="slider-paly">
           <view style="flex: 1; padding-top: 20rpx">
-            <slider activeColor="#3385FF" :max="audioTime" :value="curTime" @changing="handleAudioSliderChangeing($event)" block-size="16" class="slider" />
+            <slider
+              activeColor="#3385FF"
+              :max="audioTime"
+              :value="curTime"
+              @touchstart="touchstartHandler"
+              @change="handleAudioSliderChange($event)"
+              @changing="handleAudioSliderChangeing($event)"
+              block-size="16"
+              class="slider"
+            />
             <view class="card-time">
               <text class="time">{{ curTime | formatVoiceTime }}</text>
               <text class="time">{{ audioTime | formatVoiceTime }}</text>
@@ -67,7 +76,7 @@ export default {
       title: "", //当前音频标题
       activityTitle: "", //当前活动标题
       play: false,
-      isEnded: false,
+      isosName: "",
       timesTheSpeed: [
         { name: "倍速", value: 1 },
         { name: "1.25倍", value: 1.25 },
@@ -88,6 +97,13 @@ export default {
     isTimes() {
       return this.$store.state.audioBg.multiple;
     },
+    //进度条是否在滑动
+    isSlide() {
+      return this.$store.state.audioBg.isDragSlide;
+    },
+    isEnded() {
+      return this.$store.state.audioBg.isAudioEnded;
+    },
   },
   watch: {
     audioInit: {
@@ -99,7 +115,13 @@ export default {
   },
 
   created() {},
-  mounted() {},
+  mounted() {
+    uni.getSystemInfo({
+      success: (res) => {
+        this.isosName = res.osName;
+      },
+    });
+  },
   methods: {
     //点击隐藏事件
     isShowMaskHandler() {
@@ -108,13 +130,14 @@ export default {
     //数据初次加载
     init() {
       const curAudio = this.$store.state.audioBg.list;
-      if (this.globalBgAudioManager.src != curAudio.Url && curAudio.Url) {
+      if ((this.globalBgAudioManager.src != curAudio.Url && curAudio.Url) || (this.isEnded && this.isosName !== "ios" && curAudio.Url)) {
+        this.$store.commit("audioBg/setAudioEnd", false);
+        this.globalBgAudioManager.playbackRate = 1;
         this.$store.commit("audioBg/setMultiple", 1);
         this.$store.commit("audioBg/updateAudioTime", 0);
         this.globalBgAudioManager.src = curAudio.Url;
         this.globalBgAudioManager.title = curAudio.Name;
         this.globalBgAudioManager.startTime = 0;
-        this.globalBgAudioManager.playbackRate = this.isTimes;
         this.curTime = 0;
       } else {
         this.curTime = parseInt(this.globalBgAudioManager.currentTime);
@@ -145,23 +168,21 @@ export default {
       this.globalBgAudioManager.onStop(() => {
         console.log("音频停止");
         this.$emit("update:showAudioPop", false);
-        uni.getSystemInfo({
-          success: (res) => {
-            if (res.osName == "ios") {
-              this.play = false;
-              this.$store.commit("audioBg/removeAudio");
-            } else {
-              this.play = false;
-              this.$store.commit("audioBg/updateAudioPause", true);
-            }
-          },
-        });
+        if (this.isosName == "ios") {
+          this.play = false;
+          this.$store.commit("audioBg/removeAudio");
+        } else {
+          this.play = false;
+          this.$store.commit("audioBg/updateAudioPause", true);
+        }
       });
 
       this.globalBgAudioManager.onEnded(() => {
         console.log("音频onEnded");
-        this.$store.commit("audioBg/removeAudio");
+        this.$emit("update:showAudioPop", false);
+        this.$store.commit("audioBg/setAudioEnd", true);
         this.$store.commit("audioBg/parseIntAudio", false);
+        this.$store.commit("audioBg/removeAudio");
       });
 
       this.globalBgAudioManager.onError((e) => {
@@ -176,11 +197,8 @@ export default {
 
       //音频的播放时间更新
       this.globalBgAudioManager.onTimeUpdate(() => {
-        if (this.globalBgAudioManager.src && parseInt(this.globalBgAudioManager.currentTime) !== 0) {
+        if (this.globalBgAudioManager.src && parseInt(this.globalBgAudioManager.currentTime) !== 0 && !this.isSlide) {
           this.curTime = parseInt(this.globalBgAudioManager.currentTime);
-          if (this.audioTime - nvthis.curTimeal < 10) {
-            this.globalBgAudioManager.playbackRate = 1;
-          }
           this.$store.commit("audioBg/updateAudioTime", this.curTime);
         }
       });
@@ -188,7 +206,14 @@ export default {
     //拖动进度条
     handleAudioSliderChangeing(e) {
       this.curTime = e.detail.value;
-      this.globalBgAudioManager.seek(this.curTime);
+    },
+    //拖动进度条
+    handleAudioSliderChange(e) {
+      const value = e.detail.value;
+      this.globalBgAudioManager.seek(value);
+      setTimeout(() => {
+        this.$store.commit("audioBg/setSlide", false);
+      }, 300);
     },
     //音频点击暂停播放
     handleChangePlayStatus() {
@@ -200,7 +225,6 @@ export default {
     },
     //倍速播放
     isTimesHandler(i) {
-      console.log(this.curTime);
       let index = i == 3 ? 0 : i + 1;
       this.$store.commit("audioBg/setMultiple", this.timesTheSpeed[index].value);
       this.globalBgAudioManager.playbackRate = this.isTimes;
@@ -215,6 +239,9 @@ export default {
       isTime = isTime <= 0 ? 0 : isTime >= this.audioTime ? this.audioTime - 1 : isTime;
       this.globalBgAudioManager.seek(isTime);
     },
+    touchstartHandler() {
+      this.$store.commit("audioBg/setSlide", true);
+    },
   },
 };
 </script>

+ 421 - 0
components/audioModule/slider.vue

@@ -0,0 +1,421 @@
+<template>
+  <view class="container global-audio-box" v-if="showAudioPop">
+    <view class="bg-overlay" @click="isShowMaskHandler"></view>
+    <view class="audio-box">
+      <view class="activity-title">
+        {{ activityTitle }}
+        <view class="icon-cross" @click.stop="isShowMaskHandler">
+          <van-icon name="cross" font-size="32" />
+        </view>
+      </view>
+      <view class="audio-card">
+        <view class="card-title text_oneLine">
+          {{ title }}
+        </view>
+        <view class="slider-paly">
+          <view style="flex: 1; padding-top: 20rpx">
+            <view>
+              <movable-area class="slider" id="movable-area">
+                <movable-view
+                  class="time-button"
+                  animation="false"
+                  @change="handleSlideChange"
+                  @touchend="onTouchEnd"
+                  @htouchmove="onHtouchmove"
+                  direction="horizontal"
+                  id="movable-view"
+                  :x="movableViewX"
+                >
+                </movable-view>
+                <progress activeColor="#666" backgroundColor="#999" borderRadius="2" class="progress" :percent="progress" strokeWidth="2"></progress>
+              </movable-area>
+            </view>
+            <view class="card-time">
+              <text class="time">{{ curTime | formatVoiceTime }}</text>
+              <text class="time">{{ audioTime | formatVoiceTime }}</text>
+            </view>
+          </view>
+          <view class="is-paly-card">
+            <image
+              @click.stop="handleChangePlayStatus"
+              :src="play ? 'https://hzchart.oss-cn-shanghai.aliyuncs.com/cygx/play_icon.gif' : 'https://hzchart.oss-cn-shanghai.aliyuncs.com/cygx/pause_icon.png'"
+            ></image>
+          </view>
+        </view>
+        <view class="fast-reverse">
+          <image @click="speedReverseHandler('reverse')" class="speed-img" src="https://hzchart.oss-cn-shanghai.aliyuncs.com/cygx/fastReverse_icon.png"></image>
+          <block v-for="(item, index) in timesTheSpeed" :key="item.value">
+            <view class="speed-button" v-if="isTimes == item.value" @click="isTimesHandler(index)">
+              {{ item.name }}
+            </view>
+          </block>
+          <image @click="speedReverseHandler('speed')" class="speed-img" src="https://hzchart.oss-cn-shanghai.aliyuncs.com/cygx/speed_icon.png"></image>
+        </view>
+      </view>
+    </view>
+  </view>
+</template>
+
+<script>
+import { activity } from "@/config/api";
+export default {
+  name: "",
+  filters: {
+    formatVoiceTime(e) {
+      let m = parseInt(e / 60);
+      let s = parseInt(e % 60);
+      return `${m > 9 ? m : "0" + m}:${s > 9 ? s : "0" + s}`;
+    },
+  },
+  components: {},
+  props: {
+    showAudioPop: {
+      type: Boolean,
+      default: false,
+      required: true,
+    },
+  },
+  data() {
+    return {
+      movableViewX: 0,
+      currentTime: 0,
+      progress: 0,
+      moveAreaW: 0,
+      moveboxW: 0,
+      curTime: 0,
+      audioTime: 0, //当前音频总时长
+      title: "", //当前音频标题
+      activityTitle: "", //当前活动标题
+      play: false,
+      isEnded: false,
+      isMoving: false,
+      timesTheSpeed: [
+        { name: "倍速", value: 1 },
+        { name: "1.25倍", value: 1.25 },
+        { name: "1.5倍", value: 1.5 },
+        { name: "2倍", value: 2 },
+      ],
+    };
+  },
+  computed: {
+    //重新
+    audioInit() {
+      return {
+        activityId: this.$store.state.audioBg.activityId,
+        reportId: this.$store.state.audioBg.reportId,
+      };
+    },
+    // 几倍的播放速度
+    isTimes() {
+      return this.$store.state.audioBg.multiple;
+    },
+  },
+  watch: {
+    audioInit: {
+      handler(nval) {
+        this.init();
+        const query = uni.createSelectorQuery().in(this);
+        query
+          .select("#movable-area")
+          .boundingClientRect((data) => {
+            this.moveAreaW = data && data.width;
+          })
+          .exec();
+        query
+          .select("#movable-view")
+          .boundingClientRect((data) => {
+            this.moveboxW = data && data.width;
+          })
+          .exec();
+      },
+      immediate: true,
+    },
+  },
+
+  created() {},
+  mounted() {
+    console.log(123);
+  },
+  methods: {
+    handleSlideChange(e) {
+      console.log(e);
+      this.movableViewX = e.detail.x;
+      this.progress = Math.round((this.movableViewX / (this.moveAreaW - this.moveboxW)) * 100);
+      if (this.isMoving) {
+        this.curTime = Math.round(this.globalBgAudioManager.duration * (this.progress / 100));
+      }
+    },
+    // 用户拖动进度条结束时,重新给背景音乐的各项赋值
+    onTouchEnd() {
+      const isTime = parseInt(this.globalBgAudioManager.duration * (this.progress / 100));
+      this.globalBgAudioManager.seek(isTime);
+      setTimeout(() => {
+        this.isMoving = false;
+      }, 0);
+    },
+    onHtouchmove() {
+      this.isMoving = true;
+    },
+    //点击隐藏事件
+    isShowMaskHandler() {
+      this.$emit("update:showAudioPop", false);
+    },
+    //数据初次加载
+    init() {
+      const curAudio = this.$store.state.audioBg.list;
+      if (this.globalBgAudioManager.src != curAudio.Url && curAudio.Url) {
+        this.$store.commit("audioBg/setMultiple", 1);
+        this.$store.commit("audioBg/updateAudioTime", 0);
+        this.globalBgAudioManager.src = curAudio.Url;
+        this.globalBgAudioManager.title = curAudio.Name;
+        this.globalBgAudioManager.startTime = 0;
+        this.globalBgAudioManager.playbackRate = this.isTimes;
+        this.curTime = 0;
+        this.progress = 0;
+        this.movableViewX = 0;
+        console.log(this.movableViewX, " this.movableViewX = 0;");
+      } else {
+        this.curTime = parseInt(this.globalBgAudioManager.currentTime);
+      }
+      console.log(this.movableViewX, " this.movableViewX = 0;");
+      this.audioTime = curAudio.PlaySeconds;
+      this.title = curAudio.Name;
+      this.activityTitle = this.$store.state.audioBg.activityTitle;
+      this.play = !this.globalBgAudioManager.paused;
+      this.listenAudio();
+    },
+    //音频播放事件
+    listenAudio() {
+      this.globalBgAudioManager.onPlay(async () => {
+        console.log("音频播放");
+        this.play = true;
+        this.$store.commit("audioBg/updateAudioPause", false);
+        if (this.$store.state.audioBg.activityId) {
+          activity.backAudioPlay({ ActivityId: this.$store.state.audioBg.activityId });
+        }
+      });
+
+      this.globalBgAudioManager.onPause(() => {
+        console.log("音频暂停");
+        this.play = false;
+        this.$store.commit("audioBg/updateAudioPause", true);
+      });
+
+      this.globalBgAudioManager.onStop(() => {
+        console.log("音频停止");
+        this.$emit("update:showAudioPop", false);
+        uni.getSystemInfo({
+          success: (res) => {
+            if (res.osName == "ios") {
+              this.play = false;
+              this.$store.commit("audioBg/removeAudio");
+            } else {
+              this.play = false;
+              this.$store.commit("audioBg/updateAudioPause", true);
+            }
+          },
+        });
+      });
+
+      this.globalBgAudioManager.onEnded(() => {
+        console.log("音频onEnded");
+        this.$emit("update:showAudioPop", false);
+        this.$store.commit("audioBg/removeAudio");
+        this.$store.commit("audioBg/parseIntAudio", false);
+      });
+
+      this.globalBgAudioManager.onError((e) => {
+        console.log("音频onError", e);
+        this.$store.commit("audioBg/removeAudio");
+        this.$store.commit("audioBg/setMultiple", 1);
+        uni.showToast({
+          title: "音频播放错误",
+          icon: "none",
+        });
+      });
+
+      //音频的播放时间更新
+      this.globalBgAudioManager.onTimeUpdate(() => {
+        if (!this.isMoving) {
+          if (this.globalBgAudioManager.src && parseInt(this.globalBgAudioManager.currentTime) !== 0) {
+            this.movableViewX = Math.round(((this.moveAreaW - this.moveboxW) * parseInt(this.globalBgAudioManager.currentTime)) / this.globalBgAudioManager.duration);
+            this.progress = Math.round((100 * parseInt(this.globalBgAudioManager.currentTime)) / this.globalBgAudioManager.duration);
+            this.curTime = parseInt(this.globalBgAudioManager.currentTime);
+            this.$store.commit("audioBg/updateAudioTime", this.curTime);
+          }
+        }
+      });
+    },
+    //拖动进度条
+    // handleAudioSliderChangeing(e) {
+    //   this.curTime = e.detail.value;
+    //   this.globalBgAudioManager.seek(this.curTime);
+    // },
+    //音频点击暂停播放
+    handleChangePlayStatus() {
+      if (!this.globalBgAudioManager.paused) {
+        this.globalBgAudioManager.pause();
+      } else {
+        this.globalBgAudioManager.play();
+      }
+    },
+    //倍速播放
+    isTimesHandler(i) {
+      console.log(this.curTime);
+      let index = i == 3 ? 0 : i + 1;
+      this.$store.commit("audioBg/setMultiple", this.timesTheSpeed[index].value);
+      this.globalBgAudioManager.playbackRate = this.isTimes;
+      this.globalBgAudioManager.startTime = this.curTime;
+      if (this.globalBgAudioManager.paused) {
+        this.globalBgAudioManager.play();
+      }
+    },
+    //快进 快退
+    speedReverseHandler(type) {
+      let isTime = type == "reverse" ? this.curTime - 15 : this.curTime + 15;
+      isTime = isTime <= 0 ? 0 : isTime >= this.audioTime ? this.audioTime - 1 : isTime;
+      this.globalBgAudioManager.seek(isTime);
+    },
+  },
+};
+</script>
+<style>
+.slider {
+  height: 40rpx;
+  margin: 0 32rpx;
+  position: relative;
+  width: 528rpx;
+}
+
+.slider .time-button {
+  background: #333;
+  border-radius: 30rpx;
+  color: #fff;
+  height: 30rpx;
+  text-align: center;
+  width: 30rpx;
+  z-index: 1;
+}
+
+.slider .progress {
+  height: 4rpx;
+  left: 0;
+  position: absolute;
+  top: 18rpx;
+  width: 528rpx;
+}
+
+.play-button {
+  -webkit-box-pack: center;
+  -webkit-box-align: center;
+  align-items: center;
+  display: flex;
+  justify-content: center;
+  margin-top: 52rpx;
+}
+</style>
+<style scoped lang="scss">
+.global-audio-box {
+  display: flex;
+  height: 100%;
+  position: fixed;
+  width: 100%;
+  top: 0;
+  left: 0;
+  z-index: 11;
+  .bg-overlay {
+    width: 100%;
+    height: 100%;
+    position: absolute;
+    top: 0;
+    left: 0;
+    background-color: rgba(0, 0, 0, 0.7);
+  }
+  .activity-title {
+    position: relative;
+    width: 100%;
+    font-size: 30rpx;
+    font-weight: 500;
+    margin-bottom: 35rpx;
+    padding-right: 30rpx;
+    .icon-cross {
+      position: absolute;
+      right: 0;
+      top: 50%;
+      transform: translateY(-50%);
+      padding: 10rpx;
+    }
+  }
+  .audio-box {
+    position: absolute;
+    bottom: 0;
+    left: 0;
+    padding: 30rpx;
+    padding-bottom: constant(safe-area-inset-bottom);
+    padding-bottom: env(safe-area-inset-bottom);
+    width: 100%;
+    background: #ffffff;
+    box-sizing: border-box;
+    border-radius: 30rpx 30rpx 0 0;
+  }
+  .audio-card {
+    width: 100%;
+    height: 282rpx;
+    background: #f9f9f9;
+    border-radius: 16rpx;
+    margin: 0 auto;
+    padding: 30rpx;
+    .slider {
+      width: 100%;
+      margin: 0;
+    }
+    .slider-paly {
+      display: flex;
+      height: 80rpx;
+      align-items: center;
+    }
+    .card-title {
+      color: #3385ff;
+      font-size: 28rpx;
+      padding: 0 40rpx;
+      text-align: center;
+      margin-bottom: 35rpx;
+    }
+    .card-time {
+      display: flex;
+      justify-content: space-between;
+      color: #999999;
+      font-size: 20rpx;
+    }
+    .is-paly-card {
+      width: 70rpx;
+      height: 70rpx;
+      flex-shrink: 0;
+      margin-left: 30rpx;
+      image {
+        width: 70rpx;
+        height: 70rpx;
+      }
+    }
+    .fast-reverse {
+      display: flex;
+      align-items: center;
+      justify-content: center;
+      margin-top: 30rpx;
+      .speed-button {
+        width: 96rpx;
+        height: 47rpx;
+        background: #eaeaea;
+        border-radius: 8rpx;
+        text-align: center;
+        line-height: 47rpx;
+        margin: 0 70rpx;
+      }
+      .speed-img {
+        width: 50rpx;
+        height: 50rpx;
+      }
+    }
+  }
+}
+</style>

+ 50 - 12
pageMy/mySchedulepage/mySchedulepage.vue

@@ -50,6 +50,7 @@
                     <text @click="askingGo(item)">帮我带问</text>
                   </view>
                   <text v-if="item.IsShowOutboundCall && item.ActivityTypeId != 1" class="button" @click="signupIsAddOfCancel(item, 1)">{{ item.IsSignup == 1 ? "取消外呼" : "预约外呼" }}</text>
+                  <text v-if="item.IsShowDetails" @click="goDetail(item)" class="button">查看详情</text>
                   <block v-if="item.IsShowSignup">
                     <block v-if="item.IsCClassMeeting">
                       <text class="button" @click="signupIsAddOfCancel(item, 3, 'CClass')">{{ item.IsSignup == 1 ? "取消报名" : "我要报名" }}</text>
@@ -137,7 +138,6 @@ export default {
       isrefresh: true,
       activityTypeId: "",
       showAudioPop: false,
-      showAudioBox: false,
     };
   },
   computed: {
@@ -149,6 +149,9 @@ export default {
       //当前音频是否暂停状态
       return this.$store.state.audioBg.paused;
     },
+    showAudioBox() {
+      return this.$store.state.audioBg.parseIntShow;
+    },
   },
   methods: {
     //
@@ -171,18 +174,53 @@ export default {
       }
     },
     //点击了回放
-    audioPlayBack(item) {
-      // 判断是否为同一个音频
-      if (this.$store.state.audioBg.activityId == item.ActivityId) {
-        if (this.globalBgAudioManager.paused) {
-          this.globalBgAudioManager.play();
+    // audioPlayBack(item) {
+    //   // 判断是否为同一个音频
+    //   if (this.$store.state.audioBg.activityId == item.ActivityId) {
+    //     if (this.globalBgAudioManager.paused) {
+    //       this.globalBgAudioManager.play();
+    //     } else {
+    //       this.globalBgAudioManager.pause();
+    //     }
+    //   } else {
+    //     this.$store.commit("audioBg/addAudio", { list: item.VoiceList, activityId: item.ActivityId, activityTitle: item.ActivityName });
+    //   }
+    //   this.showAudioPop = true;
+    // },
+    //点击了回放
+    async audioPlayBack(item) {
+      if (!item.BackAudioPlay) {
+        const res = await activity.getActivityDetail({
+          ActivityId: item.ActivityId,
+        });
+        if (res.Ret === 200) {
+          item.BackAudioPlay = res.Data;
+        }
+      }
+      this.hasPermission = item.BackAudioPlay.HasPermission;
+      this.jurisdictionList.ActivityId = item.BackAudioPlay.ActivityId;
+      if (this.hasPermission == 1) {
+        this.$store.commit("audioBg/parseIntAudio", true);
+        // 判断是否为同一个音频
+        if (this.$store.state.audioBg.activityId == item.ActivityId) {
+          if (this.globalBgAudioManager.paused) {
+            this.globalBgAudioManager.play();
+          } else {
+            this.globalBgAudioManager.pause();
+          }
         } else {
-          this.globalBgAudioManager.pause();
+          this.$store.commit("audioBg/addAudio", { list: item.VoiceList, activityId: item.ActivityId, activityTitle: item.ActivityName });
         }
-      } else {
-        this.$store.commit("audioBg/addAudio", { list: item.VoiceList, activityId: item.ActivityId, activityTitle: item.ActivityName });
+        this.showAudioPop = true;
+      } else if (this.hasPermission == 2) {
+        this.jurisdictionList.SellerMobile = item.BackAudioPlay.SellerMobile;
+        this.jurisdictionList.SellerName = item.BackAudioPlay.SellerName;
+        this.jurisdictionList.PopupMsg = item.BackAudioPlay.PopupMsg;
+        this.isShowhasPermission = true;
+      } else if (this.hasPermission == 3 || this.hasPermission == 4 || this.hasPermission == 5) {
+        this.jurisdictionList.PopupMsg = item.BackAudioPlay.PopupMsg;
+        this.applyForIsShow = true;
       }
-      this.showAudioPop = true;
     },
   },
   //load
@@ -191,10 +229,10 @@ export default {
   },
   async onShow() {
     await this.$store.dispatch("checkHandle", "noGO");
-    this.showAudioBox = true;
+    this.$store.commit("audioBg/parseIntAudio", true);
   },
   onHide() {
-    this.showAudioBox = false;
+    this.$store.commit("audioBg/parseIntAudio", false);
   },
   /* 触底 */
   onReachBottom: Throttle(function () {

+ 4 - 4
pages/purchaser/purchaser.vue

@@ -25,7 +25,7 @@
       <view class="theme-content">
         <view class="theme-ul" v-for="item in themeNewList" :key="item.IndustrialManagementId">
           <text class="text_oneLine" @click="themeDetails(item)"> # {{ item.IndustryName }}</text>
-          <image v-if="item.IsHot" src="https://hzchart.oss-cn-shanghai.aliyuncs.com/cygx/czbk/host_report.png"></image>
+          <image v-if="item.IsHot" src="https://hzchart.oss-cn-shanghai.aliyuncs.com/cygx/hot_report.png"></image>
         </view>
       </view>
     </view>
@@ -80,7 +80,7 @@
                 {{ index + 1 }}
               </text>
               <text class="text_oneLine" style="display: inline"> # {{ item.IndustryName }} </text>
-              <image class="new-img" v-if="item.IsNew" src="https://hzchart.oss-cn-shanghai.aliyuncs.com/cygx/czbk/new_icon.png"></image>
+              <image class="new-img" v-if="item.IsNew" src="https://hzchart.oss-cn-shanghai.aliyuncs.com/cygx/new_report.png"></image>
             </view>
             <text :class="item.IsFollw ? 'cancel-attention' : 'attention'" @click="isAttention(item, '主题')">{{ item.IsFollw ? "取消关注" : "+ 关注" }}</text>
           </view>
@@ -561,8 +561,8 @@ export default {
         padding-right: 20rpx;
       }
       .new-img {
-        width: 26rpx;
-        height: 28rpx;
+        width: 60rpx;
+        height: 30rpx;
         margin-left: 15rpx;
         flex-shrink: 0;
       }

+ 3 - 2
reportPages/hotList/hotList.vue

@@ -189,7 +189,7 @@ export default {
   padding: 30rpx;
   .top-content {
     position: sticky;
-    top: 0;
+    top: -1rpx;
     left: 0;
     z-index: 99;
     background-color: #fff;
@@ -339,7 +339,8 @@ export default {
     font-size: 20rpx;
   }
   .industry-color {
-    padding: 3rpx 20rpx;
+    font-size: 26rpx;
+    padding: 0rpx 20rpx;
     border-radius: 4rpx;
     margin-left: 20rpx;
   }

+ 1 - 1
reportPages/recentPages/recentPages.vue

@@ -7,7 +7,7 @@
             {{ index + 1 }}
           </text>
           <text class="text_oneLine" style="display: inline"> # {{ item.IndustryName }} </text>
-          <image class="new-img" v-if="item.IsHot" src="https://hzchart.oss-cn-shanghai.aliyuncs.com/cygx/czbk/host_report.png"></image>
+          <image class="new-img" v-if="item.IsHot" src="https://hzchart.oss-cn-shanghai.aliyuncs.com/cygx/hot_report.png"></image>
         </view>
         <text :class="item.IsFollw ? 'cancel-attention' : 'attention'" @click="isAttention(item)">{{ item.IsFollw ? "取消关注" : "+ 关注" }}</text>
       </view>

+ 11 - 4
reportPages/reportSecretDetail/reportSecretDetail.vue

@@ -23,6 +23,7 @@
                 activeColor="#3385FF"
                 :max="detali.VideoPlaySeconds"
                 :value="curTime"
+                @touchstart="touchstartHandler"
                 @change="handleAudioSliderChange($event)"
                 @changing="handleAudioSliderChangeing($event)"
                 block-size="16"
@@ -163,7 +164,7 @@ export default {
       return this.$store.state.audioBg.show;
     },
   },
-  width: {
+  watch: {
     "$store.state.audioBg.curTime": {
       handler(newVal) {
         this.curTime = this.curVoiceId === this.detali.ArticleId ? newVal : 0;
@@ -249,19 +250,25 @@ export default {
       }
     },
     //拖动进度条
+    handleAudioSliderChangeing(e) {
+      this.curTime = e.detail.value;
+    },
+    //拖动进度条
     handleAudioSliderChange(e) {
       const value = e.detail.value;
       this.globalBgAudioManager.seek(value);
+      setTimeout(() => {
+        this.$store.commit("audioBg/setSlide", false);
+      }, 300);
     },
-    handleAudioSliderChangeing(e) {
-      this.curTime = e.detail.value;
+    touchstartHandler() {
+      this.$store.commit("audioBg/setSlide", true);
     },
     //倍速播放
     isTimesHandler(i) {
       let list = { Url: this.detali.VideoUrl, Name: this.detali.Title, PlaySeconds: this.detali.VideoPlaySeconds };
       let index = i == 3 ? 0 : i + 1;
       this.$store.commit("audioBg/setMultiple", this.timesTheSpeed[index].value);
-      console.log(this.timesTheSpeed[index].value);
       this.globalBgAudioManager.playbackRate = this.isTimes;
       this.globalBgAudioManager.startTime = this.curTime;
       if (this.$store.state.audioBg.reportId != this.detali.ArticleId) {

+ 21 - 5
reportPages/roadEssence/roadEssence.vue

@@ -23,6 +23,7 @@
                 activeColor="#3385FF"
                 :max="detali.VideoPlaySeconds"
                 :value="curTime"
+                @touchstart="touchstartHandler"
                 @change="handleAudioSliderChange($event)"
                 @changing="handleAudioSliderChangeing($event)"
                 block-size="16"
@@ -85,7 +86,7 @@
     </view>
     <freeCharge class="free-charge" :isShowFreeBtn="isShowFree" />
     <view v-show="false">
-      <audioModule ref="refAudioPop" :showAudioPop="showAudioPop" />
+      <audioModule :showAudioPop="showAudioPop" />
     </view>
   </view>
 </template>
@@ -142,7 +143,7 @@ export default {
       return `${m > 9 ? m : "0" + m}:${s > 9 ? s : "0" + s}`;
     },
   },
-  width: {
+  watch: {
     "$store.state.audioBg.curTime": {
       handler(newVal) {
         this.curTime = this.curVoiceId === this.detali.ArticleId ? newVal : 0;
@@ -225,13 +226,28 @@ export default {
         this.isShowAlert = res.Data.IsShow;
       }
     },
+    // //拖动进度条
+    // handleAudioSliderChange(e) {
+    //   const value = e.detail.value;
+    //   this.globalBgAudioManager.seek(value);
+    // },
+    // handleAudioSliderChangeing(e) {
+    //   this.curTime = e.detail.value;
+    // },
+    //拖动进度条
+    handleAudioSliderChangeing(e) {
+      this.curTime = e.detail.value;
+    },
     //拖动进度条
     handleAudioSliderChange(e) {
       const value = e.detail.value;
       this.globalBgAudioManager.seek(value);
+      setTimeout(() => {
+        this.$store.commit("audioBg/setSlide", false);
+      }, 300);
     },
-    handleAudioSliderChangeing(e) {
-      this.curTime = e.detail.value;
+    touchstartHandler() {
+      this.$store.commit("audioBg/setSlide", true);
     },
     //倍速播放
     isTimesHandler(i) {
@@ -252,7 +268,7 @@ export default {
     //快进 快退
     speedReverseHandler(type) {
       let isTime = type == "reverse" ? this.curTime - 15 : this.curTime + 15;
-      isTime = isTime <= 0 ? 0 : isTime >= this.audioTime ? this.audioTime - 1 : isTime;
+      isTime = isTime <= 0 ? 0 : isTime >= this.detali.VideoPlaySeconds ? this.detali.VideoPlaySeconds - 1 : isTime;
       this.globalBgAudioManager.seek(isTime);
     },
   },

+ 8 - 1
store/modules/audioBg.js

@@ -11,6 +11,8 @@ const audioModules = {
     activityTitle: "",
     multiple: 1, //倍数
     parseIntShow: false, //
+    isDragSlide:false,//是否在拖动进度条
+    isAudioEnded:false, //
   },
   mutations: {
     addAudio(state, payload) {
@@ -35,7 +37,6 @@ const audioModules = {
     removeAudio(state, payload) {
       state.show = false;
       state.list = [];
-      state.multiple = 1;
       state.activityId = 0;
       state.reportId = 0;
       state.curTime = 0;
@@ -44,6 +45,12 @@ const audioModules = {
     parseIntAudio(state, payload) {
       state.parseIntShow = payload;
     },
+    setSlide(state, payload){
+      state.isDragSlide = payload;
+    },
+    setAudioEnd(state, payload) {
+      state.isAudioEnded = payload;
+    }
   },
 };