学生管理系统Element UI版(二)

简介: 学生管理系统Element UI版

编辑学生(弹出框)


分析


  • 页面布局:
  • 添加一个“添加”按钮,点击可以显示弹出层拷贝添加的弹出框Dialog,且要求表单(班级列表、id、名称、年龄、生日、性别)
  • 提供student变量,用于表单数据的绑定
  • ajax操作
  • 查询班级列表
  • 添加按钮绑定事件,进行ajax提交(成功:刷新列表关闭弹出框,失败:错误提示,但不关闭弹出框)

页面布局


页面布局:

添加一个“添加”按钮,点击可以显示弹出层

image.png

拷贝添加的弹出框Dialog,且要求表单(班级列表、id、名称、年龄、生日、性别)

<!--添加的弹出框start--><el-dialogtitle="添加学生" :visible.sync="addStudentDialogVisible"><el-form :model="student"label-width="80px"><el-form-itemlabel="班级列表"><el-selectv-model="student.cid"placeholder="请选择班级"><el-optionlabel="区域一"value="shanghai"></el-option></el-select></el-form-item><el-form-itemlabel="id"><el-inputv-model="student.sid"></el-input></el-form-item><el-form-itemlabel="名称"><el-inputv-model="student.sname"></el-input></el-form-item><el-form-itemlabel="生日"><el-date-pickertype="date"placeholder="选择生日"v-model="student.birthday"style="width: 100%;"></el-date-picker></el-form-item><el-form-itemlabel="年龄"><el-inputv-model="student.age"></el-input></el-form-item><el-form-itemlabel="性别"><el-radio-groupv-model="student.gender"><el-radiolabel="1"></el-radio><el-radiolabel="0"></el-radio></el-radio-group></el-form-item></el-form><divslot="footer"class="dialog-footer"><el-button@click="addStudentDialogVisible = false"></el-button><el-buttontype="primary"@click="addStudentDialogVisible = false"></el-button></div></el-dialog><!--添加的弹出框end-->

image.png

添加:ajax操作


查询班级列表

image.png

添加按钮绑定事件,进行ajax提交(成功:刷新列表关闭弹出框,失败:错误提示,但不关闭弹出框)

image.png

image.png

