frameworkModule.controller('appApproveController', ['$rootScope', '$scope', '$timeout', '$q', '$log', '$translate', '$state', '$interval', 'uiGridConstants', 'projectService', 'vatSessionService', 'orgService', 'serviceTypeService', 'userService', 'loginContext', 'enums', 'citSessionService', 'region', 'SweetAlert', 'productService', 'localStorageService', 'assetsManageSessionService','serviceLogService', 'ackUibModal', 'Upload', 'apiInterceptor','vatApproveService', function ($rootScope, $scope, $timeout, $q, $log, $translate, $state, $interval, uiGridConstants, projectService, vatSessionService, orgService, serviceTypeService, userService, loginContext, enums, citSessionService, region, SweetAlert, productService, localStorageService, assetsManageSessionService, serviceLogService, ackUibModal, Upload, apiInterceptor, vatApproveService) { 'use strict'; $log.debug('appApproveController.ctor()...'); var uploadUrl = apiInterceptor.webApiHostUrl + '/product/NewFile'; var resumable = true; $scope.chunkSize = 100000; $scope.conditionChange = false; var token = $('input[name="__RequestVerificationToken"]').val(); //********************************************************************************************** $scope.dateFormat = $translate.instant('dateFormat4Year'); //always select a month before current month: update the year if the current month is Jan.(1) var date = new Date(); var year = date.getFullYear(); var month = date.getMonth(); //$scope.selectedDate = new Date(year, month - 1, 1); $scope.startDate = new Date(year - 20, 1, 1); $scope.endDate = new Date(year + 20, 1, 1); $scope.selectedDate = new Date(vatSessionService.year, vatSessionService.month - 1, 1); $scope.selectedStartDate = new Date(vatSessionService.year, vatSessionService.month - 1, 1); $scope.serviceTypeId = $scope.servicetypeid.toString(); $scope.ongoingNum = 0; $scope.notBeginNum = 0; $scope.completedNum = 0; //************************************************************************************************* $scope.randomCounter = 0; $scope.allResults = []; $scope.queryResults = []; $scope.checkedOrgs = {}; $scope.orgList = []; $scope.orderYear = true; $scope.orderName = true; $scope.orderStatus = true; $scope.orderType = true; $scope.isFirst = true; $scope.haveVatPermission = false; $scope.currentSelectedMonth = vatSessionService.month; $scope.currentSelectedYear = vatSessionService.year; var thisData = { userPermission: {} }; userService.getUserByName(loginContext.userName).success(function (userData) { vatSessionService.logUser = userData; }); //设置项目状态Title function setLayoutStatusTitle(statusIds) { var currentMonth = vatSessionService.month; var statusId; if (statusIds === null || (statusIds !== null && statusIds[currentMonth] === undefined)) statusId = 0; else { statusId = statusIds[currentMonth]; } var status = "../../../app-resources/images/overview/"; if (region === 'zh-CN') { status += 'zh-CN'; } else { status += 'en-US'; } switch (statusId) { case constant.ProjectStatusEnum.UnStarted: status += "/01.png"; //$translate.instant('ProjectStatusUnStarted'); break; case constant.ProjectStatusEnum.Imported: status += "/02.png"; // $translate.instant('ProjectStatusImported'); break; case constant.ProjectStatusEnum.AccountMapSubmitted: status += "/03.png";// $translate.instant('ProjectStatusAcccountMapSubmitted'); break; case constant.ProjectStatusEnum.Generated: status += "/04.png";// $translate.instant('ProjectStatusGenerated'); break; case constant.ProjectStatusEnum.ReportSubmitted: status += "/05.png"; //$translate.instant('ProjectStatusReportSubmitted'); break; case constant.ProjectStatusEnum.ReportApproved: status += "/07.png"; //$translate.instant('ProjectStatusReportApproved'); break; case constant.ProjectStatusEnum.ReportRejected: status += "/06.png"; //$translate.instant('ProjectStatusReportRejected'); break; case constant.ProjectStatusEnum.Completed: status += "/08.png";// $translate.instant('ProejctStatusCompleted'); break; default: status += "/01.png"; } return status; } // TODO: REAL Translation for Industry and Region $scope.smartSearch = function (isReset) { if (isReset) { $scope.searchKeyword = ""; } vatSessionService.queryDto.searchKeyword = $scope.searchKeyword; if ($scope.serviceTypeId !== '12') { $scope.query(); } }; $scope.query = function () { if (!$scope.allResults) return; var temp = $scope.allResults; if ($scope.checkedOrgs && _.keys($scope.checkedOrgs).length > 0) { temp = _.filter(temp, function (i) { return _.contains(_.keys($scope.checkedOrgs), i.organizationId); }); } if ($scope.checkedRegions && $scope.checkedRegions.length > 0) { temp = _.filter(temp, function (i) { return _.contains(_.pluck($scope.checkedRegions, 'name'), i.region); }); } if ($scope.checkedStatus && $scope.checkedStatus.length > 0) { temp = _.filter(temp, function (i) { return _.contains(_.pluck($scope.checkedStatus, 'name'), i.status); }); } var counter = 0; var setWarningToTrue = false; $scope.queryResults = temp; $scope.projectMsg = $translate.instant('ProjectResultMsg').formatObj({ "ProjectNum": $scope.queryResults.length }); var notBeginTemp = _.filter(temp, function (i) { if (i.serviceTypeID === enums.serviceType.VAT) return ((i.projectStatusList === null || (i.projectStatusList !== null && i.projectStatusList[vatSessionService.month] === undefined) || (i.projectStatusList !== null && i.projectStatusList[vatSessionService.month] === 10))); else return ((i.projectStatusList === null || (i.projectStatusList !== null && Object.keys(i.projectStatusList).length === 0) || i.projectStatusList[Object.keys(i.projectStatusList)[Object.keys(i.projectStatusList).length - 1]] === 10)); }); if (notBeginTemp) { $scope.notBeginNum = notBeginTemp.length; } var completedTemp = _.filter(temp, function (i) { if (i.serviceTypeID === enums.serviceType.VAT) { if (i.projectStatusList && i.projectStatusList[vatSessionService.month] != null) { return i.projectStatusList[vatSessionService.month] === 100; } } else { if (i.projectStatusList && i.projectStatusList.length > 0) { return i.projectStatusList[Object.keys(i.projectStatusList)[Object.keys(i.projectStatusList).length - 1]] === 100; } } }); if (completedTemp) { $scope.completedNum = completedTemp.length; } $scope.ongoingNum = $scope.queryResults.length - $scope.notBeginNum - $scope.completedNum; }; var thisDataService = { isHaveOrganizationPermission: function (orgID) { var permission = thisData.userPermission; var isShow = false; if (permission) { if (permission.isSuperAdmin || permission.isADUser) { isShow = true; } else { // 查找机构 var findOrg = _.find(permission.organizationPermissionList, function (num) { return num.id === orgID; }); if (findOrg && findOrg.permissionList && findOrg.permissionList.length > 0) { // 查看具体权限 isShow = true; } } } return isShow; }, }; var initDatePickers = function () { if ($scope.serviceTypeId === enums.serviceType.CIT) { $scope.systemTitle = $translate.instant('CIT'); $scope.viewMode = 2; $scope.dateFormat = $translate.instant('dateFormat4Year'); } if ($scope.serviceTypeId === enums.serviceType.VAT) { $scope.systemTitle = $translate.instant('MenuVAT'); $scope.viewMode = 1; $scope.dateFormat = $translate.instant('dateFormat4YearMonth'); } var ele1 = $("#overviewDatepicker"); ele1.datepicker({ startDate: $scope.startDate, endDate: $scope.endDate, language: region, viewMode: $scope.viewMode, minViewMode: $scope.viewMode, autoclose: true, //选中之后自动隐藏日期选择框 clearBtn: true, //清除按钮 todayBtn: false, //今日按钮 format: $scope.dateFormat //日期格式,详见 http://bootstrap-datepicker.readthedocs.org/en/release/options.html#format }).on('changeDate', function (e) { $scope.changeDate(e); }); ele1.datepicker("setDate", $scope.selectedDate); }; $scope.toggleItemSub = function (item, parent) { // orgDisplay.showBusy(); if (item.isChecked) { if (!item.dimensionId) { $scope.checkedOrgs[item.id] = item.name; } else { item.subOrgs.forEach(function (org) { $scope.checkedOrgs[org.id] = org.name; org.isChecked = true; }); } } else { if (!item.dimensionId) { delete $scope.checkedOrgs[item.id]; } else { item.subOrgs.forEach(function (org) { org.isChecked = false; delete $scope.checkedOrgs[org.id]; }); } } $scope.checkedIds = _.keys($scope.checkedOrgs); if ($scope.serviceTypeId !== enums.serviceType.AssetsManage) { $scope.query(); } // orgDisplay.hideBusy(); }; $scope.changeDate = function (e) { if (e && e.date) { var isDateUpdated = false; var tempYear = e.date.getFullYear(); var tempMonth = e.date.getMonth() + 1; if (tempYear !== vatSessionService.year || tempMonth !== vatSessionService.month) { isDateUpdated = true; } vatSessionService.year = tempYear; vatSessionService.month = tempMonth; $scope.currentSelectedMonth = tempMonth; $scope.currentSelectedYear = tempYear; if (isDateUpdated) { $timeout(function () { $scope.conditionChange = !$scope.conditionChange; }); } if ($scope.serviceTypeId !== enums.serviceType.AssetsManage) { $scope.query(); } } }; var orgDisplay = { orgList: [], grayColorD9: '#d9d9d9', currentIdcol: '', currentNamecol: 'orgName', activeColor: 'black', activeBackgroundColor: '#fbf8f5', whiteColor: 'white', main: function () { $scope.dimensionOrgShow = function (idcol, namecol) { orgDisplay.showBusy(); vatSessionService.queryDto.fieldId = idcol; vatSessionService.queryDto.filedName = namecol; orgDisplay.currentIdcol = idcol; orgDisplay.currentNamecol = namecol; $('.operate-icon').css('background-color', orgDisplay.whiteColor); $('.operate-icon i').css('color', orgDisplay.grayColorD9); $scope.checkedOrgs = {}; //$scope.query(); var orgData = []; if (idcol) { orgData = orgDisplay.otherShow(idcol, namecol); } else { orgData = orgDisplay.orgShow(); } $('.' + namecol).css('color', orgDisplay.activeColor); $('.' + namecol).parent().css('background-color', orgDisplay.activeBackgroundColor); $timeout(function () { orgDisplay.hideBusy(); if ($scope.isFirst) { $scope.setTreeChecked(orgData); $scope.isFirst = false; } $scope.orgData = orgData; }, 50); }; orgDisplay.getOrgData(); }, getOrgData: function () { orgService.getOrgListLevel().success(function (data) { if (!data) { data = []; } var result = []; for (var i = 0; i < data.length; i++) { var item = data[i]; if (thisDataService.isHaveOrganizationPermission(item.id)) { result.push(item); } } orgDisplay.orgList = result; //$scope.dimensionOrgShow('', 'orgName'); $scope.dimensionOrgShow(vatSessionService.queryDto.fieldId, vatSessionService.queryDto.filedName); }); // orgDisplay.orgList = testOrgList; }, orgShow: function () { var showList = angular.copy(orgDisplay.orgList); // 构造父子节点 for (var i = 0; i < showList.length; i++) { var item = showList[i]; if (item.parentID === null) { continue; } var parentNode = _.find(showList, function (num) { return num.id === item.parentID }); if (parentNode) { continue; } item.parentID = orgDisplay.getParentID(item, orgDisplay.orgList, showList); } var idList = _.pluck(showList, 'id'); var topNodeList = _.filter(showList, function (org) { return idList.indexOf(org.parentID) === -1; }); var orgList = []; topNodeList.forEach(function (org) { var item = { id: org.id, name: org.name }; var tempList = orgDisplay.getSubOrgDropDownList(org, showList); item.subOrgs = tempList; // 构造子节点 orgList.push(item); // orgList = _.union(orgList, tempList); }); return orgList; }, // 获取父节点 getParentID: function (current, allList, orgDtoList) { if (current.parentID === null) { return null; } var findParent = _.find(allList, function (num) { return num.id === current.parentID; }); if (!findParent) { return null; } var parent = _.find(orgDtoList, function (num) { return num.id === findParent.id; }); if (parent != null) { return parent.id; } else { return orgDisplay.getParentID(findParent, allList, orgDtoList); } }, getSubOrgDropDownList: function (current, showList) { var sublist = _.filter(showList, function (row) { return row.parentID === current.id; }); var list = []; if (!sublist || sublist.length === 0) { return list; } sublist.forEach(function (row) { var item = { id: row.id, name: row.name, parentID: current.id, expanded: true, }; var tempList = orgDisplay.getSubOrgDropDownList(row, showList); item.subOrgs = tempList; list.push(item); }); return list; }, otherShow: function (idcol, namecol) { var showList = angular.copy(orgDisplay.orgList); var otherList = orgDisplay.getMap(showList, idcol, namecol); var list = []; otherList.forEach(function (other) { var item = other; item.dimensionId = idcol; item.subOrgs = _.filter(showList, function (t) { return t[idcol] === other.id; }); list.push(item); }); return list; }, getMap: function (data, idCol, nameCol) { if (data && data.length > 0) { var idList = _.uniq(_.pluck(data, idCol)); var list = []; idList.forEach(function (row) { if (row) { var findOne = _.find(data, function (o) { return o[idCol] === row; }); if (findOne && findOne[nameCol]) { list.push({ id: row, name: findOne[nameCol], selected: true, }); } } }); return list; } else { return []; } }, showBusy: function () { $('#busy-indicator-container').show(); }, hideBusy: function () { $('#busy-indicator-container').hide(); } }; $scope.setTreeChecked = function (dataList) { if (dataList && dataList.length > 0 && _.keys(vatSessionService.queryDto.checkedOrgs).length > 0) { dataList.forEach(function (v) { if (vatSessionService.queryDto.checkedOrgs[v.id]) { v.isChecked = true; } if (v.subOrgs && v.subOrgs.length > 0) { $scope.setTreeChecked(v.subOrgs); } }); } } var loadApprovalFromDB = function () { vatApproveService.approvalTasks().success(function (data) { if (data) { data.forEach(function (p) { if (PWC.isHavePermissionForOrg(p.organizationId, vatSessionService.userPermission)) { $scope.allResults.push(p); } }); $scope.queryResults = _.clone($scope.allResults); $scope.gridOptions = { bindingOptions: { "dataSource": "queryResults" }, keyExpr: "instanceId", showBorders: true, columns: [ { caption: '项目名称', width: '12%', dataField: "projectName"}, { caption: '期间', width: '7%', dataField: "period"}, { caption: '提审人', width: '10%', dataField: "createBy"}, { caption: '审批人', width: '10%', dataField: "approvalBy"}, { caption: '审批状态', width: '10%', calculateCellValue: function(data) { if(data.status=='disagreed'){ return '驳回'; }else if(data.status == 'agreed'){ return '通过'; }else if(data.status == 'committed'){ return '审核中'; } } }, { caption: '审批意见', width: '15%', calculateCellValue: function(data) { if(data.approvalResult == 'undefined'){ return ''; }else{ return data.approvalResult; } } }, { caption: '提审时间', width: '7.5%', dataField: "createTime"}, { caption: '审批时间', width: '7.5%', dataField: "approvalTime"} ], onRowClick: function (e) { $scope.goToService(e.data); } }; } }); }; $scope.goToService = function (approvalInfo) { projectService.getProjectByID(approvalInfo.projectId).success( function(result){ vatApproveService.getApprovalTemplateInfo(approvalInfo.templateIds.split(",")[0]).success( function(template){ vatSessionService.project = result; vatSessionService.project.projectName = approvalInfo.projectName; vatSessionService.project.month = approvalInfo.period; vatSessionService.project.templateGroupID = template.templateGroupId; vatSessionService.month = approvalInfo.period; vatSessionService.approvalInfo=approvalInfo; $state.go('vat.generateReport.reportView', { id: approvalInfo.reportIds.split(",")[0], templateid: approvalInfo.templateIds.split(",")[0], name: template.name, templatecode: template.code }); }); }); }; (function initialize() { initDatePickers(); $scope.updateStatus = false; userService.getUserPermission(loginContext.userName).success(function (userPermission) { thisData.userPermission = userPermission; userPermission.permissionList.forEach(function (p) { if (p.code.startWith('02')) { $scope.haveVatPermission = true; return; } }); vatSessionService.userPermission = userPermission; orgDisplay.main(); loadApprovalFromDB(); }); })(); } ]);