import { Image, Text, View } from '@tarojs/components' import Taro, { getCurrentPages, useDidShow } from '@tarojs/taro' import { useCallback, useEffect, useMemo, useRef, useState } from 'react' import classNames from 'classnames' import styles from './index.module.scss' import type { ParamItem } from './components/productItem' import ProductItem from './components/productItem' import type { ColorItem } from '@/components/popupSelectColor' import PopupSelectColor from '@/components/popupSelectColor' import InfiniteScroll from '@/components/infiniteScroll' import Search from '@/components/search' import { dataLoadingStatus, getFilterData } from '@/common/util' import { GetSampleOrderProductApi } from '@/api/cutSample' import { alert, goLink } from '@/common/common' export default () => { const { fetchData, state: cardState } = GetSampleOrderProductApi() const [orderData, setOrderData] = useState<{ list: ParamItem[]; total: number }>({ list: [], total: 0, }) const [searchData, setSearchData] = useState<{ product_ids?: string; product_code_and_name?: string; page: number; size: number }>({ page: 1, size: 10, }) const shopColorCardData = useRef([]) // 获取数据 const getGetColorCard = async() => { const { data } = await fetchData(getFilterData({ ...searchData })) setOrderData(() => ({ list: data.list, total: data.total })) setRefresherTriggeredStatus(() => false) } useEffect(() => { getGetColorCard() }, [searchData]) useEffect(() => { if (Taro.getStorageSync('cutSample')) { const res = Taro.getStorageSync('cutSample') ? JSON.parse(Taro.getStorageSync('cutSample')) : [] const selectProsuctIds: number[] = [] res.map((item) => { selectProsuctIds.push(item.id) }) setSelectProsuctIds(selectProsuctIds) setSelectProcutColors(res) if (selectProsuctIds.length > 0) { setSearchData(e => ({ ...e, product_ids: selectProsuctIds.join(',') })) } } }, []) const getSearch = (con) => { setSearchData(e => ({ ...e, product_code_and_name: con })) } const onReset = () => { setSearchData(e => ({ ...e, product_code_and_name: '' })) } // 数据加载状态 const statusMore = useMemo(() => { return dataLoadingStatus({ list: orderData.list, total: cardState.total, status: cardState.loading }) }, [orderData, cardState]) // 上拉加载数据 const pageNum = useRef({ size: searchData.size, page: searchData.page }) const getScrolltolower = useCallback(() => { if (orderData.list.length < orderData.total) { pageNum.current.page++ const size = pageNum.current.size * pageNum.current.page setSearchData(e => ({ ...e, size })) } }, [orderData]) // 列表下拉刷新 const [refresherTriggeredStatus, setRefresherTriggeredStatus] = useState(false) const getRefresherRefresh = async() => { pageNum.current.size = 10 pageNum.current.page = 1 setRefresherTriggeredStatus(true) setSearchData(val => ({ ...val, size: 10 })) } const onSubmit = () => { if (selectProcutColors.length <= 0) { return alert.none('请选择剪样') } Taro.setStorageSync('cutSample', JSON.stringify([...selectProcutColors])) const pages = getCurrentPages() const current = pages[pages.length - 2] if (current?.route === 'pages/cutSampleListOrder/index') { Taro.navigateBack() } else { Taro.redirectTo({ url: '/pages/cutSampleListOrder/index', }) } } const [showColorList, setShowColorList] = useState(false) const [selectItem, setSelectItem] = useState() const onSelectData = (val: ParamItem) => { setShowColorList(true) setSelectItem(val) // 获取该面料下的颜色数据 const index = selectProsuctIds.indexOf(val.id) if (index !== -1) { const colorIds: number[] = [] selectProcutColors[index].colors?.map((citem) => { colorIds.push(citem.id) }) setSelectColorIds(colorIds) } } const onClose = () => { setShowColorList(false) } const [selectProcutColors, setSelectProcutColors] = useState < (ParamItem & { colors: ColorItem[] })[] > ([]) const [selectProsuctIds, setSelectProsuctIds] = useState([]) const [selectColorIds, setSelectColorIds] = useState([]) const onSelected = (val: ColorItem[]) => { val.map((item) => { if (!item.count) { item.count = 1 } }) const pIndex = selectProcutColors?.findIndex(item => item.id === selectItem?.id) if (pIndex === -1) { const data: any = { ...selectItem } data.colors = val selectProcutColors.push(data) } else { selectProcutColors[pIndex].colors = val } if (selectItem?.id && !selectProsuctIds.includes(selectItem?.id)) { selectProsuctIds.push(selectItem?.id) setSelectProsuctIds(selectProsuctIds) } setSelectProcutColors(selectProcutColors) setShowColorList(false) } return 取消 {orderData.list?.map((item) => { return ( ) })} 0 ? styles.selected : '')}>确认 }