1
PC-20250623MANY\Administrator
2025-08-18 fbe4c23b9a0316937bc63213c910cbb393d6bc65
1
12 files modified
4 files added
533 ■■■■■ changed files
src/assets/foot/tab_5.png patch | view | raw | blame | history
src/assets/foot/tab_5_a.png patch | view | raw | blame | history
src/assets/img/down_4.png patch | view | raw | blame | history
src/axios/api.js 4 ●●●● patch | view | raw | blame | history
src/components/foot.vue 37 ●●●● patch | view | raw | blame | history
src/components/index-component.vue 25 ●●●●● patch | view | raw | blame | history
src/components/stock-list.vue 3 ●●●● patch | view | raw | blame | history
src/page/home/newList.vue 2 ●●● patch | view | raw | blame | history
src/page/kline/components/kLine.vue 153 ●●●●● patch | view | raw | blame | history
src/page/kline/index.vue 119 ●●●●● patch | view | raw | blame | history
src/page/kline/kIndex.vue 11 ●●●● patch | view | raw | blame | history
src/page/markets/markets.vue 55 ●●●●● patch | view | raw | blame | history
src/page/markets/marketsList.vue 64 ●●●●● patch | view | raw | blame | history
src/page/user/account.vue 8 ●●●●● patch | view | raw | blame | history
src/page/user/myOrder.vue 15 ●●●● patch | view | raw | blame | history
src/router/index.js 37 ●●●●● patch | view | raw | blame | history
src/assets/foot/tab_5.png
src/assets/foot/tab_5_a.png
src/assets/img/down_4.png
src/axios/api.js
@@ -667,3 +667,7 @@
export function rtDk(options) {
  return post(`/api/dk/rtDk.do?id=` + options);
}
// 市场指数图数据
export function getIndexData() {
  return post(`/api/stock/getIndexData.do`);
}
src/components/foot.vue
@@ -7,19 +7,38 @@
      <div class="footImgDeft">
        <img
          v-show="$store.state.select == '/markets'"
          src="../assets/foot/tab_1_a.png"
          src="../assets/foot/tab_5_a.png"
        />
        <img
          v-show="$store.state.select != '/markets'"
          src="../assets/foot/tab_1.png"
          src="../assets/foot/tab_5.png"
        />
      </div>
      <div :class="$store.state.select == '/markets' ? 'blueFont' : ''">
        {{ $t("hj62") }}
        {{ $t("hj224") }}
      </div>
    </div>
    <div
      :class="touch == 2 ? 'footDemos' : 'footDemo'"
      @click="goRouter('/markets-list', 2)"
    >
      <div class="footImgDeft">
        <img
          v-show="$store.state.select == '/markets-list'"
          src="../assets/foot/tab_1_a.png"
        />
        <img
          v-show="$store.state.select != '/markets-list'"
          src="../assets/foot/tab_1.png"
        />
      </div>
      <div :class="$store.state.select == '/markets-list' ? 'blueFont' : ''">
        {{ $t("hj62") }}
      </div>
    </div>
    <!-- <div
      :class="touch == 2 ? 'footDemos' : 'footDemo'"
      @click="goRouter('/fund_index', 2)"
    >
@@ -36,24 +55,24 @@
      <div :class="$store.state.select == '/fund_index' ? 'blueFont' : ''">
        {{ $t("理财") }}
      </div>
    </div>
    </div> -->
    <div
      :class="touch == 3 ? 'footDemos' : 'footDemo'"
      @click="goRouter('/new-list', 3)"
      @click="goRouter('/myorder', 3)"
    >
      <div class="footImgDeft">
        <img
          v-show="$store.state.select == '/new-list'"
          v-show="$store.state.select == '/myorder'"
          src="../assets/foot/tab_3_a.png"
        />
        <img
          v-show="$store.state.select != '/new-list'"
          v-show="$store.state.select != '/myorder'"
          src="../assets/foot/tab_3.png"
        />
      </div>
      <div :class="$store.state.select == '/new-list' ? 'blueFont' : ''">
        {{ $t("hj6") }}
      <div :class="$store.state.select == '/myorder' ? 'blueFont' : ''">
        {{ $t("订单") }}
      </div>
    </div>
