327 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
			
		
		
	
	
			327 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
| <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="KqShowScreen.aspx.cs" Inherits="FineUIPro.Web.HSSE.KqShowScreen.KqShowScreen" %>
 | ||
| 
 | ||
| <!DOCTYPE html>
 | ||
| <html lang="en">
 | ||
| 
 | ||
| <head runat="server">
 | ||
|     <meta charset="UTF-8">
 | ||
|     <meta name="viewport" content="width=device-width, initial-scale=1.0">
 | ||
|     <title>Document</title>
 | ||
|     <script src="../../res/lib/flex.js"></script>
 | ||
|     <link rel="stylesheet" href="../../res/css/kqshowscreen.css">
 | ||
| </head>
 | ||
| 
 | ||
| <body>
 | ||
|     <div class="context">
 | ||
|         <div class="left site">
 | ||
|             <div class="block">
 | ||
|                 <div class="title">当前现场总人数</div>
 | ||
|                 <div class="main xc">
 | ||
|                     <div class="number" id="divTotal">
 | ||
|                         0
 | ||
|                     </div>
 | ||
|                 </div>
 | ||
|             </div>
 | ||
|             <div class="block1 ">
 | ||
|                 <div class="title">当前公司现场人数</div>
 | ||
|                 <div class="main gsxc">
 | ||
|                     <ul id="ulcom"  >
 | ||
|                        
 | ||
|                         
 | ||
|                     </ul>
 | ||
|                 </div>
 | ||
|             </div>
 | ||
|         </div>
 | ||
|         <div class="right site">
 | ||
|             <div class="block1">
 | ||
|                 <div class="top">
 | ||
|                     <div class="info">
 | ||
|                         <ul id="infoul">
 | ||
|                             
 | ||
|                         </ul>
 | ||
|                     </div>
 | ||
|                     <div class="photo">
 | ||
|                         <img id="header" src="">
 | ||
|                     </div>
 | ||
|                 </div>
 | ||
|             </div>
 | ||
|             <div class="block">
 | ||
|                 <div class="title">当前现场岗位人数量</div>
 | ||
|                 <div class="main" id="gwnum">
 | ||
| 
 | ||
|                 </div>
 | ||
|             </div>
 | ||
|         </div>
 | ||
|     </div>
 | ||
| </body>
 | ||
| 
 | ||
| </html>
 | ||
| <script src="../../res/lib/echarts.min.js"></script>
 | ||
| <script src="../../res/lib/jquery.js"></script>
 | ||
| <script>
 | ||
|     var projectid = '<%=ProjectId%>'
 | ||
|    
 | ||
