From 47c5ce77b114324effdce5b3735ed0e661846108 Mon Sep 17 00:00:00 2001
From: 이민희 <mhlee@maprex.co.kr>
Date: 목, 06 1월 2022 10:58:23 +0900
Subject: [PATCH] - 이슈 상세페이지 연관,하위 이슈 페이징 처리

---
 src/main/webapp/views/issue/issueDetail.html |  603 +++++++++++++++++++++++++++++++++++++++++-------------
 1 files changed, 460 insertions(+), 143 deletions(-)

diff --git a/src/main/webapp/views/issue/issueDetail.html b/src/main/webapp/views/issue/issueDetail.html
index ee7485b..2bbc36d 100644
--- a/src/main/webapp/views/issue/issueDetail.html
+++ b/src/main/webapp/views/issue/issueDetail.html
@@ -86,42 +86,43 @@
 <!--    �긽�꽭 �솕硫�   -->
 <div class="support-ticket-content-w" ng-controller="issueDetailController">
     <div class="support-ticket-content">
-        <span class="badge" ng-style="{'background-color' : vm.viewer.severityVo.color, 'border-color' : vm.viewer.severityVo.color, 'color' : '#FFFFFF' }">
-            <span ng-if="vm.viewer.parentIssueId != '' || vm.viewer.parentIssueId != 'null' ">�긽�쐞 �씪媛�:{{vm.viewer.parentIssueID}}</span>
-            <i class="os-icon-airplay">OWL Trial</i>
+        <span ng-if="vm.viewer.parentIssueVo != null" class="badge" ng-style="{'background-color' : '#353535', 'border-color' : vm.viewer.issueStatusVo.color, 'color' : '#FFFFFF' }">
+            <span class="cursor" ng-click="fn.issueBack()">�긽�쐞 �씠�뒋:{{vm.viewer.parentIssueVo.title}}</span>
         </span>
-        <label class="issue-detail-label offset-1"><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>
-        <span class="offset-1"> {{vm.viewer.registerDate}}</span>
-        <label class="issue-detail-label offset-1"><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 class="">
             <span class="h3-div">{{vm.viewer.title}}</span>
         </div>
-        <div class="support-ticket-content-header issue-detail-word-break">
+        <div class="support-ticket-content-header issue-detail-word-break" style="height: 5vh">
             <span class="ticket-header">
                 <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 class="tag">{{vm.viewer.projectVo.projectKey}}-{{vm.viewer.issueNumber}} &nbsp; / &nbsp; {{vm.viewer.projectVo.name}} &nbsp; <span ng-if="vm.viewer.isApi == 'Y'">/</span> &nbsp; <span ng-if="vm.viewer.isApi == 'Y'" class="badge" ng-style="{'background-color' : '#EF8D9A', 'border-color' : '#EF8D9A', 'color' : '#FFFFFF' }">API</span></span>
                     </span>
                 </div>
             </span>
-
             <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>
+                <i class="os-icon os-icon-email-forward mr-20" ng-if="vm.viewer.modifyPermissionCheck" ng-click="fn.sendMailAll()" data-toggle="tooltip" data-placement="right" title="�떎瑜� �궗�슜�옄�뿉寃� �씠�뒋 蹂대궡湲�"></i>
                 <i class="os-icon os-icon-airplay mr-20" ng-click="fn.versionView(vm.viewer.id)" data-toggle="tooltip" data-placement="right" title="�씠�뒋 蹂�寃� �씠�젰 �긽�꽭 蹂닿린"></i>
                 <i class="os-icon os-icon-calendar-time mr-20" ng-if="vm.viewer.modifyPermissionCheck"
                    ng-click="fn.reservation(vm.viewer.id)" data-toggle="tooltip" data-placement="right" title="�씠�뒋 諛쒖깮 �삁�빟 �븯湲�"></i>
                 <i class="os-icon os-icon-edit-1 mr-20" ng-click="fn.modify(vm.viewer.id)"
                    ng-if="vm.viewer.modifyPermissionCheck && vm.viewer.issueStatusVo.issueStatusType != 'CLOSE'" data-toggle="tooltip" data-placement="left" title="�씠�뒋 �닔�젙 �븯湲�"></i>
+                <!-- �긽�쐞 �씠�뒋媛� �엳�쓣�븣 �뮘濡쒓�湲� 踰꾪듉 �깮�꽦 -->
+                <span ng-if="vm.issueIds.length != 0 && vm.issueIds.length != 1" class="issue-close mr-10" ng-click="fn.issueBack()"><i class="os-icon os-icon-arrow-left7" data-toggle="tooltip" data-placement="left" title="�씠�뒋 �뮘濡� �씠�룞"></i></span>
+                <!-- �긽�쐞 �씠�뒋媛� �엳�쓣�븣 �긽�꽭�솕硫� �떕湲곕쾭�듉 �쐞移� 議곗젙 -->
                 <span class="issue-close" ng-click="fn.listView()"><i class="os-icon os-icon-close" data-toggle="tooltip" data-placement="left" title="�긽�꽭 �솕硫� �떕湲�"></i></span>
             </a>
         </div>
-
+        <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>
+        <span class="offset-1"> {{vm.viewer.registerDate}}</span>
+        <label class="issue-detail-label offset-1"><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 class="ticket-thread">
             <div class="todo-content">
                 <h6 class="todo-content-subheader" translate="issue.issueInfo">�씠�뒋 �젙蹂�</h6>
