.roadhogrc.mock.js 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. import mockjs from 'mockjs';
  2. import { format, delay } from 'roadhog-api-doc';
  3. import { campusList } from './mock/campus';
  4. import * as api from './src/utils/api';
  5. // mock数据持久化
  6. global.campusList = campusList;
  7. // 操作成功响应内容
  8. const successMsg = { code: 200, success: true, message: null };
  9. // 查询
  10. const query = (dataset, params) => {
  11. const pageSize = parseInt(params.pageSize) || 10;
  12. const pageNo = parseInt(params.pageNo) || 1;
  13. delete params['pageSize'];
  14. delete params['pageNo'];
  15. const queryKeys = Object.keys(params);
  16. const newDataset = dataset.filter(item => {
  17. let flag = true;
  18. for (let key of queryKeys) {
  19. if (item[key] !== params[key]) {
  20. flag = false;
  21. break;
  22. }
  23. }
  24. return flag;
  25. });
  26. const totalSize = newDataset.length || 0;
  27. const list = newDataset.slice(pageSize * (pageNo - 1), pageSize * pageNo);
  28. return {
  29. ...successMsg,
  30. data: { pageSize, pageNo, totalSize: newDataset.length, list }
  31. };
  32. }
  33. // 添加
  34. const create = (dataset, params) => {
  35. const last = dataset[dataset.length - 1];
  36. const data = { ...params, id: last.id + 1 };
  37. dataset.push(data);
  38. return {
  39. ...successMsg,
  40. data,
  41. };
  42. }
  43. // 更新
  44. const update = (dataset, params) => {
  45. for (let index in dataset) {
  46. if (dataset[index].id === params.id) {
  47. dataset[index] = { ...dataset[index], ...params };
  48. }
  49. }
  50. return {
  51. ...successMsg,
  52. }
  53. }
  54. // mock数据
  55. const proxy = {
  56. [`GET ${api.campuses}`]: (req, res) => {
  57. console.log('[CampusList]', req.query);
  58. res.send(query(global.campusList, req.query));
  59. },
  60. [`POST ${api.campus.replace('/:id', '')}`]: (req, res) => {
  61. console.log('[CampusCreate]', req.body);
  62. res.send(create(global.campusList, req.body));
  63. },
  64. [`PUT ${api.campus.replace('/:id', '')}`]: (req, res) => {
  65. console.log('[CampusUpdate]', req.body);
  66. res.send(update(global.campusList, req.body));
  67. },
  68. };
  69. // 是否禁用代理
  70. const noProxy = process.env.NO_PROXY === 'true';
  71. // 根据是否禁用代理来选择是mock数据还是真实接口
  72. export default noProxy ? {} : delay(proxy, 1000);