actions.js 1.49 KB
import * as Types from './types';

export default {
  async fetchArticleList({commit}, {articleId, limit = 5, page = 1}) {
    commit(Types.FETCH_ARTICLE_DETAIL_REQUEST);
    const result = await this.$api.get('/api/grass/columnArticleDetail', {
      articleId,
      limit,
      page,
      columnType: 1001
    });

    if (result && result.code === 200) {
      result.data.detailList = result.data.detailList.map((item, inx) => {
        item.index = (page - 1) * limit + inx;
        return item;
      });
      commit(Types.FETCH_ARTICLE_DETAIL_SUCCESS, {
        data: result.data.detailList,
      });
    } else {
      commit(Types.FETCH_ARTICLE_DETAIL_FAILD);
    }
    return result;
  },
  async getDetail({ commit }, { article_id }) {
    let result = {
      getAuthor: {},
      getArticle: {},
      getArticleContent: {},
    };

    const data = await this.$api.get('/api/guang/article/detail', {
      article_id
    });

    if (!data || data.code !== 200) {
      result.code = 400;
      return result;
    }

    let article = result.getArticle = data && data.data || {};

    let promises = [
      this.$api.get('/api/guang/article/author', { author_id: article.author_id }),
      this.$api.get('/api/guang/article/content', { article_id })
    ];

    const [author, content] = await Promise.all(promises);

    if (!author) {
      result.getAuthor = author;
    }

    if (!content) {
      result.getArticleContent = content;
    }

    commit(Types.FETCH_GUANG_SUCCESS, result);
  }
};