From fe21896bff9b9305df0294e0352b343e0dd4d0b9 Mon Sep 17 00:00:00 2001 From: 이민희 <mhlee@maprex.co.kr> Date: 월, 14 3월 2022 12:55:20 +0900 Subject: [PATCH] - api로 이슈 추가 시 하위이슈기준 IP/SITE 일 경우 코드 수정 --- src/main/webapp/views/issue/issueDetail.html | 613 +++++++++++++++++++++++++++++++++++++++++++++++------- 1 files changed, 526 insertions(+), 87 deletions(-) diff --git a/src/main/webapp/views/issue/issueDetail.html b/src/main/webapp/views/issue/issueDetail.html index 4d57762..3a9aad2 100644 --- a/src/main/webapp/views/issue/issueDetail.html +++ b/src/main/webapp/views/issue/issueDetail.html @@ -87,7 +87,7 @@ <div class="support-ticket-content-w" ng-controller="issueDetailController"> <div class="support-ticket-content"> <span ng-if="vm.viewer.parentIssueVo != null" class="badge" ng-style="{'background-color' : '#353535', 'border-color' : vm.viewer.issueStatusVo.color, 'color' : '#FFFFFF' }"> - <span>�긽�쐞 �씠�뒋:{{vm.viewer.parentIssueVo.title}}</span> + <span class="cursor" ng-click="fn.goParentIssue()">�긽�쐞 �씠�뒋:{{vm.viewer.parentIssueVo.title}}</span> </span> <div class=""> @@ -97,18 +97,21 @@ <span class="ticket-header"> <div class="tasks-header-w"> <span class="tags"> - <span class="tag">{{vm.viewer.projectVo.projectKey}}-{{vm.viewer.issueNumber}} / {{vm.viewer.projectVo.name}}</span> + <span class="tag">{{vm.viewer.projectVo.projectKey}}-{{vm.viewer.issueNumber}} / {{vm.viewer.projectVo.name}} <span ng-if="vm.viewer.isApi == 'Y'">/</span> <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.sendMailAll()" data-toggle="tooltip" data-placement="right" title="�떎瑜� �궗�슜�옄�뿉寃� �씠�뒋 蹂대궡湲�"></i> + <i class="os-icon os-icon-email-2-at2 mr-20" ng-if="vm.viewer.modifyPermissionCheck" ng-click="fn.sendCommonMail()" 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> +<!-- <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, vm.viewer.downTotalCount)" + ng-if="vm.viewer.modifyPermissionCheck" data-toggle="tooltip" data-placement="left" title="�씠�뒋 �닔�젙 �븯湲�"></i> + <!-- �긽�쐞 �씠�뒋媛� �엳�쓣�븣 �뮘濡쒓�湲� 踰꾪듉 �깮�꽦 --> + <span ng-if="vm.issueIds[0] != vm.viewer.id && 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> @@ -139,6 +142,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> @@ -165,12 +169,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-detail-1"><span translate="common.priority">�슦�꽑 �닚�쐞</span></label> - <label class="issue-detail-label offset-detail-2"><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"> @@ -251,7 +255,7 @@ <!-- 硫��떚 ���젆�듃 --> <div ng-switch-when="MULTI_SELECT"> <span class="issue-detail-word-break" - ng-repeat="useValue in issueCustomField.useValues">{{::useValue.value}}, </span> + ng-repeat="useValue in issueCustomField.useValues">{{::useValue.value}}</span> <span ng-if="!$root.isDefined(issueCustomField.useValues)">-</span> </div> @@ -311,11 +315,40 @@ </div> </div> - <div class="col-sm-2"> + <div class="col-sm-2" ng-if="vm.viewer.modifyPermissionCheck"> <div class="form-group"> <div class=""> <span translate="companyField.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" ng-if="!vm.viewer.modifyPermissionCheck"> + <div class="form-group"> + <div class=""> + <span translate="companyField.email">�씠硫붿씪</span>: + <span>{{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> + + <div class="col-sm-2"> + <div class="form-group"> + <div class=""> + <span translate="companyField.ipRange">IP ���뿭��</span>: + <span ng-if="vm.viewer.issueCompanyVos[0].ipStart != null && vm.viewer.issueCompanyVos[0].ipStart != ''"> + {{vm.viewer.issueCompanyVos[0].ipStart}} ~ {{vm.viewer.issueCompanyVos[0].ipEnd}} + </span> </div> </div> </div> @@ -325,6 +358,51 @@ <div class=""> <span translate="companyField.memo">鍮꾧퀬</span>: <span>{{vm.viewer.issueCompanyVos[0].memo}}</span> + </div> + </div> + </div> + + <div class="col-sm-2"> + <div class="form-group"> + <div class=""> + <span translate="companyField.companyType">湲곗뾽援щ텇</span>: + <span>{{vm.viewer.issueCompanyVos[0].companyTypeName}}</span> + </div> + </div> + </div> + + <div class="col-sm-2"> + <div class="form-group"> + <div class=""> + <span translate="companyField.parentSector">�뾽醫�(��遺꾨쪟)</span>: + <span>{{vm.viewer.issueCompanyVos[0].parentSectorName}}</span> + </div> + </div> + </div> + + <div class="col-sm-2"> + <div class="form-group"> + <div class=""> + <span translate="companyField.childSector">�뾽醫�(以묐텇瑜�)</span>: + <span>{{vm.viewer.issueCompanyVos[0].childSectorName}}</span> + </div> + </div> + </div> + + <div class="col-sm-2"> + <div class="form-group"> + <div class=""> + <span translate="companyField.region">吏��뿭</span>: + <span>{{vm.viewer.issueCompanyVos[0].regionName}}</span> + </div> + </div> + </div> + + <div class="col-sm-2"> + <div class="form-group"> + <div class=""> + <span translate="companyField.status">�긽�깭</span>: + <span>{{vm.viewer.issueCompanyVos[0].statusName}}</span> </div> </div> </div> @@ -372,11 +450,29 @@ </div> </div> - <div class="col-sm-2"> + <div class="col-sm-2" ng-if="vm.viewer.modifyPermissionCheck"> <div class="form-group"> <div class=""> <span translate="ispField.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" ng-if="!vm.viewer.modifyPermissionCheck"> + <div class="form-group"> + <div class=""> + <span translate="ispField.email">�씠硫붿씪</span>: + <span>{{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> @@ -434,11 +530,29 @@ </div> </div> - <div class="col-sm-2"> + <div class="col-sm-2" ng-if="vm.viewer.modifyPermissionCheck"> <div class="form-group"> <div class=""> <span translate="hostingField.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" ng-if="!vm.viewer.modifyPermissionCheck"> + <div class="form-group"> + <div class=""> + <span translate="hostingField.email">�씠硫붿씪</span>: + <span>{{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> @@ -458,17 +572,46 @@ <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-12" ng-click="fn.addRelationIssueTableConfig()" type="button"><span translate="issue.settingTableDisplay">�뀒�씠釉� �몴�떆 �꽕�젙</span></button> + <!--<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.subPage.selectedRelPageRowCount"> + <option value="10">10</option> + <option value="50">50</option> + <option value="100">100</option> + </select> {{vm.subPage.selectedRelPage}}-{{vm.responseData.relTotalPage}} / + {{vm.responseData.relTotalCount | 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> <!-- �뿰愿� �씠�뒋 �뀒�씠釉� --> <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> + <js-rel data="vm.viewer.issueRelationVos" table-configs="vm.relTableConfigs" + event="relTableEvent" detail-view="true" hide-header="false" use-sort="true"></js-rel> - <div class="row"> + <div class="row" ng-if="vm.viewer.modifyPermissionCheck"> <div class="col-sm-4"> <select id="relationIssueType" name="relationIssueType" @@ -484,7 +627,7 @@ <js-autocomplete-single data-input-name="issue" selected-model="vm.form.issues" search="vm.issueName" - source="fn.getIssueList(vm.issueName, vm.issueTypeId, vm.form.issues, vm.autoCompletePage.issue.page, fn.getIssueListCallBack)" + source="fn.getRelIssueList(false, null, 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" @@ -492,40 +635,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> - - <button type="button" class="btn btn-primary form-control input-sm" - ng-click="fn.AddRelation(vm.viewer.id)" - >�뿰愿� 異붽�</button> + <button type="button" class="btn btn-sm btn-primary btn-roundRel offset-1" + ng-click="fn.addRelationIssueForm(vm.viewer.id, vm.viewer.projectVo, vm.viewer.issueTypeVo.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.subPage.selectedRelPageRowCount" + total-items="vm.responseData.relTotalCount" + ng-model="vm.subPage.selectedRelPage" + max-size="10" + ng-click="fn.getIssueDetail(vm.subPage.selectedRelPage - 1, vm.subPage.selectedDownPage - 1)" + class="pagination pagination-sm" + previous-text="<" + next-text=">" + first-text="" + last-text=""> + </ul> </div> </div> <div class="row mt-30"> - <div class="col-md-10"> + <div class="col-md-8"> <span class="info_detail_font h3" translate="issue.downIssue">�븯�쐞 �씠�뒋</span> </div> - <div class="col-md-1"> - <button class="btn btn-darkgrey offset-12" ng-click="fn.addDownIssueTableConfig()" type="button"><span translate="issue.settingTableDisplay">�뀒�씠釉� �몴�떆 �꽕�젙</span></button> + <!--<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.subPage.selectedDownPageRowCount"> + <option value="10">10</option> + <option value="50">50</option> + <option value="100">100</option> + </select> {{vm.subPage.selectedDownPage}}-{{vm.responseData.downTotalPage}} / + {{vm.responseData.downTotalCount | 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> + <js-down data="vm.viewer.issueDownVos" table-configs="vm.downTableConfigs" + event="downTableEvent" detail-view="true" hide-header="false" use-sort="true"></js-down> - <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.issueTypeId, 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" @@ -533,12 +725,30 @@ 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, vm.viewer.projectVo, vm.viewer.issueTypeVo.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.subPage.selectedDownPageRowCount" + total-items="vm.responseData.downTotalCount" + ng-model="vm.subPage.selectedDownPage" + max-size="10" + ng-click="fn.getIssueDetail(vm.subPage.selectedRelPage - 1, vm.subPage.selectedDownPage - 1)" + class="pagination pagination-sm" + previous-text="<" + next-text=">" + first-text="" + last-text=""> + </ul> </div> </div> @@ -589,6 +799,32 @@ <span translate="common.noAttachedFile">泥⑤��맂 �뙆�씪�씠 �뾾�뒿�땲�떎.</span> </div> </div> + <div class="row"> + <div class="col-sm-12"> + <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> <!-- �솢�룞 �궡�뿭 --> <div class="row"> @@ -603,12 +839,20 @@ translate="common.fullView">�쟾泥대낫湲�</span></a> </li> <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> + <a class="nav-link" ng-class="{ 'active' : vm.activeTab == 'MAIL_AND_REPLY' }" + ng-click="vm.activeTab = 'MAIL_AND_REPLY'"><span translate="common.fullMailsAndComments">�쟾泥대낫湲�(硫붿씪+�뙎湲�)</span></a> </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 == 'MAIL_AND_REPLY_DOWN' }" + ng-click="vm.activeTab = 'MAIL_AND_REPLY_DOWN'"><span translate="common.downMailsAndComments">�븯�쐞�씠�뒋(硫붿씪+�뙎湲�)</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> </ul> </div> @@ -616,39 +860,55 @@ <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> @@ -677,7 +937,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"> @@ -686,53 +946,232 @@ <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> - {{vm.viewer.issueHistoryVos}} - </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 == 'MAIL_AND_REPLY'"> + <div class="no-cont2" ng-if="vm.viewer.activeAllMailAndReplyHistory.length < 1" translate="common.noRecord"> + 湲곕줉�씠 �뾾�뒿�땲�떎. + </div> + + <div class="ae-item row" ng-repeat="issueHistory in vm.viewer.activeAllMailAndReplyHistory"> + <!-- 硫붿씪�씤 寃쎌슦 --> + <div class="aei-content" ng-if="$root.isDefined(issueHistory.issueHistoryType)"> + <div ng-if="!$root.isDefined(issueHistory.desc)" dom-append dom="issueHistory.description"></div> + <div ng-if="$root.isDefined(issueHistory.desc)" dom-append dom="issueHistory.desc"></div> + </div> + + <!-- �뙎湲��씤 寃쎌슦 --> + <div ng-if="!$root.isDefined(issueHistory.issueHistoryType)" + ng-show="vm.viewer.title !== issueHistory.title"> + <span class="dot"> + *�븯�쐞�씠�뒋 : {{::issueHistory.title}} + </span> + </div> + <div class="aei-image" style="position: absolute; top: 30%" ng-if="!$root.isDefined(issueHistory.issueHistoryType)"> + <div class="user-avatar-w"> + <img ng-show="vm.viewer.title !== issueHistory.title" + style="margin-top: 15px" alt="image" ng-src="{{::issueHistory.profile}}"> + <img ng-show="vm.viewer.title === issueHistory.title" + 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" style="margin-left: 3.3%"> + <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 == 'MAIL_AND_REPLY_DOWN'"> + <div class="no-cont2" ng-if="vm.viewer.activeDownMailAndReplyHistory.length < 1" translate="common.noRecord"> + 湲곕줉�씠 �뾾�뒿�땲�떎. + </div> + + <div class="ae-item row" ng-repeat="issueHistory in vm.viewer.activeDownMailAndReplyHistory"> + <div class="aei-content" ng-if="$root.isDefined(issueHistory.issueHistoryType)"> + <div dom-append dom="issueHistory.desc"></div> + </div> + + <!-- �뙎湲��씤 寃쎌슦 --> + <div class="aei-content pb-3" ng-if="!$root.isDefined(issueHistory.issueHistoryType)"> + <div class="dot"> + *�븯�쐞�씠�뒋 : {{::issueHistory.title}} + </div> + </div> + <div class="aei-image" style="position: absolute; top: 30%" ng-if="!$root.isDefined(issueHistory.issueHistoryType)"> + <div class="user-avatar-w "> + <img style="margin-top: 15px" 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" style="margin-left: 3.3%"> + <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" style="margin-left: 3.3%"> + <div class="message-content"> + <span class="issue-detail-word-break">{{::issueHistory.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="aei-content pb-3" ng-repeat="comment in vm.viewer.downComment"> + <div class='dot mt-10 mb-10'> + *�븯�쐞�씠�뒋: {{::comment.title}} + </div> + <div class="aei-image" style="position: absolute; top: 30%"> + <div class="user-avatar-w"> + <img style="margin-top: 15px" alt="image" ng-src="{{::comment.profile}}"> + </div> + </div> + <div class="aei-content"> + <h6 class="aei-title mt-1 ml-3per"> + {{::comment.registerName}} + </h6> + <div class="date-break mt-2" style="margin-left: 3.3%"> + <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" style="margin-left: 3.3%"> + <div class="message-content"> + <span class="issue-detail-word-break">{{::comment.description}}</span> + </div> + </div> + </div> + </div> </div> </div> </div> -- Gitblit v1.8.0