1
0

seven.ts 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. import Mock from 'mockjs'
  2. import { MockMethod } from 'vite-plugin-mock'
  3. import city from './city.json'
  4. interface TypicalSevenTable {
  5. id: string
  6. jobTitle: string
  7. jobCode: string
  8. personName: string
  9. personCode: string
  10. lastModified: string
  11. }
  12. interface CacheData {
  13. [key: string]: TypicalSevenTable[]
  14. }
  15. const mockData = function () {
  16. return Mock.mock({
  17. 'data|10-30': [
  18. {
  19. id: '@id',
  20. jobTitle: function () {
  21. const job = Mock.Random.randomJob()
  22. this.jobCode = job.code
  23. return job.name
  24. },
  25. jobCode: '',
  26. personCode: '@integer(1000, 7060)',
  27. personName: '@cname',
  28. lastModified: '@datetime("2024-MM-dd hh:mm:ss")'
  29. }
  30. ]
  31. }).data
  32. }
  33. const cacheData: CacheData = {}
  34. const mockMethodSeven: MockMethod[] = [
  35. {
  36. url: '/mock/api/seven/tree',
  37. method: 'get',
  38. timeout: 1000,
  39. response: () => {
  40. return {
  41. code: '0',
  42. data: city
  43. }
  44. }
  45. },
  46. {
  47. url: '/mock/api/seven/delete',
  48. method: 'get',
  49. timeout: 1000,
  50. response: ({ query }: { query: any }) => {
  51. const { areaCode } = query
  52. const id = query['id[]']
  53. const data = cacheData[areaCode] ?? []
  54. cacheData[areaCode] = data.filter((item) => !id.includes(item.id))
  55. return {
  56. code: '0',
  57. data: 1
  58. }
  59. }
  60. },
  61. {
  62. url: '/mock/api/seven/query',
  63. method: 'get',
  64. timeout: 1000,
  65. response: ({ query }: { query: any }) => {
  66. const { jobCode, areaCode, pageIndex, pageSize } = query
  67. if (!cacheData[areaCode]) {
  68. cacheData[areaCode] = mockData()
  69. }
  70. let filterData = cacheData[areaCode]
  71. if (jobCode) {
  72. filterData = filterData.filter((item) => {
  73. return item.jobCode == jobCode
  74. })
  75. }
  76. const _pageSize = Number(pageSize) ?? 20
  77. const total = filterData.length
  78. const pages = Math.ceil(total / _pageSize)
  79. const offset = (pageIndex - 1) * _pageSize
  80. const list = filterData.slice(offset, offset + _pageSize)
  81. return {
  82. code: '0',
  83. data: {
  84. pageNum: Number(pageIndex),
  85. pageSize: Number(pageSize) ?? 20,
  86. size: list.length,
  87. pages: pages,
  88. total: total,
  89. list: list
  90. }
  91. }
  92. }
  93. }
  94. ]
  95. export default mockMethodSeven