import {
    getOrderList,
    orderData,
    orderCancel,
    orderDel,
    orderPay
} from '../../api/order.js';
import {
    getUserInfo
} from '../../api/user.js';
import {
    openOrderSubscribe
} from '../../utils/SubscribeMessage.js';

const app = getApp();

Page({
    /**
     * 页面的初始数据
     */
    data: {
        parameter: {
            'navbar': '1',
            'return': '1',
            'title': '我的订单',
            'color': true,
            'class': '0'
        },
        loading: false, //是否加载中
        loadend: false, //是否加载完毕
        loadTitle: '加载更多', //提示语
        orderList: [], //订单数组
        orderData: {}, //订单详细统计
        orderStatus: 0, //订单状态
        page: 1,
        limit: 10,
        isClose: false,
        payMode: [{
                name: "微信支付",
                icon: "icon-weixinzhifu",
                value: 'weixin',
                title: '微信快捷支付'
            },
            {
                name: "余额支付",
                icon: "icon-yuezhifu",
                value: 'yue',
                title: '可用余额:',
                number: 0
            },
        ],
        pay_close: false,
        pay_order_id: '',
        totalPrice: '0',
    },

    /**
     * 登录回调
     */
    onLoadFun: function () {
        this.getOrderData();
        this.getOrderList();
        this.getUserInfo();
    },

    /**
     * 事件回调
     */
    onChangeFun: function (e) {
        let opt = e.detail;
        let action = opt.action || null;
        let value = opt.value != undefined ? opt.value : null;
        (action && this[action]) && this[action](value);
    },

    /**
     * 获取用户信息
     */
    getUserInfo: function () {
        let that = this;
        getUserInfo().then(res => {
            that.data.payMode[1].number = res.data.now_money;
            that.setData({
                payMode: that.data.payMode
            });
            // app.globalData.unread = res.data.notice
            app.setUnread(res.data.notice)
        });
    },

    /**
     * 关闭支付组件
     */
    pay_close: function () {
        this.setData({
            pay_close: false
        });
    },

    /**
     * 生命周期函数--监听页面加载
     */
    onLoad: function (options) {
        if (options.status) this.setData({
            orderStatus: options.status
        });
        this.setData({
            'parameter.return': options.is_return ? '0' : '1'
        });
    },

    /**
     * 获取订单统计数据
     */
    getOrderData: function () {
        var that = this;
        orderData().then(res => {
            that.setData({
                orderData: res.data
            });
        })
    },

    /**
     * 取消订单
     */
    cancelOrder: function (e) {
        var order_id = e.currentTarget.dataset.order_id;
        var index = e.currentTarget.dataset.index,
            that = this;
        if (!order_id) return app.Tips({
            title: '缺少订单号无法取消订单'
        });
        orderCancel(order_id).then(res => {
            return app.Tips({
                title: res.msg,
                icon: 'success'
            }, function () {
                that.data.orderList.splice(index, 1);
                that.setData({
                    orderList: that.data.orderList,
                    'orderData.unpaid_count': that.data.orderData.unpaid_count - 1
                });
                that.getOrderData();
            });
        }).catch(err => {
            return app.Tips({
                title: err
            });
        });
    },

    /**
     * 打开支付组件
     */
    goPay: function (e) {
        let order_id = e.currentTarget.dataset.order_id,
            pay_price = e.currentTarget.dataset.pay_price;
        this.setData({
            pay_close: true,
            pay_order_id: order_id,
            totalPrice: pay_price
        });
    },

    /**
     * 支付成功回调
     */
    pay_complete: function () {
        this.setData({
            loadend: false,
            page: 1,
            orderList: [],
            pay_close: false,
            pay_order_id: ''
        });
        this.getOrderData();
        this.getOrderList();
    },

    /**
     * 支付失败回调
     */
    pay_fail: function () {
        this.setData({
            pay_close: false,
            pay_order_id: ''
        });
    },

    /**
     * 去订单详情
     */
    goOrderDetails: function (e) {
        var order_id = e.currentTarget.dataset.order_id;
        if (!order_id) return app.Tips({
            title: '缺少订单号无法查看订单详情'
        });
        wx.showLoading({
            title: '正在加载',
        })
        openOrderSubscribe().then(() => {
            wx.hideLoading();
            wx.navigateTo({
                url: '/pages/order_details/index?order_id=' + order_id
            })
        }).catch(() => {
            wx.hideLoading();
        })
    },

    /**
     * 切换类型
     */
    statusClick: function (e) {
        var status = e.currentTarget.dataset.status;
        if (status == this.data.orderStatus) return;
        this.setData({
            orderStatus: status,
            loadend: false,
            page: 1,
            orderList: []
        });
        this.getOrderList();
    },

    /**
     * 获取订单列表
     */
    getOrderList: function () {
        var that = this;
        if (that.data.loadend) return;
        if (that.data.loading) return;
        that.setData({
            loading: true,
            loadTitle: ""
        });
        getOrderList({
            type: that.data.orderStatus,
            page: that.data.page,
            limit: that.data.limit,
        }).then(res => {
            var list = res.data || [];
            var loadend = list.length < that.data.limit;
            that.data.orderList = app.SplitArray(list, that.data.orderList);
            that.setData({
                orderList: that.data.orderList,
                loadend: loadend,
                loading: false,
                loadTitle: loadend ? "我也是有底线的" : '加载更多',
                page: that.data.page + 1,
            });
        }).catch(err => {
            that.setData({
                loading: false,
                loadTitle: "加载更多"
            });
        })
    },

    /**
     * 删除订单
     */
    delOrder: function (e) {
        var order_id = e.currentTarget.dataset.order_id;
        var index = e.currentTarget.dataset.index,
            that = this;
        orderDel(order_id).then(res => {
            that.data.orderList.splice(index, 1);
            that.setData({
                orderList: that.data.orderList,
                'orderData.unpaid_count': that.data.orderData.unpaid_count - 1
            });
            that.getOrderData();
            return app.Tips({
                title: '删除成功',
                icon: 'success'
            });
        }).catch(err => {
            return app.Tips({
                title: err
            });
        })
    },
    
    /**
     * 生命周期函数--监听页面初次渲染完成
     */
    onReady: function () {

    },

    /**
     * 生命周期函数--监听页面显示
     */
    onShow: function () {
        if (app.globalData.isLog && this.data.isClose) {
            this.getOrderData();
            this.setData({
                loadend: false,
                page: 1,
                orderList: []
            });
            this.getOrderList();
        }
    },

    /**
     * 生命周期函数--监听页面隐藏
     */
    onHide: function () {
        this.setData({
            isClose: true
        });
    },

    /**
     * 生命周期函数--监听页面卸载
     */
    onUnload: function () {

    },

    /**
     * 页面相关事件处理函数--监听用户下拉动作
     */
    onPullDownRefresh: function () {

    },

    /**
     * 页面上拉触底事件的处理函数
     */
    onReachBottom: function () {
        this.getOrderList();
    },
})