Quellcode durchsuchen

托盘码添加打印

flower_mr vor 3 Wochen
Ursprung
Commit
0d8a9e451b

BIN
bin/__pycache__/views.cpython-38.pyc


+ 1 - 0
bin/views.py

@@ -523,6 +523,7 @@ class LocationAllocation:
             batch = container_detail.batch
             batch.status = status
             batch.save()
+
             print(f"更新批次状态成功!")
             return True
         except Exception as e:       

BIN
container/__pycache__/models.cpython-38.pyc


BIN
container/__pycache__/views.cpython-38.pyc


+ 1 - 1
container/models.py

@@ -13,7 +13,7 @@ class ContainerListModel(models.Model):
         (4, '已出库')
     )
    
-    container_code = models.IntegerField( verbose_name='托盘编号')
+    container_code = models.IntegerField( verbose_name='托盘编号',unique=True)
     current_location = models.CharField(max_length=50, verbose_name='当前库位', default='N/A')
     target_location = models.CharField(max_length=50, verbose_name='目标库位', default='N/A')
     status = models.IntegerField(choices=CONTAINER_STATUS, default=0, verbose_name='托盘状态')

+ 151 - 126
container/views.py

@@ -77,17 +77,24 @@ class ContainerListViewSet(viewsets.ModelViewSet):
             return self.http_method_not_allowed(request=self.request)
 
     def create(self, request, *args, **kwargs):
-        data = self.request.data
-        order_month = str(timezone.now().strftime('%Y%m'))
-        data['month'] = order_month
-        data['last_operate'] = str(timezone.now())
-        
-        serializer = self.get_serializer(data=data)
-        serializer.is_valid(raise_exception=True)
-        serializer.save()
+        # 创建托盘:托盘码五位数字(唯一),当前库位,目标库位,状态,最后操作时间
 
+        container_all = ContainerListModel.objects.all().order_by('container_code')
+        if container_all.count() == 0:
+            container_code = 10000
+        else:
+            container_code = container_all.last().container_code + 1
+        container_obj = ContainerListModel.objects.create(
+            container_code=container_code,
+            current_location='N/A',
+            target_location='N/A',
+            status=0,
+            last_operation=timezone.now()
+        )
+        serializer = ContainerListGetSerializer(container_obj)
         headers = self.get_success_headers(serializer.data)
-        return Response(serializer.data, status=200, headers=headers)
+        return Response(serializer.data, status=201, headers=headers)
+    
     
     def update(self, request, pk):
         qs = self.get_object()
@@ -362,7 +369,24 @@ class ContainerWCSViewSet(viewsets.ModelViewSet):
                         tasktype='inbound',
                         working=1,
                     )
