import {Image, ScrollView, View } from "@tarojs/components" import Popup from "@/components/popup" import LoadingCard from "@/components/loadingCard"; import Search from "@/components/search"; import InfiniteScroll from "@/components/infiniteScroll"; import Counter from "../counter"; import Big from 'big.js' import classnames from "classnames"; import styles from "./index.module.scss" import { memo, useEffect, useState } from "react"; type param = { show?: true|false, onClose?: () => void } export default memo(({show = false, onClose}: param) => { const selectList = [ {step:1, digits:2, title:'剪板', unit:'米'}, {step:1, digits:2, title:'散剪', unit:'米'}, {step:1, digits:0, title:'大货', unit:'件'} ] const [selectIndex, setSelectIndex] = useState(0) const selectProduct = (index:number) => { setSelectIndex(index) } const [list, setList] = useState([]) const [loading, setLoading] = useState(false) console.log('执行执行') useEffect(() => { let lists:any[] = [] for(let i = 0; i < 20; i++) { lists = [...lists, { title:`${i}#薄荷绿`, subtitle: '0770# 21S单面平纹(食毛)', tag: '剪板', count:0, show: false, }] } setList([...lists]) }, []) const [showPopup, setShowPopup] = useState(false) useEffect(() => { setShowPopup(show) }, [show]) //popup关闭 const closePopup = () => { onClose?.() setShowPopup(false) } //计算总数量和总米/件数 const [selectCount, setSelectCount] = useState({ sumCount: 0, kindCount: 0 }) useEffect(() => { let sumCount = 0, kindCount = 0 list.map(item => { if(item.count > 0) { sumCount = Big(sumCount).add(item.count).toNumber() kindCount ++ } }) setSelectCount({sumCount, kindCount}) }, [list]) //计数组件 const getInputValue = (num, item) => { item.count = parseFloat(num) if(num == 0) item.show = false setList([...list]) console.log(num) } const onAdd = (item) => { item.show = true item.count = item.count == 0?1:item.count setList([...list]) } //搜索显示与隐藏 const [searchShow, setSearchShow] = useState(false) const changeSearchShow = () => { setSearchShow(true) } return ( closePopup()}> 0770# 21S单面平纹(食毛) 下单类型: {selectList.map((item, index) => { return selectProduct(index)} className={classnames(styles.search_item, (selectIndex==index)&&styles.search_item_select)}>{item.title} })} {searchShow&& setSearchShow(false)}>取消 } 颜色分类 (13) changeSearchShow()}> {list.length > 0&& {list.map(item => { return {item.title} ¥25.5/m {!item.show&& onAdd(item)}>添加 || getInputValue(e, item)} defaultNum={item.count} step={selectList[selectIndex].step} digits={selectList[selectIndex].digits} onClickBtn={(e) => getInputValue(e, item)} unit={selectList[selectIndex].unit} /> } })} || 暂无此商品} 当前已选{selectCount.kindCount}种,共{selectCount.sumCount}{selectList[selectIndex].unit} 加入购物车 ) })