define(['$', 'template', 'product', 'order', 'cart', 'native', 'helper', 'user', 'api', 'config', 'address', 'IScroll'], function ($, template, product, order, cart ,native, helper, user, api, config, address, IScroll) { function checkScroll(pageData, callback) { if (pageData.scroll) { if (!pageData.scrollHeight) { pageData.scrollHeight = 0; } clearInterval(pageData.scrollCheck); clearTimeout(pageData.scrollCheckAutoCancel); pageData.scrollCheck = setInterval(function () { pageData.scroll.refresh(); if ($.isFunction(callback)) { callback(); } }, 50); pageData.scrollCheckAutoCancel = setTimeout(function () { clearInterval(pageData.scrollCheck); }, 500); } } function back(event) { event.preventDefault(); $(document).trigger('spa:navigate', { hash: '', pushData: { dontNeedReload: true } }); } function fixScroll (pageData) { if (pageData.scroll) { pageData.scroll.destroy(); pageData.scroll = null; } var placeOrderScroll; setTimeout(function () { pageData.scroll = new IScroll('#placeOrderScroll'); }, 50); } function suitable(me, doc, productID, type, petPrice, pay, pageData, extra, precedence) { extra = extra || 0; precedence = precedence || 0; // 获取该类型宠物 可用优惠券 doc.trigger('spa:openloader'); api.getCouponList({ products: JSON.stringify([{ product_id: productID, count: 1 }]), type: type, user_id: user.id }, function (res) { doc.trigger('spa:closeloader'); if (!res.success) { doc.trigger('spa:openpanel', ['simpleAlert', { message: res.message }]); } else { user.orderCoupons = res.data; // 优惠券数据更新 var coupons = user.orderCoupons; var couponSelectVal = 0; if (coupons.length) { // 选取最大金额 var selectCoupon = user.getMaxAvailableCoupon(); // 缓存到购物车 cart['products'][type]['couponName'] = coupons[selectCoupon.couponIndex].coupon.name; cart['products'][type]['couponVal'] = selectCoupon.couponSelectVal; cart['products'][type]['couponId'] = coupons[selectCoupon.couponIndex].id; cart['products'][type]['couponList'] = coupons; // dom 更新 $('.coupon-selected-name', me).html(user.getCouponName(coupons[selectCoupon.couponIndex].id)); $('.coupon-cost', me).html('-' + selectCoupon.couponSelectVal); $('.select-coupon', me).removeClass('hide'); $('.order-cost', me).attr('data-coupon', selectCoupon.couponSelectVal); $('.order-list', me).removeClass('hide'); $('.order-cost', me).attr('data-pay', parseFloat(petPrice) - parseFloat(selectCoupon.couponSelectVal) + extra); // 减去优惠 petPrice = parseFloat(petPrice) - parseFloat(selectCoupon.couponSelectVal) + extra + precedence; } else { // 缓存到购物车 cart['products'][type]['couponName'] = ''; cart['products'][type]['couponVal'] = ''; cart['products'][type]['couponId'] = ''; cart['products'][type]['couponList'] = []; $('.coupon-selected-name', me).html(''); $('.coupon-cost', me).html('- 0'); $('.select-coupon', me).addClass('hide'); $('.order-cost', me).attr('data-coupon', 0); petPrice = parseFloat(petPrice) + extra + precedence; } // 缓存到本地 cart.setCache('products'); // 更新dom总价 $('.order-cost', me).attr('data-costs', pay); $('.order-cost', me).html('¥' + petPrice); $('.select-pet', me).removeClass('hide'); if (pageData && pageData.scroll) { pageData.scroll.refresh(); } } }); } function setCoupon(me, pageData, extraServicePrice) { $(document).trigger('spa:openloader'); var products = JSON.stringify([{ product_id: order['productID'], count: order.productCount }]); var time = order.bookingDate + ' ' + order.bookingTime + ':00'; user.getProductCoupon(products, time, cachePageData.productType, function(res){ $(document).trigger('spa:closeloader'); if (res.success) { var coupons = user.orderCoupons; // var coupons = []; var couponSelectVal = 0; var price = 0; if (coupons.length) { var selectCoupon = user.getMaxAvailableCoupon(); cart['products'][cachePageData.productType]['couponName'] = coupons[selectCoupon.couponIndex].coupon.name; cart['products'][cachePageData.productType]['couponVal'] = selectCoupon.couponSelectVal; cart['products'][cachePageData.productType]['couponId'] = coupons[selectCoupon.couponIndex].id; cart['products'][cachePageData.productType]['couponList'] = coupons; $('.coupon-selected-name', me).html(user.getCouponName(coupons[selectCoupon.couponIndex].id)); $('.coupon-cost', me).html('-' + selectCoupon.couponSelectVal); $('.select-coupon', me).removeClass('hide'); $('.order-cost', me).attr('data-coupon', selectCoupon.couponSelectVal); $('.order-list', me).removeClass('hide'); price = parseFloat(order.petPrice) * order.productCount - parseFloat(selectCoupon.couponSelectVal) + parseFloat(extraServicePrice); } else { price = parseFloat(order.petPrice) * order.productCount + parseFloat(extraServicePrice); $('.coupon-selected-name', me).html(''); $('.select-coupon', me).addClass('hide'); $('.order-cost', me).attr('data-coupon', '0'); $('.order-cost', me).attr('data-pay', parseFloat(order.petPrice)); cart['products'][cachePageData.productType]['couponName'] = ''; cart['products'][cachePageData.productType]['couponVal'] = ''; cart['products'][cachePageData.productType]['couponId'] = ''; cart['products'][cachePageData.productType]['couponList'] = []; } // 加急 if (order.precedence) { price = price + parseFloat(product.precedence); } $('.order-cost', me).attr('data-pay', price); $('.order-cost', me).attr('data-costs', order.petPrice); $('.order-cost', me).html('¥' + price); cart.setCache('products'); pageData.scroll.refresh(); } else { $(document).trigger('spa:openpanel', ['simpleAlert', { message: res.message }]); } }); } // 筛选附加服务 function suitExtraService(me, checkedName) { var newExtraService = product.getExtraServiceList(order.productType, order.petName, checkedName); var extraService = { extraService: newExtraService } var extraServiceTpl = template('placeOrder/list', extraService); var extraServiceTpl2 = template('placeOrder/list2', extraService); me.find('.extra-service-list').html(extraServiceTpl); me.find('.calc-items').html(extraServiceTpl2).addClass('hide'); cachePageData.extraServicePrice = 0; cachePageData.extraServiceCount = 0; } function resetTech(me) { order.beautician.name = '请选择'; order.beautician.id = ''; $('.booking-people', me).html(order.beautician.name); } var cachePageData = { extraServicePrice: 0, extraServiceCount: 0, defaultExtraService: { 11: { serviceName: '体外驱虫', servicePrice: 40 }, 12: { serviceName: '药浴', servicePrice: 40 }, 13: { serviceName: '一次性局部染色', servicePrice: 28 } }, DW: { count: 1, price: 0 } }; //page内部的数据传递 return { title: '壹管家上门服务', body: '', init: function (pageData, dtd) { // var productType = cachePageData.productType; // var serviceType = cachePageData.serviceType; var $view = this; var $doc = $(document); function payCharge () { var $pay = $('.order-cost', $view); // 原价 var cost = $pay.attr('data-costs'); // 优惠 var coupon = $pay.attr('data-coupon'); // 加急 var precedence = $pay.attr('data-precedence'); // 额外服务 var extra = $pay.attr('data-extra'); // 结算 var pay = $pay.attr('data-pay'); pay = parseFloat(cost) - parseFloat(coupon) + parseFloat(precedence) + parseFloat(extra); $pay.attr('data-pay', pay); $pay.text('¥' + pay); } //返回 $.newTouch('.back-button', function (event) { back.call(this, event); }, $view); $view.on('tapBackButton', function (event) { back.call(this, event); }); //返回 $view.on('swipeRight', function (event) { back.call(this, event); }); // 查看详情 $.newTouch('.product-pic', function(event) { $doc.trigger('spa:navigate', { hash: 'product', pushData: { type: cachePageData.serviceType, needReload: true } }); }, $view); // 选择主服务 $.newTouch('.btn-main-service', function(event) { if ($(this).hasClass('off')) return; if ($(this).hasClass('on')) return; $(this).addClass('on'); $(this).parent().siblings().find('.btn').removeClass('on'); var extraServiceType = $(this).attr('data-extra-type'); extraServiceType = parseFloat(extraServiceType); cachePageData.extraServiceType = extraServiceType; // 默认选中额外服务名字 var selectExtraServiceName = cachePageData.defaultExtraService[extraServiceType].serviceName; var selectExtraServicePrice = cachePageData.defaultExtraService[extraServiceType].servicePrice; $('.order-cost', $view).attr('data-extra', selectExtraServicePrice); cachePageData.extraServicePrice = selectExtraServicePrice; var serviceType = $(this).attr('data-type'); cachePageData.productType = parseFloat(serviceType); $('.service-name', $view).html(product.getGroupFullName(cachePageData.productType)) // 判断是否有相同宠物类型的服务 var petName = cart['petInfo']['petName']; var petWeight = cart['petInfo']['petWeight']; var petMaxWeight = cart['petInfo']['petMaxWeight']; var petMinWeight = cart['petInfo']['petMinWeight']; var petPrice = 0; var productID = cart['petInfo']['productID']; var suitablePet = product.isSuitablePet(cachePageData.productType, petName, petMaxWeight, petMinWeight); if (!!suitablePet.petPrice) { order.petName = petName; order.petWeight = petWeight; order.petPrice = suitablePet.petPrice; order.productType = cachePageData.productType; $('.pet-info', $view).html(petName + ' (' + petWeight + ')'); $('.pet-type', $view).html(petName + ' (' + petWeight + ')'); $('.total-cost', $view).html('¥' + suitablePet.petPrice); petPrice = suitablePet.petPrice; pay = petPrice; productID = suitablePet.productID; order.set('productID', productID); var precedence; if (order.precedence) { precedence = product.precedence; } else { precedence = 0; } if (order['productID'] && order.bookingDate) { setCoupon($view, pageData, cachePageData.extraServicePrice); } else { $('.order-cost', $view).html('¥ ' + (parseFloat(order.petPrice) + cachePageData.extraServicePrice)); $('.order-cost', $view).attr('data-pay', parseFloat(order.petPrice)); $('.order-cost', $view).attr('data-costs', parseFloat(order.petPrice)); } $('.select-pet', $view).removeClass('hide'); // 筛选附加服务 order.extraService = []; suitExtraService($view, selectExtraServiceName); $('.calc-items', $view).removeClass('hide'); var extraServiceID = $('.extra-service-list', $view).find('.checked').attr('data-id'); var extraServiceIndex = $('.extra-service-list', $view).find('.checked').parent().index(); var serviceParam = { product_id: extraServiceID, count: 1 } order.extraService[extraServiceIndex] = serviceParam; // pageData.scroll.refresh(); } else { order.petName = ''; order.petWeight = ''; order.petPrice = ''; order.productType = cachePageData.productType; $('.pet-info', $view).html('选择宠物类型'); $('.select-pet', $view).addClass('hide'); $('.select-coupon', $view).addClass('hide'); $('.coupon-selected-name', $view).html(''); $('.order-cost', $view).html('¥ 0'); $('.order-cost', $view).attr('data-pay', '0'); $('.order-cost', $view).attr('data-costs', '0'); $('.order-cost', $view).attr('data-coupon', '0'); order.set('productID', ''); } // 重置保洁师选择 resetTech($view); pageData.scroll.refresh(); }, $view); // 选择附加服务 $.newTouch('.item-checkbox', function (event) { event.preventDefault(); if ($('.main-service', $view).length && !$('.main-service', $view).find('.btn-main-service').hasClass('on')) { $doc.trigger('spa:openpanel', ['simpleAlert', { message: '请选择服务类型' }]); return; } var select = $(this).data('select'), id = $(this).data('id'), index = $(this).parent().index(), price = $(this).data('price'); extraType = $(this).data('servicetype'); var extraCost = $('.order-cost', $view).attr('data-extra'); if (!$(this).hasClass('checked')) { cachePageData.extraServiceCount ++; cachePageData.extraServicePrice += parseFloat(price); $(this).addClass('checked'); var serviceParam = { product_id: id, count: 1 } order.extraService[index] = serviceParam; $('.calc-items', $view).find('.select-extra-service').eq(index).addClass('on'); extraCost = parseFloat(extraCost) + parseFloat(price); $('.order-cost', $view).attr('data-extra', extraCost); extraCost = price; } else { cachePageData.extraServiceCount --; cachePageData.extraServicePrice -= parseFloat(price); $(this).removeClass('checked'); order.extraService[index] = {}; $('.calc-items', $view).find('.select-extra-service').eq(index).removeClass('on'); extraCost = parseFloat(extraCost) - parseFloat(price); $('.order-cost', $view).attr('data-extra', extraCost); } if (cachePageData.extraServiceCount > 0) { $('.calc-items', $view).removeClass('hide'); } else { $('.calc-items', $view).addClass('hide'); } if ($('.calc-items', $view).find('.select-extra-service').hasClass('on')) { $('.calc-items', $view).removeClass('hide'); } else { $('.calc-items', $view).addClass('hide'); } payCharge(); // 重置保洁师选择 resetTech($view); pageData.scroll.refresh(); }, $view); // 选择地址 $.newTouch('.select-address', function (event) { event.preventDefault(); if (!config.isAndroid && !config.isIOS ) { $doc.trigger('spa:navigate', { hash: 'addressList', pushData: { needReload: true } }); } else { native.selectAddress(function (res) { if (res.success) { var addressInfo = res.data; var addressMore = addressInfo.address; if (!addressMore.area) { addressMore.area = ''; } $doc.trigger('spa:openloader'); api.checkAddress({ address_id: addressInfo.address_id }, function(resA) { $doc.trigger('spa:closeloader'); if (resA.success) { $('.order-username', $view).html(addressInfo.name); $('.order-mobile', $view).html(addressInfo.mobile); var addressStr = ''; if (addressMore.poi) { addressStr = addressMore.city + addressMore.area + addressMore.poi.name + addressMore.detail } else { addressStr = addressMore.province + addressMore.city + addressMore.area + addressMore.detail } $('.order-address', $view).html(addressStr); $('.select-address', $view).addClass('show-address'); order.set('address', addressInfo, true); order.set('stationID', resA.data.station, true); resetTech($view); } else { $doc.trigger('spa:openpanel', ['simpleAlert', { message: resA.message }]); } }) } }); } }, $view); // 选择保洁师 $.newTouch('.show-beautician-picker', function (event) { if (!order.address || !order.address.address_id) { $doc.trigger('spa:openpanel', ['simpleAlert', { message: '请选择地址' }]); return; } if (order.bookingDate == '' || order.bookingTime == '') { $doc.trigger('spa:openpanel', ['simpleAlert', { message: '请选择上门时间' }]); return; } if (!order.productType) { $doc.trigger('spa:openpanel', ['simpleAlert', { message: '请选择服务类型' }]); return; } var bookingTime = order.bookingDate + ' ' + order.bookingTime + ':00'; var service_type_array = []; var mainServiceType = product.getPetServiceType(order.productType, order.productID); service_type_array.push(mainServiceType); // 筛选附加服务类型 var extraServiceTypeTmp = []; $('.extra-service-list', $view).find('li').each(function(index, el) { var $a = $(el).find('a'); if ($a.hasClass('checked')) { var petDerviceTypeTmp = $a.attr('data-servicetype'); if (petDerviceTypeTmp !== '100') { extraServiceTypeTmp.push(parseInt(petDerviceTypeTmp, 10)); } } }); service_type_array = service_type_array.concat(extraServiceTypeTmp); var service_type = '[' + service_type_array.join(',') + ']'; user.getTechList( service_type, bookingTime, order.address.address_id, function (res) { $doc.trigger('spa:navigate', { hash: 'beautician', pushData: { extraService: order.extraService } }); } ); }, $view); // 选择宠物 $.newTouch('.show-product-picker', function () { if ($(this).hasClass('selected')) return; event.preventDefault(); // 还未选择主服务 if (cachePageData.productType > 10) { $doc.trigger('spa:openpanel', ['simpleAlert', { message: '请选择服务类型' }]); return; } $doc.trigger('spa:openpanel', ['productOption', { pets: product.productGroup[cachePageData.productType], productType: cachePageData.productType, callback: { onSelect: function(petName, petWeight, petPrice) { // set order info order.petName = petName; order.petWeight = petWeight; order.petPrice = petPrice; order.productType = cachePageData.productType; order.petID = cart['products'][cachePageData.productType]['petID']; order.productID = cart['products'][cachePageData.productType]['productID']; // user.orderCoupons = res.data; // 筛选附加服务 if (cachePageData.extraServiceType > 10) { var selectExtraServiceName = cachePageData.defaultExtraService[cachePageData.extraServiceType].serviceName; var selectExtraServicePrice = cachePageData.defaultExtraService[cachePageData.extraServiceType].servicePrice; $('.order-cost', $view).attr('data-extra', selectExtraServicePrice); } suitExtraService($view, selectExtraServiceName); $('.pet-info', $view).html(petName + ' (' + petWeight + ')'); $('.pet-type', $view).html(petName + ' (' + petWeight + ')'); $('.total-cost', $view).html('¥' + petPrice); if ( $('.calc-items', $view).find('.select-extra-service').hasClass('on') ) { $('.calc-items', $view).removeClass('hide'); petPrice = parseFloat(petPrice) + parseFloat(selectExtraServicePrice); } $('.order-cost', $view).attr('data-costs', order.petPrice); $('.order-cost', $view).attr('data-extra', cachePageData.extraServicePrice); $('.order-cost', $view).html('¥' + petPrice); $('.select-pet', $view).removeClass('hide'); if (order['productID'] && order.bookingDate) { setCoupon($view, pageData, cachePageData.extraServicePrice); } pageData.scroll.refresh(); resetTech($view); } } }]); }, $view); // 断尾 $.newTouch('.btn-sub', function(event) { if (cachePageData.DW.count <= 1) return; cachePageData.DW.count --; order.productCount = cachePageData.DW.count; $('.total-cost', $view).html('¥' + order.petPrice * cachePageData.DW.count); $('.order-cost', $view).attr('data-costs', order.petPrice * cachePageData.DW.count); $('.service-count', $view).find('.num').html(cachePageData.DW.count); payCharge(); setCoupon($view, pageData, cachePageData.extraServicePrice); }, $view); $.newTouch('.btn-add', function(event) { cachePageData.DW.count ++; order.productCount = cachePageData.DW.count; $('.total-cost', $view).html('¥' + order.petPrice * cachePageData.DW.count); $('.order-cost', $view).attr('data-costs', order.petPrice * cachePageData.DW.count); $('.service-count', $view).find('.num').html(cachePageData.DW.count); payCharge(); setCoupon($view, pageData, cachePageData.extraServicePrice); }, $view); // 选择时间 $.newTouch('.show-time-picker', function (event) { event.preventDefault(); if (!order.productID) { $doc.trigger('spa:openpanel', ['simpleAlert', { message: '请选择宠物类型' }]); return; } //新版数据选择器 var dayNamesA = ['周日', '周一', '周二', '周三', '周四', '周五', '周六']; var dayNamesB = ['今天']; var columns = { columnDay: [], columnTime: [] }; var now = new Date().getHours(); var daySelectIndex = 0; for (var i = 0; i < 9; i++) { var dd = new Date(); dd.setDate(dd.getDate() + i); var month = dd.getMonth() + 1; var day = dd.getDate(); var date = month + '月' + day + '日'; var dayStr = helper.getDateStr({ date: dd, separator: '-' }); var dayStrSuffix; if (i < dayNamesB.length) { dayStrSuffix = dayNamesB[i]; } else { dayStrSuffix = dayNamesA[dd.getDay()]; } var selected = false; if (order.bookingDate) { selected = true; } if (dayStr == order.bookingDate) { daySelectIndex = i; } else { daySelectIndex = -1; } columns.columnDay.push({ text: date, // 几月几日 day: dayStrSuffix, // 周几 value: dayStr, selected: selected, selectIndex: daySelectIndex }); } var currentDate = new Date(); var currentMonth = currentDate.getMonth() + 1; var currentDay = currentDate.getDate(); var now = new Date().getHours(); var min = new Date().getMinutes(); var timeSelectIndex = 0; for (var i = 9; i <= 19; i++) { var hour = i + ':00'; var selected = false; if (order.bookingTime) { selected = true; } if (hour == order.bookingTime) { timeSelectIndex = i; } else { timeSelectIndex = -1; } columns.columnTime.push({ month: currentMonth, day: currentDay, min: min, num: i, now: now, text: hour, value: hour, selected: selected, selectIndex: timeSelectIndex }) } $doc.trigger('spa:openpanel', ['dataPicker', { type: cachePageData.productType, columns: columns, selected: order.bookingDate, offDay: product.offDay, callback: { onSelect: function(values, texts, precedence){ var couponValue = 0; var precedenceCost = product.precedence; if(order.couponID){ couponValue = user.getCouponValue(order.couponID); } if(precedence) { $('.select-precedence', $view).removeClass('hide').find('.precedence-cost').html('¥' + precedenceCost); $('.order-cost', $view).attr('data-precedence', precedenceCost); } else { $('.select-precedence', $view).addClass('hide').find('.precedence-cost').html('¥ 0'); $('.order-cost', $view).attr('data-precedence', '0'); } // payCharge(); // pageData.scroll.refresh(); order.bookingDate = values[0]; order.bookingTime = values[1]; order.bookingTimeStr = texts[0] + ' ' + texts[1]; order.precedence = precedence; $('.booking-time', $view).html(order.bookingTimeStr); setCoupon($view, pageData, cachePageData.extraServicePrice); resetTech($view); } } }]); }, $view); // 选择优惠 $.newTouch('.show-coupon-picker', function (event) { if ($(this).hasClass('disabled')) return; event.preventDefault(); if (!order.productID) { $doc.trigger('spa:openpanel', ['simpleAlert', { message: '请选择宠物类型' }]); return; } if (!order.bookingDate) { $doc.trigger('spa:openpanel', ['simpleAlert', { message: '请选择服务时间' }]); return; } var coupons = $.extend(true, [], user.orderCoupons); for (var i in coupons) { if (coupons[i]['id'] == order.couponID) { coupons[i]['selected'] = true; break; } } $doc.trigger('spa:navigate', { hash: 'picker', pushData: { options: coupons, unuseables: user.unuseable_coupons, temp: 'picker/coupon', title: '选择优惠券', backHash: 'placeOrder', pickType: 'coupon', products: JSON.stringify([{ product_id: cart['products'][cachePageData.productType]['productID'], count: 1 }]), type: cachePageData.productType, needReload: true }, callback: { onSelect: function(pickValue) { order.couponID = pickValue; var precedenceTmp = 0; var couponValue = user.getCouponValue(pickValue); var $pay = $('.order-cost', $view); if (pickValue == '') { cart['products'][cachePageData.productType]['couponName'] = ''; cart['products'][cachePageData.productType]['couponVal'] = ''; cart['products'][cachePageData.productType]['couponId'] = ''; $('.coupon-selected-name', $view).html('不使用'); $('.select-coupon', $view).addClass('hide'); $pay.attr('data-coupon', '0'); } else { cart['products'][cachePageData.productType]['couponName'] = user.getCouponName(pickValue); cart['products'][cachePageData.productType]['couponVal'] = couponValue; cart['products'][cachePageData.productType]['couponId'] = pickValue; $('.coupon-selected-name', $view).html(user.getCouponName(pickValue)); $('.select-coupon', $view).removeClass('hide').find('.coupon-cost').html('- ' + couponValue); $pay.attr('data-coupon', couponValue); } payCharge(); } } }); }, $view); // 切换用户协议 $.newTouch('.agreement-touch-area', function(event) { var agreementObj = $('.agreement-checkbox', $view); if (agreementObj.prop('checked')) { agreementObj.prop('checked', false); $('.btn-place').addClass('disable'); } else { agreementObj.prop('checked', true); $('.btn-place').removeClass('disable'); } }, $view); // 查看用户协议 $.newTouch('.agreement', function(event) { $doc.trigger('spa:navigate', { hash: 'agreement' }); }, $view); // 提交订单 $.newTouch('.btn-place', function (event) { event.preventDefault(); if ($(this).hasClass('disable')) { return false; } if (!order.address) { $doc.trigger('spa:openpanel', ['simpleAlert', { message: '请选择地址' }]); return; } if (order.bookingDate == '' || order.bookingTime == '') { $doc.trigger('spa:openpanel', ['simpleAlert', { message: '请选择上门时间' }]); return; } var payChannel = 'wz_app'; if (config.isWX) { payChannel = 'wx_pub'; } else if (config.isChubao) { payChannel = 'chubao'; } else { payChannel = 'wz_app'; } $('.order-memo', $view).blur(); order.set('memo', $('.order-memo', $view).val()); order.set('productType', cachePageData.productType); order.couponID = cart['products'][cachePageData.productType]['couponId']; $doc.trigger('spa:openloader'); order.addOrder( user.id, payChannel, function (res) { $doc.trigger('spa:closeloader'); if (res.success) { user.orders[1].data.push(res.data); var orderID = order.id; order.reset(); $('.booking-time', $view).html('请选择'); // 选择新的最大值优惠券 var oldCouponList = cart['products'][cachePageData.productType]['couponList']; var oldCouponId = cart['products'][cachePageData.productType]['couponId']; var newCouponList = []; $.each(oldCouponList, function(index, val) { if (val.id !== oldCouponId) { newCouponList.push(oldCouponList[index]) }; }); user.orderCoupons = newCouponList; cart['products'][cachePageData.productType]['couponList'] = newCouponList; if (newCouponList.length) { var newselectedCoupon = user.getMaxAvailableCoupon(); cart['products'][cachePageData.productType]['couponName'] = newCouponList[newselectedCoupon.couponIndex].coupon.name || ''; cart['products'][cachePageData.productType]['couponVal'] = newselectedCoupon.couponSelectVal || ''; cart['products'][cachePageData.productType]['couponId'] = newCouponList[newselectedCoupon.couponIndex].id || ''; } else { cart['products'][cachePageData.productType]['couponName'] = ''; cart['products'][cachePageData.productType]['couponVal'] = ''; cart['products'][cachePageData.productType]['couponId'] = ''; } // cart.setCache('products'); if (res.data.status == 1) { $doc.trigger('spa:navigate', { hash: 'paySuccess' }); } else { $doc.trigger('spa:navigate', { hash: 'pay', pushData: { orderID: orderID, backHash: '', } }); } } else { $doc.trigger('spa:openpanel', ['simpleAlert', { message: res.message }]); } }); }, $view); dtd.resolve(); }, beforeopen: function (pageData, dtd) { var $view = this; var pushData = pageData.pushData; var productType = pushData.productType; var serviceType = pushData.serviceType; cachePageData.extraServiceCount = 0; if (pushData.hasOwnProperty('needReset') && pushData.needReset) { var $doc = $(document); pushData.needReset = false; cachePageData.DW.count = 1; cachePageData.productType = productType; cachePageData.serviceType = serviceType; var pay = order.cost; // 获取本地宠物信息 var petName = cart['petInfo']['petName']; var petWeight = cart['petInfo']['petWeight']; var petMaxWeight = cart['petInfo']['petMaxWeight']; var petMinWeight = cart['petInfo']['petMinWeight']; var petPrice = 0; var productID = cart['petInfo']['productID']; var precedencePrice = 0; if (order.precedence) { precedencePrice = product.precedence; } else { precedencePrice = 0; } if (cachePageData.productType > 10) { var typeName = cachePageData.defaultExtraService[cachePageData.productType].serviceName; var tmpData = { env: config, productLists: product.suitableService(cachePageData.productType, typeName), prodcutTitle: product.getProductTitle(productType), extraService: '', extraServiceType: cachePageData.productType, extraServicePrice: cachePageData.defaultExtraService[cachePageData.productType].servicePrice, petName: '', petWeight: '', petPrice: '', beauticianName: order.beautician.name, bookingTimeStr: order.bookingTimeStr, address: order.address, showCoupon: '', couponName: '', couponVal: 0, precedence: precedencePrice, showNavBar: !config.isWX && !config.isChubao, productType: product.getGroupFullName(parseInt(productType)), totalCost: petPrice, pay: pay }; var tpl = template('placeOrder/index', tmpData); $view.find('.spa-page-body').html(tpl); // $('.calc-items', $view).removeClass('hide'); } else { var suitablePet = product.isSuitablePet(cachePageData.productType, petName, petMaxWeight, petMinWeight); order.productType = cachePageData.productType; if (!!suitablePet.petPrice) { petPrice = suitablePet.petPrice; pay = petPrice; order.set('productID', suitablePet.productID); order.petPrice = petPrice; } else { petName = ''; petWeight = ''; petMaxWeight = ''; petMinWeight = ''; petPrice = 0; productID = ''; cart['products'][cachePageData.productType]['couponName'] = ''; cart['products'][cachePageData.productType]['couponVal'] = ''; cart['products'][cachePageData.productType]['couponId'] = ''; } // 设置订单优惠券 // order.set('couponID', cart['products'][cachePageData.productType]['couponId']); var extraService = product.getExtraServiceList(cachePageData.productType, petName); var tmpData = { env: config, prodcutTitle: product.getProductTitle(productType), extraService: extraService, extraServicePrice: 0, petName: petName, petWeight: petWeight, petPrice: petPrice, beauticianName: order.beautician.name, bookingTimeStr: order.bookingTimeStr, address: order.address, showCoupon: (user.orderCoupons.length > 0), couponName: '', couponVal: 0, precedence: precedencePrice, showNavBar: !config.isWX && !config.isChubao, productType: product.getGroupFullName(parseInt(productType)), type: productType, totalCost: petPrice, pay: pay }; var tpl = template('placeOrder/index', tmpData); $view.find('.spa-page-body').html(tpl); } fixScroll(pageData); //弹出键盘 关闭键盘的时候刷新iscroll $('.order-memo', $view).focus(function (event) { var that = this; checkScroll(pageData, function () { if (pageData.scroll) { pageData.scroll.scrollToElement(that, 0); } }); }); // $('.show-coupon-picker').addClass('disabled').find('.coupon-selected-name').text('优惠券暂不可使用'); $('.order-memo', $view).on('closeKeyboard', function (event) { checkScroll(pageData); $(this).blur(); }); $('.order-memo', $view).blur(function (event) { checkScroll(pageData); }); //阻止form提交 $('#order-form', $view).on('submit', function (event) { $(this).blur(); return false; }); if (productType == 6 || productType == 7) { var petInfo = product.productGroup[productType][0]; $('.pet-info', $view).html(petInfo['pet_types'][0]['name']); $('.pet-type', $view).html(petInfo['pet_types'][0]['name']); $('.total-cost', $view).html('¥' + petInfo.price); $('.order-cost', $view).html('¥' + petInfo.price); $('.order-cost', $view).attr('data-pay', petInfo.price); $('.order-cost', $view).attr('data-costs', petInfo.price); order.petPrice = parseFloat(petInfo.price); order.productID = petInfo.id; $('.select-pet', $view).removeClass('hide'); $('.extra-service-title', $view).addClass('hide'); } if (order.productID && order.bookingDate && productType < 10) { setCoupon($view, pageData, cachePageData.extraServicePrice); } } if (order.address) { var addressStr = ''; if (order.address.address.poi) { addressStr = order.address.address.city + order.address.address.area + order.address.address.poi.name + order.address.address.detail } else { addressStr = order.address.address.province + order.address.address.city + order.address.address.area + order.address.address.detail } $('.order-address', $view).html(addressStr); $('.select-address', $view).addClass('show-address'); $('.order-username', $view).html(order.address.name); $('.order-mobile', $view).html(order.address.mobile); $('.booking-people', $view).html(order.beautician.name); } if (order.beautician.id) { $('.booking-people', $view).html(order.beautician.name); } dtd.resolve(); }, afteropen: function(pageData, dtd){ var type = pageData.pushData.productType; native.registerEvent(true); dtd.resolve(); if (config.isWX) { wx.ready(function(){ wx.onMenuShareTimeline({ title: '家政服务' + product.getWXShare(type).name + ',首选壹管家', link: 'http://www.yiguanjia.me/o2o/web/index', imgUrl: product.getWXShare(type).className }); wx.onMenuShareAppMessage({ title: '家政服务' + product.getWXShare(type).name + ',首选壹管家', desc: '全程管家,精心每一个细节', link: 'http://www.yiguanjia.me/o2o/web/index', imgUrl: product.getWXShare(type).className }); }); } }, afterclose: function(pageData){ cachePageData.extraServicePrice = 0; order.productCount = 1; order.extraService = []; // 离开下单页面 清空附加服务列表 order.beautician = { name: '请选择', id: '' }; native.registerEvent(false); } } })