friend.js 3.07 KB
import _ from 'loadsh'
import Helper from '../../utils/helper'

const friendModules = {
    state: {
        friendList: [],
        search: '',
        user: {
            loading: false,
            list: [],
            paginate: {
                page: 1, size: 20, total: 0
            }
        },
        admin: {
            loading: false,
            list: [],
            paginate: {
                page: 1, size: 20, total: 0
            }
        },
        scheme: {
            loading: false,
            list: [],
            paginate: {
                page: 1, size: 20, total: 0
            }
        },
        createGroupModelVisible: false,
    },
    getters: {},
    mutations: {
        updateFriendList(state, friendList) {
            state.friendList = friendList
        },
        updateFriendSearch(state, search) {
            state.search = search
        },
        updateLoading(state, {type, loading}) {
            state[type].loading = loading
        },
        updateList(state, {type, resource}) {
            state[type].list = resource.data
            state[type].paginate = resource.meta
        },
        appendList(state, {type, resource}) {
            state[type].list = state[type].list.concat(resource.data)
            state[type].paginate = resource.meta
        },

        reset(state) {
            Object.assign(state, {
                friendList: [],
                search: '',
                user: {
                    loading: false,
                    list: [],
                    paginate: {
                        page: 1, size: 20, total: 0
                    }
                },
                admin: {
                    loading: false,
                    list: [],
                    paginate: {
                        page: 1, size: 20, total: 0
                    }
                },
                scheme: {
                    loading: false,
                    list: [],
                    paginate: {
                        page: 1, size: 20, total: 0
                    }
                },
                createGroupModelVisible: false,
            })
        }
    },
    actions: {
        getAllFriendList({dispatch}, payload) {
            dispatch('getFriendList', {type: 'user', ...payload})
            dispatch('getFriendList', {type: 'scheme', ...payload})
            dispatch('getFriendList', {type: 'admin', ...payload})
        },
        getFriendList({state, commit}, payload) {
            const type = _.get(payload, 'type', '')
            const page = _.get(payload, 'page', _.get(state, `${type}.paginate.page`, 1))
            const size = _.get(payload, 'size', _.get(state, `${type}.paginate.size`, 20))
            const search = state.search
            const method = _.get(payload, 'method', 'update')
            commit('updateLoading', {type, loading: true})
            Helper.contactList({method: 'forPaginate', search, type, page, size}).then(resource => commit(method + 'List', {type, resource})).finally(() => commit('updateLoading', {type, loading: false}))
        },
    }
}

export default friendModules