init
This commit is contained in:
175
mock/listTableList.ts
Normal file
175
mock/listTableList.ts
Normal file
@@ -0,0 +1,175 @@
|
||||
// eslint-disable-next-line import/no-extraneous-dependencies
|
||||
import { Request, Response } from 'express';
|
||||
import moment from 'moment';
|
||||
import { parse } from 'url';
|
||||
|
||||
// mock tableListDataSource
|
||||
const genList = (current: number, pageSize: number) => {
|
||||
const tableListDataSource: API.RuleListItem[] = [];
|
||||
|
||||
for (let i = 0; i < pageSize; i += 1) {
|
||||
const index = (current - 1) * 10 + i;
|
||||
tableListDataSource.push({
|
||||
key: index,
|
||||
disabled: i % 6 === 0,
|
||||
href: 'https://ant.design',
|
||||
avatar: [
|
||||
'https://gw.alipayobjects.com/zos/rmsportal/eeHMaZBwmTvLdIwMfBpg.png',
|
||||
'https://gw.alipayobjects.com/zos/rmsportal/udxAbMEhpwthVVcjLXik.png',
|
||||
][i % 2],
|
||||
name: `TradeCode ${index}`,
|
||||
owner: '曲丽丽',
|
||||
desc: '这是一段描述',
|
||||
callNo: Math.floor(Math.random() * 1000),
|
||||
status: Math.floor(Math.random() * 10) % 4,
|
||||
updatedAt: moment().format('YYYY-MM-DD'),
|
||||
createdAt: moment().format('YYYY-MM-DD'),
|
||||
progress: Math.ceil(Math.random() * 100),
|
||||
});
|
||||
}
|
||||
tableListDataSource.reverse();
|
||||
return tableListDataSource;
|
||||
};
|
||||
|
||||
let tableListDataSource = genList(1, 100);
|
||||
|
||||
function getRule(req: Request, res: Response, u: string) {
|
||||
let realUrl = u;
|
||||
if (!realUrl || Object.prototype.toString.call(realUrl) !== '[object String]') {
|
||||
realUrl = req.url;
|
||||
}
|
||||
const { current = 1, pageSize = 10 } = req.query;
|
||||
const params = parse(realUrl, true).query as unknown as API.PageParams &
|
||||
API.RuleListItem & {
|
||||
sorter: any;
|
||||
filter: any;
|
||||
};
|
||||
|
||||
let dataSource = [...tableListDataSource].slice(
|
||||
((current as number) - 1) * (pageSize as number),
|
||||
(current as number) * (pageSize as number),
|
||||
);
|
||||
if (params.sorter) {
|
||||
const sorter = JSON.parse(params.sorter);
|
||||
dataSource = dataSource.sort((prev, next) => {
|
||||
let sortNumber = 0;
|
||||
Object.keys(sorter).forEach((key) => {
|
||||
if (sorter[key] === 'descend') {
|
||||
if (prev[key] - next[key] > 0) {
|
||||
sortNumber += -1;
|
||||
} else {
|
||||
sortNumber += 1;
|
||||
}
|
||||
return;
|
||||
}
|
||||
if (prev[key] - next[key] > 0) {
|
||||
sortNumber += 1;
|
||||
} else {
|
||||
sortNumber += -1;
|
||||
}
|
||||
});
|
||||
return sortNumber;
|
||||
});
|
||||
}
|
||||
if (params.filter) {
|
||||
const filter = JSON.parse(params.filter as any) as {
|
||||
[key: string]: string[];
|
||||
};
|
||||
if (Object.keys(filter).length > 0) {
|
||||
dataSource = dataSource.filter((item) => {
|
||||
return Object.keys(filter).some((key) => {
|
||||
if (!filter[key]) {
|
||||
return true;
|
||||
}
|
||||
if (filter[key].includes(`${item[key]}`)) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
});
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
if (params.name) {
|
||||
dataSource = dataSource.filter((data) => data?.name?.includes(params.name || ''));
|
||||
}
|
||||
const result = {
|
||||
data: dataSource,
|
||||
total: tableListDataSource.length,
|
||||
success: true,
|
||||
pageSize,
|
||||
current: parseInt(`${params.current}`, 10) || 1,
|
||||
};
|
||||
|
||||
return res.json(result);
|
||||
}
|
||||
|
||||
function postRule(req: Request, res: Response, u: string, b: Request) {
|
||||
let realUrl = u;
|
||||
if (!realUrl || Object.prototype.toString.call(realUrl) !== '[object String]') {
|
||||
realUrl = req.url;
|
||||
}
|
||||
|
||||
const body = (b && b.body) || req.body;
|
||||
const { method, name, desc, key } = body;
|
||||
|
||||
switch (method) {
|
||||
/* eslint no-case-declarations:0 */
|
||||
case 'delete':
|
||||
tableListDataSource = tableListDataSource.filter((item) => key.indexOf(item.key) === -1);
|
||||
break;
|
||||
case 'post':
|
||||
(() => {
|
||||
const i = Math.ceil(Math.random() * 10000);
|
||||
const newRule: API.RuleListItem = {
|
||||
key: tableListDataSource.length,
|
||||
href: 'https://ant.design',
|
||||
avatar: [
|
||||
'https://gw.alipayobjects.com/zos/rmsportal/eeHMaZBwmTvLdIwMfBpg.png',
|
||||
'https://gw.alipayobjects.com/zos/rmsportal/udxAbMEhpwthVVcjLXik.png',
|
||||
][i % 2],
|
||||
name,
|
||||
owner: '曲丽丽',
|
||||
desc,
|
||||
callNo: Math.floor(Math.random() * 1000),
|
||||
status: Math.floor(Math.random() * 10) % 2,
|
||||
updatedAt: moment().format('YYYY-MM-DD'),
|
||||
createdAt: moment().format('YYYY-MM-DD'),
|
||||
progress: Math.ceil(Math.random() * 100),
|
||||
};
|
||||
tableListDataSource.unshift(newRule);
|
||||
return res.json(newRule);
|
||||
})();
|
||||
return;
|
||||
|
||||
case 'update':
|
||||
(() => {
|
||||
let newRule = {};
|
||||
tableListDataSource = tableListDataSource.map((item) => {
|
||||
if (item.key === key) {
|
||||
newRule = { ...item, desc, name };
|
||||
return { ...item, desc, name };
|
||||
}
|
||||
return item;
|
||||
});
|
||||
return res.json(newRule);
|
||||
})();
|
||||
return;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
const result = {
|
||||
list: tableListDataSource,
|
||||
pagination: {
|
||||
total: tableListDataSource.length,
|
||||
},
|
||||
};
|
||||
|
||||
res.json(result);
|
||||
}
|
||||
|
||||
export default {
|
||||
'GET /api/rule': getRule,
|
||||
'POST /api/rule': postRule,
|
||||
};
|
||||
107
mock/notices.ts
Normal file
107
mock/notices.ts
Normal file
@@ -0,0 +1,107 @@
|
||||
import { Request, Response } from 'express';
|
||||
|
||||
const getNotices = (req: Request, res: Response) => {
|
||||
res.json({
|
||||
data: [
|
||||
{
|
||||
id: '000000001',
|
||||
avatar: 'https://gw.alipayobjects.com/zos/rmsportal/ThXAXghbEsBCCSDihZxY.png',
|
||||
title: '你收到了 14 份新周报',
|
||||
datetime: '2017-08-09',
|
||||
type: 'notification',
|
||||
},
|
||||
{
|
||||
id: '000000002',
|
||||
avatar: 'https://gw.alipayobjects.com/zos/rmsportal/OKJXDXrmkNshAMvwtvhu.png',
|
||||
title: '你推荐的 曲妮妮 已通过第三轮面试',
|
||||
datetime: '2017-08-08',
|
||||
type: 'notification',
|
||||
},
|
||||
{
|
||||
id: '000000003',
|
||||
avatar: 'https://gw.alipayobjects.com/zos/rmsportal/kISTdvpyTAhtGxpovNWd.png',
|
||||
title: '这种模板可以区分多种通知类型',
|
||||
datetime: '2017-08-07',
|
||||
read: true,
|
||||
type: 'notification',
|
||||
},
|
||||
{
|
||||
id: '000000004',
|
||||
avatar: 'https://gw.alipayobjects.com/zos/rmsportal/GvqBnKhFgObvnSGkDsje.png',
|
||||
title: '左侧图标用于区分不同的类型',
|
||||
datetime: '2017-08-07',
|
||||
type: 'notification',
|
||||
},
|
||||
{
|
||||
id: '000000005',
|
||||
avatar: 'https://gw.alipayobjects.com/zos/rmsportal/ThXAXghbEsBCCSDihZxY.png',
|
||||
title: '内容不要超过两行字,超出时自动截断',
|
||||
datetime: '2017-08-07',
|
||||
type: 'notification',
|
||||
},
|
||||
{
|
||||
id: '000000006',
|
||||
avatar: 'https://gw.alipayobjects.com/zos/rmsportal/fcHMVNCjPOsbUGdEduuv.jpeg',
|
||||
title: '曲丽丽 评论了你',
|
||||
description: '描述信息描述信息描述信息',
|
||||
datetime: '2017-08-07',
|
||||
type: 'message',
|
||||
clickClose: true,
|
||||
},
|
||||
{
|
||||
id: '000000007',
|
||||
avatar: 'https://gw.alipayobjects.com/zos/rmsportal/fcHMVNCjPOsbUGdEduuv.jpeg',
|
||||
title: '朱偏右 回复了你',
|
||||
description: '这种模板用于提醒谁与你发生了互动,左侧放『谁』的头像',
|
||||
datetime: '2017-08-07',
|
||||
type: 'message',
|
||||
clickClose: true,
|
||||
},
|
||||
{
|
||||
id: '000000008',
|
||||
avatar: 'https://gw.alipayobjects.com/zos/rmsportal/fcHMVNCjPOsbUGdEduuv.jpeg',
|
||||
title: '标题',
|
||||
description: '这种模板用于提醒谁与你发生了互动,左侧放『谁』的头像',
|
||||
datetime: '2017-08-07',
|
||||
type: 'message',
|
||||
clickClose: true,
|
||||
},
|
||||
{
|
||||
id: '000000009',
|
||||
title: '任务名称',
|
||||
description: '任务需要在 2017-01-12 20:00 前启动',
|
||||
extra: '未开始',
|
||||
status: 'todo',
|
||||
type: 'event',
|
||||
},
|
||||
{
|
||||
id: '000000010',
|
||||
title: '第三方紧急代码变更',
|
||||
description: '冠霖提交于 2017-01-06,需在 2017-01-07 前完成代码变更任务',
|
||||
extra: '马上到期',
|
||||
status: 'urgent',
|
||||
type: 'event',
|
||||
},
|
||||
{
|
||||
id: '000000011',
|
||||
title: '信息安全考试',
|
||||
description: '指派竹尔于 2017-01-09 前完成更新并发布',
|
||||
extra: '已耗时 8 天',
|
||||
status: 'doing',
|
||||
type: 'event',
|
||||
},
|
||||
{
|
||||
id: '000000012',
|
||||
title: 'ABCD 版本发布',
|
||||
description: '冠霖提交于 2017-01-06,需在 2017-01-07 前完成代码变更任务',
|
||||
extra: '进行中',
|
||||
status: 'processing',
|
||||
type: 'event',
|
||||
},
|
||||
],
|
||||
});
|
||||
};
|
||||
|
||||
export default {
|
||||
'GET /api/notices': getNotices,
|
||||
};
|
||||
5
mock/route.ts
Normal file
5
mock/route.ts
Normal file
@@ -0,0 +1,5 @@
|
||||
export default {
|
||||
'/api/auth_routes': {
|
||||
'/form/advanced-form': { authority: ['admin', 'user'] },
|
||||
},
|
||||
};
|
||||
539
mock/user.ts
Normal file
539
mock/user.ts
Normal file
@@ -0,0 +1,539 @@
|
||||
import { Request, Response } from 'express';
|
||||
import captchapng from 'captchapng3';
|
||||
|
||||
const waitTime = (time: number = 100) => {
|
||||
return new Promise((resolve) => {
|
||||
setTimeout(() => {
|
||||
resolve(true);
|
||||
}, time);
|
||||
});
|
||||
};
|
||||
|
||||
async function getFakeCaptcha(req: Request, res: Response) {
|
||||
await waitTime(2000);
|
||||
return res.json('captcha-xxx');
|
||||
}
|
||||
|
||||
|
||||
function guid () {
|
||||
return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
|
||||
var r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8);
|
||||
return v.toString(16);
|
||||
});
|
||||
}
|
||||
|
||||
async function getCaptchaImage(req: Request, res: Response) {
|
||||
await waitTime(1000);
|
||||
let rand = (Math.random() * 9000 + 1000).toFixed();
|
||||
var p = new captchapng(100, 30, rand);
|
||||
const img = p.getBase64();
|
||||
res.status(200).send({
|
||||
code: 200,
|
||||
msg: 'success',
|
||||
img: img,
|
||||
uuid: guid()
|
||||
});
|
||||
}
|
||||
|
||||
const { ANT_DESIGN_PRO_ONLY_DO_NOT_USE_IN_YOUR_PRODUCTION } = process.env;
|
||||
|
||||
/**
|
||||
* 当前用户的权限,如果为空代表没登录
|
||||
* current user access, if is '', user need login
|
||||
* 如果是 pro 的预览,默认是有权限的
|
||||
*/
|
||||
let access = ANT_DESIGN_PRO_ONLY_DO_NOT_USE_IN_YOUR_PRODUCTION === 'site' ? 'admin' : '';
|
||||
|
||||
const getAccess = () => {
|
||||
return access;
|
||||
};
|
||||
|
||||
// 代码中会兼容本地 service mock 以及部署站点的静态数据
|
||||
export default {
|
||||
// 支持值为 Object 和 Array
|
||||
'GET /api/getInfo': (req: Request, res: Response) => {
|
||||
if (!getAccess()) {
|
||||
res.status(401).send({
|
||||
data: {
|
||||
isLogin: false,
|
||||
},
|
||||
errorCode: '401',
|
||||
errorMessage: '请先登录!',
|
||||
success: true,
|
||||
});
|
||||
return;
|
||||
}
|
||||
res.send({
|
||||
msg: "操作成功",
|
||||
code: 200,
|
||||
permissions: ["*:*:*"],
|
||||
roles: ["admin"],
|
||||
user: {
|
||||
searchValue: null,
|
||||
createBy: "admin",
|
||||
createTime: "2021-09-09 17:25:28",
|
||||
updateBy: null,
|
||||
updateTime: null,
|
||||
remark: "管理员",
|
||||
params: {},
|
||||
userId: 1,
|
||||
deptId: 103,
|
||||
userName: "admin",
|
||||
nickName: "若依",
|
||||
email: "ry@163.com",
|
||||
phonenumber: "15888888888",
|
||||
sex: "1",
|
||||
avatar: "/static/img/profile.473f5971.jpg",
|
||||
status: "0",
|
||||
delFlag: "0",
|
||||
loginIp: "61.140.198.155",
|
||||
loginDate: "2021-11-11T14:03:07.723+0800",
|
||||
dept: {
|
||||
searchValue: null,
|
||||
createBy: null,
|
||||
createTime: null,
|
||||
updateBy: null,
|
||||
updateTime: null,
|
||||
remark: null,
|
||||
params: {},
|
||||
deptId: 103,
|
||||
parentId: 101,
|
||||
ancestors: null,
|
||||
deptName: "研发部门",
|
||||
orderNum: "1",
|
||||
leader: "若依",
|
||||
phone: null,
|
||||
email: null,
|
||||
status: "0",
|
||||
delFlag: null,
|
||||
parentName: null,
|
||||
children: []
|
||||
},
|
||||
roles: [
|
||||
{
|
||||
searchValue: null,
|
||||
createBy: null,
|
||||
createTime: null,
|
||||
updateBy: null,
|
||||
updateTime: null,
|
||||
remark: null,
|
||||
params: {},
|
||||
roleId: 1,
|
||||
roleName: "超级管理员",
|
||||
roleKey: "admin",
|
||||
roleSort: "1",
|
||||
dataScope: "1",
|
||||
menuCheckStrictly: false,
|
||||
deptCheckStrictly: false,
|
||||
status: "0",
|
||||
delFlag: null,
|
||||
flag: false,
|
||||
menuIds: null,
|
||||
deptIds: null,
|
||||
admin: true
|
||||
}
|
||||
],
|
||||
roleIds: null,
|
||||
postIds: null,
|
||||
roleId: null,
|
||||
admin: true
|
||||
}
|
||||
});
|
||||
},
|
||||
// GET POST 可省略
|
||||
'GET /api/users': [
|
||||
{
|
||||
key: '1',
|
||||
name: 'John Brown',
|
||||
age: 32,
|
||||
address: 'New York No. 1 Lake Park',
|
||||
},
|
||||
{
|
||||
key: '2',
|
||||
name: 'Jim Green',
|
||||
age: 42,
|
||||
address: 'London No. 1 Lake Park',
|
||||
},
|
||||
{
|
||||
key: '3',
|
||||
name: 'Joe Black',
|
||||
age: 32,
|
||||
address: 'Sidney No. 1 Lake Park',
|
||||
},
|
||||
],
|
||||
'POST /api/login': async (req: Request, res: Response) => {
|
||||
const { password, username, type } = req.body;
|
||||
await waitTime(2000);
|
||||
if (password === 'admin123' && username === 'admin') {
|
||||
res.send({
|
||||
code: 200,
|
||||
type,
|
||||
currentAuthority: 'admin',
|
||||
token: guid()
|
||||
});
|
||||
access = 'admin';
|
||||
return;
|
||||
}
|
||||
if (password === '123456' && username === 'user') {
|
||||
res.send({
|
||||
code: 200,
|
||||
type,
|
||||
currentAuthority: 'user',
|
||||
token: guid()
|
||||
});
|
||||
access = 'user';
|
||||
return;
|
||||
}
|
||||
if (type === 'mobile') {
|
||||
res.send({
|
||||
code: 200,
|
||||
type,
|
||||
currentAuthority: 'admin',
|
||||
token: guid()
|
||||
});
|
||||
access = 'admin';
|
||||
return;
|
||||
}
|
||||
|
||||
res.send({
|
||||
status: 'error',
|
||||
type,
|
||||
currentAuthority: 'guest',
|
||||
});
|
||||
access = 'guest';
|
||||
},
|
||||
'POST /api/logout': (req: Request, res: Response) => {
|
||||
access = '';
|
||||
res.send({ data: {}, success: true });
|
||||
},
|
||||
|
||||
'GET /api/getRouters': {
|
||||
msg: "操作成功",
|
||||
code: 200,
|
||||
data: [
|
||||
{
|
||||
name: "System",
|
||||
path: "/system",
|
||||
hidden: false,
|
||||
redirect: "noRedirect",
|
||||
component: "Layout",
|
||||
alwaysShow: true,
|
||||
meta: {
|
||||
title: "系统管理",
|
||||
icon: "system",
|
||||
noCache: false,
|
||||
link: null
|
||||
},
|
||||
children: [
|
||||
{
|
||||
name: "User",
|
||||
path: "user",
|
||||
hidden: false,
|
||||
component: "system/user/index",
|
||||
meta: {
|
||||
title: "用户管理",
|
||||
icon: "user",
|
||||
noCache: false,
|
||||
link: null
|
||||
}
|
||||
},
|
||||
{
|
||||
name: "Role",
|
||||
path: "role",
|
||||
hidden: false,
|
||||
component: "system/role/index",
|
||||
meta: {
|
||||
title: "角色管理",
|
||||
icon: "peoples",
|
||||
noCache: false,
|
||||
link: null
|
||||
}
|
||||
},
|
||||
{
|
||||
name: "Menu",
|
||||
path: "menu",
|
||||
hidden: false,
|
||||
component: "system/menu/index",
|
||||
meta: {
|
||||
title: "菜单管理",
|
||||
icon: "tree-table",
|
||||
noCache: false,
|
||||
link: null
|
||||
}
|
||||
},
|
||||
{
|
||||
name: "Dept",
|
||||
path: "dept",
|
||||
hidden: false,
|
||||
component: "system/dept/index",
|
||||
meta: {
|
||||
title: "部门管理",
|
||||
icon: "tree",
|
||||
noCache: false,
|
||||
link: null
|
||||
}
|
||||
},
|
||||
{
|
||||
name: "Post",
|
||||
path: "post",
|
||||
hidden: false,
|
||||
component: "system/post/index",
|
||||
meta: {
|
||||
title: "岗位管理",
|
||||
icon: "post",
|
||||
noCache: false,
|
||||
link: null
|
||||
}
|
||||
},
|
||||
{
|
||||
name: "Dict",
|
||||
path: "dict",
|
||||
hidden: false,
|
||||
component: "system/dict/index",
|
||||
meta: {
|
||||
title: "字典管理",
|
||||
icon: "dict",
|
||||
noCache: false,
|
||||
link: null
|
||||
}
|
||||
},
|
||||
{
|
||||
name: "Config",
|
||||
path: "config",
|
||||
hidden: false,
|
||||
component: "system/config/index",
|
||||
meta: {
|
||||
title: "参数设置",
|
||||
icon: "edit",
|
||||
noCache: false,
|
||||
link: null
|
||||
}
|
||||
},
|
||||
{
|
||||
name: "Notice",
|
||||
path: "notice",
|
||||
hidden: false,
|
||||
component: "system/notice/index",
|
||||
meta: {
|
||||
title: "通知公告",
|
||||
icon: "message",
|
||||
noCache: false,
|
||||
link: null
|
||||
}
|
||||
},
|
||||
{
|
||||
name: "Log",
|
||||
path: "log",
|
||||
hidden: false,
|
||||
redirect: "noRedirect",
|
||||
component: "ParentView",
|
||||
alwaysShow: true,
|
||||
meta: {
|
||||
title: "日志管理",
|
||||
icon: "log",
|
||||
noCache: false,
|
||||
link: null
|
||||
},
|
||||
children: [
|
||||
{
|
||||
name: "Operlog",
|
||||
path: "operlog",
|
||||
hidden: false,
|
||||
component: "monitor/operlog/index",
|
||||
meta: {
|
||||
title: "操作日志",
|
||||
icon: "form",
|
||||
noCache: false,
|
||||
link: null
|
||||
}
|
||||
},
|
||||
{
|
||||
name: "Logininfor",
|
||||
path: "logininfor",
|
||||
hidden: false,
|
||||
component: "monitor/logininfor/index",
|
||||
meta: {
|
||||
title: "登录日志",
|
||||
icon: "logininfor",
|
||||
noCache: false,
|
||||
link: null
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
name: "Monitor",
|
||||
path: "/monitor",
|
||||
hidden: false,
|
||||
redirect: "noRedirect",
|
||||
component: "Layout",
|
||||
alwaysShow: true,
|
||||
meta: {
|
||||
title: "系统监控",
|
||||
icon: "monitor",
|
||||
noCache: false,
|
||||
link: null
|
||||
},
|
||||
children: [
|
||||
{
|
||||
name: "Online",
|
||||
path: "online",
|
||||
hidden: false,
|
||||
component: "monitor/online/index",
|
||||
meta: {
|
||||
title: "在线用户",
|
||||
icon: "online",
|
||||
noCache: false,
|
||||
link: null
|
||||
}
|
||||
},
|
||||
{
|
||||
name: "Job",
|
||||
path: "job",
|
||||
hidden: false,
|
||||
component: "monitor/job/index",
|
||||
meta: {
|
||||
title: "定时任务",
|
||||
icon: "job",
|
||||
noCache: false,
|
||||
link: null
|
||||
}
|
||||
},
|
||||
{
|
||||
name: "Druid",
|
||||
path: "druid",
|
||||
hidden: false,
|
||||
component: "monitor/druid/index",
|
||||
meta: {
|
||||
title: "数据监控",
|
||||
icon: "druid",
|
||||
noCache: false,
|
||||
link: null
|
||||
}
|
||||
},
|
||||
{
|
||||
name: "Server",
|
||||
path: "server",
|
||||
hidden: false,
|
||||
component: "monitor/server/index",
|
||||
meta: {
|
||||
title: "服务监控",
|
||||
icon: "server",
|
||||
noCache: false,
|
||||
link: null
|
||||
}
|
||||
},
|
||||
{
|
||||
name: "Cache",
|
||||
path: "cache",
|
||||
hidden: false,
|
||||
component: "monitor/cache/index",
|
||||
meta: {
|
||||
title: "缓存监控",
|
||||
icon: "redis",
|
||||
noCache: false,
|
||||
link: null
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
name: "Tool",
|
||||
path: "/tool",
|
||||
hidden: false,
|
||||
redirect: "noRedirect",
|
||||
component: "Layout",
|
||||
alwaysShow: true,
|
||||
meta: {
|
||||
title: "系统工具",
|
||||
icon: "tool",
|
||||
noCache: false,
|
||||
link: null
|
||||
},
|
||||
children: [
|
||||
{
|
||||
name: "Build",
|
||||
path: "build",
|
||||
hidden: false,
|
||||
component: "tool/build/index",
|
||||
meta: {
|
||||
title: "表单构建",
|
||||
icon: "build",
|
||||
noCache: false,
|
||||
link: null
|
||||
}
|
||||
},
|
||||
{
|
||||
name: "Gen",
|
||||
path: "gen",
|
||||
hidden: false,
|
||||
component: "tool/gen/index",
|
||||
meta: {
|
||||
title: "代码生成",
|
||||
icon: "code",
|
||||
noCache: false,
|
||||
link: null
|
||||
}
|
||||
},
|
||||
{
|
||||
name: "Swagger",
|
||||
path: "swagger",
|
||||
hidden: false,
|
||||
component: "tool/swagger/index",
|
||||
meta: {
|
||||
title: "系统接口",
|
||||
icon: "swagger",
|
||||
noCache: false,
|
||||
link: null
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
'POST /api/register': (req: Request, res: Response) => {
|
||||
res.send({ status: 'ok', currentAuthority: 'user', success: true });
|
||||
},
|
||||
'GET /api/500': (req: Request, res: Response) => {
|
||||
res.status(500).send({
|
||||
timestamp: 1513932555104,
|
||||
status: 500,
|
||||
error: 'error',
|
||||
message: 'error',
|
||||
path: '/base/category/list',
|
||||
});
|
||||
},
|
||||
'GET /api/404': (req: Request, res: Response) => {
|
||||
res.status(404).send({
|
||||
timestamp: 1513932643431,
|
||||
status: 404,
|
||||
error: 'Not Found',
|
||||
message: 'No message available',
|
||||
path: '/base/category/list/2121212',
|
||||
});
|
||||
},
|
||||
'GET /api/403': (req: Request, res: Response) => {
|
||||
res.status(403).send({
|
||||
timestamp: 1513932555104,
|
||||
status: 403,
|
||||
error: 'Forbidden',
|
||||
message: 'Forbidden',
|
||||
path: '/base/category/list',
|
||||
});
|
||||
},
|
||||
'GET /api/401': (req: Request, res: Response) => {
|
||||
res.status(401).send({
|
||||
timestamp: 1513932555104,
|
||||
status: 401,
|
||||
error: 'Unauthorized',
|
||||
message: 'Unauthorized',
|
||||
path: '/base/category/list',
|
||||
});
|
||||
},
|
||||
|
||||
'GET /api/login/captcha': getFakeCaptcha,
|
||||
|
||||
'GET /api/captchaImage': getCaptchaImage,
|
||||
};
|
||||
Reference in New Issue
Block a user