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 效果演示


用户管理操作视频

相关推荐
深圳蔓延科技16 分钟前
Kafka的高性能之路
后端·kafka
Barcke18 分钟前
深入浅出 Spring WebFlux:从核心原理到深度实战
后端
JuiceFS18 分钟前
从 MLPerf Storage v2.0 看 AI 训练中的存储性能与扩展能力
运维·后端
大鸡腿同学20 分钟前
Think with a farmer's mindset
后端
Moonbit41 分钟前
用MoonBit开发一个C编译器
后端·编程语言·编译器
Reboot1 小时前
达梦数据库GROUP BY报错解决方法
后端
稻草人22222 小时前
java Excel 导出 ,如何实现八倍效率优化,以及代码分层,方法封装
后端·架构
渣哥2 小时前
原来 Java 里线程安全集合有这么多种
java
间彧2 小时前
Spring Boot集成Spring Security完整指南
java
掘金者阿豪2 小时前
打通KingbaseES与MyBatis:一篇详尽的Java数据持久化实践指南
前端·后端