index.mock.ts 9.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326
  1. import Mock from 'mockjs'
  2. import { SUCCESS_CODE } from '@/constants'
  3. import { toAnyString } from '@/utils'
  4. const timeout = 1000
  5. const count = 100
  6. const baseContent =
  7. '<p>I am testing data, I am testing data.</p><p><img src="https://wpimg.wallstcn.com/4c69009c-0fd4-4153-b112-6cb53d1cf943"></p>'
  8. interface ListProps {
  9. id: string
  10. cdn: string
  11. url: string
  12. number: string
  13. author: string
  14. title: string
  15. content: string
  16. importance: number
  17. display_time: any
  18. pageviews: number
  19. image_uri: string
  20. video_uri?: string
  21. }
  22. interface TreeListProps {
  23. id: string
  24. author: string
  25. title: string
  26. content: string
  27. importance: number
  28. display_time: any
  29. image_uri: string
  30. pageviews: number
  31. video_uri?: string
  32. children?: TreeListProps[]
  33. }
  34. let List: ListProps[] = []
  35. for (let i = 0; i < count; i++) {
  36. List.push(
  37. Mock.mock({
  38. id: toAnyString(),
  39. // timestamp: +Mock.Random.date('T'),
  40. author: '@first',
  41. cdn: 'https://123123123/com',
  42. url: 'https://dsbqj.test.com',
  43. number: '1.0.0',
  44. title: '@title(5, 10)',
  45. content: baseContent,
  46. importance: '@integer(1, 3)',
  47. display_time: '@datetime',
  48. pageviews: '@integer(100, 500)',
  49. image_uri: Mock.Random.image('@integer(100, 500)x@integer(100, 500)'),
  50. video_uri:
  51. '//sf1-cdn-tos.huoshanstatic.com/obj/media-fe/xgplayer_doc_video/mp4/xgplayer-demo-720p.mp4'
  52. })
  53. )
  54. }
  55. const treeList: TreeListProps[] = []
  56. for (let i = 0; i < count; i++) {
  57. treeList.push(
  58. Mock.mock({
  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. image_uri: Mock.Random.image('@integer(100, 500)x@integer(100, 500)'),
  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. image_uri: Mock.Random.image('@integer(100, 500)x@integer(100, 500)'),
  79. children: [
  80. {
  81. id: toAnyString(),
  82. // timestamp: +Mock.Random.date('T'),
  83. author: '@first',
  84. title: '@title(5, 10)',
  85. content: baseContent,
  86. importance: '@integer(1, 3)',
  87. display_time: '@datetime',
  88. pageviews: '@integer(300, 5000)',
  89. image_uri: Mock.Random.image('@integer(100, 500)x@integer(100, 500)')
  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. image_uri: Mock.Random.image('@integer(100, 500)x@integer(100, 500)')
  101. }
  102. ]
  103. },
  104. {
  105. id: toAnyString(),
  106. // timestamp: +Mock.Random.date('T'),
  107. author: '@first',
  108. title: '@title(5, 10)',
  109. content: baseContent,
  110. importance: '@integer(1, 3)',
  111. display_time: '@datetime',
  112. pageviews: '@integer(300, 5000)',
  113. image_uri: Mock.Random.image('@integer(100, 500)x@integer(100, 500)')
  114. },
  115. {
  116. id: toAnyString(),
  117. // timestamp: +Mock.Random.date('T'),
  118. author: '@first',
  119. title: '@title(5, 10)',
  120. content: baseContent,
  121. importance: '@integer(1, 3)',
  122. display_time: '@datetime',
  123. pageviews: '@integer(300, 5000)',
  124. image_uri: Mock.Random.image('@integer(100, 500)x@integer(100, 500)')
  125. },
  126. {
  127. id: toAnyString(),
  128. // timestamp: +Mock.Random.date('T'),
  129. author: '@first',
  130. title: '@title(5, 10)',
  131. content: baseContent,
  132. importance: '@integer(1, 3)',
  133. display_time: '@datetime',
  134. pageviews: '@integer(300, 5000)',
  135. image_uri: Mock.Random.image('@integer(100, 500)x@integer(100, 500)')
  136. }
  137. ]
  138. // image_uri
  139. })
  140. )
  141. }
  142. const cardList = [
  143. {
  144. logo: 'https://gw.alipayobjects.com/zos/rmsportal/WdGqmHpayyMjiEhcKoVE.png',
  145. name: 'Alipay',
  146. desc: '在中台产品的研发过程中,会出现不同的设计规范和实现方式,但其中往往存在很多类似的页面和组件,这些类似的组件会被抽离成一套标准规范。'
  147. },
  148. {
  149. logo: 'https://gw.alipayobjects.com/zos/rmsportal/zOsKZmFRdUtvpqCImOVY.png',
  150. name: 'Angular',
  151. desc: '在中台产品的研发过程中,会出现不同的设计规范和实现方式,但其中往往存在很多类似的页面和组件,这些类似的组件会被抽离成一套标准规范。'
  152. },
  153. {
  154. logo: 'https://gw.alipayobjects.com/zos/rmsportal/siCrBXXhmvTQGWPNLBow.png',
  155. name: 'Bootstrap',
  156. desc: '在中台产品的研发过程中,会出现不同的设计规范和实现方式,但其中往往存在很多类似的页面和组件,这些类似的组件会被抽离成一套标准规范。'
  157. },
  158. {
  159. logo: 'https://gw.alipayobjects.com/zos/rmsportal/kZzEzemZyKLKFsojXItE.png',
  160. name: 'React',
  161. desc: '在中台产品的研发过程中,会出现不同的设计规范和实现方式,但其中往往存在很多类似的页面和组件,这些类似的组件会被抽离成一套标准规范。'
  162. },
  163. {
  164. logo: 'https://gw.alipayobjects.com/zos/rmsportal/ComBAopevLwENQdKWiIn.png',
  165. name: 'Vue',
  166. desc: '在中台产品的研发过程中,会出现不同的设计规范和实现方式,但其中往往存在很多类似的页面和组件,这些类似的组件会被抽离成一套标准规范。'
  167. },
  168. {
  169. logo: 'https://gw.alipayobjects.com/zos/rmsportal/nxkuOJlFJuAUhzlMTCEe.png',
  170. name: 'Webpack',
  171. desc: '在中台产品的研发过程中,会出现不同的设计规范和实现方式,但其中往往存在很多类似的页面和组件,这些类似的组件会被抽离成一套标准规范。'
  172. }
  173. ]
  174. export default [
  175. // 树形列表接口
  176. {
  177. url: '/mock/example/treeList',
  178. method: 'get',
  179. timeout,
  180. response: ({ query }) => {
  181. const { title, pageIndex, pageSize } = query
  182. const mockList = treeList.filter((item) => {
  183. if (title && item.title.indexOf(title) < 0) return false
  184. return true
  185. })
  186. const pageList = mockList.filter(
  187. (_, index) => index < pageSize * pageIndex && index >= pageSize * (pageIndex - 1)
  188. )
  189. return {
  190. code: SUCCESS_CODE,
  191. data: {
  192. total: mockList.length,
  193. list: pageList
  194. }
  195. }
  196. }
  197. },
  198. // 列表接口
  199. {
  200. url: '/mock/example/list',
  201. method: 'get',
  202. timeout,
  203. response: ({ query }) => {
  204. console.log('ssssss')
  205. const { title, pageIndex, pageSize } = query
  206. const mockList = List.filter((item) => {
  207. if (title && item.title.indexOf(title) < 0) return false
  208. return true
  209. })
  210. const pageList = mockList.filter(
  211. (_, index) => index < pageSize * pageIndex && index >= pageSize * (pageIndex - 1)
  212. )
  213. return {
  214. code: SUCCESS_CODE,
  215. data: {
  216. total: mockList.length,
  217. list: pageList
  218. }
  219. }
  220. }
  221. },
  222. // 保存接口
  223. {
  224. url: '/mock/example/save',
  225. method: 'post',
  226. timeout,
  227. response: ({ body }) => {
  228. if (!body.id) {
  229. List = [
  230. Object.assign(body, {
  231. id: toAnyString()
  232. })
  233. ].concat(List)
  234. return {
  235. code: SUCCESS_CODE,
  236. data: 'success'
  237. }
  238. } else {
  239. List.map((item) => {
  240. if (item.id === body.id) {
  241. for (const key in item) {
  242. item[key] = body[key]
  243. }
  244. }
  245. })
  246. return {
  247. code: SUCCESS_CODE,
  248. data: 'success'
  249. }
  250. }
  251. }
  252. },
  253. // 详情接口
  254. {
  255. url: '/mock/example/detail',
  256. method: 'get',
  257. response: ({ query }) => {
  258. const { id } = query
  259. for (const example of List) {
  260. if (example.id === id) {
  261. return {
  262. code: SUCCESS_CODE,
  263. data: example
  264. }
  265. }
  266. }
  267. }
  268. },
  269. // 删除接口
  270. {
  271. url: '/mock/example/delete',
  272. method: 'post',
  273. response: ({ body }) => {
  274. const ids = body.ids
  275. if (!ids) {
  276. return {
  277. code: 500,
  278. message: '请选择需要删除的数据'
  279. }
  280. } else {
  281. let i = List.length
  282. while (i--) {
  283. if (ids.indexOf(List[i].id) !== -1) {
  284. List.splice(i, 1)
  285. }
  286. }
  287. return {
  288. code: SUCCESS_CODE,
  289. data: 'success'
  290. }
  291. }
  292. }
  293. },
  294. {
  295. url: '/mock/card/list',
  296. method: 'get',
  297. timeout,
  298. response: ({ query }) => {
  299. const { name, pageIndex, pageSize } = query
  300. const mockList = cardList.filter((item) => {
  301. if (name && item.name.indexOf(name) < 0) return false
  302. return true
  303. })
  304. const pageList = mockList.filter(
  305. (_, index) => index < pageSize * pageIndex && index >= pageSize * (pageIndex - 1)
  306. )
  307. return {
  308. code: SUCCESS_CODE,
  309. data: {
  310. total: mockList.length,
  311. list: pageList
  312. }
  313. }
  314. }
  315. }
  316. ]