quanyawei
2024-03-27 a5e288eead42db17f8715bc21326465648bc1c04
src/views/hotMap/components/timeLinePlay.vue
@@ -7,7 +7,10 @@
        @click="togglePlay"
      />
    </div>
    <div class="dayDataList">
    <div
      ref="dayDataList"
      class="dayDataList"
    >
      <div class="oneDayData">
        <div
          v-for="item in dataFormList"
@@ -97,8 +100,9 @@
    return {
      intervalTimer: null, // 定时器
      playing: false,
      activeIndex: 0,
      activeIndex: 1,
      activeItem: {},
      activeFarterItem: {},
      timeLineData: [ // 数据格式
        {
          id: 0,
@@ -121,6 +125,7 @@
    dataFormList () {
      let dataList = _.cloneDeep(this.dateTimes)
      let hourListTime = dataList[dataList.length - 1].hourListTime
      let hourListTimeStar = dataList[0].hourListTime
      if (hourListTime.length < 24 && this.dateType === 'hour') {
        const newArr = hourListTime.concat(Array(24 - hourListTime.length).fill({
          id: 9999,
@@ -130,6 +135,16 @@
        console.log('newArr', newArr)
        dataList[dataList.length - 1].hourListTime = newArr
      }
      if (hourListTimeStar.length < 24 && this.dateType === 'hour') {
        const newArr = (Array(24 - hourListTimeStar.length).fill({
          id: 9999,
          name: '9999',
          isShow: true
        })).concat(hourListTimeStar)
        console.log('newArr', newArr)
        dataList[0].hourListTime = newArr
      }
      console.log('dataList', dataList)
      return dataList
    }
  },
@@ -137,7 +152,7 @@
  watch: {
    dateTimes: {
      handler (newVal, oldVal) {
        this.activeIndex = 0
        this.activeIndex = 1
        this.playing = false
        console.log('newVal', newVal)
      },
@@ -151,8 +166,10 @@
        clearInterval(this.intervalTimer)
        if (this.dateType === 'hour' && this.activeIndex === this.dataFormList[0].idLength) {
          this.activeIndex = 1
          this.chanScroll(0)
        } else if (this.dateType !== 'hour' && this.activeIndex === this.dataFormList.length) {
          this.activeIndex = 1
          this.chanScroll(0)
        } else {
          this.activeIndex = (this.activeIndex + 1)
        }
@@ -194,25 +211,47 @@
                id: item.id,
                name: `${element.name} ${item.name}`,
              }
              this.activeFarterItem = element
            }
          })
        })
      } else {
        activeItem = this.dataFormList[this.activeIndex - 1]
        this.activeFarterItem = activeItem
      }
      console.log('activeItem', activeItem, this.activeIndex)
      this.chanScroll()
      this.$emit('getDateFun', activeItem)
    }
  },
  // 生命周期 - 创建完成(可以访问当前 this 实例)
  created () {
    console.log('this.dataFormList', this.dataFormList)
    if (this.dateType === 'hour') {
      let data = this.dataFormList[this.dataFormList.length - 1].hourListTime
      this.activeIndex = data[0].id + 1
    }
  },
  methods: {
    chanScroll () {
      const scrollableDiv = this.$refs.dayDataList
      let farterElementChild = scrollableDiv.firstElementChild
      let sunElementChild = farterElementChild.firstElementChild.clientWidth
      let activElementWidth = sunElementChild * (this.activeFarterItem.id + 1)
      // let childrenlist = farterElementChild.children.length
      console.log('scrollableDiv.index', this.activeFarterItem.id + 1)
      console.log('scrollableDiv.index', activElementWidth)
      // console.log('scrollableDiv.childrenlist', childrenlist)
      // console.log('scrollableDiv.scrollWidth', scrollableDiv.scrollWidth)
      console.log('scrollableDiv.clientWidth', scrollableDiv.clientWidth)
      if (scrollableDiv.scrollWidth > scrollableDiv.clientWidth) {
        scrollableDiv.scrollTo(((this.activeFarterItem.id) * sunElementChild), 0)
      }
    },
    changeActiveIndex (data, item) {
      if (item.isShow && this.dateType === 'hour') {
        return
      }
      this.activeItem = item
      this.activeIndex = data + 1
      console.log('changeActiveIndex', data, item)
      if (this.playing) {
@@ -230,9 +269,10 @@
</script>
<style scoped  lang="scss">
.timeLineBox{
    background: hsla(0,0%,80%,.8);
    background: rgba(51,51,51,.8);
    width:100%;
    box-shadow: 1px 1px 5px #666;
    color: #fff;
   // box-shadow: 1px 1px 5px #666;
    cursor: pointer;
    padding: 10px;
    padding-bottom: 5px;
@@ -241,7 +281,7 @@
    align-items: center;
    .dayDataList{
       width: calc(100% - 60px);
       overflow: auto;
       overflow-x: auto;
      .oneDayData{
        display: flex;
        // justify-content: space-around;
@@ -250,7 +290,7 @@
          flex: 1;
          text-align: center;
          min-width: 100px;
          border-left: 1px solid #fff;
          border-left: 1px solid rgba(255, 255, 255, 0.7);;
          .lineBox{
            width: 100%;
            height: 10px;
@@ -267,7 +307,7 @@
                  width: 100%;
                  height: 10px;
                  // border-left: 1px solid #fff;
                  border-right: 1px solid #fff;
                  border-right: 1px solid rgba(255, 255, 255, 0.7);;
                }
              }
            }
@@ -275,11 +315,38 @@
          .dataFont{
            margin-top: 5px;
            padding-top: 5px;
            border-top: 1px solid #fff;
            border-top: 1px solid rgba(255, 255, 255, 0.7);;
            // border-top: 1px solid #fff;
          }
        }
      }
    }
    .dayDataList::-webkit-scrollbar-track
    {
      -webkit-box-shadow: inset 0 0 6px rgba(0,0,0,0.3);
      background-color: #F5F5F5;
      border-radius: 10px;
    }
    .dayDataList::-webkit-scrollbar
    {
      width: 5px;
      background-color: #F5F5F5;
    }
    .dayDataList::-webkit-scrollbar-thumb
    {
     background-color: #AAA;
     border-radius: 10px;
     background-image: -webkit-linear-gradient(90deg,
                                           rgba(0, 0, 0, .2) 25%,
    transparent 25%,
    transparent 50%,
    rgba(0, 0, 0, .2) 50%,
    rgba(0, 0, 0, .2) 75%,
    transparent 75%,
    transparent)
    }
}
@@ -314,7 +381,7 @@
  text-align: center;
}
.activeBg{
  background: green !important;
  background: #009845 !important;
}
.activeIhShow{
  border: none!important;
@@ -333,15 +400,15 @@
</style>
<style>
 .tooltip-style.el-tooltip__popper {
      background: green;
      background: #009845;
    }
 .tooltip-style.el-tooltip__popper.is-dark {
      background: green;
      background: #009845;
    }
.tooltip-style.el-tooltip__popper[x-placement^='top'] .popper__arrow:after{
  border-top-color:green;
  border-top-color:#009845;
}
.el-tooltip__popper[x-placement^='top'] .popper__arrow{
  border-top-color:green;
  border-top-color:#009845;
}
</style>