myStatus.vue 6.07 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">
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
      <van-tabs
        v-model="activeTab"
        swipeable
        sticky
        color="#28b537"
        @click="changeTab"
全球's avatar
全球 committed
25
        @change="changeTabs"
leiqingsong's avatar
leiqingsong committed
26
      >
leiqingsong's avatar
leiqingsong committed
27 28 29
        <van-tab
          v-for="item in Tabs"
          :key="`tba-${item.id}`"
leiqingsong's avatar
leiqingsong committed
30
          :title="`${item.name}(${item.num})`"
leiqingsong's avatar
leiqingsong committed
31
        >
leiqingsong's avatar
leiqingsong committed
32 33 34 35
          <!-- <base-refresh-scroll @downLoad="onDownLoad" @upRefresh="onUpRefresh"> -->
          <div v-if="inviteeArr.length > 0">
            <div v-for="item in inviteeArr" :key="item.id">
              <invitee-item :invitee-item="item" />
leiqingsong's avatar
leiqingsong committed
36
            </div>
leiqingsong's avatar
leiqingsong committed
37 38 39
          </div>
          <p class="no-data" v-else>暂无数据~</p>
          <!-- </base-refresh-scroll> -->
40 41 42 43 44 45 46
        </van-tab>
      </van-tabs>
    </div>
  </div>
</template>

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

<style lang="scss" scoped>
.userInfo {
leiqingsong's avatar
leiqingsong committed
206 207 208 209 210 211
  box-sizing: border-box;
  position: relative;
  width: 364px;
  height: 119px;
  margin: 0 auto 20px;
  padding: 7px 10px 12px;
212 213
  background-color: #ffffff;
  border-radius: 4px;
leiqingsong's avatar
leiqingsong committed
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 251 252 253 254 255 256 257 258 259 260 261

  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;
      }
    }
  }
262
}
leiqingsong's avatar
leiqingsong committed
263 264 265 266 267
.no-data {
  text-align: center;
  font-size: 12px;
}

268
::v-deep .van-tabs__content {
leiqingsong's avatar
leiqingsong committed
269
  position: relative;
270 271 272
  height: 100vh;
  background-color: #ffffff;
}
leiqingsong's avatar
leiqingsong committed
273 274 275
::v-deep .van-tab__pane {
  padding-top: 10px;
}
276
</style>