import { CoverView, Image, Input, Swiper, SwiperItem, Text, View } from '@tarojs/components' import Taro from '@tarojs/taro' import type { Ref } from 'react' import { forwardRef, useEffect, useImperativeHandle, useState } from 'react' import classnames from 'classnames' import Dialog from '../Dialog' import NormalButton from '../normalButton' import LayoutBlock from '../layoutBlock' import IconText from '../iconText' import IconFont from '../iconfont/iconfont' import InputX from '../InputX' import styles from './index.module.scss' import { formatImgUrl } from '@/common/fotmat' import { alert, goLink } from '@/common/common' import CloseBtn from '@/components/closeBtn' import { getCDNSource } from '@/common/constant' import { getFilterData } from '@/common/util' import { BindInvitationInfoApi, GetInvitationInfoApi } from '@/api/user' // 获取业务员信息 interface Param { invitation_code: string; name: string; phone: string } interface params { onSuccess?: () => void } export interface SalesManDialogRef { show: boolean handleChange: (show: boolean) => void } const BindSalesManDialog = ({ onSuccess }: params, ref: Ref) => { const [isError, setError] = useState(false) const [show, setShow] = useState(false) const [submitData, setSubmitData] = useState({ invitation_code: '', }) const [salesMan, setSalesMan] = useState(null) const { fetchData: GetInvitationInfoFetchData } = GetInvitationInfoApi() const getInvitationInfo = async() => { const res = await GetInvitationInfoFetchData({ invitation_code: submitData.invitation_code }) if (res.success) { setSalesMan(res.data) setError(false) } else { setSalesMan(null) setError(true) } } const onInputCode = (e) => { const value = e.detail.value.replace(/[\W]/g, '') if (value === '') { setError(false) setSubmitData({ invitation_code: '' }) } else { setSubmitData(val => ({ ...val, invitation_code: value })) } } const oncloseEven = () => { setSubmitData(val => ({ ...val, invitation_code: '' })) setSalesMan(null) setError(false) } const handleChange = (value) => { setShow(value) } const onCloseEven = () => { handleChange(false) } const { fetchData: bindInvitationInfoFetchData } = BindInvitationInfoApi() const handleConfirm = async() => { if (!submitData.invitation_code) { return alert.error('请输入邀请码') } const res = await bindInvitationInfoFetchData({ ...submitData }) if (!res.success) { console.log('res', res) setError(true) } else { onCloseEven() onSuccess?.() } } const onScanCode = () => { Taro.scanCode({ success: (res) => { const val = res.result.match(/InviteCode:([a-zA-Z0-9]{4})/) setSubmitData(() => ({ invitation_code: val ? val![1] : '' })) }, }) } // 获取粘贴版内容 const onClipboardData = () => { Taro.getClipboardData({ success(res) { const val = res.data.match(/InviteCode:([a-zA-Z0-9]{4})/) if (val) { setSubmitData(e => ({ ...e, invitation_code: val ? val[1] : '' })) } }, }) } useEffect(() => { if (show) { onClipboardData() } }, []) useEffect(() => { if (submitData.invitation_code.length === 4) { getInvitationInfo() } }, [submitData]) useImperativeHandle( ref, () => { return { show, handleChange, } }, [show], ) const onCustomer = async() => { const res = await Taro.showModal({ title: '是否拨打服务热线', confirmText: '拨打', content: '(0757) 8270 6695', cancelText: '取消', }) if (res.confirm) { Taro.makePhoneCall({ phoneNumber: '(0757)82706695', }) } } return ( 陆盈商城服务 欢迎使用!填写邀请码 {submitData.invitation_code && } onScanCode()}> {(salesMan && !isError) ? 邀请人:{salesMan?.name} {salesMan?.phone} : null} {(submitData.invitation_code && isError) ? 邀请码错误 : null} 1、联系自己的专属客户经理获取邀请码 2、私聊客服进行获取- 确定 ) } export default forwardRef(BindSalesManDialog)