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

修改bug

上级 c87335d5
......@@ -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 })
}
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[] = [
{
tag: 'v1-resource',
......@@ -29,15 +29,17 @@ export const menus: IMenuItem[] = [
icon: Files,
name: '其他资料',
path: '/resource/other'
},
{
icon: Expand,
name: '题库管理',
path: '/'
},
{
icon: Document,
name: '试卷管理',
path: '/'
}
// {
// name: '题库',
// path: '/resource/question'
// },
// {
// name: '试卷',
// path: '/resource/exam'
// }
]
},
{
......
<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>
</div>
</template>
......
......@@ -20,18 +20,34 @@ if (props.url?.indexOf('.pdf') !== -1 || props.url?.indexOf('.txt') !== -1) {
</script>
<template>
<iframe
v-if="isShowType === 1"
width="812"
height="450"
:src="`https://view.officeapps.live.com/op/view.aspx?src=${props.url}`"
></iframe>
<embed width="812" height="450" :src="props.url" v-else-if="isShowType === 2" />
<video v-else-if="isShowType === 3" width="812" height="433" controls id="video">
<source :src="props.url" />
</video>
<audio v-else-if="isShowType === 4" :src="props.url" controls></audio>
<img v-else-if="isShowType === 5" :src="props.url" style="max-width:812px;display: block;">
<div class="max-w-h">
<iframe
v-if="isShowType === 1"
:src="`https://view.officeapps.live.com/op/view.aspx?src=${props.url}`"
></iframe>
<embed :src="props.url" v-else-if="isShowType === 2" />
<video v-else-if="isShowType === 3" controls id="video">
<source :src="props.url" />
</video>
<audio v-else-if="isShowType === 4" :src="props.url" controls></audio>
<img v-else-if="isShowType === 5" :src="props.url">
</div>
</template>
<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>
......@@ -3,20 +3,20 @@ import PreviewFiles from './PreviewFiles.vue'
const dialogVisible = ref(false)
</script>
<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">
<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"
></PreviewFiles>
<template #footer>
<span class="dialog-footer">
<el-button type="primary" @click="dialogVisible = false">我已阅读并同意</el-button>
</span>
<el-button type="primary" @click="dialogVisible = false">我已阅读并同意</el-button>
</template>
</el-dialog>
</template>
<style lang="scss" scoped>
span {
.red-color {
color: #aa1941;
}
</style>
import { getProjectList } from '@/api/base'
export function useProjectList(id?: string) {
export function useProjectList(id?: string, projectId?: string) {
const list = ref([])
const members = 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
members.value = res.data.members
departmentList.value = res.data.departments.reduce((a: any, b:any) => {
......
......@@ -9,9 +9,6 @@ const props = defineProps({
</script>
<template>
<div class="center-video-box">
<div class="file-box">
<PreviewFiles :url="props.data?.url"></PreviewFiles>
</div>
<div class="right-statistics">
<div class="stat-item">
<img src="https://webapp-pub.oss-cn-beijing.aliyuncs.com/center_resource/view-vicon1.png" />
......@@ -42,15 +39,22 @@ const props = defineProps({
</div>
</div>
</div>
<div class="file-box">
<PreviewFiles :url="props.data?.url"></PreviewFiles>
</div>
</div>
</template>
<style lang="scss" scoped>
.center-video-box {
padding: 20px 0;
display: flex;
// display: flex;
.right-statistics {
flex: 1;
// flex: 1;
display: flex;
max-width: 1200px;
justify-content: space-between;
padding-top: 15px;
margin: 0 auto;
.stat-item {
width: 210px;
height: 85px;
......@@ -58,7 +62,8 @@ const props = defineProps({
border-radius: 6px;
display: flex;
align-items: center;
margin: 0 auto 20px;
// margin: 0 auto 20px;
margin-bottom: 20px;
&:nth-child(even) {
background: #bf9d6b;
}
......
......@@ -6,34 +6,49 @@ const props = defineProps({
require: true
}
})
const fileType = ['doc', 'docx', 'xls', 'xlsx', 'pdf', 'ppt', 'pptx', 'mp3', 'mp4', 'png', 'jpeg', 'jpg']
</script>
<template>
<div class="video-info">
<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 />
</el-icon>
<!-- <img src="https://iph.href.lu/211x146"> -->
<div class="name">文件类型</div>
</div>
<div class="info-items">
<div class="flex-box">
<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="name">状态</div>
<div class="value active">{{ props.data?.status_name }}</div>
</div>
</div>
<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="name">创建者</div>
<div class="value">{{ props.data?.created_operator_name }}</div>
</div>
</div>
<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="name">创建时间</div>
<div class="value">{{ props.data?.created_time }}</div>
......@@ -42,21 +57,30 @@ const props = defineProps({
</div>
<div class="flex-box">
<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="name">更新时间</div>
<div class="value">{{ props.data?.updated_time }}</div>
</div>
</div>
<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="name">课件名称</div>
<div class="value">{{ props.data?.name }}</div>
</div>
</div>
<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="name">负责人</div>
<div class="value">{{ props.data?.belong_operator_name }}</div>
......@@ -65,14 +89,20 @@ const props = defineProps({
</div>
<div class="flex-box">
<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="name">课件分类</div>
<div class="value">{{ props.data?.classification_name || '暂无' }}</div>
</div>
</div>
<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="name">知识点</div>
<div class="value">{{ props.data?.knowledge_points || '暂无' }}</div>
......@@ -112,11 +142,11 @@ const props = defineProps({
// flex-wrap: wrap;
flex: 1;
padding-left: 12px;
.flex-box{
.flex-box {
display: flex;
justify-content: flex-start;
}
.i-items{
.i-items {
width: 30%;
display: flex;
align-items: center;
......
......@@ -5,11 +5,16 @@ import { Expand } from '@element-plus/icons-vue'
import { useMapStore } from '@/stores/map'
import { useGetCategoryList } from '@/composables/useGetCategoryList'
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 departmentList: any = useProjectList().departmentList
const departmentList: any = useProjectList('', '79806610719731712').departmentList
// 下拉选择tree 视频分类
let { list: selectTree } = useGetCategoryList()
......@@ -112,7 +117,7 @@ const typeFilter = () => {
:data="selectTree"
/>
</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>
<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" />
......
......@@ -172,7 +172,7 @@ const protocol = ref(false)
</el-form-item>
<el-form-item label="&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;知识点:">
<el-input
placeholder="请输入该视频相关知识点,多个知识点请使用“,”分隔"
placeholder="请输入该课件相关知识点,多个知识点请使用“,”分隔"
maxlength="100"
v-model="form.knowledge_points"
:rows="2"
......@@ -306,9 +306,6 @@ const protocol = ref(false)
padding-left: 90px;
padding-top: 20px;
color: #666666;
span {
color: #aa1941;
}
}
.btn-box {
display: flex;
......
......@@ -9,9 +9,6 @@ const props = defineProps({
</script>
<template>
<div class="center-video-box">
<div class="file-box">
<PreviewFiles :url="props.data?.url"></PreviewFiles>
</div>
<div class="right-statistics">
<div class="stat-item">
<img src="https://webapp-pub.oss-cn-beijing.aliyuncs.com/center_resource/view-vicon1.png" />
......@@ -42,14 +39,21 @@ const props = defineProps({
</div>
</div>
</div>
<div class="file-box">
<PreviewFiles :url="props.data?.url"></PreviewFiles>
</div>
</div>
</template>
<style lang="scss" scoped>
.center-video-box {
padding: 20px 0;
display: flex;
// display: flex;
.right-statistics {
flex: 1;
// flex: 1;
display: flex;
justify-content: space-between;
max-width: 1200px;
margin: 0 auto;
padding-top: 15px;
.stat-item {
width: 210px;
......@@ -58,7 +62,8 @@ const props = defineProps({
border-radius: 6px;
display: flex;
align-items: center;
margin: 0 auto 20px;
// margin: 0 auto 20px;
margin-bottom: 20px;
&:nth-child(even) {
background: #bf9d6b;
}
......
......@@ -6,15 +6,22 @@ const props = defineProps({
require: true
}
})
const fileType = ['doc', 'docx', 'xls', 'xlsx', 'pdf', 'ppt', 'pptx', 'mp3', 'mp4', 'png', 'jpeg', 'jpg']
</script>
<template>
<div class="video-info">
<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 />
</el-icon>
<!-- <img src="https://iph.href.lu/211x146"> -->
<div class="name">文件类型</div>
</div>
<div class="info-items">
<div class="flex-box">
......
......@@ -5,6 +5,11 @@ import { Expand } from '@element-plus/icons-vue'
import { useMapStore } from '@/stores/map'
import { useGetCategoryList } from '@/composables/useGetCategoryList'
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()
......@@ -17,7 +22,7 @@ const changeCard = () => {
}
// 筛选部门列表
const departmentList: any = useProjectList().departmentList
const departmentList: any = useProjectList('', '79806610719731712').departmentList
// 下拉选择tree 视频分类
let { list: selectTree } = useGetCategoryList()
......@@ -112,7 +117,7 @@ const typeFilter = () => {
:data="selectTree"
/>
</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>
<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" />
......
......@@ -153,7 +153,7 @@ const protocol = ref(false)
<div class="upload-btn">本地文件</div>
</div>
</div>
<div class="tips">课件支持格式包含:doc docx pdf ppt pptx,大小不超过50M</div>
<div class="tips">教案支持格式包含:doc docx pdf ppt pptx,大小不超过50M</div>
</div>
</el-form-item>
<el-form-item label="教案名称:" prop="name">
......@@ -170,7 +170,7 @@ const protocol = ref(false)
</el-form-item>
<el-form-item label="&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;知识点:">
<el-input
placeholder="请输入该视频相关知识点,多个知识点请使用“,”分隔"
placeholder="请输入该教案相关知识点,多个知识点请使用“,”分隔"
maxlength="100"
v-model="form.knowledge_points"
:rows="2"
......@@ -303,9 +303,6 @@ const protocol = ref(false)
padding-left: 90px;
padding-top: 20px;
color: #666666;
span {
color: #aa1941;
}
}
.btn-box {
display: flex;
......
......@@ -9,9 +9,6 @@ const props = defineProps({
</script>
<template>
<div class="center-video-box">
<div class="file-box">
<PreviewFiles :url="props.data?.url"></PreviewFiles>
</div>
<div class="right-statistics">
<div class="stat-item">
<img src="https://webapp-pub.oss-cn-beijing.aliyuncs.com/center_resource/view-vicon1.png" />
......@@ -42,14 +39,21 @@ const props = defineProps({
</div>
</div>
</div>
<div class="file-box">
<PreviewFiles :url="props.data?.url"></PreviewFiles>
</div>
</div>
</template>
<style lang="scss" scoped>
.center-video-box {
padding: 20px 0;
display: flex;
// display: flex;
.right-statistics {
flex: 1;
// flex: 1;
display: flex;
justify-content: space-between;
max-width: 1200px;
margin: 0 auto;
padding-top: 15px;
.stat-item {
width: 210px;
......@@ -58,7 +62,8 @@ const props = defineProps({
border-radius: 6px;
display: flex;
align-items: center;
margin: 0 auto 20px;
// margin: 0 auto 20px;
margin-bottom: 20px;
&:nth-child(even) {
background: #bf9d6b;
}
......
......@@ -6,15 +6,22 @@ const props = defineProps({
require: true
}
})
const fileType = ['doc', 'docx', 'xls', 'xlsx', 'pdf', 'ppt', 'pptx', 'mp3', 'mp4', 'png', 'jpeg', 'jpg']
</script>
<template>
<div class="video-info">
<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 />
</el-icon>
<!-- <img src="https://iph.href.lu/211x146"> -->
<div class="name">文件类型</div>
</div>
<div class="info-items">
<div class="flex-box">
......
......@@ -6,6 +6,11 @@ import { useMapStore } from '@/stores/map'
import { useProjectList } from '@/composables/useGetProjectList'
// 下拉选择tree 视频分类
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()
......@@ -24,7 +29,7 @@ const tabChange = () => {
}
// 筛选部门列表
const departmentList: any = useProjectList().departmentList
const departmentList: any = useProjectList('', '79806610719731712').departmentList
// 下拉选择tree 视频分类
let { list: selectTree } = useGetCategoryList()
......@@ -113,7 +118,7 @@ const typeFilter = () => {
:data="selectTree"
/>
</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>
<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" />
......
......@@ -174,7 +174,7 @@ const protocol = ref(false)
</el-form-item>
<el-form-item label="&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;知识点:">
<el-input
placeholder="请输入该视频相关知识点,多个知识点请使用“,”分隔"
placeholder="请输入该资料相关知识点,多个知识点请使用“,”分隔"
maxlength="100"
v-model="form.knowledge_points"
:rows="2"
......@@ -307,9 +307,6 @@ const protocol = ref(false)
padding-left: 90px;
padding-top: 20px;
color: #666666;
span {
color: #aa1941;
}
}
.btn-box {
display: flex;
......
......@@ -7,9 +7,6 @@ const videoOptions = $computed(() => {
</script>
<template>
<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="stat-item">
<img src="https://webapp-pub.oss-cn-beijing.aliyuncs.com/center_resource/view-vicon1.png">
......@@ -40,15 +37,22 @@ const videoOptions = $computed(() => {
</div>
</div>
</div>
<div style="max-width:1200px; padding-bottom: 20px; margin:0 auto;">
<AppVideoPlayer :options="videoOptions"></AppVideoPlayer>
</div>
</div>
</template>
<style lang="scss" scoped>
.center-video-box{
padding: 20px 0;
display: flex;
// display: flex;
.right-statistics{
flex: 1;
max-width: 1200px;
margin: 0 auto;
// flex: 1;
display: flex;
padding-top: 15px;
justify-content: space-between;
.stat-item{
width: 210px;
height: 85px;
......@@ -56,7 +60,8 @@ const videoOptions = $computed(() => {
border-radius: 6px;
display: flex;
align-items: center;
margin: 0 auto 20px;
// margin: 0 auto 20px;
margin-bottom: 20px;
&:nth-child(even){
background: #BF9D6B;
}
......
......@@ -5,11 +5,16 @@ import { Expand, PictureFilled } from '@element-plus/icons-vue'
import { useGetCategoryList } from '@/composables/useGetCategoryList'
import { useProjectList } from '@/composables/useGetProjectList'
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 departmentList: any = useProjectList().departmentList
const departmentList: any = useProjectList('', '79806610719731712').departmentList
// 筛选下拉选择tree 视频分类
let { list: selectTree } = useGetCategoryList()
......@@ -129,7 +134,7 @@ const changeCard = () => {
:data="selectTree"
/>
</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>
<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" />
......
......@@ -194,7 +194,7 @@ const watchSwiper = (index: number) => {
src="https://webapp-pub.oss-cn-beijing.aliyuncs.com/center_resource/upload-video-icon.png"
class="icon"
/>
<div class="text">该图片作为课程的宣传图,用于课程主要的显示</div>
<div class="text">该图片作为视频的封面图,用于视频封面显示</div>
</div>
<div class="item">
<img
......@@ -215,7 +215,7 @@ const watchSwiper = (index: number) => {
src="https://webapp-pub.oss-cn-beijing.aliyuncs.com/center_resource/upload-video-icon.png"
class="icon"
/>
<div class="text">可以自己上传图片,也可以从下面这些图片中选择使用</div>
<div class="text">可以自己上传图片,也可以从下面这些图片中选择使用</div>
</div>
</div>
</div>
......@@ -362,9 +362,6 @@ const watchSwiper = (index: number) => {
padding-left: 90px;
padding-top: 20px;
color: #666666;
span {
color: #aa1941;
}
}
.btn-box {
display: flex;
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论