import { Input, ScrollView, Text, Textarea, View } from '@tarojs/components' import Taro, { useRouter } from '@tarojs/taro' import classnames from 'classnames' import { useCallback, useEffect, useMemo, useRef, useState } from 'react' import type { ListProps } from '../searchList/components/selectData' import SelectData from '../searchList/components/selectData' import styles from './index.module.scss' import SearchPopup from './components/searchPopup' import Search from '@/components/search' import Product from '@/components/product' import InfiniteScroll from '@/components/infiniteScroll' import SortBtn from '@/components/sortBtn' import { GetProductListApi } from '@/api/material' import { dataLoadingStatus, getFilterData } from '@/common/util' import LoadingCard from '@/components/loadingCard' import useLogin from '@/use/useLogin' export default () => { useLogin() const [showPopup, setShowPopup] = useState(false) const router = useRouter() useEffect(() => { Taro.setNavigationBarTitle({ title: router.params.title || '分类页面', }) }, [router]) // 搜索参数 const [searchField, setSearchField] = useState({ code_or_name: '', product_category_id: router.params.id, page: 1, size: 10, width: '', weight_density: '', product_kind_id: '', component: '', }) // 获取列表 const [categoryList, setCategoryList] = useState<{ list: any[]; total: number }>({ list: [], total: 0, }) const { fetchData, state } = GetProductListApi() const getSubjectList = async() => { const res = await fetchData(getFilterData(searchField)) setCategoryList({ ...categoryList, list: res.data.list, total: res.data.total }) } // 监听筛选数据变化 useEffect(() => { getSubjectList() }, [searchField]) // 上拉加载数据 const pageNum = useRef({ size: searchField.size, page: searchField.page }) const getScrolltolower = () => { if (categoryList.list.length < categoryList.total) { pageNum.current.page++ const size = pageNum.current.size * pageNum.current.page setSearchField({ ...searchField, size }) } } // 数据加载状态 const statusMore = useMemo(() => { return dataLoadingStatus({ list: categoryList.list, total: categoryList.total, status: state.loading }) }, [categoryList, state]) // 筛选条件格式化 const [selectList, setSelectList] = useState() const formatSelectList = (val = { data: {}, field: {} }) => { const data: ListProps[] = [] for (const key in val.data) { if (key !== 'seriesId' && val.data[key] != '') { data.push({ title: val.field[key], value: val.data[key] }) } } setSelectList([...data]) } // 获取筛选条件 const getFiltr = (e) => { pageNum.current.page = 1 setCategoryList(() => ({ list: [], total: 0 })) const { data } = e setSearchField({ ...searchField, width: data?.width, weight_density: data?.weight, size: 10, component: data?.element, product_kind_id: data?.seriesId, }) formatSelectList(e) } // 输入了搜索关键字 const getSearchData = useCallback((e) => { pageNum.current.page = 1 setCategoryList(() => ({ list: [], total: 0 })) setSearchField(val => ({ ...val, code_or_name: e, size: 10 })) }, []) // 排序 type sortParam = 'none' | 'top' | 'bottom' const sortComprehensiveRef = useRef(null) const [sortStatus, setSortStatus] = useState<{ comprehensive: sortParam }>({ comprehensive: 'none', }) const changeSort = () => { setCategoryList(() => ({ list: [], total: 0 })) const { status, value } = sortComprehensiveRef.current.changeSort() setSortStatus(e => ({ ...e, comprehensive: status, collection: 'none' })) setSearchField(e => ({ ...e, abstract_sort_key: value, size: 10, page: 1 })) pageNum.current = { size: 10, page: 1 } } const [showsearchPopup, setshowsearchPopup] = useState(false) const handSearch = (val) => { pageNum.current.page = 1 setCategoryList(() => ({ list: [], total: 0 })) setSearchField({ ...searchField, width: val?.width, weight_density: val?.weight_density, size: 10, component: val?.component, product_kind_id: val?.product_kind_ids, }) setshowsearchPopup(false) } return ( changeSort()}> 综合 setshowsearchPopup(true)}> 筛选 getScrolltolower()} statusMore={statusMore}> {/* setShowPopup(false)} onFiltr={getFiltr} /> */} setshowsearchPopup(false)} handSearch={val => handSearch(val)}> ) }