mock平台

news.js 2.2KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. // Actions
  2. const FETCH_NEWS_DATA = 'yapi/news/FETCH_NEWS_DATA';
  3. const FETCH_MORE_NEWS = 'yapi/news/FETCH_MORE_NEWS';
  4. // Reducer
  5. const initialState = {
  6. newsData: {
  7. list: [],
  8. total: 0
  9. },
  10. curpage: 1
  11. };
  12. export default (state = initialState, action) => {
  13. switch (action.type) {
  14. case FETCH_NEWS_DATA: {
  15. const list = action.payload.data.data.list;
  16. state.newsData.list = list;
  17. state.curpage = 1;
  18. state.newsData.list.sort(function(a, b) {
  19. return b.add_time - a.add_time;
  20. });
  21. return {
  22. ...state,
  23. newsData: {
  24. total: action.payload.data.data.total,
  25. list: state.newsData.list
  26. }
  27. };
  28. }
  29. case FETCH_MORE_NEWS: {
  30. const list = action.payload.data.data.list;
  31. state.newsData.list.push(...list);
  32. state.newsData.list.sort(function(a, b) {
  33. return b.add_time - a.add_time;
  34. });
  35. if (list && list.length) {
  36. state.curpage++;
  37. }
  38. return {
  39. ...state,
  40. newsData: {
  41. total: action.payload.data.data.total,
  42. list: state.newsData.list
  43. }
  44. };
  45. }
  46. default:
  47. return state;
  48. }
  49. };
  50. // Action Creators
  51. import axios from 'axios';
  52. import variable from '../../constants/variable';
  53. export function fetchNewsData(typeid, type, page, limit, selectValue) {
  54. let param = {
  55. typeid: typeid,
  56. type: type,
  57. page: page,
  58. limit: limit ? limit : variable.PAGE_LIMIT,
  59. selectValue
  60. }
  61. return {
  62. type: FETCH_NEWS_DATA,
  63. payload: axios.get('/api/log/list', {
  64. params: param
  65. })
  66. };
  67. }
  68. export function fetchMoreNews(typeid, type, page, limit, selectValue) {
  69. const param = {
  70. typeid: typeid,
  71. type: type,
  72. page: page,
  73. limit: limit ? limit : variable.PAGE_LIMIT,
  74. selectValue
  75. }
  76. return {
  77. type: FETCH_MORE_NEWS,
  78. payload: axios.get('/api/log/list', {
  79. params: param
  80. })
  81. };
  82. }
  83. export function getMockUrl(project_id) {
  84. const params = { id: project_id };
  85. return {
  86. type: '',
  87. payload: axios.get('/api/project/get', { params: params })
  88. };
  89. }
  90. export function fetchUpdateLogData(params) {
  91. return {
  92. type: '',
  93. payload: axios.post('/api/log/list_by_update', params)
  94. };
  95. }