You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

389 lines
14 KiB

<template>
<v-page>
<view class="layout-main">
<!-- 申购数据和申购周期 -->
<v-header class="nav-head" :border="false" :title="$t('purchase.a5')">
<template #right>
<v-link :to="'/pages/purchase/bill?issue_price='+detail.issue_price">
<van-icon class="fn-20 m-t-xs" name="todo-list-o"/>
</v-link>
</template>
</v-header>
<view class="bg-form-panel-4 p-md fn-center d-flex">
<view class="w-6/12 d-flex align-center">
<!--<van-circle-->
<!-- size="130"-->
<!-- class="w-max"-->
<!-- stroke-width="6"-->
<!-- :value="detail.status*25"-->
<!-- :color="{ '0%': '#27CAE0', '100%': '#4653EF' }"-->
<!--&gt;-->
<!-- <view class="color-light fn-center fn-10">-->
<!-- <view class="label m-b-xs color-default">{{ $t("purchase.a0") }}</view>-->
<!-- <view class="fn-11">1 {{ detail.coin_name }}</view>-->
<!-- <view class="fn-11">-->
<!-- <text class="fn-16">-->
<!-- &lt;!&ndash; {{ detail.issue_price }} &ndash;&gt;-->
<!-- 0.035-->
<!-- </text>-->
<!-- USDT-->
<!-- </view>-->
<!-- <view class="fn-center fn-15 color-success">-->
<!-- {{ detail.coin_name }}-->
<!-- </view>-->
<!-- </view>-->
<!--</van-circle>-->
<view class="m-b-xs">
<view class="label fn-10">{{ $t("purchase.a0") }}</view>
<view class="color-light">1 {{ detail.coin_name }}<!--{{ detail.issue_price }}-->0.035USDT</view>
<view class="label fn-10">{{ $t("purchase.a1") }}</view>
<view class="color-light">{{ detail.subscribe_currency }}</view>
</view>
</view>
<view>
<vue class="m-b-xs"><img :src="detail.icon"></vue>
<!--<view class="m-b-xs">-->
<!-- <view class="label fn-10">{{ $t("purchase.a2") }}</view>-->
<!-- <view class="color-light">{{-->
<!-- detail.expected_time_online-->
<!-- }}-->
<!-- </view>-->
<!--</view>-->
<!--<view class="m-b-xs">-->
<!-- <view class="label fn-10">{{ $t("purchase.a3") }}11</view>-->
<!-- <view class="color-light">{{-->
<!-- detail.start_subscription_time-->
<!-- }}-->
<!-- </view>-->
<!--</view>-->
<!--<view class="m-b-xs">-->
<!-- <view class="label fn-10">{{ $t("purchase.a4") }}</view>-->
<!-- <view class="color-light">{{-->
<!-- detail.end_subscription_time-->
<!-- }}-->
<!-- </view>-->
<!--</view>-->
</view>
</view>
<!-- 申购 -->
<view class="bg-panel-3 p-md box-shadow">
<view class="title p-b-xs border-b">{{ $t("purchase.a5") }}</view>
<view class="m-y-md">
<view class="label">{{ $t("purchase.a1") }}</view>
<v-picker
:list="coinList"
v-model="coin"
range-label="coin_name"
range-value="coin_name"
class="border-b p-y-xs color-light"
>
<v-input
disabled
:value="activeCoin.coin_name"
:placeholder="$t('purchase.a6')"
>
<template #right>
<i class="iconfont">&#xe6e9;</i>
</template>
</v-input>
</v-picker>
<view class="tips m-t-xs fn-sm d-flex justify-between color-sell">
<view>
{{ num || 1 }} {{ activeCoin.coin_name }} ≈
<!-- {{ omitTo(activeCoin.proportion_amount, 4) }} -->
{{ omitTo((1 / detail.issue_price * activeCoin.CurrentPrice * num), 4) }}
{{ detail.coin_name }}
</view>
<!--<view class="color-sell">-->
<!-- {{ num || 1 }} {{ activeCoin.coin_name }} ≈-->
<!-- &lt;!&ndash; {{ total }} &ndash;&gt;-->
<!-- {{ omitTo(((activeCoin.CurrentPrice / detail.issue_price) * num), 4)}}-->
<!-- {{ detail.coin_name }}-->
<!--</view>-->
</view>
</view>
<view class="m-y-md">
<view class="label">{{ $t("purchase.a7") }}</view>
<view class="border-b p-y-xs color-light">
<v-input type="number" v-model="num" :placeholder="$t('purchase.a8')">
<template #right>
<view
class="color-success"
@click="num = activeCoin.usable_balance * 1 || 0"
>{{ $t("purchase.a9") }}
</view
>
</template>
</v-input>
</view>
</view>
<v-button
block
class="w-max rounded-lg"
type="green"
ref="btn"
@click="ifSubscribeNow"
>{{ $t("purchase.b0") }}
</v-button
>
<br>
</view>
<!-- 周期 -->
<view class="bg-panel-3 p-md box-shadow">
<view class="title p-b-xs border-b">{{ $t("purchase.b1") }}</view>
<van-steps
:active="detail.status - 1"
:steps="[
{
text: $t('purchase.b2'),
desc: '',
},
{
text: $t('purchase.b3'),
desc: detail.start_subscription_time,
},
{
text: $t('purchase.b4'),
desc: detail.end_subscription_time,
},
{
text: $t('purchase.b5'),
desc: detail.announce_time,
},
]"
active-color="#60c08c"
align-center
direction="vertical"
>
</van-steps>
</view>
<!-- 项目详情 -->
<view class="bg-panel-3 p-md box-shadow">
<view class="title p-b-xs border-b">{{ $t("purchase.b6") }}</view>
<view class="m-t-md edit-content ">{{detail.project_details}}</view>
</view>
<van-popup
:show="subscription"
@close="subscription = false"
closeable
close-on-popstate
custom-style="height:auto;width:70%"
>
<view class="pop">
<input class="border-b" type="text" v-model="subscriptionCode" :placeholder="$t('common.a0')"/>
<view class="m-t-lg d-flex justify-between">
<v-button
block
round
class="w-4/12 m-t-md"
type="default"
ref="btn"
@click="subscription = false"
>{{ $t("common.cancel") }}
</v-button
>
<v-button
block
round
class="w-4/12 m-t-md"
type="primary"
ref="btn"
@click="changePurchaseCode"
>{{ $t("common.confirm") }}
</v-button
>
</view>
</view>
</van-popup>
</view>
</v-page>
</template>
<script>
import Subscride from "@/api/subscride";
import date from "@/utils/class/date";
import math from "@/utils/class/math";
import {mapGetters} from 'vuex'
export default {
data() {
return {
coinList: [],
detail: {},
num: 1,
coin: "",
subscription: false,
subscriptionCode: "",
activityStep: 0
}
},
computed: {
total() {
if (!this.activeCoin.proportion_amount) return 0;
return math.multiple(
this.num || 0,
this.activeCoin.proportion_amount * 1,
2
);
},
activeCoin() {
if (!this.coin) return {};
return this.coinList.find((item) => item.coin_name == this.coin);
},
...mapGetters(['themeStyle'])
},
methods: {
omitTo(num, idx) {
if (!num) return 0;
return math.omitTo(num, idx);
},
parseTime(num) {
if (!num) return;
return date.parseTime(num);
},
subscribeTokenList() {
Subscride.subscribeTokenList().then((res) => {
this.coinList = res.data;
this.coin = this.coinList[0].coin_name;
});
},
getInfo() {
Subscride.subscribe().then((res) => {
this.detail = res.data;
});
},
// 选择币种
selectCoin() {
let arr = this.coinList.map((item) => {
return {
label: item.coin_name,
value: item.coin_name,
};
});
this.$picker(arr, {value: this.coin}).then((res) => {
this.coin = res;
});
},
// 提交询问
ifSubscribeNow() {
this.$dialog
.confirm({
title: this.$t("common.tips"),
message: `${this.$t("purchase.b7")}${
this.activeCoin.coin_name
}${this.$t("purchase.b8")}`,
cancelButtonText: this.$t("common.cancel"),
confirmButtonText: this.$t("common.confirm")
})
.then(() => {
this.subscribeNow();
})
.catch(() => {
});
},
//认购码
changePurchaseCode() {
let data = {
purchase_code: this.subscriptionCode
};
Subscride.changePurchaseCode(data, {btn: this.$refs.btn})
.then((res) => {
if (res.code == 4001) {
this.subscription = true
} else {
this.subscription = false
this.subscribeNow()
}
})
.catch(() => {
});
},
// 申购
subscribeNow() {
let data = {
amount: this.num,
coin_name: this.activeCoin.coin_name,
};
Subscride.subscribeNow(data, {btn: this.$refs.btn})
.then((res) => {
if (res.code == 4001) {
this.$toast(res.message)
this.subscription = true
return
}
if (res) {
this.$toast.success(this.$t("purchase.b9"));
this.num = "";
}
})
.catch(() => {
});
},
},
created() {
this.subscribeTokenList();
this.getInfo();
},
};
</script>
<style lang="scss" scoped>
::v-deep uni-canvas {
width: 130px;
height: 130px;
}
::v-deep .van-step--finish {
color: $light;
}
::v-deep .van-step--vertical:first-child::before {
background: transparent;
}
::v-deep .van-steps {
background-color: var(--panel-4, #484859);
}
::v-deep .van-step--vertical {
.van-step__circle-container {
background-color: transparent;
.van-icon-checked {
width: 14px;
height: 14px;
background: rgba($green, 0.7);
font-size: 0;
display: block;
border-radius: 20px;
&::after {
content: '';
display: block;
font-size: 0;
width: 8px;
height: 8px;
position: absolute;
left: 50%;
top: 50%;
transform: translate(-50%, -50%);
background: $green;
border-radius: 20px;
}
}
}
}
// .color-light {
// color: $text-color;
// }
.layout-main {
color: $text-color;
}
.pop {
padding: 50px 20px 30px;
}
</style>