|     function createGWNUM(name, value1) {
 | ||
|         let type = name//['焊工', '电工', '架子工', '木工', '管工', '仪表安装工', '电气安装工', '钢筋工', '起重司机', '钳工', '起重指挥', '混凝土工', '维护电工']
 | ||
|         let value = value1// [100, 96, 89, 88, 87, 81, 80, 76, 75, 72, 70, 65, 62, 61]
 | ||
|         let opt = {
 | ||
|             grid: {
 | ||
|                 top: 20,
 | ||
|                 left: 60,
 | ||
|                 right:60
 | ||
|                 // bottom: 30
 | ||
|             },
 | ||
|             xAxis: {
 | ||
|                 type: 'category',
 | ||
|                 data: type,
 | ||
|                 axisLine: {
 | ||
|                     lineStyle: {
 | ||
|                         color: '#84D7FE'
 | ||
|                     }
 | ||
|                 },
 | ||
|                 axisTick: {
 | ||
|                     show: false
 | ||
|                 },
 | ||
|                 axisLabel: {
 | ||
|                     interval: 0,      // 坐标轴刻度标签的显示间隔
 | ||
|                     rotate: -30        // 标签倾斜的角度
 | ||
|                 }
 | ||
| 
 | ||
|             },
 | ||
|             yAxis: {
 | ||
|                 type: 'value',
 | ||
|                 axisLine: {
 | ||
|                     lineStyle: {
 | ||
|                         color: '#84D7FE'
 | ||
|                     }
 | ||
|                 },
 | ||
|                 splitLine: {
 | ||
|                     lineStyle: {
 | ||
|                         color: '#2E87AC',
 | ||
|                         type: 'dashed'
 | ||
|                     }
 | ||
|                 }
 | ||
|             },
 | ||
|             dataZoom: [
 | ||
|                 {
 | ||
|                     show: true,
 | ||
|                     type: 'slider', // 单独滚动条
 | ||
|                     filterMode: 'none', // 不过滤数据 - 保证 y 轴数据范围不变
 | ||
|                     brushSelect: true,
 | ||
|                     bottom: 0,
 | ||
|                     height: 10,
 | ||
|                     backgroundColor: 'transparent',
 | ||
|                     // 选中范围的填充颜色
 | ||
|                     fillerColor: 'transparent',
 | ||
|                     borderWidth: 0,
 | ||
|                     borderColor: 'transparent',
 | ||
|                     dataBackground: {
 | ||
|                         lineStyle: {
 | ||
|                             color: 'transparent'
 | ||
|                         },
 | ||
|                         areaStyle: {
 | ||
|                             color: 'transparent'
 | ||
|                         }
 | ||
|                     },
 | ||
|                     selectedDataBackground: {
 | ||
|                         lineStyle: {
 | ||
|                             color: 'transparent'
 | ||
|                         },
 | ||
|                         areaStyle: {
 | ||
|                             color: 'transparent'
 | ||
|                         }
 | ||
|                     },
 | ||
| 
 | ||
|                     startValue: 0,
 | ||
|                     endValue: 10,
 | ||
|                     xAxisIndex: [0],
 | ||
|                     showDetail: false,
 | ||
| 
 | ||
|                     handleSize: '0%',
 | ||
|                     // 移动手柄尺寸高度
 | ||
|                     // 测试发现手柄颜色和边框颜色会出现 偏差,所有设置手柄高度为0, 添加边框高度。由边框撑起高度
 | ||
|                     moveHandleSize: 0, // 设置拖动手柄高度为0,只由边框负责高度展示
 | ||
|                     // 不展示拖动手柄图标
 | ||
|                     moveHandleIcon: 'none',
 | ||
|                     moveHandleStyle: {
 | ||
|                         // borderColor: systemTheme === 'light' ? '#E4E6E7' : '#5d6177',
 | ||
|                         borderColor:'#5d6177',
 | ||
|                         borderWidth: 10, // 设置边框高度
 | ||
|                         borderType: 'solid',
 | ||
|                         borderCap: 'round',
 | ||
|                         // 保证拖动手柄右边框结尾有圆角
 | ||
|                         borderJoin: 'round'
 | ||
|                     },
 | ||
|                     // 拖动高亮时设置
 | ||
|                     emphasis: {
 | ||
|                         moveHandleStyle: {
 | ||
|                             // borderColor: systemTheme === 'light' ? '#E4E6E7' : '#5d6177',
 | ||
|                             borderColor: '#5d6177',
 | ||
|                             borderWidth: 10,
 | ||
|                             borderType: 'solid',
 | ||
|                             borderCap: 'round'
 | ||
|                         }
 | ||
|                     }
 | ||
|                 }
 | ||
|             ],
 | ||
|             series: [
 | ||
|                 {
 | ||
|                     name: '',
 | ||
|                     data: value,
 | ||
|                     type: 'bar',
 | ||
|                     label: {
 | ||
|                         show: true,
 | ||
|                         color: '#ffffff',
 | ||
|                         position: 'top',
 | ||
|                     },
 | ||
|                     barWidth: 16,
 | ||
|                     itemStyle: {
 | ||
|                         normal: {
 | ||
|                             color:function(d){return "#"+Math.floor(Math.random()*(256*256*256-1) ).toString(16);}
 | ||
|                         }
 | ||
|                     }
 | ||
| 
 | ||
|                 }
 | ||
|             ]
 | ||
|         };
 | ||
| 
 | ||
|         var myEchart = echarts.init(document.getElementById('gwnum'));
 | ||
|         myEchart.setOption(opt);
 | ||
|     }
 | ||
| 
 | ||
|     
 | ||
|     getData();
 | ||
