Files
workspace/code/email/Email-Vue/src/service/email.ts
T
2025-06-10 21:27:20 +08:00

91 lines
2.4 KiB
TypeScript

import { httpGet, httpPostJson, httpDownloadFile, httpPostUpload } from "@/utils/http";
import type { EmailFolder, EmailSummary, EmailDetail, EmailFile } from "@/types/email";
import type { AxiosResponse, AxiosProgressEvent } from "axios";
export const getEmailFolderApi = () => {
return httpGet<EmailFolder[]>("/email/getFolder");
};
export interface GetEmailSummaryPageParams extends BasePageParams {
folderId: string;
}
export const getEmailSummaryPageApi = (params: GetEmailSummaryPageParams) => {
return httpPostJson<BasePageResult<EmailSummary>>("/email/summary", params);
};
export const getEmailDetailApi = (emailId: string) => {
return httpGet<EmailDetail>(`/email/detail/${emailId}`);
};
export interface DownloadEmailFileParams {
uid: string;
folderName: string;
partIndex: number;
}
export const downloadEmailFileApi = (params: DownloadEmailFileParams): Promise<AxiosResponse<Blob>> => {
return httpDownloadFile("/email/download", params);
};
export const initEmailAllDataApi = () => {
return httpGet("/email/init");
};
export const uploadTempFile = (file: File, onUploadProgress?: (progressEvent: AxiosProgressEvent) => void) => {
const formData = new FormData();
formData.append("file", file);
return httpPostUpload<EmailFile>("/email/upload-temp", formData, onUploadProgress);
};
export const deleteTempFile = (id: string) => {
return httpPostJson<void>("/email/delete-temp", {
id: id
});
};
export interface EmailSentDTO {
emailId: string;
subject: string; // 邮件主题
body: string;
from: string;
fromName: string;
isSingSent: number;
isHtml: number;
toRecipients: string[]; // 收件人
ccRecipients: string[]; // 抄送
bccRecipients: string[]; // 密送
attachments: EmailFile[];
inlines: EmailFile[];
isSent: number;
}
export const sentEmailApi = (params: EmailSentDTO) => {
return httpPostJson<EmailSummary>("/email/sent", params);
};
export const testErrorApi = (params: { name: string; age: number }) => {
return httpGet<void>("/test", params);
};
export interface UpdateEmailSeenDTO {
folderId: string;
emailIds: string[];
isSeen: number;
}
export const updateEmailSeenApi = (params: UpdateEmailSeenDTO) => {
return httpPostJson<void>("/email/updateSeen", params);
};
export interface DeleteEmailParams {
folderId: string;
emailIds: string[];
}
export const deleteEmailApi = (params: DeleteEmailParams) => {
return httpPostJson<void>("/email/delete", params);
};