let tableIns;
let tablePlayerLog;
let tablePlayerProfit;
let tree;
let userId;
let bHasData = false;
let openIndex;
// let propList = [[${propList}]];
// console.log("propList:",propList);
layui.use(['element', 'form', 'table', 'layer', 'laydate', 'tree', 'util'], function () {
    let table = layui.table;
    let form = layui.form;//select、单选、复选等依赖form
    form.verify({
        // positiveInteger: [/^(([0-9]+[\.]?[0-9]+)|[1-9])$/, '只能填写正整数'],//必填，且只能输入正整数
        positiveInteger: [/^[1-9]\d*$/, '只能填写正整数'],//必填，且只能输入正整数
    });

    let element = layui.element; //导航的hover效果、二级菜单等功能，需要依赖element模块
    let laydate = layui.laydate;
    tree = layui.tree;
    let height = document.documentElement.clientHeight * 0.8;
    //用户列表
    tableIns = table.render({
        elem: '#mainTable'
        , url: ctx + "/sys/sysComUsers/findPlayerBackpack"
        , method: 'POST'
        //请求前参数处理
        , request: {
            pageName: 'page' //页码的参数名称，默认：page
            , limitName: 'rows' //每页数据量的参数名，默认：limit
        }
        , where: {sidx: "desc", sord: "createTime"}
        , response: {
            statusName: 'flag' //规定数据状态的字段名称，默认：code
            , statusCode: true //规定成功的状态码，默认：0
            , msgName: 'msg' //规定状态信息的字段名称，默认：msg
            , countName: 'records' //规定数据总数的字段名称，默认：count
            , dataName: 'rows' //规定数据列表的字段名称，默认：data
        }
        //响应后数据处理
        , parseData: function (res) { //res 即为原始返回的数据
            $("#addForm")[0].reset();
            userId = null;
            form.render();
            var data = res.data;
            console.log("返回的地址数据：", data);
            if (data.rows && data.rows.length > 0) {
                bHasData = true;
                // userId = data.rows[0].userId;//记录当前访问的userId
                // let _findData = {userId: data.rows[0].userId, sidx: "desc", sord: "createTime"};
                // if (!tablePlayerLog) {
                //     initPlayerLog(table, _findData);
                // } else {
                //     playerLogReload(_findData);
                // }
                //
                // if(!tablePlayerProfit){
                //     initPlayerProfit(table, _findData);
                // }else{
                //     playerProfitReload(_findData);
                // }
            }

            return {
                "flag": res.flag, //解析接口状态
                "msg": res.msg, //解析提示文本
                "records": data.records, //解析数据长度
                "rows": data.rows //解析数据列表
            };
        }
        , toolbar: '#mainTableToolbarDemo'
        , title: '用户仓库列表'
        , cols: [[
            {field: 'id', title: '背包id', hide: true}
            , {field: 'userId', title: '用户id'}
            , {field: 'itemId', title: '物品id'}
            , {
                field: 'itemType', title: '物品类型', templet: function (d) {
                    if (d.itemType == 1) {
                        return '<span style="color: red">货币</span>';
                    } else if (d.itemType == 2) {
                        return '<span style="color: green">矿石</span>';
                    } else if (d.itemType == 3) {
                        return '<span style="color: green">材料</span>';
                    } else {
                        return '未添加:' + d.itemType;
                    }
                }
            }
            , {field: 'itemTag', title: '标记分类'}
            , {field: 'itemName', title: '物品名字'}
            , {field: 'pictureName', title: '图片'}
            , {field: 'amount', title: '数量'}
            , {field: 'createTime', title: '创建时间', hide: true}
            , {field: 'updateTime', title: '更新时间', hide: true}
            , {fixed: 'right', title: '操作', width: 140, toolbar: '#mainTableBarDemo'}
        ]]
        , defaultToolbar: ['', 'exports', 'print']
        , page: true
        , height: height
        , cellMinWidth: 80
    });

    //头工具栏事件
    table.on('toolbar(test)', function (obj) {
        switch (obj.event) {
            case 'query':
                //根据用户地址查询
                findByUserAddress(form);
                break;
            case 'playerLogReload':
                playerLogReload();
                break;

            case 'addNewRow':
                let queryByAddress = $("#queryByAddress").val();
                //获取菜单数据
                if (queryByAddress.length <= 0) {
                    layer.msg("输入用户钱包地址新增", {icon: 2, time: 1000}, function () {
                    });
                    return;
                }
                $.post(ctx + "/sys/sysComUsers/findUserIdByAddress", {address: queryByAddress}, function (res) {
                    if (!res.flag) {
                        layer.msg(res.msg, {icon: 2, time: 2000}, function () {
                        });
                        return;
                    }
                    //类型（1:货币，2：矿石，3：材料）
                    // $('#itemType').find("option").remove();
                    // $('#itemType').append(new Option("货币", "1"));// 下拉菜单里添加元素
                    // $('#itemType').append(new Option("矿石", "2"));// 下拉菜单里添加元素
                    // $('#itemType').append(new Option("材料", "3"));// 下拉菜单里添加元素
                    // form.render("select");

                    $("#tableId").css("display", "none");
                    $("input[name='itemId']").removeAttr("readonly");

                    $("#tableTime").css("display", "none");
                    $("#saveBtn").css("display", "none");
                    $("#addBtn").css("display", "block");
                    // $("#comForm")[0].reset();
                    // userId = res.data.userId;//记录当前访问的userId
                    // //设置一个数据
                    // form.val("comForm", {"userId": userId});
                    // form.render();
                    $("#addForm")[0].reset();
                    userId = res.data.userId;//记录当前访问的userId
                    form.val("addForm", {"userId": userId});
                    form.render();

                    openIndex = layer.open({
                        type: 1,  //可传入的值有：0（信息框，默认）1（页面层）2（iframe层）3（加载层）4（tips层）
                        title: ['新增数据', 'font-size:18px;'],//数组第二项可以写任意css样式；如果你不想显示标题栏，你可以title: false
                        area: ['50%', '80%'],
                        content: $('#show_add_div')
                    });

                });
                break;
        }
    });

    //监听行工具事件
    table.on('tool(test)', function (obj) {
        let data = obj.data;
        //编辑
        if (obj.event === 'edit') {
            $('#itemType').find("option").remove();
            $('#itemType').append(new Option("货币", "1", data.itemType === 1));// 下拉菜单里添加元素
            $('#itemType').append(new Option("矿石", "2", data.itemType === 2));// 下拉菜单里添加元素
            $('#itemType').append(new Option("材料", "3", data.itemType === 3));// 下拉菜单里添加元素
            form.render("select");

            $("#tableId").css("display", "block");
            $("input[name='itemId']").attr("readonly", "readonly");

            $("#tableTime").css("display", "block");
            $("#saveBtn").css("display", "block");
            $("#addBtn").css("display", "none");
            //回显操作表单
            $("#comForm").form(data);
            form.render();

            openIndex = layer.open({
                type: 1,  //可传入的值有：0（信息框，默认）1（页面层）2（iframe层）3（加载层）4（tips层）
                title: ['修改数据', 'font-size:18px;'],//数组第二项可以写任意css样式；如果你不想显示标题栏，你可以title: false
                area: ['80%', '80%'],
                content: $('#show_div')
            });
        } else if (obj.event === 'del') {
            layer.confirm('真的删除行么?', function (index) {
                $.post(ctx + "/sys/sysComUsers/deletePlayerBackpack", {id: data.id}, function (data) {
                    if (!data.flag) {
                        layer.msg(data.msg, {icon: 2, time: 2000}, function () {
                        });
                        return;
                    }
                    obj.del();
                    tableIns.reload();
                });
                layer.close(index);
            });
        }
    });


    //日期选择器
    laydate.render({
        elem: '#expiredTimeDate',
        format: "yyyy-MM-dd HH:mm:ss"
    });

    //监听提交
    form.on('submit(comFilter)', function (data) {
        comFormSave(false);
    });
    form.on('submit(comAddFilter)', function (data) {
        // comFormSave(true);
        comFormAdd();
    });

    $("#saveBtn").css("display", "none");
    $("#addBtn").css("display", "none");
});


