vat-revenue-config.ctrl.js 14.2 KB
Newer Older
chase's avatar
chase committed
1
vatModule.controller('VatRevenueConfigController', ['$scope', '$log', '$translate', '$timeout', 'SweetAlert', '$q',
eddie.woo's avatar
eddie.woo committed
2 3 4 5 6 7 8
    '$interval','dxDataGridService','$http','apiConfig',
    function ($scope, $log, $translate, $timeout, SweetAlert, $q, $interval,dxDataGridService,$http,apiConfig) {
        'use strict';

        //表格配置
        $scope.revenueGridOptions = $.extend(true, {}, dxDataGridService.BASIC_GRID_OPTIONS, {
            columns: [
eddie.woo's avatar
eddie.woo committed
9
                {dataField: 'idStr', caption: '', visible: false},
eddie.woo's avatar
eddie.woo committed
10 11
                {dataField: 'name', caption: $translate.instant('RevenueColName'), fixed: true, allowHeaderFiltering: true, minWidth: '300px'},
                {dataField: 'orgId', caption: $translate.instant('RevenueColOrg'), fixed: true, allowHeaderFiltering: true, minWidth: '300px',
eddie.woo's avatar
eddie.woo committed
12 13 14 15 16 17
                    calculateCellValue: function(data) {
                        return _.find($scope.selectOrgList, function(o) {
                            return o.id === data.orgId;
                        }).name;
                    }},
                //todo 组装accountName
eddie.woo's avatar
eddie.woo committed
18 19
                {dataField: 'accountTypeStr', caption: $translate.instant('RevenueColAccountName'), fixed: true, allowHeaderFiltering: true, width: '100px'},
                {dataField: 'taxRate', caption: $translate.instant('RevenueColTaxRate'), fixed: true, allowHeaderFiltering: true, width: '50px',
eddie.woo's avatar
eddie.woo committed
20 21 22
                    calculateCellValue: function(data) {
                        return (data.taxRate * 100) + '%';
                    }},
eddie.woo's avatar
eddie.woo committed
23 24 25 26 27 28 29
                {dataField: 'taxBaseStr', caption: $translate.instant('RevenueColTaxBase'), fixed: true, allowHeaderFiltering: true, width: '120px'},
                {dataField: 'revenueTypeStr', caption: $translate.instant('RevenueColType'), fixed: true, allowHeaderFiltering: true, minWidth: '250px'},
                {dataField: 'taxTypeStr', caption: $translate.instant('RevenueColTaxType'), fixed: true, allowHeaderFiltering: true, width: '120px'},
                {dataField: 'statusStr', caption: $translate.instant('RevenueColStatus'), fixed: true, allowHeaderFiltering: true, width: '50px'},
                {dataField: 'startDate', caption: $translate.instant('RevenueColEnable'), fixed: true, allowHeaderFiltering: true, width: '120px'},
                {dataField: 'endDate', caption: $translate.instant('RevenueColDisable'), fixed: true, allowHeaderFiltering: true, width: '120px'},
                {dataField: '', caption: $translate.instant('RevenueColEdit'), fixed: true,width: '80px', alignment: 'center',
eddie.woo's avatar
eddie.woo committed
30 31 32 33 34 35 36 37
                    cellTemplate: function (container, options) {
                        try {
                            $('<i class="fa fa-pencil-square-o" style="cursor: pointer"></i>&nbsp;&nbsp;')
                                .on('click', function () {
                                    $scope.editConfig(options.data);
                                }).appendTo(container);
                            $('<i class="fa fa-trash" style="cursor: pointer;margin-left: 5px;"></i>')
                                .on('click', function () {
eddie.woo's avatar
eddie.woo committed
38
                                    $scope.delConfig([options.data.idStr]);
eddie.woo's avatar
eddie.woo committed
39 40 41 42 43 44
                                }).appendTo(container);
                        }
                        catch (e) {
                            $log.error(e);
                        }
                    }},
eddie.woo's avatar
eddie.woo committed
45
            ],
eddie.woo's avatar
eddie.woo committed
46 47 48 49 50 51 52
            bindingOptions: {
                dataSource: 'pageConfDataSource',
            },
            selection: {
                mode: 'multiple',
                showCheckBoxesMode: 'always',
                allowSelectAll: true
eddie.woo's avatar
eddie.woo committed
53 54 55 56 57
            },
            onSelectionChanged: function (data) {
                $scope.selectedItems = data.selectedRowsData;
                $scope.selectedRecourdCount = data.selectedRowsData.length;
            },
eddie.woo's avatar
eddie.woo committed
58 59 60 61
        });

        //刷新页面
        $scope.refreshConfigGrid = function () {
eddie.woo's avatar
eddie.woo committed
62 63 64 65 66 67 68 69 70
            $http.post('/revenueConf/queryPage',{pageInfo: $scope.pagingOptions}, apiConfig.createVat())
                .success(function (res) {
                    if (res && res.list) {
                        $scope.pageConfDataSource = res.list;
                        $scope.pagingOptions.totalItems = res.pageInfo.totalCount;
                    }else {
                        SweetAlert.error($translate.instant('SystemError'));
                    }
                })
eddie.woo's avatar
eddie.woo committed
71 72 73 74
        };

        //添加配置
        $scope.addConfig = function () {
eddie.woo's avatar
eddie.woo committed
75 76
            $scope.isEdit = false;
            $scope.isOrgReadOnly = false;
eddie.woo's avatar
eddie.woo committed
77 78 79 80
            $($scope.revenueConfAddDiv).modal('show');
        };

        //删除配置
eddie.woo's avatar
eddie.woo committed
81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98
        $scope.delConfig = function (idList) {
            $http.post('/revenueConf/del',idList, apiConfig.createVat())
                .success(function (res) {
                    if (res && 0 === res.code) {
                        SweetAlert.success($translate.instant('RevenueDelSuccess'));
                        $scope.refreshConfigGrid();
                    }else {
                        SweetAlert.error($translate.instant('SystemError'));
                    }
                })
        };

        $scope.batchDelConfig = function () {
            if (!!$scope.selectedRecourdCount) {
                $scope.delConfig(_.map($scope.selectedItems, function(item){ return item.idStr; }));
            }else {
                SweetAlert.warning($translate.instant('PleaseSelectAtLeastOneItem'));
            }
eddie.woo's avatar
eddie.woo committed
99 100 101 102
        };

        //添加配置
        $scope.saveConfig = function () {
eddie.woo's avatar
eddie.woo committed
103 104 105 106 107 108 109 110
            parseTaxBase();
            if ($scope.isEdit) {
                $http.post('/revenueConf/update',$scope.formParam, apiConfig.createVat())
                    .success(function (res) {
                        if (res && 0 === res.code) {
                            SweetAlert.success($translate.instant('RevenueAddSuccess'));
                            $scope.refreshConfigGrid();
                            $($scope.revenueConfAddDiv).modal('hide');
eddie.woo's avatar
eddie.woo committed
111
                            $scope.cancelModal();
eddie.woo's avatar
eddie.woo committed
112 113 114 115 116 117 118 119 120 121 122
                        }else {
                            SweetAlert.error($translate.instant('SystemError'));
                        }
                    })
            }else {
                $http.post('/revenueConf/add',$scope.formParam, apiConfig.createVat())
                    .success(function (res) {
                        if (res && 0 === res.code) {
                            SweetAlert.success($translate.instant('RevenueAddSuccess'));
                            $scope.refreshConfigGrid();
                            $($scope.revenueConfAddDiv).modal('hide');
eddie.woo's avatar
eddie.woo committed
123
                            $scope.cancelModal();
eddie.woo's avatar
eddie.woo committed
124 125 126 127 128
                        }else {
                            SweetAlert.error($translate.instant('SystemError'));
                        }
                    })
            }
eddie.woo's avatar
eddie.woo committed
129 130 131 132
        };

        //关闭配置框
        $scope.cancelModal = function () {
eddie.woo's avatar
eddie.woo committed
133 134 135 136 137 138 139
            $scope.formParam = {
                startDate: null,
                endDate: null,
            };
            $('#configForm')[0].reset();
            $scope.isShowBaseCrCode = false;
            $scope.isAccount = false;
eddie.woo's avatar
eddie.woo committed
140 141
        };

eddie.woo's avatar
eddie.woo committed
142 143 144 145 146 147 148 149 150 151 152 153
        //编辑
        $scope.editConfig = function (data) {
            $scope.isEdit = true;
            $scope.isOrgReadOnly = true;
            $scope.formParam = data;
            $scope.formParam.orgList = [data.orgId];
            if (4 === $scope.formParam.taxBase) {
                $scope.formParam.baseCrCode = $scope.formParam.baseDrCode;
            }
            $($scope.revenueConfAddDiv).modal('show');
        };

eddie.woo's avatar
eddie.woo committed
154 155 156 157 158
        //获取机构列表
        function getMyOrgList() {
            $http.get('/org/getMyOrgList',apiConfig.createVat())
                .success(function (res) {
                    if (res && 0 === res.code) {
eddie.woo's avatar
eddie.woo committed
159
                        $scope.selectOrgList = res.data;
eddie.woo's avatar
eddie.woo committed
160
                        $scope.refreshConfigGrid();
eddie.woo's avatar
eddie.woo committed
161 162 163 164 165 166
                    }else {
                        SweetAlert.error($translate.instant('RevenueGetOrgError'));
                    }
                })
        }

eddie.woo's avatar
eddie.woo committed
167 168 169 170 171 172 173 174 175 176 177 178
        function parseTaxBase() {
            if ($scope.formParam.taxBase) {
                if (4 === $scope.formParam.taxBase) {
                    $scope.formParam.baseDrCode = $scope.formParam.baseCrCode;
                    $scope.formParam.baseCrCode = '';
                }else if (4 !== $scope.formParam.taxBase && 5 !== $scope.formParam.taxBase) {
                    $scope.formParam.baseCrCode = '';
                    $scope.formParam.baseDrCode = '';
                }
            }
        }

eddie.woo's avatar
eddie.woo committed
179 180 181 182 183 184 185 186 187 188 189 190 191 192 193

        (function initialize() {

            //分页的设置
            $scope.pagingOptions = {
                pageIndex: 1,  //当前页码
                totalItems: 0,  //总数据
                pageSize: 20,  //每页多少条数据
            };

            $scope.formParam = {

            };

            $scope.isAccount = false;
eddie.woo's avatar
eddie.woo committed
194 195
            $scope.isShowBaseCrCode = false;
            $scope.isOrgReadOnly = false;
eddie.woo's avatar
eddie.woo committed
196 197 198 199 200 201 202

            //机构下拉设置
            $scope.selectOrgOptions = {
                displayExpr: 'name',
                valueExpr: 'id',
                width: '95%',
                bindingOptions: {
eddie.woo's avatar
eddie.woo committed
203
                    value: 'formParam.orgList',
eddie.woo's avatar
eddie.woo committed
204 205
                    dataSource: 'selectOrgList',
                    readOnly: 'isOrgReadOnly'
eddie.woo's avatar
eddie.woo committed
206 207 208 209 210 211
                },
                height: '30px',
                placeholder: '',
                showClearButton: true,
                searchEnabled: true,
                noDataText: $translate.instant('RevenueNoOrgData'),
ZeGang Z Si's avatar
ZeGang Z Si committed
212
                showSelectionControls: true
eddie.woo's avatar
eddie.woo committed
213 214 215 216 217 218
            };

            //税率下拉框
            $scope.selectTaxRateOptions = {
                displayExpr: 'key',
                valueExpr: 'val',
eddie.woo's avatar
eddie.woo committed
219 220 221
                bindingOptions: {
                    value: 'formParam.taxRate'
                },
eddie.woo's avatar
eddie.woo committed
222 223 224 225 226 227 228 229 230 231 232 233 234 235 236
                dataSource: [
                    {'key': '0%', 'val': 0},
                    {'key': '1.5%', 'val': 0.015},
                    {'key': '3%', 'val': 0.03},
                    {'key': '5%', 'val': 0.05},
                    {'key': '6%', 'val': 0.06},
                    {'key': '10%', 'val': 0.1},
                    {'key': '16%', 'val': 0.16},
                ]
            };

            //计税基础下拉
            $scope.selectTaxBaseOptions = {
                displayExpr: 'key',
                valueExpr: 'val',
eddie.woo's avatar
eddie.woo committed
237 238 239
                bindingOptions: {
                    value: 'formParam.taxBase'
                },
eddie.woo's avatar
eddie.woo committed
240 241 242 243 244 245
                dataSource: [
                    {'key': '账载收入', 'val': 1},
                    {'key': '开票收入', 'val': 2},
                    {'key': '手工录入', 'val': 3},
                    {'key': '借方发生额', 'val': 4},
                    {'key': '贷方发生额', 'val': 5},
eddie.woo's avatar
eddie.woo committed
246 247
                ],
                onSelectionChanged: function (e) {
eddie.woo's avatar
eddie.woo committed
248 249 250
                    if (!e.selectedItem) {
                        return;
                    }
eddie.woo's avatar
eddie.woo committed
251 252 253 254 255 256
                    if (4 === e.selectedItem.val || 5 === e.selectedItem.val) {
                        $scope.isShowBaseCrCode = true;
                    }else {
                        $scope.isShowBaseCrCode = false;
                    }
                }
eddie.woo's avatar
eddie.woo committed
257 258 259 260 261 262
            };

            //账载收入下拉
            $scope.selectAccountTypeOptions = {
                displayExpr: 'key',
                valueExpr: 'val',
eddie.woo's avatar
eddie.woo committed
263 264 265
                bindingOptions: {
                    value: 'formParam.accountType'
                },
eddie.woo's avatar
eddie.woo committed
266 267 268 269
                dataSource: [
                    {'key': '0值', 'val': 0},
                    {'key': '科目', 'val': 1},
                    {'key': '手工录入', 'val': 2},
eddie.woo's avatar
eddie.woo committed
270 271
                ],
                onSelectionChanged: function (e) {
eddie.woo's avatar
eddie.woo committed
272 273 274
                    if (!e.selectedItem) {
                        return;
                    }
eddie.woo's avatar
eddie.woo committed
275 276 277 278 279 280
                    if (1 === e.selectedItem.val) {
                        $scope.isAccount = true;
                    }else {
                        $scope.isAccount = false;
                    }
                }
eddie.woo's avatar
eddie.woo committed
281 282 283 284 285
            };

            $scope.selectRevenueTypeOptions = {
                displayExpr: 'key',
                valueExpr: 'val',
eddie.woo's avatar
eddie.woo committed
286 287 288
                bindingOptions: {
                    value: 'formParam.revenueType'
                },
eddie.woo's avatar
eddie.woo committed
289 290 291 292 293 294 295 296 297
                dataSource: [
                    {'key': '货物及加工修理修配劳务', 'val': 0},
                    {'key': '服务、不动产和无形资产', 'val': 1},
                ]
            };

            $scope.selectTaxTypeOptions = {
                displayExpr: 'key',
                valueExpr: 'val',
eddie.woo's avatar
eddie.woo committed
298 299 300
                bindingOptions: {
                    value: 'formParam.taxType'
                },
eddie.woo's avatar
eddie.woo committed
301 302 303 304 305 306 307 308 309 310 311
                dataSource: [
                    {'key': '一般计税', 'val': 0},
                    {'key': '简易计税', 'val': 1},
                    {'key': '免抵退税', 'val': 2},
                    {'key': '免税', 'val': 3},
                ]
            };

            $scope.selectStatusOptions = {
                displayExpr: 'key',
                valueExpr: 'val',
eddie.woo's avatar
eddie.woo committed
312 313 314
                bindingOptions: {
                    value: 'formParam.status'
                },
eddie.woo's avatar
eddie.woo committed
315 316 317 318 319 320 321
                dataSource: [
                    {'key': '启用', 'val': 0},
                    {'key': '停用', 'val': 1},
                ]
            };

            $scope.dateBoxStart = {
eddie.woo's avatar
eddie.woo committed
322
                width: '100%',
eddie.woo's avatar
eddie.woo committed
323 324 325
                acceptCustomValue: false,
                openOnFieldClick: true,
                displayFormat: 'yyyy-MM',
eddie.woo's avatar
eddie.woo committed
326
                maxZoomLevel: "year",
eddie.woo's avatar
eddie.woo committed
327
                dateSerializationFormat: 'yyyy-MM',
eddie.woo's avatar
eddie.woo committed
328
                bindingOptions: {
eddie.woo's avatar
eddie.woo committed
329
                    value: 'formParam.startDate'
eddie.woo's avatar
eddie.woo committed
330 331 332 333
                }
            };

            $scope.dateBoxEnd = {
eddie.woo's avatar
eddie.woo committed
334
                width: '100%',
eddie.woo's avatar
eddie.woo committed
335 336 337
                acceptCustomValue: false,
                openOnFieldClick: true,
                displayFormat: 'yyyy-MM',
eddie.woo's avatar
eddie.woo committed
338
                maxZoomLevel: "year",
eddie.woo's avatar
eddie.woo committed
339
                dateSerializationFormat: 'yyyy-MM',
eddie.woo's avatar
eddie.woo committed
340
                bindingOptions: {
eddie.woo's avatar
eddie.woo committed
341
                    value: 'formParam.endDate'
eddie.woo's avatar
eddie.woo committed
342 343 344 345 346 347 348 349
                }
            };


            $scope.revenueConfAddDiv = ".vat-revenue-config #revenueConfAddDiv";

            function init() {
                getMyOrgList();
eddie.woo's avatar
eddie.woo committed
350

eddie.woo's avatar
eddie.woo committed
351 352 353 354 355 356 357 358 359 360
            }
            init()

        })();
    }
]);