import { View } from '@tarojs/components' import { memo, useCallback, useMemo, useRef } from 'react' import Big from 'big.js' import type { NumberParam } from '../settingNumber' import SettingNumber from '../settingNumber' import useCommon from '../../useHook/useCommon' import styles from './index.module.scss' import ProductBlock from './productBlock' import { useCurrenCode } from '@/context/ContextCodeSetting' interface Parma { orderData: any onUpdateData?: (val: any) => void } export default memo((props: Parma) => { const { dispatch, productData } = useCurrenCode() const { orderData = {}, onUpdateData } = props const productList = useMemo(() => { console.log('productData123:::', orderData) if (!orderData?.product_details) { return [] } return orderData?.product_details }, [orderData]) const getNumber: NumberParam = useCallback((num, type) => { // 更新整体数据 const updateData = { price: orderData?.price_admin, weight: orderData?.weight_admin, weight_error: orderData?.weight_error_admin, } if (type === 'weight') { updateData.weight = num * 1000 } else if (type === 'sale_price') { updateData.price = num * 100 } else { updateData.weight_error = num * 1000 } console.log(`aa${type}`, num) // 需要传给后端 orderData.weight_admin = updateData.weight orderData.price_admin = updateData.price orderData.weight_error_admin = updateData.weight_error console.log('orderData123::', updateData.price) // 更新原始数组 productList?.map((item) => { item?.product_color_details?.map((citem) => { if (citem.sale_mode === 0) { citem.weight_setting = Big(updateData.weight).times(citem.roll).add(citem.weight).toNumber() citem.weight_error_setting = Big(updateData.weight_error).times(citem.roll).add(citem.weight_error).toNumber() } else { citem.weight_setting = Big(updateData.weight).add(citem.weight).toNumber() citem.weight_error_setting = Big(updateData.weight_error).add(citem.weight_error).toNumber() } citem.price_setting = Big(updateData.price).add(citem.price).toNumber() }) }) orderData.product_details = productList console.log('orderData::', orderData) dispatch({ type: 'updateData', data: JSON.parse(JSON.stringify(orderData)), update_status: 1 }) }, [productList]) const defaultNum = useMemo(() => { console.log('orderData::默认', productData) return { weight: Big(orderData?.weight_admin || 0).div(Big(1000)).toNumber(), sale_price: Big(orderData?.price_admin || 0).div(Big(100)).toNumber(), weight_error: Big(orderData?.weight_error_admin || 0).div(Big(1000)).toNumber(), } }, [orderData]) return <> {productList?.map((item) => { return })} })