rate-controller.js 5.7 KB
/**
 * 订单评价
 */
define(
    "order/rate-controller",
    [
        'mk7/controller',
        'mk7/url',
        'mk7/utils',
        'mk7/uploadjs',
    ],

    function(ctrl, url, utils, uploadjs) {

        var $$ = Dom7;
        var t7 = Template7;
        var ctrl = new ctrl();

        var submitURL = 'order/customer/submit-rate';
        var uploadURL = '/user/default/upload-file';
        ctrl.run = function () {
            var me = this;
            me.id = me.params.id;
            me.sn = me.params.sn;
            me.imgLimit = 4;
            me.setPageTitle("评价");
            me.loadPage();
        }
        ctrl.bindEvents = function () {
            var me = this;
            console.log("bindEvents");
            me.starClickEvent();
            me.submitEvent();
            me.uploadImgEvent();
        }
        ctrl.loadPage = function(){
            var me = this;
            me.render();
        }
        ctrl.starClickEvent = function() {
            $$('#rate').on('click', '.img-star',function(e) {
                var id = $$(this).attr('data-id');
                var parentBox = $$(this).parent('.star-div');
                var stars = parentBox.find('.img-star')
                $$.each(stars, function(i,n){
                    var cid = $$(n).attr('data-id');
                    if ((cid*1) <= id) {
                        $$(n).addClass('star-on');
                        var rateText = parentBox.find('.rate-text');
                        var txt = $$(n).attr('data-txt');

                        rateText.html(txt);
                    } else {
                        $$(n).removeClass('star-on');
                    }
                })
            })
        }
        ctrl.uploadImgEvent = function() {
            var me = this;

            $$('#rate #upload-btn').change(function () {
                if ('' == $$(this).val() || null == $$(this).val()) {
                    return;
                }
                var uploadParent = $$(this).parents('li');

                uploadjs.uploadFile({
                    selector: '#upload-btn',
                    url: url.to(uploadURL),
                    processAppendTo: '#rate',
                    success: function (response, e) {
                        try {
                            if (response.success) {
                                var imgUrl = response.tmpUrl;
                                $$('<li class="upload-li up-img"><div data="' + response.tmpFile + '" data-url="' + imgUrl + '" class="upload-item" style="background-image:url(' + response.tmpMinUrl + ')">'  + '</div><span class="del-img"></span></li>').insertBefore(uploadParent);
                                if (me.imgLimit == $$('#rate #image-list').find('.up-img').length) {
                                    $$('#rate .upload-btn-li').hide();
                                }
                            } else {
                                utils.toast({content: response.message, closeDelay: 5000});
                            }
                        } catch (ex) {
                            console.log(ex)
                            utils.toast({content: '出错', closeDelay: 5000});
                        }
                    }
                });
            })

            $$('#rate #image-list').on('click', '.del-img', function(e){
                $$(this).parent().remove();
                if (me.imgLimit >= $$('#rate #image-list').find('.up-img').length) {
                    $$('#rate .upload-btn-li').show();
                }
            })
        }
        ctrl.getUploadImgs = function() {
            var images = $$('#rate #image-list').find('.up-img');
            var returnImg = [];
            if (images.length == 0 ) {
                return [];
            }
            $$.each(images, function(i, n){
                var img = $$(n).find('.upload-item');
                returnImg.push(img.attr('data'))
            })

            return returnImg;
        }
        ctrl.submitEvent = function() {
            var me = this;
            $$('#rate .submit-btn').click(function(e){
                var comment = utils.trim($$('#rate .text-content').val());
                var qualityStars = $$('#rate .quality-box .img-star')
                var qualityStar = 0;
                $$.each(qualityStars, function(i,n){
                    if($$(n).hasClass('star-on')) {
                        qualityStar++
                    }
                })

                var effectStars = $$('#rate .effect-box .img-star')
                var effectStar = 0;
                $$.each(effectStars, function(i,n){
                    if($$(n).hasClass('star-on')) {
                        effectStar++
                    }
                })

                var serviceStars = $$('#rate .service-box .img-star')
                var serviceStar = 0;
                $$.each(serviceStars, function(i,n){
                    if($$(n).hasClass('star-on')) {
                        serviceStar++
                    }
                })
                var images = me.getUploadImgs();
                var pData = me.csrf({
                    comment:comment,
                    id:me.id,
                    qualityStar:qualityStar,
                    effectStar:effectStar,
                    serviceStar:serviceStar,
                    images:images
                });
                utils.httpPost(url.to(submitURL), pData, function(res) {
                    if (res.success) {
                        window.location.replace(url.to('order/customer#customer-order/'+me.id+'/'+me.sn));
                    } else {
                        utils.toast({content:res.message});
                    }
                }, true)
            })

        }
        return ctrl;
    }
);