管理后台初始化,登录,团队管理,报价单管理 完成

This commit is contained in:
‘Liammcl’
2024-12-15 17:39:58 +08:00
commit 5882bf9548
91 changed files with 16260 additions and 0 deletions

View File

@@ -0,0 +1,71 @@
import { useState, useCallback } from 'react';
import { message } from 'antd';
import { teamService } from '@/services/supabase/team';
export const useTeams = (pagination, sorter) => {
const [teams, setTeams] = useState([]);
const [loading, setLoading] = useState(false);
const fetchTeams = useCallback(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}:{})
});
setTeams(data);
return { data, total };
} catch (error) {
console.error(error);
message.error('获取团队列表失败');
} finally {
setLoading(false);
}
}, [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;
} catch (error) {
message.error('Failed to create team');
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;
} catch (error) {
message.error('Failed to update team');
throw error;
}
};
const deleteTeam = async (id) => {
try {
await teamService.deleteTeam(id);
setTeams(prev => prev.filter(team => team.id !== id));
} catch (error) {
throw error;
}
};
return {
teams,
loading,
fetchTeams,
createTeam,
updateTeam,
deleteTeam,
};
};