import { ScrollView, Text, View } from '@tarojs/components' import Taro, { usePullDownRefresh, useReady } from '@tarojs/taro' import classNames from 'classnames' import { useCallback, useEffect, useMemo, useRef, useState } from 'react' import styles from './index.module.scss' import Search from '@/components/searchBar' import IconText from '@/components/iconText' import NormalButton from '@/components/normalButton' import LayoutBlock from '@/components/layoutBlock' import Divider from '@/components/divider' import Cell from '@/components/cell' import TimePickerPopup from '@/components/timePickerPopup' import { alert } from '@/common/common' import type { InviteCodePopupRef } from '@/components/inviteCodePopup' import InviteCodePopup from '@/components/inviteCodePopup' import { GetInvitationRecordList } from '@/api/share' import InfiniteScroll from '@/components/infiniteScroll' import { dataLoadingStatus, debounce, getFilterData } from '@/common/util' import { formatDateTime } from '@/common/fotmat' import IconFont from '@/components/iconfont/iconfont' const InviteCord = () => { const [formData, setFormData] = useState<{ start_time?: string end_time?: string name?: string size?: number page?: number }>({ size: 15, page: 1, }) const onSearch = debounce((e) => { pageNum.current.page = 1 setFormData(val => ({ ...val, name: e, size: 10 })) pageNum.current = { size: 10, page: 1 } }, 300) // 获取被邀请记录 const { fetchData: getInviteeRecordAPI, state } = GetInvitationRecordList() const getInviteeRecord = async() => { const res = await getInviteeRecordAPI(getFilterData(formData)) if (res.success) { setRecordList({ list: res.data.list, total: res.data.total }) Taro.stopPullDownRefresh() } } // 页面下拉刷新 usePullDownRefresh(() => { setFormData(prev => ({ ...prev, size: 10 })) }) useEffect(() => { getInviteeRecord() }, [formData]) const handleConfirm = () => { inviteCodePopupRef.current?.startDrawPoster() } const [recordList, setRecordList] = useState<{ list: any[]; total: number }>({ list: [{}, {}], total: 0 }) const [showTime, setShowTime] = useState(false) const isFilter = useMemo(() => { if (formData?.start_time || formData?.end_time) { return true } return false } , [formData?.start_time, formData?.end_time]) const handleClickTimePicker = () => { setShowTime(true) } const handClose = () => { setShowTime(false) } const onSelectDate = useCallback((val) => { if (!val.value?.start && !val.value?.end) { alert.error('请选择日期') } else { setFormData(e => ({ ...e, start_time: val.value.start, end_time: val.value.end })) } console.log('val::', val) handClose() }, []) const handleReset = () => { setFormData(e => ({ ...e, start_time: '', end_time: '', })) handClose() } const total = useMemo(() => { if (formData.name || isFilter) { return recordList.list.length } return recordList.total }, [isFilter, formData.name, recordList]) const inviteCodePopupRef = useRef(null) // 上拉加载数据 const pageNum = useRef({ size: formData.size, page: formData.page }) const getScrollToLower = () => { if (recordList.list.length < recordList.total) { pageNum.current.page!++ const size = pageNum.current.size! * pageNum.current.page! setFormData(prev => ({ ...prev, size })) } } const statusMore = useMemo(() => { return dataLoadingStatus({ list: recordList.list, total: recordList.total, status: state.loading }) }, [recordList, state]) const handleCell = (phone: string) => { Taro.makePhoneCall({ phoneNumber: phone, }) } return ( 共 {total} 条数据 {recordList.list.map((item, index) => { return ( {item?.passive_invited_user_name} handleCell(item?.passive_invited_user_phone)}> 拨打 {item?.invitation_way_name} ) })} 生成邀请海报 重置 } onSelectDate={onSelectDate} /> ) } export default InviteCord