refactor: ♻️ mock 解决方案方案替换为 vite-plugin-mock-dev-server
This commit is contained in:
168
mock/article.ts
168
mock/article.ts
@@ -1,168 +0,0 @@
|
||||
import { MockMethod } from "vite-plugin-mock";
|
||||
|
||||
const article_list: any = [];
|
||||
const count = 100;
|
||||
|
||||
for (let i = 0; i < count; i++) {
|
||||
article_list.push({
|
||||
id: i,
|
||||
timestamp: new Date().getTime(),
|
||||
author: `Author ${i}`,
|
||||
reviewer: `reviewer ${i}`,
|
||||
title: `Title ${i}`,
|
||||
importance: Math.floor(Math.random() * 3) + 1,
|
||||
type: ["CN", "US", "JP", "EU"][Math.floor(Math.random() * 4)],
|
||||
status: ["published", "draft"][Math.floor(Math.random() * 2)],
|
||||
display_time: new Date().toISOString(),
|
||||
pageviews: Math.floor(Math.random() * (5000 - 300)) + 300,
|
||||
remark: `remark ${i}`,
|
||||
});
|
||||
}
|
||||
|
||||
export default [
|
||||
{
|
||||
url: "/api/v1/article/list",
|
||||
timeout: 200,
|
||||
method: "get",
|
||||
response: ({ query }) => {
|
||||
const { importance, type, title, page = 1, limit = 10, sort } = query;
|
||||
let mock_list = article_list.filter((item: any) => {
|
||||
if (importance && item.importance !== +importance) return false;
|
||||
if (type && item.type !== type) return false;
|
||||
if (title && item.title.indexOf(title) < 0) return false;
|
||||
if (item.status === "deleted") return false;
|
||||
return true;
|
||||
});
|
||||
if (sort === "-id") {
|
||||
mock_list = mock_list.reverse();
|
||||
}
|
||||
const page_list = mock_list.filter(
|
||||
(item: any, index: number) =>
|
||||
index < limit * page && index >= limit * (page - 1)
|
||||
);
|
||||
|
||||
return {
|
||||
code: "00000",
|
||||
data: { total: mock_list.length, page: page, items: page_list },
|
||||
msg: "一切ok",
|
||||
};
|
||||
},
|
||||
},
|
||||
{
|
||||
url: "/api/v1/article/detail",
|
||||
timeout: 200,
|
||||
method: "get",
|
||||
response: ({ query }) => {
|
||||
const { id } = query;
|
||||
for (const article of article_list) {
|
||||
if (article.id === +id) {
|
||||
return {
|
||||
code: "00000",
|
||||
data: article,
|
||||
msg: "一切ok",
|
||||
};
|
||||
}
|
||||
}
|
||||
},
|
||||
},
|
||||
{
|
||||
url: "/api/v1/article/pv",
|
||||
timeout: 200,
|
||||
method: "get",
|
||||
response: ({ query }) => {
|
||||
const { id } = query;
|
||||
for (const article of article_list) {
|
||||
if (article.id === +id) {
|
||||
return {
|
||||
code: "00000",
|
||||
data: {
|
||||
pv: article.pageviews,
|
||||
pvData: [
|
||||
{ key: "PC", pv: 1024 },
|
||||
{ key: "mobile", pv: 1024 },
|
||||
{ key: "ios", pv: 1024 },
|
||||
{ key: "android", pv: 1024 },
|
||||
],
|
||||
},
|
||||
msg: "一切ok",
|
||||
};
|
||||
}
|
||||
}
|
||||
},
|
||||
},
|
||||
{
|
||||
url: "/api/v1/article/update",
|
||||
timeout: 200,
|
||||
method: "post",
|
||||
response: ({ body }) => {
|
||||
const { id, ...updatedFields } = body;
|
||||
// 查找要更新的文章
|
||||
const articleToUpdate = article_list.find(
|
||||
(article: any) => article.id === id
|
||||
);
|
||||
|
||||
// 如果找到了要更新的文章
|
||||
if (articleToUpdate) {
|
||||
// 使用 Object.assign 方法更新文章
|
||||
Object.assign(articleToUpdate, updatedFields);
|
||||
return {
|
||||
code: "00000",
|
||||
data: {
|
||||
article: articleToUpdate,
|
||||
},
|
||||
msg: "一切ok",
|
||||
};
|
||||
} else {
|
||||
console.error(`Article with id ${id} not found.`);
|
||||
}
|
||||
},
|
||||
},
|
||||
{
|
||||
url: "/api/v1/article/create",
|
||||
timeout: 200,
|
||||
method: "post",
|
||||
response: ({ body }) => {
|
||||
const { title, author, importance, type, status, remark, timestamp } =
|
||||
body;
|
||||
// article_list最大的id值;
|
||||
const maxId = article_list.reduce((maxId: number, article: any) => {
|
||||
return Math.max(maxId, article.id);
|
||||
}, -1);
|
||||
const article = {
|
||||
id: maxId + 1,
|
||||
timestamp,
|
||||
author,
|
||||
reviewer: `reviewer ${maxId + 1}`,
|
||||
title,
|
||||
importance,
|
||||
type,
|
||||
status,
|
||||
display_time: new Date(timestamp).toISOString(),
|
||||
pageviews: Math.floor(Math.random() * (5000 - 300)) + 300,
|
||||
remark,
|
||||
};
|
||||
article_list.push(article);
|
||||
return {
|
||||
code: "00000",
|
||||
data: {
|
||||
article,
|
||||
},
|
||||
msg: "一切ok",
|
||||
};
|
||||
},
|
||||
},
|
||||
{
|
||||
url: "/api/v1/article/delete",
|
||||
timeout: 200,
|
||||
method: "post",
|
||||
response: ({ body }) => {
|
||||
const { id } = body;
|
||||
const index = article_list.findIndex((article: any) => article.id === id);
|
||||
article_list.splice(index, 1);
|
||||
return {
|
||||
code: "00000",
|
||||
msg: "一切ok",
|
||||
};
|
||||
},
|
||||
},
|
||||
] as MockMethod[];
|
||||
48
mock/auth.mock.ts
Normal file
48
mock/auth.mock.ts
Normal file
@@ -0,0 +1,48 @@
|
||||
import path from "path";
|
||||
import { createDefineMock } from "vite-plugin-mock-dev-server";
|
||||
|
||||
const defineMock = createDefineMock((mock) => {
|
||||
mock.url = path.join(import.meta.env.VITE_APP_BASE_API, mock.url); // 路径会拼接为: /dev-api + url
|
||||
});
|
||||
|
||||
export default defineMock([
|
||||
{
|
||||
url: "/api/v1/auth/captcha",
|
||||
method: ["GET"],
|
||||
body: {
|
||||
code: "00000",
|
||||
data: {
|
||||
captchaKey: "534b8ef2b0a24121bec76391ddd159f9",
|
||||
captchaBase64:
|
||||
"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAHgAAAAkCAIAAADNSmkJAAAFKUlEQVR4Xu2ZXUwcVRiGV70wMWo08V5NvPXCrDbFaGpMaZW2hqQxaoiJTRsaMBCNSYtpa2JTKiFSelFa+Q/QZcMWqEhBlh+htbEpZhMrBQrlJ0hBywLLyrJ0WZbje3bqOvPNLHPWrDvdOE9ONmfe78zkzMs335wzWJhJQrBQweS/wTQ6QWgYHdoIOcecOe05O+t2WkutO+p2ZF3Ksg/YV9ZW6FATYajR3nveg60H9327r3O8c35lHgp+r05dPdJzBL73TPSQ8SaCKIxGLsPlop+K0JHrEkPuoT31e5qGmmjARACF0agYyGVNlyVm/pzZXrN9fHGcBkz0UBid+31u93i3XFFT80vN8cvHqWqih8Lo1NpUqS5vwh3vnd223VQ10UNh9NbyrcFQUK6oCawHUipSqGqiB83oBf+CXFGDMp1mS6OqiR4Ko7FexkpOrqhpHGw82nOUqiZ6KIzGrkRuorW0dJMmOy+hOCfYGzb2RBFv6HRO0gEJw/U7y+pgL1bwmTxexN6sZ31TdEwEhdG+gA+7EqyXpUO1uZH20cWL8hMTRt1N9tBXzCJrOIRoCPJpSO2RAp4HmtCdIfZ+2JWgEBN9LbR28seTGU0Zue1tMLp+YIAMSADzfvbkKX4/eb28j4YODiGin3heqmIlLja5hAUCu+nmGY3JWKvpMAlqNGgebsauBOvlqSX+JEx7p7EbTLen53XlzfmWUioqXikrc68Y8N2juJ/fyVsNChGHEE//rBANYWaZz+TRQqpLaBgNsPfDrgSpbS21YtV87IdjrlkX9JZbt5DOma2t9ITo5F+5glN22WwL/n+yDv00mw06orKxOqQ5+J04hhViwzAXETIcJDVm8uxZqktoGx2Nj9t43Wgaul/ERQiGQvtbWnDWgZYW9CXlQFjZ/7ciyHNn+Z2MexTimIeLz59TiIln0M1e+IbPpOAaDUnEYPTi6iqKxpbycs/qKo1tCslfKcffPn9enuMiPPY1vxO/ckeFQ4h46cdGqUWoidE/y54q5tPY5WDrGzQqIXot4BgchEE57e00IMCw2/1qZSVO/7SjA78o9INzcxsbrL+fnTnDDh9mmZn8F30oG1Hm+nABv5mQMopDS/h1HxtqTzWbABMe9sxpPoe9zezeOo1GELqWhPS8t46M0IAYHbdvR1aHbaOjbjfLz2eFhez6dba4yAfgF30o0BFVE8+Mjh/wFxPI+I5mAEHU6Ls+38vhTFwOBGhMDF8gkFpbC5ffsdv/uBs6dIj19dExEtARVXv9YNbop8NFY3aZ6gRRo+tu3IBHnzmdNCBMXldXJKPfL74WzWUJRE+coDUknqsOdZXQbAJYwluVTbOZI3Qt8GFzMwxyjo3RgBiN4fr+elXVpZGRLWXl6PdOTtJBSlBDUK/lnIrjOlrtqWYTQDJaF6FrTXu9sOa1ysrVoM5HVE1GFxZQcyJ/p+xzv6K/rbr6N6+XDpUBl0tKFIrbz78qWB6YnWFMCBld4XLBms+7df75ook/GNzb0GCV7U1Qfz9p64TyQWNjYD3qe9rj4SMJtQP3MyjSDPzWIRHPjH7X4YAvfXoPuyZf9Pbi3PcuXIh4mp3NllYC6XY79C+jl2o8PBipxjnBttn4MgMNnWgfcRJGPI2OL8hTj3LloIlmRicvBhiNykvecpqoa3RSY4DRcLAwyicuOepVR1JjgNFYHWONHL04czTX0UmNAUYD7Pr+xc4wqTHGaBb2OtZvHUmNYUazcA2J6etdUmOk0f8rTKMTxF91RG0D1SwYGwAAAABJRU5ErkJggg==",
|
||||
},
|
||||
msg: "一切ok",
|
||||
},
|
||||
},
|
||||
|
||||
{
|
||||
url: "/api/v1/auth/login",
|
||||
method: ["POST"],
|
||||
body: {
|
||||
code: "00000",
|
||||
data: {
|
||||
accessToken:
|
||||
"eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJhZG1pbiIsImp0aSI6IjE2YWJkNTlkOTAxNzQwZDliYmI3ZjczODBhZDkyNzNhIiwidXNlcklkIjoyLCJ1c2VybmFtZSI6ImFkbWluIiwiZGVwdElkIjoxLCJkYXRhU2NvcGUiOjEsImF1dGhvcml0aWVzIjpbIlJPTEVfQURNSU4iXSwiZXhwIjoxNjkxMTAzMzgyfQ.P4cuIfmPepl3HuguhMS7NXn5a7IUPpsLbmtA_rHOhHk",
|
||||
tokenType: "Bearer",
|
||||
refreshToken: null,
|
||||
expires: null,
|
||||
},
|
||||
msg: "一切ok",
|
||||
},
|
||||
},
|
||||
|
||||
{
|
||||
url: "/api/v1/auth/logout",
|
||||
method: ["DELETE"],
|
||||
body: {
|
||||
code: "00000",
|
||||
data: {},
|
||||
msg: "string",
|
||||
},
|
||||
},
|
||||
]);
|
||||
33
mock/dept.mock.ts
Normal file
33
mock/dept.mock.ts
Normal file
@@ -0,0 +1,33 @@
|
||||
import path from "path";
|
||||
import { createDefineMock } from "vite-plugin-mock-dev-server";
|
||||
|
||||
const defineMock = createDefineMock((mock) => {
|
||||
mock.url = path.join(import.meta.env.VITE_APP_BASE_API, mock.url); // 路径会拼接为: /dev-api + url
|
||||
});
|
||||
|
||||
export default defineMock([
|
||||
{
|
||||
url: "/api/v1/dept/options",
|
||||
method: ["GET"],
|
||||
body: {
|
||||
code: "00000",
|
||||
data: [
|
||||
{
|
||||
value: 1,
|
||||
label: "有来技术",
|
||||
children: [
|
||||
{
|
||||
value: 2,
|
||||
label: "研发部门",
|
||||
},
|
||||
{
|
||||
value: 3,
|
||||
label: "测试部门",
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
msg: "一切ok",
|
||||
},
|
||||
},
|
||||
]);
|
||||
30
mock/dept.ts
30
mock/dept.ts
@@ -1,30 +0,0 @@
|
||||
import { MockMethod } from "vite-plugin-mock";
|
||||
|
||||
export default [
|
||||
{
|
||||
url: "/api/v1/dept/options",
|
||||
method: "get",
|
||||
response: () => {
|
||||
return {
|
||||
code: "00000",
|
||||
data: [
|
||||
{
|
||||
value: 1,
|
||||
label: "有来技术",
|
||||
children: [
|
||||
{
|
||||
value: 2,
|
||||
label: "研发部门",
|
||||
},
|
||||
{
|
||||
value: 3,
|
||||
label: "测试部门",
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
msg: "一切ok",
|
||||
};
|
||||
},
|
||||
},
|
||||
] as MockMethod[];
|
||||
@@ -1,11 +1,16 @@
|
||||
import { MockMethod } from "vite-plugin-mock";
|
||||
import path from "path";
|
||||
import { createDefineMock } from "vite-plugin-mock-dev-server";
|
||||
|
||||
export default [
|
||||
const defineMock = createDefineMock((mock) => {
|
||||
mock.url = path.join(import.meta.env.VITE_APP_BASE_API, mock.url); // 路径会拼接为: /dev-api + url
|
||||
});
|
||||
|
||||
export default defineMock([
|
||||
{
|
||||
url: "/api/v1/dict/:code/options",
|
||||
method: "get",
|
||||
response: ({ url }) => {
|
||||
const typeCode = url.match(/\/api\/v1\/dict\/(\w+)\/options/)[1];
|
||||
method: ["GET"],
|
||||
body: ({ params }) => {
|
||||
const typeCode = params.code;
|
||||
|
||||
let list = null;
|
||||
|
||||
@@ -33,4 +38,4 @@ export default [
|
||||
};
|
||||
},
|
||||
},
|
||||
] as MockMethod[];
|
||||
]);
|
||||
412
mock/menu.mock.ts
Normal file
412
mock/menu.mock.ts
Normal file
@@ -0,0 +1,412 @@
|
||||
import path from "path";
|
||||
import { createDefineMock } from "vite-plugin-mock-dev-server";
|
||||
|
||||
const defineMock = createDefineMock((mock) => {
|
||||
mock.url = path.join(import.meta.env.VITE_APP_BASE_API, mock.url); // 路径会拼接为: /dev-api + url
|
||||
});
|
||||
|
||||
export default defineMock([
|
||||
{
|
||||
url: "/api/v1/menus/routes", // 路径会拼接为: /dev-api/api/v1/menus/routes
|
||||
method: ["GET"],
|
||||
body: {
|
||||
code: "00000",
|
||||
data: [
|
||||
{
|
||||
path: "/system",
|
||||
component: "Layout",
|
||||
redirect: "/system/user",
|
||||
meta: {
|
||||
title: "系统管理",
|
||||
icon: "system",
|
||||
hidden: false,
|
||||
roles: ["ADMIN"],
|
||||
keepAlive: true,
|
||||
},
|
||||
children: [
|
||||
{
|
||||
path: "user",
|
||||
component: "system/user/index",
|
||||
name: "User",
|
||||
meta: {
|
||||
title: "用户管理",
|
||||
icon: "user",
|
||||
hidden: false,
|
||||
roles: ["ADMIN"],
|
||||
keepAlive: true,
|
||||
},
|
||||
},
|
||||
{
|
||||
path: "role",
|
||||
component: "system/role/index",
|
||||
name: "Role",
|
||||
meta: {
|
||||
title: "角色管理",
|
||||
icon: "role",
|
||||
hidden: false,
|
||||
roles: ["ADMIN"],
|
||||
keepAlive: true,
|
||||
},
|
||||
},
|
||||
{
|
||||
path: "menu",
|
||||
component: "system/menu/index",
|
||||
name: "Menu",
|
||||
meta: {
|
||||
title: "菜单管理",
|
||||
icon: "menu",
|
||||
hidden: false,
|
||||
roles: ["ADMIN"],
|
||||
keepAlive: true,
|
||||
},
|
||||
},
|
||||
{
|
||||
path: "dept",
|
||||
component: "system/dept/index",
|
||||
name: "Dept",
|
||||
meta: {
|
||||
title: "部门管理",
|
||||
icon: "tree",
|
||||
hidden: false,
|
||||
roles: ["ADMIN"],
|
||||
keepAlive: true,
|
||||
},
|
||||
},
|
||||
{
|
||||
path: "dict",
|
||||
component: "system/dict/index",
|
||||
name: "DictType",
|
||||
meta: {
|
||||
title: "字典管理",
|
||||
icon: "dict",
|
||||
hidden: false,
|
||||
roles: ["ADMIN"],
|
||||
keepAlive: true,
|
||||
},
|
||||
},
|
||||
],
|
||||
},
|
||||
|
||||
{
|
||||
path: "/api",
|
||||
component: "Layout",
|
||||
meta: {
|
||||
title: "接口",
|
||||
icon: "api",
|
||||
hidden: false,
|
||||
roles: ["ADMIN"],
|
||||
keepAlive: true,
|
||||
},
|
||||
children: [
|
||||
{
|
||||
path: "apidoc",
|
||||
component: "demo/api-doc",
|
||||
name: "Apidoc",
|
||||
meta: {
|
||||
title: "接口文档",
|
||||
icon: "api",
|
||||
hidden: false,
|
||||
roles: ["ADMIN"],
|
||||
keepAlive: false,
|
||||
},
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
path: "/external-link",
|
||||
component: "Layout",
|
||||
redirect: "noredirect",
|
||||
meta: {
|
||||
title: "外部链接",
|
||||
icon: "link",
|
||||
hidden: false,
|
||||
roles: ["ADMIN"],
|
||||
keepAlive: true,
|
||||
},
|
||||
children: [
|
||||
{
|
||||
path: "https://juejin.cn/post/7228990409909108793",
|
||||
meta: {
|
||||
title: "document",
|
||||
icon: "document",
|
||||
hidden: false,
|
||||
roles: ["ADMIN"],
|
||||
keepAlive: true,
|
||||
},
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
path: "/multi-level",
|
||||
component: "Layout",
|
||||
redirect: "/multi-level/multi-level1",
|
||||
meta: {
|
||||
title: "多级菜单",
|
||||
icon: "multi_level",
|
||||
hidden: false,
|
||||
roles: ["ADMIN"],
|
||||
keepAlive: true,
|
||||
},
|
||||
children: [
|
||||
{
|
||||
path: "multi-level1",
|
||||
component: "demo/multi-level/level1",
|
||||
redirect: "/multi-level/multi-level2",
|
||||
meta: {
|
||||
title: "菜单一级",
|
||||
icon: "",
|
||||
hidden: false,
|
||||
roles: ["ADMIN"],
|
||||
keepAlive: true,
|
||||
},
|
||||
children: [
|
||||
{
|
||||
path: "multi-level2",
|
||||
component: "demo/multi-level/children/level2",
|
||||
redirect: "/multi-level/multi-level2/multi-level3-1",
|
||||
meta: {
|
||||
title: "菜单二级",
|
||||
icon: "",
|
||||
hidden: false,
|
||||
roles: ["ADMIN"],
|
||||
keepAlive: true,
|
||||
},
|
||||
children: [
|
||||
{
|
||||
path: "multi-level3-1",
|
||||
component: "demo/multi-level/children/children/level3-1",
|
||||
name: "MultiLevel31",
|
||||
meta: {
|
||||
title: "菜单三级-1",
|
||||
icon: "",
|
||||
hidden: false,
|
||||
roles: ["ADMIN"],
|
||||
keepAlive: true,
|
||||
},
|
||||
},
|
||||
{
|
||||
path: "multi-level3-2",
|
||||
component: "demo/multi-level/children/children/level3-2",
|
||||
name: "MultiLevel32",
|
||||
meta: {
|
||||
title: "菜单三级-2",
|
||||
icon: "",
|
||||
hidden: false,
|
||||
roles: ["ADMIN"],
|
||||
keepAlive: true,
|
||||
},
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
path: "/component",
|
||||
component: "Layout",
|
||||
meta: {
|
||||
title: "组件封装",
|
||||
icon: "menu",
|
||||
hidden: false,
|
||||
roles: ["ADMIN"],
|
||||
keepAlive: true,
|
||||
},
|
||||
children: [
|
||||
{
|
||||
path: "wang-editor",
|
||||
component: "demo/wang-editor",
|
||||
name: "wang-editor",
|
||||
meta: {
|
||||
title: "富文本编辑器",
|
||||
icon: "",
|
||||
hidden: false,
|
||||
roles: ["ADMIN"],
|
||||
keepAlive: true,
|
||||
},
|
||||
},
|
||||
{
|
||||
path: "upload",
|
||||
component: "demo/upload",
|
||||
name: "upload",
|
||||
meta: {
|
||||
title: "图片上传",
|
||||
icon: "",
|
||||
hidden: false,
|
||||
roles: ["ADMIN"],
|
||||
keepAlive: true,
|
||||
},
|
||||
},
|
||||
{
|
||||
path: "icon-selector",
|
||||
component: "demo/icon-selector",
|
||||
name: "icon-selector",
|
||||
meta: {
|
||||
title: "图标选择器",
|
||||
icon: "",
|
||||
hidden: false,
|
||||
roles: ["ADMIN"],
|
||||
keepAlive: true,
|
||||
},
|
||||
},
|
||||
{
|
||||
path: "dict-demo",
|
||||
component: "demo/dict",
|
||||
name: "DictDemo",
|
||||
meta: {
|
||||
title: "字典组件",
|
||||
icon: "",
|
||||
hidden: false,
|
||||
roles: ["ADMIN"],
|
||||
keepAlive: true,
|
||||
},
|
||||
},
|
||||
{
|
||||
path: "taginput",
|
||||
component: "demo/taginput",
|
||||
name: "taginput",
|
||||
meta: {
|
||||
title: "标签输入框",
|
||||
icon: "",
|
||||
hidden: false,
|
||||
roles: ["ADMIN"],
|
||||
keepAlive: true,
|
||||
},
|
||||
},
|
||||
{
|
||||
path: "signature",
|
||||
component: "demo/signature",
|
||||
name: "signature",
|
||||
meta: {
|
||||
title: "签名",
|
||||
icon: "",
|
||||
hidden: false,
|
||||
roles: ["ADMIN"],
|
||||
keepAlive: true,
|
||||
},
|
||||
},
|
||||
{
|
||||
path: "table",
|
||||
component: "demo/table",
|
||||
name: "Table",
|
||||
meta: {
|
||||
title: "表格",
|
||||
icon: "",
|
||||
hidden: false,
|
||||
roles: ["ADMIN"],
|
||||
keepAlive: true,
|
||||
},
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
path: "/table",
|
||||
component: "Layout",
|
||||
meta: {
|
||||
title: "Table",
|
||||
icon: "table",
|
||||
hidden: false,
|
||||
roles: ["ADMIN"],
|
||||
keepAlive: true,
|
||||
},
|
||||
children: [
|
||||
{
|
||||
path: "dynamic-table",
|
||||
component: "demo/table/dynamic-table/index",
|
||||
name: "DynamicTable",
|
||||
meta: {
|
||||
title: "动态Table",
|
||||
hidden: false,
|
||||
roles: ["ADMIN"],
|
||||
keepAlive: true,
|
||||
},
|
||||
},
|
||||
{
|
||||
path: "drag-table",
|
||||
component: "demo/table/drag-table",
|
||||
name: "DragTable",
|
||||
meta: {
|
||||
title: "拖拽Table",
|
||||
hidden: false,
|
||||
roles: ["ADMIN"],
|
||||
keepAlive: true,
|
||||
},
|
||||
},
|
||||
{
|
||||
path: "complex-table",
|
||||
component: "demo/table/complex-table",
|
||||
name: "ComplexTable",
|
||||
meta: {
|
||||
title: "综合Table",
|
||||
hidden: false,
|
||||
roles: ["ADMIN"],
|
||||
keepAlive: true,
|
||||
},
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
path: "/function",
|
||||
component: "Layout",
|
||||
meta: {
|
||||
title: "功能演示",
|
||||
icon: "menu",
|
||||
hidden: false,
|
||||
roles: ["ADMIN"],
|
||||
keepAlive: true,
|
||||
},
|
||||
children: [
|
||||
{
|
||||
path: "permission",
|
||||
component: "demo/permission/page",
|
||||
name: "Permission",
|
||||
meta: {
|
||||
title: "Permission",
|
||||
icon: "",
|
||||
hidden: false,
|
||||
roles: ["ADMIN"],
|
||||
keepAlive: true,
|
||||
},
|
||||
},
|
||||
{
|
||||
path: "icon-demo",
|
||||
component: "demo/icons",
|
||||
name: "Icons",
|
||||
meta: {
|
||||
title: "图标",
|
||||
icon: "",
|
||||
hidden: false,
|
||||
roles: ["ADMIN"],
|
||||
keepAlive: true,
|
||||
},
|
||||
},
|
||||
{
|
||||
path: "websocket",
|
||||
component: "demo/websocket",
|
||||
name: "Websocket",
|
||||
meta: {
|
||||
title: "Websocket",
|
||||
icon: "",
|
||||
hidden: false,
|
||||
roles: ["ADMIN"],
|
||||
keepAlive: true,
|
||||
},
|
||||
},
|
||||
{
|
||||
path: "other",
|
||||
component: "demo/other",
|
||||
meta: {
|
||||
title: "敬请期待...",
|
||||
icon: "",
|
||||
hidden: false,
|
||||
roles: ["ADMIN"],
|
||||
keepAlive: true,
|
||||
},
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
msg: "一切ok",
|
||||
},
|
||||
},
|
||||
]);
|
||||
63
mock/role.mock.ts
Normal file
63
mock/role.mock.ts
Normal file
@@ -0,0 +1,63 @@
|
||||
import path from "path";
|
||||
import { createDefineMock } from "vite-plugin-mock-dev-server";
|
||||
|
||||
const defineMock = createDefineMock((mock) => {
|
||||
mock.url = path.join(import.meta.env.VITE_APP_BASE_API, mock.url); // 路径会拼接为: /dev-api + url
|
||||
});
|
||||
|
||||
export default defineMock([
|
||||
{
|
||||
url: "/api/v1/roles/options",
|
||||
method: ["GET"],
|
||||
body: {
|
||||
code: "00000",
|
||||
data: [
|
||||
{
|
||||
value: 2,
|
||||
label: "系统管理员",
|
||||
},
|
||||
{
|
||||
value: 4,
|
||||
label: "系统管理员1",
|
||||
},
|
||||
{
|
||||
value: 5,
|
||||
label: "系统管理员2",
|
||||
},
|
||||
{
|
||||
value: 6,
|
||||
label: "系统管理员3",
|
||||
},
|
||||
{
|
||||
value: 7,
|
||||
label: "系统管理员4",
|
||||
},
|
||||
{
|
||||
value: 8,
|
||||
label: "系统管理员5",
|
||||
},
|
||||
{
|
||||
value: 9,
|
||||
label: "系统管理员6",
|
||||
},
|
||||
{
|
||||
value: 10,
|
||||
label: "系统管理员7",
|
||||
},
|
||||
{
|
||||
value: 11,
|
||||
label: "系统管理员8",
|
||||
},
|
||||
{
|
||||
value: 12,
|
||||
label: "系统管理员9",
|
||||
},
|
||||
{
|
||||
value: 3,
|
||||
label: "访问游客",
|
||||
},
|
||||
],
|
||||
msg: "一切ok",
|
||||
},
|
||||
},
|
||||
]);
|
||||
165
mock/role.ts
165
mock/role.ts
@@ -1,165 +0,0 @@
|
||||
import { MockMethod } from "vite-plugin-mock";
|
||||
|
||||
export default [
|
||||
{
|
||||
url: "/api/v1/roles/options",
|
||||
method: "get",
|
||||
response: () => {
|
||||
return {
|
||||
code: "00000",
|
||||
data: [
|
||||
{
|
||||
value: 2,
|
||||
label: "系统管理员",
|
||||
},
|
||||
{
|
||||
value: 4,
|
||||
label: "系统管理员1",
|
||||
},
|
||||
{
|
||||
value: 5,
|
||||
label: "系统管理员2",
|
||||
},
|
||||
{
|
||||
value: 6,
|
||||
label: "系统管理员3",
|
||||
},
|
||||
{
|
||||
value: 7,
|
||||
label: "系统管理员4",
|
||||
},
|
||||
{
|
||||
value: 8,
|
||||
label: "系统管理员5",
|
||||
},
|
||||
{
|
||||
value: 9,
|
||||
label: "系统管理员6",
|
||||
},
|
||||
{
|
||||
value: 10,
|
||||
label: "系统管理员7",
|
||||
},
|
||||
{
|
||||
value: 11,
|
||||
label: "系统管理员8",
|
||||
},
|
||||
{
|
||||
value: 12,
|
||||
label: "系统管理员9",
|
||||
},
|
||||
{
|
||||
value: 3,
|
||||
label: "访问游客",
|
||||
},
|
||||
],
|
||||
msg: "一切ok",
|
||||
};
|
||||
},
|
||||
},
|
||||
{
|
||||
url: "/api/v1/roles/page",
|
||||
method: "get",
|
||||
response: () => {
|
||||
return {
|
||||
code: "00000",
|
||||
data: {
|
||||
list: [
|
||||
{
|
||||
id: 2,
|
||||
name: "系统管理员",
|
||||
code: "ADMIN",
|
||||
status: 1,
|
||||
sort: 2,
|
||||
createTime: "2021-03-25 12:39:54",
|
||||
updateTime: null,
|
||||
},
|
||||
{
|
||||
id: 3,
|
||||
name: "访问游客",
|
||||
code: "GUEST",
|
||||
status: 1,
|
||||
sort: 3,
|
||||
createTime: "2021-05-26 15:49:05",
|
||||
updateTime: "2019-05-05 16:00:00",
|
||||
},
|
||||
{
|
||||
id: 4,
|
||||
name: "系统管理员1",
|
||||
code: "ADMIN1",
|
||||
status: 1,
|
||||
sort: 2,
|
||||
createTime: "2021-03-25 12:39:54",
|
||||
updateTime: null,
|
||||
},
|
||||
{
|
||||
id: 5,
|
||||
name: "系统管理员2",
|
||||
code: "ADMIN1",
|
||||
status: 1,
|
||||
sort: 2,
|
||||
createTime: "2021-03-25 12:39:54",
|
||||
updateTime: null,
|
||||
},
|
||||
{
|
||||
id: 6,
|
||||
name: "系统管理员3",
|
||||
code: "ADMIN1",
|
||||
status: 1,
|
||||
sort: 2,
|
||||
createTime: "2021-03-25 12:39:54",
|
||||
updateTime: null,
|
||||
},
|
||||
{
|
||||
id: 7,
|
||||
name: "系统管理员4",
|
||||
code: "ADMIN1",
|
||||
status: 1,
|
||||
sort: 2,
|
||||
createTime: "2021-03-25 12:39:54",
|
||||
updateTime: null,
|
||||
},
|
||||
{
|
||||
id: 8,
|
||||
name: "系统管理员5",
|
||||
code: "ADMIN1",
|
||||
status: 1,
|
||||
sort: 2,
|
||||
createTime: "2021-03-25 12:39:54",
|
||||
updateTime: null,
|
||||
},
|
||||
{
|
||||
id: 9,
|
||||
name: "系统管理员6",
|
||||
code: "ADMIN1",
|
||||
status: 1,
|
||||
sort: 2,
|
||||
createTime: "2021-03-25 12:39:54",
|
||||
updateTime: null,
|
||||
},
|
||||
{
|
||||
id: 10,
|
||||
name: "系统管理员7",
|
||||
code: "ADMIN1",
|
||||
status: 1,
|
||||
sort: 2,
|
||||
createTime: "2021-03-25 12:39:54",
|
||||
updateTime: null,
|
||||
},
|
||||
{
|
||||
id: 11,
|
||||
name: "系统管理员8",
|
||||
code: "ADMIN1",
|
||||
status: 1,
|
||||
sort: 2,
|
||||
createTime: "2021-03-25 12:39:54",
|
||||
updateTime: null,
|
||||
},
|
||||
],
|
||||
total: 11,
|
||||
},
|
||||
msg: "一切ok",
|
||||
};
|
||||
},
|
||||
},
|
||||
] as MockMethod[];
|
||||
412
mock/router.ts
412
mock/router.ts
@@ -1,412 +0,0 @@
|
||||
import { MockMethod } from "vite-plugin-mock";
|
||||
const url = "/api/v1/menus/routes";
|
||||
const method = "get";
|
||||
const data = {
|
||||
code: "00000",
|
||||
data: [
|
||||
{
|
||||
path: "/system",
|
||||
component: "Layout",
|
||||
redirect: "/system/user",
|
||||
meta: {
|
||||
title: "系统管理",
|
||||
icon: "system",
|
||||
hidden: false,
|
||||
roles: ["ADMIN"],
|
||||
keepAlive: true,
|
||||
},
|
||||
children: [
|
||||
{
|
||||
path: "user",
|
||||
component: "system/user/index",
|
||||
name: "User",
|
||||
meta: {
|
||||
title: "用户管理",
|
||||
icon: "user",
|
||||
hidden: false,
|
||||
roles: ["ADMIN"],
|
||||
keepAlive: true,
|
||||
},
|
||||
},
|
||||
{
|
||||
path: "role",
|
||||
component: "system/role/index",
|
||||
name: "Role",
|
||||
meta: {
|
||||
title: "角色管理",
|
||||
icon: "role",
|
||||
hidden: false,
|
||||
roles: ["ADMIN"],
|
||||
keepAlive: true,
|
||||
},
|
||||
},
|
||||
{
|
||||
path: "menu",
|
||||
component: "system/menu/index",
|
||||
name: "Menu",
|
||||
meta: {
|
||||
title: "菜单管理",
|
||||
icon: "menu",
|
||||
hidden: false,
|
||||
roles: ["ADMIN"],
|
||||
keepAlive: true,
|
||||
},
|
||||
},
|
||||
{
|
||||
path: "dept",
|
||||
component: "system/dept/index",
|
||||
name: "Dept",
|
||||
meta: {
|
||||
title: "部门管理",
|
||||
icon: "tree",
|
||||
hidden: false,
|
||||
roles: ["ADMIN"],
|
||||
keepAlive: true,
|
||||
},
|
||||
},
|
||||
{
|
||||
path: "dict",
|
||||
component: "system/dict/index",
|
||||
name: "DictType",
|
||||
meta: {
|
||||
title: "字典管理",
|
||||
icon: "dict",
|
||||
hidden: false,
|
||||
roles: ["ADMIN"],
|
||||
keepAlive: true,
|
||||
},
|
||||
},
|
||||
],
|
||||
},
|
||||
|
||||
{
|
||||
path: "/api",
|
||||
component: "Layout",
|
||||
meta: {
|
||||
title: "接口",
|
||||
icon: "api",
|
||||
hidden: false,
|
||||
roles: ["ADMIN"],
|
||||
keepAlive: true,
|
||||
},
|
||||
children: [
|
||||
{
|
||||
path: "apidoc",
|
||||
component: "demo/api-doc",
|
||||
name: "Apidoc",
|
||||
meta: {
|
||||
title: "接口文档",
|
||||
icon: "api",
|
||||
hidden: false,
|
||||
roles: ["ADMIN"],
|
||||
keepAlive: false,
|
||||
},
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
path: "/external-link",
|
||||
component: "Layout",
|
||||
redirect: "noredirect",
|
||||
meta: {
|
||||
title: "外部链接",
|
||||
icon: "link",
|
||||
hidden: false,
|
||||
roles: ["ADMIN"],
|
||||
keepAlive: true,
|
||||
},
|
||||
children: [
|
||||
{
|
||||
path: "https://juejin.cn/post/7228990409909108793",
|
||||
meta: {
|
||||
title: "document",
|
||||
icon: "document",
|
||||
hidden: false,
|
||||
roles: ["ADMIN"],
|
||||
keepAlive: true,
|
||||
},
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
path: "/multi-level",
|
||||
component: "Layout",
|
||||
redirect: "/multi-level/multi-level1",
|
||||
meta: {
|
||||
title: "多级菜单",
|
||||
icon: "multi_level",
|
||||
hidden: false,
|
||||
roles: ["ADMIN"],
|
||||
keepAlive: true,
|
||||
},
|
||||
children: [
|
||||
{
|
||||
path: "multi-level1",
|
||||
component: "demo/multi-level/level1",
|
||||
redirect: "/multi-level/multi-level2",
|
||||
meta: {
|
||||
title: "菜单一级",
|
||||
icon: "",
|
||||
hidden: false,
|
||||
roles: ["ADMIN"],
|
||||
keepAlive: true,
|
||||
},
|
||||
children: [
|
||||
{
|
||||
path: "multi-level2",
|
||||
component: "demo/multi-level/children/level2",
|
||||
redirect: "/multi-level/multi-level2/multi-level3-1",
|
||||
meta: {
|
||||
title: "菜单二级",
|
||||
icon: "",
|
||||
hidden: false,
|
||||
roles: ["ADMIN"],
|
||||
keepAlive: true,
|
||||
},
|
||||
children: [
|
||||
{
|
||||
path: "multi-level3-1",
|
||||
component: "demo/multi-level/children/children/level3-1",
|
||||
name: "MultiLevel31",
|
||||
meta: {
|
||||
title: "菜单三级-1",
|
||||
icon: "",
|
||||
hidden: false,
|
||||
roles: ["ADMIN"],
|
||||
keepAlive: true,
|
||||
},
|
||||
},
|
||||
{
|
||||
path: "multi-level3-2",
|
||||
component: "demo/multi-level/children/children/level3-2",
|
||||
name: "MultiLevel32",
|
||||
meta: {
|
||||
title: "菜单三级-2",
|
||||
icon: "",
|
||||
hidden: false,
|
||||
roles: ["ADMIN"],
|
||||
keepAlive: true,
|
||||
},
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
path: "/component",
|
||||
component: "Layout",
|
||||
meta: {
|
||||
title: "组件封装",
|
||||
icon: "menu",
|
||||
hidden: false,
|
||||
roles: ["ADMIN"],
|
||||
keepAlive: true,
|
||||
},
|
||||
children: [
|
||||
{
|
||||
path: "wang-editor",
|
||||
component: "demo/wang-editor",
|
||||
name: "wang-editor",
|
||||
meta: {
|
||||
title: "富文本编辑器",
|
||||
icon: "",
|
||||
hidden: false,
|
||||
roles: ["ADMIN"],
|
||||
keepAlive: true,
|
||||
},
|
||||
},
|
||||
{
|
||||
path: "upload",
|
||||
component: "demo/upload",
|
||||
name: "upload",
|
||||
meta: {
|
||||
title: "图片上传",
|
||||
icon: "",
|
||||
hidden: false,
|
||||
roles: ["ADMIN"],
|
||||
keepAlive: true,
|
||||
},
|
||||
},
|
||||
{
|
||||
path: "icon-selector",
|
||||
component: "demo/icon-selector",
|
||||
name: "icon-selector",
|
||||
meta: {
|
||||
title: "图标选择器",
|
||||
icon: "",
|
||||
hidden: false,
|
||||
roles: ["ADMIN"],
|
||||
keepAlive: true,
|
||||
},
|
||||
},
|
||||
{
|
||||
path: "dict-demo",
|
||||
component: "demo/dict",
|
||||
name: "DictDemo",
|
||||
meta: {
|
||||
title: "字典组件",
|
||||
icon: "",
|
||||
hidden: false,
|
||||
roles: ["ADMIN"],
|
||||
keepAlive: true,
|
||||
},
|
||||
},
|
||||
{
|
||||
path: "taginput",
|
||||
component: "demo/taginput",
|
||||
name: "taginput",
|
||||
meta: {
|
||||
title: "标签输入框",
|
||||
icon: "",
|
||||
hidden: false,
|
||||
roles: ["ADMIN"],
|
||||
keepAlive: true,
|
||||
},
|
||||
},
|
||||
{
|
||||
path: "signature",
|
||||
component: "demo/signature",
|
||||
name: "signature",
|
||||
meta: {
|
||||
title: "签名",
|
||||
icon: "",
|
||||
hidden: false,
|
||||
roles: ["ADMIN"],
|
||||
keepAlive: true,
|
||||
},
|
||||
},
|
||||
{
|
||||
path: "table",
|
||||
component: "demo/table",
|
||||
name: "Table",
|
||||
meta: {
|
||||
title: "表格",
|
||||
icon: "",
|
||||
hidden: false,
|
||||
roles: ["ADMIN"],
|
||||
keepAlive: true,
|
||||
},
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
path: "/table",
|
||||
component: "Layout",
|
||||
meta: {
|
||||
title: "Table",
|
||||
icon: "table",
|
||||
hidden: false,
|
||||
roles: ["ADMIN"],
|
||||
keepAlive: true,
|
||||
},
|
||||
children: [
|
||||
{
|
||||
path: "dynamic-table",
|
||||
component: "demo/table/dynamic-table/index",
|
||||
name: "DynamicTable",
|
||||
meta: {
|
||||
title: "动态Table",
|
||||
hidden: false,
|
||||
roles: ["ADMIN"],
|
||||
keepAlive: true,
|
||||
},
|
||||
},
|
||||
{
|
||||
path: "drag-table",
|
||||
component: "demo/table/drag-table",
|
||||
name: "DragTable",
|
||||
meta: {
|
||||
title: "拖拽Table",
|
||||
hidden: false,
|
||||
roles: ["ADMIN"],
|
||||
keepAlive: true,
|
||||
},
|
||||
},
|
||||
{
|
||||
path: "complex-table",
|
||||
component: "demo/table/complex-table",
|
||||
name: "ComplexTable",
|
||||
meta: {
|
||||
title: "综合Table",
|
||||
hidden: false,
|
||||
roles: ["ADMIN"],
|
||||
keepAlive: true,
|
||||
},
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
path: "/function",
|
||||
component: "Layout",
|
||||
meta: {
|
||||
title: "功能演示",
|
||||
icon: "menu",
|
||||
hidden: false,
|
||||
roles: ["ADMIN"],
|
||||
keepAlive: true,
|
||||
},
|
||||
children: [
|
||||
{
|
||||
path: "permission",
|
||||
component: "demo/permission/page",
|
||||
name: "Permission",
|
||||
meta: {
|
||||
title: "Permission",
|
||||
icon: "",
|
||||
hidden: false,
|
||||
roles: ["ADMIN"],
|
||||
keepAlive: true,
|
||||
},
|
||||
},
|
||||
{
|
||||
path: "icon-demo",
|
||||
component: "demo/icons",
|
||||
name: "Icons",
|
||||
meta: {
|
||||
title: "图标",
|
||||
icon: "",
|
||||
hidden: false,
|
||||
roles: ["ADMIN"],
|
||||
keepAlive: true,
|
||||
},
|
||||
},
|
||||
{
|
||||
path: "websocket",
|
||||
component: "demo/websocket",
|
||||
name: "Websocket",
|
||||
meta: {
|
||||
title: "Websocket",
|
||||
icon: "",
|
||||
hidden: false,
|
||||
roles: ["ADMIN"],
|
||||
keepAlive: true,
|
||||
},
|
||||
},
|
||||
{
|
||||
path: "other",
|
||||
component: "demo/other",
|
||||
meta: {
|
||||
title: "敬请期待...",
|
||||
icon: "",
|
||||
hidden: false,
|
||||
roles: ["ADMIN"],
|
||||
keepAlive: true,
|
||||
},
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
msg: "一切ok",
|
||||
};
|
||||
|
||||
export default [
|
||||
{
|
||||
url: url,
|
||||
method: method,
|
||||
response: () => {
|
||||
return data;
|
||||
},
|
||||
},
|
||||
] as MockMethod[];
|
||||
131
mock/user.mock.ts
Normal file
131
mock/user.mock.ts
Normal file
@@ -0,0 +1,131 @@
|
||||
import path from "path";
|
||||
import { createDefineMock } from "vite-plugin-mock-dev-server";
|
||||
|
||||
const defineMock = createDefineMock((mock) => {
|
||||
mock.url = path.join(import.meta.env.VITE_APP_BASE_API, mock.url); // 路径会拼接为: /dev-api + url
|
||||
});
|
||||
|
||||
export default defineMock([
|
||||
{
|
||||
url: "/api/v1/users/me",
|
||||
method: ["GET"],
|
||||
body: {
|
||||
code: "00000",
|
||||
data: {
|
||||
userId: 2,
|
||||
nickname: "系统管理员",
|
||||
avatar:
|
||||
"https://oss.youlai.tech/youlai-boot/2023/05/16/811270ef31f548af9cffc026dfc3777b.gif",
|
||||
roles: ["ADMIN"],
|
||||
perms: [
|
||||
"sys:menu:delete",
|
||||
"sys:dept:edit",
|
||||
"sys:dict_type:add",
|
||||
"sys:dict:edit",
|
||||
"sys:dict:delete",
|
||||
"sys:dict_type:edit",
|
||||
"sys:menu:add",
|
||||
"sys:user:add",
|
||||
"sys:role:edit",
|
||||
"sys:dept:delete",
|
||||
"sys:user:edit",
|
||||
"sys:user:delete",
|
||||
"sys:user:reset_pwd",
|
||||
"sys:dept:add",
|
||||
"sys:role:delete",
|
||||
"sys:dict_type:delete",
|
||||
"sys:menu:edit",
|
||||
"sys:dict:add",
|
||||
"sys:role:add",
|
||||
],
|
||||
},
|
||||
msg: "一切ok",
|
||||
},
|
||||
},
|
||||
|
||||
{
|
||||
url: "/api/v1/users/page",
|
||||
method: ["GET"],
|
||||
body: {
|
||||
code: "00000",
|
||||
data: {
|
||||
list: [
|
||||
{
|
||||
id: 2,
|
||||
username: "admin",
|
||||
nickname: "系统管理员",
|
||||
mobile: "17621210366",
|
||||
genderLabel: "男",
|
||||
avatar:
|
||||
"https://oss.youlai.tech/youlai-boot/2023/05/16/811270ef31f548af9cffc026dfc3777b.gif",
|
||||
email: null,
|
||||
status: 1,
|
||||
deptName: "有来技术",
|
||||
roleNames: "系统管理员",
|
||||
createTime: "2019-10-10",
|
||||
},
|
||||
{
|
||||
id: 3,
|
||||
username: "test",
|
||||
nickname: "测试小用户",
|
||||
mobile: "17621210366",
|
||||
genderLabel: "男",
|
||||
avatar:
|
||||
"https://oss.youlai.tech/youlai-boot/2023/05/16/811270ef31f548af9cffc026dfc3777b.gif",
|
||||
email: null,
|
||||
status: 1,
|
||||
deptName: "测试部门",
|
||||
roleNames: "访问游客",
|
||||
createTime: "2021-06-04",
|
||||
},
|
||||
],
|
||||
total: 2,
|
||||
},
|
||||
msg: "一切ok",
|
||||
},
|
||||
},
|
||||
|
||||
{
|
||||
url: "/api/v1/users/:userId/form",
|
||||
method: ["GET"],
|
||||
body: ({ params }) => {
|
||||
const userId = params.userId;
|
||||
let formData = null;
|
||||
if (userId == 2) {
|
||||
formData = {
|
||||
id: 2,
|
||||
username: "admin",
|
||||
nickname: "系统管理员",
|
||||
mobile: "17621210366",
|
||||
gender: 1,
|
||||
avatar:
|
||||
"https://oss.youlai.tech/youlai-boot/2023/05/16/811270ef31f548af9cffc026dfc3777b.gif",
|
||||
email: "",
|
||||
status: 1,
|
||||
deptId: 1,
|
||||
roleIds: [2],
|
||||
};
|
||||
} else if (userId == 3) {
|
||||
formData = {
|
||||
id: 3,
|
||||
username: "test",
|
||||
nickname: "测试小用户",
|
||||
mobile: "17621210366",
|
||||
gender: 1,
|
||||
avatar:
|
||||
"https://oss.youlai.tech/youlai-boot/2023/05/16/811270ef31f548af9cffc026dfc3777b.gif",
|
||||
email: "youlaitech@163.com",
|
||||
status: 1,
|
||||
deptId: 3,
|
||||
roleIds: [3],
|
||||
};
|
||||
}
|
||||
|
||||
return {
|
||||
code: "00000",
|
||||
data: formData,
|
||||
msg: "一切ok",
|
||||
};
|
||||
},
|
||||
},
|
||||
]);
|
||||
182
mock/user.ts
182
mock/user.ts
@@ -1,182 +0,0 @@
|
||||
import { MockMethod } from "vite-plugin-mock";
|
||||
|
||||
export default [
|
||||
{
|
||||
url: "/api/hello_world",
|
||||
method: "get",
|
||||
response: (request) => {
|
||||
return {
|
||||
msg: "hello world",
|
||||
headers: request.headers,
|
||||
};
|
||||
},
|
||||
},
|
||||
{
|
||||
url: "/api/v1/auth/captcha",
|
||||
method: "get",
|
||||
response: () => {
|
||||
return {
|
||||
code: "00000",
|
||||
data: {
|
||||
captchaKey: "534b8ef2b0a24121bec76391ddd159f9",
|
||||
captchaBase64:
|
||||
"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAHgAAAAkCAIAAADNSmkJAAAFKUlEQVR4Xu2ZXUwcVRiGV70wMWo08V5NvPXCrDbFaGpMaZW2hqQxaoiJTRsaMBCNSYtpa2JTKiFSelFa+Q/QZcMWqEhBlh+htbEpZhMrBQrlJ0hBywLLyrJ0WZbje3bqOvPNLHPWrDvdOE9ONmfe78zkzMs335wzWJhJQrBQweS/wTQ6QWgYHdoIOcecOe05O+t2WkutO+p2ZF3Ksg/YV9ZW6FATYajR3nveg60H9327r3O8c35lHgp+r05dPdJzBL73TPSQ8SaCKIxGLsPlop+K0JHrEkPuoT31e5qGmmjARACF0agYyGVNlyVm/pzZXrN9fHGcBkz0UBid+31u93i3XFFT80vN8cvHqWqih8Lo1NpUqS5vwh3vnd223VQ10UNh9NbyrcFQUK6oCawHUipSqGqiB83oBf+CXFGDMp1mS6OqiR4Ko7FexkpOrqhpHGw82nOUqiZ6KIzGrkRuorW0dJMmOy+hOCfYGzb2RBFv6HRO0gEJw/U7y+pgL1bwmTxexN6sZ31TdEwEhdG+gA+7EqyXpUO1uZH20cWL8hMTRt1N9tBXzCJrOIRoCPJpSO2RAp4HmtCdIfZ+2JWgEBN9LbR28seTGU0Zue1tMLp+YIAMSADzfvbkKX4/eb28j4YODiGin3heqmIlLja5hAUCu+nmGY3JWKvpMAlqNGgebsauBOvlqSX+JEx7p7EbTLen53XlzfmWUioqXikrc68Y8N2juJ/fyVsNChGHEE//rBANYWaZz+TRQqpLaBgNsPfDrgSpbS21YtV87IdjrlkX9JZbt5DOma2t9ITo5F+5glN22WwL/n+yDv00mw06orKxOqQ5+J04hhViwzAXETIcJDVm8uxZqktoGx2Nj9t43Wgaul/ERQiGQvtbWnDWgZYW9CXlQFjZ/7ciyHNn+Z2MexTimIeLz59TiIln0M1e+IbPpOAaDUnEYPTi6iqKxpbycs/qKo1tCslfKcffPn9enuMiPPY1vxO/ckeFQ4h46cdGqUWoidE/y54q5tPY5WDrGzQqIXot4BgchEE57e00IMCw2/1qZSVO/7SjA78o9INzcxsbrL+fnTnDDh9mmZn8F30oG1Hm+nABv5mQMopDS/h1HxtqTzWbABMe9sxpPoe9zezeOo1GELqWhPS8t46M0IAYHbdvR1aHbaOjbjfLz2eFhez6dba4yAfgF30o0BFVE8+Mjh/wFxPI+I5mAEHU6Ls+38vhTFwOBGhMDF8gkFpbC5ffsdv/uBs6dIj19dExEtARVXv9YNbop8NFY3aZ6gRRo+tu3IBHnzmdNCBMXldXJKPfL74WzWUJRE+coDUknqsOdZXQbAJYwluVTbOZI3Qt8GFzMwxyjo3RgBiN4fr+elXVpZGRLWXl6PdOTtJBSlBDUK/lnIrjOlrtqWYTQDJaF6FrTXu9sOa1ysrVoM5HVE1GFxZQcyJ/p+xzv6K/rbr6N6+XDpUBl0tKFIrbz78qWB6YnWFMCBld4XLBms+7df75ook/GNzb0GCV7U1Qfz9p64TyQWNjYD3qe9rj4SMJtQP3MyjSDPzWIRHPjH7X4YAvfXoPuyZf9Pbi3PcuXIh4mp3NllYC6XY79C+jl2o8PBipxjnBttn4MgMNnWgfcRJGPI2OL8hTj3LloIlmRicvBhiNykvecpqoa3RSY4DRcLAwyicuOepVR1JjgNFYHWONHL04czTX0UmNAUYD7Pr+xc4wqTHGaBb2OtZvHUmNYUazcA2J6etdUmOk0f8rTKMTxF91RG0D1SwYGwAAAABJRU5ErkJggg==",
|
||||
},
|
||||
msg: "一切ok",
|
||||
};
|
||||
},
|
||||
},
|
||||
{
|
||||
url: "/api/v1/auth/login",
|
||||
method: "post",
|
||||
response: () => {
|
||||
return {
|
||||
code: "00000",
|
||||
data: {
|
||||
accessToken:
|
||||
"eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJhZG1pbiIsImp0aSI6IjE2YWJkNTlkOTAxNzQwZDliYmI3ZjczODBhZDkyNzNhIiwidXNlcklkIjoyLCJ1c2VybmFtZSI6ImFkbWluIiwiZGVwdElkIjoxLCJkYXRhU2NvcGUiOjEsImF1dGhvcml0aWVzIjpbIlJPTEVfQURNSU4iXSwiZXhwIjoxNjkxMTAzMzgyfQ.P4cuIfmPepl3HuguhMS7NXn5a7IUPpsLbmtA_rHOhHk",
|
||||
tokenType: "Bearer",
|
||||
refreshToken: null,
|
||||
expires: null,
|
||||
},
|
||||
msg: "一切ok",
|
||||
};
|
||||
},
|
||||
},
|
||||
{
|
||||
url: "/api/v1/users/me",
|
||||
method: "get",
|
||||
response: () => {
|
||||
return {
|
||||
code: "00000",
|
||||
data: {
|
||||
userId: 2,
|
||||
nickname: "系统管理员",
|
||||
avatar:
|
||||
"https://oss.youlai.tech/youlai-boot/2023/05/16/811270ef31f548af9cffc026dfc3777b.gif",
|
||||
roles: ["ADMIN"],
|
||||
perms: [
|
||||
"sys:menu:delete",
|
||||
"sys:dept:edit",
|
||||
"sys:dict_type:add",
|
||||
"sys:dict:edit",
|
||||
"sys:dict:delete",
|
||||
"sys:dict_type:edit",
|
||||
"sys:menu:add",
|
||||
"sys:user:add",
|
||||
"sys:role:edit",
|
||||
"sys:dept:delete",
|
||||
"sys:user:edit",
|
||||
"sys:user:delete",
|
||||
"sys:user:reset_pwd",
|
||||
"sys:dept:add",
|
||||
"sys:role:delete",
|
||||
"sys:dict_type:delete",
|
||||
"sys:menu:edit",
|
||||
"sys:dict:add",
|
||||
"sys:role:add",
|
||||
],
|
||||
},
|
||||
msg: "一切ok",
|
||||
};
|
||||
},
|
||||
},
|
||||
{
|
||||
url: "/api/v1/auth/logout",
|
||||
method: "delete",
|
||||
response: () => {
|
||||
return {
|
||||
code: "00000",
|
||||
data: {},
|
||||
msg: "string",
|
||||
};
|
||||
},
|
||||
},
|
||||
{
|
||||
url: "/api/v1/users/page",
|
||||
method: "get",
|
||||
response: () => {
|
||||
return {
|
||||
code: "00000",
|
||||
data: {
|
||||
list: [
|
||||
{
|
||||
id: 2,
|
||||
username: "admin",
|
||||
nickname: "系统管理员",
|
||||
mobile: "17621210366",
|
||||
genderLabel: "男",
|
||||
avatar:
|
||||
"https://oss.youlai.tech/youlai-boot/2023/05/16/811270ef31f548af9cffc026dfc3777b.gif",
|
||||
email: null,
|
||||
status: 1,
|
||||
deptName: "有来技术",
|
||||
roleNames: "系统管理员",
|
||||
createTime: "2019-10-10",
|
||||
},
|
||||
{
|
||||
id: 3,
|
||||
username: "test",
|
||||
nickname: "测试小用户",
|
||||
mobile: "17621210366",
|
||||
genderLabel: "男",
|
||||
avatar:
|
||||
"https://oss.youlai.tech/youlai-boot/2023/05/16/811270ef31f548af9cffc026dfc3777b.gif",
|
||||
email: null,
|
||||
status: 1,
|
||||
deptName: "测试部门",
|
||||
roleNames: "访问游客",
|
||||
createTime: "2021-06-04",
|
||||
},
|
||||
],
|
||||
total: 2,
|
||||
},
|
||||
msg: "一切ok",
|
||||
};
|
||||
},
|
||||
},
|
||||
|
||||
{
|
||||
url: "/api/v1/users/:id/form",
|
||||
method: "get",
|
||||
response: ({ url }) => {
|
||||
const id = url.match(/\/api\/v1\/users\/(\d+)\/form/)[1];
|
||||
let formData = null;
|
||||
if (id == 2) {
|
||||
formData = {
|
||||
id: 2,
|
||||
username: "admin",
|
||||
nickname: "系统管理员",
|
||||
mobile: "17621210366",
|
||||
gender: 1,
|
||||
avatar:
|
||||
"https://oss.youlai.tech/youlai-boot/2023/05/16/811270ef31f548af9cffc026dfc3777b.gif",
|
||||
email: "",
|
||||
status: 1,
|
||||
deptId: 1,
|
||||
roleIds: [2],
|
||||
};
|
||||
} else if (id == 3) {
|
||||
formData = {
|
||||
id: 3,
|
||||
username: "test",
|
||||
nickname: "测试小用户",
|
||||
mobile: "17621210366",
|
||||
gender: 1,
|
||||
avatar:
|
||||
"https://oss.youlai.tech/youlai-boot/2023/05/16/811270ef31f548af9cffc026dfc3777b.gif",
|
||||
email: "youlaitech@163.com",
|
||||
status: 1,
|
||||
deptId: 3,
|
||||
roleIds: [3],
|
||||
};
|
||||
}
|
||||
|
||||
return {
|
||||
code: "00000",
|
||||
data: formData,
|
||||
msg: "一切ok",
|
||||
};
|
||||
},
|
||||
},
|
||||
] as MockMethod[];
|
||||
Reference in New Issue
Block a user