integral.vue 3.82 KB
Newer Older
1 2 3 4 5 6 7 8 9
<template>
  <view class="integral">
    <dHeader :title="$lang.lang.integral.info"></dHeader>
    <view class="container">
      <view class="header">
        <view class="avatar">
          <image src="../../static/img/vip_avatar.png" mode=""></image>
        </view>
        <view class="content">
10
          <view class="content-title"
chenwei's avatar
chenwei committed
11 12
            >{{ $lang.lang.integral.headerTitle
            }}{{ levelInfo.levelName }}</view
13
          >
14
          <view class="content-text">
chenwei's avatar
chenwei committed
15 16 17 18 19 20 21
            <view class="text"
              >{{ $lang.lang.integral.spend }} {{ levelInfo.usedScore }}</view
            >
            <view class="text"
              >{{ $lang.lang.integral.available }}
              {{ levelInfo.holdScore }}</view
            >
22 23
          </view>
          <view class="divider">
24 25 26
            <view class="divider-active" :style="{ width: `${score}%` }"></view>
            <view class="divider-unm">{{ levelInfo.totalScore }}</view>
            <view class="divider-level">{{ levelInfo.levelName }}</view>
27 28 29
          </view>
        </view>
        <view class="classification">
30
          <image class="classification-image" :src="levelIcon"></image>
31
          <view class="log-menu">
32 33 34 35 36 37
            <view class="menu-item" @click="toLog(0)"
              >{{ $lang.lang.integral.logPoints }}&ensp;&gt;</view
            >
            <view class="menu-item" @click="toLog(1)"
              >{{ $lang.lang.integral.logExchange }}&ensp;&gt;</view
            >
38 39 40 41 42
          </view>
        </view>
      </view>
      <view class="main">
        <view class="main-nav">
chenwei's avatar
chenwei committed
43 44 45 46 47 48 49 50 51 52 53 54
          <view
            class="nav-item"
            :class="{ 'nav-active1': navIndex === 0 }"
            @click="navIndex = 0"
            >{{ $lang.lang.integral.redeemGifts }}</view
          >
          <view
            class="nav-item"
            :class="{ 'nav-active2': navIndex === 1 }"
            @click="navIndex = 1"
            >{{ $lang.lang.integral.pointsCampaign }}</view
          >
55 56
        </view>
        <view class="main-content">
57 58
          <gift v-show="navIndex === 0" :userInfo="userInfo"></gift>
          <points v-show="navIndex === 1"></points>
59 60 61 62 63 64 65
        </view>
      </view>
    </view>
  </view>
</template>

<script>
chenwei's avatar
chenwei committed
66 67 68
import dHeader from "../../components/dHeader/index.vue";
import points from "./components/points.vue";
import gift from "./components/gift.vue";
69 70 71 72
export default {
  components: {
    dHeader,
    gift,
chenwei's avatar
chenwei committed
73
    points,
74 75 76
  },
  data() {
    return {
77 78 79 80
      navIndex: 0,
      // 会员信息
      levelInfo: {},
      // 会员图标
chenwei's avatar
chenwei committed
81 82 83
      levelIcon: "",
      userInfo: {},
    };
84 85 86 87 88
  },
  computed: {
    score() {
      if (this.levelInfo.totalScore) {
        return Math.min(
chenwei's avatar
chenwei committed
89 90 91
          Math.floor(
            (this.levelInfo.totalScore / this.levelInfo.upperCount) * 100
          ),
92
          100
chenwei's avatar
chenwei committed
93
        );
94
      }
chenwei's avatar
chenwei committed
95 96
      return 0;
    },
97
  },
98
  created() {
chenwei's avatar
chenwei committed
99
    this.getUserInfo();
100
  },
101 102
  methods: {
    toLog(val) {
chenwei's avatar
chenwei committed
103 104
      const url = val === 1 ? "/pages/log/exchange" : "/pages/log/integral";
      uni.navigateTo({ url });
105 106 107 108
    },
    // 获取个人信息
    async getUserInfo() {
      try {
chenwei's avatar
chenwei committed
109 110 111
        const { code, data } = await this.$request.get(
          "/app-api/member/user/get"
        );
112
        if (code === 0 && data) {
chenwei's avatar
chenwei committed
113 114 115 116
          const { userScoreLevelInfo, ...args } = data;
          this.userInfo = args;
          this.levelIcon = userScoreLevelInfo.levelIcon;
          this.getMemberScore(this.$store.getters.id);
117 118 119 120 121 122 123 124 125
        }
      } catch (err) {}
    },
    // 获取会员积分信息
    async getMemberScore(id) {
      try {
        const { code, data } = await this.$request.post(
          `/app-api/member/user-score/info?id=${id}`,
          { id }
chenwei's avatar
chenwei committed
126
        );
127
        if (code === 0 && data) {
chenwei's avatar
chenwei committed
128
          this.levelInfo = data;
129 130
        }
      } catch (err) {}
chenwei's avatar
chenwei committed
131 132 133
    },
  },
};
134 135 136 137 138
</script>

<style>
@import url(../../static/css/integral.css);
</style>