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}
{ mode==='view'?null:(
) } ); } export default ModalForm;