<template><div><!--表单start--><el-form :inline="true" :model="studentVo"size="mini"><el-form-itemlabel="班级"><el-selectv-model="studentVo.cid"placeholder="请选择班级"clearable><el-optionv-for="(classes,index) in classesList" :key="index" :label="classes.cname" :value="classes.cid"></el-option></el-select></el-form-item><el-form-itemlabel="姓名"><el-inputv-model="studentVo.sname"placeholder="请输入姓名"clearable></el-input></el-form-item><el-form-itemlabel="年龄"><el-col :span="11"><el-inputv-model="studentVo.startAge"placeholder="请输入开始年龄"clearable></el-input></el-col><el-colclass="line" :span="2">-</el-col><el-col :span="11"><el-inputv-model="studentVo.endAge"placeholder="请输入结束年龄"clearable></el-input></el-col></el-form-item><el-form-item><el-buttontype="primary"@click="condition(1)">查询</el-button></el-form-item></el-form><!--表单end--><el-buttontype="primary"@click="openAddDialog">添加</el-button><!--添加的弹出框start--><el-dialogtitle="添加学生" :visible.sync="addStudentDialogVisible"><el-form :model="student"label-width="80px"><el-form-itemlabel="班级列表"><el-selectv-model="student.cid"placeholder="请选择班级"><el-optionv-for="(classes,index) in classesList" :key="index" :label="classes.cname" :value="classes.cid"></el-option></el-select></el-form-item><el-form-itemlabel="id"><el-inputv-model="student.sid"></el-input></el-form-item><el-form-itemlabel="名称"><el-inputv-model="student.sname"></el-input></el-form-item><el-form-itemlabel="生日"><el-date-pickertype="date"placeholder="选择生日"v-model="student.birthday"style="width: 100%;"></el-date-picker></el-form-item><el-form-itemlabel="年龄"><el-inputv-model="student.age"></el-input></el-form-item><el-form-itemlabel="性别"><el-radio-groupv-model="student.gender"><el-radiolabel="1"></el-radio><el-radiolabel="0"></el-radio></el-radio-group></el-form-item></el-form><divslot="footer"class="dialog-footer"><el-button@click="addStudentDialogVisible = false"></el-button><el-buttontype="primary"@click="addStudent"></el-button></div></el-dialog><!--添加的弹出框end--><!--表格start--><el-table      :data="studentPage.list"@selection-change="handleSelectionChange"style="width: 100%"><el-table-columntype="selection"width="55"></el-table-column><el-table-columnprop="sid"label="编号"width="180"></el-table-column><el-table-columnprop="sname"label="姓名"width="180"></el-table-column><el-table-columnprop="cid"label="班级"width="180"></el-table-column><el-table-columnprop="age"label="年龄"width="180"></el-table-column><el-table-columnprop="birthday"label="生日"width="180"></el-table-column><el-table-columnprop="gender"label="性别"width="180"><templateslot-scope="scope">          {{scope.row.gender==1?"男" : "女"}}
</template></el-table-column><el-table-columnlabel="操作"><templateslot-scope="scope"><el-buttonsize="mini">编辑</el-button><el-buttonsize="mini"type="danger">删除</el-button></template></el-table-column></el-table><!--表格end--><!--分页条start--><el-pagination@size-change="handleSizeChange"@current-change="handleCurrentChange"      :current-page="studentPage.pageNum"      :page-sizes="[1, 2, 3, 5, 10]"      :page-size="studentPage.pageSize"layout="total, sizes, prev, pager, next, jumper"      :total="studentPage.total"></el-pagination><!--分页条end--></div></template><script>// 导入axiosimportaxiosfrom'axios'exportdefault {
data() {
return {
studentVo: {    //条件查询      },
studentPage: {    //分页数据pageNum: 1,
pageSize: 3      },
addStudentDialogVisible: false,     //添加弹出框的控制变量student: {        //添加表单对象      },
classesList: [],  // 所有班级    }
  },
methods: {
asynccondition(num) {
if(num) {
this.studentPage.pageNum=num      }
// ajax查询varurl=`http://localhost:8888/student/condition/${this.studentPage.pageSize}/${this.studentPage.pageNum}`let {data:baseResult} =awaitaxios.post(url, this.studentVo)
// 保存结果this.studentPage=baseResult.data    },
handleSelectionChange(val) {
console.info('批量删除')
    },
handleSizeChange(val) {
console.log(`每页${val} `);
this.studentPage.pageSize=valthis.studentPage.pageNum=1// 重新开始this.condition()
    },
handleCurrentChange(val) {
console.log(`当前页: ${val}`);
this.studentPage.pageNum=val// 重新开始this.condition()
    },
asyncselectAllClasses() {
// ajax 查询所有的班级varurl=`http://localhost:8888/classes`let { data: baseResult } =awaitaxios.get(url)
// 保存结果this.classesList=baseResult.data    },
openAddDialog() {
// 打开弹出框this.addStudentDialogVisible=true// 清空表单数据this.student= {}
// 查询班级列表this.selectAllClasses()
    },
asyncaddStudent() {
// 添加学生ajaxvarurl=`http://localhost:8888/student/saveOrUpdate`let { data: baseResult } =awaitaxios.post(url, this.student)
// 处理结果if(baseResult.code==20000) {
// 成功:刷新页面,成功提示,关闭弹出框this.condition()
this.$message.success(baseResult.message)
this.addStudentDialogVisible=false      } else {
// 失败:失败提示this.$message.error(baseResult.message)
      }
    }
  },
mounted() {
// 查询班级this.selectAllClasses()
// 查询学生this.condition()
  },
}
</script><style></style>

修改:ajax操作


点击修改按钮,通过id查询详情,显示弹出框,并自动填充表单。

image.png

<template><div><!--表单start--><el-form :inline="true" :model="studentVo"size="mini"><el-form-itemlabel="班级"><el-selectv-model="studentVo.cid"placeholder="请选择班级"clearable><el-optionv-for="(classes,index) in classesList" :key="index" :label="classes.cname" :value="classes.cid"></el-option></el-select></el-form-item><el-form-itemlabel="姓名"><el-inputv-model="studentVo.sname"placeholder="请输入姓名"clearable></el-input></el-form-item><el-form-itemlabel="年龄"><el-col :span="11"><el-inputv-model="studentVo.startAge"placeholder="请输入开始年龄"clearable></el-input></el-col><el-colclass="line" :span="2">-</el-col><el-col :span="11"><el-inputv-model="studentVo.endAge"placeholder="请输入结束年龄"clearable></el-input></el-col></el-form-item><el-form-item><el-buttontype="primary"@click="condition(1)">查询</el-button></el-form-item></el-form><!--表单end--><el-buttontype="primary"@click="openAddDialog">添加</el-button><!--添加的弹出框start--><el-dialog :title="dialogTitle" :visible.sync="addStudentDialogVisible"><el-form :model="student"label-width="80px"><el-form-itemlabel="班级列表"><el-selectv-model="student.cid"placeholder="请选择班级"><el-optionv-for="(classes,index) in classesList" :key="index" :label="classes.cname" :value="classes.cid"></el-option></el-select></el-form-item><el-form-itemlabel="id"><el-inputv-model="student.sid"></el-input></el-form-item><el-form-itemlabel="名称"><el-inputv-model="student.sname"></el-input></el-form-item><el-form-itemlabel="生日"><el-date-pickertype="date"placeholder="选择生日"v-model="student.birthday"style="width: 100%;"></el-date-picker></el-form-item><el-form-itemlabel="年龄"><el-inputv-model="student.age"></el-input></el-form-item><el-form-itemlabel="性别"><el-radio-groupv-model="student.gender"><el-radiolabel="1"></el-radio><el-radiolabel="0"></el-radio></el-radio-group></el-form-item></el-form><divslot="footer"class="dialog-footer"><el-button@click="addStudentDialogVisible = false"></el-button><el-buttontype="primary"@click="addStudent"></el-button></div></el-dialog><!--添加的弹出框end--><!--表格start--><el-table      :data="studentPage.list"@selection-change="handleSelectionChange"style="width: 100%"><el-table-columntype="selection"width="55"></el-table-column><el-table-columnprop="sid"label="编号"width="180"></el-table-column><el-table-columnprop="sname"label="姓名"width="180"></el-table-column><el-table-columnprop="cid"label="班级"width="180"></el-table-column><el-table-columnprop="age"label="年龄"width="180"></el-table-column><el-table-columnprop="birthday"label="生日"width="180"></el-table-column><el-table-columnprop="gender"label="性别"width="180"><templateslot-scope="scope">          {{scope.row.gender==1?"男" : "女"}}
</template></el-table-column><el-table-columnlabel="操作"><templateslot-scope="scope"><el-buttonsize="mini"@click="openUpdateDialog(scope.row.sid)">编辑</el-button><el-buttonsize="mini"type="danger">删除</el-button></template></el-table-column></el-table><!--表格end--><!--分页条start--><el-pagination@size-change="handleSizeChange"@current-change="handleCurrentChange"      :current-page="studentPage.pageNum"      :page-sizes="[1, 2, 3, 5, 10]"      :page-size="studentPage.pageSize"layout="total, sizes, prev, pager, next, jumper"      :total="studentPage.total"></el-pagination><!--分页条end--></div></template><script>// 导入axiosimportaxiosfrom'axios'exportdefault {
data() {
return {
studentVo: {    //条件查询      },
studentPage: {    //分页数据pageNum: 1,
pageSize: 3      },
addStudentDialogVisible: false,     //添加弹出框的控制变量student: {        //添加表单对象      },
classesList: [],  // 所有班级dialogTitle: '',  // 弹出框的标题    }
  },
methods: {
asynccondition(num) {
if(num) {
this.studentPage.pageNum=num      }
// ajax查询varurl=`http://localhost:8888/student/condition/${this.studentPage.pageSize}/${this.studentPage.pageNum}`let {data:baseResult} =awaitaxios.post(url, this.studentVo)
// 保存结果this.studentPage=baseResult.data    },
handleSelectionChange(val) {
console.info('批量删除')
    },
handleSizeChange(val) {
console.log(`每页${val} `);
this.studentPage.pageSize=valthis.studentPage.pageNum=1// 重新开始this.condition()
    },
handleCurrentChange(val) {
console.log(`当前页: ${val}`);
this.studentPage.pageNum=val// 重新开始this.condition()
    },
asyncselectAllClasses() {
// ajax 查询所有的班级varurl=`http://localhost:8888/classes`let { data: baseResult } =awaitaxios.get(url)
// 保存结果this.classesList=baseResult.data    },
openAddDialog() {
// 设置标题this.dialogTitle='添加学生'// 打开弹出框this.addStudentDialogVisible=true// 清空表单数据this.student= {}
// 查询班级列表this.selectAllClasses()
    },
asyncopenUpdateDialog(sid) {
// 设置标题this.dialogTitle='修改学生'// 通过id查询详情varurl=`http://localhost:8888/student/${sid}`let { data: baseResult } =awaitaxios.get(url)
this.student=baseResult.data// 查询班级列表this.selectAllClasses()
// 打开弹出框this.addStudentDialogVisible=true    },
asyncaddStudent() {
// 添加学生ajaxvarurl=`http://localhost:8888/student/saveOrUpdate`let { data: baseResult } =awaitaxios.post(url, this.student)
// 处理结果if(baseResult.code==20000) {
// 成功:刷新页面,成功提示,关闭弹出框this.condition()
this.$message.success(baseResult.message)
this.addStudentDialogVisible=false      } else {
// 失败:失败提示this.$message.error(baseResult.message)
      }
    }
  },
mounted() {
// 查询班级this.selectAllClasses()
// 查询学生this.condition()
  },
}
</script><style></style>

源码获取


image.png

相关文章
|
2月前
|
API UED 容器
深入探索 Element UI:自定义滚动条与弹出层管理的技巧
在这篇博客中,我们将深入探讨 Element UI 中的自定义滚动条及弹出层管理技巧。文章详细介绍了 el-scrollbar 组件的使用和参数设置,以及 PopupManager 如何有效管理弹出层的 z-index。我们还将探讨如何实现灵活的全屏组件,利用 vue-popper 创建自定义弹出层,最后介绍 ClickOutside 指令的用法。这些高级技巧将帮助你提升 Element UI 应用程序的用户体验与交互灵活性。
227 1
深入探索 Element UI:自定义滚动条与弹出层管理的技巧
|
2月前
|
JavaScript 索引
Vue开发中Element UI/Plus使用指南:常见问题(如Missing required prop: “value“)及中文全局组件配置解决方案
Vue开发中Element UI/Plus使用指南:常见问题(如Missing required prop: “value“)及中文全局组件配置解决方案
129 0
|
2月前
|
机器学习/深度学习 数据可视化 计算机视觉
基于opencv的车牌识别系统(UI界面采用tkinter设计)
基于opencv的车牌识别系统(UI界面采用tkinter设计)
37 0
|
4月前
|
JavaScript
基于Element UI或Element Plus实现具有倒计时的Message消息提示
本文介绍了如何在Element UI或Element Plus框架中实现具有倒计时功能的消息提示组件,支持多次点击生成多个独立倒计时的消息提示,并提供了详细的实现代码和使用示例。
346 1
基于Element UI或Element Plus实现具有倒计时的Message消息提示
|
4月前
|
搜索推荐 数据库
最新UI六零导航系统源码 | 多模版全开源
使用PHP+MySql,增加后台管理 多模板选择,支持在后台切换模板 增加常用搜索引擎,如:知乎、哔哩哔哩、在线翻译等(支持自定义) 支持用户提交收录申请,地址:http://域名/apply 部分模板优化和增加部分功能,如返回顶部、获取输入框焦点、时间日期显示等
75 1
|
4月前
|
开发者 图形学 前端开发
绝招放送:彻底解锁Unity UI系统奥秘,五大步骤教你如何缔造令人惊叹的沉浸式游戏体验,从Canvas到动画,一步一个脚印走向大师级UI设计
【8月更文挑战第31天】随着游戏开发技术的进步,UI成为提升游戏体验的关键。本文探讨如何利用Unity的UI系统创建美观且功能丰富的界面,包括Canvas、UI元素及Event System的使用,并通过具体示例代码展示按钮点击事件及淡入淡出动画的实现过程,助力开发者打造沉浸式的游戏体验。
105 0
|
4月前
|
开发者 C# Android开发
明白吗?Xamarin与Native的终极对决:究竟哪种开发方式更适合您的项目需求,让我们一探究竟!
【8月更文挑战第31天】随着移动应用开发的普及,开发者面临多种技术选择。本文对比了跨平台解决方案Xamarin与原生开发方式的优势与劣势。Xamarin使用C#进行跨平台开发,代码复用率高,可大幅降低开发成本;但因基于抽象层,可能影响性能。原生开发则充分利用平台特性,提供最佳用户体验,但需维护多套代码库,增加工作量。开发者应根据项目需求、团队技能和预算综合考量,选择最适合的开发方式。
117 0
|
4月前
|
JavaScript 前端开发 开发者
决战前端之巅!Element UI与Vuetify谁才是Vue.js组件界的霸主?一场关于颜值与实力的较量!
【8月更文挑战第30天】本文对比了两款热门的Vue.js组件库——Element UI与Vuetify。Element UI由饿了么团队打造,提供多种高质量UI组件,设计简洁大方。Vuetify基于Material Design规范,支持Vue.js 2.0及3.0版本,具备前瞻性。两者均涵盖表单、导航、数据展示等组件,Element UI配置选项丰富,而Vuetify则提供了更深层的样式定制功能。开发者可根据项目需求及个人偏好选择合适的组件库。
288 0
|
4月前
|
JavaScript 开发者 UED
Vue.js组件库大对决:Element UI与Vuetify,开发者的罗密欧与朱丽叶!
【8月更文挑战第30天】Element UI和Vuetify是Vue.js开发中的热门组件库,前者简洁高效,后者遵循Material Design,国际化程度高。两者均提供丰富的组件支持,但Vuetify组件更多样,设计更灵活;Element UI在性能和中文支持上更优。文档方面,Element UI更直观易懂,而Vuetify配置灵活但学习成本稍高。选择时需综合考虑项目需求、团队背景及设计风格,以达到最佳开发效果。
197 0
|
15天前
|
搜索推荐 Android开发 开发者
探索安卓开发中的自定义视图:打造个性化UI组件
【10月更文挑战第39天】在安卓开发的世界中,自定义视图是实现独特界面设计的关键。本文将引导你理解自定义视图的概念、创建流程,以及如何通过它们增强应用的用户体验。我们将从基础出发,逐步深入,最终让你能够自信地设计和实现专属的UI组件。