
export default {
    // 格式化表单数据(准备提交)
    formatFormData: function ({ data, rules , igFields }) { // 格式化表单数据


        let feachRules = (rules) => {

            rules.forEach(rule => { // 循环规则
                try{
                    if (rule.children && rule.children.length) {
                        feachRules(rule.children);
                    }
                    if (!rule.dataRule) {
                        return;
                    }
                    if (rule.field in data) { // 如果字段在数据中
                        let value = data[rule.field]; // 获取值  
                        if (rule.dataRule.fromField) {
                            value = value[rule.dataRule.fromField];
                        }
                        let saveField = rule.field;
                        if (rule.dataRule.saveField) {
                            saveField = rule.dataRule.saveField;
                        }
                        if (rule.dataRule.type == "integer") { // 如果是整数
                            data[saveField] = parseInt(value); // 转换为整数
                        }
                        else if (rule.dataRule.type == "number") { // 如果是整数
                            data[saveField] = parseFloat(value); // 转换为整数
                        }
                        else if (rule.dataRule.type == "timestamp") { // 如果是时间戳
                            data[saveField] = parseInt(new Date(value).getTime() / 1000); // 转换为时间戳
                        }
                        else if (rule.dataRule.type == "string") { // 如果是字符串
                            if (data[saveField] === true) {
                                data[saveField] = "true";
                            }
                            else if (data[saveField] === false) {
                                data[saveField] = "false";
                            }
                            else if (data[saveField]) {
                                data[saveField] = value + "";
                            }
                        }
                        else {
                            data[saveField] = value;
                        }
                    }
                }catch(e){
                    console.log(e)
                }
            });
        };
        feachRules(rules);

        if(igFields){ 
            igFields.forEach(field=>{
                if(field in data){
                    delete data[field];
                }
            })
        }

    },


    // 格式化表单数据(准备展示)
    formatInitFormData: function ({ data, rules }) { // 格式化表单数据


        let feachRules = (rules) => {

            rules.forEach(rule => { // 循环规则
                if (rule.children && rule.children.length) {
                    feachRules(rule.children);
                }
                if (!rule.dataRule) {
                    return;
                }
                
                if(rule.dataRule.getter){
                    data[rule.field] = rule.dataRule.getter(data);
                }
                if (rule.field in data) { // 如果字段在数据中
                    if (rule.dataRule.type == "timestamp") { // 如果是时间戳
                        if (data[rule.field] > 0) {
                            data[rule.field] = new Date(data[rule.field] * 1000);
                        }

                    }
                }
            });
        };
        feachRules(rules);


    },

    // 验证表单数据
    validateForm: function ({ form }) { // 验证表单


        return new Promise((resolve, reject) => { // 返回一个Promise

            form.validate(a => {  // 验证表单
                let count = 0; // 计数器
                if (a) { // 如果有错误
                    for (let name in a) { // 循环错误
                        a[name]; // 获取错误
                        count++; // 计数器加1
                    }
                }

                if (count > 0) { // 如果有错误
                    reject(count); // 返回错误
                } else {  // 如果没有错误
                    resolve(); // 返回成功
                }
            });



        });
    }

}