{"ast":null,"code":"import \"vant/es/swipe-item/style\";\nimport _SwipeItem from \"vant/es/swipe-item\";\nimport \"vant/es/swipe/style\";\nimport _Swipe from \"vant/es/swipe\";\nimport \"vant/es/popup/style\";\nimport _Popup from \"vant/es/popup\";\nimport \"core-js/modules/es.array.push.js\";\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\nimport ContractHeader from '@/components/contract-header/index.vue';\nimport PerpetualOpen from '@/components/perpetual-open/index.vue';\nimport PerpetualOrder from '@/components/perpetual-order/index.vue';\nimport { _getBalance, _getDeepData, _initOpen, _initClose, _orderListCur, _orderListHold, _futrueOrderInit, _futrueOrderList } from '@/API/trade.api';\nimport { _getHomeList } from '@/API/home.api';\nimport { mapActions, mapGetters } from 'vuex';\nimport { SET_COIN_LIST } from '@/store/const.store';\nimport { WS_URL } from '@/config';\nimport { getStorage } from '@/utils/utis';\nimport KLineCharts from '@/components/kline-charts';\nvar showLength = 7;\nexport default {\n name: \"perpetualContract\",\n components: {\n ContractHeader,\n PerpetualOpen,\n PerpetualOrder,\n [_Popup.name]: _Popup,\n [_Swipe.name]: _Swipe,\n [_SwipeItem.name]: _SwipeItem,\n KLineCharts\n },\n computed: {\n ...mapGetters('user', ['userInfo']),\n ...mapGetters({\n coinList: 'home/coinList'\n })\n },\n watch: {\n selectIndex(val) {\n showLength = 7;\n }\n },\n data() {\n const initArr = [];\n for (let i = 0; i < showLength; i++) {\n initArr.push({\n amount: '--',\n price: '--'\n });\n }\n return {\n quote: {},\n initTimer: null,\n keyIndex: 0,\n timeout: null,\n timer: null,\n // 底部持仓等的公用定时器\n timer1: null,\n // tab切换动画\n timer2: null,\n // 交割合约底部持仓等的公用定时器\n balance: 0,\n symbol: '',\n price: '',\n range: '',\n stop_price_profit: '',\n stop_price_loss: '',\n initOpen: {},\n initClose: {},\n asks: initArr,\n // 卖单\n bids: initArr,\n // 买单\n orderCur: [],\n // 当前委托\n orderHold: [],\n // 持有仓位\n futrueHold: [],\n // 交割持仓\n futrueHistroy: [],\n // 交割历史\n sockets: {\n quotes: null,\n // 行情\n deep: null /// 深度\n },\n curTab: '',\n // 当前委托还是持有仓位\n selectIndex: 1,\n // 当前tab\n initFutrue: {},\n /// 交割合约\n show: false,\n // popup\n animated1: false,\n animated2: false,\n currentType: '',\n showCharts: false\n // curRequest: [], //\n };\n },\n async created() {\n if (!this.coinList.length) {\n await this.SET_COIN_LIST();\n }\n _getBalance().then(data => {\n // 获取用户余额\n this.$store.commit('user/SET_USERINFO', {\n balance: data.money\n });\n // const { money } = data\n // this.balance = money\n });\n },\n methods: {\n ...mapActions('home', [SET_COIN_LIST]),\n onUpdate(symbol) {\n // 更新\n this.symbol = symbol;\n this.closeSocket();\n this.init(symbol);\n },\n onRecall() {\n // 撤单or 平仓 evt\n this.clearTimer();\n _orderListHold(this.symbol).then(data => {\n this.orderHold = data;\n });\n this[this.curTab](this.symbol);\n _initOpen(this.symbol).then(data => {\n this.initOpen = data;\n });\n },\n onTopTab(evt) {\n // 当前tab 永续/交割\n this.keyIndex += 1;\n this.selectIndex = evt;\n this.clearTimer();\n if (this.selectIndex / 1 === 1) {\n //this.curTab = 'fetchOrderListCur'\n this.curTab = 'fetchOrderListHold';\n // this.animated1 = true\n // this.timer = setTimeout(() => {\n // this.animated1 = false\n // clearTimeout(this.timer)\n // }, 200)\n this.animated2 = true;\n this.timer1 = setTimeout(() => {\n this.animated2 = false;\n clearTimeout(this.timer1);\n }, 200);\n } else {\n // this.animated2 = true\n // this.timer = setTimeout(() => {\n // this.animated2 = false\n // clearTimeout(this.timer)\n // }, 200)\n this.animated1 = true;\n this.timer1 = setTimeout(() => {\n this.animated1 = false;\n clearTimeout(this.timer1);\n }, 200);\n }\n console.log(this.curTab);\n this[this.curTab](this.symbol);\n },\n onOrdered(evt) {\n // 下单过后的回调\n this.clearTimer();\n // this.clearTimeout()\n this.initParam(this.symbol, evt); // 重新初始化\n // TODO: 这里要做判断\n if (this.selectIndex / 1 === 1) {\n this[this.curTab](this.symbol); // 重新调取记录\n console.log('this.curTab', this.curTab);\n } else {\n // 交割合约\n this[this.curTab](this.symbol);\n // this.show = true\n console.log('curTab', evt, this.curTab);\n }\n //console.log('下单后更新数据')\n },\n onTab(evt) {\n // 点击tab后的回调\n console.log('evt', evt);\n this.clearTimer();\n // this.clearTimeout()\n this.curTab = evt;\n this[evt](this.symbol);\n },\n fetchQoutes(symbol) {\n // 获取当前行情\n _getHomeList(symbol).then(data => {\n // 获取行情\n this.handleQoutes(data);\n this.startQuoteSocket(); // socket\n });\n },\n handleQoutes(data) {\n if (data && data.length) {\n const cur = data[0];\n this.price = cur.close;\n this.range = cur.change_ratio + '';\n this.quote = cur;\n this.updateKey++;\n }\n },\n fetchDeepData(symbol) {\n console.log('sd');\n _getDeepData(symbol).then(data => {\n // 获取深度\n console.log(data);\n this.handleDeep(data);\n this.startDeepSocket(); // socket\n });\n },\n handleDeep(data) {\n this.deepData = data;\n const {\n asks,\n bids\n } = data;\n this.asks = asks.sort((a, b) => a.price - b.price).slice(0, showLength);\n this.bids = bids.sort((a, b) => a.price - b.price).slice(-showLength);\n },\n startQuoteSocket() {\n // 行情socket\n this.sockets.quotes = new WebSocket(`${WS_URL}/1/${this.symbol}`);\n // socket.onopen = () => {\n // console.log('open')\n // socket.send('hello')\n // }\n this.sockets.quotes.onmessage = evt => {\n const {\n data\n } = evt;\n const {\n code,\n data: _data\n } = JSON.parse(data);\n if (code / 1 === 0) {\n this.handleQoutes(_data);\n }\n };\n },\n startDeepSocket() {\n this.sockets.deep = new WebSocket(`${WS_URL}/3/${this.symbol}`);\n this.sockets.deep.onmessage = evt => {\n const {\n data\n } = evt;\n const {\n code,\n data: _data\n } = JSON.parse(data);\n if (code / 1 === 0) {\n this.handleDeep(_data);\n }\n };\n },\n initParam(symbol, type) {\n // 初始化参数\n if (type === 'open' || type === 'long' || type === 'short' || !type) {\n let initFunTimer = null;\n let initFun = () => {\n _initOpen(symbol).then(data => {\n this.initOpen = data;\n clearTimeout(initFunTimer);\n initFunTimer = null;\n }).catch(err => {\n initFunTimer = setTimeout(() => {\n initFun();\n }, 3000);\n });\n };\n initFun();\n }\n if (type === 'close' || !type) {\n let initFunTimer = null;\n let initFun = () => {\n _initClose(symbol).then(data => {\n this.initClose = data;\n console.log(this.initClose);\n clearTimeout(initFunTimer);\n initFunTimer = null;\n }).catch(err => {\n initFunTimer = setTimeout(() => {\n initFun();\n }, 3000);\n });\n };\n initFunTimer = setTimeout(() => {\n initFun();\n }, 600);\n }\n if (type === 'futrue' || !type) {\n _futrueOrderInit(symbol).then(data => {\n this.initFutrue = data;\n });\n }\n },\n fetchOrderListCur(symbol) {\n // 当前委托\n //console.log('当前委托')\n if (this.userInfo.token) {\n _orderListCur(symbol).then(data => {\n this.orderCur = data;\n });\n this.clearTimer();\n this.timer = setInterval(() => {\n _orderListCur(symbol).then(data => {\n // if (typeof this.timer === 'string') {\n // this.timer = null\n // return\n // }\n this.orderCur = data;\n });\n }, 1000);\n } else {\n this.orderCur = [];\n }\n },\n fetchOrderListHold(symbol) {\n // 当前持仓\n if (this.userInfo.token) {\n _orderListHold(symbol).then(data => {\n // this.orderHold = data\n this.orderHold = data.sort(this.sortData);\n });\n this.timer = setInterval(() => {\n _orderListHold(symbol).then(data => {\n // if (typeof this.timer === 'string') {\n // this.timer = null\n // return\n // }\n // this.orderHold = data\n this.orderHold = data.sort(this.sortData);\n });\n }, 1000);\n } else {\n this.orderHold = [];\n }\n },\n fetchFutrueHoldList(symbol) {\n // 交割持仓\n if (this.userInfo.token) {\n let length = 0;\n _futrueOrderList(symbol).then(data => {\n // this.futrueHold = data\n this.futrueHold = data.sort(this.sortData);\n length = data.length;\n });\n this.timer = setInterval(() => {\n _futrueOrderList(symbol).then(data => {\n // if (typeof this.timer === 'string') {\n // this.timer = null\n // return\n // }\n\n this.futrueHold = data.sort(this.sortData);\n if (length != data.length) {\n length = data.length;\n _futrueOrderInit(symbol).then(dataList => {\n this.initFutrue = dataList;\n });\n }\n });\n }, 1000);\n } else {\n this.futrueHold = [];\n }\n },\n fetchFutrueHistory(symbol) {\n // 交割历史持仓\n _futrueOrderList(symbol, 'hisorders').then(data => {\n this.futrueHistroy = data;\n // this.clearTimeout()\n });\n },\n init(symbol) {\n // 初始化页面\n this.symbol = symbol.toLowerCase();\n this.fetchQoutes(symbol);\n this.fetchDeepData(symbol);\n this.initParam(symbol); // 'open'\n this.clearTimer();\n //if (this.curTab === 'fetchOrderListCur') {\n if (this.curTab === 'fetchOrderListHold') {\n //this.fetchOrderListCur(symbol)\n this.fetchOrderListHold(symbol);\n } else {\n this.fetchFutrueHoldList(symbol);\n }\n },\n closeSocket() {\n this.sockets.quotes && this.sockets.quotes.close();\n this.sockets.deep && this.sockets.deep.close();\n this.sockets.quotes = null;\n this.sockets.deep = null;\n },\n // clearTimeout(noNeed) {\n // clearTimeout(this.timeout)\n // if (noNeed) { // 防止timout定时器因接口返回继续触发\n // this.timeout = ''\n // return\n // }\n // this.timeout = null\n // },\n clearTimer() {\n clearInterval(this.timer);\n // if (isNeed) {\n // this.timer = ''\n // return\n // }\n this.timer = null;\n },\n changeCurrentType(type) {\n this.currentType = type;\n },\n changeValueBack(val) {\n if (val == 0) {\n showLength = 7;\n } else {\n showLength = 13;\n }\n },\n sortData(a, b) {\n return new Date(b.open_time).getTime() - new Date(a.open_time).getTime();\n }\n },\n mounted() {\n let symbol = this.$route.params.symbol;\n let catchSymbol = getStorage('symbol');\n if (!symbol && catchSymbol) {\n symbol = catchSymbol;\n }\n if (this.selectIndex / 1 === 2) {\n this.curTab = 'fetchFutrueHoldList';\n } else {\n this.curTab = 'fetchOrderListHold';\n }\n this.symbol = symbol;\n this.init(symbol);\n },\n activated() {\n let symbol = this.$route.params.symbol;\n let catchSymbol = getStorage('symbol');\n if (!symbol && catchSymbol) {\n symbol = catchSymbol;\n }\n if (this.selectIndex / 1 === 2) {\n this.curTab = 'fetchFutrueHoldList';\n } else {\n this.curTab = 'fetchOrderListHold';\n }\n this.symbol = symbol;\n this.init(symbol);\n },\n // beforeRouteEnter(to, from, next) {\n // let { params: { symbol }, query: { selectIndex } } = to\n // // if(this.$route.query.selectIndex) {\n // // this.selectIndex = this.$route.query.selectIndex\n // // }\n // let catchSymbol = getStorage('symbol')\n // if (!symbol && catchSymbol) {\n // symbol = catchSymbol\n // }\n // if (symbol) {\n // next(vm => {\n // if (selectIndex) {\n // vm.selectIndex = selectIndex\n // if (vm.selectIndex / 1 === 2) {\n // vm.curTab = 'fetchFutrueHoldList'\n // } else {\n // //vm.curTab = 'fetchOrderListCur'\n // vm.curTab = 'fetchOrderListHold'\n // }\n // } else {\n // //vm.curTab = 'fetchOrderListCur'\n // vm.curTab = 'fetchOrderListHold'\n // }\n // vm.symbol = symbol\n // vm.init(symbol)\n // })\n // } else {\n // next()\n // }\n // },\n deactivated() {\n this.closeSocket();\n this.clearTimer();\n },\n activated() {\n this.currentType = this.$route.query.currentType ? this.$route.query.currentType : 'long';\n },\n beforeDestroy() {\n this.closeSocket();\n // this.clearTimeout(true)\n this.clearTimer();\n }\n};","map":{"version":3,"names":["ContractHeader","PerpetualOpen","PerpetualOrder","_getBalance","_getDeepData","_initOpen","_initClose","_orderListCur","_orderListHold","_futrueOrderInit","_futrueOrderList","_getHomeList","mapActions","mapGetters","SET_COIN_LIST","WS_URL","getStorage","KLineCharts","showLength","name","components","_Popup","_Swipe","_SwipeItem","computed","coinList","watch","selectIndex","val","data","initArr","i","push","amount","price","quote","initTimer","keyIndex","timeout","timer","timer1","timer2","balance","symbol","range","stop_price_profit","stop_price_loss","initOpen","initClose","asks","bids","orderCur","orderHold","futrueHold","futrueHistroy","sockets","quotes","deep","curTab","initFutrue","show","animated1","animated2","currentType","showCharts","created","length","then","$store","commit","money","methods","onUpdate","closeSocket","init","onRecall","clearTimer","onTopTab","evt","setTimeout","clearTimeout","console","log","onOrdered","initParam","onTab","fetchQoutes","handleQoutes","startQuoteSocket","cur","close","change_ratio","updateKey","fetchDeepData","handleDeep","startDeepSocket","deepData","sort","a","b","slice","WebSocket","onmessage","code","_data","JSON","parse","type","initFunTimer","initFun","catch","err","fetchOrderListCur","userInfo","token","setInterval","fetchOrderListHold","sortData","fetchFutrueHoldList","dataList","fetchFutrueHistory","toLowerCase","clearInterval","changeCurrentType","changeValueBack","Date","open_time","getTime","mounted","$route","params","catchSymbol","activated","deactivated","query","beforeDestroy"],"sources":["src/page/perpetualContract/index.vue"],"sourcesContent":["<template>\n <div :key=\"symbol\" class=\"pb-108 no_touch\">\n <!-- 头部区 -->\n <ContractHeader v-if=\"symbol === 'wld'\" :symbol=\"'FTB'\" :range=\"range\" :selectIndex=\"selectIndex\" :balance=\"userInfo.balance\"\n @tab=\"onTopTab\" @update-coin=\"onUpdate\">\n </ContractHeader>\n\t\t<ContractHeader v-else-if=\"symbol === 'mln'\" :symbol=\"'DKL'\" :range=\"range\" :selectIndex=\"selectIndex\" :balance=\"userInfo.balance\"\n\t\t @tab=\"onTopTab\" @update-coin=\"onUpdate\">\n\t\t</ContractHeader>\n\t\t<ContractHeader v-else-if=\"symbol === 'qtum'\" :symbol=\"'BQHN'\" :range=\"range\" :selectIndex=\"selectIndex\" :balance=\"userInfo.balance\"\n\t\t @tab=\"onTopTab\" @update-coin=\"onUpdate\">\n\t\t</ContractHeader>\n\t\t<ContractHeader v-else-if=\"symbol === 'knc'\" :symbol=\"'XCM'\" :range=\"range\" :selectIndex=\"selectIndex\" :balance=\"userInfo.balance\"\n\t\t @tab=\"onTopTab\" @update-coin=\"onUpdate\">\n\t\t</ContractHeader>\n\t\t<ContractHeader v-else-if=\"symbol === 'vet'\" :symbol=\"'ACG'\" :range=\"range\" :selectIndex=\"selectIndex\" :balance=\"userInfo.balance\"\n\t\t @tab=\"onTopTab\" @update-coin=\"onUpdate\">\n\t\t</ContractHeader>\n\t\t<ContractHeader v-else :symbol=\"symbol\" :range=\"range\" :selectIndex=\"selectIndex\" :balance=\"userInfo.balance\"\n\t\t @tab=\"onTopTab\" @update-coin=\"onUpdate\">\n\t\t</ContractHeader>\n\n <div :class=\"{ slide2: animated1 }\" v-if=\"selectIndex === 1\">\n <div class=\"mainBackground\" key=\"x\">\n <PerpetualOpen class=\"pl-30 pr-30\" :key=\"keyIndex + 'a'\" :selectIndex=\"selectIndex\" :symbol=\"symbol\"\n :green-data=\"bids\" :red-data=\"asks\" :price=\"price\" :init-open=\"initOpen\" :init-close=\"initClose\"\n :init-futrue=\"initFutrue\" @ordered=\"onOrdered\" :currentType=\"currentType\"\n @changeCurrentType=\"changeCurrentType\" @changeValueBack=\"changeValueBack\">\n </PerpetualOpen>\n <!-- <div class=\"line\"></div> -->\n <PerpetualOrder class=\"pl-30 pr-30\" :key=\"keyIndex + 'b'\" :symbol=\"symbol\" :order-cur=\"orderCur\"\n :order-hold=\"orderHold\" :topIndex=\"selectIndex\" :futrue-hold=\"futrueHold\"\n :futrue-histroy=\"futrueHistroy\" @tab=\"onTab\" @recall=\"onRecall\">\n </PerpetualOrder>\n </div>\n </div>\n <div :class=\"{ slide1: animated2 }\" v-else>\n <div class=\"mainBackground\" key=\"y\">\n <PerpetualOpen class=\"pl-30 pr-30\" :key=\"keyIndex + 'c'\" :selectIndex=\"selectIndex\" :symbol=\"symbol\"\n :green-data=\"bids\" :red-data=\"asks\" :price=\"price\" :init-open=\"initOpen\" :init-close=\"initClose\"\n :init-futrue=\"initFutrue\" @ordered=\"onOrdered\" @changeValueBack=\"changeValueBack\">\n </PerpetualOpen>\n <div class=\"line\"></div>\n <!-- 委托/持仓-->\n <PerpetualOrder class=\"pl-30 pr-30\" :key=\"keyIndex + 'd'\" :symbol=\"symbol\" :order-cur=\"orderCur\"\n :order-hold=\"orderHold\" :price=\"price\" :topIndex=\"selectIndex\" :futrue-hold=\"futrueHold\"\n :futrue-histroy=\"futrueHistroy\" @tab=\"onTab\" @recall=\"onRecall\">\n </PerpetualOrder>\n </div>\n </div>\n <div class=\"fixed w-full shadow z-10 tabBackground1\">\n <div class=\"flex justify-between px-30 py-10\">\n\t\t\t\t<span class=\"font-24 textColor2\"v-if=\"symbol === 'wld'\">FTB/USDT {{ $t('k线图表') }}</span>\n\t\t\t\t<span class=\"font-24 textColor2\"v-else-if=\"symbol === 'mln'\">DKL/USDT {{ $t('k线图表') }}</span>\n\t\t\t\t<span class=\"font-24 textColor2\"v-else-if=\"symbol === 'qtum'\">BQHN/USDT {{ $t('k线图表') }}</span>\n\t\t\t\t<span class=\"font-24 textColor2\"v-else-if=\"symbol === 'knc'\">XCM/USDT {{ $t('k线图表') }}</span>\n\t\t\t\t<span class=\"font-24 textColor2\"v-else-if=\"symbol === 'vet'\">ACG/USDT {{ $t('k线图表') }}</span>\n <span class=\"font-24 textColor2\" v-else>{{ symbol.toUpperCase() }}/USDT {{ $t('k线图表') }}</span>\n <van-icon class=\"textColor\" @click.stop=\"showCharts = !showCharts\"\n :name=\"showCharts ? 'arrow-down' : 'arrow-up'\"></van-icon>\n </div>\n <k-line-charts :update-key=\"updateKey\" :update-data=\"quote\" :symbol=\"symbol\" v-if=\"symbol && showCharts\"\n :showBottom=\"false\" />\n </div>\n </div>\n</template>\n\n<script>\nimport ContractHeader from '@/components/contract-header/index.vue'\nimport PerpetualOpen from '@/components/perpetual-open/index.vue'\nimport PerpetualOrder from '@/components/perpetual-order/index.vue'\n\nimport { _getBalance, _getDeepData, _initOpen, _initClose, _orderListCur, _orderListHold, _futrueOrderInit, _futrueOrderList } from '@/API/trade.api'\nimport { _getHomeList } from '@/API/home.api'\nimport { Popup, Swipe, SwipeItem } from 'vant';\nimport { mapActions, mapGetters } from 'vuex'\nimport { SET_COIN_LIST } from '@/store/const.store'\nimport { WS_URL } from '@/config'\nimport { getStorage } from '@/utils/utis'\nimport KLineCharts from '@/components/kline-charts'\nvar showLength = 7\nexport default {\n name: \"perpetualContract\",\n components: {\n ContractHeader,\n PerpetualOpen,\n PerpetualOrder,\n [Popup.name]: Popup,\n [Swipe.name]: Swipe,\n [SwipeItem.name]: SwipeItem,\n KLineCharts\n },\n computed: {\n ...mapGetters('user', ['userInfo']),\n ...mapGetters({\n coinList: 'home/coinList',\n }),\n },\n watch: {\n selectIndex(val) {\n showLength = 7\n }\n },\n data() {\n const initArr = []\n for (let i = 0; i < showLength; i++) {\n initArr.push({\n amount: '--',\n price: '--'\n })\n }\n return {\n quote: {},\n initTimer: null,\n keyIndex: 0,\n timeout: null,\n timer: null, // 底部持仓等的公用定时器\n timer1: null, // tab切换动画\n timer2: null, // 交割合约底部持仓等的公用定时器\n balance: 0,\n symbol: '',\n price: '',\n range: '',\n\t\t\tstop_price_profit:'',\n\t\t\tstop_price_loss:'',\n initOpen: {},\n initClose: {},\n asks: initArr, // 卖单\n bids: initArr, // 买单\n orderCur: [], // 当前委托\n orderHold: [], // 持有仓位\n futrueHold: [], // 交割持仓\n futrueHistroy: [], // 交割历史\n sockets: {\n quotes: null, // 行情\n deep: null /// 深度\n },\n curTab: '', // 当前委托还是持有仓位\n selectIndex: 1, // 当前tab\n initFutrue: {}, /// 交割合约\n show: false, // popup\n animated1: false,\n animated2: false,\n currentType: '',\n showCharts: false\n // curRequest: [], //\n }\n },\n async created() {\n\n if (!this.coinList.length) {\n await this.SET_COIN_LIST()\n }\n _getBalance().then(data => { // 获取用户余额\n this.$store.commit('user/SET_USERINFO', { balance: data.money })\n // const { money } = data\n // this.balance = money\n })\n },\n methods: {\n ...mapActions('home', [SET_COIN_LIST]),\n onUpdate(symbol) { // 更新\n this.symbol = symbol\n this.closeSocket()\n this.init(symbol)\n },\n onRecall() { // 撤单or 平仓 evt\n this.clearTimer()\n _orderListHold(this.symbol).then(data => {\n\n this.orderHold = data\n })\n this[this.curTab](this.symbol)\n _initOpen(this.symbol).then(data => {\n this.initOpen = data\n })\n },\n onTopTab(evt) { // 当前tab 永续/交割\n this.keyIndex += 1\n this.selectIndex = evt\n this.clearTimer()\n if (this.selectIndex / 1 === 1) {\n //this.curTab = 'fetchOrderListCur'\n this.curTab = 'fetchOrderListHold'\n // this.animated1 = true\n // this.timer = setTimeout(() => {\n // this.animated1 = false\n // clearTimeout(this.timer)\n // }, 200)\n this.animated2 = true\n this.timer1 = setTimeout(() => {\n this.animated2 = false\n clearTimeout(this.timer1)\n }, 200)\n } else {\n // this.animated2 = true\n // this.timer = setTimeout(() => {\n // this.animated2 = false\n // clearTimeout(this.timer)\n // }, 200)\n this.animated1 = true\n this.timer1 = setTimeout(() => {\n this.animated1 = false\n clearTimeout(this.timer1)\n }, 200)\n }\n console.log(this.curTab)\n this[this.curTab](this.symbol)\n },\n onOrdered(evt) { // 下单过后的回调\n this.clearTimer()\n // this.clearTimeout()\n this.initParam(this.symbol, evt) // 重新初始化\n // TODO: 这里要做判断\n if (this.selectIndex / 1 === 1) {\n this[this.curTab](this.symbol) // 重新调取记录\n console.log('this.curTab', this.curTab)\n } else { // 交割合约\n this[this.curTab](this.symbol)\n // this.show = true\n console.log('curTab', evt, this.curTab)\n\n }\n //console.log('下单后更新数据')\n },\n onTab(evt) { // 点击tab后的回调\n console.log('evt', evt)\n this.clearTimer()\n // this.clearTimeout()\n this.curTab = evt\n this[evt](this.symbol)\n },\n fetchQoutes(symbol) { // 获取当前行情\n _getHomeList(symbol).then(data => { // 获取行情\n this.handleQoutes(data)\n this.startQuoteSocket() // socket\n })\n },\n handleQoutes(data) {\n if (data && data.length) {\n const cur = data[0]\n this.price = cur.close\n this.range = cur.change_ratio + ''\n this.quote = cur\n this.updateKey++\n }\n },\n fetchDeepData(symbol) {\n console.log('sd')\n _getDeepData(symbol).then(data => { // 获取深度\n console.log(data)\n this.handleDeep(data)\n this.startDeepSocket() // socket\n })\n },\n handleDeep(data) {\n this.deepData = data\n const { asks, bids } = data\n this.asks = asks.sort((a, b) => a.price - b.price).slice(0, showLength)\n this.bids = bids.sort((a, b) => a.price - b.price).slice(-showLength)\n },\n startQuoteSocket() { // 行情socket\n this.sockets.quotes = new WebSocket(`${WS_URL}/1/${this.symbol}`)\n // socket.onopen = () => {\n // console.log('open')\n // socket.send('hello')\n // }\n this.sockets.quotes.onmessage = (evt) => {\n const { data } = evt\n const { code, data: _data } = JSON.parse(data)\n if (code / 1 === 0) {\n this.handleQoutes(_data)\n }\n }\n },\n startDeepSocket() {\n this.sockets.deep = new WebSocket(`${WS_URL}/3/${this.symbol}`)\n this.sockets.deep.onmessage = (evt) => {\n const { data } = evt\n const { code, data: _data } = JSON.parse(data)\n if (code / 1 === 0) {\n this.handleDeep(_data)\n }\n }\n },\n initParam(symbol, type) { // 初始化参数\n if (type === 'open' || type === 'long' || type === 'short' || !type) {\n let initFunTimer = null;\n let initFun = () => {\n _initOpen(symbol).then(data => {\n this.initOpen = data\n clearTimeout(initFunTimer)\n initFunTimer = null\n }).catch(err => {\n initFunTimer = setTimeout(() => {\n initFun()\n }, 3000);\n })\n }\n initFun()\n }\n if (type === 'close' || !type) {\n let initFunTimer = null;\n let initFun = () => {\n _initClose(symbol).then(data => {\n this.initClose = data\n console.log(this.initClose)\n clearTimeout(initFunTimer)\n initFunTimer = null\n }).catch(err => {\n initFunTimer = setTimeout(() => {\n initFun()\n }, 3000);\n })\n }\n initFunTimer = setTimeout(() => {\n initFun()\n }, 600);\n }\n if (type === 'futrue' || !type) {\n _futrueOrderInit(symbol).then(data => {\n this.initFutrue = data\n })\n }\n },\n fetchOrderListCur(symbol) { // 当前委托\n //console.log('当前委托')\n if (this.userInfo.token) {\n _orderListCur(symbol).then(data => {\n this.orderCur = data\n })\n this.clearTimer()\n this.timer = setInterval(() => {\n _orderListCur(symbol).then(data => {\n // if (typeof this.timer === 'string') {\n // this.timer = null\n // return\n // }\n this.orderCur = data\n })\n }, 1000)\n } else {\n this.orderCur = []\n }\n },\n fetchOrderListHold(symbol) { // 当前持仓\n if (this.userInfo.token) {\n _orderListHold(symbol).then(data => {\n // this.orderHold = data\n this.orderHold = data.sort(this.sortData);\n })\n this.timer = setInterval(() => {\n _orderListHold(symbol).then(data => {\n // if (typeof this.timer === 'string') {\n // this.timer = null\n // return\n // }\n // this.orderHold = data\n this.orderHold = data.sort(this.sortData);\n })\n }, 1000)\n } else {\n this.orderHold = []\n }\n },\n fetchFutrueHoldList(symbol) { // 交割持仓\n if (this.userInfo.token) {\n let length = 0\n _futrueOrderList(symbol).then(data => {\n // this.futrueHold = data\n this.futrueHold = data.sort(this.sortData);\n length = data.length\n })\n this.timer = setInterval(() => {\n _futrueOrderList(symbol).then(data => {\n // if (typeof this.timer === 'string') {\n // this.timer = null\n // return\n // }\n\n this.futrueHold = data.sort(this.sortData);\n if (length != data.length) {\n length = data.length\n _futrueOrderInit(symbol).then(dataList => {\n this.initFutrue = dataList\n })\n }\n })\n }, 1000)\n } else {\n this.futrueHold = []\n }\n },\n fetchFutrueHistory(symbol) { // 交割历史持仓\n _futrueOrderList(symbol, 'hisorders').then(data => {\n this.futrueHistroy = data\n // this.clearTimeout()\n })\n },\n init(symbol) { // 初始化页面\n this.symbol = symbol.toLowerCase()\n this.fetchQoutes(symbol)\n this.fetchDeepData(symbol)\n this.initParam(symbol) // 'open'\n this.clearTimer()\n //if (this.curTab === 'fetchOrderListCur') {\n if (this.curTab === 'fetchOrderListHold') {\n //this.fetchOrderListCur(symbol)\n this.fetchOrderListHold(symbol)\n } else {\n this.fetchFutrueHoldList(symbol)\n }\n },\n closeSocket() {\n this.sockets.quotes && this.sockets.quotes.close()\n this.sockets.deep && this.sockets.deep.close()\n this.sockets.quotes = null\n this.sockets.deep = null\n },\n // clearTimeout(noNeed) {\n // clearTimeout(this.timeout)\n // if (noNeed) { // 防止timout定时器因接口返回继续触发\n // this.timeout = ''\n // return\n // }\n // this.timeout = null\n // },\n clearTimer() {\n clearInterval(this.timer)\n // if (isNeed) {\n // this.timer = ''\n // return\n // }\n this.timer = null\n },\n changeCurrentType(type) {\n this.currentType = type\n },\n changeValueBack(val) {\n if (val == 0) {\n showLength = 7\n } else {\n showLength = 13\n }\n },\n sortData(a, b) {\n return new Date(b.open_time).getTime() - new Date(a.open_time).getTime()\n }\n },\n mounted() {\n let symbol = this.$route.params.symbol\n let catchSymbol = getStorage('symbol')\n if (!symbol && catchSymbol) {\n symbol = catchSymbol\n }\n if (this.selectIndex / 1 === 2) {\n this.curTab = 'fetchFutrueHoldList'\n } else {\n this.curTab = 'fetchOrderListHold'\n }\n this.symbol = symbol\n this.init(symbol)\n },\n activated() {\n let symbol = this.$route.params.symbol\n let catchSymbol = getStorage('symbol')\n if (!symbol && catchSymbol) {\n symbol = catchSymbol\n }\n if (this.selectIndex / 1 === 2) {\n this.curTab = 'fetchFutrueHoldList'\n } else {\n this.curTab = 'fetchOrderListHold'\n }\n this.symbol = symbol\n this.init(symbol)\n },\n // beforeRouteEnter(to, from, next) {\n // let { params: { symbol }, query: { selectIndex } } = to\n // // if(this.$route.query.selectIndex) {\n // // this.selectIndex = this.$route.query.selectIndex\n // // }\n // let catchSymbol = getStorage('symbol')\n // if (!symbol && catchSymbol) {\n // symbol = catchSymbol\n // }\n // if (symbol) {\n // next(vm => {\n // if (selectIndex) {\n // vm.selectIndex = selectIndex\n // if (vm.selectIndex / 1 === 2) {\n // vm.curTab = 'fetchFutrueHoldList'\n // } else {\n // //vm.curTab = 'fetchOrderListCur'\n // vm.curTab = 'fetchOrderListHold'\n // }\n // } else {\n // //vm.curTab = 'fetchOrderListCur'\n // vm.curTab = 'fetchOrderListHold'\n // }\n // vm.symbol = symbol\n // vm.init(symbol)\n // })\n // } else {\n // next()\n // }\n // },\n deactivated() {\n this.closeSocket()\n this.clearTimer()\n },\n activated() {\n this.currentType = this.$route.query.currentType ? this.$route.query.currentType : 'long'\n },\n beforeDestroy() {\n this.closeSocket()\n // this.clearTimeout(true)\n this.clearTimer()\n }\n}\n\n</script>\n\n<style lang=\"scss\" scoped>\n//.list-enter-active, .list-leave-active {\n// transition: all .5s;\n// transform: translateY(30px)\n//}\n//.list-enter, .list-leave-to\n// /* .list-leave-active for below version 2.1.8 */ {\n// transform: translateY(0)\n//}\n.no_touch {\n -webkit-user-select: none;\n user-select: none;\n -ms-user-select: none;\n -moz-user-select: none;\n padding-bottom: 150px !important;\n}\n\n.list-enter-active,\n.list-leave-active {\n will-change: transform;\n transition: all 250ms;\n}\n\n.list-enter {\n opacity: 0;\n transform: translate3d(-100%, 0, 0);\n}\n\n.list-leave {\n opacity: 0;\n transform: translate3d(100%, 0, 0);\n}\n\n.rounded-view {\n border-top-left-radius: 20px;\n border-top-right-radius: 20px;\n box-sizing: border-box;\n}\n\n.my-swipe {\n width: 100%;\n}\n\n.my-swipe .van-swipe-item {}\n\n.line {\n height: 13px;\n\n @include themify() {\n background: themed(\"tab_background\");\n }\n}\n\n@keyframes animate1 {\n 0% {\n opacity: 1;\n transform: translate3d(100%, 0, 0);\n }\n\n // 40% {\n // opacity: 1;\n // transform: translate3d(50%, 0, 0);\n // }\n 100% {\n opacity: 1;\n transform: translate3d(0%, 0, 0);\n }\n}\n\n@keyframes animate2 {\n 0% {\n opacity: 1;\n transform: translate3d(-100%, 0, 0);\n }\n\n // 40% {\n // opacity: 1;\n // transform: translate3d(50%, 0, 0);\n // }\n 100% {\n opacity: 1;\n transform: translate3d(0%, 0, 0);\n }\n}\n\n.slide1 {\n animation: animate1 200ms linear;\n}\n\n.slide2 {\n animation: animate2 200ms linear;\n}\n\n.line {\n @include themify() {\n background: themed(\"divi_line\");\n }\n}\n\n::v-deep .contract-header {\n @include themify() {\n background: themed(\"main_background\");\n }\n}\n\n.tabBackground1 {\n @include themify() {\n border: 1px solid themed(\"border_color1\");\n }\n}\n\n.shadow {\n bottom: 108px;\n box-sizing: border-box;\n}\n</style>\n"],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
|