$(function () {
    let shippingStatus = getQueryString("shippingStatus");
    let payStatus = getQueryString("payStatus");
    let orderStatus = getQueryString("orderStatus");
    let orderType = getQueryString("orderType");
    let url = '../order/list?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', width: 100},
            {label: '会员', name: 'userName', index: 'user_name', width: 80},
            {
                label: '订单业务类型', name: 'orderBizType', index: 'order_biz_type', 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', width: 80,
                formatter: function (value) {
                    if (value == '0') {
                        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', width: 80,
                formatter: function (value) {
                    if (value == '0') {
                        return '未付款';
                    } else if (value == '1') {
                        return '付款中';
                    } else if (value == '2') {
                        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', width: 60},
            {label: '订单总价', name: 'orderPrice', index: 'order_price', width: 60},
            {
                label: '下单时间', name: 'addTime', index: 'add_time', width: 120,
                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: '发货状态', name: 'shippingStatus', index: 'shipping_status', width: 60,
                formatter: function (value) {
                    if (value == '0') {
                        return '未发货';
                    } else if (value == '1') {
                        return '已发货';
                    } else if (value == '2') {
                        return '已收货';
                    } else if (value == '4') {
                        return '退货';
                    }
                    return value;
                }
            },
            {
                label: '操作', width: 180, sortable: false,
                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;';
                    //订单状态： 0订单创建成功等待付款，　101订单已取消，　102订单已删除，201订单已付款，等待发货，300订单已发货， 301用户确认收货，401 没有发货，退款　402 已收货，退款退货
                    if (hasPermission('order:refund')) {
                        if (row.orderStatus == 300 && (row.orderBizType == '10' || row.orderBizType == '02')) {
                            htmlStr += '<button class="btn btn-outline btn-primary" onclick="vm.printDetail(' + row.id + ')"><i class="fa fa-print"></i>打印</button>&nbsp;';
                        }
                        if (row.orderStatus == 201 || row.orderStatus == 301 || row.orderStatus == 300) {
                            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: []
    },
    methods: {
        query: function () {
            vm.reload(1);
        },
        getMacro: function () {
            $.get("../sys/macro/queryMacrosByValue?value=goodsBizType", function (r) {
                vm.macros = r.list;
            });
        },
        getLogistics: function (event) {
            let id = getSelectedRow();
            if (id == null) {
                return;
            }
            $.get("../order/getLogistics/" + id, function (r) {
                if (r.code != 0) {
                    alert(r.msg);
                    return;
                }
                vm.logisticsInfo = r.result;
                vm.showDiv = 3;
                vm.title = "快递信息";
            });
        },
        getProcess: function (event) {
            let orderSn = getSelectedRowData().orderSn;
            if (orderSn == null) {
                return;
            }
            $.get("../order/getProcess/" + orderSn, function (r) {
                if (r.code != 0) {
                    alert(r.msg);
                    return;
                }
                if (r.orderProcessRecordEntity != null) {
                    vm.orderProcessRecordEntity = r.orderProcessRecordEntity;
                    vm.showDiv = 7;
                } else {
                    alert(orderSn + "暂无清关信息");
                }
            });
        },
        confirm: function (event) {
            let id = getSelectedRow();
            if (id == null) {
                return;
            }
            confirm('确定收货？', function () {
                $.ajax({
                    type: "POST",
                    url: "../order/confirm",
                    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);
                        }
                    }
                });
            });
        },
        openComment: function (event) {
            let id = getSelectedRow();
            if (id == null) {
                return;
            }
            openWindow({
                type: 2,
                title: '评价',
                content: '../shop/comment.html?orderId=' + id
            });
        },
        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/infos/" + rowId, function (r) {
                vm.order = r.order;
                vm.orderGoodsList = r.order.orderGoodsEntityList;
            });
            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) {
                            alert('打印小票完成');
                        }
                    }
                });
            })
        },
        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;
                }
            });
        },
        refundUpdate: 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;
        });
    }
});