OWL ITS + 탐지시스템(인터넷 진흥원)
wyu
2021-11-24 b69416fc721e8f0eb478536bf0d98ae3f6c4811e
src/main/webapp/scripts/app/issue/issueModify.controller.js
@@ -19,6 +19,10 @@
                    formCheck : formCheck,  //  폼 체크
                    getUserListCallBack : getUserListCallBack,  //  담당자 autocomplete 페이징
                    getProjectListCallBack : getProjectListCallBack,    //  프로젝트 autocomplete 페이징
                    getIssueCompanyFieldListCallBack : getIssueCompanyFieldListCallBack,    // 업체정보 autocomplete 페이징
                    getIssueDepartmentListCallBack : getIssueDepartmentListCallBack,    // 담당자 -> 담당부서 autocomplete 페이징
                    getIssueIspFieldListCallBack : getIssueIspFieldListCallBack,    // ISP정보 autocomplete 페이징
                    getIssueHostingFieldListCallBack : getIssueHostingFieldListCallBack,    // 호스팅정보 autocomplete 페이징
                    getOptionColor : getOptionColor,    //  우선순위, 중요도 색상으로 Select 태그 적용
                    onFileSelect : onFileSelect,    //  파일 첨부
                    imageUpload : imageUpload,  //  섬머노트 이미지 업로드
@@ -30,6 +34,7 @@
                    setUseValueByIssueTypeCustomFields : setUseValueByIssueTypeCustomFields,    //  이슈에서 사용자가 선택한 사용자 정의 필드 값을 입력 폼에 셋팅한다.
                    detail : detail,    //  이슈 정보 조회
                    removeManager : removeManager,  //  담당자 삭제
                    removeDepartment : removeDepartment,  //  담당부서 삭제
                    removeUploadFile : removeUploadFile,    //  특정 파일을 삭제
                    setIssueTypeTemplate : setIssueTypeTemplate,    //  이슈 유형 템플릿 적용하기
                    startExecute : startExecute //  최초 실행
