Commit dd6db7f3 authored by liwei's avatar liwei

liwei

parent 06e3b7e5
<template> <template>
<div id="app"> <div id="app">
<router-view/> <router-view />
</div> </div>
</template> </template>
<script> <script>
import menu from './util/menuList' import menu from "./util/menuList";
export default { export default {
name: 'App', name: "App",
data(){ data() {
return { return {};
}
}, },
mounted(){ mounted() {
// 权限验证 动态路由 // 权限验证 动态路由
if(window.location.href.indexOf('login') < 0){ if (window.location.href.indexOf("login") < 0) {
let permission = this.$store.state.progressList; let permission = this.$store.state.progressList;
console.log(this.$store.state) console.log(this.$store.state);
let menuList = []; let menuList = [];
this.$router.options.routes[0].children = []; this.$router.options.routes[0].children = [];
let routerUserDetail = { let routerUserDetail = {
path: '/userDetail/:id', path: "/userDetail/:id",
name:'userDetail', name: "userDetail",
component: e=>require(['@/components/userDetail'],e), component: e => require(["@/components/userDetail"], e)
}; };
let routerTeacherDetail ={ let routerTeacherDetail = {
path: '/teacher/:id', path: "/teacher/:id",
name:'teacherDetail', name: "teacherDetail",
component: e=>require(['@/components/teacherDetail'],e), component: e => require(["@/components/teacherDetail"], e)
}; };
menu.forEach(i=>{ menu.forEach(i => {
let p = false; let p = false;
let t = []; let t = [];
i.list.forEach(j=>{ i.list.forEach(j => {
let find = permission.find(x=>{return x.cover === j.cover}); let find = permission.find(x => {
if(find){ return x.cover === j.cover;
});
if (find) {
j.router.meta = {}; j.router.meta = {};
j.router.meta.readonly = !!find.readonly; j.router.meta.readonly = !!find.readonly;
j.router.meta.delete = !!find.delete; j.router.meta.delete = !!find.delete;
...@@ -47,13 +47,13 @@ export default { ...@@ -47,13 +47,13 @@ export default {
j.router.meta.classTakeUnlimited = !!find.classTakeUnlimited; j.router.meta.classTakeUnlimited = !!find.classTakeUnlimited;
j.router.meta.promoter = !!find.promoter; j.router.meta.promoter = !!find.promoter;
t.push(j); t.push(j);
if(find.cover === '3-1'){ if (find.cover === "3-1") {
routerTeacherDetail.meta = {}; routerTeacherDetail.meta = {};
routerTeacherDetail.meta.readonly = find.readonly; routerTeacherDetail.meta.readonly = find.readonly;
routerTeacherDetail.meta.delete = !!find.delete; routerTeacherDetail.meta.delete = !!find.delete;
this.$router.options.routes[0].children.push(routerTeacherDetail); this.$router.options.routes[0].children.push(routerTeacherDetail);
} }
if(find.cover === '3-2'){ if (find.cover === "3-2") {
routerUserDetail.meta = {}; routerUserDetail.meta = {};
routerUserDetail.meta.readonly = find.readonly; routerUserDetail.meta.readonly = find.readonly;
routerUserDetail.meta.delete = !!find.delete; routerUserDetail.meta.delete = !!find.delete;
...@@ -63,28 +63,32 @@ export default { ...@@ -63,28 +63,32 @@ export default {
p = true; p = true;
} }
}); });
if(p){ if (p) {
i.list = t; i.list = t;
menuList.push(i) menuList.push(i);
} }
}); });
this.$router.addRoutes([this.$router.options.routes[0]]);//调用add; this.$router.addRoutes([this.$router.options.routes[0]]); //调用add;
this.$store.dispatch('setMenu',menuList) this.$store.dispatch("setMenu", menuList);
} }
} }
} };
</script> </script>
<style> <style>
#app { #app {
height: 100%; height: 100%;
} }
html,body{ html,
body {
height: 100%; height: 100%;
margin: 0; margin: 0;
padding: 0; padding: 0;
} }
.el-collapse-item__arrow{margin-left: 0;} .el-collapse-item__arrow {
.fl{float: left;} margin-left: 0;
}
.fl {
float: left;
}
</style> </style>
This diff is collapsed.
This diff is collapsed.
...@@ -6,80 +6,87 @@ ...@@ -6,80 +6,87 @@
background-color="#333333" background-color="#333333"
active-text-color="#ffd04b" active-text-color="#ffd04b"
:collapse="menuType" :collapse="menuType"
class="el-menu-vertical-demo"> class="el-menu-vertical-demo"
>
<div class="menu-btn" @click="menuType = !menuType"> <div class="menu-btn" @click="menuType = !menuType">
<i v-if="!menuType" class="iconfont icon-shouqi"></i> <i v-if="!menuType" class="iconfont icon-shouqi"></i>
<i v-if="menuType" <i v-if="menuType" class="iconfont icon-zhankai"></i>
class="iconfont icon-zhankai"></i>
</div> </div>
<el-submenu v-for="(data,index) in menuList" :index="data.value" :key="index"> <el-submenu v-for="(data,index) in menuList" :index="data.value" :key="index">
<template slot="title"> <template slot="title">
<i :class="'iconfont menu-icon '+data.icon"></i> <i :class="'iconfont menu-icon '+data.icon"></i>
<span>{{data.value}}</span> <span>{{data.value}}</span>
</template> </template>
<el-menu-item v-for="(item,i) in data.list" :index="item.path" :key="i" class="item">{{item.value}}</el-menu-item> <el-menu-item
v-for="(item,i) in data.list"
:index="item.path"
:key="i"
class="item"
>{{item.value}}</el-menu-item>
</el-submenu> </el-submenu>
</el-menu> </el-menu>
</template> </template>
<script> <script>
export default {
export default {
name: "leftMenu", name: "leftMenu",
data(){ data() {
return { return {
menuList:this.$store.state.menuList, menuList: this.$store.state.menuList,
menuType:false menuType: false
} };
},
mounted() {
console.log(this.menuList);
}, },
methods:{ methods: {
changeMenuType:function(){ changeMenuType: function() {
this.$store.state.menuType = !this.$store.state.menuType this.$store.state.menuType = !this.$store.state.menuType;
}, },
toPath:function (data) { toPath: function(data) {
this.$router.push({name:data.routerName}) this.$router.push({ name: data.routerName });
if(this.$store.state.openedTab.indexOf(data) < 0){ if (this.$store.state.openedTab.indexOf(data) < 0) {
this.$store.state.openedTab.push(data); this.$store.state.openedTab.push(data);
} }
} }
},
} }
};
</script> </script>
<style scoped lang="less"> <style scoped lang="less">
@import "../../util/public"; @import "../../util/public";
.el-menu-vertical-demo:not(.el-menu--collapse) { .el-menu-vertical-demo:not(.el-menu--collapse) {
width: 200px; width: 200px;
} }
.el-menu{ .el-menu {
background: @bg-b; background: @bg-b;
color: white; color: white;
overflow: auto; overflow: auto;
height: 100%; height: 100%;
.menu-btn{ .menu-btn {
height: 35px; height: 35px;
background: @bg-b-s; background: @bg-b-s;
line-height: 35px; line-height: 35px;
/*text-align: center;*/ /*text-align: center;*/
i{ i {
font-size: 26px; font-size: 26px;
float: right; float: right;
padding: 0 15px; padding: 0 15px;
} }
} }
.el-submenu{ .el-submenu {
.menu-icon{ .menu-icon {
color: white; color: white;
font-size: 18px; font-size: 18px;
position: relative; position: relative;
right: 5px; right: 5px;
} }
.el-menu-item{ .el-menu-item {
background: @main-font-color; background: @main-font-color;
} }
.template{ .template {
color: black; color: black;
} }
} }
} }
</style> </style>
...@@ -18,94 +18,101 @@ ...@@ -18,94 +18,101 @@
</template> </template>
<script> <script>
import { loginApi } from "../../service/api"; import { loginApi } from "../../service/api";
import md5 from 'js-md5'; import md5 from "js-md5";
export default { export default {
data(){ data() {
return{ return {
login:{ login: {
username:'', username: "",
password:'' password: ""
}, },
loginRules:{ loginRules: {
username:[ username: [
{ required: true, message: '请输入您的用户名', trigger: 'blur' } { required: true, message: "请输入您的用户名", trigger: "blur" }
], ],
password:[ password: [
{ required: true, message: '请输入您的密码', trigger: 'blur' } { required: true, message: "请输入您的密码", trigger: "blur" }
] ]
} }
} };
}, },
mounted(){ mounted() {
let that = this; let that = this;
document.onkeydown=keyDownSearch; document.onkeydown = keyDownSearch;
function keyDownSearch(e) { function keyDownSearch(e) {
// 兼容FF和IE和Opera // 兼容FF和IE和Opera
let theEvent = e || window.event; let theEvent = e || window.event;
let code = theEvent.keyCode || theEvent.which || theEvent.charCode; let code = theEvent.keyCode || theEvent.which || theEvent.charCode;
if (code === 13 && that.$route.name === 'login') { if (code === 13 && that.$route.name === "login") {
that.submitForm();//具体处理函数 that.submitForm(); //具体处理函数
return false; return false;
} }
return true; return true;
} }
}, },
methods:{ methods: {
// 提交 // 提交
submitForm(){ submitForm() {
this.$refs["loginForm"].validate((valid) => { this.$refs["loginForm"].validate(valid => {
if (valid) { if (valid) {
let json = { let json = {
username:this.login.username, username: this.login.username,
password:md5(this.login.password) password: md5(this.login.password)
}; };
// debugger // debugger
loginApi(json).then(res=>{ loginApi(json).then(res => {
if(res.teacher_info){ debugger;
let data=JSON.stringify(res.teacher_info) if (res.teacher_info) {
localStorage.setItem("phoneNum",data) let data = JSON.stringify(res.teacher_info);
}else{ localStorage.setItem("phoneNum", data);
localStorage.setItem("phoneNum","") } else {
localStorage.setItem("phoneNum", "");
} }
this.$store.dispatch('setToken',res.token); this.$store.dispatch("setToken", res.token);
this.$store.dispatch('setUserName',res.desc); this.$store.dispatch("setUserName", res.desc);
this.$store.dispatch('setPermission',JSON.parse(res.roles.menu_ids)); this.$store.dispatch(
"setPermission",
JSON.parse(res.roles.menu_ids)
);
// debugger // debugger
window.location.href = '/'; window.location.href = "/";
});
})
}
})
} }
});
} }
} }
};
</script> </script>
<style scoped lang="less"> <style scoped lang="less">
@import "../../util/public"; @import "../../util/public";
.login{ .login {
height: 100%; height: 100%;
background: linear-gradient(to bottom right, #ecec7c, #787af4); /* 标准的语法(必须放在最后) */ background: linear-gradient(
} to bottom right,
.wrap-main{ #ecec7c,
#787af4
); /* 标准的语法(必须放在最后) */
}
.wrap-main {
width: 300px; width: 300px;
height: 180px; height: 180px;
padding:50px 20px; padding: 50px 20px;
border-radius: 5px; border-radius: 5px;
box-shadow: 8px 8px 15px rgba(49, 49, 49, 0.5); box-shadow: 8px 8px 15px rgba(49, 49, 49, 0.5);
position: fixed; position: fixed;
line-height: 50px; line-height: 50px;
background-color: rgba(255,255,255,0.3); background-color: rgba(255, 255, 255, 0.3);
top: 50%; top: 50%;
left: 50%; left: 50%;
margin-left: -200px; margin-left: -200px;
margin-top: -200px; margin-top: -200px;
.btn{ .btn {
display: block; display: block;
width: 100%; width: 100%;
} }
.title{ .title {
position: absolute; position: absolute;
top: -100px; top: -100px;
width: 100%; width: 100%;
...@@ -115,5 +122,5 @@ ...@@ -115,5 +122,5 @@
font-size: 26px; font-size: 26px;
text-shadow: 6px 6px 3px rgba(49, 49, 49, 0.5); text-shadow: 6px 6px 3px rgba(49, 49, 49, 0.5);
} }
} }
</style> </style>
This diff is collapsed.
...@@ -37,7 +37,7 @@ export default [{ ...@@ -37,7 +37,7 @@ export default [{
name: 'shop', name: 'shop',
component: e => require(['@/components/shop'], e), component: e => require(['@/components/shop'], e),
}, },
}, ] },]
}, { }, {
name: '', name: '',
value: '期数管理', value: '期数管理',
...@@ -63,7 +63,7 @@ export default [{ ...@@ -63,7 +63,7 @@ export default [{
name: 'class', name: 'class',
component: e => require(['@/components/class'], e), component: e => require(['@/components/class'], e),
} }
},{ }, {
value: '市场招生统计', value: '市场招生统计',
routerName: 'marketStatistics', routerName: 'marketStatistics',
path: '/marketStatistics', path: '/marketStatistics',
...@@ -111,7 +111,7 @@ export default [{ ...@@ -111,7 +111,7 @@ export default [{
name: 'teacher', name: 'teacher',
component: e => require(['@/components/teacher'], e), component: e => require(['@/components/teacher'], e),
} }
},{ }, {
value: '月课订单列表', value: '月课订单列表',
routerName: 'monthOrder', routerName: 'monthOrder',
path: '/monthOrder', path: '/monthOrder',
...@@ -132,7 +132,7 @@ export default [{ ...@@ -132,7 +132,7 @@ export default [{
name: 'monthOrderCount', name: 'monthOrderCount',
component: e => require(['@/components/orderCount/monthOrderCount'], e), component: e => require(['@/components/orderCount/monthOrderCount'], e),
} }
},{ }, {
value: '退款列表', value: '退款列表',
routerName: 'refund', routerName: 'refund',
path: '/refund', path: '/refund',
...@@ -142,7 +142,7 @@ export default [{ ...@@ -142,7 +142,7 @@ export default [{
name: 'refund', name: 'refund',
component: e => require(['@/components/refund'], e), component: e => require(['@/components/refund'], e),
} }
},{ }, {
value: '业绩排行', value: '业绩排行',
routerName: 'achievement', routerName: 'achievement',
path: '/achievement', path: '/achievement',
...@@ -152,7 +152,7 @@ export default [{ ...@@ -152,7 +152,7 @@ export default [{
name: 'achievement', name: 'achievement',
component: e => require(['@/components/achievement'], e), component: e => require(['@/components/achievement'], e),
} }
},{ }, {
value: '话术列表', value: '话术列表',
routerName: 'talkingSkill', routerName: 'talkingSkill',
path: '/talkingSkill', path: '/talkingSkill',
...@@ -164,7 +164,7 @@ export default [{ ...@@ -164,7 +164,7 @@ export default [{
} }
},] },]
}, },
{ {
name: '', name: '',
value: '用户管理', value: '用户管理',
icon: 'icon-laoshi', icon: 'icon-laoshi',
...@@ -215,11 +215,12 @@ export default [{ ...@@ -215,11 +215,12 @@ export default [{
}, },
] ]
}, },
{ {
name: '', name: '',
value: '订单管理', value: '订单管理',
icon: 'icon-dingdan', icon: 'icon-dingdan',
list: [{ list: [
{
value: '日课订单列表', value: '日课订单列表',
routerName: 'order', routerName: 'order',
path: '/order', path: '/order',
...@@ -251,7 +252,8 @@ export default [{ ...@@ -251,7 +252,8 @@ export default [{
name: 'consignment', name: 'consignment',
component: e => require(['@/components/consignment'], e), component: e => require(['@/components/consignment'], e),
} }
}, { },
{
value: '订单统计', value: '订单统计',
routerName: 'orderCount', routerName: 'orderCount',
path: '/orderCount', path: '/orderCount',
...@@ -261,7 +263,8 @@ export default [{ ...@@ -261,7 +263,8 @@ export default [{
name: 'orderCount', name: 'orderCount',
component: e => require(['@/components/orderCount/index'], e), component: e => require(['@/components/orderCount/index'], e),
} }
},{ },
{
value: '日课订单统计', value: '日课订单统计',
routerName: 'dayOrderCount', routerName: 'dayOrderCount',
path: '/dayOrderCount', path: '/dayOrderCount',
...@@ -305,7 +308,6 @@ export default [{ ...@@ -305,7 +308,6 @@ export default [{
component: e => require(['@/components/yunji'], e), component: e => require(['@/components/yunji'], e),
} }
}, },
{ {
value: '兑换码管理', value: '兑换码管理',
routerName: 'exchange', routerName: 'exchange',
...@@ -316,10 +318,10 @@ export default [{ ...@@ -316,10 +318,10 @@ export default [{
name: 'exchange', name: 'exchange',
component: e => require(['@/components/exchange'], e), component: e => require(['@/components/exchange'], e),
} }
}, }
] ]
}, },
{ {
name: '', name: '',
value: '实物管理', value: '实物管理',
icon: 'icon-shu', icon: 'icon-shu',
...@@ -462,7 +464,24 @@ export default [{ ...@@ -462,7 +464,24 @@ export default [{
} }
}, },
] ]
}, { },
{
name: '',
value: '教研管理',
icon: 'icon-material',
list: [{
value: '教材列表',
routerName: 'resources',
path: '/resources',
cover: '1-1',
router: {
path: '/resources',
name: 'resources',
component: e => require(['@/components/resources'], e),
}
}]
},
{
name: '', name: '',
value: '系统管理', value: '系统管理',
icon: 'icon-xitongquanxian', icon: 'icon-xitongquanxian',
...@@ -522,7 +541,25 @@ export default [{ ...@@ -522,7 +541,25 @@ export default [{
}, },
] ]
}, },
{
name: '',
value: '数据管理',
icon: 'icon-shezhi',
list: [
{ {
value: '渠道转化列表',
routerName: 'channelTransList',
path: '/channelTransList',
cover: '9-1',
router: {
path: '/channelTransList',
name: 'channelTransList',
component: e => require(['@/components/channelTransList'], e),
}
}
]
},
{
name: '', name: '',
value: '后台管理', value: '后台管理',
icon: 'icon-shezhi', icon: 'icon-shezhi',
...@@ -568,6 +605,7 @@ export default [{ ...@@ -568,6 +605,7 @@ export default [{
} }
}, },
{ {
value: '操作日志', value: '操作日志',
routerName: 'adminLog', routerName: 'adminLog',
...@@ -580,7 +618,7 @@ export default [{ ...@@ -580,7 +618,7 @@ export default [{
} }
} }
] ]
} }
] ]
// { // {
// name: '', // name: '',
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment