五险一金计算器
你面试拿到一个offer,月薪2万,到手能拿多少?HR说五险一金要扣一大笔,但具体扣多少、怎么算,每个城市还不一样。
slex: "0.1",
namespace: "example_salary_calculator",
g: {
base: 20000,
city: "beijing",
rates: {
beijing: { pensionP: 8, medicalP: 2, unemploymentP: 0.5, pensionC: 16, medicalC: 8, unemploymentC: 0.5, injury: 0.2, maternity: 0.8, housing: 12 },
shanghai: { pensionP: 8, medicalP: 2, unemploymentP: 0.5, pensionC: 16, medicalC: 8, unemploymentC: 0.5, injury: 0.2, maternity: 0.8, housing: 7 },
guangzhou: { pensionP: 8, medicalP: 2, unemploymentP: 0.5, pensionC: 16, medicalC: 8, unemploymentC: 0.5, injury: 0.2, maternity: 0.8, housing: 5 },
shenzhen: { pensionP: 8, medicalP: 2, unemploymentP: 0.5, pensionC: 16, medicalC: 8, unemploymentC: 0.5, injury: 0.2, maternity: 0.8, housing: 5 }
},
currentRate: function () { return this.rates[this.city] || this.rates.beijing; },
personalRate: function () { var r = this.currentRate(); return r.pensionP + r.medicalP + r.unemploymentP + r.housing; },
companyRate: function () { var r = this.currentRate(); return r.pensionC + r.medicalC + r.unemploymentC + r.injury + r.maternity + r.housing; },
personalTotal: function () { return this.base * this.personalRate() / 100; },
companyTotal: function () { return this.base * this.companyRate() / 100; },
total: function () { return this.personalTotal() + this.companyTotal(); },
takeHome: function () { return this.base - this.personalTotal(); },
cityLabel: function () { return { beijing: "北京", shanghai: "上海", guangzhou: "广州", shenzhen: "深圳" }[this.city] || this.city; }
},
layout: {
"section:salary": {
eyebrow: "计算器",
title: "五险一金计算器",
subtitle: "输入税前工资和城市,实时计算五险一金明细。",
"grid:params": {
columns: 1, mdColumns: 2,
"column:baseField": {
"input:base": { label: "税前工资", "$value": "g.base", type: "number", unit: "元/月", onchange: "g.base = Number($event || 0)" },
"slider:base": { label: "税前工资", "$value": "g.base", min: 3000, max: 50000, step: 500, unit: "元", onchange: "g.base = Number($event)" }
},
"column:cityField": {
"select:city": {
label: "缴纳城市",
"$value": "g.city",
options: [
{ label: "北京", value: "beijing" },
{ label: "上海", value: "shanghai" },
{ label: "广州", value: "guangzhou" },
{ label: "深圳", value: "shenzhen" }
],
onchange: "g.city = String($event)"
}
}
},
"grid:summary": {
columns: 1, mdColumns: 3,
"stat:personal": { label: "个人扣除", "$value": "g.personalTotal().toFixed(0)", unit: "元" },
"stat:company": { label: "公司缴纳", "$value": "g.companyTotal().toFixed(0)", unit: "元" },
"stat:takehome": { label: "到手工资", "$value": "g.takeHome().toFixed(0)", unit: "元" }
}
}
}
}换个城市看看,公积金比例差很多——北京12%,上海7%,到手工资能差好几百。
slex: "0.1",
namespace: "example_salary_calculator",
layout: {
"card:detail": {
title: "各项明细",
"grid:personal": {
columns: 1, mdColumns: 4,
"stat:pension_p": { label: "养老(8%)", "$value": "(g.base * 0.08).toFixed(0)", unit: "元" },
"stat:medical_p": { label: "医疗(2%)", "$value": "(g.base * 0.02).toFixed(0)", unit: "元" },
"stat:unemployment_p": { label: "失业(0.5%)", "$value": "(g.base * 0.005).toFixed(0)", unit: "元" },
"stat:housing_p": { label: "公积金", "$value": "(g.base * g.currentRate().housing / 100).toFixed(0)", unit: "元" }
},
"grid:company": {
columns: 1, mdColumns: 4,
"stat:pension_c": { label: "养老(16%)", "$value": "(g.base * 0.16).toFixed(0)", unit: "元" },
"stat:medical_c": { label: "医疗(8%)", "$value": "(g.base * 0.08).toFixed(0)", unit: "元" },
"stat:unemployment_c": { label: "失业(0.5%)", "$value": "(g.base * 0.005).toFixed(0)", unit: "元" },
"stat:other_c": { label: "工伤+生育", "$value": "(g.base * 0.01).toFixed(0)", unit: "元" }
},
"callout:note": {
"$tone": "g.personalTotal() > 3000 ? 'warning' : 'info'",
"$text": "g.personalTotal() > 3000 ? '个人扣除超过3000元,到手工资可能低于预期。' : '公积金比例越高,到手工资越少,但公积金可以提取使用。'"
}
}
}
}| 城市 | 养老 | 医疗 | 失业 | 公积金 | 个人合计 |
|---|---|---|---|---|---|
| 北京 | 8% | 2% | 0.5% | 12% | 22.5% |
| 上海 | 8% | 2% | 0.5% | 7% | 17.5% |
| 广州 | 8% | 2% | 0.5% | 5% | 15.5% |
| 深圳 | 8% | 2% | 0.5% | 5% | 15.5% |