$(function () {
    let shippingStatus = getQueryString("shippingStatus");
    let payStatus = getQueryString("payStatus");
    let orderStatus = getQueryString("orderStatus");
    let orderType = getQueryString("orderType");
    let url = '../order/offilineOrderList?1';
    if (shippingStatus) {
        url += '&shippingStatus=' + shippingStatus;
    }
    if (payStatus) {
        url += '&payStatus=' + payStatus;
    }
    if (orderStatus) {
        url += '&orderStatus=' + orderStatus;
    }
    if (orderType) {
        url += '&orderType=' + orderType;
    }
    $("#jqGrid").jqGrid({
        url: url,
        datatype: "json",
        colModel: [
            {label: 'id', name: 'id', index: 'id', key: true, hidden: true},
            {label: '订单号', name: 'orderSn', index: 'order_sn', align: 'center',width: 100},
            {label: '操作店员', name: 'userName', index: 'user_name', align: 'center',width: 80},
            {
                label: '购买类型', name: 'isOnfflineOrder', index: 'is_onffline_order', align: 'center',width: 80,
                formatter: function (value) {
                    if (value == '0') {
                        return '线上购买';
                    } else if (value == '1') {
                        return '线下购买';
                    }
                    return '-';
                }
            },
            {
                label: '订单业务类型', name: 'orderBizType', index: 'order_biz_type', align: 'center',width: 80,
                formatter: function (value) {
                    if (value == '00') {
                        return '保税备货';
                    } else if (value == '02') {
                        return '保税展示补货';
                    } else if (value == '10') {
                        return '保税展示跨境';
                    } else if (value == '11') {
                        return '普通货物';
                    }
                    return '-';
                }
            },
            {
                label: '订单状态', name: 'orderStatus', index: 'order_status', align: 'center',width: 80,
                formatter: function (value) {
                    if (value == '0') {
                        return '订单创建成功等待付款';
                    } else if (value == '100') {
                        return '订单付款中';
                    } else if (value == '101') {
                        return '订单已取消';
                    } else if (value == '102') {
                        return '订单已删除';
                    } else if (value == '201') {
                        return '订单已付款';
                    } else if (value == '300') {
                        return '订单已发货';
                    } else if (value == '301') {
                        return '用户确认收货';
                    } else if (value == '401') {
                        return '没有发货，退款';
                    } else if (value == '402') {
                        return '已收货，退款退货';
                    }
                    return value;
                }
            },
            {
                label: '付款状态', name: 'payStatus', index: 'pay_status', align: 'center',width: 80,
                formatter: function (value) {
                    if (value == '0') {
                        return '未付款';
                    } else if (value == '1') {
                        return '付款中';
                    } else if (value == '2') {
                        return '已付款';
                    } else if (value == '3') {
                        return '退款中';
                    } else if (value == '4') {
                        return '退款';
                    }
                    return value;
                }
            },
            // {label: '收货人', name: 'consignee', index: 'consignee', width: 80},
            // {label: '收货地址', name: 'address', index: 'address', width: 80},
            // {label: '联系电话', name: 'mobile', index: 'mobile', width: 80},
            {label: '实际支付', name: 'actualPrice', index: 'actual_price', align: 'center',width: 60},
            {label: '订单总价', name: 'orderPrice', index: 'order_price',align: 'center', width: 60},
            {
                label: '下单时间', name: 'addTime', index: 'add_time', width: 120,align: 'center',
                formatter: function (value) {
                    return transDate(value, 'yyyy-MM-dd hh:mm:ss');
                }
            },
            {
                label: '付款时间', name: 'payTime', index: 'pay_time', width: 120, align: 'center',
                formatter: function (value) {
                    return transDate(value, 'yyyy-MM-dd hh:mm:ss');
                }
            },
            // {label: '快递公司', name: 'shippingName', index: 'shipping_name', width: 80},
            // {label: '配送单号', name: 'shippingNo', index: 'shipping_No', width: 80},
            // {label: '快递费用', name: 'shippingFee', index: 'shipping_fee', width: 80},
            {
                label: '操作', width: 180, sortable: false,align: 'center',
                formatter: function (value, col, row) {
                    let htmlStr = '<button class="btn btn-outline btn-info" onclick="vm.lookDetail(' + row.id + ')"><i class="fa fa-info-circle"></i>详情</button>&nbsp;';
                    if (row.orderStatus == 201 && (row.orderBizType == '11')) {
                        htmlStr += '<button class="btn btn-outline btn-primary" onclick="vm.printDetail(' + row.id + ')"><i class="fa fa-print"></i>打印</button>&nbsp;';
                    }
                    if (row.orderStatus == 0) {
                        htmlStr += '<button class="btn btn-outline btn-danger" onclick="vm.cancelUpdate(' + row.id + ')"><i class="fa fa-times-circle-o"></i>&nbsp;取消</button>&nbsp;';
                    }
                    if (row.orderStatus == 201) {
                        htmlStr += '<button class="btn btn-outline btn-danger" onclick="vm.refundUpdate(' + row.id + ')"><i class="fa fa-times-circle-o"></i>&nbsp;退款</button>&nbsp;';
                    }

                    return htmlStr;
                }
            }
        ],
        viewrecords: true,
        height: 675,
        rowNum: 10,
        rowList: [10, 30, 50],
        rownumbers: true,
        rownumWidth: 25,
        autowidth: true,
        multiselect: true,
        pager: "#jqGridPager",
        jsonReader: {
            root: "page.list",
            page: "page.currPage",
            total: "page.totalPage",
            records: "page.totalCount"
        },
        prmNames: {
            page: "page",
            rows: "limit",
            order: "order"
        },
        gridComplete: function () {
            $("#jqGrid").closest(".ui-jqgrid-bdiv").css({"overflow-x": "hidden"});
        }
    });
});

