学生管理系统-03项目案例(3)

这篇具有很好参考价值的文章主要介绍了学生管理系统-03项目案例(3)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、用户列表

1、编写api接口
//导入封装后的axios
import {instance} from '@/util/request'
export default{
   getUsers:params=>instance.get('/users/getUsers',{params})
}
2、表格渲染
<template>
  <el-card>
    <!-- 
            当el-table元素中注入data对象数组后,
            在el-table-column中用prop属性来对应对象中的键名即可填入数据,
            用label属性来定义表格的列名。可以使用width属性来定义列宽。
         -->
    <el-table :data="list" stripe border height="600">
      <el-table-column prop="username" label="用户名" align="center" />
      <el-table-column prop="phone" label="电话" align="center"/>
      <el-table-column prop="email" label="邮箱" align="center"/>
      <el-table-column prop="auth" label="角色" align="center">
          <template slot-scope="scope">
            <el-tag :type="scope.row.auth==1?'primary':'success'">
                 {{scope.row.auth==1?"超级管理员":scope.row.auth==2?"普通管理员":""}}
            </el-tag>
          </template>
      </el-table-column>
      <el-table-column prop="image" label="头像" align="center">
            <template slot-scope="scope">
                <el-avatar :size="50" :src="scope.row.image"></el-avatar>
            </template>
      </el-table-column>
      <el-table-column label="操作" align="center">
           <template slot-scope="scope">
                <el-button type="primary" size="mini" icon="el-icon-edit">编辑</el-button>
                <el-button type="danger" size="mini" icon="el-icon-delete">删除</el-button>
           </template>
      </el-table-column>
    </el-table>
  </el-card>
</template>
​
<script>
export default {
  data() {
    return {
      list: [],
      total: 0,
    };
  },
  methods: {
    async getUsers() {
      const result = await this.$api.users.getUsers();
      console.log("result", result.data);
      this.list = result.data.result;
      this.total = result.data.total;
    },
  },
  created() {
    this.getUsers();
  },
};
</script>
​
<style>
</style>
3、分页
 <!-- 分页区域 -->
     <el-pagination
       background
       layout="sizes, prev, pager, next, jumper, ->, total, slot"
      :total="total"
      :page-size="query.pageSize"
      :current-page="query.currentPage"
      :page-sizes="[5,10,15,20]"
      @size-change="changePageSize"
      @current-change="changeCurrentPage">
     </el-pagination>
export default {
  data() {
    return {
      list: [],
      total: 0,
      query:{
        pageSize:5,
        currentPage:1
      }
    };
  },
  methods: {
    async getUsers() {
      const result = await this.$api.users.getUsers(this.query);
      console.log("result", result.data);
      this.list = result.data.result;
      this.total = result.data.total;
    },
    changePageSize(args){
      this.query.pageSize=args
      this.getUsers()
    },
    changeCurrentPage(args){
       this.query.currentPage=args
       this.getUsers()
    }
  },
  created() {
    this.getUsers();
  },
};
4、搜索功能
  • 首先在data中的query对象中添加type和value属性

export default {
  data() {
    return {
      query:{
        type:'',
        value:'',
        pageSize:5,
        currentPage:1
      }
    };
  },
};
  • 页面中进行布局

<el-form :inline="true">
        <el-form-item>
            <el-select placeholder="请选择类型" v-model="query.type">
                <el-option label="用户名" value="username"></el-option>
                <el-option label="手机号" value="phone"></el-option>
                <el-option label="邮箱" value="email"></el-option>
            </el-select>
        </el-form-item>
        <el-form-item>
            <el-input placeholder="请输入值" v-model="query.value"></el-input>
        </el-form-item>
        <el-form-item>
             <el-button icon="el-icon-search" type="primary" @click="getUsers">搜索</el-button>
        </el-form-item>
    </el-form>
5、注册

6、修改用户
  • 在api接口中编写修改方法

import {instance} from '@/util/request'
export default{
   updateUsers:data=>instance.put('/users/updateUsers',data)
}
  • 为编辑按钮绑定事件

<template slot-scope="scope">
       <el-button type="primary" size="mini" icon="el-icon-edit" @click="updateUser(scope)">编辑</el-button>     
</template>
  • 在data中定义

data(){
    return{
      updateDialogVisible:false,
      updateUserItem:{
        username:'',
        auth:1
      }
    }
}
  • 在methods中定义一个修改方法

methods:{
    async updateUserApi(){
      console.log('修改后的数据',this.updateUserItem);
      const result=await this.$api.users.updateUsers(this.updateUserItem)
      console.log('resultss',result);
      if(result.code){
        this.$message.success(result.message)
        //模态框关闭
        this.updateDialogVisible=false
      }
    }
}
  • 使用深浅拷贝解决修改中的一个问题

