OpenAuth.Net/OpenAuth.Mvc/wwwroot/js/droptree.js
2020-12-17 23:04:04 +08:00

157 lines
6.3 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// ***********************************************************************
// Assembly : OpenAuth.Mvc
// Author : yubaolee
// Created : 10-16-2016
//
// Last Modified By : yubaolee
// Last Modified On : 04-02-2019
// 修改ztree为基于layui的dtree
// ***********************************************************************
// <copyright file="droptree.js" company="www.cnblogs.com/yubaolee">
// 版权所有 玉宝(C) 2017
// </copyright>
//单击文本框弹出的选择列表,可以多选。调用:
//var droptree = layui.droptree("/UserSession/GetOrgs", "#Organizations", "#OrganizationIds");
// droptree.render();
// ***********************************************************************
layui.config({
base: "/js/"
}).define(['jquery', 'layer','dtree'], function (exports) {
var $ = layui.jquery;
var layer = layui.layer;
var dtree = layui.dtree;
var inst; //droptree实体
//构造器
var DropTree = function (options) {
var that = this;
that.config = $.extend({}, that.config, options);
var nameObj = $(that.config.nameDOM);
if (nameObj[0]) {
var $events = $._data(nameObj[0], 'events');
if ($events && $events["click"]) {
console.log("already bind click");
return;
}
}
//上级机构选择框
$(that.config.nameDOM).on("click", function () {
layer.open({
type: 1, //type:0 也行
title: "选择",
area: ["400px", "80%"],
content: '<ul id="dropTreeSel" class="dtree" data-id="null"></ul>',
btn: ['确认选择'],
success: function(layero, index){
var DTree = dtree.render({
obj: $(layero).find("#dropTreeSel"),
url: that.config.url,
method:'GET',
dataFormat:'list',
dataStyle: 'layuiStyle',
initLevel: "4",
response:{
statusName: "Code", //返回标识(必填)
statusCode: 200, //返回码(必填)
message: "Message", //返回信息(必填)
rootName: "Result", //根节点名称(必填)
treeId: that.config.key, //节点ID必填
parentId: that.config.parentKey, //父节点ID必填
title: that.config.text, //节点名称(必填)
},
checkbar: that.config.selectedMulti, // 开启复选框
checkbarType:'p-casc',
success: function(data, obj){ //使用异步加载回调
$.each(data.Result,
function (i, item) {
item.checkArr=[{ //复选框的数据必须加上这个,😰
type:0,
isChecked:0
}]
})
},
done: function(data, obj){ //使用异步加载回调
var checkedIds = $(that.config.idDOM).val();
if (that.config.selectedMulti) {
dtree.chooseDataInit("dropTreeSel", checkedIds); // 初始化复选框的值
} else {
dtree.dataInit("dropTreeSel", checkedIds);
}
}
});
// 绑定节点的双击
dtree.on("nodedblclick('dropTreeSel')", function(obj){
$(that.config.idDOM).val(obj.param.nodeId);
$(that.config.nameDOM).val(obj.param.context);
$(that.config.idDOM).change();
layer.close(index);
});
},
yes: function(index, layero) {
var flag = true;
var ids=[];
var names=[];
if(that.config.selectedMulti){ //多选
var multi = dtree.getCheckbarNodesParam("dropTreeSel"); // 获取选中值
if (multi.length == 0){
layer.msg("请至少选择一个节点",{icon:2});
flag = false;
}
for (var key in multi){
var param = multi[key];
ids.push(param.nodeId);
names.push(param.context);
}
}
else{ //单选
var single = dtree.getNowParam("dropTreeSel"); // 获取当前选中节点
if (single == null){
layer.msg("请至少选择一个节点",{icon:2});
flag = false;
}
ids.push(single.nodeId);
names.push(single.context);
}
$(that.config.idDOM).val(ids.join(","));
$(that.config.nameDOM).val(names.join(","));
if(options.callback){
options.callback(ids.join(","), names.join(","));
}
$(that.config.idDOM).change();
if(flag){
layer.close(index);
}
}
});
});
};
//默认配置
DropTree.prototype.config = {
text: 'Name',
key: 'Id',
parentKey: 'ParentId',
callback:null, //选中后的回调
selectedMulti: true //默认是多选
};
exports('droptree', function (url, name, id, selectedMulti,callback) {
var options = {
nameDOM: name, //显示的文本框ID"#catetoryName"
idDOM: id, //隐藏的文本框,如:"#categoryId"
url: url,
callback:callback, //选中后的回调
selectedMulti: selectedMulti //是否为多选
}
inst = new DropTree(options);
return inst;
});
});