-                  
+                    batch_obj = BoundBatchModel.objects.filter(bound_number=batch_id).first()
+                    ContainerOperationModel.objects.create(
+                    month = int(timezone.now().strftime("%Y%m")),
+                    container = container_obj,
+                    goods_code = batch_obj.goods_code,
+                    goods_desc = batch_obj.goods_desc,
+                    operation_type ="inbound",
+                    batch_id = batch_id,
+                    
+                    goods_qty = batch_obj.goods_qty,
+                    goods_weight = batch_obj.goods_qty,
+                    from_location = container_obj.current_location,
+                    to_location= allocation_target_location,
+                    timestamp=timezone.now(),
+                    operator="WMS",
+                    memo=f"WCS入库: 批次: {batch_id}, 数量: {batch_obj.goods_qty}"
+                    )
+
                     data_return = {
                         'code': '200',
                         'message': '任务下发成功',
@@ -424,6 +448,7 @@ class ContainerWCSViewSet(viewsets.ModelViewSet):
         # 每月生成唯一递增的 taskNumber
         data_tosave['tasknumber'] = number_id
         ContainerWCSModel.objects.create(**data_tosave)
+        
 
     def update_container_wcs(self, request, *args, **kwargs):
         data = self.request.data
@@ -817,123 +842,123 @@ class ContainerDetailViewSet(viewsets.ModelViewSet):
         # 循环处理每个批次
         for batch in batches:
             bound_number = batch.get('goods_code')
-            goods_qty = batch.get('goods_qty')
-            goods_group_number = batch.get('goods_group')
-            for i in range(goods_group_number):
-            
-                # 查询商品对象
-                bound_obj = BoundBatchModel.objects.filter(bound_number=bound_number).first()
-
-                if not bound_obj:
-                    # 如果商品不存在,返回错误,这里暂时在程序中进行提醒,后续需要改为前端弹窗提醒
-                    logger.error(f"批次 {bound_number} 不存在")
-                    # 跳出此次循环
-                    continue
-                    # return Response({"error": f"商品编码 {bound_number} 不存在"}, status=400)
-                # 3. 更新批次数据(根据业务规则)
-                try:
-                    last_qty = bound_obj.goods_in_qty
-                    bound_obj.goods_in_qty += batch.get("goods_qty", 0)
-                    if bound_obj.goods_in_qty >= bound_obj.goods_qty:
-                        bound_obj.goods_in_qty = bound_obj.goods_qty
-                        bound_obj.status = 1 # 批次状态为组盘完成
-                        print('批次id',bound_obj.id) 
-                        bound_detail_obj = BoundDetailModel.objects.filter(bound_batch=bound_obj.id).first()
-                        if bound_detail_obj:
-                            bound_detail_obj.status = 1
-                            bound_detail_obj.save()
-                            print('入库申请id',bound_detail_obj.bound_list_id)
-                            # 入库申请全部批次入库完成
-                            bound_batch_all = BoundDetailModel.objects.filter(bound_list=bound_detail_obj.bound_list_id).all()
-                            if bound_batch_all.count() == bound_batch_all.filter(status=1).count():
-                                bound_list_obj = BoundListModel.objects.filter(id=bound_detail_obj.bound_list_id).first()
-                                print('当前状态',bound_list_obj.bound_status)
-                                bound_list_obj.bound_status = 102
-                                print('更新状态',bound_list_obj.bound_status)
-                                bound_list_obj.save()
-                                print('入库申请全部批次组盘完成')
-                            else:
-                                print('入库申请部分批次组盘完成')
-                    else:
-                        bound_obj.status = 0
+            goods_group_qty = batch.get('goods_qty',0)
+            goods_group_number = batch.get('goods_group',0)
+            goods_qty = goods_group_number * goods_group_qty
+
+            # 查询商品对象
+            bound_obj = BoundBatchModel.objects.filter(bound_number=bound_number).first()
+
+            if not bound_obj:
+                # 如果商品不存在,返回错误,这里暂时在程序中进行提醒,后续需要改为前端弹窗提醒
+                logger.error(f"批次 {bound_number} 不存在")
+                # 跳出此次循环
+                continue
+                # return Response({"error": f"商品编码 {bound_number} 不存在"}, status=400)
+            # 3. 更新批次数据(根据业务规则)
+            try:
+                last_qty = bound_obj.goods_in_qty
+                bound_obj.goods_in_qty += goods_qty
+                if bound_obj.goods_in_qty >= bound_obj.goods_qty:
+                    bound_obj.goods_in_qty = bound_obj.goods_qty
+                    bound_obj.status = 1 # 批次状态为组盘完成
+                    print('批次id',bound_obj.id) 
+                    bound_detail_obj = BoundDetailModel.objects.filter(bound_batch=bound_obj.id).first()
+                    if bound_detail_obj:
+                        bound_detail_obj.status = 1
+                        bound_detail_obj.save()
+                        print('入库申请id',bound_detail_obj.bound_list_id)
+                        # 入库申请全部批次入库完成
+                        bound_batch_all = BoundDetailModel.objects.filter(bound_list=bound_detail_obj.bound_list_id).all()
+                        if bound_batch_all.count() == bound_batch_all.filter(status=1).count():
+                            bound_list_obj = BoundListModel.objects.filter(id=bound_detail_obj.bound_list_id).first()
+                            print('当前状态',bound_list_obj.bound_status)
+                            bound_list_obj.bound_status = 102
+                            print('更新状态',bound_list_obj.bound_status)
+                            bound_list_obj.save()
+                            print('入库申请全部批次组盘完成')
+                        else:
+                            print('入库申请部分批次组盘完成')
+                else:
+                    bound_obj.status = 0
+                
+                bound_obj.save()  # 保存到数据库
+                # 创建托盘详情记录(每个批次独立)
+                print('新增个数',bound_obj.goods_in_qty-last_qty)
+                if bound_obj.goods_in_qty-last_qty == goods_qty:
+                    detail_data = {
+                        "container": data['container'],  # 托盘ID
+                        "batch": bound_obj.id,  # 外键关联批次
+                        "goods_code": bound_obj.goods_code,
+                        "goods_desc": bound_obj.goods_desc,
+                        "goods_qty": goods_qty,
+                        "goods_weight": bound_obj.goods_weight,
+                        "status": 1,
+                        "month": data['month'],
+                        "creater": data.get('creater', 'zl')  # 默认值兜底
+                    }
+                    serializer = self.get_serializer(data=detail_data)
+                    serializer.is_valid(raise_exception=True)
+                    serializer.save()  # 必须保存到数据库
+                    operate_data = {
+                        "month" : data['month'],
+                        "container": data['container'],  # 托盘ID
+                        "operation_type" : 'container',
+                        "batch" : bound_obj.id,  # 外键关联批次
+                        "goods_code": bound_obj.goods_code,
+                        "goods_desc": bound_obj.goods_desc,
+                        "goods_qty": goods_qty,
+                        "goods_weight": bound_obj.goods_weight,
+                        "operator": data.get('creater', 'zl'),  # 默认值兜底
+                        "timestamp": timezone.now(),
+                        "from_location": "container",
+                        "to_location": "container",
+                        "memo": "每组数目"+str(goods_group_qty)+"入库PDA组盘"+str(bound_obj.goods_code)+"数量"+str(goods_qty)
+                    }
+                    serializer_operate = ContainerOperationPostSerializer(data=operate_data)
+                    serializer_operate.is_valid(raise_exception=True)
+                    serializer_operate.save()  # 必须保存到数据库
+
+                elif bound_obj.goods_in_qty-last_qty > 0:
+                    print('批次数量不一致')
+                    detail_data = {
+                        "container": data['container'],  # 托盘ID
+                        "batch": bound_obj.id,  # 外键关联批次
+                        "goods_code": bound_obj.goods_code,
+                        "goods_desc": bound_obj.goods_desc,
+                        "goods_qty": bound_obj.goods_in_qty-last_qty,
+                        "goods_weight": bound_obj.goods_weight,
+                        "status": 1,
+                        "month": data['month'],
+                        "creater": data.get('creater', 'zl')  # 默认值兜底
+                    }
+                    serializer = self.get_serializer(data=detail_data)
+                    serializer.is_valid(raise_exception=True)
+                    serializer.save()  # 必须保存到数据库
+                    operate_data = {
+                        "month" : data['month'],
+                        "container": data['container'],  # 托盘ID
+                        "operation_type" : 'container',
+                        "batch" : bound_obj.id,  # 外键关联批次
+                        "goods_code": bound_obj.goods_code,
+                        "goods_desc": bound_obj.goods_desc,
+                        "goods_qty": bound_obj.goods_in_qty-last_qty,
+                        "goods_weight": bound_obj.goods_weight,
+                        "operator": data.get('creater', 'zl'),  # 默认值兜底
+                        "timestamp": timezone.now(),
+                        "from_location": "container",
+                        "to_location": "container",
+                        "memo": "每组数目"+str(goods_group_qty)+"入库PDA组盘(数量不一致)"+str(bound_obj.goods_code)+"数量"+str(goods_qty)
+                    }
+                    serializer_operate = ContainerOperationPostSerializer(data=operate_data)
+                    serializer_operate.is_valid(raise_exception=True)
+                    serializer_operate.save()  # 必须保存到数据库
+                else :
+                    print('重复组盘')
                     
-                    bound_obj.save()  # 保存到数据库
-                    # 创建托盘详情记录(每个批次独立)
-                    print('新增个数',bound_obj.goods_in_qty-last_qty)
-                    if bound_obj.goods_in_qty-last_qty == goods_qty:
-                        detail_data = {
-                            "container": data['container'],  # 托盘ID
-                            "batch": bound_obj.id,  # 外键关联批次
-                            "goods_code": bound_obj.goods_code,
-                            "goods_desc": bound_obj.goods_desc,
-                            "goods_qty": goods_qty,
-                            "goods_weight": bound_obj.goods_weight,
-                            "status": 1,
-                            "month": data['month'],
-                            "creater": data.get('creater', 'zl')  # 默认值兜底
-                        }
-                        serializer = self.get_serializer(data=detail_data)
-                        serializer.is_valid(raise_exception=True)
-                        serializer.save()  # 必须保存到数据库
-                        operate_data = {
-                            "month" : data['month'],
-                            "container": data['container'],  # 托盘ID
-                            "operation_type" : 'container',
-                            "batch" : bound_obj.id,  # 外键关联批次
-                            "goods_code": bound_obj.goods_code,
-                            "goods_desc": bound_obj.goods_desc,
-                            "goods_qty": goods_qty,
-                            "goods_weight": bound_obj.goods_weight,
-                            "operator": data.get('creater', 'zl'),  # 默认值兜底
-                            "timestamp": timezone.now(),
-                            "from_location": "container",
-                            "to_location": "container",
-                            "memo": "入库PDA组盘,pda入库"+str(bound_obj.goods_code)+"数量"+str(goods_qty)
-                        }
-                        serializer_operate = ContainerOperationPostSerializer(data=operate_data)
-                        serializer_operate.is_valid(raise_exception=True)
-                        serializer_operate.save()  # 必须保存到数据库
-
-                    elif bound_obj.goods_in_qty-last_qty > 0:
-                        print('批次数量不一致')
-                        detail_data = {
-                            "container": data['container'],  # 托盘ID
-                            "batch": bound_obj.id,  # 外键关联批次
-                            "goods_code": bound_obj.goods_code,
-                            "goods_desc": bound_obj.goods_desc,
-                            "goods_qty": bound_obj.goods_in_qty-last_qty,
-                            "goods_weight": bound_obj.goods_weight,
-                            "status": 1,
-                            "month": data['month'],
-                            "creater": data.get('creater', 'zl')  # 默认值兜底
-                        }
-                        serializer = self.get_serializer(data=detail_data)
-                        serializer.is_valid(raise_exception=True)
-                        serializer.save()  # 必须保存到数据库
-                        operate_data = {
-                            "month" : data['month'],
-                            "container": data['container'],  # 托盘ID
-                            "operation_type" : 'container',
-                            "batch" : bound_obj.id,  # 外键关联批次
-                            "goods_code": bound_obj.goods_code,
-                            "goods_desc": bound_obj.goods_desc,
-                            "goods_qty": bound_obj.goods_in_qty-last_qty,
-                            "goods_weight": bound_obj.goods_weight,
-                            "operator": data.get('creater', 'zl'),  # 默认值兜底
-                            "timestamp": timezone.now(),
-                            "from_location": "container",
-                            "to_location": "container",
-                            "memo": "入库PDA组盘,(数量不一致)pda入库"+str(bound_obj.goods_code)+"数量"+str(goods_qty)
-                        }
-                        serializer_operate = ContainerOperationPostSerializer(data=operate_data)
-                        serializer_operate.is_valid(raise_exception=True)
-                        serializer_operate.save()  # 必须保存到数据库
-                    else :
-                        print('重复组盘')
-                        
-                except Exception as e:
-                    print(f"更新批次 {bound_number} 失败: {str(e)}")
-                    continue
+            except Exception as e:
+                print(f"更新批次 {bound_number} 失败: {str(e)}")
+                continue
 
         # 将处理后的数据返回(或根据业务需求保存到数据库)
         res_data={

BIN
db.sqlite3


+ 22 - 0
logs/error.log

@@ -5225,3 +5225,25 @@ TypeError: post() missing 1 required positional argument: 'action_type'
 [2025-05-10 02:26:54,565][django.server.log_message():187] [ERROR] "POST /wms/boundBills/save/ HTTP/1.1" 500 255
 [2025-05-10 02:27:55,765][django.request.log_response():241] [ERROR] Internal Server Error: /wms/boundBills/save/
 [2025-05-10 02:27:55,767][django.server.log_message():187] [ERROR] "POST /wms/boundBills/save/ HTTP/1.1" 500 255
+[2025-05-11 22:28:53,944][django.request.log_response():241] [ERROR] Internal Server Error: /container/list/
+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 82, in create
+    container_all = ContainerListModel.objects.all().sort_by('container_code')
+AttributeError: 'QuerySet' object has no attribute 'sort_by'
+[2025-05-11 22:28:53,957][django.server.log_message():187] [ERROR] "POST /container/list/ HTTP/1.1" 500 110473

+ 515 - 0
logs/server.log

@@ -12507,3 +12507,518 @@ TypeError: post() missing 1 required positional argument: 'action_type'
 [2025-05-11 09:26:00,960][django.server.log_message():187] [INFO] "GET /wms/inboundBills/?bound_status=0 HTTP/1.1" 200 52
 [2025-05-11 16:04:55,678][django.server.log_message():187] [INFO] "POST /login/ HTTP/1.1" 200 214
 [2025-05-11 16:06:00,420][django.server.handle_error():80] [INFO] - Broken pipe from ('192.168.18.11', 35588)
+[2025-05-11 17:15:04,253][django.server.log_message():187] [INFO] "OPTIONS /staff/?staff_name=PDA1 HTTP/1.1" 200 0
+[2025-05-11 17:15:04,283][django.server.log_message():187] [INFO] "OPTIONS /warehouse/multiple/?max_page=30 HTTP/1.1" 200 0
+[2025-05-11 17:15:04,306][django.server.log_message():187] [INFO] "OPTIONS /wms/inboundBills/?bound_status=0 HTTP/1.1" 200 0
+[2025-05-11 17:15:04,312][django.server.log_message():187] [INFO] "OPTIONS /wms/outboundBills/?bound_status=0 HTTP/1.1" 200 0
+[2025-05-11 17:15:04,329][django.server.log_message():187] [INFO] "GET /warehouse/multiple/?max_page=30 HTTP/1.1" 200 371
+[2025-05-11 17:15:04,361][django.server.log_message():187] [INFO] "GET /staff/?staff_name=PDA1 HTTP/1.1" 200 286
+[2025-05-11 17:15:04,405][django.server.log_message():187] [INFO] "GET /wms/inboundBills/?bound_status=0 HTTP/1.1" 200 52
+[2025-05-11 17:15:04,443][django.server.log_message():187] [INFO] "GET /wms/outboundBills/?bound_status=0 HTTP/1.1" 200 431
+[2025-05-11 17:15:05,426][django.server.log_message():187] [INFO] "OPTIONS /warehouse/boundtype/ HTTP/1.1" 200 0
+[2025-05-11 17:15:05,427][django.server.log_message():187] [INFO] "OPTIONS /warehouse/boundcodetype/ HTTP/1.1" 200 0
+[2025-05-11 17:15:05,427][django.server.log_message():187] [INFO] "OPTIONS /wms/inboundBills/?page=1&base_type=0&page_size=11 HTTP/1.1" 200 0
+[2025-05-11 17:15:05,427][django.server.log_message():187] [INFO] "OPTIONS /warehouse/department/ HTTP/1.1" 200 0
+[2025-05-11 17:15:05,437][django.server.log_message():187] [INFO] "OPTIONS /warehouse/boundbusiness/ HTTP/1.1" 200 0
+[2025-05-11 17:15:05,541][django.server.log_message():187] [INFO] "GET /warehouse/department/ HTTP/1.1" 200 2862
+[2025-05-11 17:15:05,579][django.server.log_message():187] [INFO] "GET /warehouse/boundtype/ HTTP/1.1" 200 233
+[2025-05-11 17:15:05,588][django.server.log_message():187] [INFO] "GET /warehouse/boundcodetype/ HTTP/1.1" 200 250
+[2025-05-11 17:15:05,660][django.server.log_message():187] [INFO] "GET /wms/inboundBills/?page=1&base_type=0&page_size=11 HTTP/1.1" 200 3969
+[2025-05-11 17:15:05,665][django.server.log_message():187] [INFO] "GET /warehouse/boundbusiness/ HTTP/1.1" 200 229
+[2025-05-11 17:15:05,838][django.server.log_message():187] [INFO] "OPTIONS /bound/list/?page=1&base_type=0&page_size=11 HTTP/1.1" 200 0
+[2025-05-11 17:15:05,839][django.server.log_message():187] [INFO] "OPTIONS /warehouse/department/?max_page=1000 HTTP/1.1" 200 0
+[2025-05-11 17:15:05,854][django.server.log_message():187] [INFO] "OPTIONS /warehouse/status/ HTTP/1.1" 200 0
+[2025-05-11 17:15:05,993][django.server.log_message():187] [INFO] "GET /warehouse/boundbusiness/ HTTP/1.1" 200 229
+[2025-05-11 17:15:06,015][django.server.log_message():187] [INFO] "GET /warehouse/boundtype/ HTTP/1.1" 200 233
+[2025-05-11 17:15:06,040][django.server.log_message():187] [INFO] "GET /warehouse/status/ HTTP/1.1" 200 600
+[2025-05-11 17:15:06,096][django.server.log_message():187] [INFO] "GET /warehouse/boundcodetype/ HTTP/1.1" 200 250
+[2025-05-11 17:15:06,117][django.server.log_message():187] [INFO] "GET /warehouse/department/?max_page=1000 HTTP/1.1" 200 9377
+[2025-05-11 17:15:06,123][django.server.log_message():187] [INFO] "GET /bound/list/?page=1&base_type=0&page_size=11 HTTP/1.1" 200 4872
+[2025-05-11 17:15:09,263][django.server.log_message():187] [INFO] "OPTIONS /container/list/?page=1&page_size=11 HTTP/1.1" 200 0
+[2025-05-11 17:15:09,360][django.server.log_message():187] [INFO] "GET /container/list/?page=1&page_size=11 HTTP/1.1" 200 173
+[2025-05-11 17:15:11,721][django.server.log_message():187] [INFO] "OPTIONS /container/operate/?status=1&container=1 HTTP/1.1" 200 0
+[2025-05-11 17:15:11,721][django.server.log_message():187] [INFO] "OPTIONS /container/detail/?status__lte=2&container=1 HTTP/1.1" 200 0
+[2025-05-11 17:15:11,818][django.server.log_message():187] [INFO] "GET /container/operate/?status=1&container=1 HTTP/1.1" 200 52
+[2025-05-11 17:15:11,827][django.server.log_message():187] [INFO] "GET /container/detail/?status__lte=2&container=1 HTTP/1.1" 200 52
+[2025-05-11 17:15:35,285][django.server.log_message():187] [INFO] "OPTIONS /container/task/?page=1&base_type=0&page_size=11 HTTP/1.1" 200 0
+[2025-05-11 17:15:35,456][django.server.log_message():187] [INFO] "GET /warehouse/status/ HTTP/1.1" 200 600
+[2025-05-11 17:15:35,456][django.server.log_message():187] [INFO] "GET /warehouse/boundcodetype/ HTTP/1.1" 200 250
+[2025-05-11 17:15:35,457][django.server.log_message():187] [INFO] "GET /warehouse/department/ HTTP/1.1" 200 2862
+[2025-05-11 17:15:35,476][django.server.log_message():187] [INFO] "GET /container/task/?page=1&base_type=0&page_size=11 HTTP/1.1" 200 52
+[2025-05-11 17:15:35,505][django.server.log_message():187] [INFO] "GET /warehouse/boundbusiness/ HTTP/1.1" 200 229
+[2025-05-11 17:15:35,528][django.server.log_message():187] [INFO] "GET /warehouse/boundtype/ HTTP/1.1" 200 233
+[2025-05-11 17:15:38,013][django.server.log_message():187] [INFO] "GET /container/list/?page=1&page_size=11 HTTP/1.1" 200 173
+[2025-05-11 17:15:38,412][django.server.log_message():187] [INFO] "OPTIONS /bound/list/?page=1&base_type=1&page_size=11 HTTP/1.1" 200 0
+[2025-05-11 17:15:38,650][django.server.log_message():187] [INFO] "GET /warehouse/department/ HTTP/1.1" 200 2862
+[2025-05-11 17:15:38,651][django.server.log_message():187] [INFO] "GET /bound/list/?page=1&base_type=1&page_size=11 HTTP/1.1" 200 2249
+[2025-05-11 17:15:38,667][django.server.log_message():187] [INFO] "GET /warehouse/boundbusiness/ HTTP/1.1" 200 229
+[2025-05-11 17:15:38,686][django.server.log_message():187] [INFO] "GET /warehouse/status/ HTTP/1.1" 200 600
+[2025-05-11 17:15:38,689][django.server.log_message():187] [INFO] "GET /warehouse/boundtype/ HTTP/1.1" 200 233
+[2025-05-11 17:15:38,715][django.server.log_message():187] [INFO] "GET /warehouse/boundcodetype/ HTTP/1.1" 200 250
+[2025-05-11 17:15:44,162][django.server.log_message():187] [INFO] "OPTIONS /bound/list/15/ HTTP/1.1" 200 0
+[2025-05-11 17:15:44,294][django.server.log_message():187] [INFO] "PUT /bound/list/15/ HTTP/1.1" 200 488
+[2025-05-11 17:15:44,446][django.server.log_message():187] [INFO] "GET /bound/list/?page=1&base_type=1&page_size=11 HTTP/1.1" 200 2247
+[2025-05-11 17:15:49,392][django.server.log_message():187] [INFO] "OPTIONS /bound/list/15/ HTTP/1.1" 200 0
+[2025-05-11 17:15:49,473][django.server.log_message():187] [INFO] "PUT /bound/list/15/ HTTP/1.1" 200 488
+[2025-05-11 17:15:49,483][django.server.log_message():187] [INFO] "OPTIONS /bound/list/?page=1&base_type=1&page_size=11 HTTP/1.1" 200 0
+[2025-05-11 17:15:49,578][django.server.log_message():187] [INFO] "GET /bound/list/?page=1&base_type=1&page_size=11 HTTP/1.1" 200 2247
+[2025-05-11 17:15:56,779][django.server.log_message():187] [INFO] "OPTIONS /bound/list/15/ HTTP/1.1" 200 0
+[2025-05-11 17:15:56,892][django.server.log_message():187] [INFO] "PUT /bound/list/15/ HTTP/1.1" 200 488
+[2025-05-11 17:15:56,910][django.server.log_message():187] [INFO] "OPTIONS /bound/list/?page=1&base_type=1&page_size=11 HTTP/1.1" 200 0
+[2025-05-11 17:15:56,972][django.server.log_message():187] [INFO] "GET /bound/list/?page=1&base_type=1&page_size=11 HTTP/1.1" 200 2247
+[2025-05-11 17:16:44,210][django.server.log_message():187] [INFO] "OPTIONS /wms/inboundBills/?bound_status=0 HTTP/1.1" 200 0
+[2025-05-11 17:16:44,211][django.server.log_message():187] [INFO] "OPTIONS /wms/outboundBills/?bound_status=0 HTTP/1.1" 200 0
+[2025-05-11 17:16:44,244][django.server.log_message():187] [INFO] "GET /wms/inboundBills/?bound_status=0 HTTP/1.1" 200 52
+[2025-05-11 17:16:44,265][django.server.log_message():187] [INFO] "GET /wms/outboundBills/?bound_status=0 HTTP/1.1" 200 431
+[2025-05-11 17:17:43,388][django.server.log_message():187] [INFO] "OPTIONS /bound/list/?page=1&base_type=1&page_size=11 HTTP/1.1" 200 0
+[2025-05-11 17:17:43,389][django.server.log_message():187] [INFO] "OPTIONS /warehouse/boundtype/ HTTP/1.1" 200 0
+[2025-05-11 17:17:43,389][django.server.log_message():187] [INFO] "OPTIONS /warehouse/department/ HTTP/1.1" 200 0
+[2025-05-11 17:17:43,389][django.server.log_message():187] [INFO] "OPTIONS /warehouse/boundcodetype/ HTTP/1.1" 200 0
+[2025-05-11 17:17:43,390][django.server.log_message():187] [INFO] "OPTIONS /warehouse/status/ HTTP/1.1" 200 0
+[2025-05-11 17:17:43,390][django.server.log_message():187] [INFO] "OPTIONS /warehouse/boundbusiness/ HTTP/1.1" 200 0
+[2025-05-11 17:17:43,481][django.server.log_message():187] [INFO] "GET /warehouse/boundtype/ HTTP/1.1" 200 233
+[2025-05-11 17:17:43,499][django.server.log_message():187] [INFO] "GET /warehouse/status/ HTTP/1.1" 200 600
+[2025-05-11 17:17:43,513][django.server.log_message():187] [INFO] "GET /warehouse/boundcodetype/ HTTP/1.1" 200 250
+[2025-05-11 17:17:43,543][django.server.log_message():187] [INFO] "GET /warehouse/department/ HTTP/1.1" 200 2862
+[2025-05-11 17:17:43,604][django.server.log_message():187] [INFO] "GET /warehouse/boundbusiness/ HTTP/1.1" 200 229
+[2025-05-11 17:17:43,612][django.server.log_message():187] [INFO] "GET /bound/list/?page=1&base_type=1&page_size=11 HTTP/1.1" 200 2247
+[2025-05-11 17:17:50,029][django.server.log_message():187] [INFO] "OPTIONS /warehouse/boundbusiness/ HTTP/1.1" 200 0
+[2025-05-11 17:17:50,029][django.server.log_message():187] [INFO] "OPTIONS /warehouse/boundcodetype/ HTTP/1.1" 200 0
+[2025-05-11 17:17:50,029][django.server.log_message():187] [INFO] "OPTIONS /bound/list/?page=1&base_type=1&page_size=11 HTTP/1.1" 200 0
+[2025-05-11 17:17:50,030][django.server.log_message():187] [INFO] "OPTIONS /warehouse/department/ HTTP/1.1" 200 0
+[2025-05-11 17:17:50,030][django.server.log_message():187] [INFO] "OPTIONS /warehouse/boundtype/ HTTP/1.1" 200 0
+[2025-05-11 17:17:50,030][django.server.log_message():187] [INFO] "OPTIONS /warehouse/status/ HTTP/1.1" 200 0
+[2025-05-11 17:17:50,197][django.server.log_message():187] [INFO] "GET /warehouse/boundcodetype/ HTTP/1.1" 200 250
+[2025-05-11 17:17:50,213][django.server.log_message():187] [INFO] "GET /warehouse/status/ HTTP/1.1" 200 600
+[2025-05-11 17:17:50,282][django.server.log_message():187] [INFO] "GET /bound/list/?page=1&base_type=1&page_size=11 HTTP/1.1" 200 2247
+[2025-05-11 17:17:50,324][django.server.log_message():187] [INFO] "GET /warehouse/boundbusiness/ HTTP/1.1" 200 229
+[2025-05-11 17:17:50,324][django.server.log_message():187] [INFO] "GET /warehouse/department/ HTTP/1.1" 200 2862
+[2025-05-11 17:17:50,353][django.server.log_message():187] [INFO] "GET /warehouse/boundtype/ HTTP/1.1" 200 233
+[2025-05-11 17:18:00,629][django.server.log_message():187] [INFO] "OPTIONS /warehouse/boundcodetype/ HTTP/1.1" 200 0
+[2025-05-11 17:18:00,629][django.server.log_message():187] [INFO] "OPTIONS /warehouse/status/ HTTP/1.1" 200 0
+[2025-05-11 17:18:00,630][django.server.log_message():187] [INFO] "OPTIONS /warehouse/boundtype/ HTTP/1.1" 200 0
+[2025-05-11 17:18:00,630][django.server.log_message():187] [INFO] "OPTIONS /bound/list/?page=1&base_type=0&page_size=11 HTTP/1.1" 200 0
+[2025-05-11 17:18:00,630][django.server.log_message():187] [INFO] "OPTIONS /warehouse/department/?max_page=1000 HTTP/1.1" 200 0
+[2025-05-11 17:18:00,630][django.server.log_message():187] [INFO] "OPTIONS /warehouse/boundbusiness/ HTTP/1.1" 200 0
+[2025-05-11 17:18:00,782][django.server.log_message():187] [INFO] "GET /warehouse/boundtype/ HTTP/1.1" 200 233
+[2025-05-11 17:18:00,807][django.server.log_message():187] [INFO] "GET /bound/list/?page=1&base_type=0&page_size=11 HTTP/1.1" 200 4872
+[2025-05-11 17:18:00,821][django.server.log_message():187] [INFO] "GET /warehouse/status/ HTTP/1.1" 200 600
+[2025-05-11 17:18:00,877][django.server.log_message():187] [INFO] "GET /warehouse/boundcodetype/ HTTP/1.1" 200 250
+[2025-05-11 17:18:00,885][django.server.log_message():187] [INFO] "GET /warehouse/department/?max_page=1000 HTTP/1.1" 200 9377
+[2025-05-11 17:18:00,912][django.server.log_message():187] [INFO] "GET /warehouse/boundbusiness/ HTTP/1.1" 200 229
+[2025-05-11 17:18:01,839][django.server.log_message():187] [INFO] "OPTIONS /bound/detail/?bound_list=19 HTTP/1.1" 200 0
+[2025-05-11 17:18:01,839][django.server.log_message():187] [INFO] "OPTIONS /bound/list/19/ HTTP/1.1" 200 0
+[2025-05-11 17:18:02,018][django.server.log_message():187] [INFO] "GET /bound/detail/?bound_list=19 HTTP/1.1" 200 52
+[2025-05-11 17:18:02,018][django.server.log_message():187] [INFO] "GET /bound/list/19/ HTTP/1.1" 200 401
+[2025-05-11 17:18:04,566][django.server.log_message():187] [INFO] "OPTIONS /bound/list/18/ HTTP/1.1" 200 0
+[2025-05-11 17:18:04,567][django.server.log_message():187] [INFO] "OPTIONS /bound/detail/?bound_list=18 HTTP/1.1" 200 0
+[2025-05-11 17:18:04,672][django.server.log_message():187] [INFO] "GET /bound/list/18/ HTTP/1.1" 200 418
+[2025-05-11 17:18:04,692][django.server.log_message():187] [INFO] "GET /bound/detail/?bound_list=18 HTTP/1.1" 200 2415
+[2025-05-11 17:18:24,279][django.server.log_message():187] [INFO] "GET /wms/inboundBills/?bound_status=0 HTTP/1.1" 200 52
+[2025-05-11 17:18:24,318][django.server.log_message():187] [INFO] "GET /wms/outboundBills/?bound_status=0 HTTP/1.1" 200 431
+[2025-05-11 17:18:25,333][django.server.log_message():187] [INFO] "GET /staff/?staff_name=PDA1 HTTP/1.1" 200 286
+[2025-05-11 17:18:25,407][django.server.log_message():187] [INFO] "GET /bound/list/?page=1&base_type=0&page_size=11 HTTP/1.1" 200 4872
+[2025-05-11 17:18:25,425][django.server.log_message():187] [INFO] "GET /warehouse/multiple/?max_page=30 HTTP/1.1" 200 371
+[2025-05-11 17:18:25,461][django.server.log_message():187] [INFO] "GET /warehouse/boundtype/ HTTP/1.1" 200 233
+[2025-05-11 17:18:25,583][django.server.log_message():187] [INFO] "GET /warehouse/status/ HTTP/1.1" 200 600
+[2025-05-11 17:18:25,588][django.server.log_message():187] [INFO] "GET /warehouse/boundcodetype/ HTTP/1.1" 200 250
+[2025-05-11 17:18:25,589][django.server.log_message():187] [INFO] "GET /warehouse/boundbusiness/ HTTP/1.1" 200 229
+[2025-05-11 17:18:25,613][django.server.log_message():187] [INFO] "GET /warehouse/department/?max_page=1000 HTTP/1.1" 200 9377
+[2025-05-11 17:18:25,644][django.server.log_message():187] [INFO] "GET /wms/inboundBills/?bound_status=0 HTTP/1.1" 200 52
+[2025-05-11 17:18:25,662][django.server.log_message():187] [INFO] "GET /wms/outboundBills/?bound_status=0 HTTP/1.1" 200 431
+[2025-05-11 17:18:29,282][django.server.log_message():187] [INFO] "GET /container/list/?page=1&page_size=11 HTTP/1.1" 200 173
+[2025-05-11 17:18:33,357][django.server.log_message():187] [INFO] "GET /warehouse/department/ HTTP/1.1" 200 2862
+[2025-05-11 17:18:33,371][django.server.log_message():187] [INFO] "GET /warehouse/boundtype/ HTTP/1.1" 200 233
+[2025-05-11 17:18:33,386][django.server.log_message():187] [INFO] "GET /warehouse/status/ HTTP/1.1" 200 600
+[2025-05-11 17:18:33,399][django.server.log_message():187] [INFO] "GET /warehouse/boundbusiness/ HTTP/1.1" 200 229
+[2025-05-11 17:18:33,413][django.server.log_message():187] [INFO] "GET /warehouse/boundcodetype/ HTTP/1.1" 200 250
+[2025-05-11 17:18:33,463][django.server.log_message():187] [INFO] "GET /bound/list/?page=1&base_type=1&page_size=11 HTTP/1.1" 200 2247
+[2025-05-11 17:18:34,316][django.server.log_message():187] [INFO] "GET /warehouse/boundcodetype/ HTTP/1.1" 200 250
+[2025-05-11 17:18:34,360][django.server.log_message():187] [INFO] "GET /warehouse/boundbusiness/ HTTP/1.1" 200 229
+[2025-05-11 17:18:34,368][django.server.log_message():187] [INFO] "GET /container/task/?page=1&base_type=0&page_size=11 HTTP/1.1" 200 52
+[2025-05-11 17:18:34,384][django.server.log_message():187] [INFO] "GET /warehouse/boundtype/ HTTP/1.1" 200 233
+[2025-05-11 17:18:34,405][django.server.log_message():187] [INFO] "GET /warehouse/department/ HTTP/1.1" 200 2862
+[2025-05-11 17:18:34,422][django.server.log_message():187] [INFO] "GET /warehouse/status/ HTTP/1.1" 200 600
+[2025-05-11 17:18:35,200][django.server.log_message():187] [INFO] "GET /bound/list/?page=1&base_type=1&page_size=11 HTTP/1.1" 200 2247
+[2025-05-11 17:18:35,226][django.server.log_message():187] [INFO] "GET /warehouse/boundcodetype/ HTTP/1.1" 200 250
+[2025-05-11 17:18:35,330][django.server.log_message():187] [INFO] "GET /warehouse/boundbusiness/ HTTP/1.1" 200 229
+[2025-05-11 17:18:35,337][django.server.log_message():187] [INFO] "GET /warehouse/department/ HTTP/1.1" 200 2862
+[2025-05-11 17:18:35,357][django.server.log_message():187] [INFO] "GET /warehouse/boundtype/ HTTP/1.1" 200 233
+[2025-05-11 17:18:35,372][django.server.log_message():187] [INFO] "GET /warehouse/status/ HTTP/1.1" 200 600
+[2025-05-11 17:18:36,395][django.server.log_message():187] [INFO] "OPTIONS /bound/outdetail/?bound_list=15 HTTP/1.1" 200 0
+[2025-05-11 17:18:36,496][django.server.log_message():187] [INFO] "GET /bound/list/15/ HTTP/1.1" 200 441
+[2025-05-11 17:18:36,542][django.server.log_message():187] [INFO] "GET /bound/outdetail/?bound_list=15 HTTP/1.1" 200 1789
+[2025-05-11 17:18:55,461][django.server.log_message():187] [INFO] "GET /bound/list/15/ HTTP/1.1" 200 441
+[2025-05-11 17:18:55,563][django.server.log_message():187] [INFO] "GET /bound/outdetail/?bound_list=15 HTTP/1.1" 200 1789
+[2025-05-11 17:19:48,198][django.server.log_message():187] [INFO] "GET /warehouse/department/?max_page=1000 HTTP/1.1" 200 9377
+[2025-05-11 17:19:48,200][django.server.log_message():187] [INFO] "GET /warehouse/boundbusiness/ HTTP/1.1" 200 229
+[2025-05-11 17:19:48,230][django.server.log_message():187] [INFO] "GET /warehouse/boundtype/ HTTP/1.1" 200 233
+[2025-05-11 17:19:48,277][django.server.log_message():187] [INFO] "GET /warehouse/status/ HTTP/1.1" 200 600
+[2025-05-11 17:19:48,287][django.server.log_message():187] [INFO] "GET /bound/list/?page=1&base_type=0&page_size=11 HTTP/1.1" 200 4872
+[2025-05-11 17:19:48,298][django.server.log_message():187] [INFO] "GET /warehouse/boundcodetype/ HTTP/1.1" 200 250
+[2025-05-11 17:19:50,585][django.server.log_message():187] [INFO] "GET /warehouse/boundbusiness/ HTTP/1.1" 200 229
+[2025-05-11 17:19:50,603][django.server.log_message():187] [INFO] "GET /bound/list/?page=1&base_type=1&page_size=11 HTTP/1.1" 200 2247
+[2025-05-11 17:19:50,632][django.server.log_message():187] [INFO] "GET /warehouse/status/ HTTP/1.1" 200 600
+[2025-05-11 17:19:50,742][django.server.log_message():187] [INFO] "GET /warehouse/boundcodetype/ HTTP/1.1" 200 250
+[2025-05-11 17:19:50,753][django.server.log_message():187] [INFO] "GET /warehouse/boundtype/ HTTP/1.1" 200 233
+[2025-05-11 17:19:50,759][django.server.log_message():187] [INFO] "GET /warehouse/department/ HTTP/1.1" 200 2862
+[2025-05-11 17:20:05,384][django.server.log_message():187] [INFO] "GET /wms/inboundBills/?bound_status=0 HTTP/1.1" 200 52
+[2025-05-11 17:20:05,437][django.server.log_message():187] [INFO] "GET /wms/outboundBills/?bound_status=0 HTTP/1.1" 200 431
+[2025-05-11 17:20:12,572][django.server.log_message():187] [INFO] "GET /warehouse/status/ HTTP/1.1" 200 600
+[2025-05-11 17:20:12,619][django.server.log_message():187] [INFO] "GET /warehouse/boundbusiness/ HTTP/1.1" 200 229
+[2025-05-11 17:20:12,624][django.server.log_message():187] [INFO] "GET /warehouse/department/?max_page=1000 HTTP/1.1" 200 9377
+[2025-05-11 17:20:12,683][django.server.log_message():187] [INFO] "GET /warehouse/boundtype/ HTTP/1.1" 200 233
+[2025-05-11 17:20:12,683][django.server.log_message():187] [INFO] "GET /warehouse/boundcodetype/ HTTP/1.1" 200 250
+[2025-05-11 17:20:12,752][django.server.log_message():187] [INFO] "GET /bound/list/?page=1&base_type=0&page_size=11 HTTP/1.1" 200 4872
+[2025-05-11 17:20:13,589][django.server.log_message():187] [INFO] "GET /bound/list/19/ HTTP/1.1" 200 401
+[2025-05-11 17:20:13,619][django.server.log_message():187] [INFO] "GET /bound/detail/?bound_list=19 HTTP/1.1" 200 52
+[2025-05-11 17:20:15,346][django.server.log_message():187] [INFO] "OPTIONS /bound/list/17/ HTTP/1.1" 200 0
+[2025-05-11 17:20:15,346][django.server.log_message():187] [INFO] "OPTIONS /bound/detail/?bound_list=17 HTTP/1.1" 200 0
+[2025-05-11 17:20:15,436][django.server.log_message():187] [INFO] "GET /bound/list/17/ HTTP/1.1" 200 423
+[2025-05-11 17:20:15,511][django.server.log_message():187] [INFO] "GET /bound/detail/?bound_list=17 HTTP/1.1" 200 2425
+[2025-05-11 17:20:59,426][django.server.log_message():187] [INFO] "GET /warehouse/boundcodetype/ HTTP/1.1" 200 250
+[2025-05-11 17:20:59,456][django.server.log_message():187] [INFO] "GET /warehouse/department/?max_page=1000 HTTP/1.1" 200 9377
+[2025-05-11 17:20:59,483][django.server.log_message():187] [INFO] "GET /warehouse/boundbusiness/ HTTP/1.1" 200 229
+[2025-05-11 17:20:59,488][django.server.log_message():187] [INFO] "GET /bound/list/?page=1&base_type=0&page_size=11 HTTP/1.1" 200 4872
+[2025-05-11 17:20:59,518][django.server.log_message():187] [INFO] "GET /warehouse/boundtype/ HTTP/1.1" 200 233
+[2025-05-11 17:20:59,531][django.server.log_message():187] [INFO] "GET /warehouse/status/ HTTP/1.1" 200 600
+[2025-05-11 17:21:06,928][django.server.log_message():187] [INFO] "GET /warehouse/status/ HTTP/1.1" 200 600
+[2025-05-11 17:21:06,987][django.server.log_message():187] [INFO] "GET /warehouse/boundtype/ HTTP/1.1" 200 233
+[2025-05-11 17:21:07,066][django.server.log_message():187] [INFO] "GET /warehouse/boundbusiness/ HTTP/1.1" 200 229
+[2025-05-11 17:21:07,089][django.server.log_message():187] [INFO] "GET /warehouse/boundcodetype/ HTTP/1.1" 200 250
+[2025-05-11 17:21:07,097][django.server.log_message():187] [INFO] "GET /bound/list/?page=1&base_type=0&page_size=11 HTTP/1.1" 200 4872
+[2025-05-11 17:21:07,131][django.server.log_message():187] [INFO] "GET /warehouse/department/?max_page=1000 HTTP/1.1" 200 9377
+[2025-05-11 17:21:45,329][django.server.log_message():187] [INFO] "GET /wms/inboundBills/?bound_status=0 HTTP/1.1" 200 52
+[2025-05-11 17:21:45,355][django.server.log_message():187] [INFO] "GET /wms/outboundBills/?bound_status=0 HTTP/1.1" 200 431
+[2025-05-11 17:22:04,193][django.server.log_message():187] [INFO] "GET /warehouse/department/ HTTP/1.1" 200 2862
+[2025-05-11 17:22:04,204][django.server.log_message():187] [INFO] "GET /warehouse/boundcodetype/ HTTP/1.1" 200 250
+[2025-05-11 17:22:04,226][django.server.log_message():187] [INFO] "GET /warehouse/boundtype/ HTTP/1.1" 200 233
+[2025-05-11 17:22:04,285][django.server.log_message():187] [INFO] "GET /warehouse/boundbusiness/ HTTP/1.1" 200 229
+[2025-05-11 17:22:04,292][django.server.log_message():187] [INFO] "GET /bound/list/?page=1&base_type=1&page_size=11 HTTP/1.1" 200 2247
+[2025-05-11 17:22:04,304][django.server.log_message():187] [INFO] "GET /warehouse/status/ HTTP/1.1" 200 600
+[2025-05-11 17:23:05,524][django.server.log_message():187] [INFO] "GET /bound/list/15/ HTTP/1.1" 200 441
+[2025-05-11 17:23:05,574][django.server.log_message():187] [INFO] "GET /bound/outdetail/?bound_list=15 HTTP/1.1" 200 1789
+[2025-05-11 17:23:08,477][django.server.log_message():187] [INFO] "OPTIONS /bound/outdetail/?bound_list=2 HTTP/1.1" 200 0
+[2025-05-11 17:23:08,477][django.server.log_message():187] [INFO] "OPTIONS /bound/list/2/ HTTP/1.1" 200 0
+[2025-05-11 17:23:08,602][django.server.log_message():187] [INFO] "GET /bound/list/2/ HTTP/1.1" 200 420
+[2025-05-11 17:23:08,606][django.server.log_message():187] [INFO] "GET /bound/outdetail/?bound_list=2 HTTP/1.1" 200 3553
+[2025-05-11 17:23:17,475][django.server.log_message():187] [INFO] "OPTIONS /bound/list/ HTTP/1.1" 200 0
+[2025-05-11 17:23:17,512][django.server.log_message():187] [INFO] "POST /bound/list/ HTTP/1.1" 200 451
+[2025-05-11 17:23:17,672][django.server.log_message():187] [INFO] "GET /bound/list/?page=1&base_type=1&page_size=11 HTTP/1.1" 200 2651
+[2025-05-11 17:23:20,989][django.server.log_message():187] [INFO] "OPTIONS /bound/list/20/ HTTP/1.1" 200 0
+[2025-05-11 17:23:21,118][django.server.log_message():187] [INFO] "DELETE /bound/list/20/ HTTP/1.1" 200 424
+[2025-05-11 17:23:21,181][django.server.log_message():187] [INFO] "GET /bound/list/?page=1&base_type=1&page_size=11 HTTP/1.1" 200 2247
+[2025-05-11 17:23:25,320][django.server.log_message():187] [INFO] "GET /wms/inboundBills/?bound_status=0 HTTP/1.1" 200 52
+[2025-05-11 17:23:25,354][django.server.log_message():187] [INFO] "GET /wms/outboundBills/?bound_status=0 HTTP/1.1" 200 431
+[2025-05-11 17:23:28,865][django.server.log_message():187] [INFO] "DELETE /bound/list/15/ HTTP/1.1" 200 91
+[2025-05-11 17:23:28,968][django.server.log_message():187] [INFO] "GET /bound/list/?page=1&base_type=1&page_size=11 HTTP/1.1" 200 2247
+[2025-05-11 17:23:46,245][django.server.log_message():187] [INFO] "DELETE /bound/list/15/ HTTP/1.1" 200 91
+[2025-05-11 17:23:46,376][django.server.log_message():187] [INFO] "GET /bound/list/?page=1&base_type=1&page_size=11 HTTP/1.1" 200 2247
+[2025-05-11 17:24:16,016][django.server.log_message():187] [INFO] "GET /bound/list/?page=1&base_type=1&page_size=11 HTTP/1.1" 200 2247
+[2025-05-11 17:24:16,030][django.server.log_message():187] [INFO] "GET /warehouse/boundbusiness/ HTTP/1.1" 200 229
+[2025-05-11 17:24:16,110][django.server.log_message():187] [INFO] "GET /warehouse/department/ HTTP/1.1" 200 2862
+[2025-05-11 17:24:16,134][django.server.log_message():187] [INFO] "GET /warehouse/boundcodetype/ HTTP/1.1" 200 250
+[2025-05-11 17:24:16,165][django.server.log_message():187] [INFO] "GET /warehouse/boundtype/ HTTP/1.1" 200 233
+[2025-05-11 17:24:16,169][django.server.log_message():187] [INFO] "GET /warehouse/status/ HTTP/1.1" 200 600
+[2025-05-11 17:24:21,975][django.server.log_message():187] [INFO] "GET /warehouse/department/ HTTP/1.1" 200 2862
+[2025-05-11 17:24:22,036][django.server.log_message():187] [INFO] "GET /warehouse/boundtype/ HTTP/1.1" 200 233
+[2025-05-11 17:24:22,088][django.server.log_message():187] [INFO] "GET /warehouse/status/ HTTP/1.1" 200 600
+[2025-05-11 17:24:22,157][django.server.log_message():187] [INFO] "GET /warehouse/boundcodetype/ HTTP/1.1" 200 250
+[2025-05-11 17:24:22,192][django.server.log_message():187] [INFO] "GET /warehouse/boundbusiness/ HTTP/1.1" 200 229
+[2025-05-11 17:24:22,197][django.server.log_message():187] [INFO] "GET /bound/list/?page=1&base_type=1&page_size=11 HTTP/1.1" 200 2247
+[2025-05-11 17:24:35,242][django.server.log_message():187] [INFO] "GET /bound/list/15/ HTTP/1.1" 200 441
+[2025-05-11 17:24:35,250][django.server.log_message():187] [INFO] "GET /bound/outdetail/?bound_list=15 HTTP/1.1" 200 1789
+[2025-05-11 17:24:53,916][django.server.log_message():187] [INFO] "GET /warehouse/department/ HTTP/1.1" 200 2862
+[2025-05-11 17:24:53,953][django.server.log_message():187] [INFO] "GET /warehouse/boundcodetype/ HTTP/1.1" 200 250
+[2025-05-11 17:24:53,990][django.server.log_message():187] [INFO] "GET /warehouse/boundtype/ HTTP/1.1" 200 233
+[2025-05-11 17:24:54,045][django.server.log_message():187] [INFO] "GET /warehouse/boundbusiness/ HTTP/1.1" 200 229
+[2025-05-11 17:24:54,050][django.server.log_message():187] [INFO] "GET /bound/list/?page=1&base_type=1&page_size=11 HTTP/1.1" 200 2247
+[2025-05-11 17:24:54,062][django.server.log_message():187] [INFO] "GET /warehouse/status/ HTTP/1.1" 200 600
+[2025-05-11 17:24:55,592][django.server.log_message():187] [INFO] "GET /bound/list/15/ HTTP/1.1" 200 441
+[2025-05-11 17:24:55,602][django.server.log_message():187] [INFO] "GET /bound/outdetail/?bound_list=15 HTTP/1.1" 200 1789
+[2025-05-11 17:25:05,336][django.server.log_message():187] [INFO] "GET /wms/inboundBills/?bound_status=0 HTTP/1.1" 200 52
+[2025-05-11 17:25:05,356][django.server.log_message():187] [INFO] "GET /wms/outboundBills/?bound_status=0 HTTP/1.1" 200 431
+[2025-05-11 17:25:21,724][django.server.log_message():187] [INFO] "GET /warehouse/status/ HTTP/1.1" 200 600
+[2025-05-11 17:25:21,736][django.server.log_message():187] [INFO] "GET /warehouse/boundcodetype/ HTTP/1.1" 200 250
+[2025-05-11 17:25:21,760][django.server.log_message():187] [INFO] "GET /bound/list/?page=1&base_type=1&page_size=11 HTTP/1.1" 200 2247
+[2025-05-11 17:25:21,789][django.server.log_message():187] [INFO] "GET /warehouse/boundtype/ HTTP/1.1" 200 233
+[2025-05-11 17:25:21,807][django.server.log_message():187] [INFO] "GET /warehouse/boundbusiness/ HTTP/1.1" 200 229
+[2025-05-11 17:25:21,839][django.server.log_message():187] [INFO] "GET /warehouse/department/ HTTP/1.1" 200 2862
+[2025-05-11 17:25:22,450][django.server.log_message():187] [INFO] "GET /warehouse/boundtype/ HTTP/1.1" 200 233
+[2025-05-11 17:25:22,469][django.server.log_message():187] [INFO] "GET /warehouse/department/ HTTP/1.1" 200 2862
+[2025-05-11 17:25:22,482][django.server.log_message():187] [INFO] "GET /warehouse/boundcodetype/ HTTP/1.1" 200 250
+[2025-05-11 17:25:22,543][django.server.log_message():187] [INFO] "GET /warehouse/boundbusiness/ HTTP/1.1" 200 229
+[2025-05-11 17:25:22,550][django.server.log_message():187] [INFO] "GET /bound/list/?page=1&base_type=1&page_size=11 HTTP/1.1" 200 2247
+[2025-05-11 17:25:22,561][django.server.log_message():187] [INFO] "GET /warehouse/status/ HTTP/1.1" 200 600
+[2025-05-11 17:25:26,784][django.server.log_message():187] [INFO] "GET /warehouse/status/ HTTP/1.1" 200 600
+[2025-05-11 17:25:26,909][django.server.log_message():187] [INFO] "GET /warehouse/boundbusiness/ HTTP/1.1" 200 229
+[2025-05-11 17:25:26,933][django.server.log_message():187] [INFO] "GET /warehouse/boundcodetype/ HTTP/1.1" 200 250
+[2025-05-11 17:25:27,021][django.server.log_message():187] [INFO] "GET /bound/list/?page=1&base_type=1&page_size=11 HTTP/1.1" 200 2247
+[2025-05-11 17:25:27,025][django.server.log_message():187] [INFO] "GET /warehouse/department/ HTTP/1.1" 200 2862
+[2025-05-11 17:25:27,039][django.server.log_message():187] [INFO] "GET /warehouse/boundtype/ HTTP/1.1" 200 233
+[2025-05-11 17:25:43,177][django.server.log_message():187] [INFO] "GET /warehouse/boundbusiness/ HTTP/1.1" 200 229
+[2025-05-11 17:25:43,268][django.server.log_message():187] [INFO] "GET /warehouse/department/ HTTP/1.1" 200 2862
+[2025-05-11 17:25:43,288][django.server.log_message():187] [INFO] "GET /warehouse/boundcodetype/ HTTP/1.1" 200 250
+[2025-05-11 17:25:43,293][django.server.log_message():187] [INFO] "GET /warehouse/boundtype/ HTTP/1.1" 200 233
+[2025-05-11 17:25:43,310][django.server.log_message():187] [INFO] "GET /warehouse/status/ HTTP/1.1" 200 600
+[2025-05-11 17:25:43,341][django.server.log_message():187] [INFO] "GET /bound/list/?page=1&base_type=1&page_size=11 HTTP/1.1" 200 2247
+[2025-05-11 17:26:45,345][django.server.log_message():187] [INFO] "GET /wms/outboundBills/?bound_status=0 HTTP/1.1" 200 431
+[2025-05-11 17:26:45,367][django.server.log_message():187] [INFO] "GET /wms/inboundBills/?bound_status=0 HTTP/1.1" 200 52
+[2025-05-11 17:27:01,607][django.server.log_message():187] [INFO] "GET /warehouse/boundbusiness/ HTTP/1.1" 200 229
+[2025-05-11 17:27:01,635][django.server.log_message():187] [INFO] "GET /warehouse/department/ HTTP/1.1" 200 2862
+[2025-05-11 17:27:01,713][django.server.log_message():187] [INFO] "GET /warehouse/boundtype/ HTTP/1.1" 200 233
+[2025-05-11 17:27:01,716][django.server.log_message():187] [INFO] "GET /warehouse/boundcodetype/ HTTP/1.1" 200 250
+[2025-05-11 17:27:01,719][django.server.log_message():187] [INFO] "GET /warehouse/status/ HTTP/1.1" 200 600
+[2025-05-11 17:27:01,750][django.server.log_message():187] [INFO] "GET /bound/list/?page=1&base_type=1&page_size=11 HTTP/1.1" 200 2247
+[2025-05-11 17:27:31,033][django.server.log_message():187] [INFO] "GET /warehouse/status/ HTTP/1.1" 200 600
+[2025-05-11 17:27:31,040][django.server.log_message():187] [INFO] "GET /warehouse/boundcodetype/ HTTP/1.1" 200 250
+[2025-05-11 17:27:31,089][django.server.log_message():187] [INFO] "GET /warehouse/boundbusiness/ HTTP/1.1" 200 229
+[2025-05-11 17:27:31,150][django.server.log_message():187] [INFO] "GET /warehouse/department/ HTTP/1.1" 200 2862
+[2025-05-11 17:27:31,153][django.server.log_message():187] [INFO] "GET /bound/list/?page=1&base_type=1&page_size=11 HTTP/1.1" 200 2247
+[2025-05-11 17:27:31,201][django.server.log_message():187] [INFO] "GET /warehouse/boundtype/ HTTP/1.1" 200 233
+[2025-05-11 17:27:32,539][django.server.log_message():187] [INFO] "GET /warehouse/boundbusiness/ HTTP/1.1" 200 229
+[2025-05-11 17:27:32,569][django.server.log_message():187] [INFO] "GET /warehouse/boundtype/ HTTP/1.1" 200 233
+[2025-05-11 17:27:32,571][django.server.log_message():187] [INFO] "GET /warehouse/boundcodetype/ HTTP/1.1" 200 250
+[2025-05-11 17:27:32,613][django.server.log_message():187] [INFO] "GET /warehouse/status/ HTTP/1.1" 200 600
+[2025-05-11 17:27:32,634][django.server.log_message():187] [INFO] "GET /warehouse/department/ HTTP/1.1" 200 2862
+[2025-05-11 17:27:32,670][django.server.log_message():187] [INFO] "GET /bound/list/?page=1&base_type=1&page_size=11 HTTP/1.1" 200 2247
+[2025-05-11 17:28:03,288][django.server.log_message():187] [INFO] "GET /warehouse/boundcodetype/ HTTP/1.1" 200 250
+[2025-05-11 17:28:03,345][django.server.log_message():187] [INFO] "GET /warehouse/boundtype/ HTTP/1.1" 200 233
+[2025-05-11 17:28:03,409][django.server.log_message():187] [INFO] "GET /warehouse/department/ HTTP/1.1" 200 2862
+[2025-05-11 17:28:03,494][django.server.log_message():187] [INFO] "GET /warehouse/status/ HTTP/1.1" 200 600
+[2025-05-11 17:28:03,518][django.server.log_message():187] [INFO] "GET /bound/list/?page=1&base_type=1&page_size=11 HTTP/1.1" 200 2247
+[2025-05-11 17:28:03,520][django.server.log_message():187] [INFO] "GET /warehouse/boundbusiness/ HTTP/1.1" 200 229
+[2025-05-11 17:28:07,027][django.server.log_message():187] [INFO] "GET /warehouse/boundtype/ HTTP/1.1" 200 233
+[2025-05-11 17:28:07,032][django.server.log_message():187] [INFO] "GET /warehouse/boundbusiness/ HTTP/1.1" 200 229
+[2025-05-11 17:28:07,090][django.server.log_message():187] [INFO] "GET /warehouse/status/ HTTP/1.1" 200 600
+[2025-05-11 17:28:07,129][django.server.log_message():187] [INFO] "GET /warehouse/boundcodetype/ HTTP/1.1" 200 250
+[2025-05-11 17:28:07,163][django.server.log_message():187] [INFO] "GET /bound/list/?page=1&base_type=1&page_size=11 HTTP/1.1" 200 2247
+[2025-05-11 17:28:07,167][django.server.log_message():187] [INFO] "GET /warehouse/department/ HTTP/1.1" 200 2862
+[2025-05-11 17:28:25,337][django.server.log_message():187] [INFO] "GET /wms/outboundBills/?bound_status=0 HTTP/1.1" 200 431
+[2025-05-11 17:28:25,363][django.server.log_message():187] [INFO] "GET /wms/inboundBills/?bound_status=0 HTTP/1.1" 200 52
+[2025-05-11 17:28:25,840][django.server.log_message():187] [INFO] "GET /warehouse/boundcodetype/ HTTP/1.1" 200 250
+[2025-05-11 17:28:25,860][django.server.log_message():187] [INFO] "GET /warehouse/boundbusiness/ HTTP/1.1" 200 229
+[2025-05-11 17:28:25,874][django.server.log_message():187] [INFO] "GET /warehouse/boundtype/ HTTP/1.1" 200 233
+[2025-05-11 17:28:25,918][django.server.log_message():187] [INFO] "GET /warehouse/department/ HTTP/1.1" 200 2862
+[2025-05-11 17:28:25,922][django.server.log_message():187] [INFO] "GET /warehouse/status/ HTTP/1.1" 200 600
+[2025-05-11 17:28:25,967][django.server.log_message():187] [INFO] "GET /bound/list/?page=1&base_type=1&page_size=11 HTTP/1.1" 200 2247
+[2025-05-11 17:28:30,769][django.server.log_message():187] [INFO] "GET /warehouse/boundbusiness/ HTTP/1.1" 200 229
+[2025-05-11 17:28:30,806][django.server.log_message():187] [INFO] "GET /warehouse/department/ HTTP/1.1" 200 2862
+[2025-05-11 17:28:30,890][django.server.log_message():187] [INFO] "GET /warehouse/status/ HTTP/1.1" 200 600
+[2025-05-11 17:28:31,010][django.server.log_message():187] [INFO] "GET /warehouse/boundcodetype/ HTTP/1.1" 200 250
+[2025-05-11 17:28:31,101][django.server.log_message():187] [INFO] "GET /warehouse/boundtype/ HTTP/1.1" 200 233
+[2025-05-11 17:28:31,110][django.server.log_message():187] [INFO] "GET /bound/list/?page=1&base_type=1&page_size=11 HTTP/1.1" 200 2247
+[2025-05-11 17:28:33,658][django.server.log_message():187] [INFO] "GET /warehouse/boundtype/ HTTP/1.1" 200 233
+[2025-05-11 17:28:33,681][django.server.log_message():187] [INFO] "GET /warehouse/status/ HTTP/1.1" 200 600
+[2025-05-11 17:28:33,687][django.server.log_message():187] [INFO] "GET /warehouse/boundbusiness/ HTTP/1.1" 200 229
+[2025-05-11 17:28:33,697][django.server.log_message():187] [INFO] "GET /warehouse/boundcodetype/ HTTP/1.1" 200 250
+[2025-05-11 17:28:33,746][django.server.log_message():187] [INFO] "GET /warehouse/department/ HTTP/1.1" 200 2862
+[2025-05-11 17:28:33,751][django.server.log_message():187] [INFO] "GET /bound/list/?page=1&base_type=1&page_size=11 HTTP/1.1" 200 2247
+[2025-05-11 17:28:41,693][django.server.log_message():187] [INFO] "GET /warehouse/boundcodetype/ HTTP/1.1" 200 250
+[2025-05-11 17:28:41,737][django.server.log_message():187] [INFO] "GET /warehouse/boundbusiness/ HTTP/1.1" 200 229
+[2025-05-11 17:28:41,771][django.server.log_message():187] [INFO] "GET /warehouse/status/ HTTP/1.1" 200 600
+[2025-05-11 17:28:41,775][django.server.log_message():187] [INFO] "GET /warehouse/boundtype/ HTTP/1.1" 200 233
+[2025-05-11 17:28:41,776][django.server.log_message():187] [INFO] "GET /bound/list/?page=1&base_type=1&page_size=11 HTTP/1.1" 200 2247
+[2025-05-11 17:28:41,795][django.server.log_message():187] [INFO] "GET /warehouse/department/ HTTP/1.1" 200 2862
+[2025-05-11 17:29:01,098][django.server.log_message():187] [INFO] "GET /warehouse/boundbusiness/ HTTP/1.1" 200 229
+[2025-05-11 17:29:01,141][django.server.log_message():187] [INFO] "GET /warehouse/boundtype/ HTTP/1.1" 200 233
+[2025-05-11 17:29:01,160][django.server.log_message():187] [INFO] "GET /warehouse/boundcodetype/ HTTP/1.1" 200 250
+[2025-05-11 17:29:01,229][django.server.log_message():187] [INFO] "GET /warehouse/department/ HTTP/1.1" 200 2862
+[2025-05-11 17:29:01,278][django.server.log_message():187] [INFO] "GET /bound/list/?page=1&base_type=1&page_size=11 HTTP/1.1" 200 2247
+[2025-05-11 17:29:01,279][django.server.log_message():187] [INFO] "GET /warehouse/status/ HTTP/1.1" 200 600
+[2025-05-11 17:29:15,385][django.server.log_message():187] [INFO] "GET /warehouse/department/ HTTP/1.1" 200 2862
+[2025-05-11 17:29:15,387][django.server.log_message():187] [INFO] "GET /warehouse/boundbusiness/ HTTP/1.1" 200 229
+[2025-05-11 17:29:15,432][django.server.log_message():187] [INFO] "GET /warehouse/status/ HTTP/1.1" 200 600
+[2025-05-11 17:29:15,446][django.server.log_message():187] [INFO] "GET /warehouse/boundcodetype/ HTTP/1.1" 200 250
+[2025-05-11 17:29:15,503][django.server.log_message():187] [INFO] "GET /warehouse/boundtype/ HTTP/1.1" 200 233
+[2025-05-11 17:29:15,508][django.server.log_message():187] [INFO] "GET /bound/list/?page=1&base_type=1&page_size=11 HTTP/1.1" 200 2247
+[2025-05-11 17:29:42,212][django.server.log_message():187] [INFO] "GET /warehouse/boundtype/ HTTP/1.1" 200 233
+[2025-05-11 17:29:42,259][django.server.log_message():187] [INFO] "GET /warehouse/boundcodetype/ HTTP/1.1" 200 250
+[2025-05-11 17:29:42,387][django.server.log_message():187] [INFO] "GET /warehouse/department/ HTTP/1.1" 200 2862
+[2025-05-11 17:29:42,387][django.server.log_message():187] [INFO] "GET /warehouse/status/ HTTP/1.1" 200 600
+[2025-05-11 17:29:42,441][django.server.log_message():187] [INFO] "GET /bound/list/?page=1&base_type=1&page_size=11 HTTP/1.1" 200 2247
+[2025-05-11 17:29:42,452][django.server.log_message():187] [INFO] "GET /warehouse/boundbusiness/ HTTP/1.1" 200 229
+[2025-05-11 17:29:45,121][django.server.log_message():187] [INFO] "GET /warehouse/boundcodetype/ HTTP/1.1" 200 250
+[2025-05-11 17:29:45,219][django.server.log_message():187] [INFO] "GET /warehouse/boundtype/ HTTP/1.1" 200 233
+[2025-05-11 17:29:45,240][django.server.log_message():187] [INFO] "GET /warehouse/department/ HTTP/1.1" 200 2862
+[2025-05-11 17:29:45,257][django.server.log_message():187] [INFO] "GET /warehouse/boundbusiness/ HTTP/1.1" 200 229
+[2025-05-11 17:29:45,313][django.server.log_message():187] [INFO] "GET /warehouse/status/ HTTP/1.1" 200 600
+[2025-05-11 17:29:45,320][django.server.log_message():187] [INFO] "GET /bound/list/?page=1&base_type=1&page_size=11 HTTP/1.1" 200 2247
+[2025-05-11 17:29:55,395][django.server.log_message():187] [INFO] "GET /warehouse/status/ HTTP/1.1" 200 600
+[2025-05-11 17:29:55,407][django.server.log_message():187] [INFO] "GET /warehouse/boundbusiness/ HTTP/1.1" 200 229
+[2025-05-11 17:29:55,412][django.server.log_message():187] [INFO] "GET /bound/list/?page=1&base_type=1&page_size=11 HTTP/1.1" 200 2247
+[2025-05-11 17:29:55,527][django.server.log_message():187] [INFO] "GET /warehouse/boundtype/ HTTP/1.1" 200 233
+[2025-05-11 17:29:55,539][django.server.log_message():187] [INFO] "GET /warehouse/boundcodetype/ HTTP/1.1" 200 250
+[2025-05-11 17:29:55,569][django.server.log_message():187] [INFO] "GET /warehouse/department/ HTTP/1.1" 200 2862
+[2025-05-11 17:30:05,366][django.server.log_message():187] [INFO] "GET /wms/inboundBills/?bound_status=0 HTTP/1.1" 200 52
+[2025-05-11 17:30:05,389][django.server.log_message():187] [INFO] "GET /wms/outboundBills/?bound_status=0 HTTP/1.1" 200 431
+[2025-05-11 17:30:09,573][django.server.log_message():187] [INFO] "GET /bound/list/?page=1&base_type=1&page_size=11 HTTP/1.1" 200 2247
+[2025-05-11 17:30:09,629][django.server.log_message():187] [INFO] "GET /warehouse/department/ HTTP/1.1" 200 2862
+[2025-05-11 17:30:09,657][django.server.log_message():187] [INFO] "GET /warehouse/boundcodetype/ HTTP/1.1" 200 250
+[2025-05-11 17:30:09,689][django.server.log_message():187] [INFO] "GET /warehouse/status/ HTTP/1.1" 200 600
+[2025-05-11 17:30:09,707][django.server.log_message():187] [INFO] "GET /warehouse/boundbusiness/ HTTP/1.1" 200 229
+[2025-05-11 17:30:09,722][django.server.log_message():187] [INFO] "GET /warehouse/boundtype/ HTTP/1.1" 200 233
+[2025-05-11 17:30:12,158][django.server.log_message():187] [INFO] "GET /warehouse/boundtype/ HTTP/1.1" 200 233
+[2025-05-11 17:30:12,163][django.server.log_message():187] [INFO] "GET /warehouse/department/ HTTP/1.1" 200 2862
+[2025-05-11 17:30:12,176][django.server.log_message():187] [INFO] "GET /warehouse/boundcodetype/ HTTP/1.1" 200 250
+[2025-05-11 17:30:12,279][django.server.log_message():187] [INFO] "GET /warehouse/boundbusiness/ HTTP/1.1" 200 229
+[2025-05-11 17:30:12,289][django.server.log_message():187] [INFO] "GET /bound/list/?page=1&base_type=1&page_size=11 HTTP/1.1" 200 2247
+[2025-05-11 17:30:12,319][django.server.log_message():187] [INFO] "GET /warehouse/status/ HTTP/1.1" 200 600
+[2025-05-11 17:30:17,972][django.server.log_message():187] [INFO] "GET /warehouse/boundbusiness/ HTTP/1.1" 200 229
+[2025-05-11 17:30:18,038][django.server.log_message():187] [INFO] "GET /warehouse/status/ HTTP/1.1" 200 600
+[2025-05-11 17:30:18,054][django.server.log_message():187] [INFO] "GET /warehouse/boundtype/ HTTP/1.1" 200 233
+[2025-05-11 17:30:18,067][django.server.log_message():187] [INFO] "GET /warehouse/boundcodetype/ HTTP/1.1" 200 250
+[2025-05-11 17:30:18,085][django.server.log_message():187] [INFO] "GET /warehouse/department/ HTTP/1.1" 200 2862
+[2025-05-11 17:30:18,122][django.server.log_message():187] [INFO] "GET /bound/list/?page=1&base_type=1&page_size=11 HTTP/1.1" 200 2247
+[2025-05-11 17:31:45,954][django.server.log_message():187] [INFO] "GET /wms/inboundBills/?bound_status=0 HTTP/1.1" 200 52
+[2025-05-11 17:31:45,991][django.server.log_message():187] [INFO] "GET /wms/outboundBills/?bound_status=0 HTTP/1.1" 200 431
+[2025-05-11 21:51:57,081][django.server.log_message():187] [INFO] "OPTIONS /warehouse/department/?max_page=1000 HTTP/1.1" 200 0
+[2025-05-11 21:51:57,087][django.server.log_message():187] [INFO] "OPTIONS /warehouse/boundbusiness/ HTTP/1.1" 200 0
+[2025-05-11 21:51:57,087][django.server.log_message():187] [INFO] "OPTIONS /warehouse/boundtype/ HTTP/1.1" 200 0
+[2025-05-11 21:51:57,089][django.server.log_message():187] [INFO] "OPTIONS /warehouse/boundcodetype/ HTTP/1.1" 200 0
+[2025-05-11 21:51:57,089][django.server.log_message():187] [INFO] "OPTIONS /staff/?staff_name=PDA1 HTTP/1.1" 200 0
+[2025-05-11 21:51:57,093][django.server.log_message():187] [INFO] "OPTIONS /bound/list/?page=1&base_type=0&page_size=11 HTTP/1.1" 200 0
+[2025-05-11 21:51:57,097][django.server.log_message():187] [INFO] "OPTIONS /warehouse/status/ HTTP/1.1" 200 0
+[2025-05-11 21:51:57,098][django.server.log_message():187] [INFO] "OPTIONS /warehouse/multiple/?max_page=30 HTTP/1.1" 200 0
+[2025-05-11 21:51:57,106][django.server.log_message():187] [INFO] "OPTIONS /wms/inboundBills/?bound_status=0 HTTP/1.1" 200 0
+[2025-05-11 21:51:57,123][django.server.log_message():187] [INFO] "OPTIONS /wms/outboundBills/?bound_status=0 HTTP/1.1" 200 0
+[2025-05-11 21:51:57,470][django.server.log_message():187] [INFO] "GET /warehouse/department/?max_page=1000 HTTP/1.1" 200 9377
+[2025-05-11 21:51:57,606][django.server.log_message():187] [INFO] "GET /warehouse/boundtype/ HTTP/1.1" 200 233
+[2025-05-11 21:51:57,705][django.server.log_message():187] [INFO] "GET /staff/?staff_name=PDA1 HTTP/1.1" 200 286
+[2025-05-11 21:51:57,732][django.server.log_message():187] [INFO] "GET /warehouse/boundcodetype/ HTTP/1.1" 200 250
+[2025-05-11 21:51:57,896][django.server.log_message():187] [INFO] "GET /warehouse/multiple/?max_page=30 HTTP/1.1" 200 371
+[2025-05-11 21:51:57,996][django.server.log_message():187] [INFO] "GET /bound/list/?page=1&base_type=0&page_size=11 HTTP/1.1" 200 4872
+[2025-05-11 21:51:58,092][django.server.log_message():187] [INFO] "GET /warehouse/boundbusiness/ HTTP/1.1" 200 229
+[2025-05-11 21:51:58,106][django.server.log_message():187] [INFO] "GET /warehouse/status/ HTTP/1.1" 200 600
+[2025-05-11 21:51:58,220][django.server.log_message():187] [INFO] "GET /wms/inboundBills/?bound_status=0 HTTP/1.1" 200 52
+[2025-05-11 21:51:58,232][django.server.log_message():187] [INFO] "GET /wms/outboundBills/?bound_status=0 HTTP/1.1" 200 431
+[2025-05-11 21:52:01,871][django.server.log_message():187] [INFO] "OPTIONS /warehouse/department/ HTTP/1.1" 200 0
+[2025-05-11 21:52:01,874][django.server.log_message():187] [INFO] "OPTIONS /container/task/?page=1&base_type=0&page_size=11 HTTP/1.1" 200 0
+[2025-05-11 21:52:02,227][django.server.log_message():187] [INFO] "GET /warehouse/status/ HTTP/1.1" 200 600
+[2025-05-11 21:52:02,307][django.server.log_message():187] [INFO] "GET /warehouse/boundtype/ HTTP/1.1" 200 233
+[2025-05-11 21:52:02,474][django.server.log_message():187] [INFO] "GET /warehouse/boundcodetype/ HTTP/1.1" 200 250
+[2025-05-11 21:52:02,528][django.server.log_message():187] [INFO] "GET /warehouse/boundbusiness/ HTTP/1.1" 200 229
+[2025-05-11 21:52:02,576][django.server.log_message():187] [INFO] "GET /container/task/?page=1&base_type=0&page_size=11 HTTP/1.1" 200 52
+[2025-05-11 21:52:02,590][django.server.log_message():187] [INFO] "GET /warehouse/department/ HTTP/1.1" 200 2862
+[2025-05-11 21:52:05,994][django.server.log_message():187] [INFO] "GET /warehouse/status/ HTTP/1.1" 200 600
+[2025-05-11 21:52:06,147][django.server.log_message():187] [INFO] "GET /warehouse/department/?max_page=1000 HTTP/1.1" 200 9377
+[2025-05-11 21:52:06,201][django.server.log_message():187] [INFO] "GET /warehouse/boundbusiness/ HTTP/1.1" 200 229
+[2025-05-11 21:52:06,240][django.server.log_message():187] [INFO] "GET /warehouse/boundtype/ HTTP/1.1" 200 233
+[2025-05-11 21:52:06,451][django.server.log_message():187] [INFO] "GET /warehouse/boundcodetype/ HTTP/1.1" 200 250
+[2025-05-11 21:52:06,512][django.server.log_message():187] [INFO] "GET /bound/list/?page=1&base_type=0&page_size=11 HTTP/1.1" 200 4872
+[2025-05-11 21:52:08,643][django.server.log_message():187] [INFO] "OPTIONS /container/list/?page=1&page_size=11 HTTP/1.1" 200 0
+[2025-05-11 21:52:08,785][django.server.log_message():187] [INFO] "GET /container/list/?page=1&page_size=11 HTTP/1.1" 200 173
+[2025-05-11 21:52:10,732][django.server.log_message():187] [INFO] "OPTIONS /container/detail/?status__lte=2&container=1 HTTP/1.1" 200 0
+[2025-05-11 21:52:10,733][django.server.log_message():187] [INFO] "OPTIONS /container/operate/?status=1&container=1 HTTP/1.1" 200 0
+[2025-05-11 21:52:10,874][django.server.log_message():187] [INFO] "GET /container/detail/?status__lte=2&container=1 HTTP/1.1" 200 52
+[2025-05-11 21:52:10,928][django.server.log_message():187] [INFO] "GET /container/operate/?status=1&container=1 HTTP/1.1" 200 52
+[2025-05-11 21:53:32,558][django.server.log_message():187] [INFO] "POST /container/detail/ HTTP/1.1" 200 170
+[2025-05-11 21:53:36,863][django.server.log_message():187] [INFO] "GET /container/operate/?status=1&container=1 HTTP/1.1" 200 1138
+[2025-05-11 21:53:36,876][django.server.log_message():187] [INFO] "GET /container/detail/?status__lte=2&container=1 HTTP/1.1" 200 1005
+[2025-05-11 21:53:37,087][django.server.log_message():187] [INFO] "GET /wms/outboundBills/?bound_status=0 HTTP/1.1" 200 431
+[2025-05-11 21:53:37,156][django.server.log_message():187] [INFO] "GET /wms/inboundBills/?bound_status=0 HTTP/1.1" 200 52
+[2025-05-11 21:54:02,127][django.server.log_message():187] [INFO] "GET /container/container_wcs/ HTTP/1.1" 200 249
+[2025-05-11 21:54:20,422][django.server.log_message():187] [INFO] "GET /container/container_wcs/update/ HTTP/1.1" 200 148
+[2025-05-11 21:54:27,285][django.server.log_message():187] [INFO] "GET /bound/list/?page=1&base_type=0&page_size=11 HTTP/1.1" 200 4872
+[2025-05-11 21:54:27,297][django.server.log_message():187] [INFO] "GET /warehouse/boundbusiness/ HTTP/1.1" 200 229
+[2025-05-11 21:54:27,332][django.server.log_message():187] [INFO] "GET /warehouse/boundcodetype/ HTTP/1.1" 200 250
+[2025-05-11 21:54:27,422][django.server.log_message():187] [INFO] "GET /warehouse/department/?max_page=1000 HTTP/1.1" 200 9377
+[2025-05-11 21:54:27,426][django.server.log_message():187] [INFO] "GET /warehouse/boundtype/ HTTP/1.1" 200 233
+[2025-05-11 21:54:27,487][django.server.log_message():187] [INFO] "GET /warehouse/status/ HTTP/1.1" 200 600
+[2025-05-11 21:54:28,381][django.server.log_message():187] [INFO] "GET /container/list/?page=1&page_size=11 HTTP/1.1" 200 191
+[2025-05-11 21:54:29,765][django.server.log_message():187] [INFO] "GET /container/operate/?status=1&container=1 HTTP/1.1" 200 1156
+[2025-05-11 21:54:29,797][django.server.log_message():187] [INFO] "GET /container/detail/?status__lte=2&container=1 HTTP/1.1" 200 1023
+[2025-05-11 21:54:33,562][django.server.log_message():187] [INFO] "OPTIONS /bound/list/?page=1&base_type=1&page_size=11 HTTP/1.1" 200 0
+[2025-05-11 21:54:33,732][django.server.log_message():187] [INFO] "GET /warehouse/boundcodetype/ HTTP/1.1" 200 250
+[2025-05-11 21:54:33,897][django.server.log_message():187] [INFO] "GET /warehouse/status/ HTTP/1.1" 200 600
+[2025-05-11 21:54:33,904][django.server.log_message():187] [INFO] "GET /warehouse/boundbusiness/ HTTP/1.1" 200 229
+[2025-05-11 21:54:34,146][django.server.log_message():187] [INFO] "GET /warehouse/boundtype/ HTTP/1.1" 200 233
+[2025-05-11 21:54:34,172][django.server.log_message():187] [INFO] "GET /warehouse/department/ HTTP/1.1" 200 2862
+[2025-05-11 21:54:34,175][django.server.log_message():187] [INFO] "GET /bound/list/?page=1&base_type=1&page_size=11 HTTP/1.1" 200 2247
+[2025-05-11 21:55:17,799][django.server.log_message():187] [INFO] "GET /wms/inboundBills/?bound_status=0 HTTP/1.1" 200 52
+[2025-05-11 21:55:17,816][django.server.log_message():187] [INFO] "GET /wms/outboundBills/?bound_status=0 HTTP/1.1" 200 431
+[2025-05-11 21:56:57,793][django.server.log_message():187] [INFO] "GET /wms/inboundBills/?bound_status=0 HTTP/1.1" 200 52
+[2025-05-11 21:56:57,809][django.server.log_message():187] [INFO] "GET /wms/outboundBills/?bound_status=0 HTTP/1.1" 200 431
+[2025-05-11 21:58:37,778][django.server.log_message():187] [INFO] "GET /wms/inboundBills/?bound_status=0 HTTP/1.1" 200 52
+[2025-05-11 21:58:37,798][django.server.log_message():187] [INFO] "GET /wms/outboundBills/?bound_status=0 HTTP/1.1" 200 431
+[2025-05-11 22:00:59,811][django.server.log_message():187] [INFO] "GET /wms/outboundBills/?bound_status=0 HTTP/1.1" 200 431
+[2025-05-11 22:00:59,839][django.server.log_message():187] [INFO] "GET /wms/inboundBills/?bound_status=0 HTTP/1.1" 200 52
+[2025-05-11 22:01:59,812][django.server.log_message():187] [INFO] "GET /wms/inboundBills/?bound_status=0 HTTP/1.1" 200 52
+[2025-05-11 22:01:59,845][django.server.log_message():187] [INFO] "GET /wms/outboundBills/?bound_status=0 HTTP/1.1" 200 431
+[2025-05-11 22:03:59,812][django.server.log_message():187] [INFO] "GET /wms/inboundBills/?bound_status=0 HTTP/1.1" 200 52
+[2025-05-11 22:03:59,841][django.server.log_message():187] [INFO] "GET /wms/outboundBills/?bound_status=0 HTTP/1.1" 200 431
+[2025-05-11 22:05:59,790][django.server.log_message():187] [INFO] "GET /wms/outboundBills/?bound_status=0 HTTP/1.1" 200 431
+[2025-05-11 22:05:59,808][django.server.log_message():187] [INFO] "GET /wms/inboundBills/?bound_status=0 HTTP/1.1" 200 52
+[2025-05-11 22:06:59,800][django.server.log_message():187] [INFO] "GET /wms/inboundBills/?bound_status=0 HTTP/1.1" 200 52
+[2025-05-11 22:06:59,826][django.server.log_message():187] [INFO] "GET /wms/outboundBills/?bound_status=0 HTTP/1.1" 200 431
+[2025-05-11 22:08:59,815][django.server.log_message():187] [INFO] "GET /wms/inboundBills/?bound_status=0 HTTP/1.1" 200 52
+[2025-05-11 22:08:59,848][django.server.log_message():187] [INFO] "GET /wms/outboundBills/?bound_status=0 HTTP/1.1" 200 431
+[2025-05-11 22:10:59,805][django.server.log_message():187] [INFO] "GET /wms/inboundBills/?bound_status=0 HTTP/1.1" 200 52
+[2025-05-11 22:10:59,824][django.server.log_message():187] [INFO] "GET /wms/outboundBills/?bound_status=0 HTTP/1.1" 200 431
+[2025-05-11 22:11:59,809][django.server.log_message():187] [INFO] "GET /wms/outboundBills/?bound_status=0 HTTP/1.1" 200 431
+[2025-05-11 22:11:59,825][django.server.log_message():187] [INFO] "GET /wms/inboundBills/?bound_status=0 HTTP/1.1" 200 52
+[2025-05-11 22:13:27,184][django.server.log_message():187] [INFO] "GET /warehouse/boundtype/ HTTP/1.1" 200 233
+[2025-05-11 22:13:27,190][django.server.log_message():187] [INFO] "GET /warehouse/status/ HTTP/1.1" 200 600
+[2025-05-11 22:13:27,244][django.server.log_message():187] [INFO] "GET /warehouse/boundbusiness/ HTTP/1.1" 200 229
+[2025-05-11 22:13:27,305][django.server.log_message():187] [INFO] "GET /bound/list/?page=1&base_type=0&page_size=11 HTTP/1.1" 200 4872
+[2025-05-11 22:13:27,327][django.server.log_message():187] [INFO] "GET /warehouse/department/?max_page=1000 HTTP/1.1" 200 9377
+[2025-05-11 22:13:27,343][django.server.log_message():187] [INFO] "GET /warehouse/boundcodetype/ HTTP/1.1" 200 250
+[2025-05-11 22:13:28,507][django.server.log_message():187] [INFO] "OPTIONS /bound/list/19/ HTTP/1.1" 200 0
+[2025-05-11 22:13:28,508][django.server.log_message():187] [INFO] "OPTIONS /bound/detail/?bound_list=19 HTTP/1.1" 200 0
+[2025-05-11 22:13:28,624][django.server.log_message():187] [INFO] "GET /bound/detail/?bound_list=19 HTTP/1.1" 200 52
+[2025-05-11 22:13:28,659][django.server.log_message():187] [INFO] "GET /bound/list/19/ HTTP/1.1" 200 401
+[2025-05-11 22:13:37,064][django.server.log_message():187] [INFO] "GET /wms/inboundBills/?bound_status=0 HTTP/1.1" 200 52
+[2025-05-11 22:13:37,191][django.server.log_message():187] [INFO] "GET /wms/outboundBills/?bound_status=0 HTTP/1.1" 200 431
+[2025-05-11 22:13:37,521][django.server.log_message():187] [INFO] "GET /bound/list/19/ HTTP/1.1" 200 401
+[2025-05-11 22:13:37,530][django.server.log_message():187] [INFO] "GET /bound/detail/?bound_list=19 HTTP/1.1" 200 52
+[2025-05-11 22:13:40,137][django.server.log_message():187] [INFO] "OPTIONS /warehouse/product/?product_name__icontains=1&max_page=1000 HTTP/1.1" 200 0
+[2025-05-11 22:13:40,289][django.server.log_message():187] [INFO] "GET /warehouse/product/?product_name__icontains=1&max_page=1000 HTTP/1.1" 200 1233
+[2025-05-11 22:14:32,682][django.server.log_message():187] [INFO] "OPTIONS /bound/batch/ HTTP/1.1" 200 0
+[2025-05-11 22:14:32,815][django.server.log_message():187] [INFO] "POST /bound/batch/ HTTP/1.1" 200 616
+[2025-05-11 22:14:32,832][django.server.log_message():187] [INFO] "OPTIONS /bound/detail/ HTTP/1.1" 200 0
+[2025-05-11 22:14:32,923][django.server.log_message():187] [INFO] "POST /bound/detail/ HTTP/1.1" 200 214
+[2025-05-11 22:14:33,303][django.server.log_message():187] [INFO] "GET /bound/list/19/ HTTP/1.1" 200 401
+[2025-05-11 22:14:33,334][django.server.log_message():187] [INFO] "GET /bound/detail/?bound_list=19 HTTP/1.1" 200 1184
+[2025-05-11 22:15:17,075][django.server.log_message():187] [INFO] "GET /wms/outboundBills/?bound_status=0 HTTP/1.1" 200 431
+[2025-05-11 22:15:17,160][django.server.log_message():187] [INFO] "GET /wms/inboundBills/?bound_status=0 HTTP/1.1" 200 52
+[2025-05-11 22:16:57,096][django.server.log_message():187] [INFO] "GET /wms/outboundBills/?bound_status=0 HTTP/1.1" 200 431
+[2025-05-11 22:16:57,142][django.server.log_message():187] [INFO] "GET /wms/inboundBills/?bound_status=0 HTTP/1.1" 200 52
+[2025-05-11 22:18:37,857][django.server.log_message():187] [INFO] "GET /wms/inboundBills/?bound_status=0 HTTP/1.1" 200 52
+[2025-05-11 22:18:37,927][django.server.log_message():187] [INFO] "GET /wms/outboundBills/?bound_status=0 HTTP/1.1" 200 431
+[2025-05-11 22:20:29,189][django.server.log_message():187] [INFO] "POST /login/ HTTP/1.1" 200 214
+[2025-05-11 22:20:38,035][django.server.log_message():187] [INFO] "GET /wms/inboundBills/?bound_status=0 HTTP/1.1" 200 52
+[2025-05-11 22:20:38,098][django.server.log_message():187] [INFO] "GET /wms/outboundBills/?bound_status=0 HTTP/1.1" 200 431
+[2025-05-11 22:20:46,676][django.server.log_message():187] [INFO] "GET /container/list/?page=1&page_size=11 HTTP/1.1" 200 191
+[2025-05-11 22:21:59,793][django.server.log_message():187] [INFO] "GET /wms/inboundBills/?bound_status=0 HTTP/1.1" 200 52
+[2025-05-11 22:21:59,818][django.server.log_message():187] [INFO] "GET /wms/outboundBills/?bound_status=0 HTTP/1.1" 200 431
+[2025-05-11 22:23:59,832][django.server.log_message():187] [INFO] "GET /wms/inboundBills/?bound_status=0 HTTP/1.1" 200 52
+[2025-05-11 22:23:59,860][django.server.log_message():187] [INFO] "GET /wms/outboundBills/?bound_status=0 HTTP/1.1" 200 431
+[2025-05-11 22:25:59,769][django.server.log_message():187] [INFO] "GET /wms/inboundBills/?bound_status=0 HTTP/1.1" 200 52
+[2025-05-11 22:25:59,788][django.server.log_message():187] [INFO] "GET /wms/outboundBills/?bound_status=0 HTTP/1.1" 200 431
+[2025-05-11 22:26:59,792][django.server.log_message():187] [INFO] "GET /wms/inboundBills/?bound_status=0 HTTP/1.1" 200 52
+[2025-05-11 22:26:59,812][django.server.log_message():187] [INFO] "GET /wms/outboundBills/?bound_status=0 HTTP/1.1" 200 431
+[2025-05-11 22:28:49,241][django.server.log_message():187] [INFO] "GET /container/list/ HTTP/1.1" 200 191
+[2025-05-11 22:28:53,944][django.request.log_response():241] [ERROR] Internal Server Error: /container/list/
+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 82, in create
+    container_all = ContainerListModel.objects.all().sort_by('container_code')
+AttributeError: 'QuerySet' object has no attribute 'sort_by'
+[2025-05-11 22:28:53,957][django.server.log_message():187] [ERROR] "POST /container/list/ HTTP/1.1" 500 110473
+[2025-05-11 22:28:59,899][django.server.log_message():187] [INFO] "GET /wms/inboundBills/?bound_status=0 HTTP/1.1" 200 52
+[2025-05-11 22:28:59,999][django.server.log_message():187] [INFO] "GET /wms/outboundBills/?bound_status=0 HTTP/1.1" 200 431

+ 1 - 1
templates/src/boot/axios_request.js

@@ -13,7 +13,7 @@ function getBaseUrl (name) {
   return xhr.status === okStatus ? xhr.responseText : null
 }
 // 注意以后修改成服务器的地址
-const baseurl = 'http://192.168.30.72:8008'
+const baseurl = 'http://192.168.1.212:8008'
 
 const axiosInstance = axios.create({
   baseURL: baseurl

+ 287 - 228
templates/src/pages/container/containerlist.vue

@@ -1,3 +1,4 @@
+<!-- eslint-disable camelcase -->
 <template>
   <div style="margin-top: 42px">
     <transition appear enter-active-class="animated fadeIn">
@@ -18,6 +19,7 @@
       >
         <template v-slot:top>
           <q-btn-group push>
+            <q-btn :label="'新增'" icon="add" @click="add()"></q-btn>
             <q-btn :label="$t('refresh')" icon="refresh" @click="reFresh()">
               <q-tooltip
                 content-class="bg-amber text-black shadow-4"
@@ -71,7 +73,7 @@
               </q-td>
             </template>
             <template v-else-if="props.row.id !== editid">
-              <q-td key="detail" :props="props">
+              <q-td key="detail" :props="props" style="max-width: 10px">
                 <q-btn
                   round
                   flat
@@ -87,6 +89,14 @@
                     >{{ "查看批次详情" }}</q-tooltip
                   >
                 </q-btn>
+                <q-btn
+                  icon="print"
+                  flat
+                  v-print="getPrintConfig()"
+                  @click="setCurrentBatch(props.row.container_code)"
+                >
+                  <q-tooltip>打印条码</q-tooltip>
+                </q-btn>
               </q-td>
             </template>
 
@@ -463,404 +473,453 @@
         </q-tab-panels>
       </q-card>
     </q-dialog>
+    <div id="printBarcode" class="print-area">
+      <div class="q-pa-md text-center" style="flex: none">
+        <svg ref="barcodeElement" style="width: 100%; height: auto"></svg>
+      </div>
+    </div>
   </div>
 </template>
 
 <script>
 class ListNode {
-  constructor(value) {
-    this.value = value;
-    this.next = null;
+  constructor (value) {
+    this.value = value
+    this.next = null
   }
 }
 
 class LinkedList {
-  constructor() {
-    this.head = null;
-    this.size = 0;
+  constructor () {
+    this.head = null
+    this.size = 0
   }
 
-  append(value) {
-    const newNode = new ListNode(value);
+  append (value) {
+    const newNode = new ListNode(value)
     if (!this.head) {
-      this.head = newNode;
+      this.head = newNode
     } else {
-      let current = this.head;
+      let current = this.head
       while (current.next) {
-        current = current.next;
+        current = current.next
       }
-      current.next = newNode;
+      current.next = newNode
     }
-    this.size++;
+    this.size++
   }
 
-  delete(value) {
-    if (!this.head) return;
+  delete (value) {
+    if (!this.head) return
 
     if (this.head.value === value) {
-      this.head = this.head.next;
-      this.size--;
-      return;
+      this.head = this.head.next
+      this.size--
+      return
     }
 
-    let current = this.head;
+    let current = this.head
     while (current.next) {
       if (current.next.value === value) {
-        current.next = current.next.next;
-        this.size--;
-        return;
+        current.next = current.next.next
+        this.size--
+        return
       }
-      current = current.next;
+      current = current.next
     }
   }
 
-  toArray() {
-    const result = [];
-    let current = this.head;
+  toArray () {
+    const result = []
+    let current = this.head
     while (current) {
-      result.push({ value: current.value });
-      current = current.next;
+      result.push({ value: current.value })
+      current = current.next
     }
-    return result;
+    return result
   }
 
-  clear() {
-    this.head = null;
-    this.size = 0;
+  clear () {
+    this.head = null
+    this.size = 0
   }
 }
 
-import { getauth, postauth, putauth, deleteauth } from "boot/axios_request";
-import { _ } from "core-js";
-import { date, exportFile, LocalStorage } from "quasar";
+import { getauth, postauth } from 'boot/axios_request'
+import JsBarcode from 'jsbarcode'
+import { LocalStorage } from 'quasar'
 
 export default {
-  name: "PageContainerlist",
-  data() {
+  name: 'PageContainerlist',
+  data () {
     return {
-      goods_code: "",
-      goods_desc: "",
-      openid: "",
-      login_name: "",
-      authin: "0",
-      searchUrl: "",
-      pathname: "container/list/",
-      detailpathname: "container/detail/",
-      pathname_previous: "",
-      pathname_next: "",
-      separator: "cell",
+      goods_code: '',
+      goods_desc: '',
+      openid: '',
+      login_name: '',
+      authin: '0',
+      searchUrl: '',
+      pathname: 'container/list/',
+      detailpathname: 'container/detail/',
+      pathname_previous: '',
+      pathname_next: '',
+      separator: 'cell',
       loading: false,
-      height: "",
+      height: '',
       table_list: [],
       columns: [
-        { name: "detail", label: "详情", field: "detail", align: "center" },
+        { name: 'detail', label: '详情', field: 'detail', align: 'center' },
         {
-          name: "container_code",
+          name: 'container_code',
           required: true,
-          label: "托盘编码",
-          align: "center",
-          field: "container_code",
+          label: '托盘编码',
+          align: 'center',
+          field: 'container_code'
         },
         {
-          name: "current_location",
-          label: "当前位置",
-          field: "current_location",
-          align: "center",
+          name: 'current_location',
+          label: '当前位置',
+          field: 'current_location',
+          align: 'center'
         },
-        { name: "status", label: "托盘状态", field: "status", align: "center" },
+        { name: 'status', label: '托盘状态', field: 'status', align: 'center' },
         {
-          name: "last_operation",
-          label: "上次操作时间",
-          field: "last_operation",
-          align: "center",
-        },
+          name: 'last_operation',
+          label: '上次操作时间',
+          field: 'last_operation',
+          align: 'center'
+        }
       ],
-      filter: "",
+      filter: '',
       pagination: {
         page: 1,
-        rowsPerPage: 11,
+        rowsPerPage: 11
       },
       editid: 0,
       editFormData: {},
       detailForm: false,
-      activeTab: "tab1",
+      activeTab: 'tab1',
       table_detail: [
         {
           container: {
-            container_code: "",
-            current_location: "",
+            container_code: '',
+            current_location: ''
           },
           batch: {
-            bound_number: "",
-            goods_desc: "",
-            goods_weight: "",
-            goods_qty: "",
-            creater: "",
-          },
-        },
+            bound_number: '',
+            goods_desc: '',
+            goods_weight: '',
+            goods_qty: '',
+            creater: ''
+          }
+        }
       ],
       operate_detail: [],
       linkedList: new LinkedList(),
-      newValue: "",
+      newValue: '',
 
-      error1: this.$t("goods.view_goodslist.error1"),
+      error1: this.$t('goods.view_goodslist.error1'),
       current: 1,
       max: 0,
       total: 0,
       paginationIpt: 1,
       onlyread: true,
-    };
+      currentBarcode: ''
+    }
   },
 
   methods: {
-    getList(params = {}) {
-      var _this = this;
-      _this.loading = true;
+    setCurrentBatch (item) {
+      this.currentBarcode = item || ''
+    },
+    getPrintConfig () {
+      this.generateBarcode()
+      return {
+        id: 'printBarcode'
+      }
+    },
+    generateBarcode () {
+      this.$refs.barcodeElement.innerHTML = ''
+
+      try {
+        JsBarcode(this.$refs.barcodeElement, this.currentBarcode, {
+          format: 'CODE128',
+          displayValue: true,
+          fontSize: 16,
+          height: 60,
+          margin: 10
+        })
+      } catch (error) {
+        console.error('条码生成失败:', error)
+      }
+    },
+    add () {
+      postauth('/container/list/', {})
+        .then((res) => {
+          this.$q.notify({
+            message: '添加成功',
+            icon: 'done',
+            color: 'positive'
+          })
+          this.reFresh()
+        })
+        .catch((err) => {
+          this.$q.notify({
+            message: err.detail,
+            icon: 'close',
+            color: 'negative'
+          })
+        })
+    },
+
+    getList (params = {}) {
+      var _this = this
+      _this.loading = true
       // 合并基础参数
       const baseParams = {
         page: _this.current,
-        page_size: _this.pagination.rowsPerPage,
-      };
+        page_size: _this.pagination.rowsPerPage
+      }
 
       // 创建URLSearchParams处理参数
       const queryParams = new URLSearchParams({
         ...baseParams,
-        ...params,
-      });
-      console.log(queryParams);
+        ...params
+      })
+      console.log(queryParams)
       // 过滤空值参数
       Array.from(queryParams.entries()).forEach(([key, value]) => {
-        if (value === "" || value === null || value === undefined) {
-          queryParams.delete(key);
+        if (value === '' || value === null || value === undefined) {
+          queryParams.delete(key)
         }
-      });
+      })
 
       getauth(`${_this.pathname}?${queryParams}`)
         .then((res) => {
-          _this.table_list = res.results;
-          _this.total = res.count;
-          _this.max = Math.ceil(res.count / _this.pagination.rowsPerPage) || 0;
-          _this.pathname_previous = res.previous;
-          _this.pathname_next = res.next;
+          _this.table_list = res.results
+          _this.total = res.count
+          _this.max = Math.ceil(res.count / _this.pagination.rowsPerPage) || 0
+          _this.pathname_previous = res.previous
+          _this.pathname_next = res.next
         })
         .catch((err) => {
           _this.$q.notify({
             message: err.detail,
-            icon: "close",
-            color: "negative",
-          });
+            icon: 'close',
+            color: 'negative'
+          })
         })
         .finally(() => {
-          _this.loading = false;
-        });
+          _this.loading = false
+        })
     },
-    changePageEnter() {
+    changePageEnter () {
       if (Number(this.paginationIpt) < 1) {
-        this.current = 1;
-        this.paginationIpt = 1;
+        this.current = 1
+        this.paginationIpt = 1
       } else if (Number(this.paginationIpt) > this.max) {
-        this.current = this.max;
-        this.paginationIpt = this.max;
+        this.current = this.max
+        this.paginationIpt = this.max
       } else {
-        this.current = Number(this.paginationIpt);
+        this.current = Number(this.paginationIpt)
       }
-      this.getSearchList(this.current);
+      this.getSearchList(this.current)
     },
 
     // 带搜索条件加载
-    getSearchList(page = 1) {
-      this.current = page;
-      this.paginationIpt = page;
+    getSearchList (page = 1) {
+      this.current = page
+      this.paginationIpt = page
       this.getList({
-        container_code__icontains: this.filter,
-      });
+        container_code__icontains: this.filter
+      })
     },
-    getListPrevious() {
-      var _this = this;
-      if (LocalStorage.has("auth")) {
+    getListPrevious () {
+      var _this = this
+      if (LocalStorage.has('auth')) {
         getauth(_this.pathname_previous, {})
           .then((res) => {
-            _this.table_list = res.results;
-            _this.pathname_previous = res.previous;
-            _this.pathname_next = res.next;
+            _this.table_list = res.results
+            _this.pathname_previous = res.previous
+            _this.pathname_next = res.next
           })
           .catch((err) => {
             _this.$q.notify({
               message: err.detail,
-              icon: "close",
-              color: "negative",
-            });
-          });
+              icon: 'close',
+              color: 'negative'
+            })
+          })
       } else {
       }
     },
