-- fix 在线课重复

This commit is contained in:
yuping
2023-03-09 00:54:48 +08:00
parent b6019bfec6
commit c8dbc48609
3 changed files with 54 additions and 46 deletions

View File

@@ -17,9 +17,9 @@
</div>
<div>
<div class="contentMain" style="padding:20px">
<CreateOnline ref="onlineRef" :id="props.id" :type="props.infoType">
<CreateOnline ref="onlineRef" :id="props.courseSyncFlag?'':props.id" :type="props.courseSyncFlag?'':props.infoType">
<a-button type="primary" style="border-radius: 4px">{{
taskIndex === -1 ? '选择/新建课程' : '重新选择'
taskIndex === -1 ? "选择/新建课程" : "重新选择"
}}
</a-button>
</CreateOnline>
@@ -41,7 +41,7 @@
</a-drawer>
</template>
<script setup>
import {defineEmits, defineProps, ref, watch} from "vue";
import {computed, defineEmits, defineProps, ref, watch} from "vue";
import {message} from "ant-design-vue";
import CreateOnline from "@/components/drawers/CreateOnline.vue";
@@ -50,15 +50,16 @@ const props = defineProps({
infoType: Number,
courseSyncFlag: Number,
id: Number,
taskList: []
})
const visible = ref(false)
const onlineRef = ref(false)
taskList: [],
chapterList: []
});
const visible = ref(false);
const onlineRef = ref(false);
const taskIndex = ref(-1);
const rowSelectKeys = ref([]);
const selectsData = ref([]);
const emit = defineEmits({})
const emit = defineEmits({});
const columns = ref([
{
title: "课程名称",
@@ -73,7 +74,7 @@ const columns = ref([
key: "type",
width: "100px",
align: "center",
customRender: ({record: {type}}) => ({10: '微课', 21: '直播', 20: '录播', 30: '面授', 90: '混合'}[type]),
customRender: ({ record: { type } }) => ({ 10: "微课", 21: "直播", 20: "录播", 30: "面授", 90: "混合" }[type]),
},
{
title: "创建人",
@@ -96,64 +97,71 @@ const columns = ref([
width: "100px",
align: "center",
},
])
]);
watch(taskIndex, () => {
if (taskIndex.value >= 0) {
rowSelectKeys.value = []
rowSelectKeys.value = [];
}
})
});
const selectIds = computed(()=>props.chapterList.flatMap(t=>props.infoType===1?t.taskDraftDtoList:t.draftTaskList)?.filter(s=>s?.type===props.type).map(t=>t.courseId).join(',') || '')
const closeDrawer = () => {
visible.value = false
taskIndex.value = -1
selectsData.value = []
rowSelectKeys.value = []
visible.value = false;
taskIndex.value = -1;
selectsData.value = [];
rowSelectKeys.value = [];
};
function confirm() {
if (!selectsData.value.length || !rowSelectKeys.value.length) {
message.warning("请选择在线课!");
return
return;
}
if (taskIndex.value === -1) {
const list = props.taskList
const list = props.taskList;
list.push({
name: selectsData.value[0].name,
type: props.type,
courseId: selectsData.value[0].id,
info: { ...selectsData.value[0] }
})
});
} else {
const data = props.taskList[taskIndex.value]
data.name = selectsData.value[0].name
data.courseId = selectsData.value[0].id
data.info = selectsData.value[0]
const data = props.taskList[taskIndex.value];
data.name = selectsData.value[0].name;
data.courseId = selectsData.value[0].id;
data.info = selectsData.value[0];
}
emit('update:taskList', [...props.taskList])
closeDrawer()
emit("update:taskList", [...props.taskList]);
closeDrawer();
}
function selectCourse(row) {
console.log(row)
console.log(row);
if (!props.courseSyncFlag && !row.refId) {
message.warning("请新建本项目在线课!");
return
return;
}
rowSelectKeys.value = [row.id]
selectsData.value = [row]
onlineRef.value.closeModal()
if (selectIds.value.includes(row.id)) {
message.warning("本项目中已经包含此在线课!");
return;
}
rowSelectKeys.value = [row.id];
selectsData.value = [row];
onlineRef.value.closeModal();
}
function openDrawer(i, row) {
window.selectCourse = selectCourse
window.selectCourse = selectCourse;
row && (rowSelectKeys.value = [row.courseId]);
row && (selectsData.value = [row.info]);
(i >= 0) && (taskIndex.value = i);
visible.value = true
visible.value = true;
}
defineExpose({openDrawer, selectCourse})
defineExpose({ openDrawer, selectCourse });
</script>
<style lang="scss">

View File

@@ -141,7 +141,7 @@
<div class="mid">
<div class="item" v-for="(value,key) in TASK_TYPE" :key="key">
<component :is="value.component" :ref="el=>courseRef['el'+key]=el" :type="key" :infoType="2" :id="routerInfo.routerInfo?.id" :courseSyncFlag="routerInfo.routerInfo?.courseSyncFlag"
v-model:task-list="routerInfo.chapterList[activeIndex].draftTaskList">
v-model:task-list="routerInfo.chapterList[activeIndex].draftTaskList" :chapter-list="routerInfo.chapterList">
<div class="itcon">
<div class="img">
<img :src="value.img"/>

View File

@@ -101,7 +101,7 @@
<div class="item" v-for="(value,key) in TASK_TYPE" :key="key">
<div v-if="key!=13">
<component :is="value.component" :ref="el=>courseRef['el'+key]=el" :type="key" :infoType="1" :id="projectInfo.projectInfo?.id" :courseSyncFlag="projectInfo.projectInfo?.courseSyncFlag"
v-model:task-list="projectInfo.stageList[activeIndex].taskDraftDtoList">
v-model:task-list="projectInfo.stageList[activeIndex].taskDraftDtoList" :chapter-list="projectInfo.stageList">
<div class="itcon">
<div class="img">
<img :src="value.img"/>