define(['$', 'template', 'user', 'config', 'native', 'IScroll', 'BMap'], function ($, template, user, config, native, IScroll, BMap) { function back(event) { event.preventDefault(); $(document).trigger('spa:navigate', { hash: 'myOrder/1' }); } var cachePageData = {}; var getPoiFn; return { title: '壹管家上门服务', body: '', init: function (pageData, dtd) { var productType = pageData.pushData.productType; 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); }); // 客服电话 $.newTouch('.service-telephone', function (event) { event.preventDefault(); native.call('4000328170'); }, $view); // 客服电话 $.newTouch('.j-phone', function (event) { event.preventDefault(); var phone = $(this).text(); native.call(phone); }, $view); // 去支付 $.newTouch('.order-btn-pay', function(event) { event.preventDefault(); $doc.trigger('spa:navigate', { hash: 'pay', pushData: { animate: 'slideInUp', orderID: $(this).data('order-id'), backHash: 'myOrder/1' } }); }, $view); // 取消 $.newTouch('.order-btn-cancel', function(event) { event.preventDefault(); var orderID = $(this).attr('data-order-id'); $doc.trigger('spa:openloader'); user.cancelOrder(orderID, function(res) { $doc.trigger('spa:closeloader'); if (res.success) { // reloadData.call($view, pageData, 1); $doc.trigger('spa:openpanel', ['simpleAlert', { message: '取消订单成功' }]); } else { $doc.trigger('spa:openpanel', ['simpleAlert', { message: res.message }]); } }) }, $view); // 去评价 $.newTouch('.order-btn-review', function(event) { var obj = $(this); if (obj.hasClass('disable')) { return false; } var orderID = obj.data('order-id'); $doc.trigger('spa:openpanel', ['postReview', { orderID: orderID, didPostReview: function() { $doc.trigger('spa:openpanel', ['simpleAlert', { message: '评价成功' }]); } }]); }, $view); // 申请退款 $.newTouch('.order-btn-refund', function(event) { var html = '4000328170'; if ($(this).hasClass('btn-alert-info')) { $doc.trigger('spa:openpanel', ['simpleAlert', { message: '预约时间两个小时内申请退款将扣除50%订单金额。确定退款请电话联系客服。', html: config.isWX ? html: '', buttons: [{ text: '取消', class: 'btn-default', callback: function() { } },{ text: '联系客服', class: 'btn-primary', callback: function() { native.call('4000328170'); } }] }]); return; } else { var orderID = $(this).attr('data-order-id'); $doc.trigger('spa:openpanel', ['simpleAlert', { title: '申请退款', message: '退款将退至您的支付账户', html: '(3-10个工作日内到账)', buttons: [{ text: '确定申请', class: 'btn-primary', callback: function() { user.refundOrder(orderID, function(res) { if (res.success) { $doc.trigger('spa:openpanel', ['simpleAlert', { message: '申请成功' }]); // $('.control-item', $view).eq(2).addClass('active').siblings().removeClass('active'); // reloadData.call($view, pageData, 2); } else { $doc.trigger('spa:openpanel', ['simpleAlert', { message: res.message }]); } }); } },{ text: '取消申请', class: 'btn-default', callback: function() { } }] }]); } }, $view); // 追加服务 $.newTouch('.order-btn-append', function(event) { var appendType = $(this).attr('data-type'); var orderID = $(this).attr('data-order-id'); var petName = $(this).attr('data-order-name'); var i = $(this).parents('.table-view').index(); $doc.trigger('spa:navigate', { hash: 'append', pushData: { appendType: appendType, orderID: orderID, petName: petName, index: cachePageData['index'] } }); }, $view); // 确认完成 $.newTouch('.order-btn-done', function(event) { event.preventDefault(); var orderId = $(this).attr('data-order-id'); $doc.trigger('spa:openpanel', ['simpleAlert', { message: '确认服务已完成?', buttons: [{ text: '确认', class: 'btn-primary', callback: function() { user.finishOrder(orderId, function(res) { if (res.success) { $doc.trigger('spa:navigate', { hash: 'order-done' }); } else { $doc.trigger('spa:openpanel', ['simpleAlert', { message: res.message }]); } }); } },{ text: '取消', class: 'btn-default', callback: function() { } }] }]); }, $view); dtd.resolve(); }, beforeopen: function (pageData, dtd) { var $view = this; var pushData = pageData.pushData; var index = pushData["index"]; cachePageData['index'] = index; var orderID = pageData.requestData[0]; user.getOrderDetail(orderID, function(res) { if (res.success) { var time = new Date().getTime(); var tpl = template('myOrder/detail', { showNavBar: !config.isWX && !config.isChubao, time: parseInt(time / 1000), order: res.data, orderID: orderID }); $view.find('.spa-page-body').html(tpl); setTimeout(function() { pageData.scroll = new IScroll('#myOrderDetailScroll' + orderID); }, 100); function initMap(lonitude, latitude) { var map = new BMap.Map("map-container-" + orderID); // 创建地图实例 var point = new BMap.Point(lonitude, latitude); // 创建点坐标 map.centerAndZoom(point, 16); var marker = new BMap.Marker(point); // 创建标注 map.addOverlay(marker); if (pageData && pageData.scroll) { pageData.scroll.refresh(); } } if (res.data.status == 4 && res.data.tech_info) { var name = res.data.tech_info.weixin_userid; function getPoi (){ $.ajaxJSONP({ url: 'http://n.yiguanjia.me/api/wx/find/' + name, success: function (res) { if (res.hasOwnProperty('latitude')) { var latitude = res.latitude; var lonitude = res.lonitude; initMap(lonitude, latitude); } else { $('#map-container-' + orderID, $view).hide(); } }, error: function (res) { } }); } setTimeout(function() { getPoi(); }, 200); getPoiFn = setInterval(function() { getPoi(); }, 60000); } } else { $doc.trigger('spa:openpanel', ['simpleAlert', { message: res.message }]); } }); dtd.resolve(); }, afteropen: function (pageData, dtd) { dtd.resolve(); }, beforeclose: function (pageData, dtd) { clearInterval(getPoiFn); dtd.resolve(); } } })