myStatus.vue 5.61 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 12 13
      <div class="userAvatar">
        <div class="avatar-box">
          <img class="avatar" src="@/assets/images/avatar.png" alt="头像" />
          <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 92
      inviteeArr: [],
      userRecommendInfo: {},
93 94
      activeTab: "",
      Tabs: [
95 96
        {
          id: 0,
leiqingsong's avatar
leiqingsong committed
97 98 99
          name: "普通用户",
          num: 0,
          keyName: "normalUserNum"
100
        },
101 102
        {
          id: 1,
leiqingsong's avatar
leiqingsong committed
103 104 105
          name: "幼苗",
          num: 0,
          keyName: "seedlingNum"
106 107 108
        },
        {
          id: 2,
leiqingsong's avatar
leiqingsong committed
109 110 111
          name: "青铜树",
          num: 0,
          keyName: "bronzeTreeNum"
112 113 114
        },
        {
          id: 3,
leiqingsong's avatar
leiqingsong committed
115 116 117
          name: "白银树",
          num: 0,
          keyName: "silverTreeNum"
118 119 120
        },
        {
          id: 4,
leiqingsong's avatar
leiqingsong committed
121 122 123
          name: "黄金树",
          num: 0,
          keyName: "goldTreeNum"
124 125 126
        },
        {
          id: 5,
leiqingsong's avatar
leiqingsong committed
127 128 129
          name: "农场主",
          num: 0,
          keyName: "farmerNum"
130 131 132
        },
        {
          id: 6,
leiqingsong's avatar
leiqingsong committed
133 134 135
          name: "森林之星",
          num: 0,
          keyName: "forestStartNum"
136 137 138
        },
        {
          id: 7,
leiqingsong's avatar
leiqingsong committed
139 140 141
          name: "西田森合伙人",
          num: 0,
          keyName: "partnerNum"
142 143 144
        }
      ]
    };
leiqingsong's avatar
leiqingsong committed
145
  },
leiqingsong's avatar
leiqingsong committed
146
  created() {
leiqingsong's avatar
leiqingsong committed
147 148
    this.getRecommendInfo();
    this.getRecommendDetail(0);
leiqingsong's avatar
leiqingsong committed
149
  },
leiqingsong's avatar
leiqingsong committed
150
  methods: {
leiqingsong's avatar
leiqingsong committed
151 152 153
    changeTab(name) {
      this.getRecommendDetail(name);
    },
leiqingsong's avatar
leiqingsong committed
154 155 156 157 158
    onDownLoad(val) {
      console.log("下拉加载", val);
    },
    onUpRefresh(val) {
      console.log("上拉刷新", val);
leiqingsong's avatar
leiqingsong committed
159 160 161 162
    },
    getRecommendInfo() {
      const params = {
        userId: "13933770749"
leiqingsong's avatar
leiqingsong committed
163
      };
leiqingsong's avatar
leiqingsong committed
164 165
      recomendInfo(params).then(res => {
        if (res.code === 0) {
leiqingsong's avatar
leiqingsong committed
166 167
          this.userRecommendInfo = res.data;
          for (const key in res.data.myRecommed) {
leiqingsong's avatar
leiqingsong committed
168 169 170
            this.Tabs.forEach(el => {
              if (el.keyName === key) {
                console.log(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 180 181
    },
    getRecommendDetail(level) {
      const params = {
        userid: "13933770749",
        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>