计算税收在线工具

<!DOCTYPE html>
<html ng-app="myApp">
<head>
    <meta charset="UTF-8">
    <title>Angularjs service</title>
    <link rel="stylesheet" href="lib/bootstrap-3.3.7/dist/css/bootstrap.css">
    <style>
        .zh-input {
            width: 90px;
            display: inline-block;
        }
        .zh-tab {
            margin-bottom: 10px;
        }
        .zh-shou-yi {
            font-size: 29px;
        }
        .mgl10 {
            margin-left: 10px;
        }
        .ftwbold {
            font-weight: bold;
            font-size: 17px;
        }
    </style>
</head>
<body style="margin: 20px">
    <div ng-controller="myController">
        <ul class="nav nav-tabs zh-tab">
            <li role="presentation" ng-click="tabChange('singleInvest')" ng-class="{'active': showType === 'singleInvest'}">
                <a href="#">计算</a>
            </li>
        </ul>

        <label class="ftwbold">起征点:</label>
        <input type="text"  class="form-control zh-input" ng-model="qiZhengDian"><br>
        <label class="ftwbold">Tup:</label>{{tup}}<br>
        <label class="ftwbold">年终奖:</label>
        <input type="text"  class="form-control zh-input" ng-model="nianZhongJiang"> <br>
        <label class="ftwbold">年终奖和Tup纳税:</label>{{nianZhongJiangNaShui}}<br>
        <label class="ftwbold">总计扣税:</label>{{totalTax}}<br>

        <form ng-show="showType === 'singleInvest'">
            <div class="form-group" ng-repeat="item in money track by $index">
                <label class="ftwbold">{{$index + 1}}月:</label>
                <label class="mgl10">gongzi</label>
                <input type="text"  class="form-control zh-input"  ng-model="item.common">
                <label class="mgl10">其它</label>
                <input type="text"  class="form-control zh-input"  ng-model="item.other">
                <label class="mgl10">WuXianYiJin</label>
                <input type="text"  class="form-control zh-input"  ng-model="item.wuXianYiJin">
                <label class="mgl10">本月附加扣除</label>
                <input type="text"  class="form-control zh-input"  ng-model="item.fuJiaKouChu">
                <label class="mgl10">benyue jiao shui:</label>{{item.tax}}
                <label class="mgl10">累计JiaoShui:</label>{{item.leiJiJiaoShui}}
                <label class="mgl10">累计YingNaShuiEDu:</label>{{item.leiJiYingNaShui}}
            </div>
        </form>
    </div>

</body>

<script type="text/javascript" src="./lib/jquery.js"></script>
<script type="text/javascript" src="./lib/angular.js"></script>
<script type="text/javascript" src="./lib/bootstrap-3.3.7/dist/js/bootstrap.js"></script>

