绿满眶商城微信小程序-uniapp
peng
9 天以前 25ee0fc249a081bb7bc4b485708c3e1afd3b07d1
pages/kitchen/KitchenVideo.vue
@@ -283,6 +283,9 @@
import {
  changeCollect
} from "@/api/collect.js";
import { saveShare, saveShareClickRecord } from "@/api/share.js";
import storage from "@/utils/storage.js";
export default {
  computed: {
    hasPlayTime() {
@@ -367,6 +370,7 @@
      },
      loading: false, // 是否正在加载
      videoQuery: {
      source: 'system',
        pageNumber: 1,
        pageSize: 6,
        videoFrom: 'recommend',
@@ -398,23 +402,97 @@
  onHide() {
    this.startHidenTime = Date.now()
  },
  onLoad() {
     this.marginBottom = uni.getSystemInfoSync().safeAreaInsets.bottom
     // 获取状态栏高度
     const systemInfo = uni.getSystemInfoSync();
     console.log('systemInfo------------------------>',systemInfo.windowHeight)
     const menuButtonInfo =  uni.getMenuButtonBoundingClientRect()
     console.log('menuButtonInfo--------------------------->',menuButtonInfo)
     const {top,height} = menuButtonInfo
     this.buttonHeight = systemInfo.statusBarHeight+height;
     this.menueButton = top;
     console.log('systemInfo.safeAreaInsets.bottom>',systemInfo.safeAreaInsets.bottom)
     this.leftHeight = systemInfo.windowHeight - top -50 - systemInfo.safeAreaInsets.bottom -22;
     console.log('-------------leftHeight------------------------>',this.leftHeight)
   this.getKitchenTypeList();
   this.loadVideos();
  onLoad(option) {
      this.marginBottom = uni.getSystemInfoSync().safeAreaInsets.bottom;
      // 获取状态栏高度
       const systemInfo = uni.getSystemInfoSync();
       console.log('systemInfo------------------------>',systemInfo.windowHeight)
       const menuButtonInfo =  uni.getMenuButtonBoundingClientRect()
       console.log('menuButtonInfo--------------------------->',menuButtonInfo)
       const {top,height} = menuButtonInfo
       this.buttonHeight = systemInfo.statusBarHeight+height;
       this.menueButton = top;
       console.log('systemInfo.safeAreaInsets.bottom>',systemInfo.safeAreaInsets.bottom)
       this.leftHeight = systemInfo.windowHeight - top -50 - systemInfo.safeAreaInsets.bottom -22;
       console.log('-------------leftHeight------------------------>',this.leftHeight)
      let queryParam = this.videoQuery;
      if(option.q){
         const decodedUrl = decodeURIComponent(decodeURIComponent(option.q));
         console.log('原始URL:', decodedUrl);
         // 解析URL中的查询参数
         const params = this.parseUrlParams(decodedUrl);
         const shareType = params.shareType;
         const videoId = params.videoId;
         const source = params.source;
         queryParam.videoId = videoId
         queryParam.shareType = shareType
         queryParam.source = source
         console.log('解析参数:', { shareType, videoId,source });
      }
      const token = storage.getAccessToken();
      if(!token){
         this.wxSilentLogin(() => {
            // 判断是不是点击分享链接进来的
            if (option.userId && option.videoId) {
               queryParam.videoId = option.videoId
               // 保存分享点击记录
               saveShareClickRecord({refId: option.videoId, shareUserId: option.userId})
            }
               this.getKitchenTypeList();
               this.loadVideos(queryParam);
         })
      }else{
         if (option.userId && option.videoId) {
            queryParam.videoId = option.videoId
            // 保存分享点击记录
            saveShareClickRecord({refId: option.videoId, shareUserId: option.userId})
      }
      this.getKitchenTypeList();
      this.loadVideos(queryParam);
   }
  },
   onShareAppMessage(e) {
   const userInfo = storage.getUserInfo();
   if(!userInfo) {
      console.log("未登录不能分享");
      return
   }
   const videoInfo = e.target.dataset.obj;
   // 保存分享记录
   const data = {
      shareType: 'video',
      refId: videoInfo.id,
      shareUser: userInfo.id
   }
   saveShare(data)
     return {
        title: videoInfo.title,
        path: `/pages/tabbar/index/home?videoId=${videoInfo.id}&userId=${userInfo.id}`,
        imageUrl: videoInfo.coverUrl
     }
  },
  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();;
@@ -724,14 +802,48 @@
      })
    },
    // 加载视频数据
    async loadVideos() {
    async loadVideos(param) {
      console.log(this.loading, this.videoNoMore,this.videoQuery)
      if (this.videoQuery.pageNumber == 1) {
      } else if (this.loading || this.videoNoMore) return;
      this.loading = true;
      if(param){
         console.log("二维码扫码数据执行在此处1")
         console.log(this.videoQuery)
         getkitchenVideoList(this.videoQuery).then(res => {
            console.log(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++;
         })
      }else{
      console.log("二维码扫码数据执行在此处2")
      console.log(this.videoQuery)
      getkitchenVideoList(this.videoQuery).then(res => {
        console.log(res)
        // 新增一个字段用于循环时的key
        const data = res.data.data.map(item => {
           return {
@@ -757,6 +869,7 @@
        this.videoQuery.pageNumber++;
      })
     }
    },
    // 滑动切换视频