Bladeren bron

数量信息显示

wushaodong 4 jaren geleden
bovenliggende
commit
ce916073d3

+ 5 - 1
apps/tenant/repair_order/models.py

@@ -57,10 +57,13 @@ class RepairOrder(models.Model):
                                               default=settings.NOT_CHECKED)
     order_type = models.PositiveSmallIntegerField(choices=ORDER_TYPE, verbose_name=u'工单类型',
                                                   default=REPAIR_ORDER)
-    images = models.ManyToManyField(Upload, verbose_name='图片', blank=True)
+
     create_time = models.DateTimeField(verbose_name='创建时间', auto_now_add=True)
     delete = models.BooleanField(verbose_name='删除', default=False)
 
+    images = models.ManyToManyField(Upload, verbose_name='图片', blank=True, related_name='images_id')
+    voice = models.ForeignKey(Upload, verbose_name='语音', blank=True, on_delete=models.PROTECT,related_name='voice_id')
+
     class Meta:
         db_table = 'repair_order'
         verbose_name = '报修工单'
@@ -228,6 +231,7 @@ class RepairOrderRecord(models.Model):
             dict['fault_cause'] = order_finish.fault_cause.name
             dict['content'] = order_finish.content
             dict['images'] = []
+
             images = order_finish.images.all()
             for img in images:
                 dict['images'].append(

+ 26 - 3
apps/upload/models.py

@@ -47,12 +47,31 @@ class UploadManager(models.Manager):
         instance.save()
         return instance
 
+    def _addnew_voice(self, tenant, user, type, file):
+
+        path = UploadManager.calculatePath(type, tenant.id, user.id)
+        filename = UploadFile(file, path)
+        # fullname = "%s%s" % (settings.MEDIA_ROOT, filename)
+
+        instance = self.model(
+            tenant=tenant,
+            user=user,
+            type=type,
+            name=file.name,
+            picture="%s%s" % (settings.MEDIA_URL, filename),
+            width=200,
+            height=200
+        )
+        instance.save()
+        return instance
+
     @staticmethod
     def calculatePath(type, tenant_id, user_id):
         path_map = {
             Upload.REPAIR_IMAGE: repair_image,
             Upload.INSPECTION_IMAGE: inspection_image,
             Upload.COMPANY_IMAGE: company_image,
+            Upload.REPAIR_VOICE:repair_voice,
         }
 
         return path_map[type] + str(tenant_id) + str(user_id) + '/'
@@ -61,25 +80,29 @@ class UploadManager(models.Manager):
 repair_image = "repair/"
 inspection_image = "inspection/"
 company_image = "company/"
-
+repair_voice = "repair/"
 
 class Upload(models.Model):
     REPAIR_IMAGE = 1
     INSPECTION_IMAGE = 2
     COMPANY_IMAGE = 3
+    REPAIR_VOICE = 4
     TYPE_CHOICES = (
         (REPAIR_IMAGE, u'报修图片'),
         (INSPECTION_IMAGE, u'巡检图片'),
         (COMPANY_IMAGE, u'营业执照图片'),
+        (REPAIR_VOICE, u'报修语音')
     )
+
     tenant = models.ForeignKey(Tenant, verbose_name=u'企业', on_delete=models.PROTECT)
     user = models.ForeignKey(settings.AUTH_USER_MODEL, verbose_name=u'操作人', on_delete=models.PROTECT)
     type = models.PositiveSmallIntegerField(choices=TYPE_CHOICES, verbose_name=u"类型")
     name = models.CharField(verbose_name=u'图片名', max_length=250)
     picture = models.CharField(verbose_name=u'图片路径', max_length=250)
-    width = models.IntegerField(verbose_name=u"图片宽度")
-    height = models.IntegerField(verbose_name=u"图片高度")
+    width = models.IntegerField(verbose_name=u"图片宽度", blank=True, default=0)
+    height = models.IntegerField(verbose_name=u"图片高度", blank=True, default=0)
     create_time = models.DateTimeField(verbose_name=u'上传时间', auto_now_add=True, editable=False)
+    # sound = models.CharField(verbose_name=u'声音路径', max_length=250)
 
     objects = UploadManager()
 

+ 10 - 2
apps/wxapp/repair_order/serializers.py

@@ -12,17 +12,21 @@ class RepairOrderDetailSerializer(serializers.ModelSerializer):
     status_text = serializers.CharField(source='get_status_display', read_only=True)
     user_id = serializers.CharField(source='user.id', read_only=True)
     images = serializers.SerializerMethodField()
+    voice = serializers.SerializerMethodField()
     repair_type_name = serializers.CharField(source='repair_type.name', read_only=True)
     create_at = DelayTimeCharField(source='create_time', read_only=True)
 
     def get_images(self, obj):
         return UploadSerializer(obj.images, many=True).data
 
+    def get_voice(self, obj):
+        return UploadSerializer(obj.voice, many=True).data
+
     class Meta:
         model = RepairOrder
         fields = (
             'id', 'status_text', 'status', 'no', 'fault_des', 'tel', 'name', 'create_at', 'device_address',
-            'repair_type_name', 'images', 'user_id')
+            'repair_type_name', 'images', 'user_id','voice')
 
 
 class RepairOrderListSerializer(serializers.ModelSerializer):
@@ -53,11 +57,15 @@ class RepairOrderListSerializer(serializers.ModelSerializer):
 class RepairOrderSerializer(serializers.ModelSerializer):
     class Meta:
         model = RepairOrder
-        fields = ('id', 'fault_des', 'tel', 'name', 'repair_type','device_name','device_address',)
+        fields = ('id', 'fault_des', 'tel', 'name', 'repair_type','device_name','device_address','voice')
 
     def create(self, validated_data):
         if 'images' in self.initial_data:
             validated_data['images'] = self.initial_data['images'].split(',')
+        print(self.initial_data)
+        print(self.context['request'])
+        validated_data['voice'] = self.initial_data['voice']
+        print(validated_data)
         validated_data['user'] = self.context['request'].user
         validated_data['tenant'] = self.context['request'].user.employee.tenant
         instance = super(RepairOrderSerializer, self).create(validated_data)

+ 9 - 0
apps/wxapp/repair_order/views.py

@@ -132,6 +132,15 @@ class RepairOrderViewSet(CustomModelViewSet):
             return response_ok(upload.id)
         return response_error('上传失败,请重新上传!')
 
+    @action(methods=['post'], detail=False)
+    def upload_voice(self, request):
+        file = self.request.FILES.get('file')
+        user = self.request.user
+        upload = Upload.objects._addnew_voice(user.employee.tenant, user, Upload.REPAIR_VOICE, file)
+        if upload:
+            return response_ok(upload.id)
+        return response_error('上传失败,请重新上传!')
+
     @action(methods=['get'], detail=True)
     def check(self, request, pk):
         # 审核