|     function getData() { 
 | ||
|         $.ajax({
 | ||
|             url: "KqShowScreen.aspx/getData",
 | ||
|             type: "POST",
 | ||
|             contentType: "application/json; charset=utf-8",
 | ||
|             dataType: "json",
 | ||
|             data: JSON.stringify({
 | ||
|                 projectId: projectid 
 | ||
|             }),
 | ||
|             success: function (data) { 
 | ||
|                 if (data.d != null) {
 | ||
|                     var workPost = data.d.workPost;                     
 | ||
|                     if (workPost != null) { 
 | ||
|                         createGWNUM(workPost.name, workPost.value)
 | ||
|                     }
 | ||
| 
 | ||
|                     var company = data.d.company;
 | ||
|                     if (company != null) {
 | ||
|                         var chtml = '';
 | ||
|                         company.forEach(function (item, index, arr) {
 | ||
|                             chtml += ' <li><span>' + item.name + '</span><span>' + item.value +'</span></li>'; 
 | ||
|                         })
 | ||
|                         $("#ulcom").html(chtml)  
 | ||
| 
 | ||
|                     }
 | ||
|                     var person = data.d.person;
 | ||
|                     if (person != null) {
 | ||
|                         var phtml = '<li><span>所属单位</span><span>' + person.UnitName +'</span></li>'+
 | ||
|                             '<li ><span>姓名</span><span>' +   person.PersonName +'</span></li>' +
 | ||
|                             '<li><span>岗位</span><span>' + person.WorkPostName+'</span></li>' +
 | ||
|                             '<li><span>班组</span><span>' + person.teamGroupName +'</span></li>' +
 | ||
|                             '<li><span>' + person.inOut+'时间</span><span>' + person.ChangeTime+'</span></li>';
 | ||
| 
 | ||
| 
 | ||
|                         $("#infoul").html(phtml)  
 | ||
|                         $("#header").attr('src',person.PhotoUrl);  
 | ||
|                         
 | ||
|                     }
 | ||
|                   
 | ||
|                     $("#divTotal").html(data.d.total)
 | ||
| 
 | ||
| 
 | ||
|                    
 | ||
|                 }
 | ||
| 
 | ||
|                 
 | ||
|              
 | ||
|             }
 | ||
|         })
 | ||
|     }
 | ||
| 
 | ||
| 
 | ||
| 
 | ||
|     // 设定默认值
 | ||
|     var websock = null;
 | ||
|     var cishu = 0;
 | ||
|     // 每10分钟 通过 websocket 向服务器发送一次心跳 证明客户端没有离线 依然在线可以正常接受消息
 | ||
|     setInterval(websocketsend, 20000);
 | ||
| 
 | ||
|     //initWebsocket();
 | ||
|     function initWebsocket() {
 | ||
|         /*
 | ||
|         * 初始化 websock
 | ||
|         * 连接 服务器地址
 | ||
|         * 并绑定 websock 四个事件方法
 | ||
|         */
 | ||
|         websock = new WebSocket('wss://wzgl.hfnbd.com:1000');
 | ||
|         // 接收服务器返回的数据
 | ||
|         websock.onmessage = this.websocketonmessage;
 | ||
|         // 连接建立时触发
 | ||
|         websock.onopen = this.websocketonopen;
 | ||
|         // 连接中发生异常
 | ||
|         websock.onerror = this.websocketonerror;
 | ||
|         // 连接关闭时触发
 | ||
|         websock.onclose = this.websocketclose;
 | ||
|         cishu = 0;
 | ||
|     } 
 | ||
|     function websocketonopen(){ 
 | ||
|          
 | ||
|         websocketsend();
 | ||
|     }
 | ||
| 
 | ||
| 
 | ||
|     function websocketonerror() {
 | ||
|         /*
 | ||
|         * websocket 连接建立失败 执行的方法
 | ||
|         * 注:我这里加了个判断,如果联系建立失败就在连接几次
 | ||
|         */
 | ||
|         if (cishu < 5) {
 | ||
|             cishu = cishu + 1;
 | ||
|             initWebsocket();
 | ||
|         }
 | ||
|     } 
 | ||
| 
 | ||
| 
 | ||
|     function websocketsend() {
 | ||
| 
 | ||
|         /*
 | ||
|         * websocket 数据发送 通过 websock.send() 方法向服务器发送数据
 | ||
|         * 注:这里随便发哈,主要作用就是通过这个动作,让客户端与服务端建立联系
 | ||
|         */
 | ||
|         let actions = {
 | ||
|             "projectid": projectid
 | ||
|         };
 | ||
|         websock.send(JSON.stringify(actions));
 | ||
|     }
 | ||
| 
 | ||
| 
 | ||
|     function websocketclose(e) {
 | ||
|         /*
 | ||
|         * websocket 连接关闭 执行的方法
 | ||
|         */
 | ||
|         console.log('断开连接', e);
 | ||
|     }
 | ||
| 
 | ||
| 
 | ||
|     function websocketonmessage(e) {
 | ||
|         /*
 | ||
|         * websocket 数据接收 执行的方法
 | ||
|         * 注:服务器通过 websocke 向客户端发送数据时,这里的方法就会自动触发啦
 | ||
|         */
 | ||
| 
 | ||
|         if ("newinout" == e.data);
 | ||
|         {
 | ||
|             getData();
 | ||
|         }
 | ||
|     }
 | ||
| 
 | ||
| 
 | ||
|     setInterval(function () { //执行任务 
 | ||
|         getData();
 | ||
|     }, 2000); 
 | ||
| 
 | ||
| </script> |