mine.js 5.97 KB
import {parseAssetList, formatNumber, maskAccount} from '../../utils/mine-handler';
import { get, set } from 'lodash';
import { getImgUrl } from '../../common/utils';

// const uid = '600046428';
const uid = '500031424';
const MINE_RESOURCE_CODE1 = '11a73219a63b50067d88e75c0fe04d10';
const MINE_RESOURCE_CODE2 = 'dc2731fbbebcba6329c74a379e9c41ec';

export default function() {
  return {
    namespaced: true,
    state: {
      animate: false,
      rollNoticeList: [],
      sellerNum: 0,
      readyNum: 0,
      sentNum: 0,
      finishNum: 0,
      failNum: 0,
      favoriteNum: 0,
      buyNum: 0,
      askBuyNum: 0,
      assetData: {
        list: [],
        currentPage: 1,
        endReached: false,
        compensateIncome: 0,
        goodsIncome: 0,
        totalIncome: 0
      },
      resource1: {},
      resource2: {}
    },
    getters: {
      getOrderNums(state) {
        let orderSum = {
          ready: {name: '待发货', num: state.readyNum},
          sent: {name: '已发货', num: state.sentNum},
          finish: {name: '交易成功', num: state.finishNum},
          fail: {name: '交易失败', num: state.failNum}
        };

        return orderSum;
      },
      getMineList(state) {
        let tabList = {
          board: { title: '公告栏'},
          sale: { title: '出售中', num: state.sellerNum},
          order: {name: 'order'},
          resource1: {name: 'resource1', data: state.resource1},
          income: {title: '交易收入', num: state.assetData.totalIncome},
          buyOrder: {title: '我购买的订单', num: state.buyNum},
          buy: {name: 'buy', title: '我的求购', num: state.askBuyNum},
          collect: {name: 'collect', title: '我的收藏', num: state.favoriteNum},
          resource2: {name: 'resource2', data: state.resource2}
        };

        return tabList;
      }
    },
    mutations: {
      addList(state, { list }) {
        state.rollNoticeList = state.rollNoticeList.concat(list);
      },
      startAnimate(state) {
        state.animate = true;
      },
      animateHandler(state) {
        state.rollNoticeList.push(state.rollNoticeList[0]);
        state.rollNoticeList.shift();
        state.animate = false;
      },
      addSellerOrder(state, { orderSumList }) {

        orderSumList.forEach((item) => {
          switch (item.listType) {
            case 1:
              state.sellerNum = item.sum;
              break;
            case 2:
              state.readyNum = item.sum;
              break;
            case 3:
              state.sentNum = item.sum;
              break;
            case 5:
              state.finishNum = item.sum;
              break;
            case 6:
              state.failNum = item.sum;
              break;
            default:
              break;
          }
        });
      },

      addFavoriteNum(state, {count}) {
        state.favoriteNum = count;
      },
      addOrderSummary(state, {data}) {
        data.forEach((item) => {
          switch (item.actor) {
            case 'buy':
              state.buyNum = item.sum;
              break;
            case 'bid':
              state.askBuyNum = item.sum;
              break;
            default:
              break;
          }
        });
      },
      addAssets(state, assetData) {
        assetData.totalIncome = formatNumber(assetData.totalIncome);
        state.assetData = Object.assign({}, state.assetData, assetData);
      },

      addResource(state, {resource1 = {}, resource2 = {}}) {
        state.resource1 = Object.assign({}, state.resource1, resource1);
        state.resource2 = Object.assign({}, state.resource1, resource2);
      }
    },
    actions: {
      async fetchRollBoardList({ commit }) {
        const result = await this.$api.get('/api/ufo/mine/rollBoardList', {});

        if (result.code === 200) {
          commit('addList', { list: result.data });
        }
        return result.data || [];
      },
      async showMarquee({ commit }) {
        commit('startAnimate');
        setTimeout(() => {
          commit('animateHandler');
        }, 500);
      },

      async fetchResource({commit}) {
        const result = await this.$api.get('/api/ufo/mine/resource', {
          content_code: MINE_RESOURCE_CODE1,
          uid
        });
        const result1 = await this.$api.get('/api/ufo/mine/resource', {
          content_code: MINE_RESOURCE_CODE2,
          uid
        });

        if (result.code === 200) {
          let src = getImgUrl(get(result, 'data[0].data[0].src') || '', 1000, 240);

          set(result, 'data[0].data[0].src', src);
          commit('addResource', {resource1: result.data[0]});
        }
        if (result1.code === 200) {
          let src = getImgUrl(get(result1, 'data[0].data[0].src') || '', 1000, 240);

          set(result1, 'data[0].data[0].src', src);
          commit('addResource', {resource2: result1.data[0]});
        }
      },
      async fetchSellerOrder({ commit }) {
        const result = await this.$api.get('/api/ufo/mine/seller/orderSummary', {uid});

        if (result.code === 200) {
          commit('addSellerOrder', { orderSumList: result.data });
        }
      },
      async fetchFavoriteNum({ commit }) {
        const result = await this.$api.get('/api/ufo/mine/favoriteNum', {uid});

        if (result.code === 200) {
          commit('addFavoriteNum', { count: result.data.product_favorite_total });
        }
      },
      async fetchOrderSummary({ commit }) {
        const result = await this.$api.get('/api/ufo/mine/order/summary', {uid});

        if (result.code === 200) {
          commit('addOrderSummary', { data: result.data});
        }
      },

      async fetchAssets({ commit }) {
        const result = await this.$api.get('/api/ufo/mine/assets', {page: 1, limit: 20, uid});

        if (result.code === 200) {
          let assetData = parseAssetList(result.data);

          if (typeof assetData.totalIncome !== 'undefined') {
            commit('addAssets', assetData);
          }
        }
        return result.data || [];
      },
    },
  };
}