Browse Source

新增部分页面

master
[liang] 3 years ago
parent
commit
912aeccd23
  1. 3
      components/KeyValueRow/KeyValueRow.vue
  2. 0
      components/entrustOrderList/entrustOrderList.vue
  3. 2
      components/navigation/navigation.vue
  4. 0
      components/positionList/positionList.vue
  5. 104
      components/showMore/showMore.vue
  6. 4
      components/tabBar/tabBar.vue
  7. 101
      components/transaction/transaction.vue
  8. 80
      pages.json
  9. 321
      pages/home/index.vue
  10. 11
      pages/markets/index.vue
  11. 82
      pages/markets/trade.vue
  12. 2
      pages/me/accountInfo.vue
  13. 6
      pages/me/index.vue
  14. 2
      pages/me/transfer.vue
  15. 125
      pages/mine/mine.vue
  16. 233
      pages/mine/mineDetails.vue
  17. 80
      pages/mine/mineRecord.vue
  18. 527
      pages/recharge/recharge.vue
  19. 159
      pages/recharge/rechargeRecord.vue
  20. 352
      pages/withdrawal/addAddress.vue
  21. 138
      pages/withdrawal/addOrEditBankCard.vue
  22. 289
      pages/withdrawal/chooseAddress.vue
  23. 688
      pages/withdrawal/withdrawal.vue
  24. 172
      pages/withdrawal/withdrawalRecord.vue
  25. BIN
      static/charity/ic_ma_arrow_down.png
  26. 97412
      static/echarts.js
  27. BIN
      static/maskets/logo.png
  28. BIN
      static/mine/Line.png
  29. BIN
      static/mine/bg_mine.png
  30. BIN
      static/mine/coinLogo.png
  31. BIN
      static/mine/img_data.png
  32. BIN
      static/mine/img_mine01.png
  33. BIN
      static/mine/img_mine02.png
  34. BIN
      static/mine/img_mine03.png
  35. BIN
      static/mine/img_mine04.png
  36. BIN
      static/recharge/ic_copy.png
  37. BIN
      static/recharge/img_successed.png
  38. BIN
      static/recharge/money-recive.png
  39. BIN
      static/withdrawal/Checkbox_pr.png
  40. BIN
      static/withdrawal/add-circle.png
  41. BIN
      static/withdrawal/bg_card.png
  42. BIN
      static/withdrawal/money-send.png
  43. 219
      utils/language/en_US.js

3
components/KeyValueRow/KeyValueRow.vue

