2022-07-22 20:46:40 +08:00

101 lines
3.7 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import { Image, Input, Text, View } from '@tarojs/components'
import styles from './index.module.scss'
import useLogin from '@/use/useLogin'
import classnames from "classnames";
import { formatImgUrl } from '@/common/fotmat'
import { useEffect, useMemo, useState } from 'react';
import { alert } from '@/common/common';
import CloseBtn from '@/components/closeBtn';
import SuccessBind from './component/successBind';
import Taro, { useDidShow } from "@tarojs/taro";
import { BindInvitationInfoApi, GetInvitationInfoApi } from '@/api/user';
import { debounce, getFilterData, throttle } from '@/common/util';
export default () => {
useLogin()
useDidShow(() => {
onClipboardData()
})
const [submitData, setSubmitData] = useState({
invitation_code: '',
})
//获取业务员信息
type Param = {invitation_code: string, name: string, phone: string}
const [salesMan, setSalesMan] = useState<Param|null>(null)
const {fetchData: GetInvitationInfoFetchData} = GetInvitationInfoApi()
const getInvitationInfo = async () => {
let res = await GetInvitationInfoFetchData(getFilterData({...submitData}))
res.success?setSalesMan(res.data):setSalesMan(null)
}
useEffect(() => {
if(submitData.invitation_code.length === 4)
getInvitationInfo()
}, [submitData])
const onInputCode = (e) => {
const value = e.detail.value.replace(/[\W]/g, "")
setSubmitData((val) => ({...val, invitation_code:value}))
}
const oncloseEven = () => {
setSubmitData((val) => ({...val, invitation_code:''}))
setSalesMan(null)
}
//绑定业务员
const [bindShow, setBindShow] = useState(false)
const {fetchData: bindInvitationInfoFetchData} = BindInvitationInfoApi()
const onSubmit = async () => {
if(!submitData.invitation_code) return alert.error('请输入邀请码')
let res = await bindInvitationInfoFetchData({...submitData})
if(res.success) setBindShow(() => true)
}
const onScanCode = () => {
Taro.scanCode({
success: (res) => {
setSubmitData(() => ({invitation_code: res.result}))
}
})
}
//获取粘贴版内容
const onClipboardData = () => {
Taro.getClipboardData({
success: function (res){
let val = res.data.match(/InviteCode:([a-zA-Z0-9]{4})/)
setSubmitData((e) => ({...e, invitation_code: val?val[1]:''}))
}
})
}
return (
<View className={styles.bindSalesmanPage_main}>
<View className={styles.header_image}>
<Image src={formatImgUrl('/mall/invite_code_bg.png')} mode="aspectFill"/>
</View>
<View className={styles.inputCode}>
<Input maxlength={4} value={submitData.invitation_code} placeholder='请输入邀请码' onInput={onInputCode} type="text" />
<View className={styles.close_btn} >
{submitData.invitation_code&&<CloseBtn styleObj={{backgroundColor: '#ccc', color: '#fff'}} onClose={oncloseEven}/>}
</View>
<View className={styles.scan_code} onClick={() => onScanCode()}>
<Text className={classnames('iconfont icon-saomazhifu', styles.miconfont)}></Text>
</View>
</View>
{salesMan&&<View className={styles.salesman_name}><Text>:</Text><Text>{`${salesMan.name} (${salesMan.phone})`}</Text></View>}
<View className={styles.btns} onClick={onSubmit}></View>
<View className={styles.message}>
<Text></Text>
<Text>1. 7</Text>
<Text>2. </Text>
</View>
<View className='common_safe_area_y'></View>
<SuccessBind show={bindShow} onClose={() => setBindShow(false)} saleMan={salesMan?.name}/>
</View>
)
}