@@ -140,6 +141,7 @@
 
                                                 <span ng-if="vm.viewer.departmentVos.length < 1" translate="common.noDepartment">�떞�떦遺��꽌媛� �뾾�뒿�땲�떎.</span>
                                                             <i class="fa fa-edit fa-2x issue-status-edit cursor"
+                                                               ng-if="vm.viewer.modifyPermissionCheck"
                                                                ng-click="fn.modifyIssueDepartment()" data-toggle="tooltip" data-placement="right" title="�떞�떦�옄 蹂�寃� �븯湲�"></i>
                                             </div>
                                         </div>
@@ -166,12 +168,12 @@
                     <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>
+                            <label class="issue-detail-label offset-detail-2"><span translate="common.priority">�슦�꽑 �닚�쐞</span></label>
+                            <label class="issue-detail-label offset-detail-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>
 
-                                <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>
+                                <span class="badge offset-detail-4" ng-style="{'background-color' : vm.viewer.priorityVo.color, 'border-color' : vm.viewer.priorityVo.color, 'color' : '#FFFFFF' }" translate="{{vm.viewer.priorityVo.name}}"></span>
 
                                 <!--    沅뚰븳�쓣 媛뽮퀬 �엳�쓣 �븣 -->
                                 <span ng-if="vm.viewer.modifyPermissionCheck">
@@ -185,33 +187,108 @@
                         </div>
                     </div>
                 </div>
+                <hr>
                 <div class="row">
                     <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>
+                            <h6 class="info_detail_font" translate="common.detectingInfo">�깘吏��젙蹂�</h6>
+                            <span class="issue-detail-label" style="position: relative; top: 1rem" ng-show="vm.viewer.issueCustomFields == ''">�궗�슜�옄 �젙�쓽 �븘�뱶媛믪씠 �뾾�뒿�땲�떎.</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="NUMBER">
+                                <!--    �씫湲� 紐⑤뱶   -->
+                                <span class="issue-detail-word-break">{{::issueCustomField.useValues}}</span>
+                                <span ng-if="!$root.isDefined(issueCustomField.useValues)">-</span>
+                            </div>
+
+                            <div ng-switch-when="DATETIME">
+                                <!--    �씫湲� 紐⑤뱶   -->
+                                <span class="issue-detail-word-break">{{::issueCustomField.useValues}}</span>
+                                <span ng-if="!$root.isDefined(issueCustomField.useValues)">-</span>
+                            </div>
+
+                            <div ng-switch-when="IP_ADDRESS">
+                                <!--    �씫湲� 紐⑤뱶   -->
+                                <span class="issue-detail-word-break">{{::issueCustomField.useValues}}</span>
+                                <span ng-if="!$root.isDefined(issueCustomField.useValues)">-</span>
+                            </div>
+
+                            <div ng-switch-when="EMAIL">
+                                <!--    �씫湲� 紐⑤뱶   -->
+                                <span class="issue-detail-word-break">{{::issueCustomField.useValues}}</span>
+                                <span ng-if="!$root.isDefined(issueCustomField.useValues)">-</span>
+                            </div>
+
+                            <div ng-switch-when="SITE">
+                                <!--    �씫湲� 紐⑤뱶   -->
+                                <span class="issue-detail-word-break">{{::issueCustomField.useValues}}</span>
+                                <span ng-if="!$root.isDefined(issueCustomField.useValues)">-</span>
+                            </div>
+
+                            <div ng-switch-when="TEL">
+                                <!--    �씫湲� 紐⑤뱶   -->
+                                <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 class="col-md-2">
+                        <issue-detail-image-preview images="vm.images"></issue-detail-image-preview>
+                    </div>
+                    <div ng-show="vm.images.length < 1" class="detail-not-elements width-100">
+                    </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">
+            <div class="issue-detail-label">
+                <div ng-show="fn.containsPartner('�뾽泥�')" class="row">
                     <div class="col-sm-2">
                         <div class="form-group">
-                            <h6 class="info_font" translate="companyField.info">�뾽泥댁젙蹂�</h6>
+                            <h6 class="info_detail_font" translate="companyField.info">�뾽泥댁젙蹂�</h6>
                         </div>
                     </div>
                 </div>
 
-                <div class="row">
+                <div ng-show="fn.containsPartner('�뾽泥�')" class="row">
                     <div class="col-sm-2">
                         <div class="form-group">
                             <span translate="companyField.companyName">�뾽泥대챸</span>:
@@ -241,7 +318,16 @@
                         <div class="form-group">
                             <div class="">
                                 <span translate="companyField.email">�씠硫붿씪</span>:
-                                <span class="email_color">{{vm.viewer.issueCompanyVos[0].email}}</span>
+                                <span class="email_color cursor" ng-click="fn.sendMailVo(vm.viewer.issueCompanyVos)">{{vm.viewer.issueCompanyVos[0].email}}</span>
+                            </div>
+                        </div>
+                    </div>
+
+                    <div class="col-sm-2">
+                        <div class="form-group">
+                            <div class="">
+                                <span translate="companyField.url">url</span>:
+                                <span>{{vm.viewer.issueCompanyVos[0].url}}</span>
                             </div>
                         </div>
                     </div>
@@ -255,16 +341,17 @@
                         </div>
                     </div>
                 </div>
