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