bug(custom): 阿拉伯翻转

This commit is contained in:
zhangjing1
2025-12-04 11:14:11 +08:00
parent 4f5446ffcf
commit e3694ff7c4
54 changed files with 436 additions and 416 deletions

View File

@@ -5,5 +5,26 @@ module.exports = {
defineConstants: {
},
weapp: {},
h5: {}
h5: {},
mini: {
webpackChain: (chain, webpack) => {
chain.merge({
plugin: {
install: {
plugin: require('terser-webpack-plugin'),
args: [
{
terserOptions: {
compress: true, // 默认使用terser压缩
// mangle: false,
keep_classnames: true, // 不改变class名称
keep_fnames: true, // 不改变函数名称
},
},
],
},
},
})
},
},
}

View File

@@ -447,7 +447,7 @@ const SpPage = memo(
return (
<View
className={classNames('sp-page', props.className, { 'rtl-layout': isRTL })}
style={styleNames({ ...state.pageTheme, ...state.lockStyle, ...state.pageBackground })}
style={styleNames({ ...state.pageTheme, ...state.pageBackground })}
ref={wrapRef}
key={lang}
>
@@ -464,39 +464,25 @@ const SpPage = memo(
<View
className='sp-page__body'
style={styleNames({
// 'height': state.lock ? `${state.bodyHeight}px` : '100%',
...state.lockStyle,
'height': `${state.bodyHeight}px`,
'padding-top': `${state.customNavigation && !props.immersive ? state.gNavbarH : 0}px`,
'padding-bottom': props.renderFooter
? Taro.pxTransform(
props.footerHeight + (isIphoneX() ? DEFAULT_SAFE_AREA_HEIGHT : 0)
)
: 0
'padding-bottom': props.renderFooter ? Taro.pxTransform(props.footerHeight + (isIphoneX() ? DEFAULT_SAFE_AREA_HEIGHT : 0) + 80) : Taro.pxTransform(80)
})}
>
<View className='sp-page__body-content' style={styleNames({
'padding-bottom': Taro.pxTransform(80)
})}
>
{props.loading && <View className='sp-page__loading'>
{props.loading && (
<View className='sp-page__loading'>
<SpLoading />
</View>}
<context.Provider value={{}}>{props.children}</context.Provider>
<View className='sp-page__powered-by w-full' style={styleNames({
'position': 'absolute',
'bottom': 0,
'left': 0,
'right': 0,
'z-index': 1000
})}
>
<Text>Powered by</Text>
<Image
src='/assets/imgs/powered-logo.png'
className='powered-logo'
mode='contain'
/>
</View>
)}
<context.Provider value={{}}>{props.children}</context.Provider>
<View className='sp-page__powered-by w-full'>
<Text>Powered by</Text>
<Image
src='/assets/imgs/powered-logo.png'
className='powered-logo'
mode='contain'
/>
</View>
</View>
)}

View File

@@ -42,14 +42,16 @@
justify-content: center;
gap: 10px;
height: 80px;
background: rgba(255, 255, 255, 0);
}
.powered-logo {
width: 120px;
height: 32px;
}
.sp-page__body-content {
height: fit-content;
min-height: 100%;
height: 100%;
box-sizing: border-box;
position: relative;
}
@@ -135,4 +137,4 @@
position: absolute;
}
}
}
}

View File

@@ -2,4 +2,6 @@
* Copyright © ShopeX http://www.shopex.cn. All rights reserved.
* See LICENSE file for license details.
*/
export default {}
export default {
navigationBarTitleText: '分类'
}

View File

@@ -5,7 +5,7 @@
import React, { Component } from 'react'
import Taro, { getCurrentInstance } from '@tarojs/taro'
import { View, ScrollView, Image, Text, Button } from '@tarojs/components'
import { Loading, SpNote } from '@/components'
import { Loading, SpNote, SpPage } from '@/components'
import { classNames, pickBy, getCurrentRoute, isAlipay } from '@/utils'
import { AtTabBar } from 'taro-ui'
import { withPager, withBackToTop } from '@/hocs'
@@ -17,6 +17,7 @@ import './shop-category.scss'
@withBackToTop
export default class DistributionShopCategory extends Component {
$instance = getCurrentInstance()
spPageRef = React.createRef()
constructor(props) {
super(props)
@@ -57,6 +58,7 @@ export default class DistributionShopCategory extends Component {
withShareTicket: true,
menus: ['shareAppMessage', 'shareTimeline']
})
this.spPageRef.current?.pageLock()
const { status } = this.$instance.router.params
const { tabList } = this.state
tabList[0].url += `?status=${status}`
@@ -280,26 +282,12 @@ export default class DistributionShopCategory extends Component {
goodIds
} = this.state
return (
<View className='page-category-index good-category'>
{/* <View className='category-banner'>
<Image
className='banner-img'
src={shop_pic || null}
mode='aspectFill'
/>
</View> */}
<SpPage ref={this.spPageRef} className='page-category-index good-category' renderFooter={<AtTabBar fixed tabList={tabList} onClick={this.handleClick} current={localCurrent} />}>
<View
className={`${
hasSeries && tabList.length !== 0 ? 'category-comps' : 'category-comps-not'
}`}
>
{/* <SeriesItem
isChanged={isChanged}
info={list}
content= {contentList}
defaultId={defaultId}
onClick = {this.handleClickCategory.bind(this)}
/> */}
<View className='category-list'>
<ScrollView className='category-list__nav' scrollY>
<View className='category-nav'>
@@ -381,8 +369,7 @@ export default class DistributionShopCategory extends Component {
</View>
</View>
</View>
<AtTabBar fixed tabList={tabList} onClick={this.handleClick} current={localCurrent} />
</View>
</SpPage>
)
}
}

View File

@@ -2,4 +2,6 @@
* Copyright © ShopeX http://www.shopex.cn. All rights reserved.
* See LICENSE file for license details.
*/
export default {}
export default {
navigationBarTitleText: '推广商品'
}

View File

