var layer;
var form;
var deviceList;// 当前仓库的所有设备列表
var depotId;
var deviceType;// 被选中的设备类型
var viewTargetStatus;// 目标状态,根据设备类型和当前值调用动效
var domSelectDevice;// 被选中的设备dom对象
$(function () {
    layui.use(['layer', 'form'], function () {
        form = layui.form;
        layer = layui.layer;
        form.render();
        // 监听仓库选择
        form.on('select(select_depotId)', function (obj) {
            return onDepotChange(obj);
        });
        //初始化刷新数据
        initData();
    });
    // 添加切换动作
    $(".js-tf-btn").click(
        function () {
            $(this).addClass("active").siblings(".js-tf-btn").removeClass(
                "active");
        });
    $(".js-xg115-arrow").click(function () {
        $(this).siblings(".xg115-btnhide").toggle()
        $(this).toggleClass("active");
    });
    // 初始化ws
    initWS(deptId, bizType, null, userId);
});
//socket信息返回處理
function socketOnMessage(pocket) {
    window.parent.sysNotify(pocket.data);
    if (pocket.orderResp == "MSG_SUCCESS") {
        addLog(pocket.data);
        //刷新信息
        query(false, true, false);
    } else if (pocket.orderResp == "ORDER_INPROGRESS")
        addLog(pocket.data);
    else {
        addRedLog(pocket.data);
    }
};
function initData() {
    if (depotId) {
        $("#depotId").val(depotId);
        query(true, true, true);
        form.render();
    }
}
/**
 * 检测仓库类型是否发生改变,如果发生改变,重新切换页面
 */
function onDepotChange(obj) {
    var depotType = obj.elem[obj.elem.selectedIndex].getAttribute('type');
    if (depotType == DEPOT_TYPE) {
        query(true, true, true);
    } else {
        changeView(depotType);
    }
}
function changeView(depotType) {
    //类型改变,自动切换页面
    if (socket) {
        socket.close();
    }
    depotId = $("#depotId").val();
    window.location.href = "./gateway?depotId=" + depotId + "&depotType=" + depotType;
    return true;
}
/** 视频查看直接跳转到视频概览页面**/
function showVideo() {
    window.parent.openTab("./basic/security/aerial-video?t=1", "视频鸟瞰", "aerial-video");
};
function closeAll() {
    layer.msg("终端不支持当前功能……");
};
// 状态查询
function queryStatus() {
    depotId = $("#depotId").val();
    if (!depotId) {
        layer.msg("请先选择仓库!");
        return;
    }
    //把当前页面的设备传递到后台
    var data = {
        depotId: depotId,
        deptId: deptId,
        deviceList: []
    };
    var tips = $(".device");
    $.each(tips, function (index, item) {
        data.deviceList.push({
            id: item.id,
            depotId: item.getAttribute("depotid"),
            passCode: item.getAttribute("passcode"),
            name: item.getAttribute("name"),
            serId: item.getAttribute("serid"),
            link: item.getAttribute("link"),
            type: item.getAttribute("type"),
            companyId: companyId
        });
    });
    $.ajax({
        type: "POST",
        url: "../../basic/n2/query-status",
        dataType: "json",
        contentType: "application/json;charset=UTF-8",
        data: JSON.stringify(data),
        success: function (result) {
            if ("ORDER_SUCCESS" != result.code) {
                layer.msg(result.msg);
            }
        },
        error: function (result) {
            layer.msg("获取数据失败,请重新尝试!");
        }
    });
};
/**
 * @param isNew 是否新库跟新仓库信息并执行状态刷新
 * @param isCut 是否切换页面
 * @param isQueryStatus 是否更新状态
 */
function query(isNew, isCut, isQueryStatus) {
    depotId = $("#depotId").val();
    if (!depotId) {
        layer.msg("请先选择仓库!");
        return;
    }
    $.ajax({
        type: "POST",
        url: "../../basic/n2/list-device-manual",
        dataType: "json",
        contentType: "application/json;charset=UTF-8",
        data: JSON.stringify({
            depotId: depotId
        }),
        success: function (result) {
            if (result.code != "0000") {
                layer.msg(result.msg);
                deviceList = null;
                if(isCut){
                    toCutExe(viewAB,true);
                }
                return;
            }
            deviceList = result.data;
            if (isNew) {
                updateGrainInfo();
            }
            if(isCut){
                toCutExe(viewAB,true);
            }
            if (isQueryStatus) {
                queryStatus();
            }
        },
        error: function (result) {
            layer.msg("获取数据失败,请重新尝试!");
        }
    });
};
// 获取当前仓库的最新粮情数据信息
function updateGrainInfo() {
    $.ajax({
        type: "POST",
        url: "../../basic/common/grain-data",
        dataType: "json",
        contentType: "application/json;charset=UTF-8",
        data: JSON.stringify({
            depotId: depotId
        }),
        success: function (result) {
            if (result.code != "0000") {
                layer.msg(result.msg);
                return;
            }
            var grainData = result.data;
            // 更新信息
            $("#tempIn").text(grainData.tempIn);
            $("#humidityIn").text(grainData.humidityIn);
            $("#tempAve").text((grainData.tempAve).toFixed(1));
            $("#tempOut").text(grainData.tempOut);
            $("#updateTime").text(grainData.receiveDate);
        },
        error: function (result) {
            layer.msg("当前仓库的粮情数据信息获取失败!");
        }
    });
};
/**
 * 切换效果
 * @param target 正反面
 * @param isCutImg 是否执行切图
 */
