SOURCE

var 绩效卡 = {
    _id: "",
    名称: "绩效卡A",
    公司: "新乡奥迪",
    部门: "销售部",
    员工: "",
    绩效系数: 0,
    应得绩效奖金: 0,
    实得绩效奖金: 0,
    绩效卡片列表: [
        {
            卡片ID: "",
            卡片名称: "绩效基数",
            卡片类型: "无权重",
            绩效卡片奖金: 0,
            KPI绑定: "",
            KPI得分: 1,
            KPI考核比例: 1,
            考核项列表: [{
                指标ID: "",
                指标名称: "指标A",
                指标权重: 0,
                指标奖金: 0,
                指标类型: "定量",
                考核依据列表:[{
                    依据ID: "",
                    依据名称: "",
                    目标获取方式: "",
                    目标获取方法: {},
                    结果获取方式: "",
                    结果获取方法: {},
                }],
                考核维度列表: [{
                    考核条件: [{
                        条件1: "",
                        条件2: "",
                        条件3: "",
                        运算符: "",
                        逻辑符: "",
                        封顶: false
                    }],
                    是否达成: false,
                    奖励公式列表: [{
                        条件: [],
                        条件结果: false,
                        公式: "",
                        结果: 0,
                        说明: ""
                    }],
                    说明: ""
                }]
            }]
        }
    ],
    公共属性: {
        员工: "",
        绩效系数: 1,
        总绩效奖金: 0,
        KPI得分: 1,
        KPI考核比例: 1,
        指标奖金: 0,
        指标权重: 0
    }
}

// 一、需要从整个绩效卡中按计算层级提取出来所有可以参与计算的数据
function get_jixiaokaCeng(jxk){
    //提取绩效卡层
    var ret = {
        数据: [{
            员工: jxk['员工'],
            绩效系数: jxk['绩效系数'],
            应得绩效奖金: jxk['应得绩效奖金'],
            实得绩效奖金: jxk['应得绩效奖金'] * jxk['绩效系数']  // todo 如何判断这个数据是需要公式计算的?
        }],
        公式: {
            应得绩效奖金: {
                系统公式: "所有绩效卡片奖金之和",
                自定义公式: "",
            },
            实得绩效奖金: {
                系统公式: "总绩效奖金 * 绩效系数",
                自定义公式: "",
            }
        }
    }
}

function get_kapianCeng(jxk){
    //提取卡片层
    //优先计算KPI类卡片
    var ret = {
        数据: [{
            
        }]
    }
}

// 提取整个绩效卡的 ID和名称的对照表
function get_IDdict(jxk){
    var IDdict = {}
    // for(var i=0; i<kapian_list.length; i++){

    // }
}

var test = [{
    卡片ID: "",
    卡片名称: "",
    
}]

var 绩效卡数据 = {

}

// 提取所有考核依据,提取所有绩效卡片中绩效指标的考核依据
function get_yiju(kapian_list){
    var ID_dict = {}
    var tree_dict = []
    var kapian_dict = {}
    var zhibiao_dict = {}
    var yiju_dict = {}
    //卡片层
    for(var i=0; i<kapian_list.length; i++){
        ID_dict[kapian_list[i]['卡片ID']] =  {
            类型: '绩效卡片',
            名称: kapian_list[i]['卡片名称'],
        }
        var zhibiao_list = kapian_list[i]['考核项列表']
        //指标层
        for(var j=0; j<zhibiao_list.length; j++){
            ID_dict[zhibiao_list[j]['指标ID']] = {
                类型: '绩效指标',
                名称: zhibiao[j]['指标名称'],
            }
            var yiju_list = zhibiao[j]['考核依据列表']
            //依据层
            for(var k=0; k<yiju_list.length; k++){
                var yijuID = yiju_list[k]['依据ID']
                ID_dict[yijuID] = {
                    类型: '考核依据',
                    名称: yiju_list[k]['依据名称'],
                }
                yiju_dict[yijuID] = {
                    '目标值': 0,
                    '结果值': 0,
                    '达成率': 0,
                    '超额完成值': 0,
                    '未完成值': 0,
                }
            }
        }
    }
}
var 考核依据字典 = {}
// for(var key in data){
//     console.log(data[key])
//     考核依据字典[key] = {}
//     var yiju_dict = data[key]['考核依据']
//     for(var yiju in yiju_dict){
//         console.log(yiju_dict[yiju])
//         考核依据字典[key][yiju] = yiju_dict[yiju]
//     }
// }


// console.log(考核依据字典)
// var gs = "指标A.依据A.结果/指标A.依据A.目标"

function test(gs, dict){
    //先从考核依据字典中动态声明每个考核依据变量
    for(var key in dict){
        console.log(key)
        eval("var " + key + "= dict[key]")
    }
    console.log(指标A)
    console.log(指标B)

    //判断指标考核维度达成

    //计算考核维度计算结果
    console.log(eval(gs))
}
// test('指标A.依据A.结果/指标A.依据A.目标>0.7?1:0', 考核依据字典)
console 命令行工具 X clear

                    
>
console