1
admin
2026-01-31 732c30b33f782c2d2ebb62eacda2fb7a453a7ecd
src/page/trading/buy.vue
@@ -28,38 +28,25 @@
                <span>{{ $t("hj98") }}</span>
              </div>
            </div>
            <div class="rights">
            <!-- <div class="rights">
              <div class="ese">
                <div
                  class="mc"
                  @click="handleTradingClick(0)"
                  :class="tabsCurrentIndex === 0 ? 'actives' : ''"
                >
                <div class="mc" @click="handleTradingClick(0)" :class="tabsCurrentIndex === 0 ? 'actives' : ''">
                  <span>Short</span>
                </div>
                <div
                  class="mr"
                  @click="handleTradingClick(1)"
                  :class="tabsCurrentIndex === 1 ? 'active' : ''"
                >
                <div class="mr" @click="handleTradingClick(1)" :class="tabsCurrentIndex === 1 ? 'active' : ''">
                  <span>Long</span>
                </div>
              </div>
            </div>
            </div> -->
          </div>
        </div>
      </div>
      <div class="price_tabs">
        <div class="tabs">
          <div
            class="tab_item"
            v-for="(item, index) in priceTabs"
            :key="index"
            @click="handleTabsClick(item, index)"
            :class="priceTabsCurrentIndex === index ? 'active' : ''"
          >
          <div class="tab_item" v-for="(item, index) in priceTabs" :key="index" @click="handleTabsClick(item, index)"
            :class="priceTabsCurrentIndex === index ? 'active' : ''">
            <span>{{ item }}</span>
          </div>
        </div>
@@ -76,14 +63,11 @@
                <img src="@/assets/img/ic_number_jian.png" alt />
              </div>
              <div class="addorj"></div>
              <div
                class="addorj"
                @click="
                  typeof nums == 'string'
                    ? (nums = Number(Number(nums) + 1).toFixed(2))
                    : (nums = (Number(nums) + 1).toFixed(2))
                "
              >
              <div class="addorj" @click="
                typeof nums == 'string'
                  ? (nums = Number(Number(nums) + 1).toFixed(2))
                  : (nums = (Number(nums) + 1).toFixed(2))
                ">
                <img src="@/assets/img/ic_number_add.png" />
              </div>
            </div>
@@ -93,12 +77,7 @@
          </div>
          <div class="tr_es flexJy">
            <div class="top_input">
              <input
                type="number"
                onkeyup="value=value.replace(/[^\d]/g,'')"
                v-model="num"
                @input="numInput"
              />
              <input type="number" onkeyup="value=value.replace(/[^\d]/g,'')" v-model="num" @input="numInput" />
            </div>
            <div class="right_sw flexJy" style="width: auto">
              <div class="addorj" @click="jyslJian">
@@ -110,41 +89,35 @@
              </div>
            </div>
          </div>
          <div class="tr_rs gg" @click="showGg = true">
          <!-- <div class="tr_rs gg" @click="showGg = true">
            <div class="top_bzz">
              <span>{{ $t("hj101") }}</span>
              <span>{{ selectCycle }}</span>
            </div>
          </div>
          </div> -->
          <div class="tr_rs">
            <div class="top_bzz" style="padding-bottom: 0.2rem">
              <span style="text-align: left"> {{ $t("交易总额") }}() </span>
              <span style="text-align: right"> {{ $t("hj103") }}() </span>
              <span style="text-align: left"> {{ $t("交易总额") }} </span>
              <span style="text-align: right"> {{ $t("hj103") }} </span>
            </div>
            <div class="bottom_bzz">
              <span>
                {{ bayType | currencySymbol }}
                {{
                  (nowPrice * selectCycle.replace("X", "") * num)
                    | _toLocaleString
                  (nowPrice * selectCycle.replace("X", "") * num * stockNum)
                  | _toLocaleString
                }}
                <span v-if="bayType != 'US'">
                  ≈ $
                  {{
                    (nowPrice * selectCycle.replace("X", "") * num * rate)
                      | _toLocaleString
                  }}
                </span>
              </span>
              <span style="white-space: nowarp">
                $ {{ moneyData.availableBalance | _toLocaleString }}
                {{ bayType | currencySymbol }}
                {{ moneyData.availableBalance | _toLocaleString }}
              </span>
            </div>
          </div>
          <div class="tr_rs">
            <div class="top_bzz" style="padding-bottom: 0.2rem">
              <span style="text-align: left"> {{ $t("hj44") }}() </span>
              <span style="text-align: left"> {{ $t("hj44") }} </span>
              <span style="text-align: right"> </span>
            </div>
@@ -155,17 +128,6 @@
                    2
                  )
                }}
                <span v-if="bayType != 'US'">
                  ≈ $
                  {{
                    (nowPrice *
                      selectCycle.replace("X", "") *
                      num *
                      sxf *
                      rate)
                      | _toLocaleString
                  }}
                </span>
              </span>
              <span style="white-space: nowarp"> </span>
            </div>
@@ -228,14 +190,8 @@
        </div>
      </div>
    </div>
    <van-action-sheet
      v-model="showGg"
      :actions="siteLeverList"
      :cancel-text="$t('hj106')"
      :description="$t('hj107')"
      close-on-click-action
      @select="onSelect"
    />
    <van-action-sheet v-model="showGg" :actions="siteLeverList" :cancel-text="$t('hj106')" :description="$t('hj107')"
      close-on-click-action @select="onSelect" />
  </div>
