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.教师管理模块的更多相关文章

  1. 循序渐进VUE+Element 前端应用开发(15)--- 用户管理模块的处理

    在前面随笔介绍了ABP+Vue前后端的整合处理,包括介绍了ABP的后端设计,以及前端对ABP接口API的ES6的封装,通过JS的继承类处理,极大减少了重复臃肿的代码,可以简化对后端API接口的封装,而 ...

  2. Vue+SpringBoot项目实战(一) 搭建环境

    GitHub 地址: https://github.com/dongfanger/sprint-backend https://github.com/dongfanger/sprint-fronten ...

  3. vue.js+element-ui

    git地址:https://github.com/jerry9022/LitAdmin vue.js+element-ui 做后台管理系统 太方便了

  4. Django_学生管理系统

    一. Django简易学生管理系统 1.在pycharm中创建工程student_manage_system,添加app:student_manage 2.配置静态文件:在工程项目目录下新建目录sta ...

  5. 循序渐进VUE+Element 前端应用开发(16)--- 组织机构和角色管理模块的处理

    在前面随笔<循序渐进VUE+Element 前端应用开发(15)--- 用户管理模块的处理>中介绍了用户管理模块的内容,包括用户列表的展示,各种查看.编辑.新增对话框的界面处理和后台数据处 ...

  6. SpringBoot + Vue + ElementUI 实现后台管理系统模板 -- 后端篇(五): 数据表设计、使用 jwt、redis、sms 工具类完善注册登录逻辑

    (1) 相关博文地址: SpringBoot + Vue + ElementUI 实现后台管理系统模板 -- 前端篇(一):搭建基本环境:https://www.cnblogs.com/l-y-h/p ...

  7. SpringBoot + Vue + ElementUI 实现后台管理系统模板 -- 后端篇(一): 搭建基本环境、整合 Swagger、MyBatisPlus、JSR303 以及国际化操作

    相关 (1) 相关博文地址: SpringBoot + Vue + ElementUI 实现后台管理系统模板 -- 前端篇(一):搭建基本环境:https://www.cnblogs.com/l-y- ...

  8. 新书上线:《Spring Boot+Spring Cloud+Vue+Element项目实战:手把手教你开发权限管理系统》,欢迎大家买回去垫椅子垫桌脚

    新书上线 大家好,笔者的新书<Spring Boot+Spring Cloud+Vue+Element项目实战:手把手教你开发权限管理系统>已上线,此书内容充实.材质优良,乃家中必备垫桌脚 ...

  9. Vue + Element-ui实现后台管理系统(4)---封装一个ECharts组件的一点思路

    封装一个ECharts组件的一点思路 有关后台管理系统之前写过三遍博客,看这篇之前最好先看下这三篇博客.另外这里只展示关键部分代码,项目代码放在github上: mall-manage-system ...

  10. Vue + Element-ui实现后台管理系统(2)---项目搭建 + ⾸⻚布局实现

    项目搭建 + ⾸⻚布局实现 上篇对该项目做了个总述 :Vue + Element-ui实现后台管理系统(1) --- 总述 这篇主要讲解 项目搭建 + 后台⾸⻚布局实现 : 整体效果 后台首页按布局一 ...

随机推荐

  1. [转帖]Linux权限详解(chmod、600、644、666、700、711、755、777、4755、6755、7755)

    https://www.cnblogs.com/monjeo/p/12191673.html 权限简介Linux系统上对文件的权限有着严格的控制,用于如果相对某个文件执行某种操作,必须具有对应的权限方 ...

  2. [转帖]​Linux开源存储漫谈(2)IO性能测试利器fio

    fio(Flexible I/O Tester)正是非常常用的文件系统和磁盘 I/O 性能基准测试工具.提供了大量的可定制化选项,可以用来测试,裸盘.一个单独的分区或者文件系统在各种场景下的 I/O ...

  3. 飞腾2000+银河麒麟v10安装redis的注意事项

    先说一下结论 无法复用ubuntu上面编译的二进制文件 无法直接使用docker官网下面的arm64的镜像运行 无法直接使用redis6.0.10最新版本编译运行 可以使用redis5.0.4 进行编 ...

  4. 全球 IPv4 耗尽,下个月开始收费!

    哈喽大家好,我是咸鱼 IPv4(Internet Protocol version 4)是互联网上使用最广泛的网络层协议之一,于1981年在 RFC 791 中发布,它定义了 32 位的IP地址结构和 ...

  5. vue3动态组件的展示

    需求描述 有些时候,我们需要做这样的处理. 点击A按钮的时候,出现组件A 点击B按钮的时候,出现组件B 点击C按钮的时候,出现组件C 这个时候,我们就可以使用动态组件了 动态组件 <templa ...

  6. gRPC with JWT

    在 gRPC 中使用 JWT(JSON Web Tokens)进行身份验证是一种常见的做法,它可以帮助你确保请求方的身份和权限.下面是一种使用 gRPC 和 JWT 进行身份验证的步骤: 生成和签发 ...

  7. Fabric-ca server端初始化过程源码分析

    本文从Fabric-ca源码入手,简单分析server启动时的过程.Fabric-ca源码可以从github.com下载,本文以v1.4.6为例进行简单分析. Fabric-ca是有go语言编写的,与 ...

  8. css自适应各种格式背景图

    body { position: relative; background-color: #eee; background-image: url(链接); background-size: 100%; ...

  9. 【动态内存】C语言动态内存管理及使用总结篇【初学者保姆级福利】

    动态内存管理及应用总结篇 一篇博客学好动态内存的管理和使用 这篇博客干货满满,建议收藏再看哦!! 求个赞求个赞求个赞求个赞 谢谢 先赞后看好习惯 打字不容易,这都是很用心做的,希望得到支持你 大家的点 ...

  10. Leetcode刷题第七天-回溯-哈希

    332:重新岸炮行程 链接:332. 重新安排行程 - 力扣(LeetCode) 机场字典:{起飞机场:[到达机场的列表]} 去重:到达机场列表,i>0时,当前机场和上一个机场相等,contin ...