forked from integrated_whb/integrated_whb_vue
🐜 教育培训-平台资源库-课程管理-课件预览
parent
24387955fe
commit
3ef14d2406
|
@ -135,10 +135,6 @@
|
||||||
:src="data.pdfDialog.src"
|
:src="data.pdfDialog.src"
|
||||||
v-model:visible="data.pdfDialog.visible"
|
v-model:visible="data.pdfDialog.visible"
|
||||||
/>
|
/>
|
||||||
<layout-txt
|
|
||||||
:src="data.txtDialog.src"
|
|
||||||
v-model:visible="data.txtDialog.visible"
|
|
||||||
/>
|
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
@ -158,7 +154,6 @@ import { debounce } from "throttle-debounce";
|
||||||
import { ElMessage, ElMessageBox } from "element-plus";
|
import { ElMessage, ElMessageBox } from "element-plus";
|
||||||
import { useRouter } from "vue-router";
|
import { useRouter } from "vue-router";
|
||||||
import LayoutPdf from "@/components/pdf/index.vue";
|
import LayoutPdf from "@/components/pdf/index.vue";
|
||||||
import LayoutTxt from "@/components/txt/index.vue";
|
|
||||||
|
|
||||||
const router = useRouter();
|
const router = useRouter();
|
||||||
const { list, pagination, searchForm, fnGetData, fnResetPagination } =
|
const { list, pagination, searchForm, fnGetData, fnResetPagination } =
|
||||||
|
@ -173,10 +168,6 @@ const data = reactive({
|
||||||
src: "",
|
src: "",
|
||||||
visible: false,
|
visible: false,
|
||||||
},
|
},
|
||||||
txtDialog: {
|
|
||||||
src: "",
|
|
||||||
visible: false,
|
|
||||||
},
|
|
||||||
});
|
});
|
||||||
|
|
||||||
// const buttonJurisdiction = await useButtonJurisdiction("courseware"); 原项目没找到在哪用
|
// const buttonJurisdiction = await useButtonJurisdiction("courseware"); 原项目没找到在哪用
|
||||||
|
|
|
@ -197,6 +197,9 @@ const fnAdd = debounce(1000, async (VIDEOCOURSEWARE_ID) => {
|
||||||
});
|
});
|
||||||
|
|
||||||
const fnPreviewVideo = async (row) => {
|
const fnPreviewVideo = async (row) => {
|
||||||
|
data.videoDialog.src = "";
|
||||||
|
data.videoDialog.vid = "";
|
||||||
|
data.videoDialog.playAuth = "";
|
||||||
if (
|
if (
|
||||||
row.VIDEOCOURSEWARE_ID_REMOTE &&
|
row.VIDEOCOURSEWARE_ID_REMOTE &&
|
||||||
row.VIDEOCOURSEWARE_ID_REMOTE.length > 0
|
row.VIDEOCOURSEWARE_ID_REMOTE.length > 0
|
||||||
|
@ -205,16 +208,19 @@ const fnPreviewVideo = async (row) => {
|
||||||
VIDEOCOURSEWARE_ID: row.VIDEOCOURSEWARE_ID_REMOTE,
|
VIDEOCOURSEWARE_ID: row.VIDEOCOURSEWARE_ID_REMOTE,
|
||||||
CURRICULUM_ID: row.CURRICULUM_ID_REMOTE,
|
CURRICULUM_ID: row.CURRICULUM_ID_REMOTE,
|
||||||
});
|
});
|
||||||
if (respData && respData.result === "success") {
|
if (respData && respData.type === "success") {
|
||||||
data.videoDialog.playAuth = respData.playAuth;
|
const video = {};
|
||||||
data.videoDialog.vid = row.VIDEOFILES;
|
respData.videoList.forEach((item) => {
|
||||||
|
video[item.definition] = item.playURL;
|
||||||
|
});
|
||||||
|
data.videoDialog.src = JSON.stringify(video);
|
||||||
data.videoDialog.visible = true;
|
data.videoDialog.visible = true;
|
||||||
}
|
}
|
||||||
} else if (row.VIDEOFILES && row.VIDEOFILES.length > 0) {
|
} else if (row.VIDEOFILES && row.VIDEOFILES.length > 0) {
|
||||||
const respData = await getVideoAuth({
|
const respData = await getVideoAuth({
|
||||||
videoId: row.VIDEOFILES,
|
videoId: row.VIDEOFILES,
|
||||||
});
|
});
|
||||||
if (respData && respData.result === "success") {
|
if (respData && respData.type === "success") {
|
||||||
data.videoDialog.playAuth = respData.playAuth;
|
data.videoDialog.playAuth = respData.playAuth;
|
||||||
data.videoDialog.vid = row.VIDEOFILES;
|
data.videoDialog.vid = row.VIDEOFILES;
|
||||||
data.videoDialog.visible = true;
|
data.videoDialog.visible = true;
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
<template>
|
<template>
|
||||||
|
<div>
|
||||||
<layout-card>
|
<layout-card>
|
||||||
<el-divider content-position="left">课程信息</el-divider>
|
<el-divider content-position="left">课程信息</el-divider>
|
||||||
<el-descriptions :column="1" border>
|
<el-descriptions :column="1" border>
|
||||||
|
@ -34,7 +35,24 @@
|
||||||
show-overflow-tooltip
|
show-overflow-tooltip
|
||||||
prop="COURSEWARENAME"
|
prop="COURSEWARENAME"
|
||||||
label="视频课件名称"
|
label="视频课件名称"
|
||||||
/>
|
>
|
||||||
|
<template v-slot="{ row }">
|
||||||
|
<template
|
||||||
|
v-if="
|
||||||
|
(row.VIDEOCOURSEWARE_ID_REMOTE &&
|
||||||
|
row.VIDEOCOURSEWARE_ID_REMOTE.length > 0) ||
|
||||||
|
(row.VIDEOFILES && row.VIDEOFILES.length > 0)
|
||||||
|
"
|
||||||
|
>
|
||||||
|
<a @click="fnPreviewVideo(row)">
|
||||||
|
{{ row.COURSEWARENAME }}
|
||||||
|
</a>
|
||||||
|
</template>
|
||||||
|
<template v-else>
|
||||||
|
{{ row.COURSEWARENAME }}
|
||||||
|
</template>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
<el-table-column
|
<el-table-column
|
||||||
show-overflow-tooltip
|
show-overflow-tooltip
|
||||||
prop="post_type_name"
|
prop="post_type_name"
|
||||||
|
@ -45,7 +63,11 @@
|
||||||
prop="train_type_name"
|
prop="train_type_name"
|
||||||
label="培训行业类型"
|
label="培训行业类型"
|
||||||
/>
|
/>
|
||||||
<el-table-column show-overflow-tooltip prop="CLASSHOUR" label="学时" />
|
<el-table-column
|
||||||
|
show-overflow-tooltip
|
||||||
|
prop="CLASSHOUR"
|
||||||
|
label="学时"
|
||||||
|
/>
|
||||||
<el-table-column
|
<el-table-column
|
||||||
show-overflow-tooltip
|
show-overflow-tooltip
|
||||||
prop="COURSEWAREINTRODUCE"
|
prop="COURSEWAREINTRODUCE"
|
||||||
|
@ -63,7 +85,18 @@
|
||||||
show-overflow-tooltip
|
show-overflow-tooltip
|
||||||
prop="COURSEWARENAME"
|
prop="COURSEWARENAME"
|
||||||
label="资料课件名称"
|
label="资料课件名称"
|
||||||
/>
|
>
|
||||||
|
<template v-slot="{ row }">
|
||||||
|
<template v-if="interceptTheSuffix(row.COURSEWAREFILES, '.pdf')">
|
||||||
|
<a @click="fnPreviewPdf(row.COURSEWAREFILES)">
|
||||||
|
{{ row.COURSEWARENAME }}
|
||||||
|
</a>
|
||||||
|
</template>
|
||||||
|
<template v-else>
|
||||||
|
{{ row.COURSEWARENAME }}
|
||||||
|
</template>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
<el-table-column
|
<el-table-column
|
||||||
show-overflow-tooltip
|
show-overflow-tooltip
|
||||||
prop="post_type_name"
|
prop="post_type_name"
|
||||||
|
@ -74,7 +107,11 @@
|
||||||
prop="train_type_name"
|
prop="train_type_name"
|
||||||
label="培训行业类型"
|
label="培训行业类型"
|
||||||
/>
|
/>
|
||||||
<el-table-column show-overflow-tooltip prop="CLASSHOUR" label="学时" />
|
<el-table-column
|
||||||
|
show-overflow-tooltip
|
||||||
|
prop="CLASSHOUR"
|
||||||
|
label="学时"
|
||||||
|
/>
|
||||||
<el-table-column
|
<el-table-column
|
||||||
show-overflow-tooltip
|
show-overflow-tooltip
|
||||||
prop="COURSEWAREINTRODUCE"
|
prop="COURSEWAREINTRODUCE"
|
||||||
|
@ -88,6 +125,17 @@
|
||||||
</layout-table>
|
</layout-table>
|
||||||
</template>
|
</template>
|
||||||
</layout-card>
|
</layout-card>
|
||||||
|
<layout-pdf
|
||||||
|
:src="data.pdfDialog.src"
|
||||||
|
v-model:visible="data.pdfDialog.visible"
|
||||||
|
/>
|
||||||
|
<layout-video
|
||||||
|
:src="data.videoDialog.src"
|
||||||
|
:vid="data.videoDialog.vid"
|
||||||
|
:play-auth="data.videoDialog.playAuth"
|
||||||
|
v-model:visible="data.videoDialog.visible"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup>
|
<script setup>
|
||||||
|
@ -95,6 +143,10 @@ import LayoutTable from "@/components/table/index.vue";
|
||||||
import { reactive } from "vue";
|
import { reactive } from "vue";
|
||||||
import { useRoute } from "vue-router";
|
import { useRoute } from "vue-router";
|
||||||
import { getCurriculumInfo } from "@/request/platform_resource_library.js";
|
import { getCurriculumInfo } from "@/request/platform_resource_library.js";
|
||||||
|
import LayoutPdf from "@/components/pdf/index.vue";
|
||||||
|
import LayoutVideo from "@/components/video/index.vue";
|
||||||
|
import { getVideoAuth, getVideoSource } from "@/request/api.js";
|
||||||
|
import { interceptTheSuffix } from "@/assets/js/utils.js";
|
||||||
|
|
||||||
const FILE_URL = import.meta.env.VITE_FILE_URL;
|
const FILE_URL = import.meta.env.VITE_FILE_URL;
|
||||||
|
|
||||||
|
@ -104,6 +156,16 @@ const { CURRICULUM_ID } = route.query;
|
||||||
const data = reactive({
|
const data = reactive({
|
||||||
curriculumInfo: {},
|
curriculumInfo: {},
|
||||||
chapterList: [],
|
chapterList: [],
|
||||||
|
pdfDialog: {
|
||||||
|
src: "",
|
||||||
|
visible: false,
|
||||||
|
},
|
||||||
|
videoDialog: {
|
||||||
|
src: "",
|
||||||
|
vid: "",
|
||||||
|
playAuth: "",
|
||||||
|
visible: false,
|
||||||
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
const fnGetCurriculumInfo = async () => {
|
const fnGetCurriculumInfo = async () => {
|
||||||
|
@ -114,6 +176,43 @@ const fnGetCurriculumInfo = async () => {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
await fnGetCurriculumInfo();
|
await fnGetCurriculumInfo();
|
||||||
|
|
||||||
|
const fnPreviewPdf = (FILEPATH) => {
|
||||||
|
data.pdfDialog.visible = true;
|
||||||
|
data.pdfDialog.src = FILEPATH;
|
||||||
|
};
|
||||||
|
|
||||||
|
const fnPreviewVideo = async (row) => {
|
||||||
|
data.videoDialog.src = "";
|
||||||
|
data.videoDialog.vid = "";
|
||||||
|
data.videoDialog.playAuth = "";
|
||||||
|
if (
|
||||||
|
row.VIDEOCOURSEWARE_ID_REMOTE &&
|
||||||
|
row.VIDEOCOURSEWARE_ID_REMOTE.length > 0
|
||||||
|
) {
|
||||||
|
const respData = await getVideoSource({
|
||||||
|
VIDEOCOURSEWARE_ID: row.VIDEOCOURSEWARE_ID_REMOTE,
|
||||||
|
CURRICULUM_ID: row.CURRICULUM_ID_REMOTE,
|
||||||
|
});
|
||||||
|
if (respData && respData.type === "success") {
|
||||||
|
const video = {};
|
||||||
|
respData.videoList.forEach((item) => {
|
||||||
|
video[item.definition] = item.playURL;
|
||||||
|
});
|
||||||
|
data.videoDialog.src = JSON.stringify(video);
|
||||||
|
data.videoDialog.visible = true;
|
||||||
|
}
|
||||||
|
} else if (row.VIDEOFILES && row.VIDEOFILES.length > 0) {
|
||||||
|
const respData = await getVideoAuth({
|
||||||
|
videoId: row.VIDEOFILES,
|
||||||
|
});
|
||||||
|
if (respData && respData.type === "success") {
|
||||||
|
data.videoDialog.playAuth = respData.playAuth;
|
||||||
|
data.videoDialog.vid = row.VIDEOFILES;
|
||||||
|
data.videoDialog.visible = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped lang="scss"></style>
|
<style scoped lang="scss"></style>
|
||||||
|
|
Loading…
Reference in New Issue