|
@@ -6,13 +6,12 @@
|
|
|
<el-button style="float: right; padding: 3px 0" type="text" @click="addrole">添加角色</el-button>
|
|
|
</div>
|
|
|
<div class="main">
|
|
|
- <filterList ref="filterList" :operation="operation" :tableData="roleList" :filed="filed" @bind="menuBind" @edit="filtereEdit" @delete="filterDelete" @query="filterQuery" :total="Total"></filterList>
|
|
|
+ <filterList ref="filterList" :tableData="roleList" :filed="filed" @edit="filtereEdit" @delete="filterDelete" @query="filterQuery" :total="Total"></filterList>
|
|
|
</div>
|
|
|
</el-card>
|
|
|
<dialogAndDrawer :width="'35%'" :title="title" :visibleSync="visibleSync" v-if="visibleSync" @close="visibleSync = false">
|
|
|
<template v-slot:windowMain>
|
|
|
- <formData v-if="!bind" :filed="formfiled" :data="formdata" :rules="formrules" @save="formSave"></formData>
|
|
|
- <transfer v-else :prop="{key: 'code',label: 'title'}" :data="menuList" :values="values" @change="transferChage"></transfer>
|
|
|
+ <formData :filed="formfiled" :data="formdata" :rules="formrules" @save="formSave"></formData>
|
|
|
</template>
|
|
|
</dialogAndDrawer>
|
|
|
</div>
|
|
@@ -21,27 +20,17 @@
|
|
|
import filterList from '@components/filterList/index.vue';
|
|
|
import dialogAndDrawer from '@components/dialogAndDrawer.vue';
|
|
|
import formData from '@components/formData/index.vue';
|
|
|
-import transfer from '@components/transfer.vue';
|
|
|
import { mapState, mapActions } from 'vuex';
|
|
|
export default {
|
|
|
components: {
|
|
|
filterList,
|
|
|
dialogAndDrawer,
|
|
|
- formData,
|
|
|
- transfer
|
|
|
+ formData
|
|
|
},
|
|
|
data() {
|
|
|
return {
|
|
|
- values: [],
|
|
|
- bind: false,
|
|
|
- roleInfo: null,
|
|
|
title: '',
|
|
|
visibleSync: false,
|
|
|
- operation: [
|
|
|
- { name: 'bind', label: '绑定菜单', icon: 'el-icon-menu' },
|
|
|
- { name: 'edit', label: '修改', icon: 'el-icon-edit' },
|
|
|
- { name: 'delete', label: '删除', icon: 'el-icon-delete' }
|
|
|
- ],
|
|
|
filed: [
|
|
|
{ name: 'name', label: '名称', filter: true },
|
|
|
{ name: 'code', label: '编码', filter: true }
|
|
@@ -62,13 +51,13 @@ export default {
|
|
|
};
|
|
|
},
|
|
|
computed: {
|
|
|
- ...mapState(['roleList', 'Total', 'menuList', 'bindList'])
|
|
|
+ ...mapState(['roleList', 'Total'])
|
|
|
},
|
|
|
async mounted() {
|
|
|
await this.filterQuery();
|
|
|
},
|
|
|
methods: {
|
|
|
- ...mapActions(['roleQuery', 'roleCreate', 'roleUpdate', 'roleDelete', 'menuQuery', 'queryBind', 'batchUnBind', 'batchBind']),
|
|
|
+ ...mapActions(['roleQuery', 'roleCreate', 'roleUpdate', 'roleDelete']),
|
|
|
// 添加
|
|
|
addrole () {
|
|
|
this.formdata = {};
|
|
@@ -110,37 +99,6 @@ export default {
|
|
|
this.$resChange(res, msg);
|
|
|
this.filterQuery();
|
|
|
this.visibleSync = false;
|
|
|
- },
|
|
|
- async menuBind (e) {
|
|
|
- this.roleInfo = e;
|
|
|
- this.title = '绑定菜单';
|
|
|
- this.visibleSync = true;
|
|
|
- this.bind = true;
|
|
|
- await this.menuQuery();
|
|
|
- await this.queryBind({ roleCode: this.roleInfo.code });
|
|
|
- this.values = this.bindList.map(e => e.menuCode);
|
|
|
- },
|
|
|
- // 穿梭框改变
|
|
|
- async transferChage (e) {
|
|
|
- const roleCode = this.roleInfo.code;
|
|
|
- // 解绑
|
|
|
- e.filter(i => {
|
|
|
- this.values = this.values.filter(k => k !== i);
|
|
|
- });
|
|
|
- if (this.values.length > 0) {
|
|
|
- const unbind = await this.batchUnBind({ roleCode, ids: this.values });
|
|
|
- this.$resChange(unbind, '解绑成功');
|
|
|
- }
|
|
|
- // 绑定
|
|
|
- this.values.filter(y => {
|
|
|
- e = e.filter(z => z == y);
|
|
|
- });
|
|
|
- if (e.length > 0) {
|
|
|
- const res = await this.batchBind({ roleCode, ids: e });
|
|
|
- this.$resChange(res, '绑定成功');
|
|
|
- }
|
|
|
- await this.queryBind({ roleCode: this.roleInfo.code });
|
|
|
- this.values = this.bindList.map(e => e.menuCode);
|
|
|
}
|
|
|
}
|
|
|
};
|