@@ -20,6 +20,7 @@ import './goods.scss'
@withBackToTop
export default class DistributionGoods extends Component {
$instance = getCurrentInstance()
spPageRef = React.createRef()
constructor(props) {
super(props)
@@ -61,6 +62,7 @@ export default class DistributionGoods extends Component {
menus: ['shareAppMessage', 'shareTimeline']
})
this.firstStatus = true
this.spPageRef.current?.pageLock()
const { status } = this.$instance.router.params
const { tabList } = this.state
tabList[1].url += `?status=${status}`
@@ -376,13 +378,12 @@ export default class DistributionGoods extends Component {
console.log(list)
return (
<View className='page-distribution-shop'>
<SpNavBar title='推广商品' leftIconType='chevron-left' fixed='true' />
<SpPage ref={this.spPageRef} className='page-distribution-shop' renderFooter={<AtTabBar fixed tabList={tabList} onClick={this.handleClick} current={localCurrent} />}>
<SpSearchBar
showDailog={false}
keyword={query ? query.keywords : ''}
onFocus={() => false}
onCancel={() => {}}
onCancel={() => { }}
onChange={this.handleSearchChange}
onClear={this.handleConfirm.bind(this)}
onConfirm={this.handleConfirm.bind(this)}
@@ -424,8 +425,7 @@ export default class DistributionGoods extends Component {
)}
</ScrollView>
<SpToast />
<AtTabBar fixed tabList={tabList} onClick={this.handleClick} current={localCurrent} />
</View>
</SpPage>
)
}
}

View File

