Browse Source

权限组件管理

flower_bs 3 weeks ago
parent
commit
2cb3fc176a
100 changed files with 203 additions and 145 deletions
  1. 3 3
      container/views.py
  2. 128 104
      data_base/test_permission.py
  3. 4 0
      staff/urls.py
  4. 33 3
      staff/views.py
  5. 0 1
      templates/dist/spa/css/10.888183b4.css
  6. 1 0
      templates/dist/spa/css/10.916b292f.css
  7. 0 1
      templates/dist/spa/css/12.676916e5.css
  8. 1 0
      templates/dist/spa/css/12.c5bafa54.css
  9. 1 0
      templates/dist/spa/css/13.84ffb38a.css
  10. 0 1
      templates/dist/spa/css/13.be283b5e.css
  11. 1 0
      templates/dist/spa/css/15.80435c82.css
  12. 0 1
      templates/dist/spa/css/15.bec12cd9.css
  13. 1 0
      templates/dist/spa/css/16.074df1c7.css
  14. 0 1
      templates/dist/spa/css/16.819dd245.css
  15. 0 1
      templates/dist/spa/css/18.3c7078c1.css
  16. 1 0
      templates/dist/spa/css/18.9e7bbbba.css
  17. 0 1
      templates/dist/spa/css/20.710ed6db.css
  18. 1 0
      templates/dist/spa/css/20.8fe0c02a.css
  19. 0 1
      templates/dist/spa/css/21.712d6cf2.css
  20. 1 0
      templates/dist/spa/css/21.abdf7366.css
  21. 1 0
      templates/dist/spa/css/22.83beb898.css
  22. 0 1
      templates/dist/spa/css/22.bb6b4a4d.css
  23. 1 0
      templates/dist/spa/css/24.6dea747f.css
  24. 0 1
      templates/dist/spa/css/24.71123cd8.css
  25. 1 0
      templates/dist/spa/css/28.2f5a0931.css
  26. 0 1
      templates/dist/spa/css/28.98f0278c.css
  27. 0 1
      templates/dist/spa/css/29.1bb0db04.css
  28. 1 0
      templates/dist/spa/css/29.e6923623.css
  29. 0 1
      templates/dist/spa/css/3.311220c7.css
  30. 1 0
      templates/dist/spa/css/3.8440293a.css
  31. 0 1
      templates/dist/spa/css/33.326b06df.css
  32. 1 0
      templates/dist/spa/css/33.c527e777.css
  33. 1 0
      templates/dist/spa/css/35.44ddcebd.css
  34. 0 1
      templates/dist/spa/css/35.6dbcf0b0.css
  35. 1 0
      templates/dist/spa/css/36.2ac1dad1.css
  36. 0 1
      templates/dist/spa/css/36.efd62105.css
  37. 0 1
      templates/dist/spa/css/7.4ad5acff.css
  38. 1 0
      templates/dist/spa/css/7.86480c2e.css
  39. 1 0
      templates/dist/spa/css/8.807d7096.css
  40. 0 1
      templates/dist/spa/css/8.958ee95c.css
  41. 1 0
      templates/dist/spa/css/9.2848e7d0.css
  42. 0 1
      templates/dist/spa/css/9.4ff827cd.css
  43. 1 0
      templates/dist/spa/css/chunk-common.ab88e7ab.css
  44. 0 1
      templates/dist/spa/css/chunk-common.ae7a4dbb.css
  45. 1 1
      templates/dist/spa/index.html
  46. 0 1
      templates/dist/spa/js/10.1b3b425b.js
  47. BIN
      templates/dist/spa/js/10.1b3b425b.js.gz
  48. 1 0
      templates/dist/spa/js/10.e0ac08b4.js
  49. BIN
      templates/dist/spa/js/10.e0ac08b4.js.gz
  50. 0 1
      templates/dist/spa/js/12.106e9a2a.js
  51. BIN
      templates/dist/spa/js/12.106e9a2a.js.gz
  52. 1 0
      templates/dist/spa/js/12.19cc6ade.js
  53. BIN
      templates/dist/spa/js/12.19cc6ade.js.gz
  54. 1 0
      templates/dist/spa/js/13.07a76275.js
  55. BIN
      templates/dist/spa/js/13.07a76275.js.gz
  56. 0 1
      templates/dist/spa/js/13.1e53bf7d.js
  57. BIN
      templates/dist/spa/js/13.1e53bf7d.js.gz
  58. 0 1
      templates/dist/spa/js/15.330a5295.js
  59. BIN
      templates/dist/spa/js/15.330a5295.js.gz
  60. 1 0
      templates/dist/spa/js/15.9a14922a.js
  61. BIN
      templates/dist/spa/js/15.9a14922a.js.gz
  62. BIN
      templates/dist/spa/js/16.3ece4848.js.gz
  63. 1 1
      templates/dist/spa/js/16.3ece4848.js
  64. BIN
      templates/dist/spa/js/16.499d4616.js.gz
  65. 0 1
      templates/dist/spa/js/18.d40d7bbc.js
  66. BIN
      templates/dist/spa/js/18.d40d7bbc.js.gz
  67. 1 0
      templates/dist/spa/js/18.e5ecfb11.js
  68. BIN
      templates/dist/spa/js/18.e5ecfb11.js.gz
  69. 1 0
      templates/dist/spa/js/20.5869c533.js
  70. BIN
      templates/dist/spa/js/20.5869c533.js.gz
  71. 0 1
      templates/dist/spa/js/20.ea0af978.js
  72. BIN
      templates/dist/spa/js/20.ea0af978.js.gz
  73. 1 0
      templates/dist/spa/js/21.43a20687.js
  74. BIN
      templates/dist/spa/js/21.43a20687.js.gz
  75. 0 1
      templates/dist/spa/js/21.bcad4888.js
  76. BIN
      templates/dist/spa/js/21.bcad4888.js.gz
  77. 0 1
      templates/dist/spa/js/22.6644b430.js
  78. BIN
      templates/dist/spa/js/22.6644b430.js.gz
  79. 1 0
      templates/dist/spa/js/22.f4d41e96.js
  80. BIN
      templates/dist/spa/js/22.f4d41e96.js.gz
  81. 0 1
      templates/dist/spa/js/24.663cf4fc.js
  82. BIN
      templates/dist/spa/js/24.663cf4fc.js.gz
  83. 1 0
      templates/dist/spa/js/24.cb0c46eb.js
  84. BIN
      templates/dist/spa/js/24.cb0c46eb.js.gz
  85. 0 1
      templates/dist/spa/js/28.31f52024.js
  86. BIN
      templates/dist/spa/js/28.31f52024.js.gz
  87. 1 0
      templates/dist/spa/js/28.8d0422a3.js
  88. BIN
      templates/dist/spa/js/28.8d0422a3.js.gz
  89. 1 0
      templates/dist/spa/js/29.1bae39fb.js
  90. BIN
      templates/dist/spa/js/29.1bae39fb.js.gz
  91. 0 1
      templates/dist/spa/js/29.aab2b5f7.js
  92. BIN
      templates/dist/spa/js/29.aab2b5f7.js.gz
  93. 1 0
      templates/dist/spa/js/3.5b010f7e.js
  94. BIN
      templates/dist/spa/js/3.5b010f7e.js.gz
  95. 0 1
      templates/dist/spa/js/3.ac572f85.js
  96. BIN
      templates/dist/spa/js/3.ac572f85.js.gz
  97. 0 1
      templates/dist/spa/js/33.6c10ece7.js
  98. BIN
      templates/dist/spa/js/33.6c10ece7.js.gz
  99. 1 0
      templates/dist/spa/js/33.abe898ef.js
  100. 0 0
      templates/dist/spa/js/33.abe898ef.js.gz

