import { Button, CustomWrapper, Image, RichText, Text, View } from '@tarojs/components' import Taro, { useDidShow, usePullDownRefresh, useRouter, useShareAppMessage } from '@tarojs/taro'; import classnames from "classnames"; import DesSwiper from './components/swiper'; import OrderCount from './components/orderCount'; import ShopCart from '@/components/shopCart'; import Preview,{colorItem} from './components/preview'; import styles from './index.module.scss' import { useEffect, useMemo, useRef, useState } from 'react'; import {formatHashTag, formatImgUrl} from '@/common/fotmat' import {GetProductDetailApi} from '@/api/material' import useLogin from '@/use/useLogin'; import { AnalysisShortCodeApi, BindShortCodeApi, GetShortCodeApi } from '@/api/share'; import { SHARE_SCENE } from '@/common/enum'; import useUserInfo from '@/use/useUserInfo'; import LabAndImg from '@/components/LabAndImg'; import { alert } from '@/common/common'; type item = {title:string, img:string, url:string, id:number} type Params = { list?: item[] swiperOnClick?: (val: item) => void, style?: Object } export default (props:Params) => { const {checkLogin, getPhoneNumber, userInfo} = useLogin() //获取参数(有两种参数:1.商品id, 2.页面分享) const router = useRouter() const [params, setParams] = useState({id: '', share: null}) //判断是否是分享过来的参数 const judgeParam = async () => { if(router.params.id) { setParams({...params, id:router.params.id}) }else if(router.params.share) { analysisShortCode() } } //解析短码参数 const {fetchData: fetchDataAnalysisShortCode} = AnalysisShortCodeApi() const analysisShortCode = async () => { let res = await fetchDataAnalysisShortCode({md5_key: router.params.share}) setParams({id: res.data.product_id, share: res.data}) } useDidShow(() => { checkLogin() judgeParam() setShowCart(false) }) useEffect(() => { if(params.id) { getProductDetail() } }, [params]) //获取数据 const [productInfo, setProductInfo] = useState({}) const {fetchData} = GetProductDetailApi() const getProductDetail = async () => { let {data} = await fetchData({id: params.id}) setProductInfo(data) Taro.stopPullDownRefresh() } useEffect(() => { if(productInfo.code) getShortCode() }, [productInfo]) //面料名称 const productName = useMemo(() => { return formatHashTag(productInfo.code, productInfo.name) },[productInfo]) const [showCart, setShowCart] = useState(false) const [showOrderCount, setShowOrderCount] = useState(false) // const html = ` // // ` const html = `` //弹窗提示 const [colorInfo, setColorInfo] = useState() const [showPreview, setShowPreview] = useState(false) const getColorItem = (item) => { setColorInfo({ title: item.code, img: item.texture_url, }) setShowPreview(true) } //收藏功能 const [collectStatus, setCollectStatus] = useState(false) const changeCollect = () => { setCollectStatus(!collectStatus) Taro.showToast({ title: '收藏成功', icon: 'success', duration: 2000 }) } const {setSortCode, userInfo : userObj } = useUserInfo() //详情页获取分享短码 const {ShareDetail} = SHARE_SCENE const {fetchData: fetchDataShortCode} = GetShortCodeApi() const getShortCode = async () => { const {data: resDetail} = await fetchDataShortCode({"share_user_id": userObj.adminUserInfo.user_id, type:ShareDetail.value, product_id: parseInt(params.id)}) setSortCode({... userObj.sort_code, shareShortDetail: {title: productName as string, code: resDetail.md5_key, img:''}}) } //授权手机号和下单 const placeOrder = async (status = 'to_phone',e:any = {}) => { if(!productInfo.id) return false if(status == 'to_phone') { if(!e.detail.code) return alert.error('请授权手机号') try { await getPhoneNumber(e.detail.code) } catch(msg) { Taro.showToast({ icon:"none", title: msg }) return false } } setShowOrderCount(true) } //页面下拉刷新 usePullDownRefresh(() => { getProductDetail() }) return ( {productName} {productInfo.describe} 分享 changeCollect()}> 收藏 详情参数 编号:{productInfo.code} 幅宽:{productInfo.width} 克重:{productInfo.weight_density} 成分:{productInfo.component} 色号 ({productInfo?.product_color_list?.length}) {productInfo?.product_color_list?.map(item => { return getColorItem(item)}> {item.code} })} setShowCart(true)}> 购物车 { (!userInfo.adminUserInfo?.is_authorize_phone)&& 选购商品 || placeOrder('to_order')}>选购商品 } setShowOrderCount(false)} title={productName} productId={productInfo.id}/> setShowCart(false)}/> setShowPreview(false)}/> ) }