// pages/mine/product/coupon/addcoupon.js
const app = getApp()
Page({

    /**
     * 页面的初始数据
     */
    data: {
        typeList: [{
            id: '1',
            name: '无门槛',
            isInput: false,
            isSel: true,
            value: '',
            pValue: '0',
            key: 'type1'
        }, {
            id: '2',
            name: '订单满',
            isInput: true,
            isSel: false,
            pValue: '1',
            value: '',
            key: 'type2'
        }], //使用门槛
        scopeList: [{
            id: '1',
            name: '全部商品',
            isSel: true,
            pValue: '0',
            isShowBtn: false,
        }, {
            id: '2',
            name: '指定商品',
            isSel: false,
            pValue: '1',
            isShowBtn: true,
        }],
        dueTimeList: [{
            id: '1',
            name: '',
            startDate: '',
            endDate: '',
            type: 'picker',
            isSel: true,
            pValue: '0',
            key: 'dueTime1',
            value: ''
        }, {
            id: '2',
            name: '领取当日开始',
            startDate: '',
            endDate: '',
            type: 'input',
            pValue: '1',
            isSel: false,
            key: 'dueTime2',
            value: ''
        }, {
            id: '3',
            name: '领取次日开始',
            startDate: '',
            endDate: '',
            pValue: '2',
            type: 'input',
            isSel: false,
            key: 'dueTime3',
            value: ''
        }], //有效期
        rankList: [{
            id: '1',
            name: '不限',
            isSel: true,
            pValue: '0',
            hint: ''
        }, {
            id: '2',
            name: '仅注册用户可领取',
            isSel: false,
            hint: '',
            pValue: '1',
        }, {
            id: '3',
            name: '仅新客可领取',
            isSel: false,
            hint: '该限制仅在客户主动领取优惠券时生效',
            pValue: '2',
        }], //身份限制
        astrictList: [{
            id: '1',
            name: '不限',
            isInput: false,
            isSel: true,
            value: '',
            key: 'type3',
            pValue: '0',
        }, {
            id: '2',
            name: '每人限领',
            isInput: true,
            isSel: false,
            value: '',
            pValue: '1',
            key: 'type4'
        }], //领取限制
        showTemplete: {
            name: '商品详情页可领取优惠券',
            isSel: false
        },
        shareBean: {
            name: '优惠券允许分享给好友领取',
            isSel: false
        },
        startDate: '请选择',
        endDate: '请选择',
        couponName: '', //优惠券名称
        couponCount: '', //优惠券张数
        price: '',
        summary: '', //使用说明
        isShowGoods: false, //是否显示添加的商品
        goodsList: [], //选中的商品
        shopId: '', //商店ID
        baseImageUrl: app.urls.baseImgUrl,
        couponId: '',
    },

    /**
     * 生命周期函数--监听页面加载
     */
    onLoad: function (options) {
        this.setData({
            couponId: options.id,
            shopId: options.shopId
        })
        //获取详情
        this.getDetail()
    },
    //获取详情
    getDetail() {
        wx.showLoading({
            title: '加载中...',
        })
        var _self = this
        app.http.get(app.urls.getCouponDetail.format({
                couponId: _self.data.couponId
            }), {
                header: {
                    token: app.globalData.token
                }
            })
            .then(res => {
                _self.buildDetailData(res.data)
            })
            .catch(err => {
                wx.hideLoading({})
            })
    },
    //回显数据
    buildDetailData(data) {
        var _self = this
        _self.setData({
            couponName: data.couponName,
            couponCount: data.distributionVolume,
            price: data.amount,
            summary: data.useExplain
        })
        //分享设置
        if (data.share != '') {
            _self.data.shareBean.isSel = true
            _self.setData({
                shareBean: _self.data.shareBean
            })
        }
        //领取展示
        if (data.getShow != '') {
            _self.data.showTemplete.isSel = true
            _self.setData({
                showTemplete: _self.data.showTemplete
            })
        }
        //使用门槛
        if (data.useType == '1') {
            _self.data.typeList[0].isSel = false
            _self.data.typeList[1].isSel = true
            _self.data.typeList[1].value = data.useAmount
            _self.setData({
                typeList: _self.data.typeList,
            })
        }
        //可用商品
        if (data.useCommodity == '1') {
            _self.data.scopeList[0].isSel = false
            _self.data.scopeList[1].isSel = true
            _self.setData({
                scopeList: _self.data.scopeList,
                goodsList: data.shopGoodsDTOList,
                isShowGoods: true
            })
        }
        //有效期
        switch (data.expiringDate) {
            case 0:
                _self.data.dueTimeList[0].isSel = true
                _self.data.dueTimeList[1].isSel = false
                _self.data.dueTimeList[2].isSel = false
                _self.data.dueTimeList[0].startDate = data.startDate
                _self.data.dueTimeList[0].endDate = data.endDate
                break
            case 1:
                _self.data.dueTimeList[0].isSel = false
                _self.data.dueTimeList[1].isSel = true
                _self.data.dueTimeList[2].isSel = false
                _self.data.dueTimeList[1].endDate = data.expiringDays
                break
            case 2:
                _self.data.dueTimeList[0].isSel = false
                _self.data.dueTimeList[1].isSel = false
                _self.data.dueTimeList[2].isSel = true
                _self.data.dueTimeList[2].endDate = data.expiringDays
                break
        }
        _self.setData({
            dueTimeList: _self.data.dueTimeList,
            startDate: data.startDate == '' ? '请选择' : data.startDate,
            endDate: data.endDate == '' ? '请选择' : data.endDate
        })
        //身份限制
        switch (data.identityRestrictions) {
            case 0:
                _self.data.rankList['0'].isSel = true
                _self.data.rankList['1'].isSel = false
                _self.data.rankList['2'].isSel = false
                break
            case 1:
                _self.data.rankList['0'].isSel = false
                _self.data.rankList['1'].isSel = true
                _self.data.rankList['2'].isSel = false
                break
            case 2:
                _self.data.rankList['0'].isSel = false
                _self.data.rankList['1'].isSel = false
                _self.data.rankList['2'].isSel = true
                break
        }
        _self.setData({
            rankList: _self.data.rankList
        })
        //每人限领
        if (data.quota == '1') {
            // quotaEveryone
            _self.data.astrictList[1].value = data.quotaEveryone
            _self.data.astrictList[1].isSel = true
            _self.data.astrictList[0].isSel = false
            _self.setData({
                astrictList: _self.data.astrictList
            })
        }
        wx.hideLoading({})
    },
    //使用门槛
    doSelType(e) {
        var item = e.currentTarget.dataset.item
        var _self = this
        _self.data.typeList.forEach(it => {
            if (it.id == item.id) {
                it.isSel = true
            } else {
                it.isSel = false
            }
        })
        _self.setData({
            typeList: _self.data.typeList
        })
    },
    //可用商品
    doSelScope(e) {
        var item = e.currentTarget.dataset.item
        var _self = this
        _self.data.scopeList.forEach(it => {
            if (it.id == item.id) {
                it.isSel = true
                if (it.id == '2') {
                    _self.setData({
                        isShowGoods: true
                    })
                } else {
                    _self.setData({
                        isShowGoods: false
                    })
                }
            } else {
                it.isSel = false
            }
        })
        _self.setData({
            scopeList: _self.data.scopeList
        })
    },
    //有效期
    doSelDueTime(e) {
        var item = e.currentTarget.dataset.item
        // dueTimeList
        var item = e.currentTarget.dataset.item
        var _self = this
        _self.data.dueTimeList.forEach(it => {
            if (it.id == item.id) {
                it.isSel = true
            } else {
                it.isSel = false
            }
        })
        _self.setData({
            dueTimeList: _self.data.dueTimeList
        })
    },
    //日期选择
    dateChange(e) {
        var _self = this
        var model = e.currentTarget.dataset.model
        var value = e.detail.value
        _self.data.dueTimeList.forEach(it => {
            if (it.id == '1') {
                it[model] = value
                _self.setData({
                    [model]: value
                })
            }
        })
        _self.setData({
            dueTimeList: _self.data.dueTimeList
        })
        console.log(e)
    },
    //身份限制
    doSelRank(e) {
        var item = e.currentTarget.dataset.item
        var _self = this
        _self.data.rankList.forEach(it => {
            if (it.id == item.id) {
                it.isSel = true
            } else {
                it.isSel = false
            }
        })
        _self.setData({
            rankList: _self.data.rankList
        })
    },
    //领取展示
    doSelShow() {
        var _self = this
        _self.data.showTemplete.isSel = !_self.data.showTemplete.isSel
        _self.setData({
            showTemplete: _self.data.showTemplete
        })
    },
    doShare() {
        var _self = this
        _self.data.shareBean.isSel = !_self.data.shareBean.isSel
        _self.setData({
            shareBean: _self.data.shareBean
        })
    },
    //使用条件
    doSelCon(e) {
        var item = e.currentTarget.dataset.item
        var _self = this
        _self.data.astrictList.forEach(it => {
            if (it.id == item.id) {
                it.isSel = true
            } else {
                it.isSel = false
            }
        })
        _self.setData({
            astrictList: _self.data.astrictList
        })
    },
    //使用说明输入
    textareaBInput(e) {
        this.setData({
            summary: e.detail.value
        })
    },
    inputWatch(e) {
        var model = e.currentTarget.dataset.model
        var value = e.detail.value
        var _self = this
        switch (model) {
            case 'type2': //使用门槛
                _self.data.typeList.forEach(it => {
                    if (it.key == model) {
                        it.value = value
                    }
                })
                _self.setData({
                    typeList: _self.data.typeList
                })
                break
            case 'dueTime2': //有效期
            case 'dueTime3':
                _self.data.dueTimeList.forEach(it => {
                    if (it.key == model) {
                        it.endDate = value
                    }
                })
                _self.setData({
                    dueTimeList: _self.data.dueTimeList
                })
                break
            case 'type4': //每人限领
                _self.data.astrictList.forEach(it => {
                    if (it.key == model) {
                        it.value = value
                    }
                })
                _self.setData({
                    astrictList: _self.data.astrictList
                })
                break
            default:
                _self.setData({
                    [model]: value
                })
                break
        }
    },
    //选择商品
    addGoods() {
        var _self = this
        _self.data.scopeList.forEach(it => {
            if (it.id == '2') {
                it.isSel = true
            } else {
                it.isSel = false
            }
        })
        _self.setData({
            scopeList: _self.data.scopeList,
            isShowGoods: true
        })
        wx.navigateTo({
            url: '/pages/mine/product/coupon/choosegoods?shopId=' + this.data.shopId,
        })
    },
    //删除商品
    delGoods(e) {
        console.log(e)
        var item = e.currentTarget.dataset.item
        var index = e.currentTarget.dataset.index
        var _self = this
        wx.showModal({
            title: '警告',
            content: '确认要删除该商品吗?',
            success(res) {
                if (res.confirm) {
                    //去除
                    _self.data.goodsList.splice(index, 1)
                    _self.setData({
                        goodsList: _self.data.goodsList
                    })
                }
            }
        })
    },
    //校验参数
    checkParams() {
        var _self = this
        if (_self.data.couponName == '') {
            wx.showToast({
                title: '请输入卷名称',
                icon: 'error'
            })
            return false
        }
        if (_self.data.price == 0) {
            wx.showToast({
                title: '请输入优惠金额',
                icon: 'error'
            })
            return false
        }
        var type = true
        _self.data.typeList.forEach(it => {
            if (it.isSel) {
                if (it.id == '2') {
                    if (it.value == '') {
                        wx.showToast({
                            title: '请输入使用门槛',
                            icon: 'error'
                        })
                        type = false
                    }
                }
            }
        })
        if (!type) {
            return false
        }
        var scope = true
        _self.data.scopeList.forEach(it => {
            if (it.id == '2' && it.isSel) {
                if (_self.data.goodsList.length <= 0) {
                    wx.showToast({
                        title: '请选择适用商品',
                        icon: 'error'
                    })
                    scope = false
                }
            }
        })
        if (!scope) {
            return false
        }
        if (_self.data.couponCount == '') {
            wx.showToast({
                title: '请输入发行张数',
                icon: 'error'
            })
            return false
        }
        var due = true
        _self.data.dueTimeList.forEach(it => {
            if (it.isSel) {
                console.log('有效期')
                if (it.id == '1') {
                    console.log('有效期选中')
                    //选择开始
                    if (_self.data.startDate == '请选择') {
                        console.log('未输入开始时间')
                        wx.showToast({
                            title: '请选择开始日期',
                            icon: 'error'
                        })
                        due = false
                    }
                    if (_self.data.endDate == '请选择') {
                        wx.showToast({
                            title: '请选择结束日期',
                            icon: 'error'
                        })
                        due = false
                    }
                } else {
                    if (it.endDate == '') {
                        wx.showToast({
                            title: '请输入使用期限',
                            icon: 'error'
                        })
                        due = false
                    }
                }
            }
        })
        if (!due) {
            return due
        }
        var astrict = true
        _self.data.astrictList.forEach(it => {
            if (it.id == '2' && it.isSel) {
                if (it.value == '') {
                    wx.showToast({
                        title: '请输入每人限领',
                        icon: 'error'
                    })
                    astrict = false
                }
            }
        })
        if (!astrict) {
            return false
        }
        return true
    },
    buildParams() {
        var params = {}
        var _self = this
        params['shopId'] = _self.data.shopId //店铺ID
        params['couponName'] = _self.data.couponName //名称
        params['amount'] = _self.data.price //优惠金额
        _self.data.typeList.forEach(it => {
            if (it.isSel) {
                if (it.id == '2') {
                    //输入
                    params['useType'] = it.pValue
                    params['useAmount'] = it.value
                } else {
                    params['useType'] = it.pValue
                }
            }
        })

        _self.data.scopeList.forEach(it => {
            if (it.isSel) {
                if (it.id == '2') {
                    //指定商品
                    params['useCommodity'] = it.pValue
                    var ids = []
                    _self.data.goodsList.forEach(ii => {
                        var item = {
                            shopgoodId: ii.goodsId
                        }
                        ids.push(item)
                    })
                    params['shopgoodVOList'] = ids
                } else {
                    //全部商品
                    params['useCommodity'] = it.pValue
                }
            }
        })
        params['distributionVolume'] = _self.data.couponCount //发放数量
        //有效期
        _self.data.dueTimeList.forEach(it => {
            if (it.isSel) {
                if (it.id == '1') {
                    //时间范围
                    params['expiringDate'] = it.pValue
                    params['startDate'] = it.startDate
                    params['endDate'] = it.endDate
                } else {
                    //次日开始
                    params['expiringDays'] = it.endDate
                    params['expiringDate'] = it.pValue
                }
            }
        })
        //身份限制
        _self.data.rankList.forEach(it => {
            if (it.isSel) {
                params['identityRestrictions'] = it.pValue
            }
        })
        //使用条件
        _self.data.astrictList.forEach(it => {
            if (it.isSel) {
                if (it.isSel) {
                    // 次数
                    params['quota'] = it.pValue
                    params['quotaEveryone'] = it.value
                } else {
                    // 不限 
                    params['quota'] = it.pValue
                }
            }
        })
        //领取展示
        if (_self.data.showTemplete.isSel) {
            params['getShow'] = '0'
        }
        // 分享
        if (_self.data.shareBean.isSel) {
            params['share'] = '0'
        }
        //使用说明
        if (_self.data.summary != '') {
            params['useExplain'] = _self.data.summary
        }
        return params
    },
    doSave() {
        var _self = this
        if (_self.checkParams()) {
            var params = _self.buildParams()
            wx.showLoading({
                title: '修改中...',
            })
            app.http.put(app.urls.doUpdateCoupon.format({
                    couponId: _self.data.couponId
                }), {
                    header: {
                        token: app.globalData.token
                    },
                    data: params
                })
                .then(res => {
                    wx.hideLoading({})
                    wx.showToast({
                        title: '修改成功',
                        icon: 'success'
                    })
                    let arr = getCurrentPages()
                    let lastPage = (arr.length >= 2) ? arr[arr.length - 2] : undefined
                    lastPage.setData({
                        isAddPage: true
                    })
                    wx.navigateBack({})
                })
                .catch(err => {
                    wx.hideLoading({})
                })
        }
    }
})