myStatus.vue 5.62 KB
Newer Older
1 2
<template>
  <div class="my-status">
leiqingsong's avatar
leiqingsong committed
3 4 5
    <div class="userInfo">
      <img src="@/assets/images/白银树.png" alt="等级背景图" />
      <span class="level-label">我的等级</span>
leiqingsong's avatar
leiqingsong committed
6 7 8 9
      <span class="level"
        >Lv.{{ userRecommendInfo.userlevel
        }}{{ userRecommendInfo.userlevel | userLevel }}</span
      >
leiqingsong's avatar
leiqingsong committed
10 11
      <div class="userAvatar">
        <div class="avatar-box">
leiqingsong's avatar
leiqingsong committed
12
          <img class="avatar" :src="avatar" alt="头像" />
leiqingsong's avatar
leiqingsong committed
13
          <img class="level-img" src="@/assets/images/等级展示框.png" alt />
leiqingsong's avatar
leiqingsong committed
14
          <span class="avatar-level">Lv.{{ userRecommendInfo.userlevel }}</span>
leiqingsong's avatar
leiqingsong committed
15 16 17
        </div>
      </div>
    </div>
18
    <div class="status">
leiqingsong's avatar
leiqingsong committed
19 20 21 22 23 24 25
      <van-tabs
        v-model="activeTab"
        swipeable
        sticky
        color="#28b537"
        @click="changeTab"
      >
leiqingsong's avatar
leiqingsong committed
26 27 28
        <van-tab
          v-for="item in Tabs"
          :key="`tba-${item.id}`"
leiqingsong's avatar
leiqingsong committed
29
          :title="`${item.name}(${item.num})`"
leiqingsong's avatar
leiqingsong committed
30 31 32
        >
          <base-refresh-scroll @downLoad="onDownLoad" @upRefresh="onUpRefresh">
            <div slot="content">
leiqingsong's avatar
leiqingsong committed
33 34
              <div v-for="item in inviteeArr" :key="item.id">
                <invitee-item :invitee-item="item" />
leiqingsong's avatar
leiqingsong committed
35 36 37
              </div>
            </div>
          </base-refresh-scroll>
38 39 40 41 42 43 44
        </van-tab>
      </van-tabs>
    </div>
  </div>
</template>

