var pageNo = 1;
var totalPages = 0;

//设备列表
getListDataAjax();

//获取设备列表 ajax请求
function getListDataAjax(queryParam = {}, pageNo = 1) {

    queryParam.pageNo = pageNo;
    // queryParam.pageSize = 4;

    ajaxRequest(DEVICE_LIST_SEARCH, "POST", queryParam, function(result) {
        let data = result.pageList;
        let items = '';
        if (result.totalCount > 0) {
            data.forEach(function(item, key) {
                let transmissionModel = "";
                if (item.transmission_model == 1) {
                    transmissionModel = "NB-IOT"
                } else if (item.transmission_model == 2) {
                    transmissionModel = "Lora-IOT"
                } else {
                    transmissionModel = "2G/4G/5G"
                }
                items += "<tr>" +
                    "<td class='status' data-user='" + JSON.stringify(item) + "' data-ownercode=" + item.ownerCode + "></td>" +
                    "<td>" + item.ownerCode + "</td>" +
                    "<td>" + item.ownerName + "</td>" +
                    "<td>" + item.dwtype + "</td>" +
                    "<td>" + item.installMan + "</td>" +
                    "<td>" + getFormatDate(item.installTime) + "</td>" +
                    "</tr>"
            })
        }
        $('#dataList').html(items);
        totalPages = result.totalPages;
        $('#totalPage').html(totalPages); //总共多少页
        $('#dataTotal').html(result.totalCount); //总共多少条数据
        $('#currentPage').val(pageNo); //当前页面
        let pageFrom = (pageNo - 1) * result.pageSize + 1; //开始
        let pageTo = result.pageNo * result.pageSize; //结束

        pageTo = pageTo > result.totalCount ? result.totalCount : pageTo;

        $('#pageFrom').html(pageFrom);
        $('#pageTo').html(pageTo);

        // 无数据时
        if (!data.length) {
            $('.pager.has-data').hide()
            $('.pager.no-data').show()
        } else {
            $('.pager.has-data').show()
            $('.pager.no-data').hide()
        }

        if (pageNo < totalPages) {
            $('#nextPageButton,#lastPageButton').removeClass('disabled');
        } else {
            $('#nextPageButton,#lastPageButton').addClass('disabled');
        }
        if (pageNo === 1) {
            $('#firstPageButton,#prevPageButton').addClass('disabled');
        } else {
            $('#firstPageButton,#prevPageButton').removeClass('disabled');
        }
    }, function(errorMsg) {
        alert("请求数据失败!");
    })
}

//按钮搜索
$('#buttonClick').on('click', function() {
    pageNo = 1;
    getListDataAjax(getSearchParamObj());
})

//拼接搜索条件
function getSearchParamObj() {
    let queryParam = {};
    let ownerName = $('#ownerName').val();
    let startTime = $('#startTime').val()
    let endTime = $('#endTime').val()
    queryParam.ownerName = ownerName;
    queryParam.startTime = startTime;
    queryParam.endTime = endTime;
    return queryParam;
}

//重置表单
$('.reset').click(resetForm)

//重置表单
function resetForm() {
    pageNo = 1;
    $("#ownerName").val("");
    $("#startTime").val("");
    $("#endTime").val("");
    getListDataAjax(getSearchParamObj());
}

//分页操作
$('#firstPageButton').on('click', function() {
    pageNo = 1;
    getListDataAjax(getSearchParamObj(), 1);
})

$('#lastPageButton').on('click', function() {
    pageNo = totalPages;
    getListDataAjax(getSearchParamObj(), pageNo);
})

$('#prevPageButton').on('click', function() {
    pageNo -= 1;
    getListDataAjax(getSearchParamObj(), pageNo);
})

$('#nextPageButton').on('click', function() {
    pageNo += 1;
    getListDataAjax(getSearchParamObj(), pageNo);
})


//单位下拉
getCompanyList()

function getCompanyList() {
    ajaxRequest(COMPANY_LIST, "POST", {}, function(result) {
        let data = result.data;
        let items = '';
        data.forEach(function(item, key) {
            items += `<option value="${item.ownerId}">${item.ownerName}</option>`
        })
        $('#getCompanyList').append(items);
        $('#getCompanyList2').append(items);
    }, function(errorMsg) {
        alert("请求数据失败!");
    })
}

//类型下拉
getTypeList()

function getTypeList() {
    ajaxRequest(TYPE_LIST, "POST", {}, function(result) {
        let data = result.RESULT.pageList;
        let items = '';
        data.forEach(function(item, key) {
            items += `<option value="${item.id}">${item.type_name}</option>`
        })
        $('#getTypeList').append(items);
        $('#getTypeList2').append(items);

    }, function(errorMsg) {
        alert("请求数据失败!");
    })
}

//建筑下拉
getBuildingList()

function getBuildingList() {
    ajaxRequest(BUILD_TREE_LIST, "POST", {}, function(result) {
        let data = result.data;
        let items = '';
        data.forEach(function(item, key) {
            items += `<option value="${item.id}">${item.buildName}</option>`
        })
        $('#getBuildingList').append(items);
        $('#getBuildingList2').append(items);
    }, function(errorMsg) {
        alert("请求数据失败!");
    })
}

