🐞 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>
)} )}

File diff suppressed because it is too large Load Diff

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>