flower_mr il y a 2 semaines
Parent
commit
47a7aa11f5
100 fichiers modifiés avec 561 ajouts et 48 suppressions
  1. 6 6
      bin/queries.py
  2. 2 1
      bin/updates.py
  3. 8 6
      bin/views.py
  4. 1 0
      bound/models.py
  5. 1 1
      bound/views.py
  6. 1 1
      container/container_operate.py
  7. 22 0
      container/models.py
  8. 7 0
      container/serializers.py
  9. 4 0
      container/urls.py
  10. 163 8
      container/views.py
  11. BIN
      db copy.sqlite3
  12. 63 0
      logs/error.log
  13. 250 0
      logs/server.log
  14. 0 0
      templates/dist/spa/css/10.296f042c.css
  15. 0 1
      templates/dist/spa/css/11.37d7165f.css
  16. 0 0
      templates/dist/spa/css/11.74deb849.css
  17. 0 0
      templates/dist/spa/css/12.601677c3.css
  18. 0 1
      templates/dist/spa/css/13.00a78ca4.css
  19. 1 0
      templates/dist/spa/css/13.80a6b71a.css
  20. 0 1
      templates/dist/spa/css/14.6372214f.css
  21. 0 0
      templates/dist/spa/css/14.f721cf95.css
  22. 1 0
      templates/dist/spa/css/15.15fd4028.css
  23. 1 0
      templates/dist/spa/css/16.3b82583b.css
  24. 0 1
      templates/dist/spa/css/16.b4a1766a.css
  25. 1 0
      templates/dist/spa/css/17.31ab8f86.css
  26. 0 0
      templates/dist/spa/css/18.0d4c4716.css
  27. 1 0
      templates/dist/spa/css/19.e0fd7d29.css
  28. 0 0
      templates/dist/spa/css/20.8f3f6188.css
  29. 0 0
      templates/dist/spa/css/21.8d4e7dc4.css
  30. 1 0
      templates/dist/spa/css/22.368d1e05.css
  31. 0 0
      templates/dist/spa/css/23.e4f041cc.css
  32. 0 0
      templates/dist/spa/css/24.7a23b7fb.css
  33. 0 0
      templates/dist/spa/css/25.0faa4aeb.css
  34. 0 1
      templates/dist/spa/css/3.4420d960.css
  35. 1 0
      templates/dist/spa/css/3.9ebd3e18.css
  36. 1 0
      templates/dist/spa/css/4.cd59f5a0.css
  37. 0 0
      templates/dist/spa/css/5.0ac6b60c.css
  38. 0 1
      templates/dist/spa/css/6.22759db8.css
  39. 0 0
      templates/dist/spa/css/6.7100e471.css
  40. 1 0
      templates/dist/spa/css/7.eb31c91a.css
  41. 1 0
      templates/dist/spa/css/8.f57b1220.css
  42. 0 0
      templates/dist/spa/css/9.58670660.css
  43. 1 1
      templates/dist/spa/index.html
  44. 1 0
      templates/dist/spa/js/10.6087e287.js
  45. BIN
      templates/dist/spa/js/10.6087e287.js.gz
  46. BIN
      templates/dist/spa/js/10.c82d315b.js.gz
  47. 1 0
      templates/dist/spa/js/11.794b8487.js
  48. BIN
      templates/dist/spa/js/11.794b8487.js.gz
  49. 0 1
      templates/dist/spa/js/11.8ed46d39.js
  50. BIN
      templates/dist/spa/js/11.8ed46d39.js.gz
  51. 1 1
      templates/dist/spa/js/10.c82d315b.js
  52. BIN
      templates/dist/spa/js/12.31f6681d.js.gz
  53. 0 1
      templates/dist/spa/js/13.9dbdcd94.js
  54. BIN
      templates/dist/spa/js/13.9dbdcd94.js.gz
  55. 1 0
      templates/dist/spa/js/13.b2b0f6d2.js
  56. BIN
      templates/dist/spa/js/13.b2b0f6d2.js.gz
  57. 0 1
      templates/dist/spa/js/14.8d6b91bd.js
  58. BIN
      templates/dist/spa/js/14.8d6b91bd.js.gz
  59. 1 1
      templates/dist/spa/js/12.b7b18e73.js
  60. BIN
      templates/dist/spa/js/12.b7b18e73.js.gz
  61. 1 0
      templates/dist/spa/js/15.9ce89ba7.js
  62. 0 1
      templates/dist/spa/js/16.1ff5fbd5.js
  63. BIN
      templates/dist/spa/js/16.1ff5fbd5.js.gz
  64. 1 0
      templates/dist/spa/js/16.4169f2ae.js
  65. BIN
      templates/dist/spa/js/16.4169f2ae.js.gz
  66. 0 1
      templates/dist/spa/js/17.4754b111.js
  67. BIN
      templates/dist/spa/js/17.4754b111.js.gz
  68. 1 0
      templates/dist/spa/js/17.a21e08f6.js
  69. BIN
      templates/dist/spa/js/17.a21e08f6.js.gz
  70. BIN
      templates/dist/spa/js/18.97f3ea3e.js.gz
  71. 1 1
      templates/dist/spa/js/15.c2f7cf47.js
  72. 1 0
      templates/dist/spa/js/19.4e7dcf8f.js
  73. BIN
      templates/dist/spa/js/19.4e7dcf8f.js.gz
  74. 1 0
      templates/dist/spa/js/20.cd19dfae.js
  75. BIN
      templates/dist/spa/js/20.cd19dfae.js.gz
  76. 1 1
      templates/dist/spa/js/18.97f3ea3e.js
  77. BIN
      templates/dist/spa/js/21.16125990.js.gz
  78. 1 0
      templates/dist/spa/js/22.4c4ded85.js
  79. BIN
      templates/dist/spa/js/23.68bad48f.js.gz
  80. 1 1
      templates/dist/spa/js/19.314dcb2d.js
  81. 1 1
      templates/dist/spa/js/20.a57377d9.js
  82. BIN
      templates/dist/spa/js/24.9061c7b3.js.gz
  83. BIN
      templates/dist/spa/js/25.2077fb95.js.gz
  84. 1 1
      templates/dist/spa/js/21.6afd79ce.js
  85. 1 1
      templates/dist/spa/js/22.3e6df892.js
  86. BIN
      templates/dist/spa/js/26.ec95ccdb.js.gz
  87. 1 1
      templates/dist/spa/js/23.68bad48f.js
  88. BIN
      templates/dist/spa/js/27.a78b214f.js.gz
  89. BIN
      templates/dist/spa/js/27.fe4232e3.js.gz
  90. 1 1
      templates/dist/spa/js/24.9061c7b3.js
  91. BIN
      templates/dist/spa/js/28.fcbf4b37.js.gz
  92. 1 1
      templates/dist/spa/js/25.2077fb95.js
  93. BIN
      templates/dist/spa/js/29.44bce511.js.gz
  94. BIN
      templates/dist/spa/js/29.68429922.js.gz
  95. 0 1
      templates/dist/spa/js/3.46f9d6d8.js
  96. BIN
      templates/dist/spa/js/3.46f9d6d8.js.gz
  97. 1 0
      templates/dist/spa/js/3.9f61a74d.js
  98. BIN
      templates/dist/spa/js/3.9f61a74d.js.gz
  99. 1 1
      templates/dist/spa/js/26.ec95ccdb.js
  100. 0 0
      templates/dist/spa/js/30.04ebe6fd.js.gz

+ 6 - 6
bin/queries.py

@@ -42,7 +42,7 @@ class LocationQueries:
     @staticmethod
     def get_active_container_details(container_id):
         return ContainerDetailModel.objects.filter(
-            container=container_id
+            container=container_id,is_delete=False
         ).exclude(status=3).first()
 
     @staticmethod
@@ -53,7 +53,7 @@ class LocationQueries:
 
 
         detail = ContainerDetailModel.objects.filter(
-            container=container.id
+            container=container.id,is_delete=False
         ).exclude(status=3).first()
         if not detail:
             return {
@@ -71,7 +71,7 @@ class LocationQueries:
             }
         else:
             detail_all = ContainerDetailModel.objects.filter(
-                container=container.id
+                container=container.id,is_delete=False
                 ).exclude(status=3).all()
             # 统计该拖盘上的不同批次数目
             batch_count =  len(set([item.batch.id for item in detail_all]))
@@ -132,7 +132,7 @@ class LocationQueries:
             return None
      
         container_detail = ContainerDetailModel.objects.filter(
-            container=container.id
+            container=container.id,is_delete=False
         ).exclude(status = 3).first()
 
         batch_obj = container_detail.batch
@@ -156,14 +156,14 @@ class LocationQueries:
             return None
      
         container_detail = ContainerDetailModel.objects.filter(
-            container=container.id
+            container=container.id,is_delete=False
         ).exclude(status = 3).first()
         if not container_detail:
             logger.error(f"托盘 {container_code} 未组盘")
             return None
  
         batch_container = ContainerDetailModel.objects.filter(
-             batch = container_detail.batch.id,
+             batch = container_detail.batch.id,is_delete=False
         ).all().exclude(status = 3)
         # 统计批次下的不同托盘 item.contianer_id
         batch_container_count = 0

+ 2 - 1
bin/updates.py

@@ -40,6 +40,7 @@ class LocationUpdates:
             )
             detail = ContainerDetailModel.objects.select_related('batch').filter(
                 container=container.id,
+                is_delete=False,
                 status__in=[1, 2]
                 ).all()
             if not detail:
@@ -218,7 +219,7 @@ class LocationUpdates:
                 return False
             # 2. 更新托盘状态
             container_detail = ContainerDetailModel.objects.filter(
-                container=container.id
+                container=container.id,is_delete=False
             ).exclude(status=3).all()
             if not container_detail:
                 print(f"托盘 {container_code} 未组盘_from update_container_detail_status")

+ 8 - 6
bin/views.py

@@ -242,7 +242,8 @@ class LocationAllocation:
             return None
         # 2. 获取关联的批次明细
         container_detail = ContainerDetailModel.objects.filter(
-            container=container.id
+            container=container.id,is_delete=False
+
         ).exclude(status = 3).first()
         if not container_detail:
             logger.error(f"托盘 {container_code} 未组盘")
