<!DOCTYPE html>
|
|
<html lang="en" xmlns="http://www.w3.org/1999/xhtml">
|
<head>
|
<meta charset="utf-8" />
|
<title>设备稼动率看板</title>
|
<link rel="stylesheet" type="text/css" href="css/bootstrap.min.css">
|
<link rel="stylesheet" type="text/css" href="css/bootstrap-table.min.css">
|
<link rel="stylesheet" type="text/css" href="css/index.css">
|
<script src="js/jquery.min.js"></script>
|
<script src='js/echarts.min.js'></script>
|
<script src="js/bootstrap.min.js"></script>
|
<script src='js/bootstrap-table.min.js'></script>
|
<script src='js/bootstrap-table-zh-CN.min.js'></script>
|
<script src="js/jquery.SuperSlide.2.1.3.js"></script>
|
<script src='js/template.js'></script>
|
<script src="js/jquery.qrcode.min.js"></script>
|
<script src="js/webConfig.js"></script>
|
<style>
|
.clock {
|
font-family: 'BebasNeueRegular', Arial, Helvetica, sans-serif;
|
font-size: 20px;
|
width: 450px;
|
float: right;
|
color: #fff;
|
margin-top: -75px;
|
margin-right: 5px;
|
color: #09d1ea;
|
}
|
|
.clock #Date {
|
text-align: center;
|
text-shadow: 0 0 0px #00c6ff;
|
}
|
|
.clock ul {
|
width: 450px;
|
margin: 0 auto;
|
padding: 0px;
|
list-style: none;
|
text-align: right;
|
margin-left: 15px;
|
position: relative;
|
}
|
|
.clock ul li {
|
display: inline;
|
font-size: 24px;
|
text-align: left;
|
font-family: 'BebasNeueRegular', Arial, Helvetica, sans-serif;
|
text-shadow: 0 0 0px #00c6ff;
|
}
|
|
body {
|
padding-left: 50px;
|
padding-right: 50px;
|
}
|
|
.title {
|
font-size: 44px;
|
font-family: PingFangSC;
|
font-weight: 500;
|
color: rgba(9, 209, 234, 1);
|
text-align: center;
|
background: url(img/img_little_new.png) center no-repeat;
|
margin-bottom: 30px;
|
}
|
|
.col-sm-12 {
|
position: relative;
|
min-height: 1px;
|
padding-right: 0px;
|
padding-left: 0px;
|
}
|
|
.left {
|
/* border: 1px solid #00c6ff; */
|
height: 900px;
|
}
|
|
.right {
|
/* border: 1px solid #00c6ff; */
|
height: 250px;
|
}
|
|
|
|
.col-sm-12,
|
.col-sm-2,
|
.col-sm-3,
|
.col-sm-4,
|
.col-sm-6,
|
.col-sm-8 {
|
position: relative;
|
min-height: 1px;
|
padding-right: 0px;
|
padding-left: 0px;
|
}
|
|
#mychart1,
|
#mychart2,
|
#mychart3 {
|
width: 100%;
|
border: none;
|
height: 300px;
|
}
|
|
#cList {
|
margin: 0% auto;
|
color: #00c6ff;
|
}
|
|
#cList li {
|
margin: 20px 0px;
|
text-align: left;
|
font-size: 18px;
|
margin-left: 25%;
|
}
|
|
#cList1 {
|
float: left;
|
}
|
|
#cList1 li {
|
float: left;
|
height: 450px;
|
color: #00c6ff;
|
font-size: 20px;
|
/*文字居中*/
|
text-align: center;
|
/*display: flex;*/
|
}
|
|
#cList1 li span {
|
/*文字居中*/
|
display: inline-block;
|
height: 100%;
|
/*文字居中*/
|
/*文字竖排*/
|
writing-mode: vertical-lr;
|
/*从左向右 从右向左是 writing-mode: vertical-rl;*/
|
writing-mode: tb-lr;
|
/*IE浏览器的从左向右 从右向左是 writing-mode: tb-rl;*/
|
}
|
|
table tr td {
|
text-align: center;
|
vertical-align: middle !important;
|
/*border: 1px solid #464646;*/
|
border-right: 0px;
|
height: 40px;
|
font-size: 16px;
|
font-family: '黑体';
|
font-family: Arial;
|
border: none;
|
}
|
|
.table > caption + thead > tr:first-child > td,
|
.table > caption + thead > tr:first-child > th,
|
.table > colgroup + thead > tr:first-child > td,
|
.table > colgroup + thead > tr:first-child > th,
|
.table > thead:first-child > tr:first-child > td,
|
.table > thead:first-child > tr:first-child > th {
|
background-color: #000;
|
color: #3bff72;
|
}
|
|
.fixed-table-container tbody td .th-inner,
|
.fixed-table-container thead th .th-inner {
|
font-size: 15px;
|
color: #09d1ea;
|
padding: 20px 0 15px 0;
|
}
|
|
#tb_order tr td {
|
text-align: center;
|
height: 32px;
|
line-height: 32px;
|
font-size: 14px;
|
/* font-family: '黑体'; */
|
color: #a6a8ae;
|
font-family: Arial;
|
/* border: 1px solid #464646; */
|
border: none;
|
}
|
|
.bootstrap-table .table {
|
border-radius: none
|
}
|
|
th {
|
background-color: transparent !important;
|
}
|
|
td {
|
background-color: transparent;
|
}
|
|
tr {
|
background-color: transparent
|
}
|
|
#tb_order tr:nth-child(even) {
|
background: #080c1c;
|
}
|
|
.fixed-table-container tbody td .th-inner,
|
.fixed-table-container thead th .th-inner {
|
text-align: left;
|
}
|
|
.progress {
|
background-color: darkblue;
|
}
|
|
#tb_order tr:nth-child(even) {
|
background: #000000;
|
}
|
|
.pull-right, .fixed-table-pagination .pagination-detail, .fixed-table-pagination div.pagination {
|
display: none;
|
}
|
</style>
|
<script type="text/javascript">
|
//参数配置
|
var HouseCode = '509';
|
|
|
var interval;//计时器
|
var interval1;//计时器
|
var num = 0;
|
var NetQtys = []; //开机
|
var SumQtys = []; //开工
|
var WayQtys = []; //维修
|
var MatsQtys = []; //待机
|
var ToDayDt = []; //今日不良对比时间数组
|
var GoodQty = []; //今日不良对比合格数数组
|
$(document).ready(function () {
|
// 创建两个变量,一个数组中的月和日的名称
|
var monthNames = ["1 月", "2 月", "3 月", "4 月", "5 月", "6 月", "7 月", "8 月", "9 月", "10 月", "11 月", "12 月"];
|
setInterval(function () {
|
var date1 = new Date;
|
var year = date1.getFullYear();
|
var month = date1.getMonth();
|
var day = date1.getDate();
|
var hh = date1.getHours();
|
var mm = date1.getMinutes();
|
var ss = date1.getSeconds();
|
var dayNames = new Array("星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六");
|
var Stamp = new Date();
|
|
|
$('#Date').html(year + " 年" + " " + monthNames[month] + ' ' + day + " 日 " + ' ' + dayNames[Stamp.getDay()]);
|
$("#hours").html((hh < 10 ? ("0" + hh) : hh));
|
$("#min").html((mm < 10 ? ("0" + mm) : mm));
|
$("#sec").html((ss < 10 ? ("0" + ss) : ss));
|
|
}, 1000);
|
|
});
|
$(function () {
|
var mychart1 = echarts.init(document.getElementById('mychart1'));
|
var mychart2 = echarts.init(document.getElementById('mychart2'));
|
var mychart3 = echarts.init(document.getElementById('mychart3'));
|
|
Chart(mychart1, mychart2, mychart3);
|
|
DataTableCol(20);
|
|
// 定时器
|
interval = setInterval(function () {
|
NetQtys = []; //开机
|
SumQtys = []; //开工
|
WayQtys = []; //维修
|
MatsQtys = []; //待机
|
ToDayDt = []; //今日不良对比时间数组
|
GoodQty = []; //今日不良对比合格数数组
|
Chart(mychart1, mychart2, mychart3);
|
}, 20000);
|
interval1 = setInterval(function () {
|
DataTableCol(20);
|
}, 20000);
|
//根据浏览器大小改变大小
|
window.onresize = () => {
|
mychart1.resize();
|
mychart2.resize();
|
mychart3.resize();
|
}
|
})
|
|
function Chart(mychart1, mychart2, mychart3) {
|
$.ajax({
|
url: GetWEBURL() +"loaddata/KB_EquipmentUtilizationRateData",
|
dataType: "JSON",
|
async: false,//使用同步的方式,true为异步方式
|
type: "Get",
|
data: { "HouseCode": HouseCode },
|
success: function (data) {
|
//订单信息
|
switch (data.data[0][0].Statu) {
|
case '1':
|
$("#Stus").html("计划");
|
break;
|
case '2':
|
$("#Stus").html("计划确认");
|
break;
|
case '3':
|
$("#Stus").html("下达");
|
break;
|
case '4':
|
$("#Stus").html("开工");
|
break;
|
case '5':
|
$("#Stus").html("完工");
|
break;
|
case '6':
|
$("#Stus").html("结案");
|
break;
|
case '7':
|
$("#Stus").html("结算");
|
default:
|
}
|
$("#OrderQty").html(parseFloat(data.data[0][0].ZQty).toFixed(0));
|
$("#NetQty").html(parseFloat(data.data[0][0].EmptQty).toFixed(0));
|
$("#SumQty").html(parseFloat(data.data[0][0].ZKQty).toFixed(0));
|
$("#MatsQty").html(parseFloat(data.data[0][0].LackMastQty).toFixed(0));
|
$("#WayQty").html(parseFloat(data.data[0][0].PuchQty).toFixed(0));
|
|
//开机率 开工率 维修率 待机率
|
NetQtys.push(data.data[1][0]["NetQtys"]);
|
SumQtys.push(data.data[1][0]["SumQtys"]);
|
WayQtys.push(data.data[1][0]["WayQtys"]);
|
MatsQtys.push(data.data[1][0]["MatsQtys"]);
|
//来料不良率
|
//今日不良对比
|
$.each(data.data[2], function (index, val) {
|
ToDayDt.push(val.num);
|
GoodQty.push(val.workOEE);
|
});
|
},
|
error: function (data) {
|
|
}
|
})
|
|
const colorList = ['#47A2FF', '#ff9900', '#c0ffff', '#ffffff']
|
option1 = {
|
title: [
|
{
|
text: '开机率',
|
subtext: NetQtys + '%',
|
textStyle: {
|
fontSize: 16,
|
color: '#999',
|
lineHeight: 20
|
},
|
subtextStyle: {
|
fontSize: 28,
|
color: '#00c6ff'
|
},
|
textAlign: 'center',
|
left: '50%',
|
top: '78%'
|
},
|
{
|
show: true,
|
text: '状态对比分析',
|
textStyle: {
|
color: '#00c6ff',
|
fontSize: '16',
|
},
|
textAlign: 'center',
|
left: '50%',
|
top: '0%'
|
}
|
],
|
tooltip: {
|
trigger: 'item',
|
},
|
legend: {
|
type: 'scroll',
|
icon: 'pin',
|
top: '15%',
|
left: 'center',
|
textStyle: {
|
color: '#09d1ea'
|
}
|
},
|
color: colorList,
|
series: [
|
{
|
name: '占比',
|
type: 'pie',
|
radius: [50, 80],
|
center: ['50%', '50%'],
|
avoidLabelOverlap: false,
|
label: {
|
show: false
|
},
|
labelLine: {
|
show: false
|
},
|
itemStyle: {
|
borderWidth: 3,
|
borderColor: '#000000'
|
},
|
data: [
|
{ name: '开机', value: NetQtys },
|
{ name: '开工', value: SumQtys },
|
{ name: '待机', value: WayQtys },
|
{ name: '维修中', value: MatsQtys }
|
],
|
}
|
]
|
};
|
|
option2 = {
|
title: [
|
{
|
text: '',
|
subtext: 0 + '%',
|
textStyle: {
|
fontSize: 16,
|
color: '#999',
|
lineHeight: 20
|
},
|
subtextStyle: {
|
fontSize: 28,
|
color: '#00c6ff'
|
},
|
textAlign: 'center',
|
left: '50%',
|
top: '50%'
|
},
|
{
|
show: true,
|
text: '来料不良率',
|
textStyle: {
|
color: '#00c6ff',
|
fontSize: '16',
|
},
|
textAlign: 'center',
|
left: '50%',
|
top: '5%'
|
}
|
],
|
tooltip: {
|
trigger: 'item',
|
},
|
legend: {
|
type: 'scroll',
|
icon: 'pin',
|
show: false
|
},
|
color: colorList,
|
series: [
|
{
|
name: '占比',
|
type: 'pie',
|
radius: [50, 80],
|
center: ['50%', '50%'],
|
center: ['50%', '60%'],
|
avoidLabelOverlap: false,
|
label: {
|
show: false
|
},
|
labelLine: {
|
show: false
|
},
|
itemStyle: {
|
borderWidth: 3,
|
borderColor: '#000000'
|
},
|
data: [
|
{ name: '', value: 0 },
|
{ name: '', value: 100 - 2 }
|
],
|
}
|
]
|
};
|
|
option3 = {
|
title: {
|
text: '稼动率对比',
|
left: '0',
|
top: 2,
|
textStyle: {
|
fontSize: 20,
|
color: '#00c6ff',
|
fontFamily: "微软雅黑"
|
},
|
},
|
color: ['#5b9bd5', '#ed7d31', '#a9d18e', '#ffc000'],
|
tooltip: {
|
|
},
|
grid: {
|
left: '3%',
|
right: '4%',
|
bottom: '10%',
|
containLabel: true
|
},
|
legend: {
|
left: 'right',
|
data: ['工作稼动率'],
|
textStyle: {
|
color: '#00c6ff',
|
fontSize: 16,
|
fontFamily: "微软雅黑"
|
}
|
|
},
|
xAxis: [
|
{
|
type: 'category',
|
data: ToDayDt,
|
axisTick: {
|
alignWithLabel: true
|
},
|
|
axisLine: {
|
show: true,
|
lineStyle: {
|
color: '#00c6ff',
|
type: 'solid', //设置网格线类型 dotted:虚线 solid:实线
|
width: 1, //隐藏y轴
|
}
|
},
|
axisLabel: {
|
interval: 0, //控制X轴刻度全部显示
|
rotate: 45, //倾斜角度
|
show: true,
|
textStyle: {
|
color: '#00c6ff', //坐标值得具体的颜色
|
fontSize: '16'
|
}
|
}
|
}
|
],
|
yAxis: [
|
{
|
type: 'value',
|
axisLine: {
|
show: false,
|
|
},
|
splitLine: { //网格线
|
lineStyle: {
|
color: '#00c6ff',
|
|
},
|
show: true //隐藏或显示
|
},
|
axisLabel: {
|
textStyle: {
|
color: '#00c6ff', //坐标值得具体的颜色
|
fontSize: '16'
|
}
|
}
|
}
|
],
|
series: [
|
{
|
name: '工作稼动率',
|
type: 'bar',
|
barWidth: 15,
|
data: GoodQty
|
}
|
]
|
};
|
|
|
mychart1.setOption(option1);
|
//mychart2.setOption(option2);
|
mychart3.setOption(option3);
|
}
|
var col = [];
|
var colTable = [];
|
var option = [];
|
//获取表格数据 的列名 数据 以及总数
|
function DataTableCol(nums) {
|
var params = queryParams(nums);
|
$.ajax({
|
url: GetWEBURL() + '/loaddata/KB_EquipmentUtilizationRateTableData'
|
, type: "get"
|
, data: {
|
HouseCode: params.HouseCode,
|
limit: params.limit, //页面大小
|
offset: params.offset //页码
|
}
|
, success: function (data) {
|
col = [];
|
var dataTable = JSON.parse(data);
|
|
//判断是否是最后一页
|
var num_total = (dataTable.data[0][0]["Column1"]) / nums
|
if (num >= num_total) {
|
num = 0
|
}
|
|
for (var i = 0; i < dataTable.ColName.length; i++) {
|
col.push({ field: dataTable.ColName[i].ColName, title: dataTable.ColName[i].ColName, align: "left" })
|
}
|
colTable = dataTable.data[1];
|
DataTable();
|
$('#tb_order').bootstrapTable('destroy');//先删除
|
$('#tb_order').bootstrapTable(option);//再重新渲染
|
}
|
})
|
}
|
function DataTable() {
|
//$('#tb_order').bootstrapTable();
|
option = {
|
//url: GetWEBURL() +'/loaddata/KB_EquipmentUtilizationRateTableData',
|
data: colTable,
|
//method: 'get', //请求方式(*)
|
//dataType: "json",
|
//queryParams: queryParams,
|
striped: false, //是否显示行间隔色
|
cache: false, //是否使用缓存,默认为true,所以一般情况下需要设置一下这个属性(*)
|
pagination: true, //是否显示分页(*)
|
sortable: false, //是否启用排序
|
sortable: false, //是否启用排序
|
search: false, //是否启用搜索框
|
sidePagination: "server", //分页方式:client客户端分页,server服务端分页(*)
|
pageNumber: 1, //初始化加载第一页,默认第一页
|
pageSize: 20, //每页的记录行数(*)
|
pageList: [20], //可供选择的每页的行数(*)
|
strictSearch: false, //设置为 true启用 全匹配搜索,否则为模糊搜索
|
clickToSelect: true, //是否启用点击选中行
|
singleSelect: true, //设置True 将禁止多选
|
uniqueId: "ID", //每一行的唯一标识,一般为主键列
|
cardView: false, //是否显示详细视图
|
detailView: false, //是否显示父子表
|
columns: col,
|
onClickRow: function (row, $element) {
|
|
},
|
onCheck: function (row, $element) {
|
|
},
|
onLoadSuccess: function (row) {
|
|
//var a = $('#tb_order').bootstrapTable('getSelections');
|
}
|
|
};
|
}
|
//得到查询的参数
|
function queryParams(params) {
|
num += 1;
|
var temp = { //这里的键的名字和控制器的变量名必须一直,这边改动,控制器也需要改成一样的
|
HouseCode: HouseCode,
|
//limit: params.limit, //页面大小
|
limit: params, //页面大小
|
offset: num, //页码
|
};
|
return temp;
|
}
|
</script>
|
</head>
|
|
<body>
|
<div class='title'>设备稼动率看板</div>
|
<div class="clock">
|
<ul>
|
<li id="Date"></li>
|
<li id="hours"> </li>
|
<li id="point">:</li>
|
<li id="min"> </li>
|
<li id="point">:</li>
|
<li id="sec"> </li>
|
</ul>
|
|
</div>
|
<div class="col-sm-8 left">
|
<table id="tb_order" class="table-condensed table-responsive tb_order" data-filter-control="true"></table>
|
</div>
|
<div class="col-sm-4 right">
|
<div class="col-sm-6 right">
|
<ul id="cList">
|
<li style="font-size: 25px">状态:<span id="Stus"></span></li>
|
<li>总设备数量:<span id="OrderQty">0</span></li>
|
<li>开机:<span id="NetQty">0</span></li>
|
<li>开工:<span id="SumQty">0</span></li>
|
<li>待机:<span id="MatsQty">0</span></li>
|
<li>维修中:<span id="WayQty">0</span></li>
|
</ul>
|
</div>
|
<div class="col-sm-6 right">
|
<div id="mychart1"></div>
|
</div>
|
</div>
|
<div class="col-sm-4 right">
|
<div id="mychart2"></div>
|
</div>
|
<div class="col-sm-4 right">
|
<div id="mychart3"></div>
|
</div>
|
|
</body>
|
|
</html>
|