如上程序有一个问题,就是当修改的时候,在未点击确认按钮之前,当文本框中的内容变化,table表格中对应的行也在变化,页面刷新后数据又还原了,实际上这样是有问题的,解决方案就是对数据进行深拷贝

methods:{
    updateUser(args){
      //对数据进行深拷贝
      this.updateUserItem={...args.row}
      this.updateDialogVisible=true
    },
    async updateUserApi(){
      const result=await this.$api.users.updateUsers(this.updateUserItem)
      if(result.code){
        this.$message.success(result.message)
        //重新渲染列表页面
        this.getUsers()
        //模态框关闭
        this.updateDialogVisible=false
      }
    }
}

二、学员管理

1、增加学员
1.1、编写api接口
  • 首先在api/modules文件夹下创建students.js文件,在该文件中编写增加的方法

import {instance} from '@/util/request'
export default{
    addStudents:data=>instance.post('/students/addStudents',data)
}
  • 在api文件下的index.js中对studnets模块进行汇总

import users from "./modules/users";
import students from "./modules/students";
export default{
    users,students
}
1.2、获取专业信息
  • 首先在api/modules文件夹下新建subjects.js文件,在该文件下定义查询专业的方法

import {instance} from '@/util/request'
export default{
    getSubjects:params=>instance.get("/subjects/getSubjects",{params})
}
  • 然后在api/index.js中进行汇总

import users from "./modules/users";
import students from "./modules/students";
import subjects from "./modules/subjects";
export default{
    users,students,subjects
}
  • 在studentList.vue组件中获取所有的专业并绑定到下拉列表中

export default {
    data(){
        return{
            addStudentDialogVisible:false,
            subjectsAllList:[]
        }
    },
    methods:{
        openAddDialog(){
            this.addStudentDialogVisible=true
        },
        handleCloseAddStudentDialog(){
            this.addStudentDialogVisible=false
        },
        //获取所有的专业
        async getAllSubjects(){
            const result=await this.$api.subjects.getSubjects()
            console.log('所有专业',result.data.result);
            this.subjectsAllList=result.data.result
        }
    },
    created(){
        this.getAllSubjects()
    }
}
<el-form-item label="专业">
   <el-select>
     <el-option v-for="item in subjectsAllList" :key="item._id" :label="item.name" :value="item._id"></el-option>
   </el-select>
</el-form-item>
1.3、通过专业获取班级信息

这里通过watch监听器来完成文章来源地址https://www.toymoban.com/news/detail-606466.html

watch:{
        'addStudentItem.subjectsId':{
            handler:async function(newVal){
                let result=await this.$api.classes.getClassesBySubjectsId(newVal)
          
                this.classesBySubjectList=result.data.result
                this.addStudentItem.classesId=""
            }
        }
    }
1.4、上传图片
<el-upload
        class="avatar-uploader"
        action="http://www.zhaijizhe.cn:3005/images/uploadImages"
        :show-file-list="false"
        :on-success="handleAvatarSuccess"
        :before-upload="beforeAvatarUpload">
        <img v-if="addStudentItem.image" :src="addStudentItem.image" class="avatar">
         <i v-else class="el-icon-plus avatar-uploader-icon"></i>
 </el-upload>
 methods:{
        handleAvatarSuccess(args){
            console.log('args',args);
           this.addStudentItem.image=`http://www.zhaijizhe.cn:3005${args.data[0]}`
           
        },
        beforeAvatarUpload(file){
            const isJPG = file.type === 'image/jpeg';
            const isLt2M = file.size / 1024 / 1024 < 2;

            if (!isJPG) {
            this.$message.error('上传头像图片只能是 JPG 格式!');
            }
            if (!isLt2M) {
            this.$message.error('上传头像图片大小不能超过 2MB!');
            }
            return isJPG && isLt2M;
        }
    },
1.5、增加学生
 methods:{
        async addStudentApi(){
            // console.log('学生对象',this.addStudentItem);
            const result=await this.$api.students.addStudents(this.addStudentItem)
            if(result.code){
                this.$message.success(result.message)
                //将表单中的数据清空
                this.addStudentItem.name=""
                this.addStudentItem.age=""
                this.addStudentItem.gender=""
                this.addStudentItem.subjectsId=""
                this.addStudentItem.classesId=""
                this.addStudentItem.image=""
                this.addStudentDialogVisible=false
            }
        }
   }

