import { View } from '@tarojs/components' import Taro, { useDidShow, usePullDownRefresh, useRouter } from '@tarojs/taro' import React, { ReactNode, memo, useCallback, useEffect, useMemo, useRef, useState } from 'react' import classnames from 'classnames' import styles from './index.module.scss' import Tag from './components/Tag' import Sort from './components/Sort' import ChoseCity from './components/ChoseCity' import ItemLiist from './components/ItemList' import Popup from '@/components/popup' import { dataLoadingStatus, debounce, getFilterData } from '@/common/util' import { alert, goLink } from '@/common/common' import { formatDateTime, formatPriceDiv, formatWeightDiv } from '@/common/format' import Search from '@/components/search' import InfiniteScroll from '@/components/infiniteScroll' import { ClientListApi } from '@/api/order' import SelectGroup from '@/components/SelectGroup' const CustomerManagement = () => { const [searchField, setSearchField] = useState< { page: number size: number label_ids: string purchaser_type: number | string name_phone_or_sale_user: string province_id: any[] | string city_id: any[] | string abstract_sort_key: string } >({ page: 1, size: 10, label_ids: '', purchaser_type: '', name_phone_or_sale_user: '', province_id: '', city_id: '', abstract_sort_key: '', }) const [orderData, setOrderData] = useState<{ list: any[]; total: number }>({ list: [], total: 0 }) const { fetchData: listFetchData, state: orderState } = ClientListApi() // 列表下拉刷新 const [refresherTriggeredStatus, setRefresherTriggeredStatus] = useState(false) const getOrderList = async() => { const res = await listFetchData({ ...getFilterData(searchField), }) setOrderData(e => ({ ...e, list: res.data?.list, total: res.data?.total })) setRefresherTriggeredStatus(() => false) } // 监听筛选条件变化 useEffect(() => { getOrderList() }, [searchField]) // 数据加载状态 const statusMore = useMemo(() => { return dataLoadingStatus({ list: orderData.list, total: orderData.total, status: orderState.loading! }) }, [orderData, orderState]) // 上拉加载数据 const pageNum = useRef({ size: searchField.size, page: searchField.page }) // 输入了搜索关键字 const getSearchData = useCallback((e) => { pageNum.current.page = 1 setOrderData(() => ({ list: [], total: 0 })) setSearchField(val => ({ ...val, name_phone_or_sale_user: e, size: 10 })) }, []) const getScrolltolower = useCallback(() => { if (orderData.list.length < orderData.total) { pageNum.current.page++ const size = pageNum.current.size * pageNum.current.page setSearchField({ ...searchField, size }) } }, [orderData]) const getRefresherRefresh = async() => { pageNum.current.size = 1 setRefresherTriggeredStatus(true) setSearchField(val => ({ ...val, size: 10 })) } // 选择排序 const sortRefRef = useRef() const handSort = useCallback((e: string) => { pageNum.current.page = 1 setSearchField(val => ({ ...val, size: 10, abstract_sort_key: e })) sortRefRef.current = e }, []) const SortRef = useRef() const TagRef = useRef() // 筛选城市 const ChoseCityRef = useRef() const handCity = useCallback((provinceVal, cityVal) => { const provinceArr: number[] = [] const cityArr: number[] = [] provinceVal.length && provinceVal.forEach((item) => { provinceArr.push(item.id) }) cityVal.length && cityVal.forEach((item) => { cityArr.push(item.id) }) pageNum.current.page = 1 const provinceRes = provinceArr?.toString() const cityRes = cityArr?.toString() console.log(provinceRes, cityRes) setSearchField(val => ({ ...val, province_id: provinceArr.length > 0 ? provinceRes : '', city_id: cityArr.length > 0 ? cityRes : '', size: 10 })) // ChoseCityRef.current.close() }, []) // 选择客户类型 const handType = useCallback((val) => { const arr = val.filter((item) => { return item.checked }) pageNum.current.page = 1 setSearchField(val => ({ ...val, size: 10, purchaser_type: arr[0]?.id })) }, []) // 选择标签 const handTags = useCallback((val) => { const arr: any[] = [] const arrOne = val.filter((item) => { return item.checked }) arrOne.forEach((item) => { arr.push(item.id) }) pageNum.current.page = 1 const res = arr.toString() setSearchField(val => ({ ...val, size: 10, label_ids: arr.length === 0 ? '' : res })) }, []) return ( true}> true}> true}> 共 {orderData?.total || 0} 个客户 {orderData?.list?.map((item, index) => { return ( ) })} goLink('/pages/customerEditor/index?type=add')}>新建客户 ) } export default CustomerManagement