import { useEffect, useState } from "react"; import { Button, Col, DatePicker, Form, Input, InputNumber, Radio, Row, Select, Space, Spin, Tabs, message, } from "antd"; import dayjs from "dayjs"; import PageLayout from "@cqsjjb/jjb-react-admin-component/PageLayout"; import { Connect } from "@cqsjjb/jjb-dva-runtime"; import { tools } from "@cqsjjb/jjb-common-lib"; import { NS_COURSEWARE } from "~/enumerate/namespace"; import { CLASS_UNIT_TYPE_OPTIONS, CLASS_YES_NO_OPTIONS, COURSEWARE_TRAINING_TYPE_OPTIONS, } from "~/enumerate/constant"; import StudentTab from "./StudentTab"; import CourseTab from "./CourseTab"; const { router } = tools; const { RangePicker } = DatePicker; /** 教育培训 — 新增/编辑班级 */ function ClassAddPage(props) { const [form] = Form.useForm(); /** 已保存的班级 id:有值时解锁学员/课程 Tab */ const [savedClassId, setSavedClassId] = useState(router.query.classId); const isEdit = !!router.query.classId; const unlocked = !!savedClassId; const confirmLoading = props.courseware?.classConfirmLoading; const detailLoading = props.courseware?.classDetailLoading; /** 是否开启考试:选否时隐藏其余考试相关字段 */ const openExam = Form.useWatch("openExam", form); useEffect(() => { if (!isEdit) return; (async () => { const res = await props.classDetail({ id: router.query.classId }); if (res?.success !== false && res?.data) { const data = res.data; form.setFieldsValue({ ...data, trainingDateRange: data.startDate && data.endDate ? [dayjs(data.startDate), dayjs(data.endDate)] : undefined, }); } else { props.history.goBack(); } })(); }, []); const handleSubmit = async () => { try { const values = await form.validateFields(); // 培训日期范围拆为后端 startDate/endDate(yyyy-MM-dd) const { trainingDateRange, ...rest } = values; const payload = { ...rest, startDate: trainingDateRange?.[0]?.format("YYYY-MM-DD"), endDate: trainingDateRange?.[1]?.format("YYYY-MM-DD"), ...(isEdit ? { id: router.query.classId } : {}), }; const res = await (isEdit ? props.classModify(payload) : props.classAdd(payload)); if (res?.success === false) return; message.success("保存成功"); if (isEdit) return; // 新增:save 接口返回新班级 id,同步 URL 并解锁学员/课程 Tab const newId = res?.data; if (newId) { router.query = { ...router.query, classId: newId }; setSavedClassId(newId); } } catch { // 表单校验失败或请求异常,由 antd / http 层提示 } }; return ( } >

基本信息