settings.vue 3.66 KB
Newer Older
1 2 3
<template>
  <div class="settings">
    <van-cell-group class="group-1">
leiqingsong's avatar
leiqingsong committed
4
      <van-cell title="用户名" :value="$userId" />
5
      <van-cell is-link center title="头像" @click="onModefy">
leiqingsong's avatar
leiqingsong committed
6
        <img class="avatar-img" :src="imgBaseUrl + avatar" alt="头像" />
7 8 9
      </van-cell>
    </van-cell-group>
    <van-cell-group>
10
      <van-cell
11
        class="van-less"
12
        is-link
leiqingsong's avatar
leiqingsong committed
13
        title="推荐人邀请码"
14 15 16
        :value="inviteeCode"
        @click="fillInviterCode"
      />
17
      <van-cell is-link title="软件更新" value="版本v1.2" />
leiqingsong's avatar
leiqingsong committed
18
      <van-cell is-link title="用户协议" @click="jumpToInstructions" />
19
    </van-cell-group>
leiqingsong's avatar
leiqingsong committed
20

leiqingsong's avatar
leiqingsong committed
21
    <a href="redirect://xts.com/login_activity?hideBack=true">
leiqingsong's avatar
leiqingsong committed
22 23 24 25
      <van-button size="large" class="logout-btn" @click="logout"
        >退出登录</van-button
      >
    </a>
26 27 28 29 30 31

    <base-dialog
      base-dialog-title="推荐人邀请码"
      base-dialog-btn="提交"
      :base-dialog-show="inviteeCodeDialog"
      :base-dialog-show-close="true"
leiqingsong's avatar
leiqingsong committed
32
      @onClose="onCloseDialog"
33 34 35 36 37 38 39 40 41 42 43 44
      @onClick="onFillInviteeCode"
    >
      <div slot="content">
        <p class="content-tip">请输入您的推荐人邀请码</p>
        <van-field
          v-model="fillCode"
          type="number"
          class="validCodeInput"
          placeholder="请输入"
        />
      </div>
    </base-dialog>
45 46 47 48
  </div>
</template>

<script>
leiqingsong's avatar
leiqingsong committed
49
import { getUserInfo2 } from "@/api/user";
leiqingsong's avatar
leiqingsong committed
50
import { logout } from "@/api/user";
leiqingsong's avatar
leiqingsong committed
51
import { fillInviteCode } from "@/api/user";
52
import BaseDialog from "../components/BaseDialog.vue";
53
export default {
54
  components: { BaseDialog },
55 56 57
  name: "Settings",
  data() {
    return {
leiqingsong's avatar
leiqingsong committed
58
      imgBaseUrl: "",
leiqingsong's avatar
leiqingsong committed
59
      avatar: "",
60 61 62 63
      fileList: [],
      fillCode: "",
      inviteeCode: "未填写",
      inviteeCodeDialog: false
64 65
    };
  },
leiqingsong's avatar
leiqingsong committed
66
  mounted() {
leiqingsong's avatar
leiqingsong committed
67
    this.imgBaseUrl = process.env.VUE_APP_BASE_URL;
leiqingsong's avatar
leiqingsong committed
68
    this.getUser();
leiqingsong's avatar
leiqingsong committed
69
  },
70
  methods: {
leiqingsong's avatar
leiqingsong committed
71
    getUser() {
leiqingsong's avatar
leiqingsong committed
72 73
      const params = {
        userId: this.$userId
leiqingsong's avatar
leiqingsong committed
74
      };
leiqingsong's avatar
leiqingsong committed
75
      console.log("setting-userId", params);
leiqingsong's avatar
leiqingsong committed
76
      getUserInfo2(params).then(res => {
leiqingsong's avatar
leiqingsong committed
77 78
        if (res.userId) {
          localStorage.setItem("user", JSON.stringify(res));
leiqingsong's avatar
leiqingsong committed
79
          this.$nextTick(() => {
leiqingsong's avatar
leiqingsong committed
80
            this.inviteeCode = res.beInvitedCode;
leiqingsong's avatar
leiqingsong committed
81 82
            this.avatar = res.headImage;
          });
leiqingsong's avatar
leiqingsong committed
83
        }
leiqingsong's avatar
leiqingsong committed
84
      });
leiqingsong's avatar
leiqingsong committed
85
    },
leiqingsong's avatar
leiqingsong committed
86
    logout() {
leiqingsong's avatar
leiqingsong committed
87 88 89 90
      logout().then().catch(err => {
        console.log('后台退出err', err);
      });
      this.$bridgeToAppFun.logoutToApp();
leiqingsong's avatar
leiqingsong committed
91
      localStorage.removeItem("token");
leiqingsong's avatar
leiqingsong committed
92
    },
leiqingsong's avatar
leiqingsong committed
93 94 95
    jumpToInstructions() {
      this.$router.push("/instructions");
    },
96
    onModefy() {
leiqingsong's avatar
leiqingsong committed
97 98 99 100 101 102
      this.$router.push({
        path: "/modefy-avatar",
        query: {
          headImage: this.avatar
        }
      });
103
    },
leiqingsong's avatar
leiqingsong committed
104 105 106
    onCloseDialog() {
      this.inviteeCodeDialog = false;
    },
107 108 109
    onFillInviteeCode() {
      this.inviteeCodeDialog = false;
      this.inviteeCode = this.fillCode;
leiqingsong's avatar
leiqingsong committed
110 111
      const params = {
        inviteCode: this.fillCode,
leiqingsong's avatar
leiqingsong committed
112
        userId: this.$userId
leiqingsong's avatar
leiqingsong committed
113 114
      };
      fillInviteCode(params).then();
115 116 117 118 119 120
    },
    fillInviterCode() {
      if (this.inviteeCode === "未填写") {
        this.inviteeCodeDialog = true;
        this.fillCode = "";
      }
121 122 123 124 125 126 127 128 129
    }
  }
};
</script>

<style lang="scss" scoped>
.settings {
  box-sizing: border-box;
  padding: 10px 16px;
130 131 132 133 134
  .van-less{
    .van-cell__right-icon{
      display: none;
    }
  }
135 136 137
}
.group-1 {
  margin-bottom: 10px;
138
  .avatar-img {
139 140 141 142 143 144 145 146
    width: 37px;
    height: 37px;
    border-radius: 50%;
  }
}
.logout-btn {
  margin: 10px 0;
}
147 148 149 150 151 152 153 154 155 156 157
.content-tip {
  text-align: center;
  font-size: 14px;
  color: #333333;
}
.validCodeInput {
  width: 245px;
  margin: 35px auto;
  background-color: #f9f9f9;
  border-radius: 20px;
}
158
</style>