/** * Created by maprex on 2021-11-04. */ 'use strict'; define([ 'app', 'angular' ], function (app, angular) { app.controller('companyFieldListController', ['$scope', '$rootScope', '$log', '$resourceProvider', '$tableProvider', '$state', '$uibModal', 'CompanyField', 'SweetAlert', '$timeout', '$filter', function ($scope, $rootScope, $log, $resourceProvider, $tableProvider, $state, $uibModal, CompanyField, SweetAlert, $timeout, $filter) { // 함수 $scope.fn = { getPageList : getPageList, // 업체 관리 리스트 makeTableConfigs : makeTableConfigs, // 테이블 설정 changePageRowCount : changePageRowCount, // 페이지 변경 initSearch : initSearch, //검색 조건 초기화 add : add, //업체 생성 makeSearchConditions : makeSearchConditions, //엑셀 다운로드 removes : removes, //업체 삭제 importExcel : importExcel, // 엑셀 import 기능 팝업 호출 }; // 변수 $scope.vm = { tableConfigs : [], }; $scope.tableEvent = { modify : modify //업체 정보 변경 }; $scope.vm.search = { name : "", // 업체명 }; $scope.vm.page = { selectedPage : 0, selectedPageRowCount : String(10) }; $scope.vm.responseData = { data : [] }; // 업체 관리 리스트 불러오기 $scope.$on("getPageList", function () { $scope.fn.getPageList(0); }); // 업체 목록 데이터 갱신 $scope.$on("getCompanyFieldList", function () { $scope.fn.getPageList(0); }); // 검색 조건 초기화 function initSearch() { $scope.vm.search.name = ""; $scope.fn.getPageList(0); } // 업체 관리 검색 조건을 만든다. function makeSearchConditions() { return{ name: $scope.vm.search.name }; } // 페이지 변경 function changePageRowCount() { $scope.fn.getPageList(0); } // 사용자 정의 필드 목록 테이블 설정 function makeTableConfigs() { $scope.vm.tableConfigs = []; $scope.vm.tableConfigs.push($tableProvider.config() .setDType("checkbox") .setHWidth("width-20-p") .setDAlign("text-center")); $scope.vm.tableConfigs.push($tableProvider.config() .setHName("companyField.name") .setHWidth("bold") .setDName("name") .setDType("renderer") .setDAlign("text-center") .setDRenderer("COMPANYFIELD_MODIFY")); $scope.vm.tableConfigs.push($tableProvider.config() .setHName("companyField.manager") .setHWidth("bold") .setDName("manager") .setDAlign("text-center")); $scope.vm.tableConfigs.push($tableProvider.config() .setHName("companyField.tel") .setHWidth("width-200-p bold") .setDName("tel") .setDAlign("text-center")); $scope.vm.tableConfigs.push($tableProvider.config() .setHName("companyField.email") .setHWidth("width-200-p bold") .setDName("email") .setDAlign("text-center")); $scope.vm.tableConfigs.push($tableProvider.config() .setHName("companyField.url") .setHWidth("width-200-p bold") .setDName("url") .setDAlign("text-center")); $scope.vm.tableConfigs.push($tableProvider.config() .setHName("companyField.ipRangeFirst") .setHWidth("width-120-p bold") .setDName("ipRange") .setDType("renderer") .setDAlign("text-center") .setDRenderer("COMPANYFIELD_IP")); $scope.vm.tableConfigs.push($tableProvider.config() .setHName("common.isp") .setHWidth("bold") .setDName("ispName") .setDAlign("text-center")); $scope.vm.tableConfigs.push($tableProvider.config() .setHName("common.hosting") .setHWidth("bold") .setDName("hostingName") .setDAlign("text-center")); $scope.vm.tableConfigs.push($tableProvider.config() .setHName("companyField.companyType") .setHWidth("bold") .setDName("companyTypeName") .setDAlign("text-center")); $scope.vm.tableConfigs.push($tableProvider.config() .setHName("companyField.parentSector") .setHWidth("bold") .setDName("parentSectorName") .setDAlign("text-center")); $scope.vm.tableConfigs.push($tableProvider.config() .setHName("companyField.childSector") .setHWidth("bold") .setDName("childSectorName") .setDAlign("text-center")); $scope.vm.tableConfigs.push($tableProvider.config() .setHName("companyField.region") .setHWidth("width-80-p bold") .setDName("regionName") .setDAlign("text-center")); $scope.vm.tableConfigs.push($tableProvider.config() .setHName("companyField.status") .setHWidth("bold") .setDName("statusName") .setDAlign("text-center")); } // 업체 관리 목록 조회 function getPageList(selectedPage) { if (selectedPage < 0) { selectedPage = 0; } // 현재 페이지 정보 var currentPage = 0; // 쿠키에 선택한 페이지 정보가 없으면 기본 페이지 정보 0 을 저장 if (angular.isUndefined(selectedPage) || selectedPage === "") { currentPage = $scope.vm.page.selectedPage; } else { currentPage = selectedPage; } // 업체 관리 검색 조건을 만든다. var conditions = $scope.fn.makeSearchConditions(); //테이블 리스트 데이터 컨트롤러 요청 CompanyField.find($resourceProvider.getContent(conditions, $resourceProvider.getPageContent(currentPage, $scope.vm.page.selectedPageRowCount))).then(function (result) { if (result.data.message.status === "success") { $scope.vm.page.selectedPage = currentPage + 1; result.data.data.forEach(function (data) { // 전화번호 조회시 하이픈 추가, 배열 형태 제거, 콤마 기준 줄바꿈 if (data.tel != null && data.tel !== "") { var tels = data.tel; if (data.tel.indexOf("[") !== -1){ tels = data.tel.substr(1, data.tel.indexOf("]")-1); } var telArr = tels.split(","); for (var i = 0; i < telArr.length; i++) { let hyphen = telArr[i].trim(); if (hyphen.length < 9) { telArr[i] = hyphen.replace(/^(\d{3,4})(\d{4})$/, "$1-$2"); } else { telArr[i] = hyphen.replace(/(^02.{0}|^01.{1}|[0-9]{3})([0-9]+)([0-9]{4})/, "$1-$2-$3"); } if (telArr[i] === "") { telArr.splice(i,1); } } data.tel = telArr.join(); data.tel = data.tel.replace(/\,/g,"
"); } // 이메일 조회시 배열 형태 제거 및 콤마 기준으로 줄바꿈 if ($rootScope.isDefined(data.email)) { if (data.email.indexOf("[") !== -1){ data.email = data.email.substr(1, data.email.indexOf("]")-1); } if (data.email.indexOf(",") !== -1) { data.email = data.email.replace(/\,/g,"
"); } } // url 조회시 콤마 기준으로 줄바꿈 if ($rootScope.isDefined(data.url)) { data.url = data.url.trim(); if (data.url.indexOf(",") !== -1) { data.url = data.url.replace(/\,/g,"
"); } } }); $scope.vm.responseData = result.data; } else { SweetAlert.error($filter("translate")("companyField.failedToSelectCompanyFieldFullList"), result.data.message.message); // 업체 관리 목록 조회 실패 } }); } // 업체 생성 function add() { $uibModal.open({ templateUrl : 'views/companyField/companyFieldAdd.html', size : "md", controller : 'companyFieldAddController', backdrop : 'static', resolve : { parameter : function () { return { }; } } }); } // 업체 수정 function modify(id) { $uibModal.open({ templateUrl : 'views/companyField/companyFieldModify.html', size : "md", controller : 'companyFieldModifyController', backdrop : 'static', resolve : { parameter : function () { return { id : id }; } } }); } // 엑셀 import 팝업 호출 function importExcel() { $uibModal.open({ templateUrl : 'views/companyField/companyFieldExcelImport.html', size : "lg", controller : 'companyFieldImportExcelController', backdrop : 'static' }); } // 업체 삭제 function removes() { var removeIds = []; angular.forEach($scope.vm.responseData.data, function (data) { if (data.checked) { removeIds.push(data.id); } }); if (removeIds.length < 1) { SweetAlert.swal({ title : $filter("translate")("common.checkPurgingTargets"), // 삭제 대상 확인 text : $filter("translate")("common.selectDestinationDeletion"), // 삭제 대상을 선택하세요. type : "warning" }); return; } // 삭제 알림 SweetAlert.swal({ title : $filter("translate")("companyField.delete"), // "업체 삭제" text : $filter("translate")("companyField.wantToDeleteSelectCompanyField"), // "선택한 부서를 삭제하겠습니까? 삭제된 부서는 복구할 수 없습니다." type : "warning", showCancelButton : true, confirmButtonColor : "#DD6B55", confirmButtonText : $filter("translate")("common.delete"), // 삭제 cancelButtonText : $filter("translate")("common.cancel"), // 취소 closeOnConfirm : false, closeOnCancel : true }, function (isConfirm) { SweetAlert.close(); if (isConfirm) { $rootScope.spinner = true; CompanyField.removes($resourceProvider.getContent( { removeIds : removeIds }, $resourceProvider.getPageContent(0, 0))).then(function (result) { if (result.data.message.status === "success") { $timeout(function () { SweetAlert.success($filter("translate")("common.deleteSucceeded"), result.data.message.message); // 삭제 성공 }, 100); $scope.fn.getPageList(0); } else { $timeout(function () { SweetAlert.error($filter("translate")("common.deleteFailed"), result.data.message.message); // 삭제 실패 }, 100); } $rootScope.spinner = false; }); } }); } $scope.fn.makeTableConfigs(); $scope.fn.getPageList(); } ]); } );