OWL ITS + 탐지시스템(인터넷 진흥원)
박지현
2022-02-21 174dc12380c54730014e86c8897be16389fc804f
src/main/webapp/views/issue/issueListNormal.html
@@ -5,7 +5,7 @@
                <div class="element-box">
                    <div class="row" >
                        <div class="col-sm-12">
                            <div class="searchdiv">
                            <div class="searchdiv" ng-if="!$root.isMainSearch">
                                <form name="issueSearchForm" role="form" ng-enter="fn.getPageList(0)">
                                    <div class="row">
                                        <div class="col-sm-6">
@@ -36,16 +36,22 @@
                                                </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)">
@@ -81,11 +87,21 @@
                                                    <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
@@ -114,52 +130,16 @@
                                                               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>
@@ -175,7 +155,41 @@
                                                               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>
@@ -195,9 +209,7 @@
                                                                                 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>
@@ -214,17 +226,22 @@
                                                <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">
@@ -255,26 +272,126 @@
                                                <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>
                                                    <div ng-switch on="customField.customFieldType">
                                                        <div ng-switch-when="INPUT">
                                                            <input type="text" class="form-control input-sm"
                                                            <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="item_{{$index}}"
                                                                   ng-model="customField.useValues"
                                                                   kr-input
                                                                   placeholder="숫자만 입력 가능합니다."
                                                                   ng-pattern="/^[0-9]*$/"
                                                                   autocomplete="off">
                                                            <div ng-if="issueSearchForm['item_'+ $index].$error.pattern" class="help-block form-text text-danger"
                                                                 translate="common.invalidNumberFormat">숫자만 입력 가능합니다.
                                                            </div>
                                                        </div>
                                                        <div ng-switch-when="DATETIME">
                                                            <input class="form-control input-sm input-readonly"
                                                                   name="item_{{$index}}"
                                                                   ng-model="customField.useValues"
                                                                   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>
                                                            </div>
                                                        </div>
                                                        <div ng-switch-when="IP_ADDRESS">
                                                            <input type="text"
                                                                   class="form-control input-sm"
                                                                   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-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="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-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="item_{{$index}}"
                                                                   ng-model="customField.useValues"
                                                                   kr-input
                                                                   ng-pattern="/(https?:\/\/)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&//=]*)/"
                                                                   placeholder="홈페이지 주소 형식만 입력 가능합니다."
                                                                   autocomplete="off">
                                                            <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="item_{{$index}}"
                                                                   ng-model="customField.useValues"
                                                                   kr-input
                                                                   ng-pattern="/^\d{2,3}-\d{3,4}-\d{4}$/"
                                                                   placeholder="연락처 형식만 입력 가능합니다."
                                                                   autocomplete="off">
                                                            <div ng-if="issueSearchForm['item_'+ $index].$error.pattern" class="help-block form-text text-danger"
                                                                 translate="common.invalidTelFormat">전화번호 형식이 맞지 않습니다.
                                                            </div>
                                                        </div>
                                                        <div ng-switch-default>
@@ -336,8 +453,8 @@
                            <!--    우측  -->
                            <div class="col-5" >
                                <span class="issue-detail-label" style="position: relative; left: 2.8rem; bottom: 5px"><span style="color: #0a7cf8">◆</span> 하위 이슈 숨기기</span>
                                <label class='switch' style="left: 3.3rem"><input type='checkbox' ng-model='vm.hideDownIssue' ng-click='fn.getPageList(0)'>
                                <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>
@@ -355,12 +472,12 @@
                                        </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" form-submit="issueListForm" make-search-conditions="fn.makeSearchConditions()"> <span translate="common.allDownloadExcel">엑셀 다운로드</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>
                                            <a class="dropdown-item cursor" ng-click="fn.removes()"> <span translate="common.selectDelete">삭제</span></a>
                                        </div>
                                    </div>
                                </form>