这是底层请求处理函数(utils.js):
import fetch from 'dva/fetch'
import { notification } from 'antd'
import store from '../index'
import { getCookie, removeCookie } from './cookie'
// 检查ajax返回的状态
function checkStatus(res) {
if (res.status >= 200 && res.status < 300) {
return res
}
throw new Error(res.statusText)
}
// fetch超时处理
const TIMEOUT = 20000
const timeoutFetch = (url, options) => {
let fetchPromise = fetch(url, options)
let timeoutPromise = new Promise((resolve, reject) => {
setTimeout(() => reject(new Error('请求超时')), TIMEOUT)
})
return Promise.race([fetchPromise, timeoutPromise])
}
/**
* 请求url,返回promise 对象
*
* @param {string} url The URL we want to request
* @param {object} [options] The options we want to pass to "fetch"
* @return {object} An object containing either "data" or "err"
*/
export default function request(url, options) {
const defaultOptions = {
// credentials: 'include',
method: 'GET',
mode: 'cors',
}
const mergeOptions = { ...defaultOptions, ...options }
const token = getCookie('token') || ''
if (mergeOptions.method === 'POST' || mergeOptions.method === 'PUT') {
mergeOptions.headers = {
accept: 'application/json',
'content-type': 'application/json; charset=utf-8',
...mergeOptions.headers,
}
if (token) mergeOptions.headers.Access_token = token
mergeOptions.body = JSON.stringify(mergeOptions.body)
}
return timeoutFetch(url, mergeOptions)
.then(checkStatus)
.then((response) => {
return (mergeOptions.method === 'DELETE' || response.status === 204) ? response.text() : response.json()
})
.then((data) => {
if (data.ret_code === '000000' || data.success === 1) {
return data
} else if (data.ret_code === 6666) { // token失效
const { dispatch } = store
removeCookie('token')
window.localStorage.clear()
dispatch({ type: 'app/updateState', payload: { user: {}, menu: [], breadList: [], navOpenKeys: [] } })
dispatch({ type: 'app/fetchMenu' })
notification.error({ message: 'token错误', description: data.ret_msg })
} else {
notification.error({ message: '请求错误', description: data.success ? '极验验证错误' : data.ret_msg })
}
})
.catch((error) => {
notification.error({ message: '服务器错误', description: error.message })
})
}
这是调用请求的函数:
import { request, config } from 'utils'
const { baseUrl } = config
// 查询岗位列表列表
export async function postListAction(params) {
return request(`${baseUrl}/employee/post/list`, {
method: 'POST',
body: params,
})
}
// 查询员工列表
export async function employeeListAction(params) {
return request(`${baseUrl}/employee/list`, {
method: 'POST',
body: params,
})
}
// 员工离职
export async function dimissionEmployeeAction(params) {
return request(`${baseUrl}/employee/dimission`, {
method: 'POST',
body: params,
})
}
// 员工详情
export async function employeeDetailAction(params) {
return request(`${baseUrl}/employee/detail`, {
method: 'POST',
body: params,
})
}
// 新增员工
export async function mergeEmployeeAction(params) {
return request(`${baseUrl}/employee/merge`, {
method: 'POST',
body: params,
})
}
/** 查询所有的角色岗位 */
export async function queryAllPostRolesAction(params) {
return request(`${baseUrl}/employee/all_post_roles`, {
method: 'POST',
body: params,
})
}
/* **********************************************
* 角色管理 |
************************************************/
export async function mergeRoleAction(params) { // 保存角色名称
return request(`${baseUrl}/employee/role/merge`, {
method: 'POST',
body: params,
})
}
export async function getRolePermissionAction(params) { // 获取角色所拥有的权限
return request(`${baseUrl}/employee/role_permission`, {
method: 'POST',
body: params,
})
}
export async function mergeRolePermissionAction(params) { // 保存角色权限
return request(`${baseUrl}/employee/merge_permission`, {
method: 'POST',
body: params,
})
}
export async function deleteRoleAction(params) { // 删除角色以及权限
return request(`${baseUrl}/employee/delete_role`, {
method: 'POST',
body: params,
})
}