Files
yapi/client/reducer/modules/news.js
2024-03-01 20:28:14 +08:00

102 lines
2.2 KiB
JavaScript

// Actions
const FETCH_NEWS_DATA = 'yapi/news/FETCH_NEWS_DATA';
const FETCH_MORE_NEWS = 'yapi/news/FETCH_MORE_NEWS';
// Reducer
const initialState = {
newsData: {
list: [],
total: 0
},
curpage: 1
};
export default (state = initialState, action) => {
switch (action.type) {
case FETCH_NEWS_DATA: {
const list = action.payload.data.data.list;
state.newsData.list = list;
state.curpage = 1;
state.newsData.list.sort(function(a, b) {
return b.add_time - a.add_time;
});
return {
...state,
newsData: {
total: action.payload.data.data.total,
list: state.newsData.list
}
};
}
case FETCH_MORE_NEWS: {
const list = action.payload.data.data.list;
state.newsData.list.push(...list);
state.newsData.list.sort(function(a, b) {
return b.add_time - a.add_time;
});
if (list && list.length) {
state.curpage++;
}
return {
...state,
newsData: {
total: action.payload.data.data.total,
list: state.newsData.list
}
};
}
default:
return state;
}
};
// Action Creators
import axios from 'axios';
import variable from '../../constants/variable';
export function fetchNewsData(typeid, type, page, limit, selectValue) {
let param = {
typeid: typeid,
type: type,
page: page,
limit: limit ? limit : variable.PAGE_LIMIT,
selectValue
}
return {
type: FETCH_NEWS_DATA,
payload: axios.get('/api/log/list', {
params: param
})
};
}
export function fetchMoreNews(typeid, type, page, limit, selectValue) {
const param = {
typeid: typeid,
type: type,
page: page,
limit: limit ? limit : variable.PAGE_LIMIT,
selectValue
}
return {
type: FETCH_MORE_NEWS,
payload: axios.get('/api/log/list', {
params: param
})
};
}
export function getMockUrl(project_id) {
const params = { id: project_id };
return {
type: '',
payload: axios.get('/api/project/get', { params: params })
};
}
export function fetchUpdateLogData(params) {
return {
type: '',
payload: axios.post('/api/log/list_by_update', params)
};
}