1
PC-20250623MANY\Administrator
2025-08-09 7043590a8a1d24a4c86472051c103a8e4dc2ddb4
src/page/kline/index.vue
@@ -8,12 +8,15 @@
              <img src="../../assets/img/zuojiantou.png" alt />
            </div>
            <div class="right_title">
              <div class="t_t" style="white-space: nowrap">
                <span>{{ singDetails.spell }}</span>
              <div class="t_t line-one" style="white-space: nowrap">
                <span>{{ singDetails.name }}</span>
              </div>
              <!-- <div class="t_t" style="white-space: nowrap">
                <span>{{ singDetails.name }}({{ singDetails.gid }})</span>
              </div>
              <div class="b_t">
                <span>{{ singDetails.code }}</span>
              </div>
                <span>{{ singDetails.spell }}</span>
              </div> -->
            </div>
          </div>
          <!-- 隐藏右侧金额显示 -->
@@ -44,7 +47,7 @@
                          (
                            Number($store.state.userInfo.userIndexAmt) / 0.9
                          ).toFixed(2)
                        : "₹" + $store.state.userInfo.userIndexAmt
                        : "" + $store.state.userInfo.userIndexAmt
                    }}
                  </span>
                  <span
@@ -55,7 +58,7 @@
                    style="white-space: nowarp"
                  >
                    {{
                      "₹ " +
                      " " +
                      parseFloat(
                        $store.state.userInfo.enableAmt.toFixed(2)
                      ).toLocaleString()
@@ -63,7 +66,7 @@
                  </span>
                </div>
                <div class="sanjiao">
                </div>
              </div>
              <div class="bottom_balance">
@@ -74,16 +77,18 @@
            </div>
          </div> -->
        </div>
        <div class="flex-start" style="font-size: .4rem;">
          <span class="i_icon">{{ bayType }}</span>
          <span class="i_hint" style="color:#777">{{ singDetails.spell }}</span>
        </div>
        <div class="detail_title_a">{{ singDetails.name }}({{ singDetails.gid }})</div>
        <div class="real_time_detail">
          <div class="left_now_price">
            <div class="top_now">
              <!-- <span :class="singDetails.nowPrice - singDetails.preclose_px > 0 ? 'price green' : 'price red'">{{
                  singDetails.nowPrice
              }}</span> -->
              <span
                :class="singDetails.hcrate > 0 ? 'price green' : 'price red'"
                >{{ singDetails.nowPrice }}</span
              >
              <span :class="singDetails.hcrate > 0 ? 'price green' : 'price red'">{{ singDetails.nowPrice }}</span>
            </div>
            <div class="bottom_now">
              <div>
@@ -93,23 +98,15 @@
                }}{{ (singDetails.nowPrice - singDetails.preclose_px).toFixed(2) }}</span> -->
                <span v-else>
                  {{
                    (singDetails.nowPrice - singDetails.preclose_px).toFixed(
                      2
                    ) || 0
                  }}</span
                >
                    (singDetails.nowPrice - singDetails.preclose_px).toFixed(2)
                  }}</span>
              </div>
              <div
                class="tew"
                :class="singDetails.hcrate > 0 ? 'number green' : 'number red'"
              >
              <div class="tew" :class="singDetails.hcrate > 0 ? 'number green' : 'number red'">
                <span v-if="singDetails.nowPrice === 0">-</span>
                <!-- <span v-else>({{ singDetails.nowPrice - singDetails.preclose_px > 0 ? '+' : '' }}
                  {{ singDetails.hcrate ? singDetails.hcrate : '0' }}%)</span> -->
                <span v-else
                  >({{ singDetails.hcrate > 0 ? "+" : "" }}
                  {{ singDetails.hcrate ? singDetails.hcrate : "0" }}%)</span
                >
                <span v-else>
                  ({{ singDetails.hcrate ? singDetails.hcrate : "0" }}%)</span>
              </div>
            </div>
          </div>
@@ -120,24 +117,16 @@
                <!-- <span :class="singDetails.preclose_px < 0 ? 'number green' : 'number red'">{{
                    singDetails.open_px
                }}</span> -->
                <span
                  :class="
                    singDetails.hcrate > 0 ? 'number green' : 'number red'
                  "
                  >{{ singDetails.open_px }}</span
                >
                <span :class="singDetails.hcrate > 0 ? 'number green' : 'number red'
                  ">{{ singDetails.open_px }}</span>
              </div>
              <div class="rights topes">
                <span class="titles">{{ $t("hj73") }}</span>
                <!-- <span :class="singDetails.preclose_px < 0 ? 'number green' : 'number red'">{{
                    singDetails.today_max
                }}</span> -->
                <span
                  :class="
                    singDetails.hcrate > 0 ? 'number green' : 'number red'
                  "
                  >{{ singDetails.today_max }}</span
                >
                <span :class="singDetails.hcrate > 0 ? 'number green' : 'number red'
                  ">{{ singDetails.today_max }}</span>
              </div>
            </div>
            <div class="bottoms">
