96 lines
2.2 KiB
JavaScript
96 lines
2.2 KiB
JavaScript
import tool from '../../utils/tool'
|
|
import api from '@/api'
|
|
|
|
export default{
|
|
state: {
|
|
familyId: tool.data.get('familyId') || '',
|
|
familyInfo: tool.data.get('familyInfo') || {},
|
|
isOwner: tool.data.get('isOwner') || false
|
|
},
|
|
mutations:{
|
|
setFamilyInfo(state, data){
|
|
if(data && data.id){
|
|
tool.data.set('familyId', data.id)
|
|
state.familyId = data.id
|
|
tool.data.set('familyInfo', data)
|
|
state.familyInfo = data
|
|
}else{
|
|
tool.data.set('familyId', '')
|
|
state.familyId = ''
|
|
tool.data.set('familyInfo', {})
|
|
state.familyInfo = {}
|
|
}
|
|
},
|
|
setIsOwner(state, isOwner){
|
|
tool.data.set('isOwner', isOwner)
|
|
state.isOwner = isOwner
|
|
},
|
|
clearFamily(state){
|
|
tool.data.set('familyId', '')
|
|
state.familyId = ''
|
|
tool.data.set('familyInfo', {})
|
|
state.familyInfo = {}
|
|
tool.data.set('isOwner', false)
|
|
state.isOwner = false
|
|
}
|
|
},
|
|
getters:{
|
|
hasFamily(state){
|
|
return !!state.familyId
|
|
}
|
|
},
|
|
actions:{
|
|
async getFamilyInfo({commit}){
|
|
try {
|
|
const res = await api.family.info.get()
|
|
if(res && res.code === 1 && res.data){
|
|
commit('setFamilyInfo', res.data)
|
|
commit('setIsOwner', res.data.is_owner || false)
|
|
}
|
|
return res
|
|
}catch(e){
|
|
console.error('获取家庭信息失败', e)
|
|
throw e
|
|
}
|
|
},
|
|
async createFamily({commit}, familyName){
|
|
try {
|
|
const res = await api.family.create.post({name: familyName})
|
|
if(res && res.code === 1 && res.data){
|
|
commit('setFamilyInfo', res.data)
|
|
commit('setIsOwner', true)
|
|
}
|
|
return res
|
|
}catch(e){
|
|
console.error('创建家庭失败', e)
|
|
throw e
|
|
}
|
|
},
|
|
async joinFamily({commit}, inviteCode){
|
|
try {
|
|
const res = await api.family.join.post({invite_code: inviteCode})
|
|
if(res && res.code === 1 && res.data){
|
|
commit('setFamilyInfo', res.data)
|
|
commit('setIsOwner', res.data.is_owner || false)
|
|
}
|
|
return res
|
|
}catch(e){
|
|
console.error('加入家庭失败', e)
|
|
throw e
|
|
}
|
|
},
|
|
async leaveFamily({commit}){
|
|
try {
|
|
const res = await api.family.leave.post()
|
|
if(res && res.code === 1){
|
|
commit('clearFamily')
|
|
}
|
|
return res
|
|
}catch(e){
|
|
console.error('退出家庭失败', e)
|
|
throw e
|
|
}
|
|
}
|
|
}
|
|
}
|