1
PC-20250623MANY\Administrator
2025-08-20 aaf66f2d542927c18fa189642ff4617f0e1039e3
1
2 files modified
214 ■■■■ changed files
src/page/kline/components/kLine.vue 109 ●●●●● patch | view | raw | blame | history
src/page/kline/index.vue 105 ●●●● patch | view | raw | blame | history
src/page/kline/components/kLine.vue
@@ -6,27 +6,60 @@
          <div class="periodWrap kline_periodWrap" ref="kline_periodWrap">
            <!-- DWM 分 -->
            <div class="btnGroup" style="position: relative">
              <div class="btn2" v-for="(item, index) in KLinePeriodMenu" :class="{ active: KLinePeriodIndex == index }"
                :key="item.ID" @click="OnClickKLinePeriodMenu(index, item, 'kline')">
              <div
                class="btn2"
                v-for="(item, index) in KLinePeriodMenu"
                :class="{ active: KLinePeriodIndex == index }"
                :key="item.ID"
                @click="OnClickKLinePeriodMenu(index, item, 'kline')"
              >
                <span>{{ item.Name }}</span>
              </div>
              <div style="position: absolute; right: 0; top: 25px; z-index: 99" v-if="isShow == true">
                <div class="btnGroup" v-show="IsShowRightMenu" style="display: flex; flex-direction: column">
                  <div class="btn" :class="{ active: KLineRightIndex == index }" v-for="(item, index) in KLineRightMenu"
                    :key="item.ID" style="padding: 10px" @click="OnClickKLineRightMenu(index, item)">
              <div
                style="position: absolute; right: 0; top: 25px; z-index: 99"
                v-if="isShow == true"
              >
                <div
                  class="btnGroup"
                  v-show="IsShowRightMenu"
                  style="display: flex; flex-direction: column"
                >
                  <div
                    class="btn"
                    :class="{ active: KLineRightIndex == index }"
                    v-for="(item, index) in KLineRightMenu"
                    :key="item.ID"
                    style="padding: 10px"
                    @click="OnClickKLineRightMenu(index, item)"
                  >
                    {{ item.Name }}
                  </div>
                  <div class="btn" v-for="item in KLineIndexMenu" :key="item.ID" style="padding: 10px"
                    @click="ChangeKLineIndex(item)">
                  <div
                    class="btn"
                    v-for="item in KLineIndexMenu"
                    :key="item.ID"
                    style="padding: 10px"
                    @click="ChangeKLineIndex(item)"
                  >
                    {{ item.Name }}
                  </div>
                </div>
              </div>
            </div>
          </div>
          <div class="hqchart" id="hqchart_minute" ref="kline" v-show="chartType == 'minute'"></div>
          <div class="hqchart" id="hqchart_kline" ref="kline2" v-show="chartType == 'kline'"></div>
          <div
            class="hqchart"
            id="hqchart_minute"
            ref="kline"
            v-show="chartType == 'minute'"
          ></div>
          <div
            class="hqchart"
            id="hqchart_kline"
            ref="kline2"
            v-show="chartType == 'kline'"
          ></div>
        </div>
      </div>
    </div>
@@ -58,7 +91,7 @@
      // { Index:"KDJ", Modify: false, Change: true, Close: true},
      // { Index: "KDJ", Modify: false, Change: false, Close: false }
    ],
    SplashTitle: 'loading...',
    SplashTitle: "loading...",
    Symbol: "AAPL.usa",
    IsAutoUpdate: true, // 是自动更新数据
    AutoUpdateFrequency: 20000,
@@ -919,7 +952,7 @@
      }
      // { Index: 'MACD', Modify: true, Change: true, Close: false }
    ],
    SplashTitle: 'loading...',
    SplashTitle: "loading...",
    Symbol: "600015.sh",
    IsAutoUpdate: true, // 是自动更新数据
    AutoUpdateFrequency: 15000,
