1
admin
2026-01-13 95e138158db3e61e0be67691a4142f20c561634c
src/page/trading/TradeNew.vue
@@ -5,7 +5,7 @@
        <template #reference>
          <van-button type="primary">{{ $t("一键平仓") }}</van-button>
        </template>
      </van-popover> -->
</van-popover> -->
    </tab-head>
    <div class="order_tabs">
@@ -13,75 +13,119 @@
        <van-tab :title="$t('hj160')" name=""></van-tab>
        <van-tab :title="$t('美股指数')" name="US"></van-tab>
        <van-tab :title="$t('日股指数')" name="JP"></van-tab>
        <van-tab :title="$t('hj109')" name="GaDan"></van-tab>
        <!-- <van-tab :title="$t('hksi')" name="HK"></van-tab>
        <van-tab :title="$t('tsi')" name="TW"></van-tab> -->
      </van-tabs>
    </div>
    <van-row class="list_head">
      <van-col span="8" class="flex-start head_item">
        {{ $t("hj313") }}/{{ $t("Worth") }}
      </van-col>
      <van-col span="8" class="flex-start head_item">
        {{ $t("sl") }}/{{ $t("Profit") }}
      </van-col>
      <van-col span="8" class="flex-end head_item">
        {{ $t("Cost") }}/{{ $t("Current") }}
      </van-col>
    </van-row>
    <!-- 挂单列表 -->
    <div v-if="active == 'GaDan'">
    <van-row class="list_item" v-for="i in list" :key="i.id" @click="toDetails(i)">
      <van-col span="8" class="item_n">
        <div class="flex-start">
          <span class="i_icon">{{ i.stockGid }}</span>
          <span class="i_hint">{{ i.stockSpell }}</span>
        </div>
        <div class="i_name">
          {{ (i.orderNum * i.now_price).toFixed(2) }}
        </div>
      </van-col>
      <van-col span="8" class="item_n">
        <p class="flex-start">{{ i.orderNum }}</p>
        <p class="flex-start i_name" :style="{
          color:
            i.profitAndLose > 0 ? 'green' : i.profitAndLose < 0 ? 'red' : ''
        }">
          {{ i.profitAndLose }} ({{ i.profitAndLoseParent }})
        </p>
      </van-col>
      <van-col span="8" class="item_n">
        <div class="flex-end" style="margin-bottom: .15em;">
          <span>{{ i.buyOrderPrice }}</span>
        </div>
        <div class="flex-end">
          <span>{{ i.now_price }}</span>
        </div>
      </van-col>
      <van-col span="24" class="flex-start transaction_type">
        <span>{{ types[i.positionType] }}</span>
      </van-col>
      <van-col span="24" class="flex-between-start item_card" v-if="i.positionType == 4">
        <div class="card_label">
          <p>{{ $t("建仓成本") }}</p>
          <p>{{ i.orderTotalPrice }}</p>
        </div>
        <div class="card_label">
          <p>{{ $t("pcje") }}</p>
          <p>{{ i.sellOrderTotalPrice }}</p>
        </div>
        <div class="card_label">
          <p>{{ $t("预期收益") }}</p>
          <p>{{ i.profitAndLose }}</p>
        </div>
      </van-col>
    </van-row>
      <van-row class="list_head">
        <van-col span="14" class="flex-start head_item">
          {{ $t("hj313") }}/{{ $t("Worth") }}
        </van-col>
        <van-col span="3" class="flex-center head_item">
          {{ $t("sl") }}
        </van-col>
        <van-col span="3" class="flex-center head_item">
          {{ $t("Cost") }}
        </van-col>
      </van-row>
      <van-row class="list_item" v-for="i in list" :key="i.id">
        <van-col span="14" class="item_n">
          <div class="flex-start">
            <span class="i_icon">{{ i.stockGid }}</span>
            <span class="i_hint">{{ i.stockName }}</span>
          </div>
          <div class="i_name">
            {{ (i.buyNum * i.nowPrice).toFixed(2) }}
          </div>
        </van-col>
        <van-col span="3" class="item_n">
          <p class="flex-center">{{ i.buyNum }}</p>
        </van-col>
        <van-col span="3" class="item_n">
          <div class="flex-center" style="margin-bottom: .15em;">
            <span>{{ i.targetPrice }}</span>
          </div>
        </van-col>
        <van-col span="4" class="item_n">
          <div class="flex-center delete-btn-wrapper">
            <van-icon name="delete" size="0.5rem" color="#ee0a24" @click.stop="handleDelete(i)" />
          </div>
        </van-col>
      </van-row>
    </div>
    <!-- 正常持仓列表 -->
    <div v-else>
      <van-row class="list_head">
        <van-col span="8" class="flex-start head_item">
          {{ $t("hj313") }}/{{ $t("Worth") }}
        </van-col>
        <van-col span="8" class="flex-start head_item">
          {{ $t("sl") }}/{{ $t("Profit") }}
        </van-col>
        <van-col span="8" class="flex-end head_item">
          {{ $t("Cost") }}/{{ $t("Current") }}
        </van-col>
      </van-row>
      <van-row class="list_item" v-for="i in list" :key="i.id" @click="toDetails(i)">
        <van-col span="8" class="item_n">
          <div class="flex-start">
            <span class="i_icon">{{ i.stockGid }}</span>
            <span class="i_hint">{{ i.stockSpell }}</span>
          </div>
          <div class="i_name">
            {{ (i.orderNum * i.now_price).toFixed(2) }}
          </div>
        </van-col>
        <van-col span="8" class="item_n">
          <p class="flex-start">{{ i.orderNum }}</p>
          <p class="flex-start i_name" :style="{
            color:
              i.profitAndLose > 0 ? 'green' : i.profitAndLose < 0 ? 'red' : ''
          }">
            {{ i.profitAndLose }} ({{ i.profitAndLoseParent }})
          </p>
        </van-col>
        <van-col span="8" class="item_n">
          <div class="flex-end" style="margin-bottom: .15em;">
            <span>{{ i.buyOrderPrice }}</span>
          </div>
          <div class="flex-end">
            <span>{{ i.now_price }}</span>
          </div>
        </van-col>
        <van-col span="24" class="flex-start transaction_type">
          <span>{{ types[i.positionType] }}</span>
        </van-col>
        <van-col span="24" class="flex-between-start item_card" v-if="i.positionType == 4">
          <div class="card_label">
            <p>{{ $t("建仓成本") }}</p>
            <p>{{ i.orderTotalPrice }}</p>
          </div>
          <div class="card_label">
            <p>{{ $t("pcje") }}</p>
            <p>{{ i.sellOrderTotalPrice }}</p>
          </div>
          <div class="card_label">
            <p>{{ $t("预期收益") }}</p>
            <p>{{ i.profitAndLose }}</p>
          </div>
        </van-col>
      </van-row>
    </div>
    <!-- 无数据时显示 -->
    <div class="no_data flex-center" v-show="!list || list.length == 0">
      <img src="@/assets/img/zhaobudao2.png" alt="" />
    </div>
    <n-pagination :pageNo.sync="pageNum" :pageSize="pageSize" :total="total"></n-pagination>
    <n-pagination :pageNo.sync="pageNum" :pageSize="pageSize" :total="total" v-if="active != 'GaDan'"></n-pagination>
  </div>