// 建筑与楼层
linkFloor('#getBuildingList')
linkFloor('#getBuildingList2')

function linkFloor(element) {
    $(element).on('change', function() {

        //获取公司id
        let buildId = $(this).find('option:selected').val();
        ajaxRequest(BUILD_TREE_LIST, "POST", { "buildId": buildId }, function(result) {
            let floorItems = '<option value="">请选择</option>';
            let buildObj = result.data;
            if (buildObj) {
                buildObj.forEach(function(item, key) {
                    floorItems += `<option value="${item.floorId}">${item.floorName}</option>`
                })
                $('#getFloorList').html(floorItems);
                $('#getFloorList2').html(floorItems);
            } else {
                $('#getFloorList').html(floorItems);
                $('#getFloorList2').html(floorItems);
            }
        }, function(errorMsg) {
            alert("请求数据失败!");
        })
    })
}

// 楼层与房间联动
linkRoom('#getFloorList')
linkRoom('#getFloorList2')

function linkRoom(element) {
    $(element).on('change', function() {
        //获取楼层id
        let floorName = $(this).find('option:selected').val();
        ajaxRequest(BUILD_TREE_LIST, "POST", { "floorId": floorName }, function(result) {

            let roomItems = '<option value="">请选择</option>';
            let floorObj = result.data;
            floorObj.forEach(function(item, key) {
                roomItems += `<option value="${item.roomId}">${item.roomName}</option>`
            })
            $('#getRoomList').html(roomItems);

        }, function(errorMsg) {
            alert("请求数据失败!");
        })
    })
}

/*新增 修改 关闭 弹框*/
var layer = layui.layer;
var layerCreateIndex = '';
var layerUpdateIndex = ''
layui.use('layer', function() {

    //新增弹框
    $('.add').click(function() {
            layerCreateIndex = layer.open({
                type: 1,
                title: false,
                closeBtn: 0,
                shadeClose: true,
                skin: 'yourclass',
                area: ['1000px', '400px'],
                content: $(".addDeviceListOut"),
                success: function() {
                    $('.clsBtn,.cancel').click(function() {
                        layer.close(layerCreateIndex);
                    })
                }
            })
        }),
        //修改弹框信息 
        $('.edit').click(function() {

            if (!$('.pure-table tr').has('.checked').length) {
                layer.msg('请选择一条需要修改的信息!', { icon: 5 });
            } else {
                let userInfo = $('.pure-table tr').find('.checked').data('user');
                $('.editDeviceListOut input[name=ownerCode]').val(userInfo.ownerCode)
                $('.editDeviceListOut input[name=ownerName]').val(userInfo.ownerName)
                $('.editDeviceListOut input[name=unitinfo').val(userInfo.unitinfo)

                // 建筑赋值
                $('.editDeviceListOut select[name=ownerXh]').val(userInfo.ownerXh)

                // 楼层下拉展示及赋值
                if ($('#getBuildingList2').val()) {
                    listFloor()

                    function listFloor() {
                        let buildId = $('#getBuildingList2').find('option:selected').val();
                        ajaxRequest(BUILD_TREE_LIST, "POST", { "buildId": buildId }, function(result) {
                            let floorItems = '<option value="">请选择</option>';
                            let buildObj = result.data;
                            if (buildObj) {
                                buildObj.forEach(function(item, key) {
                                    floorItems += `<option value="${item.floorId}">${item.floorName}</option>`
                                })
                                $('#getFloorList2').html(floorItems);
                            } else {
                                $('#getFloorList2').html(floorItems);
                            }
                        }, function(errorMsg) {
                            alert("请求数据失败!");
                        })
                    }
                }
                $('.editDeviceListOut select[name=louyu]').val(userInfo.louyu)

                // 房间下拉展示及赋值
                if ($('#getFloorList2').val()) {
                    listRoom()

                    function listRoom() {
                        let floorId = $('#getFloorList2').find('option:selected').val();
                        ajaxRequest(BUILD_TREE_LIST, "POST", { "floorId": floorId }, function(result) {
                            let roomItems = '<option value="">请选择</option>';
                            let floorObj = result.data;
                            if (floorObj) {
                                floorObj.forEach(function(item, key) {
                                    roomItems += `<option value="${item.roomId}">${item.roomName}</option>`
                                })
                                $('#getRoomList2').html(roomItems);
                            } else {
                                $('#getRoomList2').html(roomItems);
                            }
                        }, function(errorMsg) {
                            alert("请求数据失败!");
                        })
                    }
                }
                $('.editDeviceListOut select[name=rtmp]').val(userInfo.rtmp)

                $('.editDeviceListOut input[name=address').val(userInfo.address)
                $('.editDeviceListOut input[name=posistion').val(userInfo.posistion)

                $('.editDeviceListOut select[name=dwtype]').val(userInfo.dwtype)
                $('.editDeviceListOut select[name=company]').val(userInfo.company)

                $('.editDeviceListOut input[name=transferType').val(userInfo.transferType)
                $('.editDeviceListOut input[name=hls').val(userInfo.hls)
                $('.editDeviceListOut input[name=ownerCode').val(userInfo.ownerCode)

                // userInfo.addr1 = "上海";
                $('.editDeviceListOut select[name=addr1]').val(userInfo.addr1)

                provinceText = userInfo.addr1;
                $.each(provinceList, function(i, item) {
                    if (provinceText == item.name) {
                        cityItem = i;
                        return cityItem
                    }
                });
                removeEle(city);
                removeEle(town);
                $.each(provinceList[cityItem].cityList, function(i, item) {
                        addEle(city, item.name)
                    })
                    // userInfo.addr2 = "市辖区"
                $('.editDeviceListOut select[name=addr2]').val(userInfo.addr2)

                cityText = userInfo.addr2;
                removeEle(town);
                $.each(provinceList, function(i, item) {
                    if (provinceText == item.name) {
                        cityItem = i;
                        return cityItem
                    }
                });
                $.each(provinceList[cityItem].cityList, function(i, item) {
                    if (cityText == item.name) {
                        for (var n = 0; n < item.areaList.length; n++) {
                            addEle(town, item.areaList[n])
                        }
                    }
                });

                // userInfo.addr3 = "黄浦区"
                $('.editDeviceListOut select[name=addr3]').val(userInfo.addr3)

                layerUpdateIndex = layer.open({
                    type: 1,
                    title: false,
                    closeBtn: 0,
                    shadeClose: true,
                    skin: 'yourclass',
                    area: ['1000px', '400px'],
                    content: $(".editDeviceListOut"),
                    success: function() {
                        $('.clsBtn,.cancel').click(function() {
                            layer.close(layerUpdateIndex);
                        })
                    }
                });
            }
        })

    //删除信息
    $('.delete').click(function() {
        if (!$('.pure-table tr').has('.checked').length) {
            layer.msg('请选择一条需要删除的信息!', { icon: 5 });
        } else {
            let ownerCode = $('.pure-table tr').find('.checked').data('ownercode');
            ajaxRequest(DEVICE_LIST_DELETE, "POST", { "ownerCode": ownerCode }, function(result) {
                $(".pure-table tbody tr.selected").remove()
                layer.close(layer.layerCreateIndex);
                layer.msg('删除成功!', { icon: 6 });
                getListDataAjax()

            }, function(errorMsg) {
                alert("用户删除失败!");
            })
        }
    })
})

