department.ts 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. import { http } from "@/utils/http";
  2. import { ref } from "vue";
  3. // 部门
  4. type addDept = {
  5. code: number;
  6. msg: string;
  7. data: boolean;
  8. };
  9. type addDeptList = {
  10. code: number;
  11. msg: string;
  12. data: Array<any>;
  13. };
  14. export const postAddDept = data => {
  15. return http.request<addDept>("post", "/sysDept/addDept", { data });
  16. };
  17. export const postDelDept = data => {
  18. return http.request<addDept>("post", "/sysDept/delDept", { data });
  19. };
  20. export const postListTree = () => {
  21. return http.request<addDeptList>("post", "/sysDept/listTree");
  22. };
  23. export const postUpdateDept = data => {
  24. return http.request<addDept>("post", "/sysDept/updateDept", { data });
  25. };
  26. // 部门下新建人员
  27. export const postDeptUserAdd = data => {
  28. return http.request<addDept>("post", "/sysDept/deptUserAdd", { data });
  29. };
  30. // 部门下树(包含用户信息)
  31. export const postListTreeWithUser = () => {
  32. return http.request<addDeptList>("post", "/sysDept/listTreeWithUser");
  33. };
  34. export const treeDept = ref([]);
  35. export const postListTreeWithUserApi = async () => {
  36. const res = await postListTreeWithUser();
  37. treeDept.value = transformData(res.data);
  38. };
  39. const transformData = data => {
  40. // 基本的转换逻辑
  41. return data.map(item => {
  42. // 初始化一个转换后的项目
  43. const transformedItem = {
  44. userName: item.deptName || item.userName, // 使用 deptName 或 userName
  45. userCode: item.deptCode || item.userCode, // 使用 deptCode 或 userCode
  46. children: [] // 用于存储子部门和用户数据
  47. };
  48. // 递归处理子部门数据(childrenRes)
  49. if (item.childrenRes && Array.isArray(item.childrenRes)) {
  50. transformedItem.children.push(...transformData(item.childrenRes)); // 合并所有子部门
  51. }
  52. // 处理当前部门的用户数据(childrenUserRes)
  53. if (item.childrenUserRes && Array.isArray(item.childrenUserRes)) {
  54. item.childrenUserRes.forEach(user => {
  55. // 将每个用户添加到 children 数组
  56. transformedItem.children.push({
  57. userName: user.userName,
  58. userCode: user.userCode
  59. });
  60. });
  61. }
  62. return transformedItem;
  63. });
  64. };