提交 da112287 authored 作者: lihuihui's avatar lihuihui

修改bug

上级 c87335d5
...@@ -55,6 +55,6 @@ export function getCategoryList(params: { type: string; category_name?: string } ...@@ -55,6 +55,6 @@ export function getCategoryList(params: { type: string; category_name?: string }
} }
// 获取项目列表 // 获取项目列表
export function getProjectList(params: { organization_id: string }) { export function getProjectList(params: { organization_id?: string, project_id?: string }) {
return httpRequest.get('/api/resource/v1/util/members', { params }) return httpRequest.get('/api/resource/v1/util/members', { params })
} }
import type { IMenuItem } from '@/types' import type { IMenuItem } from '@/types'
import { VideoCamera, Suitcase, Collection, Files, Monitor, Edit, User, Filter, Coordinate, Notebook, Picture } from '@element-plus/icons-vue' import { Expand, Document, VideoCamera, Suitcase, Collection, Files, Monitor, Edit, User, Filter, Coordinate, Notebook, Picture } from '@element-plus/icons-vue'
export const menus: IMenuItem[] = [ export const menus: IMenuItem[] = [
{ {
tag: 'v1-resource', tag: 'v1-resource',
...@@ -29,15 +29,17 @@ export const menus: IMenuItem[] = [ ...@@ -29,15 +29,17 @@ export const menus: IMenuItem[] = [
icon: Files, icon: Files,
name: '其他资料', name: '其他资料',
path: '/resource/other' path: '/resource/other'
},
{
icon: Expand,
name: '题库管理',
path: '/'
},
{
icon: Document,
name: '试卷管理',
path: '/'
} }
// {
// name: '题库',
// path: '/resource/question'
// },
// {
// name: '试卷',
// path: '/resource/exam'
// }
] ]
}, },
{ {
......
<template> <template>
<div style="width:812;height:443px;position: relative;"> <div>
<video ref="videoPlayer" class="video-js vjs-default-skin vjs-big-play-centered vjs-16-9"></video> <video ref="videoPlayer" class="video-js vjs-default-skin vjs-big-play-centered vjs-16-9"></video>
</div> </div>
</template> </template>
......
...@@ -20,18 +20,34 @@ if (props.url?.indexOf('.pdf') !== -1 || props.url?.indexOf('.txt') !== -1) { ...@@ -20,18 +20,34 @@ if (props.url?.indexOf('.pdf') !== -1 || props.url?.indexOf('.txt') !== -1) {
</script> </script>
<template> <template>
<iframe <div class="max-w-h">
v-if="isShowType === 1" <iframe
width="812" v-if="isShowType === 1"
height="450" :src="`https://view.officeapps.live.com/op/view.aspx?src=${props.url}`"
:src="`https://view.officeapps.live.com/op/view.aspx?src=${props.url}`" ></iframe>
></iframe> <embed :src="props.url" v-else-if="isShowType === 2" />
<embed width="812" height="450" :src="props.url" v-else-if="isShowType === 2" /> <video v-else-if="isShowType === 3" controls id="video">
<video v-else-if="isShowType === 3" width="812" height="433" controls id="video"> <source :src="props.url" />
<source :src="props.url" /> </video>
</video> <audio v-else-if="isShowType === 4" :src="props.url" controls></audio>
<audio v-else-if="isShowType === 4" :src="props.url" controls></audio> <img v-else-if="isShowType === 5" :src="props.url">
<img v-else-if="isShowType === 5" :src="props.url" style="max-width:812px;display: block;"> </div>
</template> </template>
<style lang="scss" scoped> <style lang="scss" scoped>
.max-w-h{
max-width: 1200px;
width: 100%;
height: 500px;
margin: 0 auto;
display: flex;
justify-content: center;
iframe,embed,video{
width: 100%;
height: 100%;
}
img{
width: 100%;
display: block;
}
}
</style> </style>
...@@ -3,20 +3,20 @@ import PreviewFiles from './PreviewFiles.vue' ...@@ -3,20 +3,20 @@ import PreviewFiles from './PreviewFiles.vue'
const dialogVisible = ref(false) const dialogVisible = ref(false)
</script> </script>
<template> <template>
<div>我已阅读并同意<span @click="dialogVisible = true">《紫荆教育用户入驻及网络教学资源协议》</span></div> <div>
我已阅读并同意<span class="red-color" @click="dialogVisible = true">《紫荆教育用户入驻及网络教学资源协议》</span>
</div>
<el-dialog v-model="dialogVisible" title="提示" width="850px"> <el-dialog v-model="dialogVisible" title="提示" width="850px">
<PreviewFiles <PreviewFiles
url="https://webapp-pub.oss-cn-beijing.aliyuncs.com/center_resource/%E7%B4%AB%E8%8D%86%E6%95%99%E8%82%B2%E7%94%A8%E6%88%B7%E5%85%A5%E9%A9%BB%E5%8F%8A%E7%BD%91%E7%BB%9C%E6%95%99%E5%AD%A6%E8%B5%84%E6%BA%90%E5%8D%8F%E8%AE%AE(1).docx" url="https://webapp-pub.oss-cn-beijing.aliyuncs.com/center_resource/%E7%B4%AB%E8%8D%86%E6%95%99%E8%82%B2%E7%94%A8%E6%88%B7%E5%85%A5%E9%A9%BB%E5%8F%8A%E7%BD%91%E7%BB%9C%E6%95%99%E5%AD%A6%E8%B5%84%E6%BA%90%E5%8D%8F%E8%AE%AE(1).docx"
></PreviewFiles> ></PreviewFiles>
<template #footer> <template #footer>
<span class="dialog-footer"> <el-button type="primary" @click="dialogVisible = false">我已阅读并同意</el-button>
<el-button type="primary" @click="dialogVisible = false">我已阅读并同意</el-button>
</span>
</template> </template>
</el-dialog> </el-dialog>
</template> </template>
<style lang="scss" scoped> <style lang="scss" scoped>
span { .red-color {
color: #aa1941; color: #aa1941;
} }
</style> </style>
import { getProjectList } from '@/api/base' import { getProjectList } from '@/api/base'
export function useProjectList(id?: string) { export function useProjectList(id?: string, projectId?: string) {
const list = ref([]) const list = ref([])
const members = ref([]) const members = ref([])
const departmentList = ref([]) const departmentList = ref([])
getProjectList({ organization_id: id || '' }).then((res: any) => { getProjectList({ organization_id: id, project_id: projectId }).then((res: any) => {
list.value = res.data.departments list.value = res.data.departments
members.value = res.data.members members.value = res.data.members
departmentList.value = res.data.departments.reduce((a: any, b:any) => { departmentList.value = res.data.departments.reduce((a: any, b:any) => {
......
...@@ -9,9 +9,6 @@ const props = defineProps({ ...@@ -9,9 +9,6 @@ const props = defineProps({
</script> </script>
<template> <template>
<div class="center-video-box"> <div class="center-video-box">
<div class="file-box">
<PreviewFiles :url="props.data?.url"></PreviewFiles>
</div>
<div class="right-statistics"> <div class="right-statistics">
<div class="stat-item"> <div class="stat-item">
<img src="https://webapp-pub.oss-cn-beijing.aliyuncs.com/center_resource/view-vicon1.png" /> <img src="https://webapp-pub.oss-cn-beijing.aliyuncs.com/center_resource/view-vicon1.png" />
...@@ -42,15 +39,22 @@ const props = defineProps({ ...@@ -42,15 +39,22 @@ const props = defineProps({
</div> </div>
</div> </div>
</div> </div>
<div class="file-box">
<PreviewFiles :url="props.data?.url"></PreviewFiles>
</div>
</div> </div>
</template> </template>
<style lang="scss" scoped> <style lang="scss" scoped>
.center-video-box { .center-video-box {
padding: 20px 0; padding: 20px 0;
display: flex; // display: flex;
.right-statistics { .right-statistics {
flex: 1; // flex: 1;
display: flex;
max-width: 1200px;
justify-content: space-between;
padding-top: 15px; padding-top: 15px;
margin: 0 auto;
.stat-item { .stat-item {
width: 210px; width: 210px;
height: 85px; height: 85px;
...@@ -58,7 +62,8 @@ const props = defineProps({ ...@@ -58,7 +62,8 @@ const props = defineProps({
border-radius: 6px; border-radius: 6px;
display: flex; display: flex;
align-items: center; align-items: center;
margin: 0 auto 20px; // margin: 0 auto 20px;
margin-bottom: 20px;
&:nth-child(even) { &:nth-child(even) {
background: #bf9d6b; background: #bf9d6b;
} }
......
...@@ -6,34 +6,49 @@ const props = defineProps({ ...@@ -6,34 +6,49 @@ const props = defineProps({
require: true require: true
} }
}) })
const fileType = ['doc', 'docx', 'xls', 'xlsx', 'pdf', 'ppt', 'pptx', 'mp3', 'mp4', 'png', 'jpeg', 'jpg']
</script> </script>
<template> <template>
<div class="video-info"> <div class="video-info">
<div class="video-img"> <div class="video-img">
<el-icon class="item-info-icon"> <img
style="width: 80px"
:src="`https://webapp-pub.oss-cn-beijing.aliyuncs.com/center_resource/detail-${props.data?.type}.png`"
v-if="fileType.includes(props.data?.type)"
/>
<el-icon class="item-info-icon" v-else>
<Files /> <Files />
</el-icon> </el-icon>
<!-- <img src="https://iph.href.lu/211x146"> --> <div class="name">文件类型</div>
</div> </div>
<div class="info-items"> <div class="info-items">
<div class="flex-box"> <div class="flex-box">
<div class="i-items"> <div class="i-items">
<img src="https://webapp-pub.oss-cn-beijing.aliyuncs.com/center_resource/video-view-icon1.png" class="icons" /> <img
src="https://webapp-pub.oss-cn-beijing.aliyuncs.com/center_resource/video-view-icon1.png"
class="icons"
/>
<div class="text-box"> <div class="text-box">
<div class="name">状态</div> <div class="name">状态</div>
<div class="value active">{{ props.data?.status_name }}</div> <div class="value active">{{ props.data?.status_name }}</div>
</div> </div>
</div> </div>
<div class="i-items"> <div class="i-items">
<img src="https://webapp-pub.oss-cn-beijing.aliyuncs.com/center_resource/video-view-icon12.png" class="icons" /> <img
src="https://webapp-pub.oss-cn-beijing.aliyuncs.com/center_resource/video-view-icon12.png"
class="icons"
/>
<div class="text-box"> <div class="text-box">
<div class="name">创建者</div> <div class="name">创建者</div>
<div class="value">{{ props.data?.created_operator_name }}</div> <div class="value">{{ props.data?.created_operator_name }}</div>
</div> </div>
</div> </div>
<div class="i-items"> <div class="i-items">
<img src="https://webapp-pub.oss-cn-beijing.aliyuncs.com/center_resource/video-view-icon3.png" class="icons" /> <img
src="https://webapp-pub.oss-cn-beijing.aliyuncs.com/center_resource/video-view-icon3.png"
class="icons"
/>
<div class="text-box"> <div class="text-box">
<div class="name">创建时间</div> <div class="name">创建时间</div>
<div class="value">{{ props.data?.created_time }}</div> <div class="value">{{ props.data?.created_time }}</div>
...@@ -42,21 +57,30 @@ const props = defineProps({ ...@@ -42,21 +57,30 @@ const props = defineProps({
</div> </div>
<div class="flex-box"> <div class="flex-box">
<div class="i-items"> <div class="i-items">
<img src="https://webapp-pub.oss-cn-beijing.aliyuncs.com/center_resource/video-view-icon4.png" class="icons" /> <img
src="https://webapp-pub.oss-cn-beijing.aliyuncs.com/center_resource/video-view-icon4.png"
class="icons"
/>
<div class="text-box"> <div class="text-box">
<div class="name">更新时间</div> <div class="name">更新时间</div>
<div class="value">{{ props.data?.updated_time }}</div> <div class="value">{{ props.data?.updated_time }}</div>
</div> </div>
</div> </div>
<div class="i-items"> <div class="i-items">
<img src="https://webapp-pub.oss-cn-beijing.aliyuncs.com/center_resource/video-view-icon5.png" class="icons" /> <img
src="https://webapp-pub.oss-cn-beijing.aliyuncs.com/center_resource/video-view-icon5.png"
class="icons"
/>
<div class="text-box"> <div class="text-box">
<div class="name">课件名称</div> <div class="name">课件名称</div>
<div class="value">{{ props.data?.name }}</div> <div class="value">{{ props.data?.name }}</div>
</div> </div>
</div> </div>
<div class="i-items"> <div class="i-items">
<img src="https://webapp-pub.oss-cn-beijing.aliyuncs.com/center_resource/video-view-icon6.png" class="icons"> <img
src="https://webapp-pub.oss-cn-beijing.aliyuncs.com/center_resource/video-view-icon6.png"
class="icons"
/>
<div class="text-box"> <div class="text-box">
<div class="name">负责人</div> <div class="name">负责人</div>
<div class="value">{{ props.data?.belong_operator_name }}</div> <div class="value">{{ props.data?.belong_operator_name }}</div>
...@@ -65,14 +89,20 @@ const props = defineProps({ ...@@ -65,14 +89,20 @@ const props = defineProps({
</div> </div>
<div class="flex-box"> <div class="flex-box">
<div class="i-items"> <div class="i-items">
<img src="https://webapp-pub.oss-cn-beijing.aliyuncs.com/center_resource/video-view-icon6.png" class="icons" /> <img
src="https://webapp-pub.oss-cn-beijing.aliyuncs.com/center_resource/video-view-icon6.png"
class="icons"
/>
<div class="text-box"> <div class="text-box">
<div class="name">课件分类</div> <div class="name">课件分类</div>
<div class="value">{{ props.data?.classification_name || '暂无' }}</div> <div class="value">{{ props.data?.classification_name || '暂无' }}</div>
</div> </div>
</div> </div>
<div class="i-items" style="align-items: flex-start"> <div class="i-items" style="align-items: flex-start">
<img src="https://webapp-pub.oss-cn-beijing.aliyuncs.com/center_resource/video-view-icon8.png" class="icons" /> <img
src="https://webapp-pub.oss-cn-beijing.aliyuncs.com/center_resource/video-view-icon8.png"
class="icons"
/>
<div class="text-box"> <div class="text-box">
<div class="name">知识点</div> <div class="name">知识点</div>
<div class="value">{{ props.data?.knowledge_points || '暂无' }}</div> <div class="value">{{ props.data?.knowledge_points || '暂无' }}</div>
...@@ -112,11 +142,11 @@ const props = defineProps({ ...@@ -112,11 +142,11 @@ const props = defineProps({
// flex-wrap: wrap; // flex-wrap: wrap;
flex: 1; flex: 1;
padding-left: 12px; padding-left: 12px;
.flex-box{ .flex-box {
display: flex; display: flex;
justify-content: flex-start; justify-content: flex-start;
} }
.i-items{ .i-items {
width: 30%; width: 30%;
display: flex; display: flex;
align-items: center; align-items: center;
......
...@@ -5,11 +5,16 @@ import { Expand } from '@element-plus/icons-vue' ...@@ -5,11 +5,16 @@ import { Expand } from '@element-plus/icons-vue'
import { useMapStore } from '@/stores/map' import { useMapStore } from '@/stores/map'
import { useGetCategoryList } from '@/composables/useGetCategoryList' import { useGetCategoryList } from '@/composables/useGetCategoryList'
import { useProjectList } from '@/composables/useGetProjectList' import { useProjectList } from '@/composables/useGetProjectList'
import { useUserStore } from '@/stores/user'
// 判断当前用户是不是超级管理员
const user = useUserStore().roles
const isAdmin = !!user.find((item: any) => item.name === '超级管理员')
const store = useMapStore() const store = useMapStore()
// 筛选部门列表 // 筛选部门列表
const departmentList: any = useProjectList().departmentList const departmentList: any = useProjectList('', '79806610719731712').departmentList
// 下拉选择tree 视频分类 // 下拉选择tree 视频分类
let { list: selectTree } = useGetCategoryList() let { list: selectTree } = useGetCategoryList()
...@@ -112,7 +117,7 @@ const typeFilter = () => { ...@@ -112,7 +117,7 @@ const typeFilter = () => {
:data="selectTree" :data="selectTree"
/> />
</template> </template>
<template v-if="tabValue == '3'" #filter-department="{ params }"> <template v-if="tabValue == '3' && isAdmin" #filter-department="{ params }">
<div class="name" style="font-size: 14px; color: #606266; padding-right: 12px">部门</div> <div class="name" style="font-size: 14px; color: #606266; padding-right: 12px">部门</div>
<el-select @change="typeFilter" clearable v-model="params.authorized"> <el-select @change="typeFilter" clearable v-model="params.authorized">
<el-option v-for="item in departmentList" :key="item.id" :label="item.name" :value="item.id" /> <el-option v-for="item in departmentList" :key="item.id" :label="item.name" :value="item.id" />
......
...@@ -172,7 +172,7 @@ const protocol = ref(false) ...@@ -172,7 +172,7 @@ const protocol = ref(false)
</el-form-item> </el-form-item>
<el-form-item label="&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;知识点:"> <el-form-item label="&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;知识点:">
<el-input <el-input
placeholder="请输入该视频相关知识点,多个知识点请使用“,”分隔" placeholder="请输入该课件相关知识点,多个知识点请使用“,”分隔"
maxlength="100" maxlength="100"
v-model="form.knowledge_points" v-model="form.knowledge_points"
:rows="2" :rows="2"
...@@ -306,9 +306,6 @@ const protocol = ref(false) ...@@ -306,9 +306,6 @@ const protocol = ref(false)
padding-left: 90px; padding-left: 90px;
padding-top: 20px; padding-top: 20px;
color: #666666; color: #666666;
span {
color: #aa1941;
}
} }
.btn-box { .btn-box {
display: flex; display: flex;
......
...@@ -9,9 +9,6 @@ const props = defineProps({ ...@@ -9,9 +9,6 @@ const props = defineProps({
</script> </script>
<template> <template>
<div class="center-video-box"> <div class="center-video-box">
<div class="file-box">
<PreviewFiles :url="props.data?.url"></PreviewFiles>
</div>
<div class="right-statistics"> <div class="right-statistics">
<div class="stat-item"> <div class="stat-item">
<img src="https://webapp-pub.oss-cn-beijing.aliyuncs.com/center_resource/view-vicon1.png" /> <img src="https://webapp-pub.oss-cn-beijing.aliyuncs.com/center_resource/view-vicon1.png" />
...@@ -42,14 +39,21 @@ const props = defineProps({ ...@@ -42,14 +39,21 @@ const props = defineProps({
</div> </div>
</div> </div>
</div> </div>
<div class="file-box">
<PreviewFiles :url="props.data?.url"></PreviewFiles>
</div>
</div> </div>
</template> </template>
<style lang="scss" scoped> <style lang="scss" scoped>
.center-video-box { .center-video-box {
padding: 20px 0; padding: 20px 0;
display: flex; // display: flex;
.right-statistics { .right-statistics {
flex: 1; // flex: 1;
display: flex;
justify-content: space-between;
max-width: 1200px;
margin: 0 auto;
padding-top: 15px; padding-top: 15px;
.stat-item { .stat-item {
width: 210px; width: 210px;
...@@ -58,7 +62,8 @@ const props = defineProps({ ...@@ -58,7 +62,8 @@ const props = defineProps({
border-radius: 6px; border-radius: 6px;
display: flex; display: flex;
align-items: center; align-items: center;
margin: 0 auto 20px; // margin: 0 auto 20px;
margin-bottom: 20px;
&:nth-child(even) { &:nth-child(even) {
background: #bf9d6b; background: #bf9d6b;
} }
......
...@@ -6,15 +6,22 @@ const props = defineProps({ ...@@ -6,15 +6,22 @@ const props = defineProps({
require: true require: true
} }
}) })
const fileType = ['doc', 'docx', 'xls', 'xlsx', 'pdf', 'ppt', 'pptx', 'mp3', 'mp4', 'png', 'jpeg', 'jpg']
</script> </script>
<template> <template>
<div class="video-info"> <div class="video-info">
<div class="video-img"> <div class="video-img">
<el-icon class="item-info-icon"> <img
style="width: 80px"
:src="`https://webapp-pub.oss-cn-beijing.aliyuncs.com/center_resource/detail-${props.data?.type}.png`"
v-if="fileType.includes(props.data?.type)"
/>
<el-icon class="item-info-icon" v-else>
<Files /> <Files />
</el-icon> </el-icon>
<!-- <img src="https://iph.href.lu/211x146"> --> <div class="name">文件类型</div>
</div> </div>
<div class="info-items"> <div class="info-items">
<div class="flex-box"> <div class="flex-box">
......
...@@ -5,6 +5,11 @@ import { Expand } from '@element-plus/icons-vue' ...@@ -5,6 +5,11 @@ import { Expand } from '@element-plus/icons-vue'
import { useMapStore } from '@/stores/map' import { useMapStore } from '@/stores/map'
import { useGetCategoryList } from '@/composables/useGetCategoryList' import { useGetCategoryList } from '@/composables/useGetCategoryList'
import { useProjectList } from '@/composables/useGetProjectList' import { useProjectList } from '@/composables/useGetProjectList'
import { useUserStore } from '@/stores/user'
// 判断当前用户是不是超级管理员
const user = useUserStore().roles
const isAdmin = !!user.find((item: any) => item.name === '超级管理员')
const store = useMapStore() const store = useMapStore()
...@@ -17,7 +22,7 @@ const changeCard = () => { ...@@ -17,7 +22,7 @@ const changeCard = () => {
} }
// 筛选部门列表 // 筛选部门列表
const departmentList: any = useProjectList().departmentList const departmentList: any = useProjectList('', '79806610719731712').departmentList
// 下拉选择tree 视频分类 // 下拉选择tree 视频分类
let { list: selectTree } = useGetCategoryList() let { list: selectTree } = useGetCategoryList()
...@@ -112,7 +117,7 @@ const typeFilter = () => { ...@@ -112,7 +117,7 @@ const typeFilter = () => {
:data="selectTree" :data="selectTree"
/> />
</template> </template>
<template v-if="tabValue == '3'" #filter-department="{ params }"> <template v-if="tabValue == '3' && isAdmin" #filter-department="{ params }">
<div class="name" style="font-size: 14px; color: #606266; padding-right: 12px">部门</div> <div class="name" style="font-size: 14px; color: #606266; padding-right: 12px">部门</div>
<el-select @change="typeFilter" clearable v-model="params.authorized"> <el-select @change="typeFilter" clearable v-model="params.authorized">
<el-option v-for="item in departmentList" :key="item.id" :label="item.name" :value="item.id" /> <el-option v-for="item in departmentList" :key="item.id" :label="item.name" :value="item.id" />
......
...@@ -153,7 +153,7 @@ const protocol = ref(false) ...@@ -153,7 +153,7 @@ const protocol = ref(false)
<div class="upload-btn">本地文件</div> <div class="upload-btn">本地文件</div>
</div> </div>
</div> </div>
<div class="tips">课件支持格式包含:doc docx pdf ppt pptx,大小不超过50M</div> <div class="tips">教案支持格式包含:doc docx pdf ppt pptx,大小不超过50M</div>
</div> </div>
</el-form-item> </el-form-item>
<el-form-item label="教案名称:" prop="name"> <el-form-item label="教案名称:" prop="name">
...@@ -170,7 +170,7 @@ const protocol = ref(false) ...@@ -170,7 +170,7 @@ const protocol = ref(false)
</el-form-item> </el-form-item>
<el-form-item label="&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;知识点:"> <el-form-item label="&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;知识点:">
<el-input <el-input
placeholder="请输入该视频相关知识点,多个知识点请使用“,”分隔" placeholder="请输入该教案相关知识点,多个知识点请使用“,”分隔"
maxlength="100" maxlength="100"
v-model="form.knowledge_points" v-model="form.knowledge_points"
:rows="2" :rows="2"
...@@ -303,9 +303,6 @@ const protocol = ref(false) ...@@ -303,9 +303,6 @@ const protocol = ref(false)
padding-left: 90px; padding-left: 90px;
padding-top: 20px; padding-top: 20px;
color: #666666; color: #666666;
span {
color: #aa1941;
}
} }
.btn-box { .btn-box {
display: flex; display: flex;
......
...@@ -9,9 +9,6 @@ const props = defineProps({ ...@@ -9,9 +9,6 @@ const props = defineProps({
</script> </script>
<template> <template>
<div class="center-video-box"> <div class="center-video-box">
<div class="file-box">
<PreviewFiles :url="props.data?.url"></PreviewFiles>
</div>
<div class="right-statistics"> <div class="right-statistics">
<div class="stat-item"> <div class="stat-item">
<img src="https://webapp-pub.oss-cn-beijing.aliyuncs.com/center_resource/view-vicon1.png" /> <img src="https://webapp-pub.oss-cn-beijing.aliyuncs.com/center_resource/view-vicon1.png" />
...@@ -42,14 +39,21 @@ const props = defineProps({ ...@@ -42,14 +39,21 @@ const props = defineProps({
</div> </div>
</div> </div>
</div> </div>
<div class="file-box">
<PreviewFiles :url="props.data?.url"></PreviewFiles>
</div>
</div> </div>
</template> </template>
<style lang="scss" scoped> <style lang="scss" scoped>
.center-video-box { .center-video-box {
padding: 20px 0; padding: 20px 0;
display: flex; // display: flex;
.right-statistics { .right-statistics {
flex: 1; // flex: 1;
display: flex;
justify-content: space-between;
max-width: 1200px;
margin: 0 auto;
padding-top: 15px; padding-top: 15px;
.stat-item { .stat-item {
width: 210px; width: 210px;
...@@ -58,7 +62,8 @@ const props = defineProps({ ...@@ -58,7 +62,8 @@ const props = defineProps({
border-radius: 6px; border-radius: 6px;
display: flex; display: flex;
align-items: center; align-items: center;
margin: 0 auto 20px; // margin: 0 auto 20px;
margin-bottom: 20px;
&:nth-child(even) { &:nth-child(even) {
background: #bf9d6b; background: #bf9d6b;
} }
......
...@@ -6,15 +6,22 @@ const props = defineProps({ ...@@ -6,15 +6,22 @@ const props = defineProps({
require: true require: true
} }
}) })
const fileType = ['doc', 'docx', 'xls', 'xlsx', 'pdf', 'ppt', 'pptx', 'mp3', 'mp4', 'png', 'jpeg', 'jpg']
</script> </script>
<template> <template>
<div class="video-info"> <div class="video-info">
<div class="video-img"> <div class="video-img">
<el-icon class="item-info-icon"> <img
style="width: 80px"
:src="`https://webapp-pub.oss-cn-beijing.aliyuncs.com/center_resource/detail-${props.data?.type}.png`"
v-if="fileType.includes(props.data?.type)"
/>
<el-icon class="item-info-icon" v-else>
<Files /> <Files />
</el-icon> </el-icon>
<!-- <img src="https://iph.href.lu/211x146"> --> <div class="name">文件类型</div>
</div> </div>
<div class="info-items"> <div class="info-items">
<div class="flex-box"> <div class="flex-box">
......
...@@ -6,6 +6,11 @@ import { useMapStore } from '@/stores/map' ...@@ -6,6 +6,11 @@ import { useMapStore } from '@/stores/map'
import { useProjectList } from '@/composables/useGetProjectList' import { useProjectList } from '@/composables/useGetProjectList'
// 下拉选择tree 视频分类 // 下拉选择tree 视频分类
import { useGetCategoryList } from '@/composables/useGetCategoryList' import { useGetCategoryList } from '@/composables/useGetCategoryList'
import { useUserStore } from '@/stores/user'
// 判断当前用户是不是超级管理员
const user = useUserStore().roles
const isAdmin = !!user.find((item: any) => item.name === '超级管理员')
const store = useMapStore() const store = useMapStore()
...@@ -24,7 +29,7 @@ const tabChange = () => { ...@@ -24,7 +29,7 @@ const tabChange = () => {
} }
// 筛选部门列表 // 筛选部门列表
const departmentList: any = useProjectList().departmentList const departmentList: any = useProjectList('', '79806610719731712').departmentList
// 下拉选择tree 视频分类 // 下拉选择tree 视频分类
let { list: selectTree } = useGetCategoryList() let { list: selectTree } = useGetCategoryList()
...@@ -113,7 +118,7 @@ const typeFilter = () => { ...@@ -113,7 +118,7 @@ const typeFilter = () => {
:data="selectTree" :data="selectTree"
/> />
</template> </template>
<template v-if="tabValue == '3'" #filter-department="{ params }"> <template v-if="tabValue == '3' && isAdmin" #filter-department="{ params }">
<div class="name" style="font-size: 14px; color: #606266; padding-right: 12px">部门</div> <div class="name" style="font-size: 14px; color: #606266; padding-right: 12px">部门</div>
<el-select @change="typeFilter" clearable v-model="params.authorized"> <el-select @change="typeFilter" clearable v-model="params.authorized">
<el-option v-for="item in departmentList" :key="item.id" :label="item.name" :value="item.id" /> <el-option v-for="item in departmentList" :key="item.id" :label="item.name" :value="item.id" />
......
...@@ -174,7 +174,7 @@ const protocol = ref(false) ...@@ -174,7 +174,7 @@ const protocol = ref(false)
</el-form-item> </el-form-item>
<el-form-item label="&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;知识点:"> <el-form-item label="&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;知识点:">
<el-input <el-input
placeholder="请输入该视频相关知识点,多个知识点请使用“,”分隔" placeholder="请输入该资料相关知识点,多个知识点请使用“,”分隔"
maxlength="100" maxlength="100"
v-model="form.knowledge_points" v-model="form.knowledge_points"
:rows="2" :rows="2"
...@@ -307,9 +307,6 @@ const protocol = ref(false) ...@@ -307,9 +307,6 @@ const protocol = ref(false)
padding-left: 90px; padding-left: 90px;
padding-top: 20px; padding-top: 20px;
color: #666666; color: #666666;
span {
color: #aa1941;
}
} }
.btn-box { .btn-box {
display: flex; display: flex;
......
...@@ -7,9 +7,6 @@ const videoOptions = $computed(() => { ...@@ -7,9 +7,6 @@ const videoOptions = $computed(() => {
</script> </script>
<template> <template>
<div class="center-video-box"> <div class="center-video-box">
<div style="width:812px; height:433px;padding-bottom: 20px;">
<AppVideoPlayer :options="videoOptions"></AppVideoPlayer>
</div>
<div class="right-statistics"> <div class="right-statistics">
<div class="stat-item"> <div class="stat-item">
<img src="https://webapp-pub.oss-cn-beijing.aliyuncs.com/center_resource/view-vicon1.png"> <img src="https://webapp-pub.oss-cn-beijing.aliyuncs.com/center_resource/view-vicon1.png">
...@@ -40,15 +37,22 @@ const videoOptions = $computed(() => { ...@@ -40,15 +37,22 @@ const videoOptions = $computed(() => {
</div> </div>
</div> </div>
</div> </div>
<div style="max-width:1200px; padding-bottom: 20px; margin:0 auto;">
<AppVideoPlayer :options="videoOptions"></AppVideoPlayer>
</div>
</div> </div>
</template> </template>
<style lang="scss" scoped> <style lang="scss" scoped>
.center-video-box{ .center-video-box{
padding: 20px 0; padding: 20px 0;
display: flex; // display: flex;
.right-statistics{ .right-statistics{
flex: 1; max-width: 1200px;
margin: 0 auto;
// flex: 1;
display: flex;
padding-top: 15px; padding-top: 15px;
justify-content: space-between;
.stat-item{ .stat-item{
width: 210px; width: 210px;
height: 85px; height: 85px;
...@@ -56,7 +60,8 @@ const videoOptions = $computed(() => { ...@@ -56,7 +60,8 @@ const videoOptions = $computed(() => {
border-radius: 6px; border-radius: 6px;
display: flex; display: flex;
align-items: center; align-items: center;
margin: 0 auto 20px; // margin: 0 auto 20px;
margin-bottom: 20px;
&:nth-child(even){ &:nth-child(even){
background: #BF9D6B; background: #BF9D6B;
} }
......
...@@ -5,11 +5,16 @@ import { Expand, PictureFilled } from '@element-plus/icons-vue' ...@@ -5,11 +5,16 @@ import { Expand, PictureFilled } from '@element-plus/icons-vue'
import { useGetCategoryList } from '@/composables/useGetCategoryList' import { useGetCategoryList } from '@/composables/useGetCategoryList'
import { useProjectList } from '@/composables/useGetProjectList' import { useProjectList } from '@/composables/useGetProjectList'
import { useMapStore } from '@/stores/map' import { useMapStore } from '@/stores/map'
import { useUserStore } from '@/stores/user'
// 判断当前用户是不是超级管理员
const user = useUserStore().roles
const isAdmin = !!user.find((item: any) => item.name === '超级管理员')
const store = useMapStore() const store = useMapStore()
// 筛选部门列表 // 筛选部门列表
const departmentList: any = useProjectList().departmentList const departmentList: any = useProjectList('', '79806610719731712').departmentList
// 筛选下拉选择tree 视频分类 // 筛选下拉选择tree 视频分类
let { list: selectTree } = useGetCategoryList() let { list: selectTree } = useGetCategoryList()
...@@ -129,7 +134,7 @@ const changeCard = () => { ...@@ -129,7 +134,7 @@ const changeCard = () => {
:data="selectTree" :data="selectTree"
/> />
</template> </template>
<template v-if="tabValue == '3'" #filter-department="{ params }"> <template v-if="tabValue == '3' && isAdmin" #filter-department="{ params }">
<div class="name" style="font-size: 14px; color: #606266; padding-right: 12px">部门</div> <div class="name" style="font-size: 14px; color: #606266; padding-right: 12px">部门</div>
<el-select @change="typeFilter" clearable v-model="params.authorized"> <el-select @change="typeFilter" clearable v-model="params.authorized">
<el-option v-for="item in departmentList" :key="item.id" :label="item.name" :value="item.id" /> <el-option v-for="item in departmentList" :key="item.id" :label="item.name" :value="item.id" />
......
...@@ -194,7 +194,7 @@ const watchSwiper = (index: number) => { ...@@ -194,7 +194,7 @@ const watchSwiper = (index: number) => {
src="https://webapp-pub.oss-cn-beijing.aliyuncs.com/center_resource/upload-video-icon.png" src="https://webapp-pub.oss-cn-beijing.aliyuncs.com/center_resource/upload-video-icon.png"
class="icon" class="icon"
/> />
<div class="text">该图片作为课程的宣传图,用于课程主要的显示</div> <div class="text">该图片作为视频的封面图,用于视频封面显示</div>
</div> </div>
<div class="item"> <div class="item">
<img <img
...@@ -215,7 +215,7 @@ const watchSwiper = (index: number) => { ...@@ -215,7 +215,7 @@ const watchSwiper = (index: number) => {
src="https://webapp-pub.oss-cn-beijing.aliyuncs.com/center_resource/upload-video-icon.png" src="https://webapp-pub.oss-cn-beijing.aliyuncs.com/center_resource/upload-video-icon.png"
class="icon" class="icon"
/> />
<div class="text">可以自己上传图片,也可以从下面这些图片中选择使用</div> <div class="text">可以自己上传图片,也可以从下面这些图片中选择使用</div>
</div> </div>
</div> </div>
</div> </div>
...@@ -362,9 +362,6 @@ const watchSwiper = (index: number) => { ...@@ -362,9 +362,6 @@ const watchSwiper = (index: number) => {
padding-left: 90px; padding-left: 90px;
padding-top: 20px; padding-top: 20px;
color: #666666; color: #666666;
span {
color: #aa1941;
}
} }
.btn-box { .btn-box {
display: flex; display: flex;
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论