</template>
@@ -90,7 +134,7 @@
import tabHead from "@/components/tabHead.vue";
import * as api from "@/axios/api";
import nPagination from "@/components/nPagination.vue";
import { Notify } from "vant";
import { Notify, Dialog } from "vant";
export default {
  components: {
@@ -119,10 +163,17 @@
      this.getList();
      this.creatTimer();
    },
    active() {
    active(val) {
      this.pageNum = 1;
      this.getList();
      this.creatTimer();
      this.list = []
      if (val == 'GaDan') {
        this.stopTimer()
        this.getList2();
      }
      else {
        this.getList();
        this.creatTimer();
      }
    }
  },
  created() {
@@ -133,7 +184,7 @@
    this.stopTimer();
  },
  methods: {
    // 获取数据
    // 获取持仓数据
    async getList() {
      let data = await api.getchicang({
        state: 0,
@@ -145,6 +196,14 @@
      if (data.status === 0) {
        this.list = data.data.list;
        this.total = data.data.total;
      }
    },
    // 获取挂单数据
    async getList2() {
      let data = await api.getGdOrderList();
      if (data.status === 0) {
        this.list = data.data;
      }
    },
    // 跳转详情
@@ -180,6 +239,31 @@
      } else {
        Notify({ type: "danger", message: res.msg });
      }
    },
    // 删除挂单
    handleDelete(item) {
      Dialog.confirm({
        title: this.$t("提示"),
        message: this.$t("确认删除") + "?",
        confirmButtonText: this.$t("qr"),
        cancelButtonText: this.$t("qx")
      }).then(async () => {
        // 用户确认后执行删除
        try {
          const data = await api.delGuaDan({ id: item.id });
          if (data.status === 0) {
            Notify({ type: "success", message: data.msg || this.$t("hj137") });
            // 刷新挂单列表
            this.getList2();
          } else {
            Notify({ type: "danger", message: data.msg || this.$t("获取数据失败") });
          }
        } catch (error) {
          Notify({ type: "danger", message: this.$t("获取数据失败") });
        }
      }).catch(() => {
        // 用户取消,不做任何操作
      });
    }
  }
};
@@ -302,6 +386,16 @@
      }
    }
    .delete-btn-wrapper {
      width: 100%;
      height: 100%;
      cursor: pointer;
      &:hover {
        opacity: 0.8;
      }
    }
    .edit {
      width: 100%;
      height: 100%;