from django.db import models from django.contrib.auth.models import User # 使用Django内置的用户模型 # 集团经营目标表 class GroupTargets(models.Model): PROJECT_NATURE_CHOICES = [ ('新增', '新增'), ('存续', '存续'), ('新增及存续', '新增及存续'), ('老客户新业务', '老客户新业务') ] primary_department = models.CharField(max_length=255, blank=False, verbose_name='一级部门') year = models.IntegerField(blank=False, verbose_name='年份') project_nature = models.CharField(max_length=50, choices=PROJECT_NATURE_CHOICES, blank=False, verbose_name='项目性质') sales = models.DecimalField(max_digits=17, decimal_places=2, blank=False, verbose_name='销售额') total_revenue_target = models.DecimalField(max_digits=17, decimal_places=2, blank=False, verbose_name='收入总目标') new_revenue_target = models.DecimalField(max_digits=17, decimal_places=2, blank=False, verbose_name='新增收入目标') existing_revenue_target = models.DecimalField(max_digits=17, decimal_places=2, blank=False, verbose_name='存量收入目标') cost_limit = models.DecimalField(max_digits=17, decimal_places=2, blank=False, verbose_name='成本限额') gross_profit = models.DecimalField(max_digits=17, decimal_places=2, blank=False, verbose_name='毛利润') expense_limit = models.DecimalField(max_digits=17, decimal_places=2, blank=False, verbose_name='费用限额') operating_profit = models.DecimalField(max_digits=17, decimal_places=2, blank=False, verbose_name='营业利润') class Meta: verbose_name = '集团经营目标表' verbose_name_plural = '集团经营目标表' # 经营目标修改记录表 class GroupTargetsAudit(models.Model): id = models.AutoField(primary_key=True, verbose_name='记录ID') # 显式定义主键字段 target = models.ForeignKey('GroupTargets', on_delete=models.CASCADE, verbose_name='目标ID') modified_field = models.CharField(max_length=255, verbose_name='修改字段') old_value = models.CharField(max_length=255, verbose_name='旧值') new_value = models.CharField(max_length=255, verbose_name='新值') modification_date = models.DateTimeField(auto_now_add=True, verbose_name='修改日期') modified_by = models.ForeignKey(User, on_delete=models.SET_NULL, null=True, verbose_name='修改人') class Meta: verbose_name = '经营目标修改记录表' verbose_name_plural = '经营目标修改记录表' def __str__(self): return f"{self.target} - {self.modified_field}" class EmployeePerformanceTarget(models.Model): PROJECT_NATURE_CHOICES = [ ('新增', '新增'), ('存续', '存续'), ('新增及存续', '新增及存续'), ('老客户新业务', '老客户新业务') ] target_id = models.AutoField(primary_key=True) name = models.CharField(max_length=255, verbose_name='姓名') department = models.CharField(max_length=255, verbose_name='一级部门') year = models.IntegerField(verbose_name='年份') project_nature = models.CharField(max_length=50, choices=PROJECT_NATURE_CHOICES, verbose_name='项目性质') sales_target = models.DecimalField(max_digits=15, decimal_places=2, verbose_name='销售额目标(元)') total_revenue_target = models.DecimalField(max_digits=15, decimal_places=2, verbose_name='收入总目标(元)') new_revenue_target = models.DecimalField(max_digits=15, decimal_places=2, verbose_name='新增收入目标(元)') existing_revenue_target = models.DecimalField(max_digits=15, decimal_places=2, verbose_name='存量收入目标(元)') class Meta: verbose_name = '员工业绩目标表' verbose_name_plural = '员工业绩目标表' def __str__(self): return self.name