267 lines
9.2 KiB
JavaScript
267 lines
9.2 KiB
JavaScript
layui.define(['layer','dtree'],function(exports){
|
||
//提示:模块也可以依赖其它模块,如:layui.define('layer', callback);
|
||
var layer = layui.layer;
|
||
var dtree = layui.dtree;
|
||
var opts={
|
||
"title":'选择员工',
|
||
"department_url": "/api/index/get_department_tree",
|
||
"employee_url": "/api/index/get_employee",
|
||
"type":1,
|
||
"ids":[],
|
||
"names":[],
|
||
"dids":[],
|
||
"departments":[],
|
||
"fixedid":0,
|
||
"callback": function(){}
|
||
};
|
||
obj = {
|
||
render:function(){
|
||
var me=this,letterTem='';
|
||
for(var i=0;i<26;i++){
|
||
letterTem+='<span class="layui-letter-span" data-code="'+String.fromCharCode(97+i)+'">'+String.fromCharCode(65+i)+'</span>';
|
||
}
|
||
var tpl='<div style="width:220px; height:388px; border-right:1px solid #eee; overflow-x: hidden; overflow-y: auto; float:left;">\
|
||
<div id="employeetree" style="padding:10px 0;"></div>\
|
||
</div>\
|
||
<div style="width:568px; height:388px; user-select:none; overflow-x: hidden; overflow-y: auto; float:left;">\
|
||
<div style="padding:15px 10px 0;"><div style="color:#999; text-align:center;">⇐ 点击左边部门筛选员工,或者点击下面字母筛选</div><div id="letterBtn" style="color:#999; text-align:center;">'+letterTem+'</div></div>\
|
||
<div id="employee" style="padding:8px 15px"></div>\
|
||
<div style="padding:10px 15px; border-top:1px solid #eee;;"><strong>已选择</strong><span class="layui-tags-all">全选</span></div>\
|
||
<div id="selectTags" style="padding:10px 15px;">'+me.initSelect()+'</div>\
|
||
</div>';
|
||
return tpl;
|
||
},
|
||
initSelect:function(){
|
||
var me=this,select_tags='';
|
||
if(me.settings.type == 0){
|
||
select_tags+='<span style="color:#1E9FFF">'+me.settings.names+'</span>';
|
||
}
|
||
else{
|
||
for(var a=0;a<me.settings.ids.length;a++){
|
||
if(me.settings.fixedid==me.settings.ids[a] && me.settings.fixedid!=0){
|
||
select_tags+='<span class="layui-tags-span">'+me.settings.names[a]+'</span>';
|
||
}
|
||
else{
|
||
select_tags+='<span class="layui-tags-span">'+me.settings.names[a]+'<i data-index="'+a+'" data-id="'+me.settings.ids[a]+'" class="layui-icon layui-tags-close">ဆ</i></span>';
|
||
}
|
||
}
|
||
}
|
||
return select_tags;
|
||
},
|
||
init: function (options) {
|
||
this.settings = $.extend({}, opts, options);
|
||
var me=this;
|
||
layer.open({
|
||
type:1,
|
||
title:me.settings.title,
|
||
area:['800px','500px'],
|
||
content:me.render(),
|
||
success:function(obj,idx){
|
||
var dataList=[];
|
||
$.ajax({
|
||
url:me.settings.department_url,
|
||
type:'get',
|
||
success:function(res){
|
||
dtree.render({
|
||
elem: "#employeetree",
|
||
data: res.trees,
|
||
type: "all",
|
||
initLevel: "1",
|
||
icon: "2" //修改二级图标样式
|
||
});
|
||
dtree.on("node('employeetree')" ,function(obj){
|
||
$('#letterBtn').find('span').removeClass('on');
|
||
$.ajax({
|
||
url:me.settings.employee_url,
|
||
type:'get',
|
||
data:{did:obj.param.nodeId},
|
||
success:function(res){
|
||
dataList=res.data;
|
||
if(dataList.length>2 && me.settings.type == 1){
|
||
$('.layui-tags-all').show();
|
||
}
|
||
else{
|
||
$('.layui-tags-all').hide();
|
||
}
|
||
if(dataList.length>0){
|
||
var tagsItem='';
|
||
for(var i=0; i<dataList.length; i++){
|
||
tagsItem+='<span class="layui-tags-span" data-id="'+dataList[i].id+'" data-did="'+dataList[i].did+'" data-department="'+dataList[i].department+'">'+dataList[i].nickname+'</span>';
|
||
}
|
||
$('#employee').html(tagsItem);
|
||
}else{
|
||
$('#employee').html('<div style="color:#999; text-align:center;">暂无员工</div>');
|
||
}
|
||
}
|
||
})
|
||
});
|
||
$('#letterBtn').on("click" ,'span',function(){
|
||
var code=$(this).data('code');
|
||
$(this).addClass('on').siblings().removeClass('on');
|
||
$.ajax({
|
||
url:me.settings.employee_url,
|
||
type:'get',
|
||
data:{id:1},
|
||
success:function(res){
|
||
dataList=res.data;
|
||
var letterData=[];
|
||
if(dataList.length>0){
|
||
var tagsItem='';
|
||
for(var i=0; i<dataList.length; i++){
|
||
if(dataList[i].username.slice(0,1)==code){
|
||
tagsItem+='<span class="layui-tags-span" data-id="'+dataList[i].id+'" data-did="'+dataList[i].did+'" data-department="'+dataList[i].department+'">'+dataList[i].nickname+'</span>';
|
||
letterData.push(dataList[i]);
|
||
}
|
||
}
|
||
dataList=letterData;
|
||
if(dataList.length>2 && me.settings.type == 1){
|
||
$('.layui-tags-all').show();
|
||
}
|
||
else{
|
||
$('.layui-tags-all').hide();
|
||
}
|
||
if(tagsItem==''){
|
||
tagsItem='<div style="color:#999; text-align:center;">暂无员工</div>';
|
||
}
|
||
$('#employee').html(tagsItem);
|
||
}else{
|
||
$('#employee').html('<div style="color:#999; text-align:center;">暂无员工</div>');
|
||
}
|
||
}
|
||
})
|
||
});
|
||
}
|
||
});
|
||
|
||
if(me.settings.type == 1){
|
||
$('.layui-tags-all').on('click',function(){
|
||
var sIds = me.settings.ids.join(',');
|
||
var sNames = me.settings.names.join(',');
|
||
var sDids = me.settings.dids.join(',');
|
||
var sDepartments = me.settings.departments.join(',');
|
||
for(var a=0; a<dataList.length;a++){
|
||
if(sIds.indexOf(dataList[a].id)<0){
|
||
sIds+=','+dataList[a].id;
|
||
sNames+=','+dataList[a].nickname;
|
||
sDids+=','+dataList[a].did;
|
||
sDepartments+=','+dataList[a].department;
|
||
}
|
||
}
|
||
if(me.settings.ids.length==0){
|
||
sIds=sIds.substr(1);
|
||
sNames=sNames.substr(1);
|
||
sDids=sDids.substr(1);
|
||
sDepartments=sDepartments.substr(1);
|
||
}
|
||
me.settings.ids=sIds.split(',');
|
||
me.settings.names=sNames.split(',');
|
||
me.settings.dids=sDids.split(',');
|
||
me.settings.departments=sDepartments.split(',');
|
||
$('#selectTags').html(me.initSelect());
|
||
});
|
||
}
|
||
|
||
|
||
$('#employee').on('click','.layui-tags-span',function(){
|
||
var item_id=$(this).data('id').toString();
|
||
var item_name=$(this).text();
|
||
var item_did=$(this).data('did').toString();
|
||
var item_department=$(this).data('department').toString();
|
||
if(me.settings.ids.indexOf(item_id)>=0){
|
||
return;
|
||
}
|
||
if(me.settings.type == 0){
|
||
layer.close(idx);
|
||
me.settings.callback(item_id,item_name,item_did,item_department);
|
||
}
|
||
else{
|
||
var sIds = me.settings.ids.join(',')+','+item_id;
|
||
var sNames = me.settings.names.join(',')+','+item_name;
|
||
var sDids = me.settings.dids.join(',')+','+item_did;
|
||
var sDepartments = me.settings.departments.join(',')+','+item_department;
|
||
if(me.settings.ids.length==0){
|
||
sIds=item_id;
|
||
sNames=item_name;
|
||
sDids=item_did;
|
||
sDepartments=item_department;
|
||
}
|
||
me.settings.ids=sIds.split(',');
|
||
me.settings.names=sNames.split(',');
|
||
me.settings.dids=sDids.split(',');
|
||
me.settings.departments=sDepartments.split(',');
|
||
$('#selectTags').html(me.initSelect());
|
||
}
|
||
});
|
||
|
||
$('#selectTags').on('click','.layui-tags-close',function(){
|
||
var index=$(this).data('index');
|
||
var newIds=[],newNames=[],newDids=[],newDepartments=[];
|
||
for(var i=0;i<me.settings.ids.length;i++){
|
||
if(i!=index){
|
||
newIds.push(me.settings.ids[i]);
|
||
newNames.push(me.settings.names[i]);
|
||
newDids.push(me.settings.dids[i]);
|
||
newDepartments.push(me.settings.departments[i]);
|
||
}
|
||
}
|
||
me.settings.ids=newIds;
|
||
me.settings.names=newNames;
|
||
me.settings.dids=newDids;
|
||
me.settings.departments=newDepartments;
|
||
$('#selectTags').html(me.initSelect());
|
||
});
|
||
if(me.settings.type == 0){
|
||
$('#layui-layer'+idx).find('.layui-layer-btn0').hide();
|
||
}
|
||
},
|
||
btn: ['确定添加', '清空已选'],
|
||
btnAlign:'c',
|
||
btn1: function(idx,obj){
|
||
me.settings.callback(me.settings.ids,me.settings.names,me.settings.dids,me.settings.departments);
|
||
layer.close(idx);
|
||
},
|
||
btn2: function(idx,obj){
|
||
me.settings.callback([],[],[],[]);
|
||
layer.close(idx);
|
||
}
|
||
})
|
||
}
|
||
}
|
||
layui.link(rootPath+'module/dtree/dtree.css');
|
||
layui.link(rootPath+'module/dtree/font/dtreefont.css');
|
||
//选择员工单人弹窗
|
||
$('body').on('click','.picker-one',function () {
|
||
let that = $(this);
|
||
let ids=that.next().val()+'',names = that.val()+'';
|
||
obj.init({
|
||
ids:ids,
|
||
names:names,
|
||
type:0,
|
||
callback:function(ids,names,dids,departments){
|
||
that.val(names);
|
||
that.next().val(ids);
|
||
}
|
||
});
|
||
});
|
||
|
||
//选择员工多人人弹窗
|
||
$('body').on('click','.picker-more',function () {
|
||
let that = $(this);
|
||
let ids=that.next().val()+'',names = that.val()+'',ids_array=[],names_array=[];
|
||
if(ids.length>0){
|
||
ids_array=ids.split(',');
|
||
names_array=names.split(',');
|
||
}
|
||
obj.init({
|
||
ids:ids_array,
|
||
names:names_array,
|
||
type:1,
|
||
callback:function(ids,names,dids,departments){
|
||
that.val(names.join(','));
|
||
that.next().val(ids.join(','));
|
||
}
|
||
});
|
||
});
|
||
//输出接口
|
||
exports('employeepicker', obj);
|
||
});
|