import React, { useState, useEffect } from 'react'; import { Space, Button, Drawer, Form, Input, message, Tag, DatePicker, Spin } from 'antd'; import { SelectRange } from '../../../compenents'; import { useTranslation } from 'react-i18next'; import moment from 'moment/moment'; import { CreateTextbookApi, GetTextbookDetailApi, UpdateTextbookApi } from '../../../api/textbook'; import { ThumbUpload } from './Upload/UploadThumb'; import dayjs from 'dayjs'; const { TextArea } = Input; interface CourseCreateProps { isEdit: boolean; open: boolean; onCancel: () => void; editId?: any; } // @ts-ignore export const CreateTextbook: React.FC = ({ editId, isEdit, open, onCancel }) => { const { t } = useTranslation(); const [form] = Form.useForm(); const [loading, setLoading] = useState(false); const [thumb, setThumb] = useState(''); // 封面 const [allUrl, setAllUrl] = useState(''); // 封面全部路径 // 范围指派 const [depIds, setDepIds] = useState([]); const [groupIds, setGroupIds] = useState([]); const [userIds, setUserIds] = useState([]); const [deps, setDeps] = useState([]); const [groups, setGroups] = useState([]); const [users, setUsers] = useState([]); const [idsVisible, setIdsVisible] = useState(false); const [spinInit, setSpinInit] = useState(false); const [isUploading, setIsUploading] = useState(false); const InitForm = () => { form.setFieldsValue({ title: '', thumb: undefined, isbn: '', dep_ids: undefined, short_desc: '', publish_time: undefined, major: undefined, author: undefined, publish_unit: undefined, create_time: undefined, }); setThumb(''); setAllUrl(''); setDepIds([]); setDeps([]); setGroupIds([]); setGroups([]); setUserIds([]); setUsers([]); }; useEffect(() => { if (editId && isEdit) { setSpinInit(true); getDetail(); } else if (!isEdit && open) { InitForm(); } }, [form, open, isEdit, editId]); useEffect(() => { return () => { InitForm(); }; }, []); // Edit信息回显 const getDetail = () => { GetTextbookDetailApi(editId).then((res: any) => { form.setFieldsValue({ title: res.data.textbook.title, thumb: res.data.textbook.thumb, short_desc: res.data.textbook.shortDesc, author: res.data.textbook.author, major: res.data.textbook.major, publish_time: res.data.textbook.publishTime ? dayjs(res.data.textbook.publishTime) : '', publish_unit: res.data.textbook.publishUnit, create_time: res.data.textbook.createTime ? dayjs(res.data.textbook.createTime) : '', isbn: res.data.textbook.isbn, }); const deps = res.data.deps; if (deps && JSON.stringify(deps) !== '{}') { getDepsDetail(deps); } const groups = res.data.groups; if (groups && JSON.stringify(groups) !== '{}') { getGroupsDetail(groups); } const users = res.data.users; if (users && JSON.stringify(users) !== '{}') { getUsersDetail(users); } if ( (deps && JSON.stringify(deps) !== '{}') || (groups && JSON.stringify(groups) !== '{}') || (users && JSON.stringify(users) !== '{}') ) { form.setFieldsValue({ ids: [1, 2] }); } setThumb(res.data.textbook.thumb); setAllUrl(res.data.textbook.allUrl); setSpinInit(false); }); }; const onFinish = (values: any) => { if (loading) return; const dep_ids: any[] = depIds; const group_ids: any[] = groupIds; const user_ids: any[] = userIds; // 接口位置 setLoading(true); if (isEdit) { UpdateTextbookApi( editId, values.title, thumb, values.short_desc, values.author, values.major, dep_ids, group_ids, user_ids, values.publish_time, values.publish_unit, values.create_time, values.isbn ) .then((res: any) => { setLoading(false); message.success(t('commen.saveSuccess')); onCancel(); }) .catch((e) => { setLoading(false); }); } else { CreateTextbookApi( values.title, thumb, values.short_desc, values.author, values.major, dep_ids, group_ids, user_ids, values.publish_time, values.publish_unit, values.create_time, values.isbn ) .then((res: any) => { setLoading(false); message.success(t('commen.saveSuccess')); onCancel(); }) .catch((e) => { setLoading(false); }); } }; const onFinishFailed = (errorInfo: any) => { console.log('Failed:', errorInfo); }; const disabledDate = (current: any) => { return current && current >= moment().add(0, 'days'); }; const getDepsDetail = (deps: any) => { const arr: any = []; const arr2: any = []; Object.keys(deps).map((v, i) => { arr.push(Number(v)); arr2.push({ key: Number(v), title: { props: { children: deps[v], }, }, }); }); setDepIds(arr); setDeps(arr2); }; const getGroupsDetail = (groups: any) => { const arr: any = []; const arr2: any = []; Object.keys(groups).map((v, i) => { arr.push(Number(v)); arr2.push({ key: Number(v), title: { props: { children: groups[v], }, }, }); }); setGroupIds(arr); setGroups(arr2); }; const getUsersDetail = (users: any) => { const arr: any = []; const arr2: any = []; Object.keys(users).map((v, i) => { arr.push(Number(v)); arr2.push({ id: Number(v), name: users[v], }); }); setUserIds(arr); setUsers(arr2); }; return ( <> } width={700} >
{spinInit ? (
) : (
{/* 表单字段 */}
{t('textbook.create.thumbTip')}
{/*范围指派*/}
{deps.length > 0 && deps.map((item: any, i: number) => ( { e.preventDefault(); const arr = [...deps]; const arr2 = [...depIds]; arr.splice(i, 1); arr2.splice(i, 1); setDeps(arr); setDepIds(arr2); form.setFieldsValue({ ids: arr2.concat(groupIds).concat(userIds), }); }} > {item.title.props.children} ))} {groups.length > 0 && groups.map((item: any, i: number) => ( { e.preventDefault(); const arr = [...groups]; const arr2 = [...groupIds]; arr.splice(i, 1); arr2.splice(i, 1); setGroups(arr); setGroupIds(arr2); form.setFieldsValue({ ids: depIds.concat(arr2).concat(userIds), }); }} > {item.title.props.children} ))} {users.length > 0 && users.map((item: any, j: number) => ( { e.preventDefault(); const arr = [...users]; const arr2 = [...userIds]; arr.splice(j, 1); arr2.splice(j, 1); setUsers(arr); setUserIds(arr2); form.setFieldsValue({ dep_ids: depIds.concat(groupIds).concat(arr2), }); }} > {item.name} ))}