Files
account/resources/mobile/store/modules/family.js
2026-01-18 19:00:13 +08:00

96 lines
2.1 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.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.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.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.code === 200){
commit('clearFamily')
}
return res
}catch(e){
console.error('退出家庭失败', e)
throw e
}
}
}
}