var businessT = require('../../../tools/business-tool.js') var sysT = require('../../../tools/sys-tool.js') var app = getApp() var childrenDeduct = 1000 var education = [300, 400] var support = 2000 var loans = 1000 var renting = 1500 var medicalRange = [15000, 80000] Page({ /** * 页面的初始数据 */ data: { adapter: { suffix: '', }, deduct: { show: '0.00', medical: 0, other:0 }, tips: { s: false, t: '', c: [] }, deductItem: [ { t: '子女教育(3岁以上)', s: false, i: 0 }, { t: '继续教育', s: false, i: 1 }, { t: '赡养老人(≥60岁)', s: false, i: 2 }, { t: '大病医疗', s: false, i: 3 }, { t: '首套房贷利息', s: false, i: 4 }, { t: '住房租金', s: false, i: 5 }, { t: '子女人数', c: '1', v: '0', a: ['1', '2','3','4','5'], i: 6 },//6 { t: '承担方', c: '自己承担', v: '0', a: ['自己承担', '夫妻双方均摊'], i: 7 },//7, { t: '类型', c: '职业资格教育', v: '0', a: ['职业资格教育', '学历(学位)继续教育'], i: 8 },//8, { t: '分摊人数', c: '1人', v: '0', a: ['1人', '2人', '3人或以上'], i: 9 },//9, { t: '分摊金额', c: '', p: '分摊金额≤1000元/人', i: 2 },//10 { t: '支出费用', c: '', p: '', i: 3 },//11 ] }, tipsAction: businessT.action(function (sender) { if (sender.currentTarget.id == '2') { this.data.tips.t = '子女教育'; this.data.tips.c = ['1、纳税人的子女接受全日制学历教育的相关支出,按照每个子女每月1000元的标准定额扣除。', '2、学历教育包括义务教育(小学、初中教育)、高中阶段教育(普通高中、中等职业、技工教育) 、高等教育(大学专科、大学本科、硕士研究生、博士研究生教育)。', '3、年满3岁至小学入学前处于学前教育阶段的子女,按本条第一款规定执行。'] } else if (sender.currentTarget.id == '3') { this.data.tips.t = '继续教育'; this.data.tips.c = ['1、纳税人在中国境内接受学历(学位)继续教育的支出,在学历(学位)教育期间按照每月400元定额扣除。', '2、同一学历(学位)继续教育的扣除期限不能超过48个月。', '3、纳税人接受技能人员职业资格继续教育、专业技术人员职业资格继续教育的支出。', '4、在取得相关证书的当年,按照3600元定额扣除。'] } else if (sender.currentTarget.id == '4') { this.data.tips.t = '赡养老人'; this.data.tips.c = ['被赡养人是指年满60岁(含)的父母,以及子女均已去世的年满60岁的祖父母、外祖父母。', '1、纳税人为独生子女的,按照每月2000元的标准定额扣除。', '2、纳税人为非独生子女的,由其与兄弟姐妹分摊每月2000元的扣除额度,每人分摊的额度不能超过每月1000元。可以由赡养人均摊或者约定分摊,也可以由被赡养人指定分摊。约定或者指定分摊的须签订书面分摊协议,指定分摊优先于约定分摊。具体分摊方式和额度在一个纳税年度内不能变更。'] } else if (sender.currentTarget.id == '5') { this.data.tips.t = '大病医疗'; this.data.tips.c = ['1、在一个纳税年度内,纳税人发生的与基本医保相关的医药费用支出。', '2、扣除医保报销后个人负担(指医保目录范围内的自付部分)累计超过15000元的部分,由纳税人在办理年度汇算清缴时,在80000元限额内据实扣除。'] } else if (sender.currentTarget.id == '6') { this.data.tips.t = '首套房贷利息'; this.data.tips.c = ['1、纳税人本人或者配偶单独或者共同使用商业银行或者住房公积金个人住房贷款为本人或者其配偶购买中国境内住房,发生的首套住房贷款利息支出,在实际发生贷款利息的年度,按照每月1000元的标准定额扣除,扣除期限最长不超过240个月。', '2、纳税人只能享受一次首套住房贷款的利息扣除。'] } else if (sender.currentTarget.id == '7') { this.data.tips.t = '住房租金'; this.data.tips.c = ['纳税人在主要工作城市没有自有住房而发生的住房租金支出,按照以下标准定额扣除:', '1、直辖市、省会(首府)城市、计划单列市以及国务院确定的其他城市,扣除标准为每月1500元。', '2、除第一项所列城市以外,市辖区户籍人口超过100万的城市,扣除标准为每月1100元;市辖区户籍人口不超过100万的城市,扣除标准为每月800元。'] } this.data.tips.s = true; this.setData({ tips: this.data.tips }) }), dismissTipsView: businessT.action(function (sender) { this.data.tips.s = false; this.setData({ tips: this.data.tips }) }), // checkboxChange: function (e) { // console.log(e.detail.value.length,'checkbox发生change事件,携带value值为:', e.detail.value) // }, switchChange: businessT.action(function (sender) { //console.log(sender.currentTarget.dataset.index) this.data.deductItem[sender.currentTarget.dataset.index].s = Boolean(sender.detail.value.length) if (sender.currentTarget.dataset.index == 4 && Boolean(sender.detail.value.length) ) { this.data.deductItem[5].s = false } else if (sender.currentTarget.dataset.index == 5 && Boolean(sender.detail.value.length) ) { this.data.deductItem[4].s = false } this.calculate() }), pickerChange: businessT.action(function (sender) { businessT.debugLog(sender) var index = sender.currentTarget.id this.data.deductItem[index].v = sender.detail.value this.data.deductItem[index].c = this.data.deductItem[index].a[sender.detail.value] this.calculate() }), inputAction: function (sender) { businessT.debugLog(sender) if (sender.currentTarget.id == 1) { this.data.deductItem[6].c = sender.detail.value } else if (sender.currentTarget.id == 2) { if (sender.detail.value > 1000) { sender.detail.value = 1000 } this.data.deductItem[10].c = sender.detail.value } else if (sender.currentTarget.id == 3) { this.data.deductItem[11].c = sender.detail.value } this.calculate() }, calculate: function() { var deduct = 0 if (this.data.deductItem[0].s) { deduct = deduct + this.data.deductItem[6].c * childrenDeduct / (Number(this.data.deductItem[7].v) + 1) } if (this.data.deductItem[1].s) { deduct = deduct + education[this.data.deductItem[8].v] } if (this.data.deductItem[2].s) { if (this.data.deductItem[9].v == 2) { deduct = deduct + Number(this.data.deductItem[10].c) } else { deduct = deduct + support / (Number(this.data.deductItem[9].v) + 1) } } if (this.data.deductItem[3].s) { var medical = Number(this.data.deductItem[11].c) deduct = deduct + medical this.data.deduct.medical = medical } if (this.data.deductItem[4].s) { deduct = deduct + loans } else if (this.data.deductItem[5].s) { deduct = deduct + renting } this.data.deduct.other = deduct - this.data.deduct.medical this.data.deduct.show = Number(deduct).toFixed(2) this.setData({ deductItem: this.data.deductItem, deduct: this.data.deduct }) }, comfirmAction: businessT.action(function (sender) { if (this.data.deductItem[0].s && Number(this.data.deductItem[6].c) == 0) { wx.showModal({ content: '请输入子女人数', }) return } if (this.data.deductItem[2].s && this.data.deductItem[9].v == 2 && Number(this.data.deductItem[10].c) == 0) { wx.showModal({ content: '请输入分摊金额', }) return } var a = Number(this.data.deductItem[11].c) if (this.data.deductItem[3].s && a == 0) { wx.showModal({ content: '请输入大病医疗费用', }) return } if (this.data.deductItem[3].s && (a > medicalRange[1] || a < medicalRange[0])) { wx.showModal({ content: '请输入大病医疗费用范围内的金额', }) return } var pages = getCurrentPages() pages[pages.length - 2].data.deduct.c = this.data.deduct.show pages[pages.length - 2].data.deductData.medical = this.data.deduct.medical pages[pages.length - 2].data.deductData.other = this.data.deduct.other wx.navigateBack({ }) }), /** * 生命周期函数--监听页面加载 */ onLoad: function (options) { this.data.adapter = { suffix: sysT.suffixOfClass() } this.data.deductItem[11].p = medicalRange[0] + '元-' + medicalRange[1] + '元' this.setData({ adapter: this.data.adapter, deductItem: this.data.deductItem }) }, /** * 生命周期函数--监听页面初次渲染完成 */ onReady: function () { }, /** * 生命周期函数--监听页面显示 */ onShow: function () { }, /** * 生命周期函数--监听页面隐藏 */ onHide: function () { }, /** * 生命周期函数--监听页面卸载 */ onUnload: function () { }, /** * 页面相关事件处理函数--监听用户下拉动作 */ onPullDownRefresh: function () { }, /** * 页面上拉触底事件的处理函数 */ onReachBottom: function () { }, /** * 用户点击右上角分享 */ onShareAppMessage: function () { } })