OWL ITS + 탐지시스템(인터넷 진흥원)
wyu
2021-11-24 b69416fc721e8f0eb478536bf0d98ae3f6c4811e
이슈 상세 연관,하위 테이블 표시 설정 - [프론트]
11개 파일 변경됨
233 ■■■■■ 파일 변경됨
src/main/webapp/assets/styles/main.css 1 ●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/webapp/custom_components/js-table/tableColumnGenerator.directive.js 50 ●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/webapp/custom_components/sweetalert/sweetalert.css 4 ●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/webapp/i18n/ko/global.json 1 ●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/webapp/scripts/app/issue/issueAdd.controller.js 2 ●●● 패치 | 보기 | raw | blame | 히스토리
src/main/webapp/scripts/app/issue/issueAddDownTableConfig.controller.js 22 ●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/webapp/scripts/app/issue/issueAddRelationTableConfig.controller.js 20 ●●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/webapp/scripts/app/issue/issueAddTableConfig.controller.js 19 ●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/webapp/scripts/app/issue/issueDetail.controller.js 39 ●●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/webapp/scripts/app/issue/issueModify.controller.js 5 ●●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/webapp/views/issue/issueDetail.html 70 ●●●● 패치 | 보기 | raw | blame | 히스토리
src/main/webapp/assets/styles/main.css
@@ -28433,6 +28433,7 @@
    padding: 15px;
    text-align: center;
    border: 1px solid #ddd;
}
src/main/webapp/custom_components/js-table/tableColumnGenerator.directive.js
@@ -160,7 +160,7 @@
                                        //  이슈 목록에서 기간 표시
                                        case "ISSUE_DUE_DATE" :
                                            if (!$rootScope.isDefined(scope.data.startDate) && !$rootScope.isDefined(scope.data.completeDate)) {
                                                makeTag += "<span></span>";
                                                makeTag += "<span translate='common.noDate'>기간 없음</span>";
                                            }
                                            else {
                                                makeTag += "<span>" + scope.data.startDate + " ~ " + scope.data.completeDate + "</span>";
@@ -194,22 +194,30 @@
                                            makeTag += '</div>';
                                            break;
                                        case "ISSUE_DETAIL_MOVE" :
                                            makeTag += "<a ui-sref='issues.detail({ id : " + scope.data.id + " })'><span>" + scope.data.title + "</span></a>";
                                            break;
                       /*                 case "ISSUE_DETAIL_MOVE" :
                                            makeTag += "<a class='text-center' ui-sref='issues.detail({ id : " + scope.data.id + " })'><span>" + scope.data.title + "</span></a>";
                                            break;*/
                                        // 연관 이슈 이동
                                        // 연관 이슈 이동(제목)
                                        case "ISSUE_RELATION_MOVE" :
                                            makeTag += "<span class=\"titlename cursor\" ng-click=\"event.changeDetailView(data.issueRelation)\">" + scope.data.title + "</span></a>";
                                            makeTag += "<span class=\"titlename cursor text-center\" ng-click=\"event.changeDetailView(data.issueRelation)\">" + scope.data.title + "</span></a>";
                                            break;
                                        // 연관 이슈 이동
                                        // 연관 이슈 우선순위
                                        case "REL_COMMON_PRIORITY" :
                                            makeTag += "<span class='badge' ng-style='{ \"background-color\" : \"" + scope.data.priorityVo.color + "\"," + "\"border-color\"" + " : \"" + scope.data.priorityVo.color + "\", \"color\": \"#FFFFFF\" }' translate='" + scope.data.priorityVo.name + "'></span>";
                                            break;
                                        // 연관 이슈 중요도
                                        case "REL_COMMON_SEVERITY" :
                                            makeTag += "<span class='badge' ng-style='{ \"background-color\" : \"" + scope.data.severityVo.color + "\"," + "\"border-color\"" + " : \"" + scope.data.severityVo.color + "\", \"color\": \"#FFFFFF\" }' translate='" + scope.data.severityVo.name + "'></span>";
                                            break;
                                        // 하위 이슈 이동(제목)
                                        case "ISSUE_DOWN_MOVE" :
                                            makeTag += "<span class=\"titlename cursor\" ng-click=\"event.changeDetailView(data.id)\">" + scope.data.title + "</span></a>";
                                            break;
                                            // 연관이슈 구분
                                        // 연관이슈 구분
                                        case "ISSUE_RELATION_TYPE":
                                            makeTag += "<span>" + scope.data.relationIssueTypeName + "</span>";
                                            break;
@@ -263,17 +271,33 @@
                                            makeTag += "<span class='badge' ng-style='{ \"background-color\" : \"" + scope.data.severityColor + "\"," + "\"border-color\"" + " : \"" + scope.data.severityColor + "\", \"color\": \"#FFFFFF\" }' translate='" + scope.data.severityName + "'></span>";
                                            break;
                                        case "ISSUE_DEPARTMENT" :
                                            makeTag += "<span>" + scope.data.departmentVos.departmentName + "</span>";
                                        case "REL_REGISTER":
                                            scope.data.registerVos = [scope.data.issueRelation.registerVo];
                                            makeTag += '<div owl-profile-over class="" table-user-image="data" target="registerVos"></div>';
                                            break;
                                        case "ISSUE_DEPARTMENT" :
                                            makeTag += "<ul class='ul-not-comma'>";
                                                makeTag += "<div style='color: #000000'>";
                                                angular.forEach(scope.data.departmentVos, function (departments) {
                                                    makeTag += "<li>" + departments.departmentName + "</li>";
                                                });
                                                makeTag += "</div>";
                                            makeTag += "</ul>";
                                            break;
                                            // angular.forEach(scope.data.departmentVos, function (departments) {
                                            //     makeTag += "<span>" + departments.departmentName + "</span>"
                                            // });
                                            // break;
                                        case "ISSUE_USER" :
                                            makeTag += '<div owl-profile-over class="" table-user-image="data" target="userVos"></div>';
                                            break;
                                        case "REGISTER" :
                                            scope.data.registsrVos = [scope.data.registerVo];
                                            makeTag += '<div owl-profile-over class="" table-user-image="data" target="registsrVos"></div>';
                                            scope.data.registerVos = [scope.data.registerVo];
                                            makeTag += '<div owl-profile-over class="" table-user-image="data" target="registerVos"></div>';
                                            break;
                                        case "WORKFLOW_NAME":
src/main/webapp/custom_components/sweetalert/sweetalert.css
@@ -1,7 +1,7 @@
body.stop-scrolling {
  height: 100%;
  overflow: hidden; }
  }
