import React, { useState, useEffect } from 'react';
import {
InputNumber,
message,
Modal,
Calendar,
Popover,
Form,
Input,
Row,
Col,
List,
Button,
} from 'antd';
import styles from './index.less';
import moment from 'moment';
function CalendarModal(props) {
const { allType, projectList, visible, onOk, onCancel, data, title, footer, loading } = props;
const [form] = Form.useForm();
const [type, setType] = useState({});
const [edit, setEdit] = useState(false);
const [validRange, setValidRange] = useState(null);
const [current, setCurrent] = useState({
date: null,
list: [],
});
const handleOk = () => {
form.validateFields().then(values => {
let params = [];
Object.keys(values).forEach(type_id => {
if (type_id == 'comment') return;
let item = values[type_id];
params.push({
type_id: Number(type_id),
comment: values.comment,
data: data.time.map(obj => ({
id: obj.id,
project_id: Number(obj.project_id),
workload: item[obj.time],
day: obj.time,
})),
});
});
onOk(params);
});
};
const itemRender = item => {
let name;
if (item.project_id == '0') {
let pid = allType[item.type_id].parent_id;
name = allType[pid].name;
} else {
name = projectList.find(p => p.ID == item.project_id)?.Name;
}
// if (edit) {
// return (
//
// {allType[item.type_id].name}
// {form.getFieldDecorator(`${item.type_id}.${item.time}`, {
// initialValue: item?.workload,
// })()}
//
// );
// } else {
return (
{name}-{allType[item.type_id].name}:{item.workload}小时
);
// }
};
const dateCellRender = value => {
let current = value.format('YYYY-MM-DD');
let list = data.time.filter(item => item.time == current);
let total = list.reduce((total, item) => total + item.workload, 0);
if (list.length == 0) return;
// if (!edit) {
return {list.map(itemRender)}}>本日工时: {total} ;
// } else {
// return {list.map(itemRender)}
;
// }
};
const onChangeDate = value => {
let time = value.format('YYYY-MM-DD');
setCurrent({
date: value,
list: data.time.filter(item => item.time == time),
});
};
useEffect(() => {
if (data.time.length == 0) return;
let month = moment(data.time[0].ts).month();
let start = moment()
.month(month)
.date(1);
let end = moment()
.month(month + 1)
.date(0);
setValidRange([start, end]);
let time = moment(data.date).format('YYYY-MM-DD');
setCurrent({
date: moment(data.date),
list: data.time.filter(item => item.time == time),
});
}, [data.time]);
return (
{}}
dateCellRender={dateCellRender}
onChange={onChangeDate}
/>
{current.list.map(item => (
))}
{edit ? (
<>
>
) : (
)}
);
}
export default CalendarModal;