jhzh
2024-03-23 0d29d9a2bf0d893a67f1263bb9525131a50a2128
src/page/home/newHome.vue
@@ -25,7 +25,7 @@
      :style="{backgroundImage:`url(${$state.theme=='red'?r_bg:b_bg})`}"
      >
        <div class="content ">
          <div
          <div
          :class="i.floatPoint<0?'tab greenBg text-center':'tab redBg text-center'"
          v-for="(i,index) in market"
          v-if="index < 3"
@@ -43,7 +43,7 @@
      </div>
      <!-- 导航路由 -->
      <div class="icon-router clearfix home-ico-router">
        <div class="col-xs-3 text-center">
          <a class='icon-wrap animated zoomIn' @click="goList" href="javascript:;">
            <img
@@ -102,7 +102,7 @@
              <span class="right">{{new Date(artList.addTime).getFullYear()}}-{{new Date(artList.addTime).getMonth()+1}}-{{new Date(artList.addTime).getDate()}}</span>
            </div>
          </div>
      <!-- <div class="nav-bg page-part" @click="goList">
        <img class="img" src="../../assets/img/shangpinbg.png" alt="shangpinbg">
      </div> -->
@@ -117,8 +117,8 @@
              <img style="width:100%;height: 100%;" :src="banner.bannerUrl" alt="">
            </a>
          </mt-swipe-item>
        </mt-swipe>
      </div>
        </mt-swipe>
      </div>
      <!-- 轮播图 -->
      <AllList/>
      <div class="swiper-ad">
@@ -127,13 +127,13 @@
          v-for="banner in bannerList"
          :key="banner.id"
          >
            <a
            <a
            class="banner-ad"
            :href="banner.targetUrl || null">
              <img style="width:100%;height: 100%;" :src="banner.bannerUrl" alt="">
            </a>
          </mt-swipe-item>
        </mt-swipe>
        </mt-swipe>
      </div>
      <!-- <div v-show="true" class="box  page-part">
        <div class="box-title">
@@ -179,7 +179,7 @@
        <mt-tab-container v-model="news" :swipeable="true">
          <mt-tab-container-item id="tab_0">
            <div class="news-content">
              <div
              <div
                class="news-item"
                v-for="item of newsContent1"
                :key="item.id"
@@ -197,7 +197,7 @@
          </mt-tab-container-item>
          <mt-tab-container-item id="tab_1">
            <div class="news-content">
              <div
              <div
                class="news-item"
                v-for="item of newsContent2"
                :key="item.id"
@@ -215,7 +215,7 @@
          </mt-tab-container-item>
          <mt-tab-container-item id="tab_2">
            <div class="news-content">
              <div
              <div
                class="news-item"
                v-for="item of newsContent3"
                :key="item.id"
@@ -233,7 +233,7 @@
          </mt-tab-container-item>
          <mt-tab-container-item id="tab_3">
            <div class="news-content">
              <div
              <div
                class="news-item"
                v-for="item of newsContent4"
                :key="item.id"
@@ -251,7 +251,7 @@
          </mt-tab-container-item>
          <mt-tab-container-item id="tab_4">
            <div class="news-content">
              <div
              <div
                class="news-item"
                v-for="item of newsContent5"
                :key="item.id"