-    getListNext() {
-      var _this = this;
-      if (LocalStorage.has("auth")) {
+    getListNext () {
+      var _this = this
+      if (LocalStorage.has('auth')) {
         getauth(_this.pathname_next, {})
           .then((res) => {
-            _this.table_list = res.results;
+            _this.table_list = res.results
 
-            _this.pathname_previous = res.previous;
-            _this.pathname_next = res.next;
+            _this.pathname_previous = res.previous
+            _this.pathname_next = res.next
           })
           .catch((err) => {
             _this.$q.notify({
               message: err.detail,
-              icon: "close",
-              color: "negative",
-            });
-          });
+              icon: 'close',
+              color: 'negative'
+            })
+          })
       }
     },
-    reFresh() {
-      var _this = this;
-      _this.getSearchList();
+    reFresh () {
+      var _this = this
+      _this.getSearchList()
     },
-    detailData(e) {
-      var _this = this;
-      _this.detailForm = true;
-      _this.detailid = e.id;
-      console.log("detail查询的id是:", _this.detailid);
+    detailData (e) {
+      var _this = this
+      _this.detailForm = true
+      _this.detailid = e.id
+      console.log('detail查询的id是:', _this.detailid)
       getauth(
-        _this.detailpathname + "?status__lte=2&container=" + _this.detailid
+        _this.detailpathname + '?status__lte=2&container=' + _this.detailid
       )
         .then((res) => {
-          if (res.results.length == 0) {
+          if (res.results.length === 0) {
             _this.table_detail = [
               {
                 container: {
-                  container_code: "",
-                  current_location: "",
+                  container_code: '',
+                  current_location: ''
                 },
                 batch: {
-                  bound_number: "",
-                  goods_desc: "",
-                  goods_weight: "",
-                  goods_qty: "",
-                  creater: "",
-                },
-              },
-            ];
+                  bound_number: '',
+                  goods_desc: '',
+                  goods_weight: '',
+                  goods_qty: '',
+                  creater: ''
+                }
+              }
+            ]
             _this.$q.notify({
-              message: "该托盘暂无物料信息",
-              icon: "close",
-              color: "negative",
-            });
-            return;
+              message: '该托盘暂无物料信息',
+              icon: 'close',
+              color: 'negative'
+            })
+            return
           }
-          _this.table_detail = res.results;
+          _this.table_detail = res.results
         })
         .catch((err) => {
           _this.$q.notify({
             message: err.detail,
-            icon: "close",
-            color: "negative",
-          });
-        });
-      _this.getOperationRecord(e);
+            icon: 'close',
+            color: 'negative'
+          })
+        })
+      _this.getOperationRecord(e)
     },
