| | |
| | | </div> |
| | | |
| | | <div class="modal-body"> |
| | | <form role="form" name="issueModifyForm"> |
| | | <form role="form" name="issueAddForm"> |
| | | <div class="form-group mb10"> |
| | | <label for="issueModifyForm1" class="issue-label"><span translate="issue.issueTitle">이슈 제목</span> <code |
| | | <label for="issueAddForm1" class="issue-label"><span translate="issue.issueTitle">이슈 제목</span> <code |
| | | class="highlighter-rouge">*</code></label> |
| | | <input id="issueModifyForm1" |
| | | <input id="issueAddForm1" |
| | | class="form-control input-sm" |
| | | ng-model="vm.form.title" |
| | | name="title" |
| | |
| | | autocomplete="off" |
| | | autofocus |
| | | owl-auto-focus> |
| | | <small class="help-block form-text text-danger" ng-if="issueModifyForm.title.$touched && issueModifyForm.title.$error.required" translate="issue.requireIssueTitle">이슈 제목을 입력하세요.</small> |
| | | <small class="help-block form-text text-danger" |
| | | ng-if="issueAddForm.title.$touched && issueAddForm.title.$error.required" |
| | | translate="issue.requireIssueTitle">이슈 제목을 입력하세요. |
| | | </small> |
| | | </div> |
| | | |
| | | <div class="row"> |
| | | <div class="col-lg-4"> |
| | | <div class="form-group mgb5"> |
| | | <div class="form-group mb10"> |
| | | <label class="issue-label"> <span translate="common.project">프로젝트</span> <code |
| | | class="highlighter-rouge">*</code></label> |
| | | <js-autocomplete-single data-input-name="project" |
| | |
| | | translation-texts="{ empty : 'common.emptyProject' }" |
| | | extra-settings="{ displayProp : 'name' , idProp : 'id', imageable : false, imagePathProp : '', |
| | | type : '', maxlength : 200, autoResize : false, stopRemoveBodyEvent : true }"></js-autocomplete-single> |
| | | <small translate="issue.initializedAssigneeCustomField">프로젝트를 변경하면 담당자, 사용자 정의 필드 값이 초기화 됩니다.</small> |
| | | </div> |
| | | </div> |
| | | |
| | | <div class="col-lg-8 bdl1"> |
| | | <div class="row"> |
| | | <div class="col-md-4"> |
| | | <div class="form-group mgb5"> |
| | | <label for="issueModifyForm4" class="issue-label"> <span translate="issue.issueType">이슈 타입</span> |
| | | <code |
| | | class="highlighter-rouge">*</code></label> |
| | | <select id="issueModifyForm4" |
| | | <div class="form-group mb10"> |
| | | <label for="issueAddForm4" class="issue-label"> <span |
| | | translate="issue.issueType">이슈 타입</span> |
| | | <code class="highlighter-rouge">*</code></label> |
| | | <select id="issueAddForm4" |
| | | name="issueType" |
| | | class="form-control input-sm" |
| | | class="form-control input-sm issue-select-label" |
| | | ng-model="vm.form.issueTypeId" |
| | | ng-change="fn.getIssueTypeCustomFields()" |
| | | ng-style="{ 'color' : fn.getOptionColor(vm.issueTypes, vm.form.issueTypeId) }" |
| | | required> |
| | | <option value="" translate="common.selectTarget" ng-style="{ 'color' : '#353535' }"> |
| | | <span translate="common.selectTarget">대상 선택</span> |
| | | <option value="" translate="common.selectTarget" ng-style="{ 'color' : '#353535' }"><span |
| | | translate="common.selectTarget">대상 선택</span> |
| | | </option> |
| | | <option ng-repeat="issueType in vm.issueTypes" |
| | | ng-style="{ 'color' : issueType.color, 'font-weight': 600 }" |
| | | value="{{issueType.id}}">● {{issueType.name}} |
| | | </option> |
| | | </select> |
| | | <small translate="issue.initializedIssueStatus">이슈 타입을 변경할 경우 사용자 정의 필드, 이슈 상태가 초기화 |
| | | 됩니다. |
| | | </small> |
| | | </div> |
| | | </div> |
| | | |
| | | <div class="col-md-4"> |
| | | <div class="form-group mb10"> |
| | | <label for="issueModifyForm2" class="issue-label"> |
| | | <label for="issueAddForm2" class="issue-label"> |
| | | <span translate="common.priority">우선 순위</span> |
| | | <code class="highlighter-rouge">*</code> |
| | | </label> |
| | | <select id="issueModifyForm2" |
| | | <select id="issueAddForm2" |
| | | name="priority" |
| | | class="form-control input-sm issue-select-label" |
| | | ng-model="vm.form.priorityId" |
| | | ng-style="{ 'color' : fn.getOptionColor(vm.priorities, vm.form.priorityId) }" |
| | | required> |
| | | <option value="" translate="common.selectTarget" ng-style="{ color : '#353535' }"> |
| | | <option value="" translate="common.selectTarget" ng-style="{ 'color' : '#353535' }"> |
| | | <span translate="common.selectTarget">대상 선택</span> |
| | | </option> |
| | | <option ng-repeat="priority in vm.priorities" |
| | |
| | | </select> |
| | | </div> |
| | | </div> |
| | | |
| | | <div class="col-md-4"> |
| | | <div class="form-group mb10"> |
| | | <label for="issueModifyForm3" class="issue-label"> <span translate="common.importance">중요도</span> |
| | | <code class="highlighter-rouge">*</code></label> |
| | | <select id="issueModifyForm3" |
| | | <label for="issueAddForm3" class="issue-label"> <span |
| | | translate="common.importance">중요도</span> <code |
| | | class="highlighter-rouge">*</code></label> |
| | | <select id="issueAddForm3" |
| | | name="severity" |
| | | class="form-control input-sm issue-select-label" |
| | | ng-model="vm.form.severityId" |
| | | ng-style="{ 'color' : fn.getOptionColor(vm.severities, vm.form.severityId)}" |
| | | ng-style="{ 'color' : fn.getOptionColor(vm.severities, vm.form.severityId) }" |
| | | required> |
| | | <option value="" translate="common.selectTarget" ng-style="{ color : '#353535' }"> |
| | | <span translate="common.selectTarget">대상 선택</span> |
| | |
| | | </div> |
| | | </div> |
| | | </div> |
| | | |
| | | <div class="form-group mb10"> |
| | | <label class="issue-label"><span translate="common.content">내용</span></label> |
| | | <summernote |
| | | class="summernote" |
| | | lang="ko-KR" |
| | | summer-note-auto-focus |
| | | ng-model="vm.form.description" |
| | | data-editor="vm.summerNote.editor" |
| | | data-editable="vm.summerNote.editable" |
| | | on-image-upload="fn.imageUpload(files)" |
| | | target=".note-editable"></summernote> |
| | | </div> |
| | | |
| | | <hr> |
| | | <div class="row"> |
| | | <div class="col-lg-4"> |
| | | <div class="form-group mgb5"> |
| | | <div class="form-group mb10"> |
| | | <label class="issue-label"> <span translate="common.assigneeTeam">담당부서</span> </label> |
| | | <js-input-autocomplete data-input-name="departments" |
| | | <js-autocomplete-multi data-input-name="department" |
| | | selected-model="vm.form.departments" |
| | | search="vm.departmentName" |
| | | page="vm.autoCompletePage.department.page" |
| | | total-page="vm.autoCompletePage.department.totalPage" |
| | | source="fn.getDepartmentList(vm.departmentName, vm.form.departments, vm.autoCompletePage.department.page, fn.getDepartmentListCallBack)" |
| | | input-disabled="vm.form.departments.length == 0" |
| | | translation-texts="{ empty : 'common.emptyDepartment'}" |
| | | extra-settings="{ displayProp : 'byName' , idProp : 'id', imageable : true, imagePathProp : 'profile', |
| | | type : 'department', maxlength : 100, autoResize : true, stopRemoveBodyEvent : true }"></js-input-autocomplete> |
| | | source="fn.getIssueDepartmentList(vm.departmentName, vm.form.departments)" |
| | | input-disabled="false" |
| | | translation-texts="{ count : 'common.userNum', empty : 'common.emptyDepartment'}" |
| | | extra-settings="{ displayProp : 'byName' , idProp : 'id', imageable : false, maxlength : 100, autoResize : true}"></js-autocomplete-multi> |
| | | |
| | | <div class="select3-selection__choicediv"> |
| | | <div class="select3-selection__choicediv mt-10"> |
| | | <span class="select3-selection__choice" ng-repeat="department in vm.form.departments"> |
| | | <span class="avatar-w"></span> |
| | | <!-- <img ng-src="{{department.profile}}">--> |
| | | <span>{{department.name}}({{department.id}})</span> |
| | | <span class="select3-selection__choice__remove" |
| | | ng-click="fn.removeManager($index)">×</span> |
| | | <span>{{department.byName}}</span> |
| | | <span class="select3-selection__choice__remove" ng-click="fn.removeDepartment($index)">×</span> |
| | | </span> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | |
| | | <div class="form-group mgb5"> |
| | | <label for="issueModifyForm5" class="issue-label"> <span translate="common.period">기간</span> |
| | | </label> |
| | | <input id="issueModifyForm5" |
| | | <div class="col-lg-4"> |
| | | <div class="form-group mb10"> |
| | | <label for="issueAddForm5" class="issue-label"> <span translate="common.period">기간</span></label> |
| | | <input id="issueAddForm5" |
| | | tabindex="-1" |
| | | type="text" |
| | | readonly |
| | | class="form-control cursor" |
| | |
| | | </div> |
| | | </div> |
| | | </div> |
| | | |
| | | </div> |
| | | <div class="col-lg-4"> |
| | | <div class="form-group mgb5"> |
| | | <label class="issue-label"><span translate="common.attachFiles">파일 첨부</span></label> |
| | | <div class="filebox input-group"> |
| | |
| | | placeholder="{{'users.pleaseSelectFile' | translate}}" |
| | | tabindex="-1" |
| | | disabled="disabled"> |
| | | <label for="uploadFileField"><span translate="common.selectFile">파일선택</span></label> |
| | | <label for="uploadFileField"><span |
| | | translate="common.selectFile">파일선택</span></label> |
| | | <input id="uploadFileField" |
| | | tabindex="-1" |
| | | type="file" |
| | |
| | | multiple |
| | | ng-file-select="fn.onFileSelect($files)"> |
| | | </div> |
| | | <small translate="issue.attachOnlyFiles">hwp, jpg, png, txt, pptx, ppt, pdf, xlsx, xls, |
| | | docx, zip, gif, jpeg, doc, tif, bmp, wmv, avi, mp4, mkv, mov 파일만 첨부할 수 있습니다. |
| | | </small> |
| | | |
| | | <div class="select2-selection__choicediv"> |
| | | <div class="select2-selection__choice2" ng-repeat="file in vm.form.files"> |
| | | <div class="select2-selection__choice2__remove" |
| | | ng-click="fn.removeUploadFile($index)"> |
| | | <div class="select2-selection__choice2__remove" ng-click="fn.removeUploadFile($index)"> |
| | | × |
| | | </div> |
| | | <div class="ssg-items ssg-items-blocks"> |
| | |
| | | <i class="os-icon os-icon-film" ng-if="file.fileType == 'MEDIA'"></i> |
| | | <!-- 이미지(업로드 전) --> |
| | | <i class="os-icon os-icon-documents-07" |
| | | ng-if="file.fileType == 'IMAGE' && !$root.isDefined(file.path)"></i> |
| | | <!-- 이미지(업로드 후) --> |
| | | <span class="attached-media-w" |
| | | ng-if="file.fileType == 'IMAGE' && $root.isDefined(file.path)"> |
| | | <img ng-src="{{file.path}}"> |
| | | </span> |
| | | ng-if="file.fileType == 'IMAGE'"></i> |
| | | <!-- 기타 --> |
| | | <i class="os-icon os-icon-ui-51" ng-if="file.fileType == 'ETC'"></i> |
| | | </div> |
| | |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div class="row"> |
| | | <div class="col-lg-4 fontcolor_green"> |
| | | <label class="issue-label"><span class="fontcolor_green" translate="common.detectingInfo">탐지정보</span></label> |
| | | </div> |
| | | </div> |
| | | |
| | | <div class="col-lg-8 bdl1"> |
| | | <div class="row"> |
| | | <div class="col-md-12"> |
| | | <div class="form-group mgb5" ng-show="vm.form.issueCustomFields.length < 1"> |
| | | <label class="issue-label" translate="issue.notIssueTypeCustomFields">이슈 타입에 연결된 사용자 정의 필드가 없습니다.</label> |
| | | </div> |
| | | <div class="col-lg-8"> |
| | | <div class="row"> |
| | | <div class="col-md-12"> |
| | | <div class="form-group mgb5" ng-show="vm.form.issueCustomFields.length < 1"> |
| | | <label class="issue-label" translate="issue.notIssueTypeCustomFields">이슈 타입에 연결된 사용자 정의 |
| | | 필드가 없습니다.</label> |
| | | </div> |
| | | </div> |
| | | |
| | | <div class="col-md-6" ng-repeat="issueCustomField in vm.form.issueCustomFields"> |
| | | <div class="form-group mgb5"> |
| | | <label class="issue-label">{{issueCustomField.customFieldVo.name}}</label> |
| | | <div class="col-md-6" ng-repeat="issueCustomField in vm.form.issueCustomFields"> |
| | | <div class="form-group mgb5"> |
| | | <label class="issue-label">{{issueCustomField.customFieldVo.name}}</label> |
| | | |
| | | <div ng-switch on="issueCustomField.customFieldVo.customFieldType"> |
| | | <!-- 기본 입력 --> |
| | | <div ng-switch-when="INPUT"> |
| | | <input type="text" class="form-control input-sm" |
| | | ng-model="issueCustomField.useValues" |
| | | maxlength="100" |
| | | autocomplete="off" |
| | | kr-input |
| | | ng-required="issueCustomField.fieldOption == '01'"> |
| | | </div> |
| | | <div ng-switch on="issueCustomField.customFieldVo.customFieldType"> |
| | | <!-- 기본 입력 --> |
| | | <div ng-switch-when="INPUT"> |
| | | <input type="text" class="form-control input-sm" |
| | | ng-model="issueCustomField.useValues" |
| | | maxlength="100" |
| | | autocomplete="off" |
| | | kr-input |
| | | ng-required="issueCustomField.fieldOption == '01'"> |
| | | </div> |
| | | |
| | | <!-- 단일 셀렉트 --> |
| | | <div ng-switch-when="SINGLE_SELECT"> |
| | | <select class="form-control input-sm" |
| | | ng-required="issueCustomField.fieldOption == '01'" |
| | | ng-model="issueCustomField.useValues"> |
| | | <option value="">선택하세요.</option> |
| | | <option ng-repeat="customFieldValueVo in issueCustomField.customFieldVo.customFieldValueVos" |
| | | value="{{customFieldValueVo.value}}" |
| | | ng-selected="$root.selectOption(issueCustomField.useValues, customFieldValueVo.value)"> |
| | | {{customFieldValueVo.value}} |
| | | </option> |
| | | </select> |
| | | </div> |
| | | <!-- 단일 셀렉트 --> |
| | | <div ng-switch-when="SINGLE_SELECT"> |
| | | <select class="form-control input-sm issue-select-label" |
| | | ng-required="issueCustomField.fieldOption == '01'" |
| | | ng-model="issueCustomField.useValues"> |
| | | <option value="" value="" translate="common.choose">선택하세요.</option> |
| | | <option ng-repeat="customFieldValueVo in issueCustomField.customFieldVo.customFieldValueVos" |
| | | value="{{customFieldValueVo.value}}" |
| | | ng-selected="$root.selectOption(issueCustomField.useValues, customFieldValueVo.value)"> |
| | | {{customFieldValueVo.value}} |
| | | </option> |
| | | </select> |
| | | </div> |
| | | |
| | | <!-- 멀티 셀렉트 --> |
| | | <div ng-switch-when="MULTI_SELECT"> |
| | | <ng-dropdown-multiselect class="multiSelect cursor" |
| | | data-input-name="" |
| | | selected-model="issueCustomField.useValues" |
| | | extra-settings="{ 'idProp' : 'value', 'externalIdProp' : 'value', 'displayProp' : 'value', 'stringTypeOption' : 'true', stopRemoveBodyEvent : true }" |
| | | options="issueCustomField.customFieldVo.customFieldValueVos"></ng-dropdown-multiselect> |
| | | </div> |
| | | <!-- 멀티 셀렉트 --> |
| | | <div ng-switch-when="MULTI_SELECT"> |
| | | <ng-dropdown-multiselect class="multiSelect cursor" |
| | | data-input-name="" |
| | | modal-form-auto-scroll |
| | | selected-model="issueCustomField.useValues" |
| | | extra-settings="{ 'idProp' : 'value', 'externalIdProp' : 'value', 'displayProp' : 'value', 'stringTypeOption' : 'true', stopRemoveBodyEvent : true }" |
| | | options="issueCustomField.customFieldVo.customFieldValueVos"></ng-dropdown-multiselect> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </form> |
| | | </div> |
| | | <hr> |
| | | <div class="row"> |
| | | <div class="col-lg-8 fontcolor_green"> |
| | | <label class="issue-label"><span class="fontcolor_green" translate="companyField.info">업체정보</span> |
| | | <span class="select3-selection__choice" style="position: relative; bottom: 2px;"><code class="highlighter-rouge">*</code> 업체 이름 클릭시 선택된 이름의 업체 정보가 조회됩니다.</span> |
| | | </label> |
| | | </div> |
| | | </div> |
| | | |
| | | <div class="modal-footer buttons-on-right"> |
| | | <button type="button" class="btn btn-md btn-grey" ng-click="fn.cancel()" tabindex="-1"><span |
| | | translate="common.cancel">취소</span></button> |
| | | <button type="button" class="btn btn-md btn-primary bold" |
| | | js-short-cut |
| | | js-short-cut-action="(fn.formCheck(issueModifyForm.$invalid) || $root.spinner) ? null : fn.formSubmit()" |
| | | ng-disabled="fn.formCheck(issueModifyForm.$invalid)" |
| | | ng-click="fn.formSubmit()"><span translate="common.save">저장</span> |
| | | </button> |
| | | <div class="row"> |
| | | <div class="col-lg-4"> |
| | | <div class="form-group mb10"> |
| | | <label class="issue-label"> <span translate="companyField.name">업체이름</span> </label> |
| | | <js-autocomplete-single data-input-name="companyField" |
| | | selected-model="vm.form.companyFields" |
| | | search="vm.companyName" |
| | | source="fn.getCompanyFieldList(vm.companyName, vm.form.companyFields, vm.autoCompletePage.companyField.page, fn.getCompanyFieldListCallBack)" |
| | | page="vm.autoCompletePage.companyField.page" |
| | | total-page="vm.autoCompletePage.companyField.totalPage" |
| | | input-disabled="false" |
| | | translation-texts="{ empty : 'common.emptyCompany' }" |
| | | broad-cast="companyFieldEvent" |
| | | extra-settings="{ displayProp : 'name' , idProp : 'id', imageable : false, imagePathProp : '', |
| | | type : '', maxlength : 200, autoResize : false, stopRemoveBodyEvent : true }"></js-autocomplete-single> |
| | | </div> |
| | | </div> |
| | | <div class="col-lg-4"> |
| | | <div class="form-group mb10"> |
| | | <label for="companyFieldManagerAddForm" class="issue-label"><span translate="companyField.manager">담당자</span></label> |
| | | <input id="companyFieldManagerAddForm" |
| | | name="companyManager" |
| | | type="text" |
| | | class="form-control" |
| | | autofocus |
| | | kr-input |
| | | input-regex="[^a-zA-Z0-9 가-힣ㄱ-ㅎㅏ-ㅣ\u318D\u119E\u11A2\u2022\u2025a\u00B7\uFE55]" |
| | | autocomplete="off" |
| | | ng-model="vm.companyManager" |
| | | ng-maxlength="100" |
| | | maxlength="100" |
| | | > |
| | | </div> |
| | | </div> |
| | | <div class="col-lg-4"> |
| | | <div class="form-group mgb5"> |
| | | <label for="companyFieldTelAddForm" class="issue-label"><span translate="companyField.tel">전화번호</span></label> |
| | | <input id="companyFieldTelAddForm" |
| | | name="companyTel" |
| | | type="text" |
| | | class="form-control" |
| | | kr-input |
| | | ng-pattern="/^\d{2,3}-\d{3,4}-\d{4}$/" |
| | | autocomplete="off" |
| | | ng-model="vm.companyTel" |
| | | maxlength="20"> |
| | | <div ng-show="issueAddForm.companyTel.$error.pattern" class="help-block form-text text-danger" |
| | | translate="companyField.invalidTelFormat">전화번호 형식이 맞지 않습니다. xxx-xxx-xxxx 형식으로 입력하세요. |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div class="col-lg-4"> |
| | | <div class="form-group mgb5"> |
| | | <label for="companyFieldEmailAddForm" class="issue-label"><span translate="companyField.email">이메일</span></label> |
| | | <input id="companyFieldEmailAddForm" |
| | | name="companyEmail" |
| | | type="email" |
| | | class="form-control" |
| | | autocomplete="off" |
| | | maxLength="50" |
| | | ng-model="vm.companyEmail" |
| | | kr-input |
| | | ng-pattern="/^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/"> |
| | | <div ng-show="issueAddForm.companyEmail.$error.pattern" class="help-block form-text text-danger" |
| | | translate="users.invalidEmailFormat">이메일 형식이 맞지 않습니다. |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div class="col-lg-4"> |
| | | <div class="form-group mgb5"> |
| | | <label for="companyFieldDescAddForm" class="issue-label"><span translate="companyField.memo">비고</span></label> |
| | | <input id="companyFieldDescAddForm" |
| | | name="companyMemo" |
| | | type="text" |
| | | class="form-control" |
| | | kr-input |
| | | autocomplete="off" |
| | | ng-maxlength="200" |
| | | ng-model="vm.companyMemo" |
| | | maxlength="200"> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <p></p> |
| | | <div class="row"> |
| | | <div class="col-lg-8 fontcolor_green"> |
| | | <label class="issue-label"><span class="fontcolor_green" translate="ispField.info">ISP 정보</span> |
| | | <span class="select3-selection__choice" style="position: relative; bottom: 2px;"><code class="highlighter-rouge">*</code> ISP 이름 클릭시 선택된 이름의 ISP 정보가 조회됩니다.</span> |
| | | </label> |
| | | </div> |
| | | </div> |
| | | |
| | | <div class="row"> |
| | | <div class="col-lg-4"> |
| | | <div class="form-group mb10"> |
| | | <label class="issue-label"> <span translate="ispField.name">ISP 이름</span> </label> |
| | | <js-autocomplete-single data-input-name="ispField" |
| | | selected-model="vm.form.ispFields" |
| | | search="vm.ispName" |
| | | source="fn.getIspFieldList(vm.ispName, vm.form.ispFields, vm.autoCompletePage.ispField.page, fn.getIspFieldListCallBack)" |
| | | page="vm.autoCompletePage.ispField.page" |
| | | total-page="vm.autoCompletePage.ispField.totalPage" |
| | | input-disabled="false" |
| | | translation-texts="{ empty : 'common.emptyIsp' }" |
| | | broad-cast="ispFieldEvent" |
| | | extra-settings="{ displayProp : 'name' , idProp : 'id', imageable : false, imagePathProp : '', |
| | | type : '', maxlength : 200, autoResize : false, stopRemoveBodyEvent : true }"></js-autocomplete-single> |
| | | </div> |
| | | </div> |
| | | <div class="col-lg-4"> |
| | | <div class="form-group mb10"> |
| | | <label for="ispFieldCodeAddForm" class="issue-label"><span translate="ispField.code">코드</span></label> |
| | | <input id="ispFieldCodeAddForm" |
| | | name="ispCode" |
| | | type="text" |
| | | class="form-control" |
| | | kr-input |
| | | input-regex="[^a-zA-Z0-9 가-힣ㄱ-ㅎㅏ-ㅣ\u318D\u119E\u11A2\u2022\u2025a\u00B7\uFE55]" |
| | | autocomplete="off" |
| | | ng-model="vm.ispCode" |
| | | ng-maxlength="100" |
| | | maxlength="100"> |
| | | </div> |
| | | </div> |
| | | |
| | | <div class="col-lg-4"> |
| | | <div class="form-group mb10"> |
| | | <label for="ispFieldManagerAddForm" class="issue-label"><span translate="ispField.manager">담당자</span></label> |
| | | <input id="ispFieldManagerAddForm" |
| | | name="ispManager" |
| | | type="text" |
| | | class="form-control" |
| | | kr-input |
| | | input-regex="[^a-zA-Z0-9 가-힣ㄱ-ㅎㅏ-ㅣ\u318D\u119E\u11A2\u2022\u2025a\u00B7\uFE55]" |
| | | autocomplete="off" |
| | | ng-model="vm.ispManager" |
| | | ng-maxlength="100" |
| | | maxlength="100"> |
| | | </div> |
| | | </div> |
| | | <div class="col-lg-4"> |
| | | <div class="form-group mgb5"> |
| | | <label for="ispFieldTelAddForm" class="issue-label"><span translate="ispField.tel">전화번호</span></label> |
| | | <input id="ispFieldTelAddForm" |
| | | name="ispTel" |
| | | type="text" |
| | | class="form-control" |
| | | kr-input |
| | | ng-pattern="/^\d{2,3}-\d{3,4}-\d{4}$/" |
| | | autocomplete="off" |
| | | ng-model="vm.ispTel" |
| | | maxlength="20"> |
| | | <div ng-show="issueAddForm.ispTel.$error.pattern" class="help-block form-text text-danger" |
| | | translate="companyField.invalidTelFormat">전화번호 형식이 맞지 않습니다. xxx-xxx-xxxx 형식으로 입력하세요. |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div class="col-lg-4"> |
| | | <div class="form-group mgb5"> |
| | | <label for="ispFieldEmailAddForm" class="issue-label"><span translate="ispField.email">이메일</span></label> |
| | | <input id="ispFieldEmailAddForm" |
| | | name="ispEmail" |
| | | type="email" |
| | | class="form-control" |
| | | autocomplete="off" |
| | | maxLength="50" |
| | | ng-model="vm.ispEmail" |
| | | kr-input |
| | | ng-pattern="/^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/"> |
| | | <div ng-show="issueAddForm.ispEmail.$error.pattern" class="help-block form-text text-danger" |
| | | translate="users.invalidEmailFormat">이메일 형식이 맞지 않습니다. |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div class="col-lg-4"> |
| | | <div class="form-group mgb5"> |
| | | <label for="ispFieldDescAddForm" class="issue-label"><span translate="ispField.memo">비고</span></label> |
| | | <input id="ispFieldDescAddForm" |
| | | name="ispMemo" |
| | | type="text" |
| | | class="form-control" |
| | | kr-input |
| | | autocomplete="off" |
| | | ng-model="vm.ispMemo" |
| | | ng-maxlength="200" |
| | | maxlength="200"> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <p></p> |
| | | <div class="row"> |
| | | <div class="col-lg-8 fontcolor_green"> |
| | | <label class="issue-label"><span class="fontcolor_green" translate="hostingField.info">호스팅 정보</span> |
| | | <span class="select3-selection__choice" style="position: relative; bottom: 2px;"><code class="highlighter-rouge">*</code> 호스팅 이름 클릭시 선택된 이름의 호스팅 정보가 조회됩니다.</span> |
| | | </label> |
| | | </div> |
| | | </div> |
| | | |
| | | <div class="row"> |
| | | <div class="col-lg-4"> |
| | | <div class="form-group mb10"> |
| | | <label class="issue-label"> <span translate="hostingField.name">호스팅 이름</span> </label> |
| | | <js-autocomplete-single data-input-name="hostingField" |
| | | selected-model="vm.form.hostingFields" |
| | | search="vm.hostingName" |
| | | source="fn.getHostingFieldList(vm.hostingName, vm.form.hostingFields, vm.autoCompletePage.hostingField.page, fn.getHostingFieldListCallBack)" |
| | | page="vm.autoCompletePage.hostingField.page" |
| | | total-page="vm.autoCompletePage.hostingField.totalPage" |
| | | input-disabled="false" |
| | | translation-texts="{ empty : 'common.emptyHosting' }" |
| | | broad-cast="hostingFieldEvent" |
| | | extra-settings="{ displayProp : 'name' , idProp : 'id', imageable : false, imagePathProp : '', |
| | | type : '', maxlength : 200, autoResize : false, stopRemoveBodyEvent : true }"></js-autocomplete-single> |
| | | </div> |
| | | </div> |
| | | <div class="col-lg-4"> |
| | | <div class="form-group mb10"> |
| | | <label for="hostingCodeManagerAdd" class="issue-label"><span translate="hostingField.code">담당자</span></label> |
| | | <input id="hostingCodeManagerAdd" |
| | | name="hostingCode" |
| | | type="text" |
| | | class="form-control" |
| | | kr-input |
| | | input-regex="[^a-zA-Z0-9 가-힣ㄱ-ㅎㅏ-ㅣ\u318D\u119E\u11A2\u2022\u2025a\u00B7\uFE55]" |
| | | autocomplete="off" |
| | | ng-model="vm.hostingCode" |
| | | ng-maxlength="100" |
| | | maxlength="100"> |
| | | </div> |
| | | </div> |
| | | |
| | | <div class="col-lg-4"> |
| | | <div class="form-group mb10"> |
| | | <label for="hostingFieldManagerAdd" class="issue-label"><span translate="hostingField.manager">담당자</span></label> |
| | | <input id="hostingFieldManagerAdd" |
| | | name="hostingManager" |
| | | type="text" |
| | | class="form-control" |
| | | kr-input |
| | | input-regex="[^a-zA-Z0-9 가-힣ㄱ-ㅎㅏ-ㅣ\u318D\u119E\u11A2\u2022\u2025a\u00B7\uFE55]" |
| | | autocomplete="off" |
| | | ng-model="vm.hostingManager" |
| | | ng-maxlength="100" |
| | | maxlength="100"> |
| | | </div> |
| | | </div> |
| | | <div class="col-lg-4"> |
| | | <div class="form-group mgb5"> |
| | | <label for="hostingFieldTelAdd" class="issue-label"><span translate="hostingField.tel">전화번호</span></label> |
| | | <input id="hostingFieldTelAdd" |
| | | name="hostingTel" |
| | | type="text" |
| | | class="form-control" |
| | | kr-input |
| | | ng-pattern="/^\d{2,3}-\d{3,4}-\d{4}$/" |
| | | autocomplete="off" |
| | | ng-model="vm.hostingTel" |
| | | maxlength="20"> |
| | | <div ng-show="issueAddForm.hostingTel.$error.pattern" class="help-block form-text text-danger" |
| | | translate="companyField.invalidTelFormat">전화번호 형식이 맞지 않습니다. xxx-xxx-xxxx 형식으로 입력하세요. |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div class="col-lg-4"> |
| | | <div class="form-group mgb5"> |
| | | <label for="hostingFieldEmailAdd" class="issue-label"><span translate="hostingField.email">이메일</span></label> |
| | | <input id="hostingFieldEmailAdd" |
| | | name="hostingEmail" |
| | | type="email" |
| | | class="form-control" |
| | | autocomplete="off" |
| | | maxLength="50" |
| | | ng-model="vm.hostingEmail" |
| | | kr-input |
| | | ng-pattern="/^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/"> |
| | | <div ng-show="issueAddForm.hostingEmail.$error.pattern" class="help-block form-text text-danger" |
| | | translate="users.invalidEmailFormat">이메일 형식이 맞지 않습니다. |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div class="col-lg-4"> |
| | | <div class="form-group mgb5"> |
| | | <label for="hostingFieldDescAdd" class="issue-label"><span translate="hostingField.memo">비고</span></label> |
| | | <input id="hostingFieldDescAdd" |
| | | name="hostingMemo" |
| | | type="text" |
| | | class="form-control" |
| | | kr-input |
| | | autocomplete="off" |
| | | ng-model="vm.hostingMemo" |
| | | ng-maxlength="200" |
| | | maxlength="200"> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </form> |
| | | <hr> |
| | | <div class="form-group mb10"> |
| | | <label class="issue-label"><span translate="common.content">내용</span></label> |
| | | <summernote |
| | | class="summernote" |
| | | lang="ko-KR" |
| | | summer-note-auto-focus |
| | | ng-model="vm.form.description" |
| | | data-editor="vm.summerNote.editor" |
| | | data-editable="vm.summerNote.editable" |
| | | on-image-upload="fn.imageUpload(files)" |
| | | target=".note-editable"></summernote> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | |
| | | |
| | | <div class="modal-footer buttons-on-right"> |
| | | <div class="pull-left"> |
| | | <label> |
| | | <input class="form-control issue-continue-checkbox pull-left" type="checkbox" ng-model="vm.infiniteAdd" |
| | | tabindex="-1"> |
| | | <span translate="issue.continueCreateIssue">이 화면에서 이슈를 계속 생성합니다.</span> |
| | | </label> |
| | | </div> |
| | | <button type="button" class="btn btn-md btn-grey" ng-click="fn.cancel()" tabindex="-1"><span |
| | | translate="common.cancel">취소</span></button> |
| | | <button type="button" class="btn btn-md btn-primary bold" |
| | | js-short-cut |
| | | js-short-cut-action="(fn.formCheck(issueAddForm.$invalid) || $root.spinner) ? null : fn.formSubmit()" |
| | | ng-disabled="fn.formCheck(issueAddForm.$invalid)" |
| | | ng-click="fn.formSubmit()"><span translate="common.save">저장</span> |
| | | </button> |
| | | </div> |