OWL ITS + 탐지시스템(인터넷 진흥원)
jhjang
2021-12-07 30ddd2cf095d2857ba1134fb3deaf51392ef1030
src/main/webapp/scripts/app/issue/issueDetail.controller.js
@@ -28,13 +28,20 @@
                $scope.fn.updateActiveHistory = updateActiveHistory;    //  활동 내역에서 전체 보기 탭을 눌렀을 때 댓글, 기록 정보를 업데이트 한다.
                $scope.fn.getChangeIssueStatusList = getChangeIssueStatusList;    //  이슈의 현재 상태에서 변경 가능한 이슈 샅태 목록 가져오기
                $scope.fn.modifyIssueStatus = modifyIssueStatus;    //  이슈 상태 변경
                $scope.fn.modifyDownIssueStatus = modifyDownIssueStatus;    //하위 이슈 상태 변경
                $scope.fn.modifyIssueUser = modifyIssueUser;    //  이슈 담당자 변경
                $scope.fn.modifyIssueDepartment = modifyIssueDepartment;    //  이슈 담당부서 변경
                $scope.fn.initReload = initReload;  //  초기화 해야할 할목을 지정하여 다른 이슈를 클릭할 때 초기화해준다.
                $scope.fn.sendMail = sendMail;  //  특정 사용자에게 이슈 정보를 메일로 발송
                $scope.fn.sendMail = sendMail;
                $scope.fn.sendMailAll = sendMailAll;
                $scope.fn.sendMailVo = sendMailVo;
                $scope.fn.getParameters = getParameters;
                $scope.fn.getParametersAll = getParametersAll;
                //  특정 사용자에게 이슈 정보를 메일로 발송
                $scope.fn.versionView = versionView;    //  버전 정보를 표시한다.
                $scope.fn.reservation = reservation;    //  예약 정보를 확인 및 변경 한다.
                $scope.fn.getIssueListCallBack = getIssueListCallBack;
                $scope.fn.getDownIssueListCallBack = getDownIssueListCallBack;
                $scope.fn.addRelationIssue = addRelationIssue;      // 연관 이슈 추가
                $scope.fn.addDownIssue = addDownIssue;      // 하위 이슈 추가
                $scope.fn.addRelationIssueTableConfig = addRelationIssueTableConfig;      // 연관 이슈 목록 테이블 설정
@@ -43,7 +50,6 @@
                $scope.fn.getDownTableConfigs = getDownTableConfigs;
                $scope.fn.containsPartner = containsPartner;
                $scope.fn.onActivate = onActivate;
                $scope.fn.makePartnersEmail = makePartnersEmail;
                //  이슈 목록 컨트롤러 vm, fn 상속 중
                $scope.vm.viewer = {};
@@ -126,6 +132,13 @@
                }
                angular.extend(this, $controller('autoCompleteController', {$scope : $scope, $injector : $injector}));
                 // 이슈 목록 데이터 갱신
                $scope.$on("getIssueList", function () {
                    $scope.fn.getIssueDetail();
                });
                // 하위 이슈 삭제
                function removeDownIssue(id) {
@@ -213,6 +226,10 @@
                //  프로젝트 autocomplete page 업데이트
                function getIssueListCallBack(result) {
                    $scope.vm.autoCompletePage.issue.totalPage = result.data.page.totalPage;
                }
                function getDownIssueListCallBack(result) {
                    $scope.vm.autoCompletePage.issue.totalPage = result.data.page.totalPage;
                }
@@ -328,6 +345,16 @@
                                .setDAlign("text-center")
                                .setDRenderer("ISSUE_DOWN_MOVE"));
                            break;
                        case "ISSUE_DOWN_STATUS_TYPE" : //  이슈 상태
                            $scope.vm.downTableConfigs.push($tableProvider.config()
                                .setHName("issue.issueStatus")
                                .setDType("renderer")
                                .setHWidth("bold " + Down_issueTableConfig.width)
                                .setDAlign("text-center")
                                .setDRenderer("ISSUE_DOWN_STATUS_TYPE"));
                            break;
                        case "PRIORITY" :   // 하위 이슈 우선순위
                            $scope.vm.downTableConfigs.push($tableProvider.config()
                                .setHName("common.priority")
@@ -640,10 +667,15 @@
                }
                //  이슈명을 클릭하면 이슈 상세 정보를 조회한다.
                // $rootScope.$on("getIssueDetail", function (event, args) {
                //     $scope.vm.viewer.id = args["id"];
                //     $scope.fn.getIssueDetail();
                // });
                //  $rootScope.$on("getIssueDetail", function (event, args) {
                //      $scope.vm.viewer.id = args["id"];
                //      $scope.fn.getIssueDetail();
                //  });
                // 이메일 보낸후 상세화면 갱신
                 $rootScope.$on("getIssueDetail", function (event, args) {
                     $scope.fn.getIssueDetail();
                 });
                //  이슈명을 클릭하면 이슈 상세 정보를 조회한다.
                // $scope.$on("getIssueDetail", function (event, args) {
