|
@@ -36,7 +36,7 @@ import {
|
|
|
saveCourseware
|
|
|
} from '../../../api';
|
|
|
import Draggable from 'vuedraggable';
|
|
|
-import iconDelete from '../../../images/icon-delete.png';
|
|
|
+import iconDelete from '../../../images/icon-delete-default.png';
|
|
|
import iconAddMusic from '../../../images/icon-add-music.png';
|
|
|
import { onBeforeRouteUpdate, useRoute, useRouter } from 'vue-router';
|
|
|
// import deepClone from '/src/helpers/deep-clone';
|
|
@@ -221,7 +221,7 @@ export default defineComponent({
|
|
|
};
|
|
|
|
|
|
// 操作
|
|
|
- const onChangePoint = (type: string, index: number) => {
|
|
|
+ const onChangePoint = (type: string, index: number, item?: any) => {
|
|
|
if (type === 'up') {
|
|
|
// 向上移动
|
|
|
if (index === 0) return;
|
|
@@ -241,8 +241,9 @@ export default defineComponent({
|
|
|
contentDirection: 'left',
|
|
|
title: '删除知识点',
|
|
|
loading: false,
|
|
|
- content:
|
|
|
- '请确认是否删除该知识点,删除知识点后将同步删除知识点下的资源',
|
|
|
+ content: `请确认是否删除${
|
|
|
+ item.name ? '【' + item.name + '】' : '该知识点'
|
|
|
+ },删除知识点后将同步删除知识点下的资源`,
|
|
|
cancelButtonText: '取消',
|
|
|
confirmButtonText: '确认',
|
|
|
index
|
|
@@ -260,6 +261,34 @@ export default defineComponent({
|
|
|
addCoursewareItem(forms.addCoursewareItem);
|
|
|
} else if (type === 'save' || type === 'pageLive') {
|
|
|
if (forms.messageOperation.loading) return;
|
|
|
+ if (!forms.name) {
|
|
|
+ message.error('请输入课件标题');
|
|
|
+ forms.messageOperation.visiable = false;
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ if (forms.subjects.length <= 0) {
|
|
|
+ message.error('请选择声部');
|
|
|
+ forms.messageOperation.visiable = false;
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ let isNotAdd = false;
|
|
|
+ for (const item of forms.coursewareList) {
|
|
|
+ if (!item.name) {
|
|
|
+ message.error('请输入知识点名称');
|
|
|
+ forms.messageOperation.visiable = false;
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ if (Array.isArray(item.list) && item.list.length <= 0) {
|
|
|
+ isNotAdd = true;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if (isNotAdd) {
|
|
|
+ message.error('请至少添加一个资源');
|
|
|
+ forms.messageOperation.visiable = false;
|
|
|
+ return;
|
|
|
+ }
|
|
|
forms.messageOperation.loading = true;
|
|
|
await onSaveCourseWare();
|
|
|
forms.messageOperation.loading = false;
|
|
@@ -279,9 +308,12 @@ export default defineComponent({
|
|
|
const addCoursewareItem = (item: any, point?: any) => {
|
|
|
nextTick(() => {
|
|
|
if (point) {
|
|
|
- const dom = document.querySelectorAll('.row-nav');
|
|
|
+ const rowGroupDom = document.querySelectorAll('.row-group');
|
|
|
+ console.log(rowGroupDom, 'row');
|
|
|
+ const dom = rowGroupDom[item.index].querySelectorAll('.row-nav');
|
|
|
+ // const dom = document.querySelectorAll('.row-nav');
|
|
|
let isAdd = false;
|
|
|
- dom.forEach((child: any) => {
|
|
|
+ dom.forEach((child: any, index: number) => {
|
|
|
// console.log(child);
|
|
|
const status = isPointInsideElement(child, point.x, point.y);
|
|
|
if (status) {
|
|
@@ -289,9 +321,9 @@ export default defineComponent({
|
|
|
forms.coursewareList[item.index || 0].list || [];
|
|
|
const left = isPointOnLeft(child, point.x);
|
|
|
if (!left) {
|
|
|
- array.splice(item.index + 1, 0, item);
|
|
|
+ array.splice(index + 1, 0, item);
|
|
|
} else {
|
|
|
- array.splice(item.index, 0, item);
|
|
|
+ array.splice(index, 0, item);
|
|
|
}
|
|
|
isAdd = true;
|
|
|
forms.coursewareList[item.index || 0].list = array;
|
|
@@ -334,17 +366,10 @@ export default defineComponent({
|
|
|
message.error('请至少添加一个资源');
|
|
|
return;
|
|
|
}
|
|
|
- forms.messageOperation = {
|
|
|
- visiable: true,
|
|
|
- type: 'save',
|
|
|
- loading: false,
|
|
|
- contentDirection: 'center',
|
|
|
- title: '保存课件',
|
|
|
- content: '当前课件暂未保存,是否保存?',
|
|
|
- cancelButtonText: '不保存',
|
|
|
- confirmButtonText: '保存',
|
|
|
- index: 0
|
|
|
- };
|
|
|
+ await onSaveCourseWare();
|
|
|
+
|
|
|
+ emit('change', { status: false });
|
|
|
+ eventGlobal.emit('teacher-slideshow', false);
|
|
|
} catch {
|
|
|
//
|
|
|
}
|
|
@@ -389,7 +414,6 @@ export default defineComponent({
|
|
|
chapterKnowledgeMaterialList: tempItem
|
|
|
});
|
|
|
});
|
|
|
- console.log(params.chapterKnowledgeList);
|
|
|
if (props.groupItem?.id) {
|
|
|
await api_teacherChapterLessonCoursewareUpdate({
|
|
|
id: props.groupItem.id,
|
|
@@ -430,7 +454,6 @@ export default defineComponent({
|
|
|
|
|
|
// 当页面离开时
|
|
|
const onPageBeforeLeave = (event: any) => {
|
|
|
- console.log(event, typeof event);
|
|
|
forms.messageCallBack = event;
|
|
|
forms.messageOperation = {
|
|
|
visiable: true,
|
|
@@ -466,6 +489,13 @@ export default defineComponent({
|
|
|
deep: true
|
|
|
}
|
|
|
);
|
|
|
+
|
|
|
+ // 全选
|
|
|
+ const chioseAll = (list: any) => {
|
|
|
+ forms.subjects = list.map((child: any) => {
|
|
|
+ return child.id;
|
|
|
+ }) as any;
|
|
|
+ };
|
|
|
return () => (
|
|
|
<div class={styles.coursewareModal}>
|
|
|
<div class={styles.btnGroup}>
|
|
@@ -496,6 +526,19 @@ export default defineComponent({
|
|
|
size="small"
|
|
|
v-model:value={forms.subjects}
|
|
|
clearable
|
|
|
+ v-slots={{
|
|
|
+ action: () => (
|
|
|
+ <>
|
|
|
+ <NButton
|
|
|
+ text
|
|
|
+ style=" --n-width: 100% "
|
|
|
+ size="small"
|
|
|
+ onClick={() => chioseAll(prepareStore.getSubjectList)}>
|
|
|
+ 全选
|
|
|
+ </NButton>
|
|
|
+ </>
|
|
|
+ )
|
|
|
+ }}
|
|
|
/>
|
|
|
</div>
|
|
|
<div class={styles.btnItem}>
|
|
@@ -527,12 +570,24 @@ export default defineComponent({
|
|
|
<NButton
|
|
|
type="error"
|
|
|
onClick={() => {
|
|
|
- emit('change', { status: false });
|
|
|
- eventGlobal.emit('teacher-slideshow', false);
|
|
|
+ forms.messageOperation = {
|
|
|
+ visiable: true,
|
|
|
+ type: 'save',
|
|
|
+ loading: false,
|
|
|
+ contentDirection: 'center',
|
|
|
+ title: '保存课件',
|
|
|
+ content: '当前课件暂未保存,是否保存?',
|
|
|
+ cancelButtonText: '不保存',
|
|
|
+ confirmButtonText: '保存',
|
|
|
+ index: 0
|
|
|
+ };
|
|
|
}}>
|
|
|
取消
|
|
|
</NButton>
|
|
|
- <NButton type="primary" onClick={onSubmit}>
|
|
|
+ <NButton
|
|
|
+ type="primary"
|
|
|
+ onClick={onSubmit}
|
|
|
+ disabled={forms.coursewareList.length <= 0}>
|
|
|
保存课件
|
|
|
</NButton>
|
|
|
{/* <NButton
|
|
@@ -550,7 +605,7 @@ export default defineComponent({
|
|
|
<div class={[styles.listSection]}>
|
|
|
{forms.coursewareList.map((item: any, index: number) => (
|
|
|
<div
|
|
|
- class={styles.listItems}
|
|
|
+ class={[styles.listItems, 'row-group']}
|
|
|
onDragenter={(e: any) => {
|
|
|
e.preventDefault();
|
|
|
}}
|
|
@@ -603,7 +658,7 @@ export default defineComponent({
|
|
|
|
|
|
<NSpace class={styles.operationGroup}>
|
|
|
{index > 0 && (
|
|
|
- <NTooltip>
|
|
|
+ <NTooltip showArrow={false}>
|
|
|
{{
|
|
|
trigger: () => (
|
|
|
<i
|
|
@@ -615,7 +670,7 @@ export default defineComponent({
|
|
|
</NTooltip>
|
|
|
)}
|
|
|
{forms.coursewareList.length > 1 && (
|
|
|
- <NTooltip>
|
|
|
+ <NTooltip showArrow={false}>
|
|
|
{{
|
|
|
trigger: () => (
|
|
|
<i
|
|
@@ -626,12 +681,14 @@ export default defineComponent({
|
|
|
}}
|
|
|
</NTooltip>
|
|
|
)}
|
|
|
- <NTooltip>
|
|
|
+ <NTooltip showArrow={false}>
|
|
|
{{
|
|
|
trigger: () => (
|
|
|
<i
|
|
|
class={styles.iconCRemove}
|
|
|
- onClick={() => onChangePoint('remove', index)}></i>
|
|
|
+ onClick={() =>
|
|
|
+ onChangePoint('remove', index, item)
|
|
|
+ }></i>
|
|
|
),
|
|
|
default: () => '删除知识点'
|
|
|
}}
|
|
@@ -756,13 +813,19 @@ export default defineComponent({
|
|
|
</NScrollbar>
|
|
|
|
|
|
{/* 弹窗查看 */}
|
|
|
- <CardPreview v-model:show={forms.show} item={forms.item} />
|
|
|
+ <CardPreview
|
|
|
+ size={
|
|
|
+ ['INSTRUMENT', 'THEORY'].includes(forms.item.type) ? 'large' : ''
|
|
|
+ }
|
|
|
+ v-model:show={forms.show}
|
|
|
+ item={forms.item}
|
|
|
+ />
|
|
|
|
|
|
<NModal
|
|
|
v-model:show={forms.addCoursewareVisiable}
|
|
|
preset="card"
|
|
|
class={['modalTitle', styles.addCourseware]}
|
|
|
- title={'添加知识点'}>
|
|
|
+ title={'添加到知识点'}>
|
|
|
<AddItemModel
|
|
|
coursewareList={forms.coursewareList}
|
|
|
onClose={() => (forms.addCoursewareVisiable = false)}
|
|
@@ -776,6 +839,8 @@ export default defineComponent({
|
|
|
});
|
|
|
|
|
|
forms.addCoursewareVisiable = false;
|
|
|
+ } else {
|
|
|
+ message.error('请选择需要添加的知识点');
|
|
|
}
|
|
|
}}
|
|
|
/>
|
|
@@ -851,10 +916,10 @@ export default defineComponent({
|
|
|
onComfirm={item => {
|
|
|
if (Array.isArray(item)) {
|
|
|
item.forEach((child: any) => {
|
|
|
- addItem({ ...child, index: forms.addOtherIndex });
|
|
|
+ addCoursewareItem({ ...child, index: forms.addOtherIndex });
|
|
|
});
|
|
|
} else {
|
|
|
- addItem({ ...item, index: forms.addOtherIndex });
|
|
|
+ addCoursewareItem({ ...item, index: forms.addOtherIndex });
|
|
|
}
|
|
|
}}
|
|
|
/>
|