-    getOperationRecord(row) {
-      var _this = this;
-      _this.operate_detail = [];
-      var operate_detail_container = [];
-      _this.linkedList.clear();
-      getauth("container/operate/?status=1&container=" + row.id)
+    getOperationRecord (row) {
+      var _this = this
+      _this.operate_detail = []
+      var operate_detail_container = []
+      _this.linkedList.clear()
+      getauth('container/operate/?status=1&container=' + row.id)
         .then((res) => {
-          _this.operate_detail = res.results;
-          if (_this.operate_detail.length === 0) return;
+          _this.operate_detail = res.results
+          if (_this.operate_detail.length === 0) return
 
           // 初始化第一个元素
-          operate_detail_container.push(_this.operate_detail[0]);
+          operate_detail_container.push(_this.operate_detail[0])
 
           for (let i = 0; i < _this.operate_detail.length - 1; i++) {
-            const current = _this.operate_detail[i];
-            const next = _this.operate_detail[i + 1];
+            const current = _this.operate_detail[i]
+            const next = _this.operate_detail[i + 1]
             if (current.operation_type === next.operation_type) {
-              operate_detail_container.push(next);
+              operate_detail_container.push(next)
             } else {
-              _this.linkedList.append([...operate_detail_container]);
-              operate_detail_container = [next];
+              _this.linkedList.append([...operate_detail_container])
+              operate_detail_container = [next]
             }
           }
 
           // 添加最后一个分组
           if (operate_detail_container.length > 0) {
-            _this.linkedList.append([...operate_detail_container]);
+            _this.linkedList.append([...operate_detail_container])
           }
         })
         .catch((err) => {
           _this.$q.notify({
             message: err.detail,
-            icon: "close",
-            color: "negative",
-          });
-        });
+            icon: 'close',
+            color: 'negative'
+          })
+        })
     },
