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

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,72 @@
import { useState, useCallback } from 'react';
import { message } from 'antd';
import { teamMembershipService } from '@/services/supabase/teamMembership';
export const useTeamMemberships = (teamId) => {
const [memberships, setMemberships] = useState([]);
const [loading, setLoading] = useState(false);
const fetchMemberships = useCallback(async () => {
if (!teamId) return;
try {
setLoading(true);
const data = await teamMembershipService.getMemberships(teamId);
setMemberships(data);
} catch (error) {
message.error('Failed to fetch team memberships');
console.error(error);
} finally {
setLoading(false);
}
}, [teamId]);
const createMembership = async (values) => {
try {
const newMembership = await teamMembershipService.createMembership({
...values,
teamId,
});
setMemberships(prev => [...prev, newMembership]);
message.success('Member added successfully');
return newMembership;
} catch (error) {
message.error('Failed to add member');
throw error;
}
};
const updateMembership = async (id, values) => {
try {
const updatedMembership = await teamMembershipService.updateMembership(id, values);
setMemberships(prev => prev.map(membership =>
membership.id === id ? updatedMembership : membership
));
message.success('Member updated successfully');
return updatedMembership;
} catch (error) {
message.error('Failed to update member');
throw error;
}
};
const deleteMembership = async (id) => {
try {
await teamMembershipService.deleteMembership(id);
setMemberships(prev => prev.filter(membership => membership.id !== id));
message.success('Member removed successfully');
} catch (error) {
message.error('Failed to remove member');
throw error;
}
};
return {
memberships,
loading,
fetchMemberships,
createMembership,
updateMembership,
deleteMembership,
};
};