diff --git a/frontend/src/components/form/index.ts b/frontend/src/components/form/index.ts
new file mode 100644
index 0000000..87a49e3
--- /dev/null
+++ b/frontend/src/components/form/index.ts
@@ -0,0 +1,7 @@
+import FormInput from './FormInput.vue';
+import FormSelect from './FormSelect.vue';
+
+export {
+ FormInput,
+ FormSelect
+};
diff --git a/frontend/src/components/modals/BaseDialog.vue b/frontend/src/components/modals/BaseDialog.vue
index 88a1d37..a9c9dd4 100644
--- a/frontend/src/components/modals/BaseDialog.vue
+++ b/frontend/src/components/modals/BaseDialog.vue
@@ -29,7 +29,7 @@
import { Modal, initFlowbite } from "flowbite";
import { computed, onMounted } from "vue";
-export type ModalSize = "xs" | "sm" | "md" | "lg" | "xl";
+export type ModalSize = "xs" | "sm" | "md" | "lg" | "xl" | "2xl" | "3xl" | "4xl" | "5xl" | "6xl" | "7xl";
const props = defineProps<{
/** 对话框标题 */
@@ -50,6 +50,12 @@ const maxWidthClass = computed(() => {
md: "max-w-md",
lg: "max-w-lg",
xl: "max-w-xl",
+ "2xl": "max-w-2xl",
+ "3xl": "max-w-3xl",
+ "4xl": "max-w-4xl",
+ "5xl": "max-w-5xl",
+ "6xl": "max-w-6xl",
+ "7xl": "max-w-7xl",
};
return sizes[props.size || "md"];
diff --git a/frontend/src/components/modals/ConfirmationDialog.vue b/frontend/src/components/modals/ConfirmationDialog.vue
index 6fc0941..cb54176 100644
--- a/frontend/src/components/modals/ConfirmationDialog.vue
+++ b/frontend/src/components/modals/ConfirmationDialog.vue
@@ -9,25 +9,33 @@
{{ title }}
+ {{ content }}
-
+
+ 否
+
diff --git a/frontend/src/components/modals/index.ts b/frontend/src/components/modals/index.ts
new file mode 100644
index 0000000..4ec950a
--- /dev/null
+++ b/frontend/src/components/modals/index.ts
@@ -0,0 +1,23 @@
+import BaseDialog from "./BaseDialog.vue";
+import ConfirmationDialog from "./ConfirmationDialog.vue";
+import DepartmentFormDialog from "./DepartmentFormDialog.vue";
+import LibraryFormDialog from "./LibraryFormDialog.vue";
+import LlmFormDialog from "./LlmFormDialog.vue";
+import PermissionFormDialog from "./PermissionFormDialog.vue";
+import PositionFormDialog from "./PositionFormDialog.vue";
+import RoleFormDialog from "./RoleFormDialog.vue";
+import SchedulerFormDialog from "./SchedulerFormDialog.vue";
+import UserFormDialog from "./UserFormDialog.vue";
+
+export {
+ BaseDialog,
+ ConfirmationDialog,
+ DepartmentFormDialog,
+ LibraryFormDialog,
+ LlmFormDialog,
+ PermissionFormDialog,
+ PositionFormDialog,
+ RoleFormDialog,
+ SchedulerFormDialog,
+ UserFormDialog,
+};
diff --git a/frontend/src/components/tables/TableFilterForm.vue b/frontend/src/components/tables/TableFilterForm.vue
index 9011a41..df01516 100644
--- a/frontend/src/components/tables/TableFilterForm.vue
+++ b/frontend/src/components/tables/TableFilterForm.vue
@@ -33,15 +33,15 @@
-
-
+
+
+
+
搜索
-
+
@@ -53,6 +53,7 @@
diff --git a/frontend/src/composables/common/index.ts b/frontend/src/composables/common/index.ts
new file mode 100644
index 0000000..70868d1
--- /dev/null
+++ b/frontend/src/composables/common/index.ts
@@ -0,0 +1,6 @@
+import { useErrorHandling } from "./useErrorHandling";
+import { usePagination } from "./usePagination";
+import { useSorting } from "./useSorting";
+import { useStyleSystem } from "./useStyleSystem";
+
+export { useErrorHandling, usePagination, useSorting, useStyleSystem };
diff --git a/frontend/src/utils/avatarUtil.ts b/frontend/src/utils/avatarUtil.ts
index 75f3ec0..7aac218 100644
--- a/frontend/src/utils/avatarUtil.ts
+++ b/frontend/src/utils/avatarUtil.ts
@@ -1,5 +1,16 @@
-export const getUserAvatarUrl = (avatar?: string): string | undefined => {
- if (avatar?.startsWith("/")) {
+/**
+ * 获取用户头像URL
+ * @param avatar 头像路径
+ * @returns 完整的头像URL或默认头像
+ */
+export const getUserAvatarUrl = (avatar?: string): string => {
+ if (!avatar) {
+ return "/trump.jpg"; // 默认头像
+ }
+
+ if (avatar.startsWith("/")) {
return `${import.meta.env.VITE_STATIC_URL}${avatar}`;
}
+
+ return avatar; // 如果已经是完整URL则直接返回
};
diff --git a/frontend/src/utils/index.ts b/frontend/src/utils/index.ts
new file mode 100644
index 0000000..6ea2412
--- /dev/null
+++ b/frontend/src/utils/index.ts
@@ -0,0 +1,4 @@
+import { getUserAvatarUrl } from "./avatarUtil";
+import { dayjs, formatDate, formatDateString } from "./dateUtil";
+
+export { getUserAvatarUrl, dayjs, formatDate, formatDateString };