_role.ts 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  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. permission: number[];
  8. }
  9. export const RuleData: Permission[] = [
  10. { id: 1, parent_id: 0, text: '管理', permission: [1] },
  11. { id: 2, parent_id: 0, text: '仓储', permission: [] },
  12. { id: 3, parent_id: 0, text: '营销', permission: [] },
  13. { id: 4, parent_id: 0, text: '第三方', permission: [7] },
  14. {
  15. id: 5,
  16. parent_id: 2,
  17. text: '仓储经理',
  18. permission: [6, 7, 8, 9, 10, 11, 12],
  19. },
  20. { id: 6, parent_id: 2, text: '出库员', permission: [6, 7, 9, 10, 11, 12] },
  21. { id: 7, parent_id: 2, text: '入库员', permission: [6, 7] },
  22. { id: 8, parent_id: 3, text: '市场经理', permission: [6, 7] },
  23. { id: 9, parent_id: 3, text: '销售人员', permission: [6, 7] },
  24. ];
  25. function get(params: any): any {
  26. let ret = deepCopy(RuleData);
  27. if (params.q) {
  28. ret = ret.filter((data: any) => data.text.indexOf(params.q) > -1);
  29. }
  30. const p = +(params.permission || '0');
  31. if (p > 0) {
  32. ret = ret.filter((data: any) => data.permission.includes(p));
  33. }
  34. return ret;
  35. }
  36. function getIdx(id: number): number {
  37. id = +id;
  38. const idx = RuleData.findIndex((w) => w.id === id);
  39. if (idx === -1) {
  40. throw new MockStatusError(404);
  41. }
  42. return idx;
  43. }
  44. export const ROLES_PRO = {
  45. '/role': (req: MockRequest) => get(req.queryString),
  46. 'POST /role': (req: MockRequest) => {
  47. const id = req.body.id || 0;
  48. if (id > 0) {
  49. const idx = getIdx(id);
  50. RuleData[idx] = { ...RuleData[idx], ...req.body };
  51. return { msg: 'ok', item: RuleData[idx] };
  52. }
  53. const item = { ...req.body, id: RuleData.sort((a, b) => b.id - a.id)[0].id + 1 };
  54. RuleData.push(item);
  55. return { msg: 'ok', item };
  56. },
  57. 'DELETE /role/:id': (req: MockRequest) => {
  58. const idx = getIdx(req.params.id || 0);
  59. RuleData.splice(idx, 1);
  60. return { msg: 'ok' };
  61. },
  62. 'POST /role/move': (req: MockRequest) => {
  63. const idx = getIdx(req.body.from || 0);
  64. RuleData[idx].parent_id = req.body.to || 0;
  65. return { msg: 'ok', item: RuleData[idx] };
  66. },
  67. };