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

新增老师相关功能

上级 70bbbe86
module.exports = {
domain: 'dev.ezijing.com',
url: 'https://learn-api.ezijing.com/api',
url: 'https://learn-api2.ezijing.com/api',
webpack: {
externals: {
CKEDITOR: 'window.CKEDITOR',
......@@ -33,7 +33,7 @@ module.exports = {
},
ProvidePlugin: {},
others: {
baseUrl: 'https://learn-api.ezijing.com',
loginUrl: 'https://login.ezijing.com/xlearn/login/index'
baseUrl: 'https://learn-api2.ezijing.com',
loginUrl: 'https://login2.ezijing.com/xlearn/login/index'
}
}
......@@ -48,3 +48,8 @@ export function createGuestUser() {
export function checkCode(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 @@
</div>
</div>
<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">
<template #title>
<i class="iconfont" :class="item.icon"></i><span>{{ item.title }}</span>
......@@ -51,7 +51,7 @@ export default {
data() {
return {
activeLink: '/course/learn',
defaultMenus: [
studentMenus: [
{
title: '我的课程',
icon: 'icon-bianzu6-hong',
......@@ -72,7 +72,40 @@ export default {
children: [
{ 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: '个人中心',
icon: 'icon-guanlizhongxinbeifen-hong',
......@@ -95,11 +128,13 @@ export default {
}
},
computed: {
datalist() {
currentMenus() {
if (this.menus && this.menus.length) {
return this.menus
}
return this.defaultMenus
return this.user.role === 2
? this.techerMenus.concat(this.defaultMenus)
: this.studentMenus.concat(this.defaultMenus)
},
user() {
return this.$store.state.user
......
......@@ -2,26 +2,29 @@
<app-container title="个人信息">
<el-form :model="ruleForm" :rules="rules" label-width="100px" ref="ruleForm" class="form" hide-required-asterisk>
<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 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 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 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 label="用户真实姓名" prop="realname">
<el-input v-model="ruleForm.realname" disabled></el-input>
</el-form-item>
<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 label="身份" prop="role">
<el-input v-model="ruleForm.student_info.role" disabled></el-input>
</el-form-item> -->
<el-form-item label="登录帐号" prop="mobile">
<el-input v-model="ruleForm.mobile" disabled></el-input>
</el-form-item>
......@@ -58,6 +61,9 @@ export default {
computed: {
user() {
return this.$store.state.user
},
info() {
return this.user.role === 2 ? this.user.staff_info : this.user.student_info
}
},
watch: {
......
<template>
<app-container title="课程学习">
<app-container :title="title">
<template #header-right>
<div class="search">
<el-input prefix-icon="el-icon-search" clearable v-model="searchValue" @keyup.enter.native="handleSearch" />
......@@ -21,6 +21,15 @@ export default {
searchValue: ''
}
},
computed: {
role() {
// 1 学生 2 老师
return this.$store.state.user.role
},
title() {
return this.role === 2 ? '课程库' : ''
}
},
methods: {
handleClick(data) {
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 = [
export default [
{ path: '*', redirect: '/index' },
{ path: '/', redirect: '/course/learn' },
{ path: '/role', component: () => import('@/pages/role') },
{
path: '/',
component: Layout,
......
import axios from 'axios'
import qs from 'qs'
import { Message } from 'element-ui'
import router from '@/router'
const httpRequest = axios.create({
baseURL: webConf.others.baseUrl,
timeout: 60000,
......@@ -36,14 +36,16 @@ httpRequest.interceptors.response.use(
return data
},
function(error) {
console.log(error.response)
if (error.response) {
const { status, message } = error.response.data
const { status, message, code } = error.response.data
// 未登录
if (status === 403) {
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)
} else {
Message.error(error)
......
......@@ -14,6 +14,12 @@ export default class BeforeEnter {
// 创建游客用户
// await store.dispatch('createGuestUser')
// 登录白名单
const whiteList = ['/role']
if (whiteList.includes(to.path)) {
next()
return
}
const isLogin = store.state.isLogin || (await store.dispatch('checkLogin'))
if (to.meta.requiredLogin && !isLogin) {
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论