index.js
3 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
import Mock from 'mockjs';
import { parse } from './util';
import moduleAPI from '@/api-mock/module';
let MockCache = {};
const MockBot = {
// 通用模板API
fastAPI: {
// 获取数据列表
page: (base) => config => {
const list = MockCache[base] || [];
const param = parse(config.url) || {};
const { page = 1, size = 10, ...query } = param;
// 计算有几个搜索条件
let queryCount = false;
for (let key in query) {
if (query[key]) {
queryCount += 1;
break;
}
}
// 根据搜索条件过滤结果
const filteredList = queryCount > 0 ? list.filter(data => {
let result = false;
for (let key in query) {
if (data[key] === query[key]) {
result = true;
break;
}
}
return result;
}) : list;
// 根据结果处理分页数据
const _page = Number(page);
const _limit = Number(size);
const pageList = filteredList.filter((item, index) => index < _limit * _page && index >= _limit * (_page - 1));
const response = {
page: _page,
size: _limit,
result: {
list: pageList,
total: filteredList.length,
},
code: 0,
};
return response;
},
// 查询数据详情
get: (base) => config => {
const list = MockCache[base] || [];
const arr = config.url.split('/');
const id = arr[arr.length - 1];
const result = list.find((item) => item.id == id);
return {
result: result,
code: 0,
};
},
// 新增数据
add: (base) => config => {
const param = JSON.parse(config.body);
MockCache[base].unshift(param);
return {
code: 0,
};
},
// 编辑数据
update: (base) => config => {
const param = JSON.parse(config.body);
const index = MockCache[base].findIndex(item => item.id === param.id);
MockCache[base][index] = param;
return {
code: 0,
};
},
// 删除数据
delete: (base) => config => {
const ids = JSON.parse(config.body);
ids.forEach(id => {
MockCache[base] = MockCache[base].filter(item => item.id !== id);
});
return {
code: 0,
};
}
},
// 根据通用模板API快速创建模拟接口
fastMock: (url, list) => {
MockCache[url] = list;
Mock.mock(new RegExp(`\/${url}\/page`), 'get', MockBot.fastAPI.page(url));
Mock.mock(new RegExp(`\/${url}\/get`), 'get', MockBot.fastAPI.get(url));
Mock.mock(new RegExp(`\/${url}\/get/id`), 'get', MockBot.fastAPI.get(url));
Mock.mock(new RegExp(`\/${url}\/info/id`), 'get', MockBot.fastAPI.get(url));
Mock.mock(new RegExp(`\/${url}\/add`), 'post', MockBot.fastAPI.add(url));
Mock.mock(new RegExp(`\/${url}\/update`), 'post', MockBot.fastAPI.update(url));
Mock.mock(new RegExp(`\/${url}\/delete`), 'post', MockBot.fastAPI.delete(url));
},
}
// 产品管理
MockBot.fastMock('product', moduleAPI.product);