🐞 fix(ID1000935): 申请退货,选择退货原因时,其他说明文本输入框层级太高,UI出现混乱(安卓系统)

【申请退货,选择退货原因时,其他说明文本输入框层级太高,UI出现混乱(安卓系统)】 https://www.tapd.cn/53459131/bugtrace/bugs/view/1153459131001000935
This commit is contained in:
xuan 2022-12-08 16:04:41 +08:00
parent 4a2f5ac521
commit 8ecb3be06b
4 changed files with 527 additions and 532 deletions

View File

@ -239,6 +239,13 @@
"query": "", "query": "",
"launchMode": "default", "launchMode": "default",
"scene": null "scene": null
},
{
"name": "",
"pathName": "pages/applyGoods/index",
"query": "orderId=31742",
"launchMode": "default",
"scene": null
} }
] ]
} }

View File

@ -7,25 +7,26 @@ interface SaleModeProps {
saleMode: number saleMode: number
size?: TagSize size?: TagSize
customClassName?: string customClassName?: string
customStyle?: React.CSSProperties
children?: React.ReactNode children?: React.ReactNode
} }
const SaleModeTag: FC<SaleModeProps> = (props) => { const SaleModeTag: FC<SaleModeProps> = (props) => {
const { saleMode, size = 'small', customClassName } = props const { saleMode, size = 'small', customClassName, customStyle } = props
return ( return (
<> <>
{saleMode === EnumSaleMode.Bulk && ( {saleMode === EnumSaleMode.Bulk && (
<Tag circle type="bulk" size={size} customClassName={customClassName}> <Tag circle type="bulk" size={size} customClassName={customClassName} customStyle={customStyle}>
</Tag> </Tag>
)} )}
{saleMode === EnumSaleMode.Plate && ( {saleMode === EnumSaleMode.Plate && (
<Tag circle type="plate" size={size} customClassName={customClassName}> <Tag circle type="plate" size={size} customClassName={customClassName} customStyle={customStyle}>
</Tag> </Tag>
)} )}
{saleMode === EnumSaleMode.BulkCut && ( {saleMode === EnumSaleMode.BulkCut && (
<Tag circle type="bulkCut" size={size} customClassName={customClassName}> <Tag circle type="bulkCut" size={size} customClassName={customClassName} customStyle={customStyle}>
</Tag> </Tag>
)} )}

View File

@ -1,22 +1,20 @@
.main {} .main {
}
.bgBox { .bgBox {
margin: 24px; margin: 24px;
background: #FFFFFF; background: #ffffff;
border-radius: 16px; border-radius: 16px;
overflow: hidden; overflow: hidden;
} }
.goodsBox { .goodsBox {
margin-top: 24px; margin-top: 24px;
overflow: hidden; overflow: hidden;
border-bottom: 8px solid #F7F7F7; border-bottom: 8px solid #f7f7f7;
.goodsProduct { .goodsProduct {
font-size: 28px; font-size: 28px;
font-family: PingFangSC-Medium, PingFang SC;
font-weight: 500; font-weight: 500;
color: #000000; color: #000000;
margin-left: 32px; margin-left: 32px;
@ -41,7 +39,7 @@
width: 108px; width: 108px;
height: 108px; height: 108px;
// background: #322F2F; // background: #322F2F;
border-radius: 8px; border-radius: 5px;
} }
.itemRight { .itemRight {
@ -50,21 +48,18 @@
border-bottom: 1px solid #f7f7f7; border-bottom: 1px solid #f7f7f7;
.item_right_top { .item_right_top {
margin-bottom: 41px;
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: space-between; justify-content: space-between;
.itemName { .itemName {
font-size: 28px; font-size: 28px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400; font-weight: 400;
color: #000000; color: #000000;
} }
.itemNums { .itemNums {
font-size: 28px; font-size: 28px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400; font-weight: 400;
color: #000000; color: #000000;
} }
@ -72,19 +67,17 @@
.item_right_Bottom { .item_right_Bottom {
display: flex; display: flex;
align-items: center; align-items: flex-end;
justify-content: space-between; justify-content: space-between;
.itemMoney { .itemMoney {
font-size: 28px; font-size: 28px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400; font-weight: 400;
color: #000000; color: #000000;
} }
.itemMoneyOne { .itemMoneyOne {
font-size: 28px; font-size: 28px;
font-family: PingFangSC-Medium, PingFang SC;
font-weight: 500; font-weight: 500;
color: #000000; color: #000000;
} }
@ -93,10 +86,10 @@
width: 120px; width: 120px;
height: 64px; height: 64px;
border-radius: 8px; border-radius: 8px;
border: 1px solid #337FFF; border: 1px solid #337fff;
font-size: 28px; font-size: 28px;
font-weight: 400; font-weight: 400;
color: #337FFF; color: #337fff;
text-align: center; text-align: center;
line-height: 64px; line-height: 64px;
} }
@ -105,10 +98,10 @@
width: 204px; width: 204px;
height: 64px; height: 64px;
border-radius: 8px; border-radius: 8px;
border: 1px solid #337FFF; border: 1px solid #337fff;
font-size: 28px; font-size: 28px;
font-weight: 400; font-weight: 400;
color: #337FFF; color: #337fff;
text-align: center; text-align: center;
line-height: 64px; line-height: 64px;
} }
@ -117,14 +110,14 @@
width: 189px; width: 189px;
height: 64px; height: 64px;
border-radius: 8px; border-radius: 8px;
border: 1px solid #337FFF; border: 1px solid #337fff;
display: flex; display: flex;
.redceBox { .redceBox {
width: 64px; width: 64px;
height: 64px; height: 64px;
border-radius: 8px 0px 0px 8px; border-radius: 8px 0px 0px 8px;
border-right: 1px solid #337FFF; border-right: 1px solid #337fff;
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: center; justify-content: center;
@ -132,7 +125,7 @@
.reduce { .reduce {
width: 20px; width: 20px;
height: 2px; height: 2px;
background: #337FFF; background: #337fff;
} }
} }
@ -145,24 +138,22 @@
text-align: center; text-align: center;
font-size: 24px; font-size: 24px;
font-weight: 400; font-weight: 400;
color: #337FFF; color: #337fff;
} }
.addBox { .addBox {
width: 64px; width: 64px;
height: 64px; height: 64px;
border-left: 1px solid #337FFF; border-left: 1px solid #337fff;
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: center; justify-content: center;
font-size: 40px; font-size: 40px;
color: #337FFF; color: #337fff;
} }
} }
} }
} }
} }
.itemGoods:last-child { .itemGoods:last-child {
@ -184,21 +175,18 @@
border-bottom: none; border-bottom: none;
.item_right_top { .item_right_top {
margin-bottom: 41px;
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: space-between; justify-content: space-between;
.itemName { .itemName {
font-size: 28px; font-size: 28px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400; font-weight: 400;
color: #000000; color: #000000;
} }
.itemNums { .itemNums {
font-size: 28px; font-size: 28px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400; font-weight: 400;
color: #000000; color: #000000;
} }
@ -206,19 +194,17 @@
.item_right_Bottom { .item_right_Bottom {
display: flex; display: flex;
align-items: center; align-items: flex-end;
justify-content: space-between; justify-content: space-between;
.itemMoney { .itemMoney {
font-size: 28px; font-size: 28px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400; font-weight: 400;
color: #000000; color: #000000;
} }
.itemMoneyOne { .itemMoneyOne {
font-size: 28px; font-size: 28px;
font-family: PingFangSC-Medium, PingFang SC;
font-weight: 500; font-weight: 500;
color: #000000; color: #000000;
} }
@ -227,10 +213,10 @@
width: 120px; width: 120px;
height: 64px; height: 64px;
border-radius: 8px; border-radius: 8px;
border: 1px solid #337FFF; border: 1px solid #337fff;
font-size: 28px; font-size: 28px;
font-weight: 400; font-weight: 400;
color: #337FFF; color: #337fff;
text-align: center; text-align: center;
line-height: 64px; line-height: 64px;
} }
@ -239,17 +225,15 @@
width: 204px; width: 204px;
height: 64px; height: 64px;
border-radius: 8px; border-radius: 8px;
border: 1px solid #337FFF; border: 1px solid #337fff;
font-size: 28px; font-size: 28px;
font-weight: 400; font-weight: 400;
color: #337FFF; color: #337fff;
text-align: center; text-align: center;
line-height: 64px; line-height: 64px;
} }
} }
} }
} }
} }
@ -257,19 +241,17 @@
border-bottom: none; border-bottom: none;
} }
.hasSelect { .hasSelect {
margin-left: 32px; margin-left: 32px;
margin-right: 32px; margin-right: 32px;
height: 54px; height: 54px;
background: #FEF9F4; background: #fef9f4;
border-radius: 8px; border-radius: 8px;
display: flex; display: flex;
align-items: center; align-items: center;
font-size: 24px; font-size: 24px;
font-weight: 600; font-weight: 600;
color: #F79B31; color: #f79b31;
padding-left: 20px; padding-left: 20px;
margin-bottom: 24px; margin-bottom: 24px;
} }
@ -277,10 +259,9 @@
.resonBig { .resonBig {
overflow: hidden; overflow: hidden;
margin: 0 24px; margin: 0 24px;
background: #FFFFFF; background: #ffffff;
border-radius: 16px 16px 0px 0px; border-radius: 16px 16px 0px 0px;
.reasonItem { .reasonItem {
display: flex; display: flex;
align-items: center; align-items: center;
@ -302,7 +283,7 @@
.xing { .xing {
font-size: 28px; font-size: 28px;
font-weight: 500; font-weight: 500;
color: #E42945; color: #e42945;
} }
.selectFont { .selectFont {
@ -341,7 +322,7 @@
.descBox { .descBox {
padding: 24px 0px 24px 0px; padding: 24px 0px 24px 0px;
margin: 32px; margin: 32px;
background: #FFFFFF; background: #ffffff;
border-radius: 16px 16px 0px 0px; border-radius: 16px 16px 0px 0px;
.title { .title {
@ -368,14 +349,12 @@
color: #000000; color: #000000;
// margin-bottom: 32px; // margin-bottom: 32px;
} }
} }
.bottomBox { .bottomBox {
width: 750px; width: 750px;
height: 160px; height: 160px;
background: #FFFFFF; background: #ffffff;
position: fixed; position: fixed;
bottom: 0; bottom: 0;
z-index: 99; z-index: 99;
@ -388,11 +367,10 @@
width: 311px; width: 311px;
height: 80px; height: 80px;
border-radius: 44px; border-radius: 44px;
border: 1px solid #087EFF; border: 1px solid #087eff;
font-size: 28px; font-size: 28px;
font-family: PingFangSC-Medium, PingFang SC;
font-weight: 500; font-weight: 500;
color: #337FFF; color: #337fff;
text-align: center; text-align: center;
line-height: 80px; line-height: 80px;
background-color: #fff; background-color: #fff;
@ -405,9 +383,8 @@
background: #68b4ff; background: #68b4ff;
border-radius: 44px; border-radius: 44px;
font-size: 32px; font-size: 32px;
font-family: PingFangSC-Medium, PingFang SC;
font-weight: 500; font-weight: 500;
color: #FFFFFF; color: #ffffff;
text-align: center; text-align: center;
line-height: 80px; line-height: 80px;
} }
@ -416,10 +393,9 @@
margin-right: 32px; margin-right: 32px;
width: 311px; width: 311px;
height: 80px; height: 80px;
background: #337FFF; background: #337fff;
border-radius: 44px; border-radius: 44px;
font-size: 32px; font-size: 32px;
font-family: PingFangSC-Medium, PingFang SC;
font-weight: 500; font-weight: 500;
color: #fff; color: #fff;
text-align: center; text-align: center;
@ -436,16 +412,12 @@
height: 500px; height: 500px;
padding-bottom: env(safe-area-inset-bottom); padding-bottom: env(safe-area-inset-bottom);
.thirdBox { .thirdBox {
margin-top: 20px; margin-top: 20px;
padding-left: 48px; padding-left: 48px;
.thirdTopfont { .thirdTopfont {
font-size: 28px; font-size: 28px;
font-family: PingFangSC-Medium, PingFang SC;
font-weight: 500; font-weight: 500;
color: #000000; color: #000000;
} }
@ -454,7 +426,7 @@
margin-top: 24px; margin-top: 24px;
background-color: #f6f6f6; background-color: #f6f6f6;
height: 68px; height: 68px;
background: #E9E9E9; background: #e9e9e9;
border-radius: 8px; border-radius: 8px;
margin-right: 48px; margin-right: 48px;
text-align: center; text-align: center;
@ -488,10 +460,10 @@
font-size: 28px; font-size: 28px;
font-family: PingFangSC-Regular, PingFang SC; font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400; font-weight: 400;
color: #337FFF; color: #337fff;
text-align: center; text-align: center;
// line-height: 68px; // line-height: 68px;
border: 1px solid #337FFF; border: 1px solid #337fff;
box-sizing: border-box; box-sizing: border-box;
} }
@ -514,16 +486,12 @@
// opacity: 0.4; // opacity: 0.4;
} }
} }
} }
.bottomBox1 { .bottomBox1 {
width: 750px; width: 750px;
height: 160px; height: 160px;
background: #FFFFFF; background: #ffffff;
position: fixed; position: fixed;
bottom: 0; bottom: 0;
z-index: 99; z-index: 99;
@ -536,11 +504,10 @@
width: 311px; width: 311px;
height: 80px; height: 80px;
border-radius: 44px; border-radius: 44px;
border: 1px solid #087EFF; border: 1px solid #087eff;
font-size: 28px; font-size: 28px;
font-family: PingFangSC-Medium, PingFang SC;
font-weight: 500; font-weight: 500;
color: #337FFF; color: #337fff;
text-align: center; text-align: center;
line-height: 80px; line-height: 80px;
background-color: #fff; background-color: #fff;
@ -553,9 +520,8 @@
background: #68b4ff; background: #68b4ff;
border-radius: 44px; border-radius: 44px;
font-size: 32px; font-size: 32px;
font-family: PingFangSC-Medium, PingFang SC;
font-weight: 500; font-weight: 500;
color: #FFFFFF; color: #ffffff;
text-align: center; text-align: center;
line-height: 80px; line-height: 80px;
} }
@ -564,10 +530,9 @@
margin-right: 32px; margin-right: 32px;
width: 311px; width: 311px;
height: 80px; height: 80px;
background: #337FFF; background: #337fff;
border-radius: 44px; border-radius: 44px;
font-size: 32px; font-size: 32px;
font-family: PingFangSC-Medium, PingFang SC;
font-weight: 500; font-weight: 500;
color: #fff; color: #fff;
text-align: center; text-align: center;

