绿满眶商城微信小程序-uniapp
peng
2 天以前 d50a3ed44e2edab2a7a661c43491c3aa42c57794
pages/tabbar/user/my.vue
@@ -6,7 +6,8 @@
    </view>
    <view class="header"  @click="userDetail">
      <view class="head-1">
        <image :src="userInfo.face || userImage"></image>
        <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>
@@ -16,6 +17,24 @@
      </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">
    <view class="member-content">
         <view class="vip-icon">
           <image src="/static/tabbar/vip.png" mode="widthFix"></image>
         </view>
         <view class="vip-info">
           <p class="vip-level">绿满筐会员</p>
           <p class="vip-validity">长期有效</p>
         </view>
         <!-- 会员标识装饰 -->
         <view class="vip-badge">
           <text class="badge-text">尊享特权</text>
         </view>
       </view>
   </view>
    <!-- 积分,优惠券,关注, -->
    <div class="pointBox box">
      <u-row text-align="center" gutter="16" class="point">
@@ -84,17 +103,23 @@
         </view>
         <view>关注列表</view>
       </view>
       <view class="order-item" @click="navigateTo('/pages/mine/myCollect/myCollect')">
<!--        <view class="order-item" @click="navigateTo('/pages/mine/myCollect/myCollect')">
         <view>
           <text class="iconfont">&#xe608;</text>
         </view>
         <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>
@@ -103,24 +128,30 @@
   <view class="pointBox box" style="margin-top: 20rpx;">
      <tool />
   </view>
    <!-- 撑起下方 -->
   <view style="height:64px;">
   </view>
  <custom-tabbar bgColor="#ffffff" selected="my"></custom-tabbar>
  </view>
</template>
<script>
import '@/components/uview-components/uview-ui';
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 } 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";
export default {
  components: {
    tool
  },
  data() {
    return {
     endpoint: '',
      configs,
      userImage:configs.defaultUserPhoto,
      coverTransform: "translateY(0px)",
@@ -130,10 +161,44 @@
      couponNum: "",
      footNum: "",
      walletNum: "",
     pageSessionNo:"",
     actionParam:{
         sessionId:'',
         actionType:"PAGE",
         joinType:"SELF",
         pageCode:"TBA_BAR_MY",
         pageParams:"{}",
         pageStatus:"JOIN",
         pageType:"DETAIL"
      }
    };
  },
  onLoad() { },
  onUnload() {
    let   param = this.actionParam;
    if (this.sendOnShow)return
    param.pageStatus = "LEAVE"
    userAction(param)
  },
  onHide() {
    this.startHidenTime = Date.now()
    let   param = this.actionParam;
    this.sendOnShow = true;
    param.pageStatus = "LEAVE"
    userAction(param)
  },
  onLoad(options) {
     this.actionParam.pageParams = JSON.stringify(options)
     this.initCOS()
  },
  onShow() {
     getSessionId().then(res=>{
      this.pageSessionNo = res.data.data
      if(this.pageSessionNo){
      let   param = this.actionParam;
         param.sessionId = this.pageSessionNo
         userAction(param)
      }
     })
    this.userInfo = this.$options.filters.isLogin() || {};
    if (this.$options.filters.isLogin("auth")) {
      this.getUserOrderNum();
@@ -158,6 +223,21 @@
  mounted() { },
  methods: {
     // 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
@@ -195,19 +275,91 @@
</script>
<style lang="scss" scoped>
   @import url("/pages/subComponents/static/bgStyle.css");
html,
body {
  overflow: auto;
}
.member-gradient-bg {
   width: 98%;
   height: 250rpx;
   margin: 1% 1%;
   background: linear-gradient(135deg, #FF7A45 0%, #FF5252 100%);
    border-radius: 24rpx;
     box-shadow: 0 8rpx 30rpx rgba(255, 82, 82, 0.3);
     transition: all 0.3s ease;
     &:active {
       transform: scale(0.98);
     }
}
/* 内容区域 */
.member-content {
  width: 100%;
  height: 100%;
  display: flex;
  align-items: center;
  padding: 0 40rpx;
  box-sizing: border-box;
}
/* 会员信息 */
.vip-info {
  flex: 1;
  .vip-level {
    font-size: 40rpx;
    font-weight: bold;
    color: #FFFFFF;
    margin: 0;
    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);
    margin: 10rpx 0 0 0;
  }
}
/* 会员图标 */
.vip-icon {
  width: 100rpx;
  height: 100rpx;
  margin-right: 30rpx;
  display: flex;
  align-items: center;
  justify-content: center;
  background-color: rgba(255, 255, 255, 0.2);
  border-radius: 50%;
}
.vip-icon image {
  width: 60rpx;
  height: 60rpx;
}
/* 特权标识 */
.vip-badge {
  padding: 8rpx 20rpx;
  background-color: rgba(255, 215, 0, 0.9);
  border-radius: 30rpx;
  box-shadow: 0 3rpx 6rpx rgba(0, 0, 0, 0.1);
}
.badge-text {
  font-size: 24rpx;
  color: #E63946;
  font-weight: 600;
}
.money {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.user {
   background: #e7e7e7;
  .header {
    max-width: 100%;
    padding: calc(50rpx + var(--status-bar-height)) 30rpx 0 6%;
@@ -215,7 +367,7 @@
    background-size: cover;
    border-bottom-left-radius: 30rpx;
    border-bottom-right-radius: 30rpx;
    background-image: url("/static/img/main-bg.png");
    background-image: var(--main-bg);
    background-position: bottom;
    background-repeat: no-repeat;
    color: #ffffff;
@@ -266,14 +418,6 @@
    }
  }
  .pointBox {
    width: 94%;
    margin: 0 3%;
    background: #fff;
    border-radius: 20rpx;
    box-shadow: 0 4rpx 24rpx 0 rgba($color: #f6f6f6, $alpha: 1);
  }
  .point {
    text-align: center;
    height: 160rpx;
@@ -305,8 +449,12 @@
    justify-content: space-around;
    align-items: center;
    padding: 0 3%;
    color: #999;
    color: #666;
    background: #fff;
    border-radius: 20rpx;
    box-shadow: 0 4rpx 24rpx 0 #f6f6f6;
    margin: 0 20rpx;
    .order-item {
      position: relative;
      line-height: 2em;
@@ -314,14 +462,20 @@
      :first-child {
        font-size: 48rpx;
        margin-bottom: 10rpx;
        margin-bottom: 12rpx;
        color: #333;
      }
    }
  }
}
.box {
  transform: translateY(-30rpx);
   width: 95%;
   margin: auto;
   background: #fff;
   border-radius: 20rpx;
   box-shadow: 0 4rpx 24rpx 0 #f6f6f6;
}
.user-name {