From fe65843f65a0fcc1c661330a95d92fff6e2946dc Mon Sep 17 00:00:00 2001 From: Rinjae Date: Sun, 18 Jan 2026 16:46:48 +0900 Subject: [PATCH] =?UTF-8?q?=ED=8F=AC=ED=83=88=EC=82=AC=EC=9A=A9=EC=9E=90?= =?UTF-8?q?=20=EC=9D=BC=EA=B4=84=EC=82=AD=EC=A0=9C=20=EB=B0=8F=20UI?= =?UTF-8?q?=EA=B0=9C=EC=84=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../jsp/onl/apim/portaluser/portalUserMan.jsp | 47 +++++++++++++++++++ .../apim/portaluser/portalUserManDetail.jsp | 16 +++---- .../portaluser/PortalUserManController.java | 26 ++++++++++ 3 files changed, 81 insertions(+), 8 deletions(-) diff --git a/WebContent/jsp/onl/apim/portaluser/portalUserMan.jsp b/WebContent/jsp/onl/apim/portaluser/portalUserMan.jsp index 35cadcc..7976913 100644 --- a/WebContent/jsp/onl/apim/portaluser/portalUserMan.jsp +++ b/WebContent/jsp/onl/apim/portaluser/portalUserMan.jsp @@ -23,6 +23,44 @@ var select_approvalStatus = ""; var select_userStatus = ""; + /* 선택된 사용자 일괄 삭제 */ + function deleteSelectedUsers() { + var selectedIds = $("#grid").jqGrid('getGridParam', 'selarrrow'); + + if (selectedIds.length === 0) { + alert("삭제할 사용자를 선택해주세요."); + return; + } + + if (!confirm("선택된 " + selectedIds.length + "명의 사용자를 삭제하시겠습니까?\n이 작업은 되돌릴 수 없습니다.")) { + return; + } + + $.ajax({ + type: "POST", + url: url, + dataType: "json", + data: { + cmd: 'DELETE_MULTIPLE', + ids: selectedIds.join(',') + }, + success: function (data) { + if (data.status === "success") { + alert(data.message || "선택된 사용자가 삭제되었습니다."); + $("#grid").trigger("reloadGrid"); + // 체크박스 초기화 + $("#grid").jqGrid('clearGridData', true); + $("#grid").trigger("reloadGrid"); + } else { + alert(data.message || "삭제 중 오류가 발생했습니다."); + } + }, + error: function (e) { + alert("오류: " + e.responseText); + } + }); + } + function getGridSelectText(key, value, data) { if (!Array.isArray(data) || data.length === 0) { return ""; @@ -119,6 +157,8 @@ autowidth: true, viewrecords: true, rowList: eval('[${rmsDefaultRowList}]'), + multiselect: true, + multiboxonly: true, loadComplete: function (d) { var records = $(this).getGridParam('records'); var page = $(this).getGridParam('page'); @@ -173,6 +213,10 @@ goNav(url2); }); + $("#btn_delete_selected").click(function () { + deleteSelectedUsers(); + }); + $("input[name^=search]").keydown(function (key) { if (key.keyCode == 13) { $("#btn_search").click(); @@ -200,6 +244,9 @@ + diff --git a/WebContent/jsp/onl/apim/portaluser/portalUserManDetail.jsp b/WebContent/jsp/onl/apim/portaluser/portalUserManDetail.jsp index 774dbb8..207e1f5 100644 --- a/WebContent/jsp/onl/apim/portaluser/portalUserManDetail.jsp +++ b/WebContent/jsp/onl/apim/portaluser/portalUserManDetail.jsp @@ -363,7 +363,7 @@ } else { $("#title").append(" 등록") $("#btn_modify").html('save <%= localeMessage.getString("button.register") %>'); - $("#userStatus").val("ACTIVE"); + $("#userStatus").val("READY"); $("#approvalStatus").val("COMPLETED"); $("#accountLockYn").val("N"); $("#roleCode").val("ROLE_USER").trigger('change'); @@ -645,9 +645,9 @@ <%= getRequiredLabel(localeMessage.getString("portalUser.mobileNumber")) %> -
-
- @@ -655,10 +655,10 @@
- - - - - - + - + + - +
diff --git a/src/main/java/com/eactive/eai/rms/onl/apim/portaluser/PortalUserManController.java b/src/main/java/com/eactive/eai/rms/onl/apim/portaluser/PortalUserManController.java index e739792..9ed9474 100644 --- a/src/main/java/com/eactive/eai/rms/onl/apim/portaluser/PortalUserManController.java +++ b/src/main/java/com/eactive/eai/rms/onl/apim/portaluser/PortalUserManController.java @@ -120,6 +120,32 @@ public class PortalUserManController extends BaseAnnotationController { return ResponseEntity.ok().build(); } + @PostMapping(value = "/onl/apim/portaluser/portalUserMan.json", params = "cmd=DELETE_MULTIPLE") + public ResponseEntity> deleteMultiple(String ids) { + Map resultMap = new HashMap<>(); + try { + if (StringUtils.isBlank(ids)) { + resultMap.put("status", "fail"); + resultMap.put("message", "삭제할 사용자를 선택해주세요."); + return ResponseEntity.ok(resultMap); + } + + String[] idArray = ids.split(","); + for (String id : idArray) { + if (StringUtils.isNotBlank(id.trim())) { + portalUserManService.removeUser(id.trim()); + } + } + + resultMap.put("status", "success"); + resultMap.put("message", idArray.length + "명의 사용자가 삭제되었습니다."); + } catch (Exception e) { + resultMap.put("status", "fail"); + resultMap.put("message", "삭제 중 오류가 발생했습니다: " + e.getMessage()); + } + return ResponseEntity.ok(resultMap); + } + @PostMapping(value = "/onl/apim/portaluser/portalUserMan.json", params = "cmd=CHECK_ID") public ResponseEntity checkDuplicateId(String loginId) { String result = portalUserManService.checkDuplicateId(loginId) ? "success" : "";