import AutoTable from "@/components/AutoTable"; import DraggableDialog from "@/components/DraggableDialog"; import InitForm from "@/components/InitForm"; import PremButton from "@/components/PremButton"; import SplitDesc from "@/components/SplitDesc"; import { doFetch } from "@/utils/doFetch"; import { ProDescriptions } from "@ant-design/pro-components"; import { Box, Container, Stack, Typography } from "@mui/material"; import { useParams } from "@umijs/max"; import { useAsyncEffect, useRequest } from "ahooks"; import { Divider, message, Segmented, Table, Tabs,Drawer } from "antd"; import { useEffect, useMemo, useRef, useState } from "react"; import PointViewer from "@/components/PointViewer"; import { history } from "umi"; import "./index.less"; function Dolessons() { const params = useParams(); const formRefc = useRef(); const [lessonDetail, setlessonDetail] = useState(null), [dialogprops, setdialogprops] = useState({ open: false, }), [type, settype] = useState("2"), [active, setactive] = useState(); const [datas, setdatas] = useState({ tabs: [], }); let blid = useRequest( async () => { let res = await doFetch({ url: "/studentExperiment/queryAllByLoginTeacher", params: { experimentId: active }, }); return res?.data?.dataList; }, { refreshDeps: [active], onSuccess: (data, params) => { setdatas((s) => ({ ...s, tabs: data?.map((it) => ({ ...it, label: it?.studentName, key: it?.id, })), })); if (dialogprops?.open) { setdialogprops({ open: true, defaultFormValue: { ...data[0] }, title: "批阅", }); } formRefc?.current?.resetFields(); }, } ); const { runAsync, loading } = useRequest(doFetch, { manual: true, onSuccess: (res) => { if (res?.code == "0000") { handleClose(); message.success("操作成功"); } }, }); useEffect(() => { doFetch({ url: "/busTrain/detail", params: { id: params?.id } }).then( (res) => { if (res.code === "0000") { setlessonDetail(res?.data?.data); } } ); }, []); const list = useRequest( async () => { let res = await doFetch({ url: "/busTrainExperiment/list", params: { trainId: params?.id }, }); setactive(res?.data?.dataList?.[0]?.id ?? null); return res?.data?.dataList; }, { debounceWait: 400, } ); const audit = (text, row, _, action) => { return row.reviewType == 1 ? ( { let res = await doFetch({ url: "/studentExperiment/queryResultForPc", params: { id: row.id, }, }); setdialogprops({ open: true, defaultFormValue: { ...row }, title: "批阅", tabdata: res?.data?.data, }); }, }} > 批阅 ) : ( { setdialogprops({ open: true, defaultFormValue: { ...row }, title: "详情", maxWidth: "md", footer: false, }); }, }} > 详情 ); }; const remove = (text, row, _) => { return ( { await runAsync({ url: "/studentExperiment/remake", params: { id: row?.id }, }); }, }} btn={{ disabled: row?.reviewType !== 1, size: "small", color: "error", }} > 退回 ); }; const experimentColumns = useMemo(() => { let col = [ { title: "学生姓名", dataIndex: "studentName", key: "studentName" }, { title: "学生账号", dataIndex: "studentAccount", key: "studentAccount" }, { title: "分数", dataIndex: "score", key: "score", hideInSearch: true }, { title: "提交时间", dataIndex: "finishTime", key: "finishTime", hideInSearch: true, }, { title: "批阅时间", dataIndex: "reviewTime", key: "reviewTime", hideInSearch: true, }, { title: "批阅状态", dataIndex: "reviewTypeName", key: "reviewType", valueType: "select", options: [ { label: "待批阅", value: "1", }, { label: "已批阅", value: "2", }, ], }, ]; return col; }, []); const items = useMemo(() => { return list?.data?.map((it) => ({ key: it?.id, label: it?.experimentName, children: ( [ audit(text, row, _, action), remove(text, row, _, action), ], }, ]} path="/studentExperiment/queryPageByExperiment" extraparams={{ experimentId: it?.id, type, }} /> ), })); }, [list]); const handleClose = () => { setdialogprops((s) => ({ ...s, open: false, })); }; const [semlist, setsemlist] = useState(); useAsyncEffect(async () => { if (!active) return; let res = await doFetch({ url: "/studentExperiment/queryScoreStatistics", params: { experimentId: active }, }); let resdata = res?.data?.data; setsemlist([ { value: "2", label: `已提交(${resdata?.notSubmitNum})`, }, { value: "1", label: `待提交(${resdata?.submitNum})`, }, ]); }, [active]); const detailcolumns = [ { title: "学生姓名", dataIndex: "studentName", key: "studentName" }, { title: "学生账号", dataIndex: "studentAccount", key: "studentAccount" }, { title: "课程名称", dataIndex: "courseName", key: "courseName" }, { title: "实训名称", dataIndex: "trainName", key: "trainName" }, { title: "实验名称", dataIndex: "experimentName", key: "experimentName" }, { title: "分数", dataIndex: "score", key: "score", hideInSearch: true }, { title: "权重", dataIndex: "weight", key: "weight", hideInSearch: true }, { title: "分数", dataIndex: "scoreWeight", key: "scoreWeight" }, { title: "提交时间", dataIndex: "finishTime", key: "finishTimeRange", }, { title: "批阅时间", dataIndex: "reviewTime", key: "reviewTimeRange", }, ]; const [drawer, setDrawer] = useState({ open: false, onClose: () => { setDrawer((s) => ({ ...s, open: false, })); }, }); return ( { handleClose(); }} loading={loading} formRef={formRefc} dialogprops={dialogprops} maxWidth={dialogprops?.maxWidth ?? "md"} formdom={ dialogprops?.title === "批阅" && ( { let postdata = { ...val, id: dialogprops?.defaultFormValue?.id, }; await runAsync({ url: "/studentExperiment/giveScore", params: postdata, }); await blid?.runAsync(); }} > ) } > {dialogprops?.title === "批阅" ? ( <> { let currow = datas?.tabs?.filter((it) => it?.id == key)[0]; let res = await doFetch({ url: "/studentExperiment/queryResultForPc", params: { id: currow.id, }, }); setdialogprops({ open: true, defaultFormValue: { ...currow }, title: "批阅", tabdata: res?.data?.data, }); }} > 实验素养 { return row?.config?.name; }, }, { title: "是否操作", dataIndex: "isComplete", key: "isComplete", width: 200, render: (text, row) => { return row?.isComplete ? ( "完成" ) : ( 未完成 ); }, }, ]} dataSource={ dialogprops?.tabdata?.recordDataDic ? Object.values(dialogprops?.tabdata?.recordDataDic) : [] } >
实验报告 { return row?.actualValue?.toFixed(4) ?? ""; }, }, { title: "名义值", dataIndex: "normal", key: "normal", render: (text, row) => { return row?.normal?.toFixed(4) ?? ""; }, }, { title: "上公差", dataIndex: "Upper", key: "Upper", }, { title: "下公差", dataIndex: "Down", key: "Down", }, ]} rowKey={"id"} dataSource={ dialogprops?.tabdata?.PeculiarityInfosDict ? Object.values( dialogprops?.tabdata?.PeculiarityInfosDict )?.map((it, i) => it?.[0] ? { ...it?.[0], id: i + 1, } : {} ) : [] } expandable={{ expandedRowRender: ({ ElementInfoList }) => { return (
{ElementInfoList?.map((it) => { function removeFirstAndLastChar(str) { return str.substring(1, str.length - 1); } return (
{it?.Name} {it?.PointList?.map((its) => ( "), }} >
} > { setDrawer((s) => ({ ...s, position: its.Position, open: true, })); }} style={{ cursor: "pointer" }} > {its.Name} ))}
); })} ); }, }} >
) : dialogprops?.title === "详情" ? ( ) : null}
{lessonDetail?.trainName ?? "暂无名称"} { e.stopPropagation(); history.back(); }, }} > 返回 { settype(val); }} options={semlist} /> } />
); } export default Dolessons;