You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1410 lines
54 KiB
Plaintext

This file contains invisible Unicode characters!

This file contains invisible Unicode characters that may be processed differently from what appears below. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to reveal hidden characters.

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<html>
<head>
<title>组织结构管理</title>
<meta charset="UTF-8" />
<link rel="stylesheet" type="text/css" href="themes/default/easyui.css" />
<script type="text/javascript" src="../WF/Scripts/jquery-1.11.0.min.js"></script>
<script type="text/javascript" src="../WF/Scripts/jquery/jquery.easyui.min.js"></script>
<script src="../WF/Scripts/jquery/locale/easyui-lang-zh_CN.js" type="text/javascript"></script>
<script src="../WF/Scripts/QueryString.js" type="text/javascript"></script>
<link href="../DataUser/Style/ccbpm.css" rel="stylesheet" type="text/css" />
<!-- 引入新版本的类库. -->
<script src="../WF/Scripts/config.js" type="text/javascript"></script>
<script src="../WF/Comm/Gener.js" type="text/javascript"></script>
<link href="../WF/Style/skin/css/Default.css" rel="stylesheet" type="text/css" />
<link href="../WF/Style/skin/adminfont/iconfont.css" rel="stylesheet" type="text/css" />
<!-- 引入GPM配置. -->
<script src="config.js"></script>
<script src="../WF/Scripts/bootstrap/bootstrap-treeview/src/js/bootstrap-treeview.js"
type="text/javascript"></script>
<link href="../WF/Scripts/bootstrap/bootstrap-treeview/src/css/bootstrap-treeview.css" rel="stylesheet"
type="text/css" />
<script src="../WF/Scripts/bootstrap/js/bootstrap.min.js" type="text/javascript"></script>
<link href="../WF/Scripts/bootstrap/css/bootstrap.min.css" rel="stylesheet" type="text/css" />
<link href="../WF/Scripts/bootstrap/css/font-awesome.css" rel="stylesheet" type="text/css" />
<script src="../WF/Scripts/bootstrap/bootstrap-table/src/bootstrap-table.js" type="text/javascript"></script>
<link href="../WF/Scripts/bootstrap/bootstrap-table/src/bootstrap-table.css" rel="stylesheet" type="text/css" />
<script src="../WF/Scripts/bootstrap/bootstrap-table/src/locale/bootstrap-table-zh-CN.js"
type="text/javascript"></script>
<script src="../WF/Scripts/bootstrap/BootstrapUIDialog.js" type="text/javaScript"></script>
<!--引入zTree树. -->
<link href="../WF/Scripts/zTree_v3/css/metroStyle/metroStyle.css" rel="stylesheet" type="text/css" />
<script src="../WF/Scripts/zTree_v3/js/jquery.ztree.all.min.js" type="text/javascript"></script>
<script src="../WF/Scripts/zTree_v3/js/jquery.ztree.core.js" type="text/javascript"></script>
<script src="../WF/Scripts/zTree_v3/js/jquery.ztree.excheck.js" type="text/javascript"></script>
<script src="../WF/Scripts/zTree_v3/js/jquery.ztree.exedit.js" type="text/javascript"></script>
<link rel="stylesheet" type="text/css" href="../WF/Portal/icons/font-icons.min.css">
<link rel="stylesheet" type="text/css" href="../WF/Portal/icons/icons.css">
<script src="../WF/Portal/layui/layui.js"></script>
<link href="../WF/Portal/layui/css/layui.css" rel="stylesheet" type="text/css" />
<script src="./organization.js" type="text/javascript"></script>
<script type="text/javascript" src="../WF/Portal/js/sortjs/Sortable.min.js"></script>
<script src="../WF/Scripts/layui/LayuiDialog.js"></script>
<script src="../WF/Scripts/xss.js" type="text/javascript"></script>
<style type="text/css">
.ztree * {
font-size: 14px;
}
.ztree {
padding: 15px;
}
.ztreeDragUL {
z-index: 999
}
.ztree li a {
color: #565656
}
.small-menu {
margin-top: 10px;
position: absolute;
width: 120px;
z-index: 99999;
border: 0px;
background: #FFF;
padding: 0px;
display: none;
box-shadow: 0 0 6px rgba(0, 0, 0, .2);
}
.small-menu div {
height: 38px !important;
padding-left: 10px;
margin: 0px;
cursor: pointer;
line-height: 38px
}
.small-menu div i {
padding-right: 10px;
}
.small-menu div:hover {
background: #4d49bf !important;
color: #fff !important
}
.small-menu-separator {
padding-bottom: 0;
border-bottom: 1px solid #DDD;
}
.small-menu div.edit A {
background-image: url(images/page_white_edit.png);
}
.small-menu div.cut A {
background-image: url(images/cut.png);
}
.small-menu div.copy A {
background-image: url(images/page_white_copy.png);
}
.small-menu div.paste A {
background-image: url(images/page_white_paste.png);
}
.small-menu div.delete A {
background-image: url(images/page_white_delete.png);
}
.small-menu div.quit A {
background-image: url(images/door.png);
}
.modal-header {
line-height: 38px !important;
height: 38px !important;
background: #f7f7f7 !important;
padding: 0px 10px !important;
}
.modal-header .modal-title {
color: #4d49bf !important;
font-weight: bold !important;
line-height: 38px !important;
height: 38px !important;
margin-top: 0px !important;
}
.modal-header h3 {
font-size: 16px;
color: #414141;
}
.modal-header #closeModal {
background: #f7941f !important;
font-size: 16px !important;
width: 16px !important;
height: 16px !important;
line-height: 16px !important;
text-align: center !important;
border-radius: 50% !important;
color: #fff !important;
padding: 0px !important;
margin: 10px !important;
}
.modal-header #closeModal:hover {
color: #fff !important;
background: #4d49bf !important;
}
/* 头部内容 */
.top-area {
display: flex;
width: 1314px !important;
}
.left-search, .right-post {
display: flex;
align-items: center;
}
.left-search {
padding-left: 10px;
}
.search-inp {
margin-left: 10px;
margin-right: 10px;
display:flex;
}
.left-search div span {
font-size: 14px;
font-weight: 700;
margin-right: 10px;
}
.right-post {
margin-left: auto;
padding-right: 10px;
}
.cc-btn-tab {
height: 26px;
padding: 0 10px;
line-height: 26px;
font-size: 14px;
background: #316ee6 !important;
border-color: #316ee6 !important;
border-radius: 5px;
color: #fff !important;
}
.cc-btn-tab:hover {
background: #316ee6 !important;
}
.btn-change {
margin: 0 5px;
height: 26px;
line-height: 26px;
background: #316ee6;
color: #fff !important;
border-color: #316ee6;
font-size: 14px;
border-radius: 5px;
}
.table-striped > tbody > tr:nth-of-type(odd) {
background: #fff;
}
</style>
<script src="../Portal/Standard/js/vue/ThemeData.js"></script>
<script type="text/javascript">
var deptNo = "";
var webUser = new WebUser();
var tree = {
zTree: '',
pNode: '',
setting: {
isSimpleData: true,
treeNodeKey: "id",
treeNodeParentKey: "pid",
showLine: true,
root: {
isRoot: true,
nodes: []
},
view: {
dblClickExpand: false, //双击节点时,是否自动展开父节点的标识
showLine: true, //是否显示节点之间的连线
fontCss: {}, //字体样式函数
selectedMulti: false, //设置是否允许同时选中多个节点
autoExpandFirst: true
},
check: {
chkboxType: {
"Y": "ps",
"N": "ps"
},
chkboxType: {
"Y": "",
"N": ""
},
chkStyle: "checkbox", //复选框类型
enable: false //每个节点上是否显示 CheckBox
},
edit: {
enable: true,
editNameSelectAll: true,
showRemoveBtn: false,
showRenameBtn: false,
removeTitle: "remove",
renameTitle: "rename",
drag: {
// 打开复制功能Ctrl+鼠标左键点击后拖拽
isCopy: false,
// 打开移动功能,鼠标左键点击后拖拽
isMove: true
},
},
data: {
simpleData: {
enable: true,
idKey: "id",
pIdKey: "pid",
rootPId: WebUser.FK_Dept,
}
},
callback: {
onClick: function (event, treeId, treeNode) {
$('#Emps').html('正在加载请稍后....');
//$('#table-loading').html('正在加载请稍后....');
deptNo = treeNode.id;
BindEmps();
},
// beforeDrag: zTreeBeforeDrag,
onDrop: zTreeOnDrop,
onRightClick: OnRightClick,
onExpand: function (event, treeId, treeNode) {
tree.pNode = treeNode;
tree.loadNodeByPNode();
}
}
},
loadRootNode: function () { //加载根节点,pid=0
var zNodes = [];
var fk_dept = webUser.FK_Dept;
if (webUser.CCBPMRunModel != 0) {
fk_dept = webUser.OrgNo;
}
var handler = new HttpHandler("BP.WF.HttpHandler.GPMPage");
var ens = handler.DoMethodReturnJSON("Organization_Init");
var zNodes = createJsonToTree(ens, fk_dept);
$.fn.zTree.init($("#regionZTree"), tree.setting, zNodes);
tree.zTree = $.fn.zTree.getZTreeObj("regionZTree");
},
/**
* 该方法是点击父节点的+号后执行的,意味着执行该方法的时候树已经生成了
* 所以才能用tree.zTree
*/
loadNodeByPNode: function () {
var children = [];
var folder = false;
//获取pid = mid的数据也就是子节点的id等于父节点的id说明此父节点加载了子节点
if (!tree.zTree.getNodeByParam("pid", tree.pNode.id)) {
var handler = new HttpHandler("BP.WF.HttpHandler.GPMPage");
handler.AddPara("ParentNo", tree.pNode.id);
var ens = handler.DoMethodReturnJSON("Organization_GetDeptsByParentNo");
var zNodes = createJsonToTree(ens, tree.pNode.id);
tree.zTree.addNodes(tree.pNode, zNodes, true);
}
}
};
function zTreeOnDrop(event, treeId, treeNodes, targetNode, moveType) {
//targetNode为null时即进行了拖拽行为但是没有改变排序
if (targetNode == null) return;
var thisParentId;
thisParentId = treeNodes[0].pid;
var targetParentId;
//移动后父节点
targetParentId = targetNode.pid;
//判断是否为同级移动,即是否在同一级目录下拖拽
if (moveType != 'inner') {
var dept = new Entity("BP.Port.Dept", treeNodes[0].id);
dept.ParentNo = targetParentId;
dept.Update();
if (thisParentId == targetParentId) {
var tpNode = targetNode.getParentNode();
var nodes = tpNode.children;
//遍历拖拽后的该级所有结点拼成一个id数组
var idArray = new Array()
for (var i = 0, l = nodes.length; i < l; i++) {
idArray[i] = nodes[i].id;
}
console.log(idArray)
//调用自己的ajax后台方法
/* var deptIDs = "xxx,xx,33,xxx,"; //deptIDs =idArray*/
var dept = new Entity("BP.Port.Dept", targetParentId);//pid=targetParentId
dept.DoMethodReturnString("DoOrder", idArray);
}
}
if (moveType == 'inner' && confirm('确定要将[ ' + treeNodes[0].name + ' ]移动到[ ' + targetNode.name + ' ]下?')) {
var dept = new Entity("BP.Port.Dept", treeNodes[0].id);
dept.ParentNo = targetNode.id;
dept.Update();
return;
}
}
//刷新节点
function refreshParentNode() {
var zTree = $.fn.zTree.getZTreeObj("regionZTree"),
type = "refresh",
silent = false,
nodes = zTree.getSelectedNodes();
/*根据 zTree 的唯一标识 tId 快速获取节点 JSON 数据对象*/
var parentNode = zTree.getNodeByTId(nodes[0].parentTId);
/*选中指定节点*/
zTree.selectNode(parentNode);
zTree.reAsyncChildNodes(parentNode, type, silent);
}
//右键菜单功能实现
(function ($, undefined) {
$.fn.popupSmallMenu = function (options) {
var $currMenu = $(this),
defaultOptions = {
event: null,
onClickItem: null
},
options = $.extend(defaultOptions, options);
var _smallMenu = {
popupSmallMenu: function () {
this._bindItemClick();
this._bindMenuEvent();
this._showMenu();
return $currMenu;
},
_bindMenuEvent: function () {
var thiz = this;
$currMenu.hover(function () {
}, function () {
thiz._unBindItemClick();
$currMenu.hide();
});
$currMenu.click(function () {
thiz._unBindItemClick();
$currMenu.hide();
});
},
_showMenu: function () {
if (!options.event) {
alert('请传入鼠标事件');
}
debugger
var height = options.event.clientY;
var height1 = $(document.body).height();
var width1 = $("#TreeLayout").width();
var DValue = height1 - height;
if (DValue < 230) {
height = options.event.clientY - 158;
}
height = height - 70;
var left = options.event.clientX + 10;
if (width1 - options.event.clientX < 120)
left = options.event.clientX - 120;
$currMenu.css({
top: height + "px",
left: left + "px",
display: "block"
});
},
_bindItemClick: function () {
$currMenu.find('div').each(function (index, obj) {
var $li = $(obj);
var itemIden = $li.attr('class');
$li.bind('click', function (event) {
event.stopPropagation();
if (options.onClickItem &&
typeof options.onClickItem === 'function') {
options.onClickItem(itemIden);
}
});
});
},
_unBindItemClick: function () {
$currMenu.find('div').each(function (index, obj) {
$(obj).unbind();
});
}
};
return _smallMenu.popupSmallMenu();
}
})(jQuery);
//右键点击
function OnRightClick(event, treeId, treeNode) {
tree.zTree.selectNode(treeNode);
if (treeNode) {
//弹出菜单
$("#menu").popupSmallMenu({
event: event,
onClickItem: function (item) {
if (item == "moveUpDept") {
moveUpDept(treeNode, item);
} else if (item == "moveDownDept") {
moveDownDept(treeNode, item);
} else if (item == "edit") {
Edit(treeNode);
} else if (item == "newSameLevel") {
NewSameLevel(treeNode);
} else if (item == "newNextLevel") {
NewNextLevel(treeNode);
} else if (item == "delete") {
Delete(treeNode);
}
}
});
}
}
//上移部门
function moveUpDept(treeNode, item) {
var dept = new Entity(deptEnName, treeNode.id);
var data = dept.DoMethodReturnString("DoUp");
//树节点直接更新
var before = $("#" + treeNode.tId).prev();
if (before.length == 0) {
return;
}
$("#" + treeNode.tId).insertBefore(before);
}
//下移部门
function moveDownDept(treeNode, item) {
var dept = new Entity(deptEnName, treeNode.id);
var data = dept.DoMethodReturnString("DoDown");
//树节点直接更新
var next = $("#" + treeNode.tId).next();
if (next.length == 0) {
return;
}
$("#" + treeNode.tId).insertAfter(next);
}
//增加同级部门
function NewSameLevel(treeNode) {
if (treeNode.pid == null) {
alert('您不能增加同级,当前级别是最高级.');
return;
}
var deptNo = null;
//如果部门编号的模式是自己编写的.
if (NewDeptNoModel == 0) {
deptNo = GenerNewDeptNo(treeNode.id, treeNode.pid);
if (deptNo == null || deptNo == undefined)
return;
}
var val = prompt("请输入部门名称", "");
if (val == null || val == '') {
return false;
}
var dept = new Entity(deptEnName);
dept.Name = val;
dept.ParentNo = treeNode.pid;
if (deptNo != null)
dept.No = deptNo;
if (webUser.CCBPMRunModel != 0) {
var sdept = new Entity(deptEnName, treeNode.id);
dept.OrgNo = sdept.OrgNo;
}
dept.Insert();
//更新树节点
var treeObj = $.fn.zTree.getZTreeObj("regionZTree");
var parentNode = treeObj.getNodeByTId(treeNode.parentTId);
var newNode = {
name: val,
id: dept.No
};
//把这个新节点添加到当前选中的节点下,作为它的子节点
newNode = treeObj.addNodes(parentNode, newNode);
}
//增加下级部门
function NewNextLevel(treeNode) {
var deptNo = null;
//如果部门编号的模式是自己编写的.
if (NewDeptNoModel == 0) {
deptNo = GenerNewDeptNo(treeNode.id, treeNode.pid);
if (deptNo == null || deptNo == undefined)
return;
}
var val = prompt("请输入部门名称", "");
if (val == null || val == '') {
return false;
}
var dept = new Entity(deptEnName);
if (deptNo != null)
dept.No = deptNo;
dept.Name = val;
dept.ParentNo = treeNode.id
if (webUser.CCBPMRunModel != 0) {
var pdept = new Entity(deptEnName, treeNode.id);
dept.OrgNo = pdept.OrgNo
}
dept.Insert();
//更新树节点
var treeObj = $.fn.zTree.getZTreeObj("regionZTree");
var newNode = {
name: val,
id: dept.No
};
//var newNode = { name: val };
//把这个新节点添加到当前选中的节点下,作为它的子节点
newNode = treeObj.addNodes(treeNode, newNode);
}
//编辑部门
function Edit(treeNode) {
var name = $("#" + treeNode.tId + "_span").text()
var val = prompt("请输入部门名称", name);
if (val == null || val == '') {
//alert('必须输入名称.');
return false;
}
var dept = new Entity(deptEnName, treeNode.id);
dept.Name = val;
dept.Update();
//更新树节点
$("#" + treeNode.tId + "_span").text(val);
}
//删除部门
function Delete(treeNode) {
if (confirm("你确定删除该部门吗?") == false)
return;
var dept = new Entity(deptEnName, treeNode.id);
dept.Delete();
//树节点删除
var my = document.getElementById(treeNode.tId);
if (my != null)
my.parentNode.removeChild(my);
}
function GenerNewDeptNo(no, parentNo) {
var alt = "请输入部门编号";
alt += "\t\n 1.如为空,则系统自动生成.";
alt += "\t\n 2.如输入已经存在的部门编码,系统就会抛出错误.";
alt += "\t\n 3.当前部门的编码为:" + no + ", 父节点的ID为:" + parentNo;
var deptNo = prompt(alt, "");
deptNo = deptNo.trim();
var reg = new RegExp("[\u4E00-\u9FA5]+");
if (reg.test(deptNo)) {
alert("不允许输入中文字符");
return;
}
if (deptNo == null || deptNo == '') {
//需要系统自动生成编号,就直接走insert();
} else {
while (true) {
if (deptNo == null || deptNo == '') {
break;
} else {
var dept = new Entity(deptEnName);
dept.No = deptNo;
if (dept.RetrieveFromDBSources() == 0)
break;
deptNo = prompt('该编号已经存在,请重新输入,(点击取消让系统自动生成编号)', deptNo);
continue;
}
break;
}
}
if (deptNo == '')
deptNo = null;
return deptNo;
}
//初始化
$(function () {
$("#pageloading").show();
Reset(); //加载重置查询条件
tree.loadRootNode();
fillter(); //设置展开前三级
//绑定帮助信息.
var html = "<br><br> <h3 style='padding-left:5px'>驰骋组织结构管理</h3>";
html += "<ul>";
html += "<li>该组织结构可以与您的系统集成,<a href='http://ccbpm.mydoc.io/?v=5404&t=15928' target=_blank >如何集成请参考集成手册.</a></li>";
html += "<li>本功能维护了人员信息Port_Emp, 部门信息Port_Dept, 一人多部门(我们成为兼职Port_DeptEmp), 一人多部门多岗位(Port_DeptEmpStation)</li>";
html += "<li>维护部门在节点上点击右键,可以新建,保存,修改。</li>";
html += "</ul>";
html = "";
$("#Emps").html(html);
$("#pageloading").hide();
//鼠标移开时右键菜单消失
$(document).on('mouseleave ', '.dropdown-menu', function () {
$(".dropdown-menu").hide();
$.learunindex.destroy
});
// alert(webUser.OSModel);
// console.log(webUser);
if (webUser.No == 'admin' && webUser.CCBPMRunModel == 2) {
// alert()
// var html = "<button class='cc-btn - tab' id='ResetBtn' onclick='Reset()' >新建组织</button>";
$("#btnOrg").attr('display', 'block');
}
// 绑定表格右键菜单
bindContextMenu();
//默认父节点获得父节点数据
const rootElement = document.querySelector('.ztree li:first-child a');
rootElement.click();
});
function NewOrg() {
var orgNo = window.prompt('请输入组织编号,半角字母或者下划线数字,比如:ccbpm123', '');
if (orgNo == null || orgNo == undefined)
return;
var reg = new RegExp("[\u4E00-\u9FA5]+");
if (reg.test(orgNo)) {
alert("不允许输入中文字符,半角字母或者下划线数字.");
return;
}
var orgName = window.prompt('请输入组织名称', '驰骋BPM公司');
if (orgName == null || orgName == undefined)
return;
var handler = new HttpHandler("BP.Cloud.HttpHandler.Admin");
handler.AddPara("OrgNo", orgNo);
handler.AddPara("OrgName", orgName);
var data = handler.DoMethodReturnString("Organization_CreateOrg");
alert(data);
if (data.indexOf('err@') == 0) {
return;
}
window.location.href = window.location.href;
}
//设置展开前三级
function fillter() {
//获得树形图对象
var nodeList = tree.zTree.getNodes();       //展开第一个根节点
for (var i = 0; i < nodeList.length; i++) { //设置节点展开第二级节点
tree.zTree.expandNode(nodeList[i], true, false, true, true); //设置回调为true默认展开二级节点
//添加默认选中获得id
tree.zTree.selectNode(nodeList[i]);
}
}
//转换ztree需要的数据格式
var treeJson = [];
function createJsonToTree(jsonArray, parentNo) {
// fix firefox bug
document.body.ondrop = function (event) {
event.preventDefault();
event.stopPropagation();
}
treeJson = [];
if (webUser.No == "admin") {
for (var i = 0; i < jsonArray.length; i++) {
var data = jsonArray[i];
if (data.No === "" || data.No == undefined)
continue;
treeJson.push({
"id": data.No,
"pid": data.ParentNo,
"name": data.Name,
"idx": data.Idx,
isParent: true,
parent: true,
spread: true,
});
}
} else {
//添加本部门的一条数据
$.each(jsonArray, function (i, o) {
if (o.No == parentNo) {
treeJson.push({
"id": o.No,
"pid": o.ParentNo,
"name": o.Name,
"idx": o.Idx,
isParent: true,
parent: true,
children: []
});
return;
}
});
//循环加入本部门的所有下级部门
findChildren(jsonArray, parentNo);
}
return treeJson;
}
function findChildren(jsonArray, parentNo) {
$.each(jsonArray, function (i, o) {
if (o.ParentNo == parentNo) {
treeJson.push({
"id": o.No,
"pid": o.ParentNo,
"name": o.Name,
"idx": o.Idx,
children: []
});
findChildren(jsonArray, o.No);
}
});
}
//绑定人员.
function BindEmps() {
var dept = new Entity(deptEnName, deptNo);
var html = "";
html += "<div class='container'>";
html += "<div class='fixed-table-header'>";
html += "<table class='table table-hover table-striped table-bordered' id='table-loading' style='width: 97%;margin-top:10px;margin-left:15px;' >";
html += "<tr><h5 style='display:flex;align-items:center;justify-content: flex-end;margin-right: 10px;height:50px;border-bottom: 1px solid #f0f2f5; '><a class='layui-btn layui-btn-primary layui-border-gray layui-btn-sm btn-change' href=\"javascript:EditDept('" + dept.No + "')\" >" + dept.Name + " </a> " +
"<a class='layui-btn layui-btn-primary layui-border-blue layui-btn-sm btn-change' href='javascript:EditEmp()'>新建人员</a> " +
"<a class='layui-btn layui-btn-primary layui-border-green layui-btn-sm btn-change' href='javascript:RefEmps()'>关联兼职</a> </h5></tr>";
html += "<thead ><tr> ";
html += "<th style='background-color:#F2F2F2;'>序号</th>";
html += "<th style='background-color:#F2F2F2;'>编号</th>";
html += "<th style='background-color:#F2F2F2;'>名称</th>";
html += "<th style='background-color:#F2F2F2;'>主部门</th>";
html += "<th style='background-color:#F2F2F2;'>邮件</th>";
html += "<th style='background-color:#F2F2F2;'>电话</th>";
html += "<th style='background-color:#F2F2F2;'>状态</th>";
html += "<th style='background-color:#F2F2F2;'>操作</th>";
html += "</tr></thead>";
var emps = new Entities(empEnsName);
emps.Retrieve("FK_Dept", dept.No, "Port_Emp.Idx");
var empNos = ",";
html += "<tbody class='dept-sort'>";
for (var i = 0; i < emps.length; i++) {
var emp = emps[i];
html += "<tr data-id='" + emp.No + "' data-pid='" + dept.No + "' style='text-align:center;' class='dept-dropdown-item' ondblclick=\"EditEmp('" + emp.No + "')\" >";
html += "<td class='Idx' style='text-align:center;'>" + (i + 1) + "</td>";
html += "<td style='text-align:center;'>" + emp.No + "</td>";
html += "<td style='text-align:center;'><a href=\"javascript:EditEmp('" + emp.No + "')\">" + emp.Name + "</a></td>";
html += "<td style='text-align:center;'>" + dept.Name + "</td>";
if (emp.Email == null || emp.Email === "")
html += "<td style='text-align:center;'>-</td>";
else
html += "<td style='text-align:center;'>" + emp.Email + "</td>";
if (emp.Tel == null || emp.Tel === "")
html += "<td style='text-align:center;'>-</td>";
else
html += "<td style='text-align:center;'>" + emp.Tel + "</td>";
if (emp.EmpSta == 0) {
html += "<td style='text-align:center;'>正常</td>";
html += "<td style='text-align:center;'><button data-id='" + emp.No + "' data-pid='" + dept.No + "' class='dept-dropdown-btn layui-btn layui-btn-primary layui-border-blue layui-btn-xs' style='width: 100%'>操作</button></td>";
}
if (emp.EmpSta == 1) {
html += "<td style='text-align:center;'>禁用</td>";
html += "<td style='text-align:center;'><button data-id='" + emp.No + "' data-pid='" + dept.No + "' class='bl-dropdown-btn layui-btn layui-btn-primary layui-border-blue layui-btn-xs' style='width: 100%'>操作</button></td>";
}
html += "</tr>";
empNos += emp.No + ',';
}
html += "</tbody>"
//取消人员部门岗位管理关系. @不能出现sql.
var deptEmps = new Entities("BP.Port.DeptEmps");
deptEmps.DoMethodReturnString("DelteNotInEmp");
var deptEmpStas = new Entities("BP.Port.DeptEmpStations");
deptEmpStas.DoMethodReturnString("DelteNotInEmp");
//查询出来兼职人员.
var deptEmps = new Entities("BP.Port.DeptEmps");
deptEmps.Retrieve("FK_Dept", deptNo);
var num = emps.length;
html += "<tbody class='part-time-sort'>";
for (var i = 0; i < deptEmps.length; i++) {
var deptEmp = deptEmps[i];
if (empNos.indexOf(',' + deptEmp.FK_Emp + ',') != -1)
continue;
var emp = new Entity(empEnName);
emp.No = deptEmp.FK_Emp;
emp.SetPKVal(emp.No);
if (emp.RetrieveFromDBSources() == 0) {
//if (emp.Retrieve() == 0) {
continue;
}
html += "<tr data-id='" + emp.No + "' data-pid='" + emp.FK_Dept + "' class='ptj-dropdown-item' ondblclick=\"EditEmp('" + emp.No + "')\" >";
html += "<td class='Idx' style='text-align:center;' >" + num + "</td>";
html += "<td style='text-align:center;'>" + emp.No + "</td>";
html += "<td style='text-align:center;'><a href=\"javascript:EditEmp('" + emp.No + "')\">" + emp.Name + "</a></td>";
html += "<td style='text-align:center;'>兼职</td>";
if (emp.Email == null || emp.Email === "")
html += "<td style='text-align:center;'>-</td>";
else
html += "<td style='text-align:center;'>" + emp.Email + "</td>";
if (emp.Tel == null || emp.Tel === "")
html += "<td style='text-align:center;'>-</td>";
else
html += "<td style='text-align:center;'>" + emp.Tel + "</td>";
if (emp.EmpSta == 0)
html += "<td style='text-align:center;'>正常</td>";
if (emp.EmpSta == 1)
html += "<td style='text-align:center;'>禁用</td>";
html += "<td style='text-align:center;'><button data-id='" + emp.No + "' data-pid='" + emp.FK_Dept + "' class='ptj-dropdown-btn layui-btn layui-btn-primary layui-border-green layui-btn-sm layui-btn-xs layui-border-blue' style='width: 100%'>兼职操作</button></td>";
html += "</tr>";
num++;
empNos += emp.No + ',';
}
html += "</tbody>"
//把WF_Emp中主部门是当前部门且禁用的查询出来
var wfEmps = new Entities("BP.WF.Port.WFEmps");
wfEmps.Retrieve("FK_Dept", deptNo, "UseSta", 0);
html += "<tbody class='blacklist-sort'>";
for (var i = 0; i < wfEmps.length; i++) {
var emp = wfEmps[i];
if (empNos.indexOf(',' + emp.No + ',') != -1)
continue;
html += "<tr data-id='" + emp.No + "' data-pid='" + emp.FK_Dept + "' class='bl-dropdown-item' ondblclick=\"EditEmp('" + emp.No + "')\" >";
html += "<td class='Idx'style='text-align:center; >" + (i + 1) + "</td>";
html += "<td style='text-align:center;>" + emp.No + "</td>";
html += "<td style='text-align:center;>" + emp.Name + "</td>";
html += "<td style='text-align:center;>" + dept.Name + "</td>";
if (emp.Email == null || emp.Email === "")
html += "<td style='text-align:center;>-</td>";
else
html += "<td style='text-align:center;>" + emp.Email + "</td>";
if (emp.Tel == null || emp.Tel === "")
html += "<td style='text-align:center;>-</td>";
else
html += "<td style='text-align:center;>" + emp.Tel + "</td>";
html += "<td style='text-align:center;><button data-id='" + emp.No + "' data-pid='" + emp.FK_Dept + "' class='bl-dropdown-btn layui-btn layui-btn-primary layui-border-red layui-btn-sm layui-btn-xs layui-border-blue' style='width: 100%'>黑名单操作</button></td>";
html += "</tr>";
empNos += emp.No + ',';
}
html += "</tbody>";
html += "</table>";
html += "</div>";
html += "</div>";
$("#Emps").html(html);
bindContextMenu()
bindSortableJs()
}
function OpenChatFeiGe(toEmpNo, toEmpName, deptNo, deptName, orgNo, orgName) {
OpenChat(webUser.No, toEmpNo, toEmpName, "您好:" + toEmpName, false, true);
}
/**
* 禁用用户信息
* @param empNo
*/
function DoUnEnable(empNo) {
//把用户的信息禁用掉存储到WF_Emp表中
var emp = new Entity("BP.Port.Emp", empNo);
var data = emp.DoMethodReturnString("DoUnEnable");
alert(data);
BindEmps();
}
/**
* 启用用户
* @param empNo
*/
function DoEnable(empNo) {
var wfEmp = new Entity("BP.WF.Port.WFEmp", empNo);
wfEmp.UseSta = 1; //启用
wfEmp.Save();
var emp = new Entity("BP.Port.Emp", empNo);
emp.EmpSta = 0
emp.Update();
BindEmps();
}
function Up(no) {
var emp = new Entity(empEnName, no);
var data = emp.DoMethodReturnString("DoUp");
BindEmps();
}
function Down(no) {
var emp = new Entity(empEnName, no);
var data = emp.DoMethodReturnString("DoDown");
BindEmps();
}
function EditDept(no) {
//如果是集团模式并且是admin.
if (webUser.CCBPMRunModel == 1 && webUser.No == "admin") {
if (deptEnName == 'BP.Port.Dept')
deptEnName = "BP.WF.Port.Admin2Group.Dept";
}
//如果是单组织模式并且是admin.
if (webUser.CCBPMRunModel == 0 && webUser.No == "admin") {
if (deptEnName == 'BP.WF.Port.Admin2Group.Dept')
deptEnName = "BP.Port.Dept";
}
if (webUser.CCBPMRunModel == 2) {
deptEnName = 'BP.Port.Dept';
}
var url = '../WF/Comm/En.htm?EnName=' + deptEnName + '&No=' + no + '&FK_Dept=' + deptNo;
//获取屏幕的宽
var W = document.body.clientWidth - 250;
OpenLayuiDialog(url, '编辑', W, 100, "r", false);
//OpenBootStrapModal(url, "eudlgframe", "编辑", '800', '500', "icon-edit", true, null, null);
}
function EditEmp(no) {
var orgNo = "";
if (webUser.CCBPMRunModel != 0) {
var dept = new Entity(deptEnName, deptNo);
orgNo = dept.OrgNo;
}
if (webUser.CCBPMRunModel == 2) {
empEnName = "BP.Port.Emp";
}
if (no == undefined) {
//编号生成规则: 0=手工输入自己编号 1=系统自动生成.
if (NewEmpNoModel == 0) {
}
if (webUser.CCBPMRunModel == 2) {
var userNo = window.prompt('请输入账号,若账号已经存,就作为兼职存在当前部门:', '');
if (userNo == null || userNo == undefined)
return;
var en = new Entity("BP.Cloud.Emp");
en.No = webUser.OrgNo + '_' + userNo;
if (en.RetrieveFromDBSources() == 0) {
en.Name = userNo;
en.FK_Dept = deptNo;
en.OrgNo = webUser.OrgNo;
en.UserID = userNo;
en.Insert();
var dp = new Entity("BP.Port.DeptEmp");
dp.MyPK = deptNo + '_' + userNo;
dp.FK_Dept = deptNo;
dp.FK_Emp = userNo;
dp.OrgNo = webUser.OrgNo;
dp.Insert();
} else {
var dp = new Entity("BP.Port.DeptEmp");
dp.MyPK = deptNo + '_' + userNo;
dp.FK_Dept = deptNo;
dp.FK_Emp = userNo;
dp.OrgNo = webUser.OrgNo;
dp.Insert();
}
no = en.No;
var url = '/WF/Comm/En.htm?EnName=BP.Cloud.Emp&No=' + no;
OpenBootStrapModal(url, "eudlgframe", "编辑", '800', '500', "icon-edit", false, function () {
}, null, function () {
//刷新打开的页面
BindEmps();
});
return;
}
var url = '../WF/Comm/En.htm?EnName=' + empEnName + '&FK_Dept=' + deptNo + (webUser.CCBPMRunModel == 1 ? '&OrgNo=' + orgNo : '');
OpenBootStrapModal(url, "eudlgframe", "编辑", '800', '500', "icon-edit", false, function () {
}, null, function () {
//刷新打开的页面
BindEmps();
});
return;
}
var url = '../WF/Comm/En.htm?EnName=' + empEnName + '&PKVal=' + no + '&FK_Dept=' + deptNo + (webUser.CCBPMRunModel == 1 ? '&OrgNo=' + orgNo : '');;
OpenBootStrapModal(url, "eudlgframe", "编辑", '800', '500', "icon-edit", false, function () {
}, null, function () {
//刷新打开的页面
BindEmps();
});
}
function RefEmps() {
var url = "../WF/Comm/RefFunc/BranchesAndLeaf.htm?EnName=BP.Port.Dept&Dot2DotEnsName=BP.Port.DeptEmps&Dot2DotEnName=BP.Port.DeptEmp&AttrOfOneInMM=FK_Dept&AttrOfMInMM=FK_Emp&EnsOfM=BP.Port.Emps&DefaultGroupAttrKey=FK_Dept&No=" + deptNo + "&PKVal=" + deptNo + "&s=0.13113811473063341";
OpenBootStrapModal(url, "eudlgframe", "关联人员", '1000', '500', "icon-edit", true, null, null, function () {
//刷新打开的页面
BindEmps();
});
}
function SearchDelEmp(no, dept) {
if (confirm('您确定要删除该人员吗?') == false)
return;
var deptEmpPK = dept + "_" + no;
//取消人员部门管理关系
var en = new Entity("BP.Port.DeptEmp");
en.SetPKVal(deptEmpPK);
en.Delete();
var en = new Entity(empEnName, no);
en.Delete();
//取消人员部门岗位管理关系
var sql = "delete from Port_DeptEmpStation where FK_Emp='" + no + "' and FK_Dept='" + deptNo + "'";
DBAccess.RunSQL(sql);
SearchEmp();
}
function Del(no, dept, useSta) {
if (confirm('您确定要删除该人员吗?') == false)
return;
if ('admin' == no) {
alert("管理员账号不能删除");
return;
}
var emp = new Entity(empEnName, no);
if (parseInt(webUser.CCBPMRunModel) !== 0) {
//当前人员时主管理员不能删除
var org = new Entity("BP.WF.Port.AdminGroup.Org");
org.SetPKVal(emp.OrgNo);
if (org.RetrieveFromDBSources() != 0) {
if (org.Adminer === no) {
alert("管理员账号不能删除");
return;
}
}
}
var deptEmpPK = deptNo + "_" + no;
//取消人员部门管理关系
var en = new Entity("BP.Port.DeptEmp");
en.SetPKVal(deptEmpPK);
en.Delete();
if (useSta == 1) {
var en = new Entity(empEnName, no);
en.Delete();
}
if (useSta == 0) {
var en = new Entity("BP.WF.Port.WFEmp", no);
en.Delete();
}
//取消人员部门岗位管理关系
var handler = new HttpHandler("BP.WF.HttpHandler.GPMPage");
handler.AddPara("FK_Emp", no);
handler.AddPara("FK_Dept", deptNo);
handler.DoMethodReturnString("DeptEmpStation_Dele");
BindEmps();
}
function Remove(no) {
if (confirm('您确定要从该部门中移除吗?') == false)
return;
var en = new Entity("BP.Port.DeptEmp");
en.SetPKVal(deptNo + "_" + no);
en.Delete();
BindEmps();
}
//按人员查询
function SearchEmp() {
var searchKey = $("#searchKey").val();
var handler = new HttpHandler("BP.WF.HttpHandler.GPMPage");
handler.AddPara("searchKey", searchKey);
var emps = handler.DoMethodReturnJSON("GPM_Search");
var html = "";
html += "<div class='container'>";
html += "<div class='fixed-table-header'>";
html += "<table class='table table-hover table-striped table-bordered' style='width:97%; margin:15px 15px; ' >";
html += "<thead ><tr> ";
html += "<th style='background-color:#F2F2F2;'>序号</th>";
html += "<th style='background-color:#F2F2F2;'>编号</th>";
html += "<th style='background-color:#F2F2F2;'>名称</th>";
html += "<th style='background-color:#F2F2F2;'>主部门</th>";
html += "<th style='background-color:#F2F2F2;'>邮件</th>";
html += "<th style='background-color:#F2F2F2;'>电话</th>";
html += "<th style='background-color:#F2F2F2;'>操作</th>";
html += "</tr></thead>";
html += "<tbody>";
for (var i = 0; i < emps.length; i++) {
var emp = emps[i];
html += "<tr ondblclick=\"EditEmp('" + emp.No + "')\" >";
html += "<td class='Idx'style='text-align:center;' >" + (i + 1) + "</td>";
html += "<td style='text-align:center;' > " + emp.No + "</td>";
html += "<td style='text-align:center;' ><a href=\"javascript:EditEmp('" + emp.No + "')\">" + emp.Name + "</a></td>";
html += "<td style='text-align:center;' >" + emp.deptName + "</td>";
if (emp.Email == null || emp.Email === "")
html += "<td style='text-align:center;' >-</td>";
else
html += "<td style='text-align:center;' >" + emp.Email + "</td>";
if (emp.Tel == null || emp.Tel === "")
html += "<td style='text-align:center;' >-</td>";
else
html += "<td style='text-align:center;' >" + emp.Tel + "</td>";
html += "<td style='text-align:center;' ><a href=\"javascript:SearchDelEmp('" + emp.No + "','" + emp.FK_Dept + "');\" class='cc-btn-tab btn-del'>删除</a></td>";
html += "</tr>";
}
html += "</tbody>";
html += "</table>";
html += "</div>";
html += "</div>";
$("#Emps").html(html);
}
function Reset() {
$("#searchKey").val("");
}
function EditStations() {
var url = "../WF/Comm/Search.htm?EnsName=" + ensOfStations;
// window.open(url);
var W = document.body.clientWidth - 250;
OpenLayuiDialog(url, "", W, 100, "r", false);
/* OpenLayuiDialog(url, "", 90000, false, false, true, false, false);*/
}
function EditStationTypes() {
//获取屏幕的宽
var url = "../WF/Comm/Search.htm?EnsName=" + ensOfStationTypes;
/* OpenLayuiDialog(url, "", 90000, false, false, true, false, false);*/
var W = document.body.clientWidth - 250;
OpenLayuiDialog(url, "", W, 100, "r", false);
//window.open(url);
}
//二维码邀请加入.
function InvitedQRCode() {
var url = "InvitedQRCode.htm";
OpenLayuiDialog(url, "", 90000, false, false, true, false, false);
}
function ImpExcel() {
var url = "TemplateImp.htm";
//OpenWindowRight(url, '导入组织结构');
var W = document.body.clientWidth - 250;
OpenLayuiDialog(url, "导入组织结构", W, 100, "r", false);
//OpenLayuiDialog(url, "导入组织结构", 90000, false, false, true, false, false);
}
</script>
<style>
.panel-header,
.panel-body {
border-color: #f5f5ff
}
.blue-background-class {
background: #95B8E7 !important;
}
.blue-background-class > td {
color: white !important;
}
.blue-background-class > td > a {
color: white !important;
}
.blue-background-class > td > button {
border: 1px solid #fff !important;
color: white !important;
}
.panel {
background: #f0f2f5 !important;
}
.layout-panel-west {
margin: 15px 10px 0 15px !important;
}
.layout-split-center {
/*width:900px !important;*/
}
.container {
width: 100%;
padding: 0;
}
.menu-treetitle {
height: 50px;
line-height: 30px;
font-size: 16px;
padding: 10px;
box-sizing: border-box;
border-bottom: 1px solid #f0f2f5;
}
</style>
</head>
<body class="easyui-layout" style="background-color: #f0f2f5 !important;">
<div id="pageloading"></div>
<!--padding:6px 0 6px 6px;-->
<div data-options="region:'north',split:false" style="overflow:hidden;height:40px;width:1314px !important" class="top-area">
<!--<div style="float:left">-->
<div class="left-search">
<div class="search-inp"><span>关键字:</span><div style="width: 160px; border-width: 1px; border-style: solid; background-color: #fff; border-color: #eee;"><input id="searchKey" name="searchKey" type="text" style="margin-left:5px; height: 23px; border:none;outline:none;" /></div></div>
<button class="cc-btn-tab" id="SearchBtn" onclick="SearchEmp()">查询</button>
<button class="cc-btn-tab" id="ResetBtn" onclick="Reset()">重置</button>
<button class="cc-btn-tab" id="btnOrg" onclick="NewOrg()">新建组织</button>
</div>
<!--<div style="float:right">-->
<div class="right-post">
<!-- <button class="cc-btn-tab" id="SearchBtn" onclick="InvitedQRCode()">二维码邀请加入</button>-->
<button class="cc-btn-tab" id="SearchBtn" onclick="EditStations()">岗位</button>
<button class="cc-btn-tab" id="ResetBtn" onclick="EditStationTypes()">岗位类型</button>
<button class="cc-btn-tab" id="ResetBtn" onclick="ImpExcel()">导入</button>
<div id="iconIM"></div>
<!--<button class="cc-btn-tab" id="ResetBtn" onclick="Reset()">权限组</button>-->
</div>
</div>
<div style="display:flex;">
<div id="TreeLayout" data-options="region:'west',split:false" style="width: 220px; padding: 1px; overflow: hidden; height: 90vh; position: static; margin: 55px 10px 0 15px; background: #fff; border-radius: 5px; ">
<div style="width: 100%; height: 95%; overflow: auto;">
<div class="menu-treetitle"><i class="fa fa-fw icon-grid" style="vertical-align: -1px;"></i>组织树</div>
<ul id="regionZTree" class="ztree" data-options="animate:false,dnd:false"></ul>
</div>
<div id="menu" class="small-menu" style="width: 120px;">
<div class="newSameLevel">
<i class="iconfont icon-zujian"></i>增加同级
</div>
<div class="newNextLevel">
<i class="iconfont icon-xianchengxielou"></i>增加子级
</div>
<div class="edit">
<i class="iconfont icon-bianji1"></i>修改名称
</div>
<div class="delete">
<i class="iconfont icon-guanbi"></i>删除
</div>
<div class="moveUpDept">
<i class="iconfont icon-shangyi"></i>上移
</div>
<div class="moveDownDept">
<i class="iconfont icon-xy"></i>下移
</div>
</div>
</div>
<div data-options="region:'center',split:true" style="margin: 55px 20px 0px 5px; width: 1055px !important; height: 90vh; position: static; position: static; background: #fff;border-radius:5px; ">
<div id="Emps">
</div>
</div>
</div>
</body>
</html>