import { ref } from 'vue' import { useAppStore } from '@/stores/app' import { request, apiUrl, authHeaders } from '@/api/client' const documents = ref([]) const loading = ref(false) const error = ref('') export function useDocuments() { const store = useAppStore() async function loadDocuments({ cateBizId = '' } = {}) { if (!store.token) { documents.value = [] return } loading.value = true error.value = '' try { const params = new URLSearchParams({ page: '1', page_size: '100' }) if (cateBizId) params.set('cate_biz_id', cateBizId) const result = await request(`/api/documents/adp?${params.toString()}`) documents.value = result.list || [] } catch (err) { error.value = err.message documents.value = [] } finally { loading.value = false } } async function uploadDocument({ file, tags, secrecyLevel, ownerDept = '财务部' }) { if (!file) throw new Error('请先选择或拖拽一个文件') const formData = new FormData() formData.append('file', file) formData.append('tags', (tags || []).join(',')) formData.append('secrecy_level', secrecyLevel) formData.append('owner_dept', ownerDept) const response = await fetch(apiUrl('/api/documents/upload'), { method: 'POST', headers: authHeaders(), body: formData, }) if (!response.ok) { throw new Error(await response.text()) } return response.json().catch(() => null) } async function uploadToAdp({ file }) { if (!file) throw new Error('请先选择或拖拽一个文件') const formData = new FormData() formData.append('file', file) const response = await fetch(apiUrl('/api/documents/adp/upload'), { method: 'POST', headers: authHeaders(), body: formData, }) if (!response.ok) { throw new Error(await response.text()) } return response.json().catch(() => null) } async function deleteAdpDocument(docBizId) { if (!docBizId) throw new Error('缺少 DocBizId') return request(`/api/documents/adp/${encodeURIComponent(docBizId)}`, { method: 'DELETE' }) } return { documents, loading, error, loadDocuments, uploadDocument, uploadToAdp, deleteAdpDocument } }