1
PC-20250623MANY\Administrator
2025-07-16 61944978f51ca99a001162ac1ff3d32dcd5315ed
src/page/markets/ipo.vue
@@ -8,40 +8,54 @@
      </template>
    </page-head>
    <!-- <div class="trading_card" v-for="i in 5" :key="i">
      <p class="card_label1 flex-start">
        <span class="label_icon">US</span>
        <span>444</span>
    <div class="trading_card" v-for="i in list" :key="i.id">
      <div class="card_label1 flex-between-start">
        <div>
          <p class="flex-start gp">
            <span>{{ i.code }}</span>
          </p>
          <p class="flex-start">
            <span class="label_icon">{{ i.stockType }}</span>
            <span class="label_name line-one">{{ i.name }}</span>
          </p>
        </div>
        <div class="flex-end">
          <span class="label_status" v-if="i.listDate > Date.now()">{{
            $t("待上市")
          }}</span>
          <span class="label_status1" v-else>{{ $t("已上市") }}</span>
        </div>
      </div>
      <p class="card_label2 flex-between">
        <span>{{ $t("hj81") }}</span>
        <span>{{ i.stockType | currencySymbol }} {{ i.price }}</span>
      </p>
      <p class="card_label2 flex-between">
        <span>{{ $t("最低认购金额") }}</span>
        <span>$ 2,000</span>
        <span>{{ $t("可申购数量") }}</span>
        <span>{{ i.orderNumber }}</span>
      </p>
      <p class="card_label2 flex-between">
        <span>{{ $t("交易成功率") }}</span>
        <span>100%</span>
        <span>{{ $t("发行时间") }}</span>
        <span>{{ i.subscriptionTime | gettime }}</span>
      </p>
      <p class="card_label2 flex-between">
        <span>{{ $t("预期收益") }}</span>
        <span>3</span>
        <span>{{ $t("上市时间") }}</span>
        <span>{{ i.listDate | gettime }}</span>
      </p>
      <p class="card_label2 flex-between">
        <span>{{ $t("交易周期") }}</span>
        <span>1天</span>
      </p>
      <p class="card_buy flex-center">
      <p class="card_buy flex-center" @click="buyOpen(i)">
        <van-icon name="add-square" size=".4em" />
        <span>{{ $t("gm") }}</span>
        <span>{{ $t("申购") }}</span>
      </p>
    </div> -->
    </div>
    <!-- 无数据时显示 -->
    <div class="no_data flex-center">
    <div class="no_data flex-center" v-show="!list || list.length === 0">
      <img src="@/assets/img/zhaobudao2.png" alt="" />
    </div>
@@ -50,12 +64,32 @@
      :pageSize="pageSize"
      :total="total"
    ></n-pagination>
    <!-- 购买弹窗 -->
    <van-popup v-model="buyShow" round>
      <van-form class="buy_popup" @submit="popupSubmit">
        <div class="popup_title flex-center">
          <span>{{ $t("操作确认") }}</span>
        </div>
        <div class="buts flex-between">
          <p class="flex-center" @click="buyShow = false">
            <span>{{ $t("qx") }}</span>
          </p>
          <p class="flex-center" native-type="submit">
            <van-button native-type="submit">{{ $t("qr") }}</van-button>
          </p>
        </div>
      </van-form>
    </van-popup>
  </div>
