포탈사용자 일괄삭제 및 UI개선
This commit is contained in:
@@ -23,6 +23,44 @@
|
|||||||
var select_approvalStatus = "";
|
var select_approvalStatus = "";
|
||||||
var select_userStatus = "";
|
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) {
|
function getGridSelectText(key, value, data) {
|
||||||
if (!Array.isArray(data) || data.length === 0) {
|
if (!Array.isArray(data) || data.length === 0) {
|
||||||
return "";
|
return "";
|
||||||
@@ -119,6 +157,8 @@
|
|||||||
autowidth: true,
|
autowidth: true,
|
||||||
viewrecords: true,
|
viewrecords: true,
|
||||||
rowList: eval('[${rmsDefaultRowList}]'),
|
rowList: eval('[${rmsDefaultRowList}]'),
|
||||||
|
multiselect: true,
|
||||||
|
multiboxonly: true,
|
||||||
loadComplete: function (d) {
|
loadComplete: function (d) {
|
||||||
var records = $(this).getGridParam('records');
|
var records = $(this).getGridParam('records');
|
||||||
var page = $(this).getGridParam('page');
|
var page = $(this).getGridParam('page');
|
||||||
@@ -173,6 +213,10 @@
|
|||||||
goNav(url2);
|
goNav(url2);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
$("#btn_delete_selected").click(function () {
|
||||||
|
deleteSelectedUsers();
|
||||||
|
});
|
||||||
|
|
||||||
$("input[name^=search]").keydown(function (key) {
|
$("input[name^=search]").keydown(function (key) {
|
||||||
if (key.keyCode == 13) {
|
if (key.keyCode == 13) {
|
||||||
$("#btn_search").click();
|
$("#btn_search").click();
|
||||||
@@ -200,6 +244,9 @@
|
|||||||
<button type="button" class="cssbtn" id="btn_new" level="W"><i
|
<button type="button" class="cssbtn" id="btn_new" level="W"><i
|
||||||
class="material-icons">add</i> <%= localeMessage.getString("button.new") %>
|
class="material-icons">add</i> <%= localeMessage.getString("button.new") %>
|
||||||
</button>
|
</button>
|
||||||
|
<button type="button" class="cssbtn" id="btn_delete_selected" level="W" style="background-color: #dc3545; border-color: #dc3545; color: white;"><i
|
||||||
|
class="material-icons">delete_forever</i> 선택 삭제
|
||||||
|
</button>
|
||||||
<button type="button" class="cssbtn" id="btn_search" level="R"><i
|
<button type="button" class="cssbtn" id="btn_search" level="R"><i
|
||||||
class="material-icons">search</i> <%= localeMessage.getString("button.search") %>
|
class="material-icons">search</i> <%= localeMessage.getString("button.search") %>
|
||||||
</button>
|
</button>
|
||||||
|
|||||||
@@ -363,7 +363,7 @@
|
|||||||
} else {
|
} else {
|
||||||
$("#title").append(" 등록")
|
$("#title").append(" 등록")
|
||||||
$("#btn_modify").html('<i class="material-icons">save</i> <%= localeMessage.getString("button.register") %>');
|
$("#btn_modify").html('<i class="material-icons">save</i> <%= localeMessage.getString("button.register") %>');
|
||||||
$("#userStatus").val("ACTIVE");
|
$("#userStatus").val("READY");
|
||||||
$("#approvalStatus").val("COMPLETED");
|
$("#approvalStatus").val("COMPLETED");
|
||||||
$("#accountLockYn").val("N");
|
$("#accountLockYn").val("N");
|
||||||
$("#roleCode").val("ROLE_USER").trigger('change');
|
$("#roleCode").val("ROLE_USER").trigger('change');
|
||||||
@@ -645,9 +645,9 @@
|
|||||||
<th><%= getRequiredLabel(localeMessage.getString("portalUser.mobileNumber")) %>
|
<th><%= getRequiredLabel(localeMessage.getString("portalUser.mobileNumber")) %>
|
||||||
</th>
|
</th>
|
||||||
<td>
|
<td>
|
||||||
<div class="input-group" style="width: 60%; display: flex;">
|
<div class="input-group" style="width: 60%; display: flex; align-items: center; gap: 8px;">
|
||||||
<div class="select-style" style="width: 25%; display: inline-block;">
|
<div class="select-style" style="flex: 0 0 auto; width: 90px;">
|
||||||
<select id="mobilePrefix" style="padding-left: 10px;">
|
<select id="mobilePrefix" style="padding-left: 10px; width: 100%;">
|
||||||
<option value="010">010</option>
|
<option value="010">010</option>
|
||||||
<option value="011">011</option>
|
<option value="011">011</option>
|
||||||
<option value="016">016</option>
|
<option value="016">016</option>
|
||||||
@@ -655,10 +655,10 @@
|
|||||||
<option value="018">018</option>
|
<option value="018">018</option>
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
<span class="mx-2">-</span>
|
<span>-</span>
|
||||||
<input type="text" id="mobileMiddle" maxlength="4" style="width: 25%; text-align: center;"/>
|
<input type="text" id="mobileMiddle" maxlength="4" style="flex: 1 1 auto; min-width: 60px; text-align: center;"/>
|
||||||
<span class="mx-2">-</span>
|
<span>-</span>
|
||||||
<input type="text" id="mobileLast" maxlength="4" style="width: 25%; text-align: center;"/>
|
<input type="text" id="mobileLast" maxlength="4" style="flex: 1 1 auto; min-width: 60px; text-align: center;"/>
|
||||||
<input type="hidden" name="mobileNumber"/>
|
<input type="hidden" name="mobileNumber"/>
|
||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
|
|||||||
@@ -120,6 +120,32 @@ public class PortalUserManController extends BaseAnnotationController {
|
|||||||
return ResponseEntity.ok().build();
|
return ResponseEntity.ok().build();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@PostMapping(value = "/onl/apim/portaluser/portalUserMan.json", params = "cmd=DELETE_MULTIPLE")
|
||||||
|
public ResponseEntity<Map<String, Object>> deleteMultiple(String ids) {
|
||||||
|
Map<String, Object> 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")
|
@PostMapping(value = "/onl/apim/portaluser/portalUserMan.json", params = "cmd=CHECK_ID")
|
||||||
public ResponseEntity<Object> checkDuplicateId(String loginId) {
|
public ResponseEntity<Object> checkDuplicateId(String loginId) {
|
||||||
String result = portalUserManService.checkDuplicateId(loginId) ? "success" : "";
|
String result = portalUserManService.checkDuplicateId(loginId) ? "success" : "";
|
||||||
|
|||||||
Reference in New Issue
Block a user