-
-                <div class="row">
+            </div>
+            <div class="issue-detail-label">
+                <div ng-show="fn.containsPartner('ISP');" class="row">
                     <div class="col-sm-2">
                         <div class="form-group">
-                            <h6 class="info_font" translate="ispField.info">ISP�젙蹂�</h6>
+                            <h6 class="info_detail_font" translate="ispField.info">ISP�젙蹂�</h6>
                         </div>
                     </div>
                 </div>
 
-                <div class="row">
+                <div ng-show="fn.containsPartner('ISP');" class="row">
                     <div class="col-sm-2">
                         <div class="form-group">
                             <span translate="ispField.ispName">ISP紐�</span>:
@@ -301,7 +388,16 @@
                         <div class="form-group">
                             <div class="">
                                 <span translate="ispField.email">�씠硫붿씪</span>:
-                                <span class="email_color">{{vm.viewer.issueIspVos[0].email}}</span>
+                                <span class="email_color cursor" ng-click="fn.sendMailVo(vm.viewer.issueIspVos)">{{vm.viewer.issueIspVos[0].email}}</span>
+                            </div>
+                        </div>
+                    </div>
+
+                    <div class="col-sm-2">
+                        <div class="form-group">
+                            <div class="">
+                                <span translate="companyField.url">url</span>:
+                                <span>{{vm.viewer.issueIspVos[0].url}}</span>
                             </div>
                         </div>
                     </div>
@@ -315,16 +411,18 @@
                         </div>
                     </div>
                 </div>
-
-                <div class="row">
+            </div>
+            <div class="issue-detail-label">
+                <div ng-show="fn.containsPartner('�샇�뒪�똿');" class="row">
                     <div class="col-sm-2">
                         <div class="form-group">
-                            <h6 class="info_font" translate="hostingField.info">�샇�뒪�똿�젙蹂�</h6>
+                            <h6 class="info_detail_font" translate="hostingField.info">�샇�뒪�똿�젙蹂�</h6>
                         </div>
                     </div>
                 </div>
 
-                <div class="row">
+                <div ng-show="fn.containsPartner('�샇�뒪�똿');" class="row">
+
                     <div class="col-sm-2">
                         <div class="form-group">
                             <span translate="hostingField.hostingName">�샇�뒪�똿紐�</span>:
@@ -361,7 +459,16 @@
                         <div class="form-group">
                             <div class="">
                                 <span translate="hostingField.email">�씠硫붿씪</span>:
-                                <span class="email_color">{{vm.viewer.issueHostingVos[0].email}}</span>
+                                <span class="email_color cursor" ng-click="fn.sendMailVo(vm.viewer.issueHostingVos)">{{vm.viewer.issueHostingVos[0].email}}</span>
+                            </div>
+                        </div>
+                    </div>
+
+                    <div class="col-sm-2">
+                        <div class="form-group">
+                            <div class="">
+                                <span translate="companyField.url">url</span>:
+                                <span>{{vm.viewer.issueHostingVos[0].url}}</span>
                             </div>
                         </div>
                     </div>
@@ -375,43 +482,52 @@
                         </div>
                     </div>
                 </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">
-                            <!-- 湲곕낯 �엯�젰 -->
-                            <div ng-switch-when="INPUT" class="form-group">
-                                <!--    �씫湲� 紐⑤뱶   -->
-                                <span class="issue-detail-word-break">{{::issueCustomField.useValues}}</span>
-                                <span ng-if="!$root.isDefined(issueCustomField.useValues)">-</span>
-                            </div>
-
-                            <!-- �떒�씪 ���젆�듃 -->
-                            <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>
-
-                            <!-- 硫��떚 ���젆�듃 -->
-                            <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 class="row mt-30">
+                    <div class="col-md-10">
+                        <span class="info_detail_font h3" translate="issue.relationIssue">�뿰愿� �씠�뒋</span>
+                    </div>
+                    <!--<div class="col-md-1">
+                        <button class="btn btn-darkgrey offset-10" ng-click="fn.addRelationIssueTableConfig()" type="button"><span translate="issue.settingTableDisplay">�뀒�씠釉� �몴�떆 �꽕�젙</span></button>
+                    </div>-->
+                    <div class="col-md-3 mt-2">
+                        <div class="dataTables_length">
+                            <label>
+                                <select name="relPageRow"
+                                        tabindex="-1"
+                                        class="form-control form-control-sm"
+                                        ng-change="fn.changeDetailPageRowCount()"
+                                        ng-model="vm.page.selectedRelPageRowCount">
+                                    <option value="10">10</option>
+                                    <option value="50">50</option>
+                                    <option value="100">100</option>
+                                </select> {{vm.page.selectedRelPage}}-{{vm.responseData.relPage.totalPage}} /
+                                {{vm.responseData.relPage.totalCount | number}}<span translate="common.few">嫄�</span>
+                            </label>
+                        </div>
+                    </div>
+                    <div class="btn-group" style="left: 975px; padding: 5px">
+                        <button aria-expanded="false" aria-haspopup="true"
+                                tabindex="-1"
+                                class="btn btn-secondary dropdown-toggle"
+                                data-toggle="dropdown" type="button"><span translate="common.addFunction">異붽�湲곕뒫</span>
+                        </button>
+                        <div aria-labelledby="dropdownMenuButton2" class="dropdown-menu left-menu"
+                             x-placement="bottom-start" >
+                            <!--<a class="dropdown-item cursor" form-submit="issueListForm" make-search-conditions="fn.makeSearchConditions()"> <span translate="common.allDownloadExcel">�뿊�� �떎�슫濡쒕뱶</span></a>-->
+                            <a class="dropdown-item cursor" ng-click="fn.addRelationIssueTableConfig()"> <span translate="issue.settingTableDisplay">�뀒�씠釉� �몴�떆 �꽕�젙</span></a>
+                            <a class="dropdown-item cursor" ng-click="fn.removeRelationIssue()"> <span translate="common.selectDelete">�궘�젣</span></a>
                         </div>
                     </div>
                 </div>
 
