BuildingRoomCell.jsx 2.6KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. import React, { useEffect, useState } from 'react'
  2. import { Menu, Dropdown, Button, Popconfirm, Icon, notification } from 'antd'
  3. import Prompt from '@/components/Prompt'
  4. import { fetchList, fetch, apis } from '@/utils/request'
  5. const addNode = fetch(apis.buildingOwnerInfo.addNode)
  6. const updateNode = fetch(apis.buildingOwnerInfo.updateNode)
  7. const deleteNode = fetch(apis.buildingOwnerInfo.deleteNode)
  8. export default props => {
  9. const [houseVisible, setHouseVisible] = useState(false)
  10. const [roomInfo, setRoomInfo] = useState({})
  11. const handleDelete = () => {
  12. deleteNode({ data: {
  13. id: roomInfo.id,
  14. name: roomInfo.name,
  15. type: 'end', // 删除房间传 end
  16. nodeNumber: undefined,
  17. }}).then(() => {
  18. if (props.onDelete) {
  19. props.onDelete(roomInfo)
  20. }
  21. notification.success({message: '删除成功'})
  22. })
  23. }
  24. const handleEdit = val => {
  25. if (!roomInfo.id) {
  26. addNode({ data: {
  27. id: roomInfo.levelId,
  28. name: roomInfo.levelName,
  29. type: 'roomNo',
  30. nodeNumber: val,
  31. communityId: props.community,
  32. }}).then((res) => {
  33. if (props.onEdit) {
  34. props.onEdit(res)
  35. }
  36. notification.success({message: '修改成功'})
  37. })
  38. } else {
  39. updateNode({ data: {
  40. id: roomInfo.id,
  41. name: val,
  42. type: 'roomNo',
  43. }}).then(() => {
  44. const room = {
  45. ...roomInfo,
  46. name: val
  47. }
  48. if (props.onEdit) {
  49. props.onEdit(room)
  50. }
  51. notification.success({message: '修改成功'})
  52. })
  53. }
  54. setHouseVisible(false)
  55. }
  56. const menu = (
  57. <Menu>
  58. <Menu.Item>
  59. <Button type="link" onClick={() => setHouseVisible(true)}>编辑</Button>
  60. </Menu.Item>
  61. {
  62. roomInfo.id && (
  63. <Menu.Item>
  64. <Popconfirm
  65. title={`确认删除 ${roomInfo.name} ?`}
  66. onConfirm={handleDelete}
  67. okText="是"
  68. cancelText="否"
  69. >
  70. <Button type="danger" ghost style={{border: 'none', boxShadow: 'none'}}>删除</Button>
  71. </Popconfirm>
  72. </Menu.Item>
  73. )
  74. }
  75. </Menu>
  76. );
  77. useEffect(() => {
  78. setRoomInfo(props.dataSource || {})
  79. }, [props.dataSource])
  80. return (
  81. <span>
  82. <Dropdown overlay={menu} trigger={['contextMenu']} placement="topCenter">
  83. <div style={{cursor: 'pointer'}}>{roomInfo.name}</div>
  84. </Dropdown>
  85. <Prompt visible={houseVisible} onOk={handleEdit} onCancel={() => setHouseVisible(false)} placeholder="请填写房室名称" />
  86. </span>
  87. )
  88. }