<template>
	<view class="contract">
		<headContent :showleftRight="false">
			<template #content>
				<view class="navigation-box">
					<view :class="['navigation-item hide_1' , contractIndex === index ? 'active-navigation-item' : '']"
						v-for="(item , index) in contractArr" :key="`navigation_${index}`"
						@click.stop="contractIndex = index">
						{{ item }}
					</view>
				</view>
			</template>
		</headContent>

		<!-- 永续合约 -->
		<template v-if="contractIndex === 0">
			<sustainability ref="sustainabilityRef" :currency-info="currencyVal" :leverTransaction="lever_transaction"
				:pagesInfo="pagesInfo" :rate-profits-total="rate_profits_total" @refreshData="init"
				@setContract="setContract" @setProfitLoss="setProfitLoss" />
		</template>
		<!-- 永续合约 -->
		<template v-if="contractIndex === 1">
			<shortcut :leverTransaction="lever_transaction" :rate-profits-total="rate_profits_total"
				:pagesInfo="pagesInfo" @refreshData="init" />
		</template>
		<!-- 赠金交易 -->
		<template v-if="contractIndex === 2">
			<grants />
		</template>
		<notarize />

		<!-- 永续合约设置 -->
		<contract-set ref="contractSetRef" @confirm="openSet" />
		<!-- 偏好设置 -->
		<preference ref="preferenceRef" />
		<!-- 设置盈亏 -->
		<restrictPopup ref="restrictPopupRef" @setSuccess="setRestrictSuccess" />
	</view>
</template>

<script>
	import notarize from "./modules/notarize.vue"
	import sustainability from "./sustainability/index.vue"
	import grants from "./grants/index.vue"
	import shortcut from "./shortcut/index.vue"
	import preference from "@/components/contract-set/preference.vue"
	import {
		Api_getLeverDeal,
		Api_getRegister
	} from "@/api/index.js"
	import {
		Way_getUserInfo
	} from "@/utils/common-request.js"
	import {
		mapGetters
	} from 'vuex'
	import {
		startSocket,
		closeSocket
	} from "@/utils/websocket.js"
	import restrictPopup from "./modules/restrict.vue"
	export default {
		name: 'contract',
		components: {
			notarize,
			sustainability,
			grants,
			shortcut,
			preference,
			restrictPopup
		},
		data() {
			return {
				contractIndex: 0,
				contractArr: [
					'永续合约',
					'快捷合约',
					'赠金交易'
				],
				currency: {},
				UserInfo: {},
				pagesInfo: {},
				lever_transaction: [],
				rate_profits_total: {}
			};
		},
		onLoad() {

		},

		computed: {
			...mapGetters([
				'currencyVal'
			]),
		},
		watch: {
			currencyVal: {
				handler(newCurrency) {
					if (newCurrency && newCurrency?.legal_id) {
						this.init();
					}
				},
				deep: true,
				immediate: true
			},
		},
		onShow() {
			const nu = this.$getStorageSync('contractIndex');
			this.contractIndex = [0, 1, 2].includes(nu) ? nu : this.contractIndex
			this.$removeStorageSync('contractIndex')

			this.init()
			// this.setSocket();
		},
		onHide() {
			this.close()
		},
		mounted() {
			// 设置盈亏
			// setProfitLoss(item) {
			// 	console.log('setProfitLoss')
			// 	this.$nextTick(() => {
			// 		this.$refs.restrictPopupRef.open(item)
			// 	})
			// },
			// this.$on('setProfitLoss', (val) => {
			// 	console.log('setProfitLoss' , val);
			// });
		},
		methods: {
			init() {
				if ([0, 1].includes(this.contractIndex)) {
					// 永续 / 快捷 需要获取持仓信息
					this.getRegister()
				}
				this.getAccountInfo();
				this.$store.dispatch('websocket/getQuotationNew', {
					noRefresh: true
				})
				// 运行 socket 实时更新
				// this.$store.commit('websocket/set_socket_update_status', true)
				if (this.currencyVal && this.currencyVal?.legal_id) {
					this.getLeverDeal();
					this.setSocket();
				}

			},
			// 获取持仓信息（当前持仓）
			getRegister() {
				Api_getRegister({
					status: 1,
					page: 1,
					limit: 10000,
					settled: this.contractIndex === 0 ? 0 : 9
				}).then(res => {
					this.rate_profits_total = res.rate_profits_total
				}).catch(err => {
					// this.getRegister()
				})
			},
			setSocket() {
				startSocket({
					type: 'market_depth'
				});
				startSocket({
					type: 'daymarket'
				});
				// this.$store.dispatch("websocket/openSocket", {
				// 	,
				// 	legal_id: this.currencyVal.legal_id,
				// 	currency_id: this.currencyVal.currency_id
				// })
				// this.$store.dispatch("websocket/openSocket", {
				// 	type: 'daymarket',
				// 	legal_id: this.currencyVal.legal_id,
				// 	currency_id: this.currencyVal.currency_id
				// })
			},
			getLeverDeal() {
				Api_getLeverDeal({
					legal_id: this.currencyVal.legal_id,
					currency_id: this.currencyVal.currency_id
				}).then(res => {
					this.pagesInfo = res
					this.lever_transaction = res.lever_transaction?.in || []
				}).catch(err => {
					// this.getLeverDeal()
				})
			},

			getAccountInfo() {
				this.$store.dispatch('possession/getPossession').then(res => {
					console.log('获取成功')
				}).catch(err => {
					console.log('获取shibai ')
				})
			},
			setContract() {
				// setContract
				this.$nextTick(() => {
					this.$refs.contractSetRef.open()
				})
			},
			// 设置盈亏
			setProfitLoss(item) {
				console.log('setProfitLoss')
				this.$nextTick(() => {
					this.$refs.restrictPopupRef.open(item)
				})
			},
			// 设置盈亏成功
			setRestrictSuccess() {
				this.getRegister();
				this.getLeverDeal();
			},

			// 永续合约 设置
			openSet(type) {
				return false
				switch (type) {
					case 1:
						// 偏好设置
						this.$nextTick(() => {
							this.$refs.preferenceRef.open()
						})
						break;
					case 2:
						// 合约计算器
						uni.navigateTo({
							url: '/pages/contract/calculator'
						})
						break;
						// 
				}
			}

		}
	}
</script>


<style lang="scss" scoped>
	.navigation-box {
		width: 100%;
		height: 100%;
		padding: 0 $pages-padding 11rpx;
		display: flex;
		align-items: flex-end;

		.navigation-item {
			// width: 25%;
			flex: 1;
			flex-shrink: 0;
			text-align: center;
			height: 60rpx;
			border: 2rpx solid #27ae83;
			line-height: 60rpx;
			font-size: 28rpx;
			font-family: PingFang SC, PingFang SC-Regular;
			font-weight: 400;
			color: #05c175;

			&:nth-child(n + 2) {
				border-left: none;
			}

			&:last-child {
				border-radius: 0 6rpx 6rpx 0;
			}

			&:first-child {
				border-radius: 6rpx 0 0 6rpx;
			}
		}

		.active-navigation-item {
			background-color: #05C175;
			color: #FFFFFF;
		}
	}
</style>