validate_condition.js 8.1 KB
var $ = require('jquery');
var common = require('../../../../common/common');
var configData=require('./_config');

var condition_type_list = configData.condition_type_list;

var conditionValidate={
    base_conf:configData.condition_base_conf,
    validateData:function(_data){
        var _g=this;
        if(!_data){
            common.util.__tip("请先设置条件后保存!", "warning");
            return false;
        }
        var conditions_l1=_data.conditions;
        //第一级
        if(!conditions_l1){
            common.util.__tip("请先设置条件后保存!", "warning");
            return false;
        }
        if(conditions_l1){
            //这里拦截产品和支付没有设置
            if($.isEmptyObject(conditions_l1)){
                common.util.__tip("请先设置条件后保存!", "warning");
                return false;
            }
            //只拦截产品维度
            //第二级和第三级json 对象
            var obj_l2,obj_l3;
            //第二级和第三级type
            var _type_l2,_type_l3;
            var conditions_l2;
            var value_l2,value_l3;
            var regrex_int = new RegExp(/^\d+$/);
            var regrex_float_2b = new RegExp(/^\d+(\.\d{1,2})?$/);
            var regrex_special_prds = new RegExp(/^\d+(,\d+)*$/);
            var errorMsg={};
            var int_22 = Number("22"), int_1 = Number("1"), int_2 = Number("2");
            for(var key2 in conditions_l1){
                obj_l2=conditions_l1[key2];
                _type_l2=obj_l2["type"];
                //产品
                if(condition_type_list[0].child[_g.base_conf.productIndex].name===_type_l2){
                    value_l2=obj_l2["value"];
                    if(conditionValidate.isBlank(value_l2)){                        
                        errorMsg["NO."+key2]="请先设置第一级条件!";
                        continue;
                    }                    
                    
                    //个数
                    if(obj_l2["operatobj"]==="num" && $.isNumeric(value_l2) ){
                        var _value_l2_int = Number(value_l2);
                        if(!regrex_int.test(_value_l2_int)){
                            errorMsg["NO."+key2] = condition_type_list[0].child[_g.base_conf.productIndex].caption + "个数请填写整数类型!"; 
                        }
                        
                    }
                    //金额
                    if(obj_l2["operatobj"]==="amount" && $.isNumeric(value_l2)){
                        var _value_l2_int = Number(value_l2);
                        if(!regrex_float_2b.test(_value_l2_int)){
                            errorMsg["NO."+key2] = condition_type_list[0].child[_g.base_conf.productIndex].caption + "金额请填写数字类型!";
                        }
                        
                    }
                    conditions_l2=obj_l2["conditions"];
                    if(!conditions_l2||conditions_l2.length===0){
                        /*
                        if(errorMsg["NO."+key2]){
                            errorMsg["NO."+key2]=errorMsg["NO."+key2]+";"+"请添加品类、品牌、促销标记或特定商品!";                        
                        }else{
                            errorMsg["NO."+key2]="请添加品类、品牌、促销标记或特定商品!";
                        }    */
                        continue;                     
                    }
                    //第三层中的conditions遍历校验
                    for(var key3 in conditions_l2){
                        obj_l3=conditions_l2[key3];
                        value_l3=obj_l3["value"];
                        _type_l3=obj_l3["type"];
                        //特定商品
                        if(condition_type_list[0].child[_g.base_conf.productIndex].child[_g.base_conf.special_product_index].name === _type_l3){
                            if(conditionValidate.isBlank(value_l3)){                       
                                errorMsg["NO."+key2+"."+key3]="请设置"+condition_type_list[0].child[_g.base_conf.productIndex].child[_g.base_conf.special_product_index].caption;
                                
                            }
                            if(!regrex_special_prds.test(value_l3)){
                                if(errorMsg["NO."+key2+"."+key3]){
                                    errorMsg["NO."+key2+"."+key3] = errorMsg["NO."+key2+"."+key3]+";"
                                                                    + condition_type_list[0].child[_g.base_conf.productIndex].child[_g.base_conf.special_product_index].caption 
                                                                    + "数据格式不对";
                                }else{
                                    errorMsg["NO."+key2+"."+key3]= condition_type_list[0].child[_g.base_conf.productIndex].child[_g.base_conf.special_product_index].caption 
                                                                    + "数据格式不对";
                                }
                            }
                        }
                        //product_brand
                        if(condition_type_list[0].child[_g.base_conf.productIndex].child[_g.base_conf.product_brand_index].name === _type_l3){
                            if(conditionValidate.isBlank(value_l3)){                       
                                errorMsg["NO."+key2+"."+key3]="请设置"+condition_type_list[0].child[_g.base_conf.productIndex].child[_g.base_conf.product_brand_index].caption;                                
                            }
                        }
                        //product_sort
                        if(condition_type_list[0].child[_g.base_conf.productIndex].child[_g.base_conf.product_sort_index].name === _type_l3){
                            if(conditionValidate.isBlank(value_l3)){                       
                                errorMsg["NO."+key2+"."+key3]="请设置"+condition_type_list[0].child[_g.base_conf.productIndex].child[_g.base_conf.product_sort_index].caption;                                
                            }
                        }
                        //product_promotion_flag
                        if(condition_type_list[0].child[_g.base_conf.productIndex].child[_g.base_conf.promotion_flag_index].name === _type_l3){
                            if(conditionValidate.isBlank(value_l3)){                       
                                errorMsg["NO."+key2+"."+key3]="请设置"+condition_type_list[0].child[_g.base_conf.productIndex].child[_g.base_conf.promotion_flag_index].caption;                                
                            }
                        }
                    }
                }
            }
        }
        if(!$.isEmptyObject(errorMsg)){
            for(var key in errorMsg){
                common.util.__tip(key+errorMsg[key], "warning");
            }
            return false;
        }
        return true;
    },
    /**
     * 检验条件是否赋值
     */
    validateValue:function(_params){
        if(!_params){
            return false;
        }
        var _value = _params.value;
        if(!_value){
            return false;
        }
        if(_value){
            var _trim_value = $.trim(_value);
            if(_trim_value){
                //todo 更严格的更细粒度的校验
                return true;
            }
            if(!_trim_value){
                return false;
            }
        }
        
    },
    /**
     * 是否为空
     * 空格 或 空值 均为空
     */
    isBlank:function(_str){
        var _g=this;
        if(!_str || _g.isBlankSpace(_str)){
            return true;
        }
    },
    /**
     * 是否是空格,
     * 是:true;
     * 否:false;
     */
    isBlankSpace:function(_str){
        if(!_str){
            return false;
        }
        if(_str){
            var _trim_str=$.trim(_str);
            if(!_trim_str){
                return true;
            }
            if(_trim_str){
                return false;
            }
        }        
    }
};

module.exports = conditionValidate;