<script type="text/javascript">
    var myApp = angular.module("myApp", []);

    myApp.controller("myController", ["$scope", "$filter", function ($scope, $filter) {
        $scope.qiZhengDian = 5000;
        $scope.nianZhongJiang = 180000;
        $scope.tup = 63000;
        $scope.nianZhongJiangNaShui = 0;
        $scope.$watch('nianZhongJiang', function (newVal) {
            var shiJiTotal = parseInt($scope.nianZhongJiang, 10) + $scope.tup - $scope.money[4].other;
            $scope.nianZhongJiangNaShui = shiJiTotal * getShuiLv(shiJiTotal) - getJiangJinSuSuanKouChu(shiJiTotal);
            $scope.totalTax = $scope.nianZhongJiangNaShui + $scope.money[11].leiJiJiaoShui;
        });

        $scope.money = [];
        var salaryModel;
        for (var i = 0; i < 12; i++) {
            salaryModel = {
                common : 25300, // 基本工资
                other: 0, // 其它收入
                fuJiaKouChu: 4000, // 本月附加扣除数量
                tax: 0, // 本月缴税数量
                leiJiJiaoShui: 0, // 本年到当月累计缴税
                leiJiYingNaShui: 0, // 本年到当月累计应缴税额度
                wuXianYiJin: 2437, // 本月五险一金
            };
            $scope.money.push(salaryModel);
        }

        initMoney();

        // 当年有特殊情况的可以在这初始化,避免刷新后要不停的输入
        function initMoney() {
            $scope.money[0].fuJiaKouChu = 3000;
            $scope.money[1].fuJiaKouChu = 3000;
            $scope.money[2].fuJiaKouChu = 3000;

            $scope.money[1].other = 21262;  // 上一年月末加班+专项激励3000
            $scope.money[2].other = 500;  // 总裁奖500
        }

        $scope.$watch('money', function (newVal) {
            console.log('watch money');
            for (var i = 0; i < 12; i++) {
                var item = $scope.money[i];
                item.dangYueYingNaShui = item.common + parseInt(item.other) - item.wuXianYiJin - $scope.qiZhengDian - item.fuJiaKouChu;

                if (i === 0) {
                    item.leiJiYingNaShui = parseInt(item.dangYueYingNaShui, 10);
                    item.tax = parseInt(
                        item.leiJiYingNaShui
                        * getShuiLv(item.leiJiYingNaShui)
                        - getSuSuanKouChu(item.leiJiYingNaShui),
                        10
                    );
                    item.leiJiJiaoShui = item.tax
                } else {
                    item.leiJiYingNaShui = parseInt(item.dangYueYingNaShui + $scope.money[i - 1].leiJiYingNaShui, 10);
                    item.tax = parseInt(
                        item.leiJiYingNaShui
                        * getShuiLv(item.leiJiYingNaShui)
                        - getSuSuanKouChu(item.leiJiYingNaShui)
                        - $scope.money[i - 1].leiJiJiaoShui,
                        10
                    );
                    item.leiJiJiaoShui = item.tax + $scope.money[i - 1].leiJiJiaoShui;
                }
            }

            var shiJiTotal = parseInt($scope.nianZhongJiang, 10) + $scope.tup - $scope.money[4].other;
            $scope.nianZhongJiangNaShui = shiJiTotal * getShuiLv(shiJiTotal) - getJiangJinSuSuanKouChu(shiJiTotal);
            $scope.totalTax = $scope.nianZhongJiangNaShui + $scope.money[11].leiJiJiaoShui;

        }, true);

        function getShuiLv(leiJiYingNaShui) {
            if (leiJiYingNaShui <= 36000) {
                return 0.03;
            } else if (leiJiYingNaShui > 36000 && leiJiYingNaShui <= 144000) {
                return 0.1;
            } else if (leiJiYingNaShui > 144000 && leiJiYingNaShui <= 300000) {
                return 0.2;
            } else if (leiJiYingNaShui > 300000 && leiJiYingNaShui <= 420000) {
                return 0.25;
            } else if (leiJiYingNaShui > 420000 && leiJiYingNaShui <= 660000) {
                return 0.30;
            } else if (leiJiYingNaShui > 660000 && leiJiYingNaShui <= 960000) {
                return 0.35;
            } else if (leiJiYingNaShui > 960000 && leiJiYingNaShui) {
                return 0.45;
            }
        }

        function getSuSuanKouChu(leiJiYingNaShui) {
            if (leiJiYingNaShui <= 36000) {
                return 0;
            } else if (leiJiYingNaShui > 36000 && leiJiYingNaShui <= 144000) {
                return 2520;
            } else if (leiJiYingNaShui > 144000 && leiJiYingNaShui <= 300000) {
                return 16920;
            } else if (leiJiYingNaShui > 300000 && leiJiYingNaShui <= 420000) {
                return 31920;
            } else if (leiJiYingNaShui > 420000 && leiJiYingNaShui <= 660000) {
                return 52920;
            } else if (leiJiYingNaShui > 660000 && leiJiYingNaShui <= 960000) {
                return 85920;
            } else if (leiJiYingNaShui > 960000 && leiJiYingNaShui) {
                return 181920;
            }
        }

        function getJiangJinSuSuanKouChu(leiJiYingNaShui) {
            if (leiJiYingNaShui <= 36000) {
                return 0;
            } else if (leiJiYingNaShui > 36000 && leiJiYingNaShui <= 144000) {
                return 210;
            } else if (leiJiYingNaShui > 144000 && leiJiYingNaShui <= 300000) {
                return 1410;
            } else if (leiJiYingNaShui > 300000 && leiJiYingNaShui <= 420000) {
                return 2660;
            } else if (leiJiYingNaShui > 420000 && leiJiYingNaShui <= 660000) {
                return 4410;
            } else if (leiJiYingNaShui > 660000 && leiJiYingNaShui <= 960000) {
                return 7160;
            } else if (leiJiYingNaShui > 960000 && leiJiYingNaShui) {
                return 15160;
            }
        }


        $scope.showType = 'singleInvest';

        $scope.tabChange = function (type) {
            $scope.showType = type;
        }
    }]);
</script>
</html>

  

posted on 2020-03-23 20:10  ゛墨メ冰ミ  阅读(302)  评论(0编辑  收藏  举报

导航