✨ feat(ID1000945): 【面料优选】,客服入口补充
【【面料优选】,客服入口补充】https://www.tapd.cn/53459131/prong/stories/view/1153459131001000945
This commit is contained in:
parent
5d42eef85c
commit
e5f36e9ca3
@ -29,8 +29,10 @@ interface param {
|
||||
playVideo?: boolean
|
||||
floatVideoFile?: any[]
|
||||
showFloatVideo?: boolean
|
||||
customStyles?: React.CSSProperties
|
||||
}
|
||||
const MoveBtn = ({ showFloatVideo = false, floatVideoFile = [], playVideo = true, orderObj = {}, children = null, onShopClick, showList = [], messageTitle = '', messagePath = '', showCart = false }: param) => {
|
||||
const MoveBtn = (props: param) => {
|
||||
const { customStyles = {}, showFloatVideo = false, floatVideoFile = [], playVideo = false, orderObj = {}, children = null, onShopClick, showList = [], messageTitle = '', messagePath = '', showCart = false } = props
|
||||
const userInfo = useSelector(state => state.userInfo)
|
||||
// 获取购物车数据数量
|
||||
const { getShopCount, commonData } = useCommonData()
|
||||
@ -127,7 +129,7 @@ const MoveBtn = ({ showFloatVideo = false, floatVideoFile = [], playVideo = true
|
||||
}
|
||||
|
||||
return (
|
||||
<MovableArea className={styles.movableItem}>
|
||||
<MovableArea className={styles.movableItem} style={customStyles}>
|
||||
{children}
|
||||
{onShow('shop') && <MovableView
|
||||
onClick={onShopClick}
|
||||
|
||||
@ -8,6 +8,7 @@ import { GetProductKindListApi, GetProductListApi } from '@/api/material'
|
||||
import { dataLoadingStatus } from '@/common/util'
|
||||
import Product from '@/components/product'
|
||||
import useLogin from '@/use/useLogin'
|
||||
import MoveBtn from '@/components/moveBtn'
|
||||
|
||||
const PAGE_LIMIT = 10
|
||||
|
||||
@ -88,30 +89,32 @@ const Category = () => {
|
||||
categoryList()
|
||||
}, [])
|
||||
|
||||
return <View className={styles.main}>
|
||||
<View className={styles.header}>
|
||||
<View className={styles.search}>
|
||||
<View className={styles.search_input} onClick={() => goLink('/pages/searchList/search')}>
|
||||
<Search disabled style={{ width: '263rpx' }} borderRadius="16rpx" placeholder="请输入搜索布料" />
|
||||
return <MoveBtn showList={['order']} customStyles={{ overflow: 'scroll' }}>
|
||||
<View className={styles.main}>
|
||||
<View className={styles.header}>
|
||||
<View className={styles.search}>
|
||||
<View className={styles.search_input} onClick={() => goLink('/pages/searchList/search')}>
|
||||
<Search disabled style={{ width: '263rpx' }} borderRadius="16rpx" placeholder="请输入搜索布料" />
|
||||
</View>
|
||||
</View>
|
||||
</View>
|
||||
<View className={styles.products}>
|
||||
<SideBar
|
||||
list={kindData.list}
|
||||
height="100%"
|
||||
defaultValue={kindData.defaultId}
|
||||
statusMore={statusMore}
|
||||
selfOnScrolltolower={getScrolltolower}
|
||||
sideBarOnClick={getProductKindId}
|
||||
heightItem={82}
|
||||
refresherTriggered={refresherTriggeredStatus}
|
||||
selectClass={getSelectClassId}
|
||||
selfOnRefresherRefresh={() => getRefresherRefresh()}
|
||||
>
|
||||
<Product productList={productData.list} />
|
||||
</SideBar>
|
||||
</View>
|
||||
</View>
|
||||
<View className={styles.products}>
|
||||
<SideBar
|
||||
list={kindData.list}
|
||||
height="100%"
|
||||
defaultValue={kindData.defaultId}
|
||||
statusMore={statusMore}
|
||||
selfOnScrolltolower={getScrolltolower}
|
||||
sideBarOnClick={getProductKindId}
|
||||
heightItem={82}
|
||||
refresherTriggered={refresherTriggeredStatus}
|
||||
selectClass={getSelectClassId}
|
||||
selfOnRefresherRefresh={() => getRefresherRefresh()}
|
||||
>
|
||||
<Product productList={productData.list} />
|
||||
</SideBar>
|
||||
</View>
|
||||
</View>
|
||||
</MoveBtn>
|
||||
}
|
||||
export default Category
|
||||
|
||||
@ -1,6 +1,5 @@
|
||||
.main {
|
||||
background-color: #fff;
|
||||
height: 100vh;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
.header {
|
||||
|
||||
@ -14,6 +14,7 @@ import IconFont from '@/components/iconfont/iconfont'
|
||||
import IconText from '@/components/iconText'
|
||||
import { HOME_ITEM1, HOME_ITEM2, HOME_ITEM3, HOME_ITEM4 } from '@/common/constant'
|
||||
import { EnumLabelPageJumpApi, GetLabelProductsApi } from '@/api/search'
|
||||
import MoveBtn from '@/components/moveBtn'
|
||||
|
||||
const Index = () => {
|
||||
useLogin()
|
||||
@ -134,74 +135,74 @@ const Index = () => {
|
||||
}
|
||||
|
||||
return (
|
||||
<View className={styles.main}>
|
||||
<View className={styles.header}>
|
||||
<View className={styles.search}>
|
||||
<View className={styles.search_input} onClick={() => goLink('/pages/searchList/search')}>
|
||||
<Search disabled style={{ width: '263rpx' }} borderRadius="16rpx" placeholder="请输入搜索布料" />
|
||||
</View>
|
||||
</View>
|
||||
<Banner />
|
||||
</View>
|
||||
<View className={styles.category}>
|
||||
<View className={styles.flex_container}>
|
||||
<View className={styles.flex_item} onClick={() => handleClickHomeItem('女装面料')}>
|
||||
{/* 女装面料 */}
|
||||
<IconText iconName="icon-nvzhuang" textClassName={styles.flex_item_text} iconSize={70} svg direction="top" text="女装面料"></IconText>
|
||||
</View>
|
||||
<View className={styles.flex_item} onClick={() => handleClickHomeItem('男装面料')}>
|
||||
{/* 男装面料 */}
|
||||
<IconText iconName="icon-nanzhuang" textClassName={styles.flex_item_text} iconSize={70} svg direction="top" text="男装面料"></IconText>
|
||||
</View>
|
||||
<View className={styles.flex_item} onClick={() => handleClickHomeItem('童装面料')}>
|
||||
{/* 童装面料 */}
|
||||
<IconText iconName="icon-tongzhuang" textClassName={styles.flex_item_text} iconSize={70} svg direction="top" text="童装面料"></IconText>
|
||||
</View>
|
||||
<View className={styles.flex_item} onClick={() => handleClickHomeItem('潮流面料')}>
|
||||
{/* 潮流面料 */}
|
||||
<IconText iconName="icon-chaoliumianliao" textClassName={styles.flex_item_text} iconSize={70} svg direction="top" text="潮流面料"></IconText>
|
||||
</View>
|
||||
<View className={styles.flex_item} onClick={handleClickCategory}>
|
||||
<IconText iconName="icon-zhuanyefenlei" textClassName={styles.flex_item_text} iconSize={70} svg direction="top" text="专业分类"></IconText>
|
||||
</View>
|
||||
</View>
|
||||
<View className={styles.grid_container}>
|
||||
<View className={classNames(styles.grid_item, styles.grid_left)} onClick={() => handleClickHomeItem('高端奢侈')}>
|
||||
{/* 高端奢侈 */}
|
||||
<View className={styles.grid_left_image}>
|
||||
<Image className="full-100" src={HOME_ITEM4} mode="aspectFit" />
|
||||
<MoveBtn showList={['order']} customStyles={{ overflow: 'scroll' }}>
|
||||
<View className={styles.main}>
|
||||
<View className={styles.header}>
|
||||
<View className={styles.search}>
|
||||
<View className={styles.search_input} onClick={() => goLink('/pages/searchList/search')}>
|
||||
<Search disabled style={{ width: '263rpx' }} borderRadius="16rpx" placeholder="请输入搜索布料" />
|
||||
</View>
|
||||
</View>
|
||||
<View className={classNames(styles.grid_item, styles.grid_top)} onClick={() => handleClickHomeItem('热销走量')}>
|
||||
{/* 热销走量 */}
|
||||
<View className={styles.grid_top_image}>
|
||||
<Image className="full-100" src={HOME_ITEM2} mode="aspectFit" />
|
||||
<Banner />
|
||||
</View>
|
||||
<View className={styles.category}>
|
||||
<View className={styles.flex_container}>
|
||||
<View className={styles.flex_item} onClick={() => handleClickHomeItem('女装面料')}>
|
||||
{/* 女装面料 */}
|
||||
<IconText iconName="icon-nvzhuang" textClassName={styles.flex_item_text} iconSize={70} svg direction="top" text="女装面料"></IconText>
|
||||
</View>
|
||||
<View className={styles.flex_item} onClick={() => handleClickHomeItem('男装面料')}>
|
||||
{/* 男装面料 */}
|
||||
<IconText iconName="icon-nanzhuang" textClassName={styles.flex_item_text} iconSize={70} svg direction="top" text="男装面料"></IconText>
|
||||
</View>
|
||||
<View className={styles.flex_item} onClick={() => handleClickHomeItem('童装面料')}>
|
||||
{/* 童装面料 */}
|
||||
<IconText iconName="icon-tongzhuang" textClassName={styles.flex_item_text} iconSize={70} svg direction="top" text="童装面料"></IconText>
|
||||
</View>
|
||||
<View className={styles.flex_item} onClick={() => handleClickHomeItem('潮流面料')}>
|
||||
{/* 潮流面料 */}
|
||||
<IconText iconName="icon-chaoliumianliao" textClassName={styles.flex_item_text} iconSize={70} svg direction="top" text="潮流面料"></IconText>
|
||||
</View>
|
||||
<View className={styles.flex_item} onClick={handleClickCategory}>
|
||||
<IconText iconName="icon-zhuanyefenlei" textClassName={styles.flex_item_text} iconSize={70} svg direction="top" text="专业分类"></IconText>
|
||||
</View>
|
||||
</View>
|
||||
<View className={classNames(styles.grid_item, styles.grid_bottom)} onClick={() => handleClickHomeItem('性价比')}>
|
||||
{/* 性价比 */}
|
||||
<View className={styles.grid_bottom_image}>
|
||||
<Image className="full-100" src={HOME_ITEM3} mode="aspectFit" />
|
||||
<View className={styles.grid_container}>
|
||||
<View className={classNames(styles.grid_item, styles.grid_left)} onClick={() => handleClickHomeItem('高端奢侈')}>
|
||||
{/* 高端奢侈 */}
|
||||
<View className={styles.grid_left_image}>
|
||||
<Image className="full-100" src={HOME_ITEM4} mode="aspectFit" />
|
||||
</View>
|
||||
</View>
|
||||
<View className={classNames(styles.grid_item, styles.grid_top)} onClick={() => handleClickHomeItem('热销走量')}>
|
||||
{/* 热销走量 */}
|
||||
<View className={styles.grid_top_image}>
|
||||
<Image className="full-100" src={HOME_ITEM2} mode="aspectFit" />
|
||||
</View>
|
||||
</View>
|
||||
<View className={classNames(styles.grid_item, styles.grid_bottom)} onClick={() => handleClickHomeItem('性价比')}>
|
||||
{/* 性价比 */}
|
||||
<View className={styles.grid_bottom_image}>
|
||||
<Image className="full-100" src={HOME_ITEM3} mode="aspectFit" />
|
||||
</View>
|
||||
</View>
|
||||
</View>
|
||||
</View>
|
||||
</View>
|
||||
<View className={styles.extended_module}>
|
||||
<View className={styles.module_header}>
|
||||
<View className={styles.module_header_title}>猜你喜欢</View>
|
||||
<View className={styles.module_header_more} onClick={handleMoreRecommend}>
|
||||
<Text>更多推荐</Text>
|
||||
<IconFont name="icon-rukou" size={34} color="#337fff"></IconFont>
|
||||
<View className={styles.extended_module}>
|
||||
<View className={styles.module_header}>
|
||||
<View className={styles.module_header_title}>猜你喜欢</View>
|
||||
<View className={styles.module_header_more} onClick={handleMoreRecommend}>
|
||||
<Text>更多推荐</Text>
|
||||
<IconFont name="icon-rukou" size={34} color="#337fff"></IconFont>
|
||||
</View>
|
||||
</View>
|
||||
<View className={styles.module_container}>
|
||||
<GuessULikeList uLikeList={guessULikeList}></GuessULikeList>
|
||||
<View className={styles.more_recommend} onClick={handleMoreRecommend}>{'更多推荐 >'}</View>
|
||||
</View>
|
||||
</View>
|
||||
<View className={styles.module_container}>
|
||||
<GuessULikeList uLikeList={guessULikeList}></GuessULikeList>
|
||||
<View className={styles.more_recommend} onClick={handleMoreRecommend}>{'更多推荐 >'}</View>
|
||||
</View>
|
||||
</View>
|
||||
{/* 真机测试:注释了以下这段也没有布局问题 */}
|
||||
{/* <View className="common_safe_area_y"></View> */}
|
||||
</View>
|
||||
</MoveBtn>
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
@ -17,6 +17,7 @@ import LabAndImg from '@/components/LabAndImg'
|
||||
import IconFont from '@/components/iconfont/iconfont'
|
||||
import Tag from '@/components/tag'
|
||||
import { EnumAllLabelApi, GetLabelProductsApi, HomePageJumpApi } from '@/api/search'
|
||||
import MoveBtn from '@/components/moveBtn'
|
||||
|
||||
enum FilterOptions {
|
||||
RECOMMEND = 1,
|
||||
@ -201,82 +202,84 @@ export default () => {
|
||||
}
|
||||
|
||||
return (
|
||||
<View className={styles.main}>
|
||||
<View className={styles.search}>
|
||||
<Search placeholder="请输入搜索面料" showBtn btnTitle="搜索" clickOnSearch={getSearchData} defaultValue={router.params.key} changeOnSearch={handleInput} debounceTime={300} />
|
||||
</View>
|
||||
<View className={styles.filter}>
|
||||
<View className={styles.filter_all}>
|
||||
<View className={styles.text_zh} onClick={() => handleSelectFilterOptions(FilterOptions.RECOMMEND)}>
|
||||
<Text className={currentOption === FilterOptions.RECOMMEND ? styles.filter_active : ''}>综合推荐</Text>
|
||||
</View>
|
||||
<View className={styles.text_sc} onClick={() => handleSelectFilterOptions(FilterOptions.SALES)}>
|
||||
<Text className={currentOption === FilterOptions.SALES ? styles.filter_active : ''}>销量</Text>
|
||||
</View>
|
||||
<View className={styles.text_sc} onClick={changeSort}>
|
||||
<Text className={currentOption === FilterOptions.PRICE ? styles.filter_active : ''} style={{ marginRight: '8rpx' }}>价格</Text>
|
||||
<SortBtn status={sortStatus} ref={sortCollectionRef} sortValue={{ desc: 3, asc: 4 }} />
|
||||
</View>
|
||||
<View className={styles.text_sc}>
|
||||
<Filter defaultValue={selected} onFilter={e => getFilter(e)} />
|
||||
</View>
|
||||
<MoveBtn showList={['order']} customStyles={{ overflow: 'scroll' }}>
|
||||
<View className={styles.main}>
|
||||
<View className={styles.search}>
|
||||
<Search placeholder="请输入搜索面料" showBtn btnTitle="搜索" clickOnSearch={getSearchData} defaultValue={router.params.key} changeOnSearch={handleInput} debounceTime={300} />
|
||||
</View>
|
||||
{
|
||||
!!labelList.length && <View className={styles.filter_btn_con}>
|
||||
<View className={styles.filter_scroll}>
|
||||
<SelectData defaultValue={labelIds} list={labelList} onClickTag={handleClickTag} />
|
||||
<View className={styles.filter}>
|
||||
<View className={styles.filter_all}>
|
||||
<View className={styles.text_zh} onClick={() => handleSelectFilterOptions(FilterOptions.RECOMMEND)}>
|
||||
<Text className={currentOption === FilterOptions.RECOMMEND ? styles.filter_active : ''}>综合推荐</Text>
|
||||
</View>
|
||||
<View className={styles.text_sc} onClick={() => handleSelectFilterOptions(FilterOptions.SALES)}>
|
||||
<Text className={currentOption === FilterOptions.SALES ? styles.filter_active : ''}>销量</Text>
|
||||
</View>
|
||||
<View className={styles.text_sc} onClick={changeSort}>
|
||||
<Text className={currentOption === FilterOptions.PRICE ? styles.filter_active : ''} style={{ marginRight: '8rpx' }}>价格</Text>
|
||||
<SortBtn status={sortStatus} ref={sortCollectionRef} sortValue={{ desc: 3, asc: 4 }} />
|
||||
</View>
|
||||
<View className={styles.text_sc}>
|
||||
<Filter defaultValue={selected} onFilter={e => getFilter(e)} />
|
||||
</View>
|
||||
</View>
|
||||
}
|
||||
</View>
|
||||
<View className={styles.list}>
|
||||
<View className={styles.scroll}>
|
||||
<InfiniteScroll
|
||||
refresherEnabled
|
||||
selfOnRefresherRefresh={getRefresherRefresh}
|
||||
refresherTriggered={refresherTriggeredStatus}
|
||||
safeAreaInsetBottom={false}
|
||||
selfonScrollToLower={getScrollToLower}
|
||||
statusMore={statusMore}
|
||||
>
|
||||
<View className={styles.product_list}>
|
||||
{materialList.list?.map((item) => {
|
||||
return (
|
||||
<View key={item.id} className={styles.product_item} onClick={() => goLinkPage(item)}>
|
||||
<View className={styles.product_img}>
|
||||
<LabAndImg value={labAndImgObj(item)} />
|
||||
<View className={styles.color_num}>{item.product_color_count}色</View>
|
||||
</View>
|
||||
<View className={styles.product_info}>
|
||||
<View className={styles.title}>
|
||||
<Text className={styles.title_text}>
|
||||
{formatHashTag(item.code, item.name)}
|
||||
</Text>
|
||||
<View className={styles.favorite}>
|
||||
{item.is_favorite && <IconFont customClassName={styles.collection_icon} name="icon-shoucang1" size={40} />}
|
||||
{
|
||||
!!labelList.length && <View className={styles.filter_btn_con}>
|
||||
<View className={styles.filter_scroll}>
|
||||
<SelectData defaultValue={labelIds} list={labelList} onClickTag={handleClickTag} />
|
||||
</View>
|
||||
</View>
|
||||
}
|
||||
</View>
|
||||
<View className={styles.list}>
|
||||
<View className={styles.scroll}>
|
||||
<InfiniteScroll
|
||||
refresherEnabled
|
||||
selfOnRefresherRefresh={getRefresherRefresh}
|
||||
refresherTriggered={refresherTriggeredStatus}
|
||||
safeAreaInsetBottom
|
||||
selfonScrollToLower={getScrollToLower}
|
||||
statusMore={statusMore}
|
||||
>
|
||||
<View className={styles.product_list}>
|
||||
{materialList.list?.map((item) => {
|
||||
return (
|
||||
<View key={item.id} className={styles.product_item} onClick={() => goLinkPage(item)}>
|
||||
<View className={styles.product_img}>
|
||||
<LabAndImg value={labAndImgObj(item)} />
|
||||
<View className={styles.color_num}>{item.product_color_count}色</View>
|
||||
</View>
|
||||
<View className={styles.product_info}>
|
||||
<View className={styles.title}>
|
||||
<Text className={styles.title_text}>
|
||||
{formatHashTag(item.code, item.name)}
|
||||
</Text>
|
||||
<View className={styles.favorite}>
|
||||
{item.is_favorite && <IconFont customClassName={styles.collection_icon} name="icon-shoucang1" size={40} />}
|
||||
</View>
|
||||
</View>
|
||||
<View className={styles.tag_list}>
|
||||
<Tag customClassName={styles.tag} type="primary" size="small" circle>{item.width}</Tag>
|
||||
<Tag customClassName={styles.tag} type="primary" size="small" circle>{item.weight_density}</Tag>
|
||||
{
|
||||
!!item.product_screw_id
|
||||
&& <Tag customClassName={styles.tag_g} circle type="primary" size="small">配套螺纹</Tag>
|
||||
}
|
||||
</View>
|
||||
<View className={styles.introduce}>{item.component}</View>
|
||||
<View className={styles.price}>
|
||||
<View className={styles.price_unit}>¥</View>
|
||||
<View className={styles.price_num}>{formatPriceDiv(item.lowest_price).toLocaleString()}起</View>
|
||||
</View>
|
||||
</View>
|
||||
<View className={styles.tag_list}>
|
||||
<Tag customClassName={styles.tag} type="primary" size="small" circle>{item.width}</Tag>
|
||||
<Tag customClassName={styles.tag} type="primary" size="small" circle>{item.weight_density}</Tag>
|
||||
{
|
||||
!!item.product_screw_id
|
||||
&& <Tag customClassName={styles.tag_g} circle type="primary" size="small">配套螺纹</Tag>
|
||||
}
|
||||
</View>
|
||||
<View className={styles.introduce}>{item.component}</View>
|
||||
<View className={styles.price}>
|
||||
<View className={styles.price_unit}>¥</View>
|
||||
<View className={styles.price_num}>{formatPriceDiv(item.lowest_price).toLocaleString()}起</View>
|
||||
</View>
|
||||
</View>
|
||||
</View>
|
||||
)
|
||||
})}
|
||||
</View>
|
||||
</InfiniteScroll>
|
||||
)
|
||||
})}
|
||||
</View>
|
||||
</InfiniteScroll>
|
||||
</View>
|
||||
</View>
|
||||
</View>
|
||||
</View>
|
||||
</MoveBtn>
|
||||
)
|
||||
}
|
||||
|
||||
@ -3,11 +3,9 @@
|
||||
align-items: center;
|
||||
background-color: #fff;
|
||||
padding: 24px 24px 24px 56px;
|
||||
position: fixed;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
box-sizing: border-box;
|
||||
position: relative;
|
||||
z-index: 999;
|
||||
box-shadow: 0px -5px 20px -8px rgba(0, 0, 0, 0.06);
|
||||
.select_text {
|
||||
|
||||
@ -1,13 +1,20 @@
|
||||
page {
|
||||
display: flex;
|
||||
flex-flow: column nowrap;
|
||||
height: 100vh;
|
||||
overflow: hidden;
|
||||
}
|
||||
.shop_main {
|
||||
min-height: 100vh;
|
||||
background-color: #f8f8f8;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
flex-flow: column nowrap;
|
||||
justify-content: space-between;
|
||||
overflow: hidden;
|
||||
height: 100%;
|
||||
.shop_con {
|
||||
// flex: 1;
|
||||
flex: 1 1 auto;
|
||||
box-sizing: border-box;
|
||||
height: calc(100vh - 300px);
|
||||
overflow: hidden;
|
||||
overflow: scroll;
|
||||
}
|
||||
.scroll_view {
|
||||
padding: 0 24px;
|
||||
|
||||
@ -4,15 +4,14 @@ import React, { useCallback, useEffect, useMemo, useRef, useState, useTransition
|
||||
import ProductBlock from '../productBlock'
|
||||
import BottomBtn from '../bottomBtn'
|
||||
import Operation from '../operation'
|
||||
import type { listType } from '../search'
|
||||
import Search from '../search'
|
||||
import NoShop from '../noShop'
|
||||
import RecommendOpen from '../RecommendOpen'
|
||||
import styles from './index.module.scss'
|
||||
import type { listType, saleModeType } from '@/common/enum'
|
||||
import { DelShoppingCartApi, GetProductColorApi, GetShoppingCartV2Api } from '@/api/shopCart'
|
||||
import type { ProductType } from '@/context/ContextShop'
|
||||
import { useCurrenShop } from '@/context/ContextShop'
|
||||
import type { saleModeType } from '@/common/enum'
|
||||
import LoadingCard from '@/components/loadingCard'
|
||||
import { alert, goLink } from '@/common/common'
|
||||
import InfiniteScroll from '@/components/infiniteScroll'
|
||||
@ -25,6 +24,7 @@ import { useSelector } from '@/reducers/hooks'
|
||||
import OrganizationNameModal from '@/components/organizationNameModal'
|
||||
import useLogin from '@/use/useLogin'
|
||||
import { companyDetailApi, companyUpdateApi } from '@/api/company'
|
||||
import MoveBtn from '@/components/moveBtn'
|
||||
|
||||
interface FilterType {
|
||||
abstract_sort_key: -1|1|2|-2
|
||||
@ -93,7 +93,7 @@ export default () => {
|
||||
setFilter(e => ({ ...e, sale_mode: val.value }))
|
||||
}, [])
|
||||
|
||||
const logadingStatus = useMemo(() => {
|
||||
const loadingStatus = useMemo(() => {
|
||||
return shopState.loading || isPending
|
||||
}, [shopState.loading, isPending])
|
||||
|
||||
@ -224,32 +224,32 @@ export default () => {
|
||||
}
|
||||
}, [state.delCommendId])
|
||||
|
||||
return <View className={styles.shop_main}>
|
||||
<View className={styles.shop_header}>
|
||||
<Operation onSelect={onSortChange} onChange={onChangeSetting} />
|
||||
<View className={styles.search_title}>
|
||||
<Search numberObj={modeNumber} defaultIndex={filter.sale_mode} onSelect={getSelect} />
|
||||
return <MoveBtn showList={['order']} customStyles={{ overflow: 'scroll' }}>
|
||||
<View className={styles.shop_main}>
|
||||
<View className={styles.shop_header}>
|
||||
<Operation onSelect={onSortChange} onChange={onChangeSetting} />
|
||||
<View className={styles.search_title}>
|
||||
<Search numberObj={modeNumber} defaultIndex={filter.sale_mode} onSelect={getSelect} />
|
||||
</View>
|
||||
</View>
|
||||
<View className={styles.shop_con}>
|
||||
{loadingStatus && <View className={styles.loading_card}><LoadingCard /></View>}
|
||||
{(!loadingStatus && state.list && state.list.length > 0) && <ScrollView scrollY className={styles.scroll_view}>
|
||||
{state.list?.map(item => (<ProductBlock productItem={item} key={item.product_id} />))}
|
||||
</ScrollView>}
|
||||
{(!loadingStatus && !state.list) && <NoShop />}
|
||||
</View>
|
||||
|
||||
<BottomBtn onSelect={onSelect} model={settingStatus} onBtnClick={onBtnClick} />
|
||||
<View>
|
||||
<BindSalesManDialog ref={bindSalesManDialogRef} onSuccess={handleBindSalesManSuccess} />
|
||||
</View>
|
||||
<View>
|
||||
<OrganizationNameModal showModal={showModal} onClose={handleClose} onShowModalChange={handleShowChange} onConfirm={handleOrganizationNameModalConfirm} />
|
||||
</View>
|
||||
<View>
|
||||
<RecommendOpen shopId={state.recommendId || 0} onShow={!!state.recommendId} onClose={onRecommendClose} submitSuccess={onSubmitSuccess} />
|
||||
</View>
|
||||
</View>
|
||||
<View className={styles.shop_con}>
|
||||
{logadingStatus && <View className={styles.loading_card}><LoadingCard /></View>}
|
||||
{(!logadingStatus && state.list && state.list.length > 0) && <ScrollView scrollY className={styles.scroll_view}>
|
||||
{state.list?.map(item => (<ProductBlock productItem={item} key={item.product_id} />))}
|
||||
<View style={{ height: '100rpx' }}></View>
|
||||
</ScrollView>}
|
||||
{(!logadingStatus && !state.list) && <NoShop />}
|
||||
</View>
|
||||
|
||||
<BottomBtn onSelect={onSelect} model={settingStatus} onBtnClick={onBtnClick} />
|
||||
<View>
|
||||
<BindSalesManDialog ref={bindSalesManDialogRef} onSuccess={handleBindSalesManSuccess} />
|
||||
</View>
|
||||
<View>
|
||||
<OrganizationNameModal showModal={showModal} onClose={handleClose} onShowModalChange={handleShowChange} onConfirm={handleOrganizationNameModalConfirm} />
|
||||
</View>
|
||||
<View>
|
||||
<RecommendOpen shopId={state.recommendId || 0} onShow={!!state.recommendId} onClose={onRecommendClose} submitSuccess={onSubmitSuccess} />
|
||||
</View>
|
||||
<View className="common_safe_area_y"></View>
|
||||
</View>
|
||||
</MoveBtn>
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user