mbui.define(['layer'], function (exports) {
var layer = mbui.layer;
var userSelector = function () {
this.config = {
type:1,
url: "/api/index/get_employee",
where: {},
callback: function(){}
};
this.loaded = 0;
};
// 初始化
userSelector.prototype.init = function (options) {
var that = this;
$.extend(true, that.config, options);
that.select();
};
userSelector.prototype.select = function () {
var that = this;
var types = that.config.type == 2 ? 'checkbox' : 'radio';
var users = [];
var alphabet = [];
var userGroups = {};
var selector = $('.user-selector');
if (selector.length > 0) {
return false;
}
let loading;
$.ajax({
url: that.config.url,
type: 'get',
data: { did: 0 },
beforeSend:function(){
loading = layer.loading('加载中...');
},
success: function (e) {
if (e.code == 0) {
users = e.data;
bulidSelector();
}
},
complete:function(){
layer.close(loading);
}
})
function bulidSelector() {
// 将用户账号按照首字母分组
for (var i = 0; i < users.length; i++) {
var user = users[i]['username'];
var firstLetter = user.charAt(0).toUpperCase();
if (!userGroups[firstLetter]) {
userGroups[firstLetter] = [];
alphabet.push(firstLetter);
}
userGroups[firstLetter].push(users[i]);
}
alphabet.sort();
var $container = $('
');
var $letters = $('');
var $userList = $('');
var item = '';
for (var j = 0; j < alphabet.length; j++) {
var $letterLink = $('' + alphabet[j] + '');
$letters.append($letterLink);
item += '' + alphabet[j] + '
';
var userData = userGroups[alphabet[j]];
for (var k = 0; k < userData.length; k++) {
item += '';
}
}
$userList.append(item);
$container.append($letters).append($userList);
$('body').append($container);
// 点击字母滚动到对应的字母开头的用户位置
$letters.on('click', 'a', function (e) {
e.preventDefault();
var letter = $(this).attr('href').substring(1);
var $letterSection = $('#' + letter);
var scrollTop = $letterSection.offset().top - $userList.offset().top + $userList.scrollTop();
$userList.animate({ scrollTop: scrollTop }, 500);
});
$container.find('.left').click(function () {
$container.fadeOut(function () {
$container.remove();
});
});
$container.find('.right').click(function () {
let selected = $container.find('input:checked');
if (selected.length == 0) {
layer.msg('请选择员工');
return false;
}
let ids = [], names = [], dids = [],departments=[];
for (var m = 0; m < selected.length; m++) {
let selected_item = $(selected[m]).parent();
ids.push(selected_item.data('id'));
names.push(selected_item.data('name'));
dids.push(selected_item.data('dids'));
departments.push(selected_item.data('departments'));
}
that.config.callback(ids,names,dids,departments);
$container.fadeOut(function () {
$container.remove();
});
});
}
};
//选择员工弹窗
$('body').on('click','.picker-admin',function () {
let that = $(this);
let type = that.data('type');
if (typeof(type) == "undefined" || type == '') {
type = 1;
}
let ids=that.next().val()+'',names = that.val()+'';
let picker = new userSelector();
picker.init({
type:type,
callback:function(ids,names,dids,departments){
that.val(names.join(','));
that.next().val(ids.join(','));
}
});
});
// 导出userPicker模块
exports('userPicker', function (options) {
var userPicker = new userSelector();
userPicker.init(options);
});
});