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.

338 lines
13 KiB
Plaintext

This file contains ambiguous Unicode 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.

<!DOCTYPE html>
<html>
<head>
<title></title>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1">
<script src="../../Scripts/jquery-1.11.0.min.js" type="text/javascript"></script>
<script src="../../Scripts/vue.js"></script>
<link href="../../../DataUser/Style/ccbpm.css" rel="stylesheet" type="text/css" />
<script language="JavaScript" src="../../Comm/JScript.js" type="text/javascript"></script>
<script type="text/javascript" src="../../Scripts/QueryString.js"></script>
<script type="text/javascript" src="../../Scripts/config.js"></script>
<script type="text/javascript" src="../../Comm/Gener.js"></script>
<script src="../../Scripts/bootstrap/js/bootstrap.min.js" type="text/javascript"></script>
<link href="../../Scripts/bootstrap/css/bootstrap.min.css" rel="stylesheet" type="text/css" />
<link href="../../Scripts/bootstrap/css/font-awesome.css" rel="stylesheet" type="text/css" />
<link href="../../Scripts/element/element.css" rel="stylesheet" />
<script src="../../Scripts/bootstrap/bootstrap-table/src/bootstrap-table.js" type="text/javascript"></script>
<link href="../../Scripts/bootstrap/bootstrap-table/src/bootstrap-table.css" rel="stylesheet" type="text/css" />
<script src="../../Scripts/bootstrap/bootstrap-table/src/locale/bootstrap-table-zh-CN.js" type="text/javascript"></script>
<script src="../../Scripts/bootstrap/bootstrap-treeview/src/js/bootstrap-treeview.js" type="text/javascript"></script>
<link href="../../Scripts/bootstrap/bootstrap-treeview/src/css/bootstrap-treeview.css" rel="stylesheet" type="text/css" />
<script src="../../Scripts/element/element.js"></script>
<style type="text/css">
.row-margin-top {
margin-top: 20px;
}
.search-margin {
margin-top: 15px;
}
.container-fluid {
display: flex;
justify-content: space-between;
align-items: center;
}
#back_btn {
margin-top: 15px;
margin-right: auto;
}
.el-button--primary {
padding: 0 15px;
margin-left: 20px;
margin-bottom: 15px;
height: 25px;
line-height: 25px;
}
label {
margin-bottom: 0;
}
.el-tree {
padding-left: 20px;
}
.is-leaf::before {
display: none;
}
.el-tree--highlight-current .el-tree-node.is-current > .el-tree-node__content {
font-weight: bold;
}
.row{
margin-left:0;
}
.el-tag {
margin: 5px 5px;
}
</style>
</head>
<body>
<!--<div class="container-fluid" style=" width:100%;">
<el-button type="primary" click="IsBack()">返回</el-button>
</div>-->
<div class="row row-margin-top" id="app">
<el-button v-if="isBackBtn === 0 " type="primary" @click="IsBack()">返回</el-button>
<el-tag v-for="tag in tags"
:key="tag.id"
closable
:type="tag.type"
@close="handleClose(tag)">
{{tag.name}}
</el-tag>
<el-tree :props="defaultProps"
:load="loadNode"
:data="jsonTree"
lazy
node-key="id"
show-checkbox
ref="tree"
highlight-current
:check-strictly="true"
@check-change="handleCheckChange">
</el-tree>
</div>
</body>
<script type="text/javascript">
new Vue({
el: '#app',
data() {
return {
checkAll: false,
mapExt: null,
defaultProps: {
children: 'children',
label: 'name',
isLeaf: (data, node) => {
if (node.level === 4) {
return true
}
}
},
jsonTree: [],
rootNo: null,
child: [],
isBackBtn: '',
tags: [],
};
},
methods: {
handleClose(tag) {
var en = new Entity(GetQueryString("Dot2DotEnName"));
en[GetQueryString("AttrOfOneInMM")] = GetPKVal();
en[GetQueryString("AttrOfMInMM")] = tag.id;
en.Delete(GetQueryString("AttrOfOneInMM"), GetPKVal(), GetQueryString("AttrOfMInMM"), tag.id);
//取消选中时如果tags数组中有已经选中的数据再进行点击取消删除时进项删除该项
var tmp = $.grep(this.tags, function (value) {
return value.id != tag.id;
});
this.tags = tmp;
let chooseRes = this.$refs.tree.getCheckedKeys().concat(this.$refs.tree.getHalfCheckedKeys())
console.log(chooseRes);
for (var i = 0; i < chooseRes.length; i++) {
if (chooseRes[i] == tag.id) {
this.$refs.tree.setChecked(tag.id, false)
}
}
},
handleCheckChange(data, checked, z) {
console.log(data);
//console.log(r);
//console.log(z);
let arr = []
let res = this.$refs.tree.getCheckedNodes()
res.forEach((item) => {
arr.push(item.id)
})
var en = new Entity(GetQueryString("Dot2DotEnName"));
en[GetQueryString("AttrOfOneInMM")] = GetPKVal();
en[GetQueryString("AttrOfMInMM")] = data.id;
if (checked == true) {
//判断数据是否存在,如果存在选中时就不再添加,不存在再添加
var flag = false;
for (var i in this.tags) {
if (this.tags[i].id == data.id) {
flag = true;
}
}
if (flag == false) {
this.tags.push({
id: data.id,
name: data.name,
})
}
//选中
en.Save();
} else {
//取消选中时如果tags数组中有已经选中的数据再进行点击取消删除时进项删除该项
var tmp = $.grep(this.tags, function (value) {
return value.id != data.id;
});
this.tags = tmp;
//取消选中
en.Delete(GetQueryString("AttrOfOneInMM"), GetPKVal(), GetQueryString("AttrOfMInMM"), data.id);
}
},
//判断是否有上一路径;
IsBack() {
this.isBackBtn = GetQueryString("BackBtn"),
console.log(this.isBackBtn);
if (document.referrer.includes("EmpDepts.htm")) {
window.history.go(-1);
} else {
window.history.go(0);
}
},
//懒加载
loadNode(node, resolve) {
if (node.level === 0) {
var roootData = [];
roootData = this.jsonTree.map(key => {
return {
name: key.label,
id: key.id,
children: key.children,
}
})
return resolve(roootData);
}
if (node.level > 3) {
return resolve([]);
}
if (node.level > 0) {
var ens = new Entities(GetQueryString("EnsOfM")); //BP.Port.Depts
ens.Retrieve("ParentNo", node.data.id, "Idx");
this.child = this.creatTreeChildern(ens, node.data.id);
var data = [];
data = this.child.map(item => {
return {
name: item.label,
id: item.id,
children: item.children,
}
})
setTimeout(() => {
resolve(data);
}, 500);
}
},
createJsonToTree(jsonArray, parentNo) {
//获取ParentNo的数据
var items = $.grep(jsonArray, function (obj) {
return obj.No == parentNo;
});
if (items.length != 0) {
this.jsonTree.push({
"id": items[0].No,
"label": items[0].Name,
"children": this.creatTreeChildern(jsonArray, items[0].No),
"state": { checked: checked, disabled: false }
});
} else {
for (var i = 0; i < jsonArray.length; i++) {
var data = jsonArray[i];
if (data.ParentNo.trim() == parentNo) {
var checked = false;
this.jsonTree.push({
"id": data.No,
"label": data.Name,
"children": this.creatTreeChildern(jsonArray, data.No),
"state": { checked: checked, disabled: false }
});
}
}
this._(this.jsonTree);
}
}
, _(treeArray) {
$.each(treeArray, function (i, o) {
if ($.isArray(o.children)) {
if (o.children.length == 0) {
o.children = [];
} else {
this._(o.children);
}
}
});
},
creatTreeChildern(jsonArray, parentNo) {
var childList = []
for (var i = 0; i < jsonArray.length; i++) {
var data = jsonArray[i];
if (data.ParentNo == parentNo) {
var checked = false;
this.jsonTree.filter((ID) => {
if (ID.id === parentNo) ID.children.push({
"id": data.No,
"label": data.Name,
"children": this.creatTreeChildern(jsonArray, data.No),
"state": { checked: checked, disabled: false }
})
})
childList.push({
"id": data.No,
"label": data.Name,
"children": this.creatTreeChildern(jsonArray, data.No),
"state": { checked: checked, disabled: false }
});
}
}
return childList;
},
//获取父节点数据
loadTree() {
var webUser = new WebUser()
//global
let global = window;
global.selectedNodes = [];
global.selectedRows = [];
this.rootNo = GetQueryString("RootNo");
if (this.rootNo == "@WebUser.FK_Dept")
this.rootNo = webUser.FK_Dept;
if (webUser.CCBPMRunModel == 2)
this.rootNo = webUser.OrgNo;
if (this.rootNo == null || this.rootNo == "")
this.rootNo = webUser.FK_Dept;
let ens = new Entities(GetQueryString("EnsOfM")); //BP.Port.Depts
ens.Retrieve("ParentNo", 0, "Idx"); // this.rootNo不是根节点
this.createJsonToTree(ens, this.rootNo);
if (ens.length == 0) {
let ParentNo = 'OrgNo';
ens.Retrieve(ParentNo, 0, "Idx");
}
//查询选中的部门
ens = new Entities(GetQueryString("Dot2DotEnName") + "s");
ens.Retrieve(GetQueryString("AttrOfOneInMM"), GetPKVal());
for (var i = 0; i < ens.length; i++) {
var en = ens[i];
this.tags.push({
id: en.FK_Dept,
name: en.FK_DeptText,
})
}
console.log(this.tags);
},
},
created() {
this.loadTree();
},
})
</script>
</html>