diff --git a/src/assets/bo.png b/src/assets/bo.png new file mode 100644 index 0000000..412db3b Binary files /dev/null and b/src/assets/bo.png differ diff --git a/src/components/sp-goods-price/index.js b/src/components/sp-goods-price/index.js index 2acb232..8210411 100755 --- a/src/components/sp-goods-price/index.js +++ b/src/components/sp-goods-price/index.js @@ -45,9 +45,9 @@ function SpGoodsPrice (props) { { !isPoint && } - {marketPrice > 0 && enMarketPrice && ( + {/* {marketPrice > 0 && enMarketPrice && ( - )} + )} */} {info.memberPrice < info.price && enMemberPrice && ( diff --git a/src/components/sp-page/index.js b/src/components/sp-page/index.js index 02a3789..84bbe5c 100755 --- a/src/components/sp-page/index.js +++ b/src/components/sp-page/index.js @@ -131,7 +131,7 @@ function SpPage (props, ref) { draft.pageTitle = pageTitle draft.isTabBarPage = isTabBarPage draft.showLeftContainer = !['/subpages/guide/index', '/pages/index'].includes(`/${page?.route}`) - draft.showCustomNavigation = ['/pages/cart/espier-index', '/pages/index', '/subpages/member/index', '/pages/category/index'].includes(`/${page?.route}`) + draft.showCustomNavigation = ['/pages/cart/espier-index', '/pages/index', '/subpages/member/index', '/pages/category/index', '/pages/recommend/list'].includes(`/${page?.route}`) // draft.showCustomNavigation = true draft.showNavCartIcon = ['/subpages/marketing/coupon-center', '/subpages/marketing/coupon', '/pages/item/list'].includes(`/${page?.route}`) }) diff --git a/src/components/sp-sku-select-new/index.js b/src/components/sp-sku-select-new/index.js index 609c440..5b9ee6d 100755 --- a/src/components/sp-sku-select-new/index.js +++ b/src/components/sp-sku-select-new/index.js @@ -48,7 +48,7 @@ function SpSkuSelect (props, ref) { hideInputNumber = false, onChangeImg } = props - console.log('SpSkuSelect:info', info) + // console.log('SpSkuSelect:info', info) // const [state, setState] = useImmer(initialState) const [state, setState] = useAsyncCallback(initialState) const { selection, curImage, disabledSet, curItem, skuText, num, loading } = state @@ -84,7 +84,7 @@ function SpSkuSelect (props, ref) { const makeReg = (sel, row, val) => { const tSel = sel.slice() const regStr = tSel.map((s, idx) => (row === idx ? val : !s ? '(\\d+)' : s)).join('_') - console.log('regStr:', regStr) + // console.log('regStr:', regStr) return new RegExp(regStr) } @@ -114,12 +114,12 @@ function SpSkuSelect (props, ref) { // disabledSet // ) - const curItem = skuDictRef.current[selection.join('_')] + const curItem = skuDictRef.current[selection.join('_')] || skuDictRef.current[Object.keys(skuDictRef.current)[0]] // const skuText = curItem // ? `已选:${curItem.specItem.map((item) => `${item.skuName}:${item.specName}`).join(',')}` // : '请选择规格' const skuText = curItem - ? `已选择 ${curItem.specItem.map((item, index) => `${index === 1 ? item.specName.substr(0, 2) : item.specName}`).join(' ')}码` + ? `已选择 ${curItem.specItem.map((item, index) => `${index === 1 ? item.specName.substr(0, 2) : item.specName}`).join(' ')}码` : '请选择规格' setState((draft) => { @@ -137,7 +137,7 @@ function SpSkuSelect (props, ref) { // console.log('disabledSet:', disabledSet) const handleSelectSku = ({ specId }, idx) => { - console.log("🚀 ~ { specId }, idx:", specId, idx) + // console.log("🚀 ~ { specId }, idx:", specId, idx) if (disabledSet.has(specId)) return setState( (draft) => { @@ -412,7 +412,7 @@ function SpSkuSelect (props, ref) { ))} {!hideInputNumber && renderLimitTip()} - {skuText} + {skuText.split(' ').map((item, index) => {item})} {/* */} @@ -423,4 +423,4 @@ SpSkuSelect.options = { addGlobalClass: true } -export default React.forwardRef(SpSkuSelect) +export default React.memo(React.forwardRef(SpSkuSelect)) diff --git a/src/components/sp-sku-select-new/index.scss b/src/components/sp-sku-select-new/index.scss index 0a65be1..f3cac70 100755 --- a/src/components/sp-sku-select-new/index.scss +++ b/src/components/sp-sku-select-new/index.scss @@ -47,10 +47,10 @@ // margin-top: 30px; // margin-bottom: 100px; .select { - position: absolute; + // position: absolute; top: 156px; right: 50px; - font-size: 22px; + font-size: 24px; } } .sku-group { diff --git a/src/pages/category/comps/comp-series.js b/src/pages/category/comps/comp-series.js index a2ef5c4..56db8b2 100755 --- a/src/pages/category/comps/comp-series.js +++ b/src/pages/category/comps/comp-series.js @@ -97,7 +97,7 @@ const CompSeries = (props) => { const currentTopImg = info[activeIndex].img || '' //当前分类顶部图片 const currentChildren = info[activeIndex].children || [] // 子类 - const currentID = info[activeIndex].id || '' + const currentID = info[activeIndex].id || info[activeIndex].category_id || '' return ( {/* left */} @@ -146,9 +146,13 @@ const CompSeries = (props) => { )} {!showChild ? currentChildren.map((item, index) => { - return ( { - setShowChild(true) - setSelChild(item) + return (index === 0 || currentID === '18' ? { + if (item.children?.length) { + setShowChild(true) + setSelChild(item) + } else { + handleClickItem(item) + } }}> {item.name} @@ -159,6 +163,18 @@ const CompSeries = (props) => { height={350} src={item.img} /> + : handleClickItem(item)} + > + + {item.name} + ) // return item.children ? ( // // diff --git a/src/pages/item/comps/comp-buytoolbar.js b/src/pages/item/comps/comp-buytoolbar.js index 600fe83..da4f33f 100755 --- a/src/pages/item/comps/comp-buytoolbar.js +++ b/src/pages/item/comps/comp-buytoolbar.js @@ -42,14 +42,14 @@ function CompGoodsBuyToolbar (props) { btns.push(BUY_TOOL_BTNS.ONLY_SHOW) return } - if (info.store == 0) { - if (info.subscribe) { - btns.push(BUY_TOOL_BTNS.SUBSCRIBE) - } else { - btns.push(BUY_TOOL_BTNS.NOTICE) - } - return - } + // if (info.store == 0) { + // if (info.subscribe) { + // btns.push(BUY_TOOL_BTNS.SUBSCRIBE) + // } else { + // btns.push(BUY_TOOL_BTNS.NOTICE) + // } + // return + // } if (info.isGift) { btns.push(BUY_TOOL_BTNS.GIFT) @@ -81,12 +81,11 @@ function CompGoodsBuyToolbar (props) { return } - btns.push(BUY_TOOL_BTNS.ADD_CART) - btns.push(BUY_TOOL_BTNS.FAST_BUY) + btns.push({ ...BUY_TOOL_BTNS.ADD_CART, btnStatus: info.store == 0 ? 'disabled' : 'default' }) + btns.push({ ...BUY_TOOL_BTNS.FAST_BUY, btnStatus: info.store == 0 ? 'disabled' : 'active' }) } RenderBtns() - // console.log('btns:', btns) const onChangeLogin = async ({ key }) => { const { dtid, card_id, user_card_id } = $instance.router.params diff --git a/src/pages/item/comps/comp-buytoolbar.scss b/src/pages/item/comps/comp-buytoolbar.scss index befd017..1e8ffb3 100755 --- a/src/pages/item/comps/comp-buytoolbar.scss +++ b/src/pages/item/comps/comp-buytoolbar.scss @@ -101,7 +101,7 @@ /* prettier-ignore */ border: 1PX solid #E5E5E5; background: #e5e5e5; - color: #8d8d8d; + color: #8d8d8d !important; } &.sp-login { margin-left: 0; diff --git a/src/pages/item/espier-detail.js b/src/pages/item/espier-detail.js index 3b229a1..404a7bb 100755 --- a/src/pages/item/espier-detail.js +++ b/src/pages/item/espier-detail.js @@ -102,7 +102,8 @@ const initialState = { selSkuImg: '', swiperList: [], selColorIdx: 0, - introList: [] + introList: [], + scrollTop: 0 } function EspierDetail (props) { @@ -148,7 +149,8 @@ function EspierDetail (props) { selSkuImg, swiperList, selColorIdx, - introList + introList, + scrollTop } = state useEffect(() => { @@ -455,10 +457,9 @@ function EspierDetail (props) { {/* */} {!info && } {info && ( - { - // console.log('e', e.detail) + { const { scrollTop } = e.detail - if (scrollTop >= 640) { + if (scrollTop >= 600) { setState((draft) => { draft.isShowScroll = true }) @@ -731,18 +732,18 @@ function EspierDetail (props) { }} onChange={(skuText, curItem, idx) => { console.log("🚀 ~ curItem:", curItem, idx) - setState((draft) => { + curItem && setState((draft) => { draft.skuText = skuText draft.curItem = curItem // 不切换顶部轮播图 - draft.swiperList = curItem?.specItem?.[idx]?.specImgs draft.selSkuImg = curItem.specItem?.[0]?.specImgs?.[0] + if (idx === 0) draft.swiperList = curItem?.specItem?.[idx]?.specImgs }) }} /> - + {/* {info?.itemName} - + */} {isArray(info.intro) ? ( {info.intro.map((item, idx) => ( @@ -785,6 +786,11 @@ function EspierDetail (props) { }) draft.introList[index].isOpen = !item.isOpen }) + if (!item.isOpen) { + setState((draft) => { + draft.scrollTop = 610 + Math.random() + }) + } }} title={item.title} > @@ -798,6 +804,11 @@ function EspierDetail (props) { }) draft.introList[index].isOpen = !item.isOpen }) + if (!item.isOpen) { + setState((draft) => { + draft.scrollTop = 610 + Math.random() + }) + } }}> {item.isOpen ? : } diff --git a/src/pages/recommend/list.js b/src/pages/recommend/list.js index 90e60c7..8451fa1 100755 --- a/src/pages/recommend/list.js +++ b/src/pages/recommend/list.js @@ -1,6 +1,6 @@ import React, { Component } from 'react' import Taro, { getCurrentInstance } from '@tarojs/taro' -import { View, Text, ScrollView, Picker } from '@tarojs/components' +import { View, Text, ScrollView, Picker, Video } from '@tarojs/components' import { SpAddress } from '@/components' import { withPager, withBackToTop } from '@/hocs' import { connect } from 'react-redux' @@ -13,10 +13,11 @@ import { SpNote, FilterBar, SpTabbar, - SpPage + SpPage, + SpImage } from '@/components' import api from '@/api' -import { classNames, pickBy } from '@/utils' +import { classNames, pickBy, isWeixin } from '@/utils' import S from '@/spx' import './list.scss' @@ -24,7 +25,7 @@ import './list.scss' @connect(({ colors }) => ({ colors: colors.current })) -@withPager +// @withPager @withBackToTop export default class RecommendList extends Component { $instance = getCurrentInstance() @@ -45,6 +46,10 @@ export default class RecommendList extends Component { isShowSearch: false, shareInfo: {}, isSpAddressOpened: false, + play: false, + page: { + isLoading: true + } } } @@ -68,14 +73,19 @@ export default class RecommendList extends Component { } }) } - Taro.showLoading({ title: '' }) - this.resetPage() - this.setState({ - list: [] - }) + // Taro.showLoading({ title: '' }) + // this.resetPage() + // this.setState({ + // list: [] + // }) setTimeout(() => { - this.nextPage() - Taro.hideLoading() + // this.nextPage() + // Taro.hideLoading() + this.setState({ + page: { + isLoading: false + } + }) }, 200) // this.praiseNum() @@ -529,6 +539,30 @@ export default class RecommendList extends Component { }) } + handleVideoClick = (play) => { + let video + if (isWeixin) { + video = Taro.createVideoContext('recommend-video') + } else if (isWeb) { + video = document.getElementById('recommend-video') + } + + if (!video) { + return + } + + if (play) { + setTimeout(() => { + video.play() + }, 200) + } else { + isWeixin ? video.stop() : video.pause() + } + this.setState({ + play + }) + } + render () { const { list, @@ -543,36 +577,38 @@ export default class RecommendList extends Component { areaList, query, isShowSearch, - isSpAddressOpened + isSpAddressOpened, + play } = this.state const { colors } = this.props let address = info.province + info.city return ( - } className='has-nav' title="鞋床故事"> + } className='has-nav' title="" isBlack> - - - - - - - - {selectColumn.name || '栏目'} + {false && <> + + + - - {/* + + + {selectColumn.name || '栏目'} + + + {/* {address || '地区'} */} - - - {address || '地区'} - - + + + {address || '地区'} + + - {address ? ( - - // x - ) : ( - '' - )} - - - - - - - {columnList.map((item, index) => { - return ( + {address ? ( - {item.name} + className='zoom-btn icon-close iconfont' + onClick={this.handleRegionRefresh.bind(this)} + > + // x + ) : ( + '' + )} + + + + + + + {columnList.map((item, index) => { + return ( + + {item.name} + + ) + })} + + + + + + + + 重置 + + + 确定 + + + + + + + {list.map((item) => { + return ( + + this.handleClickItem(item)} + /> ) })} - - - + + {page.isLoading ? 正在加载... : null} + {!page.isLoading && !page.hasNext && !list.length && ( + 暂无数据~ + )} + + } + {page.isLoading ? : + + - - - 重置 - - - 确定 - - - - - - - {list.map((item) => { - return ( - - this.handleClickItem(item)} - /> - - ) - })} - - {page.isLoading ? 正在加载... : null} - {!page.isLoading && !page.hasNext && !list.length && ( - 暂无数据~ - )} - - + } diff --git a/src/pages/recommend/list.scss b/src/pages/recommend/list.scss index cc0e9f4..f178fc6 100755 --- a/src/pages/recommend/list.scss +++ b/src/pages/recommend/list.scss @@ -3,6 +3,41 @@ margin-top: 60px; } .page-recommend-list { + .recommend-content { + width: 100%; + .top-txt { + margin-top: 46px; + margin-bottom: 40px; + &-title { + text-align: center; + font-size: 30px; + margin-bottom: 24px; + font-weight: bold; + } + &-dec { + white-space: pre-wrap; + word-wrap: break-word; + text-align: center; + margin-bottom: 30px; + &-item { + text-align: center; + font-size: 20px; + line-height: 1.5; + margin: 0 auto; + } + } + .line { + margin: 0 auto; + width: 50px; + height: 6px; + background: #000; + border-radius: 4px; + } + } + .content-item { + margin-bottom: 50px; + } + } /* #ifdef alipay */ .filter-bar { position: absolute; diff --git a/src/subpages/marketing/coupon-center.js b/src/subpages/marketing/coupon-center.js index 4861879..b188bd3 100755 --- a/src/subpages/marketing/coupon-center.js +++ b/src/subpages/marketing/coupon-center.js @@ -152,10 +152,11 @@ function CouponCenter (props) { const getPoint = async () => { await api.member.depositToPoint({ money: 10000 }) - showToast('积分+500') + showToast('积分+100') setState((draft) => { draft.couponList = [] }) + getMypoint() listRef.current?.reset() } return ( diff --git a/src/subpages/member/user-info.js b/src/subpages/member/user-info.js index 13f53f7..7cf8c6d 100755 --- a/src/subpages/member/user-info.js +++ b/src/subpages/member/user-info.js @@ -27,6 +27,7 @@ const initialState = { listLength: 0, nList: [], listLength: 0, + loading: true } function MemberUserInfo () { @@ -44,6 +45,7 @@ function MemberUserInfo () { areaList, multiIndex, nList, + loading } = state const { userInfo = {} } = useSelector((_state) => _state.user) const pageRef = useRef() @@ -180,6 +182,7 @@ function MemberUserInfo () { draft.formUserInfo = _formUserInfo draft.areaList = [arrProvice, arrCity, arrCounty] draft.multiIndex = _multiIndex + draft.loading = false }) } @@ -520,7 +523,7 @@ function MemberUserInfo () { if (isWeixin) { return ( ) } else { @@ -540,6 +543,7 @@ function MemberUserInfo () { 保存 } + loading={loading} > {/* */}