Browse Source

进度明细

hujingpei 4 years ago
parent
commit
b9c2394bfd

+ 2 - 13
apps/customer/serializers.py

@@ -166,17 +166,6 @@ class NewCustomerSerializer(serializers.ModelSerializer):
 
     def update(self, instance, validated_data):
         instance = super(NewCustomerSerializer, self).update(instance, validated_data)
-        order = Order.objects.filter(customer=instance).first()
-        if not order:
-            order = Order.objects.create(customer=instance, service_user_id=instance.track_user.id, status=Order.NORMAL,
-                                         stage_progress=instance.stage_progress)
-            projects = instance.project.all()
-            for project in projects:
-                order.project.add(project.id)
-            order.no = order.get_no()
-            order.save()
-        if order:
-            Order.objects.filter(no=order.no).update(stage_progress=instance.stage_progress)
         return instance
 
 
@@ -185,9 +174,9 @@ class ReviewSerializer(serializers.ModelSerializer):
     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_f = serializers.DateTimeField(source='create_time', format=settings.SHORT_DATETIME_FORMAT,
-                                           read_only=True)
+                                              read_only=True)
     check_time_f = serializers.DateTimeField(source='check_time', format=settings.SHORT_DATETIME_FORMAT,
-                                           read_only=True)
+                                             read_only=True)
 
     next_time_f = DateCharField(source='customer.next_time', read_only=True)
     is_giveup_text = BooleanCharField(source='is_giveup', read_only=True)

+ 2 - 1
apps/customer/views.py

@@ -86,7 +86,7 @@ class ReportCustomerViewSet(CustomModelViewSet):
                                        track_user_id=user_id, next_time=next_time, stage_progress=stage_progress,
                                        create_user=instance.create_user,store=instance.store,
                                        name=instance.name,tel=instance.tel,village=instance.village,
-                                       address=instance.address,source=instance.source,notes=instance.notes,
+                                       address=instance.address, source=instance.source, notes=instance.notes,
                                        )
             projects = instance.project.all()
             for project in projects:
@@ -255,6 +255,7 @@ class NewCustomerViewSet(CustomModelViewSet):
                         'service_user': instance.track_user,
                     }
                     ser = Order.objects.create(**data)
+                    ser.notes = instance.notes
                     ser.no = ser.get_no()
                     ser.save()
                     projects = instance.project.all()

+ 1 - 0
apps/order/__init__.py

@@ -0,0 +1 @@
+# coding=utf-8

+ 13 - 12
apps/order/models.py

@@ -5,6 +5,7 @@ from django.utils import timezone
 from apps.option.models import Option
 from apps.customer.models import NewCustomer
 from utils.format import strftime
+from utils.exceptions import CustomError
 
 class Order(models.Model):
     NORMAL = 1
@@ -43,6 +44,17 @@ class Order(models.Model):
         no = '%s%d-%s' % ('DD', self.service_user.id, now.strftime('%Y%m%d%H%M%S'))
         return no
 
+    @staticmethod
+    def get_instance_by_id(id):
+        try:
+            id = int(id)
+        except:
+            raise CustomError('无效的报修单ID')
+        instance = Order.objects.filter(pk=id, delete=False).first()
+        if not instance:
+            raise CustomError('未找到对应的报修工单')
+        return instance
+
 
 class ProgressDetails(models.Model):
 
@@ -57,15 +69,4 @@ class ProgressDetails(models.Model):
         db_table = 'progress_details'
         verbose_name = '进度明细'
         ordering = ('-id', )
-        default_permissions = ()
-
-    def get_details(self):
-        dict = {
-            'progress_details_id': self.id,
-            'operation': self.operation,
-            'user': self.user.name,
-            'notes': self.notes,
-            'operation_time': strftime(self.operation_time),
-        }
-
-        return dict
+        default_permissions = ()

+ 26 - 1
apps/order/serializers.py

@@ -1,5 +1,7 @@
 # coding=utf-8
 from rest_framework import serializers
+from django.conf import settings
+
 from .models import Order,ProgressDetails
 from utils.booleancharfield import TimeCharField
 
@@ -27,8 +29,31 @@ class OrderSerializer(serializers.ModelSerializer):
 
 class ProgressDetailsSerializer(serializers.ModelSerializer):
     user_text = serializers.CharField(source='user.name', read_only=True)
+    operation_time_f = serializers.DateTimeField(source='create_time', format=settings.SHORT_DATETIME_FORMAT,
+                                                 read_only=True)
 
 
     class Meta:
         model = ProgressDetails