-                <h6 class="todo-content-subheader mt-20" translate="issue.relationIssue">�뿰愿� �씪媛�</h6>
-                <!--    �뀒�씠釉� -->
+                <!--  �뿰愿� �씠�뒋 �뀒�씠釉� -->
                 <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="true"></js-table>
 
-                    <div class="row">
+                    <div class="row" ng-if="vm.viewer.modifyPermissionCheck">
                         <div class="col-sm-4">
                             <select id="relationIssueType"
                                     name="relationIssueType"
@@ -427,7 +543,7 @@
                             <js-autocomplete-single data-input-name="issue"
                                                     selected-model="vm.form.issues"
                                                     search="vm.issueName"
-                                                    source="fn.getIssueList(vm.issueName, vm.form.issues, vm.autoCompletePage.issue.page, fn.getIssueListCallBack)"
+                                                    source="fn.getRelIssueList(vm.issueName, vm.issueTypeId, vm.form.issues, vm.autoCompletePage.issue.page, fn.getIssueListCallBack)"
                                                     page="vm.autoCompletePage.issue.page"
                                                     total-page="vm.autoCompletePage.issue.totalPage"
                                                     input-disabled="false"
@@ -435,27 +551,89 @@
                                                     extra-settings="{ displayProp : 'title' , idProp : 'id', imageable : false, imagePathProp : '',
                                             type : '', maxlength : 200, autoResize : true, stopRemoveBodyEvent : true }"></js-autocomplete-single>
                         </div>
-                        <div class="col-auto vertical-middle">
-                            <button type="button" class="btn btn-primary form-control input-sm"
+                        <div class="col-auto vertical-middle" style="display: flex">
+                            <button type="button" class="btn btn-primary"
                                     ng-click="fn.addRelationIssue()"
-                                    translate="issue.addRelationIssue">異붽�</button>
+                                    translate="issue.addRelationIssue">�뿰愿� �씠�뒋 異붽�</button>
+                            <button type="button" class="btn btn-sm btn-primary btn-roundRel  offset-1"
+                                    ng-click="fn.addRelationIssueForm(vm.viewer.id)">
+                                <i class="os-icon os-icon-plus"><span></span></i>
+                            </button>
                         </div>
-
+                    </div>
+                    <div class="controls-below-table text-center">
+                        <ul uib-pagination
+                            boundary-links-numbes="true"
+                            items-per-page="vm.page.selectedRelPageRowCount"
+                            total-items="vm.responseData.relPage.totalCount"
+                            ng-model="vm.page.selectedRelPage"
+                            max-size="10"
+                            ng-click="fn.getIssueDetail(vm.page.selectedRelPage - 1, vm.page.selectedDownPage - 1)"
+                            class="pagination pagination-sm"
+                            previous-text="&lt;"
+                            next-text="&gt;"
+                            first-text=""
+                            last-text="">
+                        </ul>
                     </div>
                 </div>
 
