import request from '@/utils/http' export type DoclibScope = 'mine' | 'shared' | 'all' export interface DoclibPerson { id: string name: string deptName: string } export interface DoclibFolder { id: string name: string scope: DoclibScope folderId: string fullPath: string ownerId: string canManage: boolean count: number children: DoclibFolder[] } export interface DoclibDocument { id: string name: string folderId: string folderPath: string size: number contentType: string ownerId: string ownerName: string createTime: string updateTime: string canManage: boolean shares: DoclibPerson[] } const base = '/web/doclib' export const fetchDoclibTree = () => request.get<{ nodes: DoclibFolder[]; isSuperAdmin: boolean; maxUploadBytes: number }>({ url: `${base}/tree` }) export const fetchDoclibFiles = (params: { scope: DoclibScope folderId: string keyword: string page: number pageSize: number }) => request.get<{ list: DoclibDocument[]; total: number }>({ url: `${base}/files`, params }) export const fetchDoclibFile = (id: string) => request.get({ url: `${base}/files/${encodeURIComponent(id)}` }) export const createDoclibFolder = (data: { name: string; parentId: string }) => request.post({ url: `${base}/folders`, data }) export const renameDoclibFolder = (id: string, name: string) => request.put({ url: `${base}/folders/${encodeURIComponent(id)}`, data: { name } }) export const deleteDoclibFolder = (id: string) => request.delete({ url: `${base}/folders/${encodeURIComponent(id)}` }) export const uploadDoclibFile = (file: File, folderId: string) => { const data = new FormData() data.append('file', file) data.append('folderId', folderId) return request.post({ url: `${base}/upload`, data, timeout: 300000, showErrorMessage: false }) } export const saveDoclibShares = (id: string, userIds: string[]) => request.put({ url: `${base}/files/${encodeURIComponent(id)}/shares`, data: { userIds } }) export const saveDoclibBatchShares = (ids: string[], userIds: string[]) => request.post({ url: `${base}/files/batch-shares`, data: { ids, userIds } }) export const deleteDoclibFiles = (ids: string[]) => request.post({ url: `${base}/files/batch-delete`, data: { ids } }) export const downloadDoclibFile = (id: string) => request.get({ url: `${base}/files/${encodeURIComponent(id)}/download`, responseType: 'blob', timeout: 300000 }) export const fetchDoclibUsers = (keyword = '') => request.get({ url: `${base}/users`, params: { keyword } })