"use strict";
layui.extend({
    common    :   'js/common',
    orgTree    :   'layui/lay/mymodules/org-tree',
    dropdown    :   'layui/lay/modules/dropdown',
    xmSelect    :   'layui/dist/xm-select',
}).use(['jquery','layer','common','table','orgTree','form','dropdown','xmSelect'],function () {
    //  弹窗插件
    var layer = layui.layer;
    //  Jquery插件
    var $ = layui.jquery;
    //  引入公共模块
    var common = layui.common;
    //引入表单
    var form = layui.form;

    var dropdown = layui.dropdown;
    //  引入下拉菜单
    var xmSelect = layui.xmSelect;

    var $node = {
        nameInput           :   $('#name'),
        serialNumberInput   :   $('#serial_number'),
        onLineStatusSelect  :   $('#on_line_status'),
        cardNum : $('#card_num'),
        orgId : $('#org_id'),
        cardStatus : $('#card_status'),
        operator : $('#operator')
    };

    //  数据
    var Data = {
        //  当前用户机构Id
        myOrgId     :   parseInt($('#user_org_id').val()),
        //  表格Id
        tableId     :   'data_table',
        //  选中的Id列表
        selectedIdSet   :   new Set()
    };

    //  初始化表单
    var layuiTable = common.layuiTable.render(layui.table,{
        id: Data.tableId
        ,elem: '#data_entity_table'
        ,url: '/flowCard/manage/pagingQuery'
        ,cellMinWidth: 80 //全局定义常规单元格的最小宽度，
        , cols: [[
            {type: 'checkbox'}
            ,{ field: 'cardNum', title: '流量卡号',align:'center' }
            , { field: 'orgName', title: '所属机构',align:'center' }
            , { field: 'operator', title: '运营商',align:'center',sort: true,templet:'#device_flowCard_operator' }
            , { field: 'cardStatus', title: '绑定状态',align:'center',sort: true,templet:'#device_flowCard_cardStatus' }
            , { field: 'packName', title: '套餐名称',align:'center' }
            , { field: 'packFlow', title: '套餐总流量（MB）',align:'center' }
            , { field: 'createDate', title: '创建时间',align:'center',sort: true }
            , { field: 'endDate', title: '卡有效期',align: 'center',sort:true,width:160,templet:function(d){
                    if (d.beginDate && d.endDate){
                        return layui.util.toDateString(d.beginDate)+" 至 "+layui.util.toDateString(d.endDate);
                    }else{
                        return "";
                    }
                }}
            , { title: '操作', align: 'center',width:180,toolbar: '#table-operate'}
        ]]
        , page: true
        ,done   :   function(result){
            var list = result.data;
            for (var i = 0; i < list.length; i++) {
                var entity = list[i];
                Data.selectedIdSet.forEach(function (selectedId) {
                    if (entity.id === selectedId){
                        $('div[lay-id="' + Data.tableId + '"]').find('.layui-table-box table tr[data-index="' + i + '"]').find('td:first .layui-form-checkbox').eq(0).click();
                    }
                });
                let endDate1 = new Date(entity.endDate);
                var a1 = GetNumberOfDays(DateFormat(new Date()),entity.endDate)
                if (endDate1 < new Date()){
                    $('div[lay-id="' + Data.tableId + '"]').find('.layui-table-box table tr[data-index="' + i + '"]')[0].style.color="#FF5722";
                }else if (a1<0||a1<30){
                    $('div[lay-id="' + Data.tableId + '"]').find('.layui-table-box table tr[data-index="' + i + '"]')[0].style.color="#FFB800";
                }
            }
        }
    });

    //排序
    layui.table.on('sort(data_table_event)',function (obj) {
        reloadTable(obj);
    });

    function DateFormat(dateTime){//格式化时间
        var dateParse = Date.parse(new Date(dateTime));//转成时间戳
        var time = new Date(dateParse);//再转成标准时间
        var y = String(time.getFullYear());
        var m = String(time.getMonth()+1);
        var d = String(time.getDate());
        var h = String(time.getHours());
        var u = String(time.getMinutes());
        var s = String(time.getSeconds());
        return y+"-"+m+"-"+d+"-" + " "+ h+":"+u+":"+s
        //return m+"/"+d//直接输入自己想要的格式
    };
    function GetNumberOfDays(date1,date2){//获得天数
        //date1：开始日期，date2结束日期
        var a1 = Date.parse(new Date(date1));
        var a2 = Date.parse(new Date(date2));
        var day = parseInt((a2-a1)/ (1000 * 60 * 60 * 24));//核心：时间戳相减，然后除以天数
        return day
    };
    //  重新加载表格
    var selectedItem = undefined;
    var reloadTable = function(obj){
        //  重新加载表格
        layuiTable.reload({
            //  设定异步数据接口的额外参数
            where: {
                selectedId      :   selectedItem ? selectedItem.id : '',
                cardNum : $node.cardNum.val(),
                orgId : $node.orgId.val(),
                cardStatus : $node.cardStatus.val(),
                operator : $node.operator.val(),
                sortField   :   obj?obj.field:'',
                sortOrder   :   obj?obj.type:'',
            }
            //  重新从第1页开始
            ,page: {
                curr: 1
            },
            initSort:obj
        });
    };

    //  加载树形列表
    layui.orgTree({
        //  点击路径的回调函数
        pathClickFn     :   function(item){
            selectedItem = item;
            reloadTable();
        },
        //  点击树的回调函数
        treeClickFn     :   function(item){
            selectedItem = item;
            reloadTable();
        },
        //  当前用户的机构Id
        orgId   :   Data.myOrgId,
        //  截至级别（不包含）
        isShowFlag : 2
    });

    //  选中复选框事件
    layui.table.on('checkbox(data_table_event)',function (obj) {
        if (obj.type === 'all'){
            if (obj.checked){
                //  全选
                var list = layui.table.checkStatus(Data.tableId).data;
                list.forEach(function (entity) {
                    Data.selectedIdSet.add(entity.id);
                });
            }else {
                //  全不选
                layui.table.cache[Data.tableId].forEach(function (entity) {
                    Data.selectedIdSet.delete(entity.id);
                });
            }
        }else {
            var id = obj.data.id;
            obj.checked ? Data.selectedIdSet.add(id) : Data.selectedIdSet.delete(id);
        }
    });

    //监听流量卡添加
    form.on('submit(add)', function(){
        layer.open({
            type    :   2,
            title   :   '添加流量卡',
            content :   '/device/flowCard/add',
            area    :   ['900px','600px'],
            maxmin  :   true
        });
    });

    //监听查询
    form.on('submit(query)', function(){
        reloadTable();
    });

    //监听重置
    form.on('submit(reset)', function(){
        $node.nameInput.val("");
        $node.serialNumberInput.val("");
        $node.onLineStatusSelect.val("");
        $node.cardNum.val('');
        orgSelect.setValue([]);
        $node.orgId.val('');
        $node.cardStatus.val('');
        $node.operator.val('');
        // 刷新select标签
        form.render('select');
        reloadTable();
    });

    //  操作栏事件绑定
    layui.table.on('tool(data_table_event)',function (obj) {
        switch (obj.event) {
            //  修改
            case 'edit':
                layer.open({
                    type    :   2,
                    title   :   '修改流量卡信息',
                    content :   '/device/flowCard/edit/' + obj.data.id,
                    area    :   ['700px','660px'],
                    maxmin  :   true
                });
                break;
            //  删除
            case 'delete':
                layer.confirm('是否确认删除?', {icon: 7, title:'提示'},function(index) {
                    $.ajax({
                        url: '/device/flowCard/delete/' + obj.data.id,
                        success: function (result) {
                            result.data ? layuiTable.reload() : layer.alert('删除失败')
                        }
                    });
                    layer.close(index);
                });
                break;
            //绑定设备
            case 'bind' :
                layer.open({
                    type    :   2,
                    title   :   '流量卡绑定设备',
                    content :   '/device/flowCard/bind/' + obj.data.id,
                    area    :   ['80%','80%'],
                    maxmin  :   true,
                    cancel : function(){reloadTable();}
                });
                break;
            default:
                break;
        }
    });

    var orgSelect = xmSelect.render({
        el: '#org_name',
        radio: true,
        prop: {
            name: 'name',
            value: 'id',
        },
        toolbar: {
            show: true,
            list: [{
                name: '清空',
                method(){
                    orgSelect.setValue([]);
                    $node.orgId.val('')
                }
            }]
        },
        clickClose: true,
        filterable: true,
        remoteSearch: true,
        remoteMethod: function (val, cb, show) {
            $.ajax({
                type: 'GET',
                url: '/permissions/org/getListByLikeName',
                data: {
                    name : val,
                    flag    :   1,
                    isSelect : true
                },
                success: function (result) {
                    cb(result.list);
                },
                error: function () {
                    cb([]);
                }
            });
        },
        //监听选择
        on: function (data) {
            var change = data.change;
            if (change.length > 0) {
                $node.orgId.val(change[0].id)
            }
            if (!data.isAdd) {
                $node.orgId.val('');
            }
        },
        //显示方式
        model: {
            label: {
                type: 'text',
                text: {
                    //左边拼接的字符
                    left: '',
                    //右边拼接的字符
                    right: '',
                    //中间的分隔符
                    separator: ', ',
                },
            }
        },
    });

});