到了这里,关于学生管理系统-03项目案例(3)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【项目案例】前后端分离项目 【Web图书管理系统 】SpringBoot + Vue + Element UI + Mysql

    👉 博主介绍 : 博主从事应用安全和大数据领域,有8年研发经验,5年面试官经验,Java技术专家,WEB架构师,阿里云专家博主,华为云云享专家,51CTO 专家博主 Java知识图谱点击链接: 体系化学习Java(Java面试专题) 💕💕 感兴趣的同学可以收藏关注下 , 不然下次找不到哟

    2024年02月07日
    浏览(51)
  • 【项目案例】前后端分离项目 【中小企业办公自动化管理系统 】SpringBoot + Vue + Element UI + Mysql

    👉 博主介绍 : 博主从事应用安全和大数据领域,有8年研发经验,5年面试官经验,Java技术专家,WEB架构师,阿里云专家博主,华为云云享专家,51CTO 专家博主 Java知识图谱点击链接: 体系化学习Java(Java面试专题) 💕💕 感兴趣的同学可以收藏关注下 , 不然下次找不到哟

    2024年02月14日
    浏览(50)
  • Python学生通讯录管理系统案例(文件版)

    目录 1.打印输出学生通讯录管理系统的菜单 2.接收用户从键盘输入的选择序号 3.根据输入的选择序号,判断并执行不同的功能 注意:本例中,要想保存所以学生的通讯信息,需要用到字典。 1.打印输出学生通讯录管理系统的菜单 首先我们先定义一个showMenu()函数,实现打印输

    2024年02月08日
    浏览(49)
  • html+css+js 学生信息管理系统

    需求:Web前端开发技术完成管理系统后台管理功能,主要包括用户登录、系统主界面(要求直接跳转到用户管理界面,可选做一个系统后台管理主界面,用户管理作为主界面下的某个子功能,)并实现一个具体功能增、删、改的界面设计。 1. 用户登录 输入账号、密码。如果账号

    2023年04月11日
    浏览(41)
  • Java连接数据库(学生管理系统案例,可以实现增删改查)

    首先,需要做一个准备工作 ——下载jar包,这个包是用来支持数据库的连接的 官网的下载链接:MySQL :: Download Connector/J 点击链接进入页面: 选择画红框的下载按钮。 与此同时,打开IDEA开发工具,在当前项目目录下新建一个lib目录文件夹用来存放第三方jar包,这样做方便管

    2024年02月07日
    浏览(55)
  • QT项目-学生管理系统

      本文章主要讲解本人在QT学习期间所开发的项目-学生管理系统,代码主要参考于网上查找。  功能主要包括,学生信息的插入删除,以及修改。 再加上按照id,或者成绩的升降序排序 1.pro 2.widget.h 3. main.cpp 4.widget.cpp 5.widget.ui 总结 项目处于学习阶段所做,参考了一些网络上

    2024年02月12日
    浏览(41)
  • 学生管理系统-01项目简介

    一、项目简介 项目名称:学生管理系统 项目功能 用户管理 用户登录 用户的注册 用户增加 用户删除 用户的修改 学生管理 用户的列表渲染 用户的分页操作 用户的搜索 用户的增加 用户删除 用户编辑 excel报表的导出 班级管理 专业管理 班主任管理 教师管理 课程管理 可视化

    2024年02月15日
    浏览(43)
  • 案例:创建一个学生管理系统(PXSCJ1)的数据库(SQL)

    1、新建数据库:PXSCJ1 2、创建并确认属性:XSB、KCB、CJB 代码见上! 3、设计每个表的实体完整性:键、索引 代码见上!    4、设计每个表的域完整性:CHECK语句 代码见上!      5、建立表与表之间的参照完整性:XSB与CJB,KCB与CJB 代码见上! 6、输入表数据:增加、删除、修改

    2024年02月10日
    浏览(44)
  • 【Java】学生管理系统项目演示

    目录 学生管理系统 学生管理系统代码思路分析 nextLine() 和 nextInt() 区别 需求:实现对学生的增删改查功能,学生(学号,姓名,年龄,地址)字段 定义学生 Student 实体类 成员属性 (学号,姓名,年龄,地址); 定义容器(ArrayList) 集合存入对象; 定义StudentManage 对 Stu

    2024年02月07日
    浏览(37)
  • JavaWeb小项目——【源码】使用Vue+axios+Servlet+Lombok+JDBC+MySQL技术栈实现云笔记管理系统案例的开发

    使用Vue+axios+Servlet+Lombok+JDBC+MySQL技术栈实现云笔记管理系统案例的开发 (一)题目要求 使用Vue+axios+Servlet+Lombok+JDBC+MySQL技术栈实现云笔记管理系统案例的开发 (二)数据库设计(10分) 创建数据库woniu_note (1)用户表:t_user,必要字段包含:用户名(username)、密码(passwd)

    2024年02月09日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包