let vm = new Vue({
    el: '#rrapp',
    data: {
        showDiv: 1, // 1查询 2编辑 3发货 4选择骑手 5退款
        title: null,
        order: {},
        shippings: [],
        q: {
            orderSn: '',
            orderStatus: '',
            orderType: ''
        },
        refundMoney: 0,
        shipping: {},
        logisticsInfo: {
            tracesList: [],
            logisticCode: '',
            shipperCode: ''
        },
        macros: [],
        orderProcessRecordEntity: {},
        orderGoodsList: [],
        payRecordList:[]
    },
    methods: {
        query: function () {
            vm.reload(1);
        },
        getMacro: function () {
            $.get("../sys/macro/queryMacrosByValue?value=goodsBizType", function (r) {
                vm.macros = r.list;
            });
        },
        shippingChange: function (opt) {
            vm.order.shippingName = opt.label;
            vm.order.shippingCode = opt.value;
        },
        saveOrUpdate: function (event) {
            $.ajax({
                type: "POST",
                url: '../order/sendGoods',
                contentType: "application/json",
                data: JSON.stringify(vm.order),
                success: function (r) {
                    if (r.code === 0) {
                        alert('操作成功', function (index) {
                            vm.reload();
                        });
                    } else {
                        alert(r.msg);
                    }
                }
            });
        },
        reload: function (event) {
            vm.showDiv = 1;
            let page = event;
            if (event != 1) {
                page = $("#jqGrid").jqGrid('getGridParam', 'page');
            }
            $("#jqGrid").jqGrid('setGridParam', {
                postData: {
                    'orderSn': vm.q.orderSn,
                    'orderStatus': vm.q.orderStatus,
                    'orderType': vm.q.orderType
                },
                page: page
            }).trigger("reloadGrid");
        },
        reloadSearch: function () {
            vm.q = {
                orderSn: '',
                orderStatus: '',
                orderType: ''
            };
        },
        lookDetail: function (rowId) { //第三步：定义编辑操作
            vm.showDiv = 2;
            vm.title = "订单详情";
            $.get("../order/offlineInfos/" + rowId, function (r) {
                vm.order = r.order;
                vm.orderGoodsList = r.order.orderGoodsEntityList;
                vm.payRecordList = r.order.payRecordList;
            });
            vm.getMacro();
        },
        printDetail: function (rowId) {
            confirm('确定连接打票机打印出票？', function () {
                $.ajax({
                    type: "POST",
                    url: "../order/printMsg",
                    contentType: "application/json",
                    data: JSON.stringify(rowId),
                    success: function (r) {
                        if (r.ticket != null) {
                            // printArea(r.ticket);
                            var content = getPrintContent(r.ticket);
                            printArea(content);
                            alert('打印小票完成');
                        }else{
                            alert("打印小票失败");
                        }
                    }
                });
            })
        },
        confirm: function (event) {
            let id = getSelectedRow();
            if (id == null) {
                return;
            }
            var rowData = $("#jqGrid").jqGrid('getRowData', id);
            if(rowData.orderStatus == '订单已付款'){
                alert('该订单已支付');
            }else if(rowData.orderStatus == '订单已取消'){
                alert('该订单已取消');
            }else if(rowData.orderStatus == '订单已删除'){
                alert('该订单已删除');
            }else {
                confirm('确定付款？', function () {
                    $.ajax({
                        type: "POST",
                        url: "../order/confirmPay",
                        contentType: "application/json",
                        data: JSON.stringify(id),
                        dataType: "json",
                        success: function (r) {

                            if (r.code == 0) {
                                alert('操作成功', function (index) {
                                    $("#jqGrid").trigger("reloadGrid");
                                });
                            } else {
                                alert(r.msg);
                            }
                        }
                    });
                });
            }
        },
        showInputAuthCode: function (event) {
            let id = getSelectedRow();
            if (id == null) {
                return;
            }
            var rowData = $("#jqGrid").jqGrid('getRowData', id);
            if(rowData.orderStatus == '订单已付款'){
                alert('该订单已支付');
            }else if(rowData.orderStatus == '订单已取消'){
                alert('该订单已取消');
            }else if(rowData.orderStatus == '订单已删除'){
                alert('该订单已删除');
            }else{
                var layer_index = layer.prompt({title: '请输入微信付款码',
                    formType: 3,   //隐藏用户输入内容
                    // 这个是确定按钮的事件
                    "success":function(layero,index){
                        // 键盘事件，判断回车
                        $("input.layui-layer-input").on('keydown',function(e){
                            if (e.which == 13) {
                                var authCode = $(this).val();
                                if (authCode == null || authCode == "") {
                                    iview.Message.error("请输入微信付款码");
                                    return;
                                }

                                layer.close(layer_index);
                                var msg_index = layer.msg('支付中', {
                                    icon: 16
                                    ,shade: 0.01
                                });
                                wxPay(authCode,id,msg_index);
                            }
                        });
                    },
                    // 点击确定按钮事件
                    yes : function(index,layero){
                        // 取输入框数据
                        var authCode =$(document.getElementsByClassName('layui-layer-input')[0]).val();
                        if (authCode == null || authCode == "") {
                            iview.Message.error("请输入微信付款码");
                            return;
                        }

                        layer.close(layer_index);
                        var msg_index = layer.msg('支付中', {
                            icon: 16,
                            shade: 0.01
                        });
                        wxPay(authCode,id,msg_index);
                    }
                });
            }

            // layer.prompt({title: '请输入微信付款码', formType: 3}, function(pass, index){
            //     var authCode= pass;
            //     if (authCode == null || authCode == "") {
            //         iview.Message.error("请输入微信付款码");
            //         return;
            //     }
            //
            //     $.ajax({
            //         type: "POST",
            //         url: '../order/wxMicropayPay',
            //         data: {auth_code: authCode, id: id},
            //         success: function (r) {
            //             if (r.code === 0) {
            //                 alert('支付成功', function (index) {
            //                     vm.reload();
            //                 });
            //             } else {
            //                 alert(r.msg);
            //             }
            //         }
            //     });
            //
            //     layer.close(index);
            // });
        },
        refundUpdate: function (rowId) {
            let params = {};
            params.orderId = rowId;

            $.ajax({
                type: "POST",
                url: '../order/offilineRefund',
                data: params,
                success: function (r) {
                    if (r.code === 0) {
                        alert('退款成功', function (index) {
                            vm.reload();
                        });
                    } else {
                        alert(r.msg);
                    }
                }
            });
        },
        shippingBind: function (event) {
            let orderId = vm.order.id;
            $.ajax({
                type: "POST",
                url: '../order/shippingBind',
                data: {orderId: orderId, shippingCode: vm.shipping},
                success: function (r) {
                    if (r.code === 0) {
                        alert('操作成功', function (index) {
                            vm.reload();
                        });
                    } else {
                        alert(r.msg);
                    }
                }
            });
        },
        refund: function (rowId) {
            vm.showDiv = 5;
            vm.refundMoney = 0;
            Ajax.request({
                url: "../order/info/" + rowId,
                async: true,
                successCallback: function (r) {
                    vm.order = r.order;
                    vm.refundMoney = r.order.actualPrice;
                }
            });
        },
        cancelUpdate: function (rowId) {
            let params = {};
            params.orderId = rowId;

            $.ajax({
                type: "POST",
                url: '../order/cancel',
                data: params,
                success: function (r) {
                    if (r.code === 0) {
                        alert('取消成功', function (index) {
                            vm.reload();
                        });
                    } else {
                        alert(r.msg);
                    }
                }
            });
        }
    },
    created: function () {
        $.get("../shipping/queryAll", function (r) {
            vm.shippings = r.list;
        });
    }
});
    function getPrintContent(ticket) {
        var content = "<div style=\"width: 250px;font-family: 微软雅黑;font-size: 8px;\">";
        //小票头
        content += "<div style=\"text-align: center;width: 100%;font-weight:bold;font-size: 13px;\">";
        content += ticket.ticketHead.title;
        content += "</div>";
        // content += "<div style=\"width: 100%;\">";
        // content += "会员:" + ticket.ticketHead.memberId;
        // content += "</div>";
        content += "<div style=\"width: 100%;\">";
        content += "订单号:" + ticket.ticketHead.orderId;
        content += "</div>";
        content += "<div style=\"width: 100%;\">";
        content += "交易时间:" + ticket.ticketHead.tradeTime;
        content += "</div>";
        content += "<div style=\"width: 100%;overflow:hidden;white-space: nowrap;\">--------------------------------------------------</div>";
        //商品信息
        content += "<table style=\"width: 100%;\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\">";
        content += "<tr>";
        content += "<td style=\"width: 50%;text-align: left;font-size: 10px;font-weight: bold;\">商品名称</td>";
        content += "<td style=\"width: 17%;text-align: right;font-size: 10px;font-weight: bold;\">单价</td>";
        content += "<td style=\"width: 15%;text-align: right;font-size: 10px;font-weight: bold;\">数量</td>";
        content += "<td style=\"width: 18%;text-align: right;font-size: 10px;font-weight: bold;\">小计</td>";
        content += "</tr>";
        content += "</table>";
        content += "<div style=\"width: 100%;overflow:hidden;white-space: nowrap;\">--------------------------------------------------</div>";
        content += "<table style=\"width: 100%;\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\">";
        for (var i=0;i< ticket.goods.length;i++){
            content += "<tr>";
            content += "<td style=\"width: 50%;text-align: left;font-size: 8px;padding-top: 8px;\">";
            content += "<table style=\"width: 100%;\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\">";
            content += "<tr>";
            content += "<td style=\"text-align: left;font-size: 8px;vertical-align:top;\">#</td>";
            content += "<td style=\"text-align: left;font-size: 8px;\">" + ticket.goods[i].gname + "</td>";
            content += "</tr>";
            content += "</table>";
            content += "</td>";
            content += "<td style=\"width: 17%;text-align: right;font-size: 8px;vertical-align:bottom;padding-top: 8px;\">" + ticket.goods[i].uprice + "</td>";
            content += "<td style=\"width: 15%;text-align: right;font-size: 8px;vertical-align:bottom;padding-top: 8px;\">" + ticket.goods[i].num + "</td>";
            content += "<td style=\"width: 18%;text-align: right;font-size: 8px;vertical-align:bottom;padding-top: 8px;\">" + ticket.goods[i].subtotal + "元</td>";
            content += "</tr>";

        }
        content += "</table>";
        content += "<div style=\"width: 100%;overflow:hidden;white-space: nowrap;\">--------------------------------------------------</div>";
        //收银信息
        content += "<div style=\"width: 100%;\">";
        content += "<span style=\"float: left;width: 50%;text-align: left;\">商品合计:</span>";
        content += "<span style=\"float: left;width: 17%;text-align: left;\">" + ticket.cashInfo.goodsTotal + "件</span>";
        content += "<span style=\"float: right;width: 33%;text-align: right;\">" + ticket.cashInfo.total + "元</span>";
        content += "</div>";
        content += "<div style=\"width: 100%;\">";
        content += "<span style=\"float: left;width: 50%;text-align: left;\">实收:</span>";
        content += "<span style=\"float: right;width: 50%;text-align: right;\">" + ticket.cashInfo.receipts + "元</span>";
        content += "</div>";
        content += "<div style=\"width: 100%;\">";
        content += "<span style=\"float: left;width: 50%;text-align: left;\">找零:</span>";
        content += "<span style=\"float: right;width: 50%;text-align: right;\">" + ticket.cashInfo.oddChange + "元</span>";
        content += "</div>";
        content += "<div style=\"width: 100%;\">";
        content += "<span style=\"float: left;width: 50%;text-align: left;\">优惠券:</span>";
        content += "<span style=\"float: right;width: 50%;text-align: right;\">" + ticket.cashInfo.coupon + "元</span>";
        content += "</div>";
        content += "<div style=\"width: 100%;\">";
        content += "<span style=\"float: left;width: 50%;text-align: left;\">运费:</span>";
        content += "<span style=\"float: right;width: 50%;text-align: right;\">" + ticket.cashInfo.freight + "元</span>";
        content += "</div>";
        content += "<div style=\"width: 100%;\">";
        content += "<span style=\"float: left;width: 50%;text-align: left;\">支付渠道:</span>";
        content += "<span style=\"float: right;width: 50%;text-align: right;\">" + ticket.cashInfo.paymentMode + "</span>";
        content += "</div>";
        content += "<div style=\"width: 100%;overflow:hidden;white-space: nowrap;\">--------------------------------------------------</div>";
        //海关清单信息
        content += "<div style=\"width: 100%;\">";
        content += "订单号:" + ticket.cusListing.orderId;
        content += "</div>";
        // content += "<div style=\"width: 100%;\">";
        // content += "始发地:" + ticket.cusListing.originAddress;
        // content += "</div>";
        // content += "<div style=\"width: 100%;\">";
        // content += "交货地:" + ticket.cusListing.deliveryAddress;
        // content += "</div>";
        content += "<div style=\"width: 100%;overflow:hidden;white-space: nowrap;\">--------------------------------------------------</div>";
        content += "<div style=\"width: 100%;\">";
        content += ticket.ticketFoot.summary;
        content += "</div>";
        content += "<div style=\"width: 100%;\">";
        content += "客服电话:" + ticket.ticketFoot.serviceTel;
        content += "</div>";
        content += "<div style=\"width: 100%;\">";
        content += "网址:" + ticket.ticketFoot.url1;
        content += "</div>";
        content += "<div style=\"width: 100%;\">";
        content += ticket.ticketFoot.welcome;
        content += "</div>";
        return content;
    }

    function wxPay(authCode,id,msg_index){
        $.ajax({
            type: "POST",
            url: '../order/wxMicropayPay',
            data: {auth_code: authCode, id: id},
            success: function (r) {
                layer.close(msg_index);
                if (r.code === 0) {
                    alert('支付成功', function (index) {
                        vm.reload();
                    });
                } else {
                    alert(r.msg);
                }
            }
        });
    }

    var printAreaCount = 0;
    function printArea(content) {
        var idPrefix = "printArea_";
        removePrintArea(idPrefix + printAreaCount);
        printAreaCount++;
        var iframeId = idPrefix + printAreaCount;
        var iframeStyle = 'position:absolute;width:0px;height:0px;left:-500px;top:-500px;';
        iframe = document.createElement('IFRAME');
        $(iframe).attr({
            style: iframeStyle,
            id: iframeId
        });
        document.body.appendChild(iframe);
        var doc = iframe.contentWindow.document;
        doc.open();
        //$(document).find("link").filter(function () {
            //return $(this).attr("rel").toLowerCase() == "stylesheet";
        //}).each(
            //function () {
                //doc.write('<link type="text/css" rel="stylesheet" href="'
                    //+ $(this).attr("href") + '" >');
            //});
        doc.write('<div class="">' + content
            + '</div>');
        doc.close();
        var frameWindow = iframe.contentWindow;
        frameWindow.close();
        frameWindow.focus();
        frameWindow.print();
    }
    var removePrintArea = function (id) {
        $("iframe#" + id).remove();
    };