123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211 |
- define(['$', 'template', 'product', 'cart', 'api', 'order', 'user', 'config', 'review', 'native'], function ($, template, product, cart, api, order, user, config, review, native) {
- /* 返回上一级 */
- function back(event) {
- event.preventDefault();
- $(document).trigger('spa:navigate', {
- hash: 'placeOrder'
- });
- }
- function renderReviewTemplate(reviews, hasMore) {
- var tpl = template('product/reviewList', {
- reviews: reviews,
- imgW: parseInt((document.body.clientWidth - 30) / 3) - 5
- });
- $('#productReviewScroll .list-content').append(tpl);
- if (hasMore) {
- $('#productReviewScroll .btn-more-container').removeClass('hide');
- } else {
- $('#productReviewScroll .btn-more-container').addClass('hide');
- }
- }
- var isShowVideo = function () {
- var show = true;
- // 判断安卓版本
- var UA = navigator.userAgent;
- var index = UA.indexOf("Android");
- if (index >= 0) {
- var androidVersion = parseFloat(UA.slice(index + 8));
- if (androidVersion < 4.4) {
- show = false;
- }
- }
- return false;
- }
- var cachePageData = {}; //page内部的数据传递
- 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);
- });
- // 提示信息
- $.newTouch('.btn-product-info', function (event) {
- $doc.trigger('spa:navigate', {
- hash: 'product-info/' + cachePageData.product.type,
- pushData: {
- needReload: cachePageData.needReload,
- fromHome: cachePageData.fromHome
- }
- });
- }, $view);
- // 提示信息
- $.newTouch('.group-title-container', function (event) {
- if ($(this).find('.group-title').hasClass('active')) {
- $(this).find('.group-title').removeClass('active');
- $(this).next('.group-detail').addClass('hide');
- } else {
- $(this).find('.group-title').addClass('active');
- $(this).next('.group-detail').removeClass('hide');
- }
- cachePageData.scroll.refresh();
- }, $view);
- // 点击用户头像 打开用户个人中心
- $.newTouch('.user-info-btn', function (event) {
- var url = 'http://www.yiguanjia.me'
- if (config.test) {
- url = 'http://wwwtest.yiguanjia.me';
- }
- var id = $(this).attr('data-id');
- var param = {
- url: url + '/user/' + id
- };
- native.openURL(param);
- }, $view);
- //tab切换
- $.newTouch('.type-control .control-item', function (event) {
- if (isShowVideo()) {
- $('#iframe-service-introduce', $view).contents().find('video')[0].pause();
- }
- var type = $(this).data('type');
- $('.type-container', $view).hide();
- switch (type) {
- case 1:
- $('#descContainer').show();
- break;
- case 2:
- $('#reviewContainer').show();
- if (cachePageData.needReloadReview) {
- cachePageData.needReloadReview = false;
- $doc.trigger('spa:openloader');
- review.getList(cachePageData.product.type, function (res) {
- $doc.trigger('spa:closeloader');
- var hasMore = true;
- if (res.current_page >= res.sum_page) {
- hasMore = false;
- }
- if (res.success) {
- renderReviewTemplate(res.data.comments, hasMore);
- }
- if (cachePageData.reviewScroll) {
- cachePageData.reviewScroll.destroy();
- cachePageData.reviewScroll = null;
- }
- setTimeout(function () {
- cachePageData.reviewScroll = new IScroll('#productReviewScroll');
- }, 10);
- }, true);
- }
- break;
- case 3:
- $('#consultationContainer').show();
- break;
- default:
- break;
- }
- }, $view);
- // 图片预览
- $.newTouch('.img-preview', function (event) {
- var current = $(this).attr('data-src');
- var i = $(this).parents('.table-view-cell').index();
- var imgList = review['reviewDatas'][cachePageData.product.type]['list'][i]['pics'];
- var imgLists = [];
- imgList.forEach(function (item, index) {
- imgLists.push(item.url)
- });
- native.previewImage(imgLists, current);
- }, $view);
- //加载更多
- $.newTouch('.btn-more-review', function (event) {
- $doc.trigger('spa:openloader');
- review.getList(cachePageData.product.type, function (res) {
- $doc.trigger('spa:closeloader');
- if (res.success) {
- var hasMore = true;
- if (res.current_page >= res.sum_page) {
- hasMore = false;
- }
- renderReviewTemplate(res.data.comments, hasMore);
- cachePageData.reviewScroll.refresh();
- }
- }, false);
- }, $view);
- dtd.resolve();
- },
- beforeopen: function (pageData, dtd) {
- var $view = this;
- var $doc = $(document);
- var pushData = pageData.pushData;
- //渲染空页面
- cachePageData.product = pushData.produc;
- cachePageData.needReload = pushData.needReload;
- if (cachePageData.needReload) {
- cachePageData.needReloadReview = true;
- var commentCounts = 0;
- var productType = cachePageData.product.type;
- $doc.trigger('spa:openloader');
- review.getList(productType, function (res) {
- if (res.success) {
- commentCounts = res.sum_count;
- var tpl = template('product/index', {
- type: productType,
- title: cachePageData.product.name,
- // tips: product.getGroupDesc(productType),
- picLists: cachePageData.product.pics,
- commentCounts: commentCounts,
- showNavBar: !config.isWX && !config.isChubao,
- // isShowVideo: isShowVideo()
- });
- $('.spa-page-body', $view).html(tpl);
- var iframeW = document.body.clientWidth - 30;
- $('#iframe-service-introduce', $view).height(Math.ceil(iframeW * 360 / 640));
- // setTimeout(function () {
- // cachePageData.scroll = new IScroll('#productDescScroll');
- // }, 700);
- $doc.trigger('spa:closeloader');
- }
- }, false);
- }
- dtd.resolve();
- }
- }
- });
|