-                <h6 class="todo-content-subheader mt-20" translate="issue.downIssue">�븯�쐞 �씪媛�</h6>
-                <!--    �뀒�씠釉� -->
+                <div class="row mt-30">
+                    <div class="col-md-8">
+                        <span class="info_detail_font h3" translate="issue.downIssue">�븯�쐞 �씠�뒋</span>
+                    </div>
+                    <!--<div class="col-sm-2">
+                        <a><button type="button" class="btn btn-darkgrey offset-7" ng-if="vm.viewer.modifyPermissionCheck"
+                                ng-click="fn.modifyDownIssueStatus()">
+                                <span ng-if="vm.viewer.modifyPermissionCheck" translate="common.updateDownIssueAllStatus">�븯�쐞�씠�뒋 �긽�깭 �쟾泥� 蹂�寃�</span>
+                        </button></a>
+                    </div>
+                    <div class="col-sm-1">
+                        <button class="btn btn-darkgrey offset-10"  ng-click="fn.addDownIssueTableConfig()" type="button"><span translate="issue.settingTableDisplay">�뀒�씠釉� �몴�떆 �꽕�젙</span></button>
+                    </div>-->
+                    <div class="col-md-5 mt-2">
+                        <div class="dataTables_length">
+                            <label>
+                                <select name="downPageRow"
+                                        tabindex="-1"
+                                        class="form-control form-control-sm"
+                                        ng-change="fn.changeDetailPageRowCount()"
+                                        ng-model="vm.page.selectedDownPageRowCount">
+                                    <option value="10">10</option>
+                                    <option value="50">50</option>
+                                    <option value="100">100</option>
+                                </select> {{vm.page.selectedDownPage}}-{{vm.responseData.downPage.totalPage}} /
+                                {{vm.responseData.downPage.totalCount | number}}<span translate="common.few">嫄�</span>
+                            </label>
+                        </div>
+                    </div>
+                    <div class="btn-group" style="left: 730px; padding: 5px">
+                        <button aria-expanded="false" aria-haspopup="true"
+                                tabindex="-1"
+                                class="btn btn-secondary dropdown-toggle"
+                                data-toggle="dropdown" type="button"><span translate="common.addFunction">異붽�湲곕뒫</span>
+                        </button>
+                        <div aria-labelledby="dropdownMenuButton2" class="dropdown-menu left-menu"
+                             x-placement="bottom-start" >
+                            <!--<a class="dropdown-item cursor" form-submit="issueListForm" make-search-conditions="fn.makeSearchConditions()"> <span translate="common.allDownloadExcel">�뿊�� �떎�슫濡쒕뱶</span></a>-->
+                            <a class="dropdown-item cursor" ng-if="vm.viewer.modifyPermissionCheck" ng-click="fn.modifyDownIssueStatus()"> <span translate="common.updateDownIssueStatus">�븯�쐞�씠�뒋 �긽�깭 蹂�寃�</span></a>
+                            <a class="dropdown-item cursor" ng-click="fn.addDownIssueTableConfig()"> <span translate="issue.settingTableDisplay">�뀒�씠釉� �몴�떆 �꽕�젙</span></a>
+                            <a class="dropdown-item cursor" ng-click="fn.removeDownIssue()"> <span translate="common.selectDelete">�궘�젣</span></a>
+                        </div>
+                    </div>
+                </div>
+
+                <!-- �븯�쐞 �씠�뒋 �뀒�씠釉� -->
                 <div class="mt-10 issue-detail-word-break width-100">
                     <js-table data="vm.viewer.issueDownVos" table-configs="vm.downTableConfigs"
-                              event="downTableEvent" detail-view="true" hide-header="false" use-sort="false"></js-table>
+                              event="downTableEvent" detail-view="true" hide-header="false" use-sort="true"></js-table>
 
-                    <div class="row">
+                    <div class="row" ng-if="vm.viewer.modifyPermissionCheck">
                         <div class="col-sm-6">
                             <js-autocomplete-single data-input-name="issue"
                                                     selected-model="vm.form.issuesDown"
                                                     search="vm.issueNameDown"
-                                                    source="fn.getIssueList(vm.issueNameDown, vm.form.issuesDown, vm.autoCompletePageDown.issue.page, fn.getIssueListCallBack)"
+                                                    source="fn.getDownIssueList(vm.issueNameDown, vm.issueTypeId, vm.viewer.parentIssueVo.id, vm.form.issuesDown, vm.autoCompletePageDown.issue.page, fn.getDownIssueListCallBack)"
                                                     page="vm.autoCompletePageDown.issue.page"
                                                     total-page="vm.autoCompletePageDown.issue.totalPage"
                                                     input-disabled="false"
@@ -463,18 +641,36 @@
                                                     extra-settings="{ displayProp : 'title' , idProp : 'id', imageable : false, imagePathProp : '',
                                             type : '', maxlength : 200, autoResize : true, stopRemoveBodyEvent : true }"></js-autocomplete-single>
                         </div>
-                        <div class="col-auto vertical-middle">
-                            <button type="button" class="btn btn-primary form-control input-sm"
+                        <div class="col-auto vertical-middle" style="display: flex">
+                            <button type="button" class="btn btn-primary"
                                     ng-click="fn.addDownIssue()"
                                     translate="issue.addDownIssue">異붽�</button>
+                            <button type="button" class="btn btn-sm btn-primary btn-roundRel  offset-1"
+                                    ng-click="fn.addDownIssueForm(vm.viewer.id)">
+                                <i class="os-icon os-icon-plus"><span></span></i>
+                            </button>
                         </div>
-
+                    </div>
+                    <div class="controls-below-table text-center">
+                        <ul uib-pagination
+                            boundary-links-numbes="true"
+                            items-per-page="vm.page.selectedDownPageRowCount"
+                            total-items="vm.responseData.downPage.totalCount"
+                            ng-model="vm.page.selectedDownPage"
+                            max-size="10"
+                            ng-click="fn.getIssueDetail(vm.page.selectedRelPage - 1, vm.page.selectedDownPage - 1)"
+                            class="pagination pagination-sm"
+                            previous-text="&lt;"
+                            next-text="&gt;"
+                            first-text=""
+                            last-text="">
+                        </ul>
                     </div>
                 </div>
 
-                <h6 class="todo-content-subheader mt-20" translate="common.content">�궡�슜</h6>
+                <h6 class="todo-content-subheader mt-30" translate="common.content">�궡�슜</h6>
                 <div class="box mt-10 issue-detail-word-break width-100" >
-                    <div ng-bind-html="$root.$sce.trustAsHtml(vm.viewer.description)"></div>
+                    <div class="issue-detail-tab" ng-bind-html="$root.$sce.trustAsHtml(vm.viewer.description)"></div>
                     <span class="fc-grey" ng-if="!$root.isDefined(vm.viewer.description)" translate="common.noContent">
                         �궡�슜�씠 �뾾�뒿�땲�떎.
                     </span>
@@ -519,19 +715,31 @@
                         <span translate="common.noAttachedFile">泥⑤��맂 �뙆�씪�씠 �뾾�뒿�땲�떎.</span>
                     </div>
                 </div>
