import { RootState } from "@/store"; import { getUserInfoByIdAPI, userSaveAPI } from "@/store/action/A3User"; import { SaveUserType } from "@/types"; import { MessageFu } from "@/utils/message"; import { Button, Cascader, Form, FormInstance, Input, Modal, Popconfirm, Select, } from "antd"; import React, { useCallback, useEffect, useRef, useState } from "react"; import { useSelector } from "react-redux"; import styles from "./index.module.scss"; import lastIdresArrFu from "./dataRes"; type Props = { id: any; closePage: () => void; upTableList: () => void; addTableList: () => void; }; function UserAdd({ id, closePage, upTableList, addTableList }: Props) { // 从仓库获取角色下拉列表信息 const roleList = useSelector((state: RootState) => state.A3User.roleList); // 从仓库获取部门 级联 信息 const deptList = useSelector((state: RootState) => state.A5Section.tableList); // 设置表单初始数据(区分编辑和新增) const FormBoxRef = useRef(null); // 回显 级联 信息 const idresArr = useCallback( (deptId: string) => { const arr = lastIdresArrFu(deptId, deptList); return arr; }, [deptList] ); const getInfoInAPIFu = useCallback( async (id: number) => { const res = await getUserInfoByIdAPI(id); if (res.code === 0) { FormBoxRef.current?.setFieldsValue({ ...res.data, deptId: idresArr(res.data.deptId + ""), }); } }, [idresArr] ); useEffect(() => { if (id) getInfoInAPIFu(id); // else { // FormBoxRef.current?.setFieldsValue({}); // } }, [getInfoInAPIFu, id]); // 密码提示 const [passFlag, setPassFlag] = useState(""); // 没有通过校验 const onFinishFailed = useCallback(() => { // return MessageFu.warning("有表单不符号规则!"); }, []); // 通过校验点击确定 const onFinish = useCallback( async (values: any) => { const obj: SaveUserType = { ...values, deptId: values.deptId[values.deptId.length - 1], id: id ? id : null, }; const res: any = await userSaveAPI(obj); if (res.code === 0) { MessageFu.success(id ? "编辑成功!" : "新增成功!"); if (id) upTableList(); else addTableList(); closePage(); } // console.log("通过校验,点击确定"); }, [addTableList, closePage, id, upTableList] ); return (
{ if (value) { const reg = new RegExp(/^[a-zA-Z0-9_]{6,15}$/); const flag = reg.test(value); if (flag) { setPassFlag(value); return Promise.resolve(value); } else { setPassFlag(""); return Promise.reject( "用户名只包含字母、数字和下划线,最少 6 个字符!" ); } } else { setPassFlag(""); return Promise.resolve(value); } }, }, ]} getValueFromEvent={(e) => e.target.value.replace(/\s+/g, "")} > e.target.value.replace(/\s+/g, "")} > {/* 确定和取消按钮 */}
); } const MemoUserAdd = React.memo(UserAdd); export default MemoUserAdd;