@@ -146,42 +135,30 @@
                <!-- <span :class="singDetails.preclose_px < 0 ? 'number green' : 'number red'">{{
                    singDetails.preclose_px
                }}</span> -->
                <span
                  :class="
                    singDetails.hcrate > 0 ? 'number green' : 'number red'
                  "
                  >{{ singDetails.preclose_px }}</span
                >
                <span :class="singDetails.hcrate > 0 ? 'number green' : 'number red'
                  ">{{ singDetails.preclose_px }}</span>
              </div>
              <div class="rights bots">
                <span class="titles">{{ $t("hj75") }}</span>
                <!-- <span :class="singDetails.preclose_px < 0 ? 'number green' : 'number red'">{{
                    singDetails.today_min
                }}</span> -->
                <span
                  :class="
                    singDetails.hcrate > 0 ? 'number green' : 'number red'
                  "
                  >{{ singDetails.today_min }}</span
                >
                <span :class="singDetails.hcrate > 0 ? 'number green' : 'number red'
                  ">{{ singDetails.today_min }}</span>
              </div>
            </div>
          </div>
        </div>
      </div>
      <div class="k_line_detail">
        <Kline :type="singDetails.type" />
        <Kline :key="key" :type="singDetails.type" />
      </div>
      <div
        class="priect_top_bottom"
        style="display: none"
        v-if="
          kLineDetails.if_us != 1 &&
          kLineDetails.type != 'hk' &&
          kLineDetails.type != 'hk' &&
          kLineDetails.if_zhishu == 0
        "
      >
      <div class="priect_top_bottom" style="display: none" v-if="
        kLineDetails.if_us != 1 &&
        kLineDetails.type != 'hk' &&
        kLineDetails.type != 'hk' &&
        kLineDetails.if_zhishu == 0
      ">
        <div class="t_title">
          <span>{{ $t("hj76") }}</span>
        </div>
@@ -287,11 +264,7 @@
            <div class="t_ma">
              <span>{{ $t("hj80") }}</span>
            </div>
            <div
              class="ets"
              v-for="(item, i) in timedata.data.details"
              :key="i"
            >
            <div class="ets" v-for="(item, i) in timedata.data.details" :key="i">
              <div class="left_sell1">
                <span>{{ item.split(",")[0] }}</span>
              </div>
@@ -304,11 +277,7 @@
            <div class="t_ma">
              <span>{{ $t("hj81") }}</span>
            </div>
            <div
              class="ets"
              v-for="(item, i) in timedata.data.details"
              :key="i"
            >
            <div class="ets" v-for="(item, i) in timedata.data.details" :key="i">
              <div class="left_sell1">
                <span>{{ item.split(",")[1] }}</span>
              </div>
@@ -321,11 +290,7 @@
            <div class="t_ma">
              <span>{{ $t("hj82") }}</span>
            </div>
            <div
              class="ets"
              v-for="(item, i) in timedata.data.details"
              :key="i"
            >
            <div class="ets" v-for="(item, i) in timedata.data.details" :key="i">
              <div class="left_sell1">
                <span>{{ item.split(",")[2] }}</span>
              </div>
@@ -336,7 +301,7 @@
          </div>
        </div>
      </div>
      <div
      <!-- <div
        class="jianjie"
        v-if="
          !(kLineDetails.if_zhishu != '0' && singDetails.gid.indexOf('hk') > -1)
@@ -351,8 +316,8 @@
        <div class="jet">
          <span>{{ jianjie }}</span>
        </div>
      </div>
      <div
      </div> -->
      <!-- <div
        class="hknews"
        v-if="
          kLineDetails.if_zhishu != '0' && singDetails.gid.indexOf('hk') > -1
@@ -385,8 +350,8 @@
            </mt-tab-container-item>
          </mt-tab-container>
        </div>
      </div>
      <div class="hknews" v-else>
      </div> -->
      <!-- <div class="hknews" v-else>
        <div class="news-tab">
          <div class="t_title">
            <span>{{ $t("hj6") }}</span>