@@ -250,6 +251,7 @@ class LocationAllocation:
  
         batch_container = ContainerDetailModel.objects.filter(
              batch = container_detail.batch.id,
+             is_delete = False,
              status = 1
         ).all()
         # 统计批次下的不同托盘 item.contianer_id
@@ -350,7 +352,7 @@ class LocationAllocation:
                 return False
             # 2. 更新托盘状态
             container_detail = ContainerDetailModel.objects.filter(
-                container=container.id
+                container=container.id,is_delete=False
             ).exclude(status=3).first()
             if not container_detail:
                 print(f"托盘 {container_code} 未组盘_from update_container_detail_status")
@@ -511,7 +513,7 @@ class LocationAllocation:
                 return None
             # 2. 获取关联的批次明细
             container_detail = ContainerDetailModel.objects.filter(
-                container=container.id
+                container=container.id,is_delete=False
             ).exclude(status=3).first()
             if not container_detail:
                 print (f"托盘 {container_code} 未组盘")
@@ -549,7 +551,7 @@ class LocationAllocation:
                 return None
             # 2. 获取关联的批次明细
             container_detail = ContainerDetailModel.objects.filter(
-                container=container.id
+                container=container.id,is_delete=False
             ).exclude(status=3).all()
             if not container_detail:
                 print (f"托盘 {container_code} 未组盘")
@@ -586,7 +588,7 @@ class LocationAllocation:
             return None
         # 2. 获取关联的批次明细
         container_detail = ContainerDetailModel.objects.filter(
-            container=container.id
+            container=container.id,is_delete=False
         ).exclude(status=3).first()
         if not container_detail:
             print (f"托盘 {container_code} 未组盘")
@@ -612,7 +614,7 @@ class LocationAllocation:
             return None
         # 2. 获取关联的批次明细
         container_detail = ContainerDetailModel.objects.filter(
-            container=container.id
+            container=container.id,is_delete=False
         ).exclude(status=3).first()
         if not container_detail:
             print (f"托盘 {container_code} 未组盘")

+ 1 - 0
bound/models.py

@@ -102,6 +102,7 @@ class BoundBatchModel(models.Model):
         self.goods_actual_qty = self.goods_in_location_qty
         super().save(*args, **kwargs)
 
