Browse Source

跟踪审核

hujingpei 4 years ago
parent
commit
c0f173fd22

+ 9 - 0
apps/customer/filters.py

@@ -19,3 +19,12 @@ class NewCustomerFilter(django_filters.FilterSet):
     class Meta:
         model = NewCustomer
         fields = '__all__'
+
+
+class ReviewFilter(django_filters.FilterSet):
+    name = django_filters.CharFilter(field_name='customer__name', lookup_expr='icontains')
+    tel = django_filters.CharFilter(field_name='customer__tel', lookup_expr='icontains')
+
+    class Meta:
+        model = NewCustomer
+        fields = '__all__'

+ 2 - 0
apps/customer/models.py

@@ -107,6 +107,8 @@ class Review(models.Model):
     check_user = models.ForeignKey(settings.AUTH_USER_MODEL, related_name='review_ref_checkuser', verbose_name=u"审核人",
                                    editable=False, blank=True, null=True, on_delete=models.PROTECT)
     check_time = models.DateTimeField(verbose_name=u"审核时间", editable=False, blank=True, null=True)
+    next_time = models.DateTimeField(verbose_name=u"下次回访时间", editable=False, blank=True, null=True)
+
 
     class Meta:
         db_table = "customer_review"

+ 14 - 3
apps/customer/serializers.py

@@ -119,14 +119,25 @@ class NewCustomerSerializer(serializers.ModelSerializer):
 
 
 class ReviewSerializer(serializers.ModelSerializer):
-
     create_user_text = serializers.CharField(source='create_user.name', read_only=True)
     check_user_text = serializers.CharField(source='check_user.name', read_only=True)
     check_status_text = serializers.CharField(source='get_check_status_display', read_only=True)
-    create_time = serializers.DateTimeField(format='%Y-%m-%d %H:%M', read_only=True)
-    check_time = serializers.DateTimeField(format='%Y-%m-%d %H:%M', read_only=True)
+    create_time_f = TimeCharField(source='create_time', read_only=True)
+    check_time_f = TimeCharField(source='check_time', read_only=True)
+    next_time_f = TimeCharField(source='next_time', read_only=True)
     is_giveup_text = BooleanCharField(source='is_giveup', read_only=True)
 
+    name = serializers.CharField(source='customer.name', read_only=True)
+    tel = serializers.CharField(source='customer.tel', read_only=True)
+    village = serializers.CharField(source='customer.village', read_only=True)
+    address = serializers.CharField(source='customer.address', read_only=True)
+    track_user_text = serializers.CharField(source='customer.track_user.name', read_only=True)
+    project_text = serializers.SerializerMethodField()
+
+    def get_project_text(self, obj):
+        project = obj.customer.report_customer.project.all()
+        return ','.join(project.values_list('name', flat=True))
+
     class Meta:
         model = Review
         fields = '__all__'

+ 1 - 0
apps/customer/urls.py

@@ -14,4 +14,5 @@ urlpatterns = [
 router = SimpleRouter()
 router.register(r'report_customer', ReportCustomerViewSet)
 router.register(r'new_customer', NewCustomerViewSet)
+router.register(r'review', ReviewViewSet)
 urlpatterns += router.urls

+ 41 - 3
apps/customer/views.py

@@ -13,9 +13,9 @@ from utils.exceptions import CustomError
 from apps.log.models import BizLog
 from apps.option.models import Option
 from apps.option.serializers import OptionComboboxSerializer
-from .models import ReportCustomer,NewCustomer
+from .models import ReportCustomer,NewCustomer,Review
 from .serializers import ReportCustomerSerializer,NewCustomerSerializer, ReviewSerializer
-from .filters import ReportCustomerFilter,NewCustomerFilter
+from .filters import ReportCustomerFilter,NewCustomerFilter,ReviewFilter
 from django.contrib.auth import get_user_model
 User = get_user_model()
 
@@ -140,7 +140,7 @@ class NewCustomerViewSet(CustomModelViewSet):
         potential_level = request.POST.get('potential_level')
         next_time = request.POST.get('next_time')
         try:
-            instance =NewCustomer.objects.filter(id=pk).first()
+            instance = NewCustomer.objects.filter(id=pk).first()
             if not instance:
                 raise CustomError('当前客户信息有误,请刷新重试!')
             data = {
@@ -196,3 +196,41 @@ class StageCountView(APIView):
             }
             data.append(stage_count)
         return response_ok(data)
+
+class ReviewViewSet(CustomModelViewSet):
+    permission_classes = []
+    queryset = Review.objects.filter()
+    serializer_class = ReviewSerializer
+
+    def filter_queryset(self, queryset):
+        queryset = queryset.filter()
+        f = ReviewFilter(self.request.GET, queryset=queryset)
+        return f.qs
+
+    @action(methods=['post'], detail=True)
+    def track_review(self, request, pk):
+        # 跟踪审核
+        check_status = request.POST.get('check_status')
+        check_comment = request.POST.get('check_comment')
+        next_time = request.POST.get('next_time')
+        try:
+            instance = Review.objects.filter(id=pk).first()
+            instance.check_user = request.user
+            instance.check_status = check_status
+            instance.check_comment = check_comment
+            instance.next_time = next_time
+            instance.check_time = timezone.now()
+            instance.save()
+        except CustomError as e:
+            return response_error(e.get_error_msg())
+        except Exception as e:
+            return response_error(str(e))
+        return response_ok()
+
+
+
+
+
+
+
+