function findByUserAddress(form) {
    if (form) {
        //重置数据
        $("#comForm")[0].reset();
        form.render();
    }
    let queryByAddress = $("#queryByAddress").val();
    //获取菜单数据
    if (queryByAddress.length <= 0) {
        layer.msg("输入用户钱包地址查询", {icon: 2, time: 1000}, function () {
        });
        return;
    }
    tableIns.reload({
        page: {
            curr: 1 //重新从第 1 页开始
            , limit: 10
        },
        method: 'POST'
        , url: ctx + "/sys/sysComUsers/findPlayerBackpack"
        , where: {address: queryByAddress, sidx: "desc", sord: "createTime"}
        , done: function (res, curr, count) {
            // console.log(res, curr, count);
            $("input[name='queryByAddress']").val(queryByAddress);
            //this.where={};
            //不清空，有问题：搜索条件会保留
            //清空，  有问题：分页的时候没有搜索条件了,分页会受到影响
        }
    });
}

/**
 * 提交保存
 */
function comFormSave(isAddNew) {
    let comForm = $("#comForm").serializeObject();
    if (!comForm.id && !isAddNew) {
        layer.msg("选择编辑的对象", {icon: 2, time: 1000}, function () {
        });
        return;
    }
    //新增的需要处理id
    console.log("userId:" + userId);
    if (isAddNew) {
        if (!userId) {
            layer.msg("没有用户信息！", {icon: 2, time: 1000}, function () {
            });
            return;
        } else {
            comForm["userId"] = userId;
        }
    }
    $.post(ctx + "/sys/sysComUsers/savePlayerBackpack", comForm, function (data) {
        if (!data.flag) {
            layer.msg(data.msg, {icon: 2, time: 2000}, function () {
            });
            return;
        }
        layer.close(openIndex);
        if (isAddNew) {
            if (!bHasData) {
                findByUserAddress();
            } else {
                tableIns.reload();
            }
        } else {
            tableIns.reload();
        }

    });
}