+ 3 - 3
container/views.py

@@ -790,7 +790,7 @@ class ContainerWCSViewSet(viewsets.ModelViewSet):
     # def generate_container_operate(self, container_obj, bound_number,allocation_target_location):
     def generate_container_operate(self, container_obj, allocation_target_location):
  
-        # 获取容器中所有有效的批次明细(排除已删除和状态3的)
+        # 获取托盘中所有有效的批次明细(排除已删除和状态3的)
         container_detaillist = ContainerDetailModel.objects.filter(
             container=container_obj,
             is_delete=False
@@ -831,13 +831,13 @@ class ContainerWCSViewSet(viewsets.ModelViewSet):
                 to_location=allocation_target_location,
                 timestamp=current_time,
                 operator="WMS",
-                memo=f"WCS入库: 批次: {batch_obj.bound_number}, 数量: {goods_qty}"  # 使用实际容器中的数量
+                memo=f"WCS入库: 批次: {batch_obj.bound_number}, 数量: {goods_qty}"  # 使用实际托盘中的数量
             )
         
     
     def generate_move_container_operate(self, container_obj, allocation_target_location,operate_type="adjust"):
      
-        # 获取容器中所有有效的批次明细
+        # 获取托盘中所有有效的批次明细
         container_detaillist = ContainerDetailModel.objects.filter(
             container=container_obj,
             is_delete=False

+ 128 - 104
data_base/test_permission.py

@@ -16,120 +16,109 @@ def setup_django():
 
 # 定义系统中的页面和组件
 PAGES = [
-
-    # 角色管理
-    {"primary_page": "staff", "path": "/permission/roles", "components": ["add_role", "edit_role", "delete_role"]},
-    
-    
     # 库存管理
-    {"primary_page": "stock","path": "/stock/management", "components": ["create_stock", "adjust_stock", "delete_stock"]},
-    {"primary_page": "stock","path": "/stock/stocklist", "components": ["view_stock", "export_stock"]},
-    {"primary_page": "stock","path": "/stock/stockbinlist", "components": ["view_bin", "edit_bin"]},
-    {"primary_page": "stock","path": "/stock/emptybin", "components": ["view_empty", "mark_empty"]},
-    {"primary_page": "stock","path": "/stock/occupiedbin", "components": ["view_occupied", "release_bin"]},
-    {"primary_page": "stock","path": "/stock/binset", "components": ["add_bin", "edit_bin", "delete_bin"]},
-    {"primary_page": "stock","path": "/stock/handcount", "components": ["start_count", "record_count", "finish_count"]},
+    {"primary_page": "stock","path": "/stock/management", "components": ["view", "edit", "add", "delete", "export", "confirm","adjust","download"]},
+    {"primary_page": "stock","path": "/stock/stocklist", "components": ["view", "edit", "add", "delete", "export", "confirm","adjust","download"]},
+    {"primary_page": "stock","path": "/stock/stockbinlist", "components": ["view", "edit", "add", "delete", "export", "confirm","adjust","download"]},
+    {"primary_page": "stock","path": "/stock/emptybin", "components": ["view", "edit", "add", "delete", "export", "confirm","adjust","download"]},
+    {"primary_page": "stock","path": "/stock/occupiedbin", "components": ["view", "edit", "add", "delete", "export", "confirm","adjust","download"]},
+    {"primary_page": "stock","path": "/stock/binset", "components": ["view", "edit", "add", "delete", "export", "confirm","adjust","download"]},
+    {"primary_page": "stock","path": "/stock/handcount", "components": ["view", "edit", "add", "delete", "export", "confirm","adjust","download"]},
 
     # ERP管理
-    {"primary_page": "erp","path": "/erp/erpasn", "components": ["create_asn", "edit_asn", "delete_asn"]},
-    {"primary_page": "erp","path": "/erp/erpasnmaterial", "components": ["add_material", "edit_material", "delete_material"]},
-    {"primary_page": "erp","path": "/erp/erpdnmaterial", "components": ["add_dn_material", "edit_dn_material", "delete_dn_material"]},
-    {"primary_page": "erp","path": "/erp/erpasnaudit", "components": ["approve_asn", "reject_asn"]},
-    {"primary_page": "erp","path": "/erp/erpdn", "components": ["create_dn", "edit_dn", "delete_dn"]},
-    {"primary_page": "erp","path": "/erp/erpsortstock", "components": ["view_sorted", "export_sorted"]},
+    {"primary_page": "erp","path": "/erp/erpasn", "components": ["view", "edit", "add", "delete", "export", "confirm","adjust","download"]},
+    {"primary_page": "erp","path": "/erp/erpasnmaterial", "components": ["view", "edit", "add", "delete", "export", "confirm","adjust","download"]},
+    {"primary_page": "erp","path": "/erp/erpdnmaterial", "components": ["view", "edit", "add", "delete", "export", "confirm","adjust","download"]},
+    {"primary_page": "erp","path": "/erp/erpasnaudit", "components": ["view", "edit", "add", "delete", "export", "confirm","adjust","download"]},
+    {"primary_page": "erp","path": "/erp/erpdn", "components": ["view", "edit", "add", "delete", "export", "confirm","adjust","download"]},
+    {"primary_page": "erp","path": "/erp/erpsortstock", "components": ["view", "edit", "add", "delete", "export", "confirm","adjust","download"]},
     
     # 入库管理
-    {"primary_page": "inbound","path": "/inbound/asn", "components": ["create_asn", "edit_asn", "delete_asn"]},
-    {"primary_page": "inbound","path": "/inbound/predeliverystock", "components": ["view_pre_delivery", "confirm_delivery"]},
-    {"primary_page": "inbound","path": "/inbound/preloadstock", "components": ["view_pre_load", "confirm_load"]},
-    {"primary_page": "inbound","path": "/inbound/presortstock", "components": ["view_pre_sort", "confirm_sort"]},
-    {"primary_page": "inbound","path": "/inbound/sortstock", "components": ["view_sorted", "export_sorted"]},
-    {"primary_page": "inbound","path": "/inbound/shortage", "components": ["report_shortage", "resolve_shortage"]},
-    {"primary_page": "inbound","path": "/inbound/more", "components": ["view_additional", "add_additional"]},
-    {"primary_page": "inbound","path": "/inbound/asnfinish", "components": ["confirm_finish", "export_finish"]},
-
-
-    # 容器管理
-    {"primary_page":"container","path": "/container/containerlist", "components": ["view_container", "add_container"]},
-    {"primary_page":"container","path": "/container/containerdetail", "components": ["view_detail", "edit_detail"]},
-    {"primary_page":"container","path": "/container/containercategory", "components": ["view_category", "add_category"]},
-    {"primary_page":"container","path": "/container/containeroperate", "components": ["operate_container", "confirm_operation"]},
-    # 仪表盘
-    {"primary_page": "dashboard","path": "/dashboard/inboundAndOutbound", "components": ["view_chart", "export_data"]},
-    {"primary_page": "dashboard","path": "/dashboard/flows_statements", "components": ["view_flow", "filter_flow"]},
-    {"primary_page": "dashboard","path": "/dashboard/flows", "components": ["view_flow_detail", "export_flow"]},
-    {"primary_page": "dashboard","path": "/dashboard/flows_complex", "components": ["view_complex_flow", "analyze_flow"]},
-    {"primary_page": "dashboard","path": "/dashboard/batchlog", "components": ["view_log", "search_log"]},
-    {"primary_page": "dashboard","path": "/dashboard/ContainerDetailLogModel", "components": ["view_container_log", "export_log"]},
-    {"primary_page": "dashboard","path": "/dashboard/MaterialChangeHistory", "components": ["view_history", "compare_history"]},
-    
+    {"primary_page": "inbound","path": "/inbound/asn", "components": ["view", "edit", "add", "delete", "export", "confirm","adjust","download"]},
+    {"primary_page": "inbound","path": "/inbound/predeliverystock", "components": ["view", "edit", "add", "delete", "export", "confirm","adjust","download"]},
+    {"primary_page": "inbound","path": "/inbound/preloadstock", "components": ["view", "edit", "add", "delete", "export", "confirm","adjust","download"]},
+    {"primary_page": "inbound","path": "/inbound/presortstock", "components": ["view", "edit", "add", "delete", "export", "confirm","adjust","download"]},
+    {"primary_page": "inbound","path": "/inbound/sortstock", "components": ["view", "edit", "add", "delete", "export", "confirm","adjust","download"]},
+    {"primary_page": "inbound","path": "/inbound/shortage", "components": ["view", "edit", "add", "delete", "export", "confirm","adjust","download"]},
+    {"primary_page": "inbound","path": "/inbound/more", "components": ["view", "edit", "add", "delete", "export", "confirm","adjust","download"]},
+    {"primary_page": "inbound","path": "/inbound/asnfinish", "components": ["view", "edit", "add", "delete", "export", "confirm","adjust","download"]},
 
+    # 托盘管理
+    {"primary_page":"container","path": "/container/containerlist", "components": ["view", "edit", "add", "delete", "export", "confirm","adjust","download"]},
+    {"primary_page":"container","path": "/container/containerdetail", "components": ["view", "edit", "add", "delete", "export", "confirm","adjust","download"]},
+    {"primary_page":"container","path": "/container/containercategory", "components": ["view", "edit", "add", "delete", "export", "confirm","adjust","download"]},
+    {"primary_page":"container","path": "/container/containeroperate", "components": ["view", "edit", "add", "delete", "export", "confirm","adjust","download"]},
     
-
+    # 仪表盘
+    {"primary_page": "dashboard","path": "/dashboard/inboundAndOutbound", "components": ["view", "edit", "add", "delete", "export", "confirm","adjust","download"]},
+    {"primary_page": "dashboard","path": "/dashboard/flows_statements", "components": ["view", "edit", "add", "delete", "export", "confirm","adjust","download"]},
+    {"primary_page": "dashboard","path": "/dashboard/flows", "components": ["view", "edit", "add", "delete", "export", "confirm","adjust","download"]},
+    {"primary_page": "dashboard","path": "/dashboard/flows_complex", "components": ["view", "edit", "add", "delete", "export", "confirm","adjust","download"]},
+    {"primary_page": "dashboard","path": "/dashboard/batchlog", "components": ["view", "edit", "add", "delete", "export", "confirm","adjust","download"]},
+    {"primary_page": "dashboard","path": "/dashboard/ContainerDetailLogModel", "components": ["view", "edit", "add", "delete", "export", "confirm","adjust","download"]},
+    {"primary_page": "dashboard","path": "/dashboard/MaterialChangeHistory", "components": ["view", "edit", "add", "delete", "export", "confirm","adjust","download"]},
     
     # 统计管理
-    {"primary_page":"count","path": "/count/detaillog", "components": ["view_log", "search_log"]},
-    {"primary_page":"count","path": "/count/batchoperatelog", "components": ["view_batch_log", "export_log"]},
-    {"primary_page":"count","path": "/count/countbatchlog", "components": ["view_count_log", "analyze_log"]},
-    {"primary_page":"count","path": "/count/presortstock", "components": ["view_pre_sort", "export_pre_sort"]},
-    {"primary_page":"count","path": "/count/sortstock", "components": ["view_sorted", "export_sorted"]},
-    {"primary_page":"count","path": "/count/shortage", "components": ["view_shortage", "resolve_shortage"]},
-    {"primary_page":"count","path": "/count/containerDetail", "components": ["view_container", "export_container"]},
-    {"primary_page":"count","path": "/count/batch", "components": ["view_batch", "manage_batch"]},
-    {"primary_page":"count","path": "/count/asnfinish", "components": ["view_finish", "export_finish"]},
-    
-
+    {"primary_page":"count","path": "/count/detaillog", "components": ["view", "edit", "add", "delete", "export", "confirm","adjust","download"]},
+    {"primary_page":"count","path": "/count/batchoperatelog", "components": ["view", "edit", "add", "delete", "export", "confirm","adjust","download"]},
+    {"primary_page":"count","path": "/count/countbatchlog", "components": ["view", "edit", "add", "delete", "export", "confirm","adjust","download"]},
+    {"primary_page":"count","path": "/count/presortstock", "components": ["view", "edit", "add", "delete", "export", "confirm","adjust","download"]},
+    {"primary_page":"count","path": "/count/sortstock", "components": ["view", "edit", "add", "delete", "export", "confirm","adjust","download"]},
+    {"primary_page":"count","path": "/count/shortage", "components": ["view", "edit", "add", "delete", "export", "confirm","adjust","download"]},
+    {"primary_page":"count","path": "/count/containerDetail", "components": ["view", "edit", "add", "delete", "export", "confirm","adjust","download"]},
+    {"primary_page":"count","path": "/count/batch", "components": ["view", "edit", "add", "delete", "export", "confirm","adjust","download"]},
+    {"primary_page":"count","path": "/count/asnfinish", "components": ["view", "edit", "add", "delete", "export", "confirm","adjust","download"]},
     
     # 出库管理
-    {"primary_page":"outbound","path": "/outbound/dn", "components": ["create_dn", "edit_dn", "delete_dn"]},
-    {"primary_page":"outbound","path": "/outbound/freshorder", "components": ["view_fresh", "process_fresh"]},
-    {"primary_page":"outbound","path": "/outbound/neworder", "components": ["view_new", "process_new"]},
-    {"primary_page":"outbound","path": "/outbound/pickstock", "components": ["view_pick", "confirm_pick"]},
-    {"primary_page":"outbound","path": "/outbound/pickedstock", "components": ["view_picked", "confirm_picked"]},
-    {"primary_page":"outbound","path": "/outbound/pickinglist", "components": ["view_list", "export_list"]},
-    {"primary_page":"outbound","path": "/outbound/shippedstock", "components": ["view_shipped", "confirm_shipped"]},
-    {"primary_page":"outbound","path": "/outbound/backorder", "components": ["view_backorder", "process_backorder"]},
-    {"primary_page":"outbound","path": "/outbound/pod", "components": ["view_pod", "confirm_pod"]},
-    {"primary_page":"outbound","path": "/outbound/container_check", "components": ["check_container", "confirm_check"]},
+    {"primary_page":"outbound","path": "/outbound/dn", "components": ["view", "edit", "add", "delete", "export", "confirm","adjust","download"]},
+    {"primary_page":"outbound","path": "/outbound/freshorder", "components": ["view", "edit", "add", "delete", "export", "confirm","adjust","download"]},
+    {"primary_page":"outbound","path": "/outbound/neworder", "components": ["view", "edit", "add", "delete", "export", "confirm","adjust","download"]},
+    {"primary_page":"outbound","path": "/outbound/pickstock", "components": ["view", "edit", "add", "delete", "export", "confirm","adjust","download"]},
+    {"primary_page":"outbound","path": "/outbound/pickedstock", "components": ["view", "edit", "add", "delete", "export", "confirm","adjust","download"]},
+    {"primary_page":"outbound","path": "/outbound/pickinglist", "components": ["view", "edit", "add", "delete", "export", "confirm","adjust","download"]},
+    {"primary_page":"outbound","path": "/outbound/shippedstock", "components": ["view", "edit", "add", "delete", "export", "confirm","adjust","download"]},
+    {"primary_page":"outbound","path": "/outbound/backorder", "components": ["view", "edit", "add", "delete", "export", "confirm","adjust","download"]},
+    {"primary_page":"outbound","path": "/outbound/pod", "components": ["view", "edit", "add", "delete", "export", "confirm","adjust","download"]},
+    {"primary_page":"outbound","path": "/outbound/container_check", "components": ["view", "edit", "add", "delete", "export", "confirm","adjust","download"]},
     
     # 商品管理
-    {"primary_page":"goods","path": "/goods/goodslist", "components": ["view_goods", "add_goods"]},
-    {"primary_page":"goods","path": "/goods/goodsunit", "components": ["view_unit", "add_unit"]},
-    {"primary_page":"goods","path": "/goods/goodsclass", "components": ["view_class", "add_class"]},
-    {"primary_page":"goods","path": "/goods/goodsbrand", "components": ["view_brand", "add_brand"]},
-    {"primary_page":"goods","path": "/goods/goodscolor", "components": ["view_color", "add_color"]},
-    {"primary_page":"goods","path": "/goods/goodsspecs", "components": ["view_specs", "add_specs"]},
-    {"primary_page":"goods","path": "/goods/goodsshape", "components": ["view_shape", "add_shape"]},
-    {"primary_page":"goods","path": "/goods/goodsorigin", "components": ["view_origin", "add_origin"]},
+    {"primary_page":"goods","path": "/goods/goodslist", "components": ["view", "edit", "add", "delete", "export", "confirm","adjust","download"]},
+    {"primary_page":"goods","path": "/goods/goodsunit", "components": ["view", "edit", "add", "delete", "export", "confirm","adjust","download"]},
+    {"primary_page":"goods","path": "/goods/goodsclass", "components": ["view", "edit", "add", "delete", "export", "confirm","adjust","download"]},
+    {"primary_page":"goods","path": "/goods/goodsbrand", "components": ["view", "edit", "add", "delete", "export", "confirm","adjust","download"]},
+    {"primary_page":"goods","path": "/goods/goodscolor", "components": ["view", "edit", "add", "delete", "export", "confirm","adjust","download"]},
+    {"primary_page":"goods","path": "/goods/goodsspecs", "components": ["view", "edit", "add", "delete", "export", "confirm","adjust","download"]},
+    {"primary_page":"goods","path": "/goods/goodsshape", "components": ["view", "edit", "add", "delete", "export", "confirm","adjust","download"]},
+    {"primary_page":"goods","path": "/goods/goodsorigin", "components": ["view", "edit", "add", "delete", "export", "confirm","adjust","download"]},
     
     # 任务管理
-    {"primary_page":"taskpage","path": "/taskpage/task", "components": ["view_task", "create_task", "assign_task"]},
+    {"primary_page":"taskpage","path": "/taskpage/task", "components": ["view", "edit", "add", "delete", "export", "confirm","adjust","download"]},
     
     # 仓库管理
-    {"primary_page":"warehouse","path": "/warehouse/warehouseset", "components": ["view_setting", "edit_setting"]},
-    {"primary_page":"warehouse","path": "/warehouse/department", "components": ["view_department", "add_department"]},
-    {"primary_page":"warehouse","path": "/warehouse/boundcodetype", "components": ["view_code_type", "add_code_type"]},
-    {"primary_page":"warehouse","path": "/warehouse/boundtype", "components": ["view_bound_type", "add_bound_type"]},
-    {"primary_page":"warehouse","path": "/warehouse/boundbusiness", "components": ["view_business", "add_business"]},
-    {"primary_page":"warehouse","path": "/warehouse/status", "components": ["view_status", "edit_status"]},
-    {"primary_page":"warehouse","path": "/warehouse/product", "components": ["view_product", "add_product"]},
+    {"primary_page":"warehouse","path": "/warehouse/warehouseset", "components": ["view", "edit", "add", "delete", "export", "confirm","adjust","download"]},
+    {"primary_page":"warehouse","path": "/warehouse/department", "components": ["view", "edit", "add", "delete", "export", "confirm","adjust","download"]},
+    {"primary_page":"warehouse","path": "/warehouse/boundcodetype", "components": ["view", "edit", "add", "delete", "export", "confirm","adjust","download"]},
+    {"primary_page":"warehouse","path": "/warehouse/boundtype", "components": ["view", "edit", "add", "delete", "export", "confirm","adjust","download"]},
+    {"primary_page":"warehouse","path": "/warehouse/boundbusiness", "components": ["view", "edit", "add", "delete", "export", "confirm","adjust","download"]},
+    {"primary_page":"warehouse","path": "/warehouse/status", "components": ["view", "edit", "add", "delete", "export", "confirm","adjust","download"]},
+    {"primary_page":"warehouse","path": "/warehouse/product", "components": ["view", "edit", "add", "delete", "export", "confirm","adjust","download"]},
     
     # 员工管理
-    {"primary_page":"staff","path": "/staff/stafflist", "components": ["view_staff", "add_staff"]},
-    {"primary_page":"staff","path": "/staff/stafflist_check_code", "components": ["check_code", "reset_code"]},
-    {"primary_page":"staff","path": "/staff/stafftype", "components": ["view_type", "add_type"]},
+    {"primary_page": "staff", "path": "/permission/roles", "components": ["view", "edit", "add", "delete", "export", "confirm","adjust","download"]},
+    {"primary_page":"staff","path": "/staff/stafflist", "components": ["view", "edit", "add", "delete", "export", "confirm","adjust","download"]},
+    {"primary_page":"staff","path": "/staff/stafflist_check_code", "components": ["view", "edit", "add", "delete", "export", "confirm","adjust","download"]},
+    {"primary_page":"staff","path": "/staff/stafftype", "components": ["view", "edit", "add", "delete", "export", "confirm","adjust","download"]},
     
     # 上传中心
-    {"primary_page":"uploadcenter","path": "/uploadcenter/initializeupload", "components": ["init_upload", "process_init"]},
-    {"primary_page":"uploadcenter","path": "/uploadcenter/addupload", "components": ["add_upload", "process_add"]},
+    {"primary_page":"uploadcenter","path": "/uploadcenter/initializeupload", "components": ["view", "edit", "add", "delete", "export", "confirm","adjust","download"]},
+    {"primary_page":"uploadcenter","path": "/uploadcenter/addupload", "components": ["view", "edit", "add", "delete", "export", "confirm","adjust","download"]},
     
     # 下载中心
-    {"primary_page":"downloadcenter","path": "/downloadcenter/downloadinbound", "components": ["download_inbound"]},
-    {"primary_page":"downloadcenter","path": "/downloadcenter/downloadoutbound", "components": ["download_outbound"]},
-    {"primary_page":"downloadcenter","path": "/downloadcenter/downloadstocklist", "components": ["download_stock"]},
-    {"primary_page":"downloadcenter","path": "/downloadcenter/downloadgoodslist", "components": ["download_goods"]},
-    {"primary_page":"downloadcenter","path": "/downloadcenter/downloadbinlist", "components": ["download_bin"]},
-
+    {"primary_page":"downloadcenter","path": "/downloadcenter/downloadinbound", "components": ["view", "edit", "add", "delete", "export", "confirm","adjust","download"]},
+    {"primary_page":"downloadcenter","path": "/downloadcenter/downloadoutbound", "components": ["view", "edit", "add", "delete", "export", "confirm","adjust","download"]},
+    {"primary_page":"downloadcenter","path": "/downloadcenter/downloadstocklist", "components": ["view", "edit", "add", "delete", "export", "confirm","adjust","download"]},
+    {"primary_page":"downloadcenter","path": "/downloadcenter/downloadgoodslist", "components": ["view", "edit", "add", "delete", "export", "confirm","adjust","download"]},
+    {"primary_page":"downloadcenter","path": "/downloadcenter/downloadbinlist", "components": ["view", "edit", "add", "delete", "export", "confirm","adjust","download"]},
 ]
 
 # 定义角色及其权限配置
@@ -142,36 +131,71 @@ ROLES = {
     "经理": {
         "description": "部门经理,拥有大部分管理权限",
         "page_access": [
-            "/dashboard", "/stock", "/inbound", "/outbound", 
-            "/count", "/container", "/goods", "/warehouse", "/staff"
+            "/stock/management","/stock/stockbinlist","/stock/stocklist",
+            "/erp/erpasn","/erp/erpasnmaterial","/erp/erpdnmaterial","/erp/erpdn","/erp/erpsortstock",
+            "/inbound/asn","/inbound/predeliverystock","/inbound/sortstock",
+            "/container/containerlist","/container/containerdetail","/container/containercategory","/container/containeroperate",
+            "/outbound/dn","/outbound/backorder","/outbound/container_check",
+            "/taskpage/task",
+            "/count/batch","/count/countbatchlog","/count/detaillog","/count/batchoperatelog",
+            "/dashboard/flows_statements","/dashboard/flows","/dashboard/MaterialChangeHistory","/dashboard/batchlog","/dashboard/ContainerDetailLogModel",
+            "/warehouse/department","/warehouse/boundcodetype","/warehouse/boundtype","/warehouse/boundbusiness","/warehouse/status","/warehouse/product",
+            "/staff/stafflist","/staff/stafflist_check_code","/staff/stafftype"
         ],
         "component_access": "all"  # 所有组件
     },
+
     "主管": {
         "description": "仓库主管,负责日常运营管理",
         "page_access": [
-            "/stock", "/inbound", "/outbound", "/count", "/container"
+            "/stock/management","/stock/stockbinlist","/stock/stocklist",
+            "/erp/erpasn","/erp/erpasnmaterial","/erp/erpdnmaterial","/erp/erpdn","/erp/erpsortstock",
+            "/inbound/asn","/inbound/predeliverystock","/inbound/sortstock",
+            "/container/containerlist","/container/containerdetail","/container/containercategory",
+            "/outbound/dn","/outbound/backorder","/outbound/container_check",
+            "/taskpage/task",
+            "/count/batch","/count/countbatchlog","/count/detaillog","/count/batchoperatelog",
+            "/dashboard/flows_statements","/dashboard/flows","/dashboard/MaterialChangeHistory","/dashboard/batchlog","/dashboard/ContainerDetailLogModel",
+            # "/warehouse/department","/warehouse/boundcodetype","/warehouse/boundtype","/warehouse/boundbusiness","/warehouse/status","/warehouse/product",
+            "/staff/stafflist","/staff/stafftype"
         ],
         "component_access": [
-            "view", "edit", "add", "delete", "export", "confirm"
+            "view", "edit", "add", "delete", "export", "confirm","adjust","download"
         ]
     },
     "操作员": {
         "description": "仓库操作员,负责具体操作",
         "page_access": [
-            "/stock/stocklist", "/stock/stockbinlist", "/inbound/asn", 
-            "/outbound/pickstock", "/outbound/pickedstock"
+            "/stock/management","/stock/stockbinlist","/stock/stocklist",
+            "/erp/erpasn","/erp/erpasnmaterial","/erp/erpdnmaterial","/erp/erpdn","/erp/erpsortstock",
+            "/inbound/asn","/inbound/predeliverystock","/inbound/sortstock",
+            "/container/containerlist","/container/containercategory",
+            "/outbound/dn","/outbound/backorder","/outbound/container_check",
+            "/taskpage/task",
+            "/count/batch","/count/countbatchlog","/count/detaillog","/count/batchoperatelog",
+            "/dashboard/flows_statements","/dashboard/flows"
+            # "/warehouse/department","/warehouse/boundcodetype","/warehouse/boundtype","/warehouse/boundbusiness","/warehouse/status","/warehouse/product",
+            # "/staff/stafflist","/staff/stafftype"
         ],
         "component_access": [
-            "view", "confirm", "process"
+           "view", "edit", "add","download","confirm"
         ]
     },
     "查看员": {
         "description": "数据查看员,只能查看数据",
         "page_access": [
-            "/dashboard", "/stock/stocklist", "/count/detaillog", "/count","/erp"
+            "/stock/management","/stock/stockbinlist",
+            "/erp/erpasn","/erp/erpasnmaterial","/erp/erpdnmaterial","/erp/erpdn","/erp/erpsortstock",
+            "/inbound/asn","/inbound/predeliverystock","/inbound/sortstock",
+            "/container/containerlist","/container/containercategory",
+            "/outbound/dn","/outbound/backorder","/outbound/container_check",
+            "/taskpage/task",
+            "/count/batch","/count/countbatchlog","/count/detaillog","/count/batchoperatelog",
+            "/dashboard/flows_statements","/dashboard/flows"
+            # "/warehouse/department","/warehouse/boundcodetype","/warehouse/boundtype","/warehouse/boundbusiness","/warehouse/status","/warehouse/product",
+            # "/staff/stafflist","/staff/stafftype"
         ],
-        "component_access": ["view"]
+        "component_access": ["view","download"]
     }
 }
 
@@ -257,16 +281,16 @@ def create_roles_and_assign_permissions():
                 
                 # 处理页面访问权限
                 for page_path in role_config["page_access"]:
-                    # 获取匹配该路径的所有页面权限
+                    # 获取精确匹配该路径的所有页面权限
                     page_perms = all_permissions.filter(
-                        page__startswith=page_path,
+                        page=page_path,  # 使用精确匹配
                         component=None
                     )
                     assigned_permissions.extend(page_perms)
                     
-                    # 获取匹配该路径的组件权限
+                    # 获取精确匹配该路径的组件权限
                     comp_perms = all_permissions.filter(
-                        page__startswith=page_path,
+                        page=page_path,  # 使用精确匹配
                         component__isnull=False
                     )
                     

+ 4 - 0
staff/urls.py

@@ -49,6 +49,10 @@ urlpatterns = [
         'get': 'retrieve',
         'post':'get_page_permissions'
     }), name="role-permissions-detail"),
