define(['$', 'template', 'order', 'native', 'helper', 'user', 'api', 'config', 'address', 'IScroll'], function ($, template, order, native, helper, user, api, config, address, IScroll) { /* * 这里对product和order做一个说明。 * product前台写死。order沿用原模型,但只用其中几个字段。 * 对应关系如下: * product.id == order.productID :产品ID * product.type == order.productType :产品类型,约定的数字 * product.price == order.cost :订单原价,当product的extra字段为空 * product.extra.price == order.cost :订单原价,当product的extra字段不为空 * product.type_str == order.serviceName :服务名称 * product.extra.type == order.appendID :服务的额外选项,当product的extra字段不为空 */ /* 从首页传来的产品数据 */ var product; var backHash; /* 软键盘弹出与消失时布局变动。 */ 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: backHash, pushData: { dontNeedReload: true } }); } /* 重置页面时调用,重新生成IScroll */ function fixScroll (pageData) { // setInterval(function () { // if (product.name == "首单日常保洁2小时体验") { // $('.selected').css('display', 'none'); // } // }, 100); if (pageData.scroll) { pageData.scroll.destroy(); pageData.scroll = null; } var placeOrderScroll; setTimeout(function () { pageData.scroll = new IScroll('#placeOrderScroll'); }, 700); } /* 算账。 */ function payCharge ($orderCost) { order.payValue = order.cost - order.couponValue; $orderCost.text('¥' + order.payValue); } /* 也是自动选取最大优惠券的操作,只是与setCoupon策略不同 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 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); } */ return { title: '壹管家上门服务', body: '', init: function (pageData, dtd) { var $view = this; var $doc = $(document); /* 三个返回操作 */ $.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); }); /* 点击查看详情。跳转到product页面 */ $.newTouch('.product-pic-o2o', function (event) { $doc.trigger('spa:navigate', { hash: 'product', pushData: { produc: product, needReload: true } }); }, $view); /*特效*/ // setInterval(function run() { // $('.product-img').fadeToggle(); // }, 500); /* 点击选择extra。 */ $.newTouch('.btn-main-service', function (event) { /* on代表这一条的选中状态。如果已经选中了,就return。this的作用域是这一条extra。 */ if ($(this).hasClass('on')) return; /* 如果没有on状态,加上on。 */ $(this).addClass('on'); /* 删掉其他选择框的on状态 */ $(this).parent().siblings().find('.btn').removeClass('on'); /* 填写order */ order.appendID = $(this).attr('data-extra-type'); order.price = $(this).attr('data-extra-price'); order.cost = order.price * order.productCount; // 重置代金券 $('.coupon-selected-name', $view).html('选择优惠券'); order.couponValue = 0; order.couponID = ''; payCharge($('.order-cost', $view)); }, $view); /* 点击选择地址 */ $.newTouch('.select-address', function (event) { event.preventDefault(); /* 如果是微信客户端,跳转到addressList页面。 */ if (!config.isAndroid && !config.isIOS) { $doc.trigger('spa:navigate', { hash: 'addressList', pushData: { backHash: 'placeOrder' }, callback: { /* 在addressList页面挑选之后,回到这个页面时执行的回调。 */ onSelect: function (address, station) { order.set('address', address, true); order.set('stationID', station, true); 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); $('.order-username', $view).html(order.address.name); $('.order-mobile', $view).html(order.address.mobile); } } }); } }, $view); /* 点击选择附加服务 $.newTouch('.item-checkbox', function (event) { event.preventDefault(); // 如果'.main-service'元素的子元素数目为正(也就是说出现了选择主服务那一栏,也就是说在前一页选择的是附加服务),且不处于on状态(也就是还没有选择主服务) if ($('.main-service', $view).length && !$('.main-service', $view).find('.btn-main-service').hasClass('on')) { // 弹出一个对话框 $doc.trigger('spa:openpanel', ['simpleAlert', { message: '请选择服务类型' }]); return; } // $(this).data('xxx'):获取this中data-xxx的数据。 // 获取这一条附加服务的相关的数据。select没用,估计是原来想用这个记录选中状态的。 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')) { // 附加服务数量+1 cachePageData.extraServiceCount++; // 保存附加服务的总价格 cachePageData.extraServicePrice += parseFloat(price); // 添加checked状态 $(this).addClass('checked'); var serviceParam = { product_id: id, count: 1 } // /为什么是个数组? order.extraService[index] = serviceParam; // 把订单详情中对应的项目添加on属性 $('.calc-items', $view).find('.select-extra-service').eq(index).addClass('on'); // 计算附加服务的总费用。 extraCost = parseFloat(extraCost) + parseFloat(price); $('.order-cost', $view).attr('data-extra', extraCost); } // 如果原来选中了这一项,下面就是取消选中的操作 else { // 附加服务数量-1 cachePageData.extraServiceCount--; // 保存附加服务的总价格 cachePageData.extraServicePrice -= parseFloat(price); // 删除checked属性 $(this).removeClass('checked'); order.extraService[index] = {}; // 把订单详情中对应的项目删掉on属性 $('.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(); // 刷新界面 pageData.scroll.refresh(); }, $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 = [order.productType]; var service_type = '[' + service_type_array.join(',') + ']'; // 根据服务、时间、地址,向服务器请求保洁师列表 user.getTechList( service_type, bookingTime, order.address.address_id, // 请求成功后跳转到beautician页面,在beautician页面展示保洁师列表 function (res) { $doc.trigger('spa:navigate', { hash: 'beautician', pushData: { } }); } ); }, $view); */ /* 点击选择宠物相关 $.newTouch('.show-product-picker', function () { // 如果有了selected属性,就return if ($(this).hasClass('selected')) return; event.preventDefault(); // 主服务>10是什么意思??? 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(); } } }]); }, $view); */ /* 点击数量-1 */ $.newTouch('.btn-sub', function (event) { if (order.productCount <= 1) return; if (order.price == 0) { $doc.trigger('spa:openpanel', ['simpleAlert', { message: '请选择服务' }]); return; } var inputNum = $('.service-count', $view).children('.input-num').val(); if (isNaN(inputNum)) { $doc.trigger('spa:openpanel', ['simpleAlert', { message: '请输入数字' }]); return false; } order.productCount = inputNum; order.productCount--; order.cost = order.productCount * order.price; $('.service-count', $view).children('.input-num').val(order.productCount); /* 算账 */ payCharge($('.order-cost', $view)); }, $view); /*点击body重置金额*/ $.newTouch('body', function (event) { //input输入 var inputNum = $('.service-count', $view).children('.input-num').val(); if (isNaN(inputNum)) { $doc.trigger('spa:openpanel', ['simpleAlert', { message: '请输入数字' }]); return false; } //与input输入框的文本的数据做交互; order.productCount = inputNum; order.cost = order.productCount * order.price; $('.service-count', $view).children('.input-num').val(order.productCount); }) /* 点击数量+1 */ $.newTouch('.btn-add', function (event) { if (order.productCount > 999) return; if (order.price == 0) { $doc.trigger('spa:openpanel', ['simpleAlert', { //message: '请选择extra' message: '请选择服务' }]); return; } var inputNum = $('.service-count', $view).children('.input-num').val(); if (isNaN(inputNum)) { $doc.trigger('spa:openpanel', ['simpleAlert', { message: '请输入数字' }]); return false; } order.productCount = inputNum; order.productCount++; order.cost = order.productCount * order.price; $('.service-count', $view).children('.input-num').val(order.productCount); /* 算账 */ payCharge($('.order-cost', $view)); }, $view); /* 点击选择时间 */ $.newTouch('.show-time-picker', function (event) { event.preventDefault(); // 以下是构建时间选择器,不用管。直接看选完之后的回调。 var dayNamesA = ['周日', '周一', '周二', '周三', '周四', '周五', '周六']; var dayNamesB = ['今天']; var columns = { columnDay: [], columnTime: [] }; //获取现在的‘时’ var now = new Date().getHours(); var daySelectIndex = 0; //这里修改预约日期 提前2天预约 for (var i = 2; 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.columnTime 中 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; // 设定工作时间早上9:00 - 晚上 19:00 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 中 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: { // 选完之后的回调。values:[日期,时间];texts:时间字符串;precedence:是否加急; onSelect: function (values, texts, precedence) { // 重置代金券 $('.coupon-selected-name', $view).html('选择优惠券'); order.couponValue = 0; order.couponID = ''; payCharge($('.order-cost', $view)); // 填写order order.bookingDate = values[0]; order.bookingTime = values[1]; order.bookingTimeStr = texts[0] + ' ' + texts[1]; order.precedence = precedence; // 更新预定时间组件 $('.booking-time', $view).html(order.bookingTimeStr); } } }]); }, $view); /* 点击选择优惠券 */ $.newTouch('.show-coupon-picker', function (event) { if ($(this).hasClass('disabled')) return; event.preventDefault(); var extraJson = ''; if (product.extra && !order.appendID) { $doc.trigger('spa:openpanel', ['simpleAlert', { message: '请选择服务' }]); return; } else { extraJson = JSON.stringify([{type: order.appendID, price: order.price}]); } // 必须先选择时间 if (!order.bookingDate) { $doc.trigger('spa:openpanel', ['simpleAlert', { message: '请选择服务时间' }]); return; } // 跳转到picker页面,展示优惠券 $doc.trigger('spa:navigate', { hash: 'picker', pushData: { title: '选择优惠券', backHash: 'placeOrder', products: JSON.stringify([{ product_id: order.productID, count: order.productCount }]), time: order.bookingDate + ' ' + order.bookingTime + ':00', type: order.productType, extraJson: extraJson }, callback: { // 在picker页面挑选之后,回到这个页面时执行的回调。pickValue:选中的优惠券的ID; onSelect: function (pickValue) { if (pickValue == '') { $('.coupon-selected-name', $view).text('不使用'); order.couponValue = 0; } else { for (var i in user.orderCoupons) { var couponInfo = user.orderCoupons[i]; if (couponInfo.id == pickValue) { $('.coupon-selected-name', $view).text(couponInfo['coupon']['name']); order.couponValue = couponInfo['coupon']['value']; break; } } } // 填写order order.couponID = pickValue; // 计算总费用 payCharge($('.order-cost', $view)); } } }); }, $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); /* 跳转到agreement页面查看协议 */ $.newTouch('.agreement', function (event) { $doc.trigger('spa:navigate', { hash: 'agreement' }); }, $view); /* 点击下订单 */ $.newTouch('.btn-place', function (event) { event.preventDefault(); console.log(order); // 判断布艺沙发下单数量少于5套 if (order.appendID === "布艺沙发") { if (order.productCount < 5) { $doc.trigger('spa:openpanel', ['simpleAlert', { message: '布衣沙发5套起购' }]); return; } } if ($(this).hasClass('disable')) { return false; } //擦玻璃数量少于10平米 if (product.type_str == "擦玻璃" && order.productCount < 10) { $doc.trigger('spa:openpanel', ['simpleAlert', { message: '数量不少于10平米' }]); return; } // 新居开慌的数量少于50平米 if (product.type_str == "新居开荒" && order.productCount < 50) { $doc.trigger('spa:openpanel', ['simpleAlert', { message: '数量不少于50平米' }]); return; } // 民宿保洁的数量少于10平米 if (product.type_str == "民宿保洁" && order.productCount < 10) { $doc.trigger('spa:openpanel', ['simpleAlert', { message: '数量不少于10平米' }]); return; } //未选择服务 if (product.extra && !order.appendID) { $doc.trigger('spa:openpanel', ['simpleAlert', { message: '请选择服务' }]); return; } //未选择服务时间 if (order.bookingTime === "") { $doc.trigger('spa:openpanel', ['simpleAlert', { message: '请选择服务时间' }]); return; } // 地址为空 if (!order.address) { $doc.trigger('spa:openpanel', ['simpleAlert', { message: '请选择地址' }]); return; } var payChannel = 'wx_pub'; /* 使备注输入框失去焦点,获取值 */ $('.order-memo', $view).blur(); order.set('memo', $('.order-memo', $view).val()); /* 向服务器下订单 */ $doc.trigger('spa:openloader'); // 判断用户余额大于等于订单金额,满足条件走余额支付 if (user.balance >= order.payValue) { order.balance = order.payValue; order.payValue = 0; } else { // 不满足条件走混合支付 order.balance = user.balance; order.payValue = order.payValue - order.balance; } // 在系统后台添加新增订单 order.addOrder(user.id, payChannel, function (res) { $doc.trigger('spa:closeloader'); if (res.success) { // 更新user的订单 user.orders[1].data.push(res.data); // 更新user的优惠券 var oldCouponList = user.orderCoupons; var oldCouponId = order.couponID; var newCouponList = []; $.each(oldCouponList, function (index, val) { if (val.id !== oldCouponId) { newCouponList.push(oldCouponList[index]) } }); user.orderCoupons = newCouponList; var orderID = order.id; order.reset(); //清空order内的值 $('.booking-time', $view).html('请选择'); // status = 1 表示新增订单添加成功 if (res.data.status == 1) { $doc.trigger('spa:navigate', { hash: 'paySuccess' }); } else { // 跳转到pay调用微信支付 $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) { /*地址- setInterval-setTimeout*/ /*地址-setInterval-setTimeout*/ setTimeout(function () { if ($('.booking-time').html() == "选择服务时间" && order.bookingTimeStr.length > 0) { $('.booking-time', $view).html(order.bookingTimeStr); } /*隐藏广告位*/ // $('.product-pic-o2o').css('display', 'none'); /*当用户没有地址时*/ var defaultAddress = address.defaultAddress; /*未登录*/ if (user.id.length == 0) { $('.order-mobile').html('添加服务地址'); } else if (user.id.length != 0 && typeof(defaultAddress) !== "undefined") { api.checkAddress({ address_id: defaultAddress.address_id, user_id: user.id }, function (res) { if (res.success) { if ($('.order-username').html() == "") { order.address = address.defaultAddress; order.stationID = res.data.station; $('.order-username').html(defaultAddress.name); $('.order-mobile').html(defaultAddress.mobile); $('.order-address').html(defaultAddress.address.city + defaultAddress.address.area + defaultAddress.address.detail).css('text-align', 'right'); } } else { $('.order-mobile').html('添加服务地址'); } }) } else if (user.id.length != 0 && typeof(defaultAddress) == "undefined") { $('.order-mobile').html('添加服务地址'); } }, 500); var $view = this; var pushData = pageData.pushData; /* 只有首页跳转来,才会带有needReset = true */ /*获取上一页跳转的路由名称*/ backHash = pushData.backHash ? pushData.backHash : ''; if (pushData.hasOwnProperty('needReset') && pushData.needReset) { /* 接收首页传来的product,填写order的productType(产品类型)、productID(产品ID)两个字段 */ pushData.needReset = false; product = pushData.product; order.productType = product.type; order.productID = product.id; order.productCount = 1; order.couponValue = 0; /* 根据product建立渲染页面的数据 */ var tmpData = { /* 环境,目前只决定是否显示保洁师 */ env: config, /* 环境 */ showNavBar: !config.isWX && !config.isChubao, imgSrc: product.imgSrc, /* 标题栏的标题 */ title: product.name, /* extra选择项 */ extra: product.extra, /* 如果用户有优惠券,则显示优惠券的选择栏 */ showCoupon: user.orderCoupons.length, /* 账户余额 */ balance: user.balance }; /* 渲染页面 */ var tpl = template('placeOrder/index', tmpData); $view.find('.spa-page-body').html(tpl); /* 绑定费用数据 */ if (product.extra) { order.price = 0; order.cost = 0; } else { order.price = product.price; order.cost = product.price * order.productCount; } payCharge($('.order-cost', $view)); /* 软键盘相关操作时对IScroll的补偿 */ fixScroll(pageData); $('.order-memo', $view).focus(function (event) { var that = this; checkScroll(pageData, function () { if (pageData.scroll) { pageData.scroll.scrollToElement(that, 0); } }); }); $('.order-memo', $view).on('closeKeyboard', function (event) { checkScroll(pageData); $(this).blur(); }); $('.order-memo', $view).blur(function (event) { checkScroll(pageData); }); /* 填写备注时,提交按钮失焦 */ $('#order-form', $view).on('submit', function (event) { $(this).blur(); return false; }); } 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.desc[1].content + ',首选壹管家', link: 'http://www.yiguanjia.me/o2o/web/index', imgUrl: product.desc[0].content }); wx.onMenuShareAppMessage({ title: '家政服务' + product.desc[1].content + ',首选壹管家', desc: '全程管家,精心每一个细节', link: 'http://www.yiguanjia.me/o2o/web/index', imgUrl: product.desc[0].content }); }); } }, afterclose: function (pageData) { native.registerEvent(false); } } })