Skip to content

Commit 3a2bc7b

Browse files
committed
feat: mock manage api
1 parent 696213a commit 3a2bc7b

File tree

5 files changed

+287
-15
lines changed

5 files changed

+287
-15
lines changed

src/main.js

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,18 +7,16 @@ import router from './router'
77
import store from './store/'
88
import { VueAxios } from './utils/request'
99

10+
// mock
11+
import './mock'
12+
1013
import bootstrap from './core/bootstrap'
1114
import './core/use'
1215
import './permission' // permission control
1316
import './utils/filter' // global filter
1417

1518
Vue.config.productionTip = false
1619

17-
// mock
18-
if (process.env.NODE_ENV !== 'production' || process.env.VUE_APP_PREVIEW === 'true') {
19-
import('./mock')
20-
}
21-
2220
// mount axios Vue.$http and this.$http
2321
Vue.use(VueAxios)
2422

src/mock/index.js

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,16 @@
1-
import Mock from 'mockjs'
1+
import Mock from 'mockjs2'
22

3-
import './services/auth'
4-
import './services/user'
3+
// 判断环境不是 prod 或者 preview 是 true 时,加载 mock 服务
4+
if (process.env.NODE_ENV !== 'production' || process.env.VUE_APP_PREVIEW === 'true') {
5+
// 使用同步加载依赖
6+
// 防止 vuex 中的 GetInfo 早于 mock 运行,导致无法 mock 请求返回结果
7+
console.log('mock mounting')
8+
require('./services/auth')
9+
require('./services/user')
10+
require('./services/manage')
511

6-
Mock.setup({
7-
timeout: 800 // setter delay time
8-
})
12+
Mock.setup({
13+
timeout: 800 // setter delay time
14+
})
15+
console.log('mock mounted')
16+
}

src/mock/services/auth.js

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import Mock from 'mockjs'
1+
import Mock from 'mockjs2'
22
import { builder, getBody } from '../util'
33

44
const username = ['admin', 'user', 'super']
@@ -34,5 +34,15 @@ const logout = () => {
3434
return builder({}, '[测试接口] 注销成功')
3535
}
3636

37+
const smsCaptcha = () => {
38+
return builder({ captcha: Mock.mock('@integer(10000, 99999)') })
39+
}
40+
41+
const twofactor = () => {
42+
return builder({ stepCode: Mock.mock('@integer(0, 1)') })
43+
}
44+
3745
Mock.mock(/\/auth\/login/, 'post', login)
3846
Mock.mock(/\/auth\/logout/, 'post', logout)
47+
Mock.mock(/\/account\/sms/, 'post', smsCaptcha)
48+
Mock.mock(/\/auth\/2step-code/, 'post', twofactor)

src/mock/services/manage.js

