Browse Source

增加我的相关页面和语言切换

master
[liang] 3 years ago
parent
commit
7d6b6013f4
  1. 25
      components/KeyValueRow/KeyValueRow.vue
  2. 94
      components/language-popups/language-popups.vue
  3. 14
      main.js
  4. 66
      pages.json
  5. 91
      pages/index/index.vue
  6. 4
      pages/login/forget.vue
  7. 2
      pages/login/index.vue
  8. 6
      pages/login/register.vue
  9. 144
      pages/me/accountInfo.vue
  10. 78
      pages/me/changeLoginPassword.vue
  11. 78
      pages/me/changeWithdrawalPassword.vue
  12. 97
      pages/me/donateRecord.vue
  13. 250
      pages/me/index.vue
  14. 121
      pages/me/inviteFriends.vue
  15. 102
      pages/me/language.vue
  16. 94
      pages/me/myTeam.vue
  17. 114
      pages/me/notification.vue
  18. 100
      pages/me/notificationDetails.vue
  19. 355
      pages/me/transfer.vue
  20. 137
      pages/me/walletHistory.vue
  21. BIN
      static/home/map.png
  22. BIN
      static/home/pull-down.png
  23. BIN
      static/me/QR-code.png
  24. BIN
      static/me/arrow-right.png
  25. BIN
      static/me/ic_input_arrow_down.png
  26. BIN
      static/me/img_accountinfo01.png
  27. BIN
      static/me/img_accountinfo02.png
  28. BIN
      static/me/img_accountinfo03.png
  29. BIN
      static/me/img_accountinfo04.png
  30. BIN
      static/me/img_accountinfo05.png
  31. BIN
      static/me/img_accountinfo06.png
  32. BIN
      static/tongyonh/America_icon.png
  33. BIN
      static/tongyonh/Belarus_icon.png
  34. BIN
      static/tongyonh/China_icon.png
  35. BIN
      static/tongyonh/Hongkong_icon.png
  36. 239
      store/index.js
  37. 15
      utils/language/config.js
  38. 59
      utils/language/en_US.js
  39. 183
      utils/language/vi_VN.js
  40. 38
      utils/language/zh.js
  41. 182
      utils/language/zh_TW.js
  42. 42
      utils/uni-copy.js

25
components/KeyValueRow/KeyValueRow.vue

@ -1,9 +1,11 @@
<template>
<view class="KeyValueRow">
<u--text class="keyName" :text="keyName" :mode="mode" :lines="lines" :color='leftColor' :size="size">
<!-- <u--text class="keyName" :text="keyName" :mode="mode" :color='leftColor' :size="size">
</u--text>
<u--text class="value" :text="value" :mode="mode" :lines="lines" :color='rightColor' :size="size">
</u--text>
</u--text> -->
<view class="keyName" :style="{ color: leftColor, fontSize: size || leftSize, }">{{ keyName }} </view>
<view class="value" :style="{ color: leftColor, fontSize: size || leftSize, }">{{ value }}</view>
</view>
</template>
@ -38,26 +40,19 @@ export default {
size: {
type: String | Number,
default() {
return '28rpx'
return ''
}
},
/**
* date 日期格式化 , name姓名脱敏 *, price 显示金额
*/
mode: {
type: String,
leftSize: {
type: String | Number,
default() {
return ''
return '28rpx'
}
},
/**
* 超出隐藏
*/
lines: {
rightSize: {
type: String | Number,
default() {
return '1'
return '28rpx'
}
},
},

94
components/language-popups/language-popups.vue

@ -0,0 +1,94 @@
<template>
<view class="mask" :class="!show ? '' : 'mask-show'" @tap="tapMask">
<view class="popups">
<view v-for="(item, index) in popData" :key="index" @tap.stop="tapItem(item)" class="item">
{{ item.title }}
</view>
<slot></slot>
</view>
</view>
</template>
<script>
export default {
props: {
value: {
type: Boolean,
default: false
},
popData: {
type: Array,
default: () => []
},
},
data() {
return {
popupsTop: '0px',
popupsLeft: '0px',
show: false,
dynPlace: ''
}
},
mounted() {
},
methods: {
tapMask() {
this.$emit('input', !this.value)
},
tapItem(item) {
if (item.disabled) return
this.$emit('tapPopup', item)
this.$emit('input', !this.value)
},
},
watch: {
value: {
immediate: true,
handler: async function (newVal, oldVal) {
this.show = newVal
}
},
}
}
</script>
<style lang="scss" scoped>
.mask {
position: absolute;
top: 180rpx;
right: 36rpx;
z-index: 9999;
visibility: hidden;
width: 200rpx;
background: #323045;
border-radius: 8px;
&.mask-show {
visibility: visible;
}
&:after {
content: "";
position: absolute;
top: -9px;
right: 5px;
border-width: 0 10px 10px;
border-style: solid;
border-color: transparent transparent #323045;
}
.popups {
padding: 20rpx;
border-radius: 10rpx;
.item {
padding: 10rpx;
height: 40rpx;
line-height: 40rpx;
font-size: 28rpx;
padding: 10rpx;
border-bottom: 2rpx solid #ccc;
}
}
}
</style>

14
main.js

@ -7,8 +7,9 @@ import axios from './utils/axios.js'
import store from './store'
// 多国语言
import EN from './utils/language/en.js'
import ZH from './utils/language/zh.js'
import EN from './utils/language/en_US.js'
import ZH from './utils/language/zh_TW.js'
import VI from './utils/language/vi_VN.js'
// 自定义底部导航栏
@ -21,11 +22,12 @@ uni.$u.config.unit = 'rpx'
Vue.use(VueI18n);
const i18n = new VueI18n({
// locale: store.state.language, // 默认选择的语言
locale: 'en', // 默认选择的语言
locale: store.state.language, // 默认选择的语言
// locale: 'en_US', // 默认选择的语言
messages: {
'en': EN,
'zh': ZH,
'en_US': EN,
'zh_TW': ZH,
'vi_VN': VI,
}
})

66
pages.json

@ -80,6 +80,72 @@
"style": {
"navigationStyle": "custom"
}
},
{
"path": "pages/me/inviteFriends",
"style": {
"navigationStyle": "custom"
}
},
{
"path": "pages/me/accountInfo",
"style": {
"navigationStyle": "custom"
}
},
{
"path": "pages/me/changeLoginPassword",
"style": {
"navigationStyle": "custom"
}
},
{
"path": "pages/me/changeWithdrawalPassword",
"style": {
"navigationStyle": "custom"
}
},
{
"path": "pages/me/myTeam",
"style": {
"navigationStyle": "custom"
}
},
{
"path": "pages/me/walletHistory",
"style": {
"navigationStyle": "custom"
}
},
{
"path": "pages/me/notification",
"style": {
"navigationStyle": "custom"
}
},
{
"path": "pages/me/notificationDetails",
"style": {
"navigationStyle": "custom"
}
},
{
"path": "pages/me/donateRecord",
"style": {
"navigationStyle": "custom"
}
},
{
"path": "pages/me/language",
"style": {
"navigationStyle": "custom"
}
},
{
"path": "pages/me/transfer",
"style": {
"navigationStyle": "custom"
}
}
],

91
pages/index/index.vue

