// store/groupStore.js const groupModule = { namespaced: true, state: () => ({ groups: [] }), mutations: { SET_GROUPS(state, groups) { state.groups = groups }, ADD_GROUP(state, group) { // 使用 unshift 插入到列表头部(与 Pinia 保持一致) state.groups.unshift(group) }, UPDATE_GROUP(state, group) { const g = state.groups.find(item => item.id === group.id) if (g) { Object.assign(g, group) } }, REMOVE_GROUP(state, id) { state.groups.filter(g => g.id === id).forEach(g => g.quit = true) }, CLEAR_GROUPS(state) { state.groups = [] } }, actions: { // 设置群组列表 setGroups({ commit }, groups) { commit('SET_GROUPS', groups) }, // 添加或更新群组 addGroup({ commit, state }, group) { const exists = state.groups.some(g => g.id === group.id) if (exists) { commit('UPDATE_GROUP', group) } else { commit('ADD_GROUP', group) } }, // 删除群组(逻辑删除) removeGroup({ commit }, id) { commit('REMOVE_GROUP', id) }, // 更新群组信息 updateGroup({ commit }, group) { commit('UPDATE_GROUP', group) }, // 清空群组列表 clear({ commit }) { commit('CLEAR_GROUPS') }, // 加载群组列表(异步) async loadGroup({ dispatch }) { try { const groups = await uni.$http.get('/api/group/list') dispatch('setGroups', groups.data.data) } catch (error) { // 将错误抛出,让调用方处理 throw error } } }, getters: { findGroup: (state) => (id) => { return state.groups.find(g => g.id === id) } } } export default groupModule