From 3b7b558f158653e5775424d5d262f15d6bd8dc64 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BD=AD=E6=A3=AE?= Date: Tue, 18 Jun 2024 21:54:54 +0800 Subject: [PATCH] =?UTF-8?q?commit=201.=20=E4=BF=AE=E6=94=B9=E7=89=B9?= =?UTF-8?q?=E5=AE=9A=E9=A1=B5=E9=9D=A2=E7=9A=84=E6=A0=BC=E5=BC=8F=E4=B8=BA?= =?UTF-8?q?=E6=96=B0=E7=89=88=EF=BC=8C=E5=B9=B6=E4=BF=AE=E6=94=B9=E7=9B=B8?= =?UTF-8?q?=E5=85=B3=E6=A8=A1=E5=9E=8B=E5=8F=96=E6=B6=88=E5=A4=96=E9=94=AE?= =?UTF-8?q?=202.=20=E4=BF=AE=E5=A4=8Ditems=5Flist=20=E4=B8=AD=E4=BD=BF?= =?UTF-8?q?=E7=94=A8id=E6=8E=A7=E5=88=B6=E7=BC=96=E8=BE=91=E5=88=A0?= =?UTF-8?q?=E9=99=A4=E7=9A=84bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- application/hrm_mgnt/models.py | 39 +- application/hrm_mgnt/templates/emp_list.html | 206 +++++++- application/org_mgnt/templates/ce_list.html | 485 +++++++----------- ...织管理-公司主体信息登记-Excel上传模板.xlsx | Bin 9717 -> 9736 bytes templates/items_list.html | 8 +- 5 files changed, 415 insertions(+), 323 deletions(-) diff --git a/application/hrm_mgnt/models.py b/application/hrm_mgnt/models.py index 219b049..429afb1 100644 --- a/application/hrm_mgnt/models.py +++ b/application/hrm_mgnt/models.py @@ -2,6 +2,8 @@ import datetime from django.db import models +from application.org_mgnt.models import PrimaryDepartment, SecondaryDepartment + # 岗位表 class Position(models.Model): @@ -104,15 +106,16 @@ class EmployeeInformation(models.Model): ethnicity = models.CharField(max_length=255, verbose_name='民族', blank=True) domicile = models.CharField(max_length=255, verbose_name='户籍地', blank=True) marital_status = models.CharField(max_length=50, choices=MARITAL_STATUS_CHOICES, verbose_name='婚姻状态') - political_affiliation = models.CharField(max_length=50, choices=POLITICAL_AFFILIATION_CHOICES, verbose_name='政治面貌') + political_affiliation = models.CharField(max_length=50, choices=POLITICAL_AFFILIATION_CHOICES, + verbose_name='政治面貌') entry_date = models.DateField(verbose_name='入职日期') regularization_date = models.DateField(null=True, blank=True, verbose_name='转正日期') employment_type = models.CharField(max_length=50, choices=EMPLOYMENT_TYPE_CHOICES, verbose_name='用工性质') status = models.CharField(max_length=50, choices=STATUS_CHOICES, verbose_name='状态') - primary_department = models.ForeignKey('org_mgnt.PrimaryDepartment', on_delete=models.SET_NULL, null=True, verbose_name='一级部门') - secondary_department = models.ForeignKey('org_mgnt.SecondaryDepartment', on_delete=models.SET_NULL, null=True, verbose_name='二级部门', blank=True) - position = models.ForeignKey('Position', on_delete=models.SET_NULL, null=True, verbose_name='岗位') - rank = models.ForeignKey('Rank', on_delete=models.SET_NULL, null=True, verbose_name='职级', blank=True) + primary_department = models.CharField(max_length=255, verbose_name='一级部门', default='星河') + secondary_department = models.CharField(max_length=255, verbose_name='二级部门', default='数资团队') + position = models.CharField(max_length=255, verbose_name='岗位', default='数据分析师') + rank = models.CharField(max_length=255, verbose_name='职级', default='P1') contract_end_date = models.DateField(null=True, blank=True, verbose_name='当前合同到期日期') mobile_number = models.CharField(max_length=255, verbose_name='手机号') email = models.EmailField(verbose_name='邮箱') @@ -128,11 +131,30 @@ class EmployeeInformation(models.Model): base_salary = models.TextField(verbose_name='基础工资(元)', blank=True) salary_account_number = models.CharField(max_length=255, verbose_name='工资卡号', blank=True) bank_of_salary_account = models.CharField(max_length=255, verbose_name='工资卡开户行', blank=True) - resignation_type = models.CharField(max_length=50, choices=RESIGNATION_TYPE_CHOICES, verbose_name='离职类型', blank=True) + resignation_type = models.CharField(max_length=50, choices=RESIGNATION_TYPE_CHOICES, verbose_name='离职类型', + blank=True) resignation_reason = models.TextField(verbose_name='离职原因', blank=True) resignation_date = models.DateField(null=True, blank=True, verbose_name='离职日期') - excluded_fields = ['resignation_type', 'resignation_reason', 'resignation_date'] + def save(self, *args, **kwargs): + primary_department_name = PrimaryDepartment.objects.filter(department_name=self.primary_department).first() + secondary_department = SecondaryDepartment.objects.filter(secondary_department_name=self.secondary_department).first() + position = Position.objects.filter(position_name=self.position).first() + rank = Rank.objects.filter(rank_name=self.rank).first() + + if not primary_department_name: + raise ValueError("一级部门不存在") + + if not secondary_department: + raise ValueError("二级部门不存在") + + if not position: + raise ValueError("岗位不存在") + + if not rank: + raise ValueError("职位不存在") + + super(EmployeeInformation, self).save(*args, **kwargs) class Meta: verbose_name = '人员基本信息表' @@ -189,7 +211,8 @@ class OtherLeaveDetails(models.Model): ] record_id = models.AutoField(primary_key=True) - attendance_record = models.ForeignKey(EmployeeAttendanceRecord, on_delete=models.CASCADE, related_name='other_leaves', verbose_name='考勤记录') + attendance_record = models.ForeignKey(EmployeeAttendanceRecord, on_delete=models.CASCADE, + related_name='other_leaves', verbose_name='考勤记录') leave_type = models.CharField(max_length=255, choices=LEAVE_TYPE_CHOICES, verbose_name='假期类型') days = models.IntegerField(verbose_name='天数') description = models.TextField(verbose_name='说明') diff --git a/application/hrm_mgnt/templates/emp_list.html b/application/hrm_mgnt/templates/emp_list.html index b6251ff..59a7a19 100644 --- a/application/hrm_mgnt/templates/emp_list.html +++ b/application/hrm_mgnt/templates/emp_list.html @@ -16,7 +16,7 @@
-
+ {% csrf_token %}
{% for filter in filters %} @@ -74,11 +74,13 @@
- -
@@ -171,20 +173,6 @@ - - + + + + +
+ {% include 'modify_record_modal.html' with modify_records_url=modify_records_url %} - {% include 'delete_modal.html' with delete_url=delete_url %} - {% include 'upload_excel_modal.html' with excel_upload_config=excel_upload_config %} + + {% block item_list_custom_content %} + {% endblock %} - {% endblock %} diff --git a/static/excels/组织管理-公司主体信息登记-Excel上传模板.xlsx b/static/excels/组织管理-公司主体信息登记-Excel上传模板.xlsx index 2ce231d686d6c0c1060af41bd1c2732215326274..456a9bc544b68d8fa628d885bd517b96584db3c2 100644 GIT binary patch delta 4633 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 diff --git a/templates/items_list.html b/templates/items_list.html index a1e4b9b..5012248 100644 --- a/templates/items_list.html +++ b/templates/items_list.html @@ -117,7 +117,7 @@ data-bs-target="#addEditModal">编辑