A2sAdd.tsx 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. import React, { useCallback, useEffect, useState } from "react";
  2. import styles from "./index.module.scss";
  3. import { Button, Input, Modal } from "antd";
  4. import { A2sTableType } from ".";
  5. import MyPopconfirm from "@/components/MyPopconfirm";
  6. import { MessageFu } from "@/utils/message";
  7. import { API_A2save } from "@/store/action/all";
  8. type Props = {
  9. closeFu: () => void;
  10. editFu: () => void;
  11. editObj: A2sTableType;
  12. };
  13. function A2sAdd({ editObj, closeFu, editFu }: Props) {
  14. const [name, setName] = useState("");
  15. const [dept, setDept] = useState("");
  16. useEffect(() => {
  17. setName(editObj.name);
  18. setDept(editObj.dept);
  19. }, [editObj]);
  20. const btnOk = useCallback(async () => {
  21. if (!name) return MessageFu.warning("姓名不能为空!");
  22. if (!dept) return MessageFu.warning("部门不能为空!");
  23. const obj = {
  24. id: editObj.id > 0 ? editObj.id : null,
  25. name,
  26. dept,
  27. };
  28. const res = await API_A2save(obj);
  29. if (res.code === 0) {
  30. MessageFu.success(editObj.id > 0 ? "编辑成功" : "新增成功");
  31. editFu();
  32. closeFu();
  33. }
  34. }, [closeFu, dept, editFu, editObj.id, name]);
  35. return (
  36. <Modal
  37. wrapClassName={styles.A2sAdd}
  38. open={true}
  39. title={editObj.id > 0 ? "编辑" : "新增"}
  40. footer={
  41. [] // 设置footer为空,去掉 取消 确定默认按钮
  42. }
  43. >
  44. <div className="A2sRow">
  45. <span className="A2sRowB">*</span>姓名:
  46. <Input
  47. placeholder="请输入名称"
  48. value={name}
  49. onChange={(e) => setName(e.target.value.trim())}
  50. maxLength={10}
  51. showCount
  52. />
  53. </div>
  54. <div className="A2sRow">
  55. <span className="A2sRowB">*</span>部门:
  56. <Input
  57. placeholder="请输入部门"
  58. value={dept}
  59. onChange={(e) => setDept(e.target.value.trim())}
  60. maxLength={10}
  61. showCount
  62. />
  63. </div>
  64. <div className="A2sbtn">
  65. <MyPopconfirm txtK="取消" onConfirm={closeFu} />
  66. &emsp;
  67. <Button type="primary" onClick={btnOk}>
  68. 提交
  69. </Button>
  70. </div>
  71. </Modal>
  72. );
  73. }
  74. const MemoA2sAdd = React.memo(A2sAdd);
  75. export default MemoA2sAdd;