import React, { useState ,useRef} from 'react' import { connect } from "react-redux"; import { Modal,Form,Row,Col,Spin,Notification } from '@douyinfe/semi-ui'; import { IconTickCircle } from '@douyinfe/semi-icons'; function nvrModal(props){ const {modalName}=props const { dispatch, actions, user, loading,vender,close } = props; const nvrData = props.nvrData||{}//修改时传来的值 // console.log('nvrDatanvrDatanvrData',nvrData); const form = useRef(); const [visible, setVisible] = useState(false);//是否显示弹框 const [isloading,setloading] = useState(false);//是否显示loading const [loadingTip,setloadingTip] = useState('获取中...请稍后...');//loading tip的值 const [step,setstep] = useState(0)//第几步 const [okText,setokText] = useState('测试校验')//ok弹框text 右边 const [cancelText,setcancelText] = useState('取消')//取消弹框text 左边 const [formObj,setformObj] = useState()//接口入参 const opts ={//添加完成确认后通知 title:'Hi', content:'添加成功', duration:3 } function showDialog() {//打开弹框 setVisible(true); } function positionForm(val){ let zz = /^(-?\d+)(\.\d+)?$/ if(!val){ return '请输入或拾取高德经纬度坐标' } else if(val.split(',').length!=2){ return '请输入格式为116.354169,39.835452的经纬度坐标' } else if(!zz.test(val.split(',')[0])){ return '只能填写数字' } else if(!zz.test(val.split(',')[1])){ return '只能填写数字' } else{ return '' } } function handleOk() {//点击弹框确定 右边按钮 if(step==0){ form.current.validate() .then(values=>{//表单校验成功 let valuesObj=JSON.parse(JSON.stringify(values)) valuesObj.longitude=values.position.split(',')[0] valuesObj.latitude=values.position.split(',')[1] delete valuesObj.position if(nvrData.id){ valuesObj.id=nvrData.id } console.log('valuesObjvaluesObj',valuesObj); setformObj(valuesObj) setloading(true); setTimeout(() => { setloadingTip('...接受成功') setTimeout(()=>{ setloadingTip('已完成') setTimeout(() => { setstep(1); setokText('确认'); setcancelText('上一步'); setloading(false); }, 2000); },2000) }, 2000); }) .catch(errors=>{//表单校验失败 console.log('errors',errors); }) } else{ dispatch(actions.equipmentWarehouse.addchangeNvr(formObj)).then(res => { Notification.success(opts) setVisible(false); close(); }) } } function handleAfterClose(){//在关闭之后 setstep(0); setokText('测试校验'); setcancelText('取消'); } function handleCancel() {//点击弹框取消 左边按钮 if(step==0){ setVisible(false); } else{ setstep(0); setokText('测试校验'); setcancelText('取消'); } } function handleLocation(){//高德经纬度 window.open('https://lbs.amap.com/tools/picker','_blank') } return ( <>