|
|
@@ -0,0 +1,526 @@
|
|
|
+import Arrow from "@/image/arrow.png";
|
|
|
+import {useNavigate, useParams} from "react-router";
|
|
|
+import React, {useEffect, useState} from "react";
|
|
|
+import useApis from "@/apis";
|
|
|
+import {engagementDetailVO, ITranslationVO} from "@/types/vo";
|
|
|
+import {Avatar, Input, InputNumber, message, Spin, Typography} from "antd";
|
|
|
+import {Button} from "@/components/Button/Button";
|
|
|
+import "./index.scss"
|
|
|
+import useStore from "@/store";
|
|
|
+import {IDialogue, IRewriteResult} from "@/types/dialogue";
|
|
|
+import CorrectDashboard from "@/components/CorrectDashboard/CorrectDashboard";
|
|
|
+
|
|
|
+// 老师可以点击进入该作业的批改页面,则意味着该作业已经完成提交(作业状态已变为“已提交”)
|
|
|
+
|
|
|
+const CorrectPage = () => {
|
|
|
+
|
|
|
+ const nav = useNavigate()
|
|
|
+
|
|
|
+ const apis = useApis()
|
|
|
+
|
|
|
+ const store = useStore()
|
|
|
+
|
|
|
+ const {studentId, assignmentId} = useParams()
|
|
|
+
|
|
|
+ const [data, setData] = useState<{
|
|
|
+ engagementDetail: engagementDetailVO,
|
|
|
+ messages: IDialogue[],
|
|
|
+ rewriteResult: IRewriteResult[],
|
|
|
+ translations: ITranslationVO[]
|
|
|
+ }>({
|
|
|
+ engagementDetail: {
|
|
|
+ userVO: {},
|
|
|
+ assignmentVO: {}
|
|
|
+ } as engagementDetailVO,
|
|
|
+ messages: [],
|
|
|
+ rewriteResult: [],
|
|
|
+ translations: []
|
|
|
+ })
|
|
|
+
|
|
|
+ const [isDashboardVisible, setDashboardVisible] = useState(false)
|
|
|
+
|
|
|
+
|
|
|
+ const engagementDetails: engagementDetailVO[] = [
|
|
|
+ {
|
|
|
+ assignmentVO: {
|
|
|
+ assignmentId: 1,
|
|
|
+ assignmentName: "英文读写第一次作业:乡土中国调研(聚焦中国江苏)",
|
|
|
+ attachments: null,
|
|
|
+ courseId: 7,
|
|
|
+ createTime: "2024-03-16T03:51:29.000+00:00",
|
|
|
+ description: "乡土中国,致敬每一寸土地;养育我们的祖国,抚养我们的土地。苏杭之名自古有,江苏的土地养育着一方儿女,聚焦江苏土地和农业发展。",
|
|
|
+ descriptionFile: "http://eai-files.oss-cn-shanghai.aliyuncs.com/uploads/First%20English%20Writing%20Requirement.docx",
|
|
|
+ endTime: "2024-03-31T16:00:00.000+00:00",
|
|
|
+ startTime: "2024-03-16T16:00:00.000+00:00",
|
|
|
+ status: "PROCEEDING",
|
|
|
+ teacherId: 5
|
|
|
+ },
|
|
|
+ userVO: {
|
|
|
+ birthday: null,
|
|
|
+ contentEmail: null,
|
|
|
+ createTime: "2024-02-20T07:49:35.000+00:00",
|
|
|
+ englishName: "story2",
|
|
|
+ gender: null,
|
|
|
+ id: 2,
|
|
|
+ name: "张洪胤",
|
|
|
+ officialEmail: "181250126@smail.nju.edu.cn",
|
|
|
+ officialNumber: "181250126",
|
|
|
+ phone: null,
|
|
|
+ role: "STUDENT",
|
|
|
+ userAvatar: "https://pixabay.com/zh/photos/cat-feline-whiskers-pet-chair-8436843/"
|
|
|
+ },
|
|
|
+ fileKey: "1_2_4",
|
|
|
+ fileUrl: "http://eai-files.oss-cn-shanghai.aliyuncs.com/1_2.docx",
|
|
|
+ id: 5,
|
|
|
+ remark: null,
|
|
|
+ score: null,
|
|
|
+ status: "SUBMITTED",
|
|
|
+ version: 4
|
|
|
+ },
|
|
|
+ {
|
|
|
+ assignmentVO: {
|
|
|
+ assignmentId: 1,
|
|
|
+ assignmentName: "英文读写第一次作业:乡土中国调研(聚焦中国江苏)",
|
|
|
+ attachments: null,
|
|
|
+ courseId: 7,
|
|
|
+ createTime: "2024-03-16T03:51:29.000+00:00",
|
|
|
+ description: "乡土中国,致敬每一寸土地;养育我们的祖国,抚养我们的土地。苏杭之名自古有,江苏的土地养育着一方儿女,聚焦江苏土地和农业发展。",
|
|
|
+ descriptionFile: "http://eai-files.oss-cn-shanghai.aliyuncs.com/uploads/First%20English%20Writing%20Requirement.docx",
|
|
|
+ endTime: "2024-03-31T16:00:00.000+00:00",
|
|
|
+ startTime: "2024-03-16T16:00:00.000+00:00",
|
|
|
+ status: "PROCEEDING",
|
|
|
+ teacherId: 5
|
|
|
+ },
|
|
|
+ userVO: {
|
|
|
+ birthday: null,
|
|
|
+ contentEmail: null,
|
|
|
+ createTime: "2024-02-20T07:49:35.000+00:00",
|
|
|
+ englishName: "story2",
|
|
|
+ gender: null,
|
|
|
+ id: 3,
|
|
|
+ name: "苏韬叡",
|
|
|
+ officialEmail: "181250126@smail.nju.edu.cn",
|
|
|
+ officialNumber: "181250126",
|
|
|
+ phone: null,
|
|
|
+ role: "STUDENT",
|
|
|
+ userAvatar: "https://pixabay.com/zh/photos/cat-feline-whiskers-pet-chair-8436843/"
|
|
|
+ },
|
|
|
+ fileKey: "1_2_4",
|
|
|
+ fileUrl: "http://eai-files.oss-cn-shanghai.aliyuncs.com/1_2.docx",
|
|
|
+ id: 6,
|
|
|
+ remark: null,
|
|
|
+ score: null,
|
|
|
+ status: "CORRECTED",
|
|
|
+ version: 4
|
|
|
+ },
|
|
|
+ {
|
|
|
+ assignmentVO: {
|
|
|
+ assignmentId: 1,
|
|
|
+ assignmentName: "英文读写第一次作业:乡土中国调研(聚焦中国江苏)",
|
|
|
+ attachments: null,
|
|
|
+ courseId: 7,
|
|
|
+ createTime: "2024-03-16T03:51:29.000+00:00",
|
|
|
+ description: "乡土中国,致敬每一寸土地;养育我们的祖国,抚养我们的土地。苏杭之名自古有,江苏的土地养育着一方儿女,聚焦江苏土地和农业发展。",
|
|
|
+ descriptionFile: "http://eai-files.oss-cn-shanghai.aliyuncs.com/uploads/First%20English%20Writing%20Requirement.docx",
|
|
|
+ endTime: "2024-03-31T16:00:00.000+00:00",
|
|
|
+ startTime: "2024-03-16T16:00:00.000+00:00",
|
|
|
+ status: "PROCEEDING",
|
|
|
+ teacherId: 5
|
|
|
+ },
|
|
|
+ userVO: {
|
|
|
+ birthday: null,
|
|
|
+ contentEmail: null,
|
|
|
+ createTime: "2024-02-20T07:49:35.000+00:00",
|
|
|
+ englishName: "story2",
|
|
|
+ gender: null,
|
|
|
+ id: 4,
|
|
|
+ name: "王万峰",
|
|
|
+ officialEmail: "181250126@smail.nju.edu.cn",
|
|
|
+ officialNumber: "181250126",
|
|
|
+ phone: null,
|
|
|
+ role: "STUDENT",
|
|
|
+ userAvatar: "https://pixabay.com/zh/photos/cat-feline-whiskers-pet-chair-8436843/"
|
|
|
+ },
|
|
|
+ fileKey: "1_2_4",
|
|
|
+ fileUrl: "http://eai-files.oss-cn-shanghai.aliyuncs.com/1_2.docx",
|
|
|
+ id: 7,
|
|
|
+ remark: null,
|
|
|
+ score: null,
|
|
|
+ status: "SUBMITTED",
|
|
|
+ version: 4
|
|
|
+ },
|
|
|
+ {
|
|
|
+ assignmentVO: {
|
|
|
+ assignmentId: 1,
|
|
|
+ assignmentName: "英文读写第一次作业:乡土中国调研(聚焦中国江苏)",
|
|
|
+ attachments: null,
|
|
|
+ courseId: 7,
|
|
|
+ createTime: "2024-03-16T03:51:29.000+00:00",
|
|
|
+ description: "乡土中国,致敬每一寸土地;养育我们的祖国,抚养我们的土地。苏杭之名自古有,江苏的土地养育着一方儿女,聚焦江苏土地和农业发展。",
|
|
|
+ descriptionFile: "http://eai-files.oss-cn-shanghai.aliyuncs.com/uploads/First%20English%20Writing%20Requirement.docx",
|
|
|
+ endTime: "2024-03-31T16:00:00.000+00:00",
|
|
|
+ startTime: "2024-03-16T16:00:00.000+00:00",
|
|
|
+ status: "PROCEEDING",
|
|
|
+ teacherId: 5
|
|
|
+ },
|
|
|
+ userVO: {
|
|
|
+ birthday: null,
|
|
|
+ contentEmail: null,
|
|
|
+ createTime: "2024-02-20T07:49:35.000+00:00",
|
|
|
+ englishName: "story2",
|
|
|
+ gender: null,
|
|
|
+ id: 5,
|
|
|
+ name: "朱睿",
|
|
|
+ officialEmail: "181250126@smail.nju.edu.cn",
|
|
|
+ officialNumber: "181250126",
|
|
|
+ phone: null,
|
|
|
+ role: "STUDENT",
|
|
|
+ userAvatar: "https://pixabay.com/zh/photos/cat-feline-whiskers-pet-chair-8436843/"
|
|
|
+ },
|
|
|
+ fileKey: "1_2_4",
|
|
|
+ fileUrl: "http://eai-files.oss-cn-shanghai.aliyuncs.com/1_2.docx",
|
|
|
+ id: 8,
|
|
|
+ remark: null,
|
|
|
+ score: null,
|
|
|
+ status: "SUBMITTED",
|
|
|
+ version: 4
|
|
|
+ },
|
|
|
+ {
|
|
|
+ assignmentVO: {
|
|
|
+ assignmentId: 1,
|
|
|
+ assignmentName: "英文读写第一次作业:乡土中国调研(聚焦中国江苏)",
|
|
|
+ attachments: null,
|
|
|
+ courseId: 7,
|
|
|
+ createTime: "2024-03-16T03:51:29.000+00:00",
|
|
|
+ description: "乡土中国,致敬每一寸土地;养育我们的祖国,抚养我们的土地。苏杭之名自古有,江苏的土地养育着一方儿女,聚焦江苏土地和农业发展。",
|
|
|
+ descriptionFile: "http://eai-files.oss-cn-shanghai.aliyuncs.com/uploads/First%20English%20Writing%20Requirement.docx",
|
|
|
+ endTime: "2024-03-31T16:00:00.000+00:00",
|
|
|
+ startTime: "2024-03-16T16:00:00.000+00:00",
|
|
|
+ status: "PROCEEDING",
|
|
|
+ teacherId: 5
|
|
|
+ },
|
|
|
+ userVO: {
|
|
|
+ birthday: null,
|
|
|
+ contentEmail: null,
|
|
|
+ createTime: "2024-02-20T07:49:35.000+00:00",
|
|
|
+ englishName: "story2",
|
|
|
+ gender: null,
|
|
|
+ id: 6,
|
|
|
+ name: "夏泽霖",
|
|
|
+ officialEmail: "181250126@smail.nju.edu.cn",
|
|
|
+ officialNumber: "181250126",
|
|
|
+ phone: null,
|
|
|
+ role: "STUDENT",
|
|
|
+ userAvatar: "https://pixabay.com/zh/photos/cat-feline-whiskers-pet-chair-8436843/"
|
|
|
+ },
|
|
|
+ fileKey: "1_2_4",
|
|
|
+ fileUrl: "http://eai-files.oss-cn-shanghai.aliyuncs.com/1_2.docx",
|
|
|
+ id: 9,
|
|
|
+ remark: null,
|
|
|
+ score: null,
|
|
|
+ status: "SUBMITTED",
|
|
|
+ version: 4
|
|
|
+ },
|
|
|
+ {
|
|
|
+ assignmentVO: {
|
|
|
+ assignmentId: 1,
|
|
|
+ assignmentName: "英文读写第一次作业:乡土中国调研(聚焦中国江苏)",
|
|
|
+ attachments: null,
|
|
|
+ courseId: 7,
|
|
|
+ createTime: "2024-03-16T03:51:29.000+00:00",
|
|
|
+ description: "乡土中国,致敬每一寸土地;养育我们的祖国,抚养我们的土地。苏杭之名自古有,江苏的土地养育着一方儿女,聚焦江苏土地和农业发展。",
|
|
|
+ descriptionFile: "http://eai-files.oss-cn-shanghai.aliyuncs.com/uploads/First%20English%20Writing%20Requirement.docx",
|
|
|
+ endTime: "2024-03-31T16:00:00.000+00:00",
|
|
|
+ startTime: "2024-03-16T16:00:00.000+00:00",
|
|
|
+ status: "PROCEEDING",
|
|
|
+ teacherId: 5
|
|
|
+ },
|
|
|
+ userVO: {
|
|
|
+ birthday: null,
|
|
|
+ contentEmail: null,
|
|
|
+ createTime: "2024-02-20T07:49:35.000+00:00",
|
|
|
+ englishName: "story2",
|
|
|
+ gender: null,
|
|
|
+ id: 7,
|
|
|
+ name: "苏韬叡一号",
|
|
|
+ officialEmail: "181250126@smail.nju.edu.cn",
|
|
|
+ officialNumber: "181250126",
|
|
|
+ phone: null,
|
|
|
+ role: "STUDENT",
|
|
|
+ userAvatar: "https://pixabay.com/zh/photos/cat-feline-whiskers-pet-chair-8436843/"
|
|
|
+ },
|
|
|
+ fileKey: "1_2_4",
|
|
|
+ fileUrl: "http://eai-files.oss-cn-shanghai.aliyuncs.com/1_2.docx",
|
|
|
+ id: 10,
|
|
|
+ remark: null,
|
|
|
+ score: null,
|
|
|
+ status: "SUBMITTED",
|
|
|
+ version: 4
|
|
|
+ }
|
|
|
+ ];
|
|
|
+
|
|
|
+ const [select, setSelect] = useState(0);
|
|
|
+
|
|
|
+ const [score, setScore] = useState(0)
|
|
|
+ const [remark, setRemark] = useState("")
|
|
|
+
|
|
|
+ const [loading, setLoading] = useState(false)
|
|
|
+
|
|
|
+ const [messageApi, contextHolder] = message.useMessage();
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 成功操作的消息提示
|
|
|
+ * @param msg
|
|
|
+ */
|
|
|
+ const success = (msg: string) => {
|
|
|
+ messageApi.open({
|
|
|
+ type: 'success',
|
|
|
+ content: msg
|
|
|
+ })
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 失败操作的消息提示
|
|
|
+ * @param msg
|
|
|
+ */
|
|
|
+ const error = (msg: string) => {
|
|
|
+ console.log("失败操作", msg)
|
|
|
+ messageApi.open({
|
|
|
+ type: 'error',
|
|
|
+ content: msg,
|
|
|
+ });
|
|
|
+ };
|
|
|
+
|
|
|
+ const handleGoBack = () => {
|
|
|
+ nav(-1)
|
|
|
+ }
|
|
|
+
|
|
|
+ const fetchData = async () => {
|
|
|
+ await apis.getDetailEngagement(Number(studentId), Number(assignmentId))
|
|
|
+ .then(_res => {
|
|
|
+ console.log("getDetailEngagement", _res.data.data)
|
|
|
+ setData(prev => ({...prev, engagementDetail: _res.data.data}))
|
|
|
+ })
|
|
|
+
|
|
|
+ await apis.getAIDialogues(Number(assignmentId), Number(studentId))
|
|
|
+ .then(_res => {
|
|
|
+ console.log("getAIDialogues", _res.data.data)
|
|
|
+ setData(prev => ({...prev, messages: _res.data.data.messages.content}))
|
|
|
+ })
|
|
|
+
|
|
|
+ await apis.getRewriteResult(Number(assignmentId), Number(studentId))
|
|
|
+ .then(_res => {
|
|
|
+ console.log("getRewriteResult", _res.data.data)
|
|
|
+ setData(prev => ({...prev, rewriteResult: _res.data.data}))
|
|
|
+ })
|
|
|
+
|
|
|
+ await apis.getTranslations(Number(assignmentId), Number(studentId))
|
|
|
+ .then(_res => {
|
|
|
+ console.log("getTranslations", _res.data.data)
|
|
|
+ setData(prev => ({...prev, translations: _res.data.data}))
|
|
|
+ })
|
|
|
+ }
|
|
|
+
|
|
|
+ useEffect(() => {
|
|
|
+ fetchData()
|
|
|
+ }, [studentId, assignmentId])
|
|
|
+
|
|
|
+
|
|
|
+ const onChange = (value: number|null) => {
|
|
|
+ console.log('changed', value);
|
|
|
+ setScore(value!)
|
|
|
+ }
|
|
|
+
|
|
|
+ const handleFinishCorrect = () => {
|
|
|
+ setLoading(true)
|
|
|
+ apis.engagementCorrect(Number(studentId), Number(assignmentId), {score: score, remark: remark})
|
|
|
+ .then(_res => {
|
|
|
+ console.log("engagementCorrect", _res.data.data)
|
|
|
+ success("批改作业完成!2秒钟后返回主页")
|
|
|
+ setLoading(false)
|
|
|
+ setTimeout(()=> {
|
|
|
+ nav("/")
|
|
|
+ }, 2000)
|
|
|
+ }).catch(_err => {
|
|
|
+ console.error(_err)
|
|
|
+ error("批改作业失败!")
|
|
|
+ })
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ return (
|
|
|
+ <div className="word-details">
|
|
|
+ <div className="word-return-icon" onClick={handleGoBack}>
|
|
|
+ <img src={Arrow} alt=""/>返回
|
|
|
+ </div>
|
|
|
+ <div className="word-container">
|
|
|
+ <div className="word-left">
|
|
|
+ <div className="edit-container-box">
|
|
|
+ <div>
|
|
|
+ {data.engagementDetail.assignmentVO.assignmentName}
|
|
|
+ </div>
|
|
|
+ <div className="edit-text">
|
|
|
+ <Typography.Paragraph
|
|
|
+ ellipsis={{
|
|
|
+ rows : 2,
|
|
|
+ expandable: true,
|
|
|
+ symbol : '展开',
|
|
|
+ }}
|
|
|
+ >
|
|
|
+ {data.engagementDetail.assignmentVO.description}
|
|
|
+ </Typography.Paragraph>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <div className="edit-details">
|
|
|
+ <div className="edit-details-item">学生姓名:{data.engagementDetail.userVO.name}</div>
|
|
|
+ <div className="edit-details-item">学生学号:{data.engagementDetail.userVO.officialNumber}</div>
|
|
|
+ <div className="edit-details-item">
|
|
|
+ <>提交时间:{new Date().toDateString()}</>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ </div>
|
|
|
+ <div className="edit-composition">
|
|
|
+ <div>作文内容</div>
|
|
|
+ <div className="edit-box-show">
|
|
|
+ {
|
|
|
+ data.engagementDetail &&
|
|
|
+ <iframe src={"https://view.officeapps.live.com/op/view.aspx?src="+data.engagementDetail.fileUrl} title={data.engagementDetail.assignmentVO.assignmentName} style={{width: "100%", height: '100%'}}/>
|
|
|
+ }
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <div className="word-right">
|
|
|
+ <div className="word-right-container">
|
|
|
+ <div className="record">
|
|
|
+ <div>写作过程记录</div>
|
|
|
+ <div className="record-select">
|
|
|
+ <div className="sidebar">
|
|
|
+ <div className={`sidebar-item ${select === 0 ? 'active' : ''}`} onClick={() => setSelect(0)}>AI对话</div>
|
|
|
+ <div className={`sidebar-item ${select === 1 ? 'active' : ''}`} onClick={() => setSelect(1)}>字典搜索</div>
|
|
|
+ <div className={`sidebar-item ${select === 2 ? 'active' : ''}`} onClick={() => setSelect(2)}>智能评价</div>
|
|
|
+ </div>
|
|
|
+ <div className="select-content">
|
|
|
+ {
|
|
|
+ select === 0 &&
|
|
|
+ <div className={"message-box"}>
|
|
|
+ {
|
|
|
+ data.messages.map((item, index) => {
|
|
|
+ return (
|
|
|
+ <div className={"item"} key={index}>
|
|
|
+ <div>
|
|
|
+ {/* 分类展示用户和AI的消息 */}
|
|
|
+ {
|
|
|
+ index % 2 === 0 ?
|
|
|
+ <Avatar
|
|
|
+ size={32}
|
|
|
+ shape={"circle"}
|
|
|
+ src={data.engagementDetail.userVO.userAvatar || ""}>{data.engagementDetail.userVO.name.charAt(0)}</Avatar> :
|
|
|
+ <Avatar
|
|
|
+ size={32}
|
|
|
+ shape={"circle"}
|
|
|
+ >{"AI"}</Avatar>
|
|
|
+ }
|
|
|
+ </div>
|
|
|
+ <div style={{marginLeft: "15px"}}>
|
|
|
+ <div style={{marginBottom: "2px"}}>{index % 2 === 0? "You": "AI"}</div>
|
|
|
+ <div className={"content"}>{item.content}</div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ )
|
|
|
+ })
|
|
|
+ }
|
|
|
+ </div>
|
|
|
+ }
|
|
|
+ {
|
|
|
+ select === 1 &&
|
|
|
+ <div className={"message-box"}>
|
|
|
+ {
|
|
|
+ data.translations.map((item, index) => {
|
|
|
+ return (
|
|
|
+ <>
|
|
|
+ <div className={"item"} key={index+"1"}>
|
|
|
+ <div>
|
|
|
+ <Avatar
|
|
|
+ size={32}
|
|
|
+ shape={"circle"}
|
|
|
+ src={data.engagementDetail.userVO.userAvatar || ""}>{data.engagementDetail.userVO.name.charAt(0)}</Avatar>
|
|
|
+ </div>
|
|
|
+ <div style={{marginLeft: "15px"}}>
|
|
|
+ <div style={{marginBottom: "2px"}}>{"You"}</div>
|
|
|
+ <div className={"content"}>{item.queryText}</div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div className={"item"} key={index+"2"}>
|
|
|
+ <div>
|
|
|
+ <Avatar
|
|
|
+ size={32}
|
|
|
+ shape={"circle"}
|
|
|
+ >{"AI"}</Avatar>
|
|
|
+ </div>
|
|
|
+ <div style={{marginLeft: "15px"}}>
|
|
|
+ <div style={{marginBottom: "2px"}}>{"AI"}</div>
|
|
|
+ <div className={"content"}>{item.queryResult}</div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </>
|
|
|
+ )
|
|
|
+ })
|
|
|
+ }
|
|
|
+ </div>
|
|
|
+ }
|
|
|
+ {
|
|
|
+ select === 2 &&
|
|
|
+ <div className={'remark'}>{
|
|
|
+ data.rewriteResult[data.rewriteResult.length - 1].role === 'assistant' &&
|
|
|
+ data.rewriteResult[data.rewriteResult.length - 1].content
|
|
|
+ }</div>
|
|
|
+ }
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div className="word-right-bottom">
|
|
|
+ <div className="scoring">
|
|
|
+ <span style={{marginRight: "10px"}}>最终得分: </span><InputNumber min={1} max={100} defaultValue={80} onChange={onChange} />
|
|
|
+ </div>
|
|
|
+
|
|
|
+
|
|
|
+ <div className="edit-box">
|
|
|
+ <div>修改意见与评价</div>
|
|
|
+ <div className="edit-root">
|
|
|
+ <Input.TextArea
|
|
|
+ bordered={false}
|
|
|
+ value={remark}
|
|
|
+ onChange={(e) => setRemark(e.target.value)}
|
|
|
+ placeholder=" 在这里输入修改意见与评价..."
|
|
|
+ style={{ height: '100%', minHeight: '300px', width: '99%', resize: 'vertical',outline: 'none',border:'none',fontSize:'16px',borderRadius: '10px' }}
|
|
|
+ />
|
|
|
+ </div>
|
|
|
+ <div className="button-right">
|
|
|
+ <Button onClick={handleFinishCorrect}>
|
|
|
+ {
|
|
|
+ !loading ? <>完成批改</>: <Spin></Spin>
|
|
|
+ }
|
|
|
+ </Button>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <Button
|
|
|
+ type="primary"
|
|
|
+ shape="circle"
|
|
|
+ icon={<span>仪</span>} // 这里简单用文字代替图标,你可以替换为具体的图标
|
|
|
+ size="large"
|
|
|
+ style={{ position: 'fixed', right: '15px', top: '20px', zIndex: 1000, backgroundColor: "#597d3b"}}
|
|
|
+ onClick={() => setDashboardVisible(!isDashboardVisible)}
|
|
|
+ />
|
|
|
+ {isDashboardVisible && <CorrectDashboard engagementDetails={engagementDetails} onClose={() => setDashboardVisible(false)} />}
|
|
|
+ {contextHolder}
|
|
|
+ </div>
|
|
|
+ )
|
|
|
+}
|
|
|
+
|
|
|
+export default CorrectPage
|