infrastructureModule .controller('ProjectManageController', ['$scope', '$log', '$timeout', '$translate', 'projectService', 'userService', 'uiGridConstants', 'SweetAlert', 'orgService', 'roleService', 'templateGroupService', function ($scope, $log, $timeout, $translate, projectService, userService, uiGridConstants, SweetAlert, orgService, roleService, templateGroupService) { 'use strict'; var testModuleList = [{ id: '1', name: '2016' }, { id: '1', name: '2017' }]; var loadProjectIndustryList = function () { orgService.getProjectIndustrys().success(function (data) { $scope.projectIndustryList = data; }); }; var loadAllTemplate = function () { templateGroupService.getall().success(function (data) { $scope.templateGroupList = data; }); }; var getTemplate = function (serviceTypeId) { return _.filter($scope.templateGroupList, function (num) { return num.serviceTypeID === serviceTypeId }); }; var initServiceList = function () { projectService.getServiceList().success(function (serviceListData) { $scope.serviceList = serviceListData; // $timeout(function () { // initMultipleSelect(); // }, 10); $scope.projectModuleList = []; $scope.newProjectModuleRow(); }); }; $scope.newProjectModuleRow = function () { if ($scope.serviceList.length <= $scope.projectModuleList.length) { return; } var serviceList = copyArray($scope.serviceList); var row = { serviceList: serviceList, moduleList: [], selectedService: null, selectedModule: null }; $scope.projectModuleList.push(row); }; var setProjectModuleRowList = function (projectData) { $scope.projectModuleList = []; if ($scope.serviceList.length <= $scope.projectModuleList.length) { return; } if (projectData.serviceTypeTemplateGroupList && projectData.serviceTypeTemplateGroupList.length > 0) { projectData.serviceTypeTemplateGroupList.forEach(function (row) { var serviceList = copyArray($scope.serviceList); var moduleList = getTemplate(row.serviceTypeID); var row = { projectServiceTypeID: row.projectServiceTypeID, serviceList: serviceList, moduleList: moduleList, selectedService: _.find(serviceList, function (num) { return num.id === row.serviceTypeID }), selectedModule: _.find(moduleList, function (num) { return num.id === row.templateGroupID }) }; $scope.projectModuleList.push(row); }); } }; $scope.changeProjectService = function (projectModule) { var moduleList = getTemplate(projectModule.selectedService.id); projectModule.moduleList = moduleList; if (moduleList && moduleList.length > 0) { projectModule.selectedModule = moduleList[0]; } else { projectModule.selectedModule = {}; } }; var copyArray = function (data) { var ret = []; data.forEach(function (row) { ret.push(row); }); return ret; }; $scope.deleteProjectModule = function (model) { if (model) { $scope.projectModuleList.splice(jQuery.inArray(model, $scope.projectModuleList), 1); }; }; $scope.getGridHeight = function () { return { height: ($(".system-manage #projectDataList").height() - $(".system-manage #projectDataList .project-manage-menu").height()) + "px" }; } var initProjectList = function (orgID, serviceID, projectYear) { if (!orgID) { orgID = ''; } if (!serviceID) { serviceID = ''; } if (!projectYear) { projectYear = null; } projectService.getProjectList(orgID, serviceID, projectYear).success(function (projectListData) { if ($scope.projectId && $scope.serviceType) { $log.debug('projectID:' + $scope.projectId + '; serviceType:' + $scope.serviceType); projectListData = _.where(projectListData, { id: $scope.projectId.toLowerCase(), serviceTypeID: parseInt($scope.serviceType) }); } //set index number, ui-grid have no $$index var projectIndex = 1; var curProject = null; projectListData.forEach(function (p) { if (!curProject) { curProject = p; p.index = projectIndex++; p.nameDisplay = p.name; p.organizationNameDisplay = p.organizationName; p.yearDisplay = p.year; p.industryNameDisplay = p.industryName; } else { if (p.id == curProject.id) { p.nameDisplay = ''; p.organizationNameDisplay = ''; p.yearDisplay = ''; p.industryNameDisplay = ''; } else { curProject = p; p.index = projectIndex++; p.nameDisplay = p.name; p.organizationNameDisplay = p.organizationName; p.yearDisplay = p.year; p.industryNameDisplay = p.industryName; } } }); $scope.gridOptions.data = projectListData; $scope.gridOptions.noData = projectListData.length === 0; }); }; var initProjectYear = function () { var arrYear = '['; var curYear = new Date().getFullYear(); for (var beginYear = curYear - 4; beginYear <= curYear + 4; beginYear++) { arrYear += '{"year"' + ':' + beginYear + '},'; } arrYear = arrYear.substring(0, arrYear.length - 1) + ']'; $scope.projectYearList = JSON.parse(arrYear); }; var newProject = function () { $scope.isAdd = true; $scope.editProjectModel = {}; $scope.editProjectModel.serviceSelectedList = []; $scope.editProjectModel.serviceSelectedList = []; $scope.projectModuleList = []; $scope.newProjectModuleRow(); $scope.selectedIndustry = null; $scope.editProjectModel.selectedYear = null; $scope.editProjectModel.componentSelectedOrg = null; resetErrorStatus(); $("#selectedOrgName-error").hide(); $('#addProjectPop').modal('show'); }; //save project var saveProject = function () { if (!($('#projectForm').valid())) { return; } if (!$scope.editProjectModel) { return; } if ($scope.projectModuleList) { $scope.editProjectModel.serviceTypeTemplateGroupList = []; var iserror = false; $scope.projectModuleList.forEach(function (row) { if (row.selectedService && row.selectedService.id && row.selectedModule && row.selectedModule.id && !iserror) { // 先判断是否有一样的了 if (_.find($scope.editProjectModel.serviceTypeTemplateGroupList, function (num) { return num.serviceTypeID === row.selectedService.id && num.templateGroupID === row.selectedModule.id })) { if (!iserror) { iserror = true; SweetAlert.warning(row.selectedService.name + '-' + row.selectedModule.name + $translate.instant('HasSelected')); } } else { var serviceTypeTemplateGroup = {}; serviceTypeTemplateGroup.serviceTypeID = row.selectedService.id; serviceTypeTemplateGroup.templateGroupID = row.selectedModule.id; if (row.projectServiceTypeID) { serviceTypeTemplateGroup.projectServiceTypeID = row.projectServiceTypeID; } serviceTypeTemplateGroup.serviceTypeName = row.selectedService.name; serviceTypeTemplateGroup.templateGroupName = row.selectedModule.name; $scope.editProjectModel.serviceTypeTemplateGroupList.push(serviceTypeTemplateGroup); } } else { // 服务和模型都必须选择 // 这里可以提示 if (!iserror) { iserror = true; SweetAlert.warning($translate.instant('SelectBothServiceAndTemplate')); } } }); if (iserror) { return; } } if ($scope.selectedIndustry && $scope.selectedIndustry.id) { $scope.editProjectModel.industryID = $scope.selectedIndustry.id; } if ($scope.isAdd) { $scope.editProjectModel.year = $scope.editProjectModel.selectedYear.year; $scope.editProjectModel.OrganizationID = $scope.editProjectModel.organizationID; projectService.addProject($scope.editProjectModel).success(function (data) { if (data && !data.result) { swal($translate.instant('SaveFail'), $translate.instant(data.resultMsg), 'warning'); return; } $log.debug('add success' + projectID); SweetAlert.success($translate.instant('SaveSuccess')); $scope.editProjectModel = {}; initProjectList(); }); } else { if (ischangeProjectService()) { SweetAlert.swal({ title: $translate.instant('Confirm') + $translate.instant('Change') + '?', text: $translate.instant('ChangeProjectTips'), type: "warning", showCancelButton: true, confirmButtonColor: "#DD6B55", confirmButtonText: $translate.instant('Confirm'), cancelButtonText: $translate.instant('Cancel'), closeOnConfirm: false, closeOnCancel: true }, function (isConfirm) { if (isConfirm) { projectService.updateProject($scope.editProjectModel).success(function (data) { if (data && !data.result) { swal($translate.instant('SaveFail'), $translate.instant(data.resultMsg), 'warning'); return; } SweetAlert.swal($translate.instant('Confirm') + $translate.instant('Change'), $translate.instant("SaveSuccess"), "success"); $scope.editProjectModel = {}; initProjectList(); }); } }); } else { projectService.updateProject($scope.editProjectModel).success(function (data) { if (data && !data.result) { swal($translate.instant('SaveFail'), $translate.instant(data.resultMsg), 'warning'); return; } SweetAlert.success($translate.instant('SaveSuccess')); $scope.editProjectModel = {}; initProjectList(); }); } } $('#addProjectPop').modal('hide'); }; var ischangeProjectService = function () { var ischange = false; if ($scope.editProjectModel && $scope.editProjectModel.serviceTypeTemplateGroupList && $scope.currentProjectData && $scope.currentProjectData.serviceTypeTemplateGroupList) { $scope.currentProjectData.serviceTypeTemplateGroupList.forEach(function (row) { var updateModel = _.find($scope.editProjectModel.serviceTypeTemplateGroupList, function (num) { return num.id === row.id }); if (!updateModel) { ischange = true; } if (updateModel.serviceTypeID != row.serviceTypeID || updateModel.templateGroupID !== row.templateGroupID) { ischange = true; } }); } return ischange; }; //load project var loadProject = function (projectID) { $scope.isAdd = false; projectService.getSingleProject(projectID).success(function (projectData) { //set ServiceBelong $scope.editProjectModel = projectData; var first = _.find($scope.projectIndustryList, function (num) { return num.id + '' === $scope.editProjectModel.industryID }); if (first) { $scope.selectedIndustry = first; } $scope.currentProjectData = projectData; setProjectModuleRowList(projectData); //set ProjectYear $scope.editProjectModel.selectedYear = _.find($scope.projectYearList, function (num) { return num.year === projectData.year }); // $scope.selectedIndustry = _.find($scope.projectIndustryList, function (num) { return num.id + '' === projectData.industryID }); }); resetErrorStatus(); $('#addProjectPop').modal('show'); }; //Delete project info var deleteProject = function () { projectService.deleteProject($scope.toDeleteModel).success(function () { $('#deleteConfirmPop').modal('hide'); //Reload project list initProjectList(); $log.debug('delete success!'); }); }; //Deleted projects var deleteProjects = function () { projectService.deleteProjects($scope.gridApi.selection.getSelectedRows()).success(function () { $('#deleteConfirmPop').modal('hide'); initProjectList(); $log.debug('delete projects success!'); }); }; //delete project confirm var deleteProjectConfirm = function (project) { $scope.isMore = false; $scope.toDeleteModel = project; $scope.toDeleteName = project.projectName; $scope.toDeleteCode = project.projectCode; $('#deleteConfirmPop').modal('show'); }; //delete projects confirm var deleteProjectsConfirm = function () { if ($scope.gridApi.selection.getSelectedCount() > 0) { $scope.isMore = true; $('#deleteConfirmPop').modal('show'); } else { $log.debug('plese select projects first!'); } }; var reloadProjectData = function () { var orgId = $scope.queryOrgId; var serviceId = $scope.queryService; var projectId = $scope.queryProjectYear; initProjectList(orgId, serviceId, projectId); }; var toggleSub = function (roleNode) { if (roleNode.isChecked) { $scope.checkedRolesSet[roleNode.roleID] = roleNode; } else { delete $scope.checkedRolesSet[roleNode.roleID]; } $scope.set = _.keys($scope.checkedMenusSet); if (!roleNode.subNodeList) { return; } roleNode.subNodeList.forEach(function (d) { d.isChecked = roleNode.isChecked; if (roleNode.isChecked) { $scope.checkedRolesSet[d.roleID] = d; } else { delete $scope.checkedRolesSet[d.roleID]; } }); $scope.set = _.keys($scope.checkedRolesSet); }; var clearRoleIsChecked = function () { if ($scope.roleNodeList && $scope.roleNodeList.length > 0) { for (var i = $scope.roleNodeList.length - 1; i >= 0; i--) { $scope.roleNodeList[i].isChecked = false; toggleSub($scope.roleNodeList[i]); } } }; var roleTreeLoad = function () { userService.getRoleDisplayList().success(function (roleDisplayTypeData) { if (roleDisplayTypeData && roleDisplayTypeData.length > 0) { var group = _.groupBy(roleDisplayTypeData, function (n) { return n.roleTypeId; }); var roleNode = []; var roleTypeIdList = []; for (var i = roleDisplayTypeData.length - 1; i >= 0; i--) { roleTypeIdList.push(roleDisplayTypeData[i].roleTypeId); } roleTypeIdList = _.uniq(roleTypeIdList); for (var m = roleTypeIdList.length - 1; m >= 0; m--) { var subList = group[roleTypeIdList[m]]; if (subList) { var model = { name: subList[0].roleTypeName, roleTypeName: subList[0].roleTypeName, roleTypeId: subList[0].roleTypeId, description: '', roleID: subList[0].roleTypeId, subNodeList: subList }; roleNode.push(model); } } $scope.roleNodeList = roleNode; } else { $scope.roleNodeList = []; } }); }; var assignUser = function (projectData) { $scope.assignProject = projectData; resetSelectedUser($scope.userList); $scope.selectUserSpan = {}; userService.getUserListByProject(projectData.id, projectData.serviceTypeID).success(function (userData) { $scope.userList = userData; checkUser($scope.userList[0].subUsers[0]); $scope.assignUserSet = getUserSet(userData); $('#assignUserPop').modal('show'); }); roleService.getroletree(projectData.serviceTypeID).success(function (data) { $scope.roleTreeData = data; }); }; var getUserChecked = function (user, chk) { if (chk === true) { $scope.selectUserIDs += user.userID + ','; } else { $scope.selectUserIDs = $scope.selectUserIDs.replace(',' + user.userID + ',', ','); } $log.debug($scope.selectUserIDs); }; var findRoleByRoleID = function (roleList, roleId) { var ret = _.find(roleList, function (num) { return num.roleID + '' === roleId; }); return ret; }; var findAllCheckedList = function (roleList) { var checkedList = _.filter(roleList, function (num) { return num.isChecked; }); return checkedList; }; var selectNode = function (roleNode) { $scope.selectedRole = roleNode; }; var toggle = function (scope) { scope.toggle(); }; var initMultipleSelect = function () { var multiOption = { includeSelectAllOption: true, selectAllText: $translate.instant('allService'), nonSelectedText: $translate.instant('nonSelectedService'), allSelectedText: $translate.instant('allService') }; $('#serviceTypeList').show().multiselect(multiOption); }; var search = function () { $scope.gridApi.grid.refresh(); }; //Initial user list var initUser = function () { userService.getUserTreeList().success(function (userData) { $scope.userList = userData; checkUser($scope.userList[0].subUsers[0]); $scope.assignUserSet = getUserSet(userData); }) }; var getUserSet = function (userData) { var userSet = []; userData.forEach(function (row) { row.isSelected = row.isChecked; userSet.push(row); if (row.subUsers && row.subUsers.length > 0) { var subUserSet = getUserSet(row.subUsers); userSet = _.union(userSet, subUserSet); } }); return userSet; }; //select tree node event var checkUser = function (user) { var isSelected = !user.isSelected; // 设置子节点 setUserRecursion(user, isSelected); // 设置父级节点状态 setParentRecursion(user, isSelected); }; var setUserRoleSetList = function (user) { if (!$scope.roleTreeData || $scope.roleTreeData.length === 0) { return; } // 都要设置成不选择 $scope.roleTreeData[0].isChecked = false; $scope.roleTreeData[0].subRoles.forEach(function (row) { row.isChecked = false; }); if (!user || !user.id) { return; } userService.getUserRoleSetList(user.id, $scope.assignProject.serviceTypeID, $scope.assignProject.id).success(function (data) { if (data && data.length) { data.forEach(function (row) { var filter = _.filter($scope.roleTreeData[0].subRoles, function (num) { return num.id === row.roleID }); if (filter && filter.length > 0) { filter.forEach(function (row2) { row2.isChecked = true; }); } }); var filter = _.filter($scope.roleTreeData[0].subRoles, function (num) { return num.isChecked }); if (filter.length === $scope.roleTreeData[0].subRoles.length) { $scope.roleTreeData[0].isChecked = true; } } }); }; var setUserRecursion = function (user, isSelected) { user.isSelected = isSelected; if (user.subUsers && user.subUsers.length > 0) { user.subUsers.forEach(function (row) { setUserRecursion(row, isSelected); }); } }; var setParentRecursion = function (user, isSelected) { if (user.parent && user.parent.subUsers && user.parent.subUsers.length > 0) { var selectSubUserList = _.filter(user.parent.subUsers, function (num) { return num.isSelected === isSelected }); if (user.parent.subUsers && selectSubUserList && user.parent.subUsers.length === selectSubUserList.length) { user.parent.isSelected = isSelected; } else { user.parent.isSelected = false; } if (user.parent.parent) { setParentRecursion(user.parent, isSelected); } } }; var resetSelectedUser = function (userList, parent) { userList.forEach(function (row) { row.isSelected = false; if (parent && !row.parent) { row.parent = parent; } if (row.subUsers && row.subUsers.length > 0) { resetSelectedUser(row.subUsers, row); } }); }; $scope.toggleRoleSub = function (role) { if (role.isChecked) { role.isChecked = false; } else { role.isChecked = true; } // 如果是父节点,同步设置子节点 if (role.id === constant.guid.empty) { if (role.subRoles && role.subRoles.length > 0) { role.subRoles.forEach(function (row) { row.isChecked = role.isChecked; }); } } else { var selectedRoleList = _.filter($scope.roleTreeData[0].subRoles, function (num) { return num.isChecked }); if (selectedRoleList && selectedRoleList.length === $scope.roleTreeData[0].subRoles.length) { $scope.roleTreeData[0].isChecked = role.isChecked; } else { $scope.roleTreeData[0].isChecked = false; } } }; $scope.setProjectUserRole = function () { if (!$scope.roleTreeData || $scope.roleTreeData.length === 0) { $log.debug('no role list'); return; } // 保存用户分配信息 var selectedUser = _.filter($scope.assignUserSet, function (num) { return (!num.subUsers || num.subUsers.length === 0) && num.id !== $scope.selectUserSpan.id }); if (!selectedUser || selectedUser.length === 0) { $log.debug('please select user....'); return; } var inpara = []; // 选中checkbox 设置默认权限 selectedUser.forEach(function (userInfo) { var para = {}; para.UserID = userInfo.id; para.userName = userInfo.userName; para.projectID = $scope.assignProject.id; para.projectName = $scope.assignProject.name; para.serviceTypeID = $scope.assignProject.serviceTypeID; para.serviceTypeName = $scope.assignProject.serviceTypeName; para.isActive = userInfo.isSelected; inpara.push(para); }); // 设置单选的用户的权限 if ($scope.selectUserSpan && $scope.selectUserSpan.id) { $scope.roleTreeData[0].subRoles.forEach(function (roleInfo) { var para = {}; para.UserID = $scope.selectUserSpan.id; para.userName = $scope.selectUserSpan.userName; para.roleID = roleInfo.id; para.roleName = roleInfo.name; para.projectID = $scope.assignProject.id; para.projectName = $scope.assignProject.name; para.serviceTypeID = $scope.assignProject.serviceTypeID; para.serviceTypeName = $scope.assignProject.serviceTypeName; para.isActive = roleInfo.isChecked; inpara.push(para); }); } userService.setProjectUserRole(inpara).success(function (data) { if (data && data.result) { SweetAlert.success($translate.instant('SaveSuccess')); $log.debug('setProjectUserRole success...'); $('#assignUserPop').modal('hide'); } else { swal($translate.instant('SaveFail'), $translate.instant(data.resultMsg), 'warning'); } }); }; $scope.selectUserSpanClick = function (user) { if ($scope.selectUserSpan && $scope.selectUserSpan.id && $scope.selectUserSpan.id === user.id) { $scope.selectUserSpan = {}; } else { $scope.selectUserSpan = user; } setUserRoleSetList($scope.selectUserSpan); }; // form validate var resetErrorStatus = function () { var currentForm = $('#projectForm'); currentForm.find('.has-error').removeClass('has-error'); var settingForm = $('.project-modal-table')[0]; $(settingForm).find('.has-error').removeClass('has-error'); validator.resetForm(); }; var resources = { nameRequired: $translate.instant('ProjectNameRequired'), codeRequired: $translate.instant('ProjectCodeRequired'), selectOrganizationRequired: $translate.instant('SelectOrganizationRequired'), selectIndustryRequired: $translate.instant('SelectIndustryRequired'), selectedYearRequired: $translate.instant('SelectedYearRequired'), selectedServiceRequired: $translate.instant('SelectedServiceRequired'), selectedModuleRequired: $translate.instant('SelectedModuleRequired'), }; var validator = $("#projectForm").validate({ errorClass: "has-error", ignore: "", rules: { name: { required: true }, code: { required: true }, //orgName: { // required: true //}, selectedIndustry: { required: true }, selectedYear: { required: true }, selectedService: { required: true }, selectedModule: { required: true }, selectedOrgName: { required: true, } }, messages: { name: { required: resources.nameRequired }, code: { required: resources.codeRequired }, //orgName: { // required: resources.selectOrganizationRequired //}, selectedIndustry: { required: resources.selectIndustryRequired }, selectedYear: { required: resources.selectedYearRequired }, selectedService: { required: resources.selectedServiceRequired }, selectedModule: { required: resources.selectedModuleRequired }, selectedOrgName: { required: resources.selectOrganizationRequired } }, errorPlacement: function (error, element) { setErrorStyle(error, element); } }); var setErrorStyle = function (error, element) { if (element.hasClass('has-error')) { element.parent().addClass('has-error'); error.insertAfter(element); error.addClass('label'); // error.addClass('label-danger'); } }; $scope.$watch('editProjectModel.organizationID', function (newValue, oldValue) { if (newValue !== oldValue && $scope.editProjectModel.componentSelectedOrg) { $log.debug('newValue:' + newValue + ',oldValue:' + oldValue); $scope.editProjectModel.industryID = $scope.editProjectModel.componentSelectedOrg.industryID; var first = _.find($scope.projectIndustryList, function (num) { return num.id === $scope.editProjectModel.industryID }); if (first) { $scope.selectedIndustry = first; } } }); $scope.showOperateLogPop = function () { $scope.isShowLog = true; // $('#showOperatePop').modal('show'); }; (function initialize() { $log.debug('projectManageController.ctor()...'); //scope model $scope.title = '项目管理'; $scope.serviceList = []; $scope.queryService = ''; $scope.projectYearList = []; $scope.projectIndustryList = []; $scope.queryProjectYear = ''; $scope.projectList = []; $scope.isAdd = false; $scope.editProjectModel = {}; $scope.chk = false; $scope.userList = []; $scope.selectUserIDs = ','; $scope.checkedRolesSet = {}; $scope.selectedIndustry = {}; $scope.selectProject = {}; $scope.set = []; $scope.searchText = ''; $scope.selectUserSpan = {}; $scope.gridOptions = { rowHeight: 50, selectionRowHeaderWidth: 50, enableFullRowSelection: false, enableRowSelection: false, enableSorting: false, enableFiltering: false, enableColumnMenus: false, enableRowHeaderSelection: false, enableHorizontalScrollbar: uiGridConstants.scrollbars.NEVER, columnDefs: [ { field: 'index', name: $translate.instant('SequenceNoCol'), width: '10%', headerCellClass: 'right', enableFiltering: false, cellTemplate: '<div class="ui-grid-cell-contents right"><span>{{row.entity.index}}<span></div>' }, { field: 'name', name: $translate.instant('ProjectNameCol'), width: '20%', headerCellClass: '', cellTemplate: '<div class="ui-grid-cell-contents"><span>{{row.entity.nameDisplay}}<span></div>' }, { field: 'organizationName', name: $translate.instant('ProjectCompanyCol'), width: '25%', headerCellClass: '', cellTemplate: '<div class="ui-grid-cell-contents"><span>{{row.entity.organizationNameDisplay}}</span></div>' }, { field: 'industryName', name: $translate.instant('PIndustry'), width: '10%', headerCellClass: '', cellTemplate: '<div class="ui-grid-cell-contents"><span>{{row.entity.industryNameDisplay}}</span></div>' }, { field: 'year', name: $translate.instant('ProjectYearCol'), width: '10%', headerCellClass: '', cellTemplate: '<div class="ui-grid-cell-contents"><span>{{row.entity.yearDisplay}}</span></div>' }, { field: 'serviceTypeName', name: $translate.instant('ProjectServiceCol'), width: '15%', headerCellClass: '', cellTemplate: '<div class="ui-grid-cell-contents"><span>{{row.entity.serviceTypeName}}</span></div>' }, { name: $translate.instant('OrganizationStructureOperation'), width: '10%', headerCellClass: 'center', enableFiltering: false, cellTemplate: '<div class="project-manage-grid-operation ui-grid-cell-contents">' + '<a class="operate-btn" href="javascript:void(0)" ng-click="grid.appScope.assignUser(row.entity)"> <i class="material-icons">person</i><span></span></a>' + '<a class="operate-btn" href="javascript:void(0)" ng-click="grid.appScope.loadProject(row.entity.id)"> <i ng-if="row.entity.nameDisplay" class="material-icons">create</i><span></span></a>' + '</div>' } ], onRegisterApi: function (gridApi) { $scope.gridApi = gridApi; $scope.gridApi.grid.registerRowsProcessor($scope.singleFilter, 200); } }; $scope.singleFilter = function (renderableRows) { var matcher = new RegExp($scope.searchProjectText); var isSelectYear = false; if ($scope.queryProjectYear && $scope.queryProjectYear.length > 0) { isSelectYear = true; }; renderableRows.forEach(function (row) { var match = false; if (isSelectYear && row.entity.year + '' !== $scope.queryProjectYear) { match = false; } else { ['name', 'serviceTypeName', 'organizationName', 'industryName'].forEach(function (field) { if (row.entity[field].match(matcher)) { match = true; } }); } if (!match) { row.visible = false; } }); return renderableRows; }; $scope.gridOptions.noData = false; $scope.newProject = newProject; $scope.saveProject = saveProject; $scope.loadProject = loadProject; $scope.deleteProject = deleteProject; $scope.deleteProjects = deleteProjects; $scope.deleteProjectConfirm = deleteProjectConfirm; $scope.deleteProjectsConfirm = deleteProjectsConfirm; $scope.reloadProjectData = reloadProjectData; $scope.assignUser = assignUser; $scope.getUserChecked = getUserChecked; $scope.initProjectList = initProjectList; $scope.roleTreeLoad = roleTreeLoad; $scope.selectNode = selectNode; $scope.toggle = toggle; $scope.toggleSub = toggleSub; $scope.search = search; $scope.checkUser = checkUser; //init project list //init service dropdown list initServiceList(); initProjectList(); //init project year dropdown list initProjectYear(); loadProjectIndustryList(); loadAllTemplate(); // 加载用户列表 // initUser(); })(); } ]);