define(['$', 'template', 'autosize', 'order', 'api', 'config', 'native', 'user'], function ($, template, autosize, order, api, config, native, user) { function versionCompare(v1, v2) { v1 = v1.split('.'); v2 = v2.split('.'); var len = Math.max(v1.length, v2.length); for (var i = 0; i < len; i++) { v1[i] = "undefined"===typeof v1[i] ? 0 : parseInt(v1[i], 10); v2[i] = "undefined"===typeof v2[i] ? 0 : parseInt(v2[i], 10); if(v1[i] > v2[i]){return 1;} if(v1[i] < v2[i]){return -1;} } return 0; } var cachePageData = { bucket: 'pics', token: '' } var images = { localId: [], serverId: [], list: [], count: 9 }; return { body: '', init: function (panelData, dtd) { var $view = this; var $doc = $(document); //新增评价 $.newTouch('.btn-post', function(event) { if ($(this).hasClass('disable')) { return false; } var pushData = panelData.pushData; var orderID = pushData.orderID; var textarea = $('.review-content', $view); var score = $('.star-item.enable', $view).length; $('.review-content', $view).blur(); $doc.trigger('spa:openloader'); api.postReview({ user_id: user.id, order_id: orderID, content: textarea.val(), score: score, pics: JSON.stringify(images.serverId) }, function (res) { $('.review-content', $view).val(''); $doc.trigger('spa:closeloader'); panelData.postReview = true; $view.trigger('spa:closepanel'); }); }, $view); // 选择 $.newTouch('.img-upload-btn', function(event) { if (config.isAndroid || config.isIOS) { native.chooseImage({ sourceType: ['album', 'camera'], count: images['count'], clip: false, clipSize: 320 }, function(res){ if (res.success) { images.localId = res.data.localIds; var i = 0, length = images.localId.length; function upload() { native.uploadImage({ localId: images.localId[i], isShowProgressTips: true }, function(res) { if (res.success) { images['count'] --; images.serverId.push(res.data); images.list.push(res.data.url); var html = '
'+ '
' + '' + '' + '
' + '
'; $('.img-upload').before(html); i ++; if (i < length) { upload(); } if (images['count'] < 1) { $('.img-upload-btn').hide(); } } }) } upload(); } }); } }, $view); // 微信上传 $view.on('change', '#wx-upload', function(event) { if (config.isWX) { var files = event.target.files; if (files.length > 9) return; if (files.length > images['count']) return; var defaults = { qiniu_upload_url : 'http://up.qiniu.com', bucket: cachePageData.bucket, url_prefix: 'http://'+ cachePageData.bucket +'.qiniudn.com', } for (var i = 0; i < files.length; i++) { var formData, startDate; formData = new FormData(); formData.append('token', cachePageData.token); formData.append('file', files[i]); var name = files[i].name; var point = name.lastIndexOf('.'), type = name.substr(point), key = Math.random().toString(16).substring(2) + (+new Date()) + type; formData.append('key', key); $.ajax({ url: 'http://up.qiniu.com' , type: 'POST', data: formData, async: false, cache: false, contentType: false, processData: false, success: function (data) { images['count'] --; var url = defaults.url_prefix+'/'+data.key; var param = { "width": 1, "height": 1, "url": url } images.serverId.push(param); images.list.push(url); var html = '
'+ '
' + '' + '' + '
' + '
'; $('.img-upload').before(html); if (images['count'] < 1) { $('.img-upload-btn').hide(); } }, error: function (data) { console.log(data); } }); } } }); // 预览图片 $.newTouch('.img-preview-item', function(event) { // event.preventDefault(); var current = $(this).attr('data-src'); native.previewImage(images.list, current); }, $view); // 删除图片 $.newTouch('.btn-preview-close', function(event) { event.preventDefault(); // event.stopPropagation(); var i = $(this).parents('.width-percent-25').index(); images.serverId.splice(i, 1); images.list.splice(i, 1); images['count'] ++; if (images['count'] > 0) { $('.img-upload-btn').show(); } $(this).parents('.width-percent-25').hide('500'); // $(this).parents('.width-percent-25').remove(); }, $view); //切换评分 $.newTouch('.star-item', function(event) { var enable = true; var that = this; $(this).parent('.box').find('.star-item').each(function() { if (enable) { $(this).addClass('enable'); } else { $(this).removeClass('enable'); } if (that == this) { enable = false; } }); }, $view); dtd.resolve(); }, beforeopen: function (panelData, dtd) { var $view = this; var pushData = panelData.pushData; $('.spa-page-bg', $view).css({ opacity: 0 }).transition({ opacity: 0.6 }); images = { localId: [], serverId: [], list: [], count: 9 }; if (config.test) { cachePageData.bucket = 'test' } api.gettoken({ request_from: 'weixin', user_id: user.id, bucket: cachePageData.bucket }, function(res){ if (res.success) { cachePageData.token = res.data.token } }); var tpl = template('review/post', { cacheReview: order.cacheReview, showInput: config.isWX, showUpload: versionCompare(config.appVersion, '2.6') >=0 || config.isWX, score: 5 }); $view.find('.spa-page-body').html(tpl); //自适应输入框 var textarea = $('.review-content', $view); textarea.on('keyup, resize, input', function(event) { adjustPostButton.call(this); }); autosize(textarea); adjustPostButton.call(textarea); dtd.resolve(); function adjustPostButton(){ var postButton = $('.btn-post', $view); if ($(this).val().length >= 10) { if (postButton.hasClass('disable')) { postButton.removeClass('disable'); } } else { if (!postButton.hasClass('disable')) { postButton.addClass('disable'); } } } }, beforeclose: function (panelData, dtd) { var $view = this; $('.review-content', $view).blur(); var cacheText = $('.review-content', $view).val(); order.set('cacheReview', cacheText); $('.spa-page-bg', $view).transition({ opacity: 0 }); dtd.resolve(); }, afterclose: function (panelData) { var $view = this; var pushData = panelData.pushData; if (panelData.postReview && pushData.didPostReview) { panelData.postReview = false; pushData.didPostReview(); } } } })