提交 cfaad835 authored 作者: 王鹏飞's avatar 王鹏飞

chore: update

上级 9239d83a
......@@ -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;
......
<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>
......@@ -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>
......
......@@ -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') }
]
}
]
<script setup lang="ts"></script>
<template>
<AppCard></AppCard>
</template>
......@@ -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/score'
name: '学生个人成绩画像',
path: '/teacher/contest/student/analyze'
}
]
}
......@@ -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.adminMenus
return state.expertMenus
} 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 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论