一、新增 ---- 需求分析:

1. 点击 新增 按钮后,对话框形式弹出新增窗口

2. 输入教师信息后,点击 确定 提交表单数据;

二、新增窗口实现---模板

1. 在 src\views\teacher\index.vue 中分页区域的下方,新增对话框形式表单数据模板:

(el-dialog  title 窗口标题,visible.sync 是否弹出窗口 注意其中包含多行文本编辑框。 )

<!-- 弹出框 -->
<el-dialog title="收货地址" :visible.sync="dialogFormVisible"><el-form :model="form"><el-form-item label="活动名称" :label-width="formLabelWidth"><el-input v-model="form.name" autocomplete="off"></el-input></el-form-item><el-form-item label="活动区域" :label-width="formLabelWidth"><el-select v-model="form.region" placeholder="请选择活动区域"><el-option label="区域一" value="shanghai"></el-option><el-option label="区域二" value="beijing"></el-option></el-select></el-form-item></el-form><div slot="footer" class="dialog-footer"><el-button @click="dialogFormVisible = false">取 消</el-button><el-button type="primary" @click="dialogFormVisible = false">确 定</el-button></div>
</el-dialog>

2.更改一下HTML模板:

   <!-- 新增弹出框 --><!-- visible.sync 是否弹出窗口  el-dialog的width,代表弹出框的宽度--><el-dialog title="新增教师" :visible.sync="dialogFormVisible" width="40%"><!-- label-width:label的宽度 :inline="true":行内表单模式--><el-form :model="addForm" ref="addForm" :label-position="labelPosition" label-width="80px" :inline="true"><el-form-item label="工号" prop="jobnumber"><el-input v-model="addForm.jobnumber" autocomplete="off" class="popWidth"></el-input></el-form-item><el-form-item label="姓名" prop="name"><el-input v-model="addForm.name" autocomplete="off" class="popWidth"></el-input></el-form-item><el-form-item label="职务" prop="role"><el-select v-model="addForm.role" placeholder="请选择职务" class="popWidth"><el-option :key="index" v-for="(item, index) in roleOptions" :label="item.name" :value="item.type"></el-option></el-select></el-form-item><el-form-item label="入职时间" prop="entrydate"><el-date-picker type="date" style="width:250px" placeholder="选择日期" value-format="yyyy-MM-dd"v-model="addForm.entrydate"></el-date-picker></el-form-item><el-form-item label="电话" prop="phone"><el-input v-model="addForm.phone" autocomplete="off" class="popWidth"></el-input></el-form-item></el-form><div slot="footer" class="dialog-footer"><el-button @click="dialogFormVisible = false">取 消</el-button><el-button type="primary" @click="dialogFormVisible = false">确 定</el-button></div></el-dialog>

css部分:

<style scoped>
.popWidth {width: 250px;
}
</style>

