|
@@ -12,44 +12,28 @@ import {
|
|
NButton,
|
|
NButton,
|
|
NModal,
|
|
NModal,
|
|
NScrollbar,
|
|
NScrollbar,
|
|
- NSelect,
|
|
|
|
NSpace,
|
|
NSpace,
|
|
NSpin,
|
|
NSpin,
|
|
useMessage,
|
|
useMessage,
|
|
- useDialog,
|
|
|
|
- NSwitch,
|
|
|
|
NInput,
|
|
NInput,
|
|
NTooltip,
|
|
NTooltip,
|
|
- NImage,
|
|
|
|
- NIcon,
|
|
|
|
NForm,
|
|
NForm,
|
|
NFormItem
|
|
NFormItem
|
|
} from 'naive-ui';
|
|
} from 'naive-ui';
|
|
import CardType from '/src/components/card-type';
|
|
import CardType from '/src/components/card-type';
|
|
-// import AttendClass from '/src/views/prepare-lessons/model/attend-class';
|
|
|
|
import { usePrepareStore } from '/src/store/modules/prepareLessons';
|
|
import { usePrepareStore } from '/src/store/modules/prepareLessons';
|
|
-// import { useCatchStore } from '/src/store/modules/catchData';
|
|
|
|
-// import TheEmpty from '/src/components/TheEmpty';
|
|
|
|
import {
|
|
import {
|
|
api_teacherChapterLessonCoursewareAdd,
|
|
api_teacherChapterLessonCoursewareAdd,
|
|
api_teacherChapterLessonCoursewareUpdate,
|
|
api_teacherChapterLessonCoursewareUpdate,
|
|
api_teacherChapterLessonCoursewareDetail,
|
|
api_teacherChapterLessonCoursewareDetail,
|
|
api_materialDetail
|
|
api_materialDetail
|
|
- // courseScheduleStart,
|
|
|
|
- // queryCourseware,
|
|
|
|
- // saveCourseware
|
|
|
|
} from '../../../api';
|
|
} from '../../../api';
|
|
import Draggable from 'vuedraggable';
|
|
import Draggable from 'vuedraggable';
|
|
import iconDelete from '../../../images/icon-delete-default.png';
|
|
import iconDelete from '../../../images/icon-delete-default.png';
|
|
import iconAddMusic from '../../../images/icon-add-music.png';
|
|
import iconAddMusic from '../../../images/icon-add-music.png';
|
|
-// import { onBeforeRouteUpdate, useRoute, useRouter } from 'vue-router';
|
|
|
|
-// import deepClone from '/src/helpers/deep-clone';
|
|
|
|
import CardPreview from '/src/components/card-preview';
|
|
import CardPreview from '/src/components/card-preview';
|
|
import PreviewWindow from '/src/views/preview-window';
|
|
import PreviewWindow from '/src/views/preview-window';
|
|
-// import { state } from '/src/state';
|
|
|
|
-// import SubjectSync from '../../../model/subject-sync';
|
|
|
|
import { eventGlobal } from '/src/utils';
|
|
import { eventGlobal } from '/src/utils';
|
|
-// import iconTips from '../../../images/icon-tips.png';
|
|
|
|
import TheMessageDialog from '/src/components/TheMessageDialog';
|
|
import TheMessageDialog from '/src/components/TheMessageDialog';
|
|
import AddItemModel from '../../../model/add-item-model';
|
|
import AddItemModel from '../../../model/add-item-model';
|
|
import AddOtherSource from '../../../model/add-other-source';
|
|
import AddOtherSource from '../../../model/add-other-source';
|
|
@@ -67,13 +51,9 @@ export default defineComponent({
|
|
},
|
|
},
|
|
emits: ['change'],
|
|
emits: ['change'],
|
|
setup(props, { emit }) {
|
|
setup(props, { emit }) {
|
|
- // const catchStore = useCatchStore();
|
|
|
|
const userStore = useUserStore();
|
|
const userStore = useUserStore();
|
|
|
|
|
|
const prepareStore = usePrepareStore();
|
|
const prepareStore = usePrepareStore();
|
|
- // const route = useRoute();
|
|
|
|
- // const router = useRouter();
|
|
|
|
- // const dialog = useDialog();
|
|
|
|
const message = useMessage();
|
|
const message = useMessage();
|
|
|
|
|
|
const forms = reactive({
|
|
const forms = reactive({
|
|
@@ -114,7 +94,7 @@ export default defineComponent({
|
|
messageOperation: {
|
|
messageOperation: {
|
|
visiable: false,
|
|
visiable: false,
|
|
loading: false, // 是否显示加载
|
|
loading: false, // 是否显示加载
|
|
- type: 'delete' as 'delete' | 'addItem' | 'save' | 'pageLive',
|
|
|
|
|
|
+ type: 'delete' as 'delete' | 'addItem' | 'save' | 'pageLive' | 'checkInstrument',
|
|
contentDirection: 'center' as 'left' | 'center' | 'right',
|
|
contentDirection: 'center' as 'left' | 'center' | 'right',
|
|
title: '删除知识点',
|
|
title: '删除知识点',
|
|
content: '请确认是否删除该知识点,删除知识点后将同步删除知识点下的资源',
|
|
content: '请确认是否删除该知识点,删除知识点后将同步删除知识点下的资源',
|
|
@@ -168,6 +148,8 @@ export default defineComponent({
|
|
type: sub.type,
|
|
type: sub.type,
|
|
title: sub.bizInfo.name,
|
|
title: sub.bizInfo.name,
|
|
dataJson: sub.dataJson,
|
|
dataJson: sub.dataJson,
|
|
|
|
+ instrumentIds: sub.instrumentIds, // 素材编号
|
|
|
|
+ isError: checkCurrentIsInstrument(sub.instruments, sub.type), // 是否异常 当前素材是否在选中的乐器里面
|
|
// isCollect: !!sub.favoriteFlag,
|
|
// isCollect: !!sub.favoriteFlag,
|
|
isSelected: sub.source === 'PLATFORM' ? true : false,
|
|
isSelected: sub.source === 'PLATFORM' ? true : false,
|
|
audioPlayTypeArray: sub.audioPlayTypes
|
|
audioPlayTypeArray: sub.audioPlayTypes
|
|
@@ -209,6 +191,35 @@ export default defineComponent({
|
|
forms.loadingStatus = false;
|
|
forms.loadingStatus = false;
|
|
};
|
|
};
|
|
|
|
|
|
|
|
+ /** 检测当前素材是否包含所选声部 */
|
|
|
|
+ const checkCurrentIsInstrument = (instruments: string, type: string) => {
|
|
|
|
+ // 当前素材是否在选中的乐器里面
|
|
|
|
+ let isError = false
|
|
|
|
+ if(forms.subjects.length <= 0) {
|
|
|
|
+ return true
|
|
|
|
+ }
|
|
|
|
+ // 过滤一些不做校验的素材
|
|
|
|
+ const checkType = ['IMG', 'VIDEO', 'SONG', 'MUSIC', 'PPT', 'LISTEN', 'MUSICIAN']
|
|
|
|
+ if(!checkType.includes(type)) {
|
|
|
|
+ return false
|
|
|
|
+ }
|
|
|
|
+ forms.subjects.forEach((item: any) => {
|
|
|
|
+ if(!instruments?.includes(item)) {
|
|
|
|
+ isError = true
|
|
|
|
+ }
|
|
|
|
+ })
|
|
|
|
+ return isError
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /** 检测之后的提示 */
|
|
|
|
+ const checkCurrentInstrumentTip = (isError = false) => {
|
|
|
|
+ if(isError) {
|
|
|
|
+ message.error('您添加的资源与课件乐器不符')
|
|
|
|
+ } else {
|
|
|
|
+ message.success('添加成功');
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
// 删除
|
|
// 删除
|
|
const onDelete = (j: number, index: number) => {
|
|
const onDelete = (j: number, index: number) => {
|
|
const coursewareItem = forms.coursewareList[index];
|
|
const coursewareItem = forms.coursewareList[index];
|
|
@@ -271,7 +282,7 @@ export default defineComponent({
|
|
} else if (type === 'addItem') {
|
|
} else if (type === 'addItem') {
|
|
forms.coursewareList.push({ name: '', list: [] });
|
|
forms.coursewareList.push({ name: '', list: [] });
|
|
addCoursewareItem(forms.addCoursewareItem);
|
|
addCoursewareItem(forms.addCoursewareItem);
|
|
- } else if (type === 'save' || type === 'pageLive') {
|
|
|
|
|
|
+ } else if (type === 'save' || type === 'pageLive' || type === "checkInstrument") {
|
|
if (forms.messageOperation.loading) return;
|
|
if (forms.messageOperation.loading) return;
|
|
if (!forms.name) {
|
|
if (!forms.name) {
|
|
message.error('请输入课件标题');
|
|
message.error('请输入课件标题');
|
|
@@ -308,6 +319,9 @@ export default defineComponent({
|
|
return;
|
|
return;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ // 检测是否有异常资源
|
|
|
|
+ if(checkInstrumentIdsSubmit() && type !== 'checkInstrument') return
|
|
|
|
+
|
|
forms.messageOperation.loading = true;
|
|
forms.messageOperation.loading = true;
|
|
const resultStatus = await onSaveCourseWare();
|
|
const resultStatus = await onSaveCourseWare();
|
|
forms.messageOperation.loading = false;
|
|
forms.messageOperation.loading = false;
|
|
@@ -318,15 +332,7 @@ export default defineComponent({
|
|
) {
|
|
) {
|
|
forms.messageCallBack();
|
|
forms.messageCallBack();
|
|
}
|
|
}
|
|
- emit('change', {
|
|
|
|
- status: false,
|
|
|
|
- addParam: {
|
|
|
|
- isAdd: !props.groupItem.id ? true : false,
|
|
|
|
- name: forms.name,
|
|
|
|
- id: forms.createId
|
|
|
|
- }
|
|
|
|
- });
|
|
|
|
- eventGlobal.emit('teacher-slideshow', false);
|
|
|
|
|
|
+ onCancelSave()
|
|
}
|
|
}
|
|
}
|
|
}
|
|
forms.messageOperation.visiable = false;
|
|
forms.messageOperation.visiable = false;
|
|
@@ -405,7 +411,11 @@ export default defineComponent({
|
|
materialList.forEach((m: any) => {
|
|
materialList.forEach((m: any) => {
|
|
forms.coursewareList[item.index || 0].list.push(m);
|
|
forms.coursewareList[item.index || 0].list.push(m);
|
|
});
|
|
});
|
|
- message.success('添加成功');
|
|
|
|
|
|
+ // if(item.isError) {
|
|
|
|
+ // message.error('您添加的资源与课件乐器不符')
|
|
|
|
+ // } else {
|
|
|
|
+ // message.success('添加成功');
|
|
|
|
+ // }
|
|
}
|
|
}
|
|
|
|
|
|
timer = setTimeout(() => {
|
|
timer = setTimeout(() => {
|
|
@@ -449,6 +459,10 @@ export default defineComponent({
|
|
});
|
|
});
|
|
forms.coursewareList[item.index || 0].list = array;
|
|
forms.coursewareList[item.index || 0].list = array;
|
|
|
|
|
|
|
|
+ if(item.isError) {
|
|
|
|
+ message.error('您添加的资源与课件乐器不符')
|
|
|
|
+ }
|
|
|
|
+
|
|
timer = setTimeout(() => {
|
|
timer = setTimeout(() => {
|
|
// 内容有更新 - 相关资源会刷新
|
|
// 内容有更新 - 相关资源会刷新
|
|
eventGlobal.emit('onCoursewareUpdate');
|
|
eventGlobal.emit('onCoursewareUpdate');
|
|
@@ -456,6 +470,50 @@ export default defineComponent({
|
|
});
|
|
});
|
|
};
|
|
};
|
|
|
|
|
|
|
|
+ /** 取消保存时处理 */
|
|
|
|
+ const onCancelSave = () => {
|
|
|
|
+ emit('change', {
|
|
|
|
+ status: false,
|
|
|
|
+ addParam: {
|
|
|
|
+ isAdd: false,
|
|
|
|
+ name: forms.name,
|
|
|
|
+ id: forms.createId
|
|
|
|
+ }
|
|
|
|
+ });
|
|
|
|
+ eventGlobal.emit('teacher-slideshow', false);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /** 提交数据前做拦截提示 */
|
|
|
|
+ const checkInstrumentIdsSubmit = () => {
|
|
|
|
+ let status = false
|
|
|
|
+
|
|
|
|
+ // 修改声部后重新检测状态
|
|
|
|
+ forms.coursewareList.forEach((item: any) => {
|
|
|
|
+ const childList = item.list || []
|
|
|
|
+ childList.forEach((child: any) => {
|
|
|
|
+ if(child.isError) {
|
|
|
|
+ status = true
|
|
|
|
+ }
|
|
|
|
+ })
|
|
|
|
+ })
|
|
|
|
+
|
|
|
|
+ if(status) {
|
|
|
|
+ forms.messageOperation = {
|
|
|
|
+ visiable: true,
|
|
|
|
+ type: 'checkInstrument',
|
|
|
|
+ loading: false,
|
|
|
|
+ contentDirection: 'center',
|
|
|
|
+ title: '温馨提示',
|
|
|
|
+ content: '课件中含有不符合课件乐器的资源,是否继续保存?',
|
|
|
|
+ cancelButtonText: '取消',
|
|
|
|
+ confirmButtonText: '继续保存',
|
|
|
|
+ index: 0
|
|
|
|
+ };
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ return status
|
|
|
|
+ }
|
|
|
|
+
|
|
// 提交
|
|
// 提交
|
|
const onSubmit = async () => {
|
|
const onSubmit = async () => {
|
|
try {
|
|
try {
|
|
@@ -490,22 +548,18 @@ export default defineComponent({
|
|
return;
|
|
return;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ // 检测是否有异常资源
|
|
|
|
+ if(checkInstrumentIdsSubmit()) return
|
|
|
|
+
|
|
if (forms.openFlag && !userStore.getReadCoursewareOpenAgreement) {
|
|
if (forms.openFlag && !userStore.getReadCoursewareOpenAgreement) {
|
|
showModalMask.value = true;
|
|
showModalMask.value = true;
|
|
return;
|
|
return;
|
|
}
|
|
}
|
|
|
|
+
|
|
const resultStatus = await onSaveCourseWare();
|
|
const resultStatus = await onSaveCourseWare();
|
|
|
|
|
|
if (resultStatus) {
|
|
if (resultStatus) {
|
|
- emit('change', {
|
|
|
|
- status: false,
|
|
|
|
- addParam: {
|
|
|
|
- isAdd: !props.groupItem.id ? true : false,
|
|
|
|
- name: forms.name,
|
|
|
|
- id: forms.createId
|
|
|
|
- }
|
|
|
|
- });
|
|
|
|
- eventGlobal.emit('teacher-slideshow', false);
|
|
|
|
|
|
+ onCancelSave()
|
|
}
|
|
}
|
|
} catch {
|
|
} catch {
|
|
//
|
|
//
|
|
@@ -567,6 +621,12 @@ export default defineComponent({
|
|
};
|
|
};
|
|
|
|
|
|
const addItem = (item: any, point?: any) => {
|
|
const addItem = (item: any, point?: any) => {
|
|
|
|
+ if(forms.subjects.length <= 0) {
|
|
|
|
+ message.error('请先选择乐器')
|
|
|
|
+ eventGlobal.emit('checkCoursewareForm', 'subject')
|
|
|
|
+ return
|
|
|
|
+ }
|
|
|
|
+ item.isError = checkCurrentIsInstrument(item.instrumentIds, item.type) // 是否异常
|
|
if (forms.coursewareList.length <= 0) {
|
|
if (forms.coursewareList.length <= 0) {
|
|
// 添加到临时对象
|
|
// 添加到临时对象
|
|
forms.addCoursewareItem = item;
|
|
forms.addCoursewareItem = item;
|
|
@@ -586,6 +646,7 @@ export default defineComponent({
|
|
forms.addCoursewareItem = item;
|
|
forms.addCoursewareItem = item;
|
|
} else {
|
|
} else {
|
|
addCoursewareItem(item, point);
|
|
addCoursewareItem(item, point);
|
|
|
|
+ checkCurrentInstrumentTip(item.isError)
|
|
}
|
|
}
|
|
};
|
|
};
|
|
|
|
|
|
@@ -603,16 +664,7 @@ export default defineComponent({
|
|
if (objA === objB && baseA === baseB) {
|
|
if (objA === objB && baseA === baseB) {
|
|
if (typeof event == 'function') {
|
|
if (typeof event == 'function') {
|
|
event();
|
|
event();
|
|
-
|
|
|
|
- emit('change', {
|
|
|
|
- status: false,
|
|
|
|
- addParam: {
|
|
|
|
- isAdd: false,
|
|
|
|
- name: forms.name,
|
|
|
|
- id: forms.createId
|
|
|
|
- }
|
|
|
|
- });
|
|
|
|
- eventGlobal.emit('teacher-slideshow', false);
|
|
|
|
|
|
+ onCancelSave()
|
|
}
|
|
}
|
|
} else {
|
|
} else {
|
|
forms.messageCallBack = event;
|
|
forms.messageCallBack = event;
|
|
@@ -648,16 +700,7 @@ export default defineComponent({
|
|
const baseB = JSON.stringify(forms.baseInfo);
|
|
const baseB = JSON.stringify(forms.baseInfo);
|
|
|
|
|
|
if (objA === objB && baseA === baseB) {
|
|
if (objA === objB && baseA === baseB) {
|
|
- emit('change', {
|
|
|
|
- status: false,
|
|
|
|
- addParam: {
|
|
|
|
- isAdd: false,
|
|
|
|
- name: forms.name,
|
|
|
|
- id: forms.createId
|
|
|
|
- }
|
|
|
|
- });
|
|
|
|
-
|
|
|
|
- eventGlobal.emit('teacher-slideshow', false);
|
|
|
|
|
|
+ onCancelSave()
|
|
} else {
|
|
} else {
|
|
forms.messageOperation = {
|
|
forms.messageOperation = {
|
|
visiable: true,
|
|
visiable: true,
|
|
@@ -683,6 +726,27 @@ export default defineComponent({
|
|
onSubmit();
|
|
onSubmit();
|
|
};
|
|
};
|
|
|
|
|
|
|
|
+ // 声部变化时
|
|
|
|
+ const onCourseWareSubjectChange = (subjects: any) => {
|
|
|
|
+ forms.subjects = subjects
|
|
|
|
+
|
|
|
|
+ let isTips = false
|
|
|
|
+ // 修改声部后重新检测状态
|
|
|
|
+ forms.coursewareList.forEach((item: any) => {
|
|
|
|
+ const childList = item.list || []
|
|
|
|
+ childList.forEach((child: any) => {
|
|
|
|
+ child.isError = checkCurrentIsInstrument(child.instrumentIds, child.type)
|
|
|
|
+ if(child.isError) {
|
|
|
|
+ isTips = true
|
|
|
|
+ }
|
|
|
|
+ })
|
|
|
|
+ })
|
|
|
|
+
|
|
|
|
+ if(isTips) {
|
|
|
|
+ message.error('您添加的资源与课件乐器不符')
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
onMounted(async () => {
|
|
onMounted(async () => {
|
|
// 修改时重置默认数据
|
|
// 修改时重置默认数据
|
|
if (props.groupItem?.id) {
|
|
if (props.groupItem?.id) {
|
|
@@ -695,6 +759,9 @@ export default defineComponent({
|
|
eventGlobal.on('onPrepareAddItem', addItem);
|
|
eventGlobal.on('onPrepareAddItem', addItem);
|
|
eventGlobal.on('pageBeforeLeave', onPageBeforeLeave);
|
|
eventGlobal.on('pageBeforeLeave', onPageBeforeLeave);
|
|
|
|
|
|
|
|
+ // 选择乐器改变时
|
|
|
|
+ eventGlobal.on('coursewareSubjectChange', onCourseWareSubjectChange)
|
|
|
|
+
|
|
// 取消
|
|
// 取消
|
|
eventGlobal.on('coursewareClosed', onCancelCourseware);
|
|
eventGlobal.on('coursewareClosed', onCancelCourseware);
|
|
// 保存
|
|
// 保存
|
|
@@ -704,6 +771,7 @@ export default defineComponent({
|
|
onUnmounted(() => {
|
|
onUnmounted(() => {
|
|
eventGlobal.off('onPrepareAddItem', addItem);
|
|
eventGlobal.off('onPrepareAddItem', addItem);
|
|
eventGlobal.off('pageBeforeLeave', onPageBeforeLeave);
|
|
eventGlobal.off('pageBeforeLeave', onPageBeforeLeave);
|
|
|
|
+ eventGlobal.off('coursewareSubjectChange', onCourseWareSubjectChange)
|
|
eventGlobal.off('coursewareClosed', onCancelCourseware);
|
|
eventGlobal.off('coursewareClosed', onCancelCourseware);
|
|
eventGlobal.off('coursewareSave', onSubmitCourseware);
|
|
eventGlobal.off('coursewareSave', onSubmitCourseware);
|
|
});
|
|
});
|
|
@@ -734,51 +802,8 @@ export default defineComponent({
|
|
{forms.coursewareList.map((item: any, index: number) => (
|
|
{forms.coursewareList.map((item: any, index: number) => (
|
|
<div
|
|
<div
|
|
class={[styles.listItems, 'row-group']}
|
|
class={[styles.listItems, 'row-group']}
|
|
- // onDragenter={(e: any) => {
|
|
|
|
- // e.preventDefault();
|
|
|
|
- // }}
|
|
|
|
- // onDragover={(e: any) => {
|
|
|
|
- // e.preventDefault();
|
|
|
|
- // }}
|
|
|
|
- // onDrop={(e: any) => {
|
|
|
|
- // let dropItem = e.dataTransfer.getData('text');
|
|
|
|
- // dropItem =
|
|
|
|
- // dropItem && e.dataTransfer.effectAllowed === 'all'
|
|
|
|
- // ? JSON.parse(dropItem)
|
|
|
|
- // : {};
|
|
|
|
- // // 判断是否有数据
|
|
|
|
- // if (dropItem.id) {
|
|
|
|
- // // 获取拖拽的目标元素
|
|
|
|
- // eventGlobal.emit(
|
|
|
|
- // 'onPrepareAddItem',
|
|
|
|
- // {
|
|
|
|
- // materialId: dropItem.id,
|
|
|
|
- // coverImg: dropItem.coverImg,
|
|
|
|
- // type: dropItem.type,
|
|
|
|
- // title: dropItem.title,
|
|
|
|
- // refFlag: dropItem.refFlag,
|
|
|
|
- // isCollect: dropItem.isCollect,
|
|
|
|
- // isSelected: dropItem.isSelected,
|
|
|
|
- // content: dropItem.content,
|
|
|
|
- // removeFlag: false,
|
|
|
|
- // index,
|
|
|
|
- // addType: 'drag'
|
|
|
|
- // },
|
|
|
|
- // {
|
|
|
|
- // x: e.clientX,
|
|
|
|
- // y: e.clientY
|
|
|
|
- // }
|
|
|
|
- // );
|
|
|
|
- // }
|
|
|
|
- // }}
|
|
|
|
>
|
|
>
|
|
<div class={styles.knowledgePoint}>
|
|
<div class={styles.knowledgePoint}>
|
|
- {/* <div class={styles.btnItem}>
|
|
|
|
- <span class={styles.btnTitle}>
|
|
|
|
- <span>*</span>知识点名称:
|
|
|
|
- </span>
|
|
|
|
-
|
|
|
|
- </div> */}
|
|
|
|
<NFormItem
|
|
<NFormItem
|
|
class={styles.btnItem}
|
|
class={styles.btnItem}
|
|
label="知识点名称"
|
|
label="知识点名称"
|
|
@@ -847,27 +872,19 @@ export default defineComponent({
|
|
// @ts-ignore
|
|
// @ts-ignore
|
|
group="description"
|
|
group="description"
|
|
scroll={true}
|
|
scroll={true}
|
|
- // scrollSensitivity={120}
|
|
|
|
- // forceAutoScrollFallback={true}
|
|
|
|
animation={200}
|
|
animation={200}
|
|
- // onChange={(evt: any) => {
|
|
|
|
- // const added = evt.added;
|
|
|
|
- // // 是否为添加
|
|
|
|
- // if (!added || (added && !added.element)) {
|
|
|
|
- // return;
|
|
|
|
- // }
|
|
|
|
-
|
|
|
|
- // if (added.element.sourceForm !== 'resource-item') {
|
|
|
|
- // return;
|
|
|
|
- // }
|
|
|
|
- // // console.log(forms.coursewareList, 'courseware');
|
|
|
|
- // }}
|
|
|
|
onAdd={(evt: any) => {
|
|
onAdd={(evt: any) => {
|
|
// console.log(
|
|
// console.log(
|
|
const list = forms.coursewareList[index].list;
|
|
const list = forms.coursewareList[index].list;
|
|
const dropItem = list[evt.newDraggableIndex];
|
|
const dropItem = list[evt.newDraggableIndex];
|
|
- console.log(dropItem, 'dropItem');
|
|
|
|
if (dropItem.sourceForm === 'resource-item') {
|
|
if (dropItem.sourceForm === 'resource-item') {
|
|
|
|
+ if(forms.subjects.length <= 0) {
|
|
|
|
+ list.splice(evt.newDraggableIndex, 1)
|
|
|
|
+ message.error('请先选择课件乐器')
|
|
|
|
+ eventGlobal.emit('checkCoursewareForm', 'subject')
|
|
|
|
+ return
|
|
|
|
+ }
|
|
|
|
+
|
|
addDragCoursewareItem(
|
|
addDragCoursewareItem(
|
|
{
|
|
{
|
|
materialId: dropItem.id,
|
|
materialId: dropItem.id,
|
|
@@ -877,6 +894,7 @@ export default defineComponent({
|
|
refFlag: dropItem.refFlag,
|
|
refFlag: dropItem.refFlag,
|
|
isCollect: dropItem.isCollect,
|
|
isCollect: dropItem.isCollect,
|
|
isSelected: dropItem.isSelected,
|
|
isSelected: dropItem.isSelected,
|
|
|
|
+ isError: checkCurrentIsInstrument(dropItem.instrumentIds, dropItem.type), // 是否异常
|
|
content: dropItem.content,
|
|
content: dropItem.content,
|
|
audioPlayTypeArray: dropItem.audioPlayTypeArray,
|
|
audioPlayTypeArray: dropItem.audioPlayTypeArray,
|
|
removeFlag: false,
|
|
removeFlag: false,
|
|
@@ -884,6 +902,7 @@ export default defineComponent({
|
|
},
|
|
},
|
|
evt.newDraggableIndex
|
|
evt.newDraggableIndex
|
|
);
|
|
);
|
|
|
|
+ // checkCurrentInstrumentTip(checkCurrentIsInstrument(dropItem.instrumentIds, dropItem.type))
|
|
}
|
|
}
|
|
}}
|
|
}}
|
|
onDrag={(event: any) => {
|
|
onDrag={(event: any) => {
|
|
@@ -927,6 +946,7 @@ export default defineComponent({
|
|
<div class={styles.itemWrapBox}>
|
|
<div class={styles.itemWrapBox}>
|
|
<CardType
|
|
<CardType
|
|
class={[styles.itemContent]}
|
|
class={[styles.itemContent]}
|
|
|
|
+ isError={item.isError}
|
|
isShowCollect={false}
|
|
isShowCollect={false}
|
|
offShelf={item.removeFlag ? true : false}
|
|
offShelf={item.removeFlag ? true : false}
|
|
// onOffShelf={() => onRemove(item)}
|
|
// onOffShelf={() => onRemove(item)}
|
|
@@ -963,6 +983,11 @@ export default defineComponent({
|
|
'handle'
|
|
'handle'
|
|
]}
|
|
]}
|
|
onClick={() => {
|
|
onClick={() => {
|
|
|
|
+ if(forms.subjects.length <= 0) {
|
|
|
|
+ message.error('请先选择课件乐器')
|
|
|
|
+ eventGlobal.emit('checkCoursewareForm', 'subject')
|
|
|
|
+ return
|
|
|
|
+ }
|
|
forms.addOtherSource = true;
|
|
forms.addOtherSource = true;
|
|
forms.addOtherIndex = index;
|
|
forms.addOtherIndex = index;
|
|
}}>
|
|
}}>
|
|
@@ -975,29 +1000,6 @@ export default defineComponent({
|
|
)
|
|
)
|
|
}}
|
|
}}
|
|
</Draggable>
|
|
</Draggable>
|
|
- {/* )}
|
|
|
|
- {item.list <= 0 && (
|
|
|
|
- <div class={styles.list}>
|
|
|
|
- <div class={styles.itemWrap}>
|
|
|
|
- <div class={styles.itemWrapBox}>
|
|
|
|
- <div
|
|
|
|
- class={[
|
|
|
|
- styles.itemContent,
|
|
|
|
- styles.addMusicItem,
|
|
|
|
- 'handle'
|
|
|
|
- ]}
|
|
|
|
- onClick={() => {
|
|
|
|
- forms.addOtherSource = true;
|
|
|
|
- forms.addOtherIndex = index;
|
|
|
|
- }}>
|
|
|
|
- <img src={iconAddMusic} />
|
|
|
|
-
|
|
|
|
- <p class={styles.addMusicName}>添加资源</p>
|
|
|
|
- </div>
|
|
|
|
- </div>
|
|
|
|
- </div>
|
|
|
|
- </div>
|
|
|
|
- )} */}
|
|
|
|
</div>
|
|
</div>
|
|
))}
|
|
))}
|
|
|
|
|
|
@@ -1050,14 +1052,17 @@ export default defineComponent({
|
|
onClose={() => (forms.addCoursewareVisiable = false)}
|
|
onClose={() => (forms.addCoursewareVisiable = false)}
|
|
onConfirm={(selects: number[]) => {
|
|
onConfirm={(selects: number[]) => {
|
|
if (Array.isArray(selects) && selects.length > 0) {
|
|
if (Array.isArray(selects) && selects.length > 0) {
|
|
|
|
+
|
|
selects.forEach(select => {
|
|
selects.forEach(select => {
|
|
addCoursewareItem({
|
|
addCoursewareItem({
|
|
...forms.addCoursewareItem,
|
|
...forms.addCoursewareItem,
|
|
index: select
|
|
index: select
|
|
});
|
|
});
|
|
});
|
|
});
|
|
-
|
|
|
|
|
|
+ console.log(forms.addCoursewareItem, '----', forms.subjects)
|
|
forms.addCoursewareVisiable = false;
|
|
forms.addCoursewareVisiable = false;
|
|
|
|
+
|
|
|
|
+ checkCurrentInstrumentTip(forms.addCoursewareItem.isError)
|
|
} else {
|
|
} else {
|
|
message.error('请选择需要添加的知识点');
|
|
message.error('请选择需要添加的知识点');
|
|
}
|
|
}
|
|
@@ -1083,15 +1088,7 @@ export default defineComponent({
|
|
forms.messageOperation.type === 'save' ||
|
|
forms.messageOperation.type === 'save' ||
|
|
forms.messageOperation.type === 'pageLive'
|
|
forms.messageOperation.type === 'pageLive'
|
|
) {
|
|
) {
|
|
- emit('change', {
|
|
|
|
- status: false,
|
|
|
|
- addParam: {
|
|
|
|
- isAdd: false,
|
|
|
|
- name: forms.name,
|
|
|
|
- id: forms.createId
|
|
|
|
- }
|
|
|
|
- });
|
|
|
|
- eventGlobal.emit('teacher-slideshow', false);
|
|
|
|
|
|
+ onCancelSave()
|
|
if (
|
|
if (
|
|
forms.messageOperation.type === 'pageLive' &&
|
|
forms.messageOperation.type === 'pageLive' &&
|
|
typeof forms.messageCallBack === 'function'
|
|
typeof forms.messageCallBack === 'function'
|
|
@@ -1121,20 +1118,23 @@ export default defineComponent({
|
|
onClose={() => (forms.addOtherSource = false)}
|
|
onClose={() => (forms.addOtherSource = false)}
|
|
onComfirm={item => {
|
|
onComfirm={item => {
|
|
if (Array.isArray(item)) {
|
|
if (Array.isArray(item)) {
|
|
- console.log(item, 'item - item');
|
|
|
|
|
|
+ let isTips = false
|
|
item.forEach(async (child: any) => {
|
|
item.forEach(async (child: any) => {
|
|
- await addCoursewareItem(
|
|
|
|
- { ...child, index: forms.addOtherIndex },
|
|
|
|
- null,
|
|
|
|
- true
|
|
|
|
- );
|
|
|
|
|
|
+ child.isError = checkCurrentIsInstrument(child.instrumentIds, child.type)
|
|
|
|
+ forms.coursewareList[forms.addOtherIndex || 0].list.push(child);
|
|
|
|
+ if(child.isError) {
|
|
|
|
+ isTips = true
|
|
|
|
+ }
|
|
});
|
|
});
|
|
|
|
+ checkCurrentInstrumentTip(isTips)
|
|
} else {
|
|
} else {
|
|
|
|
+ item.isError = checkCurrentIsInstrument(item.instrumentIds, item.type)
|
|
addCoursewareItem(
|
|
addCoursewareItem(
|
|
{ ...item, index: forms.addOtherIndex },
|
|
{ ...item, index: forms.addOtherIndex },
|
|
null,
|
|
null,
|
|
true
|
|
true
|
|
);
|
|
);
|
|
|
|
+ checkCurrentInstrumentTip(item.isError)
|
|
}
|
|
}
|
|
}}
|
|
}}
|
|
/>
|
|
/>
|
|
@@ -1149,16 +1149,7 @@ export default defineComponent({
|
|
try {
|
|
try {
|
|
const resultStatus = await onSaveCourseWare();
|
|
const resultStatus = await onSaveCourseWare();
|
|
if (resultStatus) {
|
|
if (resultStatus) {
|
|
- userStore.setReadCoursewareOpenAgreement(true);
|
|
|
|
- emit('change', {
|
|
|
|
- status: false,
|
|
|
|
- addParam: {
|
|
|
|
- isAdd: !props.groupItem.id ? true : false,
|
|
|
|
- name: forms.name,
|
|
|
|
- id: forms.createId
|
|
|
|
- }
|
|
|
|
- });
|
|
|
|
- eventGlobal.emit('teacher-slideshow', false);
|
|
|
|
|
|
+ onCancelSave()
|
|
}
|
|
}
|
|
} catch {
|
|
} catch {
|
|
//
|
|
//
|