citModule.controller('citLayoutController', ['$scope', '$rootScope', '$location', '$q', '$log', '$timeout', '$state', '$translate', 'projectService', 'SweetAlert',
    'loginContext', 'citSessionService', 'vatSessionService', 'vatCommonService', 'vatWorkflowService', 'application', 'enums', '$uibModal',
    function ($scope, $rootScope, $location, $q, $log, $timeout, $state, $translate, projectService, SweetAlert, loginContext, citSessionService, vatSessionService,
              vatCommonService, vatWorkflowService, application, enums, $uibModal) {
        'use strict';
        $log.debug('citLayoutController.ctor()...');

        $scope.dateFormat = $translate.instant('dateFormat4Year');
        $scope.showSubMenu = true;
        $scope.projectName = vatSessionService.project.organizationName + '(' + vatSessionService.project.year + ')';
        $scope.selectedDate = new Date(citSessionService.year, 0, 1);
        $scope.startDate = new Date(citSessionService.year - 10, 0, 1);
        $scope.endDate = new Date(citSessionService.year + 10, 0, 1);
        var subMenus = [];
        // 应该根据权限去设置,这里先写死
        //var subMenus = [
        //    {
        //        name: 'importData.balanceSheet', state: 'importData.balanceSheet', num: 1,
        //        permission: constant.vatPermission.dataImport.balanceSheet.queryCode, url: '#/cit/importData/balanceSheet'
        //    },
        //    {
        //        name: 'previewData.balanceSheet', state: 'previewData.balanceSheet', num: 2,
        //        permission: constant.vatPermission.dataPreview.balanceSheet.queryCode, url: '#/cit/previewData/balanceSheet'
        //    },
        //    {
        //        name: 'reductionData.caculateData', state: 'reductionData.caculateData', num: 3,
        //        permission: constant.vatPermission.dataManage.caculateDataCode, url: '#/cit/reductionData/caculateData'
        //    },
        //    {
        //        name: 'generateReport', state: 'generateReport', num: 4,
        //        permission: constant.vatPermission.reportView.reportViewCode, url: '#/cit/generateReport'
        //    },
        //    {
        //        name: 'analyzeLayout.analyzeReport', state: 'analyzeLayout.analyzeReport', num: 5,
        //        permission: constant.vatPermission.dataAnalysis.modelAnalysisCode, url: '#/cit/analyzeLayout/analyzeReport'
        //    }
        //];


        //$scope.menus = [{ name: 'importData', state: 'importData', num: 1, permission: '02.001', url: '#/cit/importData/balanceSheet' },
        //   { name: 'previewData', state: 'previewData', num: 2, permission: '02.002', url: '#/cit/previewData/balanceSheet' },
        //   { name: 'reductionData', state: 'reductionData', num: 3, permission: '02.003', url: '#/cit/reductionData/caculateData' },
        //   { name: 'generateReport', state: 'generateReport', num: 4, permission: '02.004', url: '#/cit/generateReport' },
        //   { name: 'analyzeReport', state: 'analyzeLayout', num: 5, permission: '02.005', url: '#/cit/citAanalyzeLayout/citAnalyzeReport' }];


        var subStatusDto = {
            dispalyIndex: -1,
            name: '',
            isImported: false
        };

        var msgboxOptions = {
            title: $translate.instant('UnsavedChange'),
            text: $translate.instant('ComfirmIgnoreUnsavedChanges'),
            type: "warning",
            showCancelButton: true,
            confirmButtonColor: "#e0301e",
            confirmButtonText: $translate.instant('ConfirmYes'),
            cancelButtonText: $translate.instant('ConfirmNo'),
            closeOnConfirm: true,
            closeOnCancel: true
        };

        $scope.changeDate = function (e) {
            if (e && e.date) {
                var tempYear = e.date.getFullYear();
                var temp = enums.wholeYearPeriod.import;
                if (citSessionService.year != tempYear) {
                    //年份切换,库也跟着改变
                    var newProject = _.find(vatSessionService.projects, function (m) {
                        return m.year == tempYear
                            && m.organizationID == vatSessionService.project.organizationID
                            && m.serviceTypeID == vatSessionService.project.serviceTypeID
                            && m.enterpriseAccountSetID == vatSessionService.project.enterpriseAccountSetID
                    });

                    if (newProject && newProject.haveCreateProject) {
                        vatSessionService.project = newProject;
                        citSessionService.year = tempYear;
                        vatSessionService.year = tempYear;
                        $scope.projectName = vatSessionService.project.organizationName + '(' + vatSessionService.project.year + ')';
                    } else {
                        SweetAlert.warning($translate.instant('NoProjet'));
                        // $location.path('/summary');
                        return;
                    }

                    $timeout(function () {
                        $log.debug($scope.changeDate);
                        projectService.isProjectStatusExisted(vatSessionService.project.dbName, temp).success(function (or) {
                            if (or.result) {//如果当前期间还没有导入任何数据的话,就添加一条未开始状态的记录
                                if (_.isNull(or.data)) {
                                    projectService.setProjectStatus(vatSessionService.project.dbName, temp, constant.ProjectStatusEnum.UnStarted).success(function (or) {
                                        if (or.result) {
                                            vatSessionService.updateObjectProperty('project', 'projectStatusList.' + temp, constant.ProjectStatusEnum.UnStarted);
                                            initStatus(vatSessionService.project.dbName, vatSessionService.project.id, temp);
                                        } else {
                                            SweetAlert.error($translate.instant('SetProjectStatusError'));
                                        }
                                    });
                                } else { //已经导入的话,更新最新项目状态
                                    vatSessionService.updateObjectProperty('project', 'projectStatusList.' + temp, or.data.status);
                                    initStatus(vatSessionService.project.dbName, vatSessionService.project.id, temp);
                                }
                            }
                        });

                        citSessionService.month = temp;
                        citSessionService.year = tempYear;
                        $scope.selectedDate = new Date(citSessionService.year, 0, 1);
                        //查看报表时路由为三层结构,特殊处理,其他逻辑不变
                        if ($state.$current.parent && $state.$current.parent.self.name === 'cit.generateReport') {
                            $scope.$broadcast('refreshCitGenerateReport', {templateId: $state.params.templateid});
                        } else {
                            $state.reload($state.$current);
                        }
                    }, 100);
                }

                var periodTemp = e.date.getMonth() + 1;
                var sessionProject = vatSessionService.getProperty("project");
                if (citSessionService.month != periodTemp) {
                    sessionProject.period = periodTemp;
                }
            }

        };

        $scope.setPermissionMenu = function () {
            $scope.menus = [];
            var menuList = constant.citMenuList;

            $scope.$root.checkUserOrganizationPermissionList(menuList).success(function (data) {
                if (data) {
                    // if (data[constant.citPermission.dataImport.balanceSheet.queryCode]) {
                    //     $scope.menus.push({
                    //         name: 'importData', state: 'importData', num: 1,
                    //         permission: constant.citPermission.dataImport.dataImportCode, url: '#/cit/importData'
                    //     });
                    //     subMenus.push({
                    //         name: 'importData.balanceSheet', state: 'importData.balanceSheet', num: 1,
                    //         permission: constant.citPermission.dataImport.balanceSheet.queryCode, url: '#/cit/importData/balanceSheet'
                    //     });
                    // }
                    // else if (data[constant.citPermission.dataImport.journalEntry.queryCode]) {
                    //     $scope.menus.push({
                    //         name: 'importData', state: 'importData', num: 1,
                    //         permission: constant.citPermission.dataImport.dataImportCode, url: '#/cit/importData'
                    //     });
                    //     subMenus.push({
                    //         name: 'importData.journalEntry', state: 'importData.journalEntry', num: 1,
                    //         permission: constant.citPermission.dataImport.journalEntry.queryCode, url: '#/cit/importData/journalEntry'
                    //     });
                    // }
                    // else if (data[constant.citPermission.dataImport.erpImport.queryCode]) {
                    //     $scope.menus.push({
                    //         name: 'importData', state: 'importData', num: 1,
                    //         permission: constant.citPermission.dataImport.dataImportCode, url: '#/cit/importData'
                    //     });
                    //     subMenus.push({
                    //         name: 'importData.erpData', state: 'importData.erpData', num: 1,
                    //         permission: constant.citPermission.dataImport.erpImport.queryCode, url: '#/cit/importData/erpData'
                    //     });
                    // }
                    // else if (data[constant.citPermission.dataImport.auditAdjust.queryCode]) {
                    //     $scope.menus.push({
                    //         name: 'importData', state: 'importData', num: 1,
                    //         permission: constant.citPermission.dataImport.dataImportCode, url: '#/cit/importData'
                    //     });
                    //     subMenus.push({
                    //         name: 'importData.auditAdjust', state: 'importData.auditAdjust', num: 1,
                    //         permission: constant.citPermission.dataImport.auditAdjust.queryCode, url: '#/cit/importData/auditAdjust'
                    //     });
                    // }
                    // else if (data[constant.citPermission.dataImport.documentList.queryCode]) {
                    //     $scope.menus.push({
                    //         name: 'importData', state: 'importData', num: 1,
                    //         permission: constant.citPermission.dataImport.dataImportCode, url: '#/cit/importData'
                    //     });
                    //     subMenus.push({
                    //         name: 'importData.documentList', state: 'importData.documentList', num: 1,
                    //         permission: constant.citPermission.dataImport.documentList.queryCode, url: '#/cit/importData/documentList'
                    //     });
                    // }
                    // else

                    if (data[constant.citPermission.dataImport.assetList.queryCode]) {
                        $scope.menus.push({
                            name: 'importData', state: 'importData', num: 1,
                            permission: constant.citPermission.dataImport.dataImportCode, url: '#/cit/importData'
                        });
                        subMenus.push({
                            name: 'importData.assetList',
                            state: 'importData.assetList',
                            num: 1,
                            permission: constant.citPermission.dataImport.assetList.queryCode,
                            url: '#/cit/importData/assetList'
                        });
                    }
                    //有万能导入数据菜单
                    else if (vatSessionService.tableInfoList.length > 0) {
                        var importMenu = vatSessionService.tableInfoList[0];
                        $scope.menus.push({
                            name: 'importData', state: 'importData', num: 1,
                            permission: constant.citPermission.dataImport.dataImportCode, url: '#/cit/importData'
                        });
                        subMenus.push({
                            name: 'importData.importDataView', state: 'importData.importDataView', num: 1,
                            permission: importMenu.citQueryCode, url: '#/cit/importData'
                        });
                    }

                    // if (data[constant.citPermission.dataPreview.balanceSheet.queryCode]) {
                    //     $scope.menus.push({
                    //         name: 'previewData', state: 'previewData', num: 2,
                    //         permission: constant.citPermission.dataPreview.dataPreviewCode, url: '#/cit/previewData'
                    //     });
                    //     subMenus.push({
                    //         name: 'previewData.balanceSheet', state: 'previewData.balanceSheet', num: 2,
                    //         permission: constant.citPermission.dataPreview.balanceSheet.queryCode, url: '#/cit/previewData/balanceSheet'
                    //     });
                    // }
                    // else if (data[constant.citPermission.dataPreview.accountVoucher.queryCode]) {
                    //     $scope.menus.push({
                    //         name: 'previewData', state: 'previewData', num: 2,
                    //         permission: constant.citPermission.dataPreview.dataPreviewCode, url: '#/cit/previewData'
                    //     });
                    //     subMenus.push({
                    //         name: 'previewData.accountVoucher', state: 'previewData.accountVoucher', num: 2,
                    //         permission: constant.citPermission.dataPreview.accountVoucher.queryCode, url: '#/cit/previewData/accountVoucher'
                    //     });
                    // }
                    // else

                    // Data Preview
                    if (data[constant.citPermission.dataPreview.journalMerge.queryCode]) {
                        $scope.menus.push({
                            name: 'previewData', state: 'previewData', num: 2,
                            permission: constant.citPermission.dataPreview.dataPreviewCode, url: '#/cit/previewData'
                        });
                        subMenus.push({
                            name: 'previewData.journalMerge',
                            state: 'previewData.journalMerge',
                            num: 2,
                            permission: constant.citPermission.dataPreview.journalMerge.queryCode,
                            url: '#/cit/previewData/journalMerge'
                        });
                    } else if (data[constant.citPermission.dataPreview.bsGenerateVer.queryCode]) {
                        $scope.menus.push({
                            name: 'previewData', state: 'previewData', num: 2,
                            permission: constant.citPermission.dataPreview.dataPreviewCode, url: '#/cit/previewData'
                        });
                        subMenus.push({
                            name: 'previewData.bsGenerateVer',
                            state: 'previewData.bsGenerateVer',
                            num: 2,
                            permission: constant.citPermission.dataPreview.bsGenerateVer.queryCode,
                            url: '#/cit/previewData/bsGenerateVer'
                        });
                    } else if (data[constant.citPermission.dataPreview.bsMappingVer.queryCode]) {
                        $scope.menus.push({
                            name: 'previewData', state: 'previewData', num: 2,
                            permission: constant.citPermission.dataPreview.dataPreviewCode, url: '#/cit/previewData'
                        });
                        subMenus.push({
                            name: 'previewData.bsMappingVer',
                            state: 'previewData.bsMappingVer',
                            num: 2,
                            permission: constant.citPermission.dataPreview.bsMappingVer.queryCode,
                            url: '#/cit/previewData/bsMappingVer'
                        });
                    // } else if (data[constant.citPermission.dataPreview.assetsList.queryCode]) {
                    //     $scope.menus.push({
                    //         name: 'previewData', state: 'previewData', num: 2,
                    //         permission: constant.citPermission.dataPreview.dataPreviewCode, url: '#/cit/previewData'
                    //     });
                    //     subMenus.push({
                    //         name: 'previewData.assetsList',
                    //         state: 'previewData.assetsList',
                    //         num: 2,
                    //         permission: constant.citPermission.dataPreview.assetsList.queryCode,
                    //         url: '#/cit/previewData/assetsList'
                    //     });
                    } else if (data[constant.citPermission.dataPreview.salaryAdvance.queryCode]) {
                        $scope.menus.push({
                            name: 'previewData', state: 'previewData', num: 2,
                            permission: constant.citPermission.dataPreview.dataPreviewCode, url: '#/cit/previewData'
                        });
                        subMenus.push({
                            name: 'previewData.salaryAdvance',
                            state: 'previewData.salaryAdvance',
                            num: 2,
                            permission: constant.citPermission.dataPreview.salaryAdvance.queryCode,
                            url: '#/cit/previewData/salaryAdvance'
                        });
                    } else if (data[constant.citPermission.dataPreview.eamDisposal.queryCode]) {
                        $scope.menus.push({
                            name: 'previewData', state: 'previewData', num: 2,
                            permission: constant.citPermission.dataPreview.dataPreviewCode, url: '#/cit/previewData'
                        });
                        subMenus.push({
                            name: 'previewData.eamDisposal',
                            state: 'previewData.eamDisposal',
                            num: 2,
                            permission: constant.citPermission.dataPreview.eamDisposal.queryCode,
                            url: '#/cit/previewData/eamDisposal'
                        });
                    }

                    // Data Manage
                    if (data[constant.citPermission.dataManage.caculateDataCode]) {
                        $scope.menus.push({
                            name: 'reductionData', state: 'reductionData', num: 3,
                            permission: constant.citPermission.dataManage.dataManageCode, url: '#/cit/reductionData'
                        });
                        subMenus.push({
                            name: 'reductionData.caculateData',
                            state: 'reductionData.caculateData',
                            num: 3,
                            permission: constant.citPermission.dataManage.caculateDataCode,
                            url: '#/cit/reductionData/caculateData'
                        });

                    } else if (data[constant.citPermission.dataManage.assetEamMapping]) {
                        $scope.menus.push({
                            name: 'reductionData', state: 'reductionData', num: 3,
                            permission: constant.citPermission.dataManage.dataManageCode, url: '#/cit/reductionData'
                        });
                        subMenus.push({
                            name: 'reductionData.assetEamMapping',
                            state: 'reductionData.assetEamMapping',
                            num: 3,
                            permission: constant.citPermission.dataManage.assetEamMapping,
                            url: '#/cit/reductionData/assetEamMapping'
                        });
                    }else if (data[constant.citPermission.dataManage.distributionTable]) {
                        $scope.menus.push({
                            name: 'reductionData', state: 'reductionData', num: 3,
                            permission: constant.citPermission.dataManage.dataManageCode, url: '#/cit/reductionData'
                        });
                        subMenus.push({
                            name: 'reductionData.distributionTable',
                            state: 'reductionData.distributionTable',
                            num: 3,
                            permission: constant.citPermission.dataManage.distributionTable,
                            url: '#/cit/reductionData/distributionTable'
                        });
                    }
                    // } else if (data[constant.citPermission.dataManage.accountMappingCode]) {
                    //     $scope.menus.push({
                    //         name: 'reductionData', state: 'reductionData', num: 3,
                    //         permission: constant.citPermission.dataManage.dataManageCode, url: '#/cit/reductionData'
                    //     });
                    //     subMenus.push({
                    //         name: 'reductionData.accountMapping',
                    //         state: 'reductionData.accountMapping',
                    //         num: 3,
                    //         permission: constant.citPermission.dataManage.accountMappingCode,
                    //         url: '#/cit/reductionData/accountMapping'
                    //     });



                    if (data[constant.citPermission.reportView.bsplCode]
                        || data[constant.citPermission.reportView.quarterlyFilingReturnTypeCode]
                        || data[constant.citPermission.reportView.workingPaperTypeCode]
                        || data[constant.citPermission.reportView.taxReturnCode]
                        || data[constant.citPermission.reportView.otherReportCode]
                    ) {
                        $scope.menus.push({
                            name: 'generateReport', state: 'generateReport', num: 4,
                            permission: constant.citPermission.reportView.reportViewCode, url: '#/cit/generateReport'
                        });
                        subMenus.push({
                            name: 'generateReport', state: 'generateReport', num: 4,
                            permission: constant.citPermission.reportView.reportViewCode, url: '#/cit/generateReport'
                        });
                    }

                    // if (data[constant.citPermission.dataAnalysis.modelAnalysisCode]) {
                    //     $scope.menus.push({
                    //         name: 'analyzeReport', state: 'analyzeLayout', num: 5,
                    //         permission: constant.citPermission.dataAnalysis.dataAnalysisCode, url: '#/cit/citAnalyzeLayout'
                    //     });
                    //     subMenus.push({
                    //         name: 'analyzeLayout.analyzeReport', state: 'analyzeLayout.analyzeReport', num: 5,
                    //         permission: constant.citPermission.dataAnalysis.modelAnalysisCode, url: '#/cit/citAnalyzeLayout/citAnalyzeReport'
                    //     });
                    // }
                    // else if (data[constant.citPermission.dataAnalysis.dashboard.dashboardCode]) {
                    //     $scope.menus.push({
                    //         name: 'analyzeReport', state: 'analyzeLayout', num: 5,
                    //         permission: constant.citPermission.dataAnalysis.dataAnalysisCode, url: '#/cit/citAnalyzeLayout'
                    //     });
                    //     subMenus.push({
                    //         name: 'analyzeLayout.analyzeOrganizeDashboard', state: 'analyzeLayout.analyzeOrganizeDashboard', num: 5,
                    //         permission: constant.citPermission.dataAnalysis.dashboard.dashboardCode, url: '#/cit/citAnalyzeLayout/citOrganizeDashboard'
                    //     });
                    // }
                }
            });

        }

        $scope.$on(application.events.showSubMenu, function (event, data) {
            if (data) {
                $scope.showSubMenu = data.show;
            }
        });

        $scope.showProjectStatus = function () {
            var modalInstance = $uibModal.open({
                animation: false,
                //appendTo: angular.element(document.querySelector('#imgProjectStatus')),//把弹出框加到imgProjectStatus下面
                ariaLabelledBy: 'modal-title',
                ariaDescribedBy: 'modal-body',
                templateUrl: 'model-project-status.html',
                scope: $scope,
                windowClass: "model-project-status"
            });

            modalInstance.rendered.then(function () {
                $log.debug("modalInstance.rendered");
                // Grab target element
                var element = document.querySelector('#imgProjectStatus'),
                    // Get target position and size
                    rect = element.getBoundingClientRect(),
                    // Grab modal element
                    modal = document.querySelector('.model-project-status');

                $log.debug(rect);
                // Set style
                modal.style.margin = 0;
                //modal.style.width = rect.width + 'px';
                modal.style.top = rect.top + 'px';
                modal.style.left = rect.left + 'px';

            });

            $scope.closeModal = function () {
                modalInstance.dismiss('cancel');
            };

            setSubStatusDto();
            //setApproveDetailDto();
            setSubmitDetailDto();
            setStartStatusText(citSessionService.month);
        }

        $scope.showSubStatus = function () {
            var temp = $scope.displaySubStatus;
            $scope.displaySubStatus = !temp;
        }

        //设置项目状态Title
        function setLayoutStatusTitle(statusId) {
            $log.debug("setLayoutStatusTitle");
            $scope.statusTitle = $translate.instant('ProjectStatusTitle');

            switch (statusId) {
                case constant.ProjectStatusEnum.UnStarted:
                    $scope.statusTitle += $translate.instant('ProjectStatusUnStarted');
                    break;
                case constant.ProjectStatusEnum.Imported:
                    $scope.statusTitle += $translate.instant('ProjectStatusImported');
                    break;
                case constant.ProjectStatusEnum.AccountMapSubmitted:
                    $scope.statusTitle += $translate.instant('ProjectStatusAcccountMapSubmitted');
                    break;
                case constant.ProjectStatusEnum.Generated:
                    $scope.statusTitle += $translate.instant('ProjectStatusGenerated');
                    break;
                case constant.ProjectStatusEnum.Completed:
                    $scope.statusTitle += $translate.instant('ProejctStatusCompleted');
                    break;
            }

            // START: For --->> Edmond Meng, CIT Demo
            if (vatSessionService.project.id === "9cdb8cff-6183-4c1e-b417-398fe58b8bc9" && vatSessionService.project.code === "10000" && vatSessionService.project.periodDate === '2016'
                || vatSessionService.project.id === "a4ed628f-d9ae-49cb-956c-e9de1d6b70fb" && vatSessionService.project.code === "10000" && vatSessionService.project.periodDate === '2017') {
                $scope.statusTitle = $translate.instant('ProjectStatusTitle') + $translate.instant('ProjectStatusGenerated');
            }
            // END: For --->> Edmond Meng, CIT Demo
        }


        function setSubStatusDto() {
            $log.debug("setSubStatusDto");
            $scope.subStatusList = [];
            var tbStatus = {
                dispalyIndex: 1,
                name: $translate.instant('balanceSheet'),
                isImported: vatSessionService.project.importSubStatus.isTbImport
            };
            var entryStatus = {
                dispalyIndex: 2,
                name: $translate.instant('JournalEntryTitle'),
                isImported: vatSessionService.project.importSubStatus.isEntryImport
            };
            var erpStatus = {
                dispalyIndex: 3,
                name: $translate.instant('erpData'),
                isImported: vatSessionService.project.importSubStatus.isErpImport
            };
            var outputInvoiceStatus = {
                dispalyIndex: 4,
                name: $translate.instant('outputInvoice'),
                isImported: vatSessionService.project.importSubStatus.isOutputInvoiceImport
            };
            var inputInvoiceStatus = {
                dispalyIndex: 5,
                name: $translate.instant('inputInvoice'),
                isImported: vatSessionService.project.importSubStatus.isInputInvoiceImport
            };
            var customStatus = {
                dispalyIndex: 6,
                name: $translate.instant('customInvoice'),
                isImported: vatSessionService.project.importSubStatus.isCustomInvoiceImport
            };
            var voucherMapStatus = {
                dispalyIndex: 7,
                name: $translate.instant('voucherMapping'),
                isImported: vatSessionService.project.importSubStatus.isVoucherMapImport
            };
            var invoiceMapStatus = {
                dispalyIndex: 8,
                name: $translate.instant('invoiceMapping'),
                isImported: vatSessionService.project.importSubStatus.isInvoiceMapImport
            };
            var adjustStatus = {
                dispalyIndex: 9,
                name: $translate.instant('auditAdjust'),
                isImported: vatSessionService.project.importSubStatus.isAdjustImport
            };

            $scope.subStatusList.push(tbStatus);
            $scope.subStatusList.push(entryStatus);
            $scope.subStatusList.push(erpStatus);
            $scope.subStatusList.push(outputInvoiceStatus);
            $scope.subStatusList.push(inputInvoiceStatus);
            $scope.subStatusList.push(customStatus);
            $scope.subStatusList.push(voucherMapStatus);
            $scope.subStatusList.push(invoiceMapStatus);
            $scope.subStatusList.push(adjustStatus);
            $log.debug($scope.subStatusList);
        }

        function setSubmitDetailDto() {
            $log.debug("setSubmitDetailDto");
            $scope.submitDetailDto = {
                userId: "",
                userName: "",
                finishedDateTime: "",
                finishedData: "",
                isDone: false
            }
            var wf = vatSessionService.project.workflow;
            if (_.isNull(wf)) {
                return;
            }

            var viewReportNode = _.where(wf.workflowNodeList, {dictionaryKey: constant.DictionaryDictKey.ViewReport})[0];
            if (!_.isNull(viewReportNode) && !_.isUndefined(viewReportNode)) {
                var submitTask = _.where(viewReportNode.workflowTaskList, {dictionaryKey: constant.DictionaryDictKey.WFSubmitReport})[0];
                if (!_.isNull(submitTask) && !_.isUndefined(submitTask)) {
                    $scope.submitDetailDto.userId = submitTask.userId;
                    $scope.submitDetailDto.userName = submitTask.userName;
                    $scope.submitDetailDto.finishedDateTime = !_.isNull(submitTask.createTime)
                        ? (new Date(submitTask.createTime)).dateTimeToString('yyyyMMdd') : "";
                    $scope.submitDetailDto.isDone = submitTask.isDone;
                    $scope.submitDetailDto.finishedData = $scope.submitDetailDto.userName + " " + $scope.submitDetailDto.finishedDateTime;

                }
            }
        }

        //项目未开始时,第一个节点显示”未开始”,开始以后显示“开始”
        function setStartStatusText(period) {
            var curPeriodStatus = vatSessionService.project.projectStatusList[period];
            if (!_.isUndefined(curPeriodStatus)) {
                if (_.isEqual(curPeriodStatus, constant.ProjectStatusEnum.UnStarted)) {
                    $scope.startStatusText = $translate.instant('ProjectStatusUnStarted');
                } else {
                    $scope.startStatusText = $translate.instant('ProjectStatusStarted');
                }
            }
        }

        function initStatus(dbName, id, month) {
            $q.all([
                projectService.getProjectStatus(dbName, id, month),
                vatWorkflowService.getWorkflowDetailByDb(dbName, month)
            ]).then(function (result) {
                var statusData = result[0].data;
                var workflowData = result[1].data;
                if (statusData.result) {
                    $log.debug("cit-layout.ctrl.js  initStatus set project importSubStatus");
                    vatSessionService.updateObjectProperty('project', 'importSubStatus', statusData.data.importSubStatus);
                    $scope.layoutVatSession = vatSessionService;
                    $scope.period = citSessionService.month;
                    setLayoutStatusTitle(vatSessionService.project.projectStatusList[month]);
                    setStartStatusText(month);
                    $log.debug(vatSessionService.project.importSubStatus);
                }

                if (workflowData.result) {
                    $log.debug("cit-layout.ctrl.js  initStatus set project workflow");
                    vatSessionService.updateObjectProperty('project', 'workflow', workflowData.data);
                    $log.debug(vatSessionService.project.workflow);
                }
            });
        }

        var goFirstSubMenu = function (toState) {
            if (toState && toState.name && toState.name.length > 4 && $scope.menus) {
                var to = toState.name.substring(4);
                var state = _.find(subMenus, function (v, i, arr) {
                    if (v && v['state'].indexOf(to + '.') >= 0) {
                        return true;
                    }
                });
                if (state) {
                    if (state['state'] && state['state'].indexOf('importDataView') >= 0) {
                        $state.go('importDataView', {
                            id: vatSessionService.tableInfoList[0].id,
                            serviceType: enums.serviceType.CIT
                        });
                    } else {
                        $state.go('cit.' + state['state']);
                    }
                } else {
                    $state.go(toState);
                }
                ;
            }
        }

        $rootScope.$on('$stateChangeStart', function (event, toState, toParams, fromState, fromParams, options) {
            // var mainMenu = ['cit.importData', 'cit.previewData', 'cit.reductionData', 'cit.citAnalyzeLayout'];
            var mainMenu = ['cit.importData', 'cit.previewData', 'cit.reductionData'];
            if (citSessionService.dataChanged) {
                event.preventDefault();
                SweetAlert.swal(msgboxOptions, function (isConfirm) {
                    if (isConfirm) {
                        citSessionService.dataChanged = false;
                        if (_.contains(mainMenu, toState.name)) {
                            goFirstSubMenu(toState);
                        } else {
                            $state.go(toState, toParams, options);
                        }
                        ;
                    }
                    ;
                });
            } else {
                if (_.contains(mainMenu, toState.name)) {
                    event.preventDefault();
                    goFirstSubMenu(toState);
                }
                ;
            }
            ;
        });

        (function initialize() {
            $log.debug("cit-layout-crtl.js initialize() ");
            $scope.displaySubStatus = false;//导入子状态是否显示
            $scope.setPermissionMenu();
            initStatus(vatSessionService.project.dbName, vatSessionService.project.id, citSessionService.month);

            $rootScope.$on('statusChanged', function (event, args) {
                $log.debug("receive statusChanged");
                $log.debug(args.status);
                setLayoutStatusTitle(args.status);
            });

        })();
    }]);