@ -5,7 +5,7 @@
<u--text class="value" :text="value" :mode="mode" :lines="lines" :color='rightColor' :size="size">
</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 class="value" :style="{ color: rightColor, fontSize: size || rightSize, }">{{ value }}</view>
</view>
</template>
@ -70,6 +70,7 @@ export default {
position: relative;
.keyName {
vertical-align: top;
height: 100%;
width: auto;
display: inline-block;

0
components/entrustOrderList/entrustOrderList.vue

2
components/navigation/navigation.vue

@ -1,5 +1,5 @@
<template>
<view class="nav-head" :class="{'tp':bgTransparent}">
<view class="nav-head" :class="{ 'tp': bgTransparent }">
<image src="../../static/public/back.png" mode="aspectFit" class="back" @tap="back()" v-if="showBack"></image>
<slot name="left"></slot>
<slot></slot>

0
components/positionList/positionList.vue

104
components/showMore/showMore.vue

@ -0,0 +1,104 @@
<template>
<view class="showMore">
<view class="showMoreContent" :class="collapseFlag ? 'up' : 'down'">
<slot></slot>
</view>
<view class="showMoreTool">
<view class="showMoreTitle">{{ title }}</view>
<view class="showMoreIcon" :class="collapseFlag ? 'up' : 'down'" @click="collapse"></view>
</view>
</view>
</template>
<script>
const COMPONENT_NAME = 'showMore'
export default {
name: COMPONENT_NAME,
props: {
showBack: { //
type: Boolean,
default() {
return true
}
},
bgTransparent: { //
type: Boolean,
default() {
return false
}
},
bgnum: {
type: Boolean,
default() {
return false
}
},
},
data() {
return {
title: 'Show more',
collapseFlag: false, //
}
},
computed: {
},
mounted() {
},
methods: {
collapse() {
this.collapseFlag = !this.collapseFlag;
this.title = this.collapseFlag ? 'Pick up' : 'Show more'
}
}
}
</script>
<style scoped lang="scss">
.showMoreContent {
padding-top: 16rpx;
margin-bottom: 16rpx;
// border-top: 2rpx solid #323045;
overflow: hidden;
transition: max-height 0.5s ease-in-out;
&.up {
max-height: 500rpx;
}
&.down {
max-height: 0;
}
}
.showMoreTool {
position: relative;
color: #00E8A2;
font-size: 28rpx;
.showMoreIcon {
width: 32rpx;
height: 32rpx;
position: absolute;
top: 4rpx;
right: 8rpx;
background-image: url(../../static/me/ic_input_arrow_down.png);
background-repeat: no-repeat;
background-size: 32rpx;
transition: transform 0.3s;
&.up {
transform: rotate(-180deg);
}
&.down {
transform: rotate(0deg);
}
}
}
</style>

4
components/tabBar/tabBar.vue

@ -89,10 +89,10 @@ export default {
methods: {
goToPage(num) {
let url = '/pages/index/index';
let url = '/pages/home/index';
switch (+num) {
case 1:
url = '/pages/index/index';
url = '/pages/home/index';
break;
case 2:
url = '/pages/markets/index';

101
components/transaction/transaction.vue

@ -0,0 +1,101 @@
<template>
<view class="transaction">
<view class="tab">
<view class="buy uni-bg-up" :class="type == 2 ? 'normal' : ''" @click="onChangeType(1)">买入</view>
<view class="sell uni-bg-down " :class="type == 1 ? 'normal' : ''" @click="onChangeType(2)">卖出</view>
</view>
</view>
</template>
<script>
const COMPONENT_NAME = 'transaction'
export default {
name: COMPONENT_NAME,
props: {
showBack: { //
type: Boolean,
default() {
return true
}
},
bgTransparent: { //
type: Boolean,
default() {
return false
}
},
bgnum: {
type: Boolean,
default() {
return false
}
},
},
data() {
return {
title: 'Show more',
collapseFlag: false, //
}
},
computed: {
i18n() {
return this.$t("markets");
},
},
mounted() {
},
methods: {
collapse() {
this.collapseFlag = !this.collapseFlag;
this.title = this.collapseFlag ? 'Pick up' : 'Show more'
}
}
}
</script>
<style scoped lang="scss">
.showMoreContent {
padding-top: 16rpx;
margin-bottom: 16rpx;
// border-top: 2rpx solid #323045;
overflow: hidden;
transition: max-height 0.5s ease-in-out;
&.up {
max-height: 500rpx;
}
&.down {
max-height: 0;
}
}
.showMoreTool {
position: relative;
color: #00E8A2;
font-size: 28rpx;
.showMoreIcon {
width: 32rpx;
height: 32rpx;
position: absolute;
top: 4rpx;
right: 8rpx;
background-image: url(../../static/me/ic_input_arrow_down.png);
background-repeat: no-repeat;
background-size: 32rpx;
transition: transform 0.3s;
&.up {
transform: rotate(-180deg);
}
&.down {
transform: rotate(0deg);
}
}
}
</style>

80
pages.json

@ -3,8 +3,9 @@
"^u-(.*)": "uview-ui/components/u-$1/u-$1.vue"
},
"pages": [ //pages
//
{
"path": "pages/index/index",
"path": "pages/home/index",
"style": {
"navigationStyle": "custom"
}
@ -22,7 +23,6 @@
"navigationStyle": "custom"
}
},
{
"path": "pages/login/register",
"style": {
@ -30,17 +30,16 @@
}
},
//
// markets
{
"path": "pages/index/index",
"path": "pages/markets/index",
"style": {
"navigationStyle": "custom"
}
},
// markets
{
"path": "pages/markets/index",
"path": "pages/markets/trade",
"style": {
"navigationStyle": "custom"
}
@ -146,8 +145,75 @@
"style": {
"navigationStyle": "custom"
}
},
//Recharge
{
"path": "pages/recharge/recharge",
"style": {
"navigationStyle": "custom"
}
},
{
"path": "pages/recharge/rechargeRecord",
"style": {
"navigationStyle": "custom"
}
},
//mine'
{
"path": "pages/mine/mine",
"style": {
"navigationStyle": "custom"
}
},
{
"path": "pages/mine/mineDetails",
"style": {
"navigationStyle": "custom"
}
},
{
"path": "pages/mine/mineRecord",
"style": {
"navigationStyle": "custom"
}
},
//withdrawal
{
"path": "pages/withdrawal/withdrawal",
"style": {
"navigationStyle": "custom"
}
},
{
"path": "pages/withdrawal/withdrawalRecord",
"style": {
"navigationStyle": "custom"
}
},
{
"path": "pages/withdrawal/chooseAddress",
"style": {
"navigationStyle": "custom"
}
},
{
"path": "pages/withdrawal/addAddress",
"style": {
"navigationStyle": "custom"
}
},
{
"path": "pages/withdrawal/addOrEditBankCard",
"style": {
"navigationStyle": "custom"
}
}
],
"globalStyle": {
"navigationBarTextStyle": "black",

321
pages/index/index.vue → pages/home/index.vue

@ -24,17 +24,17 @@
</view>
<!-- 三个按钮 -->
<view class="btnDiv">
<view class="item">
<view class="item" @click="goto('recharge')">
<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>
<view class="item">
<view class="item" @click="goto('mine')">
<u--image class="img" :showLoading="true" src="../../static/home/img_Mine.png" width="144rpx"
height="144rpx"></u--image>
<view class="text">{{ i18n.Mine }}</view>
</view>
<view class="item">
<view class="item" @click="goto('subcription')">
<u--image class="img" :showLoading="true" src="../../static/home/img_Subcription.png" width="144rpx"
height="144rpx"></u--image>
<view class="text">{{ i18n.Subcription }}</view>
@ -44,15 +44,23 @@
<view class="steps">
<view class="content">
<view class="title">{{ i18n.TodaySteps }}</view>
<canvas id="chart" ref="chart" style="width: 280rpx;height:280rpx; font-size: 40rpx;"></canvas>
<view id="chart" style="width: 280rpx;height:280rpx; font-size: 40rpx;"></view>
<!-- <canvas id="chart" ref="chart" style="width: 280rpx;height:280rpx; font-size: 40rpx;"></canvas> -->
<u-button class="button" color="#00E8A2">{{ i18n.ReceiveEarnings }}</u-button>
</view>
</view>
<!-- 播放器 -->
<view class="videoList" v-for="(item, index) in videoList" :key="index">
<video class="video" :id="`video-${index}`" :enable-progress-gesture="false" :src="item.url"
:poster="item.poster" :title="item.title" controls @play="stopOtherVideoPlay" :key="index"></video>
<view class="videoList" v-for="(item, index) in videoList" :key="index" @click="playVideo(item)">
<view class="videoImage" :style="`background-image: url(${item.poster});background-repeat: no-repeat;
background-size: cover;`">
<view class="VideoBg">
<view class="VideoLogo"></view>
<view class="VideoTitle">{{ item.title }}</view>
</view>
</view>
</view>
<video class="video" v-show="videoShow" id="video" :enable-progress-gesture="false" autoplay="true"
:src="videoUrl" controls x5-video-player-type="h5-page" @fullscreenchange="ifStopVideo"></video>
<!-- 通知弹出层 -->
<u-popup class="popup" :show="popupShow" round="32rpx" mode="center" @close="popupShow = false"
@open="popupShow = true" bgColor="#211F32" :customStyle="{
@ -74,9 +82,11 @@
import languagePopups from '@/components/language-popups/language-popups.vue'
import languageData from '@/utils/language/config'
// echarts
import * as echarts from 'echarts';
// import * as echarts from 'echarts';
let videoPlayerObj = {};
// let videoPlayerObj = {};
let videoPlayer;
let myChart;
export default {
name: 'home',
components: { languagePopups },
@ -91,26 +101,28 @@ export default {
'https://cdn.uviewui.com/uview/swiper/swiper2.png',
'https://cdn.uviewui.com/uview/swiper/swiper3.png',
],
videoShow: false,
videoUrl: '',
videoList: [
{
url: 'https://cdn.uviewui.com/uview/resources/video.mp4',
title: '昨夜星辰昨夜风,画楼西畔桂堂东',
title: 'Video name 1',
poster: 'https://cdn.uviewui.com/uview/swiper/swiper1.png'
},
{
url: 'https://cdn.uviewui.com/uview/resources/video.mp4',
title: '昨夜星辰昨夜风,画楼西畔桂堂东',
poster: 'https://cdn.uviewui.com/uview/swiper/swiper1.png'
url: 'https://media.w3.org/2010/05/sintel/trailer.mp4',
title: 'Video name 2',
poster: 'https://cdn.uviewui.com/uview/swiper/swiper2.png'
},
{
url: 'https://cdn.uviewui.com/uview/resources/video.mp4',
title: '昨夜星辰昨夜风,画楼西畔桂堂东',
poster: 'https://cdn.uviewui.com/uview/swiper/swiper1.png'
url: 'http://vjs.zencdn.net/v/oceans.mp4',
title: 'Video name 3',
poster: 'https://cdn.uviewui.com/uview/swiper/swiper3.png'
},
{
url: 'https://cdn.uviewui.com/uview/resources/video.mp4',
title: '昨夜星辰昨夜风,画楼西畔桂堂东',
poster: 'https://cdn.uviewui.com/uview/swiper/swiper1.png'
url: 'http://mirror.aarnet.edu.au/pub/TED-talks/911Mothers_2010W-480p.mp4',
title: 'Video name 4',
poster: 'https://cdn.uviewui.com/uview/swiper/swiper2.png'
},
],
option: null,
@ -125,14 +137,15 @@ export default {
},
onShow() {
//
this.videoList.forEach((item, index) => {
const VideoPlayer = uni.createVideoContext(`video-${index}`, this)
videoPlayerObj[`video-${index}`] = VideoPlayer
});
// this.videoList.forEach((item, index) => {
// const VideoPlayer = uni.createVideoContext(`video-${index}`, this)
// videoPlayerObj[`video-${index}`] = VideoPlayer
// });
videoPlayer = uni.createVideoContext(`video`, this);
this.$nextTick(() => {
this.initChart()
})
// this.$nextTick(() => {
// this.initChart()
// })
if (uni.getStorageSync('langTrue')) {
this.langTrue = uni.getStorageSync('langTrue')
@ -163,35 +176,77 @@ export default {
})
},
/**
* 播放视频是暂停其他视频
* 跳转其他页面时是暂停全部视频
* @param {*} e
*/
stopOtherVideoPlay(e) {
const keyArr = Object.keys(videoPlayerObj)
keyArr.forEach(item => {
if (item !== e.target.id) {
videoPlayerObj[item].pause()
}
});
stopAllVideoPlay() {
videoPlayer.pause()
},
/**
* 在跳转其他页面时是暂停全部视频
* 根据全屏状态与暂停视频
* @param {*} e
*/
stopAllVideoPlay() {
const keyArr = Object.keys(videoPlayerObj)
keyArr.forEach(item => {
videoPlayerObj[item].pause()
});
ifStopVideo(e) {
if (e.detail.fullScreen) {
videoPlayer.play()
} else {
this.videoShow = false
videoPlayer.pause()
}
},
/**
* 播放视频
* @param {*} data
*/
playVideo(data) {
this.videoUrl = data.url;
this.videoShow = true;
videoPlayer.requestFullScreen({ direction: 0 })
},
/**
* 跳转
*/
goto(id) {
// console.log(id);
let url = '';
switch (id) {
case 'recharge':
url = '/pages/recharge/recharge'
break;
case 'mine':
url = '/pages/mine/mine'
break;
case 'subcription':
url = '/pages/subscription/index';
break;
default:
break;
}
if (url) {
this.stopAllVideoPlay()
// console.log(url);
if (id === 'subcription') {
uni.reLaunch({
url,
})
return;
}
uni.navigateTo({
url,
});
}
},
initChart() {
// let myChart = echarts.init(this.$refs.chart);
// console.log(document);
// console.log(this.$refs.chart);
this.myChart = echarts.init(document.getElementById('chart'));
// this.myChart = echarts.init(document.getElementById('chart'));
// this.myChart = echarts.init(this.$refs.chart);
// myChart = echarts.init(document.getElementById('chart'))
this.option = {
title: {
text: this.stepsNum,
@ -257,17 +312,162 @@ export default {
}]
}
this.myChart.setOption(this.option, true);
// myChart.setOption(this.option, true);
window.addEventListener('resize', () => {
this.myChart.resize();
});
// window.addEventListener('resize', () => {
// myChart.resize();
// });
}
}
}
</script>
<script module="echarts" lang="renderjs">
let myChart
export default {
mounted() {
console.log(0);
console.log(window);
console.log(typeof window.echarts);
// this.initEcharts();
if (typeof window.echarts === 'object') {
this.initEcharts()
}else if (typeof window.echarts === 'function') {
this.initEcharts()
} else {
console.log(1);
//
const script = document.createElement('script');
console.log(2);
// view www www
script.src = '/static/echarts.js';
console.log(3);
script.onload = this.initEcharts.bind(this);
console.log(4);
document.head.appendChild(script);
console.log(5);
}
},
methods: {
initEcharts() {
console.log(31);
// let t1=null;
this.initChart()
console.log(32);
myChart = echarts.init(document.getElementById('chart'))
console.log(33);
// view 访
myChart.setOption(this.option)
console.log(34);
// clearInterval(t1)
// t1= setInterval(() => {
// console.log(1);
// myChart.setOption(this.option)
// }, 1000);
},
updateEcharts(newValue, oldValue, ownerInstance, instance) {
// service
myChart.setOption(newValue)
},
onClick(event, ownerInstance) {
// service
ownerInstance.callMethod('onViewClick', {
test: 'test'
})
},
initChart() {
// let myChart = echarts.init(this.$refs.chart);
// console.log(document);
// console.log(this.$refs.chart);
// this.myChart = echarts.init(document.getElementById('chart'));
// this.myChart = echarts.init(this.$refs.chart);
// myChart = echarts.init(document.getElementById('chart'))
this.option = {
title: {
text: this.stepsNum,
//
subtext: "",
//
itemGap: 0,
left: 'center',
top: 'center',
//
textStyle: {
fontSize: '20',
color: '#fff'
},
},
series: [{
name: '环形饼图',
type: 'pie',
radius: ['48%', '70%'],
avoidLabelOverlap: false,
label: {
show: false,
position: 'center'
},
itemStyle: {
//
shadowBlur: 30,
shadowColor: '#15141F',
shadowOffsetX: 'center',
shadowOffsetY: 'center'
},
data: [{
value: +this.stepsNum / this.stepTarget
,
name: '步数',
itemStyle: {
color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
offset: .2,
color: '#47BDFF'
}, {
offset: .5,
color: '#34AEFF'
}, {
offset: 1,
color: '#0589FF'
}
]),
borderRadius: 800,
}
},
{
value: (this.stepTarget - this.stepsNum) / this.stepTarget,
name: '剩余步数',
itemStyle: {
color: '#15141F',
}
}
]
}]
}
// myChart.setOption(this.option, true);
// window.addEventListener('resize', () => {
// myChart.resize();
// });
}
},
watch: {
// `question`
columData: function(newQuestion, oldQuestion) {
// this.updateEcharts(this.option)
}
},
}
</script>
<style lang="scss" scoped>
.main {
padding-bottom: 198rpx; // TabBar
@ -435,16 +635,43 @@ export default {
}
.videoList {
z-index: 1;
.video {
.videoImage {
margin: 32rpx 32rpx 0;
width: 686rpx;
height: 360rpx;
border-radius: 32rpx;
.VideoBg {
box-sizing: border-box;
padding-top: 96rpx;
width: 100%;
height: 100%;
background-color: rgba(0, 0, 0, 0.6) !important;
.VideoLogo {
width: 96rpx;
height: 96rpx;
margin: 0 auto;
background-image: url(../../static/home/ic_play.png);
background-repeat: no-repeat;
background-size: 96rpx;
}
.VideoTitle {
font-size: 48rpx;
text-align: center;
}
}
}
}
.video {
// position: fixed;
top: 0;
z-index: 9;
}
.popup {

11
pages/markets/index.vue

@ -8,7 +8,7 @@
</view>
<!-- 列表 -->
<view class="coinList">
<view class="coin" v-for="(item, index) in 20" :key="index">
<view class="coin" v-for="(item, index) in 20" :key="index" @click="goto(item)">
<view class="icon">
<u-icon name="../../static/maskets/bye.png" size="40rpx" width="40rpx"></u-icon>
</view>
@ -44,7 +44,14 @@ export default {
}
},
methods: {
/**
* 跳转
*/
goto(data) {
uni.navigateTo({
url: '/pages/markets/trade',
});
},
}
}

82
pages/markets/trade.vue

@ -0,0 +1,82 @@
<template>
<view class="main">
<!-- nav -->
<navigation>{{ 'BTC/USDT' }}<view slot="right" class="right" @click="goto('kLine')"></view>
</navigation>
<view class="content">
<view class="transactionSide">
<!-- <tradePanel ref="trade" :type="type"></tradePanel> -->
<transaction></transaction>
</view>
<view class="positionSide">
<!-- <positionList v-on:depthChange="depthChange"></positionList> -->
</view>
</view>
<view class="uni-gap"></view>
<!-- <entrustOrderList></entrustOrderList> -->
<!-- <uni-drawer :visible="drawerVisible" mask="false" mode="left" @close="closeDrawer">
<marketDrawer :areaList="areaList" :marketList="marketList"></marketDrawer>
</uni-drawer> -->
</view>
</template>
<script>
import transaction from '../../components/transaction/transaction.vue';
export default {
components: { transaction },
name: "trade",
data() {
return {
};
},
computed: {
i18n() {
return this.$t("markets");
},
},
onLoad() {
},
onShow() { },
methods: {
},
}
</script>
<style lang="scss" scoped>
.main {
.right {
width: 48rpx;
height: 48rpx;
position: absolute;
right: 32rpx;
font-size: 24rpx;
background-image: url(../../static/home/ic_increase.png);
background-repeat: no-repeat;
background-size: 48rpx;
color: #FFBC1F;
}
.content {
margin-top: 200rpx;
padding: 40rpx;
.transactionSide{
width: 444rpx;
margin-left: 28rpx;
}
}
}
</style>

2
pages/me/accountInfo.vue

@ -51,8 +51,10 @@ export default {
url = '/pages/me/changeWithdrawalPassword'
break;
case 'BankCard':
url = '/pages/withdrawal/addOrEditBankCard?mode=accountInfo'
break;
case 'WithdrawalAddress':
url = '/pages/withdrawal/chooseAddress?form=accountInfo'
break;
default:
break;

6
pages/me/index.vue

@ -110,6 +110,12 @@ export default {
const id = e.target.id;
let url = '';
switch (id) {
case 'recharge':
url = '/pages/recharge/recharge'
break;
case 'withdrawal':
url = '/pages/withdrawal/withdrawal'
break;
case 'transfer':
url = '/pages/me/transfer'
break;

2
pages/me/transfer.vue

@ -34,7 +34,7 @@
<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 class="numberDownSelect">USDT <view class="all">{{i18n.ALL}}</view>
</view>
</view>
<view class="Usable">{{ i18n.Usable }} <view class="number">560878.90000000</view>

125
pages/mine/mine.vue

@ -0,0 +1,125 @@
<template>
<view class="main">
<!-- nav -->
<navigation>{{ i18n.MinePool }}</navigation>
<view class="poolContent">
<!-- pool选择框 -->
<view class="pool-item" v-for="(item, index) in 4" :key="index">
<u-icon class="icon" :name="'../../static/mine/img_mine01.png'" size="92rpx" width="92rpx"></u-icon>
<view class="right">
<view class="title">0.1 BTC 30 days</view>
<view class="description">every time lock 0.1 BTC,Lock 30 Mine poolLock,to produce 300 ACTA per 1
day</view>
</view>
<u-button class="button" @click="gotoDetails(index)" color="#00E8A2" throttleTime="500">{{ i18n.OpenMine }}</u-button>
</view>
</view>
</view>
</template>
<script>
export default {
name: "mine",
data() {
return {
pageState: 'coinRecharge',
coin: '',
USDTPopupShow: false,
USDTRadioValue: '',
selectNumberValue: 100,
selectMethod: '1',
};
},
computed: {
i18n() {
return this.$t("mine");
},
},
onLoad() {
},
onShow() { },
methods: {
gotoDetails(index) {
console.log(index);
uni.navigateTo({
url: `/pages/mine/mineDetails?id=${index}`
});
},
},
}
</script>
<style lang="scss" scoped>
.main {
.poolContent {
overflow: hidden;
margin-top: 200rpx;
padding: 0 60rpx;
.pool-item {
position: relative;
background: #211F32;
margin-top: 32rpx;
padding: 32rpx 24rpx;
background-image: url(../../static/mine/Line.png);
background-repeat: no-repeat;
background-size: 630rpx 2rpx;
.icon {
display: inline-block;
width: 92rpx;
margin-top: 10rpx;
margin-right: 28rpx;
border-radius: 16rpx;
vertical-align: top;
}
.right {
display: inline-block;
width: 460rpx;
.title {
font-weight: 600;
width: 460rpx;
height: 52rpx;
line-height: 52rpx;
font-size: 32rpx;
}
.description {
width: 460rpx;
font-size: 24rpx;
color: #A1A0A8;
}
}
.button {
height: 64rpx;
line-height:64rpx;
font-size: 28rpx;
color: #15141F !important;
margin-top: 48rpx;
border-radius: 16rpx;
text-align: center;
font-weight: 600;
}
&:last-child{
margin-bottom: 80rpx;
}
}
}
}
</style>

233
pages/mine/mineDetails.vue

@ -0,0 +1,233 @@
<template>
<view class="main">
<!-- nav -->
<navigation>{{ i18n.MineDetails }}<view slot="right" class="right" @click="goto('mineRecord')">{{ i18n.Record }}
</view>
</navigation>
<view class="content">
<view class="card">
<view class="top">
<u-icon class="icon" :name="'../../static/mine/coinLogo.png'" size="80rpx" width="80rpx"></u-icon>
<view class="title">{{ i18n.YourBTC }}</view>
<view class="coinValue">{{ coinValue }}</view>
</view>
<view class="bottom">
<view class="item">
<view class="title">{{ i18n.LockBTC }}</view>
<view class="value">0.1</view>
</view>
<view class="item">
<view class="title">{{ i18n.dayproduce }}</view>
<view class="value">300 ACTA</view>
</view>
<view class="item">
<view class="title">{{ i18n.MinLockTime }}</view>
<view class="value">30{{ i18n.days }}</view>
</view>
</view>
</view>
<input class="input" v-model="codeValue" focus :placeholder="i18n.invuteCode"
placeholder-style="color:#A1A0A8" />
<view class="allItem">
<input class="input" v-model="coinQuantity" :placeholder="i18n.lockBTC"
placeholder-style="color:#A1A0A8" />
<view class="all">{{ i18n.ALL }}</view>
</view>
<u-button class="button" color="#00E8A2" throttleTime="500" :disabled="true">{{ i18n.LockBTCBtn }}
</u-button>
</view>
</view>
</template>
<script>
import uniCopy from '@/utils/uni-copy'
export default {
name: "mineDetails",
data() {
return {
coinValue: 1000.001,
codeValue: '',
coinQuantity: '',
};
},
computed: {
i18n() {
return this.$t("mine");
},
},
onLoad() {
},
onShow() { },
methods: {
goto(id) {
// console.log(id);
let url = '';
switch (id) {
case 'mineRecord':
url = '/pages/mine/mineRecord'
break;
default:
break;
}
if (url) {
// console.log(url);
uni.navigateTo({
url,
});
}
},
USDTRadioChange(e) {
console.log(e);
},
copyAddress(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 {
.right {
position: absolute;
right: 32rpx;
font-size: 24rpx;
}
.content {
overflow: hidden;
margin-top: 200rpx;
padding: 0 32rpx;
.card {
margin-top: 40rpx;
height: 274rpx;
padding: 0 24rpx;
background-image: url(../../static/mine/bg_mine.png);
background-repeat: no-repeat;
background-size: 686rpx 274rpx;
.top {
display: flex;
height: 132rpx;
border-bottom: 2rpx solid rgba(255, 255, 255, 0.2);
.icon {
margin: 0 24rpx 0 16rpx;
}
.title {
font-size: 28rpx;
line-height: 136rpx;
}
.coinValue {
flex: 1;
text-align: right;
font-size: 68rpx;
line-height: 144rpx;
padding-right: 20rpx;
}
}
.bottom {
display: flex;
height: 140rpx;
padding: 0 20rpx;
.item {
flex: 1;
.title {
font-size: 20rpx;
line-height: 64rpx;
}
.value {
font-size: 35rpx;
line-height: 40rpx;
font-weight: 600;
}
&:nth-child(1) {
text-align: left;
}
&:nth-child(2) {
text-align: center;
}
&:nth-child(3) {
text-align: right;
}
}
}
}
.input {
margin-top: 32rpx;
height: 112rpx;
background: #323045;
border-radius: 32rpx;
padding-left: 32rpx;
font-size: 26rpx;
color: #fff;
}
.allItem {
position: relative;
.all {
position: absolute;
display: inline;
font-size: 20rpx;
color: #00E8A2;
top: 44rpx;
right: 30rpx;
}
}
.button {
margin-top: 60rpx;
border-radius: 32rpx;
height: 112rpx;
line-height: 112rpx;
color: #15141F !important;
font-weight: bold;
}
}
}
</style>

80
pages/mine/mineRecord.vue

@ -0,0 +1,80 @@
<template>
<view class="main">
<!-- nav -->
<navigation>{{ i18n.MinePool }}</navigation>
<!-- 数据为空格显示 -->
<u-empty :show="dataList.length === 0" marginTop="350rpx" :text="i18n.NoData" textColor="#818197"
textSize="36rpx" icon="../../static/mine/img_data.png"></u-empty>
<view class="content" v-if="dataList.length > 0">
<view class="dataBody" v-for="(item, index) in 4" :key="index">
<Key-value-row :keyName="i18n.BaseCoin" :value="'100BTC'" ></Key-value-row>
<Key-value-row :keyName="i18n.ProfitCoin" :value="'CEH'"></Key-value-row>
<Key-value-row :keyName="i18n.DayRebate" :value="'75000'"></Key-value-row>
<u-divider text="" lineColor="#B9C1D9"></u-divider>
<Key-value-row :keyName="i18n.RebateDay" :value="'0/120'"></Key-value-row>
<Key-value-row :keyName="i18n.RebateAmount" :value="'150000/9000000'"></Key-value-row>
<u-divider text="" lineColor="#B9C1D9"></u-divider>
<Key-value-row :keyName="i18n.AddTime" :value="'2022/08/06 14:50:34'"></Key-value-row>
<Key-value-row :keyName="i18n.ReleaseTime" :value="'2022/08/06 14:50:34'"></Key-value-row>
</view>
</view>
</view>
</template>
<script>
import KeyValueRow from '../../components/KeyValueRow/KeyValueRow.vue';
export default {
components: { KeyValueRow },
name: "mineRecord",
data() {
return {
dataList: [{}],
};
},
computed: {
i18n() {
return this.$t("mine");
},
},
onLoad() {
},
onShow() { },
methods: {
},
}
</script>
<style lang="scss" scoped>
.main {
.content {
margin-top: 200rpx;
padding: 32rpx;
.dataBody {
margin-bottom: 32rpx;
padding: 32rpx;
box-sizing: border-box;
background: #211F32;
border-radius: 20rpx;
.text {
margin-top: 20rpx;
padding: 10rpx 16rpx;
background: #323045;
border-radius: 8rpx;
font-size: 24rpx;
color: #A1A0A8;
}
}
}
}
</style>

527
pages/recharge/recharge.vue

@ -0,0 +1,527 @@
<template>
<view class="main">
<!-- nav -->
<navigation>{{ i18n.Recharge }}<view slot="right" class="right" @click="goto('rechargeRecord')">{{ i18n.Record
}}
</view>
</navigation>
<!-- headBtn -->
<view class="head">
<view class="headItem" @click="pageState = 'coinRecharge'"
:class="{ select: pageState === 'coinRecharge' }">
{{ i18n.CoinRecharge }}
</view>
<view class="headItem" @click="pageState = 'cashRecharge'"
:class="{ select: pageState === 'cashRecharge' }">
{{ i18n.CashRecharge }}
</view>
</view>
<view class="coinContent" v-if="pageState === 'coinRecharge'">
<!-- coin选择框 -->
<view class="input-item">
<u-input class="input" v-model="coin" color="#fff" fontSize="32rpx" border="none"
:placeholder="i18n.PleaseChooseCoin">
</u-input>
<view class="selectCoinBtn" @click="USDTPopupShow = true">USDT
</view>
</view>
<view class="coin-item">
<view class="QRCode">
<u-image class="QRCodeImg" src="../../static/me/QR-code.png" width="310rpx" height="310rpx">
</u-image>
</view>
<view class="CoinAddressTitle">{{ i18n.CoinDepositAddress }}</view>
<view class="Copy" @click="copyAddress('123')">{{ i18n.CopyAddress }}</view>
<view class="CoinAddress">{{ 'MBDLNKJ9080FWO83RHFKSJLIRJF9S9890DKJ90' }}</view>
<u-divider text="" :dashed="true"></u-divider>
<view class="ScanQR">{{ i18n.ScanQR }}</view>
</view>
<view class="message-item">
{{ i18n.message }}
</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>
<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/logo.png" size="64rpx" width="64rpx"></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 class="cashContent" v-if="pageState === 'cashRecharge'">
<view class="enter">
<view class="selectTitle">{{ i18n.selectAmount }}</view>
<view class="numberSelect">
<view class="item" :class="{ select: selectNumberValue === 100 }" @click="selectNumberValue = 100">
$100
</view>
<view class="item" :class="{ select: selectNumberValue === 200 }" @click="selectNumberValue = 200">
$200
</view>
<view class="item" :class="{ select: selectNumberValue === 300 }" @click="selectNumberValue = 300">
$300
</view>
<view class="item" :class="{ select: selectNumberValue === 1000 }"
@click="selectNumberValue = 1000">
$1000</view>
<view class="item" :class="{ select: selectNumberValue === 5000 }"
@click="selectNumberValue = 5000">
$5000</view>
<view class="item" :class="{ select: selectNumberValue === 10000 }"
@click="selectNumberValue = 10000">
$10000</view>
</view>
<input class="input" v-model="selectNumberValue" focus :placeholder="i18n.EnterNumber" placeholder-style="color:#A1A0A8" />
</view>
<view class="RechargeMethod">
<view class="methodTitle">{{ i18n.RechargeMethod }}</view>
<view class="methodSelect">
<view class="item" :class="{ select: selectMethod === '1' }" @click="selectMethod = '1'">
Online payment1
</view>
<view class="item" :class="{ select: selectMethod === '2' }" @click="selectMethod = '2'">
Online payment2
</view>
</view>
</view>
<u-button class="button" color="#00E8A2" throttleTime="500">{{ i18n.Submit }}
</u-button>
</view>
</view>
</template>
<script>
import uniCopy from '@/utils/uni-copy'
export default {
name: "recharge",
data() {
return {
pageState: 'coinRecharge',
coin: '',
USDTPopupShow: false,
USDTRadioValue: '',
selectNumberValue: 100,
selectMethod: '1',
};
},
computed: {
i18n() {
return this.$t("recharge");
},
},
onLoad() {
},
onShow() { },
methods: {
goto(id) {
// console.log(id);
let url = '';
switch (id) {
case 'rechargeRecord':
url = '/pages/recharge/rechargeRecord'
break;
default:
break;
}
if (url) {
// console.log(url);
uni.navigateTo({
url,
});
}
},
USDTRadioChange(e) {
console.log(e);
},
copyAddress(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 {
.right {
position: absolute;
right: 32rpx;
font-size: 24rpx;
}
.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;
}
}
}
.coinContent {
padding: 0 32rpx;
.input-item {
overflow: hidden;
position: relative;
height: 124rpx;
line-height: 124rpx;
background: #211F32;
margin-bottom: 48rpx;
border-radius: 32rpx;
padding: 0 40rpx;
/deep/.u-form-item__body {
padding: 0;
}
.input {
width: 460rpx;
height: 124rpx;
display: inline-block;
}
.selectCoinBtn {
position: absolute;
width: 170rpx;
height: 54rpx;
top: 36rpx;
right: 32rpx;
line-height: 56rpx;
font-size: 36rpx;
padding: 0;
color: #fff;
&::after {
display: block;
position: absolute;
content: '';
background-image: url(../../static/me/ic_input_arrow_down.png);
background-repeat: no-repeat;
background-size: 32rpx;
width: 32rpx;
height: 32rpx;
top: 12rpx;
right: 10rpx;
}
}
}
.coin-item {
height: 622rpx;
background: #211F32;
border-radius: 10px;
overflow: hidden;
padding: 0 40rpx;
.QRCode {
margin: 60rpx auto 32rpx;
width: 310rpx;
}
.CoinAddressTitle {
width: 340rpx;
height: 40rpx;
font-size: 14px;
display: inline-block;
color: #00E8A2;
}
.Copy {
position: relative;
height: 40rpx;
display: inline-block;
color: #00E8A2;
font-size: 20rpx;
margin-left: 70rpx;
padding-left: 40rpx;
&::before {
display: block;
position: absolute;
content: '';
background-image: url(../../static/recharge/ic_copy.png);
background-repeat: no-repeat;
background-size: 32rpx;
width: 32rpx;
height: 32rpx;
top: 0rpx;
left: 0rpx;
}
}
.CoinAddress {
margin-top: 12rpx;
font-size: 20rpx;
// transform: scale(0.83333);
// transform-origin: 0 0;
color: #A1A0A8;
}
.ScanQR {
font-size: 20rpx;
// transform: scale(0.83333);
// transform-origin: 0 0;
color: #A1A0A8;
}
}
.message-item {
margin: 32rpx 0 120rpx;
padding: 0 16rpx;
font-size: 24rpx;
color: #A1A0A8;
}
.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: 64rpx;
height: 64rpx;
border-radius: 20rpx;
overflow: hidden;
display: inline-block;
box-sizing: border-box;
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;
}
}
}
}
.cashContent {
.enter {
box-sizing: border-box;
height: 422rpx;
margin: 0 32rpx;
background: #211F32;
border-radius: 20rpx;
padding: 24rpx 32rpx;
.selectTitle {
font-size: 24rpx;
}
.numberSelect {
margin-top: 32rpx;
height: 168rpx;
display: flex;
flex-direction: row;
justify-content: space-between;
align-items: center;
align-content: space-between;
flex-wrap: wrap;
.item {
height: 68rpx;
line-height: 68rpx;
width: 186rpx;
color: #A1A0A8;
background: #323045;
border-radius: 40rpx;
text-align: center;
font-size: 32rpx;
&.select {
background: #FF844B;
color: #FFFFFF;
}
}
}
.input {
height: 112rpx;
background: #323045;
border-radius: 32rpx;
padding-left: 40rpx;
margin-top: 32rpx;
color: #fff;
}
}
.RechargeMethod {
box-sizing: border-box;
height: 178rpx;
margin: 32rpx;
background: #211F32;
border-radius: 20rpx;
padding: 24rpx 32rpx;
.methodTitle {
font-size: 24rpx;
}
.methodSelect {
margin-top: 32rpx;
height: 112rpx;
display: flex;
flex-direction: row;
justify-content: space-between;
align-items: center;
align-content: space-between;
flex-wrap: wrap;
.item {
height: 68rpx;
line-height: 68rpx;
width: 306rpx;
color: #A1A0A8;
background: #323045;
border-radius: 40rpx;
text-align: center;
font-size: 32rpx;
&.select {
background: #FF844B;
color: #FFFFFF;
}
}
}
}
.button {
width: 686rpx;
box-sizing: border-box;
height: 112rpx;
margin: 16rpx 32rpx;
background: #00E8A2;
border-radius: 32rpx;
font-weight: 700;
font-size: 32rpx;
color: #15141F !important;
}
}
}
</style>

159
pages/recharge/rechargeRecord.vue

@ -0,0 +1,159 @@
<template>
<view class="main">
<!-- nav -->
<navigation>{{ i18n.RechargeRecord }}</navigation>
<!-- headBtn -->
<view class="head">
<view class="headItem" @click="pageState = 'coinRecharge'"
:class="{ select: pageState === 'coinRecharge' }">
{{ i18n.CoinRecharge }}
</view>
<view class="headItem" @click="pageState = 'cashRecharge'"
:class="{ select: pageState === 'cashRecharge' }">
{{ i18n.CashRecharge }}
</view>
</view>
<view class="cardList">
<view class="card" v-for="(item, index) in 4" :key="index">
<!-- 卡片条件渲染 -->
<!-- balance -->
<card-header v-if="pageState === 'coinRecharge'" iconName="../../static/recharge/money-recive.png"
:title="'904.29483230ACTA'" rightName="Succeed" fontColor="#00E8A2">
</card-header>
<view class="dataBody" v-if="pageState === 'coinRecharge'">
<view style="padding:20rpx 32rpx;">
<Key-value-row :keyName="i18n.OrderID" :value="'293829773920223873676'"></Key-value-row>
<Key-value-row :keyName="i18n.Fees" :value="'10.0922'"></Key-value-row>
<Key-value-row :keyName="i18n.Time" :value="'2022/08/06 14:50:34'"></Key-value-row>
</view>
<view style="border-top: 2rpx solid #323045;padding:0rpx 32rpx; margin-bottom: 20rpx;">
<show-more>
<Key-value-row :keyName="i18n.Address" :value="'dhiukyfdhi8797979870800'"></Key-value-row>
<Key-value-row :keyName="i18n.Hash" :value="'dhiukyfdhi8797979870800'"></Key-value-row>
<view class="text">Postscript : ontact customer service on the top-left corner for identity
verific
</view>
</show-more>
</view>
</view>
<!-- contarct -->
<card-header v-if="pageState === 'cashRecharge'" iconName="../../static/recharge/money-recive.png"
:title="'904.29483230ACTA'" rightName="Succeed" fontColor="#00E8A2">
</card-header>
<view class="dataBody" v-if="pageState === 'cashRecharge'">
<view style="padding:20rpx 32rpx;">
<Key-value-row :keyName="i18n.OrderID" :value="'293829773920223873676'"></Key-value-row>
<Key-value-row :keyName="i18n.Fees" :value="'10.0922'"></Key-value-row>
<Key-value-row :keyName="i18n.Time" :value="'2022/08/06 14:50:34'"></Key-value-row>
</view>
<view style="border-top: 2rpx solid #323045;padding:0rpx 32rpx; margin-bottom: 20rpx;">
<show-more>
<Key-value-row :keyName="i18n.USDTRate" :value="'19298'"></Key-value-row>
<Key-value-row :keyName="i18n.USDT" :value="'298237'"></Key-value-row>
<view class="text">Postscript : ontact customer service on the top-left corner for identity
verific
</view>
</show-more>
</view>
</view>
</view>
</view>
</view>
</template>
<script>
import KeyValueRow from '../../components/KeyValueRow/KeyValueRow.vue';
import CardHeader from '../../components/cardHeader/cardHeader.vue';
import ShowMore from '../../components/showMore/showMore.vue';
export default {
components: { KeyValueRow, CardHeader, ShowMore },
name: "rechargeRecord",
data() {
return {
pageState: 'coinRecharge',
};
},
computed: {
i18n() {
return this.$t("recharge");
},
},
onLoad() {
},
onShow() { },
methods: {
change(e) {
console.log(e);
}
},
}
</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;
.text {
margin-top: 20rpx;
padding: 10rpx 16rpx;
background: #323045;
border-radius: 8rpx;
font-size: 24rpx;
color: #A1A0A8;
}
}
}
}
}
</style>

352
pages/withdrawal/addAddress.vue

@ -0,0 +1,352 @@
<template>
<view class="main">
<!-- nav -->
<navigation>{{ i18n.AddAddress }} </navigation>
<view class="body">
<!-- coin选择框 -->
<view class="choose-item">
<u-input class="input" v-model="coin" color="#fff" fontSize="32rpx" border="none"
:placeholder="i18n.PleaseChooseCoin">
</u-input>
<view class="selectCoinBtn" @click="USDTPopupShow = true">USDT
</view>
</view>
<view class="addressBody">
<view class="address-title">{{ i18n.Address }}</view>
<view class="input-item">
<u-input class="input" v-model="address" color="#fff" fontSize="32rpx" border="none"
:placeholder="i18n.enterAddressTips">
</u-input>
</view>
<view class="address-title">{{ i18n.Remarks }}</view>
<view class="input-item">
<u-input class="input" v-model="remarks" color="#fff" fontSize="32rpx" border="none"
:placeholder="i18n.enterRemarksTips">
</u-input>
</view>
</view>
<u-button class="button" color="#00E8A2" throttleTime="500" :disabled="btnIsCanClick">{{ i18n.Confirm }}
</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/logo.png" size="64rpx" width="64rpx"></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>
</template>
<script>
import uniCopy from '@/utils/uni-copy'
import KeyValueRow from '../../components/KeyValueRow/KeyValueRow.vue';
export default {
components: { KeyValueRow },
name: "withdrawal",
data() {
return {
coin: '',
address: '',
address: '',
USDTRadioValue: '',
USDTPopupShow: false,
};
},
computed: {
i18n() {
return this.$t("withdrawal");
},
btnIsCanClick() { //
if (this.coin && this.address && this.address) {
return false; //
}else{
return true
}
}
},
onLoad() {
//
uni.$on('coinAddressChang', (data) => {
this.coinAddress = data.coinAddress
})
},
onUnload() {
//
uni.$off('coinAddressChang');
},
onShow() { },
methods: {
goto(id) {
// console.log(id);
let url = '';
switch (id) {
case 'withdrawalRecord':
url = '/pages/withdrawal/withdrawalRecord'
break;
case 'chooseAddress':
url = '/pages/withdrawal/chooseAddress?form=withdrawal'
break;
default:
break;
}
if (url) {
// console.log(url);
uni.navigateTo({
url,
});
}
},
USDTRadioChange(e) {
console.log(e);
},
copyAddress(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 {
.right {
position: absolute;
right: 32rpx;
font-size: 24rpx;
}
.body {
margin-top: 200rpx;
padding: 32rpx;
}
.choose-item {
overflow: hidden;
position: relative;
height: 124rpx;
line-height: 124rpx;
background: #211F32;
margin-bottom: 48rpx;
border-radius: 32rpx;
padding: 0 40rpx;
/deep/.u-form-item__body {
padding: 0;
}
.input {
width: 460rpx;
height: 124rpx;
display: inline-block;
}
.selectCoinBtn {
position: absolute;
width: 170rpx;
height: 54rpx;
top: 36rpx;
right: 32rpx;
line-height: 56rpx;
font-size: 36rpx;
padding: 0;
color: #fff;
&::after {
display: block;
position: absolute;
content: '';
background-image: url(../../static/me/ic_input_arrow_down.png);
background-repeat: no-repeat;
background-size: 32rpx;
width: 32rpx;
height: 32rpx;
top: 12rpx;
right: 10rpx;
}
}
.all {
position: absolute;
display: inline;
font-size: 20rpx;
color: #00E8A2;
top: 0rpx;
right: 30rpx;
}
}
.addressBody {
overflow: hidden;
background: #211F32;
border-radius: 32rpx;
padding: 32rpx;
.address-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;
}
.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: 64rpx;
height: 64rpx;
border-radius: 20rpx;
overflow: hidden;
display: inline-block;
box-sizing: border-box;
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;
font-weight: 600;
line-height: 112rpx;
color: #15141F !important;
}
}
}
}
</style>

138
pages/withdrawal/addOrEditBankCard.vue

@ -0,0 +1,138 @@
<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>
</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);
}
},
}
</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;
}
}
}
</style>

289
pages/withdrawal/chooseAddress.vue

@ -0,0 +1,289 @@
<template>
<view class="main">
<!-- nav -->
<navigation>{{ i18n.ChooseAddress }}<view slot="right" class="right" @click="editFlag = !editFlag;">{{
editFlag ? i18n.OK : i18n.Edit
}}
</view>
</navigation>
<view class="content">
<view class="message-item">
{{ i18n.message4 }}
</view>
<view class="message-item last">
{{ i18n.message5 }}
</view>
<view class="card" v-if="coinList.length > 0">
<view class="dataBody" v-for="(item, index) in 4" :key="index">
<view class="coinTitle">USDT</view>
<view class="addressItem" v-for="(addressItem, addressIndex) in 2" :key="addressIndex"
@click="itemClick(index, addressIndex)">
<view class="radio"
:class="{ select: (editCoinIndex === index && editCoinAddressIndex === addressIndex) }"
v-if="editFlag"></view>
<view class="addressInfo">
<view class="addressTitle">{{ i18n.myOmniAddress }}</view>
<view class="address">SDIHJSD9809U9ERF9IOU0980970</view>
<view class="time">2022/08/06 14:50:34</view>
</view>
</view>
</view>
</view>
<!-- 确认框 -->
<u-modal :show="modalShow" :confirmText="i18n.OK" :cancelText="i18n.Cancel" :showCancelButton="true"
:title="i18n.WarmTips" :content='i18n.WarmTipsText' @confirm="deleteAddress" @cancel="modalShow = false"
confirmColor="#00E8A2">
</u-modal>
<!-- 编辑按钮 -->
<view class="buttonBg">
<u-button class="button" :color="editFlag ? '#F4506A' : '#00E8A2'" throttleTime="500" @click="btnClick"
:disabled="btnIsCanClick">
{{ editFlag ? i18n.DeleteAddress : i18n.AddAddress }}
</u-button>
</view>
</view>
</view>
</template>
<script>
import KeyValueRow from '../../components/KeyValueRow/KeyValueRow.vue';
export default {
components: { KeyValueRow },
name: "chooseAddress",
data() {
return {
coinList: [{}],
coinAddressList: [{}],
editFlag: false, //
editCoinIndex: '',
editCoinAddressIndex: '',
coinAddress: 'SDIHJSD9809U9ERF9IOU0980970',
currentCoin: 'USDT',
modalShow: false,
};
},
computed: {
i18n() {
return this.$t("withdrawal");
},
btnIsCanClick() { //
if (this.editFlag) {
// console.log(`${this.editCoinIndex}` ? false : true);
return `${this.editCoinIndex}` ? false : true; // ,
} else {
return false; //
}
}
},
onLoad() {
},
onShow() { },
methods: {
itemClick(index, addressIndex) {
//
if (this.editFlag) {
// console.log(index, addressIndex);
if (this.editCoinIndex === index && this.editCoinAddressIndex === addressIndex) { //
this.editCoinIndex = '';
this.editCoinAddressIndex = '';
} else { //
this.editCoinIndex = index;
this.editCoinAddressIndex = addressIndex;
}
} else {
// vuex
uni.$emit('coinAddressChang', {
coinAddress: this.coinAddress,
});
uni.navigateBack()
}
},
btnClick() {
//
if (this.editFlag) {
this.modalShow = true
} else {
//
uni.navigateTo({
url : '/pages/withdrawal/addAddress'
});
}
},
deleteAddress() {
this.modalShow = false;
console.log('deleteAddress');
},
},
}
</script>
<style lang="scss" scoped>
.main {
.right {
width: 82rpx;
height: 56rpx;
line-height: 56rpx;
position: absolute;
right: 32rpx;
font-size: 24rpx;
background: rgba(246, 166, 9, 0.1);
border-radius: 8px;
color: #FFBC1F;
}
.content {
margin-top: 200rpx;
padding: 40rpx;
.message-item {
padding: 0 16rpx;
font-size: 24rpx;
color: #A1A0A8;
line-height: 36rpx;
&.last {
margin-bottom: 30rpx;
}
}
.card {
.dataBody {
margin-bottom: 32rpx;
padding: 32rpx;
box-sizing: border-box;
background: #211F32;
border-radius: 20rpx;
.coinTitle {
font-size: 24rpx;
line-height: 28rpx;
margin-bottom: 32rpx;
}
.addressItem {
height: 180rpx;
box-sizing: border-box;
padding: 32rpx 0;
border-top: 2rpx solid #323045;
display: flex;
.radio {
margin-top: 32rpx;
margin-right: 24rpx;
box-sizing: border-box;
width: 48rpx;
height: 48rpx;
background: #323045;
border: 3rpx solid #DCDBE0;
border-radius: 16rpx;
&.select {
background-image: url(../../static/withdrawal/Checkbox_pr.png);
background-repeat: no-repeat;
background-size: 48rpx;
border: none;
}
}
.addressInfo {
flex: 1;
.addressTitle {
position: relative;
font-size: 24rpx;
margin-bottom: 20rpx;
&::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: 0rpx;
right: 0rpx;
transform: rotate(270deg);
}
}
.address {
font-size: 24rpx;
line-height: 28rpx;
color: #A1A0A8;
}
.time {
font-size: 24rpx;
line-height: 28rpx;
color: #A1A0A8;
}
}
}
&:last-child {
margin-bottom: 160rpx;
}
}
}
/deep/.u-popup__content {
background: #323045;
.u-modal__title {
color: #fff;
}
.u-modal__content__text {
text-align: center;
}
}
.buttonBg {
position: fixed;
bottom: 0rpx;
background-color: #15141F;
.button {
width: 670rpx;
box-sizing: border-box;
height: 112rpx;
margin-bottom: 40rpx;
border-radius: 32rpx;
font-weight: 700;
font-size: 32rpx;
color: #15141F !important;
}
}
}
}
</style>

688
pages/withdrawal/withdrawal.vue

@ -0,0 +1,688 @@
<template>
<view class="main">
<!-- nav -->
<navigation>{{ i18n.Withdrawal }}<view slot="right" class="right" @click="goto('withdrawalRecord')">{{
i18n.Record
}}
</view>
</navigation>
<!-- headBtn -->
<view class="head">
<view class="headItem" @click="pageState = 'digitalCurrency'"
:class="{ select: pageState === 'digitalCurrency' }">
{{ i18n.DigitalCurrency }}
</view>
<view class="headItem" @click="pageState = 'onLine'" :class="{ select: pageState === 'onLine' }">
{{ i18n.OnLine }}
</view>
</view>
<view class="DCContent" v-if="pageState === 'digitalCurrency'">
<!-- coin选择框 -->
<view class="input-item">
<u-input class="input" v-model="coin" color="#fff" fontSize="32rpx" border="none"
:placeholder="i18n.PleaseChooseCoin">
</u-input>
<view class="selectCoinBtn" @click="USDTPopupShow = true">USDT
</view>
</view>
<view class="coin-item">
<!-- choose地址 -->
<view class="title">{{ i18n.WithdrawAddress }}
<view class="choose" @click="goto('chooseAddress')">{{ i18n.Choose }}</view>
</view>
<!-- 地址 -->
<view class="address" v-if="coinAddress">{{ coinAddress }}
</view>
<!-- 分割线 -->
<u-divider text="" lineColor="#B9C1D9"></u-divider>
<!-- 可用数量 -->
<Key-value-row :keyName="i18n.Quantity" :value="`${i18n.Available} ${AvailableValue} ${currentCoin}`"
rightColor="#A1A0A8"></Key-value-row>
<!-- 数量输入框 -->
<view class="input-item">
<u-input class="input" v-model="coin" color="#fff" fontSize="32rpx" border="none"
:placeholder="i18n.EnterTheQuantity">
</u-input>
<view class="all">{{ i18n.ALL }}</view>
</view>
<!-- 最低体现金额 -->
<Key-value-row :keyName="i18n.MinimumWithdrawAmount" size="24rpx"
:value="`${AvailableValue} ${currentCoin}`" rightColor="#A1A0A8"></Key-value-row>
<!-- 手续费 -->
<Key-value-row :keyName="i18n.HandlingFee" size="24rpx" :value="`${AvailableValue} ${currentCoin}`"
rightColor="#A1A0A8"></Key-value-row>
</view>
<view class="message-item first">
{{ i18n.message1 }}
</view>
<view class="message-item">
{{ i18n.message2 }}
</view>
<view class="message-item last">
{{ i18n.message3 }}
</view>
<u-button class="withdrawBtn" color="#00E8A2" throttleTime="500">{{ i18n.withdraw }}
</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/logo.png" size="64rpx" width="64rpx"></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">
{{ i18n.OK }}
</u-button>
</view>
</u-popup>
</view>
<view class="OLContent" v-if="pageState === 'onLine'">
<view class="bankCard" v-if="!ifNextStep">
<view class="header">
<view class="bankTitle">{{ i18n.BankCardWithdrawal }}</view>
<view class="BeneficiaryTitle">{{ i18n.Beneficiary }}</view>
</view>
<view class="addBankCardBtn" v-if="!hasBankCard" @click="goto('addBankCard')">{{ i18n.AddBankCard }}
</view>
<view class="bankCardInfo" v-if="hasBankCard">
<view class="username">ZHOU JIELUN</view>
<view class="BankCardCode">4349 9545 9893 9854 027</view>
<Key-value-row :keyName="'Bank of Melbourne'" size="24rpx" :value="'CODE98Y'" rightColor="#F2FE8D"
leftColor="#fff">
</Key-value-row>
</view>
</view>
<u-button class="editBankCardBtn" v-if="!ifNextStep && hasBankCard" @click="goto('editBankCard')"
color="#323045" throttleTime="500">{{ i18n.EditCard }}
</u-button>
<view class="nextStep" v-if="ifNextStep">
<view class="inputBody">
<view class="title">{{ i18n.WithdrawableAmount }}</view>
<view class="withdrawableAmount-item">
<view class="withdrawableAmount"> {{ withdrawableAmount }} </view>
</view>
<view class="title">{{ i18n.Amount }}</view>
<view class="input-item">
<u-input class="input" v-model="amount" color="#fff" fontSize="32rpx" border="none"
:placeholder="i18n.enterAmount">
</u-input>
</view>
<view class="title">{{ i18n.PaymentPassword }}</view>
<view class="input-item">
<u-input class="input" type="password" v-model="paymentPassword" color="#fff" fontSize="32rpx"
border="none" :placeholder="i18n.enterPaymentPassword">
</u-input>
</view>
</view>
</view>
<u-button class="button" color="#00E8A2" throttleTime="500" :disabled="btnIsCanClick" @click="btnClick">
{{ ifNextStep ? i18n.Withdrawal : i18n.NextStep }}
</u-button>
</view>
</view>
</template>
<script>
import uniCopy from '@/utils/uni-copy'
import KeyValueRow from '../../components/KeyValueRow/KeyValueRow.vue';
export default {
components: { KeyValueRow },
name: "withdrawal",
data() {
return {
pageState: 'digitalCurrency',
coinAddress: '',
AvailableValue: 3399,
currentCoin: 'USDT',
coin: '',
USDTPopupShow: false,
USDTRadioValue: '',
hasBankCard: true,
ifNextStep: false,
withdrawableAmount: '4680671.89',
amount: '',
paymentPassword: '',
};
},
computed: {
i18n() {
return this.$t("withdrawal");
},
btnIsCanClick() { //
if (this.hasBankCard && !this.ifNextStep) { // ,
return false;
} if (this.amount && this.paymentPassword && this.ifNextStep) { // ,
return false;
} else {
return true
}
}
},
onLoad() {
//
uni.$on('coinAddressChang', (data) => {
this.coinAddress = data.coinAddress
})
},
onUnload() {
//
uni.$off('coinAddressChang');
},
onShow() { },
methods: {
goto(id) {
// console.log(id);
let url = '';
switch (id) {
case 'withdrawalRecord':
url = '/pages/withdrawal/withdrawalRecord'
break;
case 'chooseAddress':
url = '/pages/withdrawal/chooseAddress?form=withdrawal'
break;
case 'addBankCard':
url = '/pages/withdrawal/addOrEditBankCard?mode=addBank'
break;
case 'editBankCard':
url = '/pages/withdrawal/addOrEditBankCard?mode=editBank'
break;
default:
break;
}
if (url) {
// console.log(url);
uni.navigateTo({
url,
});
}
},
USDTRadioChange(e) {
console.log(e);
},
copyAddress(value = "") {
console.log(value)
uniCopy({
content: value,
success: (res) => {
uni.showToast({
title: "复制成功",
duration: 3000,
})
},
error: (e) => {
uni.showToast({
title: e,
icon: 'none',
duration: 2000,
})
}
})
},
btnClick() {
if (!this.ifNextStep) { //
this.ifNextStep = true
}else{ //
}
}
},
}
</script>
<style lang="scss" scoped>
.main {
.right {
position: absolute;
right: 32rpx;
font-size: 24rpx;
}
.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;
}
}
}
.DCContent {
padding: 0 32rpx;
.input-item {
overflow: hidden;
position: relative;
height: 124rpx;
line-height: 124rpx;
background: #211F32;
margin-bottom: 48rpx;
border-radius: 32rpx;
padding: 0 40rpx;
/deep/.u-form-item__body {
padding: 0;
}
.input {
width: 460rpx;
height: 124rpx;
display: inline-block;
}
.selectCoinBtn {
position: absolute;
width: 170rpx;
height: 54rpx;
top: 36rpx;
right: 32rpx;
line-height: 56rpx;
font-size: 36rpx;
padding: 0;
color: #fff;
&::after {
display: block;
position: absolute;
content: '';
background-image: url(../../static/me/ic_input_arrow_down.png);
background-repeat: no-repeat;
background-size: 32rpx;
width: 32rpx;
height: 32rpx;
top: 12rpx;
right: 10rpx;
}
}
.all {
position: absolute;
display: inline;
font-size: 20rpx;
color: #00E8A2;
top: 0rpx;
right: 30rpx;
}
}
.coin-item {
background: #211F32;
border-radius: 10px;
overflow: hidden;
padding: 30rpx 40rpx;
.title {
position: relative;
font-size: 32rpx;
color: #A1A0A8;
margin-bottom: 32rpx;
.choose {
position: absolute;
top: 0;
right: 0;
font-size: 36rpx;
color: #fff;
padding-right: 60rpx;
&::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;
transform: rotate(270deg);
}
}
}
.address {
position: relative;
background: #323045;
border-radius: 16px;
color: #00E8A2;
font-size: 28rpx;
padding: 8rpx 20rpx 8rpx 68rpx;
// ...
overflow: hidden;
text-overflow: ellipsis;
display: -webkit-box; //
word-wrap: break-word;
white-space: normal !important;
-webkit-line-clamp: 1; //
-webkit-box-orient: vertical;
&::before {
display: block;
position: absolute;
content: '';
top: 20rpx;
left: 30rpx;
width: 16rpx;
height: 16rpx;
border-radius: 100%;
background: #00E8A2;
box-shadow: 0 8rpx 16rpx 0 rgba(0, 0, 0, .2);
}
}
.input-item {
margin-top: 36rpx;
background: #323045;
.input {
width: 486rpx;
}
}
}
.message-item {
padding: 0 16rpx;
font-size: 24rpx;
color: #A1A0A8;
line-height: 48rpx;
&.first {
margin-top: 30rpx;
}
&.last {
margin-bottom: 30rpx;
}
}
.withdrawBtn {
margin: 100rpx 0;
border-radius: 32rpx;
height: 112rpx;
line-height: 112rpx;
font-weight: 600;
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: 64rpx;
height: 64rpx;
border-radius: 20rpx;
overflow: hidden;
display: inline-block;
box-sizing: border-box;
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;
font-weight: 600;
line-height: 112rpx;
color: #15141F !important;
}
}
}
}
.OLContent {
.bankCard {
overflow: hidden;
box-sizing: border-box;
height: 360rpx;
margin: 0 64rpx;
border-radius: 32rpx;
background-image: url(../../static/withdrawal/bg_card.png);
background-repeat: no-repeat;
background-size: 622rpx 360rpx;
.header {
box-sizing: border-box;
height: 164rpx;
margin: 0 32rpx 0;
padding-top: 32rpx;
.bankTitle {
line-height: 60rpx;
font-size: 44rpx;
font-weight: 700;
}
.BeneficiaryTitle {
font-size: 24rpx;
line-height: 50rpx;
}
}
.addBankCardBtn {
box-sizing: border-box;
position: relative;
width: 558rpx;
height: 116rpx;
line-height: 116rpx;
background: #211F32;
border-radius: 32rpx;
margin: 34rpx 32rpx;
padding-left: 40rpx;
opacity: 1;
&::after {
display: block;
position: absolute;
content: '';
background-image: url(../../static/withdrawal/add-circle.png);
background-repeat: no-repeat;
background-size: 48rpx;
width: 48rpx;
height: 48rpx;
top: 34rpx;
right: 52rpx;
}
&:active {
opacity: 0.6;
}
}
.bankCardInfo {
border-top: 2rpx solid #A1A0A8;
padding: 0 32rpx;
.username {
margin-top: 24rpx;
font-size: 24rpx;
}
.BankCardCode {
margin-top: 20rpx;
margin-bottom: 20rpx;
font-size: 24rpx;
color: #00E8A2;
}
}
}
.editBankCardBtn {
width: 622rpx;
height: 116rpx;
margin: 32rpx 64rpx;
border-radius: 16px;
font-size: 32rpx;
}
.nextStep {
.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;
}
}
.withdrawableAmount-item {
height: 112rpx;
background: #323045;
border-radius: 32rpx;
padding-left: 40rpx;
margin-bottom: 20rpx;
.withdrawableAmount {
color: #00E8A2;
height: 112rpx;
line-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;
margin: 0 32rpx;
}
}
}
</style>

172
pages/withdrawal/withdrawalRecord.vue

@ -0,0 +1,172 @@
<template>
<view class="main">
<!-- nav -->
<navigation>{{ i18n.WithdrawalRecord }}</navigation>
<!-- headBtn -->
<view class="head">
<view class="headItem" @click="pageState = 'digitalCurrency'"
:class="{ select: pageState === 'digitalCurrency' }">
{{ i18n.DigitalCurrency }}
</view>
<view class="headItem" @click="pageState = 'onLine'" :class="{ select: pageState === 'onLine' }">
{{ i18n.OnLine }}
</view>
</view>
<view class="cardList">
<view class="card" v-for="(item, index) in 4" :key="index">
<!-- 卡片条件渲染 -->
<!-- balance -->
<card-header v-if="pageState === 'digitalCurrency'" iconName="../../static/withdrawal/money-send.png"
:title="'904.29483230ACTA'" rightName="Succeed" fontColor="#00E8A2">
</card-header>
<view class="dataBody" v-if="pageState === 'digitalCurrency'">
<view style="padding:20rpx 32rpx;">
<Key-value-row :keyName="i18n.OrderID" :value="'293829773920223873676'"></Key-value-row>
<Key-value-row :keyName="i18n.Fees" :value="'10.0922'"></Key-value-row>
<Key-value-row :keyName="i18n.Time" :value="'2022/08/06 14:50:34'"></Key-value-row>
</view>
<view style="border-top: 2rpx solid #323045;padding:0rpx 32rpx; margin-bottom: 20rpx;">
<show-more class="digitalShowMore">
<Key-value-row :keyName="i18n.Address" :value="'dhiukyfdhi8797979870800'"></Key-value-row>
<Key-value-row :keyName="i18n.Hash" :value="'dhiukyfdhi8797979870800'"></Key-value-row>
<view class="text">Postscript : ontact customer service on the top-left corner for identity
verific
</view>
</show-more>
</view>
</view>
<!-- contarct -->
<card-header v-if="pageState === 'onLine'" iconName="../../static/withdrawal/money-send.png"
:title="'904.29483230ACTA'" rightName="Succeed" fontColor="#00E8A2">
</card-header>
<view class="dataBody" v-if="pageState === 'onLine'">
<view style="padding:20rpx 32rpx;">
<Key-value-row :keyName="i18n.OrderID" :value="'293829773920223873676'"></Key-value-row>
<Key-value-row :keyName="i18n.Fees" :value="'10.0922'"></Key-value-row>
<Key-value-row :keyName="i18n.Time" :value="'2022/08/06 14:50:34'"></Key-value-row>
</view>
<show-more class="onLineShowMore" style="border-top: 2rpx solid #323045;margin-bottom: 20rpx;">
<view style="padding:20rpx 32rpx;">
<Key-value-row :keyName="i18n.USDTRate" :value="'19298'"></Key-value-row>
<Key-value-row :keyName="i18n.USDT" :value="'298237'"></Key-value-row>
</view>
<view style="border-top: 2rpx solid #323045;padding:20rpx 32rpx;">
<Key-value-row :keyName="i18n.CardNo" :value="'4349 9545 9893 9854 027'">
</Key-value-row>
<Key-value-row :keyName="i18n.Bank" :value="'Bank of Melbourne'"></Key-value-row>
<Key-value-row :keyName="i18n.Payee" :value="'Zhou jielun'"></Key-value-row>
<view class="text">Postscript ontact customer service on the top-left corner for identity
verific
</view>
</view>
</show-more>
</view>
</view>
</view>
</view>
</template>
<script>
import KeyValueRow from '../../components/KeyValueRow/KeyValueRow.vue';
import CardHeader from '../../components/cardHeader/cardHeader.vue';
import ShowMore from '../../components/showMore/showMore.vue';
export default {
components: { KeyValueRow, CardHeader, ShowMore },
name: "withdrawalRecord",
data() {
return {
pageState: 'digitalCurrency',
};
},
computed: {
i18n() {
return this.$t("withdrawal");
},
},
onLoad() {
},
onShow() { },
methods: {
change(e) {
console.log(e);
}
},
}
</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;
.onLineShowMore {
/deep/.showMoreTool {
margin: 0 32rpx;
}
}
.text {
margin-top: 20rpx;
padding: 10rpx 16rpx;
background: #323045;
border-radius: 8rpx;
font-size: 24rpx;
color: #A1A0A8;
}
}
}
}
}
</style>

BIN
static/charity/ic_ma_arrow_down.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 257 B

After

Width:  |  Height:  |  Size: 345 B

97412
static/echarts.js

File diff suppressed because it is too large

BIN
static/maskets/logo.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

BIN
static/mine/Line.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

BIN
static/mine/bg_mine.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 96 KiB

BIN
static/mine/coinLogo.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.5 KiB

BIN
static/mine/img_data.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 73 KiB

BIN
static/mine/img_mine01.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

BIN
static/mine/img_mine02.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

BIN
static/mine/img_mine03.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

BIN
static/mine/img_mine04.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

BIN
static/recharge/ic_copy.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 753 B

BIN
static/recharge/img_successed.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

BIN
static/recharge/money-recive.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

BIN
static/withdrawal/Checkbox_pr.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

BIN
static/withdrawal/add-circle.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

BIN
static/withdrawal/bg_card.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

BIN
static/withdrawal/money-send.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

219
utils/language/en_US.js

@ -71,6 +71,35 @@ export default {
TrandingPair: 'Tranding Pair',
LatestPrice: 'Latest Price',
RiseAndfall: '24H Rise and fall',
lONG: 'lONG',
SHORT: 'SHORT',
MarketPrice: 'Market price',
MarketOptimalPrice: 'Market optimal price',
leverage: 'leverage',
Usable: 'Usable',
Total: 'Total',
Bond: 'Bond',
Fee: 'Fee',
buyLong: "Buy /Long ",
sellSHORT: 'Sell /Short ',
UnitPrice: 'Unit Price',
Number: 'Number',
CurrentEntrust: 'Current Entrust',
Position: 'Position',
Closed: 'Closed',
Revoked: 'Revoked',
close: 'Close',
AmountLeverage: 'Amount * Leverage',
CurrentPrice: 'Current price',
status: 'status',
StyPrice: 'Sty price',
StsPrice: 'Sts price',
ExpectProfit: 'Expect profit',
do: 'do',
StopLimit: 'Stop/Limit',
CloseTime: 'Close Time',
},
// 捐赠页面相关
@ -85,9 +114,145 @@ export default {
WithdrawalPassword: 'Withdrawal Password',
},
// Recharge
recharge:{
Recharge:'Recharge'
// recharge
recharge: {
Recharge: 'Recharge',
Record: 'Record',
CoinRecharge: 'Coin Recharge',
CashRecharge: 'Cash Recharge ',
PleaseChooseCoin: 'Please choose coin',
CoinDepositAddress: 'Coin deposit address',
CopyAddress: 'Copy address',
ScanQR: 'Scan the QR code above to get the deposit address',
message: `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 accountThe 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`,
selectAmount: 'Please select the amount to deposit',
EnterNumber: 'Enter 100-1000000',
RechargeMethod: 'Recharge method',
Submit: 'Submit',
RechargeRecord: 'Recharge Record',
OrderID: 'OrderID',
Fees: 'Fees',
Time: 'Time',
Address: 'Address',
Hash: 'Hash',
ShowMore: 'Show more',
Pickup: 'Pick up',
USDTRate: 'USDT Rate',
USDT: 'USDT',
},
//mine
mine: {
MinePool: 'Mine pool',
OpenMine: 'Open mine',
MineDetails: 'Mine details',
Record: 'Record',
YourBTC: 'Your BTC',
LockBTC: 'Lock BTC',
dayproduce: '1 day produce',
MinLockTime: 'Min lock time',
days: 'days',
invuteCode: 'Please type your invute code',
lockBTC: 'Please type you want to lock BTC quantity ',
ALL: 'ALL',
LockBTCBtn: 'Lock BTC and begin prouce',
MineRecord: 'Mine Record',
NoData: 'No Data',
BaseCoin: 'Base Coin',
ProfitCoin: 'Profit Coin',
DayRebate: 'Day Rebate',
RebateDay: 'Rebate Day / Lock Day',
RebateAmount: 'Rebate Amount / Amount',
AddTime: 'Add Time',
ReleaseTime: 'Release Time',
},
// withdrawal
withdrawal: {
Withdrawal: 'Withdrawal',
Record: 'Record',
DigitalCurrency: 'Digital currency',
OnLine: 'On-line',
PleaseChooseCoin: 'Please choose coin',
WithdrawAddress: 'Withdraw address',
Choose: 'Choose',
Quantity: 'Quantity',
Available: 'Available',
EnterTheQuantity: 'Please enter the quantity',
ALL: 'ALL',
MinimumWithdrawAmount: 'Minimum withdraw amount:',
HandlingFee: 'Handling Fee:',
message1: 'Please double check and enter the correct wallet address for withdraw。',
message2: 'Sending non-corresponding digital currency to the wallet address will cause permanent loss。',
message3: 'Withdraw fees will be deducted from the amount of withdrawals。',
withdraw: 'withdraw',
ChooseAddress: 'Choose address',
Edit: 'Edit',
OK: 'OK',
message4: '·The address book can be used to manage your frequently used addresses. There is no need to perform multiple verifications when initiating withdrawals from addresses in the address book。',
message5: '·APIAutomatic withdrawal is supported. When using API to withdraw, only addresses in the web address book are allowed to initiate withdrawals。',
myOmniAddress: 'my omni usdt address',
AddAddress: 'Add address',
DeleteAddress: 'Delete address',
WarmTips: 'Warm Tips',
WarmTipsText: 'Whether to delete the currently selected address',
Cancel: 'Cancel',
Address: 'Address',
enterAddressTips: 'Please enter or paste the address',
Remarks: 'Remarks',
enterRemarksTips: 'Please fill in the remarks',
Confirm: 'Confirm',
WithdrawalRecord: 'Withdrawal record',
DigitalCurrency: 'Digital currency',
OnLine: 'On-line',
OrderID: 'OrderID',
Fees: 'Fees',
Time: 'Time',
Hash: 'Hash',
ShowMore: 'Show more',
Pickup: 'Pick up',
USDTRate: 'USDT Rate',
USDT: 'USDT',
CardNo: 'Card No.',
Bank: 'Bank',
Payee: 'Payee',
BankCardWithdrawal: 'Bank card withdrawal',
Beneficiary: 'Beneficiary Account Number/IBAN',
AddBankCard: 'Add bank card',
NextStep: 'Next Step',
EditCard: 'Edit card',
WithdrawableAmount: 'Withdrawable Amount',
Amount: 'Amount',
PaymentPassword: 'Payment password',
enterAmount: 'Please enter The Amount',
enterPaymentPassword: 'Please enter your PaymentPassword',
EditBankInformation: 'Edit bank information',
AddBankInformation: 'Add bank information',
FirstName: 'First Name',
enterName: 'Please enter your name',
Account: 'Account',
enterAccount: 'Please enter your Account',
BankName: 'Bank Name',
enterBankName: 'Please enter bank name',
BankCode: 'Bank Code',
enterBankCode: 'Please enter Bank Code',
},
// 申购页面相关 subscription
@ -142,7 +307,7 @@ export default {
WalletHistory: 'Wallet history',
Notification: 'Notification',
DonateRecord: 'Donate record',
Language:'Language',
Language: 'Language',
AboutUs: 'About us',
LogOut: 'Log out',
@ -152,38 +317,36 @@ export default {
MyReferralID: 'My Referral ID:',
CopyID: 'Copy ID',
ChangeLoginPassword:'Change Login Password',
ChangeWithdrawalPassword:'Change Withdrawal Password',
BankCard:'Bank Card',
WithdrawalAddress:'Withdrawal Address',
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',
PleaseEnterTheOldPassword: 'Please Enter the old password',
CreateNewLoginPassword: 'Create new Login password',
Confirm: 'Confirm',
ModifyWithdrawalPassword: 'Modify Withdrawal Password',
CreateNewPassword: 'Create new password',
Fresh:'Fresh',
Fresh: 'Fresh',
Release:'Release',
Release: 'Release',
NotificationDetails:'Notification Details',
NotificationDetails: 'Notification Details',
DonateRecord:'Donate record',
Time:'Time',
DonateRecord: 'Donate record',
Time: 'Time',
SelectCurrency:'Select currency',
SelectCurrency: 'Select currency',
PleaseChooseCoin: 'Please choose coin',
From:'From',
OptionAccount:'Option account',
To:'To',
TradingAccount:'Trading account',
TransferNumber:'Transfer number',
From: 'From',
OptionAccount: 'Option account',
To: 'To',
TradingAccount: 'Trading account',
TransferNumber: 'Transfer number',
PleaseEnterNumber: 'Please enter number',
Usable:'Usable :',
Usable: 'Usable :',
ALL: 'ALL',
}
}

Loading…
Cancel
Save