10用户管理(Vue3+Spring Boot)

目录

  • [1. 功能描述](#1. 功能描述)
  • [2. 接口地址](#2. 接口地址)
  • 3.后台Java代码
  • 4.前端框架搭建:views/user添加UserManageVue组件
  • [5. api/user.js中写请求接口代码](#5. api/user.js中写请求接口代码)
  • [6 获取用户信息](#6 获取用户信息)
  • [7 删除用户](#7 删除用户)
  • [8 修改状态](#8 修改状态)
  • [9 效果演示](#9 效果演示)

1. 功能描述

用户管理界面,对用户进行查询、状态变更、删除。

2. 接口地址

### 获取用户列表
GET http://localhost:8082/user/allUser
### 修改用户状态
PUT http://localhost:8082/user/updateStatus
### 删除用户
DELETE http://localhost:8082/user/deleteUser

3.后台Java代码

java 复制代码
//   获取用户列表
    @GetMapping("/allUser")
    public Result getAllUser(){
//      查询所有用户角色为USER的用户信息
        QueryWrapper<User> queryWrapper = new QueryWrapper<>();
        queryWrapper.eq("user_role","USER");
//        条件查询
        List<User> users = iUserService.list(queryWrapper);
        return Result.success(users);
    }
java 复制代码
    //删除用户
    @DeleteMapping("/deleteUser")
    public Result removeUser(@RequestParam("userId") Integer userId){
            boolean result = iUserService.removeById(userId);
            if (result) {
                return Result.success("删除用户成功!");
            } else {
                return Result.error("删除失败,用户可能不存在!");
            }
    }
java 复制代码
 //管理员修改用户状态
    @PutMapping("/updateStatus")
    public Result updataUserStatus(@RequestBody User user) {
        UpdateWrapper<User> updateWrapper = new UpdateWrapper<>();
        updateWrapper.eq("user_id", user.getUserId()) // 使用目标用户 ID
                .set("user_status",user.getUserStatus());
        boolean result = iUserService.update(updateWrapper); // 调用 update 方法
        if (result) {
            return Result.success("状态重置");
        } else {
            return Result.error("修改失败,可能是其他问题!");
        }
    }

4.前端框架搭建:views/user添加UserManageVue组件

html 复制代码
<script setup>
import { ref, computed } from 'vue'
import { ElMessage, ElMessageBox } from 'element-plus'
import { Delete, RefreshRight } from '@element-plus/icons-vue'

// 用户表单数据模型
const userModel = ref({
    userId: '',
    userName: '',
    userEmail: '',
    userStatus: ''
})

// 表单引用
const formRef = ref(null)

// 用户列表数据模型
const users = ref([
    {
        "userId": 1,
        "userName": "张三",
        "userEmail": "zhangsan@example.com",
        "userStatus": '0'
    },
    {
        "userId": 2,
        "userName": "李四",
        "userEmail": "lisi@example.com",
        "userStatus": '1'
    },
    // 其他用户项...
])

// 搜索关键词
const searchKeyword = ref('')

// 表单验证规则
const rules = {
    userName: [{ required: true, message: '请输入用户名', trigger: 'blur' }],
    userEmail: [{ required: true, message: '请输入邮箱', trigger: 'blur' }, { type: 'email', message: '请输入正确的邮箱地址', trigger: 'blur' }]
}

// 控制抽屉是否显示
const visibleDrawer = ref(false)



// 获取用户列表
const getUsers = async () => {

}

// 初始化时获取用户列表
getUsers()

// 搜索用户
const searchUsers = () => {
    if (searchKeyword.value.trim() === '') {
        // 如果搜索关键词为空,则显示所有用户
        getUsers()
    } else {
        // 根据关键词筛选用户
        users.value = users.value.filter(user =>
            user.userName.includes(searchKeyword.value) ||
            user.userEmail.includes(searchKeyword.value)
        )
    }
}

// 重置搜索
const resetSearch = () => {
    searchKeyword.value = ''
    getUsers()
}


// 2、实现删除功能
const deleteUser = (userId) => {
    console.log("删除");
}

// 切换用户状态
const toggleUserStatus = (userId) => {
    console.log("切换状态");
}

</script>


<template>
    <el-card class="page-container">
        <!-- 搜索表单 -->
        <el-form inline>
            <el-form-item label="用户名/邮箱:">
                <el-input v-model="searchKeyword" placeholder="请输入用户名或邮箱"></el-input>
            </el-form-item>
            <el-form-item>
                <el-button type="primary" @click="searchUsers">搜索</el-button>
                <el-button @click="resetSearch">重置</el-button>
            </el-form-item>
        </el-form>
        <!-- 用户列表 -->
        <el-table :data="users" style="width: 100%" :default-sort="{ prop: 'userName', order: 'ascending' }">
            <el-table-column label="用户名" prop="userName" sortable></el-table-column>
            <el-table-column label="邮箱" prop="userEmail"></el-table-column>
            <el-table-column label="状态" prop="userStatus" sortable>
                <template #default="{ row }">
                    <el-switch v-model="row.userStatus" active-value="0" inactive-value="1" active-color="#13ce66"
                        inactive-color="#ff4949" @change="toggleUserStatus(row.userId)">
                        <template #active-value>已启用</template>
                        <template #inactive-value>已禁用</template>
                    </el-switch>
                </template>
            </el-table-column>
            <el-table-column label="操作" width="300">
                <template #default="{ row }">
                    <el-button :icon="Delete" circle plain type="danger" @click="deleteUser(row.userId)"></el-button>
                </template>
            </el-table-column>
        </el-table>
    </el-card>
</template>

<style scoped>
.page-container {
    padding: 20px;
}

.header {
    display: flex;
    justify-content: space-between;
    align-items: center;
}
</style>

初始效果如下:

5. api/user.js中写请求接口代码

javascript 复制代码
// 获取所有普通用户数据
export const userListService = () => {
    return request.get('/user/allUser')
}

// 修改用户状态
export const userStatusUpdateService = (usersDatas) => {
    return request.put('/user/updateStatus', usersDatas)
}

// 删除用户
export const userDeleteService = (userId) => {
    return request.delete('/user/deleteUser', { params: { userId: userId } })
}

6 获取用户信息

javascript 复制代码
// 导入userListService
import { userListService } from '@/api/user'
// 获取用户列表
const getUsers = async () => {
    // 这里可以调用后端API获取用户列表
    // 假设这里有一个返回用户列表的模拟函数
    const result = await userListService()
    users.value = result.data
}

// 初始化时获取用户列表
getUsers()

7 删除用户

javascript 复制代码
// 1、导入userDeleteService
import { userDeleteService } from '@/api/user'
// 2、实现删除功能
const deleteUser = async (userId) => {
    await ElMessageBox.confirm('确定要删除该用户吗?', '提示', {
        confirmButtonText: '确定',
        cancelButtonText: '取消',
        type: 'warning'
    }).then(() => {
        // 用户点击了确定
        // 提交删除请求
        userDeleteService(userId).then(result => {
            ElMessage.success(result.message ? result.message : '删除成功')
            getUsers()
        })
    })
}

8 修改状态

javascript 复制代码
// 调用接口
import { userStatusUpdateService } from '@/api/user'
// 切换用户状态
const toggleUserStatus = (userId) => {
    const user = users.value.find(u => u.userId == userId)
    // 这里可以调用后端API更新用户状态
    userStatusUpdateService(user).then(result => {
        ElMessage.success(result.message ? result.message : '状态更新成功')
        getUsers()
    }).catch(error => {
        ElMessage.error(error.message)
    });
}

9 效果演示


用户管理操作视频

相关推荐
何苏三月6 分钟前
设计模式 - 单例模式(懒汉式、饿汉式、静态内部类、枚举)
java·单例模式
Renas_TJOvO10 分钟前
排序算法汇总
java·数据结构·算法
秋恬意20 分钟前
Java 反射机制详解
java·开发语言
爱上语文28 分钟前
LeetCode每日一题
java·算法·leetcode
ღ᭄ꦿ࿐Never say never꧂36 分钟前
重生之我在Java世界------学工厂设计模式
java·设计模式·简单工厂模式·应用场景
尘浮生1 小时前
Java项目实战II基于Spring Boot的火锅店管理系统设计与实现(开发文档+数据库+源码)
java·开发语言·数据库·spring boot·后端·微信小程序·旅游
wrx繁星点点1 小时前
桥接模式:解耦抽象与实现的利器
android·java·开发语言·jvm·spring cloud·intellij-idea·桥接模式
羊小猪~~1 小时前
C/C++语言基础--C++模板与元编程系列二类模板、全特化、偏特化、编译模型简介、实现简单Vetctor等…………)
java·c语言·开发语言·c++·visual studio code·visual studio
l138494274511 小时前
C语言储存变量 java循环语句和循环跳转
java·c语言·开发语言·算法
码农白衣1 小时前
后端Java学习:springboot之文件上传(阿里云OSS存储)
spring boot·学习·阿里云