| | |
| | | <template> |
| | | <!-- 永续合约开仓页 --> |
| | | <div id="cryptos"> |
| | | <div class="perpetual-open"> |
| | | <div class="perpetual-open" style="width: 280px;"> |
| | | <div class="flex pt-34 "> |
| | | <div class="w-180 h-60 lh-60 text-center rounded tabBackground textColor">{{ $t('全仓') }} </div> |
| | | <div class="w-140 h-60 lh-60 ml-29 rounded tabBackground textColor" v-if="selectIndex / 1 === 1"> |
| | |
| | | </div> |
| | | <div class="pt-30 pb-20"> |
| | | <div class="flex"> |
| | | <div class="w-440 flex flex-col" :style="selectIndex==2 ? 'width:100%' : ''"> |
| | | <div class=" flex flex-col"> |
| | | <template v-if="selectIndex == 1"> |
| | | <div class="flex items-center h-66 rounded-lg text-grey"> |
| | | <p class="font-28 flex-1 flex items-center justify-center h-66 " |
| | |
| | | </div> |
| | | </div> |
| | | </template> |
| | | <contract-futrue v-if="selectIndex == 2 && JSON.stringify(initFutrue.para) != '[]'" class="mb-20" |
| | | <contract-futrue v-if="selectIndex == 2" class="mb-20" |
| | | :initFutrue="initFutrue" @paraId="onParaId" /> |
| | | <div class="h-76 lh-76 greyBg mb-30 flex pr-20 justify-center rounded-lg textColor" v-if="selectIndex == 1"> |
| | | <input placeholder="" class=" w-full pl-20 h-76 border-none text-left rounded-lg" |
| | | <input placeholder="" class="greyBg w-full pl-20 h-76 border-none text-left rounded-lg" |
| | | :disabled="type / 1 === 1" @focus="focus = true" v-model="form.price" /> |
| | | <span class="ml-20">{{ queryType === 'cryptos' ? 'USDT' : 'USD' }}</span> |
| | | </div> |
| | | |
| | | <div class="w-440 flex items-center h-76 lh-76 rounded-lg" v-if="initFutrue" > |
| | | <div v-if="selectIndex == 1 && initFutrue.para && initFutrue.para.length > 0" |
| | | <div class=" flex items-center greyBg h-76 lh-76 rounded-lg" style="background-color:#f5f5f5;" v-if="initFutrue" > |
| | | <!-- <div v-if="selectIndex == 1 && initFutrue.para && initFutrue.para.length > 0" |
| | | class="w-80 flex items-center justify-center" style="height:100%;" @click="onReduce"> |
| | | <img src="../../../assets/image/public/reduce.png" alt="add" class="w-30 h-6" /> |
| | | </div> |
| | | <input v-if="selectIndex == 1" :placeholder="$t('张数')" class="border-none text-center textColor" |
| | | style="width: 156px;" v-model="form.amount" type="number" @input="onInput" /> |
| | | </div> --> |
| | | <!-- <input v-if="selectIndex == 1" :placeholder="$t('张数')" class="border-none greyBg text-center textColor" |
| | | style="width: 156px;" v-model="form.amount" type="number" @input="onInput" /> --> |
| | | <input v-if="selectIndex == 2 && JSON.stringify(initFutrue.para) != '[]'" |
| | | :placeholder="($t('最少') + initFutrue && initFutrue.para ? $t('最小金额') + initFutrue.para[paraIndex].buy_min : '')" |
| | | class="border-none text-center ipt_min" style="width: 156px;background-color: #f0f0f0;" v-model="form.amount" type="number" |
| | | class="border-none greyBg text-center textColor" style="width: 226px;background-color:#f5f5f5;" v-model="form.amount" type="number" |
| | | @input="onInput" /> |
| | | <div class="w-80 flex items-center justify-center" style="height:100%;"> |
| | | <div class="w-80 flex items-center justify-center" style="height:100%;background-color:#f5f5f5;"> |
| | | <template v-if="selectIndex == 1"> |
| | | <img @click="onAdd" src="../../../assets/image/public/add.png" alt="reduce" class="w-30 h-30" /> |
| | | </template> |
| | | <template v-else> |
| | | <span class="text-grey">{{ queryType === 'cryptos' ? 'USDT' : 'USD' }}</span> |
| | | <span class="textColor">{{ queryType === 'cryptos' ? 'USDT' : 'USD' }}</span> |
| | | </template> |
| | | </div> |
| | | </div> |
| | | <template v-if="selectIndex == 1"> |
| | | <div class="mt-40 mb-30 w-full flex justify-between items-center"> |
| | | <!-- <div class="mt-40 mb-30 w-full flex justify-between items-center"> |
| | | <span class="font-22 font-400 text-grey">{{ $t("可开张数") }}</span> |
| | | <span class="font-22 font-400 textColor"> |
| | | {{ initData.volume }} |
| | | {{ initData.volume || 0}} |
| | | {{ $t("张") }} |
| | | </span> |
| | | </div> |
| | | </div> --> |
| | | <!-- <vue-slider v-bind="options" v-model="form.amount"></vue-slider> --> |
| | | <!-- <vue-slider class="mainBox" v-bind="options" :marks="marks" v-model="form.volume" :hide-label="true" width="90%" |
| | | :railStyle="{ background: '#404040', height: '4px' }" |
| | |
| | | <div>{{ $t("可用USDT") }}</div> |
| | | <div class="textColor">{{ initFutrue.amount }} {{ queryType === 'cryptos' ? 'USDT' : 'USD' }}</div> |
| | | </div> |
| | | <!-- {{JSON.stringify(initFutrue.para) != '[]'}} {{JSON.stringify(initFutrue.para)}} --> |
| | | <div class="flex font-24 text-grey justify-between mt-20" |
| | | v-if="selectIndex == 2 && JSON.stringify(initFutrue.para) != '[]'"> |
| | | <div>{{ $t("手续费") }}</div> |
| | |
| | | {{ |
| | | ( |
| | | form.amount * |
| | | (initFutrue && initFutrue.para |
| | | (initFutrue?.para.length>0 |
| | | ? initData.para[paraIndex].unit_fee |
| | | : "") |
| | | ).toFixed(2) |
| | |
| | | @click="$router.push('/login')">{{ $t('logIn') }}</div> |
| | | </div> |
| | | </div> |
| | | <div class="ml-30" v-if="!selectIndex==2"> |
| | | <!-- <div class="ml-30"> |
| | | <div class="w-290 flex justify-between text-grey font-22"> |
| | | <div> |
| | | <div>{{ $t("价格") }}</div> |
| | |
| | | <div class="flex k-select-box"> |
| | | <div class="mt-22 mb-22 select-box" style="position: relative"> |
| | | <div class="flex justify-between items-center w-full h-70" @click="selectArryBtn"> |
| | | <!-- <img src="@/assets/image/public/warn.png" alt="warn-icon" class="w-25 h-25 pl-20"/> --> |
| | | <div class="pl-16 font-28 textColor" style="width: 80%"> |
| | | {{ dataArrTitle }} |
| | | </div> |
| | |
| | | <img src="../../../assets/image/selectIcon.png" alt="warn-icon" class="w-36 h-30 ml-10" /> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> --> |
| | | </div> |
| | | </div> |
| | | <van-popup v-model:show="show" class="rounded-2xl"> |
| | | <popup-delivery showBtns :detailData="detailData" :key="detailData.order_no" @close="onClose" |
| | | <popup-delivery style="padding: 10px;" showBtns :detailData="detailData" :key="detailData.order_no" @close="onClose" |
| | | @continueToBuy="continueTobuy" @timeEnd="handleTimeEnd" :price="price" /> |
| | | </van-popup> |
| | | <van-action-sheet v-model:show="isSelectShow" @select="onSelect" :actions="actions" :cancel-text="$t('取消')" |
| | |
| | | '$route'(val) { |
| | | this.getHomeList(val.params.symbol); |
| | | }, |
| | | initData(val) { |
| | | if (val.lever.length > 0) { |
| | | val.lever = val.lever.sort(this.orderListAsc('lever_rate')) |
| | | } |
| | | // initData(val) { |
| | | // if (val && val.lever && val.lever.length > 0) { |
| | | // val.lever = val.lever.sort(this.orderListAsc('lever_rate')) |
| | | // } |
| | | |
| | | } |
| | | // } |
| | | }, |
| | | computed: { |
| | | ...mapGetters('user', ['userInfo']), |
| | | ...mapGetters('home', ['currency']), |
| | | initData() { |
| | | let obj = null |
| | | if (this.selectIndex / 1 === 1) { |
| | | |
| | | obj = this.initOpen |
| | | if (!obj.lever || !obj.lever.length) { // 倍数 |
| | | obj.lever = [{ id: 1, lever_rate: 1 }] |
| | | const obj = this.initOpen ? { ...this.initOpen } : { lever: [{ id: 1, lever_rate: 1 }] }; |
| | | if (!obj.lever || !Array.isArray(obj.lever) || !obj.lever.length) { |
| | | obj.lever = [{ id: 1, lever_rate: 1 }]; |
| | | } else { |
| | | obj.lever = [...obj.lever].sort(this.orderListAsc('lever_rate')); |
| | | } |
| | | return obj |
| | | return obj; |
| | | } |
| | | return this.initFutrue |
| | | // 交割合约 |
| | | if (this.initFutrue && Array.isArray(this.initFutrue.para) && this.initFutrue.para.length > 0) { |
| | | return this.initFutrue; |
| | | } |
| | | // 返回一个默认对象,避免模板报错 |
| | | return {}; |
| | | }, |
| | | coudBuyVolume() { // 可买数量 |
| | | return Math.floor((this.initOpen.volume / 1) / this.form.lever_rate) |
| | |
| | | if (this.selectIndex / 1 === 1) { |
| | | this.$refs.sliderRef.emptyValue() |
| | | } |
| | | this.$emit('ordered', emitFunc) |
| | | if (this.$emit) { |
| | | // this.$emit('ordered', emitFunc) |
| | | } |
| | | _getBalance().then(data => { // 刷新余额 |
| | | this.$store.commit('user/SET_USERINFO', { balance: data.money }) |
| | | }) |
| | |
| | | right: 0; |
| | | top: 90px; |
| | | width: 100%; |
| | | background-color: $grey_bg; |
| | | background-color: #f5f5f5; |
| | | box-shadow: 0px 0px 0.1875rem 0.1875rem #f5f5f5; |
| | | // background-color: $grey_bg; |
| | | text-align: center; |
| | | box-shadow: 0px 0px 3px 3px $grey_bg; |
| | | // box-shadow: 0px 0px 3px 3px $grey_bg; |
| | | border-radius: 4px; |
| | | color: $text-color; |
| | | z-index: 10; |
| | |
| | | justify-content: flex-end; |
| | | // padding-right: 40px; |
| | | align-items: center; |
| | | s |
| | | |
| | | .select-box { |
| | | width: 220px; |
| | | |
| | | background: #1E1E1E; |
| | | background: #f5f5f5; |
| | | |
| | | margin-right: 20px; |
| | | } |
| | | } |
| | | |
| | | .diviLine{ |
| | | background-color: #f5f5f5; |
| | | } |
| | | .textColor2, .textColor{ |
| | | color: #fff; |
| | | } |
| | | .deep-div { |
| | | min-height: 370px; |
| | | } |
| | | |
| | | #cryptos .ipt_min::placeholder { |
| | | color: #868C9A; |
| | | } |
| | | </style> |