import type { CommonEventFunction, TextareaProps } from '@tarojs/components' import { Button, Image, Text, Textarea, View } from '@tarojs/components' import type { Ref } from 'react' import { forwardRef, memo, useCallback, useEffect, useImperativeHandle, useMemo, useRef, useState } from 'react' import classNames from 'classnames' import styles from './index.module.scss' import Popup from '@/components/popup' import NormalButton from '@/components/normalButton' interface Params { title?: string value?: string isCompanyName?: boolean save: (value: any) => void // 确定保存 } export interface ModifyModalRef { setModalShow: (val: boolean) => void } const ModifyModal = (props: Params, ref: Ref) => { const { title = '修改昵称', value: _value = '', isCompanyName = false } = props const [value, setValue] = useState('') const [tipsComp, setTipsComp] = useState(null) // 不合法状态 const isInvalidate = useMemo(() => { let flag = false // 仅允输入类型为数字、英文、中文 const Reg = /^[a-zA-Z0-9\u4E00-\u9FA5]+$/ if (!Reg.test(value)) { flag = true setTipsComp(() => { return 仅允许驶入类型为数字、英文、中文,禁止输入其他任何字符 }) return flag } // 修改组织名称 if (isCompanyName) { // TODO 检测是否没机会修改 if (true) { flag = false setTipsComp(() => { return 公司名称是辨识您身份的重要依据, 请谨慎修改。(仅支持修改一次) }) } else { flag = true setTipsComp(() => { return 您修改的次数已达到上限! 如需修改,请联系业务经理修改。 }) } } return flag }, [value, isCompanyName]) useEffect(() => { setValue(_value) }, [_value]) // popup输入长度 const handleTextareaInput: CommonEventFunction = (ev) => { setValue(ev.detail.value.slice(0, 20)) } // 重置 const handleTextareaReset = () => { setValue('') } const [textareaBottom, setTextareaBottom] = useState(0) const handleBlur: CommonEventFunction = () => { setTextareaBottom(0) } const handleFocus: CommonEventFunction = (ev) => { setTextareaBottom(ev.detail.height) } const [modalShow, setModalShow] = useState(false) useImperativeHandle(ref, () => ({ setModalShow })) return ( setModalShow(false)} title={title} show={modalShow}>