-
                 <div class="row">
                     <div class="col-sm-12">
-                        <h6 class="todo-content-subheader mt-20"><span translate="issue.previewImage">�씠誘몄� 誘몃━ 蹂닿린</span>
-                        </h6>
-                        <div class="pdt10">
-                            <issue-detail-image-preview images="vm.images"></issue-detail-image-preview>
-                        </div>
+                        <h6 class="todo-content-subheader mt-20" translate="common.writeComment">�뙎湲� �벐湲�</h6>
+                        <form name="commentForm" ng-enter="fn.addComment()">
+                            <div class="form-group row mt-10">
+                                <div class="col-sm-12">
+                                    <div class="input-group">
+                                        <input class="form-control"
+                                               kr-input
+                                               maxlength="300"
+                                               placeholder="{{'common.pleaseEnterComments' | translate}}"
+                                               ng-model="vm.viewer.comment"
+                                               type="text">
+                                        <div class="input-group-prepend">
+                                            <div class="input-group-text2"
+                                                 ng-class="{ 'disable' : !$root.isDefined(vm.viewer.comment) }"
+                                                 ng-click="fn.addComment()">
+                                                <i class="os-icon os-icon-mail-18"></i>
+                                            </div>
+                                        </div>
+                                    </div>
+                                </div>
+                            </div>
+                        </form>
                     </div>
-                    <div ng-show="vm.images.length < 1" class="detail-not-elements width-100">
-                        <span translate="common.noImage">泥⑤��맂 �씠誘몄�媛� �뾾�뒿�땲�떎.</span>
-                    </div>
-
                 </div>
 
                 <!--    �솢�룞 �궡�뿭   -->
@@ -546,53 +754,77 @@
                                            ng-click="fn.updateActiveHistory()"><span
                                                 translate="common.fullView">�쟾泥대낫湲�</span></a>
                                     </li>
-                                    <li class="nav-item cursor">
+                                    <!--<li class="nav-item cursor">
                                         <a class="nav-link" ng-class="{ 'active' : vm.activeTab == 'REPLY' }"
                                            ng-click="vm.activeTab = 'REPLY'"><span translate="common.comments">�뙎湲�</span></a>
-                                    </li>
+                                    </li>-->
                                     <li class="nav-item cursor">
                                         <a class="nav-link" ng-class="{ 'active' : vm.activeTab == 'RECODE' }"
                                            ng-click="vm.activeTab = 'RECODE'"><span translate="common.record">湲곕줉</span></a>
                                     </li>
+                                    <li class="nav-item cursor">
+                                        <a class="nav-link" ng-class="{ 'active' : vm.activeTab == 'RECODE_DOWN' }"
+                                           ng-click="vm.activeTab = 'RECODE_DOWN'"><span translate="common.recordDown">�븯�쐞�씠�뒋 湲곕줉</span></a>
+                                    </li>
+                                    <!--<li class="nav-item cursor">
+                                        <a class="nav-link" ng-class="{ 'active' : vm.activeTab == 'REPLY_DOWN' }"
+                                           ng-click="vm.activeTab = 'REPLY_DOWN'"><span translate="common.downComments">�븯�쐞�씠�뒋 �뙎湲�</span></a>
+                                    </li>-->
                                 </ul>
                             </div>
 
                             <div class="tab-content">
                                 <!--    �쟾泥� 湲곕줉 蹂닿린    -->
                                 <div ng-if="vm.activeTab == 'ALL'">
-                                    <div class="ae-item" ng-repeat="activeHistory in vm.viewer.activeHistory">
-                                        <!--    湲곕줉�씤 寃쎌슦  -->
+                                    <div class="no-cont2" ng-if="vm.viewer.activeHistory.length < 1" translate="common.noRecord">
+                                        湲곕줉�씠 �뾾�뒿�땲�떎.
+                                    </div>
+                                    <div class="ae-item row" ng-repeat="activeHistory in vm.viewer.activeHistory">
+                                        <!--    湲곕줉�씤 寃쎌슦   -->
                                         <div class="aei-content"
                                              ng-if="$root.isDefined(activeHistory.issueHistoryType)">
-                                            <h6 ng-if="activeHistory.issueHistoryType == 'TOTAL'"
+                                            <!--<h6 ng-if="activeHistory.issueHistoryType == 'TOTAL'"
                                                 translate="issue.summaryIssueActivity">�씠�뒋 �솢�룞 �궡�뿭 �슂�빟 <i
-                                                    class="os-icon os-icon-arrow-down"></i></h6>
-                                            <div dom-append dom="activeHistory.description"></div>
+                                                    class="os-icon os-icon-arrow-down"></i></h6>-->
+                                            <div ng-if="!$root.isDefined(activeHistory.desc)" dom-append dom="activeHistory.description"></div>
+                                            <div ng-if="$root.isDefined(activeHistory.desc)" dom-append dom="activeHistory.desc"></div>
                                         </div>
                                         <!--    �뙎湲��씤 寃쎌슦  -->
-                                        <div class="aei-image" ng-if="!$root.isDefined(activeHistory.issueHistoryType)">
+                                        <div ng-if="!$root.isDefined(activeHistory.issueHistoryType)"
+                                             ng-show="vm.viewer.title !== activeHistory.title">
+                                            <span class="dot">
+                                                *�븯�쐞�씠�뒋 : {{::activeHistory.title}}
+                                            </span>
+                                        </div>
+                                        <div class="aei-image" style="position: absolute; top: 30%" ng-if="!$root.isDefined(activeHistory.issueHistoryType)">
                                             <div class="user-avatar-w">
