factory/apps/vm/models.py

71 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_STATE_CHOICES = (
(10, '创建中'),
(20, '审批中'),
(30, '待入厂'),
(40, '进行中'),
(50, '已完成')
)
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)