import { tianpanDashboard, tianpanMemberDetail, tianpanCompatibility, tianpanAnnualEnergy, tianpanDailyFortune, tianpanRelatedItems } from '@/utils/api.js' export default { namespaced: true, state: { dashboard: null, memberDetail: null, compatibility: null, annualEnergy: null, dailyFortune: null, relatedItems: null, loading: false, error: null, currentYear: new Date().getFullYear(), daysAhead: 7 }, mutations: { SET_DASHBOARD(state, v) { state.dashboard = v }, SET_MEMBER_DETAIL(state, v) { state.memberDetail = v }, SET_COMPATIBILITY(state, v) { state.compatibility = v }, SET_ANNUAL_ENERGY(state, v) { state.annualEnergy = v }, SET_DAILY_FORTUNE(state, v) { state.dailyFortune = v }, SET_RELATED_ITEMS(state, v) { state.relatedItems = v }, SET_LOADING(state, v) { state.loading = v }, SET_ERROR(state, v) { state.error = v }, SET_YEAR(state, v) { state.currentYear = v } }, actions: { loadDashboard({ commit, state }) { commit('SET_LOADING', true) commit('SET_ERROR', null) return tianpanDashboard({ year: state.currentYear, daysAhead: state.daysAhead }) .then(function(res) { if (res && res.code === 200) { commit('SET_DASHBOARD', res.data) } }) .catch(function(e) { commit('SET_ERROR', e.message) }) .finally(function() { commit('SET_LOADING', false) }) }, switchYear({ commit, dispatch }, year) { commit('SET_YEAR', year) return dispatch('loadDashboard') }, loadMemberDetail({ commit }, payload) { return tianpanMemberDetail(payload.memberId, { memberType: payload.memberType || 'family_member' }) .then(function(res) { if (res && res.code === 200) { commit('SET_MEMBER_DETAIL', res.data) return res.data } return null }) }, loadCompatibility({ commit }, payload) { return tianpanCompatibility(payload).then(function(res) { if (res && res.code === 200) { commit('SET_COMPATIBILITY', res.data) return res.data } return null }) }, loadAnnualEnergy({ commit }, payload) { return tianpanAnnualEnergy(payload).then(function(res) { if (res && res.code === 200) { commit('SET_ANNUAL_ENERGY', res.data) return res.data } return null }) }, loadDailyFortune({ commit }, payload) { return tianpanDailyFortune(payload).then(function(res) { if (res && res.code === 200) { commit('SET_DAILY_FORTUNE', res.data) return res.data } return null }) }, loadRelatedItems({ commit }, payload) { return tianpanRelatedItems(payload).then(function(res) { if (res && res.code === 200) { commit('SET_RELATED_ITEMS', res.data) return res.data } return null }) } }, getters: { members: function(state) { return state.dashboard && state.dashboard.members ? state.dashboard.members : [] }, relationships: function(state) { return state.dashboard && state.dashboard.relationships ? state.dashboard.relationships : [] }, familyWuxing: function(state) { return state.dashboard && state.dashboard.familyWuxing ? state.dashboard.familyWuxing : null }, familyName: function(state) { return state.dashboard && state.dashboard.familyName ? state.dashboard.familyName : '' } } }