$(document).on('turbolinks:load', function() { var $modal = $('.modal.admin-merge-department-modal'); if ($modal.length > 0) { var $form = $modal.find('form.admin-merge-department-form'); var $schoolIdInput = $form.find('input[name="school_id"]'); var $originDepartmentIdInput = $form.find('input[name="origin_department_id"]'); var $departmentSelect = $modal.find('.department-select'); $form.validate({ errorElement: 'span', errorClass: 'danger text-danger', rules: { department_id: { required: true } }, messages: { department_id: { required: '请选择部门' } } }); // ************** 学校选择 ************* 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 defineDepartmentSelect = function(departments) { $departmentSelect.empty(); $departmentSelect.select2({ theme: 'bootstrap4', placeholder: '请选择所属部门', data: departments, templateResult: function (item) { if(!item.id || item.id === '') return item.text; return item.name; }, templateSelection: function(item){ if (item.id) { $form.find('#department_id').val(item.id); } return item.name || item.text; }, matcher: matcherFunc }); $departmentSelect.select2('val', ' '); }; // modal ready fire $modal.on('show.bs.modal', function (event) { var $link = $(event.relatedTarget); var schoolId = $link.data('schoolId'); var url = $link.data('url'); $schoolIdInput.val(schoolId); $originDepartmentIdInput.val($link.data('departmentId')); $form.data('url', url); $.ajax({ url: '/api/schools/' + schoolId + '/departments/for_option.json', dataType: 'json', type: 'GET', success: function(data) { defineDepartmentSelect(data.departments); } }); }); $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); } }); } }); } });