Commit c2797cde authored by rencs's avatar rencs

1.19 del

parent 81414428
...@@ -30,6 +30,13 @@ export function delObj(id) { ...@@ -30,6 +30,13 @@ export function delObj(id) {
}) })
} }
export function delObj2(id) {
return fetch({
url: '/api/admin/group/' + id,
method: 'delete'
})
}
export function putObj(id, obj) { export function putObj(id, obj) {
return fetch({ return fetch({
url: '/api/admin/groupType/' + id, url: '/api/admin/groupType/' + id,
......
<template> <template>
<div class="app-container calendar-list-container"> <div class="app-container calendar-list-container">
<div class="filter-container"> <div class="filter-container">
<el-input @keyup.enter.native="handleFilter" style="width: 200px;" class="filter-item" placeholder="姓名或账户" v-model="listQuery.name"> </el-input> <el-input
<el-button class="filter-item" type="primary" plain @click="handleFilter">搜索</el-button> @keyup.enter.native="handleFilter"
<el-button class="filter-item" type="primary" plain @click="cleanFilter">清除搜索</el-button> style="width: 200px"
<el-button class="filter-item" v-if="groupTypeManager_btn_add" style="margin-left: 10px;" @click="handleCreate(1)" type="primary"><i class="el-icon-plus"></i>添加角色</el-button> class="filter-item"
</div> placeholder="姓名或账户"
<el-table :key='tableKey' :data="list" v-loading.body="listLoading" border fit highlight-current-row style="width: 100%"> v-model="listQuery.name"
<el-table-column type="index" align="center" label="序号" width="98"></el-table-column> >
<el-table-column align="center" label="角色名称"> </el-input>
<template slot-scope="scope"> <el-button class="filter-item" type="primary" plain @click="handleFilter"
<span>{{scope.row.name}}</span> >搜索</el-button
</template> >
</el-table-column> <el-button class="filter-item" type="primary" plain @click="cleanFilter"
<el-table-column align="center" label="描述"> >清除搜索</el-button
<template slot-scope="scope"> >
<span>{{scope.row.description}}</span> <el-button
</template> class="filter-item"
</el-table-column> v-if="groupTypeManager_btn_add"
<el-table-column align="center" label="操作" width="260px"> style="margin-left: 10px"
<template slot-scope="scope"> @click="handleCreate(1)"
<el-button v-if="groupTypeManager_btn_edit" size="small" type="text" @click="handleUpdate(scope.row)">基础信息</el-button> type="primary"
<el-button v-if="groupTypeManager_btn_edit" size="small" type="text" @click="setRights(scope.row)">权限设置</el-button> ><i class="el-icon-plus"></i>添加角色</el-button
<el-button v-if="groupTypeManager_btn_del" size="small" type="text" @click="handleDelete(scope.row)">删除</el-button> >
</template> </div>
</el-table-column> <el-table
</el-table> :key="tableKey"
<div v-show="!listLoading" class="pagination-container"> :data="list"
<el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange" :current-page.sync="listQuery.page" :page-sizes="[10,20,30, 50]" :page-size="listQuery.limit" layout="total, sizes, prev, pager, next, jumper" :total="total"> </el-pagination> v-loading.body="listLoading"
</div> border
<el-dialog :title="textMap[dialogStatus]" :visible.sync="dialogFormVisible"> fit
<el-form :model="form" :rules="rules" ref="form" label-width="100px"> highlight-current-row
<el-form-item label="角色名称" prop="name"> style="width: 100%"
<el-input v-model="form.name" placeholder="请输入角色名称"></el-input> >
</el-form-item> <el-table-column
<el-form-item label="描述"> type="index"
<el-input v-model="form.description" placeholder="请输入描述"></el-input> align="center"
</el-form-item> label="序号"
</el-form> width="98"
<div slot="footer" class="dialog-footer"> ></el-table-column>
<el-button @click="cancel('form')">取 消</el-button> <el-table-column align="center" label="角色名称">
<el-button v-if="dialogStatus=='create'" type="primary" @click="create('form')">确 定</el-button> <template slot-scope="scope">
<el-button v-else type="primary" @click="update('form')">确 定</el-button> <span>{{ scope.row.name }}</span>
</template>
</el-table-column>
<el-table-column align="center" label="描述">
<template slot-scope="scope">
<span>{{ scope.row.description }}</span>
</template>
</el-table-column>
<el-table-column align="center" label="操作" width="260px">
<template slot-scope="scope">
<el-button
v-if="groupTypeManager_btn_edit"
size="small"
type="text"
@click="handleUpdate(scope.row)"
>基础信息</el-button
>
<el-button
v-if="groupTypeManager_btn_edit"
size="small"
type="text"
@click="setRights(scope.row)"
>权限设置</el-button
>
<el-button
v-if="groupTypeManager_btn_del"
size="small"
type="text"
@click="handleDelete(scope.row)"
>删除</el-button
>
</template>
</el-table-column>
</el-table>
<div v-show="!listLoading" class="pagination-container">
<el-pagination
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
:current-page.sync="listQuery.page"
:page-sizes="[10, 20, 30, 50]"
:page-size="listQuery.limit"
layout="total, sizes, prev, pager, next, jumper"
:total="total"
>
</el-pagination>
</div> </div>
</el-dialog> <el-dialog :title="textMap[dialogStatus]" :visible.sync="dialogFormVisible">
<!--权限设置--> <el-form :model="form" :rules="rules" ref="form" label-width="100px">
<el-dialog title="权限设置" class="rights-main" :visible.sync="rightDialogVisible" lock-scroll :before-close="closeRightBtn"> <el-form-item label="角色名称" prop="name">
<el-row class="table-row-header"> <el-input v-model="form.name" placeholder="请输入角色名称"></el-input>
<el-col :span="4" class="tc border-r tc-header">一级</el-col> </el-form-item>
<el-col :span="20"> <el-form-item label="描述">
<el-row> <el-input
<el-col :span="8" class="tc border-r tc-header" >二级</el-col> v-model="form.description"
<el-col :span="16"> placeholder="请输入描述"
<el-row class="tc"> ></el-input>
<el-col :span="8" class="tc border-r tc-header">三级</el-col> </el-form-item>
<el-col :span="8" class="tc tc-header">功能</el-col> </el-form>
</el-row> <div slot="footer" class="dialog-footer">
</el-col> <el-button @click="cancel('form')">取 消</el-button>
</el-row> <el-button
</el-col> v-if="dialogStatus == 'create'"
</el-row> type="primary"
<el-row class="border-b border-r" v-for="menu in menuData" :key="menu.id"> @click="create('form')"
>确 定</el-button
>
<el-button v-else type="primary" @click="update('form')"
>确 定</el-button
>
</div>
</el-dialog>
<!--权限设置-->
<el-dialog
title="权限设置"
class="rights-main"
:visible.sync="rightDialogVisible"
lock-scroll
:before-close="closeRightBtn"
>
<el-row class="table-row-header">
<el-col :span="4" class="tc border-r tc-header">一级</el-col>
<el-col :span="20">
<el-row>
<el-col :span="8" class="tc border-r tc-header">二级</el-col>
<el-col :span="16">
<el-row class="tc">
<el-col :span="8" class="tc border-r tc-header">三级</el-col>
<el-col :span="8" class="tc tc-header">功能</el-col>
</el-row>
</el-col>
</el-row>
</el-col>
</el-row>
<el-row class="border-b border-r" v-for="menu in menuData" :key="menu.id">
<!--一级--> <!--一级-->
<el-col :span="4" class="tc tc-header"> <el-col :span="4" class="tc tc-header">
<el-checkbox v-if="menu.type !=0" v-model="menu.checked" @change="selectAllMenuChildren(menu)">{{menu.label}}</el-checkbox> <el-checkbox
<el-checkbox v-else v-model="menu.checked" @change="selectAllMenuChildren(menu)">{{menu.label}}</el-checkbox> v-if="menu.type != 0"
v-model="menu.checked"
@change="selectAllMenuChildren(menu)"
>{{ menu.label }}</el-checkbox
>
<el-checkbox
v-else
v-model="menu.checked"
@change="selectAllMenuChildren(menu)"
>{{ menu.label }}</el-checkbox
>
</el-col> </el-col>
<!--二级--> <!--二级-->
<el-col :span="20" class="border-l"> <el-col :span="20" class="border-l">
<el-row :class="{borderB: index != menu.children.length-1}" v-for="(item, index) in menu.children" :key="item.id" v-if="menu.children.length>0"> <el-row
<el-col :span="8" :class="{borderR:item.children.length<=0}" > :class="{ borderB: index != menu.children.length - 1 }"
<el-checkbox class="second-checkbox" v-if="item.type !=0" v-model="item.checked" @change="selectAllChildren(menu, item)">{{item.label}}</el-checkbox> v-for="(item, index) in menu.children"
<el-checkbox class="second-checkbox" v-else @change="selectAllChildren(menu, item)" v-model="item.checked">{{item.label}}</el-checkbox> :key="item.id"
v-if="menu.children.length > 0"
>
<el-col :span="8" :class="{ borderR: item.children.length <= 0 }">
<el-checkbox
class="second-checkbox"
v-if="item.type != 0"
v-model="item.checked"
@change="selectAllChildren(menu, item)"
>{{ item.label }}</el-checkbox
>
<el-checkbox
class="second-checkbox"
v-else
@change="selectAllChildren(menu, item)"
v-model="item.checked"
>{{ item.label }}</el-checkbox
>
</el-col> </el-col>
<el-col :span="16" class="border-l" v-if="item.children.length>0"> <el-col :span="16" class="border-l" v-if="item.children.length > 0">
<el-row :class="{borderB: icndex != item.children.length-1 && item.children.length>0 && ictem.type !=2}" v-if="ictem.type !=2" v-for="(ictem, icndex) in item.children" :key="ictem.id"> <el-row
:class="{
borderB:
icndex != item.children.length - 1 &&
item.children.length > 0 &&
ictem.type != 2,
}"
v-if="ictem.type != 2"
v-for="(ictem, icndex) in item.children"
:key="ictem.id"
>
<el-col :span="8" class="tc-header"> <el-col :span="8" class="tc-header">
<el-checkbox v-if="ictem.type!=2" @change="selectAllThirdChildren(menu, item, ictem)" v-model="ictem.checked" :label="ictem.name" :key="ictem.id">{{ictem.label}}</el-checkbox> <el-checkbox
v-if="ictem.type != 2"
@change="selectAllThirdChildren(menu, item, ictem)"
v-model="ictem.checked"
:label="ictem.name"
:key="ictem.id"
>{{ ictem.label }}</el-checkbox
>
</el-col> </el-col>
<el-col :span="16" class="border-l"> <el-col :span="16" class="border-l">
<el-checkbox v-if="iitem.type==2" class="tc-header-btn" @change="selectOneT(menu, item, ictem, iitem)" v-for="iitem in ictem.children" v-model="iitem.checked" :label="iitem.label" :key="iitem.id">{{iitem.label}}</el-checkbox> <el-checkbox
v-if="iitem.type == 2"
class="tc-header-btn"
@change="selectOneT(menu, item, ictem, iitem)"
v-for="iitem in ictem.children"
v-model="iitem.checked"
:label="iitem.label"
:key="iitem.id"
>{{ iitem.label }}</el-checkbox
>
</el-col> </el-col>
</el-row> </el-row>
<el-row v-if="item.children[0].type ==2"> <el-row v-if="item.children[0].type == 2">
<el-col :span="8" class="tc-header" ></el-col> <el-col :span="8" class="tc-header"></el-col>
<el-col :span="16" class="border-l" > <el-col :span="16" class="border-l">
<el-checkbox v-for="(ictem, icndex) in item.children" v-if="ictem.type ==2" @change="selectOne(menu, item, ictem)" class="tc-header-btn" v-model="ictem.checked" :label="ictem.name" :key="ictem.id">{{ictem.label}}</el-checkbox> <el-checkbox
v-for="(ictem, icndex) in item.children"
v-if="ictem.type == 2"
@change="selectOne(menu, item, ictem)"
class="tc-header-btn"
v-model="ictem.checked"
:label="ictem.name"
:key="ictem.id"
>{{ ictem.label }}</el-checkbox
>
</el-col> </el-col>
</el-row> </el-row>
</el-col> </el-col>
...@@ -93,74 +229,82 @@ ...@@ -93,74 +229,82 @@
</el-row> </el-row>
</el-col> </el-col>
</el-row> </el-row>
<div slot="footer" class="dialog-footer"> <div slot="footer" class="dialog-footer">
<el-button @click="closeRightBtn()">取 消</el-button> <el-button @click="closeRightBtn()">取 消</el-button>
<el-button type="primary" @click="handleOkRight()">确 定</el-button> <el-button type="primary" @click="handleOkRight()">确 定</el-button>
</div> </div>
</el-dialog> </el-dialog>
</div> </div>
</template> </template>
<script type="javascript"> <script type="javascript">
import {objDeepCopy} from "../../../utils"; import { objDeepCopy } from "../../../utils";
import { import {
page, page,
addGroup, addGroup,
putGroup, putGroup,
delObj, delObj,
putObj delObj2,
} from 'api/admin/groupType/index'; putObj,
import { } from "api/admin/groupType/index";
fetchTree import { fetchTree } from "api/admin/menu";
} from 'api/admin/menu';
import { import {
modifyMenuAndBtnAuthority, modifyMenuAndBtnAuthority,
getMenuAuthority getMenuAuthority,
} from 'api/admin/group/index' } from "api/admin/group/index";
import { mapGetters } from 'vuex'; import { mapGetters } from "vuex";
export default { export default {
name: 'groupType', name: "groupType",
data() { data() {
return { return {
form: { form: {
code: 'wuquanxian2', code: "wuquanxian2",
groupType: 1, // 1--运营平台;2--商家平台, groupType: 1, // 1--运营平台;2--商家平台,
name: undefined, name: undefined,
description: undefined, description: undefined,
parentId: -1 parentId: -1,
}, },
rightDialogVisible: false, // 权限设置弹窗 rightDialogVisible: false, // 权限设置弹窗
rules: { rules: {
code: [{ code: [
required: true, {
message: '请输入编码', required: true,
trigger: 'blur' message: "请输入编码",
}, { trigger: "blur",
min: 3, },
max: 20, {
message: '长度在 3 到 20 个字符', min: 3,
trigger: 'blur' max: 20,
}], message: "长度在 3 到 20 个字符",
name: [{ trigger: "blur",
required: true, },
message: '请输入类型名称', ],
trigger: 'blur' name: [
}, { {
min: 3, required: true,
max: 20, message: "请输入类型名称",
message: '长度在 3 到 20 个字符', trigger: "blur",
trigger: 'blur' },
}], {
description: [{ min: 3,
required: true, max: 20,
message: '请输入描述', message: "长度在 3 到 20 个字符",
trigger: 'blur' trigger: "blur",
}, { },
min: 3, ],
max: 20, description: [
message: '长度在 3 到 20 个字符', {
trigger: 'blur' required: true,
}] message: "请输入描述",
trigger: "blur",
},
{
min: 3,
max: 20,
message: "长度在 3 到 20 个字符",
trigger: "blur",
},
],
}, },
menuData: [], // 菜单列表 menuData: [], // 菜单列表
list: null, list: null,
...@@ -169,40 +313,38 @@ export default { ...@@ -169,40 +313,38 @@ export default {
listQuery: { listQuery: {
page: 1, page: 1,
limit: 20, limit: 20,
name: undefined name: undefined,
}, },
dialogFormVisible: false, dialogFormVisible: false,
dialogStatus: '', dialogStatus: "",
groupTypeManager_btn_edit: false, groupTypeManager_btn_edit: false,
groupTypeManager_btn_del: false, groupTypeManager_btn_del: false,
groupTypeManager_btn_add: false, groupTypeManager_btn_add: false,
groupId: 0, // 角色id groupId: 0, // 角色id
textMap: { textMap: {
update: '基础信息', update: "基础信息",
create: '创建' create: "创建",
}, },
tableKey: 0 tableKey: 0,
} };
}, },
created() { created() {
this.getList(); this.getList();
this.groupTypeManager_btn_edit = this.elements['groupTypeManager:btn_edit']; this.groupTypeManager_btn_edit = this.elements["groupTypeManager:btn_edit"];
this.groupTypeManager_btn_del = this.elements['groupTypeManager:btn_del']; this.groupTypeManager_btn_del = this.elements["groupTypeManager:btn_del"];
this.groupTypeManager_btn_add = this.elements['groupTypeManager:btn_add']; this.groupTypeManager_btn_add = this.elements["groupTypeManager:btn_add"];
}, },
computed: { computed: {
...mapGetters([ ...mapGetters(["elements"]),
'elements'
])
}, },
methods: { methods: {
getList() { getList() {
this.listLoading = true; this.listLoading = true;
page(this.listQuery).then(response => { page(this.listQuery).then((response) => {
this.list = response.data.data; this.list = response.data.data;
this.total = response.data.totalCount; this.total = response.data.totalCount;
this.listLoading = false; this.listLoading = false;
}) });
}, },
/** /**
* 一级菜单全选 * 一级菜单全选
...@@ -210,13 +352,13 @@ export default { ...@@ -210,13 +352,13 @@ export default {
selectAllMenuChildren(menu) { selectAllMenuChildren(menu) {
if (menu.checked) { if (menu.checked) {
// 一级菜单全选 // 一级菜单全选
menu.children.map(function(m){ menu.children.map(function (m) {
m.checked = !0; m.checked = !0;
if(m.children.length>0){ if (m.children.length > 0) {
m.children.map(function(c) { m.children.map(function (c) {
c.checked = !0; c.checked = !0;
if(c.children){ if (c.children) {
c.children.map(function(iitem){ c.children.map(function (iitem) {
iitem.checked = !0; iitem.checked = !0;
}); });
} }
...@@ -225,13 +367,13 @@ export default { ...@@ -225,13 +367,13 @@ export default {
}); });
} else { } else {
// 二级菜单取消全选 // 二级菜单取消全选
menu.children.map(function(m){ menu.children.map(function (m) {
m.checked = !1; m.checked = !1;
if(m.children.length>0){ if (m.children.length > 0) {
m.children.map(function(c) { m.children.map(function (c) {
c.checked = !1; c.checked = !1;
if(c.children){ if (c.children) {
c.children.map(function(iitem){ c.children.map(function (iitem) {
iitem.checked = !1; iitem.checked = !1;
}); });
} }
...@@ -255,7 +397,7 @@ export default { ...@@ -255,7 +397,7 @@ export default {
menu.checked = !0; menu.checked = !0;
} else { } else {
let c = 0; let c = 0;
for (let i = 0; i < menu.children.length; i++){ for (let i = 0; i < menu.children.length; i++) {
if (menu.children[i].checked) { if (menu.children[i].checked) {
// 有一个选中--上级就选中 // 有一个选中--上级就选中
menu.checked = !0; menu.checked = !0;
...@@ -263,7 +405,7 @@ export default { ...@@ -263,7 +405,7 @@ export default {
c++; c++;
} }
} }
if (c == menu.children.length){ if (c == menu.children.length) {
// 全未选中 // 全未选中
menu.checked = !1; menu.checked = !1;
} }
...@@ -271,20 +413,20 @@ export default { ...@@ -271,20 +413,20 @@ export default {
if (item.children.length > 0) { if (item.children.length > 0) {
if (item.checked) { if (item.checked) {
// 二级菜单全选 // 二级菜单全选
item.children.map(function(m) { item.children.map(function (m) {
m.checked = !0; // 二级菜单选中,下面三级子菜单全选中 m.checked = !0; // 二级菜单选中,下面三级子菜单全选中
if (m.children.length > 0) { if (m.children.length > 0) {
m.children.map(function(ii) { m.children.map(function (ii) {
ii.checked = !0; ii.checked = !0;
}); });
} }
}); });
} else { } else {
// 二级菜单取消全选 // 二级菜单取消全选
item.children.map(function(m) { item.children.map(function (m) {
m.checked = !1; // 二级菜单取消选中,下面三级子菜单全取消选中 m.checked = !1; // 二级菜单取消选中,下面三级子菜单全取消选中
if (m.children.length > 0) { if (m.children.length > 0) {
m.children.map(function(ii) { m.children.map(function (ii) {
ii.checked = !1; ii.checked = !1;
}); });
} }
...@@ -303,8 +445,8 @@ export default { ...@@ -303,8 +445,8 @@ export default {
} else { } else {
let c = 0; let c = 0;
// 下级未选中--上级判断是否选中 // 下级未选中--上级判断是否选中
for (let i = 0; i< item.children.length; i++){ for (let i = 0; i < item.children.length; i++) {
if (item.children[i].checked){ if (item.children[i].checked) {
// 下级有一个选中 // 下级有一个选中
item.checked = !0; item.checked = !0;
break; break;
...@@ -333,12 +475,12 @@ export default { ...@@ -333,12 +475,12 @@ export default {
if (ictem.children.length > 0) { if (ictem.children.length > 0) {
if (ictem.checked) { if (ictem.checked) {
// 三级菜单全选 // 三级菜单全选
ictem.children.map(function(m) { ictem.children.map(function (m) {
m.checked = !0; // 三级菜单选中,下面三级子菜单全选中 m.checked = !0; // 三级菜单选中,下面三级子菜单全选中
}); });
} else { } else {
// 三级菜单取消全选 // 三级菜单取消全选
ictem.children.map(function(m) { ictem.children.map(function (m) {
m.checked = !1; // 三级菜单取消选中,下面三级子菜单全取消选中 m.checked = !1; // 三级菜单取消选中,下面三级子菜单全取消选中
}); });
} }
...@@ -357,9 +499,9 @@ export default { ...@@ -357,9 +499,9 @@ export default {
/** /**
* 三级菜单下按钮 * 三级菜单下按钮
* */ * */
selectOneT(menu, item, ictem, iitem){ selectOneT(menu, item, ictem, iitem) {
if(iitem.checked){ if (iitem.checked) {
menu.checked = !0 menu.checked = !0;
ictem.checked = !0; ictem.checked = !0;
item.checked = !0; item.checked = !0;
} }
...@@ -368,38 +510,38 @@ export default { ...@@ -368,38 +510,38 @@ export default {
* 关闭权限弹框 * 关闭权限弹框
* */ * */
closeRightBtn() { closeRightBtn() {
this.groupId = 0 this.groupId = 0;
this.rightDialogVisible = false; this.rightDialogVisible = false;
}, },
/** /**
* 计算选中的按钮权限 * 计算选中的按钮权限
*/ */
getCheckedBtn(){ getCheckedBtn() {
let wxAppMenu = objDeepCopy(this.menuData); let wxAppMenu = objDeepCopy(this.menuData);
let menuArr = []; let menuArr = [];
wxAppMenu.map(function(menu) { wxAppMenu.map(function (menu) {
if (menu.checked && menu.type ==2){ if (menu.checked && menu.type == 2) {
menuArr.push(menu.id); menuArr.push(menu.id);
} else if (menu.children) { } else if (menu.children) {
menu.children.map(function(item) { menu.children.map(function (item) {
if (item.checked && item.type ==2) { if (item.checked && item.type == 2) {
menuArr.push(item.id); menuArr.push(item.id);
} }
if (item.children) { if (item.children) {
item.children.map(function (iitem) { item.children.map(function (iitem) {
if (iitem.checked && iitem.type ==2) { if (iitem.checked && iitem.type == 2) {
menuArr.push(iitem.id); menuArr.push(iitem.id);
} }
if (iitem.children) { if (iitem.children) {
iitem.children.map(function (ictem) { iitem.children.map(function (ictem) {
if (ictem.checked && ictem.type ==2) { if (ictem.checked && ictem.type == 2) {
menuArr.push(ictem.id); menuArr.push(ictem.id);
} }
}); });
} }
}); });
} }
}) });
} }
}); });
return menuArr; return menuArr;
...@@ -410,33 +552,33 @@ export default { ...@@ -410,33 +552,33 @@ export default {
getCheckedMenu() { getCheckedMenu() {
let wxAppMenu = objDeepCopy(this.menuData); let wxAppMenu = objDeepCopy(this.menuData);
let menuArr = []; let menuArr = [];
wxAppMenu.map(function(menu) { wxAppMenu.map(function (menu) {
if (menu.checked && menu.type !=2){ if (menu.checked && menu.type != 2) {
menuArr.push(menu.id); menuArr.push(menu.id);
} }
if (menu.children.length > 0) { if (menu.children.length > 0) {
menu.children.map(function(item) { menu.children.map(function (item) {
if (item.checked && item.type !=2) { if (item.checked && item.type != 2) {
menuArr.push(item.id); menuArr.push(item.id);
menuArr.push(menu.id); menuArr.push(menu.id);
} }
if (item.children.length > 0) { if (item.children.length > 0) {
item.children.map(function (iitem) { item.children.map(function (iitem) {
if (iitem.checked && iitem.type !=2) { if (iitem.checked && iitem.type != 2) {
menuArr.push(iitem.id); menuArr.push(iitem.id);
menuArr.push(item.id); menuArr.push(item.id);
menuArr.push(menu.id); menuArr.push(menu.id);
} }
if (iitem.children > 0) { if (iitem.children > 0) {
iitem.children.map(function (ictem) { iitem.children.map(function (ictem) {
if (ictem.checked && ictem.type !=2) { if (ictem.checked && ictem.type != 2) {
menuArr.push(ictem.id); menuArr.push(ictem.id);
} }
}); });
} }
}); });
} }
}) });
} }
}); });
return menuArr; return menuArr;
...@@ -444,10 +586,10 @@ export default { ...@@ -444,10 +586,10 @@ export default {
/** /**
* 数组去重 * 数组去重
*/ */
unique1(arr){ unique1(arr) {
var hash=[]; var hash = [];
for (var i = 0; i < arr.length; i++) { for (var i = 0; i < arr.length; i++) {
if(hash.indexOf(arr[i]) == -1){ if (hash.indexOf(arr[i]) == -1) {
hash.push(arr[i]); hash.push(arr[i]);
} }
} }
...@@ -458,28 +600,28 @@ export default { ...@@ -458,28 +600,28 @@ export default {
*/ */
handleOkRight() { handleOkRight() {
let menu = objDeepCopy(this.getCheckedMenu()); let menu = objDeepCopy(this.getCheckedMenu());
menu = this.unique1(menu) menu = this.unique1(menu);
let elements = objDeepCopy(this.getCheckedBtn()); let elements = objDeepCopy(this.getCheckedBtn());
console.log(menu); console.log(menu);
console.log(elements) console.log(elements);
modifyMenuAndBtnAuthority(this.groupId, { modifyMenuAndBtnAuthority(this.groupId, {
menuTrees: menu.join(','), menuTrees: menu.join(","),
elementTrees: elements.join(',') elementTrees: elements.join(","),
}).then( (response) => { }).then((response) => {
if (response.status == 200) { if (response.status == 200) {
this.$notify({ this.$notify({
title: '成功', title: "成功",
message: '保存成功', message: "保存成功",
type: 'success', type: "success",
duration: 2000 duration: 2000,
}); });
this.rightDialogVisible = false this.rightDialogVisible = false;
} else { } else {
this.$notify({ this.$notify({
title: '失败', title: "失败",
message: response.message, message: response.message,
type: 'error', type: "error",
duration: 2000 duration: 2000,
}); });
} }
}); });
...@@ -487,13 +629,13 @@ export default { ...@@ -487,13 +629,13 @@ export default {
handleFilter() { handleFilter() {
this.getList(); this.getList();
}, },
cleanFilter(){ cleanFilter() {
this.listQuery = { this.listQuery = {
page: 1, page: 1,
limit: 20, limit: 20,
name: undefined name: undefined,
} };
this.getList() this.getList();
}, },
handleSizeChange(val) { handleSizeChange(val) {
this.listQuery.limit = val; this.listQuery.limit = val;
...@@ -505,14 +647,14 @@ export default { ...@@ -505,14 +647,14 @@ export default {
}, },
handleCreate(groupType) { handleCreate(groupType) {
this.form = { this.form = {
code: 'wuquanxian2', code: "wuquanxian2",
groupType: groupType, // 1--运营平台;2--商家平台, groupType: groupType, // 1--运营平台;2--商家平台,
name: undefined, name: undefined,
description: undefined, description: undefined,
parentId: -1 parentId: -1,
} };
// this.resetTemp(); // this.resetTemp();
this.dialogStatus = 'create'; this.dialogStatus = "create";
this.dialogFormVisible = true; this.dialogFormVisible = true;
}, },
/** /**
...@@ -520,115 +662,117 @@ export default { ...@@ -520,115 +662,117 @@ export default {
*/ */
handleUpdate(row) { handleUpdate(row) {
this.form = { this.form = {
code: 'wuquanxian2', code: "wuquanxian2",
id: row.id, id: row.id,
groupType: row.groupType, // 1--运营平台;2--商家平台, groupType: row.groupType, // 1--运营平台;2--商家平台,
name: row.name, name: row.name,
description: row.description, description: row.description,
parentId: -1 parentId: -1,
} };
this.dialogStatus = 'update'; this.dialogStatus = "update";
this.dialogFormVisible = true; this.dialogFormVisible = true;
}, },
/** /**
* 设置权限 * 设置权限
*/ */
setRights(row) { setRights(row) {
this.rightDialogVisible = true this.rightDialogVisible = true;
this.groupId = row.id this.groupId = row.id;
fetchTree().then(response => { fetchTree().then((response) => {
response.map(function(item){ response.map(function (item) {
item.checked = false item.checked = false;
if(item.elements.length>0){ if (item.elements.length > 0) {
item.type = 1 // 菜单 item.type = 1; // 菜单
item.elements.map(function(ittem){ item.elements.map(function (ittem) {
ittem.checked = false ittem.checked = false;
ittem.label = ittem.name ittem.label = ittem.name;
ittem.type = 2 // button ittem.type = 2; // button
}) });
item.children = item.elements item.children = item.elements;
} else if(item.children.length>0){ } else if (item.children.length > 0) {
item.type = 0 // 目录 一级菜单 item.type = 0; // 目录 一级菜单
item.children.map(function(iitem){ item.children.map(function (iitem) {
iitem.checked = false iitem.checked = false;
if(iitem.elements.length > 0){ if (iitem.elements.length > 0) {
iitem.children = iitem.elements iitem.children = iitem.elements;
iitem.type = 1 // 菜单 二级菜单 iitem.type = 1; // 菜单 二级菜单
iitem.elements.map(function(ittem){ iitem.elements.map(function (ittem) {
ittem.checked = false ittem.checked = false;
ittem.label = ittem.name ittem.label = ittem.name;
ittem.type = 2 // button ittem.type = 2; // button
}) });
} else if(iitem.children.length>0){ } else if (iitem.children.length > 0) {
iitem.type = 0 // 目录 二级目录 iitem.type = 0; // 目录 二级目录
iitem.children.map(function(ictem){ iitem.children.map(function (ictem) {
ictem.checked = false ictem.checked = false;
if(ictem.elements.length > 0){ if (ictem.elements.length > 0) {
ictem.type = 1 // 三级菜单 ictem.type = 1; // 三级菜单
ictem.children = ictem.elements ictem.children = ictem.elements;
ictem.elements.map(function(ittem){ ictem.elements.map(function (ittem) {
ittem.checked = false ittem.checked = false;
ittem.label = ittem.name ittem.label = ittem.name;
ittem.type = 2 // button ittem.type = 2; // button
}) });
} }
}) });
} }
}) });
} }
}) });
console.log(response) console.log(response);
this.menuData = response; this.menuData = response;
this.getCurrentRoleMenu() this.getCurrentRoleMenu();
this.loading = false; this.loading = false;
}); });
}, },
/** /**
* 获取当前角色菜单权限 * 获取当前角色菜单权限
*/ */
getCurrentRoleMenu(){ getCurrentRoleMenu() {
let _this = this let _this = this;
getMenuAuthority(this.groupId).then( (response) => { getMenuAuthority(this.groupId).then((response) => {
if (response.status == 200) { if (response.status == 200) {
if(response.data.length > 0){ if (response.data.length > 0) {
let arr = response.data[0].elementIds ? response.data[0].elementIds : []; let arr = response.data[0].elementIds
let totalIds = [] ? response.data[0].elementIds
arr.map(function(item){ : [];
totalIds.push({id: item}) let totalIds = [];
}) arr.map(function (item) {
response.data.map(function(item){ totalIds.push({ id: item });
totalIds.push({id: item.id}) });
}) response.data.map(function (item) {
for(let i = 0; i < totalIds.length; i++){ totalIds.push({ id: item.id });
let obj1 = totalIds[i] });
for(let j = 0; j < _this.menuData.length; j++){ for (let i = 0; i < totalIds.length; i++) {
let obj2 = _this.menuData[j] let obj1 = totalIds[i];
if(obj1.id == obj2.id){ for (let j = 0; j < _this.menuData.length; j++) {
obj2.checked = true let obj2 = _this.menuData[j];
break if (obj1.id == obj2.id) {
obj2.checked = true;
break;
} }
if(obj2.children.length > 0){ if (obj2.children.length > 0) {
for(let j1 = 0; j1 < obj2.children.length; j1++){ for (let j1 = 0; j1 < obj2.children.length; j1++) {
let obj3 = obj2.children[j1] let obj3 = obj2.children[j1];
if(obj3.id == obj1.id){ if (obj3.id == obj1.id) {
obj3.checked = true obj3.checked = true;
break break;
} }
if(obj3.children.length > 0){ if (obj3.children.length > 0) {
for(let j2 = 0; j2 < obj3.children.length; j2++){ for (let j2 = 0; j2 < obj3.children.length; j2++) {
let obj4 = obj3.children[j2] let obj4 = obj3.children[j2];
if(obj4.id == obj1.id){ if (obj4.id == obj1.id) {
obj4.checked = true obj4.checked = true;
break break;
} }
console.log(obj4) console.log(obj4);
if(obj4.children){ if (obj4.children) {
// 按钮权限 // 按钮权限
for(let j3 = 0; j3 < obj4.children.length; j3++){ for (let j3 = 0; j3 < obj4.children.length; j3++) {
let obj5 = obj4.children[j3] let obj5 = obj4.children[j3];
if(obj5.id == obj1.id){ if (obj5.id == obj1.id) {
obj5.checked = true obj5.checked = true;
break break;
} }
} }
} }
...@@ -641,26 +785,26 @@ export default { ...@@ -641,26 +785,26 @@ export default {
} }
} else { } else {
this.$notify({ this.$notify({
title: '失败', title: "失败",
message: response.message, message: response.message,
type: 'error', type: "error",
duration: 2000 duration: 2000,
}); });
} }
}); });
}, },
handleDelete(row) { handleDelete(row) {
this.$confirm('此操作将永久删除, 是否继续?', '提示', { this.$confirm("此操作将永久删除, 是否继续?", "提示", {
confirmButtonText: '确定', confirmButtonText: "确定",
cancelButtonText: '取消', cancelButtonText: "取消",
type: 'warning' type: "warning",
}).then(() => { }).then(() => {
delObj(row.id).then(() => { delObj2(row.id).then(() => {
this.$notify({ this.$notify({
title: '成功', title: "成功",
message: '删除成功', message: "删除成功",
type: 'success', type: "success",
duration: 2000 duration: 2000,
}); });
const index = this.list.indexOf(row); const index = this.list.indexOf(row);
this.list.splice(index, 1); this.list.splice(index, 1);
...@@ -668,18 +812,18 @@ export default { ...@@ -668,18 +812,18 @@ export default {
}); });
}, },
create(formName) { create(formName) {
this.$refs[formName].validate(valid => { this.$refs[formName].validate((valid) => {
if (valid) { if (valid) {
addGroup(this.form).then(() => { addGroup(this.form).then(() => {
this.dialogFormVisible = false; this.dialogFormVisible = false;
this.getList(); this.getList();
this.$notify({ this.$notify({
title: '成功', title: "成功",
message: '创建成功', message: "创建成功",
type: 'success', type: "success",
duration: 2000 duration: 2000,
}); });
}) });
} else { } else {
return false; return false;
} }
...@@ -695,17 +839,17 @@ export default { ...@@ -695,17 +839,17 @@ export default {
*/ */
update(formName) { update(formName) {
const set = this.$refs; const set = this.$refs;
set[formName].validate(valid => { set[formName].validate((valid) => {
if (valid) { if (valid) {
this.dialogFormVisible = false; this.dialogFormVisible = false;
putGroup(this.form.id ,this.form).then(() => { putGroup(this.form.id, this.form).then(() => {
this.dialogFormVisible = false; this.dialogFormVisible = false;
this.getList(); this.getList();
this.$notify({ this.$notify({
title: '成功', title: "成功",
message: '编辑成功', message: "编辑成功",
type: 'success', type: "success",
duration: 2000 duration: 2000,
}); });
}); });
} else { } else {
...@@ -717,42 +861,45 @@ export default { ...@@ -717,42 +861,45 @@ export default {
this.form = { this.form = {
username: undefined, username: undefined,
name: undefined, name: undefined,
sex: '男', sex: "男",
password: undefined, password: undefined,
description: undefined description: undefined,
}; };
} },
} },
} };
</script> </script>
<style> <style>
.rights-main .el-dialog__body{ .rights-main .el-dialog__body {
height: 500px; height: 500px;
overflow: auto; overflow: auto;
} }
.table-row-header{ .table-row-header {
background: #f1f2f2; background: #f1f2f2;
} }
.border-r, .borderR{ .border-r,
border-right: 1px solid #e9e9e9; .borderR {
} border-right: 1px solid #e9e9e9;
.borderR{ }
/*width: 201px !important;*/ .borderR {
} /*width: 201px !important;*/
.border-b, .borderB{ }
border-bottom: 1px solid #e9e9e9; .border-b,
} .borderB {
.border-l{ border-bottom: 1px solid #e9e9e9;
border-left: 1px solid #e9e9e9; }
} .border-l {
.tc{ border-left: 1px solid #e9e9e9;
text-align: center; }
} .tc {
.tc-header, .second-checkbox{ text-align: center;
padding: 10px; }
} .tc-header,
.tc-header-btn{ .second-checkbox {
padding: 10px; padding: 10px;
margin: 0; }
} .tc-header-btn {
padding: 10px;
margin: 0;
}
</style> </style>
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