提交 89fa1822 作者: 郁骅焌

添加部门

上级 c1bf3cf2
const routes = [
'/system/role',
'/system/menu',
'/system/dept'
]
export default {
routes
}
...@@ -2,6 +2,7 @@ ...@@ -2,6 +2,7 @@
import { defineConfig } from 'umi'; import { defineConfig } from 'umi';
import defaultSettings from './defaultSettings'; import defaultSettings from './defaultSettings';
import proxy from './proxy'; import proxy from './proxy';
import cacheRoutes from './cacheRoutes'
const { REACT_APP_ENV } = process.env; const { REACT_APP_ENV } = process.env;
export default defineConfig({ export default defineConfig({
...@@ -25,7 +26,7 @@ export default defineConfig({ ...@@ -25,7 +26,7 @@ export default defineConfig({
}, },
plugins: ['@heartrainy/keep-alive'], plugins: ['@heartrainy/keep-alive'],
// 缓存页面 // 缓存页面
keepalive: ['/demo/crud', '/system/role'], keepalive: cacheRoutes.routes,
// umi routes: https://umijs.org/docs/routing // umi routes: https://umijs.org/docs/routing
routes: [ routes: [
{ {
...@@ -81,6 +82,12 @@ export default defineConfig({ ...@@ -81,6 +82,12 @@ export default defineConfig({
icon: 'SolutionOutlined', icon: 'SolutionOutlined',
component: './menu', component: './menu',
}, },
{
path: '/system/dept',
name: 'dept',
icon: 'SolutionOutlined',
component: './dept',
},
], ],
}, },
{ {
......
...@@ -61,6 +61,7 @@ const SageTable = React.forwardRef((props, ref) => { ...@@ -61,6 +61,7 @@ const SageTable = React.forwardRef((props, ref) => {
onMouseLeaveRow: onMouseLeaveRowProps, onMouseLeaveRow: onMouseLeaveRowProps,
onContextMenuRow: onContextMenuRowProps, onContextMenuRow: onContextMenuRowProps,
expandable: expandableProps, expandable: expandableProps,
defaultExpandAllRows: defaultExpandAllRowsProps,
// 搜索相关 // 搜索相关
searchFields: searchFieldsProps, searchFields: searchFieldsProps,
onSearchTable: onSearchTableProps, onSearchTable: onSearchTableProps,
...@@ -154,6 +155,21 @@ const SageTable = React.forwardRef((props, ref) => { ...@@ -154,6 +155,21 @@ const SageTable = React.forwardRef((props, ref) => {
}, },
searchParams: hasSearchCondition ? { ...newSearchParams } : {}, searchParams: hasSearchCondition ? { ...newSearchParams } : {},
}); });
if (defaultExpandAllRowsProps) {
const allKeys = []
const allData = lastDataSource.slice()
const filterExpandRowKeys = (list) => {
list.forEach(item => {
if (item.children && item.children.length !== 0) {
allKeys.push(item[props.rowKey])
filterExpandRowKeys(item.children)
}
})
}
filterExpandRowKeys(allData)
setExpandedRowKeys(allKeys)
}
} }
} }
}; };
...@@ -262,7 +278,27 @@ const SageTable = React.forwardRef((props, ref) => { ...@@ -262,7 +278,27 @@ const SageTable = React.forwardRef((props, ref) => {
}; };
} }
const getExpandedRowKeys = () => {
return expandedRowKeys;
}
const getAllExpandedRowKeys = () => {
const allKeys = []
const allData = dataSourceState.slice()
const filterExpandRowKeys = (list) => {
list.forEach(item => {
if (item.children && item.children.length !== 0) {
allKeys.push(item[props.rowKey])
filterExpandRowKeys(item.children)
}
})
}
filterExpandRowKeys(allData)
return allKeys;
}
if (expandableProps) { if (expandableProps) {
lastTableState.expandable = { lastTableState.expandable = {
expandedRowKeys, expandedRowKeys,
onExpand: (expanded, record) => { onExpand: (expanded, record) => {
...@@ -279,29 +315,28 @@ const SageTable = React.forwardRef((props, ref) => { ...@@ -279,29 +315,28 @@ const SageTable = React.forwardRef((props, ref) => {
} }
} }
const getExpandedRowKeys = () => { // 获取当前列表的数据
return expandedRowKeys; const getDataSource = () => {
return dataSourceState
} }
const getAllExpandedRowKeys = () => { // 给列表赋值
const allKeys = [] const setDataSource = (data) => {
const allData = dataSourceState.slice() const tableStateTemp = Object.assign({}, tableState)
const filterExpandRowKeys = (list) => { let lastDataSource = data.slice()
list.forEach(item => { if (renderData) {
if (item.children && item.children.length !== 0) { lastDataSource = renderData(lastDataSource)
allKeys.push(item[props.rowKey])
filterExpandRowKeys(item.children)
}
})
} }
filterExpandRowKeys(allData) tableStateTemp.dataSource = lastDataSource
return allKeys; setTableState(tableStateTemp)
} }
// 暴露给外部的方法 // 暴露给外部的方法
useImperativeHandle(ref, () => ({ useImperativeHandle(ref, () => ({
queryTable, queryTable,
reloadTable, reloadTable,
getDataSource,
setDataSource,
getSelectedRowKeys, getSelectedRowKeys,
setSelectedRowKeys, setSelectedRowKeys,
getSelectedRows, getSelectedRows,
......
...@@ -53,6 +53,7 @@ export default { ...@@ -53,6 +53,7 @@ export default {
'menu.system': '系统管理', 'menu.system': '系统管理',
'menu.system.role': '角色管理', 'menu.system.role': '角色管理',
'menu.system.menu': '菜单管理', 'menu.system.menu': '菜单管理',
'menu.system.dept': '部门管理',
'menu.demo': '例子', 'menu.demo': '例子',
'menu.demo.crud': 'Crud' 'menu.demo.crud': 'Crud'
}; };
import React, { useState, useRef, useEffect, useImperativeHandle } from 'react'
import { Form, Input, InputNumber, Select, AutoComplete } from 'antd'
import { SageForm } from '@/components/Common'
import { poInteger, email } from '@/utils/verify'
import { queryDept } from '../service'
const { Option } = Select
const CreateForm = (props, ref) => {
const [parentIdOptions, setParentIdOptions] = useState([])
const formRef = useRef()
// 初始化菜单下拉
const requestDeptList = async () => {
const res = await queryDept()
if (res.isSuccess) {
const data = res.data.slice()
setParentIdOptions(data)
}
}
useEffect(() => {
requestDeptList()
}, [])
// 上传成功
const uploadSuccess = (field, value) => {
formRef.current.setFieldsValue({ [field]: value })
}
const onFinish = (values) => {
if (props.onFinish) {
props.onFinish(values)
}
}
const onFinishFailed = ({ values }) => {
console.log(values)
}
const onValuesChange = (changedValues) => {
}
// 表单字段设置
const formFields = [
{
name: 'fatherOrgnId',
label: '上级部门',
type: 'treeselect',
initialValue: 1,
rules: [
{ required: true },
],
fieldNames: {title: 'orgnName', value: 'id'},
props: {
treeData: parentIdOptions
},
},
{
name: 'orgnName',
label: '部门名称',
type: 'input',
rules: [{ required: true }],
props: {
placeholder: '请输入'
}
},
{
name: 'orderNum',
label: '排序',
type: 'input',
rules: [
{ required: true },
{ pattern: poInteger, message: '请输入正整数' }
],
props: {
placeholder: '请输入'
}
},
{
name: 'leader',
label: '负责人',
type: 'input',
// rules: [{ required: true }],
props: {
placeholder: '请输入',
maxLength: 20
}
},
{
name: 'phone',
label: '联系电话',
type: 'input',
// rules: [{ required: true }],
props: {
placeholder: '请输入',
maxLength: 30
}
},
{
name: 'email',
label: '邮箱',
type: 'input',
rules: [
{ pattern: email, message: '请输入正确的邮箱' }
],
props: {
placeholder: '请输入',
}
},
{
name: 'status',
label: '部门状态',
type: 'radio',
initialValue: '1',
options: [
{ value: '1', text: '启用' },
{ value: '0', text: '禁用' },
]
},
]
// 暴露外部方法
useImperativeHandle(ref, () => ({
submit: () => formRef.current.submit(),
validateFields: (nameList) => formRef.current.validateFields(nameList),
getFieldsValue: (nameList) => formRef.current.getFieldsValue(nameList),
setFieldsValue: (values) => formRef.current.setFieldsValue(values),
resetFields: (fields) => formRef.current.resetFields(fields)
}))
return (
<SageForm
ref={formRef}
formFields={formFields}
onFinish={onFinish}
onFinishFailed={onFinishFailed}
onValuesChange={onValuesChange}
/>
)
}
export default React.forwardRef(CreateForm)
import React, { useState, useRef, useEffect, useImperativeHandle } from 'react'
import { Form, Input, InputNumber, Select, AutoComplete } from 'antd'
import { SageForm } from '@/components/Common'
import { poInteger, email } from '@/utils/verify'
import { queryDept } from '../service'
const UpdateForm = (props, ref) => {
const [parentIdOptions, setParentIdOptions] = useState([])
const { detail } = props
const formRef = useRef()
// 初始化菜单下拉
const requestDeptList = async () => {
const res = await queryDept()
if (res.isSuccess) {
const data = res.data.slice()
setParentIdOptions(data)
}
}
useEffect(() => {
requestDeptList()
}, [])
useEffect(() => {
}, [])
const onFinish = (values) => {
if (props.onFinish) {
props.onFinish(values)
}
}
// 表单字段设置
const formFields = [
{
name: 'fatherOrgnId',
label: '上级部门',
type: 'treeselect',
initialValue: 1,
rules: [
{ required: true },
],
fieldNames: {title: 'orgnName', value: 'id'},
props: {
treeData: parentIdOptions
},
},
{
name: 'orgnName',
label: '部门名称',
type: 'input',
rules: [{ required: true }],
props: {
placeholder: '请输入'
}
},
{
name: 'orderNum',
label: '排序',
type: 'input',
rules: [
{ required: true },
{ pattern: poInteger, message: '请输入正整数' }
],
props: {
placeholder: '请输入'
}
},
{
name: 'leader',
label: '负责人',
type: 'input',
// rules: [{ required: true }],
props: {
placeholder: '请输入',
maxLength: 20
}
},
{
name: 'phone',
label: '联系电话',
type: 'input',
// rules: [{ required: true }],
props: {
placeholder: '请输入',
maxLength: 30
}
},
{
name: 'email',
label: '邮箱',
type: 'input',
rules: [
{ pattern: email, message: '请输入正确的邮箱' }
],
props: {
placeholder: '请输入',
}
},
{
name: 'status',
label: '部门状态',
type: 'radio',
initialValue: '1',
options: [
{ value: '1', text: '启用' },
{ value: '0', text: '禁用' },
]
},
]
// 暴露外部方法
useImperativeHandle(ref, () => ({
submit: () => formRef.current.submit(),
validateFields: (nameList) => formRef.current.validateFields(nameList),
getFieldsValue: (nameList) => formRef.current.getFieldsValue(nameList),
setFieldsValue: (values) => formRef.current.setFieldsValue(values),
resetFields: (fields) => formRef.current.resetFields(fields)
}))
return (
<SageForm
ref={formRef}
formFields={formFields}
// colNum={2}
// initialValues={detail}
onFinish={onFinish}
/>
)
}
export default React.forwardRef(UpdateForm)
import React, { useState, useEffect, useRef } from 'react'
import { PageHeaderWrapper } from '@ant-design/pro-layout'
import { Switch, Modal } from 'antd'
import { SageTable, SageModal, SageButton, sageMessage, ActionSet } from '@/components/Common'
import { PlusOutlined, EditOutlined, SwapOutlined, ExclamationCircleOutlined, DeleteOutlined, VerticalAlignBottomOutlined, VerticalAlignTopOutlined } from '@ant-design/icons';
import moment from 'moment';
import { getEnumDropDownList } from '@/services/enum'
import { queryDept, updateDept, addDept, removeDept, getDeptDetail, openOrClose } from './service';
import CreateForm from './components/CreateForm'
import UpdateForm from './components/UpdateForm'
const { confirm } = Modal
// 详情数据
const initDetail = {
id: null
}
const DeptList = () => {
// 状态数据
const [detail, setDetail] = useState(initDetail) // 详情
const [editable, setEditable] = useState(true) // 编辑按钮状态
const [removeable, setRemoveable] = useState(true) // 删除按钮状态
const [status, setStatus] = useState('') // 状态 1、add 2、update 3、detail
const [modalLoading, setModalLoading] = useState(false) // 窗口loading
// ref对象
const tableRef = useRef();
const modalRef = useRef();
const createFormRef = useRef();
const updateFormRef = useRef();
useEffect(() => {
}, [])
// 查询条件
const searchFields = [
// {
// name: 'menuName',
// label: '菜单名称',
// type: 'input',
// props: {
// placeholder: '请输入'
// }
// },
// {
// name: 'status',
// label: '菜单状态',
// type: 'select',
// options: [
// {text: '显示', value: '1'},
// {text: '隐藏', value: '0'}
// ],
// props: {
// allowClear: true
// }
// },
]
// 查询
const onSearchTable = (params) => {
if (tableRef.current) {
const postParams = Object.assign({ pageNum: 1 }, params)
// 处理查询条件
tableRef.current.queryTable(postParams)
}
}
// 重置
const onResetTable = () => {
if (tableRef.current) {
tableRef.current.queryTable({ pageNum: 1 }, 'reset')
}
}
const tableSearchFormProps = {
searchFields,
onSearchTable,
onResetTable
}
// 编辑
const handleEdit = async (event, record) => {
event.stopPropagation()
setStatus('update')
const res = await getDeptDetail({ id: record.id })
const { data } = res
setDetail(data)
modalRef.current.setTitle('编辑')
modalRef.current.setVisible(true)
updateFormRef.current.setFieldsValue({
fatherOrgnId: data.fatherOrgnId,
orgnName: data.orgnName,
orderNum: data.orderNum,
leader: data.leader,
phone: data.phone,
email: data.email,
status: data.status
})
}
// 删除
const handleDelete = async (event, record) => {
event.stopPropagation()
const res = await removeDept({ id: record.id })
if (res.isSuccess) {
sageMessage.success('删除成功')
tableRef.current.reloadTable()
}
}
// 不通过刷新列表请求修改列表状态
const onChangeStatus = (checked, record) => {
confirm({
title: `此操作将 "${checked ? '启用' : '停用'}" ${record.orgnName}, 是否继续?`,
icon: <ExclamationCircleOutlined />,
// content: 'Some descriptions',
onOk: async () => {
const res = await openOrClose({ id: record.id })
if (res.isSuccess) {
const tableData = tableRef.current.getDataSource()
const loopChangeStatus = (list) => {
for (let i = 0; i < list.length; i++) {
if (list[i].id === record.id) {
list[i].status = checked ? '1' : '0'
break;
}
if (list[i].children && list[i].children.length !== 0) {
loopChangeStatus(list[i].children)
}
}
}
loopChangeStatus(tableData)
tableRef.current.setDataSource(tableData)
sageMessage.success(checked ? '启用成功' : '禁用成功')
}
},
onCancel: () => {
},
});
}
// 表格
const columns = [
{
title: '部门名称',
dataIndex: 'orgnName',
key: 'orgnName',
width: 200,
},
{
title: '排序',
dataIndex: 'orderNum',
key: 'orderNum',
width: 200,
},
{
title: '状态',
dataIndex: 'status',
key: 'status',
render: (text, record) => <Switch checked={text === '1'} onChange={(checked) => onChangeStatus(checked, record)} />
},
{
title: '创建时间',
dataIndex: 'createdAt',
key: 'createdAt',
width: 200
},
{
title: '操作',
fixed: 'right',
dataIndex: 'button',
key: 'action',
align: 'center',
render: (button, record) => {
const actionList = [
{ title: '编辑', method: (e) => handleEdit(e, record) },
{ title: '删除', method: (e) => handleDelete(e, record), isConfirm: true, confirmInfo: '确认删除该菜单?' },
]
return <ActionSet actionList={actionList} record={record} />
},
width: 120
}
]
const renderDeptData = data => {
const tempData = data.slice()
const removeChildren = list => {
list.forEach(item => {
if (item.children && item.children.length === 0) {
delete item.children
}
if (item.children && item.children.length !== 0) {
removeChildren(item.children)
}
})
}
removeChildren(tempData)
return tempData
}
const tableProps = {
rowKey: 'id',
// hasCheck: true,
columns,
// scroll: { x: '100vw' },
pagination: false,
expandable: true,
defaultExpandAllRows: true,
rowSelection: {
type: 'checkbox',
onChange: (selectedrowkeys, selectedrows) => {
tableRef.current.setSelectedRowKeys(selectedrowkeys)
tableRef.current.setSelectedRows(selectedrows)
setEditable(selectedrowkeys.length !== 1)
setRemoveable(selectedrowkeys.length === 0)
}
}
}
// 新建按钮
const onAdd = () => {
if (modalRef.current) {
setStatus('add')
modalRef.current.setTitle('新增')
modalRef.current.setVisible(true)
if (createFormRef.current) {
createFormRef.current.resetFields()
}
}
}
// 编辑按钮
const onEdit = (e) => {
const rowRecords = tableRef.current.getSelectedRows()
handleEdit(e, rowRecords[0])
}
// 删除按钮
const onDelete = async (e) => {
e.stopPropagation()
const rowRecords = tableRef.current.getSelectedRowKeys()
const res = await removeDept({ idArr: rowRecords })
if (res.isSuccess) {
sageMessage.success('删除成功')
tableRef.current.reloadTable()
}
}
const onExpand = () => {
let expandRowKeys = tableRef.current.getExpandedRowKeys()
if (expandRowKeys.length === 0) {
expandRowKeys = tableRef.current.getAllExpandedRowKeys()
tableRef.current.setExpandedRowKeys(expandRowKeys)
} else {
tableRef.current.setExpandedRowKeys([])
}
}
// 表格按钮操作
const tableToolProps = {
toolBarRender: () => {
return (
<>
<SageButton type="primary" icon={<PlusOutlined />} onClick={onAdd}>新增</SageButton>
{/* <SageButton type="success" icon={<EditOutlined />} onClick={(e) => onEdit(e)} disabled={editable} style={{marginLeft: '8px'}}>编辑</SageButton> */}
<SageButton type="waring" icon={<SwapOutlined />} onClick={(e) => onExpand(e)} style={{marginLeft: '8px'}}>全部展开/折叠</SageButton>
</>
)
},
toolOptionConfig: ['reload', 'hiddensearch', 'density', 'fullScreen']
}
// 窗口确认按钮
const onOk = async () => {
if (status === 'add' && createFormRef.current) {
createFormRef.current.submit();
}
if (status === 'update' && updateFormRef.current) {
updateFormRef.current.submit();
}
}
// 表单提交成功
const onFinish = async (values) => {
const formData = Object.assign({}, values)
// 处理赋值表单数据
// TODO
let res = null
setModalLoading(true)
switch (status) {
case 'add':
res = await addDept(formData)
break;
case 'update':
formData.id = detail.id
res = await updateDept(formData)
break
default:
break;
}
setModalLoading(false)
if (res.isSuccess) {
sageMessage.success('保存成功')
modalRef.current.setVisible(false)
tableRef.current.reloadTable()
}
}
return (
<PageHeaderWrapper>
<SageTable
ref={tableRef}
{...tableSearchFormProps}
{...tableToolProps}
{...tableProps}
request={(params) => queryDept(params)}
renderData={data => renderDeptData(data)}
/>
<SageModal
ref={modalRef}
onOk={onOk}
width={600}
confirmLoading={modalLoading}
destroyOnClose
>
{
status === 'add' ?
<CreateForm
ref={createFormRef}
onFinish={onFinish}
/> : null
}
{
status === 'update' ?
<UpdateForm
ref={updateFormRef}
detail={detail}
onFinish={onFinish}
/> : null
}
</SageModal>
</PageHeaderWrapper>
)
}
export default DeptList
import request from '@/utils/request';
import { requestPrefix } from '@/services/prefix'
export async function queryDept(params) {
return request(`/${requestPrefix}/party/orgn/queryOrgn`, {
method: 'POST',
data: { ...params },
});
}
export async function removeDept(params) {
return request(`/${requestPrefix}/party/orgn/delete`, {
method: 'POST',
data: { ...params },
});
}
export async function addDept(params) {
return request(`/${requestPrefix}/party/orgn/saveOrEdit`, {
method: 'POST',
data: { ...params },
});
}
export async function updateDept(params) {
return request(`/${requestPrefix}/party/orgn/saveOrEdit`, {
method: 'POST',
data: { ...params },
});
}
// 查询
export function getDeptDetail(params) {
return request(`/${requestPrefix}/party/orgn/selectById`, {
method: 'POST',
data: { ...params },
})
}
export function openOrClose(params) {
return request(`/${requestPrefix}/party/orgn/openOrClose`, {
method: 'POST',
data: { ...params },
})
}
...@@ -87,12 +87,12 @@ const CreateForm = (props, ref) => { ...@@ -87,12 +87,12 @@ const CreateForm = (props, ref) => {
}, },
{ {
name: 'url', name: 'url',
label: '请求地址', label: menuType === '1' ? '路由地址' : '请求地址',
type: 'input', type: 'input',
props: { props: {
placeholder: '请输入' placeholder: '请输入'
}, },
isShow: menuType === '1' isShow: menuType === '1' || menuType === '2'
}, },
{ {
name: 'target', name: 'target',
......
...@@ -130,10 +130,18 @@ const MenuList = () => { ...@@ -130,10 +130,18 @@ const MenuList = () => {
width: 200, width: 200,
}, },
{ {
title: '请求地址', title: '路由地址',
dataIndex: 'url', dataIndex: 'url',
key: 'url', key: 'url',
width: 200, width: 200,
render: (text, record) => record.menuType === '1' ? text : ''
},
{
title: '请求地址',
dataIndex: 'url',
key: 'url',
// width: 200,
render: (text, record) => record.menuType === '2' ? text : ''
}, },
{ {
title: '菜单类型', title: '菜单类型',
...@@ -203,7 +211,7 @@ const MenuList = () => { ...@@ -203,7 +211,7 @@ const MenuList = () => {
const tableProps = { const tableProps = {
rowKey: 'id', rowKey: 'id',
hasCheck: true, // hasCheck: true,
columns, columns,
// scroll: { x: '100vw' }, // scroll: { x: '100vw' },
pagination: false, pagination: false,
...@@ -265,7 +273,7 @@ const MenuList = () => { ...@@ -265,7 +273,7 @@ const MenuList = () => {
return ( return (
<> <>
<SageButton type="primary" icon={<PlusOutlined />} onClick={onAdd}>新增</SageButton> <SageButton type="primary" icon={<PlusOutlined />} onClick={onAdd}>新增</SageButton>
<SageButton type="success" icon={<EditOutlined />} onClick={(e) => onEdit(e)} disabled={editable} style={{marginLeft: '8px'}}>编辑</SageButton> {/* <SageButton type="success" icon={<EditOutlined />} onClick={(e) => onEdit(e)} disabled={editable} style={{marginLeft: '8px'}}>编辑</SageButton> */}
<SageButton type="waring" icon={<SwapOutlined />} onClick={(e) => onExpand(e)} style={{marginLeft: '8px'}}>全部展开/折叠</SageButton> <SageButton type="waring" icon={<SwapOutlined />} onClick={(e) => onExpand(e)} style={{marginLeft: '8px'}}>全部展开/折叠</SageButton>
</> </>
) )
...@@ -288,6 +296,9 @@ const MenuList = () => { ...@@ -288,6 +296,9 @@ const MenuList = () => {
const formData = Object.assign({}, values) const formData = Object.assign({}, values)
// 处理赋值表单数据 // 处理赋值表单数据
// TODO // TODO
if (formData.menuType === '2') {
formData.status = '1'
}
let res = null let res = null
setModalLoading(true) setModalLoading(true)
......
...@@ -8,7 +8,6 @@ import { queryRule, updateRule, addRule, removeRule, getRuleDetail } from './ser ...@@ -8,7 +8,6 @@ import { queryRule, updateRule, addRule, removeRule, getRuleDetail } from './ser
import CreateForm from './components/CreateForm' import CreateForm from './components/CreateForm'
import UpdateForm from './components/UpdateForm' import UpdateForm from './components/UpdateForm'
const initDetail = { const initDetail = {
id: null id: null
} }
...@@ -127,6 +126,12 @@ const TableList = () => { ...@@ -127,6 +126,12 @@ const TableList = () => {
render: text => text === '1' ? '启用' : '禁用' render: text => text === '1' ? '启用' : '禁用'
}, },
{ {
title: '创建时间',
dataIndex: 'createdAt',
key: 'createdAt',
width: 200
},
{
title: '操作', title: '操作',
dataIndex: 'button', dataIndex: 'button',
key: 'action', key: 'action',
......
...@@ -54,4 +54,18 @@ const request = extend({ ...@@ -54,4 +54,18 @@ const request = extend({
// 默认错误处理 // 默认错误处理
credentials: 'include', // 默认请求是否带上cookie credentials: 'include', // 默认请求是否带上cookie
}); });
request.interceptors.response.use(async (response) => {
const data = await response.clone().json()
if (data && !data.isSuccess) {
notification.destroy()
notification.error({
message: data.message
})
}
return response
})
export default request; export default request;
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论