87 lines
3.2 KiB
TypeScript
87 lines
3.2 KiB
TypeScript
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 <>
|
|
<SettingNumber sale_mode={orderData?.sale_mode} onNumber={getNumber} defaultValue={defaultNum} />
|
|
<View className={styles.product_list}>
|
|
{productList?.map((item) => {
|
|
return <ProductBlock key={item.id} productInfo={item} sale_mode_name={orderData?.sale_mode_name} />
|
|
})}
|
|
</View>
|
|
</>
|
|
})
|