Example #1
0
    uploadAvatars: function (imageId) {
        var loader = this.loader;

        if (loader.isLoading) return;

        var user = userModel.get();
        var self = this;

        loader.showLoading();

        bridge.image.upload(api.ShopAPI.url('/api/user/uploadGravatar'), {
            pspcode: user.PSP_CODE
        }, {
                absgravatar: imageId

            }, function (res) {
                Toast.showToast(res.msg);

                if (res.success) {
                    userModel.set({
                        Avatars: self.model.data.src
                    });
                }

                loader.hideLoading();
            });
    },
Example #2
0
        userModel.request(function (err, res) {

            if (err) {
                if (err.error_code == 503) {
                    userModel.set(null);
                    self.model.set('isLogin', false);
                }
                self.model.set('isOffline', true);
                return;
            }
            userModel.set(res.data);

            self.user = userModel.get();

            self.model.set({
                isOffline: false,
                user: self.user
            });

            self.getCartQty();

            self.showEnergy();
            self.stewardQtyApi.setParam({
                pspcode: self.user.PSP_CODE
            }).load();

            if (res.vdpMessage) {
                self.showMessageDialog(res.vdpMessage);
                //util.store('ivcode', null);
            }
        }, util.store('ivcode') || '0000');
Example #3
0
    onCreate: function () {
        var self = this;
        var $main = self.$('.main');

        self.user = userModel.get();

        self.swipeRightBackAction = self.route.query.from || self.route.referrer || '/';

        Scroll.bind($main);

        self.model = new model.ViewModel(this.$el, {
            back: self.swipeRightBackAction,
            title: '订单详情',
            payType: 1
        });

        self.orderApi = new api.OrderAPI({
            $el: self.$el,
            params: {
                orderId: self.route.data.id,
                UserID: self.user.ID,
                Auth: self.user.Auth
            },
            success: function (res) {
                console.log(res);

                self.model.set({
                    data: res.data
                })

                if (res.data.PUR_PAS_ID == 2) {
                    self.forward("/news/order" + self.route.query.id);
                }
            }
        });

        self.orderApi.load();

        self.orderStatusAPI = new api.OrderStatusAPI({
            $el: this.$el,
            check: false,
            checkData: false,
            success: function (res) {
                if (res.status != 2) {
                    self.timer = setTimeout(function () {
                        self.checkStatus();
                    }, 2000);

                } else if (res.status == 2) {
                    self.forward("/news/order" + self.route.query.id);
                    self.model.set('data.PUR_PAS_ID', 2);
                }
            }
        });

        if (self.route.query.refresh) {
            self.checkStatus();
        }
    },
Example #4
0
    onShow: function () {
        var self = this;
        var user = userModel.get();

        if (user) {
            this.model.set({
                src: user.Avatars
            })
        }
    },
