import { MockMethod } from "vite-plugin-mock"; const article_list: any = []; const count = 100; for (let i = 0; i < count; i++) { article_list.push({ id: i, timestamp: new Date().getTime(), author: `Author ${i}`, reviewer: `reviewer ${i}`, title: `Title ${i}`, importance: Math.floor(Math.random() * 3) + 1, type: ["CN", "US", "JP", "EU"][Math.floor(Math.random() * 4)], status: ["published", "draft"][Math.floor(Math.random() * 2)], display_time: new Date().toISOString(), pageviews: Math.floor(Math.random() * (5000 - 300)) + 300, remark: `remark ${i}`, }); } export default [ { url: "/api/v1/article/list", timeout: 200, method: "get", response: ({ query }) => { const { importance, type, title, page = 1, limit = 10, sort } = query; let mock_list = article_list.filter((item: any) => { if (importance && item.importance !== +importance) return false; if (type && item.type !== type) return false; if (title && item.title.indexOf(title) < 0) return false; if (item.status === "deleted") return false; return true; }); if (sort === "-id") { mock_list = mock_list.reverse(); } const page_list = mock_list.filter( (item: any, index: number) => index < limit * page && index >= limit * (page - 1) ); return { code: "00000", data: { total: mock_list.length, page: page, items: page_list }, msg: "一切ok", }; }, }, { url: "/api/v1/article/detail", timeout: 200, method: "get", response: ({ query }) => { const { id } = query; for (const article of article_list) { if (article.id === +id) { return { code: "00000", data: article, msg: "一切ok", }; } } }, }, { url: "/api/v1/article/pv", timeout: 200, method: "get", response: ({ query }) => { const { id } = query; for (const article of article_list) { if (article.id === +id) { return { code: "00000", data: { pv: article.pageviews, pvData: [ { key: "PC", pv: 1024 }, { key: "mobile", pv: 1024 }, { key: "ios", pv: 1024 }, { key: "android", pv: 1024 }, ], }, msg: "一切ok", }; } } }, }, { url: "/api/v1/article/update", timeout: 200, method: "post", response: ({ body }) => { const { id, ...updatedFields } = body; // 查找要更新的文章 const articleToUpdate = article_list.find( (article: any) => article.id === id ); // 如果找到了要更新的文章 if (articleToUpdate) { // 使用 Object.assign 方法更新文章 Object.assign(articleToUpdate, updatedFields); return { code: "00000", data: { article: articleToUpdate, }, msg: "一切ok", }; } else { console.error(`Article with id ${id} not found.`); } }, }, { url: "/api/v1/article/create", timeout: 200, method: "post", response: ({ body }) => { const { title, author, importance, type, status, remark, timestamp } = body; // article_list最大的id值; const maxId = article_list.reduce((maxId: number, article: any) => { return Math.max(maxId, article.id); }, -1); const article = { id: maxId + 1, timestamp, author, reviewer: `reviewer ${maxId + 1}`, title, importance, type, status, display_time: new Date(timestamp).toISOString(), pageviews: Math.floor(Math.random() * (5000 - 300)) + 300, remark, }; article_list.push(article); return { code: "00000", data: { article, }, msg: "一切ok", }; }, }, { url: "/api/v1/article/delete", timeout: 200, method: "post", response: ({ body }) => { const { id } = body; const index = article_list.findIndex((article: any) => article.id === id); article_list.splice(index, 1); return { code: "00000", msg: "一切ok", }; }, }, ] as MockMethod[];