| | |
| | | <template> |
| | | <div class="DeliveryContractHistory"> |
| | | <assets-head :title="$t('交割合约历史')" :backFunc="() => { |
| | | if ($route.query.goback) { |
| | | $router.push({ |
| | | path: '/funds', |
| | | query: { |
| | | tab: 2, |
| | | index: 1// 0: 查看理财订单 1: 矿机 |
| | | <assets-head |
| | | :title="$t('交割合约历史')" |
| | | :backFunc=" |
| | | () => { |
| | | if ($route.query.goback) { |
| | | $router.push({ |
| | | path: '/funds', |
| | | query: { |
| | | tab: 2, |
| | | index: 1, // 0: 查看理财订单 1: 矿机 |
| | | }, |
| | | }); |
| | | } else { |
| | | $router.go(-1); |
| | | } |
| | | }) |
| | | } else { |
| | | $router.go(-1) |
| | | } |
| | | |
| | | }" /> |
| | | } |
| | | " |
| | | /> |
| | | <div class="px-32"> |
| | | <van-tabs ref="tabs" v-model="type" swipeable @change="onChange" sticky> |
| | | <van-tab :title="item.title" v-for="item in selectData" :key="item.title" :name="item.type"> |
| | | <van-tab |
| | | :title="item.title" |
| | | v-for="item in selectData" |
| | | :key="item.title" |
| | | :name="item.type" |
| | | > |
| | | <div class="all-select flex justify-end" v-if="symbol"> |
| | | <div class="select-box flex" @click.stop="isAll = !isAll"> |
| | | <div class="flex-1"> |
| | | {{ symbol.toUpperCase() }}/USDT |
| | | </div> |
| | | <div class="flex-1">{{ symbol.toUpperCase() }}/USDT</div> |
| | | <van-icon name="arrow-down" /> |
| | | <div class="select-data" v-if="isAll"> |
| | | <div class="select-item" @click.stop="selectItem(item2)" v-for="(item2, index) in currencyList" |
| | | :key="index">{{ item2.symbol.toUpperCase() || item2.symbol }}/USDT</div> |
| | | <div |
| | | class="select-item" |
| | | @click.stop="selectItem(item2)" |
| | | v-for="(item2, index) in currencyList" |
| | | :key="index" |
| | | > |
| | | {{ item2.symbol.toUpperCase() || item2.symbol }}/USDT |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <template v-if="type === 'orders'"> |
| | | <van-list v-model="loading" :loading-text="$t('加载中...')" :finished="finished" |
| | | :finished-text="dataList.orders.length ? $t('已经全部加载完毕') : ''" @load="onLoad" :offset="30"> |
| | | <futrue-hold-list v-if="type === 'orders'" :list-data="dataList.orders"> |
| | | <van-list |
| | | v-model="loading" |
| | | :loading-text="$t('加载中...')" |
| | | :finished="finished" |
| | | :finished-text=" |
| | | dataList.orders.length ? $t('已经全部加载完毕') : '' |
| | | " |
| | | @load="onLoad" |
| | | :offset="30" |
| | | > |
| | | <futrue-hold-list |
| | | v-if="type === 'orders'" |
| | | :list-data="dataList.orders" |
| | | > |
| | | </futrue-hold-list> |
| | | <div class="flex flex-col justify-center pt-50 pb-20 items-center" |
| | | v-if="!dataList.orders.length && !loading"> |
| | | <img src="@/assets/image/assets-center/no-data.png" alt="" class="w-180 h-180" /> |
| | | <p class="text-grey mt-10">{{ $t('暂无记录') }}</p> |
| | | <div |
| | | class="flex flex-col justify-center pt-50 pb-20 items-center" |
| | | v-if="!dataList.orders.length && !loading" |
| | | > |
| | | <img |
| | | src="@/assets/image/assets-center/no-data.png" |
| | | alt="" |
| | | class="w-180 h-180" |
| | | /> |
| | | <p class="text-grey mt-10">{{ $t("暂无记录") }}</p> |
| | | </div> |
| | | </van-list> |
| | | </template> |
| | | |
| | | <template v-if="type === 'hisorders'"> |
| | | <van-list v-model="loading" :loading-text="$t('加载中...')" :finished="finished" |
| | | :finished-text="dataList.hisorders.length ? $t('已经全部加载完毕') : ''" @load="onLoad" :offset="30"> |
| | | <futrue-histroy-position :list-data="dataList.hisorders"></futrue-histroy-position> |
| | | <div class="flex flex-col justify-center pt-50 pb-20 items-center" |
| | | v-if="!dataList.hisorders.length && !loading"> |
| | | <img src="@/assets/image/assets-center/no-data.png" alt="" class="w-180 h-180" /> |
| | | <p class="text-grey mt-10">{{ $t('暂无记录') }}</p> |
| | | <van-list |
| | | v-model="loading" |
| | | :loading-text="$t('加载中...')" |
| | | :finished="finished" |
| | | :finished-text=" |
| | | dataList.hisorders.length ? $t('已经全部加载完毕') : '' |
| | | " |
| | | @load="onLoad" |
| | | :offset="30" |
| | | > |
| | | <futrue-histroy-position |
| | | :list-data="dataList.hisorders" |
| | | ></futrue-histroy-position> |
| | | <div |
| | | class="flex flex-col justify-center pt-50 pb-20 items-center" |
| | | v-if="!dataList.hisorders.length && !loading" |
| | | > |
| | | <img |
| | | src="@/assets/image/assets-center/no-data.png" |
| | | alt="" |
| | | class="w-180 h-180" |
| | | /> |
| | | <p class="text-grey mt-10">{{ $t("暂无记录") }}</p> |
| | | </div> |
| | | </van-list> |
| | | </template> |
| | |
| | | </div> |
| | | </template> |
| | | <script> |
| | | import { List, Tab, Tabs, DropdownMenu, DropdownItem } from 'vant'; |
| | | import futrueHoldList from '@/page/deliveryContract/hold.vue' |
| | | import futrueHistroyPosition from '@/page/deliveryContract/position.vue' |
| | | import { _futrueOrderList } from '@/API/trade.api' |
| | | import { List, Tab, Tabs, DropdownMenu, DropdownItem } from "vant"; |
| | | import futrueHoldList from "@/page/deliveryContract/hold.vue"; |
| | | import futrueHistroyPosition from "@/page/deliveryContract/position.vue"; |
| | | import { _futrueOrderList } from "@/API/trade.api"; |
| | | import assetsHead from "@/components/assets-head"; |
| | | import { _getCoins } from "@/API/home.api"; |
| | | export default { |
| | |
| | | type: "orders", |
| | | dataList: { |
| | | orders: [], |
| | | hisorders: [] |
| | | hisorders: [], |
| | | }, |
| | | isAll: false, |
| | | symbol: '', |
| | | symbol: "", |
| | | selectData: [ |
| | | { title: this.$t('当前委托'), type: 'orders' }, |
| | | { title: this.$t('历史仓位'), type: 'hisorders' }, |
| | | { title: this.$t("当前委托"), type: "orders" }, |
| | | { title: this.$t("历史仓位"), type: "hisorders" }, |
| | | ], |
| | | loading: false, |
| | | finished: false, |
| | | page: 1, |
| | | } |
| | | }; |
| | | }, |
| | | components: { |
| | | [Tab.name]: Tab, |
| | |
| | | [List.name]: List, |
| | | futrueHoldList, |
| | | futrueHistroyPosition, |
| | | assetsHead |
| | | assetsHead, |
| | | }, |
| | | mounted() { |
| | | this.getCoins() |
| | | this.symbol = this.$route.query.symbol |
| | | this.getCoins(); |
| | | this.symbol = this.$route.query.symbol; |
| | | }, |
| | | methods: { |
| | | getCoins() { |
| | | _getCoins().then((res) => { |
| | | console.log(res) |
| | | this.currencyList = res |
| | | }) |
| | | console.log(res); |
| | | this.currencyList = res; |
| | | }); |
| | | }, |
| | | onChange(e) { |
| | | this.dataList[e] = [] |
| | | this.finished = false |
| | | this.page = 1 |
| | | this.type = e |
| | | this.dataList[e] = []; |
| | | this.finished = false; |
| | | this.page = 1; |
| | | this.type = e; |
| | | this.loading = true; |
| | | if (this.loading) { |
| | | this.fetchData(this.symbol, this.type) |
| | | this.fetchData(this.symbol, this.type); |
| | | } |
| | | }, |
| | | onClickLeft() { |
| | | this.$router.go(-1) |
| | | this.$router.go(-1); |
| | | }, |
| | | fetchData(symbol) { |
| | | // TODO: 分页 |
| | | _futrueOrderList(symbol, this.type, this.page).then(data => { |
| | | this.dataList[this.type] = this.dataList[this.type].concat(data) |
| | | this.loading = false |
| | | _futrueOrderList(symbol, this.type, this.page).then((data) => { |
| | | this.dataList[this.type] = this.dataList[this.type].concat(data); |
| | | this.loading = false; |
| | | if (data.length < 10) { |
| | | this.finished = true |
| | | this.finished = true; |
| | | } |
| | | this.page++ |
| | | }) |
| | | this.page++; |
| | | }); |
| | | }, |
| | | onLoad() { |
| | | this.fetchData(this.symbol, this.type) |
| | | this.fetchData(this.symbol, this.type); |
| | | }, |
| | | //选择币种 |
| | | selectItem(item) { |
| | | this.page = 1 |
| | | this.symbol = item.symbol |
| | | this.dataList[this.type] = [] |
| | | this.fetchData(this.symbol, this.type) |
| | | this.isAll = false |
| | | } |
| | | this.page = 1; |
| | | this.symbol = item.symbol; |
| | | this.dataList[this.type] = []; |
| | | this.fetchData(this.symbol, this.type); |
| | | this.isAll = false; |
| | | }, |
| | | }, |
| | | beforeRouteEnter(to, from, next) { |
| | | const { query: { symbol } } = to |
| | | next(vm => { |
| | | vm.symbol = symbol |
| | | }) |
| | | } |
| | | } |
| | | const { |
| | | query: { symbol }, |
| | | } = to; |
| | | next((vm) => { |
| | | vm.symbol = symbol; |
| | | }); |
| | | }, |
| | | }; |
| | | </script> |
| | | <style lang="scss" scoped> |
| | | .DeliveryContractHistory { |
| | |
| | | } |
| | | |
| | | ::v-deep .van-tab--active { |
| | | background: #1194F7; |
| | | background: #1194f7; |
| | | border-radius: 5px; |
| | | color: #fff !important; |
| | | } |
| | |
| | | |
| | | ::v-deep .van-tabs__line { |
| | | background-color: transparent !important; |
| | | |
| | | } |
| | | |
| | | .position-padding { |
| | |
| | | font-style: normal; |
| | | font-weight: 400; |
| | | font-size: 26.4981px; |
| | | color: #FFFFFF; |
| | | color: #ffffff; |
| | | } |
| | | |
| | | .position-tag-title { |
| | |
| | | font-style: normal; |
| | | font-weight: 400; |
| | | font-size: 30.9145px; |
| | | color: #848E9C; |
| | | color: #848e9c; |
| | | } |
| | | |
| | | .position-tag-img { |
| | |
| | | } |
| | | |
| | | .red { |
| | | background: #F6465D; |
| | | background: #f6465d; |
| | | border-radius: 6.6266px; |
| | | } |
| | | |
| | | .green { |
| | | background: #5EBA89; |
| | | background: #5eba89; |
| | | border-radius: 6.62453px; |
| | | } |
| | | |
| | |
| | | font-style: normal; |
| | | font-weight: 400; |
| | | font-size: 30px; |
| | | color: #848E9C; |
| | | color: #848e9c; |
| | | } |
| | | |
| | | .position-text2 { |
| | |
| | | } |
| | | |
| | | .color-red { |
| | | color: #F6465D !important; |
| | | color: #f6465d !important; |
| | | } |
| | | |
| | | .color-green { |
| | | color: #5EBA89 !important; |
| | | color: #5eba89 !important; |
| | | } |
| | | |
| | | .color-blue { |
| | | color: #1D91FF !important; |
| | | color: #1d91ff !important; |
| | | } |
| | | |
| | | .van-tabs__nav { |
| | |
| | | color: themed("text_color"); |
| | | } |
| | | } |
| | | |
| | | } |
| | | |
| | | ::v-deep .van-nav-bar { |
| | |
| | | } |
| | | |
| | | .border-b-color { |
| | | border-bottom: 1px solid #2F3244 !important; |
| | | border-bottom: 1px solid #2f3244 !important; |
| | | } |
| | | |
| | | .all-select { |
| | |
| | | @include themify() { |
| | | background: themed("input_background"); |
| | | } |
| | | |
| | | |
| | | .select-item { |
| | | padding: 20px 20px; |