@@ -38,17 +43,21 @@
                $scope.vm = {
                    search : {
                        id : parameter.id,
                        deep : "01"    //  프로젝트 연관된 모든 정보를 어느정도까지 가져올지 결정, 01 - 사용자, 관리자 정보
                        deep : "02"    //  프로젝트 연관된 모든 정보를 어느정도까지 가져올지 결정, 01 - 사용자, 관리자 정보
                    },
                    form : {
                        title : "",    //  제목
                        description : "",   //  내용
                        projects : [],  //  프로젝트
                        issueCompanyFields : [], // 업체정보
                        issueIspFields : [], // ISP 정보
                        issueHostingFields : [], // 호스팅정보
                        issueTypeId : "",   //  이슈 유형 아이디
                        priorityId : "",    //  우선순위 아이디
                        severityId : "",    //  중요도 아이디
                        issueStatusId : "", //  이슈 상태 아이디
                        users : [],     //  담당자
                        // users : [],     //  담당자
                        departments : [], // 담당부서
                        files : [], //  업로드 파일
                        attachedFiles : [], //  섬머노트로 파일 업로드를 할 경우 서버에서 pk를 따고 issue id와 연동 작업이 필요하다.
                        startCompleteDateRange : "", //  시작일 ~ 종료일
@@ -57,12 +66,49 @@
                    },
                    projectName : "",   //  프로젝트 명 검색
                    userName : "",  //  사용자 검색
                    departmentName : "",  // 부서명 검색
                    companyId : -1,
                    companyName : "",   // 업체명 검색
                    companyCode : "",   // 업체 코드
                    companyManager : "",   // 업체 담당자
                    companyTel : "",  // 업체 전화번호
                    companyEmail : "",  // 업체 이메일
                    companyMemo : "",  // 업체 비고
                    ispId : -1,
                    ispName : "", // ISP 명
                    ispCode : "", // ISP 코드
                    ispManager : "", // ISP 담당자
                    ispTel : "", // ISP 전화번호
                    ispEmail : "", // ISP 이메일
                    ispMemo : "", // ISP 비고
                    hostingId : -1,
                    hostingName : "", // 호스팅명 검색
                    hostingManager : "", // 호스팅 담당자
                    hostingTel : "", // 호스팅 전화번호
                    hostingEmail : "", // 호스팅 이메일
                    hostingMemo : "", // 호스팅 비고
                    autoCompletePage : {
                        user : {
                        // user : {
                        //     page : 0,
                        //     totalPage : 0
                        // },
                        project : {
                            page : 0,
                            totalPage : 0
                        },
                        project : {
                        issueCompanyField : {
                            page : 0,
                            totalPage : 0
                        },
                        department : {
                            page : 0,
                            totalPage : 0
                        },
                        ispField : {
                            page : 0,
                            totalPage : 0
                        },
                        hostingField : {
                            page : 0,
                            totalPage : 0
                        }
@@ -79,11 +125,11 @@
                angular.extend(this, $controller('autoCompleteController', {$scope : $scope, $injector : $injector}));
                //  프로젝트가 변경되면 담당자 초기화
                //  프로젝트가 변경되면 담당부서 초기화
                $scope.$watch("vm.form.projects", function (newValue, oldValue) {
                    if (angular.isDefined(newValue)) {
                        if (newValue.length < 1) {
                            $scope.vm.form.users = [];
                            $scope.vm.form.departments = [];
                            $scope.vm.form.issueCustomFields = [];
                        }
                        else {
@@ -115,8 +161,13 @@
                }
                //  담당자 삭제
                function removeManager(index) {
                    $scope.vm.form.users.splice(index, 1);
                 function removeManager(index) {
                     $scope.vm.form.users.splice(index, 1);
                 }
                // 담당부서 삭제
                function removeDepartment(index) {
                    $scope.vm.form.departments.splice(index, 1);
                }
                //  섬머노트 이미지 업로드
@@ -262,6 +313,27 @@
                    $scope.vm.autoCompletePage.project.totalPage = result.data.page.totalPage;
                }
                //  업체정보 autocomplete page 업데이트
                function getIssueCompanyFieldListCallBack(result) {
                    $scope.vm.autoCompletePage.issueCompanyField.totalPage = result.data.page.totalPage;
                }
                // 부서정보 autocomplete page 업데이트
                function getIssueDepartmentListCallBack(result) {
                    $scope.vm.autoCompletePage.department.totalPage = result.data.page.totalPage;
                }
                // ISP정보 autocomplete page 업데이트
                function getIssueIspFieldListCallBack(result) {
                    $scope.vm.autoCompletePage.ispField.totalPage = result.data.page.totalPage;
                }
                // 호스팅정보 autocomplete page 업데이트
                function getIssueHostingFieldListCallBack(result) {
                    $scope.vm.autoCompletePage.hostingField.totalPage = result.data.page.totalPage;
                }
                function formCheck(formInvalid) {
                    if (formInvalid) {
                        return true;
@@ -274,6 +346,39 @@
                    return false;
                }
                // 업체정보 결과 값 Event 처리(set)
                $scope.$on("companyFieldEvent", function (event, result) {
                    $scope.vm.companyId = result[0].id;
                    $scope.vm.companyName = result[0].name;
                    $scope.vm.companyManager = result[0].manager;
                    $scope.vm.companyTel = result[0].tel;
                    $scope.vm.companyEmail = result[0].email;
                    $scope.vm.companyMemo = result[0].memo;
                });
                // ISP정보 결과 값 Event 처리(set)
                $scope.$on("ispFieldEvent", function (event, result) {
                    $scope.vm.ispId = result[0].id;
                    $scope.vm.ispName = result[0].name;
                    $scope.vm.ispCode = result[0].code;
                    $scope.vm.ispManager = result[0].manager;
                    $scope.vm.ispTel = result[0].tel;
                    $scope.vm.ispEmail = result[0].email;
                    $scope.vm.ispMemo = result[0].memo;
                });
                // 호스팅정보 결과 값 Event 처리(set)
                $scope.$on("hostingFieldEvent", function (event, result) {
                    $scope.vm.hostingId = result[0].id;
                    $scope.vm.hostingName = result[0].name;
                    $scope.vm.hostingCode = result[0].code;
                    $scope.vm.hostingManager = result[0].manager;
                    $scope.vm.hostingTel = result[0].tel;
                    $scope.vm.hostingEmail = result[0].email;
                    $scope.vm.hostingMemo = result[0].memo;
                });
                function formSubmit() {
                    $rootScope.spinner = true;
@@ -281,6 +386,24 @@
                        id : parameter.id,
                        title : $rootScope.preventXss($scope.vm.form.title),    //  제목
                        description : $rootScope.preventXss($scope.vm.form.description),   //  내용
                        companyName : $scope.vm.companyName,
                        companyManager : $scope.vm.companyManager,
                        companyTel : $scope.vm.companyTel,
                        companyEmail :$scope.vm.companyEmail,
                        companyMemo : $scope.vm.companyMemo,
                        ispName : $scope.vm.ispName,
                        ispCode : $scope.vm.ispCode,
                        ispManager : $scope.vm.ispManager,
                        ispTel : $scope.vm.ispTel,
                        ispEmail : $scope.vm.ispEmail,
                        ispMemo : $scope.vm.ispMemo,
                        hostingName : $scope.vm.hostingName,
                        hostingCode : $scope.vm.hostingCode,
                        hostingManager : $scope.vm.hostingManager,
                        hostingTel : $scope.vm.hostingTel,
                        hostingEmail : $scope.vm.hostingEmail,
                        hostingMemo : $scope.vm.hostingMemo,
                        projectId : (function () {   //  프로젝트 아이디
                            var projectId = "";
@@ -290,10 +413,42 @@
                            return projectId;
                        })(),
                        issueTypeId : $scope.vm.form.issueTypeId,   //  이슈 유형 아이디
                        priorityId : $scope.vm.form.priorityId,    //  우선순위 아이디
                        severityId : $scope.vm.form.severityId,    //  중요도 아이디
                        issueStatusId : $scope.vm.form.issueStatusId,   //  이슈 상태 아이디
                        companyId : (function () {
                            var companyId = -1;
                            if ($scope.vm.form.issueCompanyFields.length > 0) {
                                companyId = $scope.vm.form.issueCompanyFields[0].id;
                            }
                            return companyId;
                        }),
                        ispId : (function () {
                            var ispId = -1;
                            if ($scope.vm.form.issueIspFields.length > 0) {
                                ispId = $scope.vm.form.issueIspFields[0].id;
                            }
                            return ispId;
                        }),
                        hostingId : (function () {
                            var hostingId = -1;
                            if ($scope.vm.form.issueHostingFields.length > 0) {
                                hostingId = $scope.vm.form.issueHostingFields[0].id;
                            }
                            return hostingId;
                        }),
                        userIds : (function () {
                            var userIds = [];
@@ -303,7 +458,16 @@
                            return userIds;
                        })(),
                        removeFiles : $scope.vm.form.removeFiles,
                        departmentIds : (function () {
                            var departmentIds = [];
                            angular.forEach($scope.vm.form.departments, function (department) {
                                departmentIds.push(department.id);
                            });
                            return departmentIds;
                        })(),
                        attachedFileIds : (function () {
                            var attachedFileIds = [];
@@ -315,7 +479,71 @@
                            return attachedFileIds;
                        })(),
                        issueCompanyFields : (function () {
                            var issueCompanyFields = [];
                            if ($scope.vm.form.issueCompanyFields != null && $scope.vm.form.issueCompanyFields.length > 0 ){
                                var companyField = $scope.vm.form.issueCompanyFields[0];
                                issueCompanyFields.push({
                                    id : companyField.id,
                                    companyId : $scope.vm.companyId,
                                    name : $scope.vm.companyName,
                                    manager : $scope.vm.companyManager,
                                    tel : $scope.vm.companyTel,
                                    email :$scope.vm.companyEmail,
                                    memo : $scope.vm.companyMemo
                                });
                            }
                            return issueCompanyFields;
                        })(),
                        issueIspFields : (function () {
                            var issueIspFields = [];
                            if ($scope.vm.form.issueIspFields != null && $scope.vm.form.issueIspFields.length > 0 ){
                                var ispField = $scope.vm.form.issueIspFields[0];
                                issueIspFields.push({
                                    id : ispField.id,
                                    ispId : $scope.vm.ispId,
                                    code : $scope.vm.ispCode,
                                    name : $scope.vm.ispName,
                                    manager : $scope.vm.ispManager,
                                    tel : $scope.vm.ispTel,
                                    email :$scope.vm.ispEmail,
                                    memo : $scope.vm.ispMemo
                                });
                            }
                            return issueIspFields;
                        })(),
                        issueHostingFields : (function () {
                            var issueHostingFields = [];
                            if ($scope.vm.form.issueHostingFields != null && $scope.vm.form.issueHostingFields.length > 0 ){
                                var hostingField = $scope.vm.form.issueHostingFields[0];
                                issueHostingFields.push({
                                    id : hostingField.id,
                                    hostingId : $scope.vm.hostingId,
                                    name : $scope.vm.hostingName,
                                    code : $scope.vm.hostingCode,
                                    manager : $scope.vm.hostingManager,
                                    tel : $scope.vm.hostingTel,
                                    email :$scope.vm.hostingEmail,
                                    memo : $scope.vm.hostingMemo
                                });
                            }
                            return issueHostingFields;
                        })(),
                        removeFiles : $scope.vm.form.removeFiles,
                        startCompleteDateRange : $scope.vm.form.startCompleteDateRange,
                        issueCustomFields : (function () {    //  이슈에서 사용되는 사용자 정의 필드
                            var issueCustomFields = [];
@@ -534,15 +762,53 @@
                            if (angular.isDefined(result.data.data)) {
                                $scope.vm.form.title = result.data.data.title;
                                $scope.vm.form.description = result.data.data.description;
                                $scope.vm.form.projects.push(result.data.data.projectVo);
                                $scope.vm.projectName = result.data.data.projectVo.name;
                                $scope.vm.form.issueTypeId = String(result.data.data.issueTypeVo.id);
                                $scope.vm.form.priorityId = String(result.data.data.priorityVo.id);
                                $scope.vm.form.severityId = String(result.data.data.severityVo.id);
                                $scope.vm.form.issueStatusId = String(result.data.data.issueStatusVo.id);
                                $scope.vm.form.users = result.data.data.userVos;
                                $scope.vm.form.departments = result.data.data.departmentVos;
                                $scope.vm.form.files = result.data.data.attachedFileVos;
                                if (result.data.data.issueCompanyVos != null && result.data.data.issueCompanyVos.length > 0) {
                                    $scope.vm.form.issueCompanyFields = result.data.data.issueCompanyVos;
                                    var issueCompanyFieldValue = result.data.data.issueCompanyVos[0];
                                    $scope.vm.companyId = issueCompanyFieldValue.id;
                                    $scope.vm.companyName = issueCompanyFieldValue.name;
                                    $scope.vm.companyManager = issueCompanyFieldValue.manager;
                                    $scope.vm.companyTel = issueCompanyFieldValue.tel;
                                    $scope.vm.companyEmail = issueCompanyFieldValue.email;
                                    $scope.vm.companyMemo = issueCompanyFieldValue.memo;
                                }
                                if (result.data.data.issueIspVos != null && result.data.data.issueIspVos.length > 0) {
                                    $scope.vm.form.issueIspFields = result.data.data.issueIspVos;
                                    var issueIspFieldValue = result.data.data.issueIspVos[0];
                                    $scope.vm.ispId = issueIspFieldValue.id;
                                    $scope.vm.ispName = issueIspFieldValue.name;
                                    $scope.vm.ispCode = issueIspFieldValue.code;
                                    $scope.vm.ispManager = issueIspFieldValue.manager;
                                    $scope.vm.ispTel = issueIspFieldValue.tel;
                                    $scope.vm.ispEmail = issueIspFieldValue.email;
                                    $scope.vm.ispMemo = issueIspFieldValue.memo;
                                }
                                if (result.data.data.issueHostingVos != null && result.data.data.issueHostingVos.length > 0) {
                                    $scope.vm.form.issueHostingFields = result.data.data.issueHostingVos;
                                    var issueHostingFieldValue = result.data.data.issueHostingVos[0];
                                    $scope.vm.hostingId = issueHostingFieldValue.id;
                                    $scope.vm.hostingName = issueHostingFieldValue.name;
                                    $scope.vm.hostingCode = issueHostingFieldValue.code;
                                    $scope.vm.hostingManager = issueHostingFieldValue.manager;
                                    $scope.vm.hostingTel = issueHostingFieldValue.tel;
                                    $scope.vm.hostingEmail = issueHostingFieldValue.email;
                                    $scope.vm.hostingMemo = issueHostingFieldValue.memo;
                                }
                                if ($rootScope.isDefined(result.data.data.startDate)) {
                                    $scope.vm.form.startCompleteDateRange = result.data.data.startDate + " ~ " + result.data.data.completeDate;
                                }