| | |
| | | .country { |
| | | margin-left: 3.25rem; |
| | | } |
| | | |
| | | .h3-div { |
| | | font-size: 1.75rem; |
| | | } |
| | | |
| | | .info_font { |
| | | color: #000; |
| | | font-size: 1rem; |
| | | line-height: 1.5; |
| | | font-weight: 600; |
| | | } |
| | | |
| | | .email_color { |
| | | color:#0066ff; |
| | | } |
| | | |
| | | /* 간트차트 end */ |
| | |
| | | "processingRate": "처리율", |
| | | "dailyAverage": "일 평균", |
| | | "inProgressStatusOfProject": "진행중인 프로젝트 현황", |
| | | "progressProject": "진행 프로젝트", |
| | | "progressProject": "진행 프로ㅇ젝트", |
| | | "issueAll": "전체 이슈", |
| | | "projectProgress": "프로젝트 진행률", |
| | | "admin": "관리자", |
| | |
| | | "issueNumber": "이슈 번호", |
| | | "issueContent": "이슈 내용", |
| | | "issueTitle": "이슈 제목", |
| | | "issueInfo": "이슈 정보", |
| | | "relationIssue": "연관 이슈", |
| | | "addRelationIssue": "연관 이슈 추가", |
| | | "relationIssueTitle": "연관 이슈 제목", |
| | |
| | | "relationIssueType5" : "다음에 진행할 이슈", |
| | | "relationIssueType6" : "다음 이슈를 우선 진행", |
| | | "updateIssueUser" : "이슈 담당자 변경", |
| | | "updateIssueDepartment" : "이슈 담당부서 변경", |
| | | "normalList" : "이슈 목록", |
| | | "timeLine" : "타임 라인", |
| | | "useProjects" : "사용 프로젝트", |
| | |
| | | "emptyUser": "선택할 수 있는 사용자가 없습니다.", |
| | | "emptyProject": "선택할 수 있는 프로젝트가 없습니다.", |
| | | "emptyDepartment": "선택할 수 있는 부서가 없습니다.", |
| | | "noDepartment": "담당부서가 없습니다.", |
| | | "emptyCompany": "선택할 수 있는 업체가 없습니다.", |
| | | "emptyIssue": "선택할 수 있는 이슈가 없습니다.", |
| | | "emptyIsp": "선택할 수 있는 ISP가 없습니다.", |
| | |
| | | "successToApiTokenAdd" : "API 토큰 생성 성공" |
| | | }, |
| | | "companyField" : { |
| | | "info": "업체 정보", |
| | | "add" : "업체 생성", |
| | | "name" : "업체 이름", |
| | | "info": "업체정보", |
| | | "add" : "업체생성", |
| | | "name" : "업체이름", |
| | | "manager": "담당자", |
| | | "companyName" : "업체명", |
| | | "company" : "업체 분류", |
| | | "profitYN" : "영리/비영리", |
| | | "industry" : "산업 분류", |
| | |
| | | "invalidTelFormat": "전화번호 형식이 맞지 않습니다. xxx-xxx-xxxx 형식으로 입력하세요." |
| | | }, |
| | | "ispField" : { |
| | | "info": "ISP 정보", |
| | | "add" : "ISP 생성", |
| | | "name" : "ISP 이름", |
| | | "info": "ISP정보", |
| | | "add" : "ISP생성", |
| | | "name" : "ISP이름", |
| | | "ispName" : "ISP명", |
| | | "manager" : "담당자", |
| | | "tel" : "전화번호", |
| | | "code" : "코드", |
| | |
| | | "invalidCodeFormat": "코드명에는 특수 문자를 입력 할 수 없습니다." |
| | | }, |
| | | "hostingField" : { |
| | | "info": "호스팅 정보", |
| | | "add" : "호스팅 생성", |
| | | "name" : "호스팅 이름", |
| | | "info": "호스팅정보", |
| | | "add" : "호스팅생성", |
| | | "name" : "호스팅이름", |
| | | "manager" : "호스팅이름", |
| | | "hostingName" : "호스팅명", |
| | | "manager" : "담당자", |
| | | "tel" : "전화번호", |
| | | "code" : "코드", |
| | |
| | | require([ |
| | | 'issueListTimelineController', 'issueManagerController', 'issueListController', 'issueAddController', 'issueModifyController', 'issueDetailController', 'issueImportExcelController', |
| | | 'chartLoader', 'jsTable', 'tableColumnGenerator', 'modalFormAutoScroll', 'summerNote', 'summerNote-ko-KR', 'fullScroll', 'workflowService', 'priorityService', 'issueSearchService', 'issueTableConfigService', 'inputRegex', |
| | | 'severityService', 'issueTypeService', 'issueTypeCustomFieldService', 'issueService', 'issueStatusService', 'issueUserService', 'issueModifyUserController', 'customFieldService', 'issueSearchFieldKeyViewElement', |
| | | 'severityService', 'issueTypeService', 'issueTypeCustomFieldService', 'issueService', 'issueStatusService', 'issueUserService','issueDepartmentService','issueModifyUserController', 'issueModifyDepartmentController', 'customFieldService', 'issueSearchFieldKeyViewElement', |
| | | 'issueSearchCustomFieldViewElement', 'tableUserImage', 'fullScroll', 'issueCommentService', 'detectIssueEditor', 'formSubmit', 'issueModifyStatusController', 'jsShortCut', |
| | | 'issueAddTableConfigController', 'domAppend', 'issueDetailImagePreview', 'issueSendMailController', 'htmlDiff', 'issueVersionViewController', 'issueVersionService', |
| | | 'jsHtmlDiff', 'issueReservationController', 'issueReservationService', 'issueVersionService', 'issueStatusAutoFocus', 'issueRelationService' |
| | |
| | | projectName : "", // 프로젝트 명 검색 |
| | | userName : "", // 사용자 검색 |
| | | departmentName : "", // 부서명 검색 |
| | | companyId : -1, // 부서 ID |
| | | companyName : "", // 업체명 검색 |
| | | companyManager : "", // 업체 담당자 |
| | | companyTel : "", // 업체 전화번호 |
| | | companyEmail : "", // 업체 이메일 |
| | | companyMemo : "", // 업체 비고 |
| | | ispId : -1, // ISP ID |
| | | ispName : "", // ISP 명 |
| | | ispCode : "", // ISP 코드 |
| | | ispManager : "", // ISP 담당자 |
| | | ispTel : "", // ISP 전화번호 |
| | | ispEmail : "", // ISP 이메일 |
| | | ispMemo : "", // ISP 비고 |
| | | hostingId : -1, // 호스팅 ID |
| | | hostingName : "", // 호스팅명 검색 |
| | | hostingManager : "", // 호스팅 담당자 |
| | | hostingTel : "", // 호스팅 전화번호 |
| | | hostingEmail : "", // 호스팅 이메일 |
| | | hostingMemo : "", // 호스팅 비고 |
| | | companyId : -1, |
| | | ispId : -1, |
| | | hostingId : -1, |
| | | hostingMemo :"", // 호스팅 비고 |
| | | |
| | | autoCompletePage : { |
| | | user : { |
| | | page : 0, |
| | |
| | | else { |
| | | $scope.fn.cancel(); |
| | | |
| | | if ($state.current.name !== "issues.list") { |
| | | if ($state.current.name !== "issues.list" || $state.current.name === "issues.list") { |
| | | $state.go("issues.list"); |
| | | } |
| | | } |
| | |
| | | $scope.fn.getChangeIssueStatusList = getChangeIssueStatusList; // 이슈의 현재 상태에서 변경 가능한 이슈 샅태 목록 가져오기 |
| | | $scope.fn.modifyIssueStatus = modifyIssueStatus; // 이슈 상태 변경 |
| | | $scope.fn.modifyIssueUser = modifyIssueUser; // 이슈 담당자 변경 |
| | | $scope.fn.modifyIssueDepartment = modifyIssueDepartment; // 이슈 담당부서 변경 |
| | | $scope.fn.initReload = initReload; // 초기화 해야할 할목을 지정하여 다른 이슈를 클릭할 때 초기화해준다. |
| | | $scope.fn.sendMail = sendMail; // 특정 사용자에게 이슈 정보를 메일로 발송 |
| | | $scope.fn.versionView = versionView; // 버전 정보를 표시한다. |
| | |
| | | }); |
| | | } |
| | | |
| | | // 담당부서 변경 |
| | | function modifyIssueDepartment() { |
| | | $uibModal.open({ |
| | | templateUrl : 'views/issue/issueModifyDepartment.html', |
| | | size : "md", |
| | | controller : 'issueModifyDepartmentController', |
| | | backdrop : 'static', |
| | | resolve : { |
| | | parameter : function () { |
| | | return { |
| | | departmentVos : [$scope.vm.form.issues[0].departmentVos], |
| | | id : [$scope.vm.form.issues[0].id], |
| | | projectId : [$scope.vm.form.issues[0].projectVo.id], |
| | | project : [$scope.vm.form.issues[0].projectVo] |
| | | }; |
| | | } |
| | | } |
| | | }); |
| | | } |
| | | |
| | | // 변경 가능한 이슈 상태 목록을 조회하고 수정 모드로 화면을 변경한다. |
| | | function getChangeIssueStatusList(checkPermission) { |
| | | // 수정 권한이 없으면 이슈 상태 변경 불가 |
New file |
| | |
| | | /** |
| | | * Created by Maprex on 2021-06-08 |
| | | */ |
| | | 'use strict'; |
| | | |
| | | define([ |
| | | 'app', |
| | | 'angular' |
| | | ], |
| | | function (app, angular) { |
| | | app.controller('issueModifyDepartmentController', ['$scope', '$rootScope', '$log', '$resourceProvider', '$uibModalInstance','$injector', '$controller', 'SweetAlert', '$timeout', '$stateParams', '$q', 'parameter', |
| | | 'IssueDepartment', '$filter', |
| | | function ($scope, $rootScope, $log, $resourceProvider, $uibModalInstance, $injector, $controller, SweetAlert, $timeout, $stateParams, $q, parameter, IssueDepartment, $filter) { |
| | | |
| | | // 함수 모음 |
| | | $scope.fn = { |
| | | cancel: cancel, // 팝업 창 닫기 |
| | | formSubmit: formSubmit, // 폼 전송 |
| | | formCheck: formCheck, // 폼 체크 |
| | | removeManager : removeManager, // 담당자 삭제 |
| | | load : load, // 현재 담당자 가져오기 |
| | | startExecute : startExecute // 시작시 실행 |
| | | }; |
| | | |
| | | // 변수 모음 |
| | | $scope.vm = { |
| | | form : { |
| | | departments : [], // 담당부서 |
| | | projects : [] |
| | | }, |
| | | departmentName : "", // 부서 검색 |
| | | autoCompletePage : { |
| | | department : { |
| | | page : 0, |
| | | totalPage : 0 |
| | | } |
| | | }, |
| | | }; |
| | | |
| | | angular.extend(this, $controller('autoCompleteController', {$scope : $scope, $injector : $injector})); |
| | | |
| | | // 담당부서 삭제 |
| | | function removeManager(index) { |
| | | $scope.vm.form.departments.splice(index, 1); |
| | | } |
| | | |
| | | // 담당부서 autocomplete page 업데이트트 |
| | | function getDepartmentListCallBack(result) { |
| | | $scope.vm.autoCompletePage.department.totalPage = result.data.page.totalPage; |
| | | } |
| | | |
| | | // 폼 전송 |
| | | function formCheck(formInvalid) { |
| | | if (formInvalid) { |
| | | return true; |
| | | } |
| | | |
| | | return false; |
| | | } |
| | | |
| | | // 폼 전송 |
| | | function formSubmit() { |
| | | $rootScope.spinner = true; |
| | | |
| | | var content = { |
| | | id : parameter.id[0], |
| | | projectId : parameter.projectId[0], |
| | | departmentIds : (function () { |
| | | var departmentIds = []; |
| | | |
| | | angular.forEach($scope.vm.form.departments, function (department) { |
| | | departmentIds.push(department.id); |
| | | }); |
| | | |
| | | return departmentIds; |
| | | })(), |
| | | }; |
| | | |
| | | IssueDepartment.modify($resourceProvider.getContent(content, |
| | | $resourceProvider.getPageContent(0, 0))).then(function (result) { |
| | | |
| | | if (result.data.message.status === "success") { |
| | | $scope.fn.cancel(); |
| | | |
| | | $rootScope.$broadcast("getIssueList", {}); |
| | | |
| | | if ($rootScope.isDefined($rootScope.currentDetailIssueId)) { |
| | | $rootScope.$broadcast("getIssueDetail", {id: $rootScope.currentDetailIssueId}); |
| | | } |
| | | } else { |
| | | SweetAlert.error($filter("translate")("issue.failedToChangeMultipleIssueStatus"), result.data.message.message); // 다중 이슈 상태 변경 실패 |
| | | } |
| | | |
| | | $rootScope.spinner = false; |
| | | }); |
| | | } |
| | | |
| | | |
| | | // 팝업 창 닫기 |
| | | function cancel() { |
| | | $rootScope.$broadcast("closeLayer"); // 팝업이 열리고 나서 js-multi, js-single 등에서 body 이벤트가 날아가는 현상 수정 |
| | | $uibModalInstance.dismiss('cancel'); |
| | | $(document).unbind("keydown"); // 단축키 이벤트 제거 |
| | | } |
| | | |
| | | // 최초 실행 |
| | | function startExecute() { |
| | | var promises = { |
| | | users : $scope.fn.load() |
| | | }; |
| | | |
| | | $q.all(promises).then(function (results) { |
| | | $log.debug("promises 결과 ", results); |
| | | }); |
| | | } |
| | | |
| | | function load() { |
| | | $scope.vm.form.projects = []; |
| | | $scope.vm.form.projects.push(parameter.project[0]); |
| | | |
| | | var departmentVos = parameter.departmentVos[0]; |
| | | |
| | | if (departmentVos.length > 0 && departmentVos[0] != undefined) { |
| | | $scope.vm.form.departments = departmentVos; |
| | | } else { |
| | | $scope.vm.form.departments = []; |
| | | } |
| | | } |
| | | |
| | | $scope.fn.startExecute(); |
| | | |
| | | }]); |
| | | }); |
| | |
| | | description : "", |
| | | managers : [], // 관리자 |
| | | users : [], // 일반 사용자 |
| | | departments : [], // 부서 |
| | | startEndDateRange : "" |
| | | }, |
| | | managerName : "", // 관리자 이름 검색 |
| | | userName : "", // 일반 사용자 이름 검색 |
| | | departmentName : "", // 부서 이름 검색 |
| | | projectName : "", // 상위 프로젝트 이름 검색 |
| | | autoCompletePage : { |
| | | manager : { |
New file |
| | |
| | | /** |
| | | * Created by maprex on 2021-06-08 |
| | | */ |
| | | 'use strict'; |
| | | |
| | | define([ |
| | | 'app' |
| | | ], function (app) { |
| | | app.factory("IssueDepartment", ['$http', '$log', function ($http, $log) { |
| | | return { |
| | | modify : function (conditions) { |
| | | return $http.post("issueDepartment/modify", conditions).then(function (response) { |
| | | $log.debug("이슈 담당부서 수정 결과 : ", response); |
| | | return response; |
| | | }); |
| | | } |
| | | } |
| | | } |
| | | ]); |
| | | }); |
| | |
| | | 'issueVersionViewController' : 'app/issue/issueVersionView.controller', // 이슈 버전 확인 컨트롤러 |
| | | 'issueReservationController' : 'app/issue/issueReservation.controller', // 이슈 발생 예약 컨트롤러 |
| | | 'issueModifyUserController' : 'app/issue/issueModifyUser.controller', // 이슈 담당자 컨트롤러 |
| | | 'issueModifyDepartmentController' : 'app/issue/issueModifyDepartment.controller', // 이슈 담당부서 컨트롤러 |
| | | 'issueService' : 'components/issue/issue.service', // 이슈에 관련된 통신을 담당한다. |
| | | 'issueVersionService' : 'components/issueVersion/issueVersion.service', // 이슈 버전에 관련된 통신을 담당한다. |
| | | 'issueReservationService' : 'components/issueReservation/issueReservation.service', // 이슈 발생 예약에 관련된 통신을 담당한다. |
| | | 'issueRelationService' : 'components/issueRelation/issueRelation.service', // 관련 이슈에 관련된 통신을 담당한다. |
| | | 'issueUserService' : 'components/issueUser/issueUser.service', // 이슈 담당자 관련 통신을 담당한다. |
| | | 'issueDepartmentService' : 'components/issueDepartment/issueDepartment.service', // 이슈 담당자 관련 통신을 담당한다. |
| | | |
| | | /* 할일 관련 */ |
| | | |
| | |
| | | 'summerNote-ja-JP', // 이슈 만들기에서 사용 |
| | | 'summerNote-vi-VN', // 이슈 만들기에서 사용 |
| | | 'issueUserService', |
| | | 'issueDepartmentService', |
| | | 'jsShortCut', |
| | | 'languageService', |
| | | 'principalService', |
| | |
| | | <!-- 상세 화면 --> |
| | | <div class="support-ticket-content-w" ng-controller="issueDetailController"> |
| | | <div class="support-ticket-content"> |
| | | <div class="support-ticket-content-header issue-detail-word-break"> |
| | | <h3 class="ticket-header"> |
| | | <div class="support-ticket-content-header issue-detail-word-break" style="height: 8vh"> |
| | | <span class="ticket-header"> |
| | | <div class="tasks-header-w"> |
| | | <span class="tags"> |
| | | <span class="tag">{{vm.viewer.projectVo.projectKey}}-{{vm.viewer.issueNumber}} / {{vm.viewer.projectVo.name}}</span> |
| | | </span> |
| | | </div> |
| | | {{vm.viewer.title}} |
| | | </h3> |
| | | <span class="h3-div">{{vm.viewer.title}}</span> |
| | | </span> |
| | | <div class="col-sm-2"> |
| | | <div class="form-group"> |
| | | <label class="issue-detail-label"><span translate="issue.issueType">이슈 타입</span> </label> |
| | | <div class="form-group ml-4"> |
| | | <label class="issue-detail-label"><span translate="issue.issueType">이슈 유형</span> </label> |
| | | <span class="status-pill smaller" |
| | | ng-style="{'background-color': vm.viewer.issueTypeVo.color }"></span><span>{{vm.viewer.issueTypeVo.name}}</span> |
| | | </div> |
| | |
| | | </span> |
| | | </div> |
| | | |
| | | |
| | | <a class="show-ticket-info cursor"> |
| | | <i class="os-icon os-icon-email-forward mr-20" ng-click="fn.sendMail(vm.viewer.id, vm.viewer.projectVo.id)" 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> |
| | |
| | | |
| | | <div class="ticket-thread"> |
| | | <div class="todo-content"> |
| | | <h6 class="todo-content-subheader mt-20" translate="common.detailInformation">상세 정보</h6> |
| | | <h6 class="todo-content-subheader" translate="issue.issueInfo">이슈 정보</h6> |
| | | <div class="row mt-20"> |
| | | <div class="col-md-4"> |
| | | <div class="form-group"> |
| | |
| | | <label class="issue-detail-label"><span translate="common.assigneeTeam">담당부서</span> </label> |
| | | <div class=""> |
| | | <div class="select3-selection__choicediv"> |
| | | <span class="select3-selection__choice" ng-repeat="user in vm.viewer.userVos"> |
| | | <span class="avatar-w"><img ng-src="{{::user.profile}}"></span> |
| | | <span>{{::user.byName}}</span> |
| | | <span class="select3-selection__choice" ng-repeat="department in vm.viewer.departmentVos"> |
| | | <span>{{::department.byName}}</span> |
| | | </span> |
| | | |
| | | <span ng-if="vm.viewer.userVos.length < 1" translate="common.noAssignee">담당자가 없습니다.</span> |
| | | <span ng-if="vm.viewer.departmentVos.length < 1" translate="common.noDepartment">담당부서가 없습니다.</span> |
| | | <i class="fa fa-edit fa-2x issue-status-edit cursor" |
| | | ng-click="fn.modifyIssueUser()" data-toggle="tooltip" data-placement="right" title="담당자 변경 하기"></i> |
| | | ng-click="fn.modifyIssueDepartment()" data-toggle="tooltip" data-placement="right" title="담당자 변경 하기"></i> |
| | | </div> |
| | | </div> |
| | | |
| | |
| | | <div class="row"> |
| | | <div class="col-md-4"> |
| | | <div class="form-group"> |
| | | <label class="issue-detail-label"><span translate="common.detectingInfo">탐지정보</span> </label> |
| | | <h6 class="info_font" translate="common.detectingInfo">탐지정보</h6> |
| | | <div class=""> |
| | | <label class="issue-detail-label"><span translate="common.diffuserURL">유포자URL</span> </label> |
| | | <label class="issue-detail-label offset-2"><span translate="common.country">국가</span></label> |
| | |
| | | <!-- <span ng-if="vm.viewer.userVos.length < 1" translate="common.noAssignee">담당자가 없습니다.</span>--> |
| | | </div> |
| | | </div> |
| | | |
| | | </div> |
| | | </div> |
| | | <hr> |
| | | <!-- <span class="tag">{{vm.viewer.projectVo.projectKey}}-{{vm.viewer.issueNumber}} / {{vm.viewer.projectVo.name}}</span>--> |
| | | <div class="row"> |
| | | <div class="col-sm-2"> |
| | | <div class="form-group"> |
| | | <h6 class="info_font" translate="companyField.info">업체정보</h6> |
| | | <button style="display: inline">1111</button> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | |
| | | <div class="row"> |
| | | <div class="col-md-4"> |
| | | <div class="col-sm-2"> |
| | | <div class="form-group"> |
| | | <label class="issue-detail-label"><span translate="common.registrationDate">등록일</span> |
| | | </label> |
| | | <span translate="companyField.companyName">업체명</span>: |
| | | <span>{{vm.viewer.issueCompanyVos[0].name}}</span> |
| | | </div> |
| | | </div> |
| | | |
| | | <div class="col-sm-2"> |
| | | <div class="form-group"> |
| | | <div class=""> |
| | | {{vm.viewer.registerDate}} |
| | | <span translate="companyField.manager">담당자</span>: |
| | | <span>{{vm.viewer.issueCompanyVos[0].manager}}</span> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | |
| | | <div class="col-md-4"> |
| | | <div class="col-sm-2"> |
| | | <div class="form-group"> |
| | | <label class="issue-detail-label"><span translate="common.register">등록자</span></label> |
| | | <div class=""> |
| | | <div class="select3-selection__choicediv"> |
| | | <span class="select3-selection__choice"> |
| | | <span class="avatar-w"><img ng-src="{{vm.viewer.registerVo.profile}}"></span> |
| | | <span>{{vm.viewer.registerVo.byName}}</span> |
| | | </span> |
| | | </div> |
| | | <span translate="companyField.tel">전화번호</span>: |
| | | <span>{{vm.viewer.issueCompanyVos[0].tel}}</span> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | |
| | | <div class="col-sm-2"> |
| | | <div class="form-group"> |
| | | <div class=""> |
| | | <span translate="companyField.email">이메일</span>: |
| | | <span class="email_color">{{vm.viewer.issueCompanyVos[0].email}}</span> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | |
| | | <div class="col-sm-2"> |
| | | <div class="form-group"> |
| | | <div class=""> |
| | | <span translate="companyField.memo">비고</span>: |
| | | <span>{{vm.viewer.issueCompanyVos[0].memo}}</span> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | |
| | | <div class="row"> |
| | | <div class="col-sm-2"> |
| | | <div class="form-group"> |
| | | <h6 class="info_font" translate="ispField.info">ISP정보</h6> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | |
| | | <div class="row"> |
| | | <div class="col-sm-2"> |
| | | <div class="form-group"> |
| | | <span translate="ispField.ispName">ISP명</span>: |
| | | <span>{{vm.viewer.issueIspVos[0].name}}</span> |
| | | </div> |
| | | </div> |
| | | |
| | | <div class="col-sm-2"> |
| | | <div class="form-group"> |
| | | <span translate="ispField.code">코드</span>: |
| | | <span>{{vm.viewer.issueIspVos[0].code}}</span> |
| | | </div> |
| | | </div> |
| | | |
| | | <div class="col-sm-2"> |
| | | <div class="form-group"> |
| | | <div class=""> |
| | | <span translate="ispField.manager">담당자</span>: |
| | | <span>{{vm.viewer.issueIspVos[0].manager}}</span> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | |
| | | <div class="col-sm-2"> |
| | | <div class="form-group"> |
| | | <div class=""> |
| | | <span translate="ispField.tel">전화번호</span>: |
| | | <span>{{vm.viewer.issueIspVos[0].tel}}</span> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | |
| | | <div class="col-sm-2"> |
| | | <div class="form-group"> |
| | | <div class=""> |
| | | <span translate="ispField.email">이메일</span>: |
| | | <span class="email_color">{{vm.viewer.issueIspVos[0].email}}</span> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | |
| | | <div class="col-sm-2"> |
| | | <div class="form-group"> |
| | | <div class=""> |
| | | <span translate="ispField.memo">비고</span>: |
| | | <span>{{vm.viewer.issueIspVos[0].memo}}</span> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | |
| | | <div class="row"> |
| | | <div class="col-sm-2"> |
| | | <div class="form-group"> |
| | | <h6 class="info_font" translate="hostingField.info">호스팅정보</h6> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | |
| | | <div class="row"> |
| | | <div class="col-sm-2"> |
| | | <div class="form-group"> |
| | | <span translate="hostingField.hostingName">호스팅명</span>: |
| | | <span>{{vm.viewer.issueHostingVos[0].name}}</span> |
| | | </div> |
| | | </div> |
| | | |
| | | <div class="col-sm-2"> |
| | | <div class="form-group"> |
| | | <span translate="hostingField.code">코드</span>: |
| | | <span>{{vm.viewer.issueHostingVos[0].code}}</span> |
| | | </div> |
| | | </div> |
| | | |
| | | <div class="col-sm-2"> |
| | | <div class="form-group"> |
| | | <div class=""> |
| | | <span translate="hostingField.manager">담당자</span>: |
| | | <span>{{vm.viewer.issueHostingVos[0].manager}}</span> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | |
| | | <div class="col-sm-2"> |
| | | <div class="form-group"> |
| | | <div class=""> |
| | | <span translate="hostingField.tel">전화번호</span>: |
| | | <span>{{vm.viewer.issueHostingVos[0].tel}}</span> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | |
| | | <div class="col-sm-2"> |
| | | <div class="form-group"> |
| | | <div class=""> |
| | | <span translate="hostingField.email">이메일</span>: |
| | | <span class="email_color">{{vm.viewer.issueHostingVos[0].email}}</span> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | |
| | | <div class="col-sm-2"> |
| | | <div class="form-group"> |
| | | <div class=""> |
| | | <span translate="hostingField.memo">비고</span>: |
| | | <span>{{vm.viewer.issueHostingVos[0].memo}}</span> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | |
| | | |
| | | <div class="row"> |
New file |
| | |
| | | <div class="formModal"> |
| | | <div class="modal-header faded smaller"> |
| | | <div class="modal-title"> |
| | | <strong translate="issue.updateIssueDepartment">이슈 담당부서 변경</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="issueDepartmentModifyForm"> |
| | | <div class="form-group"> |
| | | <div class="form-group mgb5"> |
| | | <label class="issue-label"> <span translate="common.assigneeTeam">담당부서</span> </label> |
| | | <js-autocomplete-multi data-input-name="departments" |
| | | selected-model="vm.form.departments" |
| | | search="vm.departmentName" |
| | | source="fn.getUserDepartmentList(vm.departmentName, vm.form.departments)" |
| | | input-disabled="false" |
| | | translation-texts="{ count : 'common.userNum', empty : 'common.emptyUser' }" |
| | | extra-settings="{ displayProp : 'byName' , idProp : 'id', imageable : false, maxlength : 100, autoResize : true }"></js-autocomplete-multi> |
| | | |
| | | |
| | | <div class="select3-selection__choicediv mt-10"> |
| | | <span class="select3-selection__choice" ng-repeat="department in vm.form.departments"> |
| | | <span>{{department.byName}}</span> <!--사용자가 속해 있는 부서 이름 출력--> |
| | | <span class="select3-selection__choice__remove" ng-click="fn.removeDepartments($index)">×</span> |
| | | </span> |
| | | </div> |
| | | </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 |
| | | translate="common.cancel">취소</span></button> |
| | | <button type="button" class="btn btn-md btn-primary bold" |
| | | js-short-cut |
| | | js-short-cut-action="(fn.formCheck(issueMultiStatusModifyForm.$invalid) || $root.spinner) ? null : fn.formSubmit()" |
| | | ng-disabled="fn.formCheck(issueMultiStatusModifyForm.$invalid)" |
| | | ng-click="fn.formSubmit()"><span translate="common.save">저장</span> |
| | | </button> |
| | | </div> |
| | | </div> |
| | |
| | | <form role="form" name="issueUserModifyForm"> |
| | | <div class="form-group"> |
| | | <div class="form-group mgb5"> |
| | | <label class="issue-label"> <span translate="common.assigneeTeam">담당부서</span> </label> |
| | | <js-input-autocomplete data-input-name="departments" |
| | | 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" |
| | | <label class="issue-label"> <span translate="common.assignee">담당자</span> </label> |
| | | <js-input-autocomplete data-input-name="users" |
| | | 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)" |
| | | input-disabled="vm.form.users.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> |
| | | type : 'user', maxlength : 100, autoResize : true, stopRemoveBodyEvent : true }"></js-input-autocomplete> |
| | | |
| | | <div class="select3-selection__choicediv"> |
| | | <span class="select3-selection__choice" ng-repeat="department in vm.form.departments"> |
| | | <span class="select3-selection__choice" ng-repeat="user in vm.form.users"> |
| | | <span class="avatar-w"></span> |
| | | <!-- <img ng-src="{{department.profile}}">--> |
| | | <span>{{department.name}}({{department.id}})</span> |
| | | <img ng-src="{{department.profile}}"> |
| | | <span>{{user.name}}({{user.id}})</span> |
| | | <span class="select3-selection__choice__remove" |
| | | ng-click="fn.removeManager($index)">×</span> |
| | | </span> |
| | |
| | | |
| | | <div class="form-group"> |
| | | <label><span translate="project.projectDepartment">프로젝트 부서</span> </label> |
| | | <js-autocomplete-multi data-input-name="users" |
| | | <js-autocomplete-multi data-input-name="departments" |
| | | selected-model="vm.form.users" |
| | | search="vm.userName" |
| | | source="fn.getUserList(vm.userName, vm.form.users.concat(vm.form.managers))" |