290 lines
6.3 KiB
TypeScript
290 lines
6.3 KiB
TypeScript
import type { DictType, DictData } from "@/types/dict";
|
|
|
|
import { defineMock } from "vite-plugin-mock-dev-server";
|
|
|
|
import { dictTypes, dictData } from "../data/dict.data";
|
|
|
|
export default defineMock([
|
|
// 获取所有字典类型
|
|
{
|
|
url: "/api/dict/types",
|
|
method: "GET",
|
|
body: () => {
|
|
return {
|
|
code: 200,
|
|
message: "success",
|
|
success: true,
|
|
data: dictTypes,
|
|
};
|
|
},
|
|
},
|
|
|
|
// 获取字典类型列表(分页)
|
|
{
|
|
url: "/api/dict/type/list",
|
|
method: "GET",
|
|
body: (req) => {
|
|
const { name, code, status, page = 1, pageSize = 10 } = req.query;
|
|
|
|
let filtered = [...dictTypes];
|
|
|
|
if (name) {
|
|
filtered = filtered.filter((item) =>
|
|
item.name.includes(name as string),
|
|
);
|
|
}
|
|
if (code) {
|
|
filtered = filtered.filter((item) =>
|
|
item.code.includes(code as string),
|
|
);
|
|
}
|
|
if (status) {
|
|
filtered = filtered.filter((item) => item.status === status);
|
|
}
|
|
|
|
const start = (Number(page) - 1) * Number(pageSize);
|
|
const end = start + Number(pageSize);
|
|
const list = filtered.slice(start, end);
|
|
|
|
return {
|
|
code: 200,
|
|
message: "success",
|
|
success: true,
|
|
data: {
|
|
list,
|
|
total: filtered.length,
|
|
current: Number(page),
|
|
pageSize: Number(pageSize),
|
|
},
|
|
};
|
|
},
|
|
},
|
|
|
|
// 创建字典类型
|
|
{
|
|
url: "/api/dict/type",
|
|
method: "POST",
|
|
body: (req) => {
|
|
const newType: DictType = {
|
|
id: String(Date.now()),
|
|
...req.body,
|
|
createTime: new Date().toISOString(),
|
|
updateTime: new Date().toISOString(),
|
|
};
|
|
dictTypes.push(newType);
|
|
return {
|
|
code: 200,
|
|
message: "创建成功",
|
|
success: true,
|
|
data: newType,
|
|
};
|
|
},
|
|
},
|
|
|
|
// 更新字典类型
|
|
{
|
|
url: "/api/dict/type/:id",
|
|
method: "PUT",
|
|
body: (req) => {
|
|
const { id } = req.params;
|
|
const index = dictTypes.findIndex((item) => item.id === id);
|
|
if (index !== -1) {
|
|
dictTypes[index] = {
|
|
...dictTypes[index],
|
|
...req.body,
|
|
updateTime: new Date().toISOString(),
|
|
};
|
|
return {
|
|
code: 200,
|
|
message: "更新成功",
|
|
success: true,
|
|
data: dictTypes[index],
|
|
};
|
|
}
|
|
return {
|
|
code: 404,
|
|
message: "字典类型不存在",
|
|
success: false,
|
|
};
|
|
},
|
|
},
|
|
|
|
// 删除字典类型
|
|
{
|
|
url: "/api/dict/type/:id",
|
|
method: "DELETE",
|
|
body: (req) => {
|
|
const { id } = req.params;
|
|
const index = dictTypes.findIndex((item) => item.id === id);
|
|
if (index !== -1) {
|
|
dictTypes.splice(index, 1);
|
|
return {
|
|
code: 200,
|
|
message: "删除成功",
|
|
success: true,
|
|
};
|
|
}
|
|
return {
|
|
code: 404,
|
|
message: "字典类型不存在",
|
|
success: false,
|
|
};
|
|
},
|
|
},
|
|
|
|
// 获取所有字典数据
|
|
{
|
|
url: "/api/dict/data/all",
|
|
method: "GET",
|
|
body: () => {
|
|
return {
|
|
code: 200,
|
|
message: "success",
|
|
success: true,
|
|
data: dictData,
|
|
};
|
|
},
|
|
},
|
|
|
|
// 获取字典数据列表(分页) - 必须在 :typeCode 之前,避免被参数路由匹配
|
|
{
|
|
url: "/api/dict/data/list",
|
|
method: "GET",
|
|
body: (req) => {
|
|
const {
|
|
typeCode,
|
|
label,
|
|
value,
|
|
status,
|
|
page = 1,
|
|
pageSize = 10,
|
|
} = req.query;
|
|
|
|
let filtered = [...dictData];
|
|
|
|
if (typeCode) {
|
|
filtered = filtered.filter((item) => item.typeCode === typeCode);
|
|
}
|
|
if (label) {
|
|
filtered = filtered.filter((item) =>
|
|
item.label.includes(label as string),
|
|
);
|
|
}
|
|
if (value) {
|
|
filtered = filtered.filter((item) =>
|
|
item.value.includes(value as string),
|
|
);
|
|
}
|
|
if (status) {
|
|
filtered = filtered.filter((item) => item.status === status);
|
|
}
|
|
|
|
const start = (Number(page) - 1) * Number(pageSize);
|
|
const end = start + Number(pageSize);
|
|
const list = filtered.slice(start, end);
|
|
|
|
return {
|
|
code: 200,
|
|
message: "success",
|
|
success: true,
|
|
data: {
|
|
list,
|
|
total: filtered.length,
|
|
current: Number(page),
|
|
pageSize: Number(pageSize),
|
|
},
|
|
};
|
|
},
|
|
},
|
|
|
|
// 根据类型获取字典数据
|
|
{
|
|
url: "/api/dict/data/:typeCode",
|
|
method: "GET",
|
|
body: (req) => {
|
|
const { typeCode } = req.params;
|
|
const filtered = dictData.filter(
|
|
(item) => item.typeCode === typeCode && item.status === "enabled",
|
|
);
|
|
return {
|
|
code: 200,
|
|
message: "success",
|
|
success: true,
|
|
data: filtered,
|
|
};
|
|
},
|
|
},
|
|
|
|
// 创建字典数据
|
|
{
|
|
url: "/api/dict/data",
|
|
method: "POST",
|
|
body: (req) => {
|
|
const newData: DictData = {
|
|
id: String(Date.now()),
|
|
...req.body,
|
|
createTime: new Date().toISOString(),
|
|
updateTime: new Date().toISOString(),
|
|
};
|
|
dictData.push(newData);
|
|
return {
|
|
code: 200,
|
|
message: "创建成功",
|
|
success: true,
|
|
data: newData,
|
|
};
|
|
},
|
|
},
|
|
|
|
// 更新字典数据
|
|
{
|
|
url: "/api/dict/data/:id",
|
|
method: "PUT",
|
|
body: (req) => {
|
|
const { id } = req.params;
|
|
const index = dictData.findIndex((item) => item.id === id);
|
|
if (index !== -1) {
|
|
dictData[index] = {
|
|
...dictData[index],
|
|
...req.body,
|
|
updateTime: new Date().toISOString(),
|
|
};
|
|
return {
|
|
code: 200,
|
|
message: "更新成功",
|
|
success: true,
|
|
data: dictData[index],
|
|
};
|
|
}
|
|
return {
|
|
code: 404,
|
|
message: "字典数据不存在",
|
|
success: false,
|
|
};
|
|
},
|
|
},
|
|
|
|
// 删除字典数据
|
|
{
|
|
url: "/api/dict/data/:id",
|
|
method: "DELETE",
|
|
body: (req) => {
|
|
const { id } = req.params;
|
|
const index = dictData.findIndex((item) => item.id === id);
|
|
if (index !== -1) {
|
|
dictData.splice(index, 1);
|
|
return {
|
|
code: 200,
|
|
message: "删除成功",
|
|
success: true,
|
|
};
|
|
}
|
|
return {
|
|
code: 404,
|
|
message: "字典数据不存在",
|
|
success: false,
|
|
};
|
|
},
|
|
},
|
|
]);
|