import React, { useState, useEffect } from "react"; import { Space, Radio, Button, Drawer, Form, TreeSelect, Input, Modal, message, Image, } from "antd"; import styles from "./update.module.less"; import { useSelector } from "react-redux"; import { course, department } from "../../../api/index"; import { UploadImageButton } from "../../../compenents"; const { confirm } = Modal; interface PropInterface { id: number; open: boolean; onCancel: () => void; } interface Option { value: string | number; title: string; children?: Option[]; } export const CourseUpdate: React.FC = ({ id, open, onCancel, }) => { const [form] = Form.useForm(); const courseDefaultThumbs = useSelector( (state: any) => state.systemConfig.value.courseDefaultThumbs ); const defaultThumb1 = courseDefaultThumbs[0]; const defaultThumb2 = courseDefaultThumbs[1]; const defaultThumb3 = courseDefaultThumbs[2]; const [loading, setLoading] = useState(true); const [departments, setDepartments] = useState([]); const [categories, setCategories] = useState([]); const [thumb, setThumb] = useState(""); const [type, setType] = useState("open"); useEffect(() => { if (open) { getParams(); getCategory(); } }, [form, open]); useEffect(() => { if (id === 0) { return; } getDetail(); }, [id, open]); const getCategory = () => { course.createCourse().then((res: any) => { const categories = res.data.categories; if (JSON.stringify(categories) !== "{}") { const new_arr: any = checkArr(categories, 0, null); setCategories(new_arr); } }); }; const getParams = () => { department.departmentList().then((res: any) => { const departments = res.data.departments; const departCount = res.data.dep_user_count; if (JSON.stringify(departments) !== "{}") { const new_arr: any = checkArr(departments, 0, departCount); setDepartments(new_arr); } }); }; const getDetail = () => { course.course(id).then((res: any) => { let type = res.data.dep_ids.length > 0 ? "elective" : "open"; let chapterType = res.data.chapters.length > 0 ? 1 : 0; form.setFieldsValue({ title: res.data.course.title, thumb: res.data.course.thumb, dep_ids: res.data.dep_ids, category_ids: res.data.category_ids, isRequired: res.data.course.is_required, type: type, short_desc: res.data.course.short_desc, hasChapter: chapterType, }); setType(type); setThumb(res.data.course.thumb); }); }; const getNewTitle = (title: any, id: number, counts: any) => { if (counts) { let value = counts[id] || 0; return title + "(" + value + ")"; } else { return title; } }; const checkArr = (departments: any[], id: number, counts: any) => { const arr = []; for (let i = 0; i < departments[id].length; i++) { if (!departments[departments[id][i].id]) { arr.push({ title: getNewTitle( departments[id][i].name, departments[id][i].id, counts ), value: departments[id][i].id, }); } else { const new_arr: any = checkArr( departments, departments[id][i].id, counts ); arr.push({ title: getNewTitle( departments[id][i].name, departments[id][i].id, counts ), value: departments[id][i].id, children: new_arr, }); } } return arr; }; const onFinish = (values: any) => { let dep_ids: any[] = []; if (type === "elective") { dep_ids = values.dep_ids; } course .updateCourse( id, values.title, values.thumb, values.short_desc, 1, values.isRequired, dep_ids, values.category_ids, [], [] ) .then((res: any) => { message.success("保存成功!"); onCancel(); }); }; const onFinishFailed = (errorInfo: any) => { console.log("Failed:", errorInfo); }; const getType = (e: any) => { setType(e.target.value); }; return ( <> } width={634} >
必修课 选修课 全部部门 选择部门 {type === "elective" && ( )}
{ setThumb(defaultThumb1); form.setFieldsValue({ thumb: defaultThumb1, }); }} >
{ setThumb(defaultThumb2); form.setFieldsValue({ thumb: defaultThumb2, }); }} >
{ setThumb(defaultThumb3); form.setFieldsValue({ thumb: defaultThumb3, }); }} >
{ setThumb(url); form.setFieldsValue({ thumb: url }); }} > (推荐尺寸:400x300px)
); };