@@ -53,7 +53,7 @@
}
}
&__scroll {
@include page-scroll($tabs-height + $navigate-height, $tabbar-height);
height: calc(100% - 140px);
/* #ifdef h5 */
// @include page-scroll(
// $tabs-height + $navigate-height-h5 + $searchbar-height,

View File

@@ -150,7 +150,6 @@ export default class DistributionDashboard extends Component {
}
return (
<SpPage className='page-distribution-index'>
<SpNavBar title='推广管理' leftIconType='chevron-left' />
<View className='header' style={'background: ' + colors.data[0].marketing}>
<View className='view-flex view-flex-middle'>
<Image

View File

@@ -2,4 +2,6 @@
* Copyright © ShopeX http://www.shopex.cn. All rights reserved.
* See LICENSE file for license details.
*/
export default {}
export default {
navigationStyle: 'custom',
}

View File

@@ -5,7 +5,7 @@
import React, { Component } from 'react'
import { View, Text, Navigator } from '@tarojs/components'
import api from '@/api'
import { SpNavBar } from '@/components'
import { SpNavBar, SpPage } from '@/components'
import './point-platform.scss'
@@ -32,8 +32,8 @@ export default class PointPlatform extends Component {
const { info } = this.state
console.log(info)
return (
<View className='page-distribution-statistics'>
<SpNavBar title='推广费' leftIconType='chevron-left' />
<SpPage className='page-distribution-statistics' title='推广费'>
<View className='min-h-full'>
<View className='header content-padded-b'>
<View className='header-top'>
<View className='view-flex view-flex-justify'>
@@ -104,7 +104,8 @@ export default class PointPlatform extends Component {
</View>
</View> */}
</View>
</View>
</View>
</SpPage>
)
}
}

View File

@@ -2,4 +2,6 @@
* Copyright © ShopeX http://www.shopex.cn. All rights reserved.
* See LICENSE file for license details.
*/
export default {}
export default {
navigationBarTitleText: '二维码'
}

View File

@@ -6,7 +6,7 @@ import React, { Component } from 'react'
import Taro, { getCurrentInstance } from '@tarojs/taro'
import { View, Image } from '@tarojs/components'
import { connect } from 'react-redux'
import { SpNavBar } from '@/components'
import { SpPage } from '@/components'
import api from '@/api'
import userIcon from '@/assets/imgs/user-icon.png'
@@ -57,8 +57,8 @@ export default class DistributionQrcode extends Component {
const { info } = this.state
return (
<View className='page-distribution-qrcode' style={'background: ' + colors.data[0].marketing}>
<SpNavBar title='二维码' leftIconType='chevron-left' />
<SpPage className='page-distribution-qrcode' style={'background: ' + colors.data[0].marketing}>
<View className='page-distribution-qrcode-content h-full w-full'>
<View className='qrcode-bg'>
<View className='title'>邀请卡</View>
<Image className='avatar' src={info.avatar || userIcon} mode='aspectFit' />
@@ -69,7 +69,8 @@ export default class DistributionQrcode extends Component {
</View>
<View className='tips'>微信扫一扫或长按识别</View>
</View>
</View>
</View>
</SpPage>
)
}
}

View File

@@ -5,15 +5,15 @@
@import '@/style/imports';
.page-distribution-qrcode {
display: flex;
align-items: center;
justify-content: center;
width: 100vw;
height: 100vh;
/* #ifdef h5 */
box-sizing: border-box;
padding-top: $navigate-height-h5;
/* #endif */
.page-distribution-qrcode-content {
display: flex;
align-items: center;
justify-content: center;
/* #ifdef h5 */
box-sizing: border-box;
padding-top: $navigate-height-h5;
/* #endif */
}
.qrcode-bg {
display: flex;
flex-direction: column;

View File

@@ -2,4 +2,6 @@
* Copyright © ShopeX http://www.shopex.cn. All rights reserved.
* See LICENSE file for license details.
*/
export default {}
export default {
navigationBarTitleText: '会员资料'
}

View File

@@ -4,7 +4,7 @@
*/
import React, { Component } from 'react'
import { View, Text } from '@tarojs/components'
import { SpNavBar } from '@/components'
import { SpPage } from '@/components'
import api from '@/api'
import './setting.scss'
@@ -58,8 +58,8 @@ export default class DistributionSetting extends Component {
const { info, shop_name, isEdit } = this.state
return (
<View className='page-distribution-setting'>
<SpNavBar title='会员资料' leftIconType='chevron-left' />
<SpPage className='page-distribution-setting'>
<View className='min-h-full'>
<View className='content-padded'>会员资料</View>
<View className='section'>
<View className='list'>
@@ -88,7 +88,8 @@ export default class DistributionSetting extends Component {
</View>
</View>
</View>
</View>
</View>
</SpPage>
)
}
}

View File

@@ -5,7 +5,7 @@
import React, { Component } from 'react'
import Taro, { getCurrentInstance } from '@tarojs/taro'
import { View, Text, ScrollView, Picker } from '@tarojs/components'
import { SpToast, Loading, SpNote } from '@/components'
import { SpToast, Loading, SpNote, SpPage } from '@/components'
// import S from '@/spx'
import api from '@/api'
import { withPager, withBackToTop } from '@/hocs'
@@ -92,7 +92,8 @@ export default class DistributionShopAchievement extends Component {
const { list, page, date, scrollTop } = this.state
return (
<View className='page-distribution-shop'>
<SpPage className='page-distribution-shop'>
<View className='h-full'>
<View class='page-header'>
<Picker mode='date' fields='month' onChange={this.handleDateChange}>
{date ? (
@@ -158,8 +159,9 @@ export default class DistributionShopAchievement extends Component {
<SpNote img='trades_empty.png'>暂无数据~</SpNote>
)}
</ScrollView>
</View>
<SpToast />
</View>
</SpPage>
)
}
}

View File

@@ -3,5 +3,5 @@
* See LICENSE file for license details.
*/
export default {
navigationBarTitleText: ''
navigationBarTitleText: '分类'
}

View File

@@ -5,7 +5,7 @@
import React, { Component } from 'react'
import Taro, { getCurrentInstance } from '@tarojs/taro'
import { View, ScrollView, Text, Image } from '@tarojs/components'
import { Loading, SpImg, SpNote, SpNavBar } from '@/components'
import { Loading, SpImg, SpNote, SpNavBar, SpPage } from '@/components'
import { classNames, pickBy, getCurrentRoute } from '@/utils'
import { AtTabBar } from 'taro-ui'
import S from '@/spx'
@@ -221,8 +221,8 @@ export default class DistributionShopCategory extends Component {
this.state
const isHaveLeft = list.length > 0
return (
<View className='page-category-index'>
<SpNavBar title='分类' leftIconType='chevron-left' fixed='true' />
<SpPage className='page-category-index' renderFooter={<AtTabBar fixed tabList={tabList} onClick={this.handleClick} current={localCurrent} />}>
<View className='h-full'>
<View
className={`${
hasSeries && tabList.length !== 0 ? 'category-comps' : 'category-comps-not'
@@ -294,8 +294,8 @@ export default class DistributionShopCategory extends Component {
</View>
</View>
</View>
<AtTabBar fixed tabList={tabList} onClick={this.handleClick} current={localCurrent} />
</View>
</View>
</SpPage>
)
}
}

View File

@@ -16,7 +16,6 @@
.category-comps-not {
box-sizing: border-box;
background: #ffffff;
@include page-scroll(0, $tabbar-height);
}
}
.search-input-fixed {
@@ -43,13 +42,16 @@
box-sizing: border-box;
background: #ffffff;
/* #ifdef weapp */
@include page-scroll(0, $tabbar-height);
height:100%;
// @include page-scroll(0, $tabbar-height);
/* #endif */
/* #ifdef h5 */
@include page-scroll($navigate-height-h5, $tabbar-height);
height:100%;
// @include page-scroll($navigate-height-h5, $tabbar-height);
/* #endif */
}
.shop-category__wrap {
height:100%;
&.all {
.category-list__scroll {
width: 100%;
@@ -57,12 +59,10 @@
}
}
.category-list__scroll {
@include page-scroll($tabs-height + $navigate-height, 0);
height:100%;
/* #ifdef h5 */
@include page-scroll($tabs-height + $navigate-height-h5, 0);
height:100%;
/* #endif */
top: 0;
left: 25vw;
width: 75vw;
}
}

View File

@@ -99,7 +99,7 @@ export default class DistributionShopForm extends Component {
return (
<SpPage className='page-distribution-shop-form'>
<View className='shop-form'>
<View className='shop-form min-h-full box-border'>
{info.key == 'shop_name' && (
<AtInput
type='text'

View File

@@ -5,7 +5,7 @@
import React, { Component } from 'react'
import Taro, { getCurrentInstance } from '@tarojs/taro'
import { View, Text, ScrollView, Image, Button } from '@tarojs/components'
import { SpToast, Loading, SpNote, SpSearchBar } from '@/components'
import { SpToast, Loading, SpNote, SpSearchBar, SpPage } from '@/components'
import S from '@/spx'
import api from '@/api'
import { withPager, withBackToTop } from '@/hocs'
@@ -224,139 +224,141 @@ export default class DistributionShopGoods extends Component {
const { list, goodsIds, page, scrollTop, query } = this.state
return (
<View className='page-distribution-shop'>
<View className='searchBar'>
<SpSearchBar
showDailog={false}
keyword={query ? query.keywords : ''}
onFocus={() => false}
onCancel={() => {}}
onChange={this.handleSearchChange}
onClear={this.handleConfirm.bind(this)}
onConfirm={this.handleConfirm.bind(this)}
/>
</View>
<ScrollView
className='goods-list__scroll'
scrollY
scrollTop={scrollTop}
scrollWithAnimation
onScroll={this.handleScroll}
onScrollToLower={this.nextPage}
>
<View className='goods-list'>
{list.map((item, index) => {
const isRelease = goodsIds.findIndex((n) => item.goods_id == n) !== -1
return (
<View className='shop-goods-item' key={item.goods_id}>
<View className='shop-goods'>
<View className='shop-goods__caption'>
<Image className='shop-goods__thumbnail' src={item.img} mode='aspectFill' />
<View className='view-flex-item'>
<View className='shop-goods__title'>{item.title}</View>
<View className='shop-goods__desc'>{item.desc}</View>
<View className='shop-goods__price'>
<Text className='cur'>¥</Text> {item.price}
<SpPage className='page-distribution-shop'>
<View className='h-full'>
<View className='searchBar'>
<SpSearchBar
showDailog={false}
keyword={query ? query.keywords : ''}
onFocus={() => false}
onCancel={() => { }}
onChange={this.handleSearchChange}
onClear={this.handleConfirm.bind(this)}
onConfirm={this.handleConfirm.bind(this)}
/>
</View>
<ScrollView
className='goods-list__scroll'
scrollY
scrollTop={scrollTop}
scrollWithAnimation
onScroll={this.handleScroll}
onScrollToLower={this.nextPage}
>
<View className='goods-list'>
{list.map((item, index) => {
const isRelease = goodsIds.findIndex((n) => item.goods_id == n) !== -1
return (
<View className='shop-goods-item' key={item.goods_id}>
<View className='shop-goods'>
<View className='shop-goods__caption'>
<Image className='shop-goods__thumbnail' src={item.img} mode='aspectFill' />
<View className='view-flex-item'>
<View className='shop-goods__title'>{item.title}</View>
<View className='shop-goods__desc'>{item.desc}</View>
<View className='shop-goods__price'>
<Text className='cur'>¥</Text> {item.price}
</View>
</View>
<View className='shop-goods__task'>
<View className='shop-goods__task-label'>任务模式</View>
{item.rebate_type === 'total_num' && (
<View className='shop-goods__task-type'>按售出总量</View>
)}
{item.rebate_type === 'total_money' && (
<View className='shop-goods__task-type'>按总销售金额</View>
)}
</View>
</View>
<View className='shop-goods__task'>
<View className='shop-goods__task-label'>任务模式</View>
{item.rebate_type === 'total_num' && (
<View className='shop-goods__task-type'>按售出总量</View>
)}
{item.rebate_type === 'total_money' && (
<View className='shop-goods__task-type'>按总销售金额</View>
)}
</View>
</View>
{!item.view_detail ? (
<View
className='shop-goods__detail'
onClick={this.handleViewDetail.bind(this, index, item.goods_id)}
>
<Text className='icon-search'></Text>
</View>
) : (
<View className='shop-goods__detail'>
<View className='content-bottom-padded view-flex'>
<View className='view-flex-item2'>规格</View>
<View className='view-flex-item'>指标</View>
<View className='view-flex-item'>奖金</View>
{!item.view_detail ? (
<View
className='shop-goods__detail'
onClick={this.handleViewDetail.bind(this, index, item.goods_id)}
>
<Text className='icon-search'></Text>
</View>
{item.details &&
item.details.map((detail, dindex) => (
<View class='shop-goods__detail-item' key={`detail4${dindex}`}>
<View className='shop-goods__detail-skus view-flex-item2'>
{detail.item_spec ? (
detail.item_spec &&
detail.item_spec.map((sku, sindex) => (
<View className='sku-item' key={`sku${sindex}`}>
{sku.spec_image_url && (
<Image
className='sku-img'
src={sku.spec_image_url}
mode='aspectFill'
/>
)}
{sku.spec_custom_value_name || sku.spec_value_name}
</View>
))
) : (
<Text>单规格</Text>
) : (
<View className='shop-goods__detail'>
<View className='content-bottom-padded view-flex'>
<View className='view-flex-item2'>规格</View>
<View className='view-flex-item'>指标</View>
<View className='view-flex-item'>奖金</View>
</View>
{item.details &&
item.details.map((detail, dindex) => (
<View class='shop-goods__detail-item' key={`detail4${dindex}`}>
<View className='shop-goods__detail-skus view-flex-item2'>
{detail.item_spec ? (
detail.item_spec &&
detail.item_spec.map((sku, sindex) => (
<View className='sku-item' key={`sku${sindex}`}>
{sku.spec_image_url && (
<Image
className='sku-img'
src={sku.spec_image_url}
mode='aspectFill'
/>
)}
{sku.spec_custom_value_name || sku.spec_value_name}
</View>
))
) : (
<Text>单规格</Text>
)}
</View>
{detail.task && (
<View className='view-flex-item2'>
{detail.task.map((task, tindex) => (
<View className='view-flex' key={`task${tindex}`}>
<View className='view-flex-item'>{task.filter}</View>
<View className='view-flex-item'>
{task.money && <Text>¥</Text>}
{task.money}
</View>
</View>
))}
</View>
)}
</View>
{detail.task && (
<View className='view-flex-item2'>
{detail.task.map((task, tindex) => (
<View className='view-flex' key={`task${tindex}`}>
<View className='view-flex-item'>{task.filter}</View>
<View className='view-flex-item'>
{task.money && <Text>¥</Text>}
{task.money}
</View>
</View>
))}
</View>
)}
</View>
))}
</View>
)}
</View>
<View className='shop-goods__footer'>
<View
className={classNames(
'shop-goods__footer-item',
!isRelease ? 'unreleased' : null
)}
onClick={this.handleItemRelease.bind(this, item.item_id)}
>
{isRelease ? (
<Text className='icon-moveDown'> 从小店下架</Text>
) : (
<Text className='icon-moveUp'> 上架到小店</Text>
))}
</View>
)}
</View>
<Button
className='shop-goods__footer-item'
dataInfo={item}
openType='share'
size='small'
>
<Text className='icon-share2'> 分享给好友</Text>
</Button>
<View className='shop-goods__footer'>
<View
className={classNames(
'shop-goods__footer-item',
!isRelease ? 'unreleased' : null
)}
onClick={this.handleItemRelease.bind(this, item.item_id)}
>
{isRelease ? (
<Text className='icon-moveDown'> 从小店下架</Text>
) : (
<Text className='icon-moveUp'> 上架到小店</Text>
)}
</View>
<Button
className='shop-goods__footer-item'
dataInfo={item}
openType='share'
size='small'
>
<Text className='icon-share2'> 分享给好友</Text>
</Button>
</View>
</View>
</View>
)
})}
</View>
{page.isLoading ? <Loading>正在加载...</Loading> : null}
{!page.isLoading && !page.hasNext && !list.length && (
<SpNote img='trades_empty.png'>暂无数据~</SpNote>
)}
</ScrollView>
)
})}
</View>
{page.isLoading ? <Loading>正在加载...</Loading> : null}
{!page.isLoading && !page.hasNext && !list.length && (
<SpNote img='trades_empty.png'>暂无数据~</SpNote>
)}
</ScrollView>
</View>
<SpToast />
</View>
</SpPage>
)
}
}

View File

@@ -21,8 +21,9 @@
}
.goods-list {
padding: 10px 30px;
box-sizing: border-box;
&__scroll {
@include page-scroll($searchbar-height + 10, 0);
height: calc(100% - 30PX);
}
.shop-goods-item {
margin-bottom: 30px;

View File

@@ -6,7 +6,7 @@ import React, { Component } from 'react'
import Taro, { getCurrentInstance } from '@tarojs/taro'
import { View, Text, Button, Image, Input } from '@tarojs/components'
import { AtTabBar } from 'taro-ui'
import { BackToTop, Loading, SpNavBar, SpImg, SpNote } from '@/components'
import { BackToTop, Loading, SpNavBar, SpImg, SpNote, SpPage } from '@/components'
import S from '@/spx'
import api from '@/api'
import qs from 'qs'
@@ -466,14 +466,12 @@ export default class DistributionShopHome extends Component {
}
]
if (!info.is_valid) {
return <Loading />
}
// if (!info.is_valid) {
// return <Loading />
// }
return (
<View className='page-distribution-shop'>
<CustomHeader isWhite={paddindTop > 0} isHome={isHome} statusBarHeight={statusBarHeight} />
<SpNavBar title='小店' leftIconType='chevron-left' fixed='true' />
<SpPage className='page-distribution-shop' title='小店' showToTop renderFooter={<AtTabBar fixed tabList={tabList} onClick={this.handleClick} current={localCurrent} />}>
<View className='shop-banner'>
<View className='shop-def'>
<Image
@@ -590,10 +588,8 @@ export default class DistributionShopHome extends Component {
</SpNote>
)}
</View>
<BackToTop show={showBackToTop} onClick={this.scrollBackToTop.bind(this)} />
<AtTabBar fixed tabList={tabList} onClick={this.handleClick} current={localCurrent} />
</View>
{/* <BackToTop show={showBackToTop} onClick={this.scrollBackToTop.bind(this)} /> */}
</SpPage>
)
}
}

View File

@@ -5,7 +5,7 @@
import React, { Component } from 'react'
import Taro, { getCurrentInstance } from '@tarojs/taro'
import { View, Image } from '@tarojs/components'
import { SpCell } from '@/components'
import { SpCell, SpPage } from '@/components'
import api from '@/api'
import './shop-setting.scss'
@@ -48,7 +48,8 @@ export default class DistributionShopSetting extends Component {
const { info } = this.state
return (
<View className='page-distribution-shop-setting'>
<SpPage className='page-distribution-shop-setting'>
<View className='min-h-full'>
<SpCell
title='小店名称'
value={info.shop_name}
@@ -70,7 +71,8 @@ export default class DistributionShopSetting extends Component {
mode='widthFix'
/>
</SpCell>
</View>
</View>
</SpPage>
)
}
}

View File

@@ -4,7 +4,7 @@
*/
import React, { Component } from 'react'
import { View, Text, ScrollView, Image } from '@tarojs/components'
import { SpToast, Loading, SpNote } from '@/components'
import { SpToast, Loading, SpNote, SpPage } from '@/components'
import api from '@/api'
import { withPager, withBackToTop } from '@/hocs'
import { pickBy, formatDateTime } from '@/utils'
@@ -74,7 +74,7 @@ export default class DistributionShopTrade extends Component {
const { list, page, scrollTop } = this.state
return (
<View className='page-distribution-shop'>
<SpPage className='page-distribution-shop'>
<ScrollView
className='trade-list__scroll'
scrollY
@@ -123,7 +123,7 @@ export default class DistributionShopTrade extends Component {
)}
</ScrollView>
<SpToast />
</View>
</SpPage>
)
}
}

View File

@@ -9,7 +9,7 @@
.trade-list {
padding: 24px $edge-margin;
&__scroll {
@include page-scroll(0, 0);
height: 100%;
}
&__item {
&-code {

View File

@@ -107,6 +107,7 @@ export default class DistributionShop extends Component {
return (
<SpPage className='page-distribution-shop'>
<View className='min-h-full'>
<View className='shop-banner' style={'background: ' + colors.data[0].marketing}>
<View className='shop-info'>
<View className='img-content'>
@@ -173,6 +174,7 @@ export default class DistributionShop extends Component {
</View>
</View>
)}
</View>
</SpPage>
)
}

View File

@@ -2,4 +2,6 @@
* Copyright © ShopeX http://www.shopex.cn. All rights reserved.
* See LICENSE file for license details.
*/
export default {}
export default {
navigationBarTitleText: '推广费'
}

View File

@@ -5,7 +5,7 @@
import React, { Component } from 'react'
import { View, Text, Navigator } from '@tarojs/components'
import api from '@/api'
import { SpNavBar } from '@/components'
import { SpNavBar, SpPage } from '@/components'
import { pickBy } from '@/utils'
import './statistics.scss'
@@ -47,8 +47,8 @@ export default class DistributionStatistics extends Component {
const { info } = this.state
return (
<View className='page-distribution-statistics'>
<SpNavBar title='推广费' leftIconType='chevron-left' />
<SpPage className='page-distribution-statistics' >
<View className='min-h-full'>
<View className='header content-padded-b'>
<View className='header-top'>
<View className='view-flex view-flex-justify'>
@@ -130,7 +130,8 @@ export default class DistributionStatistics extends Component {
</View>
</View>
</View>
</View>
</View>
</SpPage>
)
}
}

View File

@@ -2,4 +2,6 @@
* Copyright © ShopeX http://www.shopex.cn. All rights reserved.
* See LICENSE file for license details.
*/
export default {}
export default {
navigationBarTitleText: '我的会员'
}

View File

@@ -5,7 +5,7 @@
import React, { Component } from 'react'
import { View, Text, Image, ScrollView } from '@tarojs/components'
import { AtTabs, AtTabsPane } from 'taro-ui'
import { Loading, SpNote, SpNavBar } from '@/components'
import { Loading, SpNote, SpNavBar, SpPage } from '@/components'
import api from '@/api'
import { withPager } from '@/hocs'
import { classNames, pickBy } from '@/utils'
@@ -89,8 +89,7 @@ export default class DistributionSubordinate extends Component {
const { list, page, curTabIdx, tabList, scrollTop } = this.state
return (
<View className='page-distribution-subordinate'>
<SpNavBar title='我的会员' leftIconType='chevron-left' fixed='true' />
<SpPage className='page-distribution-subordinate'>
<AtTabs
className='client-list__tabs'
current={curTabIdx}
@@ -150,7 +149,7 @@ export default class DistributionSubordinate extends Component {
<SpNote img='trades_empty.png'>暂无数据~</SpNote>
)}
</ScrollView>
</View>
</SpPage>
)
}
}

View File

@@ -6,25 +6,18 @@
.page-distribution-subordinate {
height: 100%;
.client-list__tabs {
/* #ifdef h5 */
top: $navigate-height-h5;
/* #endif */
.at-tabs {
height: 84px;
}
// .client-list__tabs {
// /* #ifdef h5 */
// top: $navigate-height-h5;
// /* #endif */
// }
.subordinate-list__scroll {
@include page-scroll(94px, 0);
height: calc(100vh - #{$tabs-height + $navigate-height});
/* #ifdef h5 */
@include page-scroll($tabs-height + $navigate-height-h5, 0);
height: calc(100vh - #{$tabs-height + $navigate-height-h5});
/* #endif */
}
.list {
min-height: calc(100vh - #{$tabs-height + $navigate-height});
/* #ifdef h5 */
min-height: calc(100vh - #{$tabs-height + $navigate-height-h5});
/* #endif */
height: calc(100% - 84px);
}
.avatar {
width: 70px;
height: 70px;

View File

@@ -6,7 +6,7 @@ import React, { Component } from 'react'
import { getCurrentInstance } from '@tarojs/taro'
import { View, Text, Image, ScrollView } from '@tarojs/components'
import { AtTabs, AtTabsPane } from 'taro-ui'
import { Loading, SpNote, SpNavBar } from '@/components'
import { Loading, SpNote, SpNavBar, SpPage } from '@/components'
import api from '@/api'
import { hasNavbar, pickBy } from '@/utils'
import { withPager, withBackToTop } from '@/hocs'
@@ -93,10 +93,9 @@ export default class DistributionTrade extends Component {
console.log(list)
return (
<View className='page-distribution-trade'>
<SpNavBar title='订单' leftIconType='chevron-left' />
<SpPage className='page-distribution-trade'>
<AtTabs
className={`trade-list__tabs ${hasNavbar && 'trade-list__tabs_web'}`}
className='trade-list__tabs'
current={curTabIdx}
tabList={tabList}
onClick={this.handleClickTab}
@@ -106,7 +105,7 @@ export default class DistributionTrade extends Component {
))}
</AtTabs>
<ScrollView
className={`trade-list__scroll ${hasNavbar && 'trade-list__scroll_web'}`}
className='trade-list__scroll'
scrollY
scrollTop={scrollTop}
onScrollToLower={this.nextPage}
@@ -151,7 +150,7 @@ export default class DistributionTrade extends Component {
<SpNote img='trades_empty.png'>暂无数据~</SpNote>
)}
</ScrollView>
</View>
</SpPage>
)
}
}

View File

@@ -5,20 +5,11 @@
@import '@/style/imports';
.page-distribution-trade {
.trade-list__tabs_web {
// 浏览器(不包含微信浏览器)
margin-top: $navigate-height-h5;
.at-tabs {
height: 84px;
}
.trade-list__scroll {
@include page-scroll($tabs-height + $navigate-height, 0);
/* #ifdef h5 */
@include page-scroll($tabs-height + $navigate-height-h5, 0);
top: 110px;
/* #endif */
}
.trade-list__scroll_web {
// 浏览器(不包含微信浏览器)
top: $tabs-height + $navigate-height-h5 + 30px;
height: calc(100% - 84px);
}
.order-no {
font-size: 30px;

View File

@@ -169,7 +169,18 @@ export default class DistributionWithdraw extends Component {
payText
} = this.state
return (
<SpPage className='page-distribution-withdraw'>
<SpPage className='page-distribution-withdraw' footerHeight={186} renderFooter={
<View className='content-padded'>
<Button
className='g-button'
onClick={this.goWithdraw}
disabled={curIdx == 'wechat' && amount > 800}
>
提现
</Button>
</View>}
>
<View className='min-h-full'>
<View className='withdraw'>
<View className='withdraw-title'>
<View className='title'>可提现金额</View>
@@ -232,14 +243,6 @@ export default class DistributionWithdraw extends Component {
<View className='g-ul-li'>提现申请审核通过后1个工作日后到账节假日顺延</View>
<View className='g-ul-li'>修改银行卡信息请前往实名认证信息进行修改</View>
</View>
<View className='content-padded'>
<Button
className='g-button'
onClick={this.goWithdraw}
disabled={curIdx == 'wechat' && amount > 800}
>
提现
</Button>
</View>
</SpPage>
)

View File

@@ -5,7 +5,7 @@
import React, { Component } from 'react'
import Taro, { getCurrentInstance } from '@tarojs/taro'
import { View, Text, Button } from '@tarojs/components'
import { SpInput as AtInput } from '@/components'
import { SpInput as AtInput, SpPage } from '@/components'
import { showToast } from '@/utils'
import api from '@/api'
@@ -78,8 +78,23 @@ export default class DistributionWithdrawalsAcount extends Component {
console.log('00', hasBind)
return (
<View className='page-distribution-acount'>
<View className='section list message'>
<SpPage className='page-distribution-acount' footerHeight={186} renderFooter={
<>
<View className='content-padded'>
<Button type='primary' onClick={this.handleSubmit}>
确认绑定
</Button>
{/* { !hasBind && <Button type="primary" onClick={this.handleSubmit}>确认绑定</Button> }
{ hasBind && !isEdit && <Button type="primary" onClick={this.handleClick}>修改支付宝账号</Button> }
{ hasBind && isEdit && <Button type="primary" onClick={this.handleSubmit}>确认修改并保存</Button> } */}
</View>
<View className='g-ul'>
<View className='g-ul-li'>请务必准确填写开户人姓名和支付宝账号</View>
{/* <View className="g-ul-li">支持支付宝账户的修改但每天仅限1次</View> */}
</View></>
}
>
<View className='section list message min-h-full'>
<AtInput
className='message-input'
title='开户人姓名'
@@ -148,19 +163,7 @@ export default class DistributionWithdrawalsAcount extends Component {
/>
} */}
</View>
<View className='content-padded'>
<Button type='primary' onClick={this.handleSubmit}>
确认绑定
</Button>
{/* { !hasBind && <Button type="primary" onClick={this.handleSubmit}>确认绑定</Button> }
{ hasBind && !isEdit && <Button type="primary" onClick={this.handleClick}>修改支付宝账号</Button> }
{ hasBind && isEdit && <Button type="primary" onClick={this.handleSubmit}>确认修改并保存</Button> } */}
</View>
<View className='g-ul'>
<View className='g-ul-li'>请务必准确填写开户人姓名和支付宝账号</View>
{/* <View className="g-ul-li">支持支付宝账户的修改但每天仅限1次</View> */}
</View>
</View>
</SpPage>
)
}
}

View File

@@ -5,7 +5,7 @@
import React, { Component } from 'react'
import { View, Text, Icon, ScrollView } from '@tarojs/components'
import { AtTabs, AtTabsPane } from 'taro-ui'
import { BackToTop, Loading, SpNote } from '@/components'
import { BackToTop, Loading, SpNote, SpPage } from '@/components'
import api from '@/api'
import { withPager, withBackToTop } from '@/hocs'
import { classNames, pickBy } from '@/utils'
@@ -80,7 +80,7 @@ export default class DistributionWithdrawalsRecord extends Component {
const { list, page, scrollTop } = this.state
return (
<View className='page-distribution-record'>
<SpPage className='page-distribution-record'>
<ScrollView
className='record-list__scroll'
scrollY
@@ -136,7 +136,7 @@ export default class DistributionWithdrawalsRecord extends Component {
<SpNote img='trades_empty.png'>暂无数据~</SpNote>
)}
</ScrollView>
</View>
</SpPage>
)
}
}

View File

@@ -6,7 +6,7 @@
.page-distribution-record {
.record-list__scroll {
@include page-scroll($tabs-height + $navigate-height, 0);
height: 100%;
}
.status-icon {
display: block;

View File

@@ -5,7 +5,7 @@
import React, { Component } from 'react'
import Taro, { getCurrentInstance } from '@tarojs/taro'
import { View } from '@tarojs/components'
import { Loading } from '@/components'
import { Loading, SpPage } from '@/components'
import api from '@/api'
import S from '@/spx'
import { normalizeQuerys, getAppId } from '@/utils'
@@ -107,12 +107,13 @@ export default class AuthLogin extends Component {
const { showAuth } = this.state
const user = Taro.getStorageSync('userinfo')
if (!showAuth) {
return <Loading />
}
// if (!showAuth) {
// return <Loading />
// }
return (
<View className='authLogin'>
<SpPage className='authLogin' loading={!showAuth}>
<View className='min-h-full'>
<View className='welcome'>尊敬的{user.username}</View>
<View className='content'>您即将在门店大屏登录并在门店进行购物请您确认是否登录</View>
<View className='btnGroup'>
@@ -123,7 +124,8 @@ export default class AuthLogin extends Component {
取消
</View>
</View>
</View>
</View>
</SpPage>
)
}
}

View File

@@ -2,4 +2,6 @@
* Copyright © ShopeX http://www.shopex.cn. All rights reserved.
* See LICENSE file for license details.
*/
export default {}
export default {
navigationBarTitleText: '线下订单关联'
}

View File

@@ -8,7 +8,7 @@ import { View, Input, Image } from '@tarojs/components'
import { AtModal, AtModalContent, AtModalAction } from 'taro-ui'
import { connect } from 'react-redux'
import api from '@/api'
import { SpNavBar } from '@/components'
import { SpNavBar, SpPage } from '@/components'
import './index.scss'
@@ -83,7 +83,7 @@ export default class BindOrder extends Component {
title: '关联成功,请至订单列表查看',
icon: 'none'
})
} catch (e) {}
} catch (e) { }
}
render() {
@@ -91,39 +91,7 @@ export default class BindOrder extends Component {
const { colors } = this.props
return (
<View className='bindOrder'>
<SpNavBar title='线下订单关联' leftIconType='chevron-left' fixed='true' />
<View className='barCode'>
<View className='line'>
请输入或者扫码录入订单号
<View className='iconfont icon-info' onClick={this.showTips.bind(this, 1)}></View>
</View>
<View className='input'>
<Input
className='text'
value={barCode}
type='text'
placeholder='订单号'
onInput={this.inputChange.bind(this, 'barCode')}
/>
<View className='iconfont icon-scan' onClick={this.scanCode.bind(this)}></View>
</View>
</View>
<View className='barCode'>
<View className='line'>
请输入订单随机码
<View className='iconfont icon-info' onClick={this.showTips.bind(this, 0)}></View>
</View>
<View className='input'>
<Input
className='text'
value={randomCode}
type='text'
placeholder='随机码'
onInput={this.inputChange.bind(this, 'randomCode')}
/>
</View>
</View>
<SpPage className='bindOrder' renderFooter={
<View
className='btn'
style={`background: ${colors.data[0].primary}`}
@@ -131,22 +99,57 @@ export default class BindOrder extends Component {
>
关联
</View>
<AtModal isOpened={showModal} className='tipsModal' onClose={this.hideModal.bind(this)}>
<AtModalContent>
{tips}
<Image src={tipImg} className='img' mode='aspectFit' />
</AtModalContent>
<AtModalAction>
<View
className='confirm'
onClick={this.hideModal.bind(this)}
style={`background: ${colors.data[0].primary}`}
>
确认
}
>
<View className='min-h-full bind-order-content'>
<View className='barCode'>
<View className='line'>
请输入或者扫码录入订单号
<View className='iconfont icon-info' onClick={this.showTips.bind(this, 1)}></View>
</View>
</AtModalAction>
</AtModal>
</View>
<View className='input'>
<Input
className='text'
value={barCode}
type='text'
placeholder='订单号'
onInput={this.inputChange.bind(this, 'barCode')}
/>
<View className='iconfont icon-scan' onClick={this.scanCode.bind(this)}></View>
</View>
</View>
<View className='barCode'>
<View className='line'>
请输入订单随机码
<View className='iconfont icon-info' onClick={this.showTips.bind(this, 0)}></View>
</View>
<View className='input'>
<Input
className='text'
value={randomCode}
type='text'
placeholder='随机码'
onInput={this.inputChange.bind(this, 'randomCode')}
/>
</View>
</View>
<AtModal isOpened={showModal} className='tipsModal' onClose={this.hideModal.bind(this)}>
<AtModalContent>
{tips}
<Image src={tipImg} className='img' mode='aspectFit' />
</AtModalContent>
<AtModalAction>
<View
className='confirm'
onClick={this.hideModal.bind(this)}
style={`background: ${colors.data[0].primary}`}
>
确认
</View>
</AtModalAction>
</AtModal>
</View>
</SpPage>
)
}
}

View File

@@ -9,48 +9,61 @@
height: 100vh;
background: #fff;
box-sizing: border-box;
padding-top: 20px;
/* #ifdef h5 */
padding-top: $navigate-height-h5;
/* #endif */
.bind-order-content {
box-sizing: border-box;
padding-top: 20px;
/* #ifdef h5 */
padding-top: $navigate-height-h5;
/* #endif */
}
.barCode {
width: 80%;
margin: 0 auto;
.input,
.line {
display: flex;
align-items: center;
.text {
flex: 1;
}
.iconfont {
font-size: 42px;
color: #149bd5;
}
}
.line {
padding: 20px 0;
justify-content: space-between;
.iconfont {
font-size: 38px;
}
}
}
.btn {
width: 50%;
margin: 60px auto 0 auto;
margin: auto;
text-align: center;
height: 80px;
line-height: 80px;
color: #fff;
border-radius: 10px;
}
.tipsModal {
.img {
width: 80%;
margin: 20px auto;
display: block;
}
.confirm {
width: 100%;
height: 80px;
@@ -59,4 +72,4 @@
text-align: center;
}
}
}
}

View File

@@ -53,11 +53,13 @@
.category-comps {
box-sizing: border-box;
background: #ffffff;
@include page-scroll($tabs-height + 16px, $tabbar-height);
position: static!important;
height: 100%;
}
.category-comps-not {
box-sizing: border-box;
background: #ffffff;
@include page-scroll(0, $tabbar-height);
position: static!important;
height: 100%;
}
}

View File

@@ -45,10 +45,10 @@ function StoreItemList(props) {
}
return (
<SpPage>
<>
{state.layout === 1 && <CompsAddPurchase />}
{state.layout === 2 && <CompsCategoryNew />}
</SpPage>
</>
)
}

View File

@@ -2,8 +2,4 @@
* Copyright © ShopeX http://www.shopex.cn. All rights reserved.
* See LICENSE file for license details.
*/
.page-index {
.home-body {
height: 100%;
}
}

View File

@@ -289,8 +289,8 @@ function Home() {
})
}}
>
<ScrollView
className={classNames('home-body', {
<View
className={classNames('home-body min-h-full', {
'has-home-header': isShowHomeHeader && isWeixin
})}
scrollY
@@ -316,7 +316,7 @@ function Home() {
</HomeWgts>
</WgtsContext.Provider>
)}
</ScrollView>
</View>
{/* 小程序收藏提示 */}
{isWeixin && <MCompAddTip />}

View File

@@ -55,7 +55,9 @@ $search-wrap-height: 90px;
}
}
}
.item-list-scroll{
min-height: calc(100% - 322px);
}
.list-scroll-container {
height: calc(100% - #{$search-wrap-height});
}

View File

@@ -2,13 +2,11 @@
* Copyright © ShopeX http://www.shopex.cn. All rights reserved.
* See LICENSE file for license details.
*/
.comp-tabbar {
.at-badge__num {
background-color: var(--color-dianwu-primary);
}
.at-badge__num {
background-color: var(--color-dianwu-primary);
}
&.at-tab-bar {
height: 100%;
position: absolute;
}
.at-tab-bar {
height: 100%;
position: absolute;
}

View File

@@ -148,3 +148,6 @@
.opacity-0 {
opacity: 0;
}
.min-h-full {
min-height: 100%;
}

View File

@@ -12,10 +12,6 @@ view.rtl-layout {
direction: rtl;
text-align: right;
// 确保所有子元素也应用 RTL
> * {
direction: rtl;
}
.text-left {
text-align: right;
@@ -34,7 +30,7 @@ view.rtl-layout {
}
// Fix Taro UI icons if needed (example)
.at-icon-chevron-right,.icon-arrowRight,.icon-arrowRight-img {
.at-icon-chevron-right,.icon-arrowRight,.icon-arrowRight-img,.icon-qianwang-01 {
transform: rotate(180deg);
}

View File

@@ -232,7 +232,7 @@ function UgcIndex() {
onConfirm={handleConfirm}
/>
<View>
<>
<SpTagBar
className='ugc-tag'
list={tagsList}
@@ -274,7 +274,7 @@ function UgcIndex() {
</View>
</View>
</SpScrollView>
</View>
</>
</SpPage>
)
}

View File

@@ -22,6 +22,9 @@
}
}
}
.list-scroll{
min-height: calc(100% - 402px);
}
.ugc-tag {
&.sp-tag-bar {

View File

@@ -453,16 +453,10 @@ function MemberIndex(props) {
className='pages-member-index'
immersive={state.pageData?.base?.isImmersive}
pageConfig={state.pageData?.base || {}}
renderFooter={<SpTabbar height={state.footerHeight} />}
renderFooter={<SpTabbar />}
title='会员中心'
onReady={({ footerHeight }) => {
setState((draft) => {
draft.footerHeight = footerHeight
})
console.log('onReady', footerHeight)
}}
>
<View className='user-info-card-wrapper' style={{ paddingBottom: state.footerHeight }}>
<View className='user-info-card-wrapper'>
<View
className='header-block'
style={userInfo?.gradeInfo?.grade_background ? memberBckStyle : {}}