绿满眶商城微信小程序-uniapp
xiangpei
2025-06-27 41c7557b6ba2db6c48a9ebbad232b4fb6407f6d6
神厨页面同步视频推荐
4个文件已修改
139 ■■■■ 已修改文件
pages/health/healthVideo.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/kitchen/KitchenVideo.vue 133 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/tabbar/index/home.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/video/video-play.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/health/healthVideo.vue
@@ -1354,7 +1354,7 @@
    .progress-text {
      margin-top: 10px;
      font-size: 14px;
      color: #666;
      color: #fff;
    }
    .swiper-box {
      width: 100%;
pages/kitchen/KitchenVideo.vue
@@ -342,8 +342,6 @@
        startY: 0,
        endY: 0
      },
      videoContexts: [], // 视频上下文对象集合
      loading: false, // 是否正在加载
      videoQuery: {
        pageNumber: 1,
@@ -373,10 +371,6 @@
    this.buttonHeight = systemInfo.statusBarHeight;
    this.getKitchenTypeList();
    this.loadVideos();
  },
  onReady() {
    // 初始化视频上下文
    this.initVideoContexts();
  },
  methods: {
    async chooseCategory(id) {
@@ -658,14 +652,6 @@
        }
      })
    },
    // 初始化视频上下文
    initVideoContexts() {
      this.videoContexts = this.videoList.map((_, index) => {
        let videoContent = uni.createVideoContext(`video${index}`, this);
        return videoContent;
      });
    },
    // 加载视频数据
    async loadVideos() {
      console.log(this.loading, this.videoNoMore,this.videoQuery)
@@ -686,9 +672,6 @@
            ),
          ];
        }
        this.$nextTick(() => {
          this.initVideoContexts();
        });
        this.loading = false;
        if (res.data.data.length < this.videoQuery.pageSize) {
          this.videoNoMore = true;
@@ -701,6 +684,7 @@
    // 滑动切换视频
    onSwiperChange(e) {
      this.videoLoading = false
      // 如果视频处于暂停状态往下刷视频,那么需要再计算一次暂停时间
      if (!this.currentVideoIsPlaying) {
        if (this.startPauseTime !== 0) {
@@ -712,16 +696,61 @@
      this.savePlayRecord()
      const oldIndex = this.currentIndex;
      this.currentIndex = e.detail.current;
      const videoContext = uni.createVideoContext(`video${oldIndex}`, this);
      // 暂停上一个视频
      if (this.videoContexts[oldIndex]) {
        this.videoContexts[oldIndex].pause();
      }
      videoContext.pause();
      this.startPauseTime = 0;
      // 设置当前播放视频的总时长
      this.duration = this.videoList[this.currentIndex].videoDuration;
      this.formartDuration = this.sliderFormatTime(this.duration);
      // 播放当前视频
      if (this.videoContexts[this.currentIndex]) {
        this.videoContexts[this.currentIndex].play();
      const videoContext1 = uni.createVideoContext(`video${this.currentIndex}`, this);
      videoContext1.play()
      // 如果剩余视频不足,触发请求获取更多视频
      if (this.videoList.length - 1 < this.currentIndex + this.videoLiveOffset) {
          this.loadVideos()
      }
    },
    // 开始触摸
    handleSwiperStart(e) {
        console.log("开始触摸", e);
        this.touchXY.startX = e.touches[0].pageX
        this.touchXY.startY = e.touches[0].pageY
    },
    // 触摸中
    handleSwiperMove(e) {
        this.touchXY.endX = e.touches[0].pageX
        this.touchXY.endY = e.touches[0].pageY
    },
    // 结束触摸
    handleSwiperEnd(item) {
        // 防止滑动滚动条也触发跳转
        if (this.showProcess) {
            return
        }
        const diffX = this.touchXY.endX - this.touchXY.startX
        const diffY = this.touchXY.endY - this.touchXY.startY
        // 判断是否是横向滑动(X轴变化大于Y轴变化)
        if (Math.abs(diffX) > Math.abs(diffY)) {
          if (diffX > 0) {
            console.log('右滑')
            if (item.goodsList && item.goodsList.length > 0) {
                this.jumpToPay(item.id)
            }
          } else {
            console.log('左滑')
          }
        }
        // 重置坐标
        this.touchXY = {
            startX: 0,
            endX: 0,
            startY: 0,
            endY: 0
      }
    },
@@ -815,53 +844,15 @@
      this.startProgress = this.progress; // 记录开始时的进度
      this.startX = e.touches[0].pageX;
      console.log("记录开始时的进度", this.startProgress);
      this.videoContexts[this.currentIndex].pause()
      const videoContext = uni.createVideoContext(`video${this.currentIndex}`, this);
      videoContext.pause()
      // this.updateProgress(e);
    },
    // 开始触摸
    handleSwiperStart(e) {
      console.log("开始触摸", e);
      this.touchXY.startX = e.touches[0].pageX
      this.touchXY.startY = e.touches[0].pageY
    },
    // 触摸中
    handleSwiperMove(e) {
      this.touchXY.endX = e.touches[0].pageX
      this.touchXY.endY = e.touches[0].pageY
    },
    // 结束触摸
    handleSwiperEnd(item) {
      // 防止滑动滚动条也触发跳转
      if (this.showProcess) {
        return
      }
      const diffX = this.touchXY.endX - this.touchXY.startX
      const diffY = this.touchXY.endY - this.touchXY.startY
      // 判断是否是横向滑动(X轴变化大于Y轴变化)
      if (Math.abs(diffX) > Math.abs(diffY)) {
        if (diffX > 0) {
          console.log('右滑')
          if (item.goodsList && item.goodsList.length > 0) {
            this.jumpToPay(item.id)
          }
        } else {
          console.log('左滑')
        }
      }
      // 重置坐标
      this.touchXY = {
        startX: 0,
        endX: 0,
        startY: 0,
        endY: 0
      }
    },
    // 触摸移动
    handleTouchMove(e) {
      if (!this.isDragging || !this.barWidth) return;
      clearTimeout(this.processHidenTimer)
      this.videoContexts[this.currentIndex].pause()
      this.updateProgress(e);
    },
@@ -869,8 +860,9 @@
    handleTouchEnd() {
      this.isDragging = false;
      console.log("滑动结束", this.duration * this.progress);
      this.videoContexts[this.currentIndex].seek(this.duration * this.progress / 100)
      this.videoContexts[this.currentIndex].play()
      const videoContext = uni.createVideoContext(`video${this.currentIndex}`, this);
      videoContext.seek(this.duration * this.progress / 100)
      videoContext.play()
      this.processHidenTimer = setTimeout(() => {
        this.showProcess = false;
      }, 1000);
@@ -886,7 +878,6 @@
      // 将像素距离转换为进度增量
      const deltaProgress = (deltaX / this.barWidth) * 100;
      console.log("进度增量", deltaProgress);
      // 计算新进度 = 开始时的进度 + 滑动增量
      let newProgress = this.startProgress + deltaProgress;
@@ -904,9 +895,9 @@
    },
    // 获取视频总时长
    onLoadedMetadata(e) {
      this.duration = e.detail.duration;
      this.formartDuration.push(this.sliderFormatTime(this.duration));
      console.log("视频总时长", this.duration);
      // this.duration = e.detail.duration;
      // this.formartDuration.push(this.sliderFormatTime(this.duration));
      // console.log("视频总时长", this.duration);
    },
    // 保存播放记录
    async savePlayRecord() {
@@ -1385,7 +1376,7 @@
.progress-text {
  margin-top: 10px;
  font-size: 14px;
  color: #666;
  color: #fff;
}
.swiper-box {
pages/tabbar/index/home.vue
@@ -1355,7 +1355,7 @@
    .progress-text {
      margin-top: 10px;
      font-size: 14px;
      color: #666;
      color: #fff;
    }
    .swiper-box {
      width: 100%;
pages/video/video-play.vue
@@ -1327,7 +1327,7 @@
    .progress-text {
      margin-top: 10px;
      font-size: 14px;
      color: #666;
      color: #fff;
    }
    .swiper-box {
      width: 100%;