3.在data里添加弹出框的数据:

    data() {return {// 教师列表数据tableData: [],//列表——教师列表数据// 分页currentPage: 2,//当前页数pageSize: 4,//每页显示条目个数??暂时不生效pageSizes: [5, 10, 15, 20],// 每页显示个数选择器的选项设置total: 0,// 搜索栏searchMap: {//搜索栏数据jobnumber: "",name: "",role: "",entrydate: ""},roleOptions,//简写形式,=>roleOptions:roleOptions// 新增弹出框dialogFormVisible: false,addForm: {jobnumber: "",name: "",role: "",entrydate: "",phone: ""},labelPosition: 'right',//label的对齐方式}},

4.添加个新增按钮,放在上面的重置按钮后就行:

<el-button type="primary" @click="onSubmit">查询</el-button>
<el-button @click="resetForm('searchForm')">重置</el-button>
<el-button type="text" @click="addMember">新增</el-button>

5.在点击新增的时候,让弹出框弹出,点击确定后,清空弹出框的内容:

// 新增教师
addMember() {this.dialogFormVisible = true        // 因为一上来,点击新增,代码就全都执行了,所以清空会报错,用this.$nextTick等DOM元素渲染        完,再去执行下面的回调函数// 延迟清空表单数据this.$nextTick(() => {console.log(this.$refs);this.$refs['addForm'].resetFields();})
},

三、新增---表单数据校验

1. 在新增窗口的 el-form 上绑定属性 :rules="rules"

 <el-form :model="addForm" ref="addForm" :rules="rules" :label-position="labelPosition" label-width="80px" :inline="true">

2. 在 data 选项中添加 rules 属性进行校验,对卡号,姓名、支付类型 校验

 rules: {//弹出框校验规则jobnumber: [{ required: true, message: "工号不能为空", trigger: "blur" }],name: [{ required: true, message: "电话号码不能为空", trigger: "blur" }],role: [{ required: true, message: "姓名不能为空", trigger: "blur" }],entrydate: [{ required: true, message: "入职时间不能为空", trigger: "blur" }],phone: [{ required: true, message: "请选择职务", trigger: "blur" }],},

四、表单数据提交

1.当点击新增窗口中的确认按钮时, 提交表单数据,后台API服务接口校验响应新增成功或失败。

点击弹出框的确定按钮时发生的函数:addDefineBtn,在方法中校验一下数据,弹出提示信息是否通过:

<div slot="footer" class="dialog-footer"><el-button @click="dialogFormVisible = false">取 消</el-button><el-button type="primary" @click="addDefineBtn("addForm")">确 定</el-button>
</div>
  addFormData(formName) {this.$refs[formName].validate((valid) => {if (valid) {alert("验证通过");this.dialogFormVisible = false;} else {alert("验证不通过");return false;}});},

2.nodejs 添加新增教师接口

我们新增数据要把数据存起来,然后在node文件的router.js中,写一个接口:

// 新增教师信息存储
router.post("/teacher", (req, res) => {console.log(req.body);let obj = {jobnumber: req.body.jobnumber,name: req.body.name,role: req.body.role,entrydate: req.body.entrydate,phone: req.body.phone}new Teacher(obj).save().then(function(data, err) {if (err) {return res.status(500).json({ //如果err,就是错误就是数据库中没有code: 3000,flag: false,message: "服务器后台错误"})}return res.status(200).json({"code": 2000,"flag": true,"message": "新增成功!",})})
})

3. src\api\teacher.js 中,添加调用新增接口的方法

export function addTeacher(data) { //分页return request({url: "/teacher",method: "post",data})
}

4.在 src\views\teacher\index.vue 中引入并在 addDefineBtn 方法中提交新增教师信息,更新列表,代码如下:

import { getListPage, addTeacher } from "@/api/teacher";
// 新增弹出框确定按钮addDefineBtn(formName) {this.$refs[formName].validate((valid) => {if (valid) {addTeacher(this.addForm).then(res => {if (res.data.flag) {this.ListPage()this.dialogFormVisible = false;}}).catch(err => {console.log(err);})} else {alert("验证不通过");return false;}});},

5.新增的功能写完了。

五、修改-需求分析

1.当点击 编辑 按钮后,弹出编辑窗口,并查询出信息渲染。修改后点击确定 提交修改数据。

六、修改-实现

1.当点击 编辑 按钮后,弹出编辑窗口,在编辑方法里调用弹出框函数:

  handleEdit(index, row) {// console.log(index, row);this.addMember();},

2.编辑完之后,也要把编辑后的数据存储起来,先要去查询数据,通过ID,所以先去node服务器(也就是node文件夹)在router.js中写一个接口

// 教师编辑
router.get("/teacher", (req, res) => {Teacher.findById(req.query.id).then((data, err) => {if (err) {return res.status(500).json({ //如果err,就是错误就是数据库中没有code: 3000,flag: false,message: "服务器后台错误"})}return res.status(200).json({"code": 2000,"flag": true,"message": "根据ID查找成功!","data": data})})
})

3.为了拿到ID通过scope,在教师组件(teacher文件下的index.vue文件)中,在编辑点击事件中,传参数ID:

<el-button size="mini" @click="handleEdit(scope.row._id)">编辑</el-button>

4.然后在data中把数据创建出来,在pojo里添加 id: null,

addForm: {id: null,jobnumber: "",name: "",role: "",entrydate: "",phone: "",},

5. Api 调用接口, 在src\api\teacher.js 中,添加ID查询方法 getIdInfo

export function getIdInfo(id) { //根据id去查询教师信息return request({url: "/teacher?id=" + id,method: "get",})
}

6.在 src\views\teacher\index.vue 中的 handleEdit 方法做如下修改:

 // 编辑
handleEdit(id) {// 让弹框出现this.addMember()getIdInfo(id).then(res => {if (res.data.flag) {this.addForm = res.data.data;}}).catch(err => {console.log(err);})
},

7.现在完成点击编辑,数据渲染在弹出框上,接下来要把编辑完的数据,发送给后台服务器,再由后台服务器 做些处理,存到数据库当中,再在页面中显示出来

先去服务器,把接口写出来:

// 教师编辑(更新操作)
router.put("/teacher", (req, res) => {let id = req.body._id //具体哪一条数据Teacher.findByIdAndUpdate(id, req.body).then((data, err) => {// console.log('-------', data, err);if (err) {return res.status(500).json({ //如果err,就是错误就是数据库中没有code: 3000,flag: false,message: "服务器后台错误"})}return res.status(200).json({"code": 2000,"flag": true,"message": "修改教师信息成功!",})})
})

在src\api\teacher.js 中,添加ID更新方法 update

export function update(data) { //编辑更新教师信息return request({url: "/teacher",method: "put",data})
}}

8.点击编辑的确定的时候,触发更新数据update,在点击确定时在创建一个函数,用三元表达式决定是触发编辑函数还是新增函数:

<div slot="footer" class="dialog-footer"><el-button @click="dialogFormVisible = false">取 消</el-button><el-button type="primary" @click="addForm.id === null ? addDefineBtn('addForm') :         editDefineBtn('addForm')">确定</el-button>
</div>>

9.addForm在编辑的函数里能给他重新赋值,也就是说没点击编辑的时候,addForm中的ID值一直是null,点击确定的时候,相当于新增操作,然后再次点击编辑的时候就有这个ID值了,有ID值了就相应的走后面的方法编辑函数了:

  // 编辑弹出框确定按钮editDefineBtn(formName) {this.$refs[formName].validate((valid) => {if (valid) {update(this.addForm).then(res => {if (res.data.flag) {this.ListPage()this.dialogFormVisible = false;this.addForm.id = null;for (const key in this.addForm) {if (key !== "id") {this.addForm[key] = "";}}}}).catch(err => {console.log(err);})} else {alert("验证不通过");return false;}});},

要记住引入哈:

import { getListPage, addTeacher, getIdInfo, update } from "@/api/teacher";

10.现在编辑操作完事了。

七、 教师管理-删除---需求分析

1.当点击删除按钮后, 弹出提示框,点击确定后,执行删除并刷新列表数据

八、nodejs添加删除接口

1.通过ID删除:

// 教师删除
router.delete("/teacher", (req, res) => {// console.log(req.body);Teacher.findByIdAndRemove(req.body.id).then((data, err) => {if (err) {return res.status(500).json({ //如果err,就是错误就是数据库中没有code: 3000,flag: false,message: "服务器后台错误"})}return res.status(200).json({"code": 2000,"flag": true,"message": "删除教师信息成功!",})})
})

2. Api 调用接口,src\api\teacher.js 导出的默认对象中,添加 删除方法

export function delInfo(id) { //删除教师信息return request({url: "/teacher",method: "delete",data: {id}})
}

3.在 src\views\teacher\index.vue 中的删除方法做如下修改:

<el-button size="mini" type="danger" @click="handleDelete(scope.row._id)">删除</el-button>
import { getListPage, addTeacher, getIdInfo, update, delInfo } from "@/api/teacher";
        // 删除handleDelete(id) {this.$confirm("是否要删除当前数据, 是否继续?", "提示", {confirmButtonText: "确定",cancelButtonText: "取消",type: "warning",}).then(() => {delInfo(id).then((res) => {this.$message({type: "success",message: res.data.message,});if (res.data.flag) {this.ListPage();}})}).catch(() => {this.$message({type: "info",message: "已取消删除",});});},

4.删除操作完成!

七、教师管理-新增、修改、删除相关推荐

  1. delphi百度人脸搜索(支持人脸搜索、人脸库新增修改删除查询)

    下载链接:https://download.csdn.net/download/liushenglin123/12550077 [delphi百度人脸搜索]支持人脸搜索.人脸库新增修改删除查询

  2. sharepoint 2016 学习系列篇(14)-自定义列表应用篇-(3)列表数据的新增,修改,删除操作

    前面添加完列表的字段之后,接下来介绍列表数据的新增,修改,删除操作,不需要开发,就能实现数据的新增,修改,删除等操作. 重新返回到列表的http://192.168.1.73:7003/Lists/U ...

  3. php添加导航和删除导航,新增/修改/删除ECSHOP后台左侧导航菜单

    ECSHOP后台有许多管理菜单,是否有心想将一些不用的菜单删除呢,是否想增加或者修改菜单名称呢. 通过以下方法可以实现: 例如:我们要在后台新增一个菜单分类项"APP管理",再增加 ...

  4. 生产订单组件新增 修改 删除

    如果CO_XT_COMPONENT_ADD缺少需要的字段 可以拷贝出来, 在ZCO_XT_COMPONENT_ADD 添加字段例如:I_TEST 和 I_TESTX 或者memory id传值 在22 ...

  5. MYSQL 新增 修改 删除字段

    新增字段 ALTER TABLE <表名> ADD <字段名><数据类型>[约束条件] COMMENT <字段注释> AFTER <指定插入某字段 ...

  6. ORACLE 授权 新增 修改 删除 注释 重命名 表字段 表

    1.增加新字段 alter table table_name add (name varchar(20) default '',age int default 18); 2.修改表字段 2.1字段属性 ...

  7. Oracle触发器(当A表新增/修改/删除时,同步数据到B表)

    一张班级表class有以下字段 id.class_id.class_name 一张学生表student有以下字段 id.student_name.class_id 班级表与学生表的关系是一对多 一个班 ...

  8. MySQL进阶11--DDL数据库定义语言--库创建/修改/删除--表的创建/修改/删除/复制

    /*进阶 11 DDL 数据库定义语言库和表的管理一:库的管理:创建/修改/删除二:表的管理:创建/修改/删除创建: CREATE DATABASE [IF NOT EXISTS] 库名;修改: al ...

  9. 如何修改DynEd的学生记录服务器,DynEd教师管理端操作文档..docx

    DynEd教师管理端操作文档. DynEd教师管理端Records Manager操作文档DynEd教学理念语言是一种技能传统的英语教学太过注重读写,而疏于听说能力的发展.学生花费了大量的时间来背单词 ...

最新文章

  1. [C] 图的深度优先遍历
  2. 【 Vivado 】Performing System-Level Design Entry(总览)
  3. 汇编语言--CPU对存储器的读写
  4. 但是尚未从池中获取连接_SQLServer超时时间已到,但是尚未从池中获取连接
  5. 男性护肤热潮难以孕育下一个“完美日记”?
  6. Linux redhat下安装swftools(转载后修改)
  7. 怎么用计算机知道别人手机密码,怎样才能知道别人家的wifi密码
  8. Oracle:时间字段模糊查询
  9. Storm系列(四)Topology提交校验过程
  10. 迭代器协议、斐波那契数列
  11. 天梯赛 L2-011. (二叉树) 玩转二叉树
  12. 零一块学计算机二级题库,2017年计算机二级office题库及答案
  13. 应用Matlab小波变换工具箱进行图像压缩
  14. 把照片改成指定像素基于PS(证件照修改为制定像素大小)
  15. Centos8安装wordpress
  16. php繁体转为简体的函数,繁体中文转换为简体中文的PHP函数
  17. CyberArk被评为2020年Gartner特权访问管理魔力象限的领导者
  18. 遗传算法的交叉变异操作杂记
  19. React报错之React hook ‘useState‘ cannot be called in a class component
  20. FAT32转换为NTFS(无损数据转换不格式化,不损坏数据

热门文章

  1. MySQL 数据库约束、聚合查询、多表查询
  2. Huawei Atlas 200 DK使用教程——最全的教程之一
  3. 讲解喷涂机器人的特点
  4. VUE通用后台管理系统(一)登录
  5. 商机来了!日本市场Starday跨境电商迎来发展新阶段!
  6. 新手如何自学python?
  7. win11系统右键菜单修改win10风格 Win11右键菜单修改成win10教程
  8. 2023 女神猛将传3D卡通竖版三国卡牌回合类手游Win服务端源码
  9. 【总结】2014新生暑假个人排位赛02
  10. C语言while循环和do while循环详解