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.

577 lines
22 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.

<html>
<head>
<title>组织结构管理</title>
<meta charset="UTF-8" />
<link rel="stylesheet" type="text/css" href="../../GPM/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>
<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>
<style type="text/css">
.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: 20px;
margin: 0px;
border-bottom: solid 1px #CCC;
cursor: pointer;
line-height: 38px
}
.small-menu div img {
padding-right: 10px;
margin: 0px;
}
.small-menu div:hover {
background-color: #EAF2FF;
}
.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);
}
</style>
<script type="text/javascript">
var deptNo = "";
var setting = {
view: {
dblClickExpand: false, //双击节点时,是否自动展开父节点的标识
showLine: true, //是否显示节点之间的连线
fontCss: {}, //字体样式函数
selectedMulti: false //设置是否允许同时选中多个节点
},
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"
},
data: {
simpleData: {
enable: true,
idKey: "id",
pIdKey: "pid",
rootPId: ""
}
},
callback: {
onClick: function (event, treeId, treeNode) {
deptNo = treeNode.id;
BindEmps();
},
onRightClick: OnRightClick
} //这里是节点点击事件
};
//右键菜单功能实现
(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('请传入鼠标事件');
}
var height = options.event.clientY;
var height1 = $(document.body).height();
var DValue = height1 - height;
if (DValue < 260) {
height = options.event.clientY - 260;
}
$currMenu.css({
top: height + "px",
left: options.event.clientX + "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) {
zTreeObj.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("BP.Cloud.Dept", 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("BP.Cloud.Dept", treeNode.id);
var data = dept.DoMethodReturnString("DoDown");
//树节点直接更新
var next = $("#" + treeNode.tId).next();
if (next.length == 0) {
return;
}
$("#" + treeNode.tId).insertAfter(next);
}
//增加同级部门
function NewSameLevel(treeNode) {
var val = prompt("请输入部门名称", "");
if (val == null || val == '') {
return false;
}
var dept = new Entity("BP.Cloud.Dept");
dept.Name = val;
dept.ParentNo = treeNode.pid;
dept.Insert();
//更新树节点
var treeObj = $.fn.zTree.getZTreeObj("regionZTree");
var parentNode = treeObj.getNodeByTId(treeNode.parentTId);
var newNode = { name: val };
//把这个新节点添加到当前选中的节点下,作为它的子节点
newNode = treeObj.addNodes(parentNode, newNode);
}
//增加下级部门
function NewNextLevel(treeNode) {
var val = prompt("请输入部门名称", "");
if (val == null || val == '') {
return false;
}
var dept = new Entity("BP.Cloud.Dept");
dept.Name = val;
dept.ParentNo = treeNode.id;
dept.Insert();
//更新树节点
var treeObj = $.fn.zTree.getZTreeObj("regionZTree");
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("BP.Cloud.Dept", treeNode.id);
dept.Name = val;
dept.Update();
//更新树节点
$("#" + treeNode.tId + "_span").text(val);
}
//删除部门
function Delete(treeNode) {
if (confirm("你确定删除该部门吗?") == false)
return;
var dept = new Entity("BP.Cloud.Dept", treeNode.id);
dept.Delete();
//树节点删除
var my = document.getElementById(treeNode.tId);
if (my != null)
my.parentNode.removeChild(my);
}
//初始化
$(function () {
$("#pageloading").show();
var handler = new HttpHandler("BP.Cloud.HttpHandler.Admin_Org");
var ens = handler.DoMethodReturnJSON("Organization_Init");
var jsonTree = createJsonToTree(ens);
zTreeObj = $.fn.zTree.init($("#regionZTree"), setting, jsonTree);
fillter(zTreeObj); //设置展开前三级
var webUser = new WebUser();
var org = new Entity("BP.Cloud.Org", webUser.OrgNo);
//绑定帮助信息.
var html = "<br><br><h3 style='padding-left:5px'>组织结构管理:<font color=green>" + org.Name + "</font></h3>";
if (org.RegFrom == 0) {
html += "<ul>";
html += "<li>本功能维护了人员信息Port_Emp, 部门信息Port_Dept, 一人多部门(我们成为兼职Port_DeptEmp), 一人多部门多岗位(Port_DeptEmpStation)</li>";
html += "<li>维护部门在节点上点击右键,可以新建,保存,修改。</li>";
html += "</ul>";
}
if (org.RegFrom == 1) {
html += "<ul>";
html += "<li>您的组织结构是从微信端集成过来的,组织结构的变更与微信相同,您可以为人员维护岗位.</li>";
html += "<li>同步组织结构数据: <a href='javascript:DoDTS();' >执行同步</a>.</li>";
html += "</ul>";
}
if (org.RegFrom == 2) {
html += "<ul>";
html += "<li>您的组织结构是从钉钉端集成过来的,组织结构的变更与钉钉相同,您可以为人员维护岗位.</li>";
html += "<li>同步组织结构数据: <a href='javascript:DoDTS();' >执行同步</a>.</li>";
html += "</ul>";
}
$("#Emps").html(html);
$("#pageloading").hide();
//鼠标移开时右键菜单消失
$(document).on('mouseleave ', '.dropdown-menu', function () {
$(".dropdown-menu").hide();
$.learunindex.destroy
});
});
//设置展开前三级
function fillter(zTreeObj) {
//获得树形图对象
var nodeList = zTreeObj.getNodes();       //展开第一个根节点
for (var i = 0; i < nodeList.length; i++) { //设置节点展开第二级节点
zTreeObj.expandNode(nodeList[i], true, false, true);
}
}
//转换ztree需要的数据格式
var treeJson = [];
function createJsonToTree(jsonArray) {
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
});
}
return treeJson;
}
//绑定人员.
function BindEmps() {
var dept = new Entity("BP.Cloud.Dept", deptNo);
var html = "";
html += "<div class='container'>";
html += "<div class='fixed-table-header'>";
html += "<table class='table table-hover table-striped' style='width:90%;' >";
html += "<tr><h5><a href=\"javascript:EditDept('" + dept.No + "')\" >" + dept.Name + " </a> - <a href='javascript:EditEmp()'>新建人员</a> - <a 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 handler = new HttpHandler("BP.Cloud.HttpHandler.Admin_Org");
handler.AddPara("FK_Dept", dept.No);
var emps = handler.DoMethodReturnJSON("Organization_GenerEmpsByDeptNo");
var empNos = ",";
html += "<tbody>";
for (var i = 0; i < emps.length; i++) {
var emp = emps[i];
html += "<tr ondblclick=\"EditEmp('" + emp.No + "')\" >";
html += "<td class='Idx' >" + (i + 1) + "</td>";
html += "<td>" + emp.No + "</td>";
html += "<td><a href=\"javascript:EditEmp('" + emp.No + "')\">" + emp.Name + "</a></td>";
if (emp.IsMainDept == 1)
html += "<td>主部门</td>";
else
html += "<td>非主部门</td>";
if (emp.Email == null || emp.Email == "")
html += "<td>-</td>";
else
html += "<td>" + emp.Email + "</td>";
if (emp.Tel == null || emp.Tel == "")
html += "<td>-</td>";
else
html += "<td>" + emp.Tel + "</td>";
html += "<td><a href=\"javascript:Del('" + emp.No + "')\" ><img src='../WF/Img/Btn/Delete.gif'>删除</a></td>";
html += "<td><img src='../WF/Img/Btn/Up.GIF' onclick=\"Up('" + emp.No + "')\" alt='上移' />-<img src='../WF/Img/Btn/Down.gif' onclick=\"Down('" + emp.No + "')\" alt='下移' /> </td>";
html += "</tr>";
empNos += emp.No + ',';
}
html += "</tbody>";
html += "</table>";
html += "</div>";
html += "</div>";
$("#Emps").html(html);
}
function Up(no) {
var emp = new Entity("BP.Cloud.Emp", no);
var data = emp.DoMethodReturnString("DoUp");
BindEmps();
}
function Down(no) {
var emp = new Entity("BP.Cloud.Emp", no);
var data = emp.DoMethodReturnString("DoDown");
BindEmps();
}
function EditDept(no) {
var url = '../../WF/Comm/En.htm?EnName=BP.Cloud.Dept&No=' + no;
OpenBootStrapModal(url, "eudlgframe", "编辑", '800', '500', "icon-edit", true, null, null);
}
function EditEmp(no) {
if (no == undefined) {
var url = '../../WF/Comm/En.htm?EnName=BP.Cloud.Emp&FK_Dept=' + deptNo;
OpenBootStrapModal(url, "eudlgframe", "新增", '800', '500', "icon-edit", true, null, null);
return;
}
var url = '../../WF/Comm/En.htm?EnName=BP.Cloud.Emp&No=' + no;
OpenBootStrapModal(url, "eudlgframe", "编辑", '800', '500', "icon-edit", true, null, null);
}
function RefEmps() {
var url = "../../WF/Comm/RefFunc/BranchesAndLeaf.htm?EnName=BP.Cloud.Dept&Dot2DotEnsName=BP.Cloud.DeptEmps&Dot2DotEnName=BP.Cloud.DeptEmp&AttrOfOneInMM=FK_Dept&AttrOfMInMM=FK_Emp&EnsOfM=BP.Cloud.Emps&DefaultGroupAttrKey=FK_Dept&No=" + deptNo + "&PKVal=" + deptNo + "&s=0.13113811473063341";
OpenBootStrapModal(url, "eudlgframe", "关联人员", '1000', '500', "icon-edit", true, null, null);
}
function Del(no) {
if (confirm('您确定要删除该人员吗?') == false)
return;
//取消人员部门管理关系
var en = new Entity("BP.Cloud.DeptEmp");
en.SetPKVal(deptNo + "_" + no);
en.Delete();
var en = new Entity("BP.Cloud.Emp", no);
en.Delete();
//取消人员部门岗位管理关系
var sql = "delete from Port_DeptEmpStation where FK_Emp='" + no + "' and FK_Dept='" + deptNo + "'";
DBAccess.RunSQL(sql);
// var en = new Entity("BP.Cloud.DeptEmpStation");
// en.Delete("FK_Dept",);
// SELECT * FROM Port_DeptEmpStation WHERE FK_Dept+'_'+FK_Emp not in (select MyPK FROM PORT_DEPTEMP)
BindEmps();
}
function Remove(no) {
if (confirm('您确定要从该部门中移除吗?') == false)
return;
var en = new Entity("BP.Cloud.DeptEmp");
en.SetPKVal(deptNo + "_" + no);
en.Delete();
BindEmps();
}
</script>
<style type="text/css">
</style>
</head>
<body class="easyui-layout">
<div id="pageloading">
</div>
<div data-options="region:'west',split:true" style="width: 240px; padding: 1px; overflow: hidden;">
<div style="width: 100%; height: 95%; overflow: auto;">
<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">
<img src="../../WF/Admin/Portal/Img/ico-flow-pic.png">增加同级
</div>
<div class="newNextLevel">
<img src="../../WF/Admin/Portal/Img/ico-flow-import.png">增加子级
</div>
<div class="edit">
<img src="../../WF/Admin/Portal/Img/ico-flow-prototype.png">编辑
</div>
<div class="delete">
<img src="../../WF/Admin/Portal/Img/ico-flow-delete.png">删除
</div>
<div class="moveUpDept">
<img src="../../WF/Admin/Portal/Img/ico-flow-up.png">上移
</div>
<div class="moveDownDept">
<img src="../../WF/Admin/Portal/Img/ico-flow-down.png">下移
</div>
</div>
</div>
<div data-options="region:'center',split:true" style="width:90%;">
<div id="Emps"></div>
</div>
</body>
</html>