echarts下工资收入、五险一金、个人所得税走势图表

燕飞南北知暑热,人走东西只为钱。

echarts下的line实现的北京地区(2016年基准)工资收入、五险一金、个人所得税计算图表。

直接访问:http://gallery.echartsjs.com/preview.html?c=xHJlPbUPRzb



附代码:

(注:可直接在http://echarts.baidu.com/demo.html#area-simple内清空代码区后,粘贴以下代码实现)

//-----------------------------dn:可进行参数设置------------------------------
var bFixedIn = false;           // 固定社保基数标志:false不固定,true固定
var bFixedHouse = false;        // 固定公积金基数标志:false不固定,true固定

var fFixedInBase = 13768;       // 固定的社保基数
var fFixedHouseBase = 12000;     // 固定的公积金基数

var fExemptionPoint = 3500;     // 免税起点  
  
// 五险一金个人比例  
var fRateInEnd = 0.08;          // 养老 8%  
var fRateInMed = 0.02;          // 医疗 2%  
var fRateInUnEmp = 0.002;       // 失业 0.2%  
var fRateInInjuery = 0;         // 工伤  
var fRateInMate = 0;            // 生育  
var fRateInHouse = 0.12;        // 公积金  
  
// 北京2016年上、下限
  
var fInEndMin = 2834;           // 养老保险下限  
var fInEndMax = 21258;          // 养老保险上限  
  
var fInMedMin = 4252;           // 医疗保险下限  
var fInMedMax = fInEndMax;      // 医疗保险上限  

var fInHouseMin = 412.8 / 2;    // 公积金下限  
var fInHouseMax = 5101.92 / 2;  // 公积金上限  

//-----------------------------up:可进行参数设置------------------------------
      
// 计算人个交五险一金  
function funcCalc5In(fIncome) {  
    var fSum = 0;  
      
    // 养老  
    var fInEndTmp = fIncome < fInEndMin ? fInEndMin  
                    : (fIncome > fInEndMax ? fInEndMax : fIncome);  
    fSum += fInEndTmp * fRateInEnd;  
      
    // 医疗  
    var fInMedTmp = fIncome < fInMedMin ? fInMedMin  
                    : (fIncome > fInMedMax ? fInMedMax : fIncome);  
    fSum += fInMedTmp * fRateInMed;  
      
    // 失业  
    var fInUnEmpTmp = fIncome < fInEndMin ? fInEndMin  
                    : (fIncome > fInEndMax ? fInEndMax : fIncome);  
    fSum += fInUnEmpTmp * fRateInUnEmp;  
      
    // 工伤  
    var fInInjueryTmp = fIncome < fInMedMin ? fInMedMin  
                    : (fIncome > fInMedMax ? fInMedMax : fIncome);  
    fSum += fInInjueryTmp * fRateInInjuery;  
      
    // 生育  
    var fInMateTmp = fIncome < fInMedMin ? fInMedMin  
                    : (fIncome > fInMedMax ? fInMedMax : fIncome);  
    fSum += fInMateTmp * fRateInMate;  
          
    return fSum;  
}  

// 计算公积金
function funcCalcHouse(fIncome) {
    // 公积金  
    var fInHouseTmp = fIncome * fRateInHouse;  
    fInHouseTmp = fInHouseTmp < fInHouseMin ? fInHouseMin   
                    : (fInHouseTmp > fInHouseMax ? fInHouseMax : fInHouseTmp);  
          
    return fInHouseTmp;  
}
  
// 计算税  
function funcCalcTax(fIncome, f5In, fExemptionPoint) {  
    var iRet = 0;  
    var strRank = '';
      
    var fVal = fIncome - f5In - fExemptionPoint;  
    if (fVal <= 0) {  
        iRet = 0;  
        strRank = '不用交税';
    }   
    else if (fVal <= 1500){  
        iRet = fVal * 0.03;  
        strRank = '(0, 1500]';
    }   
    else if (fVal <= 4500) {  
        iRet = fVal * 0.1 - 105;  
        strRank = '(1500, 4500]';
    }  
    else if (fVal <= 9000) {  
        iRet = fVal * 0.2 - 555;  
        strRank = '(4500, 9000]';
    }  
    else if (fVal <= 35000) {  
        iRet = fVal * 0.25 - 1005;  
        strRank = '(9000, 35000]';
    }  
    else if (fVal <= 55000) {  
        iRet = fVal * 0.3 - 2755;  
        strRank = '(35000, 55000]';
    }  
    else if (fVal <= 80000) {  
        iRet = fVal * 0.35 - 5505;  
        strRank = '(55000, 80000]';
    }  
    else {  
        iRet = fVal * 0.45 - 13505;  
        strRank = '土豪';
    }  
    var objTmp = {};
    objTmp.val = iRet;
    objTmp.rank = strRank;
    return objTmp;  
}  
  
var aryIncomeX = [];  
var aryIncomeYTax = [];  
var aryIncomeY = [];  
var aryIncomeYRankDesc = [];
var aryIncomeY5In = [];  
var aryIncomeYHouse = [];  
var fIncomeLeft = 3500;  
var fIncomeRight = 90000;  
for (var i = fIncomeLeft; i <= fIncomeRight; i += 100) {  
    aryIncomeX.push(i);  
    var f5In = funcCalc5In(bFixedIn ? fFixedInBase : i); //.toFixed(2);  
    var fHousePerson = funcCalcHouse(bFixedHouse ? fFixedHouseBase : i); //.toFixed(2);
    var f5In_House = f5In + fHousePerson;
    var objVal_Rank = funcCalcTax(i, f5In_House, fExemptionPoint);
    var fTax = Math.ceil(objVal_Rank.val);  
    
    aryIncomeYTax.push(fTax);  
    aryIncomeY.push(i - fTax - f5In_House);  
    aryIncomeY5In.push(f5In);  
    aryIncomeYHouse.push(fHousePerson);
    aryIncomeYRankDesc.push(objVal_Rank.rank);
}  
  
option = {  
    title: {  
        text: 'tax in beijing : exemption pt : ' + fExemptionPoint  
    },  
    tooltip: {  
        trigger: 'axis',  
        formatter: function(params) {  
            var iIndex = params[0].dataIndex;  
            var aryHtml = [];  
              
            // 收入  
            aryHtml.push('收入:' + aryIncomeX[iIndex] + '<br />');  
              
            // 五险  
            aryHtml.push('五险:' + aryIncomeY5In[iIndex].toFixed(2) + '<br />');  
            
            // 公积金  
            aryHtml.push('公积金:' + aryIncomeYHouse[iIndex].toFixed(2) + '<br />');  
            
            // 五险+公积金  
            aryHtml.push('五险+公积金:' + (aryIncomeY5In[iIndex] + aryIncomeYHouse[iIndex]).toFixed(2) + '<br />');  
              
            // 个税  
            aryHtml.push('个税:' + aryIncomeYTax[iIndex].toFixed(2) + '<br />');  
            
            // 个税等级  
            aryHtml.push('个税等级:' + aryIncomeYRankDesc[iIndex] + '<br />');  
            
            // 五险+公积金+个税
            aryHtml.push('五险+公积金+个税:' + (aryIncomeY5In[iIndex] + aryIncomeYHouse[iIndex] + aryIncomeYTax[iIndex]).toFixed(2) + '<br />');  
            
            // 税后收入  
            aryHtml.push('税后收入:' + aryIncomeY[iIndex].toFixed(2) + '<br />');  
            
            // +公积金税后收入
            aryHtml.push('+公积金税后收入:' + (aryIncomeY[iIndex] + aryIncomeYHouse[iIndex] * 2).toFixed(2) + '<br />');  
              
            // 年收入  
            aryHtml.push('年收入:' + (aryIncomeX[iIndex] * 12).toFixed(2) + '<br />');  

            // 税后年收入  
            aryHtml.push('税后年收入:' + (aryIncomeY[iIndex] * 12).toFixed(2) + '<br />');  
            
            // +公积金税后年收入  
            aryHtml.push('+公积金税后年收入:' + ((aryIncomeY[iIndex] + aryIncomeYHouse[iIndex] * 2) * 12).toFixed(2) + '<br />');  
              
            // 年缴税  
            aryHtml.push('年缴税:' + (aryIncomeYTax[iIndex] * 12).toFixed(2) + '<br />');  
              
            return aryHtml.join('');  
        }  
    },  
    xAxis: {  
        data: aryIncomeX  
    },  
    yAxis: [  
        {  
            type: 'value',  
            scale: true,  
            name: 'tax',  
            //max: 20000,  
            min: 0  
        },  
        {  
            type: 'value',  
            scale: true,  
            name: 'income',  
            max: fIncomeRight,  
            min: 0,  
            splitLine: {  
                show: false  
            }  
        }  
    ],  
    legend: {  
        right: 20,  
        data: ['tax', 'income']    
    },  
    dataZoom: [{  
        start: 0,  
        end: 100  
    }, {  
        type: 'inside'  
    }],  
      
    series: [{  
            name: 'tax',  
            type: 'line',  
            yAxisIndex: 0,  
            data: aryIncomeYTax
        }
        ,   
        {  
        name: 'income',  
        type: 'line',  
        yAxisIndex: 1,  
        data: aryIncomeY  
        }  
    ]  
};  



  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值