lxf
2025-04-30 b4c4556a5eddf6708ec55b07e3edc15b2217842e
src/page/trading/buy.vue
@@ -1,4 +1,5 @@
<template>
  <!-- 挂单 买入 卖出 -->
  <div class="buy_page">
    <div class="content">
      <div class="top_cny">
@@ -8,7 +9,7 @@
          </div>
          <div class="right_title">
            <div class="t_t" style="white-space: nowrap">
              <span v-if="KLine.type == 'HJ'">{{ name }}</span>
              <span v-if="KLine.type == 'HJ'">{{ $t(name) }}</span>
              <span v-else>{{ name }}({{ gid }})</span>
            </div>
            <div class="b_t">
@@ -20,14 +21,14 @@
          <div class="cot">
            <div class="lefts">
              <div class="top_new">
                <span>₹{{ nowPrice | _toLocaleString }}</span>
                <span> {{ nowPrice }}</span>
              </div>
              <div class="bottom_es">
                <span>{{ $t("hj98") }}</span>
              </div>
            </div>
            <div class="rights" v-if="KLine.type == 'HJ'">
              <div class="ese">
            <div class="rights">
              <div class="ese" v-if="!isSell && KLine.type == 'HJ'">
                <div
                  class="mc"
                  @click="handleTradingClick(0)"
@@ -63,7 +64,7 @@
        </div>
        <div class="tabs_content">
          <div class="num" v-show="priceTabsCurrentIndex == 1">
            <span>{{ $t("hj99") }}</span>
            <span>{{ isSell ? $t("当价格满足条件时卖出") : $t("hj99") }}</span>
          </div>
          <div class="tr_es flexJy" v-show="priceTabsCurrentIndex == 1">
            <div class="top_input">