<script>
leiqingsong's avatar
leiqingsong committed
45
import { recomendInfo, recommendDetail } from "@/api/myStatus";
leiqingsong's avatar
leiqingsong committed
46 47
import BaseRefreshScroll from "../../components/BaseRefreshScroll.vue";
import InviteeItem from "./components/invitee";
48 49 50
export default {
  name: "MyStatus",
  components: {
leiqingsong's avatar
leiqingsong committed
51 52
    InviteeItem,
    BaseRefreshScroll
53
  },
leiqingsong's avatar
leiqingsong committed
54 55 56 57 58
  filters: {
    userLevel(key) {
      let levelName = "";
      switch (key) {
        case 0:
leiqingsong's avatar
leiqingsong committed
59
          levelName = "普通用户";
leiqingsong's avatar
leiqingsong committed
60 61
          break;
        case 1:
leiqingsong's avatar
leiqingsong committed
62
          levelName = "幼苗";
leiqingsong's avatar
leiqingsong committed
63 64
          break;
        case 2:
leiqingsong's avatar
leiqingsong committed
65
          levelName = "青铜树";
leiqingsong's avatar
leiqingsong committed
66 67
          break;
        case 3:
leiqingsong's avatar
leiqingsong committed
68
          levelName = "白银树";
leiqingsong's avatar
leiqingsong committed
69 70
          break;
        case 4:
leiqingsong's avatar
leiqingsong committed
71
          levelName = "黄金树";
leiqingsong's avatar
leiqingsong committed
72 73
          break;
        case 5:
leiqingsong's avatar
leiqingsong committed
74
          levelName = "农场主";
leiqingsong's avatar
leiqingsong committed
75 76
          break;
        case 6:
leiqingsong's avatar
leiqingsong committed
77
          levelName = "森林之星";
leiqingsong's avatar
leiqingsong committed
78 79
          break;
        case 7:
leiqingsong's avatar
leiqingsong committed
80
          levelName = "西田森合伙人";
leiqingsong's avatar
leiqingsong committed
81 82
          break;
        default:
leiqingsong's avatar
leiqingsong committed
83
          levelName = "";
leiqingsong's avatar
leiqingsong committed
84 85 86 87 88
          break;
      }
      return levelName;
    }
  },
89 90
  data() {
    return {
leiqingsong's avatar
leiqingsong committed
91
      avatar: process.env.VUE_APP_BASE_URL + this.$userAvatar,
leiqingsong's avatar
leiqingsong committed
92 93
      inviteeArr: [],
      userRecommendInfo: {},
94 95
      activeTab: "",
      Tabs: [
96 97
        {
          id: 0,
leiqingsong's avatar
leiqingsong committed
98 99 100
          name: "普通用户",
          num: 0,
          keyName: "normalUserNum"
101
        },
102 103
        {
          id: 1,
leiqingsong's avatar
leiqingsong committed
104 105 106
          name: "幼苗",
          num: 0,
          keyName: "seedlingNum"
107 108 109
        },
        {
          id: 2,
leiqingsong's avatar
leiqingsong committed
110 111 112
          name: "青铜树",
          num: 0,
          keyName: "bronzeTreeNum"
113 114 115
        },
        {
          id: 3,
leiqingsong's avatar
leiqingsong committed
116 117 118
          name: "白银树",
          num: 0,
          keyName: "silverTreeNum"
119 120 121
        },
        {
          id: 4,
leiqingsong's avatar
leiqingsong committed
122 123 124
          name: "黄金树",
          num: 0,
          keyName: "goldTreeNum"
125 126 127
        },
        {
          id: 5,
leiqingsong's avatar
leiqingsong committed
128 129 130
          name: "农场主",
          num: 0,
          keyName: "farmerNum"
131 132 133
        },
        {
          id: 6,
leiqingsong's avatar
leiqingsong committed
134 135 136
          name: "森林之星",
          num: 0,
          keyName: "forestStartNum"
137 138 139
        },
        {
          id: 7,
leiqingsong's avatar
leiqingsong committed
140 141 142
          name: "西田森合伙人",
          num: 0,
          keyName: "partnerNum"
143 144 145
        }
      ]
    };
leiqingsong's avatar
leiqingsong committed
146
  },
leiqingsong's avatar
leiqingsong committed
147
  created() {
leiqingsong's avatar
leiqingsong committed
148 149
    this.getRecommendInfo();
    this.getRecommendDetail(0);
leiqingsong's avatar
leiqingsong committed
150
  },
leiqingsong's avatar
leiqingsong committed
151
  methods: {
leiqingsong's avatar
leiqingsong committed
152 153 154
    changeTab(name) {
      this.getRecommendDetail(name);
    },
leiqingsong's avatar
leiqingsong committed
155 156 157 158 159
    onDownLoad(val) {
      console.log("下拉加载", val);
    },
    onUpRefresh(val) {
      console.log("上拉刷新", val);
leiqingsong's avatar
leiqingsong committed
160 161 162
    },
    getRecommendInfo() {
      const params = {
leiqingsong's avatar
leiqingsong committed
163
        userId: this.$userId
leiqingsong's avatar
leiqingsong committed
164
      };
leiqingsong's avatar
leiqingsong committed
165 166
      recomendInfo(params).then(res => {
        if (res.code === 0) {
leiqingsong's avatar
leiqingsong committed
167 168
          this.userRecommendInfo = res.data;
          for (const key in res.data.myRecommed) {
leiqingsong's avatar
leiqingsong committed
169 170
            this.Tabs.forEach(el => {
              if (el.keyName === key) {
leiqingsong's avatar
leiqingsong committed
171
                el.num = res.data.myRecommed[key];
leiqingsong's avatar
leiqingsong committed
172 173 174 175
              }
            });
          }
        }
leiqingsong's avatar
leiqingsong committed
176
      });
leiqingsong's avatar
leiqingsong committed
177 178 179
    },
    getRecommendDetail(level) {
      const params = {
leiqingsong's avatar
leiqingsong committed
180
        userId: this.$userId,
leiqingsong's avatar
leiqingsong committed
181
        userlevel: level
leiqingsong's avatar
leiqingsong committed
182
      };
leiqingsong's avatar
leiqingsong committed
183 184 185 186
      recommendDetail(params).then(res => {
        if (res.code === 0) {
          this.inviteeArr = res.data;
        }
leiqingsong's avatar
leiqingsong committed
187
      });
leiqingsong's avatar
leiqingsong committed
188
    }
189 190 191 192 193 194
  }
};
</script>

<style lang="scss" scoped>
.userInfo {
leiqingsong's avatar
leiqingsong committed
195 196 197 198 199 200
  box-sizing: border-box;
  position: relative;
  width: 364px;
  height: 119px;
  margin: 0 auto 20px;
  padding: 7px 10px 12px;
201 202
  background-color: #ffffff;
  border-radius: 4px;
leiqingsong's avatar
leiqingsong committed
203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250

  img {
    width: 345px;
    height: 100px;
  }
  .level-label {
    position: absolute;
    top: 35px;
    left: 30px;
    font-size: 12px;
  }
  .level {
    position: absolute;
    top: 56px;
    left: 31px;
    font-size: 22px;
    color: #ffffff;
  }
  .userAvatar {
    position: absolute;
    top: 26px;
    right: 43px;
    .avatar-box {
      position: relative;
      width: 60px;
      height: 60px;
      .avatar {
        width: 57px;
        height: 57px;
        border: 2px solid #ffffff;
        border-radius: 50%;
      }
      .level-img {
        position: absolute;
        top: 50px;
        right: 0px;
        width: 59px;
        height: 16px;
      }
      .avatar-level {
        position: absolute;
        top: 51px;
        right: 20px;
        font-size: 12px;
        color: #ff9600;
      }
    }
  }
251 252
}
::v-deep .van-tabs__content {
leiqingsong's avatar
leiqingsong committed
253
  position: relative;
254 255 256
  height: 100vh;
  background-color: #ffffff;
}
leiqingsong's avatar
leiqingsong committed
257 258 259
::v-deep .van-tab__pane {
  padding-top: 10px;
}
260
</style>