123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. import React, { useEffect, useState, useRef } from 'react'
  2. import { Button, message } from 'antd'
  3. import { fetch, apis } from '@/utils/request'
  4. import AuthButton from '@/components/AuthButton'
  5. import Form from './Form'
  6. import List from './List'
  7. const fetchList = fetch(apis.building.buildingApartment)
  8. const deleteData = fetch(apis.building.buildingApartmentDelete)
  9. export default (props) => {
  10. const { history,isPublish } = props;
  11. const { query } = history.location;
  12. const { id } = query;
  13. const [visible, setVisible] = useState(false)
  14. const [loading, setLoading] = useState(false)
  15. const [list, setList] = useState([])
  16. const apartmentRef = useRef()
  17. const getList = () => {
  18. const urlData = { id }
  19. const params = { apartmentType: 'apart' }
  20. setLoading(true)
  21. fetchList({ urlData, params }).then((res) => {
  22. setList(res || [])
  23. setLoading(false)
  24. }).catch((err) => {
  25. console.error(err.message || err)
  26. setLoading(false)
  27. })
  28. }
  29. const handleEdit = (record) => {
  30. apartmentRef.current = record
  31. setVisible(true)
  32. }
  33. const handleDelete = (record) => {
  34. const urlData = { id: record.apartmentId }
  35. setLoading(true)
  36. deleteData({ urlData }).then(() => {
  37. getList()
  38. message.success('删除成功')
  39. setLoading(false)
  40. }).catch((err) => {
  41. console.error(err.message || err)
  42. setLoading(false)
  43. })
  44. }
  45. const handleSuccess = () => {
  46. getList()
  47. setVisible(false)
  48. }
  49. useEffect(() => {
  50. getList()
  51. }, [id])
  52. return (
  53. <div>
  54. <div>
  55. {!isPublish&&<AuthButton name="building.houseType.add">
  56. <Button type="primary" onClick={() => handleEdit()}>新增户型</Button>
  57. </AuthButton>}
  58. </div>
  59. <Form buildingId={id} visible={visible} onCancel={() => setVisible(false)} formData={apartmentRef.current} onSuccess={handleSuccess} />
  60. <List loading={loading} dataSource={list} onEdit={handleEdit} onDelete={handleDelete} isPublish={isPublish}/>
  61. </div>
  62. )
  63. }