Commit 6db49bd1 authored by wangwei's avatar wangwei

菜单权限 按钮权限

parent 196c84f5
......@@ -5,12 +5,38 @@
</template>
<script>
import menu from './util/menuList'
export default {
name: 'App',
data(){
return {
}
},
mounted(){
let permission = this.$store.state.progressList;
let menuList = [];
this.$router.options.routes[0].children = [];
menu.forEach(i=>{
let p = false;
let t = [];
i.list.forEach(j=>{
let find = permission.find(x=>{return x.cover === j.cover});
if(find){
j.router.meta = {};
j.router.meta.readonly = find.readonly;
t.push(j);
this.$router.options.routes[0].children.push(j.router);
p = true;
}
});
if(p){
i.list = t;
menuList.push(i)
}
})
this.$router.addRoutes(this.$router.options.routes);//调用add
this.$store.dispatch('setMenu',menuList)
}
}
</script>
......
......@@ -7,20 +7,20 @@
<el-card class="box-card">
<div slot="header">
<span>盒子类型</span>
<el-button style="float: right; padding: 3px 0;" @click="onAddType" type="text">新增类型</el-button>
<el-button style="float: right; padding: 3px 0;" @click="onAddType" type="text" v-if="!$store.state.readonly">新增类型</el-button>
</div>
<el-card v-for="o in list" shadow="hover" :key="o.id" :class="{text:true,'now-card':o.id === nowId}">
<div class="name" @click="changeCateGory(o.id)">
{{o.name}}
</div>
<div class="btn-block">
<el-button type="primary" icon="el-icon-search" circle plain size="mini"></el-button>
<el-button type="warning" icon="el-icon-edit" circle plain size="mini"></el-button>
<el-button type="danger" icon="el-icon-delete" circle plain size="mini"></el-button>
<el-button type="primary" icon="el-icon-search" circle plain size="mini" v-if="!$store.state.readonly"></el-button>
<el-button type="warning" icon="el-icon-edit" circle plain size="mini" v-if="!$store.state.readonly"></el-button>
<el-button type="danger" icon="el-icon-delete" circle plain size="mini" v-if="!$store.state.readonly"></el-button>
</div>
</el-card>
</el-card>
<el-dialog title="新增盒子" :visible.sync="dialogVisible" :modal="false">
<el-dialog title="新增盒子" :visible.sync="dialogVisible" :modal="false" v-if="!$store.state.readonly">
<el-form label-width="100px">
<el-form-item label="名称">
<el-input v-model="form.name"></el-input>
......
......@@ -2,7 +2,7 @@
<div class="box-index">
<box-type-list @changeCategoryId="changeCategoryId"/>
<div class="add-block">
<el-button class="add-btn" type="success" @click="onAdd()">+新增盒子</el-button>
<el-button class="add-btn" type="success" @click="onAdd()" v-if="!$store.state.readonly">+新增盒子</el-button>
</div>
<el-row>
<el-col :span="5" v-for="(data, index) in list" :key="index" class="card-col">
......@@ -17,8 +17,8 @@
<el-tag size="mini">level{{data.min_level}}-level{{data.max_level}}</el-tag>
<el-tag type="success" size="mini">{{data.min_age}}-{{data.max_age}}</el-tag>
<div class="btn-block">
<el-button type="warning" icon="el-icon-edit" circle plain size="mini" @click="onEdit(data.id)"></el-button>
<el-button type="danger" icon="el-icon-delete" circle plain size="mini" @click="delBox(data.id)"></el-button>
<el-button type="warning" icon="el-icon-edit" circle plain size="mini" v-if="!$store.state.readonly" @click="onEdit(data.id)"></el-button>
<el-button type="danger" icon="el-icon-delete" circle plain size="mini" v-if="!$store.state.readonly" @click="delBox(data.id)"></el-button>
</div>
</div>
</div>
......
......@@ -27,7 +27,7 @@
</el-button>
</el-form-item>
<el-form-item style="float: right">
<el-button @click="onAdd" type="success">+添加班级</el-button>
<el-button @click="onAdd" type="success" v-if="!$store.state.readonly">+添加班级</el-button>
</el-form-item>
</el-form>
</div>
......@@ -70,8 +70,8 @@
label="操作">
<template slot-scope="scope">
<el-button @click="showUser(scope.row)" size="mini" type="primary">班级成员</el-button>
<el-button @click="editClass(scope.row)" size="mini" type="warning">编辑</el-button>
<el-button @click="delClass(scope.row)" size="mini" type="danger">删除</el-button>
<el-button @click="editClass(scope.row)" size="mini" v-if="!$store.state.readonly" type="warning">编辑</el-button>
<el-button @click="delClass(scope.row)" size="mini" v-if="!$store.state.readonly" type="danger">删除</el-button>
</template>
</el-table-column>
</el-table>
......
......@@ -3,7 +3,7 @@
<div>
<el-form label-width="90px" inline>
<el-form-item style="float: right">
<el-button type="success" @click="addShow = true">+添加用户</el-button>
<el-button type="success" @click="addShow = true" v-if="!$store.state.readonly">+添加用户</el-button>
</el-form-item>
</el-form>
<el-table
......@@ -29,7 +29,7 @@
{{ scope.row.is_view_course | isOrNot}}
</template>
</el-table-column>
<el-table-column label="操作">
<el-table-column label="操作" v-if="!$store.state.readonly">
<template slot-scope="scope">
<el-button type="warning" size="mini" @click="changeUser(scope.row)">更改看课权限</el-button>
<el-button type="danger" size="mini" @click="onDel(scope.row)">删除</el-button>
......
......@@ -28,7 +28,7 @@
cookie.delete('cc_token');
this.$store.dispatch('setToken','');
this.$store.dispatch('setUserName','');
this.$router.push({name:'login'})
window.location.href = '/#/login'
})
}).catch(() => {
......
......@@ -52,9 +52,11 @@
margin: 0;
padding: 0;
background: #f8f8f8;
.menu-block{
float: left;
height: 100%;
overflow: auto;
}
.content{
display: flex;
......@@ -67,6 +69,7 @@
position: absolute;
top: 0;
height: auto;
overflow-y: auto;
left: 0;
bottom:0;
right: 0;
......
......@@ -22,7 +22,7 @@
</el-form-item>
</el-col>
<el-col :span="4" :offset="8">
<el-button type="success" plain @click="add">新增课程</el-button>
<el-button type="success" plain @click="add" v-if="!$store.state.readonly">新增课程</el-button>
</el-col>
</el-row>
</el-form>
......@@ -56,6 +56,7 @@
label="实体包数量">
</el-table-column>
<el-table-column
v-if="!$store.state.readonly"
width="250"
label="操作">
<template slot-scope="scope">
......
......@@ -65,7 +65,8 @@
loginApi(json).then(res=>{
this.$store.dispatch('setToken',res.token);
this.$store.dispatch('setUserName',res.user_name);
this.$router.push({name:'resources'})
this.$store.dispatch('setPermission',JSON.parse(res.roles.menu_ids));
window.location.href = '/'
})
}
})
......
......@@ -2,14 +2,14 @@
<div>
<el-row type="flex" class="add-btn" justify="end">
<el-col :span="6">
<el-button type="success" plain @click="add">添加不上课日期</el-button>
<el-button type="success" plain @click="add" v-if="!$store.state.readonly">添加不上课日期</el-button>
</el-col>
</el-row>
<div class="card">
<el-card :body-style="{ padding: '0px' }" v-for="(currentDate, index) in list">
<el-card :body-style="{ padding: '0px' }" v-for="(currentDate, index) in list" :key="index">
<span class="time">{{ currentDate }}</span>
<div class="bottom clearfix">
<el-button type="text" class="button" @click="del(currentDate)">删除</el-button>
<el-button type="text" class="button" @click="del(currentDate)" v-if="!$store.state.readonly">删除</el-button>
</div>
</el-card>
</div>
......
......@@ -61,6 +61,7 @@
<el-table-column
label="操作"
min-width="80"
v-if="!$store.state.readonly"
>
<template slot-scope="scope">
<el-popover
......
......@@ -25,14 +25,11 @@
</el-option>
</el-select>
</el-form-item>
<!--<el-form-item>-->
<!--<el-button @click="onChoose" type="success">选择商品</el-button>-->
<!--</el-form-item>-->
<!--<el-form-item>-->
<el-form-item>
<el-button @click="onSearch" type="primary">查询</el-button>
</el-form-item>
<el-form-item style="float: left;margin-left: 20px;">
<el-button @click="onAdd" type="primary">添加期数</el-button>
<el-button @click="onAdd" type="primary" v-if="!$store.state.readonly">添加期数</el-button>
</el-form-item>
</el-form>
</div>
......@@ -98,7 +95,7 @@
<el-table-column
label="操作"
width="148">
<template slot-scope="scope">
<template slot-scope="scope" v-if="!$store.state.readonly">
<el-button size="mini" plain type="primary" @click="onEdit(scope.row)">
编辑
</el-button>
......
......@@ -88,6 +88,7 @@
</el-table-column>
<el-table-column
label="操作"
v-if="!$store.state.readonly"
>
<template slot-scope="scope">
<el-button
......
......@@ -55,6 +55,7 @@
<el-table-column
label="操作"
min-width="80"
v-if="!$store.state.readonly"
>
<template slot-scope="scope">
<el-button
......
......@@ -17,16 +17,18 @@
<el-container>
<el-aside width="150px">
<div class="page-list">
<div class="card-item" v-for="(data,index) in selectedMould" :key="index" @click="chooseThat(index)">
<div class="card-item" v-for="(data,index) in selectedMould" :key="index" >
<div class="list2-btn">
<i class="iconfont icon-shanchu" @click="delMould(index)"></i>
</div>
<div @click="chooseThat(index)">
<el-card shadow="hover" :class="nowIndex === index ? 'border' : ''" :body-style="{ padding: '0px' }">
<div class="dialog-card">
序号:{{index}}
</div>
<img :src="data.imgUrl" class="image">
</el-card>
</div>
</div>
</div>
</el-aside>
......@@ -57,8 +59,6 @@
</div>
<div class="title2-block">
<img :src="mouldImg.look1.title2" class="title2"/>
<img :src="mouldImg.look1.redM" class="redM"/>
<img :src="mouldImg.look1.flour" class="flour"/>
<div class="directory-text">
<div v-html="selectedMould[nowIndex].content.directory">
</div>
......@@ -127,7 +127,7 @@
<div class="icon-class">
<img :src="mouldImg.play1.play"/>
</div>
<video v-if="selectedMould[nowIndex].content.videoUrl.length > 0" :poster="selectedMould[nowIndex].content.banner[0] ? selectedMould[nowIndex].content.banner[0].url : '' " :src="selectedMould[nowIndex].content.videoUrl[0].url"></video>
<video style="width: 100%" v-if="selectedMould[nowIndex].content.videoUrl.length > 0" :poster="selectedMould[nowIndex].content.banner[0] ? selectedMould[nowIndex].content.banner[0].url : '' " :src="selectedMould[nowIndex].content.videoUrl[0].url"></video>
</div>
<img :src="mouldImg.play1.radio" class="radio-img"/>
<img :src="mouldImg.play1.backBtn" class="btn back"/>
......@@ -482,7 +482,7 @@
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer" style="text-align: center">
<el-button type="default" @click="selectedMould[nowIndex].content = {};dialogVisible = false">取消</el-button>
<!--<el-button type="default" @click="dialogVisible = false">取消</el-button>-->
<el-button type="primary" @click="dialogVisible = false">确 定</el-button>
</span>
</el-dialog>
......
......@@ -5,7 +5,7 @@
<el-menu
:default-active="index" v-loading="menuLoading">
<div style="padding: 5px">
<el-button type="success" plain round size="mini" style="width: 100%" @click="addFist()">
<el-button type="success" plain round size="mini" style="width: 100%" @click="addFist()" v-if="!$store.state.readonly">
+添加分类
</el-button>
</div>
......@@ -13,37 +13,37 @@
<template slot="title">
<span>
{{data.name}}({{data.children | lengthNum}})
<i class="iconfont icon-bianji" @click="editIndex(data)"></i>
<i class="iconfont icon-shanchu" @click="delIndex(data)"></i>
<i class="iconfont icon-bianji" @click="editIndex(data)" v-if="!$store.state.readonly"></i>
<i class="iconfont icon-shanchu" @click="delIndex(data)" v-if="!$store.state.readonly"></i>
</span>
</template>
<el-submenu v-if="data.children" class="list2" :index="item.name" v-for="item in data.children" :key="item.id">
<span slot="title">
{{item.name}}
<div class="btn-block list2-btn">
<i class="iconfont icon-shangyi" @click="upIndex(item,data.children)"></i>
<i class="iconfont icon-xiayi" @click="downIndex(item,data.children)"></i>
<i class="iconfont icon-bianji" @click="editIndex(item)"></i>
<i class="iconfont icon-shanchu" @click="delIndex(item)"></i>
<i class="iconfont icon-shangyi" @click="upIndex(item,data.children)" v-if="!$store.state.readonly"></i>
<i class="iconfont icon-xiayi" @click="downIndex(item,data.children)" v-if="!$store.state.readonly"></i>
<i class="iconfont icon-bianji" @click="editIndex(item)" v-if="!$store.state.readonly"></i>
<i class="iconfont icon-shanchu" @click="delIndex(item)" v-if="!$store.state.readonly"></i>
</div>
</span>
<div @click="chooseId(i)" v-for="i in item.children" :key="i.name">
<el-menu-item class="list3" :index="i.name">
{{i.name}}
<div class="btn-block list3-btn">
<i class="iconfont icon-shangyi" @click="upIndex(i,item.children)"></i>
<i class="iconfont icon-xiayi" @click="downIndex(i,item.children)"></i>
<i class="iconfont icon-bianji" @click="editIndex(i)"></i>
<i class="iconfont icon-shanchu" @click="delIndex(i)"></i>
<i class="iconfont icon-shangyi" @click="upIndex(i,item.children)" v-if="!$store.state.readonly"></i>
<i class="iconfont icon-xiayi" @click="downIndex(i,item.children)" v-if="!$store.state.readonly"></i>
<i class="iconfont icon-bianji" @click="editIndex(i)" v-if="!$store.state.readonly"></i>
<i class="iconfont icon-shanchu" @click="delIndex(i)" v-if="!$store.state.readonly"></i>
</div>
</el-menu-item>
</div>
<el-menu-item class="list3" index="new">
<el-button type="success" round size="mini" plain style="width: 100%" @click="addItem(item.id)">+添加三级分类</el-button>
<el-button type="success" round size="mini" plain style="width: 100%" @click="addItem(item.id)" v-if="!$store.state.readonly">+添加三级分类</el-button>
</el-menu-item>
</el-submenu>
<el-menu-item class="list3" index="new">
<el-button type="success" round size="mini" plain style="width: 100%" @click="addSec(data.id)">+添加二级分类</el-button>
<el-button type="success" round size="mini" plain style="width: 100%" @click="addSec(data.id)" v-if="!$store.state.readonly">+添加二级分类</el-button>
</el-menu-item>
</el-submenu>
</el-menu>
......@@ -196,7 +196,7 @@
}
},
mounted(){
this.getList()
this.getList();
}
}
</script>
......
<template>
<div>
<div class="add-block" v-if="id && list.length === 0">
<el-button round type="success" @click="onAdd">+新增课时</el-button>
<el-button round type="success" @click="onAdd" v-if="!$store.state.readonly">+新增课时</el-button>
</div>
<el-card v-for="data in list" :key="data.id" class="box-card">
<div class="id">
......
......@@ -14,7 +14,7 @@
</el-col>
<el-col :span="4" :offset="12">
<el-form-item>
<el-button type="success" plain @click="add">添加商品</el-button>
<el-button type="success" plain @click="add" v-if="!$store.state.readonly">添加商品</el-button>
</el-form-item>
</el-col>
</el-row>
......@@ -72,6 +72,7 @@
</el-table-column>
<el-table-column
width="200"
v-if="!$store.state.readonly"
label="操作">
<template slot-scope="scope">
<el-popover
......
......@@ -23,7 +23,7 @@
</el-col>
<el-col :span="4">
<el-form-item>
<el-button type="success" plain size="small" @click="onAdd">
<el-button type="success" plain size="small" @click="onAdd" v-if="!$store.state.readonly">
添加单品
</el-button>
</el-form-item>
......@@ -53,6 +53,7 @@
</el-table-column>
<el-table-column
width="200"
v-if="!$store.state.readonly"
label="操作">
<template slot-scope="scope">
<el-button size="mini" plain type="warning" @click="edit(scope.row)">
......
<template>
<div class="admin">
<div class="head clear-both">
<el-button @click="add" plain type="success" style="float: right">新增角色</el-button>
<el-button @click="add" plain type="success" style="float: right" v-if="!$store.state.readonly">新增角色</el-button>
</div>
<el-table
:data="adminList"
......@@ -25,6 +25,7 @@
</template>
</el-table-column>
<el-table-column
v-if="!$store.state.readonly"
label="操作">
<template slot-scope="scope">
<el-popover
......@@ -99,7 +100,7 @@
import {getAdminListApi,editAdminListApi,addAdminListApi,delAdminListApi,editPasswordApi,getRoleListApi} from "../../service/api";
import {ADMINSTATUS} from "../../util/wordbook";
import page from '../framework/page'
import md5 from 'js-md5';
export default {
name: "admin",
components:{
......@@ -281,7 +282,7 @@
let json = {
role_id:dia.form.role_id,
desc:dia.form.desc,
passwd:dia.form.password,
passwd:md5(dia.form.password),
username:dia.form.username
};
addAdminListApi(json).then(()=>{
......@@ -295,7 +296,7 @@
}else if(dia.dialogType === 2){
console.log(1)
let json = {
passwd_new:dia.form.password
passwd_new:md5(dia.form.password)
}
editPasswordApi(dia.form.id,json).then(()=>{
this.$message({
......
<template>
<div class="banner" v-loading="loading">
<div class="head clear-both">
<el-button @click="add" plain type="success" style="float: right">新增banner</el-button>
<el-button @click="add" plain type="success" style="float: right" v-if="!$store.state.readonly">新增banner</el-button>
</div>
<el-table
:data="bannerList"
......@@ -29,6 +29,7 @@
</el-table-column>
<el-table-column
label="操作"
v-if="!$store.state.readonly"
width="100">
<template slot-scope="scope">
<el-popover
......
<template>
<div class="menu">
<div class="head clear-both">
<el-button @click="add" plain type="success" style="float: right">新增菜单</el-button>
<el-button @click="add" plain type="success" style="float: right" v-if="!$store.state.readonly">新增菜单</el-button>
</div>
<el-table
:data="menuList"
style="width: 100%">
<el-table-column
prop="id"
label="菜单ID">
prop="name"
label="菜单名称">
</el-table-column>
<el-table-column
prop="cover"
label="菜单Code">
</el-table-column>
<el-table-column
prop="name"
label="菜单名称">
</el-table-column>
<el-table-column
v-if="!$store.state.readonly"
label="操作">
<template slot-scope="scope">
<el-button size="mini" plain type="primary" @click="edit(scope.row)">
......@@ -43,6 +40,20 @@
<el-form-item label="菜单Code" prop="cover">
<el-input v-model="dialog.form.cover"></el-input>
</el-form-item>
<el-form-item label="上级菜单" prop="cover">
<el-select v-model="dialog.form.pid" placeholder="请选择">
<el-option
label="无"
:value="0">
</el-option>
<el-option
v-for="item in plist"
:key="item.id"
:label="item.name"
:value="item.id">
</el-option>
</el-select>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="dialog.show = false">取 消</el-button>
......@@ -56,12 +67,12 @@
import {getMenuListApi,saveMenuApi,delMenuApi,updateMenuApi} from "../../service/api";
export default {
name: "menu",
data(){
return {
nowPage:1,
total:0,
menuList:[],
plist:[],
dialog:{
title:'新增菜单',
show:false,
......@@ -90,7 +101,17 @@
getList(){
getMenuListApi().then(res=>{
if (res) {
this.menuList = res
this.menuList = [];
this.plist = [];
res.forEach(i=>{
this.menuList.push(i);
this.plist.push(i);
if(i.children){
i.children.forEach(j=>{
this.menuList.push(j);
})
}
})
}
})
},
......@@ -100,7 +121,7 @@
this.dialog.title = '编辑菜单';
this.dialog.form.name = data.name;
this.dialog.form.cover = data.cover;
this.dialog.form.pid = 0;
this.dialog.form.pid = data.pid;
},
add(){
this.dialog.show = true;
......@@ -170,7 +191,6 @@
.head{
padding: 5px;
}
width: 100%;
padding: 10px;
.page-div{
text-align: center;
......
<template>
<div class="role">
<div class="head clear-both">
<el-button @click="add" plain type="success" style="float: right">新增角色</el-button>
<el-button @click="add" plain type="success" style="float: right" v-if="!$store.state.readonly">新增角色</el-button>
</div>
<el-table
:data="roleList"
......@@ -14,15 +14,12 @@
prop="name"
label="角色名称">
</el-table-column>
<el-table-column
prop="menu_ids"
label="菜单IDs">
</el-table-column>
<el-table-column
prop="created_at"
label="创建时间">
</el-table-column>
<el-table-column
v-if="!$store.state.readonly"
label="操作">
<template slot-scope="scope">
<el-button size="mini" plain type="primary" @click="edit(scope.row)">
......@@ -38,22 +35,32 @@
<el-dialog
:title="dialog.title"
center
append-to-body
:visible.sync="dialog.show"
width="30%">
<el-form ref="form" :rules="dialog.rules" :model="dialog.form" label-width="100px">
<el-form-item label="菜单名称" prop="name">
<el-form-item label="角色名称" prop="name">
<el-input v-model="dialog.form.name"></el-input>
</el-form-item>
<el-form-item label="菜单选项" prop="menu_ids">
<el-select v-model="dialog.form.menu_ids" multiple placeholder="请选择">
<el-option
v-for="item in dialog.select"
:key="item.id"
:label="item.name"
:value="item.id">
</el-option>
</el-select>
<el-form-item label="菜单选项">
<div class="custom-tree-container">
<el-tree :data="dialog.select"
show-checkbox
node-key="id"
ref="tree"
:default-checked-keys="dialog.chooseed"
default-expand-all
:expand-on-click-node="false"
:props="{children:'children',label:'name',value:false}">
<span class="custom-tree-node" slot-scope="{ node, data }">
<span>{{ node.label }}</span>
<span v-if="data.pid !== 0">
<el-checkbox v-model="data.readonly">只读</el-checkbox>
</span>
</span>
</el-tree>
</div>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
......@@ -68,7 +75,6 @@
import {getMenuListApi,getRoleListApi,getRoleDetailApi,delRoleApi,updateRoleApi,saveRoleApi} from "../../service/api";
import page from '../framework/page'
export default {
name: "menu",
components:{
page
},
......@@ -81,13 +87,11 @@
title:'新增角色',
show:false,
select:[],
chooseed:[],
rules: {
name: [
{required: true, message: '请填写角色名称', trigger: 'change'},
],
menu_ids: [
{required: true, message: '请选择菜单', trigger: 'change'},
]
},
form:{
name:'',
......@@ -98,12 +102,20 @@
}
},
created(){
this.getList()
this.getList();
this.getMenuList()
},
methods:{
getMenuList(){
getMenuListApi().then(res=>{
if (res) {
res.forEach(i=>{
if(i.children){
i.children.forEach(j=>{
j.readonly= false
})
}
});
this.dialog.select = res
}
})
......@@ -121,11 +133,21 @@
this.dialog.title = '编辑角色';
this.getMenuList();
getRoleDetailApi(data.id).then((res)=>{
this.dialog.form.name = res.name
let _ids = res.menu_ids.split(',').map((item)=>{
return parseInt(item);
})
this.dialog.form.menu_ids = _ids
this.dialog.form.name = res.name;
this.dialog.form.menu_ids = JSON.parse(res.menu_ids);
this.dialog.chooseed = [];
this.dialog.form.menu_ids.forEach(i=>{
this.dialog.chooseed .push(i.id);
this.dialog.select.forEach(j=>{
if(j.children){
j.children.forEach(x=>{
if(x.id===i.id){
x.readonly = i.readonly
}
})
}
})
});
this.dialog.show = true;
})
},
......@@ -133,7 +155,7 @@
this.dialog.show = true;
this.dialog.form.id = '';
this.dialog.title = '新增菜单';
this.dialog.form.name = ''
this.dialog.form.name = '';
this.dialog.form.menu_ids = [];
this.getMenuList();
},
......@@ -155,11 +177,18 @@
sub(){
this.$refs['form'].validate((valid) => {
if(valid){
let checked = this.$refs.tree.getCheckedNodes();
let menu_ids = [];
checked.forEach(i=>{
if(i.readonly === false || i.readonly === true){
menu_ids.push({id:i.id,cover:i.cover,readonly:i.readonly})
}
});
let dia = this.dialog;
if(dia.form.id){
let json = {
name:dia.form.name,
menu_ids:dia.form.menu_ids.join(',')
menu_ids:JSON.stringify(menu_ids)
};
updateRoleApi(dia.form.id,json).then(()=>{
this.$message({
......@@ -172,7 +201,7 @@
}else{
let json = {
name:dia.form.name,
menu_ids:dia.form.menu_ids.join(',')
menu_ids:JSON.stringify(menu_ids)
};
saveRoleApi(json).then(()=>{
this.$message({
......@@ -191,6 +220,14 @@
</script>
<style scoped lang="less">
.custom-tree-node {
flex: 1;
display: flex;
align-items: center;
justify-content: space-between;
font-size: 14px;
padding-right: 8px;
}
.role{
.head{
padding: 5px;
......
<template>
<div class="sys">
<div class="clear-both top">
<el-button type="success" plain @click="add" style="float: right">添加配置</el-button>
<el-button type="success" plain @click="add" style="float: right" v-if="!$store.state.readonly">添加配置</el-button>
</div>
<el-table
:data="list"
......@@ -39,6 +39,7 @@
</el-table-column>
<el-table-column
width="250"
v-if="!$store.state.readonly"
label="操作">
<template slot-scope="scope">
<el-button size="mini" plain type="warning" @click="edit(scope.row)">
......
......@@ -2,7 +2,7 @@
<div>
<el-row type="flex" class="add-btn" justify="end">
<el-col :span="6" style="text-align: right;">
<el-button type="success" plain @click="add">添加回复</el-button>
<el-button type="success" plain @click="add" v-if="!$store.state.readonly">添加回复</el-button>
</el-col>
</el-row>
<el-table
......@@ -40,6 +40,7 @@
</el-table-column>
<el-table-column
width="250"
v-if="!$store.state.readonly"
label="操作">
<template slot-scope="scope">
<el-button size="mini" plain type="warning" @click="edit(scope.row)">
......
......@@ -2,7 +2,7 @@
<div class="focus-reply">
<div class="clear-both top">
<span class="title">自动回复</span>
<el-button type="success" plain style="float: right" @click="add">添加回复</el-button>
<el-button type="success" plain style="float: right" @click="add" v-if="!$store.state.readonly">添加回复</el-button>
</div>
<el-table
:data="list"
......@@ -30,6 +30,7 @@
<el-table-column
fixed="right"
label="操作"
v-if="!$store.state.readonly"
width="200">
<template slot-scope="scope">
<el-button
......
......@@ -35,7 +35,7 @@
:show-file-list="false"
:data="uploadParam">
<!--:on-success="handleUploadSuccess"-->
<el-button style="order:2;" slot="trigger" size="small" type="primary">选取文件</el-button>
<el-button style="order:2;" slot="trigger" size="small" type="primary" v-if="!$store.state.readonly">选取文件</el-button>
<!--<div slot="tip" class="el-upload__tip">大小不超过5M</div>-->
</el-upload>
</div>
......
......@@ -7,14 +7,6 @@ Vue.use(Router);
const router =new Router({
routes: [
{
path:'/login',
name:'login',
component: e=>require(['@/components/login'],e),
meta:{
skip_auth:true,
}
},
{
path: '/',
name: 'index',
......@@ -25,122 +17,25 @@ const router =new Router({
path: '',
name:'first',
component: e=>require(['@/components/main'],e),
},{
path: '/help',
name:'help',
component: e=>require(['@/components/help'],e),
},{
path: '/putForward',
name:'putForward',
component: e=>require(['@/components/putForward'],e),
},{
path: '/refund',
name:'refund',
component: e=>require(['@/components/refund'],e),
},{
path: '/noLesson',
name:'noLesson',
component: e=>require(['@/components/noLesson'],e),
},{
path: '/banner',
name:'banner',
component: e=>require(['@/components/system/banner'],e),
},{
path: '/weChatResource',
name:'weChatResource',
component: e=>require(['@/components/weChat/weChatResource'],e),
},{
path: '/menu',
name:'menu',
component: e=>require(['@/components/system/menu'],e),
},{
path: '/focusReply',
name:'focusReply',
component: e=>require(['@/components/weChat/focusReply'],e),
},{
path: '/weChat',
name:'weChat',
component: e=>require(['@/components/weChat'],e),
},{
path: '/autoReply',
name:'autoReply',
component: e=>require(['@/components/weChat/autoReply'],e),
},{
path: '/resources',
name:'resources',
component: e=>require(['@/components/resources'],e),
},{
path: '/periods',
name:'periods',
component: e=>require(['@/components/periods'],e),
},{
path: '/shop',
name:'shop',
component: e=>require(['@/components/shop'],e),
},{
path: '/consignment',
name:'consignment',
component: e=>require(['@/components/consignment'],e),
},{
path: '/single',
name:'single',
component: e=>require(['@/components/single'],e),
},{
path: '/box',
name:'box',
component: e=>require(['@/components/box'],e),
},{
path: '/lesson',
name:'lesson',
component: e=>require(['@/components/lesson'],e),
},{
path: '/user',
name:'user',
component: e=>require(['@/components/user'],e),
},{
path: '/teacher',
name:'teacher',
component: e=>require(['@/components/teacher'],e),
},{
path: '/admin',
name:'admin',
component: e=>require(['@/components/system/admin'],e),
},{
path: '/role',
name:'role',
component: e=>require(['@/components/system/role'],e),
},
{
path: '/class',
name:'class',
component: e=>require(['@/components/class'],e),
},{
path: '/order',
name:'order',
component: e=>require(['@/components/order'],e),
},{
path: '/sysConfig',
name:'sysConfig',
component: e=>require(['@/components/system/sysConfig'],e),
},
{
path: '/userOrder/:id',
name:'userOrder',
component: e=>require(['@/components/userOrder'],e),
},
{
path: '/teacher/:id',
name:'teacherDetail',
component: e=>require(['@/components/teacherDetail'],e),
},
}
]
}
},
{
path:'/login',
name:'login',
component: e=>require(['@/components/login'],e),
meta:{
skip_auth:true,
}
},
]
});
router.beforeEach((to,from,next)=> {
store.commit('mainCanShow');
if(Cookie.get('cc_token')){
store.dispatch('setToken',Cookie.get('cc_token'));
store.dispatch('setPermission',JSON.parse(localStorage.getItem('permission')));
if(Cookie.get('cc_user_name') !== null){
store.dispatch('setUserName',Cookie.get('cc_user_name'))
}else{
......@@ -162,11 +57,16 @@ router.beforeEach((to,from,next)=> {
store.state.openedTab.push(thisMenu);
}
}
if(to.meta.readonly){
store.dispatch('readonly',true)
}else{
store.dispatch('readonly',false)
}
// 登录拦截
if (to.matched.some(record => record.meta.skip_auth !== true) && !store.state.token) {
next({
path: '/login'
})
window.location.href = '/#/login'
} else {
next()
}
......
......@@ -11,4 +11,13 @@ export default{
setProgress({commit},data){
commit('progress',data);
},
setPermission({commit},data){
commit('setPermission',data)
},
setMenu({commit},data){
commit('setMenu',data)
},
readonly({commit},data){
commit('readonly',data)
}
}
import Vue from 'vue'
import vuex from 'vuex'
import menu from '../util/menuList'
import mutations from './mutations'
import actions from './actions'
Vue.use(vuex);
......@@ -10,8 +9,10 @@ export default new vuex.Store({
show:false,
userName:'',
token:'',
permission:false,
readonly:true,
mainLoad:true,
menuList:menu,
menuList:[],
menuType:false,
nowTab:'first',
progressList:[],
......
......@@ -11,6 +11,16 @@ const mutations={
state.userName=userName;
Cookie.set('cc_user_name',userName);
},
setPermission(state,data){
state.progressList=data;
localStorage.setItem('permission',JSON.stringify(data))
},
setMenu(state,data){
state.menuList=data;
},
readonly(state,data){
state.readonly=data;
},
mainCanShow(state){
state.mainLoad = false
},
......
......@@ -7,7 +7,13 @@ export default [
{
value:'教材列表',
routerName:'resources',
path:'/resources'
path:'/resources',
cover:'1-1',
router:{
path: '/resources',
name:'resources',
component: e=>require(['@/components/resources'],e),
}
}
]
},{
......@@ -18,22 +24,46 @@ export default [
{
value:'课程列表',
routerName:'lesson',
path:'/lesson'
path:'/lesson',
cover:'2-1',
router:{
path: '/lesson',
name:'lesson',
component: e=>require(['@/components/lesson'],e),
}
},
{
value:'期数列表',
routerName:'periods',
path:'/periods'
path:'/periods',
cover:'2-2',
router:{
path: '/periods',
name:'periods',
component: e=>require(['@/components/periods'],e),
}
},
{
value:'班级列表',
routerName:'class',
path:'/class'
path:'/class',
cover:'2-3',
router:{
path: '/class',
name:'class',
component: e=>require(['@/components/class'],e),
}
},
{
value:'不上课日期',
routerName:'noLesson',
path:'/noLesson'
path:'/noLesson',
cover:'2-4',
router:{
path: '/noLesson',
name:'noLesson',
component: e=>require(['@/components/noLesson'],e),
}
},
]
},{
......@@ -44,12 +74,24 @@ export default [
{
value:'教师列表',
routerName:'teacher',
path:'/teacher'
path:'/teacher',
cover:'3-1',
router:{
path: '/teacher',
name:'teacher',
component: e=>require(['@/components/teacher'],e),
}
},
{
value:'用户列表',
routerName:'user',
path:'/user'
path:'/user',
cover:'3-2',
router:{
path: '/user',
name:'user',
component: e=>require(['@/components/user'],e),
}
}
]
},{
......@@ -60,7 +102,13 @@ export default [
{
value:'商品列表',
routerName:'shop',
path:'/shop'
path:'/shop',
cover:'4-1',
router:{
path: '/shop',
name:'shop',
component: e=>require(['@/components/shop'],e),
}
}
]
},{
......@@ -71,20 +119,44 @@ export default [
{
value:'订单列表',
routerName:'order',
path:'/order'
path:'/order',
cover:'5-1',
router:{
path: '/order',
name:'order',
component: e=>require(['@/components/order'],e),
}
},{
value:'退款列表',
routerName:'refund',
path:'/refund'
path:'/refund',
cover:'5-2',
router:{
path: '/refund',
name:'refund',
component: e=>require(['@/components/refund'],e),
}
},{
value:'提现列表',
routerName:'putForward',
path:'/putForward'
path:'/putForward',
cover:'5-3',
router:{
path: '/putForward',
name:'putForward',
component: e=>require(['@/components/putForward'],e),
}
},
{
value:'发货管理',
routerName:'consignment',
path:'/consignment'
path:'/consignment',
cover:'5-4',
router:{
path: '/consignment',
name:'consignment',
component: e=>require(['@/components/consignment'],e),
}
}
]
},{
......@@ -95,12 +167,24 @@ export default [
{
value:'单品列表',
routerName:'single',
path:'/single'
path:'/single',
cover:'6-1',
router:{
path: '/single',
name:'single',
component: e=>require(['@/components/single'],e),
}
},
{
value:'盒子列表',
routerName:'box',
path:'/box'
path:'/box',
cover:'6-2',
router:{
path: '/box',
name:'box',
component: e=>require(['@/components/box'],e),
}
}
]
},{
......@@ -111,27 +195,57 @@ export default [
{
value:'关注自动回复',
routerName:'focusReply',
path:'/focusReply'
path:'/focusReply',
cover:'7-1',
router:{
path: '/focusReply',
name:'focusReply',
component: e=>require(['@/components/weChat/focusReply'],e),
}
},
{
value:'关键词回复',
routerName:'autoReply',
path:'/autoReply'
path:'/autoReply',
cover:'7-2',
router:{
path: '/autoReply',
name:'autoReply',
component: e=>require(['@/components/weChat/autoReply'],e),
}
},
{
value:'公众号菜单',
routerName:'weChat',
path:'/weChat'
path:'/weChat',
cover:'7-3',
router:{
path: '/weChat',
name:'weChat',
component: e=>require(['@/components/weChat'],e),
}
},
{
value:'素材管理',
routerName:'weChatResource',
path:'/weChatResource'
path:'/weChatResource',
cover:'7-4',
router:{
path: '/weChatResource',
name:'weChatResource',
component: e=>require(['@/components/weChat/weChatResource'],e),
}
},
{
value:'Banner管理',
routerName:'banner',
path:'/banner'
path:'/banner',
cover:'7-5',
router:{
path: '/banner',
name:'banner',
component: e=>require(['@/components/system/banner'],e),
}
}
]
},{
......@@ -142,19 +256,43 @@ export default [
{
value:'账号管理',
routerName:'admin',
path:'/admin'
path:'/admin',
cover:'8-1',
router:{
path: '/admin',
name:'admin',
component: e=>require(['@/components/system/admin'],e),
}
},{
value:'角色管理',
routerName:'role',
path:'/role'
path:'/role',
cover:'8-2',
router:{
path: '/role',
name:'role',
component: e=>require(['@/components/system/role'],e),
}
},{
value:'菜单管理',
routerName:'menu',
path:'/menu'
path:'/menu',
cover:'8-3',
router:{
path: '/menu',
name:'menu',
component: e=>require(['@/components/system/menu'],e),
}
},{
value:'系统配置',
routerName:'sysConfig',
path:'/sysConfig'
path:'/sysConfig',
cover:'8-4',
router:{
path: '/sysConfig',
name:'sysConfig',
component: e=>require(['@/components/system/sysConfig'],e),
}
}
]
}
......
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