修复问题,员工信息编辑modal,二级部门不显示

This commit is contained in:
王思川 2024-06-16 15:24:35 +08:00
parent 020c84483d
commit 71417b58e9
4 changed files with 14 additions and 5 deletions

View File

@ -1,4 +1,6 @@
from django import forms
from common.forms import DepartmentSelectionForm
from .models import *
@ -16,7 +18,7 @@ class EmployeeInformationForm(forms.ModelForm):
}
class EmployeeInformationAddForm(forms.ModelForm):
class EmployeeInformationAddForm(DepartmentSelectionForm, forms.ModelForm):
class Meta:
model = EmployeeInformation
fields = [field.name for field in EmployeeInformation._meta.fields if
@ -27,11 +29,12 @@ class EmployeeInformationAddForm(forms.ModelForm):
'regularization_date': forms.DateInput(attrs={'type': 'date'}),
'departure_date': forms.DateInput(attrs={'type': 'date'}),
'contract_end_date': forms.DateInput(attrs={'type': 'date'}),
'resignation_date': forms.DateInput(attrs={'type': 'date'}),
'base_salary': forms.NumberInput()
}
class EmployeeInformationEditForm(forms.ModelForm):
class EmployeeInformationEditForm(DepartmentSelectionForm, forms.ModelForm):
class Meta:
model = EmployeeInformation
fields = '__all__'

View File

@ -11,6 +11,7 @@ from django.views.decorators.csrf import csrf_protect
from application.hrm_mgnt.forms import *
from application.hrm_mgnt.models import *
from application.org_mgnt.models import SecondaryDepartment
from common.auth import custom_permission_required
from common.utils.page_helper import paginate_query_and_assign_numbers
@ -206,6 +207,7 @@ def emp_list_modify(request):
try:
instance = EmployeeInformation.objects.get(employee_id=request.GET['id'])
form = EmployeeInformationEditForm(instance=instance)
form.fields['secondary_department'].queryset = SecondaryDepartment.objects.filter(primary_department=instance.primary_department).order_by('secondary_department_name')
except EmployeeInformation.DoesNotExist:
raise Http404("对象不存在")
else:

View File

@ -27,7 +27,7 @@ class DepartmentSelectionForm(forms.Form):
pass
elif 'instance' in kwargs and kwargs['instance']:
instance = kwargs['instance']
if isinstance(instance.primary_department, PrimaryDepartment):
if hasattr(instance, 'primary_department') and isinstance(instance.primary_department, PrimaryDepartment):
self.fields['secondary_department'].queryset = instance.primary_department.secondarydepartment_set.order_by('secondary_department_name')
else:
try:

View File

@ -104,7 +104,7 @@
<script type="text/javascript">
$(document).ready(function () {
function updateSecondaryDepartments(primaryDepartmentId) {
function updateSecondaryDepartments(primaryDepartmentId, selectedSecondaryDepartmentId = null) {
var url = "{% url 'load_secondary_departments' %}";
$.ajax({
url: url,
@ -117,6 +117,9 @@
$.each(data, function (key, value) {
$('#id_secondary_department').append('<option value="' + value.secondary_department_id + '">' + value.secondary_department_name + '</option>');
});
if (selectedSecondaryDepartmentId) {
$('#id_secondary_department').val(selectedSecondaryDepartmentId);
}
}
});
}
@ -132,8 +135,9 @@
// 如果在页面加载时已选择一级部门,则加载相应的二级部门
var initialPrimaryDepartmentId = $('#id_primary_department').val();
var initialSecondaryDepartmentId = $('#id_secondary_department').val();
if (initialPrimaryDepartmentId) {
updateSecondaryDepartments(initialPrimaryDepartmentId);
updateSecondaryDepartments(initialPrimaryDepartmentId, initialSecondaryDepartmentId);
}
});
</script>