@@ -682,6 +714,25 @@
                            parameter : function () {
                                return {
                                    issueIds : [$scope.vm.viewer.id],
                                    projectId : $scope.vm.viewer.projectVo.id
                                };
                            }
                        }
                    });
                }
                function modifyDownIssueStatus() {
                    $uibModal.open({
                        templateUrl : 'views/issue/downIssueModifyStatus.html',
                        size : "md",
                        controller : 'downIssueModifyStatusController',
                        backdrop : 'static',
                        resolve : {
                            parameter : function () {
                                return {
                                    issueTypeId : $scope.vm.viewer.issueTypeVo.id,
                                    issueIds : [$scope.vm.viewer.id],
                                    downIssues : $scope.vm.viewer.issueDownVos,
                                    projectId : $scope.vm.viewer.projectVo.id
                                };
                            }
@@ -746,6 +797,7 @@
                        }
                    });
                }
                //  하위 이슈 목록 테이블 설정
                function addDownIssueTableConfig() {
@@ -854,13 +906,20 @@
                                // 하위 이슈 반목문
                                if (result.data.data.issueDownVos !== null){
                                    angular.forEach(result.data.data.issueDownVos, function (issueDownVo){
                                        $scope.vm.form.issuesDown.push(issueDownVo.issue);
                                        //$scope.vm.form.issuesDown.push(issueDownVo.issueDown);
                                        $scope.vm.form.issuesDown.push(issueDownVo);
                                        // 간헐적인 하위 이슈 갱신 오류 방지
                                        // $scope.$on("getIssueDetail", function (event, args) {
                                        //      $scope.fn.getIssueDetail();
                                        //  });
                                    });
                                }
                                $scope.vm.viewer.issueRelationVos = result.data.data.issueRelationVos;
                                $scope.vm.viewer.issueDownVos = result.data.data.issueDownVos;
                                if ($rootScope.workProject.id > -1) {
                                if ($rootScope.workProject.id > -1 && result.data.data.projectVo !== null) {
                                    $rootScope.changeLastProject(result.data.data.projectVo.id);
                                }
                            }
@@ -870,8 +929,6 @@
                        }
                    });
                }
                // ===================================================================================
                //  이슈 이미지 미리 보기 만들기
                function makePreviewImages(attachedFileVos) {
@@ -1055,36 +1112,61 @@
                    });
                }
                // 업체/ISP/호스팅 배열값을 하나로 합쳐서 메일 클릭시 전달
                function makePartnersEmail() {
                    $scope.vm.form.partnersEmail = $scope.vm.viewer.issueCompanyVos.concat($scope.vm.viewer.issueIspVos, $scope.vm.viewer.issueHostingVos)
                    return $scope.vm.form.partnersEmail;
                function sendMailVo(partnerVos) {
                    $scope.fn.sendMail($scope.fn.getParametersAll(), $scope.fn.getParameters(null, partnerVos));
                }
                function sendMailAll() {
                    var param = $scope.fn.getParametersAll();
                    $scope.fn.sendMail(param, param);
                }
                //  특정 사용자에게 이슈를 메일로 발송
                function sendMail(issueId, projectId) {
                    makePartnersEmail();
                function sendMail(partnersAll, partners) {
                    $uibModal.open({
                        templateUrl : 'views/issue/issueSendMail.html',
                        templateUrl : 'views/issue/issueSendMailPartners.html',
                        size : "md",
                        controller : 'issueSendMailController',
                        controller : 'issueSendMailPartnersController',
                        backdrop : 'static',
                        resolve : {
                            parameter : function () {
                                return {
                                    departmentVos : [$scope.vm.form.issues[0].departmentVos],
                                    partners : $scope.vm.form.partnersEmail,
                                    issueId : issueId,
                                    projectId : projectId
                                    // issueCompanyFields : [$scope.vm.viewer.issueCompanyVos[0]],
                                    // issueIspFields : [$scope.vm.viewer.issueIspVos[0]],
                                    // issueHostingFields : [$scope.vm.viewer.issueHostingVos[0]],
                                };
                            parameter : {
                                partnersAll : partnersAll,
                                partners : partners,
                                issueId : $scope.vm.viewer.id,
                                projectId : $scope.vm.viewer.projectVo.id,
                            }
                        }
                    });
                }
                function getParametersAll() {
                    var params = $scope.fn.getParameters(null, $scope.vm.viewer.issueCompanyVos);
                    params = $scope.fn.getParameters(params, $scope.vm.viewer.issueIspVos);
                    params = $scope.fn.getParameters(params, $scope.vm.viewer.issueHostingVos);
                    if (params != null && params.length > 0) {
                        for (let i = 0; i < params.length; i++) {
                            params[i].id = i;
                        }
                    }
                    return params;
                }
                function getParameters(sourceArr, partnerVos) {
                    var excludeVos = sourceArr != null ? sourceArr.slice() : [];
                    angular.forEach(partnerVos, function (vo) {
                        var account = {
                            account : vo.email
                        }
                        Object.assign(vo, account)
                        excludeVos.push(vo);
                    });
                    return excludeVos;
                }
                //  변경 정보를 확인한다.
                function versionView(issueId) {
                    $uibModal.open({