重构错误处理逻辑,更新组件导入路径,新增多个模态框组件以支持用户、部门、角色和权限管理功能,优化分页和排序逻辑,更新类型定义以提高代码可读性和维护性

This commit is contained in:
Chuck1sn
2025-06-16 18:00:15 +08:00
parent 772ad547bf
commit 87d288c58e
54 changed files with 308 additions and 221 deletions

View File

@@ -0,0 +1,58 @@
import { computed, ref } from "vue";
export interface SortField {
field: string;
order: "asc" | "desc" | undefined;
}
/**
* 排序逻辑Composable - 提供排序相关的状态和操作
* @returns 排序状态和方法
*/
export function useSorting() {
const sortFields = ref<SortField[]>([]);
/**
* 获取指定字段的排序信息
* @param field 字段名
* @returns 排序字段对象
*/
const getSortField = (field: string) => {
return sortFields.value.find((item) => item.field === field);
};
/**
* 排序表达式用于API请求
*/
const sortBy = computed(() => {
return sortFields.value.length
? sortFields.value.map((item) => `${item.field}:${item.order}`).join(",")
: undefined;
});
/**
* 处理字段排序
* @param field 字段名
*/
const handleSort = async (field: string) => {
if (sortFields.value?.find((item) => item.field === field)) {
sortFields.value = sortFields.value?.map((item) =>
item.field === field
? { ...item, order: item.order === "asc" ? "desc" : undefined }
: item,
);
} else {
sortFields.value.push({ field, order: "asc" });
}
sortFields.value = sortFields.value?.filter(
(item) => item.order !== undefined,
);
};
return {
sortFields,
sortBy,
handleSort,
getSortField,
};
}