vat-model-analysis.ctrl.js 7.41 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74
vatModule.controller('VatModelAnalysisController', ['$scope', '$translate', '$uibModal', 'vatSessionService', 'modelConfigurationService', '$compile', '$timeout', '$q', 'vatImportService', 'vatPreviewService', 'SweetAlert', 'enums', 'vatExportService',
    function ($scope, $translate, $uibModal, vatSessionService, modelConfigurationService, $compile, $timeout, $q, vatImportService, vatPreviewService, SweetAlert, enums, vatExportService) {
        'use strict';

        //由 project 决定的在本页面中固定的变量
        $scope.industryId = vatSessionService.project.industryID;
        $scope.organizationId = vatSessionService.project.organizationID;
        $scope.projectId = vatSessionService.project.id;
        $scope.projectYear = vatSessionService.project.year;
        $scope.serviceTypeId = vatSessionService.project.serviceTypeID;

        /************* ViewModels BEGIN *************/
        $scope.logOptions = {
            isShown: false,
            period: vatSessionService.month,
            moduleId: enums.vatModuleEnum.Result_ModelAnalysisResult
        };

        $scope.modelType = 1;
        $scope.periodFrom = 1;
        $scope.periodTo = 12;
        $scope.modelTreeList = [];

        $scope.selectCategoryId = null;

        $scope.resizableOptions = {
            handles: "right",
            Width: 250,
            minWidth: 200,
            maxWidth: 350
        };

        $scope.dirtyDataProcess = {
            hasCheckedFinished: false,
            intervalId: null,
            progressBarValue: 0,
            processBarMax: 100,
            processBarModalInstance: null,
            progressBarOptions: {
                min: 0,
                width: "90%",
                bindingOptions: {
                    value: 'dirtyDataProcess.progressBarValue',
                    max: 'dirtyDataProcess.processBarMax'
                },
                statusFormat: function (value) {
                    return "计算进度: " + (value * 100).toFixed(0) + "%";
                },
                onComplete: function (e) {
                    $scope.dirtyDataProcess.processBarModalInstance.dismiss({$value: 'cancel'});
                    $scope.dirtyDataProcess.processBarModalInstance = null;

                    clearInterval($scope.dirtyDataProcess.intervalId);
                    $scope.dirtyDataProcess.intervalId = null;

                    loadTreeData();
                }
            }
        };
        /************* ViewModels END *************/

        var loadTreeData = function () {
            var apiFunc = modelConfigurationService.getModelCategory;
            apiFunc($scope.organizationId, $scope.industryId, $scope.serviceTypeId).success(function (data) {
                var dic = {};
                for (var ix = 0; ix < data.length; ix++) {
                    var item = data[ix];
                    dic[item.categoryID] = {
                        id: item.modelID,
                        title: item.modelName,
                        isCategory: item.isCategory,
                        questionCount: item.questionCount,
                        totalCount: item.modelTotalCount,
                        categoryId: item.categoryID,
75
                        parentID: item.parentID,
76 77 78 79 80 81 82 83 84 85 86 87 88 89
                        modelType: item.modelType,
                        parentNode: null,
                        sort: item.sort,
                        data: item,
                        feature: item.feature,
                        nodes: [],
                    };
                }

                //查找每个节点是否存在父节点,并维护父节点与本节点的关系
                for (var key in dic) {
                    if (!dic.hasOwnProperty(key))
                        continue;
                    var item = dic[key];
90
                    var parentId = item.parentID;
91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184
                    if (!parentId || !dic.hasOwnProperty(parentId))
                        continue;

                    var p = dic[parentId];
                    if (!p && p === item)
                        continue;

                    item.parentNode = p;
                    p.nodes.push(item);
                }

                var srcData = [];
                for (var key in dic) {
                    if (!dic.hasOwnProperty(key))
                        continue;

                    var item = dic[key];
                    if (!item || item.parentNode)
                        continue;

                    srcData.push(item);
                }
                $scope.modelTreeList = srcData;
            });
        };

        var getModelAnalysisPermission = function () {
            var list = [];
            var modelManageTemp = constant.vatPermission.dataAnalysis.modelAnalysis;
            list.push(modelManageTemp.queryCode);
            list.push(modelManageTemp.filterCode);
            $scope.hasQueryPermission = false;
            $scope.hasFilterIssuePermission = false;
            $scope.$root.checkUserOrganizationPermissionList(list).success(function (data) {
                $scope.hasQueryPermission = data[modelManageTemp.queryCode];
                $scope.hasFilterIssuePermission = data[modelManageTemp.filterCode];
            });
        };

        $scope.nodeSelected = function (node) {
            $scope.selectCategoryId = node.categoryId;
            $scope.modelType = node.feature;
        };

        (function () {
            getModelAnalysisPermission();

            //检查是否有脏数据
            modelConfigurationService.projectHasDirtyData($scope.projectId, $scope.serviceTypeId).success(function (result) {
                if (!result) {
                    loadTreeData();
                    return;
                }

                SweetAlert.swal({
                    title: $translate.instant('OrganizationsHasDirtyData'),
                    text: '',
                    type: "warning",
                    showCancelButton: true,
                    confirmButtonColor: "#DD6B55",
                    confirmButtonText: $translate.instant('Confirm'),
                    cancelButtonText: $translate.instant('Cancel'),
                    closeOnConfirm: true
                }, function (isConfirm) {
                    if (!isConfirm) {
                        loadTreeData();
                        return;
                    }

                    $scope.dirtyDataProcess.processBarModalInstance = $uibModal.open({
                        ariaLabelledBy: 'modal-title',
                        ariaDescribedBy: 'modal-body',
                        templateUrl: "vat-model-analysis-dirty-data-process-bar.html",
                        backdrop: 'static',
                        scope: $scope,
                        windowClass: "vat-model-analysis-dirty-data-process-bar"
                    });

                    $scope.dirtyDataProcess.intervalId = setInterval(function () {
                        $scope.dirtyDataProcess.progressBarValue++;
                        if (!$scope.dirtyDataProcess.hasCheckedFinished) {
                            $scope.dirtyDataProcess.processBarMax++;
                        }
                    }, 100);

                    //重新计算模型数据
                    modelConfigurationService.updateProjectModelDirtyDataSingleCard($scope.projectId, $scope.serviceTypeId).success(function () {
                        $scope.dirtyDataProcess.hasCheckedFinished = true;
                    });
                });
            });
        })();
    }
]);