<div class="container-fluid" ng-controller="issueListController">
|
<div class="row">
|
<div class="col-sm-12" >
|
<div class="element-wrapper" ng-if="!vm.detailView">
|
<div class="element-box">
|
<div class="row" >
|
<div class="col-sm-12">
|
<div class="searchdiv">
|
<form name="issueSearchForm" role="form" ng-enter="fn.getPageList(0)">
|
<div class="row">
|
<div class="col-sm-6">
|
<div class="input-group">
|
<input class="form-control"
|
type="text"
|
tabindex="-1"
|
maxlength="300"
|
kr-input
|
owl-auto-focus
|
ng-model="vm.search.title"
|
placeholder="{{'issue.pleaseEnterIssueName' | translate}}">
|
<div class="input-group-prepend ml-10">
|
<button class="btn btn-navy" ng-click="fn.getPageList(0)"> <span translate="common.search">검색</span></button>
|
</div>
|
</div>
|
</div>
|
</div>
|
|
<div class="row">
|
<div class="col-sm-12">
|
<div class="tabfilter">
|
<div translate="common.selectedSearchCriteria">선택한 검색 조건</div>
|
<!-- 프로젝트 -->
|
<issue-search-array-view-element lists="vm.projects"
|
type="'project'"></issue-search-array-view-element>
|
|
<!-- 이슈 타입 -->
|
<issue-search-field-key-view-element lists="vm.issueTypes"
|
keys="vm.search.issueTypeIds"></issue-search-field-key-view-element>
|
|
<!-- 이슈 상태 -->
|
<issue-search-field-key-view-element lists="vm.issueStatuses"
|
keys="vm.search.issueStatusIds"></issue-search-field-key-view-element>
|
|
<!-- 이슈 번호 -->
|
<p ng-if="$root.isDefined(vm.search.combinationIssueNumber)">
|
{{vm.search.combinationIssueNumber}}
|
<span ng-click="vm.search.combinationIssueNumber = ''">×</span>
|
</p>
|
|
<!-- 이슈 내용 -->
|
<p ng-if="$root.isDefined(vm.search.description)">
|
{{vm.search.description}}
|
<span ng-click="vm.search.description = ''">×</span>
|
</p>
|
|
<!-- 우선 순위 -->
|
<issue-search-field-key-view-element lists="vm.priorities"
|
keys="vm.search.priorityIds"></issue-search-field-key-view-element>
|
|
<!-- 중요도 -->
|
<issue-search-field-key-view-element lists="vm.severities"
|
keys="vm.search.severityIds"></issue-search-field-key-view-element>
|
|
<!-- 담당자 -->
|
<issue-search-array-view-element lists="vm.users"
|
type="'user'"></issue-search-array-view-element>
|
|
<!-- 등록자 -->
|
<issue-search-array-view-element lists="vm.registers"
|
type="'user'"></issue-search-array-view-element>
|
|
<!-- 시작일 -->
|
<p ng-if="$root.isDefined(vm.search.startDateRange)">
|
{{vm.search.startDateRange}}
|
<span ng-click="vm.search.startDateRange = ''">×</span>
|
</p>
|
|
<!-- 종료일 -->
|
<p ng-if="$root.isDefined(vm.search.completeDateRange)">
|
{{vm.search.completeDateRange}}
|
<span ng-click="vm.search.completeDateRange = ''">×</span>
|
</p>
|
|
<!-- 등록일 -->
|
<p ng-if="$root.isDefined(vm.search.registerDateRange)">
|
{{vm.search.registerDateRange}}
|
<span ng-click="vm.search.registerDateRange = ''">×</span>
|
</p>
|
|
<!-- 텍스트 입력 필드 -->
|
<issue-search-custom-field-view-element
|
custom-fields="vm.customFields"></issue-search-custom-field-view-element>
|
</div>
|
</div>
|
</div>
|
|
|
<div class="">
|
<label class="issue-search-label" ng-class="{ 'icon-reverse' : vm.searchView }"
|
ng-click="vm.searchView = !vm.searchView">
|
<span translate="common.detailedSearch">상세검색</span>
|
</label>
|
<div ng-if="vm.searchView">
|
<div class="row">
|
<div class="col-lg-3">
|
<div class="form-group">
|
<label> <span translate="common.project">프로젝트</span></label>
|
<js-autocomplete-multi data-input-name="projects"
|
selected-model="vm.projects"
|
search="vm.projectName"
|
input-disabled="false"
|
translation-texts="{ empty : 'common.emptyProject', selectList : 'common.' }"
|
source="fn.getProjectList(vm.projectName, vm.projects, null, null, ['01', '02', '03'])"
|
extra-settings="{ displayProp : 'name' , idProp : 'id', imageable : false, imagePathProp : '', type : '', maxlength : 100}"></js-autocomplete-multi>
|
</div>
|
</div>
|
|
<div class="col-lg-3">
|
<div class="form-group">
|
<label> <span translate="issue.issueType">이슈 타입</span></label>
|
<ng-dropdown-multiselect class="multiSelect cursor"
|
data-input-name="issueStatuses"
|
selected-model="vm.search.issueTypeIds"
|
options="::vm.issueTypes"></ng-dropdown-multiselect>
|
</div>
|
</div>
|
|
<div class="col-lg-3">
|
<div class="form-group">
|
<label> <span translate="issue.issueStatus">이슈 상태</span></label>
|
<ng-dropdown-multiselect class="multiSelect cursor"
|
data-input-name="issueStatuses"
|
selected-model="vm.search.issueStatusIds"
|
options="::vm.issueStatuses"></ng-dropdown-multiselect>
|
</div>
|
</div>
|
|
<div class="col-lg-3">
|
<div class="form-group">
|
<label> <span translate="issue.issueNumber">이슈 번호</span></label>
|
<input type="text"
|
name="name"
|
class="form-control input-sm"
|
autocomplete="off"
|
kr-input
|
maxlength="20"
|
ng-model="vm.search.combinationIssueNumber">
|
</div>
|
</div>
|
</div>
|
|
<div class="row">
|
<div class="col-lg-3">
|
<div class="form-group">
|
<label> <span translate="issue.issueContent">이슈 내용</span></label>
|
<input type="text"
|
name="description"
|
class="form-control input-sm"
|
kr-input
|
maxlength="20"
|
autocomplete="off"
|
ng-model="vm.search.description">
|
</div>
|
</div>
|
|
<div class="col-lg-3">
|
<div class="form-group">
|
<label> <span translate="common.priority">우선 순위</span></label>
|
<ng-dropdown-multiselect class="multiSelect cursor"
|
data-input-name="priorities"
|
selected-model="vm.search.priorityIds"
|
options="::vm.priorities"></ng-dropdown-multiselect>
|
</div>
|
</div>
|
|
<div class="col-lg-3">
|
<div class="form-group">
|
<label> <span translate="common.importance">중요도</span></label>
|
<ng-dropdown-multiselect class="multiSelect cursor"
|
data-input-name="severities"
|
selected-model="vm.search.severityIds"
|
options="::vm.severities"></ng-dropdown-multiselect>
|
</div>
|
</div>
|
|
<div class="col-lg-3">
|
<div class="form-group">
|
<label> <span translate="common.assigneeTeam">담당부서</span></label>
|
<js-autocomplete-multi data-input-name="departments"
|
selected-model="vm.departments"
|
search="vm.departmentName"
|
input-disabled="false"
|
source="fn.getUserDepartmentList(vm.departmentName, vm.departments)"
|
translation-texts="{ count : 'common.userNum', empty : 'common.emptyDepartment' }"
|
extra-settings="{ displayProp : 'byName' , idProp : 'id', widthable : false, width : '', imageable : true, imagePathProp : 'profile', type : 'department', maxlength : 100 }">
|
</js-autocomplete-multi>
|
</div>
|
</div>
|
</div>
|
|
<div class="row">
|
<div class="col-lg-3">
|
<div class="form-group">
|
<label> <span translate="common.register">등록자</span></label>
|
<js-autocomplete-multi data-input-name="registers"
|
selected-model="vm.registers"
|
search="vm.registerName"
|
input-disabled="false"
|
source="fn.getUserList(vm.registerName, vm.registers)"
|
translation-texts="{ count : 'common.userNum', empty : 'common.emptyUser' }"
|
extra-settings="{ displayProp : 'byName' , idProp : 'id', widthable : false, width : '', imageable : true, imagePathProp : 'profile', type : 'user', maxlength : 100 }">
|
</js-autocomplete-multi>
|
</div>
|
</div>
|
|
<div class="col-lg-3">
|
<div class="form-group">
|
<label> <span translate="common.registrationDate">등록일</span></label>
|
<input type="text"
|
readonly
|
class="form-control input-sm input-readonly"
|
ng-model="vm.search.registerDateRange"
|
modal-form-auto-scroll
|
date-format="YY-MM-DD"
|
parent-el="'#createdWidget'"
|
date-range-picker>
|
</div>
|
</div>
|
|
<div class="col-lg-3">
|
<div class="form-group">
|
<label> <span translate="common.startDate">시작일</span></label>
|
<input type="text"
|
readonly
|
class="form-control input-sm input-readonly"
|
ng-model="vm.search.startDateRange"
|
date-format="YY-MM-DD"
|
parent-el="'#createdWidget'"
|
date-range-picker>
|
</div>
|
</div>
|
|
<div class="col-lg-3">
|
<div class="form-group">
|
<label> <span translate="common.endDate">종료일</span></label>
|
<input type="text"
|
readonly
|
class="form-control input-sm input-readonly"
|
ng-model="vm.search.completeDateRange"
|
modal-form-auto-scroll
|
date-format="YY-MM-DD"
|
parent-el="'#createdWidget'"
|
date-range-picker>
|
</div>
|
</div>
|
|
<div class="col-lg-3" ng-repeat="customField in vm.customFields">
|
<label>{{::customField.name}}</label>
|
|
<div ng-switch on="customField.customFieldType">
|
<div ng-switch-when="INPUT">
|
<input type="text" class="form-control input-sm"
|
ng-model="customField.useValues"
|
maxlength="100">
|
</div>
|
|
<div ng-switch-default>
|
<ng-dropdown-multiselect class="multiSelect cursor"
|
data-input-name="customField.name"
|
selected-model="customField.useValues"
|
extra-settings="{ 'idProp' : 'value', 'externalIdProp' : 'value', 'displayProp' : 'value', 'stringTypeOption' : 'true', 'stopRemoveBodyEvent' : 'true' }"
|
options="::customField.customFieldValueVos"></ng-dropdown-multiselect>
|
</div>
|
</div>
|
</div>
|
|
</div>
|
|
<div class="row">
|
<div class="col-sm-12">
|
<div class="form-buttons-w text-center mb-20">
|
<button class="btn btn-xlg btn-navy" ng-click="fn.getPageList(0)">
|
<i class="os-icon os-icon-ui-37"></i>
|
<span translate="common.search">검색</span>
|
</button>
|
<button class="btn btn-xlg btn-white" ng-click="fn.initSearch()">
|
<i class="os-icon os-icon-grid-18"></i>
|
<span translate="common.reset">초기화</span>
|
</button>
|
</div>
|
</div>
|
</div>
|
</div>
|
</div>
|
</form>
|
</div>
|
</div>
|
</div>
|
<div class="controls-above-table mt-30">
|
<div class="row">
|
<!-- 좌측 -->
|
<div class="col-7">
|
<div class="dataTables_length">
|
<label>
|
<select name="pageRow"
|
tabindex="-1"
|
class="form-control form-control-sm"
|
ng-change="fn.changePageRowCount()"
|
ng-model="vm.page.selectedPageRowCount">
|
<option value="10">10</option>
|
<option value="50">50</option>
|
<option value="100">100</option>
|
</select> {{vm.page.selectedPage}}-{{vm.responseData.page.totalPage}} /
|
{{vm.responseData.page.totalCount | number}}<span translate="common.few">건</span>
|
</label>
|
</div>
|
</div>
|
<!-- 우측 -->
|
<div class="col-5 " >
|
<form class="form-inline justify-content-sm-end pull-right" method="post" action="/issue/downloadExcel" name="issueListForm" >
|
<!--span class="badge-tip" function-tool-tip data-placement="top" data-toggle="tooltip" data-original-title="엑셀 다운로드, 일괄 변경 등 다양한 기능을 제공합니다.">?</span-->
|
<input type="hidden" name="conditions">
|
<div class="btn-group">
|
<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.downloadExcel">엑셀 다운로드</span></a>
|
|
<a class="dropdown-item cursor" ng-click="fn.importExcel()"> <span translate="common.importExcel">Excel Import</span></a>
|
<a class="dropdown-item cursor" ng-click="fn.modifyMultiIssueStatus()"> <span translate="common.updateIssueStatus">이슈 상태 변경</span></a>
|
<a class="dropdown-item cursor" ng-click="fn.addIssueTableConfig()"> <span translate="issue.settingTableDisplay">테이블 표시 설정</span></a>
|
<a class="dropdown-item cursor" ng-click="fn.removes()"> <span translate="common.delete">삭제</span></a>
|
</div>
|
</div>
|
</form>
|
</div>
|
</div>
|
</div>
|
|
<div class="table-responsive">
|
<js-table data="vm.responseData.data" table-configs="vm.tableConfigs"
|
event="tableEvent" detail-view="vm.detailView"></js-table>
|
</div>
|
<div class="controls-below-table text-center">
|
<ul uib-pagination
|
boundary-links-numbes="true"
|
items-per-page="vm.page.selectedPageRowCount"
|
total-items="vm.responseData.page.totalCount"
|
ng-model="vm.page.selectedPage"
|
max-size="10"
|
ng-click="fn.getPageList(vm.page.selectedPage - 1)"
|
class="pagination pagination-sm"
|
previous-text="<"
|
next-text=">"
|
first-text=""
|
last-text="">
|
</ul>
|
</div>
|
</div>
|
</div>
|
</div>
|
</div>
|
|
<div class="row support-index" ng-show="vm.detailView">
|
<div ng-include include-replace src="'views/issue/issueDetail.html'"></div>
|
</div>
|
</div>
|