@@ -1189,6 +1222,9 @@
    clearInterval(this.timerss); // 在组件销毁前清除定时器
    this.timerss = null;
  },
  destroyed() {
    clearInterval(this.timerss); // 在组件销毁前清除定时器
  },
  methods: {
    OnSize() {
      var width = this.$refs.right.clientWidth;
@@ -1332,32 +1368,35 @@
        clearInterval(this.timerss);
        this.timerss = null;
      }
      this.timerss = setInterval(() => {
        switch (data.Name) {
          // 分时图数据对接
          case "MinuteChartContainer::RequestMinuteData":
            EastMoney.HQData.NetworkFilter(data, callback);
            break;
          case "MinuteChartContainer::RequestHistoryMinuteData":
            EastMoney.HQData.NetworkFilter(data, callback);
            break;
          case "KLineChartContainer::RequestHistoryData": // 日线全量数据下载
            EastMoney.HQData.NetworkFilter(data, callback);
            break;
          case "KLineChartContainer::RequestRealtimeData": // 日线实时数据更新
      this.timerss = setInterval(() => {
            EastMoney.HQData.NetworkFilter(data, callback);
            break;
          case "KLineChartContainer::RequestFlowCapitalData": // 流通股本
            EastMoney.HQData.NetworkFilter(data, callback);
            break;
          case "KLineChartContainer::ReqeustHistoryMinuteData": // 分钟全量数据下载
            EastMoney.HQData.NetworkFilter(data, callback);
            break;
          case "KLineChartContainer::RequestMinuteRealtimeData": // 分钟增量数据更新
            EastMoney.HQData.NetworkFilter(data, callback);
            break;
        }
        // switch (data.Name) {
        //   // 分时图数据对接
        //   case "MinuteChartContainer::RequestMinuteData":
        //     EastMoney.HQData.NetworkFilter(data, callback);
        //     break;
        //   case "MinuteChartContainer::RequestHistoryMinuteData":
        //     EastMoney.HQData.NetworkFilter(data, callback);
        //     break;
        //   case "KLineChartContainer::RequestHistoryData": // 日线全量数据下载
        //     EastMoney.HQData.NetworkFilter(data, callback);
        //     break;
        //   case "KLineChartContainer::RequestRealtimeData": // 日线实时数据更新
        //     EastMoney.HQData.NetworkFilter(data, callback);
        //     break;
        //   case "KLineChartContainer::RequestFlowCapitalData": // 流通股本
        //     EastMoney.HQData.NetworkFilter(data, callback);
        //     break;
        //   case "KLineChartContainer::ReqeustHistoryMinuteData": // 分钟全量数据下载
        //     EastMoney.HQData.NetworkFilter(data, callback);
        //     break;
        //   case "KLineChartContainer::RequestMinuteRealtimeData": // 分钟增量数据更新
        //     EastMoney.HQData.NetworkFilter(data, callback);
        //     break;
        // }
      }, 5000);
    },
src/page/kline/index.vue
@@ -81,14 +81,19 @@
          <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="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>
@@ -99,14 +104,19 @@
                <span v-else>
                  {{
                    (singDetails.nowPrice - singDetails.preclose_px).toFixed(2)
                  }}</span>
                  }}</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 ? singDetails.hcrate : "0" }}%)</span>
                  ({{ singDetails.hcrate ? singDetails.hcrate : "0" }}%)</span
                >
              </div>
            </div>
          </div>
@@ -117,16 +127,24 @@
                <!-- <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">
@@ -135,16 +153,24 @@
                <!-- <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>
@@ -153,12 +179,16 @@
      <div class="k_line_detail">
        <Kline :key="key" :type="singDetails.type" />
      </div>
      <div class="priect_top_bottom" style="display: none" v-if="
      <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>
@@ -264,7 +294,11 @@
            <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>
@@ -277,7 +311,11 @@
            <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>
@@ -290,7 +328,11 @@
            <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>
@@ -384,7 +426,11 @@
    <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()">
@@ -443,11 +489,19 @@
  },
  created() {
    // 进入页面的时候清除所以得计时器,防止页面切换的时候出现多个定时器
    let end = setTimeout(function() {}, 0);
    for (let i = 0; i <= end; i++) {
      clearTimeout(i);
      clearInterval(i);
    }
    const { query } = this.$route;
    this.kLineDetails = query;
    if (query.if_us === "1") {
      this.getSingDetailUs();
    } else {
      this.getSingDetails();
      this.timer = setInterval(() => {
        this.getSingDetails();
      }, 5000);
@@ -457,6 +511,9 @@
    this.getNohknews();
  },
  beforeDestroy() {
    this.clearInterval(this.timer); // 在组件销毁前清除定时器
  },
  destroyed() {
    this.clearInterval(this.timer); // 在组件销毁前清除定时器
  },
  // beforeDestroy() {
@@ -825,10 +882,10 @@
  background: #fff;
  .detail_title_a {
    font-size: .45rem;
    font-size: 0.45rem;
    font-weight: 500;
    margin-top: .2rem;
    line-height: .45rem;
    margin-top: 0.2rem;
    line-height: 0.45rem;
  }
  .i_icon {
@@ -1118,7 +1175,7 @@
    height: 70%;
    display: flex;
    align-items: center;
    padding-left: .3rem;
    padding-left: 0.3rem;
    >div {
      width: 50%;
@@ -1140,7 +1197,7 @@
    display: flex;
    align-items: center;
    justify-content: center;
    padding-right: .2rem;
    padding-right: 0.2rem;
    >div {
      border-radius: 0.15rem;