/* 新增发送请求 */
$('#addData').click(function() {

    //获取表单的值 并转换成对象
    let allParam = serializeArrayToObj($("#addDataForm").serializeArray());

    //验证数据是否为空
    let res = validParamIsEmpty(allParam, {
        "ownerCode": "请输入设备编号",
        "ownerName": "请输入设备名称",
        "unitinfo": "填写安装位置",
        "ownerXh": "请选择建筑",
        // "louyu": "请选择楼层",
        // "rtmp": "请选择房间",
        "addr1": "请选择省份",
        "addr2": "请选择所属市区",
        "addr3": "请选择所属区、县",
        "address": "请输入详细地址",
        "posistion": "请填写GIS坐标",
        "dwtype": "请选择设备类型",
        "company": "请选择所属单位",
        "transferType": "请输入传输方式",
    });

    if (res.code == -1) {
        alert(res.msg);
        return;
    }

    //验证通过 请求ajax
    ajaxRequest(DEVICE_LIST_ADD, "POST", allParam, function(result) {
        layer.close(layerCreateIndex);
        layer.msg('添加成功!', { icon: 6 });
        getListDataAjax();
    }, function(errorMsg) {
        alert("异常错误!");
    })
})

/* 修改发送请求 */
$('#dataUpdate').click(function() {

    //获取表单的值 并转换成对象
    let allParam = serializeArrayToObj($("#updateForm").serializeArray());

    //验证数据是否为空
    let res = validParamIsEmpty(allParam, {
        "ownerCode": "请输入设备编号",
        "ownerName": "请输入设备名称",
        "unitinfo": "填写安装位置",
        "ownerXh": "请选择建筑",
        // "louyu": "请选择楼层",
        // "rtmp": "请选择房间",
        "addr1": "请选择省份",
        "addr2": "请选择所属市区",
        "addr3": "请选择所属区、县",
        "address": "请输入详细地址",
        "posistion": "请填写GIS坐标",
        "dwtype": "请选择设备类型",
        "company": "请选择所属单位",
        "transferType": "请输入传输方式",
    });

    if (res.code == -1) {
        alert(res.msg);
        return;
    }

    ajaxRequest(DEVICE_LIST_UPDATE, "POST", allParam, function(result) {
        if (result.flag) {
            layer.msg('修改成功!', { icon: 6 });
        } else {
            //服务端返回报错
            alert(result.msg);
        }
        layer.close(layerUpdateIndex);
        getListDataAjax();
    }, function(errorMsg) {
        alert("数据修改失败!");
    })
})