+    path('role-comPermissions/<str:pk>/', views.RolePageComponentPermissionViewSet.as_view({
+
+        'post':'get_page_component_permissions'
+    }), name="role-permissions-detail"),
     
     # 员工角色分配路由
     path('assign-role/<int:staff_id>/', views.RolePermissionViewSet.as_view({

+ 33 - 3
staff/views.py

@@ -95,9 +95,9 @@ class APIViewSet(viewsets.ModelViewSet):
             return ListModel.objects.none()
 
     def get_serializer_class(self):
-        appid = self.request.META.get('HTTP_APPID')
-        token = self.request.META.get('HTTP_TOKEN')
-        if appid != token :
+
+        staff_type = ListModel.objects.filter(openid=self.request.auth.openid, is_delete=False).first().staff_type
+        if staff_type not in ['admin', '主管', '管理员','经理']:
             if self.action in ['list', 'retrieve', 'destroy']:
                 return serializers.userStaffGetSerializer
             elif self.action in ['create']:
@@ -312,6 +312,36 @@ class RolePagePermissionViewSet(viewsets.ViewSet):
         # 转换为前端需要的格式
         return [{"page": page, "enabled": enabled} for page, enabled in page_access.items()]
     
+class RolePageComponentPermissionViewSet(viewsets.ViewSet):
+    """角色权限配置API"""
+    
+
+    def get_page_component_permissions(self, request, pk=None):
+        """获取特定角色的页面访问权限配置"""
+        try:
+            role = Role.objects.get(name=pk)
+            page = request.data.get('page')
+            if page:
+                fliterpermissions= role.permissions.filter(page=page)
+                serializer = self.get_permissions_group(fliterpermissions)
+                return Response(serializer)
+
+                
+            serializer = self.get_permissions_group(role.permissions.all())
+            return Response(serializer)
+        except Role.DoesNotExist:
+            return Response({"error": "Role not found"}, status=404)
+    
+    def get_permissions_group(self, permissions):
+        # 获取角色关联的所有权限并预取数据
+    
+        page_access = {}
+        for perm in permissions:
+            if perm.component is not None:
+                page_access[perm.component] = perm.enabled
+        
+        # 转换为前端需要的格式
+        return [{"component": component, "enabled": enabled} for component, enabled in page_access.items()]
 
 
 class TypeAPIViewSet(viewsets.ModelViewSet):

+ 0 - 1
templates/dist/spa/css/10.888183b4.css

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

+ 1 - 0
templates/dist/spa/css/10.916b292f.css

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

+ 0 - 1
templates/dist/spa/css/12.676916e5.css

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

+ 1 - 0
templates/dist/spa/css/12.c5bafa54.css

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

+ 1 - 0
templates/dist/spa/css/13.84ffb38a.css

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

+ 0 - 1
templates/dist/spa/css/13.be283b5e.css

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

+ 1 - 0
templates/dist/spa/css/15.80435c82.css

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

+ 0 - 1
templates/dist/spa/css/15.bec12cd9.css

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

+ 1 - 0
templates/dist/spa/css/16.074df1c7.css

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

+ 0 - 1
templates/dist/spa/css/16.819dd245.css

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

File diff suppressed because it is too large
+ 0 - 1
templates/dist/spa/css/18.3c7078c1.css


File diff suppressed because it is too large
+ 1 - 0
templates/dist/spa/css/18.9e7bbbba.css


+ 0 - 1
templates/dist/spa/css/20.710ed6db.css

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

+ 1 - 0
templates/dist/spa/css/20.8fe0c02a.css

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

File diff suppressed because it is too large
+ 0 - 1
templates/dist/spa/css/21.712d6cf2.css


File diff suppressed because it is too large
+ 1 - 0
templates/dist/spa/css/21.abdf7366.css


+ 1 - 0
templates/dist/spa/css/22.83beb898.css

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

File diff suppressed because it is too large
+ 0 - 1
templates/dist/spa/css/22.bb6b4a4d.css


File diff suppressed because it is too large
+ 1 - 0
templates/dist/spa/css/24.6dea747f.css


File diff suppressed because it is too large
+ 0 - 1
templates/dist/spa/css/24.71123cd8.css


+ 1 - 0
templates/dist/spa/css/28.2f5a0931.css

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

+ 0 - 1
templates/dist/spa/css/28.98f0278c.css

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

+ 0 - 1
templates/dist/spa/css/29.1bb0db04.css

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

+ 1 - 0
templates/dist/spa/css/29.e6923623.css

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

File diff suppressed because it is too large
+ 0 - 1
templates/dist/spa/css/3.311220c7.css


File diff suppressed because it is too large
+ 1 - 0
templates/dist/spa/css/3.8440293a.css


+ 0 - 1
templates/dist/spa/css/33.326b06df.css

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

+ 1 - 0
templates/dist/spa/css/33.c527e777.css

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

File diff suppressed because it is too large
+ 1 - 0
templates/dist/spa/css/35.44ddcebd.css


File diff suppressed because it is too large
+ 0 - 1
templates/dist/spa/css/35.6dbcf0b0.css


+ 1 - 0
templates/dist/spa/css/36.2ac1dad1.css

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

+ 0 - 1
templates/dist/spa/css/36.efd62105.css

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

+ 0 - 1
templates/dist/spa/css/7.4ad5acff.css

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

+ 1 - 0
templates/dist/spa/css/7.86480c2e.css

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

+ 1 - 0
templates/dist/spa/css/8.807d7096.css

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

+ 0 - 1
templates/dist/spa/css/8.958ee95c.css

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

+ 1 - 0
templates/dist/spa/css/9.2848e7d0.css

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

+ 0 - 1
templates/dist/spa/css/9.4ff827cd.css

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

+ 1 - 0
templates/dist/spa/css/chunk-common.ab88e7ab.css

@@ -0,0 +1 @@
+[data-v-1c8c3736] .q-field__label{margin-top:8px;align-self:center}[data-v-1c8c3736] .q-field__control-container{padding-left:50px;margin-top:-5px}[data-v-1c8c3736] .q-table .q-editable:hover{background-color:#f0f8ff;cursor:pointer}[data-v-1c8c3736] .q-field__native{padding:5px 8px}[data-v-1c8c3736] .q-table tr.editing{background-color:#e8f5e9!important}

+ 0 - 1
templates/dist/spa/css/chunk-common.ae7a4dbb.css

@@ -1 +0,0 @@
-[data-v-16e5f0ec] .q-field__label{margin-top:8px;align-self:center}[data-v-16e5f0ec] .q-field__control-container{padding-left:50px;margin-top:-5px}[data-v-16e5f0ec] .q-table .q-editable:hover{background-color:#f0f8ff;cursor:pointer}[data-v-16e5f0ec] .q-field__native{padding:5px 8px}[data-v-16e5f0ec] .q-table tr.editing{background-color:#e8f5e9!important}

File diff suppressed because it is too large
+ 1 - 1
templates/dist/spa/index.html


File diff suppressed because it is too large
+ 0 - 1
templates/dist/spa/js/10.1b3b425b.js


BIN
templates/dist/spa/js/10.1b3b425b.js.gz


File diff suppressed because it is too large
+ 1 - 0
templates/dist/spa/js/10.e0ac08b4.js


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


File diff suppressed because it is too large
+ 0 - 1
templates/dist/spa/js/12.106e9a2a.js


BIN
templates/dist/spa/js/12.106e9a2a.js.gz


File diff suppressed because it is too large
+ 1 - 0
templates/dist/spa/js/12.19cc6ade.js


BIN
templates/dist/spa/js/12.19cc6ade.js.gz


File diff suppressed because it is too large
+ 1 - 0
templates/dist/spa/js/13.07a76275.js


BIN
templates/dist/spa/js/13.07a76275.js.gz


File diff suppressed because it is too large
+ 0 - 1
templates/dist/spa/js/13.1e53bf7d.js


BIN
templates/dist/spa/js/13.1e53bf7d.js.gz


File diff suppressed because it is too large
+ 0 - 1
templates/dist/spa/js/15.330a5295.js


BIN
templates/dist/spa/js/15.330a5295.js.gz


File diff suppressed because it is too large
+ 1 - 0
templates/dist/spa/js/15.9a14922a.js


BIN
templates/dist/spa/js/15.9a14922a.js.gz


BIN
templates/dist/spa/js/16.3ece4848.js.gz


File diff suppressed because it is too large
+ 1 - 1
templates/dist/spa/js/16.3ece4848.js


BIN
templates/dist/spa/js/16.499d4616.js.gz


File diff suppressed because it is too large
+ 0 - 1
templates/dist/spa/js/18.d40d7bbc.js


BIN
templates/dist/spa/js/18.d40d7bbc.js.gz


File diff suppressed because it is too large
+ 1 - 0
templates/dist/spa/js/18.e5ecfb11.js


BIN
templates/dist/spa/js/18.e5ecfb11.js.gz


File diff suppressed because it is too large
+ 1 - 0
templates/dist/spa/js/20.5869c533.js


BIN
templates/dist/spa/js/20.5869c533.js.gz


File diff suppressed because it is too large
+ 0 - 1
templates/dist/spa/js/20.ea0af978.js


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


File diff suppressed because it is too large
+ 1 - 0
templates/dist/spa/js/21.43a20687.js


BIN
templates/dist/spa/js/21.43a20687.js.gz


File diff suppressed because it is too large
+ 0 - 1
templates/dist/spa/js/21.bcad4888.js


BIN
templates/dist/spa/js/21.bcad4888.js.gz


File diff suppressed because it is too large
+ 0 - 1
templates/dist/spa/js/22.6644b430.js


BIN
templates/dist/spa/js/22.6644b430.js.gz


File diff suppressed because it is too large
+ 1 - 0
templates/dist/spa/js/22.f4d41e96.js


BIN
templates/dist/spa/js/22.f4d41e96.js.gz


File diff suppressed because it is too large
+ 0 - 1
templates/dist/spa/js/24.663cf4fc.js


BIN
templates/dist/spa/js/24.663cf4fc.js.gz


File diff suppressed because it is too large
+ 1 - 0
templates/dist/spa/js/24.cb0c46eb.js


BIN
templates/dist/spa/js/24.cb0c46eb.js.gz


File diff suppressed because it is too large
+ 0 - 1
templates/dist/spa/js/28.31f52024.js


BIN
templates/dist/spa/js/28.31f52024.js.gz


File diff suppressed because it is too large
+ 1 - 0
templates/dist/spa/js/28.8d0422a3.js


BIN
templates/dist/spa/js/28.8d0422a3.js.gz


File diff suppressed because it is too large
+ 1 - 0
templates/dist/spa/js/29.1bae39fb.js


BIN
templates/dist/spa/js/29.1bae39fb.js.gz


File diff suppressed because it is too large
+ 0 - 1
templates/dist/spa/js/29.aab2b5f7.js


BIN
templates/dist/spa/js/29.aab2b5f7.js.gz


File diff suppressed because it is too large
+ 1 - 0
templates/dist/spa/js/3.5b010f7e.js


BIN
templates/dist/spa/js/3.5b010f7e.js.gz


File diff suppressed because it is too large
+ 0 - 1
templates/dist/spa/js/3.ac572f85.js


BIN
templates/dist/spa/js/3.ac572f85.js.gz


File diff suppressed because it is too large
+ 0 - 1
templates/dist/spa/js/33.6c10ece7.js


BIN
templates/dist/spa/js/33.6c10ece7.js.gz


File diff suppressed because it is too large
+ 1 - 0
templates/dist/spa/js/33.abe898ef.js


+ 0 - 0
templates/dist/spa/js/33.abe898ef.js.gz


Some files were not shown because too many files changed in this diff