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