| | |
| | | color: #282c34; |
| | | font-size: 15px; |
| | | } |
| | | |
| | | .country { |
| | | margin-left: 3.25rem; |
| | | } |
| | | /* 간트차트 end */ |
| | |
| | | "departmentUser": "부서 팀원", |
| | | "detectingInfo": "탐지정보", |
| | | "detectingData": "탐지일시", |
| | | "import": "가져오기" |
| | | "import": "가져오기", |
| | | "diffuserURL": "유포자URL", |
| | | "country": "국가" |
| | | }, |
| | | "tasks": { |
| | | "agileBoardTitle": "칸반 보드" |
| | |
| | | formCheck : formCheck, // 폼 체크 |
| | | getUserListCallBack : getUserListCallBack, // 담당자 autocomplete 페이징 |
| | | getProjectListCallBack : getProjectListCallBack, // 프로젝트 autocomplete 페이징 |
| | | getCompanyFieldListCallBack : getCompanyFieldListCallBack, // 업체정보 autocomplete 페이징 |
| | | getIssueCompanyFieldListCallBack : getIssueCompanyFieldListCallBack, // 업체정보 autocomplete 페이징 |
| | | getIssueDepartmentListCallBack : getIssueDepartmentListCallBack, // 담당자 -> 담당부서 autocomplete 페이징 |
| | | getIspFieldListCallBack : getIspFieldListCallBack, // ISP정보 autocomplete 페이징 |
| | | getHostingFieldListCallBack : getHostingFieldListCallBack, // 호스팅정보 autocomplete 페이징 |
| | | getIssueIspFieldListCallBack : getIssueIspFieldListCallBack, // ISP정보 autocomplete 페이징 |
| | | getIssueHostingFieldListCallBack : getIssueHostingFieldListCallBack, // 호스팅정보 autocomplete 페이징 |
| | | getOptionColor : getOptionColor, // 우선순위, 중요도 색상으로 Select 태그 적용 |
| | | onFileSelect : onFileSelect, // 파일 첨부 |
| | | infiniteAddForm : infiniteAddForm, // 계속 생성 |
| | |
| | | title : "", // 제목 |
| | | description : "", // 내용 |
| | | projects : [], // 프로젝트 |
| | | companyFields : [], // 업체정보 |
| | | ispFields : [], // ISP 정보 |
| | | hostingFields : [], // 호스팅정보 |
| | | issueCompanyFields : [], // 업체정보 |
| | | issueIspFields : [], // ISP 정보 |
| | | issueHostingFields : [], // 호스팅정보 |
| | | issueTypeId : "", // 이슈 유형 아이디 |
| | | priorityId : "", // 우선순위 아이디 |
| | | severityId : "", // 중요도 아이디 |
| | |
| | | userName : "", // 사용자 검색 |
| | | departmentName : "", // 부서명 검색 |
| | | companyName : "", // 업체명 검색 |
| | | companyCode : "", // 업체 코드 |
| | | companyManager : "", // 업체 담당자 |
| | | companyTel : "", // 업체 전화번호 |
| | | companyEmail : "", // 업체 이메일 |
| | |
| | | } |
| | | |
| | | // 업체정보 autocomplete page 업데이트 |
| | | function getCompanyFieldListCallBack(result) { |
| | | function getIssueCompanyFieldListCallBack(result) { |
| | | $scope.vm.autoCompletePage.companyField.totalPage = result.data.page.totalPage; |
| | | } |
| | | |
| | |
| | | } |
| | | |
| | | // ISP정보 autocomplete page 업데이트 |
| | | function getIspFieldListCallBack(result) { |
| | | function getIssueIspFieldListCallBack(result) { |
| | | $scope.vm.autoCompletePage.ispField.totalPage = result.data.page.totalPage; |
| | | } |
| | | |
| | | // 호스팅정보 autocomplete page 업데이트 |
| | | function getHostingFieldListCallBack(result) { |
| | | function getIssueHostingFieldListCallBack(result) { |
| | | $scope.vm.autoCompletePage.hostingField.totalPage = result.data.page.totalPage; |
| | | } |
| | | |
| | |
| | | issueTypeId : $scope.vm.form.issueTypeId, // 이슈 유형 아이디 |
| | | priorityId : $scope.vm.form.priorityId, // 우선순위 아이디 |
| | | severityId : $scope.vm.form.severityId, // 중요도 아이디 |
| | | companyId : (function () { // 프로젝트 아이디 |
| | | companyId : (function () { // 업체 아이디 |
| | | var companyId = ""; |
| | | if ($scope.vm.form.companyFields.length > 0) { |
| | | companyId = $scope.vm.form.companyFields[0].id; |
| | | if ($scope.vm.form.issueCompanyFields.length > 0) { |
| | | companyId = $scope.vm.form.issueCompanyFields[0].id; |
| | | } |
| | | return companyId; |
| | | })(), |
| | | |
| | | ispId : (function () { |
| | | ispId : (function () { // ISP 아이디 |
| | | var ispId = ""; |
| | | if ($scope.vm.form.ispFields.length > 0) { |
| | | ispId = $scope.vm.form.ispFields[0].id; |
| | | if ($scope.vm.form.issueIspFields.length > 0) { |
| | | ispId = $scope.vm.form.issueIspFields[0].id; |
| | | } |
| | | return ispId; |
| | | })(), |
| | | |
| | | hostingId : (function () { |
| | | hostingId : (function () { // Hosting 아이디 |
| | | var hostingId = ""; |
| | | if ($scope.vm.form.hostingFields.length > 0) { |
| | | hostingId = $scope.vm.form.hostingFields[0].id; |
| | | if ($scope.vm.form.issueHostingFields.length > 0) { |
| | | hostingId = $scope.vm.form.issueHostingFields[0].id; |
| | | } |
| | | return hostingId; |
| | | })(), |
| | |
| | | detectingDateRange : $scope.vm.form.detectingDateRange, |
| | | |
| | | issueCompanyFields : (function () { |
| | | var companyFields = []; |
| | | var issueCompanyFields = []; |
| | | |
| | | var companyField = $scope.vm.form.companyFields[0]; |
| | | var companyField = $scope.vm.form.issueCompanyFields[0]; |
| | | companyField.companyId = companyField.id; |
| | | companyField.id = null; |
| | | companyFields.push(companyField); |
| | | issueCompanyFields.push(companyField); |
| | | |
| | | return companyFields; |
| | | return issueCompanyFields; |
| | | })(), |
| | | |
| | | issueIspFields : (function () { |
| | | var ispFields = []; |
| | | var issueIspFields = []; |
| | | |
| | | var ispField = $scope.vm.form.ispFields[0]; |
| | | var ispField = $scope.vm.form.issueIspFields[0]; |
| | | ispField.ispId = ispField.id; |
| | | ispField.id = null; |
| | | ispFields.push(ispField); |
| | | |
| | | return ispFields; |
| | | issueIspFields.push(ispField); |
| | | return issueIspFields; |
| | | })(), |
| | | |
| | | issueHostingFields : (function () { |
| | | var hostingFields = []; |
| | | var issueHostingFields = []; |
| | | |
| | | var hostingField = $scope.vm.form.hostingFields[0]; |
| | | var hostingField = $scope.vm.form.issueHostingFields[0]; |
| | | hostingField.hostingId = hostingField.id; |
| | | hostingField.id = null; |
| | | hostingFields.push(hostingField); |
| | | |
| | | return hostingFields; |
| | | issueHostingFields.push(hostingField); |
| | | return issueHostingFields; |
| | | })(), |
| | | |
| | | issueCustomFields : (function () { // 이슈에서 사용되는 사용자 정의 필드 |
| | |
| | | formCheck : formCheck, // 폼 체크 |
| | | getUserListCallBack : getUserListCallBack, // 담당자 autocomplete 페이징 |
| | | getProjectListCallBack : getProjectListCallBack, // 프로젝트 autocomplete 페이징 |
| | | getCompanyFieldListCallBack : getCompanyFieldListCallBack, // 업체정보 autocomplete 페이징 |
| | | getIssueCompanyFieldListCallBack : getIssueCompanyFieldListCallBack, // 업체정보 autocomplete 페이징 |
| | | getIssueDepartmentListCallBack : getIssueDepartmentListCallBack, // 담당자 -> 담당부서 autocomplete 페이징 |
| | | getIspFieldListCallBack : getIspFieldListCallBack, // ISP정보 autocomplete 페이징 |
| | | getHostingFieldListCallBack : getHostingFieldListCallBack, // 호스팅정보 autocomplete 페이징 |
| | | getIssueIspFieldListCallBack : getIssueIspFieldListCallBack, // ISP정보 autocomplete 페이징 |
| | | getIssueHostingFieldListCallBack : getIssueHostingFieldListCallBack, // 호스팅정보 autocomplete 페이징 |
| | | getOptionColor : getOptionColor, // 우선순위, 중요도 색상으로 Select 태그 적용 |
| | | onFileSelect : onFileSelect, // 파일 첨부 |
| | | imageUpload : imageUpload, // 섬머노트 이미지 업로드 |
| | |
| | | title : "", // 제목 |
| | | description : "", // 내용 |
| | | projects : [], // 프로젝트 |
| | | companyFields : [], // 업체정보 |
| | | ispFields : [], // ISP 정보 |
| | | hostingFields : [], // 호스팅정보 |
| | | issueCompanyFields : [], // 업체정보 |
| | | issueIspFields : [], // ISP 정보 |
| | | issueHostingFields : [], // 호스팅정보 |
| | | issueTypeId : "", // 이슈 유형 아이디 |
| | | priorityId : "", // 우선순위 아이디 |
| | | severityId : "", // 중요도 아이디 |
| | |
| | | page : 0, |
| | | totalPage : 0 |
| | | }, |
| | | companyField : { |
| | | issueCompanyField : { |
| | | page : 0, |
| | | totalPage : 0 |
| | | }, |
| | |
| | | } |
| | | |
| | | // 업체정보 autocomplete page 업데이트 |
| | | function getCompanyFieldListCallBack(result) { |
| | | $scope.vm.autoCompletePage.companyField.totalPage = result.data.page.totalPage; |
| | | function getIssueCompanyFieldListCallBack(result) { |
| | | $scope.vm.autoCompletePage.issueCompanyField.totalPage = result.data.page.totalPage; |
| | | } |
| | | |
| | | // 부서정보 autocomplete page 업데이트 |
| | |
| | | } |
| | | |
| | | // ISP정보 autocomplete page 업데이트 |
| | | function getIspFieldListCallBack(result) { |
| | | function getIssueIspFieldListCallBack(result) { |
| | | $scope.vm.autoCompletePage.ispField.totalPage = result.data.page.totalPage; |
| | | } |
| | | |
| | | // 호스팅정보 autocomplete page 업데이트 |
| | | function getHostingFieldListCallBack(result) { |
| | | function getIssueHostingFieldListCallBack(result) { |
| | | $scope.vm.autoCompletePage.hostingField.totalPage = result.data.page.totalPage; |
| | | } |
| | | |
| | |
| | | |
| | | // 업체정보 결과 값 Event 처리(set) |
| | | $scope.$on("companyFieldEvent", function (event, result) { |
| | | $scope.vm.issuecompanyId = result[0].id; |
| | | $scope.vm.companyManager = result[0].manager; |
| | | $scope.vm.companyTel = result[0].tel; |
| | | $scope.vm.companyEmail = result[0].email; |
| | |
| | | return projectId; |
| | | })(), |
| | | companyId : (function () { // 프로젝트 아이디 |
| | | var companyId = ""; |
| | | var issueCompanyId = ""; |
| | | |
| | | if ($scope.vm.form.companyFields.length > 0) { |
| | | companyId = $scope.vm.form.companyFields[0].id; |
| | | if ($scope.vm.form.issueCompanyFields.length > 0) { |
| | | issueCompanyId = $scope.vm.form.issueCompanyFields[0].id; |
| | | } |
| | | |
| | | return companyId; |
| | | return issueCompanyId; |
| | | })(), |
| | | |
| | | ispId : (function () { |
| | | var ispId = ""; |
| | | |
| | | if ($scope.vm.form.ispFields.length > 0) { |
| | | ispId = $scope.vm.form.ispFields[0].id; |
| | | if ($scope.vm.form.issueIspFields.length > 0) { |
| | | ispId = $scope.vm.form.issueIspFields[0].id; |
| | | } |
| | | |
| | | return ispId; |
| | |
| | | hostingId : (function () { |
| | | var hostingId = ""; |
| | | |
| | | if ($scope.vm.form.hostingFields.length > 0) { |
| | | hostingId = $scope.vm.form.hostingFields[0].id; |
| | | if ($scope.vm.form.issueHostingFields.length > 0) { |
| | | hostingId = $scope.vm.form.issueHostingFields[0].id; |
| | | } |
| | | |
| | | return hostingId; |
| | |
| | | })(), |
| | | startCompleteDateRange : $scope.vm.form.startCompleteDateRange, |
| | | |
| | | companyFields : (function () { |
| | | var companyFields = []; |
| | | issueCompanyFields : (function () { |
| | | var issueCompanyFields = []; |
| | | |
| | | angular.forEach($scope.vm.form.companyFields, function (companyField) { |
| | | var useValues = []; |
| | | var issueCompanyField = $scope.vm.form.issueCompanyFields[0]; |
| | | issueCompanyFields.companyId = issueCompanyField.id; |
| | | issueCompanyField.id = null; |
| | | issueCompanyFields.push(issueCompanyField); |
| | | |
| | | if (angular.isArray(companyField.useValues)) { |
| | | angular.forEach(companyField.useValues, function (useValue) { |
| | | useValues.push(useValue.value); |
| | | }); |
| | | } |
| | | else { |
| | | useValues.push(companyField.useValues); |
| | | } |
| | | |
| | | // useValues 를 배열로 변환한다. |
| | | var temp = angular.copy(companyField); |
| | | temp.useValues = useValues; |
| | | companyFields.push(temp); |
| | | }); |
| | | |
| | | return companyFields; |
| | | return issueCompanyFields; |
| | | })(), |
| | | |
| | | ispFields : (function () { |
| | | var ispFields = []; |
| | | issueIspFields : (function () { |
| | | var issueIspFields = []; |
| | | |
| | | angular.forEach($scope.vm.form.ispFields, function (ispField) { |
| | | var useValues = []; |
| | | var ispField = $scope.vm.form.issueIspFields[0]; |
| | | issueIspFields.ispId = ispField.id; |
| | | ispField.id = null; |
| | | issueIspFields.push(ispField); |
| | | |
| | | if (angular.isArray(ispField.useValues)) { |
| | | angular.forEach(ispField.useValues, function (useValue) { |
| | | useValues.push(useValue.value); |
| | | }); |
| | | } |
| | | else { |
| | | useValues.push(ispField.useValues); |
| | | } |
| | | |
| | | // useValues 를 배열로 변환한다. |
| | | var temp = angular.copy(ispField); |
| | | temp.useValues = useValues; |
| | | ispFields.push(temp); |
| | | }); |
| | | |
| | | return ispFields; |
| | | return issueIspFields; |
| | | })(), |
| | | |
| | | hostingFields : (function () { |
| | | var hostingFields = []; |
| | | issueHostingFields : (function () { |
| | | var issueHostingFields = []; |
| | | |
| | | angular.forEach($scope.vm.form.hostingFields, function (hostingField) { |
| | | var useValues = []; |
| | | var hostingField = $scope.vm.form.issueHostingFields[0]; |
| | | issueHostingFields.hostingId = hostingField.id; |
| | | hostingField.id = null; |
| | | issueHostingFields.push(hostingField); |
| | | |
| | | if (angular.isArray(hostingField.useValues)) { |
| | | angular.forEach(hostingField.useValues, function (useValue) { |
| | | useValues.push(useValue.value); |
| | | }); |
| | | } |
| | | else { |
| | | useValues.push(hostingField.useValues); |
| | | } |
| | | |
| | | // useValues 를 배열로 변환한다. |
| | | var temp = angular.copy(hostingField); |
| | | temp.useValues = useValues; |
| | | hostingFields.push(temp); |
| | | }); |
| | | |
| | | return hostingFields; |
| | | return issueHostingFields; |
| | | })(), |
| | | |
| | | issueCustomFields : (function () { // 이슈에서 사용되는 사용자 정의 필드 |
| | |
| | | $scope.vm.form.users = result.data.data.userVos; |
| | | $scope.vm.form.departments = result.data.data.departmentVos; |
| | | $scope.vm.form.files = result.data.data.attachedFileVos; |
| | | // issueVo 에 get & set 설정값 설정 ex)issueCompanyVos |
| | | $scope.vm.form.issueCompanyFields = result.data.data.issueCompanyVos; |
| | | // |
| | | $scope.vm.form.companyFields.push(result.data.data.companyFieldVo); |
| | | $scope.vm.companyName = result.data.data.companyFieldVo.name; |
| | | $scope.vm.companyManager = result.data.data.companyFieldVo.manager; |
| | | $scope.vm.companyTel = result.data.data.companyFieldVo.tel; |
| | | $scope.vm.companyEmail = result.data.data.companyFieldVo.email; |
| | | $scope.vm.companyMemo = result.data.data.companyFieldVo.memo; |
| | | |
| | | $scope.vm.form.ispFields.push(result.data.data.ispFieldVo); |
| | | $scope.vm.ispName = result.data.data.ispFieldVo.name; |
| | | $scope.vm.ispCode = result.data.data.ispFieldVo.code; |
| | | $scope.vm.ispManager = result.data.data.ispFieldVo.manager; |
| | | $scope.vm.ispTel = result.data.data.ispFieldVo.tel; |
| | | $scope.vm.ispEmail = result.data.data.ispFieldVo.email; |
| | | $scope.vm.ispMemo = result.data.data.ispFieldVo.memo; |
| | | |
| | | $scope.vm.form.hostingFields.push(result.data.data.hostingFieldVo); |
| | | $scope.vm.hostingName = result.data.data.hostingFieldVo.name; |
| | | $scope.vm.hostingCode = result.data.data.hostingFieldVo.code; |
| | | $scope.vm.hostingManager = result.data.data.hostingFieldVo.manager; |
| | | $scope.vm.hostingTel = result.data.data.hostingFieldVo.tel; |
| | | $scope.vm.hostingEmail = result.data.data.hostingFieldVo.email; |
| | | $scope.vm.hostingMemo = result.data.data.hostingFieldVo.memo; |
| | | |
| | | $scope.vm.form.issueIspFields = result.data.data.issueIspVos; |
| | | // |
| | | $scope.vm.form.issueHostingFields = result.data.data.issueHostingVos; |
| | | // |
| | | if ($rootScope.isDefined(result.data.data.startDate)) { |
| | | $scope.vm.form.startCompleteDateRange = result.data.data.startDate + " ~ " + result.data.data.completeDate; |
| | | } |
| | |
| | | $scope.fn.getIssueList = getIssueList; // 일감 목록 정보를 조회한다. |
| | | $scope.fn.getWorkflowList = getWorkflowList; // 워크플로우 목록 정보를 조회한다. |
| | | $scope.fn.getUserDepartmentList = getUserDepartmentList; // 부서 목록 정보를 조회한다. |
| | | $scope.fn.getCompanyFieldList = getCompanyFieldList; // 업체 목록 정보를 조회한다. |
| | | $scope.fn.getIssueCompanyFieldList = getIssueCompanyFieldList; // 업체 목록 정보를 조회한다. |
| | | $scope.fn.getIssueDepartmentList = getIssueDepartmentList; // 담당자 -> 담당부서 목록 정보를 조회한다. |
| | | $scope.fn.getIspFieldList = getIspFieldList; // ISP 목록 정보를 조회한다. |
| | | $scope.fn.getHostingFieldList = getHostingFieldList; // 호스팅 목록 정보를 조회한다. |
| | | $scope.fn.getIssueIspFieldList = getIssueIspFieldList; // ISP 목록 정보를 조회한다. |
| | | $scope.fn.getIssueHostingFieldList = getIssueHostingFieldList; // 호스팅 목록 정보를 조회한다. |
| | | |
| | | function getUserList(query, excludeList, page, callBack) { |
| | | var conditions = { |
| | |
| | | return deferred.promise; |
| | | } |
| | | |
| | | function getCompanyFieldList(query, excludeList, page, callBack) { |
| | | function getIssueCompanyFieldList(query, excludeList, page, callBack) { |
| | | var conditions = { |
| | | companyName : query, |
| | | excludeIds : (function () { |
| | |
| | | return deferred.promise; |
| | | } |
| | | |
| | | function getIspFieldList(query, excludeList, page, callBack) { |
| | | function getIssueIspFieldList(query, excludeList, page, callBack) { |
| | | var conditions = { |
| | | ispName : query, |
| | | excludeIds : (function () { |
| | |
| | | return deferred.promise; |
| | | } |
| | | |
| | | function getHostingFieldList(query, excludeList, page, callBack) { |
| | | function getIssueHostingFieldList(query, excludeList, page, callBack) { |
| | | var conditions = { |
| | | hostingName : query, |
| | | excludeIds : (function () { |
| | |
| | | <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" |
| | | <js-autocomplete-single data-input-name="issueCompanyField" |
| | | selected-model="vm.form.issueCompanyFields" |
| | | search="vm.companyName" |
| | | source="fn.getCompanyFieldList(vm.companyName, vm.form.companyFields, vm.autoCompletePage.companyField.page, fn.getCompanyFieldListCallBack)" |
| | | source="fn.getIssueCompanyFieldList(vm.companyName, vm.form.issueCompanyFields, vm.autoCompletePage.companyField.page, fn.getIssueCompanyFieldListCallBack)" |
| | | page="vm.autoCompletePage.companyField.page" |
| | | total-page="vm.autoCompletePage.companyField.totalPage" |
| | | input-disabled="false" |
| | |
| | | <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" |
| | | selected-model="vm.form.issueIspFields" |
| | | search="vm.ispName" |
| | | source="fn.getIspFieldList(vm.ispName, vm.form.ispFields, vm.autoCompletePage.ispField.page, fn.getIspFieldListCallBack)" |
| | | source="fn.getIssueIspFieldList(vm.ispName, vm.form.issueIspFields, vm.autoCompletePage.ispField.page, fn.getIssueIspFieldListCallBack)" |
| | | page="vm.autoCompletePage.ispField.page" |
| | | total-page="vm.autoCompletePage.ispField.totalPage" |
| | | input-disabled="false" |
| | |
| | | <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" |
| | | selected-model="vm.form.issueHostingFields" |
| | | search="vm.hostingName" |
| | | source="fn.getHostingFieldList(vm.hostingName, vm.form.hostingFields, vm.autoCompletePage.hostingField.page, fn.getHostingFieldListCallBack)" |
| | | source="fn.getIssueHostingFieldList(vm.hostingName, vm.form.issueHostingFields, vm.autoCompletePage.hostingField.page, fn.getIssueHostingFieldListCallBack)" |
| | | page="vm.autoCompletePage.hostingField.page" |
| | | total-page="vm.autoCompletePage.hostingField.totalPage" |
| | | input-disabled="false" |
| | |
| | | <div class="form-group"> |
| | | <label><span translate="companyField.name">업체 이름</span> |
| | | <code class="highlighter-rouge">*</code></label> |
| | | <js-autocomplete-single data-input-name="companyField" |
| | | selected-model="vm.form.companyFields" |
| | | <js-autocomplete-single data-input-name="issueCompanyField" |
| | | selected-model="vm.form.issueCompanyFields" |
| | | search="vm.companyName" |
| | | source="fn.getCompanyFieldList(vm.companyName, vm.form.companyFields, vm.autoCompletePage.companyField.page,fn.getCompanyFieldListCallBack)" |
| | | source="fn.getIssueCompanyFieldList(vm.companyName, vm.form.issueCompanyFields, vm.autoCompletePage.companyField.page,fn.getIssueCompanyFieldListCallBack)" |
| | | page="vm.autoCompletePage.companyField.page" |
| | | total-page="vm.autoCompletePage.companyField.totalPage" |
| | | input-disabled="false" |
| | |
| | | </div> |
| | | </div> |
| | | --> |
| | | <!-- 테이블 --> |
| | | <!-- 테이블 --> |
| | | <!-- |
| | | <div class="support-ticket "> |
| | | <div class="st-body"> |
| | |
| | | </div> |
| | | </div> |
| | | --> |
| | | <!-- 페이징 --> |
| | | <!-- 페이징 --> |
| | | <!-- |
| | | <div class="controls-below-table text-center"> |
| | | <ul uib-pagination |
| | |
| | | <div class="support-ticket-content"> |
| | | <div class="support-ticket-content-header issue-detail-word-break"> |
| | | <h3 class="ticket-header"> |
| | | <div class="tasks-header-w mb-10"> |
| | | <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> |
| | | <div class="col-sm-2"> |
| | | <div class="form-group"> |
| | | <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> |
| | | </div> |
| | | <div class="col-sm-2"> |
| | | <div class="form-group"> |
| | | {{vm.viewer.registerDate}} |
| | | </div> |
| | | </div> |
| | | |
| | | <div class="form-group"> |
| | | <label class="issue-detail-label"><span translate="common.register">등록자</span></label> |
| | | <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> |
| | | |
| | | |
| | | <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> |
| | |
| | | <div class="row mt-20"> |
| | | <div class="col-md-4"> |
| | | <div class="form-group"> |
| | | <div class="row"> |
| | | <div class="col-xxl-12"> |
| | | <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> |
| | | |
| | | <span ng-if="vm.viewer.userVos.length < 1" translate="common.noAssignee">담당자가 없습니다.</span> |
| | | <i class="fa fa-edit fa-2x issue-status-edit cursor" |
| | | ng-click="fn.modifyIssueUser()" data-toggle="tooltip" data-placement="right" title="담당자 변경 하기"></i> |
| | | </div> |
| | | </div> |
| | | |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | |
| | | <div class="col-md-4"> |
| | | <div class="form-group"> |
| | | <div class="col-md-8"> |
| | | <div class="form-group"> |
| | | <label class="issue-detail-label"><span translate="common.period">기간</span></label> |
| | | <div class=""> |
| | | <span translate="{{vm.viewer.startDate}}"></span> ~ <span |
| | | translate="{{vm.viewer.completeDate}}"></span> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div class="col-md-4"> |
| | | <div class="form-group"> |
| | | <label class="issue-detail-label"><span translate="common.importance">중요도</span></label> |
| | | <label class="issue-detail-label offset-1"><span translate="common.priority">우선 순위</span></label> |
| | | <label class="issue-detail-label offset-1"><span translate="issue.issueStatus">이슈 상태</span></label> |
| | | <div class=""> |
| | | <span class="badge" |
| | | ng-style="{'background-color' : vm.viewer.severityVo.color, 'border-color' : vm.viewer.severityVo.color, 'color' : '#FFFFFF' }" |
| | | translate="{{vm.viewer.severityVo.name}}"></span> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <span class="badge" ng-style="{'background-color' : vm.viewer.severityVo.color, 'border-color' : vm.viewer.severityVo.color, 'color' : '#FFFFFF' }" translate="{{vm.viewer.severityVo.name}}"></span> |
| | | |
| | | <div class="col-md-4"> |
| | | <div class="form-group"> |
| | | <label class="issue-detail-label"><span translate="common.priority">우선 순위</span></label> |
| | | <div class=""> |
| | | <span class="badge" |
| | | ng-style="{'background-color' : vm.viewer.priorityVo.color, 'border-color' : vm.viewer.priorityVo.color, 'color' : '#FFFFFF' }" |
| | | translate="{{vm.viewer.priorityVo.name}}"></span> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <span class="badge offset-1" ng-style="{'background-color' : vm.viewer.priorityVo.color, 'border-color' : vm.viewer.priorityVo.color, 'color' : '#FFFFFF' }" translate="{{vm.viewer.priorityVo.name}}"></span> |
| | | |
| | | <div class="col-md-4"> |
| | | <div class="form-group"> |
| | | <label class="issue-detail-label"><span translate="issue.issueStatus">이슈 상태</span></label> |
| | | <!-- 권한을 갖고 있을 때 --> |
| | | <div ng-if="vm.viewer.modifyPermissionCheck"> |
| | | <span class="editForm badge mr-5" |
| | | ng-style="{'background-color' : vm.viewer.issueStatusVo.color, 'border-color' : vm.viewer.issueStatusVo.color, 'color' : '#FFFFFF' }">{{vm.viewer.issueStatusVo.name}}</span> |
| | | <i class="fa fa-edit fa-2x issue-status-edit cursor" |
| | | ng-click="fn.modifyIssueStatus()" data-toggle="tooltip" data-placement="right" title="일감 상태 변경 하기"></i> |
| | | </div> |
| | | |
| | | <!-- 권한이 없을 때 --> |
| | | <div ng-if="!vm.viewer.modifyPermissionCheck"> |
| | | <span class="editForm badge mr-5" |
| | | ng-style="{'background-color' : vm.viewer.issueStatusVo.color, 'border-color' : vm.viewer.issueStatusVo.color, 'color' : '#FFFFFF' }">{{vm.viewer.issueStatusVo.name}}</span> |
| | | <!-- 권한을 갖고 있을 때 --> |
| | | <span ng-if="vm.viewer.modifyPermissionCheck"> |
| | | <span class="editForm badge mr-5 offset-1" ng-style="{'background-color' : vm.viewer.issueStatusVo.color, 'border-color' : vm.viewer.issueStatusVo.color, 'color' : '#FFFFFF' }">{{vm.viewer.issueStatusVo.name}}</span><i class="fa fa-edit fa-2x issue-status-edit cursor" ng-click="fn.modifyIssueStatus()" data-toggle="tooltip" data-placement="right" title="일감 상태 변경 하기"></i> |
| | | </span> |
| | | <!-- 권한이 없을 때 --> |
| | | <span ng-if="!vm.viewer.modifyPermissionCheck"> |
| | | <span class="editForm badge mr-5 offset-1" ng-style="{'background-color' : vm.viewer.issueStatusVo.color, 'border-color' : vm.viewer.issueStatusVo.color, 'color' : '#FFFFFF' }">{{vm.viewer.issueStatusVo.name}}</span> |
| | | </span> |
| | | </div> |
| | | </div> |
| | | </div> |
| | |
| | | <div class="row"> |
| | | <div class="col-md-4"> |
| | | <div class="form-group"> |
| | | <label class="issue-detail-label"><span translate="issue.issueType">이슈 타입</span> </label> |
| | | <label class="issue-detail-label"><span translate="common.detectingInfo">탐지정보</span> </label> |
| | | <div class=""> |
| | | <span class="status-pill smaller" |
| | | ng-style="{'background-color': vm.viewer.issueTypeVo.color }"></span><span>{{vm.viewer.issueTypeVo.name}}</span> |
| | | <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> |
| | | <div class=""> |
| | | <span>200.11.13.123</span> |
| | | <span class="country">US</span> |
| | | </div> |
| | | <!-- <span ng-if="vm.viewer.userVos.length < 1" translate="common.noAssignee">담당자가 없습니다.</span>--> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | |
| | | <div class="col-md-4"> |
| | | <div class="form-group"> |
| | | <label class="issue-detail-label"><span translate="common.period">기간</span></label> |
| | | <div class=""> |
| | | <span translate="{{vm.viewer.startDate}}"></span> ~ <span |
| | | translate="{{vm.viewer.completeDate}}"></span> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div class="col-md-4"> |
| | | <div class="form-group"> |
| | | <label class="issue-detail-label"><span translate="common.changeDate">변경일</span> </label> |
| | | <div class=""> |
| | | {{vm.viewer.modifyDate}} |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | |
| | |
| | | </div> |
| | | </div> |
| | | |
| | | <div class="row"> |
| | | <div class="col-xxl-12"> |
| | | <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> |
| | | |
| | | <span ng-if="vm.viewer.userVos.length < 1" translate="common.noAssignee"> |
| | | 담당자가 없습니다. |
| | | </span> |
| | | <i class="fa fa-edit fa-2x issue-status-edit cursor" |
| | | ng-click="fn.modifyIssueUser()" data-toggle="tooltip" data-placement="right" title="담당자 변경 하기"></i> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | |
| | | <div class="row"> |
| | | <div class="col-md-4" ng-repeat="issueCustomField in vm.viewer.issueCustomFields"> |
| | |
| | | <!-- 테이블 --> |
| | | <div class="mt-10 issue-detail-word-break width-100"> |
| | | <js-table data="vm.viewer.issueRelationVos" table-configs="vm.relTableConfigs" |
| | | event="relTableEvent" detail-view="true" hide-header="false" use-sort="false"></js-table> |
| | | event="relTableEvent" detail-view="true" hide-header="false" use-sort="false"></js-table> |
| | | |
| | | <div class="row"> |
| | | <div class="col-sm-4"> |
| | |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | |
| | | <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" |
| | | <js-autocomplete-single data-input-name="issueCompanyField" |
| | | selected-model="vm.form.issueCompanyFields" |
| | | search="vm.companyName" |
| | | source="fn.getCompanyFieldList(vm.companyName, vm.form.companyFields, vm.autoCompletePage.companyField.page, fn.getCompanyFieldListCallBack)" |
| | | source="fn.getIssueCompanyFieldList(vm.companyName, vm.form.issueCompanyFields, vm.autoCompletePage.companyField.page, fn.getIssueCompanyFieldListCallBack)" |
| | | page="vm.autoCompletePage.companyField.page" |
| | | total-page="vm.autoCompletePage.companyField.totalPage" |
| | | input-disabled="false" |
| | |
| | | <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" |
| | | selected-model="vm.form.issueIspFields" |
| | | search="vm.ispName" |
| | | source="fn.getIspFieldList(vm.ispName, vm.form.ispFields, vm.autoCompletePage.ispField.page, fn.getIspFieldListCallBack)" |
| | | source="fn.getIssueIspFieldList(vm.ispName, vm.form.issueIspFields, vm.autoCompletePage.ispField.page, fn.getIssueIspFieldListCallBack)" |
| | | page="vm.autoCompletePage.ispField.page" |
| | | total-page="vm.autoCompletePage.ispField.totalPage" |
| | | input-disabled="false" |
| | |
| | | <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" |
| | | selected-model="vm.form.issueHostingFields" |
| | | search="vm.hostingName" |
| | | source="fn.getHostingFieldList(vm.hostingName, vm.form.hostingFields, vm.autoCompletePage.hostingField.page, fn.getHostingFieldListCallBack)" |
| | | source="fn.getIssueHostingFieldList(vm.hostingName, vm.form.issueHostingFields, vm.autoCompletePage.hostingField.page, fn.getIssueHostingFieldListCallBack)" |
| | | page="vm.autoCompletePage.hostingField.page" |
| | | total-page="vm.autoCompletePage.hostingField.totalPage" |
| | | input-disabled="false" |