_permission.ts 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. import { MockRequest, MockStatusError } from '@delon/mock';
  2. import { deepCopy } from '@delon/util';
  3. interface Permission {
  4. id: number;
  5. parent_id: number;
  6. text: string;
  7. }
  8. export const PermissionData: Permission[] = [
  9. { id: 1, parent_id: 0, text: '超级权限' },
  10. { id: 2, parent_id: 0, text: '系统' },
  11. { id: 3, parent_id: 2, text: '员工' },
  12. { id: 4, parent_id: 2, text: '菜单' },
  13. { id: 5, parent_id: 2, text: '权限' },
  14. { id: 6, parent_id: 0, text: '订单' },
  15. { id: 7, parent_id: 6, text: '列表' },
  16. { id: 8, parent_id: 6, text: '导入订单' },
  17. { id: 9, parent_id: 6, text: '打印快递单' },
  18. { id: 10, parent_id: 9, text: '批量打印' },
  19. { id: 11, parent_id: 6, text: '发货' },
  20. { id: 12, parent_id: 11, text: '批量发货' },
  21. ];
  22. function getIdx(id: number): number {
  23. id = +id;
  24. const idx = PermissionData.findIndex((w) => w.id === id);
  25. if (idx === -1) {
  26. throw new MockStatusError(404);
  27. }
  28. return idx;
  29. }
  30. export const PERMISSION = {
  31. '/permission': () => deepCopy(PermissionData),
  32. 'POST /permission': (req: MockRequest) => {
  33. const id = req.body.id || 0;
  34. if (id > 0) {
  35. const idx = getIdx(id);
  36. PermissionData[idx] = { ...PermissionData[idx], ...req.body };
  37. return { msg: 'ok', item: PermissionData[idx] };
  38. }
  39. const item = { ...req.body, id: PermissionData.sort((a, b) => b.id - a.id)[0].id + 1 };
  40. PermissionData.push(item);
  41. return { msg: 'ok', item };
  42. },
  43. 'DELETE /permission/:id': (req: MockRequest) => {
  44. const idx = getIdx(req.params.id || 0);
  45. PermissionData.splice(idx, 1);
  46. return { msg: 'ok' };
  47. },
  48. 'POST /permission/move': (req: MockRequest) => {
  49. const idx = getIdx(req.body.from || 0);
  50. PermissionData[idx].parent_id = req.body.to || 0;
  51. return { msg: 'ok', item: PermissionData[idx] };
  52. },
  53. };