| | |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: space-around; |
| | | border-top: 1px solid #ededed; |
| | | border-top: 1rpx solid rgba(255, 255, 255, 0.1); |
| | | box-sizing: border-box; |
| | | backdrop-filter: blur(10px); |
| | | -webkit-backdrop-filter: blur(10px); |
| | | } |
| | | |
| | | .tabbar-item { |
| | |
| | | <!-- 底部留出导航栏高度的空间 --> |
| | | <view class="safe-area-bottom"></view> |
| | | </scroll-view> |
| | | <custom-tabbar bgColor="#ffffff" selected="kitchen"></custom-tabbar> |
| | | <custom-tabbar bgColor="rgba(0, 0, 0, 0.3)" selectedTextColor="#ffffff" selected="kitchen"></custom-tabbar> |
| | | </view> |
| | | </template> |
| | | |
| | |
| | | height: 100vh; |
| | | position: relative; |
| | | overflow: hidden; |
| | | background-color: #ffffff; |
| | | background-color: #000000; |
| | | } |
| | | |
| | | .scroll-view { |
| | |
| | | .empty-text { |
| | | text-align: center; |
| | | padding-top: 300rpx; |
| | | color: #999; |
| | | color: #ffffff; |
| | | font-size: 28rpx; |
| | | } |
| | | |
| | |
| | | <scroll-view class="tags-scroll" scroll-x="true" :show-scrollbar="false"> |
| | | <view class="tags"> |
| | | <view v-for="tag in tags" :key="tag.value" class="tag" :class="{ active: tag.selected }" |
| | | @click="toggleTag(tag)"> |
| | | :style="{ width: tags.length <= 4 ? (100 / tags.length) + '%' : '25%' }" @click="toggleTag(tag)"> |
| | | <text>{{ tag.label }}</text> |
| | | </view> |
| | | </view> |
| | |
| | | } |
| | | |
| | | .content { |
| | | padding: 24rpx; |
| | | padding: 0 24rpx 0 24rpx; |
| | | } |
| | | |
| | | .tags-scroll { |
| | |
| | | display: flex; |
| | | flex-wrap: nowrap; |
| | | padding: 10rpx 0; |
| | | width: 100%; |
| | | } |
| | | |
| | | .tag { |
| | | height: 80rpx; |
| | | display: inline-flex; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: center; |
| | | font-size: 30rpx; |
| | |
| | | background-color: #f7f7f7; |
| | | white-space: nowrap; |
| | | flex-shrink: 0; |
| | | box-sizing: border-box; |
| | | } |
| | | |
| | | .tag.active { |
| | |
| | | |
| | | .product-info { |
| | | flex: 1; |
| | | margin-left: 20rpx; |
| | | display: flex; |
| | | align-items: center; |
| | | align-items: flex-end; |
| | | justify-content: space-between; |
| | | overflow: hidden; // 确保子元素溢出隐藏 |
| | | margin-top: 10rpx; |
| | | } |
| | | |
| | | .product-top { |
| | |
| | | |
| | | .product-price { |
| | | color: #ff573e; |
| | | display: flex; |
| | | align-items: flex-end; |
| | | |
| | | .symbol { |
| | | font-size: 24rpx; |
| | | line-height: 1.2; // 稍微调整行高以对齐 |
| | | margin-bottom: 6rpx; // 符号通常较小,手动微调使其看起来更贴合底部 |
| | | } |
| | | |
| | | .value { |
| | | font-size: 50rpx; |
| | | font-weight: bold; |
| | | line-height: 1; |
| | | } |
| | | } |
| | | |
| | |
| | | <template> |
| | | <view class="video-container"> |
| | | <view class="fixed-float-window" @click="gotoPrizeActivity" v-if="prizeActivity.id"> |
| | | <!-- 悬浮窗内容:可替换为图标+文字/纯图标/图片 --> |
| | | <text style="font-size: 36rpx;">🎁</text> |
| | | <text class="float-text">抽奖活动</text> |
| | | </view> |
| | | <view class="fixed-float-window" @click="gotoPrizeActivity" v-if="prizeActivity.id"> |
| | | <!-- 悬浮窗内容:可替换为图标+文字/纯图标/图片 --> |
| | | <text style="font-size: 36rpx;">🎁</text> |
| | | <text class="float-text">抽奖活动</text> |
| | | </view> |
| | | |
| | | <top-bar selectedTitleIndex="home" textColor="white" @changeTab="topBarChange" class="topBar"></top-bar> |
| | | <!-- 视频加载 --> |
| | |
| | | |
| | | import ActivityPopup from '@/pages/ActivityPopup/ActivityPopup.vue' |
| | | import { mapState, mapMutations } from 'vuex' |
| | | import { setPopupRedisTime, getPopupAcitivty,hideActivityPopupToday } from '@/api/popup.js' |
| | | import { setPopupRedisTime, getPopupAcitivty, hideActivityPopupToday } from '@/api/popup.js' |
| | | import { changeCollect } from "@/api/collect.js"; |
| | | import { saveShare, saveShareClickRecord} from "@/api/share.js"; |
| | | import { getSessionId, userAction,userShare } from "@/api/userAction.js"; |
| | | import { saveShare, saveShareClickRecord } from "@/api/share.js"; |
| | | import { getSessionId, userAction, userShare } from "@/api/userAction.js"; |
| | | import { silentLogin } from "@/api/connect.js"; |
| | | import { getUserInfo } from "@/api/members"; |
| | | import storage from "@/utils/storage.js"; |
| | | import TopBar from "@/components/TopBar.vue"; |
| | | import { nextTick } from "vue"; |
| | | import { getVideoCover } from "@/api/common.js" |
| | | import {addPrizeNum} from '@/api/prize.js' |
| | | import { addPrizeNum } from '@/api/prize.js' |
| | | import UIcon from "../../subComponents/uview-components/uview-ui/components/u-icon/u-icon.vue"; |
| | | import {getONPrizeActivity} from "../../../api/prize-activity"; |
| | | import { getONPrizeActivity } from "../../../api/prize-activity"; |
| | | export default { |
| | | components: {UIcon, TopBar, ActivityPopup }, |
| | | components: { UIcon, TopBar, ActivityPopup }, |
| | | computed: { |
| | | hasPlayTime() { |
| | | return this.sliderFormatTime(this.progress > 0 ? this.duration * this.progress / 100 : 0); |
| | |
| | | similarlyNomore: false, // 是否还有更多相似视频 |
| | | similaryVideoIndex: 0, // 相似视频的播放位置 |
| | | similarlyLoading: false, // 相似视频加载 |
| | | marginBottom: 0 ,// 底部安全区域 |
| | | pageSessionNo:"", |
| | | shareId:"", |
| | | actionParam:{ |
| | | sessionId:'', |
| | | actionType:"PAGE", |
| | | joinType:"SELF", |
| | | pageCode:"RECOMMEND_VIDEO", |
| | | pageParams:"{}", |
| | | pageStatus:"JOIN", |
| | | pageType:"LIST" |
| | | }, |
| | | shareParam:{ |
| | | pageCode:"RECOMMEND_VIDEO", |
| | | shareOption:"{}", |
| | | pageType:"LIST" |
| | | }, |
| | | prizeActivity:{}, |
| | | marginBottom: 0,// 底部安全区域 |
| | | pageSessionNo: "", |
| | | shareId: "", |
| | | actionParam: { |
| | | sessionId: '', |
| | | actionType: "PAGE", |
| | | joinType: "SELF", |
| | | pageCode: "RECOMMEND_VIDEO", |
| | | pageParams: "{}", |
| | | pageStatus: "JOIN", |
| | | pageType: "LIST" |
| | | }, |
| | | shareParam: { |
| | | pageCode: "RECOMMEND_VIDEO", |
| | | shareOption: "{}", |
| | | pageType: "LIST" |
| | | }, |
| | | prizeActivity: {}, |
| | | } |
| | | }, |
| | | onShow() { |
| | | getSessionId().then(res=>{ |
| | | getSessionId().then(res => { |
| | | console.log('执行了onshow') |
| | | if (res.statusCode === 200){ |
| | | this.pageSessionNo = res.data.data |
| | | if(this.pageSessionNo){ |
| | | let param = Object.assign({},this.actionParam); |
| | | console.log("打印param",param) |
| | | this.actionParam.sessionId = this.pageSessionNo |
| | | console.log("打印this.actionParam",this.actionParam) |
| | | param.sessionId = this.pageSessionNo |
| | | userAction(param) |
| | | } |
| | | this.getONPrizeActivity() |
| | | let showPopup = storage.getPopupShow(); |
| | | console.log(showPopup) |
| | | if (showPopup) { |
| | | console.log("首次打开,显示弹窗"); |
| | | storage.setPopupShow(true); // 标记为已显示 |
| | | } else { |
| | | console.log("已显示过,不弹窗"); |
| | | } |
| | | if(showPopup){ |
| | | this.openActivityPopup() |
| | | } |
| | | if (!this.userId) { |
| | | this.getUserId() |
| | | } |
| | | // const token = storage.getAccessToken(); |
| | | // if (! token) { |
| | | // this.wxSilentLogin(() => { |
| | | // this.loadVideos(); |
| | | // }) |
| | | // } else { |
| | | // this.loadVideos(); |
| | | // } |
| | | if (this.videoList.length < 1) { |
| | | this.loading = false; |
| | | this.videoNoMore = false; |
| | | console.log('触发数据加载') |
| | | this.loadVideos(); |
| | | } |
| | | // 如果视频按下暂停后切换页面再回到页面时,只算暂停时间(因为暂停时间和离开页面时间是重复的,只算一个) |
| | | if (this.startHidenTime !== 0 && this.currentVideoIsPlaying) { |
| | | const duration = Date.now() - this.startHidenTime |
| | | this.totalHidenTime += duration |
| | | } |
| | | if (res.statusCode === 200) { |
| | | this.pageSessionNo = res.data.data |
| | | if (this.pageSessionNo) { |
| | | let param = Object.assign({}, this.actionParam); |
| | | console.log("打印param", param) |
| | | this.actionParam.sessionId = this.pageSessionNo |
| | | console.log("打印this.actionParam", this.actionParam) |
| | | param.sessionId = this.pageSessionNo |
| | | userAction(param) |
| | | } |
| | | this.getONPrizeActivity() |
| | | let showPopup = storage.getPopupShow(); |
| | | console.log(showPopup) |
| | | if (showPopup) { |
| | | console.log("首次打开,显示弹窗"); |
| | | storage.setPopupShow(true); // 标记为已显示 |
| | | } else { |
| | | console.log("已显示过,不弹窗"); |
| | | } |
| | | if (showPopup) { |
| | | this.openActivityPopup() |
| | | } |
| | | if (!this.userId) { |
| | | this.getUserId() |
| | | } |
| | | // const token = storage.getAccessToken(); |
| | | // if (! token) { |
| | | // this.wxSilentLogin(() => { |
| | | // this.loadVideos(); |
| | | // }) |
| | | // } else { |
| | | // this.loadVideos(); |
| | | // } |
| | | if (this.videoList.length < 1) { |
| | | this.loading = false; |
| | | this.videoNoMore = false; |
| | | console.log('触发数据加载') |
| | | this.loadVideos(); |
| | | } |
| | | // 如果视频按下暂停后切换页面再回到页面时,只算暂停时间(因为暂停时间和离开页面时间是重复的,只算一个) |
| | | if (this.startHidenTime !== 0 && this.currentVideoIsPlaying) { |
| | | const duration = Date.now() - this.startHidenTime |
| | | this.totalHidenTime += duration |
| | | } |
| | | |
| | | |
| | | } |
| | | } |
| | | |
| | | }) |
| | | |
| | | }, |
| | | onUnload() { |
| | | let param = Object.assign({},this.actionParam); |
| | | if (this.sendOnShow)return |
| | | param.pageStatus = "LEAVE" |
| | | // if (this.isNotEmpty(param.sessionId)){ |
| | | console.log(param) |
| | | console.log("onUnload离开页面开始记录") |
| | | //TODO 页面刷新 导致onshow未执行,导致sessionId未赋值 |
| | | userAction(param) |
| | | // } |
| | | onUnload() { |
| | | let param = Object.assign({}, this.actionParam); |
| | | if (this.sendOnShow) return |
| | | param.pageStatus = "LEAVE" |
| | | // if (this.isNotEmpty(param.sessionId)){ |
| | | console.log(param) |
| | | console.log("onUnload离开页面开始记录") |
| | | //TODO 页面刷新 导致onshow未执行,导致sessionId未赋值 |
| | | userAction(param) |
| | | // } |
| | | |
| | | }, |
| | | onHide() { |
| | | this.startHidenTime = Date.now() |
| | | let param = Object.assign({},this.actionParam); |
| | | this.sendOnShow = true; |
| | | param.pageStatus = "LEAVE" |
| | | console.log("执行onHide的userAction") |
| | | userAction(param) |
| | | }, |
| | | }, |
| | | onHide() { |
| | | this.startHidenTime = Date.now() |
| | | let param = Object.assign({}, this.actionParam); |
| | | this.sendOnShow = true; |
| | | param.pageStatus = "LEAVE" |
| | | console.log("执行onHide的userAction") |
| | | userAction(param) |
| | | }, |
| | | onLoad(option) { |
| | | console.log('触发onLoad') |
| | | if(option.shareId){ |
| | | |
| | | if (option.shareId) { |
| | | |
| | | this.actionParam.shareId = option.shareId; |
| | | this.actionParam.joinType = 'SHARE' |
| | | uni.setStorage({ |
| | |
| | | } |
| | | }); |
| | | } |
| | | const shareId = uni.getStorageSync("shareId"); |
| | | if(shareId){ |
| | | let param = { |
| | | addType:"SHARE_USER_REGISTRY", |
| | | extend:"", |
| | | } |
| | | let extend = {shareId:shareId} |
| | | param.extend = JSON.stringify(extend) |
| | | addPrizeNum(param); |
| | | const shareId = uni.getStorageSync("shareId"); |
| | | if (shareId) { |
| | | let param = { |
| | | addType: "SHARE_USER_REGISTRY", |
| | | extend: "", |
| | | } |
| | | let extend = { shareId: shareId } |
| | | param.extend = JSON.stringify(extend) |
| | | addPrizeNum(param); |
| | | } |
| | | console.log('-----------分享出的数据---------->', option) |
| | | //处理扫码出来的视频 |
| | |
| | | queryParam.videoId = videoId |
| | | this.actionParam.joinType = "SCAN"; |
| | | this.actionParam.pageParams = JSON.stringify(params); |
| | | |
| | | |
| | | console.log('解析参数:', { shareType, videoId }); |
| | | } |
| | | const token = storage.getAccessToken(); |
| | |
| | | |
| | | // 返回一个Promise |
| | | return new Promise((resolve) => { |
| | | this.shareId = ''; |
| | | let shareObj ={ |
| | | videoId:videoInfo.id, |
| | | userId:userInfo.id |
| | | this.shareId = ''; |
| | | let shareObj = { |
| | | videoId: videoInfo.id, |
| | | userId: userInfo.id |
| | | } |
| | | this.shareParam.shareOption = JSON.stringify(shareObj) |
| | | userShare(this.shareParam).then(res => { |
| | | this.shareId = res.data.data; |
| | | let param = { |
| | | addType: "SHARE_GOODS_VIDEO", |
| | | extend: "", |
| | | } |
| | | let extend = { shareId: this.shareId } |
| | | param.extend = JSON.stringify(extend) |
| | | addPrizeNum(param); |
| | | // 当获取到shareId后,再resolve分享配置 |
| | | resolve({ |
| | | title: videoInfo.title, |
| | | path: `/pages/tabbar/index/home?videoId=${videoInfo.id}&userId=${userInfo.id}&shareId=${this.shareId}`, |
| | | imageUrl: videoInfo.coverUrl, |
| | | success(e) { |
| | | console.log("分享成功", e); |
| | | }, |
| | | fail(e) { |
| | | console.log('分享失败', e); |
| | | } |
| | | this.shareParam.shareOption = JSON.stringify(shareObj) |
| | | userShare(this.shareParam).then(res => { |
| | | this.shareId = res.data.data; |
| | | let param = { |
| | | addType:"SHARE_GOODS_VIDEO", |
| | | extend:"", |
| | | } |
| | | let extend = {shareId:this.shareId} |
| | | param.extend = JSON.stringify(extend) |
| | | addPrizeNum(param); |
| | | // 当获取到shareId后,再resolve分享配置 |
| | | resolve({ |
| | | title: videoInfo.title, |
| | | path: `/pages/tabbar/index/home?videoId=${videoInfo.id}&userId=${userInfo.id}&shareId=${this.shareId}`, |
| | | imageUrl: videoInfo.coverUrl, |
| | | success(e) { |
| | | console.log("分享成功", e); |
| | | }, |
| | | fail(e) { |
| | | console.log('分享失败', e); |
| | | } |
| | | }); |
| | | }).catch(err => { |
| | | // 处理错误情况,例如使用默认参数 |
| | | console.error('获取分享ID失败', err); |
| | | resolve({ |
| | | title: videoInfo.title, |
| | | path: `/pages/tabbar/index/home?videoId=${videoInfo.id}&userId=${userInfo.id}`, |
| | | imageUrl: videoInfo.coverUrl |
| | | }); |
| | | }); |
| | | }); |
| | | }).catch(err => { |
| | | // 处理错误情况,例如使用默认参数 |
| | | console.error('获取分享ID失败', err); |
| | | resolve({ |
| | | title: videoInfo.title, |
| | | path: `/pages/tabbar/index/home?videoId=${videoInfo.id}&userId=${userInfo.id}`, |
| | | imageUrl: videoInfo.coverUrl |
| | | }); |
| | | }); |
| | | }); |
| | | }, |
| | | methods: { |
| | | isNotEmpty(value) { |
| | | if (value === null || value === undefined) { |
| | | return false; |
| | | } |
| | | if (typeof value === 'string') { |
| | | return value.trim() !== ''; |
| | | } |
| | | return true; |
| | | }, |
| | | getONPrizeActivity(){ |
| | | getONPrizeActivity().then(res =>{ |
| | | if(res.statusCode=== 200){ |
| | | //后端没查到开启的抽奖活动 res.data.data.id值为null |
| | | this.prizeActivity = res.data.data; // 存储完整活动数据 |
| | | if (this.prizeActivity.endTime) { |
| | | }else { |
| | | this.prizeActivity = {}; // 无活动时清空 |
| | | } |
| | | } |
| | | }) |
| | | }, |
| | | gotoPrizeActivity(){ |
| | | uni.navigateTo({ |
| | | url:'/pages/prize/PrizeDetail/PrizeDetail?id=' + this.prizeActivity.id, |
| | | }); |
| | | }, |
| | | isNotEmpty(value) { |
| | | if (value === null || value === undefined) { |
| | | return false; |
| | | } |
| | | if (typeof value === 'string') { |
| | | return value.trim() !== ''; |
| | | } |
| | | return true; |
| | | }, |
| | | getONPrizeActivity() { |
| | | getONPrizeActivity().then(res => { |
| | | if (res.statusCode === 200) { |
| | | //后端没查到开启的抽奖活动 res.data.data.id值为null |
| | | this.prizeActivity = res.data.data; // 存储完整活动数据 |
| | | if (this.prizeActivity.endTime) { |
| | | } else { |
| | | this.prizeActivity = {}; // 无活动时清空 |
| | | } |
| | | } |
| | | }) |
| | | }, |
| | | gotoPrizeActivity() { |
| | | uni.navigateTo({ |
| | | url: '/pages/prize/PrizeDetail/PrizeDetail?id=' + this.prizeActivity.id, |
| | | }); |
| | | }, |
| | | |
| | | async openActivityPopup() { |
| | | await getPopupAcitivty().then(res => { |
| | | if (res.statusCode === 200) { |
| | | //请求成功修改弹窗展示状态 为false |
| | | storage.setPopupShow(false); |
| | | //请求成功修改弹窗展示状态 为false |
| | | storage.setPopupShow(false); |
| | | let obj = res.data.data; |
| | | if (obj.enableStatus === 'ON') { |
| | | this.showActivityPopup({ |
| | | title: obj.activityName, |
| | | desc: obj.activityDes, |
| | | image: obj.activityCoverUrl, |
| | | endTime: new Date(obj.endTime).getTime(), |
| | | prizeActivityId: obj.id |
| | | }) |
| | | this.showActivityPopup({ |
| | | title: obj.activityName, |
| | | desc: obj.activityDes, |
| | | image: obj.activityCoverUrl, |
| | | endTime: new Date(obj.endTime).getTime(), |
| | | prizeActivityId: obj.id |
| | | }) |
| | | // setPopupRedisTime().then(res => { |
| | | // if (res.statusCode === 200) { |
| | | // if (res.data.state) { |
| | |
| | | // } else { |
| | | // this.hideActivityPopup() |
| | | // } |
| | | // |
| | | // |
| | | // } |
| | | // }); |
| | | } |
| | |
| | | this.hideActivityPopup() |
| | | }, |
| | | replyClick(reply) { |
| | | |
| | | if (this.userId === reply.userId) { |
| | | if (this.userId === reply.userId) { |
| | | let that = this; |
| | | uni.showModal({ |
| | | title: '提示', |
| | |
| | | left: 20rpx; |
| | | z-index: 1000 |
| | | } |
| | | |
| | | .fixed-float-window { |
| | | position: fixed; |
| | | right: 20rpx; |
| | | top: 10%; |
| | | z-index: 1000; |
| | | width: 150rpx; |
| | | height: 150rpx; |
| | | border-radius: 50%; |
| | | box-shadow: 0 10rpx 16rpx rgba(110, 103, 103, 0.4); |
| | | background-color: rgba(50, 48, 48, 0.7); /* 加深主体背景,增强对比 */ |
| | | display: flex; |
| | | flex-direction: column; |
| | | align-items: center; |
| | | justify-content: center; |
| | | transition: all 0.2s ease; |
| | | overflow: visible; |
| | | position: fixed; |
| | | right: 20rpx; |
| | | top: 10%; |
| | | z-index: 1000; |
| | | width: 150rpx; |
| | | height: 150rpx; |
| | | border-radius: 50%; |
| | | box-shadow: 0 10rpx 16rpx rgba(110, 103, 103, 0.4); |
| | | background-color: rgba(50, 48, 48, 0.7); |
| | | /* 加深主体背景,增强对比 */ |
| | | display: flex; |
| | | flex-direction: column; |
| | | align-items: center; |
| | | justify-content: center; |
| | | transition: all 0.2s ease; |
| | | overflow: visible; |
| | | } |
| | | |
| | | /* 内层主光圈(粗线条+强对比) */ |
| | | .fixed-float-window::after { |
| | | content: ""; |
| | | position: absolute; |
| | | width: calc(100% + 25rpx); |
| | | height: calc(100% + 25rpx); |
| | | border-radius: 50%; |
| | | /* 金色渐变边框,线条加粗至5rpx */ |
| | | border: 5rpx solid transparent; |
| | | border-top-color: rgba(255, 215, 0, 0.9); |
| | | border-right-color: rgba(255, 180, 0, 0.6); |
| | | border-bottom-color: rgba(255, 215, 0, 0.9); |
| | | border-left-color: rgba(255, 180, 0, 0.6); |
| | | /* 加快旋转速度(4秒一圈) */ |
| | | animation: rotate 4s linear infinite; |
| | | pointer-events: none; |
| | | content: ""; |
| | | position: absolute; |
| | | width: calc(100% + 25rpx); |
| | | height: calc(100% + 25rpx); |
| | | border-radius: 50%; |
| | | /* 金色渐变边框,线条加粗至5rpx */ |
| | | border: 5rpx solid transparent; |
| | | border-top-color: rgba(255, 215, 0, 0.9); |
| | | border-right-color: rgba(255, 180, 0, 0.6); |
| | | border-bottom-color: rgba(255, 215, 0, 0.9); |
| | | border-left-color: rgba(255, 180, 0, 0.6); |
| | | /* 加快旋转速度(4秒一圈) */ |
| | | animation: rotate 4s linear infinite; |
| | | pointer-events: none; |
| | | } |
| | | |
| | | /* 外层扩散光效(增强存在感) */ |
| | | .fixed-float-window::before { |
| | | content: ""; |
| | | position: absolute; |
| | | width: calc(100% + 25rpx); |
| | | height: calc(100% + 25rpx); |
| | | border-radius: 50%; |
| | | /* 模糊光效 */ |
| | | background: radial-gradient(circle, rgba(255,215,0,0.5) 0%, rgba(255,215,0,0) 70%); |
| | | /* 呼吸式缩放动画 */ |
| | | animation: pulse 3s ease-in-out infinite; |
| | | pointer-events: none; |
| | | content: ""; |
| | | position: absolute; |
| | | width: calc(100% + 25rpx); |
| | | height: calc(100% + 25rpx); |
| | | border-radius: 50%; |
| | | /* 模糊光效 */ |
| | | background: radial-gradient(circle, rgba(255, 215, 0, 0.5) 0%, rgba(255, 215, 0, 0) 70%); |
| | | /* 呼吸式缩放动画 */ |
| | | animation: pulse 3s ease-in-out infinite; |
| | | pointer-events: none; |
| | | } |
| | | |
| | | /* 旋转动画 */ |
| | | @keyframes rotate { |
| | | 0% { transform: rotate(0deg); } |
| | | 100% { transform: rotate(360deg); } |
| | | 0% { |
| | | transform: rotate(0deg); |
| | | } |
| | | |
| | | 100% { |
| | | transform: rotate(360deg); |
| | | } |
| | | } |
| | | |
| | | /* 呼吸扩散动画 */ |
| | | @keyframes pulse { |
| | | 0%, 100% { |
| | | transform: scale(1); |
| | | opacity: 0.3; |
| | | } |
| | | 50% { |
| | | transform: scale(1.15); |
| | | opacity: 0.6; |
| | | } |
| | | |
| | | 0%, |
| | | 100% { |
| | | transform: scale(1); |
| | | opacity: 0.3; |
| | | } |
| | | |
| | | 50% { |
| | | transform: scale(1.15); |
| | | opacity: 0.6; |
| | | } |
| | | } |
| | | |
| | | .float-text { |
| | | color: rgba(255, 215, 0, 0.95); /* 文字更亮 */ |
| | | font-size: 26rpx; |
| | | font-weight: bold; /* 加粗文字 */ |
| | | margin-top: 8rpx; |
| | | color: rgba(255, 215, 0, 0.95); |
| | | /* 文字更亮 */ |
| | | font-size: 26rpx; |
| | | font-weight: bold; |
| | | /* 加粗文字 */ |
| | | margin-top: 8rpx; |
| | | } |
| | | |
| | | .fixed-float-window:active { |
| | | transform: scale(0.95); |
| | | transform: scale(0.95); |
| | | } |
| | | </style> |
| | |
| | | <template> |
| | | <view class="user"> |
| | | <!-- 个人信息 --> |
| | | <view class="status_bar"> |
| | | <!-- 这里是状态栏 --> |
| | | </view> |
| | | <view class="header" @click="userDetail" :style="{ backgroundImage: `url(${base64image2.userInfoBg})` }"> |
| | | <view class="head-1"> |
| | | <image v-if="userInfo.face" :src="endpoint + '/' + userInfo.face"></image> |
| | | <image v-else :src="userImage"></image> |
| | | <view class="header-wrapper" @click="userDetail" |
| | | :style="{ backgroundColor: '#e9cc80', backgroundImage: `url(${base64image2.userInfoBg})` }"> |
| | | <view class="status_bar"> |
| | | <!-- 这里是状态栏 --> |
| | | </view> |
| | | <view class="head-2" v-if="userInfo.id"> |
| | | <view class="user-name">{{ userInfo.nickName }}</view> |
| | | <view class="header"> |
| | | <view class="head-1"> |
| | | <image v-if="userInfo.face" :src="endpoint + '/' + userInfo.face"></image> |
| | | <image v-else :src="userImage"></image> |
| | | </view> |
| | | <view class="head-2" v-if="userInfo.id"> |
| | | <view class="user-name">{{ userInfo.nickName }}</view> |
| | | <!-- <view class="member-name"> 会员名: {{ userInfo.username ? userInfo.username : '未设置' }}</view> --> |
| | | </view> |
| | | <view class="head-2" v-else> |
| | | <view class="user-name">登录/注册</view> |
| | | </view> |
| | | <u-icon style="display: flex;align-items: flex-start;" name="arrow-right"></u-icon> |
| | | </view> |
| | | <view class="head-2" v-else> |
| | | <view class="user-name">登录/注册</view> |
| | | </view> |
| | | <u-icon style="display: flex;align-items: flex-start;" name="arrow-right"></u-icon> |
| | | </view> |
| | | <!-- <button type="default" @click="goTOSuccess">立即查看</button> --> |
| | | <view class="member-gradient-bg" v-if="prizeActivity.enableStatus === 'ON'" |
| | | :style="{ backgroundImage: `url(${base64image.prizeActivityBg})` }" |
| | | > |
| | | <view class="member-gradient-bg" @click="gotoPrizeActivity" > |
| | | <!-- <view class="activity-content"> |
| | | |
| | | <view class="activity-icon"> |
| | | <view class="floating-btn-content"> |
| | | <text class="floating-btn-icon">🎁</text> |
| | | |
| | | <!-- 积分,优惠券,关注, --> |
| | | <div class="pointBox1"> |
| | | <view class="point"> |
| | | <view class="point-col" @click="navigateTo('/pages/cart/coupon/myCoupon')"> |
| | | <view class="point-item"> |
| | | <text class="label">优惠券</text> |
| | | <text class="value">{{ couponNum || 0 }}</text> |
| | | <text class="label">张</text> |
| | | </view> |
| | | </view> |
| | | |
| | | <view class="point-col" @click="navigateTo('/pages/mine/deposit/operation')"> |
| | | <view class="point-item"> |
| | | <text class="label">余额</text> |
| | | <text class="value">{{ walletNum | unitPrice }}</text> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | |
| | | <view class="activity-info"> |
| | | <p class="activity-name">{{ prizeActivity.activityName }}</p> |
| | | <p class="activity-desc">{{ prizeActivity.activityDes }}</p> |
| | | <p class="activity-desc">{{ formatDate(prizeActivity.beginTime) }} - {{ formatDate(prizeActivity.endTime)}}</p> |
| | | <!-- 我的订单,代付款 --> |
| | | <view class="order"> |
| | | <view class="order-header" @click="navigateTo('/pages/order/myOrder?status=0')"> |
| | | <view class="left">我的订单</view> |
| | | <view class="right"> |
| | | <text>全部订单</text> |
| | | <u-icon name="arrow-right" size="24" color="#999"></u-icon> |
| | | </view> |
| | | </view> |
| | | <view class="order-content"> |
| | | <view class="order-item" @click="navigateTo('/pages/order/myOrder?status=1')"> |
| | | <view class="icon-box"> |
| | | <image src="/static/tool/待付款.png" mode="aspectFit"></image> |
| | | </view> |
| | | <view>待付款</view> |
| | | </view> |
| | | <view class="order-item" @click="navigateTo('/pages/order/myOrder?status=2')"> |
| | | <view class="icon-box"> |
| | | <image src="/static/tool/待发货.png" mode="aspectFit"></image> |
| | | </view> |
| | | <view>待发货</view> |
| | | </view> |
| | | <view class="order-item" @click="navigateTo('/pages/order/myOrder?status=3')"> |
| | | <view class="icon-box"> |
| | | <image src="/static/tool/待收货.png" mode="aspectFit"></image> |
| | | </view> |
| | | <view>待收货</view> |
| | | </view> |
| | | <view class="order-item" @click="navigateTo('/pages/order/evaluate/myEvaluate')"> |
| | | <view class="icon-box"> |
| | | <image src="/static/tool/评价中心.png" mode="aspectFit"></image> |
| | | </view> |
| | | <view>待评价</view> |
| | | </view> |
| | | <view class="order-item" @click="navigateTo('/pages/order/afterSales/afterSales')"> |
| | | <view class="icon-box"> |
| | | <image src="/static/tool/我的订单-退货_售后.png" mode="aspectFit"></image> |
| | | </view> |
| | | <view>售后</view> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | <view class="activity-enter"> |
| | | <text class="enter-text">立即参与</text> |
| | | <u-icon name="arrow-right"></u-icon> |
| | | </view> |
| | | </view> --> |
| | | </div> |
| | | </view> |
| | | </view> |
| | | <!-- 积分,优惠券,关注, --> |
| | | <div class="pointBox box"> |
| | | <u-row text-align="center" gutter="16" class="point"> |
| | | <u-col text-align="center" span="4" @click="navigateTo('/pages/mine/deposit/operation')"> |
| | | <view>余额</view> |
| | | <view class="money">{{ walletNum | unitPrice }}</view> |
| | | </u-col> |
| | | <view class="member-gradient-bg" v-if="prizeActivity.enableStatus === 'ON'" |
| | | :style="{ backgroundImage: `url(${base64image.prizeActivityBg})` }"> |
| | | <view class="member-gradient-bg" @click="gotoPrizeActivity"> |
| | | </view> |
| | | </view> |
| | | |
| | | <u-col text-align="center" span="4" @click="navigateTo('/pages/cart/coupon/myCoupon')"> |
| | | <view>优惠券</view> |
| | | <view>{{ couponNum || 0 }}</view> |
| | | </u-col> |
| | | |
| | | <u-col text-align="center" span="4" @click="navigateTo('/pages/mine/myTracks')"> |
| | | <view>足迹</view> |
| | | <view>{{ footNum || 0 }}</view> |
| | | </u-col> |
| | | </u-row> |
| | | <!-- 我的订单,代付款 --> |
| | | <view class="order"> |
| | | <view class="order-item" @click="navigateTo('/pages/order/myOrder?status=1')"> |
| | | <div class="bag bag2"> |
| | | <u-icon name="bag-fill" size="35" color="#fff"></u-icon> |
| | | </div> |
| | | <view>待付款</view> |
| | | <!-- 视频相关, --> |
| | | <!-- <div class="pointBox box" style="margin-top: 20rpx;"> |
| | | <view class="order-content"> |
| | | <view class="order-item" @click="jumpToVideoHome()"> |
| | | <view class="icon-box"> |
| | | <text class="iconfont"></text> |
| | | </view> |
| | | <view>我的视频</view> |
| | | </view> |
| | | <view class="order-item" @click="navigateTo('/pages/order/myOrder?status=3')"> |
| | | <div class="bag bag3"> |
| | | <u-icon name="car-fill" size="35" color="#fff"></u-icon> |
| | | </div> |
| | | <view>待收货</view> |
| | | <view class="order-item" @click="navigateTo('/pages/mine/myAttention')"> |
| | | <view class="icon-box"> |
| | | <image src="/static/mine/myfavorite.png" mode="aspectFit"></image> |
| | | </view> |
| | | <view>我的关注</view> |
| | | </view> |
| | | <view class="order-item" @click="navigateTo('/pages/order/evaluate/myEvaluate')"> |
| | | <div class="bag bag4"> |
| | | <u-icon name="star-fill" size="35" color="#fff"></u-icon> |
| | | </div> |
| | | <view>待评价</view> |
| | | </view> |
| | | <view class="order-item" @click="navigateTo('/pages/order/afterSales/afterSales')"> |
| | | <div class="bag bag5"> |
| | | <u-icon name="server-fill" size="35" color="#fff"></u-icon> |
| | | </div> |
| | | <view>售后</view> |
| | | </view> |
| | | <view class="order-item" @click="navigateTo('/pages/order/myOrder?status=0')"> |
| | | <div class="bag bag1"> |
| | | <u-icon name="order" size="35" color="#fff"></u-icon> |
| | | </div> |
| | | <view>我的订单</view> |
| | | <view class="order-item" @click="navigateTo('/pages/mine/activity/myActivity')"> |
| | | <view class="icon-box"> |
| | | <image src="/static/mine/prize-activity.png" mode="aspectFit"></image> |
| | | </view> |
| | | <view>我的活动</view> |
| | | </view> |
| | | </view> |
| | | </div> |
| | | |
| | | <!-- 视频相关, --> |
| | | <div class="pointBox box" style="margin-top: 20rpx;"> |
| | | <view class="order"> |
| | | <view class="order-item" @click="jumpToVideoHome()"> |
| | | <view> |
| | | <text class="iconfont"></text> |
| | | </view> |
| | | <view>我的视频</view> |
| | | </view> |
| | | <view class="order-item" @click="navigateTo('/pages/mine/myAttention')"> |
| | | <view> |
| | | <text class="iconfont"></text> |
| | | </view> |
| | | <view>我的关注</view> |
| | | </view> |
| | | <!-- <view class="order-item" @click="navigateTo('/pages/mine/myCollect/myCollect')"> |
| | | <view> |
| | | <text class="iconfont"></text> |
| | | </view> |
| | | <view>收藏列表</view> |
| | | </view --> |
| | | <view class="order-item" @click="navigateTo('/pages/mine/activity/myActivity')"> |
| | | <view> |
| | | <text class="iconfont"></text> |
| | | </view> |
| | | <view>我的活动</view> |
| | | </view> |
| | | <!-- <view class="order-item" @click="navigateTo('/pages/mine/myTracks')"> |
| | | <view> |
| | | <text class="iconfont"></text> |
| | | </view> |
| | | <view>浏览记录</view> |
| | | </view> --> |
| | | </view> |
| | | </div> |
| | | |
| | | </div> --> |
| | | |
| | | <!-- 常用工具 --> |
| | | <view class="pointBox box" style="margin-top: 20rpx;"> |
| | | <tool /> |
| | | </view> |
| | | <view class="pointBox box" style="margin-top: 20rpx;"> |
| | | <tool /> |
| | | </view> |
| | | <!-- 撑起下方 --> |
| | | <view style="height:64px;"> |
| | | |
| | | </view> |
| | | <custom-tabbar bgColor="#ffffff" selected="my"></custom-tabbar> |
| | | |
| | | <view style="height:64px;"> |
| | | |
| | | </view> |
| | | <custom-tabbar bgColor="#ffffff" selected="my"></custom-tabbar> |
| | | |
| | | </view> |
| | | </template> |
| | | <script> |
| | | import '@/pages/subComponents/uview-components/uview-ui'; |
| | | import tool from "@/pages/tabbar/user/utils/tool.vue"; |
| | | import { getSTSToken } from "@/api/common.js"; |
| | | import { getCouponsNum, getFootprintNum,bindMemberAndStore } from "@/api/members.js"; |
| | | import { getCouponsNum, getFootprintNum, bindMemberAndStore } from "@/api/members.js"; |
| | | import { getUserWallet } from "@/api/members"; |
| | | import configs from '@/config/config' |
| | | import storage from '@/utils/storage.js' |
| | | import { getSessionId, userAction } from "@/api/userAction.js"; |
| | | import {getONPrizeActivity} from "@/api/prize-activity"; |
| | | import { getONPrizeActivity } from "@/api/prize-activity"; |
| | | import UIcon from "../../subComponents/uview-components/uview-ui/components/u-icon/u-icon.vue"; |
| | | import base64image from '@/static/mine/base64image.js'; |
| | | import base64image2 from '@/static/mine/base64image2.js'; |
| | |
| | | }, |
| | | data() { |
| | | return { |
| | | base64image, |
| | | base64image2, |
| | | base64image, |
| | | base64image2, |
| | | prizeActivity: {}, |
| | | endpoint: '', |
| | | endpoint: '', |
| | | configs, |
| | | userImage:configs.defaultUserPhoto, |
| | | userImage: configs.defaultUserPhoto, |
| | | coverTransform: "translateY(0px)", |
| | | coverTransition: "0s", |
| | | moving: false, |
| | |
| | | couponNum: "", |
| | | footNum: "", |
| | | walletNum: "", |
| | | pageSessionNo:"", |
| | | actionParam:{ |
| | | sessionId:'', |
| | | actionType:"PAGE", |
| | | joinType:"SELF", |
| | | pageCode:"TBA_BAR_MY", |
| | | pageParams:"{}", |
| | | pageStatus:"JOIN", |
| | | pageType:"DETAIL" |
| | | } |
| | | pageSessionNo: "", |
| | | actionParam: { |
| | | sessionId: '', |
| | | actionType: "PAGE", |
| | | joinType: "SELF", |
| | | pageCode: "TBA_BAR_MY", |
| | | pageParams: "{}", |
| | | pageStatus: "JOIN", |
| | | pageType: "DETAIL" |
| | | } |
| | | }; |
| | | }, |
| | | onLoad(option) { |
| | |
| | | } |
| | | } |
| | | this.initCOS() |
| | | }, |
| | | }, |
| | | onUnload() { |
| | | let param = Object.assign({}, this.actionParam); |
| | | if (this.sendOnShow)return |
| | | let param = Object.assign({}, this.actionParam); |
| | | if (this.sendOnShow) return |
| | | param.pageStatus = "LEAVE" |
| | | userAction(param) |
| | | }, |
| | | onHide() { |
| | | this.startHidenTime = Date.now() |
| | | let param =Object.assign({}, this.actionParam); |
| | | let param = Object.assign({}, this.actionParam); |
| | | this.sendOnShow = true; |
| | | param.pageStatus = "LEAVE" |
| | | userAction(param) |
| | | }, |
| | | // onLoad(options) { |
| | | // |
| | | // this.initCOS() |
| | | // |
| | | // this.initCOS() |
| | | // }, |
| | | onShow() { |
| | | this.getONPrizeActivity(); |
| | | getSessionId().then(res=>{ |
| | | this.pageSessionNo = res.data.data |
| | | this.actionParam.sessionId = res.data.data |
| | | if(this.pageSessionNo){ |
| | | let param = Object.assign({}, this.actionParam); |
| | | param.sessionId = this.pageSessionNo |
| | | userAction(param) |
| | | } |
| | | }) |
| | | getSessionId().then(res => { |
| | | this.pageSessionNo = res.data.data |
| | | this.actionParam.sessionId = res.data.data |
| | | if (this.pageSessionNo) { |
| | | let param = Object.assign({}, this.actionParam); |
| | | param.sessionId = this.pageSessionNo |
| | | userAction(param) |
| | | } |
| | | }) |
| | | |
| | | this.userInfo = this.$options.filters.isLogin() || {}; |
| | | if (this.$options.filters.isLogin("auth")) { |
| | |
| | | this.footNum = 0; |
| | | } |
| | | |
| | | let shareStoreId = uni.getStorageSync('shareStoreId'); |
| | | let shareTime = uni.getStorageSync('shareTime'); |
| | | console.log('从缓存读取参数:', { shareStoreId, shareTime }); |
| | | if (shareStoreId && shareTime) { |
| | | console.log('检测到有效参数,调用后端接口'); |
| | | this.bindMemberAndStore(shareStoreId, shareTime); |
| | | } else { |
| | | console.log('无有效参数,执行正常逻辑'); |
| | | } |
| | | let shareStoreId = uni.getStorageSync('shareStoreId'); |
| | | let shareTime = uni.getStorageSync('shareTime'); |
| | | console.log('从缓存读取参数:', { shareStoreId, shareTime }); |
| | | if (shareStoreId && shareTime) { |
| | | console.log('检测到有效参数,调用后端接口'); |
| | | this.bindMemberAndStore(shareStoreId, shareTime); |
| | | } else { |
| | | console.log('无有效参数,执行正常逻辑'); |
| | | } |
| | | }, |
| | | onPullDownRefresh() { |
| | | this.getUserOrderNum(); |
| | |
| | | const day = String(date.getDate()).padStart(2, '0'); |
| | | return `${year}年${month}月${day}日`; // 转换为中文格式 |
| | | }, |
| | | getONPrizeActivity(){ |
| | | getONPrizeActivity().then(res =>{ |
| | | if(res.statusCode=== 200){ |
| | | getONPrizeActivity() { |
| | | getONPrizeActivity().then(res => { |
| | | if (res.statusCode === 200) { |
| | | //后端没查到开启的抽奖活动 res.data.data.id值为null |
| | | this.prizeActivity = res.data.data; // 存储完整活动数据 |
| | | if (this.prizeActivity.endTime) { |
| | | }else { |
| | | } else { |
| | | this.prizeActivity = {}; // 无活动时清空 |
| | | } |
| | | } |
| | | }) |
| | | }, |
| | | gotoPrizeActivity(){ |
| | | gotoPrizeActivity() { |
| | | uni.navigateTo({ |
| | | url:'/pages/prize/PrizeDetail/PrizeDetail?id=' + this.prizeActivity.id, |
| | | url: '/pages/prize/PrizeDetail/PrizeDetail?id=' + this.prizeActivity.id, |
| | | }); |
| | | }, |
| | | // 解析URL参数 |
| | | parseUrlParams(url) { |
| | | const params = {}; |
| | | // 处理可能存在的hash(如果有的话) |
| | | const cleanUrl = url.split('#')[0]; |
| | | const queryStr = cleanUrl.split('?')[1] || ''; |
| | | // 解析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) : ''; |
| | | } |
| | | }); |
| | | queryStr.split('&').forEach(pair => { |
| | | const [key, value] = pair.split('='); |
| | | if (key) { |
| | | // 如果值存在,则解码,否则设为空字符串 |
| | | params[key] = value ? decodeURIComponent(value) : ''; |
| | | } |
| | | }); |
| | | |
| | | return params; |
| | | }, |
| | | async bindMemberAndStore(shareStoreId, shareTime){ |
| | | let form ={ |
| | | return params; |
| | | }, |
| | | async bindMemberAndStore(shareStoreId, shareTime) { |
| | | let form = { |
| | | shareStoreId: shareStoreId, |
| | | shareTime: shareTime |
| | | } |
| | |
| | | // } |
| | | try { |
| | | const res = await bindMemberAndStore(form); |
| | | if(res.statusCode === 200){ |
| | | if (res.statusCode === 200) { |
| | | //清除缓存 |
| | | uni.removeStorageSync('shareStoreId'); |
| | | uni.removeStorageSync('shareTime'); |
| | | } |
| | | } |
| | | catch(error) { |
| | | catch (error) { |
| | | console.error('出错:', error); |
| | | }; |
| | | }, |
| | | // goTOSuccess(){ |
| | | // uni.redirectTo({ |
| | | // url:"/pages/cart/payment/success?paymentMethod=WECHAT" + |
| | | // "&payPrice=" + |
| | | // 10, |
| | | // }); |
| | | // }, |
| | | // 初始化腾讯云cos客户端 |
| | | initCOS() { |
| | | // 调用后端获取sts临时访问凭证 |
| | | getSTSToken().then(res => { |
| | | this.endpoint = res.data.data.endpoint |
| | | }) |
| | | }, |
| | | // 跳转视频主页 |
| | | jumpToVideoHome() { |
| | | uni.navigateTo({ |
| | | url: '/pages/video/home-page?authorId=' + storage.getUserInfo().id |
| | | }); |
| | | }, |
| | | // goTOSuccess(){ |
| | | // uni.redirectTo({ |
| | | // url:"/pages/cart/payment/success?paymentMethod=WECHAT" + |
| | | // "&payPrice=" + |
| | | // 10, |
| | | // }); |
| | | // }, |
| | | // 初始化腾讯云cos客户端 |
| | | initCOS() { |
| | | // 调用后端获取sts临时访问凭证 |
| | | getSTSToken().then(res => { |
| | | this.endpoint = res.data.data.endpoint |
| | | }) |
| | | }, |
| | | // 跳转视频主页 |
| | | jumpToVideoHome() { |
| | | uni.navigateTo({ |
| | | url: '/pages/video/home-page?authorId=' + storage.getUserInfo().id |
| | | }); |
| | | }, |
| | | /** |
| | | * 统一跳转接口,拦截未登录路由 |
| | | * navigator标签现在默认没有转场动画,所以用view |
| | |
| | | </script> |
| | | |
| | | <style lang="scss" scoped> |
| | | @import url("/pages/subComponents/static/bgStyle.css"); |
| | | @import url("/pages/subComponents/static/bgStyle.css"); |
| | | |
| | | html, |
| | | body { |
| | | overflow: auto; |
| | | } |
| | | .floating-btn-content { |
| | | display: flex; |
| | | flex-direction: column; |
| | | align-items: center; |
| | | justify-content: center; |
| | | z-index: 1; |
| | | position: relative; |
| | | } |
| | | .floating-btn-icon { |
| | | font-size: 75rpx; |
| | | color: white; |
| | | filter: drop-shadow(0 2rpx 4rpx rgba(0, 0, 0, 0.2)); |
| | | margin-bottom: 5rpx; |
| | | } |
| | | .floating-btn-text { |
| | | font-size: 20rpx; |
| | | color: white; |
| | | z-index: 1; |
| | | position: relative; |
| | | text-shadow: 0 1rpx 3rpx rgba(0, 0, 0, 0.2); |
| | | white-space: nowrap; |
| | | } |
| | | |
| | | .floating-btn-content { |
| | | display: flex; |
| | | flex-direction: column; |
| | | align-items: center; |
| | | justify-content: center; |
| | | z-index: 1; |
| | | position: relative; |
| | | } |
| | | |
| | | .floating-btn-icon { |
| | | font-size: 75rpx; |
| | | color: white; |
| | | filter: drop-shadow(0 2rpx 4rpx rgba(0, 0, 0, 0.2)); |
| | | margin-bottom: 5rpx; |
| | | } |
| | | |
| | | .floating-btn-text { |
| | | font-size: 20rpx; |
| | | color: white; |
| | | z-index: 1; |
| | | position: relative; |
| | | text-shadow: 0 1rpx 3rpx rgba(0, 0, 0, 0.2); |
| | | white-space: nowrap; |
| | | } |
| | | |
| | | .member-gradient-bg { |
| | | width: 98%; |
| | | height: 250rpx; |
| | | margin: 1% 1%; |
| | | border-radius: 24rpx; |
| | | box-shadow: 0 8rpx 30rpx rgba(255, 82, 82, 0.3); |
| | | transition: all 0.3s ease; |
| | | background-size: cover; |
| | | background-position: center; |
| | | background-repeat: no-repeat; |
| | | &:active { |
| | | transform: scale(0.98); |
| | | } |
| | | width: 98%; |
| | | height: 250rpx; |
| | | margin: 1% 1%; |
| | | border-radius: 24rpx; |
| | | box-shadow: 0 8rpx 30rpx rgba(255, 82, 82, 0.3); |
| | | transition: all 0.3s ease; |
| | | background-size: cover; |
| | | background-position: center; |
| | | background-repeat: no-repeat; |
| | | |
| | | &:active { |
| | | transform: scale(0.98); |
| | | } |
| | | |
| | | cursor: pointer; // 增加点击指针样式 |
| | | overflow: hidden; // 防止内容溢出 |
| | | |
| | | .activity-content { |
| | | width: 100%; |
| | | height: 100%; |
| | |
| | | margin-right: 24rpx; |
| | | border-radius: 16rpx; |
| | | overflow: hidden; |
| | | |
| | | image { |
| | | width: 100%; |
| | | height: 100%; |
| | |
| | | // 活动信息区域 |
| | | .activity-info { |
| | | flex: 1; |
| | | |
| | | .activity-name { |
| | | font-size: 32rpx; |
| | | font-weight: bold; |
| | | color: #fff; |
| | | margin: 0 0 8rpx 0; |
| | | text-shadow: 0 2rpx 4rpx rgba(0,0,0,0.1); |
| | | text-shadow: 0 2rpx 4rpx rgba(0, 0, 0, 0.1); |
| | | } |
| | | |
| | | .activity-desc { |
| | | font-size: 22rpx; |
| | | color: rgba(255,255,255,0.9); |
| | | color: rgba(255, 255, 255, 0.9); |
| | | margin: 0; |
| | | } |
| | | } |
| | |
| | | display: flex; |
| | | align-items: center; |
| | | margin-top: 12rpx; |
| | | |
| | | .countdown-label { |
| | | font-size: 20rpx; |
| | | color: rgba(255,255,255,0.8); |
| | | color: rgba(255, 255, 255, 0.8); |
| | | margin-right: 8rpx; |
| | | } |
| | | |
| | | .countdown-box { |
| | | display: flex; |
| | | align-items: center; |
| | | } |
| | | |
| | | .countdown-item { |
| | | display: inline-block; |
| | | width: 36rpx; |
| | | height: 36rpx; |
| | | line-height: 36rpx; |
| | | background: rgba(255,255,255,0.3); |
| | | background: rgba(255, 255, 255, 0.3); |
| | | border-radius: 8rpx; |
| | | color: #fff; |
| | | font-size: 20rpx; |
| | | text-align: center; |
| | | margin: 0 4rpx; |
| | | } |
| | | |
| | | .countdown-sep { |
| | | color: #fff; |
| | | font-size: 22rpx; |
| | |
| | | .activity-enter { |
| | | display: flex; |
| | | align-items: center; |
| | | |
| | | .enter-text { |
| | | font-size: 24rpx; |
| | | color: #fff; |
| | |
| | | padding: 0 40rpx; |
| | | box-sizing: border-box; |
| | | } |
| | | |
| | | /* 会员信息 */ |
| | | .vip-info { |
| | | flex: 1; |
| | | |
| | | .vip-level { |
| | | font-size: 40rpx; |
| | | font-weight: bold; |
| | |
| | | line-height: 1; |
| | | text-shadow: 0 2rpx 4rpx rgba(0, 0, 0, 0.1); |
| | | } |
| | | |
| | | |
| | | .vip-validity { |
| | | font-size: 26rpx; |
| | | color: rgba(255, 255, 255, 0.9); |
| | |
| | | width: 60rpx; |
| | | height: 60rpx; |
| | | } |
| | | |
| | | /* 特权标识 */ |
| | | .vip-badge { |
| | | padding: 8rpx 20rpx; |
| | |
| | | } |
| | | |
| | | .user { |
| | | background: #e7e7e7; |
| | | background: #e7e7e7; |
| | | |
| | | .header-wrapper { |
| | | background-size: 100% auto; |
| | | background-repeat: no-repeat; |
| | | background-position: bottom; |
| | | } |
| | | |
| | | .header { |
| | | max-width: 100%; |
| | | padding: calc(50rpx + var(--status-bar-height)) 30rpx 0 6%; |
| | | height: calc(360rpx); |
| | | background-size: cover; |
| | | border-bottom-left-radius: 30rpx; |
| | | border-bottom-right-radius: 30rpx; |
| | | background-size: cover; |
| | | background-position: center; |
| | | background-repeat: no-repeat; |
| | | color: #ffffff; |
| | | padding: 100rpx 30rpx 0 5%; |
| | | display: flex; |
| | | justify-content: space-between; |
| | | box-sizing: border-box; |
| | | position: relative; |
| | | overflow: hidden; |
| | | |
| | | .head-1 { |
| | | text-align: center; |
| | | width: 152rpx; |
| | | width: 140rpx; |
| | | position: relative; |
| | | display: flex; |
| | | align-items: center; |
| | | margin-top: 20rpx; |
| | | |
| | | image { |
| | | width: 152rpx; |
| | | height: 144rpx; |
| | | width: 140rpx; |
| | | height: 140rpx; |
| | | border-radius: 50%; |
| | | margin-bottom: 30rpx; |
| | | border: 3px solid #fff; |
| | | box-sizing: border-box; |
| | | } |
| | | |
| | | .edti-head { |
| | |
| | | } |
| | | |
| | | .point { |
| | | text-align: center; |
| | | height: 160rpx; |
| | | width: 100%; |
| | | height: 120rpx; |
| | | display: flex; |
| | | align-items: center; |
| | | |
| | | font-size: $font-sm; |
| | | // #ifdef MP-WEIXIN |
| | | padding: 24rpx; |
| | | .point-col { |
| | | flex: 1; |
| | | position: relative; |
| | | display: flex; |
| | | justify-content: center; |
| | | align-items: center; |
| | | |
| | | // #endif |
| | | .u-col { |
| | | view { |
| | | color: $u-main-color; |
| | | font-size: 28rpx; |
| | | &:not(:last-child)::after { |
| | | content: ""; |
| | | position: absolute; |
| | | left: 100%; |
| | | top: 50%; |
| | | transform: translate(-50%, -50%); |
| | | height: 40rpx; |
| | | width: 1rpx; |
| | | background-color: #ccc; |
| | | } |
| | | |
| | | view:last-child { |
| | | margin-top: 8rpx; |
| | | color: $main-color; |
| | | font-size: $font-lg; |
| | | .point-item { |
| | | display: flex; |
| | | flex-direction: row; |
| | | justify-content: center; |
| | | align-items: baseline; |
| | | |
| | | .value { |
| | | color: #1f1b13; |
| | | font-size: 34rpx; |
| | | font-weight: bold; |
| | | margin: 0 20rpx 0 20rpx; |
| | | } |
| | | |
| | | .label { |
| | | color: #999; |
| | | font-size: 24rpx; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | .order { |
| | | height: 140rpx; |
| | | .order-content { |
| | | height: 160rpx; |
| | | text-align: center; |
| | | font-size: $font-sm; |
| | | display: flex; |
| | |
| | | align-items: center; |
| | | padding: 0 3%; |
| | | color: #666; |
| | | |
| | | .order-item { |
| | | position: relative; |
| | | line-height: 1.5; |
| | | display: flex; |
| | | flex-direction: column; |
| | | align-items: center; |
| | | justify-content: center; |
| | | |
| | | .icon-box { |
| | | width: 60rpx; |
| | | height: 60rpx; |
| | | margin-bottom: 10rpx; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: center; |
| | | |
| | | image { |
| | | width: 100%; |
| | | height: 100%; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | .order { |
| | | background: #fff; |
| | | border-radius: 20rpx; |
| | | box-shadow: 0 4rpx 24rpx 0 #f6f6f6; |
| | | margin: 0 20rpx; |
| | | |
| | | .order-item { |
| | | position: relative; |
| | | line-height: 2em; |
| | | width: 96rpx; |
| | | padding-bottom: 20rpx; |
| | | |
| | | :first-child { |
| | | font-size: 48rpx; |
| | | margin-bottom: 12rpx; |
| | | .order-header { |
| | | display: flex; |
| | | justify-content: space-between; |
| | | align-items: center; |
| | | padding: 30rpx 30rpx 10rpx 30rpx; |
| | | |
| | | .left { |
| | | font-size: 32rpx; |
| | | font-weight: bold; |
| | | color: #333; |
| | | } |
| | | |
| | | .right { |
| | | display: flex; |
| | | align-items: center; |
| | | font-size: 24rpx; |
| | | color: #999; |
| | | |
| | | text { |
| | | margin-right: 4rpx; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | } |
| | | |
| | | .pointBox1 { |
| | | position: relative; |
| | | z-index: 10; |
| | | background: #f5f5f5; |
| | | border-radius: 40rpx 40rpx 0 0; |
| | | box-shadow: 0 -4rpx 24rpx 0 rgba(0, 0, 0, 0.05); |
| | | margin-top: 40rpx; |
| | | } |
| | | |
| | | .box { |
| | | width: 95%; |
| | | margin: auto; |
| | | background: #fff; |
| | | border-radius: 20rpx; |
| | | box-shadow: 0 4rpx 24rpx 0 #f6f6f6; |
| | | width: 95%; |
| | | margin: auto; |
| | | background: #fff; |
| | | border-radius: 20rpx; |
| | | box-shadow: 0 4rpx 24rpx 0 #f6f6f6; |
| | | } |
| | | |
| | | .user-name { |
| | | font-size: 34rpx; |
| | | font-weight: bolder; |
| | | color: #1f1b13; |
| | | } |
| | | |
| | | .bag { |
| | | width: 56rpx; |
| | | height: 56rpx; |
| | | border-radius: 50%; |
| | | margin: 0 auto; |
| | | } |
| | | |
| | | .bag1 { |
| | | background: #ff4a48; |
| | | } |
| | | |
| | | .bag2 { |
| | | background: #ff992f; |
| | | } |
| | | |
| | | .bag3 { |
| | | background: #009ee0; |
| | | } |
| | | |
| | | .bag4 { |
| | | background: #00d5d5; |
| | | } |
| | | |
| | | .bag5 { |
| | | background: #28ccb0; |
| | | .member-name { |
| | | margin-top: 25rpx; |
| | | font-size: 28rpx; |
| | | color: #8d867a; |
| | | } |
| | | </style> |
| | |
| | | |
| | | <view class="paddingBox"> |
| | | <view class="interact-container"> |
| | | <view class="interact-item" @click="navigateTo('/pages/mine/address/addressManage')"> |
| | | <image src="/static/mine/myaddress.png" mode=""></image> |
| | | <view>地址管理</view> |
| | | |
| | | <view class="interact-item" @click="navigateTo('/pages/mine/set/setUp')"> |
| | | <image src="/static/tool/设置.png" mode=""></image> |
| | | <view>设置</view> |
| | | </view> |
| | | |
| | | <!-- <view class="interact-item" @click="navigateTo('/pages/mine/myTracks')"> |
| | | <image src="/static/mine/logistics.png" mode=""></image> |
| | | <view>我的足迹</view> |
| | | </view> --> |
| | | <view class="interact-item" @click="navigateTo('/pages/mine/address/addressManage')"> |
| | | <image src="/static/tool/收货地址.png" mode=""></image> |
| | | <view>收货地址</view> |
| | | </view> |
| | | |
| | | <view class="interact-item" @click="navigateTo('/pages/order/evaluate/myEvaluate')"> |
| | | <view class="interact-item" @click="navigateTo('/pages/mine/myTracks')"> |
| | | <image src="/static/tool/浏览记录.png" mode=""></image> |
| | | <view>浏览记录</view> |
| | | </view> |
| | | |
| | | <!-- <view class="interact-item" @click="navigateTo('/pages/order/evaluate/myEvaluate')"> |
| | | <image src="/static/mine/feedback.png" mode=""></image> |
| | | <view>我的评价</view> |
| | | </view> --> |
| | | |
| | | <view class="interact-item" @click="navigateTo('/pages/mine/point/myPoint')"> |
| | | <image src="/static/tool/积分.png" mode=""></image> |
| | | <view>我的积分</view> |
| | | </view> |
| | | <!-- <view class="interact-item" @click="linkMsgDetail()"> |
| | | <image src="/static/mine/mycommit.png" mode=""></image> |
| | |
| | | </view> --> |
| | | |
| | | |
| | | <!-- <view class="interact-item" @click="navigateTo('/pages/mine/myCollect')"> |
| | | <!-- <view class="interact-item" @click="navigateTo('/pages/mine/myCollect')"> |
| | | <image src="/static/mine/myfavorite.png" mode=""></image> |
| | | <view>我的关注</view> |
| | | </view> --> |
| | | |
| | | |
| | | |
| | | <view class="interact-item" @click="navigateTo('/pages/mine/point/myPoint')"> |
| | | <image src="/static/mine/mypoint.png" mode=""></image> |
| | | <view>我的积分</view> |
| | | </view> |
| | | |
| | | |
| | | <!-- <view class="interact-item" @click="distribution"> |
| | | <image src="/static/mine/distribution.png" mode=""></image> |
| | | <view>我的分销</view> |
| | | </view> --> |
| | | |
| | | <!-- <view class="interact-item" @click="navigateTo('/pages/mine/myCollect')"> |
| | | <!-- <view class="interact-item" @click="navigateTo('/pages/mine/myCollect')"> |
| | | <image src="/static/mine/shensu.png" mode=""></image> |
| | | <view>我的收藏</view> |
| | | </view> --> |
| | | |
| | | <!-- <view class="interact-item" @click="navigateTo('/pages/mine/activity/myActivity')"> |
| | | <!-- <view class="interact-item" @click="navigateTo('/pages/mine/activity/myActivity')"> |
| | | <image src="/static/mine/shensu.png" mode=""></image> |
| | | <view>我的活动</view> |
| | | </view> --> |
| | | <!-- </view>--> |
| | | <!-- </view>--> |
| | | |
| | | <view class="interact-item" v-if="isStoreManger" @click="navigateTo('/pages/mine/activity/applyActivityList')"> |
| | | <!-- <view class="interact-item" v-if="isStoreManger" @click="navigateTo('/pages/mine/activity/applyActivityList')"> |
| | | <image src="/static/mine/shensu.png" mode=""></image> |
| | | <view>申请活动</view> |
| | | </view> |
| | | </view> --> |
| | | |
| | | <!-- <view class="interact-item" @click="navigateTo('/pages/mine/myCollect/myCollect')"> |
| | | <!-- <view class="interact-item" @click="navigateTo('/pages/mine/myCollect/myCollect')"> |
| | | <image src="/static/mine/shensu.png" mode=""></image> |
| | | <view>我的收藏</view> |
| | | </view> --> |
| | | |
| | | <view class="interact-item" v-if="isStoreManger" @click="navigateTo('/pages/userPermissions/userPermissions')"> |
| | | <!-- <view class="interact-item" v-if="isStoreManger" @click="navigateTo('/pages/userPermissions/userPermissions')"> |
| | | <image src="/static/mine/shensu.png" mode=""></image> |
| | | <view>店员管理</view> |
| | | </view> |
| | | <view class="interact-item" @click="navigateTo('/pages/news/news')"> |
| | | </view> --> |
| | | <!-- <view class="interact-item" @click="navigateTo('/pages/news/news')"> |
| | | <image src="/static/mine/shensu.png" mode=""></image> |
| | | <view>快讯</view> |
| | | </view> |
| | | </view> --> |
| | | |
| | | <!-- <view class="interact-item" v-if="isStoreManger" @click="navigateTo('/pages/customerManager/customerManager')"> |
| | | <!-- <view class="interact-item" v-if="isStoreManger" @click="navigateTo('/pages/customerManager/customerManager')"> |
| | | <image src="/static/mine/shensu.png" mode=""></image> |
| | | <view>客户管理</view> |
| | | </view> --> |
| | | <view class="interact-item" @click="navigateTo('/pages/order/complain/complainList')"> |
| | | <!-- <view class="interact-item" @click="navigateTo('/pages/order/complain/complainList')"> |
| | | <image src="/static/mine/shensu.png" mode=""></image> |
| | | <view>我的投诉</view> |
| | | </view> |
| | | </view> --> |
| | | |
| | | <view class="interact-item" @click="navigateTo('/pages/cart/coupon/myCoupon')"> |
| | | <!-- <view class="interact-item" @click="navigateTo('/pages/cart/coupon/myCoupon')"> |
| | | <image src="/static/mine/mycoupon.png" mode=""></image> |
| | | <view>优惠券</view> |
| | | </view> |
| | | </view> --> |
| | | |
| | | |
| | | |
| | | |
| | | <!-- <view class="interact-item" @click="navigateTo('/pages/mine/signIn')"> |
| | | <!-- <view class="interact-item" @click="navigateTo('/pages/mine/signIn')"> |
| | | <image src="/static/mine/sign.png" mode=""></image> |
| | | <view>每日签到</view> |
| | | </view> --> |
| | | |
| | | <view class="interact-item" @click="navigateTo('/pages/cart/coupon/couponCenter')"> |
| | | <!-- <view class="interact-item" @click="navigateTo('/pages/cart/coupon/couponCenter')"> |
| | | <image src="/static/mine/couponcenter.png" mode=""></image> |
| | | <view>领券中心</view> |
| | | </view> |
| | | </view> --> |
| | | |
| | | |
| | | |
| | | <!-- <view class="interact-item" @click="navigateTo('/pages/promotion/bargain/log')"> |
| | | <!-- <view class="interact-item" @click="navigateTo('/pages/promotion/bargain/log')"> |
| | | <image src="/static/mine/kanjia.png" mode=""></image> |
| | | <view>砍价记录</view> |
| | | </view> --> |
| | | |
| | | |
| | | |
| | | <view class="interact-item" @click="navigateTo('/pages/mine/set/feedBack')"> |
| | | <!-- <view class="interact-item" @click="navigateTo('/pages/mine/set/feedBack')"> |
| | | <image src="/static/mine/feedback.png" mode=""></image> |
| | | <view>意见反馈</view> |
| | | </view> |
| | | </view> --> |
| | | |
| | | <view class="interact-item" @click="navigateTo('/pages/mine/set/editionIntro')"> |
| | | <image src="/static/mine/pointgift.png" mode=""></image> |
| | | <view>关于</view> |
| | | </view> |
| | | |
| | | |
| | | <view class="interact-item" @click="navigateTo('/pages/passport/entry/seller/index')"> |
| | | <image src="/static/mine/feedback.png" mode=""></image> |
| | | <image src="/static/tool/供应商入驻.png" mode=""></image> |
| | | <view>供应商入驻</view> |
| | | </view> |
| | | |
| | | |
| | | <view class="interact-item" @click="navigateTo('/pages/mine/set/setUp')"> |
| | | <image src="/static/mine/setting.png" mode=""></image> |
| | | <view>设置</view> |
| | | <view class="interact-item" @click="navigateTo('/pages/mine/set/editionIntro')"> |
| | | <image src="/static/tool/关于我们.png" mode=""></image> |
| | | <view>关于我们</view> |
| | | </view> |
| | | <view class="interact-item" v-if="isStoreManger" @click="navigateTo('/pages/goods-manager/goodsList/goodsList')"> |
| | | |
| | | <!-- <view class="interact-item" v-if="isStoreManger" @click="navigateTo('/pages/goods-manager/goodsList/goodsList')"> |
| | | <image src="/static/mine/setting.png" mode=""></image> |
| | | <view>商品管理</view> |
| | | </view> |
| | |
| | | <view class="interact-item" @click="navigateTo('/pages/prizeRecord/prizeRecord')"> |
| | | <image src="/static/mine/prize-record.png"></image> |
| | | <view>抽奖记录</view> |
| | | </view> |
| | | </view> --> |
| | | |
| | | </view> |
| | | </view> |
| | |
| | | </template> |
| | | |
| | | <script> |
| | | import { getUserInfo } from "@/api/members"; |
| | | import {getONPrizeActivity} from '@/api/prize-activity.js' |
| | | import { getUserInfo } from "@/api/members"; |
| | | import { getONPrizeActivity } from '@/api/prize-activity.js' |
| | | import { |
| | | distribution |
| | | } from "@/api/goods"; |
| | | import configs from "@/config/config"; |
| | | import storage from "@/utils/storage"; |
| | | distribution |
| | | } from "@/api/goods"; |
| | | import configs from "@/config/config"; |
| | | import storage from "@/utils/storage"; |
| | | |
| | | export default { |
| | | data() { |
| | | return { |
| | | prizeActivityId:'', |
| | | isStoreManger:false, |
| | | configs, |
| | | storage |
| | | export default { |
| | | data() { |
| | | return { |
| | | prizeActivityId: '', |
| | | isStoreManger: false, |
| | | configs, |
| | | storage |
| | | } |
| | | }, |
| | | onReady() { |
| | | getUserInfo().then(res => { |
| | | if (res.data.result) { |
| | | if (res.data.result.storeId) { |
| | | this.isStoreManger = true; |
| | | } else { |
| | | this.isStoreManger = false; |
| | | } |
| | | } |
| | | }, |
| | | onReady(){ |
| | | getUserInfo().then(res => { |
| | | if(res.data.result){ |
| | | if(res.data.result.storeId){ |
| | | this.isStoreManger = true; |
| | | }else{ |
| | | this.isStoreManger = false; |
| | | } |
| | | }) |
| | | this.getONPrizeActivity(); |
| | | }, |
| | | |
| | | methods: { |
| | | getONPrizeActivity() { |
| | | getONPrizeActivity().then(res => { |
| | | if (res.statusCode === 200) { |
| | | //后端没查到开启的抽奖活动 res.data.data.id值为null |
| | | this.prizeActivityId = res.data.data.id; |
| | | } |
| | | }) |
| | | this.getONPrizeActivity(); |
| | | }, |
| | | |
| | | methods: { |
| | | getONPrizeActivity(){ |
| | | getONPrizeActivity().then(res =>{ |
| | | if(res.statusCode=== 200){ |
| | | //后端没查到开启的抽奖活动 res.data.data.id值为null |
| | | this.prizeActivityId = res.data.data.id; |
| | | } |
| | | }) |
| | | }, |
| | | gotoPrizeActivity(){ |
| | | uni.navigateTo({ |
| | | url:'/pages/prize/PrizeDetail/PrizeDetail?id=' + this.prizeActivityId, |
| | | }); |
| | | }, |
| | | |
| | | handleNavigate(url) { |
| | | uni.navigateTo({ |
| | | url, |
| | | }); |
| | | }, |
| | | navigateTo(url) { |
| | | const ignores = [ |
| | | '/pages/mine/set/setUp', |
| | | '/pages/mine/set/editionIntro', |
| | | '/pages/mine/set/feedBack', |
| | | '/pages/goods-manager/goodsList/goodsList', |
| | | '/pages/mine/set/feedBack', |
| | | '/pages/mine/activity/myActivity', |
| | | '/pages/mine/myCollect/myCollect', |
| | | '/pages/mine/myCollect' |
| | | ] |
| | | if (!ignores.includes(url)) { |
| | | if (this.$options.filters.tipsToLogin('normal')) { |
| | | this.handleNavigate(url) |
| | | } |
| | | } else { |
| | | gotoPrizeActivity() { |
| | | uni.navigateTo({ |
| | | url: '/pages/prize/PrizeDetail/PrizeDetail?id=' + this.prizeActivityId, |
| | | }); |
| | | }, |
| | | |
| | | handleNavigate(url) { |
| | | uni.navigateTo({ |
| | | url, |
| | | }); |
| | | }, |
| | | navigateTo(url) { |
| | | const ignores = [ |
| | | '/pages/mine/set/setUp', |
| | | '/pages/mine/set/editionIntro', |
| | | '/pages/mine/set/feedBack', |
| | | '/pages/goods-manager/goodsList/goodsList', |
| | | '/pages/mine/set/feedBack', |
| | | '/pages/mine/activity/myActivity', |
| | | '/pages/mine/myCollect/myCollect', |
| | | '/pages/mine/myCollect' |
| | | ] |
| | | if (!ignores.includes(url)) { |
| | | if (this.$options.filters.tipsToLogin('normal')) { |
| | | this.handleNavigate(url) |
| | | } |
| | | }, |
| | | } else { |
| | | this.handleNavigate(url) |
| | | } |
| | | }, |
| | | |
| | | linkMsgDetail() { |
| | | uni.navigateTo({ |
| | | url: `/pages/mine/im/list`, |
| | | }); |
| | | }, |
| | | linkMsgDetail() { |
| | | uni.navigateTo({ |
| | | url: `/pages/mine/im/list`, |
| | | }); |
| | | }, |
| | | |
| | | distribution() { |
| | | distribution().then((res) => { |
| | | if (res.data.result) { |
| | | let type = res.data.result.distributionStatus; |
| | | if (type == "PASS") { |
| | | uni.navigateTo({ |
| | | url: "/pages/mine/distribution/home", |
| | | }); |
| | | } else if (type == "REFUSE") { |
| | | uni.navigateTo({ |
| | | url: "/pages/mine/distribution/auth", |
| | | }); |
| | | } else if (type == "RETREAT") { |
| | | uni.showToast({ |
| | | title: "您的分销资格已被清退。请联系管理员!", |
| | | duration: 2000, |
| | | icon: "none", |
| | | }); |
| | | } else { |
| | | uni.showToast({ |
| | | title: "您的信息正在审核", |
| | | duration: 2000, |
| | | icon: "none", |
| | | }); |
| | | } |
| | | } else if (!res.data.success && res.data.code == 22000) { |
| | | distribution() { |
| | | distribution().then((res) => { |
| | | if (res.data.result) { |
| | | let type = res.data.result.distributionStatus; |
| | | if (type == "PASS") { |
| | | uni.navigateTo({ |
| | | url: "/pages/mine/distribution/home", |
| | | }); |
| | | } else if (type == "REFUSE") { |
| | | uni.navigateTo({ |
| | | url: "/pages/mine/distribution/auth", |
| | | }); |
| | | } else if (type == "RETREAT") { |
| | | uni.showToast({ |
| | | title: "分销功能暂未开启", |
| | | title: "您的分销资格已被清退。请联系管理员!", |
| | | duration: 2000, |
| | | icon: "none", |
| | | }); |
| | | } else { |
| | | // 没有资格申请 先去实名认证 |
| | | uni.navigateTo({ |
| | | url: "/pages/mine/distribution/auth", |
| | | uni.showToast({ |
| | | title: "您的信息正在审核", |
| | | duration: 2000, |
| | | icon: "none", |
| | | }); |
| | | } |
| | | }); |
| | | }, |
| | | } else if (!res.data.success && res.data.code == 22000) { |
| | | uni.showToast({ |
| | | title: "分销功能暂未开启", |
| | | duration: 2000, |
| | | icon: "none", |
| | | }); |
| | | } else { |
| | | // 没有资格申请 先去实名认证 |
| | | uni.navigateTo({ |
| | | url: "/pages/mine/distribution/auth", |
| | | }); |
| | | } |
| | | }); |
| | | }, |
| | | }; |
| | | }, |
| | | }; |
| | | </script> |
| | | |
| | | <style lang="scss" scoped> |
| | | .interact-tools { |
| | | border-left: none; |
| | | border-right: none; |
| | | .interact-tools { |
| | | border-left: none; |
| | | border-right: none; |
| | | |
| | | |
| | | .interactBox { |
| | | height: 156rpx; |
| | | .interactBox { |
| | | height: 156rpx; |
| | | } |
| | | |
| | | .interact-container { |
| | | margin: 0 20rpx; |
| | | background: #fff; |
| | | border-radius: 20rpx; |
| | | box-shadow: 0 4rpx 24rpx 0 rgba($color: #f6f6f6, $alpha: 1); |
| | | |
| | | .interact-item-img { |
| | | width: 52rpx !important; |
| | | height: 52rpx !important; |
| | | // margin-bottom: !important; |
| | | margin: 0 auto 6rpx auto !important; |
| | | } |
| | | |
| | | .interact-container { |
| | | margin: 0 20rpx; |
| | | background: #fff; |
| | | border-radius: 20rpx; |
| | | box-shadow: 0 4rpx 24rpx 0 rgba($color: #f6f6f6, $alpha: 1); |
| | | image { |
| | | width: 52rpx; |
| | | height: 52rpx; |
| | | margin-bottom: 6rpx; |
| | | } |
| | | |
| | | .interact-item-img { |
| | | width: 52rpx !important; |
| | | height: 52rpx !important; |
| | | // margin-bottom: !important; |
| | | margin: 0 auto 6rpx auto !important; |
| | | } |
| | | display: flex; |
| | | align-items: center; |
| | | flex-wrap: wrap; |
| | | text-align: center; |
| | | |
| | | image { |
| | | width: 52rpx; |
| | | height: 52rpx; |
| | | margin-bottom: 6rpx; |
| | | } |
| | | |
| | | display: flex; |
| | | align-items: center; |
| | | flex-wrap: wrap; |
| | | text-align: center; |
| | | |
| | | .interact-item { |
| | | font-size: $font-sm; |
| | | width: 25%; |
| | | height: 160rpx; |
| | | padding: 30rpx; |
| | | } |
| | | .interact-item { |
| | | font-size: $font-sm; |
| | | width: 25%; |
| | | height: 160rpx; |
| | | padding: 30rpx; |
| | | } |
| | | } |
| | | } |
| | | </style> |