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(); }); },
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');
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(); } },
onShow: function () { var self = this; var user = userModel.get(); if (user) { this.model.set({ src: user.Avatars }) } },
self.onResult("Login", function () { self.user = userModel.get(); model.set({ isOffline: false, user: self.user }); self.doWhenLogin(); }).onResult("UserChange", function () {
getMonthGifts: function (freId, callback) { var user = userModel.get(); new api.MonthAPI({ params: { freid: freId, pspcode: user.PSP_CODE } }).load(callback); },
getCart: function () { var user = userModel.get(); return new api.CartAPI({ $el: self.$el, checkData: false, params: { pspcode: user.PSP_CODE } }).load(); },
recieveCoupon: function (csvcode, $el) { var user = userModel.get(); return new api.CouponAPI({ $el: $el, params: { csvcode: csvcode, pspcode: user.PSP_CODE } }).request(); },
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) },
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(); },
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); },
onShow: function () { var self = this; self.user = userModel.get(); self.model.set({ user: self.user }); self.cart.setParam({ pspcode: self.user.PSP_CODE }).load(); },
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(); },
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); }
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; },
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); },
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(); },
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); }) } },
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 () { } }); },
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); }) } },
currentUserIsFotograf: function () { var currentUserNavn = user.get('navn'); var fotograf = this.model.get('fotografNavn'); return (currentUserNavn === fotograf); },
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() })
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); },
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=/'); } },
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: '' }); }); },