- 이슈 트리 목록에서는 하위이슈 숨기기 버튼 숨기기
- 하위이슈의 상태가 종료가 아닐 경우에 상위이슈의 상태를 종료로 변경을 못하도록 막는 기능
| | |
| | | public static final String ISSUE_NO_TITLE = "ISSUE_NO_TITLE"; // 이슈 제목이 입력되지 않았습니다. |
| | | public static final String ISSUE_NOT_SEND_USER = "ISSUE_NOT_SEND_USER"; // 이슈 발송 대상자를 선택하지 않았습니다. |
| | | public static final String ISSUE_NOT_SELECT_TEMPLATE = "ISSUE_NOT_SELECT_TEMPLATE"; // 이슈 발송 템플릿을 선택하지 않았습니다. |
| | | public static final String ISSUE_NOT_MODIFY_STATUS = "ISSUE_NOT_MODIFY_STATUS"; // 하위이슈의 상태를 종료로 변경해야 합니다. |
| | | |
| | | public static final String ISSUE_COMMENT_REMOVE_NOT_SELECT = "ISSUE_COMMENT_REMOVE_NOT_SELECT"; // 삭제할 댓글을 선택하지 않았습니다. |
| | | public static final String ISSUE_COMMENT_NOT_EXIST = "ISSUE_COMMENT_NOT_EXIST"; // 댓글이 존재하지 않습니다. |
| | |
| | | this.verifyIssueModifyPermission(issue, user); |
| | | |
| | | IssueStatus issueStatus = this.issueStatusService.getIssueStatus(issueForm.getIssueStatusId()); |
| | | |
| | | if (issueStatus.getIssueStatusType().toString().equals("CLOSE")) { |
| | | List<String> downIssuesStatus = issueForm.getDownIssuesStatus(); |
| | | if (downIssuesStatus != null && downIssuesStatus.size() > 0) { |
| | | for (String downIssueStatus : downIssuesStatus) { |
| | | if (!downIssueStatus.equals("CLOSE")) { |
| | | throw new OwlRuntimeException( |
| | | this.messageAccessor.getMessage(MsgConstants.ISSUE_NOT_MODIFY_STATUS)); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | // 이슈 상태를 변경할 때 선택한 이슈 상태로 변경할 수 있는지 확인한다. |
| | | this.issueStatusService.checkNextIssueStatus(issue, issueStatus); |
| | | // 변경 이력 정보 추출 |
| | |
| | | } |
| | | |
| | | if (MapUtil.getBoolean(conditions, "hideDownIssue") != null) { |
| | | condition.setHideDownIssue(MapUtil.getBoolean(conditions, "hideDownIssue")); |
| | | if(MapUtil.getBoolean(conditions, "isTree") != null && !MapUtil.getBoolean(conditions, "isTree")){ |
| | | condition.setHideDownIssue(MapUtil.getBoolean(conditions, "hideDownIssue")); |
| | | }else if(MapUtil.getBoolean(conditions, "isTree")) { |
| | | condition.setHideDownIssue(false); |
| | | } |
| | | } |
| | | |
| | | if (MapUtil.getBoolean(conditions, "hideCompleteIssue") != null) { |
| | |
| | | private List<Map<String, Object>> files = Lists.newArrayList(); // api용 첨부파일 |
| | | private Long parentIssueId; // 상위 이슈 |
| | | private String isApi; |
| | | private List<String> downIssuesStatus = Lists.newArrayList(); //하위이슈 상태 |
| | | |
| | | public IssueForm() { |
| | | } |
| | |
| | | // api 첨부파일 |
| | | if (MapUtil.getObject(params, "files") != null){ |
| | | form.setFiles((List)MapUtil.getObject(params, "files")); |
| | | } |
| | | |
| | | // 하위이슈 상태 |
| | | if (MapUtil.getObject(params, "downIssuesStatus") != null){ |
| | | form.setDownIssuesStatus((List)MapUtil.getObject(params, "downIssuesStatus")); |
| | | } |
| | | return form; |
| | | } |
| | |
| | | public void setTemplate(String template) { |
| | | this.template = template; |
| | | } |
| | | |
| | | public List<String> getDownIssuesStatus() { |
| | | return downIssuesStatus; |
| | | } |
| | | |
| | | public void setDownIssuesStatus(List<String> downIssuesStatus) { |
| | | this.downIssuesStatus = downIssuesStatus; |
| | | } |
| | | } |
| | |
| | | ISSUE_NO_TITLE = \uC774\uC288 \uC81C\uBAA9\uC774 \uC785\uB825\uB418\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4. |
| | | ISSUE_NOT_SEND_USER = \uC774\uC288 \uBC1C\uC1A1 \uB300\uC0C1\uC790\uB97C \uC120\uD0DD\uD558\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4. |
| | | ISSUE_NOT_SELECT_TEMPLATE = \uC774\uC288 \uBC1C\uC1A1 \uD15C\uD50C\uB9BF\uC744 \uC120\uD0DD\uD558\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4. |
| | | ISSUE_NOT_MODIFY_STATUS = \uD558\uC704\uC774\uC288\uC758 \uC0C1\uD0DC\uB97C \uC885\uB8CC\uB85C \uBCC0\uACBD\uD574\uC57C \uD569\uB2C8\uB2E4. |
| | | |
| | | ISSUE_COMMENT_REMOVE_NOT_SELECT = \uC0AD\uC81C\uD560 \uB313\uAE00\uC744 \uC120\uD0DD\uD558\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4. |
| | | ISSUE_COMMENT_NOT_EXIST = \uB313\uAE00\uC774 \uC874\uC7AC\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4. |
| | |
| | | $scope.vm.form = { |
| | | issues : [], //연관 일감 |
| | | issuesDown : [], // 하위 일감 |
| | | issuesDownStatus : [], //하위 이슈 상태 |
| | | issueCompanyVos : [], |
| | | issueIspVos : [], |
| | | issueHostingVos : [] |
| | |
| | | parameter : function () { |
| | | return { |
| | | issueIds : [$scope.vm.viewer.id], |
| | | projectId : $scope.vm.viewer.projectVo.id |
| | | projectId : $scope.vm.viewer.projectVo.id, |
| | | downIssuesStatus : $scope.vm.form.issuesDownStatus |
| | | }; |
| | | } |
| | | } |
| | |
| | | $scope.vm.form.issues = []; |
| | | $scope.vm.form.issues.push(result.data.data); |
| | | $scope.vm.form.issuesDown = []; |
| | | $scope.vm.form.issuesDownStatus = [];// 하위이슈 상태 |
| | | $scope.vm.form.issuesDown.push(result.data.data); |
| | | |
| | | var issueTableConfigVos = result.data.data.issueTableConfigVos; |
| | |
| | | angular.forEach(result.data.data.issueDownVos, function (issueDownVo){ |
| | | //$scope.vm.form.issuesDown.push(issueDownVo.issueDown); |
| | | $scope.vm.form.issuesDown.push(issueDownVo); |
| | | |
| | | $scope.vm.form.issuesDownStatus.push(issueDownVo.issueStatusVo.issueStatusType); |
| | | }); |
| | | } |
| | | $scope.vm.viewer.issueRelationVos = result.data.data.issueRelationVos; |
| | |
| | | if ($rootScope.workProject.id > -1 && result.data.data.projectVo !== null) { |
| | | $rootScope.changeLastProject(result.data.data.projectVo.id); |
| | | } |
| | | |
| | | } |
| | | } |
| | | else { |
| | |
| | | issueStatusId: undefined, |
| | | comment: "" |
| | | }, |
| | | departmentName : "" |
| | | departmentName : "", |
| | | }; |
| | | |
| | | angular.extend(this, $controller('autoCompleteController', {$scope : $scope, $injector : $injector})); |
| | |
| | | if (formInvalid) { |
| | | return true; |
| | | } |
| | | |
| | | return false; |
| | | } |
| | | |
| | |
| | | var content = { |
| | | ids: parameter.issueIds, |
| | | issueStatusId: $scope.vm.form.issueStatusId, |
| | | downIssuesStatus : parameter.downIssuesStatus, |
| | | comment: $scope.vm.form.comment, |
| | | projectId : parameter.projectId, |
| | | departmentIds : (function () { |
| | |
| | | |
| | | <!-- 우측 --> |
| | | <div class="col-5" > |
| | | <span class="issue-detail-label" style="position: relative; left: 2.8rem; bottom: 5px"><span style="color: #0a7cf8">◆</span> 하위 이슈 숨기기</span> |
| | | <label class='switch' style="left: 3.3rem"><input type='checkbox' ng-model='vm.hideDownIssue' ng-click='fn.getPageList(0)'> |
| | | <span class="issue-detail-label" ng-if="vm.listMode === 0" style="position: relative; left: 2.8rem; bottom: 5px"><span style="color: #0a7cf8">◆</span> 하위 이슈 숨기기</span> |
| | | <label class='switch' ng-if="vm.listMode === 0" style="left: 3.3rem"><input type='checkbox' ng-model='vm.hideDownIssue' ng-click='fn.getPageList(0)'> |
| | | <span class='slider round'></span> |
| | | </label> |
| | | <span class="issue-detail-label" style="position: relative; left: 5.8rem; bottom: 5px"><span style="color: #0a7cf8">◆</span> 완료 이슈 숨기기</span> |