update 优化 重构抽出一些常用hooks组件简化页面编码
This commit is contained in:
33
src/hooks/dialog/useDialogState.ts
Normal file
33
src/hooks/dialog/useDialogState.ts
Normal 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
|
||||
};
|
||||
}
|
||||
42
src/hooks/dialog/useFormDialog.ts
Normal file
42
src/hooks/dialog/useFormDialog.ts
Normal 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
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user