import { View, ScrollView } from '@tarojs/components' import { useCallback, forwardRef, useEffect, useMemo, useRef, useState, memo, useImperativeHandle, } from 'react' import Search from '@/components/search' import styles from "./index.module.scss" import classnames from "classnames"; import Popup from '@/components/popup' import Goods from "@/components/goodsItem" import BottomCustomer from "@/components/BottomCustomer" import VirtualList from '@tarojs/components/virtual-list' import DotLoading from "@/components/dotLoading" import Divider from '../divider'; interface prosObj { showPopup?: false | true, closePopup?: () => void, goodList?: any[], typeList?: any[], handCheck?: (any) => void, addNums?: (any) => void reduceNums?: (any) => void // oninputEvent?: (e: string, res: object) => void, getSearchData: (any) => void, handPlus: (any) => void, handSure: () => void, obj?: { code?: string, name?: string, }, modeFont: Number | string, clientName: string, clientId: Number, hasBottom?: true | false, //默认不占位底部 onBlur?: (e: string, res: object) => void } export default memo(forwardRef((props: prosObj, ref) => { const { showPopup = false, closePopup, goodList = [], typeList = [], handCheck, addNums, reduceNums, // oninputEvent, getSearchData, handPlus, obj = {}, modeFont = 0, clientName = '', clientId = -1, handSure, hasBottom = true, onBlur } = props useImperativeHandle(ref, () => ({ Object: props, typeList: typeList })) //判断选择的类型 const showModefont = useMemo(() => { const modeObj = typeList.filter(item => { return item.checked }) if (modeObj[0].id === 0) { return '条' } else { return '米' } }, [typeList]) //已选的颜色 const selectTotal = useMemo(() => { const totalArr = goodList.filter(item => { return item.showInput }) return totalArr.length }, [goodList]) //选择的条数或者米数 const selectNums = useMemo(() => { let arr: any = [] goodList.forEach(item => { if (item.showInput) { arr.push(Number(item.nums)) } }) let hate = sum(arr) return hate }, [goodList]) // onInputEven={(e, item) => oninputEvent?.(e, item)} function sum(arr) { var s = 0; for (var i = arr.length - 1; i >= 0; i--) { s += arr[i]; } return s; } const rows = memo(({ id, index, style, data }: any) => { let item = data[index] return ( <> onBlur?.(e, id)} modeFont={(modeFont as number)} handPlus={(item) => handPlus?.(item)} value={item || {}} clickAdd={(item) => addNums?.(item)} clickReduce={(item) => { reduceNums?.(item) }} goodList={goodList} > ) }) return ( closePopup?.()}> {obj?.code}# {obj?.name} 已选 1 种面料,{selectTotal} 个颜色,共 {selectNums} {showModefont} 布料类型 {typeList.map((item, index) => { return ( { handCheck?.(item) }} key={index} className={classnames(item.checked ? styles.activemodeFont : styles.modeFont)}> {item.name} ) })} 颜色分类({goodList?.length}) {modeFont == 0 ? '大货' : modeFont == 1 ? '剪版' : '散剪'}单位:{showModefont} {goodList.length > 0 && ( <> {rows} )} {goodList.length === 0 && ( <> 加载中 )} {!hasBottom && } 0 && clientName !== '' ? false : true} handSure={() => { handSure() }}> ) }))