var table = layui.table,
    form = layui.form;
// layui.use(['layer', 'table', 'form'], function () {
//     var table = layui.table,
//         form = layui.form;
    /**
     * @id 表格ID
     * @dataCols 表格头数据
     * @page 当前页面
     * @url 请求地址
     * 描述：设置生成动态表格
     */
    window.setDataTable = function (id, dataCols, pageSize = 1, filter = 'test', url = '/user.json') {
        return table.render({
            elem: id,
            id: id,
            url: url, //数据接口
            toolbar: "#toolbarDemo",
            page: {
                layout: ['prev', 'page', 'next'],
                curr: pageSize,
                limit: 10,
                prev: "上一页",
                next: "下一页"
            },
            cols: [dataCols]
        });
    }
    //头工具栏事件
    table.on('toolbar(test)', function (obj) {
        var checkStatus = table.checkStatus(obj.config.id);
        switch (obj.event) {
            case 'getCheckData':
                var data = checkStatus.data;
                layer.alert(JSON.stringify(data));
                break;
            case 'getCheckLength':
                var data = checkStatus.data;
                layer.msg('选中了：' + data.length + ' 个');
                break;
            case 'isAll':
                layer.msg(checkStatus.isAll ? '全选' : '未全选');
                break;

                //自定义头工具栏右侧图标 - 提示
            case 'LAYTABLE_TIPS':
                layer.alert('这是工具栏右侧自定义的一个图标按钮');
                break;
        };
    });
    /**
     * @id 表格的filter
     * @field 表格属性
     * @fin 回调
     */
    let fields = [];
    let activeValues = '';
    window.tableClick = function (tableID, field, fun = function () {}) {
        let col = tableID.config.cols[0].find(v => v.field === field);
        let filter = tableID.config.elem[0].attributes["lay-filter"].value;
        // 输入框更改
        if (col && col.edit && col.edit === "text") {
            table.on('edit(' + filter + ')', function (obj) {
                layer.confirm('确认将' + obj.oldInputValue + '改为' + obj.value + '', {
                    end: function () {
                        obj.update({
                            [field]: obj.oldInputValue
                        });
                    }
                }, function (index) {
                    fun(obj);
                    layer.close(index);
                });
            });
            return false;
        }
        // 工具条更改
        let fieldArr = {
            field: field,
            fun: fun
        };
        let index = fields.findIndex(v => v.field === field);
        if (index === -1) {
            fields.push(fieldArr);
        } else {
            fields[index] = fieldArr;
        }
        table.on('tool(' + filter + ')', function (obj) {
            fields.forEach(v => {
                if (obj.event === v.field) {
                    v.fun(obj, activeValues);
                    form.render();
                };
            })
        });
        if (col && col.type === "radio") {
            form.on('radio(' + field + ')', function (data) {
                activeValues = data.value;
                data.elem.click();
            });
        } else if (col && col.type === "checkbox") {
            form.on('checkbox(' + field + ')', function (data) {
                activeValues = [];
                let _children = data.elem.parentElement.children;
                _children = Array.from(_children)
                _children = _children.forEach(v => {
                    if (v.tagName === "INPUT" && v.checked) {
                        activeValues.push(v.value);
                    }
                });
                // 单击一次会取消选中，再单击一次
                data.elem.click();
                data.elem.click();
            });
        } else if (col && col.type === "select") {
            form.on('select(' + field + ')', function (data) {
                activeValues = data.value;
                console.log(data);
                data.elem.click();
            });
        }
    };

// });
/**
 * 生成头部属性
 * @fixed 左右浮动 "left"|"right"|false 不浮动 默认false
 * @type 属性类型 "checkbox"复选框、"select"下拉、"btn"按钮、'radio'单选框、"editText"文本、"text"普通文本
 * @field 属性
 * @title 名称
 * @width 自定义宽度或者false自适应 默认false
 * @sort  排序 true需要排序false不需要排序
 * @options 选项，下拉，多选，单项，按钮样式
 */
function tableTitlelist(fixed, type, field, title, width, sort = false, options = []) {
    let data = {};
    fixed && (data.fixed = fixed);
    type && (data.type = type);
    type === "editText" && (data.edit = "text");
    field && (data.field = field);
    title && (data.title = title);
    width && (data.width = width);
    data.sort = sort;
    options && field && (data.options = options);
    console.log(data);
    return data;
};
/**
 * 生成下拉列表，多选选项
 * @name 名称
 * @value 值，不填写默认值就是名称
 */
function tableTitleItem(name, value = '') {
    let data = {};
    value === '' && (value = name);
    name && (data.name = name);
    (value || value === 0) && (data.value = value);
    console.log(data);
    return data;
}
// 更新table数据
function updateTable(obj, attr, data) {
    obj.update({
        [attr]: data
    });
}
// 删除table数据
function deleteTable(obj) {
    obj.del();
}