|
@@ -1,978 +1,984 @@
|
|
|
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);
|
|
|
+ /*
|
|
|
+ * 这里对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);
|
|
|
|
|
|
- /* 返回上一级 */
|
|
|
- function back(event) {
|
|
|
+ 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();
|
|
|
- $(document).trigger('spa:navigate', {
|
|
|
- hash: backHash,
|
|
|
+ /* 如果是微信客户端,跳转到addressList页面。 */
|
|
|
+ if (!config.isAndroid && !config.isIOS) {
|
|
|
+ $doc.trigger('spa:navigate', {
|
|
|
+ hash: 'addressList',
|
|
|
pushData: {
|
|
|
- dontNeedReload: true
|
|
|
+ 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);
|
|
|
+ }
|
|
|
}
|
|
|
- });
|
|
|
- }
|
|
|
-
|
|
|
- /* 重置页面时调用,重新生成IScroll */
|
|
|
- function fixScroll(pageData) {
|
|
|
- // setInterval(function () {
|
|
|
- // if (product.name == "首单日常保洁2小时体验") {
|
|
|
- // $('.selected').css('display', 'none');
|
|
|
- // }
|
|
|
- // }, 100);
|
|
|
- if (pageData.scroll) {
|
|
|
- pageData.scroll.destroy();
|
|
|
- pageData.scroll = null;
|
|
|
+ });
|
|
|
+ }
|
|
|
+ }, $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 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);
|
|
|
- });
|
|
|
+ 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;
|
|
|
+ }
|
|
|
|
|
|
- /* 点击查看详情。跳转到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('选择优惠券');
|
|
|
+ // 跳转到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;
|
|
|
- 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;
|
|
|
+ } 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;
|
|
|
+ }
|
|
|
}
|
|
|
- //与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();
|
|
|
- if ($(this).hasClass('disable')) {
|
|
|
- return false;
|
|
|
- }
|
|
|
- if (product.type_str == "擦玻璃" && order.productCount < 10) {
|
|
|
- $doc.trigger('spa:openpanel', ['simpleAlert', {
|
|
|
- message: '数量不少于10平米'
|
|
|
- }]);
|
|
|
- return;
|
|
|
- }
|
|
|
-
|
|
|
- if (product.type_str == "新居开荒" && order.productCount < 50) {
|
|
|
- $doc.trigger('spa:openpanel', ['simpleAlert', {
|
|
|
- message: '数量不少于50平米'
|
|
|
- }]);
|
|
|
- return;
|
|
|
- }
|
|
|
- if (product.extra && !order.appendID) {
|
|
|
- $doc.trigger('spa:openpanel', ['simpleAlert', {
|
|
|
- message: '请选择服务'
|
|
|
- }]);
|
|
|
- return;
|
|
|
- }
|
|
|
- if (!order.address) {
|
|
|
- $doc.trigger('spa:openpanel', ['simpleAlert', {
|
|
|
- message: '请选择地址'
|
|
|
- }]);
|
|
|
- return;
|
|
|
- }
|
|
|
- if (!order.bookingTimeStr && product.name !== "双11虹口区日常保洁特价体验") {
|
|
|
- $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();
|
|
|
- $('.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) {
|
|
|
- /*地址- 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 : '';
|
|
|
+ }
|
|
|
+ // 填写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);
|
|
|
|
|
|
- if (pushData.hasOwnProperty('needReset') && pushData.needReset) {
|
|
|
+ /* 跳转到agreement页面查看协议 */
|
|
|
+ $.newTouch('.agreement', function (event) {
|
|
|
+ $doc.trigger('spa:navigate', {
|
|
|
+ hash: 'agreement'
|
|
|
+ });
|
|
|
+ }, $view);
|
|
|
|
|
|
- /* 接收首页传来的product,填写order的productType(产品类型)、productID(产品ID)两个字段 */
|
|
|
- pushData.needReset = false;
|
|
|
- product = pushData.product;
|
|
|
+ /* 点击下订单 */
|
|
|
+ $.newTouch('.btn-place', function (event) {
|
|
|
+ event.preventDefault();
|
|
|
+ if(order.appendID="布艺沙发"){
|
|
|
+ if(order.productCount<3){
|
|
|
+ $doc.trigger('spa:openpanel', ['simpleAlert', {
|
|
|
+ message: '布衣沙发3套起购'
|
|
|
+ }]);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if ($(this).hasClass('disable')) {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ if (product.type_str == "擦玻璃" && order.productCount < 10) {
|
|
|
+ $doc.trigger('spa:openpanel', ['simpleAlert', {
|
|
|
+ message: '数量不少于10平米'
|
|
|
+ }]);
|
|
|
+ return;
|
|
|
+ }
|
|
|
|
|
|
- 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;
|
|
|
+ if (product.type_str == "新居开荒" && order.productCount < 50) {
|
|
|
+ $doc.trigger('spa:openpanel', ['simpleAlert', {
|
|
|
+ message: '数量不少于50平米'
|
|
|
+ }]);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ if (product.extra && !order.appendID) {
|
|
|
+ $doc.trigger('spa:openpanel', ['simpleAlert', {
|
|
|
+ message: '请选择服务'
|
|
|
+ }]);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ if (!order.address) {
|
|
|
+ $doc.trigger('spa:openpanel', ['simpleAlert', {
|
|
|
+ message: '请选择地址'
|
|
|
+ }]);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ if (!order.bookingTimeStr && product.name !== "双11虹口区日常保洁特价体验") {
|
|
|
+ $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();
|
|
|
+ $('.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: ''
|
|
|
}
|
|
|
- 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
|
|
|
- });
|
|
|
- });
|
|
|
+ } 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('添加服务地址');
|
|
|
}
|
|
|
- },
|
|
|
- afterclose: function (pageData) {
|
|
|
- native.registerEvent(false);
|
|
|
+ })
|
|
|
+ } 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);
|
|
|
}
|
|
|
+ }
|
|
|
})
|