<!DOCTYPE html>
|
<html>
|
<head>
|
<meta charset="utf-8">
|
<title>角色权限配置</title>
|
|
<script src="../../../js/vue/vue.js"></script>
|
<script src="../../../js/vue/element-ui/lib/index.js"></script>
|
<script src="../js/vue/page.js"></script>
|
<script src="../js/myelement.js"></script>
|
<script src="../data/data.js"></script>
|
|
<link href="../../../js/vue/element-ui/lib/theme-chalk/index.css" rel="stylesheet">
|
<link href="../css/myelement.css" rel="stylesheet">
|
<link href="../css/iconfont.css" rel="stylesheet">
|
<link href="../css/page.css" rel="stylesheet">
|
|
<link href="//at.alicdn.com/t/font_2374495_13ltsxm2eor.css" rel="stylesheet">
|
</head>
|
<body>
|
<div id="vbody">
|
<div id="page_root">
|
<div class="topbar">
|
<span>{{title}}</span>
|
</div>
|
|
<div style="padding: 0 20px; box-sizing: border-box;">
|
<div style="width: 24%; height: 100%; float: left; border: 1px solid #ccc;">
|
<div style="height: 40px; border-bottom: 1px solid #ccc;">
|
<div style="float: left; margin-left: 10px; font-weight: bold; line-height: 40px;">
|
<span>角色列表</span>
|
</div>
|
<div style="float: right; margin: 5px;">
|
<el-button-group style="margin-left: 3px;">
|
<el-button icon="el-icon-plus" @click="addData">添加</el-button>
|
<el-button @click="isEditTableData = !isEditTableData">
|
{{isEditTableData ? '取消编辑' : '在线编辑'}}
|
</el-button>
|
</el-button-group>
|
</div>
|
</div>
|
<h-table ref="table1" :table-fields="tableFields_role" :table-data="tableData_role"
|
:is-edit-table-data="isEditTableData" :table-height="tableHeight" :is-highlight-row="true"
|
:is-pagination="false" v-on:edit-data="editData" v-on:del-data="delData"
|
v-on:row-click="rowClick">
|
</h-table>
|
</div>
|
<div
|
:style="{width: '75%', height: tableHeight + 50+'px', float: 'right', border: '1px solid #ccc'}">
|
<el-container>
|
<el-aside :style="{width: '250px', height: tableHeight + 50 +'px'} ">
|
<div
|
style="border-bottom: 1px solid #ccc; width: 230px; height: 40px; padding-left: 20px;">
|
<div style="float: left; margin-left: 10px; font-weight: bold; line-height: 40px;">
|
<span>菜单详情</span>
|
</div>
|
<div style="float: right; margin: 5px;">
|
<el-button-group style="margin-left: 3px;">
|
<el-button @click="onSaveMenuByRole">保存</el-button>
|
</el-button-group>
|
</div>
|
</div>
|
|
<div :style="{width: '250px', height: tableHeight - 10 +'px', overflow: 'auto'}">
|
<el-tree v-if="refresh_menu" style="margin-top: 10px;margin-left: 30px;"
|
ref="menuTree" :data="menuList" show-checkbox highlight-current
|
node-key="menu_id" :default-expanded-keys="start_expanded_keys"
|
:default-checked-keys="checkedMenu" :props="defaultProps"
|
@node-click="handleTreeNodeClick">
|
</el-tree>
|
<el-tree ref="pageTree" style="margin-top: 10px;margin-left: 30px;" :data="pageList"
|
highlight-current node-key="id" :props="defaultProps"
|
@node-click="handleTreeNodeClick">
|
</el-tree>
|
</div>
|
|
</el-aside>
|
<el-main
|
:style="{height: tableHeight + 50 +'px', 'border-left': '1px solid #ccc', padding: 0}">
|
<div style="border-bottom: 1px solid #ccc; height: 40px; padding-left: 20px;">
|
<div style="float: left; margin-left: 10px; font-weight: bold; line-height: 40px;">
|
<span>{{selectPageObj.name}}</span>
|
</div>
|
<div style="float: right; margin: 5px;">
|
<el-button-group style="margin-left: 3px;">
|
<el-button @click="onSaveResourceByPage">保存</el-button>
|
</el-button-group>
|
</div>
|
</div>
|
<div style="padding-left: 10px; padding-right: 10px; box-sizing: border-box;">
|
<el-tabs v-model="activeName" @tab-click="handleClick">
|
<!-- <el-tab-pane label="容器" name="panel">
|
<h-table ref="table_panel" :table-fields="tableFields_panel"
|
:table-data="tableData_panel" :select-table-data="selectPanels"
|
:table-height="tab_tableHeight" :is-selection="true"
|
:is-show-index="true" :is-pagination="false"
|
v-on:selection-change="selectionPanel">
|
</h-table>
|
</el-tab-pane> -->
|
<el-tab-pane label="按键" name="button">
|
<h-table ref="table_button" :table-fields="tableFields_button"
|
:table-data="tableData_button" :select-table-data="selectButtons"
|
:table-height="tab_tableHeight" :is-selection="true"
|
:is-show-index="true" :is-pagination="false"
|
v-on:selection-change="selectionButton">
|
</h-table>
|
</el-tab-pane>
|
<!-- <el-tab-pane label="表格" name="table">
|
<h-table ref="table_table" :table-fields="tableFields_table"
|
:table-data="tableData_table" :select-table-data="selectTables"
|
:table-height="tab_tableHeight/3" :is-selection="true"
|
:is-show-index="true" :is-pagination="false"
|
v-on:row-click="rowClickTable" v-on:selection-change="selectionTable">
|
</h-table>
|
<div v-show="tableFieldShow">
|
<div style="height: 40px; padding-top: 20px; box-sizing: border-box;">
|
<span>表格字段</span>
|
</div>
|
<h-table ref="table_table2" :table-fields="tableFields_tablefield"
|
:table-data="tableData_tablefield"
|
:select-table-data="defaultTableFields"
|
:table-height="tab_tableHeight/2" :is-selection="true"
|
:is-show-index="true" :is-pagination="false"
|
v-on:selection-change="selectionTableField">
|
</h-table>
|
</div>
|
</el-tab-pane>
|
<el-tab-pane label="表单" name="form">
|
<h-table ref="table_form" :table-fields="tableFields_form"
|
:table-data="tableData_form" :select-table-data="selectForms"
|
:table-height="tab_tableHeight/3" :is-selection="true"
|
:is-show-index="true" :is-pagination="false"
|
v-on:row-click="rowClickForm" v-on:selection-change="selectionForm">
|
</h-table>
|
<div v-show="formFieldShow">
|
<div style="height: 40px; padding-top: 20px; box-sizing: border-box;">
|
<span>表单字段</span>
|
</div>
|
<h-table ref="table_form2" :table-fields="tableFields_formfield"
|
:table-data="tableData_formfield"
|
:select-table-data="defaultFormFields"
|
:table-height="tab_tableHeight/2" :is-selection="true"
|
:is-show-index="true" :is-pagination="false"
|
v-on:selection-change="selectionFormField">
|
</h-table>
|
</div>
|
</el-tab-pane> -->
|
<el-tab-pane label="Tab" name="tab">
|
<h-table ref="table_tab" :table-fields="tableFields_tab"
|
:table-data="tableData_tab" :select-table-data="selectTabs"
|
:table-height="tab_tableHeight" :is-selection="true"
|
:is-show-index="true" :is-pagination="false"
|
v-on:selection-change="selectionTab">
|
</h-table>
|
</el-tab-pane>
|
</el-tabs>
|
</div>
|
</el-main>
|
</el-container>
|
</div>
|
</div>
|
|
</div>
|
<el-dialog :title="title_dialog" :visible.sync="dialogVisible" width="50%" height="100%"
|
:before-close="handleClose"
|
:destroy-on-close="true"
|
>
|
<iframe id="myIframeId" :src="src" frameborder="0" width="100%" height="250px"></iframe>
|
<span slot="footer" class="dialog-footer">
|
<el-button @click="handleClose">取 消</el-button>
|
<el-button type="primary" @click="submit">确 定</el-button>
|
</span>
|
</el-dialog>
|
|
<div id="page_loading" style="position: absolute; top:0px; width: 100vw; height: 100vh;z-index: 1000;">
|
<div class="spinner">
|
<div class="cube1"></div>
|
<div class="cube2"></div>
|
</div>
|
</div>
|
</div>
|
</body>
|
|
<script>
|
var pVue = new Vue({
|
el: "#vbody",
|
data: {
|
title: "角色权限配置",
|
|
|
menuList: [],
|
pageList: [],
|
defaultProps: {
|
children: 'children',
|
label: 'label'
|
},
|
selectPageObj: {},
|
//isStrictly:true,
|
|
tableFields_role: [
|
{field: "id", name: "id", isshow: "T", align: "center"},
|
{field: "name", name: "名称", isshow: "T", align: "left", width: 150},
|
{field: "type", name: "类型", isshow: "T", align: "center", formatterjson: "{\"role\": \"角色\", \"user\": \"员工\"}"},
|
{field: "active", name: "是否激活", isshow: "T", align: "center", formatterjson: "{\"F\": \"冻结\", \"T\": \"激活\"}"}, ],
|
tableData_role: [],
|
|
tableFields_panel: [
|
{field: "name", name: "名称", isshow: "T", align: "center"},
|
{field: "type", name: "定位类型", isshow: "T", align: "center"},
|
{field: "top", name: "定位top", isshow: "T", align: "center"},
|
{field: "left", name: "定位left", isshow: "T", align: "center"},
|
{field: "bottom", name: "定位bottom", isshow: "T", align: "center"},
|
{field: "right", name: "定位right", isshow: "T", align: "center"},
|
{field: "width", name: "宽度", isshow: "T", align: "center"},
|
{field: "height", name: "高度", isshow: "T", align: "center"}
|
],
|
tableData_panel: [],
|
|
tableFields_button: [
|
//{isshow: "T", field: "type", name: "容器类型", align: "center"},
|
{isshow: "T", field: "parent_name", name: "容器名称", align: "center"},
|
{isshow: "T", field: "name", name: "按键名称", align: "center"},
|
{isshow: "T", field: "icon", name: "按键图标", align: "center"},
|
{isshow: "T", field: "id_name", name: "标识", align: "center"},
|
{isshow: "T", field: "describe", name: "功能描述", align: "left"}
|
],
|
tableData_button: [],
|
|
tableFields_table: [
|
{isshow: "T", field: "type", name: "容器类型", align: "center"},
|
{isshow: "T", field: "parent_name", name: "容器名称", align: "center"},
|
{isshow: "T", field: "name", name: "名称", align: "center"},
|
{isshow: "T", field: "code", name: "编号", align: "center"},
|
{isshow: "T", field: "data_type", name: "数据定义", align: "center"},
|
{isshow: "T", field: "data_url", name: "SQL名称或请求接口", align: "left"},
|
{isshow: "T", field: "data_orderby", name: "数据排序", align: "center"}
|
],
|
tableData_table: [],
|
|
tableFields_tablefield: [
|
{field: "name", name: "名称", isshow: "T", align: "center"},
|
{field: "field", name: "字段", isshow: "T", align: "center"},
|
{field: "isshow", name: "是否显示", isshow: "T", align: "center"}
|
],
|
tableData_tablefield: [],
|
|
tableFields_form: [
|
{isshow: "T", field: "type", name: "容器类型", align: "center"},
|
{isshow: "T", field: "parent_name", name: "容器名称", align: "center"},
|
{isshow: "T", field: "name", name: "名称", align: "center"},
|
{isshow: "T", field: "code", name: "编号", align: "center"},
|
{isshow: "T", field: "istitle", name: "是否显示标题", align: "center"},
|
{isshow: "T", field: "title", name: "表单标题", align: "center"},
|
{isshow: "T", field: "columnnumber", name: "每行属性列数", align: "center"},
|
{isshow: "T", field: "labelwidth", name: "属性名宽度", align: "center"},
|
{isshow: "T", field: "labelposition", name: "属性名对齐方式",align: "center"},
|
{isshow: "T", field: "border", name: "表单边框", align: "center"},
|
{isshow: "T", field: "disabled", name: "是否只读", align: "center"}
|
],
|
tableData_form: [],
|
|
tableFields_formfield: [
|
{field: "name", name: "名称", isshow: "T", align: "center"},
|
{field: "field", name: "字段", isshow: "T", align: "center"},
|
{field: "isshow", name: "是否显示", isshow: "T", align: "center"},
|
{field: "type", name: "编辑类型", isshow: "T", align: "center"},
|
{field: "width", name: "宽度", isshow: "T", align: "center"},
|
{field: "required", name: "是否必填的标记", isshow: "T", align: "center"},
|
{field: "disabled", name: "是否只读", isshow: "T", align: "center"},
|
{field: "colspan", name: "横向合并列数", isshow: "T", align: "center"},
|
{field: "pattern", name: "内容的格式校验", isshow: "T", align: "center"},
|
{field: "formatter", name: "内容格式化", isshow: "T", align: "center"}
|
],
|
tableData_formfield: [],
|
|
tableFields_tab: [
|
{field: "panel_id", name: "容器id", isshow: "T", align: "center"},
|
{field: "name", name: "名称", isshow: "T", align: "center"},
|
{field: "icon", name: "图标", isshow: "T", align: "center"},
|
{field: "describe", name: "功能描述", isshow: "T", align: "center"},
|
{field: "id_name", name: "Tab标识", isshow: "T", align: "center"}
|
],
|
tableData_tab: [],
|
|
tableHeight: 430,
|
tab_tableHeight: 0,
|
isEditTableData: false,
|
ajaxNum:0,
|
refresh_menu: true,
|
|
selectRole: {},
|
resultMenu: [], //需要添加的菜单
|
selectMenu: {
|
menuId: {
|
panels: [],
|
buttons: [],
|
tables: [],
|
forms: [],
|
tabs: []
|
}
|
}, //需要添加的资源
|
selectTableFields: {}, //需要添加的表格字段
|
selectFormFields: {}, //需要添加的表单字段
|
|
selectFieldsByTable: {},
|
defaultTableIsEmpty: true,
|
selectFieldsByForm: {},
|
defaultFormIsEmpty: true,
|
|
start_expanded_keys: [], //默认展开的菜单
|
checkedMenu: [], //默认选中菜单
|
checkedMenu_: [],
|
selectPanels: [],
|
selectButtons: [],
|
selectTables: [],
|
selectForms: [], //默认选中表单
|
defaultTableFields: [], //默认选中表格字段
|
defaultFormFields: [], //默认选中表单字段
|
selectTabs: [],
|
ajaxCount:0,
|
activeName: '', //默认展示的标签页
|
|
menuId: "",
|
|
|
dialogVisible: false, //弹出框
|
src: "",
|
title_dialog: "",
|
|
type: '',
|
pageId: '',
|
tabId: '',
|
tableId: '',
|
formId: '',
|
tableFieldShow: false,
|
formFieldShow: false,
|
|
},
|
created() {
|
|
var clientHeight = document.documentElement.clientHeight;
|
this.tableHeight = clientHeight - 120;
|
this.tab_tableHeight = this.tableHeight - 60;
|
|
this.$nextTick(() => { // 以服务的方式调用的 Loading 需要异步关闭
|
hideLoading();
|
});
|
},
|
|
mounted() {
|
//获取角色和用户
|
this.getRoleAndUser();
|
|
//获取页面和菜单
|
this.getPageOrMenu();
|
},
|
|
methods: {
|
//获取角色和用户
|
getRoleAndUser() {
|
let me = this;
|
var params = {
|
isClientMode: false,
|
dataname: "getAllRoleAndUser",
|
filter: "1=1",
|
returnType: "entityset",
|
|
}
|
me.tableData_role=[];
|
Server.call("root/data/procedure", params, function(result) {
|
console.log(result);
|
if (result && result.data) {
|
let data_ = result.data.entityset;
|
data_.map((e)=>{
|
if(e.type == 'role') {
|
me.tableData_role.push(e);
|
}
|
})
|
//me.tableData_role = data_;
|
}
|
});
|
},
|
|
getPageOrMenu() {
|
let me = this;
|
let filter_ = "1=1";
|
|
let param_ = {
|
isClientMode: false,
|
dataname: "getPageOrMenu",
|
filter: filter_,
|
returnType: "entityset",
|
}
|
Server.call("root/data/procedure", param_, function(result) {
|
console.log(result);
|
me.menuList = [];
|
me.pageList = [];
|
|
if (result && result.data) {
|
let data_ = result.data.entityset;
|
var menuList_1 = [];
|
var pageList_1 = [];
|
data_.map(mp => {
|
if (mp.menu_id) {
|
menuList_1.push(mp);
|
} else {
|
pageList_1.push(mp);
|
}
|
});
|
|
var menuList_ = ArrayToTree(menuList_1, "name");
|
var pageList_ = ArrayToTree(pageList_1, "name");
|
me.menuList = menuList_;
|
me.pageList = pageList_;
|
}
|
});
|
},
|
|
//添加角色
|
addData() {
|
this.dialogVisible = true
|
this.title_dialog = "添加"
|
this.src = "role_add.html"
|
},
|
//编辑角色
|
editData(scope) {
|
this.selectRole = scope.row
|
console.log(this.selectRole)
|
this.dialogVisible = true
|
this.title_dialog = "编辑"
|
this.src = "role_edit.html"
|
},
|
//删除角色
|
delData(scope) {
|
var me = this;
|
this.$confirm('此操作将永久删除该角色及其所有权限, 是否继续?', '提示', {
|
confirmButtonText: '确定',
|
cancelButtonText: '取消',
|
type: 'warning'
|
}).then(() => {
|
var param_ = {
|
id: scope.row.id,
|
dataname: 'sysRole',
|
isClientMode: false
|
}
|
Server.call("root/data/deleteEntity", param_, function(result) {
|
console.log(result);
|
if (result && result.data) {
|
me.getRoleAndUser();
|
}
|
});
|
var param_2 = {
|
dataname: 'resourceRole',
|
isClientMode: false,
|
filter: "1=1 and role_id = '" + scope.row.id + "'",
|
}
|
Server.call("root/data/deleteEntitySet", param_2, function(result) {
|
console.log(result);
|
if (result && result.data) {
|
me.getRoleAndUser();
|
}
|
});
|
if(me.selectRole.type == 'user') {
|
var param_3 = {
|
dataname: 'user_employee_role',
|
isClientMode: false,
|
filter: "1=1 and userid = '" + me.selectRole.id + "'",
|
}
|
Server.call("root/data/deleteEntitySet", param_3, function(result) {
|
console.log(result);
|
if (result && result.data) {
|
me.getRoleAndUser();
|
}
|
});
|
}
|
}).catch(() => {
|
Root.message({
|
type: 'info',
|
message: '已取消删除'
|
});
|
});
|
},
|
//保存角色
|
submit() {
|
this.dialogVisible = false;
|
let me = this;
|
let radio_ = window.frames[0].childVue.radio;
|
let param_ = {};
|
let type = '';
|
if (radio_) {
|
type = 'insertEntity';
|
if(radio_ == 'role') {
|
param_ = window.frames[0].childVue.role;
|
param_.dataname = 'sysRole';
|
}
|
if(radio_ == 'user') {
|
|
param_ = window.frames[0].childVue.user;
|
param_.dataname = 'user';
|
}
|
} else {
|
type = 'updateEntity';
|
if(me.selectRole.type == 'role') {
|
param_ = window.frames[0].childVue.role;
|
param_.dataname = 'sysRole';
|
}
|
if(me.selectRole.type == 'user') {
|
var saveCheckedRoles = window.frames[0].childVue.checkedRoles;
|
param_ = window.frames[0].childVue.user;
|
param_.dataname = 'user';
|
}
|
}
|
param_.isClientMode = false;
|
console.log(param_)
|
Server.call("root/data/" + type, param_, function(result) {
|
console.log(result);
|
if (result && result.data) {
|
if(!radio_ && me.selectRole.type == 'user') {
|
let filter_ = "1=1 and userid = '" + me.selectRole.id + "'";
|
|
param_ = {
|
isClientMode: false,
|
dataname: "user_employee_role",
|
filter: filter_,
|
}
|
Server.call("root/data/deleteEntitySet", param_, function(result) {
|
console.log(result);
|
|
for (let i = 0; i < saveCheckedRoles.length; i++) {
|
let param_1 = {
|
dataname: "role",
|
isClientMode: false,
|
filter: "1=1 and name = '" + saveCheckedRoles[i] + "'",
|
}
|
Server.call("root/data/getEntitySet", param_1, function(result) {
|
console.log(result);
|
if (result && result.data.entityset) {
|
let data_ = result.data.entityset;
|
let roleId = data_[0].id;
|
|
param_2 = {
|
dataname: "user_employee_role",
|
userid : me.selectRole.id,
|
employeeid : me.selectRole.employeeid,
|
roleid : roleId,
|
rolename : saveCheckedRoles[i],
|
isClientMode: false,
|
}
|
Server.call("root/data/insertEntity", param_2, function(result) {
|
console.log(result);
|
});
|
}
|
});
|
}
|
});
|
}
|
me.getRoleAndUser();
|
/* window.frames[0].childVue.role = {};
|
window.frames[0].childVue.user = {}; */
|
me.src = '';
|
}
|
});
|
},
|
|
//点击角色
|
rowClick(obj) {
|
this.activeName = '';
|
this.menuId = "";
|
this.selectRole = obj.row;
|
console.log(this.selectRole)
|
//获取该角色权限
|
let type = this.type;
|
/* if (this.selectMenu != {}) {
|
//提醒存在未保持的设置
|
|
|
this.selectMenu = {};
|
} */
|
|
this.getPermissionByRole('menu');
|
},
|
|
//点击菜单节点,需要判断是否被选中
|
handleTreeNodeClick(data, node, e) {
|
let me = this;
|
this.activeName = 'button';
|
this.tableData_panel = [];
|
this.tableData_button = [];
|
this.tableData_table = [];
|
this.tableData_form = [];
|
this.tableData_tablefield = [];
|
this.tableData_formfield = [];
|
this.tableData_tab = [];
|
this.tableFieldShow = false;
|
this.formFieldShow = false;
|
this.menuId = "";
|
|
if (data.menu_id) {
|
this.$refs.pageTree.setCurrentKey();
|
if (!node.checked) { //如果没有被选中
|
Root.message({
|
type: 'warning',
|
message: '仅选中的菜单可配置资源'
|
});
|
return
|
}
|
this.menuId = data.menu_id;
|
} else {
|
this.$refs.menuTree.setCurrentKey();
|
}
|
|
if (data && data.page_id) {
|
me.selectPageObj = data;
|
me.pageId = data.page_id;
|
me.selectMenu[me.menuId] = {
|
panels: [],
|
buttons: [],
|
tables: [],
|
forms: [],
|
tabs: []
|
};
|
me.selectPageObj = {};
|
me.selectFormFields = {};
|
me.selectTableFields = {};
|
me.selectFieldsByForm = {};
|
me.selectFieldsByTable = {};
|
|
me.selectPanels = [];
|
me.selectButtons = [];
|
me.selectTables = [];
|
me.selectForms = [];
|
me.defaultTableFields = [];
|
me.defaultFormFields = [];
|
me.selectTabs = [];
|
|
//根据pageId查询容器数据列表
|
//me.getPanelTableDataByPageId();
|
//根据pageId、tabId查询button数据列表
|
me.getButtonTableDataByPage();
|
//根据pageId查询tab数据列表
|
me.getTabTableDataByPageId();
|
//根据pageId、tabId查询table数据列表
|
//me.getTableTableDataByPageId();
|
//根据pageId、tabId查询form数据列表
|
//me.getFormTableDataByPageId();
|
|
//根据pageId获取TableFields
|
//me.getTableFieldsDataByPageId();
|
//根据pageId获取FormFields
|
//me.getFormFieldsDataByPageId();
|
}
|
},
|
|
//根据pageId获取TableFields,并按照tableId分组
|
getTableFieldsDataByPageId() {
|
var me = this;
|
// me.selectFieldsByTable[me.pageId][me.tableId] = [];
|
var params = {
|
isClientMode: false,
|
dataname: "getRoleTableFieldByPage", //buttonByTab/buttonByPanel
|
filter: "r.role_id='" + me.selectRole.id + "' and f.pageid='" + me.pageId + "'",
|
returnType: "entityset",
|
}
|
Server.call("root/data/procedure", params, function(result) {
|
console.log(result);
|
if (result && result.data.entityset) {
|
let data_ = result.data.entityset;
|
data_.map(f => {
|
|
if (!me.selectFieldsByTable[f.table_id]) {
|
me.selectFieldsByTable[f.table_id] = [];
|
}
|
me.selectFieldsByTable[f.table_id].push(f.resource_id);
|
me.defaultTableIsEmpty = false;
|
});
|
|
}
|
});
|
},
|
//根据pageId获取FormFields,并按照formId分组
|
getFormFieldsDataByPageId() {
|
var me = this;
|
//me.selectFieldsByForm[me.pageId][me.formId] = [];
|
var params = {
|
isClientMode: false,
|
dataname: "getRoleFormFieldByPage", //buttonByTab/buttonByPanel
|
filter: "r.role_id='" + me.selectRole.id + "' and f.pageid='" + me.pageId + "'",
|
returnType: "entityset",
|
}
|
Server.call("root/data/procedure", params, function(result) {
|
console.log(result);
|
if (result && result.data) {
|
let data_ = result.data.entityset;
|
data_.map(f => {
|
if (!me.selectFieldsByForm[f.form_id]) {
|
me.selectFieldsByForm[f.form_id] = [];
|
}
|
me.selectFieldsByForm[f.form_id].push(f.resource_id);
|
me.defaultFormIsEmpty = false;
|
});
|
}
|
});
|
},
|
|
//点击"表格"
|
rowClickTable(obj) {
|
this.tableId = obj.row.id;
|
this.tableFieldShow = true;
|
//根据tableId查询字段表
|
let me = this;
|
let param_ = {
|
dataname: "tableField",
|
isClientMode: false,
|
filter: "table_id='" + me.tableId + "'",
|
orderby: "orderno"
|
|
}
|
|
Server.call("root/data/getEntitySet", param_, function(result) {
|
console.log(result);
|
if (result && result.data.entityset) {
|
let data_ = result.data.entityset;
|
me.tableData_tablefield = data_;
|
me.$nextTick(() => {
|
if (me.selectFieldsByTable[me.tableId])
|
me.defaultTableFields = clone(me.selectFieldsByTable[me.tableId]);
|
})
|
//me.getPermissionByRole('tableField');
|
}
|
});
|
},
|
|
//点击"表单"
|
rowClickForm(obj) {
|
console.log(obj.row.id)
|
this.formId = obj.row.id;
|
this.formFieldShow = true;
|
//根据tableId查询字段表
|
let me = this;
|
let param_ = {
|
dataname: "formFieldByFormId",
|
isClientMode: false,
|
filter: "form_id='" + me.formId + "'",
|
|
}
|
|
Server.call("root/data/getEntitySet", param_, function(result) {
|
console.log(result);
|
if (result && result.data.entityset) {
|
let data_ = result.data.entityset;
|
me.tableData_formfield = data_;
|
me.$nextTick(() => {
|
if (me.selectFieldsByForm[me.formId])
|
me.defaultFormFields = clone(me.selectFieldsByForm[me.formId]);
|
})
|
//me.getPermissionByRole('formField');
|
}
|
});
|
},
|
|
//根据pageId查询容器数据列表
|
getPanelTableDataByPageId() {
|
let me = this;
|
filter_ = "1=1 and page_id='" + me.pageId + "'";
|
|
param_ = {
|
isClientMode: false,
|
dataname: "pagePanel",
|
filter: filter_,
|
}
|
Server.call("root/data/getEntitySet", param_, function(result) {
|
console.log(result);
|
if (result && result.data) {
|
let data_ = result.data.entityset;
|
me.tableData_panel = data_;
|
//me.getPermissionByRole('panel');
|
me.getDefaultSelect(data_,'Panels');
|
}
|
});
|
},
|
|
//根据pageId查询tab数据列表
|
getTabTableDataByPageId() {
|
let me = this;
|
filter_ = "1=1 and page_id = '" + me.pageId + "'";
|
|
param_ = {
|
isClientMode: false,
|
dataname: "tabs",
|
filter: filter_,
|
}
|
Server.call("root/data/getEntitySet", param_, function(result) {
|
console.log(result);
|
if (result && result.data) {
|
let data_ = result.data.entityset;
|
me.tableData_tab = data_;
|
//me.tabId = data_.id;
|
//me.getPermissionByRole('tab');
|
me.getDefaultSelect(data_,'Tabs');
|
}
|
});
|
},
|
|
//根据pageId、tabId查询button数据列表
|
getButtonTableDataByPage() {
|
//按键
|
let me = this;
|
var params = {
|
isClientMode: false,
|
dataname: "getAllButtonByPage", //buttonByTab/buttonByPanel
|
filter: "p.page_id='" + me.pageId + "'",
|
returnType: "entityset",
|
}
|
Server.call("root/data/procedure", params, function(result) {
|
console.log(result);
|
if (result && result.data) {
|
let data_ = result.data.entityset;
|
me.tableData_button = clone(data_);
|
//me.getPermissionByRole('button');
|
me.getDefaultSelect(data_,'Buttons')
|
}
|
});
|
},
|
|
//根据pageId查询table数据列表
|
getTableTableDataByPageId() {
|
let me = this;
|
var params = {
|
dataname: "getAllTableByPage", //buttonByTab/buttonByPanel
|
isClientMode: false,
|
filter: "p.page_id='" + me.pageId + "'",
|
returnType: "entityset",
|
}
|
|
Server.call("root/data/procedure", params, function(result) {
|
console.log(result);
|
if (result && result.data) {
|
let data_ = result.data.entityset;
|
me.tableData_table = data_;
|
//me.getPermissionByRole('table');
|
me.getDefaultSelect(data_,'Tables');
|
}
|
});
|
},
|
|
//根据pageId查询form数据列表
|
getFormTableDataByPageId() {
|
let me = this;
|
var params = {
|
dataname: "getAllFormByPage", //buttonByTab/buttonByPanel
|
isClientMode: false,
|
filter: "p.page_id='" + me.pageId + "'",
|
returnType: "entityset",
|
}
|
Server.call("root/data/procedure", params, function(result) {
|
console.log(result);
|
if (result && result.data) {
|
let data_ = result.data.entityset;
|
me.tableData_form = data_;
|
//me.getPermissionByRole('form');
|
me.getDefaultSelect(data_,'Forms');
|
}
|
});
|
},
|
getDefaultSelect(data_,type) {
|
let id = "";
|
for (let i = 0; i < data_.length; i++) {
|
if (i == data_.length - 1) {
|
id = id + data_[i].id
|
} else {
|
id = id + data_[i].id + "','"
|
}
|
}
|
console.log(id)
|
let me = this;
|
filter_ = "1=1 and role_id = '" + me.selectRole.id + "' and role_type = '" + me.selectRole.type + "' and type = '" + type.toLowerCase().substring(0,type.length-1) + "' and resource_id in('" + id + "')";
|
|
/* param_ = {
|
isClientMode: false,
|
dataname: "resourceRole",
|
filter: filter_,
|
} */
|
|
var param_ = {
|
isClientMode: false,
|
dataname: "getResourceRoleFilter",
|
filter: filter_,
|
returnType: "entityset",
|
}
|
|
Server.call("root/data/procedure", param_, function(result) {
|
console.log(result);
|
if (result && result.data) {
|
let data__ = result.data.entityset;
|
let arr = [];
|
for (let i = 0; i < data__.length; i++) {
|
arr[i] = data__[i].resource_id
|
}
|
/* me.selectButtons = arr;
|
me.selectMenu[me.menuId].buttons = arr; */
|
|
me['select' + type] = arr;
|
me.selectMenu[me.menuId][type.toLowerCase()] = arr;
|
|
}
|
});
|
},
|
|
handleClick(tab) {
|
// if (tab.name == "button") {
|
// //this.getButtonByRole();
|
// this.getPermissionByRole("button");
|
// }
|
// if (tab.name == "tab") {
|
// this.getPermissionByRole("tab");
|
// }
|
// if (tab.name == "table") {
|
// this.getPermissionByRole("table");
|
// }
|
// if (tab.name == "form") {
|
// this.getPermissionByRole("form");
|
// }
|
},
|
|
getPermissionByRole(type) {
|
let me = this;
|
var type_ = type;
|
var roleType = this.selectRole.type
|
if (type == "menu") {
|
type_ = "menu','page";
|
}
|
|
let filter_ = "1=1 and role_id = '" + this.selectRole.id + "' and role_type = '" + roleType + "' and type in ( '" + type_ + "')";
|
|
/* let param_ = {
|
isClientMode: false,
|
dataname: "resourceRole",
|
filter: filter_,
|
} */
|
var param_ = {
|
isClientMode: false,
|
dataname: "getResourceRoleFilter",
|
filter: filter_,
|
returnType: "entityset",
|
}
|
|
Server.call("root/data/procedure", param_, function(result) {
|
console.log(result);
|
if (result && result.data) {
|
let data_ = result.data.entityset;
|
let arr = [];
|
for (let i = 0; i < data_.length; i++) {
|
arr[i] = data_[i].resource_id
|
}
|
|
if (type == 'menu') {
|
me.start_expanded_keys = [];
|
me.checkedMenu = [];
|
me.checkedMenu_ = arr;
|
arr = [];
|
var params = {
|
dataname: "getLastChildrenMenu",
|
isClientMode: false,
|
filter: "1=1 and role_id = '" + me.selectRole.id + "' and role_type = '" + roleType + "' and type = 'menu'",
|
returnType: "entityset",
|
}
|
Server.call("root/data/procedure", params, function(result) {
|
console.log(result);
|
if (result && result.data) {
|
let data__ = result.data.entityset;
|
let obj = {}
|
for (let i = 0; i < data__.length; i++) {
|
/* if(data__[i].parent_id) {
|
if(obj[data__[i].parent_id]) {
|
obj[data__[i].parent_id] = ""
|
}
|
obj[data__[i].id] = "1"
|
} */
|
if (data__[i].page_id) {
|
obj[data__[i].id] = "1"
|
}
|
|
|
//arr[i] = data__[i].id
|
}
|
Object.keys(obj).map(key=>{
|
if(obj[key]) {
|
arr.push(key)
|
}
|
})
|
me.start_expanded_keys = arr;
|
me.checkedMenu = arr;
|
}
|
});
|
|
me.refresh_menu = false;
|
//me.isStrictly=false;
|
me.$forceUpdate()
|
me.$nextTick(() => {
|
me.refresh_menu = true;
|
|
//me.$refs.menuTree.setCheckedKeys(arr)
|
});
|
} else if (type == 'panel') {
|
me.selectPanels = arr;
|
me.selectMenu[me.menuId].panels = arr;
|
console.log(me.selectMenu[me.menuId].panels)
|
} else if (type == 'button') {
|
me.selectButtons = arr;
|
me.selectMenu[me.menuId].buttons = arr;
|
|
//me.$refs.table_button.toggleSelection(data_);
|
} else if (type == 'table') {
|
me.selectTables = arr;
|
me.selectMenu[me.menuId].tables = arr;
|
|
} else if (type == 'tableField') {
|
me.selectTableFields = arr;
|
me.selectFieldsByTable[me.menuId][me.tableId] = arr;
|
|
} else if (type == 'form') {
|
me.selectForms = arr;
|
me.selectMenu[me.menuId].forms = arr;
|
|
} else if (type == 'formField') {
|
me.selectFormFields = arr;
|
me.selectFieldsByForm[me.menuId][me.formId] = arr;
|
|
} else if (type == 'tab') {
|
me.selectTabs = arr;
|
me.selectMenu[me.menuId].tabs = arr;
|
|
}
|
}
|
});
|
},
|
|
//保存菜单权限
|
onSaveMenuByRole() {
|
//this.isStrictly=true;
|
//this.$nextTick(()=>{
|
//let resultMenu = this.$refs.menuTree.getCheckedKeys().concat(this.$refs.menuTree.getHalfCheckedKeys())
|
//})
|
|
let resultMenu = this.$refs.menuTree.getCheckedKeys().concat(this.$refs.menuTree.getHalfCheckedKeys())
|
let id = "";
|
for (let i = 0; i < this.checkedMenu_.length; i++) {
|
if (i == this.checkedMenu_.length - 1) {
|
id = id + this.checkedMenu_[i]
|
} else {
|
id = id + this.checkedMenu_[i] + "','"
|
}
|
}
|
|
console.log(id)
|
|
var roleType = this.selectRole.type;
|
|
let me = this;
|
//document.getElementById("page_loading").style.display = 'block'
|
let filter_ = "1=1 and role_id = '" + this.selectRole.id + "' and type = 'menu' and role_type = '" + roleType + "'";// and resource_id in('" + id + "')
|
|
param_ = {
|
isClientMode: false,
|
dataname: "resourceRole",
|
filter: filter_,
|
}
|
Server.call("root/data/deleteEntitySet", param_, function(result) {
|
console.log(result);
|
|
for (let i = 0; i < resultMenu.length; i++) {
|
param_ = {
|
role_id: me.selectRole.id,
|
type: "menu",
|
resource_id: resultMenu[i],
|
role_type: me.selectRole.type,
|
}
|
param_.isClientMode = false,
|
param_.dataname = "resourceRole",
|
|
Server.call("root/data/insertEntity", param_, function(result) {
|
console.log(result);
|
me.ajaxNum ++;
|
me.checkedMenu_ = resultMenu;
|
if(me.ajaxNum == resultMenu.length - 1) {
|
me.$message({
|
message: '保存成功',
|
type: 'success'
|
});
|
//document.getElementById("page_loading").style.display = 'none'
|
}
|
});
|
}
|
});
|
|
},
|
|
selectionPanel(val) {
|
if (!this.selectMenu[this.menuId]) {
|
this.selectMenu[this.menuId] = {};
|
}
|
this.selectMenu[this.menuId].panels = val;
|
},
|
selectionButton(val) {
|
console.log("button变化")
|
//this.selectButtons = val;
|
if (!this.selectMenu[this.menuId]) {
|
this.selectMenu[this.menuId] = {};
|
}
|
|
this.selectMenu[this.menuId].buttons = val;
|
},
|
selectionTable(val) {
|
if (!this.selectMenu[this.menuId]) {
|
this.selectMenu[this.menuId] = {};
|
}
|
this.selectMenu[this.menuId].tables = val;
|
},
|
selectionTableField(val) {
|
this.selectTableFields[this.tableId] = val;
|
},
|
selectionForm(val) {
|
if (!this.selectMenu[this.menuId]) {
|
this.selectMenu[this.menuId] = {};
|
}
|
|
this.selectMenu[this.menuId].forms = val;
|
},
|
selectionFormField(val) {
|
this.selectFormFields[this.formId] = val;
|
},
|
selectionTab(val) {
|
if (!this.selectMenu[this.menuId]) {
|
this.selectMenu[this.menuId] = {};
|
}
|
this.selectTabs;
|
this.selectMenu[this.menuId].tabs = val;
|
},
|
//保存单个页面的资源权限
|
onSaveResourceByPage() {
|
let me = this;
|
/* me.selectMenu[me.pageId] = {
|
panels:[],
|
buttons:[],
|
tables:[],
|
forms:[],
|
tabs: []
|
};
|
me.selectFieldsByTable[me.pageId] = {};
|
me.selectFieldsByForm[me.pageId] = {}; */
|
//this.saveResourceByPage('Panels');
|
let arr_1 = me.selectMenu[me.menuId].tabs;
|
let arr_2 = me.selectMenu[me.menuId].buttons;
|
this.ajaxCount = arr_1.length + arr_2.length;
|
this.saveResourceByPage('Buttons');
|
|
// this.saveResourceByPage('Tables');
|
// this.saveResourceByPage('Forms');
|
this.saveResourceByPage('Tabs');
|
// this.saveResourceFiledByPage('tableField');
|
// this.saveResourceFiledByPage('formField');
|
|
|
|
/* this.$message({
|
message: '保存成功',
|
type: 'success'
|
}); */
|
},
|
saveResourceFiledByPage(type) {
|
let idstr = "";
|
let obj = {};
|
let isEmpty = true;
|
var me = this;
|
if (type == 'tableField' && ! me.defaultTableIsEmpty) {
|
obj = me.selectFieldsByTable;
|
isEmpty = false;
|
} else if (type == 'formField' && ! me.defaultFormIsEmpty) {
|
obj = me.selectFieldsByForm;
|
isEmpty = false;
|
}
|
|
if (!isEmpty) {
|
for (tableid in obj) {
|
obj[tableid].map((tablefield) => {
|
idstr = idstr + tablefield + "','";
|
})
|
}
|
idstr = idstr.substring(0, idstr.length - 3);
|
}
|
|
console.log(idstr)
|
var roleType = me.selectRole.type;
|
let filter_ = "1=1 and role_id = '" + me.selectRole.id + "' and type = '" + type + "' and role_type = '" + roleType + "' and resource_id in('" + idstr + "')";
|
|
param_ = {
|
isClientMode: false,
|
dataname: "resourceRole",
|
filter: filter_,
|
}
|
Server.call("root/data/deleteEntitySet", param_, function(result) {
|
console.log(result);
|
var obj_ = {};
|
if (type == 'tableField') {
|
obj_ = me.selectTableFields;
|
let defField = {};
|
for(key in me.selectTableFields) {
|
defField[key] = [];
|
if(me.selectTableFields[key].length>0) {
|
me.selectTableFields[key].map((item)=>{
|
defField[key].push(item.id)
|
})
|
}
|
}
|
me.selectFieldsByTable = clone(defField);
|
}
|
else if (type == 'formField') {
|
obj_ = me.selectFormFields;
|
let defField = {};
|
for(key in me.selectFormFields) {
|
defField[key] = [];
|
if(me.selectFormFields[key].length>0) {
|
me.selectFormFields[key].map((item)=>{
|
defField[key].push(item.id)
|
})
|
}
|
}
|
me.selectFieldsByForm = clone(defField)
|
}
|
console.log(obj_)
|
for (tableid in obj_) {
|
obj_[tableid].map((tablefield) => {
|
param_ = {
|
role_id: me.selectRole.id,
|
type: type,
|
resource_id: tablefield.id,
|
role_type: me.selectRole.type,
|
isClientMode: false,
|
dataname: "resourceRole"
|
}
|
Server.call("root/data/insertEntity", param_, function(result) {
|
console.log(result);
|
|
});
|
})
|
}
|
});
|
|
},
|
saveResourceByPage(type) {
|
let me = this;
|
let id = "";
|
this.selectButtons;
|
this.selectTabs;
|
|
|
let arr = this['select' + type]
|
console.log(this['select' + type])
|
|
for (let i = 0; i < arr.length; i++) {
|
if (i == arr.length - 1) {
|
id = id + arr[i]
|
} else {
|
id = id + arr[i] + "','"
|
}
|
}
|
console.log(id)
|
|
var roleType = this.selectRole.type;
|
let filter_ = "1=1 and role_id = '" + this.selectRole.id + "' and type = '" + type.substring(0, type.length - 1).toLowerCase() +
|
"' and role_type = '" + roleType + "' and resource_id in('" + id + "')";
|
|
param_ = {
|
isClientMode: false,
|
dataname: "resourceRole",
|
filter: filter_,
|
}
|
|
Server.call("root/data/deleteEntitySet", param_, function(result) {
|
console.log(result);
|
let arr_ = me.selectMenu[me.menuId][type.toLowerCase()];
|
for (let i = 0; i < arr_.length; i++) {
|
param_ = {
|
role_id: me.selectRole.id,
|
type: type.substring(0, type.length - 1).toLowerCase(),
|
resource_id: arr_[i].id,
|
role_type: me.selectRole.type,
|
}
|
param_.isClientMode = false;
|
param_.dataname = "resourceRole";
|
|
Server.call("root/data/insertEntity", param_, function(result) {
|
console.log(result);
|
me.ajaxCount--;
|
let arr1 = me.selectMenu[me.menuId][type.toLowerCase()]
|
arr = [];
|
for(let i = 0; i < arr1.length; i++) {
|
arr[i] = arr1[i].id
|
}
|
console.log(arr1)
|
console.log(arr)
|
me['select' + type] = arr;
|
if(me.ajaxCount == 0) {
|
me.$message({
|
message: '保存成功',
|
type: 'success'
|
});
|
}
|
|
});
|
}
|
});
|
},
|
|
|
//根据Role查询button数据列表
|
/* getButtonByRole() {
|
//按键
|
let me = this;
|
var params = {
|
isClientMode: false,
|
dataname: "getRoleAllButtonByPage",
|
filter: "r.role_id='" + me.selectRole.id + "' and ta.pageid='" + me.pageId + "'",
|
}
|
Server.call("root/data/procedure", params, function(result) {
|
console.log(result);
|
if (result && result.data) {
|
let data_ = result.data.entityset;
|
me.selectButtons = clone(data_);
|
}
|
});
|
}, */
|
|
handleClose() {
|
//window.frames[0].childVue.role = {};
|
//window.frames[0].childVue.user = {};
|
this.dialogVisible = false
|
this.src = ''
|
},
|
|
|
isRefresh() {
|
|
},
|
refreshData() {
|
|
},
|
|
toggleSelection(rows) {
|
|
},
|
|
onQuery() {
|
//查询
|
},
|
|
onInitFilter() {
|
//清空
|
},
|
|
onEditFilter() {
|
//选择查询字段
|
},
|
|
|
}
|
});
|
</script>
|
<style>
|
.el-dialog__header {
|
border-bottom: 1px solid #909399;
|
padding: 10px 20px 10px;
|
}
|
|
.el-dialog__body {
|
padding: 0;
|
}
|
|
.el-dialog__footer {
|
padding: 0px 20px 20px;
|
}
|
|
.el-tabs__header {
|
margin: 0px;
|
}
|
</style>
|
</html>
|