index.jsx 4.4KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  1. import React, { useState, useEffect } from 'react'
  2. import { useModel } from '@/store'
  3. import Taro from '@tarojs/taro'
  4. import WuYeFuWuItem from '@/components/WuYeFuWuItem/index'
  5. import ScrollPageRefresh from '@/components/ScrollPageRefresh/index'
  6. import request, { apis } from '@/utils/request'
  7. import nav2detail from '@/utils/nav2detail'
  8. import '@/assets/css/reset.less'
  9. import '@/assets/css/iconfont.less'
  10. import IconBlock from './components/IconBlock'
  11. import './index.less'
  12. export default function WuYeFuWu () {
  13. const { user } = useModel('user')
  14. const [newsTypeId, setNewsTypeId] = useState()
  15. const [PageList, setPageList] = useState([])
  16. const [BannerList, setBannerList] = useState([])
  17. const [typeList, setTypeList] = useState([])
  18. const [IsEmpty, setIsEmpty] = useState(false)
  19. useEffect(() => {
  20. GetBanner()
  21. request({...apis.getTpNewsList, params: {pageSize: 999}}).then(res => setTypeList(res || []))
  22. }, [])
  23. const GetBanner = (done = () => { }) => { // 获取轮播图
  24. request({ ...apis.getBanner, params: { showPosition: `property`, showType: 'banner', pageNum: 1, pageSize: 1 } }).then((res) => {
  25. setBannerList([...(res || [])])
  26. done()
  27. }).catch(() => {
  28. done()
  29. })
  30. }
  31. const Refresh = (e) => { // 下拉刷新
  32. if (e.length > 0) {
  33. setIsEmpty(false)
  34. setPageList(e)
  35. } else {
  36. setIsEmpty(true)
  37. }
  38. }
  39. const Push = (e) => { // 上拉加载
  40. setPageList(PageList.concat(e))
  41. }
  42. const KeepChildren = () => {
  43. return (
  44. <view>
  45. {/* 大图 */}
  46. <view className='BigImg'>
  47. {
  48. BannerList.length > 0 &&
  49. <image mode='aspectFill' src={BannerList[0].image} className='centerLabel' onClick={() => nav2detail({ type: BannerList[0].contentType, id: BannerList[0].targetId })}></image>
  50. }
  51. </view>
  52. <view style={{display: 'flex', justifyContent: 'space-between'}}>
  53. <IconBlock title="办事指南" />
  54. <IconBlock title="政策法规" />
  55. </view>
  56. {/* 物业办事指南 */}
  57. {/* <view className='BanShiZhiNan'>
  58. <text>物业办事指南</text>
  59. <view className='flex-h'>
  60. <view className='Line'><view></view></view>
  61. <view className='flex-item'>
  62. <text>1、业主收楼手续办理</text>
  63. <text>2、物业转名手续办理</text>
  64. <text>3、业主卡、住户卡办理</text>
  65. </view>
  66. </view>
  67. </view> */}
  68. </view>
  69. )
  70. }
  71. return (
  72. <view className='WuYeFuWu'>
  73. <ScrollPageRefresh
  74. KeepChildren
  75. IsEmpty={IsEmpty}
  76. ApiName={`getWuYeFuWuList`}
  77. Refresh={Refresh}
  78. Push={Push}
  79. KeepChildren={
  80. <view>
  81. {/* 大图 */}
  82. <view className='BigImg'>
  83. {
  84. BannerList.length > 0 &&
  85. <image mode='aspectFill' src={BannerList[0].image} className='centerLabel' onClick={() => nav2detail({ type: BannerList[0].contentType, id: BannerList[0].targetId })}></image>
  86. }
  87. </view>
  88. {/* 物业办事指南 */}
  89. {/* <view className='BanShiZhiNan'>
  90. <text>物业办事指南</text>
  91. <view className='flex-h'>
  92. <view className='Line'><view></view></view>
  93. <view className='flex-item'>
  94. <text>1、业主收楼手续办理</text>
  95. <text>2、物业转名手续办理</text>
  96. <text>3、业主卡、住户卡办理</text>
  97. </view>
  98. </view>
  99. </view> */}
  100. <view className="fw-icon-row">
  101. {
  102. typeList.map((it, ix) => (
  103. <IconBlock
  104. key={it.newsTypeId}
  105. title={it.newsTypeName}
  106. icon={it.newsTypeImg}
  107. style={ix > 2 ? {marginTop: '20rpx'} : {}}
  108. onClick={() => setNewsTypeId(it.newsTypeId)}
  109. />
  110. ))
  111. }
  112. </view>
  113. </view>
  114. }
  115. >
  116. {/* 服务列表 */}
  117. <view className='List'>
  118. {
  119. PageList.map((item, index) => (
  120. <view key={`WuYeFuWuItem-${index}`}>
  121. <WuYeFuWuItem Data={item}></WuYeFuWuItem>
  122. </view>
  123. ))
  124. }
  125. </view>
  126. </ScrollPageRefresh>
  127. </view>
  128. )
  129. }