绿满眶商城微信小程序-uniapp
zxl
1 天以前 b7ce92d35fde3704297163010c320e336a5dd681
页面调整优化
6个文件已修改
1557 ■■■■ 已修改文件
components/custom-tabbar.vue 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/kitchen/KitchenCover.vue 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/kitchen/KitchenCustomize.vue 17 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/tabbar/index/home.vue 477 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/tabbar/user/my.vue 694 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/tabbar/user/utils/tool.vue 359 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
components/custom-tabbar.vue
@@ -99,8 +99,10 @@
        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 {
pages/kitchen/KitchenCover.vue
@@ -7,7 +7,7 @@
            <!-- 底部留出导航栏高度的空间 -->
            <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>
@@ -43,7 +43,7 @@
        height: 100vh;
        position: relative;
        overflow: hidden;
        background-color: #ffffff;
        background-color: #000000;
    }
    .scroll-view {
@@ -59,7 +59,7 @@
    .empty-text {
        text-align: center;
        padding-top: 300rpx;
        color: #999;
        color: #ffffff;
        font-size: 28rpx;
    }
pages/kitchen/KitchenCustomize.vue
@@ -9,7 +9,7 @@
            <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>
@@ -218,7 +218,7 @@
}
.content {
    padding: 24rpx;
    padding: 0 24rpx 0 24rpx;
}
.tags-scroll {
@@ -230,11 +230,12 @@
    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;
@@ -244,6 +245,7 @@
    background-color: #f7f7f7;
    white-space: nowrap;
    flex-shrink: 0;
    box-sizing: border-box;
}
.tag.active {
@@ -275,11 +277,11 @@
.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 {
@@ -333,14 +335,19 @@
.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;
    }
}
pages/tabbar/index/home.vue
@@ -1,10 +1,10 @@
<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>
        <!-- 视频加载 -->
@@ -271,21 +271,21 @@
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);
@@ -380,104 +380,104 @@
            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({
@@ -488,15 +488,15 @@
                }
            });
        }
        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)
        //处理扫码出来的视频
@@ -515,7 +515,7 @@
            queryParam.videoId = videoId
            this.actionParam.joinType = "SCAN";
            this.actionParam.pageParams = JSON.stringify(params);
            console.log('解析参数:', { shareType, videoId });
        }
        const token = storage.getAccessToken();
@@ -572,86 +572,86 @@
        // 返回一个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) {
@@ -665,7 +665,7 @@
                        //         } else {
                        //             this.hideActivityPopup()
                        //         }
            //
                        //
                        //     }
                        // });
                    }
@@ -681,8 +681,7 @@
            this.hideActivityPopup()
        },
        replyClick(reply) {
            if (this.userId === reply.userId) {
            if (this.userId  === reply.userId) {
                let that = this;
                uni.showModal({
                    title: '提示',
@@ -2020,82 +2019,94 @@
    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>
pages/tabbar/user/my.vue
@@ -1,159 +1,140 @@
<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">&#xe676;</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">&#xe676;</text>
          </view>
          <view>我的视频</view>
        </view>
        <view class="order-item" @click="navigateTo('/pages/mine/myAttention')">
          <view>
            <text class="iconfont">&#xe66f;</text>
          </view>
          <view>我的关注</view>
        </view>
<!--         <view class="order-item" @click="navigateTo('/pages/mine/myCollect/myCollect')">
          <view>
            <text class="iconfont">&#xe608;</text>
          </view>
          <view>收藏列表</view>
        </view -->
        <view class="order-item" @click="navigateTo('/pages/mine/activity/myActivity')">
          <view>
            <text class="iconfont">&#xe635;</text>
          </view>
          <view>我的活动</view>
        </view>
<!--         <view class="order-item" @click="navigateTo('/pages/mine/myTracks')">
          <view>
            <text class="iconfont">&#xe738;</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';
@@ -164,12 +145,12 @@
  },
  data() {
    return {
       base64image,
       base64image2,
      base64image,
      base64image2,
      prizeActivity: {},
      endpoint: '',
      endpoint: '',
      configs,
      userImage:configs.defaultUserPhoto,
      userImage: configs.defaultUserPhoto,
      coverTransform: "translateY(0px)",
      coverTransition: "0s",
      moving: false,
@@ -177,16 +158,16 @@
      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) {
@@ -224,35 +205,35 @@
      }
    }
    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")) {
@@ -263,15 +244,15 @@
      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();
@@ -297,42 +278,42 @@
      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
      }
@@ -342,36 +323,36 @@
      // }
      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
@@ -404,48 +385,56 @@
</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%;
@@ -462,6 +451,7 @@
    margin-right: 24rpx;
    border-radius: 16rpx;
    overflow: hidden;
    image {
      width: 100%;
      height: 100%;
@@ -472,16 +462,18 @@
  // 活动信息区域
  .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;
    }
  }
@@ -491,27 +483,31 @@
    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;
@@ -523,6 +519,7 @@
  .activity-enter {
    display: flex;
    align-items: center;
    .enter-text {
      font-size: 24rpx;
      color: #fff;
@@ -541,9 +538,11 @@
  padding: 0 40rpx;
  box-sizing: border-box;
}
/* 会员信息 */
.vip-info {
  flex: 1;
  .vip-level {
    font-size: 40rpx;
    font-weight: bold;
@@ -552,7 +551,7 @@
    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);
@@ -576,6 +575,7 @@
  width: 60rpx;
  height: 60rpx;
}
/* 特权标识 */
.vip-badge {
  padding: 8rpx 20rpx;
@@ -597,34 +597,37 @@
}
.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 {
@@ -657,30 +660,52 @@
  }
  .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;
@@ -688,62 +713,91 @@
    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>
pages/tabbar/user/utils/tool.vue
@@ -5,19 +5,30 @@
            <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>
@@ -25,110 +36,104 @@
            </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>
@@ -144,7 +149,7 @@
                    <view class="interact-item" @click="navigateTo('/pages/prizeRecord/prizeRecord')">
                        <image  src="/static/mine/prize-record.png"></image>
                        <view>抽奖记录</view>
                    </view>
                    </view> -->
                </view>
            </view>
@@ -153,165 +158,165 @@
</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>