mirror of
https://codeup.aliyun.com/67762337eccfc218f6110e0e/vue/fe-manage.git
synced 2025-12-10 03:16:44 +08:00
-- fix 在线课重复
This commit is contained in:
@@ -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">
|
||||
|
||||
|
||||
@@ -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"/>
|
||||
|
||||
@@ -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"/>
|
||||
|
||||
Reference in New Issue
Block a user