@@ -108,7 +109,7 @@
              </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>{{
@@ -117,34 +118,31 @@
                  : 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>
                ₹{{
                  (nowPrice * selectCycle.replace("X", "") * num)
                    | _toLocaleString
                }}
                {{ nowPrice * selectCycle.replace("X", "") * num }}
              </span>
              <span style="white-space: nowarp">
                ₹{{ moneyData.availableBalance | _toLocaleString }}
                {{ moneyData.availableBalance }}
              </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>
            <div class="bottom_bzz">
              <span>
                ₹{{
                {{
                  (nowPrice * selectCycle.replace("X", "") * num * sxf).toFixed(
                    2
                  )
@@ -204,10 +202,18 @@
          </div>
        </div>
      </div> -->
      <div class="btn_buy" @click="gdOrSetBuy()">
      <div
        class="btn_buy"
        @click="gdOrSetBuy()"
        :disabled="isSell && !positiontionData.orderNum"
        :class="{ 'disabled-btn': isSell && !positiontionData.orderNum }"
      >
        <!-- <div :class="tabsCurrentIndex == 0 ? 'maichu' : ''">#3b82f6 -->
        <div class="maichu" style="background-color:#3b82f6">
          <span>{{ tabsCurrentIndex == 0 ? $t("hj84") : $t("gm") }}</span>
          <span v-if="isSell">{{ $t("hj78") }}</span>
          <span v-else>{{
            tabsCurrentIndex == 0 ? $t("hj84") : $t("gm")
          }}</span>
        </div>
      </div>
    </div>
@@ -224,6 +230,7 @@
<script>
import * as api from "@/axios/api";
import { number } from "echarts/lib/export";
import { mapActions } from "vuex";
export default {
@@ -231,8 +238,10 @@
  created() {
    if (this.$route.query.t) {
      this.tabsCurrentIndex = Number(this.$route.query.t);
      console.log(this.tabsCurrentIndex);
      console.log("tabsCurrentIndex: ", this.tabsCurrentIndex);
    }
    if (this.$route.query.m) {
      this.nowPrice = Number(this.$route.query.m);
      this.profitTarget = Number(this.$route.query.m);
@@ -260,10 +269,11 @@
  },
  data() {
    return {
      isSell: false,
      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,
@@ -317,14 +327,37 @@
      ],
      moneyData: {},
      gid: "",
      KLine: {}
      KLine: {},
      positiontionData: {
        orderNum: 0
      }
    };
  },
  mounted() {
  async mounted() {
    this.bayType = this.$route.query.bayType;
    this.gid = this.$route.query.gid;
    this.KLine = JSON.parse(window.localStorage.getItem("kLine"));
    if (this.tabsCurrentIndex === 0) {
      this.isSell = true;
      // stockType 1黄金原油  2  股票
      const data = await api.getPosition({
        stock: this.$route.query.code || this.$route.query.name,
        stockType: this.KLine.type === "HJ" ? 1 : 2
      });
      if (data.data) {
        this.positiontionData = data.data;
      } else {
        if (data.status !== 0) {
          this.$store.commit("elAlertShow", {
            elAlertShow: true,
            elAlertText: data.msg,
             elAlertType: "warning"
          });
        }
      }
    }
    if (this.bayType == "in") {
      this.priceTabs = [this.$t("hj108"), this.$t("hj109")];
    } else if (this.bayType == "qh") {
@@ -498,6 +531,9 @@
      this.selectLever = val.label;
    },
    gdOrSetBuy() {
      // 无持仓的时候不能下单
      if (this.isSell && !this.positiontionData.orderNum) return;
      if (this.priceTabsCurrentIndex == 0) {
        this.setBuy();
      } else {
@@ -515,7 +551,7 @@
      }
      this.buying = true;
      let opts = {
        stockId: this.code,
        stockId: this.id,
        buyNum: this.num,
        lever: this.selectLever,
        targetPrice: this.nums
@@ -534,7 +570,31 @@
      if (this.checkedZs) {
        opts.stopTarget = this.zhisun;
      }
      let data = await api.guadan(opts);
      let data;
      if (this.KLine.type === "HJ") {
        opts.name = this.KLine.name;
        opts.lever = 100;
      }
      if (this.isSell) {
        let sellDate = {
          positionSn: this.positiontionData.positionSn,
          number: this.num,
          name: opts.name
        };
        if (this.priceTabsCurrentIndex == 1) {
          sellDate.targetPrice = this.nums;
          sellDate.lever = opts.lever;
        }
        // 挂单 卖出
        data = await api.sell(sellDate);
      } else {
        if (this.KLine.type === "HJ") {
          data = await api.hjyyAddOrder(opts);
        } else {
          data = await api.guadan(opts);
        }
      }
      this.buying = false;
      if (data.status === 0) {
        this.$store.commit("elAlertShow", {
@@ -579,9 +639,9 @@
        // buyNum: (this.num.match(/\d+/g))[0] * 100, // 单位为手
        lever: this.selectLever
      };
      if (this.KLine.type === "HJ") {
        opts.lever = this.selectLever * 100;
      }
      // if (this.KLine.type === "HJ") {
      //   opts.lever = this.num * 100;
      // }
      console.log(this.selectLever, "this.selectLever ");
      if (this.tabsCurrentIndex == 0) {
        opts.buyType = 1;
@@ -612,14 +672,32 @@
      opts.stockId = this.id;
      let data;
      console.log("bayType: ", this.KLine);
      console.log("bayType: ", this.KLine, this.isSell);
      if (this.KLine.type == "HJ") {
        opts.name = this.KLine.name;
        opts.lever = this.num * 100;
      }
        data = await api.goldCrudeOilbuy(opts);
      if (this.isSell) {
        let sellDate = {
          positionSn: this.positiontionData.positionSn,
          number: this.num,
          name: opts.name
        };
        if (this.priceTabsCurrentIndex == 1) {
          sellDate.targetPrice = this.nums;
          sellDate.lever = opts.lever;
        }
        // 卖出
        data = await api.sell(sellDate);
      } else {
        data = await api.buy(opts);
        if (this.KLine.type == "HJ") {
          opts.name = this.KLine.name;
          opts.lever = 100;
          data = await api.goldCrudeOilbuy(opts);
        } else {
          data = await api.buy(opts);
        }
      }
      this.buying = false;
@@ -1154,4 +1232,10 @@
/deep/.van-popup {
  z-index: 10001 !important;
}
.disabled-btn {
  opacity: 0.5;
  pointer-events: none;
  cursor: not-allowed;
}
</style>