mirror of
https://codeup.aliyun.com/67762337eccfc218f6110e0e/vue/fe-manage.git
synced 2025-12-10 11:26:45 +08:00
-- fix 在线课重复
This commit is contained in:
@@ -3,11 +3,11 @@
|
|||||||
<slot></slot>
|
<slot></slot>
|
||||||
</div>
|
</div>
|
||||||
<a-drawer
|
<a-drawer
|
||||||
:visible="visible"
|
:visible="visible"
|
||||||
class="drawerStyle addonlineDrawer"
|
class="drawerStyle addonlineDrawer"
|
||||||
width="800"
|
width="800"
|
||||||
title="添加在线"
|
title="添加在线"
|
||||||
placement="right"
|
placement="right"
|
||||||
>
|
>
|
||||||
<div class="drawerMain">
|
<div class="drawerMain">
|
||||||
<div class="header">
|
<div class="header">
|
||||||
@@ -17,9 +17,9 @@
|
|||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<div class="contentMain" style="padding:20px">
|
<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">{{
|
<a-button type="primary" style="border-radius: 4px">{{
|
||||||
taskIndex === -1 ? '选择/新建课程' : '重新选择'
|
taskIndex === -1 ? "选择/新建课程" : "重新选择"
|
||||||
}}
|
}}
|
||||||
</a-button>
|
</a-button>
|
||||||
</CreateOnline>
|
</CreateOnline>
|
||||||
@@ -27,10 +27,10 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="drawerMain">
|
<div class="drawerMain">
|
||||||
<a-table
|
<a-table
|
||||||
:columns="columns"
|
:columns="columns"
|
||||||
:data-source="selectsData"
|
:data-source="selectsData"
|
||||||
row-key="id"
|
row-key="id"
|
||||||
:pagination="false"
|
:pagination="false"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
<div class="main_btns">
|
<div class="main_btns">
|
||||||
@@ -41,7 +41,7 @@
|
|||||||
</a-drawer>
|
</a-drawer>
|
||||||
</template>
|
</template>
|
||||||
<script setup>
|
<script setup>
|
||||||
import {defineEmits, defineProps, ref, watch} from "vue";
|
import {computed, defineEmits, defineProps, ref, watch} from "vue";
|
||||||
import {message} from "ant-design-vue";
|
import {message} from "ant-design-vue";
|
||||||
import CreateOnline from "@/components/drawers/CreateOnline.vue";
|
import CreateOnline from "@/components/drawers/CreateOnline.vue";
|
||||||
|
|
||||||
@@ -50,15 +50,16 @@ const props = defineProps({
|
|||||||
infoType: Number,
|
infoType: Number,
|
||||||
courseSyncFlag: Number,
|
courseSyncFlag: Number,
|
||||||
id: Number,
|
id: Number,
|
||||||
taskList: []
|
taskList: [],
|
||||||
})
|
chapterList: []
|
||||||
const visible = ref(false)
|
});
|
||||||
const onlineRef = ref(false)
|
const visible = ref(false);
|
||||||
|
const onlineRef = ref(false);
|
||||||
const taskIndex = ref(-1);
|
const taskIndex = ref(-1);
|
||||||
const rowSelectKeys = ref([]);
|
const rowSelectKeys = ref([]);
|
||||||
const selectsData = ref([]);
|
const selectsData = ref([]);
|
||||||
|
|
||||||
const emit = defineEmits({})
|
const emit = defineEmits({});
|
||||||
const columns = ref([
|
const columns = ref([
|
||||||
{
|
{
|
||||||
title: "课程名称",
|
title: "课程名称",
|
||||||
@@ -73,7 +74,7 @@ const columns = ref([
|
|||||||
key: "type",
|
key: "type",
|
||||||
width: "100px",
|
width: "100px",
|
||||||
align: "center",
|
align: "center",
|
||||||
customRender: ({record: {type}}) => ({10: '微课', 21: '直播', 20: '录播', 30: '面授', 90: '混合'}[type]),
|
customRender: ({ record: { type } }) => ({ 10: "微课", 21: "直播", 20: "录播", 30: "面授", 90: "混合" }[type]),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: "创建人",
|
title: "创建人",
|
||||||
@@ -96,64 +97,71 @@ const columns = ref([
|
|||||||
width: "100px",
|
width: "100px",
|
||||||
align: "center",
|
align: "center",
|
||||||
},
|
},
|
||||||
])
|
]);
|
||||||
watch(taskIndex, () => {
|
watch(taskIndex, () => {
|
||||||
if (taskIndex.value >= 0) {
|
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 = () => {
|
const closeDrawer = () => {
|
||||||
visible.value = false
|
visible.value = false;
|
||||||
taskIndex.value = -1
|
taskIndex.value = -1;
|
||||||
selectsData.value = []
|
selectsData.value = [];
|
||||||
rowSelectKeys.value = []
|
rowSelectKeys.value = [];
|
||||||
};
|
};
|
||||||
|
|
||||||
function confirm() {
|
function confirm() {
|
||||||
if (!selectsData.value.length || !rowSelectKeys.value.length) {
|
if (!selectsData.value.length || !rowSelectKeys.value.length) {
|
||||||
message.warning("请选择在线课!");
|
message.warning("请选择在线课!");
|
||||||
return
|
return;
|
||||||
}
|
}
|
||||||
if (taskIndex.value === -1) {
|
if (taskIndex.value === -1) {
|
||||||
const list = props.taskList
|
const list = props.taskList;
|
||||||
list.push({
|
list.push({
|
||||||
name: selectsData.value[0].name,
|
name: selectsData.value[0].name,
|
||||||
type: props.type,
|
type: props.type,
|
||||||
courseId: selectsData.value[0].id,
|
courseId: selectsData.value[0].id,
|
||||||
info: {...selectsData.value[0]}
|
info: { ...selectsData.value[0] }
|
||||||
})
|
});
|
||||||
} else {
|
} else {
|
||||||
const data = props.taskList[taskIndex.value]
|
const data = props.taskList[taskIndex.value];
|
||||||
data.name = selectsData.value[0].name
|
data.name = selectsData.value[0].name;
|
||||||
data.courseId = selectsData.value[0].id
|
data.courseId = selectsData.value[0].id;
|
||||||
data.info = selectsData.value[0]
|
data.info = selectsData.value[0];
|
||||||
}
|
}
|
||||||
emit('update:taskList', [...props.taskList])
|
emit("update:taskList", [...props.taskList]);
|
||||||
closeDrawer()
|
closeDrawer();
|
||||||
}
|
}
|
||||||
|
|
||||||
function selectCourse(row) {
|
function selectCourse(row) {
|
||||||
console.log(row)
|
console.log(row);
|
||||||
if(!props.courseSyncFlag && !row.refId){
|
if (!props.courseSyncFlag && !row.refId) {
|
||||||
message.warning("请新建本项目在线课!");
|
message.warning("请新建本项目在线课!");
|
||||||
return
|
return;
|
||||||
}
|
}
|
||||||
rowSelectKeys.value = [row.id]
|
|
||||||
selectsData.value = [row]
|
if (selectIds.value.includes(row.id)) {
|
||||||
onlineRef.value.closeModal()
|
message.warning("本项目中已经包含此在线课!");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
rowSelectKeys.value = [row.id];
|
||||||
|
selectsData.value = [row];
|
||||||
|
onlineRef.value.closeModal();
|
||||||
}
|
}
|
||||||
|
|
||||||
function openDrawer(i, row) {
|
function openDrawer(i, row) {
|
||||||
window.selectCourse = selectCourse
|
window.selectCourse = selectCourse;
|
||||||
row && (rowSelectKeys.value = [row.courseId]);
|
row && (rowSelectKeys.value = [row.courseId]);
|
||||||
row && (selectsData.value = [row.info]);
|
row && (selectsData.value = [row.info]);
|
||||||
(i >= 0) && (taskIndex.value = i);
|
(i >= 0) && (taskIndex.value = i);
|
||||||
visible.value = true
|
visible.value = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
defineExpose({openDrawer, selectCourse})
|
defineExpose({ openDrawer, selectCourse });
|
||||||
</script>
|
</script>
|
||||||
<style lang="scss">
|
<style lang="scss">
|
||||||
|
|
||||||
|
|||||||
@@ -141,7 +141,7 @@
|
|||||||
<div class="mid">
|
<div class="mid">
|
||||||
<div class="item" v-for="(value,key) in TASK_TYPE" :key="key">
|
<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"
|
<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="itcon">
|
||||||
<div class="img">
|
<div class="img">
|
||||||
<img :src="value.img"/>
|
<img :src="value.img"/>
|
||||||
|
|||||||
@@ -101,7 +101,7 @@
|
|||||||
<div class="item" v-for="(value,key) in TASK_TYPE" :key="key">
|
<div class="item" v-for="(value,key) in TASK_TYPE" :key="key">
|
||||||
<div v-if="key!=13">
|
<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"
|
<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="itcon">
|
||||||
<div class="img">
|
<div class="img">
|
||||||
<img :src="value.img"/>
|
<img :src="value.img"/>
|
||||||
|
|||||||
Reference in New Issue
Block a user