Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
C
center-resource
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
EzijingWeb
center-resource
Commits
9309bb85
提交
9309bb85
authored
6月 20, 2022
作者:
lihuihui
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
修改bug
上级
bd8030d0
隐藏空白字符变更
内嵌
并排
正在显示
9 个修改的文件
包含
91 行增加
和
32 行删除
+91
-32
CardListItem.vue
src/components/base/CardListItem.vue
+5
-5
Main.vue
src/components/layout/Main.vue
+23
-0
List.vue
src/modules/resource/courseware/views/List.vue
+1
-1
Update.vue
src/modules/resource/courseware/views/Update.vue
+18
-8
List.vue
src/modules/resource/lessonplan/views/List.vue
+20
-5
Update.vue
src/modules/resource/lessonplan/views/Update.vue
+18
-8
List.vue
src/modules/resource/other/views/List.vue
+2
-2
Update.vue
src/modules/resource/other/views/Update.vue
+3
-2
List.vue
src/modules/resource/video/views/List.vue
+1
-1
没有找到文件。
src/components/base/CardListItem.vue
浏览文件 @
9309bb85
<
script
setup
lang=
"ts"
>
<
script
setup
lang=
"ts"
>
import
{
Files
}
from
'@element-plus/icons-vue'
import
{
Files
}
from
'@element-plus/icons-vue'
const
props
:
any
=
defineProps
<
{
data
:
object
,
path
:
string
,
permission
?:
{
edit
:
string
,
view
:
string
}
}
>
()
const
props
:
any
=
defineProps
<
{
data
:
object
;
path
:
string
;
permission
?:
{
edit
:
string
;
view
:
string
}
}
>
()
const
fileType
=
[
'doc'
,
'docx'
,
'xls'
,
'xlsx'
,
'pdf'
,
'ppt'
,
'pptx'
,
'mp3'
,
'mp4'
,
'png'
,
'jpeg'
,
'jpg'
]
</
script
>
</
script
>
<
template
>
<
template
>
<div
class=
"card-item"
>
<div
class=
"card-item"
>
...
@@ -15,7 +16,8 @@ const props: any = defineProps<{ data: object, path: string, permission?: { edit
...
@@ -15,7 +16,8 @@ const props: any = defineProps<{ data: object, path: string, permission?: { edit
<div
class=
"info"
>
关联次数:
{{
props
.
data
.
relation_count
}}
次
</div>
<div
class=
"info"
>
关联次数:
{{
props
.
data
.
relation_count
}}
次
</div>
<div
class=
"info"
>
学习人次:
{{
props
.
data
.
learn_count
}}
人次
</div>
<div
class=
"info"
>
学习人次:
{{
props
.
data
.
learn_count
}}
人次
</div>
</div>
</div>
<el-icon
class=
"item-info-icon"
>
<img
:src=
"`https://webapp-pub.oss-cn-beijing.aliyuncs.com/center_resource/$
{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>
<div
class=
"tool-pop-btn"
>
<div
class=
"tool-pop-btn"
>
...
@@ -75,9 +77,7 @@ const props: any = defineProps<{ data: object, path: string, permission?: { edit
...
@@ -75,9 +77,7 @@ const props: any = defineProps<{ data: object, path: string, permission?: { edit
color
:
#aa1941
;
color
:
#aa1941
;
}
}
img
{
img
{
width
:
100%
;
width
:
40px
;
height
:
100%
;
display
:
block
;
}
}
.title
{
.title
{
position
:
absolute
;
position
:
absolute
;
...
...
src/components/layout/Main.vue
浏览文件 @
9309bb85
...
@@ -3,10 +3,13 @@ export default { name: 'AppMain' }
...
@@ -3,10 +3,13 @@ export default { name: 'AppMain' }
</
script
>
</
script
>
<
script
setup
lang=
"ts"
>
<
script
setup
lang=
"ts"
>
import
PreviewFiles
from
'@/components/base/PreviewFiles.vue'
import
AppBreadcrumb
from
'./Breadcrumb.vue'
import
AppBreadcrumb
from
'./Breadcrumb.vue'
withDefaults
(
defineProps
<
{
hasBreadcrumb
?:
boolean
}
>
(),
{
withDefaults
(
defineProps
<
{
hasBreadcrumb
?:
boolean
}
>
(),
{
hasBreadcrumb
:
true
hasBreadcrumb
:
true
})
})
const
dialogVisible
=
ref
(
false
)
</
script
>
</
script
>
<
template
>
<
template
>
...
@@ -20,9 +23,29 @@ withDefaults(defineProps<{ hasBreadcrumb?: boolean }>(), {
...
@@ -20,9 +23,29 @@ withDefaults(defineProps<{ hasBreadcrumb?: boolean }>(), {
</div>
</div>
</div>
</div>
</section>
</section>
<div
class=
"manual-btn"
@
click=
"dialogVisible = true"
>
<img
src=
"https://webapp-pub.oss-cn-beijing.aliyuncs.com/center_resource/course.png"
/>
</div>
<el-dialog
v-model=
"dialogVisible"
title=
"使用手册"
width=
"852px"
>
<PreviewFiles
url=
"https://webapp-pub.ezijing.com/upload/admin/05e3fa93d5760e6909a1a0244f545133.doc"
></PreviewFiles>
</el-dialog>
</
template
>
</
template
>
<
style
>
<
style
>
.manual-btn
{
cursor
:
pointer
;
display
:
flex
;
align-items
:
center
;
justify-content
:
center
;
position
:
fixed
;
top
:
50%
;
right
:
0
;
width
:
60px
;
height
:
60px
;
background
:
rgba
(
255
,
255
,
255
,
1
);
box-shadow
:
1px
3px
12px
rgba
(
0
,
0
,
0
,
0.11
);
border-radius
:
50%
;
}
.app-main
{
.app-main
{
position
:
relative
;
position
:
relative
;
flex
:
1
;
flex
:
1
;
...
...
src/modules/resource/courseware/views/List.vue
浏览文件 @
9309bb85
...
@@ -21,7 +21,7 @@ const defaultProps = {
...
@@ -21,7 +21,7 @@ const defaultProps = {
const
appList
=
ref
()
const
appList
=
ref
()
// 列表切换
// 列表切换
const
isCard
=
ref
(
true
)
const
isCard
=
$
ref
(
true
)
// 资源出处 tab触发
// 资源出处 tab触发
const
tabValue
=
ref
(
'1'
)
const
tabValue
=
ref
(
'1'
)
...
...
src/modules/resource/courseware/views/Update.vue
浏览文件 @
9309bb85
...
@@ -51,9 +51,12 @@ let form: any = $ref({
...
@@ -51,9 +51,12 @@ let form: any = $ref({
})
})
// 监听文件上传
// 监听文件上传
watch
(()
=>
form
.
file
,
value
=>
{
watch
(
form
.
name
=
value
[
0
]?.
name
||
''
()
=>
form
.
file
,
})
value
=>
{
form
.
name
=
value
[
0
]?.
name
||
''
}
)
// 表单验证
// 表单验证
const
rules
=
{
const
rules
=
{
...
@@ -65,15 +68,16 @@ const rules = {
...
@@ -65,15 +68,16 @@ const rules = {
const
ruleFormRef
=
ref
<
FormInstance
>
()
const
ruleFormRef
=
ref
<
FormInstance
>
()
const
submitForm
=
async
(
formEl
:
FormInstance
|
undefined
)
=>
{
const
submitForm
=
async
(
formEl
:
FormInstance
|
undefined
)
=>
{
if
(
!
formEl
)
return
if
(
!
formEl
)
return
await
formEl
.
validate
(
(
valid
)
=>
{
await
formEl
.
validate
(
valid
=>
{
if
(
valid
)
{
if
(
valid
)
{
if
(
!
protocol
.
value
)
{
if
(
!
protocol
.
value
)
{
ElMessage
(
'请勾选用户协议'
)
ElMessage
(
'请勾选用户协议'
)
return
return
}
}
const
{
url
,
type
,
size
}
=
form
.
file
[
0
]
const
{
url
,
size
}
=
form
.
file
[
0
]
const
findString
=
url
.
lastIndexOf
(
'.'
)
+
1
form
.
url
=
url
form
.
url
=
url
form
.
type
=
type
form
.
type
=
url
.
substring
(
findString
,
url
.
length
)
form
.
size
=
size
form
.
size
=
size
const
params
=
Object
.
assign
({},
form
)
const
params
=
Object
.
assign
({},
form
)
delete
params
.
file
delete
params
.
file
...
@@ -148,7 +152,13 @@ const protocol = ref(false)
...
@@ -148,7 +152,13 @@ const protocol = ref(false)
/>
/>
</el-form-item>
</el-form-item>
<el-form-item
label=
" 知识点:"
>
<el-form-item
label=
" 知识点:"
>
<el-input
placeholder=
"请输入该视频相关知识点,多个知识点请使用“,”分隔"
maxlength=
"100"
v-model=
"form.knowledge_points"
:rows=
"2"
type=
"textarea"
/>
<el-input
placeholder=
"请输入该视频相关知识点,多个知识点请使用“,”分隔"
maxlength=
"100"
v-model=
"form.knowledge_points"
:rows=
"2"
type=
"textarea"
/>
</el-form-item>
</el-form-item>
</el-form>
</el-form>
<div
class=
"protocol-box"
>
<div
class=
"protocol-box"
>
...
@@ -165,7 +175,7 @@ const protocol = ref(false)
...
@@ -165,7 +175,7 @@ const protocol = ref(false)
<
style
lang=
"scss"
>
<
style
lang=
"scss"
>
.upload-box
{
.upload-box
{
// min-width: 400px;
// min-width: 400px;
.el-progress__text
{
.el-progress__text
{
transform
:
translate
(
20px
,
-5px
);
transform
:
translate
(
20px
,
-5px
);
}
}
position
:
relative
;
position
:
relative
;
...
...
src/modules/resource/lessonplan/views/List.vue
浏览文件 @
9309bb85
...
@@ -10,7 +10,7 @@ const store = useMapStore()
...
@@ -10,7 +10,7 @@ const store = useMapStore()
const
appList
=
ref
()
const
appList
=
ref
()
const
isCard
=
ref
(
true
)
const
isCard
=
$
ref
(
true
)
// 筛选部门列表
// 筛选部门列表
const
departmentList
:
any
=
useProjectList
().
departmentList
const
departmentList
:
any
=
useProjectList
().
departmentList
...
@@ -93,17 +93,26 @@ const typeFilter = () => {
...
@@ -93,17 +93,26 @@ const typeFilter = () => {
<AppList
v-bind=
"listOptions"
ref=
"appList"
>
<AppList
v-bind=
"listOptions"
ref=
"appList"
>
<template
#
header-aside
></
template
>
<template
#
header-aside
></
template
>
<
template
#
filter-type=
"{ params }"
>
<
template
#
filter-type=
"{ params }"
>
<el-tree-select
@
change=
"typeFilter"
clearable
:props=
"defaultProps"
v-model=
"params.classification"
:data=
"selectTree"
/>
<el-tree-select
@
change=
"typeFilter"
clearable
:props=
"defaultProps"
v-model=
"params.classification"
:data=
"selectTree"
/>
</
template
>
</
template
>
<
template
v-if=
"tabValue == '3'"
#
filter-department=
"{ params }"
>
<
template
v-if=
"tabValue == '3'"
#
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"
/>
</el-select>
</el-select>
</
template
>
</
template
>
<
template
#
table-operate=
"{ row }"
>
<
template
#
table-operate=
"{ row }"
>
<el-space>
<el-space>
<router-link
v-permission=
"'v1-resource-lesson-plan-update'"
:to=
"`/resource/lessonplan/update/?id=$
{row.id}`">
<router-link
v-permission=
"'v1-resource-lesson-plan-update'"
:to=
"`/resource/lessonplan/update/?id=$
{row.id}`"
>
<el-button
plain
>
编辑
</el-button>
<el-button
plain
>
编辑
</el-button>
</router-link>
</router-link>
<router-link
v-permission=
"'v1-resource-lesson-plan-view'"
:to=
"`/resource/lessonplan/view?id=$
{row.id}`">
<router-link
v-permission=
"'v1-resource-lesson-plan-view'"
:to=
"`/resource/lessonplan/view?id=$
{row.id}`">
...
@@ -115,7 +124,13 @@ const typeFilter = () => {
...
@@ -115,7 +124,13 @@ const typeFilter = () => {
<!-- 卡片 -->
<!-- 卡片 -->
<
template
#
body=
"{ data }"
v-if=
"isCard"
>
<
template
#
body=
"{ data }"
v-if=
"isCard"
>
<div
class=
"card-list"
v-if=
"data.length"
>
<div
class=
"card-list"
v-if=
"data.length"
>
<CardListItem
:permission=
"
{ edit: 'v1-resource-lesson-plan-update', view: 'v1-resource-lesson-plan-view' }" path="/resource/lessonplan" v-for="(item, index) in data" :data="item" :key="index">
</CardListItem>
<CardListItem
:permission=
"
{ edit: 'v1-resource-lesson-plan-update', view: 'v1-resource-lesson-plan-view' }"
path="/resource/lessonplan"
v-for="(item, index) in data"
:data="item"
:key="index"
>
</CardListItem>
</div>
</div>
<el-empty
v-else
description=
"暂无数据"
/>
<el-empty
v-else
description=
"暂无数据"
/>
</
template
>
</
template
>
...
...
src/modules/resource/lessonplan/views/Update.vue
浏览文件 @
9309bb85
...
@@ -51,9 +51,12 @@ let form: any = $ref({
...
@@ -51,9 +51,12 @@ let form: any = $ref({
})
})
// 监听文件上传
// 监听文件上传
watch
(()
=>
form
.
file
,
value
=>
{
watch
(
form
.
name
=
value
[
0
]?.
name
||
''
()
=>
form
.
file
,
})
value
=>
{
form
.
name
=
value
[
0
]?.
name
||
''
}
)
// 表单验证
// 表单验证
const
rules
=
{
const
rules
=
{
...
@@ -65,15 +68,16 @@ const rules = {
...
@@ -65,15 +68,16 @@ const rules = {
const
ruleFormRef
=
ref
<
FormInstance
>
()
const
ruleFormRef
=
ref
<
FormInstance
>
()
const
submitForm
=
async
(
formEl
:
FormInstance
|
undefined
)
=>
{
const
submitForm
=
async
(
formEl
:
FormInstance
|
undefined
)
=>
{
if
(
!
formEl
)
return
if
(
!
formEl
)
return
await
formEl
.
validate
(
(
valid
)
=>
{
await
formEl
.
validate
(
valid
=>
{
if
(
valid
)
{
if
(
valid
)
{
if
(
!
protocol
.
value
)
{
if
(
!
protocol
.
value
)
{
ElMessage
(
'请勾选用户协议'
)
ElMessage
(
'请勾选用户协议'
)
return
return
}
}
const
{
url
,
type
,
size
}
=
form
.
file
[
0
]
const
{
url
,
size
}
=
form
.
file
[
0
]
const
findString
=
url
.
lastIndexOf
(
'.'
)
+
1
form
.
url
=
url
form
.
url
=
url
form
.
type
=
type
form
.
type
=
url
.
substring
(
findString
,
url
.
length
)
form
.
size
=
size
form
.
size
=
size
const
params
=
Object
.
assign
({},
form
)
const
params
=
Object
.
assign
({},
form
)
delete
params
.
file
delete
params
.
file
...
@@ -142,7 +146,13 @@ const protocol = ref(false)
...
@@ -142,7 +146,13 @@ const protocol = ref(false)
<el-tree-select
:props=
"defaultProps"
style=
"width: 100%"
v-model=
"form.classification"
:data=
"selectTree"
/>
<el-tree-select
:props=
"defaultProps"
style=
"width: 100%"
v-model=
"form.classification"
:data=
"selectTree"
/>
</el-form-item>
</el-form-item>
<el-form-item
label=
" 知识点:"
>
<el-form-item
label=
" 知识点:"
>
<el-input
placeholder=
"请输入该视频相关知识点,多个知识点请使用“,”分隔"
maxlength=
"100"
v-model=
"form.knowledge_points"
:rows=
"2"
type=
"textarea"
/>
<el-input
placeholder=
"请输入该视频相关知识点,多个知识点请使用“,”分隔"
maxlength=
"100"
v-model=
"form.knowledge_points"
:rows=
"2"
type=
"textarea"
/>
</el-form-item>
</el-form-item>
</el-form>
</el-form>
<div
class=
"protocol-box"
>
<div
class=
"protocol-box"
>
...
@@ -159,7 +169,7 @@ const protocol = ref(false)
...
@@ -159,7 +169,7 @@ const protocol = ref(false)
<
style
lang=
"scss"
>
<
style
lang=
"scss"
>
.upload-box
{
.upload-box
{
position
:
relative
;
position
:
relative
;
.el-progress__text
{
.el-progress__text
{
transform
:
translate
(
20px
,
-5px
);
transform
:
translate
(
20px
,
-5px
);
}
}
.app-upload-btn
{
.app-upload-btn
{
...
...
src/modules/resource/other/views/List.vue
浏览文件 @
9309bb85
...
@@ -11,7 +11,7 @@ const store = useMapStore()
...
@@ -11,7 +11,7 @@ const store = useMapStore()
const
appList
=
ref
()
const
appList
=
ref
()
// 列表切换
// 列表切换
const
isCard
=
ref
(
true
)
const
isCard
=
$
ref
(
true
)
// 资源出处 tab触发
// 资源出处 tab触发
const
tabValue
=
ref
(
'1'
)
const
tabValue
=
ref
(
'1'
)
...
@@ -103,7 +103,7 @@ const typeFilter = () => {
...
@@ -103,7 +103,7 @@ const typeFilter = () => {
/>
/>
</
template
>
</
template
>
<
template
v-if=
"tabValue == '3'"
#
filter-department=
"{ params }"
>
<
template
v-if=
"tabValue == '3'"
#
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"
/>
</el-select>
</el-select>
...
...
src/modules/resource/other/views/Update.vue
浏览文件 @
9309bb85
...
@@ -71,9 +71,10 @@ const submitForm = async (formEl: FormInstance | undefined) => {
...
@@ -71,9 +71,10 @@ const submitForm = async (formEl: FormInstance | undefined) => {
ElMessage
(
'请勾选用户协议'
)
ElMessage
(
'请勾选用户协议'
)
return
return
}
}
const
{
url
,
type
,
size
}
=
form
.
file
[
0
]
const
{
url
,
size
}
=
form
.
file
[
0
]
const
findString
=
url
.
lastIndexOf
(
'.'
)
+
1
form
.
url
=
url
form
.
url
=
url
form
.
type
=
type
form
.
type
=
url
.
substring
(
findString
,
url
.
length
)
form
.
size
=
size
form
.
size
=
size
const
params
=
Object
.
assign
({},
form
)
const
params
=
Object
.
assign
({},
form
)
delete
params
.
file
delete
params
.
file
...
...
src/modules/resource/video/views/List.vue
浏览文件 @
9309bb85
...
@@ -27,7 +27,7 @@ const tabChange = () => {
...
@@ -27,7 +27,7 @@ const tabChange = () => {
}
}
// 列表切换
// 列表切换
const
isCard
=
ref
(
true
)
const
isCard
=
$
ref
(
true
)
// table 数据
// table 数据
const
listOptions
=
$computed
(()
=>
{
const
listOptions
=
$computed
(()
=>
{
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论