You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
173 lines
4.9 KiB
173 lines
4.9 KiB
$(document).on('turbolinks:load', function() {
|
|
if ($('body.admins-departments-index-page').length > 0) {
|
|
var $searchContainer = $('.department-list-form');
|
|
var $searchForm = $searchContainer.find('form.search-form');
|
|
var $list = $('.department-list-container');
|
|
|
|
$searchContainer.on('change', '.form-check-input', function(){
|
|
$searchForm.find('input[type="submit"]').trigger('click');
|
|
});
|
|
|
|
// ============== 新建部门 ===============
|
|
var $modal = $('.modal.admin-create-department-modal');
|
|
var $form = $modal.find('form.admin-create-department-form');
|
|
var $departmentNameInput = $form.find('input[name="department_name"]');
|
|
var $schoolSelect = $modal.find('.school-select');
|
|
|
|
$form.validate({
|
|
errorElement: 'span',
|
|
errorClass: 'danger text-danger',
|
|
rules: {
|
|
school_id: {
|
|
required: true
|
|
},
|
|
department_name: {
|
|
required: true
|
|
}
|
|
},
|
|
messages: {
|
|
school_id: {
|
|
required: '请选择所属单位'
|
|
}
|
|
}
|
|
});
|
|
|
|
// modal ready fire
|
|
$modal.on('show.bs.modal', function () {
|
|
$departmentNameInput.val('');
|
|
$schoolSelect.select2('val', ' ');
|
|
});
|
|
|
|
// ************** 学校选择 *************
|
|
var matcherFunc = function(params, data){
|
|
if ($.trim(params.term) === '') {
|
|
return data;
|
|
}
|
|
if (typeof data.text === 'undefined') {
|
|
return null;
|
|
}
|
|
|
|
if (data.name && data.name.indexOf(params.term) > -1) {
|
|
var modifiedData = $.extend({}, data, true);
|
|
return modifiedData;
|
|
}
|
|
|
|
// Return `null` if the term should not be displayed
|
|
return null;
|
|
};
|
|
|
|
var defineSchoolSelect = function(schools) {
|
|
$schoolSelect.select2({
|
|
theme: 'bootstrap4',
|
|
placeholder: '请选择所属单位',
|
|
minimumInputLength: 1,
|
|
data: schools,
|
|
templateResult: function (item) {
|
|
if(!item.id || item.id === '') return item.text;
|
|
return item.name;
|
|
},
|
|
templateSelection: function(item){
|
|
if (item.id) {
|
|
$('#school_id').val(item.id);
|
|
}
|
|
return item.name || item.text;
|
|
},
|
|
matcher: matcherFunc
|
|
});
|
|
}
|
|
|
|
$.ajax({
|
|
url: '/api/schools/for_option.json',
|
|
dataType: 'json',
|
|
type: 'GET',
|
|
success: function(data) {
|
|
defineSchoolSelect(data.schools);
|
|
}
|
|
});
|
|
|
|
$modal.on('click', '.submit-btn', function(){
|
|
$form.find('.error').html('');
|
|
|
|
if ($form.valid()) {
|
|
var url = $form.data('url');
|
|
|
|
$.ajax({
|
|
method: 'POST',
|
|
dataType: 'json',
|
|
url: url,
|
|
data: $form.serialize(),
|
|
success: function(){
|
|
$.notify({ message: '创建成功' });
|
|
$modal.modal('hide');
|
|
|
|
setTimeout(function(){
|
|
window.location.reload();
|
|
}, 500);
|
|
},
|
|
error: function(res){
|
|
var data = res.responseJSON;
|
|
$form.find('.error').html(data.message);
|
|
}
|
|
});
|
|
}
|
|
});
|
|
|
|
// ============= 添加部门管理员 ==============
|
|
var $addMemberModal = $('.admin-add-department-member-modal');
|
|
var $addMemberForm = $addMemberModal.find('.admin-add-department-member-form');
|
|
var $memberSelect = $addMemberModal.find('.department-member-select');
|
|
var $departmentIdInput = $addMemberForm.find('input[name="department_id"]')
|
|
|
|
$addMemberModal.on('show.bs.modal', function(event){
|
|
var $link = $(event.relatedTarget);
|
|
var departmentId = $link.data('department-id');
|
|
$departmentIdInput.val(departmentId);
|
|
|
|
$memberSelect.select2('val', ' ');
|
|
});
|
|
|
|
$memberSelect.select2({
|
|
theme: 'bootstrap4',
|
|
placeholder: '请输入要添加的管理员姓名',
|
|
multiple: true,
|
|
minimumInputLength: 1,
|
|
ajax: {
|
|
delay: 500,
|
|
url: '/admins/users',
|
|
dataType: 'json',
|
|
data: function(params){
|
|
return { name: params.term };
|
|
},
|
|
processResults: function(data){
|
|
return { results: data.users }
|
|
}
|
|
},
|
|
templateResult: function (item) {
|
|
if(!item.id || item.id === '') return item.text;
|
|
return item.real_name;
|
|
},
|
|
templateSelection: function(item){
|
|
if (item.id) {
|
|
}
|
|
return item.real_name || item.text;
|
|
}
|
|
});
|
|
|
|
$addMemberModal.on('click', '.submit-btn', function(){
|
|
$addMemberForm.find('.error').html('');
|
|
|
|
var departmentId = $departmentIdInput.val();
|
|
var memberIds = $memberSelect.val();
|
|
if (departmentId && memberIds && memberIds.length > 0) {
|
|
$.ajax({
|
|
method: 'POST',
|
|
dataType: 'script',
|
|
url: '/admins/departments/' + departmentId + '/department_member',
|
|
data: { user_ids: memberIds }
|
|
});
|
|
} else {
|
|
$addMemberModal.modal('hide');
|
|
}
|
|
});
|
|
}
|
|
}); |