微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

基于react+umi+antDesgin的学生实现考勤管理系统

1.本系统主要针对目前高校学生实训课程出勤管理和在线请假而设计的信息管理系统。

2.前端所用框架:React+umi+AntDesgin。

3.实现管理员对老师、学生、项目组的管理。老师对学生的作业审批、请假审批和考勤管理。

4.所用技术:本系统前端主要采用routes配置路由、umi-request请求数据、全局的错误拦截以及异常处理。

前端

登录页面

在这里插入图片描述

管理员界面
1.教师信息管理

在这里插入图片描述

新增教师

在这里插入图片描述

编辑教师信息

在这里插入图片描述

2.学生信息管理

在这里插入图片描述


同样也有基本的增删改查

在这里插入图片描述


3.项目组管理
新增项目组

在这里插入图片描述


点击项目组也有对应的学生

在这里插入图片描述


选中后可批量删除,或者批量更换分组

在这里插入图片描述


当然也可批量增加项目组成员到对应的项目组

在这里插入图片描述


更换分组下拉

在这里插入图片描述


点击按钮设置对应的组长

在这里插入图片描述


4.课程管理

在这里插入图片描述


新增课程

在这里插入图片描述


老师端

在这里插入图片描述


学生端

在这里插入图片描述


最后贴一下代码拦截处理

import { extend } from 'umi-request';
import { message, notification } from 'antd';
import { history } from 'umi';

const codeMessage: Record<number, string> = {
  200: '服务器成功返回请求的数据。',
  201: '新建或修改数据成功。',
  202: '一个请求已经进入后台排队(异步任务)。',
  204: '删除数据成功。',
  400: '发出的请求有错误,服务器没有进行新建或修改数据的操作。',
  401: '用户没有权限(令牌、用户名密码错误)。',
  403: '用户得到授权,但是访问是被禁止的。',
  404: '发出的请求针对的是不存在的记录,服务器没有进行操作。',
  406: '请求的格式不可得。',
  410: '请求的资源被永久删除,且不会再得到的。',
  422: '当创建一个对象时,发生一个验证错误。',
  500: '服务器发生错误,请检查服务器。',
  502: '网关错误。',
  503: '服务不可用,服务器暂时过载或维护。',
  504: '网关超时。',
};
/*异常处理程序 */
const errorHandler = (error: { response: Response }): Response => {
  const { response } = error;
  if (response && response.status) {
    const errorText = codeMessage[response.status] || response.statusText;
    const { status, url } = response;
    if (response.status === 500) {
      // 跳转至至指定500页面
      history.push('/home/500');
    } else if (response.status === 404) {
      // 跳转至至指定404页面
      history.push('/home/404');
    } else if (response.status === 403) {
      // 跳转至至指定404页面
      history.push('/home/403');
    } else {
      message: '异常';
    }
  } else if (!response) {
    notification.error({
      description: '您的网络发生异常,无法连接服务器',
      message: '网络异常',
    });
  }
  return response;
};
/*
 * @param noAuth
 * 是否带token请求
 *
 * @param credential
 * 认请求是否带上cookie
 *  include 携带
 *  omit 不携带
 */
/* 配置request请求时的认参数 */
const request = extend({
  prefix: '/service', //前缀
  errorHandler, // 错误处理
  credentials: 'include', // 认请求是否带上cookie
});

// request请求拦截器, 改变url 或 options
request.interceptors.request.use((request: any, options: any) => {
  options.headers.token = sessionStorage.getItem('token');
  if (!options.headers.token) {
    if (options.url != '/common/login') {
      sessionStorage.clear();
      history.replace('/');
    }
  }
  return request;
});

// response拦截器, 处理response
request.interceptors.response.use((response: any, options) => {
  if (response.headers.get('token')) {
    sessionStorage.setItem('token', response.headers.get('token'));
  }
  return response;
});

export default request;

总结:
学习React的函数式编程。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