function comFormAdd() {
    let addForm = $("#addForm").serializeObject();
    console.log(addForm);
    $.post(ctx + "/sys/sysComUsers/addProp", {userId: addForm.userId, id: addForm.id}, function (data) {
        if (!data.flag) {
            layer.msg(data.msg, {icon: 2, time: 2000}, function () {
            });
            return;
        }
        layer.close(openIndex);
        findByUserAddress();
    });
}

/**
 * 用户操作日志
 * @param table
 * @param data
 */
function initPlayerLog(table, data) {
    //用户操作playerLog
    // console.log("playerLog");
    tablePlayerLog = table.render({
        elem: '#comPlayerLogTable'
        , url: ctx + "/sys/sysComUsers/findPlayerLogPage"
        , method: 'POST'
        //请求前参数处理
        , request: {
            pageName: 'page' //页码的参数名称，默认：page
            , limitName: 'rows' //每页数据量的参数名，默认：limit
        }
        , where: data
        , response: {
            statusName: 'flag' //规定数据状态的字段名称，默认：code
            , statusCode: true //规定成功的状态码，默认：0
            , msgName: 'msg' //规定状态信息的字段名称，默认：msg
            , countName: 'records' //规定数据总数的字段名称，默认：count
            , dataName: 'rows' //规定数据列表的字段名称，默认：data
        }
        //响应后数据处理
        , parseData: function (res) { //res 即为原始返回的数据
            let data = res.data;
            // console.log("playerLog",res);
            return {
                "flag": res.flag, //解析接口状态
                "msg": res.msg, //解析提示文本
                "records": data.records, //解析数据长度
                "rows": data.rows //解析数据列表
            };
        }
        , toolbar: '#comPlayerLogTableToolbarDemo'
        , title: '用户仓库操作列表'
        , cols: [[
            {field: 'id', title: 'ID', hide: true}
            , {field: 'userId', title: 'userId', width: 260}
            , {field: 'tId', title: '目标id', width: 100}
            , {
                field: 'tType', title: '交易的类型', width: 100, templet: function (d) {
                    if (d.tType == 0) {  // 自定义内容
                        return '<span style="color: green">收获果实</span>';
                    } else if (d.tType == 1) {
                        return '<span style="color: red">种植种子</span>';
                    } else if (d.tType == 2) {
                        return '<span style="color: red">赠送</span>';
                    } else if (d.tType == 3) {
                        return '<span style="color: green">被赠送</span>';
                    } else if (d.tType == 4) {
                        return '<span style="color: green">钻石兑换种子</span>';
                    } else if (d.tType == 5) {
                        return '<span style="color: red">出售果实</span>';
                    } else if (d.tType == 6) {
                        return '<span style="color: green">偷取果实</span>';
                    } else if (d.tType == 7) {
                        return '<span style="color: red">断电扣除果实</span>';
                    } else {
                        return '<span style="color: green">待添加：</span>' + d.tType;
                    }
                }
            }
            , {field: 'tName', title: '物品名字', width: 120}
            // , {field: 'tAmount', title: '交易数量', width: 150}
            // , {field: 'beforeAmount', title: '交易前数量'}
            // , {field: 'afterAmount', title: '交易后数量'}
            , {
                field: 'tAmount', title: '交易数量', width: 150, templet: function (d) {
                    return (d.tAmount + d.tPart).toFixed(5);
                }
            }
            , {
                field: 'beforeAmount', title: '交易前数量', templet: function (d) {
                    return (d.beforeAmount + d.beforePart).toFixed(5);
                }
            }
            , {
                field: 'afterAmount', title: '交易后数量', templet: function (d) {
                    return (d.afterAmount + d.afterPart).toFixed(5);
                }
            }
            , {field: 'tLoss', title: '系统扣除部分'}
            , {field: 'lMultiple', title: 'land倍数', width: 80}
            , {
                field: 'withered', title: '损耗类型', width: 100, templet: function (d) {
                    if (d.withered == 0) {  // 自定义内容
                        return '<span style="color: green">---</span>';
                    } else if (d.withered == 1) {
                        return '<span style="color: red">枯萎(死亡)</span>';
                    } else if (d.withered == 2) {
                        return '<span style="color: red">断电损耗</span>';
                    } else {
                        return '<span style="color: green">待添加：</span>' + d.withered;
                    }
                }
            }
            , {field: 'createTime', title: '创建时间'}
            , {field: 'updateTime', title: '更新时间', hide: true}
        ]]
        , defaultToolbar: ['', 'exports', 'print']
        , page: true
        , height: 500
        , cellMinWidth: 80
    });
}


