XH_Digital_Management/application/hrm_mgnt/forms.py

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__'