| | |
| | | import { |
| | | changeCollect |
| | | } from "@/api/collect.js"; |
| | | import { saveShare, saveShareClickRecord } from "@/api/share.js"; |
| | | import storage from "@/utils/storage.js"; |
| | | |
| | | export default { |
| | | computed: { |
| | | hasPlayTime() { |
| | |
| | | }, |
| | | loading: false, // 是否正在加载 |
| | | videoQuery: { |
| | | source: 'system', |
| | | pageNumber: 1, |
| | | pageSize: 6, |
| | | videoFrom: 'recommend', |
| | |
| | | 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();; |
| | |
| | | }) |
| | | }, |
| | | // 加载视频数据 |
| | | 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 { |
| | |
| | | this.videoQuery.pageNumber++; |
| | | |
| | | }) |
| | | } |
| | | }, |
| | | |
| | | // 滑动切换视频 |