绿满眶商城微信小程序-uniapp
peng
2025-07-29 7234a8bfdc91571bb1e5d4fad66cdd5a445712ee
pages/health/healthVideo.vue
@@ -375,18 +375,38 @@
  },
  onLoad(option) {
     this.marginBottom = uni.getSystemInfoSync().safeAreaInsets.bottom
     let queryParam = this.videoQuery;
     if (option.q) {
       // 双重解码:微信对URL进行了两次编码
       const decodedUrl = decodeURIComponent(decodeURIComponent(option.q));
       console.log('原始URL:', decodedUrl);
       // 解析URL中的查询参数
       const params = this.parseUrlParams(decodedUrl);
       const shareType = params.shareType;
       const videoId = params.videoId;
       queryParam.videoId = videoId
      queryParam.shareType = shareType
       console.log('解析参数:', { shareType, videoId });
     }
     const token = storage.getAccessToken();
     if (! token) {
        this.wxSilentLogin(() => {
           this.loadVideos();
           // 判断是不是点击分享链接进来的
           if (option.userId && option.videoId) {
                queryParam.videoId = option.videoId
              // 保存分享点击记录
              saveShareClickRecord({refId: option.videoId, shareUserId: option.userId})
           }
           this.loadVideos(queryParam);
        })
     } else {
      this.loadVideos();
        if (option.userId && option.videoId) {
            queryParam.videoId = option.videoId
           // 保存分享点击记录
           saveShareClickRecord({refId: option.videoId, shareUserId: option.userId})
        }
      this.loadVideos(queryParam);
     }
  },
  onShareAppMessage(e) {
@@ -410,6 +430,23 @@
     }
  },
  methods: {
     // 解析URL参数
     parseUrlParams(url) {
       const params = {};
       // 处理可能存在的hash(如果有的话)
       const cleanUrl = url.split('#')[0];
       const queryStr = cleanUrl.split('?')[1] || '';
       queryStr.split('&').forEach(pair => {
         const [key, value] = pair.split('=');
         if (key) {
           // 如果值存在,则解码,否则设为空字符串
           params[key] = value ? decodeURIComponent(value) : '';
         }
       });
       return params;
     },
     // 查询当前视频的关联视频(挂了同一商品的)
     async getGoodsSimilarly() {
             if (this.similarlyLoading || this.similarlyNomore) return Promise.resolve();;
@@ -739,10 +776,11 @@
     },
    // 加载视频数据
    async loadVideos() {
    async loadVideos(param) {
      if (this.loading || this.videoNoMore) return;
      this.loading = true;
   if(param){
      getHealthRecommendVideos(this.videoQuery).then(res => {
        // 新增一个字段用于循环时的key
        const data = res.data.data.map(item => {
@@ -769,6 +807,33 @@
        this.videoQuery.pageNumber++;
     })
   }else{
      getHealthRecommendVideos(this.videoQuery).then(res => {
        // 新增一个字段用于循环时的key
        const data = res.data.data.map(item => {
           return {
              ...item,
              updateKey: item.id
           }
        })
        if (this.videoQuery.pageNumber === 1) {
          this.videoList = data;
        } else {
         this.videoList = [
           ...this.videoList,
           ...data.filter(
             (newItem) => !this.videoList.some((oldItem) => oldItem.id === newItem.id)
           ),
         ];
        }
        this.loading = false;
        if(data.length < this.videoQuery.pageSize) {
           this.videoNoMore = true;
           return;
        }
        this.videoQuery.pageNumber++;
     })}
    },
    // 滑动切换视频