{"ast":null,"code":"import \"vant/es/action-sheet/style\";\nimport _ActionSheet from \"vant/es/action-sheet\";\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//\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//\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//\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//\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//\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//\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 config from \"@/config\";\nimport { mapGetters } from \"vuex\";\n// import VueSlider from \"vue-slider-component\";\nimport AmountSlider from \"./amountSlider.vue\";\nimport \"vue-slider-component/theme/default.css\";\nimport { _orderOpen, _orderClose, _futrueOrder, _futrueOrderDetail, _getBalance, _futrueOrderInit } from \"@/API/trade.api\";\nimport ContractFutrue from \"@/components/contract-futrue\";\nimport PopupDelivery from \"@/components/popup-delivery\";\nimport { fixDate } from \"@/utils/utis\";\nimport { _getHomeList } from \"@/API/home.api\";\nimport { getStorage } from \"@/utils/utis\";\n// import PopupConfirmOrder from '@/components/popup-confirm-order'\nexport default {\n name: \"perpetualPosition\",\n components: {\n // VueSlider,\n AmountSlider,\n ContractFutrue,\n [_Popup.name]: _Popup,\n PopupDelivery,\n [_ActionSheet.name]: _ActionSheet\n // PopupConfirmOrder\n },\n props: {\n greenData: {\n // 买单\n type: Array,\n default() {\n return [];\n }\n },\n redData: {\n // 卖单\n type: Array,\n default() {\n return [];\n }\n },\n symbol: {\n type: String,\n default: \"\"\n },\n price: {\n type: [Number, String],\n default: \"0.00\"\n },\n initOpen: {\n type: Object,\n default() {\n return {};\n }\n },\n initClose: {\n type: Object,\n default() {\n return {};\n }\n },\n initFutrue: {\n type: Object,\n default() {\n return {};\n }\n },\n selectIndex: {\n type: [String, Number],\n default: 1\n },\n currentType: {\n type: String,\n default: \"long\"\n }\n },\n watch: {\n price(val) {\n if (this.type === \"1\") {\n // !this.focus &&\n this.form.price = val;\n }\n this.form.para_id = this.initFutrue.para && this.initFutrue.para[this.paraIndex].para_id; // 不优雅,不可靠\n // this.form.symbol = this.symbol.toLowerCase()\n },\n initOpen: {\n // 处理滚动条初始值\n deep: true,\n handler(val) {\n this.handleInitSliderOption();\n }\n },\n initClose: {\n // 处理滚动条初始值\n deep: true,\n handler(newVal, oldVal) {\n if (newVal.amount / 1 > 0) {\n this.handleInitSliderOption(true);\n }\n }\n },\n symbol(val) {\n this.getHomeList(val);\n },\n greenData(val) {\n if (this.dataArrValue >= 1) {\n this.greenData.map(item => {\n item.price = parseFloat(item.price).toFixed(this.dataArrValue);\n });\n this.redData.map(item => {\n item.price = parseFloat(item.price).toFixed(this.dataArrValue);\n });\n } else {\n if (this.dataArrValue == -1) {\n this.greenData.map(item => {\n item.price = item.price.substring(0, item.price.indexOf(\".\"));\n });\n this.redData.map(item => {\n item.price = item.price.substring(0, item.price.indexOf(\".\"));\n });\n }\n if (this.dataArrValue == -2) {\n this.greenData.map(item => {\n item.price = item.price.substring(0, item.price.indexOf(\".\") - 1) + \"0\";\n });\n this.redData.map(item => {\n item.price = item.price.substring(0, item.price.indexOf(\".\") - 1) + \"0\";\n });\n }\n if (this.dataArrValue == -3) {\n this.greenData.map(item => {\n item.price = item.price.substring(0, item.price.indexOf(\".\") - 2) + \"00\";\n });\n this.redData.map(item => {\n item.price = item.price.substring(0, item.price.indexOf(\".\") - 2) + \"00\";\n });\n }\n }\n this.approximately = this.redData[0].price;\n }\n },\n mounted() {\n this.getHomeList(this.$route.params.symbol);\n setInterval(() => {\n // 刷新页面\n if (location.href.indexOf(\"#reloaded\") == -1 && location.href.indexOf(\"perpetualContract\") > 0) {\n location.href = location.href + \"#reloaded\";\n location.reload();\n }\n }, 1000); // 1000毫秒 = 1秒\n },\n computed: {\n ...mapGetters({\n userInfo: \"user/userInfo\",\n theme: \"home/theme\"\n }),\n initData() {\n let obj = null;\n if (this.selectIndex / 1 === 1) {\n obj = this.initOpen;\n if (!obj.lever || !obj.lever.length) {\n // 倍数\n obj.lever = [{\n id: 1,\n lever_rate: 1\n }];\n }\n return obj;\n }\n return this.initFutrue;\n },\n coudBuyVolume() {\n // 可买数量\n return Math.floor(this.initOpen.volume / 1 / this.form.lever_rate);\n }\n },\n filters: {\n nan(val) {\n return isNaN(val) ? \"--\" : val;\n }\n },\n data() {\n return {\n fixDate,\n currentBuyType: \"\",\n // 交割合约当前下单的类型,用于弹窗倒计时结束以后,点击再下一单\n timeout2: null,\n timeout: null,\n detailData: {},\n // 交割合约订单详情数据\n show: false,\n popType: \"confirm\",\n // 弹框类型 confirm / counting\n showOptions: false,\n options: config.sliderOptions,\n value: 0,\n isShow: false,\n title: this.$t(\"市价\"),\n paraIndex: 0,\n selectData: [{\n title: this.$t(\"市价\"),\n type: \"1\"\n }, {\n title: this.$t(\"限价\"),\n type: \"2\"\n }],\n form: {\n symbol: \"\",\n // 币种\n session_token: \"\",\n direction: \"buy\",\n // 买or卖\n price_type: \"opponent\",\n // 市价or限价\n lever_rate: 1,\n // 杠杆\n stop_price_profit: \"\",\n stop_price_loss: \"\",\n price: \"\",\n amount: \"\",\n // 数量\n para_id: \"\" // 交割周琦id\n },\n focus: false,\n type: \"1\",\n //选中市价或限价类型\n // currentType:\"open\", //开仓类型\n // action: _orderOpen // 开仓or\n isShow: false,\n selectDataArry: [],\n isSelectShow: false,\n actions: [{\n name: this.$t(\"默认\"),\n value: 0,\n className: \"actions-active\"\n }, {\n name: this.$t(\"展示买单\"),\n value: 1,\n className: \"\"\n }, {\n name: this.$t(\"展示卖单\"),\n value: 2,\n className: \"\"\n }],\n showType: 0,\n dataArrTitle: 0,\n dataArrValue: 0,\n arryIsShow: false,\n marks: val => val % 50 === 0,\n approximately: \"\"\n };\n },\n beforeDestroy() {\n this.clearTimeout();\n },\n activated() {\n this.selectData = [{\n title: this.$t(\"市价\"),\n type: \"1\"\n }, {\n title: this.$t(\"限价\"),\n type: \"2\"\n }];\n this.title = this.selectData[0].title;\n this.type = this.selectData[0].type;\n },\n methods: {\n //获取张数\n getAmount(val) {\n this.form.amount = val;\n },\n // 获取张数,数据转换\n getVolumnByLever() {\n let vol;\n vol = this.initOpen.volume / 1;\n return Math.floor(vol);\n },\n getHomeList(symbol) {\n _getHomeList(symbol).then(res => {\n let numberText = res[0].close;\n let numberLength = numberText.substring(numberText.indexOf(\".\") + 1, numberText.length).length;\n let arry = [];\n let str = \"0.\";\n for (let j = 0; j < numberLength - 1; j++) {\n str = str + \"0\";\n arry.push(str);\n }\n let newArry = [];\n arry.map(item => {\n let obj = {\n name: item + \"1\",\n value: item.substring(item.indexOf(\".\") + 1, item.length).length + 1\n };\n newArry.push(obj);\n });\n if (numberLength <= 2) {\n let obj = [{\n name: \"0.1\",\n value: 1\n }, {\n name: \"1\",\n value: -1\n }, {\n name: \"10\",\n value: -2\n }\n // {\n // name: '100',\n // value: -3,\n // }\n ];\n let arryItem = {\n name: \"100\",\n value: -3\n };\n if (numberText.substring(0, numberText.indexOf(\".\")).length > 2) {\n obj.push(arryItem);\n }\n newArry = newArry.concat(obj);\n }\n if (this.symbol == \"shib\") {\n newArry = newArry.slice(-4);\n }\n let dataObj = {\n arry: newArry,\n numberLength: numberLength\n };\n this.selectDataArry = dataObj.arry;\n if (numberLength >= 2) {\n this.dataArrTitle = this.selectDataArry[0].name;\n } else {\n this.dataArrTitle = this.selectDataArry[this.selectDataArry.length - 1].name;\n }\n });\n },\n continueTobuy(detailData) {\n this.show = false;\n setTimeout(() => {\n this.$router.push(`/trendDetails/${detailData.symbol}?direction=${detailData.direction}`);\n }, 300);\n },\n onQuickPrice(price) {\n // 点击金额变化\n if (this.type === \"2\") {\n this.form.price = price;\n }\n },\n clearTimeout() {\n clearTimeout(this.timeout);\n this.timeout = null;\n },\n handleTimeEnd(order) {\n if (this.selectIndex / 1 === 2) {\n // 交割合约需要弹出详情框\n _futrueOrderDetail(order).then(data => {\n this.clearTimeout();\n this.detailData = data;\n if (data.state !== \"created\") {\n this.timeout = setTimeout(() => {\n this.handleTimeEnd(order);\n }, 1000);\n }\n });\n }\n },\n handleInitSliderOption(amount) {\n if (!amount) {\n // 金额是否需要变动\n this.form.amount = \"\";\n }\n console.log(this.initOpen.volume, this.form.lever_rate);\n let vol;\n vol = this.initOpen.volume / 1;\n this.options.max = Math.floor(vol);\n console.log(\"this.options.max\", this.options.max);\n if (this.options.max > 0) {\n this.options.disabled = false;\n } else {\n this.options.disabled = true;\n }\n },\n handleChoose(item) {\n this.showOptions = !this.showOptions;\n this.form.lever_rate = item.lever_rate;\n console.log(\"handleChoose\");\n this.handleInitSliderOption();\n },\n onAdd() {\n // +\n if (this.options.max === 0) {\n return;\n }\n if (this.form.amount === this.options.max) {\n return;\n }\n console.log(this.options.max);\n this.form.amount++;\n },\n onReduce() {\n // -\n if (this.form.amount > 1) {\n this.form.amount--;\n }\n },\n jump() {\n this.$router.push(`/trendDetails/${this.symbol}`);\n },\n onParaId({\n id,\n index\n }) {\n // 交割日期\n // console.log(evt)\n this.form.para_id = id;\n this.form.amount = \"\";\n this.paraIndex = index;\n },\n onInput() {\n // 数量变化\n // console.log(1111111, this.form.amount, this.selectIndex)\n if (this.selectIndex == 1 && this.options.max == 0) {\n this.form.amount = this.form.amount / 1;\n } else if (this.selectIndex == 1 && this.form.amount / 1 > this.options.max / 1) {\n this.form.amount = this.options.max / 1;\n }\n if (this.selectIndex / 1 === 1) {\n this.$refs.sliderRef.amountChange(this.form.amount);\n }\n },\n //价格类型下拉框切换\n selectBtn() {\n this.isShow = !this.isShow;\n },\n //选择价格类型\n selectItem(item) {\n if (item.type == 1) {\n this.form.price = this.price;\n }\n this.form.price_type = item.type === \"1\" ? \"opponent\" : \"limit\";\n this.title = item.title;\n this.type = item.type;\n this.isShow = false;\n },\n //选择开仓类型\n changeTab(type) {\n // 开仓和\n console.log(\"changeTab\", type);\n if (this.currentType === type) {\n return;\n }\n this.$emit(\"changeCurrentType\", type);\n // this.currentType = type;\n\n this.$refs.sliderRef.emptyValue();\n this.handleInitSliderOption();\n },\n onClose() {\n // 关闭\n this.show = false;\n setTimeout(() => {\n this.popType = \"confirm\";\n }, 500);\n },\n // onOrderConfirm() {\n // /// 交割合约确认\n // this.show = false;\n // this.popType = \"counting\";\n // this.order(this.form.direction === \"buy\" ? \"open\" : \"close\");\n // },\n order(type) {\n if (!this.userInfo.token) {\n this.$router.push(\"/login\");\n return false;\n }\n // if (!this.form.stop_price_profit) {\n // \tthis.$toast.fail(this.$t(\"请输入止盈金额\"));\n // \t return false;\n // \t}\n // if (!this.form.stop_price_loss) {\n // \tthis.$toast.fail(this.$t(\"请输入止损金额\"));\n // \t return false;\n // \t}\n if (!this.form.amount) {\n if (this.selectIndex == 1) {\n this.$toast.fail(this.$t(\"请输入合约张数\"));\n } else {\n this.$toast.fail(this.$t(\"请输入金额\"));\n }\n return;\n }\n\n // this.form.direction = type\n this.form.symbol = this.$route.params.symbol;\n if (type == \"long\" || type == \"open\") {\n this.form.direction = \"buy\";\n } else {\n this.form.direction = \"sell\";\n }\n let _order = null; // api\n let emitFunc = null; // 触发函数\n if (this.selectIndex / 1 === 1) {\n // 永续合约\n this.form.session_token = this.initOpen.session_token;\n _order = _orderOpen;\n emitFunc = this.currentType;\n this.openOrder(_order, emitFunc);\n } else {\n // 交割合约\n this.form.session_token = this.initFutrue.session_token;\n _order = _futrueOrder;\n emitFunc = \"futrue\";\n if (this.initFutrue.session_token == undefined || this.initFutrue.session_token == \"\") {\n _futrueOrderInit(this.symbol).then(data => {\n this.form.session_token = data.session_token;\n this.openOrder(_order, emitFunc);\n }).catch(err => {\n if (err.code == \"ECONNABORTED\") {\n this.$toast(this.$t(\"网络超时!\"));\n } else if (err.msg != undefined) {\n this.$toast(this.$t(err.msg));\n }\n });\n } else {\n this.form.session_token = this.initFutrue.session_token;\n this.openOrder(_order, emitFunc);\n }\n }\n },\n openOrder(_order, emitFunc) {\n _order(this.form).then(res => {\n if (this.selectIndex / 1 === 1) {\n this.$refs.sliderRef.emptyValue();\n }\n this.$toast(this.$t(\"操作成功\"));\n _getBalance().then(data => {\n // 刷新余额\n this.$store.commit(\"user/SET_USERINFO\", {\n balance: data.money\n });\n });\n this.$emit(\"ordered\", emitFunc);\n if (this.selectIndex / 1 === 2) {\n // 交割合约需要弹出详情框\n _futrueOrderDetail(res.order_no).then(data => {\n this.detailData = data;\n this.show = true;\n });\n }\n }).catch(() => {\n // 也需要重新初始化\n this.$emit(\"ordered\", emitFunc);\n if (this.selectIndex / 1 === 1) {\n this.$refs.sliderRef.emptyValue();\n }\n });\n },\n //价格类型下拉框切换\n selectBtn() {\n this.isShow = !this.isShow;\n },\n selectArryBtn() {\n this.arryIsShow = !this.arryIsShow;\n },\n onSelect(item) {\n this.actions.map(item => {\n item.className = \"\";\n });\n item.className = \"actions-active\";\n this.showType = item.value;\n this.$emit(\"changeValueBack\", this.showType);\n },\n onCancel() {\n this.isSelectShow = false;\n },\n selectItemArry(item) {\n this.dataArrValue = item.value;\n this.arryIsShow = false;\n this.dataArrTitle = item.name;\n }\n }\n};","map":{"version":3,"names":["config","mapGetters","AmountSlider","_orderOpen","_orderClose","_futrueOrder","_futrueOrderDetail","_getBalance","_futrueOrderInit","ContractFutrue","PopupDelivery","fixDate","_getHomeList","getStorage","name","components","_Popup","_ActionSheet","props","greenData","type","Array","default","redData","symbol","String","price","Number","initOpen","Object","initClose","initFutrue","selectIndex","currentType","watch","val","form","para_id","para","paraIndex","deep","handler","handleInitSliderOption","newVal","oldVal","amount","getHomeList","dataArrValue","map","item","parseFloat","toFixed","substring","indexOf","approximately","mounted","$route","params","setInterval","location","href","reload","computed","userInfo","theme","initData","obj","lever","length","id","lever_rate","coudBuyVolume","Math","floor","volume","filters","nan","isNaN","data","currentBuyType","timeout2","timeout","detailData","show","popType","showOptions","options","sliderOptions","value","isShow","title","$t","selectData","session_token","direction","price_type","stop_price_profit","stop_price_loss","focus","selectDataArry","isSelectShow","actions","className","showType","dataArrTitle","arryIsShow","marks","beforeDestroy","clearTimeout","activated","methods","getAmount","getVolumnByLever","vol","then","res","numberText","close","numberLength","arry","str","j","push","newArry","arryItem","concat","slice","dataObj","continueTobuy","setTimeout","$router","onQuickPrice","handleTimeEnd","order","state","console","log","max","disabled","handleChoose","onAdd","onReduce","jump","onParaId","index","onInput","$refs","sliderRef","amountChange","selectBtn","selectItem","changeTab","$emit","emptyValue","onClose","token","$toast","fail","_order","emitFunc","openOrder","undefined","catch","err","code","msg","$store","commit","balance","money","order_no","selectArryBtn","onSelect","onCancel","selectItemArry"],"sources":["src/components/perpetual-open/index.vue"],"sourcesContent":["<template>\n <!-- 永续合约开仓页 -->\n <div class=\"perpetual-open\">\n <!-- 隐藏杠杠 全仓 k 线图入口 -->\n <!-- <div class=\"flex header-open\">\n <div class=\"flex flex-1 pt-34\">\n <div class=\"w-180 h-60 lh-60 text-center rounded inputBackground textColor\">\n {{ $t(\"全仓\") }}\n </div>\n <div class=\"w-140 h-60 lh-60 ml-29 rounded tabBackground textColor\" v-if=\"selectIndex / 1 === 1\">\n <div @click=\"showOptions = !showOptions\" style=\"height: 100%; box-sizing: border-box\"\n class=\"relative word-30 pl-28 pr-10 w-140 h-60 select-wrap flex justify-between items-center\">\n {{ form.lever_rate }}x\n <img src=\"../../assets/image/public/grey-select.png\" alt=\"select-icon\" class=\"w-22 h-11\" />\n <div v-if=\"showOptions\" class=\"options w-140 absolute top-97 left-0 z-10\">\n <div class=\"w-full\" @click.stop=\"handleChoose(item)\" :class=\"{\n 'option-active': form.lever_rate === item.lever_rate,\n }\" :value=\"item.lever_rate\" v-for=\"item in initData.lever\" :key=\"item.id\">\n {{ item.lever_rate }}x\n </div>\n </div>\n </div>\n </div>\n </div>\n <div>\n <img src=\"../../assets/image/public/k-line.png\" alt=\"line-img\" class=\"w-38 h-35\" @click=\"jump\" />\n </div>\n </div> -->\n <div class=\"pt-30 pb-20\">\n <div class=\"flex\">\n <div class=\"mr-30\">\n <div class=\"w-290 flex justify-between text-grey font-22\">\n <div>\n <div>{{ $t(\"价格\") }}</div>\n <div class=\"mt-4\">(USDT)</div>\n </div>\n <div class=\"text-right items-end justify-end\">\n <div class=\"\">{{ $t(\"数量\") }}</div>\n <div class=\"mt-4\">({{ symbol.toUpperCase() || \"--\" }})</div>\n </div>\n </div>\n <div\n v-if=\"showType == 0 || showType == 1\"\n class=\"w-290 flex justify-between pt-12 font-26\"\n v-for=\"(item, index) in greenData\"\n :key=\"index\"\n @click=\"onQuickPrice(item.price)\"\n :style=\"{\n background:\n `linear-gradient(to right,${\n theme == 'dark' ? '#121212' : '#ffffff'\n } 0%` +\n (1 - item.amount / greenData[greenData.length - 1].amount) *\n 100 +\n '%,rgba(94,186,137,.1) ' +\n (1 - item.amount / greenData[greenData.length - 1].amount) *\n 100 +\n '%,rgba(94,186,137,.1) 100%)',\n }\"\n >\n <div class=\"text-green\">{{ item.price }}</div>\n <div class=\"text-right textColor\" v-if=\"symbol == 'shib'\">\n {{ fixDate(item.amount, $i18n) || \"--\" }}\n </div>\n <div class=\"text-right textColor\" v-else>\n {{ item.amount || \"--\" }}\n </div>\n </div>\n <div\n v-if=\"showType == 0 || showType == 1 || showType == 2\"\n class=\"w-290 text-red pt-12 font-34 font-700 text-center\"\n >\n {{ approximately || \"--\" }}\n </div>\n <div\n v-if=\"showType == 0 || showType == 1 || showType == 2\"\n class=\"approximately-text pb-12 font-20 text-center\"\n >\n ≈ {{ price || \"--\" }}\n </div>\n <div\n v-if=\"showType == 0 || showType == 2\"\n class=\"w-290 flex justify-between pt-12 font-26\"\n v-for=\"(item, index) in redData\"\n :key=\"item + index\"\n @click=\"onQuickPrice(item.price)\"\n :style=\"{\n background:\n `linear-gradient(to right,${\n theme == 'dark' ? '#121212' : '#ffffff'\n } 0%` +\n (1 - item.amount / greenData[greenData.length - 1].amount) *\n 100 +\n '%,rgba(246,70,93,.1) ' +\n (1 - item.amount / greenData[greenData.length - 1].amount) *\n 100 +\n '%,rgba(246,70,93,.1) 100%)',\n }\"\n >\n <div class=\"text-red\">{{ item.price }}</div>\n <div class=\"text-right textColor\" v-if=\"symbol == 'shib'\">\n {{ fixDate(item.amount, $i18n) || \"--\" }}\n </div>\n <div class=\"text-right textColor\" v-else>\n {{ item.amount || \"--\" }}\n </div>\n </div>\n <div class=\"flex k-select-box\">\n <div class=\"mt-30 mb-30 select-box\" style=\"position: relative\">\n <div\n class=\"flex justify-between items-center w-full h-70\"\n @click=\"selectArryBtn\"\n >\n <!-- <img src=\"@/assets/image/public/warn.png\" alt=\"warn-icon\" class=\"w-25 h-25 pl-20\"/> -->\n <div class=\"pl-16 textColor\" style=\"width: 80%\">\n {{ dataArrTitle }}\n </div>\n <img\n src=\"@/assets/image/public/grey-select.png\"\n alt=\"select-icon\"\n class=\"w-22 h-11 pr-20\"\n />\n </div>\n <div class=\"option-box\" v-show=\"arryIsShow\">\n <div\n class=\"font-30\"\n v-for=\"(item, index) in selectDataArry\"\n :key=\"index\"\n @click=\"selectItemArry(item)\"\n >\n {{ item.name }}\n </div>\n </div>\n </div>\n <div @click=\"isSelectShow = true\">\n <img\n src=\"@/assets/image/selectIcon.png\"\n alt=\"warn-icon\"\n class=\"w-36 h-30\"\n />\n </div>\n </div>\n </div>\n <div class=\"w-440 flex flex-col\">\n <template v-if=\"selectIndex == 1\">\n <div class=\"flex items-center h-66 rounded-lg text-grey\">\n <p\n class=\"font-28 flex-1 flex items-center justify-center h-66 long\"\n :class=\"currentType == 'long' ? 'long' : ''\"\n @click=\"changeTab('long')\"\n >\n {{ $t(\"开多\") }}\n </p>\n <p\n class=\"font-28 flex-1 ml-20 flex items-center justify-center h-66 short\"\n :class=\"currentType == 'short' ? 'short' : ''\"\n @click=\"changeTab('short')\"\n >\n {{ $t(\"开空\") }}\n </p>\n </div>\n <div class=\"mt-30 mb-30\" style=\"position: relative\">\n <div\n class=\"box-show flex justify-between items-center w-full h-76 rounded-lg textColor\"\n @click=\"selectBtn\"\n >\n <img\n src=\"../../assets/image/public/warn.png\"\n alt=\"warn-icon\"\n class=\"w-25 h-25 pl-20\"\n />\n <div class=\"text-center\" style=\"width: 80%\">{{ title }}</div>\n <img\n src=\"../../assets/image/public/grey-select.png\"\n alt=\"select-icon\"\n class=\"w-22 h-11 pr-20\"\n />\n </div>\n <div class=\"option-box\" v-show=\"isShow\">\n <div\n class=\"font-30\"\n v-for=\"item in selectData\"\n :key=\"item.type\"\n @click=\"selectItem(item)\"\n >\n {{ item.title }}\n </div>\n </div>\n </div>\n </template>\n <contract-futrue\n v-if=\"selectIndex == 2\"\n class=\"mb-20 \"\n :initFutrue=\"initFutrue\"\n @paraId=\"onParaId\"\n />\n <div\n class=\"h-76 lh-76 mb-30 flex pr-20 justify-center rounded-lg textColor\"\n v-if=\"selectIndex == 1\"\n >\n <input\n placeholder=\"\"\n class=\"w-full pl-20 h-76 border-none text-left rounded-lg\"\n :disabled=\"type / 1 === 1\"\n @focus=\"focus = true\"\n v-model=\"form.price\"\n />\n <span class=\"ml-20\">USDT</span>\n </div>\n <!-- <div\n class=\"h-76 lh-76 inputBackground mb-30 flex pr-20 justify-center rounded-lg textColor\"\n v-if=\"selectIndex == 1\"\n >\n <input\n :placeholder=\"selectIndex == 1 ? $t('请输入止盈金额') : ''\"\n class=\"inputBackground pl-20 h-76 border-none text-left rounded-lg\"\n v-model=\"form.stop_price_profit\"\n />\n <span class=\"font-22 font-400 textColor\">{{ $t(\"止盈\") }}</span>\n </div> -->\n <!-- <div\n class=\"h-76 lh-76 inputBackground mb-30 flex pr-20 justify-center rounded-lg textColor\"\n v-if=\"selectIndex == 1\"\n >\n <input\n :placeholder=\"selectIndex == 1 ? $t('请输入止损金额') : ''\"\n class=\"inputBackground pl-20 h-76 border-none text-left rounded-lg\"\n v-model=\"form.stop_price_loss\"\n />\n <span class=\"font-22 font-400 textColor\">{{ $t(\"止损\") }}</span>\n </div> -->\n <div\n class=\"w-440 flex items-center inputBackground h-76 lh-76 rounded-lg\"\n >\n <div\n v-if=\"selectIndex == 1\"\n class=\"w-80 flex items-center justify-center\"\n style=\"height: 100%\"\n @click=\"onReduce\"\n >\n <img\n src=\"../../assets/image/public/reduce.png\"\n alt=\"add\"\n class=\"w-30 h-6\"\n />\n </div>\n <input\n :placeholder=\"\n selectIndex == 1\n ? $t('张数')\n : $t('最少') + initFutrue && initFutrue.para\n ? $t('最小金额') + initFutrue.para[paraIndex].buy_min\n : ''\n \"\n class=\"border-none inputBackground text-center textColor\"\n style=\"width: 156px\"\n v-model=\"form.amount\"\n type=\"number\"\n @input=\"onInput\"\n />\n <div\n class=\"w-80 flex items-center justify-center\"\n style=\"height: 100%\"\n >\n <template v-if=\"selectIndex == 1\">\n <img\n @click=\"onAdd\"\n src=\"../../assets/image/public/add.png\"\n alt=\"reduce\"\n class=\"w-30 h-30\"\n />\n </template>\n <template v-else>\n <span class=\"textColor\">USDT</span>\n </template>\n </div>\n </div>\n <template v-if=\"selectIndex == 1\">\n <div class=\"mt-40 mb-30 w-full flex justify-between items-center\">\n <span class=\"font-22 font-400 text-grey\">{{\n $t(\"可开张数\")\n }}</span>\n <span class=\"font-22 font-400 textColor\">\n {{ initData.volume }}\n {{ $t(\"张\") }}\n </span>\n </div>\n <!-- <vue-slider v-bind=\"options\" v-model=\"form.amount\"></vue-slider> -->\n <!-- <vue-slider class=\"mainBox\" v-bind=\"options\" :marks=\"marks\" v-model=\"form.volume\" :hide-label=\"true\" width=\"90%\"\n :railStyle=\"{ background: '#404040', height: '4px' }\"\n :processStyle=\"{ background: '#266BFF', height: '4px' }\">\n <template v-slot:step=\"{ active }\">\n <div :class=\"['custom-step', { active }]\"></div>\n </template>\n </vue-slider>\n <div style=\"color: #868D9A\" class=\"mt-36 font-24 w-full flex justify-between items-center\">\n <span class=\"flex-1 text-left\">0%</span>\n <span class=\"flex-1 text-left\">25%</span>\n <span class=\"flex-1 text-center\">50%</span>\n <span class=\"flex-1 text-right\">75%</span>\n <span class=\"flex-1 text-right\">100%</span>\n </div> -->\n <!-- 张数输入 -->\n <amount-slider\n ref=\"sliderRef\"\n :maxAmount=\"getVolumnByLever()\"\n @getAmount=\"getAmount\"\n ></amount-slider>\n </template>\n <template v-if=\"selectIndex == 1 && userInfo.token\">\n <div class=\"flex justify-between mt-30\">\n <div class=\"text-grey\">{{ $t(\"合约金额\") }}</div>\n <div class=\"textColor\">\n {{ initData.amount * (form.amount / 1) * form.lever_rate }} USDT\n </div>\n </div>\n <div class=\"flex justify-between mt-30\">\n <div class=\"text-grey\">{{ $t(\"保证金\") }}</div>\n <div class=\"textColor\">\n {{ (initData.amount * (form.amount / 1)) | nan }} USDT\n </div>\n </div>\n <div class=\"flex justify-between mt-30\">\n <div class=\"text-grey\">{{ $t(\"建仓手续费\") }}</div>\n <div class=\"textColor\">\n {{\n userInfo.perpetual_contracts_status === \"1\"\n ? initData.fee * (form.amount / 1)\n : (initData.fee * (form.amount / 1) * form.lever_rate) | nan\n }}\n USDT\n </div>\n </div>\n </template>\n <div\n class=\"flex font-24 text-grey justify-between mt-32\"\n v-if=\"selectIndex == 2\"\n >\n <div>{{ $t(\"可用USDT\") }}</div>\n <div class=\"textColor\">{{ initFutrue.amount | nan }} USDT</div>\n </div>\n <div\n class=\"flex font-24 text-grey justify-between mt-20\"\n v-if=\"selectIndex == 2\"\n >\n <div>{{ $t(\"手续费\") }}</div>\n <div class=\"textColor\">\n {{\n (\n form.amount *\n (initFutrue && initFutrue.para\n ? initData.para[paraIndex].unit_fee\n : \"\")\n ).toFixed(2) | nan\n }}\n USDT\n </div>\n </div>\n <template v-if=\"userInfo.token\">\n <template v-if=\"selectIndex == 1\">\n <div\n class=\"w-full h-80 lh-80 bg-green flex text-white rounded-md mt-50\"\n v-if=\"currentType == 'long'\"\n @click=\"order('long')\"\n >\n <div\n class=\"font-34 relative text-center\"\n style=\"flex-grow: 1\"\n v-if=\"selectIndex == 1\"\n >\n {{ $t(\"开多\") }}\n <span class=\"right-word font-22 text-center\">{{\n $t(\"看涨\")\n }}</span>\n </div>\n <div\n class=\"font-34 relative text-center\"\n style=\"flex-grow: 1\"\n v-else\n >\n {{ $t(\"做多买入\") }}\n </div>\n </div>\n <div\n class=\"w-full h-80 lh-80 bg-red flex text-white rounded-md mt-50\"\n v-if=\"currentType == 'short'\"\n @click=\"order('short')\"\n >\n <div\n class=\"relative font-34 text-center\"\n style=\"flex-grow: 1\"\n v-if=\"selectIndex == 1\"\n >\n {{ $t(\"开空\") }}\n <span class=\"right-word font-22 text-center\">{{\n $t(\"看跌\")\n }}</span>\n </div>\n <div\n class=\"relative font-34 text-center\"\n style=\"flex-grow: 1\"\n v-else\n >\n {{ $t(\"做空买入\") }}\n </div>\n </div>\n </template>\n <template v-if=\"selectIndex == 2\">\n <div\n class=\"w-full h-80 lh-80 bg-green flex text-white rounded-md mt-30\"\n @click=\"order('open')\"\n v-if=\"userInfo.token\"\n >\n <div class=\"font-34 relative text-center\" style=\"flex-grow: 1\">\n {{ $t(\"开多\") }}\n <span class=\"right-word font-22 text-center\">{{\n $t(\"看涨\")\n }}</span>\n </div>\n </div>\n <div\n class=\"w-full h-80 lh-80 bg-red flex text-white rounded-md mt-20 mb-10\"\n style=\"position: relative\"\n :class=\"{ 'mt-22': selectIndex == 2 }\"\n @click=\"order('close')\"\n v-if=\"userInfo.token\"\n >\n <div class=\"relative font-34 text-center\" style=\"flex-grow: 1\">\n {{ $t(\"开空\") }}\n <span class=\"right-word font-22 text-center\">{{\n $t(\"看跌\")\n }}</span>\n </div>\n </div>\n </template>\n </template>\n <div v-else class=\"w-full mt-120\">\n <div class=\"textColor\">\n <p>{{ $t(\"套期保值,风险对冲\") }}</p>\n <p class=\"pt-8\">{{ $t(\"登陆后继续\") }}</p>\n </div>\n <div\n class=\"h-80 lh-80 btnBackground flex text-white rounded-md justify-center mt-50\"\n @click=\"$router.push('/login')\"\n >\n {{ $t(\"登录后进行交易\") }}\n </div>\n </div>\n </div>\n </div>\n </div>\n <van-popup v-model=\"show\" class=\"rounded-2xl\">\n <popup-delivery\n showBtns\n :detailData=\"detailData\"\n :key=\"detailData.order_no\"\n @close=\"onClose\"\n @continueToBuy=\"continueTobuy\"\n @timeEnd=\"handleTimeEnd\"\n :price=\"price\"\n />\n </van-popup>\n <van-action-sheet\n v-model=\"isSelectShow\"\n @select=\"onSelect\"\n :actions=\"actions\"\n :cancel-text=\"$t('取消')\"\n close-on-click-action\n @cancel=\"onCancel\"\n >\n </van-action-sheet>\n </div>\n</template>\n\n<script>\nimport config from \"@/config\";\nimport { Popup, ActionSheet } from \"vant\";\nimport { mapGetters } from \"vuex\";\n// import VueSlider from \"vue-slider-component\";\nimport AmountSlider from \"./amountSlider.vue\";\nimport \"vue-slider-component/theme/default.css\";\nimport {\n _orderOpen,\n _orderClose,\n _futrueOrder,\n _futrueOrderDetail,\n _getBalance,\n _futrueOrderInit,\n} from \"@/API/trade.api\";\nimport ContractFutrue from \"@/components/contract-futrue\";\nimport PopupDelivery from \"@/components/popup-delivery\";\nimport { fixDate } from \"@/utils/utis\";\nimport { _getHomeList } from \"@/API/home.api\";\nimport { getStorage } from \"@/utils/utis\";\n// import PopupConfirmOrder from '@/components/popup-confirm-order'\nexport default {\n name: \"perpetualPosition\",\n components: {\n // VueSlider,\n AmountSlider,\n ContractFutrue,\n [Popup.name]: Popup,\n PopupDelivery,\n [ActionSheet.name]: ActionSheet,\n // PopupConfirmOrder\n },\n props: {\n greenData: {\n // 买单\n type: Array,\n default() {\n return [];\n },\n },\n redData: {\n // 卖单\n type: Array,\n default() {\n return [];\n },\n },\n symbol: {\n type: String,\n default: \"\",\n },\n price: {\n type: [Number, String],\n default: \"0.00\",\n },\n initOpen: {\n type: Object,\n default() {\n return {};\n },\n },\n initClose: {\n type: Object,\n default() {\n return {};\n },\n },\n initFutrue: {\n type: Object,\n default() {\n return {};\n },\n },\n selectIndex: {\n type: [String, Number],\n default: 1,\n },\n currentType: {\n type: String,\n default: \"long\",\n },\n },\n watch: {\n price(val) {\n if (this.type === \"1\") {\n // !this.focus &&\n this.form.price = val;\n }\n this.form.para_id =\n this.initFutrue.para && this.initFutrue.para[this.paraIndex].para_id; // 不优雅,不可靠\n // this.form.symbol = this.symbol.toLowerCase()\n },\n initOpen: {\n // 处理滚动条初始值\n deep: true,\n handler(val) {\n this.handleInitSliderOption();\n },\n },\n initClose: {\n // 处理滚动条初始值\n deep: true,\n handler(newVal, oldVal) {\n if (newVal.amount / 1 > 0) {\n this.handleInitSliderOption(true);\n }\n },\n },\n symbol(val) {\n this.getHomeList(val);\n },\n greenData(val) {\n if (this.dataArrValue >= 1) {\n this.greenData.map((item) => {\n item.price = parseFloat(item.price).toFixed(this.dataArrValue);\n });\n this.redData.map((item) => {\n item.price = parseFloat(item.price).toFixed(this.dataArrValue);\n });\n } else {\n if (this.dataArrValue == -1) {\n this.greenData.map((item) => {\n item.price = item.price.substring(0, item.price.indexOf(\".\"));\n });\n this.redData.map((item) => {\n item.price = item.price.substring(0, item.price.indexOf(\".\"));\n });\n }\n if (this.dataArrValue == -2) {\n this.greenData.map((item) => {\n item.price =\n item.price.substring(0, item.price.indexOf(\".\") - 1) + \"0\";\n });\n this.redData.map((item) => {\n item.price =\n item.price.substring(0, item.price.indexOf(\".\") - 1) + \"0\";\n });\n }\n if (this.dataArrValue == -3) {\n this.greenData.map((item) => {\n item.price =\n item.price.substring(0, item.price.indexOf(\".\") - 2) + \"00\";\n });\n this.redData.map((item) => {\n item.price =\n item.price.substring(0, item.price.indexOf(\".\") - 2) + \"00\";\n });\n }\n }\n this.approximately = this.redData[0].price;\n },\n },\n mounted() {\n this.getHomeList(this.$route.params.symbol);\n setInterval(() => {\n // 刷新页面\n if (\n location.href.indexOf(\"#reloaded\") == -1 &&\n location.href.indexOf(\"perpetualContract\") > 0\n ) {\n location.href = location.href + \"#reloaded\";\n location.reload();\n }\n }, 1000); // 1000毫秒 = 1秒\n },\n computed: {\n ...mapGetters({\n userInfo: \"user/userInfo\",\n theme: \"home/theme\",\n }),\n initData() {\n let obj = null;\n if (this.selectIndex / 1 === 1) {\n obj = this.initOpen;\n if (!obj.lever || !obj.lever.length) {\n // 倍数\n obj.lever = [{ id: 1, lever_rate: 1 }];\n }\n return obj;\n }\n return this.initFutrue;\n },\n coudBuyVolume() {\n // 可买数量\n return Math.floor(this.initOpen.volume / 1 / this.form.lever_rate);\n },\n },\n filters: {\n nan(val) {\n return isNaN(val) ? \"--\" : val;\n },\n },\n data() {\n return {\n fixDate,\n currentBuyType: \"\", // 交割合约当前下单的类型,用于弹窗倒计时结束以后,点击再下一单\n timeout2: null,\n timeout: null,\n detailData: {}, // 交割合约订单详情数据\n show: false,\n popType: \"confirm\", // 弹框类型 confirm / counting\n showOptions: false,\n options: config.sliderOptions,\n value: 0,\n isShow: false,\n title: this.$t(\"市价\"),\n paraIndex: 0,\n selectData: [\n { title: this.$t(\"市价\"), type: \"1\" },\n { title: this.$t(\"限价\"), type: \"2\" },\n ],\n form: {\n symbol: \"\", // 币种\n session_token: \"\",\n direction: \"buy\", // 买or卖\n price_type: \"opponent\", // 市价or限价\n lever_rate: 1, // 杠杆\n stop_price_profit: \"\",\n stop_price_loss: \"\",\n price: \"\",\n amount: \"\", // 数量\n para_id: \"\", // 交割周琦id\n },\n focus: false,\n type: \"1\", //选中市价或限价类型\n // currentType:\"open\", //开仓类型\n // action: _orderOpen // 开仓or\n isShow: false,\n selectDataArry: [],\n isSelectShow: false,\n actions: [\n { name: this.$t(\"默认\"), value: 0, className: \"actions-active\" },\n { name: this.$t(\"展示买单\"), value: 1, className: \"\" },\n { name: this.$t(\"展示卖单\"), value: 2, className: \"\" },\n ],\n showType: 0,\n dataArrTitle: 0,\n dataArrValue: 0,\n arryIsShow: false,\n marks: (val) => val % 50 === 0,\n approximately: \"\",\n };\n },\n beforeDestroy() {\n this.clearTimeout();\n },\n activated() {\n this.selectData = [\n { title: this.$t(\"市价\"), type: \"1\" },\n { title: this.$t(\"限价\"), type: \"2\" },\n ];\n this.title = this.selectData[0].title;\n this.type = this.selectData[0].type;\n },\n\n methods: {\n //获取张数\n getAmount(val) {\n this.form.amount = val;\n },\n // 获取张数,数据转换\n getVolumnByLever() {\n let vol;\n vol = this.initOpen.volume / 1;\n return Math.floor(vol);\n },\n\n getHomeList(symbol) {\n _getHomeList(symbol).then((res) => {\n let numberText = res[0].close;\n let numberLength = numberText.substring(\n numberText.indexOf(\".\") + 1,\n numberText.length\n ).length;\n let arry = [];\n let str = \"0.\";\n for (let j = 0; j < numberLength - 1; j++) {\n str = str + \"0\";\n arry.push(str);\n }\n let newArry = [];\n arry.map((item) => {\n let obj = {\n name: item + \"1\",\n value:\n item.substring(item.indexOf(\".\") + 1, item.length).length + 1,\n };\n newArry.push(obj);\n });\n if (numberLength <= 2) {\n let obj = [\n {\n name: \"0.1\",\n value: 1,\n },\n {\n name: \"1\",\n value: -1,\n },\n {\n name: \"10\",\n value: -2,\n },\n // {\n // name: '100',\n // value: -3,\n // }\n ];\n let arryItem = {\n name: \"100\",\n value: -3,\n };\n if (numberText.substring(0, numberText.indexOf(\".\")).length > 2) {\n obj.push(arryItem);\n }\n newArry = newArry.concat(obj);\n }\n if (this.symbol == \"shib\") {\n newArry = newArry.slice(-4);\n }\n let dataObj = {\n arry: newArry,\n numberLength: numberLength,\n };\n this.selectDataArry = dataObj.arry;\n if (numberLength >= 2) {\n this.dataArrTitle = this.selectDataArry[0].name;\n } else {\n this.dataArrTitle =\n this.selectDataArry[this.selectDataArry.length - 1].name;\n }\n });\n },\n continueTobuy(detailData) {\n this.show = false;\n setTimeout(() => {\n this.$router.push(\n `/trendDetails/${detailData.symbol}?direction=${detailData.direction}`\n );\n }, 300);\n },\n onQuickPrice(price) {\n // 点击金额变化\n if (this.type === \"2\") {\n this.form.price = price;\n }\n },\n clearTimeout() {\n clearTimeout(this.timeout);\n this.timeout = null;\n },\n handleTimeEnd(order) {\n if (this.selectIndex / 1 === 2) {\n // 交割合约需要弹出详情框\n _futrueOrderDetail(order).then((data) => {\n this.clearTimeout();\n this.detailData = data;\n if (data.state !== \"created\") {\n this.timeout = setTimeout(() => {\n this.handleTimeEnd(order);\n }, 1000);\n }\n });\n }\n },\n handleInitSliderOption(amount) {\n if (!amount) {\n // 金额是否需要变动\n this.form.amount = \"\";\n }\n console.log(this.initOpen.volume, this.form.lever_rate);\n let vol;\n vol = this.initOpen.volume / 1;\n this.options.max = Math.floor(vol);\n console.log(\"this.options.max\", this.options.max);\n if (this.options.max > 0) {\n this.options.disabled = false;\n } else {\n this.options.disabled = true;\n }\n },\n handleChoose(item) {\n this.showOptions = !this.showOptions;\n this.form.lever_rate = item.lever_rate;\n console.log(\"handleChoose\");\n this.handleInitSliderOption();\n },\n onAdd() {\n // +\n if (this.options.max === 0) {\n return;\n }\n if (this.form.amount === this.options.max) {\n return;\n }\n console.log(this.options.max);\n this.form.amount++;\n },\n onReduce() {\n // -\n if (this.form.amount > 1) {\n this.form.amount--;\n }\n },\n jump() {\n this.$router.push(`/trendDetails/${this.symbol}`);\n },\n onParaId({ id, index }) {\n // 交割日期\n // console.log(evt)\n this.form.para_id = id;\n this.form.amount = \"\";\n this.paraIndex = index;\n },\n onInput() {\n // 数量变化\n // console.log(1111111, this.form.amount, this.selectIndex)\n if (this.selectIndex == 1 && this.options.max == 0) {\n this.form.amount = this.form.amount / 1;\n } else if (\n this.selectIndex == 1 &&\n this.form.amount / 1 > this.options.max / 1\n ) {\n this.form.amount = this.options.max / 1;\n }\n if (this.selectIndex / 1 === 1) {\n this.$refs.sliderRef.amountChange(this.form.amount);\n }\n },\n //价格类型下拉框切换\n selectBtn() {\n this.isShow = !this.isShow;\n },\n //选择价格类型\n selectItem(item) {\n if (item.type == 1) {\n this.form.price = this.price;\n }\n this.form.price_type = item.type === \"1\" ? \"opponent\" : \"limit\";\n this.title = item.title;\n this.type = item.type;\n this.isShow = false;\n },\n //选择开仓类型\n changeTab(type) {\n // 开仓和\n console.log(\"changeTab\", type);\n\n if (this.currentType === type) {\n return;\n }\n this.$emit(\"changeCurrentType\", type);\n // this.currentType = type;\n\n this.$refs.sliderRef.emptyValue();\n this.handleInitSliderOption();\n },\n onClose() {\n // 关闭\n this.show = false;\n setTimeout(() => {\n this.popType = \"confirm\";\n }, 500);\n },\n // onOrderConfirm() {\n // /// 交割合约确认\n // this.show = false;\n // this.popType = \"counting\";\n // this.order(this.form.direction === \"buy\" ? \"open\" : \"close\");\n // },\n order(type) {\n if (!this.userInfo.token) {\n this.$router.push(\"/login\");\n return false;\n }\n // if (!this.form.stop_price_profit) {\n // \tthis.$toast.fail(this.$t(\"请输入止盈金额\"));\n // \t return false;\n // \t}\n // if (!this.form.stop_price_loss) {\n // \tthis.$toast.fail(this.$t(\"请输入止损金额\"));\n // \t return false;\n // \t}\n if (!this.form.amount) {\n if (this.selectIndex == 1) {\n this.$toast.fail(this.$t(\"请输入合约张数\"));\n } else {\n this.$toast.fail(this.$t(\"请输入金额\"));\n }\n return;\n }\n\n // this.form.direction = type\n this.form.symbol = this.$route.params.symbol;\n if (type == \"long\" || type == \"open\") {\n this.form.direction = \"buy\";\n } else {\n this.form.direction = \"sell\";\n }\n let _order = null; // api\n let emitFunc = null; // 触发函数\n if (this.selectIndex / 1 === 1) {\n // 永续合约\n this.form.session_token = this.initOpen.session_token;\n _order = _orderOpen;\n emitFunc = this.currentType;\n this.openOrder(_order, emitFunc);\n } else {\n // 交割合约\n this.form.session_token = this.initFutrue.session_token;\n _order = _futrueOrder;\n emitFunc = \"futrue\";\n if (\n this.initFutrue.session_token == undefined ||\n this.initFutrue.session_token == \"\"\n ) {\n _futrueOrderInit(this.symbol)\n .then((data) => {\n this.form.session_token = data.session_token;\n this.openOrder(_order, emitFunc);\n })\n .catch((err) => {\n if (err.code == \"ECONNABORTED\") {\n this.$toast(this.$t(\"网络超时!\"));\n } else if (err.msg != undefined) {\n this.$toast(this.$t(err.msg));\n }\n });\n } else {\n this.form.session_token = this.initFutrue.session_token;\n this.openOrder(_order, emitFunc);\n }\n }\n },\n openOrder(_order, emitFunc) {\n _order(this.form)\n .then((res) => {\n if (this.selectIndex / 1 === 1) {\n this.$refs.sliderRef.emptyValue();\n }\n this.$toast(this.$t(\"操作成功\"));\n _getBalance().then((data) => {\n // 刷新余额\n this.$store.commit(\"user/SET_USERINFO\", { balance: data.money });\n });\n this.$emit(\"ordered\", emitFunc);\n if (this.selectIndex / 1 === 2) {\n // 交割合约需要弹出详情框\n _futrueOrderDetail(res.order_no).then((data) => {\n this.detailData = data;\n this.show = true;\n });\n }\n })\n .catch(() => {\n // 也需要重新初始化\n this.$emit(\"ordered\", emitFunc);\n if (this.selectIndex / 1 === 1) {\n this.$refs.sliderRef.emptyValue();\n }\n });\n },\n //价格类型下拉框切换\n selectBtn() {\n this.isShow = !this.isShow;\n },\n selectArryBtn() {\n this.arryIsShow = !this.arryIsShow;\n },\n onSelect(item) {\n this.actions.map((item) => {\n item.className = \"\";\n });\n item.className = \"actions-active\";\n this.showType = item.value;\n this.$emit(\"changeValueBack\", this.showType);\n },\n onCancel() {\n this.isSelectShow = false;\n },\n selectItemArry(item) {\n this.dataArrValue = item.value;\n this.arryIsShow = false;\n this.dataArrTitle = item.name;\n },\n },\n};\n</script>\n\n<style lang=\"scss\" scoped>\n.perpetual-open {\n font-size: 26px;\n}\n\n.options {\n box-shadow: 0px 0px 7px rgba(0, 0, 0, 0.3);\n border-radius: 6px;\n\n @include themify() {\n background: themed(\"tab_background\");\n }\n\n div {\n font-size: 22px;\n text-align: center;\n width: 140px;\n height: 50px;\n line-height: 50px;\n\n &.option-active {\n @include themify() {\n background: themed(\"tab_background\");\n }\n }\n }\n}\n\n.right-word {\n top: 50%;\n transform: translateY(-50%);\n right: 19px;\n position: absolute;\n border-radius: 6px;\n}\n\n.vue-slider {\n height: 3px !important;\n padding: 0 20px !important;\n}\n\n.vue-slider-dot {\n width: 32px !important;\n height: 32px !important;\n}\n\n.vue-slider-mark-label {\n font-size: 16px;\n margin-top: 14px !important;\n}\n\n.vue-slider-mark-label-active {\n color: #868d9a !important;\n}\n\n.vue-slider-dot-handle {\n border: 3px solid #2c78f8;\n}\n\n.vue-slider-mark {\n width: 20px !important;\n height: 20px !important;\n\n &:nth-child(1) {\n .vue-slider-mark-label {\n transform: translateX(-14px) !important;\n }\n }\n\n &:nth-child(5) {\n .vue-slider-mark-label {\n transform: translateX(-60px) !important;\n }\n }\n}\n\n// 开仓样式\n.tabcon {\n // padding-bottom: 16%;\n position: relative;\n height: 80px;\n}\n\n.tab {\n position: absolute;\n left: 0px;\n right: 0px;\n top: 0px;\n bottom: 0px;\n display: flex;\n align-items: center;\n background-color: #f3f3f3;\n border-radius: 5px;\n overflow: hidden;\n}\n\n.tab > * {\n height: 100%;\n}\n\n.tab > img {\n margin-left: -2px;\n margin-right: -2px;\n}\n\n.tab > a {\n flex-grow: 1;\n display: flex;\n justify-content: center;\n align-items: center;\n cursor: pointer;\n}\n\n.open,\n.long {\n background-color: #12b298;\n color: white;\n}\n\n// 下拉\n.option-box {\n position: absolute;\n left: 0;\n right: 0;\n top: 90px;\n width: 100%;\n\n @include themify() {\n background: themed(\"grey_bg\");\n }\n\n text-align: center;\n\n @include themify() {\n box-shadow: 0px 0px 3px 3px themed(\"grey_bg\");\n }\n\n border-radius: 4px;\n\n @include themify() {\n color: themed(\"text_color3\");\n }\n}\n\n.option-box > div {\n padding: 30px 0;\n}\n\n.option-box > div:hover {\n // background-color: #f5f5f5;\n}\n\n.num-text-color {\n color: #4c4a54;\n}\n\nselect {\n appearance: none;\n /* 去掉默认图标 */\n -moz-appearance: none;\n /* Firefox */\n -webkit-appearance: none;\n /* Safari and Chrome */\n padding: 0 20px 0 20px;\n background: url(\"../../assets/image/public/grey-select.png\") no-repeat scroll\n right center transparent;\n /* 自己的图*/\n background-size: 20px 11px;\n}\n\n.with100 {\n width: 100%;\n}\n\n.height100 {\n height: 100%;\n}\n\n.open {\n background-color: #12b298;\n // background: url(@/assets/image/public/open-bg.png) no-repeat right center;\n // background-size: 100% 100%;\n color: white;\n}\n\n.close,\n.short {\n background-color: #f6465d;\n // background: url(@/assets/image/public/close-bg.png) no-repeat left center;\n // background-size: 100% 100%;\n color: white;\n}\n\n// .custom-step {\n// width: 10px;\n// height: 10px;\n// border-radius: 50%;\n// background: fff;\n// border: solid 1px #1d91ff;\n// background: #fff;\n// }\n\n// .custom-step.active {\n// box-shadow: 0 0 0 2px #1d91ff;\n// background-color: #1d91ff;\n// }\n\n.all-div {\n @include themify() {\n background: themed(\"input_background1\");\n }\n}\n\n.select-wrap {\n @include themify() {\n background: themed(\"input_background1\");\n }\n\n border: none;\n}\n\n.greyBg {\n @include themify() {\n border: 1px solid themed(\"input_background1\");\n }\n\n @include themify() {\n background: themed(\"input_background1\");\n }\n}\n\n.usdt-bg {\n @include themify() {\n background: themed(\"input_background1\");\n }\n}\n\n.header-open {\n align-items: center;\n}\n\n.k-select-box {\n justify-content: flex-end;\n padding-right: 40px;\n align-items: center;\n\n .select-box {\n width: 220px;\n\n @include themify() {\n background: themed(\"input_background\");\n }\n\n margin-right: 20px;\n }\n}\n\n.van-popup {\n @include themify() {\n background: themed(\"input_background1\");\n }\n}\n\n::v-deep .van-popup {\n @include themify() {\n background: themed(\"input_background1\");\n }\n}\n\n.actions-active {\n @include themify() {\n background: themed(\"color_main\") !important;\n }\n\n color: #fff !important;\n}\n\n.perpetual-open {\n ::v-deep .van-action-sheet__item,\n ::v-deep .van-action-sheet__cancel {\n @include themify() {\n background: themed(\"input_background1\");\n }\n\n @include themify() {\n color: themed(\"text_color\");\n }\n }\n\n ::v-deep .van-action-sheet__gap {\n @include themify() {\n background: themed(\"cont_background\");\n }\n }\n}\n\n.approximately-text {\n @include themify() {\n color: themed(\"text_color1\");\n }\n}\n</style>\n"],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
|