jyyhq/witDisplay/js/airConditioner/airConditionerSet.js

460 lines
14 KiB
JavaScript
Raw Permalink Normal View History

2025-07-03 09:32:49 +08:00
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页面层2iframe层也就是解析content3加载层4tips层
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前层DOMindex当前层索引
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页面层2iframe层也就是解析content3加载层4tips层
// 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前层DOMindex当前层索引
// 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";
}
}