• 企业400电话
  • 网络优化推广
  • AI电话机器人
  • 呼叫中心
  • 全 部 栏 目

    网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    HTML+VUE分页实现炫酷物联网大屏功能
    POST TIME:2021-10-16 22:58

    效果

    demo.html

    <html>
    	<head>
    		<meta charset="UTF-8">
    		<title>数据大屏</title>
    		<link rel="stylesheet" href="css/style.css" />
    		<script type="text/javascript" src="js/jquery-1.8.0.min.js"></script>
    		<script type="text/javascript" src="js/axios.min.js"></script>
    		<script type="text/javascript" src="js/babel.min.js"></script>
    
    		<script src="https://cdn.bootcss.com/vue-router/3.0.1/vue-router.js"></script>
    
    
    	</head>
    	<body>
    		<header>
    			物联网平台数据统计page
    			<span id=localtime style=" font-size:14px; position: absolute; right: 30px; top:-20px; "></span>
    		</header>
    		<div id="page">
    			<div class="center_bot">
    				<table class="panel-table" bordercolor="#0d48e0" border="1">
    					<thead bgcolor="#0e4ae0" align="center">
    						<tr height="40">
    							<th colspan="6"><img src="images/icon04.png" /> 监控列表</th>
    						</tr>
    					</thead>
    					<tbody>
    						<tr class="aaa" align="center">
    							<td v-for="item in factoryHeader" style="color: #00fcff; font-size: 18px; padding: 5px 0;">{{ item.categories }}</td>
    						</tr>
    						<div  height="168px">
    						<tr v-for="point in factory" :key="point.pointId" class="aaa" style="font-size: 16px;" align="center">
    							<td>{{point.enterpriseName}}</td>
    							<td>{{point.pointName}}</td>
    							<td>
    								<div v-if="point.isErrorType==0">无</div>
    								<div v-if="point.isErrorType==1"><a style="color: #FF6F05;">断线</div>
    								<div v-if="point.isErrorType==2"><a style="color:#FF0000 ;">超标</div>
    								<div v-if="point.isErrorType==3"><a style="color:#FF6F05 ;">异常</div>
    								<div v-if="point.isErrorType==4"><a style="color: #00F6FF;">正常</a></div>
    							</td>
    							<td width="250">
    								<button class="b1 click_pop" @click="goWarnData(point.pointId)">超标数据</button>
    								<button class="b2 click_pop2" @click="goExceptionData(point.pointId)">异常数据</button>
    								<button class="b3 click_pop3" @click="goDataDetail(point.pointId)">历史数据</button>
    							</td>
    						</tr>
    			</div>
    			
    					</tbody>
    			
    				</table>
    				<!-- <div class="box">
    					<div id="pagination" class="page fl"></div>
    				</div> -->
    				<div style="margin:0 auto;text-align:center">
    				      <a @click="prevPage()">上一页</a>
    				      <div style="display: inline-block;margin-left: 10px" v-for="index of  pagelist" :key="index">
    				        <button :class="{active: currentPage == activatePage + index - 1}"    @click="selectPage($event,index)">{{activatePage + index -1}}</button>
    				      </div>
    				      <span >第{{pageIndex}}页/共{{totalPage}}页   共{{total}}条</span>
    				      <a @click="nextPage($event)">下一页</a>
    				</div>
    			</div>
    		</div>	
    		<script>
    			$(document).ready(function() {
    				$('.pop-close').click(function() {
    					$('.bgPop3,.pop3').hide();
    				});
    				// $('.click_pop3').click(function() {
    				// 	$('.bgPop3,.pop3').show();
    				// });
    			})
    		</script>
    		<script type="text/javascript" src="js/jquery.min.js"></script>
    		<script type="text/javascript" src="js/echarts.min.js"></script>
    		<script type="text/javascript" src="js/china.js"></script>
    		<script type="text/javascript" src="js/vue.min.js"></script>
    		<script type="text/javascript" src="js/map.js"></script>
    		<script type="text/javascript" src="js/times.js"></script>
    		<script type="text/javascript" src="js/DTU.js"></script>
    		<script type="text/javascript" src="js/PLC.js"></script>
    		<script type="text/javascript" src="js/online.js"></script>
    		<script type="text/javascript" src="js/industry.js"></script>
    		<script type="text/javascript" src="js/data.js"></script>
    <!-- 		<script type="text/javascript" src="js/index.js"></script> -->
    		<script type="text/javascript" src="js/history.js"></script>
    		<script type="text/javascript" src="js/warn.js"></script>
    	    <script type="text/javascript" src="js/page.js"></script>
    	</body>
    </html>

    page. js

    var page_data = {
    	key: null,
    	pointId: null,
    
    	limit: 6,
    	total: 0, //总条数
    	pageIndex: 1, //第x页
    	totalPage: 0, // 总共页数,
    	activatePage: 1, //激活页 默认为1
    	currentPage: 1, //当前页数 ,默认为1
    	pagelist: 7, //分页按钮个数
    	pageSize: 10, // 每页显示数量
    	mid: 3, //点击按钮 分页按钮重新渲染时的位置 一般 是 pagelist /2 居中
    	factoryHeader: [{
    			"categories": "站点名"
    		},
    		{
    			"categories": "企业名"
    		},
    		{
    			"categories": "状态"
    		},
    		{
    			"categories": "操作"
    		}
    	],
    	factory: [],
    	timer: null //定时器
    };
    
    var page_vue = new Vue({
    	el: '#page',
    	data: page_data,
    	beforeCreate: () => {
    		// this.send();
    
    		console.log("创建前page_data")
    	},
    	created: () => {
    
    
    		// this.dtu();
    		console.log("创建完成page_data")
    	},
    	beforeMount: () => {
    
    	},
    	mounted() {
    		this.timer = setInterval(() => {
    			setTimeout(this.getCurrentPageData(), 0)
    		}, 1000 * 10)
    
    		console.log("挂载完成page_data:");
    
    	},
    	beforeUpdate() {
    
    
    		console.log('=即将更新渲染page_data=');
    	},
    	destroyed() {
    		clearInterval(this.timer);
    		this.timer = null;
    	},
    	watch: {},
    	methods: {
    
    		/* 监测列表 */
    		getCurrentPageData: function() {
    			axios({
    					headers: {
    						'Content-Type': 'application/json'
    					},
    					async: true,
    					method: 'post',
    					url: 'https://www.shbykj.top/bi/monitor/data',
    					data: {
    						'page': page_vue.$data.currentPage,
    						'limit': page_vue.$data.limit,
    					}
    				})
    				.then(function(res) {
    					console.log(res.data.data);
    					if (res.data.data) {
    						page_vue.$data.factory = res.data.data.data
    						page_vue.$data.total = res.data.data.total
    
    						console.log(".this.total" + page_vue.$data.total)
    						let begin = (page_vue.$data.currentPage - 1) * page_vue.$data.pageSize;
    						let end = page_vue.$data.currentPage * page_vue.$data.pageSize;
    						this.mid = Math.floor(page_vue.$data.pagelist / 2);
    						//这里自己diy请求数据
    
    						console.log("dataListLength总条数::::::" + page_vue.$data.total)
    
    						console.log("pageSize每页条数::::::" + page_vue.$data.limit)
    						//总页数
    						page_vue.$data.totalPage = page_vue.$data.total % page_vue.$data.limit == 0 ? page_vue.$data.total / page_vue
    							.$data.limit : Math.floor(page_vue.$data.total /
    								page_vue.$data.limit) + 1
    						console.log("totalPage总页数:" + page_vue.$data.totalPage)
    					}
    				})
    				.catch(function(error) {
    					console.log("大屏监控列表查询异常" + error);
    
    				});
    		},
    
    		// 设置当前页面数据,对数组操作的截取规则为[0~9],[10~20]...,
    		// 当currentPage为1时,我们显示(0*pageSize+1)-1*pageSize,当currentPage为2时,我们显示(1*pageSize+1)-2*pageSize...
    
    
    
    		//上一页
    		prevPage() {
    			console.log(this.currentPage);
    			if (this.currentPage === 1) {
    				return false;
    			} else {
    				this.currentPage--;
    				if (this.activatePage !== 1) {
    					if (this.currentPage <= (this.totalPage - this.pagelist + this.mid)) {
    						this.activatePage = this.currentPage - this.mid;
    					}
    				}
    
    				this.getCurrentPageData();
    			}
    		},
    		// 下一页
    		nextPage() {
    
    			if (this.currentPage === this.totalPage) {
    				return false;
    			} else {
    				if (this.activatePage !== this.totalPage - this.pagelist + 1) {
    					if (this.currentPage >= (this.pagelist - this.mid)) {
    						this.activatePage = this.currentPage - this.mid + 1;
    					}
    				}
    				this.currentPage++;
    
    				this.getCurrentPageData();
    			}
    		},
    		selectPage(event, msg) {
    			//计算 是往前还是往后移动
    			let gap = (this.activatePage + msg - 1) - this.currentPage;
    
    			//把 当前页更新
    			this.currentPage = this.activatePage + msg - 1;
    			if (this.currentPage > this.totalPage) {
    				this.currentPage = this.totalPage;
    			}
    			if (this.currentPage < 1) {
    				this.currentPage = 1;
    			}
    			//如果是 往前移动 需要 判断两种情况 第一种 如果移动到的下一步 加上 显示的页码按钮数 超出了 总页码数
    			//那么 我们就 把 页码按钮的起始更新为 页码数 - 页码按钮显示数 + 1
    			//如果小于等于 那么把 页码按钮更新为点击的页码按钮
    			if (gap > 0 && (this.currentPage + this.pagelist - 1) > this.totalPage) {
    				this.activatePage = this.totalPage - this.pagelist + 1;
    			} else if (gap > 0 && (this.currentPage + this.pagelist - 1) <= this.totalPage) {
    				//对 最小需要调整按钮的边界进行判断
    				if (this.currentPage >= (this.pagelist - this.mid)) {
    					this.activatePage = this.currentPage - this.mid;
    				}
    
    			}
    
    
    			//和上面 一样 我们需要判断 点击分页按钮的 索引  如果点击按钮的数 - 分页按钮的个数  小于0了 那我们 把 分页按钮其实位置改成0
    			//否则的 话 就直接 更新成 点击按钮的索引
    			if (gap < 0 && (this.currentPage - this.pagelist + 1) <= 1) {
    				this.activatePage = 1;
    
    			} else if (gap < 0 && (this.currentPage - this.pagelist + 1) > 1) {
    				//对 最大需要调整按钮的边界进行判断
    				if (this.currentPage <= (this.totalPage - this.pagelist + this.mid)) {
    					this.activatePage = this.currentPage - this.mid;
    				}
    
    
    
    			}
    			var el = event.currentTarget;
    			this.getCurrentPageData();
    
    		}
    	}
    
    })

    结构

    以上就是HTML+VUE分页实现炫酷物联网大屏功能的详细内容,更多关于html分页大屏的资料请关注脚本之家其它相关文章!

  • 相关文章
  • 

    关于我们 | 付款方式 | 荣誉资质 | 业务提交 | 代理合作


    © 2016-2020 巨人网络通讯

    时间:9:00-21:00 (节假日不休)

    地址:江苏信息产业基地11号楼四层

    《增值电信业务经营许可证》 苏B2-20120278

    X

    截屏,微信识别二维码

    微信号:veteran88

    (点击微信号复制,添加好友)

     打开微信