zoukankan      html  css  js  c++  java
  • crm销售管理系统一

    一、环境配置

    1、首先配置pip,环境变量配置

    pip 9.0.1 from c:usersadministratorenvscrmlibsite-packages (python 3.6)

    2、安装虚拟环境

    C:UsersAdministrator>pip install virtualenvwrapper-win

    Collecting virtualenvwrapper-win

      Downloading virtualenvwrapper-win-1.2.4.tar.gz

    Collecting virtualenv (from virtualenvwrapper-win)

      Downloading virtualenv-15.1.0-py2.py3-none-any.whl (1.8MB)

        100% |████████████████████████████████| 1.8MB 393kB/s

    Installing collected packages: virtualenv, virtualenvwrapper-win

      Running setup.py install for virtualenvwrapper-win ... done

    Successfully installed virtualenv-15.1.0 virtualenvwrapper-win-1.2.4

    3、创建crm这个虚拟环境

    C:UsersAdministrator>mkvirtualenv crm

     C:UsersAdministratorEnvs is not a directory, creating

    Using base prefix 'c:\users\administrator\appdata\local\programs\python\python36'

    New python executable in C:UsersAdministratorEnvscrmScriptspython.exe

    Installing setuptools, pip, wheel...done.    

    环境

    (crm) C:UsersAdministrator>python --version

    Python 3.6.3

    (crm) C:UsersAdministrator>pip list

    Django (1.11)

    pip (9.0.1)

    pytz (2017.3)

    setuptools (38.2.3)

    wheel (0.30.0)

    二、创建项目

    项目创建:

    指定创建的环境

    env->scripts->python.exe

    组件:

    django

    boostrap

    jquery

    准备:

    1)创建project

    python manage.py startapp app01

    2)设计表结构

    目录结构:

    权限:

    1)每个人的信息别人不能看

    2)领导能看到的信息别人不能看

    表结构如下:

    from django.db import models
    from django.contrib.auth.models import User
    
    class Customer(models.Model):
        """客户信息表
            blank是用于限制admin null为了限制数据库,所以这两个成对出现
        """
        name = models.CharField(max_length=32,blank=True,null=True)
        qq = models.CharField(max_length=64,unique=True)
        phone = models.CharField(max_length=64,blank=True,null=True,help_text="电话")
        source_choices = ((0,"转介绍"),
                          (1,"qq群"),
                          (2,"官网"),
                          (3,"51cto"),
                          (4,"知乎"),
                          (5,"市场推广"))
    
        source = models.SmallIntegerField(choices=source_choices,help_text="来源")
        referral_from = models.CharField(verbose_name="转介绍人qq",max_length=64,blank=True,null=True)
        consult_course = models.ForeignKey("Course",verbose_name="咨询课程")
        content = models.TextField(verbose_name="咨询详情")
        consultant = models.ForeignKey("UserProfile",verbose_name="那个人的销售记录")
        date = models.DateTimeField(auto_now_add=True,verbose_name="时间,这里自增")
        memo=models.CharField(blank=True,null=True,verbose_name="备注")
        tags = models.ManyToManyField("Tag",blank=Tag,null=True,verbose_name="和标签多对多")
    
        def __str__(self):
            return self.qq
    
    class Tag(models.Model):
        name=models.CharField(unique=True,max_length=32,verbose_name="标签")
    
        def __str__(self):
            return self.name
    
    class CustomerFollowUp(models.Model):
        """客户跟进表"""
        customer = models.ForeignKey("Customer",verbose_name="和客户多对一")
        content = models.TextField(verbose_name="跟进内容")
        consultant = models.ForeignKey("UserProfile",verbose_name="跟进人")
        date = models.DateTimeField(auto_now=True)
        intention_choice = ((0,"2周内报名"),
                            (1,"1个月内报名"),
                            (2,"近期无报名计划"),
                            (3,"已在其他机构报名"),
                            (4,"已报名"),
                            (5,"已拉黑"))
        intention = models.SmallIntegerField(choices=intention_choice,verbose_name="报名计划")
        date = models.DateTimeField(auto_now_add=True,verbose_name="时间")
    
        def __str__(self):
            return "<%s:%s>"%(self.customer.qq,self.intention)
    
    
    class Course(models.Model):
        """课程表"""
        name = models.CharField(max_length=64,unique=True,verbose_name="课程名字")
        price = models.PositiveIntegerField(verbose_name="价格")
        period=models.PositiveIntegerField(verbose_name="课程周期")
        outline=models.TextField(verbose_name="课程大纲")
    
        def __str__(self):
            return self.name
    
    class branch(models.Model):
        """校区"""
        name=models.CharField(max_length=128,unique=True)
        addr = models.CharField(max_length=128)
    
        def __str__(self):
            return self.name
    
    class ClassList(models.Model):
        """班级表"""
        branch=models.ForeignKey("branch",verbose_name="和校区关联")
        course=models.ForeignKey("Course",verbose_name="和课程关联")
        class_type_choice=((0,"面授"),
                           (1,"周末"),
                           (2,"网络"),)
        class_type=models.SmallIntegerField(choices=class_type_choice,verbose_name="开班类型")
        semester = models.PositiveIntegerField(verbose_name="学期")
        teachers = models.ManyToManyField("UserProfile",verbose_name="老师和账号关联")
        start_date = models.DateTimeField(verbose_name="开班日期")
        end_date = models.DateTimeField(verbose_name="毕业日期",blank=True,null=True)
    
        def __str__(self):
            return "%s %s %s"%(self.branch,self.course,self.semester)
    
        class Meta:
            unique_together=("branch","course","semester")
    
    class CourseRecord(models.Model):
        """上课记录表"""
        from_class = models.ForeignKey("ClassList", verbose_name="关联班级")
        day_num = models.PositiveIntegerField(verbose_name="第几节(天)")
        teacher = models.ForeignKey("UserProfile",verbose_name="老师")
        has_homework = models.BooleanField(default=True,verbose_name="是否有作业")
        homework_title= models.CharField(max_length=128,blank=True,null=True,verbose_name="作业头部信息")
        homework_content = models.TextField(blank=True,null=True,verbose_name="作业内容")
        online = models.TextField(verbose_name="本节课程大纲")
        date = models.DateTimeField(auto_now_add=True)
    
        def __str__(self):
            return "%s %s"%(self.from_class,self.day_num)
    
        class Meta:
            unique_together=("from_class","day_num")
            verbose_name_plural="上课记录表"
    
    class StudyRecord(models.Model):
        """学习记录表"""
        student = models.ForeignKey("Enrollment",verbose_name="关联报名表")
        course_record = models.ForeignKey("CourseRecord",verbose_name="和上课记录关联")
        attendance_choices = ((0,"已签到"),
                              (1,"迟到"),
                              (2,"缺勤"),
                              (3,"早退"))
        attendanc = models.SmallIntegerField(choices=attendance_choices,default=0,verbose_name="上课状态")
        score_choices=((100,"A+"),
                       (90,"A"),
                       (85,"B+"),
                       (80,"B"),
                       (75,"B-"),
                       (70,"C+"),
                       (60,"C"),
                       (40,"C-"),
                       (-50,"D"),
                       (-100,"COPY"),
                       (0,"N/A"))
        score = models.SmallIntegerField(choices=score_choices,default=0,verbose_name="分数")
        memo = models.TextField(blank=True,null=True,verbose_name="备注")
        date = models.DateTimeField(auto_now_add=True)
    
        def __str__(self):
            return "%s %s %s"%(self.student,self.course_record,self.score)
    
    
    class Enrollment(models.Model):
        """报名表"""
        customer = models.ForeignKey("Customer",verbose_name="那个人报名")
        enrolled_class = models.ForeignKey("ClassList",verbose_name="所报班级")
        consultant = models.ForeignKey("UserProfile",verbose_name="课程顾问")
        contract_agreed = models.BooleanField(default=False,verbose_name="学员已经同意合同条款")
        contract_approved = models.BooleanField(default=False,verbose_name="合同已经审核")
        date = models.DateTimeField(auto_now_add=True)
    
        def __str__(self):
            return "%s %s"%(self.customer,self.enrolled_class)
    
        class Meta:
            unique_together=("customer","enrolled_class")
    
    class Payment(models.Model):
        """缴费记录"""
        customer=models.ForeignKey("Customer")
        course = models.ForeignKey("Course",verbose_name="所报课程")
        amount = models.PositiveIntegerField(verbose_name="数额",default=500)
        consultant = models.ForeignKey("UserProfile",verbose_name="用户")
        date = models.DateTimeField(auto_now_add=True)
    
        def __str__(self):
            return "%s %s"%(self.customer,self.amount)
    
    
    class UserProfile(models.Model):
        """账号表"""
        user=models.OneToOneField(User)
        name = models.CharField(max_length=32)
        roles = models.ManyToManyField("Role",blank=True,null=True)
    
        def __str__(self):
            return self.name
    
    class Role(models.Model):
        """角色表"""
        name = models.CharField(max_length=32,unique=True)
    
        def __str__(self):
            return self.name
    View Code

    注意这里的账号表中的user和django.contrib.auth.models中的User是一对一的关系

    三、配置数据库

    1、首先下载数据库 具体

    2、下载navicat  

  • 相关阅读:
    Discuz的sc 和tc版本有什么区别
    使用Word2010发布博客到博客园
    如何快速产生流量,流量精灵使用方法
    XP系统如何把桌面图标变大
    打印机后台程序没有运行怎么办
    CF无法全屏怎么办
    XP如何找到网上邻居
    P2P终结者和反P2P终结者如何使用
    PortableApps的使用方法
    JavaScript,JS如何控制input输入字符限制
  • 原文地址:https://www.cnblogs.com/pyrene/p/8053166.html
Copyright © 2011-2022 走看看