@ -2,9 +2,18 @@
<view class="main">
<!-- nav -->
<view class="nav-head">
<view class="title">{{ i18n.HOME }}</view>
<u-button class="button" color="#323045">{{ i18n.customerService }}</u-button>
<u-button class="serviceButton" color="#323045">{{ i18n.customerService }}</u-button>
<view class="languageBtn" @click.stop="languageShow = true">
{{ langTrue }}
</view>
<!-- popups弹窗 -->
<u-overlay :show="languageShow" @click="languageShow = false" :opacity="0">
<language-popups v-model="languageShow" :popData="languageData" @tapPopup="tapPopup">
</language-popups>
</u-overlay>
</view>
<!-- 轮播图 -->
<u-swiper class="swiper" :list="swiperList" previousMargin="48rpx" nextMargin="80rpx" circular :autoplay="true"
radius="32rpx" bgColor="rgba(0,0,0,0)" height="360rpx"></u-swiper>
@ -62,14 +71,20 @@
</template>
<script>
import languagePopups from '@/components/language-popups/language-popups.vue'
import languageData from '@/utils/language/config'
// echarts
import * as echarts from 'echarts';
let videoPlayerObj = {};
export default {
name: 'home',
components: { languagePopups },
data() {
return {
languageShow: false,
langTrue: languageData[0].title || 'English',
languageData,
popupShow: false,
swiperList: [
'https://cdn.uviewui.com/uview/swiper/swiper1.png',
@ -119,6 +134,10 @@ export default {
this.initChart()
})
if (uni.getStorageSync('langTrue')) {
this.langTrue = uni.getStorageSync('langTrue')
}
},
onHide() {
this.stopAllVideoPlay()
@ -129,6 +148,20 @@ export default {
}
},
methods: {
//
laug() {
this.laugValue = true;
},
//
tapPopup(e) {
this._i18n.locale = e.language
this.$store.commit('setLanguage', e.language)
this.langTrue = e.title
uni.setStorageSync('langTrue', e.title)
uni.redirectTo({
url: '/pages/home/index'
})
},
/**
* 在播放视频是暂停其他视频
* @param {*} e
@ -240,25 +273,20 @@ export default {
padding-bottom: 198rpx; // TabBar
.nav-head {
overflow: hidden;
position: fixed;
top: 0rpx;
height: 112rpx;
font-size: 36rpx;
color: #fff;
padding-top: 88rpx;
display: flex;
align-items: center;
width: 100%;
background-color: #15141F;
z-index: 8;
border-bottom: 4rpx solid #323045;
.title {
margin-left: 48rpx;
}
.button {
.serviceButton {
display: inline-block;
width: 286rpx;
height: 70rpx;
line-height: 70rpx;
@ -266,10 +294,53 @@ export default {
font-size: 28rpx;
color: #F2FE8D !important;
padding: 0;
margin-right: 24rpx;
margin: 20rpx 180rpx 0 48rpx;
vertical-align: top;
}
.languageBtn {
display: inline-block;
box-sizing: border-box;
width: 180rpx;
position: relative;
margin: 38rpx 48rpx 0 0;
font-size: 24rpx;
height: 36rpx;
line-height: 36rpx;
text-align: center;
padding-left: 12rpx;
&::before {
display: block;
position: absolute;
content: '';
background-image: url(../../static/home/map.png);
background-repeat: no-repeat;
background-size: 36rpx;
width: 36rpx;
height: 36rpx;
top: 0rpx;
left: 0rpx;
}
&::after {
display: block;
position: absolute;
content: '';
background-image: url(../../static/home/pull-down.png);
background-repeat: no-repeat;
background-size: 24rpx;
width: 24rpx;
height: 24rpx;
top: 12rpx;
right: 0rpx;
}
}
}
.swiper {
margin-top: 236rpx;
}

4
pages/login/forget.vue

@ -27,7 +27,7 @@
<u-icon class="icon"
:name="userInfo.password ? '../../static/login/Password_pr.png' : '../../static/login/Password_de.png'"
size="48rpx" width="48rpx"></u-icon>
<u-input class="input" v-model="userInfo.password" color="#fff" fontSize="32rpx" border="none"
<u-input class="input" type="password" v-model="userInfo.password" color="#fff" fontSize="32rpx" border="none"
:placeholder="i18n.passwordText">
</u-input>
</u-form-item>
@ -36,7 +36,7 @@
<u-icon class="icon"
:name="userInfo.confirmPassword ? '../../static/login/Password_pr.png' : '../../static/login/Password_de.png'"
size="48rpx" width="48rpx"></u-icon>
<u-input class="input" v-model="userInfo.confirmPassword" color="#fff" fontSize="32rpx"
<u-input class="input" type="password" v-model="userInfo.confirmPassword" color="#fff" fontSize="32rpx"
border="none" :placeholder="i18n.confirmPasswordText">
</u-input>
</u-form-item>

2
pages/login/index.vue

@ -15,7 +15,7 @@
<u-icon class="icon"
:name="userInfo.password ? '../../static/login/Password_pr.png' : '../../static/login/Password_de.png'"
size="48rpx" width="48rpx"></u-icon>
<u-input class="input" v-model="userInfo.password" color="#fff" fontSize="32rpx" border="none"
<u-input class="input" type="password" v-model="userInfo.password" color="#fff" fontSize="32rpx" border="none"
:placeholder="i18n.passwordInputText">
</u-input>
</u-form-item>

6
pages/login/register.vue

@ -29,7 +29,7 @@
<u-icon class="icon"
:name="userInfo.password ? '../../static/login/Password_pr.png' : '../../static/login/Password_de.png'"
size="48rpx" width="48rpx"></u-icon>
<u-input class="input" v-model="userInfo.password" color="#fff" fontSize="32rpx" border="none"
<u-input class="input" type="password" v-model="userInfo.password" color="#fff" fontSize="32rpx" border="none"
:placeholder="i18n.passwordText">
</u-input>
</u-form-item>
@ -38,7 +38,7 @@
<u-icon class="icon"
:name="userInfo.confirmPassword ? '../../static/login/Password_pr.png' : '../../static/login/Password_de.png'"
size="48rpx" width="48rpx"></u-icon>
<u-input class="input" v-model="userInfo.confirmPassword" color="#fff" fontSize="32rpx"
<u-input class="input" type="password" v-model="userInfo.confirmPassword" color="#fff" fontSize="32rpx"
border="none" :placeholder="i18n.confirmPasswordText">
</u-input>
</u-form-item>
@ -47,7 +47,7 @@
<u-icon class="icon"
:name="userInfo.withdrawalPassword ? '../../static/login/WithdrawalPassword_pr.png' : '../../static/login/WithdrawalPassword_de.png'"
size="48rpx" width="48rpx"></u-icon>
<u-input class="input" v-model="userInfo.withdrawalPassword" color="#fff" fontSize="32rpx"
<u-input class="input" type="password" v-model="userInfo.withdrawalPassword" color="#fff" fontSize="32rpx"
border="none" :placeholder="i18n.withdrawalPasswordText">
</u-input>
</u-form-item>

144
pages/me/accountInfo.vue

@ -0,0 +1,144 @@
<template>
<view class="main">
<!-- nav -->
<navigation>{{ i18n.AccountInfo }}</navigation>
<view class="body" @click="goto">
<!-- 修改登录密码按钮 -->
<u-button class="button" color="#211F32" throttleTime="500" id="ChangeLoginPassword">
<view class="content">{{ i18n.ChangeLoginPassword }}</view>
</u-button>
<!-- 修改赎回密码按钮 -->
<u-button class="button" color="#211F32" throttleTime="500" id="ChangeWithdrawalPassword">
<view class="content">{{ i18n.ChangeWithdrawalPassword }}</view>
</u-button>
<!-- 银行卡按钮 -->
<u-button class="button" color="#211F32" throttleTime="500" id="BankCard">
<view class="content">{{ i18n.BankCard }}</view>
</u-button>
<!-- 赎回地址按钮 -->
<u-button class="button" color="#211F32" throttleTime="500" id="WithdrawalAddress">
<view class="content">{{ i18n.WithdrawalAddress }}</view>
</u-button>
</view>
</view>
</template>
<script>
export default {
name: "accountInfo",
data() {
return {
};
},
computed: {
i18n() {
return this.$t("me");
},
},
onLoad() {
},
onShow() { },
methods: {
goto(e) {
// console.log(e.target.id);
const id = e.target.id;
let url = '';
switch (id) {
case 'ChangeLoginPassword':
url = '/pages/me/changeLoginPassword'
break;
case 'ChangeWithdrawalPassword':
url = '/pages/me/changeWithdrawalPassword'
break;
case 'BankCard':
break;
case 'WithdrawalAddress':
break;
default:
break;
}
if (url) {
// console.log(url);
uni.navigateTo({
url,
});
}
}
},
}
</script>
<style lang="scss" scoped>
.main {
.body {
overflow: hidden;
margin-top: 200rpx;
padding: 0 64rpx;
.button {
position: relative;
height: 112rpx;
margin-top: 32rpx;
border-radius: 32rpx;
.content {
width: 440rpx;
height: 112rpx;
line-height: 112rpx;
font-weight: 600;
font-size: 28rpx;
padding-left: 70rpx;
text-align: left;
&::before {
display: block;
position: absolute;
content: '';
background-image: url(../../static/me/img_accountinfo01.png);
background-repeat: no-repeat;
background-size: 80rpx;
width: 80rpx;
height: 80rpx;
top: 16rpx;
left: 24rpx;
}
&::after {
display: block;
position: absolute;
content: '';
background-image: url(../../static/me/ic_arrow_g.png);
background-repeat: no-repeat;
background-size: 32rpx;
width: 32rpx;
height: 32rpx;
top: 40rpx;
right: 24rpx;
}
}
&:nth-child(2) .content::before {
background-image: url(../../static/me/img_accountinfo02.png);
}
&:nth-child(3) .content::before {
background-image: url(../../static/me/img_accountinfo03.png);
}
&:nth-child(4) .content::before {
background-image: url(../../static/me/img_accountinfo04.png);
}
}
}
}
</style>

78
pages/me/changeLoginPassword.vue

@ -0,0 +1,78 @@
<template>
<view class="main">
<!-- nav -->
<navigation>{{ i18n.ChangeLoginPassword }}</navigation>
<view class="body">
<u-input class="input" type="password" v-model="oldPassword" color="#A1A0A8" fontSize="28rpx" border="none"
:placeholder="i18n.PleaseEnterTheOldPassword">
</u-input>
<u-input class="input" type="password" v-model="newPassword" color="#A1A0A8" fontSize="28rpx" border="none"
:placeholder="i18n.CreateNewLoginPassword">
</u-input>
<!-- 修改登录密码按钮 -->
<u-button class="button" color="#00E8A2" throttleTime="500" :disabled="disabled">
{{ i18n.Confirm }}
</u-button>
</view>
</view>
</template>
<script>
export default {
name: "changeLoginPassword",
data() {
return {
oldPassword: '',
newPassword: '',
disabled: true,
};
},
computed: {
i18n() {
return this.$t("me");
},
},
onLoad() {
},
onShow() { },
methods: {
},
}
</script>
<style lang="scss" scoped>
.main {
.body {
overflow: hidden;
margin-top: 200rpx;
padding: 0 64rpx;
.input {
height: 112rpx;
line-height: 112rpx;
background: #211F32;
margin: 32rpx 0;
border-radius: 32rpx;
padding-left: 32rpx !important;
}
.button {
position: relative;
height: 112rpx;
margin-top: 680rpx;
border-radius: 32rpx;
font-weight: 600;
color: #15141F !important;
font-size: 32rpx !important;
}
}
}
</style>

78
pages/me/changeWithdrawalPassword.vue

@ -0,0 +1,78 @@
<template>
<view class="main">
<!-- nav -->
<navigation>{{ i18n.ModifyWithdrawalPassword }}</navigation>
<view class="body">
<u-input class="input" type="password" v-model="oldPassword" color="#A1A0A8" fontSize="28rpx" border="none"
:placeholder="i18n.PleaseEnterTheOldPassword">
</u-input>
<u-input class="input" type="password" v-model="newPassword" color="#A1A0A8" fontSize="28rpx" border="none"
:placeholder="i18n.CreateNewPassword">
</u-input>
<!-- 修改登录密码按钮 -->
<u-button class="button" color="#00E8A2" throttleTime="500" :disabled="disabled">
{{ i18n.Confirm }}
</u-button>
</view>
</view>
</template>
<script>
export default {
name: "changeWithdrawalPassword",
data() {
return {
oldPassword: '',
newPassword: '',
disabled: true,
};
},
computed: {
i18n() {
return this.$t("me");
},
},
onLoad() {
},
onShow() { },
methods: {
},
}
</script>
<style lang="scss" scoped>
.main {
.body {
overflow: hidden;
margin-top: 200rpx;
padding: 0 64rpx;
.input {
height: 112rpx;
line-height: 112rpx;
background: #211F32;
margin: 32rpx 0;
border-radius: 32rpx;
padding-left: 32rpx !important;
}
.button {
position: relative;
height: 112rpx;
margin-top: 680rpx;
border-radius: 32rpx;
font-weight: 600;
color: #15141F !important;
font-size: 32rpx !important;
}
}
}
</style>

97
pages/me/donateRecord.vue

@ -0,0 +1,97 @@
<template>
<view class="main">
<!-- nav -->
<navigation>{{ i18n.DonateRecord }}</navigation>
<view class="body">
<view class="card" v-for="(item, index) in 4" :key="index">
<u-icon class="icon" :name="'../../static/me/img_donate.png'" size="64rpx" width="64rpx"></u-icon>
<view class="content">
<Key-value-row class="title" :keyName="'Donate Title'" :value="'200.00'" :leftColor="'#fff'"
:rightColor="'#F2FE8D'">
</Key-value-row>
<view class="date">2022/08/06 14:50:34</view>
</view>
</view>
</view>
</view>
</template>
<script>
import KeyValueRow from '../../components/KeyValueRow/KeyValueRow.vue';
export default {
components: { KeyValueRow },
name: "donateRecord",
data() {
return {
};
},
computed: {
i18n() {
return this.$t("me");
},
},
onLoad() {
},
onShow() { },
methods: {
},
}
</script>
<style lang="scss" scoped>
.main {
.body {
overflow: hidden;
margin-top: 200rpx;
padding: 0 32rpx;
.card {
height: 148rpx;
position: relative;
background: #211F32;
border-radius: 32rpx;
display: flex;
flex-wrap: wrap;
margin-top: 32rpx;
.icon {
margin: -20rpx 12rpx 0 20rpx;
border-radius: 20rpx;
}
.content {
width: 558rpx;
.title {
width: 558rpx;
height: 36rpx;
line-height: 36rpx;
margin-top: 32rpx;
font-size: 28rpx;
/deep/.u-text__value {
font-weight: 600 !important;
}
}
.date {
width: 558rpx;
height: 36rpx;
line-height: 36rpx;
font-size: 28rpx;
margin-top: 12rpx;
color: #A1A0A8;
}
}
}
}
}
</style>

250
pages/me/index.vue

@ -1,32 +1,79 @@
<template>
<view class="main">
<view class="contentBody">
<!-- 用户头像和id -->
<view class="userInfo">
<u-image class="headImg" src="../../static/me/Ellipse 85.png" width="160rpx" height="160rpx"
radius="160rpx"></u-image>
<view class="idAndAccount">
<view class="id">ID:984934</view>
<view class="account">{{i18n.account}}:348798457498579</view>
<view class="account">{{ i18n.account }}:348798457498579</view>
</view>
</view>
<!-- 三个按钮 -->
<view class="btnDiv">
<view class="btnDiv" >
<!-- 充值 -->
<view class="item" id='recharge' @click="goto">
<view class="img" id='recharge'></view>
<view class="title" id='recharge'>{{ i18n.Recharge }}</view>
</view>
<!-- 取现 -->
<view class="item" id='withdrawal' @click="goto">
<view class="img" id='withdrawal'></view>
<view class="title" id='withdrawal'>{{ i18n.Withdrawal }}</view>
</view>
<!-- 兑换 -->
<view class="item" id='transfer' @click="goto">
<view class="img" id='transfer'></view>
<view class="title" id='transfer'>{{ i18n.Transfer }}</view>
</view>
</view>
<!-- 余额相关 -->
<view class="balanceRow">
<!-- 可用余额 -->
<view class="item">
<u--image class="img" :showLoading="true" src="../../static/home/img_recharge.png" width="144rpx"
height="144rpx"></u--image>
<view class="text">{{ i18n.Recharge }}</view>
<view class="number">0</view>
<view class="title">{{ i18n.Balance }}</view>
</view>
<!-- 质押余额 -->
<view class="item">
<u--image class="img" :showLoading="true" src="../../static/home/img_Mine.png" width="144rpx"
height="144rpx"></u--image>
<view class="text">{{ i18n.Withdrawal }}</view>
<view class="number">0</view>
<view class="title">{{ i18n.Pledge }}</view>
</view>
<!-- 合约余额 -->
<view class="item">
<u--image class="img" :showLoading="true" src="../../static/home/img_Subcription.png" width="144rpx"
height="144rpx"></u--image>
<view class="text">{{ i18n.Subcription }}</view>
<view class="number">0</view>
<view class="title">{{ i18n.Contarct }}</view>
</view>
</view>
<!-- General -->
<view class="GeneralPart">
<view class="General">{{ i18n.General }}</view>
<view class="list" @click="goto">
<!-- 邀请朋友 -->
<view class="item" id="InviteFriends">{{ i18n.InviteFriends }}</view>
<!-- 账户信息 -->
<view class="item" id="AccountInfo">{{ i18n.AccountInfo }}</view>
<!-- 我的团队 -->
<view class="item" id="MyTeam">{{ i18n.MyTeam }}</view>
<!-- 钱包历史 -->
<view class="item" id="WalletHistory">{{ i18n.WalletHistory }}</view>
<!-- 通知 -->
<view class="item" id="Notification">{{ i18n.Notification }}</view>
<!-- 捐赠记录 -->
<view class="item" id="DonateRecord">{{ i18n.DonateRecord }}</view>
<!-- 语言 -->
<view class="item" id="Language">{{ i18n.Language }}</view>
<!-- 关于我们 -->
<view class="item" id="AboutUs">{{ i18n.AboutUs }}</view>
</view>
</view>
<!-- 退出登录 -->
<u-button class="logOutButton" color="#323045" throttleTime="500">
<view class="title">{{ i18n.LogOut }}</view>
</u-button>
</view>
@ -57,11 +104,48 @@ export default {
}
},
methods: {
gotoDetails(index) {
if (this.pageState !== 'product') return
uni.navigateTo({
url: `/pages/subscription/details?id=${index}`
});
goto(e) {
// console.log(e.target);
// console.log(e.target.id);
const id = e.target.id;
let url = '';
switch (id) {
case 'transfer':
url = '/pages/me/transfer'
break;
case 'InviteFriends':
url = '/pages/me/inviteFriends'
break;
case 'AccountInfo':
url = '/pages/me/accountInfo'
break;
case 'MyTeam':
url = '/pages/me/myTeam'
break;
case 'WalletHistory':
url = '/pages/me/walletHistory'
break;
case 'Notification':
url = '/pages/me/notification'
break;
case 'DonateRecord':
url = '/pages/me/donateRecord'
break;
case 'Language':
url = '/pages/me/language'
break;
case 'AboutUs':
break;
default:
break;
}
if (url) {
// console.log(url);
uni.navigateTo({
url,
});
}
}
}
}
@ -137,17 +221,145 @@ export default {
}
.btnDiv {
margin: 32rpx 48rpx;
margin: 32rpx 0;
.item {
display: inline-block;
width: 218rpx;
width: 200rpx;
height: 190rpx;
text-align: center;
background: #323045;
border-radius: 52rpx;
box-sizing: border-box;
.img {
margin: 0 36rpx 16rpx;
height: 64rpx;
width: 64rpx;
margin: 32rpx auto;
background-image: url(../../static/me/ic_u_recharge.png);
background-repeat: no-repeat;
background-size: 64rpx;
}
&:nth-child(2) {
margin: 0 26rpx;
.img {
background-image: url(../../static/me/ic_u_withdrawal.png);
}
}
&:nth-child(3) .img {
background-image: url(../../static/me/ic_u_transfer.png);
}
.title {
font-size: 26rpx;
}
}
}
.balanceRow {
margin: 32rpx 0;
background: #323045;
border-radius: 52rpx;
box-sizing: border-box;
.item {
display: inline-block;
width: 218rpx;
height: 200rpx;
text-align: center;
.number {
margin: 32rpx auto;
font-size: 48rpx;
}
.title {
font-size: 28rpx;
}
}
}
.GeneralPart {
.General {
font-size: 28rpx;
color: #A1A0A8;
}
.list {
font-size: #fff;
.item {
position: relative;
height: 116rpx;
font-size: 32rpx;
line-height: 116rpx;
border-bottom: 2rpx solid #323045;
&::after {
display: block;
position: absolute;
content: '';
background-image: url(../../static/me/arrow-right.png);
background-repeat: no-repeat;
background-size: 48rpx;
width: 48rpx;
height: 48rpx;
top: 32rpx;
right: 0rpx;
}
&:last-child {
border-bottom: none;
}
}
}
}
.logOutButton {
position: relative;
margin-top: 14rpx;
height: 112rpx;
line-height: 112rpx;
border-radius: 32rpx;
font-size: 36rpx;
color: #A1A0A8 !important;
.title {
padding-left: 80rpx;
&::before {
display: block;
position: absolute;
content: '';
background-image: url(../../static/me/ic_logout.png);
background-repeat: no-repeat;
background-size: 48rpx;
width: 48rpx;
height: 48rpx;
top: 30rpx;
left: 220rpx;
}
}
}
}

121
pages/me/inviteFriends.vue

@ -0,0 +1,121 @@
<template>
<view class="main">
<!-- nav -->
<navigation>{{ i18n.InviteFriends }}</navigation>
<view class="body">
<view class="shareText">{{ i18n.ShareWithFriends }}</view>
<view class="scanText">{{ i18n.ScanTheCode }}</view>
<!-- 二维码 -->
<view class="QRCode">
<u-image class="QRCodeImg" src="../../static/me/QR-code.png" width="400rpx" height="400rpx"></u-image>
</view>
<view class="myIdText">{{ i18n.MyReferralID }}{{referralID}}</view>
<!-- 按钮 -->
<u-button class="button" color="#00E8A2" throttleTime="500" @click="copyId(referralID)">{{
i18n.CopyID
}}
</u-button>
</view>
</view>
</template>
<script>
import uniCopy from '@/utils/uni-copy'
export default {
name: "inviteFriends",
data() {
return {
referralID: 857222,
};
},
computed: {
i18n() {
return this.$t("me");
},
},
onLoad() {
},
onShow() { },
methods: {
copyId(value = "") {
// console.log(value)
uniCopy({
content: value,
success: (res) => {
uni.showToast({
title: "复制成功",
duration: 3000,
})
},
error: (e) => {
uni.showToast({
title: e,
icon: 'none',
duration: 2000,
})
}
})
},
},
}
</script>
<style lang="scss" scoped>
.main {
.body {
overflow: hidden;
margin-top: 200rpx;
padding: 0 48rpx;
.shareText {
margin-top: 104rpx;
font-size: 60rpx;
font-weight: 800;
text-align: center;
}
.scanText {
font-size: 32rpx;
text-align: center;
color: #A2A0A8;
}
.QRCode {
box-sizing: border-box;
margin: 66rpx auto;
width: 520rpx;
height: 520rpx;
background-image: url(../../static/me/bg_QR_code.png);
background-repeat: no-repeat;
background-size: 520rpx;
padding: 52rpx;
.QRCodeImg {
margin-left: 8rpx;
}
}
.myIdText {
font-size: 48rpx;
font-weight: 800;
text-align: center;
}
.button {
height: 112rpx;
margin: 72rpx 0;
border-radius: 32rpx;
color: #15141F !important;
font-weight: 700;
font-size: 32rpx;
}
}
}
</style>

102
pages/me/language.vue

@ -0,0 +1,102 @@
<template>
<view class="main">
<!-- nav -->
<navigation>{{ i18n.Language }}</navigation>
<view class="body">
<radio-group class="radioGroup" @change="changeLanguage" v-model="language">
<label class="checkBox" v-for="(item, index) in languageData" :key="index">
<view class="name">{{ item.title }}</view>
<radio class="radio" color="#00E8A2" shape="square" :value="`${index}`"
:checked="language === item.language">
</radio>
</label>
</radio-group>
</view>
</view>
</template>
<script>
import KeyValueRow from '../../components/KeyValueRow/KeyValueRow.vue';
import languageData from '@/utils/language/config'
export default {
components: { KeyValueRow },
name: "donateRecord",
data() {
return {
languageData,
language: languageData[0].language || 'en_US',
langTrue: languageData[0].title || 'English',
};
},
computed: {
i18n() {
return this.$t("me");
},
},
onLoad() {
},
onShow() {
if (uni.getStorageSync('langTrue')) {
this.langTrue = uni.getStorageSync('langTrue')
this.language = this._i18n.locale
}
},
methods: {
changeLanguage(e) {
const index = e.target.value || 0
const current = this.languageData[index]
// console.log(current);
this._i18n.locale = current.language
this.$store.commit('setLanguage', current.language)
this.langTrue = current.title
uni.setStorageSync('langTrue', current.title)
}
},
}
</script>
<style lang="scss" scoped>
.main {
.body {
overflow: hidden;
margin-top: 200rpx;
.radioGroup {
margin-top: 60rpx;
height: 432rpx;
padding: 0 48rpx;
.checkBox {
position: relative;
height: 112rpx;
line-height: 112rpx;
display: flex;
align-items: center;
border-bottom: 2rpx solid #323045;
font-size: 32rpx;
.radio {
position: absolute;
right: 0;
}
/deep/.uni-radio-input {
// width: 48rpx;
// height: 48rpx;
// border-radius: 48rpx;
background: transparent;
}
// /deep/.uni-radio-input-checked::before {
// font-size: 36rpx;
// }
}
}
}
}
</style>

94
pages/me/myTeam.vue

@ -0,0 +1,94 @@
<template>
<view class="main">
<!-- nav -->
<navigation>{{ i18n.MyTeam }}</navigation>
<view class="body">
<view class="userItem" v-for="(item, index) in 4" :key="index">
<u-icon class="icon" :name="'../../static/me/Ellipse 85.png'" size="92rpx" width="92rpx"></u-icon>
<view>
<view class="email">krichjmadif0985@gmail.com</view>
<view class="date">2022/08/06</view>
<u-button class="button" color="#F2FE8D" throttleTime="500">{{ i18n.Fresh }}</u-button>
</view>
</view>
</view>
</view>
</template>
<script>
export default {
name: "myTeam",
data() {
return {
};
},
computed: {
i18n() {
return this.$t("me");
},
},
onLoad() {
},
onShow() { },
methods: {
},
}
</script>
<style lang="scss" scoped>
.main {
.body {
overflow: hidden;
margin-top: 200rpx;
padding: 0 32rpx;
.userItem {
position: relative;
background: #211F32;
border-radius: 32rpx;
display: flex;
flex-wrap: wrap;
margin-top: 32rpx;
.icon {
height: 160rpx;
margin-left: 20rpx;
margin-right: 26rpx;
}
.email {
width: 520rpx;
height: 52rpx;
line-height: 52rpx;
margin-top: 28rpx;
font-size: 32rpx;
}
.date {
width: 180rpx;
height: 52rpx;
line-height: 52rpx;
font-size: 28rpx;
}
.button {
position: absolute;
top: 72rpx;
right: 32rpx;
width: 120rpx;
height: 48rpx;
line-height: 48rpx;
font-size: 28rpx;
color: #15141F !important;
margin-left: 200rpx;
margin-top: 20rpx;
border-radius: 16rpx;
}
}
}
}
</style>

114
pages/me/notification.vue

@ -0,0 +1,114 @@
<template>
<view class="main">
<!-- nav -->
<navigation>{{ i18n.Notification }}</navigation>
<view class="body">
<view class="userItem" v-for="(item, index) in 4" :key="index" @click="gotoDetails(index)">
<u-icon class="icon" :name="'../../static/home/ic_proclamation.png'" size="60rpx" width="60rpx">
</u-icon>
<view class="content">
<view class="title">Please contact customer service on the top-left corner for identity verification
on your firstPlease contactservice on firstPlease contact customer service on the top-left
corner for identity Please contact customer service on the top-left corner for identity
verification on your firstPlease contactservice on firstPlease contact customer service on the
top-left corner for identity Please contact customer service on the top-left corner for identity
verification on your firstPlease contactservice on firstPlease contact customer ser</view>
<view class="date">{{ i18n.Release }}: 2022/08/06 14:51:34</view>
</view>
</view>
</view>
</view>
</template>
<script>
export default {
name: "notification",
data() {
return {
};
},
computed: {
i18n() {
return this.$t("me");
},
},
onLoad() {
},
onShow() { },
methods: {
gotoDetails(index) {
console.log(index);
uni.navigateTo({
url: `/pages/me/notificationDetails?id=${index}`
});
}
},
}
</script>
<style lang="scss" scoped>
.main {
.body {
overflow: hidden;
margin-top: 200rpx;
padding: 0 24rpx;
.userItem {
position: relative;
background: #211F32;
border-radius: 32rpx;
display: flex;
margin-top: 32rpx;
height: 218rpx;
overflow: hidden;
box-sizing: border-box;
.icon {
height: 60rpx;
margin-left: 20rpx;
margin-right: 12rpx;
margin-top: 20rpx;
}
.content {
overflow: hidden;
margin-top: 20rpx;
height: 218rpx;
.title {
width: 574rpx;
height: 116rpx;
font-size: 28rpx;
padding-right: 36rpx;
// ...
overflow: hidden;
text-overflow: ellipsis;
word-wrap: break-word;
display: -webkit-box; //
white-space: normal !important;
-webkit-line-clamp: 3; //
-webkit-box-orient: vertical;
}
.date {
width: 610rpx;
height: 64rpx;
line-height: 64rpx;
font-size: 28rpx;
color: #A1A0A8;
border-top: 1px solid #323045;
margin-top: 16rpx;
}
}
}
}
}
</style>

100
pages/me/notificationDetails.vue

@ -0,0 +1,100 @@
<template>
<view class="main">
<!-- nav -->
<navigation>{{ i18n.NotificationDetails }}</navigation>
<view class="body">
<view class="userItem">
<view class="content">
<view class="title">Please contact customer service on the top-left corner for identity verification
on your firstPlease contactservice on firstPlease contact customer service on the top-left
corner for identity Please contact customer service on </view>
<view class="article">Please contact customer service on the top-left corner for identity
verification on your firstPlease contactservice on firstPlease contact customer service on the
top-left corner for identity Please contact customer service on the top-left corner for identity
verification on your firstPlease contactservice on firstPlease contact customer service on the
top-left corner for identity Please contact customer service on the top-left corner for identity
verification on your firstPlease contactservice on firstPlease contact customer ser</view>
<view class="date">{{ i18n.Release }}: 2022/08/06 14:51:34</view>
</view>
</view>
</view>
</view>
</template>
<script>
export default {
name: "notificationDetails",
data() {
return {
};
},
computed: {
i18n() {
return this.$t("me");
},
},
onLoad() {
},
onShow() { },
methods: {
},
}
</script>
<style lang="scss" scoped>
.main {
.body {
overflow: hidden;
margin-top: 200rpx;
padding: 0 24rpx;
.userItem {
position: relative;
background: #211F32;
border-radius: 32rpx;
margin-top: 20rpx;
overflow: hidden;
box-sizing: border-box;
.content {
overflow: hidden;
.title {
width: 640rpx;
font-size: 28rpx;
padding: 20rpx 32rpx;
}
.article {
border-top: 2rpx solid #323045;
padding: 20rpx 32rpx;
font-size: 28rpx;
color: #A1A0A8;
}
.date {
width: 610rpx;
height: 64rpx;
line-height: 64rpx;
font-size: 28rpx;
color: #A1A0A8;
border-top: 2rpx solid #323045;
margin-top: 16rpx;
padding: 0 32rpx;
}
}
}
}
}
</style>

355
pages/me/transfer.vue

@ -0,0 +1,355 @@
<template>
<view class="main">
<!-- nav -->
<navigation>{{ i18n.WalletHistory }}</navigation>
<view class="body">
<view class="form">
<!-- coin选择框 -->
<view class="text">{{ i18n.SelectCurrency }}</view>
<view class="input-item">
<u-input class="input" v-model="coin" color="#fff" fontSize="32rpx" border="none"
:placeholder="i18n.PleaseChooseCoin">
</u-input>
<view class="downSelect" @click="USDTPopupShow = true"></view>
</view>
<!-- form地址选择框 -->
<view class="text">{{ i18n.From }}</view>
<view class="input-item">
<u-input class="input" v-model="coin" color="#fff" fontSize="32rpx" border="none"
:placeholder="i18n.OptionAccount">
</u-input>
<view class="downSelect" @click="accountPopupShow = true"></view>
</view>
<!-- to地址选择框 -->
<view class="text">{{ i18n.To }}</view>
<view class="input-item">
<u-input class="input" v-model="coin" color="#fff" fontSize="32rpx" border="none"
:placeholder="i18n.TradingAccount">
</u-input>
<view class="downSelect" @click="accountPopupShow = true"></view>
</view>
<!-- 数量 -->
<view class="text">{{ i18n.TransferNumber }}</view>
<view class="input-item">
<u-input class="input" v-model="coin" color="#fff" fontSize="32rpx" border="none"
:placeholder="i18n.PleaseEnterNumber">
</u-input>
<view class="numberDownSelect">USDT <view class="all">ALL</view>
</view>
</view>
<view class="Usable">{{ i18n.Usable }} <view class="number">560878.90000000</view>
</view>
</view>
<!-- 按钮 -->
<u-button class="transferButton" color="#00E8A2" throttleTime="500">{{
i18n.Transfer
}}</u-button>
<!-- USDT按钮通知弹出层 -->
<u-popup class="USDTPopup" :show="USDTPopupShow" round="40rpx" mode="bottom" @close="USDTPopupShow = false"
@open="USDTPopupShow = true" bgColor="#211F32">
<view class="content">
<view class="close" @click="USDTPopupShow = false"></view>
<scroll-view scroll-y="true" style="height: 432rpx;" scroll-with-animation="true" @touchmove.stop>
<radio-group class="radioGroup" @change="USDTRadioChange" v-model="USDTRadioValue">
<label class="checkBox" v-for="(item, index) in 10" :key="index">
<view class="icon">
<u-icon name="../../static/maskets/bye.png" size="52rpx" width="52rpx"></u-icon>
</view>
<view class="iconName">
<view class="top">USDT</view>
<view class="bottom">BTC</view>
</view>
<radio color="#00E8A2" shape="square"></radio>
</label>
</radio-group>
</scroll-view>
<u-button class="button" color="#00E8A2" throttleTime="500" @click="USDTPopupShow = false">OK
</u-button>
</view>
</u-popup>
<!-- account账户按钮通知弹出层 -->
<u-popup class="accountPopup" :show="accountPopupShow" round="40rpx" mode="bottom"
@close="accountPopupShow = false" @open="accountPopupShow = true" bgColor="#211F32">
<view class="content">
<view class="close" @click="accountPopupShow = false"></view>
<scroll-view scroll-y="true" style="height: 200rpx;" scroll-with-animation="true" @touchmove.stop>
<radio-group class="radioGroup" @change="accountRadioChange" v-model="accountRadioValue">
<label class="checkBox" v-for="(item, index) in 3" :key="index">
<view class="name">Option account</view>
<radio color="#00E8A2" shape="square"></radio>
</label>
</radio-group>
</scroll-view>
<u-button class="button" color="#00E8A2" throttleTime="500" @click="accountPopupShow = false">OK
</u-button>
</view>
</u-popup>
</view>
</view>
</template>
<script>
export default {
name: "transfer",
data() {
return {
coin: '',
USDTPopupShow: false,
accountPopupShow: false,
USDTRadioValue: '',
accountRadioValue: '',
};
},
computed: {
i18n() {
return this.$t("me");
},
},
onLoad() {
},
onShow() { },
methods: {
USDTRadioChange(e) {
console.log(e);
},
accountRadioChange(e) {
console.log(e);
}
},
}
</script>
<style lang="scss" scoped>
.main {
.body {
.form {
margin: 232rpx 32rpx 0;
background: #211F32;
border-radius: 32rpx;
padding: 0 32rpx;
overflow: hidden;
.text {
margin: 32rpx 0 20rpx;
font-size: 32rpx;
color: #A1A0A8;
}
.input-item {
position: relative;
background: #323045;
border-radius: 32rpx;
.input {
width: 400rpx;
height: 112rpx;
padding-left: 40rpx !important;
}
.downSelect {
position: absolute;
width: 32rpx;
height: 32rpx;
top: 36rpx;
right: 32rpx;
background-image: url(../../static/me/ic_input_arrow_down.png);
background-repeat: no-repeat;
background-size: 32rpx;
}
.numberDownSelect {
position: absolute;
width: 32rpx;
height: 32rpx;
top: 36rpx;
right: 148rpx;
.all {
padding-left: 16rpx;
display: inline;
font-size: 28rpx;
color: #00E8A2;
}
}
}
.Usable {
margin: 32rpx 0;
color: #FFFFFF;
font-size: 12px;
.number {
display: inline;
color: #00E8A2;
}
}
}
.transferButton {
box-sizing: border-box;
margin: 64rpx 32rpx;
width: 686rpx;
height: 112rpx;
line-height: 112rpx;
border-radius: 32rpx;
font-size: 32rpx;
color: #15141F !important;
}
.USDTPopup {
.content {
height: 730rpx;
.close {
margin: 48rpx 346rpx;
width: 58rpx;
height: 20rpx;
background-image: url(../../static/charity/Turn.png);
background-repeat: no-repeat;
background-size: 58rpx 20rpx;
}
.radioGroup {
height: 432rpx;
.checkBox {
height: 84rpx;
width: 670rpx;
display: flex;
align-items: center;
margin: 0 40rpx 32rpx;
.icon {
width: 84rpx;
height: 84rpx;
border-radius: 20rpx;
overflow: hidden;
display: inline-block;
box-sizing: border-box;
background: #323045;
padding: 16rpx;
margin-right: 20rpx;
}
.iconName {
width: 520rpx;
.top {
font-size: 32rpx;
color: #fff;
}
.bottom {
font-size: 24rpx;
color: #A1A0A8;
}
}
/deep/.uni-radio-input {
width: 48rpx;
height: 48rpx;
border-radius: 16rpx;
background: #323045;
}
/deep/.uni-radio-input-checked::before {
font-size: 36rpx;
}
}
}
.button {
width: 654rpx;
margin: 40rpx 48rpx;
border-radius: 32rpx;
height: 112rpx;
line-height: 112rpx;
color: #15141F !important;
}
}
}
.accountPopup {
.content {
height: 484rpx;
.close {
margin: 48rpx 346rpx;
width: 58rpx;
height: 20rpx;
background-image: url(../../static/charity/Turn.png);
background-repeat: no-repeat;
background-size: 58rpx 20rpx;
}
.radioGroup {
height: 200rpx;
.checkBox {
height: 84rpx;
width: 670rpx;
display: flex;
align-items: center;
margin: 0 40rpx 32rpx;
.name {
width: 600rpx;
font-size: 32rpx;
color: #fff;
}
/deep/.uni-radio-input {
width: 48rpx;
height: 48rpx;
border-radius: 16rpx;
background: #323045;
}
/deep/.uni-radio-input-checked::before {
font-size: 36rpx;
}
}
}
.button {
width: 654rpx;
margin: 20rpx 48rpx;
border-radius: 32rpx;
height: 112rpx;
line-height: 112rpx;
color: #15141F !important;
}
}
}
}
}
</style>

137
pages/me/walletHistory.vue

@ -0,0 +1,137 @@
<template>
<view class="main">
<!-- nav -->
<navigation>{{ i18n.WalletHistory }}</navigation>
<!-- headBtn -->
<view class="head">
<view class="headItem" @click="pageState = 'balance'" :class="{ select: pageState === 'balance' }">
{{ i18n.Balance }}
</view>
<view class="headItem" @click="pageState = 'contarct'" :class="{ select: pageState === 'contarct' }">
{{ i18n.Contarct }}
</view>
</view>
<view class="cardList">
<view class="card" v-for="(item, index) in 4" :key="index">
<!-- 卡片条件渲染 -->
<!-- balance -->
<card-header v-if="pageState === 'balance'"
:iconName="`../../static/me/${(0 + +balanceTestValue) > 0 ? 'ic_wallet_add' : 'ic_wallet_minus'}.png`"
:title="'973430980989323445'" :rightName="balanceTestValue"
:fontColor="`${(0 + +balanceTestValue) > 0 ? '#00E8A2' : '#F4506A'}`">
</card-header>
<view class="dataBody" v-if="pageState === 'balance'">
<Key-value-row :keyName="i18n.Time" :value="'2022/08/06 14:51'"></Key-value-row>
<view class="text">Postscript : ontact customer service on the top-left corner for identity verific
</view>
</view>
<!-- contarct -->
<card-header v-if="pageState === 'contarct'"
:iconName="`../../static/me/${(0 + +contarctTestValue) > 0 ? 'ic_wallet_add' : 'ic_wallet_minus'}.png`"
:title="'973430980989323445'" :rightName="contarctTestValue"
:fontColor="`${(0 + +contarctTestValue) > 0 ? '#00E8A2' : '#F4506A'}`">
</card-header>
<view class="dataBody" v-if="pageState === 'contarct'">
<Key-value-row :keyName="i18n.Time" :value="'2022/08/06 14:51'"></Key-value-row>
<view class="text">Postscript : ontact customer service on the top-left corner for identity verific
</view>
</view>
</view>
</view>
</view>
</template>
<script>
import KeyValueRow from '../../components/KeyValueRow/KeyValueRow.vue';
import CardHeader from '../../components/cardHeader/cardHeader.vue';
export default {
components: { KeyValueRow, CardHeader },
name: "walletHistory",
data() {
return {
pageState: 'balance',
balanceTestValue: '+100', //
contarctTestValue: '-100',
};
},
computed: {
i18n() {
return this.$t("me");
},
},
onLoad() {
},
onShow() { },
methods: {
},
}
</script>
<style lang="scss" scoped>
.main {
.head {
margin-top: 200rpx;
margin-left: 60rpx;
width: 632rpx;
display: flex;
justify-content: space-around;
align-items: center;
padding: 48rpx 0;
.headItem {
width: 300rpx;
height: 68rpx;
line-height: 68rpx;
background: #211F32;
border-radius: 16rpx;
text-align: center;
font-size: 32rpx;
color: #A1A0A8;
&.select {
background: #00E8A2;
color: #15141F;
}
}
}
.cardList {
padding-bottom: 40rpx;
.card {
overflow: hidden;
background: #211F32;
border-radius: 32rpx;
margin: 0 32rpx 32rpx;
.dataBody {
box-sizing: border-box;
padding: 32rpx;
.text {
margin-top: 20rpx;
padding: 10rpx 16rpx;
background: #323045;
border-radius: 8rpx;
font-size: 24rpx;
color: #A1A0A8;
}
}
}
}
}
</style>

BIN
static/home/map.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

BIN
static/home/pull-down.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 278 B

BIN
static/me/QR-code.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

BIN
static/me/arrow-right.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 706 B

BIN
static/me/ic_input_arrow_down.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 345 B

BIN
static/me/img_accountinfo01.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.8 KiB

After

Width:  |  Height:  |  Size: 2.9 KiB

BIN
static/me/img_accountinfo02.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.9 KiB

After

Width:  |  Height:  |  Size: 3.0 KiB

BIN
static/me/img_accountinfo03.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.0 KiB

After

Width:  |  Height:  |  Size: 3.8 KiB

BIN
static/me/img_accountinfo04.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.8 KiB

After

Width:  |  Height:  |  Size: 3.2 KiB

BIN
static/me/img_accountinfo05.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.2 KiB

BIN
static/me/img_accountinfo06.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

BIN
static/tongyonh/America_icon.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.2 KiB

BIN
static/tongyonh/Belarus_icon.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.1 KiB

BIN
static/tongyonh/China_icon.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.6 KiB

BIN
static/tongyonh/Hongkong_icon.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.2 KiB

239
store/index.js

@ -3,128 +3,129 @@ import Vuex from 'vuex'
Vue.use(Vuex)
const store = new Vuex.Store({
state: {
//
btci:1,
ethi:1,
troni:1,
// 临时存放的
noBackupWalletInfo: uni.getStorageSync("noBackupWalletInfo") || {
walletPassword: '',
wallet:{},
},
// 正式的值
walletInfo: uni.getStorageSync("walletInfo") || {
walletPassword: '',
walletList:[]
},
// 查询是否激活
isActivation: uni.getStorageSync("isActivation") || false,
// 下载地址
installAddress: uni.getStorageSync('installAddress') || 'baidu.com',
// 更新提示内容
updateTipContent: uni.getStorageSync('updateTipContent') || '版本更新',
// 中英化
language: uni.getStorageSync("language") || 'en',
// 是否需要更新
isUpdate: false
// 所有的余额
// balance: uni.getStorageSync("balance") || {
// bmsBalance: 0,
// bmdtBalance: 0,
// ercBalance: 0,
// ethBalance: 0,
// ethUsdt: 0, //汇率
// trcBalance: 0,
// trxBalance: 0,
// trxUsdt: 0, //汇率
// },
// // BMS交易记录
// bmsTransactionList: [
// ],
// // BMDT交易记录
// bmdtTransactionList: [
// ],
// // 公募记录
// publicOfferingRecords: [],
},
mutations: {
addBtci(state,num){
var a=uni.getStorageSync('btci')
console.log(a,2224)
if(a==''){
uni.setStorageSync('btci',state.btci)
console.log(state.btci,2224)
}else{
state.btci=uni.getStorageSync('btci')
state.btci =state.btci+num
uni.setStorageSync('btci',state.btci)
console.log(state.btci,4444)
}
},
addEthi(state,num){
var a=uni.getStorageSync('ethi')
if(a==''){
uni.setStorageSync('ethi',state.ethi)
console.log(state.ethi,2224)
}else{
state.ethi=uni.getStorageSync('ethi')
state.ethi =state.ethi+num
uni.setStorageSync('ethi',state.ethi)
console.log(state.ethi,4444)
}
},
state: {
//
btci: 1,
ethi: 1,
troni: 1,
// 临时存放的
noBackupWalletInfo: uni.getStorageSync("noBackupWalletInfo") || {
walletPassword: '',
wallet: {},
},
// 正式的值
walletInfo: uni.getStorageSync("walletInfo") || {
walletPassword: '',
walletList: []
},
addTroni(state,num){
var a=uni.getStorageSync('troni')
if(a==''){
uni.setStorageSync('troni',state.troni)
}else{
state.troni=uni.getStorageSync('troni')
state.troni =state.troni+num
uni.setStorageSync('troni',state.troni)
}
},
// 设置选中的钱包
setSelectWallet: (state, selected) => {
const obj = state
obj.selected = selected
},
// 设置是否已激活
setIsActivation: (state, isActivation) => {
const obj = state
obj.isActivation = isActivation
},
// 设置下载地址
setInstallAddress: (state, installAddress) => {
const obj = state
obj.installAddress = installAddress
},
// 设置版本更新内容
setUpdateTipContent: (state, updateTipContent) => {
const obj = state
obj.updateTipContent = updateTipContent
// 查询是否激活
isActivation: uni.getStorageSync("isActivation") || false,
// 下载地址
installAddress: uni.getStorageSync('installAddress') || 'baidu.com',
// 更新提示内容
updateTipContent: uni.getStorageSync('updateTipContent') || '版本更新',
// 中英化
language: uni.getStorageSync("language") || 'en_US',
// 是否需要更新
isUpdate: false
// 所有的余额
// balance: uni.getStorageSync("balance") || {
// bmsBalance: 0,
// bmdtBalance: 0,
// ercBalance: 0,
// ethBalance: 0,
// ethUsdt: 0, //汇率
// trcBalance: 0,
// trxBalance: 0,
// trxUsdt: 0, //汇率
// },
// // BMS交易记录
// bmsTransactionList: [
// ],
// // BMDT交易记录
// bmdtTransactionList: [
// ],
// // 公募记录
// publicOfferingRecords: [],
},
// 设置中英文
setLanguage: (state, language) => {
const obj = state
obj.language = language
mutations: {
addBtci(state, num) {
var a = uni.getStorageSync('btci')
console.log(a, 2224)
if (a == '') {
uni.setStorageSync('btci', state.btci)
console.log(state.btci, 2224)
} else {
state.btci = uni.getStorageSync('btci')
state.btci = state.btci + num
uni.setStorageSync('btci', state.btci)
console.log(state.btci, 4444)
}
},
addEthi(state, num) {
var a = uni.getStorageSync('ethi')
if (a == '') {
uni.setStorageSync('ethi', state.ethi)
console.log(state.ethi, 2224)
} else {
state.ethi = uni.getStorageSync('ethi')
state.ethi = state.ethi + num
uni.setStorageSync('ethi', state.ethi)
console.log(state.ethi, 4444)
}
},
addTroni(state, num) {
var a = uni.getStorageSync('troni')
if (a == '') {
uni.setStorageSync('troni', state.troni)
} else {
state.troni = uni.getStorageSync('troni')
state.troni = state.troni + num
uni.setStorageSync('troni', state.troni)
}
},
// 设置选中的钱包
setSelectWallet: (state, selected) => {
const obj = state
obj.selected = selected
},
// 设置是否已激活
setIsActivation: (state, isActivation) => {
const obj = state
obj.isActivation = isActivation
},
// 设置下载地址
setInstallAddress: (state, installAddress) => {
const obj = state
obj.installAddress = installAddress
},
// 设置版本更新内容
setUpdateTipContent: (state, updateTipContent) => {
const obj = state
obj.updateTipContent = updateTipContent
},
// 设置中英文
setLanguage: (state, language) => {
const obj = state
obj.language = language
uni.setStorageSync("language", language)
},
// 设置是否需要更新
setIsUpdate: (state, isUpdate) => {
const obj = state
obj.isUpdate = isUpdate
}
},
// 设置是否需要更新
setIsUpdate: (state, isUpdate) => {
const obj = state
obj.isUpdate = isUpdate
}
},
})
export default store

15
utils/language/config.js

@ -0,0 +1,15 @@
export default [
{
title: 'English',
language: 'en_US',
},
{
title: '繁体中文',
language: 'zh_TW'
},
{
title: 'Tiếng Việt',
language: 'vi_VN'
}
]

59
utils/language/en.js → utils/language/en_US.js

@ -1,4 +1,4 @@
// en.js
// en_US.js
export default {
// tab bar 相关
tabBar: {
@ -85,8 +85,12 @@ export default {
WithdrawalPassword: 'Withdrawal Password',
},
// 申购页面相关 subscription
// Recharge
recharge:{
Recharge:'Recharge'
},
// 申购页面相关 subscription
subscription: {
// 公共
Product: 'Product',
@ -130,5 +134,56 @@ export default {
Balance: 'Balance(U)',
Pledge: 'Pledge(U)',
Contarct: 'Contarct(U)',
General: 'General',
InviteFriends: 'Invite friends',
AccountInfo: 'Account Info',
MyTeam: 'My Team',
WalletHistory: 'Wallet history',
Notification: 'Notification',
DonateRecord: 'Donate record',
Language:'Language',
AboutUs: 'About us',
LogOut: 'Log out',
ShareWithFriends: 'Share with friends',
ScanTheCode: 'Scan the code to download',
MyReferralID: 'My Referral ID:',
CopyID: 'Copy ID',
ChangeLoginPassword:'Change Login Password',
ChangeWithdrawalPassword:'Change Withdrawal Password',
BankCard:'Bank Card',
WithdrawalAddress:'Withdrawal Address',
PleaseEnterTheOldPassword:'Please Enter the old password',
CreateNewLoginPassword:'Create new Login password',
Confirm:'Confirm',
ModifyWithdrawalPassword:'Modify Withdrawal Password',
CreateNewPassword:'Create new password',
Fresh:'Fresh',
Release:'Release',
NotificationDetails:'Notification Details',
DonateRecord:'Donate record',
Time:'Time',
SelectCurrency:'Select currency',
PleaseChooseCoin: 'Please choose coin',
From:'From',
OptionAccount:'Option account',
To:'To',
TradingAccount:'Trading account',
TransferNumber:'Transfer number',
PleaseEnterNumber: 'Please enter number',
Usable:'Usable :',
}
}

183
utils/language/vi_VN.js

@ -0,0 +1,183 @@
// en_US.js
export default {
// tab bar 相关
tabBar: {
Home: 'หน้าแรก',
Markets: 'สัญญา',
Charity: 'การกุศล',
Subscription: 'การสั่งซื้อ',
Me: 'ของฉัน',
},
// 登陆相关页面
login: {
// 公共字段
Login: 'Login',
SignUp: 'Sign Up',
ForgotPassword: 'Forgot password',
// login
welcomeText: 'Hi, Welcome Back!',
signInText: 'Sign in to your account.',
emailInputText: 'Enter email address',
emailInputMessage: 'Please enter your email address',
passwordInputText: 'Password',
passwordInputMessage: 'Please enter your password',
forgotText: 'Forgot Password?',
notAccountText: 'Don’t have account?',
agreeToBackup: 'Please check the prompt to agree to backup',
checkTheTermsOfService: 'Please review and agree to the terms of service',
// register
registerWelcomeText: "Getting Started",
registerCreate: "Create an account to continue!",
verificationCodeText: 'Verification Code',
verificationCodeMessage: 'Please enter verification code',
passwordText: 'Create The Login Password',
passwordMessage: 'Please enter your password',
confirmPasswordText: 'Confirm Login Password',
confirmPasswordMessage: 'Please confirm login password',
withdrawalPasswordText: 'Create The Withdrawal Password',
withdrawalPasswordMessage: 'Please enter the withdrawal password',
InvitationCodeText: 'Invitation code',
InvitationCodeMessage: 'Please enter the invitation code',
agreeText: 'By creating an account, you agree to our ',
Terms: 'Terms',
and: 'and',
Conditions: 'Conditions',
haveAccount: 'Already have an account?',
// forget
Save: 'Save',
},
// 首页相关页面
home: {
// 公共字段
HOME: 'HOME',
// home首页
customerService: 'Customer Service',
homeMessage: `Please contact customer service on the top-left corner for identity verification on your first Please contact customer service on the top-left corner for identity verification on your first...Please contact customer service on the top-left corner for identity verification on your first... `,
Recharge: 'Recharge',
Mine: 'Mine',
Subcription: 'Subcription',
TodaySteps: "Today's steps",
ReceiveEarnings: "Receive yesterday's earnings",
},
// 合约页面相关
markets: {
// markets
TrandingPair: 'Tranding Pair',
LatestPrice: 'Latest Price',
RiseAndfall: '24H Rise and fall',
},
// 捐赠页面相关
charity: {
CharityDetails: 'Charity Details',
About: 'About',
Participants: 'Participants',
DonateNow: 'Donate Now',
PleaseChooseCoin: 'Please choose coin',
AvailableBlance: 'Available blance',
Quantity: 'Quantity',
WithdrawalPassword: 'Withdrawal Password',
},
// 申购页面相关 subscription
subscription: {
// 公共
Product: 'Product',
Pending: 'Pending',
Complete: 'Complete',
// Product
Subscribe: 'Subscribe',
Ended: 'Ended',
ComingSoon: 'Coming soon',
STLTotalCirculation: 'STL total circulation',
PrivateSalePrice: 'Private sale price',
ICOTime: 'ICO Time',
// Pending //Complete
HeaderPending: 'Pending',
HeaderComplete: 'Complete',
Price: 'Price',
Quantity: 'Quantity',
ConfirmAmount: 'Confirm amount',
USDT: 'USDT',
Time: 'Time',
CheckTheNumberoOfUSDT: 'Check the number of USDT',
// Subscription
Subscription: 'Subscription',
Days: 'Days',
Hours: 'Hours',
Minutes: 'Minutes',
Seconds: 'Seconds',
Total: 'Total',
SubscribeNow: 'Subscribe Now',
ProjectDetails: 'Project Details',
Video: 'Video',
WhiteBook: 'White Book',
},
//me
me: {
account: 'account',
Recharge: 'Recharge',
Withdrawal: 'Withdrawal',
Transfer: 'Transfer',
Balance: 'Balance(U)',
Pledge: 'Pledge(U)',
Contarct: 'Contarct(U)',
General: 'General',
InviteFriends: 'Invite friends',
AccountInfo: 'Account Info',
MyTeam: 'My Team',
WalletHistory: 'Wallet history',
Notification: 'Notification',
DonateRecord: 'Donate record',
Language:'ภาษา',
AboutUs: 'About us',
LogOut: 'Log out',
ShareWithFriends: 'Share with friends',
ScanTheCode: 'Scan the code to download',
MyReferralID: 'My Referral ID:',
CopyID: 'Copy ID',
ChangeLoginPassword:'Change Login Password',
ChangeWithdrawalPassword:'Change Withdrawal Password',
BankCard:'Bank Card',
WithdrawalAddress:'Withdrawal Address',
PleaseEnterTheOldPassword:'Please Enter the old password',
CreateNewLoginPassword:'Create new Login password',
Confirm:'Confirm',
ModifyWithdrawalPassword:'Modify Withdrawal Password',
CreateNewPassword:'Create new password',
Fresh:'Fresh',
Release:'Release',
NotificationDetails:'Notification Details',
DonateRecord:'Donate record',
Time:'Time',
SelectCurrency:'Select currency',
PleaseChooseCoin: 'Please choose coin',
From:'From',
OptionAccount:'Option account',
To:'To',
TradingAccount:'Trading account',
TransferNumber:'Transfer number',
PleaseEnterNumber: 'Please enter number',
Usable:'Usable :',
}
}

38
utils/language/zh.js

@ -1,38 +0,0 @@
// zh.js
export default {
login: {
// 公共字段
Login:'Login',
SignUp:'Sign Up',
//login
welcomeText:'你好,欢迎回来!',
signInText:'请登录您的账户.',
emailInputText:'请输入邮箱',
emailInputMessage:'邮箱密码不能为空',
passwordInputText:'请输入密码',
passwordInputMessage:'密码不能为空',
forgotText:'忘记密码?',
notAccountText:'Don’t have account?',
agreeToBackup: '请勾选同意备份的提示',
checkTheTermsOfService: '请查看并同意服务条款',
// register
registerWelcomeText: "Getting Started",
registerCreate: "Create an account to continue!",
verificationCodeText: 'Verification Code',
verificationCodeMessage: 'Please enter verification code',
passwordText: 'Create The Login Password',
passwordMessage: 'Please enter your password',
confirmPasswordText: 'Confirm Login Password',
confirmPasswordMessage: 'Please confirm login password',
withdrawalPasswordText: 'Create The Withdrawal Password',
withdrawalPasswordMessage: 'Please enter the withdrawal password',
InvitationCodeText: 'Invitation code',
InvitationCodeMessage: 'Please enter the invitation code',
aggreeText :'By creating an account, you aggree to our ',
Terms:'Terms',
and:'and',
Conditions:'Conditions',
}
}

182
utils/language/zh_TW.js

@ -0,0 +1,182 @@
// zh_TW.js
export default {
// tab bar 相关
tabBar: {
Home: '首頁',
Markets: '合約',
Charity: '慈善',
Subscription: '申購',
Me: '我的',
},
// 登陆相关页面
login: {
// 公共字段
Login: 'Login',
SignUp: 'Sign Up',
ForgotPassword: 'Forgot password',
// login
welcomeText: 'Hi, Welcome Back!',
signInText: 'Sign in to your account.',
emailInputText: 'Enter email address',
emailInputMessage: 'Please enter your email address',
passwordInputText: 'Password',
passwordInputMessage: 'Please enter your password',
forgotText: 'Forgot Password?',
notAccountText: 'Don’t have account?',
agreeToBackup: 'Please check the prompt to agree to backup',
checkTheTermsOfService: 'Please review and agree to the terms of service',
// register
registerWelcomeText: "Getting Started",
registerCreate: "Create an account to continue!",
verificationCodeText: 'Verification Code',
verificationCodeMessage: 'Please enter verification code',
passwordText: 'Create The Login Password',
passwordMessage: 'Please enter your password',
confirmPasswordText: 'Confirm Login Password',
confirmPasswordMessage: 'Please confirm login password',
withdrawalPasswordText: 'Create The Withdrawal Password',
withdrawalPasswordMessage: 'Please enter the withdrawal password',
InvitationCodeText: 'Invitation code',
InvitationCodeMessage: 'Please enter the invitation code',
agreeText: 'By creating an account, you agree to our ',
Terms: 'Terms',
and: 'and',
Conditions: 'Conditions',
haveAccount: 'Already have an account?',
// forget
Save: 'Save',
},
// 首页相关页面
home: {
// 公共字段
HOME: '首頁',
// home首页
customerService: '客 戶 服 務',
homeMessage: `請第一時間聯繫左上角客服進行身份驗證,請第一時間聯繫左上角客服進行身份驗證請與左上角的客戶服務聯繫,以覈實您的身份。`,
Recharge: '充值',
Mine: '挖礦',
Subcription: '申購',
TodaySteps: "今天的步數",
ReceiveEarnings: "昨天的收益",
},
// 合约页面相关
markets: {
// markets
TrandingPair: 'Tranding Pair',
LatestPrice: 'Latest Price',
RiseAndfall: '24H Rise and fall',
},
// 捐赠页面相关
charity: {
CharityDetails: 'Charity Details',
About: 'About',
Participants: 'Participants',
DonateNow: 'Donate Now',
PleaseChooseCoin: 'Please choose coin',
AvailableBlance: 'Available blance',
Quantity: 'Quantity',
WithdrawalPassword: 'Withdrawal Password',
},
// 申购页面相关 subscription
subscription: {
// 公共
Product: 'Product',
Pending: 'Pending',
Complete: 'Complete',
// Product
Subscribe: 'Subscribe',
Ended: 'Ended',
ComingSoon: 'Coming soon',
STLTotalCirculation: 'STL total circulation',
PrivateSalePrice: 'Private sale price',
ICOTime: 'ICO Time',
// Pending //Complete
HeaderPending: 'Pending',
HeaderComplete: 'Complete',
Price: 'Price',
Quantity: 'Quantity',
ConfirmAmount: 'Confirm amount',
USDT: 'USDT',
Time: 'Time',
CheckTheNumberoOfUSDT: 'Check the number of USDT',
// Subscription
Subscription: 'Subscription',
Days: 'Days',
Hours: 'Hours',
Minutes: 'Minutes',
Seconds: 'Seconds',
Total: 'Total',
SubscribeNow: 'Subscribe Now',
ProjectDetails: 'Project Details',
Video: 'Video',
WhiteBook: 'White Book',
},
//me
me: {
account: 'account',
Recharge: 'Recharge',
Withdrawal: 'Withdrawal',
Transfer: 'Transfer',
Balance: 'Balance(U)',
Pledge: 'Pledge(U)',
Contarct: 'Contarct(U)',
General: 'General',
InviteFriends: 'Invite friends',
AccountInfo: 'Account Info',
MyTeam: 'My Team',
WalletHistory: 'Wallet history',
Notification: 'Notification',
DonateRecord: 'Donate record',
Language:'語言',
AboutUs: 'About us',
LogOut: 'Log out',
ShareWithFriends: 'Share with friends',
ScanTheCode: 'Scan the code to download',
MyReferralID: 'My Referral ID:',
CopyID: 'Copy ID',
ChangeLoginPassword:'Change Login Password',
ChangeWithdrawalPassword:'Change Withdrawal Password',
BankCard:'Bank Card',
WithdrawalAddress:'Withdrawal Address',
PleaseEnterTheOldPassword:'Please Enter the old password',
CreateNewLoginPassword:'Create new Login password',
Confirm:'Confirm',
ModifyWithdrawalPassword:'Modify Withdrawal Password',
CreateNewPassword:'Create new password',
Fresh:'Fresh',
Release:'Release',
NotificationDetails:'Notification Details',
DonateRecord:'Donate record',
Time:'Time',
SelectCurrency:'Select currency',
PleaseChooseCoin: 'Please choose coin',
From:'From',
OptionAccount:'Option account',
To:'To',
TradingAccount:'Trading account',
TransferNumber:'Transfer number',
PleaseEnterNumber: 'Please enter number',
Usable:'Usable :',
}
}

42
utils/uni-copy.js

@ -0,0 +1,42 @@
export default function uniCopy({content,success,error}) {
if(!content) return error('复制的内容不能为空 !')
content = typeof content === 'string' ? content : content.toString() // 复制内容,必须字符串,数字需要转换为字符串
/**
* 小程序端 app端的复制逻辑
*/
//#ifndef H5
uni.setClipboardData({
data: content,
success: function() {
success("复制成功~")
console.log('success');
},
fail:function(){
success("复制失败~")
}
});
//#endif
/**
* H5端的复制逻辑
*/
// #ifdef H5
if (!document.queryCommandSupported('copy')) { //为了兼容有些浏览器 queryCommandSupported 的判断
// 不支持
error('浏览器不支持')
}
let textarea = document.createElement("textarea")
textarea.value = content
textarea.readOnly = "readOnly"
document.body.appendChild(textarea)
textarea.select() // 选择对象
textarea.setSelectionRange(0, content.length) //核心
let result = document.execCommand("copy") // 执行浏览器复制命令
if(result){
success("复制成功~")
}else{
error("复制失败,请检查h5中调用该方法的方式,是不是用户点击的方式调用的,如果不是请改为用户点击的方式触发该方法,因为h5中安全性,不能js直接调用!")
}
textarea.remove()
// #endif
}
Loading…
Cancel
Save