基于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的函数式编程。

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值