$(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'); } }); } });