import React,{useEffect,useState,useMemo,useRef} from 'react'; import { Form, Button, Input, Row,Table, Col, Popconfirm, InputNumber,Image,Modal,Typography, message} 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 ZbForm from "./Zbform"; import moment from 'moment'; import {handleData} from "../../../../utils/tools" const ModalForm = ({ mode, record, onEdit, onSave, onSimilarSave }) => { console.log("record",record); const columns = [ { title: "考核类目", dataIndex: "name", key:"name", width: 150, align: "center", onCell: (row) => ({ rowSpan: row.rowSpan || 0 }) }, { title: '指标名称', key: 'indicatorName', dataIndex: 'indicatorName', width: 250, align: "center", }, { title: '标准分数', key: 'standardScore', dataIndex: 'standardScore', width: 100, align: "center", }, { title: '操作', key: 'operation1', width: 240, fixed: 'right', align: 'center', render: (_, record) => { return (
handleDelete(record.id)} > 删除
) }, }, ] const templateFreqOptions = [ { label: "年度", value:1 }, { label: "季度", value:2 }, { label: "月度", value:3 }, ] const [form] = Form.useForm(); const [standardScore1, setStandardScore] = useState('') const [zbOpen, setZbOpen] = useState(false) const [tableData, setTableData] = useState([]) const [selectKeys, setSelectKeys] = useState([]) const tableDataRef = useRef(null) tableDataRef.current = tableData; const newColumns = useMemo(() => { let data = columns; if (mode == "view") { data.pop(); return data } else { return data; } }, [mode]) const handleAddRow = () => { setZbOpen(true) }; const handleDelete = (key) => { const newData = tableDataRef.current.filter((item) => item.id !== key); newData.forEach(item => { if (item.rowSpan) delete item.rowSpan; }) const result = handleData(newData, "name") setTableData(result) setSelectKeys(newData.map(item => item.id)) let total = newData.reduce((total,cur) => total + Number(cur.standardScore),0) setStandardScore(total) }; const onfinish = (values) => { // 校验等级划分 if (values.excellentScore == undefined) { message.error("优秀分数不能为空") return } if (values.goodScore == undefined) { message.error("良好分数不能为空") return } if (values.passScore == undefined) { message.error("合格分数不能为空") return } const userId = localStorage.getItem('userId') const userName = localStorage.getItem('userName') values.indicatorIds = selectKeys; values.standardScore = standardScore1; values.createUserId = userId values.createUserName = userName if (mode === 'edit') { onEdit(apiurl.rcgl.jdkh.khmbgl.edit,{...record,...values}) } if (mode === 'save') { onSave(apiurl.rcgl.jdkh.khmbgl.save,values) } } const onSubmit = (data) => { setZbOpen(false) // 重新对数据做处理 data.data.forEach(item => { if (item.rowSpan) delete item.rowSpan; }) const result = handleData(data.data, "name") let total = data.data.reduce((total,cur) => total + Number(cur.standardScore),0) setStandardScore(total) setTableData(result) setSelectKeys(data.keys) // 自动填充等级划分 form.setFieldValue("excellentScore",(total * 0.92).toFixed(2)) form.setFieldValue("goodScore",(total * 0.85).toFixed(2)) form.setFieldValue("passScore",(total * 0.70).toFixed(2)) } const getZbTableData = async(id) => { try { const res = await httpget2(apiurl.rcgl.jdkh.khmbgl.info + `/${id}`) if (res.code == 200) { let total = res.data.reduce((total,cur) => total + Number(cur.standardScore),0) setStandardScore(total) setSelectKeys(res.data.map(item => item.id)) res.data.forEach(item => { if (item.rowSpan) delete item.rowSpan; }) const result = handleData(res.data, "name") setTableData(result) } } catch (error) { console.log(error); } } useEffect(() => { if (mode !== "save") { getZbTableData(record.id) } }, [record,mode]) return ( <>
标准分数:{ standardScore1}
优秀} required colon={false}> 分及以上 良好} required colon={false}> 分及以上 合格} required colon={false}> 分及以上 { mode==='view'?null:( ) } { setZbOpen(false) }} title="选择指标" > ); } export default ModalForm;