| | |
| | | </p> |
| | | |
| | | <!-- 프로젝트 --> |
| | | <issue-search-array-view-element lists="vm.projects" |
| | | type="'project'"></issue-search-array-view-element> |
| | | <!-- <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.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.issueNumber)"> |
| | | {{vm.search.issueNumber}} |
| | | <span ng-click="vm.search.issueNumber = ''">×</span> |
| | | </p> |
| | | |
| | | <!-- 이슈 내용 --> |
| | | <p ng-if="$root.isDefined(vm.search.description)"> |
| | |
| | | <span ng-click="vm.search.completeDateRange = ''">×</span> |
| | | </p> |
| | | |
| | | <!-- 기간 --> |
| | | <p ng-if="$root.isDefined(vm.search.dateRange)"> |
| | | {{vm.search.dateRange}} |
| | | <span ng-click="vm.search.dateRange = ''">×</span> |
| | | </p> |
| | | |
| | | <!-- 등록일 --> |
| | | <p ng-if="$root.isDefined(vm.search.registerDateRange)"> |
| | | {{vm.search.registerDateRange}} |
| | | <span ng-click="vm.search.registerDateRange = ''">×</span> |
| | | </p> |
| | | |
| | | <!-- 담당부서 --> |
| | | <issue-search-array-view-element lists="vm.departments" |
| | | type="'department'"></issue-search-array-view-element> |
| | | |
| | | <!-- 텍스트 입력 필드 --> |
| | | <issue-search-custom-field-view-element |
| | |
| | | ng-model="vm.search.title"> |
| | | </div> |
| | | </div> |
| | | |
| | | <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> |
| | | |
| | | <div class="row"> |
| | | <div class="col-lg-3"> |
| | | <div class="form-group"> |
| | | <label> <span translate="issue.issueNumber">이슈 번호</span></label> |
| | | <input type="text" |
| | | name="name" |
| | | name="issueNumber" |
| | | class="form-control input-sm" |
| | | autocomplete="off" |
| | | kr-input |
| | | maxlength="20" |
| | | ng-model="vm.search.combinationIssueNumber"> |
| | | ng-model="vm.search.issueNumber"> |
| | | </div> |
| | | </div> |
| | | |
| | |
| | | ng-model="vm.search.description"> |
| | | </div> |
| | | </div> |
| | | <!-- <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> |
| | | |
| | | <div class="row"> |
| | | <div class="col-lg-3"> |
| | | <div class="form-group"> |
| | | <label> <span translate="common.priority">우선 순위</span></label> |
| | |
| | | options="::vm.severities"></ng-dropdown-multiselect> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | |
| | | <div class="row"> |
| | | <div class="col-lg-3"> |
| | | <div class="form-group"> |
| | | <label> <span translate="common.register">등록자</span></label> |
| | |
| | | |
| | | <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> |
| | | <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.emptyProjectDepartment' }" |
| | | 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"> |
| | |
| | | |
| | | <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.emptyProjectDepartment' }" |
| | | extra-settings="{ displayProp : 'byName' , idProp : 'id', widthable : false, width : '', imageable : true, imagePathProp : 'profile', type : 'department', maxlength : 100 }"> |
| | | </js-autocomplete-multi> |
| | | <label> <span translate="common.dateRange">기간</span></label> |
| | | <input type="text" |
| | | readonly |
| | | class="form-control input-sm input-readonly" |
| | | ng-model="vm.search.dateRange" |
| | | 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.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" ng-repeat="customField in vm.customFields"> |
| | | <label>{{::customField.name}}</label> |
| | |
| | | <input type="text" |
| | | class="form-control input-sm" |
| | | ng-model="customField.useValues" |
| | | maxlength="100"> |
| | | > |
| | | </div> |
| | | <div ng-switch-when="NUMBER"> |
| | | <input type="text" |
| | | class="form-control input-sm" |
| | | name="numberType" |
| | | name="item_{{$index}}" |
| | | ng-model="customField.useValues" |
| | | kr-input |
| | | placeholder="숫자만 입력 가능합니다." |
| | | ng-pattern="/^[0-9]*$/" |
| | | autocomplete="off"> |
| | | <div ng-show="issueSearchForm.numberType.$error.pattern" class="help-block form-text text-danger" |
| | | <div ng-if="issueSearchForm['item_'+ $index].$error.pattern" class="help-block form-text text-danger" |
| | | translate="common.invalidNumberFormat">숫자만 입력 가능합니다. |
| | | </div> |
| | | </div> |
| | | |
| | | <!-- todo : 날짜 검색 문제 --> |
| | | <div ng-switch-when="DATETIME"> |
| | | <input type="text" class="form-control input-sm" |
| | | name="dateTime" |
| | | <input class="form-control input-sm input-readonly" |
| | | name="item_{{$index}}" |
| | | ng-model="customField.useValues" |
| | | maxlength="100" |
| | | range-type="singleDate" |
| | | date-range-picker> |
| | | placeholder="{{'issue.clickToSelectDate' | translate}}" |
| | | modal-form-auto-scroll |
| | | range-type="multiDate" |
| | | date-range-picker |
| | | autocomplete="off"> |
| | | <div class="row"> |
| | | <div class="col-xs-12"> |
| | | <div id="createdWidget" class="bootstrap-datepicker "></div> |
| | |
| | | <div ng-switch-when="IP_ADDRESS"> |
| | | <input type="text" |
| | | class="form-control input-sm" |
| | | name="ipAdress" |
| | | name="item_{{$index}}" |
| | | ng-model="customField.useValues" |
| | | kr-input |
| | | ng-pattern="/^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/" |
| | | placeholder="IP 주소 형식만 입력 가능합니다." |
| | | autocomplete="off"> |
| | | <div ng-show="issueSearchForm.ipAdress.$error.pattern" class="help-block form-text text-danger" |
| | | <div ng-if="issueSearchForm['item_'+ $index].$error.pattern" class="help-block form-text text-danger" |
| | | translate="common.invalidipAdressFormat">IP주소 형식이 맞지 않습니다. |
| | | </div> |
| | | </div> |
| | |
| | | <div ng-switch-when="EMAIL"> |
| | | <input type="email" |
| | | class="form-control input-sm" |
| | | name="email" |
| | | name="item_{{$index}}" |
| | | ng-model="customField.useValues" |
| | | kr-input |
| | | ng-pattern="/^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/" |
| | | placeholder="이메일 형식만 입력 가능합니다." |
| | | autocomplete="off"> |
| | | <div ng-show="issueSearchForm.email.$error.pattern" class="help-block form-text text-danger" |
| | | <div ng-if="issueSearchForm['item_'+ $index].$error.pattern" class="help-block form-text text-danger" |
| | | translate="common.invalidEmailFormat">이메일 형식이 맞지 않습니다. |
| | | </div> |
| | | </div> |
| | |
| | | <div ng-switch-when="SITE"> |
| | | <input type="text" |
| | | class="form-control input-sm" |
| | | name="site" |
| | | name="item_{{$index}}" |
| | | ng-model="customField.useValues" |
| | | kr-input |
| | | ng-pattern="/((http|https):\/\/)?(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/" |
| | | ng-pattern="/(https?:\/\/)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&//=]*)/" |
| | | placeholder="홈페이지 주소 형식만 입력 가능합니다." |
| | | autocomplete="off"> |
| | | <div ng-show="issueSearchForm.site.$error.pattern" class="help-block form-text text-danger" |
| | | <div ng-if="issueSearchForm['item_'+ $index].$error.pattern" class="help-block form-text text-danger" |
| | | translate="common.invalidSiteFormat">홈페이지 주소 형식이 맞지 않습니다.(http://로 시작하셔야합니다) |
| | | </div> |
| | | </div> |
| | | <div ng-switch-when="TEL"> |
| | | <input type="text" |
| | | class="form-control input-sm" |
| | | name="tel" |
| | | name="item_{{$index}}" |
| | | ng-model="customField.useValues" |
| | | kr-input |
| | | ng-pattern="/^\d{2,3}-\d{3,4}-\d{4}$/" |
| | | placeholder="연락처 형식만 입력 가능합니다." |
| | | autocomplete="off"> |
| | | <div ng-show="issueSearchForm.tel.$error.pattern" class="help-block form-text text-danger" |
| | | <div ng-if="issueSearchForm['item_'+ $index].$error.pattern" class="help-block form-text text-danger" |
| | | translate="common.invalidTelFormat">전화번호 형식이 맞지 않습니다. |
| | | </div> |
| | | </div> |
| | |
| | | |
| | | <!-- 우측 --> |
| | | <div class="col-5" > |
| | | <span class="issue-detail-label" ng-if="vm.listMode === 0" style="position: relative; left: 2.8rem; bottom: 5px"><span style="color: #0a7cf8">◆</span> 하위 이슈 숨기기</span> |
| | | <label class='switch' ng-if="vm.listMode === 0" style="left: 3.3rem"><input type='checkbox' ng-model='vm.hideDownIssue' ng-click='fn.getPageList(0)'> |
| | | <span class='slider round'></span> |
| | | </label> |
| | | <span class="issue-detail-label" style="position: relative; left: 5.8rem; bottom: 5px"><span style="color: #0a7cf8">◆</span> 완료 이슈 숨기기</span> |
| | | <span class="issue-detail-label" style="position: relative; left: 5.8rem; bottom: 7px"><span style="color: #0a7cf8">◆</span> 완료 이슈 숨기기</span> |
| | | <label class='switch' style="left: 6.3rem"><input type='checkbox' ng-model='vm.hideCompleteIssue' ng-click='fn.getPageList(0)'> |
| | | <span class='slider round'></span> |
| | | </label> |
| | | <label style="position: relative; left: 8rem; bottom: 9px"> |
| | | <select class="form-control form-control-sm" ng-if="vm.listMode === 0" ng-model="vm.hideDownIssue" ng-change="fn.getPageList(0)" ng-init="0" style="width:160px"> |
| | | <option value="0">전체 이슈 보기</option> |
| | | <option value="1">상위 이슈만 보기</option> |
| | | <option value="2">하위 이슈만 보기</option> |
| | | </select> |
| | | </label> |
| | | <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"> |