@@ -253,7 +253,8 @@ import RoleAPI from "@/api/system/role-api";
253253
254254import DeptTree from " ./components/DeptTree.vue" ;
255255import UserImport from " ./components/UserImport.vue" ;
256-
256+ import { useUserStore } from " @/store" ;
257+ const userStore = useUserStore ();
257258defineOptions ({
258259 name: " User" ,
259260 inheritAttrs: false ,
@@ -425,6 +426,33 @@ const handleSubmit = useDebounceFn(() => {
425426 });
426427}, 1000 );
427428
429+ /**
430+ * 检查是否删除当前登录用户
431+ * @param singleId 单个删除的用户ID
432+ * @param selectedIds 批量删除的用户ID数组
433+ * @param currentUserInfo 当前用户信息
434+ * @returns 是否包含当前用户
435+ */
436+ function isDeletingCurrentUser(
437+ singleId ? : number ,
438+ selectedIds : number [] = [],
439+ currentUserInfo ? : any
440+ ): boolean {
441+ if (! currentUserInfo ?.userId ) return false ;
442+
443+ // 单个删除检查
444+ if (singleId && singleId .toString () === currentUserInfo .userId ) {
445+ return true ;
446+ }
447+
448+ // 批量删除检查
449+ if (! singleId && selectedIds .length > 0 ) {
450+ return selectedIds .map (String ).includes (currentUserInfo .userId );
451+ }
452+
453+ return false ;
454+ }
455+
428456/**
429457 * 删除用户
430458 *
@@ -437,12 +465,19 @@ function handleDelete(id?: number) {
437465 return ;
438466 }
439467
468+ // 安全检查:防止删除当前登录用户
469+ const currentUserInfo = userStore .userInfo ;
470+ if (isDeletingCurrentUser (id , selectIds .value , currentUserInfo )) {
471+ ElMessage .error (" 不能删除当前登录用户" );
472+ return ;
473+ }
474+
440475 ElMessageBox .confirm (" 确认删除用户?" , " 警告" , {
441476 confirmButtonText: " 确定" ,
442477 cancelButtonText: " 取消" ,
443478 type: " warning" ,
444479 }).then (
445- function () {
480+ () => {
446481 loading .value = true ;
447482 UserAPI .deleteByIds (userIds )
448483 .then (() => {
@@ -451,7 +486,7 @@ function handleDelete(id?: number) {
451486 })
452487 .finally (() => (loading .value = false ));
453488 },
454- function () {
489+ () => {
455490 ElMessage .info (" 已取消删除" );
456491 }
457492 );
0 commit comments