74 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Python
		
	
	
	
			
		
		
	
	
			74 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Python
		
	
	
	
| 
 | |
| from django.db import models
 | |
| from apps.hrm.models import Employee
 | |
| from apps.utils.models import CommonAModel, CommonBModel, BaseModel
 | |
| from apps.system.models import User
 | |
| from apps.wf.models import Ticket
 | |
| 
 | |
| 
 | |
| # Create your models here.
 | |
| class Visit(CommonBModel):
 | |
|     """
 | |
|     访问项目
 | |
|     """
 | |
|     V_PURPOSE_CHOICES = (
 | |
|         (10, '参观'),
 | |
|         (20, '拜访'),
 | |
|         (30, '面试'),
 | |
|         (40, '开会')
 | |
|     )
 | |
|     V_CREATE = 10
 | |
|     V_AUDIT = 20
 | |
|     V_ENTER = 30
 | |
|     V_WORKING = 40
 | |
|     V_DONE = 50
 | |
|     V_CLOSE = 60
 | |
|     V_STATE_CHOICES = (
 | |
|         (10, '创建中'),
 | |
|         (20, '审批中'),
 | |
|         (30, '待入厂'),
 | |
|         (40, '进行中'),
 | |
|         (50, '已完成'),
 | |
|         (60, '已关闭')
 | |
|     )
 | |
|     V_LEVEL_CHOICES = (
 | |
|         (10, '一般'),
 | |
|         (20, '重要')
 | |
|     )
 | |
|     purpose = models.PositiveSmallIntegerField('来访事由', choices=V_PURPOSE_CHOICES)
 | |
|     level = models.PositiveSmallIntegerField('访问级别', choices=V_LEVEL_CHOICES)
 | |
|     company = models.CharField('来访单位', max_length=100, null=True, blank=True)
 | |
|     state = models.PositiveSmallIntegerField(choices=V_STATE_CHOICES, default=10)
 | |
|     name = models.CharField('来访概述', max_length=50)
 | |
|     description = models.TextField('来访详述', null=True, blank=True)
 | |
|     visit_time = models.DateTimeField('来访时间')
 | |
|     leave_time = models.DateTimeField('离开时间')
 | |
|     count_people = models.PositiveSmallIntegerField('来访人数', null=True, blank=True)
 | |
|     receptionist = models.ForeignKey(User, verbose_name='接待人', on_delete=models.CASCADE)
 | |
|     visitors = models.ManyToManyField('vm.visitor', through='vm.vpeople', related_name='v_visitors')
 | |
|     ticket = models.ForeignKey(Ticket, verbose_name='关联工单',
 | |
|                                on_delete=models.SET_NULL, null=True, blank=True)
 | |
|     # create_by 创建人
 | |
| 
 | |
| 
 | |
| class Visitor(CommonAModel):
 | |
|     """
 | |
|     访客信息
 | |
|     """
 | |
|     employee = models.ForeignKey(Employee, verbose_name='成员信息', on_delete=models.SET_NULL, null=True, blank=True)
 | |
|     name = models.CharField('姓名', max_length=20)
 | |
|     phone = models.CharField('手机号', max_length=11, null=True, blank=True)
 | |
|     photo = models.CharField('证件照', max_length=1000, null=True, blank=True)
 | |
|     id_number = models.CharField('身份证号', max_length=100, null=True, blank=True)
 | |
|     visit = models.ForeignKey(Visit, verbose_name='最近所属访问项目', on_delete=models.SET_NULL,
 | |
|                               null=True, blank=True)
 | |
| 
 | |
| 
 | |
| class Vpeople(BaseModel):
 | |
|     """
 | |
|     访客项目人员
 | |
|     """
 | |
|     visit = models.ForeignKey(Visit, verbose_name='关联访问项目', on_delete=models.CASCADE)
 | |
|     visitor = models.ForeignKey(Visitor, verbose_name='访客', on_delete=models.CASCADE)
 | |
|     is_main = models.BooleanField('是否主访人', default=False)
 |