🐞 fix(ID1001599): 【内部小程序】-购物车提交订单后,预估金额没有更新

【【内部小程序】-购物车提交订单后,预估金额没有更新】 https://www.tapd.cn/53459131/bugtrace/bugs/view/1153459131001001599
This commit is contained in:
xuan 2023-03-23 19:54:00 +08:00
parent fab0652997
commit 488fc66481
4 changed files with 71 additions and 35 deletions

View File

@ -417,8 +417,7 @@ const SearchPage = () => {
return (
<View className={styles.main}>
<View className={styles.topBox}>
<Search placeholder="请输入搜索布料" defaultValue={defaultvalue} showBtn={false} changeOnSearch={getSearchData} >
<View className={styles.cancelFont} onClick={onSearch}></View>
<Search placeholder="请输入搜索布料" defaultValue={defaultvalue} showBtn clickOnSearch={onSearch} changeOnSearch={getSearchData} >
</Search>
</View>
<View className={styles.line}></View>

View File

@ -473,17 +473,7 @@ const withStateSlice = (comp, slice: (state: ShoppingStateContextValue, props: P
console.log('itemData 有变化')
needMemo = false
}
if (prevProps.itemData.purchaser_name === '皮特织业') {
console.log('------withStateSlice props-------')
console.log('withStateSlice props prevProps', prevProps)
console.log('withStateSlice props prevProps comparison itemData', prevProps.itemData === nextProps.itemData)
console.log('withStateSlice props nextProps', nextProps)
console.log('withStateSlice props prevProps comparison multipleSelection', prevProps.state.multipleSelection === nextProps.state.multipleSelection)
console.log('withStateSlice props prevProps comparison currentCheckedPurchaserId', prevProps.state.currentCheckedPurchaserId === nextProps.state.currentCheckedPurchaserId)
console.log('withStateSlice props prevProps comparison Observer', prevProps.state.Observer === nextProps.state.Observer)
console.log('withStateSlice props prevProps comparison state', prevProps.state === nextProps.state)
console.log('------withStateSlice props-------')
}
if (prevProps.state.Observer !== nextProps.state.Observer) {
console.log('Observer 有变化')
needMemo = false
@ -496,6 +486,18 @@ const withStateSlice = (comp, slice: (state: ShoppingStateContextValue, props: P
console.log('currentCheckedPurchaserId 有变化')
needMemo = false
}
if (prevProps.itemData.purchaser_name === '孜然烤鱿鱼') {
console.log('更新 孜然烤鱿鱼', !needMemo)
console.log('------withStateSlice props-------')
console.log('withStateSlice props prevProps', prevProps)
console.log('withStateSlice props prevProps comparison itemData', prevProps.itemData === nextProps.itemData)
console.log('withStateSlice props nextProps', nextProps)
console.log('withStateSlice props prevProps comparison multipleSelection', prevProps.state.multipleSelection === nextProps.state.multipleSelection)
console.log('withStateSlice props prevProps comparison currentCheckedPurchaserId', prevProps.state.currentCheckedPurchaserId === nextProps.state.currentCheckedPurchaserId)
console.log('withStateSlice props prevProps comparison Observer', prevProps.state.Observer === nextProps.state.Observer)
console.log('withStateSlice props prevProps comparison state', prevProps.state === nextProps.state)
console.log('------withStateSlice props-------')
}
return needMemo
})
const Wrapper = (props: PropsType, ref) => {

View File

@ -77,7 +77,7 @@ export interface ShoppingDispatchContextValue {
[ShoppingDispatchType.UPDATE_CURRENT_CHECKED_SALEMODE]: (saleMode: ShoppingStateContextValue['currentCheckedSaleMode']) => void
[ShoppingDispatchType.UPDATE_COLOR_STORE]: (colorStore: React.SetStateAction<ColorStore>) => void
[ShoppingDispatchType.UPDATE_SELECTED_AMOUNT]: (amount: React.SetStateAction<ShoppingStateContextValue['selectedAmount']>) => void
[ShoppingDispatchType.UPDATE_CHANGED_CHECKBOX]: (amount: React.SetStateAction<ShoppingStateContextValue['selectedAmount']>) => void
[ShoppingDispatchType.UPDATE_CHANGED_CHECKBOX]: (amount: React.SetStateAction<GoodsMeta>) => void
}
export interface ShoppingAction {

View File

@ -40,26 +40,75 @@ const ShoppingCartContainer: FC = () => {
}
const listHeightRef = useRef('auto')
// 强制刷新
const [, setForceUpdate] = useState({})
const { fetchData, state } = ShoppingCartListApi()
const [searchOptions, setSearchOptions] = useState<SearchOptions>({})
const clearMultiSelection = () => {
console.log('clearMultiSelection', shoppingCartData?.list)
const target = shoppingCartData?.list?.find(item => item.purchaser_id === currentCheckedPurchaserId)
console.log('BackEndSaleModeListFieldMap', BackEndSaleModeListFieldMap[currentCheckedSaleMode], target)
const newGoodsKind = Object.fromEntries(
target?.[BackEndSaleModeListFieldMap[currentCheckedSaleMode]].map(item => [
item?.id,
{
id: item?.id,
estimate_amount: item.estimate_amount,
product_code: item.product_code,
product_color_code: item.product_color_code,
sale_mode: item.sale_mode,
count: currentCheckedSaleMode === EnumSaleMode.Bulk ? item.roll : Number(formatMeterDiv(item.length)),
},
]),
)
const prevMultipleSelection = colorStore?.[currentCheckedPurchaserId]?.multipleSelection
console.log('clearMultiSelection', prevMultipleSelection)
const nextMultipleSelection = prevMultipleSelection
? Object.fromEntries(
Object.values(prevMultipleSelection).filter(value => !Object.keys(newGoodsKind).includes(String(value.id)))
.map(value => [
value.id,
{
id: value.id,
estimate_amount: value.estimate_amount,
product_code: value.product_code,
product_color_code: value.product_color_code,
sale_mode: value.sale_mode,
count: value.count,
},
],
))
: {}
console.log('nextMultipleSelection', nextMultipleSelection)
// 清空多选
dispatch({
type: ShoppingDispatchType.UPDATE_CHANGED_CHECKBOX,
data: {
purchaserId: currentCheckedPurchaserId,
goodsKind: newGoodsKind,
multipleSelection: nextMultipleSelection,
},
})
}
useDidShow(() => {
const getData = async() => {
await fetchData(getFilterData(searchOptions))
clearMultiSelection()
}
useDidShow(async() => {
// 第二次进入该页面时触发
if (!isFirst.current) {
console.log('重新刷新')
// 重新刷新
// setShoppingCartData({ list: [], total: 0 })
fetchData(getFilterData(searchOptions))
getData()
}
})
useEffect(() => {
console.log('useEffect fetchData', getFilterData(searchOptions))
if (!isFirst.current) {
fetchData(getFilterData(searchOptions))
getData()
}
}, [searchOptions])
@ -92,21 +141,6 @@ const ShoppingCartContainer: FC = () => {
console.log('useLayoutEffect')
await fetchData(getFilterData(searchOptions))
isFirst.current = false
// const query = Taro.createSelectorQuery()
// console.log('query', query)
// query.select('#shoppingContainer').boundingClientRect()
// query.select('#topBar').boundingClientRect()
// query.select('#bottomBar').boundingClientRect()
// query.exec((res) => {
// console.log('res==>', res)
// const containerHeight = res[0].height
// const topBarHeight = res[1].height
// const bottomBarHeight = res[2].height
// const listHeight = containerHeight - topBarHeight - bottomBarHeight
// listHeightRef.current = `${listHeight}px`
// // 强制刷新
// setForceUpdate({})
// })
})()
}, [])
@ -233,6 +267,7 @@ const ShoppingCartContainer: FC = () => {
setRefreshStatus(true)
const res = await fetchData(getFilterData(searchOptions))
if (res.success) {
clearMultiSelection()
setRefreshStatus(false)
alert.success('刷新成功')
}