广州矛调粤政易端
xusd
7 days ago d27794814b69d18aeb8ee96a46cae91d5613570c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
/*
 * @Company: hugeInfo
 * @Author: ldh
 * @Date: 2022-09-16 16:23:48
 * @LastEditTime: 2023-05-24 19:55:38
 * @LastEditors: lwh
 * @Version: 1.0.0
 * @Description: 房间列表 - 列表
 */
import React, { useEffect } from 'react';
import { useHistory } from 'react-router-dom';
import { Space } from 'dingtalk-design-mobile';
import MyList from '../MyList';
import RoomNumberGrid from './RoomNumberGrid';
import ImgShow from '../ImgShow';
import { room_1 } from '../../assets/icon';
import { searchTitle, dateFormat, getUpdateStr, getQueryString, appUrl } from '../../utils/utility';
import routerStatus from '../../status/router';
 
const RoomList = ({ search, pattern, data, hasMore, getScrollTopKey, address, scrollTop, searchValue, getRoomData }) => {
  const history = useHistory();
 
  const buildingAddress = getQueryString('address'); // 楼栋名称
 
  // 跳转到房间详情
  function handleGoToDetail(id, item) {
    const { unit, housenumber, houseUseName, houseUse } = item;
    history.push(
      `/hztGrid/room/detail?id=${id}&address=${buildingAddress}`
    );
  }
 
  // 加载更多数据
  function handleLoadMore(callback) {
    getRoomData({ ...search, page: search.page + 1, size: 10 }, pattern, '', callback);
  }
 
  // 处理当房间被删除时返回到此页面刷新
  useEffect(() => {
    if (routerStatus.spinPage['room']) {
      getRoomData({ ...search, page: 1, size: search.page * search.size }, pattern, 'spin', '');
      routerStatus.setSpinPage('building');
      routerStatus.clearSpinPage('room');
      routerStatus.setPageScrollTopNow('room');
    }
  }, [routerStatus.spinPage['room']]);
 
  return pattern === 1 ? (
    <MyList
      data={data}
      hasMore={hasMore}
      loadMore={handleLoadMore}
      getScrollTopKey={getScrollTopKey}
      scrollTop={scrollTop}
      itemDom={(item, index) => {
        return (
          <div
            className="room-card-bottomBorder"
            style={index === 0 ? { marginTop: 0 } : null}
            onClick={() => handleGoToDetail(item.id, item)}
          >
            <div className="room-card">
              <div className="room-card-imgBox">
                <ImgShow imageUrl={item.fileId ? appUrl.fileUrl + '/dingTalk/api/fileInfo/show/' + item.fileId : ''} defaultImg={room_1} width={58} noTitle isShowBig={false} />
              </div>
              <div className="room-card-main">
                <div className="room-title">
                  {item.taskTagList?.map((x, t) => (
                    <span key={t} className={`public-tag public-tag-${x === '21_00016-1' ? 'blue' : x === '21_00016-2' ? 'red' : 'green'}`}>
                      {x === '21_00016-1' ? '待排查' : x === '21_00016-2' ? '待核实' : '地址未同步'}
                    </span>
                  ))}
                  <span>{searchValue ? ((!item.unit && !item.housenumber) ? '暂无房号' : searchTitle((item.unit ? `${item.unit}-` : '') + (item.housenumber || ''), searchValue)) : ((item.unit ? `${item.unit}-` : '') + (item.housenumber || '')) || buildingAddress}</span>
                </div>
                <div className="room-subtitle">
                  <div className="room-subtitle-text">{item.familyCount || 0}分户</div>
                  <div className="public-split" />
                  <div className="room-subtitle-text">{item.personCount || 0}人口</div>
                  <div className="public-split" />
                  <div className="room-subtitle-text">{dateFormat(item.updateTime)}更新</div>
                </div>
                <Space>
                  {getUpdateStr(item.updateTime) ? <div className="public-tag2">{getUpdateStr(item.updateTime)}</div> : null}
                  {item.isHouseRent ? <div className="public-tag2">{item.isHouseRent === '0' ? '自用' : '出租'}</div> : null}
                  {item.inputStatusName && <div className="public-tag2">{item.inputStatusName}</div>}
                </Space>
              </div>
            </div>
          </div>
        );
      }}
    />
  ) : (
    <RoomNumberGrid
      data={data}
      onClickRoom={(value) => handleGoToDetail(value.id, { ...value, unit: value.unit || '', housenumber: value.housenumber })}
    />
  );
};
 
export default RoomList;