OWL ITS + 탐지시스템(인터넷 진흥원)
wyu
2021-11-18 a9104b7bc9016b32f43f4fcbe4e3d7b29edef3b3
이슈 수정 진행[프론트]
9개 파일 변경됨
427 ■■■■■ 파일 변경됨
src/main/webapp/assets/styles/main.css 4 ●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/webapp/i18n/ko/global.json 4 ●●● 패치 | 보기 | raw | blame | 히스토리
src/main/webapp/scripts/app/issue/issueAdd.controller.js 64 ●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/webapp/scripts/app/issue/issueModify.controller.js 149 ●●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/webapp/scripts/components/utils/autoComplete.controller.js 12 ●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/webapp/views/issue/issueAdd.html 14 ●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/webapp/views/issue/issueCompanyFieldDetail.html 6 ●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/webapp/views/issue/issueDetail.html 160 ●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/webapp/views/issue/issueModify.html 14 ●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/webapp/assets/styles/main.css
@@ -30203,4 +30203,8 @@
    color: #282c34;
    font-size: 15px;
}
.country {
    margin-left: 3.25rem;
}
/* 간트차트 end */
src/main/webapp/i18n/ko/global.json
@@ -782,7 +782,9 @@
        "departmentUser": "부서 팀원",
        "detectingInfo": "탐지정보",
        "detectingData": "탐지일시",
        "import": "가져오기"
        "import": "가져오기",
        "diffuserURL": "유포자URL",
        "country": "국가"
    },
    "tasks": {
        "agileBoardTitle": "칸반 보드"
src/main/webapp/scripts/app/issue/issueAdd.controller.js
@@ -19,10 +19,10 @@
                    formCheck : formCheck,  //  폼 체크
                    getUserListCallBack : getUserListCallBack,  //  담당자 autocomplete 페이징
                    getProjectListCallBack : getProjectListCallBack,    //  프로젝트 autocomplete 페이징
                    getCompanyFieldListCallBack : getCompanyFieldListCallBack,    // 업체정보 autocomplete 페이징
                    getIssueCompanyFieldListCallBack : getIssueCompanyFieldListCallBack,    // 업체정보 autocomplete 페이징
                    getIssueDepartmentListCallBack : getIssueDepartmentListCallBack,    // 담당자 -> 담당부서 autocomplete 페이징
                    getIspFieldListCallBack : getIspFieldListCallBack,    // ISP정보 autocomplete 페이징
                    getHostingFieldListCallBack : getHostingFieldListCallBack,    // 호스팅정보 autocomplete 페이징
                    getIssueIspFieldListCallBack : getIssueIspFieldListCallBack,    // ISP정보 autocomplete 페이징
                    getIssueHostingFieldListCallBack : getIssueHostingFieldListCallBack,    // 호스팅정보 autocomplete 페이징
                    getOptionColor : getOptionColor,    //  우선순위, 중요도 색상으로 Select 태그 적용
                    onFileSelect : onFileSelect,    //  파일 첨부
                    infiniteAddForm : infiniteAddForm,  //  계속 생성
@@ -42,9 +42,9 @@
                        title : "",    //  제목
                        description : "",   //  내용
                        projects : [],  //  프로젝트
                        companyFields : [], // 업체정보
                        ispFields : [], // ISP 정보
                        hostingFields : [], // 호스팅정보
                        issueCompanyFields : [], // 업체정보
                        issueIspFields : [], // ISP 정보
                        issueHostingFields : [], // 호스팅정보
                        issueTypeId : "",   //  이슈 유형 아이디
                        priorityId : "",    //  우선순위 아이디
                        severityId : "",    //  중요도 아이디
@@ -61,7 +61,6 @@
                    userName : "",  //  사용자 검색
                    departmentName : "",  // 부서명 검색
                    companyName : "",   // 업체명 검색
                    companyCode : "",   // 업체 코드
                    companyManager : "",   // 업체 담당자
                    companyTel : "",  // 업체 전화번호
                    companyEmail : "",  // 업체 이메일
@@ -311,7 +310,7 @@
                }
                //  업체정보 autocomplete page 업데이트
                function getCompanyFieldListCallBack(result) {
                function getIssueCompanyFieldListCallBack(result) {
                    $scope.vm.autoCompletePage.companyField.totalPage = result.data.page.totalPage;
                }
@@ -321,12 +320,12 @@
                }
                // ISP정보 autocomplete page 업데이트
                function getIspFieldListCallBack(result) {
                function getIssueIspFieldListCallBack(result) {
                    $scope.vm.autoCompletePage.ispField.totalPage = result.data.page.totalPage;
                }
                // 호스팅정보 autocomplete page 업데이트
                function getHostingFieldListCallBack(result) {
                function getIssueHostingFieldListCallBack(result) {
                    $scope.vm.autoCompletePage.hostingField.totalPage = result.data.page.totalPage;
                }
@@ -387,26 +386,26 @@
                        issueTypeId : $scope.vm.form.issueTypeId,   //  이슈 유형 아이디
                        priorityId : $scope.vm.form.priorityId,    //  우선순위 아이디
                        severityId : $scope.vm.form.severityId,    //  중요도 아이디
                        companyId : (function () {   //  프로젝트 아이디
                        companyId : (function () {   //  업체 아이디
                            var companyId = "";
                            if ($scope.vm.form.companyFields.length > 0) {
                                companyId = $scope.vm.form.companyFields[0].id;
                            if ($scope.vm.form.issueCompanyFields.length > 0) {
                                companyId = $scope.vm.form.issueCompanyFields[0].id;
                            }
                            return companyId;
                        })(),
                        ispId : (function () {
                        ispId : (function () {  // ISP 아이디
                            var ispId = "";
                            if ($scope.vm.form.ispFields.length > 0) {
                                ispId = $scope.vm.form.ispFields[0].id;
                            if ($scope.vm.form.issueIspFields.length > 0) {
                                ispId = $scope.vm.form.issueIspFields[0].id;
                            }
                            return ispId;
                        })(),
                        hostingId : (function () {
                        hostingId : (function () {  // Hosting 아이디
                            var hostingId = "";
                            if ($scope.vm.form.hostingFields.length > 0) {
                                hostingId = $scope.vm.form.hostingFields[0].id;
                            if ($scope.vm.form.issueHostingFields.length > 0) {
                                hostingId = $scope.vm.form.issueHostingFields[0].id;
                            }
                            return hostingId;
                        })(),
@@ -447,36 +446,33 @@
                        detectingDateRange : $scope.vm.form.detectingDateRange,
                        issueCompanyFields : (function () {
                            var companyFields = [];
                            var issueCompanyFields = [];
                            var  companyField = $scope.vm.form.companyFields[0];
                            var companyField = $scope.vm.form.issueCompanyFields[0];
                            companyField.companyId = companyField.id;
                            companyField.id = null;
                            companyFields.push(companyField);
                            issueCompanyFields.push(companyField);
                            return companyFields;
                            return issueCompanyFields;
                        })(),
                        issueIspFields : (function () {
                            var ispFields = [];
                            var issueIspFields = [];
                            var  ispField = $scope.vm.form.ispFields[0];
                            var ispField = $scope.vm.form.issueIspFields[0];
                            ispField.ispId = ispField.id;
                            ispField.id = null;
                            ispFields.push(ispField);
                            return ispFields;
                            issueIspFields.push(ispField);
                            return issueIspFields;
                        })(),
                        issueHostingFields : (function () {
                            var hostingFields = [];
                            var issueHostingFields = [];
                            var  hostingField = $scope.vm.form.hostingFields[0];
                            var hostingField = $scope.vm.form.issueHostingFields[0];
                            hostingField.hostingId = hostingField.id;
                            hostingField.id = null;
                            hostingFields.push(hostingField);
                            return hostingFields;
                            issueHostingFields.push(hostingField);
                            return issueHostingFields;
                        })(),
                        issueCustomFields : (function () {    //  이슈에서 사용되는 사용자 정의 필드
src/main/webapp/scripts/app/issue/issueModify.controller.js
@@ -19,10 +19,10 @@
                    formCheck : formCheck,  //  폼 체크
                    getUserListCallBack : getUserListCallBack,  //  담당자 autocomplete 페이징
                    getProjectListCallBack : getProjectListCallBack,    //  프로젝트 autocomplete 페이징
                    getCompanyFieldListCallBack : getCompanyFieldListCallBack,    // 업체정보 autocomplete 페이징
                    getIssueCompanyFieldListCallBack : getIssueCompanyFieldListCallBack,    // 업체정보 autocomplete 페이징
                    getIssueDepartmentListCallBack : getIssueDepartmentListCallBack,    // 담당자 -> 담당부서 autocomplete 페이징
                    getIspFieldListCallBack : getIspFieldListCallBack,    // ISP정보 autocomplete 페이징
                    getHostingFieldListCallBack : getHostingFieldListCallBack,    // 호스팅정보 autocomplete 페이징
                    getIssueIspFieldListCallBack : getIssueIspFieldListCallBack,    // ISP정보 autocomplete 페이징
                    getIssueHostingFieldListCallBack : getIssueHostingFieldListCallBack,    // 호스팅정보 autocomplete 페이징
                    getOptionColor : getOptionColor,    //  우선순위, 중요도 색상으로 Select 태그 적용
                    onFileSelect : onFileSelect,    //  파일 첨부
                    imageUpload : imageUpload,  //  섬머노트 이미지 업로드
@@ -49,9 +49,9 @@
                        title : "",    //  제목
                        description : "",   //  내용
                        projects : [],  //  프로젝트
                        companyFields : [], // 업체정보
                        ispFields : [], // ISP 정보
                        hostingFields : [], // 호스팅정보
                        issueCompanyFields : [], // 업체정보
                        issueIspFields : [], // ISP 정보
                        issueHostingFields : [], // 호스팅정보
                        issueTypeId : "",   //  이슈 유형 아이디
                        priorityId : "",    //  우선순위 아이디
                        severityId : "",    //  중요도 아이디
@@ -93,7 +93,7 @@
                            page : 0,
                            totalPage : 0
                        },
                        companyField : {
                        issueCompanyField : {
                            page : 0,
                            totalPage : 0
                        },
@@ -311,8 +311,8 @@
                }
                //  업체정보 autocomplete page 업데이트
                function getCompanyFieldListCallBack(result) {
                    $scope.vm.autoCompletePage.companyField.totalPage = result.data.page.totalPage;
                function getIssueCompanyFieldListCallBack(result) {
                    $scope.vm.autoCompletePage.issueCompanyField.totalPage = result.data.page.totalPage;
                }
                // 부서정보 autocomplete page 업데이트
@@ -321,12 +321,12 @@
                }
                // ISP정보 autocomplete page 업데이트
                function getIspFieldListCallBack(result) {
                function getIssueIspFieldListCallBack(result) {
                    $scope.vm.autoCompletePage.ispField.totalPage = result.data.page.totalPage;
                }
                // 호스팅정보 autocomplete page 업데이트
                function getHostingFieldListCallBack(result) {
                function getIssueHostingFieldListCallBack(result) {
                    $scope.vm.autoCompletePage.hostingField.totalPage = result.data.page.totalPage;
                }
@@ -345,6 +345,7 @@
                // 업체정보 결과 값 Event 처리(set)
                $scope.$on("companyFieldEvent", function (event, result) {
                    $scope.vm.issuecompanyId = result[0].id;
                    $scope.vm.companyManager = result[0].manager;
                    $scope.vm.companyTel = result[0].tel;
                    $scope.vm.companyEmail = result[0].email;
@@ -387,20 +388,20 @@
                            return projectId;
                        })(),
                        companyId : (function () {   //  프로젝트 아이디
                            var companyId = "";
                            var issueCompanyId = "";
                            if ($scope.vm.form.companyFields.length > 0) {
                                companyId = $scope.vm.form.companyFields[0].id;
                            if ($scope.vm.form.issueCompanyFields.length > 0) {
                                issueCompanyId = $scope.vm.form.issueCompanyFields[0].id;
                            }
                            return companyId;
                            return issueCompanyId;
                        })(),
                        ispId : (function () {
                            var ispId = "";
                            if ($scope.vm.form.ispFields.length > 0) {
                                ispId = $scope.vm.form.ispFields[0].id;
                            if ($scope.vm.form.issueIspFields.length > 0) {
                                ispId = $scope.vm.form.issueIspFields[0].id;
                            }
                            return ispId;
@@ -408,8 +409,8 @@
                        hostingId : (function () {
                            var hostingId = "";
                            if ($scope.vm.form.hostingFields.length > 0) {
                                hostingId = $scope.vm.form.hostingFields[0].id;
                            if ($scope.vm.form.issueHostingFields.length > 0) {
                                hostingId = $scope.vm.form.issueHostingFields[0].id;
                            }
                            return hostingId;
@@ -451,76 +452,37 @@
                        })(),
                        startCompleteDateRange : $scope.vm.form.startCompleteDateRange,
                        companyFields : (function () {
                            var companyFields = [];
                        issueCompanyFields : (function () {
                            var issueCompanyFields = [];
                            angular.forEach($scope.vm.form.companyFields, function (companyField) {
                                var useValues = [];
                            var issueCompanyField = $scope.vm.form.issueCompanyFields[0];
                            issueCompanyFields.companyId = issueCompanyField.id;
                            issueCompanyField.id = null;
                            issueCompanyFields.push(issueCompanyField);
                                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;
                            return issueCompanyFields;
                        })(),
                        ispFields : (function () {
                            var ispFields = [];
                        issueIspFields : (function () {
                            var issueIspFields = [];
                            angular.forEach($scope.vm.form.ispFields, function (ispField) {
                                var useValues = [];
                            var ispField = $scope.vm.form.issueIspFields[0];
                            issueIspFields.ispId = ispField.id;
                            ispField.id = null;
                            issueIspFields.push(ispField);
                                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;
                            return issueIspFields;
                        })(),
                        hostingFields : (function () {
                            var hostingFields = [];
                        issueHostingFields : (function () {
                            var issueHostingFields = [];
                            angular.forEach($scope.vm.form.hostingFields, function (hostingField) {
                                var useValues = [];
                            var hostingField = $scope.vm.form.issueHostingFields[0];
                            issueHostingFields.hostingId = hostingField.id;
                            hostingField.id = null;
                            issueHostingFields.push(hostingField);
                                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;
                            return issueHostingFields;
                        })(),
                        issueCustomFields : (function () {    //  이슈에서 사용되는 사용자 정의 필드
@@ -753,30 +715,13 @@
                                $scope.vm.form.users = result.data.data.userVos;
                                $scope.vm.form.departments = result.data.data.departmentVos;
                                $scope.vm.form.files = result.data.data.attachedFileVos;
                                // issueVo 에 get & set 설정값 설정 ex)issueCompanyVos
                                $scope.vm.form.issueCompanyFields = result.data.data.issueCompanyVos;
                                //
                                $scope.vm.form.companyFields.push(result.data.data.companyFieldVo);
                                $scope.vm.companyName = result.data.data.companyFieldVo.name;
                                $scope.vm.companyManager = result.data.data.companyFieldVo.manager;
                                $scope.vm.companyTel = result.data.data.companyFieldVo.tel;
                                $scope.vm.companyEmail = result.data.data.companyFieldVo.email;
                                $scope.vm.companyMemo = result.data.data.companyFieldVo.memo;
                                $scope.vm.form.ispFields.push(result.data.data.ispFieldVo);
                                $scope.vm.ispName = result.data.data.ispFieldVo.name;
                                $scope.vm.ispCode = result.data.data.ispFieldVo.code;
                                $scope.vm.ispManager = result.data.data.ispFieldVo.manager;
                                $scope.vm.ispTel = result.data.data.ispFieldVo.tel;
                                $scope.vm.ispEmail = result.data.data.ispFieldVo.email;
                                $scope.vm.ispMemo = result.data.data.ispFieldVo.memo;
                                $scope.vm.form.hostingFields.push(result.data.data.hostingFieldVo);
                                $scope.vm.hostingName = result.data.data.hostingFieldVo.name;
                                $scope.vm.hostingCode = result.data.data.hostingFieldVo.code;
                                $scope.vm.hostingManager = result.data.data.hostingFieldVo.manager;
                                $scope.vm.hostingTel = result.data.data.hostingFieldVo.tel;
                                $scope.vm.hostingEmail = result.data.data.hostingFieldVo.email;
                                $scope.vm.hostingMemo = result.data.data.hostingFieldVo.memo;
                                $scope.vm.form.issueIspFields = result.data.data.issueIspVos;
                                //
                                $scope.vm.form.issueHostingFields = result.data.data.issueHostingVos;
                                //
                                if ($rootScope.isDefined(result.data.data.startDate)) {
                                    $scope.vm.form.startCompleteDateRange = result.data.data.startDate + " ~ " + result.data.data.completeDate;
                                }
src/main/webapp/scripts/components/utils/autoComplete.controller.js
@@ -31,10 +31,10 @@
                $scope.fn.getIssueList = getIssueList;  //  일감 목록 정보를 조회한다.
                $scope.fn.getWorkflowList = getWorkflowList;    //  워크플로우 목록 정보를 조회한다.
                $scope.fn.getUserDepartmentList = getUserDepartmentList;    //  부서 목록 정보를 조회한다.
                $scope.fn.getCompanyFieldList = getCompanyFieldList;    //  업체 목록 정보를 조회한다.
                $scope.fn.getIssueCompanyFieldList = getIssueCompanyFieldList;    //  업체 목록 정보를 조회한다.
                $scope.fn.getIssueDepartmentList = getIssueDepartmentList;    //  담당자 -> 담당부서 목록 정보를 조회한다.
                $scope.fn.getIspFieldList = getIspFieldList;    //  ISP 목록 정보를 조회한다.
                $scope.fn.getHostingFieldList = getHostingFieldList;    //  호스팅 목록 정보를 조회한다.
                $scope.fn.getIssueIspFieldList = getIssueIspFieldList;    //  ISP 목록 정보를 조회한다.
                $scope.fn.getIssueHostingFieldList = getIssueHostingFieldList;    //  호스팅 목록 정보를 조회한다.
                function getUserList(query, excludeList, page, callBack) {
                    var conditions = {
@@ -218,7 +218,7 @@
                    return deferred.promise;
                }
                function getCompanyFieldList(query, excludeList, page, callBack) {
                function getIssueCompanyFieldList(query, excludeList, page, callBack) {
                    var conditions = {
                        companyName : query,
                        excludeIds : (function () {
@@ -289,7 +289,7 @@
                    return deferred.promise;
                }
                function getIspFieldList(query, excludeList, page, callBack) {
                function getIssueIspFieldList(query, excludeList, page, callBack) {
                    var conditions = {
                        ispName : query,
                        excludeIds : (function () {
@@ -324,7 +324,7 @@
                    return deferred.promise;
                }
                function getHostingFieldList(query, excludeList, page, callBack) {
                function getIssueHostingFieldList(query, excludeList, page, callBack) {
                    var conditions = {
                        hostingName : query,
                        excludeIds : (function () {
src/main/webapp/views/issue/issueAdd.html
@@ -282,10 +282,10 @@
                <div class="col-lg-4">
                    <div class="form-group mb10">
                        <label class="issue-label"> <span translate="companyField.name">업체이름</span> </label>
                        <js-autocomplete-single data-input-name="companyField"
                                                selected-model="vm.form.companyFields"
                        <js-autocomplete-single data-input-name="issueCompanyField"
                                                selected-model="vm.form.issueCompanyFields"
                                                search="vm.companyName"
                                                source="fn.getCompanyFieldList(vm.companyName, vm.form.companyFields, vm.autoCompletePage.companyField.page, fn.getCompanyFieldListCallBack)"
                                                source="fn.getIssueCompanyFieldList(vm.companyName, vm.form.issueCompanyFields, vm.autoCompletePage.companyField.page, fn.getIssueCompanyFieldListCallBack)"
                                                page="vm.autoCompletePage.companyField.page"
                                                total-page="vm.autoCompletePage.companyField.totalPage"
                                                input-disabled="false"
@@ -375,9 +375,9 @@
                    <div class="form-group mb10">
                        <label class="issue-label"> <span translate="ispField.name">ISP 이름</span> </label>
                        <js-autocomplete-single data-input-name="ispField"
                                                selected-model="vm.form.ispFields"
                                                selected-model="vm.form.issueIspFields"
                                                search="vm.ispName"
                                                source="fn.getIspFieldList(vm.ispName, vm.form.ispFields, vm.autoCompletePage.ispField.page, fn.getIspFieldListCallBack)"
                                                source="fn.getIssueIspFieldList(vm.ispName, vm.form.issueIspFields, vm.autoCompletePage.ispField.page, fn.getIssueIspFieldListCallBack)"
                                                page="vm.autoCompletePage.ispField.page"
                                                total-page="vm.autoCompletePage.ispField.totalPage"
                                                input-disabled="false"
@@ -481,9 +481,9 @@
                    <div class="form-group mb10">
                        <label class="issue-label"> <span translate="hostingField.name">호스팅 이름</span> </label>
                        <js-autocomplete-single data-input-name="hostingField"
                                                selected-model="vm.form.hostingFields"
                                                selected-model="vm.form.issueHostingFields"
                                                search="vm.hostingName"
                                                source="fn.getHostingFieldList(vm.hostingName, vm.form.hostingFields, vm.autoCompletePage.hostingField.page, fn.getHostingFieldListCallBack)"
                                                source="fn.getIssueHostingFieldList(vm.hostingName, vm.form.issueHostingFields, vm.autoCompletePage.hostingField.page, fn.getIssueHostingFieldListCallBack)"
                                                page="vm.autoCompletePage.hostingField.page"
                                                total-page="vm.autoCompletePage.hostingField.totalPage"
                                                input-disabled="false"
src/main/webapp/views/issue/issueCompanyFieldDetail.html
@@ -13,10 +13,10 @@
            <div class="form-group">
                <label><span translate="companyField.name">업체 이름</span>
                       <code class="highlighter-rouge">*</code></label>
                <js-autocomplete-single data-input-name="companyField"
                                        selected-model="vm.form.companyFields"
                <js-autocomplete-single data-input-name="issueCompanyField"
                                        selected-model="vm.form.issueCompanyFields"
                                        search="vm.companyName"
                                        source="fn.getCompanyFieldList(vm.companyName, vm.form.companyFields, vm.autoCompletePage.companyField.page,fn.getCompanyFieldListCallBack)"
                                        source="fn.getIssueCompanyFieldList(vm.companyName, vm.form.issueCompanyFields, vm.autoCompletePage.companyField.page,fn.getIssueCompanyFieldListCallBack)"
                                        page="vm.autoCompletePage.companyField.page"
                                        total-page="vm.autoCompletePage.companyField.totalPage"
                                        input-disabled="false"
src/main/webapp/views/issue/issueDetail.html
@@ -53,7 +53,7 @@
        </div>
    </div>
-->
    <!-- 테이블 -->
<!-- 테이블 -->
<!--
    <div class="support-ticket ">
        <div class="st-body">
@@ -64,7 +64,7 @@
        </div>
    </div>
-->
    <!--    페이징 -->
<!--    페이징 -->
<!--
    <div class="controls-below-table text-center">
        <ul uib-pagination
@@ -88,13 +88,34 @@
    <div class="support-ticket-content">
        <div class="support-ticket-content-header issue-detail-word-break">
            <h3 class="ticket-header">
                <div class="tasks-header-w mb-10">
                <div class="tasks-header-w">
                    <span class="tags">
                        <span class="tag">{{vm.viewer.projectVo.projectKey}}-{{vm.viewer.issueNumber}} &nbsp; / &nbsp; {{vm.viewer.projectVo.name}}</span>
                    </span>
                </div>
                {{vm.viewer.title}}
            </h3>
            <div class="col-sm-2">
                <div class="form-group">
                    <label class="issue-detail-label"><span translate="issue.issueType">이슈 타입</span> </label>
                    <span class="status-pill smaller"
                          ng-style="{'background-color': vm.viewer.issueTypeVo.color }"></span><span>{{vm.viewer.issueTypeVo.name}}</span>
                </div>
            </div>
            <div class="col-sm-2">
                <div class="form-group">
                    {{vm.viewer.registerDate}}
                </div>
            </div>
            <div class="form-group">
                <label class="issue-detail-label"><span translate="common.register">등록자</span></label>
                <span class="select3-selection__choice">
                        <span class="avatar-w"><img ng-src="{{vm.viewer.registerVo.profile}}"></span>
                        <span>{{vm.viewer.registerVo.byName}}</span>
                    </span>
            </div>
            <a class="show-ticket-info cursor">
                <i class="os-icon os-icon-email-forward mr-20" ng-click="fn.sendMail(vm.viewer.id, vm.viewer.projectVo.id)" data-toggle="tooltip" data-placement="right" title="다른 사용자에게 이슈 보내기"></i>
@@ -113,41 +134,60 @@
                <div class="row mt-20">
                    <div class="col-md-4">
                        <div class="form-group">
                            <div class="row">
                                <div class="col-xxl-12">
                                    <div class="form-group">
                                        <label class="issue-detail-label"><span translate="common.assigneeTeam">담당부서</span> </label>
                                        <div class="">
                                            <div class="select3-selection__choicediv">
                                                <span class="select3-selection__choice" ng-repeat="user in vm.viewer.userVos">
                                                    <span class="avatar-w"><img ng-src="{{::user.profile}}"></span>
                                                    <span>{{::user.byName}}</span>
                                                </span>
                                                <span ng-if="vm.viewer.userVos.length < 1" translate="common.noAssignee">담당자가 없습니다.</span>
                                                            <i class="fa fa-edit fa-2x issue-status-edit cursor"
                                                               ng-click="fn.modifyIssueUser()" data-toggle="tooltip" data-placement="right" title="담당자 변경 하기"></i>
                                            </div>
                                        </div>
                                    </div>
                                </div>
                            </div>
                        </div>
                    </div>
                    <div class="col-md-4">
                        <div class="form-group">
                            <div class="col-md-8">
                                <div class="form-group">
                                    <label class="issue-detail-label"><span translate="common.period">기간</span></label>
                                    <div class="">
                                        <span translate="{{vm.viewer.startDate}}"></span> ~ <span
                                            translate="{{vm.viewer.completeDate}}"></span>
                                    </div>
                                </div>
                            </div>
                        </div>
                    </div>
                    <div class="col-md-4">
                        <div class="form-group">
                            <label class="issue-detail-label"><span translate="common.importance">중요도</span></label>
                            <label class="issue-detail-label offset-1"><span translate="common.priority">우선 순위</span></label>
                            <label class="issue-detail-label offset-1"><span translate="issue.issueStatus">이슈 상태</span></label>
                            <div class="">
                                    <span class="badge"
                                          ng-style="{'background-color' : vm.viewer.severityVo.color, 'border-color' : vm.viewer.severityVo.color, 'color' : '#FFFFFF' }"
                                          translate="{{vm.viewer.severityVo.name}}"></span>
                            </div>
                        </div>
                    </div>
                                <span class="badge" ng-style="{'background-color' : vm.viewer.severityVo.color, 'border-color' : vm.viewer.severityVo.color, 'color' : '#FFFFFF' }" translate="{{vm.viewer.severityVo.name}}"></span>
                    <div class="col-md-4">
                        <div class="form-group">
                            <label class="issue-detail-label"><span translate="common.priority">우선 순위</span></label>
                            <div class="">
                                    <span class="badge"
                                          ng-style="{'background-color' : vm.viewer.priorityVo.color, 'border-color' : vm.viewer.priorityVo.color, 'color' : '#FFFFFF' }"
                                          translate="{{vm.viewer.priorityVo.name}}"></span>
                            </div>
                        </div>
                    </div>
                                <span class="badge offset-1" ng-style="{'background-color' : vm.viewer.priorityVo.color, 'border-color' : vm.viewer.priorityVo.color, 'color' : '#FFFFFF' }" translate="{{vm.viewer.priorityVo.name}}"></span>
                    <div class="col-md-4">
                        <div class="form-group">
                            <label class="issue-detail-label"><span translate="issue.issueStatus">이슈 상태</span></label>
                            <!--    권한을 갖고 있을 때 -->
                            <div ng-if="vm.viewer.modifyPermissionCheck">
                                <span class="editForm badge mr-5"
                                      ng-style="{'background-color' : vm.viewer.issueStatusVo.color, 'border-color' : vm.viewer.issueStatusVo.color, 'color' : '#FFFFFF' }">{{vm.viewer.issueStatusVo.name}}</span>
                                <i class="fa fa-edit fa-2x issue-status-edit cursor"
                                   ng-click="fn.modifyIssueStatus()" data-toggle="tooltip" data-placement="right" title="일감 상태 변경 하기"></i>
                            </div>
                            <!--    권한이 없을 때    -->
                            <div ng-if="!vm.viewer.modifyPermissionCheck">
                                <span class="editForm badge mr-5"
                                      ng-style="{'background-color' : vm.viewer.issueStatusVo.color, 'border-color' : vm.viewer.issueStatusVo.color, 'color' : '#FFFFFF' }">{{vm.viewer.issueStatusVo.name}}</span>
                                <!--    권한을 갖고 있을 때 -->
                                <span ng-if="vm.viewer.modifyPermissionCheck">
                                    <span class="editForm badge mr-5 offset-1" ng-style="{'background-color' : vm.viewer.issueStatusVo.color, 'border-color' : vm.viewer.issueStatusVo.color, 'color' : '#FFFFFF' }">{{vm.viewer.issueStatusVo.name}}</span><i class="fa fa-edit fa-2x issue-status-edit cursor" ng-click="fn.modifyIssueStatus()" data-toggle="tooltip" data-placement="right" title="일감 상태 변경 하기"></i>
                                </span>
                                <!--    권한이 없을 때    -->
                                <span ng-if="!vm.viewer.modifyPermissionCheck">
                                    <span class="editForm badge mr-5 offset-1" ng-style="{'background-color' : vm.viewer.issueStatusVo.color, 'border-color' : vm.viewer.issueStatusVo.color, 'color' : '#FFFFFF' }">{{vm.viewer.issueStatusVo.name}}</span>
                                </span>
                            </div>
                        </div>
                    </div>
@@ -155,30 +195,18 @@
                <div class="row">
                    <div class="col-md-4">
                        <div class="form-group">
                            <label class="issue-detail-label"><span translate="issue.issueType">이슈 타입</span> </label>
                            <label class="issue-detail-label"><span translate="common.detectingInfo">탐지정보</span> </label>
                            <div class="">
                                <span class="status-pill smaller"
                                      ng-style="{'background-color': vm.viewer.issueTypeVo.color }"></span><span>{{vm.viewer.issueTypeVo.name}}</span>
                                <label class="issue-detail-label"><span translate="common.diffuserURL">유포자URL</span> </label>
                                <label class="issue-detail-label offset-2"><span translate="common.country">국가</span></label>
                                <div class="">
                                    <span>200.11.13.123</span>
                                    <span class="country">US</span>
                                </div>
<!--                                <span ng-if="vm.viewer.userVos.length < 1" translate="common.noAssignee">담당자가 없습니다.</span>-->
                            </div>
                        </div>
                    </div>
                    <div class="col-md-4">
                        <div class="form-group">
                            <label class="issue-detail-label"><span translate="common.period">기간</span></label>
                            <div class="">
                                <span translate="{{vm.viewer.startDate}}"></span> ~ <span
                                    translate="{{vm.viewer.completeDate}}"></span>
                            </div>
                        </div>
                    </div>
                    <div class="col-md-4">
                        <div class="form-group">
                            <label class="issue-detail-label"><span translate="common.changeDate">변경일</span> </label>
                            <div class="">
                                {{vm.viewer.modifyDate}}
                            </div>
                        </div>
                    </div>
                </div>
@@ -208,27 +236,7 @@
                    </div>
                </div>
                <div class="row">
                    <div class="col-xxl-12">
                        <div class="form-group">
                            <label class="issue-detail-label"><span translate="common.assigneeTeam">담당부서</span> </label>
                            <div class="">
                                <div class="select3-selection__choicediv">
                                    <span class="select3-selection__choice" ng-repeat="user in vm.viewer.userVos">
                                        <span class="avatar-w"><img ng-src="{{::user.profile}}"></span>
                                        <span>{{::user.byName}}</span>
                                    </span>
                                    <span ng-if="vm.viewer.userVos.length < 1" translate="common.noAssignee">
                                        담당자가 없습니다.
                                    </span>
                                    <i class="fa fa-edit fa-2x issue-status-edit cursor"
                                       ng-click="fn.modifyIssueUser()" data-toggle="tooltip" data-placement="right" title="담당자 변경 하기"></i>
                                </div>
                            </div>
                        </div>
                    </div>
                </div>
                <div class="row">
                    <div class="col-md-4" ng-repeat="issueCustomField in vm.viewer.issueCustomFields">
@@ -262,7 +270,7 @@
                <!--    테이블 -->
                <div class="mt-10 issue-detail-word-break width-100">
                    <js-table data="vm.viewer.issueRelationVos" table-configs="vm.relTableConfigs"
                                  event="relTableEvent" detail-view="true" hide-header="false" use-sort="false"></js-table>
                              event="relTableEvent" detail-view="true" hide-header="false" use-sort="false"></js-table>
                    <div class="row">
                        <div class="col-sm-4">
@@ -536,4 +544,4 @@
            </div>
        </div>
    </div>
</div>
</div>
src/main/webapp/views/issue/issueModify.html
@@ -282,10 +282,10 @@
                <div class="col-lg-4">
                    <div class="form-group mb10">
                        <label class="issue-label"> <span translate="companyField.name">업체이름</span> </label>
                        <js-autocomplete-single data-input-name="companyField"
                                                selected-model="vm.form.companyFields"
                        <js-autocomplete-single data-input-name="issueCompanyField"
                                                selected-model="vm.form.issueCompanyFields"
                                                search="vm.companyName"
                                                source="fn.getCompanyFieldList(vm.companyName, vm.form.companyFields, vm.autoCompletePage.companyField.page, fn.getCompanyFieldListCallBack)"
                                                source="fn.getIssueCompanyFieldList(vm.companyName, vm.form.issueCompanyFields, vm.autoCompletePage.companyField.page, fn.getIssueCompanyFieldListCallBack)"
                                                page="vm.autoCompletePage.companyField.page"
                                                total-page="vm.autoCompletePage.companyField.totalPage"
                                                input-disabled="false"
@@ -375,9 +375,9 @@
                    <div class="form-group mb10">
                        <label class="issue-label"> <span translate="ispField.name">ISP 이름</span> </label>
                        <js-autocomplete-single data-input-name="ispField"
                                                selected-model="vm.form.ispFields"
                                                selected-model="vm.form.issueIspFields"
                                                search="vm.ispName"
                                                source="fn.getIspFieldList(vm.ispName, vm.form.ispFields, vm.autoCompletePage.ispField.page, fn.getIspFieldListCallBack)"
                                                source="fn.getIssueIspFieldList(vm.ispName, vm.form.issueIspFields, vm.autoCompletePage.ispField.page, fn.getIssueIspFieldListCallBack)"
                                                page="vm.autoCompletePage.ispField.page"
                                                total-page="vm.autoCompletePage.ispField.totalPage"
                                                input-disabled="false"
@@ -481,9 +481,9 @@
                    <div class="form-group mb10">
                        <label class="issue-label"> <span translate="hostingField.name">호스팅 이름</span> </label>
                        <js-autocomplete-single data-input-name="hostingField"
                                                selected-model="vm.form.hostingFields"
                                                selected-model="vm.form.issueHostingFields"
                                                search="vm.hostingName"
                                                source="fn.getHostingFieldList(vm.hostingName, vm.form.hostingFields, vm.autoCompletePage.hostingField.page, fn.getHostingFieldListCallBack)"
                                                source="fn.getIssueHostingFieldList(vm.hostingName, vm.form.issueHostingFields, vm.autoCompletePage.hostingField.page, fn.getIssueHostingFieldListCallBack)"
                                                page="vm.autoCompletePage.hostingField.page"
                                                total-page="vm.autoCompletePage.hostingField.totalPage"
                                                input-disabled="false"