-                                                <img alt="image" ng-src="{{::activeHistory.profile}}">
+                                                <img ng-show="vm.viewer.title !== activeHistory.title"
+                                                    style="margin-top: 15px" alt="image" ng-src="{{::activeHistory.profile}}">
+                                                <img ng-show="vm.viewer.title === activeHistory.title"
+                                                     alt="image" ng-src="{{::activeHistory.profile}}">
                                             </div>
                                         </div>
                                         <div class="aei-content"
                                              ng-if="!$root.isDefined(activeHistory.issueHistoryType)">
-                                            <h6 class="aei-title">
+                                            <h6 class="aei-title mt-1 ml-3per">
                                                 {{::activeHistory.registerName}}
                                             </h6>
-                                            <div class="date-break">
+                                            <div class="date-break mt-2 ml-3per">
                                                 <span>{{::activeHistory.registerDate}}</span>
                                             </div>
                                             <div class="aei-delete"
-                                                 ng-click="fn.removeComment(comment)"
-                                                 ng-show="$root.user.id == comment.registerId">
+                                                 ng-click="fn.removeComment(activeHistory)"
+                                                 ng-show="vm.viewer.modifyPermissionCheck || $root.user.id === activeHistory.registerId">
                                                 <i class="os-icon os-icon-close"></i>
                                             </div>
                                             <div class="chat-messages">
-                                                <div class="message">
+                                                <div class="message ml-3per">
                                                     <div class="message-content">
                                                         <span class="issue-detail-word-break">{{::activeHistory.description}}</span>
                                                     </div>
+                                                    <!--<div class="message-content" ng-if="activeHistory.desc === null">
+                                                        <span class="issue-detail-word-break">{{::activeHistory.desc}}</span>
+                                                    </div>-->
                                                 </div>
 
                                             </div>
@@ -621,7 +853,7 @@
                                             </div>
                                             <div class="aei-delete"
                                                  ng-click="fn.removeComment(comment)"
-                                                 ng-show="$root.user.id == comment.registerId">
+                                                 ng-show="vm.viewer.modifyPermissionCheck || $root.user.id == comment.registerId">
                                                 <i class="os-icon os-icon-close"></i>
                                             </div>
                                             <div class="chat-messages">
@@ -630,50 +862,135 @@
                                                         <span class="issue-detail-word-break">{{::comment.description}}</span>
                                                     </div>
                                                 </div>
-
                                             </div>
                                         </div>
                                     </div>
-                                    <form name="commentForm" ng-enter="fn.addComment()">
-                                        <div class="form-group row ">
-                                            <div class="col-sm-12">
-                                                <div class="input-group">
-                                                    <input class="form-control"
-                                                           kr-input
-                                                           maxlength="300"
-                                                           placeholder="{{'common.pleaseEnterComments' | translate}}"
-                                                           ng-model="vm.viewer.comment"
-                                                           type="text">
-                                                    <div class="input-group-prepend">
-                                                        <div class="input-group-text2"
-                                                             ng-class="{ 'disable' : !$root.isDefined(vm.viewer.comment) }"
-                                                             ng-click="fn.addComment()">
-                                                            <i class="os-icon os-icon-mail-18"></i>
-                                                        </div>
-                                                    </div>
-                                                </div>
-                                            </div>
-                                        </div>
-                                    </form>
                                 </div>
 
                                 <!--    湲곕줉 蹂닿린    -->
                                 <div ng-if="vm.activeTab == 'RECODE'">
-                                    <div class="no-cont2"
-                                         ng-if="vm.viewer.issueHistoryVos.length < 1"
-                                         translate="common.noRecord">
+                                    <div class="no-cont2" ng-if="vm.viewer.activeParentHistory.length < 1" translate="common.noRecord">
                                         湲곕줉�씠 �뾾�뒿�땲�떎.
                                     </div>
 
-                                    <div class="activity-item"
-                                         ng-repeat="issueHistory in vm.viewer.issueHistoryVos">
-                                        <h6 ng-if="issueHistory.issueHistoryType == 'TOTAL'"
+                                    <div class="ae-item" ng-repeat="issueHistory in vm.viewer.activeParentHistory">
+                                        <!--<h6 ng-if="issueHistory.issueHistoryType == 'TOTAL'"
                                             translate="issue.summaryIssueActivity">�씠�뒋 �솢�룞 �궡�뿭 �슂�빟
                                             <i class="os-icon os-icon-arrow-down"></i>
-                                        </h6>
-                                        <div class="activity-content">
+                                        </h6>-->
+                                        <div class="aei-content" ng-if="$root.isDefined(issueHistory.issueHistoryType)">
                                             <div dom-append dom="issueHistory.description"></div>
                                         </div>
