import { PropType, computed, defineComponent, onMounted, reactive, ref } from 'vue'; import styles from './index.module.less'; import { NButton, NForm, NFormItem, NInputGroup, NInputGroupLabel, NInputNumber, NSpace, NTooltip, useMessage } from 'naive-ui'; import { lessonPreTrainingAdd, lessonPreTrainingUpdate } from '/src/views/prepare-lessons/api'; export default defineComponent({ name: 'train-update', props: { /** 初始数据 */ item: { type: Object, default: () => ({}) }, /** 操作类型 */ type: { type: String as PropType<'train' | 'homework'>, default: 'train' } }, emits: ['close', 'confirm'], setup(props, { emit }) { // 'practice' | 'evaluation' const message = useMessage(); const forms = reactive({ id: null as any, uploading: false, baseMaxScore: 99, type: 'PRACTICE', musicId: '', musicName: '', coursewareKnowledgeDetailId: '', // 章节编号 minScore: null as any, maxScore: null as any, subjectId: '', coverImg: '', practiceSpeed: null as any, // 练习速度 practiceTimes: null as any, // 练习时长 difficulty: 'BEGINNER', // 评测难度 evaluationSpeed: null as any, // 评测速度 evaluationScore: null as any // 评测分数 }); const formsRef = ref(); const onSubmit = async () => { formsRef.value?.validate(async (err: any) => { if (err) { return; } forms.uploading = true; try { const params = { trainingType: forms.type, musicId: forms.musicId, musicName: forms.musicName, coursewareKnowledgeDetailId: forms.coursewareKnowledgeDetailId, subjectId: forms.subjectId, id: forms.id, coverImg: forms.coverImg, trainingConfigJson: '' }; const configJson: any = {}; configJson.practiceChapterBegin = forms.minScore; configJson.practiceChapterEnd = forms.maxScore; if (forms.type === 'PRACTICE') { configJson.practiceSpeed = forms.practiceSpeed; configJson.trainingTimes = forms.practiceTimes; } else { configJson.evaluateDifficult = forms.difficulty; configJson.evaluateSpeed = forms.evaluationSpeed; configJson.trainingTimes = forms.evaluationScore; } configJson.practiceChapterMax = forms.baseMaxScore; params.trainingConfigJson = configJson; // if (props.type === 'train') { // if (forms.id) { // await lessonPreTrainingUpdate(params); // message.success('修改成功'); // } else { // await lessonPreTrainingAdd(params); // message.success('添加成功'); // } // } emit('close'); emit('confirm', params); } catch { // } forms.uploading = false; }); }; onMounted(() => { const item = props.item; console.log(item, 'item'); if (item.trainId) { forms.id = item.trainId; forms.practiceSpeed = item.practiceSpeed; forms.type = item.trainingType; forms.minScore = item.practiceChapterBegin; forms.maxScore = item.practiceChapterEnd; if (item.trainingType === 'PRACTICE') { forms.practiceTimes = item.trainingTimes; } else { forms.evaluationScore = item.trainingTimes; } forms.difficulty = item.evaluateDifficult || 'BEGINNER'; forms.evaluationSpeed = item.evaluateSpeed; } else { forms.minScore = 1; forms.maxScore = item.practiceChapterMax ? item.practiceChapterMax : 1; } forms.baseMaxScore = item.practiceChapterMax || 99; forms.musicId = item.id; forms.musicName = item.musicName; forms.coursewareKnowledgeDetailId = item.coursewareKnowledgeDetailId; forms.subjectId = item.subjectId; forms.coverImg = item.coverImg; }); return () => (
(forms.type = 'PRACTICE')}> 练习 {!props.item.containAccompaniment ? ( {{ trigger: () => ( 评测 ), default: () => '该曲目暂不支持评测' }} ) : ( (forms.type = 'EVALUATION')}> 评测 )}
{ forms.maxScore = null; }} clearable />
-
{forms.type === 'PRACTICE' && ( <> 分钟 )} {forms.type === 'EVALUATION' && ( <> (forms.difficulty = 'BEGINNER')}> 入门级 (forms.difficulty = 'ADVANCED')}> 进阶级 (forms.difficulty = 'PERFORMER')}> 大师级 {/* */} )} emit('close')}> 取消 onSubmit()}> 确认
); } });