页面登录优化,team优化

This commit is contained in:
liamzi
2024-12-25 17:25:10 +08:00
parent 5eb069c63f
commit 4cbec25b53
18 changed files with 535 additions and 4816 deletions

View File

@@ -1,68 +1,96 @@
import { useState, useCallback } from 'react';
import { message } from 'antd';
import { teamService } from '@/services/supabase/team';
import { supabaseService } from '@/hooks/supabaseService';
export const useTeams = (pagination, sorter) => {
const [teams, setTeams] = useState([]);
const [loading, setLoading] = useState(false);
const fetchTeams = useCallback(async (params = {}) => {
export const useTeams = () => {
// 获取团队列表
const fetchTeams = async (params = {}) => {
try {
setLoading(true);
const { data, total } = await teamService.getTeams({
page: params.current || pagination.current,
pageSize: params.pageSize || pagination.pageSize,
orderBy: params.field || sorter.field,
ascending: params.order === 'ascend',
...(params?.search!==''?{searchQuery:params.search}:{})
const result = await supabaseService.get('teams', {
select: `
id,
name,
description,
attributes,
created_at,
updated_at,
avatar_url,
team_membership!inner (
id,
user_id,
role,
is_creator,
users (
id,
email
)
)
`,
filter: {
deleted_at: { is: null },
...(params.search ? { name: { ilike: `%${params.search}%` } } : {})
},
order: {
column: params.field || 'created_at',
ascending: params.order === 'ascend'
},
page: params.current || 1,
pageSize: params.pageSize || 10
});
setTeams(data);
return { data, total };
return result;
} catch (error) {
console.error(error);
message.error('获取团队列表失败');
} finally {
setLoading(false);
console.error('获取团队列表失败:', error);
throw error;
}
}, [pagination.current, pagination.pageSize, sorter.field, sorter.order]);
};
// 创建团队
const createTeam = async (values) => {
try {
const newTeam = await teamService.createTeam(values);
setTeams(prev => [...prev, newTeam]);
return newTeam;
const newTeam = await supabaseService.insert('teams', {
name: values.name,
description: values.description
});
// 创建团队成员关系
await supabaseService.insert('team_membership', {
team_id: newTeam[0].id,
user_id: values.userId,
role: 'OWNER',
is_creator: true,
id: newTeam[0].id
});
return newTeam[0];
} catch (error) {
message.error('Failed to create team');
console.error('创建团队失败:', error);
throw error;
}
};
// 更新团队
const updateTeam = async (id, values) => {
try {
const updatedTeam = await teamService.updateTeam(id, values);
setTeams(prev => prev.map(team =>
team.id === id ? updatedTeam : team
));
return updatedTeam;
const result = await supabaseService.update('teams',
{ id },
values
);
return result[0];
} catch (error) {
message.error('Failed to update team');
console.error('更新团队失败:', error);
throw error;
}
};
// 删除团队
const deleteTeam = async (id) => {
try {
await teamService.deleteTeam(id);
setTeams(prev => prev.filter(team => team.id !== id));
await supabaseService.delete('teams', { id });
} catch (error) {
console.error('删除团队失败:', error);
throw error;
}
};
return {
teams,
loading,
fetchTeams,
createTeam,
updateTeam,