页面登录优化,team优化
This commit is contained in:
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user