| | |
| | | @click="togglePlay" |
| | | /> |
| | | </div> |
| | | <div class="dayDataList"> |
| | | <div |
| | | ref="dayDataList" |
| | | class="dayDataList" |
| | | > |
| | | <div class="oneDayData"> |
| | | <div |
| | | v-for="item in dataFormList" |
| | |
| | | return { |
| | | intervalTimer: null, // 定时器 |
| | | playing: false, |
| | | activeIndex: 0, |
| | | activeIndex: 1, |
| | | activeItem: {}, |
| | | activeFarterItem: {}, |
| | | timeLineData: [ // 数据格式 |
| | | { |
| | | id: 0, |
| | |
| | | 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, |
| | |
| | | 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 |
| | | } |
| | | }, |
| | |
| | | watch: { |
| | | dateTimes: { |
| | | handler (newVal, oldVal) { |
| | | this.activeIndex = 0 |
| | | this.activeIndex = 1 |
| | | this.playing = false |
| | | console.log('newVal', newVal) |
| | | }, |
| | |
| | | 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) |
| | | } |
| | |
| | | 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) { |
| | |
| | | </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; |
| | |
| | | align-items: center; |
| | | .dayDataList{ |
| | | width: calc(100% - 60px); |
| | | overflow: auto; |
| | | overflow-x: auto; |
| | | .oneDayData{ |
| | | display: flex; |
| | | // justify-content: space-around; |
| | |
| | | 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; |
| | |
| | | width: 100%; |
| | | height: 10px; |
| | | // border-left: 1px solid #fff; |
| | | border-right: 1px solid #fff; |
| | | border-right: 1px solid rgba(255, 255, 255, 0.7);; |
| | | } |
| | | } |
| | | } |
| | |
| | | .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) |
| | | } |
| | | |
| | | } |
| | |
| | | text-align: center; |
| | | } |
| | | .activeBg{ |
| | | background: green !important; |
| | | background: #009845 !important; |
| | | } |
| | | .activeIhShow{ |
| | | border: none!important; |
| | |
| | | </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> |