+                                        <!--    �뙎湲��씤 寃쎌슦  -->
+                                        <div class="aei-image" style="position: absolute; top: 30%" ng-if="!$root.isDefined(issueHistory.issueHistoryType)">
+                                            <div class="user-avatar-w">
+                                                <img alt="image" ng-src="{{::issueHistory.profile}}">
+                                            </div>
+                                        </div>
+                                        <div class="aei-content"
+                                             ng-if="!$root.isDefined(issueHistory.issueHistoryType)">
+                                            <h6 class="aei-title mt-1 ml-3per">
+                                                {{::issueHistory.registerName}}
+                                            </h6>
+                                            <div class="date-break mt-2 ml-3per">
+                                                <span>{{::issueHistory.registerDate}}</span>
+                                            </div>
+                                            <div class="aei-delete"
+                                                 ng-click="fn.removeComment(issueHistory)"
+                                                 ng-show="vm.viewer.modifyPermissionCheck || $root.user.id == issueHistory.registerId">
+                                                <i class="os-icon os-icon-close"></i>
+                                            </div>
+                                            <div class="chat-messages">
+                                                <div class="message ml-3per">
+                                                    <div class="message-content">
+                                                        <span class="issue-detail-word-break">{{::issueHistory.description}}</span>
+                                                    </div>
+                                                </div>
+                                            </div>
+                                        </div>
+                                    </div>
+                                </div>
+                                <!--    �븯�쐞�씠�뒋 湲곕줉 蹂닿린    -->
+                                <div ng-if="vm.activeTab == 'RECODE_DOWN'">
+                                    <div class="no-cont2" ng-if="!$root.isDefined(vm.viewer.activeDownAllHistory) || vm.viewer.activeDownAllHistory.length < 1" translate="common.noRecord">
+                                        湲곕줉�씠 �뾾�뒿�땲�떎.
+                                    </div>
+                                    <div class="ae-item row" ng-repeat="issueDownHistory in vm.viewer.activeDownAllHistory">
+                                        <!--    湲곕줉�씤 寃쎌슦  -->
+                                        <div class="aei-content" ng-if="$root.isDefined(issueDownHistory.issueHistoryType)">
+                                            <div dom-append dom="issueDownHistory.desc"></div>
+                                        </div>
+                                        <!--    �뙎湲��씤 寃쎌슦  -->
+                                        <div class="aei-content pb-3" ng-if="!$root.isDefined(issueDownHistory.issueHistoryType)">
+                                            <div class="dot">
+                                                *�븯�쐞�씠�뒋 : {{::issueDownHistory.title}}
+                                            </div>
+                                        </div>
+                                        <div class="aei-image" style="position: absolute; top: 30%" ng-if="!$root.isDefined(issueDownHistory.issueHistoryType)">
+                                            <div class="user-avatar-w ">
+                                                <img style="margin-top: 15px" alt="image" ng-src="{{::issueDownHistory.profile}}">
+                                            </div>
+                                        </div>
+                                        <div class="aei-content" ng-if="!$root.isDefined(issueDownHistory.issueHistoryType)">
+                                            <h6 class="aei-title mt-1 ml-3per">
+                                                {{::issueDownHistory.registerName}}
+                                            </h6>
+                                            <div class="date-break mt-2" style="margin-left: 3.3%">
+                                                <span>{{::issueDownHistory.registerDate}}</span>
+                                            </div>
+                                            <div class="aei-delete"
+                                                 ng-click="fn.removeComment(issueDownHistory)"
+                                                 ng-show="vm.viewer.modifyPermissionCheck || $root.user.id == issueDownHistory.registerId">
+                                                <i class="os-icon os-icon-close"></i>
+                                            </div>
+                                            <div class="chat-messages">
+                                                <div class="message" style="margin-left: 3.3%">
+                                                    <div class="message-content">
+                                                        <span class="issue-detail-word-break">{{::issueDownHistory.description}}</span>
+                                                    </div>
+                                                </div>
+                                            </div>
+                                        </div>
+                                    </div>
+                                </div>
+
+                                <!--    �븯�쐞�씠�뒋 �뙎湲� 蹂닿린    -->
+                                <div ng-if="vm.activeTab == 'REPLY_DOWN'">
+                                    <div class="no-cont2" ng-if="$scope.vm.viewer.downComment.length < 1"
+                                         translate="common.noComments">
+                                        �뙎湲��씠 �뾾�뒿�땲�떎.
+                                    </div>
+                                    <div class="ae-item" ng-repeat="comment in vm.viewer.downComment">
+                                        <div class="re-title">
+                                            <div class='dot'>
+                                                �븯�쐞�씠�뒋: {{::comment.title}}
+                                            </div>
+                                        </div>
+                                        <div class="aei-image">
+                                            <div class="user-avatar-w">
+                                                <img alt="image" ng-src="{{::comment.profile}}">
+                                            </div>
+                                        </div>
+                                        <div class="aei-content">
+                                            <h6 class="aei-title">
+                                                {{::comment.registerName}}
+                                            </h6>
+                                            <div class="date-break">
+                                                <span>{{::comment.registerDate}}</span>
+                                            </div>
+                                            <div class="aei-delete"
+                                                 ng-click="fn.removeComment(comment)"
+                                                 ng-show="vm.viewer.modifyPermissionCheck || $root.user.id == comment.registerId">
+                                                <i class="os-icon os-icon-close"></i>
+                                            </div>
+                                            <div class="chat-messages">
+                                                <div class="message">
+                                                    <div class="message-content">
+                                                        <span class="issue-detail-word-break">{{::comment.description}}</span>
+                                                    </div>
+                                                </div>
+                                            </div>
+                                        </div>
                                     </div>
                                 </div>
                             </div>

--
Gitblit v1.8.0