diff --git a/src/pages/course/create.tsx b/src/pages/course/create.tsx index 6d326b4..4a22273 100644 --- a/src/pages/course/create.tsx +++ b/src/pages/course/create.tsx @@ -4,7 +4,6 @@ import styles from "./create.module.less"; import { course, department } from "../../api/index"; import { useNavigate } from "react-router-dom"; import { UploadImageButton, BackBartment } from "../../compenents"; -const { SHOW_CHILD } = Cascader; interface Option { value: string | number; @@ -155,30 +154,20 @@ export const CourseCreatePage: React.FC = () => { - + - + diff --git a/src/pages/course/update.tsx b/src/pages/course/update.tsx index 0e6f5cb..5bf7748 100644 --- a/src/pages/course/update.tsx +++ b/src/pages/course/update.tsx @@ -21,21 +21,17 @@ export const CourseUpdatePage: React.FC = () => { const [thumb, setThumb] = useState(""); useEffect(() => { - getParams(); getCategory(); - }, []); - - useEffect(() => { - getDetail(); }, [params.cid]); - const getParams = () => { + const getParams = (cats: any) => { department.departmentList().then((res: any) => { const departments = res.data.departments; if (JSON.stringify(departments) !== "{}") { const new_arr: Option[] = checkArr(departments, 0); setDepartments(new_arr); } + getDetail(departments, cats); }); }; @@ -47,6 +43,7 @@ export const CourseUpdatePage: React.FC = () => { setCategories(new_arr); } form.setFieldsValue({ isShow: 1 }); + getParams(categories); }); }; @@ -70,24 +67,71 @@ export const CourseUpdatePage: React.FC = () => { return arr; }; - const getDetail = () => { + const getDetail = (deps: any, cats: any) => { course.course(Number(params.cid)).then((res: any) => { let data = res.data.course; - // let depIds=res.data.dep_ids; - // for (let i = 0; i < depIds.length; i++) { - // dep_ids.push(depIds[i]); - // } + let box = res.data.dep_ids; + let depIds: any[] = []; + if (box.length > 1) { + for (let i = 0; i < box.length; i++) { + let item = checkChild(deps, box[i]); + let arr: any[] = []; + if (item.parent_chain === "") { + arr.push(box[i]); + } else { + let new_arr = item.parent_chain.split(","); + new_arr.map((num: any) => { + arr.push(Number(num)); + }); + arr.push(box[i]); + } + depIds.push(arr); + } + } else { + depIds = res.data.dep_ids; + } + let box2 = res.data.category_ids; + let categoryIds: any[] = []; + if (box2.length > 1) { + for (let i = 0; i < box2.length; i++) { + let item = checkChild(cats, box2[i]); + let arr: any[] = []; + if (item.parent_chain === "") { + arr.push(box2[i]); + } else { + let new_arr = item.parent_chain.split(","); + new_arr.map((num: any) => { + arr.push(Number(num)); + }); + arr.push(box2[i]); + } + categoryIds.push(arr); + } + } else { + categoryIds = res.data.category_ids; + } + form.setFieldsValue({ title: data.title, thumb: data.thumb, isShow: data.is_show, - dep_ids: res.data.dep_ids, - category_ids: res.data.category_ids, + dep_ids: depIds, + category_ids: categoryIds, }); setThumb(data.thumb); }); }; + const checkChild = (departments: any[], id: number) => { + for (let key in departments) { + for (let i = 0; i < departments[key].length; i++) { + if (departments[key][i].id === id) { + return departments[key][i]; + } + } + } + }; + const onFinish = (values: any) => { console.log("Success:", values); let id = Number(params.cid); @@ -128,7 +172,6 @@ export const CourseUpdatePage: React.FC = () => { } }; - return ( <> @@ -181,24 +224,15 @@ export const CourseUpdatePage: React.FC = () => { - + - + { > - + { useEffect(() => { getParams(); - }, []); - useEffect(() => { - getDetail(); }, [params.memberId]); const getParams = () => { @@ -33,24 +30,55 @@ export const MemberUpdatePage: React.FC = () => { const new_arr: Option[] = checkArr(departments, 0); setDepartments(new_arr); } + getDetail(departments); }); }; - const getDetail = () => { + const getDetail = (deps: any) => { user.user(Number(params.memberId)).then((res: any) => { let user = res.data.user; setAvatar(user.avatar); + let box = res.data.dep_ids; + let depIds: any[] = []; + if (box.length > 1) { + for (let i = 0; i < box.length; i++) { + let item = checkChild(deps, box[i]); + let arr: any[] = []; + if (item.parent_chain === "") { + arr.push(box[i]); + } else { + let new_arr = item.parent_chain.split(","); + new_arr.map((num: any) => { + arr.push(Number(num)); + }); + arr.push(box[i]); + } + depIds.push(arr); + } + } else { + depIds = res.data.dep_ids; + } form.setFieldsValue({ email: user.email, name: user.name, nickname: user.nickname, avatar: user.avatar, idCard: user.id_card, - dep_ids: res.data.dep_ids, + dep_ids: depIds, }); }); }; + const checkChild = (departments: any[], id: number) => { + for (let key in departments) { + for (let i = 0; i < departments[key].length; i++) { + if (departments[key][i].id === id) { + return departments[key][i]; + } + } + } + }; + const checkArr = (departments: any[], id: number) => { const arr = []; for (let i = 0; i < departments[id].length; i++) { @@ -76,7 +104,11 @@ export const MemberUpdatePage: React.FC = () => { let id = Number(params.memberId); const arr = []; for (let i = 0; i < values.dep_ids.length; i++) { - arr.push(values.dep_ids[i][values.dep_ids[i].length - 1]); + if (Array.isArray(values.dep_ids[i])) { + arr.push(values.dep_ids[i][values.dep_ids[i].length - 1]); + } else { + arr.push(values.dep_ids[i]); + } } user .updateUser( @@ -170,11 +202,7 @@ export const MemberUpdatePage: React.FC = () => { > - + { setParentId(data.parent_id); }); }; + const checkArr = (categories: any[], id: number) => { const arr = [];