Lines changed: 256 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,256 @@
1+
import Mock from 'mockjs2'
2+
import { builder, getQueryParameters } from '../util'
3+
4+
const totalCount = 5701
5+
6+
const serverList = (options) => {
7+
const parameters = getQueryParameters(options)
8+
9+
const result = []
10+
const pageNo = parseInt(parameters.pageNo)
11+
const pageSize = parseInt(parameters.pageSize)
12+
const totalPage = Math.ceil(totalCount / pageSize)
13+
const key = (pageNo - 1) * pageSize
14+
const next = (pageNo >= totalPage ? (totalCount % pageSize) : pageSize) + 1
15+
16+
for (let i = 1; i < next; i++) {
17+
const tmpKey = key + i
18+
result.push({
19+
key: tmpKey,
20+
no: 'No ' + tmpKey,
21+
description: '这是一段描述',
22+
callNo: Mock.mock('@integer(1, 999)'),
23+
status: Mock.mock('@integer(0, 3)'),
24+
updatedAt: Mock.mock('@datetime'),
25+
editable: false
26+
})
27+
}
28+
29+
return builder({
30+
pageSize: pageSize,
31+
pageNo: pageNo,
32+
totalCount: totalCount,
33+
totalPage: totalPage,
34+
data: result
35+
})
36+
}
37+
38+
const role = () => {
39+
return builder({ message: 'ok' })
40+
}
41+
42+
const projects = () => {
43+
return builder({
44+
'data': [{
45+
id: 1,
46+
cover: 'https://gw.alipayobjects.com/zos/rmsportal/WdGqmHpayyMjiEhcKoVE.png',
47+
title: 'Alipay',
48+
description: '那是一种内在的东西, 他们到达不了,也无法触及的',
49+
status: 1,
50+
updatedAt: '2018-07-26 00:00:00'
51+
},
52+
{
53+
id: 2,
54+
cover: 'https://gw.alipayobjects.com/zos/rmsportal/zOsKZmFRdUtvpqCImOVY.png',
55+
title: 'Angular',
56+
description: '希望是一个好东西,也许是最好的,好东西是不会消亡的',
57+
status: 1,
58+
updatedAt: '2018-07-26 00:00:00'
59+
},
60+
{
61+
id: 3,
62+
cover: 'https://gw.alipayobjects.com/zos/rmsportal/dURIMkkrRFpPgTuzkwnB.png',
63+
title: 'Ant Design',
64+
description: '城镇中有那么多的酒馆,她却偏偏走进了我的酒馆',
65+
status: 1,
66+
updatedAt: '2018-07-26 00:00:00'
67+
},
68+
{
69+
id: 4,
70+
cover: 'https://gw.alipayobjects.com/zos/rmsportal/sfjbOqnsXXJgNCjCzDBL.png',
71+
title: 'Ant Design Pro',
72+
description: '那时候我只会想自己想要什么,从不想自己拥有什么',
73+
status: 1,
74+
updatedAt: '2018-07-26 00:00:00'
75+
},
76+
{
77+
id: 5,
78+
cover: 'https://gw.alipayobjects.com/zos/rmsportal/siCrBXXhmvTQGWPNLBow.png',
79+
title: 'Bootstrap',
80+
description: '凛冬将至',
81+
status: 1,
82+
updatedAt: '2018-07-26 00:00:00'
83+
},
84+
{
85+
id: 6,
86+
cover: 'https://gw.alipayobjects.com/zos/rmsportal/ComBAopevLwENQdKWiIn.png',
87+
title: 'Vue',
88+
description: '生命就像一盒巧克力,结果往往出人意料',
89+
status: 1,
90+
updatedAt: '2018-07-26 00:00:00'
91+
}
92+
],
93+
'pageSize': 10,
94+
'pageNo': 0,
95+
'totalPage': 6,
96+
'totalCount': 57
97+
})
98+
}
99+
100+
const activity = () => {
101+
return builder([{
102+
id: 1,
103+
user: {
104+
nickname: '@name',
105+
avatar: 'https://gw.alipayobjects.com/zos/rmsportal/BiazfanxmamNRoxxVxka.png'
106+
},
107+
project: {
108+
name: '白鹭酱油开发组',
109+
action: '更新',
110+
event: '番组计划'
111+
},
112+
time: '2018-08-23 14:47:00'
113+
},
114+
{
115+
id: 1,
116+
user: {
117+
nickname: '蓝莓酱',
118+
avatar: 'https://gw.alipayobjects.com/zos/rmsportal/jZUIxmJycoymBprLOUbT.png'
119+
},
120+
project: {
121+
name: '白鹭酱油开发组',
122+
action: '更新',
123+
event: '番组计划'
124+
},
125+
time: '2018-08-23 09:35:37'
126+
},
127+
{
128+
id: 1,
129+
user: {
130+
nickname: '@name',
131+
avatar: '@image(64x64)'
132+
},
133+
project: {
134+
name: '白鹭酱油开发组',
135+
action: '创建',
136+
event: '番组计划'
137+
},
138+
time: '2017-05-27 00:00:00'
139+
},
140+
{
141+
id: 1,
142+
user: {
143+
nickname: '曲丽丽',
144+
avatar: '@image(64x64)'
145+
},
146+
project: {
147+
name: '高逼格设计天团',
148+
action: '更新',
149+
event: '六月迭代'
150+
},
151+
time: '2018-08-23 14:47:00'
152+
},
153+
{
154+
id: 1,
155+
user: {
156+
nickname: '@name',
157+
avatar: '@image(64x64)'
158+
},
159+
project: {
160+
name: '高逼格设计天团',
161+
action: 'created',
162+
event: '六月迭代'
163+
},
164+
time: '2018-08-23 14:47:00'
165+
},
166+
{
167+
id: 1,
168+
user: {
169+
nickname: '曲丽丽',
170+
avatar: 'https://gw.alipayobjects.com/zos/rmsportal/BiazfanxmamNRoxxVxka.png'
171+
},
172+
project: {
173+
name: '高逼格设计天团',
174+
action: 'created',
175+
event: '六月迭代'
176+
},
177+
time: '2018-08-23 14:47:00'
178+
}
179+
])
180+
}
181+
182+
const teams = () => {
183+
return builder([{
184+
id: 1,
185+
name: '科学搬砖组',
186+
avatar: 'https://gw.alipayobjects.com/zos/rmsportal/BiazfanxmamNRoxxVxka.png'
187+
},
188+
{
189+
id: 2,
190+
name: '程序员日常',
191+
avatar: 'https://gw.alipayobjects.com/zos/rmsportal/cnrhVkzwxjPwAaCfPbdc.png'
192+
},
193+
{
194+
id: 1,
195+
name: '设计天团',
196+
avatar: 'https://gw.alipayobjects.com/zos/rmsportal/gaOngJwsRYRaVAuXXcmB.png'
197+
},
198+
{
199+
id: 1,
200+
name: '中二少女团',
201+
avatar: 'https://gw.alipayobjects.com/zos/rmsportal/ubnKSIfAJTxIgXOKlciN.png'
202+
},
203+
{
204+
id: 1,
205+
name: '骗你学计算机',
206+
avatar: 'https://gw.alipayobjects.com/zos/rmsportal/WhxKECPNujWoWEFNdnJE.png'
207+
}
208+
])
209+
}
210+
211+
const radar = () => {
212+
return builder([{
213+
item: '引用',
214+
'个人': 70,
215+
'团队': 30,
216+
'部门': 40
217+
},
218+
{
219+
item: '口碑',
220+
'个人': 60,
221+
'团队': 70,
222+
'部门': 40
223+
},
224+
{
225+
item: '产量',
226+
'个人': 50,
227+
'团队': 60,
228+
'部门': 40
229+
},
230+
{
231+
item: '贡献',
232+
'个人': 40,
233+
'团队': 50,
234+
'部门': 40
235+
},
236+
{
237+
item: '热度',
238+
'个人': 60,
239+
'团队': 70,
240+
'部门': 40
241+
},
242+
{
243+
item: '引用',
244+
'个人': 70,
245+
'团队': 50,
246+
'部门': 40
247+
}
248+
])
249+
}
250+
251+
Mock.mock(/\/service/, 'get', serverList)
252+
Mock.mock(/\/role/, 'get', role)
253+
Mock.mock(/\/list\/search\/projects/, 'get', projects)
254+
Mock.mock(/\/workplace\/activity/, 'get', activity)
255+
Mock.mock(/\/workplace\/teams/, 'get', teams)
256+
Mock.mock(/\/workplace\/radar/, 'get', radar)

src/mock/services/user.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
import Mock from 'mockjs'
2-
import { builder, getBody } from '../util'
1+
import Mock from 'mockjs2'
2+
import { builder } from '../util'
33

44
const info = (options) => {
55
console.log('options', options)
@@ -370,4 +370,4 @@ const info = (options) => {
370370
return builder(userInfo)
371371
}
372372

373-
Mock.mock(/\/user\/info/, 'get', info)
373+
Mock.mock(/\/api\/user\/info/, 'get', info)

0 commit comments

Comments
 (0)