import React,{useEffect,useState,useMemo,useRef} from 'react';
import { Form, Button, Input, Row,Table, Col, Popconfirm, InputNumber,Image,Modal,Typography} from 'antd';
import { DeleteOutlined,FileWordOutlined,FilePdfOutlined,FileZipOutlined,FileExcelOutlined } from '@ant-design/icons';
import { formItemLayout, btnItemLayout } from '../../../../components/crud/FormLayoutProps';
import { httpget2, httppost2,xyt_httpget2 } from '../../../../utils/request';
import apiurl from '../../../../service/apiurl';
import NormalSelect from '../../../../components/Form/NormalSelect';
import moment from 'moment';
const EditableCell = ({
editing,
dataIndex,
title,
inputType,
record,
index,
children,
...restProps
}) => {
const inputNode = inputType === 'number' ?
:
;
return (
{editing ? (
{inputNode}
) : (
children
)}
|
);
};
const ModalForm = ({ mode, record, onEdit, onSave, onSimilarSave }) => {
const isEditing = (record) => {
return record.id === editingKey;
}
const columns = [
{
title: "序号",
dataIndex: "index",
width: 60,
render: (text, record, index) => { index + 1},
align: "center"
},
{
title: '描述',
key: 'ratingDesc',
dataIndex: 'ratingDesc',
width: 250
, align: "center",
editable: true,
},
{
title: '标准评分',
key: 'standardScore',
dataIndex: 'standardScore',
width: 100,
align: "center",
editable: true,
},
{
title: '操作', key: 'operation', width: 240, fixed: 'right',align: 'center',
render: (_, record) => {
const editable = isEditing(record);
return editable ? (
save(record.id)}
style={{
marginRight: 8,
}}
>
完成
) : (
edit1(record)}
>
编辑
handleDelete(record.id)}
>
删除
);
},
},
]
const [form] = Form.useForm();
const [form1] = Form.useForm();
const [editingKey, setEditingKey] = useState('');
const [disabled, setDisabled] = useState(false)
const [details, setDetails] = useState([])
const [standardScore1, setStandardScore] = useState('')
const detailsRef = useRef(null)
detailsRef.current = details
const newColumns = useMemo(() => {
let data = columns;
if (mode == "view") {
data.pop();
return data
} else {
return data;
}
}, [mode,editingKey])
const edit1 = (record) => {
setDisabled(true)
form1.setFieldsValue({
month: '',
drp:'',
...record,
});
setEditingKey(record.id);
};
const handleAddRow = () => {
setDisabled(true)
const newData = {
id: (details.length + 1).toString(),
ratingDesc: '',
standardScore:''
};
form1.setFieldsValue(newData)
setDetails([...details, newData]);
detailsRef.current = [...details, newData]
setEditingKey(newData.id);
};
const handleDelete = (key) => {
const newData = detailsRef.current.filter((item) => item.id !== key);
setDetails(newData);
detailsRef.current = newData
let total = newData.reduce((total,cur) => total + Number(cur.standardScore),0)
setStandardScore(total)
};
const save = async (key) => {
setDisabled(false)
try {
const row = await form1.validateFields();
const newData = [...details];
const index = newData.findIndex((item) => key === item.id);
if (index > -1) {
const item = newData[index];
newData.splice(index, 1, {
...item,
...row,
});
setDetails(newData);
detailsRef.current = newData
setEditingKey('');
let total = newData.reduce((total,cur) => total + Number(cur.standardScore),0)
setStandardScore(total)
} else {
newData.push(row);
setDetails(newData);
detailsRef.current = newData
setEditingKey('');
}
} catch (errInfo) {
console.log('Validate Failed:', errInfo);
}
};
const mergedColumns = newColumns.map((col) => {
if (!col.editable) {
return col;
}
return {
...col,
onCell: (record) => ({
record,
inputType: col.dataIndex === 'standardScore' ? 'number' : "text",
dataIndex: col.dataIndex,
title: col.title,
editing: isEditing(record),
}),
};
});
const onfinish = () => {
let values = form.getFieldsValue();
values.indicatorRatings = details;
values.categoryId = record.code;
values.standardScore = standardScore1;
if (mode === 'edit') {
values.id = record.id;
values.status = record.status;
onEdit(apiurl.rcgl.jdkh.khzbgl.edit,values)
}
if (mode === 'save') {
onSave(apiurl.rcgl.jdkh.khzbgl.save,values)
}
}
useEffect(() => {
if (mode !== "save") {
let total = record?.indicatorRatings?.reduce((total, cur) => total + cur.standardScore, 0)
setStandardScore(total)
setDetails(record.indicatorRatings)
detailsRef.current = record.indicatorRatings
}
}, [record,mode])
return (
<>
标准分数:{ standardScore1}
>
);
}
export default ModalForm;