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

新增老师相关功能

上级 70bbbe86
module.exports = { module.exports = {
domain: 'dev.ezijing.com', domain: 'dev.ezijing.com',
url: 'https://learn-api.ezijing.com/api', url: 'https://learn-api2.ezijing.com/api',
webpack: { webpack: {
externals: { externals: {
CKEDITOR: 'window.CKEDITOR', CKEDITOR: 'window.CKEDITOR',
...@@ -33,7 +33,7 @@ module.exports = { ...@@ -33,7 +33,7 @@ module.exports = {
}, },
ProvidePlugin: {}, ProvidePlugin: {},
others: { others: {
baseUrl: 'https://learn-api.ezijing.com', baseUrl: 'https://learn-api2.ezijing.com',
loginUrl: 'https://login.ezijing.com/xlearn/login/index' loginUrl: 'https://login2.ezijing.com/xlearn/login/index'
} }
} }
...@@ -48,3 +48,8 @@ export function createGuestUser() { ...@@ -48,3 +48,8 @@ export function createGuestUser() {
export function checkCode(params) { export function checkCode(params) {
return httpRequest.get('/api/usercenter/user/check-code', { params }) return httpRequest.get('/api/usercenter/user/check-code', { params })
} }
// 选择用户角色
export function chooseRole(data) {
return httpRequest.post('/api/zy/user/choose-role', data)
}
...@@ -9,7 +9,7 @@ ...@@ -9,7 +9,7 @@
</div> </div>
</div> </div>
<el-menu class="nav" :unique-opened="true" :default-active="activeLink"> <el-menu class="nav" :unique-opened="true" :default-active="activeLink">
<template v-for="item in datalist"> <template v-for="item in currentMenus">
<el-submenu :index="item.title" :key="item.title" v-if="item.children"> <el-submenu :index="item.title" :key="item.title" v-if="item.children">
<template #title> <template #title>
<i class="iconfont" :class="item.icon"></i><span>{{ item.title }}</span> <i class="iconfont" :class="item.icon"></i><span>{{ item.title }}</span>
...@@ -51,7 +51,7 @@ export default { ...@@ -51,7 +51,7 @@ export default {
data() { data() {
return { return {
activeLink: '/course/learn', activeLink: '/course/learn',
defaultMenus: [ studentMenus: [
{ {
title: '我的课程', title: '我的课程',
icon: 'icon-bianzu6-hong', icon: 'icon-bianzu6-hong',
...@@ -72,7 +72,40 @@ export default { ...@@ -72,7 +72,40 @@ export default {
children: [ children: [
{ title: '实训案例练习', path: 'https://xtraining.ezijing.com/', href: 'https://xtraining.ezijing.com/' } { title: '实训案例练习', path: 'https://xtraining.ezijing.com/', href: 'https://xtraining.ezijing.com/' }
] ]
}
],
techerMenus: [
// {
// title: '我的班课',
// icon: 'icon-bianzu6-hong',
// children: [
// { title: '理论班课', path: '/course/learn' },
// { title: '实操班课', path: '/course/learn' }
// ]
// },
{
title: '课程中心',
icon: 'icon-bianzu6-hong',
children: [{ title: '课程库', path: '/course/learn' }]
}, },
{
title: '实操资源',
icon: 'icon-kaoshihong',
children: [
{ title: '实操课程库', path: 'https://xtraining.ezijing.com/', href: 'https://xtraining.ezijing.com/' }
]
}
// {
// title: '试题库',
// icon: 'icon-bianzuhong',
// children: [
// { title: '模拟考试', path: '/testExam' },
// { title: '错题集合', path: '/my/questions/wrong' },
// { title: '收藏试题', path: '/my/questions/collection' }
// ]
// }
],
defaultMenus: [
{ {
title: '个人中心', title: '个人中心',
icon: 'icon-guanlizhongxinbeifen-hong', icon: 'icon-guanlizhongxinbeifen-hong',
...@@ -95,11 +128,13 @@ export default { ...@@ -95,11 +128,13 @@ export default {
} }
}, },
computed: { computed: {
datalist() { currentMenus() {
if (this.menus && this.menus.length) { if (this.menus && this.menus.length) {
return this.menus return this.menus
} }
return this.defaultMenus return this.user.role === 2
? this.techerMenus.concat(this.defaultMenus)
: this.studentMenus.concat(this.defaultMenus)
}, },
user() { user() {
return this.$store.state.user return this.$store.state.user
......
...@@ -2,26 +2,29 @@ ...@@ -2,26 +2,29 @@
<app-container title="个人信息"> <app-container title="个人信息">
<el-form :model="ruleForm" :rules="rules" label-width="100px" ref="ruleForm" class="form" hide-required-asterisk> <el-form :model="ruleForm" :rules="rules" label-width="100px" ref="ruleForm" class="form" hide-required-asterisk>
<el-form-item label="所在院校" prop="college"> <el-form-item label="所在院校" prop="college">
<el-input v-model="ruleForm.student_info.college" disabled></el-input> <el-input v-model="info.college" disabled></el-input>
</el-form-item> </el-form-item>
<el-form-item label="院系名称" prop="school"> <el-form-item label="院系名称" prop="school">
<el-input v-model="ruleForm.student_info.school_name" disabled></el-input> <el-input v-model="info.school_name" disabled></el-input>
</el-form-item> </el-form-item>
<el-form-item label="专业名称" prop="major"> <el-form-item label="专业名称" prop="major">
<el-input v-model="ruleForm.student_info.major" disabled></el-input> <el-input v-model="info.major" disabled></el-input>
</el-form-item> </el-form-item>
<el-form-item label="考证等级" prop="grade"> <el-form-item label="考证等级" prop="grade">
<el-input v-model="ruleForm.student_info.grade" disabled></el-input> <el-input v-model="info.grade" disabled></el-input>
</el-form-item> </el-form-item>
<el-form-item label="用户真实姓名" prop="realname"> <el-form-item label="用户真实姓名" prop="realname">
<el-input v-model="ruleForm.realname" disabled></el-input> <el-input v-model="ruleForm.realname" disabled></el-input>
</el-form-item> </el-form-item>
<el-form-item label="身份证号码" prop="id_number"> <el-form-item label="身份证号码" prop="id_number">
<el-input v-model="ruleForm.student_info.id_number" disabled></el-input> <el-input v-model="info.id_number" disabled></el-input>
</el-form-item>
<el-form-item label="身份" prop="role">
<el-select v-model="ruleForm.role" disabled style="width: 100%">
<el-option :value="1" label="学生"></el-option>
<el-option :value="2" label="老师"></el-option>
</el-select>
</el-form-item> </el-form-item>
<!-- <el-form-item label="身份" prop="role">
<el-input v-model="ruleForm.student_info.role" disabled></el-input>
</el-form-item> -->
<el-form-item label="登录帐号" prop="mobile"> <el-form-item label="登录帐号" prop="mobile">
<el-input v-model="ruleForm.mobile" disabled></el-input> <el-input v-model="ruleForm.mobile" disabled></el-input>
</el-form-item> </el-form-item>
...@@ -58,6 +61,9 @@ export default { ...@@ -58,6 +61,9 @@ export default {
computed: { computed: {
user() { user() {
return this.$store.state.user return this.$store.state.user
},
info() {
return this.user.role === 2 ? this.user.staff_info : this.user.student_info
} }
}, },
watch: { watch: {
......
<template> <template>
<app-container title="课程学习"> <app-container :title="title">
<template #header-right> <template #header-right>
<div class="search"> <div class="search">
<el-input prefix-icon="el-icon-search" clearable v-model="searchValue" @keyup.enter.native="handleSearch" /> <el-input prefix-icon="el-icon-search" clearable v-model="searchValue" @keyup.enter.native="handleSearch" />
...@@ -21,6 +21,15 @@ export default { ...@@ -21,6 +21,15 @@ export default {
searchValue: '' searchValue: ''
} }
}, },
computed: {
role() {
// 1 学生 2 老师
return this.$store.state.user.role
},
title() {
return this.role === 2 ? '课程库' : ''
}
},
methods: { methods: {
handleClick(data) { handleClick(data) {
this.$router.push({ name: 'courseLearnItem', params: { id: data.course_id } }) this.$router.push({ name: 'courseLearnItem', params: { id: data.course_id } })
......
<template>
<div class="app-role">
<el-radio-group v-model="role" @change="chooseRole">
<el-radio label="1" border>我是学生</el-radio>
<el-radio label="2" border>我是老师</el-radio>
</el-radio-group>
</div>
</template>
<script>
import * as api from '@/api/account'
export default {
data() {
return {
role: ''
}
},
methods: {
chooseRole() {
api.chooseRole({ role: this.role }).then(() => {
this.$router.replace('/')
})
}
}
}
</script>
<style scoped>
.app-role {
height: 100vh;
display: flex;
align-items: center;
justify-content: center;
background-color: #fff;
}
</style>
...@@ -57,6 +57,7 @@ const examAnswer = [ ...@@ -57,6 +57,7 @@ const examAnswer = [
export default [ export default [
{ path: '*', redirect: '/index' }, { path: '*', redirect: '/index' },
{ path: '/', redirect: '/course/learn' }, { path: '/', redirect: '/course/learn' },
{ path: '/role', component: () => import('@/pages/role') },
{ {
path: '/', path: '/',
component: Layout, component: Layout,
......
import axios from 'axios' import axios from 'axios'
import qs from 'qs' import qs from 'qs'
import { Message } from 'element-ui' import { Message } from 'element-ui'
import router from '@/router'
const httpRequest = axios.create({ const httpRequest = axios.create({
baseURL: webConf.others.baseUrl, baseURL: webConf.others.baseUrl,
timeout: 60000, timeout: 60000,
...@@ -36,14 +36,16 @@ httpRequest.interceptors.response.use( ...@@ -36,14 +36,16 @@ httpRequest.interceptors.response.use(
return data return data
}, },
function(error) { function(error) {
console.log(error.response)
if (error.response) { if (error.response) {
const { status, message } = error.response.data const { status, message, code } = error.response.data
// 未登录 // 未登录
if (status === 403) { if (status === 403) {
window.location.href = `${webConf.others.loginUrl}?rd=${encodeURIComponent(window.location.href)}` window.location.href = `${webConf.others.loginUrl}?rd=${encodeURIComponent(window.location.href)}`
} } else if (status === 400 && code === 401) {
router.push('/role')
} else {
Message.error(message || error.response.data) Message.error(message || error.response.data)
}
return Promise.reject(error.response) return Promise.reject(error.response)
} else { } else {
Message.error(error) Message.error(error)
......
...@@ -14,6 +14,12 @@ export default class BeforeEnter { ...@@ -14,6 +14,12 @@ export default class BeforeEnter {
// 创建游客用户 // 创建游客用户
// await store.dispatch('createGuestUser') // await store.dispatch('createGuestUser')
// 登录白名单
const whiteList = ['/role']
if (whiteList.includes(to.path)) {
next()
return
}
const isLogin = store.state.isLogin || (await store.dispatch('checkLogin')) const isLogin = store.state.isLogin || (await store.dispatch('checkLogin'))
if (to.meta.requiredLogin && !isLogin) { if (to.meta.requiredLogin && !isLogin) {
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论