이슈 상세 페이지에
"일반 메일 보내기 기능 추가"
이메일 템플릿 명칭 변경 -> 업체 이메일
이메일 템플릿 제목 추가
| | |
| | | import kr.wisestone.owl.web.condition.DepartmentCondition; |
| | | import kr.wisestone.owl.web.condition.IssueCondition; |
| | | import kr.wisestone.owl.web.condition.ProjectCondition; |
| | | import kr.wisestone.owl.web.form.EmailCommonForm; |
| | | import kr.wisestone.owl.web.form.EmailTemplateForm; |
| | | import kr.wisestone.owl.web.form.IssueApiForm; |
| | | import kr.wisestone.owl.web.form.IssueForm; |
| | |
| | | void setCountDownIssues(List<IssueVo> issueVos); |
| | | |
| | | void makeIssueMapToIssue(Issue issue, Map<String, Object> issueMap); |
| | | |
| | | void sendCommonEmail(EmailCommonForm make); |
| | | } |
| | |
| | | this.issueHistoryService.addIssueHistory(issue, IssueHistoryType.SEND, sb.toString()); |
| | | } |
| | | |
| | | @Override |
| | | public void sendCommonEmail(EmailCommonForm emailCommonForm) { |
| | | if (emailCommonForm.getSendEmails().size() < 1) { |
| | | throw new OwlRuntimeException( |
| | | this.messageAccessor.getMessage(MsgConstants.ISSUE_NOT_SEND_USER)); |
| | | } else if (emailCommonForm.getIssueId() == null) { |
| | | throw new OwlRuntimeException( |
| | | this.messageAccessor.getMessage(MsgConstants.ISSUE_NOT_EXIST)); |
| | | } |
| | | |
| | | Issue issue = this.getIssue(emailCommonForm.getIssueId()); |
| | | |
| | | // 발신자 표시 |
| | | User user = this.webAppUtil.getLoginUserObject(); |
| | | UserVo toUser = this.webAppUtil.getLoginUser(); |
| | | |
| | | // 사용자 시스템 기능 사용 정보 수집 |
| | | log.info(ElasticSearchUtil.makeUserActiveHistoryMessage(this.webAppUtil.getLoginUser(), ElasticSearchConstants.ISSUE_ANOTHER_USER_SEND_EMAIL)); |
| | | StringBuilder sb = new StringBuilder(); |
| | | |
| | | Locale locale = CommonUtil.getUserLanguage(user.getLanguage()); |
| | | String[] sendMails = ConvertUtil.ToArray(emailCommonForm.getSendEmails()); |
| | | for(int i=0; i < sendMails.length; i++) { |
| | | sendMails[i] = CommonUtil.decryptAES128(sendMails[i]); |
| | | } |
| | | this.systemEmailService.sendEmail(emailCommonForm.getTitle(), emailCommonForm.getDescription(), sendMails, null); |
| | | |
| | | this.issueHistoryService.detectSendIssueMail(IssueHistoryType.SEND, emailCommonForm.getSendEmails(), sb); |
| | | this.issueHistoryService.addIssueHistory(issue, IssueHistoryType.SEND, sb.toString()); |
| | | } |
| | | |
| | | // 예약 발생 이슈를 실행한다 |
| | | @Override |
| | | @Transactional |
| | |
| | | import kr.wisestone.owl.web.condition.ApiMonitorCondition; |
| | | import kr.wisestone.owl.web.condition.DepartmentCondition; |
| | | import kr.wisestone.owl.web.condition.IssueCondition; |
| | | import kr.wisestone.owl.web.form.EmailCommonForm; |
| | | import kr.wisestone.owl.web.form.EmailTemplateForm; |
| | | import kr.wisestone.owl.web.form.IssueForm; |
| | | import org.slf4j.Logger; |
| | |
| | | } |
| | | |
| | | |
| | | // 일반 메일 발송 (사용자 직접 작성) |
| | | @RequestMapping(value = "/issue/sendCommonEmail", produces = MediaType.APPLICATION_JSON_VALUE) |
| | | public |
| | | @ResponseBody |
| | | Map<String, Object> sendCommonEmail(@RequestBody Map<String, Map<String, Object>> params) { |
| | | Map<String, Object> resJsonData = new HashMap<>(); |
| | | this.issueService.sendCommonEmail(EmailCommonForm.make(params.get(Constants.REQ_KEY_CONTENT))); |
| | | return this.setSuccessMessage(resJsonData); |
| | | } |
| | | |
| | | |
| | | // api 기록 조회 |
| | | @RequestMapping(value = "/api/findHistory", produces = MediaType.APPLICATION_JSON_VALUE) |
| | | public |
| | |
| | | font-size: 0.79rem; |
| | | } |
| | | |
| | | .select3-selection__email__remove { |
| | | color: #0066ff; |
| | | margin-left: 8px; |
| | | margin-top: 7px; |
| | | cursor: pointer; |
| | | font-size: 0.79rem; |
| | | } |
| | | |
| | | .select4-selection__choice { |
| | | font-size: 0.66rem; |
| | | letter-spacing: -0.01em; |
| | |
| | | "setIssueRelationTableDisplay": "연관 이슈 테이블 표시 설정", |
| | | "setIssueDownTableDisplay": "하위 이슈 테이블 표시 설정", |
| | | "columnName": "컬럼명", |
| | | "selectPartners": "업체 선택", |
| | | "partners" : "업체 이메일", |
| | | "area": "넓이", |
| | | "displayed": "표시 여부", |
| | | "sequence": "순서", |
| | | "cannotChangedIssueTitle": "이슈 제목은 변경할 수 없습니다.", |
| | | "cannotChangedIssueType": "이슈 구분은 변경할 수 없습니다.", |
| | | "selectSendIssueMail": "이슈 메일 발송 대상자 선택", |
| | | "selectSendIssueMail": "업체 메일 발송", |
| | | "CommonSendIssueMail": "일반 메일 발송", |
| | | "SendIssueMail": "메일 발송 입력", |
| | | "sendIssueSelectedUsers": "프로젝트에 참여하고 있는 다른 사용자에게 이슈 정보를 보냅니다.", |
| | | "sendMail": "이메일 발송", |
| | | "changedHistory": "이슈 변경 이력 상세정보", |
| | |
| | | "succeededIssueMail": "이슈 메일 발송 완료", |
| | | "sentToTheSelectedUser": "선택한 사용자에게 이메일이 발송되었습니다.", |
| | | "failedIssueMail": "이슈 메일 발송 실패", |
| | | "selectedPartnersMail": "업체 이메일을 선택하세요.", |
| | | "selectedPartnersTemplate": "업체 이메일 템플릿을 선택해주세요.", |
| | | "writeIssueMail": "이메일을 입력해주세요.", |
| | | "writeMail": "이메일을 입력하셔야 추가할수 있습니다.", |
| | | "issueVersionLookupFailed": "이슈 버전 조회 실패", |
| | | "relationIssueType1" : "다음 이슈와 관련됨", |
| | | "relationIssueType2" : "다음 이슈에 중복됨", |
| | |
| | | "checkAll": "전체 선택", |
| | | "unCheckAll": "전체 해제", |
| | | "send": "보내기", |
| | | "emailExplain": "받는 사람의 이메일 형식을 입력하셔야 합니다.", |
| | | "sendToPerson" : "다른 사용자에게 메일을 보냅니다.", |
| | | "selected": "선택됨", |
| | | "selectable": "선택 가능", |
| | | "password": "비밀번호", |
| | |
| | | "priority": "우선 순위", |
| | | "importance": "중요도", |
| | | "assignee": "담당자", |
| | | "toPerson": "받는 사람", |
| | | "assigneeTeam" : "담당부서", |
| | | "register": "등록자", |
| | | "startDate": "시작일", |
| | |
| | | 'chartLoader', 'jsTable', 'jsTree', 'tableColumnGenerator', 'treeColumnGenerator', 'modalFormAutoScroll', 'summerNote', 'summerNote-ko-KR', 'fullScroll', 'workflowService', 'priorityService', 'issueSearchService', 'issueTableConfigService', 'inputRegex', |
| | | 'severityService', 'issueTypeService', 'issueTypeCustomFieldService', 'issueService', 'issueStatusService', 'emailTemplateService','issueUserService','issueDepartmentService','issueModifyUserController', 'issueModifyDepartmentController', 'customFieldService', 'issueSearchFieldKeyViewElement', |
| | | 'issueSearchCustomFieldViewElement', 'tableUserImage', 'fullScroll', 'issueCommentService', 'detectIssueEditor', 'formSubmit', 'issueModifyStatusController', 'downIssueModifyStatusController', 'jsShortCut', |
| | | 'issueAddTableConfigController','issueAddRelationTableConfigController','issueAddDownTableConfigController','domAppend', 'issueDetailImagePreview', 'issueSendMailPartnersController', 'htmlDiff', 'issueVersionViewController', 'issueVersionService', |
| | | 'issueAddTableConfigController','issueAddRelationTableConfigController','issueAddDownTableConfigController','domAppend', 'issueDetailImagePreview', 'issueSendMailPartnersController', 'issueCommonSendMailController', 'htmlDiff', 'issueVersionViewController', 'issueVersionService', |
| | | 'jsHtmlDiff', 'issueReservationController', 'issueReservationService', 'issueVersionService', 'issueStatusAutoFocus', 'issueRelationService' |
| | | ], function () { |
| | | deferred.resolve(); |
New file |
| | |
| | | 'use strict'; |
| | | |
| | | define([ |
| | | 'app' |
| | | ], |
| | | function (app) { |
| | | app.controller('issueCommonSendMailController', ['$scope', '$rootScope', '$state', '$log', '$resourceProvider', '$uibModalInstance', '$controller', '$injector', '$q','SweetAlert', '$filter', 'Issue', 'parameter', |
| | | function ($scope, $rootScope, $state, $log, $resourceProvider, $uibModalInstance, $controller, $injector, $q, SweetAlert, $filter, Issue, parameter) { |
| | | |
| | | $scope.fn = { |
| | | cancel : cancel, // 팝업 창 닫기 |
| | | formSubmit : formSubmit, // 폼 전송 |
| | | formCheck : formCheck, // 폼 체크 |
| | | addInput : addInput, |
| | | removeInput : removeInput |
| | | }; |
| | | |
| | | $scope.vm = { |
| | | form : { |
| | | issueId : parameter.issueId, |
| | | title : "", |
| | | description: "", |
| | | inputs : [0], |
| | | emails : {}, // 입력된 사용자 이메일 |
| | | }, |
| | | userName : "", |
| | | autoCompletePage : { |
| | | user : { |
| | | page : 0, |
| | | totalPage : 0 |
| | | } |
| | | } |
| | | }; |
| | | |
| | | // 폼 체크 |
| | | function formCheck(formInvalid) { |
| | | if (formInvalid) { |
| | | return true; |
| | | } |
| | | return false; |
| | | } |
| | | |
| | | // 메일 주소 input 창 추가 버튼 |
| | | function addInput() { |
| | | var arrayFull = true; // 배열이 가득 차 있는지 여부 |
| | | var index = 0; |
| | | $scope.vm.form.inputs.forEach(function (email) { |
| | | if (!$rootScope.isDefined($scope.vm.form.emails[index])) { |
| | | arrayFull = false; |
| | | } |
| | | index++; |
| | | }); |
| | | |
| | | if (arrayFull) { |
| | | $scope.vm.form.inputs.push(index); |
| | | $scope.vm.form.emails[index] = "" |
| | | } else { |
| | | SweetAlert.warning($filter("translate")("issue.writeIssueMail"), $filter("translate")("issue.writeMail")); // 추가버튼 경고 |
| | | } |
| | | } |
| | | |
| | | // 폼 전송 |
| | | function formSubmit() { |
| | | $rootScope.spinner = true; |
| | | |
| | | var content = { |
| | | issueId : $scope.vm.form.issueId, |
| | | title : $scope.vm.form.title, |
| | | description : $scope.vm.form.description, |
| | | sendEmails : (function () { |
| | | var sendEmails = []; |
| | | var index = 0 |
| | | $scope.vm.form.inputs.forEach(function (email) { |
| | | if ($rootScope.isDefined($scope.vm.form.emails[index])) { |
| | | sendEmails.push($rootScope.encryption($scope.vm.form.emails[index])); // 이메일주소 암호화 |
| | | } |
| | | index++; |
| | | }); |
| | | |
| | | return sendEmails; |
| | | })() |
| | | }; |
| | | |
| | | Issue.sendCommonEmail($resourceProvider.getContent( |
| | | content, |
| | | $resourceProvider.getPageContent(0, 10))).then(function (result) { |
| | | |
| | | if (result.data.message.status === "success") { |
| | | SweetAlert.success($filter("translate")("issue.succeededIssueMail"), $filter("translate")("issue.sentToTheSelectedUser")); // "이슈 메일 발송 완료" |
| | | $scope.fn.cancel(); |
| | | } |
| | | else { |
| | | SweetAlert.error($filter("translate")("issue.failedIssueMail"), result.data.message.message); // "이슈 메일 발송 실패" |
| | | } |
| | | |
| | | $rootScope.spinner = false; |
| | | }); |
| | | } |
| | | |
| | | // 이메일 주소 input 삭제 |
| | | function removeInput(index) { |
| | | $scope.vm.form.inputs.splice(index, 1); |
| | | } |
| | | |
| | | function cancel() { |
| | | $rootScope.$broadcast("closeLayer"); // 팝업이 열리고 나서 js-multi, js-single 등에서 body 이벤트가 날아가는 현상 수정 |
| | | $uibModalInstance.dismiss('cancel'); |
| | | $(document).unbind("keydown"); // 단축키 이벤트 제거 |
| | | } |
| | | }]); |
| | | }); |
| | |
| | | $scope.fn.issueBack = issueBack; |
| | | $scope.fn.removeRelationIssue = removeRelationIssue; |
| | | $scope.fn.removeDownIssue = removeDownIssue; |
| | | $scope.fn.sendCommonMail = sendCommonMail; |
| | | |
| | | // 이슈 목록 컨트롤러 vm, fn 상속 중 |
| | | $scope.vm.viewer = {}; // 현재 이슈 |
| | |
| | | }); |
| | | } |
| | | |
| | | // 일반 메일 발송 (사용자 직접 작성) |
| | | function sendCommonMail() { |
| | | $uibModal.open({ |
| | | templateUrl : 'views/issue/issueCommonSendMail.html', |
| | | size : "md", |
| | | controller : 'issueCommonSendMailController', |
| | | backdrop : 'static', |
| | | resolve : { |
| | | parameter : { |
| | | issueId : $scope.vm.viewer.id, |
| | | } |
| | | } |
| | | }); |
| | | } |
| | | |
| | | function getParametersAll() { |
| | | var params = $scope.fn.getParameters(null, $scope.vm.viewer.issueCompanyVos); |
| | | params = $scope.fn.getParameters(params, $scope.vm.viewer.issueIspVos); |
| | |
| | | formCheck : formCheck, // 폼 체크 |
| | | onChangeEmailTemplate : onChangeEmailTemplate, // 이메일 템플릿 선택시 실행 |
| | | getEmailTemplateList : getEmailTemplateList // 이메일 템플릿 목록 가져오기 |
| | | // showEmailTemplate : showEmailTemplate, |
| | | }; |
| | | |
| | | $scope.vm = { |
| | |
| | | hostingVos : parameter.hostingVos, |
| | | partners : parameter.partnersAll.slice(), |
| | | html : "", |
| | | tab : "SEND_TEMPLATE", |
| | | form : { |
| | | id : parameter.issueId, // 이슈 번호 |
| | | projects : [{ id : parameter.projectId}], // 프로젝트 |
| | |
| | | $scope.vm.html = result.data.data.template; |
| | | } |
| | | else { |
| | | SweetAlert.error($filter("translate")("issue.failedIssueMail"), result.data.message.message); // "이슈 메일 발송 실패" |
| | | $scope.vm.html = ""; |
| | | //SweetAlert.warning($filter("translate")("issue.selectedPartnersMail"),$filter("translate")("issue.selectedPartnersTemplate")); // option 선택 경고 |
| | | } |
| | | |
| | | $rootScope.spinner = false; |
| | |
| | | |
| | | $scope.vm.emailTemplateId = 1; |
| | | $scope.vm.emailTitle = ""; |
| | | $scope.vm.emailTemplates.forEach(function (emailTemplate) { |
| | | /*if (emailTemplate.id === $scope.vm.emailTemplateId) { |
| | | $scope.vm.emailTitle = emailTemplate.title; |
| | | }*/ |
| | | if (emailTemplate.templateType === $scope.vm.emailTemplateType) { |
| | | $scope.vm.emailTitle = emailTemplate.title; |
| | | } |
| | | }) |
| | | if ($rootScope.isDefined($scope.vm.emailTemplateType)) { |
| | | $scope.vm.emailTemplates.forEach(function (emailTemplate) { |
| | | if (emailTemplate.templateType === $scope.vm.emailTemplateType) { |
| | | $scope.vm.emailTitle = emailTemplate.title; |
| | | } |
| | | }) |
| | | } |
| | | } |
| | | |
| | | |
| | |
| | | } |
| | | |
| | | $scope.fn.getEmailTemplateList(); |
| | | |
| | | }]); |
| | | |
| | | }); |
| | |
| | | $log.debug("이슈 이메일 발송 결과 : ", response); |
| | | return response; |
| | | }); |
| | | }, |
| | | sendCommonEmail : function (conditions) { |
| | | return $http.post("issue/sendCommonEmail", conditions).then(function (response) { |
| | | $log.debug("이슈 이메일 발송 결과 : ", response); |
| | | return response; |
| | | }); |
| | | } |
| | | } |
| | | } |
| | |
| | | 'issueAddTableConfigController' : 'app/issue/issueAddTableConfig.controller', // 이슈 테이블 설정 컨트롤러 |
| | | 'issueAddRelationTableConfigController' : 'app/issue/issueAddRelationTableConfig.controller', // 이슈 테이블 설정 컨트롤러 |
| | | 'issueAddDownTableConfigController' : 'app/issue/issueAddDownTableConfig.controller', // 이슈 테이블 설정 컨트롤러 |
| | | 'issueSendMailPartnersController' : 'app/issue/issueSendMailPartners.controller', // 이슈 이메일 발송 컨트롤러 |
| | | 'issueSendMailPartnersController' : 'app/issue/issueSendMailPartners.controller', // 업체 이메일 발송 컨트롤러 |
| | | 'issueCommonSendMailController' : 'app/issue/issueCommonSendMail.controller', // 일반 이메일 발송 컨트롤러 |
| | | 'issueVersionViewController' : 'app/issue/issueVersionView.controller', // 이슈 버전 확인 컨트롤러 |
| | | 'issueReservationController' : 'app/issue/issueReservation.controller', // 이슈 발생 예약 컨트롤러 |
| | | 'issueModifyUserController' : 'app/issue/issueModifyUser.controller', // 이슈 담당자 컨트롤러 |
| | |
| | | 'config', // angularJs 설정 - route 이동 관련, 이동시 초기화 로직이 들어있다. - 직접 로드 |
| | | 'constants', |
| | | 'commonController', |
| | | 'issueCommonSendMailController', |
| | | 'autoCompleteController', |
| | | 'userInviteController', |
| | | 'issueAddController', // 이슈 만들기에서 사용 |
New file |
| | |
| | | <div class="formModal"> |
| | | <div class="modal-header faded smaller"> |
| | | <div class="modal-title"> |
| | | <strong translate="issue.CommonSendIssueMail">일반 메일 발송</strong> |
| | | </div> |
| | | <button aria-label="Close" class="close" type="button" ng-click="fn.cancel()"> |
| | | <span aria-hidden="true"> ×</span> |
| | | </button> |
| | | </div> |
| | | |
| | | <div class="modal-body"> |
| | | <form role="form" name="issueSendForm"> |
| | | <button type="button" class="btn btn-secondary mr-3 float-right mb-1" ng-click="fn.addInput()"> |
| | | <span translate="common.add">추가</span> |
| | | </button> |
| | | <div class="form-group"> |
| | | <label class="issue-label mt-2"><span translate="common.toPerson">받는 사람</span> <code class="highlighter-rouge">*</code></label> |
| | | <div class="input-group" ng-repeat="i in vm.form.inputs"> |
| | | <input type="text" |
| | | name="email" |
| | | class="form-control mt-1" |
| | | kr-input |
| | | ng-model="vm.form.emails[$index]" |
| | | ng-pattern="/^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/" |
| | | required |
| | | autocomplete="off"> |
| | | <span class="select3-selection__email__remove" ng-click="fn.removeInput($index)">×</span> |
| | | </div> |
| | | <small translate="common.emailExplain">받는 사람의 이메일 형식을 입력하셔야 합니다.</small> |
| | | <div ng-if="issueSendForm.email.$error.pattern" class="help-block form-text text-danger" |
| | | translate="common.invalidEmailFormat">이메일 형식이 맞지 않습니다. |
| | | </div> |
| | | </div> |
| | | |
| | | |
| | | <label class="issue-label"><span translate="common.title">제목</span></label> |
| | | <input id="title" |
| | | type="text" |
| | | name="title" |
| | | class="form-control mt-1" |
| | | kr-input |
| | | ng-model="vm.form.title" |
| | | autocomplete="off"> |
| | | |
| | | <div class="form-group mb10 mt-10"> |
| | | <label class="issue-label"><span translate="common.content">내용</span></label> |
| | | <summernote |
| | | class="summernote mt-1" |
| | | 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> |
| | | <small class="mt-1" translate="common.sendToPerson">다른 사용자에게 메일을 보냅니다.</small> |
| | | </form> |
| | | </div> |
| | | |
| | | <div class="modal-footer buttons-on-right"> |
| | | <button type="button" class="btn btn-md btn-grey" ng-click="fn.cancel()"><span |
| | | translate="common.cancel">취소</span></button> |
| | | <button type="button" class="btn btn-md btn-primary bold" |
| | | ng-disabled="fn.formCheck(issueSendForm.$invalid)" |
| | | ng-click="fn.formSubmit()"><span translate="issue.sendMail">이메일 발송</span> |
| | | </button> |
| | | </div> |
| | | </div> |
| | |
| | | </div> |
| | | </span> |
| | | <a class="show-ticket-info cursor"> |
| | | <i class="os-icon os-icon-email-forward mr-20" ng-if="vm.viewer.modifyPermissionCheck" ng-click="fn.sendMailAll()" data-toggle="tooltip" data-placement="right" title="다른 사용자에게 이슈 보내기"></i> |
| | | <i class="os-icon os-icon-email-2-at2 mr-20" ng-if="vm.viewer.modifyPermissionCheck" ng-click="fn.sendCommonMail()" data-toggle="tooltip" data-placement="right" title="직접 작성한 메일 보내기"></i> |
| | | <i class="os-icon os-icon-email-forward mr-20" ng-if="vm.viewer.modifyPermissionCheck" 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> |
| | |
| | | <div class="formModal"> |
| | | <div class="modal-header faded smaller"> |
| | | <div class="modal-title"> |
| | | <strong translate="issue.selectSendIssueMail">이슈 메일 발송 대상자 선택</strong> |
| | | <strong translate="issue.selectSendIssueMail">이슈 메일 발송</strong> |
| | | </div> |
| | | <button aria-label="Close" class="close" type="button" ng-click="fn.cancel()"> |
| | | <span aria-hidden="true"> ×</span> |
| | |
| | | </span> |
| | | </div> |
| | | |
| | | <label class="issue-label mt-10"> |
| | | <span translate="issue.selectPartners">업체 선택</span> <code class="highlighter-rouge">*</code> |
| | | </label> |
| | | <js-input-autocomplete data-input-name="mailUsers" |
| | | owl-auto-focus |
| | | target=".auto-complete-i0nput" |
| | |
| | | page="vm.autoCompletePage.user.page" |
| | | total-page="vm.autoCompletePage.user.totalPage" |
| | | source="fn.getMailTargetAll(vm.form.mailUsers)" |
| | | translation-texts="{ empty : 'common.emptyUser'}" |
| | | translation-texts="{ empty : 'common.emptyCompanyPartners'}" |
| | | input-disabled="vm.form.mailUsers == null" |
| | | extra-settings="{ displayProp : 'name' , idProp : 'id', imageable : false, imagePathProp : 'profile', |
| | | type : 'partner', maxlength : 100, autoResize : true, stopRemoveBodyEvent : true }"></js-input-autocomplete> |
| | | <div class="Template-area mt-20"> |
| | | <div class="form-group mb10"> |
| | | <label for="emailTemplateForm" class="issue-label"> |
| | | <span translate="common.emailTemplate">이메일 템플릿</span> |
| | | </label> |
| | | <select id="emailTemplateForm" |
| | | name="emailTemplate" |
| | | class="form-control input-sm issue-select-label" |
| | | ng-model="vm.emailTemplateType" |
| | | ng-change="fn.onChangeEmailTemplate()" |
| | | required> |
| | | <option ng-repeat="emailTemplate in vm.emailTemplates" |
| | | value="{{emailTemplate.templateType}}" |
| | | translate="{{emailTemplate.title}}"> |
| | | </option> |
| | | </select> |
| | | </div> |
| | | </div> |
| | | <summernote |
| | | class="summernote" |
| | | lang="ko-KR" |
| | | config="vm.options" |
| | | ng-model="vm.html" |
| | | target=".note-editable"></summernote> |
| | | |
| | | <div class="form-group mb10 mt-20"> |
| | | <label for="emailTemplateForm" class="issue-label"> |
| | | <span translate="issue.partners">업체 이메일</span> <code class="highlighter-rouge">*</code> |
| | | </label> |
| | | <select id="emailTemplateForm" |
| | | name="emailTemplate" |
| | | class="form-control input-sm issue-select-label" |
| | | ng-model="vm.emailTemplateType" |
| | | ng-change="fn.onChangeEmailTemplate()" |
| | | required> |
| | | <option value="" ng-selected="true">선택하세요</option> |
| | | <option ng-repeat="emailTemplate in vm.emailTemplates" |
| | | value="{{emailTemplate.templateType}}" |
| | | translate="{{emailTemplate.title}}"> |
| | | </option> |
| | | </select> |
| | | </div> |
| | | |
| | | <label class="issue-label"><span translate="common.title">제목</span></label> |
| | | <input id="title" |
| | | type="text" |
| | | name="title" |
| | | class="form-control" |
| | | kr-input |
| | | ng-model="vm.emailTitle" |
| | | autocomplete="off"> |
| | | |
| | | <div class="form-group mb10 mt-10"> |
| | | <label class="issue-label"><span translate="common.content">내용</span></label> |
| | | <summernote |
| | | class="summernote" |
| | | lang="ko-KR" |
| | | config="vm.options" |
| | | ng-model="vm.html" |
| | | target=".note-editable"></summernote> |
| | | </div> |
| | | </div> |
| | | </form> |
| | | </div> |
| | | |
| | | |
| | | <div class="modal-footer buttons-on-right"> |
| | | <button type="button" class="btn btn-md btn-grey" ng-click="fn.cancel()"><span |