HTML+VUE分页实现炫酷物联网大屏功能


Posted in Vue.js onMay 27, 2021

效果

HTML+VUE分页实现炫酷物联网大屏功能

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+VUE分页实现炫酷物联网大屏功能的详细内容,更多关于html分页大屏的资料请关注三水点靠木其它相关文章!

 
Vue.js 相关文章推荐
vue+iview实现分页及查询功能
Nov 17 Vue.js
Vue.js桌面端自定义滚动条组件之美化滚动条VScroll
Dec 01 Vue.js
vue中如何添加百度统计代码
Dec 19 Vue.js
Vue实现随机验证码功能
Dec 29 Vue.js
vue实现图书管理系统
Dec 29 Vue.js
vue完美实现el-table列宽自适应
May 08 Vue.js
Vue实现下拉加载更多
May 09 Vue.js
解决Vue+SpringBoot+Shiro跨域问题
Jun 09 Vue.js
Vue项目打包、合并及压缩优化网页响应速度
Jul 07 Vue.js
Vue3中toRef与toRefs的区别
Mar 24 Vue.js
vue.js 使用原生js实现轮播图
Apr 26 Vue.js
vue实现登陆页面开发实践
May 30 Vue.js
Vue实现动态查询规则生成组件
详解vue身份认证管理和租户管理
vue点击弹窗自动触发点击事件的解决办法(模拟场景)
vue-element-admin项目导入和导出的实现
May 21 #Vue.js
vue2实现provide inject传递响应式
May 21 #Vue.js
vue使用节流函数的踩坑实例指南
vue实现同时设置多个倒计时
May 20 #Vue.js
You might like
PHP计划任务之关闭浏览器后仍然继续执行的函数
2010/07/22 PHP
PHP通过session id 实现session共享和登录验证的代码
2012/06/03 PHP
PHP中创建和验证哈希的简单方法实探
2015/07/06 PHP
PHP导入导出Excel代码
2015/07/07 PHP
PHP正则表达式入门教程(推荐)
2016/05/18 PHP
php微信公众账号开发之前五个坑(一)
2016/09/18 PHP
JQuery 解析多维的Json数据格式
2009/11/02 Javascript
js如何获取object类型里的键值
2014/02/18 Javascript
一个奇葩的最短的 IE 版本判断JS脚本
2014/05/28 Javascript
ajaxFileUpload.js插件支持多文件上传的方法
2014/09/02 Javascript
Egret引擎开发指南之创建项目
2014/09/03 Javascript
JavaScript获得页面base标签中url的方法
2015/04/03 Javascript
jQuery里filter()函数与find()函数用法分析
2015/06/24 Javascript
jQuery仿淘宝网产品品牌隐藏与显示效果
2015/09/01 Javascript
JS实现超简单的汉字转拼音功能示例
2016/12/22 Javascript
jquery在启动页面时,自动加载数据的实例
2018/01/22 jQuery
mpvue写一个CPASS小程序的示例
2018/09/04 Javascript
区别JavaScript函数声明与变量声明
2018/09/12 Javascript
Js 利用正则表达式和replace函数获取string中所有被匹配到的文本(推荐)
2018/10/28 Javascript
Vue项目打包部署到iis服务器的配置方法
2019/10/14 Javascript
[01:34]传奇从这开始 2016国际邀请赛中国区预选赛震撼开启
2016/06/26 DOTA
使用python检测手机QQ在线状态的脚本代码
2013/02/10 Python
Python多进程分块读取超大文件的方法
2016/04/13 Python
Python实现二叉树结构与进行二叉树遍历的方法详解
2016/05/24 Python
python3 与python2 异常处理的区别与联系
2016/06/19 Python
Python实现的json文件读取及中文乱码显示问题解决方法
2018/08/06 Python
python、Matlab求定积分的实现
2019/11/20 Python
python爬取代理IP并进行有效的IP测试实现
2020/10/09 Python
CSS3圆角边框和边界图片效果实例
2016/07/01 HTML / CSS
Michael Kors加拿大官网:购买设计师手袋、手表、鞋子、服装等
2019/03/16 全球购物
Coccinelle官网:意大利的著名皮具品牌
2019/05/15 全球购物
Python面试题:如何用Python来发送邮件
2016/03/15 面试题
应聘医药销售自荐书范文
2014/02/08 职场文书
新年寄语大全
2014/04/12 职场文书
本科毕业生求职信
2014/06/15 职场文书
导游词之绍兴柯岩古镇
2020/01/09 职场文书