+    
 class OutBoundDemandModel(models.Model):
     OUT_TYPE = (
         (0, '发货出库'),

+ 1 - 1
bound/views.py

@@ -527,7 +527,7 @@ class BoundBatchViewSet(viewsets.ModelViewSet):
                 qs_set = BoundBatchModel.objects.filter( goods_code=data['goods_code'], bound_month=order_month,  is_delete=False)
                 print('qs_set是:', len(qs_set))
                 if len(qs_set) > 0:
-                    bound_last_code = qs_set.order_by('-id').first().bound_number
+                    bound_last_code = qs_set.order_by('-bound_batch_order').first().bound_number
                     data['bound_batch_order'] = int(bound_last_code.split('-')[-1])+1
                     data['bound_number'] = data['goods_code'] + '-' + str(int(bound_last_code.split('-')[-1])+1)
                 else:

+ 1 - 1
container/container_operate.py

@@ -324,7 +324,7 @@ class DetailRecordCreator:
         container_obj = ContainerListModel.objects.filter(id=data['container']).first()
         container_obj.status = 5
         container_obj.save()
-        if ContainerDetailModel.objects.filter(container=container_obj,goods_code=data['goods_code'],status=1).first():
+        if ContainerDetailModel.objects.filter(container=container_obj,goods_code=data['goods_code'],status=1,is_delete=False).first():
             return 
         ContainerDetailModel.objects.create(
             container=container_obj,

+ 22 - 0
container/models.py

@@ -60,6 +60,28 @@ class ContainerDetailModel(models.Model):
         verbose_name = 'ContainerDetail'
         verbose_name_plural = "ContainerDetail"
         ordering = ['-id']
+
+    def __str__(self):
+        return f"{self.container_code} - {self.batch.bound_number} - {self.goods_code} - {self.goods_desc} - {self.goods_qty}"
+    
+    def save(self, *args, **kwargs):
+        """
+        更新托盘上的物料数量,更新批次上的
+        goods_in_qty(组盘数目)
+        ,goods_in_location_qty(在库数目)
+        ,goods_out_qty(出库数目)
+    
+        """
+        if self.batch:
+            super().save(*args, **kwargs)
+            container_all_qty = ContainerDetailModel.objects.filter(batch=self.batch,is_delete=False).aggregate(total_qty=models.Sum('goods_qty'))['total_qty']
+            container_all_out_qty = ContainerDetailModel.objects.filter(batch=self.batch,is_delete=False).aggregate(total_out_qty=models.Sum('goods_out_qty'))['total_out_qty']
+            self.batch.goods_in_qty = container_all_qty
+            self.batch.goods_in_location_qty = container_all_qty - container_all_out_qty
+            self.batch.goods_out_qty = container_all_out_qty
+            self.batch.save()
+        
+
     
 
 

+ 7 - 0
container/serializers.py

@@ -42,6 +42,13 @@ class ContainerListPostSerializer(serializers.ModelSerializer):
         fields= '__all__'
         read_only_fields = ['id' ]
 
+class ContainerDetailSimpleGetSerializer(serializers.ModelSerializer):
+    class Meta:
+        # 指定模型和排除字段
+        model = ContainerDetailModel
+        fields= '__all__'
+        read_only_fields = ['id']
+
 class ContainerDetailGetSerializer(serializers.ModelSerializer):
     # 定义明细单列表的序列化器,用于获取操作,字段只读
     month = serializers.IntegerField(read_only=True, required=False)

+ 4 - 0
container/urls.py

@@ -14,8 +14,12 @@ re_path(r'^detail/(?P<pk>\d+)/$', views.ContainerDetailViewSet.as_view({
     'get': 'retrieve',
     'put': 'update',
     'patch': 'partial_update',
+    'delete': 'destroy',
 }), name="ContainerDetail_1"),
 
+path(r'locationdetail/', views.ContainerDetailViewSet.as_view( {"get": "locationdetail_list"}), name="ContainerlocationDetail"),
+path(r'containerdetail/', views.ContainerDetailViewSet.as_view( {"get": "containerdetail_list"}), name="ContainerlocationDetail"),
+
 path(r'operate/', views.ContainerOperateViewSet.as_view( {"get": "list","post": "create"}), name="ContainerDetail"),
 re_path(r'^operate/(?P<pk>\d+)/$', views.ContainerOperateViewSet.as_view({
     'get': 'retrieve',

+ 163 - 8
container/views.py

@@ -20,7 +20,7 @@ from bin.views import LocationAllocation,base_location
 from bin.models import LocationModel,LocationContainerLink,LocationGroupModel
 from bound.models import BoundBatchModel,OutBatchModel,BatchLogModel
 
-from .serializers import ContainerDetailGetSerializer,ContainerDetailPostSerializer
+from .serializers import ContainerDetailGetSerializer,ContainerDetailPostSerializer,ContainerDetailSimpleGetSerializer
 from .serializers import ContainerListGetSerializer,ContainerListPostSerializer
 from .serializers import ContainerOperationGetSerializer,ContainerOperationPostSerializer
 from .serializers import TaskGetSerializer,TaskPostSerializer
@@ -31,7 +31,7 @@ from rest_framework.permissions import AllowAny
 import threading
 from django.db import close_old_connections
 from bin.services import AllocationService
-
+from collections import defaultdict
 logger = logging.getLogger(__name__)
 class ContainerListViewSet(viewsets.ModelViewSet):
     """
@@ -739,7 +739,7 @@ class ContainerWCSViewSet(viewsets.ModelViewSet):
         try:
             task_obj = ContainerWCSModel.objects.filter(id=wcs_id).first()
             if task_obj:
-                container_detail_obj = ContainerDetailModel.objects.filter(container=container_id).all()
+                container_detail_obj = ContainerDetailModel.objects.filter(container=container_id,is_delete=False).all()
                 if container_detail_obj:
                     for detail in container_detail_obj:
                         # 保存到数据库
@@ -883,6 +883,7 @@ class ContainerDetailViewSet(viewsets.ModelViewSet):
             return ContainerDetailGetSerializer
         elif self.action in ['create', 'update']:
             return ContainerDetailPostSerializer
+
         else:
             return self.http_method_not_allowed(request=self.request)
 
@@ -907,6 +908,158 @@ class ContainerDetailViewSet(viewsets.ModelViewSet):
         serializer.save()
         headers = self.get_success_headers(serializer.data)
         return Response(serializer.data, status=200, headers=headers)
+    
+    def destroy(self, request, pk):
+        qs = self.get_object()
+        qs.is_delete = True
+        qs.save()
+        return Response({'code': 200,'message': '删除成功', 'data': None}, status=200)
+
+    def containerdetail_list(self, request):
+        """
+        获取容器详情列表
+        """
+        try:
+            container_id = request.query_params.get('container')
+            if not container_id:
+                return Response(
+                    {'code': 400, 'message': '缺少容器ID参数', 'data': None},
+                    status=status.HTTP_400_BAD_REQUEST
+                )
+            # 获取容器对象
+            try:
+                container = ContainerListModel.objects.get(id=container_id)
+            except ContainerListModel.DoesNotExist:
+                return Response(
+                    {'code': 404, 'message': '指定容器不存在', 'data': None},
+                    status=status.HTTP_404_NOT_FOUND
+                )
+
+            # 查询关联批次明细(排除状态0和3)
+            details = ContainerDetailModel.objects.filter(
+                container=container,is_delete=False
+
+            ).exclude(
+                status__in=[0, 3]
+            ).select_related('batch')
+   
+            details_serializer = ContainerDetailSimpleGetSerializer(details, many=True)
+            return Response(
+                {'code': 200, 'message': 'Success', 'data': details_serializer.data},
+                status=status.HTTP_200_OK
+            )
+        except Exception as e:
+            return Response(
+                {'code': 500, 'message': f'服务器错误: {str(e)}', 'data': None},
+                status=status.HTTP_500_INTERNAL_SERVER_ERROR
+            )   
+        
+
+    def locationdetail_list(self, request):
+        """
+        获取库位所处托盘的信息(按批次号 + 数量分组)
+        新增批次总量统计功能
+        """
+        try:
+            container_id = request.query_params.get('container')
+            if not container_id:
+                return Response(
+                    {'code': 400, 'message': '缺少容器ID参数', 'data': None},
+                    status=status.HTTP_400_BAD_REQUEST
+                )
+
+            # 获取容器对象
+            try:
+                container = ContainerListModel.objects.get(id=container_id)
+            except ContainerListModel.DoesNotExist:
+                return Response(
+                    {'code': 404, 'message': '指定容器不存在', 'data': None},
+                    status=status.HTTP_404_NOT_FOUND
+                )
+
+            # 查询关联批次明细(排除状态0和3)
+            details = ContainerDetailModel.objects.filter(
+                container=container,is_delete=False
+            ).exclude(
+                status__in=[0, 3]
+            ).select_related('batch')
+
+            if not details.exists():
+                return Response(
+                    {'code': 404, 'message': '未找到有效批次数据', 'data': None},
+                    status=status.HTTP_404_NOT_FOUND
+                )
+
+            # 按批次号 + 数量分组统计
+            batch_dict = {}
+            batch_qty_dict = defaultdict(int)  # 使用默认字典自动初始化
+
+            for detail in details:
+                if not detail.batch:
+                    continue
+
+                bound_number = detail.batch.bound_number
+                goods_qty = detail.goods_qty
+
+                # 组合键:批次号 + 当前数量
+                batch_key = (bound_number, goods_qty)
+                
+                
+                batch_qty_dict[bound_number] += goods_qty  # 自动处理键初始化
+
+                # 分组统计
+                if batch_key not in batch_dict:
+                    batch_obj = BoundBatchModel.objects.filter( bound_number=bound_number).first()
+                    batch_dict[batch_key] = {
+                        "goods_code": detail.goods_code,
+                        "goods_desc": detail.goods_desc,
+                        "goods_qty": goods_qty,
+                        "goods_class": detail.goods_class,
+                        "goods_package": batch_obj.goods_package,
+                        "batch_total_qty": batch_obj.goods_qty,
+                        "batch_total_in_qty": batch_obj.goods_in_qty - batch_obj.goods_out_qty,
+                        "status": detail.status,
+                        "group_qty": 1,
+                        "create_time": detail.create_time,
+                    }
+                else:
+                    batch_dict[batch_key]["group_qty"] += 1
+
+            # 重构数据结构
+            results = []
+            for (bound_number, qty), data in batch_dict.items():
+                results.append({
+                    **data,
+                    "bound_number": bound_number,
+                    "current_qty": qty,
+                    "total_batch_qty": batch_qty_dict[bound_number]  # 添加批次总量
+                })
+            batch_totals =[]
+            for bound_number, qty in batch_qty_dict.items():
+                batch_totals.append({
+                    "bound_number": bound_number,
+                    "total_batch_qty": qty
+                })
+
+            return Response(
+                {
+                    "code": 200,
+                    "message": "Success",
+                    "data": {
+                        "count": len(results),
+                        "results": results,
+                        "batch_totals": batch_totals  # 可选:单独返回批次总量
+                    }
+                },
+                status=status.HTTP_200_OK
+            )
+
+        except Exception as e:
+            return Response(
+                {'code': 500, 'message': f'服务器错误: {str(e)}', 'data': None},
+                status=status.HTTP_500_INTERNAL_SERVER_ERROR
+            )
+
 
 class ContainerOperateViewSet(viewsets.ModelViewSet):
     """
@@ -971,6 +1124,8 @@ class ContainerOperateViewSet(viewsets.ModelViewSet):
         serializer.save()
         headers = self.get_success_headers(serializer.data)
         return Response(serializer.data, status=200, headers=headers)
+    
+    
 
 class OutboundService:
     @staticmethod
@@ -1256,7 +1411,7 @@ class OutTaskViewSet(APIView):
 
     def get_location_by_status_and_batch(self,status,bound_id):
         try:
-            container_obj = ContainerDetailModel.objects.filter(batch=bound_id,status=status).all()
+            container_obj = ContainerDetailModel.objects.filter(batch=bound_id,status=status,is_delete=False).all()
             if container_obj:
               
                 container_dict = {}
@@ -1309,7 +1464,7 @@ class OutTaskViewSet(APIView):
         # 获取唯一容器ID列表
         container_ids = (
             ContainerDetailModel.objects
-            .filter(batch_id=batch_id, status=2)
+            .filter(batch_id=batch_id, status=2,is_delete=False)
             .values_list('container_id', flat=True)
             .distinct()
         )
@@ -1317,7 +1472,7 @@ class OutTaskViewSet(APIView):
         # 获取每个容器的最新明细(按id倒序)
         return (
             ContainerDetailModel.objects
-            .filter(container_id__in=container_ids, status=2)
+            .filter(container_id__in=container_ids, status=2,is_delete=False)
             .select_related('container')
             .prefetch_related(
                 Prefetch('container__location_links', 
@@ -1414,7 +1569,7 @@ class OutTaskViewSet(APIView):
         try:
             # 更新容器明细
             ContainerDetailModel.objects.filter(
-                id=item['detail'].id
+                id=item['detail'].id ,is_delete=False
             ).update(
                 goods_out_qty=F('goods_out_qty') + allocate_qty,
                 status=Case(
@@ -1485,7 +1640,7 @@ class OutTaskViewSet(APIView):
             if not container_operation_obj:
                 logger.error(f"[1]批次 {batch_id} 托盘 {container_obj.container_code} 无出库任务")
                 return {"code": "500", "msg": f"批次 {batch_id} 托盘 {container_obj.container_code} 无出库任务"}
-            container_detail_obj = ContainerDetailModel.objects.filter(container=container_obj,batch_id=batch_id,status=2).first()
+            container_detail_obj = ContainerDetailModel.objects.filter(container=container_obj,batch_id=batch_id,status=2,is_delete=False).first()
             if not container_detail_obj:
                 logger.error(f"[1]批次 {batch_id} 托盘 {container_obj.container_code} 无批次信息")
                 return {"code": "500", "msg": f"批次 {batch_id} 托盘 {container_obj.container_code} 无批次信息"}

BIN
db copy.sqlite3


+ 63 - 0
logs/error.log

@@ -8907,3 +8907,66 @@ Traceback (most recent call last):
   File "D:\Document\code\vue\greater_wms\.venv\lib\site-packages\django\db\models\sql\query.py", line 1709, in names_to_path
     raise FieldError(
 django.core.exceptions.FieldError: Cannot resolve keyword 'is_active' into field. Choices are: allocation_history, available, container_code, current_location, details, id, last_operation, location_links, locationchangelog, locationmodel, operations, status, target_location
+[2025-05-21 20:07:12,162][django.request.log_response():241] [ERROR] Internal Server Error: /container/locationdetail/
+[2025-05-21 20:07:41,457][django.request.log_response():241] [ERROR] Internal Server Error: /container/locationdetail/
+[2025-05-21 20:11:58,016][django.request.log_response():241] [ERROR] Internal Server Error: /container/locationdetail/
+[2025-05-21 20:13:22,096][django.request.log_response():241] [ERROR] Internal Server Error: /container/locationdetail/
+[2025-05-21 20:14:30,824][django.request.log_response():241] [ERROR] Internal Server Error: /container/locationdetail/
+[2025-05-21 20:18:06,373][django.request.log_response():241] [ERROR] Internal Server Error: /container/locationdetail/
+[2025-05-21 20:18:19,546][django.request.log_response():241] [ERROR] Internal Server Error: /container/locationdetail/
+[2025-05-21 20:18:21,608][django.request.log_response():241] [ERROR] Internal Server Error: /container/locationdetail/
+[2025-05-21 20:18:31,686][django.request.log_response():241] [ERROR] Internal Server Error: /container/locationdetail/
+[2025-05-21 20:18:36,202][django.request.log_response():241] [ERROR] Internal Server Error: /container/locationdetail/
+[2025-05-21 20:18:38,609][django.request.log_response():241] [ERROR] Internal Server Error: /container/locationdetail/
+[2025-05-21 20:18:40,962][django.request.log_response():241] [ERROR] Internal Server Error: /container/locationdetail/
+[2025-05-21 20:18:44,835][django.request.log_response():241] [ERROR] Internal Server Error: /container/locationdetail/
+[2025-05-21 20:21:11,701][django.request.log_response():241] [ERROR] Internal Server Error: /container/locationdetail/
+[2025-05-21 20:21:52,863][django.request.log_response():241] [ERROR] Internal Server Error: /container/locationdetail/
+[2025-05-21 20:22:06,265][django.request.log_response():241] [ERROR] Internal Server Error: /container/locationdetail/
+[2025-05-21 20:23:05,166][django.request.log_response():241] [ERROR] Internal Server Error: /container/locationdetail/
+[2025-05-21 20:24:19,711][django.request.log_response():241] [ERROR] Internal Server Error: /container/locationdetail/
+[2025-05-21 20:24:54,468][django.request.log_response():241] [ERROR] Internal Server Error: /container/locationdetail/
+[2025-05-21 20:33:59,486][django.request.log_response():241] [ERROR] Internal Server Error: /container/locationdetail/
+[2025-05-21 20:43:48,481][django.request.log_response():241] [ERROR] Internal Server Error: /container/containerdetail/
+Traceback (most recent call last):
+  File "D:\Document\code\vue\greater_wms\.venv\lib\site-packages\asgiref\sync.py", line 472, in thread_handler
+    raise exc_info[1]
+  File "D:\Document\code\vue\greater_wms\.venv\lib\site-packages\django\core\handlers\exception.py", line 42, in inner
+    response = await get_response(request)
+  File "D:\Document\code\vue\greater_wms\.venv\lib\site-packages\django\core\handlers\base.py", line 253, in _get_response_async
+    response = await wrapped_callback(
+  File "D:\Document\code\vue\greater_wms\.venv\lib\site-packages\asgiref\sync.py", line 435, in __call__
+    ret = await asyncio.wait_for(future, timeout=None)
+  File "D:\language\python38\lib\asyncio\tasks.py", line 455, in wait_for
+    return await fut
+  File "D:\language\python38\lib\concurrent\futures\thread.py", line 57, in run
+    result = self.fn(*self.args, **self.kwargs)
+  File "D:\Document\code\vue\greater_wms\.venv\lib\site-packages\asgiref\sync.py", line 476, in thread_handler
+    return func(*args, **kwargs)
+  File "D:\Document\code\vue\greater_wms\.venv\lib\site-packages\django\views\decorators\csrf.py", line 54, in wrapped_view
+    return view_func(*args, **kwargs)
+  File "D:\Document\code\vue\greater_wms\.venv\lib\site-packages\rest_framework\viewsets.py", line 117, in view
+    handler = getattr(self, action)
+AttributeError: 'ContainerDetailViewSet' object has no attribute 'containerdetail_list'
+[2025-05-22 00:08:59,621][django.request.log_response():241] [ERROR] Internal Server Error: /container/detail/1562/
+Traceback (most recent call last):
+  File "d:\Document\code\vue\greater_wms\.venv\lib\site-packages\django\core\handlers\exception.py", line 55, in inner
+    response = get_response(request)
+  File "d:\Document\code\vue\greater_wms\.venv\lib\site-packages\django\core\handlers\base.py", line 197, in _get_response
+    response = wrapped_callback(request, *callback_args, **callback_kwargs)
+  File "d:\Document\code\vue\greater_wms\.venv\lib\site-packages\django\views\decorators\csrf.py", line 54, in wrapped_view
+    return view_func(*args, **kwargs)
+  File "d:\Document\code\vue\greater_wms\.venv\lib\site-packages\rest_framework\viewsets.py", line 125, in view
+    return self.dispatch(request, *args, **kwargs)
+  File "d:\Document\code\vue\greater_wms\.venv\lib\site-packages\rest_framework\views.py", line 509, in dispatch
+    response = self.handle_exception(exc)
+  File "d:\Document\code\vue\greater_wms\.venv\lib\site-packages\rest_framework\views.py", line 469, in handle_exception
+    self.raise_uncaught_exception(exc)
+  File "d:\Document\code\vue\greater_wms\.venv\lib\site-packages\rest_framework\views.py", line 480, in raise_uncaught_exception
+    raise exc
+  File "d:\Document\code\vue\greater_wms\.venv\lib\site-packages\rest_framework\views.py", line 506, in dispatch
+    response = handler(request, *args, **kwargs)
+  File "D:\Document\code\vue\greater_wms\container\views.py", line 916, in destroy
+    return Response(serializer.data, status=200, headers=headers)
+NameError: name 'serializer' is not defined
+[2025-05-22 00:08:59,623][django.server.log_message():187] [ERROR] "DELETE /container/detail/1562/ HTTP/1.1" 500 110491

+ 250 - 0
logs/server.log

@@ -24709,3 +24709,253 @@ Traceback (most recent call last):
   File "D:\Document\code\vue\greater_wms\.venv\lib\site-packages\django\db\models\sql\query.py", line 1709, in names_to_path
     raise FieldError(
 django.core.exceptions.FieldError: Cannot resolve keyword 'is_active' into field. Choices are: allocation_history, available, container_code, current_location, details, id, last_operation, location_links, locationchangelog, locationmodel, operations, status, target_location
+[2025-05-21 11:44:04,677][django.request.log_response():241] [WARNING] Not Found: /container/locationdetail/
+[2025-05-21 11:45:03,089][django.request.log_response():241] [WARNING] Not Found: /container/locationdetail/
+[2025-05-21 11:45:03,090][django.server.log_message():187] [WARNING] "GET /container/locationdetail/?container=33 HTTP/1.1" 404 64
+[2025-05-21 11:47:05,363][django.server.log_message():187] [INFO] "GET /container/locationdetail/?container=33 HTTP/1.1" 200 299
+[2025-05-21 13:56:50,050][django.server.log_message():187] [INFO] "OPTIONS /container/operate/?status=1&container=21 HTTP/1.1" 200 0
+[2025-05-21 13:56:50,053][django.server.log_message():187] [INFO] "OPTIONS /container/detail/?status__lte=2&container=21 HTTP/1.1" 200 0
+[2025-05-21 13:56:50,176][django.server.log_message():187] [INFO] "GET /container/operate/?status=1&container=21 HTTP/1.1" 200 2222
+[2025-05-21 13:56:50,219][django.server.log_message():187] [INFO] "GET /container/detail/?status__lte=2&container=21 HTTP/1.1" 200 9862
+[2025-05-21 13:56:55,216][django.server.log_message():187] [INFO] "OPTIONS /bin/?layer=1&warehouse_code=W01&max_page=1000&shelf_name=A%E5%8C%BA%E8%B4%A7%E6%9E%B6 HTTP/1.1" 200 0
+[2025-05-21 13:56:55,845][django.server.log_message():187] [INFO] "GET /bin/?layer=1&warehouse_code=W01&max_page=1000&shelf_name=A%E5%8C%BA%E8%B4%A7%E6%9E%B6 HTTP/1.1" 200 185921
+[2025-05-21 13:56:57,619][django.server.log_message():187] [INFO] "OPTIONS /bin/697/ HTTP/1.1" 200 0
+[2025-05-21 13:56:57,621][django.server.log_message():187] [INFO] "OPTIONS /bin/697/ HTTP/1.1" 200 0
+[2025-05-21 13:56:57,656][django.server.log_message():187] [INFO] "GET /bin/697/ HTTP/1.1" 200 570
+[2025-05-21 13:56:57,663][django.server.log_message():187] [INFO] "OPTIONS /container/detail/?container=29 HTTP/1.1" 200 0
+[2025-05-21 13:56:57,737][django.server.log_message():187] [INFO] "GET /bin/697/ HTTP/1.1" 200 570
+[2025-05-21 13:56:57,782][django.server.log_message():187] [INFO] "GET /container/detail/?container=29 HTTP/1.1" 200 11021
+[2025-05-21 13:56:57,862][django.server.log_message():187] [INFO] "GET /container/detail/?container=29 HTTP/1.1" 200 11021
+[2025-05-21 13:58:58,867][django.server.log_message():187] [INFO] "GET /bin/697/ HTTP/1.1" 200 570
+[2025-05-21 13:58:58,940][django.server.log_message():187] [INFO] "GET /container/detail/?container=29 HTTP/1.1" 200 11021
+[2025-05-21 14:00:18,253][django.server.log_message():187] [INFO] "OPTIONS /bin/706/ HTTP/1.1" 200 0
+[2025-05-21 14:00:18,294][django.server.log_message():187] [INFO] "GET /bin/706/ HTTP/1.1" 200 398
+[2025-05-21 14:00:41,396][django.server.log_message():187] [INFO] "GET /bin/706/ HTTP/1.1" 200 398
+[2025-05-21 14:00:43,981][django.server.log_message():187] [INFO] "OPTIONS /bin/691/ HTTP/1.1" 200 0
+[2025-05-21 14:00:44,019][django.server.log_message():187] [INFO] "GET /bin/691/ HTTP/1.1" 200 570
+[2025-05-21 14:00:44,024][django.server.log_message():187] [INFO] "OPTIONS /container/locationdetail/?container=24 HTTP/1.1" 200 0
+[2025-05-21 14:01:04,605][django.server.log_message():187] [INFO] "OPTIONS /bound/list/?page=1&base_type=0&page_size=11 HTTP/1.1" 200 0
+[2025-05-21 14:01:04,608][django.server.log_message():187] [INFO] "OPTIONS /warehouse/boundcodetype/ HTTP/1.1" 200 0
+[2025-05-21 14:01:04,614][django.server.log_message():187] [INFO] "OPTIONS /warehouse/boundtype/ HTTP/1.1" 200 0
+[2025-05-21 14:01:04,618][django.server.log_message():187] [INFO] "OPTIONS /warehouse/department/?max_page=1000 HTTP/1.1" 200 0
+[2025-05-21 14:01:04,621][django.server.log_message():187] [INFO] "OPTIONS /warehouse/boundbusiness/ HTTP/1.1" 200 0
+[2025-05-21 14:01:04,623][django.server.log_message():187] [INFO] "OPTIONS /warehouse/status/ HTTP/1.1" 200 0
+[2025-05-21 14:01:04,992][django.server.log_message():187] [INFO] "GET /warehouse/boundcodetype/ HTTP/1.1" 200 250
+[2025-05-21 14:01:05,011][django.server.log_message():187] [INFO] "GET /warehouse/boundtype/ HTTP/1.1" 200 233
+[2025-05-21 14:01:05,043][django.server.log_message():187] [INFO] "GET /warehouse/boundbusiness/ HTTP/1.1" 200 229
+[2025-05-21 14:01:05,172][django.server.log_message():187] [INFO] "GET /warehouse/department/?max_page=1000 HTTP/1.1" 200 9376
+[2025-05-21 14:01:05,183][django.server.log_message():187] [INFO] "GET /warehouse/status/ HTTP/1.1" 200 600
+[2025-05-21 14:01:10,618][django.server.log_message():187] [INFO] "GET /container/locationdetail/?container=24 HTTP/1.1" 200 304
+[2025-05-21 14:01:10,686][django.server.log_message():187] [INFO] "GET /bound/list/?page=1&base_type=0&page_size=11 HTTP/1.1" 200 1254
+[2025-05-21 14:02:12,014][django.server.log_message():187] [INFO] "OPTIONS /bound/list/4/ HTTP/1.1" 200 0
+[2025-05-21 14:02:12,066][django.server.log_message():187] [INFO] "PUT /bound/list/4/ HTTP/1.1" 200 476
+[2025-05-21 14:02:12,148][django.server.log_message():187] [INFO] "GET /bound/list/?page=1&base_type=0&page_size=11 HTTP/1.1" 200 1254
+[2025-05-21 14:02:43,808][django.server.log_message():187] [INFO] "OPTIONS /bound/detail/?max_page=1000&bound_list=4 HTTP/1.1" 200 0
+[2025-05-21 14:02:43,874][django.server.log_message():187] [INFO] "GET /bound/list/4/ HTTP/1.1" 200 400
+[2025-05-21 14:02:43,920][django.server.log_message():187] [INFO] "GET /bound/detail/?max_page=1000&bound_list=4 HTTP/1.1" 200 1194
+[2025-05-21 14:05:38,022][django.server.log_message():187] [INFO] "GET /bound/list/4/ HTTP/1.1" 200 400
+[2025-05-21 14:05:38,022][django.server.log_message():187] [INFO] "GET /bound/detail/?max_page=1000&bound_list=4 HTTP/1.1" 200 1194
+[2025-05-21 14:07:36,089][django.server.log_message():187] [INFO] "GET /bound/list/4/ HTTP/1.1" 200 400
+[2025-05-21 14:07:36,137][django.server.log_message():187] [INFO] "GET /bound/detail/?max_page=1000&bound_list=4 HTTP/1.1" 200 1194
+[2025-05-21 19:24:37,872][django.request.log_response():241] [WARNING] Not Found: /NaN/
+[2025-05-21 19:50:14,749][django.request.log_response():241] [WARNING] Not Found: /stock/list/
+[2025-05-21 20:07:12,162][django.request.log_response():241] [ERROR] Internal Server Error: /container/locationdetail/
+[2025-05-21 20:07:41,457][django.request.log_response():241] [ERROR] Internal Server Error: /container/locationdetail/
+[2025-05-21 20:11:58,016][django.request.log_response():241] [ERROR] Internal Server Error: /container/locationdetail/
+[2025-05-21 20:13:22,096][django.request.log_response():241] [ERROR] Internal Server Error: /container/locationdetail/
+[2025-05-21 20:14:30,824][django.request.log_response():241] [ERROR] Internal Server Error: /container/locationdetail/
+[2025-05-21 20:18:06,373][django.request.log_response():241] [ERROR] Internal Server Error: /container/locationdetail/
+[2025-05-21 20:18:19,546][django.request.log_response():241] [ERROR] Internal Server Error: /container/locationdetail/
+[2025-05-21 20:18:21,608][django.request.log_response():241] [ERROR] Internal Server Error: /container/locationdetail/
+[2025-05-21 20:18:31,686][django.request.log_response():241] [ERROR] Internal Server Error: /container/locationdetail/
+[2025-05-21 20:18:36,202][django.request.log_response():241] [ERROR] Internal Server Error: /container/locationdetail/
+[2025-05-21 20:18:38,609][django.request.log_response():241] [ERROR] Internal Server Error: /container/locationdetail/
+[2025-05-21 20:18:40,962][django.request.log_response():241] [ERROR] Internal Server Error: /container/locationdetail/
+[2025-05-21 20:18:44,835][django.request.log_response():241] [ERROR] Internal Server Error: /container/locationdetail/
+[2025-05-21 20:21:11,701][django.request.log_response():241] [ERROR] Internal Server Error: /container/locationdetail/
+[2025-05-21 20:21:52,863][django.request.log_response():241] [ERROR] Internal Server Error: /container/locationdetail/
+[2025-05-21 20:22:06,265][django.request.log_response():241] [ERROR] Internal Server Error: /container/locationdetail/
+[2025-05-21 20:23:05,166][django.request.log_response():241] [ERROR] Internal Server Error: /container/locationdetail/
+[2025-05-21 20:24:19,711][django.request.log_response():241] [ERROR] Internal Server Error: /container/locationdetail/
+[2025-05-21 20:24:54,468][django.request.log_response():241] [ERROR] Internal Server Error: /container/locationdetail/
+[2025-05-21 20:25:30,785][django.request.log_response():241] [WARNING] Not Found: /container/locationdetail/
+[2025-05-21 20:26:33,704][django.request.log_response():241] [WARNING] Not Found: /container/locationdetail/
+[2025-05-21 20:33:59,486][django.request.log_response():241] [ERROR] Internal Server Error: /container/locationdetail/
+[2025-05-21 20:43:48,481][django.request.log_response():241] [ERROR] Internal Server Error: /container/containerdetail/
+Traceback (most recent call last):
+  File "D:\Document\code\vue\greater_wms\.venv\lib\site-packages\asgiref\sync.py", line 472, in thread_handler
+    raise exc_info[1]
+  File "D:\Document\code\vue\greater_wms\.venv\lib\site-packages\django\core\handlers\exception.py", line 42, in inner
+    response = await get_response(request)
+  File "D:\Document\code\vue\greater_wms\.venv\lib\site-packages\django\core\handlers\base.py", line 253, in _get_response_async
+    response = await wrapped_callback(
+  File "D:\Document\code\vue\greater_wms\.venv\lib\site-packages\asgiref\sync.py", line 435, in __call__
+    ret = await asyncio.wait_for(future, timeout=None)
+  File "D:\language\python38\lib\asyncio\tasks.py", line 455, in wait_for
+    return await fut
+  File "D:\language\python38\lib\concurrent\futures\thread.py", line 57, in run
+    result = self.fn(*self.args, **self.kwargs)
+  File "D:\Document\code\vue\greater_wms\.venv\lib\site-packages\asgiref\sync.py", line 476, in thread_handler
+    return func(*args, **kwargs)
+  File "D:\Document\code\vue\greater_wms\.venv\lib\site-packages\django\views\decorators\csrf.py", line 54, in wrapped_view
+    return view_func(*args, **kwargs)
+  File "D:\Document\code\vue\greater_wms\.venv\lib\site-packages\rest_framework\viewsets.py", line 117, in view
+    handler = getattr(self, action)
+AttributeError: 'ContainerDetailViewSet' object has no attribute 'containerdetail_list'
+[2025-05-21 21:09:08,410][django.request.log_response():241] [WARNING] Not Found: /undefined
+[2025-05-21 22:19:17,158][django.request.log_response():241] [WARNING] Not Found: /undefined
+[2025-05-21 22:41:00,254][django.request.log_response():241] [WARNING] Not Found: /container/update/561/
+[2025-05-21 22:47:57,511][django.request.log_response():241] [WARNING] Not Found: /undefined
+[2025-05-21 22:47:57,519][django.request.log_response():241] [WARNING] Not Found: /undefined
+[2025-05-21 22:47:59,271][django.request.log_response():241] [WARNING] Not Found: /undefined
+[2025-05-21 22:47:59,279][django.request.log_response():241] [WARNING] Not Found: /undefined
+[2025-05-21 22:48:00,413][django.request.log_response():241] [WARNING] Not Found: /undefined
+[2025-05-21 22:48:00,420][django.request.log_response():241] [WARNING] Not Found: /undefined
+[2025-05-22 00:01:27,178][django.server.log_message():187] [INFO] "POST /container/detail/ HTTP/1.1" 200 192
+[2025-05-22 00:01:53,679][django.server.log_message():187] [INFO] "POST /container/detail/ HTTP/1.1" 200 192
+[2025-05-22 00:02:16,734][django.server.log_message():187] [INFO] "POST /container/detail/ HTTP/1.1" 200 194
+[2025-05-22 00:02:25,704][django.server.log_message():187] [INFO] "OPTIONS /bound/list/4/ HTTP/1.1" 200 0
+[2025-05-22 00:02:25,710][django.server.log_message():187] [INFO] "OPTIONS /bound/detail/?max_page=1000&bound_list=4 HTTP/1.1" 200 0
+[2025-05-22 00:02:25,777][django.server.log_message():187] [INFO] "GET /bound/list/4/ HTTP/1.1" 200 403
+[2025-05-22 00:02:25,825][django.server.log_message():187] [INFO] "GET /bound/detail/?max_page=1000&bound_list=4 HTTP/1.1" 200 2360
+[2025-05-22 00:02:29,133][django.server.log_message():187] [INFO] "OPTIONS /bound/batch/?page=1&page_size=11 HTTP/1.1" 200 0
+[2025-05-22 00:02:29,313][django.server.log_message():187] [INFO] "GET /bound/batch/?page=1&page_size=11 HTTP/1.1" 200 6541
+[2025-05-22 00:02:32,046][django.server.log_message():187] [INFO] "OPTIONS /bound/batch/container/ HTTP/1.1" 200 0
+[2025-05-22 00:02:32,208][django.server.log_message():187] [INFO] "POST /bound/batch/container/ HTTP/1.1" 200 177
+[2025-05-22 00:02:34,759][django.server.log_message():187] [INFO] "OPTIONS /container/containerdetail/?container=39 HTTP/1.1" 200 0
+[2025-05-22 00:02:34,759][django.server.log_message():187] [INFO] "OPTIONS /container/locationdetail/?container=39 HTTP/1.1" 200 0
+[2025-05-22 00:02:35,091][django.server.log_message():187] [INFO] "GET /container/locationdetail/?container=39 HTTP/1.1" 200 728
+[2025-05-22 00:02:35,525][django.server.log_message():187] [INFO] "GET /container/containerdetail/?container=39 HTTP/1.1" 200 300905
+[2025-05-22 00:06:50,286][django.server.log_message():187] [INFO] "OPTIONS /container/detail/1562/ HTTP/1.1" 200 0
+[2025-05-22 00:06:50,402][django.server.log_message():187] [INFO] "PUT /container/detail/1562/ HTTP/1.1" 200 279
+[2025-05-22 00:06:50,404][django.server.log_message():187] [INFO] "OPTIONS /container/containerdetail/?container=39 HTTP/1.1" 200 0
+[2025-05-22 00:06:50,911][django.server.log_message():187] [INFO] "GET /container/containerdetail/?container=39 HTTP/1.1" 200 300905
+[2025-05-22 00:08:59,621][django.request.log_response():241] [ERROR] Internal Server Error: /container/detail/1562/
+Traceback (most recent call last):
+  File "d:\Document\code\vue\greater_wms\.venv\lib\site-packages\django\core\handlers\exception.py", line 55, in inner
+    response = get_response(request)
+  File "d:\Document\code\vue\greater_wms\.venv\lib\site-packages\django\core\handlers\base.py", line 197, in _get_response
+    response = wrapped_callback(request, *callback_args, **callback_kwargs)
+  File "d:\Document\code\vue\greater_wms\.venv\lib\site-packages\django\views\decorators\csrf.py", line 54, in wrapped_view
+    return view_func(*args, **kwargs)
+  File "d:\Document\code\vue\greater_wms\.venv\lib\site-packages\rest_framework\viewsets.py", line 125, in view
+    return self.dispatch(request, *args, **kwargs)
+  File "d:\Document\code\vue\greater_wms\.venv\lib\site-packages\rest_framework\views.py", line 509, in dispatch
+    response = self.handle_exception(exc)
+  File "d:\Document\code\vue\greater_wms\.venv\lib\site-packages\rest_framework\views.py", line 469, in handle_exception
+    self.raise_uncaught_exception(exc)
+  File "d:\Document\code\vue\greater_wms\.venv\lib\site-packages\rest_framework\views.py", line 480, in raise_uncaught_exception
+    raise exc
+  File "d:\Document\code\vue\greater_wms\.venv\lib\site-packages\rest_framework\views.py", line 506, in dispatch
+    response = handler(request, *args, **kwargs)
+  File "D:\Document\code\vue\greater_wms\container\views.py", line 916, in destroy
+    return Response(serializer.data, status=200, headers=headers)
+NameError: name 'serializer' is not defined
+[2025-05-22 00:08:59,623][django.server.log_message():187] [ERROR] "DELETE /container/detail/1562/ HTTP/1.1" 500 110491
+[2025-05-22 00:09:53,429][django.server.log_message():187] [INFO] "DELETE /container/detail/1562/ HTTP/1.1" 200 43
+[2025-05-22 00:10:12,684][django.server.log_message():187] [INFO] "GET /bound/batch/?page=1&page_size=11 HTTP/1.1" 200 6541
+[2025-05-22 00:11:19,941][django.server.log_message():187] [INFO] "POST /bound/batch/container/ HTTP/1.1" 200 177
+[2025-05-22 00:11:22,583][django.server.log_message():187] [INFO] "GET /container/locationdetail/?container=39 HTTP/1.1" 200 1019
+[2025-05-22 00:11:22,750][django.server.log_message():187] [INFO] "GET /container/containerdetail/?container=39 HTTP/1.1" 200 300904
+[2025-05-22 00:11:56,685][django.server.log_message():187] [INFO] "GET /warehouse/multiple/?max_page=30 HTTP/1.1" 200 371
+[2025-05-22 00:11:56,713][django.server.log_message():187] [INFO] "GET /staff/?staff_name=PDA2 HTTP/1.1" 200 286
+[2025-05-22 00:12:01,081][django.server.log_message():187] [INFO] "GET /bound/list/?page=1&base_type=0&page_size=11 HTTP/1.1" 200 1257
+[2025-05-22 00:12:01,113][django.server.log_message():187] [INFO] "GET /warehouse/boundcodetype/ HTTP/1.1" 200 250
+[2025-05-22 00:12:01,237][django.server.log_message():187] [INFO] "GET /warehouse/boundtype/ HTTP/1.1" 200 233
+[2025-05-22 00:12:01,338][django.server.log_message():187] [INFO] "GET /warehouse/department/?max_page=1000 HTTP/1.1" 200 9376
+[2025-05-22 00:12:01,343][django.server.log_message():187] [INFO] "GET /warehouse/boundbusiness/ HTTP/1.1" 200 229
+[2025-05-22 00:12:01,380][django.server.log_message():187] [INFO] "GET /warehouse/status/ HTTP/1.1" 200 600
+[2025-05-22 00:12:04,782][django.server.log_message():187] [INFO] "GET /bound/batch/?page=1&page_size=11 HTTP/1.1" 200 6541
+[2025-05-22 00:12:05,780][django.server.log_message():187] [INFO] "POST /bound/batch/container/ HTTP/1.1" 200 177
+[2025-05-22 00:12:07,208][django.server.log_message():187] [INFO] "GET /container/containerdetail/?container=39 HTTP/1.1" 200 300904
+[2025-05-22 00:12:07,440][django.server.log_message():187] [INFO] "GET /container/locationdetail/?container=39 HTTP/1.1" 200 1019
+[2025-05-22 00:13:05,749][django.server.log_message():187] [INFO] "OPTIONS /bound/batch/container/ HTTP/1.1" 200 0
+[2025-05-22 00:13:05,903][django.server.log_message():187] [INFO] "POST /bound/batch/container/ HTTP/1.1" 200 177
+[2025-05-22 00:13:10,492][django.server.log_message():187] [INFO] "OPTIONS /container/containerdetail/?container=39 HTTP/1.1" 200 0
+[2025-05-22 00:13:10,492][django.server.log_message():187] [INFO] "OPTIONS /container/locationdetail/?container=39 HTTP/1.1" 200 0
+[2025-05-22 00:13:10,842][django.server.log_message():187] [INFO] "GET /container/locationdetail/?container=39 HTTP/1.1" 200 1019
+[2025-05-22 00:13:11,303][django.server.log_message():187] [INFO] "GET /container/containerdetail/?container=39 HTTP/1.1" 200 300904
+[2025-05-22 00:22:04,507][django.server.log_message():187] [INFO] "OPTIONS /container/locationdetail/?container=39 HTTP/1.1" 200 0
+[2025-05-22 00:22:04,512][django.server.log_message():187] [INFO] "OPTIONS /container/containerdetail/?container=39 HTTP/1.1" 200 0
+[2025-05-22 00:22:04,707][django.server.log_message():187] [INFO] "GET /container/containerdetail/?container=39 HTTP/1.1" 200 300604
+[2025-05-22 00:22:04,781][django.server.log_message():187] [INFO] "GET /container/locationdetail/?container=39 HTTP/1.1" 200 727
+[2025-05-22 00:23:07,760][django.server.log_message():187] [INFO] "OPTIONS /container/containerdetail/?container=39 HTTP/1.1" 200 0
+[2025-05-22 00:23:07,761][django.server.log_message():187] [INFO] "OPTIONS /container/locationdetail/?container=39 HTTP/1.1" 200 0
+[2025-05-22 00:23:07,958][django.server.log_message():187] [INFO] "GET /container/containerdetail/?container=39 HTTP/1.1" 200 300604
+[2025-05-22 00:23:08,027][django.server.log_message():187] [INFO] "GET /container/locationdetail/?container=39 HTTP/1.1" 200 727
+[2025-05-22 00:23:14,688][django.server.log_message():187] [INFO] "OPTIONS /container/locationdetail/?container=39 HTTP/1.1" 200 0
+[2025-05-22 00:23:14,689][django.server.log_message():187] [INFO] "OPTIONS /container/containerdetail/?container=39 HTTP/1.1" 200 0
+[2025-05-22 00:23:14,808][django.server.log_message():187] [INFO] "GET /container/locationdetail/?container=39 HTTP/1.1" 200 727
+[2025-05-22 00:23:14,954][django.server.log_message():187] [INFO] "GET /container/containerdetail/?container=39 HTTP/1.1" 200 300604
+[2025-05-22 00:23:22,756][django.server.log_message():187] [INFO] "OPTIONS /container/locationdetail/?container=39 HTTP/1.1" 200 0
+[2025-05-22 00:23:22,758][django.server.log_message():187] [INFO] "OPTIONS /container/containerdetail/?container=39 HTTP/1.1" 200 0
+[2025-05-22 00:23:22,949][django.server.log_message():187] [INFO] "GET /container/containerdetail/?container=39 HTTP/1.1" 200 300604
+[2025-05-22 00:23:23,017][django.server.log_message():187] [INFO] "GET /container/locationdetail/?container=39 HTTP/1.1" 200 727
+[2025-05-22 00:23:52,848][django.server.log_message():187] [INFO] "OPTIONS /container/locationdetail/?container=39 HTTP/1.1" 200 0
+[2025-05-22 00:23:52,849][django.server.log_message():187] [INFO] "OPTIONS /container/containerdetail/?container=39 HTTP/1.1" 200 0
+[2025-05-22 00:23:53,040][django.server.log_message():187] [INFO] "GET /container/containerdetail/?container=39 HTTP/1.1" 200 300604
+[2025-05-22 00:23:53,103][django.server.log_message():187] [INFO] "GET /container/locationdetail/?container=39 HTTP/1.1" 200 727
+[2025-05-22 00:23:59,609][django.server.log_message():187] [INFO] "OPTIONS /container/locationdetail/?container=39 HTTP/1.1" 200 0
+[2025-05-22 00:23:59,619][django.server.log_message():187] [INFO] "OPTIONS /container/containerdetail/?container=39 HTTP/1.1" 200 0
+[2025-05-22 00:23:59,903][django.server.log_message():187] [INFO] "GET /container/containerdetail/?container=39 HTTP/1.1" 200 300604
+[2025-05-22 00:23:59,971][django.server.log_message():187] [INFO] "GET /container/locationdetail/?container=39 HTTP/1.1" 200 727
+[2025-05-22 00:24:06,230][django.server.log_message():187] [INFO] "OPTIONS /container/containerdetail/?container=39 HTTP/1.1" 200 0
+[2025-05-22 00:24:06,231][django.server.log_message():187] [INFO] "OPTIONS /container/locationdetail/?container=39 HTTP/1.1" 200 0
+[2025-05-22 00:24:06,369][django.server.log_message():187] [INFO] "GET /container/locationdetail/?container=39 HTTP/1.1" 200 727
+[2025-05-22 00:24:06,517][django.server.log_message():187] [INFO] "GET /container/containerdetail/?container=39 HTTP/1.1" 200 300604
+[2025-05-22 00:24:17,961][django.server.log_message():187] [INFO] "OPTIONS /container/detail/1561/ HTTP/1.1" 200 0
+[2025-05-22 00:24:18,154][django.server.log_message():187] [INFO] "DELETE /container/detail/1561/ HTTP/1.1" 200 49
+[2025-05-22 00:24:18,165][django.server.log_message():187] [INFO] "OPTIONS /container/containerdetail/?container=39 HTTP/1.1" 200 0
+[2025-05-22 00:24:18,658][django.server.log_message():187] [INFO] "GET /container/containerdetail/?container=39 HTTP/1.1" 200 300303
+[2025-05-22 00:24:20,202][django.server.log_message():187] [INFO] "OPTIONS /container/detail/1560/ HTTP/1.1" 200 0
+[2025-05-22 00:24:20,366][django.server.log_message():187] [INFO] "DELETE /container/detail/1560/ HTTP/1.1" 200 49
+[2025-05-22 00:24:20,373][django.server.log_message():187] [INFO] "OPTIONS /container/containerdetail/?container=39 HTTP/1.1" 200 0
+[2025-05-22 00:24:20,896][django.server.log_message():187] [INFO] "GET /container/containerdetail/?container=39 HTTP/1.1" 200 300002
+[2025-05-22 00:24:22,383][django.server.log_message():187] [INFO] "OPTIONS /container/detail/1559/ HTTP/1.1" 200 0
+[2025-05-22 00:24:22,558][django.server.log_message():187] [INFO] "DELETE /container/detail/1559/ HTTP/1.1" 200 49
+[2025-05-22 00:24:22,570][django.server.log_message():187] [INFO] "OPTIONS /container/containerdetail/?container=39 HTTP/1.1" 200 0
+[2025-05-22 00:24:23,084][django.server.log_message():187] [INFO] "GET /container/containerdetail/?container=39 HTTP/1.1" 200 299701
+[2025-05-22 00:24:24,653][django.server.log_message():187] [INFO] "OPTIONS /container/detail/1558/ HTTP/1.1" 200 0
+[2025-05-22 00:24:24,794][django.server.log_message():187] [INFO] "DELETE /container/detail/1558/ HTTP/1.1" 200 49
+[2025-05-22 00:24:24,803][django.server.log_message():187] [INFO] "OPTIONS /container/containerdetail/?container=39 HTTP/1.1" 200 0
+[2025-05-22 00:24:25,362][django.server.log_message():187] [INFO] "GET /container/containerdetail/?container=39 HTTP/1.1" 200 299400
+[2025-05-22 00:24:26,663][django.server.log_message():187] [INFO] "OPTIONS /container/detail/1558/ HTTP/1.1" 200 0
+[2025-05-22 00:24:26,768][django.server.log_message():187] [INFO] "DELETE /container/detail/1558/ HTTP/1.1" 200 43
+[2025-05-22 00:24:26,825][django.server.log_message():187] [INFO] "OPTIONS /container/containerdetail/?container=39 HTTP/1.1" 200 0
+[2025-05-22 00:24:27,268][django.server.log_message():187] [INFO] "GET /container/containerdetail/?container=39 HTTP/1.1" 200 299400
+[2025-05-22 00:24:29,650][django.server.log_message():187] [INFO] "OPTIONS /container/detail/1557/ HTTP/1.1" 200 0
+[2025-05-22 00:24:29,818][django.server.log_message():187] [INFO] "DELETE /container/detail/1557/ HTTP/1.1" 200 49
+[2025-05-22 00:24:29,830][django.server.log_message():187] [INFO] "OPTIONS /container/containerdetail/?container=39 HTTP/1.1" 200 0
+[2025-05-22 00:24:30,381][django.server.log_message():187] [INFO] "GET /container/containerdetail/?container=39 HTTP/1.1" 200 299099
+[2025-05-22 00:24:49,743][django.server.log_message():187] [INFO] "OPTIONS /container/detail/562/ HTTP/1.1" 200 0
+[2025-05-22 00:24:49,882][django.server.log_message():187] [INFO] "DELETE /container/detail/562/ HTTP/1.1" 200 49
+[2025-05-22 00:24:49,888][django.server.log_message():187] [INFO] "OPTIONS /container/containerdetail/?container=39 HTTP/1.1" 200 0
+[2025-05-22 00:24:50,511][django.server.log_message():187] [INFO] "GET /container/containerdetail/?container=39 HTTP/1.1" 200 298798
+[2025-05-22 00:24:53,590][django.server.log_message():187] [INFO] "OPTIONS /container/detail/563/ HTTP/1.1" 200 0
+[2025-05-22 00:24:53,774][django.server.log_message():187] [INFO] "DELETE /container/detail/563/ HTTP/1.1" 200 49
+[2025-05-22 00:24:53,781][django.server.log_message():187] [INFO] "OPTIONS /container/containerdetail/?container=39 HTTP/1.1" 200 0
+[2025-05-22 00:24:54,233][django.server.log_message():187] [INFO] "GET /container/containerdetail/?container=39 HTTP/1.1" 200 298498
+[2025-05-22 00:24:55,883][django.server.log_message():187] [INFO] "OPTIONS /container/detail/564/ HTTP/1.1" 200 0
+[2025-05-22 00:24:56,036][django.server.log_message():187] [INFO] "DELETE /container/detail/564/ HTTP/1.1" 200 49
+[2025-05-22 00:24:56,047][django.server.log_message():187] [INFO] "OPTIONS /container/containerdetail/?container=39 HTTP/1.1" 200 0
+[2025-05-22 00:24:56,522][django.server.log_message():187] [INFO] "GET /container/containerdetail/?container=39 HTTP/1.1" 200 298198
+[2025-05-22 00:24:58,045][django.server.log_message():187] [INFO] "OPTIONS /container/detail/567/ HTTP/1.1" 200 0
+[2025-05-22 00:24:58,258][django.server.log_message():187] [INFO] "DELETE /container/detail/567/ HTTP/1.1" 200 49
+[2025-05-22 00:24:58,269][django.server.log_message():187] [INFO] "OPTIONS /container/containerdetail/?container=39 HTTP/1.1" 200 0
+[2025-05-22 00:24:58,913][django.server.log_message():187] [INFO] "GET /container/containerdetail/?container=39 HTTP/1.1" 200 297898
+[2025-05-22 00:25:01,822][django.server.log_message():187] [INFO] "OPTIONS /bound/batch/?page=1&page_size=11 HTTP/1.1" 200 0
+[2025-05-22 00:25:02,047][django.server.log_message():187] [INFO] "GET /bound/batch/?page=1&page_size=11 HTTP/1.1" 200 6538
+[2025-05-22 00:25:13,113][django.server.log_message():187] [INFO] "OPTIONS /bound/batch/container/ HTTP/1.1" 200 0
+[2025-05-22 00:25:13,323][django.server.log_message():187] [INFO] "POST /bound/batch/container/ HTTP/1.1" 200 176
+[2025-05-22 00:25:15,714][django.server.log_message():187] [INFO] "OPTIONS /container/containerdetail/?container=39 HTTP/1.1" 200 0
+[2025-05-22 00:25:15,716][django.server.log_message():187] [INFO] "OPTIONS /container/locationdetail/?container=39 HTTP/1.1" 200 0
+[2025-05-22 00:25:15,937][django.server.log_message():187] [INFO] "GET /container/locationdetail/?container=39 HTTP/1.1" 200 430
+[2025-05-22 00:25:16,403][django.server.log_message():187] [INFO] "GET /container/containerdetail/?container=39 HTTP/1.1" 200 297898
+[2025-05-22 00:25:20,782][django.server.log_message():187] [INFO] "OPTIONS /container/detail/1556/ HTTP/1.1" 200 0
+[2025-05-22 00:25:20,948][django.server.log_message():187] [INFO] "DELETE /container/detail/1556/ HTTP/1.1" 200 49
+[2025-05-22 00:25:20,998][django.server.log_message():187] [INFO] "OPTIONS /container/containerdetail/?container=39 HTTP/1.1" 200 0
+[2025-05-22 00:25:21,506][django.server.log_message():187] [INFO] "GET /container/containerdetail/?container=39 HTTP/1.1" 200 297597
+[2025-05-22 00:25:22,964][django.server.log_message():187] [INFO] "OPTIONS /container/detail/1555/ HTTP/1.1" 200 0
+[2025-05-22 00:25:23,123][django.server.log_message():187] [INFO] "DELETE /container/detail/1555/ HTTP/1.1" 200 49
+[2025-05-22 00:25:23,140][django.server.log_message():187] [INFO] "OPTIONS /container/containerdetail/?container=39 HTTP/1.1" 200 0
+[2025-05-22 00:25:23,672][django.server.log_message():187] [INFO] "GET /container/containerdetail/?container=39 HTTP/1.1" 200 297296

templates/dist/spa/css/8.296f042c.css → templates/dist/spa/css/10.296f042c.css


Fichier diff supprimé car celui-ci est trop grand
+ 0 - 1
templates/dist/spa/css/11.37d7165f.css


templates/dist/spa/css/9.74deb849.css → templates/dist/spa/css/11.74deb849.css


templates/dist/spa/css/10.601677c3.css → templates/dist/spa/css/12.601677c3.css


+ 0 - 1
templates/dist/spa/css/13.00a78ca4.css

@@ -1 +0,0 @@
-.q-date__calendar-item--selected[data-v-2c7b2e73]{transition:all 0.3s ease;background-color:#1976d2!important}.q-date__range[data-v-2c7b2e73]{background-color:rgba(25,118,210,0.1)}

Fichier diff supprimé car celui-ci est trop grand
+ 1 - 0
templates/dist/spa/css/13.80a6b71a.css


+ 0 - 1
templates/dist/spa/css/14.6372214f.css

@@ -1 +0,0 @@
-.q-date__calendar-item--selected[data-v-5f46c164]{transition:all 0.3s ease;background-color:#1976d2!important}.q-date__range[data-v-5f46c164]{background-color:rgba(25,118,210,0.1)}[data-v-5f46c164] .q-field__label{margin-top:8px;align-self:center}[data-v-5f46c164] .q-field__control-container{padding-left:50px;margin-top:-5px}

templates/dist/spa/css/12.f721cf95.css → templates/dist/spa/css/14.f721cf95.css


+ 1 - 0
templates/dist/spa/css/15.15fd4028.css

@@ -0,0 +1 @@
+.q-date__calendar-item--selected[data-v-1dede899]{transition:all 0.3s ease;background-color:#1976d2!important}.q-date__range[data-v-1dede899]{background-color:rgba(25,118,210,0.1)}.custom-title[data-v-1dede899]{font-size:0.9rem;font-weight:500}.custom-timeline[data-v-1dede899]{--q-timeline-color:#e0e0e0}.custom-node .q-timeline__dot[data-v-1dede899]{background:#485573!important;border:2px solid #5c6b8c!important}.custom-node .q-timeline__content[data-v-1dede899]{color:#485573}

+ 1 - 0
templates/dist/spa/css/16.3b82583b.css

@@ -0,0 +1 @@
+.q-date__calendar-item--selected[data-v-5bb7fc9c]{transition:all 0.3s ease;background-color:#1976d2!important}.q-date__range[data-v-5bb7fc9c]{background-color:rgba(25,118,210,0.1)}[data-v-5bb7fc9c] .q-field__label{margin-top:8px;align-self:center}[data-v-5bb7fc9c] .q-field__control-container{padding-left:50px;margin-top:-5px}.handle[data-v-5bb7fc9c]{cursor:move;padding:8px}

+ 0 - 1
templates/dist/spa/css/16.b4a1766a.css

@@ -1 +0,0 @@
-.q-date__calendar-item--selected[data-v-e74467da]{transition:all 0.3s ease;background-color:#1976d2!important}.q-date__range[data-v-e74467da]{background-color:rgba(25,118,210,0.1)}[data-v-e74467da] .q-field__label{margin-top:8px;align-self:center}[data-v-e74467da] .q-field__control-container{padding-left:50px;margin-top:-5px}

+ 1 - 0
templates/dist/spa/css/17.31ab8f86.css

@@ -0,0 +1 @@
+.q-date__calendar-item--selected[data-v-79f1d61c]{transition:all 0.3s ease;background-color:#1976d2!important}.q-date__range[data-v-79f1d61c]{background-color:rgba(25,118,210,0.1)}[data-v-79f1d61c] .q-field__label{margin-top:8px;align-self:center}[data-v-79f1d61c] .q-field__control-container{padding-left:50px;margin-top:-5px}.handle[data-v-79f1d61c]{cursor:move;padding:8px}

templates/dist/spa/css/15.0d4c4716.css → templates/dist/spa/css/18.0d4c4716.css


+ 1 - 0
templates/dist/spa/css/19.e0fd7d29.css

@@ -0,0 +1 @@
+.q-date__calendar-item--selected[data-v-21d19112]{transition:all 0.3s ease;background-color:#1976d2!important}.q-date__range[data-v-21d19112]{background-color:rgba(25,118,210,0.1)}

templates/dist/spa/css/17.8f3f6188.css → templates/dist/spa/css/20.8f3f6188.css


templates/dist/spa/css/18.8d4e7dc4.css → templates/dist/spa/css/21.8d4e7dc4.css


+ 1 - 0
templates/dist/spa/css/22.368d1e05.css

@@ -0,0 +1 @@
+.handle[data-v-248852c7]{cursor:move;padding:8px}

templates/dist/spa/css/19.e4f041cc.css → templates/dist/spa/css/23.e4f041cc.css


templates/dist/spa/css/20.7a23b7fb.css → templates/dist/spa/css/24.7a23b7fb.css


templates/dist/spa/css/21.0faa4aeb.css → templates/dist/spa/css/25.0faa4aeb.css


Fichier diff supprimé car celui-ci est trop grand
+ 0 - 1
templates/dist/spa/css/3.4420d960.css


Fichier diff supprimé car celui-ci est trop grand
+ 1 - 0
templates/dist/spa/css/3.9ebd3e18.css


Fichier diff supprimé car celui-ci est trop grand
+ 1 - 0
templates/dist/spa/css/4.cd59f5a0.css


templates/dist/spa/css/4.0ac6b60c.css → templates/dist/spa/css/5.0ac6b60c.css


+ 0 - 1
templates/dist/spa/css/6.22759db8.css

@@ -1 +0,0 @@
-.q-date__calendar-item--selected[data-v-1056e070]{transition:all 0.3s ease;background-color:#1976d2!important}.q-date__range[data-v-1056e070]{background-color:rgba(25,118,210,0.1)}

templates/dist/spa/css/5.7100e471.css → templates/dist/spa/css/6.7100e471.css


+ 1 - 0
templates/dist/spa/css/7.eb31c91a.css

@@ -0,0 +1 @@
+.q-date__calendar-item--selected[data-v-ed458f52]{transition:all 0.3s ease;background-color:#1976d2!important}.q-date__range[data-v-ed458f52]{background-color:rgba(25,118,210,0.1)}

+ 1 - 0
templates/dist/spa/css/8.f57b1220.css

@@ -0,0 +1 @@
+.q-date__calendar-item--selected[data-v-4ad253c7]{transition:all 0.3s ease;background-color:#1976d2!important}.q-date__range[data-v-4ad253c7]{background-color:rgba(25,118,210,0.1)}

templates/dist/spa/css/7.58670660.css → templates/dist/spa/css/9.58670660.css


Fichier diff supprimé car celui-ci est trop grand
+ 1 - 1
templates/dist/spa/index.html


Fichier diff supprimé car celui-ci est trop grand
+ 1 - 0
templates/dist/spa/js/10.6087e287.js


BIN
templates/dist/spa/js/10.6087e287.js.gz


BIN
templates/dist/spa/js/10.c82d315b.js.gz


Fichier diff supprimé car celui-ci est trop grand
+ 1 - 0
templates/dist/spa/js/11.794b8487.js


BIN
templates/dist/spa/js/11.794b8487.js.gz


Fichier diff supprimé car celui-ci est trop grand
+ 0 - 1
templates/dist/spa/js/11.8ed46d39.js


BIN
templates/dist/spa/js/11.8ed46d39.js.gz


Fichier diff supprimé car celui-ci est trop grand
+ 1 - 1
templates/dist/spa/js/10.c82d315b.js


BIN
templates/dist/spa/js/12.31f6681d.js.gz


Fichier diff supprimé car celui-ci est trop grand
+ 0 - 1
templates/dist/spa/js/13.9dbdcd94.js


BIN
templates/dist/spa/js/13.9dbdcd94.js.gz


Fichier diff supprimé car celui-ci est trop grand
+ 1 - 0
templates/dist/spa/js/13.b2b0f6d2.js


BIN
templates/dist/spa/js/13.b2b0f6d2.js.gz


Fichier diff supprimé car celui-ci est trop grand
+ 0 - 1
templates/dist/spa/js/14.8d6b91bd.js


BIN
templates/dist/spa/js/14.8d6b91bd.js.gz


Fichier diff supprimé car celui-ci est trop grand
+ 1 - 1
templates/dist/spa/js/12.b7b18e73.js


BIN
templates/dist/spa/js/12.b7b18e73.js.gz


Fichier diff supprimé car celui-ci est trop grand
+ 1 - 0
templates/dist/spa/js/15.9ce89ba7.js


Fichier diff supprimé car celui-ci est trop grand
+ 0 - 1
templates/dist/spa/js/16.1ff5fbd5.js


BIN
templates/dist/spa/js/16.1ff5fbd5.js.gz


Fichier diff supprimé car celui-ci est trop grand
+ 1 - 0
templates/dist/spa/js/16.4169f2ae.js


BIN
templates/dist/spa/js/16.4169f2ae.js.gz


Fichier diff supprimé car celui-ci est trop grand
+ 0 - 1
templates/dist/spa/js/17.4754b111.js


BIN
templates/dist/spa/js/17.4754b111.js.gz


Fichier diff supprimé car celui-ci est trop grand
+ 1 - 0
templates/dist/spa/js/17.a21e08f6.js


BIN
templates/dist/spa/js/17.a21e08f6.js.gz


BIN
templates/dist/spa/js/18.97f3ea3e.js.gz


Fichier diff supprimé car celui-ci est trop grand
+ 1 - 1
templates/dist/spa/js/15.c2f7cf47.js


Fichier diff supprimé car celui-ci est trop grand
+ 1 - 0
templates/dist/spa/js/19.4e7dcf8f.js


BIN
templates/dist/spa/js/19.4e7dcf8f.js.gz


Fichier diff supprimé car celui-ci est trop grand
+ 1 - 0
templates/dist/spa/js/20.cd19dfae.js


BIN
templates/dist/spa/js/20.cd19dfae.js.gz


Fichier diff supprimé car celui-ci est trop grand
+ 1 - 1
templates/dist/spa/js/18.97f3ea3e.js


BIN
templates/dist/spa/js/21.16125990.js.gz


Fichier diff supprimé car celui-ci est trop grand
+ 1 - 0
templates/dist/spa/js/22.4c4ded85.js


BIN
templates/dist/spa/js/23.68bad48f.js.gz


Fichier diff supprimé car celui-ci est trop grand
+ 1 - 1
templates/dist/spa/js/19.314dcb2d.js


Fichier diff supprimé car celui-ci est trop grand
+ 1 - 1
templates/dist/spa/js/20.a57377d9.js


BIN
templates/dist/spa/js/24.9061c7b3.js.gz


BIN
templates/dist/spa/js/25.2077fb95.js.gz


Fichier diff supprimé car celui-ci est trop grand
+ 1 - 1
templates/dist/spa/js/21.6afd79ce.js


Fichier diff supprimé car celui-ci est trop grand
+ 1 - 1
templates/dist/spa/js/22.3e6df892.js


BIN
templates/dist/spa/js/26.ec95ccdb.js.gz


Fichier diff supprimé car celui-ci est trop grand
+ 1 - 1
templates/dist/spa/js/23.68bad48f.js


BIN
templates/dist/spa/js/27.a78b214f.js.gz


BIN
templates/dist/spa/js/27.fe4232e3.js.gz


Fichier diff supprimé car celui-ci est trop grand
+ 1 - 1
templates/dist/spa/js/24.9061c7b3.js


BIN
templates/dist/spa/js/28.fcbf4b37.js.gz


Fichier diff supprimé car celui-ci est trop grand
+ 1 - 1
templates/dist/spa/js/25.2077fb95.js


BIN
templates/dist/spa/js/29.44bce511.js.gz


BIN
templates/dist/spa/js/29.68429922.js.gz


Fichier diff supprimé car celui-ci est trop grand
+ 0 - 1
templates/dist/spa/js/3.46f9d6d8.js


BIN
templates/dist/spa/js/3.46f9d6d8.js.gz


Fichier diff supprimé car celui-ci est trop grand
+ 1 - 0
templates/dist/spa/js/3.9f61a74d.js


BIN
templates/dist/spa/js/3.9f61a74d.js.gz


Fichier diff supprimé car celui-ci est trop grand
+ 1 - 1
templates/dist/spa/js/26.ec95ccdb.js


+ 0 - 0
templates/dist/spa/js/30.04ebe6fd.js.gz


Certains fichiers n'ont pas été affichés car il y a eu trop de fichiers modifiés dans ce diff