<template>
|
<!-- 永续合约,交割合约公共头部 -->
|
<div>
|
<div class="contract-header">
|
<div class="pl-30 pr-30">
|
<div class="flex pt-45 before">
|
<div class="flex items-center justify-center">
|
<!-- <img :src="require(`@/assets/theme/${theme}/image/icon_back.png`)" class="w-35 h-35 back" alt=""
|
@click="$router.push(`/trendDetails/${symbol}`)"> -->
|
<!-- <img
|
:src="require(`@/assets/theme/${theme}/image/convert.png`)"
|
alt="convert-img"
|
class="w-35 h-35"
|
@click="onSidebar"
|
/> -->
|
<div class="flex pl-21 textColor" @click="onSidebar">
|
<div class="font-35">{{ newname }}</div>
|
<div class="ml-15">{{ title }}</div>
|
</div>
|
<div
|
class="pl-30 w-160"
|
:class="{ 'text-green': range > 0, 'text-red': range <= 0 }"
|
>
|
{{ range > 0 ? "+" : "" }}{{ range || "--" }}%
|
</div>
|
<!-- <img src="@/assets/image/kline.png" class="w-44 h-44 right" alt="" @click="$router.push(`/trendDetails/${symbol}`)"> -->
|
</div>
|
<!-- <div class="flex items-center">
|
<img src="../../assets/image/public/k-line.png" alt="line-img" class="w-38 h-35"
|
@click="jump" />
|
</div> -->
|
</div>
|
<!-- <div class="flex justify-between pt-34">
|
<button
|
class="w-368 h-74 lh-74"
|
:class="selectIndex == 1 ? 'select-active' : 'no-select'"
|
@click="changeTab(1)"
|
>
|
{{ $t("永续合约") }}
|
</button>
|
<button
|
class="w-368 h-74 lh-74"
|
:class="selectIndex == 2 ? 'select-active' : 'no-select'"
|
@click="changeTab(2)"
|
>
|
{{ $t("期权合约") }}
|
</button>
|
</div> -->
|
</div>
|
</div>
|
<!-- 左侧边弹出菜单 -->
|
<van-popup
|
class="popup"
|
round
|
v-model="show"
|
close-icon-position="top-left"
|
position="left"
|
@closed="onClose"
|
>
|
<div class="pl-42 border-b-color pt-48 pb-48">
|
<div class="textColor">
|
<span class="font-bold font-45 mr-12"
|
>{{ title }} {{ $t("合约") }}</span
|
>
|
<span class="font-30">/ USDT</span>
|
</div>
|
</div>
|
<div class="inputBoxbg h-60 w-full rounded-full flex items-center" style="background: #f5f5f5;">
|
<input
|
style="padding-left: 10px"
|
type="text"
|
v-model="keywords"
|
:placeholder="$t('搜索币种')"
|
class="h-full flex-1 search-input border-none bg-none"
|
@input="onInput"
|
/>
|
<img
|
src="@/assets/3x/资源 22@3x.png"
|
alt="logo"
|
class="w-32 h-32 mx-16"
|
/>
|
</div>
|
<div class="pl-42 pr-40">
|
<div class="flex justify-between mb-42 mt-53">
|
<div class="flex items-center text-grey">
|
<div class="mr-12">{{ $t("名称") }}</div>
|
</div>
|
<div class="flex text-grey">
|
<div class="flex items-center">
|
<div class="">{{ $t("最新价格") }}</div>
|
</div>
|
<div class="flex items-center">
|
<div class="mr-12">/24H{{ $t("涨跌") }}</div>
|
</div>
|
</div>
|
</div>
|
<div
|
class="flex justify-between mb-50"
|
v-for="item in list"
|
:key="item.name"
|
@click="onRoute(item)"
|
>
|
<div>
|
<div class="textColor">
|
{{ item.name }}
|
</div>
|
<div class="text-grey mt-10">
|
{{ selectIndex == 1 ? $t("永续") : $t("交割") }}
|
</div>
|
</div>
|
<div class="text-right">
|
<div class="textColor">{{ item.close }}</div>
|
<div
|
class="mt-10"
|
:class="item.change_ratio > 0 ? 'text-green' : 'text-red'"
|
>
|
{{ item.change_ratio || (item.change_ratio === 0 ? 0 : "--") }}%
|
</div>
|
</div>
|
</div>
|
</div>
|
</van-popup>
|
</div>
|
</template>
|
|
<script>
|
import { Popup } from "vant";
|
import { mapActions, mapGetters } from "vuex";
|
import { _getHomeList } from "@/API/home.api";
|
import { setStorage } from "@/utils/utis";
|
export default {
|
name: "contractHeader",
|
props: {
|
backFunc: {
|
type: Function,
|
default: null,
|
},
|
balance: {
|
// 余额
|
type: [String, Number],
|
default: 0.0,
|
},
|
// title:{
|
// type:String,
|
// default:''
|
// },
|
newname: {
|
type: String,
|
default: "",
|
},
|
symbol: {
|
type: String,
|
default: "",
|
},
|
range: {
|
type: String,
|
defalult: "",
|
},
|
selectIndex: {
|
type: [String, Number],
|
defalult: "",
|
},
|
},
|
components: {
|
[Popup.name]: Popup,
|
},
|
computed: {
|
...mapGetters({
|
coinList: "home/coinList",
|
theme: "home/theme",
|
newcoinArr: "home/newcoinArr",
|
}),
|
title() {
|
return [this.$t("永续"), this.$t("交割")][this.selectIndex - 1];
|
},
|
},
|
data() {
|
return {
|
// selectIndex2:this.selectIndex,
|
show: false,
|
timeout: null,
|
keywords:'',
|
// title: '',
|
list: [
|
// { name:"BTC/USDT",close:"22042.28",change_ratio:"2.21"},
|
// { name:"XTZ/USDT",close:"1.568",change_ratio:"-7.1"},
|
// { name:"ADA/USDT",close:"0.493085",change_ratio:"-4.08"},
|
],
|
};
|
},
|
created() {
|
this.NEW_CION_LIST();
|
// this.coins = this.coinList.map(item => item.symbol)
|
// console.log('this.coins', this.coins)
|
},
|
methods: {
|
...mapActions("home", ["NEW_CION_LIST"]),
|
onRoute(item) {
|
if (this.$route.params.symbol !== item.symbol) {
|
this.$router.push(`/trade/${item.symbol}`);
|
this.$emit("update-coin", item.symbol);
|
setStorage("symbol", item.symbol);
|
this.onClose();
|
this.$forceUpdate();
|
}
|
this.show = false;
|
},
|
onSidebar() {
|
// 侧边栏打开
|
console.log(this.userInfo);
|
this.coins = this.coinList.map((item) => item.symbol);
|
this.show = true;
|
this.fetchList();
|
},
|
onInput(e) {
|
this.keywords = e.target.value
|
this.coins = this.coins.filter(item => item.includes(e.target.value));
|
if(!this.keywords){
|
this.coins = this.coinList.map((item) => item.symbol);
|
}
|
// this.funds = this.fundsDatra.filter((item) =>
|
// item.symbol.includes(e.target.value.toLocaleLowerCase())
|
// );
|
// this.fundsDatra[index]["data"] = this.tabList[index]["data"].filter(
|
// (item) => item.symbol.includes(e.target.value.toLocaleLowerCase())
|
// );
|
},
|
fetchList() {
|
// 获取行情
|
const mainArray = this.coins.filter(
|
(item) => !this.newcoinArr.includes(item)
|
);
|
|
|
_getHomeList(mainArray.join(","),'desc').then((list) => {
|
// console.log(list)
|
this.list = list;
|
if (this.timeout) {
|
clearTimeout(this.timeout);
|
this.timeout = null;
|
}
|
this.timeout = setTimeout(() => {
|
this.fetchList();
|
}, 1000);
|
});
|
},
|
onClose() {
|
if (this.timeout) {
|
clearTimeout(this.timeout);
|
this.timeout = null;
|
}
|
},
|
jump() {
|
this.$router.push(`/trendDetails/${this.symbol}`);
|
},
|
changeTab(index) {
|
this.$emit("tab", index);
|
// this.selectIndex2 = index;
|
},
|
},
|
};
|
</script>
|
|
<style lang="scss" scoped>
|
@import "@/assets/init.scss";
|
|
.before {
|
position: relative;
|
|
.back {
|
position: absolute;
|
left: 0;
|
}
|
|
.right {
|
position: absolute;
|
right: 0;
|
}
|
}
|
|
.wallet-background {
|
background-color: #e8e8e8;
|
}
|
|
.tabBtn {
|
// border-radius: 8px;
|
border: 1px solid #909090;
|
color: #868d9a;
|
background: transparent;
|
}
|
|
.select-active {
|
background-color: transparent;
|
border: 0px;
|
color: $newcolor;
|
}
|
|
.no-select {
|
background-color: transparent;
|
border: 0px;
|
color: $newcolor1;
|
}
|
|
// 弹出层样式
|
.popup {
|
height: 100%;
|
width: 670px;
|
|
@include themify() {
|
background: themed("main_background");
|
}
|
}
|
|
.border-b-color {
|
@include themify() {
|
border-bottom: 1px solid themed("border_color");
|
}
|
}
|
</style>
|