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

    let element = layui.element; //导航的hover效果、二级菜单等功能，需要依赖element模块
    let laydate = layui.laydate;
    tree = layui.tree;
    let height = document.documentElement.clientHeight * 0.5; //随便设置下，和操作表单大概一样
    //用户列表
    tableIns = table.render({
        elem: '#userPlayerGoodsTable'
        , url: ctx + "/sys/sysComUsers/findPlayerGoodsByAddress"
        , 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 即为原始返回的数据
            var data = res.data;
            // console.log("返回的地址数据：", data);
            if (data.rows.length > 0) {
                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: '#userPlayerGoodsTableToolbarDemo'
        , title: '用户仓库列表'
        , cols: [[
            {field: 'goodsId', title: '背包id', hide: true}
            , {field: 'userId', title: '用户id'}
            , {field: 'goodsIndex', title: '物品id'}
            , {
                field: 'goodsType', title: '物品类型', templet: function (d) {
                    if (d.goodsType == 0) {
                        return '<span style="color: red">种子</span>';
                    } else if (d.goodsType == 1) {
                        return '<span style="color: green">果实</span>';
                    } else {
                        return '未添加:' + d.goodsType;
                    }
                }
            }
            , {field: 'name', title: '物品名称'}
            , {field: 'amount', title: '数量'}
            , {field: 'amountPart', title: '小数部分数量'}
            , {fixed: 'right', title: '操作', toolbar: '#userPlayerGoodsTableBarDemo'}
        ]]
        , 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;
        }
    });

    //监听行工具事件
    table.on('tool(test)', function (obj) {
        let data = obj.data;
        //编辑
        if (obj.event === 'edit') {
            // console.log("edit");
            //回显操作表单
            $("#comUsePlayerGoodsForm").form(data);
            form.render();
        }
    });


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

    //监听提交
    form.on('submit(comUserPlayerGoodsFilter)', function (data) {
        comUserPlayerGoodsFormSave();
    });
});


function findByUserAddress(form) {
    //重置数据
    $("#comUsePlayerGoodsForm")[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/findPlayerGoodsByAddress"
        , 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 comUserPlayerGoodsFormSave() {
    let comUsePlayerGoodsForm = $("#comUsePlayerGoodsForm").serializeObject();
    if (!comUsePlayerGoodsForm.goodsId) {
        layer.msg("选择编辑的对象", {icon: 2, time: 1000}, function () {
        });
        return;
    }
    $.post(ctx + "/sys/sysComUsers/playerGoodsSave", comUsePlayerGoodsForm, function (data) {
        if (!data.flag) {
            layer.msg(data.msg, {icon: 2, time: 2000}, function () {
            });
            return;
        }
        tableIns.reload();
    });
}

/**
 * 用户操作日志
 * @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 {
                        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: '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 {
                        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) {
        }
    });
}