262 lines
6.1 KiB
Vue
262 lines
6.1 KiB
Vue
<template>
|
|
<view class="user">
|
|
<view class="card">
|
|
<view class="uid">ID:{{ userInfo.username }}</view>
|
|
<u--image
|
|
class="logo"
|
|
:showLoading="true"
|
|
:src="loginLogo"
|
|
width="50px"
|
|
height="auto"
|
|
mode="widthFix"
|
|
></u--image>
|
|
<view class="box">
|
|
<view class="text">{{ $lang.userBalance }}</view>
|
|
<view class="money">{{ money }}</view>
|
|
</view>
|
|
<u--image
|
|
:showLoading="false"
|
|
:src="require('static/images/card_bg.png')"
|
|
width="100%"
|
|
height="auto"
|
|
mode="widthFix"
|
|
></u--image>
|
|
</view>
|
|
<view class="content">
|
|
<view
|
|
class="cell"
|
|
v-for="(item, index) in userMenu"
|
|
:key="index"
|
|
@click="goPath(item)"
|
|
>
|
|
<view class="lab">{{ item.name }}</view>
|
|
<u-icon
|
|
class="icon"
|
|
name="arrow-right"
|
|
color="#757272"
|
|
size="16"
|
|
></u-icon>
|
|
</view>
|
|
<view class="logout" @tap="modalShow = true">{{ $lang.logout }}</view>
|
|
</view>
|
|
<u-picker
|
|
:title="$lang.languageSettings"
|
|
closeOnClickOverlay
|
|
:defaultIndex="defaultIndex"
|
|
:show="show"
|
|
:columns="langList"
|
|
:cancelText="$lang.cancel"
|
|
:confirmText="$lang.confirm"
|
|
keyName="name"
|
|
@close="show = false"
|
|
@cancel="show = false"
|
|
@confirm="confirm"
|
|
></u-picker>
|
|
<u-modal
|
|
:show="modalShow"
|
|
:title="$lang.tip"
|
|
:confirmText="$lang.confirm"
|
|
:cancelText="$lang.cancel"
|
|
@confirm="confirmLogout"
|
|
@cancel="modalShow = false"
|
|
:showCancelButton="true"
|
|
ref="uModal"
|
|
:asyncClose="true"
|
|
>
|
|
<view style="text-align: center">{{ $lang.logoutTip }}</view>
|
|
</u-modal>
|
|
<view class="mb60"></view>
|
|
</view>
|
|
</template>
|
|
|
|
<script>
|
|
import { mapState } from "vuex";
|
|
export default {
|
|
data() {
|
|
return {
|
|
show: false,
|
|
modalShow: false,
|
|
|
|
defaultIndex: [0],
|
|
langList: [
|
|
[
|
|
{ key: "en", name: "English" },
|
|
{ key: "tw", name: "繁體中文" },
|
|
{ key: "cn", name: "简体中文" },
|
|
{ key: "yn", name: "Việt nam" },
|
|
{ key: "kr", name: "한국어" },
|
|
{ key: "tl", name: "แบบไทย" },
|
|
{ key: "in", name: "Indonesia" },
|
|
],
|
|
],
|
|
money:0
|
|
};
|
|
},
|
|
computed: {
|
|
...mapState({
|
|
userInfo: (state) => state.app.userInfo,
|
|
language: (state) => state.app.language,
|
|
$lang: (state) => state.app.lang[state.app.language],
|
|
loginLogo: (state) => state.app.loginLogo,
|
|
userMenu: (state) => {
|
|
let list = [];
|
|
const lang = state.app.lang[state.app.language];
|
|
const userInfo = state.app.userInfo;
|
|
if (userInfo.pay_channel) {
|
|
list = lang.userMenu.filter(
|
|
(v) => v.id != 1
|
|
);
|
|
} else {
|
|
list = lang.userMenu.filter(
|
|
(v) => v.id != 1 && v.id != 2 && v.id != 4 && v.id != 5
|
|
);
|
|
}
|
|
return list;
|
|
},
|
|
}),
|
|
},
|
|
onLoad() {
|
|
this.langList[0].forEach((v, i) => {
|
|
if (v.key == this.language) {
|
|
this.defaultIndex = [i];
|
|
}
|
|
});
|
|
this.getUserMoneyData()
|
|
},
|
|
methods: {
|
|
confirm(item) {
|
|
this.$store.commit("app/updateLanguage", item.value[0].key);
|
|
this.show = false;
|
|
},
|
|
goPath(item) {
|
|
if (item.id == 0) {
|
|
this.show = true;
|
|
} else if (item.id == 4 || item.id == 5 || item.id == 6) {
|
|
uni.switchTab({
|
|
url: item.path,
|
|
});
|
|
} else {
|
|
if (this.userInfo.is_sw == 1) {
|
|
this.$toast({
|
|
message: this.$lang.is_sw,
|
|
duration: 2000,
|
|
});
|
|
} else {
|
|
uni.navigateTo({
|
|
url: item.path,
|
|
});
|
|
}
|
|
}
|
|
},
|
|
confirmLogout() {
|
|
localStorage.removeItem("userInfo");
|
|
this.$router.replace({ path: "/" });
|
|
},
|
|
getUserMoneyData() {
|
|
var that = this
|
|
const params = {
|
|
user_id: this.userInfo.id,
|
|
api_token: this.userInfo.api_token,
|
|
};
|
|
this.$api['getUserMoney'](params)
|
|
.then((res) => {
|
|
if (res.Success) {
|
|
that.money = parseFloat(res.Data.money).toFixed(2)
|
|
} else {
|
|
this.$toast({
|
|
message: res.Msg,
|
|
duration: 2000,
|
|
});
|
|
}
|
|
})
|
|
.catch((err) => {
|
|
console.log(err);
|
|
});
|
|
}
|
|
},
|
|
};
|
|
</script>
|
|
|
|
<style lang="scss" scoped>
|
|
.user {
|
|
background: #0b1520;
|
|
width: 100%;
|
|
min-height: 100vh;
|
|
.card {
|
|
width: 100%;
|
|
padding: 10px;
|
|
box-sizing: border-box;
|
|
position: relative;
|
|
.uid {
|
|
position: absolute;
|
|
left: 30px;
|
|
top: 25px;
|
|
z-index: 3;
|
|
font-size: 14px;
|
|
color: #573d14;
|
|
}
|
|
.logo {
|
|
position: absolute;
|
|
right: 25px;
|
|
top: 20px;
|
|
z-index: 3;
|
|
}
|
|
.box {
|
|
position: absolute;
|
|
left: 50%;
|
|
top: 50%;
|
|
z-index: 3;
|
|
transform: translate(-50%, -50%);
|
|
font-size: 18px;
|
|
font-weight: 600;
|
|
color: #573d14;
|
|
text-align: center;
|
|
.money {
|
|
padding-left: 38px;
|
|
padding-right: 36px;
|
|
padding-top: 10px;
|
|
padding-bottom: 4px;
|
|
background: url("/static/images/balance_icon.png") no-repeat;
|
|
background-size: 33px auto;
|
|
background-position: left top;
|
|
}
|
|
}
|
|
}
|
|
.content {
|
|
margin: 20px 15px;
|
|
border-radius: 5px;
|
|
overflow: hidden;
|
|
.cell {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
font-size: 16px;
|
|
padding: 15px 10px;
|
|
color: #deb366;
|
|
border-bottom: 1px solid #594522;
|
|
background: #151617;
|
|
&:active {
|
|
opacity: 0.8;
|
|
}
|
|
&:last-child {
|
|
border-bottom: none;
|
|
}
|
|
}
|
|
.logout {
|
|
width: 100%;
|
|
height: 48px;
|
|
line-height: 48px;
|
|
text-align: center;
|
|
font-size: 16px;
|
|
background: #e5b932;
|
|
font-weight: 600;
|
|
margin: 20px auto;
|
|
border-radius: 5px;
|
|
&:active {
|
|
opacity: 0.8;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
</style>
|