@@ -413,39 +378,35 @@
            </mt-tab-container-item>
          </mt-tab-container>
        </div>
      </div>
      </div> -->
      <!-- <div class="border_bottom"></div> -->
    </div>
    <div class="btns">
      <div class="lefts">
        <div class="left_ca" @click="option()">
          <img
            src="../../assets/img/meishoucang.png"
            alt
            v-if="isOptionOpt === false"
          />
          <img src="../../assets/img/meishoucang.png" alt v-if="isOptionOpt === false" />
          <img src="../../assets/img/shoucangle.png" alt v-else />
        </div>
        <div class="right_xx" @click="handleJj()">
          <a href="#"><img src="../../assets/img/xiaoxi.png" alt /></a>
        </div>
        <!-- <div class="right_xx" @click="handleJj()">
          <a href="#"><img src="../../assets/img/xiaoxi.png" alt/></a>
        </div> -->
      </div>
      <div class="rights">
        <div class="buy_btn">
          <div class="top_buy" @click="goBuy(0)">
            <span>{{ $t("hj84") }}</span>
          </div>
          <div class="bottom_buy">
          <!-- <div class="bottom_buy">
            <span>{{ singDetails.nowPrice }}</span>
          </div>
          </div> -->
        </div>
        <div class="sell_btn" @click="goBuy(1)">
          <div class="top_sell">
            <span>{{ $t("hj85") }}</span>
          </div>
          <div class="bottom_sell">
          <!-- <div class="bottom_sell">
            <span>{{ singDetails.nowPrice }}</span>
          </div>
          </div> -->
        </div>
      </div>
    </div>
@@ -474,10 +435,11 @@
      newsdetailList: [],
      bayType: "",
      timer: null,
      key: 0
    };
  },
  components: {
    Kline,
    Kline
  },
  created() {
@@ -488,10 +450,9 @@
    } else {
      this.timer = setInterval(() => {
        this.getSingDetails();
      }, 500);
      }, 5000);
    }
    this.getOpation();
    // this.$Lazyload();
    this.getUserInfo();
    this.getNohknews();
  },
