Files
urldb/web/composables/useApi.ts

432 lines
10 KiB
TypeScript
Raw Normal View History

2025-07-10 13:58:28 +08:00
// 使用 $fetch 替代 axios更好地处理 SSR
2025-07-10 01:27:35 +08:00
export const useResourceApi = () => {
2025-07-10 13:58:28 +08:00
const config = useRuntimeConfig()
2025-07-10 15:07:29 +08:00
const getAuthHeaders = () => {
2025-07-10 21:14:17 +08:00
const userStore = useUserStore()
return userStore.authHeaders
2025-07-10 15:07:29 +08:00
}
2025-07-10 01:27:35 +08:00
const getResources = async (params?: any) => {
2025-07-10 13:58:28 +08:00
return await $fetch('/resources', {
baseURL: config.public.apiBase,
2025-07-10 15:07:29 +08:00
params,
headers: getAuthHeaders() as Record<string, string>
2025-07-10 13:58:28 +08:00
})
2025-07-10 01:27:35 +08:00
}
const getResource = async (id: number) => {
2025-07-10 13:58:28 +08:00
return await $fetch(`/resources/${id}`, {
baseURL: config.public.apiBase,
2025-07-10 15:07:29 +08:00
headers: getAuthHeaders() as Record<string, string>
2025-07-10 13:58:28 +08:00
})
2025-07-10 01:27:35 +08:00
}
const createResource = async (data: any) => {
2025-07-10 13:58:28 +08:00
return await $fetch('/resources', {
baseURL: config.public.apiBase,
method: 'POST',
2025-07-10 15:07:29 +08:00
body: data,
headers: getAuthHeaders() as Record<string, string>
2025-07-10 13:58:28 +08:00
})
2025-07-10 01:27:35 +08:00
}
const updateResource = async (id: number, data: any) => {
2025-07-10 13:58:28 +08:00
return await $fetch(`/resources/${id}`, {
baseURL: config.public.apiBase,
method: 'PUT',
2025-07-10 15:07:29 +08:00
body: data,
headers: getAuthHeaders() as Record<string, string>
2025-07-10 13:58:28 +08:00
})
2025-07-10 01:27:35 +08:00
}
const deleteResource = async (id: number) => {
2025-07-10 13:58:28 +08:00
return await $fetch(`/resources/${id}`, {
baseURL: config.public.apiBase,
2025-07-10 15:07:29 +08:00
method: 'DELETE',
headers: getAuthHeaders() as Record<string, string>
2025-07-10 13:58:28 +08:00
})
2025-07-10 01:27:35 +08:00
}
const searchResources = async (params: any) => {
2025-07-10 13:58:28 +08:00
return await $fetch('/search', {
baseURL: config.public.apiBase,
2025-07-10 15:07:29 +08:00
params,
headers: getAuthHeaders() as Record<string, string>
2025-07-10 13:58:28 +08:00
})
}
const getResourcesByPan = async (panId: number, params?: any) => {
return await $fetch('/resources', {
baseURL: config.public.apiBase,
2025-07-10 15:07:29 +08:00
params: { ...params, pan_id: panId },
headers: getAuthHeaders() as Record<string, string>
2025-07-10 13:58:28 +08:00
})
2025-07-10 01:27:35 +08:00
}
return {
getResources,
getResource,
createResource,
updateResource,
deleteResource,
searchResources,
2025-07-10 13:58:28 +08:00
getResourcesByPan,
2025-07-10 01:27:35 +08:00
}
}
2025-07-10 15:07:29 +08:00
// 认证相关API
export const useAuthApi = () => {
const config = useRuntimeConfig()
const login = async (data: any) => {
return await $fetch('/auth/login', {
baseURL: config.public.apiBase,
method: 'POST',
body: data
})
}
const register = async (data: any) => {
return await $fetch('/auth/register', {
baseURL: config.public.apiBase,
method: 'POST',
body: data
})
}
const getProfile = async () => {
const token = localStorage.getItem('token')
return await $fetch('/auth/profile', {
baseURL: config.public.apiBase,
headers: token ? { Authorization: `Bearer ${token}` } : {}
})
}
return {
login,
register,
getProfile,
}
}
2025-07-10 01:27:35 +08:00
// 分类相关API
export const useCategoryApi = () => {
2025-07-10 13:58:28 +08:00
const config = useRuntimeConfig()
2025-07-10 15:07:29 +08:00
const getAuthHeaders = () => {
2025-07-10 21:14:17 +08:00
const userStore = useUserStore()
return userStore.authHeaders
2025-07-10 15:07:29 +08:00
}
2025-07-10 01:27:35 +08:00
const getCategories = async () => {
2025-07-10 13:58:28 +08:00
return await $fetch('/categories', {
baseURL: config.public.apiBase,
2025-07-10 15:07:29 +08:00
headers: getAuthHeaders() as Record<string, string>
2025-07-10 13:58:28 +08:00
})
2025-07-10 01:27:35 +08:00
}
const createCategory = async (data: any) => {
2025-07-10 13:58:28 +08:00
return await $fetch('/categories', {
baseURL: config.public.apiBase,
method: 'POST',
2025-07-10 15:07:29 +08:00
body: data,
headers: getAuthHeaders() as Record<string, string>
2025-07-10 13:58:28 +08:00
})
2025-07-10 01:27:35 +08:00
}
const updateCategory = async (id: number, data: any) => {
2025-07-10 13:58:28 +08:00
return await $fetch(`/categories/${id}`, {
baseURL: config.public.apiBase,
method: 'PUT',
2025-07-10 15:07:29 +08:00
body: data,
headers: getAuthHeaders() as Record<string, string>
2025-07-10 13:58:28 +08:00
})
2025-07-10 01:27:35 +08:00
}
const deleteCategory = async (id: number) => {
2025-07-10 13:58:28 +08:00
return await $fetch(`/categories/${id}`, {
baseURL: config.public.apiBase,
2025-07-10 15:07:29 +08:00
method: 'DELETE',
headers: getAuthHeaders() as Record<string, string>
2025-07-10 13:58:28 +08:00
})
2025-07-10 01:27:35 +08:00
}
return {
getCategories,
createCategory,
updateCategory,
deleteCategory,
}
}
2025-07-10 13:58:28 +08:00
// 平台相关API
export const usePanApi = () => {
const config = useRuntimeConfig()
2025-07-10 15:07:29 +08:00
const getAuthHeaders = () => {
2025-07-10 21:14:17 +08:00
const userStore = useUserStore()
return userStore.authHeaders
2025-07-10 15:07:29 +08:00
}
2025-07-10 13:58:28 +08:00
const getPans = async () => {
return await $fetch('/pans', {
baseURL: config.public.apiBase,
2025-07-10 15:07:29 +08:00
headers: getAuthHeaders() as Record<string, string>
2025-07-10 13:58:28 +08:00
})
}
const getPan = async (id: number) => {
return await $fetch(`/pans/${id}`, {
baseURL: config.public.apiBase,
2025-07-10 15:07:29 +08:00
headers: getAuthHeaders() as Record<string, string>
2025-07-10 13:58:28 +08:00
})
}
const createPan = async (data: any) => {
return await $fetch('/pans', {
baseURL: config.public.apiBase,
method: 'POST',
2025-07-10 15:07:29 +08:00
body: data,
headers: getAuthHeaders() as Record<string, string>
2025-07-10 13:58:28 +08:00
})
}
const updatePan = async (id: number, data: any) => {
return await $fetch(`/pans/${id}`, {
baseURL: config.public.apiBase,
method: 'PUT',
2025-07-10 15:07:29 +08:00
body: data,
headers: getAuthHeaders() as Record<string, string>
2025-07-10 13:58:28 +08:00
})
}
const deletePan = async (id: number) => {
return await $fetch(`/pans/${id}`, {
baseURL: config.public.apiBase,
2025-07-10 15:07:29 +08:00
method: 'DELETE',
headers: getAuthHeaders() as Record<string, string>
2025-07-10 13:58:28 +08:00
})
}
return {
getPans,
getPan,
createPan,
updatePan,
deletePan,
}
}
// Cookie相关API
export const useCksApi = () => {
const config = useRuntimeConfig()
2025-07-10 15:07:29 +08:00
const getAuthHeaders = () => {
2025-07-10 21:14:17 +08:00
const userStore = useUserStore()
return userStore.authHeaders
2025-07-10 15:07:29 +08:00
}
2025-07-10 13:58:28 +08:00
const getCks = async (params?: any) => {
return await $fetch('/cks', {
baseURL: config.public.apiBase,
2025-07-10 15:07:29 +08:00
params,
headers: getAuthHeaders() as Record<string, string>
2025-07-10 13:58:28 +08:00
})
}
const getCksByID = async (id: number) => {
return await $fetch(`/cks/${id}`, {
baseURL: config.public.apiBase,
2025-07-10 15:07:29 +08:00
headers: getAuthHeaders() as Record<string, string>
2025-07-10 13:58:28 +08:00
})
}
const createCks = async (data: any) => {
return await $fetch('/cks', {
baseURL: config.public.apiBase,
method: 'POST',
2025-07-10 15:07:29 +08:00
body: data,
headers: getAuthHeaders() as Record<string, string>
2025-07-10 13:58:28 +08:00
})
}
const updateCks = async (id: number, data: any) => {
return await $fetch(`/cks/${id}`, {
baseURL: config.public.apiBase,
method: 'PUT',
2025-07-10 15:07:29 +08:00
body: data,
headers: getAuthHeaders() as Record<string, string>
2025-07-10 13:58:28 +08:00
})
}
const deleteCks = async (id: number) => {
return await $fetch(`/cks/${id}`, {
baseURL: config.public.apiBase,
2025-07-10 15:07:29 +08:00
method: 'DELETE',
headers: getAuthHeaders() as Record<string, string>
2025-07-10 13:58:28 +08:00
})
}
return {
getCks,
getCksByID,
createCks,
updateCks,
deleteCks,
}
}
// 标签相关API
export const useTagApi = () => {
const config = useRuntimeConfig()
2025-07-10 15:07:29 +08:00
const getAuthHeaders = () => {
2025-07-10 21:14:17 +08:00
const userStore = useUserStore()
return userStore.authHeaders
2025-07-10 15:07:29 +08:00
}
2025-07-10 13:58:28 +08:00
const getTags = async () => {
return await $fetch('/tags', {
baseURL: config.public.apiBase,
2025-07-10 15:07:29 +08:00
headers: getAuthHeaders() as Record<string, string>
2025-07-10 13:58:28 +08:00
})
}
const getTag = async (id: number) => {
return await $fetch(`/tags/${id}`, {
baseURL: config.public.apiBase,
2025-07-10 15:07:29 +08:00
headers: getAuthHeaders() as Record<string, string>
2025-07-10 13:58:28 +08:00
})
}
const createTag = async (data: any) => {
return await $fetch('/tags', {
baseURL: config.public.apiBase,
method: 'POST',
2025-07-10 15:07:29 +08:00
body: data,
headers: getAuthHeaders() as Record<string, string>
2025-07-10 13:58:28 +08:00
})
}
const updateTag = async (id: number, data: any) => {
return await $fetch(`/tags/${id}`, {
baseURL: config.public.apiBase,
method: 'PUT',
2025-07-10 15:07:29 +08:00
body: data,
headers: getAuthHeaders() as Record<string, string>
2025-07-10 13:58:28 +08:00
})
}
const deleteTag = async (id: number) => {
return await $fetch(`/tags/${id}`, {
baseURL: config.public.apiBase,
2025-07-10 15:07:29 +08:00
method: 'DELETE',
headers: getAuthHeaders() as Record<string, string>
2025-07-10 13:58:28 +08:00
})
}
const getResourceTags = async (resourceId: number) => {
return await $fetch(`/resources/${resourceId}/tags`, {
baseURL: config.public.apiBase,
2025-07-10 15:07:29 +08:00
headers: getAuthHeaders() as Record<string, string>
2025-07-10 13:58:28 +08:00
})
}
return {
getTags,
getTag,
createTag,
updateTag,
deleteTag,
getResourceTags,
}
}
// 待处理资源相关API
export const useReadyResourceApi = () => {
const config = useRuntimeConfig()
2025-07-10 15:07:29 +08:00
const getAuthHeaders = () => {
2025-07-10 21:14:17 +08:00
const userStore = useUserStore()
return userStore.authHeaders
2025-07-10 15:07:29 +08:00
}
2025-07-11 00:49:41 +08:00
const getReadyResources = async (params?: any) => {
2025-07-10 13:58:28 +08:00
return await $fetch('/ready-resources', {
baseURL: config.public.apiBase,
2025-07-11 00:49:41 +08:00
params,
2025-07-10 15:07:29 +08:00
headers: getAuthHeaders() as Record<string, string>
2025-07-10 13:58:28 +08:00
})
}
const createReadyResource = async (data: any) => {
return await $fetch('/ready-resources', {
baseURL: config.public.apiBase,
method: 'POST',
2025-07-10 15:07:29 +08:00
body: data,
headers: getAuthHeaders() as Record<string, string>
2025-07-10 13:58:28 +08:00
})
}
const batchCreateReadyResources = async (data: any) => {
return await $fetch('/ready-resources/batch', {
baseURL: config.public.apiBase,
method: 'POST',
2025-07-10 15:07:29 +08:00
body: data,
headers: getAuthHeaders() as Record<string, string>
2025-07-10 13:58:28 +08:00
})
}
const createReadyResourcesFromText = async (text: string) => {
2025-07-10 15:07:29 +08:00
const formData = new FormData()
formData.append('text', text)
2025-07-10 13:58:28 +08:00
return await $fetch('/ready-resources/text', {
baseURL: config.public.apiBase,
method: 'POST',
2025-07-10 15:07:29 +08:00
body: formData,
headers: getAuthHeaders() as Record<string, string>
2025-07-10 13:58:28 +08:00
})
}
const deleteReadyResource = async (id: number) => {
return await $fetch(`/ready-resources/${id}`, {
baseURL: config.public.apiBase,
2025-07-10 15:07:29 +08:00
method: 'DELETE',
headers: getAuthHeaders() as Record<string, string>
2025-07-10 13:58:28 +08:00
})
}
const clearReadyResources = async () => {
return await $fetch('/ready-resources', {
baseURL: config.public.apiBase,
2025-07-10 15:07:29 +08:00
method: 'DELETE',
headers: getAuthHeaders() as Record<string, string>
2025-07-10 13:58:28 +08:00
})
}
return {
getReadyResources,
createReadyResource,
batchCreateReadyResources,
createReadyResourcesFromText,
deleteReadyResource,
clearReadyResources,
}
}
2025-07-10 15:07:29 +08:00
// 统计相关API
2025-07-10 01:27:35 +08:00
export const useStatsApi = () => {
2025-07-10 13:58:28 +08:00
const config = useRuntimeConfig()
2025-07-10 01:27:35 +08:00
const getStats = async () => {
2025-07-10 13:58:28 +08:00
return await $fetch('/stats', {
baseURL: config.public.apiBase,
})
2025-07-10 01:27:35 +08:00
}
return {
getStats,
}
}