tansci/antdv-next-admin/mock/handlers/dept.mock.ts
xuewuerduo f468d532b1 feat: 初始化tansci资产管理项目
包含以下模块:
- antdv-next-admin: Vue 3 + TypeScript + Ant Design Vue 管理后台
  - 设备/许可证/配件/耗材 CRUD 管理页面
  - 基础数据管理 (分类/位置/制造商/型号/供应商)
  - 业务管理 (故障报修/盘点/资产分配/资产申请/交易记录)
  - 下拉选项改造 (ID输入框 → 搜索下拉选择)
  - 资产状态字典化 (接入sys_dict系统)
  - 界面文案优化 (设备→资产, 在库/在用/维修中/已报废)
  - 修复 console 警告 (popupClassName, 重复组件注册)
- our-itam: Java Spring Boot + magic-api 后端服务
- fantastic-admin: 前端底层框架 (pnpm monorepo)
- ciyo-itasset: CIYO 资产模块
- magic-script-skill: Claude Code skill 定义
- .claude: 对话历史记录

Co-Authored-By: Claude Code <noreply@anthropic.com>
2026-05-17 21:41:22 +08:00

122 lines
3.0 KiB
TypeScript

import type { Department } from "@/types/dept";
import { defineMock } from "vite-plugin-mock-dev-server";
import { departments, buildDeptTree } from "../data/dept.data";
export default defineMock([
// 获取部门树
{
url: "/api/dept/tree",
method: "GET",
body: (req) => {
const { name, status } = req.query;
let filtered = [...departments];
if (name) {
filtered = filtered.filter((item) =>
item.name.includes(name as string),
);
}
if (status) {
filtered = filtered.filter((item) => item.status === status);
}
return {
code: 200,
message: "success",
success: true,
data: buildDeptTree(filtered),
};
},
},
// 获取部门列表(扁平)
{
url: "/api/dept/list",
method: "GET",
body: (req) => {
const { name, status } = req.query;
let filtered = [...departments];
if (name) {
filtered = filtered.filter((item) =>
item.name.includes(name as string),
);
}
if (status) {
filtered = filtered.filter((item) => item.status === status);
}
filtered.sort((a, b) => a.sort - b.sort);
return {
code: 200,
message: "success",
success: true,
data: filtered,
};
},
},
// 创建部门
{
url: "/api/dept",
method: "POST",
body: (req) => {
const newDept: Department = {
id: String(Date.now()),
...req.body,
createTime: new Date().toISOString().replace("T", " ").slice(0, 19),
updateTime: new Date().toISOString().replace("T", " ").slice(0, 19),
};
departments.push(newDept);
return { code: 200, message: "创建成功", success: true, data: newDept };
},
},
// 更新部门
{
url: "/api/dept/:id",
method: "PUT",
body: (req) => {
const { id } = req.params;
const index = departments.findIndex((item) => item.id === id);
if (index !== -1) {
departments[index] = {
...departments[index],
...req.body,
updateTime: new Date().toISOString().replace("T", " ").slice(0, 19),
};
return {
code: 200,
message: "更新成功",
success: true,
data: departments[index],
};
}
return { code: 404, message: "部门不存在", success: false };
},
},
// 删除部门
{
url: "/api/dept/:id",
method: "DELETE",
body: (req) => {
const { id } = req.params;
// 检查是否有子部门
const hasChildren = departments.some((item) => item.parentId === id);
if (hasChildren) {
return { code: 400, message: "存在子部门,无法删除", success: false };
}
const index = departments.findIndex((item) => item.id === id);
if (index !== -1) {
departments.splice(index, 1);
return { code: 200, message: "删除成功", success: true };
}
return { code: 404, message: "部门不存在", success: false };
},
},
]);