Commit f94b9266 authored by GuanHua's avatar GuanHua

feat:商品详情价格区间计算

parent df4b56a3
......@@ -20,7 +20,9 @@ const InputNumber: React.FC<InputNumberPropsType> = (props) => {
useEffect(() => {
if (min) {
setMinCount(min)
onChange(min)
if (value < min) {
onChange(min)
}
}
if (max || max === 0) {
setMaxCount(max)
......
.loading_container {
text-align: center;
padding: 66px 0;
}
\ No newline at end of file
import React, { Component } from 'react'
import { Spin } from 'antd'
import styles from './index.less'
class Loading extends Component {
render() {
return (
<Spin />
<div className={styles.loading_container}>
<Spin />
</div>
)
}
}
......
......@@ -61,7 +61,7 @@ const CommodityDetail = (props) => {
const [commodityDetail, setCommodityDetail] = useState<GetSearchShopStoreGetCommodityDetailResponse>()
const [attrAndValList, setAttrAndValList] = useState<any>({})
const [selectAttrVal, setSelectAttrVal] = useState<selectAttrValType[]>([])
const [stockCount, setStockCount] = useState<number>(0)
const [stockCount, setStockCount] = useState<number>(2000)
const [commodityImgList, setCommodityImgList] = useState<imgItemType[]>([])
const [commodityPriceInfo, setCommodityPriceInfo] = useState([])
const [parameter, setParameter] = useState<number>() // 权益参数
......@@ -75,12 +75,6 @@ const CommodityDetail = (props) => {
fetchDetail()
}, [])
useEffect(() => {
if (shopInfo) {
console.log(shopInfo, "shopInfo")
}
}, [shopInfo])
const fetchDetail = () => {
PublicApi.getSearchShopStoreGetCommodityDetail({ commodityId: id }).then(res => {
if (res.code === 1000) {
......@@ -178,9 +172,10 @@ const CommodityDetail = (props) => {
})
if (judgeArrisCommon(temp, selectAttrVal)) {
setSelectCommodityId(item.id)
setCurrentPriceRange(item.unitPrice)
setAttrAndValList(item)
setStockCount(item.stockCount)
setStockCount(item.stockCount || 2000)
}
}
}
......@@ -350,12 +345,13 @@ const CommodityDetail = (props) => {
}
setCurrentPriceRange(unitPriceAndPicList[0].unitPrice)
setStockCount(unitPriceAndPicList[0].stockCount)
setStockCount(unitPriceAndPicList[0].stockCount || 2000)
setCommodityImgList(tempImgList)
setAttributeList(tempAttrList)
}
const setCurrentPriceRange = (uniPrice) => {
// console.log(JSON.stringify(uniPrice), "item.unitPrice")
let initPriceRange = uniPrice
let tempPriceRange = []
Object.keys(initPriceRange).forEach((key) => {
......@@ -421,7 +417,7 @@ const CommodityDetail = (props) => {
unitPrice = commodityPriceInfo[0]?.price
} else {
let temp = commodityPriceInfo.filter(item => {
return Number(buyCount) >= Number(item.min) && Number(buyCount) < Number(item.max)
return Number(buyCount) >= Number(item.min) && Number(buyCount) <= Number(item.max)
})
unitPrice = temp[0]?.price
}
......@@ -440,7 +436,7 @@ const CommodityDetail = (props) => {
unitPrice = commodityPriceInfo[0]?.price
} else {
let temp = commodityPriceInfo.filter(item => {
return Number(buyCount) >= Number(item.min) && Number(buyCount) < Number(item.max)
return Number(buyCount) >= Number(item.min) && Number(buyCount) <= Number(item.max)
})
unitPrice = temp[0]?.price
}
......@@ -529,7 +525,7 @@ const CommodityDetail = (props) => {
<div className={styles.prompt_goods_price_list}>
{
commodityPriceInfo && commodityPriceInfo.map((item, index) => (
<div className={cx(styles.prompt_goods_price_list_item, (commodityPriceInfo.length > 1 && Number(buyCount) >= item.min && Number(buyCount) < item.max) ? styles.active : "")} key={`prompt_goods_price_list_item_${index}`}>
<div className={cx(styles.prompt_goods_price_list_item, (commodityPriceInfo.length > 1 && Number(buyCount) >= item.min && Number(buyCount) <= item.max) ? styles.active : "")} key={`prompt_goods_price_list_item_${index}`}>
<div className={styles.price}>{priceFormat(item.price)}</div>
{
(commodityDetail?.isMemberPrice && parameter) && <div className={styles.member_price}>{priceFormat(item.price * parameter)}</div>
......
......@@ -9,9 +9,9 @@ interface HeaderPropsType {
const Header: React.FC<HeaderPropsType> = (props) => {
const { shopInfo } = props
const [searchType, setSearchType] = useState<number>(1) // 1:商品; 2:店铺
useEffect(() => {
console.log(shopInfo, "shopInfo")
// console.log(shopInfo, "shopInfo")
}, [shopInfo])
return (
......
import React from 'react'
import { Link } from 'umi'
import logo from '@/theme/imgs/logo_w.png'
import styles from './index.less'
import { GlobalConfig } from '@/global/config'
import { LAYOUT_TYPE } from '@/constants'
interface ShopHeaderPropsType {
......@@ -15,6 +13,7 @@ interface ShopHeaderPropsType {
const CommonHeader: React.FC<ShopHeaderPropsType> = (props) => {
const { title, type, logoUrl, shopUrlParam } = props
const getHomeLink = () => {
let link = '/'
switch (type) {
......
......@@ -23,7 +23,6 @@ interface PurchaseOrderPropsType {
const PurchaseOrder: React.FC<PurchaseOrderPropsType> = (props) => {
const { layoutType, shopInfo, shopUrlParam } = props
console.log(shopInfo, "shopInfo")
const OrderStore = useLocalStore(() => store.OrderStore)
const { updateOrderInfo } = OrderStore
const [indeterminate, setIndeterminate] = useState<boolean>(false)
......@@ -66,6 +65,8 @@ const PurchaseOrder: React.FC<PurchaseOrderPropsType> = (props) => {
price: unitPrice[key]
})
})
// TODO 暂时给个库存数量
item.stockCount = item.stockCount || 2000
item.commodityUnitPrice['priceRange'] = tempPriceRange
tempItem.orderList = [...tempItem.orderList, item]
}
......@@ -89,6 +90,8 @@ const PurchaseOrder: React.FC<PurchaseOrderPropsType> = (props) => {
price: unitPrice[key]
})
})
// TODO 暂时给个库存数量
item.stockCount = item.stockCount || 2000
item.commodityUnitPrice['priceRange'] = tempPriceRange
temp.orderList = [item]
result.push(temp)
......@@ -104,6 +107,7 @@ const PurchaseOrder: React.FC<PurchaseOrderPropsType> = (props) => {
defaultCheckedList: item.orderList.map(item => item.id)
})
})
console.log(result)
setOrderList(result)
// !initChecked && setCheckedList(result.map(item => item.id))
}
......@@ -219,7 +223,7 @@ const PurchaseOrder: React.FC<PurchaseOrderPropsType> = (props) => {
} else {
let priceItem: any = {}
for (let item of priceRange) {
if (Number(item.min) < count && count <= Number(item.max)) {
if (Number(item.min) <= count && count <= Number(item.max)) {
priceItem = item
}
}
......@@ -473,7 +477,7 @@ const PurchaseOrder: React.FC<PurchaseOrderPropsType> = (props) => {
unitPrice = detail.priceRange[0]?.price
} else {
let temp = detail.priceRange.filter(item => {
return Number(count) >= Number(item.min) && Number(count) < Number(item.max)
return Number(count) >= Number(item.min) && Number(count) <= Number(item.max)
})
unitPrice = temp[0]?.price
}
......@@ -511,7 +515,7 @@ const PurchaseOrder: React.FC<PurchaseOrderPropsType> = (props) => {
</div>
<Checkbox.Group value={checkedList} onChange={handleGroupChange}>
{
orderList.map((item: any) => (
orderList && orderList.map((item: any) => (
<div className={styles.order_list} key={item.id}>
<div className={styles.order_list_shop_name}>
<Checkbox
......@@ -552,7 +556,7 @@ const PurchaseOrder: React.FC<PurchaseOrderPropsType> = (props) => {
}
</div>
<div className={cx(styles.order_list_item_item, styles.count)}>
<InputNumber disabled={!childItem.stockCount} max={childItem.stockCount || 0} min={1} value={childItem.count} onChange={(value) => handleCountChange(value, childItem.id)} />
<InputNumber disabled={true} max={childItem.stockCount || 0} min={1} value={childItem.count} onChange={(value) => handleCountChange(value, childItem.id)} />
<div className={styles.stock}>(库存{numFormat(childItem.stockCount)}{childItem.commodityUnitPrice.commodity.unitName})</div>
</div>
<div className={cx(styles.order_list_item_item, styles.amount)}>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment