Vue+SpringBoot+ElementUI实战学生管理系统-9.教师管理模块
1.章节介绍
前一篇介绍了班级管理模块,这一篇编写教师管理模块,需要的朋友可以拿去自己定制。:)
2.获取源码
源码是捐赠方式获取,详细请QQ联系我 :)!
3.实现效果
教师列表
修改教师
4.模块代码
页面布局
<template>
<div>
<!-- 面包屑导航区 -->
<el-breadcrumb separator-class="el-icon-arrow-right">
<el-breadcrumb-item>首页</el-breadcrumb-item>
<el-breadcrumb-item>教师管理</el-breadcrumb-item>
<el-breadcrumb-item>教师列表</el-breadcrumb-item>
</el-breadcrumb>
<!-- 卡片视图 -->
<el-card>
<!-- 搜索 添加 -->
<el-row :gutter="20">
<el-col :span="6">
<el-input placeholder="请输入教师姓名"
v-model="queryInfo.query"
clearable
@clear="getTeacherList">
<el-button slot="append"
icon="el-icon-search"
@click="getTeacherList"></el-button>
</el-input>
</el-col>
<el-col :span="4">
<el-button type="primary"
@click="addDialogVisible = true">添加教师</el-button>
</el-col>
</el-row>
<!-- 教师列表区域 -->
<el-table :data="teacherList"
border
stripe>
<!-- stripe: 斑马条纹
border:边框-->
<el-table-column type="index"
label="序号"></el-table-column>
<el-table-column prop="teacherNo"
label="教师编号"></el-table-column>
<el-table-column prop="teacherName"
label="教师姓名"></el-table-column>
<el-table-column prop="gender"
label="性别">
<template slot-scope="scope">
{{scope.row.gender == 'F' ? '女': '男'}}
</template>
</el-table-column>
<el-table-column prop="phone"
label="联系方式"></el-table-column>
<el-table-column prop="remark"
label="备注"></el-table-column>
<el-table-column label="操作">
<template slot-scope="scope">
<el-button type="primary"
icon="el-icon-edit"
size="mini"
circle
@click="showEditDialog(scope.row.id)"></el-button>
<el-button type="danger"
icon="el-icon-delete"
size="mini"
circle
@click="removeById(scope.row.id)"></el-button>
</template>
</el-table-column>
</el-table>
<!-- 分页区域 -->
<el-pagination @size-change="handleSizeChange"
@current-change="handleCurrentChange"
:current-page="queryInfo.pageNo"
:page-size="queryInfo.pageSize"
layout="total, prev, pager, next, jumper"
:total="total"></el-pagination>
</el-card>
<!-- 添加教师的对话框 -->
<el-dialog title="添加教师"
:visible.sync="addDialogVisible"
width="30%"
@close="addDialogClosed">
<!-- 内容主体 -->
<el-form :model="addForm"
ref="addFormRef"
:rules="addFormRules"
label-width="100px">
<el-form-item label="教师编码"
prop="teacherNo">
<el-input v-model="addForm.teacherNo"></el-input>
</el-form-item>
<el-form-item label="教师名称"
prop="teacherName">
<el-input v-model="addForm.teacherName"></el-input>
</el-form-item>
<el-form-item label="性别"
prop="gender">
<el-radio v-model="addForm.gender"
label="F">女</el-radio>
<el-radio v-model="addForm.gender"
label="M">男</el-radio>
</el-form-item>
<el-form-item label="联系方式"
prop="phone">
<el-input v-model="addForm.phone"></el-input>
</el-form-item>
<el-form-item label="备注"
prop="remark">
<el-input v-model="addForm.remark"></el-input>
</el-form-item>
</el-form>
<span slot="footer"
class="dialog-footer">
<el-button @click="addDialogVisible = false">取 消</el-button>
<el-button type="primary"
@click="add">确 定</el-button>
</span>
</el-dialog>
<!-- 修改教师的对话框 -->
<el-dialog title="修改教师信息"
:visible.sync="editDialogVisible"
width="30%"
@close="editDialogClosed">
<!-- 内容主体 -->
<el-form :model="editForm"
ref="editFormRef"
:rules="editFormRules"
label-width="70px">
<el-form-item label="教师编码">
<el-input v-model="editForm.teacherNo"></el-input>
</el-form-item>
<el-form-item label="教师名称">
<el-input v-model="editForm.teacherName"></el-input>
</el-form-item>
<!-- TODO -->
<el-form-item label="性别"
prop="gender">
<el-radio v-model="editForm.gender"
label="F">女</el-radio>
<el-radio v-model="editForm.gender"
label="M">男</el-radio>
</el-form-item>
<el-form-item label="联系方式">
<el-input v-model="editForm.phone"></el-input>
</el-form-item>
<el-form-item label="备注">
<el-input v-model="editForm.remark"></el-input>
</el-form-item>
</el-form>
<span slot="footer"
class="dialog-footer">
<el-button @click="editDialogVisible = false">取 消</el-button>
<el-button type="primary"
@click="editUser">确 定</el-button>
</span>
</el-dialog>
</div>
</template>
数据和事件
<script>
export default {
data() {
return {
// 院系列表
deptList: [],
// 获取教师列表查询参数对象
queryInfo: {
query: "",
// 当前页数
pageNo: 1,
// 每页显示多少数据
pageSize: 5,
},
teacherList: [],
total: 0,
// 添加教师对话框
addDialogVisible: false,
// 教师添加
addForm: {
teacherNo: "",
teacherName: "",
gender: "F",
phone: "",
remark: "",
},
// 教师添加表单验证规则
addFormRules: {
teacherNo: [
{ required: true, message: "请输入教师编号", trigger: "blur" },
{
min: 2,
max: 10,
message: "教师编号的长度在2~10个字",
trigger: "blur",
},
],
teacherName: [
{ required: true, message: "请输入教师姓名", trigger: "blur" },
{
min: 2,
max: 50,
message: "教师名称的长度在2~50个字",
trigger: "blur",
},
],
},
// 修改教师
editDialogVisible: false,
editForm: {},
// 编辑教师表单验证
editFormRules: {
teacherNo: [
{ required: true, message: "请输入教师编号", trigger: "blur" },
],
teacherName: [
{ required: true, message: "请输入教师姓名", trigger: "blur" },
],
},
};
},
created() {
this.getTeacherList();
},
methods: {
async getTeacherList() {
const { data: res } = await this.$http.get("teacher/list", {
params: this.queryInfo,
});
if (res.code !== 200) {
return this.$message.error("获取教师列表失败!");
}
this.teacherList = res.data.records;
this.total = res.data.total;
},
// 监听 pageSize改变的事件
handleSizeChange(newSize) {
// console.log(newSize)
this.queryInfo.pageSize = newSize;
this.getTeacherList();
},
// 监听 页码值 改变事件
handleCurrentChange(newSize) {
// console.log(newSize)
this.queryInfo.pageNo = newSize;
this.getTeacherList();
},
// 监听 添加教师对话框的关闭事件
addDialogClosed() {
this.$refs.addFormRef.resetFields();
},
// 添加教师
add() {
// 提交请求前,表单预验证
this.$refs.addFormRef.validate(async (valid) => {
// console.log(valid)
// 表单预校验失败
if (!valid) return;
const { data: res } = await this.$http.post(
"teacher/modify",
this.addForm
);
if (res.code !== 200) {
this.$message.error("添加教师失败!");
return;
}
this.$message.success("添加教师成功!");
// 隐藏添加教师对话框
this.addDialogVisible = false;
this.getTeacherList();
});
},
// 编辑教师信息
async showEditDialog(id) {
const { data: res } = await this.$http.get("teacher/" + id);
if (res.code !== 200) {
return this.$message.error("查询教师信息失败!");
}
this.editForm = res.data;
this.editDialogVisible = true;
},
// 监听修改教师对话框的关闭事件
editDialogClosed() {
this.$refs.editFormRef.resetFields();
},
// 修改教师信息
editUser() {
// 提交请求前,表单预验证
this.$refs.editFormRef.validate(async (valid) => {
// console.log(valid)
// 表单预校验失败
if (!valid) return;
const { data: res } = await this.$http.post("teacher/modify", {
id: this.editForm.id,
teacherNo: this.editForm.teacherNo,
teacherName: this.editForm.teacherName,
gender: this.editForm.gender,
});
if (res.code !== 200) {
this.$message.error("更新教师信息失败!");
}
// 隐藏添加教师对话框
this.editDialogVisible = false;
this.$message.success("更新教师信息成功!");
this.getTeacherList();
});
},
// 删除教师
async removeById(id) {
const confirmResult = await this.$confirm("确定删除该教师?", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning",
}).catch((err) => err);
// 点击确定 返回值为:confirm
// 点击取消 返回值为: cancel
if (confirmResult !== "confirm") {
return this.$message.info("已取消删除");
}
const { data: res } = await this.$http.post("teacher/remove/" + id);
if (res.code !== 200) return this.$message.error("删除教师失败!");
this.$message.success("删除教师成功!");
this.getTeacherList();
},
},
};
</script>
Vue+SpringBoot+ElementUI实战学生管理系统-9.教师管理模块的更多相关文章
- 循序渐进VUE+Element 前端应用开发(15)--- 用户管理模块的处理
在前面随笔介绍了ABP+Vue前后端的整合处理,包括介绍了ABP的后端设计,以及前端对ABP接口API的ES6的封装,通过JS的继承类处理,极大减少了重复臃肿的代码,可以简化对后端API接口的封装,而 ...
- Vue+SpringBoot项目实战(一) 搭建环境
GitHub 地址: https://github.com/dongfanger/sprint-backend https://github.com/dongfanger/sprint-fronten ...
- vue.js+element-ui
git地址:https://github.com/jerry9022/LitAdmin vue.js+element-ui 做后台管理系统 太方便了
- Django_学生管理系统
一. Django简易学生管理系统 1.在pycharm中创建工程student_manage_system,添加app:student_manage 2.配置静态文件:在工程项目目录下新建目录sta ...
- 循序渐进VUE+Element 前端应用开发(16)--- 组织机构和角色管理模块的处理
在前面随笔<循序渐进VUE+Element 前端应用开发(15)--- 用户管理模块的处理>中介绍了用户管理模块的内容,包括用户列表的展示,各种查看.编辑.新增对话框的界面处理和后台数据处 ...
- SpringBoot + Vue + ElementUI 实现后台管理系统模板 -- 后端篇(五): 数据表设计、使用 jwt、redis、sms 工具类完善注册登录逻辑
(1) 相关博文地址: SpringBoot + Vue + ElementUI 实现后台管理系统模板 -- 前端篇(一):搭建基本环境:https://www.cnblogs.com/l-y-h/p ...
- SpringBoot + Vue + ElementUI 实现后台管理系统模板 -- 后端篇(一): 搭建基本环境、整合 Swagger、MyBatisPlus、JSR303 以及国际化操作
相关 (1) 相关博文地址: SpringBoot + Vue + ElementUI 实现后台管理系统模板 -- 前端篇(一):搭建基本环境:https://www.cnblogs.com/l-y- ...
- 新书上线:《Spring Boot+Spring Cloud+Vue+Element项目实战:手把手教你开发权限管理系统》,欢迎大家买回去垫椅子垫桌脚
新书上线 大家好,笔者的新书<Spring Boot+Spring Cloud+Vue+Element项目实战:手把手教你开发权限管理系统>已上线,此书内容充实.材质优良,乃家中必备垫桌脚 ...
- Vue + Element-ui实现后台管理系统(4)---封装一个ECharts组件的一点思路
封装一个ECharts组件的一点思路 有关后台管理系统之前写过三遍博客,看这篇之前最好先看下这三篇博客.另外这里只展示关键部分代码,项目代码放在github上: mall-manage-system ...
- Vue + Element-ui实现后台管理系统(2)---项目搭建 + ⾸⻚布局实现
项目搭建 + ⾸⻚布局实现 上篇对该项目做了个总述 :Vue + Element-ui实现后台管理系统(1) --- 总述 这篇主要讲解 项目搭建 + 后台⾸⻚布局实现 : 整体效果 后台首页按布局一 ...
随机推荐
- 重写SpringCloudGateway路由查找算法,性能提升100倍!
如果你也在做SpringCloudGateway网关开发,希望这篇文章能给你带来一些启发 背景 先说背景,某油项目,通过SpringCloudGateway配置了1.6万个路由规则,实际接口调用过程中 ...
- 【转帖】调教LLaMA类模型没那么难,LoRA将模型微调缩减到几小时
https://www.thepaper.cn/newsDetail_forward_23250236 LoRA 微调方法,随着大模型的出现而走红. 最近几个月,ChatGPT 等一系列大语言模型(L ...
- nr_requests 以及 queue_depth的学习与了解
nr_requests 以及 queue_depth的学习与了解 背景 冯诺依曼的计算机体系结果里面 运算器,存储器是核心. 但是将核心的产生的结果推送出去的其实是IO IO虽然不是像运算器和存储器那 ...
- [转帖]QPS 最高提升 91% | 腾讯云 TKE 基于 Cilium eBPF 提升 k8s Service 性能
https://my.oschina.net/cncf/blog/5121393 朱瑜坚,腾讯云后台工程师,主要负责腾讯云 TKE 容器网络的构建和相关网络组件的设计.开发和维护工作.张浩,腾讯云 ...
- ubuntu18.04 安装wine以及添加mono和gecko打开简单.net应用的方法
1. 今天突然想试试能不能用ubuntu跑一下公司的.net的智能客户端(SmartClient). 想到的办法就是 安装wine 但是过程略坑..这里简单说一下总结之后的过程. 2. 第一步安装wi ...
- awk中的NR,FNR ,NF,$NF,RS,ORS,FS,OFS
awk中的NR,FNR ,NF,$NF,RS,ORS,FS,OFS https://www.cnblogs.com/zhangqingsh/archive/2013/04/24/3040801.htm ...
- 京东金融Android瘦身探索与实践
作者:京东科技 冯建华 一.背景 随着业务不断迭代更新,App的大小也在快速增加,2019年~2022年期间一度超过了117M,期间我们也做了部分优化如图1红色部分所示,但在做优化的同时面临着新的增量 ...
- Ant Design Vue中TreeSelect详解
<template> <a-tree-select v-model:value="value" style="width: 320px" :t ...
- 【笔记】VictoriaMetrics中,对大量的pull模式的targets进行分片
作者:张富春(ahfuzhang),转载时请注明作者和引用链接,谢谢! cnblogs博客 zhihu Github 公众号:一本正经的瞎扯 配置的方法请看这里:https://docs.victor ...
- 遇到一个bug,组件不更新内容
解决办法 当v-if的值发生变化时,组件都会被重新渲染一遍.因此,利用v-if指令的特性,可以达到强制刷新组件的目的. <template> <comp v-if="upd ...