tsg-web/src/views/zbgl/zbrz/form.js

238 lines
6.7 KiB
JavaScript
Raw Normal View History

2024-09-20 15:02:50 +08:00
import React,{useEffect,useState,useMemo} from 'react';
import { Form, Button, Input, Row, Col, DatePicker, TreeSelect,Image,message,Upload } from 'antd';
import { formItemLayout, btnItemLayout } from '../../../components/crud/FormLayoutProps';
import apiurl from '../../../service/apiurl';
import { httpget2, httppost2,xyt_httpget2 } from '../../../utils/request';
import "./index.less"
import moment from 'moment';
const url = "http://223.75.53.141:9102/test.by-lyf.tmp"
const { Dragger } = Upload;
const ModalForm = ({ mode, record,onEdit,onSave,onCrudSuccess }) => {
const [form] = Form.useForm();
const [deptList, setDeptList] = useState([])
const [deptUserList, setDeptUserList] = useState([])
// 获取部门数据
const getDeptList = async() => {
try {
const result = await xyt_httpget2(apiurl.rcgl.zbgl.zbb.deptlist);
if (result.code == 200) {
setDeptList(result.data);
getDeptUser()
}
} catch (error) {
console.log(error);
}
}
// 获取部门人员数据
const getDeptUser = async(deptId) => {
try {
const result = await xyt_httpget2(apiurl.rcgl.zbgl.zbb.userList, {pageNum:1,pageSize:9999});
if (result.code == 200) {
setDeptUserList(result.rows)
}
} catch (error) {
console.log(error);
}
}
const buildTree = (data, parentId) => {
let tree = [];
data.forEach((node) => {
node.title = node.deptName;
node.key = node.deptId;
if (node.parentId === parentId) {
let children = buildTree(data, node.deptId);
if (children.length) {
node.children = children;
}
tree.push(node);
}
});
return tree;
}
const handleTreeList = (dept, user) => {
const deptArr = dept.map(item => {
return {
...item,
value: item.deptId,
title: item.deptName,
disabled: item.userId ? false : true,
children: user.filter(u => u.deptId == item.deptId).map(u => ({
...u,
value: u.userId,
title: u.nickName
}))
}
})
console.log("deptArr",deptArr);
const treelist = buildTree(deptArr,0)
return treelist
}
const treeList = useMemo(() => {
if (deptUserList?.length > 0 && deptList?.length > 0) {
return handleTreeList(deptList,deptUserList)
} else {
return []
}
},[deptUserList,deptList])
const onFinish = async (values) => {
if (mode === 'edit') {
values.id = record?.id
onEdit(apiurl.rcgl.zbgl.zbrz.edit,values)
}
if (mode === 'save') {
onSave(apiurl.rcgl.zbgl.zbrz.save,values)
}
}
2024-10-21 11:13:02 +08:00
// 根据年月日查询人员
const getRotaUser = async (date) => {
try {
const result = await httpget2(apiurl.rcgl.zbgl.zbrz.rotaUser, {rotaDate: moment(date).format('YYYY-MM-DD')});
if (result.code == 200 && mode == "save") {
const dept = result.data.find(item => item.rotaType == 2).userId;
const lead = result.data.find(item => item.rotaType == 1).userId;
form.setFieldValue("dutyUserId",dept)
form.setFieldValue("leaderUserId",lead)
}
} catch (error) {
console.log(error);
}
}
2024-09-20 15:02:50 +08:00
useEffect(() => {
getDeptList()
// getDeptUser()
}, [])
return (
<>
<Form
form={form}
{...formItemLayout}
onFinish={onFinish}
initialValues={record}
>
<Row>
<Col span={12}>
<Form.Item
label="值班日期"
name="rotaDate"
rules={[{ required: true }]}
getValueFromEvent={(e, dateString) => dateString}
getValueProps={value => ({
value: value ? moment(value) : undefined
})}
>
2024-10-21 11:13:02 +08:00
<DatePicker allowClear style={{ width: '100%' }} disabled={mode==='view'} onChange={e => getRotaUser(e)} />
2024-09-20 15:02:50 +08:00
</Form.Item>
</Col>
<Col span={12}>
<Form.Item
label="天气"
name="weather"
>
<Input disabled={mode==='view'} style={{width:'100%'}} allowClear />
</Form.Item>
</Col>
</Row>
<Row>
<Col span={12}>
<Form.Item
label="值班人员"
name="dutyUserId"
rules={[{ required: true }]}
>
<TreeSelect
showSearch
style={{
width: '100%',
}}
disabled={mode==='view'}
dropdownStyle={{
maxHeight: 400,
overflow: 'auto',
}}
allowClear
treeDefaultExpandAll
treeData={treeList}
treeNodeFilterProp='title'
/>
</Form.Item>
</Col>
<Col span={12}>
<Form.Item
label="值班领导"
name="leaderUserId"
>
<TreeSelect
showSearch
disabled={mode==='view'}
style={{
width: '100%',
}}
dropdownStyle={{
maxHeight: 400,
overflow: 'auto',
}}
allowClear
treeDefaultExpandAll
treeData={treeList}
treeNodeFilterProp='title'
/>
</Form.Item>
</Col>
</Row>
<Row>
<Col span={24}>
<Form.Item
label="值班情况"
name="dutySituation"
labelCol={{ span: 3 }}
wrapperCol={{ span: 19 }}
rules={[{ required: true }]}
>
<Input.TextArea disabled={mode==='view'} style={{width:'100%'}} allowClear />
</Form.Item>
</Col>
</Row>
<Row>
<Col span={24}>
<Form.Item
label="待处理事项"
name="todoList"
labelCol={{ span: 3 }}
wrapperCol={{ span: 19 }}
>
<Input.TextArea disabled={mode==='view'} style={{width:'100%'}} allowClear />
</Form.Item>
</Col>
</Row>
{
mode==='view'?null:(
<>
<Form.Item {...btnItemLayout}>
<Button type="primary" htmlType="submit">
{mode === 'save' ? '提交' : '修改'}
</Button>
</Form.Item>
</>
)
}
</Form>
</>
);
}
export default ModalForm;