-    formatType(type) {
+    formatType (type) {
       switch (type) {
-        case "container":
-          return "组盘";
-        case "outbound":
-          return "出库";
-        case "3":
-          return "盘点";
-        case "4":
-          return "移库";
-        case "5":
-          return "调拨";
-        case "6":
-          return "其他";
+        case 'container':
+          return '组盘'
+        case 'outbound':
+          return '出库'
+        case '3':
+          return '盘点'
+        case '4':
+          return '移库'
+        case '5':
+          return '调拨'
+        case '6':
+          return '其他'
         default:
-          return "未知";
+          return '未知'
       }
     },
-    sortoperatedetail() {
-      var _this = this;
-      console.log("近一个月操作记录", _this.nodeList);
-    },
+    sortoperatedetail () {
+      var _this = this
+      console.log('近一个月操作记录', _this.nodeList)
+    }
   },
-  created() {
-    var _this = this;
-    if (LocalStorage.has("openid")) {
-      _this.openid = LocalStorage.getItem("openid");
+  created () {
+    var _this = this
+    if (LocalStorage.has('openid')) {
+      _this.openid = LocalStorage.getItem('openid')
     } else {
-      _this.openid = "";
-      LocalStorage.set("openid", "");
+      _this.openid = ''
+      LocalStorage.set('openid', '')
     }
-    if (LocalStorage.has("login_name")) {
-      _this.login_name = LocalStorage.getItem("login_name");
+    if (LocalStorage.has('login_name')) {
+      _this.login_name = LocalStorage.getItem('login_name')
     } else {
-      _this.login_name = "";
-      LocalStorage.set("login_name", "");
+      _this.login_name = ''
+      LocalStorage.set('login_name', '')
     }
-    if (LocalStorage.has("auth")) {
-      _this.authin = "1";
-      _this.getList();
+    if (LocalStorage.has('auth')) {
+      _this.authin = '1'
+      _this.getList()
     } else {
-      _this.authin = "0";
+      _this.authin = '0'
     }
   },
-  mounted() {
-    var _this = this;
+  mounted () {
+    var _this = this
     if (_this.$q.platform.is.electron) {
-      _this.height = String(_this.$q.screen.height - 290) + "px";
+      _this.height = String(_this.$q.screen.height - 290) + 'px'
     } else {
-      _this.height = _this.$q.screen.height - 290 + "" + "px";
+      _this.height = _this.$q.screen.height - 290 + '' + 'px'
     }
   },
-  updated() {},
-  destroyed() {},
+  updated () {},
+  destroyed () {},
   computed: {
-    nodeList() {
-      return this.linkedList.toArray();
+    nodeList () {
+      return this.linkedList.toArray()
     },
 
-    listSize() {
-      return this.linkedList.size;
-    },
-  },
-};
+    listSize () {
+      return this.linkedList.size
+    }
+  }
+}
 </script>
 <style scoped>
 /* 添加在 <style> 中 */

+ 2 - 4
templates/src/pages/inbound/asn.vue

@@ -711,7 +711,6 @@
               style="position: absolute; right: 20px; top: 10px; z-index: 100"
             >
               <q-btn
-                v-if="!onlyread"
                 icon="add"
                 flat
                 dense
@@ -777,7 +776,7 @@
                         outlined
                       />
                     </div>
-                    <div class="col" style="max-width: 50px">
+                    <!-- <div class="col" style="max-width: 50px">
                       <q-btn
                         v-if="!onlyread"
                         icon="delete"
@@ -787,7 +786,7 @@
                         @click="addbatch(table_detail.id)"
                         style="margin-top: 1px"
                       />
-                    </div>
+                    </div> -->
                   </div>
                 </template>
               </template>
@@ -810,7 +809,6 @@
         </div>
         <svg ref="barcodeElement" style="width: 100%; height: auto"></svg>
       </div>
-
     </div>
   </div>
 </template>

Datei-Diff unterdrückt, da er zu groß ist
+ 981 - 587
templates/src/pages/outbound/dn.vue


+ 2 - 2
templates/src/router/index.js

@@ -1,7 +1,7 @@
 import Vue from 'vue'
 import VueRouter from 'vue-router'
 import routes from './routes'
-import { LocalStorage } from "quasar";
+import { LocalStorage } from 'quasar'
 
 // 使用 VueRouter 插件
 Vue.use(VueRouter)
@@ -46,4 +46,4 @@ export default function (/* { store, ssrContext } */) {
   })
 
   return Router
-}
+}

