import { Form, Input, Modal, Select, DatePicker } from 'antd'; import { DownOutlined } from '@ant-design/icons'; import React, { useState, useEffect } from 'react'; import { connect } from 'react-redux'; import { getUserList, getProjectList, positionList } from '../actions/plan'; import moment from 'moment'; const { RangePicker } = DatePicker; const PlanModal = ({ visible, onCreate, onCancel, dispatch, userLoading, userList, structureList, struLoading, type, curRecord, templateLoading, patrolTemplate }) => { const [userOpt, setUserOpt] = useState(); const [struOpt, setStruOpt] = useState(); const [pointOpt, setPointOpt] = useState(); const [points, setPoints] = useState(); const [unit, setUnit] = useState(curRecord?.frequency ? curRecord.frequency.substring(curRecord.frequency.length - 3, curRecord.frequency.length) : "次/天"); const [form] = Form.useForm(); useEffect(() => { if (type === 'view') { } else { dispatch(getUserList()) dispatch(getProjectList()) } if (type === 'edit' || type === 'view') { dispatch(positionList({ projectId: curRecord?.project?.id })).then(res => { if (res.success) { setPoints(res.payload.data?.rows) setPointOpt(res.payload.data?.rows[0]?.points?.map(p => ({ label: p.name, value: p.id }))) } }) } }, []) useEffect(() => { if (userList.length) { setUserOpt(userList?.filter(f => f.structure?.includes(curRecord?.project?.id))?.map(u => ({ label: u.name, value: u.id }))) // 如果巡检人员用户被删除,筛掉被删除的用户 const userListIds = userList?.map(u => u.id); const filterUsers = curRecord?.users?.filter(u => userListIds.includes(u.id)); const nextUserIds = filterUsers?.map(u => u.id); form.setFieldsValue({ userIds: nextUserIds, userDept: [...new Set(filterUsers?.map(u => u.department?.name))].join() }); } }, [userList]) useEffect(() => { if (structureList?.rows?.length) { setStruOpt(structureList?.rows?.map(s => ({ label: s.name, value: s.id }))) } }, [structureList]) const selectAfter = ( ); return ( { form.resetFields(); onCancel(); }} onOk={() => { if (type === 'view') { form.resetFields(); onCancel(); return; } form .validateFields() .then((values) => { form.resetFields(); const params = { ...values, frequency: values.frequency + unit, startTime: values.time[0], endTime: values.time[1], points: points[0]?.points?.filter(p => values?.points?.includes(p.id)) } onCreate(params); }) .catch((info) => { console.log('Validate Failed:', info); }); }} >
p.id), userIds: curRecord?.users?.map(u => u.id), userDept: [...new Set(curRecord?.users?.map(u => u.department?.name))].join(), frequency: curRecord?.frequency?.split('次')[0] }} disabled={type === 'view'} >
); }; function mapStateToProps(state) { const { auth, userList, structureList, patrolTemplate } = state return { user: auth.user, userList: userList.data || [], structureList: structureList.data || [], patrolTemplate: (patrolTemplate.data || { rows: [] }).rows, userLoading: userList.isRequesting, struLoading: structureList.isRequesting, templateLoading: patrolTemplate.isRequesting, } } export default connect(mapStateToProps)(PlanModal);