index.ts 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267
  1. import config from '@/config/axios/config'
  2. import { MockMethod } from 'vite-plugin-mock'
  3. import { toAnyString } from '@/utils'
  4. import Mock from 'mockjs'
  5. const { code } = config
  6. const timeout = 1000
  7. const count = 100
  8. const baseContent =
  9. '<p>I am testing data, I am testing data.</p><p><img src="https://wpimg.wallstcn.com/4c69009c-0fd4-4153-b112-6cb53d1cf943"></p>'
  10. interface ListProps {
  11. id: string
  12. author: string
  13. title: string
  14. content: string
  15. importance: number
  16. display_time: string
  17. pageviews: number
  18. }
  19. interface TreeListProps {
  20. id: string
  21. author: string
  22. title: string
  23. content: string
  24. importance: number
  25. display_time: string
  26. pageviews: number
  27. children: TreeListProps[]
  28. }
  29. let List: ListProps[] = []
  30. for (let i = 0; i < count; i++) {
  31. List.push(
  32. Mock.mock({
  33. id: toAnyString(),
  34. // timestamp: +Mock.Random.date('T'),
  35. author: '@first',
  36. title: '@title(5, 10)',
  37. content: baseContent,
  38. importance: '@integer(1, 3)',
  39. display_time: '@datetime',
  40. pageviews: '@integer(300, 5000)'
  41. // image_uri
  42. })
  43. )
  44. }
  45. const treeList: TreeListProps[] = []
  46. for (let i = 0; i < count; i++) {
  47. treeList.push(
  48. Mock.mock({
  49. id: toAnyString(),
  50. // timestamp: +Mock.Random.date('T'),
  51. author: '@first',
  52. title: '@title(5, 10)',
  53. content: baseContent,
  54. importance: '@integer(1, 3)',
  55. display_time: '@datetime',
  56. pageviews: '@integer(300, 5000)',
  57. children: [
  58. {
  59. id: toAnyString(),
  60. // timestamp: +Mock.Random.date('T'),
  61. author: '@first',
  62. title: '@title(5, 10)',
  63. content: baseContent,
  64. importance: '@integer(1, 3)',
  65. display_time: '@datetime',
  66. pageviews: '@integer(300, 5000)',
  67. children: [
  68. {
  69. id: toAnyString(),
  70. // timestamp: +Mock.Random.date('T'),
  71. author: '@first',
  72. title: '@title(5, 10)',
  73. content: baseContent,
  74. importance: '@integer(1, 3)',
  75. display_time: '@datetime',
  76. pageviews: '@integer(300, 5000)'
  77. },
  78. {
  79. id: toAnyString(),
  80. // timestamp: +Mock.Random.date('T'),
  81. author: '@first',
  82. title: '@title(5, 10)',
  83. content: baseContent,
  84. importance: '@integer(1, 3)',
  85. display_time: '@datetime',
  86. pageviews: '@integer(300, 5000)'
  87. }
  88. ]
  89. },
  90. {
  91. id: toAnyString(),
  92. // timestamp: +Mock.Random.date('T'),
  93. author: '@first',
  94. title: '@title(5, 10)',
  95. content: baseContent,
  96. importance: '@integer(1, 3)',
  97. display_time: '@datetime',
  98. pageviews: '@integer(300, 5000)'
  99. },
  100. {
  101. id: toAnyString(),
  102. // timestamp: +Mock.Random.date('T'),
  103. author: '@first',
  104. title: '@title(5, 10)',
  105. content: baseContent,
  106. importance: '@integer(1, 3)',
  107. display_time: '@datetime',
  108. pageviews: '@integer(300, 5000)'
  109. },
  110. {
  111. id: toAnyString(),
  112. // timestamp: +Mock.Random.date('T'),
  113. author: '@first',
  114. title: '@title(5, 10)',
  115. content: baseContent,
  116. importance: '@integer(1, 3)',
  117. display_time: '@datetime',
  118. pageviews: '@integer(300, 5000)'
  119. }
  120. ]
  121. // image_uri
  122. })
  123. )
  124. }
  125. export default [
  126. // 树形列表接口
  127. {
  128. url: '/example/treeList',
  129. method: 'get',
  130. timeout,
  131. response: ({ query }) => {
  132. const { title, pageIndex, pageSize } = query
  133. const mockList = treeList.filter((item) => {
  134. if (title && item.title.indexOf(title) < 0) return false
  135. return true
  136. })
  137. const pageList = mockList.filter(
  138. (_, index) => index < pageSize * pageIndex && index >= pageSize * (pageIndex - 1)
  139. )
  140. return {
  141. data: {
  142. code: code,
  143. data: {
  144. total: mockList.length,
  145. list: pageList
  146. }
  147. }
  148. }
  149. }
  150. },
  151. // 列表接口
  152. {
  153. url: '/example/list',
  154. method: 'get',
  155. timeout,
  156. response: ({ query }) => {
  157. const { title, pageIndex, pageSize } = query
  158. const mockList = List.filter((item) => {
  159. if (title && item.title.indexOf(title) < 0) return false
  160. return true
  161. })
  162. const pageList = mockList.filter(
  163. (_, index) => index < pageSize * pageIndex && index >= pageSize * (pageIndex - 1)
  164. )
  165. return {
  166. data: {
  167. code: code,
  168. data: {
  169. total: mockList.length,
  170. list: pageList
  171. }
  172. }
  173. }
  174. }
  175. },
  176. // 保存接口
  177. {
  178. url: '/example/save',
  179. method: 'post',
  180. timeout,
  181. response: ({ body }) => {
  182. if (!body.id) {
  183. List = [
  184. Object.assign(body, {
  185. id: toAnyString()
  186. })
  187. ].concat(List)
  188. return {
  189. data: {
  190. code: code,
  191. data: 'success'
  192. }
  193. }
  194. } else {
  195. List.map((item) => {
  196. if (item.id === body.id) {
  197. for (const key in item) {
  198. item[key] = body[key]
  199. }
  200. }
  201. })
  202. return {
  203. data: {
  204. code: code,
  205. data: 'success'
  206. }
  207. }
  208. }
  209. }
  210. },
  211. // 详情接口
  212. {
  213. url: '/example/detail',
  214. method: 'get',
  215. response: ({ query }) => {
  216. const { id } = query
  217. for (const example of List) {
  218. if (example.id === id) {
  219. return {
  220. data: {
  221. code: code,
  222. data: example
  223. }
  224. }
  225. }
  226. }
  227. }
  228. },
  229. // 删除接口
  230. {
  231. url: '/example/delete',
  232. method: 'post',
  233. response: ({ body }) => {
  234. const ids = body.ids
  235. if (!ids) {
  236. return {
  237. code: '500',
  238. message: '请选择需要删除的数据'
  239. }
  240. } else {
  241. let i = List.length
  242. while (i--) {
  243. if (ids.indexOf(List[i].id) !== -1) {
  244. List.splice(i, 1)
  245. }
  246. }
  247. return {
  248. data: {
  249. code: code,
  250. data: 'success'
  251. }
  252. }
  253. }
  254. }
  255. }
  256. ] as MockMethod[]