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中使用Echarts可视化库的完整步骤记录
Nov 18 Vue.js
解决vue下载后台传过来的乱码流的问题
Dec 05 Vue.js
vue实现滚动鼠标滚轮切换页面
Dec 13 Vue.js
Vue实现省市区三级联动
Dec 27 Vue.js
如何在vue 中使用柱状图 并自修改配置
Jan 21 Vue.js
详解Vue.js 可拖放文本框组件的使用
Mar 03 Vue.js
vue中data改变后让视图同步更新的方法
Mar 29 Vue.js
Vue实现下拉加载更多
May 09 Vue.js
解读Vue组件注册方式
May 15 Vue.js
一文带你理解vue创建一个后台管理系统流程(Vue+Element)
May 18 Vue.js
vue cli4中mockjs在dev环境和build环境的配置详情
Apr 06 Vue.js
使用vue判断当前环境是安卓还是IOS
Apr 12 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
Mysql中limit的用法方法详解与注意事项
2008/04/19 PHP
攻克CakePHP系列三 表单数据增删改
2008/10/22 PHP
Discuz 6.0+ 批量注册用户名
2009/09/13 PHP
php for 循环语句使用方法详细说明
2010/05/09 PHP
js 点击按钮弹出另一页,选择值后,返回到当前页
2010/05/26 Javascript
js confirm()方法的使用方法实例
2013/07/13 Javascript
javascript弹出层输入框(示例代码)
2013/12/11 Javascript
jQuery实现滚动鼠标放大缩小图片的方法(附demo源码下载)
2016/03/05 Javascript
webpack独立打包和缓存处理详解
2017/04/03 Javascript
微信小程序之获取当前位置经纬度以及地图显示详解
2017/05/09 Javascript
深入理解vue Render函数
2017/07/19 Javascript
用JS编写一个函数,返回数组中重复出现过的元素(实例)
2017/09/14 Javascript
JavaScript门道之标准库
2018/05/26 Javascript
node+express框架中连接使用mysql(经验总结)
2018/11/10 Javascript
JS实现的简单tab切换功能完整示例
2019/06/20 Javascript
vue select 获取value和lable操作
2020/08/28 Javascript
Javascript生成器(Generator)的介绍与使用
2021/01/31 Javascript
[01:56]生活中的妖精之七夕特别档
2016/08/09 DOTA
[03:55]DOTA2完美大师赛选手传记——LFY.MONET
2017/11/18 DOTA
python正则表达式判断字符串是否是全部小写示例
2013/12/25 Python
Python中自定义函数的教程
2015/04/27 Python
使用Python生成url短链接的方法
2015/05/04 Python
Python打印斐波拉契数列实例
2015/07/07 Python
在python中使用with打开多个文件的方法
2019/01/07 Python
对Python Class之间函数的调用关系详解
2019/01/23 Python
pyqt5 使用label控件实时显示时间的实例
2019/06/14 Python
python networkx 根据图的权重画图实现
2019/07/10 Python
python 并发下载器实现方法示例
2019/11/22 Python
Python基于traceback模块获取异常信息
2020/07/23 Python
纯css3使用vw和vh实现自适应的方法
2018/02/09 HTML / CSS
配置管理计划的主要内容有哪些
2014/06/20 面试题
工厂仓库管理员岗位职责
2015/04/09 职场文书
陪护人员误工证明
2015/06/24 职场文书
深入探讨opencv图像矫正算法实战
2021/05/21 Python
动画《新网球王子 U-17 WORLD CUP》希腊队PV公开
2022/04/02 日漫
mysql使用 not int 子查询隐含陷阱
2022/04/12 MySQL