From f557cd3c7c1d981e23ed6b8220c8d8c4906a7e27 Mon Sep 17 00:00:00 2001 From: 이민희 <mhlee@maprex.co.kr> Date: 화, 07 12월 2021 19:30:47 +0900 Subject: [PATCH] - 사용자 필드 기능 수정 - 이슈 추가/수정시 워크플로우에 설정된 담당부서로 변경되도록 수정 * DB 초기화 필요 --- src/main/webapp/scripts/app/issue/issueAdd.controller.js | 293 ++++++++++++++++++++++++++++++++++++++++++++++------------ 1 files changed, 233 insertions(+), 60 deletions(-) diff --git a/src/main/webapp/scripts/app/issue/issueAdd.controller.js b/src/main/webapp/scripts/app/issue/issueAdd.controller.js index 8f43e5f..151503e 100644 --- a/src/main/webapp/scripts/app/issue/issueAdd.controller.js +++ b/src/main/webapp/scripts/app/issue/issueAdd.controller.js @@ -19,10 +19,10 @@ 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, // 怨꾩냽 �깮�꽦 @@ -33,18 +33,22 @@ getIssueTypeCustomFields : getIssueTypeCustomFields, // �씠�뒋 �쑀�삎�뿉 �뿰寃곕맂 �궗�슜�옄 �젙�쓽 �븘�뱶 紐⑸줉 媛��졇�삤湲� removeUploadFile : removeUploadFile, // �뾽濡쒕뱶�븯�젮�뒗 �듅�젙 �뙆�씪�쓣 �궘�젣 removeManager : removeManager, // �떞�떦�옄 �궘�젣 + removeDepartment : removeDepartment, // �떞�떦遺��꽌 �궘�젣 setIssueTypeTemplate : setIssueTypeTemplate, // �씠�뒋 �쑀�삎 �뀥�뵆由� �쟻�슜�븯湲� - startExecute : startExecute // 而⑦듃濡� 濡쒕뵫�떆 泥섏쓬�쑝濡� �떆�옉�릺�뒗 �븿�닔 + startExecute : startExecute, // 而⑦듃濡� 濡쒕뵫�떆 泥섏쓬�쑝濡� �떆�옉�릺�뒗 �븿�닔 + containsPartner : containsPartner, + getPartners : getPartners }; $scope.vm = { + partnerVos : "", form : { title : "", // �젣紐� description : "", // �궡�슜 projects : [], // �봽濡쒖젥�듃 - companyFields : [], // �뾽泥댁젙蹂� - ispFields : [], // ISP �젙蹂� - hostingFields : [], // �샇�뒪�똿�젙蹂� + issueCompanyFields : [], // �뾽泥댁젙蹂� + issueIspFields : [], // ISP �젙蹂� + issueHostingFields : [], // �샇�뒪�똿�젙蹂� issueTypeId : "", // �씠�뒋 �쑀�삎 �븘�씠�뵒 priorityId : "", // �슦�꽑�닚�쐞 �븘�씠�뵒 severityId : "", // 以묒슂�룄 �븘�씠�뵒 @@ -54,29 +58,33 @@ attachedFiles : [], // �꽟癒몃끂�듃濡� �뙆�씪 �뾽濡쒕뱶瑜� �븷 寃쎌슦 �꽌踰꾩뿉�꽌 pk瑜� �뵲怨� issue id�� �뿰�룞 �옉�뾽�씠 �븘�슂�븯�떎. startCompleteDateRange : "", // �떆�옉�씪 ~ 醫낅즺�씪 detectingDateRange : "", // �깘吏��씪 - issueCustomFields : [] // �씠�뒋�뿉�꽌 �궗�슜�릺�뒗 �궗�슜�옄 �젙�쓽 �븘�뱶 + issueCustomFields : [], // �씠�뒋�뿉�꽌 �궗�슜�릺�뒗 �궗�슜�옄 �젙�쓽 �븘�뱶 + requiredDatas : [] // �궗�슜�옄 �젙�쓽 �븘�뱶 �븘�닔 �뜲�씠�꽣 泥댄겕 }, infiniteAdd : false, // �뿰�냽 �깮�꽦 projectName : "", // �봽濡쒖젥�듃 紐� 寃��깋 userName : "", // �궗�슜�옄 寃��깋 departmentName : "", // 遺��꽌紐� 寃��깋 + companyId : -1, // 遺��꽌 ID companyName : "", // �뾽泥대챸 寃��깋 - companyCode : "", // �뾽泥� 肄붾뱶 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 : "", // �샇�뒪�똿 鍮꾧퀬 + hostingMemo :"", // �샇�뒪�똿 鍮꾧퀬 + autoCompletePage : { user : { page : 0, @@ -113,6 +121,18 @@ fileTableConfigs : [], // �뙆�씪 �뾽濡쒕뱶 �젙蹂� �뀒�씠釉� }; + // �뿰愿� �씪媛� 愿��젴 + $scope.vm.relationIssueTypes = + [ + { id: 0, name: $filter("translate")("issue.relationIssueType1") }, + { id: 1, name: $filter("translate")("issue.relationIssueType2") }, + { id: 2, name: $filter("translate")("issue.relationIssueType3") }, + { id: 3, name: $filter("translate")("issue.relationIssueType4") }, + { id: 4, name: $filter("translate")("issue.relationIssueType5") }, + { id: 5, name: $filter("translate")("issue.relationIssueType6") } + ]; + $scope.vm.relationIssueType = $scope.vm.relationIssueTypes[0]; + angular.extend(this, $controller('autoCompleteController', {$scope : $scope, $injector : $injector})); function getStartProjectListCallback(result){ @@ -125,14 +145,20 @@ // �봽濡쒖젥�듃媛� 蹂�寃쎈릺硫� �떞�떦�옄 珥덇린�솕 $scope.$watch("vm.form.projects", function (newValue, oldValue) { + + if (angular.isDefined(newValue)) { if (newValue.length < 1) { $scope.vm.form.users = []; + } else { + // �씠�뒋 �쑀�삎�뿉 �뿰寃곕맂 �궗�슜�옄 �젙�쓽 �븘�뱶 媛��졇�삤湲� + $scope.fn.getIssueTypeCustomFields(); } - - // �씠�뒋 �쑀�삎�뿉 �뿰寃곕맂 �궗�슜�옄 �젙�쓽 �븘�뱶 媛��졇�삤湲� - $scope.fn.getIssueTypeCustomFields(); } + }); + + $scope.$watch("vm.form.issueTypeId", function (newValue, oldValue) { + $scope.vm.partnerVos = $scope.fn.getPartners(); }); // �꽟癒몃끂�듃 �씠誘몄� �뾽濡쒕뱶 @@ -291,6 +317,11 @@ $scope.vm.form.departments.splice(index, 1); } + // �떞�떦遺��꽌 �궘�젣 + function removeDepartment(index) { + $scope.vm.form.departments.splice(index, 1); + } + // �뾽濡쒕뱶 �뙆�씪 �궘�젣 function removeUploadFile(index) { $scope.vm.form.files.splice(index, 1); @@ -298,6 +329,21 @@ angular.forEach($scope.vm.form.files, function (file, index) { file.index = index; }); + } + + // �뾽泥�/ISP/�샇�뒪�똿 �씠由꾩씠 �룷�븿 �뿬遺� �솗�씤 + function containsPartner(name) { + var result = false; + + if ($scope.vm.partnerVos != null) { + $scope.vm.partnerVos.forEach(function (partnerVo) { + if (name === partnerVo.name) { + result = true; + } + }); + } + return result; + } // �떞�떦�옄 autocomplete page �뾽�뜲�씠�듃�듃 @@ -309,22 +355,25 @@ function getProjectListCallBack(result) { $scope.vm.autoCompletePage.project.totalPage = result.data.page.totalPage; } + // �뾽泥댁젙蹂� autocomplete page �뾽�뜲�씠�듃 - function getCompanyFieldListCallBack(result) { + function getIssueCompanyFieldListCallBack(result) { $scope.vm.autoCompletePage.companyField.totalPage = result.data.page.totalPage; } + // 遺��꽌�젙蹂� autocomplete page �뾽�뜲�씠�듃 function getIssueDepartmentListCallBack(result) { $scope.vm.autoCompletePage.department.totalPage = result.data.page.totalPage; } - function getIspFieldListCallBack(result) { + // ISP�젙蹂� autocomplete page �뾽�뜲�씠�듃 + function getIssueIspFieldListCallBack(result) { $scope.vm.autoCompletePage.ispField.totalPage = result.data.page.totalPage; - } - function getHostingFieldListCallBack(result) { - $scope.vm.autoCompletePage.hostingField.totalPage = result.data.page.totalPage; + // �샇�뒪�똿�젙蹂� autocomplete page �뾽�뜲�씠�듃 + function getIssueHostingFieldListCallBack(result) { + $scope.vm.autoCompletePage.hostingField.totalPage = result.data.page.totalPage; } // �뤌 泥댄겕 @@ -337,6 +386,8 @@ // �뾽泥댁젙蹂� 寃곌낵 媛� Event 泥섎━(set) $scope.$on("companyFieldEvent", function (event, result) { + $scope.vm.companyId = result[0].id; + $scope.vm.companyName = result[0].name; $scope.vm.companyManager = result[0].manager; $scope.vm.companyTel = result[0].tel; $scope.vm.companyEmail = result[0].email; @@ -346,14 +397,19 @@ // ISP�젙蹂� 寃곌낵 媛� Event 泥섎━(set) $scope.$on("ispFieldEvent", function (event, result) { + $scope.vm.ispId = result[0].id; + $scope.vm.ispName = result[0].name; $scope.vm.ispCode = result[0].code; $scope.vm.ispManager = result[0].manager; $scope.vm.ispTel = result[0].tel; $scope.vm.ispEmail = result[0].email; $scope.vm.ispMemo = result[0].memo; }); + // �샇�뒪�똿�젙蹂� 寃곌낵 媛� Event 泥섎━(set) $scope.$on("hostingFieldEvent", function (event, result) { + $scope.vm.hostingId = result[0].id; + $scope.vm.hostingName = result[0].name; $scope.vm.hostingCode = result[0].code; $scope.vm.hostingManager = result[0].manager; $scope.vm.hostingTel = result[0].tel; @@ -368,6 +424,7 @@ var content = { title : $rootScope.preventXss($scope.vm.form.title), // �젣紐� description : $rootScope.preventXss($scope.vm.form.description), // �궡�슜 + projectId : (function () { // �봽濡쒖젥�듃 �븘�씠�뵒 var projectId = ""; @@ -377,35 +434,32 @@ return projectId; })(), + issueTypeId : $scope.vm.form.issueTypeId, // �씠�뒋 �쑀�삎 �븘�씠�뵒 priorityId : $scope.vm.form.priorityId, // �슦�꽑�닚�쐞 �븘�씠�뵒 severityId : $scope.vm.form.severityId, // 以묒슂�룄 �븘�씠�뵒 - companyId : (function () { // �봽濡쒖젥�듃 �븘�씠�뵒 - var companyId = ""; - if ($scope.vm.form.companyFields.length > 0) { - companyId = $scope.vm.form.companyFields[0].id; + companyId : (function () { // �뾽泥� �븘�씠�뵒 + var companyId = -1; + if ($scope.vm.form.issueCompanyFields.length > 0) { + companyId = $scope.vm.form.issueCompanyFields[0].id; } - return companyId; })(), - ispId : (function () { - var ispId = ""; - - if ($scope.vm.form.ispFields.length > 0) { - ispId = $scope.vm.form.ispFields[0].id; + ispId : (function () { // ISP �븘�씠�뵒 + var ispId = -1; + 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; + hostingId : (function () { // Hosting �븘�씠�뵒 + var hostingId = -1; + if ($scope.vm.form.issueHostingFields.length > 0) { + hostingId = $scope.vm.form.issueHostingFields[0].id; } - return hostingId; })(), @@ -422,12 +476,13 @@ departmentIds : (function () { var departmentIds = []; - angular.forEach($scope.vm.form.departments, function (user) { - departmentIds.push(user.id); + angular.forEach($scope.vm.form.departments, function (department) { + departmentIds.push(department.id); }); return departmentIds; })(), + attachedFileIds : (function () { var attachedFileIds = []; @@ -439,8 +494,94 @@ return attachedFileIds; })(), + + issueCompanyFields : (function () { + var issueCompanyFields = []; + if ($scope.vm.form.issueCompanyFields != null && $scope.vm.form.issueCompanyFields.length > 0 ){ + var companyField = $scope.vm.form.issueCompanyFields[0]; + + issueCompanyFields.push({ + id : companyField.id, + companyId : $scope.vm.companyId, + name : $scope.vm.companyName, + manager : $scope.vm.companyManager, + tel : $scope.vm.companyTel, + email :$scope.vm.companyEmail, + memo : $scope.vm.companyMemo + }); + } + + return issueCompanyFields; + })(), + + issueIspFields : (function () { + var issueIspFields = []; + if ($scope.vm.form.issueIspFields != null && $scope.vm.form.issueIspFields.length > 0 ){ + var ispField = $scope.vm.form.issueIspFields[0]; + + issueIspFields[0] = { + id : ispField.id, + ispId : $scope.vm.ispId, + name : $scope.vm.ispName, + code : $scope.vm.ispCode, + manager : $scope.vm.ispManager, + tel : $scope.vm.ispTel, + email :$scope.vm.ispEmail, + memo : $scope.vm.ispMemo + }; + + } + + return issueIspFields; + })(), + + issueHostingFields : (function () { + var issueHostingFields = []; + if ($scope.vm.form.issueHostingFields != null && $scope.vm.form.issueHostingFields.length > 0 ){ + + var hostingField = $scope.vm.form.issueHostingFields[0]; + + issueHostingFields[0] = { + id : hostingField.id, + hostingId : $scope.vm.hostingId, + name : $scope.vm.hostingName, + code : $scope.vm.hostingCode, + manager : $scope.vm.hostingManager, + tel : $scope.vm.hostingTel, + email :$scope.vm.hostingEmail, + memo : $scope.vm.hostingMemo + }; + } + + return issueHostingFields; + })(), + startCompleteDateRange : $scope.vm.form.startCompleteDateRange, detectingDateRange : $scope.vm.form.detectingDateRange, + + requiredDatas : (function () { // �궗�슜�옄 �젙�쓽 �븘�뱶 �븘�닔 �뜲�씠�꽣 泥댄겕 + var requiredDatas = []; + + angular.forEach($scope.vm.form.requiredDatas, function (issueCustomField) { + var useValues = []; + + if (angular.isArray(issueCustomField.useValues)) { + angular.forEach(issueCustomField.useValues, function (useValue) { + useValues.push(useValue.value); + }); + } + else { + useValues.push(issueCustomField.useValues); + } + + // useValues 瑜� 諛곗뿴濡� 蹂��솚�븳�떎. + var temp = angular.copy(issueCustomField); + temp.useValues = useValues; + issueCustomFields.push(temp); + }); + + return issueCustomFields; + })(), issueCustomFields : (function () { // �씠�뒋�뿉�꽌 �궗�슜�릺�뒗 �궗�슜�옄 �젙�쓽 �븘�뱶 var issueCustomFields = []; @@ -476,27 +617,27 @@ }, fileFormDataName : "file" }).then(function (result) { - if (result.data.message.status === "success") { - // �뿰�냽 �벑濡� 泥댄겕�떆 �씠�룞�븯吏� �븡�쓬. - if ($scope.vm.infiniteAdd) { - $scope.fn.infiniteAddForm(); - } - else { - $scope.fn.cancel(); - - if ($state.current.name !== "issues.list") { - $state.go("issues.list"); - } - } - - $rootScope.$broadcast("getIssueList", {}); + if (result.data.message.status === "success") { + // �뿰�냽 �벑濡� 泥댄겕�떆 �씠�룞�븯吏� �븡�쓬. + if ($scope.vm.infiniteAdd) { + $scope.fn.infiniteAddForm(); } else { - SweetAlert.error($filter("translate")("issue.failedIssueRegistration"), result.data.message.message); // �씠�뒋 �벑濡� �떎�뙣 + $scope.fn.cancel(); + + if ($state.current.name !== "issues.list" || $state.current.name === "issues.list") { + $state.go("issues.list"); + } } - $rootScope.spinner = false; - }); + $rootScope.$broadcast("getIssueList", {}); + } + else { + SweetAlert.error($filter("translate")("issue.failedIssueRegistration"), result.data.message.message); // �씠�뒋 �벑濡� �떎�뙣 + } + + $rootScope.spinner = false; + }); } // �뙘�뾽 李� �떕湲� @@ -570,6 +711,7 @@ // �씠�뒋 �쑀�삎�뿉 �뿰寃곕맂 �궗�슜�옄 �젙�쓽 �븘�뱶 function getIssueTypeCustomFields() { $scope.vm.form.issueCustomFields = []; + $scope.vm.form.requiredDatas = []; // �씠�뒋 ���엯 �븘�씠�뵒�굹 �봽濡쒖젥�듃 �븘�씠�뵒媛� �뾾�쑝硫� �넻�떊�쓣 �븯吏� �븡�뒗�떎. if (!$rootScope.isDefined($scope.vm.form.issueTypeId) || $scope.vm.form.projects.length < 1) { return; @@ -584,9 +726,17 @@ if (result.data.message.status === "success") { + $scope.vm.form.issueCustomFields = []; + $scope.vm.form.requiredDatas = []; angular.forEach(result.data.data, function (issueTypeCustomField) { switch (issueTypeCustomField.customFieldVo.customFieldType) { case "INPUT" : + case "NUMBER" : + case "DATETIME" : + case "IP_ADDRESS" : + case "EMAIL" : + case "SITE" : + case "TEL" : issueTypeCustomField.useValues = issueTypeCustomField.customFieldVo.defaultValue; break; case "SINGLE_SELECT" : @@ -605,8 +755,10 @@ }); break; } - $scope.vm.form.issueCustomFields.push(issueTypeCustomField); + if(issueTypeCustomField.customFieldVo.requiredData === "Y") { + $scope.vm.form.requiredDatas.push(issueTypeCustomField.customFieldVo.requiredData); + } }); } else { @@ -659,27 +811,48 @@ } } + function getPartners() { + if($scope.vm.form.issueTypeId === ""){ + $scope.vm.form.issueTypeId = $rootScope.issueTypeMenu.id + } + var content = { + issueTypeId : $scope.vm.form.issueTypeId, + }; + Issue.findPartners($resourceProvider.getContent( + content, + $resourceProvider.getPageContent(0, 1))).then(function (result) { + if (result.data.message.status === "success") { + $scope.vm.partnerVos = result.data.data; + } + }); + + } + // 理쒖큹 �떎�뻾 function startExecute() { var promises = { getIssueTypes : $scope.fn.getIssueTypes(), getPriorities : $scope.fn.getPriorities(), - getSeverities : $scope.fn.getSeverities() + getSeverities : $scope.fn.getSeverities(), + getPartners : $scope.fn.getPartners() }; $q.all(promises).then(function (results) { // �쁽�옱 �봽濡쒖젥�듃 �꽕�젙 if ($rootScope.workProject != null && $rootScope.workProject.id > -1) { $scope.vm.projectName = $rootScope.workProject.name; - $scope.fn.projects = []; - $scope.fn.projects.push($rootScope.workProject); - $scope.fn.getProjectList($scope.vm.projectName, $scope.vm.form.projects, $scope.vm.autoCompletePage.project.page, getStartProjectListCallback); + $scope.vm.form.projects = []; + $scope.vm.form.projects.push($rootScope.workProject); } - + // �쁽�옱 �씠�뒋���엯 �쑀�삎 �꽕�젙 + var id = $rootScope.getCurrentIssueTypeId(); + if (id != null) { + $scope.vm.form.issueTypeId = id.toString(); + } $log.debug("promises 寃곌낵 ", results); }); } $scope.fn.startExecute(); }]); - }); + }); \ No newline at end of file -- Gitblit v1.8.0