import React from 'react'; import Taro from '@tarojs/taro'; import { View } from '@tarojs/components'; import { Field, Cell, CellGroup } from '@antmjs/vantui'; import LocType from '@/components/LocType'; import IssueType from '@/components/IssueType'; import OrgPicker from '@/components/OrgPicker'; import DatePicker from '@/components/DatePicker'; import Map from '@/components/map'; import Uploader from '@/components/Uploader/index'; import { getDateStr } from '@/utils/date'; import mapIcon from '@/assets/icons/marker.png'; import { PROCESS_END } from '@/utils/biz'; import IssueStatus from './IssueStatus'; const today = new Date(); export default (props) => { const { issue, readOnly, showOrg, showExpireDate, renderFields, renderAction } = props; const fmRef = React.useRef({ typeId: undefined, typeName: undefined, locId: undefined, locName: undefined, location: undefined, addr: undefined, content: undefined, attachList: [], }); const [formData, setFormData] = React.useState(fmRef.current); const [showLocType, setShowLocType] = React.useState(false); const [showIssueType, setShowIssueType] = React.useState(false); const [showOrgPicker, setShowOrgPicker] = React.useState(false); const [showDatePicker, setShowDatePicker] = React.useState(false); // 办结时间 const endDate = React.useMemo(() => { if (!formData) return null; // 如果单子办结了就是实际办结时间 // 否则就是预计办结时间 return formData.processNode == PROCESS_END ? formData.endDate : formData.expireDate; }, [formData]); const onLocTypeChange = (_, it) => { const data = { ...fmRef.current, locId: it.typeId, locName: it.name, } fmRef.current = data; setFormData(data); setShowLocType(false); } const onIssueTypeChange = (_, it) => { const data = { ...fmRef.current, typeId: it.typeId, typeName: it.name, } fmRef.current = data; setFormData(data); setShowIssueType(false); } const onOrgChange = (_, it) => { const data = { ...fmRef.current, orgId: it.orgId, orgName: it.name, } fmRef.current = data; setFormData(data); setShowOrgPicker(false); } const onDateChange = (dt) => { const date = getDateStr(dt); const data = { ...fmRef.current, expireDate: date, } fmRef.current = data; setFormData(data); setShowDatePicker(false); } const setFieldChange = (field, value) => { const data = { ...fmRef.current, [field]: value, } fmRef.current = data; setFormData(data); } React.useEffect(() => { if (issue) { fmRef.current = issue; setFormData(issue); } }, [issue]); return ( setShowLocType(false)} onChange={onLocTypeChange} /> setShowIssueType(false)} onChange={onIssueTypeChange} /> setShowOrgPicker(false)} onChange={onOrgChange} /> setShowDatePicker(false)} onChange={onDateChange} /> !formData.location && setFieldChange('location', e)} /> !readOnly && setShowLocType(true)} /> setFieldChange('addr', e.detail)} /> { readOnly && ( ) } !readOnly && setShowIssueType(true)} /> setFieldChange('content', e.detail)} /> setFieldChange('attachList',e)} /> } /> { (showOrg || showExpireDate) && ( { showOrg && ( !readOnly && setShowOrgPicker(true)} /> ) } { showExpireDate && ( !readOnly && setShowDatePicker(true)} /> ) } ) } { renderFields ? renderFields( formData, { setFieldChange, setFormData, showOrgPicker, setShowOrgPicker, } ) : null } { renderAction ? ( {renderAction(formData)} ) : null } ) }