From 3e1d7e6fee57439662ff6f748ec26e71934d0099 Mon Sep 17 00:00:00 2001 From: Chuck1sn Date: Sat, 28 Jun 2025 09:16:36 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E8=A1=A8=E5=8D=95=E5=92=8C?= =?UTF-8?q?=E5=AF=B9=E8=AF=9D=E6=A1=86=E7=BB=84=E4=BB=B6=EF=BC=8C=E4=BC=98?= =?UTF-8?q?=E5=8C=96=E5=A4=B4=E5=83=8F=E5=A4=84=E7=90=86=E9=80=BB=E8=BE=91?= =?UTF-8?q?=EF=BC=8C=E6=9B=B4=E6=96=B0=E7=9B=B8=E5=85=B3=E5=B7=A5=E5=85=B7?= =?UTF-8?q?=E5=87=BD=E6=95=B0=EF=BC=8C=E6=8F=90=E5=8D=87=E7=94=A8=E6=88=B7?= =?UTF-8?q?=E7=95=8C=E9=9D=A2=E5=92=8C=E4=BA=A4=E4=BA=92=E4=BD=93=E9=AA=8C?= =?UTF-8?q?=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/src/components/form/index.ts | 7 ++++ frontend/src/components/modals/BaseDialog.vue | 8 +++- .../components/modals/ConfirmationDialog.vue | 20 +++++++--- frontend/src/components/modals/index.ts | 23 +++++++++++ .../src/components/tables/TableFilterForm.vue | 17 ++++---- frontend/src/components/tables/index.ts | 15 +++++++ frontend/src/components/ui/Avatar.vue | 40 ++++++++----------- frontend/src/composables/common/index.ts | 6 +++ frontend/src/utils/avatarUtil.ts | 15 ++++++- frontend/src/utils/index.ts | 4 ++ 10 files changed, 115 insertions(+), 40 deletions(-) create mode 100644 frontend/src/components/form/index.ts create mode 100644 frontend/src/components/modals/index.ts create mode 100644 frontend/src/components/tables/index.ts create mode 100644 frontend/src/composables/common/index.ts create mode 100644 frontend/src/utils/index.ts 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 };