submit-controller.js 13.4 KB
/**
 * 录入维修单
 */
define(
    "order/submit-controller",
    [
        'mk7/controller',
        'mk7/url',
        'mk7/utils',
        'mk7/uploadjs',
        'mk7/picker'
    ],

    function(ctrl, url, utils, uploadjs, picker) {

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

        var uploadURL = '/user/default/upload-file';
        var submitURL = '/order/default/submit';
        var canSubmit = true;
        var finishTime = '';
        ctrl.run = function () {
            var me = this;
            me.setPageTitle("录入维修单");
            me.imgLimit = 9;
            me.render();
        }
        ctrl.bindEvents = function () {
            var me = this;
            console.log("bindEvents");
            me.uploadImgEvent();
            me.submitEvent();
            me.selectDateEvent();
        }
        ctrl.uploadImgEvent = function() {
            var me = this;

            $$('#submit #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: '#submit',
                    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 == $$('#submit #image-list').find('.up-img').length) {
                                    $$('#submit .upload-btn-li').hide();
                                }
                            } else {
                                utils.toast({content: response.message, closeDelay: 5000});
                            }
                        } catch (ex) {
                            console.log(ex)
                            utils.toast({content: '出错', closeDelay: 5000});
                        }
                    }
                });
            })

            $$('#submit #image-list').on('click', '.del-img', function(e){
                $$(this).parent().remove();
                if (me.imgLimit >= $$('#submit #image-list').find('.up-img').length) {
                    $$('#submit .upload-btn-li').show();
                }
            })
        }
        ctrl.submitEvent = function() {
            var me = this;
            $$('#submit .submit-btn-cls').click(function(e) {

                var carNo = utils.trim($$('#submit .carNo').val());
                var carModel = utils.trim($$('#submit .carModel').val());
                var customer = utils.trim($$('#submit .customer').val());
                var phone = utils.trim($$('#submit .phone').val());
                var preRepair = utils.trim($$('#submit .preRepair').val());
                var repairPrice = utils.trim($$('#submit .repairPrice').val());
                var finishDate = utils.trim($$('#submit .finishDate').val());
                if (false == canSubmit) {
                    return false;
                }
                if ('' == carNo) {
                    utils.toast({content:'车牌号必填'});
                    return false;
                }
                if ('' == carModel) {
                    utils.toast({content:'车辆型号必填'});
                    return false;
                }
                if ('' == customer) {
                    utils.toast({content:'客户名称必填'});
                    return false;
                }
                if ('' == phone) {
                    utils.toast({content:'客联系电话必填'});
                    return false;
                }
                if (!utils.isMobile(phone) && !utils.isTelephone(phone)) {
                    utils.toast({content:'客联系电话有误'});
                    return false;
                }
                if ('' == preRepair) {
                    utils.toast({content:'预估维修内容必填'});
                    return false;
                }
                if ('' == repairPrice) {
                    utils.toast({content:'预估维修费用必填'});
                    return false;
                }
                if ('' == finishDate) {
                    utils.toast({content:'预估完成时间必填'});
                    return false;
                }
                var imgs = me.getUploadImgs();
                if (0 == imgs.length) {
                    utils.toast({content:'请上传车损照'});
                    return false;
                }
                canSubmit = false;
                var sData = me.csrf({
                    carNo:carNo, carModel:carModel,customer:customer,phone:phone,
                    preRepair:preRepair, repairPrice:repairPrice,finishDate:finishDate, images:imgs
                })
                utils.httpPost(submitURL, sData, function(res) {
                    canSubmit = true;
                    if (!res.success) {
                        utils.toast({content:message});
                        return false;
                    } else {
                        window.location.replace(url.to('order#order-details/'+res.orderId));
                    }
                }, true);

            })
        }
        ctrl.getUploadImgs = function() {
            var images = $$('#submit #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.selectDateEvent = function() {
            var me = this
            $$('#submit .finish-date-input').click(function(e) {
                var cData = $$(this).val();
                console.log(cData)
                me.dateTimeSelector('#submit .finish-date-input', cData);
            })
        }
        ctrl.dateTimeSelector = function(dateId, cData) {
            var me = this;
            var curDay = new Date();
            var maxDays = 30;
            var yearDefaultSelect = curDay.getFullYear();
            var monthDefaultSelect = curDay.getMonth();
            var dateDefaultSelect = curDay.getDate();
            var hoursSelect  = curDay.getHours();
            var cDateFormat = yearDefaultSelect + '-' + (monthDefaultSelect+1) + '-' +dateDefaultSelect;
            if ('' != cData && null != cData && undefined !== cData) {
                var cD = cData.split(' ')
                cDateFormat = cD[0];
                hoursSelect = cD[1];
            }

            //console.log(cDateFormat)
            //console.log(hoursSelect)
            var sDays = [];
            for( i= 0; i<= maxDays; i++){
                var thisDay = new Date();
                thisDay.setDate(curDay.getDate()+i);
                var setD = thisDay.getFullYear()+'-'+(thisDay.getMonth()+1)+'-'+thisDay.getDate();
                sDays.push(setD);
            }

            var pickerInline = me.app.picker({
                input : dateId,
                toolbarTemplate :
                '<div class="toolbar">' +
                '<div class="toolbar-inner">' +
                '<div class="left">' +
                '请选择用工时间' +
                '</div>' +
                '<div class="right">' +
                '<a href="javascript:void(0);" class="link submit-confirm-picker">确定</a>' +
                '</div>' +
                '</div>' +
                '</div>',

                value : [ cDateFormat, hoursSelect],

                onChange: function (picker, values, displayValues) {

                    var year,month,date;
                    if(values[0] instanceof Date){
                        year = values[0].getFullYear();
                        month = (values[0].getMonth());
                        date = values[0].getDate();
                    }else{
                        var cD = values[0].split('-');
                        year  = cD[0];
                        month = cD[1] - 1;
                        date = cD[2];
                    }

                    var selectedDay = new Date(year, month, date, values[1], 0);
                    var cDate = new Date(new Date().getTime() + 60  * 60 * 1000); //1小时后

                    if (selectedDay < cDate) {

                        if(undefined === picker.cols[0]) {
                            return false;
                        }
                        var setHours = cDate.getHours();
                        var myDate = cDate.getFullYear() + '-' + (cDate.getMonth()+1) + '-' + cDate.getDate();

                        var nextHoursDate = new Date(cDate.getFullYear(), cDate.getMonth(), cDate.getDate(), cDate.getHours(), 0);
                        // 还有15分钟就下一个小时的
                        if ((nextHoursDate - (new Date())) < 15 * 60 *1000 ) {
                            var nextNextHoursDate = new Date(nextHoursDate.getTime() + 60 * 60 * 1000);
                            setHours = nextNextHoursDate.getHours();
                            myDate = nextNextHoursDate.getFullYear() + '-' + (nextNextHoursDate.getMonth()+1) + '-' + nextNextHoursDate.getDate();
                        }

                        picker.cols[0].setValue(myDate);
                        picker.cols[2].setValue(setHours);
                    }
                },

                formatValue: function (picker, values, displayValues) {
                    var date ='';
                    if (values[0] instanceof Date) {
                        date = values[0].getFullYear()+'-'+ (values[0].getMonth()+1) +'-'+values[0].getDate();
                    } else {
                        date = values[0];
                    }

                    var rd = date + " " + values[1];// +':'+values[2]
                    return rd
                },

                cols: [
                    // Years
                    {
                        values: sDays,
                        displayValues:(function(){
                            var arr = [];
                            var date = new Date();
                            var todayYear = date.getFullYear();
                            var todayMonth = date.getMonth() +1;
                            var todayDate = date.getDate();
                            date.setDate(date.getDate() + 1);
                            for (var i = 0; i < sDays.length; i++) {
                                var gd = sDays[i];
                                var d = gd.split('-');
                                var pushDate = d[1]+'月'+d[2]+'日';
                                if(todayYear == d[0] && (todayMonth * 1) == d[1] && (todayDate * 1) == d[2]){
                                    pushDate = pushDate + '(今天)';
                                }
                                if((date.getFullYear() *1) == d[0] && ((date.getMonth() *1)+1) == d[1] && (date.getDate() *1) == d[2]){
                                    pushDate = pushDate + '(明天)';
                                }
                                arr.push(pushDate);
                            }
                            return arr;
                        })()
                    },
                    // Space divider
                    {
                        divider: true,
                        content: '  '
                    },
                    // Hours
                    {
                        values: (function () {
                            var arr = [];
                            for (var i = 0; i <= 23; i++) { arr.push(i); }
                            return arr;
                        })(),
                        displayValues:(function(){
                            var arr = [];
                            for (var i = 0; i <= 23; i++) { arr.push(i < 10 ? '0' + i+ '时' : i+'时'); }
                            return arr;
                        })()
                    },
                    // Space divider
                    {
                        divider: true,
                        content: '  '
                    },
                ],
                onClose : function(e) {
                    if(pickerInline) {
                        // 设置年月日
                        var values = pickerInline.value;
                        var hourStr = values[1] < 10 ? "0"+values[1] : values[1];
                        finishTime = values[0]+' '+hourStr;
                        $$(dateId).val(finishTime);

                        pickerInline.destroy();
                    }
                }
            });
            pickerInline.open();
            $$('.submit-confirm-picker').on('click', function(e){
                e.preventDefault();
                // 设置年月日
                var values = pickerInline.value;
                var hourStr = values[1] < 10 ? "0"+values[1] : values[1];
                finishTime = values[0]+' '+hourStr; //+':'+minStr
                $$(dateId).val(finishTime);

                pickerInline.destroy();
            });
        }
        return ctrl;
    }
);