lihai-oa/public/static/assets/gougu/module/employeepicker.js

267 lines
9.2 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.

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);
});