import AutoTable from "@/components/AutoTable"; import DraggableDialog from "@/components/DraggableDialog"; import InitForm from "@/components/InitForm"; import PremButton from "@/components/PremButton"; import { doFetch } from "@/utils/doFetch"; import { Box, Container, Stack, Typography } from "@mui/material"; import { useParams } from "@umijs/max"; import { useAsyncEffect, useRequest } from "ahooks"; import { message, Segmented, Tabs } from "antd"; import { useEffect, useMemo, useState } from "react"; import { history } from "umi"; import "./index.less"; function Dolessons() { const params = useParams(); const [lessonDetail, setlessonDetail] = useState(null), [drawer, setDrawer] = useState({ open: false, }), [type, settype] = useState("1"), [active, setactive] = useState(); const { runAsync, loading } = useRequest(doFetch, { manual: true, onSuccess: (res, parames) => { 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 ifs = useMemo(() => { let { type } = lessonDetail ?? {}; return !(type === 1 || type === 3); }, [lessonDetail]); const edit = (text, row, _, action) => { return ( { setDrawer((v) => ({ open: true, defaultFormValue: { ...row }, title: "编辑", })); }, }} > 编辑 ); }; const remove = (text, row, _, action) => { return ( { await runAsync({ url: "/busTrainExperiment/remove", params: { id: row?.id }, }); }, }} btn={{ disabled: ifs, 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, i) => ({ key: it?.id, label: it?.experimentName, children: ( [ edit(text, row, _, action), remove(text, row, _, action), ], }, ]} path="/studentExperiment/queryPageByExperiment" extraparams={{ experimentId: it?.id, type, }} /> ), })); }, [list]); const addHandel = (val) => { if (active === "1") { // 预览 } else if (active === "2") { // 添加实验 setDrawer({ open: true, title: "添加实验" }); } else { // 添加问题 setDrawer({ open: true, title: "添加问题" }); } }; const handleClose = () => { setDrawer((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: "1", label: `待提交(${resdata?.submitNum})`, }, { value: "2", label: `已提交(${resdata?.notSubmitNum})`, }, ]); }, [active]); return ( {active === "2" ? ( { let postdata; switch (drawer?.title) { case "添加实验": postdata = { ...val, trainId: params?.id, }; break; case "编辑": postdata = { ...val, id: drawer?.defaultFormValue?.id, trainId: params?.id, }; default: break; } runAsync({ url: "/busTrainExperiment/update", params: postdata, }); }} onValuesChange={(curval, vals, formRef) => { if (Object.keys(curval)[0] === "id") { doFetch({ url: "/busTrainExperiment/detail", params: { id: Object.values(curval)[0] }, }).then((res) => { formRef?.current?.setFieldsValue({ weight: res?.data?.data?.weight, }); }); } }} > ) : ( { let postdata; switch (drawer?.title) { case "添加问题": postdata = { ...val, trainId: params?.id, }; break; case "编辑": postdata = { ...val, id: drawer?.defaultFormValue?.id, trainId: params?.id, }; default: break; } runAsync({ url: "/busTrainQuestion/saveOrUpdate", params: postdata, }); }} > )} {lessonDetail?.trainName ?? "暂无名称"} { e.stopPropagation(); history.back(); }, }} > 返回 { settype(val); }} options={semlist} /> } /> ); } export default Dolessons;