middleground_code_v2/src/views/systemSettings/jurisdictionManage/roleJurisdiction/index.vue

468 lines
14 KiB
Vue

<template>
<div>
<div style="display: flex; height: 100%">
<!-- <base-layout title="组织机构" ref="organLayout" style="width: 20%;" :bottonShow="false" :isPage="false "
:mainColor="mainColor" :bodyHight="orangTreeHight">
<div slot="main">
<base-tree ref="baseTree" :isCenter="false" :isSaveBtn="false" :Allshow="false"
:showCheckbox="false" :menuData="orangData" @handleNodeClick="orangClick"></base-tree>
</div>
</base-layout> -->
<base-layout ref="userLayout" @pageChange="pageChange" :showTitle="false" :buttonList="buttonList" :defaultButtonSwitch="false" @onFuncBtn="getFuncBtn" :isPage="true">
<div slot="main" slot-scope="{ tableHeight }" style="height: 100%">
<base-table ref="userCustomtable" :border="true" :showIndex="false" :tabLoading.sync="tabLoading" @radioChange="userRadioChange" :slotrow="true" :tableHeight="tableHeight" :tableData="tableData" :tableColumn="tableColumn">
</base-table>
</div>
</base-layout>
</div>
<base-dialog :closeEscape="true" :showClose="true" :closeModal="false" :dialogVisible.sync="settingDialog" class="userDialog" title="权限设置" width="50vw" top="5vh" :footerShow="true" @handleConfirmClick="settingConfirmClick">
<base-layout :bodyHight="settingTreeHight" :showTitle="false" :operateButtonSwitch="false">
<div slot="main">
<el-tabs v-model="activeName" type="card" @tab-click="handleClick" :before-leave="beforeLeave">
<el-tab-pane label="菜单权限" name="jurisdictionSetting">
<jurisdiction-Setting ref="jurisdictionSetting" :menuData="menuData"></jurisdiction-Setting>
</el-tab-pane>
<el-tab-pane label="按钮权限" name="buttonSetting">
<button-setting ref="buttonSetting"></button-setting>
</el-tab-pane>
<el-tab-pane label="数据权限" name="dataSetting">
<data-setting ref="dataSetting"></data-setting>
</el-tab-pane>
</el-tabs>
</div>
</base-layout>
</base-dialog>
<right-dialog ref="rightDialog" :menuData="menuData" v-if="permissionPopup"></right-dialog>
</div>
</template>
<script>
import baseLayout from "@/components/base/baseNewLayout"
import baseTable from "@/components/base/baseTable";
import baseDialog from "@/components/base/BaseNewDialog/index.vue";
import baseForm from "@/components/base/baseNewForm/index.vue";
import baseTree from "@/components/base/BaseMenuTree/index.vue";
import jurisdictionSetting from "./jurisdictionSetting.vue";
import buttonSetting from "./buttonSetting.vue";
import dataSetting from "./dataSetting.vue";
import configData from "./configData";
import rightDialog from "./rightDialog";
import { getCompanyId } from "@/utils/auth";
import { GetMenuTree } from "@/api/apis/menuManage";
import { RoleGetBillList } from "@/api/apis/roleManagement";
import { GetOrganTree } from "@/api/apis/organization";
import {
GetPppedomSet,
GetMenuButton,
GetAllButton,
GetAllBillDataPepedom,
GetAllBilldata,
PopedomSaveData,
} from "@/api/apis/jurisdiction";
import { authApi } from '@/api/apis/auth'
export default {
name: "review",
components: {
buttonSetting,
dataSetting,
baseLayout,
baseTable,
baseDialog,
baseForm,
baseTree,
jurisdictionSetting,
rightDialog,
},
data() {
return {
activeName: "jurisdictionSetting",
settingTreeHight: "500px",
radioIndex: false,
userRadioId: false,
settingDialog: false,
// orangTreeHight: 'calc(100vh - 119px)',
// tableHeight: 'calc(100vh - 189px)',
mainColor: "#f8f8f8",
tabLoading: false,
tableData: [],
// 搜索配置
menuData: [],
orangData: [],
buttonList: [
{
icon: "el-icon-plus",
menuName: "权限设置",
btnFunciton: "setting",
},
],
pageModel: {
pageNum: 1,
pageSize: 20,
departmentID: "",
Sequence: "",
SequenceName: "",
},
defaultProps: {
children: "children",
label: "label",
},
buttonArray: [],
allButtonList: [],
menuIDs: [],
menuList: [],
menuPopedom: [],
permissionPopup: false,
};
},
computed: {
// 表头配置
tableColumn() {
return configData.tableColumnJson;
},
},
watch: {
settingDialog: {
deep: true,
handler(newValue, oldValue) {
if (newValue == false) {
this.$refs.dataSetting.dataList = [];
this.$refs.jurisdictionSetting.$refs.menuTree.$refs.elTree.setCheckedKeys(
[]
);
// this.$refs.elTree.getCheckedKeys()
// this.$refs.jurisdictionSetting.$refs.menuTree.checkChange([])
this.$refs.buttonSetting.classifyButtonList = [];
}
},
},
},
created() { },
onShow() { },
mounted() {
this.initPage();
// this.getMenuData();
},
filters: {},
methods: {
beforeLeave(activeName, oldActiveName) {
if (
oldActiveName == "jurisdictionSetting" &&
activeName == "buttonSetting"
) {
this.menuPopedom = this.$refs.jurisdictionSetting.menuPopedom;
if (this.menuPopedom.length == 0) {
this.$vmNews("请选择菜单");
return false;
}
}
if (oldActiveName == "dataSetting" && activeName == "buttonSetting") {
return false;
}
},
// 切换tab
handleClick(tab, event) {
if (this.activeName == "buttonSetting") {
let checkdata = this.$refs.jurisdictionSetting.checkdata;
this.$refs.buttonSetting.GetAllButtonList(this.menuPopedom, checkdata);
}
if (this.activeName == "dataSetting") {
this.$refs.dataSetting.inPage();
}
},
// 获取菜单选中
getMenuIDs(menuData) {
menuData.forEach((el) => {
if (el.type) {
this.menuList.push(el);
this.menuIDs.push(el.id);
}
if (el.children != null && el.children && el.children.length) {
this.getMenuIDs(el.children);
}
});
},
// 初始化页面
initPage() {
this.getTableList();
// this.getOrganList();
this.$refs.userCustomtable.clearRadioIndex();
},
//获取菜单树
async getMenuData() {
// let res = await GetMenuButton({});
let res = await authApi('sysMenuConfigService', '', 'queryEntityTree', '', { state: 0 })
if (res.status == 200) {
let arr = res.attribute
this.menuData = res.attribute
this.changeMenu(this.menuData, 0)
// this.getButtonArray(this.menuData)
}
},
// 菜单树添加参数
changeMenu(data, num) {
let level = num;
level = level + 1;
data.forEach((el) => {
el.buttonList = [];
el.type = false;
// el.level = level
if (el.children != null && el.children && el.children.length) {
this.changeMenu(el.children, level);
}
});
},
// 获取用户信息列表
async getTableList() {
this.tabLoading = true;
this.tableData = [];
let params = {
...this.pageModel,
};
const res = await authApi("sysRoleService","","queryEntityPage","",params)
if (res.status == 200) {
console.log(res,'res')
this.tableData = res.attribute.list;
this.$nextTick(() => {
// this.$refs.customtable.clearRadioIndex()
this.$refs.userLayout.setPageTotal(res.attribute.total);
});
this.tabLoading = false;
}
},
getButtonArray(menuData) {
menuData.forEach((el, index) => {
this.allButtonList.forEach((item) => {
if (el.id == item.MenuID) {
item.active = false;
el.buttonList.push(item);
}
});
if (el.children != null && el.children && el.children.length) {
this.getButtonArray(el.children);
}
});
},
// 单选
userRadioChange(val) {
this.radioIndex = val.index;
this.userRadioId = val.id;
},
// 获取组织列表
async getOrganList() {
let params = {
// CompanyID: "43"
CompanyID: this.$store.state.user.companyID
? this.$store.state.user.companyID
: getCompanyId(),
};
let res = await GetOrganTree(params);
this.orangData = JSON.parse(res.data[0]);
},
// 树状图点击
orangClick(data) {
this.pageModel.departmentID = data.id;
this.resetTable();
// this.result()
},
resetTable() {
this.pageModel.pageNum = 1;
this.userRadioId = false;
this.radioIndex = false;
this.$nextTick(() => {
this.$refs.userCustomtable.clearRadioIndex();
this.$refs.userLayout.pageClear();
});
this.getTableList();
},
// 操作按钮事件
getFuncBtn(btnEven) {
if (this.radioIndex === false) {
this.$vmNews("请选择一条数据");
return;
}
this[btnEven.btnFunciton]();
},
//点击权限设置
async setting() {
this.getMenuData()
this.permissionPopup = true
this.$nextTick(async() => {
this.$refs.rightDialog.drawer = true
this.$refs.rightDialog.buttonLoading = true
let params = {
id: this.userRadioId,
kindId: 2
}
const res = await authApi('sysUserService', '', 'jurisdiction', '',params)
if (res.status == 200) {
const data = res.attribute
this.$refs.rightDialog.exhibitList(res.attribute.menvVoList,res.attribute.homeList,this.userRadioId)
}
})
},
// setting() {
// if (this.radioIndex === false) {
// this.$vmNews("请选择一条数据")
// return
// }
// this.settingDialog = true
// this.activeName = "jurisdictionSetting"
// this.GetPppedomData()
// },
async GetPppedomData() {
let params = {
objectID: this.userRadioId,
kindId: 2,
};
let res = await GetPppedomSet(params);
if (res.code == 1) {
const data = res.data;
let menuIDs =
data[0].length > 0 ? data[0][0].fp_MenuIdList.split(",") : [];
this.$refs.jurisdictionSetting.$refs.menuTree.selectData = menuIDs;
this.$refs.jurisdictionSetting.$refs.menuTree.checkChange(menuIDs);
let buttonPopedom = this.getbuttonPopedomList(res.data[1]);
this.$refs.buttonSetting.buttonPopedom = buttonPopedom;
let activeList = this.getActiveList(res.data[2]);
this.$refs.dataSetting.activeList = activeList;
// selectData
}
},
getActiveList(data) {
let array = [];
data.forEach((el) => {
el.dp_popeList.split(",").forEach((item) => {
array.push(item);
});
});
return array;
},
getbuttonPopedomList(data) {
let array = [];
data.forEach((el) => {
el.op_OperateKindList.split(",").forEach((item) => {
array.push(item);
});
});
return array;
},
pageChange(model) {
this.pageModel.pageNum = model.page;
this.pageModel.pageSize = model.limit;
this.getTableList();
},
settingConfirmClick() {
let menuPopedom = this.$refs.jurisdictionSetting.menuPopedom.join(",");
let buttonPopedom = this.getButtonPopedom(
this.$refs.buttonSetting.classifyButtonList
);
let dataPopedom = this.getDataPopedom(this.$refs.dataSetting.dataList);
let params = {
kindid: 2,
objectID: this.userRadioId,
menuPopedom: menuPopedom,
buttonPopedom: buttonPopedom,
dataPopedom: dataPopedom,
};
this.saveData(params);
},
async saveData(params) {
let res = await PopedomSaveData(params);
if (res.code == 1) {
this.$vmNews("保存成功", "success");
this.activeName = "jurisdictionSetting";
this.settingDialog = false;
}
},
getDataPopedom(dataPopedom) {
let array = [];
dataPopedom.forEach((el) => {
el.dp_popeList = [];
el.buttonList.forEach((item) => {
if (item.type) {
el.dp_popeList.push(item.id);
}
});
});
dataPopedom.forEach((el) => {
if (el.dp_popeList.length > 0) {
let params = {
dp_billKindID: el.billKindID,
dp_popeList: el.dp_popeList.join(","),
};
array.push(params);
}
});
return array;
},
getButtonPopedom(buttonPopedom) {
let array = [];
// let op_OperateKindList = []
buttonPopedom.forEach((el) => {
el.op_MenuID = el.id;
el.op_OperateKindList = [];
el.buttonList.forEach((item) => {
if (item.type) {
el.op_OperateKindList.push(item.id);
}
});
});
buttonPopedom.forEach((el) => {
if (el.op_OperateKindList.length > 0) {
let params = {
op_MenuID: el.op_MenuID,
op_OperateKindList: el.op_OperateKindList.join(","),
};
array.push(params);
}
});
return array;
},
},
};
</script>
<style scoped lang='scss'>
>>> .el-dialog__body {
padding: 0 25px;
}
</style>
<style scoped lang='scss'>
.roleName {
padding: 10px 0;
width: 90px;
border: 2px solid #f2f2f2;
background-color: #f2f2f2;
margin: 0px 10px 10px 0px;
text-align: center;
cursor: pointer;
box-shadow: 0 0 0 2px #f2f2f2;
border-radius: 5px;
}
.active {
background-color: #00a490;
border: 2px solid #ffffff;
color: white;
box-shadow: 0 0 0 2px #00a490;
}
.bigTitle {
padding-bottom: 10px;
margin: 10px 0;
font-size: 16px;
font-weight: bold;
border-bottom: 1px solid #ccc;
}
.organizationBody {
display: flex;
justify-content: space-evenly;
background-color: #f2f3f4;
padding: 10px;
}
</style>