View File

@ -1,4 +1,4 @@
import { Button, Image, Input, ScrollView, Text, Textarea, View } from '@tarojs/components' import { Button, CoverView, Image, Input, ScrollView, Text, Textarea, View } from '@tarojs/components'
import Taro, { faceVerifyForPay, useDidShow, useRouter } from '@tarojs/taro' import Taro, { faceVerifyForPay, useDidShow, useRouter } from '@tarojs/taro'
import { ReactNode, memo, useCallback, useEffect, useMemo, useRef, useState } from 'react' import { ReactNode, memo, useCallback, useEffect, useMemo, useRef, useState } from 'react'
import classnames from 'classnames' import classnames from 'classnames'
@ -13,6 +13,10 @@ import {
} from '@/api/order' } from '@/api/order'
import Popup from '@/components/popup' import Popup from '@/components/popup'
import UploadImage from '@/components/uploadImage' import UploadImage from '@/components/uploadImage'
import IconFont from '@/components/iconfont/iconfont'
import Divider from '@/components/divider'
import SaleModeTag from '@/components/saleModeTag'
import LabAndImg from '@/components/LabAndImg'
// 产品商品元素 // 产品商品元素
interface PropGoods { interface PropGoods {
@ -38,20 +42,34 @@ const GoodsItem = (porps: PropGoods) => {
// setValue({ count: res }) // setValue({ count: res })
// } // }
// } // }
const labAndImgObj = useCallback(
(item) => {
return { lab: item.lab, rgb: item.rgb, texture_url: item.texture_url }
},
[list],
)
return ( return (
<> <>
{ {
list.map((item, index) => { list.map((item, index) => {
return ( return (
<View className={styles.goodsBox} key={index}> <View className={styles.goodsBox} key={index}>
<View className={styles.goodsProduct}>{item.product_code}# {item.product_name}</View> <View className={styles.goodsProduct}>
<View className={styles.goodsLine}></View> <Text>
{item.product_code}# {item.product_name}
</Text>
<SaleModeTag saleMode={item.sale_mode} size="small" customStyle={{ marginLeft: '5px', padding: '0 5px' }} />
</View>
<Divider direction="horizontal" customStyles={{ margin: '12px 10px' }}></Divider>
{ {
item.av_product_color.map((it, inx) => { item.av_product_color.map((it, inx) => {
return ( return (
<View className={styles.itemGoods} key={inx}> <View className={styles.itemGoods} key={inx}>
<Image className={styles.itemPic} mode="aspectFill" src="https://test.cdn.zzfzyc.com/mall/no_img.png"></Image> <View className={styles.itemPic}>
<LabAndImg value={labAndImgObj(item)} />
</View>
{/* <Image className={styles.itemPic} mode="aspectFill" src="https://test.cdn.zzfzyc.com/mall/no_img.png"></Image> */}
{/* <View className={styles.itemPic} style={{ backgroundColor: `rgb(${it?.rgb?.r} ${it?.rgb?.g} ${it?.rgb?.b})` }}></View> */} {/* <View className={styles.itemPic} style={{ backgroundColor: `rgb(${it?.rgb?.r} ${it?.rgb?.g} ${it?.rgb?.b})` }}></View> */}
<View className={styles.itemRight}> <View className={styles.itemRight}>
<View className={styles.item_right_top}> <View className={styles.item_right_top}>
@ -564,7 +582,8 @@ const ApplyGoods = () => {
queryRef.current.reasonName !== '请选择' && <View className={styles.selectFont}>{Query.reasonName}/{Query.reasonNameTwo}</View> queryRef.current.reasonName !== '请选择' && <View className={styles.selectFont}>{Query.reasonName}/{Query.reasonNameTwo}</View>
} }
</View> </View>
<View className={classnames('iconfont', 'icon-chakanquanbukehu', styles.chakanquanbukehu)}></View> <IconFont name="icon-chakanquanbukehu" size={50} color="#3b3b3b"></IconFont>
{/* <View className={classnames('iconfont', 'icon-chakanquanbukehu', styles.chakanquanbukehu)}></View> */}
</View> </View>
<View className={styles.reasonItem} onClick={() => { setDescPopup?.(true) }}> <View className={styles.reasonItem} onClick={() => { setDescPopup?.(true) }}>
<View className={styles.reasonLeft}> <View className={styles.reasonLeft}>
@ -577,7 +596,8 @@ const ApplyGoods = () => {
queryRef.current.GoodStatusName !== '请选择' && <View className={styles.selectFont}>{Query.GoodStatusName}</View> queryRef.current.GoodStatusName !== '请选择' && <View className={styles.selectFont}>{Query.GoodStatusName}</View>
} }
</View> </View>
<View className={classnames('iconfont', 'icon-chakanquanbukehu', styles.chakanquanbukehu)}></View> <IconFont name="icon-chakanquanbukehu" size={50} color="#3b3b3b"></IconFont>
{/* <View className={classnames('iconfont', 'icon-chakanquanbukehu', styles.chakanquanbukehu)}></View> */}
</View> </View>
<View className={styles.picBig}> <View className={styles.picBig}>
<View className={styles.picFont}></View> <View className={styles.picFont}></View>
@ -587,12 +607,14 @@ const ApplyGoods = () => {
<View className={styles.descBox}> <View className={styles.descBox}>
<View className={styles.title}></View> <View className={styles.title}></View>
<View className={styles.textBox}> <View className={styles.textBox}>
{/* 解决textarea的placeholder层级穿透的问题偶现问题 */}
{/* https://developers.weixin.qq.com/community/develop/article/doc/0004eea3024e7075653a30bb05ac13?highline=Textarea%20 */}
<Textarea <Textarea
onInput={e => getDesc(e.detail.value)} onInput={e => getDesc(e.detail.value)}
value={TextareaValue} value={TextareaValue}
// style='background:#f6f6f6;height:210px;padding:15rpx 24rpx 24rpx 24rpx;border-radius: 8rpx;' // style='background:#f6f6f6;height:210px;padding:15rpx 24rpx 24rpx 24rpx;border-radius: 8rpx;'
placeholderStyle="font-size: 28rpx;font-weight: 400;" placeholderStyle="font-size: 28rpx;font-weight: 400;"
placeholder="选填/退货原因中选择时(其他问题)必填" placeholder={(!showPopup || !DescPopup) ? '选填/退货原因中选择时(其他问题)必填' : ''}
></Textarea> ></Textarea>
</View> </View>
</View> </View>