This commit is contained in:
parent
d4a27b99f2
commit
0e9f1bf06b
|
|
@ -15,5 +15,5 @@
|
||||||
.el-drawer__body {overflow: auto;}
|
.el-drawer__body {overflow: auto;}
|
||||||
.el-popconfirm__main {margin: 14px 0;}
|
.el-popconfirm__main {margin: 14px 0;}
|
||||||
.el-card__header {border-bottom: 0}
|
.el-card__header {border-bottom: 0}
|
||||||
.el-tree-node__content {height:36px;}
|
.el-tree.menu .el-tree-node__content {height:36px;}
|
||||||
.el-input-number__decrease, .el-input-number__increase {top:2px;}
|
.el-input-number__decrease, .el-input-number__increase {top:2px;}
|
||||||
|
|
@ -22,6 +22,14 @@
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
activities: [
|
activities: [
|
||||||
|
{
|
||||||
|
content: [
|
||||||
|
"[优化] 控制台自由布局开关",
|
||||||
|
"[优化] 增加菜单管理新增和删除",
|
||||||
|
'[优化] 角色管理增加权限配置'
|
||||||
|
],
|
||||||
|
timestamp: '2021-05-17'
|
||||||
|
},
|
||||||
{
|
{
|
||||||
content: [
|
content: [
|
||||||
"[新增] 组件sortablejs",
|
"[新增] 组件sortablejs",
|
||||||
|
|
|
||||||
|
|
@ -1,14 +1,17 @@
|
||||||
<template>
|
<template>
|
||||||
|
<div class="diy-grid-setting" @click.stop="setting">
|
||||||
|
<i class="el-icon-setting"></i>
|
||||||
|
</div>
|
||||||
<div class="diy-grid-layout">
|
<div class="diy-grid-layout">
|
||||||
<el-row :gutter="15">
|
<el-row :gutter="15">
|
||||||
<el-col v-for="(item, index) in grid.layout" v-bind:key="index" :md="item" :xs="24">
|
<el-col v-for="(item, index) in grid.layout" v-bind:key="index" :md="item" :xs="24">
|
||||||
<draggable v-model="grid.copmsList[index]" :disabled="false" animation="200" handle=".el-card__header" group="people" @end="end" item-key="com">
|
<draggable v-model="grid.copmsList[index]" :disabled="!isDiy" animation="200" handle=".el-card__header" group="people" @end="end" item-key="com">
|
||||||
<template #item="{ element }">
|
<template #item="{ element }">
|
||||||
<div>
|
<div>
|
||||||
<el-card shadow="hover" style="margin-bottom:15px;">
|
<el-card shadow="hover" style="margin-bottom:15px;" :class="isDiy?'move':''">
|
||||||
<template #header>
|
<template #header>
|
||||||
<span>{{element.title}}</span>
|
<span>{{element.title}}</span>
|
||||||
<el-dropdown trigger="click">
|
<el-dropdown trigger="click" v-if="isDiy">
|
||||||
<span class="el-dropdown-link">
|
<span class="el-dropdown-link">
|
||||||
<i class="el-icon-menu"></i>
|
<i class="el-icon-menu"></i>
|
||||||
</span>
|
</span>
|
||||||
|
|
@ -86,6 +89,15 @@
|
||||||
</template>
|
</template>
|
||||||
</el-dialog>
|
</el-dialog>
|
||||||
|
|
||||||
|
<el-drawer title="布局设置" v-model="settingDialog" :size="300" destroy-on-close>
|
||||||
|
<el-form ref="form" label-width="120px" label-position="left" style="padding:0 20px;">
|
||||||
|
<el-form-item label="自由拖拽">
|
||||||
|
<el-switch v-model="isDiy"></el-switch>
|
||||||
|
</el-form-item>
|
||||||
|
<el-divider></el-divider>
|
||||||
|
</el-form>
|
||||||
|
</el-drawer>
|
||||||
|
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -102,6 +114,8 @@
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
|
settingDialog: false,
|
||||||
|
isDiy: false,
|
||||||
allComps: allComps,
|
allComps: allComps,
|
||||||
allCompsList: [],
|
allCompsList: [],
|
||||||
showPush: false,
|
showPush: false,
|
||||||
|
|
@ -211,17 +225,24 @@
|
||||||
backDefaul(){
|
backDefaul(){
|
||||||
this.grid = JSON.parse(JSON.stringify(this.defaultGrid));
|
this.grid = JSON.parse(JSON.stringify(this.defaultGrid));
|
||||||
this.$TOOL.data.remove("grid");
|
this.$TOOL.data.remove("grid");
|
||||||
|
},
|
||||||
|
//设置
|
||||||
|
setting(){
|
||||||
|
this.settingDialog = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style>
|
<style>
|
||||||
|
.diy-grid-setting {position: fixed;width:40px;height:40px;border-radius: 3px 0 0 3px;bottom:40px;right:0px;z-index: 100;background: #409EFF;display: flex;flex-direction: column;align-items: center;justify-content: center;cursor: pointer;}
|
||||||
|
.diy-grid-setting i {font-size: 18px;color: #fff;}
|
||||||
|
|
||||||
|
.diy-grid-layout .el-card.move .el-card__header {cursor: move;}
|
||||||
.diy-grid-layout .el-card__header {
|
.diy-grid-layout .el-card__header {
|
||||||
display: flex;
|
display: flex;
|
||||||
justify-content: space-between;
|
justify-content: space-between;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
cursor: move;
|
|
||||||
}
|
}
|
||||||
.diy-grid-layout .el-card__header .el-dropdown-link {
|
.diy-grid-layout .el-card__header .el-dropdown-link {
|
||||||
color: #999;
|
color: #999;
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@
|
||||||
<el-input placeholder="输入关键字进行过滤" v-model="dicFilterText" clearable></el-input>
|
<el-input placeholder="输入关键字进行过滤" v-model="dicFilterText" clearable></el-input>
|
||||||
</el-header>
|
</el-header>
|
||||||
<el-main class="nopadding">
|
<el-main class="nopadding">
|
||||||
<el-tree ref="dic" node-key="id" :data="dicList" :props="dicProps" :highlight-current="true" :expand-on-click-node="false" :filter-node-method="dicFilterNode" @node-click="dicClick">
|
<el-tree ref="dic" class="menu" node-key="id" :data="dicList" :props="dicProps" :highlight-current="true" :expand-on-click-node="false" :filter-node-method="dicFilterNode" @node-click="dicClick">
|
||||||
<template #default="{node, data}">
|
<template #default="{node, data}">
|
||||||
<span class="custom-tree-node">
|
<span class="custom-tree-node">
|
||||||
<span class="label">{{ node.label }}</span>
|
<span class="label">{{ node.label }}</span>
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@
|
||||||
<el-input placeholder="输入关键字进行过滤" v-model="menuFilterText" clearable></el-input>
|
<el-input placeholder="输入关键字进行过滤" v-model="menuFilterText" clearable></el-input>
|
||||||
</el-header>
|
</el-header>
|
||||||
<el-main class="nopadding">
|
<el-main class="nopadding">
|
||||||
<el-tree ref="menu" node-key="name" :data="menuList" :props="menuProps" highlight-current :expand-on-click-node="false" check-strictly show-checkbox :filter-node-method="menuFilterNode" @node-click="menuClick">
|
<el-tree ref="menu" class="menu" node-key="name" :data="menuList" :props="menuProps" highlight-current :expand-on-click-node="false" check-strictly show-checkbox :filter-node-method="menuFilterNode" @node-click="menuClick">
|
||||||
|
|
||||||
<template #default="{node, data}">
|
<template #default="{node, data}">
|
||||||
<span class="custom-tree-node">
|
<span class="custom-tree-node">
|
||||||
|
|
@ -19,6 +19,10 @@
|
||||||
|
|
||||||
</el-tree>
|
</el-tree>
|
||||||
</el-main>
|
</el-main>
|
||||||
|
<el-footer style="height:51px;">
|
||||||
|
<el-button type="primary" size="mini" icon="el-icon-plus" @click="add()"></el-button>
|
||||||
|
<el-button type="danger" size="mini" plain icon="el-icon-delete" @click="delMenu"></el-button>
|
||||||
|
</el-footer>
|
||||||
</el-container>
|
</el-container>
|
||||||
</el-aside>
|
</el-aside>
|
||||||
<el-container>
|
<el-container>
|
||||||
|
|
@ -30,6 +34,7 @@
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
|
let newMenuIndex = 1;
|
||||||
import save from './save'
|
import save from './save'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
|
|
@ -74,8 +79,41 @@
|
||||||
return targetText.indexOf(value) !== -1;
|
return targetText.indexOf(value) !== -1;
|
||||||
},
|
},
|
||||||
//增加
|
//增加
|
||||||
add(node, data){
|
add(node){
|
||||||
console.log(node, data);
|
var newMenuName = "未命名" + newMenuIndex++;
|
||||||
|
var newMenuData = {
|
||||||
|
name: newMenuName,
|
||||||
|
path: "",
|
||||||
|
component: "",
|
||||||
|
meta:{
|
||||||
|
title: newMenuName,
|
||||||
|
type: "menu"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(node){
|
||||||
|
this.$refs.menu.append(newMenuData, node)
|
||||||
|
var lastNode = node.childNodes[node.childNodes.length-1]
|
||||||
|
this.$refs.menu.setCurrentKey(lastNode.data.name)
|
||||||
|
var pid = node.data.name;
|
||||||
|
this.$refs.save.setData(newMenuData, pid)
|
||||||
|
}else{
|
||||||
|
this.$refs.menu.append(newMenuData)
|
||||||
|
var newNode = this.menuList[this.menuList.length-1]
|
||||||
|
this.$refs.menu.setCurrentKey(newNode.name)
|
||||||
|
this.$refs.save.setData(newMenuData)
|
||||||
|
}
|
||||||
|
|
||||||
|
},
|
||||||
|
//删除菜单
|
||||||
|
delMenu(){
|
||||||
|
var CheckedNodes = this.$refs.menu.getCheckedNodes()
|
||||||
|
if(CheckedNodes.length == 0){
|
||||||
|
this.$message.warning("请选择需要删除的项")
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
CheckedNodes.forEach(item => {
|
||||||
|
this.$refs.menu.remove(item)
|
||||||
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -83,6 +121,8 @@
|
||||||
|
|
||||||
<style scoped>
|
<style scoped>
|
||||||
.custom-tree-node {display: flex;flex: 1;align-items: center;justify-content: space-between;font-size: 14px;padding-right: 24px;height:100%;}
|
.custom-tree-node {display: flex;flex: 1;align-items: center;justify-content: space-between;font-size: 14px;padding-right: 24px;height:100%;}
|
||||||
|
.custom-tree-node .label {display: flex;align-items: center;;height: 100%;}
|
||||||
|
.custom-tree-node .label .el-tag {margin-left: 5px;}
|
||||||
.custom-tree-node .do {display: none;}
|
.custom-tree-node .do {display: none;}
|
||||||
.custom-tree-node .do i {margin-left:5px;color: #999;padding:5px;}
|
.custom-tree-node .do i {margin-left:5px;color: #999;padding:5px;}
|
||||||
.custom-tree-node .do i:hover {color: #333;}
|
.custom-tree-node .do i:hover {color: #333;}
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@
|
||||||
<div class="left-panel">
|
<div class="left-panel">
|
||||||
<el-button type="primary" icon="el-icon-plus" @click="add"></el-button>
|
<el-button type="primary" icon="el-icon-plus" @click="add"></el-button>
|
||||||
<el-button type="danger" plain icon="el-icon-delete" :disabled="selection.length==0" @click="batch_del"></el-button>
|
<el-button type="danger" plain icon="el-icon-delete" :disabled="selection.length==0" @click="batch_del"></el-button>
|
||||||
<el-button type="primary" plain :disabled="selection.length==0">权限设置</el-button>
|
<el-button type="primary" plain :disabled="selection.length!=1" @click="permission">权限设置</el-button>
|
||||||
</div>
|
</div>
|
||||||
<div class="right-panel">
|
<div class="right-panel">
|
||||||
<div class="right-panel-search">
|
<div class="right-panel-search">
|
||||||
|
|
@ -43,15 +43,25 @@
|
||||||
</template>
|
</template>
|
||||||
</el-dialog>
|
</el-dialog>
|
||||||
|
|
||||||
|
<el-dialog title="角色权限设置" v-model="permissionDialogVisible" :width="400" destroy-on-close>
|
||||||
|
<permission-dialog ref="permissionDialog"></permission-dialog>
|
||||||
|
<template #footer>
|
||||||
|
<el-button @click="permissionDialogVisible=false" >取 消</el-button>
|
||||||
|
<el-button type="primary" @click="savePermission()" :loading="isPermissionSaveing">保 存</el-button>
|
||||||
|
</template>
|
||||||
|
</el-dialog>
|
||||||
|
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import saveDialog from './save'
|
import saveDialog from './save'
|
||||||
|
import permissionDialog from './permission'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'role',
|
name: 'role',
|
||||||
components: {
|
components: {
|
||||||
saveDialog
|
saveDialog,
|
||||||
|
permissionDialog
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
|
|
@ -69,6 +79,9 @@
|
||||||
},
|
},
|
||||||
isSaveing: false,
|
isSaveing: false,
|
||||||
|
|
||||||
|
//权限
|
||||||
|
permissionDialogVisible: false,
|
||||||
|
isPermissionSaveing: false
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
|
|
@ -146,6 +159,14 @@
|
||||||
selectionChange(selection){
|
selectionChange(selection){
|
||||||
this.selection = selection;
|
this.selection = selection;
|
||||||
},
|
},
|
||||||
|
//权限设置
|
||||||
|
permission(){
|
||||||
|
this.permissionDialogVisible = true;
|
||||||
|
},
|
||||||
|
savePermission(){
|
||||||
|
this.$message.success("操作成功")
|
||||||
|
this.permissionDialogVisible = false;
|
||||||
|
},
|
||||||
//搜索
|
//搜索
|
||||||
upsearch(){
|
upsearch(){
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,83 @@
|
||||||
|
<template>
|
||||||
|
<el-tabs tab-position="left" style="height: 280px;">
|
||||||
|
<el-tab-pane label="菜单权限">
|
||||||
|
<div class="treeMain">
|
||||||
|
<el-tree ref="menu" node-key="name" :data="menu.list" :default-checked-keys="menu.checked" :props="menu.props" show-checkbox></el-tree>
|
||||||
|
</div>
|
||||||
|
</el-tab-pane>
|
||||||
|
<el-tab-pane label="部门权限">
|
||||||
|
<div class="treeMain">
|
||||||
|
<el-tree ref="group" node-key="name" :data="group.list" :default-checked-keys="group.checked" :props="group.props" show-checkbox></el-tree>
|
||||||
|
</div>
|
||||||
|
</el-tab-pane>
|
||||||
|
<el-tab-pane label="类型权限">
|
||||||
|
<div class="treeMain">
|
||||||
|
<el-tree ref="type" node-key="name" :data="type.list" :default-checked-keys="type.checked" :props="type.props" show-checkbox></el-tree>
|
||||||
|
</div>
|
||||||
|
</el-tab-pane>
|
||||||
|
</el-tabs>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
menu: {
|
||||||
|
list: [],
|
||||||
|
checked: ["test", "system", "user", "role"],
|
||||||
|
props: {
|
||||||
|
label: (data)=>{
|
||||||
|
return data.meta.title
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
group: {
|
||||||
|
list: [],
|
||||||
|
checked: [],
|
||||||
|
props: {}
|
||||||
|
},
|
||||||
|
type: {
|
||||||
|
list: [],
|
||||||
|
checked: [],
|
||||||
|
props: {}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
this.getMenu();
|
||||||
|
this.getGroup();
|
||||||
|
this.getType();
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
async getMenu(){
|
||||||
|
var res = await this.$API.menu.list.get();
|
||||||
|
this.menu.list = res.data;
|
||||||
|
},
|
||||||
|
getGroup(){
|
||||||
|
this.group.list = [
|
||||||
|
{label: 'JL00'},
|
||||||
|
{label: 'LP01'},
|
||||||
|
{label: 'LP07'},
|
||||||
|
{label: 'SL01'},
|
||||||
|
{label: 'TL06'},
|
||||||
|
{label: 'TL09'},
|
||||||
|
{label: 'YP07'}
|
||||||
|
];
|
||||||
|
},
|
||||||
|
getType(){
|
||||||
|
this.type.list = [
|
||||||
|
{label: '原料采购'},
|
||||||
|
{label: '厂内互供'},
|
||||||
|
{label: '炼销订单'},
|
||||||
|
{label: '化工统销订单'},
|
||||||
|
{label: '移库单'},
|
||||||
|
{label: '自销订单'},
|
||||||
|
];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped>
|
||||||
|
.treeMain {height:280px;overflow: auto;border: 1px solid #dcdfe6;margin-bottom: 10px;}
|
||||||
|
</style>
|
||||||
|
|
@ -6,7 +6,7 @@
|
||||||
<el-input placeholder="输入关键字进行过滤" v-model="groupFilterText" clearable></el-input>
|
<el-input placeholder="输入关键字进行过滤" v-model="groupFilterText" clearable></el-input>
|
||||||
</el-header>
|
</el-header>
|
||||||
<el-main class="nopadding">
|
<el-main class="nopadding">
|
||||||
<el-tree ref="group" node-key="id" :data="group" :current-node-key="''" :highlight-current="true" :expand-on-click-node="false" :filter-node-method="groupFilterNode" @node-click="groupClick"></el-tree>
|
<el-tree ref="group" class="menu" node-key="id" :data="group" :current-node-key="''" :highlight-current="true" :expand-on-click-node="false" :filter-node-method="groupFilterNode" @node-click="groupClick"></el-tree>
|
||||||
</el-main>
|
</el-main>
|
||||||
</el-container>
|
</el-container>
|
||||||
</el-aside>
|
</el-aside>
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue