Files
zsp-project/frontend/mock/company.ts
2026-06-03 20:59:39 +08:00

361 lines
8.1 KiB
TypeScript
Executable File

import { defineFakeRoute } from "vite-plugin-fake-server/client";
// 模拟数据
const mockFolders = [
{
id: "1",
name: "营业执照",
count: 8,
createTime: "2024-01-15",
description: "所有公司的营业执照",
category: "license"
},
{
id: "2",
name: "开票信息",
count: 12,
createTime: "2024-01-20",
description: "公司开票相关信息",
category: "invoice"
},
{
id: "3",
name: "税务资质",
count: 6,
createTime: "2024-02-10",
description: "税务登记证等相关文件",
category: "tax"
},
{
id: "4",
name: "银行资料",
count: 4,
createTime: "2024-02-15",
description: "开户许可证等银行资料",
category: "bank"
},
{
id: "5",
name: "其他资质",
count: 5,
createTime: "2024-03-01",
description: "其他相关资质文件",
category: "other"
},
{
id: "6",
name: "2023年归档",
count: 25,
createTime: "2023-12-31",
description: "2023年度所有文件"
}
];
const mockFiles = [
{
id: "1",
fileName: "中尚鹏贸易有限公司-营业执照.pdf",
fileType: "pdf",
fileSize: "2.3MB",
uploadTime: "2024-01-20",
folderId: "1",
companyName: "中尚鹏贸易有限公司",
fileCategory: "license",
expireDate: "2027-12-31",
description: "营业执照正本扫描件"
},
{
id: "2",
fileName: "中尚鹏-开票信息.pdf",
fileType: "pdf",
fileSize: "1.1MB",
uploadTime: "2024-01-25",
folderId: "2",
companyName: "中尚鹏贸易有限公司",
fileCategory: "invoice",
description: "增值税专用发票开票信息"
},
{
id: "3",
fileName: "税务登记证-中尚鹏.jpg",
fileType: "jpg",
fileSize: "0.8MB",
uploadTime: "2024-02-12",
folderId: "3",
companyName: "中尚鹏贸易有限公司",
fileCategory: "tax",
expireDate: "2025-06-30",
description: "税务登记证扫描件"
},
{
id: "4",
fileName: "开户许可证-中国银行.pdf",
fileType: "pdf",
fileSize: "1.5MB",
uploadTime: "2024-02-18",
folderId: "4",
companyName: "中尚鹏贸易有限公司",
fileCategory: "bank",
description: "基本户开户许可证"
},
{
id: "5",
fileName: "公司章程-2024版.pdf",
fileType: "pdf",
fileSize: "2.1MB",
uploadTime: "2024-03-05",
folderId: "5",
companyName: "中尚鹏贸易有限公司",
fileCategory: "charter",
description: "最新版公司章程"
},
{
id: "6",
fileName: "华东制造有限公司-营业执照.png",
fileType: "png",
fileSize: "1.2MB",
uploadTime: "2024-02-05",
folderId: "1",
companyName: "华东制造有限公司",
fileCategory: "license",
expireDate: "2026-11-30",
description: "合作公司营业执照"
},
{
id: "7",
fileName: "南方制造-开票信息.pdf",
fileType: "pdf",
fileSize: "0.9MB",
uploadTime: "2024-02-08",
folderId: "2",
companyName: "南方制造有限公司",
fileCategory: "invoice",
description: "合作公司开票信息"
}
];
export default defineFakeRoute([
// 获取文件夹列表
{
url: "/company/folders",
method: "get",
response: () => {
return {
success: true,
message: "获取文件夹列表成功",
data: mockFolders
};
}
},
// 获取文件列表
{
url: "/company/files",
method: "get",
response: ({ query }) => {
let files = [...mockFiles];
// 根据文件夹ID过滤
if (query.folderId) {
files = files.filter(file => file.folderId === query.folderId);
}
return {
success: true,
message: "获取文件列表成功",
data: files
};
}
},
// 创建文件夹
{
url: "/company/folders",
method: "post",
response: ({ body }) => {
const newFolder = {
id: Date.now().toString(),
name: body.name,
count: 0,
createTime: new Date().toISOString().split("T")[0],
description: body.description,
category: body.category
};
mockFolders.push(newFolder);
return {
success: true,
message: "文件夹创建成功",
data: newFolder
};
}
},
// 更新文件夹
{
url: "/company/folders/:id",
method: "put",
response: ({ body, params }) => {
const folderIndex = mockFolders.findIndex(f => f.id === params.id);
if (folderIndex !== -1) {
mockFolders[folderIndex] = {
...mockFolders[folderIndex],
...body
};
return {
success: true,
message: "文件夹更新成功",
data: mockFolders[folderIndex]
};
}
return {
success: false,
message: "文件夹不存在"
};
}
},
// 删除文件夹
{
url: "/company/folders/:id",
method: "delete",
response: ({ params }) => {
const folderIndex = mockFolders.findIndex(f => f.id === params.id);
if (folderIndex !== -1) {
// 将文件夹内的文件移动到未分类
mockFiles.forEach(file => {
if (file.folderId === params.id) {
file.folderId = "";
}
});
mockFolders.splice(folderIndex, 1);
return {
success: true,
message: "文件夹删除成功"
};
}
return {
success: false,
message: "文件夹不存在"
};
}
},
// 上传文件
{
url: "/company/files/upload",
method: "post",
response: ({ body }) => {
try {
const data = JSON.parse(body.get("data"));
const files = body.getAll("files");
// 模拟处理每个文件
files.forEach((file: any, index: number) => {
const newFile = {
id: (Date.now() + index).toString(),
fileName: file.name,
fileType: file.name.split(".").pop() || "unknown",
fileSize: `${(file.size / 1024 / 1024).toFixed(1)}MB`,
uploadTime: new Date().toISOString().split("T")[0],
folderId: data.folderId || "",
companyName: data.companyName,
fileCategory: data.fileCategory,
expireDate: data.expireDate,
description: data.description
};
mockFiles.unshift(newFile);
// 更新文件夹计数
if (data.folderId) {
const folder = mockFolders.find(f => f.id === data.folderId);
if (folder) {
folder.count++;
}
}
});
return {
success: true,
message: `成功上传 ${files.length} 个文件`,
data: {
uploadedCount: files.length
}
};
} catch {
return {
success: false,
message: "文件上传失败"
};
}
}
},
// 删除文件
{
url: "/company/files/:id",
method: "delete",
response: ({ params }) => {
const fileIndex = mockFiles.findIndex(f => f.id === params.id);
if (fileIndex !== -1) {
const file = mockFiles[fileIndex];
// 更新文件夹计数
if (file.folderId) {
const folder = mockFolders.find(f => f.id === file.folderId);
if (folder && folder.count > 0) {
folder.count--;
}
}
mockFiles.splice(fileIndex, 1);
return {
success: true,
message: "文件删除成功"
};
}
return {
success: false,
message: "文件不存在"
};
}
},
// 下载文件
{
url: "/company/files/:id/download",
method: "get",
response: ({ params }) => {
const file = mockFiles.find(f => f.id === params.id);
if (file) {
return {
success: true,
message: "文件下载成功",
data: {
fileName: file.fileName,
url: `/downloads/${file.fileName}` // 模拟下载链接
}
};
}
return {
success: false,
message: "文件不存在"
};
}
}
]);