import { Fragment, useEffect, useState } from 'react'; import { useUserStore } from '../store'; import { useShallow } from 'zustand/react/shallow'; import { isObjectNull } from '@/utils/is-null'; import { CardBlank } from '@kevisual/components/card/CardBlank.tsx'; import { Dialog, ButtonGroup, Button, DialogContent, DialogTitle, Tooltip } from '@mui/material'; import { IconButton } from '@kevisual/components/button/index.tsx'; import { useTranslation } from 'react-i18next'; import { useModal } from '@kevisual/components/modal/Confirm.tsx'; import { TextField } from '@mui/material'; import { useForm, Controller } from 'react-hook-form'; import { pick } from 'lodash-es'; import { useAdminStore } from '../admin/store/admin-store'; import { SquareAsterisk, Edit as EditOutlined, Trash as DeleteOutlined, Plus as PlusOutlined, UserPen } from 'lucide-react'; import { toast } from 'react-toastify'; const FormModal = () => { const { control, handleSubmit, reset } = useForm(); const userStore = useUserStore( useShallow((state) => { return { showEdit: state.showEdit, setShowEdit: state.setShowEdit, formData: state.formData, updateData: state.updateData, setFormData: state.setFormData, }; }), ); const adminStore = useAdminStore(useShallow((state) => state)); useEffect(() => { const open = userStore.showEdit; if (open) { const isNull = isObjectNull(userStore.formData); if (isNull) { reset({}); } else reset(userStore.formData); } return () => { reset({}); }; }, [userStore.showEdit]); const onFinish = (values: any) => { const pickValues = pick(values, ['id', 'username', 'description']); if (pickValues.id) { userStore.updateData(pickValues); } else { const newPickValues = pick(values, ['username', 'description', 'password']); adminStore.createNewUser(newPickValues); } }; const onClose = () => { userStore.setShowEdit(false); reset({}); userStore.setFormData({}); }; const isEdit = userStore.formData.id; const { t } = useTranslation(); return ( userStore.setShowEdit(false)} sx={{ '& .MuiDialog-paper': { width: '800px', }, }}> {isEdit ? t('Edit') : t('Add')}
} /> } /> {!isEdit && ( } /> )}
); }; export const NameModal = () => { const { control, handleSubmit, reset } = useForm(); const userStore = useUserStore(useShallow((state) => state)); const adminStore = useAdminStore(useShallow((state) => state)); const onFinish = async (values: any) => { const check = await adminStore.checkUserExist(values.username); if (check === false) { const uid = userStore.formData.id; if (!uid) { toast.error('获取用户id失败'); return; } const res = await adminStore.changeName(uid, values.username); if (res.code === 200) { userStore.setShowNameEdit(false); userStore.getList(); } } else { toast.error('用户名已存在,请重新输入'); } }; const onClose = () => { userStore.setShowNameEdit(false); reset({}); userStore.setFormData({}); }; const { t } = useTranslation(); return ( userStore.setShowNameEdit(false)}> 修改用户名
} />
); }; export const List = () => { const [modal, contextHolder] = useModal(); const userStore = useUserStore( useShallow((state) => { return { setFormData: state.setFormData, setShowEdit: state.setShowEdit, setShowNameEdit: state.setShowNameEdit, list: state.list, deleteData: state.deleteData, getList: state.getList, loading: state.loading, formData: state.formData, }; }), ); const adminStore = useAdminStore(useShallow((state) => state)); useEffect(() => { userStore.getList(); }, []); const onAdd = () => { userStore.setFormData({}); userStore.setShowEdit(true); }; return (
{userStore.list.length > 0 && userStore.list.map((item) => { return (
{ // userStore.setFormData(item); }}>
{ e.stopPropagation(); // message.success('copy code success'); }}> {item.username || '-'}
{item.description ? item.description : '-'}
); })} {userStore.list.length == 0 && (
No Data
)}
{contextHolder}
); };