diff --git a/src/common/constant.ts b/src/common/constant.ts index 2f06165..32af514 100644 --- a/src/common/constant.ts +++ b/src/common/constant.ts @@ -1,4 +1,4 @@ -export const BASE_URL = CURRENT_BASE_URL +// export const BASE_URL = CURRENT_BASE_URL // export const BASE_URL = `http://192.168.0.75:50001/lymarket` // export const BASE_URL = `http://192.168.0.89:50001/lymarket` // export const BASE_URL = `http://10.0.0.5:50001/lymarket` @@ -12,7 +12,7 @@ export const BASE_URL = CURRENT_BASE_URL // export const BASE_URL = `https://dev.zzfzyc.com/lymarket` // 开发环境 // export const BASE_URL = 'https://www.zzfzyc.com/lymarket' // 正式环境 // export const BASE_URL = `http://192.168.1.5:40001/lymarket` // 王霞 -// export const BASE_URL = 'http://192.168.1.7:50002/lymarket' // 添 +export const BASE_URL = 'http://192.168.1.7:50002/lymarket' // 添 // export const BASE_URL = 'http://192.168.1.28:50002/lymarket' // 婷 // export const BASE_URL = `http://192.168.1.42:50002/lymarket` // 杰 diff --git a/src/components/customer/index.module.scss b/src/components/customer/index.module.scss new file mode 100644 index 0000000..c656bed --- /dev/null +++ b/src/components/customer/index.module.scss @@ -0,0 +1,65 @@ +.customer_service_list { + .customer_service_title { + width: 100%; + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + padding: 24px; + box-sizing: border-box; + text { + &:nth-child(1) { + font-size: 32px; + font-weight: 500; + color: #000000; + } + &:nth-child(2) { + font-size: 24px; + font-weight: 400; + color: rgba(0, 0, 0, 0.4); + } + } + } + .customer_service_con { + padding: 0 32px; + .customer_service_item { + display: flex; + align-items: center; + padding: 32px 40px; + box-sizing: border-box; + width: 686px; + height: 136px; + background: #ffffff; + box-shadow: 0px 0px 28px -3px rgba(0, 0, 0, 0.06); + border-radius: 16px; + margin-bottom: 16px; + position: relative; + button { + position: absolute; + width: 100%; + height: 100%; + top: 0; + left: 0; + opacity: 0; + } + .customer_service_item_con { + display: flex; + flex-direction: column; + flex: 1; + margin-left: 24px; + text { + &:nth-child(1) { + font-size: 28px; + } + &:nth-child(2) { + font-size: 24px; + color: rgba(0, 0, 0, 0.4); + } + } + } + .customer_service_item_icon { + transform: rotate(-90deg); + } + } + } +} diff --git a/src/components/customer/index.tsx b/src/components/customer/index.tsx new file mode 100644 index 0000000..2e3216f --- /dev/null +++ b/src/components/customer/index.tsx @@ -0,0 +1,66 @@ +import { Button, Text, View } from '@tarojs/components' +import Taro from '@tarojs/taro' +import { useState } from 'react' +import styles from './index.module.scss' +import IconFont from '@/components/iconfont/iconfont' +import Popup from '@/components/popup' +import { useSelector } from '@/reducers/hooks' +import { alert } from '@/common/common' + +interface Param { + onClose?: () => void + show: boolean, + messageTitle?: string, + messagePath?: string + showCard?: true|false +} +export default (props: Param) => { + const userInfo = useSelector(state => state.userInfo) + const makePhoneCall = () => { + if (!userInfo?.adminUserInfo?.sale_user_phone) { return alert.error('手机号不能为空') } + Taro.makePhoneCall({ + phoneNumber: userInfo?.adminUserInfo?.sale_user_phone, + }) + } + const onClose = () => { + props.onClose?.() + } + + return + + + 请选择您要的服务 + {/* 我们根据选择为您提供服务 */} + + + + + + 在线官方客服 + 竭诚为您服务! + + + + + + + {!!userInfo?.adminUserInfo?.sale_user_phone && + + + 客户经理 + 点击拨打{userInfo?.adminUserInfo?.sale_user_phone} + + + + + } + + + +} diff --git a/src/components/moveBtn copy/index.module.scss b/src/components/moveBtn copy/index.module.scss new file mode 100644 index 0000000..852fee9 --- /dev/null +++ b/src/components/moveBtn copy/index.module.scss @@ -0,0 +1,54 @@ +.movableItem { + width: 100%; + height: 100%; +} +.moveBtn { + width: 100px; + height: 100px; + border-radius: 50%; + border: 2px solid #cde5ff; + box-shadow: 0px 0px 20px 0px rgba(104, 180, 255, 0.7); + background-color: #fff; + display: flex; + justify-content: center; + align-items: center; + z-index: 999; + position: fixed; + image { + width: 100%; + height: 100%; + } + .shop_icon { + font-size: 70px; + color: $color_main; + } + .product_num { + position: absolute; + font-size: 23px; + background-color: red; + color: #fff; + height: 36px; + line-height: 36px; + padding: 0 6px; + border-radius: 72px; + min-width: 25px; + text-align: center; + top: 0; + right: 0; + } + .wxBtn { + position: absolute; + width: 100%; + height: 100%; + top: 0; + left: 0; + opacity: 0; + } +} +.no_bg_moveBtn { + box-shadow: none; + background-color: transparent; + border: none; + width: 130px; + height: 130px; +} diff --git a/src/components/moveBtn copy/index.tsx b/src/components/moveBtn copy/index.tsx new file mode 100644 index 0000000..980c0ea --- /dev/null +++ b/src/components/moveBtn copy/index.tsx @@ -0,0 +1,113 @@ +import { Button, Image, MovableArea, MovableView, View } from '@tarojs/components' +import Taro, { useDidShow, useReady, useRouter } from '@tarojs/taro' +import type { ReactElement } from 'react' +import { useEffect, useLayoutEffect, useRef, useState } from 'react' +import classnames from 'classnames' +import styles from './index.module.scss' +import { GetShoppingCartApi } from '@/api/shopCart' +import useCommonData from '@/use/useCommonData' +import { useSelector } from '@/reducers/hooks' +import { alert } from '@/common/common' +import { formatImgUrl } from '@/common/fotmat' +import Customer from '../customer' + +type ShowStatus = 'shop'|'customer'|'order' +interface param { + children?: ReactElement | null + onClick?: () => void + showList?: ShowStatus[] + orderInfo?: any +} +const MoveBtn = ({ children = null, onClick, showList = [], orderInfo }: param) => { + const userInfo = useSelector(state => state.userInfo) + // 获取购物车数据数量 + const { getShopCount, commonData } = useCommonData() + + const [screenHeight, setScreenHeight] = useState<{ shop?: number; customer?: number; order?: number }>({ + shop: 0, + customer: 0, + order: 0, + }) + const [showMoveBtn, setShowMoveBtn] = useState(false) + const screenWidthRef = useRef(0) + useEffect(() => { + Taro.nextTick(() => { + const res = Taro.getSystemInfoSync() + if (res.screenHeight) { + const ratio = 750 / res.screenWidth + const num = res.screenHeight * ratio + setScreenHeight(() => ({ shop: num - 460, customer: num - 580, order: num - 700 })) + screenWidthRef.current = res.screenWidth / 2 + } + setShowMoveBtn(true) + }) + }, []) + + useDidShow(() => { + getShopCount() + }) + + const onShow = (val: ShowStatus) => { + if (showList.length <= 0) { return true } + return showList.includes(val) + } + + const onPhone = () => { + if (!userInfo?.adminUserInfo?.sale_user_phone) { return alert.error('手机号不能为空') } + Taro.makePhoneCall({ + phoneNumber: userInfo?.adminUserInfo?.sale_user_phone, + }) + } + + const [customer_service_show, set_customer_service_show] = useState(false) + const customerClose = () => { + set_customer_service_show(false) + } + + return ( + + {children} + {onShow('shop') && + + {commonData.shopCount > 0 && {commonData.shopCount > 99 ? '99+' : commonData.shopCount}} + } + {onShow('order') && + + + + } + {onShow('customer') && + + } + + + ) +} + +export default MoveBtn diff --git a/src/components/moveBtn/index.tsx b/src/components/moveBtn/index.tsx index 82644d5..ceb1559 100644 --- a/src/components/moveBtn/index.tsx +++ b/src/components/moveBtn/index.tsx @@ -9,15 +9,18 @@ import useCommonData from '@/use/useCommonData' import { useSelector } from '@/reducers/hooks' import { alert } from '@/common/common' import { formatImgUrl } from '@/common/fotmat' +import Customer from '../customer' type ShowStatus = 'shop'|'customer'|'order' interface param { children?: ReactElement | null - onClick?: () => void + onShopClick?: () => void showList?: ShowStatus[] - orderInfo?: any + messageTitle: string + messagePath: string + showCart: false|true } -const MoveBtn = ({ children = null, onClick, showList = [], orderInfo }: param) => { +const MoveBtn = ({ children = null, onShopClick, showList = [], messageTitle = '', messagePath = '', showCart }: param) => { const userInfo = useSelector(state => state.userInfo) // 获取购物车数据数量 const { getShopCount, commonData } = useCommonData() @@ -58,11 +61,16 @@ const MoveBtn = ({ children = null, onClick, showList = [], orderInfo }: param) }) } + const [customer_service_show, set_customer_service_show] = useState(false) + const customerClose = () => { + set_customer_service_show(false) + } + return ( {children} {onShow('shop') && 0 && {commonData.shopCount > 99 ? '99+' : commonData.shopCount}} } {onShow('order') && set_customer_service_show(true) } className={styles.moveBtn} direction="all" inertia x="630rpx" y={`${screenHeight.order}rpx`} - > - - - - } - {onShow('customer') && } + ) }