OWL ITS + 탐지시스템(인터넷 진흥원)
wyu
2021-11-17 dccda7c93a2a18571fe43c5de1c66eabefc25139
src/main/webapp/scripts/app/issue/issueAdd.controller.js
@@ -16,10 +16,13 @@
                $scope.fn = {
                    cancel : cancel,    //  팝업 창 닫기
                    formSubmit : formSubmit,    //  폼 전송
                    // formCheck : formCheck,  //  폼 체크
                    formCheck : formCheck,  //  폼 체크
                    getUserListCallBack : getUserListCallBack,  //  담당자 autocomplete 페이징
                    getProjectListCallBack : getProjectListCallBack,    //  프로젝트 autocomplete 페이징
                    getCompanyFieldListCallBack : getCompanyFieldListCallBack,    //  프로젝트 autocomplete 페이징
                    getCompanyFieldListCallBack : getCompanyFieldListCallBack,    // 업체정보 autocomplete 페이징
                    getIssueDepartmentListCallBack : getIssueDepartmentListCallBack,    // 담당자 -> 담당부서 autocomplete 페이징
                    getIspFieldListCallBack : getIspFieldListCallBack,    // ISP정보 autocomplete 페이징
                    getHostingFieldListCallBack : getHostingFieldListCallBack,    // 호스팅정보 autocomplete 페이징
                    getOptionColor : getOptionColor,    //  우선순위, 중요도 색상으로 Select 태그 적용
                    onFileSelect : onFileSelect,    //  파일 첨부
                    infiniteAddForm : infiniteAddForm,  //  계속 생성
@@ -31,8 +34,7 @@
                    removeUploadFile : removeUploadFile,    //  업로드하려는 특정 파일을 삭제
                    removeManager : removeManager,  //  담당자 삭제
                    setIssueTypeTemplate : setIssueTypeTemplate,    //  이슈 유형 템플릿 적용하기
                    startExecute : startExecute, //  컨트롤 로딩시 처음으로 시작되는 함수
                    companyImport : companyImport
                    startExecute : startExecute //  컨트롤 로딩시 처음으로 시작되는 함수
                };
                $scope.vm = {
@@ -40,24 +42,41 @@
                        title : "",    //  제목
                        description : "",   //  내용
                        projects : [],  //  프로젝트
                        companyFields : [],
                        companyFields : [], // 업체정보
                        ispFields : [], // ISP 정보
                        hostingFields : [], // 호스팅정보
                        issueTypeId : "",   //  이슈 유형 아이디
                        priorityId : "",    //  우선순위 아이디
                        severityId : "",    //  중요도 아이디
                        users : [],     //  담당자
                        departments : [], // 딤당부서
                        files : [], //  업로드 파일
                        attachedFiles : [], //  섬머노트로 파일 업로드를 할 경우 서버에서 pk를 따고 issue id와 연동 작업이 필요하다.
                        startCompleteDateRange : "", //  시작일 ~ 종료일
                        detectingDateRange : "", //  탐지일
                        issueCustomFields : []  //  이슈에서 사용되는 사용자 정의 필드
                    },
                    infiniteAdd : false,    //  연속 생성
                    projectName : "",   //  프로젝트 명 검색
                    companyName : "",   //  프로젝트 명 검색
                    userName : "",  //  사용자 검색
                    companyManager : "",   //담당자
                    companyTel : "",  //전화번호
                    companyEmail : "",  //이메일
                    companyDesc : "",  //비고
                    departmentName : "",  // 부서명 검색
                    companyName : "",   // 업체명 검색
                    companyCode : "",   // 업체 코드
                    companyManager : "",   // 업체 담당자
                    companyTel : "",  // 업체 전화번호
                    companyEmail : "",  // 업체 이메일
                    companyMemo : "",  // 업체 비고
                    ispName : "", // ISP 명
                    ispCode : "", // ISP 코드
                    ispManager : "", // ISP 담당자
                    ispTel : "", // ISP 전화번호
                    ispEmail : "", // ISP 이메일
                    ispMemo : "", // ISP 비고
                    hostingName : "", // 호스팅명 검색
                    hostingManager : "", // 호스팅 담당자
                    hostingTel : "", // 호스팅 전화번호
                    hostingEmail : "", // 호스팅 이메일
                    hostingMemo : "", // 호스팅 비고
                    autoCompletePage : {
                        user : {
                            page : 0,
@@ -68,6 +87,18 @@
                            totalPage : 0
                        },
                        companyField : {
                            page : 0,
                            totalPage : 0
                        },
                        department : {
                            page : 0,
                            totalPage : 0
                        },
                        ispField : {
                            page : 0,
                            totalPage : 0
                        },
                        hostingField : {
                            page : 0,
                            totalPage : 0
                        }
@@ -83,7 +114,6 @@
                };
                angular.extend(this, $controller('autoCompleteController', {$scope : $scope, $injector : $injector}));
                function getStartProjectListCallback(result){
                    //  프로젝트 autocomplete page 업데이트
@@ -104,15 +134,6 @@
                        $scope.fn.getIssueTypeCustomFields();
                    }
                });
                function companyImport() {
                    $uibModal.open({
                        templateUrl : 'views/issue/issueCompanyFieldDetail.html',
                        size : "mg",
                        controller : 'issueCompanyFieldDetailController',
                        backdrop : 'static',
                    });
                }
                //  섬머노트 이미지 업로드
                function imageUpload($files) {
@@ -267,7 +288,7 @@
                //  담당자 삭제
                function removeManager(index) {
                    $scope.vm.form.users.splice(index, 1);
                    $scope.vm.form.departments.splice(index, 1);
                }
                //  업로드 파일 삭제
@@ -289,22 +310,60 @@
                    $scope.vm.autoCompletePage.project.totalPage = result.data.page.totalPage;
                }
                //  업체정보 autocomplete page 업데이트
                function getCompanyFieldListCallBack(result) {
                    $scope.vm.autoCompletePage.project.totalPage = result.data.page.totalPage;
                    $scope.vm.autoCompletePage.companyField.totalPage = result.data.page.totalPage;
                }
                //  폼 체크
                // function formCheck(formInvalid) {
                //     if (formInvalid) {
                //         return true;
                //     }
                //
                //     if ($scope.vm.form.projects.length < 1) {
                //         return true;
                //     }
                //
                //     return false;
                // }
                // 부서정보 autocomplete page 업데이트
                function getIssueDepartmentListCallBack(result) {
                    $scope.vm.autoCompletePage.department.totalPage = result.data.page.totalPage;
                }
                // ISP정보 autocomplete page 업데이트
                function getIspFieldListCallBack(result) {
                    $scope.vm.autoCompletePage.ispField.totalPage = result.data.page.totalPage;
                }
                // 호스팅정보 autocomplete page 업데이트
                function getHostingFieldListCallBack(result) {
                    $scope.vm.autoCompletePage.hostingField.totalPage = result.data.page.totalPage;
                }
                // 폼 체크
                function formCheck(formInvalid) {
                    if (formInvalid) {
                        return true;
                    }
                    return false;
                }
                // 업체정보 결과 값 Event 처리(set)
                $scope.$on("companyFieldEvent", function (event, result) {
                    $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.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.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() {
@@ -325,6 +384,30 @@
                        issueTypeId : $scope.vm.form.issueTypeId,   //  이슈 유형 아이디
                        priorityId : $scope.vm.form.priorityId,    //  우선순위 아이디
                        severityId : $scope.vm.form.severityId,    //  중요도 아이디
                        companyId : (function () {   //  프로젝트 아이디
                            var companyId = "";
                            if ($scope.vm.form.companyFields.length > 0) {
                                companyId = $scope.vm.form.companyFields[0].id;
                            }
                            return companyId;
                        })(),
                        ispId : (function () {
                            var ispId = "";
                            if ($scope.vm.form.ispFields.length > 0) {
                                ispId = $scope.vm.form.ispFields[0].id;
                            }
                            return ispId;
                        })(),
                        hostingId : (function () {
                            var hostingId = "";
                            if ($scope.vm.form.hostingFields.length > 0) {
                                hostingId = $scope.vm.form.hostingFields[0].id;
                            }
                            return hostingId;
                        })(),
                        userIds : (function () {
                            var userIds = [];
@@ -334,6 +417,17 @@
                            return userIds;
                        })(),
                        departmentIds : (function () {
                            var departmentIds = [];
                            angular.forEach($scope.vm.form.departments, function (department) {
                                departmentIds.push(department.id);
                            });
                            return departmentIds;
                        })(),
                        attachedFileIds : (function () {
                            var attachedFileIds = [];
@@ -345,7 +439,82 @@
                            return attachedFileIds;
                        })(),
                        startCompleteDateRange : $scope.vm.form.startCompleteDateRange,
                        detectingDateRange : $scope.vm.form.detectingDateRange,
                        companyFields : (function () {
                            var companyFields = [];
                            angular.forEach($scope.vm.form.companyFields, function (companyField) {
                                var useValues = [];
                                if (angular.isArray(companyField.useValues)) {
                                    angular.forEach(companyField.useValues, function (useValue) {
                                        useValues.push(useValue.value);
                                    });
                                }
                                else {
                                    useValues.push(companyField.useValues);
                                }
                                //  useValues 를 배열로 변환한다.
                                var temp = angular.copy(companyField);
                                temp.useValues = useValues;
                                companyFields.push(temp);
                            });
                            return companyFields;
                        })(),
                        ispFields : (function () {
                            var ispFields = [];
                            angular.forEach($scope.vm.form.ispFields, function (ispField) {
                                var useValues = [];
                                if (angular.isArray(ispField.useValues)) {
                                    angular.forEach(ispField.useValues, function (useValue) {
                                        useValues.push(useValue.value);
                                    });
                                }
                                else {
                                    useValues.push(ispField.useValues);
                                }
                                //  useValues 를 배열로 변환한다.
                                var temp = angular.copy(ispField);
                                temp.useValues = useValues;
                                ispFields.push(temp);
                            });
                            return ispFields;
                        })(),
                        hostingFields : (function () {
                            var hostingFields = [];
                            angular.forEach($scope.vm.form.hostingFields, function (hostingField) {
                                var useValues = [];
                                if (angular.isArray(hostingField.useValues)) {
                                    angular.forEach(hostingField.useValues, function (useValue) {
                                        useValues.push(useValue.value);
                                    });
                                }
                                else {
                                    useValues.push(hostingField.useValues);
                                }
                                //  useValues 를 배열로 변환한다.
                                var temp = angular.copy(hostingField);
                                temp.useValues = useValues;
                                hostingFields.push(temp);
                            });
                            return hostingFields;
                        })(),
                        issueCustomFields : (function () {    //  이슈에서 사용되는 사용자 정의 필드
                            var issueCustomFields = [];
@@ -370,7 +539,6 @@
                            return issueCustomFields;
                        })()
                    };
                    Issue.add({
                        method : "POST",
@@ -566,6 +734,7 @@
                //  최초 실행
                function startExecute() {
                    var promises = {
                        getIssueTypes : $scope.fn.getIssueTypes(),
                        getPriorities : $scope.fn.getPriorities(),