이메일 수정 진행중 , 이슈 상세 및 이슈 리스트 수정
| | |
| | | |
| | | case "02": // 프로젝트, 이슈 유형, 이슈 상태, 우선순위, 중요도, 담당자, 첨부파일, 사용자 정의 필드 정보, 댓글, 기록을 셋팅한다. |
| | | this.setIssueDetail(issueVo, issue); // 이슈 상세 정보를 셋팅한다. |
| | | issueVo.setProjectVo(ConvertUtil.copyProperties(issue.getProject(), ProjectVo.class)); |
| | | break; |
| | | } |
| | | } |
| | |
| | | $scope.fn.getDownTableConfigs = getDownTableConfigs; |
| | | $scope.fn.containsPartner = containsPartner; |
| | | $scope.fn.onActivate = onActivate; |
| | | $scope.fn.makePartnersEmail = makePartnersEmail; |
| | | |
| | | // 이슈 목록 컨트롤러 vm, fn 상속 중 |
| | | $scope.vm.viewer = {}; |
| | |
| | | |
| | | $scope.vm.form = { |
| | | issues : [], //연관 일감 |
| | | issuesDown : [] // 하위 일감 |
| | | issuesDown : [], // 하위 일감 |
| | | issueCompanyVos : [], |
| | | issueIspVos : [], |
| | | issueHostingVos : [] |
| | | }; |
| | | |
| | | |
| | |
| | | } |
| | | |
| | | // 이슈명을 클릭하면 이슈 상세 정보를 조회한다. |
| | | $rootScope.$on("getIssueDetail", function (event, args) { |
| | | $scope.vm.viewer.id = args["id"]; |
| | | $scope.fn.getIssueDetail(); |
| | | }); |
| | | // $rootScope.$on("getIssueDetail", function (event, args) { |
| | | // $scope.vm.viewer.id = args["id"]; |
| | | // $scope.fn.getIssueDetail(); |
| | | // }); |
| | | |
| | | // 이슈명을 클릭하면 이슈 상세 정보를 조회한다. |
| | | $scope.$on("getIssueDetail", function (event, args) { |
| | | $scope.vm.viewer.id = args["id"]; |
| | | $scope.fn.getIssueDetail(); |
| | | }); |
| | | // $scope.$on("getIssueDetail", function (event, args) { |
| | | // $scope.vm.viewer.id = args["id"]; |
| | | // $scope.fn.getIssueDetail(); |
| | | // }); |
| | | |
| | | $scope.$watch(function() { |
| | | return $rootScope.currentDetailIssueId; |
| | | }, function() { |
| | | if ($rootScope.currentDetailIssueId != null) { |
| | | $scope.vm.viewer.id = $rootScope.currentDetailIssueId; |
| | | $scope.fn.getIssueDetail(); |
| | | } |
| | | }, true); |
| | | |
| | | // 초기화 해야할 할목을 지정하여 다른 이슈를 클릭할 때 초기화해준다. |
| | | function initReload() { |
| | |
| | | $scope.vm.issueForm.issueStatusList = []; |
| | | $scope.vm.issueForm.issueStatusId = ""; |
| | | $scope.vm.issueTypeId = $rootScope.getCurrentIssueTypeId(); |
| | | /*if ($scope.$root.$$phase !== '$apply' && $scope.$root.$$phase !== '$digest') { |
| | | $scope.$apply(); |
| | | }*/ |
| | | // if ($scope.$root.$$phase !== '$apply' && $scope.$root.$$phase !== '$digest') { |
| | | // $scope.$apply(); |
| | | // } |
| | | } |
| | | |
| | | // 이슈 상태 변경 |
| | |
| | | $scope.fn.getDownTableConfigs(); |
| | | |
| | | Issue.detail($resourceProvider.getContent( |
| | | {id : $scope.vm.viewer.id, deep : "02", customFields : $scope.vm.customFields}, |
| | | {id : $scope.vm.viewer.id, deep : "02"}, |
| | | $resourceProvider.getPageContent(0, 1))).then(function (result) { |
| | | |
| | | if (result.data.message.status === "success") { |
| | |
| | | } |
| | | $scope.vm.viewer.issueRelationVos = result.data.data.issueRelationVos; |
| | | $scope.vm.viewer.issueDownVos = result.data.data.issueDownVos; |
| | | |
| | | if ($rootScope.workProject.id > -1) { |
| | | $rootScope.changeLastProject(result.data.data.projectVo.id); |
| | | } |
| | | } |
| | | } |
| | | else { |
| | |
| | | }); |
| | | } |
| | | |
| | | // 업체/ISP/호스팅 배열값을 하나로 합쳐서 메일 클릭시 전달 |
| | | function makePartnersEmail() { |
| | | $scope.vm.form.partnersEmail = $scope.vm.viewer.issueCompanyVos.concat($scope.vm.viewer.issueIspVos, $scope.vm.viewer.issueHostingVos) |
| | | return $scope.vm.form.partnersEmail; |
| | | } |
| | | |
| | | // 특정 사용자에게 이슈를 메일로 발송 |
| | | function sendMail(issueId, projectId) { |
| | | makePartnersEmail(); |
| | | $uibModal.open({ |
| | | templateUrl : 'views/issue/issueSendMail.html', |
| | | size : "md", |
| | |
| | | parameter : function () { |
| | | return { |
| | | departmentVos : [$scope.vm.form.issues[0].departmentVos], |
| | | issueCompanyFields : [$scope.vm.form.issues[0].issueCompanyVos], |
| | | issueIspFields : [$scope.vm.form.issues[0].issueIspVos], |
| | | issueHostingFields : [$scope.vm.form.issues[0].issueHostingVos], |
| | | partners : $scope.vm.form.partnersEmail, |
| | | issueId : issueId, |
| | | projectId : projectId |
| | | // issueCompanyFields : [$scope.vm.viewer.issueCompanyVos[0]], |
| | | // issueIspFields : [$scope.vm.viewer.issueIspVos[0]], |
| | | // issueHostingFields : [$scope.vm.viewer.issueHostingVos[0]], |
| | | }; |
| | | } |
| | | } |
| | |
| | | // 현재 상세화면으로 보려고하는 이슈 id를 기억한다. |
| | | $rootScope.currentDetailIssueId = id; |
| | | // 이슈 상세 화면 요청 |
| | | $rootScope.$broadcast("getIssueDetail", { |
| | | id : id |
| | | }); |
| | | // $scope.$broadcast("getIssueDetail", { |
| | | // id : id |
| | | // }); |
| | | } |
| | | |
| | | |
| | | // 목록 화면으로 변경한다. |
| | | function listView() { |
| | |
| | | $scope.vm.responseData.data = angular.copy(temp); |
| | | // 마지막으로 보고있던 이슈 id를 초기화한다. |
| | | $rootScope.currentDetailIssueId = null; |
| | | $scope.$broadcast("getIssueList", {id: $rootScope.currentDetailIssueId}); |
| | | } |
| | | |
| | | // 이슈 테이블 설정 |
| | |
| | | if (detail) { |
| | | changeDetailView(result.data.data[0].id); |
| | | } |
| | | } |
| | | } |
| | | else { |
| | | SweetAlert.error($filter("translate")("issue.failedIssueLookup"), result.data.message.message); // 이슈 조회 실패 |
| | | } |
| | | }); |
| | | } |
| | | |
| | | // 이메일 프로젝트 경로로 이동 후 상세 진입시 조회 |
| | | function getDetailList(projectKey, number) { |
| | | var conditions = { |
| | | projectKey : projectKey, |
| | | combinationIssueNumber : number |
| | | }; |
| | | |
| | | Issue.find($resourceProvider.getContent(conditions, |
| | | $resourceProvider.getPageContent(0, 1))).then(function (result) { |
| | | |
| | | if (result.data.message.status === "success") { |
| | | if (result.data.data != null && result.data.data.length > 0) { |
| | | $scope.vm.projectKey = result.data.data[0].projectKey; |
| | | $scope.vm.issueNumber = result.data.data[0].issueNumber; |
| | | $scope.vm.responseData = result.data; |
| | | |
| | | changeDetailView(result.data.data[0].id); |
| | | } |
| | | } |
| | | else { |
| | |
| | | // 파라미터 읽기 |
| | | var params = $rootScope.previousGetParams; |
| | | if ($rootScope.isDefined(params)) { |
| | | $rootScope.$broadcast("makeIssueSearch", { projectKey : params.projectKey, issueNumber : params.issueNumber }); |
| | | // $rootScope.$broadcast("makeIssueSearch", { projectKey : params.projectKey, issueNumber : params.issueNumber }); |
| | | getDetailList(params.projectKey, params.issueNumber); |
| | | $rootScope.previousGetParams = null; |
| | | // $rootScope.issueTypeId = $rootScope.issueTypeMenu.id; |
| | | return; |
| | |
| | | removeManager : removeManager, // 전송 대상자 삭제 |
| | | cancel : cancel, // 팝업 창 닫기 |
| | | formSubmit : formSubmit, // 폼 전송 |
| | | formCheck : formCheck // 폼 체크 |
| | | // formCheck : formCheck // 폼 체크 |
| | | }; |
| | | |
| | | |
| | | $scope.vm = { |
| | | form : { |
| | | id : parameter.issueId, // 이슈 번호 |
| | | projects : [{ id : parameter.projectId}], // 프로젝트 |
| | | users : [] // 메일 전송받는 사용자 |
| | | partners : parameter.partners, |
| | | users : [], // 메일 전송받는 사용자 |
| | | issueCompanyVos : [], |
| | | issueIspVos : [], |
| | | issueHostingVos : [] |
| | | // companyFields : parameter.issueCompanyFields, // 업체 이메일 |
| | | // ispFields : parameter.issueIspFields, // ISP 이메일 |
| | | // hostingFields : parameter.issueHostingFields, // 호스팅 이메일 |
| | | }, |
| | | userName : "", |
| | | partnerName : "", |
| | | autoCompletePage : { |
| | | user : { |
| | | page : 0, |
| | | totalPage : 0 |
| | | }, |
| | | partnersMail : { |
| | | page : 0, |
| | | totalPage :0 |
| | | } |
| | | } |
| | | }; |
| | | |
| | | |
| | | |
| | | angular.extend(this, $controller('autoCompleteController', {$scope : $scope, $injector : $injector})); |
| | | |
| | | function formCheck(formInvalid) { |
| | | if (formInvalid) { |
| | | return true; |
| | | } |
| | | |
| | | if ($scope.vm.form.users.length < 1) { |
| | | return true; |
| | | } |
| | | |
| | | return false; |
| | | } |
| | | // function formCheck(formInvalid) { |
| | | // if (formInvalid) { |
| | | // return true; |
| | | // } |
| | | // |
| | | // if ($scope.vm.form.users.length < 1) { |
| | | // return true; |
| | | // } |
| | | // |
| | | // return false; |
| | | // } |
| | | |
| | | // 폼 전송 |
| | | function formSubmit() { |
| | | $rootScope.spinner = true; |
| | | |
| | | var content = { |
| | | id : $scope.vm.form.id, |
| | | sendEmails : (function () { |
| | | var sendEmails = []; |
| | | |
| | | angular.forEach($scope.vm.form.users, function (user) { |
| | | sendEmails.push($rootScope.encryption(user.account)); |
| | | angular.forEach($scope.vm.form.projects, function (project) { |
| | | sendEmails.push(project.id); |
| | | }); |
| | | |
| | | return sendEmails; |
| | |
| | | }); |
| | | } |
| | | |
| | | // function formSubmit() { |
| | | // $rootScope.spinner = true; |
| | | // |
| | | // var content = { |
| | | // id : $scope.vm.form.id, |
| | | // companyFieldsEmail : $scope.vm.form.companyFieldsEmail, |
| | | // ispFieldsEmail : $scope.vm.form.ispFieldsEmail, |
| | | // hostingFieldsEmail : $scope.vm.form.hostingFieldsEmail, |
| | | // sendEmails : (function () { |
| | | // var sendEmails = []; |
| | | // |
| | | // angular.forEach($scope.vm.form.projects, function (project) { |
| | | // sendEmails.push(project.id); |
| | | // }); |
| | | // |
| | | // return sendEmails; |
| | | // })() |
| | | // }; |
| | | // |
| | | // Issue.findMailTargetAll($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; |
| | | // }); |
| | | // } |
| | | |
| | | |
| | | // 사용자 auto complete callback function |
| | | function getUserListCallBack(result) { |
| | | $scope.vm.autoCompletePage.user.totalPage = result.data.page.totalPage; |
| | |
| | | return response; |
| | | }); |
| | | }, |
| | | findMailTargetAll : function (conditions) { |
| | | return $http.post("issue/findMailTargetAll", conditions).then(function (response) { |
| | | $log.debug("이슈 이메일 발송 결과 : ", response); |
| | | return response; |
| | | }); |
| | | } |
| | | } |
| | | } |
| | | ]) |
| | |
| | | $scope.fn.getPartnerList = getPartnerList; // 업체/isp/호스팅 목록 조회 |
| | | $scope.fn.getIssueTypeList = getIssueTypeList; // 이슈 유형 목록 조회 |
| | | $scope.fn.getCustomFieldList = getCustomFieldList; // 사용자 정의 필드 목록 조회 |
| | | $scope.fn.getMailTargetAll = getMailTargetAll; // 사용자 정의 필드 목록 조회 |
| | | |
| | | function getUserList(query, excludeList, page, callBack) { |
| | | var conditions = { |
| | |
| | | |
| | | return deferred.promise; |
| | | } |
| | | |
| | | function getMailTargetAll(query, excludeList, page, callBack) { |
| | | var conditions = { |
| | | id : query, |
| | | excludeIds : (function () { |
| | | var excludeIds = []; |
| | | |
| | | angular.forEach(excludeList, function (exclude) { |
| | | excludeIds.push(exclude.id); |
| | | }); |
| | | |
| | | return excludeIds; |
| | | })(), |
| | | partnersEmailIds : (function () { |
| | | var partnersEmailIds = []; |
| | | |
| | | angular.forEach($scope.vm.form.partners, function (partner) { |
| | | partnersEmailIds.push(partner.email); |
| | | }); |
| | | |
| | | return partnersEmailIds; |
| | | })(), |
| | | }; |
| | | var deferred = $q.defer(); |
| | | |
| | | Issue.findMailTargetAll($resourceProvider.getContent( // 페이징 업데이트가 필요한 컴포넌트 일경우, page 업데이트가 있을 경우 기본 10개씩 가져오고 아닐경우 25개씩 가져온다. |
| | | conditions, $resourceProvider.getPageContent($rootScope.isDefined(page) ? page : 0, $rootScope.isDefined(page) ? 10 : 25))).then(function (result) { |
| | | if (result.data.message.status === "success") { |
| | | |
| | | if ($rootScope.isDefined(callBack)) { |
| | | callBack(result); |
| | | } |
| | | |
| | | deferred.resolve(result.data.data); |
| | | } |
| | | else { |
| | | SweetAlert.swal($filter("translate")("issue.failedToIssueTypeListLookup"), result.data.message.message, "error"); // "이슈 유형 목록 조회 실패" |
| | | } |
| | | }); |
| | | |
| | | return deferred.promise; |
| | | } |
| | | } |
| | | ]); |
| | | } |
| | |
| | | |
| | | // 이미지 갤러리 만들기 |
| | | function makeNgImageGallery() { |
| | | var makeTag = '<ng-image-gallery images="images" thumb-size="80" bubbles="true" bubble-size="50" img-bubbles="true"></ng-image-gallery>'; |
| | | var makeTag = '<ng-image-gallery images="images" thumb-size="60" bubbles="true" bubble-size="50" img-bubbles="true"></ng-image-gallery>'; |
| | | var linkFn = $compile(makeTag); |
| | | var content = linkFn($scope); |
| | | $element.append(content); |
| | |
| | | break; |
| | | } |
| | | } |
| | | |
| | | makeTag += "<span ng-click='fn.remove(" + key.fieldKey + ")'>×</span>"; |
| | | makeTag += "</p>"; |
| | | if (target.fieldValue !== null) { |
| | | makeTag += "<span></span>"; |
| | | makeTag += "</p>"; |
| | | } |
| | | else { |
| | | makeTag += "<span ng-click='fn.remove(" + key.fieldKey + ")'>×</span>"; |
| | | makeTag += "</p>"; |
| | | } |
| | | }); |
| | | |
| | | var linkFn = $compile(makeTag); |
| | |
| | | }; |
| | | |
| | | $rootScope.changeLastProject = function (projectId, reload = true) { |
| | | if (User != null) { |
| | | User.updateLastProject($resourceProvider.getContent( |
| | | {lastProjectId: projectId}, |
| | | $resourceProvider.getPageContent(0, 0))).then(function (result) { |
| | | if ($rootScope.workProject == null || $rootScope.workProject.id !== projectId ) { |
| | | if (User != null) { |
| | | User.updateLastProject($resourceProvider.getContent( |
| | | {lastProjectId: projectId}, |
| | | $resourceProvider.getPageContent(0, 0))).then(function (result) { |
| | | |
| | | if (result.data.message.status === "success") { |
| | | $rootScope.user = result.data.data; |
| | | $rootScope.projects.forEach(function (el) { |
| | | if (el.id == projectId) { |
| | | $rootScope.workProject = el; |
| | | if (result.data.message.status === "success") { |
| | | $rootScope.user = result.data.data; |
| | | $rootScope.projects.forEach(function (el) { |
| | | if (el.id == projectId) { |
| | | $rootScope.workProject = el; |
| | | |
| | | $rootScope.$broadcast("changeLastProject", { id : el.id }); |
| | | } |
| | | }); |
| | | $state.go($state.current, {}, {reload: reload}); |
| | | } |
| | | }); |
| | | $rootScope.$broadcast("changeLastProject", {id: el.id}); |
| | | } |
| | | }); |
| | | $state.go($state.current, {}, {reload: reload}); |
| | | } |
| | | }); |
| | | } |
| | | } |
| | | }; |
| | | |
| | |
| | | <span class="issue-detail-label" style="position: relative; top: 1rem" ng-show="vm.viewer.issueCustomFields == ''">사용자 정의 필드값이 없습니다.</span> |
| | | </div> |
| | | </div> |
| | | <div class="col-md-2"> |
| | | <issue-detail-image-preview images="vm.images"></issue-detail-image-preview> |
| | | </div> |
| | | <div ng-show="vm.images.length < 1" class="detail-not-elements width-100"> |
| | | </div> |
| | | </div> |
| | | <!-- 사용자 정의 필드 --> |
| | | <div class="row"> |
| | |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div class="pdt0" style="position: relative; bottom: 1rem"> |
| | | <issue-detail-image-preview images="vm.images"></issue-detail-image-preview> |
| | | </div> |
| | | <div ng-show="vm.images.length < 1" class="detail-not-elements width-100"> |
| | | <span></span> |
| | | </div> |
| | | |
| | | </div> |
| | | |
| | | |
| | | <!-- <div class=""> |
| | | <label class="issue-detail-label"><span>{{vm.viewer.issueCustomFieldValueVos[0].useValue}}</span> </label> |
| | |
| | | <div class="form-group"> |
| | | <div class=""> |
| | | <span translate="companyField.email">이메일</span>: |
| | | <span class="email_color">{{vm.viewer.issueCompanyVos[0].email}}</span> |
| | | <span class="email_color cursor" ng-click="fn.sendMail(vm.viewer.id, vm.viewer.projectVo.id)">{{vm.viewer.issueCompanyVos[0].email}}</span> |
| | | </div> |
| | | </div> |
| | | </div> |
| | |
| | | <div class="form-group"> |
| | | <div class=""> |
| | | <span translate="ispField.email">이메일</span>: |
| | | <span class="email_color">{{vm.viewer.issueIspVos[0].email}}</span> |
| | | <span class="email_color cursor" ng-click="fn.sendMail(vm.viewer.id, vm.viewer.projectVo.id)">{{vm.viewer.issueIspVos[0].email}}</span> |
| | | </div> |
| | | </div> |
| | | </div> |
| | |
| | | <div class="form-group"> |
| | | <div class=""> |
| | | <span translate="hostingField.email">이메일</span>: |
| | | <span class="email_color">{{vm.viewer.issueHostingVos[0].email}}</span> |
| | | <span class="email_color cursor" ng-click="fn.sendMail(vm.viewer.id, vm.viewer.projectVo.id)">{{vm.viewer.issueHostingVos[0].email}}</span> |
| | | </div> |
| | | </div> |
| | | </div> |
| | |
| | | <!-- 프로젝트 --> |
| | | <issue-search-array-view-element lists="vm.projects" |
| | | type="'project'"></issue-search-array-view-element> |
| | | <p ng-if="$root.isDefined(vm.projectKey)"> |
| | | {{vm.projectKey}} |
| | | </p> |
| | | |
| | | <!-- 이슈 타입 --> |
| | | <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.issueNumber)"> |
| | | {{vm.issueNumber}} |
| | | </p> |
| | | |
| | | <p ng-if="$root.isDefined(vm.search.combinationIssueNumber)"> |
| | | {{vm.search.combinationIssueNumber}} |
| | | <span ng-click="vm.search.combinationIssueNumber = ''">×</span> |
| | | </p> |
| | | |
| | | <!-- 이슈 내용 --> |
| | | <p ng-if="$root.isDefined(vm.search.description)"> |
| | |
| | | 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> |
| | |
| | | autocomplete="off" |
| | | kr-input |
| | | maxlength="20" |
| | | ng-model="vm.issueNumber"> |
| | | <!-- ng-model="vm.search.combinationIssueNumber">--> |
| | | ng-model="vm.search.combinationIssueNumber"> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | |
| | | <div class="row"> |
| | | <div class="col-lg-3"> |
| | | <div class="form-group"> |
| | | <label> <span translate="issue.issueContent">이슈 내용</span></label> |
| | |
| | | data-input-name="severities" |
| | | selected-model="vm.search.severityIds" |
| | | options="::vm.severities"></ng-dropdown-multiselect> |
| | | </div> |
| | | </div> |
| | | |
| | | <div class="col-lg-3"> |
| | | <div class="form-group"> |
| | | <label> <span translate="common.assigneeTeam">담당부서</span></label> |
| | | <js-autocomplete-multi data-input-name="departments" |
| | | selected-model="vm.departments" |
| | | search="vm.departmentName" |
| | | input-disabled="false" |
| | | source="fn.getUserDepartmentList(vm.departmentName, vm.departments)" |
| | | translation-texts="{ count : 'common.userNum', empty : 'common.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> |
| | | </div> |
| | | |
| | | <div class="col-lg-3"> |
| | | <div class="form-group"> |
| | | <label> <span translate="common.assigneeTeam">담당부서</span></label> |
| | | <js-autocomplete-multi data-input-name="departments" |
| | | selected-model="vm.departments" |
| | | search="vm.departmentName" |
| | | input-disabled="false" |
| | | source="fn.getUserDepartmentList(vm.departmentName, vm.departments)" |
| | | translation-texts="{ count : 'common.userNum', empty : 'common.emptyProjectDepartment' }" |
| | | extra-settings="{ displayProp : 'byName' , idProp : 'id', widthable : false, width : '', imageable : true, imagePathProp : 'profile', type : 'department', maxlength : 100 }"> |
| | | </js-autocomplete-multi> |
| | | </div> |
| | | </div> |
| | | |
| | | <div class="col-lg-3" ng-repeat="customField in vm.customFields"> |
| | | <label>{{::customField.name}}</label> |
| | | |
| | |
| | | ng-click="fn.removeManager($index)">×</span> |
| | | </span> |
| | | </div> |
| | | <js-input-autocomplete data-input-name="users" |
| | | owl-auto-focus |
| | | target=".auto-complete-input" |
| | | selected-model="vm.form.users" |
| | | search="vm.userName" |
| | | page="vm.autoCompletePage.user.page" |
| | | total-page="vm.autoCompletePage.user.totalPage" |
| | | source="fn.getUserList(vm.userName, vm.form.users, vm.autoCompletePage.user.page, fn.getUserListCallBack)" |
| | | translation-texts="{ empty : 'common.emptyUser'}" |
| | | input-disabled="vm.form.projects.length == 0" |
| | | extra-settings="{ displayProp : 'byName' , idProp : 'id', imageable : true, imagePathProp : 'profile', |
| | | type : 'user', maxlength : 100, autoResize : true, stopRemoveBodyEvent : true }"></js-input-autocomplete> |
| | | |
| | | <!-- <js-autocomplete-single data-input-name="issue"--> |
| | | <!-- selected-model="vm.form.issues"--> |
| | | <!-- search="vm.issueName"--> |
| | | <!-- source="fn.getIssueList(vm.issueName, vm.issueTypeId, vm.form.issues, vm.autoCompletePage.issue.page, fn.getIssueListCallBack)"--> |
| | | <!-- page="vm.autoCompletePage.issue.page"--> |
| | | <!-- total-page="vm.autoCompletePage.issue.totalPage"--> |
| | | <!-- input-disabled="false"--> |
| | | <!-- translation-texts="{ empty : 'common.emptyIssue' }"--> |
| | | <!-- extra-settings="{ displayProp : 'title' , idProp : 'id', imageable : false, imagePathProp : '',--> |
| | | <!-- type : '', maxlength : 200, autoResize : true, stopRemoveBodyEvent : true }"></js-autocomplete-single>--> |
| | | |
| | | <!-- {{vm.form.companyFieldsEmail}}--> |
| | | <label><span>협력사 메일</span></label> |
| | | <js-autocomplete-multi data-input-name="partnersEmail" |
| | | selected-model="vm.form.partnersEmail" |
| | | search="vm.partnerName" |
| | | source="fn.getMailTargetAll(vm.form.partnersEmail)" |
| | | input-disabled="false" |
| | | page="vm.autoCompletePage.partnersMail.page" |
| | | total-page="vm.autoCompletePage.partnersMail.totalPage" |
| | | modal-form-auto-scroll |
| | | extra-settings="{ displayProp : 'byName' , idProp : 'email', imageable : false, maxlength : 100, autoResize : true }"></js-autocomplete-multi> |
| | | |
| | | <!-- <ng-dropdown-multiselect class="multiSelect cursor"--> |
| | | <!-- data-input-name="companyFieldsEmail"--> |
| | | <!-- selected-model="vm.form.companyFieldsEmail.concat(vm.form.ispFieldsEmail,vm.form.hostingFieldsEmail)"--> |
| | | <!-- extra-settings="{ stringTypeOption : true }"--> |
| | | <!-- options="vm.options.companyFieldsEmail"></ng-dropdown-multiselect>--> |
| | | |
| | | <!-- <span class="issue-detail-label" translate="companyField.info"></span>--> |
| | | <!-- <input ng-if="vm.form.companyFieldsEmail != null"--> |
| | | <!-- type="text"--> |
| | | <!-- class="form-control"--> |
| | | <!-- kr-input--> |
| | | <!-- autocomplete="off"--> |
| | | <!-- ng-model="vm.form.companyFieldsEmail">--> |
| | | |
| | | <!-- <span class="issue-detail-label" translate="ispField.info"></span>--> |
| | | <!-- <input ng-if="vm.form.ispFieldsEmail != null"--> |
| | | <!-- type="text"--> |
| | | <!-- class="form-control"--> |
| | | <!-- kr-input--> |
| | | <!-- autocomplete="off"--> |
| | | <!-- ng-model="vm.form.ispFieldsEmail">--> |
| | | |
| | | <!-- <span class="issue-detail-label" translate="hostingField.info"></span>--> |
| | | <!-- <input ng-if="vm.form.hostingFieldsEmail != null"--> |
| | | <!-- type="text"--> |
| | | <!-- class="form-control"--> |
| | | <!-- kr-input--> |
| | | <!-- autocomplete="off"--> |
| | | <!-- ng-model="vm.form.hostingFieldsEmail">--> |
| | | |
| | | <!-- <a style="display: flex; text-align: center; justify-content: center;">--> |
| | | <!-- <i class="os-icon os-icon-email-forward mr-20 mt-20 cursor" ng-click="fn.formSubmit(data.id)">1</i>--> |
| | | <!-- <i class="os-icon os-icon-email-forward mr-20 mt-20 cursor" ng-click="fn.formSubmit(data.id)">2</i>--> |
| | | <!-- <i class="os-icon os-icon-email-forward mr-20 mt-20 cursor" ng-click="fn.formSubmit(data.id)">3</i>--> |
| | | <!-- </a>--> |
| | | <!-- <div class="modal-content">--> |
| | | <!-- <a style="display: flex; text-align: center; justify-content: center;">--> |
| | | <!-- <img onclick="emailTemplate()" id="template1" class="cursor" src="assets/images/btn_facebook.png">--> |
| | | <!-- <img onclick="emailTemplate()" id="template2" class="cursor" src="assets/images/btn_kakao.png">--> |
| | | <!-- <img onclick="emailTemplate()" id="template3" class="cursor" src="assets/images/btn_google.png">--> |
| | | <!-- </a>--> |
| | | <!-- </div>--> |
| | | <!-- <form action="${pageContext.request.contextPath}/updatetNoticePro.do" method="post" enctype="multipart/form-data" name="noticeForm">--> |
| | | <!-- <input type='file' id="filename" name="filename"/>--> |
| | | <!-- <img id="preImage" src="${pageContext.request.contextPath}/saveFile/${noticeVO.filename}" alt="image_title" onerror='this.src="${pageContext.request.contextPath}/images/no_img.jpg"'/>--> |
| | | <!-- </form>--> |
| | | |
| | | </div> |
| | | </form> |
| | | |
| | | </div> |
| | | <!-- <h6>{{vm.form.companyFieldsEmail}}</h6>--> |
| | | <!-- <span>{{vm.form.id}}===============</span>--> |
| | | <!-- <h6>{{vm.form.ispFieldsEmail}}===============</h6>--> |
| | | <!-- <span>===============</span>--> |
| | | <!-- <h6>{{vm.form.hostingFieldsEmail}}</h6>--> |
| | | <!-- <div style="display: flex; text-align: center">--> |
| | | <!-- 템플릿1--> |
| | | <!-- </div>--> |
| | | <!-- <div style="border: 1px #111111; margin-left: 20px; box-sizing: border-box;">--> |
| | | <!-- 템플릿2--> |
| | | <!-- <div style="border: 1px #111111; margin-left: 20px; box-sizing: border-box;">--> |
| | | <!-- </div>--> |
| | | <!-- <div style="border: 1px #111111; margin-left: 20px; box-sizing: border-box;">--> |
| | | <!-- 템플릿3--> |
| | | <!-- </div>--> |
| | | <!-- </div>--> |
| | | |
| | | <div class="modal-footer buttons-on-right"> |
| | | <button type="button" class="btn btn-md btn-grey" ng-click="fn.cancel()"><span |
| | |
| | | </button> |
| | | </div> |
| | | </div> |
| | | |
| | | <script> |
| | | |
| | | function emailTemplate() { |
| | | $('#template1').click(function() { |
| | | $('#template1').hide(); |
| | | }); |
| | | |
| | | $('#template2').click(function() { |
| | | $('#template2').hide(); |
| | | }); |
| | | |
| | | $('#template3').click(function() { |
| | | $('#template3').hide(); |
| | | }); |
| | | } |
| | | |
| | | function changeIMG() { |
| | | $('#template1').attr("src", "assets/images/previewTemplate.png") |
| | | } |
| | | </script> |