Example #5
0
        self.onResult("Login", function () {
            self.user = userModel.get();

            model.set({
                isOffline: false,
                user: self.user
            });
            self.doWhenLogin();

        }).onResult("UserChange", function () {
Example #6
0
    getMonthGifts: function (freId, callback) {
        var user = userModel.get();

        new api.MonthAPI({
            params: {
                freid: freId,
                pspcode: user.PSP_CODE
            }

        }).load(callback);
    },
Example #7
0
    getCart: function () {
        var user = userModel.get();

        return new api.CartAPI({
            $el: self.$el,
            checkData: false,
            params: {
                pspcode: user.PSP_CODE
            }

        }).load();
    },
Example #8
0
    recieveCoupon: function (csvcode, $el) {

        var user = userModel.get();

        return new api.CouponAPI({
            $el: $el,
            params: {
                csvcode: csvcode,
                pspcode: user.PSP_CODE
            }

        }).request();
    },
Example #9
0
    updateUser: function (type, value) {
        var user = userModel.get();

        var data = {
            type: type,
            ID: user.ID,
            Auth: user.Auth
        };

        data[type] = value;

        return Http.post('/api/user/update', data)
    },
Example #10
0
    getMonthOverdue: function (callback, $el) {
        var user = userModel.get();

        return new Loader({
            $el: $el,
            url: "/api/user/get_month_overdue",
            params: {

                UserID: user.ID,
                Auth: user.Auth
            }

        }).request();
    },
Example #11
0
    getMonth: function (callback, $el) {
        var user = userModel.get();

        new Loader({
            $el: $el,
            url: "/api/user/get_month_gift",
            params: {

                UserID: user.ID,
                Auth: user.Auth
            }

        }).load(callback);
    },
Example #12
0
        onShow: function () {
            var self = this;

            self.user = userModel.get();

            self.model.set({
                user: self.user
            });

            self.cart.setParam({
                pspcode: self.user.PSP_CODE

            }).load();
        },
Example #13
0
    getCouponList: function ($el) {
        var user = userModel.get();

        return new Loader({
            $el: $el,
            url: "/api/user/voucher_list",
            params: {
                status: 1,

                UserID: user.ID,
                Auth: user.Auth
            }

        }).request();
    },
Example #14
0
    getCouponStatus: function (csvId, callback, $el) {
        var user = userModel.get();

        return new Loader({
            $el: $el,
            url: "/api/user/get_coupon_status",
            params: {
                id: csvId,
                UserID: user.ID,
                Auth: user.Auth
            },
            error: function () { }

        }).load(callback);
    }
Example #15
0
 render: function () {
     if (!this.model) {
         this.remove();
     } else {
         var data = this.makeJsonModel();
         data.userIsAdmin = user.get('er_admin');
         data.url = this.getItemEditUrl();
         var html = this.template(data);
         $(this.el).html(html);
         if (!this.isEditable()) {
             this.$el.addClass('disabled');
         }
     }
     return this;
 },
Example #16
0
    getCoupon: function (csvId, callback, $el) {
        var user = userModel.get();

        new Loader({
            $el: $el,
            url: "/api/user/voucher_detail",
            params: {
                csvId: csvId,

                UserID: user.ID,
                Auth: user.Auth
            },
            error: function () { }

        }).load(callback);
    },
Example #17
0
    doWhenLogin: function () {
        var self = this;
        var user = userModel.get();

        self.model.set({
            barcode: barcode.code93(user.Mobile).replace(/0/g, '<em></em>').replace(/1/g, '<i></i>'),
            isLogin: true
        });

        var load = function (token) {

            userModel.setParam({
                IMEI: !token ? 'CAN_NOT_GET' : (typeof token == 'string' ? token : token.imei)
            });
            self.requestUser();
        }

        util.isInApp ? bridge.getDeviceToken(load) : load();
    },
Example #18
0
    onCreate: function () {
        var self = this;

        var userInfo = userModel.get();

        this.loader = new Loader({
            $el: this.$el
        });

        var props = UpdateType[this.route.params.type];

        var model = this.model = new Model(this.$el, Object.assign({
            text: userInfo[props.key],
            origin: userInfo[props.key]

        }, props));

        model.refs.text.focus();

        model.back = function () {
            self.back(self.swipeBack);
        }

        model.save = function () {
            var userName = this.get('text');

            user.updateUserName(userName).then(function (res) {

                userModel.set({
                    UserName: userName
                });

                self.back();

            }).catch(function (err) {
                Toast.showToast(err.message);
            })
        }
    },
Example #19
0
    onCreate: function () {
        var self = this;

        this.bindScrollTo(self.$('.main'));

        self.user = userModel.get();

        self.swipeBack = self.route.query.from || self.route.referrer || '/';

        self.model = new model.ViewModel(this.$el, {
            back: self.swipeBack,
            title: self.route.query.name || '会生活'
        });

        self.model.sortBy = function (e, sort) {
            self.discoverListAPI.setParam({
                orderby: sort == "POST" ? 'desc' : 'asc',
                order: sort

            }).reload();

            $(e.currentTarget).addClass('curr').siblings('.curr').removeClass('curr')
        }

        self.discoverListAPI = new api.DiscoverListAPI({
            $el: self.$el,

            success: function (res) {
                console.log(res);

                self.model.set({
                    data: res.data
                });
            },

            error: function () {
            }
        });
    },
Example #20
0
    onCreate: function () {
        var self = this;

        var userInfo = userModel.get();

        this.loader = new Loader({
            $el: this.$el
        });

        var model = this.model = new Model(this.$el, {
            title: '修改性别',
            gender: userInfo.Gender
        });

        model.back = function () {
            self.back(self.swipeBack);
        }

        model.save = function (gender) {

            user.updateGender(gender).then(function (res) {
                if (gender == userInfo.Gender) return;

                userModel.set({
                    Gender: gender
                });

                Toast.showToast('修改成功');

                self.back();

            }).catch(function (err) {
                Toast.showToast(err.message);
            })
        }
    },
Example #21
0
 currentUserIsFotograf: function () {
     var currentUserNavn = user.get('navn');
     var fotograf = this.model.get('fotografNavn');
     return (currentUserNavn === fotograf);
 },
Example #22
0
    onCreate: function () {
        var self = this;

        this.bindScrollTo(self.$('.main'));

        self.user = userModel.get();

        self.share = new Share({
            head: '分享'
        });
        self.share.callback = function (res) {
            discoveryAddShareAPI.setParam({
                pspcode: self.user.PSP_CODE
            }).load();
        }
        self.share.$el.appendTo(self.$el);

        self.swipeBack = self.route.query.from || self.route.referrer || '/';

        self.model = new model.ViewModel(this.$el, {
            back: self.swipeBack,
            url: encodeURIComponent(self.route.url)
        });

        this.bindScrollTo(self.model.refs.productScroll, {
            hScroll: true
        });


        var discoveryAddShareAPI = new api.DiscoveryAddShareAPI({
            $el: self.$el,
            params: {
                dcvid: self.route.params.id
            }
        });

        var discoveryFavAPI = new api.DiscoveryFavAPI({
            $el: self.$el,
            params: {
                dcvid: self.route.params.id
            },
            success: function () {
                self.model.set('data.Like_Flag', true).set("data.DCV_LIKE_QTY", (self.model.data.data.DCV_LIKE_QTY || 0) + 1);
            },

            error: function (res) {
                sl.tip(res.msg)
            }
        });

        var discoveryRemoveFavAPI = new api.DiscoveryRemoveFavAPI({
            $el: self.$el,
            params: {
                dcvid: self.route.params.id
            },
            success: function () {
                self.model.set('data.Like_Flag', false).set("data.DCV_LIKE_QTY", (self.model.data.data.DCV_LIKE_QTY || 1) - 1);
            },

            error: function (res) {
                sl.tip(res.msg)
            }
        });

        var discoveryAPI = new api.DiscoveryAPI({
            $el: self.$el,
            params: {
                id: self.route.params.id,
                pspcode: self.user.PSP_CODE
            },
            checkData: false,
            success: function (res) {

                self.model.set({
                    data: res.data,
                    plist: !res.plist || res.plist.length !== undefined ? res.plist : [res.plist]
                });

                self.share.set({
                    title: res.data ? res.data.DCV_TITLE : '',
                    linkURL: res.data ? res.data.Share_Url : '',
                    description: ''
                });
            },

            error: function () {

            }
        });

        self.model.fav = function () {
            if (!this.data.data.Like_Flag) {

                discoveryFavAPI.setParam({
                    pspcode: self.user.PSP_CODE
                }).load();

            } else {
                discoveryRemoveFavAPI.setParam({
                    pspcode: self.user.PSP_CODE
                }).load();
            }
        }

        discoveryAPI.load();
    },
 co(function * () {
   // decrement tutorials count
   yield User.get(authorId).update({tutorialsCount: r.row('tutorialsCount').add(-1)}).run()
 })
Example #24
0
        render: function () {

            // POI name
            if (!!this.model.get('navn') && this.model.get('navn').length > 0) {
                this.updatePoiNamePlaceholders();
            }

            // Links Manager
            var linksManagerView = new LinksManagerView({
                model: this.model,
                linksField: 'lenker',
                el: '[data-view="poi-details-lenker"]',
                cols: 7,
                fields: ['tittel', 'url']
            }).render();


            // Tags

            // Primary type

            var alleStedKategorier = _.pluck(this.model.availableCategories, 'name');
            var selectableStedKategorier = _.without(alleStedKategorier, 'Hytte');

            var $primaryTagSelect = this.$('select[name="poi-details-field-kategori"]');

            var options = ['<option value="">Velg en</option>'];
            for (var i = 0; i < selectableStedKategorier.length; i++) {
                options.push('<option value="' + selectableStedKategorier[i] + '">' + selectableStedKategorier[i] + '</option>');
            }

            $primaryTagSelect.html(options);

            // More tags

            this.onKategoriChange(undefined, this.model.get('kategori')); // To render more-tags-field if kategori is already set in model.

            var poiTags = this.model.get('tags');
            var poiCategory = (poiTags.length > 0) ? poiTags[0] : '';
            var poiAdditionalCategories = (poiTags.length > 1) ? _.clone(poiTags) : [];

            poiAdditionalCategories.shift(); // Remove first item, as the first category is displayed in the field above "Er også"

            this.$('input[name="poi-details-field-flere-typer"]').select2({
                tags: selectableStedKategorier,
                createSearchChoice: function () { return null; } // This will prevent the user from entering custom tags
            }).on('change', $.proxy(this.onFlereStedKategorierChange, this));

            this.$('input[name="poi-details-field-flere-typer"]').select2('val', poiAdditionalCategories);


            this.toggleÅpningstiderFields();

            var tilrettelagtForOptions = this.tilrettelagtForOptions;

            $('input[name="poi-details-field-tilrettelagt_for"]').select2({
                tags: tilrettelagtForOptions,
                createSearchChoice: function () { return null; } // This will prevent the user from entering custom tags
            }).on('change', $.proxy(function (e) {
                var tilrettelagt_for = e.val;
                this.model.set('tilrettelagt_for', tilrettelagt_for);
            }, this));

            this.$('[name="poi-details-field-tilrettelagt_for"]').select2('val', this.model.get('tilrettelagt_for'));

            var userGroups = user.get('grupper');
            if (userGroups.length > 0) {
                var select2Groups = [];

                for (var j = 0; j < userGroups.length; j++) {
                    select2Groups[j] = {};
                    select2Groups[j].id = userGroups[j].object_id;
                    select2Groups[j].text = userGroups[j].navn;
                }

                $('input[name="poi-details-field-grupper"]').select2({
                    tags: select2Groups,
                    createSearchChoice: function () { return null; } // This will prevent the user from entering custom tags
                }).on('change', $.proxy(function (e) {
                    var routeGroups = e.val;
                    this.model.set('grupper', routeGroups);
                }, this));

                this.$('[name="poi-details-field-grupper"]').select2('val', this.model.get('grupper'));

            } else {
                // If user does not belong to any groups, do not show groups field.
                this.$('.form-group.poi-details-field-grupper').remove();
            }

            // Bind model to view
            this.stickit(); // Uses view.bindings and view.model to setup bindings

            // Validation
            Backbone.Validation.bind(this);

        },
Example #25
0
    onCreate: function () {
        var self = this;
        self.user = userModel.get();
        self.$tabs = self.$('.hm_tab_con');

        self.$tabs.on($.fx.transitionEnd, function () {
            if (self.model.data.tab == 1 && self.slider) {
                setTimeout(function () {
                    self.slider._adjustWidth();
                }, 400)
            }
        })

        sl.activity = self;

        var model = this.model = new ViewModel(this.$el, {
            menu: 'head_menu',
            titleClass: 'head_title',
            isOffline: false,
            isLogin: !!self.user,
            isFirstOpen: util.store('isFirstOpen') === null,
            msg: 0,
            tab: 0,
            bottomTab: 0,
            chartType: 0,
            open: function () {
                bridge.openInApp(self.user.OpenUrl || 'http://m.abs.cn');
            },
            openUrl: function (e, url) {
                bridge.openInApp(url || 'http://m.abs.cn');
            },
            searchHistory: util.store("searchHistory")
        });

        model.showSearch = function () {
            this.set({
                isShowSearch: true
            });
            $(this.refs.searchwrap).show();

            this.refs.searchText.focus();
        }

        model.hideSearch = function () {
            this.set({
                isShowSearch: false
            });
            this.refs.searchText.blur();

            $(this.refs.searchwrap).hide();
        }

        self.appIconAPI = new api.AppIconAPI({
            $el: $(''),
            checkData: false,
            params: {
                id: 2
            },
            success: function (res) {
                console.log(res);
            }
        });

        self.appIconAPI.load();

        var update = new api.UpdateAPI({
            checkData: false,
            params: {
                version: sl.appVersion,
                platform: util.ios ? 1 : 2
            },
            success: function (res) {

                if (res.success && res.data.AVS_UPDATE_URL) {
                    var confirm = new Confirm({
                        content: res.data.AVS_UPDATE_MSG,
                        alwaysOpen: res.data.AVS_FORCE_FLAG,
                        confirm: function () {
                            bridge.update(res.data.AVS_UPDATE_URL, res.data.AVS_VERSION);
                        }
                    });
                    confirm.$el.appendTo($('body'));
                    confirm.show();
                }
            },
            error: function () {
            }
        });
        update.load();

        this.stewardQtyApi = new api.StewardQtyAPI({
            checkData: false,
            success: function (res) {
                self.user.StewardNum = res.data;
                userModel.set(self.user);
                model.set('user.StewardNum', res.data);
            }
        });

        this.launchLoading = new Loading({
            url: '/api/settings/ad_list?name=launch&type=base64',
            check: false,
            checkData: false,
            success: function (res) {
                if (res && res.data && res.data.length) {
                    localStorage.setItem('LAUNCH_IMAGE', res.data[0].Src);
                }
            }
        });
        this.launchLoading.load();

        self.shopApi = new api.ActivityAPI({
            $el: self.$('.hm_shop'),
            success: function (res) {

                model.set({
                    activity: res.data,
                    topbanner: res.topbanner
                });

                if (self.slider)
                    self.slider.set(res.topbanner.data);
                else
                    self.slider = new Slider(model.refs.topbanner, {
                        loop: true,
                        autoLoop: 3000,
                        data: res.topbanner.data,
                        dots: true,
                        itemTemplate: '<img src="<%=src%>" data-forward="<%=url%>?from=%2f" />'
                    });

                Scroll.bind(self.$('.js_shop_scroll:not(.s_binded)').addClass('s_binded'), {
                    vScroll: false,
                    hScroll: true,
                    useScroll: true
                });

                if (model.data.tab == 1) {
                    self.scroll.get('.js_shop').imageLazyLoad();
                }

                this.showMoreMsg('别拉了,就这些<i class="ico_no_more"></i>');
            }
        });

        self.shopApi.load();

        new api.ShopAPI({
            url: '/api/prod/newproductlist',
            checkData: false,
            check: false,
            success: function (res) {
                if (res.success) {
                    model.set({
                        newproducts: res.data
                    });
                }

            },
            error: function () {

            }
        }).load();


        model.on('change:tab', function () {
            if (this.data.tab == 1) {
                self.scroll.get('.js_shop').imageLazyLoad();
            }
        })

        if (!util.store('IS_SHOW_GUIDE')) {

            util.store('IS_SHOW_GUIDE', 1);

            model.set('showGuide', true);

            this.guideSlider = new Slider(self.$('.hm_guide'), {
                itemTemplate: '<img class="guide<%=id%>" src="http://appuser.abs.cn/dest1.2.0/images/guide<%=id%>.jpg" />',
                data: [{
                    id: 0
                }, {
                        id: 1
                    }],
                onChange: function (index) {
                }
            });
        }

        Scroll.bind(this.$('.main:not(.js_shop)'));

        this.scroll = Scroll.bind(this.$('.js_shop'), {
            refresh: function (resolve, reject) {
                self.shopApi.load(function () {
                    resolve();
                });
            }
        });

        self.$open_msg = this.$('.open_msg').on($.fx.transitionEnd, function (e) {
            if (!self.$open_msg.hasClass('show')) {
                self.$open_msg.hide();
            }
        });
        Scroll.bind(self.$open_msg.find('.msg_bd'));

        var canvas = this.$('.js_canvas')[0];
        canvas.width = 170;
        canvas.height = 170;
        this.canvas = canvas;
        this.context = canvas.getContext('2d');

        var $launchImgs = this.$('.launch img');
        var $mask = this.$('.home_mask').on($.fx.transitionEnd, function (e) {
            if ($mask.hasClass('toggle')) {
                $mask.removeClass('toggle');

                var $el = $launchImgs.filter(':not(.launch_hide)').addClass('launch_hide');

                $launchImgs.eq($el.index() + 1 == $launchImgs.length ? 0 : ($el.index() + 1)).removeClass('launch_hide');
            }
        });

        setTimeout(function () {
            $mask.addClass('toggle');

            setTimeout(arguments.callee, 3200)
        }, 3200);

        self.onResult("Login", function () {
            self.user = userModel.get();

            model.set({
                isOffline: false,
                user: self.user
            });
            self.doWhenLogin();

        }).onResult("UserChange", function () {
            self.requestUser();

        }).onResult("Logout", function () {
            self.user = null;
            model.set({
                isLogin: false,
                user: null
            });
        }).onResult('CartChange', function () {

            self.getCartQty();
        });

        setInterval(function () {
            self.getUnreadMsg();

        }, 10000);

        this.listenTo($(this.model.refs.search), 'keydown', function (e) {
            if (e.keyCode == 13) {
                self.forward('/discovery/list?s=' + encodeURIComponent(e.target.value) + '&from=/');
                e.preventDefault();
                return false;
            }
        });

        this.listenTo($(this.model.refs.searchText), 'keydown', function (e) {
            if (e.keyCode == 13) {

                model.search(e, e.target.value);
                e.preventDefault();
                return false;
            }
        });

        model.search = function (e, item) {
            var searchHistory = util.store('searchHistory') || [];
            var index = searchHistory.indexOf(item);

            if (index != -1) {
                searchHistory.splice(index, 1);
            }
            searchHistory.unshift(item);

            self.model.set({
                searchHistory: searchHistory
            });
            util.store('searchHistory', searchHistory);

            self.forward('/list?s=' + encodeURIComponent(item) + '&from=/');
        }

    },
Example #26
0
        onCreate: function () {
            var self = this;

            Scroll.bind(self.$('.main'));
            Scroll.bind(self.$('.ct_coupon_list .bd'));

            self.swipeRightBackAction = self.route.query.from || '/';
            self.user = userModel.get();

            self.model = new model.ViewModel(this.$el, {
                back: self.swipeRightBackAction,
                title: '我的购物车',
                user: self.user,
                loading: true,
                Points: 0
            });

            $.extend(self.model, {

                getPrice: function (bag_amount, coupon, Points) {
                    var couponPrice = coupon && coupon.VCA_DEDUCT_AMOUNT ? coupon.VCA_DEDUCT_AMOUNT : 0;
                    if (coupon && coupon.VCT_ID == 5) {
                        couponPrice = 0;
                    }
                    return Math.max(0, bag_amount - couponPrice - (Points / 100));
                },

                getFreight: function (bag_amount, coupon, Points, freecouponcode) {
                    var price = this.getPrice(bag_amount, coupon, Points);
                    var freight = ((self.user.XPS_CTG_ID && self.user.XPS_CTG_ID >= 4 || price >= 99 || freecouponcode) ? 0 : 15);

                    return price >= 99 ? "免邮费" : ('¥' + Math.round(freight * 100) / 100);
                },

                getTotal: function (bag_amount, coupon, Points, freecouponcode) {

                    if (util.isTrue(this.data.data_baglist) || util.isTrue(this.data.data_package)) {

                        var couponPrice = coupon && coupon.VCA_DEDUCT_AMOUNT ? coupon.VCA_DEDUCT_AMOUNT : 0;
                        var total;
                        var price;
                        var freight;

                        if (coupon && coupon.VCT_ID == 5) {
                            price = Math.max(0, bag_amount - couponPrice - (Points / 100));
                            freight = ((self.user.XPS_CTG_ID && self.user.XPS_CTG_ID >= 4 || bag_amount - (Points / 100) >= 99 || freecouponcode) ? 0 : 15);
                            total = Math.max(0, bag_amount + freight - couponPrice - (Points / 100));

                        } else {
                            price = Math.max(0, bag_amount - couponPrice - (Points / 100));
                            total = price + ((self.user.XPS_CTG_ID && self.user.XPS_CTG_ID >= 4 || price >= 99 || freecouponcode) ? 0 : 15);
                        }

                        return '¥' + (Math.round(total * 100) / 100);

                    } else {
                        return '¥0';
                    }

                },

                usePoint: function (e, points) {
                    if (!points) {
                        self.model.set({
                            isShowPoint: false,
                            Points: 0
                        });
                        return;
                    }
                    points = parseFloat(points);
                    if (points > self.user.Points) {
                        sl.tip('您输入的数值已超过您的积分最大值,请重新输入');
                        return;
                    }
                    else if (points < 100 || points % 100 != 0) {
                        sl.tip('您输入的数值不是100的倍数,请重新输入');
                        return;
                    }

                    self.model.set({
                        isShowPoint: false,
                        Points: points
                    });
                },

                useCoupon: function (e, coupon) {
                    if (coupon.VCT_ID == 1 && coupon.VCA_MIN_AMOUNT > self.model.data.bag_amount) {
                        sl.tip('您的购物金额满' + coupon.VCA_MIN_AMOUNT + '元才可使用哦');
                        return;
                    }

                    if (coupon.VCT_ID == 4) {
                        this.set({
                            freecouponcode: this.data.freecouponcode && this.data.freecouponcode.CSV_CODE == coupon.CSV_CODE
                                ? null
                                : coupon
                        });

                    } else if (coupon.VCT_ID == 5) {
                        var usedCoupons = this.data.usedCoupons || [];
                        var index = util.indexOf(usedCoupons, function (item) {
                            return item.CSV_CODE == coupon.CSV_CODE;
                        });

                        if (index != -1) {
                            usedCoupons.splice(index, 1);
                        } else {
                            usedCoupons.push(coupon);
                        }

                        var codes = [];
                        var amount = 0;
                        usedCoupons.forEach(function (item) {
                            codes.push(item.CSV_CODE);
                            amount += item.VCA_DEDUCT_AMOUNT;
                        });

                        this.set({
                            usedCoupons: usedCoupons,
                            couponcode: {
                                VCT_ID: 5,
                                VCA_DEDUCT_AMOUNT: amount,
                                CSV_CODE: codes.join(',')
                            }
                        });

                    } else {
                        this.set({
                            usedCoupons: [],
                            couponcode: this.data.couponcode && this.data.couponcode.CSV_CODE == coupon.CSV_CODE
                                ? null
                                : coupon
                        })
                    }

                    this.set({
                        isShowCoupon: false
                    });
                }
            });

            self.cart = new api.CartAPI({
                $el: self.$el,
                checkData: false,
                success: function (res) {
                    res.coupon.sort(function (a, b) {
                        return a.CSV_END_DT > b.CSV_END_DT ? 1 : a.CSV_END_DT == b.CSV_END_DT ? 0 : -1;
                    });

                    self.model.set(res)
                        .set({
                            loading: false
                        });

                    var couponCount = 0;
                    var freeCount = 0;
                    for (var i = 0; i < res.coupon.length; i++) {
                        if (res.coupon[i].VCT_ID == 4) {
                            freeCount++
                        } else {
                            couponCount++;
                        }
                    }
                    self.model.set({
                        freeCount: freeCount,
                        couponCount: couponCount
                    });
                }
            });

            self.initPoints();

            self.initCoupon();
            self.initModify();
            self.initDeletion();

            this.onResult('ResetCart', function () {
                self.model.set({
                    couponcode: null,
                    freecouponcode: null,
                    Points: 0
                });

                self.model.setState({
                    selectedCoupon: '',
                    selectedFreeCoupon: ''
                });
            });
        },