|
|
@@ -1,8 +1,7 @@
|
|
|
import {addMenu, editMenu, getMenuInfo} from '@apis';
|
|
|
import {yupResolver} from '@hookform/resolvers/yup';
|
|
|
-import {useQueryDataInfo} from '@hooks';
|
|
|
-import {useMutation} from '@tanstack/react-query';
|
|
|
-import {message} from 'antd';
|
|
|
+import {usePutData, useQueryDataInfo} from '@hooks';
|
|
|
+import {AddMenuParams} from '@models';
|
|
|
import {useEffect} from 'react';
|
|
|
import {useForm, useFormContext} from 'react-hook-form';
|
|
|
import {object, string} from 'yup';
|
|
|
@@ -11,48 +10,16 @@ type FormState = {
|
|
|
menuName: string;
|
|
|
menuUrl: string;
|
|
|
menuOrderBy: string;
|
|
|
+ menuIcon: string;
|
|
|
};
|
|
|
|
|
|
const validate = object({
|
|
|
menuName: string().required('请输入菜单名称'),
|
|
|
menuUrl: string().required('请输入菜单路径'),
|
|
|
menuOrderBy: string().required('请输入菜单排序'),
|
|
|
+ menuIcon: string().required('请输入菜单图标'),
|
|
|
});
|
|
|
|
|
|
-function useAdd(onClose: () => void, onFetch: () => void) {
|
|
|
- const {isLoading, mutate} = useMutation(
|
|
|
- addMenu,
|
|
|
- {
|
|
|
- onSuccess(data) {
|
|
|
- if (data.msg === '200') {
|
|
|
- onClose();
|
|
|
- onFetch();
|
|
|
- message.success('新增成功');
|
|
|
- }
|
|
|
- },
|
|
|
- },
|
|
|
- );
|
|
|
-
|
|
|
- return [isLoading, mutate] as const;
|
|
|
-}
|
|
|
-
|
|
|
-function useEdit(onClose: () => void, onFetch: () => void) {
|
|
|
- const {isLoading, mutate} = useMutation(
|
|
|
- editMenu,
|
|
|
- {
|
|
|
- onSuccess(data) {
|
|
|
- if (data.msg === '200') {
|
|
|
- onClose();
|
|
|
- onFetch();
|
|
|
- message.success('修改成功');
|
|
|
- }
|
|
|
- },
|
|
|
- },
|
|
|
- );
|
|
|
-
|
|
|
- return [isLoading, mutate] as const;
|
|
|
-}
|
|
|
-
|
|
|
export function useFormState(
|
|
|
{onClose, id, visible, onFetch}:
|
|
|
{
|
|
|
@@ -71,18 +38,28 @@ export function useFormState(
|
|
|
resolver: yupResolver(validate),
|
|
|
});
|
|
|
const {handleSubmit, clearErrors} = formInstance;
|
|
|
- const [addIsLoading, addMutate] = useAdd(onClose, onFetch);
|
|
|
- const [editIsLoaindg, editMutate] = useEdit(onClose, onFetch);
|
|
|
- const isLoading = addIsLoading || editIsLoaindg;
|
|
|
+ const [isLoading, {addMutate, editMutate}] = usePutData({
|
|
|
+ addFn: addMenu,
|
|
|
+ editFn: editMenu,
|
|
|
+ onClose,
|
|
|
+ onFetch,
|
|
|
+ });
|
|
|
|
|
|
useEffect(function() {
|
|
|
visible && clearErrors();
|
|
|
}, [clearErrors, visible]);
|
|
|
|
|
|
- const onSubmit = handleSubmit(function({menuName, menuUrl, menuOrderBy}) {
|
|
|
+ const onSubmit = handleSubmit(function({menuName, menuUrl, menuOrderBy, menuIcon}) {
|
|
|
+ const params: AddMenuParams = {
|
|
|
+ name: menuName,
|
|
|
+ url: menuUrl,
|
|
|
+ pId: '0',
|
|
|
+ orderBy: menuOrderBy,
|
|
|
+ img: menuIcon,
|
|
|
+ };
|
|
|
isEdit
|
|
|
- ? editMutate({name: menuName, url: menuUrl, id, pId: '0', orderBy: menuOrderBy})
|
|
|
- : addMutate({name: menuName, url: menuUrl, pId: '0', orderBy: menuOrderBy});
|
|
|
+ ? editMutate({id, ...params})
|
|
|
+ : addMutate(params);
|
|
|
});
|
|
|
|
|
|
return [{formInstance, isLoading}, onSubmit] as const;
|
|
|
@@ -105,5 +82,6 @@ export function useFormValues(id: string) {
|
|
|
setValue('menuUrl', data?.url ?? '');
|
|
|
setValue('menuName', data?.name ?? '');
|
|
|
setValue('menuOrderBy', data?.orderBy ?? '0');
|
|
|
+ setValue('menuIcon', data?.img ?? '');
|
|
|
}, [data, setValue]);
|
|
|
}
|