-        fields = '__all__'
+        fields = (
+            'id', 'user_text', 'operation', 'notes', 'operation_time_f',
+        )
+
+
+# class OrderDertailSerializer(serializers.ModelSerializer):
+#     service_user_text = serializers.CharField(source='service_user.name', read_only=True)
+#     name = serializers.CharField(source='customer.name', read_only=True)
+#     tel = serializers.CharField(source='customer.tel', read_only=True)
+#     address = serializers.CharField(source='customer.address', read_only=True)
+#     stage_progress_text = serializers.CharField(source='stage_progress.name', read_only=True)
+#     project_text = serializers.SerializerMethodField()
+#
+#     def get_project_text(self, obj):
+#         project = obj.project.all()
+#         return ','.join(project.values_list('name', flat=True))
+#
+#     class Meta:
+#         model = Order
+#         fields = (
+#             'id', 'service_user_text', 'name', 'tel', 'address', 'stage_progress_text', 'project_text',
+#         )

+ 14 - 18
apps/order/views.py

@@ -1,9 +1,13 @@
 # coding=utf-8
 import traceback
-from utils.custom_modelviewset import CustomModelViewSet
 from rest_framework.views import APIView
+from rest_framework.decorators import action
+from django.db import transaction
+from django.conf import settings
+
+from utils.custom_modelviewset import CustomModelViewSet
 from utils.exceptions import CustomError
-from .serializers import OrderSerializer
+from .serializers import OrderSerializer,ProgressDetailsSerializer
 from .filters import OrderFilter
 from apps.log.models import BizLog
 from utils import response_ok, response_error
@@ -12,6 +16,7 @@ from apps.customer.models import NewCustomer
 from apps.order.models import Order,ProgressDetails
 from apps.option.models import Option
 from apps.upload.models import Upload
+from apps.upload.serializers import UploadSerializer
 
 class GetProcessView(APIView):
     permission_classes = [isLogin]
@@ -68,28 +73,19 @@ class GetDetailsView(APIView):
     permission_classes = [isLogin]
 
     def get(self, request):
+        # 进度明细
         order_id = request.GET.get('order_id')
         details = ProgressDetails.objects.filter(order_id=order_id).order_by('-operation_time')
-        data = []
-        for detail in details:
-            dict = detail.get_details()
-            data.append(dict)
+        data = ProgressDetailsSerializer(details, many=True).data
         return response_ok(data)
 
+
 class GetFilesView(APIView):
     permission_classes = [isLogin]
 
     def get(self, request):
-        progress_details_id = request.GET.get('progress_details_id')
-        images = Upload.objects.filter(progress_details_id=progress_details_id)
-        img_data = []
-        for img in images:
-            img_data.append(
-                {
-                    'url': img.picture,
-                    'create_time': img.create_time,
-                    'file_size': img.file_size,
-                    'user': img.user.name,
-                }
-            )
+        # 附件内容
+        id = request.GET.get('id')
+        images = Upload.objects.filter(progress_details_id=id)
+        img_data = UploadSerializer(images, many=True).data
         return response_ok(img_data)

+ 4 - 1
apps/upload/serializers.py

@@ -6,7 +6,10 @@ from .models import Upload
 
 
 class UploadSerializer(serializers.ModelSerializer):
+    user_text = serializers.CharField(source='user.name', read_only=True)
+    create_time_f = serializers.DateTimeField(source='create_time', format=settings.SHORT_DATETIME_FORMAT,
+                                              read_only=True)
 
     class Meta:
         model = Upload
-        fields = ('picture', 'width', 'height', 'type', 'voice_time')
+        fields = ('picture', 'create_time_f', 'file_size', 'user_text')

+ 2 - 2
uis/views/order/detail.html

@@ -104,9 +104,9 @@
             , url: '/order/get_details/?order_id=' + order_id
             , cols: [[
                 {field: 'operation', title: "操作", width: 200}
-                , {field: 'operation_time', title: '操作时间', width: 150}
+                , {field: 'operation_time_f', title: '操作时间', width: 150}
                 , {field: 'notes', title: '备注', width: 200}
-                , {field: 'user', title: '操作人', width: 120}
+                , {field: 'user_text', title: '操作人', width: 120}
                 , {width: 100, align: 'center', fixed: 'right', toolbar: '#customer-operate-bar'}
             ]]
             , page: true

+ 2 - 2
uis/views/order/imgsInfo.html

@@ -62,9 +62,9 @@
             elem: '#customer_datagrid_imgs'
             , url: '/order/get_files/?progress_details_id=' + progress_details_id
             , cols: [[
-                {field: 'create_time', title: "上传时间", width: 220}
+                {field: 'create_time_f', title: "上传时间", width: 220}
                 , {field: 'file_size', title: '文件大小', width: 120}
-                , {field: 'user', title: '上传人', width: 120}
+                , {field: 'user_text', title: '上传人', width: 120}
                 , {width: 80, align: 'center', fixed: 'right', toolbar: '#customer-imgs-operate-bar'}
             ]]
         });