+ 27 - 27
templates/src/router/routes.js

@@ -15,7 +15,7 @@ const routes = [{
         path: 'management',
         name: 'management',
         component: () => import('pages/stock/management.vue')
-        
+
       },
 
       {
@@ -43,7 +43,6 @@ const routes = [{
         name: 'binset',
         component: () => import('pages/stock/binset.vue')
       },
-      
 
       // {
       //   path: 'cyclecount',
@@ -59,12 +58,12 @@ const routes = [{
         path: 'handcount',
         name: 'handcount',
         component: () => import('pages/stock/handcount.vue')
-      },
-      // {
-      //   path: 'handcountrecorder',
-      //   name: 'handcountrecorder',
-      //   component: () => import('pages/stock/handcountrecorder.vue')
-      // },
+      }
+        // {
+        //   path: 'handcountrecorder',
+        //   name: 'handcountrecorder',
+        //   component: () => import('pages/stock/handcountrecorder.vue')
+        // },
 
       // {
       //   path: 'binset',
@@ -88,17 +87,17 @@ const routes = [{
       name: 'dashboard',
       component: () => import('pages/dashboard/dashboard.vue'),
       children: [
-      {
-        path: 'inboundAndOutbound',
-        name: 'inboundAndOutbound',
-        component: () => import('pages/dashboard/inboundAndOutbound.vue')
-      },
-      {
-        path:'flows_statements',
-        name:'flows_statements',
-        component: () => import('pages/dashboard/flows_statements.vue')
-      }
-  
+        {
+          path: 'inboundAndOutbound',
+          name: 'inboundAndOutbound',
+          component: () => import('pages/dashboard/inboundAndOutbound.vue')
+        },
+        {
+          path: 'flows_statements',
+          name: 'flows_statements',
+          component: () => import('pages/dashboard/flows_statements.vue')
+        }
+
       ]
     },
     {
@@ -187,11 +186,12 @@ const routes = [{
         name: 'containerdetail',
         component: () => import('pages/container/containerdetail.vue')
       },
-      { path:'containeroperate',
-        name:'containeroperate',
+      {
+        path: 'containeroperate',
+        name: 'containeroperate',
         component: () => import('pages/container/containeroperate.vue')
       }
-    ]
+      ]
     },
     {
       path: 'outbound',
@@ -299,7 +299,7 @@ const routes = [{
         name: 'task',
         component: () => import('pages/task/task.vue')
       }
-    ]
+      ]
     },
     {
       path: 'warehouse',
@@ -314,7 +314,7 @@ const routes = [{
         path: 'department',
         name: 'department',
         component: () => import('pages/warehouse/department.vue')
-      
+
       },
       {
         path: 'boundcodetype',
@@ -337,11 +337,11 @@ const routes = [{
         component: () => import('pages/warehouse/boundstatus.vue')
       },
       {
-        path:'product',
-        name:'product',
+        path: 'product',
+        name: 'product',
         component: () => import('pages/warehouse/product.vue')
       }
-      
+
       ]
     },
     {