@@ -270,244 +270,244 @@
        </mt-tab-container>
      </div>
      <!-- tab -->
      <foot></foot>
    </div>
  </template>
  <script>
  import foot from '@/components/foot/foot'
  import AllList from '@/page/list/list-all'
  import HomeList from './components/home-list'
  import { Toast } from 'mint-ui'
  import * as api from '@/axios/api'
  import bannerImg from '../../assets/img/banner.png'
  import eventBus from '@/event.js'
  export default {
    components: {
      foot,
      HomeList,
      AllList
    },
    props: {},
    data () {
      return {
        news:'tab_0',
        market: [],
        moveStats: false,
        bannerList: '',
        bannerImg: bannerImg,
        // market: {}, // 大盘指数
        changeTextClass: {},
        artList: {}, // 公告列表
        timer: null,
        timer2: null,
        settingForm: {
          futuresDisplay: false,
          indexDisplay: false,
          kcStockDisplay: false,
          stockDisplay: false
        },
        theme: 'black',
        newsContent1: [], // 财经要闻
        newsContent2: [], // 经济数据
        newsContent3: [], // 全球股市
        newsContent4: [], // 7*24全球
        newsContent5: [], // 商品资讯,
        b_bg:require('../../../static/img/bg-zhisu.png'),
        r_bg:require('../../../static/img/bg-zhisu-red.png')
<script>
import foot from '@/components/foot/foot'
import AllList from '@/page/list/list-all'
import HomeList from './components/home-list'
import { Toast } from 'mint-ui'
import * as api from '@/axios/api'
import bannerImg from '../../assets/img/banner.png'
import eventBus from '@/event.js'
export default {
  components: {
    foot,
    HomeList,
    AllList
  },
  props: {},
  data () {
    return {
      news: 'tab_0',
      market: [],
      moveStats: false,
      bannerList: '',
      bannerImg: bannerImg,
      // market: {}, // 大盘指数
      changeTextClass: {},
      artList: {}, // 公告列表
      timer: null,
      timer2: null,
      settingForm: {
        futuresDisplay: false,
        indexDisplay: false,
        kcStockDisplay: false,
        stockDisplay: false
      },
      theme: 'black',
      newsContent1: [], // 财经要闻
      newsContent2: [], // 经济数据
      newsContent3: [], // 全球股市
      newsContent4: [], // 7*24全球
      newsContent5: [], // 商品资讯,
      b_bg: require('../../../static/img/bg-zhisu.png'),
      r_bg: require('../../../static/img/bg-zhisu-red.png')
    }
  },
  created () {
    this.getProductSetting()
    // this.timer = setInterval(this.refreshList, 3000)
  },
  beforeDestroy () {
    clearInterval(this.timer)
    clearInterval(this.timer2)
  },
  computed: {},
  // 更新的时候运动
  updated () {
    if (!this.moveStats) {
      this.move()
    }
  },
  methods: {
    async getNewsList (type) {
      let data = await api.queryNewsList(type)
      console.log('xinwen:', data)
      switch (type) {
        case 1:
          this.newsContent1 = data.data.list
          break
        case 2:
          this.newsContent2 = data.data.list
          break
        case 3:
          this.newsContent3 = data.data.list
          break
        case 4:
          this.newsContent4 = data.data.list
          break
        case 5:
          this.newsContent5 = data.data.list
          break
      }
    },
    created () {
      this.getProductSetting()
      // this.timer = setInterval(this.refreshList, 3000)
    // 主题切换
    handleChangeThemeClick () {
      if (this.theme === 'black') {
        eventBus.$emit('getTheme', 'red')
        this.theme = 'red'
      } else {
        eventBus.$emit('getTheme', 'black')
        this.theme = 'black'
      }
    },
    beforeDestroy () {
      clearInterval(this.timer)
    move () {
      // 获取文字text 的计算后宽度  (由于overflow的存在,直接获取不到,需要独立的node计算)
      if (!document.getElementById('node')) {
        return
      }
      let width = document.getElementById('node').getBoundingClientRect().width
      // let width = this.$refs.node.getBoundingClientRect().width
      let box = document.getElementById('box')
      let copy = document.getElementById('copy')
      copy.innerText = this.artList.artTitle // 文字副本填充
      let distance = 0 // 位移距离
      // 设置位移
      this.moveStats = true
      clearInterval(this.timer2)
      this.timer2 = setInterval(function () {
        distance = distance - 1
        // 如果位移超过文字宽度,则回到起点
        if (-distance >= width) {
          distance = 16
          // clearInterval(timer)
        }
        box.style.transform = 'translateX(' + distance + 'px)'
      }, 30)
    },
    computed: {},
    // 更新的时候运动
    updated () {
      if (!this.moveStats) {
        this.move()
    async getArtList () {
      // 获取公告列表
      let opts = {
        pageNum: 1,
        pageSize: 1
      }
      let result = await api.getArtList(opts)
      if (result.status === 0) {
        if (result.data.list.length > 0) {
          this.artList = result.data.list[0]
        }
      } else {
        this.$message.error(result.msg)
      }
    },
    methods: {
      async getNewsList(type) {
        let data = await api.queryNewsList(type);
        console.log('xinwen:',data)
        switch(type) {
          case 1:
            this.newsContent1 = data.data.list
            break;
          case 2:
            this.newsContent2 = data.data.list
            break;
          case 3:
            this.newsContent3 = data.data.list
            break;
          case 4:
            this.newsContent4 = data.data.list
            break;
          case 5:
            this.newsContent5 = data.data.list
            break;
        }
      },
      // 主题切换
      handleChangeThemeClick() {
        if (this.theme === 'black') {
          eventBus.$emit("getTheme", 'red');
          this.theme = 'red'
        } else {
          eventBus.$emit("getTheme", 'black');
          this.theme = 'black'
        }
      },
      move () {
        // 获取文字text 的计算后宽度  (由于overflow的存在,直接获取不到,需要独立的node计算)
        if (!document.getElementById('node')) {
          return
        }
        let width = document.getElementById('node').getBoundingClientRect().width
        // let width = this.$refs.node.getBoundingClientRect().width
        let box = document.getElementById('box')
        let copy = document.getElementById('copy')
        copy.innerText = this.artList.artTitle // 文字副本填充
        let distance = 0 // 位移距离
        // 设置位移
        this.moveStats = true
        clearInterval(this.timer2)
        this.timer2 = setInterval(function () {
          distance = distance - 1
          // 如果位移超过文字宽度,则回到起点
          if (-distance >= width) {
            distance = 16
            // clearInterval(timer)
          }
          box.style.transform = 'translateX(' + distance + 'px)'
        }, 30)
      },
      async getArtList () {
        // 获取公告列表
        let opts = {
          pageNum: 1,
          pageSize: 1
        }
        let result = await api.getArtList(opts)
        if (result.status === 0) {
          if (result.data.list.length > 0) {
            this.artList = result.data.list[0]
          }
        } else {
          this.$message.error(result.msg)
        }
      },
      async getMarket () {
        // 获取大盘指数
        // let result = await api.getMarket()
        let result = await api.getIndexMarket()
        if (result.status === 0) {
          this.market = result.data
        } else {
          Toast(result.msg)
        }
      },
      async refreshList () {
        // 刷新大盘指数
        let result = await api.getIndexMarket()
        this.changeTextClass = {}
        if (+result.status === 0) {
          // this.market = result.data.market
          result.data.forEach((element, i) => {
            this.changeTextClass[i] = ''
            if (element.currentPoint !== this.market[i].currentPoint) {
              this.changeTextClass[i] = true // 设置对应的动画过滤
              this.market[i].currentPoint = element.currentPoint
              this.market[i].floatPoint = element.floatPoint
              this.market[i].floatRate = element.floatRate
            }
          })
        } else {
          Toast(result.msg)
        }
      },
      async getBanner () {
        // 获取显示的banner
        let result = await api.getBannerByPlat({ platType: 'm' })
        if (result.status === 0) {
          this.bannerList = result.data
        } else {
          Toast(result.msg)
        }
      },
      async getProductSetting () {
        // 获取产品配置信息
        let result = await api.getProductSetting()
        if (+result.status === 0) {
          this.settingForm = result.data
        } else {
          Toast(result.msg)
        }
      },
      articleList () {
        // 新手
        this.$router.push('/articleList')
      },
      toBuy () {
        // 去购买页面
        this.$router.push('/buy')
      },
      goList () {
        // 去列表页面
        this.$router.push('/list')
      },
      goMyList () {
        this.$router.push('/mylist')
      },
      goOrderlist () {
        this.$router.push('/orderlist')
      },
      goMyinfo () {
        this.$router.push('/user')
      },
      goIndexList () {
        this.$router.push('/indexlist')
      },
      toDetail () {
        // 去列表页面
        this.$router.push('/listdetail')
      },
      toAltDetail () {
        this.$router.push({
          path: 'alertdetail',
          query: {
            id: this.artList.id
    async getMarket () {
      // 获取大盘指数
      // let result = await api.getMarket()
      let result = await api.getIndexMarket()
      if (result.status === 0) {
        this.market = result.data
      } else {
        Toast(result.msg)
      }
    },
    async refreshList () {
      // 刷新大盘指数
      let result = await api.getIndexMarket()
      this.changeTextClass = {}
      if (+result.status === 0) {
        // this.market = result.data.market
        result.data.forEach((element, i) => {
          this.changeTextClass[i] = ''
          if (element.currentPoint !== this.market[i].currentPoint) {
            this.changeTextClass[i] = true // 设置对应的动画过滤
            this.market[i].currentPoint = element.currentPoint
            this.market[i].floatPoint = element.floatPoint
            this.market[i].floatRate = element.floatRate
          }
        })
      } else {
        Toast(result.msg)
      }
    },
    mounted () {
      this.getNewsList(1)
      this.getNewsList(2)
      this.getNewsList(3)
      this.getNewsList(4)
      this.getNewsList(5)
      this.getMarket() // 获取大盘指数
      this.getBanner() //获取banner
      this.getArtList() // 获取公告
      // let header = document.querySelector('.header-box')
      let body = document.querySelector('.wrapper')
      // header.style.display = 'none'
      body.style.height = 'calc(100%)'
      body.style.paddingBottom = '0'
    async getBanner () {
      // 获取显示的banner
      let result = await api.getBannerByPlat({ platType: 'm' })
      if (result.status === 0) {
        this.bannerList = result.data
      } else {
        Toast(result.msg)
      }
    },
    async getProductSetting () {
      // 获取产品配置信息
      let result = await api.getProductSetting()
      if (+result.status === 0) {
        this.settingForm = result.data
      } else {
        Toast(result.msg)
      }
    },
    articleList () {
      // 新手
      this.$router.push('/articleList')
    },
    toBuy () {
      // 去购买页面
      this.$router.push('/buy')
    },
    goList () {
      // 去列表页面
      this.$router.push('/list')
    },
    goMyList () {
      this.$router.push('/mylist')
    },
    goOrderlist () {
      this.$router.push('/orderlist')
    },
    goMyinfo () {
      this.$router.push('/user')
    },
    goIndexList () {
      this.$router.push('/indexlist')
    },
    toDetail () {
      // 去列表页面
      this.$router.push('/listdetail')
    },
    toAltDetail () {
      this.$router.push({
        path: 'alertdetail',
        query: {
          id: this.artList.id
        }
      })
    }
  },
  mounted () {
    this.getNewsList(1)
    this.getNewsList(2)
    this.getNewsList(3)
    this.getNewsList(4)
    this.getNewsList(5)
    this.getMarket() // 获取大盘指数
    this.getBanner() // 获取banner
    this.getArtList() // 获取公告
    // let header = document.querySelector('.header-box')
    let body = document.querySelector('.wrapper')
    // header.style.display = 'none'
    body.style.height = 'calc(100%)'
    body.style.paddingBottom = '0'
  }
  </script>
}
</script>
  <style lang="less" scoped>
    @fontColor: #cfd0d1;
    @fontColor2: #ccc;
@@ -534,66 +534,66 @@
          width: 1.45rem;
        }
      }
      .iconfont {
        position: absolute;
        left: 0;
        vertical-align: middle;
        margin-right: 0.1rem;
      }
      .pull-right {
        width: 1.45rem;
      }
      .pull-right::before {
        content: '';
        height: 0.3rem;
        border-left: 0.01rem solid #666;
        padding-left: 0.15rem;
      }
      // 限制外框宽度,隐藏多余的部分
      .wrap {
        letter-spacing: 0.06rem;
        overflow: hidden;
      }
    }
    // 移动框宽度设置
    #box {
      width: 80000%;
    }
    // 文字一行显示
    #box div {
      float: left;
    }
    // 设置前后间隔
    #marquee {
      margin: 0 16px 0 0;
    }
    // 获取宽度的节点,隐藏掉
    #node {
      position: absolute;
      z-index: -999;
      top: -999999px;
    }
    .banner {
      width: 100%;
      height: 3.74rem;
      height: 4.2rem;
      overflow: hidden;
      .banner-box {
        width: 100%;
        height: 100%;
        position: relative;
        opacity: 0.86;
        .box {
          position: absolute;
          text-align: center;
@@ -601,7 +601,7 @@
          width: 100%;
          background: none;
        }
        .title {
          color: #ff9600;
          font-size: 0.46rem;
@@ -609,12 +609,12 @@
          margin-bottom: 0.4rem;
          letter-spacing: 0.08rem;
        }
        .desc {
          font-size: 0.26rem;
          margin-bottom: 0.8rem;
        }
        .target-btn {
          display: inline-block;
          font-size: 0.22rem;
@@ -623,19 +623,19 @@
          border: 0.01rem solid #ff9600;
          border-radius: 0.5rem;
        }
        .img {
          width: 100%;
          height: 100%;
        }
      }
    }
    .tipstexts {
      // height: 0.91rem;
      height: 0.41rem;
      .horseLampModule {
        width: 80%;
        height: .91rem;
@@ -647,7 +647,7 @@
        position: relative;
        float: left;
      }
      .novice {
        float: right;
        height: 0.3rem;
@@ -659,7 +659,7 @@
        border-left: .027rem solid #989898
      }
    }
    .nav-bg {
      width: 100%;
      padding: 0 2%;
@@ -674,30 +674,30 @@
        display: block;
      }
    }
    .icon-router {
      .col-xs-3 {
        width: 25%;
      }
    }
    /*大盘指数*/
    .dynamic-info {
      padding: .14rem;
      border-bottom: .02rem solid rgba(147, 147, 147, .2);
    }
    .dynamic-info li {
      float: left;
      font-size: .25rem;
      height: auto;
    }
    .dynamic-info li.tips {
      width: 15%;
    }
    .dynamic-info li.tips p {
      font-size: .22rem;
      text-align: center;
@@ -708,19 +708,19 @@
      background: url(../../assets/img/buyicon.png) no-repeat;
      background-size: contain;
    }
    .dynamic-info li p {
      font-size: .25rem;
    }
    .dynamic-name-code {
      width: 25%;
    }
    .dynamic-phone-win {
      width: 38%;
    }
    .dynamic-name-code p,
    .dynamic-phone-win p {
      font-size: .22rem;
@@ -728,20 +728,20 @@
      padding-top: .18rem;
      color: @fontColor2;
    }
    .dynamic-name-code p:first-child,
    .dynamic-phone-win p:first-child {
      font-size: .25rem;
      // color: rgb(34, 34, 34);
    }
    .btn-group {
      width: 22%;
      text-align: right;
      padding-top: .2rem;
      padding-right: .14rem;
    }
    .btn-group button {
      color: #fff;
      width: 1.279rem;
@@ -750,7 +750,7 @@
      background: rgb(213, 0, 0);
      border: none;
    }
    .table-list .title {
      ul li {
        width: 33.33333333%;
@@ -758,7 +758,7 @@
        padding-left: 15px;
      }
    }
  .account-box {
    position: relative;
    background-color: #000C16;
@@ -819,7 +819,7 @@
  }
  .icon-router.home-ico-router {
    padding: .4rem 0;
    background-color: #16171d !important;
    background-color: #16171d !important;
  }
  .zhishu {
    // background-image: url(../../../static/img/bg-zhisu.png);
@@ -873,7 +873,7 @@
        &::-webkit-input-placeholder {
          color: #363636;
        }
        // color:
        // color:
      }
    }
    &-ctl {
@@ -923,7 +923,7 @@
    /deep/.mint-tab-item-label {
      color: #fff;
      font-size: .26rem;
    }
    /deep/.is-selected .tab-name{
      position: relative;
@@ -1071,4 +1071,3 @@
    }
  }
  </style>