@@ -504,7 +465,7 @@
  // },
  methods: {
    async getHknews() {
      await api.queryIndexNews().then((res) => {
      await api.queryIndexNews().then(res => {
        if (res.status === 0) {
          this.newsdetailList = res.data.data;
        }
@@ -526,13 +487,13 @@
          this.optionBtn = false;
          this.$message({
            message: this.$t("hj97"),
            type: "success",
            type: "success"
          });
        } else {
          this.optionBtn = false;
          this.$message({
            message: data.msg,
            type: "warning",
            type: "warning"
          });
        }
      } else {
@@ -542,12 +503,12 @@
          this.optionBtn = false;
          this.$message({
            message: this.$t("hj96"),
            type: "success",
            type: "success"
          });
        } else {
          this.$message({
            message: data.msg,
            type: "warning",
            type: "warning"
          });
          this.optionBtn = false;
        }
@@ -571,7 +532,7 @@
    },
    async getOpation() {
      let opts = {
        code: this.$route.query.code,
        code: this.$route.query.code
      };
      let data = await api.isOption(opts);
      if (data.status === 0) {
@@ -584,9 +545,9 @@
    async getSingDetails() {
      let opts = {
        code: this.kLineDetails.code,
        stockType: this.kLineDetails.type,
        stockType: this.kLineDetails.type
      };
      await api.getSingleStock(opts).then((res) => {
      await api.getSingleStock(opts).then(res => {
        if (res.status === 0) {
          this.singDetails = res.data.stock;
          this.bayType = res.data.stock.type;
@@ -598,7 +559,7 @@
          }
          const obj = {
            pid: res.data.stock.code,
            type: res.data.stock.type,
            type: res.data.stock.type
          };
          window.localStorage.setItem("kLine", JSON.stringify(obj));
          // console.log(this.singDetails)
@@ -616,9 +577,9 @@
    async getSingDetailUs() {
      let opts = {
        code: this.kLineDetails.code,
        stockType: this.kLineDetails.type,
        stockType: this.kLineDetails.type
      };
      await api.getUsDetail(opts).then((res) => {
      await api.getUsDetail(opts).then(res => {
        // console.log(res,1111123);
        // var that = this
        // if(!res){
@@ -662,8 +623,8 @@
      this.$router.push({
        path: "/newPage",
        query: {
          listid: item.id,
        },
          listid: item.id
        }
      });
    },
    goBuy(index) {
@@ -677,15 +638,17 @@
          type: this.kLineDetails.if_zhishu,
          id: this.singDetails.id,
          name: this.kLineDetails.name,
          spell: this.singDetails.spell,
          if_us: this.kLineDetails.if_us,
          bayType: this.bayType,
        },
          gid: this.singDetails.gid
        }
      });
      if (navigator.vibrate) {
        // 支持
        navigator.vibrate([55]);
      }
    },
    }
  },
  filters: {
    getName(spell) {
@@ -747,8 +710,8 @@
        .replace(/年|月/g, "-")
        .replace(/日/g, " ");
      return beijingDatetime; // 2017-03-31 16:02:06
    },
  },
    }
  }
};
</script>
@@ -840,7 +803,7 @@
  height: calc(100% - 1.7rem);
  overflow: auto;
  > .content {
  >.content {
    width: 100%;
    height: 100%;
    position: relative;
@@ -861,8 +824,24 @@
  padding: 0 0.3rem;
  background: #fff;
  .detail_title_a {
    font-size: .45rem;
    font-weight: 500;
    margin-top: .2rem;
    line-height: .45rem;
  }
  .i_icon {
    border-radius: 0 26em 26em 0;
    background: #07c160;
    color: #fff;
    padding: 0.1em 0.5em 0.1em 0.4em;
    margin-right: 0.3em;
    font-size: 0.8em;
  }
  .top_back {
    width: 50%;
    width: 90%;
    height: 1.2rem;
    display: flex;
    align-items: center;
@@ -872,22 +851,26 @@
      height: 80%;
      display: flex;
      align-items: center;
      margin-right: 10vw;
      > img {
        margin-top: 0.2rem;
      >img {
        // margin-top: 0.2rem;
        width: 0.6rem;
        height: 0.6rem;
      }
    }
    .right_title {
      width: 3rem;
      height: 80%;
      width: 70%;
      // height: 80%;
      display: flex;
      align-items: center;
      justify-content: center;
      .t_t {
        width: 100%;
        height: 70%;
        display: flex;
        height: 100%;
        line-height: 1.2rem;
        align-items: center;
        font-size: 0.4615rem;
@@ -910,7 +893,7 @@
.k_line_detail {
  width: 100%;
  height: 8.3rem;
  height: 100vw;
  background: #fff;
  border-radius: 0 0 0.3rem 0.3rem;
}
@@ -931,9 +914,10 @@
    .top_now {
      width: 100%;
      // height: 65%;
      font-size: 0.741rem;
      font-size: 25px;
      display: flex;
      align-items: center;
      font-weight: bold;
      span {
        font-weight: 500;
@@ -954,22 +938,23 @@
  }
  .right_ets {
    max-width: 60%;
    max-width: 70%;
    height: 100%;
    > div {
    >div {
      width: 100%;
      padding: 0.15rem 0;
      display: flex;
      align-items: center;
      > div {
      >div {
        // width: 50%;
        height: 100%;
        display: flex;
        justify-content: space-between;
        align-items: center;
        padding: 0 0.1rem;
        .titles {
          padding-right: 0.1rem;
        }
@@ -1029,7 +1014,7 @@
    justify-content: space-between;
    margin-top: 0.6rem;
    > div {
    >div {
      width: 49%;
      height: 100%;
    }
@@ -1050,7 +1035,7 @@
  display: flex;
  margin-top: 0.08rem;
  > div {
  >div {
    width: 50%;
    height: 100%;
    display: flex;
@@ -1133,8 +1118,9 @@
    height: 70%;
    display: flex;
    align-items: center;
    padding-left: .3rem;
    > div {
    >div {
      width: 50%;
      height: 100%;
      display: flex;
@@ -1149,28 +1135,31 @@
  }
  .rights {
    width: 70%;
    width: 80%;
    height: 70%;
    display: flex;
    align-items: center;
    justify-content: space-around;
    justify-content: center;
    padding-right: .2rem;
    > div {
    >div {
      border-radius: 0.15rem;
    }
    .buy_btn {
      width: 45%;
      height: 100%;
      width: 50%;
      height: 80%;
      background: rgb(225, 59, 69);
      color: #fff;
      border-radius: 3rem 0 0 3rem !important;
      .top_buy {
        width: 100%;
        height: 45%;
        height: 100%;
        display: flex;
        justify-content: center;
        align-items: flex-end;
        align-items: center;
        font-size: 0.4rem;
      }
      .bottom_buy {
@@ -1185,17 +1174,19 @@
    }
    .sell_btn {
      width: 45%;
      height: 100%;
      background: rgb(68, 155, 84);
      width: 50%;
      height: 80%;
      background: #c4d600;
      color: #fff;
      border-radius: 0 3rem 3rem 0 !important;
      .top_sell {
        width: 100%;
        height: 45%;
        height: 100%;
        display: flex;
        justify-content: center;
        align-items: flex-end;
        align-items: center;
        font-size: 0.4rem;
      }
      .bottom_sell {