| | |
| | | "u-navbar": "view", |
| | | "u-button": "view", |
| | | "u-image": "view", |
| | | "u-loadmore": "view" |
| | | "u-loadmore": "view", |
| | | "u-empty":"view" |
| | | } |
| | | } |
| | | }, |
| | |
| | | { |
| | | "path": "news", |
| | | "style": { |
| | | "navigationBarTitleText": "新闻", |
| | | "navigationBarTitleText": "快讯", |
| | | "componentPlaceholder": { |
| | | "u-icon": "view", |
| | | "u-button": "view", |
| | |
| | | { |
| | | "path": "detail", |
| | | "style": { |
| | | "navigationBarTitleText": "新闻详情", |
| | | "navigationBarTitleText": "快讯详情", |
| | | "componentPlaceholder": { |
| | | "u-icon": "view", |
| | | "u-button": "view", |
| | |
| | | const params = this.parseUrlParams(decodedUrl); |
| | | const shareType = params.shareType; |
| | | const videoId = params.videoId; |
| | | const source = params.source |
| | | const source = params.source |
| | | |
| | | queryParam.videoId = videoId |
| | | queryParam.shareType = shareType |
| | | queryParam.source = source |
| | | queryParam.shareType = shareType |
| | | queryParam.source = source |
| | | console.log('解析参数:', { shareType, videoId,source }); |
| | | } |
| | | const token = storage.getAccessToken(); |
| | |
| | | this.loading = true; |
| | | |
| | | if(param){ |
| | | console.log("二维码扫码数据执行在此处1") |
| | | console.log(this.videoQuery) |
| | | getHealthRecommendVideos(this.videoQuery).then(res => { |
| | | console.log(res) |
| | | // 新增一个字段用于循环时的key |
| | | const data = res.data.data.map(item => { |
| | | return { |
| | |
| | | |
| | | }) |
| | | }else{ |
| | | console.log("二维码扫码数据执行在此处2") |
| | | console.log(this.videoQuery) |
| | | getHealthRecommendVideos(this.videoQuery).then(res => { |
| | | console.log(res) |
| | | // 新增一个字段用于循环时的key |
| | | const data = res.data.data.map(item => { |
| | | return { |
| | |
| | | changeCollect |
| | | } from "@/api/collect.js"; |
| | | import { saveShare, saveShareClickRecord } from "@/api/share.js"; |
| | | import storage from "@/utils/storage.js"; |
| | | |
| | | export default { |
| | | computed: { |
| | | hasPlayTime() { |
| | |
| | | } |
| | | this.getKitchenTypeList(); |
| | | this.loadVideos(queryParam); |
| | | |
| | | }) |
| | | }else{ |
| | | if (option.userId && option.videoId) { |
| | |
| | | saveShareClickRecord({refId: option.videoId, shareUserId: option.userId}) |
| | | } |
| | | this.getKitchenTypeList(); |
| | | this.loadVideos(); |
| | | this.loadVideos(queryParam); |
| | | } |
| | | |
| | | }, |
| | |
| | | }) |
| | | }, |
| | | // 加载视频数据 |
| | | 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++; |
| | | |
| | | }) |
| | | } |
| | | }, |
| | | |
| | | // 滑动切换视频 |
| | |
| | | </view> |
| | | <!-- 改进的加载更多提示 --> |
| | | <view class="load-more"> |
| | | <u-loadmore :status="loading ? 'loading' : noMore ? 'nomore' : 'loadmore'" :load-text="{ |
| | | <u-loadmore v-if="mockData.length > 0" :status="loading ? 'loading' : noMore ? 'nomore' : 'loadmore'" :load-text="{ |
| | | loadmore: '上拉加载更多', |
| | | loading: '正在加载', |
| | | nomore: '没有更多了' |
| | |
| | | <template> |
| | | <view class="wrapper"> |
| | | <top-bar selectedTitleIndex="activity" textColor="black" @changeTab="topBarChange" class="topBar"></top-bar> |
| | | |
| | | <view style="height: 50rpx;margin-top: 50px"></view> |
| | | |
| | | <view style="height: 50rpx;margin-top: 150rpx"></view> |
| | | <u-empty v-if="mockData.length === 0 && !loading" style="margin-top: 130rpx;" |
| | | mode="data" |
| | | icon="http://cdn.uviewui.com/uview/empty/data.png"> |
| | | </u-empty> |
| | | <!-- 内容区域 --> |
| | | <scroll-view scroll-y class="scroll-view-container" style="height: 40vh;" @scrolltolower="loadMore" :lower-threshold="100"> |
| | | <view class="waterfall"> |
| | |
| | | </view> |
| | | </view> |
| | | </view> |
| | | <view class="empty-state" v-if="mockData.length === 0 && !loading"> |
| | | <text>暂无内容,下拉刷新试试</text> |
| | | </view> |
| | | <!-- <view style="height: 150rpx;"></view> --> |
| | | |
| | | |
| | | <!-- 改进的加载更多提示 --> |
| | | <view class="load-more"> |
| | | <u-loadmore v-if="mockData.length > 0" :status="loading ? 'loading' : noMore ? 'nomore' : 'loadmore'" |
| | |
| | | </script> |
| | | |
| | | <style lang="scss"> |
| | | /* 空状态样式 */ |
| | | .empty-state { |
| | | display: flex; |
| | | flex-direction: column; |
| | | align-items: center; |
| | | justify-content: center; |
| | | height: 50vh; |
| | | text-align: center; |
| | | color: #999; |
| | | text { |
| | | font-size: 28rpx; |
| | | } |
| | | } |
| | | /* 新增加载更多样式 */ |
| | | |
| | | /*新增加载更多样式 */ |
| | | .load-more { |
| | | padding: 20rpx 0; |
| | | text-align: center; |
| | |
| | | } |
| | | } |
| | | |
| | | /* 空状态样式 */ |
| | | .empty-state { |
| | | display: flex; |
| | | flex-direction: column; |
| | | align-items: center; |
| | | justify-content: center; |
| | | height: 60vh; |
| | | text-align: center; |
| | | |
| | | image { |
| | | width: 240rpx; |
| | | opacity: 0.6; |
| | | margin-bottom: 30rpx; |
| | | } |
| | | |
| | | text { |
| | | color: #c0c4cc; |
| | | font-size: 28rpx; |
| | | } |
| | | } |
| | | |
| | | .topBar { |
| | | position: fixed; |
| | |
| | | async onLoad (options) { |
| | | |
| | | if(options.q){ |
| | | let queryParam = null; |
| | | const decodedUrl = decodeURIComponent(decodeURIComponent(option.q)); |
| | | const queryParam = { |
| | | id:'', |
| | | goodsId:'' |
| | | }; |
| | | const decodedUrl = decodeURIComponent(decodeURIComponent(options.q)); |
| | | console.log('原始URL:', decodedUrl); |
| | | const params = this.parseUrlParams(decodedUrl); |
| | | const id = params.id; |
| | |
| | | </view> |
| | | <view class="interact-item" @click="navigateTo('/pages/news/news')"> |
| | | <image src="/static/mine/shensu.png" mode=""></image> |
| | | <view>新闻</view> |
| | | <view>快讯</view> |
| | | </view> |
| | | |
| | | <!-- <view class="interact-item" v-if="isStoreManger" @click="navigateTo('/pages/customerManager/customerManager')"> |