diff --git a/components/common/draft/list.vue b/components/common/draft/list.vue new file mode 100644 index 0000000..4d782cd --- /dev/null +++ b/components/common/draft/list.vue @@ -0,0 +1,54 @@ + + + + + diff --git a/pages/draft/_draft_id.vue b/pages/draft/_draft_id.vue new file mode 100644 index 0000000..3610b6a --- /dev/null +++ b/pages/draft/_draft_id.vue @@ -0,0 +1,182 @@ + + + + + diff --git a/pages/drafts.vue b/pages/drafts.vue new file mode 100644 index 0000000..d88cad9 --- /dev/null +++ b/pages/drafts.vue @@ -0,0 +1,37 @@ + + + + + diff --git a/store/draft.js b/store/draft.js new file mode 100644 index 0000000..3565eb4 --- /dev/null +++ b/store/draft.js @@ -0,0 +1,96 @@ +export const DRAFT_API_PATH = '/api/article' + +const getDefaultListData = () => { + return { + articles: [], + pagination: {} + } +} + +export const state = () => { + return { + list: { + fetching: false, + data: getDefaultListData() + }, + detail: { + fetching: false, + data: {} + } + } +} + +export const mutations = { + // 文章列表 + updateListFetching(state, action) { + state.list.fetching = action + }, + updateListData(state, action) { + state.list.data = action + }, + // 文章详情 + updateDetailFetching(state, action) { + state.detail.fetching = action + }, + updateDetailData(state, action) { + state.detail.data = action.article + } +} + +export const actions = { + // 获取消息列表 + fetchList({commit}, params = {}) { + // 清空已有数据 + commit('updateListData', getDefaultListData()) + commit('updateListFetching', true) + let data = { + page: params.page || 1 + } + + return this.$axios + .$get(`${DRAFT_API_PATH}/drafts`, { + params: data + }) + .then(response => { + commit('updateListFetching', false); + commit('updateListData', response); + }) + .catch(error => { + console.log(error); + commit('updateListFetching', false); + }); + }, + // 获取文章详情 + fetchDetail({ commit }, params = {}) { + // const delay = fetchDelay( + // isBrowser + // ) + // if (isBrowser) { + // Vue.nextTick(() => { + // window.scrollTo(0, 300); + // }) + // } + commit('updateDetailFetching', true) + // commit('updateDetailData', {}) + return this.$axios + .$get(`${DRAFT_API_PATH}/detail/${params.draft_id}`, { + params: { + type: 3 + } + }) + .then(response => { + return new Promise(resolve => { + commit('updateDetailData', response) + commit('updateDetailFetching', false) + resolve(response) + // delay(() => { + // resolve(response) + // }) + }) + }) + .catch(error => { + commit('updateDetailFetching', false) + return Promise.reject(error) + }) + } +}