EditNum.tsx 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  1. import React, { useCallback, useEffect, useState } from "react";
  2. import styles from "./index.module.scss";
  3. import { Button, Input, Modal, Popconfirm } from "antd";
  4. import { B2_APIeditNum, B2_APInumIsOk } from "@/store/action/B2Scene";
  5. import { MessageFu } from "@/utils/message";
  6. import classNames from "classnames";
  7. type Props = {
  8. info: { id: number; num: string; name: string; roomName: string };
  9. closeFu: () => void;
  10. upTableFu: () => void;
  11. };
  12. function EditNum({ info, closeFu, upTableFu }: Props) {
  13. const [value, setValue] = useState("");
  14. // 通过 新机房编码 检查 新站址名称
  15. const [newRoomName, setNewRoomName] = useState({ code: 0, name: "" });
  16. const numIsOkFu = useCallback(async (val: string) => {
  17. const res = await B2_APInumIsOk(val);
  18. if (res.code === 0) {
  19. if (res.data && res.data.name)
  20. setNewRoomName({ code: 1, name: res.data.name });
  21. else setNewRoomName({ code: 0, name: "机房编码不存在!" });
  22. }
  23. }, []);
  24. useEffect(() => {
  25. if (value && value.length >= 24) numIsOkFu(value);
  26. }, [numIsOkFu, value]);
  27. const btnOkFu = useCallback(async () => {
  28. if (value === info.num) return MessageFu.warning("新旧编码不能相同!");
  29. // const res1 = await B2_APIcheckNum(value);
  30. // if (res1.code === 0) {
  31. // if (res1.data) {
  32. // 编码存在
  33. const res2 = await B2_APIeditNum(info.id, value);
  34. if (res2.code === 0) {
  35. MessageFu.success("更新成功!");
  36. upTableFu();
  37. closeFu();
  38. // }
  39. // } else MessageFu.warning("该机房编码不存在,请先在机房管理中创建!");
  40. }
  41. }, [closeFu, info.id, info.num, upTableFu, value]);
  42. return (
  43. <Modal
  44. wrapClassName={styles.EditNum}
  45. open={true}
  46. title="修改机房编码"
  47. footer={
  48. [] // 设置footer为空,去掉 取消 确定默认按钮
  49. }
  50. >
  51. <div className="B2Emain">
  52. <div className="B2Ebox1">
  53. <div>场景名称:</div>
  54. <div>{info.name}</div>
  55. </div>
  56. <div className="B2Ebox1">
  57. <div>原机房编码:</div>
  58. <div>{info.num}</div>
  59. </div>
  60. <div className="B2Ebox1">
  61. <div>原站址名称:</div>
  62. <div>{info.roomName}</div>
  63. </div>
  64. <hr />
  65. <br />
  66. <div className="B2Ebox1">
  67. <div>新机房编码:</div>
  68. <div>
  69. <Input
  70. placeholder="请输入24位纯数字"
  71. maxLength={24}
  72. style={{ width: 300 }}
  73. value={value}
  74. onChange={(e) => setValue(e.target.value.replace(/[^\d]/g, ""))}
  75. />
  76. </div>
  77. </div>
  78. <div
  79. className={classNames(
  80. "B2Ebox1",
  81. newRoomName.code === 0 ? "B2Ebox1Err" : ""
  82. )}
  83. hidden={value.length < 24 || !newRoomName.name}
  84. >
  85. <div>新站址名称:</div>
  86. <div>{newRoomName.name}</div>
  87. </div>
  88. <div className="B2Ebtn">
  89. <Button
  90. type="primary"
  91. onClick={btnOkFu}
  92. disabled={value.length < 24 || newRoomName.code !== 1}
  93. >
  94. 提交
  95. </Button>
  96. &emsp;
  97. <Popconfirm
  98. title="放弃编辑后,信息将不会保存!"
  99. okText="放弃"
  100. cancelText="取消"
  101. onConfirm={closeFu}
  102. okButtonProps={{ loading: false }}
  103. >
  104. <Button>取消</Button>
  105. </Popconfirm>
  106. </div>
  107. </div>
  108. </Modal>
  109. );
  110. }
  111. const MemoEditNum = React.memo(EditNum);
  112. export default MemoEditNum;