wushaodong преди 4 години
родител
ревизия
66ea0468fe
променени са 6 файла, в които са добавени 34 реда и са изтрити 12 реда
  1. 7 1
      apps/customer/models.py
  2. 2 6
      apps/customer/serializers.py
  3. 21 2
      apps/customer/views.py
  4. BIN
      static/imgs/favicon.ico
  5. 3 3
      uis/views/customer/add_report.html
  6. 1 0
      uis/views/index.html

+ 7 - 1
apps/customer/models.py

@@ -56,8 +56,14 @@ class NewCustomer(models.Model):
         (NORMAL, u'正常'),
         (ABANDONED, u'放弃'),
     )
+    name = models.CharField(max_length=20, verbose_name=u"姓名")
+    tel = models.CharField(max_length=15, verbose_name=u'电话')
+    village = models.CharField(max_length=200, verbose_name=u'小区')
+    address = models.CharField(max_length=200, verbose_name=u'地址')
+    source = models.ForeignKey(Option, verbose_name=u'来源', related_name='customer_source', on_delete=models.PROTECT)
+    project = models.ManyToManyField(Option, verbose_name=u'项目', related_name='customer_category', editable=False,)
 
-    report_customer = models.ForeignKey(ReportCustomer, verbose_name=u'报备客户信息', related_name='customer_source',
+    report_customer = models.ForeignKey(ReportCustomer, verbose_name=u'报备客户信息', related_name='report_customer',
                                         on_delete=models.PROTECT)
     potential_level = models.ForeignKey(Option, verbose_name=u'潜客级别', related_name='potential_level', null=True,
                                         on_delete=models.PROTECT)

+ 2 - 6
apps/customer/serializers.py

@@ -66,11 +66,7 @@ class NewCustomerSerializer(serializers.ModelSerializer):
     end_time_f = TimeCharField(source='end_time', read_only=True)
     next_time_f = DateCharField(source='next_time', read_only=True)
 
-    name = serializers.CharField(source='report_customer.name', read_only=True)
-    tel = serializers.CharField(source='report_customer.tel', read_only=True)
-    village = serializers.CharField(source='report_customer.village', read_only=True)
-    address = serializers.CharField(source='report_customer.address', read_only=True)
-    source_text = serializers.CharField(source='report_customer.source.name', read_only=True)
+    source_text = serializers.CharField(source='source.name', read_only=True)
     gender_text = serializers.SerializerMethodField()
     project_text = serializers.SerializerMethodField()
     last_review = serializers.SerializerMethodField()
@@ -96,7 +92,7 @@ class NewCustomerSerializer(serializers.ModelSerializer):
             return ''
 
     def get_project_text(self, obj):
-        project = obj.report_customer.project.all()
+        project = obj.project.all()
         return ','.join(project.values_list('name', flat=True))
 
     def get_gender_text(self, obj):

+ 21 - 2
apps/customer/views.py

@@ -64,6 +64,7 @@ class ReportCustomerViewSet(CustomModelViewSet):
             if not instance:
                 raise CustomError('当前客户报备信息有误,请刷新重试!')
             instance.check_user = self.request.user
+
             instance.report_status = ReportCustomer.CHECKED
             instance.check_time = timezone.now()
             instance.save()
@@ -75,10 +76,16 @@ class ReportCustomerViewSet(CustomModelViewSet):
             if not potential_level.track_day:
                 raise CustomError('当前潜客级别,没有可用跟踪天数!')
             next_time = (timezone.now() + datetime.timedelta(days=potential_level.track_day)).strftime('%Y-%m-%d')
-            NewCustomer.objects.create(report_customer=instance, potential_level=potential_level,
+
+            customer = NewCustomer.objects.create(report_customer=instance, potential_level=potential_level,
                                        track_user_id=user_id, next_time=next_time, stage_progress=stage_progress,
                                        create_user=instance.create_user,
+                                       name=instance.name,tel=instance.tel,village=instance.village,
+                                       address=instance.address,source=instance.source,
                                        )
+            projects = instance.project.all()
+            for project in projects:
+                customer.project.add(project.id)
         except CustomError as e:
             return response_error(e.get_error_msg())
         except Exception as e:
@@ -132,6 +139,7 @@ class NewCustomerViewSet(CustomModelViewSet):
 
     @action(methods=['post'], detail=True)
     def add_review(self, request, pk):
+        # 添加跟踪报告
         check_permission(request, 'customer.add_review')
         description = request.POST.get('description')
         instruction = request.POST.get('instruction')
@@ -139,6 +147,7 @@ class NewCustomerViewSet(CustomModelViewSet):
         is_giveup = request.POST.get('is_giveup') == '1'
         potential_level = request.POST.get('potential_level')
         next_time = request.POST.get('next_time')
+
         try:
             instance =NewCustomer.objects.filter(id=pk).first()
             if not instance:
@@ -156,8 +165,18 @@ class NewCustomerViewSet(CustomModelViewSet):
             if serializer.is_valid(raise_exception=True):
                 serializer.save()
 
+            sort = 1
+            track_day = 1
+            try:
+                sort = int(instance.stage_progress.sort)
+                track_day = int(instance.stage_progress.track_day)
+            except:
+                pass
+            # 预定客户,提交跟踪报告此字段为空
+            if sort > 1 or not next_time:
+                next_time = (timezone.now() + datetime.timedelta(days=track_day)).strftime('%Y-%m-%d')
             data = {
-                'potential_level':potential_level,
+                'potential_level':potential_level or None, #预定客户,无客户等级
                 'next_time':next_time,
                 'end_time':timezone.now(),
                 'stage_progress':instance.stage_progress.id,

BIN
static/imgs/favicon.ico


+ 3 - 3
uis/views/customer/add_report.html

@@ -61,7 +61,7 @@
                         <div class="layui-hide" id="level_div">
                             <label class="layui-form-label"><font color='red' size="4">*</font>客户级别:</label>
                             <div class="layui-input-block">
-                                <select name="potential_level" id="id_potential_level">
+                                <select name="potential_level" id="id_potential_level" lay-verify="required">
                                     <option value="">请选择客户级别</option>
                                 </select>
                             </div>
@@ -69,7 +69,7 @@
                         <div class="layui-hide" id="next_time_div">
                             <label class="layui-form-label"><font color='red' size="4">*</font>下次回访:</label>
                             <div class="layui-input-block">
-                                <input type="text" name="next_time" class="layui-input" id="test1"
+                                <input type="text" name="next_time" class="layui-input" id="next_time" lay-verify="required"
                                        placeholder="修改下次回访日期">
                             </div>
                         </div>
@@ -95,7 +95,7 @@
             , laydate = layui.laydate
             , form = layui.form;
         laydate.render({
-            elem: '#test1'
+            elem: '#next_time'
         });
         var customer_id = layui.view.getParameterByName('customer_id');
         var stage_progress_sort = layui.view.getParameterByName('stage_progress_sort');

+ 1 - 0
uis/views/index.html

@@ -9,6 +9,7 @@
           content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=0">
     <link rel="stylesheet" href="../layuiadmin/layui/css/layui.css" media="all">
     <link rel="stylesheet" href="../layuiadmin/style/admin.css" media="all">
+    <link rel="shortcut icon" href="/static/imgs/favicon.ico" />
 </head>
 <body class="layui-layout-body">