<template>
|
<div class="wrapper">
|
<div v-if="list.length <= 0 && !getStatus" class="empty text-center">
|
暂无订单信息!
|
</div>
|
<div v-if="list.length <= 0 && getStatus" class="empty text-center">
|
<mt-spinner type="fading-circle"></mt-spinner>
|
loading...
|
</div>
|
<div v-if="list.length > 0">
|
<ul
|
class="order-info-box-wrap"
|
v-infinite-scroll="loadMore"
|
:infinite-scroll-disabled="loading"
|
infinite-scroll-distance="0"
|
>
|
<li v-for="item in list" :key="item.key">
|
<div class="order-info-box">
|
<div class="order-title">
|
<span @click="toDetail(item.futuresCode)" class="main">{{
|
item.futuresName
|
}}</span>
|
<span class="secondary">({{ item.futuresCode }})</span>
|
<span
|
:class="
|
item.orderDirection == '买涨'
|
? 'type type-up'
|
: 'type type-down'
|
"
|
>{{ item.orderDirection == "买涨" ? "买涨" : "买跌" }}</span
|
>
|
<span class="direction pull-right big-font">
|
总盈亏:
|
<b v-if="item.nowPrice == 0">-</b>
|
<b
|
v-else
|
:class="
|
item.allProfitAndLose < 0
|
? 'space green'
|
: item.allProfitAndLose == 0
|
? 'space'
|
: 'space red'
|
"
|
>{{ item.allProfitAndLose }}
|
<span class="mini-size">{{ item.coinCode }}</span></b
|
>
|
<b class="mini-font-title">
|
≈
|
{{ (item.allProfitAndLose * item.coinRate).toFixed(2) }}
|
CNY</b
|
>
|
</span>
|
<!-- <span class="red direction pull-right">{{item.orderDirection}}<i class="iconfont icon-up"></i></span> -->
|
<!-- <span class="secondary ">123456789</span> -->
|
</div>
|
<div class="order-info">
|
<div class="table-title clearfix">
|
<span class="col-xs-3">买入/最新</span>
|
<span class="col-xs-3">数量/保证金</span>
|
<span class="col-xs-3">手续费</span>
|
<span class="col-xs-3">浮动盈亏</span>
|
</div>
|
<div class="table-value clearfix">
|
<div class="col-xs-3">
|
<p>
|
{{ item.buyOrderPrice }}
|
<span class="mini-size">{{ item.coinCode }}</span>
|
</p>
|
<!-- <p class="mini-font"> ≈ {{(item.buyOrderPrice * item.coinRate).toFixed(2)}} CNY</p> -->
|
<p>
|
<b v-if="item.nowPrice == 0">-</b>
|
<b
|
v-else
|
:class="
|
item.nowPrice - item.buyOrderPrice < 0
|
? 'green'
|
: item.nowPrice - item.buyOrderPrice == 0
|
? ''
|
: ' red'
|
"
|
>{{ Number(item.nowPrice).toFixed(2) }}
|
<span class="mini-size">{{ item.coinCode }}</span></b
|
>
|
</p>
|
<!-- <p class="mini-font"> ≈ {{(item.nowPrice * item.coinRate).toFixed(2)}} CNY</p> -->
|
</div>
|
<div class="col-xs-3">
|
<p>{{ item.orderNum }} <span class="mini-size">手</span></p>
|
<p>
|
{{ item.allDepositAmt }} <span class="mini-size">CNY</span>
|
</p>
|
<!-- <p class="mini-font"> ≈ {{(item.allDepositAmt * item.coinRate).toFixed(2)}} CNY</p> -->
|
</div>
|
<div class="col-xs-3">
|
<p>
|
{{ item.orderFee }}
|
<span class="mini-size">{{ item.coinCode }}</span>
|
</p>
|
<p class="mini-font">
|
≈ {{ (item.orderFee * item.coinRate).toFixed(2) }} CNY
|
</p>
|
<!-- <p>
|
<b v-if="item.nowPrice == 0">-</b>
|
<b v-else :class="item.profitAndLose<0?' green':item.profitAndLose==0?'':' red'">{{item.profitAndLose}} <span class="mini-size">{{item.coinCode}}</span></b>
|
</p>
|
<p class="mini-font"> ≈ {{(item.profitAndLose * item.coinRate).toFixed(2)}} CNY</p> -->
|
</div>
|
<div class="col-xs-3">
|
<!-- <p>{{item.orderFee}} <span class="mini-size">{{item.coinCode}}</span></p>
|
<p class="mini-font"> ≈ {{(item.orderFee * item.coinRate).toFixed(2)}} CNY</p> -->
|
<p>
|
<b v-if="item.nowPrice == 0">-</b>
|
<b
|
v-else
|
:class="
|
item.profitAndLose < 0
|
? ' green'
|
: item.profitAndLose == 0
|
? ''
|
: ' red'
|
"
|
>{{ item.profitAndLose }}
|
<span class="mini-size">{{ item.coinCode }}</span></b
|
>
|
</p>
|
<p class="mini-font">
|
≈ {{ (item.profitAndLose * item.coinRate).toFixed(2) }} CNY
|
</p>
|
</div>
|
</div>
|
</div>
|
<div class="order-foot clearfix">
|
<div
|
style="text-align: left; color: #666; padding: 0"
|
class="col-xs-6"
|
>
|
<b v-if="item.buyOrderTime">{{
|
new Date(item.buyOrderTime) | timeFormat
|
}}</b>
|
<b v-else></b>
|
</div>
|
<div @click="sell(item.positionSn)" class="foot-btn">
|
<i class="font-icon"></i>
|
我要平仓
|
</div>
|
</div>
|
</div>
|
</li>
|
</ul>
|
<div v-show="loading" class="load-all text-center">
|
<mt-spinner type="fading-circle"></mt-spinner>
|
loading...
|
</div>
|
<div v-show="!loading" class="load-all text-center">已全部加载</div>
|
</div>
|
</div>
|
</template>
|
|
<script>
|
import { Toast, MessageBox } from "mint-ui";
|
import * as api from "@/axios/api";
|
|
export default {
|
components: {},
|
props: {
|
// list:{
|
// type:Array,
|
// default:{
|
// return:[]
|
// }
|
// },
|
// form:{
|
// type:Object,
|
// default:{
|
// return:{}
|
// }
|
// },
|
// getListDetail:{
|
// type:Function,
|
// default: function(){}
|
// },
|
handleOptions: {
|
type: Function,
|
default: function () {},
|
},
|
selectedNumber: {
|
type: String,
|
},
|
},
|
data() {
|
return {
|
loading: false, // 是否正在加载更多
|
isRefresh: false, // 是否正在刷新
|
getStatus: false, // 是否正在数据
|
pageNum: 1,
|
pageSize: 10,
|
currentNum: 10,
|
list: [],
|
total: 0, // 记录总值
|
hasChangeSell: false, // 平仓状态改变
|
};
|
},
|
watch: {
|
selectedNumber(val) {
|
console.log(val + "期货持仓");
|
if (val === "4") {
|
if (!this.$store.state.userInfo.idCard) {
|
this.getUserInfo();
|
}
|
this.getListDetail();
|
this.timer = setInterval(this.refreshList, 5000);
|
} else {
|
clearInterval(this.timer);
|
}
|
},
|
},
|
computed: {},
|
created() {
|
// this.timer = setInterval(this.refreshList, 5000)
|
},
|
beforeDestroy() {
|
clearInterval(this.timer);
|
},
|
mounted() {},
|
methods: {
|
async getUserInfo() {
|
// 获取用户信息
|
let data = await api.getUserInfo();
|
if (data.status === 0) {
|
this.$store.state.userInfo = data.data;
|
} else {
|
Toast(data.msg);
|
}
|
},
|
async loadMore() {
|
// 1、总数小于 该次查询的总页数 不进行加载更多 (无下一页)
|
// 2、当页加载数据还未加载完 不进行下一个加载
|
if (
|
this.list.length < this.pageSize ||
|
this.loading ||
|
this.total <= this.currentNum
|
) {
|
return;
|
}
|
this.loading = true;
|
// 加载下一页
|
this.pageNum++;
|
await this.getListDetail();
|
this.currentNum = this.pageNum * this.pageSize;
|
this.loading = false;
|
},
|
async getListDetail() {
|
let opt = {
|
state: 0,
|
fnCode: "", // 代码
|
fnName: "", // 简拼
|
pageNum: this.pageNum,
|
pageSize: this.pageSize,
|
};
|
this.getStatus = true;
|
let data = await api.getFuturesOrderList(opt);
|
if (data.status === 0) {
|
data.data.list.forEach((element) => {
|
this.list.push(element);
|
});
|
this.getStatus = false;
|
this.total = data.data.total;
|
} else {
|
Toast(data.msg);
|
}
|
},
|
async refreshList() {
|
// 判断是不是已经查询 或者是否正在加载下一页 是则退出,不进行刷新
|
if (this.loading) {
|
return;
|
}
|
let opt = {
|
state: 0,
|
fnCode: "", // 代码
|
fnName: "", // 简拼
|
pageNum: 1,
|
pageSize: this.currentNum,
|
};
|
this.isRefresh = true;
|
let data = await api.getFuturesOrderList(opt);
|
this.isRefresh = false;
|
this.total = data.data.total;
|
this.list = data.data.list;
|
},
|
canBuyStatus() {
|
let dataTime = new Date();
|
let day = dataTime.getDay(); // 星期几
|
let hour = dataTime.getHours(); // 小时
|
let minute = dataTime.getMinutes(); // 分钟
|
if (day === 6 || day === 7) {
|
return false;
|
}
|
if (hour < 9 || (hour >= 12 && hour < 13) || hour >= 15) {
|
return false;
|
}
|
if (hour === 9 && minute < 32) {
|
return false;
|
}
|
if (hour === 11 && minute >= 30) {
|
return false;
|
}
|
if (hour === 14 && minute > 57) {
|
return false;
|
}
|
return true;
|
},
|
sell(val) {
|
// if(!this.canBuyStatus()){
|
// Toast('不在开盘时间内,暂不能交易!')
|
// return
|
// }
|
if (!this.$store.state.userInfo.idCard) {
|
Toast("您还未实名认证,请先实名认证了再下单");
|
this.$router.push("/authentication");
|
return;
|
}
|
MessageBox.confirm("您确定要平仓吗?").then(async (action) => {
|
let opt = {
|
positionSn: val,
|
};
|
let data = await api.sellFutures(opt);
|
if (data.status === 0) {
|
Toast(data.msg);
|
this.hasChangeSell = true;
|
this.handleOptions(this.hasChangeSell);
|
this.getListDetail();
|
} else {
|
Toast(data.msg);
|
}
|
});
|
},
|
toDetail(code) {
|
this.$router.push({
|
path: "/list",
|
query: {
|
index: "4",
|
},
|
});
|
},
|
},
|
};
|
</script>
|
<style lang="less" scoped>
|
.wrapper {
|
padding-bottom: 0;
|
.empty {
|
background-color: #16171d;
|
}
|
}
|
.col-xs-3 .iconfont {
|
font-size: 0.22rem;
|
}
|
|
.order-info-box {
|
.order-info {
|
padding-top: 0.1rem;
|
}
|
|
.mini-font-title {
|
color: #777;
|
font-size: 0.2rem;
|
position: absolute;
|
right: 0;
|
top: 0.56rem;
|
color: #777;
|
line-height: 0.2rem;
|
}
|
|
.mini-size {
|
font-size: 0.2rem;
|
}
|
|
.big-font {
|
position: relative;
|
line-height: 0.6rem;
|
}
|
}
|
|
.table-title {
|
font-size: 0.22rem;
|
line-height: 0.4rem;
|
margin-bottom: 0.1rem;
|
|
.col-xs-3 {
|
padding: 0;
|
}
|
}
|
|
.table-value {
|
.col-xs-3 {
|
padding: 0;
|
|
p {
|
padding: 0;
|
line-height: 0.32rem;
|
}
|
}
|
|
.mini-font {
|
font-size: 0.2rem;
|
color: #777;
|
line-height: 0.2rem;
|
}
|
}
|
#app.red-theme {
|
.order-info-box {
|
background-color: #fff;
|
.order-title {
|
.main {
|
color: #000;
|
}
|
}
|
.order-info {
|
color: #000;
|
}
|
}
|
.order-foot {
|
border-top-color: #ccc;
|
}
|
.load-all {
|
background-color: #bb1815;
|
color: #fff;
|
}
|
.empty {
|
background-color: #e9e9e9;
|
color: #000;
|
}
|
}
|
</style>
|