layui.use(['form', 'table', 'laydate'], function(){
    var form = layui.form;
    var table = layui.table;
    var laydate = layui.laydate;

    laydate.render({
        elem: '#begin_time' //指定元素
    });

    laydate.render({
        elem: '#end_time' //指定元素
    });

    var renderTable = function() {
        table.render({
            id: 'list'
            ,elem: '#sample'
            ,url: '/api/ApiOrderServiceList' //数据接口
            ,method:'post'
            ,cellMinWidth: 80 //全局定义常规单元格的最小宽度
            ,page: true //开启分页
            ,cols: [[ //表头
                {title: '序号', type: 'numbers', fixed: 'left', width: 80}
                ,{field: 'service_sn', title: '售后单号', width: 170}
                ,{field: 'order_sn', title: '订单编号', width: 150, templet: '<div><a href="/details/{{ d.order_id }}" class="layui-table-link" target="_blank">{{d.order_sn}}</a></div>'}
                ,{field: 'user_account', title: '用户账号', width: 150}
                ,{field: 'apply_name', title: '申请人', width: 120}
                ,{field: 'auditor_name', title: '审核人', width: 120}
                ,{field: 'service_amount', title: '售后金额', width: 120}
                ,{field: 'service_status_val', title: '售后状态', templet: '#status', width: 120}
                ,{field: 'refund_status_val', title: '退款状态', width: 120}
                ,{field: 'return_status_val', title: '退货状态', width: 120}
                ,{field: 'create_time', title: '申请时间', width: 180}
                ,{field: 'auditor_time', title: '审核时间', width: 180}
                ,{title: '操作',  align:'center', fixed: 'right', toolbar: '#list_action', width: 200}
            ]]
            ,limit: 10
            ,limits: [10, 20, 50,]
        });
    }; 

    renderTable();

    form.on('submit(load)', function(data) {         
        //执行重载
        table.reload('list', {
            page: {
                curr: 1
            }
            ,where: data.field
        });    

        return false;
    });  

     // tool操作
    table.on('tool(list)', function(obj){ //注:tool是工具条事件名,test是table原始容器的属性lay-filter="对应的值"
        var data     = obj.data; //获得当前行数据
        var layEvent = obj.event; //获得 lay-event 对应的值(也可以是表头的 event 参数对应的值)
        var tr       = obj.tr; //获得当前行 tr 的DOM对象
        var type     = 0;
        var area     = 'auto';
        var title    = '';
        var content  = '';
        var url      = '/api/ApiOrderServiceAction';
        var datax    = [];
  
        if (layEvent === 'submit'){ // 提交
            title   = '提交申请';
            content = '确定提交该申请吗?';

            datax   = {id: data.id, service_status: 2};
        } else if (layEvent === 'audit'){ // 审核
            title   = '审核申请';
            content = '确定审核该申请吗?';

            datax   = {id: data.id, service_status: 3, service_type: data.service_type};
        } else if (layEvent === 'cancel'){ // 取消
            title   = '取消申请';
            content = '确定取消该申请吗?';

            datax   = {id: data.id, service_status: -1};
        } else if (layEvent === 'confirm'){ // 确认退款
            title   = '确认退款';
            content = '确认已退款吗?';

            url     = '/api/ApiConfirmRefund';
            datax   = {id: data.id};
        } else if (layEvent === 'edit'){ // 编辑
            type    = 1;
            area    = ['1200px', '700px'];
            title   = '编辑申请';
            content = $('.order_service_info');

            // 填充内容
            $('.service_type').val(data.service_type);

            if (data.refund_type == 0) {
                $('.refund_type_section').hide();
            } else {
                $('.refund_type_section').show();
                $('.refund_type').val(data.refund_type);
            }

            if (data.refund_type == 2) { // 支付宝
                $('.alipay-info').show();

                $('.ali_customer_name').val(data.customer_name);
                $('.ali_refund_account').val(data.refund_account);
            } else if (data.refund_type == 3) { // 银行
                $('.bank-info').show();

                $('.bank_customer_name').val(data.customer_name);
                $('.bank_refund_account').val(data.refund_account);
                $('.bank_name').val(data.bank_name);
                $('.bank_sub_name').val(data.bank_sub_name);
            }

            // 获取售后数量
            var serviced_num = [];

            $.ajax({
                url : '/api/ApiOrderServicedNum',
                type: 'post',
                data: {order_id: data.order_id},
                dataType: 'json',
                async: false,
                success: function(resp) {
                    if (resp.data) serviced_num = resp.data;
                }, 
                error: function(err) {
                    console.log(err)
                }
            })

            var html  = '';
            var items = data.items;
            var len   = items.length;

            for (var i = 0; i < len; i++) {
                html += '<tr>\
                            <td>'+ (i + 1) +'</td>\
                            <td>'+ items[i].goods_name +'</td>\
                            <td>'+ items[i].brand_name +'</td>\
                            <td class="origin-goods-number">'+ items[i].goods_number +'</td>\
                            <td class="fqty">'+ items[i].removal_number +'</td>\
                            <td class="single_pre_price">'+ items[i].single_pre_price +'</td>\
                            <td class="service-goods-number">'+( serviced_num[items[i].goods_id] ? serviced_num[items[i].goods_id] : 0 )+'</td>';

                if (items[i].adjust_number != 0) {
                    html += '<td><input type="text" class="form-control adjust_number" name="service_item['+items[i].id+'][adjust_number]" value="'+ items[i].adjust_number +'"></td>';
                } else {
                    html += '<td><input type="text" class="form-control adjust_number" name="service_item['+items[i].id+'][adjust_number]"></td>';
                }
                
                if (items[i].adjust_price != 0.000000) {
                    html += '<td><input type="text" class="form-control adjust_price" name="service_item['+items[i].id+'][adjust_price]" value="'+ items[i].adjust_price +'"></td>';
                } else {
                    html += '<td><input type="text" class="form-control adjust_price" name="service_item['+items[i].id+'][adjust_price]"></td>';
                }

                // 申请原因
                var str = '';

                for (var j in apply_reason) {
                    if (j == items[i].apply_reason) {
                        str += '<option value="'+j+'" selected>'+apply_reason[j]+'</option>';
                    } else {
                        str += '<option value="'+j+'">'+apply_reason[j]+'</option>';
                    }      
                }

                html += '<td>\
                            <select class="form-control apply_reason" name="service_item['+items[i].id+'][apply_reason]">\
                                <option value="">请选择</option>\
                                '+str+'\
                            </select>\
                        </td>';

                html += '<td><input type="text" class="form-control remark" name="service_item['+items[i].id+'][remark]" value="'+ items[i].remark +'"></td>';           
                            
                html += '</tr>';
            }

            $('.order-service-table tbody').html(html);

            url   = '/api/ApiOrderServiceEdit';
        }

        layer.open({
            type: type,
            area: area,
            title: title,
            content: content,
            btn: ['确认', '取消'],
            yes: function(index) { 
                if (layEvent == 'edit') {
                    var service_type = $('.service_type').val();
                    var refund_type  = $('.refund_type').val();

                    if (!service_type) {
                        layer.tips('请选择售后类型', $('.service_type'));
                        return false;
                    }

                    if (!refund_type && data.refund_type != 0) {
                        layer.tips('请选择退款方式', $('.refund_type'));
                        return false;
                    }

                    if (refund_type == 2) { // 支付宝
                        var ali_customer_name  = $('.ali_customer_name').val();
                        var ali_refund_account = $('.ali_refund_account').val();

                        if (!ali_customer_name) {
                            layer.tips('请填写客户/公司', $('.ali_customer_name'));
                            return false;
                        }

                        if (!ali_refund_account) {
                            layer.tips('请填写支付账户', $('.ali_refund_account'));
                            return false;
                        }
                    } else if (refund_type == 3) { // 银行
                        var bank_customer_name  = $('.bank_customer_name').val();
                        var bank_refund_account = $('.bank_refund_account').val();
                        var bank_name           = $('.bank_name').val();
                        var bank_sub_name       = $('.bank_sub_name').val();

                        if (!bank_customer_name) {
                            layer.tips('请填写客户/公司', $('.bank_customer_name'));
                            return false;
                        }

                        if (!bank_refund_account) {
                            layer.tips('请填写银行账号', $('.bank_refund_account'));
                            return false;
                        }

                        if (!bank_name) {
                            layer.tips('请填写银行名称', $('.bank_name'));
                            return false;
                        }

                        if (!bank_sub_name) {
                            layer.tips('请填写银行支行', $('.bank_sub_name'));
                            return false;
                        }
                    }

                    var is_all_num_empty   = false; // 校验全部申请数量是否为空
                    var is_all_price_empty = false; // 校验全部单价是否为空
                    var is_all_reason_empty = false; // 校验全部申请原因是否为空
                    var is_all_remark_empty = false; // 校验全部备注是否为空
                    var is_one_empty       = false; // 同一行的售后数量或单价中一个为空

                    $('.order-service-table').find('tbody tr').each(function() {
                        var goods_number = $(this).find('.adjust_number').val();
                        var goods_price  = $(this).find('.adjust_price').val();
                        var apply_reason = $(this).find('.apply_reason').val();
                        var remark       = $(this).find('.remark').val();

                        if (goods_number) is_all_num_empty = true;
                        if (goods_price) is_all_price_empty = true;
                        if (apply_reason) is_all_reason_empty = true;
                        if (remark) is_all_remark_empty = true;

                        // 单行任意一个存在,则该行所有输入框必填
                        if (goods_number || goods_price || apply_reason || remark) {
                            if (!goods_number) {
                                layer.tips('请填写数量', $(this).find('.adjust_number'));
                                is_one_empty = true;
                                return false;
                            }

                            if (!goods_price) {
                                layer.tips('请填写单价', $(this).find('.adjust_price'));
                                is_one_empty = true;
                                return false;
                            }

                            if (!apply_reason) {
                                layer.tips('请选择申请原因', $(this).find('.apply_reason'));
                                is_one_empty = true;
                                return false;
                            }

                            if (!remark) {
                                layer.tips('请填写原因备注', $(this).find('.remark'));
                                is_one_empty = true;
                                return false;
                            }
                        }                       
                    })

                    if (is_one_empty) return false;

                    if (!is_all_num_empty) {
                        layer.msg('请填写申请数量');
                        return false;
                    }

                    if (!is_all_price_empty) {
                        layer.msg('请填写售后单价');
                        return false;
                    }

                    if (!is_all_reason_empty) {
                        layer.msg('请选择申请原因');
                        return false;
                    }

                    if (!is_all_remark_empty) {
                        layer.msg('请填写原因备注');
                        return false;
                    }

                    datax = $('.orderServiceForm').serialize() + '&order_id=' + data.order_id + '&id=' + data.id;

                    $.ajax({
                        url : '/ajax/orderServiceCheck',
                        type: 'post',
                        data: datax,
                        dataType: 'json',
                        success: function (resp) {
                            var data = resp.data;

                            if (refund_type == 1 && !data) { // 退款方式为原路返回,且系统不满足原路返回
                                layer.msg('不满足原路返回条件,请更改退款方式');
                                return false;
                            }

                            if (refund_type != 1 && data) { // 退款方式非原路返回,且系统满足原路返回
                                layer.confirm('此售后单满足系统自动原路返回,是否需要原路返回?', {
                                    title: '导出数据'
                                    ,btn: ['需要', '否,我要手工写单']
                                }, function(){ // 确定
                                    layer.closeAll('dialog'); // 确定时关闭弹框
                                    layer.close(index);    

                                    datax = datax + '&refund_type=1'; // 退款方式更新为原路返回

                                    order_service(datax);
                                }, function() { // 取消
                                    layer.closeAll('dialog'); // 确定时关闭弹框
                                    layer.close(index); 
                                    
                                    order_service(datax);
                                });

                                return false;
                            }

                            layer.close(index); 
                            order_service(datax); // 以上条件不满足时调用
                        },

                        error: function (res) {
                            console.log(res);
                        }
                    })

                    return false;
                }

                $.ajax({
                    url : url,
                    type: 'post',
                    data: datax,
                    dataType: 'json',
                    success: function(resp) {
                        if (resp.errcode == 0) {
                            layer.close(index)
                            layer.msg(resp.errmsg);
                            renderTable(); // 重新加载table
                            $('.search').trigger("click"); // 触发搜索按钮

                            return false;
                        }


                        layer.alert(resp.errmsg);
                    }, 
                    error: function(err) {
                        console.log(err)
                    }
                })

                layer.msg(title+'中...', {icon: 16, time: 0, shade: 0.3}); // 阻止重复提交

                return false;
            },
            cancel: function(index) {
                layer.close(index);
            }
        })
    });   

    function order_service(datax)
    {
        $.ajax({
            url : '/api/ApiOrderServiceEdit',
            type: 'post',
            data: datax,
            dataType: 'json',
            success: function (resp) {
                if(resp.errcode === 0){
                    layer.msg(resp.errmsg || '操作成功');

                    renderTable(); // 重新加载table
                    $('.search').trigger("click"); // 触发搜索按钮
                    return false;
                }
                
                layer.alert(resp.errmsg || '网络异常');
                return false;
            },

            error: function (res) {
                console.log(res);
            }
        })

        layer.msg('编辑中...', {icon: 16, time: 0, shade: 0.3}); // 阻止重复提交
    }

    // 导出
    // $('.export').click(function() {
    //     var account = $('input[name=account]').val(),
    //         goods_name  = $('input[name=goods_name]').val(),
    //         order_sn    = $('input[name=order_sn]').val(),
    //         begin_time  = $('input[name=begin_time]').val(),
    //         end_time    = $('input[name=end_time]').val(),
    //         url         = '/export/selfSampleExport';

    //     if (!account && !goods_name && !order_sn && !begin_time && !end_time) {
    //         layer.msg('请选择筛选条件');
    //         return false;
    //     }

    //     layer.confirm('确定导出数据吗?', {
    //         title: '导出数据'
    //         ,btn: ['确定', '取消']
    //     }, function(){
    //         layer.closeAll('dialog'); // 确定时关闭弹框
            
    //         window.location.href = url+'?account='+account+'&goods_name='+goods_name+'&order_sn='+order_sn+'&begin_time='+begin_time+'&end_time='+end_time;
    //     });
    // }) 


});