feat: 设置模块用户列表功能90%
This commit is contained in:
@@ -0,0 +1,79 @@
|
||||
import { ref, onMounted } from 'vue';
|
||||
import {
|
||||
getDepartmentList,
|
||||
DepartmentItem,
|
||||
getDepartmentDetail,
|
||||
} from '@/api/setting';
|
||||
import useLoading from '@/hooks/loading';
|
||||
|
||||
export default function useDepartmentList(autoFetch = true) {
|
||||
const departmentListData = ref<DepartmentItem[]>([]);
|
||||
const allDepartmentKeys = ref<number[]>([]);
|
||||
function markNonLevel1Departments(list: DepartmentItem[]): DepartmentItem[] {
|
||||
const traverse = (items: DepartmentItem[]) => {
|
||||
return items.map((item) => {
|
||||
const newItem: DepartmentItem = {
|
||||
...item,
|
||||
isShowEditIcon: false,
|
||||
children: [],
|
||||
};
|
||||
|
||||
// 收集 ID
|
||||
allDepartmentKeys.value.push(item.id);
|
||||
|
||||
if (item.children && item.children.length > 0) {
|
||||
newItem.children = traverse(item.children);
|
||||
}
|
||||
|
||||
return newItem;
|
||||
});
|
||||
};
|
||||
|
||||
return traverse(list);
|
||||
}
|
||||
|
||||
const getDepartmentListData = async () => {
|
||||
try {
|
||||
const { code, data } = await getDepartmentList();
|
||||
if (code === 200) {
|
||||
if (data?.departmentList?.length === 0) return;
|
||||
allDepartmentKeys.value = []; // 清空再收集
|
||||
|
||||
const fetchDepartmentList = markNonLevel1Departments(
|
||||
data?.departmentList
|
||||
);
|
||||
departmentListData.value = fetchDepartmentList;
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('获取部门列表失败:', error);
|
||||
}
|
||||
};
|
||||
|
||||
const getDepartmentDetailData = async (
|
||||
id: number
|
||||
): Promise<DepartmentItem | null> => {
|
||||
try {
|
||||
const { code, data } = await getDepartmentDetail(id);
|
||||
if (code === 200 && data?.department) {
|
||||
return data.department;
|
||||
}
|
||||
return null;
|
||||
} catch (error) {
|
||||
console.error('获取部门详情失败:', error);
|
||||
return null;
|
||||
}
|
||||
};
|
||||
|
||||
if (autoFetch) {
|
||||
onMounted(() => {
|
||||
getDepartmentListData();
|
||||
});
|
||||
}
|
||||
|
||||
return {
|
||||
departmentListData,
|
||||
allDepartmentKeys,
|
||||
getDepartmentListData,
|
||||
getDepartmentDetailData,
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user