🐞 fix:优化分享图片,修复我的页面无法触发用户信息授权弹窗

This commit is contained in:
czm 2022-08-01 11:32:49 +08:00
parent 6ea58ad911
commit ac4cd5ddb8
6 changed files with 194 additions and 205 deletions

View File

@ -44,12 +44,7 @@ export const throttle = (fn, delay) => {
export const getFilterData = (val = {}, arr: string[] = []) => { export const getFilterData = (val = {}, arr: string[] = []) => {
let res = {} let res = {}
for (let key in val) { for (let key in val) {
if ( if (val[key] !== undefined && val[key] !== null && val[key] !== '' && !arr.includes(key)) {
val[key] !== undefined &&
val[key] !== null &&
val[key] !== '' &&
!arr.includes(key)
) {
if (typeof val[key] == 'number') { if (typeof val[key] == 'number') {
if (!isNaN(val[key])) { if (!isNaN(val[key])) {
res[key] = val[key] res[key] = val[key]
@ -100,15 +95,7 @@ export const screenshot = (url, suffix = '!w200') => {
} }
//获取数据加载状态 //0:数据从无到有加载数据1没有任何数据 2下拉加载3下拉没有数据 //获取数据加载状态 //0:数据从无到有加载数据1没有任何数据 2下拉加载3下拉没有数据
export const dataLoadingStatus = ({ export const dataLoadingStatus = ({ list = [], total = 0, status = false }: { list: any[]; total: number; status: true | false }) => {
list = [],
total = 0,
status = false,
}: {
list: any[]
total: number
status: true | false
}) => {
if (list.length == 0 && status) { if (list.length == 0 && status) {
return 0 return 0
} else if (list.length == 0 && !status) { } else if (list.length == 0 && !status) {
@ -132,25 +119,20 @@ export const shareShop = () => {
let path = '' let path = ''
let title = '' let title = ''
let imageUrl = '' let imageUrl = ''
let sortCode = Taro.getStorageSync('sort_code') let sortCode = Taro.getStorageSync('sort_code') ? JSON.parse(Taro.getStorageSync('sort_code')) : ''
? JSON.parse(Taro.getStorageSync('sort_code'))
: ''
let pageInfo: any = page let pageInfo: any = page
//商品详情分享 //商品详情分享
if (pageInfo.route === 'pages/details/index') { if (pageInfo.route === 'pages/details/index') {
path = `/pages/details/index?share=${sortCode.shareShortDetail.code}` path = `/pages/details/index?share=${sortCode.shareShortDetail.code}`
title = sortCode.shareShortDetail.title title = sortCode.shareShortDetail.title
imageUrl = sortCode.shareShortDetail.img imageUrl = formatImgUrl(sortCode.shareShortDetail.img, '!w600')
} else { } else {
path = path =
pageInfo.route === 'pages/user/index' pageInfo.route === 'pages/user/index'
? `/pages/user/index?share=${sortCode.shareShortPage.code}` ? `/pages/user/index?share=${sortCode.shareShortPage.code}`
: `/pages/index/index?share=${sortCode.shareShortPage.code}` : `/pages/index/index?share=${sortCode.shareShortPage.code}`
title = sortCode.shareShortPage.title title = sortCode.shareShortPage.title
imageUrl = imageUrl = pageInfo.route === 'pages/user/index' ? formatImgUrl(sortCode.shareShortPage.img, '!w600') : formatImgUrl('/mall/share_img_02.png', '!w600')
pageInfo.route === 'pages/user/index'
? sortCode.shareShortPage.img
: formatImgUrl('/mall/share_img_02.png')
} }
return { return {
title, title,

View File

@ -1,68 +1,71 @@
import Taro, { FC } from "@tarojs/taro" import Taro, { FC } from '@tarojs/taro'
import { memo, useEffect, useState } from "react" import { memo, useEffect, useState } from 'react'
import useUploadCDNImg from "@/use/useUploadImage"; import useUploadCDNImg from '@/use/useUploadImage'
import { Image, Text, View } from "@tarojs/components"; import { Image, Text, View } from '@tarojs/components'
import { formatImgUrl } from "@/common/fotmat"; import { formatImgUrl } from '@/common/fotmat'
import classnames from "classnames"; import classnames from 'classnames'
import styles from './index.module.scss' import styles from './index.module.scss'
//图片列表 //图片列表
type ImageParam = { type ImageParam = {
onChange?:(val: string[]) => void, onChange?: (val: string[]) => void
defaultList?: string[], defaultList?: string[]
onlyRead?: false|true onlyRead?: false | true
} }
const PictureItem:FC<ImageParam> = memo(({onChange, defaultList, onlyRead = false}) => { const PictureItem: FC<ImageParam> = memo(({ onChange, defaultList, onlyRead = false }) => {
const {getWxPhoto} = useUploadCDNImg() const { getWxPhoto } = useUploadCDNImg()
const [imageList, setImageLise] = useState<string[]>([]) const [imageList, setImageLise] = useState<string[]>([])
useEffect(() => { useEffect(() => {
setImageLise(defaultList||[]) setImageLise(defaultList || [])
}, [defaultList]) }, [defaultList])
//上传图片 //上传图片
const uploadImage = async () => { const uploadImage = async () => {
let list:any = await getWxPhoto('after-sale', 5) let list: any = await getWxPhoto('after-sale', 5)
let images:any[] = [] let images: any[] = []
list?.map(item => { list?.map((item) => {
images.push(item.url) images.push(item.url)
}) })
setImageLise([...imageList, ...images]) setImageLise([...imageList, ...images])
} }
//删除图片 //删除图片
const delImage = (index) => { const delImage = (index) => {
imageList.splice(index,1) imageList.splice(index, 1)
setImageLise(() => [...imageList]) setImageLise(() => [...imageList])
} }
//监听上传的图片变化 //监听上传的图片变化
useEffect(() => { useEffect(() => {
onChange?.(imageList) onChange?.(imageList)
}, [imageList]) }, [imageList])
//预览图片 //预览图片
const showImage = () => { const showImage = () => {
let list = imageList?.map(item => { let list = imageList?.map((item) => {
return formatImgUrl(item, '!w800') return formatImgUrl(item, '!w800')
}) })
Taro.previewImage({ Taro.previewImage({
current: list[0], // 当前显示 current: list[0], // 当前显示
urls: list // 需要预览的图片http链接列表 urls: list, // 需要预览的图片http链接列表
}) })
} }
return ( return (
<View className={styles.image_main}> <View className={styles.image_main}>
{imageList?.map((item, index) => {imageList?.map((item, index) => (
<View className={styles.ImgItem}> <View className={styles.ImgItem}>
<Image mode="aspectFill" src={formatImgUrl(item)} onClick={showImage}></Image> <Image mode='aspectFill' src={formatImgUrl(item)} onClick={showImage}></Image>
{!onlyRead && <View onClick={() => delImage(index)} className={classnames(styles.miconfont_close, 'iconfont icon-qingkong')}></View>} {!onlyRead && <View onClick={() => delImage(index)} className={classnames(styles.miconfont_close, 'iconfont icon-qingkong')}></View>}
</View>)}
{!onlyRead && <View className={styles.uploadImg } onClick={uploadImage}>
<Text className={classnames(styles.miconfont, 'iconfont icon-saomazhifu')}></Text>
<Text className={styles.uploadText}></Text>
</View>}
</View> </View>
) ))}
{!onlyRead && (
<View className={styles.uploadImg} onClick={uploadImage}>
<Text className={classnames(styles.miconfont, 'iconfont icon-shangchuanzhaopian')}></Text>
<Text className={styles.uploadText}></Text>
</View>
)}
</View>
)
}) })
export default PictureItem export default PictureItem

View File

@ -6,7 +6,7 @@ import OrderCount from './components/orderCount'
import ShopCart from '@/components/shopCart' import ShopCart from '@/components/shopCart'
import styles from './index.module.scss' import styles from './index.module.scss'
import { useCallback, useEffect, useMemo, useState } from 'react' import { useCallback, useEffect, useMemo, useState } from 'react'
import { formatHashTag } from '@/common/fotmat' import { formatHashTag, formatImgUrl } from '@/common/fotmat'
import { GetProductDetailApi } from '@/api/material' import { GetProductDetailApi } from '@/api/material'
import useLogin from '@/use/useLogin' import useLogin from '@/use/useLogin'
import { AnalysisShortCodeApi, GetShortCodeApi } from '@/api/share' import { AnalysisShortCodeApi, GetShortCodeApi } from '@/api/share'
@ -102,7 +102,7 @@ export default (props: Params) => {
type: ShareDetail.value, type: ShareDetail.value,
product_id: parseInt(params.id), product_id: parseInt(params.id),
}) })
const img = IMG_CND_Prefix + (productInfo.texture_url ? productInfo.texture_url.split(',')[0] : '/mall/share_img_01.png') const img = formatImgUrl(productInfo.texture_url || '/mall/share_img_01.png', '!w400')
setSortCode({ ...userObj.sort_code, shareShortDetail: { title: productName as string, code: resDetail.md5_key, img: img } }) setSortCode({ ...userObj.sort_code, shareShortDetail: { title: productName as string, code: resDetail.md5_key, img: img } })
} }

View File

@ -1,90 +1,88 @@
.address_main{ .address_main {
margin-top: 20px; margin-top: 20px;
} }
.address_title_tag{ .address_title_tag {
font-size: 24px; font-size: 24px;
color: #EE7500; color: #ee7500;
background: rgba(255,230,206,0.36); background: rgba(255, 230, 206, 0.36);
border-radius: 20px 20px 0px 0px; border-radius: 20px 20px 0px 0px;
height: 56px; height: 56px;
display: flex; display: flex;
align-items: center; align-items: center;
position: relative; position: relative;
z-index: 999; z-index: 999;
.miconfont { .miconfont {
font-size: 30px; font-size: 30px;
padding: 0 20px; padding: 0 20px;
} }
} }
.order_address{ .order_address {
height: 178px; min-height: 178px;
background: #ffffff; background: #ffffff;
border-radius: 0 0 20px 20px; border-radius: 0 0 20px 20px;
display: flex; display: flex;
align-items: center; align-items: center;
padding: 30px; padding: 30px;
box-sizing: border-box;
position: relative;
.order_address_icon {
font-size: 50px;
color: $color_main;
position: absolute;
top: 35px;
left: 20px;
}
.order_address_text_con {
flex: 1;
padding-left: 50px;
box-sizing: border-box; box-sizing: border-box;
position: relative; height: 100%;
.order_address_icon{ display: flex;
font-size: 50px; flex-direction: column;
color: $color_main; justify-content: space-between;
position: absolute; .order_address_text_title {
top: 35px; font-size: $font_size_medium;
left: 20px; margin-top: 10px;
} display: flex;
.order_address_text_con{ align-items: center;
flex:1; justify-content: space-between;
padding-left: 50px; .moreIconfont {
box-sizing: border-box; font-size: 20px;
height: 100%; }
display: flex; .address_text {
flex-direction: column; word-break: break-all;
justify-content: space-between;
.order_address_text_title{
font-size: $font_size_medium;
margin-top: 10px;
display: flex;
align-items: center;
justify-content: space-between;
.moreIconfont{
font-size: 20px;
}
.address_text{
word-break:break-all;
font-size: 28px;
font-weight: 700;
}
}
.order_address_text_name{
color: #707070;
align-items: center;
display: flex;
margin-top: 20px;
text{
&:nth-child(1) {
font-size: $font_size_medium;
margin-right: 40px;
}
&:nth-child(2) {
flex:1;
font-size: $font_size_medium;
}
}
}
}
.updateBtn{
width:152px;
font-size: 28px; font-size: 28px;
height: 60px; font-weight: 700;
color:#007AFF; }
z-index: 999;
border: 2px solid #007AFF;
border-radius: 36px;
text-align: center;
line-height: 60px;
} }
.order_address_text_name {
} color: #707070;
align-items: center;
display: flex;
margin-top: 20px;
text {
&:nth-child(1) {
font-size: $font_size_medium;
margin-right: 40px;
}
&:nth-child(2) {
flex: 1;
font-size: $font_size_medium;
}
}
}
}
.updateBtn {
width: 152px;
font-size: 28px;
height: 60px;
color: #007aff;
z-index: 999;
border: 2px solid #007aff;
border-radius: 36px;
text-align: center;
line-height: 60px;
}
}

View File

@ -1,5 +1,5 @@
.main { .main {
background-color: #F8F8F8; background-color: #f8f8f8;
min-height: 100vh; min-height: 100vh;
display: flex; display: flex;
flex-direction: column; flex-direction: column;
@ -17,8 +17,12 @@
} }
.auth-suspension { .auth-suspension {
position: absolute; position: fixed;
left: 0;
top: 0;
z-index: 1; z-index: 1;
width: 100vw;
height: 100vh;
inset: 0; inset: 0;
} }
@ -58,7 +62,7 @@
.arcd-info-left-portrait { .arcd-info-left-portrait {
width: 170px; width: 170px;
height: 170px; height: 170px;
background: rgba(0, 0, 0, 0.00); background: rgba(0, 0, 0, 0);
border: 4px solid #ffffff; border: 4px solid #ffffff;
border-radius: 50%; border-radius: 50%;
overflow: hidden; overflow: hidden;
@ -138,22 +142,21 @@
border-bottom: 2px solid #dddddd; border-bottom: 2px solid #dddddd;
padding: 0 5px 15px; padding: 0 5px 15px;
box-sizing: border-box; box-sizing: border-box;
.card_main_title_order{ .card_main_title_order {
flex:1; flex: 1;
font-size: 28px; font-size: 28px;
font-weight: 700; font-weight: 700;
} }
.order_more{ .order_more {
display: flex; display: flex;
justify-content: flex-end; justify-content: flex-end;
align-items: center; align-items: center;
font-size: 25px; font-size: 25px;
color: #707070; color: #707070;
text{ text {
width: auto; width: auto;
} }
} }
} }
.card-main-title text { .card-main-title text {
@ -181,7 +184,7 @@
.card-main-title-content-item Text { .card-main-title-content-item Text {
font-size: 56px; font-size: 56px;
color: #3C3C3C; color: #3c3c3c;
} }
.card-main-title-content-item-badge { .card-main-title-content-item-badge {
@ -215,8 +218,8 @@
grid-template-columns: repeat(2, 1fr); grid-template-columns: repeat(2, 1fr);
} }
.assets-content>view, .assets-content > view,
.assets-content>navigator { .assets-content > navigator {
text-align: center; text-align: center;
} }
@ -282,7 +285,7 @@
.card-main-list-content-item-right text { .card-main-list-content-item-right text {
font-size: 30px; font-size: 30px;
} }
.card-main-list-content-item .customer { .card-main-list-content-item .customer {
position: absolute; position: absolute;
opacity: 0; opacity: 0;
@ -315,14 +318,14 @@
.auth-status, .auth-status,
.auth-status-ongoing { .auth-status-ongoing {
color: #EE7500; color: #ee7500;
background-color: #FFE6CE; background-color: #ffe6ce;
} }
.auth-status, .auth-status,
.auth-status-adopt { .auth-status-adopt {
color: #007AFF; color: #007aff;
background-color: #CDE5FF; background-color: #cde5ff;
} }
.auth-tips { .auth-tips {
@ -334,7 +337,7 @@
.auth-tips, .auth-tips,
.auth-tips-adopt { .auth-tips-adopt {
color: #ABABAB; color: #ababab;
} }
.auth-tips text { .auth-tips text {
@ -426,7 +429,7 @@
.tips-modal-button { .tips-modal-button {
display: flex; display: flex;
border-top: 1px solid #DDDDDD; border-top: 1px solid #dddddd;
margin-top: 45px; margin-top: 45px;
} }
@ -445,7 +448,7 @@
font-weight: 400; font-weight: 400;
color: #707070; color: #707070;
border-radius: 0; border-radius: 0;
border-right: 1px solid #DDDDDD; border-right: 1px solid #dddddd;
} }
.tips-modal-button button::after { .tips-modal-button button::after {
@ -537,7 +540,7 @@
padding-left: 10px; padding-left: 10px;
width: 100px; width: 100px;
height: 32px; height: 32px;
background: rgba(255, 0, 0, 0.10); background: rgba(255, 0, 0, 0.1);
border-radius: 10px; border-radius: 10px;
color: #ff0000; color: #ff0000;
} }
@ -559,4 +562,4 @@
} }
} }
} }
} }

View File

@ -23,6 +23,7 @@ export default () => {
const handleAuth = async () => { const handleAuth = async () => {
console.log('授权面版') console.log('授权面版')
if (adminUserInfo?.is_authorize_name) return false
getSelfUserInfo() getSelfUserInfo()
.then() .then()
.catch(() => { .catch(() => {
@ -37,26 +38,28 @@ export default () => {
getAdminUserInfo() getAdminUserInfo()
Apiassets() Apiassets()
}) })
const checkGo = () => { const checkGo = async () => {
if ( if (adminUserInfo?.authentication_status !== 4) {
adminUserInfo?.authentication_status === 0 || let res = await Taro.showModal({
adminUserInfo?.authentication_status === 1 ||
adminUserInfo?.authentication_status === 2 ||
adminUserInfo?.authentication_status === 3
) {
Taro.showModal({
title: '提示', title: '提示',
content: '你还未认证,认证后解锁更多功能', content: '你暂未开通授信,目前仅支持线下申请,开通后可使用账期采购。',
cancelText: '稍后认证', cancelText: '稍后认证',
confirmText: '去认证', confirmText: '联系客服',
success: function (res) {
if (res.confirm) {
Taro.navigateTo({ url: '/pages/certification/index' })
} else if (res.cancel) {
console.log('用户点击取消')
}
},
}) })
if (res.confirm) {
Taro.showModal({
content: '联系电话:0757-8270 6695',
cancelText: '取消',
confirmText: '拨打',
success: function (res) {
if (res.confirm) {
Taro.makePhoneCall({
phoneNumber: '(0757)82706695',
})
}
},
})
}
} else { } else {
Taro.navigateTo({ Taro.navigateTo({
url: '/pages/creditLine/index', url: '/pages/creditLine/index',
@ -72,7 +75,7 @@ export default () => {
{/* 测试暂时添加 */} {/* 测试暂时添加 */}
<View style={{ fontSize: '26rpx', color: '#707070', textAlign: 'center' }}>{current_version}</View> <View style={{ fontSize: '26rpx', color: '#707070', textAlign: 'center' }}>{current_version}</View>
{current_env === 'development' && <View style={{ fontSize: '26rpx', color: '#707070', textAlign: 'center' }}>{BASE_URL}</View>} {current_env === 'development' && <View style={{ fontSize: '26rpx', color: '#707070', textAlign: 'center' }}>{BASE_URL}</View>}
{!adminUserInfo?.is_authorize_name && <View onClick={handleAuth} className={styles['auth-suspension']}></View>} {!adminUserInfo?.is_authorize_name && <View onClick={handleAuth} catchMove className={styles['auth-suspension']}></View>}
</View> </View>
) )
} }
@ -133,7 +136,7 @@ const Header = memo((props: any) => {
}) })
} }
return ( return (
<View className={styles.header}> <View className={styles.header} onClick={props.onClick}>
<View className={`${styles.crad} ${styles['header-card']}`}> <View className={`${styles.crad} ${styles['header-card']}`}>
<View className={styles['card-info']}> <View className={styles['card-info']}>
<View className={styles['arcd-info-left']}> <View className={styles['arcd-info-left']}>