</template>
<script>
import PageHead from "@/components/pageHead.vue";
import nPagination from "@/components/nPagination.vue";
import * as api from "@/axios/api";
import { Toast } from "vant";
export default {
  components: {
@@ -67,12 +101,61 @@
      pageNum: 1,
      pageSize: 10,
      total: 1,
      searchValue: ""
      searchValue: "",
      buyShow: false, // 购买弹窗控制
      popupData: {}, // 点击购买的数据
      list: []
    };
  },
  watch: {
    pageNum() {
      this.list = [];
      this.getStockSubscribeList();
    }
  },
  created() {
    this.getStockSubscribeList();
  },
  methods: {
    submit() {
      console.log(this.searchValue);
    // 购买弹窗
    buyOpen(i) {
      this.popupData = i;
      this.buyShow = true;
    },
    // 购买提交
    async popupSubmit() {
      let opt = {
        newCode: this.popupData.code,
        applyNums: this.popupData.orderNumber,
        password: this.popupData.password,
        newlistId: this.popupData.newlistId,
        type: this.popupData.type,
      }
      let data = await api.getNewAdd(opt);
      console.log(data.status);
      if (data.status == 0) {
        Toast.success();
        setTimeout(() => {
          this.buyShow = false;
        }, 1000);
      } else {
        Toast.fail(data.msg);
      }
    },
    // 获取列表
    async getStockSubscribeList() {
      let opt = {
        pageNum: this.pageNum,
        pageSize: this.pageSize
      };
      let data = await api.getStockSubscribeList(opt);
      if (data.status === 0) {
        this.list = data.data.list;
        this.total = data.data.total || 1;
      } else {
        Toast(data.msg);
      }
    }
  }
};
@@ -80,6 +163,7 @@
<style lang="less" scoped>
@green: #c4d600;
@brown: #ff976a;
.ipo {
  font-size: 10vw;
  width: 100%;
@@ -124,8 +208,25 @@
    .card_label1 {
      color: @green;
      height: 1.33em;
      min-height: 1.33em;
      padding: 0.25em 0;
      .label_name {
        // width: 14em;
        flex: 1;
        color: #969799;
      }
      .label_status {
        background-color: @brown;
        color: #fff;
        padding: 0.3em 0.5em;
        border-radius: 0.3em;
      }
      .label_status1 {
        background-color: @green;
        color: #fff;
        padding: 0.3em 0.5em;
        border-radius: 0.3em;
      }
      span {
        font-size: 0.4em;
      }
@@ -137,6 +238,98 @@
        margin-right: 0.3em;
        font-size: 0.3em;
      }
      .gp {
        margin-bottom: 0.2em;
      }
    }
  }
  .buy_popup {
    width: 8.8em;
    /deep/ .van-cell {
      padding: 0;
      font-size: 0.4em;
    }
    /deep/ .van-field__body {
      // border: 0.01em solid #f5f5f5;
      // height: 2.5em;
      // padding: 0 0.5em;
      // margin-top: 0.5em;
    }
    /deep/ .van-field__label {
      color: #000;
    }
    /deep/ .van-stepper__minus {
      width: 1rem;
      height: 1rem;
    }
    /deep/ .van-stepper__plus {
      width: 1rem;
      height: 1rem;
    }
    /deep/ .van-stepper__input {
      height: 1rem;
      width: 2rem;
      font-size: 0.4rem;
    }
    .division {
      width: 100%;
      height: 0.25em;
      background-color: #f5f5f5;
    }
    .popup_title {
      width: 100%;
      min-height: 2.22em;
      font-weight: bold;
      padding: 0 0.25em;
      border: #f5f5f5 solid 0.01em;
    }
    .popup_name {
      color: @green;
      .popup_icon {
        background: @green;
        color: #fff;
        padding: 0.2em 0.35em;
        border-radius: 0.15em;
        margin-right: 0.3em;
        font-size: 0.3em;
      }
    }
    .popup_item {
      width: 8.3em;
      margin: 0 auto;
      padding: 0.35em 0;
      border-bottom: #f5f5f5 solid 0.01em;
      .zxgm {
        height: 0.8em;
        width: 2em;
        border-radius: 0.1em;
        border: #ddd solid 0.01em;
        span {
          font-size: 0.3em;
        }
      }
    }
    span {
      font-size: 0.4em;
    }
    .buts {
      width: 100%;
      height: 1.22em;
      /deep/ .van-button {
        border: none;
        font-size: 1em;
        color: @green;
      }
      p {
        height: 100%;
        flex: 1;
      }
      & > p:last-child {
        border-left: #f5f5f5 solid 0.01em;
        color: @green;
      }
    }
  }