171 lines
7.5 KiB
Python
171 lines
7.5 KiB
Python
from django import forms
|
|
|
|
from .models import *
|
|
|
|
|
|
class EmployeeInformationForm(forms.ModelForm):
|
|
"""
|
|
人力资源管理-人员基本信息表单
|
|
"""
|
|
primary_department = forms.ChoiceField(
|
|
choices=[('', '---------')] + [(dept.department_name, dept.department_name) for dept in PrimaryDepartment.objects.all()],
|
|
widget=forms.Select(attrs={'class': 'form-control'}),
|
|
label="一级部门"
|
|
)
|
|
|
|
position = forms.ChoiceField(
|
|
choices=[('', '---------')] + [(p.position_name, p.position_name) for p in Position.objects.all()],
|
|
widget=forms.Select(attrs={'class': 'form-control'}),
|
|
label="岗位"
|
|
)
|
|
|
|
rank = forms.ChoiceField(
|
|
choices=[('', '---------')] + [(r.rank_name, r.rank_name) for r in Rank.objects.all()],
|
|
widget=forms.Select(attrs={'class': 'form-control'}),
|
|
label="职级"
|
|
)
|
|
|
|
class Meta:
|
|
model = EmployeeInformation
|
|
exclude = ['resignation_type', 'resignation_reason', 'resignation_date']
|
|
widgets = {
|
|
'name': forms.TextInput(attrs={'class': 'form-control'}),
|
|
'id_number': forms.TextInput(attrs={'class': 'form-control'}),
|
|
'gender': forms.Select(choices=EmployeeInformation.GENDER_CHOICES, attrs={'class': 'form-control'}),
|
|
'birthday': forms.DateInput(attrs={'type': 'date', 'class': 'form-control'}),
|
|
'age': forms.NumberInput(attrs={'class': 'form-control'}),
|
|
'height': forms.NumberInput(attrs={'class': 'form-control'}),
|
|
'weight': forms.NumberInput(attrs={'class': 'form-control'}),
|
|
'blood_type': forms.Select(choices=EmployeeInformation.BLOOD_TYPE_CHOICES, attrs={'class': 'form-control'}),
|
|
'ethnicity': forms.TextInput(attrs={'class': 'form-control'}),
|
|
'domicile': forms.TextInput(attrs={'class': 'form-control'}),
|
|
'marital_status': forms.Select(choices=EmployeeInformation.MARITAL_STATUS_CHOICES, attrs={'class': 'form-control'}),
|
|
'political_affiliation': forms.Select(choices=EmployeeInformation.POLITICAL_AFFILIATION_CHOICES, attrs={'class': 'form-control'}),
|
|
'entry_date': forms.DateInput(attrs={'type': 'date', 'class': 'form-control'}),
|
|
'regularization_date': forms.DateInput(attrs={'type': 'date', 'class': 'form-control'}),
|
|
'employment_type': forms.Select(choices=EmployeeInformation.EMPLOYMENT_TYPE_CHOICES, attrs={'class': 'form-control'}),
|
|
'status': forms.Select(choices=EmployeeInformation.STATUS_CHOICES, attrs={'class': 'form-control'}),
|
|
'secondary_department': forms.Select(attrs={'class': 'form-control'}),
|
|
'contract_end_date': forms.DateInput(attrs={'type': 'date', 'class': 'form-control'}),
|
|
'mobile_number': forms.TextInput(attrs={'class': 'form-control'}),
|
|
'email': forms.EmailInput(attrs={'class': 'form-control'}),
|
|
'mailing_address': forms.TextInput(attrs={'class': 'form-control'}),
|
|
'emergency_contact': forms.TextInput(attrs={'class': 'form-control'}),
|
|
'relation_with_contact': forms.TextInput(attrs={'class': 'form-control'}),
|
|
'emergency_contact_phone': forms.TextInput(attrs={'class': 'form-control'}),
|
|
'education': forms.Select(choices=EmployeeInformation.EDUCATION_CHOICES, attrs={'class': 'form-control'}),
|
|
'undergraduate_school': forms.TextInput(attrs={'class': 'form-control'}),
|
|
'graduate_school': forms.TextInput(attrs={'class': 'form-control'}),
|
|
'major': forms.TextInput(attrs={'class': 'form-control'}),
|
|
'technical_title': forms.TextInput(attrs={'class': 'form-control'}),
|
|
'base_salary': forms.NumberInput(attrs={'class': 'form-control'}),
|
|
'salary_account_number': forms.TextInput(attrs={'class': 'form-control'}),
|
|
'bank_of_salary_account': forms.TextInput(attrs={'class': 'form-control'})
|
|
}
|
|
|
|
def __init__(self, *args, **kwargs):
|
|
is_edit = kwargs.pop('is_edit', False)
|
|
super(EmployeeInformationForm, self).__init__(*args, **kwargs)
|
|
|
|
if is_edit:
|
|
self.fields['resignation_type'] = forms.ChoiceField(
|
|
choices=EmployeeInformation.RESIGNATION_TYPE_CHOICES,
|
|
widget=forms.Select(attrs={'class': 'form-control'}),
|
|
label="离职类型"
|
|
)
|
|
self.fields['resignation_reason'] = forms.CharField(
|
|
widget=forms.TextInput(attrs={'class': 'form-control'}),
|
|
label="离职原因"
|
|
)
|
|
self.fields['resignation_date'] = forms.DateField(
|
|
widget=forms.DateInput(attrs={'type': 'date', 'class': 'form-control'}),
|
|
label="离职日期"
|
|
)
|
|
if self.instance:
|
|
self.fields['resignation_type'].initial = self.instance.resignation_type
|
|
self.fields['resignation_reason'].initial = self.instance.resignation_reason
|
|
self.fields['resignation_date'].initial = self.instance.resignation_date
|
|
|
|
|
|
class EmployeeAttendanceRecordForm(forms.ModelForm):
|
|
"""
|
|
人力资源管理-员工考勤记录表单
|
|
"""
|
|
|
|
class Meta:
|
|
model = EmployeeAttendanceRecord
|
|
fields = '__all__'
|
|
widgets = {
|
|
'name': forms.TextInput(attrs={'class': 'form-control'}),
|
|
'late': forms.NumberInput(attrs={'class': 'form-control'}),
|
|
'early_leave': forms.NumberInput(attrs={'class': 'form-control'}),
|
|
'absenteeism': forms.NumberInput(attrs={'class': 'form-control'}),
|
|
'annual_leave': forms.NumberInput(attrs={'class': 'form-control'}),
|
|
'personal_leave': forms.NumberInput(attrs={'class': 'form-control'}),
|
|
'sick_leave': forms.NumberInput(attrs={'class': 'form-control'}),
|
|
'other_leave_details_id': forms.NumberInput(attrs={'class': 'form-control'}),
|
|
}
|
|
|
|
def __init__(self, *args, **kwargs):
|
|
super(EmployeeAttendanceRecordForm, self).__init__(*args, **kwargs)
|
|
self.fields['year_month'].widget = forms.DateInput(attrs={'type': 'month', 'class': 'form-control'})
|
|
|
|
|
|
class OtherLeaveDetailsForm(forms.ModelForm):
|
|
class Meta:
|
|
model = OtherLeaveDetails
|
|
fields = ['attendance_record', 'leave_type', 'days', 'description']
|
|
|
|
|
|
class AnnualLeaveRecordForm(forms.ModelForm):
|
|
"""
|
|
人力资源管理-年假使用记录表单
|
|
"""
|
|
class Meta:
|
|
model = AnnualLeaveRecord
|
|
fields = '__all__'
|
|
widgets = {
|
|
'year': forms.NumberInput(),
|
|
'total_annual_leave': forms.NumberInput(),
|
|
'used_annual_leave': forms.NumberInput(),
|
|
'remaining_annual_leave': forms.NumberInput(),
|
|
}
|
|
|
|
|
|
class RankForm(forms.ModelForm):
|
|
"""
|
|
人力资源管理-职级表单
|
|
"""
|
|
|
|
class Meta:
|
|
model = Rank
|
|
fields = '__all__'
|
|
widgets = {
|
|
'rank_name': forms.TextInput(attrs={'class': 'form-control'}),
|
|
'rank_description': forms.Textarea(attrs={'class': 'form-control', 'rows': 3}),
|
|
}
|
|
|
|
|
|
class PositionForm(forms.ModelForm):
|
|
"""
|
|
人力资源管理-岗位表单
|
|
"""
|
|
|
|
class Meta:
|
|
model = Position
|
|
fields = '__all__'
|
|
widgets = {
|
|
'position_name': forms.TextInput(attrs={'class': 'form-control'}),
|
|
'position_description': forms.Textarea(attrs={'class': 'form-control', 'rows': 3}),
|
|
}
|
|
|
|
|
|
class PerformanceEvaluationForm(forms.ModelForm):
|
|
"""
|
|
人力资源管理-员工绩效表单
|
|
"""
|
|
|
|
class Meta:
|
|
model = PerformanceEvaluation
|
|
fields = '__all__'
|