src/components/index-component.vue
@@ -1,15 +1,16 @@
<template>
  <div class="index_component" :class="dataObj.chg > 0 ? 'bg-green' : 'bg-red'" @click="toLine">
  <div class="index_component bg-red" @click="toLine">
    <div class="item_title">
      <span class="line-one">{{ dataObj.name }}</span>
      <span class="line-one">{{ dataObj.symbol }}</span>
    </div>
    <div class="item_price">{{ dataObj.last }}</div>
    <div class="item_index flex-between">
      <span>{{ dataObj.chg }}</span>
      <span>{{ dataObj.chgPct }}%</span>
    </div>
    <div style="width:100%;flex:1">
      <Echart :ids="ids" :colorType="dataObj.chg / 1" :data="klist"></Echart>
    <div style="width:100%;flex:1" class="flex-center">
      <!-- <Echart :ids="ids" :colorType="dataObj.chg / 1" :data="klist"></Echart> -->
      <img src="@/assets/img/down_4.png" style="width:80%;" />
    </div>
  </div>
</template>
@@ -25,7 +26,7 @@
    },
    dataObj: {
      type: Object,
      default: () => { }
      default: () => {}
    }
  },
  computed: {
@@ -42,19 +43,20 @@
  methods: {
    // 跳转到指数图
    toLine() {
      return
      // 点击进入详情
      const obj = {
        pid: this.dataObj.id || "",
        type: this.dataObj.stockType || ""
        type: "US",
      };
      window.localStorage.setItem("kLine", JSON.stringify(obj));
      this.$router.push({
        path: "/kLineIndex",
        // path: "/kline",
        query: {
          // if_us: 1,
          code: this.dataObj.id,
          type: this.dataObj.stockType
          type: "US"
        }
      });
    }
@@ -63,10 +65,10 @@
</script>
<style lang="less" scoped>
@red: #ee0a24;
@red: #f54346;
.bg-red {
  background-color: rgba(red, 0.1);
  background: linear-gradient(180deg, #2d1b23, #161a23);
  color: @red;
}
@@ -86,7 +88,8 @@
  .item_title {
    padding: 0 0.5em;
    font-size: 0.35em;
    color: #333;
    color: #fff;
    text-align: center;
    span {
      width: 100%;
src/components/stock-list.vue
@@ -89,7 +89,8 @@
      default: false
    }
  },
  watch: {},
  watch: {
  },
  mounted() {
    this.init();
    this.initWebSocket();
src/page/home/newList.vue
@@ -1,6 +1,6 @@
<template>
  <div class="new_list">
    <tab-head :title="$t('hj6')"></tab-head>
    <!-- <tab-head :title="$t('hj6')"></tab-head> -->
    <news-item v-for="item in newsList" :key="item.id" :item="item"></news-item>
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>
@@ -43,12 +76,12 @@
import EastMoney from "../../../eastmoney/HQData.js";
import i18n from "@/locales/index.js";
HQChart.Chart.MARKET_SUFFIX_NAME.GetMarketStatus = function (symbol) {
HQChart.Chart.MARKET_SUFFIX_NAME.GetMarketStatus = function(symbol) {
  return 2;
}; // 一直交易
function DefaultData() { }
function DefaultData() {}
DefaultData.GetMinuteOption = function () {
DefaultData.GetMinuteOption = function() {
  var option = {
    Type: "分钟走势图", // 创建图形类型
    // Type:'分钟走势图横屏',
@@ -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,
@@ -113,7 +146,7 @@
  return option;
};
DefaultData.GetMinuteIndexMenu = function () {
DefaultData.GetMinuteIndexMenu = function() {
  var data = [
    {
      Name: "MACD",
@@ -140,7 +173,7 @@
  return data;
};
DefaultData.GetKLineIndexMenu = function () {
DefaultData.GetKLineIndexMenu = function() {
  var data = [
    {
      Name: "MA",
@@ -177,7 +210,7 @@
  return data;
};
DefaultData.GetTestSymbolMenu = function () {
DefaultData.GetTestSymbolMenu = function() {
  // 品种代码规则 ${东方财富品种代码}_${东方财富市场}.${HQChart内部市场后缀}
  var data = [
    {
@@ -898,7 +931,7 @@
};
// k形图
DefaultData.GetKLineOption = function () {
DefaultData.GetKLineOption = function() {
  var option = {
    Type: "历史K线图", // 创建图形类型
    Language: "EN", // 英文 'EN' 简体中文:'CN' 繁体中文:"TC"
@@ -919,7 +952,7 @@
      }
      // { Index: 'MACD', Modify: true, Change: true, Close: false }
    ],
    SplashTitle: 'loading...',
    SplashTitle: "loading...",
    Symbol: "600015.sh",
    IsAutoUpdate: true, // 是自动更新数据
    AutoUpdateFrequency: 15000,
@@ -995,7 +1028,7 @@
  return option;
};
DefaultData.GetMinuteDayMenu = function () {
DefaultData.GetMinuteDayMenu = function() {
  var data = [
    {
      Name: "1D",
@@ -1022,7 +1055,7 @@
  return data;
};
DefaultData.GetKLinePeriodMenu = function () {
DefaultData.GetKLinePeriodMenu = function() {
  var data = [
    // { Name: i18n.t('hj86'), ID: 3 },分时额外处理
    // { Name: i18n.t("hj86"), ID: 4 },
@@ -1055,7 +1088,7 @@
  return data;
};
DefaultData.GetKLineRightMenu = function () {
DefaultData.GetKLineRightMenu = function() {
  var data = [
    {
      Name: i18n.t("hj93"),
@@ -1176,7 +1209,7 @@
    var self = this;
    // 侦听元素的调整大小事件,并使用元素作为调整大小事件的参数来调用侦听器函数。传递给函数的选项将
    // 覆盖实例选项
    erd.listenTo(this.$refs["rightContent"], function (element) {
    erd.listenTo(this.$refs["rightContent"], function(element) {
      var width = element.offsetWidth;
      var height = element.offsetHeight;
      self.tableHeight = height - 10; // 将监听到的宽高进行赋值
@@ -1221,8 +1254,9 @@
    SetChartStyle() {
      EastMoney.HQData.SetMinuteChartCoordinate();
      var blackStyle = HQChart.Chart.HQChartStyle.GetStyleConfig(
        HQChart.Chart.STYLE_TYPE_ID.WHITE_ID
      ); // 读取黑色风格配置
        // HQChart.Chart.STYLE_TYPE_ID.WHITE_ID // 白色风格
        HQChart.Chart.STYLE_TYPE_ID.BLACK_ID // 黑色风格
      );
      blackStyle.UpBarColor = "#449b54"; //上涨
      blackStyle.DownBarColor = "#e13b45";
@@ -1251,8 +1285,6 @@
      option.NetworkFilter = (data, callback) => {
        this.NetworkFilter(data, callback);
        // this.NetworkFilter(data, callback);
      }; // 网络请求回调函数
      var chart = HQChart.Chart.JSChart.Init(this.$refs.kline2);
      HQChart.Chart.JSChart.GetResource().FrameLogo.Text = null;
@@ -1332,35 +1364,38 @@
        clearInterval(this.timerss);
        this.timerss = null;
      }
      this.getFilter(data, callback);
      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": // 日线实时数据更新
            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;
        }
        this.getFilter(data, callback);
      }, 5000);
    },
    getFilter(data, callback) {
      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;
      }
    },
    handleSelect(key, keyPath) {
      console.log(key, keyPath);
      this.ChangeSymbol(keyPath[1]);
@@ -1434,7 +1469,7 @@
      justify-content: center;
      // flex-direction: column;
      >.btn {
      > .btn {
        cursor: pointer;
        width: 100%;
        text-align: center;
@@ -1479,9 +1514,9 @@
    .btnGroup {
      // border: 1px solid #242424;
      color: #000;
      color: #fff;
      display: flex;
      background: #fff;
      // background: #fff;
      .btn {
        margin: 0 0.1rem;
@@ -1499,7 +1534,7 @@
      .active {
        color: #c4d600;
        font-weight: 800;
        background: rgb(245, 245, 245);
        background: #444;
      }
    }
@@ -1514,14 +1549,14 @@
    #hqchart_minute {
      // height: 100%;
      background-color: #fff;
      background-color: #000;
      height: 5rem;
      position: relative;
    }
    #hqchart_kline {
      // height: 100% !important;
      background-color: #fff;
      background-color: #000;
      height: 5rem;
      position: relative;
    }
@@ -1546,7 +1581,7 @@
  display: flex;
  align-items: center;
  justify-content: center;
  background: #fff !important;
  // background: #fff !important;
}
.btnGroup {
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="
        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>
@@ -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()">
@@ -448,6 +494,7 @@
    if (query.if_us === "1") {
      this.getSingDetailUs();
    } else {
      this.getSingDetails();
      this.timer = setInterval(() => {
        this.getSingDetails();
      }, 5000);
@@ -803,7 +850,7 @@
  height: calc(100% - 1.7rem);
  overflow: auto;
  >.content {
  > .content {
    width: 100%;
    height: 100%;
    position: relative;
@@ -825,10 +872,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 {
@@ -853,7 +900,7 @@
      align-items: center;
      margin-right: 10vw;
      >img {
      > img {
        // margin-top: 0.2rem;
        width: 0.6rem;
        height: 0.6rem;
@@ -941,13 +988,13 @@
    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;
@@ -1014,7 +1061,7 @@
    justify-content: space-between;
    margin-top: 0.6rem;
    >div {
    > div {
      width: 49%;
      height: 100%;
    }
@@ -1035,7 +1082,7 @@
  display: flex;
  margin-top: 0.08rem;
  >div {
  > div {
    width: 50%;
    height: 100%;
    display: flex;
@@ -1118,9 +1165,9 @@
    height: 70%;
    display: flex;
    align-items: center;
    padding-left: .3rem;
    padding-left: 0.3rem;
    >div {
    > div {
      width: 50%;
      height: 100%;
      display: flex;
@@ -1140,9 +1187,9 @@
    display: flex;
    align-items: center;
    justify-content: center;
    padding-right: .2rem;
    padding-right: 0.2rem;
    >div {
    > div {
      border-radius: 0.15rem;
    }
src/page/kline/kIndex.vue
@@ -5,7 +5,7 @@
        <div class="ti_cont">
          <div class="top_back">
            <div class="left_back" @click="handleBackaa()">
              <img src="../../assets/img/zuojiantou.png" alt />
              <img src="../../assets/img/backs.png" alt />
            </div>
            <div class="right_title">
              <div class="t_t" style="white-space: nowrap">
@@ -256,11 +256,11 @@
        </div>
      </div>
    </div>
    <div class="recommendation">
    <!-- <div class="recommendation">
      <div class="division"></div>
      <div class="recommendation_title">{{ $t("相关股票") }}</div>
      <stock-list :propOption="propOption"></stock-list>
    </div>
    </div> -->
  </div>
</template>
@@ -306,6 +306,7 @@
    if (query.if_us === "1") {
      this.getSingDetailUs();
    } else {
      this.getSingDetails();
      this.timer = setInterval(() => {
        this.getSingDetails();
      }, 2000);
@@ -313,7 +314,7 @@
    this.getOpation();
    // this.$Lazyload();
    this.getUserInfo();
    this.getNohknews();
    // this.getNohknews();
  },
  beforeDestroy() {
    this.clearInterval(this.timer); // 在组件销毁前清除定时器
@@ -696,7 +697,7 @@
  width: 100%;
  // height: 3.2rem;
  padding: 0 0.3rem;
  background: #fff;
  // background: #fff;
  .top_back {
    width: 50%;
src/page/markets/markets.vue
@@ -1,15 +1,6 @@
<template>
  <div class="markets">
    <tab-head :title="$t('hj62')"></tab-head>
    <div class="tui-search">
      <van-field
        v-model="keyValue"
        :placeholder="$t('hj37')"
        right-icon="search"
        @click-right-icon="search"
      />
    </div>
    <tab-head :title="$t('hj224')"></tab-head>
    <div class="tui-tabs flex-start">
      <div class="tab_item flex-center">
@@ -18,7 +9,7 @@
    </div>
    <div class="flex-between navs">
      <div class="nav_item" v-for="item in usDataStockBeans" :key="item.id">
      <div class="nav_item" v-for="item in sList" :key="item.id">
        <index-component :ids="'a' + item.id" :dataObj="item"></index-component>
      </div>
    </div>
@@ -43,13 +34,15 @@
      </div>
    </div>
    <stock-list :propOption="propOption" ref="stockList"></stock-list>
    <new-list></new-list>
  </div>
</template>
<script>
import newList from "@/page/home/newList.vue";
import indexComponent from "@/components/index-component.vue";
import tabHead from "@/components/tabHead.vue";
import stockList from "@/components/stock-list.vue";
import * as api from "@/axios/api";
export default {
  name: "markets",
@@ -58,7 +51,6 @@
      pageNum: 1,
      pageSize: 10,
      kData: {},
      keyValue: "", // 搜索
      tabs: [
        {
          name: this.$t("订单"),
@@ -76,47 +68,39 @@
          img: require("@/assets/img/market_3.png")
        }
      ],
      usDataStockBeans: []
      sList: []
    };
  },
  components: {
    tabHead,
    stockList
    indexComponent,
    newList
  },
  watch: {},
  computed: {
    // 传递给列表组件的类型值
    propOption() {
      return { stockType: "US", keyWords: this.keyValue };
    }
  created() {
    this.getZs();
  },
  async created() {},
  mounted() {},
  methods: {
    // 搜索
    search() {
      this.$refs.stockList.init();
    // 获取三张指数图
    async getZs() {
      let data = await api.getIndexData();
      if (data.status == 0) {
        this.sList = data.data;
      }
    }
  }
};
</script>
<style lang="less" scoped>
/deep/ .van-cell {
  background-color: rgba(#000, 0);
  border: rgba(#fff, 0.5) 2px solid;
  border-radius: 5em;
}
/deep/ .van-icon {
  font-size: 1.6em;
}
.markets {
  font-size: 10vw;
  width: 100vw;
  min-height: 100vh;
  padding-bottom: 1.5rem;
  .navs {
    padding: 0 0.25em 0 0.25em;
    padding: 0.25em 0.25em 0 0.25em;
    .nav_item {
      width: 2.833em;
@@ -172,9 +156,6 @@
        font-size: 0.4em;
      }
    }
  }
  .tui-search {
    padding: 0.225em;
  }
}
</style>
src/page/markets/marketsList.vue
New file
@@ -0,0 +1,64 @@
<template>
  <div class="market_list">
    <tab-head :title="$t('hj62')"></tab-head>
    <div class="tui-search">
      <van-field
        v-model="keyValue"
        :placeholder="$t('hj37')"
        right-icon="search"
        @click-right-icon="search"
      />
    </div>
    <stock-list :propOption="propOption" ref="stockList"></stock-list>
  </div>
</template>
<script>
import tabHead from "@/components/tabHead.vue";
import stockList from "@/components/stock-list.vue";
export default {
  data() {
    return {
      keyValue: "" // 搜索
    };
  },
  components: {
    stockList,
    tabHead
  },
  computed: {
    // 传递给列表组件的类型值
    propOption() {
      return { stockType: "US", keyWords: this.keyValue };
    }
  },
  methods: {
    // 搜索
    search() {
      this.$refs.stockList.init();
    }
  }
};
</script>
<style lang="less" scoped>
/deep/ .van-cell {
  background-color: rgba(#000, 0);
  border: rgba(#fff, 0.5) 2px solid;
  border-radius: 5em;
}
/deep/ .van-icon {
  font-size: 1.6em;
}
.market_list {
  font-size: 10vw;
  width: 100vw;
  min-height: 100vh;
  padding-bottom: 1.5rem;
  .tui-search {
    padding: 0.225em;
  }
}
</style>
src/page/user/account.vue
@@ -28,12 +28,12 @@
          </div>
        </div>
      </div>
      <div class="all-assets flex-between">
      <div class="all-assets flex-center">
        <div class="assets-item flex-center">
          <div class="all-size">{{ $t("hj48") }}</div>
          <div class="big-size">{{ moneyData.availableBalance }}</div>
        </div>
        <div class="assets-item flex-center">
        <div class="assets-item flex-center" style="align-items: end;">
          <div class="all-size">{{ $t("账户盈亏") }}</div>
          <div class="big-size">{{ moneyData.cumulativeProfitAndLoss }}</div>
        </div>
@@ -185,9 +185,11 @@
      padding: 0.225rem 0 0.35rem;
      justify-content: space-evenly;
      .assets-item {
        width: 33.33%;
        width: 50%;
        flex-shrink: 0;
        flex-direction: column;
        align-items: start;
        padding: 0 0.3rem;
        .big-size {
          font-size: 0.4rem;
          color: #fff;
src/page/user/myOrder.vue
@@ -1,5 +1,6 @@
<template>
  <div class="my_order">
    <tab-head :title="$t('订单')"></tab-head>
    <van-tabs v-model="active" title-inactive-color="#898a8e">
      <van-tab
        :title="$t('hj2')"
@@ -197,8 +198,12 @@
</template>
<script>
import tabHead from "@/components/tabHead.vue";
import * as api from "@/axios/api";
export default {
  components: {
    tabHead
  },
  data() {
    return {
      active: "0",
@@ -249,27 +254,21 @@
      this.actIndex = index;
    },
    goBuy(i, index) {
      console.log("ddddd", i);
      return;
      // console.log("ddddd", i);
      // return;
      this.$router.push({
        path: "/TradingBuy",
        query: {
          t: index,
          code: i.stockCode,
          m: i.now_price,
          // type: i.if_zhishu,
          id: i.stockId,
          name: i.stockName,
          spell: i.stockSpell,
          // if_us: i.if_us,
          bayType: i.stockGid,
          gid: i.stockGidJb
        }
      });
      if (navigator.vibrate) {
        // 支持
        navigator.vibrate([55]);
      }
    },
    // 平仓跳转详情
    toDetails(i) {
src/router/index.js
@@ -98,17 +98,17 @@
    },
    // #region 7.2 新增路由-------------------------------------
    // 新首页
    {
      path: "/home_index",
      name: "home_index",
      meta: {
        title: i18n.t("hj224"),
        requireAuth: false,
        index: 0
      },
      component: () => import("@/page/home/homeIndex.vue")
    },
    // 市场
    // {
    //   path: "/home_index",
    //   name: "home_index",
    //   meta: {
    //     title: i18n.t("hj224"),
    //     requireAuth: false,
    //     index: 0
    //   },
    //   component: () => import("@/page/home/homeIndex.vue")
    // },
    // 首页
    {
      path: "/markets",
      name: "markets",
@@ -118,6 +118,17 @@
        index: 0
      },
      component: () => import("@/page/markets/markets.vue")
    },
    // 股票列表页
    {
      path: "/markets-list",
      name: "markets-list",
      meta: {
        title: i18n.t("hj62"),
        requireAuth: true,
        index: 0
      },
      component: () => import("@/page/markets/marketsList.vue")
    },
    {
      path: "/transferNew",
@@ -349,8 +360,8 @@
      meta: {
        title: i18n.t("订单"),
        requireAuth: false,
        hasHeader: true,
        show: true,
        // hasHeader: true,
        // show: true,
        index: 1
      },
      component: () => import("@/page/user/myOrder.vue")