1
李凌
8 days ago 349c48e168b9f2580334422228acde7d1b21bede
src/components/Transform/perpetual-open/index.vue
@@ -62,8 +62,11 @@
                </div>
              </div>
            </template>
            <contract-futrue v-if="selectIndex == 2 && JSON.stringify(initFutrue.para) != '[]'" class="mb-20"
            <contract-futrue v-if="selectIndex == 2 && hasFutruePara" class="mb-20"
              :initFutrue="initFutrue" @paraId="onParaId" />
            <div v-else-if="selectIndex == 2" class="text-grey font-26 py-20 text-center mb-20">
              {{ $t('暂无交割周期配置,请联系客服') }}
            </div>
            <div class="h-76 lh-76 greyBg mb-30 flex pr-20 justify-center rounded-lg textColor" v-if="selectIndex == 1">
              <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" />
@@ -79,7 +82,7 @@
              <input v-if="selectIndex == 1" placeholder="USDT" class="border-none greyBg text-center textColor"
                style="width: 17rem;border-radius: 5rem;" v-model="form.amount" type="number" @input="onInput" />
              <input v-if="selectIndex == 2 && JSON.stringify(initFutrue.para) != '[]'"
              <input v-if="selectIndex == 2 && hasFutruePara"
                :placeholder="($t('最少') + initFutrue && initFutrue.para ? $t('最小金额') + initFutrue.para[paraIndex].buy_min : '')"
                class="border-none greyBg text-center textColor" style="width: 17rem;border-radius: 5rem;"
                v-model="form.amount" type="number" @input="onInput" />
@@ -123,9 +126,10 @@
              <!-- 张数输入 -->
              <!-- <amount-slider ref="sliderRef" :maxAmount="maxUSDT" @getAmount="getAmount"
                :propsAmount="form.amount"></amount-slider> -->
            <div class="btns_box" >
               <div :class="bfbindex==index?'btns_box_boxs':'btns_box_box'" @click="bfbclick(item,index)" v-for="(item,index) in bfblist" :key="index">{{item.name}}%</div>
            </div>
              <div class="btns_box">
                <div :class="bfbindex == index ? 'btns_box_boxs' : 'btns_box_box'" @click="bfbclick(item, index)"
                  v-for="(item, index) in bfblist" :key="index">{{ item.name }}%</div>
              </div>
            </template>
            <template v-if="selectIndex == 1 && userInfo.token">
              <div class="flex justify-between mt-30">
@@ -152,20 +156,20 @@
              </div>
            </template>
            <div class="flex font-24 text-grey justify-between mt-32" >
            <div class="flex font-24 text-grey justify-between mt-32">
              <div>{{ $t("可用USDT") }}</div>
              <div class="textColor">{{ initFutrue.amount }} USDT</div>
            </div>
            <div class="flex font-24 text-grey justify-between mt-20"
              v-if="selectIndex == 2 && JSON.stringify(initFutrue.para) != '[]'">
              v-if="selectIndex == 2 && hasFutruePara">
              <div>{{ $t("手续费") }}</div>
              <div class="textColor">
                {{
                  (
                    form.amount *
                    (initFutrue && initFutrue.para
                      ? initData.para[paraIndex].unit_fee
                      : "")
                      ? initFutrue.para[paraIndex].unit_fee
                      : 0)
                  ).toFixed(2)
                }}
                {{ queryType === 'cryptos' ? 'USDT' : 'USD' }}
@@ -199,7 +203,7 @@
                  </div>
                </div>
              </template>
              <template v-if="selectIndex == 2">
              <template v-if="selectIndex == 2 && hasFutruePara">
                <div class="w-full h-80 lh-80 bg-green flex text-white rounded-ban mt-10 " @click="order('open')"
                  v-if="userInfo.token">
                  <div class="font-34 relative text-center" style="flex-grow: 1">
