You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
358 lines
14 KiB
358 lines
14 KiB
<!DOCTYPE html>
|
|
<html lang="en" xmlns:th="http://www.thymeleaf.org">
|
|
<head>
|
|
<meta charset="utf-8">
|
|
<title>layui</title>
|
|
<meta name="renderer" content="webkit">
|
|
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
|
|
<link rel="stylesheet" href="/static/lib/layui-v2.8.6/css/layui.css" media="all">
|
|
<link rel="stylesheet" href="/static/css/public.css" media="all">
|
|
<link rel="stylesheet" href="/static/lib/font-awesome-4.7.0/css/font-awesome.min.css" media="all">
|
|
|
|
</head>
|
|
<body>
|
|
<div class="layuimini-container">
|
|
<div class="layui-row">
|
|
<div class="layui-col-md8">
|
|
<div class="layui-tab" lay-filter="roleSet">
|
|
<ul class="layui-tab-title">
|
|
<li class="layui-this" tabType="person">人员</li>
|
|
<li tabType="post">岗位</li>
|
|
</ul>
|
|
<div class="layui-tab-content">
|
|
<div class="layui-tab-item layui-show">
|
|
<form class="layui-form layui-form-pane" action="">
|
|
<div class="layui-form-item">
|
|
<div class="layui-inline">
|
|
<label class="layui-form-label">人员姓名</label>
|
|
<div class="layui-input-inline">
|
|
<input type="text" name="name" autocomplete="off" class="layui-input">
|
|
</div>
|
|
</div>
|
|
<div class="layui-inline">
|
|
<label class="layui-form-label">人员工号</label>
|
|
<div class="layui-input-inline">
|
|
<input type="text" name="number" autocomplete="off" class="layui-input">
|
|
</div>
|
|
</div>
|
|
<div class="layui-inline">
|
|
<button type="submit" class="layui-btn layui-btn-primary" lay-submit
|
|
lay-filter="data-search-btn"><i class="layui-icon"></i> 搜 索
|
|
</button>
|
|
</div>
|
|
</div>
|
|
</form>
|
|
<table class="layui-hide" id="currentTableForUser"
|
|
lay-filter="currentTableFilterForUser"></table>
|
|
</div>
|
|
<div class="layui-tab-item">
|
|
<div id="postTree" class="demo-tree"></div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="layui-col-md4">
|
|
<div id="depositoryTree" class="demo-tree"></div>
|
|
<button type="button" class="layui-btn layui-btn-primary layui-border-blue" onclick="Impower()">授权</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<script src="/static/lib/layui-v2.8.6/layui.js" charset="utf-8"></script>
|
|
|
|
<script>
|
|
|
|
|
|
function Impower() {
|
|
|
|
}
|
|
|
|
// 用于标志是否为第一次提交
|
|
let flagForForm = false;
|
|
layui.use(['form', 'layer', 'tree', 'element', 'table'], function () {
|
|
var $ = layui.jquery,
|
|
form = layui.form,
|
|
tree = layui.tree,
|
|
element = layui.element,
|
|
table = layui.table,
|
|
layer = layui.layer;
|
|
|
|
|
|
let tabType = "person";
|
|
|
|
let depositoryTree;
|
|
let postTree;
|
|
element.on('tab(roleSet)', function (data) {
|
|
tabType = $(this).attr("tabType");
|
|
if (tabType === "post") {
|
|
$.ajax({
|
|
url: "/company/getOrgAndPostThree",
|
|
type: 'get',
|
|
dataType: 'json',
|
|
contentType: "application/json;charset=utf-8",
|
|
beforeSend: function () {
|
|
},
|
|
success: function (d) {
|
|
var data2 = d.data;
|
|
postTree.reload({
|
|
data: data2
|
|
});
|
|
},
|
|
|
|
});
|
|
} else {
|
|
table.reloadData('currentTableForUser', {
|
|
url: '/sys/findUsers',
|
|
page: {
|
|
curr: 1
|
|
},
|
|
}, 'data');
|
|
}
|
|
|
|
});
|
|
|
|
table.render({
|
|
elem: '#currentTableForUser',
|
|
url: '/sys/findUsers',
|
|
method: "POST",
|
|
parseData: function (res) { //res 即为原始返回的数据
|
|
return {
|
|
"status": res.status, //解析接口状态
|
|
"message": res.statusInfo.message, //解析提示文本
|
|
"count": res.count, //解析数据长度
|
|
"data": res.data //解析数据列表
|
|
};
|
|
},
|
|
height: 'full-255',//固定高度-即固定表头固定第一行首行
|
|
request: {
|
|
pageName: 'page', //页码的参数名称,默认:page
|
|
limitName: 'size' //每页数据量的参数名,默认:limit
|
|
},
|
|
response: {
|
|
statusName: 'status' //规定数据状态的字段名称,默认:code
|
|
, statusCode: 200 //规定成功的状态码,默认:0
|
|
, msgName: 'message' //规定状态信息的字段名称,默认:msg
|
|
, countName: 'count' //规定数据总数的字段名称,默认:count
|
|
, dataName: 'data' //规定数据列表的字段名称,默认:data
|
|
},
|
|
cols: [
|
|
[
|
|
{type: "checkbox", width: 50},
|
|
{field: 'number', width: 100, title: '工号', sort: true},
|
|
{field: 'name', width: 100, title: '姓名'},
|
|
{
|
|
field: 'gender', width: 80, title: '性别', templet: function (d) {
|
|
if (d.gender === 1) {
|
|
return "男性";
|
|
} else if (d.gender === 2) {
|
|
return "女性";
|
|
} else if (d.gender === 3) {
|
|
return "中性";
|
|
} else {
|
|
return "";
|
|
}
|
|
}
|
|
},
|
|
{field: 'companyname', width: 200, title: '公司名称'},
|
|
{field: 'maindeparmentname', width: 200, title: '主部门'},
|
|
{field: 'sunmaindeparmentname', width: 200, title: '岗位'},
|
|
{field: 'workpostname', width: 200, title: '工段'},
|
|
{field: 'positionname', width: 200, title: '职位'}
|
|
]
|
|
],
|
|
limits: [10, 15, 20, 25, 50, 100],
|
|
limit: 10,
|
|
page: true,
|
|
skin: 'line',
|
|
});
|
|
|
|
|
|
table.on('row(currentTableFilterForUser)', function (obj) {
|
|
let data = obj.data; //得到当前行数据
|
|
$.ajax({
|
|
url: "/repository/findWarehouseVisiblePermission",
|
|
type: 'post',
|
|
dataType: 'json',
|
|
contentType: "application/json;charset=utf-8",
|
|
data: JSON.stringify({"type": "person", "uid": data.id}),
|
|
success: function (res) {
|
|
let data = res.data;
|
|
depositoryTree.reload();
|
|
tree.setChecked('depositoryTree', data);
|
|
|
|
}
|
|
})
|
|
});
|
|
|
|
form.on('submit(data-search-btn)', function (data) {
|
|
data = data.field;
|
|
let req = {};
|
|
if (data.name !== '') {
|
|
req.name = data.name;
|
|
}
|
|
if (data.number !== '') {
|
|
req.number = data.number;
|
|
}
|
|
//执行搜索重载
|
|
table.reloadData('currentTableForUser', {
|
|
url: '/sys/findUsers',
|
|
page: {
|
|
curr: 1
|
|
},
|
|
where: req
|
|
}, 'data');
|
|
return false;
|
|
});
|
|
|
|
|
|
depositoryTree = tree.render({
|
|
elem: '#depositoryTree'
|
|
, id: "depositoryTree"
|
|
, showCheckbox: true //是否显示复选框
|
|
, data: []
|
|
});
|
|
$.ajax({
|
|
url: "/repository/treeMenusOnlyDepository",
|
|
type: 'get',
|
|
dataType: 'json',
|
|
contentType: "application/json;charset=utf-8",
|
|
beforeSend: function () {
|
|
},
|
|
success: function (d) {
|
|
depositoryTree.reload({
|
|
data: d.data
|
|
});
|
|
},
|
|
|
|
});
|
|
|
|
postTree = tree.render({
|
|
elem: '#postTree'
|
|
, id: "postTree"
|
|
, showCheckbox: true //是否显示复选框
|
|
, data: []
|
|
, click: function (obj) {
|
|
let data = obj.data; //得到当前点击的节点数据
|
|
let elem = obj.elem;
|
|
if ("-1" === data.orgid) {
|
|
// 如果点击的是岗位
|
|
let postId = data.id; // 岗位id
|
|
$.ajax({
|
|
url: "/repository/findWarehouseVisiblePermission",
|
|
type: 'post',
|
|
dataType: 'json',
|
|
contentType: "application/json;charset=utf-8",
|
|
data: JSON.stringify({"type": "post", "uid": postId}),
|
|
success: function (res) {
|
|
let data = res.data;
|
|
depositoryTree.reload();
|
|
tree.setChecked('depositoryTree', data);
|
|
tree.setChecked('postTree', [postId])
|
|
}
|
|
})
|
|
}
|
|
}
|
|
});
|
|
|
|
|
|
Impower = function () {
|
|
let treeData = tree.getChecked('depositoryTree');
|
|
// 获取选中的Id
|
|
let userIds = [];
|
|
if (tabType === "person") {
|
|
let checkUserData = table.checkStatus('currentTableForUser').data;
|
|
for (let i = 0, len = checkUserData.length; i < len; i++) {
|
|
userIds.push(checkUserData[i].id);
|
|
}
|
|
} else {
|
|
userIds = getAllTreeId(tree.getChecked('postTree'));
|
|
}
|
|
// 获取选中的仓库树id
|
|
let allTreeId = getAllTreeId(treeData);
|
|
if (userIds.length > 0) {
|
|
if (!flagForForm) {
|
|
flagForForm = true;
|
|
let req = {};
|
|
req.userIds = userIds;
|
|
req.depositoryIds = allTreeId;
|
|
req.type = tabType;
|
|
req.count = userIds.length * allTreeId.length;
|
|
$.ajax({
|
|
url: "/repository/setWarehouseVisiblePermission",
|
|
type: 'post',
|
|
dataType: 'json',
|
|
contentType: "application/json;charset=utf-8",
|
|
data: JSON.stringify(req),
|
|
beforeSend: function () {
|
|
this.layerIndex = layer.load(0, {shade: [0.5, '#393D49']});
|
|
},
|
|
success: function (res) {
|
|
layer.close(this.layerIndex);
|
|
if (res.status >= 300) {
|
|
layer.msg(res.statusInfo.message, {
|
|
icon: 5,
|
|
time: 1000
|
|
}, function () {
|
|
location.reload();
|
|
});//失败的表情
|
|
flagForForm = false;
|
|
} else {
|
|
layer.msg("设置成功!", {
|
|
icon: 6,//成功的表情
|
|
time: 1000
|
|
}, //1秒关闭(如果不配置,默认是3秒)
|
|
function () {
|
|
//do something
|
|
location.reload();
|
|
});
|
|
}
|
|
}
|
|
})
|
|
}
|
|
|
|
} else {
|
|
layer.msg("请选中赋权岗位或人员", {
|
|
icon: 5,
|
|
time: 1000
|
|
})
|
|
}
|
|
|
|
|
|
};
|
|
|
|
|
|
/**
|
|
* 用于获取选中树的id
|
|
* @param data
|
|
*/
|
|
function getAllTreeId(data) {
|
|
// 用于存储id
|
|
let idList = [];
|
|
for (let i = 0; i < data.length; i++) {
|
|
let temp = data[i];
|
|
if (temp.orgid !== undefined) {
|
|
if (temp.orgid === "-1") {
|
|
idList.push(temp.id);
|
|
}
|
|
} else {
|
|
if (temp.children.length === 0) {
|
|
// 如果是底层仓库
|
|
idList.push(temp.id);
|
|
}
|
|
}
|
|
if (temp.children !== null && temp.children !== undefined && temp.children.length > 0) {
|
|
// 如果存在子树
|
|
idList.push(...getAllTreeId(temp.children));
|
|
}
|
|
}
|
|
return idList;
|
|
}
|
|
|
|
});
|
|
|
|
|
|
</script>
|
|
|
|
</body>
|
|
</html>
|