Browse Source

合并提交

master
j1ack 4 years ago
parent
commit
24d5f83892
  1. 9
      App.vue
  2. 2
      components/cardHeader/cardHeader.vue
  3. 3
      main.js
  4. 860
      pages/charity/details.vue
  5. 270
      pages/charity/index.vue
  6. 1087
      pages/home/index.vue
  7. 173
      pages/me/changeWithdrawalPassword.vue
  8. 64
      pages/me/donateRecord.vue
  9. 25
      pages/me/index.vue
  10. 265
      pages/me/notification.vue
  11. 159
      pages/me/notificationDetails.vue
  12. 686
      pages/me/transfer.vue
  13. 313
      pages/me/walletHistory.vue
  14. 333
      pages/withdrawal/addOrEditBankCard.vue
  15. 2
      utils/api.js
  16. 14
      utils/axios.js
  17. 2
      utils/index.js
  18. 13
      utils/language/en_US.js

9
App.vue

@ -1,4 +1,5 @@
<script>
import api from '@/utils/api'
export default {
// computed: {
// i18n() {
@ -7,8 +8,12 @@ export default {
// },
onLaunch: function () {
console.log('App Launch')
api.indexInfo().then(res => {
uni.setStorageSync('coinTypeInfo',res)
})
},
onShow: function () {
console.log('App Show')
},
onHide: function () {
@ -20,7 +25,9 @@ export default {
<style lang="scss">
/*每个页面公共css */
@import "uview-ui/index.scss";
/deep/ .u-loadmore__content__text {
line-height: 50rpx !important;
}
/deep/body {
// max-width: 828rpx; //最大宽度自己可以调整
// margin: auto !important;

2
components/cardHeader/cardHeader.vue

@ -98,7 +98,7 @@ export default {
position: absolute;
right: 20rpx;
display: inline-block;
width: 202rpx;
// width: 202rpx;
height: 64rpx;
border-radius: 16rpx;
line-height: 64rpx;

3
main.js

@ -5,7 +5,7 @@ import VueI18n from 'vue-i18n'
import axios from './utils/axios.js'
import store from './store'
import index from './utils/index.js'
// 多国语言
import EN from './utils/language/en_US.js'
import ZH from './utils/language/zh_TW.js'
@ -34,6 +34,7 @@ const i18n = new VueI18n({
Vue.prototype.$store = store
Vue.prototype.$axios = axios
Vue.prototype.$index = index
Vue.prototype.$_i18n = i18n
// #ifndef VUE3

860
pages/charity/details.vue

@ -1,419 +1,459 @@
<template>
<view class="main">
<!-- nav -->
<navigation :bgTransparent=true>{{ i18n.CharityDetails }}</navigation>
<view class="body">
<view class="titleBody">
<!-- 海报 -->
<u--image class="img" :showLoading="true" src="../../static/charity/Rectangle 2.png" width="750rpx"
height="762rpx"></u--image>
<!-- 文章标题 -->
<view class="title">New Balance Raff Simons Bright </view>
</view>
<view class="contentBody">
<view class="about">{{ i18n.About }}</view>
<!-- 文字内容 -->
<view class="content">Minimum deposit amount: 10 USDT. Deposit less than the minimum amount will not be
posted
and cannot be returned
This address is your latest deposit address. When the system receives deposit, it will be
automatically
credited to the account。The transfer needs to be confirmed by the entire blockchain network. When it
reaches 10 network confirmations, your USDT will be automatically deposit into the account。
Minimum deposit amount: 10 USDT. Deposit less than the minimum amount will not be posted and cannot
be
returned
This address is your latest deposit address. When the system receives deposit, it will be
automatically
credited to the account。The transfer needs to be confirmed by the entire blockchain network. When it
reaches 10 network confirmations, your USDT will be automatically deposit into the account。Minimum
deposit amount: 10 USDT. Deposit less than the minimum amount will not be posted and cannot be
returned
This address is your latest deposit address. When the </view>
<!-- 捐赠详情 -->
<view class="Participants">
<view class="title">{{ i18n.Participants }}</view>
<!-- 进度条 -->
<u-line-progress class="progressbar" :showText="false" :percentage="50" activeColor="#00E8A2"
height="32rpx">
</u-line-progress>
<!-- 百分比 -->
<view class="progress">50%</view>
<!-- 捐赠用户头像 -->
<view class="userIconList">
<u--image v-for="(item, index) in 10" :key="index" class="userIcon" :showLoading="true"
src="../../static/charity/Ellipse 502.png" width="64rpx" height="64rpx"></u--image>
</view>
</view>
<!-- 按钮 -->
<u-button class="button" color="#00E8A2" throttleTime="500" @click="DonatePopupShow = true">{{
i18n.DonateNow
}}
</u-button>
<!-- DonateNow按钮通知弹出层 -->
<u-popup class="DonatePopup" :show="DonatePopupShow" round="40rpx" mode="bottom"
@close="DonatePopupShow = false" @open="DonatePopupShow = true" bgColor="#211F32">
<view class="content">
<view class="close" @click="DonatePopupShow = false"></view>
<u--form class="form" :model="coinInfo" :rules="rules" ref="form1" errorType="toast">
<!-- coin选择框 -->
<u-form-item class="input-item" prop="verificationCode" ref="item1">
<u-input class="input" v-model="coinInfo.verificationCode" color="#fff" fontSize="32rpx"
border="none" :placeholder="i18n.PleaseChooseCoin">
</u-input>
<view class="selectCoinBtn" @click="USDTPopupShow = true">USDT
</view>
</u-form-item>
<view class="Available">{{ i18n.AvailableBlance }}:0USDT</view>
<!-- 数量 -->
<u-form-item class="input-item" prop="number" ref="item1">
<u-input class="input" v-model="coinInfo.number" color="#fff" fontSize="32rpx"
border="none" :placeholder="i18n.Quantity">
</u-input>
</u-form-item>
<!-- 密码 -->
<u-form-item class="input-item" prop="password" ref="item1">
<u-input class="input" v-model="coinInfo.password" color="#fff" fontSize="32rpx"
border="none" :placeholder="i18n.WithdrawalPassword">
</u-input>
</u-form-item>
</u--form>
<u-button class="button" color="#00E8A2" throttleTime="500" :disabled="DonatePopupDisabled"
@click="DonatePopupShow = false">{{ i18n.DonateNow }}
</u-button>
</view>
</u-popup>
<!-- 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: 580rpx;" scroll-with-animation="true"
@touchmove.stop.prevent="">
<radio-group class="radioGroup" @change="radioChange" v-model="radioValue">
<label class="checkBox" v-for="(item, index) in 40" :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>
</view>
</view>
</view>
<view class="main">
<!-- nav -->
<navigation :bgTransparent=true>{{ i18n.CharityDetails }}</navigation>
<view class="body">
<view class="titleBody">
<!-- 海报 -->
<u--image class="img" :showLoading="true" :src="baseURL+detail.charityDetails.img" width="750rpx"
height="762rpx"></u--image>
<!-- 文章标题 -->
<view class="title">{{detail.charityDetails.title}}</view>
</view>
<view class="contentBody">
<view class="about">{{ i18n.About }}</view>
<!-- 文字内容 -->
<view class="content" v-html="detail.charityDetails.content"></view>
<!-- 捐赠详情 -->
<view class="Participants">
<view class="title">{{ i18n.Participants }}</view>
<!-- 进度条 -->
<u-line-progress class="progressbar" :showText="false" :percentage="detail.charityDetails.percentage" activeColor="#00E8A2"
height="32rpx">
</u-line-progress>
<!-- 百分比 -->
<view class="progress">{{detail.charityDetails.percentage}}%</view>
<!-- 捐赠用户头像 -->
<view class="userIconList">
<u--image v-for="(item, index) in detail.headerImgList" :key="index" class="userIcon" :showLoading="true"
:src="baseURL+item.headImgPath" width="64rpx" height="64rpx"></u--image>
</view>
</view>
<!-- 按钮 -->
<u-button class="button" color="#00E8A2" throttleTime="500" @click="DonatePopupShow = true" :disabled="detail.charityDetails.status!='open'">
{{detail.charityDetails.status!='open'?i18n.Closeddonation:i18n.DonateNow}}
</u-button>
<!-- DonateNow按钮通知弹出层 -->
<u-popup class="DonatePopup" :show="DonatePopupShow" round="40rpx" mode="bottom"
@close="DonatePopupShow = false" @open="DonatePopupShow = true" bgColor="#211F32">
<view class="content">
<view class="close" @click="DonatePopupShow = false"></view>
<u--form class="form" :model="coinInfo" :rules="rules" ref="form1" errorType="toast">
<!-- coin选择框 -->
<u-form-item class="input-item" prop="coinCode" ref="item1">
<u-input class="input" color="#fff" fontSize="32rpx"
border="none" :placeholder="i18n.PleaseChooseCoin" :disabled="true">
</u-input>
<view class="selectCoinBtn" @click="USDTPopupShow = true">{{coinInfo.coinCode}}
</view>
</u-form-item>
<view class="Available">{{ i18n.AvailableBlance }}:{{detail.userCapital}}{{" "}}{{detail.coins[0].enname}}</view>
<!-- 数量 -->
<u-form-item class="input-item" prop="amount" ref="item1">
<u-input class="input" v-model="coinInfo.amount" color="#fff" fontSize="32rpx"
border="none" :placeholder="i18n.Quantity">
</u-input>
</u-form-item>
<!-- 密码 -->
<u-form-item class="input-item" prop="payPassword" ref="item1">
<u-input class="input" v-model="coinInfo.payPassword" color="#fff" fontSize="32rpx"
border="none" :placeholder="i18n.WithdrawalPassword">
</u-input>
</u-form-item>
</u--form>
<u-button class="button" color="#00E8A2" throttleTime="500" :disabled="DonatePopupDisabled"
@click="donate" :throttleTime="500">{{ i18n.DonateNow }}
</u-button>
</view>
</u-popup>
<!-- 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: 580rpx;" scroll-with-animation="true"
@touchmove.stop.prevent="">
<radio-group class="radioGroup" v-model="radioValue">
<label class="checkBox" v-for="(item, index) in detail.coins" :key="index" @click="radioChange(item)">
<view class="icon">
<u-icon :name="baseURL+'/coins/'+item.enname+'.png'" size="52rpx" width="52rpx"></u-icon>
</view>
<view class="iconName">
<view class="top">{{item.enname}}</view>
<view class="bottom">{{item.useCapital}}{{" "}}{{item.code}}</view>
</view>
<radio color="#00E8A2" shape="square" :checked="coinInfo.coinCode==item.enname"></radio>
</label>
</radio-group>
</scroll-view>
<u-button class="button" color="#00E8A2" throttleTime="500" @click="USDTPopupShow = false">OK
</u-button>
</view>
</u-popup>
</view>
</view>
</view>
</template>
<script>
import UButton from '../../uview-ui/components/u-button/u-button'
export default {
name: "charityDetails",
data() {
return {
DonatePopupShow: false,
USDTPopupShow: false,
DonatePopupDisabled: true,
coinInfo: {},
rules: {},
radioValue: '',
};
},
computed: {
i18n() {
return this.$t("charity");
},
},
onLoad() {
// console.log(this.$t('login.emailInputMessage'));
},
onShow() { },
methods: {
radioChange(e) {
// console.log(e);
}
},
components: { UButton }
}
import UButton from '../../uview-ui/components/u-button/u-button'
import api from '@/utils/api'
import constant from '@/utils/constant.js';
import md5 from 'js-md5'
export default {
name: "charityDetails",
data() {
return {
id:'',
baseURL:'',
DonatePopupShow: false,
USDTPopupShow: false,
coinInfo: {
amount:null,
coinCode:null,
payPassword:null,
},
rules: {
},
radioValue: '',
detail:{},
};
},
computed: {
i18n() {
return this.$t("charity");
},
DonatePopupDisabled() {
if (this.coinInfo.amount && this.coinInfo.coinCode && this.coinInfo.payPassword) {
return false
} else {
return true
}
}
},
onLoad(res) {
this.baseURL = constant.BASE_URL
this.id=res.id
this.getDetail(this.id)
// console.log(this.$t('login.emailInputMessage'));
},
onShow() {},
methods: {
// 捐赠
donate() {
if(this.coinInfo.amount>this.detail.userCapital){
uni.$u.toast(this.$t("login").Insufficient)
return;
}
let coinInfo = {
charityId:this.detail.charityDetails.id,
amount:this.coinInfo.amount,
coinCode:this.coinInfo.coinCode2,
payPassword:md5(this.coinInfo.payPassword),
}
api.charitySubmit(coinInfo).then(res => {
uni.$u.toast(this.$t("login").Donationsucceeded)
setTimeout(()=>{
this.getDetail(this.id)
this.DonatePopupShow = false
},600)
})
},
radioChange(e) {
this.coinInfo.coinCode=e.enname
this.coinInfo.coinCode2=e.code
},
getDetail(id) {
api.showCharityDetails({
charityId:id
}).then(res => {
this.detail=res;
this.coinInfo.coinCode=this.detail.coins[0].enname
this.coinInfo.coinCode2=this.detail.coins[0].code
})
},
},
components: {
UButton
}
}
</script>
<style lang="scss" scoped>
.main {
.body {
overflow: hidden;
.titleBody {
position: relative;
height: 762rpx;
.title {
position: absolute;
bottom: 48rpx;
font-size: 40rpx;
font-weight: 800;
z-index: 20;
margin: 0 48rpx;
}
}
.contentBody {
padding: 0 48rpx;
.about {
margin: 32rpx 0;
font-size: 32rpx;
color: #A2A0A8;
}
.content {
font-size: 24rpx;
color: #A1A0A8;
margin-bottom: 48rpx;
}
.Participants {
background: #211F32;
border-radius: 32rpx;
padding: 32rpx;
.title {
font-size: 28rpx;
height: 40rpx;
line-height: 40rpx;
margin-bottom: 20rpx;
color: #A1A0A8;
}
// .progressBody{
.progressbar {
vertical-align: top;
display: inline-block;
width: 426rpx;
margin: 8rpx 0;
}
.progress {
margin-left: 20rpx;
display: inline-block;
width: 144rpx;
height: 48rpx;
line-height: 48rpx;
font-size: 32rpx;
}
.userIconList {
height: 104rpx;
.userIcon {
overflow: hidden;
border-radius: 64rpx;
display: inline-block;
margin-left: -20rpx;
margin-top: 34rpx;
&:first-child {
margin-left: 0;
}
}
}
}
.button {
margin-top: 64rpx;
margin-bottom: 120rpx;
height: 112rpx;
line-height: 112rpx;
border-radius: 32rpx;
font-size: 32rpx;
color: #15141F !important;
}
.DonatePopup {
.content {
height: 844rpx;
/deep/.u-button--disabled {
background-color: #A1A0A8 !important;
border-color: #A1A0A8 !important;
}
.close {
margin: 48rpx 346rpx;
width: 58rpx;
height: 20rpx;
background-image: url(../../static/charity/Turn.png);
background-repeat: no-repeat;
background-size: 58rpx 20rpx;
}
.form {
font-size: 32rpx;
margin: 0 32rpx;
.Available {
height: 44rpx;
margin: 32rpx 0;
font-size: 28rpx;
}
.input-item {
overflow: hidden;
height: 124rpx;
line-height: 124rpx;
background: #323045;
margin-bottom: 48rpx;
border-radius: 32rpx;
padding: 0 40rpx;
/deep/.u-form-item__body {
padding: 0;
}
.input {
height: 124rpx;
}
.selectCoinBtn {
position: relative;
width: 150rpx;
height: 54rpx;
right: 0rpx;
line-height: 56rpx;
font-size: 36rpx;
padding: 0;
color: #fff;
&::after {
display: block;
position: absolute;
content: '';
background-image: url(../../static/charity/ic_ma_arrow_down.png);
background-repeat: no-repeat;
background-size: 32rpx;
width: 32rpx;
height: 32rpx;
top: 12rpx;
right: 10rpx;
}
}
}
}
.button {
width: 654rpx;
margin: 0 48rpx;
}
}
}
.USDTPopup {
.content {
height: 844rpx;
.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: 580rpx;
.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;
}
}
}
}
}
/deep/ .u-input{
background: #323045 !important;
}
.main {
.body {
overflow: hidden;
.titleBody {
position: relative;
height: 762rpx;
.title {
position: absolute;
bottom: 48rpx;
font-size: 40rpx;
font-weight: 800;
z-index: 20;
margin: 0 48rpx;
}
}
.contentBody {
padding: 0 48rpx;
.about {
margin: 32rpx 0;
font-size: 32rpx;
color: #A2A0A8;
}
.content {
font-size: 24rpx;
color: #A1A0A8;
margin-bottom: 48rpx;
}
.Participants {
background: #211F32;
border-radius: 32rpx;
padding: 32rpx;
.title {
font-size: 28rpx;
height: 40rpx;
line-height: 40rpx;
margin-bottom: 20rpx;
color: #A1A0A8;
}
// .progressBody{
.progressbar {
vertical-align: top;
display: inline-block;
width: 426rpx;
margin: 8rpx 0;
}
.progress {
margin-left: 20rpx;
display: inline-block;
width: 144rpx;
height: 48rpx;
line-height: 48rpx;
font-size: 32rpx;
}
.userIconList {
height: 104rpx;
.userIcon {
overflow: hidden;
border-radius: 64rpx;
display: inline-block;
margin-left: -20rpx;
margin-top: 34rpx;
&:first-child {
margin-left: 0;
}
}
}
}
.button {
margin-top: 64rpx;
margin-bottom: 120rpx;
height: 112rpx;
line-height: 112rpx;
border-radius: 32rpx;
font-size: 32rpx;
color: #15141F !important;
}
.DonatePopup {
.content {
height: 844rpx;
/deep/.u-button--disabled {
background-color: #A1A0A8 !important;
border-color: #A1A0A8 !important;
}
.close {
margin: 48rpx 346rpx;
width: 58rpx;
height: 20rpx;
background-image: url(../../static/charity/Turn.png);
background-repeat: no-repeat;
background-size: 58rpx 20rpx;
}
.form {
font-size: 32rpx;
margin: 0 32rpx;
.Available {
height: 44rpx;
margin: 32rpx 0;
font-size: 28rpx;
}
.input-item {
overflow: hidden;
height: 124rpx;
line-height: 124rpx;
background: #323045;
margin-bottom: 48rpx;
border-radius: 32rpx;
padding: 0 40rpx;
/deep/.u-form-item__body {
padding: 0;
}
.input {
height: 124rpx;
}
.selectCoinBtn {
position: relative;
width: 150rpx;
height: 54rpx;
right: 0rpx;
line-height: 56rpx;
font-size: 36rpx;
padding: 0;
color: #fff;
&::after {
display: block;
position: absolute;
content: '';
background-image: url(../../static/charity/ic_ma_arrow_down.png);
background-repeat: no-repeat;
background-size: 32rpx;
width: 32rpx;
height: 32rpx;
top: 12rpx;
right: 10rpx;
}
}
}
}
.button {
width: 654rpx;
margin: 0 48rpx;
}
}
}
.USDTPopup {
.content {
height: 844rpx;
.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: 580rpx;
.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;
}
}
}
}
}
}
}
</style>

270
pages/charity/index.vue

@ -1,118 +1,168 @@
<template>
<view class="main">
<!-- 列表 -->
<view class="charityList">
<view class="item" v-for="(item, index) in 10" :key="index" @click="goto(index)">
<u--image class="img" :showLoading="true" src="../../static/charity/Rectangle 2.png" width="318rpx"
height="230rpx"></u--image>
<view class="title">New Balance Raff Simons Bright Bright </view>
<view class="target">Target: $1309348</view>
<u-line-progress class="progressbar" :showText="(index * 10) > 18" :percentage="index * 10"
activeColor="#00E8A2" height="22rpx">
</u-line-progress>
</view>
</view>
<!-- tabBar -->
<tab-bar :selectActive="3"></tab-bar>
</view>
<view class="main">
<!-- 列表 -->
<view class="charityList">
<view class="item" v-for="(item, index) in userInfoObj" :key="index" @click="goto(item.id)">
<u--image class="img" :showLoading="true" :src="baseURL+item.img" width="318rpx"
height="230rpx"></u--image>
<view class="title">{{item.title}} </view>
<view class="target">Target: {{item.targetAmount}}{{" "}}{{coinTypeInfo.system_cropto_code}}</view>
<u-line-progress class="progressbar" :percentage="item.percentage"
activeColor="#00E8A2" height="22rpx">
</u-line-progress>
</view>
</view>
<u-empty :text="i18n.Dataisempty" mode="data" v-if="userInfoObj.length==0"></u-empty>
<u-loadmore :status="loadStatus" :loading-text="loadingText" :loadmore-text="loadmoreText"
:nomore-text="nomoreText" v-if="userInfoObj.length" height="80" />
<!-- tabBar -->
<tab-bar :selectActive="3"></tab-bar>
</view>
</template>
<script>
export default {
name: 'charity',
data() {
return {
}
},
onLoad() {
},
onShow() {
},
onHide() {
},
computed: {
i18n() {
return this.$t('markets')
}
},
methods: {
goto(index) {
uni.navigateTo({
url: `/pages/charity/details?id=${index}`
});
}
}
}
import api from '@/utils/api'
import constant from '@/utils/constant.js';
export default {
name: 'charity',
data() {
return {
isLoadMore: false, //是否加载中
loadStatus: 'loadmore',
loadingText: this.$t("login").toload,
loadmoreText: this.$t("login").pullup,
nomoreText: this.$t("login").Nomore,
form: {
pageNumber: 1,
pageSize: 20,
ways: 'exchange',
},
userInfoObj: [],
baseURL:'',
}
},
onLoad() {
this.baseURL = constant.BASE_URL
this.getList()
},
onShow() {
},
onHide() {},
onReachBottom() {
if (!this.isLoadMore) {
this.form.pageNumber += 1
this.getList();
}
},
computed: {
i18n() {
return this.$t('markets')
},
// 获取币种
coinTypeInfo(){
return uni.getStorageSync('coinTypeInfo')
}
},
methods: {
// 获取商品列表
getList() {
this.isLoadMore = true
api.charityList(this.form).then(res => {
if (res.charityList.content.length) {
if (this.form.pageNumber > 1) {
this.userInfoObj = this.userInfoObj.concat(res.charityList.content)
} else {
this.userInfoObj = res.charityList.content
}
if (this.userInfoObj.length >= Number(res.charityList.totalElements)) { // 判断接口返回数据量小于请求数据量,则表示此为最后一页
this.isLoadMore = true
this.loadStatus = 'nomore'
} else {
this.isLoadMore = false
}
} else {
this.isLoadMore = true
this.loadStatus = 'nomore'
this.userInfoObj = []
}
this.$forceUpdate()
})
},
goto(index) {
uni.navigateTo({
url: `/pages/charity/details?id=${index}`
});
}
}
}
</script>
<style lang="scss" scoped>
.main {
padding-bottom: 198rpx; // 避免底部TabBar盖住内容
.charityList {
// width: 318rpx;
margin: 120rpx 38rpx 0 40rpx;
display: flex;
justify-content: space-between;
align-items: center;
flex-wrap: wrap;
.item {
position: relative;
width: 318rpx;
height: 430rpx;
box-sizing: border-box;
background-color: #323045;
border-radius: 20rpx;
margin-bottom: 32rpx;
/deep/.img {
overflow: hidden;
border-radius: 20rpx;
}
.title {
height: 72rpx;
line-height: 35rpx;
font-size: 32rpx;
margin: 24rpx 20rpx 12rpx;
// 超出字符省略成...
overflow: hidden;
text-overflow: ellipsis;
display: -webkit-box; //兼容
word-wrap: break-word;
white-space: normal !important;
-webkit-line-clamp: 2; //显示行数
-webkit-box-orient: vertical;
}
.target {
height: 40rpx;
line-height: 40rpx;
color: $mainColor;
font-size: 26rpx;
margin-left: 20rpx;
}
.progressbar {
margin: 12rpx 20rpx 0;
/deep/.u-line-progress__text {
color: #000;
font-size: 16rpx;
transform: scale(0.66) // 字体超过12px以下的需要缩放 8/12 =0.666
}
}
}
}
}
.main {
padding-bottom: 198rpx; // 避免底部TabBar盖住内容
.charityList {
// width: 318rpx;
margin: 120rpx 38rpx 0 40rpx;
display: flex;
justify-content: space-between;
align-items: center;
flex-wrap: wrap;
.item {
position: relative;
width: 318rpx;
height: 430rpx;
box-sizing: border-box;
background-color: #323045;
border-radius: 20rpx;
margin-bottom: 32rpx;
/deep/.img {
overflow: hidden;
border-radius: 20rpx;
}
.title {
height: 72rpx;
line-height: 35rpx;
font-size: 32rpx;
margin: 24rpx 20rpx 12rpx;
// 超出字符省略成...
overflow: hidden;
text-overflow: ellipsis;
display: -webkit-box; //兼容
word-wrap: break-word;
white-space: normal !important;
-webkit-line-clamp: 2; //显示行数
-webkit-box-orient: vertical;
}
.target {
height: 40rpx;
line-height: 40rpx;
color: $mainColor;
font-size: 26rpx;
margin-left: 20rpx;
}
.progressbar {
margin: 12rpx 20rpx 0;
/deep/.u-line-progress__text {
color: #000;
font-size: 16rpx;
transform: scale(0.66) // 字体超过12px以下的需要缩放 8/12 =0.666
}
}
}
}
}
</style>

1087
pages/home/index.vue

File diff suppressed because it is too large

173
pages/me/changeWithdrawalPassword.vue

@ -1,78 +1,129 @@
<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>
<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="password" color="#A1A0A8" fontSize="28rpx" border="none"
:placeholder="i18n.CreateNewPassword">
</u-input>
<u-input class="input" type="password" v-model="confirmPassword" color="#A1A0A8" fontSize="28rpx" border="none"
:placeholder="i18n.confirmPassword">
</u-input>
<!-- 修改登录密码按钮 :disabled="disabled"-->
<u-button class="button" color="#00E8A2" throttleTime="500">
{{ 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: {
import api from '@/utils/api'
import md5 from 'js-md5'
export default {
name: "changeWithdrawalPassword",
data() {
return {
oldPassword: '',
password: '',
confirmPassword: '',
disabled: true,
// 密码格式对不对
isCanPassword: false,
};
},
computed: {
i18n() {
return this.$t("me");
},
},
watch: {
'password': {
handler(newValue) {
const numberReg = /^(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])[A-Za-z0-9 _]{6,20}$/
this.isCanPassword = numberReg.test(newValue)
}
},
},
onLoad() {},
onShow() {},
methods: {
// 输入密码
changePassword() {
if (!this.password) {
uni.$u.toast(this.$t("login").passwordInputMessage)
return
}
if (!this.isCanPassword) {
let message = this.$t("login").passwordRule
uni.$u.toast(message)
return
}
// 验证重复输入的密码
if (this.password !== this.confirmPassword) {
uni.$u.toast(this.$t("login").passwordConfirm)
return
}
if (!this.oldPassword) {
uni.$u.toast(this.$t("login").PleaseEnterTheOldPassword)
return
}
let userInfo = {
oldPassword: md5(this.oldPassword),
password: md5(this.password),
confirmPassword: md5(this.confirmPassword),
}
api.updatePayPassword(userInfo).then(res => {
setTimeout(() => {
uni.showToast({
title: this.$t("me").ModifiedSuccessfully
})
}, 600)
uni.navigateBack({})
})
},
}
},
},
}
</script>
<style lang="scss" scoped>
.main {
.main {
.body {
overflow: hidden;
margin-top: 200rpx;
padding: 0 64rpx;
.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;
}
.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;
}
.button {
position: relative;
height: 112rpx;
margin-top: 680rpx;
border-radius: 32rpx;
font-weight: 600;
color: #15141F !important;
font-size: 32rpx !important;
}
}
}
}
}
</style>

64
pages/me/donateRecord.vue

@ -3,26 +3,40 @@
<!-- nav -->
<navigation>{{ i18n.DonateRecord }}</navigation>
<view class="body">
<view class="card" v-for="(item, index) in 4" :key="index">
<view class="card" v-for="(item, index) in userInfoObj" :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'"
<key-value-row class="title" :keyName="item.title" :value="item.amount" :leftColor="'#fff'"
:rightColor="'#F2FE8D'">
</key-value-row>
<view class="date">2022/08/06 14:50:34</view>
<view class="date">{{item.timestr}}</view>
</view>
</view>
</view>
<u-empty :text="i18n.Dataisempty" mode="data" v-if="userInfoObj.length==0"></u-empty>
<u-loadmore :status="loadStatus" :loading-text="loadingText" :loadmore-text="loadmoreText"
:nomore-text="nomoreText" v-if="userInfoObj.length" height="80" />
</view>
</template>
<script>
import api from '@/utils/api'
import KeyValueRow from '../../components/KeyValueRow/KeyValueRow.vue';
export default {
components: { KeyValueRow },
name: "donateRecord",
data() {
return {
isLoadMore: false, //是否加载中
loadStatus: 'loadmore',
loadingText: this.$t("login").toload,
loadmoreText: this.$t("login").pullup,
nomoreText: this.$t("login").Nomore,
form: {
pageNumber: 1,
pageSize: 20,
},
userInfoObj: [],
};
},
computed: {
@ -30,11 +44,53 @@ export default {
return this.$t("me");
},
},
onReachBottom() {
if (!this.isLoadMore) {
this.form.pageNumber += 1
this.getList();
}
},
onLoad() {
this.getList()
},
onShow() { },
methods: {
getList() {
this.isLoadMore = true
api.charityRecord(this.form).then(res => {
if (res.content.length) {
if (this.form.pageNumber > 1) {
this.userInfoObj = this.userInfoObj.concat(res.content)
for (var i = 0; i < this.userInfoObj.length; i++) {
if (this.userInfoObj[i].addTime) {
this.userInfoObj[i].timestr = this.$index.formatyymmddhhmmss(this.userInfoObj[
i].addTime)
}
}
} else {
this.userInfoObj = res.content
for (var i = 0; i < this.userInfoObj.length; i++) {
if (this.userInfoObj[i].addTime) {
this.userInfoObj[i].timestr = this.$index.formatyymmddhhmmss(this.userInfoObj[
i].addTime)
}
}
}
if (this.userInfoObj.length >= Number(res.totalElements)) { // 判断接口返回数据量小于请求数据量,则表示此为最后一页
this.isLoadMore = true
this.loadStatus = 'nomore'
} else {
this.isLoadMore = false
}
} else {
this.isLoadMore = true
this.loadStatus = 'nomore'
this.userInfoObj = []
}
this.$forceUpdate()
})
},
},
}
</script>

25
pages/me/index.vue

@ -3,7 +3,7 @@
<view class="contentBody">
<!-- 用户头像和id -->
<view class="userInfo">
<u-image class="headImg" src="../../static/me/Ellipse 85.png" width="160rpx" height="160rpx"
<u-image class="headImg" :src="baseURL+userInfo.headImg" width="160rpx" height="160rpx"
radius="160rpx"></u-image>
<view class="idAndAccount">
<view class="id">ID:{{userInfo.uid}}</view>
@ -32,17 +32,17 @@
<view class="balanceRow">
<!-- 可用余额 -->
<view class="item">
<view class="number">{{userInfoBalance.balance || 0 }}</view>
<view class="number">{{userInfoBalance.balance || 0 }} <text style="font-size: 10rpx;">{{coinTypeInfo.system_cropto_code}}</text> </view>
<view class="title">{{ i18n.Balance }}</view>
</view>
<!-- 质押余额 -->
<view class="item">
<view class="number">{{userInfoBalance.pledge || 0 }}</view>
<view class="number">{{userInfoBalance.pledge || 0 }} <text style="font-size: 10rpx;">{{coinTypeInfo.system_cropto_code}}</text></view>
<view class="title">{{ i18n.Pledge }}</view>
</view>
<!-- 合约余额 -->
<view class="item">
<view class="number">{{userInfoBalance.contract || 0 }}</view>
<view class="number">{{userInfoBalance.contract || 0 }} <text style="font-size: 10rpx;">{{coinTypeInfo.system_cropto_code}}</text></view>
<view class="title">{{ i18n.Contarct }}</view>
</view>
</view>
@ -85,10 +85,12 @@
<script>
import api from '@/utils/api'
import constant from '@/utils/constant.js';
export default {
name: 'me',
data() {
return {
baseURL:'',
// 退出登录模态框的显示与否。
showLogOut: false,
// 用户信息
@ -98,11 +100,11 @@
}
},
onLoad() {
this.baseURL=constant.BASE_URL
// 获取用户信息
this.getUserInfo()
},
onShow() {
// 获取用户信息
this.getUserInfo()
// 获取用户余额信息
this.getUserInfoBalance();
},
@ -110,6 +112,10 @@
computed: {
i18n() {
return this.$t('me')
},
// 获取币种
coinTypeInfo(){
return uni.getStorageSync('coinTypeInfo')
}
},
methods: {
@ -327,8 +333,9 @@
.number {
margin: 32rpx auto;
font-size: 48rpx;
display: flex;
align-items: center;
justify-content: center;
}

265
pages/me/notification.vue

@ -1,114 +1,167 @@
<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>
<view class="main">
<!-- nav -->
<navigation>{{ i18n.Notification }}</navigation>
<view class="body">
<view class="userItem" v-for="(item, index) in userInfoObj" :key="index" @click="gotoDetails(item.id)">
<u-icon class="icon" :name="'../../static/home/ic_proclamation.png'" size="60rpx" width="60rpx">
</u-icon>
<view class="content">
<view class="title">{{item.title}}</view>
<view class="date">{{ i18n.Release }}: {{item.timestr}}</view>
</view>
</view>
</view>
<u-empty :text="i18n.Dataisempty" mode="data" v-if="userInfoObj.length==0"></u-empty>
<u-loadmore :status="loadStatus" :loading-text="loadingText" :loadmore-text="loadmoreText"
:nomore-text="nomoreText" v-if="userInfoObj.length" height="80" />
</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}`
});
}
},
}
import api from '@/utils/api'
export default {
name: "notification",
data() {
return {
isLoadMore: false, //是否加载中
loadStatus: 'loadmore',
loadingText: this.$t("login").toload,
loadmoreText: this.$t("login").pullup,
nomoreText: this.$t("login").Nomore,
form: {
pageNumber: 1,
pageSize: 20,
},
userInfoObj: [],
};
},
computed: {
i18n() {
return this.$t("me");
},
},
onReachBottom() {
if (!this.isLoadMore) {
this.form.pageNumber += 1
this.getRecordList();
}
},
onLoad() {
this.getRecordList()
},
onShow() {},
methods: {
// 公告列表
getRecordList() {
this.isLoadMore = true
api.notices(this.form).then(res => {
if (res.length) {
if (this.form.pageNumber > 1) {
this.userInfoObj = this.userInfoObj.concat(res)
for (var i = 0; i < this.userInfoObj.length; i++) {
if (this.userInfoObj[i].addTime) {
this.userInfoObj[i].timestr = this.$index.formatyymmddhhmmss(this.userInfoObj[
i].addTime)
}
}
} else {
this.userInfoObj = res
for (var i = 0; i < this.userInfoObj.length; i++) {
if (this.userInfoObj[i].addTime) {
this.userInfoObj[i].timestr = this.$index.formatyymmddhhmmss(this.userInfoObj[
i].addTime)
}
}
}
if (this.userInfoObj.length >= Number(res.length)) { // 判断接口返回数据量小于请求数据量,则表示此为最后一页
this.isLoadMore = true
this.loadStatus = 'nomore'
} else {
this.isLoadMore = false
}
} else {
this.isLoadMore = true
this.loadStatus = 'nomore'
this.userInfoObj = []
}
this.$forceUpdate()
})
},
gotoDetails(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;
}
}
}
}
}
.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>

159
pages/me/notificationDetails.vue

@ -1,100 +1,103 @@
<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>
<view class="main">
<!-- nav -->
<navigation>{{ i18n.NotificationDetails }}</navigation>
<view class="body">
<view class="userItem">
<view class="content">
<view class="title">{{detail.title}}</view>
<view class="article" v-html="detail.content"></view>
<view class="date">{{ i18n.Release }}: {{detail.timestr}}</view>
</view>
</view>
</view>
</view>
</template>
<script>
export default {
name: "notificationDetails",
data() {
return {
};
},
computed: {
i18n() {
return this.$t("me");
},
},
onLoad() {
},
onShow() { },
methods: {
},
}
import api from '@/utils/api'
export default {
name: "notificationDetails",
data() {
return {
detail:{},
};
},
computed: {
i18n() {
return this.$t("me");
},
},
onLoad(res) {
this.getNoticeDetail(res.id)
},
onShow() {},
methods: {
getNoticeDetail(id){
api.noticeDetail({
noticeId: id
}).then(res => {
this.detail=res
this.detail.timestr = this.$index.formatyymmddhhmmss(this.detail.addTime)
})
},
},
}
</script>
<style lang="scss" scoped>
.main {
.main {
.body {
overflow: hidden;
margin-top: 200rpx;
padding: 0 24rpx;
.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;
.userItem {
position: relative;
background: #211F32;
border-radius: 32rpx;
margin-top: 20rpx;
overflow: hidden;
box-sizing: border-box;
.content {
overflow: hidden;
.content {
overflow: hidden;
.title {
width: 640rpx;
font-size: 28rpx;
padding: 20rpx 32rpx;
.title {
width: 640rpx;
font-size: 28rpx;
padding: 20rpx 32rpx;
}
}
.article {
border-top: 2rpx solid #323045;
padding: 20rpx 32rpx;
font-size: 28rpx;
color: #A1A0A8;
}
.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;
}
}
.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>

686
pages/me/transfer.vue

@ -1,355 +1,367 @@
<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">{{i18n.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">{{
<view class="main">
<!-- nav -->
<navigation>{{ i18n.Transfer }}</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">{{i18n.ALL}}</view>
</view>
</view>
<view class="Usable">{{ i18n.Usable }}
<view class="number">{{info.userCapital}}{{info.coinCode}}</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.prevent="">
<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.prevent="">
<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>
<!-- 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.prevent="">
<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.prevent="">
<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);
}
},
}
import api from '@/utils/api'
export default {
name: "transfer",
data() {
return {
info:{},
coin: '',
USDTPopupShow: false,
accountPopupShow: false,
USDTRadioValue: '',
accountRadioValue: '',
};
},
computed: {
i18n() {
return this.$t("me");
},
},
onLoad() {
this.getInfo()
},
onShow() {},
methods: {
getInfo() {
api.getTransferConfig({}).then(res => {
console.log(res)
this.info=res
})
},
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;
}
}
}
.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;
}
.button {
width: 654rpx;
margin: 20rpx 48rpx;
border-radius: 32rpx;
height: 112rpx;
line-height: 112rpx;
color: #15141F !important;
}
}
}
}
}
}
}
}
}
</style>

313
pages/me/walletHistory.vue

@ -1,137 +1,192 @@
<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>
<view class="main">
<!-- nav -->
<navigation>{{ i18n.WalletHistory }}</navigation>
<!-- headBtn -->
<view class="head">
<view class="headItem" @click="getType('exchange')" :class="{ select: form.ways === 'exchange' }">
{{ i18n.Balance }}
</view>
<view class="headItem" @click="getType('contract')" :class="{ select: form.ways === 'contract' }">
{{ i18n.Contarct }}
</view>
</view>
<view class="cardList">
<view class="card" v-for="(item, index) in userInfoObj" :key="index">
<!-- 卡片条件渲染 -->
<!-- balance -->
<card-header v-if="form.ways === 'exchange'"
:iconName="`../../static/me/${ item.isIncome=='yes' ? 'ic_wallet_add' : 'ic_wallet_minus'}.png`"
:title="item.witId" :rightName="`${ item.isIncome=='yes' ? '+' : '-'}`+item.amount+' '+item.coinCode"
:fontColor="`${item.isIncome=='yes'? '#00E8A2' : '#F4506A'}`">
</card-header>
<view class="dataBody" v-if="form.ways === 'exchange'">
<key-value-row :keyName="i18n.Status" :value="item.status"></key-value-row>
<key-value-row :keyName="i18n.Time" :value="item.addTimeStr"></key-value-row>
<view class="text">Postscript : {{item.witType}}
</view>
</view>
<!-- contarct -->
<card-header v-if="form.ways === 'contract'"
:iconName="`../../static/me/${ item.isIncome=='yes' ? 'ic_wallet_add' : 'ic_wallet_minus'}.png`"
:title="item.witId" :rightName="`${ item.isIncome=='yes' ? '+' : '-'}`+item.amount+item.coinCode"
:fontColor="`${item.isIncome=='yes'? '#00E8A2' : '#F4506A'}`">
</card-header>
<view class="dataBody" v-if="form.ways === 'contract'">
<key-value-row :keyName="i18n.Status" :value="item.status"></key-value-row>
<key-value-row :keyName="i18n.Time" :value="item.addTimeStr"></key-value-row>
<view class="text">Postscript : {{item.witType}}
</view>
</view>
</view>
</view>
<u-empty :text="i18n.Dataisempty" mode="data" v-if="userInfoObj.length==0"></u-empty>
<u-loadmore :status="loadStatus" :loading-text="loadingText" :loadmore-text="loadmoreText"
:nomore-text="nomoreText" v-if="userInfoObj.length" height="80" />
</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: {
},
}
import api from '@/utils/api'
import KeyValueRow from '../../components/KeyValueRow/KeyValueRow.vue';
import CardHeader from '../../components/cardHeader/cardHeader.vue';
export default {
components: {
KeyValueRow,
CardHeader
},
name: "walletHistory",
data() {
return {
isLoadMore: false, //是否加载中
loadStatus: 'loadmore',
loadingText: this.$t("login").toload,
loadmoreText: this.$t("login").pullup,
nomoreText: this.$t("login").Nomore,
form: {
pageNumber: 1,
pageSize: 20,
ways: 'exchange',
},
userInfoObj: [],
};
},
computed: {
i18n() {
return this.$t("me");
},
},
onReachBottom() {
if (!this.isLoadMore) {
this.form.pageNumber += 1
this.getRecordList();
}
},
onLoad() {
this.getRecordList();
},
onShow() {
},
methods: {
getType(type){
this.form.ways=type
this.getRecordList()
},
// 账单记录
getRecordList() {
this.isLoadMore = true
api.billList(this.form).then(res => {
if (res.content.length) {
if (this.form.pageNumber > 1) {
this.userInfoObj = this.userInfoObj.concat(res.content)
} else {
this.userInfoObj = res.content
}
if (this.userInfoObj.length >= Number(res.count)) { // 判断接口返回数据量小于请求数据量,则表示此为最后一页
this.isLoadMore = true
this.loadStatus = 'nomore'
} else {
this.isLoadMore = false
}
} else {
this.isLoadMore = true
this.loadStatus = 'nomore'
this.userInfoObj = []
}
this.$forceUpdate()
})
},
},
}
</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;
}
}
}
}
}
.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>

333
pages/withdrawal/addOrEditBankCard.vue

@ -1,138 +1,211 @@
<template>
<view class="main">
<!-- nav -->
<navigation>{{ pageState === 'addBank' ? i18n.AddBankInformation : i18n.EditBankInformation }}</navigation>
<view class="content">
<view class="inputBody">
<view class="title">{{ i18n.FirstName }}</view>
<view class="input-item">
<u-input class="input" v-model="name" color="#fff" fontSize="32rpx" border="none"
:placeholder="i18n.enterName">
</u-input>
</view>
<view class="title">{{ i18n.Account }}</view>
<view class="input-item">
<u-input class="input" v-model="account" color="#fff" fontSize="32rpx" border="none"
:placeholder="i18n.enterAccount">
</u-input>
</view>
</view>
<view class="inputBody">
<view class="title">{{ i18n.BankName }}</view>
<view class="input-item">
<u-input class="input" v-model="bankName" color="#fff" fontSize="32rpx" border="none"
:placeholder="i18n.enterBankName">
</u-input>
</view>
<view class="title">{{ i18n.BankCode }}</view>
<view class="input-item">
<u-input class="input" type="password" v-model="bankCode" color="#fff" fontSize="32rpx"
border="none" :placeholder="i18n.enterBankCode">
</u-input>
</view>
</view>
<u-button class="button" color="#00E8A2" throttleTime="500" :disabled="btnIsCanClick">{{ i18n.Confirm }}
</u-button>
</view>
</view>
<view class="main">
<!-- nav -->
<navigation>{{ pageState === 'addBank' ? i18n.AddBankInformation : i18n.EditBankInformation }}</navigation>
<view class="content">
<u--form class="form" :model="bankInfo" :rules="rules" ref="uForm" errorType="toast">
<view class="inputBody">
<view class="title">{{ i18n.FirstName }}</view>
<view class="input-item">
<u-form-item class="input-item" prop="acctName" ref="item1">
<u-input class="input" v-model="bankInfo.acctName" color="#fff" fontSize="32rpx"
border="none" :placeholder="i18n.enterName">
</u-input>
</u-form-item>
</view>
<view class="title">{{ i18n.Account }}</view>
<view class="input-item">
<u-form-item class="input-item" prop="acctId" ref="item1">
<u-input class="input" v-model="bankInfo.acctId" color="#fff" fontSize="32rpx" border="none"
:placeholder="i18n.enterAccount">
</u-input>
</u-form-item>
</view>
</view>
<view class="inputBody">
<view class="title">{{ i18n.BankName }}</view>
<view class="input-item">
<u-form-item class="input-item" prop="email" ref="item1">
<u-input class="input" v-model="bankInfo.bankName" color="#fff" fontSize="32rpx"
border="none" :placeholder="i18n.enterBankName">
</u-input>
</u-form-item>
</view>
<view class="title">{{ i18n.BankCode }}</view>
<view class="input-item">
<u-form-item class="input-item" prop="bankCode" ref="item1">
<u-input class="input" v-model="bankInfo.bankCode" color="#fff" fontSize="32rpx"
border="none" :placeholder="i18n.enterBankCode">
</u-input>
</u-form-item>
</view>
</view>
</u--form>
<u-button class="button" color="#00E8A2" :throttleTime="500" :disabled="btnIsCanClick" @click="bank">
{{ i18n.Confirm }}
</u-button>
</view>
</view>
</template>
<script>
export default {
name: "withdrawalRecord",
data() {
return {
pageState: 'addBank', // 页面状态,是添加还是编辑银行卡
name: '',
account: '',
bankName: '',
bankCode: '',
};
},
computed: {
i18n() {
return this.$t("withdrawal");
},
btnIsCanClick() { // 按钮是否可以点击
if (this.name && this.account && this.bankName && this.bankCode) {
return false; // 有值才可以点
} else {
return true
}
}
},
onLoad(option) {
console.log(option);
this.pageState = option.mode || 'addBank';
},
onShow() { },
methods: {
change(e) {
console.log(e);
}
},
}
import api from '@/utils/api'
export default {
name: "withdrawalRecord",
data() {
return {
rules: {
acctName: {
type: 'string',
required: true,
message: this.$t('withdrawal').enterName,
trigger: ['blur', 'change'],
},
bankName: {
type: 'string',
required: true,
message: this.$t('withdrawal').enterBankName,
trigger: ['blur', 'change']
},
acctId: {
type: 'string',
required: true,
message: this.$t('withdrawal').enterAccount,
trigger: ['blur', 'change']
},
bankCode: {
type: 'string',
required: true,
message: this.$t('withdrawal').enterBankCode,
trigger: ['blur', 'change']
},
},
bankInfo: {
bankCode: null,
bankName: null,
acctName: null,
acctId: null,
},
pageState: 'addBank', // 页面状态,是添加还是编辑银行卡
};
},
computed: {
i18n() {
return this.$t("withdrawal");
},
btnIsCanClick() {
if (this.bankInfo.bankCode && this.bankInfo.bankName && this.bankInfo.acctName && this.bankInfo.acctId) {
return false
} else {
return true
}
}
},
onLoad(option) {
this.getBank()
},
onShow() {},
methods: {
// 获取银行卡信息
getBank() {
api.bankCardInfo().then(res => {
this.bankInfo = res;
if (this.bankInfo.id) {
this.pageState = 'editBank' || 'addBank';
}
})
},
// 修改或添加银行卡
bank() {
this.$refs.uForm.validate().then(res => {
let bankInfo = {
bankCode: this.bankInfo.bankCode,
bankName: this.bankInfo.bankName,
acctName: this.bankInfo.acctName,
acctId: this.bankInfo.acctId,
}
if (this.bankInfo.id) {
bankInfo.id = this.bankInfo.id
}
api.bindBank(bankInfo).then(res => {
if (this.bankInfo.id) {
uni.$u.toast(this.$t("me").ModifiedSuccessfully)
} else {
uni.$u.toast(this.$t("me").addSuccessfully)
}
setTimeout(() => {
uni.navigateBack({})
}, 600)
})
}).catch(errors => {
console.log('err')
})
},
},
}
</script>
<style lang="scss" scoped>
.main {
.content {
margin-top: 200rpx;
padding: 32rpx;
.inputBody {
overflow: hidden;
background: #211F32;
border-radius: 32rpx;
padding: 32rpx;
margin-bottom: 32rpx;
.title {
font-size: 32rpx;
color: #A1A0A8;
margin-bottom: 20rpx;
}
.input-item {
height: 112rpx;
background: #323045;
border-radius: 32rpx;
padding-left: 40rpx;
margin-bottom: 20rpx;
.input {
height: 112rpx;
}
}
}
.button {
position: fixed;
bottom: 40rpx;
width: 686rpx;
box-sizing: border-box;
height: 112rpx;
background: #00E8A2;
border-radius: 32rpx;
font-weight: 700;
font-size: 32rpx;
color: #15141F !important;
}
}
}
/deep/ .u-form-item__body {
padding: 0 0;
}
.main {
.content {
margin-top: 200rpx;
padding: 32rpx;
.inputBody {
overflow: hidden;
background: #211F32;
border-radius: 32rpx;
padding: 32rpx;
margin-bottom: 32rpx;
.title {
font-size: 32rpx;
color: #A1A0A8;
margin-bottom: 20rpx;
}
.input-item {
height: 112rpx;
background: #323045;
border-radius: 32rpx;
padding-left: 40rpx;
margin-bottom: 20rpx;
.input {
height: 112rpx;
}
}
}
.button {
position: fixed;
bottom: 40rpx;
width: 686rpx;
box-sizing: border-box;
height: 112rpx;
background: #00E8A2;
border-radius: 32rpx;
font-weight: 700;
font-size: 32rpx;
color: #15141F !important;
}
}
}
</style>

2
utils/api.js

@ -67,7 +67,7 @@ const api = {
receivStepsAward: (params) => Vue.prototype.$axios.post('/api/steps/receivStepsAward',params),//领取奖励
//--------------------------------- home ---------------------------------
indexInfo: () => Vue.prototype.$axios.get('/api/index/info'),//获取系统通用配置
indexInfo: () => Vue.prototype.$axios.post('/api/index/info'),//获取系统通用配置
indexLang: (params) => Vue.prototype.$axios.post('/api/index/lang',params),//切换语言
customerService: (params) => Vue.prototype.$axios.post('/api/index/customerService',params),//获取客服联系方式
sendEmailCode: (params) => Vue.prototype.$axios.post('/api/index/sendEmailCode',params),//发送邮箱验证码

14
utils/axios.js

@ -139,17 +139,19 @@ service.interceptors.response.use(res => {
// console.log(res.data)
// console.log(res.data.data[0].nameAlias)
if (res.success || res.errCode === 'USER.0017') {
return res.data;
} else {
}
if(res.errMsg=='No customer service is online'&&res.errCode=='SYS.0012'){
return res;
}
else {
uni.showToast({
title: res.errMsg,
icon: 'none',
duration: 1500
})
if (res.errCode === 'USER.0010') {
uni.setStorageSync('ticket',null);
uni.removeStorage({
key: 'logInfo',
success: function(res) {
@ -159,8 +161,6 @@ service.interceptors.response.use(res => {
},
fail: (err) => {}
});
// #ifdef H5
var url = location.href;
if (url.indexOf('pages') > -1) {
@ -175,8 +175,6 @@ service.interceptors.response.use(res => {
uni.removeStorageSync('url')
}
// #endif
}
uni.$emit('refreshQrCode')
return Promise.reject(res.errMsg);

2
utils/index.js

@ -60,7 +60,7 @@ var utils = {
var m = date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes()
var s = date.getSeconds() < 10 ? '0' + date.getSeconds() : date.getSeconds()
// return Y + '-' + M + '-' + D + ' ' + h + ':' + m + ':' + s;
return Y + '-' + M + '-' + D + ' ' + h + ':' + m + ':' + s;
return Y + '/' + M + '/' + D + ' ' + h + ':' + m + ':' + s;
},
formathhmm: function(time) {
var date = new Date(time)

13
utils/language/en_US.js

@ -10,6 +10,11 @@ export default {
},
// 登陆相关页面
login: {
Donationsucceeded:'Donation succeeded',
Insufficient:'Insufficient available balance',
pullup:'Gently pull up',
toload:'Trying to load',
Nomore:'No more',
// 公共字段
Login: 'Login',
SignUp: 'Sign Up',
@ -78,6 +83,7 @@ export default {
// 合约页面相关
markets: {
// markets
Dataisempty:'Data is empty',
TrandingPair: 'Tranding Pair',
LatestPrice: 'Latest Price',
RiseAndfall: '24H Rise and fall',
@ -139,6 +145,7 @@ export default {
CharityDetails: 'Charity Details',
About: 'About',
Participants: 'Participants',
Closeddonation: 'Donation Closing',
DonateNow: 'Donate Now',
PleaseChooseCoin: 'Please choose coin',
AvailableBlance: 'Available blance',
@ -214,7 +221,7 @@ export default {
DigitalCurrency: 'Digital currency',
OnLine: 'On-line',
PleaseChooseCoin: 'Please choose coin',
WithdrawAddress: 'Withdraw address',
Choose: 'Choose',
Quantity: 'Quantity',
@ -324,6 +331,7 @@ export default {
//me
me: {
Dataisempty:'Data is empty',
isLogOut:'Are you sure you want to log out?',
account: 'account',
Recharge: 'Recharge',
@ -363,6 +371,7 @@ export default {
ModifyWithdrawalPassword: 'Modify Withdrawal Password',
CreateNewPassword: 'Create new password',
ModifiedSuccessfully:'Modified successfully',
addSuccessfully:'Added successfully',
Fresh: 'Fresh',
Release: 'Release',
@ -371,7 +380,7 @@ export default {
DonateRecord: 'Donate record',
Time: 'Time',
Status:'Status',
SelectCurrency: 'Select currency',
PleaseChooseCoin: 'Please choose coin',
From: 'From',

Loading…
Cancel
Save