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.
377 lines
12 KiB
377 lines
12 KiB
<template>
|
|
<v-page class="income-page color-plain">
|
|
<!-- <v-header class="nav-tab border-b-0 color-black" :title="''"></v-header> -->
|
|
<swiper class="h-max w-max" :indicator-dots="false" indicator-color="white">
|
|
<template v-for="(item,indes) in imgList">
|
|
<swiper-item
|
|
class="swipe-item color-plain overflow-scroll"
|
|
:style="`background-image:url(${item.bg_img})`"
|
|
:key="item.peri_img"
|
|
v-if="numMap.num>0?item.type==1:item.type==2"
|
|
>
|
|
<view
|
|
class="padding-nav"
|
|
@touchstart="touchstart"
|
|
@touchmove="touchmove"
|
|
@touchend="touchend"
|
|
>
|
|
<view class="fn-right p-t-md p-x-25 h-20"></view>
|
|
<img class="bg-img" :src="item.peri_img" alt="" />
|
|
<view class="p-x-25 m-t-lg" :style="{height:20+'%'}" style="position: absolute; z-index: 12; bottom: 35%; width: 100%; box-sizing: border-box;">
|
|
<!-- <img class="w-max" :src="item.text_img" alt="" /> -->
|
|
<view class="imgtitle fn-center p-x-md" >
|
|
<p :class="$store.state.lang=='zh-CN'?'fn-28':'fn-24 '">{{item.title}}</p>
|
|
<!-- <p class="" v-for="it,i in imgTitleTip[indes]" :key="i">{{it}}</p> -->
|
|
</view>
|
|
</view>
|
|
<view class="p-x-50" :style="{height:40+'%'}" style="position: absolute; z-index: 12;bottom:2%;width: 100%;box-sizing: border-box">
|
|
<!-- <view class="p-t-lg fn-20 d-flex ">
|
|
<view>
|
|
{{ $t("contract.h0") }}
|
|
</view>
|
|
<view class="w-100"></view>
|
|
<view class="d-inline-block fn-13 lever m-l-lg">
|
|
<view class="lever-content">
|
|
{{query.label|| (query.side == 1 ? $t("contract.g0") : $t("contract.g1"))
|
|
}}{{ query.lever_rate }}X
|
|
</view>
|
|
</view>
|
|
</view> -->
|
|
<!-- <view class="price-box fn-center">
|
|
<text class="price fn-bold d-block" :class="numMap.num>0?'color-buy':'color-sell'">{{ numMap.type }}{{ numMap.num }}{{ numMap.dec }}%</text>
|
|
<text class="fn-14 d-block">({{ $t("contract.h0")}})</text>
|
|
</view>
|
|
<view class="data-item m-y-sm p-t-md">
|
|
<view class="label fn-12">{{ $t("exchange.a2") }}</view>
|
|
<view class="num fn-22 blue">{{ query.pair_name }}</view>
|
|
</view>
|
|
<view class="data-item m-y-sm p-t-md">
|
|
<view class="label fn-12">{{ $t("contract.k0") }}</view>
|
|
<view class="num fn-22 blue">{{ data.price1 * 1 }}</view>
|
|
</view>
|
|
<view class="data-item m-y-sm p-t-md" v-if="query.newPrice">
|
|
<view class="label fn-12">{{ $t("contract.k1") }}</view>
|
|
<view class="num fn-22 blue">{{ data.price2 * 1 }}</view>
|
|
</view>
|
|
<view class="data-item m-y-sm p-t-md" v-else>
|
|
<view class="label fn-12">{{ $t("contract.j7") }}</view>
|
|
<view class="num fn-22 blue">{{ data.price2 }}</view>
|
|
</view> -->
|
|
<view class="price-box fn-center d-flex justify-center">
|
|
<text class="d-block color-black">{{ $t("contract.h0")}}</text>
|
|
<text class="m-l-xs p-x-xs rounded-xs" :class="query.side==1?'bg-buy':'bg-sell'">
|
|
<span v-if="query.side==1">{{ $t("contract.c0")}}</span>
|
|
<span v-else>{{ $t("contract.c2")}}</span>
|
|
</text>
|
|
</view>
|
|
<view class="price-box fn-center">
|
|
<text class="price fn-bold d-block" :class="numMap.num>0?'color-buy':'color-sell'">{{ numMap.type }}{{ numMap.num }}{{ numMap.dec }}%</text>
|
|
<!-- <view class="color-gray">
|
|
({{ $t("contract.h0")}})
|
|
</view> -->
|
|
</view>
|
|
<view class="shuju d-flex color-black">
|
|
<view class="left w-33 ">
|
|
<text class="d-block fn-left fn-12 line-height-2 color-gray">{{ query.pair_name }}</text>
|
|
<text class="d-block fn-left fn-16">{{query.label|| (query.side == 1 ? $t("contract.g0") : $t("contract.g1"))
|
|
}}</text>
|
|
</view>
|
|
<view class="center w-33">
|
|
<text class="d-block fn-center fn-12 line-height-2 color-gray">{{ $t("contract.k0") }}</text>
|
|
<text class="d-block fn-center fn-16">
|
|
<span v-if="data.price1>100">{{ omitTo(data.price1* 1 ,2) }}</span>
|
|
<span v-if="data.price1>1&&data.price1<100">{{ omitTo(data.price1* 1 ,4) }}</span>
|
|
<span v-if="data.price1<1">{{ omitTo(data.price1* 1 ,6) }}</span>
|
|
</text>
|
|
</view>
|
|
<view class="right w-33 ">
|
|
<text class="d-block fn-right fn-12 line-height-2 color-gray">{{ $t("contract.k1") }}</text>
|
|
<text class="d-block fn-right fn-16 ">
|
|
<span v-if="data.price2>100">{{ omitTo(data.price2* 1 ,2) }}</span>
|
|
<span v-if="data.price2>1&&data.price2<100">{{ omitTo(data.price2* 1 ,4) }}</span>
|
|
<span v-if="data.price2<1">{{ omitTo(data.price2* 1 ,6) }}</span>
|
|
</text>
|
|
</view>
|
|
</view>
|
|
<view class="code-body align-center d-flex justify-between">
|
|
<view class="w-f d-flex align-end">
|
|
<img class="img rounded-3 w-60 w-60" src="static/img/logo.png"/>
|
|
<view class="m-l-md">
|
|
<view class="fn-bold color-black fn-16">
|
|
Coins
|
|
</view>
|
|
<view class="fn-6 color-black">
|
|
全球合约领跑者
|
|
</view>
|
|
</view>
|
|
</view>
|
|
<view class="">
|
|
<v-qr
|
|
:text="detail.invite_url"
|
|
class="share-code w-65 h-65"
|
|
></v-qr>
|
|
</view>
|
|
</view>
|
|
<!-- <view class="fn-center">{{ $t("contract.k6") }}</view> -->
|
|
</view>
|
|
</view>
|
|
</swiper-item>
|
|
</template>
|
|
</swiper>
|
|
</v-page>
|
|
</template>
|
|
|
|
<script>
|
|
import Profile from "@/api/profile";
|
|
import Contract from "@/api/contract";
|
|
import math from "@/utils/class/math";
|
|
import { mapState } from "vuex";
|
|
export default {
|
|
name: "index",
|
|
data() {
|
|
return {
|
|
detail: {},
|
|
query: {},
|
|
data: {},
|
|
dTime: null,
|
|
imgList: [],
|
|
imgTitleTip: [],
|
|
windowHeight:''
|
|
};
|
|
},
|
|
mounted() {
|
|
uni.getSystemInfo({
|
|
success: function (res) {
|
|
this.windowHeight=60
|
|
console.log(this.windowHeight)
|
|
}
|
|
});
|
|
},
|
|
created() {
|
|
this.generalizeInfo();
|
|
if (this.query.entrust_id) {
|
|
this.entrustShare();
|
|
} else if (this.query.position_side) {
|
|
this.positionShare();
|
|
}
|
|
},
|
|
computed: {
|
|
...mapState({
|
|
logoMap: "logoMap",
|
|
}),
|
|
// 收益率
|
|
numMap() {
|
|
let strs = this.query.profitRate.replace("%", "").split(".");
|
|
return {
|
|
type: strs[0] >= 0 ? "+" : "",
|
|
num: strs[0],
|
|
dec: strs[1] ? `.${strs[1].substring(0, 3)}` : "",
|
|
};
|
|
},
|
|
},
|
|
onLoad(query) {
|
|
this.query = query;
|
|
},
|
|
methods: {
|
|
omitTo:math.omitTo,
|
|
generalizeInfo() {
|
|
Profile.generalizeInfo().then((res) => {
|
|
this.detail = res.data;
|
|
});
|
|
},
|
|
entrustShare() {
|
|
Contract.entrustShare({
|
|
symbol: this.query.symbol,
|
|
entrust_id: this.query.entrust_id,
|
|
}).then((res) => {
|
|
this.data = res.data;
|
|
this.imgList = res.data.share_imgs;
|
|
this.imgTitleTip=res.data.tip;
|
|
});
|
|
},
|
|
positionShare() {
|
|
Contract.positionShare({
|
|
symbol: this.query.symbol,
|
|
position_side: this.query.position_side,
|
|
lang:uni.getStorageSync('language')||'zh-CN'
|
|
}).then((res) => {
|
|
this.data = res.data;
|
|
this.imgList = res.data.share_imgs;
|
|
this.imgTitleTip=res.data.tip;
|
|
});
|
|
},
|
|
// -----长按事件----
|
|
touchstart() {
|
|
clearTimeout(this.dTime);
|
|
this.dTime = setTimeout(() => {
|
|
this.bitmap();
|
|
}, 600);
|
|
},
|
|
touchmove() {
|
|
clearTimeout(this.dTime);
|
|
},
|
|
touchend() {
|
|
clearTimeout(this.dTime);
|
|
},
|
|
bitmap() {
|
|
/* eslint-disable */
|
|
let self = this;
|
|
if (!plus) return;
|
|
let pages = getCurrentPages();
|
|
let page = pages[pages.length - 1];
|
|
let ws = page.$getAppWebview();
|
|
// 截图
|
|
let bitmap1 = new plus.nativeObj.Bitmap();
|
|
// 将webview内容绘制到Bitmap对象中
|
|
ws.draw(
|
|
bitmap1,
|
|
function (e) {
|
|
bitmap1.save("_doc/share.png", {}, function (i) {
|
|
plus.gallery.save(
|
|
i.target,
|
|
function (d) {
|
|
//销毁Bitmap图片
|
|
bitmap1.clear();
|
|
self.$toast(self.$t("common.b3"));
|
|
},
|
|
function (e) {
|
|
//销毁Bitmap图片
|
|
self.$toast(self.$t("common.b4"));
|
|
bitmap1.clear();
|
|
}
|
|
);
|
|
});
|
|
},
|
|
function (e) {
|
|
self.$toast(self.$t("common.b3"));
|
|
}
|
|
);
|
|
/* eslint-disable */
|
|
},
|
|
},
|
|
};
|
|
</script>
|
|
|
|
<style scoped lang="scss">
|
|
.color-plain {
|
|
color: $white !important;
|
|
}
|
|
.nav-tab {
|
|
position: absolute;
|
|
width: 100%;
|
|
background: transparent;
|
|
/deep/ {
|
|
.van-hairline--bottom:after {
|
|
border-bottom-width: 0px;
|
|
}
|
|
.van-nav-bar {
|
|
background-color: transparent;
|
|
}
|
|
}
|
|
}
|
|
::v-deep .van-nav-bar__title {
|
|
color: $white;
|
|
}
|
|
::v-deep .van-nav-bar .van-icon {
|
|
color: $white;
|
|
}
|
|
.p-x-50 {
|
|
padding-left: 40px;
|
|
padding-right: 40px;
|
|
}
|
|
.blue {
|
|
color: #00daff;
|
|
}
|
|
.income-page {
|
|
// background: #170043 center/100% 100%;
|
|
position: relative;
|
|
.top-tips {
|
|
word-spacing: 20px;
|
|
color: transparent;
|
|
}
|
|
.lever {
|
|
background: linear-gradient(to right, #00daff, #9e61ff);
|
|
padding: 1px;
|
|
border-radius: 4px;
|
|
.lever-content {
|
|
padding: 4px 6px;
|
|
border-radius: 4px;
|
|
background: #170043;
|
|
}
|
|
}
|
|
.swipe-item {
|
|
background-position: top center;
|
|
background-size: 100% 100%;
|
|
}
|
|
.price-box {
|
|
margin-bottom: 10%;
|
|
.price {
|
|
font-size: 56px;
|
|
// background: linear-gradient(to right, #00daff, #9e61ff);
|
|
background-clip: text;
|
|
-webkit-background-clip: text;
|
|
}
|
|
}
|
|
.data-item {
|
|
position: relative;
|
|
&::before {
|
|
display: block;
|
|
position: absolute;
|
|
content: "";
|
|
width: 25px;
|
|
height: 3px;
|
|
background: $white;
|
|
top: 0;
|
|
}
|
|
}
|
|
.code-body {
|
|
width: 100%;
|
|
height: 6rem;
|
|
.img{
|
|
// width: 26%;
|
|
}
|
|
}
|
|
.bg-img {
|
|
width: 100%;
|
|
}
|
|
}
|
|
.imgtitle p{
|
|
color: #113062;
|
|
// background-image:-webkit-linear-gradient(top,#dff4ff,#85c3e3);
|
|
// -webkit-background-clip:text;
|
|
// -webkit-text-fill-color:transparent;
|
|
// font-family: '宋体';
|
|
}
|
|
.w-50{
|
|
width:25%;
|
|
}
|
|
.h-50{
|
|
// height:250%;
|
|
}
|
|
.share-code{
|
|
background-color: white;
|
|
padding: 5px;
|
|
}
|
|
.shuju{
|
|
margin-bottom: 6%;
|
|
.center{
|
|
border-left: 1px solid ;
|
|
border-right: 1px solid ;
|
|
}
|
|
}
|
|
.color-black{
|
|
color: black;
|
|
}
|
|
.w-33{
|
|
width: 33%;
|
|
}
|
|
.color-gray{
|
|
color: gray;
|
|
}
|
|
.rounded-3{
|
|
border-radius: 5px;
|
|
}
|
|
.w-f{
|
|
width: fit-content;
|
|
}
|
|
</style>
|
|
|