12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- import { compose, initial } from "@dage/service";
- import { getTokenInfo, removeTokenInfo } from "@dage/pc-components";
- import { message } from "antd";
- import { NoticeType } from "antd/es/message/interface";
- import { ResponseStatusCode } from "./types";
- /**
- * 定义请求元数据
- */
- declare global {
- interface DageRequestMeta {
- /**
- * 显示全局 错误信息, 默认为 false
- */
- showError?: boolean;
- }
- }
- const showMessage = (msg: string, type: NoticeType = "error") => {
- message.open({
- type,
- content: msg,
- duration: 4,
- });
- };
- initial({
- fetch: window.fetch.bind(window),
- baseURL: process.env.REACT_APP_API_URL as string,
- interceptor: compose(
- (request, next) => {
- const { token } = getTokenInfo();
- if (token) {
- request.headers["token"] = token;
- }
- return next();
- },
- // 登陆失效
- async (request, next) => {
- const response = await next();
- const { showError = true } = request.meta;
- if (
- [
- ResponseStatusCode.TOKEN_INVALID,
- ResponseStatusCode.TOKEN_INVALID2,
- ].includes(response.code)
- ) {
- showMessage("登录失效!");
- removeTokenInfo();
- globalThis.location.href = "#/login";
- } else if (response.code !== ResponseStatusCode.SUCCESS) {
- const message = response.__raw__.data.msg ?? "系统出差中";
- // 错误信息映射
- response.errorMessage = message;
- if (showError) {
- showMessage(message);
- }
- }
- return response;
- }
- ),
- });
|