import { NButton, NCascader, NForm, NFormItem, NInput, NScrollbar, NSelect, NSpace, useMessage } from 'naive-ui'; import { TransitionGroup, defineComponent, onMounted, reactive, ref } from 'vue'; import styles from './index.module.less'; import UploadFile from '@/components/upload-file'; import { nextTick } from 'vue'; import { scrollToErrorForm } from '@/utils'; import { api_lessonCoursewareSave } from '../../api'; import iconUpload from '../../images/icon-upload.png'; import iconUpload2 from '../../images/icon-upload2.png'; import iconAdd from '../../images/icon-add.png'; import iconMenu from '../../images/icon-menu.png'; import btnAdd from '../../images/btn-add.png'; import btnDelete from '../../images/btn-delete.png'; import btnUp from '../../images/btn-up.png'; import btnDown from '../../images/btn-down.png'; import btnRemove from '../../images/btn-remove.png'; import { lessonCoursewareDetail } from '/src/views/prepare-lessons/api'; import { useCatchStore } from '/src/store/modules/catchData'; export const BOOK_DATA = { grades: [ { label: '一年级', value: 1 }, { label: '二年级', value: 2 }, { label: '三年级', value: 3 }, { label: '四年级', value: 4 }, { label: '五年级', value: 5 }, { label: '六年级', value: 6 }, { label: '七年级', value: 7 }, { label: '八年级', value: 8 }, { label: '九年级', value: 9 } ], bookTypes: [ { label: '上册', value: 'LAST' }, { label: '下册', value: 'NEXT' } ] }; /** 添加单元 */ const createLesson = () => { return { key: 'item' + Date.now(), name: '', // 单元名称 lessonTargetDesc: '', // 课时目标描述 knowledgeList: [ { key: Date.now() + '' + 0, name: '' // 章节名称 } ] // 章节信息 }; }; const initState = () => ({ id: null, // 教材id name: '', currentGradeNum: null as any, instrumentIds: null as any, // bookType: null, // 上下册 coverImg: '', // 封面 instruemntIds: [] as any, enableFlag: true, // 状态 bookTypes: [], // 册别 type: 'COURSEWARE', // 教材类型:COURSEWARE,THEORY,可用值:COURSEWARE,THEORY lessonList: [] as any // 单元列表 }); export default defineComponent({ name: 'addNatural', props: { item: { type: Object, default: () => ({}) } }, emits: ['close', 'confirm'], setup(props, { emit }) { const catchStore = useCatchStore(); const message = useMessage(); const data = reactive({ uploading: false, subjectList: [] as any }); const formRef = ref(); const form = reactive(initState()); const handleSave = () => { formRef.value?.validate((err: any) => { if (err) { nextTick(scrollToErrorForm); return; } handleSubmit(); }); }; const handleSubmit = async () => { data.uploading = true; try { const { currentGradeNum, bookTypes, instrumentIds, ...more } = form; await api_lessonCoursewareSave({ currentGradeNum: currentGradeNum?.join(','), bookTypes: bookTypes?.join(','), instrumentIds: instrumentIds?.join(','), ...more }); Object.assign(form, initState()); message.success(props.item.id ? '保存成功' : '添加成功'); emit('close', true); emit('confirm'); } catch { // } data.uploading = false; }; onMounted(async () => { if (!props.item.id) { form.lessonList = [createLesson()]; } await catchStore.getSubjects(); if (props.item.id) { // form.lessonList = []; const { data } = await lessonCoursewareDetail({ id: props.item.id }); form.id = data.id; form.name = data.name; form.currentGradeNum = data.currentGradeNum ? data.currentGradeNum.split(',').map((item: any) => Number(item)) : null; form.bookTypes = data.bookTypes ? data.bookTypes.split(',') : null form.instrumentIds = data.instrumentIds ? data.instrumentIds.split(',').map((item: any) => item) : null; // form.bookType = data.bookType; form.coverImg = data.coverImg; form.lessonList = []; const lessonList = data.lessonList || []; const tempLesson: any[] = []; lessonList.forEach((item: any) => { const tmpItem: any = { id: item.id, key: 'item' + Date.now() + '-' + Math.random() * 100, name: item.name, lessonTargetDesc: item.lessonTargetDesc, knowledgeList: [] as any }; if (item.knowledgeList && item.knowledgeList.length) { item.knowledgeList.forEach((knowledge: any) => { tmpItem.knowledgeList.push({ id: knowledge.id, key: Date.now() + '-' + Math.random() * 100, name: knowledge.name }); }); } tempLesson.push(tmpItem); }); form.lessonList = tempLesson; } data.subjectList = catchStore.getEnableSingleAllSubjects( form.instrumentIds ); }); return () => (
请上传教材封面