import React, { useState, useEffect } from 'react' import NavHeader from '@/components/NavHeader/index' import ScrollPageRefresh from '@/components/ScrollPageRefresh/index' import RenZhengScreen from '@/components/RenZhengScreen/index' import { Swiper, SwiperItem, Text } from '@tarojs/components' import request, { apis } from '@/utils/request' import { useModel } from '@/store' import useUserMounted from '@/utils/hooks/useUserMounted' import Taro from '@tarojs/taro' import Page from '@/layouts' import nav2detail from '@/utils/nav2detail' import { getShareObject } from '@/utils/share' import '@/assets/css/reset.less' import '@/assets/css/iconfont.less' import './index.less' export default function Index (props) { const { user } = useModel('user') const [OwnerList] = useState([ { icon: 'iconjiaofei', name: '物业缴费', id: 1, router: '/pages/WuYe/index', setName: 'WuYeNavId', setValue: '4', isTab: true }, { icon: 'icontongzhi', name: '物业通知', id: 2, router: '/pages/WuYe/index', setName: 'WuYeNavId', setValue: '1', isTab: true }, { icon: 'iconbaoxiu', name: '物业报修', id: 3, router: '/pages/WuYe/index', setName: 'WuYeNavId', setValue: '3', isTab: true }, { icon: 'iconrenzheng', name: '业主认证', id: 4, router: '/pages/WoDe/WoDeRenZheng/index', isTab: false }, { icon: 'iconguanjia', name: '生活管家', id: 5, router: '/pages/WuYe/ShengHuoGuanJia/index', isTab: false, bold: true } ]) const [NavList] = useState([ { icon: 'iconhuodong1', name: '活动', id: 1, router: '/pages/ShouYe/HuoDong/index', isTab: false }, { icon: 'iconfuli1', name: '福利', id: 2, router: '/pages/FuLi/index', setName: null, setValue: null, isTab: true }, { icon: 'iconfuwu', name: '服务', id: 3, router: '/pages/WuYe/index', setName: 'WuYeNavId', setValue: '2', isTab: true }, { icon: 'iconxinwen', name: '资讯', id: 4, router: '/pages/ShouYe/ZiXun/index', isTab: false } ]) const [BannerList, setBannerList] = useState([]) // const [ActivityList, setActivityList] = useState([]) const [NewsList, setNewsList] = useState([]) const [ShowNotice, setShowNotice] = useState(false) const [NoticeInfo, setNoticeInfo] = useState(null) const [NoticeWidth, setNoticeWidth] = useState(0) const [NoticeParentWidth, setNoticeParentWidth] = useState(0) // 宣传位 const [propagandaList, setPropagandaList] = useState([]) useUserMounted(() => { Init() }) useEffect(() => { if (NoticeInfo !== null) { window.setTimeout(() => { let QueryParent = Taro.createSelectorQuery() let QueryChild = Taro.createSelectorQuery() QueryParent.select('#NoticeParent').boundingClientRect() QueryChild.select('#NoticeText').boundingClientRect() QueryParent.exec((res) => { setNoticeParentWidth(res[0].width) QueryChild.exec((cres) => { setNoticeWidth(cres[0].width) }) }) }, 100) // let NoticeText = document.getElementById('NoticeText') // console.log(NoticeText.boundingClientRect[0].width) } }, [NoticeInfo]) const Init = (done = () => { }) => { // 初始化 GetNotice() // 获取通知 let DownCount = 0 GetBanner(() => { // 获取轮播图 DownCount += 1 if (CheckDownCount(DownCount)) { done() } }) GetPropagandaList(() => { // 宣传位 DownCount += 1 if (CheckDownCount(DownCount)) { done() } }) // GetActivityList(() => { // 获取活动列表 // DownCount += 1 // if (CheckDownCount(DownCount)) { // done() // } // }) GetNewsList(() => { // 获取资讯列表 DownCount += 1 if (CheckDownCount(DownCount)) { done() } }) } const GetNotice = () => { // 获取通知 request({ ...apis.getGongGaoList, args: { orgId: user.orgId }, params: { annType: 'notice', pageNum: 1, pageSize: 1 } }).then((res) => { setNoticeInfo(res.records[0]) if (res.records !== null && res.records.length > 0) { setShowNotice(true) } }) } const GetBanner = (done = () => { }) => { // 获取轮播图 setBannerList([]) request({ ...apis.getBanner, params: { showType: 'banner', showPosition: 'index', pageNum: 1, pageSize: 5 } }).then((res) => { setBannerList([...(res || [])]) done() }).catch(() => { done() }) } // const GetActivityList = (done = () => { }) => { // 获取活动列表 // setActivityList([]) // request({ ...apis.getActivityList, params: { pageNum: 1, pageSize: 1 } }).then((res) => { // setActivityList([...res.list]) // done() // }).catch(() => { // done() // }) // } const GetPropagandaList = (done = () => { }) => { setPropagandaList([]) request({ ...apis.getIndexAdv, params: { pageNum: 1, pageSize: 1, showType: 'propaganda' } }).then(res => { setPropagandaList([...(res || [])]) done() }).catch(() => done()) } const GetNewsList = (done = () => { }) => { // 获取资讯列表 setNewsList([]) request({ ...apis.getNewsList, params: { pageNum: 1, pageSize: 10 } }).then((res) => { setNewsList([...res.records]) done() }).catch(() => { done() }) } const CheckDownCount = (num) => { // 检测请求接口数量 return num >= 3 } const NavClick = (item) => { return () => { if (item.isTab) { if (item.setName !== null) { Taro.setStorageSync(item.setName, item.setValue) Taro.reLaunch({ url: item.router }) } else { Taro.switchTab({ url: item.router }) } } else { Taro.navigateTo({ url: item.router }) } } } const Refresh = (e) => { // 页面下拉刷新 Init(e) } const OwnerClick = (item) => { return () => { if (item.isTab) { if (item.setName !== null) { Taro.setStorageSync(item.setName, item.setValue) Taro.reLaunch({ url: item.router }) } else { Taro.switchTab({ url: item.router }) } } else { Taro.navigateTo({ url: item.router }) } } } // 分享转发 Taro.useShareAppMessage(() => { const shareObj = getShareObject({ title: '远道智慧社区' }, user) return shareObj }) return ( {/* 正文 */} {/* 背景图 */} {/* 通知栏 */} { Taro.navigateTo({ url: `/pages/WuYe/GongGaoDetail/index?id=${NoticeInfo.id}` }) }}> NoticeParentWidth ? NoticeWidth : NoticeParentWidth}px` }}> {NoticeInfo === null ? '' : NoticeInfo.announcementTitle} { setShowNotice(false) }}> {/* 欢迎词 */} 欢迎来到远道智慧社区! {/* banner */} { BannerList.map((item, index) => ( nav2detail({ type: item.contentType, id: item.targetId })}> )) } {/* 导航 */} { NavList.map((item, index) => ( {item.name} )) } {/* 业主专区 */} 业主专区 { OwnerList.map((item, index) => ( {item.name} )) } {/* 热门活动 */} { propagandaList.length > 0 && {/* 热门推荐 */} nav2detail({ type: propagandaList[0].contentType, id: propagandaList[0].targetId })}> } {/* 热门资讯 */} 热门资讯 { Taro.navigateTo({ url: '/pages/ShouYe/ZiXun/index' }) }}>查看全部 { NewsList.map((item, index) => ( { Taro.navigateTo({ url: `/pages/HuoDong/ZiXunDetail/index?id=${item.newsId}` }) }}> {item.newsName} {item.desc || ''} )) } ) }