已废弃
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

<!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>