460 lines
14 KiB
JavaScript
460 lines
14 KiB
JavaScript
|
|
var table;
|
|||
|
|
var table2;
|
|||
|
|
var layuiForm;
|
|||
|
|
var layer;
|
|||
|
|
var rhButtonV=0;
|
|||
|
|
$(function () {
|
|||
|
|
layui.use(['form', 'laydate','table', 'upload'], function () {
|
|||
|
|
layuiForm = layui.form; //只有执行了这一步,部分表单元素才会自动修饰成功
|
|||
|
|
table=layui.table;
|
|||
|
|
table2 = layui.table;
|
|||
|
|
layer=layui.layer;
|
|||
|
|
layuiForm.render();
|
|||
|
|
//初始设置温度
|
|||
|
|
// initSet();
|
|||
|
|
//初始化遥控表格数据
|
|||
|
|
initRemoteTable(2);
|
|||
|
|
getHighAndLowTemperature("handControl");
|
|||
|
|
getHighAndLowTemperature("remoteControl");
|
|||
|
|
//初始化手动表格数据
|
|||
|
|
initHandTable(1);
|
|||
|
|
$("#remoteButton").click(function(){
|
|||
|
|
setModel(2);
|
|||
|
|
});
|
|||
|
|
$("#handButton").click(function(){
|
|||
|
|
setModel(1);
|
|||
|
|
});
|
|||
|
|
|
|||
|
|
$("#handType").click(function(){
|
|||
|
|
rhButtonV=1;
|
|||
|
|
//$("#handType").attr('style', 'color: blue;background-color:#fff;');
|
|||
|
|
//$("#remoteType").attr('style', 'color: #000;background-color:#fff;');
|
|||
|
|
});
|
|||
|
|
$("#remoteType").click(function(){
|
|||
|
|
rhButtonV=2;
|
|||
|
|
//$("#handType").attr('style', 'color: #000;background-color:#fff;');
|
|||
|
|
//$("#remoteType").attr('style', 'color: blue;background-color:#fff;');
|
|||
|
|
});
|
|||
|
|
$("#handEitd").click(function(){
|
|||
|
|
rhButtonV=1;
|
|||
|
|
updateSet(rhButtonV);
|
|||
|
|
});
|
|||
|
|
$("#remoteEitd").click(function(){
|
|||
|
|
rhButtonV=2;
|
|||
|
|
updateSet(rhButtonV);
|
|||
|
|
});
|
|||
|
|
|
|||
|
|
});
|
|||
|
|
});
|
|||
|
|
|
|||
|
|
function getHighAndLowTemperature(type){
|
|||
|
|
//获取遥控温度
|
|||
|
|
$.ajax({
|
|||
|
|
type: 'POST',
|
|||
|
|
url: dataUrl + 'conditioning/getHighAndLowTemperature',
|
|||
|
|
data: {type:type},
|
|||
|
|
async:true,
|
|||
|
|
dataType: 'json',
|
|||
|
|
success: function (res) {
|
|||
|
|
console.log(res);
|
|||
|
|
var data=res.obj;
|
|||
|
|
for (var i=0;i<data.length;i++){
|
|||
|
|
if(type=="handControl"){
|
|||
|
|
if(i==0){
|
|||
|
|
$("#handSummer").html(data[i].k);
|
|||
|
|
}else{
|
|||
|
|
$("#handWinter").html(data[i].k);
|
|||
|
|
}
|
|||
|
|
}else if(type=="remoteControl"){
|
|||
|
|
if(i == 0){
|
|||
|
|
$("#remoteSummer").html(data[i].k);
|
|||
|
|
}else{
|
|||
|
|
$("#remoteWinter").html(data[i].k);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
function updateSet(updateSetType){
|
|||
|
|
var title="";
|
|||
|
|
if(updateSetType==2){
|
|||
|
|
title="遥控控制温度调整";
|
|||
|
|
$("#winterMin").val($("#remoteSummer").text())
|
|||
|
|
$("#summerMax").val($("#remoteWinter").text())
|
|||
|
|
}else{
|
|||
|
|
title="手动控制温度调整";
|
|||
|
|
$("#winterMin").val($("#handSummer").text())
|
|||
|
|
$("#summerMax").val($("#handWinter").text())
|
|||
|
|
}
|
|||
|
|
layer.open({
|
|||
|
|
// 基本层类型:0(信息框,默认)1(页面层)2(iframe层,也就是解析content)3(加载层)4(tips层)
|
|||
|
|
type: 1,
|
|||
|
|
title: title,
|
|||
|
|
// 当type: 2时就是url
|
|||
|
|
content:$("#updateSetDiv"),
|
|||
|
|
// 宽高:如果是100%就是满屏
|
|||
|
|
area: ['583px', '300px'],
|
|||
|
|
// 坐标:auto(默认坐标,即垂直水平居中),具体当文档:https://www.layui.com/doc/modules/layer.html#offset
|
|||
|
|
offset: 'auto',
|
|||
|
|
// 按钮:按钮1的回调是yes(也可以是btn1),而从按钮2开始,则回调为btn2: function(){},以此类推
|
|||
|
|
btn: ['确定', '取消'],
|
|||
|
|
// 关闭按钮:layer提供了两种风格的关闭按钮,可通过配置1和2来展示,如果不显示,则0
|
|||
|
|
closeBtn: 1,
|
|||
|
|
// 遮罩:默认:0.3透明度的黑色背景('#000')
|
|||
|
|
shade: 0.3,
|
|||
|
|
// 是否点击遮罩关闭:默认:false
|
|||
|
|
shadeClose: false,
|
|||
|
|
// 自动关闭所需毫秒:默认:0不会自动关闭
|
|||
|
|
time: 0,
|
|||
|
|
// 最大最小化:默认:false
|
|||
|
|
maxmin: false,
|
|||
|
|
// 固定:默认:true
|
|||
|
|
fixed: true,
|
|||
|
|
// 是否允许拉伸:默认:true
|
|||
|
|
resize: true,
|
|||
|
|
// 层叠顺序:默认:19891014,一般用于解决和其它组件的层叠冲突
|
|||
|
|
zIndex: 19891014,
|
|||
|
|
// 层弹出后的成功回调方法:layero前层DOM,index当前层索引
|
|||
|
|
success: function(layero, index){
|
|||
|
|
},
|
|||
|
|
// 第一个按钮事件,也可以叫btn1
|
|||
|
|
yes: function (index, layero) {
|
|||
|
|
var winterMin=$("#winterMin").val();
|
|||
|
|
var summerMax=$("#summerMax").val();
|
|||
|
|
if(""==winterMin||""==summerMax){
|
|||
|
|
layer.msg("请设定温度!");
|
|||
|
|
return;
|
|||
|
|
}
|
|||
|
|
updateSetValue(winterMin,summerMax,updateSetType);
|
|||
|
|
layer.close(index);
|
|||
|
|
},
|
|||
|
|
btn2: function (index, layero) {
|
|||
|
|
layer.close(index);
|
|||
|
|
},
|
|||
|
|
// 右上角关闭按钮触发的回调:默认会自动触发关闭。如果不想关闭,return false即可
|
|||
|
|
cancel: function(index, layero){
|
|||
|
|
// if(layer.confirm('确定要关闭么')){ //只有当点击confirm框的确定时,该层才会关闭
|
|||
|
|
// layer.close(index);
|
|||
|
|
// }
|
|||
|
|
layer.close(index);
|
|||
|
|
return false;
|
|||
|
|
},
|
|||
|
|
// 层销毁后触发的回调:无论是确认还是取消,只要层被销毁了,end都会执行,不携带任何参数。
|
|||
|
|
end: function(){
|
|||
|
|
},
|
|||
|
|
// 最大化后触发的回调:携带一个参数,即当前层DOM
|
|||
|
|
full: function(layero){
|
|||
|
|
},
|
|||
|
|
// 最小化后触发的回调:携带一个参数,即当前层DOM
|
|||
|
|
min: function(layero){
|
|||
|
|
},
|
|||
|
|
// 还原后触发的回调:携带一个参数,即当前层DOM
|
|||
|
|
restore: function(layero){
|
|||
|
|
},
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
/**
|
|||
|
|
* @param {Object} winterMin 制冷模式:小于温度
|
|||
|
|
* @param {Object} summerMax 制热模式:高于温度
|
|||
|
|
* @param {Object} model 模式 1:遥控 0:手动
|
|||
|
|
*/
|
|||
|
|
function updateSetValue(winterT,summerT,model){
|
|||
|
|
$.ajax({
|
|||
|
|
type: 'POST',
|
|||
|
|
url: dataUrl + 'conditioning/setTemperature',
|
|||
|
|
data: {
|
|||
|
|
"controlModel": model,"summerTemperature":winterT,"winterTemperature":summerT
|
|||
|
|
},
|
|||
|
|
dataType: 'json',
|
|||
|
|
success: function (res) {
|
|||
|
|
initSet();
|
|||
|
|
}
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
function setModel(model){
|
|||
|
|
var selData =[];
|
|||
|
|
console.log("model",model);
|
|||
|
|
if(model==2){
|
|||
|
|
$("#handType").attr('style', 'color: blue;background-color:#fff;');
|
|||
|
|
$("#remoteType").attr('style', 'color: #000;background-color:#fff;');
|
|||
|
|
rhButtonV=model;
|
|||
|
|
selData=table.checkStatus('remoteTable').data;
|
|||
|
|
console.log("selData",selData);
|
|||
|
|
}else{
|
|||
|
|
rhButtonV=model;
|
|||
|
|
$("#handType").attr('style', 'color: #000;background-color:#fff;');
|
|||
|
|
$("#remoteType").attr('style', 'color: blue;background-color:#fff;');
|
|||
|
|
selData=table2.checkStatus('handTable').data;
|
|||
|
|
console.log("selData",selData);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
if(selData==undefined||selData.length==0){
|
|||
|
|
layer.msg("请选择设备!");
|
|||
|
|
return;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
layer.confirm('您确定要执行此操作吗?', {
|
|||
|
|
title: '操作确认',
|
|||
|
|
icon: 3, // 问号图标
|
|||
|
|
btn: ['确定', '取消'] // 按钮
|
|||
|
|
}, function(index){
|
|||
|
|
// 用户点击确定后的回调
|
|||
|
|
updateModel(selData,rhButtonV);
|
|||
|
|
layer.close(index); // 关闭当前弹窗
|
|||
|
|
// 执行确认操作...
|
|||
|
|
}, function(index){
|
|||
|
|
// 用户点击取消后的回调
|
|||
|
|
layer.close(index); // 关闭当前弹窗
|
|||
|
|
// 执行取消操作...
|
|||
|
|
});
|
|||
|
|
// layer.open({
|
|||
|
|
// // 基本层类型:0(信息框,默认)1(页面层)2(iframe层,也就是解析content)3(加载层)4(tips层)
|
|||
|
|
// type: 1,
|
|||
|
|
// title: "更换控制模式",
|
|||
|
|
// // 当type: 2时就是url
|
|||
|
|
// content:$("#showDiv"),
|
|||
|
|
// // 宽高:如果是100%就是满屏
|
|||
|
|
// area: ['483px', '300px'],
|
|||
|
|
// // 坐标:auto(默认坐标,即垂直水平居中),具体当文档:https://www.layui.com/doc/modules/layer.html#offset
|
|||
|
|
// offset: 'auto',
|
|||
|
|
// // 按钮:按钮1的回调是yes(也可以是btn1),而从按钮2开始,则回调为btn2: function(){},以此类推
|
|||
|
|
// btn: ['确定', '取消'],
|
|||
|
|
// // 关闭按钮:layer提供了两种风格的关闭按钮,可通过配置1和2来展示,如果不显示,则0
|
|||
|
|
// closeBtn: 1,
|
|||
|
|
// // 遮罩:默认:0.3透明度的黑色背景('#000')
|
|||
|
|
// shade: 0.3,
|
|||
|
|
// // 是否点击遮罩关闭:默认:false
|
|||
|
|
// shadeClose: false,
|
|||
|
|
// // 自动关闭所需毫秒:默认:0不会自动关闭
|
|||
|
|
// time: 0,
|
|||
|
|
// // 最大最小化:默认:false
|
|||
|
|
// maxmin: false,
|
|||
|
|
// // 固定:默认:true
|
|||
|
|
// fixed: true,
|
|||
|
|
// // 是否允许拉伸:默认:true
|
|||
|
|
// resize: true,
|
|||
|
|
// // 层叠顺序:默认:19891014,一般用于解决和其它组件的层叠冲突
|
|||
|
|
// zIndex: 19891014,
|
|||
|
|
// // 层弹出后的成功回调方法:layero前层DOM,index当前层索引
|
|||
|
|
// success: function(layero, index){
|
|||
|
|
// },
|
|||
|
|
// // 第一个按钮事件,也可以叫btn1
|
|||
|
|
// yes: function (index, layero) {
|
|||
|
|
// updateModel(selData,rhButtonV);
|
|||
|
|
// layer.close(index);
|
|||
|
|
// },
|
|||
|
|
// btn2: function (index, layero) {
|
|||
|
|
// layer.close(index);
|
|||
|
|
// },
|
|||
|
|
// // 右上角关闭按钮触发的回调:默认会自动触发关闭。如果不想关闭,return false即可
|
|||
|
|
// cancel: function(index, layero){
|
|||
|
|
// // if(layer.confirm('确定要关闭么')){ //只有当点击confirm框的确定时,该层才会关闭
|
|||
|
|
// // layer.close(index);
|
|||
|
|
// // }
|
|||
|
|
// layer.close(index);
|
|||
|
|
// return false;
|
|||
|
|
// },
|
|||
|
|
// // 层销毁后触发的回调:无论是确认还是取消,只要层被销毁了,end都会执行,不携带任何参数。
|
|||
|
|
// end: function(){
|
|||
|
|
// },
|
|||
|
|
// // 最大化后触发的回调:携带一个参数,即当前层DOM
|
|||
|
|
// full: function(layero){
|
|||
|
|
// },
|
|||
|
|
// // 最小化后触发的回调:携带一个参数,即当前层DOM
|
|||
|
|
// min: function(layero){
|
|||
|
|
// },
|
|||
|
|
// // 还原后触发的回调:携带一个参数,即当前层DOM
|
|||
|
|
// restore: function(layero){
|
|||
|
|
// },
|
|||
|
|
// });
|
|||
|
|
}
|
|||
|
|
/**
|
|||
|
|
* @param {Object} selData 改变模式的空调
|
|||
|
|
* @param {Object} model 模式 1:遥控 0:手动
|
|||
|
|
*/
|
|||
|
|
function updateModel(selData,model){
|
|||
|
|
var airCodes=[];
|
|||
|
|
$.each(selData,function(index,element){
|
|||
|
|
airCodes.push(element.code)
|
|||
|
|
});
|
|||
|
|
console.log("airCodes",airCodes);
|
|||
|
|
model = model == 2 ? 1 : 2;
|
|||
|
|
console.log("model",model);
|
|||
|
|
let summerTemperature;
|
|||
|
|
let winterTemperature;
|
|||
|
|
if(model == 2){
|
|||
|
|
summerTemperature = $("#remoteSummer").text();
|
|||
|
|
winterTemperature = $("#remoteWinter").text();
|
|||
|
|
}else{
|
|||
|
|
summerTemperature = $("#handSummer").text();
|
|||
|
|
winterTemperature = $("#handWinter").text();
|
|||
|
|
}
|
|||
|
|
console.log("summerTemperature",summerTemperature);
|
|||
|
|
console.log("winterTemperature",winterTemperature);
|
|||
|
|
$.ajax({
|
|||
|
|
type: 'POST',
|
|||
|
|
url: dataUrl + 'conditioning/setControl',
|
|||
|
|
headers: {
|
|||
|
|
'Content-Type': 'application/json'
|
|||
|
|
},
|
|||
|
|
data: JSON.stringify({
|
|||
|
|
codes: airCodes,
|
|||
|
|
controlModel: model,
|
|||
|
|
summerTemperature:summerTemperature,
|
|||
|
|
winterTemperature:winterTemperature
|
|||
|
|
}),
|
|||
|
|
dataType: 'json',
|
|||
|
|
success: function (res) {
|
|||
|
|
//重新渲染表格
|
|||
|
|
//初始化遥控表格数据
|
|||
|
|
initRemoteTable(2);
|
|||
|
|
//初始化手动表格数据
|
|||
|
|
initHandTable(1);
|
|||
|
|
}
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
function initSet(){
|
|||
|
|
/**
|
|||
|
|
* 初始遥控设置温度
|
|||
|
|
*/
|
|||
|
|
// $.ajax({
|
|||
|
|
// type: 'POST',
|
|||
|
|
// url: dataUrl + 'conditioning/floorElectricityStatistics',
|
|||
|
|
// async:true,
|
|||
|
|
// dataType: 'json',
|
|||
|
|
// success: function (res) {
|
|||
|
|
// $("#remoteSummer").html("");//遥控制冷温度
|
|||
|
|
// $("#remoteWinter").html("");//遥控制热温度
|
|||
|
|
// $("#handSummer").html("");//手动制冷温度
|
|||
|
|
// $("#handWinter").html("");//手动制热温度
|
|||
|
|
// }
|
|||
|
|
// });
|
|||
|
|
getHighAndLowTemperature("handControl");
|
|||
|
|
getHighAndLowTemperature("remoteControl");
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
function initRemoteTable(model) {
|
|||
|
|
table2.render({
|
|||
|
|
elem: '#remoteTable'
|
|||
|
|
,url: dataUrl + "conditioning/getAirList" //数据接口
|
|||
|
|
, method: 'post' //方式默认是get
|
|||
|
|
, where: {
|
|||
|
|
controlModel: 2,
|
|||
|
|
} //post请求必须加where ,post请求需要的参数
|
|||
|
|
, cellMinWidth: 80
|
|||
|
|
, cols: [[ //表头
|
|||
|
|
{type: 'checkbox',align:'center'},
|
|||
|
|
{field: 'code',align: 'center', title: '空调ID'}
|
|||
|
|
, {field: 'deviceStatus',align: 'center', title: '状态',templet:function (d){
|
|||
|
|
if(d.status==1){
|
|||
|
|
return "<font style='color:green'>开启</font>";
|
|||
|
|
}else{
|
|||
|
|
return "<font style='color:red'>关闭</font>";
|
|||
|
|
}
|
|||
|
|
}}
|
|||
|
|
, {field: 'floor',align: 'center', title: '楼层'}
|
|||
|
|
,{field: 'airName', align: 'center',title: '房间'}
|
|||
|
|
, {field: 'type', align: 'center', title: '设备类型'}
|
|||
|
|
]]
|
|||
|
|
, id: 'remoteTable'
|
|||
|
|
, page: true //开启分页
|
|||
|
|
, loading: true //数据加载中。。。
|
|||
|
|
, limits: [10, 20, 50] //一页选择显示3,5或10条数据
|
|||
|
|
, limit: 10 //一页显示10条数据
|
|||
|
|
, response: {
|
|||
|
|
statusCode: 200 //规定成功的状态码,默认:0
|
|||
|
|
},
|
|||
|
|
parseData: function (res) { //将原始数据解析成 table 组件所规定的数据,res为从url中get到的数据
|
|||
|
|
//console.log("ress=="+JSON.stringify(res))
|
|||
|
|
let result;
|
|||
|
|
if (res.data !== '' && res.data != null && res.data !== "null") {
|
|||
|
|
if (this.page.curr) {
|
|||
|
|
result = res.data.slice(this.limit * (this.page.curr - 1), this.limit * this.page.curr);
|
|||
|
|
} else {
|
|||
|
|
result = res.data.slice(0, this.limit);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
return {
|
|||
|
|
"code": res.code, //解析接口状态
|
|||
|
|
"msg": res.msg, //解析提示文本
|
|||
|
|
"count": res.count, //解析数据长度
|
|||
|
|
"data": result, //解析数据列表
|
|||
|
|
};
|
|||
|
|
},
|
|||
|
|
toolbar: "#toolbar",
|
|||
|
|
done: function(res, curr, count){
|
|||
|
|
console.log("done=="+JSON.stringify(res))
|
|||
|
|
var checkStatus = table2.checkStatus('remoteTable'); // 获取表格的选中状态
|
|||
|
|
console.log("checkStatus",checkStatus); // 打印选中的数据
|
|||
|
|
}
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
function initHandTable(model) {
|
|||
|
|
table.render({
|
|||
|
|
elem: '#handTable'
|
|||
|
|
,url: dataUrl + "conditioning/getAirList" //数据接口
|
|||
|
|
, method: 'post' //方式默认是get
|
|||
|
|
, where: {
|
|||
|
|
controlModel: 1,
|
|||
|
|
} //post请求必须加where ,post请求需要的参数
|
|||
|
|
, cellMinWidth: 80
|
|||
|
|
, cols: [[ //表头
|
|||
|
|
{type: 'checkbox',align:'center'},
|
|||
|
|
{field: 'code',align: 'center', title: '空调ID'}
|
|||
|
|
, {field: 'deviceStatus',align: 'center', title: '状态',templet:function (d){
|
|||
|
|
if(d.status==1){
|
|||
|
|
return "<font style='color:green'>开启</font>";
|
|||
|
|
}else{
|
|||
|
|
return "<font style='color:red'>关闭</font>";
|
|||
|
|
}
|
|||
|
|
}}
|
|||
|
|
, {field: 'floor',align: 'center', title: '楼层'}
|
|||
|
|
,{field: 'airName', align: 'center',title: '房间'}
|
|||
|
|
, {field: 'type', align: 'center', title: '设备类型'}
|
|||
|
|
]]
|
|||
|
|
, id: 'handTable'
|
|||
|
|
, page: true //开启分页
|
|||
|
|
, loading: true //数据加载中。。。
|
|||
|
|
, limits: [50, 100, 200] //一页选择显示3,5或10条数据
|
|||
|
|
, limit: 10 //一页显示10条数据
|
|||
|
|
, response: {
|
|||
|
|
statusCode: 200 //规定成功的状态码,默认:0
|
|||
|
|
}, parseData: function (res) { //将原始数据解析成 table 组件所规定的数据,res为从url中get到的数据
|
|||
|
|
let result;
|
|||
|
|
if (res.data !== '' && res.data != null && res.data !== "null") {
|
|||
|
|
if (this.page.curr) {
|
|||
|
|
result = res.data.slice(this.limit * (this.page.curr - 1), this.limit * this.page.curr);
|
|||
|
|
} else {
|
|||
|
|
result = res.data.slice(0, this.limit);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
return {
|
|||
|
|
"code": res.code, //解析接口状态
|
|||
|
|
"msg": res.msg, //解析提示文本
|
|||
|
|
"count": res.count, //解析数据长度
|
|||
|
|
"data": result, //解析数据列表
|
|||
|
|
};
|
|||
|
|
},
|
|||
|
|
toolbar: "#toolbar",
|
|||
|
|
done: function(res, curr, count){
|
|||
|
|
console.log("done=="+JSON.stringify(res))
|
|||
|
|
var checkStatus = table.checkStatus('handTable'); // 获取表格的选中状态
|
|||
|
|
console.log("checkStatus",checkStatus); // 打印选中的数据
|
|||
|
|
}
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
function dataTbale(data,model){
|
|||
|
|
var tablefiler="";
|
|||
|
|
if(model==1){
|
|||
|
|
tablefiler="remote";
|
|||
|
|
}else if(model==0){
|
|||
|
|
tablefiler="hand";
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
}
|