feat(ui): 函数管理

This commit is contained in:
廖彦棋
2024-03-07 11:40:57 +08:00
parent ecc5a52232
commit 08b498fccd
17 changed files with 506 additions and 17 deletions

View File

@@ -0,0 +1,29 @@
import { ref, reactive, unref } from "vue";
import { Message } from "@arco-design/web-vue";
import type { BaseResponse } from "@gpt-vue/packages/type";
function useSubmit<T extends Record<string, unknown>, R = any>(defaultData: T) {
const formRef = ref();
const formData = reactive<T>({ ...defaultData });
const submitting = ref(false);
const handleSubmit = async (api: (params?: any) => Promise<BaseResponse<R>>, params) => {
submitting.value = true;
try {
const hasError = await formRef.value?.validate();
if (!hasError) {
const { data, message } = await api({ ...formData, ...unref(params) });
Message.success(message);
return Promise.resolve({ formData, data });
}
return Promise.reject(false);
} catch (err) {
return Promise.reject(err);
} finally {
submitting.value = false;
}
};
return { formRef, formData, handleSubmit, submitting };
}
export default useSubmit;