function playerLogReload(data) {
    tablePlayerLog.reload({
        page: {
            curr: 1 //重新从第 1 页开始
            , limit: 10
        }
        , method: 'POST'
        , url: ctx + "/sys/sysComUsers/findPlayerLogPage"
        , where: data
        , done: function (res, curr, count) {
        }
    });
}


/**
 * 用户偷取的操作
 * @param table
 * @param data
 */
function initPlayerProfit(table, data) {
    //用户操作PlayerProfit
    tablePlayerProfit = table.render({
        elem: '#comPlayerProfitTable'
        , url: ctx + "/sys/sysComUsers/findPlayerProfitPage"
        , method: 'POST'
        //请求前参数处理
        , request: {
            pageName: 'page' //页码的参数名称，默认：page
            , limitName: 'rows' //每页数据量的参数名，默认：limit
        }
        , where: data
        , response: {
            statusName: 'flag' //规定数据状态的字段名称，默认：code
            , statusCode: true //规定成功的状态码，默认：0
            , msgName: 'msg' //规定状态信息的字段名称，默认：msg
            , countName: 'records' //规定数据总数的字段名称，默认：count
            , dataName: 'rows' //规定数据列表的字段名称，默认：data
        }
        //响应后数据处理
        , parseData: function (res) { //res 即为原始返回的数据
            let data = res.data;
            // console.log("playerLog",res);
            return {
                "flag": res.flag, //解析接口状态
                "msg": res.msg, //解析提示文本
                "records": data.records, //解析数据长度
                "rows": data.rows //解析数据列表
            };
        }
        , toolbar: '#comPlayerProfitTableToolbarDemo'
        , title: '用户仓库操作列表'
        , cols: [[
            {field: 'id', title: 'ID', hide: true}
            , {field: 'userId', title: 'userId', width: 260}
            , {field: 'targetId', title: '目标id', width: 100}
            , {field: 'plantFlag', title: '种植标识', width: 120}
            , {field: 'landId', title: '土地号数', width: 120}
            , {
                field: 'leaseDate', title: '租赁类型', width: 100, templet: function (d) {
                    if (d.leaseDate == 1) {  // 自定义内容
                        return '<span style="color: green">3个月</span>';
                    } else if (d.leaseDate == 2) {
                        return '<span style="color: red">1年</span>';
                    } else if (d.leaseDate == 3) {
                        return '<span style="color: red">5年</span>';
                    } else if (d.leaseDate == 4) {
                        return '<span style="color: red">养殖场</span>';
                    } else {
                        return '<span style="color: green">待添加：</span>' + d.leaseDate;
                    }
                }
            }
            , {field: 'leaseMultiple', title: '租赁倍数', width: 120}
            , {field: 'harvest', title: '土地产出量', width: 150}
            , {field: 'profit', title: '利润总值'}
            , {field: 'profitAfter', title: '交易后利润'}
            , {field: 'stolen', title: '目标损失量', width: 150}
            , {field: 'finalSteal', title: '玩家偷取得到的数量'}
            , {field: 'profitRatio', title: '收成的比例值'}
            , {field: 'stealRatio', title: '比例区间1%~3%'}
            , {field: 'finalRatio', title: '损失比例', width: 80}
            , {field: 'createTime', title: '创建时间'}
            , {field: 'updateTime', title: '更新时间', hide: true}
        ]]
        , defaultToolbar: ['', 'exports', 'print']
        , page: true
        , height: 500
        , cellMinWidth: 80
    });
}


function playerProfitReload(data) {
    tablePlayerProfit.reload({
        page: {
            curr: 1 //重新从第 1 页开始
            , limit: 10
        }
        , method: 'POST'
        , url: ctx + "/sys/sysComUsers/findPlayerProfitPage"
        , where: data
        , done: function (res, curr, count) {
        }
    });
}