@@ -257,7 +261,7 @@
                    '%,rgba(246,70,93,.1) 100%)',
                }"> -->
              <div v-if="showType == 0 || showType == 2" class="w-290 flex justify-between pt-1 font-26"
              <div v-show="(showType == 0 || showType == 2)" class="w-290 flex justify-between pt-1 font-26"
                v-for="(item, index) in redData" :key="item + index" @click="onQuickPrice(item.price)" :style="{
                  background:
                    `linear-gradient(to right,${THEME == 'dark' ? '#131A2E' : '#fff'
@@ -366,7 +370,6 @@
import ContractFutrue from '@/components/Transform/contract-futrue/index.vue'
import PopupDelivery from "@/components/Transform/popup-delivery/index.vue";
import { fixDate } from "@/utils/index.js";
import { THEME } from '@/config/theme'
import AmountSlider from "./amountSlider.vue";
import "vue-slider-component/theme/default.css";
import { _getHomeList } from "@/service/home.api";
@@ -508,6 +511,9 @@
  computed: {
    ...mapGetters('user', ['userInfo']),
    ...mapGetters('home', ['currency']),
    hasFutruePara() {
      return Array.isArray(this.initFutrue?.para) && this.initFutrue.para.length > 0
    },
    initData() {
      let obj = null
      if (this.selectIndex / 1 === 1) {
@@ -535,19 +541,21 @@
      // console.log("dddddd", max, this.form.lever_rate, (1 / this.form.lever_rate + this.initData.fee));
      return max
    },
    THEME() {
      return this.$store.state.vant.theme
    }
  },
  data() {
    return {
      THEME,
      fixDate,
     bfbindex:null,
     bfblist:[
        {name:'25'},
        {name:'50'},
        {name:'75'},
        {name:'100'}
     ],
      bfbindex: null,
      bfblist: [
        { name: '25' },
        { name: '50' },
        { name: '75' },
        { name: '100' }
      ],
      currentBuyType: '', // 交割合约当前下单的类型,用于弹窗倒计时结束以后,点击再下一单
      timeout2: null,
      timeout: null,
@@ -624,14 +632,14 @@
  },
  methods: {
    reserve,
   bfbclick(e,i){
      this.bfbindex = i
      e = parseInt(e.name)
      const rate = e / 100; //如0.25
      this.form.amount = this.maxUSDT * rate
      var a = this.form.amount
      this.form.amount = Math.floor(a*100)/100
   },
    bfbclick(e, i) {
      this.bfbindex = i
      e = parseInt(e.name)
      const rate = e / 100; //如0.25
      this.form.amount = this.maxUSDT * rate
      var a = this.form.amount
      this.form.amount = Math.floor(a * 100) / 100
    },
    //获取张数
    getAmount(val) {
      if (!val) {
@@ -956,24 +964,29 @@
<style lang="scss">
@import "@/assets/init.scss";
.btns_box_boxs{
   width: 23%;
   border: 1px solid #F7B600;
   text-align: center;
   border-radius: 10px;
   color: #F7B600;
.btns_box_boxs {
  width: 23%;
  border: 1px solid #F7B600;
  text-align: center;
  border-radius: 10px;
  color: #F7B600;
}
.btns_box_box{
   width: 23%;
   border: 1px solid #cbcbcb;
   text-align: center;
   border-radius: 10px;
.btns_box_box {
  width: 23%;
  border: 1px solid #cbcbcb;
  text-align: center;
  border-radius: 10px;
  color: #7f7f7f;
}
.btns_box{
   display: flex;
   justify-content: space-between;
   align-items: center;
.btns_box {
  display: flex;
  justify-content: space-between;
  align-items: center;
}
#cryptos {
  .perpetual-open {
    font-size: 26px;
@@ -1156,7 +1169,10 @@
    .van-action-sheet__item {
      background: transparent !important;
      color: $text_color;
      @include themify() {
        color: themed("text_color");
      }
    }
  }
@@ -1177,7 +1193,7 @@
  .select-box {
    width: 220px;
    border-radius: 2.5rem;
    background: #1E1E1E;
    background: #aaa;
    margin-right: 20px;
  }