From ab7e04765622b7ef31bb891a91e89abcf203c31d Mon Sep 17 00:00:00 2001 From: jhjang <jhjang@maprex.co.kr> Date: 목, 09 12월 2021 14:35:15 +0900 Subject: [PATCH] Merge branch 'master' of http://192.168.0.25:9001/r/owl-kisa --- src/main/webapp/views/issue/issueDetail.html | 269 ++++++++++++++++++++++++++++++++--------------------- 1 files changed, 164 insertions(+), 105 deletions(-) diff --git a/src/main/webapp/views/issue/issueDetail.html b/src/main/webapp/views/issue/issueDetail.html index 6366d1f..27e2501 100644 --- a/src/main/webapp/views/issue/issueDetail.html +++ b/src/main/webapp/views/issue/issueDetail.html @@ -86,38 +86,24 @@ <!-- �긽�꽭 �솕硫� --> <div class="support-ticket-content-w" ng-controller="issueDetailController"> <div class="support-ticket-content"> - <div class="support-ticket-content-header issue-detail-word-break" style="height: 8vh"> + <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> + + <div class=""> + <span class="h3-div">{{vm.viewer.title}}</span> + </div> + <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}} / {{vm.viewer.projectVo.name}}</span> + <span class="tag">{{vm.viewer.projectVo.projectKey}}-{{vm.viewer.issueNumber}} / {{vm.viewer.projectVo.name}} / <span>API : {{vm.viewer.isApi}}</span></span> </span> </div> - <span class="h3-div">{{vm.viewer.title}}</span> </span> - <div class="col-sm-2"> - <div class="form-group ml-4"> - <label class="issue-detail-label"><span translate="issue.issueType">�씠�뒋 �쑀�삎</span> </label> - <span class="status-pill smaller" - ng-style="{'background-color': vm.viewer.issueTypeVo.color }"></span><span>{{vm.viewer.issueTypeVo.name}}</span> - </div> - </div> - <div class="col-sm-2"> - <div class="form-group"> - {{vm.viewer.registerDate}} - </div> - </div> - - <div class="form-group"> - <label class="issue-detail-label"><span translate="common.register">�벑濡앹옄</span></label> - <span class="select3-selection__choice"> - <span class="avatar-w"><img ng-src="{{vm.viewer.registerVo.profile}}"></span> - <span>{{vm.viewer.registerVo.byName}}</span> - </span> - </div> <a class="show-ticket-info cursor"> - <i class="os-icon os-icon-email-forward mr-20" ng-click="fn.sendMail(vm.viewer.id, vm.viewer.projectVo.id)" data-toggle="tooltip" data-placement="right" title="�떎瑜� �궗�슜�옄�뿉寃� �씠�뒋 蹂대궡湲�"></i> + <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-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> @@ -126,7 +112,15 @@ <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> @@ -171,8 +165,8 @@ <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-1"><span translate="common.priority">�슦�꽑 �닚�쐞</span></label> + <label class="issue-detail-label offset-detail-2"><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> @@ -190,34 +184,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}} / {{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> - <button style="display: inline">1111</button> + <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>: @@ -247,7 +315,7 @@ <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> @@ -261,16 +329,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>: @@ -307,7 +376,7 @@ <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> @@ -321,16 +390,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>: @@ -367,7 +438,7 @@ <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> @@ -381,38 +452,18 @@ </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> + <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> - <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> @@ -433,7 +484,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.getIssueList(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" @@ -441,27 +492,46 @@ 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> - <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-click="fn.modifyDownIssueStatus()"> + <span 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> + + <!-- �븯�쐞 �씠�뒋 �뀒�씠釉� --> <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> <div class="row"> + <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.form.issuesDown, vm.autoCompletePageDown.issue.page, fn.getDownIssueListCallBack)" page="vm.autoCompletePageDown.issue.page" total-page="vm.autoCompletePageDown.issue.totalPage" input-disabled="false" @@ -469,8 +539,8 @@ 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> </div> @@ -478,9 +548,9 @@ </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> @@ -524,20 +594,6 @@ <div ng-show="vm.viewer.attachedFileVos.length < 1" class="detail-not-elements"> <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> - </div> - <div ng-show="vm.images.length < 1" class="detail-not-elements width-100"> - <span translate="common.noImage">泥⑤��맂 �씠誘몄�媛� �뾾�뒿�땲�떎.</span> - </div> - </div> <!-- �솢�룞 �궡�뿭 --> @@ -670,6 +726,9 @@ translate="common.noRecord"> 湲곕줉�씠 �뾾�뒿�땲�떎. </div> + <div> + {{vm.viewer.issueHistoryVos}} + </div> <div class="activity-item" ng-repeat="issueHistory in vm.viewer.issueHistoryVos"> -- Gitblit v1.8.0