index.ts 6.3 KB

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