Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
S
saas-lab
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
EzijingWeb
saas-lab
Commits
cfaad835
提交
cfaad835
authored
9月 22, 2022
作者:
王鹏飞
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
chore: update
上级
9239d83a
隐藏空白字符变更
内嵌
并排
正在显示
7 个修改的文件
包含
201 行增加
和
85 行删除
+201
-85
home_expert_bg.png
src/assets/images/home_expert_bg.png
+0
-0
AdminHome.vue
src/modules/home/components/AdminHome.vue
+8
-14
TeacherHome.vue
src/modules/home/components/TeacherHome.vue
+99
-0
Index.vue
src/modules/home/views/Index.vue
+5
-3
index.ts
src/modules/student/contest/index.ts
+2
-1
Score.vue
src/modules/student/contest/views/Score.vue
+5
-0
menu.ts
src/stores/menu.ts
+82
-67
没有找到文件。
src/assets/images/home_expert_bg.png
0 → 100644
浏览文件 @
cfaad835
213.6 KB
src/modules/home/components/AdminHome.vue
浏览文件 @
cfaad835
...
...
@@ -23,27 +23,21 @@ function handleChange(id: string, type: number) {
<
template
>
<div
class=
"bg"
>
<router-link
to=
"/teacher/
lab/book
"
class=
"link1"
></router-link>
<router-link
to=
"/teacher/
lab
/record"
class=
"link2"
></router-link>
<router-link
to=
"/teacher/
lab/video
"
class=
"link3"
></router-link>
<router-link
to=
"/teacher/
lab
/discuss"
class=
"link4"
></router-link>
<router-link
to=
"/teacher/
contest/score
"
class=
"link1"
></router-link>
<router-link
to=
"/teacher/
contest
/record"
class=
"link2"
></router-link>
<router-link
to=
"/teacher/
contest/discuss
"
class=
"link3"
></router-link>
<router-link
to=
"/teacher/
contest
/discuss"
class=
"link4"
></router-link>
</div>
<div
class=
"select-group"
>
<el-select
size=
"large"
placeholder=
"
实验指导书
"
@
change=
"handleChange($event, 1)"
>
<el-select
size=
"large"
placeholder=
"
大赛评分
"
@
change=
"handleChange($event, 1)"
>
<el-option
v-for=
"item in list"
:key=
"item.id"
:label=
"item.name"
:value=
"item.id"
></el-option>
</el-select>
<el-select
size=
"large"
placeholder=
"
实验视频
"
@
change=
"handleChange($event, 2)"
>
<el-select
size=
"large"
placeholder=
"
大赛成绩发布
"
@
change=
"handleChange($event, 2)"
>
<el-option
v-for=
"item in list"
:key=
"item.id"
:label=
"item.name"
:value=
"item.id"
></el-option>
</el-select>
<
!--
<el-select
size=
"large"
placeholder=
"实验答疑"
@
change=
"handleChange($event, 3
)"
>
<
el-select
size=
"large"
placeholder=
"大赛成绩分析"
@
change=
"handleChange($event, 2
)"
>
<el-option
v-for=
"item in list"
:key=
"item.id"
:label=
"item.name"
:value=
"item.id"
></el-option>
</el-select>
<el-select
size=
"large"
placeholder=
"实验成绩"
@
change=
"handleChange($event, 4)"
>
<el-option
v-for=
"item in list"
:key=
"item.id"
:label=
"item.name"
:value=
"item.id"
></el-option>
</el-select>
<el-select
size=
"large"
placeholder=
"大赛评分"
@
change=
"handleChange($event, 5)"
>
<el-option
v-for=
"item in list"
:key=
"item.id"
:label=
"item.name"
:value=
"item.id"
></el-option>
</el-select>
-->
</div>
</
template
>
...
...
@@ -51,7 +45,7 @@ function handleChange(id: string, type: number) {
.bg
{
position
:
relative
;
margin
:
20px
auto
;
background
:
url(@/assets/images/home_
teacher
_bg.png)
no-repeat
center
center
;
background
:
url(@/assets/images/home_
expert
_bg.png)
no-repeat
center
center
;
background-size
:
contain
;
width
:
1308px
;
height
:
642px
;
...
...
src/modules/home/components/TeacherHome.vue
0 → 100644
浏览文件 @
cfaad835
<
script
setup
lang=
"ts"
>
import
type
{
ExperimentItem
}
from
'../types'
import
{
getExperimentList
}
from
'../api'
const
router
=
useRouter
()
let
list
=
$ref
<
ExperimentItem
[]
>
([])
function
fetchList
()
{
getExperimentList
().
then
(
res
=>
{
list
=
res
.
data
.
list
})
}
onMounted
(()
=>
{
fetchList
()
})
function
handleChange
(
id
:
string
,
type
:
number
)
{
if
(
type
===
1
)
{
router
.
push
({
path
:
'/teacher/lab/book'
,
query
:
{
experiment_id
:
id
}
})
}
else
if
(
type
===
2
)
{
router
.
push
({
path
:
'/teacher/lab/video'
,
query
:
{
experiment_id
:
id
}
})
}
}
</
script
>
<
template
>
<div
class=
"bg"
>
<router-link
to=
"/teacher/lab/book"
class=
"link1"
></router-link>
<router-link
to=
"/teacher/lab/record"
class=
"link2"
></router-link>
<router-link
to=
"/teacher/lab/video"
class=
"link3"
></router-link>
<router-link
to=
"/teacher/lab/discuss"
class=
"link4"
></router-link>
</div>
<div
class=
"select-group"
>
<el-select
size=
"large"
placeholder=
"实验指导书"
@
change=
"handleChange($event, 1)"
>
<el-option
v-for=
"item in list"
:key=
"item.id"
:label=
"item.name"
:value=
"item.id"
></el-option>
</el-select>
<el-select
size=
"large"
placeholder=
"实验视频"
@
change=
"handleChange($event, 2)"
>
<el-option
v-for=
"item in list"
:key=
"item.id"
:label=
"item.name"
:value=
"item.id"
></el-option>
</el-select>
<!--
<el-select
size=
"large"
placeholder=
"实验答疑"
@
change=
"handleChange($event, 3)"
>
<el-option
v-for=
"item in list"
:key=
"item.id"
:label=
"item.name"
:value=
"item.id"
></el-option>
</el-select>
<el-select
size=
"large"
placeholder=
"实验成绩"
@
change=
"handleChange($event, 4)"
>
<el-option
v-for=
"item in list"
:key=
"item.id"
:label=
"item.name"
:value=
"item.id"
></el-option>
</el-select>
<el-select
size=
"large"
placeholder=
"大赛评分"
@
change=
"handleChange($event, 5)"
>
<el-option
v-for=
"item in list"
:key=
"item.id"
:label=
"item.name"
:value=
"item.id"
></el-option>
</el-select>
-->
</div>
</
template
>
<
style
lang=
"scss"
scoped
>
.bg
{
position
:
relative
;
margin
:
20px
auto
;
background
:
url(@/assets/images/home_teacher_bg.png)
no-repeat
center
center
;
background-size
:
contain
;
width
:
1308px
;
height
:
642px
;
.link1
{
position
:
absolute
;
bottom
:
100px
;
width
:
400px
;
height
:
300px
;
}
.link2
{
position
:
absolute
;
left
:
450px
;
bottom
:
50px
;
width
:
310px
;
height
:
250px
;
}
.link3
{
position
:
absolute
;
top
:
0
;
right
:
80px
;
width
:
400px
;
height
:
300px
;
}
.link4
{
position
:
absolute
;
bottom
:
0
;
right
:
0
;
width
:
400px
;
height
:
340px
;
}
}
.select-group
{
position
:
fixed
;
bottom
:
40px
;
.el-select
{
width
:
144px
;
:deep
(
.el-input__wrapper
)
{
box-shadow
:
none
;
}
}
.el-select
+
.el-select
{
margin-left
:
20px
;
}
}
</
style
>
src/modules/home/views/Index.vue
浏览文件 @
cfaad835
...
...
@@ -3,15 +3,17 @@ import AppMessage from '@/components/Message.vue'
import
Total
from
'../components/Total.vue'
import
{
useUserStore
}
from
'@/stores/user'
const
userStore
=
useUserStore
()
const
StudentHome
=
defineAsyncComponent
(()
=>
import
(
'../components/StudentHome.vue'
))
const
AdminHome
=
defineAsyncComponent
(()
=>
import
(
'../components/AdminHome.vue'
))
const
TeacherHome
=
defineAsyncComponent
(()
=>
import
(
'../components/TeacherHome.vue'
))
const
StudentHome
=
defineAsyncComponent
(()
=>
import
(
'../components/StudentHome.vue'
))
</
script
>
<
template
>
<div
class=
"home"
>
<Total></Total>
<StudentHome
v-if=
"userStore.role?.id === 1"
></StudentHome>
<AdminHome
v-else
></AdminHome>
<AdminHome
v-if=
"userStore.role?.id === 6"
></AdminHome>
<TeacherHome
v-else-if=
"userStore.role?.id === 5"
></TeacherHome>
<StudentHome
v-else
></StudentHome>
</div>
<AppMessage></AppMessage>
</
template
>
...
...
src/modules/student/contest/index.ts
浏览文件 @
cfaad835
...
...
@@ -8,7 +8,8 @@ export const routes: Array<RouteRecordRaw> = [
children
:
[
{
path
:
''
,
component
:
()
=>
import
(
'./views/Index.vue'
)
},
{
path
:
'join'
,
component
:
()
=>
import
(
'./views/Join.vue'
)
},
{
path
:
'lab/:id'
,
component
:
()
=>
import
(
'./views/Lab.vue'
),
props
:
true
}
{
path
:
'lab/:id'
,
component
:
()
=>
import
(
'./views/Lab.vue'
),
props
:
true
},
{
path
:
'score'
,
component
:
()
=>
import
(
'./views/Score.vue'
)
}
]
}
]
src/modules/student/contest/views/Score.vue
0 → 100644
浏览文件 @
cfaad835
<
script
setup
lang=
"ts"
></
script
>
<
template
>
<AppCard></AppCard>
</
template
>
src/stores/menu.ts
浏览文件 @
cfaad835
...
...
@@ -6,63 +6,88 @@ interface State {
studentMenus
:
IMenuItem
[]
adminMenus
:
IMenuItem
[]
teacherMenus
:
IMenuItem
[]
expertMenus
:
IMenuItem
[]
}
// 学生菜单
const
studentMenus
:
IMenuItem
[]
=
[
{
name
:
'智能营销'
,
name
:
'首页'
,
path
:
'/'
},
{
name
:
'我的实验'
,
path
:
'/student/lab'
},
{
name
:
'
技能
大赛'
,
name
:
'
我的
大赛'
,
path
:
'/student/contest'
},
{
name
:
'大赛成绩查询'
,
path
:
'/student/contest/score'
}
]
// 教师
、专家
菜单
// 教师菜单
const
teacherMenus
:
IMenuItem
[]
=
[
{
name
:
'智能营销'
,
path
:
'/teacher/lab'
,
tag
:
'v1-teacher'
,
children
:
[
{
name
:
'实验指导书管理'
,
path
:
'/teacher/lab/book'
,
tag
:
'v1-teacher-book'
},
{
name
:
'实验操作视频管理'
,
path
:
'/teacher/lab/video'
,
tag
:
'v1-teacher-video'
},
{
name
:
'实验讨论交流'
,
path
:
'/teacher/lab/discuss'
,
tag
:
'v1-teacher-discussion'
},
{
name
:
'实验成绩管理'
,
path
:
'/teacher/lab/record'
,
tag
:
'v1-teacher-record'
}
]
name
:
'首页'
,
path
:
'/'
},
{
name
:
'技能大赛'
,
path
:
'/teacher/contest'
,
name
:
'实验指导书管理'
,
path
:
'/teacher/lab/book'
,
tag
:
'v1-teacher-book'
},
{
name
:
'实验操作视频管理'
,
path
:
'/teacher/lab/video'
,
tag
:
'v1-teacher-video'
},
{
name
:
'实验讨论交流'
,
path
:
'/teacher/lab/discuss'
,
tag
:
'v1-teacher-discussion'
},
{
name
:
'实验成绩管理'
,
path
:
'/teacher/lab/record'
,
tag
:
'v1-teacher-record'
},
{
name
:
'大赛训练答疑'
,
path
:
'/teacher/contest/discuss'
}
]
// 专家菜单
const
expertMenus
:
IMenuItem
[]
=
[
{
name
:
'首页'
,
path
:
'/'
},
{
name
:
'训练答疑'
,
path
:
'/teacher/contest/discuss'
},
{
name
:
'大赛评分'
,
path
:
'/teacher/contest/record'
},
{
name
:
'大赛发布成绩'
,
path
:
'/teacher/contest/score'
},
{
name
:
'大赛成绩分析'
,
path
:
'/teacher/contest/analyze'
,
children
:
[
{
name
:
'训练答疑'
,
path
:
'/teacher/contest/discuss'
},
{
name
:
'大赛评分'
,
path
:
'/teacher/contest/record'
name
:
'赛项成绩画像'
,
path
:
'/teacher/contest/score/analyze'
},
{
name
:
'
发布成绩
'
,
path
:
'/teacher/contest/s
cor
e'
name
:
'
学生个人成绩画像
'
,
path
:
'/teacher/contest/s
tudent/analyz
e'
}
]
}
...
...
@@ -70,34 +95,21 @@ const teacherMenus: IMenuItem[] = [
// 管理员菜单
const
adminMenus
:
IMenuItem
[]
=
[
{
name
:
'智能营销'
,
path
:
'/admin/lab'
,
tag
:
'v1-backend-experiment'
,
children
:
[
{
name
:
'实验管理'
,
path
:
'/admin/lab/experiment'
,
tag
:
'v1-backend-experiment'
}
]
name
:
'实验管理'
,
path
:
'/admin/lab/experiment'
,
tag
:
'v1-backend-experiment'
},
{
name
:
'技能大赛'
,
path
:
'/admin/contest'
,
children
:
[
{
name
:
'赛项管理'
,
path
:
'/admin/contest/items'
},
{
name
:
'参赛选手管理'
,
path
:
'/admin/contest/contestants'
},
{
name
:
'评分专家管理'
,
path
:
'/admin/contest/experts'
}
]
name
:
'赛项管理'
,
path
:
'/admin/contest/items'
},
{
name
:
'参赛选手管理'
,
path
:
'/admin/contest/contestants'
},
{
name
:
'评分专家管理'
,
path
:
'/admin/contest/experts'
}
]
...
...
@@ -106,17 +118,20 @@ export const useMenuStore = defineStore({
state
:
():
State
=>
({
studentMenus
,
adminMenus
,
teacherMenus
teacherMenus
,
expertMenus
}),
getters
:
{
menus
:
state
=>
{
const
userStore
=
useUserStore
()
if
(
userStore
.
role
?.
id
===
6
)
{
return
state
.
admin
Menus
return
state
.
expert
Menus
}
else
if
(
userStore
.
role
?.
id
===
5
)
{
return
state
.
teacherMenus
}
else
{
}
else
if
(
userStore
.
role
?.
id
===
1
)
{
return
state
.
studentMenus
}
else
{
return
state
.
adminMenus
}
}
},
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论