push
This commit is contained in:
368
lib/component/echarts/components/other/BasicTable-old.vue
Normal file
368
lib/component/echarts/components/other/BasicTable-old.vue
Normal file
@@ -0,0 +1,368 @@
|
||||
<template>
|
||||
<div class="table-view" id="tableView">
|
||||
<div class="thead">
|
||||
<div v-for="(value,key,index) in thead" :key="index" :class="'flex'+index">{{value}}</div>
|
||||
</div>
|
||||
<div class="tbodymain" @mouseenter="bodyMouseEnter" @mouseleave="bodyMouseLeave">
|
||||
<div class="tbody b1" ref="tbody1">
|
||||
<div v-for="item in tableDatas1" :key="item.id" class="row">
|
||||
<div v-for="(value,key,index) in item" :key="index" :class="'flex'+index">
|
||||
<!-- <marquee v-if="key=='positon' && value.length>fontScroll" behavior="scroll" scrolldelay="200" @mouseenter="marqueeStop($event)" @mouseleave="marqueeStart($event)">{{value}}</marquee> -->
|
||||
<span :class=[timeHandle(key),colorHandle(key,value),scrollHandle(key,value)]>{{value}}</span></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="tbody b2" ref="tbody2">
|
||||
<div v-for="item in tableDatas2" :key="item.id" class="row">
|
||||
<div v-for="(value,key,index) in item" :key="index" :class="'flex'+index">
|
||||
<!-- <marquee v-if="key=='positon' && value.length>fontScroll" behavior="scroll" scrolldelay="200" @mouseenter="marqueeStop($event)" @mouseleave="marqueeStart($event)">{{value}}</marquee> -->
|
||||
<span :class=[timeHandle(key),colorHandle(key,value),scrollHandle(key,value)]>{{value}}</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</template>
|
||||
<script>
|
||||
import { defineComponent } from 'vue';
|
||||
|
||||
export default defineComponent({
|
||||
name: 'baisicTable',
|
||||
props: {
|
||||
datas:{
|
||||
type:Array,
|
||||
required: true
|
||||
},
|
||||
thead:{
|
||||
type:Array,
|
||||
required: true
|
||||
},
|
||||
fontScroll:{
|
||||
type:Number,
|
||||
default:14
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
timeOut:null,
|
||||
srolltime:null,
|
||||
tableDatas1:[],
|
||||
tableDatas2:[],
|
||||
pageIndex:0,
|
||||
isColScroll:true,
|
||||
total:0,
|
||||
curPage:0,
|
||||
|
||||
height:26,
|
||||
|
||||
tableDatas:[]
|
||||
}
|
||||
},
|
||||
watch:{
|
||||
datas:{
|
||||
handler(newval){
|
||||
this.tableDatas = newval;
|
||||
this.changDatas();
|
||||
},
|
||||
deep:true
|
||||
}
|
||||
},
|
||||
created() {
|
||||
this.tableDatas = this.datas;
|
||||
let len = this.tableDatas.length;
|
||||
if(len>=14){
|
||||
this.tableDatas1 = this.tableDatas.slice(0,7);
|
||||
this.tableDatas2 = this.tableDatas.slice(7,14);
|
||||
}else if(len>7 && len<14){
|
||||
this.tableDatas1 = this.tableDatas.slice(0,7);
|
||||
this.tableDatas2 = this.tableDatas.slice(7,len);
|
||||
let addData = this.tableDatas.slice(0,7-this.tableDatas2.length);
|
||||
this.tableDatas2 = this.tableDatas2.concat(addData);
|
||||
}else if(len <= 7){
|
||||
this.tableDatas1 = this.tableDatas;
|
||||
}
|
||||
|
||||
|
||||
},
|
||||
mounted() {
|
||||
if(this.tableDatas.length>7){
|
||||
this.timeIntervalHandle();
|
||||
}else{
|
||||
this.tableDatas1 = this.tableDatas;
|
||||
}
|
||||
if(this.tableDatas.length>14){
|
||||
this.changDatas();
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
changDatas(){
|
||||
let len = this.tableDatas.length;
|
||||
|
||||
this.page = Math.ceil(len/7);
|
||||
let endNum = len%7;
|
||||
if(endNum>0){
|
||||
let addNum = 7-endNum;
|
||||
let addArr = this.tableDatas.slice(0,addNum);
|
||||
this.tableDatas = this.tableDatas.concat(addArr);
|
||||
}
|
||||
this.curPage = 1;
|
||||
},
|
||||
bodyMouseEnter(){
|
||||
this.isColScroll = false;
|
||||
},
|
||||
bodyMouseLeave(){
|
||||
this.isColScroll = true;
|
||||
this.srollHandle();
|
||||
},
|
||||
marqueeStart(e){
|
||||
e.currentTarget.start();
|
||||
},
|
||||
marqueeStop(e){
|
||||
e.currentTarget.stop();
|
||||
},
|
||||
timeIntervalHandle(){
|
||||
this.$refs.tbody1.style.top = `${0}px`;
|
||||
this.$refs.tbody2.style.top = `${182}px`;
|
||||
setTimeout(this.srollHandle,3000);
|
||||
},
|
||||
srollHandle(){
|
||||
if(!this.isColScroll) return;
|
||||
let scrollH = 0;
|
||||
let _this = this;
|
||||
clearInterval(this.srolltime);
|
||||
clearTimeout(this.timeOut);
|
||||
this.srolltime = setInterval(function(){
|
||||
scrollH += 2;
|
||||
_this.$refs.tbody1.style.top = (parseInt(_this.$refs.tbody1.style.top) - 2)+"px";
|
||||
_this.$refs.tbody2.style.top = (parseInt(_this.$refs.tbody2.style.top) - 2)+"px";
|
||||
// console.log("执行");
|
||||
if(scrollH>=26){
|
||||
clearInterval(_this.srolltime);
|
||||
if(parseInt(_this.$refs.tbody1.style.top)<=-182){
|
||||
_this.$refs.tbody1.style.top = 182+'px';
|
||||
if(_this.page > 2){
|
||||
_this.updateData(1);
|
||||
}
|
||||
}else if(parseInt(_this.$refs.tbody2.style.top)<=-182){
|
||||
_this.$refs.tbody2.style.top = 182+'px';
|
||||
if(_this.page > 2){
|
||||
_this.updateData(2);
|
||||
}
|
||||
}
|
||||
_this.timeOut = setTimeout(_this.srollHandle,1500);
|
||||
}
|
||||
},24);
|
||||
},
|
||||
updateData(id){
|
||||
this.curPage++;
|
||||
if(this.curPage>=this.page){
|
||||
this.curPage = 0;
|
||||
}
|
||||
let start = parseInt(this.curPage*7);
|
||||
let end = start+7;
|
||||
let getData = this.tableDatas.slice(start,end);
|
||||
if(id==1){
|
||||
this.tableDatas1 = getData;
|
||||
}else{
|
||||
this.tableDatas2 = getData;
|
||||
}
|
||||
},
|
||||
timeHandle(key){
|
||||
if(key=="time"){
|
||||
return 'time';
|
||||
}else{
|
||||
return '';
|
||||
}
|
||||
},
|
||||
scrollHandle(key,value){
|
||||
if(key=='positon' && value.length>this.fontScroll){
|
||||
return 'animate';
|
||||
}
|
||||
|
||||
},
|
||||
colorHandle(key,value){
|
||||
if(key=="color"){
|
||||
if(value.indexOf('蓝') != -1){
|
||||
return 'blue';
|
||||
}else if(value.indexOf('黄') != -1){
|
||||
return 'yellow';
|
||||
}else if(value.indexOf('绿') != -1){
|
||||
return 'green';
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
})
|
||||
</script>
|
||||
<style lang="less" scoped>
|
||||
.table-view{
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
border: 1px solid #0E748A;
|
||||
color: #FFFFFF;
|
||||
background-color: #04465B;
|
||||
font-size: 10px;
|
||||
.thead{
|
||||
display: flex;
|
||||
background-color: #005062;
|
||||
border-bottom: 1px solid #0E748A;
|
||||
div{
|
||||
flex: 1;
|
||||
text-align: left;
|
||||
flex-wrap:nowrap;
|
||||
opacity: 0.85;
|
||||
margin: 5px 10px;
|
||||
word-break:keep-all;
|
||||
white-space:nowrap;
|
||||
overflow:hidden;
|
||||
}
|
||||
.flex0{
|
||||
flex:1;
|
||||
}
|
||||
.flex1{
|
||||
flex:1;
|
||||
}
|
||||
.flex2{
|
||||
flex:3;
|
||||
}
|
||||
.flex3{
|
||||
flex:2.3;
|
||||
}
|
||||
}
|
||||
.tbodymain{
|
||||
position: relative;
|
||||
height: 183px;
|
||||
|
||||
overflow: hidden;
|
||||
.tbody{
|
||||
position: absolute;
|
||||
width: 100%;
|
||||
top:0px;
|
||||
border-top: none;
|
||||
height: 182px;
|
||||
|
||||
.row:nth-child(odd){
|
||||
background-color: rgba(0,31,49,0.4);
|
||||
}
|
||||
.row:nth-child(even){
|
||||
background-color: rgba(0,70,105,0.4);
|
||||
}
|
||||
.row{
|
||||
height: 26px;
|
||||
display: flex;
|
||||
text-align: left;
|
||||
flex-wrap:nowrap;
|
||||
div{
|
||||
flex: 1;//平均份
|
||||
margin: 5px 12px;
|
||||
text-align: left;
|
||||
flex-wrap:nowrap;
|
||||
word-break:keep-all;
|
||||
white-space:nowrap;
|
||||
overflow:hidden;
|
||||
span{
|
||||
opacity: 0.65;
|
||||
}
|
||||
marquee{
|
||||
opacity: 0.65;
|
||||
}
|
||||
.blue{
|
||||
background-color:rgba(87, 208, 235, 0.2);
|
||||
color: #57D0EB;
|
||||
padding: 0px 5px;
|
||||
border:1px solid rgba(87, 208, 235, 0.4);
|
||||
border-radius: 1px;
|
||||
opacity: 1;
|
||||
font-size: 8px;
|
||||
line-height: 16px;
|
||||
}
|
||||
.yellow{
|
||||
background-color:rgba(235, 211, 87, 0.2);
|
||||
color: #EBD357;
|
||||
padding: 0px 5px;
|
||||
border:1px solid rgba(235, 211, 87, 0.4);
|
||||
border-radius: 1px;
|
||||
opacity: 1;
|
||||
font-size: 8px;
|
||||
line-height: 16px;
|
||||
}
|
||||
.green{
|
||||
background-color:rgba(87, 235, 155, 0.2);
|
||||
color: #57EB9B;
|
||||
padding: 0px 5px;
|
||||
border:1px solid rgba(87, 235, 155, 0.4);
|
||||
border-radius: 1px;
|
||||
opacity: 1;
|
||||
font-size: 8px;
|
||||
line-height: 16px;
|
||||
}
|
||||
.time{
|
||||
background-color: #012539;
|
||||
border-radius: 2px;
|
||||
padding: 5px 10px;
|
||||
overflow:hidden;
|
||||
opacity: 0.7;
|
||||
font-size: 8px;
|
||||
line-height: 16px;
|
||||
}
|
||||
.animate {
|
||||
display: inline-block;
|
||||
animation: 13s wordsLoop linear infinite normal;
|
||||
}
|
||||
@keyframes wordsLoop {
|
||||
0% {
|
||||
transform: translateX(100%);
|
||||
-webkit-transform: translateX(100%);
|
||||
}
|
||||
100% {
|
||||
transform: translateX(-100%);
|
||||
-webkit-transform: translateX(-100%);
|
||||
}
|
||||
}
|
||||
@-webkit-keyframes wordsLoop {
|
||||
0% {
|
||||
transform: translateX(0px);
|
||||
-webkit-transform: translateX(0px);
|
||||
}
|
||||
100% {
|
||||
transform: translateX(-100%);
|
||||
-webkit-transform: translateX(-100%);
|
||||
}
|
||||
}
|
||||
}
|
||||
.flex0{
|
||||
flex:1;
|
||||
}
|
||||
.flex1{
|
||||
flex:1;
|
||||
}
|
||||
.flex2{
|
||||
flex:3;
|
||||
}
|
||||
.flex3{
|
||||
flex:2.3;
|
||||
}
|
||||
}
|
||||
|
||||
box-shadow: 0 0 2px #00667C inset,0 0 0px rgb(0,153,184);
|
||||
}
|
||||
.b2{
|
||||
.row:nth-child(odd){
|
||||
background-color: rgba(0,70,105,0.4);
|
||||
}
|
||||
.row:nth-child(even){
|
||||
background-color: rgba(0,31,49,0.4);
|
||||
}
|
||||
}
|
||||
// .b1{
|
||||
// top:0px;
|
||||
// }
|
||||
// .b2{
|
||||
// top: -40px;
|
||||
// }
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
</style>
|
||||
Reference in New Issue
Block a user