</template>
@@ -281,8 +237,8 @@
    return {
      tradingArr: [this.$t("hj84"), this.$t("hj85")],
      tabsCurrentIndex: 0,
      // priceTabs: [this.$t("hj108"), this.$t("hj109")],
      priceTabs: [this.$t("hj108")],
      priceTabs: [this.$t("hj108"), this.$t("hj109")],
      // priceTabs: [this.$t("hj108")],
      priceTabsCurrentIndex: 0,
      num: 1,
      nums: 1,
@@ -335,7 +291,8 @@
        }
      ],
      moneyData: {},
      gid: ""
      gid: "",
      stockNum: 0, // 一手的股数
    };
  },
  computed: {
@@ -360,6 +317,7 @@
    this.getMoneyData();
    this.getSettingInfo();
    this.queryStockConfig();
    this.getStockBuySetting();
  },
  watch: {
    checkedZy(val) {
@@ -374,6 +332,16 @@
        navigator.vibrate([55]);
      }
    }
  },
  // 路由守卫 - 离开页面时清除 alert
  beforeRouteLeave(to, from, next) {
    // 如果 alert 正在显示,清除它
    if (this.$store.state.elAlertShow) {
      this.$store.commit("elAlertShow", {
        elAlertShow: false
      });
    }
    next();
  },
  methods: {
    async queryStockConfig() {
@@ -395,8 +363,8 @@
      // this.moneyData.availableBalance
      let numbs = Math.floor(
        this.moneyData.availableBalance /
          this.nowPrice /
          this.selectCycle.replace("X", "")
        this.nowPrice /
        this.selectCycle.replace("X", "")
      );
      if (e.target.value >= numbs) {
        this.num = numbs;
@@ -412,14 +380,9 @@
      let data = await api.getMoney();
      // let type = this.bayType === "SZHB" ? "US" : this.bayType;
      if (data.status === 0) {
        // const newArr = data.data.filter(item => item.accectType === type);
        // this.moneyData = newArr[0] || {};
        this.moneyData = data.data[0];
        // console.log(this.bayType, newArr);
        // 判断是否登录
        // this.moneyList = data.data;
        data.data.forEach(i => {
          if (i.accectType == this.bayType) this.moneyData = i;
        });
      }
    },
    handleBack() {
@@ -434,14 +397,14 @@
    jjjisua() {
      let numbs = Math.floor(
        this.moneyData.availableBalance /
          this.nowPrice /
          this.selectCycle.replace("X", "")
        this.nowPrice /
        this.selectCycle.replace("X", "")
      );
      typeof this.num == "string"
        ? (this.num = Number(Number(this.num) + 1))
        : (this.num = Number(Number(this.num) + 1));
      console.log(this.num, numbs);
      // console.log(this.num, numbs);
      if (this.num >= numbs) {
        this.num = numbs;
      }
@@ -548,7 +511,7 @@
        lever: this.selectLever,
        targetPrice: this.nums
      };
      console.log(this.selectLever, "this.selectLever ");
      // console.log(this.selectLever, "this.selectLever ");
      if (this.tabsCurrentIndex == 0) {
        opts.buyType = 1;
@@ -742,6 +705,13 @@
          elAlertText: data.msg
        });
      }
    },
    // 获取每手的股数
    async getStockBuySetting() {
      let data = await api.queryStockBuySetting({ stockType: this.bayType });
      if (data.status === 0) {
        this.stockNum = data.data[0].stockNum;
      }
    }
  },
  filters: {
@@ -762,7 +732,7 @@
  min-height: 100vh;
  background-color: #fff;
  > .content {
  >.content {
    width: 100%;
    height: calc(100% - 1.6rem);
    position: relative;
@@ -787,7 +757,7 @@
      display: flex;
      align-items: center;
      > img {
      >img {
        margin-top: 0.2rem;
        width: 0.6rem;
        height: 0.6rem;
@@ -863,13 +833,13 @@
        align-items: center;
        justify-content: flex-end;
        > div {
        >div {
          width: 65%;
          height: 80%;
          display: flex;
          justify-content: center;
          > div {
          >div {
            width: 45%;
            height: 70%;
            background: rgb(236, 236, 236);
@@ -920,7 +890,7 @@
    justify-content: center;
    border-radius: 0.15rem;
    > div {
    >div {
      width: 49%;
      height: 80%;
      border-radius: 0.15rem;
@@ -972,7 +942,7 @@
      height: 1.3rem;
      margin-top: 0.4rem;
      > div {
      >div {
        width: 100%;
        height: 50%;
        color: rgb(160, 160, 160);
@@ -1006,7 +976,7 @@
      font-size: 0.3803rem;
      border-bottom: 0.05rem solid rgb(236, 236, 236);
      > div {
      >div {
        color: #000;
      }
    }
@@ -1031,7 +1001,7 @@
    align-items: center;
    border-bottom: 0.05rem solid rgb(236, 236, 236);
    > div {
    >div {
      // width: 20%;
      height: 50%;
      display: flex;
@@ -1055,7 +1025,7 @@
  align-items: flex-end;
  // padding-top: 0.8rem;
  > div {
  >div {
    width: 100%;
    height: 1.2821rem;
    display: flex;