vatModule.controller('VatLayoutController', ['$scope', '$rootScope', '$q', '$log', '$timeout', '$state', '$translate', 'projectService', 'SweetAlert', 'loginContext' , 'vatSessionService', 'vatCommonService', 'vatWorkflowService', 'application', 'enums', '$uibModal', function ($scope, $rootScope, $q, $log, $timeout, $state, $translate, projectService, SweetAlert, loginContext , vatSessionService, vatCommonService, vatWorkflowService, application, enums, $uibModal) { 'use strict'; $log.debug('VatLayoutController.ctor()...'); $scope.dateFormat = $translate.instant('dateFormat4YearMonth'); $scope.showSubMenu = true; if (vatSessionService.project.projectName) { $scope.projectName = vatSessionService.project.projectName; } else { $scope.projectName = vatSessionService.project.organizationName + '(' + vatSessionService.project.year + ')'; } $scope.selectedDate = new Date(vatSessionService.project.year, vatSessionService.month - 1, 1); $scope.startDate = new Date(vatSessionService.project.year, 0, 1); $scope.endDate = new Date(vatSessionService.project.year, 11, 31, 23, 59, 59); var subMenus = []; 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 }; $rootScope.$on('$stateChangeStart', function (event, toState, toParams, fromState, fromParams, options) { var mainMenu = [ // 'vat.importData', 'vat.previewData', 'vat.reductionData', 'vat.analyzeLayout']; if (vatSessionService.dataChanged) { event.preventDefault(); SweetAlert.swal(msgboxOptions, function (isConfirm) { if (isConfirm) { vatSessionService.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); } ; } ; }); $scope.changeDate = function (e) { $log.debug("start to change date"); var temp = e.date.getMonth() + 1; if (vatSessionService.month != temp) { $timeout(function () { $log.debug($scope.changeDate); projectService.isProjectStatusExisted(vatSessionService.project.id, temp).success(function (or) { if (or.result) {//如果当前期间还没有导入任何数据的话,就添加一条未开始状态的记录 if (_.isNull(or.data)) { projectService.setProjectStatus(temp, constant.ProjectStatusEnum.UnStarted).success(function (or) { if (or.result) { vatSessionService.project.projectStatusList[temp] = constant.ProjectStatusEnum.UnStarted; initStatus(vatSessionService.project.id, temp); } else { SweetAlert.error($translate.instant('SetProjectStatusError')); } }).error(function (e) { vatSessionService.project.projectStatusList[temp] = constant.ProjectStatusEnum.UnStarted; initStatus(vatSessionService.project.id, temp); }); } else { //已经导入的话,更新最新项目状态 vatSessionService.project.projectStatusList[temp] = or.data.status; initStatus(vatSessionService.project.id, temp); } } else { vatSessionService.project.projectStatusList[temp] = constant.ProjectStatusEnum.UnStarted; initStatus(vatSessionService.project.id, temp); } }); if (vatSessionService.dataChanged) { SweetAlert.swal(msgboxOptions, function (isConfirm) { if (isConfirm) { vatSessionService.dataChanged = false; vatSessionService.month = temp; $scope.selectedDate = new Date(vatSessionService.project.year, temp - 1, 1); ; $state.reload($state.$current); } else { $scope.elePicker.datepicker("setDate", $scope.selectedDate); } ; }); } else { vatSessionService.month = temp; $scope.selectedDate = new Date(vatSessionService.project.year, temp - 1, 1); //查看报表时路由为三层结构,特殊处理,其他逻辑不变 if ($state.$current.parent && $state.$current.parent.self.name === 'vat.generateReport') { $scope.$broadcast('refreshGenerateReport', {templateId: $state.params.templateid}); } else { $state.reload($state.$current); } } ; }, 100); } }; $scope.setPermissionMenu = function () { $scope.menus = []; var menuList = [ constant.vatPermission.dataImport.balanceSheet.queryCode, constant.vatPermission.dataImport.journalEntry.queryCode, constant.vatPermission.dataImport.erpImport.queryCode, // constant.vatPermission.dataImport.outputInvoice.queryCode, // constant.vatPermission.dataImport.inputInvoice.queryCode, // constant.vatPermission.dataImport.customInvoice.queryCode, // constant.vatPermission.dataImport.voucherMapping.queryCode, // constant.vatPermission.dataImport.invoiceMapping.queryCode, // constant.vatPermission.dataImport.auditAdjust.queryCode, constant.vatPermission.dataPreview.trialBalance.queryCode, constant.vatPermission.dataPreview.profitLoss.queryCode, constant.vatPermission.dataPreview.offBalanceSheet.queryCode, constant.vatPermission.dataPreview.journal.queryCode, constant.vatPermission.dataPreview.cashFlow.queryCode, constant.vatPermission.dataPreview.invoiceRecord.queryCode, constant.vatPermission.dataPreview.certifiedInvoicesList.queryCode, constant.vatPermission.dataPreview.redLetterInformationTable.queryCode, constant.vatPermission.dataPreview.coupaPurchasingReport.queryCode, constant.vatPermission.dataPreview.invoiceData.queryCode, // constant.vatPermission.dataManage.accountMappingCode, // constant.vatPermission.dataManage.goodsMappingCode, // constant.vatPermission.dataManage.unbilledInvoiceCode, //constant.vatPermission.dataAnalysis.vatTaxDifferenceCode, // constant.vatPermission.dataPreview.balanceSheet.queryCode, // // constant.vatPermission.dataPreview.outputInvoice.queryCode, // constant.vatPermission.dataPreview.inputInvoice.queryCode, constant.vatPermission.dataManage.caculateDataCode, constant.vatPermission.dataManage.revenueDetailCode, constant.vatPermission.dataManage.billDetailCode, constant.vatPermission.reportView.bsplCode, constant.vatPermission.reportView.taxReturnCode, // constant.vatPermission.dataAnalysis.modelAnalysisCode, // constant.vatPermission.dataAnalysis.dashboard.dashboardCode, ]; $scope.$root.checkUserOrganizationPermissionList(menuList).success(function (data) { if (data) { if (data[constant.vatPermission.dataImport.balanceSheet.queryCode]) { $scope.menus.push({ name: 'importData', state: 'importData', num: 1, permission: constant.vatPermission.dataImport.dataImportCode, url: '#/vat/importData' }); subMenus.push({ name: 'importData.balanceSheet', state: 'importData.balanceSheet', num: 1, permission: constant.vatPermission.dataImport.balanceSheet.queryCode, url: '#/vat/importData/balanceSheet' }); } else if (data[constant.vatPermission.dataImport.journalEntry.queryCode]) { $scope.menus.push({ name: 'importData', state: 'importData', num: 1, permission: constant.vatPermission.dataImport.dataImportCode, url: '#/vat/importData' }); subMenus.push({ name: 'importData.journalEntry', state: 'importData.journalEntry', num: 1, permission: constant.vatPermission.dataImport.journalEntry.queryCode, url: '#/vat/importData/journalEntry' }); } else if (data[constant.vatPermission.dataImport.erpImport.queryCode]) { $scope.menus.push({ name: 'importData', state: 'importData', num: 1, permission: constant.vatPermission.dataImport.dataImportCode, url: '#/vat/importData' }); subMenus.push({ name: 'importData.erpData', state: 'importData.erpData', num: 1, permission: constant.vatPermission.dataImport.erpImport.queryCode, url: '#/vat/importData/erpData' }); } else if (data[constant.vatPermission.dataImport.outputInvoice.queryCode]) { $scope.menus.push({ name: 'importData', state: 'importData', num: 1, permission: constant.vatPermission.dataImport.dataImportCode, url: '#/vat/importData' }); subMenus.push({ name: 'importData.outputInvoice', state: 'importData.outputInvoice', num: 1, permission: constant.vatPermission.dataImport.outputInvoice.queryCode, url: '#/vat/importData/outputInvoice' }); } else if (data[constant.vatPermission.dataImport.inputInvoice.queryCode]) { $scope.menus.push({ name: 'importData', state: 'importData', num: 1, permission: constant.vatPermission.dataImport.dataImportCode, url: '#/vat/importData' }); subMenus.push({ name: 'importData.inputInvoice', state: 'importData.inputInvoice', num: 1, permission: constant.vatPermission.dataImport.inputInvoice.queryCode, url: '#/vat/importData/inputInvoice' }); } else if (data[constant.vatPermission.dataImport.customInvoice.queryCode]) { $scope.menus.push({ name: 'importData', state: 'importData', num: 1, permission: constant.vatPermission.dataImport.dataImportCode, url: '#/vat/importData' }); subMenus.push({ name: 'importData.customInvoice', state: 'importData.customInvoice', num: 1, permission: constant.vatPermission.dataImport.customInvoice.queryCode, url: '#/vat/importData/customInvoice' }); } else if (data[constant.vatPermission.dataImport.voucherMapping.queryCode]) { $scope.menus.push({ name: 'importData', state: 'importData', num: 1, permission: constant.vatPermission.dataImport.dataImportCode, url: '#/vat/importData' }); subMenus.push({ name: 'importData.voucherMapping', state: 'importData.voucherMapping', num: 1, permission: constant.vatPermission.dataImport.voucherMapping.queryCode, url: '#/vat/importData/voucherMapping' }); } else if (data[constant.vatPermission.dataImport.invoiceMapping.queryCode]) { $scope.menus.push({ name: 'importData', state: 'importData', num: 1, permission: constant.vatPermission.dataImport.dataImportCode, url: '#/vat/importData' }); subMenus.push({ name: 'importData.invoiceMapping', state: 'importData.invoiceMapping', num: 1, permission: constant.vatPermission.dataImport.invoiceMapping.queryCode, url: '#/vat/importData/invoiceMapping' }); } else if (data[constant.vatPermission.dataImport.auditAdjust.queryCode]) { $scope.menus.push({ name: 'importData', state: 'importData', num: 1, permission: constant.vatPermission.dataImport.dataImportCode, url: '#/vat/importData' }); subMenus.push({ name: 'importData.auditAdjust', state: 'importData.auditAdjust', num: 1, permission: constant.vatPermission.dataImport.auditAdjust.queryCode, url: '#/vat/importData/auditAdjust' }); } else { $scope.menus.push({ name: 'importData', state: 'importData', num: 1, permission: constant.vatPermission.dataImport.dataImportCode, url: '#/vat/importData' }); subMenus.push({ name: 'importData.productItem', state: 'importData.productItem', num: 1, permission: '02', url: '#/vat/importData/productItem' }); } // TODO if (data[constant.vatPermission.dataPreview.trialBalance.queryCode]) { $scope.menus.push({ name: 'previewData', state: 'previewData', num: 2, permission: constant.vatPermission.dataPreview.dataPreviewCode, url: '#/vat/importData' }); subMenus.push({ name: 'previewData.trialBalance', state: 'previewData.trialBalance', num: 2, permission: constant.vatPermission.dataPreview.trialBalance.queryCode, url: '#/vat/previewData/trialBalance' }); } else if (data[constant.vatPermission.dataPreview.profitLoss.queryCode]) { $scope.menus.push({ name: 'previewData', state: 'previewData', num: 2, permission: constant.vatPermission.dataPreview.dataPreviewCode, url: '#/vat/importData' }); subMenus.push({ name: 'previewData.profitLoss', state: 'previewData.profitLoss', num: 2, permission: constant.vatPermission.dataPreview.profitLoss.queryCode, url: '#/vat/previewData/profitLoss' }); } else if (data[constant.vatPermission.dataPreview.offBalanceSheet.queryCode]) { $scope.menus.push({ name: 'previewData', state: 'previewData', num: 2, permission: constant.vatPermission.dataPreview.dataPreviewCode, url: '#/vat/importData' }); subMenus.push({ name: 'previewData.offBalanceSheet', state: 'previewData.offBalanceSheet', num: 2, permission: constant.vatPermission.dataPreview.offBalanceSheet.queryCode, url: '#/vat/previewData/offBalanceSheet' }); } else if (data[constant.vatPermission.dataPreview.journal.queryCode]) { $scope.menus.push({ name: 'previewData', state: 'previewData', num: 2, permission: constant.vatPermission.dataPreview.dataPreviewCode, url: '#/vat/importData' }); subMenus.push({ name: 'previewData.journal', state: 'previewData.journal', num: 2, permission: constant.vatPermission.dataPreview.journal.queryCode, url: '#/vat/previewData/journal' }); } else if (data[constant.vatPermission.dataPreview.cashFlow.queryCode]) { $scope.menus.push({ name: 'previewData', state: 'previewData', num: 2, permission: constant.vatPermission.dataPreview.dataPreviewCode, url: '#/vat/importData' }); subMenus.push({ name: 'previewData.cashFlow', state: 'previewData.cashFlow', num: 2, permission: constant.vatPermission.dataPreview.cashFlow.queryCode, url: '#/vat/previewData/cashFlow' }); } else if (data[constant.vatPermission.dataPreview.invoiceRecord.queryCode]) { $scope.menus.push({ name: 'previewData', state: 'previewData', num: 2, permission: constant.vatPermission.dataPreview.dataPreviewCode, url: '#/vat/importData' }); subMenus.push({ name: 'previewData.invoiceRecord', state: 'previewData.invoiceRecord', num: 2, permission: constant.vatPermission.dataPreview.invoiceRecord.queryCode, url: '#/vat/previewData/invoiceRecord' }); } else if (data[constant.vatPermission.dataPreview.certifiedInvoicesList.queryCode]) { $scope.menus.push({ name: 'previewData', state: 'previewData', num: 2, permission: constant.vatPermission.dataPreview.dataPreviewCode, url: '#/vat/importData' }); subMenus.push({ name: 'previewData.certifiedInvoicesList', state: 'previewData.certifiedInvoicesList', num: 2, permission: constant.vatPermission.dataPreview.certifiedInvoicesList.queryCode, url: '#/vat/previewData/certifiedInvoicesList' }); } else if (data[constant.vatPermission.dataPreview.redLetterInformationTable.queryCode]) { $scope.menus.push({ name: 'previewData', state: 'previewData', num: 2, permission: constant.vatPermission.dataPreview.dataPreviewCode, url: '#/vat/importData' }); subMenus.push({ name: 'previewData.redLetterInfoTab', state: 'previewData.redLetterInfoTab', num: 2, permission: constant.vatPermission.dataPreview.redLetterInformationTable.queryCode, url: '#/vat/previewData/redLetterInfoTab' }); } else if (data[constant.vatPermission.dataPreview.coupaPurchasingReport.queryCode]) { $scope.menus.push({ name: 'previewData', state: 'previewData', num: 2, permission: constant.vatPermission.dataPreview.dataPreviewCode, url: '#/vat/importData' }); subMenus.push({ name: 'previewData.coupaPurchasingReport', state: 'previewData.coupaPurchasingReport', num: 2, permission: constant.vatPermission.dataPreview.coupaPurchasingReport.queryCode, url: '#/vat/previewData/coupaPurchasingReport' }); } else if (data[constant.vatPermission.dataPreview.invoiceData.queryCode]) { $scope.menus.push({ name: 'previewData', state: 'previewData', num: 2, permission: constant.vatPermission.dataPreview.dataPreviewCode, url: '#/vat/importData' }); subMenus.push({ name: 'previewData.invoiceData', state: 'previewData.invoiceData', num: 2, permission: constant.vatPermission.dataPreview.invoiceData.queryCode, url: '#/vat/previewData/invoiceData' }); } // TODO 待删除1 // TODO Delete // TODO 待删除 // if (data[constant.vatPermission.dataPreview.balanceSheet.queryCode]) { // $scope.menus.push({ // name: 'previewData', state: 'previewData', num: 2, // permission: constant.vatPermission.dataPreview.dataPreviewCode, url: '#/vat/previewData' // }); // subMenus.push({ // name: 'previewData.balanceSheet', // state: 'previewData.balanceSheet', // num: 2, // permission: constant.vatPermission.dataPreview.balanceSheet.queryCode, // url: '#/vat/previewData/balanceSheet' // }); // // // } // // else if (data[constant.vatPermission.dataPreview.accountVoucher.queryCode]) { // // $scope.menus.push({ // // name: 'previewData', state: 'previewData', num: 2, // // permission: constant.vatPermission.dataPreview.dataPreviewCode, url: '#/vat/previewData' // // }); // // subMenus.push({ // // name: 'previewData.accountVoucher', state: 'previewData.accountVoucher', num: 2, // // permission: constant.vatPermission.dataPreview.accountVoucher.queryCode, url: '#/vat/previewData/accountVoucher' // // }); // // } // // else if (data[constant.vatPermission.dataPreview.inputInvoice.queryCode]) { // // $scope.menus.push({ // // name: 'previewData', state: 'previewData', num: 2, // // permission: constant.vatPermission.dataPreview.dataPreviewCode, url: '#/vat/previewData' // // }); // subMenus.push({ // name: 'previewData.inputInvoice', // state: 'previewData.inputInvoice', // num: 2, // permission: constant.vatPermission.dataPreview.inputInvoice.queryCode, // url: '#/vat/previewData/inputInvoice' // }); // // } // // else if (data[constant.vatPermission.dataPreview.outputInvoice.queryCode]) { // // $scope.menus.push({ // // name: 'previewData', state: 'previewData', num: 2, // // permission: constant.vatPermission.dataPreview.dataPreviewCode, url: '#/vat/previewData' // // }); // subMenus.push({ // name: 'previewData.outputInvoice', // state: 'previewData.outputInvoice', // num: 2, // permission: constant.vatPermission.dataPreview.outputInvoice.queryCode, // url: '#/vat/previewData/outputInvoice' // }); // subMenus.push({ // name: 'previewData.outputoffInvoice', // state: 'previewData.outputoffInvoice', // num: 2, // permission: constant.vatPermission.dataPreview.outputInvoice.queryCode, // url: '#/vat/previewData/outputoffInvoice' // }); // } // else if (data[constant.vatPermission.dataPreview.customInvoice.queryCode]) { // $scope.menus.push({ // name: 'previewData', state: 'previewData', num: 2, // permission: constant.vatPermission.dataPreview.dataPreviewCode, url: '#/vat/previewData' // }); // subMenus.push({ // name: 'previewData.customInvoice', state: 'previewData.customInvoice', num: 2, // permission: constant.vatPermission.dataPreview.customInvoice.queryCode, url: '#/vat/previewData/customInvoice' // }); // } //else { // $scope.menus.push({ // name: 'previewData', state: 'previewData', num: 2, // permission: constant.vatPermission.dataPreview.dataPreviewCode, url: '#/vat/previewData' // }); // subMenus.push({ // name: 'previewData.productItem', state: 'previewData.productItem', num: 2, // permission: '02', url: '#/vat/previewData/productItem' // }); //} if (data[constant.vatPermission.dataManage.caculateDataCode]) { $scope.menus.push({ name: 'reductionData', state: 'reductionData', num: 3, permission: constant.vatPermission.dataManage.dataManageCode, url: '#/vat/reductionData' }); subMenus.push({ name: 'reductionData.caculateData', state: 'reductionData.caculateData', num: 3, permission: constant.vatPermission.dataManage.caculateDataCode, url: '#/vat/reductionData/caculateData' }); subMenus.push({ name: 'reductionData.revenueDetail', state: 'reductionData.revenueDetail', num: 3, permission: constant.vatPermission.dataManage.revenueDetailCode, url: '#/vat/reductionData/revenueDetail' }); subMenus.push({ name: 'reductionData.billDetail', state: 'reductionData.billDetail', num: 3, permission: constant.vatPermission.dataManage.billDetailCode, url: '#/vat/reductionData/billDetail' }); } else if (data[constant.vatPermission.dataManage.accountMappingCode]) { $scope.menus.push({ name: 'reductionData', state: 'reductionData', num: 3, permission: constant.vatPermission.dataManage.dataManageCode, url: '#/vat/reductionData' }); /* subMenus.push({ name: 'reductionData.accountMapping', state: 'reductionData.accountMapping', num: 3, permission: constant.vatPermission.dataManage.accountMappingCode, url: '#/vat/reductionData/accountMapping' });*/ } else if (data[constant.vatPermission.dataManage.goodsMappingCode]) { $scope.menus.push({ name: 'reductionData', state: 'reductionData', num: 3, permission: constant.vatPermission.dataManage.dataManageCode, url: '#/vat/reductionData' }); /* subMenus.push({ name: 'reductionData.goodsMapping', state: 'reductionData.goodsMapping', num: 3, permission: constant.vatPermission.dataManage.goodsMappingCode, url: '#/vat/reductionData/goodsMapping' });*/ } else if (data[constant.vatPermission.dataManage.unbilledInvoiceCode]) { $scope.menus.push({ name: 'reductionData', state: 'reductionData', num: 3, permission: constant.vatPermission.dataManage.dataManageCode, url: '#/vat/reductionData' }); /*subMenus.push({ name: 'reductionData.unbilledInvoice', state: 'reductionData.unbilledInvoice', num: 3, permission: constant.vatPermission.dataManage.unbilledInvoiceCode, url: '#/vat/reductionData/unbilledInvoice' });*/ } if (data[constant.vatPermission.reportView.bsplCode] || data[constant.vatPermission.reportView.taxReturnCode]) { $scope.menus.push({ name: 'generateReport', state: 'generateReport', num: 4, permission: constant.vatPermission.reportView.reportViewCode, url: '#/vat/generateReport' }); subMenus.push({ name: 'generateReport.reportView', state: 'generateReport.reportView', num: 4, permission: constant.vatPermission.reportView.bsplCode, url: '#/vat/generateReport/reportView' }); } if (data[constant.vatPermission.dataAnalysis.modelAnalysisCode]) { // $scope.menus.push({ // name: 'analyzeLayout', state: 'analyzeLayout', num: 5, // permission: constant.vatPermission.dataAnalysis.dataAnalysisCode, url: '#/vat/analyzeLayout' // }); // subMenus.push({ // name: 'analyzeLayout.analyzeReport', state: 'analyzeLayout.analyzeReport', num: 5, // permission: constant.vatPermission.dataAnalysis.modelAnalysisCode, url: '#/vat/analyzeLayout/analyzeReport' // }); } //else if (data[constant.vatPermission.dataAnalysis.dashboard.dashboardCode]) { // $scope.menus.push({ // name: 'analyzeLayout', state: 'analyzeLayout', num: 5, // permission: constant.vatPermission.dataAnalysis.dataAnalysisCode, url: '#/vat/analyzeLayout' // }); // subMenus.push({ // name: 'analyzeLayout.analyzeOrganizeDashboard', state: 'analyzeLayout.analyzeOrganizeDashboard', num: 5, // permission: constant.vatPermission.dataAnalysis.dashboard.dashboardCode, url: '#/analyzeOrganizeDashboard' // }); //} else { //data[constant.vatPermission.dataAnalysis.vatTaxDifferenceCode] // $scope.menus.push({ // name: 'analyzeLayout', state: 'analyzeLayout', num: 5, // permission: constant.vatPermission.dataAnalysis.dataAnalysisCode, url: '#/vat/analyzeLayout' // }); // subMenus.push({ // name: 'analyzeLayout.vatTaxDifference', state: 'analyzeLayout.vatTaxDifference', num: 5, // permission: constant.vatPermission.dataAnalysis.vatTaxDifferenceCode, url: '#/analyzeLayout/vatTaxDifference' // }); } } } ); } 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('analyzeOrganizeDashboard') >= 0) { $state.go('organizationDashboard', {id: vatSessionService.project.organizationID}); } else { $state.go('vat.' + state['state']); } } else { $state.go(toState); } ; } } $scope.$on(application.events.showSubMenu, function (event, data) { if (data) { $scope.showSubMenu = data.show; } }); $scope.setReportSession = function (menuName) { if (menuName === 'generateReport') { vatSessionService.isFromTopMenu = true; } } $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(vatSessionService.month); } $scope.showSubStatus = function () { var temp = $scope.displaySubStatus; $scope.displaySubStatus = !temp; } $scope.showApproveDetail = function () { var temp = $scope.displayApproveDetails; $scope.displayApproveDetails = !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.ReportSubmitted: $scope.statusTitle += $translate.instant('ProjectStatusReportSubmitted'); break; case constant.ProjectStatusEnum.ReportApproved: $scope.statusTitle += $translate.instant('ProjectStatusReportApproved'); break; case constant.ProjectStatusEnum.ReportRejected: $scope.statusTitle += $translate.instant('ProjectStatusReportRejected'); break; case constant.ProjectStatusEnum.Completed: $scope.statusTitle += $translate.instant('ProejctStatusCompleted'); break; } } 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 setApproveDetailDto() { $log.debug("setApproveDetailDto"); $scope.approveDetailList = []; switch (vatSessionService.project.projectStatusList[vatSessionService.month]) { case constant.ProjectStatusEnum.ReportApproved: $scope.approveTitle = $translate.instant('ProjectStatusReportApproved'); break; case constant.ProjectStatusEnum.ReportRejected: $scope.approveTitle = $translate.instant('ProjectStatusReportRejected'); break; default: $scope.approveTitle = $translate.instant('ProjectStatusReportApproved'); ; } var wf = vatSessionService.project.workflow; if (_.isNull(wf)) { return; } var approveReportNode = _.where(wf.workflowNodeList, {dictionaryKey: constant.DictionaryDictKey.ApproveReport})[0]; if (!_.isNull(approveReportNode) && !_.isUndefined(approveReportNode)) { $.each(approveReportNode.auditReportLevelList, function (index, item) { var approveDto = { orderIndex: -1, name: "", isDone: false, finishedByUserName: "", finishedDateTime: "", finishedData: "", isRejected: false, ngClassInActive: false }; approveDto.orderIndex = item.orderIndex; approveDto.name = item.name + ' ' + $translate.instant('ProjectStatusReportApproved'); approveDto.isDone = item.isDone; approveDto.finishedByUserName = !_.isNull(item.finishedByUserName) ? item.finishedByUserName : ""; approveDto.finishedDateTime = !_.isNull(item.finishedDateTime) ? (new Date(item.finishedDateTime)).dateTimeToString('yyyyMMdd') : ""; approveDto.finishedData = approveDto.finishedByUserName + " " + approveDto.finishedDateTime; approveDto.ngClassInActive = vatSessionService.project.projectStatusList[vatSessionService.month] < 60 || (!approveDto.isDone && !approveDto.isRejected) ? true : false; //没有完成&&没有拒绝审核:未操作。显示为灰色 $scope.approveDetailList.push(approveDto); }); $scope.approveDetailList.forEach(function (a) { //如果当前层级'未完成'的话,检查是否作为'拒绝审核'操作。做过的话,重新设置dto数据 if (!a.isDone) { vatWorkflowService.getWorkflowApproveReportLog(vatSessionService.project.id, vatSessionService.month, a.orderIndex, enums.vatLogOperationTypeEnum.RejectReport, enums.ReportTemplateCode.TaxDeclarationCategory) .success(function (or) { if (or.result) { if (!_.isNull(or.data)) { a.isRejected = true; a.name = a.name.substring(0, a.name.indexOf(' ')) + ' ' + $translate.instant('HasRejected'); a.finishedByUserName = or.data.userName; a.finishedDateTime = !_.isNull(or.data.createTime) ? (new Date(or.data.createTime)).dateTimeToString('yyyyMMdd') : ""; a.finishedData = a.finishedByUserName + " " + a.finishedDateTime; a.ngClassInActive = vatSessionService.project.projectStatusList[vatSessionService.month] < 60 || (!a.isDone && !a.isRejected) ? true : false; //如下操作:一级通过审核,二级拒绝审核,提交审核,一级通过审核。 //此时状态为“已审核”,审核的子状态:1级审核 已审核; 2级审核 已驳回 :应该显示为灰色 if (vatSessionService.project.projectStatusList[vatSessionService.month] === 60 && a.orderIndex > 1) { var previousLevel = _.where($scope.approveDetailList, {orderIndex: a.orderIndex - 1})[0]; if (!_.isUndefined(previousLevel)) { if (previousLevel.isDone && a.isRejected) { a.ngClassInActive = true; } } } } } }); } }); } } //项目未开始时,第一个节点显示”未开始”,开始以后显示“开始” 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(id, month) { $q.all([ projectService.getProjectStatus(id, month), ]).then(function (result) { var statusData = result[0].data; if (statusData.result) { $log.debug("vat-layout.ctrl.js initStatus set project importSubStatus"); vatSessionService.project.importSubStatus = statusData.data.importSubStatus; $scope.layoutVatSession = vatSessionService; $scope.period = vatSessionService.month; setLayoutStatusTitle(vatSessionService.project.projectStatusList[month]); setStartStatusText(month); $log.debug(vatSessionService.project.importSubStatus); } else { vatSessionService.project.importSubStatus = constant.ProjectStatusEnum.UnStarted; $scope.period = vatSessionService.month; setLayoutStatusTitle(constant.ProjectStatusEnum.UnStarted); setStartStatusText(month); } }); } function triggerSchedulerJob() { vatWorkflowService.execute(); } (function initialize() { $log.debug("vat-layout-crtl.js initialize() "); $scope.displaySubStatus = false;//导入子状态是否显示 $scope.displayApproveDetails = false;//审核详细详细是否显示 $scope.triggerSchedulerJob = triggerSchedulerJob; initStatus(vatSessionService.project.id, vatSessionService.month); $scope.setPermissionMenu(); $rootScope.$on('statusChanged', function (event, args) { $log.debug("receive statusChanged"); $log.debug(args.status); setLayoutStatusTitle(args.status); }); })(); }]);