nine.ts 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. import Mock from 'mockjs'
  2. import { MockMethod } from 'vite-plugin-mock'
  3. const codeData = Mock.mock({
  4. 'data|15-20': [
  5. {
  6. id: '@id',
  7. shipName: '@shipNames',
  8. shipCode: '@integer(10000, 10100)',
  9. areaCode: '@integer(1000, 2010)'
  10. }
  11. ]
  12. }).data
  13. const data = [
  14. ...Mock.mock({
  15. 'data|150-200': [
  16. {
  17. id: '@id',
  18. shipId: `@pick("${codeData.map((v: any) => v.id).join('","')}")`,
  19. userName: '@cname',
  20. userCode: '@integer(1000, 2000)'
  21. }
  22. ]
  23. }).data
  24. ]
  25. const mockMethodNine: MockMethod[] = [
  26. {
  27. url: '/mock/api/nine/code',
  28. method: 'get',
  29. timeout: 1000,
  30. response: () => {
  31. return {
  32. code: '0',
  33. data: codeData
  34. }
  35. }
  36. },
  37. {
  38. url: '/mock/api/nine/user',
  39. method: 'get',
  40. timeout: 1000,
  41. response: ({ query }: { query: any }) => {
  42. const id = query.shipId || codeData[0]?.id
  43. const shipName = codeData.find((f: any) => f.id === id).shipName
  44. return {
  45. code: '0',
  46. data: data.filter(({ shipId }) => shipId === id).map((v) => ({ ...v, shipName }))
  47. }
  48. }
  49. },
  50. {
  51. url: '/mock/api/nine/code/save',
  52. method: 'post',
  53. timeout: 1000,
  54. response: ({ body }: { body: any }) => {
  55. updateData(codeData, body)
  56. return {
  57. code: '0'
  58. }
  59. }
  60. },
  61. {
  62. url: '/mock/api/nine/code/del',
  63. method: 'post',
  64. timeout: 1000,
  65. response: ({ body }: { body: any }) => {
  66. deleteData(codeData, body.id)
  67. return {
  68. code: '0'
  69. }
  70. }
  71. },
  72. {
  73. url: '/mock/api/nine/user/save',
  74. method: 'post',
  75. timeout: 1000,
  76. response: ({ body }: { body: any }) => {
  77. updateData(data, body)
  78. return {
  79. code: '0'
  80. }
  81. }
  82. },
  83. {
  84. url: '/mock/api/nine/user/del',
  85. method: 'post',
  86. timeout: 1000,
  87. response: ({ body }: { body: any }) => {
  88. console.log(body)
  89. deleteData(data, body.id)
  90. return {
  91. code: '0'
  92. }
  93. }
  94. }
  95. ]
  96. function deleteData(data: any[], id: string) {
  97. const ids: string[] = [id]
  98. console.log(ids)
  99. ids.forEach((i) => {
  100. const index = data.findIndex((d) => d.id === i)
  101. data.splice(index, 1)
  102. })
  103. }
  104. function updateData(data: any[], params: any) {
  105. let index = data.length
  106. if (params.id) {
  107. index = data.findIndex((f) => f.id === params.id)
  108. }
  109. data[index] = params
  110. }
  111. export default mockMethodNine