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; /* 软键盘弹出与消失时布局变动。 */ 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 } }); } /* 重置页面时调用,重新生成IScroll */ function fixScroll(pageData) { if (pageData.scroll) { pageData.scroll.destroy(); pageData.scroll = null; } var placeOrderScroll; setTimeout(function () { pageData.scroll = new IScroll('#placeOrderScroll'); }, 50); } /* 算账。 */ function payCharge($orderCost) { // 原价 var cost = $orderCost.data('cost'); // 优惠 var coupon = $orderCost.data('coupon'); // 结算 var pay = parseFloat(cost) - parseFloat(coupon); $orderCost.data('pay', pay); $orderCost.text('¥' + pay); } /* 也是自动选取最大优惠券的操作,只是与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', function (event) { $doc.trigger('spa:navigate', { hash: 'product', pushData: { needReload: true } }); }, $view); /* 点击选择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; /* 算账 */ var $orderCost = $('.order-cost', $view); $orderCost.data('cost', order.cost); payCharge($orderCost); }, $view); /* 点击选择地址 */ $.newTouch('.select-address', function (event) { event.preventDefault(); /* 如果是微信客户端,跳转到addressList页面。 */ if (!config.isAndroid && !config.isIOS) { $doc.trigger('spa:navigate', { hash: 'addressList', pushData: { needReload: true }, 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; order.productCount--; order.cost = order.productCount * product.price; $('.service-count', $view).find('.num').html(order.productCount); /* 算账 */ var $orderCost = $('.order-cost', $view); $orderCost.data('cost', order.cost); payCharge($orderCost); }, $view); /* 点击数量+1 */ $.newTouch('.btn-add', function (event) { if (order.productCount >= 99) return; order.productCount++; order.cost = order.productCount * product.price; $('.service-count', $view).find('.num').html(order.productCount); /* 算账 */ var $orderCost = $('.order-cost', $view); $orderCost.data('cost', order.cost); payCharge($orderCost); }, $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; 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: { // 选完之后的回调。values:[日期,时间];texts:时间字符串;precedence:是否加急; 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'); // } // 填写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(); // 必须先选择时间 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; } } // 跳转到picker页面,展示优惠券 $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: order.productID, count: 1 }]), type: order.productType, needReload: true }, callback: { // 在picker页面挑选之后,回到这个页面时执行的回调。pickValue:选中的优惠券的ID; onSelect: function (pickValue) { var $orderCost = $('.order-cost', $view); if (pickValue == '') { $('.coupon-selected-name', $view).html('不使用'); // $('.select-coupon', $view).addClass('hide'); $orderCost.data('coupon', '0'); } else { $('.coupon-selected-name', $view).html(user.getCouponName(pickValue)); // $('.select-coupon', $view).removeClass('hide').find('.coupon-cost').html('- ' + couponValue); $orderCost.data('coupon', user.getCouponValue(pickValue)); } // 填写order order.couponID = pickValue; // 计算总费用 payCharge($orderCost); } } }); }, $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(); if ($(this).hasClass('disable')) { return false; } if (product.extra.length && !order.appendID) { $doc.trigger('spa:openpanel', ['simpleAlert', { message: '请选择extra' }]); return; } if (!order.address) { $doc.trigger('spa:openpanel', ['simpleAlert', { message: '请选择地址' }]); return; } if (!order.bookingTimeStr) { $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'); order.balance = user.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(); $('.booking-time', $view).html('请选择'); 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; /* 只有首页跳转来,才会带有needReset = true */ 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; if (!product.extra.length){ order.price = product.price; order.cost = product.price * order.productCount; } /* 根据product建立渲染页面的数据 */ var tmpData = { /* 环境,目前只决定是否显示保洁师 */ env: config, /* 环境 */ showNavBar: !config.isWX && !config.isChubao, /* 标题栏的标题 */ title: product.type_str, /* 是否显示extra选择项 */ showExtra: product.extra.length, /* extra选择项 */ extra: product.extra, /* 如果用户有优惠券,则显示优惠券的选择栏 */ showCoupon: user.orderCoupons.length, /* 账户余额 */ balance: user.balance }; /* 渲染页面 */ var tpl = template('placeOrder/index', tmpData); $view.find('.spa-page-body').html(tpl); /* 绑定费用数据 */ var $orderCost = $('.order-cost', $view); if (product.extra.length){ $orderCost.data('cost', '0'); }else { $orderCost.data('cost', product.price); } $orderCost.data('coupon', '0'); payCharge($orderCost); /* 软键盘相关操作时对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); } } })