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;