/*overflow: hidden;*/
.sweet-overlay {
  background-color: black;
  /* IE8 */
src/main/webapp/i18n/ko/global.json
@@ -704,6 +704,7 @@
        "changeDate": "변경일",
        "lastChangeDate": "최근 변경일",
        "registrationDate": "등록일",
        "noDate": "기간 없음",
        "fullView": "전체보기",
        "comments": "댓글",
        "record": "기록",
src/main/webapp/scripts/app/issue/issueAdd.controller.js
@@ -350,7 +350,7 @@
                // 업체정보 결과 값 Event 처리(set)
                $scope.$on("companyFieldEvent", function (event, result) {
                    $scope.vm.companyId = result[0].id;
                    $scope.vm.companyName = 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;
src/main/webapp/scripts/app/issue/issueAddDownTableConfig.controller.js
@@ -28,25 +28,25 @@
                        key : "PRIORITY",
                        width : "width-80-p",
                        position : 1,
                        display : true
                        display : false
                    }, {
                        name : $filter("translate")("common.importance"), // 중요도
                        key : "SEVERITY",
                        width : "width-80-p",
                        position : 2,
                        display : true
                        display : false
                    }, {
                        name : $filter("translate")("issue.issueType"), // 이슈 타입
                        key : "ISSUE_TYPE",
                        width : "width-140-p",
                        position : 3,
                        display : true
                        display : false
                    }, {
                        name : $filter("translate")("common.assigneeTeam"), // 담당부서
                        key : "ASSIGNEE_TEAM",
                        width : "width-100-p",
                        position : 4,
                        display : true
                        display : false
                    }, {
                        name : $filter("translate")("common.register"), // 등록자
                        key : "REGISTER",
@@ -136,9 +136,23 @@
                    var deferred = $q.defer();
                    var content = {
                        issueId : $rootScope.currentDetailIssueId,
                        delValue : $scope.vm.issueDownTableConfigs.splice(7,1),
                        issueTableConfigs : JSON.stringify($scope.vm.issueDownTableConfigs)
                    };
                    // angular.forEach($scope.vm.issueDownTableConfigs, function (delVaue) {
                    //     if ($scope.vm.issueDownTableConfigs.indexOf(delVaue.name) === "") {
                    //         $scope.vm.issueDownTableConfigs.splice(delVaue,1);
                    //     }
                    //
                    // })
                    // for (var i = 0; i < $scope.vm.issueDownTableConfigs; i++) {
                    //     if ($scope.vm.issueDownTableConfigs == "") {
                    //         $scope.vm.issueDownTableConfigs.splice(i,1);
                    //         i--;
                    //     }
                    // }
                    IssueTableConfig.downDetail($resourceProvider.getContent(content,
                        $resourceProvider.getPageContent(0, 1000))).then(function (result) {
                        if (result.data.message.status !== "success") {
src/main/webapp/scripts/app/issue/issueAddRelationTableConfig.controller.js
@@ -29,43 +29,43 @@
                        key : "PRIORITY",
                        width : "width-100-p",
                        position : 1,
                        display : true
                        display : false
                    }, {
                        name : $filter("translate")("common.importance"), // 중요도
                        key : "SEVERITY",
                        width : "width-100-p",
                        position : 2,
                        display : true
                        display : false
                    }, {
                        name : $filter("translate")("issue.issueType"), // 이슈 타입
                        key : "ISSUE_TYPE",
                        width : "width-100-p",
                        position : 3,
                        display : true
                        display : false
                    }, {
                        name : $filter("translate")("common.assigneeTeam"), // 담당부서
                        key : "ASSIGNEE_TEAM",
                        width : "width-50-p",
                        position : 4,
                        display : true
                        display : false
                    }, {
                        name : $filter("translate")("common.register"), // 등록자
                        key : "REGISTER",
                        width : "width-50-p",
                        position : 5,
                        display : true
                        display : false
                    }, {
                        name : $filter("translate")("common.period"), // 기간
                        key : "PERIOD",
                        width : "width-100-p",
                        position : 6,
                        display : true
                        display : false
                    }, {
                        name : $filter("translate")("common.lastChangeDate"), // 최근 변경일
                        key : "MODIFY_DATE",
                        width : "width-100-p",
                        position : 7,
                        display : true
                        display : false
                    }, {
                    }]
                };
@@ -131,12 +131,15 @@
                    return deferred.promise;
                }
                //  이슈 목록 테이블 설정 정보를 가져온다.
                function getRelIssueTableConfigs() {
                    var deferred = $q.defer();
                    var content = {
                        issueId : $rootScope.currentDetailIssueId,
                        delValue : $scope.vm.issueRelTableConfigs.splice(7,1),
                        issueTableConfigs : JSON.stringify($scope.vm.issueRelTableConfigs)
                    };
@@ -154,7 +157,7 @@
                //  사용자 정의 필드를 조회한 후 표시할 이슈 테이블 컬럼을 준비한다.
                $scope.fn.getCustomFields().then(function (result) {
                    var count = 9;
                    var count = 8;
                    angular.forEach(result, function (customField) {
                        $scope.vm.issueRelTableConfigs.push({
                            name : customField.name,
@@ -172,6 +175,7 @@
                        if ($rootScope.isDefined(issueTableConfigs)) {
                            $rootScope.spinner = true;
                            // var saveTableConfigs = JSON.parse(issueTableConfigs);
                            var saveTableConfigs = JSON.parse(issueTableConfigs);
                            angular.forEach(saveTableConfigs, function (saveTableConfig) {
src/main/webapp/scripts/app/issue/issueAddTableConfig.controller.js
@@ -51,19 +51,19 @@
                        key : "REGISTER",
                        width : "width-100-p",
                        position : 5,
                        display : true
                        display : false
                    }, {
                        name : $filter("translate")("common.period"), // 기간
                        key : "PERIOD",
                        width : "width-140-p",
                        position : 6,
                        display : true
                        display : false
                    }, {
                        name : $filter("translate")("common.lastChangeDate"), // 최근 변경일
                        key : "MODIFY_DATE",
                        width : "width-100-p",
                        position : 7,
                        display : true
                        display : false
                    }, {
                    }]
                };
@@ -129,16 +129,27 @@
                    return deferred.promise;
                }
                var content = {
                    delValue : $scope.vm.issueTableConfigs.splice(7,1),
                    issueTableConfigs : JSON.stringify($scope.vm.issueTableConfigs)
                };
                //  이슈 목록 테이블 설정 정보를 가져온다.
                function getIssueAddTableConfigs() {
                    var deferred = $q.defer();
                    IssueTableConfig.detail($resourceProvider.getContent({},
                    IssueTableConfig.detail($resourceProvider.getContent(content,
                        $resourceProvider.getPageContent(0, 1000))).then(function (result) {
                        if (result.data.message.status !== "success") {
                            SweetAlert.error($filter("translate")("issue.failedToIssueTableColumnLookup"), result.data.message.message); // 이슈 테이블 컬럼 조회 실패
                        }
                        // for (var i = 0; i < result.data.name; i++) {
                        //     if (result.data.name === '') {
                        //         result.splice(i,1);
                        //         i--;
                        //     }
                        // }
                        deferred.resolve(result.data.data);
                    });
src/main/webapp/scripts/app/issue/issueDetail.controller.js
@@ -8,8 +8,9 @@
        'angular'
    ],
    function (app, angular) {
        app.controller('issueDetailController', ['$scope', '$rootScope', '$log', '$resourceProvider', '$tableProvider', '$state', '$uibModal', '$q','SweetAlert', '$timeout', 'Issue', 'IssueComment', 'IssueRelation', 'AttachedFile', 'IssueStatus', 'IssueTableConfig', '$filter',
            function ($scope, $rootScope, $log, $resourceProvider, $tableProvider, $state, $uibModal, $q, SweetAlert, $timeout, Issue, IssueComment, IssueRelation, AttachedFile, IssueStatus, IssueTableConfig, $filter) {
        app.controller('issueDetailController', ['$scope', '$rootScope', '$log', '$resourceProvider', '$tableProvider', '$state', '$uibModal', '$q',
            '$controller', '$injector', 'SweetAlert', '$timeout', 'Issue', 'IssueComment', 'IssueRelation', 'AttachedFile',  'Priority', 'Severity','IssueStatus', 'IssueTableConfig', '$filter',
            function ($scope, $rootScope, $log, $resourceProvider, $tableProvider, $state, $uibModal, $q, $controller, $injector, SweetAlert, $timeout, Issue, IssueComment, IssueRelation, AttachedFile, Priority, Severity, IssueStatus, IssueTableConfig, $filter) {
                //  IssueListController vm, fn 변수 상속.
@@ -111,6 +112,8 @@
                    // $rootScope.$broadcast("makeIssueSearch", issue);
                    $scope.$parent.tableEvent.changeDetailView(issue.id);
                }
                angular.extend(this, $controller('autoCompleteController', {$scope : $scope, $injector : $injector}));
                // 하위 이슈 삭제
                function removeDownIssue(id) {
@@ -222,23 +225,23 @@
                                .setHSort(false)
                                .setDRenderer("ISSUE_RELATION_MOVE"))
                            break;
                        case "PRIORITY" :   //  우선순위
                        case "PRIORITY" :   // 연관 이슈 우선순위
                            $scope.vm.relTableConfigs.push($tableProvider.config()
                                .setHName("common.priority")
                                .setDName("priorityName")
                                .setDType("renderer")
                                .setHWidth("bold " + issueTableConfig.width)
                                .setDAlign("text-center")
                                .setDRenderer("COMMON_PRIORITY"));
                                .setDRenderer("REL_COMMON_PRIORITY"));
                            break;
                        case "SEVERITY" :   //  중요도
                        case "SEVERITY" :   //  연관 이슈 중요도
                            $scope.vm.relTableConfigs.push($tableProvider.config()
                                .setHName("common.importance")
                                .setDName("severityName")
                                .setDType("renderer")
                                .setHWidth("bold " + issueTableConfig.width)
                                .setDAlign("text-center")
                                .setDRenderer("COMMON_SEVERITY"));
                                .setDRenderer("REL_COMMON_SEVERITY"));
                            break;
                        case "ISSUE_TYPE" : //  이슈 타입
                            $scope.vm.relTableConfigs.push($tableProvider.config()
@@ -255,13 +258,14 @@
                                .setDAlign("text-center")
                                .setDRenderer("ISSUE_DEPARTMENT"));
                            break;
                        case "REGISTER" :   //  등록자
                            $scope.vm.relTableConfigs.push($tableProvider.config()
                                .setHName("common.register")
                                .setDType("renderer")
                                .setHWidth("bold " + issueTableConfig.width)
                                .setDAlign("text-center")
                                .setDRenderer("REGISTER"));
                                .setDRenderer("REL_REGISTER"));
                            break;
                        case "PERIOD" : //  기간
                            $scope.vm.relTableConfigs.push($tableProvider.config()
@@ -408,18 +412,21 @@
                    $scope.vm.relTableConfigs.push($tableProvider.config()
                        .setHName("issue.relationIssueType")
                        .setDType("renderer")
                        .setDAlign("text-center")
                        .setHWidth("width-30-p bold")
                        .setHSort(false)
                        .setDRenderer("ISSUE_RELATION_TYPE"))
                    $scope.vm.relTableConfigs.push($tableProvider.config()
                        .setHName("issue.relationIssueTitle")
                        .setDType("renderer")
                        .setDAlign("text-center")
                        .setHWidth("width-60-p bold")
                        .setHSort(false)
                        .setDRenderer("ISSUE_RELATION_MOVE"))
                    $scope.vm.relTableConfigs.push($tableProvider.config()
                        .setHName("issue.relationIssueDelete")
                        .setDType("renderer")
                        .setDAlign("text-center")
                        .setHWidth("width-20-p bold")
                        .setDRenderer("ISSUE_RELATION_DELETE")
                        .setHSort(false)
@@ -440,12 +447,14 @@
                    $scope.vm.downTableConfigs.push($tableProvider.config()
                        .setHName("issue.downIssueTitle")
                        .setDType("renderer")
                        .setDAlign("text-center")
                        .setHWidth("width-60-p bold")
                        .setHSort(false)
                        .setDRenderer("ISSUE_DOWN_MOVE"))
                    $scope.vm.downTableConfigs.push($tableProvider.config()
                        .setHName("issue.relationIssueDelete")
                        .setDType("renderer")
                        .setDAlign("text-center")
                        .setHWidth("width-20-p bold")
                        .setDRenderer("ISSUE_DOWN_DELETE")
                        .setHSort(false)
@@ -487,12 +496,14 @@
                                $scope.vm.relTableConfigs.push($tableProvider.config()
                                    .setHName("issue.relationIssueType")
                                    .setDType("renderer")
                                    .setDAlign("text-center")
                                    .setHWidth("width-30-p bold")
                                    .setHSort(false)
                                    .setDRenderer("ISSUE_RELATION_TYPE"))
                                $scope.vm.relTableConfigs.push($tableProvider.config()
                                    .setHName("issue.relationIssueTitle")
                                    .setDType("renderer")
                                    .setDAlign("text-center")
                                    .setHWidth("width-60-p bold")
                                    .setHSort(false)
                                    .setDRenderer("ISSUE_RELATION_MOVE"))
@@ -547,6 +558,7 @@
                                $scope.vm.downTableConfigs.push($tableProvider.config()
                                    .setHName("issue.downIssueTitle")
                                    .setDType("renderer")
                                    .setDAlign("text-center")
                                    .setHWidth("width-60-p bold")
                                    .setHSort(false)
                                    .setDRenderer("ISSUE_DOWN_MOVE"))
@@ -771,7 +783,7 @@
                    $scope.fn.getRelTableConfigs();
                    $scope.fn.getDownTableConfigs();
                    Issue.detail($resourceProvider.getContent(
                        Issue.detail($resourceProvider.getContent(
                        {id : $scope.vm.viewer.id, deep : "02"},
                        $resourceProvider.getPageContent(0, 1))).then(function (result) {
@@ -810,11 +822,12 @@
                                    $scope.vm.form.issuesDown.push(issueDownVo.issue);
                                });
                                // wyu
                                angular.forEach(result.data.data.issueRelationVos, function (issueRelationColum){
                                    issueRelationColum.issueRelation = $scope.vm.issueRelation;
                                    $scope.vm.form.issues.push(issueRelationColum.issueRelation);
                                });
                                // // wyu
                                // angular.forEach(result.data.data.issueRelationVos, function (issueRelationColum){
                                //     issueRelationColum.issueRelation = $scope.vm.issueRelation;
                                //     $scope.vm.form.issues.push(issueRelationColum.issueRelation);
                                // });
                                $scope.vm.viewer.issueRelationVos = result.data.data.issueRelationVos;
                                $scope.vm.viewer.issueDownVos = result.data.data.issueDownVos;
src/main/webapp/scripts/app/issue/issueModify.controller.js
@@ -386,6 +386,11 @@
                        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,
src/main/webapp/views/issue/issueDetail.html
@@ -189,18 +189,45 @@
                    <div class="col-md-4">
                        <div class="form-group">
                            <h6 class="info_font" translate="common.detectingInfo">탐지정보</h6>
                            <div class="">
                                <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="row">
                    <div class="col-md-2" ng-repeat="issueCustomField in vm.viewer.issueCustomFields">
                        <label class="issue-detail-label">{{::issueCustomField.customFieldVo.name}}</label>
                        <div ng-switch on="issueCustomField.customFieldVo.customFieldType">
                            <!-- 기본 입력 -->
                            <div ng-switch-when="INPUT">
                                <!--    읽기 모드   -->
                                <span class="issue-detail-word-break">{{::issueCustomField.useValues}}</span>
                                <span ng-if="!$root.isDefined(issueCustomField.useValues)">-</span>
                            </div>
                            <!-- 단일 셀렉트 -->
                            <div ng-switch-when="SINGLE_SELECT">
                                <span class="issue-detail-word-break">{{::issueCustomField.useValues}}</span>
                                <span ng-if="!$root.isDefined(issueCustomField.useValues)">-</span>
                            </div>
                            <!-- 멀티 셀렉트 -->
                            <div ng-switch-when="MULTI_SELECT">
                                <span class="issue-detail-word-break"
                                ng-repeat="useValue in issueCustomField.useValues">{{::useValue.value}}, </span>
                                <span ng-if="!$root.isDefined(issueCustomField.useValues)">-</span>
                            </div>
                        </div>
                    </div>
                </div>
                           <!-- <div class="">
                                <label class="issue-detail-label"><span>{{vm.viewer.issueCustomFieldValueVos[0].useValue}}</span> </label>
                                <div class="">
                                    <span>{{vm.viewer.issueCustomFieldValueVos[0].customFieldVo.name}}</span>
                                </div>
                                <span ng-if="vm.viewer.userVos.length < 1" translate="common.noAssignee">담당자가 없습니다.</span>
                            </div>-->
                <hr>
<!--                <span class="tag">{{vm.viewer.projectVo.projectKey}}-{{vm.viewer.issueNumber}} &nbsp; / &nbsp; {{vm.viewer.projectVo.name}}</span>-->
                <div class="row">
@@ -376,34 +403,7 @@
                    </div>
                </div>
                    <!-- 사용자 정의 필드 -->
<!--                <div class="row">-->
<!--                    <div class="col-md-4" ng-repeat="issueCustomField in vm.viewer.issueCustomFields">-->
<!--                        <label class="issue-detail-label">{{::issueCustomField.customFieldVo.name}}</label>-->
<!--                        <div ng-switch on="issueCustomField.customFieldVo.customFieldType">-->
<!--                            &lt;!&ndash; 기본 입력 &ndash;&gt;-->
<!--                            <div ng-switch-when="INPUT" class="form-group">-->
<!--                                &lt;!&ndash;    읽기 모드   &ndash;&gt;-->
<!--                                <span class="issue-detail-word-break">{{::issueCustomField.useValues}}</span>-->
<!--                                <span ng-if="!$root.isDefined(issueCustomField.useValues)">-</span>-->
<!--                            </div>-->
<!--                            &lt;!&ndash; 단일 셀렉트 &ndash;&gt;-->
<!--                            <div ng-switch-when="SINGLE_SELECT" class="form-group">-->
<!--                                <span class="issue-detail-word-break">{{::issueCustomField.useValues}}</span>-->
<!--                                <span ng-if="!$root.isDefined(issueCustomField.useValues)">-</span>-->
<!--                            </div>-->
<!--                            &lt;!&ndash; 멀티 셀렉트 &ndash;&gt;-->
<!--                            <div ng-switch-when="MULTI_SELECT" class="form-group">-->
<!--                                <span class="issue-detail-word-break"-->
<!--                                      ng-repeat="useValue in issueCustomField.useValues">{{::useValue.value}}, </span>-->
<!--                                <span ng-if="!$root.isDefined(issueCustomField.useValues)">-</span>-->
<!--                            </div>-->
<!--                        </div>-->
<!--                    </div>-->
<!--                </div>-->
                <div class="row mt-30">
                    <div class="col-md-10">