🎈 perf(下单返现): BD标识下隐藏活动栏
This commit is contained in:
parent
89fc49b297
commit
eea90ce2ac
@ -54,6 +54,7 @@ export const HOME_ITEM1 = getCDNSource('/mall/home_item1.png')
|
|||||||
export const HOME_ITEM2 = getCDNSource('/mall/home_item2.png')
|
export const HOME_ITEM2 = getCDNSource('/mall/home_item2.png')
|
||||||
export const HOME_ITEM3 = getCDNSource('/mall/home_item3.png')
|
export const HOME_ITEM3 = getCDNSource('/mall/home_item3.png')
|
||||||
export const HOME_ITEM4 = getCDNSource('/mall/home_item4.png')
|
export const HOME_ITEM4 = getCDNSource('/mall/home_item4.png')
|
||||||
|
export const BUSINESS_MANAGER = getCDNSource('/color_card/businessManager.png')
|
||||||
|
|
||||||
// 场景值
|
// 场景值
|
||||||
export const SCENE = {
|
export const SCENE = {
|
||||||
|
|||||||
3
src/components/InputX/index.module.scss
Normal file
3
src/components/InputX/index.module.scss
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
.input_bar {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
@ -1,6 +1,8 @@
|
|||||||
import { CustomWrapper, Input, View } from '@tarojs/components'
|
import { CustomWrapper, Input, View } from '@tarojs/components'
|
||||||
|
import classNames from 'classnames'
|
||||||
import type { FC } from 'react'
|
import type { FC } from 'react'
|
||||||
import React from 'react'
|
import React from 'react'
|
||||||
|
import styes from './index.module.scss'
|
||||||
// 解决 input 组件输入过快会出现闪烁的问题
|
// 解决 input 组件输入过快会出现闪烁的问题
|
||||||
// https://github.com/NervJS/taro/issues/9664
|
// https://github.com/NervJS/taro/issues/9664
|
||||||
interface PropsType {
|
interface PropsType {
|
||||||
@ -13,7 +15,7 @@ interface PropsType {
|
|||||||
const InputX: FC<PropsType> = (props) => {
|
const InputX: FC<PropsType> = (props) => {
|
||||||
const { customClassName, customStyle, customInputStyle, customInputClassName, ...inputProps } = props
|
const { customClassName, customStyle, customInputStyle, customInputClassName, ...inputProps } = props
|
||||||
return (
|
return (
|
||||||
<View className={customClassName} style={customStyle}>
|
<View className={classNames(styes.input_bar, customClassName)} style={customStyle}>
|
||||||
<CustomWrapper>
|
<CustomWrapper>
|
||||||
<Input className={customInputClassName} style={customInputStyle} {...inputProps} ></Input>
|
<Input className={customInputClassName} style={customInputStyle} {...inputProps} ></Input>
|
||||||
</CustomWrapper>
|
</CustomWrapper>
|
||||||
|
|||||||
@ -2,6 +2,7 @@ import { CustomWrapper, Input, View } from '@tarojs/components'
|
|||||||
import { memo, useEffect, useMemo, useRef, useState } from 'react'
|
import { memo, useEffect, useMemo, useRef, useState } from 'react'
|
||||||
import Big from 'big.js'
|
import Big from 'big.js'
|
||||||
import IconFont from '../iconfont/iconfont'
|
import IconFont from '../iconfont/iconfont'
|
||||||
|
import InputX from '../InputX'
|
||||||
import styles from './index.module.scss'
|
import styles from './index.module.scss'
|
||||||
|
|
||||||
interface params {
|
interface params {
|
||||||
|
|||||||
@ -126,7 +126,7 @@ const MoveBtn = ({ orderObj = {}, children = null, onShopClick, showList = [], m
|
|||||||
x="630rpx"
|
x="630rpx"
|
||||||
y={`${screenHeight.customer}rpx`}
|
y={`${screenHeight.customer}rpx`}
|
||||||
>
|
>
|
||||||
<Image mode="aspectFit" src={formatImgUrl('/color_card/businessManager.png')} />
|
<Image mode="aspectFit" src={formatImgUrl('/mall/float_button_customer_service.png')} />
|
||||||
</MovableView>}
|
</MovableView>}
|
||||||
{showCode && <CodeSelect orderObj={orderObj} y={screenHeight.code as number} />}
|
{showCode && <CodeSelect orderObj={orderObj} y={screenHeight.code as number} />}
|
||||||
<Customer messageTitle={messageTitle} messagePath={messageTitle} show={customer_service_show} showCard={showCart} onClose={customerClose} />
|
<Customer messageTitle={messageTitle} messagePath={messageTitle} show={customer_service_show} showCard={showCart} onClose={customerClose} />
|
||||||
|
|||||||
@ -13,7 +13,8 @@
|
|||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
input {
|
.input_bar {
|
||||||
|
overflow: hidden;
|
||||||
font-size: 27px;
|
font-size: 27px;
|
||||||
background: #f6f7f9;
|
background: #f6f7f9;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
|
|||||||
@ -1,6 +1,7 @@
|
|||||||
import { Input, View } from '@tarojs/components'
|
import { Input, View } from '@tarojs/components'
|
||||||
import classnames from 'classnames'
|
import classnames from 'classnames'
|
||||||
import { forwardRef, memo, useEffect, useImperativeHandle, useRef, useState } from 'react'
|
import { forwardRef, memo, useEffect, useImperativeHandle, useRef, useState } from 'react'
|
||||||
|
import InputX from '../InputX'
|
||||||
import styles from './index.module.scss'
|
import styles from './index.module.scss'
|
||||||
import CloseBtn from '@/components/closeBtn'
|
import CloseBtn from '@/components/closeBtn'
|
||||||
import { debounce } from '@/common/util'
|
import { debounce } from '@/common/util'
|
||||||
@ -80,18 +81,18 @@ const Search = (
|
|||||||
)}
|
)}
|
||||||
></View>
|
></View>
|
||||||
)}
|
)}
|
||||||
<Input
|
<InputX
|
||||||
style={{ borderRadius }}
|
customInputStyle={{ borderRadius }}
|
||||||
alwaysEmbed
|
alwaysEmbed
|
||||||
cursorSpacing={150}
|
cursorSpacing={150}
|
||||||
placeholderStyle="color:#ABABAB; font-size:26rpx"
|
placeholderStyle="color:#ABABAB; font-size:26rpx"
|
||||||
onConfirm={onSearch}
|
onConfirm={onSearch}
|
||||||
className={classnames(placeIcon == 'out' && styles.input_out)}
|
customInputClassName={classnames(styles.input_bar, placeIcon == 'out' && styles.input_out)}
|
||||||
disabled={disabled}
|
disabled={disabled}
|
||||||
value={inputCon}
|
value={inputCon}
|
||||||
placeholder={placeholder}
|
placeholder={placeholder}
|
||||||
onInput={e => onInputEven(e)}
|
onInput={e => onInputEven(e)}
|
||||||
></Input>
|
/>
|
||||||
{!!inputCon && (
|
{!!inputCon && (
|
||||||
<View className={styles.search_closeBtn}>
|
<View className={styles.search_closeBtn}>
|
||||||
<CloseBtn onClose={() => clearInput()} styleObj={{ width: '20rpx', height: '20rpx', border: '0' }} />
|
<CloseBtn onClose={() => clearInput()} styleObj={{ width: '20rpx', height: '20rpx', border: '0' }} />
|
||||||
|
|||||||
@ -3,7 +3,7 @@
|
|||||||
width: 100%;
|
width: 100%;
|
||||||
position: relative;
|
position: relative;
|
||||||
.swiper_item {
|
.swiper_item {
|
||||||
height: 100%;
|
height: 450px;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
}
|
}
|
||||||
.image_item {
|
.image_item {
|
||||||
|
|||||||
@ -1,172 +1,189 @@
|
|||||||
|
page {
|
||||||
|
height: 100vh;
|
||||||
|
display: flex;
|
||||||
|
flex-flow: column nowrap;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
.main {
|
.main {
|
||||||
min-height: 100%;
|
|
||||||
background-color: $color_bg_one;
|
background-color: $color_bg_one;
|
||||||
padding: 20px 20px 100px 20px;
|
display: flex;
|
||||||
.product_header {
|
height: 100%;
|
||||||
padding: 20px 20px 0 20px;
|
flex-flow: column nowrap;
|
||||||
|
overflow: hidden;
|
||||||
|
.content {
|
||||||
|
flex: 1 1 auto;
|
||||||
|
overflow: scroll;
|
||||||
display: flex;
|
display: flex;
|
||||||
height: 163.57px;
|
flex-flow: column nowrap;
|
||||||
background-color: #fff;
|
.product_header {
|
||||||
box-sizing: border-box;
|
margin: 20px;
|
||||||
border-radius: 20px;
|
margin-bottom: 0;
|
||||||
.title {
|
padding: 20px 20px 0 20px;
|
||||||
flex: 1;
|
|
||||||
.name {
|
|
||||||
font-size: 32px;
|
|
||||||
font-weight: 700;
|
|
||||||
color: $color_font_one;
|
|
||||||
@include common_ellipsis(1);
|
|
||||||
}
|
|
||||||
.des {
|
|
||||||
font-size: $font_size_medium;
|
|
||||||
color: $color_font_three;
|
|
||||||
@include common_ellipsis(1);
|
|
||||||
margin-top: 20px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
.share,
|
|
||||||
.collect {
|
|
||||||
width: 76px;
|
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-flow: column nowrap;
|
height: 163.57px;
|
||||||
align-items: center;
|
background-color: #fff;
|
||||||
font-size: $font_size_min;
|
box-sizing: border-box;
|
||||||
text-align: center;
|
border-radius: 20px;
|
||||||
color: $color_font_three;
|
|
||||||
position: relative;
|
|
||||||
margin-left: 10px;
|
|
||||||
.text {
|
|
||||||
margin-top: 5px;
|
|
||||||
font-size: $font_size_medium;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
.shareBtn {
|
|
||||||
position: absolute;
|
|
||||||
top: 0;
|
|
||||||
left: 0;
|
|
||||||
width: 100%;
|
|
||||||
height: 100%;
|
|
||||||
opacity: 0;
|
|
||||||
}
|
|
||||||
.miconfont {
|
|
||||||
font-size: 45px;
|
|
||||||
color: #333333;
|
|
||||||
}
|
|
||||||
.collected {
|
|
||||||
color: #ffc300;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
.des_data {
|
|
||||||
background-color: #fff;
|
|
||||||
padding: 24px;
|
|
||||||
margin-top: 16px;
|
|
||||||
border-radius: 16px;
|
|
||||||
.flexBox {
|
|
||||||
display: flex;
|
|
||||||
justify-content: space-between;
|
|
||||||
align-items: center;
|
|
||||||
margin-bottom: 20px;
|
|
||||||
.title {
|
.title {
|
||||||
font-size: $font_size;
|
flex: 1;
|
||||||
font-weight: 500;
|
.name {
|
||||||
color: $color_font_one;
|
font-size: 32px;
|
||||||
}
|
font-weight: 700;
|
||||||
.flexRight {
|
color: $color_font_one;
|
||||||
font-size: 26px;
|
|
||||||
font-weight: 500;
|
|
||||||
color: #337fff;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.con {
|
|
||||||
display: grid;
|
|
||||||
grid-template-columns: 50% 50%;
|
|
||||||
grid-template-rows: auto auto auto;
|
|
||||||
grid-template-areas: 'a b' 'c d' 'e f';
|
|
||||||
font-size: $font_size_medium;
|
|
||||||
color: $color_font_three;
|
|
||||||
background-color: rgba(247, 247, 247, 0.6);
|
|
||||||
border-radius: 8px;
|
|
||||||
padding: 24px;
|
|
||||||
padding-bottom: 0;
|
|
||||||
color: rgba(0, 0, 0, 0.4);
|
|
||||||
.des_text {
|
|
||||||
display: flex;
|
|
||||||
margin-bottom: 24px;
|
|
||||||
font-size: 26px;
|
|
||||||
&:nth-child(5) {
|
|
||||||
grid-area: e;
|
|
||||||
}
|
|
||||||
text {
|
|
||||||
flex: 1;
|
|
||||||
color: #333333;
|
|
||||||
@include common_ellipsis(1);
|
@include common_ellipsis(1);
|
||||||
}
|
}
|
||||||
|
.des {
|
||||||
|
font-size: $font_size_medium;
|
||||||
|
color: $color_font_three;
|
||||||
|
@include common_ellipsis(1);
|
||||||
|
margin-top: 20px;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
.share,
|
||||||
}
|
.collect {
|
||||||
|
width: 76px;
|
||||||
.product_color {
|
|
||||||
background-color: #fff;
|
|
||||||
margin-top: 16px;
|
|
||||||
padding: 30px 20px 0;
|
|
||||||
color: $color_font_one;
|
|
||||||
font-size: $font_size_medium;
|
|
||||||
border-radius: 20px;
|
|
||||||
.title {
|
|
||||||
color: rgba(0, 0, 0, 0.8);
|
|
||||||
font-weight: 500;
|
|
||||||
font-size: 28px;
|
|
||||||
}
|
|
||||||
.list {
|
|
||||||
margin-top: 30px;
|
|
||||||
display: grid;
|
|
||||||
grid-template-columns: 25% 25% 25% 25%;
|
|
||||||
justify-content: space-between;
|
|
||||||
.item {
|
|
||||||
width: 100%;
|
|
||||||
margin-bottom: 28px;
|
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-flow: column nowrap;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
padding: 0 10px;
|
font-size: $font_size_min;
|
||||||
box-sizing: border-box;
|
text-align: center;
|
||||||
.item_color {
|
color: $color_font_three;
|
||||||
width: 136px;
|
position: relative;
|
||||||
height: 136px;
|
margin-left: 10px;
|
||||||
border-radius: 50%;
|
.text {
|
||||||
|
margin-top: 5px;
|
||||||
|
font-size: $font_size_medium;
|
||||||
}
|
}
|
||||||
.item_name {
|
}
|
||||||
text-align: center;
|
.shareBtn {
|
||||||
margin-top: 10px;
|
position: absolute;
|
||||||
font-size: 24px;
|
top: 0;
|
||||||
color: #666666;
|
left: 0;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
opacity: 0;
|
||||||
|
}
|
||||||
|
.miconfont {
|
||||||
|
font-size: 45px;
|
||||||
|
color: #333333;
|
||||||
|
}
|
||||||
|
.collected {
|
||||||
|
color: #ffc300;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.des_data {
|
||||||
|
margin: 20px;
|
||||||
|
margin-bottom: 0;
|
||||||
|
background-color: #fff;
|
||||||
|
padding: 24px;
|
||||||
|
border-radius: 16px;
|
||||||
|
.flexBox {
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
align-items: center;
|
||||||
|
margin-bottom: 20px;
|
||||||
|
.title {
|
||||||
|
font-size: $font_size;
|
||||||
|
font-weight: 500;
|
||||||
|
color: $color_font_one;
|
||||||
|
}
|
||||||
|
.flexRight {
|
||||||
|
font-size: 26px;
|
||||||
|
font-weight: 500;
|
||||||
|
color: #337fff;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@include common_ellipsis;
|
.con {
|
||||||
}
|
display: grid;
|
||||||
.bulk_price {
|
grid-template-columns: 50% 50%;
|
||||||
color: #999999;
|
grid-template-rows: auto auto auto;
|
||||||
font-size: 24px;
|
grid-template-areas: 'a b' 'c d' 'e f';
|
||||||
margin-top: 8px;
|
font-size: $font_size_medium;
|
||||||
text-align: center;
|
color: $color_font_three;
|
||||||
|
background-color: rgba(247, 247, 247, 0.6);
|
||||||
|
border-radius: 8px;
|
||||||
|
padding: 24px;
|
||||||
|
padding-bottom: 0;
|
||||||
|
color: rgba(0, 0, 0, 0.4);
|
||||||
|
.des_text {
|
||||||
|
display: flex;
|
||||||
|
margin-bottom: 24px;
|
||||||
|
font-size: 26px;
|
||||||
|
&:nth-child(5) {
|
||||||
|
grid-area: e;
|
||||||
|
}
|
||||||
|
text {
|
||||||
|
flex: 1;
|
||||||
|
color: #333333;
|
||||||
|
@include common_ellipsis(1);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
.product_detail {
|
.product_color {
|
||||||
// padding: 20px;
|
margin: 20px;
|
||||||
background-color: #fff;
|
background-color: #fff;
|
||||||
margin-top: 16px;
|
padding: 30px 20px 0;
|
||||||
|
color: $color_font_one;
|
||||||
|
font-size: $font_size_medium;
|
||||||
|
border-radius: 20px;
|
||||||
|
.title {
|
||||||
|
color: rgba(0, 0, 0, 0.8);
|
||||||
|
font-weight: 500;
|
||||||
|
font-size: 28px;
|
||||||
|
}
|
||||||
|
.list {
|
||||||
|
margin-top: 30px;
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: 25% 25% 25% 25%;
|
||||||
|
justify-content: space-between;
|
||||||
|
.item {
|
||||||
|
width: 100%;
|
||||||
|
margin-bottom: 28px;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: center;
|
||||||
|
padding: 0 10px;
|
||||||
|
box-sizing: border-box;
|
||||||
|
.item_color {
|
||||||
|
width: 136px;
|
||||||
|
height: 136px;
|
||||||
|
border-radius: 50%;
|
||||||
|
}
|
||||||
|
.item_name {
|
||||||
|
text-align: center;
|
||||||
|
margin-top: 10px;
|
||||||
|
font-size: 24px;
|
||||||
|
color: #666666;
|
||||||
|
|
||||||
|
@include common_ellipsis;
|
||||||
|
}
|
||||||
|
.bulk_price {
|
||||||
|
color: #999999;
|
||||||
|
font-size: 24px;
|
||||||
|
margin-top: 8px;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.product_detail {
|
||||||
|
// padding: 20px;
|
||||||
|
background-color: #fff;
|
||||||
|
margin: 20px;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
.product_buy {
|
.product_buy {
|
||||||
|
position: relative;
|
||||||
|
z-index: 9999;
|
||||||
display: flex;
|
display: flex;
|
||||||
justify-content: space-between;
|
justify-content: space-between;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
height: 95px;
|
padding: 20px;
|
||||||
|
box-shadow: 6px 0px 12px 0px rgba(0, 0, 0, 0.16);
|
||||||
width: 100vw;
|
width: 100vw;
|
||||||
position: fixed;
|
|
||||||
bottom: 0;
|
|
||||||
left: 0;
|
|
||||||
background-color: #fff;
|
background-color: #fff;
|
||||||
padding-bottom: constant(safe-area-inset-bottom);
|
padding-bottom: constant(safe-area-inset-bottom);
|
||||||
padding-bottom: env(safe-area-inset-bottom);
|
padding-bottom: env(safe-area-inset-bottom);
|
||||||
|
|||||||
@ -277,86 +277,92 @@ const Details = (props: Params) => {
|
|||||||
return (
|
return (
|
||||||
<MoveBtn showList={['order']}>
|
<MoveBtn showList={['order']}>
|
||||||
<View className={styles.main}>
|
<View className={styles.main}>
|
||||||
<DesSwiper list={productInfo.texture_url ? productInfo.texture_url.toString().split(',') : []} />
|
<View className={styles.content}>
|
||||||
<View className={styles.product_header}>
|
<DesSwiper list={productInfo.texture_url ? productInfo.texture_url.toString().split(',') : []} />
|
||||||
<View className={styles.title}>
|
<View className={styles.product_header}>
|
||||||
{productInfo.code && <View className={styles.name}>{productName}</View>}
|
<View className={styles.title}>
|
||||||
<View className={styles.des}>{productInfo.describe}</View>
|
{productInfo.code && <View className={styles.name}>{productName}</View>}
|
||||||
|
<View className={styles.des}>{productInfo.describe}</View>
|
||||||
|
</View>
|
||||||
|
<View className={styles.collect} onClick={openCollection}>
|
||||||
|
{
|
||||||
|
collectStatus ? <IconFont name="icon-shoucangchenggong" size={45} color="#ffc300"></IconFont> : <IconFont name="icon-dianjishoucang" size={45}></IconFont>
|
||||||
|
}
|
||||||
|
<View className={styles.text}>收藏</View>
|
||||||
|
</View>
|
||||||
|
<View className={styles.share}>
|
||||||
|
<IconFont name="icon-fenxiangshangpin" size={45}></IconFont>
|
||||||
|
<View className={styles.text}>分享</View>
|
||||||
|
<Button open-type="share" className={styles.shareBtn}></Button>
|
||||||
|
</View>
|
||||||
</View>
|
</View>
|
||||||
<View className={styles.collect} onClick={openCollection}>
|
<View className={styles.des_data}>
|
||||||
{
|
<View className={styles.flexBox}>
|
||||||
collectStatus ? <IconFont name="icon-shoucangchenggong" size={45} color="#ffc300"></IconFont> : <IconFont name="icon-dianjishoucang" size={45}></IconFont>
|
<View className={styles.title}>商品参数</View>
|
||||||
}
|
{
|
||||||
<View className={styles.text}>收藏</View>
|
productInfo.is_instruct && <View className={styles.flexRight} onClick={() => setshowPopup(true)}>{'特色百科 >'}</View>
|
||||||
</View>
|
}
|
||||||
<View className={styles.share}>
|
</View>
|
||||||
<IconFont name="icon-fenxiangshangpin" size={45}></IconFont>
|
<View className={styles.con}>
|
||||||
<View className={styles.text}>分享</View>
|
{/* <View className={styles.des_text}>
|
||||||
<Button open-type="share" className={styles.shareBtn}></Button>
|
|
||||||
</View>
|
|
||||||
</View>
|
|
||||||
<View className={styles.des_data}>
|
|
||||||
<View className={styles.flexBox}>
|
|
||||||
<View className={styles.title}>商品参数</View>
|
|
||||||
{
|
|
||||||
productInfo.is_instruct && <View className={styles.flexRight} onClick={() => setshowPopup(true)}>{'特色百科 >'}</View>
|
|
||||||
}
|
|
||||||
</View>
|
|
||||||
<View className={styles.con}>
|
|
||||||
{/* <View className={styles.des_text}>
|
|
||||||
编号:<Text>{productInfo.code}</Text>
|
编号:<Text>{productInfo.code}</Text>
|
||||||
</View> */}
|
</View> */}
|
||||||
<View className={styles.des_text}>
|
<View className={styles.des_text}>
|
||||||
幅宽:<Text>{productInfo.width}</Text>
|
幅宽:<Text>{productInfo.width}</Text>
|
||||||
</View>
|
</View>
|
||||||
<View className={styles.des_text}>
|
<View className={styles.des_text}>
|
||||||
工艺:<Text>{productInfo.craft}</Text>
|
工艺:<Text>{productInfo.craft}</Text>
|
||||||
</View>
|
</View>
|
||||||
<View className={styles.des_text}>
|
<View className={styles.des_text}>
|
||||||
空差:<Text>{productInfo.weight_error_discount / 1000}KG</Text>
|
空差:<Text>{productInfo.weight_error_discount / 1000}KG</Text>
|
||||||
</View>
|
</View>
|
||||||
<View className={styles.des_text}>
|
<View className={styles.des_text}>
|
||||||
克重:<Text>{productInfo.weight_density}</Text>
|
克重:<Text>{productInfo.weight_density}</Text>
|
||||||
</View>
|
</View>
|
||||||
<View className={styles.des_text}>
|
<View className={styles.des_text}>
|
||||||
成分:<Text>{productInfo.component}</Text>
|
成分:<Text>{productInfo.component}</Text>
|
||||||
</View>
|
</View>
|
||||||
<View className={styles.des_text}>
|
<View className={styles.des_text}>
|
||||||
纸筒:<Text>{productInfo.tube / 1000}KG</Text>
|
纸筒:<Text>{productInfo.tube / 1000}KG</Text>
|
||||||
</View>
|
</View>
|
||||||
<View className={styles.des_text}>
|
<View className={styles.des_text}>
|
||||||
出米数:<Text>{productInfo.length_to_weight_rate / 100}</Text>
|
出米数:<Text>{productInfo.length_to_weight_rate / 100}</Text>
|
||||||
</View>
|
</View>
|
||||||
<View className={styles.des_text}>
|
<View className={styles.des_text}>
|
||||||
开单减空差:<Text>{productInfo.weight_error / 1000}KG</Text>
|
开单减空差:<Text>{productInfo.weight_error / 1000}KG</Text>
|
||||||
|
</View>
|
||||||
</View>
|
</View>
|
||||||
</View>
|
</View>
|
||||||
</View>
|
|
||||||
{!!productInfo?.product_screw_id && <Recommend onClick={openProduct} data={recommendData} />}
|
{!!productInfo?.product_screw_id
|
||||||
<View className={styles.product_color}>
|
&& <View style={{ margin: '20rpx' }}>
|
||||||
<View className={styles.title}>色号信息 ({productInfo?.product_color_list?.length})</View>
|
<Recommend onClick={openProduct} data={recommendData} />
|
||||||
<View className={styles.list}>
|
</View>}
|
||||||
{productInfo?.product_color_list?.map((item) => {
|
<View className={styles.product_color}>
|
||||||
return (
|
<View className={styles.title}>色号信息 ({productInfo?.product_color_list?.length})</View>
|
||||||
<View key={item.id} className={styles.item} onClick={() => handleClickProductColor(item)}>
|
<View className={styles.list}>
|
||||||
<View className={styles.item_color}>
|
{productInfo?.product_color_list?.map((item) => {
|
||||||
<LabAndImg
|
return (
|
||||||
value={{ lab: item.lab, rgb: item.rgb, texture_url: item.texture_url, title: item.code }}
|
<View key={item.id} className={styles.item} onClick={() => handleClickProductColor(item)}>
|
||||||
round
|
<View className={styles.item_color}>
|
||||||
name={formatRemoveHashTag(item.code)}
|
<LabAndImg
|
||||||
/>
|
value={{ lab: item.lab, rgb: item.rgb, texture_url: item.texture_url, title: item.code }}
|
||||||
|
round
|
||||||
|
name={formatRemoveHashTag(item.code)}
|
||||||
|
/>
|
||||||
|
</View>
|
||||||
|
<View className={styles.item_name}>{item.name}</View>
|
||||||
|
<View className={styles.bulk_price}>{formatPriceDiv(item.bulk_price)}/Kg{
|
||||||
|
(item!.last_bulk_price && item!.bulk_price !== item!.last_bulk_price) ? (item.bulk_price > item.last_bulk_price) ? <Text style={{ color: 'red', marginLeft: '10rpx' }}>↑</Text> : <Text style={{ color: 'green', marginLeft: '10rpx' }}>↓</Text> : null
|
||||||
|
}</View>
|
||||||
</View>
|
</View>
|
||||||
<View className={styles.item_name}>{item.name}</View>
|
)
|
||||||
<View className={styles.bulk_price}>{formatPriceDiv(item.bulk_price)}/Kg{
|
})}
|
||||||
(item!.last_bulk_price && item!.bulk_price !== item!.last_bulk_price) ? (item.bulk_price > item.last_bulk_price) ? <Text style={{ color: 'red', marginLeft: '10rpx' }}>↑</Text> : <Text style={{ color: 'green', marginLeft: '10rpx' }}>↓</Text> : null
|
</View>
|
||||||
}</View>
|
</View>
|
||||||
</View>
|
<View className={styles.product_detail}>
|
||||||
)
|
<RichText nodes={html}></RichText>
|
||||||
})}
|
|
||||||
</View>
|
</View>
|
||||||
</View>
|
|
||||||
<View className={styles.product_detail}>
|
|
||||||
<RichText nodes={html}></RichText>
|
|
||||||
</View>
|
</View>
|
||||||
<View className={styles.product_buy}>
|
<View className={styles.product_buy}>
|
||||||
<View className={styles.icon_btn}>
|
<View className={styles.icon_btn}>
|
||||||
@ -443,7 +449,6 @@ const Details = (props: Params) => {
|
|||||||
</View>
|
</View>
|
||||||
</Dialog>
|
</Dialog>
|
||||||
<PopupSelectColor onSelected={onCutSampleList} show={showColorSelect} product_id={productInfo.id} onClose={() => setShowColorSelect(false)} />
|
<PopupSelectColor onSelected={onCutSampleList} show={showColorSelect} product_id={productInfo.id} onClose={() => setShowColorSelect(false)} />
|
||||||
<View className="common_safe_area_y"></View>
|
|
||||||
</View>
|
</View>
|
||||||
</MoveBtn>
|
</MoveBtn>
|
||||||
)
|
)
|
||||||
|
|||||||
@ -4,6 +4,7 @@ page {
|
|||||||
flex-flow: column nowrap;
|
flex-flow: column nowrap;
|
||||||
}
|
}
|
||||||
.order_main {
|
.order_main {
|
||||||
|
height: 100%;
|
||||||
background-color: $color_bg_one;
|
background-color: $color_bg_one;
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
display: flex;
|
display: flex;
|
||||||
@ -24,7 +25,6 @@ page {
|
|||||||
display: flex;
|
display: flex;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
align-items: center;
|
|
||||||
text-align: center;
|
text-align: center;
|
||||||
.flexBox {
|
.flexBox {
|
||||||
display: flex;
|
display: flex;
|
||||||
@ -37,7 +37,6 @@ page {
|
|||||||
height: 24px;
|
height: 24px;
|
||||||
color: #fff;
|
color: #fff;
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
background-color: #ffac00;
|
background-color: #ffac00;
|
||||||
font-size: 20px;
|
font-size: 20px;
|
||||||
@ -112,6 +111,8 @@ page {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
.submit_order {
|
.submit_order {
|
||||||
|
position: relative;
|
||||||
|
z-index: 9999;
|
||||||
display: flex;
|
display: flex;
|
||||||
justify-content: space-between;
|
justify-content: space-between;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
|
|||||||
@ -223,7 +223,9 @@ const Comfirm = () => {
|
|||||||
</View>
|
</View>
|
||||||
</View>
|
</View>
|
||||||
<Popup show={showDesc} showTitle={false} onClose={() => setShowDesc(false)}>
|
<Popup show={showDesc} showTitle={false} onClose={() => setShowDesc(false)}>
|
||||||
<Remark defaultValue={submitOrderData?.remark} onSave={e => getRemark(e)} />
|
{
|
||||||
|
showDesc && <Remark defaultValue={submitOrderData?.remark} onSave={e => getRemark(e)} />
|
||||||
|
}
|
||||||
</Popup>
|
</Popup>
|
||||||
</View>
|
</View>
|
||||||
</MoveBtn>
|
</MoveBtn>
|
||||||
|
|||||||
@ -1,13 +1,24 @@
|
|||||||
|
page {
|
||||||
|
height: 100vh;
|
||||||
|
display: flex;
|
||||||
|
flex-flow: column nowrap;
|
||||||
|
}
|
||||||
.movable_area {
|
.movable_area {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
}
|
}
|
||||||
.order_main {
|
.order_main {
|
||||||
min-height: 100%;
|
|
||||||
background-color: $color_bg_one;
|
background-color: $color_bg_one;
|
||||||
padding: 20px;
|
|
||||||
padding-bottom: 190px;
|
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
|
display: flex;
|
||||||
|
height: 100%;
|
||||||
|
flex-flow: column nowrap;
|
||||||
|
overflow: hidden;
|
||||||
|
.order_content {
|
||||||
|
flex: 1 1 auto;
|
||||||
|
display: flex;
|
||||||
|
flex-flow: column nowrap;
|
||||||
|
overflow-y: scroll;
|
||||||
|
}
|
||||||
.order_title {
|
.order_title {
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
@ -68,14 +79,15 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
.submit_order_con {
|
.submit_order_con {
|
||||||
position: fixed;
|
position: relative;
|
||||||
bottom: 0;
|
z-index: 9999;
|
||||||
left: 0;
|
|
||||||
width: 100%;
|
width: 100%;
|
||||||
background-color: #fff;
|
background-color: #fff;
|
||||||
box-shadow: 6px 0px 12px 0px rgba(0, 0, 0, 0.16);
|
box-shadow: 6px 0px 12px 0px rgba(0, 0, 0, 0.16);
|
||||||
padding: 20px 20px;
|
padding: 20px 20px;
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
|
padding-bottom: constant(safe-area-inset-bottom);
|
||||||
|
padding-bottom: env(safe-area-inset-bottom);
|
||||||
.order_btn {
|
.order_btn {
|
||||||
width: 152px;
|
width: 152px;
|
||||||
height: 72px;
|
height: 72px;
|
||||||
|
|||||||
@ -303,60 +303,71 @@ const Order = () => {
|
|||||||
return (
|
return (
|
||||||
<MoveBtn orderObj={orderDetail} showList={['order']} messageTitle={orderDetail?.order_no} messagePath={`/pages/order/index?id=${orderDetail?.id}`} showCart>
|
<MoveBtn orderObj={orderDetail} showList={['order']} messageTitle={orderDetail?.order_no} messagePath={`/pages/order/index?id=${orderDetail?.id}`} showCart>
|
||||||
<View className={styles.order_main}>
|
<View className={styles.order_main}>
|
||||||
{(orderDetail?.status != SaleorderstatusWaitingPrePayment.value && <OrderState picUrl={orderDetail?.picUrl} orderInfo={orderDetail} />) || (
|
<View className={styles.order_content}>
|
||||||
<AdvanceOrderState orderInfo={orderDetail} onRefresh={refresh} />
|
<View style={{ margin: '20rpx', marginBottom: '0' }}>
|
||||||
)}
|
{(orderDetail?.status != SaleorderstatusWaitingPrePayment.value && <OrderState picUrl={orderDetail?.picUrl} orderInfo={orderDetail} />) || (
|
||||||
<View>
|
<AdvanceOrderState orderInfo={orderDetail} onRefresh={refresh} />
|
||||||
<AddressInfoDetail
|
)}
|
||||||
orderInfo={defaultAddress}
|
</View>
|
||||||
onLogistics={getLogistics}
|
<View style={{ margin: '0 20rpx' }}>
|
||||||
onSelect={getAddress}
|
<AddressInfoDetail
|
||||||
onChangeShipmentMode={getShipmentMode}
|
orderInfo={defaultAddress}
|
||||||
ref={addressRef}
|
onLogistics={getLogistics}
|
||||||
/>
|
onSelect={getAddress}
|
||||||
</View>
|
onChangeShipmentMode={getShipmentMode}
|
||||||
<KindList order={formatPreViewOrderMemo} />
|
ref={addressRef}
|
||||||
<View className={styles.order_info}>
|
/>
|
||||||
<View className={styles.order_info_title}>订单信息</View>
|
</View>
|
||||||
<SearchInput showBorder={false} title="单号" height="50rpx">
|
<View style={{ margin: '0 20rpx' }}>
|
||||||
<View className={styles.order_num}>
|
<KindList order={formatPreViewOrderMemo} />
|
||||||
<Text>{orderDetail?.order_no}</Text>
|
</View>
|
||||||
<View className={styles.order_num_btn} onClick={() => clipboardData()}>
|
<View style={{ margin: '0 20rpx' }}>
|
||||||
|
|
||||||
|
<View className={styles.order_info}>
|
||||||
|
<View className={styles.order_info_title}>订单信息</View>
|
||||||
|
<SearchInput showBorder={false} title="单号" height="50rpx">
|
||||||
|
<View className={styles.order_num}>
|
||||||
|
<Text>{orderDetail?.order_no}</Text>
|
||||||
|
<View className={styles.order_num_btn} onClick={() => clipboardData()}>
|
||||||
复制
|
复制
|
||||||
</View>
|
</View>
|
||||||
|
</View>
|
||||||
|
</SearchInput>
|
||||||
|
<SearchInput showBorder={false} title="下单时间" height="50rpx">
|
||||||
|
<Text>{formatDateTime(orderDetail?.create_time)}</Text>
|
||||||
|
</SearchInput>
|
||||||
|
{orderDetail?.payment_time && (
|
||||||
|
<SearchInput showBorder={false} title="付款时间" height="50rpx">
|
||||||
|
<Text>{formatDateTime(orderDetail?.payment_time)}</Text>
|
||||||
|
</SearchInput>
|
||||||
|
)}
|
||||||
</View>
|
</View>
|
||||||
</SearchInput>
|
</View>
|
||||||
<SearchInput showBorder={false} title="下单时间" height="50rpx">
|
<View style={{ margin: '0 20rpx' }}>
|
||||||
<Text>{formatDateTime(orderDetail?.create_time)}</Text>
|
<View className={styles.order_desc} onClick={descOpen}>
|
||||||
</SearchInput>
|
<View className={styles.order_desc_con}>订单备注</View>
|
||||||
{orderDetail?.payment_time && (
|
{(orderRemark && <View className={styles.order_desc_text}>{orderDetail?.remark}</View>) || (
|
||||||
<SearchInput showBorder={false} title="付款时间" height="50rpx">
|
<View className={styles.order_desc_text_hint}>填写备注</View>
|
||||||
<Text>{formatDateTime(orderDetail?.payment_time)}</Text>
|
)}
|
||||||
</SearchInput>
|
<View className={classnames(styles.miconfont, 'iconfont icon-a-moreback')}></View>
|
||||||
)}
|
</View>
|
||||||
</View>
|
</View>
|
||||||
<View className={styles.order_desc} onClick={descOpen}>
|
|
||||||
<View className={styles.order_desc_con}>订单备注</View>
|
|
||||||
{(orderRemark && <View className={styles.order_desc_text}>{orderDetail?.remark}</View>) || (
|
|
||||||
<View className={styles.order_desc_text_hint}>填写备注</View>
|
|
||||||
)}
|
|
||||||
<View className={classnames(styles.miconfont, 'iconfont icon-a-moreback')}></View>
|
|
||||||
</View>
|
</View>
|
||||||
{orderDetail?.status != SaleOrderStatusCancel.value && (
|
{orderDetail?.status != SaleOrderStatusCancel.value && (
|
||||||
<View className={styles.submit_order_con}>
|
<View className={styles.submit_order_con}>
|
||||||
<OrderBtns orderInfo={orderInfo} onClick={orderStateClick} />
|
<OrderBtns orderInfo={orderInfo} onClick={orderStateClick} />
|
||||||
<View className="common_safe_area_y"></View>
|
|
||||||
</View>
|
</View>
|
||||||
)}
|
)}
|
||||||
<Popup show={showDesc} showTitle={false} onClose={() => setShowDesc(false)}>
|
<Popup show={showDesc} showTitle={false} onClose={() => setShowDesc(false)}>
|
||||||
<Remark onSave={e => getRemark(e)} defaultValue={orderDetail?.remark} />
|
{
|
||||||
|
showDesc && <Remark onSave={e => getRemark(e)} defaultValue={orderDetail?.remark} />
|
||||||
|
}
|
||||||
</Popup>
|
</Popup>
|
||||||
<Payment onSubmitSuccess={onPaySuccess} show={payMentShow} onClose={closePayShow} orderInfo={orderDetail} />
|
<Payment onSubmitSuccess={onPaySuccess} show={payMentShow} onClose={closePayShow} orderInfo={orderDetail} />
|
||||||
<ScanPayCheck show={showScanPayCheck} onClose={() => setShowScanPayCheck(false)} orderInfo={orderDetail} />
|
<ScanPayCheck show={showScanPayCheck} onClose={() => setShowScanPayCheck(false)} orderInfo={orderDetail} />
|
||||||
<ApplyRefund show={refundShow} onSuccess={applyRefundSuccess} onClose={applyRefundClose} orderId={orderDetail?.id} />
|
<ApplyRefund show={refundShow} onSuccess={applyRefundSuccess} onClose={applyRefundClose} orderId={orderDetail?.id} />
|
||||||
<ShopCart intoStatus="again" show={showCart} onClose={() => setShowCart(false)} />
|
<ShopCart intoStatus="again" show={showCart} onClose={() => setShowCart(false)} />
|
||||||
<ReturnRecord show={returnRecordShow} onClose={closeReturnRecord} id={orderDetail?.id} />
|
<ReturnRecord show={returnRecordShow} onClose={closeReturnRecord} id={orderDetail?.id} />
|
||||||
<View className="common_safe_area_y"></View>
|
|
||||||
</View>
|
</View>
|
||||||
</MoveBtn>
|
</MoveBtn>
|
||||||
)
|
)
|
||||||
|
|||||||
@ -225,13 +225,13 @@ const SpeedComfirm = () => {
|
|||||||
</View>
|
</View>
|
||||||
</View>
|
</View>
|
||||||
}
|
}
|
||||||
<View style={{ margin: '20rpx' }}>
|
<View style={{ margin: '0 20rpx' }}>
|
||||||
<AddressInfoDetail orderInfo={defaultAddress} onSelect={getAddress} onChangeShipmentMode={selectShipmentMode} status={1} />
|
<AddressInfoDetail orderInfo={defaultAddress} onSelect={getAddress} onChangeShipmentMode={selectShipmentMode} status={1} />
|
||||||
</View>
|
</View>
|
||||||
<View style={{ margin: '20rpx', marginTop: '0' }}>
|
<View style={{ margin: '0 20rpx' }}>
|
||||||
<KindList order={formatPreViewOrderMemo} comfirm />
|
<KindList order={formatPreViewOrderMemo} comfirm />
|
||||||
</View>
|
</View>
|
||||||
<View style={{ margin: '20rpx' }}>
|
<View style={{ margin: '0 20rpx' }}>
|
||||||
<View className={styles.order_desc} onClick={() => setShowDesc(true)}>
|
<View className={styles.order_desc} onClick={() => setShowDesc(true)}>
|
||||||
<View className={styles.order_desc_con}>订单备注</View>
|
<View className={styles.order_desc_con}>订单备注</View>
|
||||||
{(submitOrderData?.remark && <View className={styles.order_desc_text}>{submitOrderData?.remark}</View>) || <View className={styles.order_desc_text_hint}>填写备注</View>}
|
{(submitOrderData?.remark && <View className={styles.order_desc_text}>{submitOrderData?.remark}</View>) || <View className={styles.order_desc_text_hint}>填写备注</View>}
|
||||||
@ -253,7 +253,9 @@ const SpeedComfirm = () => {
|
|||||||
</View>
|
</View>
|
||||||
</View>
|
</View>
|
||||||
<Popup show={showDesc} showTitle={false} onClose={() => setShowDesc(false)}>
|
<Popup show={showDesc} showTitle={false} onClose={() => setShowDesc(false)}>
|
||||||
<Remark defaultValue={submitOrderData?.remark} onSave={e => getRemark(e)} />
|
{
|
||||||
|
showDesc && <Remark defaultValue={submitOrderData?.remark} onSave={e => getRemark(e)} />
|
||||||
|
}
|
||||||
</Popup>
|
</Popup>
|
||||||
</View>
|
</View>
|
||||||
</MoveBtn>
|
</MoveBtn>
|
||||||
|
|||||||
@ -181,18 +181,20 @@ export default () => {
|
|||||||
|
|
||||||
</View>
|
</View>
|
||||||
</View>
|
</View>
|
||||||
<View className={classnames(styles.nav_list, styles.earnings_list)}>
|
{
|
||||||
<View className={styles.nav_list__title}>
|
!userInfo?.adminUserInfo?.is_bd && <View className={classnames(styles.nav_list, styles.earnings_list)}>
|
||||||
<Text className={styles.title_text}>下单返现活动</Text>
|
<View className={styles.nav_list__title}>
|
||||||
</View>
|
<Text className={styles.title_text}>下单返现活动</Text>
|
||||||
<View className={styles.earnings_con}>
|
</View>
|
||||||
<View className={styles.earnings_price}>
|
<View className={styles.earnings_con}>
|
||||||
<Text className={styles.earnings_title}>活动返现收益(元)</Text>
|
<View className={styles.earnings_price}>
|
||||||
<View className={styles.earnings_total}><Text>¥</Text> <Text className={styles.all_earnings}>{formatPriceDiv(state.data.total_income, 100, true)}</Text> <View className={styles.today_earnings}>昨日收益 {formatPriceDiv(state.data.today_income, 100, true)}</View></View>
|
<Text className={styles.earnings_title}>活动返现收益(元)</Text>
|
||||||
|
<View className={styles.earnings_total}><Text>¥</Text> <Text className={styles.all_earnings}>{formatPriceDiv(state.data.total_income, 100, true)}</Text> <View className={styles.today_earnings}>昨日收益 {formatPriceDiv(state.data.today_income, 100, true)}</View></View>
|
||||||
|
</View>
|
||||||
|
<View className={styles.more} onClick={() => goLink('/pages/activityIncome/index')}><Text>查看收益</Text><IconFont name="icon-rukou" size={30} /></View>
|
||||||
</View>
|
</View>
|
||||||
<View className={styles.more} onClick={() => goLink('/pages/activityIncome/index')}><Text>查看收益</Text><IconFont name="icon-rukou" size={30} /></View>
|
|
||||||
</View>
|
</View>
|
||||||
</View>
|
}
|
||||||
<View className={styles.nav_list}>
|
<View className={styles.nav_list}>
|
||||||
<View className={styles.nav_list__title}>
|
<View className={styles.nav_list__title}>
|
||||||
<Text className={styles.title_text}>我的服务</Text>
|
<Text className={styles.title_text}>我的服务</Text>
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user