1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- import { http } from "@/utils/http";
- import { ref } from "vue";
- // 部门
- type addDept = {
- code: number;
- msg: string;
- data: boolean;
- };
- type addDeptList = {
- code: number;
- msg: string;
- data: Array<any>;
- };
- export const postAddDept = data => {
- return http.request<addDept>("post", "/sysDept/addDept", { data });
- };
- export const postDelDept = data => {
- return http.request<addDept>("post", "/sysDept/delDept", { data });
- };
- export const postListTree = () => {
- return http.request<addDeptList>("post", "/sysDept/listTree");
- };
- export const postUpdateDept = data => {
- return http.request<addDept>("post", "/sysDept/updateDept", { data });
- };
- // 部门下新建人员
- export const postDeptUserAdd = data => {
- return http.request<addDept>("post", "/sysDept/deptUserAdd", { data });
- };
- // 部门下树(包含用户信息)
- export const postListTreeWithUser = () => {
- return http.request<addDeptList>("post", "/sysDept/listTreeWithUser");
- };
- export const treeDept = ref([]);
- export const postListTreeWithUserApi = async () => {
- const res = await postListTreeWithUser();
- treeDept.value = transformData(res.data);
- };
- const transformData = data => {
- // 基本的转换逻辑
- return data.map(item => {
- // 初始化一个转换后的项目
- const transformedItem = {
- userName: item.deptName || item.userName, // 使用 deptName 或 userName
- userCode: item.deptCode || item.userCode, // 使用 deptCode 或 userCode
- children: [] // 用于存储子部门和用户数据
- };
- // 递归处理子部门数据(childrenRes)
- if (item.childrenRes && Array.isArray(item.childrenRes)) {
- transformedItem.children.push(...transformData(item.childrenRes)); // 合并所有子部门
- }
- // 处理当前部门的用户数据(childrenUserRes)
- if (item.childrenUserRes && Array.isArray(item.childrenUserRes)) {
- item.childrenUserRes.forEach(user => {
- // 将每个用户添加到 children 数组
- transformedItem.children.push({
- userName: user.userName,
- userCode: user.userCode
- });
- });
- }
- return transformedItem;
- });
- };
|