function toCutExe(target, isCutImg) {
    // 获取当前仓库效果图
    viewAB = target;
    if (isCutImg) {
        cutImg(depotId, viewAB);
    }
    // 根据设备列表添加原型信息
    addDevice(deviceList, viewAB);
};
// 手动执行,同时更新状态
function toCut(target) {
    toCutExe(target, true);
};
// 添加操作日志
function addLog(htmlStr) {
    var info = $("#areationInfo").html();
    $("#areationInfo").html(htmlStr + "" + info);
};
function addRedLog(htmlStr) {
    var info = $("#areationInfo").html();
    $("#areationInfo").html(
        "" + htmlStr + "" + info);
};
/**
 * 弹出操作框
 */
function showControl(id) {
    domSelectDevice = $("#" + id);
    var curDepotId = domSelectDevice.attr("depotid");
    // 如果点击的设备不是选择仓库的,不执行
    if (curDepotId != depotId) {
        addRedLog("当前所选设备:" + domSelectDevice.attr("name") + "【非所选仓库】");
        return;
    } else {
        addLog("当前所选设备:" + domSelectDevice.attr("name"));
    }
    // 更新所选择的设备类型
    deviceType = domSelectDevice.attr("type");
    if (1 == deviceType)
        deviceType = "01";
    if (2 == deviceType)
        deviceType = "02";
    if (3 == deviceType)
        deviceType = "03";
    if (4 == deviceType)
        deviceType = "04";
    if (5 == deviceType)
        deviceType = "05";
    if (6 == deviceType)
        deviceType = "06";
    if (7 == deviceType)
        deviceType = "07";
    if (8 == deviceType)
        deviceType = "08";
    if (9 == deviceType)
        deviceType = "09";
    //气调只操作 - 加压风机、环流风机、阀门
    if (DeviceType.TYPE_01 == deviceType || DeviceType.TYPE_02 == deviceType || DeviceType.TYPE_0B == deviceType|| DeviceType.TYPE_0C == deviceType) {
        layer.alert("通风设备请到通风管理执行……");
        return false;
    }
    if (DeviceType.TYPE_03 == deviceType) {
        layer.alert("离心风机不支持远程操作,请到现场执行控制……");
        return false;
    }
    // 根据设备类型弹出不一样的弹出框
    if (DeviceType.TYPE_04 == deviceType) {// 环流风机
        layer.open({
            type: 1,
            title: '设备操作-' + domSelectDevice.attr("name"),
            area: ['450px', '200px'],
            shade: 0,
            content: $('#control-HL2'),
            btn: 0,
            closeBtn: 2
        });
    } else {
        layer.open({
            type: 1,
            title: '设备操作-' + domSelectDevice.attr("name"),
            area: ['450px', '200px'],
            shade: 0,
            content: $('#control-KG'),
            btn: 0,
            closeBtn: 2
        });
    }
};
// 根据操作目标状态和选择的设备进行执行-目标状态
function toExecute(targetStatus) {
    var batchTag = false;
    if ("OPEN_ALL" == targetStatus) {
        batchTag = true;
        targetStatus = DeviceStatus.OPEN;
    }
    if ("CLOSE_ALL" == targetStatus) {
        batchTag = true;
        targetStatus = DeviceStatus.CLOSE;
    }
    viewTargetStatus = targetStatus;
    var data = {
        depotId: depotId,
        deptId: deptId,
        deviceList: []
    }
    // 批量设备操作,只处理相同的设备类型
    if (batchTag) {
        // 获取设备信息
        var tips = $(".device");
        $.each(tips,
            function (index, item) {
                if (deviceType == item.getAttribute("type")
                    && depotId == item.getAttribute("depotid")) {
                    // 风机类设备支持批量时候,跳过风机开的设备
                    if (DeviceStatus.F_OPEN == item.getAttribute("status")
                        || DeviceStatus.F_OPEN_F == item
                            .getAttribute("status")) {
                        addLog("设备:"
                            + item.getAttribute("name")
                            + "分机运行中,风口不执行关闭");
                        return true;
                    }
                    data.deviceList.push({
                        id: item.id,
                        depotId: item.getAttribute("depotid"),
                        passCode: item.getAttribute("passcode"),
                        name: item.getAttribute("name"),
                        serId: item.getAttribute("serid"),
                        link: item.getAttribute("link"),
                        type: item.getAttribute("type"),
                        targetStatus: targetStatus
                    });
                }
            });
    } else {
        data.deviceList.push({
            id: domSelectDevice.id,
            depotId: domSelectDevice.attr("depotid"),
            passCode: domSelectDevice.attr("passcode"),
            name: domSelectDevice.attr("name"),
            serId: domSelectDevice.attr("serid"),
            link: domSelectDevice.attr("link"),
            type: domSelectDevice.attr("type"),
            targetStatus: targetStatus
        });
    }
    // console.log("toExecute--deviceList="+JSON.stringify(data));
    // 开始调用后台执行
    layer.load(1);
    $.ajax({
        type: 'POST',
        url: "../../basic/verb/control-device",
        dataType: 'JSON',
        contentType: "application/json;charset=UTF-8",
        data: JSON.stringify(data),
        success: function (result) {
            layer.closeAll();
            if (result.code != "ORDER_SUCCESS") {
                layer.msg("执行失败:" + result.msg);
            } else {
                layer.msg("操作指令发送成功,待终端响应……");
                // 开始调用动画 TODO
                updateAnimate(deviceType, targetStatus, false);
            }
        },
        error: function (result) {
            layer.closeAll();
            layer.msg("操作发生异常,暂时无法解决!!");
        }
    });
};