update 优化 重构抽出一些常用hooks组件简化页面编码

This commit is contained in:
疯狂的狮子Li
2026-04-17 15:09:17 +08:00
parent 2ce3786ee0
commit 6a3394bdc5
33 changed files with 1062 additions and 968 deletions

View File

@@ -0,0 +1,33 @@
export function useDialogState(initialTitle = '') {
const dialog = reactive<DialogOption>({
visible: false,
title: initialTitle
});
const openDialog = (title?: string) => {
if (title !== undefined) {
dialog.title = title;
}
dialog.visible = true;
};
const closeDialog = () => {
dialog.visible = false;
};
const toggleDialog = () => {
dialog.visible = !dialog.visible;
};
const setTitle = (title: string) => {
dialog.title = title;
};
return {
dialog,
openDialog,
closeDialog,
toggleDialog,
setTitle
};
}

View File

@@ -0,0 +1,42 @@
import type { Ref } from 'vue';
import { useDialogState } from './useDialogState';
interface UseFormDialogOptions<T extends Record<string, any>> {
form: Ref<T>;
formRef?: Ref<ElFormInstance | undefined>;
initialFormData: T;
initialTitle?: string;
}
export function useFormDialog<T extends Record<string, any>>(options: UseFormDialogOptions<T>) {
const { form, formRef, initialFormData, initialTitle } = options;
const { dialog, openDialog, closeDialog, setTitle } = useDialogState(initialTitle);
const resetForm = () => {
form.value = { ...initialFormData };
formRef?.value?.resetFields();
formRef?.value?.clearValidate?.();
};
const openFormDialog = (title?: string) => {
resetForm();
openDialog(title);
};
const showDialog = (title?: string) => {
openDialog(title);
};
const closeFormDialog = () => {
closeDialog();
};
return {
dialog,
resetForm,
openDialog: openFormDialog,
showDialog,
closeDialog: closeFormDialog,
setTitle
};
}