55 lines
1.2 KiB
JavaScript
55 lines
1.2 KiB
JavaScript
import { queryFakeList, removeFakeList, addFakeList, updateFakeList } from '@/services/api';
|
|
|
|
export default {
|
|
namespace: 'list',
|
|
|
|
state: {
|
|
list: [],
|
|
},
|
|
|
|
effects: {
|
|
*fetch({ payload }, { call, put }) {
|
|
const response = yield call(queryFakeList, payload);
|
|
yield put({
|
|
type: 'queryList',
|
|
payload: Array.isArray(response) ? response : [],
|
|
});
|
|
},
|
|
*appendFetch({ payload }, { call, put }) {
|
|
const response = yield call(queryFakeList, payload);
|
|
yield put({
|
|
type: 'appendList',
|
|
payload: Array.isArray(response) ? response : [],
|
|
});
|
|
},
|
|
*submit({ payload }, { call, put }) {
|
|
let callback;
|
|
if (payload.id) {
|
|
callback = Object.keys(payload).length === 1 ? removeFakeList : updateFakeList;
|
|
} else {
|
|
callback = addFakeList;
|
|
}
|
|
const response = yield call(callback, payload); // post
|
|
yield put({
|
|
type: 'queryList',
|
|
payload: response,
|
|
});
|
|
},
|
|
},
|
|
|
|
reducers: {
|
|
queryList(state, action) {
|
|
return {
|
|
...state,
|
|
list: action.payload,
|
|
};
|
|
},
|
|
appendList(state, action) {
|
|
return {
|
|
...state,
|
|
list: state.list.concat(action.payload),
|
|
};
|
|
},
|
|
},
|
|
};
|