From 68e28b5e14ba2de103921aa1ab10f6df7b445ae9 Mon Sep 17 00:00:00 2001
From: clll <1320612696@qq.com>
Date: 星期五, 15 十二月 2023 17:20:45 +0800
Subject: [PATCH] erp重构 各个模块整合

---
 north-glass-erp/northglass-erp/.gitignore                                                                                     |   28 
 north-glass-erp/northglass-erp/src/views/mm/mainProductStock/ProductStock.vue                                                 |   62 
 north-glass-erp/northglass-erp/src/views/pp/reportingWorks/ReportingWorkDetail.vue                                            |  164 
 north-glass-erp/src/main/java/com/example/erp/controller/sd/BasicGlassTypeController.java                                     |   29 
 north-glass-erp/northglass-erp/src/views/pp/report/ProcessToBeCompleted.vue                                                   |   95 
 north-glass-erp/northglass-erp/src/views/sd/order/UpdateOrderCraft.vue                                                        |  174 
 north-glass-erp/northglass-erp/src/views/pp/report/EquipmentOutput.vue                                                        |  104 
 north-glass-erp/northglass-erp/src/views/pp/report/OrderPlanDecomposition.vue                                                 |  113 
 north-glass-erp/northglass-erp/src/views/mm/purchaseReturn/Select.vue                                                         |  255 
 north-glass-erp/northglass-erp/src/views/pp/report/OrderBOMOutside.vue                                                        |  113 
 north-glass-erp/northglass-erp/src/views/pp/processCard/ProcessCard.vue                                                       |   85 
 north-glass-erp/northglass-erp/src/assets/northGlass.ico                                                                      |    0 
 north-glass-erp/northglass-erp/src/stores/userInfo.js                                                                         |   19 
 north-glass-erp/northglass-erp/src/views/pp/Replenish/SelectReplenish.vue                                                     |  258 
 north-glass-erp/northglass-erp/src/views/pp/report/Report.vue                                                                 |  106 
 north-glass-erp/northglass-erp/src/components/basic/product/GlassType.vue                                                     |   33 
 north-glass-erp/northglass-erp/src/views/mm/stockReport/WarehouseReport.vue                                                   |  216 
 north-glass-erp/src/main/java/com/example/erp/entity/userInfo/User.java                                                       |   21 
 north-glass-erp/target/classes/mapper/userInfo/SysMenu.xml                                                                    |   15 
 north-glass-erp/northglass-erp/src/views/sd/order/CreateOrder.vue                                                             |  147 
 north-glass-erp/northglass-erp/src/layout/MainErpView.vue                                                                     |  149 
 north-glass-erp/src/main/java/com/example/erp/mapper/sd/ProductMapper.java                                                    |   11 
 north-glass-erp/northglass-erp/src/views/LoginView.vue                                                                        |  193 
 north-glass-erp/northglass-erp/src/views/pp/processCard/SelectProcessCard.vue                                                 |  180 
 north-glass-erp/northglass-erp/src/views/mm/mainProductStock/OrderAllocation.vue                                              |  130 
 north-glass-erp/northglass-erp/src/views/pp/reportingWorks/QualityInReviewDetail.vue                                          |  192 
 north-glass-erp/northglass-erp/src/views/sd/delivery/CreateDelivery.vue                                                       |  169 
 north-glass-erp/src/main/java/com/example/erp/controller/OrderController.java                                                 |   40 
 north-glass-erp/northglass-erp/src/views/mm/stockReport/SubsidiaryMonthReport.vue                                             |  164 
 north-glass-erp/northglass-erp/src/views/pp/rework/AddRework.vue                                                              |  123 
 north-glass-erp/.idea/dataSources/165c5447-d19a-4aaf-af5f-cee92ae696c2/storage_v2/_src_/schema/sys.zb4BAA.meta                |    2 
 north-glass-erp/northglass-erp/src/views/sd/product/Product.vue                                                               |   58 
 north-glass-erp/northglass-erp/src/views/sd/product/Test.vue                                                                  |   70 
 north-glass-erp/northglass-erp/src/views/mm/mainIngredientStock/AccessoriesMonthlySettlement.vue                              |   12 
 north-glass-erp/.idea/dataSources/165c5447-d19a-4aaf-af5f-cee92ae696c2/storage_v2/_src_/schema/performance_schema.kIw0nw.meta |    2 
 north-glass-erp/northglass-erp/package-lock.json                                                                              | 2310 ++++++
 north-glass-erp/northglass-erp/src/views/mm/mainProductStock/CreateProductStock.vue                                           |  156 
 north-glass-erp/northglass-erp/src/views/mm/mainProductStock/FinishedProductRework.vue                                        |  146 
 north-glass-erp/northglass-erp/src/views/sd/returns/CreateReturns.vue                                                         |  147 
 north-glass-erp/northglass-erp/src/views/mm/mainProductStock/OrderAllocationUpdate.vue                                        |   40 
 north-glass-erp/target/classes/mapper/sd/BasicGlassType.xml                                                                   |   22 
 north-glass-erp/northglass-erp/src/views/pp/report/RawMaterialRequisition.vue                                                 |  103 
 north-glass-erp/src/main/java/com/example/erp/entity/Order.java                                                               |   24 
 north-glass-erp/northglass-erp/src/utils/deepClone.js                                                                         |   16 
 north-glass-erp/northglass-erp/src/views/pp/reportingWorks/ReportingWorks.vue                                                 |   72 
 north-glass-erp/northglass-erp/src/views/sd/customer/SelectCustomer.vue                                                       |   73 
 north-glass-erp/src/main/java/com/example/erp/exception/ServiceException.java                                                 |   12 
 north-glass-erp/.idea/jarRepositories.xml                                                                                     |   30 
 north-glass-erp/northglass-erp/src/views/pp/report/QualityReport.vue                                                          |  104 
 north-glass-erp/northglass-erp/src/views/mm/mainTrader/Trader.vue                                                             |   59 
 north-glass-erp/northglass-erp/src/assets/base.css                                                                            |   86 
 north-glass-erp/northglass-erp/src/views/pp/report/Yield.vue                                                                  |  105 
 north-glass-erp/northglass-erp/src/views/pp/processCard/PrintProcess.vue                                                      |  954 ++
 north-glass-erp/.idea/compiler.xml                                                                                            |   20 
 north-glass-erp/northglass-erp/src/views/pp/workOrder/WorkOrder.vue                                                           |   71 
 north-glass-erp/northglass-erp/src/views/pp/rework/Rework.vue                                                                 |   71 
 north-glass-erp/northglass-erp/src/views/sd/delivery/SelectOrderList.vue                                                      |  106 
 north-glass-erp/northglass-erp/src/views/pp/report/WorkInProgress.vue                                                         |  124 
 north-glass-erp/.idea/dataSources/165c5447-d19a-4aaf-af5f-cee92ae696c2/storage_v2/_src_/schema/erp_user_info.xjxUZg.meta      |    2 
 north-glass-erp/northglass-erp/src/views/mm/purchaseStorage/PurchaseStorage.vue                                               |   36 
 north-glass-erp/northglass-erp/src/views/pp/BOM/StandardBOM.vue                                                               |   94 
 north-glass-erp/src/main/java/com/example/erp/config/SwaggerConfig.java                                                       |   89 
 north-glass-erp/src/main/java/com/example/erp/service/userInfo/SysMenuService.java                                            |   21 
 north-glass-erp/northglass-erp/src/views/mm/purchaseStorage/Select.vue                                                        |  276 
 north-glass-erp/.idea/encodings.xml                                                                                           |    6 
 north-glass-erp/northglass-erp/src/views/mm/mainTrader/CreateTrader.vue                                                       |    9 
 north-glass-erp/northglass-erp/src/views/pp/reportingWorks/QualityInspectionReview.vue                                        |  157 
 north-glass-erp/northglass-erp/src/stores/productGlassType.js                                                                 |   11 
 north-glass-erp/src/main/java/com/example/erp/entity/sd/Product.java                                                          |   24 
 north-glass-erp/src/main/resources/application.yml                                                                            |   31 
 north-glass-erp/src/main/java/com/example/erp/service/userInfo/SysMenuItemService.java                                        |   19 
 north-glass-erp/.idea/dataSources/165c5447-d19a-4aaf-af5f-cee92ae696c2/storage_v2/_src_/schema/testpp.Ena3yw.meta             |    2 
 north-glass-erp/northglass-erp/src/assets/logo.svg                                                                            |    1 
 north-glass-erp/northglass-erp/src/views/pp/Replenish/AddReplenish.vue                                                        |  234 
 north-glass-erp/northglass-erp/src/views/pp/machine/Machine.vue                                                               |   57 
 north-glass-erp/northglass-erp/src/router/index.js                                                                            |  750 +
 north-glass-erp/northglass-erp/src/views/sd/order/OrderReport.vue                                                             |  107 
 north-glass-erp/src/main/java/com/example/erp/config/WebSocketConfig.java                                                     |   20 
 north-glass-erp/.idea/dataSources/165c5447-d19a-4aaf-af5f-cee92ae696c2/storage_v2/_src_/schema/information_schema.FNRwLQ.meta |    2 
 north-glass-erp/northglass-erp/src/stores/counter.js                                                                          |   12 
 north-glass-erp/.idea/dataSources/165c5447-d19a-4aaf-af5f-cee92ae696c2/storage_v2/_src_/schema/mysql.osA4Bg.meta              |    2 
 north-glass-erp/src/main/resources/mapper/userInfo/SysMenu.xml                                                                |   15 
 north-glass-erp/.idea/dataSources/165c5447-d19a-4aaf-af5f-cee92ae696c2/storage_v2/_src_/schema/erp_sd.rUrUsg.meta             |    2 
 north-glass-erp/northglass-erp/src/views/mm/mainProductStock/FinishedProductReturn.vue                                        |   87 
 north-glass-erp/src/main/java/com/example/erp/mapper/userInfo/SysMenuItemMapper.java                                          |   12 
 north-glass-erp/.idea/dataSources/165c5447-d19a-4aaf-af5f-cee92ae696c2/storage_v2/_src_/schema/ztest.DHjtBg.meta              |    2 
 north-glass-erp/northglass-erp/src/views/mm/mainIngredient/CreateIngredients.vue                                              |  201 
 north-glass-erp/.idea/dataSources.xml                                                                                         |   12 
 north-glass-erp/northglass-erp/README.md                                                                                      |   29 
 north-glass-erp/northglass-erp/src/views/sd/product/CreateProduct.vue                                                         |  435 +
 north-glass-erp/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst                            |    4 
 north-glass-erp/northglass-erp/src/views/mm/mainIngredientStock/IngredientsStock.vue                                          |   60 
 north-glass-erp/northglass-erp/src/views/pp/reportingWorks/AddReportingWork.vue                                               |  259 
 north-glass-erp/README.md                                                                                                     |   39 
 north-glass-erp/src/main/java/com/example/erp/controller/userInfo/SysMenuItemController.java                                  |   19 
 north-glass-erp/.idea/dataSources/165c5447-d19a-4aaf-af5f-cee92ae696c2/storage_v2/_src_/schema/erp_user_info.xjxUZg.zip       |    0 
 north-glass-erp/northglass-erp/src/views/pp/workOrder/ReleaseWorkOrder.vue                                                    |  146 
 north-glass-erp/northglass-erp/src/views/sd/customer/Customer.vue                                                             |   47 
 north-glass-erp/src/main/java/com/example/erp/controller/sd/ProductController.java                                            |   21 
 north-glass-erp/.idea/workspace.xml                                                                                           |  377 
 north-glass-erp/src/main/java/com/example/erp/tools/netty/NettyServer.java                                                    |   62 
 north-glass-erp/.idea/vcs.xml                                                                                                 |    6 
 north-glass-erp/src/main/java/com/example/erp/mapper/sd/BasicGlassTypeMapper.java                                             |   13 
 north-glass-erp/northglass-erp/src/views/sd/returns/Returns.vue                                                               |   48 
 north-glass-erp/src/main/java/com/example/erp/entity/userInfo/SysMenuItem.java                                                |   19 
 north-glass-erp/pom.xml                                                                                                       |  171 
 north-glass-erp/src/main/java/com/example/erp/common/Result.java                                                              |   29 
 north-glass-erp/northglass-erp/src/views/sd/order/SelectOrder.vue                                                             |  124 
 north-glass-erp/northglass-erp/src/assets/img.png                                                                             |    0 
 north-glass-erp/src/main/resources/mapper/sd/BasicGlassType.xml                                                               |   22 
 north-glass-erp/northglass-erp/.vscode/extensions.json                                                                        |    3 
 north-glass-erp/src/main/java/com/example/erp/common/CacheUtil.java                                                           |   23 
 north-glass-erp/northglass-erp/src/main.js                                                                                    |   19 
 north-glass-erp/northglass-erp/src/views/pp/processCard/SelectAddProcess.vue                                                  |  148 
 north-glass-erp/.idea/google-java-format.xml                                                                                  |    6 
 north-glass-erp/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst                              |    4 
 north-glass-erp/northglass-erp/src/views/pp/report/ProductionSchedule.vue                                                     |  235 
 north-glass-erp/northglass-erp/src/views/pp/BOM/StandardBOMDetail.vue                                                         |  135 
 north-glass-erp/target/erp-0.0.1-SNAPSHOT.jar.original                                                                        |    0 
 north-glass-erp/northglass-erp/src/views/pp/BOM/BOM.vue                                                                       |   57 
 north-glass-erp/northglass-erp/src/views/pp/processCard/SelectPrintFlowCard.vue                                               |  106 
 north-glass-erp/src/main/java/com/example/erp/mapper/userInfo/SysMenuMapper.java                                              |   14 
 north-glass-erp/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst                      |    1 
 north-glass-erp/northglass-erp/src/views/sd/delivery/Delivery.vue                                                             |   48 
 north-glass-erp/src/main/java/com/example/erp/mapper/OrderMapper.java                                                         |   23 
 north-glass-erp/northglass-erp/src/views/pp/report/DamageReport.vue                                                           |  114 
 north-glass-erp/src/main/java/com/example/erp/service/userInfo/UserService.java                                               |   68 
 north-glass-erp/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst                    |    1 
 north-glass-erp/northglass-erp/src/views/pp/machine/AddMaintenanceAndRepair.vue                                               |  120 
 north-glass-erp/.idea/north-glass-erp.iml                                                                                     |    9 
 north-glass-erp/northglass-erp/src/views/pp/processCard/SplittingDetails.vue                                                  |   92 
 north-glass-erp/northglass-erp/src/views/pp/processCard/AddProcessCard.vue                                                    |  172 
 north-glass-erp/northglass-erp/src/views/mm/purchaseReturn/PurchaseReturn.vue                                                 |   39 
 north-glass-erp/northglass-erp/src/views/pp/BOM/OrderBOMDetails.vue                                                           |  119 
 north-glass-erp/src/main/java/com/example/erp/entity/userInfo/SysMenu.java                                                    |   16 
 north-glass-erp/northglass-erp/src/views/pp/BOM/BenchmarkBOM.vue                                                              |  100 
 north-glass-erp/src/main/java/com/example/erp/config/MyCorsConfig.java                                                        |   20 
 north-glass-erp/northglass-erp/src/views/pp/reportingWorks/SelectReportingWorks.vue                                           |  164 
 north-glass-erp/northglass-erp/src/views/pp/workOrder/SelectAddWorkOrder.vue                                                  |  136 
 north-glass-erp/northglass-erp/vite.config.js                                                                                 |   33 
 north-glass-erp/northglass-erp/src/views/sd/product/SelectProduct.vue                                                         |   84 
 north-glass-erp/src/main/java/com/example/erp/exception/GlobalExceptionHandle.java                                            |   18 
 north-glass-erp/target/classes/application.yml                                                                                |   31 
 north-glass-erp/src/main/resources/mapper/userInfo/SysMenuItem.xml                                                            |   16 
 north-glass-erp/northglass-erp/src/views/mm/mainIngredientStock/OriginalMonthlySettlement.vue                                 |   81 
 north-glass-erp/northglass-erp/index.html                                                                                     |   13 
 north-glass-erp/northglass-erp/src/views/mm/mainIngredient/SelectIngredients.vue                                              |  174 
 north-glass-erp/northglass-erp/src/views/pp/processCard/ReShelving.vue                                                        |   88 
 north-glass-erp/northglass-erp/src/App.vue                                                                                    |   14 
 north-glass-erp/northglass-erp/src/views/mm/mainIngredientStock/SelectIngredientsStock.vue                                    |  277 
 north-glass-erp/src/main/java/com/example/erp/ErpApplication.java                                                             |   20 
 north-glass-erp/northglass-erp/src/views/sd/customer/CreateCustomer.vue                                                       |  133 
 north-glass-erp/northglass-erp/src/utils/webSocket.js                                                                         |  137 
 north-glass-erp/northglass-erp/src/views/pp/BOM/SelectBOM.vue                                                                 |   90 
 north-glass-erp/src/main/java/com/example/erp/tools/WebSocketServerPool.java                                                  |   76 
 north-glass-erp/northglass-erp/src/views/mm/purchaseOrder/Create.vue                                                          |  290 
 north-glass-erp/src/main/java/com/example/erp/config/MybatisPlusConfig.java                                                   |   16 
 north-glass-erp/src/main/java/com/example/erp/entity/sd/BasicGlassType.java                                                   |   17 
 north-glass-erp/northglass-erp/src/views/mm/mainProductStock/FinishedGoodsIssue.vue                                           |  119 
 north-glass-erp/target/classes/mapper/userInfo/User.xml                                                                       |   30 
 north-glass-erp/northglass-erp/src/views/sd/delivery/SelectDelivery.vue                                                       |  105 
 north-glass-erp/src/main/java/com/example/erp/service/sd/BasicGlassTypeServise.java                                           |   48 
 north-glass-erp/src/main/resources/mapper/userInfo/User.xml                                                                   |   30 
 north-glass-erp/northglass-erp/src/views/mm/mainIngredientStock/CreateIngredientsStock.vue                                    |    8 
 north-glass-erp/northglass-erp/src/views/sd/product/Test11.vue                                                                |   96 
 north-glass-erp/northglass-erp/src/views/pp/Replenish/PrintReplenishFlowCard.vue                                              |  167 
 north-glass-erp/northglass-erp/src/views/pp/report/TaskCompletionStatus.vue                                                   |  118 
 north-glass-erp/northglass-erp/src/views/pp/processCard/ProcessCardDetails.vue                                                |  146 
 north-glass-erp/target/classes/mapper/sd/Product.xml                                                                          |   28 
 north-glass-erp/northglass-erp/src/views/mm/mainProductStock/FinishedProductOut.vue                                           |  200 
 north-glass-erp/src/main/java/com/example/erp/controller/userInfo/SysMenuController.java                                      |   29 
 north-glass-erp/src/main/java/com/example/erp/tools/netty/MyWebSocketHandler.java                                             |   83 
 north-glass-erp/src/main/java/com/example/erp/common/Constants.java                                                           |   12 
 north-glass-erp/src/main/java/com/example/erp/tools/netty/MyChannelHandlerPool.java                                           |   26 
 north-glass-erp/src/main/java/com/example/erp/service/sd/ProductService.java                                                  |   19 
 north-glass-erp/northglass-erp/src/utils/request.js                                                                           |   49 
 north-glass-erp/.idea/uiDesigner.xml                                                                                          |  124 
 north-glass-erp/northglass-erp/src/views/sd/returns/SelectReturns.vue                                                         |  104 
 north-glass-erp/target/maven-archiver/pom.properties                                                                          |    3 
 north-glass-erp/northglass-erp/src/views/mm/purchaseOrder/PurchaseOrder.vue                                                   |   33 
 north-glass-erp/northglass-erp/src/views/sd/order/Order.vue                                                                   |   49 
 north-glass-erp/northglass-erp/src/views/pp/Replenish/Replenish.vue                                                           |   72 
 north-glass-erp/.idea/misc.xml                                                                                                |   14 
 north-glass-erp/northglass-erp/src/views/pp/report/SplittingDetailsOutside.vue                                                |   96 
 north-glass-erp/northglass-erp/src/views/mm/mainIngredient/Ingredients.vue                                                    |   59 
 north-glass-erp/.idea/dataSources/165c5447-d19a-4aaf-af5f-cee92ae696c2.xml                                                    | 1882 ++++
 north-glass-erp/target/classes/mapper/userInfo/SysMenuItem.xml                                                                |   16 
 north-glass-erp/northglass-erp/src/views/pp/BOM/OrderBOM.vue                                                                  |   88 
 north-glass-erp/northglass-erp/src/hook/index.js                                                                              |    0 
 north-glass-erp/.idea/dataSources.local.xml                                                                                   |   23 
 north-glass-erp/northglass-erp/src/views/mm/purchaseOrder/Select.vue                                                          |  258 
 north-glass-erp/src/main/java/com/example/erp/config/InterceptorConfig.java                                                   |   30 
 north-glass-erp/northglass-erp/src/views/pp/report/TeamOutput.vue                                                             |  120 
 north-glass-erp/northglass-erp/src/views/sd/delivery/DeliveryReport.vue                                                       |   96 
 north-glass-erp/northglass-erp/src/views/mm/stockReport/StockMonthReport.vue                                                  |  161 
 north-glass-erp/northglass-erp/src/views/pp/machine/AddMachine.vue                                                            |  105 
 north-glass-erp/.idea/sqldialects.xml                                                                                         |    6 
 north-glass-erp/src/main/java/com/example/erp/controller/dto/UserDTO.java                                                     |   10 
 north-glass-erp/src/main/java/com/example/erp/tools/TokenTools.java                                                           |   21 
 north-glass-erp/northglass-erp/src/views/HomeView.vue                                                                         |   29 
 north-glass-erp/northglass-erp/src/views/RegisterView.vue                                                                     |  183 
 north-glass-erp/northglass-erp/src/views/sd/returns/SelectDeliveryList.vue                                                    |  105 
 north-glass-erp/northglass-erp/src/assets/main.css                                                                            |   53 
 north-glass-erp/northglass-erp/src/views/pp/rework/SelectRework.vue                                                           |  159 
 north-glass-erp/src/main/resources/mapper/sd/Product.xml                                                                      |   28 
 north-glass-erp/northglass-erp/config.js                                                                                      |    4 
 north-glass-erp/.mvn/wrapper/maven-wrapper.properties                                                                         |   18 
 north-glass-erp/northglass-erp/src/views/mm/mainTrader/SelectTrader.vue                                                       |  184 
 north-glass-erp/northglass-erp/src/views/pp/machine/MaintenanceAndRepair.vue                                                  |  111 
 north-glass-erp/northglass-erp/src/views/pp/machine/SelectMachine.vue                                                         |  141 
 north-glass-erp/src/main/java/com/example/erp/tools/WebSocketServer.java                                                      |   70 
 north-glass-erp/src/main/java/com/example/erp/mapper/userInfo/UserMapper.java                                                 |   28 
 north-glass-erp/northglass-erp/public/favicon.ico                                                                             |    0 
 north-glass-erp/northglass-erp/src/views/pp/processCard/PrintFlowCard.vue                                                     |  170 
 north-glass-erp/northglass-erp/src/views/mm/mainProductStock/ProductStockList.vue                                             |  287 
 north-glass-erp/src/main/java/com/example/erp/controller/userInfo/UserController.java                                         |   58 
 north-glass-erp/northglass-erp/src/views/mm/stockReport/StockReport.vue                                                       |   33 
 north-glass-erp/northglass-erp/package.json                                                                                   |   24 
 north-glass-erp/northglass-erp/src/views/pp/workOrder/SelectWorkOrder.vue                                                     |  168 
 north-glass-erp/northglass-erp/src/views/pp/workOrder/AddWorkOrder.vue                                                        |   93 
 north-glass-erp/.idea/dataSources/165c5447-d19a-4aaf-af5f-cee92ae696c2/storage_v2/_src_/schema/sd_kd.B3aDBg.meta              |    2 
 north-glass-erp/northglass-erp/public/vuefavicon.ico                                                                          |    0 
 north-glass-erp/src/main/java/com/example/erp/common/interceptor/JwtInterceptor.java                                          |   65 
 north-glass-erp/src/test/java/com/example/erp/ErpApplicationTests.java                                                        |   13 
 north-glass-erp/northglass-erp/src/views/sd/returns/ReturnsReport.vue                                                         |   96 
 225 files changed, 23,011 insertions(+), 0 deletions(-)

diff --git a/north-glass-erp/.idea/compiler.xml b/north-glass-erp/.idea/compiler.xml
new file mode 100644
index 0000000..09d0a24
--- /dev/null
+++ b/north-glass-erp/.idea/compiler.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="CompilerConfiguration">
+    <annotationProcessing>
+      <profile default="true" name="Default" enabled="true" />
+      <profile name="Maven default annotation processors profile" enabled="true">
+        <sourceOutputDir name="target/generated-sources/annotations" />
+        <sourceTestOutputDir name="target/generated-test-sources/test-annotations" />
+        <outputRelativeToContentRoot value="true" />
+        <module name="erp" />
+      </profile>
+    </annotationProcessing>
+  </component>
+  <component name="JavacSettings">
+    <option name="ADDITIONAL_OPTIONS_OVERRIDE">
+      <module name="erp" options="-parameters" />
+      <module name="north-glass-erp" options="-parameters" />
+    </option>
+  </component>
+</project>
\ No newline at end of file
diff --git a/north-glass-erp/.idea/dataSources.local.xml b/north-glass-erp/.idea/dataSources.local.xml
new file mode 100644
index 0000000..8f9f738
--- /dev/null
+++ b/north-glass-erp/.idea/dataSources.local.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="dataSourceStorageLocal" created-in="IU-232.8660.185">
+    <data-source name="@localhost [2]" uuid="165c5447-d19a-4aaf-af5f-cee92ae696c2">
+      <database-info product="MySQL" version="8.0.22" jdbc-version="4.2" driver-name="MySQL Connector/J" driver-version="mysql-connector-java-8.0.25 (Revision: 08be9e9b4cba6aa115f9b27b215887af40b159e0)" dbms="MYSQL" exact-version="8.0.22" exact-driver-version="8.0">
+        <extra-name-characters>#@</extra-name-characters>
+        <identifier-quote-string>`</identifier-quote-string>
+      </database-info>
+      <case-sensitivity plain-identifiers="lower" quoted-identifiers="lower" />
+      <secret-storage>master_key</secret-storage>
+      <user-name>root</user-name>
+      <schema-mapping>
+        <introspection-scope>
+          <node kind="schema">
+            <name qname="@" />
+            <name qname="erp_sd" />
+            <name qname="erp_user_info" />
+          </node>
+        </introspection-scope>
+      </schema-mapping>
+    </data-source>
+  </component>
+</project>
\ No newline at end of file
diff --git a/north-glass-erp/.idea/dataSources.xml b/north-glass-erp/.idea/dataSources.xml
new file mode 100644
index 0000000..5fb506a
--- /dev/null
+++ b/north-glass-erp/.idea/dataSources.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="DataSourceManagerImpl" format="xml" multifile-model="true">
+    <data-source source="LOCAL" name="@localhost [2]" uuid="165c5447-d19a-4aaf-af5f-cee92ae696c2">
+      <driver-ref>mysql.8</driver-ref>
+      <synchronize>true</synchronize>
+      <jdbc-driver>com.mysql.cj.jdbc.Driver</jdbc-driver>
+      <jdbc-url>jdbc:mysql://localhost:3306</jdbc-url>
+      <working-dir>$ProjectFileDir$</working-dir>
+    </data-source>
+  </component>
+</project>
\ No newline at end of file
diff --git a/north-glass-erp/.idea/dataSources/165c5447-d19a-4aaf-af5f-cee92ae696c2.xml b/north-glass-erp/.idea/dataSources/165c5447-d19a-4aaf-af5f-cee92ae696c2.xml
new file mode 100644
index 0000000..3d96d46
--- /dev/null
+++ b/north-glass-erp/.idea/dataSources/165c5447-d19a-4aaf-af5f-cee92ae696c2.xml
@@ -0,0 +1,1882 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<dataSource name="@localhost [2]">
+  <database-model serializer="dbm" dbms="MYSQL" family-id="MYSQL" format-version="4.49">
+    <root id="1"/>
+    <collation id="2" parent="1" name="armscii8_general_ci">
+      <Charset>armscii8</Charset>
+      <DefaultForCharset>1</DefaultForCharset>
+    </collation>
+    <collation id="3" parent="1" name="armscii8_bin">
+      <Charset>armscii8</Charset>
+    </collation>
+    <collation id="4" parent="1" name="ascii_general_ci">
+      <Charset>ascii</Charset>
+      <DefaultForCharset>1</DefaultForCharset>
+    </collation>
+    <collation id="5" parent="1" name="ascii_bin">
+      <Charset>ascii</Charset>
+    </collation>
+    <collation id="6" parent="1" name="big5_chinese_ci">
+      <Charset>big5</Charset>
+      <DefaultForCharset>1</DefaultForCharset>
+    </collation>
+    <collation id="7" parent="1" name="big5_bin">
+      <Charset>big5</Charset>
+    </collation>
+    <collation id="8" parent="1" name="binary">
+      <Charset>binary</Charset>
+      <DefaultForCharset>1</DefaultForCharset>
+    </collation>
+    <collation id="9" parent="1" name="cp1250_general_ci">
+      <Charset>cp1250</Charset>
+      <DefaultForCharset>1</DefaultForCharset>
+    </collation>
+    <collation id="10" parent="1" name="cp1250_czech_cs">
+      <Charset>cp1250</Charset>
+    </collation>
+    <collation id="11" parent="1" name="cp1250_croatian_ci">
+      <Charset>cp1250</Charset>
+    </collation>
+    <collation id="12" parent="1" name="cp1250_bin">
+      <Charset>cp1250</Charset>
+    </collation>
+    <collation id="13" parent="1" name="cp1250_polish_ci">
+      <Charset>cp1250</Charset>
+    </collation>
+    <collation id="14" parent="1" name="cp1251_bulgarian_ci">
+      <Charset>cp1251</Charset>
+    </collation>
+    <collation id="15" parent="1" name="cp1251_ukrainian_ci">
+      <Charset>cp1251</Charset>
+    </collation>
+    <collation id="16" parent="1" name="cp1251_bin">
+      <Charset>cp1251</Charset>
+    </collation>
+    <collation id="17" parent="1" name="cp1251_general_ci">
+      <Charset>cp1251</Charset>
+      <DefaultForCharset>1</DefaultForCharset>
+    </collation>
+    <collation id="18" parent="1" name="cp1251_general_cs">
+      <Charset>cp1251</Charset>
+    </collation>
+    <collation id="19" parent="1" name="cp1256_general_ci">
+      <Charset>cp1256</Charset>
+      <DefaultForCharset>1</DefaultForCharset>
+    </collation>
+    <collation id="20" parent="1" name="cp1256_bin">
+      <Charset>cp1256</Charset>
+    </collation>
+    <collation id="21" parent="1" name="cp1257_lithuanian_ci">
+      <Charset>cp1257</Charset>
+    </collation>
+    <collation id="22" parent="1" name="cp1257_bin">
+      <Charset>cp1257</Charset>
+    </collation>
+    <collation id="23" parent="1" name="cp1257_general_ci">
+      <Charset>cp1257</Charset>
+      <DefaultForCharset>1</DefaultForCharset>
+    </collation>
+    <collation id="24" parent="1" name="cp850_general_ci">
+      <Charset>cp850</Charset>
+      <DefaultForCharset>1</DefaultForCharset>
+    </collation>
+    <collation id="25" parent="1" name="cp850_bin">
+      <Charset>cp850</Charset>
+    </collation>
+    <collation id="26" parent="1" name="cp852_general_ci">
+      <Charset>cp852</Charset>
+      <DefaultForCharset>1</DefaultForCharset>
+    </collation>
+    <collation id="27" parent="1" name="cp852_bin">
+      <Charset>cp852</Charset>
+    </collation>
+    <collation id="28" parent="1" name="cp866_general_ci">
+      <Charset>cp866</Charset>
+      <DefaultForCharset>1</DefaultForCharset>
+    </collation>
+    <collation id="29" parent="1" name="cp866_bin">
+      <Charset>cp866</Charset>
+    </collation>
+    <collation id="30" parent="1" name="cp932_japanese_ci">
+      <Charset>cp932</Charset>
+      <DefaultForCharset>1</DefaultForCharset>
+    </collation>
+    <collation id="31" parent="1" name="cp932_bin">
+      <Charset>cp932</Charset>
+    </collation>
+    <collation id="32" parent="1" name="dec8_swedish_ci">
+      <Charset>dec8</Charset>
+      <DefaultForCharset>1</DefaultForCharset>
+    </collation>
+    <collation id="33" parent="1" name="dec8_bin">
+      <Charset>dec8</Charset>
+    </collation>
+    <collation id="34" parent="1" name="eucjpms_japanese_ci">
+      <Charset>eucjpms</Charset>
+      <DefaultForCharset>1</DefaultForCharset>
+    </collation>
+    <collation id="35" parent="1" name="eucjpms_bin">
+      <Charset>eucjpms</Charset>
+    </collation>
+    <collation id="36" parent="1" name="euckr_korean_ci">
+      <Charset>euckr</Charset>
+      <DefaultForCharset>1</DefaultForCharset>
+    </collation>
+    <collation id="37" parent="1" name="euckr_bin">
+      <Charset>euckr</Charset>
+    </collation>
+    <collation id="38" parent="1" name="gb18030_chinese_ci">
+      <Charset>gb18030</Charset>
+      <DefaultForCharset>1</DefaultForCharset>
+    </collation>
+    <collation id="39" parent="1" name="gb18030_bin">
+      <Charset>gb18030</Charset>
+    </collation>
+    <collation id="40" parent="1" name="gb18030_unicode_520_ci">
+      <Charset>gb18030</Charset>
+    </collation>
+    <collation id="41" parent="1" name="gb2312_chinese_ci">
+      <Charset>gb2312</Charset>
+      <DefaultForCharset>1</DefaultForCharset>
+    </collation>
+    <collation id="42" parent="1" name="gb2312_bin">
+      <Charset>gb2312</Charset>
+    </collation>
+    <collation id="43" parent="1" name="gbk_chinese_ci">
+      <Charset>gbk</Charset>
+      <DefaultForCharset>1</DefaultForCharset>
+    </collation>
+    <collation id="44" parent="1" name="gbk_bin">
+      <Charset>gbk</Charset>
+    </collation>
+    <collation id="45" parent="1" name="geostd8_general_ci">
+      <Charset>geostd8</Charset>
+      <DefaultForCharset>1</DefaultForCharset>
+    </collation>
+    <collation id="46" parent="1" name="geostd8_bin">
+      <Charset>geostd8</Charset>
+    </collation>
+    <collation id="47" parent="1" name="greek_general_ci">
+      <Charset>greek</Charset>
+      <DefaultForCharset>1</DefaultForCharset>
+    </collation>
+    <collation id="48" parent="1" name="greek_bin">
+      <Charset>greek</Charset>
+    </collation>
+    <collation id="49" parent="1" name="hebrew_general_ci">
+      <Charset>hebrew</Charset>
+      <DefaultForCharset>1</DefaultForCharset>
+    </collation>
+    <collation id="50" parent="1" name="hebrew_bin">
+      <Charset>hebrew</Charset>
+    </collation>
+    <collation id="51" parent="1" name="hp8_english_ci">
+      <Charset>hp8</Charset>
+      <DefaultForCharset>1</DefaultForCharset>
+    </collation>
+    <collation id="52" parent="1" name="hp8_bin">
+      <Charset>hp8</Charset>
+    </collation>
+    <collation id="53" parent="1" name="keybcs2_general_ci">
+      <Charset>keybcs2</Charset>
+      <DefaultForCharset>1</DefaultForCharset>
+    </collation>
+    <collation id="54" parent="1" name="keybcs2_bin">
+      <Charset>keybcs2</Charset>
+    </collation>
+    <collation id="55" parent="1" name="koi8r_general_ci">
+      <Charset>koi8r</Charset>
+      <DefaultForCharset>1</DefaultForCharset>
+    </collation>
+    <collation id="56" parent="1" name="koi8r_bin">
+      <Charset>koi8r</Charset>
+    </collation>
+    <collation id="57" parent="1" name="koi8u_general_ci">
+      <Charset>koi8u</Charset>
+      <DefaultForCharset>1</DefaultForCharset>
+    </collation>
+    <collation id="58" parent="1" name="koi8u_bin">
+      <Charset>koi8u</Charset>
+    </collation>
+    <collation id="59" parent="1" name="latin1_german1_ci">
+      <Charset>latin1</Charset>
+    </collation>
+    <collation id="60" parent="1" name="latin1_swedish_ci">
+      <Charset>latin1</Charset>
+      <DefaultForCharset>1</DefaultForCharset>
+    </collation>
+    <collation id="61" parent="1" name="latin1_danish_ci">
+      <Charset>latin1</Charset>
+    </collation>
+    <collation id="62" parent="1" name="latin1_german2_ci">
+      <Charset>latin1</Charset>
+    </collation>
+    <collation id="63" parent="1" name="latin1_bin">
+      <Charset>latin1</Charset>
+    </collation>
+    <collation id="64" parent="1" name="latin1_general_ci">
+      <Charset>latin1</Charset>
+    </collation>
+    <collation id="65" parent="1" name="latin1_general_cs">
+      <Charset>latin1</Charset>
+    </collation>
+    <collation id="66" parent="1" name="latin1_spanish_ci">
+      <Charset>latin1</Charset>
+    </collation>
+    <collation id="67" parent="1" name="latin2_czech_cs">
+      <Charset>latin2</Charset>
+    </collation>
+    <collation id="68" parent="1" name="latin2_general_ci">
+      <Charset>latin2</Charset>
+      <DefaultForCharset>1</DefaultForCharset>
+    </collation>
+    <collation id="69" parent="1" name="latin2_hungarian_ci">
+      <Charset>latin2</Charset>
+    </collation>
+    <collation id="70" parent="1" name="latin2_croatian_ci">
+      <Charset>latin2</Charset>
+    </collation>
+    <collation id="71" parent="1" name="latin2_bin">
+      <Charset>latin2</Charset>
+    </collation>
+    <collation id="72" parent="1" name="latin5_turkish_ci">
+      <Charset>latin5</Charset>
+      <DefaultForCharset>1</DefaultForCharset>
+    </collation>
+    <collation id="73" parent="1" name="latin5_bin">
+      <Charset>latin5</Charset>
+    </collation>
+    <collation id="74" parent="1" name="latin7_estonian_cs">
+      <Charset>latin7</Charset>
+    </collation>
+    <collation id="75" parent="1" name="latin7_general_ci">
+      <Charset>latin7</Charset>
+      <DefaultForCharset>1</DefaultForCharset>
+    </collation>
+    <collation id="76" parent="1" name="latin7_general_cs">
+      <Charset>latin7</Charset>
+    </collation>
+    <collation id="77" parent="1" name="latin7_bin">
+      <Charset>latin7</Charset>
+    </collation>
+    <collation id="78" parent="1" name="macce_general_ci">
+      <Charset>macce</Charset>
+      <DefaultForCharset>1</DefaultForCharset>
+    </collation>
+    <collation id="79" parent="1" name="macce_bin">
+      <Charset>macce</Charset>
+    </collation>
+    <collation id="80" parent="1" name="macroman_general_ci">
+      <Charset>macroman</Charset>
+      <DefaultForCharset>1</DefaultForCharset>
+    </collation>
+    <collation id="81" parent="1" name="macroman_bin">
+      <Charset>macroman</Charset>
+    </collation>
+    <collation id="82" parent="1" name="sjis_japanese_ci">
+      <Charset>sjis</Charset>
+      <DefaultForCharset>1</DefaultForCharset>
+    </collation>
+    <collation id="83" parent="1" name="sjis_bin">
+      <Charset>sjis</Charset>
+    </collation>
+    <collation id="84" parent="1" name="swe7_swedish_ci">
+      <Charset>swe7</Charset>
+      <DefaultForCharset>1</DefaultForCharset>
+    </collation>
+    <collation id="85" parent="1" name="swe7_bin">
+      <Charset>swe7</Charset>
+    </collation>
+    <collation id="86" parent="1" name="tis620_thai_ci">
+      <Charset>tis620</Charset>
+      <DefaultForCharset>1</DefaultForCharset>
+    </collation>
+    <collation id="87" parent="1" name="tis620_bin">
+      <Charset>tis620</Charset>
+    </collation>
+    <collation id="88" parent="1" name="ucs2_general_ci">
+      <Charset>ucs2</Charset>
+      <DefaultForCharset>1</DefaultForCharset>
+    </collation>
+    <collation id="89" parent="1" name="ucs2_bin">
+      <Charset>ucs2</Charset>
+    </collation>
+    <collation id="90" parent="1" name="ucs2_unicode_ci">
+      <Charset>ucs2</Charset>
+    </collation>
+    <collation id="91" parent="1" name="ucs2_icelandic_ci">
+      <Charset>ucs2</Charset>
+    </collation>
+    <collation id="92" parent="1" name="ucs2_latvian_ci">
+      <Charset>ucs2</Charset>
+    </collation>
+    <collation id="93" parent="1" name="ucs2_romanian_ci">
+      <Charset>ucs2</Charset>
+    </collation>
+    <collation id="94" parent="1" name="ucs2_slovenian_ci">
+      <Charset>ucs2</Charset>
+    </collation>
+    <collation id="95" parent="1" name="ucs2_polish_ci">
+      <Charset>ucs2</Charset>
+    </collation>
+    <collation id="96" parent="1" name="ucs2_estonian_ci">
+      <Charset>ucs2</Charset>
+    </collation>
+    <collation id="97" parent="1" name="ucs2_spanish_ci">
+      <Charset>ucs2</Charset>
+    </collation>
+    <collation id="98" parent="1" name="ucs2_swedish_ci">
+      <Charset>ucs2</Charset>
+    </collation>
+    <collation id="99" parent="1" name="ucs2_turkish_ci">
+      <Charset>ucs2</Charset>
+    </collation>
+    <collation id="100" parent="1" name="ucs2_czech_ci">
+      <Charset>ucs2</Charset>
+    </collation>
+    <collation id="101" parent="1" name="ucs2_danish_ci">
+      <Charset>ucs2</Charset>
+    </collation>
+    <collation id="102" parent="1" name="ucs2_lithuanian_ci">
+      <Charset>ucs2</Charset>
+    </collation>
+    <collation id="103" parent="1" name="ucs2_slovak_ci">
+      <Charset>ucs2</Charset>
+    </collation>
+    <collation id="104" parent="1" name="ucs2_spanish2_ci">
+      <Charset>ucs2</Charset>
+    </collation>
+    <collation id="105" parent="1" name="ucs2_roman_ci">
+      <Charset>ucs2</Charset>
+    </collation>
+    <collation id="106" parent="1" name="ucs2_persian_ci">
+      <Charset>ucs2</Charset>
+    </collation>
+    <collation id="107" parent="1" name="ucs2_esperanto_ci">
+      <Charset>ucs2</Charset>
+    </collation>
+    <collation id="108" parent="1" name="ucs2_hungarian_ci">
+      <Charset>ucs2</Charset>
+    </collation>
+    <collation id="109" parent="1" name="ucs2_sinhala_ci">
+      <Charset>ucs2</Charset>
+    </collation>
+    <collation id="110" parent="1" name="ucs2_german2_ci">
+      <Charset>ucs2</Charset>
+    </collation>
+    <collation id="111" parent="1" name="ucs2_croatian_ci">
+      <Charset>ucs2</Charset>
+    </collation>
+    <collation id="112" parent="1" name="ucs2_unicode_520_ci">
+      <Charset>ucs2</Charset>
+    </collation>
+    <collation id="113" parent="1" name="ucs2_vietnamese_ci">
+      <Charset>ucs2</Charset>
+    </collation>
+    <collation id="114" parent="1" name="ucs2_general_mysql500_ci">
+      <Charset>ucs2</Charset>
+    </collation>
+    <collation id="115" parent="1" name="ujis_japanese_ci">
+      <Charset>ujis</Charset>
+      <DefaultForCharset>1</DefaultForCharset>
+    </collation>
+    <collation id="116" parent="1" name="ujis_bin">
+      <Charset>ujis</Charset>
+    </collation>
+    <collation id="117" parent="1" name="utf16_general_ci">
+      <Charset>utf16</Charset>
+      <DefaultForCharset>1</DefaultForCharset>
+    </collation>
+    <collation id="118" parent="1" name="utf16_bin">
+      <Charset>utf16</Charset>
+    </collation>
+    <collation id="119" parent="1" name="utf16_unicode_ci">
+      <Charset>utf16</Charset>
+    </collation>
+    <collation id="120" parent="1" name="utf16_icelandic_ci">
+      <Charset>utf16</Charset>
+    </collation>
+    <collation id="121" parent="1" name="utf16_latvian_ci">
+      <Charset>utf16</Charset>
+    </collation>
+    <collation id="122" parent="1" name="utf16_romanian_ci">
+      <Charset>utf16</Charset>
+    </collation>
+    <collation id="123" parent="1" name="utf16_slovenian_ci">
+      <Charset>utf16</Charset>
+    </collation>
+    <collation id="124" parent="1" name="utf16_polish_ci">
+      <Charset>utf16</Charset>
+    </collation>
+    <collation id="125" parent="1" name="utf16_estonian_ci">
+      <Charset>utf16</Charset>
+    </collation>
+    <collation id="126" parent="1" name="utf16_spanish_ci">
+      <Charset>utf16</Charset>
+    </collation>
+    <collation id="127" parent="1" name="utf16_swedish_ci">
+      <Charset>utf16</Charset>
+    </collation>
+    <collation id="128" parent="1" name="utf16_turkish_ci">
+      <Charset>utf16</Charset>
+    </collation>
+    <collation id="129" parent="1" name="utf16_czech_ci">
+      <Charset>utf16</Charset>
+    </collation>
+    <collation id="130" parent="1" name="utf16_danish_ci">
+      <Charset>utf16</Charset>
+    </collation>
+    <collation id="131" parent="1" name="utf16_lithuanian_ci">
+      <Charset>utf16</Charset>
+    </collation>
+    <collation id="132" parent="1" name="utf16_slovak_ci">
+      <Charset>utf16</Charset>
+    </collation>
+    <collation id="133" parent="1" name="utf16_spanish2_ci">
+      <Charset>utf16</Charset>
+    </collation>
+    <collation id="134" parent="1" name="utf16_roman_ci">
+      <Charset>utf16</Charset>
+    </collation>
+    <collation id="135" parent="1" name="utf16_persian_ci">
+      <Charset>utf16</Charset>
+    </collation>
+    <collation id="136" parent="1" name="utf16_esperanto_ci">
+      <Charset>utf16</Charset>
+    </collation>
+    <collation id="137" parent="1" name="utf16_hungarian_ci">
+      <Charset>utf16</Charset>
+    </collation>
+    <collation id="138" parent="1" name="utf16_sinhala_ci">
+      <Charset>utf16</Charset>
+    </collation>
+    <collation id="139" parent="1" name="utf16_german2_ci">
+      <Charset>utf16</Charset>
+    </collation>
+    <collation id="140" parent="1" name="utf16_croatian_ci">
+      <Charset>utf16</Charset>
+    </collation>
+    <collation id="141" parent="1" name="utf16_unicode_520_ci">
+      <Charset>utf16</Charset>
+    </collation>
+    <collation id="142" parent="1" name="utf16_vietnamese_ci">
+      <Charset>utf16</Charset>
+    </collation>
+    <collation id="143" parent="1" name="utf16le_general_ci">
+      <Charset>utf16le</Charset>
+      <DefaultForCharset>1</DefaultForCharset>
+    </collation>
+    <collation id="144" parent="1" name="utf16le_bin">
+      <Charset>utf16le</Charset>
+    </collation>
+    <collation id="145" parent="1" name="utf32_general_ci">
+      <Charset>utf32</Charset>
+      <DefaultForCharset>1</DefaultForCharset>
+    </collation>
+    <collation id="146" parent="1" name="utf32_bin">
+      <Charset>utf32</Charset>
+    </collation>
+    <collation id="147" parent="1" name="utf32_unicode_ci">
+      <Charset>utf32</Charset>
+    </collation>
+    <collation id="148" parent="1" name="utf32_icelandic_ci">
+      <Charset>utf32</Charset>
+    </collation>
+    <collation id="149" parent="1" name="utf32_latvian_ci">
+      <Charset>utf32</Charset>
+    </collation>
+    <collation id="150" parent="1" name="utf32_romanian_ci">
+      <Charset>utf32</Charset>
+    </collation>
+    <collation id="151" parent="1" name="utf32_slovenian_ci">
+      <Charset>utf32</Charset>
+    </collation>
+    <collation id="152" parent="1" name="utf32_polish_ci">
+      <Charset>utf32</Charset>
+    </collation>
+    <collation id="153" parent="1" name="utf32_estonian_ci">
+      <Charset>utf32</Charset>
+    </collation>
+    <collation id="154" parent="1" name="utf32_spanish_ci">
+      <Charset>utf32</Charset>
+    </collation>
+    <collation id="155" parent="1" name="utf32_swedish_ci">
+      <Charset>utf32</Charset>
+    </collation>
+    <collation id="156" parent="1" name="utf32_turkish_ci">
+      <Charset>utf32</Charset>
+    </collation>
+    <collation id="157" parent="1" name="utf32_czech_ci">
+      <Charset>utf32</Charset>
+    </collation>
+    <collation id="158" parent="1" name="utf32_danish_ci">
+      <Charset>utf32</Charset>
+    </collation>
+    <collation id="159" parent="1" name="utf32_lithuanian_ci">
+      <Charset>utf32</Charset>
+    </collation>
+    <collation id="160" parent="1" name="utf32_slovak_ci">
+      <Charset>utf32</Charset>
+    </collation>
+    <collation id="161" parent="1" name="utf32_spanish2_ci">
+      <Charset>utf32</Charset>
+    </collation>
+    <collation id="162" parent="1" name="utf32_roman_ci">
+      <Charset>utf32</Charset>
+    </collation>
+    <collation id="163" parent="1" name="utf32_persian_ci">
+      <Charset>utf32</Charset>
+    </collation>
+    <collation id="164" parent="1" name="utf32_esperanto_ci">
+      <Charset>utf32</Charset>
+    </collation>
+    <collation id="165" parent="1" name="utf32_hungarian_ci">
+      <Charset>utf32</Charset>
+    </collation>
+    <collation id="166" parent="1" name="utf32_sinhala_ci">
+      <Charset>utf32</Charset>
+    </collation>
+    <collation id="167" parent="1" name="utf32_german2_ci">
+      <Charset>utf32</Charset>
+    </collation>
+    <collation id="168" parent="1" name="utf32_croatian_ci">
+      <Charset>utf32</Charset>
+    </collation>
+    <collation id="169" parent="1" name="utf32_unicode_520_ci">
+      <Charset>utf32</Charset>
+    </collation>
+    <collation id="170" parent="1" name="utf32_vietnamese_ci">
+      <Charset>utf32</Charset>
+    </collation>
+    <collation id="171" parent="1" name="utf8_general_ci">
+      <Charset>utf8</Charset>
+      <DefaultForCharset>1</DefaultForCharset>
+    </collation>
+    <collation id="172" parent="1" name="utf8_tolower_ci">
+      <Charset>utf8</Charset>
+    </collation>
+    <collation id="173" parent="1" name="utf8_bin">
+      <Charset>utf8</Charset>
+    </collation>
+    <collation id="174" parent="1" name="utf8_unicode_ci">
+      <Charset>utf8</Charset>
+    </collation>
+    <collation id="175" parent="1" name="utf8_icelandic_ci">
+      <Charset>utf8</Charset>
+    </collation>
+    <collation id="176" parent="1" name="utf8_latvian_ci">
+      <Charset>utf8</Charset>
+    </collation>
+    <collation id="177" parent="1" name="utf8_romanian_ci">
+      <Charset>utf8</Charset>
+    </collation>
+    <collation id="178" parent="1" name="utf8_slovenian_ci">
+      <Charset>utf8</Charset>
+    </collation>
+    <collation id="179" parent="1" name="utf8_polish_ci">
+      <Charset>utf8</Charset>
+    </collation>
+    <collation id="180" parent="1" name="utf8_estonian_ci">
+      <Charset>utf8</Charset>
+    </collation>
+    <collation id="181" parent="1" name="utf8_spanish_ci">
+      <Charset>utf8</Charset>
+    </collation>
+    <collation id="182" parent="1" name="utf8_swedish_ci">
+      <Charset>utf8</Charset>
+    </collation>
+    <collation id="183" parent="1" name="utf8_turkish_ci">
+      <Charset>utf8</Charset>
+    </collation>
+    <collation id="184" parent="1" name="utf8_czech_ci">
+      <Charset>utf8</Charset>
+    </collation>
+    <collation id="185" parent="1" name="utf8_danish_ci">
+      <Charset>utf8</Charset>
+    </collation>
+    <collation id="186" parent="1" name="utf8_lithuanian_ci">
+      <Charset>utf8</Charset>
+    </collation>
+    <collation id="187" parent="1" name="utf8_slovak_ci">
+      <Charset>utf8</Charset>
+    </collation>
+    <collation id="188" parent="1" name="utf8_spanish2_ci">
+      <Charset>utf8</Charset>
+    </collation>
+    <collation id="189" parent="1" name="utf8_roman_ci">
+      <Charset>utf8</Charset>
+    </collation>
+    <collation id="190" parent="1" name="utf8_persian_ci">
+      <Charset>utf8</Charset>
+    </collation>
+    <collation id="191" parent="1" name="utf8_esperanto_ci">
+      <Charset>utf8</Charset>
+    </collation>
+    <collation id="192" parent="1" name="utf8_hungarian_ci">
+      <Charset>utf8</Charset>
+    </collation>
+    <collation id="193" parent="1" name="utf8_sinhala_ci">
+      <Charset>utf8</Charset>
+    </collation>
+    <collation id="194" parent="1" name="utf8_german2_ci">
+      <Charset>utf8</Charset>
+    </collation>
+    <collation id="195" parent="1" name="utf8_croatian_ci">
+      <Charset>utf8</Charset>
+    </collation>
+    <collation id="196" parent="1" name="utf8_unicode_520_ci">
+      <Charset>utf8</Charset>
+    </collation>
+    <collation id="197" parent="1" name="utf8_vietnamese_ci">
+      <Charset>utf8</Charset>
+    </collation>
+    <collation id="198" parent="1" name="utf8_general_mysql500_ci">
+      <Charset>utf8</Charset>
+    </collation>
+    <collation id="199" parent="1" name="utf8mb4_general_ci">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="200" parent="1" name="utf8mb4_bin">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="201" parent="1" name="utf8mb4_unicode_ci">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="202" parent="1" name="utf8mb4_icelandic_ci">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="203" parent="1" name="utf8mb4_latvian_ci">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="204" parent="1" name="utf8mb4_romanian_ci">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="205" parent="1" name="utf8mb4_slovenian_ci">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="206" parent="1" name="utf8mb4_polish_ci">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="207" parent="1" name="utf8mb4_estonian_ci">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="208" parent="1" name="utf8mb4_spanish_ci">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="209" parent="1" name="utf8mb4_swedish_ci">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="210" parent="1" name="utf8mb4_turkish_ci">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="211" parent="1" name="utf8mb4_czech_ci">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="212" parent="1" name="utf8mb4_danish_ci">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="213" parent="1" name="utf8mb4_lithuanian_ci">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="214" parent="1" name="utf8mb4_slovak_ci">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="215" parent="1" name="utf8mb4_spanish2_ci">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="216" parent="1" name="utf8mb4_roman_ci">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="217" parent="1" name="utf8mb4_persian_ci">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="218" parent="1" name="utf8mb4_esperanto_ci">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="219" parent="1" name="utf8mb4_hungarian_ci">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="220" parent="1" name="utf8mb4_sinhala_ci">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="221" parent="1" name="utf8mb4_german2_ci">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="222" parent="1" name="utf8mb4_croatian_ci">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="223" parent="1" name="utf8mb4_unicode_520_ci">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="224" parent="1" name="utf8mb4_vietnamese_ci">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="225" parent="1" name="utf8mb4_0900_ai_ci">
+      <Charset>utf8mb4</Charset>
+      <DefaultForCharset>1</DefaultForCharset>
+    </collation>
+    <collation id="226" parent="1" name="utf8mb4_de_pb_0900_ai_ci">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="227" parent="1" name="utf8mb4_is_0900_ai_ci">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="228" parent="1" name="utf8mb4_lv_0900_ai_ci">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="229" parent="1" name="utf8mb4_ro_0900_ai_ci">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="230" parent="1" name="utf8mb4_sl_0900_ai_ci">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="231" parent="1" name="utf8mb4_pl_0900_ai_ci">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="232" parent="1" name="utf8mb4_et_0900_ai_ci">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="233" parent="1" name="utf8mb4_es_0900_ai_ci">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="234" parent="1" name="utf8mb4_sv_0900_ai_ci">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="235" parent="1" name="utf8mb4_tr_0900_ai_ci">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="236" parent="1" name="utf8mb4_cs_0900_ai_ci">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="237" parent="1" name="utf8mb4_da_0900_ai_ci">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="238" parent="1" name="utf8mb4_lt_0900_ai_ci">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="239" parent="1" name="utf8mb4_sk_0900_ai_ci">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="240" parent="1" name="utf8mb4_es_trad_0900_ai_ci">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="241" parent="1" name="utf8mb4_la_0900_ai_ci">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="242" parent="1" name="utf8mb4_eo_0900_ai_ci">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="243" parent="1" name="utf8mb4_hu_0900_ai_ci">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="244" parent="1" name="utf8mb4_hr_0900_ai_ci">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="245" parent="1" name="utf8mb4_vi_0900_ai_ci">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="246" parent="1" name="utf8mb4_0900_as_cs">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="247" parent="1" name="utf8mb4_de_pb_0900_as_cs">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="248" parent="1" name="utf8mb4_is_0900_as_cs">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="249" parent="1" name="utf8mb4_lv_0900_as_cs">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="250" parent="1" name="utf8mb4_ro_0900_as_cs">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="251" parent="1" name="utf8mb4_sl_0900_as_cs">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="252" parent="1" name="utf8mb4_pl_0900_as_cs">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="253" parent="1" name="utf8mb4_et_0900_as_cs">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="254" parent="1" name="utf8mb4_es_0900_as_cs">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="255" parent="1" name="utf8mb4_sv_0900_as_cs">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="256" parent="1" name="utf8mb4_tr_0900_as_cs">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="257" parent="1" name="utf8mb4_cs_0900_as_cs">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="258" parent="1" name="utf8mb4_da_0900_as_cs">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="259" parent="1" name="utf8mb4_lt_0900_as_cs">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="260" parent="1" name="utf8mb4_sk_0900_as_cs">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="261" parent="1" name="utf8mb4_es_trad_0900_as_cs">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="262" parent="1" name="utf8mb4_la_0900_as_cs">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="263" parent="1" name="utf8mb4_eo_0900_as_cs">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="264" parent="1" name="utf8mb4_hu_0900_as_cs">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="265" parent="1" name="utf8mb4_hr_0900_as_cs">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="266" parent="1" name="utf8mb4_vi_0900_as_cs">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="267" parent="1" name="utf8mb4_ja_0900_as_cs">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="268" parent="1" name="utf8mb4_ja_0900_as_cs_ks">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="269" parent="1" name="utf8mb4_0900_as_ci">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="270" parent="1" name="utf8mb4_ru_0900_ai_ci">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="271" parent="1" name="utf8mb4_ru_0900_as_cs">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="272" parent="1" name="utf8mb4_zh_0900_as_cs">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <collation id="273" parent="1" name="utf8mb4_0900_bin">
+      <Charset>utf8mb4</Charset>
+    </collation>
+    <schema id="274" parent="1" name="mysql">
+      <CollationName>utf8mb4_0900_ai_ci</CollationName>
+    </schema>
+    <schema id="275" parent="1" name="information_schema">
+      <CollationName>utf8_general_ci</CollationName>
+    </schema>
+    <schema id="276" parent="1" name="performance_schema">
+      <CollationName>utf8mb4_0900_ai_ci</CollationName>
+    </schema>
+    <schema id="277" parent="1" name="sys">
+      <CollationName>utf8mb4_0900_ai_ci</CollationName>
+    </schema>
+    <schema id="278" parent="1" name="gglass">
+      <CollationName>utf8mb4_0900_ai_ci</CollationName>
+    </schema>
+    <schema id="279" parent="1" name="glog">
+      <CollationName>utf8mb4_0900_ai_ci</CollationName>
+    </schema>
+    <schema id="280" parent="1" name="sapsd">
+      <CollationName>utf8mb4_0900_ai_ci</CollationName>
+    </schema>
+    <schema id="281" parent="1" name="sappp">
+      <CollationName>utf8mb4_0900_ai_ci</CollationName>
+    </schema>
+    <schema id="282" parent="1" name="sd">
+      <CollationName>utf8mb4_0900_ai_ci</CollationName>
+    </schema>
+    <schema id="283" parent="1" name="pp">
+      <CollationName>utf8mb4_0900_ai_ci</CollationName>
+    </schema>
+    <schema id="284" parent="1" name="sapglass">
+      <CollationName>utf8mb4_0900_ai_ci</CollationName>
+    </schema>
+    <schema id="285" parent="1" name="sapglog">
+      <CollationName>utf8mb4_0900_ai_ci</CollationName>
+    </schema>
+    <schema id="286" parent="1" name="hr">
+      <CollationName>utf8mb4_0900_ai_ci</CollationName>
+    </schema>
+    <schema id="287" parent="1" name="mm">
+      <CollationName>utf8_general_ci</CollationName>
+    </schema>
+    <schema id="288" parent="1" name="mesgglass">
+      <CollationName>utf8mb4_0900_ai_ci</CollationName>
+    </schema>
+    <schema id="289" parent="1" name="gmms">
+      <CollationName>utf8mb4_0900_ai_ci</CollationName>
+    </schema>
+    <schema id="290" parent="1" name="erp_user_info">
+      <IntrospectionTimestamp>2023-11-23.19:52:30</IntrospectionTimestamp>
+      <LocalIntrospectionTimestamp>2023-11-23.03:52:30</LocalIntrospectionTimestamp>
+      <CollationName>utf8mb4_0900_ai_ci</CollationName>
+    </schema>
+    <schema id="291" parent="1" name="erp_sd">
+      <IntrospectionTimestamp>2023-11-27.16:24:50</IntrospectionTimestamp>
+      <LocalIntrospectionTimestamp>2023-11-27.00:24:50</LocalIntrospectionTimestamp>
+      <CollationName>utf8mb4_0900_ai_ci</CollationName>
+    </schema>
+    <user id="292" parent="1" name="root"/>
+    <user id="293" parent="1" name="mysql.infoschema">
+      <CanLogin>0</CanLogin>
+      <Host>localhost</Host>
+      <Plugin>caching_sha2_password</Plugin>
+    </user>
+    <user id="294" parent="1" name="mysql.session">
+      <CanLogin>0</CanLogin>
+      <Host>localhost</Host>
+      <Plugin>caching_sha2_password</Plugin>
+    </user>
+    <user id="295" parent="1" name="mysql.sys">
+      <CanLogin>0</CanLogin>
+      <Host>localhost</Host>
+      <Plugin>caching_sha2_password</Plugin>
+    </user>
+    <routine id="296" parent="290" name="02">
+      <Definer>root@%</Definer>
+      <RoutineKind>procedure</RoutineKind>
+      <SourceTextLength>443</SourceTextLength>
+    </routine>
+    <routine id="297" parent="290" name="aa">
+      <Definer>root@%</Definer>
+      <RoutineKind>procedure</RoutineKind>
+      <SourceTextLength>458</SourceTextLength>
+    </routine>
+    <routine id="298" parent="290" name="anquan">
+      <Definer>root@%</Definer>
+      <RoutineKind>procedure</RoutineKind>
+      <SourceTextLength>1536</SourceTextLength>
+    </routine>
+    <routine id="299" parent="290" name="app_denglu">
+      <Definer>root@%</Definer>
+      <RoutineKind>procedure</RoutineKind>
+      <SourceTextLength>826</SourceTextLength>
+    </routine>
+    <routine id="300" parent="290" name="app_version">
+      <Definer>root@%</Definer>
+      <RoutineKind>procedure</RoutineKind>
+      <SourceTextLength>73</SourceTextLength>
+    </routine>
+    <routine id="301" parent="290" name="banzuchaxun">
+      <Definer>root@%</Definer>
+      <RoutineKind>procedure</RoutineKind>
+      <SourceTextLength>87</SourceTextLength>
+    </routine>
+    <routine id="302" parent="290" name="bumenchaxun">
+      <Definer>root@%</Definer>
+      <RoutineKind>procedure</RoutineKind>
+      <SourceTextLength>85</SourceTextLength>
+    </routine>
+    <routine id="303" parent="290" name="caiDanQuanXian">
+      <Definer>root@%</Definer>
+      <RoutineKind>procedure</RoutineKind>
+      <SourceTextLength>143</SourceTextLength>
+    </routine>
+    <routine id="304" parent="290" name="caidan">
+      <Definer>root@%</Definer>
+      <RoutineKind>procedure</RoutineKind>
+      <SourceTextLength>629</SourceTextLength>
+    </routine>
+    <routine id="305" parent="290" name="chaxungongneng">
+      <Definer>root@%</Definer>
+      <RoutineKind>procedure</RoutineKind>
+      <SourceTextLength>72</SourceTextLength>
+    </routine>
+    <routine id="306" parent="290" name="chaxunmima">
+      <Definer>root@%</Definer>
+      <RoutineKind>procedure</RoutineKind>
+      <SourceTextLength>66</SourceTextLength>
+    </routine>
+    <routine id="307" parent="290" name="denglu">
+      <Definer>root@%</Definer>
+      <RoutineKind>procedure</RoutineKind>
+      <SourceTextLength>957</SourceTextLength>
+    </routine>
+    <routine id="308" parent="290" name="dingdan_yewuyuan_chaxun1">
+      <Definer>root@%</Definer>
+      <RoutineKind>procedure</RoutineKind>
+      <SourceTextLength>115</SourceTextLength>
+    </routine>
+    <routine id="309" parent="290" name="exitsys">
+      <Definer>root@%</Definer>
+      <RoutineKind>procedure</RoutineKind>
+      <SourceTextLength>559</SourceTextLength>
+    </routine>
+    <routine id="310" parent="290" name="fahuobaobiao">
+      <Definer>root@%</Definer>
+      <RoutineKind>procedure</RoutineKind>
+      <SourceTextLength>6549</SourceTextLength>
+    </routine>
+    <routine id="311" parent="290" name="fenzuquanxian">
+      <Definer>root@%</Definer>
+      <RoutineKind>procedure</RoutineKind>
+      <SourceTextLength>2097</SourceTextLength>
+    </routine>
+    <routine id="312" parent="290" name="gongneng">
+      <Definer>root@%</Definer>
+      <RoutineKind>procedure</RoutineKind>
+      <SourceTextLength>192</SourceTextLength>
+    </routine>
+    <routine id="313" parent="290" name="mimachongzhi">
+      <Definer>root@%</Definer>
+      <RoutineKind>procedure</RoutineKind>
+      <SourceTextLength>108</SourceTextLength>
+    </routine>
+    <routine id="314" parent="290" name="mm">
+      <Definer>root@%</Definer>
+      <RoutineKind>procedure</RoutineKind>
+      <SourceTextLength>345</SourceTextLength>
+    </routine>
+    <routine id="315" parent="290" name="mokuai">
+      <Definer>root@%</Definer>
+      <RoutineKind>procedure</RoutineKind>
+      <SourceTextLength>507</SourceTextLength>
+    </routine>
+    <routine id="316" parent="290" name="mokuaichaxun">
+      <Definer>root@%</Definer>
+      <RoutineKind>procedure</RoutineKind>
+      <SourceTextLength>77</SourceTextLength>
+    </routine>
+    <routine id="317" parent="290" name="quanxian_test">
+      <Definer>root@%</Definer>
+      <RoutineKind>procedure</RoutineKind>
+      <SourceTextLength>241</SourceTextLength>
+    </routine>
+    <routine id="318" parent="290" name="quanxiancaidanchaxun">
+      <Definer>root@%</Definer>
+      <RoutineKind>procedure</RoutineKind>
+      <SourceTextLength>179</SourceTextLength>
+    </routine>
+    <routine id="319" parent="290" name="quanxiangongengchaxun">
+      <Definer>root@%</Definer>
+      <RoutineKind>procedure</RoutineKind>
+      <SourceTextLength>645</SourceTextLength>
+    </routine>
+    <routine id="320" parent="290" name="quanxiangongneng">
+      <Definer>root@%</Definer>
+      <RoutineKind>procedure</RoutineKind>
+      <SourceTextLength>234</SourceTextLength>
+    </routine>
+    <routine id="321" parent="290" name="quanxiantianjia">
+      <Definer>root@%</Definer>
+      <RoutineKind>procedure</RoutineKind>
+      <SourceTextLength>238</SourceTextLength>
+    </routine>
+    <routine id="322" parent="290" name="renzichaxun">
+      <Definer>root@%</Definer>
+      <RoutineKind>procedure</RoutineKind>
+      <SourceTextLength>85</SourceTextLength>
+    </routine>
+    <routine id="323" parent="290" name="shezhiquanxian">
+      <Definer>root@%</Definer>
+      <RoutineKind>procedure</RoutineKind>
+      <SourceTextLength>2221</SourceTextLength>
+    </routine>
+    <routine id="324" parent="290" name="tianJiaGongNeng_Test">
+      <Definer>root@%</Definer>
+      <RoutineKind>procedure</RoutineKind>
+      <SourceTextLength>250</SourceTextLength>
+    </routine>
+    <routine id="325" parent="290" name="yonghuchaxun">
+      <Definer>root@%</Definer>
+      <RoutineKind>procedure</RoutineKind>
+      <SourceTextLength>690</SourceTextLength>
+    </routine>
+    <routine id="326" parent="290" name="yuyan">
+      <Definer>root@%</Definer>
+      <RoutineKind>procedure</RoutineKind>
+      <SourceTextLength>123</SourceTextLength>
+    </routine>
+    <routine id="327" parent="290" name="zhuce">
+      <Definer>root@%</Definer>
+      <RoutineKind>procedure</RoutineKind>
+      <SourceTextLength>1231</SourceTextLength>
+    </routine>
+    <routine id="328" parent="290" name="zj">
+      <Definer>root@%</Definer>
+      <RoutineKind>procedure</RoutineKind>
+      <SourceTextLength>216</SourceTextLength>
+    </routine>
+    <table id="329" parent="290" name="sys_menu">
+      <Engine>InnoDB</Engine>
+      <CollationName>utf8mb4_0900_ai_ci</CollationName>
+    </table>
+    <table id="330" parent="290" name="sys_menu_item">
+      <Engine>InnoDB</Engine>
+      <CollationName>utf8mb4_0900_ai_ci</CollationName>
+    </table>
+    <table id="331" parent="290" name="user">
+      <Engine>InnoDB</Engine>
+      <Options>row_format
+DYNAMIC</Options>
+      <CollationName>utf8_general_ci</CollationName>
+    </table>
+    <table id="332" parent="291" name="basic_glass_type">
+      <Engine>InnoDB</Engine>
+      <CollationName>utf8mb4_0900_ai_ci</CollationName>
+    </table>
+    <table id="333" parent="291" name="product">
+      <Engine>InnoDB</Engine>
+      <CollationName>utf8mb4_0900_ai_ci</CollationName>
+    </table>
+    <argument id="334" parent="296" name="cishu">
+      <DasType>int|0s</DasType>
+      <Position>1</Position>
+    </argument>
+    <argument id="335" parent="296" name="yuyanleixing1">
+      <DasType>varchar(50)|0s</DasType>
+      <Position>2</Position>
+    </argument>
+    <argument id="336" parent="296" name="mokuainame1">
+      <DasType>varchar(50)|0s</DasType>
+      <Position>3</Position>
+    </argument>
+    <argument id="337" parent="296" name="caidanname1">
+      <DasType>varchar(50)|0s</DasType>
+      <Position>4</Position>
+    </argument>
+    <argument id="338" parent="296" name="yemian1">
+      <DasType>varchar(50)|0s</DasType>
+      <Position>5</Position>
+    </argument>
+    <argument id="339" parent="296" name="yuyanneirong1">
+      <DasType>varchar(50)|0s</DasType>
+      <Position>6</Position>
+    </argument>
+    <argument id="340" parent="297" name="cishu">
+      <DasType>int|0s</DasType>
+      <Position>1</Position>
+    </argument>
+    <argument id="341" parent="297" name="yuyanid1">
+      <DasType>varchar(50)|0s</DasType>
+      <Position>2</Position>
+    </argument>
+    <argument id="342" parent="297" name="yuyanleixing1">
+      <DasType>varchar(50)|0s</DasType>
+      <Position>3</Position>
+    </argument>
+    <argument id="343" parent="297" name="mokuainame1">
+      <DasType>varchar(50)|0s</DasType>
+      <Position>4</Position>
+    </argument>
+    <argument id="344" parent="297" name="caidanname1">
+      <DasType>varchar(50)|0s</DasType>
+      <Position>5</Position>
+    </argument>
+    <argument id="345" parent="297" name="yemian1">
+      <DasType>varchar(50)|0s</DasType>
+      <Position>6</Position>
+    </argument>
+    <argument id="346" parent="297" name="yuyanneirong1">
+      <DasType>varchar(50)|0s</DasType>
+      <Position>7</Position>
+    </argument>
+    <argument id="347" parent="298" name="id">
+      <DasType>varchar(15)|0s</DasType>
+      <Position>1</Position>
+    </argument>
+    <argument id="348" parent="298" name="tip">
+      <DasType>varchar(32)|0s</DasType>
+      <Position>2</Position>
+    </argument>
+    <argument id="349" parent="298" name="ym">
+      <DasType>varchar(200)|0s</DasType>
+      <Position>3</Position>
+    </argument>
+    <argument id="350" parent="298" name="fanhui">
+      <ArgumentDirection>O</ArgumentDirection>
+      <DasType>int|0s</DasType>
+      <Position>4</Position>
+    </argument>
+    <argument id="351" parent="298" name="aqkey">
+      <ArgumentDirection>O</ArgumentDirection>
+      <DasType>varchar(30)|0s</DasType>
+      <Position>5</Position>
+    </argument>
+    <argument id="352" parent="298" name="usetime">
+      <ArgumentDirection>O</ArgumentDirection>
+      <DasType>int|0s</DasType>
+      <Position>6</Position>
+    </argument>
+    <argument id="353" parent="299" name="username">
+      <DasType>varchar(20)|0s</DasType>
+      <Position>1</Position>
+    </argument>
+    <argument id="354" parent="299" name="upwd">
+      <DasType>varchar(20)|0s</DasType>
+      <Position>2</Position>
+    </argument>
+    <argument id="355" parent="299" name="ym">
+      <DasType>varchar(200)|0s</DasType>
+      <Position>3</Position>
+    </argument>
+    <argument id="356" parent="299" name="tip">
+      <DasType>varchar(32)|0s</DasType>
+      <Position>4</Position>
+    </argument>
+    <argument id="357" parent="299" name="fanhui">
+      <ArgumentDirection>O</ArgumentDirection>
+      <DasType>int|0s</DasType>
+      <Position>5</Position>
+    </argument>
+    <argument id="358" parent="299" name="mingzi">
+      <ArgumentDirection>O</ArgumentDirection>
+      <DasType>varchar(30)|0s</DasType>
+      <Position>6</Position>
+    </argument>
+    <argument id="359" parent="299" name="aid">
+      <ArgumentDirection>O</ArgumentDirection>
+      <DasType>varchar(15)|0s</DasType>
+      <Position>7</Position>
+    </argument>
+    <argument id="360" parent="303" name="adminid1">
+      <DasType>varchar(15)|0s</DasType>
+      <Position>1</Position>
+    </argument>
+    <argument id="361" parent="303" name="mokuaiid1">
+      <DasType>int|0s</DasType>
+      <Position>2</Position>
+    </argument>
+    <argument id="362" parent="303" name="caidanid1">
+      <DasType>int|0s</DasType>
+      <Position>3</Position>
+    </argument>
+    <argument id="363" parent="304" name="id">
+      <DasType>varchar(15)|0s</DasType>
+      <Position>1</Position>
+    </argument>
+    <argument id="364" parent="304" name="mid">
+      <DasType>int|0s</DasType>
+      <Position>2</Position>
+    </argument>
+    <argument id="365" parent="304" name="yuyan">
+      <DasType>varchar(20)|0s</DasType>
+      <Position>3</Position>
+    </argument>
+    <argument id="366" parent="304" name="ip">
+      <DasType>varchar(100)|0s</DasType>
+      <Position>4</Position>
+    </argument>
+    <argument id="367" parent="305" name="caidanid1">
+      <DasType>int|0s</DasType>
+      <Position>1</Position>
+    </argument>
+    <argument id="368" parent="306" name="adminid1">
+      <DasType>varchar(15)|0s</DasType>
+      <Position>1</Position>
+    </argument>
+    <argument id="369" parent="307" name="username">
+      <DasType>varchar(50)|0s</DasType>
+      <Position>1</Position>
+    </argument>
+    <argument id="370" parent="307" name="upwd">
+      <DasType>varchar(20)|0s</DasType>
+      <Position>2</Position>
+    </argument>
+    <argument id="371" parent="307" name="ym">
+      <DasType>varchar(200)|0s</DasType>
+      <Position>3</Position>
+    </argument>
+    <argument id="372" parent="307" name="tip">
+      <DasType>varchar(32)|0s</DasType>
+      <Position>4</Position>
+    </argument>
+    <argument id="373" parent="307" name="fanhui">
+      <ArgumentDirection>O</ArgumentDirection>
+      <DasType>int|0s</DasType>
+      <Position>5</Position>
+    </argument>
+    <argument id="374" parent="307" name="mingzi">
+      <ArgumentDirection>O</ArgumentDirection>
+      <DasType>varchar(30)|0s</DasType>
+      <Position>6</Position>
+    </argument>
+    <argument id="375" parent="307" name="aid">
+      <ArgumentDirection>O</ArgumentDirection>
+      <DasType>varchar(50)|0s</DasType>
+      <Position>7</Position>
+    </argument>
+    <argument id="376" parent="307" name="bumen1">
+      <ArgumentDirection>O</ArgumentDirection>
+      <DasType>varchar(50)|0s</DasType>
+      <Position>8</Position>
+    </argument>
+    <argument id="377" parent="309" name="adid">
+      <DasType>varchar(15)|0s</DasType>
+      <Position>1</Position>
+    </argument>
+    <argument id="378" parent="309" name="aqkey">
+      <DasType>varchar(30)|0s</DasType>
+      <Position>2</Position>
+    </argument>
+    <argument id="379" parent="309" name="fanhui">
+      <ArgumentDirection>O</ArgumentDirection>
+      <DasType>int|0s</DasType>
+      <Position>3</Position>
+    </argument>
+    <argument id="380" parent="310" name="kaishi">
+      <ArgumentDirection>M</ArgumentDirection>
+      <DasType>text|0s</DasType>
+      <Position>1</Position>
+    </argument>
+    <argument id="381" parent="310" name="jieshu">
+      <ArgumentDirection>M</ArgumentDirection>
+      <DasType>text|0s</DasType>
+      <Position>2</Position>
+    </argument>
+    <argument id="382" parent="310" name="xianghao1">
+      <ArgumentDirection>M</ArgumentDirection>
+      <DasType>text|0s</DasType>
+      <Position>3</Position>
+    </argument>
+    <argument id="383" parent="310" name="kuan1">
+      <ArgumentDirection>M</ArgumentDirection>
+      <DasType>text|0s</DasType>
+      <Position>4</Position>
+    </argument>
+    <argument id="384" parent="310" name="gao1">
+      <ArgumentDirection>M</ArgumentDirection>
+      <DasType>text|0s</DasType>
+      <Position>5</Position>
+    </argument>
+    <argument id="385" parent="310" name="kehumingcheng1">
+      <ArgumentDirection>M</ArgumentDirection>
+      <DasType>text|0s</DasType>
+      <Position>6</Position>
+    </argument>
+    <argument id="386" parent="310" name="xiangmu1">
+      <ArgumentDirection>M</ArgumentDirection>
+      <DasType>text|0s</DasType>
+      <Position>7</Position>
+    </argument>
+    <argument id="387" parent="310" name="adminid1">
+      <DasType>varchar(20)|0s</DasType>
+      <Position>8</Position>
+    </argument>
+    <argument id="388" parent="310" name="ip">
+      <DasType>varchar(20)|0s</DasType>
+      <Position>9</Position>
+    </argument>
+    <argument id="389" parent="311" name="adminid1">
+      <DasType>text|0s</DasType>
+      <Position>1</Position>
+    </argument>
+    <argument id="390" parent="311" name="zhuangtai">
+      <DasType>text|0s</DasType>
+      <Position>2</Position>
+    </argument>
+    <argument id="391" parent="311" name="ip">
+      <DasType>varchar(50)|0s</DasType>
+      <Position>3</Position>
+    </argument>
+    <argument id="392" parent="311" name="adminid3">
+      <DasType>varchar(50)|0s</DasType>
+      <Position>4</Position>
+    </argument>
+    <argument id="393" parent="311" name="fanhui">
+      <ArgumentDirection>O</ArgumentDirection>
+      <DasType>text|0s</DasType>
+      <Position>5</Position>
+    </argument>
+    <argument id="394" parent="312" name="id">
+      <DasType>int|0s</DasType>
+      <Position>1</Position>
+    </argument>
+    <argument id="395" parent="312" name="cid">
+      <DasType>int|0s</DasType>
+      <Position>2</Position>
+    </argument>
+    <argument id="396" parent="312" name="yuyan">
+      <DasType>varchar(20)|0s</DasType>
+      <Position>3</Position>
+    </argument>
+    <argument id="397" parent="313" name="adminid1">
+      <DasType>varchar(20)|0s</DasType>
+      <Position>1</Position>
+    </argument>
+    <argument id="398" parent="313" name="fanhui">
+      <ArgumentDirection>O</ArgumentDirection>
+      <DasType>int|0s</DasType>
+      <Position>2</Position>
+    </argument>
+    <argument id="399" parent="314" name="adminid1">
+      <DasType>varchar(15)|0s</DasType>
+      <Position>1</Position>
+    </argument>
+    <argument id="400" parent="314" name="loginpwd1">
+      <DasType>varchar(15)|0s</DasType>
+      <Position>2</Position>
+    </argument>
+    <argument id="401" parent="314" name="ip">
+      <DasType>varchar(50)|0s</DasType>
+      <Position>3</Position>
+    </argument>
+    <argument id="402" parent="314" name="fanhui">
+      <ArgumentDirection>O</ArgumentDirection>
+      <DasType>int|0s</DasType>
+      <Position>4</Position>
+    </argument>
+    <argument id="403" parent="315" name="userid">
+      <DasType>varchar(15)|0s</DasType>
+      <Position>1</Position>
+    </argument>
+    <argument id="404" parent="315" name="yuyan">
+      <DasType>varchar(20)|0s</DasType>
+      <Position>2</Position>
+    </argument>
+    <argument id="405" parent="315" name="ip">
+      <DasType>varchar(100)|0s</DasType>
+      <Position>3</Position>
+    </argument>
+    <argument id="406" parent="317" name="cishu">
+      <DasType>int|0s</DasType>
+      <Position>1</Position>
+    </argument>
+    <argument id="407" parent="317" name="id">
+      <DasType>varchar(10)|0s</DasType>
+      <Position>2</Position>
+    </argument>
+    <argument id="408" parent="317" name="mokuai">
+      <DasType>int|0s</DasType>
+      <Position>3</Position>
+    </argument>
+    <argument id="409" parent="317" name="caidan">
+      <DasType>int|0s</DasType>
+      <Position>4</Position>
+    </argument>
+    <argument id="410" parent="317" name="gongneng">
+      <DasType>int|0s</DasType>
+      <Position>5</Position>
+    </argument>
+    <argument id="411" parent="318" name="mid">
+      <DasType>int|0s</DasType>
+      <Position>1</Position>
+    </argument>
+    <argument id="412" parent="318" name="yuyan">
+      <DasType>varchar(20)|0s</DasType>
+      <Position>2</Position>
+    </argument>
+    <argument id="413" parent="319" name="adminid1">
+      <DasType>varchar(15)|0s</DasType>
+      <Position>1</Position>
+    </argument>
+    <argument id="414" parent="319" name="caidanid1">
+      <DasType>int|0s</DasType>
+      <Position>2</Position>
+    </argument>
+    <argument id="415" parent="320" name="adminid1">
+      <DasType>varchar(15)|0s</DasType>
+      <Position>1</Position>
+    </argument>
+    <argument id="416" parent="320" name="caidanid1">
+      <DasType>int|0s</DasType>
+      <Position>2</Position>
+    </argument>
+    <argument id="417" parent="322" name="gonghao1">
+      <DasType>varchar(10)|0s</DasType>
+      <Position>1</Position>
+    </argument>
+    <argument id="418" parent="323" name="adminid">
+      <DasType>text|0s</DasType>
+      <Position>1</Position>
+    </argument>
+    <argument id="419" parent="323" name="mokuaiid">
+      <DasType>text|0s</DasType>
+      <Position>2</Position>
+    </argument>
+    <argument id="420" parent="323" name="caidanid">
+      <DasType>text|0s</DasType>
+      <Position>3</Position>
+    </argument>
+    <argument id="421" parent="323" name="gongnengid">
+      <DasType>text|0s</DasType>
+      <Position>4</Position>
+    </argument>
+    <argument id="422" parent="323" name="zhuangtai">
+      <DasType>text|0s</DasType>
+      <Position>5</Position>
+    </argument>
+    <argument id="423" parent="323" name="ip">
+      <DasType>varchar(50)|0s</DasType>
+      <Position>6</Position>
+    </argument>
+    <argument id="424" parent="323" name="adminid3">
+      <DasType>varchar(50)|0s</DasType>
+      <Position>7</Position>
+    </argument>
+    <argument id="425" parent="323" name="fanhui">
+      <ArgumentDirection>O</ArgumentDirection>
+      <DasType>text|0s</DasType>
+      <Position>8</Position>
+    </argument>
+    <argument id="426" parent="324" name="cishu">
+      <DasType>int|0s</DasType>
+      <Position>1</Position>
+    </argument>
+    <argument id="427" parent="324" name="kaishiId">
+      <DasType>int|0s</DasType>
+      <Position>2</Position>
+    </argument>
+    <argument id="428" parent="324" name="yemian1">
+      <DasType>varchar(200)|0s</DasType>
+      <Position>3</Position>
+    </argument>
+    <argument id="429" parent="324" name="caidanId">
+      <DasType>int|0s</DasType>
+      <Position>4</Position>
+    </argument>
+    <argument id="430" parent="325" name="loginname1">
+      <DasType>varchar(15)|0s</DasType>
+      <Position>1</Position>
+    </argument>
+    <argument id="431" parent="325" name="adminid">
+      <DasType>varchar(10)|0s</DasType>
+      <Position>2</Position>
+    </argument>
+    <argument id="432" parent="325" name="ip">
+      <DasType>varchar(50)|0s</DasType>
+      <Position>3</Position>
+    </argument>
+    <argument id="433" parent="326" name="id">
+      <DasType>varchar(50)|0s</DasType>
+      <Position>1</Position>
+    </argument>
+    <argument id="434" parent="326" name="leixing">
+      <DasType>varchar(50)|0s</DasType>
+      <Position>2</Position>
+    </argument>
+    <argument id="435" parent="327" name="username">
+      <DasType>varchar(15)|0s</DasType>
+      <Position>1</Position>
+    </argument>
+    <argument id="436" parent="327" name="upwd">
+      <DasType>varchar(15)|0s</DasType>
+      <Position>2</Position>
+    </argument>
+    <argument id="437" parent="327" name="xingming">
+      <DasType>varchar(30)|0s</DasType>
+      <Position>3</Position>
+    </argument>
+    <argument id="438" parent="327" name="bumenbianhao">
+      <DasType>varchar(10)|0s</DasType>
+      <Position>4</Position>
+    </argument>
+    <argument id="439" parent="327" name="bumen">
+      <DasType>varchar(50)|0s</DasType>
+      <Position>5</Position>
+    </argument>
+    <argument id="440" parent="327" name="banzu">
+      <DasType>varchar(50)|0s</DasType>
+      <Position>6</Position>
+    </argument>
+    <argument id="441" parent="327" name="ip">
+      <DasType>varchar(50)|0s</DasType>
+      <Position>7</Position>
+    </argument>
+    <argument id="442" parent="327" name="banzubianhao">
+      <DasType>varchar(50)|0s</DasType>
+      <Position>8</Position>
+    </argument>
+    <argument id="443" parent="327" name="fanhui">
+      <ArgumentDirection>O</ArgumentDirection>
+      <DasType>int|0s</DasType>
+      <Position>9</Position>
+    </argument>
+    <argument id="444" parent="328" name="adminid1">
+      <DasType>varchar(15)|0s</DasType>
+      <Position>1</Position>
+    </argument>
+    <column id="445" parent="329" name="id">
+      <AutoIncrement>4</AutoIncrement>
+      <Comment>鑷id</Comment>
+      <DasType>int|0s</DasType>
+      <NotNull>1</NotNull>
+      <Position>1</Position>
+    </column>
+    <column id="446" parent="329" name="menuName">
+      <Comment>妯″潡鍚嶇О</Comment>
+      <DasType>varchar(255)|0s</DasType>
+      <Position>2</Position>
+    </column>
+    <column id="447" parent="329" name="languageType">
+      <Comment>璇█绫诲瀷</Comment>
+      <DasType>varchar(10)|0s</DasType>
+      <Position>3</Position>
+    </column>
+    <column id="448" parent="329" name="state">
+      <Comment>鐘舵��</Comment>
+      <DasType>int|0s</DasType>
+      <Position>4</Position>
+    </column>
+    <column id="449" parent="329" name="listSort">
+      <Comment>鎺掑簭</Comment>
+      <DasType>varchar(255)|0s</DasType>
+      <Position>5</Position>
+    </column>
+    <column id="450" parent="329" name="createTime">
+      <Comment>鍒涘缓鏃堕棿</Comment>
+      <DasType>datetime|0s</DasType>
+      <DefaultExpression>CURRENT_TIMESTAMP</DefaultExpression>
+      <NotNull>1</NotNull>
+      <Position>6</Position>
+    </column>
+    <index id="451" parent="329" name="PRIMARY">
+      <ColNames>id</ColNames>
+      <Type>btree</Type>
+      <Unique>1</Unique>
+    </index>
+    <key id="452" parent="329" name="PRIMARY">
+      <NameSurrogate>1</NameSurrogate>
+      <Primary>1</Primary>
+      <UnderlyingIndexName>PRIMARY</UnderlyingIndexName>
+    </key>
+    <column id="453" parent="330" name="id">
+      <AutoIncrement>1</AutoIncrement>
+      <Comment>鑷id</Comment>
+      <DasType>int|0s</DasType>
+      <NotNull>1</NotNull>
+      <Position>1</Position>
+    </column>
+    <column id="454" parent="330" name="menuID">
+      <DasType>int|0s</DasType>
+      <NotNull>1</NotNull>
+      <Position>2</Position>
+    </column>
+    <column id="455" parent="330" name="itemName">
+      <Comment>鑿滃崟鍚嶇О</Comment>
+      <DasType>varchar(255)|0s</DasType>
+      <NotNull>1</NotNull>
+      <Position>3</Position>
+    </column>
+    <column id="456" parent="330" name="url">
+      <Comment>鍦板潃</Comment>
+      <DasType>varchar(255)|0s</DasType>
+      <NotNull>1</NotNull>
+      <Position>4</Position>
+    </column>
+    <column id="457" parent="330" name="languageType">
+      <Comment>璇█绫诲瀷</Comment>
+      <DasType>varchar(255)|0s</DasType>
+      <NotNull>1</NotNull>
+      <Position>5</Position>
+    </column>
+    <column id="458" parent="330" name="state">
+      <Comment>鐘舵��</Comment>
+      <DasType>int|0s</DasType>
+      <DefaultExpression>1</DefaultExpression>
+      <NotNull>1</NotNull>
+      <Position>6</Position>
+    </column>
+    <column id="459" parent="330" name="listSort">
+      <Comment>鎺掑簭</Comment>
+      <DasType>int|0s</DasType>
+      <NotNull>1</NotNull>
+      <Position>7</Position>
+    </column>
+    <column id="460" parent="330" name="createTime">
+      <Comment>鍒涘缓鏃堕棿</Comment>
+      <DasType>datetime|0s</DasType>
+      <NotNull>1</NotNull>
+      <Position>8</Position>
+    </column>
+    <foreign-key id="461" parent="330" name="menuid">
+      <ColNames>menuID</ColNames>
+      <RefColNames>id</RefColNames>
+      <RefTableName>sys_menu</RefTableName>
+    </foreign-key>
+    <index id="462" parent="330" name="PRIMARY">
+      <ColNames>id</ColNames>
+      <Type>btree</Type>
+      <Unique>1</Unique>
+    </index>
+    <index id="463" parent="330" name="menuid">
+      <ColNames>menuID</ColNames>
+      <Type>btree</Type>
+    </index>
+    <key id="464" parent="330" name="PRIMARY">
+      <NameSurrogate>1</NameSurrogate>
+      <Primary>1</Primary>
+      <UnderlyingIndexName>PRIMARY</UnderlyingIndexName>
+    </key>
+    <column id="465" parent="331" name="id">
+      <AutoIncrement>39</AutoIncrement>
+      <DasType>int|0s</DasType>
+      <NotNull>1</NotNull>
+      <Position>1</Position>
+    </column>
+    <column id="466" parent="331" name="login_name">
+      <DasType>varchar(15)|0s</DasType>
+      <NotNull>1</NotNull>
+      <Position>2</Position>
+    </column>
+    <column id="467" parent="331" name="password">
+      <DasType>varchar(15)|0s</DasType>
+      <NotNull>1</NotNull>
+      <Position>3</Position>
+    </column>
+    <column id="468" parent="331" name="user_name">
+      <DasType>varchar(30)|0s</DasType>
+      <NotNull>1</NotNull>
+      <Position>4</Position>
+    </column>
+    <column id="469" parent="331" name="address">
+      <DasType>varchar(50)|0s</DasType>
+      <Position>5</Position>
+    </column>
+    <column id="470" parent="331" name="phone">
+      <DasType>varchar(20)|0s</DasType>
+      <Position>6</Position>
+    </column>
+    <column id="471" parent="331" name="create_time">
+      <DasType>datetime|0s</DasType>
+      <DefaultExpression>CURRENT_TIMESTAMP</DefaultExpression>
+      <Position>7</Position>
+    </column>
+    <column id="472" parent="331" name="update_time">
+      <DasType>datetime|0s</DasType>
+      <Position>8</Position>
+    </column>
+    <column id="473" parent="331" name="state">
+      <DasType>int|0s</DasType>
+      <DefaultExpression>1</DefaultExpression>
+      <Position>9</Position>
+    </column>
+    <index id="474" parent="331" name="PRIMARY">
+      <ColNames>id</ColNames>
+      <Type>btree</Type>
+      <Unique>1</Unique>
+    </index>
+    <key id="475" parent="331" name="PRIMARY">
+      <NameSurrogate>1</NameSurrogate>
+      <Primary>1</Primary>
+      <UnderlyingIndexName>PRIMARY</UnderlyingIndexName>
+    </key>
+    <trigger id="476" parent="331" name="logName">
+      <Definer>root@%</Definer>
+      <Events>I</Events>
+      <SourceTextLength>77</SourceTextLength>
+      <Turn>before-row</Turn>
+    </trigger>
+    <column id="477" parent="332" name="id">
+      <AutoIncrement>4</AutoIncrement>
+      <DasType>int|0s</DasType>
+      <NotNull>1</NotNull>
+      <Position>1</Position>
+    </column>
+    <column id="478" parent="332" name="level">
+      <Comment>鐜荤拑绫诲埆绛夌骇</Comment>
+      <DasType>int|0s</DasType>
+      <Position>2</Position>
+    </column>
+    <column id="479" parent="332" name="belong">
+      <Comment>浜岀骇绫诲埆鎵�灞炰竴绾х被姣�</Comment>
+      <DasType>varchar(4)|0s</DasType>
+      <Position>3</Position>
+    </column>
+    <column id="480" parent="332" name="typeID">
+      <Comment>绫诲埆id</Comment>
+      <DasType>varchar(4)|0s</DasType>
+      <Position>4</Position>
+    </column>
+    <column id="481" parent="332" name="typeName">
+      <Comment>绫诲埆鍚嶇О</Comment>
+      <DasType>varchar(20)|0s</DasType>
+      <Position>5</Position>
+    </column>
+    <column id="482" parent="332" name="createTime">
+      <Comment>鍒涘缓鏃堕棿</Comment>
+      <DasType>datetime|0s</DasType>
+      <DefaultExpression>CURRENT_TIMESTAMP</DefaultExpression>
+      <Position>6</Position>
+    </column>
+    <index id="483" parent="332" name="PRIMARY">
+      <ColNames>id</ColNames>
+      <Type>btree</Type>
+      <Unique>1</Unique>
+    </index>
+    <index id="484" parent="332" name="typeID">
+      <ColNames>typeID</ColNames>
+      <Type>btree</Type>
+    </index>
+    <key id="485" parent="332" name="PRIMARY">
+      <NameSurrogate>1</NameSurrogate>
+      <Primary>1</Primary>
+      <UnderlyingIndexName>PRIMARY</UnderlyingIndexName>
+    </key>
+    <column id="486" parent="333" name="id">
+      <AutoIncrement>25</AutoIncrement>
+      <DasType>int|0s</DasType>
+      <NotNull>1</NotNull>
+      <Position>1</Position>
+    </column>
+    <column id="487" parent="333" name="prodID">
+      <DasType>varchar(10)|0s</DasType>
+      <Position>2</Position>
+    </column>
+    <column id="488" parent="333" name="product">
+      <DasType>varchar(100)|0s</DasType>
+      <Position>3</Position>
+    </column>
+    <column id="489" parent="333" name="typeID">
+      <DasType>varchar(4)|0s</DasType>
+      <Position>4</Position>
+    </column>
+    <column id="490" parent="333" name="glassType">
+      <DasType>varchar(10)|0s</DasType>
+      <Position>5</Position>
+    </column>
+    <column id="491" parent="333" name="totalThickness">
+      <DasType>decimal(5,2 digit)|0s</DasType>
+      <Position>6</Position>
+    </column>
+    <column id="492" parent="333" name="thickness">
+      <DasType>decimal(5,2 digit)|0s</DasType>
+      <Position>7</Position>
+    </column>
+    <column id="493" parent="333" name="Query">
+      <DasType>varchar(30)|0s</DasType>
+      <Position>8</Position>
+    </column>
+    <column id="494" parent="333" name="remarks">
+      <DasType>varchar(255)|0s</DasType>
+      <Position>9</Position>
+    </column>
+    <column id="495" parent="333" name="state">
+      <DasType>int|0s</DasType>
+      <DefaultExpression>0</DefaultExpression>
+      <Position>10</Position>
+    </column>
+    <column id="496" parent="333" name="creator">
+      <DasType>varchar(10)|0s</DasType>
+      <Position>11</Position>
+    </column>
+    <column id="497" parent="333" name="createTime">
+      <DasType>datetime|0s</DasType>
+      <Position>12</Position>
+    </column>
+    <column id="498" parent="333" name="updateTime">
+      <DasType>datetime|0s</DasType>
+      <Position>13</Position>
+    </column>
+    <foreign-key id="499" parent="333" name="typeid">
+      <ColNames>typeID</ColNames>
+      <RefColNames>typeID</RefColNames>
+      <RefTableName>basic_glass_type</RefTableName>
+    </foreign-key>
+    <index id="500" parent="333" name="PRIMARY">
+      <ColNames>id</ColNames>
+      <Type>btree</Type>
+      <Unique>1</Unique>
+    </index>
+    <index id="501" parent="333" name="typeid">
+      <ColNames>typeID</ColNames>
+      <Type>btree</Type>
+    </index>
+    <key id="502" parent="333" name="PRIMARY">
+      <NameSurrogate>1</NameSurrogate>
+      <Primary>1</Primary>
+      <UnderlyingIndexName>PRIMARY</UnderlyingIndexName>
+    </key>
+  </database-model>
+</dataSource>
\ No newline at end of file
diff --git a/north-glass-erp/.idea/dataSources/165c5447-d19a-4aaf-af5f-cee92ae696c2/storage_v2/_src_/schema/erp_sd.rUrUsg.meta b/north-glass-erp/.idea/dataSources/165c5447-d19a-4aaf-af5f-cee92ae696c2/storage_v2/_src_/schema/erp_sd.rUrUsg.meta
new file mode 100644
index 0000000..f46dc95
--- /dev/null
+++ b/north-glass-erp/.idea/dataSources/165c5447-d19a-4aaf-af5f-cee92ae696c2/storage_v2/_src_/schema/erp_sd.rUrUsg.meta
@@ -0,0 +1,2 @@
+#n:erp_sd
+!<md> [1701073490000, 0, null, null, -2147483648, -2147483648]
diff --git a/north-glass-erp/.idea/dataSources/165c5447-d19a-4aaf-af5f-cee92ae696c2/storage_v2/_src_/schema/erp_user_info.xjxUZg.meta b/north-glass-erp/.idea/dataSources/165c5447-d19a-4aaf-af5f-cee92ae696c2/storage_v2/_src_/schema/erp_user_info.xjxUZg.meta
new file mode 100644
index 0000000..4e63edb
--- /dev/null
+++ b/north-glass-erp/.idea/dataSources/165c5447-d19a-4aaf-af5f-cee92ae696c2/storage_v2/_src_/schema/erp_user_info.xjxUZg.meta
@@ -0,0 +1,2 @@
+#n:erp_user_info
+!<md> [null, 0, null, null, -2147483648, -2147483648]
diff --git a/north-glass-erp/.idea/dataSources/165c5447-d19a-4aaf-af5f-cee92ae696c2/storage_v2/_src_/schema/erp_user_info.xjxUZg.zip b/north-glass-erp/.idea/dataSources/165c5447-d19a-4aaf-af5f-cee92ae696c2/storage_v2/_src_/schema/erp_user_info.xjxUZg.zip
new file mode 100644
index 0000000..c2625a1
--- /dev/null
+++ b/north-glass-erp/.idea/dataSources/165c5447-d19a-4aaf-af5f-cee92ae696c2/storage_v2/_src_/schema/erp_user_info.xjxUZg.zip
Binary files differ
diff --git a/north-glass-erp/.idea/dataSources/165c5447-d19a-4aaf-af5f-cee92ae696c2/storage_v2/_src_/schema/information_schema.FNRwLQ.meta b/north-glass-erp/.idea/dataSources/165c5447-d19a-4aaf-af5f-cee92ae696c2/storage_v2/_src_/schema/information_schema.FNRwLQ.meta
new file mode 100644
index 0000000..1ff3db2
--- /dev/null
+++ b/north-glass-erp/.idea/dataSources/165c5447-d19a-4aaf-af5f-cee92ae696c2/storage_v2/_src_/schema/information_schema.FNRwLQ.meta
@@ -0,0 +1,2 @@
+#n:information_schema
+!<md> [null, 0, null, null, -2147483648, -2147483648]
diff --git a/north-glass-erp/.idea/dataSources/165c5447-d19a-4aaf-af5f-cee92ae696c2/storage_v2/_src_/schema/mysql.osA4Bg.meta b/north-glass-erp/.idea/dataSources/165c5447-d19a-4aaf-af5f-cee92ae696c2/storage_v2/_src_/schema/mysql.osA4Bg.meta
new file mode 100644
index 0000000..86a53f1
--- /dev/null
+++ b/north-glass-erp/.idea/dataSources/165c5447-d19a-4aaf-af5f-cee92ae696c2/storage_v2/_src_/schema/mysql.osA4Bg.meta
@@ -0,0 +1,2 @@
+#n:mysql
+!<md> [null, 0, null, null, -2147483648, -2147483648]
diff --git a/north-glass-erp/.idea/dataSources/165c5447-d19a-4aaf-af5f-cee92ae696c2/storage_v2/_src_/schema/performance_schema.kIw0nw.meta b/north-glass-erp/.idea/dataSources/165c5447-d19a-4aaf-af5f-cee92ae696c2/storage_v2/_src_/schema/performance_schema.kIw0nw.meta
new file mode 100644
index 0000000..9394db1
--- /dev/null
+++ b/north-glass-erp/.idea/dataSources/165c5447-d19a-4aaf-af5f-cee92ae696c2/storage_v2/_src_/schema/performance_schema.kIw0nw.meta
@@ -0,0 +1,2 @@
+#n:performance_schema
+!<md> [null, 0, null, null, -2147483648, -2147483648]
diff --git a/north-glass-erp/.idea/dataSources/165c5447-d19a-4aaf-af5f-cee92ae696c2/storage_v2/_src_/schema/sd_kd.B3aDBg.meta b/north-glass-erp/.idea/dataSources/165c5447-d19a-4aaf-af5f-cee92ae696c2/storage_v2/_src_/schema/sd_kd.B3aDBg.meta
new file mode 100644
index 0000000..4a1ef11
--- /dev/null
+++ b/north-glass-erp/.idea/dataSources/165c5447-d19a-4aaf-af5f-cee92ae696c2/storage_v2/_src_/schema/sd_kd.B3aDBg.meta
@@ -0,0 +1,2 @@
+#n:sd_kd
+!<md> [null, 0, null, null, -2147483648, -2147483648]
diff --git a/north-glass-erp/.idea/dataSources/165c5447-d19a-4aaf-af5f-cee92ae696c2/storage_v2/_src_/schema/sys.zb4BAA.meta b/north-glass-erp/.idea/dataSources/165c5447-d19a-4aaf-af5f-cee92ae696c2/storage_v2/_src_/schema/sys.zb4BAA.meta
new file mode 100644
index 0000000..2f4470b
--- /dev/null
+++ b/north-glass-erp/.idea/dataSources/165c5447-d19a-4aaf-af5f-cee92ae696c2/storage_v2/_src_/schema/sys.zb4BAA.meta
@@ -0,0 +1,2 @@
+#n:sys
+!<md> [null, 0, null, null, -2147483648, -2147483648]
diff --git a/north-glass-erp/.idea/dataSources/165c5447-d19a-4aaf-af5f-cee92ae696c2/storage_v2/_src_/schema/testpp.Ena3yw.meta b/north-glass-erp/.idea/dataSources/165c5447-d19a-4aaf-af5f-cee92ae696c2/storage_v2/_src_/schema/testpp.Ena3yw.meta
new file mode 100644
index 0000000..1bf2ef7
--- /dev/null
+++ b/north-glass-erp/.idea/dataSources/165c5447-d19a-4aaf-af5f-cee92ae696c2/storage_v2/_src_/schema/testpp.Ena3yw.meta
@@ -0,0 +1,2 @@
+#n:testpp
+!<md> [null, 0, null, null, -2147483648, -2147483648]
diff --git a/north-glass-erp/.idea/dataSources/165c5447-d19a-4aaf-af5f-cee92ae696c2/storage_v2/_src_/schema/ztest.DHjtBg.meta b/north-glass-erp/.idea/dataSources/165c5447-d19a-4aaf-af5f-cee92ae696c2/storage_v2/_src_/schema/ztest.DHjtBg.meta
new file mode 100644
index 0000000..b736f03
--- /dev/null
+++ b/north-glass-erp/.idea/dataSources/165c5447-d19a-4aaf-af5f-cee92ae696c2/storage_v2/_src_/schema/ztest.DHjtBg.meta
@@ -0,0 +1,2 @@
+#n:ztest
+!<md> [null, 0, null, null, -2147483648, -2147483648]
diff --git a/north-glass-erp/.idea/encodings.xml b/north-glass-erp/.idea/encodings.xml
new file mode 100644
index 0000000..63e9001
--- /dev/null
+++ b/north-glass-erp/.idea/encodings.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="Encoding">
+    <file url="file://$PROJECT_DIR$/src/main/java" charset="UTF-8" />
+  </component>
+</project>
\ No newline at end of file
diff --git a/north-glass-erp/.idea/google-java-format.xml b/north-glass-erp/.idea/google-java-format.xml
new file mode 100644
index 0000000..2aa056d
--- /dev/null
+++ b/north-glass-erp/.idea/google-java-format.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="GoogleJavaFormatSettings">
+    <option name="enabled" value="false" />
+  </component>
+</project>
\ No newline at end of file
diff --git a/north-glass-erp/.idea/jarRepositories.xml b/north-glass-erp/.idea/jarRepositories.xml
new file mode 100644
index 0000000..229fa57
--- /dev/null
+++ b/north-glass-erp/.idea/jarRepositories.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="RemoteRepositoriesConfiguration">
+    <remote-repository>
+      <option name="id" value="central" />
+      <option name="name" value="Central Repository" />
+      <option name="url" value="https://repo.maven.apache.org/maven2" />
+    </remote-repository>
+    <remote-repository>
+      <option name="id" value="central" />
+      <option name="name" value="Central Repository" />
+      <option name="url" value="http://maven.aliyun.com/nexus/content/repositories/central/" />
+    </remote-repository>
+    <remote-repository>
+      <option name="id" value="nexus-aliyun" />
+      <option name="name" value="nexus-aliyun" />
+      <option name="url" value="http://maven.aliyun.com/nexus/content/groups/public/" />
+    </remote-repository>
+    <remote-repository>
+      <option name="id" value="central" />
+      <option name="name" value="Maven Central repository" />
+      <option name="url" value="https://repo1.maven.org/maven2" />
+    </remote-repository>
+    <remote-repository>
+      <option name="id" value="jboss.community" />
+      <option name="name" value="JBoss Community repository" />
+      <option name="url" value="https://repository.jboss.org/nexus/content/repositories/public/" />
+    </remote-repository>
+  </component>
+</project>
\ No newline at end of file
diff --git a/north-glass-erp/.idea/misc.xml b/north-glass-erp/.idea/misc.xml
new file mode 100644
index 0000000..2fcd7eb
--- /dev/null
+++ b/north-glass-erp/.idea/misc.xml
@@ -0,0 +1,14 @@
+<project version="4">
+  <component name="ExternalStorageConfigurationManager" enabled="true" />
+  <component name="JavaScriptSettings">
+    <option name="languageLevel" value="FLOW" />
+  </component>
+  <component name="MavenProjectsManager">
+    <option name="originalFiles">
+      <list>
+        <option value="$PROJECT_DIR$/pom.xml" />
+      </list>
+    </option>
+  </component>
+  <component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" default="true" project-jdk-name="corretto-1.8" project-jdk-type="JavaSDK" />
+</project>
\ No newline at end of file
diff --git a/north-glass-erp/.idea/north-glass-erp.iml b/north-glass-erp/.idea/north-glass-erp.iml
new file mode 100644
index 0000000..d6ebd48
--- /dev/null
+++ b/north-glass-erp/.idea/north-glass-erp.iml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<module type="JAVA_MODULE" version="4">
+  <component name="NewModuleRootManager" inherit-compiler-output="true">
+    <exclude-output />
+    <content url="file://$MODULE_DIR$" />
+    <orderEntry type="inheritedJdk" />
+    <orderEntry type="sourceFolder" forTests="false" />
+  </component>
+</module>
\ No newline at end of file
diff --git a/north-glass-erp/.idea/sqldialects.xml b/north-glass-erp/.idea/sqldialects.xml
new file mode 100644
index 0000000..56782ca
--- /dev/null
+++ b/north-glass-erp/.idea/sqldialects.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="SqlDialectMappings">
+    <file url="PROJECT" dialect="MySQL" />
+  </component>
+</project>
\ No newline at end of file
diff --git a/north-glass-erp/.idea/uiDesigner.xml b/north-glass-erp/.idea/uiDesigner.xml
new file mode 100644
index 0000000..2b63946
--- /dev/null
+++ b/north-glass-erp/.idea/uiDesigner.xml
@@ -0,0 +1,124 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="Palette2">
+    <group name="Swing">
+      <item class="com.intellij.uiDesigner.HSpacer" tooltip-text="Horizontal Spacer" icon="/com/intellij/uiDesigner/icons/hspacer.svg" removable="false" auto-create-binding="false" can-attach-label="false">
+        <default-constraints vsize-policy="1" hsize-policy="6" anchor="0" fill="1" />
+      </item>
+      <item class="com.intellij.uiDesigner.VSpacer" tooltip-text="Vertical Spacer" icon="/com/intellij/uiDesigner/icons/vspacer.svg" removable="false" auto-create-binding="false" can-attach-label="false">
+        <default-constraints vsize-policy="6" hsize-policy="1" anchor="0" fill="2" />
+      </item>
+      <item class="javax.swing.JPanel" icon="/com/intellij/uiDesigner/icons/panel.svg" removable="false" auto-create-binding="false" can-attach-label="false">
+        <default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3" />
+      </item>
+      <item class="javax.swing.JScrollPane" icon="/com/intellij/uiDesigner/icons/scrollPane.svg" removable="false" auto-create-binding="false" can-attach-label="true">
+        <default-constraints vsize-policy="7" hsize-policy="7" anchor="0" fill="3" />
+      </item>
+      <item class="javax.swing.JButton" icon="/com/intellij/uiDesigner/icons/button.svg" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="0" hsize-policy="3" anchor="0" fill="1" />
+        <initial-values>
+          <property name="text" value="Button" />
+        </initial-values>
+      </item>
+      <item class="javax.swing.JRadioButton" icon="/com/intellij/uiDesigner/icons/radioButton.svg" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" />
+        <initial-values>
+          <property name="text" value="RadioButton" />
+        </initial-values>
+      </item>
+      <item class="javax.swing.JCheckBox" icon="/com/intellij/uiDesigner/icons/checkBox.svg" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" />
+        <initial-values>
+          <property name="text" value="CheckBox" />
+        </initial-values>
+      </item>
+      <item class="javax.swing.JLabel" icon="/com/intellij/uiDesigner/icons/label.svg" removable="false" auto-create-binding="false" can-attach-label="false">
+        <default-constraints vsize-policy="0" hsize-policy="0" anchor="8" fill="0" />
+        <initial-values>
+          <property name="text" value="Label" />
+        </initial-values>
+      </item>
+      <item class="javax.swing.JTextField" icon="/com/intellij/uiDesigner/icons/textField.svg" removable="false" auto-create-binding="true" can-attach-label="true">
+        <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
+          <preferred-size width="150" height="-1" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JPasswordField" icon="/com/intellij/uiDesigner/icons/passwordField.svg" removable="false" auto-create-binding="true" can-attach-label="true">
+        <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
+          <preferred-size width="150" height="-1" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JFormattedTextField" icon="/com/intellij/uiDesigner/icons/formattedTextField.svg" removable="false" auto-create-binding="true" can-attach-label="true">
+        <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
+          <preferred-size width="150" height="-1" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JTextArea" icon="/com/intellij/uiDesigner/icons/textArea.svg" removable="false" auto-create-binding="true" can-attach-label="true">
+        <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
+          <preferred-size width="150" height="50" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JTextPane" icon="/com/intellij/uiDesigner/icons/textPane.svg" removable="false" auto-create-binding="true" can-attach-label="true">
+        <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
+          <preferred-size width="150" height="50" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JEditorPane" icon="/com/intellij/uiDesigner/icons/editorPane.svg" removable="false" auto-create-binding="true" can-attach-label="true">
+        <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
+          <preferred-size width="150" height="50" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JComboBox" icon="/com/intellij/uiDesigner/icons/comboBox.svg" removable="false" auto-create-binding="true" can-attach-label="true">
+        <default-constraints vsize-policy="0" hsize-policy="2" anchor="8" fill="1" />
+      </item>
+      <item class="javax.swing.JTable" icon="/com/intellij/uiDesigner/icons/table.svg" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
+          <preferred-size width="150" height="50" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JList" icon="/com/intellij/uiDesigner/icons/list.svg" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="6" hsize-policy="2" anchor="0" fill="3">
+          <preferred-size width="150" height="50" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JTree" icon="/com/intellij/uiDesigner/icons/tree.svg" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
+          <preferred-size width="150" height="50" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JTabbedPane" icon="/com/intellij/uiDesigner/icons/tabbedPane.svg" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3">
+          <preferred-size width="200" height="200" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JSplitPane" icon="/com/intellij/uiDesigner/icons/splitPane.svg" removable="false" auto-create-binding="false" can-attach-label="false">
+        <default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3">
+          <preferred-size width="200" height="200" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JSpinner" icon="/com/intellij/uiDesigner/icons/spinner.svg" removable="false" auto-create-binding="true" can-attach-label="true">
+        <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" />
+      </item>
+      <item class="javax.swing.JSlider" icon="/com/intellij/uiDesigner/icons/slider.svg" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" />
+      </item>
+      <item class="javax.swing.JSeparator" icon="/com/intellij/uiDesigner/icons/separator.svg" removable="false" auto-create-binding="false" can-attach-label="false">
+        <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3" />
+      </item>
+      <item class="javax.swing.JProgressBar" icon="/com/intellij/uiDesigner/icons/progressbar.svg" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1" />
+      </item>
+      <item class="javax.swing.JToolBar" icon="/com/intellij/uiDesigner/icons/toolbar.svg" removable="false" auto-create-binding="false" can-attach-label="false">
+        <default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1">
+          <preferred-size width="-1" height="20" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JToolBar$Separator" icon="/com/intellij/uiDesigner/icons/toolbarSeparator.svg" removable="false" auto-create-binding="false" can-attach-label="false">
+        <default-constraints vsize-policy="0" hsize-policy="0" anchor="0" fill="1" />
+      </item>
+      <item class="javax.swing.JScrollBar" icon="/com/intellij/uiDesigner/icons/scrollbar.svg" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="6" hsize-policy="0" anchor="0" fill="2" />
+      </item>
+    </group>
+  </component>
+</project>
\ No newline at end of file
diff --git a/north-glass-erp/.idea/vcs.xml b/north-glass-erp/.idea/vcs.xml
new file mode 100644
index 0000000..94a25f7
--- /dev/null
+++ b/north-glass-erp/.idea/vcs.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="VcsDirectoryMappings">
+    <mapping directory="$PROJECT_DIR$" vcs="Git" />
+  </component>
+</project>
\ No newline at end of file
diff --git a/north-glass-erp/.idea/workspace.xml b/north-glass-erp/.idea/workspace.xml
new file mode 100644
index 0000000..855615f
--- /dev/null
+++ b/north-glass-erp/.idea/workspace.xml
@@ -0,0 +1,377 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="AutoImportSettings">
+    <option name="autoReloadType" value="SELECTIVE" />
+  </component>
+  <component name="ChangeListManager">
+    <list default="true" id="402214ec-6c93-4a9d-b589-f17dc90f718e" name="鏇存敼" comment="11.24鎻愪氦" />
+    <option name="SHOW_DIALOG" value="false" />
+    <option name="HIGHLIGHT_CONFLICTS" value="true" />
+    <option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
+    <option name="LAST_RESOLUTION" value="IGNORE" />
+  </component>
+  <component name="FileTemplateManagerImpl">
+    <option name="RECENT_TEMPLATES">
+      <list>
+        <option value="Vue Options API Component" />
+        <option value="FxmlFile" />
+        <option value="Class" />
+        <option value="Interface" />
+        <option value="Vue Composition API Component" />
+      </list>
+    </option>
+  </component>
+  <component name="Git.Settings">
+    <option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
+  </component>
+  <component name="MarkdownSettingsMigration">
+    <option name="stateVersion" value="1" />
+  </component>
+  <component name="MavenImportPreferences">
+    <option name="generalSettings">
+      <MavenGeneralSettings>
+        <option name="userSettingsFile" value="C:\Users\閮璡.m2\setting.xml" />
+      </MavenGeneralSettings>
+    </option>
+  </component>
+  <component name="ProjectColorInfo">{
+  &quot;associatedIndex&quot;: 3
+}</component>
+  <component name="ProjectId" id="2WqmfjhkKWXDFcYSDMbuyvTulCp" />
+  <component name="ProjectLevelVcsManager" settingsEditedManually="true">
+    <ConfirmationsSetting value="2" id="Add" />
+  </component>
+  <component name="ProjectViewState">
+    <option name="hideEmptyMiddlePackages" value="true" />
+    <option name="showLibraryContents" value="true" />
+  </component>
+  <component name="PropertiesComponent">{
+  &quot;keyToString&quot;: {
+    &quot;RequestMappingsPanelOrder0&quot;: &quot;0&quot;,
+    &quot;RequestMappingsPanelOrder1&quot;: &quot;1&quot;,
+    &quot;RequestMappingsPanelWidth0&quot;: &quot;75&quot;,
+    &quot;RequestMappingsPanelWidth1&quot;: &quot;75&quot;,
+    &quot;RunOnceActivity.OpenProjectViewOnStart&quot;: &quot;true&quot;,
+    &quot;RunOnceActivity.ShowReadmeOnStart&quot;: &quot;true&quot;,
+    &quot;SHARE_PROJECT_CONFIGURATION_FILES&quot;: &quot;true&quot;,
+    &quot;WebServerToolWindowFactoryState&quot;: &quot;false&quot;,
+    &quot;git-widget-placeholder&quot;: &quot;master&quot;,
+    &quot;last_opened_file_path&quot;: &quot;D:/EPR-Refactoring/north-glass-erp&quot;,
+    &quot;node.js.detected.package.eslint&quot;: &quot;true&quot;,
+    &quot;node.js.detected.package.tslint&quot;: &quot;true&quot;,
+    &quot;node.js.selected.package.eslint&quot;: &quot;(autodetect)&quot;,
+    &quot;node.js.selected.package.tslint&quot;: &quot;(autodetect)&quot;,
+    &quot;nodejs_package_manager_path&quot;: &quot;npm&quot;,
+    &quot;project.structure.last.edited&quot;: &quot;妯″潡&quot;,
+    &quot;project.structure.proportion&quot;: &quot;0.0&quot;,
+    &quot;project.structure.side.proportion&quot;: &quot;0.0&quot;,
+    &quot;settings.editor.selected.configurable&quot;: &quot;preferences.pluginManager&quot;,
+    &quot;spring.configuration.checksum&quot;: &quot;def6d90e829e50c63f98c387daecd138&quot;,
+    &quot;ts.external.directory.path&quot;: &quot;D:\\杞欢\\IntelliJ IDEA 2023.2\\plugins\\javascript-impl\\jsLanguageServicesImpl\\external&quot;,
+    &quot;vue.rearranger.settings.migration&quot;: &quot;true&quot;
+  },
+  &quot;keyToStringList&quot;: {
+    &quot;vue.recent.templates&quot;: [
+      &quot;Vue Composition API Component&quot;
+    ]
+  }
+}</component>
+  <component name="RecentsManager">
+    <key name="CreateClassDialog.RecentsKey">
+      <recent name="com.example.erp.tools" />
+      <recent name="com.example.erp.config" />
+    </key>
+    <key name="CopyFile.RECENT_KEYS">
+      <recent name="D:\Documents\north-glass-erp\src\main\resources\mapper\userInfo" />
+      <recent name="D:\projct\document\north-glass-erp\src\main\java\com\example\erp\service\userInfo" />
+      <recent name="D:\projct\document\north-glass-erp\src\main\java\com\example\erp\mapper" />
+      <recent name="D:\projct\document\north-glass-erp\src\main\java\com\example\erp\entity" />
+      <recent name="D:\Documents\north-glass-erp\northglass-erp\public" />
+    </key>
+    <key name="MoveFile.RECENT_KEYS">
+      <recent name="D:\EPR-Refactoring\north-glass-erp\northglass-erp\src\views" />
+      <recent name="D:\Documents\north-glass-erp\northglass-erp\src\views\sd\productManage" />
+      <recent name="D:\Documents\north-glass-erp\src\main\resources\mapper\sd" />
+      <recent name="D:\Documents\north-glass-erp\src\main\resources\mapper\userInfo" />
+      <recent name="D:\Documents\north-glass-erp\src\main\resources\mapper" />
+    </key>
+    <key name="ExtractSuperBase.RECENT_KEYS">
+      <recent name="com.example.erp.common.interceptor" />
+    </key>
+  </component>
+  <component name="RunAnythingCache">
+    <option name="myCommands">
+      <command value="length" />
+    </option>
+  </component>
+  <component name="RunManager" selected="Spring Boot.ErpApplication">
+    <configuration default="true" type="ArquillianJUnit" factoryName="" nameIsGenerated="true">
+      <option name="arquillianRunConfiguration">
+        <value>
+          <option name="containerStateName" value="" />
+        </value>
+      </option>
+      <option name="TEST_OBJECT" value="class" />
+      <method v="2">
+        <option name="Make" enabled="true" />
+      </method>
+    </configuration>
+    <configuration name="erp涓殑鎵�鏈�" type="JUnit" factoryName="JUnit" temporary="true" nameIsGenerated="true">
+      <module name="erp" />
+      <option name="PACKAGE_NAME" value="" />
+      <option name="TEST_OBJECT" value="package" />
+      <method v="2">
+        <option name="Make" enabled="true" />
+      </method>
+    </configuration>
+    <configuration name="ErpApplication" type="SpringBootApplicationConfigurationType" factoryName="Spring Boot" nameIsGenerated="true">
+      <module name="erp" />
+      <option name="SPRING_BOOT_MAIN_CLASS" value="com.example.erp.ErpApplication" />
+      <method v="2">
+        <option name="Make" enabled="true" />
+      </method>
+    </configuration>
+    <configuration name="dev" type="js.build_tools.npm" nameIsGenerated="true">
+      <package-json value="$PROJECT_DIR$/northglass-erp/package.json" />
+      <command value="run" />
+      <scripts>
+        <script value="dev" />
+      </scripts>
+      <node-interpreter value="project" />
+      <envs />
+      <method v="2" />
+    </configuration>
+    <list>
+      <item itemvalue="JUnit.erp涓殑鎵�鏈�" />
+      <item itemvalue="npm.dev" />
+      <item itemvalue="Spring Boot.ErpApplication" />
+    </list>
+    <recent_temporary>
+      <list>
+        <item itemvalue="JUnit.erp涓殑鎵�鏈�" />
+      </list>
+    </recent_temporary>
+  </component>
+  <component name="SpellCheckerSettings" RuntimeDictionaries="0" Folders="0" CustomDictionaries="0" DefaultDictionary="搴旂敤绋嬪簭绾�" UseSingleDictionary="true" transferred="true" />
+  <component name="TaskManager">
+    <task active="true" id="Default" summary="榛樿浠诲姟">
+      <changelist id="402214ec-6c93-4a9d-b589-f17dc90f718e" name="鏇存敼" comment="" />
+      <created>1697468590520</created>
+      <option name="number" value="Default" />
+      <option name="presentableId" value="Default" />
+      <updated>1697468590520</updated>
+      <workItem from="1697468591856" duration="615000" />
+      <workItem from="1697471278802" duration="481000" />
+      <workItem from="1697471769995" duration="86000" />
+      <workItem from="1697471863704" duration="10000" />
+      <workItem from="1697471931787" duration="2170000" />
+      <workItem from="1697709162563" duration="7755000" />
+      <workItem from="1697861921999" duration="3091000" />
+      <workItem from="1697913671504" duration="4581000" />
+      <workItem from="1697952862711" duration="255000" />
+      <workItem from="1697953125809" duration="465000" />
+      <workItem from="1697953600861" duration="254000" />
+      <workItem from="1697953955642" duration="1837000" />
+      <workItem from="1697955813287" duration="28000" />
+      <workItem from="1697955848654" duration="254000" />
+      <workItem from="1697956112262" duration="5131000" />
+      <workItem from="1697962716198" duration="15661000" />
+      <workItem from="1697986744239" duration="470000" />
+      <workItem from="1698028907332" duration="13162000" />
+      <workItem from="1698197623546" duration="4985000" />
+      <workItem from="1698215909297" duration="3273000" />
+      <workItem from="1698219198366" duration="5191000" />
+      <workItem from="1698280646310" duration="8152000" />
+      <workItem from="1698627305013" duration="601000" />
+      <workItem from="1698629645528" duration="538000" />
+      <workItem from="1698632724850" duration="3196000" />
+      <workItem from="1698823498227" duration="4953000" />
+      <workItem from="1698834610157" duration="6276000" />
+      <workItem from="1699499569189" duration="4051000" />
+      <workItem from="1699581871357" duration="28597000" />
+      <workItem from="1701158711511" duration="8788000" />
+      <workItem from="1701391512754" duration="3288000" />
+      <workItem from="1701420496110" duration="3271000" />
+      <workItem from="1701669751622" duration="1416000" />
+      <workItem from="1701738277209" duration="1182000" />
+      <workItem from="1701739824218" duration="214000" />
+      <workItem from="1701740058524" duration="212000" />
+      <workItem from="1701740293916" duration="1846000" />
+      <workItem from="1701742713025" duration="305000" />
+      <workItem from="1701743968174" duration="29000" />
+      <workItem from="1701744007750" duration="58000" />
+      <workItem from="1701744074423" duration="35330000" />
+      <workItem from="1701910768762" duration="19157000" />
+      <workItem from="1701939822883" duration="20000" />
+      <workItem from="1701994104282" duration="18574000" />
+      <workItem from="1702253353629" duration="4535000" />
+      <workItem from="1702260368238" duration="4000" />
+      <workItem from="1702260752353" duration="67000" />
+      <workItem from="1702260830343" duration="31471000" />
+      <workItem from="1702426354510" duration="34981000" />
+      <workItem from="1702631535326" duration="205000" />
+    </task>
+    <task id="LOCAL-00001" summary="绗竴娆℃帹閫�">
+      <option name="closed" value="true" />
+      <created>1697471372444</created>
+      <option name="number" value="00001" />
+      <option name="presentableId" value="LOCAL-00001" />
+      <option name="project" value="LOCAL" />
+      <updated>1697471372445</updated>
+    </task>
+    <task id="LOCAL-00002" summary="绗竴娆℃帹閫�">
+      <option name="closed" value="true" />
+      <created>1697471497874</created>
+      <option name="number" value="00002" />
+      <option name="presentableId" value="LOCAL-00002" />
+      <option name="project" value="LOCAL" />
+      <updated>1697471497874</updated>
+    </task>
+    <task id="LOCAL-00003" summary="绗竴娆℃帹閫�">
+      <option name="closed" value="true" />
+      <created>1697472420788</created>
+      <option name="number" value="00003" />
+      <option name="presentableId" value="LOCAL-00003" />
+      <option name="project" value="LOCAL" />
+      <updated>1697472420788</updated>
+    </task>
+    <task id="LOCAL-00004" summary="绗竴娆℃帹閫�">
+      <option name="closed" value="true" />
+      <created>1697472454035</created>
+      <option name="number" value="00004" />
+      <option name="presentableId" value="LOCAL-00004" />
+      <option name="project" value="LOCAL" />
+      <updated>1697472454035</updated>
+    </task>
+    <task id="LOCAL-00005" summary="绗竴娆℃帹閫�">
+      <option name="closed" value="true" />
+      <created>1697976470632</created>
+      <option name="number" value="00005" />
+      <option name="presentableId" value="LOCAL-00005" />
+      <option name="project" value="LOCAL" />
+      <updated>1697976470632</updated>
+    </task>
+    <task id="LOCAL-00006" summary="绗竴娆℃帹閫�">
+      <option name="closed" value="true" />
+      <created>1697977947581</created>
+      <option name="number" value="00006" />
+      <option name="presentableId" value="LOCAL-00006" />
+      <option name="project" value="LOCAL" />
+      <updated>1697977947581</updated>
+    </task>
+    <task id="LOCAL-00007" summary="绗竴娆℃帹閫�">
+      <option name="closed" value="true" />
+      <created>1698070928863</created>
+      <option name="number" value="00007" />
+      <option name="presentableId" value="LOCAL-00007" />
+      <option name="project" value="LOCAL" />
+      <updated>1698070928863</updated>
+    </task>
+    <task id="LOCAL-00008" summary="绗竴娆℃帹閫�">
+      <option name="closed" value="true" />
+      <created>1698070950071</created>
+      <option name="number" value="00008" />
+      <option name="presentableId" value="LOCAL-00008" />
+      <option name="project" value="LOCAL" />
+      <updated>1698070950071</updated>
+    </task>
+    <task id="LOCAL-00009" summary="绗竴娆℃帹閫�">
+      <option name="closed" value="true" />
+      <created>1698155449740</created>
+      <option name="number" value="00009" />
+      <option name="presentableId" value="LOCAL-00009" />
+      <option name="project" value="LOCAL" />
+      <updated>1698155449740</updated>
+    </task>
+    <task id="LOCAL-00010" summary="绗竴娆℃帹閫�">
+      <option name="closed" value="true" />
+      <created>1698160599574</created>
+      <option name="number" value="00010" />
+      <option name="presentableId" value="LOCAL-00010" />
+      <option name="project" value="LOCAL" />
+      <updated>1698160599574</updated>
+    </task>
+    <task id="LOCAL-00011" summary="绗竴娆℃帹閫�">
+      <option name="closed" value="true" />
+      <created>1699002088623</created>
+      <option name="number" value="00011" />
+      <option name="presentableId" value="LOCAL-00011" />
+      <option name="project" value="LOCAL" />
+      <updated>1699002088623</updated>
+    </task>
+    <task id="LOCAL-00012" summary="绗竴娆℃帹閫�">
+      <option name="closed" value="true" />
+      <created>1699600840886</created>
+      <option name="number" value="00012" />
+      <option name="presentableId" value="LOCAL-00012" />
+      <option name="project" value="LOCAL" />
+      <updated>1699600840886</updated>
+    </task>
+    <task id="LOCAL-00013" summary="绗竴娆℃帹閫�">
+      <option name="closed" value="true" />
+      <created>1699600891700</created>
+      <option name="number" value="00013" />
+      <option name="presentableId" value="LOCAL-00013" />
+      <option name="project" value="LOCAL" />
+      <updated>1699600891700</updated>
+    </task>
+    <task id="LOCAL-00014" summary="11.24鎻愪氦">
+      <option name="closed" value="true" />
+      <created>1700816443339</created>
+      <option name="number" value="00014" />
+      <option name="presentableId" value="LOCAL-00014" />
+      <option name="project" value="LOCAL" />
+      <updated>1700816443339</updated>
+    </task>
+    <task id="LOCAL-00015" summary="11.24鎻愪氦">
+      <option name="closed" value="true" />
+      <created>1701502564307</created>
+      <option name="number" value="00015" />
+      <option name="presentableId" value="LOCAL-00015" />
+      <option name="project" value="LOCAL" />
+      <updated>1701502564307</updated>
+    </task>
+    <option name="localTasksCounter" value="16" />
+    <servers />
+  </component>
+  <component name="TypeScriptGeneratedFilesManager">
+    <option name="version" value="3" />
+  </component>
+  <component name="Vcs.Log.Tabs.Properties">
+    <option name="TAB_STATES">
+      <map>
+        <entry key="MAIN">
+          <value>
+            <State>
+              <option name="FILTERS">
+                <map>
+                  <entry key="branch">
+                    <value>
+                      <list>
+                        <option value="master" />
+                      </list>
+                    </value>
+                  </entry>
+                </map>
+              </option>
+              <option name="SHOW_ROOT_NAMES" value="true" />
+            </State>
+          </value>
+        </entry>
+      </map>
+    </option>
+  </component>
+  <component name="VcsManagerConfiguration">
+    <option name="ADD_EXTERNAL_FILES_SILENTLY" value="true" />
+    <MESSAGE value="Merge remote-tracking branch 'origin/master'&#10;&#10;# Conflicts:&#10;#&#9;.idea/workspace.xml&#10;#&#9;northglass-erp/src/App.vue&#10;#&#9;northglass-erp/src/assets/main.css" />
+    <MESSAGE value="10/22鎻愪氦swaggerui" />
+    <MESSAGE value="123" />
+    <MESSAGE value="绗竴娆℃帹閫�" />
+    <MESSAGE value="11.24鎻愪氦" />
+    <option name="LAST_COMMIT_MESSAGE" value="11.24鎻愪氦" />
+  </component>
+  <component name="XSLT-Support.FileAssociations.UIState">
+    <expand />
+    <select />
+  </component>
+</project>
\ No newline at end of file
diff --git a/north-glass-erp/.mvn/wrapper/maven-wrapper.properties b/north-glass-erp/.mvn/wrapper/maven-wrapper.properties
new file mode 100644
index 0000000..ca5ab4b
--- /dev/null
+++ b/north-glass-erp/.mvn/wrapper/maven-wrapper.properties
@@ -0,0 +1,18 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.8.7/apache-maven-3.8.7-bin.zip
+wrapperUrl=https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.1.1/maven-wrapper-3.1.1.jar
diff --git a/north-glass-erp/README.md b/north-glass-erp/README.md
new file mode 100644
index 0000000..f71d789
--- /dev/null
+++ b/north-glass-erp/README.md
@@ -0,0 +1,39 @@
+# NorthGlassERP
+
+#### 浠嬬粛
+{**浠ヤ笅鏄� Gitee 骞冲彴璇存槑锛屾偍鍙互鏇挎崲姝ょ畝浠�**
+Gitee 鏄� OSCHINA 鎺ㄥ嚭鐨勫熀浜� Git 鐨勪唬鐮佹墭绠″钩鍙帮紙鍚屾椂鏀寔 SVN锛夈�備笓涓哄紑鍙戣�呮彁渚涚ǔ瀹氥�侀珮鏁堛�佸畨鍏ㄧ殑浜戠杞欢寮�鍙戝崗浣滃钩鍙�
+鏃犺鏄釜浜恒�佸洟闃熴�佹垨鏄紒涓氾紝閮借兘澶熺敤 Gitee 瀹炵幇浠g爜鎵樼銆侀」鐩鐞嗐�佸崗浣滃紑鍙戙�備紒涓氶」鐩鐪� [https://gitee.com/enterprises](https://gitee.com/enterprises)}
+
+#### 杞欢鏋舵瀯
+杞欢鏋舵瀯璇存槑
+
+
+#### 瀹夎鏁欑▼
+
+1.  xxxx
+2.  xxxx
+3.  xxxx
+
+#### 浣跨敤璇存槑
+
+1.  xxxx
+2.  xxxx
+3.  xxxx
+
+#### 鍙備笌璐$尞
+
+1.  Fork 鏈粨搴�
+2.  鏂板缓 Feat_xxx 鍒嗘敮
+3.  鎻愪氦浠g爜
+4.  鏂板缓 Pull Request
+
+
+#### 鐗规妧
+
+1.  浣跨敤 Readme\_XXX.md 鏉ユ敮鎸佷笉鍚岀殑璇█锛屼緥濡� Readme\_en.md, Readme\_zh.md
+2.  Gitee 瀹樻柟鍗氬 [blog.gitee.com](https://blog.gitee.com)
+3.  浣犲彲浠� [https://gitee.com/explore](https://gitee.com/explore) 杩欎釜鍦板潃鏉ヤ簡瑙� Gitee 涓婄殑浼樼寮�婧愰」鐩�
+4.  [GVP](https://gitee.com/gvp) 鍏ㄧО鏄� Gitee 鏈�鏈変环鍊煎紑婧愰」鐩紝鏄患鍚堣瘎瀹氬嚭鐨勪紭绉�寮�婧愰」鐩�
+5.  Gitee 瀹樻柟鎻愪緵鐨勪娇鐢ㄦ墜鍐� [https://gitee.com/help](https://gitee.com/help)
+6.  Gitee 灏侀潰浜虹墿鏄竴妗g敤鏉ュ睍绀� Gitee 浼氬憳椋庨噰鐨勬爮鐩� [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/)
diff --git a/north-glass-erp/northglass-erp/.gitignore b/north-glass-erp/northglass-erp/.gitignore
new file mode 100644
index 0000000..38adffa
--- /dev/null
+++ b/north-glass-erp/northglass-erp/.gitignore
@@ -0,0 +1,28 @@
+# Logs
+logs
+*.log
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+pnpm-debug.log*
+lerna-debug.log*
+
+node_modules
+.DS_Store
+dist
+dist-ssr
+coverage
+*.local
+
+/cypress/videos/
+/cypress/screenshots/
+
+# Editor directories and files
+.vscode/*
+!.vscode/extensions.json
+.idea
+*.suo
+*.ntvs*
+*.njsproj
+*.sln
+*.sw?
diff --git a/north-glass-erp/northglass-erp/.vscode/extensions.json b/north-glass-erp/northglass-erp/.vscode/extensions.json
new file mode 100644
index 0000000..c0a6e5a
--- /dev/null
+++ b/north-glass-erp/northglass-erp/.vscode/extensions.json
@@ -0,0 +1,3 @@
+{
+  "recommendations": ["Vue.volar", "Vue.vscode-typescript-vue-plugin"]
+}
diff --git a/north-glass-erp/northglass-erp/README.md b/north-glass-erp/northglass-erp/README.md
new file mode 100644
index 0000000..b7e89c9
--- /dev/null
+++ b/north-glass-erp/northglass-erp/README.md
@@ -0,0 +1,29 @@
+# northglass-erp
+
+This template should help get you started developing with Vue 3 in Vite.
+
+## Recommended IDE Setup
+
+[VSCode](https://code.visualstudio.com/) + [Volar](https://marketplace.visualstudio.com/items?itemName=Vue.volar) (and disable Vetur) + [TypeScript Vue Plugin (Volar)](https://marketplace.visualstudio.com/items?itemName=Vue.vscode-typescript-vue-plugin).
+
+## Customize configuration
+
+See [Vite Configuration Reference](https://vitejs.dev/config/).
+
+## Project Setup
+
+```sh
+npm install
+```
+
+### Compile and Hot-Reload for Development
+
+```sh
+npm run dev
+```
+
+### Compile and Minify for Production
+
+```sh
+npm run build
+```
diff --git a/north-glass-erp/northglass-erp/config.js b/north-glass-erp/northglass-erp/config.js
new file mode 100644
index 0000000..db0891c
--- /dev/null
+++ b/north-glass-erp/northglass-erp/config.js
@@ -0,0 +1,4 @@
+export default {
+  serverUrl:"localhost:8080"
+  //serverUrl:"res.abeim.cn"
+}
\ No newline at end of file
diff --git a/north-glass-erp/northglass-erp/index.html b/north-glass-erp/northglass-erp/index.html
new file mode 100644
index 0000000..03b130f
--- /dev/null
+++ b/north-glass-erp/northglass-erp/index.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html>
+<html lang="en">
+  <head>
+    <meta charset="UTF-8">
+    <link rel="icon" href="/favicon.ico">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+    <title>鍖楃幓</title>
+  </head>
+  <body>
+    <div id="app"></div>
+    <script type="module" src="/src/main.js"></script>
+  </body>
+</html>
diff --git a/north-glass-erp/northglass-erp/package-lock.json b/north-glass-erp/northglass-erp/package-lock.json
new file mode 100644
index 0000000..daeca70
--- /dev/null
+++ b/north-glass-erp/northglass-erp/package-lock.json
@@ -0,0 +1,2310 @@
+{
+  "name": "northglass-erp",
+  "version": "0.0.0",
+  "lockfileVersion": 2,
+  "requires": true,
+  "packages": {
+    "": {
+      "name": "northglass-erp",
+      "version": "0.0.0",
+      "dependencies": {
+        "@element-plus/icons-vue": "^2.1.0",
+        "@vue-macros/reactivity-transform": "^0.3.23",
+        "axios": "^1.5.1",
+        "element-plus": "^2.4.0",
+        "pinia": "^2.1.6",
+        "pinia-plugin-persistedstate": "^3.2.0",
+        "vue": "^3.3.4",
+        "vue-router": "^4.2.4"
+      },
+      "devDependencies": {
+        "@vitejs/plugin-vue": "^4.3.4",
+        "vite": "^4.4.9"
+      }
+    },
+    "node_modules/@babel/helper-string-parser": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz",
+      "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==",
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/helper-validator-identifier": {
+      "version": "7.22.20",
+      "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz",
+      "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==",
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/parser": {
+      "version": "7.23.0",
+      "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.0.tgz",
+      "integrity": "sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw==",
+      "bin": {
+        "parser": "bin/babel-parser.js"
+      },
+      "engines": {
+        "node": ">=6.0.0"
+      }
+    },
+    "node_modules/@babel/types": {
+      "version": "7.23.0",
+      "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.0.tgz",
+      "integrity": "sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg==",
+      "dependencies": {
+        "@babel/helper-string-parser": "^7.22.5",
+        "@babel/helper-validator-identifier": "^7.22.20",
+        "to-fast-properties": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@ctrl/tinycolor": {
+      "version": "3.6.1",
+      "resolved": "https://registry.npmjs.org/@ctrl/tinycolor/-/tinycolor-3.6.1.tgz",
+      "integrity": "sha512-SITSV6aIXsuVNV3f3O0f2n/cgyEDWoSqtZMYiAmcsYHydcKrOz3gUxB/iXd/Qf08+IZX4KpgNbvUdMBmWz+kcA==",
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/@element-plus/icons-vue": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/@element-plus/icons-vue/-/icons-vue-2.1.0.tgz",
+      "integrity": "sha512-PSBn3elNoanENc1vnCfh+3WA9fimRC7n+fWkf3rE5jvv+aBohNHABC/KAR5KWPecxWxDTVT1ERpRbOMRcOV/vA==",
+      "peerDependencies": {
+        "vue": "^3.2.0"
+      }
+    },
+    "node_modules/@esbuild/android-arm": {
+      "version": "0.18.20",
+      "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.20.tgz",
+      "integrity": "sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==",
+      "cpu": [
+        "arm"
+      ],
+      "dev": true,
+      "optional": true,
+      "os": [
+        "android"
+      ],
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/@esbuild/android-arm64": {
+      "version": "0.18.20",
+      "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.18.20.tgz",
+      "integrity": "sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==",
+      "cpu": [
+        "arm64"
+      ],
+      "dev": true,
+      "optional": true,
+      "os": [
+        "android"
+      ],
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/@esbuild/android-x64": {
+      "version": "0.18.20",
+      "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.18.20.tgz",
+      "integrity": "sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==",
+      "cpu": [
+        "x64"
+      ],
+      "dev": true,
+      "optional": true,
+      "os": [
+        "android"
+      ],
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/@esbuild/darwin-arm64": {
+      "version": "0.18.20",
+      "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz",
+      "integrity": "sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==",
+      "cpu": [
+        "arm64"
+      ],
+      "dev": true,
+      "optional": true,
+      "os": [
+        "darwin"
+      ],
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/@esbuild/darwin-x64": {
+      "version": "0.18.20",
+      "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.18.20.tgz",
+      "integrity": "sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==",
+      "cpu": [
+        "x64"
+      ],
+      "dev": true,
+      "optional": true,
+      "os": [
+        "darwin"
+      ],
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/@esbuild/freebsd-arm64": {
+      "version": "0.18.20",
+      "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.20.tgz",
+      "integrity": "sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==",
+      "cpu": [
+        "arm64"
+      ],
+      "dev": true,
+      "optional": true,
+      "os": [
+        "freebsd"
+      ],
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/@esbuild/freebsd-x64": {
+      "version": "0.18.20",
+      "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.18.20.tgz",
+      "integrity": "sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==",
+      "cpu": [
+        "x64"
+      ],
+      "dev": true,
+      "optional": true,
+      "os": [
+        "freebsd"
+      ],
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/@esbuild/linux-arm": {
+      "version": "0.18.20",
+      "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.18.20.tgz",
+      "integrity": "sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==",
+      "cpu": [
+        "arm"
+      ],
+      "dev": true,
+      "optional": true,
+      "os": [
+        "linux"
+      ],
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/@esbuild/linux-arm64": {
+      "version": "0.18.20",
+      "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.18.20.tgz",
+      "integrity": "sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==",
+      "cpu": [
+        "arm64"
+      ],
+      "dev": true,
+      "optional": true,
+      "os": [
+        "linux"
+      ],
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/@esbuild/linux-ia32": {
+      "version": "0.18.20",
+      "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.18.20.tgz",
+      "integrity": "sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==",
+      "cpu": [
+        "ia32"
+      ],
+      "dev": true,
+      "optional": true,
+      "os": [
+        "linux"
+      ],
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/@esbuild/linux-loong64": {
+      "version": "0.18.20",
+      "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.18.20.tgz",
+      "integrity": "sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==",
+      "cpu": [
+        "loong64"
+      ],
+      "dev": true,
+      "optional": true,
+      "os": [
+        "linux"
+      ],
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/@esbuild/linux-mips64el": {
+      "version": "0.18.20",
+      "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.18.20.tgz",
+      "integrity": "sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==",
+      "cpu": [
+        "mips64el"
+      ],
+      "dev": true,
+      "optional": true,
+      "os": [
+        "linux"
+      ],
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/@esbuild/linux-ppc64": {
+      "version": "0.18.20",
+      "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.18.20.tgz",
+      "integrity": "sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==",
+      "cpu": [
+        "ppc64"
+      ],
+      "dev": true,
+      "optional": true,
+      "os": [
+        "linux"
+      ],
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/@esbuild/linux-riscv64": {
+      "version": "0.18.20",
+      "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.18.20.tgz",
+      "integrity": "sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==",
+      "cpu": [
+        "riscv64"
+      ],
+      "dev": true,
+      "optional": true,
+      "os": [
+        "linux"
+      ],
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/@esbuild/linux-s390x": {
+      "version": "0.18.20",
+      "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.18.20.tgz",
+      "integrity": "sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==",
+      "cpu": [
+        "s390x"
+      ],
+      "dev": true,
+      "optional": true,
+      "os": [
+        "linux"
+      ],
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/@esbuild/linux-x64": {
+      "version": "0.18.20",
+      "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.18.20.tgz",
+      "integrity": "sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==",
+      "cpu": [
+        "x64"
+      ],
+      "dev": true,
+      "optional": true,
+      "os": [
+        "linux"
+      ],
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/@esbuild/netbsd-x64": {
+      "version": "0.18.20",
+      "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.18.20.tgz",
+      "integrity": "sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==",
+      "cpu": [
+        "x64"
+      ],
+      "dev": true,
+      "optional": true,
+      "os": [
+        "netbsd"
+      ],
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/@esbuild/openbsd-x64": {
+      "version": "0.18.20",
+      "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.18.20.tgz",
+      "integrity": "sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==",
+      "cpu": [
+        "x64"
+      ],
+      "dev": true,
+      "optional": true,
+      "os": [
+        "openbsd"
+      ],
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/@esbuild/sunos-x64": {
+      "version": "0.18.20",
+      "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.18.20.tgz",
+      "integrity": "sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==",
+      "cpu": [
+        "x64"
+      ],
+      "dev": true,
+      "optional": true,
+      "os": [
+        "sunos"
+      ],
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/@esbuild/win32-arm64": {
+      "version": "0.18.20",
+      "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.18.20.tgz",
+      "integrity": "sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==",
+      "cpu": [
+        "arm64"
+      ],
+      "dev": true,
+      "optional": true,
+      "os": [
+        "win32"
+      ],
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/@esbuild/win32-ia32": {
+      "version": "0.18.20",
+      "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.18.20.tgz",
+      "integrity": "sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==",
+      "cpu": [
+        "ia32"
+      ],
+      "dev": true,
+      "optional": true,
+      "os": [
+        "win32"
+      ],
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/@esbuild/win32-x64": {
+      "version": "0.18.20",
+      "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz",
+      "integrity": "sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==",
+      "cpu": [
+        "x64"
+      ],
+      "dev": true,
+      "optional": true,
+      "os": [
+        "win32"
+      ],
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/@floating-ui/core": {
+      "version": "1.5.0",
+      "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.5.0.tgz",
+      "integrity": "sha512-kK1h4m36DQ0UHGj5Ah4db7R0rHemTqqO0QLvUqi1/mUUp3LuAWbWxdxSIf/XsnH9VS6rRVPLJCncjRzUvyCLXg==",
+      "dependencies": {
+        "@floating-ui/utils": "^0.1.3"
+      }
+    },
+    "node_modules/@floating-ui/dom": {
+      "version": "1.5.3",
+      "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.5.3.tgz",
+      "integrity": "sha512-ClAbQnEqJAKCJOEbbLo5IUlZHkNszqhuxS4fHAVxRPXPya6Ysf2G8KypnYcOTpx6I8xcgF9bbHb6g/2KpbV8qA==",
+      "dependencies": {
+        "@floating-ui/core": "^1.4.2",
+        "@floating-ui/utils": "^0.1.3"
+      }
+    },
+    "node_modules/@floating-ui/utils": {
+      "version": "0.1.6",
+      "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.1.6.tgz",
+      "integrity": "sha512-OfX7E2oUDYxtBvsuS4e/jSn4Q9Qb6DzgeYtsAdkPZ47znpoNsMgZw0+tVijiv3uGNR6dgNlty6r9rzIzHjtd/A=="
+    },
+    "node_modules/@jridgewell/sourcemap-codec": {
+      "version": "1.4.15",
+      "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz",
+      "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg=="
+    },
+    "node_modules/@popperjs/core": {
+      "name": "@sxzz/popperjs-es",
+      "version": "2.11.7",
+      "resolved": "https://registry.npmjs.org/@sxzz/popperjs-es/-/popperjs-es-2.11.7.tgz",
+      "integrity": "sha512-Ccy0NlLkzr0Ex2FKvh2X+OyERHXJ88XJ1MXtsI9y9fGexlaXaVTPzBCRBwIxFkORuOb+uBqeu+RqnpgYTEZRUQ==",
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/popperjs"
+      }
+    },
+    "node_modules/@rollup/pluginutils": {
+      "version": "5.0.5",
+      "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.0.5.tgz",
+      "integrity": "sha512-6aEYR910NyP73oHiJglti74iRyOwgFU4x3meH/H8OJx6Ry0j6cOVZ5X/wTvub7G7Ao6qaHBEaNsV3GLJkSsF+Q==",
+      "dependencies": {
+        "@types/estree": "^1.0.0",
+        "estree-walker": "^2.0.2",
+        "picomatch": "^2.3.1"
+      },
+      "engines": {
+        "node": ">=14.0.0"
+      },
+      "peerDependencies": {
+        "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0"
+      },
+      "peerDependenciesMeta": {
+        "rollup": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/@types/estree": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.2.tgz",
+      "integrity": "sha512-VeiPZ9MMwXjO32/Xu7+OwflfmeoRwkE/qzndw42gGtgJwZopBnzy2gD//NN1+go1mADzkDcqf/KnFRSjTJ8xJA=="
+    },
+    "node_modules/@types/lodash": {
+      "version": "4.14.199",
+      "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.199.tgz",
+      "integrity": "sha512-Vrjz5N5Ia4SEzWWgIVwnHNEnb1UE1XMkvY5DGXrAeOGE9imk0hgTHh5GyDjLDJi9OTCn9oo9dXH1uToK1VRfrg=="
+    },
+    "node_modules/@types/lodash-es": {
+      "version": "4.17.9",
+      "resolved": "https://registry.npmjs.org/@types/lodash-es/-/lodash-es-4.17.9.tgz",
+      "integrity": "sha512-ZTcmhiI3NNU7dEvWLZJkzG6ao49zOIjEgIE0RgV7wbPxU0f2xT3VSAHw2gmst8swH6V0YkLRGp4qPlX/6I90MQ==",
+      "dependencies": {
+        "@types/lodash": "*"
+      }
+    },
+    "node_modules/@types/web-bluetooth": {
+      "version": "0.0.16",
+      "resolved": "https://registry.npmjs.org/@types/web-bluetooth/-/web-bluetooth-0.0.16.tgz",
+      "integrity": "sha512-oh8q2Zc32S6gd/j50GowEjKLoOVOwHP/bWVjKJInBwQqdOYMdPrf1oVlelTlyfFK3CKxL1uahMDAr+vy8T7yMQ=="
+    },
+    "node_modules/@vitejs/plugin-vue": {
+      "version": "4.4.0",
+      "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-4.4.0.tgz",
+      "integrity": "sha512-xdguqb+VUwiRpSg+nsc2HtbAUSGak25DXYvpQQi4RVU1Xq1uworyoH/md9Rfd8zMmPR/pSghr309QNcftUVseg==",
+      "dev": true,
+      "engines": {
+        "node": "^14.18.0 || >=16.0.0"
+      },
+      "peerDependencies": {
+        "vite": "^4.0.0",
+        "vue": "^3.2.25"
+      }
+    },
+    "node_modules/@vue-macros/common": {
+      "version": "1.8.0",
+      "resolved": "https://registry.npmjs.org/@vue-macros/common/-/common-1.8.0.tgz",
+      "integrity": "sha512-auDJJzE0z3uRe3867e0DsqcseKImktNf5ojCZgUKqiVxb2yTlwlgOVAYCgoep9oITqxkXQymSvFeKhedi8PhaA==",
+      "dependencies": {
+        "@babel/types": "^7.22.17",
+        "@rollup/pluginutils": "^5.0.4",
+        "@vue/compiler-sfc": "^3.3.4",
+        "ast-kit": "^0.11.2",
+        "local-pkg": "^0.4.3",
+        "magic-string-ast": "^0.3.0"
+      },
+      "engines": {
+        "node": ">=16.14.0"
+      },
+      "peerDependencies": {
+        "vue": "^2.7.0 || ^3.2.25"
+      },
+      "peerDependenciesMeta": {
+        "vue": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/@vue-macros/reactivity-transform": {
+      "version": "0.3.23",
+      "resolved": "https://registry.npmjs.org/@vue-macros/reactivity-transform/-/reactivity-transform-0.3.23.tgz",
+      "integrity": "sha512-SubIg1GsNpQdIDJusrcA2FWBgwSY+4jmL0j6SJ6PU85r3rlS+uDhn6AUkqxeZRAdmJnrbGHXDyWUdygOZmWrSg==",
+      "dependencies": {
+        "@babel/parser": "^7.22.16",
+        "@vue-macros/common": "1.8.0",
+        "@vue/compiler-core": "^3.3.4",
+        "@vue/shared": "^3.3.4",
+        "magic-string": "^0.30.3",
+        "unplugin": "^1.4.0"
+      },
+      "engines": {
+        "node": ">=16.14.0"
+      },
+      "peerDependencies": {
+        "vue": "^2.7.0 || ^3.2.25"
+      }
+    },
+    "node_modules/@vue/compiler-core": {
+      "version": "3.3.4",
+      "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.3.4.tgz",
+      "integrity": "sha512-cquyDNvZ6jTbf/+x+AgM2Arrp6G4Dzbb0R64jiG804HRMfRiFXWI6kqUVqZ6ZR0bQhIoQjB4+2bhNtVwndW15g==",
+      "dependencies": {
+        "@babel/parser": "^7.21.3",
+        "@vue/shared": "3.3.4",
+        "estree-walker": "^2.0.2",
+        "source-map-js": "^1.0.2"
+      }
+    },
+    "node_modules/@vue/compiler-dom": {
+      "version": "3.3.4",
+      "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.3.4.tgz",
+      "integrity": "sha512-wyM+OjOVpuUukIq6p5+nwHYtj9cFroz9cwkfmP9O1nzH68BenTTv0u7/ndggT8cIQlnBeOo6sUT/gvHcIkLA5w==",
+      "dependencies": {
+        "@vue/compiler-core": "3.3.4",
+        "@vue/shared": "3.3.4"
+      }
+    },
+    "node_modules/@vue/compiler-sfc": {
+      "version": "3.3.4",
+      "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.3.4.tgz",
+      "integrity": "sha512-6y/d8uw+5TkCuzBkgLS0v3lSM3hJDntFEiUORM11pQ/hKvkhSKZrXW6i69UyXlJQisJxuUEJKAWEqWbWsLeNKQ==",
+      "dependencies": {
+        "@babel/parser": "^7.20.15",
+        "@vue/compiler-core": "3.3.4",
+        "@vue/compiler-dom": "3.3.4",
+        "@vue/compiler-ssr": "3.3.4",
+        "@vue/reactivity-transform": "3.3.4",
+        "@vue/shared": "3.3.4",
+        "estree-walker": "^2.0.2",
+        "magic-string": "^0.30.0",
+        "postcss": "^8.1.10",
+        "source-map-js": "^1.0.2"
+      }
+    },
+    "node_modules/@vue/compiler-ssr": {
+      "version": "3.3.4",
+      "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.3.4.tgz",
+      "integrity": "sha512-m0v6oKpup2nMSehwA6Uuu+j+wEwcy7QmwMkVNVfrV9P2qE5KshC6RwOCq8fjGS/Eak/uNb8AaWekfiXxbBB6gQ==",
+      "dependencies": {
+        "@vue/compiler-dom": "3.3.4",
+        "@vue/shared": "3.3.4"
+      }
+    },
+    "node_modules/@vue/devtools-api": {
+      "version": "6.5.1",
+      "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.5.1.tgz",
+      "integrity": "sha512-+KpckaAQyfbvshdDW5xQylLni1asvNSGme1JFs8I1+/H5pHEhqUKMEQD/qn3Nx5+/nycBq11qAEi8lk+LXI2dA=="
+    },
+    "node_modules/@vue/reactivity": {
+      "version": "3.3.4",
+      "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.3.4.tgz",
+      "integrity": "sha512-kLTDLwd0B1jG08NBF3R5rqULtv/f8x3rOFByTDz4J53ttIQEDmALqKqXY0J+XQeN0aV2FBxY8nJDf88yvOPAqQ==",
+      "dependencies": {
+        "@vue/shared": "3.3.4"
+      }
+    },
+    "node_modules/@vue/reactivity-transform": {
+      "version": "3.3.4",
+      "resolved": "https://registry.npmjs.org/@vue/reactivity-transform/-/reactivity-transform-3.3.4.tgz",
+      "integrity": "sha512-MXgwjako4nu5WFLAjpBnCj/ieqcjE2aJBINUNQzkZQfzIZA4xn+0fV1tIYBJvvva3N3OvKGofRLvQIwEQPpaXw==",
+      "dependencies": {
+        "@babel/parser": "^7.20.15",
+        "@vue/compiler-core": "3.3.4",
+        "@vue/shared": "3.3.4",
+        "estree-walker": "^2.0.2",
+        "magic-string": "^0.30.0"
+      }
+    },
+    "node_modules/@vue/runtime-core": {
+      "version": "3.3.4",
+      "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.3.4.tgz",
+      "integrity": "sha512-R+bqxMN6pWO7zGI4OMlmvePOdP2c93GsHFM/siJI7O2nxFRzj55pLwkpCedEY+bTMgp5miZ8CxfIZo3S+gFqvA==",
+      "dependencies": {
+        "@vue/reactivity": "3.3.4",
+        "@vue/shared": "3.3.4"
+      }
+    },
+    "node_modules/@vue/runtime-dom": {
+      "version": "3.3.4",
+      "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.3.4.tgz",
+      "integrity": "sha512-Aj5bTJ3u5sFsUckRghsNjVTtxZQ1OyMWCr5dZRAPijF/0Vy4xEoRCwLyHXcj4D0UFbJ4lbx3gPTgg06K/GnPnQ==",
+      "dependencies": {
+        "@vue/runtime-core": "3.3.4",
+        "@vue/shared": "3.3.4",
+        "csstype": "^3.1.1"
+      }
+    },
+    "node_modules/@vue/server-renderer": {
+      "version": "3.3.4",
+      "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.3.4.tgz",
+      "integrity": "sha512-Q6jDDzR23ViIb67v+vM1Dqntu+HUexQcsWKhhQa4ARVzxOY2HbC7QRW/ggkDBd5BU+uM1sV6XOAP0b216o34JQ==",
+      "dependencies": {
+        "@vue/compiler-ssr": "3.3.4",
+        "@vue/shared": "3.3.4"
+      },
+      "peerDependencies": {
+        "vue": "3.3.4"
+      }
+    },
+    "node_modules/@vue/shared": {
+      "version": "3.3.4",
+      "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.3.4.tgz",
+      "integrity": "sha512-7OjdcV8vQ74eiz1TZLzZP4JwqM5fA94K6yntPS5Z25r9HDuGNzaGdgvwKYq6S+MxwF0TFRwe50fIR/MYnakdkQ=="
+    },
+    "node_modules/@vueuse/core": {
+      "version": "9.13.0",
+      "resolved": "https://registry.npmjs.org/@vueuse/core/-/core-9.13.0.tgz",
+      "integrity": "sha512-pujnclbeHWxxPRqXWmdkKV5OX4Wk4YeK7wusHqRwU0Q7EFusHoqNA/aPhB6KCh9hEqJkLAJo7bb0Lh9b+OIVzw==",
+      "dependencies": {
+        "@types/web-bluetooth": "^0.0.16",
+        "@vueuse/metadata": "9.13.0",
+        "@vueuse/shared": "9.13.0",
+        "vue-demi": "*"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/antfu"
+      }
+    },
+    "node_modules/@vueuse/core/node_modules/vue-demi": {
+      "version": "0.14.6",
+      "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.6.tgz",
+      "integrity": "sha512-8QA7wrYSHKaYgUxDA5ZC24w+eHm3sYCbp0EzcDwKqN3p6HqtTCGR/GVsPyZW92unff4UlcSh++lmqDWN3ZIq4w==",
+      "hasInstallScript": true,
+      "bin": {
+        "vue-demi-fix": "bin/vue-demi-fix.js",
+        "vue-demi-switch": "bin/vue-demi-switch.js"
+      },
+      "engines": {
+        "node": ">=12"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/antfu"
+      },
+      "peerDependencies": {
+        "@vue/composition-api": "^1.0.0-rc.1",
+        "vue": "^3.0.0-0 || ^2.6.0"
+      },
+      "peerDependenciesMeta": {
+        "@vue/composition-api": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/@vueuse/metadata": {
+      "version": "9.13.0",
+      "resolved": "https://registry.npmjs.org/@vueuse/metadata/-/metadata-9.13.0.tgz",
+      "integrity": "sha512-gdU7TKNAUVlXXLbaF+ZCfte8BjRJQWPCa2J55+7/h+yDtzw3vOoGQDRXzI6pyKyo6bXFT5/QoPE4hAknExjRLQ==",
+      "funding": {
+        "url": "https://github.com/sponsors/antfu"
+      }
+    },
+    "node_modules/@vueuse/shared": {
+      "version": "9.13.0",
+      "resolved": "https://registry.npmjs.org/@vueuse/shared/-/shared-9.13.0.tgz",
+      "integrity": "sha512-UrnhU+Cnufu4S6JLCPZnkWh0WwZGUp72ktOF2DFptMlOs3TOdVv8xJN53zhHGARmVOsz5KqOls09+J1NR6sBKw==",
+      "dependencies": {
+        "vue-demi": "*"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/antfu"
+      }
+    },
+    "node_modules/@vueuse/shared/node_modules/vue-demi": {
+      "version": "0.14.6",
+      "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.6.tgz",
+      "integrity": "sha512-8QA7wrYSHKaYgUxDA5ZC24w+eHm3sYCbp0EzcDwKqN3p6HqtTCGR/GVsPyZW92unff4UlcSh++lmqDWN3ZIq4w==",
+      "hasInstallScript": true,
+      "bin": {
+        "vue-demi-fix": "bin/vue-demi-fix.js",
+        "vue-demi-switch": "bin/vue-demi-switch.js"
+      },
+      "engines": {
+        "node": ">=12"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/antfu"
+      },
+      "peerDependencies": {
+        "@vue/composition-api": "^1.0.0-rc.1",
+        "vue": "^3.0.0-0 || ^2.6.0"
+      },
+      "peerDependenciesMeta": {
+        "@vue/composition-api": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/acorn": {
+      "version": "8.10.0",
+      "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz",
+      "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==",
+      "bin": {
+        "acorn": "bin/acorn"
+      },
+      "engines": {
+        "node": ">=0.4.0"
+      }
+    },
+    "node_modules/anymatch": {
+      "version": "3.1.3",
+      "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz",
+      "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==",
+      "dependencies": {
+        "normalize-path": "^3.0.0",
+        "picomatch": "^2.0.4"
+      },
+      "engines": {
+        "node": ">= 8"
+      }
+    },
+    "node_modules/ast-kit": {
+      "version": "0.11.2",
+      "resolved": "https://registry.npmjs.org/ast-kit/-/ast-kit-0.11.2.tgz",
+      "integrity": "sha512-Q0DjXK4ApbVoIf9GLyCo252tUH44iTnD/hiJ2TQaJeydYWSpKk0sI34+WMel8S9Wt5pbLgG02oJ+gkgX5DV3sQ==",
+      "dependencies": {
+        "@babel/parser": "^7.22.14",
+        "@rollup/pluginutils": "^5.0.4",
+        "pathe": "^1.1.1"
+      },
+      "engines": {
+        "node": ">=16.14.0"
+      }
+    },
+    "node_modules/async-validator": {
+      "version": "4.2.5",
+      "resolved": "https://registry.npmjs.org/async-validator/-/async-validator-4.2.5.tgz",
+      "integrity": "sha512-7HhHjtERjqlNbZtqNqy2rckN/SpOOlmDliet+lP7k+eKZEjPk3DgyeU9lIXLdeLz0uBbbVp+9Qdow9wJWgwwfg=="
+    },
+    "node_modules/asynckit": {
+      "version": "0.4.0",
+      "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
+      "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q=="
+    },
+    "node_modules/axios": {
+      "version": "1.5.1",
+      "resolved": "https://registry.npmjs.org/axios/-/axios-1.5.1.tgz",
+      "integrity": "sha512-Q28iYCWzNHjAm+yEAot5QaAMxhMghWLFVf7rRdwhUI+c2jix2DUXjAHXVi+s1ibs3mjPO/cCgbA++3BjD0vP/A==",
+      "dependencies": {
+        "follow-redirects": "^1.15.0",
+        "form-data": "^4.0.0",
+        "proxy-from-env": "^1.1.0"
+      }
+    },
+    "node_modules/binary-extensions": {
+      "version": "2.2.0",
+      "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
+      "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==",
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/braces": {
+      "version": "3.0.2",
+      "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
+      "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
+      "dependencies": {
+        "fill-range": "^7.0.1"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/chokidar": {
+      "version": "3.5.3",
+      "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz",
+      "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==",
+      "funding": [
+        {
+          "type": "individual",
+          "url": "https://paulmillr.com/funding/"
+        }
+      ],
+      "dependencies": {
+        "anymatch": "~3.1.2",
+        "braces": "~3.0.2",
+        "glob-parent": "~5.1.2",
+        "is-binary-path": "~2.1.0",
+        "is-glob": "~4.0.1",
+        "normalize-path": "~3.0.0",
+        "readdirp": "~3.6.0"
+      },
+      "engines": {
+        "node": ">= 8.10.0"
+      },
+      "optionalDependencies": {
+        "fsevents": "~2.3.2"
+      }
+    },
+    "node_modules/combined-stream": {
+      "version": "1.0.8",
+      "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
+      "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
+      "dependencies": {
+        "delayed-stream": "~1.0.0"
+      },
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/csstype": {
+      "version": "3.1.2",
+      "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz",
+      "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ=="
+    },
+    "node_modules/dayjs": {
+      "version": "1.11.10",
+      "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.10.tgz",
+      "integrity": "sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ=="
+    },
+    "node_modules/delayed-stream": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
+      "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
+      "engines": {
+        "node": ">=0.4.0"
+      }
+    },
+    "node_modules/element-plus": {
+      "version": "2.4.0",
+      "resolved": "https://registry.npmjs.org/element-plus/-/element-plus-2.4.0.tgz",
+      "integrity": "sha512-yJEa8LXkGOOgkfkeqMMEdeX/Dc8EH9qPcRuX91dlhSXxgCKKbp9tH3QFTOG99ibZsrN/Em62nh7ddvbc7I1frw==",
+      "dependencies": {
+        "@ctrl/tinycolor": "^3.4.1",
+        "@element-plus/icons-vue": "^2.0.6",
+        "@floating-ui/dom": "^1.0.1",
+        "@popperjs/core": "npm:@sxzz/popperjs-es@^2.11.7",
+        "@types/lodash": "^4.14.182",
+        "@types/lodash-es": "^4.17.6",
+        "@vueuse/core": "^9.1.0",
+        "async-validator": "^4.2.5",
+        "dayjs": "^1.11.3",
+        "escape-html": "^1.0.3",
+        "lodash": "^4.17.21",
+        "lodash-es": "^4.17.21",
+        "lodash-unified": "^1.0.2",
+        "memoize-one": "^6.0.0",
+        "normalize-wheel-es": "^1.2.0"
+      },
+      "peerDependencies": {
+        "vue": "^3.2.0"
+      }
+    },
+    "node_modules/esbuild": {
+      "version": "0.18.20",
+      "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.18.20.tgz",
+      "integrity": "sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==",
+      "dev": true,
+      "hasInstallScript": true,
+      "bin": {
+        "esbuild": "bin/esbuild"
+      },
+      "engines": {
+        "node": ">=12"
+      },
+      "optionalDependencies": {
+        "@esbuild/android-arm": "0.18.20",
+        "@esbuild/android-arm64": "0.18.20",
+        "@esbuild/android-x64": "0.18.20",
+        "@esbuild/darwin-arm64": "0.18.20",
+        "@esbuild/darwin-x64": "0.18.20",
+        "@esbuild/freebsd-arm64": "0.18.20",
+        "@esbuild/freebsd-x64": "0.18.20",
+        "@esbuild/linux-arm": "0.18.20",
+        "@esbuild/linux-arm64": "0.18.20",
+        "@esbuild/linux-ia32": "0.18.20",
+        "@esbuild/linux-loong64": "0.18.20",
+        "@esbuild/linux-mips64el": "0.18.20",
+        "@esbuild/linux-ppc64": "0.18.20",
+        "@esbuild/linux-riscv64": "0.18.20",
+        "@esbuild/linux-s390x": "0.18.20",
+        "@esbuild/linux-x64": "0.18.20",
+        "@esbuild/netbsd-x64": "0.18.20",
+        "@esbuild/openbsd-x64": "0.18.20",
+        "@esbuild/sunos-x64": "0.18.20",
+        "@esbuild/win32-arm64": "0.18.20",
+        "@esbuild/win32-ia32": "0.18.20",
+        "@esbuild/win32-x64": "0.18.20"
+      }
+    },
+    "node_modules/escape-html": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
+      "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow=="
+    },
+    "node_modules/estree-walker": {
+      "version": "2.0.2",
+      "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz",
+      "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w=="
+    },
+    "node_modules/fill-range": {
+      "version": "7.0.1",
+      "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
+      "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
+      "dependencies": {
+        "to-regex-range": "^5.0.1"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/follow-redirects": {
+      "version": "1.15.3",
+      "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.3.tgz",
+      "integrity": "sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q==",
+      "funding": [
+        {
+          "type": "individual",
+          "url": "https://github.com/sponsors/RubenVerborgh"
+        }
+      ],
+      "engines": {
+        "node": ">=4.0"
+      },
+      "peerDependenciesMeta": {
+        "debug": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/form-data": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz",
+      "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==",
+      "dependencies": {
+        "asynckit": "^0.4.0",
+        "combined-stream": "^1.0.8",
+        "mime-types": "^2.1.12"
+      },
+      "engines": {
+        "node": ">= 6"
+      }
+    },
+    "node_modules/fsevents": {
+      "version": "2.3.3",
+      "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
+      "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
+      "hasInstallScript": true,
+      "optional": true,
+      "os": [
+        "darwin"
+      ],
+      "engines": {
+        "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
+      }
+    },
+    "node_modules/glob-parent": {
+      "version": "5.1.2",
+      "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
+      "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
+      "dependencies": {
+        "is-glob": "^4.0.1"
+      },
+      "engines": {
+        "node": ">= 6"
+      }
+    },
+    "node_modules/is-binary-path": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
+      "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
+      "dependencies": {
+        "binary-extensions": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/is-extglob": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
+      "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/is-glob": {
+      "version": "4.0.3",
+      "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
+      "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
+      "dependencies": {
+        "is-extglob": "^2.1.1"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/is-number": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
+      "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
+      "engines": {
+        "node": ">=0.12.0"
+      }
+    },
+    "node_modules/local-pkg": {
+      "version": "0.4.3",
+      "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-0.4.3.tgz",
+      "integrity": "sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==",
+      "engines": {
+        "node": ">=14"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/antfu"
+      }
+    },
+    "node_modules/lodash": {
+      "version": "4.17.21",
+      "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
+      "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
+    },
+    "node_modules/lodash-es": {
+      "version": "4.17.21",
+      "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz",
+      "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw=="
+    },
+    "node_modules/lodash-unified": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/lodash-unified/-/lodash-unified-1.0.3.tgz",
+      "integrity": "sha512-WK9qSozxXOD7ZJQlpSqOT+om2ZfcT4yO+03FuzAHD0wF6S0l0090LRPDx3vhTTLZ8cFKpBn+IOcVXK6qOcIlfQ==",
+      "peerDependencies": {
+        "@types/lodash-es": "*",
+        "lodash": "*",
+        "lodash-es": "*"
+      }
+    },
+    "node_modules/magic-string": {
+      "version": "0.30.5",
+      "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.5.tgz",
+      "integrity": "sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==",
+      "dependencies": {
+        "@jridgewell/sourcemap-codec": "^1.4.15"
+      },
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/magic-string-ast": {
+      "version": "0.3.0",
+      "resolved": "https://registry.npmjs.org/magic-string-ast/-/magic-string-ast-0.3.0.tgz",
+      "integrity": "sha512-0shqecEPgdFpnI3AP90epXyxZy9g6CRZ+SZ7BcqFwYmtFEnZ1jpevcV5HoyVnlDS9gCnc1UIg3Rsvp3Ci7r8OA==",
+      "dependencies": {
+        "magic-string": "^0.30.2"
+      },
+      "engines": {
+        "node": ">=16.14.0"
+      }
+    },
+    "node_modules/memoize-one": {
+      "version": "6.0.0",
+      "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-6.0.0.tgz",
+      "integrity": "sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw=="
+    },
+    "node_modules/mime-db": {
+      "version": "1.52.0",
+      "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
+      "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/mime-types": {
+      "version": "2.1.35",
+      "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
+      "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
+      "dependencies": {
+        "mime-db": "1.52.0"
+      },
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/nanoid": {
+      "version": "3.3.6",
+      "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz",
+      "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==",
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/ai"
+        }
+      ],
+      "bin": {
+        "nanoid": "bin/nanoid.cjs"
+      },
+      "engines": {
+        "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
+      }
+    },
+    "node_modules/normalize-path": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
+      "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/normalize-wheel-es": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/normalize-wheel-es/-/normalize-wheel-es-1.2.0.tgz",
+      "integrity": "sha512-Wj7+EJQ8mSuXr2iWfnujrimU35R2W4FAErEyTmJoJ7ucwTn2hOUSsRehMb5RSYkxXGTM7Y9QpvPmp++w5ftoJw=="
+    },
+    "node_modules/pathe": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.1.tgz",
+      "integrity": "sha512-d+RQGp0MAYTIaDBIMmOfMwz3E+LOZnxx1HZd5R18mmCZY0QBlK0LDZfPc8FW8Ed2DlvsuE6PRjroDY+wg4+j/Q=="
+    },
+    "node_modules/picocolors": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
+      "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ=="
+    },
+    "node_modules/picomatch": {
+      "version": "2.3.1",
+      "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
+      "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
+      "engines": {
+        "node": ">=8.6"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/jonschlinkert"
+      }
+    },
+    "node_modules/pinia": {
+      "version": "2.1.7",
+      "resolved": "https://registry.npmjs.org/pinia/-/pinia-2.1.7.tgz",
+      "integrity": "sha512-+C2AHFtcFqjPih0zpYuvof37SFxMQ7OEG2zV9jRI12i9BOy3YQVAHwdKtyyc8pDcDyIc33WCIsZaCFWU7WWxGQ==",
+      "dependencies": {
+        "@vue/devtools-api": "^6.5.0",
+        "vue-demi": ">=0.14.5"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/posva"
+      },
+      "peerDependencies": {
+        "@vue/composition-api": "^1.4.0",
+        "typescript": ">=4.4.4",
+        "vue": "^2.6.14 || ^3.3.0"
+      },
+      "peerDependenciesMeta": {
+        "@vue/composition-api": {
+          "optional": true
+        },
+        "typescript": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/pinia-plugin-persistedstate": {
+      "version": "3.2.0",
+      "resolved": "https://registry.npmmirror.com/pinia-plugin-persistedstate/-/pinia-plugin-persistedstate-3.2.0.tgz",
+      "integrity": "sha512-tZbNGf2vjAQcIm7alK40sE51Qu/m9oWr+rEgNm/2AWr1huFxj72CjvpQcIQzMknDBJEkQznCLAGtJTIcLKrKdw==",
+      "peerDependencies": {
+        "pinia": "^2.0.0"
+      }
+    },
+    "node_modules/pinia/node_modules/vue-demi": {
+      "version": "0.14.6",
+      "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.6.tgz",
+      "integrity": "sha512-8QA7wrYSHKaYgUxDA5ZC24w+eHm3sYCbp0EzcDwKqN3p6HqtTCGR/GVsPyZW92unff4UlcSh++lmqDWN3ZIq4w==",
+      "hasInstallScript": true,
+      "bin": {
+        "vue-demi-fix": "bin/vue-demi-fix.js",
+        "vue-demi-switch": "bin/vue-demi-switch.js"
+      },
+      "engines": {
+        "node": ">=12"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/antfu"
+      },
+      "peerDependencies": {
+        "@vue/composition-api": "^1.0.0-rc.1",
+        "vue": "^3.0.0-0 || ^2.6.0"
+      },
+      "peerDependenciesMeta": {
+        "@vue/composition-api": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/postcss": {
+      "version": "8.4.31",
+      "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz",
+      "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==",
+      "funding": [
+        {
+          "type": "opencollective",
+          "url": "https://opencollective.com/postcss/"
+        },
+        {
+          "type": "tidelift",
+          "url": "https://tidelift.com/funding/github/npm/postcss"
+        },
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/ai"
+        }
+      ],
+      "dependencies": {
+        "nanoid": "^3.3.6",
+        "picocolors": "^1.0.0",
+        "source-map-js": "^1.0.2"
+      },
+      "engines": {
+        "node": "^10 || ^12 || >=14"
+      }
+    },
+    "node_modules/proxy-from-env": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
+      "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg=="
+    },
+    "node_modules/readdirp": {
+      "version": "3.6.0",
+      "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
+      "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
+      "dependencies": {
+        "picomatch": "^2.2.1"
+      },
+      "engines": {
+        "node": ">=8.10.0"
+      }
+    },
+    "node_modules/rollup": {
+      "version": "3.29.4",
+      "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.29.4.tgz",
+      "integrity": "sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==",
+      "devOptional": true,
+      "bin": {
+        "rollup": "dist/bin/rollup"
+      },
+      "engines": {
+        "node": ">=14.18.0",
+        "npm": ">=8.0.0"
+      },
+      "optionalDependencies": {
+        "fsevents": "~2.3.2"
+      }
+    },
+    "node_modules/source-map-js": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz",
+      "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/to-fast-properties": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
+      "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/to-regex-range": {
+      "version": "5.0.1",
+      "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
+      "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
+      "dependencies": {
+        "is-number": "^7.0.0"
+      },
+      "engines": {
+        "node": ">=8.0"
+      }
+    },
+    "node_modules/unplugin": {
+      "version": "1.5.0",
+      "resolved": "https://registry.npmjs.org/unplugin/-/unplugin-1.5.0.tgz",
+      "integrity": "sha512-9ZdRwbh/4gcm1JTOkp9lAkIDrtOyOxgHmY7cjuwI8L/2RTikMcVG25GsZwNAgRuap3iDw2jeq7eoqtAsz5rW3A==",
+      "dependencies": {
+        "acorn": "^8.10.0",
+        "chokidar": "^3.5.3",
+        "webpack-sources": "^3.2.3",
+        "webpack-virtual-modules": "^0.5.0"
+      }
+    },
+    "node_modules/vite": {
+      "version": "4.4.11",
+      "resolved": "https://registry.npmjs.org/vite/-/vite-4.4.11.tgz",
+      "integrity": "sha512-ksNZJlkcU9b0lBwAGZGGaZHCMqHsc8OpgtoYhsQ4/I2v5cnpmmmqe5pM4nv/4Hn6G/2GhTdj0DhZh2e+Er1q5A==",
+      "dev": true,
+      "dependencies": {
+        "esbuild": "^0.18.10",
+        "postcss": "^8.4.27",
+        "rollup": "^3.27.1"
+      },
+      "bin": {
+        "vite": "bin/vite.js"
+      },
+      "engines": {
+        "node": "^14.18.0 || >=16.0.0"
+      },
+      "funding": {
+        "url": "https://github.com/vitejs/vite?sponsor=1"
+      },
+      "optionalDependencies": {
+        "fsevents": "~2.3.2"
+      },
+      "peerDependencies": {
+        "@types/node": ">= 14",
+        "less": "*",
+        "lightningcss": "^1.21.0",
+        "sass": "*",
+        "stylus": "*",
+        "sugarss": "*",
+        "terser": "^5.4.0"
+      },
+      "peerDependenciesMeta": {
+        "@types/node": {
+          "optional": true
+        },
+        "less": {
+          "optional": true
+        },
+        "lightningcss": {
+          "optional": true
+        },
+        "sass": {
+          "optional": true
+        },
+        "stylus": {
+          "optional": true
+        },
+        "sugarss": {
+          "optional": true
+        },
+        "terser": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/vue": {
+      "version": "3.3.4",
+      "resolved": "https://registry.npmjs.org/vue/-/vue-3.3.4.tgz",
+      "integrity": "sha512-VTyEYn3yvIeY1Py0WaYGZsXnz3y5UnGi62GjVEqvEGPl6nxbOrCXbVOTQWBEJUqAyTUk2uJ5JLVnYJ6ZzGbrSw==",
+      "dependencies": {
+        "@vue/compiler-dom": "3.3.4",
+        "@vue/compiler-sfc": "3.3.4",
+        "@vue/runtime-dom": "3.3.4",
+        "@vue/server-renderer": "3.3.4",
+        "@vue/shared": "3.3.4"
+      }
+    },
+    "node_modules/vue-router": {
+      "version": "4.2.5",
+      "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-4.2.5.tgz",
+      "integrity": "sha512-DIUpKcyg4+PTQKfFPX88UWhlagBEBEfJ5A8XDXRJLUnZOvcpMF8o/dnL90vpVkGaPbjvXazV/rC1qBKrZlFugw==",
+      "dependencies": {
+        "@vue/devtools-api": "^6.5.0"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/posva"
+      },
+      "peerDependencies": {
+        "vue": "^3.2.0"
+      }
+    },
+    "node_modules/webpack-sources": {
+      "version": "3.2.3",
+      "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz",
+      "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==",
+      "engines": {
+        "node": ">=10.13.0"
+      }
+    },
+    "node_modules/webpack-virtual-modules": {
+      "version": "0.5.0",
+      "resolved": "https://registry.npmjs.org/webpack-virtual-modules/-/webpack-virtual-modules-0.5.0.tgz",
+      "integrity": "sha512-kyDivFZ7ZM0BVOUteVbDFhlRt7Ah/CSPwJdi8hBpkK7QLumUqdLtVfm/PX/hkcnrvr0i77fO5+TjZ94Pe+C9iw=="
+    }
+  },
+  "dependencies": {
+    "@babel/helper-string-parser": {
+      "version": "7.22.5",
+      "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz",
+      "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw=="
+    },
+    "@babel/helper-validator-identifier": {
+      "version": "7.22.20",
+      "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz",
+      "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A=="
+    },
+    "@babel/parser": {
+      "version": "7.23.0",
+      "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.0.tgz",
+      "integrity": "sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw=="
+    },
+    "@babel/types": {
+      "version": "7.23.0",
+      "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.0.tgz",
+      "integrity": "sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg==",
+      "requires": {
+        "@babel/helper-string-parser": "^7.22.5",
+        "@babel/helper-validator-identifier": "^7.22.20",
+        "to-fast-properties": "^2.0.0"
+      }
+    },
+    "@ctrl/tinycolor": {
+      "version": "3.6.1",
+      "resolved": "https://registry.npmjs.org/@ctrl/tinycolor/-/tinycolor-3.6.1.tgz",
+      "integrity": "sha512-SITSV6aIXsuVNV3f3O0f2n/cgyEDWoSqtZMYiAmcsYHydcKrOz3gUxB/iXd/Qf08+IZX4KpgNbvUdMBmWz+kcA=="
+    },
+    "@element-plus/icons-vue": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/@element-plus/icons-vue/-/icons-vue-2.1.0.tgz",
+      "integrity": "sha512-PSBn3elNoanENc1vnCfh+3WA9fimRC7n+fWkf3rE5jvv+aBohNHABC/KAR5KWPecxWxDTVT1ERpRbOMRcOV/vA==",
+      "requires": {}
+    },
+    "@esbuild/android-arm": {
+      "version": "0.18.20",
+      "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.20.tgz",
+      "integrity": "sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==",
+      "dev": true,
+      "optional": true
+    },
+    "@esbuild/android-arm64": {
+      "version": "0.18.20",
+      "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.18.20.tgz",
+      "integrity": "sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==",
+      "dev": true,
+      "optional": true
+    },
+    "@esbuild/android-x64": {
+      "version": "0.18.20",
+      "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.18.20.tgz",
+      "integrity": "sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==",
+      "dev": true,
+      "optional": true
+    },
+    "@esbuild/darwin-arm64": {
+      "version": "0.18.20",
+      "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz",
+      "integrity": "sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==",
+      "dev": true,
+      "optional": true
+    },
+    "@esbuild/darwin-x64": {
+      "version": "0.18.20",
+      "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.18.20.tgz",
+      "integrity": "sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==",
+      "dev": true,
+      "optional": true
+    },
+    "@esbuild/freebsd-arm64": {
+      "version": "0.18.20",
+      "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.20.tgz",
+      "integrity": "sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==",
+      "dev": true,
+      "optional": true
+    },
+    "@esbuild/freebsd-x64": {
+      "version": "0.18.20",
+      "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.18.20.tgz",
+      "integrity": "sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==",
+      "dev": true,
+      "optional": true
+    },
+    "@esbuild/linux-arm": {
+      "version": "0.18.20",
+      "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.18.20.tgz",
+      "integrity": "sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==",
+      "dev": true,
+      "optional": true
+    },
+    "@esbuild/linux-arm64": {
+      "version": "0.18.20",
+      "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.18.20.tgz",
+      "integrity": "sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==",
+      "dev": true,
+      "optional": true
+    },
+    "@esbuild/linux-ia32": {
+      "version": "0.18.20",
+      "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.18.20.tgz",
+      "integrity": "sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==",
+      "dev": true,
+      "optional": true
+    },
+    "@esbuild/linux-loong64": {
+      "version": "0.18.20",
+      "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.18.20.tgz",
+      "integrity": "sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==",
+      "dev": true,
+      "optional": true
+    },
+    "@esbuild/linux-mips64el": {
+      "version": "0.18.20",
+      "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.18.20.tgz",
+      "integrity": "sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==",
+      "dev": true,
+      "optional": true
+    },
+    "@esbuild/linux-ppc64": {
+      "version": "0.18.20",
+      "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.18.20.tgz",
+      "integrity": "sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==",
+      "dev": true,
+      "optional": true
+    },
+    "@esbuild/linux-riscv64": {
+      "version": "0.18.20",
+      "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.18.20.tgz",
+      "integrity": "sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==",
+      "dev": true,
+      "optional": true
+    },
+    "@esbuild/linux-s390x": {
+      "version": "0.18.20",
+      "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.18.20.tgz",
+      "integrity": "sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==",
+      "dev": true,
+      "optional": true
+    },
+    "@esbuild/linux-x64": {
+      "version": "0.18.20",
+      "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.18.20.tgz",
+      "integrity": "sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==",
+      "dev": true,
+      "optional": true
+    },
+    "@esbuild/netbsd-x64": {
+      "version": "0.18.20",
+      "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.18.20.tgz",
+      "integrity": "sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==",
+      "dev": true,
+      "optional": true
+    },
+    "@esbuild/openbsd-x64": {
+      "version": "0.18.20",
+      "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.18.20.tgz",
+      "integrity": "sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==",
+      "dev": true,
+      "optional": true
+    },
+    "@esbuild/sunos-x64": {
+      "version": "0.18.20",
+      "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.18.20.tgz",
+      "integrity": "sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==",
+      "dev": true,
+      "optional": true
+    },
+    "@esbuild/win32-arm64": {
+      "version": "0.18.20",
+      "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.18.20.tgz",
+      "integrity": "sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==",
+      "dev": true,
+      "optional": true
+    },
+    "@esbuild/win32-ia32": {
+      "version": "0.18.20",
+      "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.18.20.tgz",
+      "integrity": "sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==",
+      "dev": true,
+      "optional": true
+    },
+    "@esbuild/win32-x64": {
+      "version": "0.18.20",
+      "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz",
+      "integrity": "sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==",
+      "dev": true,
+      "optional": true
+    },
+    "@floating-ui/core": {
+      "version": "1.5.0",
+      "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.5.0.tgz",
+      "integrity": "sha512-kK1h4m36DQ0UHGj5Ah4db7R0rHemTqqO0QLvUqi1/mUUp3LuAWbWxdxSIf/XsnH9VS6rRVPLJCncjRzUvyCLXg==",
+      "requires": {
+        "@floating-ui/utils": "^0.1.3"
+      }
+    },
+    "@floating-ui/dom": {
+      "version": "1.5.3",
+      "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.5.3.tgz",
+      "integrity": "sha512-ClAbQnEqJAKCJOEbbLo5IUlZHkNszqhuxS4fHAVxRPXPya6Ysf2G8KypnYcOTpx6I8xcgF9bbHb6g/2KpbV8qA==",
+      "requires": {
+        "@floating-ui/core": "^1.4.2",
+        "@floating-ui/utils": "^0.1.3"
+      }
+    },
+    "@floating-ui/utils": {
+      "version": "0.1.6",
+      "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.1.6.tgz",
+      "integrity": "sha512-OfX7E2oUDYxtBvsuS4e/jSn4Q9Qb6DzgeYtsAdkPZ47znpoNsMgZw0+tVijiv3uGNR6dgNlty6r9rzIzHjtd/A=="
+    },
+    "@jridgewell/sourcemap-codec": {
+      "version": "1.4.15",
+      "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz",
+      "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg=="
+    },
+    "@popperjs/core": {
+      "version": "npm:@sxzz/popperjs-es@2.11.7",
+      "resolved": "https://registry.npmjs.org/@sxzz/popperjs-es/-/popperjs-es-2.11.7.tgz",
+      "integrity": "sha512-Ccy0NlLkzr0Ex2FKvh2X+OyERHXJ88XJ1MXtsI9y9fGexlaXaVTPzBCRBwIxFkORuOb+uBqeu+RqnpgYTEZRUQ=="
+    },
+    "@rollup/pluginutils": {
+      "version": "5.0.5",
+      "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.0.5.tgz",
+      "integrity": "sha512-6aEYR910NyP73oHiJglti74iRyOwgFU4x3meH/H8OJx6Ry0j6cOVZ5X/wTvub7G7Ao6qaHBEaNsV3GLJkSsF+Q==",
+      "requires": {
+        "@types/estree": "^1.0.0",
+        "estree-walker": "^2.0.2",
+        "picomatch": "^2.3.1"
+      }
+    },
+    "@types/estree": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.2.tgz",
+      "integrity": "sha512-VeiPZ9MMwXjO32/Xu7+OwflfmeoRwkE/qzndw42gGtgJwZopBnzy2gD//NN1+go1mADzkDcqf/KnFRSjTJ8xJA=="
+    },
+    "@types/lodash": {
+      "version": "4.14.199",
+      "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.199.tgz",
+      "integrity": "sha512-Vrjz5N5Ia4SEzWWgIVwnHNEnb1UE1XMkvY5DGXrAeOGE9imk0hgTHh5GyDjLDJi9OTCn9oo9dXH1uToK1VRfrg=="
+    },
+    "@types/lodash-es": {
+      "version": "4.17.9",
+      "resolved": "https://registry.npmjs.org/@types/lodash-es/-/lodash-es-4.17.9.tgz",
+      "integrity": "sha512-ZTcmhiI3NNU7dEvWLZJkzG6ao49zOIjEgIE0RgV7wbPxU0f2xT3VSAHw2gmst8swH6V0YkLRGp4qPlX/6I90MQ==",
+      "requires": {
+        "@types/lodash": "*"
+      }
+    },
+    "@types/web-bluetooth": {
+      "version": "0.0.16",
+      "resolved": "https://registry.npmjs.org/@types/web-bluetooth/-/web-bluetooth-0.0.16.tgz",
+      "integrity": "sha512-oh8q2Zc32S6gd/j50GowEjKLoOVOwHP/bWVjKJInBwQqdOYMdPrf1oVlelTlyfFK3CKxL1uahMDAr+vy8T7yMQ=="
+    },
+    "@vitejs/plugin-vue": {
+      "version": "4.4.0",
+      "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-4.4.0.tgz",
+      "integrity": "sha512-xdguqb+VUwiRpSg+nsc2HtbAUSGak25DXYvpQQi4RVU1Xq1uworyoH/md9Rfd8zMmPR/pSghr309QNcftUVseg==",
+      "dev": true,
+      "requires": {}
+    },
+    "@vue-macros/common": {
+      "version": "1.8.0",
+      "resolved": "https://registry.npmjs.org/@vue-macros/common/-/common-1.8.0.tgz",
+      "integrity": "sha512-auDJJzE0z3uRe3867e0DsqcseKImktNf5ojCZgUKqiVxb2yTlwlgOVAYCgoep9oITqxkXQymSvFeKhedi8PhaA==",
+      "requires": {
+        "@babel/types": "^7.22.17",
+        "@rollup/pluginutils": "^5.0.4",
+        "@vue/compiler-sfc": "^3.3.4",
+        "ast-kit": "^0.11.2",
+        "local-pkg": "^0.4.3",
+        "magic-string-ast": "^0.3.0"
+      }
+    },
+    "@vue-macros/reactivity-transform": {
+      "version": "0.3.23",
+      "resolved": "https://registry.npmjs.org/@vue-macros/reactivity-transform/-/reactivity-transform-0.3.23.tgz",
+      "integrity": "sha512-SubIg1GsNpQdIDJusrcA2FWBgwSY+4jmL0j6SJ6PU85r3rlS+uDhn6AUkqxeZRAdmJnrbGHXDyWUdygOZmWrSg==",
+      "requires": {
+        "@babel/parser": "^7.22.16",
+        "@vue-macros/common": "1.8.0",
+        "@vue/compiler-core": "^3.3.4",
+        "@vue/shared": "^3.3.4",
+        "magic-string": "^0.30.3",
+        "unplugin": "^1.4.0"
+      }
+    },
+    "@vue/compiler-core": {
+      "version": "3.3.4",
+      "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.3.4.tgz",
+      "integrity": "sha512-cquyDNvZ6jTbf/+x+AgM2Arrp6G4Dzbb0R64jiG804HRMfRiFXWI6kqUVqZ6ZR0bQhIoQjB4+2bhNtVwndW15g==",
+      "requires": {
+        "@babel/parser": "^7.21.3",
+        "@vue/shared": "3.3.4",
+        "estree-walker": "^2.0.2",
+        "source-map-js": "^1.0.2"
+      }
+    },
+    "@vue/compiler-dom": {
+      "version": "3.3.4",
+      "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.3.4.tgz",
+      "integrity": "sha512-wyM+OjOVpuUukIq6p5+nwHYtj9cFroz9cwkfmP9O1nzH68BenTTv0u7/ndggT8cIQlnBeOo6sUT/gvHcIkLA5w==",
+      "requires": {
+        "@vue/compiler-core": "3.3.4",
+        "@vue/shared": "3.3.4"
+      }
+    },
+    "@vue/compiler-sfc": {
+      "version": "3.3.4",
+      "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.3.4.tgz",
+      "integrity": "sha512-6y/d8uw+5TkCuzBkgLS0v3lSM3hJDntFEiUORM11pQ/hKvkhSKZrXW6i69UyXlJQisJxuUEJKAWEqWbWsLeNKQ==",
+      "requires": {
+        "@babel/parser": "^7.20.15",
+        "@vue/compiler-core": "3.3.4",
+        "@vue/compiler-dom": "3.3.4",
+        "@vue/compiler-ssr": "3.3.4",
+        "@vue/reactivity-transform": "3.3.4",
+        "@vue/shared": "3.3.4",
+        "estree-walker": "^2.0.2",
+        "magic-string": "^0.30.0",
+        "postcss": "^8.1.10",
+        "source-map-js": "^1.0.2"
+      }
+    },
+    "@vue/compiler-ssr": {
+      "version": "3.3.4",
+      "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.3.4.tgz",
+      "integrity": "sha512-m0v6oKpup2nMSehwA6Uuu+j+wEwcy7QmwMkVNVfrV9P2qE5KshC6RwOCq8fjGS/Eak/uNb8AaWekfiXxbBB6gQ==",
+      "requires": {
+        "@vue/compiler-dom": "3.3.4",
+        "@vue/shared": "3.3.4"
+      }
+    },
+    "@vue/devtools-api": {
+      "version": "6.5.1",
+      "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.5.1.tgz",
+      "integrity": "sha512-+KpckaAQyfbvshdDW5xQylLni1asvNSGme1JFs8I1+/H5pHEhqUKMEQD/qn3Nx5+/nycBq11qAEi8lk+LXI2dA=="
+    },
+    "@vue/reactivity": {
+      "version": "3.3.4",
+      "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.3.4.tgz",
+      "integrity": "sha512-kLTDLwd0B1jG08NBF3R5rqULtv/f8x3rOFByTDz4J53ttIQEDmALqKqXY0J+XQeN0aV2FBxY8nJDf88yvOPAqQ==",
+      "requires": {
+        "@vue/shared": "3.3.4"
+      }
+    },
+    "@vue/reactivity-transform": {
+      "version": "3.3.4",
+      "resolved": "https://registry.npmjs.org/@vue/reactivity-transform/-/reactivity-transform-3.3.4.tgz",
+      "integrity": "sha512-MXgwjako4nu5WFLAjpBnCj/ieqcjE2aJBINUNQzkZQfzIZA4xn+0fV1tIYBJvvva3N3OvKGofRLvQIwEQPpaXw==",
+      "requires": {
+        "@babel/parser": "^7.20.15",
+        "@vue/compiler-core": "3.3.4",
+        "@vue/shared": "3.3.4",
+        "estree-walker": "^2.0.2",
+        "magic-string": "^0.30.0"
+      }
+    },
+    "@vue/runtime-core": {
+      "version": "3.3.4",
+      "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.3.4.tgz",
+      "integrity": "sha512-R+bqxMN6pWO7zGI4OMlmvePOdP2c93GsHFM/siJI7O2nxFRzj55pLwkpCedEY+bTMgp5miZ8CxfIZo3S+gFqvA==",
+      "requires": {
+        "@vue/reactivity": "3.3.4",
+        "@vue/shared": "3.3.4"
+      }
+    },
+    "@vue/runtime-dom": {
+      "version": "3.3.4",
+      "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.3.4.tgz",
+      "integrity": "sha512-Aj5bTJ3u5sFsUckRghsNjVTtxZQ1OyMWCr5dZRAPijF/0Vy4xEoRCwLyHXcj4D0UFbJ4lbx3gPTgg06K/GnPnQ==",
+      "requires": {
+        "@vue/runtime-core": "3.3.4",
+        "@vue/shared": "3.3.4",
+        "csstype": "^3.1.1"
+      }
+    },
+    "@vue/server-renderer": {
+      "version": "3.3.4",
+      "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.3.4.tgz",
+      "integrity": "sha512-Q6jDDzR23ViIb67v+vM1Dqntu+HUexQcsWKhhQa4ARVzxOY2HbC7QRW/ggkDBd5BU+uM1sV6XOAP0b216o34JQ==",
+      "requires": {
+        "@vue/compiler-ssr": "3.3.4",
+        "@vue/shared": "3.3.4"
+      }
+    },
+    "@vue/shared": {
+      "version": "3.3.4",
+      "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.3.4.tgz",
+      "integrity": "sha512-7OjdcV8vQ74eiz1TZLzZP4JwqM5fA94K6yntPS5Z25r9HDuGNzaGdgvwKYq6S+MxwF0TFRwe50fIR/MYnakdkQ=="
+    },
+    "@vueuse/core": {
+      "version": "9.13.0",
+      "resolved": "https://registry.npmjs.org/@vueuse/core/-/core-9.13.0.tgz",
+      "integrity": "sha512-pujnclbeHWxxPRqXWmdkKV5OX4Wk4YeK7wusHqRwU0Q7EFusHoqNA/aPhB6KCh9hEqJkLAJo7bb0Lh9b+OIVzw==",
+      "requires": {
+        "@types/web-bluetooth": "^0.0.16",
+        "@vueuse/metadata": "9.13.0",
+        "@vueuse/shared": "9.13.0",
+        "vue-demi": "*"
+      },
+      "dependencies": {
+        "vue-demi": {
+          "version": "0.14.6",
+          "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.6.tgz",
+          "integrity": "sha512-8QA7wrYSHKaYgUxDA5ZC24w+eHm3sYCbp0EzcDwKqN3p6HqtTCGR/GVsPyZW92unff4UlcSh++lmqDWN3ZIq4w==",
+          "requires": {}
+        }
+      }
+    },
+    "@vueuse/metadata": {
+      "version": "9.13.0",
+      "resolved": "https://registry.npmjs.org/@vueuse/metadata/-/metadata-9.13.0.tgz",
+      "integrity": "sha512-gdU7TKNAUVlXXLbaF+ZCfte8BjRJQWPCa2J55+7/h+yDtzw3vOoGQDRXzI6pyKyo6bXFT5/QoPE4hAknExjRLQ=="
+    },
+    "@vueuse/shared": {
+      "version": "9.13.0",
+      "resolved": "https://registry.npmjs.org/@vueuse/shared/-/shared-9.13.0.tgz",
+      "integrity": "sha512-UrnhU+Cnufu4S6JLCPZnkWh0WwZGUp72ktOF2DFptMlOs3TOdVv8xJN53zhHGARmVOsz5KqOls09+J1NR6sBKw==",
+      "requires": {
+        "vue-demi": "*"
+      },
+      "dependencies": {
+        "vue-demi": {
+          "version": "0.14.6",
+          "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.6.tgz",
+          "integrity": "sha512-8QA7wrYSHKaYgUxDA5ZC24w+eHm3sYCbp0EzcDwKqN3p6HqtTCGR/GVsPyZW92unff4UlcSh++lmqDWN3ZIq4w==",
+          "requires": {}
+        }
+      }
+    },
+    "acorn": {
+      "version": "8.10.0",
+      "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz",
+      "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw=="
+    },
+    "anymatch": {
+      "version": "3.1.3",
+      "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz",
+      "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==",
+      "requires": {
+        "normalize-path": "^3.0.0",
+        "picomatch": "^2.0.4"
+      }
+    },
+    "ast-kit": {
+      "version": "0.11.2",
+      "resolved": "https://registry.npmjs.org/ast-kit/-/ast-kit-0.11.2.tgz",
+      "integrity": "sha512-Q0DjXK4ApbVoIf9GLyCo252tUH44iTnD/hiJ2TQaJeydYWSpKk0sI34+WMel8S9Wt5pbLgG02oJ+gkgX5DV3sQ==",
+      "requires": {
+        "@babel/parser": "^7.22.14",
+        "@rollup/pluginutils": "^5.0.4",
+        "pathe": "^1.1.1"
+      }
+    },
+    "async-validator": {
+      "version": "4.2.5",
+      "resolved": "https://registry.npmjs.org/async-validator/-/async-validator-4.2.5.tgz",
+      "integrity": "sha512-7HhHjtERjqlNbZtqNqy2rckN/SpOOlmDliet+lP7k+eKZEjPk3DgyeU9lIXLdeLz0uBbbVp+9Qdow9wJWgwwfg=="
+    },
+    "asynckit": {
+      "version": "0.4.0",
+      "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
+      "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q=="
+    },
+    "axios": {
+      "version": "1.5.1",
+      "resolved": "https://registry.npmjs.org/axios/-/axios-1.5.1.tgz",
+      "integrity": "sha512-Q28iYCWzNHjAm+yEAot5QaAMxhMghWLFVf7rRdwhUI+c2jix2DUXjAHXVi+s1ibs3mjPO/cCgbA++3BjD0vP/A==",
+      "requires": {
+        "follow-redirects": "^1.15.0",
+        "form-data": "^4.0.0",
+        "proxy-from-env": "^1.1.0"
+      }
+    },
+    "binary-extensions": {
+      "version": "2.2.0",
+      "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
+      "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA=="
+    },
+    "braces": {
+      "version": "3.0.2",
+      "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
+      "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
+      "requires": {
+        "fill-range": "^7.0.1"
+      }
+    },
+    "chokidar": {
+      "version": "3.5.3",
+      "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz",
+      "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==",
+      "requires": {
+        "anymatch": "~3.1.2",
+        "braces": "~3.0.2",
+        "fsevents": "~2.3.2",
+        "glob-parent": "~5.1.2",
+        "is-binary-path": "~2.1.0",
+        "is-glob": "~4.0.1",
+        "normalize-path": "~3.0.0",
+        "readdirp": "~3.6.0"
+      }
+    },
+    "combined-stream": {
+      "version": "1.0.8",
+      "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
+      "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
+      "requires": {
+        "delayed-stream": "~1.0.0"
+      }
+    },
+    "csstype": {
+      "version": "3.1.2",
+      "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz",
+      "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ=="
+    },
+    "dayjs": {
+      "version": "1.11.10",
+      "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.10.tgz",
+      "integrity": "sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ=="
+    },
+    "delayed-stream": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
+      "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ=="
+    },
+    "element-plus": {
+      "version": "2.4.0",
+      "resolved": "https://registry.npmjs.org/element-plus/-/element-plus-2.4.0.tgz",
+      "integrity": "sha512-yJEa8LXkGOOgkfkeqMMEdeX/Dc8EH9qPcRuX91dlhSXxgCKKbp9tH3QFTOG99ibZsrN/Em62nh7ddvbc7I1frw==",
+      "requires": {
+        "@ctrl/tinycolor": "^3.4.1",
+        "@element-plus/icons-vue": "^2.0.6",
+        "@floating-ui/dom": "^1.0.1",
+        "@popperjs/core": "npm:@sxzz/popperjs-es@^2.11.7",
+        "@types/lodash": "^4.14.182",
+        "@types/lodash-es": "^4.17.6",
+        "@vueuse/core": "^9.1.0",
+        "async-validator": "^4.2.5",
+        "dayjs": "^1.11.3",
+        "escape-html": "^1.0.3",
+        "lodash": "^4.17.21",
+        "lodash-es": "^4.17.21",
+        "lodash-unified": "^1.0.2",
+        "memoize-one": "^6.0.0",
+        "normalize-wheel-es": "^1.2.0"
+      }
+    },
+    "esbuild": {
+      "version": "0.18.20",
+      "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.18.20.tgz",
+      "integrity": "sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==",
+      "dev": true,
+      "requires": {
+        "@esbuild/android-arm": "0.18.20",
+        "@esbuild/android-arm64": "0.18.20",
+        "@esbuild/android-x64": "0.18.20",
+        "@esbuild/darwin-arm64": "0.18.20",
+        "@esbuild/darwin-x64": "0.18.20",
+        "@esbuild/freebsd-arm64": "0.18.20",
+        "@esbuild/freebsd-x64": "0.18.20",
+        "@esbuild/linux-arm": "0.18.20",
+        "@esbuild/linux-arm64": "0.18.20",
+        "@esbuild/linux-ia32": "0.18.20",
+        "@esbuild/linux-loong64": "0.18.20",
+        "@esbuild/linux-mips64el": "0.18.20",
+        "@esbuild/linux-ppc64": "0.18.20",
+        "@esbuild/linux-riscv64": "0.18.20",
+        "@esbuild/linux-s390x": "0.18.20",
+        "@esbuild/linux-x64": "0.18.20",
+        "@esbuild/netbsd-x64": "0.18.20",
+        "@esbuild/openbsd-x64": "0.18.20",
+        "@esbuild/sunos-x64": "0.18.20",
+        "@esbuild/win32-arm64": "0.18.20",
+        "@esbuild/win32-ia32": "0.18.20",
+        "@esbuild/win32-x64": "0.18.20"
+      }
+    },
+    "escape-html": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
+      "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow=="
+    },
+    "estree-walker": {
+      "version": "2.0.2",
+      "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz",
+      "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w=="
+    },
+    "fill-range": {
+      "version": "7.0.1",
+      "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
+      "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
+      "requires": {
+        "to-regex-range": "^5.0.1"
+      }
+    },
+    "follow-redirects": {
+      "version": "1.15.3",
+      "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.3.tgz",
+      "integrity": "sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q=="
+    },
+    "form-data": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz",
+      "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==",
+      "requires": {
+        "asynckit": "^0.4.0",
+        "combined-stream": "^1.0.8",
+        "mime-types": "^2.1.12"
+      }
+    },
+    "fsevents": {
+      "version": "2.3.3",
+      "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
+      "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
+      "optional": true
+    },
+    "glob-parent": {
+      "version": "5.1.2",
+      "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
+      "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
+      "requires": {
+        "is-glob": "^4.0.1"
+      }
+    },
+    "is-binary-path": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
+      "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
+      "requires": {
+        "binary-extensions": "^2.0.0"
+      }
+    },
+    "is-extglob": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
+      "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ=="
+    },
+    "is-glob": {
+      "version": "4.0.3",
+      "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
+      "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
+      "requires": {
+        "is-extglob": "^2.1.1"
+      }
+    },
+    "is-number": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
+      "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng=="
+    },
+    "local-pkg": {
+      "version": "0.4.3",
+      "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-0.4.3.tgz",
+      "integrity": "sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g=="
+    },
+    "lodash": {
+      "version": "4.17.21",
+      "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
+      "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
+    },
+    "lodash-es": {
+      "version": "4.17.21",
+      "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz",
+      "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw=="
+    },
+    "lodash-unified": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/lodash-unified/-/lodash-unified-1.0.3.tgz",
+      "integrity": "sha512-WK9qSozxXOD7ZJQlpSqOT+om2ZfcT4yO+03FuzAHD0wF6S0l0090LRPDx3vhTTLZ8cFKpBn+IOcVXK6qOcIlfQ==",
+      "requires": {}
+    },
+    "magic-string": {
+      "version": "0.30.5",
+      "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.5.tgz",
+      "integrity": "sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==",
+      "requires": {
+        "@jridgewell/sourcemap-codec": "^1.4.15"
+      }
+    },
+    "magic-string-ast": {
+      "version": "0.3.0",
+      "resolved": "https://registry.npmjs.org/magic-string-ast/-/magic-string-ast-0.3.0.tgz",
+      "integrity": "sha512-0shqecEPgdFpnI3AP90epXyxZy9g6CRZ+SZ7BcqFwYmtFEnZ1jpevcV5HoyVnlDS9gCnc1UIg3Rsvp3Ci7r8OA==",
+      "requires": {
+        "magic-string": "^0.30.2"
+      }
+    },
+    "memoize-one": {
+      "version": "6.0.0",
+      "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-6.0.0.tgz",
+      "integrity": "sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw=="
+    },
+    "mime-db": {
+      "version": "1.52.0",
+      "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
+      "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg=="
+    },
+    "mime-types": {
+      "version": "2.1.35",
+      "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
+      "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
+      "requires": {
+        "mime-db": "1.52.0"
+      }
+    },
+    "nanoid": {
+      "version": "3.3.6",
+      "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz",
+      "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA=="
+    },
+    "normalize-path": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
+      "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA=="
+    },
+    "normalize-wheel-es": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/normalize-wheel-es/-/normalize-wheel-es-1.2.0.tgz",
+      "integrity": "sha512-Wj7+EJQ8mSuXr2iWfnujrimU35R2W4FAErEyTmJoJ7ucwTn2hOUSsRehMb5RSYkxXGTM7Y9QpvPmp++w5ftoJw=="
+    },
+    "pathe": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.1.tgz",
+      "integrity": "sha512-d+RQGp0MAYTIaDBIMmOfMwz3E+LOZnxx1HZd5R18mmCZY0QBlK0LDZfPc8FW8Ed2DlvsuE6PRjroDY+wg4+j/Q=="
+    },
+    "picocolors": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
+      "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ=="
+    },
+    "picomatch": {
+      "version": "2.3.1",
+      "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
+      "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="
+    },
+    "pinia": {
+      "version": "2.1.7",
+      "resolved": "https://registry.npmjs.org/pinia/-/pinia-2.1.7.tgz",
+      "integrity": "sha512-+C2AHFtcFqjPih0zpYuvof37SFxMQ7OEG2zV9jRI12i9BOy3YQVAHwdKtyyc8pDcDyIc33WCIsZaCFWU7WWxGQ==",
+      "requires": {
+        "@vue/devtools-api": "^6.5.0",
+        "vue-demi": ">=0.14.5"
+      },
+      "dependencies": {
+        "vue-demi": {
+          "version": "0.14.6",
+          "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.6.tgz",
+          "integrity": "sha512-8QA7wrYSHKaYgUxDA5ZC24w+eHm3sYCbp0EzcDwKqN3p6HqtTCGR/GVsPyZW92unff4UlcSh++lmqDWN3ZIq4w==",
+          "requires": {}
+        }
+      }
+    },
+    "pinia-plugin-persistedstate": {
+      "version": "3.2.0",
+      "resolved": "https://registry.npmmirror.com/pinia-plugin-persistedstate/-/pinia-plugin-persistedstate-3.2.0.tgz",
+      "integrity": "sha512-tZbNGf2vjAQcIm7alK40sE51Qu/m9oWr+rEgNm/2AWr1huFxj72CjvpQcIQzMknDBJEkQznCLAGtJTIcLKrKdw==",
+      "requires": {}
+    },
+    "postcss": {
+      "version": "8.4.31",
+      "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz",
+      "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==",
+      "requires": {
+        "nanoid": "^3.3.6",
+        "picocolors": "^1.0.0",
+        "source-map-js": "^1.0.2"
+      }
+    },
+    "proxy-from-env": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
+      "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg=="
+    },
+    "readdirp": {
+      "version": "3.6.0",
+      "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
+      "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
+      "requires": {
+        "picomatch": "^2.2.1"
+      }
+    },
+    "rollup": {
+      "version": "3.29.4",
+      "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.29.4.tgz",
+      "integrity": "sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==",
+      "devOptional": true,
+      "requires": {
+        "fsevents": "~2.3.2"
+      }
+    },
+    "source-map-js": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz",
+      "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw=="
+    },
+    "to-fast-properties": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
+      "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog=="
+    },
+    "to-regex-range": {
+      "version": "5.0.1",
+      "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
+      "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
+      "requires": {
+        "is-number": "^7.0.0"
+      }
+    },
+    "unplugin": {
+      "version": "1.5.0",
+      "resolved": "https://registry.npmjs.org/unplugin/-/unplugin-1.5.0.tgz",
+      "integrity": "sha512-9ZdRwbh/4gcm1JTOkp9lAkIDrtOyOxgHmY7cjuwI8L/2RTikMcVG25GsZwNAgRuap3iDw2jeq7eoqtAsz5rW3A==",
+      "requires": {
+        "acorn": "^8.10.0",
+        "chokidar": "^3.5.3",
+        "webpack-sources": "^3.2.3",
+        "webpack-virtual-modules": "^0.5.0"
+      }
+    },
+    "vite": {
+      "version": "4.4.11",
+      "resolved": "https://registry.npmjs.org/vite/-/vite-4.4.11.tgz",
+      "integrity": "sha512-ksNZJlkcU9b0lBwAGZGGaZHCMqHsc8OpgtoYhsQ4/I2v5cnpmmmqe5pM4nv/4Hn6G/2GhTdj0DhZh2e+Er1q5A==",
+      "dev": true,
+      "requires": {
+        "esbuild": "^0.18.10",
+        "fsevents": "~2.3.2",
+        "postcss": "^8.4.27",
+        "rollup": "^3.27.1"
+      }
+    },
+    "vue": {
+      "version": "3.3.4",
+      "resolved": "https://registry.npmjs.org/vue/-/vue-3.3.4.tgz",
+      "integrity": "sha512-VTyEYn3yvIeY1Py0WaYGZsXnz3y5UnGi62GjVEqvEGPl6nxbOrCXbVOTQWBEJUqAyTUk2uJ5JLVnYJ6ZzGbrSw==",
+      "requires": {
+        "@vue/compiler-dom": "3.3.4",
+        "@vue/compiler-sfc": "3.3.4",
+        "@vue/runtime-dom": "3.3.4",
+        "@vue/server-renderer": "3.3.4",
+        "@vue/shared": "3.3.4"
+      }
+    },
+    "vue-router": {
+      "version": "4.2.5",
+      "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-4.2.5.tgz",
+      "integrity": "sha512-DIUpKcyg4+PTQKfFPX88UWhlagBEBEfJ5A8XDXRJLUnZOvcpMF8o/dnL90vpVkGaPbjvXazV/rC1qBKrZlFugw==",
+      "requires": {
+        "@vue/devtools-api": "^6.5.0"
+      }
+    },
+    "webpack-sources": {
+      "version": "3.2.3",
+      "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz",
+      "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w=="
+    },
+    "webpack-virtual-modules": {
+      "version": "0.5.0",
+      "resolved": "https://registry.npmjs.org/webpack-virtual-modules/-/webpack-virtual-modules-0.5.0.tgz",
+      "integrity": "sha512-kyDivFZ7ZM0BVOUteVbDFhlRt7Ah/CSPwJdi8hBpkK7QLumUqdLtVfm/PX/hkcnrvr0i77fO5+TjZ94Pe+C9iw=="
+    }
+  }
+}
diff --git a/north-glass-erp/northglass-erp/package.json b/north-glass-erp/northglass-erp/package.json
new file mode 100644
index 0000000..ec6c41b
--- /dev/null
+++ b/north-glass-erp/northglass-erp/package.json
@@ -0,0 +1,24 @@
+{
+  "name": "northglass-erp",
+  "version": "0.0.0",
+  "private": true,
+  "scripts": {
+    "dev": "vite",
+    "build": "vite build",
+    "preview": "vite preview"
+  },
+  "dependencies": {
+    "@element-plus/icons-vue": "^2.1.0",
+    "@vue-macros/reactivity-transform": "^0.3.23",
+    "axios": "^1.5.1",
+    "element-plus": "^2.4.0",
+    "pinia": "^2.1.6",
+    "pinia-plugin-persistedstate": "^3.2.0",
+    "vue": "^3.3.4",
+    "vue-router": "^4.2.4"
+  },
+  "devDependencies": {
+    "@vitejs/plugin-vue": "^4.3.4",
+    "vite": "^4.4.9"
+  }
+}
diff --git a/north-glass-erp/northglass-erp/public/favicon.ico b/north-glass-erp/northglass-erp/public/favicon.ico
new file mode 100644
index 0000000..1d83994
--- /dev/null
+++ b/north-glass-erp/northglass-erp/public/favicon.ico
Binary files differ
diff --git a/north-glass-erp/northglass-erp/public/vuefavicon.ico b/north-glass-erp/northglass-erp/public/vuefavicon.ico
new file mode 100644
index 0000000..df36fcf
--- /dev/null
+++ b/north-glass-erp/northglass-erp/public/vuefavicon.ico
Binary files differ
diff --git a/north-glass-erp/northglass-erp/src/App.vue b/north-glass-erp/northglass-erp/src/App.vue
new file mode 100644
index 0000000..e15be3b
--- /dev/null
+++ b/north-glass-erp/northglass-erp/src/App.vue
@@ -0,0 +1,14 @@
+<template>
+
+  <router-view></router-view>
+
+</template>
+<script setup>
+import {ref} from 'vue'
+import { RouterView } from 'vue-router'
+
+</script>
+
+<style scoped>
+
+</style>
diff --git a/north-glass-erp/northglass-erp/src/assets/base.css b/north-glass-erp/northglass-erp/src/assets/base.css
new file mode 100644
index 0000000..8816868
--- /dev/null
+++ b/north-glass-erp/northglass-erp/src/assets/base.css
@@ -0,0 +1,86 @@
+/* color palette from <https://github.com/vuejs/theme> */
+:root {
+  --vt-c-white: #ffffff;
+  --vt-c-white-soft: #f8f8f8;
+  --vt-c-white-mute: #f2f2f2;
+
+  --vt-c-black: #181818;
+  --vt-c-black-soft: #222222;
+  --vt-c-black-mute: #282828;
+
+  --vt-c-indigo: #2c3e50;
+
+  --vt-c-divider-light-1: rgba(60, 60, 60, 0.29);
+  --vt-c-divider-light-2: rgba(60, 60, 60, 0.12);
+  --vt-c-divider-dark-1: rgba(84, 84, 84, 0.65);
+  --vt-c-divider-dark-2: rgba(84, 84, 84, 0.48);
+
+  --vt-c-text-light-1: var(--vt-c-indigo);
+  --vt-c-text-light-2: rgba(60, 60, 60, 0.66);
+  --vt-c-text-dark-1: var(--vt-c-white);
+  --vt-c-text-dark-2: rgba(235, 235, 235, 0.64);
+}
+
+/* semantic color variables for this project */
+:root {
+  --color-background: var(--vt-c-white);
+  --color-background-soft: var(--vt-c-white-soft);
+  --color-background-mute: var(--vt-c-white-mute);
+
+  --color-border: var(--vt-c-divider-light-2);
+  --color-border-hover: var(--vt-c-divider-light-1);
+
+  --color-heading: var(--vt-c-text-light-1);
+  --color-text: var(--vt-c-text-light-1);
+
+  --section-gap: 160px;
+}
+
+@media (prefers-color-scheme: dark) {
+  :root {
+    --color-background: var(--vt-c-black);
+    --color-background-soft: var(--vt-c-black-soft);
+    --color-background-mute: var(--vt-c-black-mute);
+
+    --color-border: var(--vt-c-divider-dark-2);
+    --color-border-hover: var(--vt-c-divider-dark-1);
+
+    --color-heading: var(--vt-c-text-dark-1);
+    --color-text: var(--vt-c-text-dark-2);
+  }
+}
+
+*,
+*::before,
+*::after {
+  box-sizing: border-box;
+  margin: 0;
+  font-weight: normal;
+}
+
+body {
+  min-height: 100vh;
+  color: var(--color-text);
+  background: var(--color-background);
+  transition:
+    color 0.5s,
+    background-color 0.5s;
+  line-height: 1.6;
+  font-family:
+    Inter,
+    -apple-system,
+    BlinkMacSystemFont,
+    'Segoe UI',
+    Roboto,
+    Oxygen,
+    Ubuntu,
+    Cantarell,
+    'Fira Sans',
+    'Droid Sans',
+    'Helvetica Neue',
+    sans-serif;
+  font-size: 15px;
+  text-rendering: optimizeLegibility;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+}
diff --git a/north-glass-erp/northglass-erp/src/assets/img.png b/north-glass-erp/northglass-erp/src/assets/img.png
new file mode 100644
index 0000000..3b0ee2b
--- /dev/null
+++ b/north-glass-erp/northglass-erp/src/assets/img.png
Binary files differ
diff --git a/north-glass-erp/northglass-erp/src/assets/logo.svg b/north-glass-erp/northglass-erp/src/assets/logo.svg
new file mode 100644
index 0000000..7565660
--- /dev/null
+++ b/north-glass-erp/northglass-erp/src/assets/logo.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 261.76 226.69"><path d="M161.096.001l-30.225 52.351L100.647.001H-.005l130.877 226.688L261.749.001z" fill="#41b883"/><path d="M161.096.001l-30.225 52.351L100.647.001H52.346l78.526 136.01L209.398.001z" fill="#34495e"/></svg>
diff --git a/north-glass-erp/northglass-erp/src/assets/main.css b/north-glass-erp/northglass-erp/src/assets/main.css
new file mode 100644
index 0000000..20218a4
--- /dev/null
+++ b/north-glass-erp/northglass-erp/src/assets/main.css
@@ -0,0 +1,53 @@
+@import './base.css';
+
+#app {
+  margin: 0 auto;
+  padding: 0;
+  background-color: #D5EAFF;
+  font-weight: normal;
+  height: 100%;
+  width: 100%;
+  min-width: 1536px;
+  min-height: 730px;
+}
+
+a,
+.green {
+  text-decoration: none;
+  color: hsla(160, 100%, 37%, 1);
+  transition: 0.4s;
+}
+
+@media (hover: hover) {
+  a:hover {
+    background-color: hsla(160, 100%, 37%, 0.2);
+  }
+}
+
+@media (min-width: 1024px) {
+  body {
+    display: flex;
+    place-items: center;
+  }
+
+  #app {
+    display: grid;
+    grid-template-columns: 1fr 1fr;
+
+  }
+}
+*{
+  margin: 0;
+  padding: 0;
+
+}
+.mainDiv{
+  height: 100vh;
+  width: 100vw;
+}
+html,body{
+  height: 100%;
+  width: 100%;
+  margin: 0;
+  padding: 0;
+}
\ No newline at end of file
diff --git a/north-glass-erp/northglass-erp/src/assets/northGlass.ico b/north-glass-erp/northglass-erp/src/assets/northGlass.ico
new file mode 100644
index 0000000..470e6eb
--- /dev/null
+++ b/north-glass-erp/northglass-erp/src/assets/northGlass.ico
Binary files differ
diff --git a/north-glass-erp/northglass-erp/src/components/basic/product/GlassType.vue b/north-glass-erp/northglass-erp/src/components/basic/product/GlassType.vue
new file mode 100644
index 0000000..874b797
--- /dev/null
+++ b/north-glass-erp/northglass-erp/src/components/basic/product/GlassType.vue
@@ -0,0 +1,33 @@
+<script setup>
+import request from "@/utils/request";
+import deepClone from "@/utils/deepClone";
+import {ElMessage} from "element-plus";
+import useProductGlassTypeStore from "@/stores/productGlassType"
+let productGlassTypeStore = useProductGlassTypeStore()
+
+let options=$ref([])
+request.get("/basicGlassType/getAll").then((res) => {
+  if(res.code==200){
+    for (let dataKey of res.data) {
+      dataKey.children=JSON.parse(dataKey.children)
+    }
+    options= deepClone(res.data)
+  }else{
+    ElMessage.warning(res.msg)
+  }
+})
+</script>
+
+<template>
+  <div>
+    <el-cascader
+        v-model="productGlassTypeStore.GlassType"
+        :options="options"
+        clearable
+    />
+  </div>
+</template>
+
+<style scoped>
+
+</style>
\ No newline at end of file
diff --git a/north-glass-erp/northglass-erp/src/hook/index.js b/north-glass-erp/northglass-erp/src/hook/index.js
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/north-glass-erp/northglass-erp/src/hook/index.js
diff --git a/north-glass-erp/northglass-erp/src/layout/MainErpView.vue b/north-glass-erp/northglass-erp/src/layout/MainErpView.vue
new file mode 100644
index 0000000..b9bc12d
--- /dev/null
+++ b/north-glass-erp/northglass-erp/src/layout/MainErpView.vue
@@ -0,0 +1,149 @@
+<script setup>
+import { RouterLink,useRouter} from 'vue-router'
+import  useUserInfoStore from '@/stores/userInfo'
+import request from "@/utils/request";
+import {ElMessage} from "element-plus";
+import {onMounted, reactive, ref, watch} from "vue"
+import deepClone from "@/utils/deepClone"
+import userInfo from '@/stores/userInfo'
+const store=userInfo()
+
+const router = useRouter()
+const userStore = useUserInfoStore()
+const user = userStore.user.userName
+
+store.createWebSocket();
+function quit(){
+  userStore.$patch({
+    user:null
+  })
+  router.push("/login")
+}
+
+
+//鎻愬彇妯″潡鍒楄〃
+let menuList=$ref([])
+request.get("/menu").then((res) => {
+  if(res.code==200){
+    menuList= deepClone(res.data)
+  }else{
+    ElMessage.warning(res.msg)
+    router.push("/login")
+  }
+})
+
+//鑾峰彇鑿滃崟鍒楄〃
+let menuItemList=$ref([])
+request.get("/menuItem").then((res) => {
+  if(res.code==200){
+    menuItemList= deepClone(res.data)
+  }else{
+    ElMessage.warning(res.msg)
+    router.push("/login")
+  }
+})
+
+const menu = ref(null)
+let indexKey = ref(null)
+function handleOpen(key) {
+  indexKey.value=key
+}
+watch(indexKey,(newVal,oldVal) => {
+  if(oldVal !== newVal && oldVal !== null){
+    menu.value.close(oldVal)
+  }
+},
+    {deep:true}
+)
+
+router.beforeEach((to, from) => {
+  //return false
+})
+
+
+</script>
+
+<template>
+  <div>
+    <el-container>
+      <el-header>
+        <div style="height: 100%;width: 100%;display: flex">
+          <img src="../assets/northGlass.ico" alt="" style="max-width: 100%;max-height: 100%">
+          <h3 style="margin: 1rem  ;font-weight: bold;width: 20vw;"> 娆㈣繋{{ user }}浣跨敤鍖楃幓ERP绯荤粺锛�</h3>
+          <span style="height: 70%;width: 78vw;margin-top: 1rem;" >
+            <el-button class="sys-quit" @click="quit"  type="info" round>閫�鍑�</el-button>
+          </span>
+
+        </div>
+      </el-header>
+      <el-container >
+        <el-aside width="160px" style="margin-top: 1.5rem;height: 90% " >
+          <el-menu
+              @open="handleOpen"
+              ref="menu"
+              active-color="#ffd04b"
+              background-color="#545c64"
+              class="el-menu-vertical-demo"
+              default-active="2"
+              text-color="#fff">
+            <el-sub-menu
+                v-for="items in menuList"
+                :index="items.id"
+                :key="items.id">
+              <template #title>
+                <span>{{items.menuName}}</span>
+              </template>
+              <router-link
+                  v-show="items.id==menuItem.menuID"
+                  v-for="menuItem in menuItemList"
+                  :to="{path:menuItem.url}">
+                <el-menu-item  >
+                  {{ menuItem.itemName}}
+                </el-menu-item>
+              </router-link>
+
+            </el-sub-menu>
+          </el-menu>
+        </el-aside>
+
+        <el-main>
+          <div id="main">
+            <router-view></router-view>
+          </div>
+        </el-main>
+
+      </el-container>
+    </el-container>
+  </div>
+</template>
+
+<style scoped>
+.el-container{
+  height: 100vh;
+  width: 100vw
+}
+
+*{
+  padding: 0;
+  margin: 0;
+}
+:deep(.sys-quit){
+  float: right;
+  margin-right: 1rem;
+  width: 5rem;
+
+}
+:deep(span){
+  margin-right: 0;
+
+}
+.el-collapse{
+  font-size: 16px;
+  font-weight: bold;
+}
+#main{
+  width: 99%;
+  float: right;
+  height: 99%;
+}
+</style>
\ No newline at end of file
diff --git a/north-glass-erp/northglass-erp/src/main.js b/north-glass-erp/northglass-erp/src/main.js
new file mode 100644
index 0000000..9040980
--- /dev/null
+++ b/north-glass-erp/northglass-erp/src/main.js
@@ -0,0 +1,19 @@
+ import './assets/main.css'
+
+import { createApp } from 'vue'
+import { createPinia } from 'pinia'
+import piniaPluginPersistedstate from 'pinia-plugin-persistedstate'
+import App from './App.vue'
+import router from './router'
+import ElementPlus from 'element-plus'
+import 'element-plus/dist/index.css'
+
+const app = createApp(App)
+const pinia = createPinia()
+pinia.use(piniaPluginPersistedstate )
+
+app.use(pinia)
+app.use(router)
+app.use(ElementPlus)
+
+app.mount('#app')
diff --git a/north-glass-erp/northglass-erp/src/router/index.js b/north-glass-erp/northglass-erp/src/router/index.js
new file mode 100644
index 0000000..e5faf48
--- /dev/null
+++ b/north-glass-erp/northglass-erp/src/router/index.js
@@ -0,0 +1,750 @@
+import { createRouter, createWebHistory } from 'vue-router'
+import HomeView from '../views/HomeView.vue'
+
+const router = createRouter({
+  history: createWebHistory(import.meta.env.BASE_URL),
+  routes: [
+    {
+      path: '/',
+      name: 'home',
+      //component: HomeView
+      component: () => import('../views/LoginView.vue')
+    },
+    {
+      path: '/login',
+      name: 'login',
+      component: () => import('../views/LoginView.vue')
+    },
+    {
+      path: '/main',
+      name: 'main',
+      component: () => import('../layout/MainErpView.vue'),
+      children:[
+          //sd妯″潡
+        {
+          path: 'product',//浜у搧
+          name: 'product',
+          component: () => import('../views/sd/product/Product.vue'),
+          children:[
+            {
+              path: 'createProduct',
+              name: 'createProduct',
+              component: () => import('../views/sd/product/CreateProduct.vue')
+            },
+            {
+              path: 'selectProduct',
+              name: 'selectProduct',
+              component: () => import('../views/sd/product/SelectProduct.vue')
+            },
+            {
+              path: 'test',
+              name: 'test',
+              component: () => import('../views/sd/product/Test.vue')
+            },
+            {
+              path: 'test1',
+              name: 'test1',
+              component: () => import('../views/sd/product/Test11.vue')
+            },
+            {
+              path: '',
+              redirect:'/main/product/selectProduct'
+            }
+          ]
+        },
+        {
+          path: 'order',//璁㈠崟
+          name: 'order',
+          component: () => import('../views/sd/order/Order.vue'),
+          children:[
+            {
+              path: 'selectOrder',
+              name: 'selectOrder',
+              component: () => import('../views/sd/order/SelectOrder.vue'),
+            },
+            {
+              path: 'createOrder',
+              name: 'createOrder',
+              component: () => import('../views/sd/order/CreateOrder.vue'),
+            },
+            {
+              path: 'updateOrderCraft',
+              name: 'updateOrderCraft',
+              component: () => import('../views/sd/order/UpdateOrderCraft.vue'),
+            },
+            {
+              path: 'orderReport',
+              name: 'orderReport',
+              component: () => import('../views/sd/order/OrderReport.vue'),
+            },
+            {
+              path: '',
+              redirect:'/main/order/SelectOrder'
+            }
+          ]
+        },
+        {
+          path: 'delivery',//鍙戣揣
+          name: 'delivery',
+          component: () => import('../views/sd/delivery/Delivery.vue'),
+          children: [
+            {
+              path: 'selectDelivery',
+              name: 'selectDelivery',
+              component: () => import('../views/sd/delivery/SelectDelivery.vue'),
+            },
+            {
+              path: 'selectOrderList',
+              name: 'selectOrderList',
+              component: () => import('../views/sd/delivery/SelectOrderList.vue'),
+            },
+            {
+              path: 'deliveryReport',
+              name: 'deliveryReport',
+              component: () => import('../views/sd/delivery/DeliveryReport.vue'),
+            },
+            {
+              path: 'createDelivery',
+              name: 'createDelivery',
+              component: () => import('../views/sd/delivery/CreateDelivery.vue'),
+            },
+
+
+            {
+              path: '',
+              redirect:'/main/delivery/selectDelivery'
+            }
+          ]
+        },
+        {
+          path: 'returns',//閫�璐�
+          name: 'returns',
+          component: () => import('../views/sd/returns/Returns.vue'),
+          children: [
+            {
+              path: '',
+              redirect:'/main/returns/selectReturns'
+            },
+            {
+              path: 'selectReturns',
+              name: 'selectReturns',
+              component: () => import('../views/sd/returns/SelectReturns.vue'),
+            },
+
+            {
+              path: 'createReturns',
+              name: 'createReturns',
+              component: () => import('../views/sd/returns/CreateReturns.vue'),
+            },
+            {
+              path: 'selectDeliveryList',
+              name: 'selectDeliveryList',
+              component: () => import('../views/sd/returns/SelectDeliveryList.vue'),
+            },
+            {
+              path: 'returnsReport',
+              name: 'returnsReport',
+              component: () => import('../views/sd/returns/ReturnsReport.vue'),
+            }
+
+
+          ]
+        },
+        {
+          path: 'customer',//瀹㈡埛
+          name: 'customer',
+          component: () => import('../views/sd/customer/Customer.vue'),
+          children: [
+            {
+              path: '',
+              redirect:'/main/customer/selectCustomer'
+            },
+            {
+              path: 'selectCustomer',
+              name: 'selectCustomer',
+              component: () => import('../views/sd/customer/SelectCustomer.vue'),
+            },
+            {
+              path: 'createCustomer',
+              name: 'createCustomer',
+              component: () => import('../views/sd/customer/CreateCustomer.vue'),
+            }
+          ]
+        },
+
+          //pp妯″潡
+        {
+          //宸ュ崟绠$悊
+          path: 'workOrder',
+          name: 'workOrder',
+          component: () => import('../views/pp/workOrder/WorkOrder.vue'),
+          children:[
+
+            {
+              path: 'selectAddWorkOrder',
+              name: 'selectAddWorkOrder',
+              component: () => import('../views/pp/workOrder/SelectAddWorkOrder.vue'),
+            },
+            {
+              path: 'releaseWorkOrder',
+              name: 'releaseWorkOrder',
+              component: () => import('../views/pp/workOrder/ReleaseWorkOrder.vue'),
+            },
+            {
+              path: 'addWorkOrder',
+              name: 'addWorkOrder',
+              component: () => import('../views/pp/workOrder/AddWorkOrder.vue'),
+            },
+            {
+              path: 'selectWorkOrder',
+              name: 'selectWorkOrder',
+              component: () => import('../views/pp/workOrder/SelectWorkOrder.vue'),
+            },
+            {
+              path: '',
+              redirect:'/main/workOrder/SelectWorkOrder'
+            }
+          ]
+
+        },
+        {
+          //娴佺▼鍗$鐞�
+          path: 'processCard',
+          name: 'processCard',
+          component: () => import('../views/pp/processCard/ProcessCard.vue'),
+          children:[
+
+            {
+              path: 'addProcessCard',
+              name: 'addProcessCard',
+              component: () => import('../views/pp/processCard/AddProcessCard.vue'),
+            },
+            {
+              path: 'printFlowCard',
+              name: 'printFlowCard',
+              component: () => import('../views/pp/processCard/PrintFlowCard.vue'),
+            },
+            {
+              path: 'selectAddProcess',
+              name: 'selectAddProcess',
+              component: () => import('../views/pp/processCard/SelectAddProcess.vue'),
+            },
+            {
+              path: 'selectPrintFlowCard',
+              name: 'selectPrintFlowCard',
+              component: () => import('../views/pp/processCard/SelectPrintFlowCard.vue'),
+            },
+            {
+              path: 'selectProcessCard',
+              name: 'selectProcessCard',
+              component: () => import('../views/pp/processCard/SelectProcessCard.vue'),
+            },
+            {
+              path: 'processCardDetails',
+              name: 'processCardDetails',
+              component: () => import('../views/pp/processCard/ProcessCardDetails.vue'),
+            },
+            {
+              path: 'splittingDetails',
+              name: 'splittingDetails',
+              component: () => import('../views/pp/processCard/SplittingDetails.vue'),
+            },
+            {
+              path: 'printProcess',
+              name: 'printProcess',
+              component: () => import('../views/pp/processCard/PrintProcess.vue'),
+            },
+            {
+              path: 'reShelving',
+              name: 'reShelving',
+              component: () => import('../views/pp/processCard/ReShelving.vue'),
+            },
+            {
+              path: '',
+              redirect:'/main/processCard/SelectProcessCard'
+            }
+          ]
+
+        },
+        {
+          //鎶ュ伐绠$悊
+          path: 'reportingWorks',
+          name: 'reportingWorks',
+          component: () => import('../views/pp/reportingWorks/ReportingWorks.vue'),
+          children:[
+
+            {
+              path: 'selectReportingWorks',
+              name: 'selectReportingWorks',
+              component: () => import('../views/pp/reportingWorks/SelectReportingWorks.vue'),
+            },
+            {
+              path: 'addReportingWork',
+              name: 'addReportingWork',
+              component: () => import('../views/pp/reportingWorks/AddReportingWork.vue'),
+            },
+            {
+              path: 'qualityInspectionReview',
+              name: 'qualityInspectionReview',
+              component: () => import('../views/pp/reportingWorks/QualityInspectionReview.vue'),
+            },
+            {
+              path: 'reportingWorkDetail',
+              name: 'reportingWorkDetail',
+              component: () => import('../views/pp/reportingWorks/ReportingWorkDetail.vue'),
+            },
+            {
+              path: 'qualityInReviewDetail',
+              name: 'qualityInReviewDetail',
+              component: () => import('../views/pp/reportingWorks/QualityInReviewDetail.vue'),
+            },
+            {
+              path: '',
+              redirect:'/main/reportingWorks/SelectReportingWorks'
+            }
+          ]
+        },
+        {
+          //琛ョ墖绠$悊
+          path: 'replenish',
+          name: 'replenish',
+          component: () => import('../views/pp/Replenish/Replenish.vue'),
+          children:[
+
+            {
+              path: 'addReplenish',
+              name: 'addReplenish',
+              component: () => import('../views/pp/Replenish/AddReplenish.vue'),
+            },
+            {
+              path: 'printReplenishFlowCard',
+              name: 'printReplenishFlowCard',
+              component: () => import('../views/pp/Replenish/PrintReplenishFlowCard.vue'),
+            },
+            {
+              path: 'selectReplenish',
+              name: 'selectReplenish',
+              component: () => import('../views/pp/Replenish/SelectReplenish.vue'),
+            },
+            {
+              path: '',
+              redirect:'/main/Replenish/SelectReplenish'
+            }
+          ]
+        },
+        {
+          //杩斿伐绠$悊
+          path: 'rework',
+          name: 'rework',
+          component: () => import('../views/pp/Rework/Rework.vue'),
+          children:[
+
+            {
+              path: 'addRework',
+              name: 'addRework',
+              component: () => import('../views/pp/Rework/AddRework.vue'),
+            },
+            {
+              path: 'selectRework',
+              name: 'selectRework',
+              component: () => import('../views/pp/Rework/SelectRework.vue'),
+            },
+            {
+              path: '',
+              redirect:'/main/Rework/SelectRework'
+            }
+          ]
+        },
+        {
+          //BOM绠$悊
+          path: 'BOM',
+          name: 'BOM',
+          component: () => import('../views/pp/BOM/BOM.vue'),
+          children:[
+            {
+              path: 'benchmarkBOM',
+              name: 'benchmarkBOM',
+              component: () => import('../views/pp/BOM/BenchmarkBOM.vue'),
+            },
+            {
+              path: 'standardBOM',
+              name: 'standardBOM',
+              component: () => import('../views/pp/BOM/StandardBOM.vue'),
+            },
+            {
+              path: 'orderBOM',
+              name: 'orderBOM',
+              component: () => import('../views/pp/BOM/OrderBOM.vue'),
+            },
+            {
+              path: 'selectBOM',
+              name: 'selectBOM',
+              component: () => import('../views/pp/BOM/SelectBOM.vue'),
+            },
+            {
+              path: 'orderBOMDetails',
+              name: 'orderBOMDetails',
+              component: () => import('../views/pp/BOM/OrderBOMDetails.vue'),
+            },
+            {
+              path: 'standardBOMDetail',
+              name: 'standardBOMDetail',
+              component: () => import('../views/pp/BOM/StandardBOMDetail.vue'),
+            },
+            {
+              path: '',
+              redirect:'/main/BOM/SelectBOM'
+            }
+          ]
+        },
+        {
+          //璁惧绠$悊
+          path: 'machine',
+          name: 'machine',
+          component: () => import('../views/pp/machine/Machine.vue'),
+          children:[
+            {
+              path: 'selectMachine',
+              name: 'selectMachine',
+              component: () => import('../views/pp/machine/SelectMachine.vue'),
+            },
+            {
+              path: 'addMachine',
+              name: 'addMachine',
+              component: () => import('../views/pp/machine/AddMachine.vue'),
+            },
+            {
+              path: 'maintenanceAndRepair',
+              name: 'maintenanceAndRepair',
+              component: () => import('../views/pp/machine/MaintenanceAndRepair.vue'),
+            },
+            {
+              path: 'addMaintenanceAndRepair',
+              name: 'addMaintenanceAndRepair',
+              component: () => import('../views/pp/machine/AddMaintenanceAndRepair.vue'),
+            },
+            {
+              path: '',
+              redirect:'/main/machine/SelectMachine'
+            }
+          ]
+        },
+        {
+          //鎶ヨ〃绠$悊
+          path: 'report',
+          name: 'report',
+          component: () => import('../views/pp/report/Report.vue'),
+          children:[
+            {
+              //璁惧浜ч噺
+              path: 'equipmentOutput',
+              name: 'equipmentOutput',
+              component: () => import('../views/pp/report/EquipmentOutput.vue'),
+            },
+            {
+              //璁㈠崟BOM
+              path: 'orderBOMOutside',
+              name: 'orderBOMOutside',
+              component: () => import('../views/pp/report/OrderBOMOutside.vue'),
+            },
+            {
+              //璁㈠崟璁″垝鍒嗚В
+              path: 'orderPlanDecomposition',
+              name: 'orderPlanDecomposition',
+              component: () => import('../views/pp/report/OrderPlanDecomposition.vue'),
+            },
+            {
+              //宸ュ簭寰呭畬鎴�
+              path: 'processToBeCompleted',
+              name: 'processToBeCompleted',
+              component: () => import('../views/pp/report/ProcessToBeCompleted.vue'),
+            },
+            {
+              //鐢熶骇杩涘害
+              path: 'productionSchedule',
+              name: 'productionSchedule',
+              component: () => import('../views/pp/report/ProductionSchedule.vue'),
+            },
+            {
+              //鍝佽川鎶ヨ〃
+              path: 'qualityReport',
+              name: 'qualityReport',
+              component: () => import('../views/pp/report/QualityReport.vue'),
+            },
+            {
+              //鍘熺墖棰嗘枡鎶ヨ〃
+              path: 'rawMaterialRequisition',
+              name: 'rawMaterialRequisition',
+              component: () => import('../views/pp/report/RawMaterialRequisition.vue'),
+            },
+            {
+              //鍒嗘灦鏄庣粏
+              path: 'splittingDetailsOutside',
+              name: 'splittingDetailsOutside',
+              component: () => import('../views/pp/report/SplittingDetailsOutside.vue'),
+            },
+            {
+              //浠诲姟瀹屾垚鎯呭喌
+              path: 'taskCompletionStatus',
+              name: 'taskCompletionStatus',
+              component: () => import('../views/pp/report/TaskCompletionStatus.vue'),
+            },
+            {
+              //鐝粍浜ч噺
+              path: 'teamOutput',
+              name: 'teamOutput',
+              component: () => import('../views/pp/report/TeamOutput.vue'),
+            },
+            {
+              //鍦ㄥ埗鍝佹姤琛�
+              path: 'workInProgress',
+              name: 'workInProgress',
+              component: () => import('../views/pp/report/WorkInProgress.vue'),
+            },
+            {
+              //鎴愬搧鐜囨姤琛�
+              path: 'yield',
+              name: 'yield',
+              component: () => import('../views/pp/report/Yield.vue'),
+            },
+            {
+              //娆$牬鎶ヨ〃
+              path: 'damageReport',
+              name: 'damageReport',
+              component: () => import('../views/pp/report/DamageReport.vue'),
+            },
+            // {
+            //   path: '',
+            //   redirect:'/main/report/ProductionSchedule'
+            // }
+          ]
+        },
+
+
+
+
+          //mm妯″潡
+        {
+          path: 'productStock',
+          name: 'productStock',
+          component: () => import('../views/mm/mainProductStock/ProductStock.vue'),
+          children:[
+            {
+              // 鎴愬搧搴撳瓨
+              path: 'productStockList',
+              name: 'productStockList',
+              component: () => import('../views/mm/mainProductStock/ProductStockList.vue'),
+            },
+            {
+              // 鎴愬搧鍏ュ簱
+              path: 'createProductStock',
+              name: 'createProductStock',
+              component:()=>   import('../views/mm/mainProductStock/CreateProductStock.vue'),
+            },
+            {
+              // 鎴愬搧鍑哄簱
+              path: 'finishedProductOut',
+              name: 'finishedProductOut',
+              component:()=>import('../views/mm/mainProductStock/FinishedProductOut.vue')
+            },
+            {
+              // 鎴愬搧鍑哄簱
+              path: 'finishedProductReturn',
+              name: 'finishedProductReturn',
+              component:()=>import('../views/mm/mainProductStock/FinishedProductReturn.vue')
+            },
+            {
+              // 璁㈠崟璋冩嫧
+              path: 'orderAllocation',
+              name: 'orderAllocation',
+              component:()=>import('../views/mm/mainProductStock/OrderAllocation.vue'),
+            },
+            {
+              // 鎴愬搧棰嗗嚭
+              path: 'finishedGoodsIssue',
+              name: 'finishedGoodsIssue',
+              component:()=>import('../views/mm/mainProductStock/FinishedGoodsIssue.vue'),
+            },
+            {
+              // 鎴愬搧杩斿伐
+              path: 'finishedProductRework',
+              name: 'finishedProductRework',
+              component:()=>import('../views/mm/mainProductStock/FinishedProductRework.vue'),
+            },
+
+            {
+              path: '',
+              redirect:'/main/productStock/ProductStockList'
+            }
+          ]
+        },
+
+        {
+          // 鐗╂枡璧勬枡
+          path:'ingredients',
+          name:'ingredients',
+          component: () => import('../views/mm/mainIngredient/Ingredients.vue'),
+          children:[
+            {
+              path: 'selectIngredients',
+              name: 'selectIngredients',
+              component:()=>import('../views/mm/mainIngredient/SelectIngredients.vue')
+            },
+            {
+              path: 'createIngredients',
+              name: 'createIngredients',
+              component:()=>import('../views/mm/mainIngredient/CreateIngredients.vue')
+            },
+            {
+              path: '',
+              redirect:'/main/ingredients/SelectIngredients'
+            }
+          ]
+        },
+
+        {
+          // 鐗╂枡搴撳瓨
+          path:'ingredientsStock',
+          name:'ingredientsStock',
+          component: () => import('../views/mm/mainIngredientStock/IngredientsStock.vue'),
+          children:[
+            {
+              path: 'selectIngredientsStock',
+              name: 'selectIngredientsStock',
+              component:()=>import('../views/mm/mainIngredientStock/SelectIngredientsStock.vue')
+            },
+
+            {
+              path: 'accessoriesMonthlySettlement',
+              name: 'accessoriesMonthlySettlement',
+              component:()=>import('../views/mm/mainIngredientStock/AccessoriesMonthlySettlement.vue')
+            },
+            {
+              path: 'originalMonthlySettlement',
+              name: 'originalMonthlySettlement',
+              component:()=>import('../views/mm/mainIngredientStock/OriginalMonthlySettlement.vue')
+            },
+            {
+              path: '',
+              redirect:'/main/ingredientsStock/SelectIngredientsStock'
+            }
+          ]
+        },
+
+        {
+          // 渚涘簲鍟嗙鐞嗭紒锛侊紒
+          path:'trader',
+          name:'trader',
+          component: () => import('../views/mm/mainTrader/Trader.vue'),
+          children:[
+            {
+              path: 'selectTrader',
+              name: 'selectTrader',
+              component:()=>import('../views/mm/mainTrader/SelectTrader.vue')
+            },
+            {
+              path: 'createTrader',
+              name: 'createTrader',
+              component:()=>import('../views/mm/mainTrader/CreateTrader.vue')
+            },
+            {
+              path: '',
+              redirect:'/main/trader/SelectTrader'
+            }
+          ]
+        },
+        {
+          /*----------- 浠撳偍鎶ヨ〃 ----------------*/
+          path: 'stockReport',
+          name: 'stockReport',
+          component: () => import('../views/mm/stockReport/stockReport.vue'),
+          children:[
+            {
+              path: 'WarehouseReport',
+              name: 'WarehouseReport',
+              component: () => import('../views/mm/stockReport/WarehouseReport.vue'),
+            }, {
+              path: 'StockMonthReport',
+              name: 'StockMonthReport',
+              component: () => import('../views/mm/stockReport/StockMonthReport.vue'),
+            }, {
+              path: 'SubsidiaryMonthReport',
+              name: 'SubsidiaryMonthReport',
+              component: () => import('../views/mm/stockReport/SubsidiaryMonthReport.vue'),
+            }, {
+              path: '',
+              redirect: '/main/stockReport/WarehouseReport'
+            }
+          ]
+        },
+        {
+          /*----------- 閲囪喘璁㈠崟 ----------------*/
+          path: 'purchaseOrder',
+          name: 'purchaseOrder',
+          component: () => import('../views/mm/purchaseOrder/PurchaseOrder.vue'),
+          children: [
+            {
+              path: 'SelectPurchaseOrder',
+              name: 'SelectPurchaseOrder',
+              component: () => import('../views/mm/purchaseOrder/Select.vue'),
+            }, {
+              path: 'CreatePurchaseOrder',
+              name: 'CreatePurchaseOrder',
+              component: () => import('../views/mm/purchaseOrder/Create.vue')
+            }
+            , {
+              path: '',
+              redirect: '/main/purchaseOrder/SelectPurchaseOrder'
+            }
+          ]
+        },
+        {
+          /*----------- 閲囪喘鍏ュ簱 ----------------*/
+          path: 'purchaseStorage',
+          name: 'purchaseStorage',
+          component: () => import('../views/mm/purchaseStorage/PurchaseStorage.vue'),
+          children: [
+            {
+              path: 'SelectPurchaseStorage',
+              name: 'SelectPurchaseStorage',
+              component: () => import('../views/mm/purchaseStorage/Select.vue'),
+            },
+            {
+              path: '',
+              redirect: '/main/purchaseStorage/SelectPurchaseStorage'
+            }
+          ]
+        },
+        {
+          /*----------- 閲囪喘閫�璐� ----------------*/
+          path: 'purchaseReturn',
+          name: 'purchaseReturn',
+          component: () => import('../views/mm/purchaseReturn/PurchaseReturn.vue'),
+          children: [
+            {
+              path: 'SelectPurchaseReturn',
+              name: 'SelectPurchaseReturn',
+              component: () => import('../views/mm/purchaseReturn/Select.vue'),
+            },
+            {
+              path: '',
+              redirect: '/main/purchaseReturn/SelectPurchaseReturn'
+            }
+          ]
+        },
+        {
+          path: '',
+          redirect:'/main/Product'
+        }
+      ]
+    },
+    {
+      path: '/register',
+      name: 'register',
+      component: () => import('../views/RegisterView.vue')
+    }
+    
+  ]
+})
+
+export default router
diff --git a/north-glass-erp/northglass-erp/src/stores/counter.js b/north-glass-erp/northglass-erp/src/stores/counter.js
new file mode 100644
index 0000000..b6757ba
--- /dev/null
+++ b/north-glass-erp/northglass-erp/src/stores/counter.js
@@ -0,0 +1,12 @@
+import { ref, computed } from 'vue'
+import { defineStore } from 'pinia'
+
+export const useCounterStore = defineStore('counter', () => {
+  const count = ref(0)
+  const doubleCount = computed(() => count.value * 2)
+  function increment() {
+    count.value++
+  }
+
+  return { count, doubleCount, increment }
+})
diff --git a/north-glass-erp/northglass-erp/src/stores/productGlassType.js b/north-glass-erp/northglass-erp/src/stores/productGlassType.js
new file mode 100644
index 0000000..151845c
--- /dev/null
+++ b/north-glass-erp/northglass-erp/src/stores/productGlassType.js
@@ -0,0 +1,11 @@
+import {defineStore} from 'pinia'
+import {ref} from "vue";
+
+export  default defineStore("productGlassType",{
+    state: () =>{
+        let GlassType=$ref('')
+        return {
+            GlassType
+        }
+    }
+})
\ No newline at end of file
diff --git a/north-glass-erp/northglass-erp/src/stores/userInfo.js b/north-glass-erp/northglass-erp/src/stores/userInfo.js
new file mode 100644
index 0000000..eeaefac
--- /dev/null
+++ b/north-glass-erp/northglass-erp/src/stores/userInfo.js
@@ -0,0 +1,19 @@
+import {defineStore} from 'pinia'
+import {ref} from "vue";
+import {createWebSocket, global_callback1} from "@/utils/webSocket";
+
+export  default defineStore("userInfo",{
+    state: () =>{
+        let user=ref(null)
+        return {
+            user
+        }
+    },
+    actions:{
+        createWebSocket(){
+            createWebSocket(global_callback1)
+        }
+
+    },
+    persist: true//鏁版嵁鎸佷箙鍖栵紝闃叉鍒锋柊鏁版嵁娑堝け
+})
\ No newline at end of file
diff --git a/north-glass-erp/northglass-erp/src/utils/deepClone.js b/north-glass-erp/northglass-erp/src/utils/deepClone.js
new file mode 100644
index 0000000..7ee207f
--- /dev/null
+++ b/north-glass-erp/northglass-erp/src/utils/deepClone.js
@@ -0,0 +1,16 @@
+//娣卞害鎷疯礉锛屼娇鏁版嵁杩涜缁戝畾鏄剧ず
+export default  function deepClone(obj){
+    // 瀵瑰父瑙佺殑鈥滈潪鈥濆�硷紝鐩存帴杩斿洖鍘熸潵鍊�
+    if([null, undefined, NaN, false].includes(obj)) return obj;
+    if(typeof obj !== "object" && typeof obj !== 'function') {
+        //鍘熷绫诲瀷鐩存帴杩斿洖
+        return obj;
+    }
+    var o = Array.isArray(obj) ? [] : {};
+    for(let i in obj) {
+        if(obj.hasOwnProperty(i)){
+            o[i] = typeof obj[i] === "object" ? deepClone(obj[i]) : obj[i];
+        }
+    }
+    return o;
+}
\ No newline at end of file
diff --git a/north-glass-erp/northglass-erp/src/utils/request.js b/north-glass-erp/northglass-erp/src/utils/request.js
new file mode 100644
index 0000000..e7abe99
--- /dev/null
+++ b/north-glass-erp/northglass-erp/src/utils/request.js
@@ -0,0 +1,49 @@
+import axios from 'axios'
+import config from '../../config';
+import useUserInfoStore from '@/stores/userInfo'
+const userStore=useUserInfoStore()
+const request = axios.create({
+    baseURL: `http://${config.serverUrl}`,  // 娉ㄦ剰锛侊紒 杩欓噷鏄叏灞�缁熶竴鍔犱笂浜� 鍚庣鎺ュ彛鍓嶇紑 鍓嶇紑锛屽悗绔繀椤昏繘琛岃法鍩熼厤缃紒
+    timeout: 5000
+})
+
+//
+
+// request 鎷︽埅鍣�
+// 鍙互鑷姹傚彂閫佸墠瀵硅姹傚仛涓�浜涘鐞�
+// 姣斿缁熶竴鍔爐oken锛屽璇锋眰鍙傛暟缁熶竴鍔犲瘑
+request.interceptors.request.use(config => {
+    config.headers['Content-Type'] = 'application/json;charset=utf-8';
+    if(userStore.user){
+        config.headers['token'] = userStore.user.token;
+    }
+      // 璁剧疆璇锋眰澶�
+    return config
+}, error => {
+    return Promise.reject(error)
+});
+
+// response 鎷︽埅鍣�
+// 鍙互鍦ㄦ帴鍙e搷搴斿悗缁熶竴澶勭悊缁撴灉
+request.interceptors.response.use(
+    response => {
+        let res = response.data;
+        // 濡傛灉鏄繑鍥炵殑鏂囦欢
+        if (response.config.responseType === 'blob') {
+            return res
+        }
+        // 鍏煎鏈嶅姟绔繑鍥炵殑瀛楃涓叉暟鎹�
+        if (typeof res === 'string') {
+            res = res ? JSON.parse(res) : res
+        }
+        return res;
+    },
+    error => {
+        console.log('err' + error) // for debug
+        return Promise.reject(error)
+    }
+)
+
+
+export default request
+
diff --git a/north-glass-erp/northglass-erp/src/utils/webSocket.js b/north-glass-erp/northglass-erp/src/utils/webSocket.js
new file mode 100644
index 0000000..779990b
--- /dev/null
+++ b/north-glass-erp/northglass-erp/src/utils/webSocket.js
@@ -0,0 +1,137 @@
+var websock = null;
+var global_callback = null;
+let isConnect = false; //杩炴帴鏍囪瘑 閬垮厤閲嶅杩炴帴
+let rec; //鏂嚎閲嶈繛鍚庯紝寤惰繜5绉掗噸鏂板垱寤篧ebSocket杩炴帴  rec鐢ㄦ潵瀛樺偍寤惰繜璇锋眰鐨勪唬鐮�
+let soketparams ='蹇冭烦鍖呮娴�'
+
+
+var serverPort = "/ws"; // webSocket杩炴帴绔彛
+var wsuri = "ws://127.0.0.1:12345/ws";
+
+function createWebSocket(callback) {
+
+    if (websock == null || typeof websock !== WebSocket) {
+        initWebSocket(callback);
+    }
+}
+
+function global_callback1(msg) {
+    console.log("websocket鐨勫洖璋冨嚱鏁版敹鍒版湇鍔″櫒淇℃伅锛�" + JSON.stringify(msg));
+    // console.log("鏀跺埌鏈嶅姟鍣ㄤ俊鎭細" + msg);
+}
+
+function initWebSocket(callback) {
+    global_callback = callback;
+    // 鍒濆鍖杦ebsocket
+    websock = new WebSocket(wsuri);
+    websock.onmessage = function (e) {
+        websocketonmessage(e);
+    };
+    websock.onclose = function (e) {
+        websocketclose(e);
+    };
+    websock.onopen = function () {
+        websocketOpen();
+    };
+
+    // 杩炴帴鍙戠敓閿欒鐨勫洖璋冩柟娉�
+    websock.onerror = function () {
+        console.log("WebSocket杩炴帴鍙戠敓閿欒");
+    };
+}
+
+
+
+//蹇冭烦璁剧疆
+var heartCheck = {
+    timeout: 20000, //姣忔鏃堕棿鍙戦�佷竴娆″績璺冲寘 杩欓噷璁剧疆涓�20s
+    timeoutObj: null, //寤舵椂鍙戦�佹秷鎭璞★紙鍚姩蹇冭烦鏂板缓杩欎釜瀵硅薄锛屾敹鍒版秷鎭悗閲嶇疆瀵硅薄锛�
+
+    start: function () {
+        this.timeoutObj = setInterval(function () {
+            if (isConnect) websock.send(JSON.stringify(soketparams));
+        }, this.timeout);
+    },
+
+    reset: function () {
+        clearTimeout(this.timeoutObj);
+        this.start();
+    }
+};
+
+//瀹氫箟閲嶈繛鍑芥暟
+let reConnect = () => {
+    console.log("灏濊瘯閲嶆柊杩炴帴");
+    if (isConnect) return; //濡傛灉宸茬粡杩炰笂灏变笉鍦ㄩ噸杩炰簡
+    rec && clearTimeout(rec);
+    rec = setTimeout(function () { // 寤惰繜5绉掗噸杩�  閬垮厤杩囧娆¤繃棰戠箒璇锋眰閲嶈繛
+        initWebSocket();
+    }, 5000);
+};
+
+
+
+// 瀹為檯璋冪敤鐨勬柟娉�
+function sendSock(agentData ) {
+    if (websock.readyState === websock.OPEN) {
+        // 鑻ユ槸ws寮�鍚姸鎬�
+        websocketsend(agentData);
+    } else if (websock.readyState === websock.CONNECTING) {
+        // 鑻ユ槸 姝e湪寮�鍚姸鎬侊紝鍒欑瓑寰�1s鍚庨噸鏂拌皟鐢�
+        setTimeout(function () {
+            sendSock(agentData);
+        }, 1000);
+    } else {
+        // 鑻ユ湭寮�鍚� 锛屽垯绛夊緟1s鍚庨噸鏂拌皟鐢�
+        setTimeout(function () {
+            sendSock(agentData);
+        }, 1000);
+    }
+}
+
+function closeSock() {
+    console.log('鍏抽棴浜�')
+    websock.close();
+}
+
+// 鏁版嵁鎺ユ敹
+function websocketonmessage(msg) {
+    // console.log("鏀跺埌鏁版嵁锛�"+JSON.parse(e.data));
+    // console.log("鏀跺埌鏁版嵁锛�"+msg);
+
+    // global_callback(JSON.parse(msg.data));
+    // 鏀跺埌淇℃伅涓築lob绫诲瀷鏃�
+    let result = null;
+    if (msg.data instanceof Blob) {
+        const reader = new FileReader();
+        reader.readAsText(msg.data, "UTF-8");
+        reader.onload = (e) => {
+            result = JSON.parse(reader.result);
+            //console.log("websocket鏀跺埌", result);
+            global_callback(result);
+        };
+    } else {
+        result = JSON.parse(msg.data);
+        //console.log("websocket鏀跺埌", result);
+        global_callback(result);
+    }
+}
+
+// 鏁版嵁鍙戦��
+function websocketsend(agentData) {
+    // console.log("鍙戦�佹暟鎹細" + agentData);
+    websock.send(agentData);
+}
+
+// 鍏抽棴
+function websocketclose(e) {
+    console.log("connection closed (" + e.code + ")");
+}
+
+function websocketOpen(e) {
+    console.log("杩炴帴鎵撳紑");
+    isConnect = true
+    //heartCheck.start(); //鍙戦�佸績璺� 鐪嬩釜浜洪」鐩渶姹�
+}
+
+export { sendSock, createWebSocket, closeSock ,global_callback1};
\ No newline at end of file
diff --git a/north-glass-erp/northglass-erp/src/views/HomeView.vue b/north-glass-erp/northglass-erp/src/views/HomeView.vue
new file mode 100644
index 0000000..075c71e
--- /dev/null
+++ b/north-glass-erp/northglass-erp/src/views/HomeView.vue
@@ -0,0 +1,29 @@
+<script setup>
+import { useRouter, useRoute } from 'vue-router'
+
+import { sendSock, createWebSocket, closeSock } from "@/utils/webSocket"
+
+function global_callback(msg) {
+  console.log("websocket鐨勫洖璋冨嚱鏁版敹鍒版湇鍔″櫒淇℃伅锛�" + JSON.stringify(msg));
+  // console.log("鏀跺埌鏈嶅姟鍣ㄤ俊鎭細" + msg);
+}
+function close(){
+ closeSock();
+
+}
+function sendMessage(){
+  sendSock("123")
+}
+function createSocket(){
+  createWebSocket(global_callback);
+}
+</script>
+
+
+<template>
+ <div class="mainDiv">
+   <button @click="createSocket">鍒涘缓</button>
+   <button @click="sendMessage">鍙戦��</button>
+   <button @click="close">鍏抽棴</button>
+ </div>
+</template>
diff --git a/north-glass-erp/northglass-erp/src/views/LoginView.vue b/north-glass-erp/northglass-erp/src/views/LoginView.vue
new file mode 100644
index 0000000..6c1e834
--- /dev/null
+++ b/north-glass-erp/northglass-erp/src/views/LoginView.vue
@@ -0,0 +1,193 @@
+<script lang="ts" setup>
+import {reactive, ref} from "vue"
+import {useRouter,useRoute } from 'vue-router'
+import type {FormInstance, FormRules} from 'element-plus'
+import { ElMessage } from "element-plus";
+import { Lock,Avatar } from '@element-plus/icons-vue'
+import request from '@/utils/request'
+import userInfo from '@/stores/userInfo'
+import { sendSock, createWebSocket, closeSock,global_callback1 } from "@/utils/webSocket"
+
+const store=userInfo()
+const ruleFormRef  = ref<FormInstance>()
+const router = useRouter()
+const route = useRoute()
+
+const userForm = reactive({
+  userId: '',
+  pass: ''
+})
+
+if (typeof(route.query.id) != "undefined"){
+  userForm.userId = <string>route.query.id
+}
+
+const validateUser = (rule: any, value: any, callback: any) => {
+  if (value === '') {
+    callback(new Error('璇疯緭鍏ヤ綘鐨勮处鍙�'))
+  } else {
+    callback()
+  }
+}
+
+const validatePass = (rule: any, value: any, callback: any) => {
+  if (value === '') {
+    callback(new Error('璇疯緭鍏ヤ綘鐨勫瘑鐮�'))
+  } else {
+    callback()
+  }
+}
+
+const rules = reactive<FormRules<typeof userForm>>({
+  userId: [{ validator: validateUser, trigger: 'blur' }],
+  pass: [{ validator: validatePass, trigger: 'blur' }]
+})
+
+//鐧婚檰鏂规硶
+const submitForm = (formEl: FormInstance | undefined) => {
+  if (!formEl) return
+  formEl.validate((valid) => {
+    if (valid) {
+      loginLoadings.value=true
+      request.post('/user/login',
+          userForm).then((res) => {
+        if(res['code']==200){
+          store.$patch({user:res.data})
+
+          router.push('/main')
+          ElMessage.success(`鐧诲綍鎴愬姛`)
+        } else {
+          ElMessage.error(res['msg'])
+          loginLoadings.value=false
+          return false
+        }
+      }).catch(error => {
+        ElMessage.error("鏈嶅姟鍣ㄨ繛鎺ュけ璐�")
+        loginLoadings.value=false
+        return false
+      })
+    }
+  })
+}
+
+function register() {
+
+  router.push({
+    path:'/register',
+  })
+}
+
+let loginLoadings= ref(false)
+let registerLoadings= ref(false)
+
+</script>
+
+<template>
+  <div class="mainDiv">
+    <div id="main-login">
+      <div id="img-div">
+        <img id="img-pic" src="@/assets/img.png" alt="">
+      </div>
+      <div id="div-login">
+        <h2>鍖楃幓鑷姩鍖朎RP绠$悊绯荤粺</h2>
+        <el-form
+            ref="ruleFormRef"
+            :model="userForm"
+            status-icon
+            :rules="rules"
+        >
+          <el-form-item label="鐢ㄦ埛锛�" prop="userId">
+            <el-input
+                v-model="userForm.userId"
+                type="text"
+                autocomplete="off"
+                :prefix-icon="Avatar"
+                placeholder="璇疯緭鍏ヤ綘鐨勮处鍙�"
+            />
+          </el-form-item>
+          <el-form-item label="瀵嗙爜锛�" prop="pass">
+            <el-input
+                v-model="userForm.pass"
+                type="password"
+                autocomplete="off"
+                :prefix-icon="Lock"
+                placeholder="璇疯緭鍏ヤ綘鐨勫瘑鐮�"
+            />
+          </el-form-item>
+          <el-form-item id="submitForm">
+            <el-button
+                :loading="registerLoadings"
+                type="primary"
+                @click="register"
+            >娉ㄥ唽
+            </el-button>
+            <el-button
+                :loading="loginLoadings"
+                type="primary"
+                @click="submitForm(ruleFormRef)"
+            >鐧诲綍
+            </el-button>
+
+          </el-form-item>
+        </el-form>
+      </div>
+    </div>
+
+  </div>
+</template>
+
+<style scoped>
+.mainDiv{
+  //background-color: #1890FF;
+  overflow: hidden;
+  min-width: 718px;
+}
+#main-login{
+  margin: 150px auto 0 auto;
+  height: 60vh;
+  width: 70vw;
+
+  //background-color: #f2f2f2;
+}
+#img-div{
+  width: 55%;
+  height: 100%;
+  display: flex;
+  justify-content: center;
+  align-items: center;
+  float: left;
+}
+#img-pic{
+  max-height: 90%;
+  max-width: 100%;
+}
+#div-login{
+  margin-top: 5%;
+  background-color: #fff;
+  float: right;
+  width: 40%;
+  height: 80%;
+  border-radius: 12px;
+  min-width: 318px;
+  box-shadow: 0 8px 16px 0 rgba(0,0,0,0), 0 6px 5px 0 rgba(0,0,0,0.19);
+}
+h2{
+  color: #1890FF;
+  width: 100%;
+  text-align: center;
+  margin-top: 20%;
+}
+.el-form{
+  width: 50%;
+  margin: 5% auto auto;
+}
+#submitForm {
+  display: flex;
+  justify-content: space-evenly;
+  margin-top: 2rem;
+}
+:deep(.el-form-item__content){
+  flex: unset
+
+}
+</style>
\ No newline at end of file
diff --git a/north-glass-erp/northglass-erp/src/views/RegisterView.vue b/north-glass-erp/northglass-erp/src/views/RegisterView.vue
new file mode 100644
index 0000000..605158d
--- /dev/null
+++ b/north-glass-erp/northglass-erp/src/views/RegisterView.vue
@@ -0,0 +1,183 @@
+<script setup lang="ts">
+  import {useRouter,useRoute} from 'vue-router'
+  import { reactive, ref } from 'vue'
+  import type { FormProps,FormInstance, FormRules } from 'element-plus'
+  import {ElMessage,ElMessageBox} from "element-plus";
+  import request from "@/utils/request";
+  import {Avatar, UserFilled} from "@element-plus/icons-vue";
+
+  const router = useRouter()
+  const route = useRoute()
+  let loginLoadings= ref(false)
+  const labelPosition = ref<FormProps['labelPosition']>('right')
+
+  //娉ㄥ唽鐢ㄦ埛鍙傛暟
+  const register = reactive({
+    userName: '',
+    // loginName: '',
+    passWord: '',
+    confirmPassword:''
+  })
+
+  /*鏂规硶*/
+  const checkName = (rule: any, value: any, callback: any) => {
+    if (value.trim() === '') {
+      callback(new Error('濮撳悕涓嶈兘涓虹┖'))
+    }else if(value.length>16){
+      callback(new Error('闀垮害涓嶈兘瓒呰繃16'))
+    }else{
+      callback()
+    }
+  }
+
+  const checkPassword = (rule: any, value: any, callback: any) => {
+    if (value.trim() === '') {
+      callback(new Error('瀵嗙爜涓嶈兘涓虹┖'))
+    }else if(value.length>16 || value.length<6){
+      callback(new Error('瀵嗙爜闀垮害涓嶈兘浣庝簬6鎴栬秴杩�16'))
+    }else{
+      callback()
+    }
+  }
+
+  const checkConfirmPassword = (rule: any, value: any, callback: any) => {
+    if (value.trim() === '') {
+      callback(new Error('纭瀵嗙爜涓嶈兘涓虹┖'))
+    }else if(value !== register.passWord){
+      callback(new Error('涓ゆ瀵嗙爜涓嶇浉鍚�'))
+    }else if(value.length>16 || value.length<6){
+      callback(new Error('瀵嗙爜闀垮害涓嶈兘浣庝簬6鎴栬秴杩�16'))
+    }else{
+      callback()
+    }
+  }
+
+  const ruleFormRef  = ref<FormInstance>()
+  const rules = reactive<FormRules<typeof register>>({
+    userName: [{ validator: checkName, trigger: 'blur' }],
+    passWord:[{ validator: checkPassword, trigger: 'blur' }],
+    confirmPassword:[{ validator: checkConfirmPassword, trigger: 'blur' }],
+    // loginName: [{ validator: validateString, trigger: 'blur' }]
+  })
+
+  const submitForm = (formEl: FormInstance | undefined) => {
+    if (!formEl) return
+    formEl.validate((valid) => {
+      if (valid) {
+        loginLoadings.value=true
+        request.post('/user/register',
+            register).then((res) => {
+          if(res['code']==200){
+            console.log(res.data)
+            ElMessageBox.alert(
+                `<strong>鐢ㄦ埛:<i style="color: #1890FF;">'${res.data.userName}</i>'
+                 <br>璐﹀彿ID:<i style="color: #1890FF;">${res.data.loginName}</i> </strong>`,
+                '娉ㄥ唽鎻愮ず锛�',
+                {
+                  dangerouslyUseHTMLString: true,
+                  confirmButtonText: '鐧婚檰',
+                  center: true,
+                }
+            ).then(()=>{
+              router.push({
+                path:'/login',
+                query: {
+                  id: res.data.loginName
+                }
+              })
+            })
+
+            ElMessage.success(`娉ㄥ唽鎴愬姛`)
+            loginLoadings.value=false
+          } else {
+            ElMessage.error(res['msg'])
+            return false
+          }
+        }).catch(error => {
+          ElMessage.error("鏈嶅姟鍣ㄨ繛鎺ュけ璐�")
+          loginLoadings.value=false
+          return false
+        })
+      }
+    })
+  }
+
+
+
+  // console.log(route.params)
+</script>
+
+<template>
+  <h2 style="color: #1890FF">
+    <span>
+      <el-icon><UserFilled /></el-icon>
+      <p>鍖楃幓ERP鐢ㄦ埛娉ㄥ唽</p>
+    </span>
+  </h2>
+  <div id="main-div">
+
+    <div id="register">
+      <el-form
+          :label-position="labelPosition"
+          label-width="100px"
+          :model="register"
+          ref="ruleFormRef"
+          status-icon
+          :rules="rules"
+      >
+        <el-form-item label="濮撳悕锛�" prop="userName">
+          <el-input v-model="register.userName" />
+        </el-form-item>
+<!--        <el-form-item label="鐧婚檰鍚嶏細" prop="loginName">-->
+<!--          <el-input v-model="register.loginName" />-->
+<!--        </el-form-item>-->
+        <el-form-item label="瀵嗙爜锛�" prop="passWord">
+          <el-input type="password" v-model="register.passWord" />
+        </el-form-item>
+        <el-form-item label="纭瀵嗙爜锛�" prop="confirmPassword">
+          <el-input type="password" v-model="register.confirmPassword" />
+        </el-form-item>
+        <el-form-item >
+          <el-button
+              :loading="loginLoadings"
+              type="primary"
+              @click="submitForm(ruleFormRef)"
+          >娉ㄥ唽
+          </el-button>
+        </el-form-item>
+      </el-form>
+    </div>
+  </div>
+
+</template>
+
+<style scoped>
+#main-div{
+  //overflow: hidden;
+  position: absolute;
+  left:50%;
+  top:50%;
+  transform: translate(-50%, -50%);
+
+}
+h2{
+  text-align: center;
+  width: 100vw;
+  margin-top: 10vh;
+}
+#register{
+  background-color: #FAFAFA;
+  width: 50vw;
+  height: 50vh;
+  border-radius: 12px;
+  box-shadow: 0 8px 16px 0 rgba(0,0,0,0), 0 6px 5px 0 rgba(0,0,0,0.19);
+  display:flex;
+  align-items:center;
+  justify-content:center;
+  min-height: 280px;
+}
+.el-form{
+  max-width: 300px;
+}
+
+</style>
\ No newline at end of file
diff --git a/north-glass-erp/northglass-erp/src/views/mm/mainIngredient/CreateIngredients.vue b/north-glass-erp/northglass-erp/src/views/mm/mainIngredient/CreateIngredients.vue
new file mode 100644
index 0000000..643687f
--- /dev/null
+++ b/north-glass-erp/northglass-erp/src/views/mm/mainIngredient/CreateIngredients.vue
@@ -0,0 +1,201 @@
+<!-- 鐗╂枡璧勬枡鏂板 -->
+
+<script lang="ts" setup>
+import {ref} from "vue";
+</script>
+<template>
+
+ <div class="center-box">
+   <el-card class="form-card">
+   <el-form  size="medium" >
+
+
+
+     <el-row gutter="5">
+       <el-col :span="4.5">
+         <el-input v-model="name" placeholder="璇疯緭鍏ョ墿鏂欑紪鐮�" style="width: 150px; height: 30px;" />
+       </el-col>
+       <el-col :span="4.5">
+         <el-input v-model="productName" placeholder="璇疯緭鍏ョ墿鏂欏悕绉�" style="width: 150px; height: 30px;" />
+       </el-col>
+       <el-col :span="4.5">
+         <el-input v-model="salId" placeholder="璇疯緭鍏ラ噸閲�" style="width: 150px; height: 30px;" />
+       </el-col>
+       <el-col :span="4">
+         <el-dropdown>
+           <el-button type="primary">
+             绛夌骇<el-icon class="el-icon--right" style="width: 66px;"><arrow-down /></el-icon>
+           </el-button>
+           <template #dropdown>
+             <el-dropdown-menu>
+               <el-dropdown-item>鍒堕暅绾�</el-dropdown-item>
+               <el-dropdown-item>鍚堟牸鍝�</el-dropdown-item>
+               <el-dropdown-item>涓�绛夊搧</el-dropdown-item>
+               <el-dropdown-item>鍗忚鍝�</el-dropdown-item>
+               <el-dropdown-item>浼樼瓑鍝�</el-dropdown-item>
+             </el-dropdown-menu>
+           </template>
+         </el-dropdown>
+       </el-col>
+     </el-row>
+
+     <el-divider ></el-divider> <!-- 娣诲姞鍒嗛殧绾� -->
+
+     <el-row gutter="5">
+       <el-col :span="4.5">
+         <el-input v-model="name" placeholder="璇疯緭鍏ュ搴�" style="width: 150px; height: 30px;" />
+       </el-col>
+       <el-col :span="4.5">
+         <el-input v-model="name" placeholder="璇疯緭鍏ラ珮搴�" style="width: 150px; height: 30px;" />
+       </el-col>
+       <el-col :span="4.5">
+         <el-input v-model="name" placeholder="璇疯緭鍏ュ帤搴�" style="width: 150px; height: 30px;" />
+       </el-col>
+       <el-col :span="4">
+         <el-dropdown>
+           <el-button type="primary">
+             澶х被<el-icon class="el-icon--right" style="width: 66px;"><arrow-down /></el-icon>
+           </el-button>
+           <template #dropdown>
+             <el-dropdown-menu>
+               <el-dropdown-item>杈呯墖</el-dropdown-item>
+               <el-dropdown-item>鍘熺墖</el-dropdown-item>
+             </el-dropdown-menu>
+           </template>
+         </el-dropdown>
+       </el-col>
+     </el-row>
+
+     <el-divider ></el-divider> <!-- 娣诲姞鍒嗛殧绾� -->
+
+     <el-row gutter="5">
+       <el-col :span="4.5">
+         <el-input v-model="name" placeholder="璇疯緭鍏ュ瀷鍙�" style="width: 150px; height: 30px;" />
+       </el-col>
+
+       <el-col :span="4.5">
+         <el-input v-model="name" placeholder="璇疯緭鍏ュ崟浣�" style="width: 150px; height: 30px;" />
+       </el-col>
+       <el-col :span="4">
+         <el-dropdown>
+           <el-button type="primary">
+             浜у湴<el-icon class="el-icon--right" style="width: 66px;"><arrow-down /></el-icon>
+           </el-button>
+           <template #dropdown>
+             <el-dropdown-menu>
+               <el-dropdown-item>鏆傛棤</el-dropdown-item>
+             </el-dropdown-menu>
+           </template>
+         </el-dropdown>
+       </el-col>
+       <el-col :span="4">
+         <el-dropdown>
+           <el-button type="primary">
+             涓被<el-icon class="el-icon--right" style="width: 66px;"><arrow-down /></el-icon>
+           </el-button>
+           <template #dropdown>
+             <el-dropdown-menu>
+               <el-dropdown-item>0</el-dropdown-item>
+             </el-dropdown-menu>
+           </template>
+         </el-dropdown>
+       </el-col>
+     </el-row>
+
+
+     <el-divider ></el-divider> <!-- 娣诲姞鍒嗛殧绾� -->
+
+     <el-row gutter="5">
+       <el-col :span="4.5">
+         <el-input v-model="name" placeholder="璇疯緭鍏ユ崲绠楀崟浣�" style="width: 150px; height: 30px;" />
+       </el-col>
+       <el-col :span="4.5">
+         <el-input v-model="name" placeholder="璇疯緭鍏ユ崲绠楃巼" style="width: 150px; height: 30px;" />
+       </el-col>
+       <el-col :span="4.5">
+         <el-input v-model="name" placeholder="璇疯緭鍏ュ娉�" style="width: 150px; height: 30px;" />
+       </el-col>
+       <el-col :span="4">
+         <el-dropdown>
+           <el-button type="primary">
+             灏忕被<el-icon class="el-icon--right" style="width: 66px;"><arrow-down /></el-icon>
+           </el-button>
+           <template #dropdown>
+             <el-dropdown-menu>
+               <el-dropdown-item>0</el-dropdown-item>
+             </el-dropdown-menu>
+           </template>
+         </el-dropdown>
+       </el-col>
+     </el-row>
+
+     <el-divider ></el-divider> <!-- 娣诲姞鍒嗛殧绾� -->
+
+
+     <el-row gutter="5">
+       <el-col :span="4.5">
+         <el-input v-model="name" placeholder="璇疯緭鍏ヤ繚璐ㄦ湡" style="width: 150px; height: 30px;" />
+       </el-col>
+       <el-col :span="4.5">
+         <el-input v-model="name" placeholder="璇疯緭鍏ユ渶楂橀璀�" style="width: 150px; height: 30px;" />
+       </el-col>
+       <el-col :span="4.5">
+         <el-input v-model="name" placeholder="璇疯緭鍏ユ媶鍖呴璀�" style="width: 150px; height: 30px;" />
+       </el-col>
+       <el-col :span="4">
+         <el-dropdown>
+           <el-button type="primary">
+             鑶滅郴<el-icon class="el-icon--right" style="width: 66px;"><arrow-down /></el-icon>
+           </el-button>
+           <template #dropdown>
+             <el-dropdown-menu>
+               <el-dropdown-item>闈為晙鑶�</el-dropdown-item>
+               <el-dropdown-item>鍦ㄧ嚎LOW-E</el-dropdown-item>
+               <el-dropdown-item>SUPPER-I</el-dropdown-item>
+               <el-dropdown-item>SUPPER-I+</el-dropdown-item>
+               <el-dropdown-item>SUPPER-II</el-dropdown-item>
+               <el-dropdown-item>SUPPER-III</el-dropdown-item>
+               <el-dropdown-item>SUPPER-V</el-dropdown-item>
+               <el-dropdown-item>SUPPER-IA</el-dropdown-item>
+               <el-dropdown-item>SUNLITE LOWE</el-dropdown-item>
+               <el-dropdown-item>LOW-E40</el-dropdown-item>
+               <el-dropdown-item>LOW-E40A</el-dropdown-item>
+               <el-dropdown-item>LOW-E50</el-dropdown-item>
+               <el-dropdown-item>LOW-E55N</el-dropdown-item>
+             </el-dropdown-menu>
+           </template>
+         </el-dropdown>
+       </el-col>
+     </el-row>
+     <el-divider ></el-divider> <!-- 娣诲姞鍒嗛殧绾� -->
+     <el-row  gutter="10" justify="center" >
+       <el-col span="4">
+         <el-button id="searchButton" type="primary" :icon="Search">鏌ヨ</el-button>
+       </el-col>
+       <el-col span="4">
+         <el-button id="searchButton" type="primary" :icon="Search">纭畾</el-button>
+       </el-col>
+     </el-row>
+   </el-form>
+   </el-card>
+ </div>
+
+</template>
+<style>
+.centered-box {
+  display: flex;
+  justify-content: center;
+  align-items: center;
+  height: 100vh;
+}
+
+.form-card {
+  width: 1000px;
+  padding: 30px 30px;
+}
+.button-row {
+  display: flex;
+  justify-content: center;
+  margin-top: 20px;
+}
+</style>
\ No newline at end of file
diff --git a/north-glass-erp/northglass-erp/src/views/mm/mainIngredient/Ingredients.vue b/north-glass-erp/northglass-erp/src/views/mm/mainIngredient/Ingredients.vue
new file mode 100644
index 0000000..91428a8
--- /dev/null
+++ b/north-glass-erp/northglass-erp/src/views/mm/mainIngredient/Ingredients.vue
@@ -0,0 +1,59 @@
+<!--  鐗╂枡璧勬枡  -->
+
+
+<script setup>
+import {ref} from "vue";
+import {ArrowLeftBold, ArrowRight, Search} from "@element-plus/icons-vue";
+import request from "@/utils/request";
+import deepClone from "@/utils/deepClone";
+import {ElMessage} from "element-plus";
+import {useRouter} from "vue-router";
+import  GlassType from '@/components/basic/product/GlassType.vue'
+
+
+const router = useRouter()
+
+</script>
+
+<template>
+  <div id="main">
+    <div id="div-title">
+      <el-breadcrumb :separator-icon="ArrowRight">
+        <el-breadcrumb-item :to="{ path: '/main/ingredients/SelectIngredients' }">浜у搧鏌ヨ</el-breadcrumb-item>
+        <el-breadcrumb-item :to="{ path: '/main/ingredients/CreateIngredients' }">鐗╂枡鏂板</el-breadcrumb-item>
+      </el-breadcrumb>
+
+    </div>
+
+    <div id="main-body">
+      <router-view  />
+    </div>
+  </div>
+</template>
+
+<style scoped>
+#main{
+  width: 100%;
+  height: 100%;
+}
+#div-title{
+  height: 5%;
+  width: 100%;
+}
+#searchButton{
+  margin-top: -5px;
+  margin-left: 1rem;
+}
+#searchButton1{
+//margin-left: 10rem;
+}
+/*main-body鏍峰紡*/
+#main-body{
+  width: 99%;
+  height: 92%;
+  margin-top: 1%;
+}
+#select{
+  margin-left:0.5rem;
+}
+</style>
\ No newline at end of file
diff --git a/north-glass-erp/northglass-erp/src/views/mm/mainIngredient/SelectIngredients.vue b/north-glass-erp/northglass-erp/src/views/mm/mainIngredient/SelectIngredients.vue
new file mode 100644
index 0000000..17b05a6
--- /dev/null
+++ b/north-glass-erp/northglass-erp/src/views/mm/mainIngredient/SelectIngredients.vue
@@ -0,0 +1,174 @@
+<!-- 鐗╂枡璧勬枡 -->
+<script lang="ts" setup>
+import { ref } from 'vue';
+const name = ref('')
+const productName = ref('')
+const salId = ref('')
+let tableData = ref([
+  {
+    "鑷簭":'1',
+    "鐗╂枡缂栫爜":'700900000000941',
+    "鐗╂枡鍚嶇О":'涓濊闃叉檼鎵嬪濂楄',
+    "浜у湴":'00',
+    "瀹藉害":'0.00',
+    "楂樺害":'0.00',
+    "鍘氬害":'0.00',
+    "鍨嬪彿":'',
+    "鎹㈢畻鐜�":'1000',
+    "鍗曚綅":'鍙�',
+    "鎹㈢畻鍗曚綅":'1',
+    "淇濊川鏈�":'12',
+    "閲嶉噺":'0.0000',
+    "鏁伴噺":'2016-10-17',
+    "搴撳瓨缁勭粐":'浜哄伐搴�',
+    "澶囨敞":'',
+  },
+  {
+    "鑷簭":'2',
+    "鐗╂枡缂栫爜":'700900000000940',
+    "鐗╂枡鍚嶇О":'鑷浣嶆寜閽紑鍏�',
+    "浜у湴":'00',
+    "瀹藉害":'0.00',
+    "楂樺害":'0.00',
+    "鍘氬害":'0.00',
+    "鍨嬪彿":'',
+    "鎹㈢畻鐜�":'1000',
+    "鍗曚綅":'浠�',
+    "鎹㈢畻鍗曚綅":'1',
+    "淇濊川鏈�":'12',
+    "閲嶉噺":'0.0000',
+    "鏁伴噺":'2016-10-17',
+    "搴撳瓨缁勭粐":'浜哄伐搴�',
+    "澶囨敞":'',
+  },
+  {
+    "鑷簭":'3',
+    "鐗╂枡缂栫爜":'700900000001189',
+    "鐗╂枡鍚嶇О":'鎴峰鏄庤闃叉按鎻掑骇',
+    "浜у湴":'00',
+    "瀹藉害":'0.00',
+    "楂樺害":'0.00',
+    "鍘氬害":'0.00',
+    "鍨嬪彿":'',
+    "鎹㈢畻鐜�":'1000',
+    "鍗曚綅":'涓�',
+    "鎹㈢畻鍗曚綅":'1',
+    "淇濊川鏈�":'12',
+    "閲嶉噺":'0.0000',
+    "鏁伴噺":'2016-10-17',
+    "搴撳瓨缁勭粐":'浜哄伐搴�',
+    "澶囨敞":'',
+  },
+  {
+    "鑷簭":'4',
+    "鐗╂枡缂栫爜":'700900000001188',
+    "鐗╂枡鍚嶇О":'骞虫澘鍦版嫋',
+    "浜у湴":'00',
+    "瀹藉害":'0.00',
+    "楂樺害":'0.00',
+    "鍘氬害":'0.00',
+    "鍨嬪彿":'',
+    "鎹㈢畻鐜�":'1000',
+    "鍗曚綅":'鎶�',
+    "鎹㈢畻鍗曚綅":'1',
+    "淇濊川鏈�":'12',
+    "閲嶉噺":'0.0000',
+    "鏁伴噺":'2016-10-17',
+    "搴撳瓨缁勭粐":'浜哄伐搴�',
+    "澶囨敞":'',
+  },
+])
+</script>
+<template>
+  <div>
+    <!-- 琛ㄥ崟寮�濮� -->
+    <div>
+      <el-form  size="medium" >
+
+<!--        <el-row gutter="5">-->
+<!--          <el-col :span="4">-->
+<!--            <el-input v-model="name" placeholder="璇疯緭鍏ョ墿鏂欑紪鐮�" style="width: 200px; height: 30px;" />-->
+<!--          </el-col>-->
+<!--          <el-col :span="4">-->
+<!--            <el-input v-model="productName" placeholder="璇疯緭鍏ョ墿鏂欏悕绉�" style="width: 200px; height: 30px;" />-->
+<!--          </el-col>-->
+<!--          <el-col :span="4">-->
+<!--            <el-input v-model="salId" placeholder="璇疯緭鍏ュ搴�" style="width: 200px; height: 30px;" />-->
+<!--          </el-col>-->
+<!--          <el-col :span="4">-->
+<!--            <el-input v-model="salId" placeholder="璇疯緭鍏ラ珮搴�" style="width: 200px; height: 30px;" />-->
+<!--          </el-col>-->
+
+<!--        </el-row>-->
+
+<!--        &lt;!&ndash; <el-form-item size="large">-->
+<!--          <el-button type="primary" @click="submitForm">鏌ヨ</el-button>-->
+<!--          <el-button @click="resetForm">閲嶇疆</el-button>-->
+<!--        </el-form-item>&ndash;&gt;-->
+<!--        <el-row gutter="5">-->
+<!--          <el-col :span="4">-->
+<!--            <el-dropdown>-->
+<!--              <el-button type="primary">-->
+<!--                璇烽�夋嫨搴撳瓨缁勭粐<el-icon class="el-icon&#45;&#45;right" style="width: 66px;"><arrow-down /></el-icon>-->
+<!--              </el-button>-->
+<!--              <template #dropdown>-->
+<!--                <el-dropdown-menu>-->
+<!--                  <el-dropdown-item>Action 1</el-dropdown-item>-->
+<!--                  <el-dropdown-item>Action 2</el-dropdown-item>-->
+<!--                  <el-dropdown-item>Action 3</el-dropdown-item>-->
+<!--                  <el-dropdown-item>Action 4</el-dropdown-item>-->
+<!--                  <el-dropdown-item>Action 5</el-dropdown-item>-->
+<!--                </el-dropdown-menu>-->
+<!--              </template>-->
+<!--            </el-dropdown>-->
+<!--          </el-col>-->
+
+<!--          <el-col :span="4">-->
+<!--            <el-input v-model="name" placeholder="璇疯緭瀹藉害" style="width: 200px; height: 30px;" />-->
+<!--          </el-col>-->
+<!--          <el-col :span="4">-->
+<!--            <el-input v-model="name" placeholder="璇疯緭鍨嬪彿" style="width: 200px; height: 30px;" />-->
+<!--          </el-col>-->
+
+<!--          <el-col :span="4">-->
+<!--            <el-button id="searchButton" type="primary" :icon="Search">鏌ヨ</el-button>-->
+<!--          </el-col>-->
+
+<!--        </el-row>-->
+      </el-form>
+    </div>
+    <!-- 琛ㄥ崟缁撴潫 -->
+    <!-- 琛ㄦ牸寮�濮� -->
+    <div>
+      <el-table :data="tableData" border style="width: 100%">
+        <el-table-column prop="鑷簭" label="鑷簭" width="180" />
+        <el-table-column prop="鐗╂枡缂栫爜" label="鐗╂枡缂栫爜" width="180" />
+        <el-table-column prop="鐗╂枡鍚嶇О" label="鐗╂枡鍚嶇О" width="180"/>
+        <el-table-column prop="浜у湴" label="浜у湴" width="180"/>
+        <el-table-column prop="瀹藉害" label="瀹藉害" width="180"/>
+        <el-table-column prop="楂樺害" label="楂樺害" width="180"/>
+        <el-table-column prop="鍘氬害" label="鍘氬害" width="180"/>
+        <el-table-column prop="鍨嬪彿" label="鍨嬪彿" width="180"/>
+        <el-table-column prop="鎹㈢畻鐜�" label="鎹㈢畻鐜�" width="180"/>
+        <el-table-column prop="鍗曚綅" label="鍗曚綅" width="180"/>
+        <el-table-column prop="鎹㈢畻鍗曚綅" label="鎹㈢畻鍗曚綅" width="180"/>
+        <el-table-column prop="淇濊川鏈�" label="淇濊川鏈�" width="180"/>
+        <el-table-column prop="閲嶉噺" label="閲嶉噺" width="180"/>
+        <el-table-column prop="鏁伴噺" label="鏁伴噺" width="180"/>
+        <el-table-column prop="搴撳瓨缁勭粐" label="搴撳瓨缁勭粐" width="180"/>
+        <el-table-column prop="澶囨敞" label="澶囨敞" width="180"/>
+        <el-table-column fixed="left" label="鎿嶄綔" width="120">
+          <template #default>
+            <el-button link type="primary" size="small" @click="handleClick"
+            >缂栬緫</el-button
+            >
+            <el-button link type="primary" size="small">鍒犻櫎</el-button>
+          </template>
+        </el-table-column>
+      </el-table>
+    </div>
+  </div>
+</template>
+
+<style>
+</style>
\ No newline at end of file
diff --git a/north-glass-erp/northglass-erp/src/views/mm/mainIngredientStock/AccessoriesMonthlySettlement.vue b/north-glass-erp/northglass-erp/src/views/mm/mainIngredientStock/AccessoriesMonthlySettlement.vue
new file mode 100644
index 0000000..5816b42
--- /dev/null
+++ b/north-glass-erp/northglass-erp/src/views/mm/mainIngredientStock/AccessoriesMonthlySettlement.vue
@@ -0,0 +1,12 @@
+<!--杈呮枡鏈堢粨-->
+
+
+<script>
+
+</script>
+<template>
+  <h1> 鏆傛棤锛屾暚璇锋湡寰� </h1>
+</template>
+<style>
+
+</style>
\ No newline at end of file
diff --git a/north-glass-erp/northglass-erp/src/views/mm/mainIngredientStock/CreateIngredientsStock.vue b/north-glass-erp/northglass-erp/src/views/mm/mainIngredientStock/CreateIngredientsStock.vue
new file mode 100644
index 0000000..041ac1c
--- /dev/null
+++ b/north-glass-erp/northglass-erp/src/views/mm/mainIngredientStock/CreateIngredientsStock.vue
@@ -0,0 +1,8 @@
+<script>
+
+</script>
+<template>
+  <h1>鏆傛棤锛屾暚璇锋湡寰�</h1></template>
+<style>
+
+</style>
\ No newline at end of file
diff --git a/north-glass-erp/northglass-erp/src/views/mm/mainIngredientStock/IngredientsStock.vue b/north-glass-erp/northglass-erp/src/views/mm/mainIngredientStock/IngredientsStock.vue
new file mode 100644
index 0000000..fd7280e
--- /dev/null
+++ b/north-glass-erp/northglass-erp/src/views/mm/mainIngredientStock/IngredientsStock.vue
@@ -0,0 +1,60 @@
+<!--  鐗╂枡搴撳瓨 -->
+
+
+<script setup>
+import {ref} from "vue";
+import {ArrowLeftBold, ArrowRight, Search} from "@element-plus/icons-vue";
+import request from "@/utils/request";
+import deepClone from "@/utils/deepClone";
+import {ElMessage} from "element-plus";
+import {useRouter} from "vue-router";
+import  GlassType from '@/components/basic/product/GlassType.vue'
+
+
+const router = useRouter()
+
+</script>
+
+<template>
+  <div id="main">
+    <div id="div-title">
+      <el-breadcrumb :separator-icon="ArrowRight">
+        <el-breadcrumb-item :to="{ path: '/main/ingredientsStock/SelectIngredientsStock' }">浜у搧鏌ヨ</el-breadcrumb-item>
+        <el-breadcrumb-item :to="{ path: '/main/ingredientsStock/OriginalMonthlySettlement' }">鍘熺墖鏈堢粨</el-breadcrumb-item>
+        <el-breadcrumb-item :to="{ path: '/main/ingredientsStock/CreateIngredientsStock' }">杈呮枡鏈堢粨</el-breadcrumb-item>
+      </el-breadcrumb>
+
+    </div>
+
+    <div id="main-body">
+      <router-view  />
+    </div>
+  </div>
+</template>
+
+<style scoped>
+#main{
+  width: 100%;
+  height: 100%;
+}
+#div-title{
+  height: 5%;
+  width: 100%;
+}
+#searchButton{
+  margin-top: -5px;
+  margin-left: 1rem;
+}
+#searchButton1{
+//margin-left: 10rem;
+}
+/*main-body鏍峰紡*/
+#main-body{
+  width: 99%;
+  height: 92%;
+  margin-top: 1%;
+}
+#select{
+  margin-left:0.5rem;
+}
+</style>
\ No newline at end of file
diff --git a/north-glass-erp/northglass-erp/src/views/mm/mainIngredientStock/OriginalMonthlySettlement.vue b/north-glass-erp/northglass-erp/src/views/mm/mainIngredientStock/OriginalMonthlySettlement.vue
new file mode 100644
index 0000000..866a79b
--- /dev/null
+++ b/north-glass-erp/northglass-erp/src/views/mm/mainIngredientStock/OriginalMonthlySettlement.vue
@@ -0,0 +1,81 @@
+<!-- 鍘熺墖鏈堢粨  -->
+
+
+<script lang="ts" setup>
+
+</script>
+<template>
+  <div>
+    <div>
+      <el-form>
+        <el-row gutter="10" >
+        <el-col :span="2.5">
+          <div class="label-text">鏌ヨ鍘熺墖鎶ヨ〃鏃ユ湡</div>
+        </el-col>
+        <el-col :span="4">
+          <el-date-picker
+              type="daterange"
+              start-placeholder="寮�濮嬫椂闂�"
+              end-placeholder="缁撴潫鏃堕棿"
+              style="width: 200px;"
+          />
+        </el-col>
+          <el-col :span="4">
+            <el-dropdown>
+              <el-button type="primary">
+                鍘熺墖<el-icon class="el-icon--right" style="width: 66px;"><arrow-down /></el-icon>
+              </el-button>
+              <template #dropdown>
+                <el-dropdown-menu>
+                  <el-dropdown-item>鍘熺墖</el-dropdown-item>
+                  <el-dropdown-item>浣欐枡</el-dropdown-item>
+                </el-dropdown-menu>
+              </template>
+            </el-dropdown>
+          </el-col>
+          <el-col :span="4">
+            <el-button id="searchButton" type="primary" :icon="Search">鏌ヨ鎶ヨ〃</el-button>
+          </el-col>
+        </el-row>
+      </el-form>
+    </div>
+    <div>
+      <div>
+        <el-table :data="tableData" border style="width: 100%">
+          <el-table-column prop="鑷簭" label="鑷簭" width="100" />
+          <el-table-column prop="鏈堜唤" label="鏈堜唤" width="100" />
+          <el-table-column prop="鍗曚綅" label="鍗曚綅" width="60"/>
+          <el-table-column prop="鐗╂枡缂栫爜" label="鐗╂枡缂栫爜" width="100"/>
+          <el-table-column prop="鐗╂枡鍚嶇О" label="鐗╂枡鍚嶇О" width="100"/>
+          <el-table-column prop="楂樺害" label="楂樺害" width="100"/>
+          <el-table-column prop="鍘氬害" label="鍘氬害" width="100"/>
+          <el-table-column prop="瀹藉害" label="瀹藉害" width="100"/>
+          <el-table-column prop="涓婃湀鏁伴噺" label="涓婃湀鏁伴噺" width="100"/>
+          <el-table-column prop="涓婃湀闈㈢Н" label="涓婃湀闈㈢Н" width="100"/>
+          <el-table-column prop="鏈湀鍏ュ簱鏁伴噺" label="鏈湀鍏ュ簱鏁伴噺" width="110"/>
+          <el-table-column prop="鏈湀鍏ュ簱闈㈢Н" label="鏈湀鍏ュ簱闈㈢Н" width="110"/>
+          <el-table-column prop="鏈湀鍑哄簱鏁伴噺" label="鏈湀鍑哄簱鏁伴噺" width="110"/>
+          <el-table-column prop="鏈湀鍑哄簱闈㈢Н" label="鏈湀鍑哄簱闈㈢Н" width="110"/>
+          <el-table-column prop="鏈湀搴撳瓨鏁伴噺" label="鏈湀搴撳瓨鏁伴噺" width="110"/>
+          <el-table-column prop="鏈湀搴撳瓨闈㈢Н" label="鏈湀搴撳瓨闈㈢Н" width="110"/>
+        </el-table>
+    </div>
+  </div>
+  </div>
+</template>
+<style>
+.centered-box {
+  display: flex;
+  justify-content: center;
+  align-items: center;
+  height: 100vh;
+}
+
+
+
+
+
+.label-text {
+  font-weight: bold;
+}
+</style>
\ No newline at end of file
diff --git a/north-glass-erp/northglass-erp/src/views/mm/mainIngredientStock/SelectIngredientsStock.vue b/north-glass-erp/northglass-erp/src/views/mm/mainIngredientStock/SelectIngredientsStock.vue
new file mode 100644
index 0000000..203d782
--- /dev/null
+++ b/north-glass-erp/northglass-erp/src/views/mm/mainIngredientStock/SelectIngredientsStock.vue
@@ -0,0 +1,277 @@
+<!-- 鐗╂枡搴撳瓨 -->
+<script lang="ts" setup>
+import { ref } from 'vue';
+const name = ref('')
+const productName = ref('')
+const salId = ref('')
+let tableData = ref([
+  {
+    "搴撳瓨缁勭粐":'浜哄伐搴�',
+    "鐗╂枡缂栫爜":'700900000000122',
+    "鐗╂枡鍚嶇О":'澶忚 鍝佺',
+    "浜у湴":'',
+    "搴撳瓨缂栧彿":'KC2006891',
+    "瀹藉害":'0.00',
+    "楂樺害":'0.00',
+    "鍘氬害":'0.00',
+    "涓诲崟浣�":'浠�',
+    "瀹夊叏搴撳瓨":'0.00',
+    "搴撳瓨鏁�":'20.00',
+    "鍙敤搴撳瓨":'',
+    "鏈鍙栨暟閲�":'',
+    "鎬婚潰绉�":'0.0000',
+    "鐢熶骇鏃ユ湡":'2016-10-17',
+    "淇濊川鏈�":'',
+    "搴撲綅缂栧彿":'',
+    "搴撳尯":'',
+    "搴撲綅":'',
+    "绉帇搴撳瓨":'40',
+    "澶囨敞":'',
+
+  },
+  {
+    "搴撳瓨缁勭粐":'浜哄伐搴�',
+    "鐗╂枡缂栫爜":'700900000000121',
+    "鐗╂枡鍚嶇О":'澶忚 娴呰摑',
+    "浜у湴":'',
+    "搴撳瓨缂栧彿":'KC2006891',
+    "瀹藉害":'0.00',
+    "楂樺害":'0.00',
+    "鍘氬害":'0.00',
+    "涓诲崟浣�":'浠�',
+    "瀹夊叏搴撳瓨":'0.00',
+    "搴撳瓨鏁�":'20.00',
+    "鍙敤搴撳瓨":'',
+    "鏈鍙栨暟閲�":'',
+    "鎬婚潰绉�":'0.0000',
+    "鐢熶骇鏃ユ湡":'2016-10-17',
+    "淇濊川鏈�":'',
+    "搴撲綅缂栧彿":'',
+    "搴撳尯":'',
+    "搴撲綅":'',
+    "绉帇搴撳瓨":'40',
+    "澶囨敞":'',
+
+  },
+  {
+    "搴撳瓨缁勭粐":'浜哄伐搴�',
+    "鐗╂枡缂栫爜":'700900000000120',
+    "鐗╂枡鍚嶇О":'澶忚 娣辫摑',
+    "浜у湴":'',
+    "搴撳瓨缂栧彿":'KC2006891',
+    "瀹藉害":'0.00',
+    "楂樺害":'0.00',
+    "鍘氬害":'0.00',
+    "涓诲崟浣�":'浠�',
+    "瀹夊叏搴撳瓨":'0.00',
+    "搴撳瓨鏁�":'20.00',
+    "鍙敤搴撳瓨":'',
+    "鏈鍙栨暟閲�":'',
+    "鎬婚潰绉�":'0.0000',
+    "鐢熶骇鏃ユ湡":'2016-10-17',
+    "淇濊川鏈�":'',
+    "搴撲綅缂栧彿":'',
+    "搴撳尯":'',
+    "搴撲綅":'',
+    "绉帇搴撳瓨":'40',
+    "澶囨敞":'',
+
+  },{
+    "搴撳瓨缁勭粐":'浜哄伐搴�',
+    "鐗╂枡缂栫爜":'700900000000119',
+    "鐗╂枡鍚嶇О":'鍐 鍝佺',
+    "浜у湴":'',
+    "搴撳瓨缂栧彿":'KC2006891',
+    "瀹藉害":'0.00',
+    "楂樺害":'0.00',
+    "鍘氬害":'0.00',
+    "涓诲崟浣�":'浠�',
+    "瀹夊叏搴撳瓨":'0.00',
+    "搴撳瓨鏁�":'20.00',
+    "鍙敤搴撳瓨":'',
+    "鏈鍙栨暟閲�":'',
+    "鎬婚潰绉�":'0.0000',
+    "鐢熶骇鏃ユ湡":'2016-10-17',
+    "淇濊川鏈�":'',
+    "搴撲綅缂栧彿":'',
+    "搴撳尯":'',
+    "搴撲綅":'',
+    "绉帇搴撳瓨":'40',
+    "澶囨敞":'',
+
+  },{
+    "搴撳瓨缁勭粐":'浜哄伐搴�',
+    "鐗╂枡缂栫爜":'700900000000118',
+    "鐗╂枡鍚嶇О":'鍐 娣辫摑',
+    "浜у湴":'',
+    "搴撳瓨缂栧彿":'KC2006891',
+    "瀹藉害":'0.00',
+    "楂樺害":'0.00',
+    "鍘氬害":'0.00',
+    "涓诲崟浣�":'浠�',
+    "瀹夊叏搴撳瓨":'0.00',
+    "搴撳瓨鏁�":'20.00',
+    "鍙敤搴撳瓨":'',
+    "鏈鍙栨暟閲�":'',
+    "鎬婚潰绉�":'0.0000',
+    "鐢熶骇鏃ユ湡":'2016-10-17',
+    "淇濊川鏈�":'',
+    "搴撲綅缂栧彿":'',
+    "搴撳尯":'',
+    "搴撲綅":'',
+    "绉帇搴撳瓨":'40',
+    "澶囨敞":'',
+
+  },{
+    "搴撳瓨缁勭粐":'浜哄伐搴�',
+    "鐗╂枡缂栫爜":'700900000000117',
+    "鐗╂枡鍚嶇О":'鑸悐瀹氭湡淇濆吇鍗�',
+    "浜у湴":'',
+    "搴撳瓨缂栧彿":'KC2006891',
+    "瀹藉害":'0.00',
+    "楂樺害":'0.00',
+    "鍘氬害":'0.00',
+    "涓诲崟浣�":'浠�',
+    "瀹夊叏搴撳瓨":'0.00',
+    "搴撳瓨鏁�":'20.00',
+    "鍙敤搴撳瓨":'',
+    "鏈鍙栨暟閲�":'',
+    "鎬婚潰绉�":'0.0000',
+    "鐢熶骇鏃ユ湡":'2016-10-17',
+    "淇濊川鏈�":'',
+    "搴撲綅缂栧彿":'',
+    "搴撳尯":'',
+    "搴撲綅":'',
+    "绉帇搴撳瓨":'40',
+    "澶囨敞":'',
+
+  },{
+    "搴撳瓨缁勭粐":'浜哄伐搴�',
+    "鐗╂枡缂栫爜":'700900000000116',
+    "鐗╂枡鍚嶇О":'鍐165',
+    "浜у湴":'',
+    "搴撳瓨缂栧彿":'KC2006891',
+    "瀹藉害":'0.00',
+    "楂樺害":'0.00',
+    "鍘氬害":'0.00',
+    "涓诲崟浣�":'浠�',
+    "瀹夊叏搴撳瓨":'0.00',
+    "搴撳瓨鏁�":'20.00',
+    "鍙敤搴撳瓨":'',
+    "鏈鍙栨暟閲�":'',
+    "鎬婚潰绉�":'0.0000',
+    "鐢熶骇鏃ユ湡":'2016-10-17',
+    "淇濊川鏈�":'',
+    "搴撲綅缂栧彿":'',
+    "搴撳尯":'',
+    "搴撲綅":'',
+    "绉帇搴撳瓨":'40',
+    "澶囨敞":'',
+
+  },{
+    "搴撳瓨缁勭粐":'浜哄伐搴�',
+    "鐗╂枡缂栫爜":'700900000000115',
+    "鐗╂枡鍚嶇О":'鍐170',
+    "浜у湴":'',
+    "搴撳瓨缂栧彿":'KC2006891',
+    "瀹藉害":'0.00',
+    "楂樺害":'0.00',
+    "鍘氬害":'0.00',
+    "涓诲崟浣�":'浠�',
+    "瀹夊叏搴撳瓨":'0.00',
+    "搴撳瓨鏁�":'20.00',
+    "鍙敤搴撳瓨":'',
+    "鏈鍙栨暟閲�":'',
+    "鎬婚潰绉�":'0.0000',
+    "鐢熶骇鏃ユ湡":'2016-10-17',
+    "淇濊川鏈�":'',
+    "搴撲綅缂栧彿":'',
+    "搴撳尯":'',
+    "搴撲綅":'',
+    "绉帇搴撳瓨":'40',
+    "澶囨敞":'',
+
+  },
+])
+</script>
+<template>
+  <div>
+    <div>
+      <el-form  size="medium" >
+
+<!--        <el-row gutter="5">-->
+<!--          <el-col :span="4">-->
+<!--            <el-input v-model="name" placeholder="璇疯緭鍏ョ墿鏂欑紪鐮�" style="width: 200px; height: 30px;" />-->
+<!--          </el-col>-->
+<!--          <el-col :span="4">-->
+<!--            <el-input v-model="productName" placeholder="璇疯緭鍏ュ" style="width: 200px; height: 30px;" />-->
+<!--          </el-col>-->
+<!--          <el-col :span="4">-->
+<!--            <el-input v-model="salId" placeholder="璇疯緭鍏ラ珮" style="width: 200px; height: 30px;" />-->
+<!--          </el-col>-->
+<!--          <el-col :span="4">-->
+<!--            <el-input v-model="name" placeholder="璇疯緭鍏ョ墿鏂欏悕绉�" style="width: 200px; height: 30px;" />-->
+<!--          </el-col>-->
+<!--          <el-col span="4">-->
+<!--            <el-button id="searchWarehousing" type="primary" :icon="Search1">绾胯竟浠撳偍鏌ヨ</el-button>-->
+<!--          </el-col>-->
+<!--          <el-col span="4">-->
+<!--            <el-button id="searchButton" type="primary" :icon="Search">鏌ヨ</el-button>-->
+<!--          </el-col>-->
+
+<!--        </el-row>-->
+
+        <!-- <el-form-item size="large">
+          <el-button type="primary" @click="submitForm">鏌ヨ</el-button>
+          <el-button @click="resetForm">閲嶇疆</el-button>
+        </el-form-item>-->
+        <el-row gutter="5">
+
+          <el-col :span="4">
+
+          </el-col>
+
+        </el-row>
+      </el-form>
+    </div>
+
+    <!-- 琛ㄦ牸寮�濮� -->
+    <div>
+      <el-table :data="tableData" border style="width: 100%">
+        <el-table-column prop="搴撳瓨缁勭粐" label="搴撳瓨缁勭粐" width="180" />
+        <el-table-column prop="鐗╂枡缂栫爜" label="鐗╂枡缂栫爜" width="180" />
+        <el-table-column prop="鐗╂枡鍚嶇О" label="鐗╂枡鍚嶇О" width="180"/>
+        <el-table-column prop="浜у湴" label="浜у湴" width="180"/>
+        <el-table-column prop="瀹藉害" label="瀹藉害" width="180"/>
+        <el-table-column prop="楂樺害" label="楂樺害" width="180"/>
+        <el-table-column prop="鍘氬害" label="鍘氬害" width="180"/>
+        <el-table-column prop="涓诲崟浣�" label="涓诲崟浣�" width="180"/>
+        <el-table-column prop="瀹夊叏搴撳瓨" label="瀹夊叏搴撳瓨" width="180"/>
+        <el-table-column prop="搴撳瓨鏁�" label="搴撳瓨鏁�" width="180"/>
+        <el-table-column prop="鍙敤搴撳瓨" label="鍙敤搴撳瓨" width="180"/>
+        <el-table-column prop="鏈鍙栨暟閲�" label="鏈鍙栨暟閲�" width="180"/>
+        <el-table-column prop="鎬婚潰绉�" label="鎬婚潰绉�" width="180"/>
+        <el-table-column prop="鐢熶骇鏃ユ湡" label="鐢熶骇鏃ユ湡" width="180"/>
+        <el-table-column prop="淇濊川鏈�" label="淇濊川鏈�" width="180"/>
+        <el-table-column prop="搴撲綅缂栧彿" label="搴撲綅缂栧彿" width="180"/>
+        <el-table-column prop="搴撳尯" label="搴撳尯" width="180"/>
+        <el-table-column prop="搴撲綅" label="搴撲綅" width="180"/>
+        <el-table-column prop="绉帇搴撳瓨" label="绉帇搴撳瓨" width="180"/>
+        <el-table-column prop="澶囨敞" label="澶囨敞" width="180"/>
+        <el-table-column fixed="left" label="鎿嶄綔" width="120">
+          <template #default>
+            <el-button link type="primary" size="small" @click="handleClick"
+            >淇敼</el-button
+            >
+            <el-button link type="primary" size="small">瀹℃牳</el-button>
+          </template>
+        </el-table-column>
+
+      </el-table>
+    </div>
+    <!-- 琛ㄦ牸缁撴潫 -->
+  </div>
+</template>
+
+<style>
+</style>
\ No newline at end of file
diff --git a/north-glass-erp/northglass-erp/src/views/mm/mainProductStock/CreateProductStock.vue b/north-glass-erp/northglass-erp/src/views/mm/mainProductStock/CreateProductStock.vue
new file mode 100644
index 0000000..2acc341
--- /dev/null
+++ b/north-glass-erp/northglass-erp/src/views/mm/mainProductStock/CreateProductStock.vue
@@ -0,0 +1,156 @@
+<!--浜у搧鍏ュ簱-->
+
+
+<script lang="ts" setup>
+import {ref} from "vue";
+let tableData = ref([
+  {
+    "閿�鍞崟鍙�":'NG23072003',
+    "妤煎眰缂栧彿":'10059419',
+    "鎴愬搧缂栧彿":'0604000027',
+    "鎴愬搧鍚嶇О":'NG23072003A01',
+    "浜у搧鍚嶇О":'',
+    "闀�":'1075.00',
+    "瀹�":'440.00',
+    "涓氬姟鍛�":'闄堝畻鍑�',
+    "瀹㈡埛鍚嶇О":'71',
+    "椤圭洰鍚嶇О":'閽㈠寲鐜荤拑',
+    "璁㈠簭":'1',
+    "璁㈠崟鎬绘暟":'3800',
+    "鏁伴噺":'1140',
+    "瀹屽伐":'1140',
+    "闈㈢Н":'505.270000',
+    "娴佺▼鍗″彿":'NG23112311A01',
+    "宸插叆鏁伴噺":'0',
+    "涓嬪伐搴�":'鎴愬搧',
+    "鎵规":'',
+  },{
+    "閿�鍞崟鍙�":'NG23072003',
+    "妤煎眰缂栧彿":'10059419',
+    "鎴愬搧缂栧彿":'0604000027',
+    "鎴愬搧鍚嶇О":'NG23072003A01',
+    "浜у搧鍚嶇О":'',
+    "闀�":'1075.00',
+    "瀹�":'440.00',
+    "涓氬姟鍛�":'闄堝畻鍑�',
+    "瀹㈡埛鍚嶇О":'71',
+    "椤圭洰鍚嶇О":'閽㈠寲鐜荤拑',
+    "璁㈠簭":'1',
+    "璁㈠崟鎬绘暟":'3800',
+    "鏁伴噺":'1140',
+    "瀹屽伐":'1140',
+    "闈㈢Н":'505.270000',
+    "娴佺▼鍗″彿":'NG23112311A01',
+    "宸插叆鏁伴噺":'0',
+    "涓嬪伐搴�":'鎴愬搧',
+    "鎵规":'',
+  },{
+    "閿�鍞崟鍙�":'NG23072003',
+    "妤煎眰缂栧彿":'10059419',
+    "鎴愬搧缂栧彿":'0604000027',
+    "鎴愬搧鍚嶇О":'NG23072003A01',
+    "浜у搧鍚嶇О":'',
+    "闀�":'1075.00',
+    "瀹�":'440.00',
+    "涓氬姟鍛�":'闄堝畻鍑�',
+    "瀹㈡埛鍚嶇О":'71',
+    "椤圭洰鍚嶇О":'閽㈠寲鐜荤拑',
+    "璁㈠簭":'1',
+    "璁㈠崟鎬绘暟":'3800',
+    "鏁伴噺":'1140',
+    "瀹屽伐":'1140',
+    "闈㈢Н":'505.270000',
+    "娴佺▼鍗″彿":'NG23112311A01',
+    "宸插叆鏁伴噺":'0',
+    "涓嬪伐搴�":'鎴愬搧',
+    "鎵规":'',
+  },{
+    "閿�鍞崟鍙�":'NG23072003',
+    "妤煎眰缂栧彿":'10059419',
+    "鎴愬搧缂栧彿":'0604000027',
+    "鎴愬搧鍚嶇О":'NG23072003A01',
+    "浜у搧鍚嶇О":'',
+    "闀�":'1075.00',
+    "瀹�":'440.00',
+    "涓氬姟鍛�":'闄堝畻鍑�',
+    "瀹㈡埛鍚嶇О":'71',
+    "椤圭洰鍚嶇О":'閽㈠寲鐜荤拑',
+    "璁㈠簭":'1',
+    "璁㈠崟鎬绘暟":'3800',
+    "鏁伴噺":'1140',
+    "瀹屽伐":'1140',
+    "闈㈢Н":'505.270000',
+    "娴佺▼鍗″彿":'NG23112311A01',
+    "宸插叆鏁伴噺":'0',
+    "涓嬪伐搴�":'鎴愬搧',
+    "鎵规":'',
+  },
+])
+const checked1 = ref(true)
+</script>
+<template>
+<div>
+  <div>
+    <el-form  size="medium" >
+
+<!--      <el-row gutter="7">-->
+<!--        <el-col :span="4">-->
+<!--          <el-input v-model="name" placeholder="閿�鍞崟鍙�" style="width: 200px; height: 30px;" />-->
+<!--        </el-col>-->
+<!--        <el-col :span="4">-->
+<!--          <el-input v-model="productName" placeholder="娴佺▼鍗″彿" style="width: 200px; height: 30px;" />-->
+<!--        </el-col>-->
+<!--        <el-col :span="4">-->
+<!--          <el-input v-model="salId" placeholder="璁㈠簭" style="width: 200px; height: 30px;" />-->
+<!--        </el-col>-->
+
+<!--        <el-col :span="4">-->
+<!--          <el-button id="searchButton" type="primary" :icon="Search" style="width: 100px; height: 25px">鏌ヨ</el-button>-->
+<!--        </el-col>-->
+<!--      </el-row>-->
+      <el-row gutter="7">
+        <el-col :span="4">
+          <el-input v-model="name" placeholder="鍒跺崟鍛�" style="width: 200px; height: 30px;" />
+        </el-col>
+        <el-col :span="4">
+          <el-input v-model="productName" placeholder="宸ュ彿" style="width: 200px; height: 30px;" />
+        </el-col>
+        <el-col :span="4">
+          <el-input v-model="salId" placeholder="搴撲綅" style="width: 200px; height: 30px;" />
+        </el-col>
+
+        <el-col :span="4">
+          <el-button id="searchButton" type="primary" :icon="Search" style="width: 100px; height: 25px">纭畾</el-button>
+        </el-col>
+      </el-row>
+    </el-form>
+    <div>
+      <el-table :data="tableData" border style="width: 100%">
+        <el-table-column prop="閿�鍞崟鍙�" label="閿�鍞崟鍙�" width="100" />
+        <el-table-column prop="妤煎眰缂栧彿" label="妤煎眰缂栧彿" width="100" />
+        <el-table-column prop="鎴愬搧缂栧彿" label="鎴愬搧缂栧彿" width="100"/>
+        <el-table-column prop="鎴愬搧鍚嶇О" label="鎴愬搧鍚嶇О" width="180"/>
+        <el-table-column prop="闀�" label="闀�" width="80"/>
+        <el-table-column prop="瀹�" label="瀹�" width="80"/>
+        <el-table-column prop="涓氬姟鍛�" label="涓氬姟鍛�" width="100"/>
+        <el-table-column prop="瀹㈡埛鍚嶇О" label="瀹㈡埛鍚嶇О" width="100"/>
+        <el-table-column prop="椤圭洰鍚嶇О" label="椤圭洰鍚嶇О" width="180"/>
+        <el-table-column prop="璁㈠簭" label="璁㈠簭" width="80"/>
+        <el-table-column prop="璁㈠崟鎬绘暟" label="璁㈠崟鎬绘暟" width="100"/>
+        <el-table-column prop="鏁伴噺" label="鏁伴噺" width="80"/>
+        <el-table-column prop="瀹屽伐" label="瀹屽伐" width="80"/>
+        <el-table-column prop="闈㈢Н" label="闈㈢Н" width="80"/>
+        <el-table-column prop="娴佺▼鍗″彿" label="娴佺▼鍗″彿" width="100"/>
+        <el-table-column prop="宸插叆鏁伴噺" label="宸插叆鏁伴噺" width="100"/>
+        <el-table-column prop="涓嬪伐搴�" label="涓嬪伐搴�" width="80"/>
+        <el-table-column prop="鎵规" label="鎵规" width="80"/>
+        <el-table-column prop="閫夋嫨" label="閫夋嫨"  type="selection" width="80"/>
+
+      </el-table>
+    </div>
+  </div>
+</div>
+</template>
+<style>
+
+</style>
\ No newline at end of file
diff --git a/north-glass-erp/northglass-erp/src/views/mm/mainProductStock/FinishedGoodsIssue.vue b/north-glass-erp/northglass-erp/src/views/mm/mainProductStock/FinishedGoodsIssue.vue
new file mode 100644
index 0000000..93b82a8
--- /dev/null
+++ b/north-glass-erp/northglass-erp/src/views/mm/mainProductStock/FinishedGoodsIssue.vue
@@ -0,0 +1,119 @@
+<!-- 鎴愬搧棰嗗嚭 -->
+
+
+<script lang="ts" setup>
+import {ref} from "vue";
+
+let tableData = ref([
+  {
+    "閿�鍞崟鍙�":'NG23121309',
+    "椤圭洰鍚嶇О":'閽㈠寲鐜荤拑',
+    "瀹㈡埛缂栧彿":'89',
+    "瀹㈡埛鍚嶇О":'',
+    "娴佺▼鍗″彿":'NG23121309A01',
+    "鎴愬搧缂栧彿":'0604000299',
+    "绠辨灦鍙�":'0',
+    "鎴愬搧鍚嶇О":'3.2mm鎷卞舰閽㈠寲鐜荤拑',
+    "闀�":'1610.00',
+    "瀹�":'520.00',
+    "鍘�":'3.20',
+    "鏁伴噺":'122.00',
+    "鍗曠墖闈㈢Н":'0.8372',
+    "鎬婚潰绉�":'102.1384',
+    "搴撳尯":'搴撳尯',
+    "搴撲綅":'0',
+  },  {
+    "閿�鍞崟鍙�":'NG23121309',
+    "椤圭洰鍚嶇О":'閽㈠寲鐜荤拑',
+    "瀹㈡埛缂栧彿":'89',
+    "瀹㈡埛鍚嶇О":'',
+    "娴佺▼鍗″彿":'NG23121309A01',
+    "鎴愬搧缂栧彿":'0604000299',
+    "绠辨灦鍙�":'0',
+    "鎴愬搧鍚嶇О":'3.2mm鎷卞舰閽㈠寲鐜荤拑',
+    "闀�":'1610.00',
+    "瀹�":'520.00',
+    "鍘�":'3.20',
+    "鏁伴噺":'122.00',
+    "鍗曠墖闈㈢Н":'0.8372',
+    "鎬婚潰绉�":'102.1384',
+    "搴撳尯":'搴撳尯',
+    "搴撲綅":'0',
+  },
+  {
+    "閿�鍞崟鍙�":'NG23121309',
+    "椤圭洰鍚嶇О":'閽㈠寲鐜荤拑',
+    "瀹㈡埛缂栧彿":'89',
+    "瀹㈡埛鍚嶇О":'',
+    "娴佺▼鍗″彿":'NG23121309A01',
+    "鎴愬搧缂栧彿":'0604000299',
+    "绠辨灦鍙�":'0',
+    "鎴愬搧鍚嶇О":'3.2mm鎷卞舰閽㈠寲鐜荤拑',
+    "闀�":'1610.00',
+    "瀹�":'520.00',
+    "鍘�":'3.20',
+    "鏁伴噺":'122.00',
+    "鍗曠墖闈㈢Н":'0.8372',
+    "鎬婚潰绉�":'102.1384',
+    "搴撳尯":'搴撳尯',
+    "搴撲綅":'0',
+  },
+])
+</script>
+<template>
+  <div>
+    <div>
+      <el-form  size="medium" >
+
+        <el-row gutter="5">
+<!--          <el-col :span="4">-->
+<!--            <el-input v-model="name" placeholder="璇疯緭瀹㈡埛鍚嶇О" style="width: 200px; height: 30px;" />-->
+<!--          </el-col>-->
+<!--          <el-col :span="4">-->
+<!--            <el-input v-model="name" placeholder="璇疯緭椤圭洰鍚嶇О" style="width: 200px; height: 30px;" />-->
+<!--          </el-col>-->
+<!--          <el-col :span="4">-->
+<!--            <el-input v-model="name" placeholder="璇疯緭閿�鍞崟鍙�" style="width: 200px; height: 30px;" />-->
+<!--          </el-col>-->
+          <el-col :span="2.5">
+            <el-button id="searchButton" type="primary" :icon="Search">棰嗗嚭璁板綍</el-button>
+          </el-col>
+          <el-col :span="4">
+            <el-button id="searchButton" type="primary" :icon="Search">鏌ヨ</el-button>
+          </el-col>
+
+        </el-row>
+      </el-form>
+    </div>
+    <div>
+      <el-table :data="tableData" border style="width: 100%;">
+        <el-table-column prop="閿�鍞崟鍙�" label="閿�鍞崟鍙�" width="180" style="text-align: center"/>
+        <el-table-column prop="椤圭洰鍚嶇О" label="椤圭洰鍚嶇О" width="180" />
+        <el-table-column prop="瀹㈡埛缂栧彿" label="瀹㈡埛缂栧彿" width="180"/>
+        <el-table-column prop="瀹㈡埛鍚嶇О" label="瀹㈡埛鍚嶇О" width="180"/>
+        <el-table-column prop="娴佺▼鍗″彿" label="娴佺▼鍗″彿" width="180"/>
+        <el-table-column prop="鎴愬搧缂栧彿" label="鎴愬搧缂栧彿" width="180"/>
+        <el-table-column prop="绠辨灦鍙�" label="绠辨灦鍙�" width="180"/>
+        <el-table-column prop="鎴愬搧鍚嶇О" label="鎴愬搧鍚嶇О" width="180"/>
+        <el-table-column prop="闀�" label="闀�" width="180"/>
+        <el-table-column prop="瀹�" label="瀹�" width="180"/>
+        <el-table-column prop="鍘�" label="鍘�" width="180"/>
+        <el-table-column prop="鏁伴噺" label="鏁伴噺" width="180"/>
+        <el-table-column prop="鍗曠墖闈㈢Н" label="鍗曠墖闈㈢Н" width="180"/>
+        <el-table-column prop="鎬婚潰绉�" label="鎬婚潰绉�" width="180"/>
+        <el-table-column prop="搴撳尯" label="搴撳尯" width="180"/>
+        <el-table-column prop="搴撲綅" label="搴撲綅" width="180"/>
+        <el-table-column fixed="left" label="鎿嶄綔" width="80">
+          <template #default>
+            <el-button link type="primary" size="small" @click="handleClick(row)"
+            >缂栬緫</el-button>
+
+          </template>
+        </el-table-column>
+      </el-table>
+    </div>
+  </div>
+</template>
+<style>
+
+</style>
\ No newline at end of file
diff --git a/north-glass-erp/northglass-erp/src/views/mm/mainProductStock/FinishedProductOut.vue b/north-glass-erp/northglass-erp/src/views/mm/mainProductStock/FinishedProductOut.vue
new file mode 100644
index 0000000..15d4193
--- /dev/null
+++ b/north-glass-erp/northglass-erp/src/views/mm/mainProductStock/FinishedProductOut.vue
@@ -0,0 +1,200 @@
+<!--鎴愬搧鍑哄簱-->
+
+<script lang="ts" setup>
+import {ref} from "vue";
+import {Search} from "@element-plus/icons-vue";
+import {defineComponent} from "vue";
+
+
+
+
+let tableData = ref([
+  {
+    "閫佽揣鍗曞彿":'JG23121112',
+    "閿�鍞崟鍙�":'NG23120610',
+    "瀹㈡埛鍚嶇О":'涓北甯傛í鏍忛晣鐜収鐏グ鍘�',
+    "椤圭洰鍚嶇О":'閽㈠寲闀�',
+    "涓氬姟鍛�":'鐜嬭壇',
+    "璁㈠簭":'1',
+    "妤煎眰缂栧彿":'813404',
+    "璁㈠崟鏁�":'346',
+    "闀�":'813.00',
+    "瀹�":'404.00',
+    "鍘氬害":'4.00',
+    "鎬绘暟閲�":'176.00',
+    "鎬婚潰绉�":'58.0800',
+    "绠卞彿":'',
+    "鎶ヨ〃鏃ユ湡":'2023-23-13',
+    "鎴愬搧缂栧彿":'0601000622',
+    "鎴愬搧鍚嶇О":'4mm鏂瑰舰閽㈠寲闀�',
+    "鏁伴噺":'176',
+    "鐘舵��":'宸插嚭搴�',
+    "澶囨敞":'',
+  }, {
+    "閫佽揣鍗曞彿":'JG23121112',
+    "閿�鍞崟鍙�":'NG23120610',
+    "瀹㈡埛鍚嶇О":'涓北甯傛í鏍忛晣鐜収鐏グ鍘�',
+    "椤圭洰鍚嶇О":'閽㈠寲闀�',
+    "涓氬姟鍛�":'鐜嬭壇',
+    "璁㈠簭":'1',
+    "妤煎眰缂栧彿":'813404',
+    "璁㈠崟鏁�":'346',
+    "闀�":'813.00',
+    "瀹�":'404.00',
+    "鍘氬害":'4.00',
+    "鎬绘暟閲�":'176.00',
+    "鎬婚潰绉�":'58.0800',
+    "绠卞彿":'',
+    "鎶ヨ〃鏃ユ湡":'2023-23-13',
+    "鎴愬搧缂栧彿":'0601000622',
+    "鎴愬搧鍚嶇О":'4mm鏂瑰舰閽㈠寲闀�',
+    "鏁伴噺":'176',
+    "鐘舵��":'宸插嚭搴�',
+    "澶囨敞":'',
+  }, {
+    "閫佽揣鍗曞彿":'JG23121112',
+    "閿�鍞崟鍙�":'NG23120610',
+    "瀹㈡埛鍚嶇О":'涓北甯傛í鏍忛晣鐜収鐏グ鍘�',
+    "椤圭洰鍚嶇О":'閽㈠寲闀�',
+    "涓氬姟鍛�":'鐜嬭壇',
+    "璁㈠簭":'1',
+    "妤煎眰缂栧彿":'813404',
+    "璁㈠崟鏁�":'346',
+    "闀�":'813.00',
+    "瀹�":'404.00',
+    "鍘氬害":'4.00',
+    "鎬绘暟閲�":'176.00',
+    "鎬婚潰绉�":'58.0800',
+    "绠卞彿":'',
+    "鎶ヨ〃鏃ユ湡":'2023-23-13',
+    "鎴愬搧缂栧彿":'0601000622',
+    "鎴愬搧鍚嶇О":'4mm鏂瑰舰閽㈠寲闀�',
+    "鏁伴噺":'176',
+    "鐘舵��":'宸插嚭搴�',
+    "澶囨敞":'',
+  }, {
+    "閫佽揣鍗曞彿":'JG23121112',
+    "閿�鍞崟鍙�":'NG23120610',
+    "瀹㈡埛鍚嶇О":'涓北甯傛í鏍忛晣鐜収鐏グ鍘�',
+    "椤圭洰鍚嶇О":'閽㈠寲闀�',
+    "涓氬姟鍛�":'鐜嬭壇',
+    "璁㈠簭":'1',
+    "妤煎眰缂栧彿":'813404',
+    "璁㈠崟鏁�":'346',
+    "闀�":'813.00',
+    "瀹�":'404.00',
+    "鍘氬害":'4.00',
+    "鎬绘暟閲�":'176.00',
+    "鎬婚潰绉�":'58.0800',
+    "绠卞彿":'',
+    "鎶ヨ〃鏃ユ湡":'2023-23-13',
+    "鎴愬搧缂栧彿":'0601000622',
+    "鎴愬搧鍚嶇О":'4mm鏂瑰舰閽㈠寲闀�',
+    "鏁伴噺":'176',
+    "鐘舵��":'宸插嚭搴�',
+    "澶囨敞":'',
+  }, {
+    "閫佽揣鍗曞彿":'JG23121112',
+    "閿�鍞崟鍙�":'NG23120610',
+    "瀹㈡埛鍚嶇О":'涓北甯傛í鏍忛晣鐜収鐏グ鍘�',
+    "椤圭洰鍚嶇О":'閽㈠寲闀�',
+    "涓氬姟鍛�":'鐜嬭壇',
+    "璁㈠簭":'1',
+    "妤煎眰缂栧彿":'813404',
+    "璁㈠崟鏁�":'346',
+    "闀�":'813.00',
+    "瀹�":'404.00',
+    "鍘氬害":'4.00',
+    "鎬绘暟閲�":'176.00',
+    "鎬婚潰绉�":'58.0800',
+    "绠卞彿":'',
+    "鎶ヨ〃鏃ユ湡":'2023-23-13',
+    "鎴愬搧缂栧彿":'0601000622',
+    "鎴愬搧鍚嶇О":'4mm鏂瑰舰閽㈠寲闀�',
+    "鏁伴噺":'176',
+    "鐘舵��":'宸插嚭搴�',
+    "澶囨敞":'',
+  }, {
+    "閫佽揣鍗曞彿":'JG23121112',
+    "閿�鍞崟鍙�":'NG23120610',
+    "瀹㈡埛鍚嶇О":'涓北甯傛í鏍忛晣鐜収鐏グ鍘�',
+    "椤圭洰鍚嶇О":'閽㈠寲闀�',
+    "涓氬姟鍛�":'鐜嬭壇',
+    "璁㈠簭":'1',
+    "妤煎眰缂栧彿":'813404',
+    "璁㈠崟鏁�":'346',
+    "闀�":'813.00',
+    "瀹�":'404.00',
+    "鍘氬害":'4.00',
+    "鎬绘暟閲�":'176.00',
+    "鎬婚潰绉�":'58.0800',
+    "绠卞彿":'',
+    "鎶ヨ〃鏃ユ湡":'2023-23-13',
+    "鎴愬搧缂栧彿":'0601000622',
+    "鎴愬搧鍚嶇О":'4mm鏂瑰舰閽㈠寲闀�',
+    "鏁伴噺":'176',
+    "鐘舵��":'宸插嚭搴�',
+    "澶囨敞":'',
+  },
+
+]);
+
+</script>
+<template>
+  <div>
+    <div>
+      <el-form  size="medium" >
+
+        <el-row gutter="7">
+<!--          <el-col :span="4">-->
+<!--            <el-input v-model="name" placeholder="閿�鍞崟鍙�" style="width: 200px; height: 30px;" />-->
+<!--          </el-col>-->
+<!--          <el-col :span="4">-->
+<!--            <el-input v-model="productName" placeholder="閫佽揣鍗曞彿" style="width: 200px; height: 30px;" />-->
+<!--          </el-col>-->
+<!--          <el-col :span="4">-->
+<!--            <el-input v-model="salId" placeholder="瀹㈡埛鍚嶇О" style="width: 200px; height: 30px;" />-->
+<!--          </el-col>-->
+<!--          <el-col :span="2">-->
+<!--            <el-button id="searchButton" type="primary" :icon="Search" style="width: 100px; height: 25px">瀵煎嚭</el-button>-->
+<!--          </el-col>-->
+<!--          <el-col :span="4">-->
+<!--            <el-button id="searchButton" type="primary" :icon="Search" style="width: 100px; height: 25px">鏌ヨ</el-button>-->
+<!--          </el-col>-->
+          <el-col :span="4">
+            <el-button id="searchButton" type="primary" :icon="Search" style="width: 100px; height: 25px">纭畾</el-button>
+          </el-col>
+        </el-row>
+
+      </el-form>
+      <div>
+        <el-table :data="tableData" border style="width: 100%">
+          <el-table-column prop="閫佽揣鍗曞彿" label="閫佽揣鍗曞彿" width="100" />
+          <el-table-column prop="閿�鍞崟鍙�" label="閿�鍞崟鍙�" width="120" />
+          <el-table-column prop="瀹㈡埛鍚嶇О" label="瀹㈡埛鍚嶇О" width="180"/>
+          <el-table-column prop="椤圭洰鍚嶇О" label="椤圭洰鍚嶇О" width="100"/>
+          <el-table-column prop="涓氬姟鍛�" label="涓氬姟鍛�" width="80"/>
+          <el-table-column prop="璁㈠簭" label="璁㈠簭" width="80"/>
+          <el-table-column prop="妤煎眰缂栧彿" label="妤煎眰缂栧彿" width="100"/>
+          <el-table-column prop="璁㈠崟鏁�" label="璁㈠崟鏁�" width="100"/>
+          <el-table-column prop="闀�" label="闀�" width="180"/>
+          <el-table-column prop="瀹�" label="瀹�" width="80"/>
+          <el-table-column prop="鍘氬害" label="鍘氬害" width="100"/>
+          <el-table-column prop="鎬绘暟閲�" label="鎬绘暟閲�" width="80"/>
+          <el-table-column prop="绠卞彿" label="绠卞彿" width="80"/>
+          <el-table-column prop="鎬婚潰绉�" label="鎬婚潰绉�" width="80"/>
+          <el-table-column prop="鎶ヨ〃鏃ユ湡" label="鎶ヨ〃鏃ユ湡" width="100"/>
+          <el-table-column prop="鎴愬搧缂栧彿" label="鎴愬搧缂栧彿" width="120"/>
+          <el-table-column prop="鎴愬搧鍚嶇О" label="鎴愬搧鍚嶇О" width="130"/>
+          <el-table-column prop="鏁伴噺" label="鏁伴噺" width="80"/>
+          <el-table-column prop="鐘舵��" label="鐘舵��" width="80"/>
+          <el-table-column prop="澶囨敞" label="澶囨敞" width="80"/>
+          <el-table-column prop="閫夋嫨" label="閫夋嫨" type="selection"  width="80"/>
+        </el-table>
+      </div>
+    </div>
+  </div>
+</template>
+<style>
+
+</style>
\ No newline at end of file
diff --git a/north-glass-erp/northglass-erp/src/views/mm/mainProductStock/FinishedProductReturn.vue b/north-glass-erp/northglass-erp/src/views/mm/mainProductStock/FinishedProductReturn.vue
new file mode 100644
index 0000000..b50564f
--- /dev/null
+++ b/north-glass-erp/northglass-erp/src/views/mm/mainProductStock/FinishedProductReturn.vue
@@ -0,0 +1,87 @@
+<!-- 鎴愬搧閫�璐� -->
+
+<script lang="ts" setup>
+import {ref} from "vue";
+let tableData = ref([
+  {
+    "閫�璐у崟鍙�":'TH23113001',
+    "閿�鍞崟鍙�":'NG23112209',
+    "鍙戣揣鍗曞彿":'JG23112209',
+    "瀹㈡埛鍚嶇О":'79',
+    "椤圭洰鍚嶇О":'楂樻�ц兘鐜繚闀�',
+    "浜у搧鍚嶇О":'4mm楂樻�ц兘鐜繚闀�',
+    "閫�璐ф暟閲�":'367',
+    "涓氬姟鍛�":'姣涘崼',
+    "鍒跺崟鏃ユ湡":'23-11-30 00:00:00',
+    "澶囨敞":'',
+  },
+  {
+    "閫�璐у崟鍙�":'TH23113001',
+    "閿�鍞崟鍙�":'NG23112209',
+    "鍙戣揣鍗曞彿":'JG23112209',
+    "瀹㈡埛鍚嶇О":'79',
+    "椤圭洰鍚嶇О":'楂樻�ц兘鐜繚闀�',
+    "浜у搧鍚嶇О":'4mm楂樻�ц兘鐜繚闀�',
+    "閫�璐ф暟閲�":'367',
+    "涓氬姟鍛�":'姣涘崼',
+    "鍒跺崟鏃ユ湡":'23-11-30 00:00:00',
+    "澶囨敞":'',
+  },
+  {
+    "閫�璐у崟鍙�":'TH23113001',
+    "閿�鍞崟鍙�":'NG23112209',
+    "鍙戣揣鍗曞彿":'JG23112209',
+    "瀹㈡埛鍚嶇О":'79',
+    "椤圭洰鍚嶇О":'楂樻�ц兘鐜繚闀�',
+    "浜у搧鍚嶇О":'4mm楂樻�ц兘鐜繚闀�',
+    "閫�璐ф暟閲�":'367',
+    "涓氬姟鍛�":'姣涘崼',
+    "鍒跺崟鏃ユ湡":'23-11-30 00:00:00',
+    "澶囨敞":'',
+  }
+])
+</script>
+<template>
+<div>
+  <div>
+    <el-form  size="medium" >
+
+<!--      <el-row gutter="7">-->
+<!--        <el-col :span="4">-->
+<!--          <el-input v-model="name" placeholder="閿�鍞崟鍙�" style="width: 200px; height: 30px;" />-->
+<!--        </el-col>-->
+<!--        <el-col :span="4">-->
+<!--          <el-input v-model="productName" placeholder="鍙戣揣鍗曞彿" style="width: 200px; height: 30px;" />-->
+<!--        </el-col>-->
+<!--        <el-col :span="4">-->
+<!--          <el-input v-model="salId" placeholder="瀹㈡埛鍚嶇О" style="width: 200px; height: 30px;" />-->
+<!--        </el-col>-->
+<!--        <el-col :span="4">-->
+<!--          <el-input v-model="salId" placeholder="椤圭洰鍚嶇О" style="width: 200px; height: 30px;" />-->
+<!--        </el-col>-->
+<!--        <el-col :span="4">-->
+<!--          <el-button id="searchButton" type="primary" :icon="Search" style="width: 100px; height: 25px">鏌ヨ</el-button>-->
+<!--        </el-col>-->
+<!--      </el-row>-->
+
+    </el-form>
+  </div>
+  <div>
+    <el-table :data="tableData" border style="width: 85.3%">
+      <el-table-column prop="閫�璐у崟鍙�" label="閫�璐у崟鍙�" width="110" />
+      <el-table-column prop="閿�鍞崟鍙�" label="閿�鍞崟鍙�" width="110" />
+      <el-table-column prop="鍙戣揣鍗曞彿" label="鍙戣揣鍗曞彿" width="100"/>
+      <el-table-column prop="瀹㈡埛鍚嶇О" label="瀹㈡埛鍚嶇О" width="80"/>
+      <el-table-column prop="椤圭洰鍚嶇О" label="椤圭洰鍚嶇О" width="110"/>
+      <el-table-column prop="浜у搧鍚嶇О" label="浜у搧鍚嶇О" width="180"/>
+      <el-table-column prop="閫�璐ф暟閲�" label="閫�璐ф暟閲�" width="100"/>
+      <el-table-column prop="涓氬姟鍛�" label="涓氬姟鍛�" width="100"/>
+      <el-table-column prop="鍒跺崟鏃ユ湡" label="鍒跺崟鏃ユ湡" width="180"/>
+      <el-table-column prop="澶囨敞" label="澶囨敞" width="80"/>
+    </el-table>
+  </div>
+</div>
+</template>
+<style>
+
+</style>
\ No newline at end of file
diff --git a/north-glass-erp/northglass-erp/src/views/mm/mainProductStock/FinishedProductRework.vue b/north-glass-erp/northglass-erp/src/views/mm/mainProductStock/FinishedProductRework.vue
new file mode 100644
index 0000000..6735d38
--- /dev/null
+++ b/north-glass-erp/northglass-erp/src/views/mm/mainProductStock/FinishedProductRework.vue
@@ -0,0 +1,146 @@
+<!-- 鎴愬搧杩斿伐 -->
+
+
+<script lang="ts" setup>
+import {ref} from "vue";
+const handleClick = (row)=>{
+  router.push({
+    path: '/orderAllocationUpdate',
+    query: {
+      rowData: JSON.stringify(row)
+    }
+  });
+  return {
+    tableData,
+    handleClick
+  };
+}
+let tableData = ref([
+  {
+    "閿�鍞崟鍙�":'NG23121309',
+    "椤圭洰鍚嶇О":'閽㈠寲鐜荤拑',
+    "瀹㈡埛缂栧彿":'89',
+    "瀹㈡埛鍚嶇О":'',
+    "娴佺▼鍗″彿":'NG23121309A01',
+    "鎴愬搧缂栧彿":'0604000299',
+    "绠辨灦鍙�":'0',
+    "鎴愬搧鍚嶇О":'3.2mm鎷卞舰閽㈠寲鐜荤拑',
+    "闀�":'1610.00',
+    "瀹�":'520.00',
+    "鍘�":'3.20',
+    "鏁伴噺":'122.00',
+    "鍗曠墖闈㈢Н":'0.8372',
+    "鎬婚潰绉�":'102.1384',
+    "搴撳尯":'搴撳尯',
+    "搴撲綅":'0',
+  },  {
+    "閿�鍞崟鍙�":'NG23121309',
+    "椤圭洰鍚嶇О":'閽㈠寲鐜荤拑',
+    "瀹㈡埛缂栧彿":'89',
+    "瀹㈡埛鍚嶇О":'',
+    "娴佺▼鍗″彿":'NG23121309A01',
+    "鎴愬搧缂栧彿":'0604000299',
+    "绠辨灦鍙�":'0',
+    "鎴愬搧鍚嶇О":'3.2mm鎷卞舰閽㈠寲鐜荤拑',
+    "闀�":'1610.00',
+    "瀹�":'520.00',
+    "鍘�":'3.20',
+    "鏁伴噺":'122.00',
+    "鍗曠墖闈㈢Н":'0.8372',
+    "鎬婚潰绉�":'102.1384',
+    "搴撳尯":'搴撳尯',
+    "搴撲綅":'0',
+  },
+  {
+    "閿�鍞崟鍙�":'NG23121309',
+    "椤圭洰鍚嶇О":'閽㈠寲鐜荤拑',
+    "瀹㈡埛缂栧彿":'89',
+    "瀹㈡埛鍚嶇О":'',
+    "娴佺▼鍗″彿":'NG23121309A01',
+    "鎴愬搧缂栧彿":'0604000299',
+    "绠辨灦鍙�":'0',
+    "鎴愬搧鍚嶇О":'3.2mm鎷卞舰閽㈠寲鐜荤拑',
+    "闀�":'1610.00',
+    "瀹�":'520.00',
+    "鍘�":'3.20',
+    "鏁伴噺":'122.00',
+    "鍗曠墖闈㈢Н":'0.8372',
+    "鎬婚潰绉�":'102.1384',
+    "搴撳尯":'搴撳尯',
+    "搴撲綅":'0',
+  },
+])
+</script>
+<template>
+  <div>
+    <div>
+      <el-form  size="medium" >
+
+        <el-row gutter="5">
+<!--          <el-col :span="4">-->
+<!--            <el-input v-model="name" placeholder="璇疯緭瀹㈡埛鍚嶇О" style="width: 200px; height: 30px;" />-->
+<!--          </el-col>-->
+<!--          <el-col :span="4">-->
+<!--            <el-input v-model="name" placeholder="璇疯緭椤圭洰鍚嶇О" style="width: 200px; height: 30px;" />-->
+<!--          </el-col>-->
+<!--          <el-col :span="4">-->
+<!--            <el-input v-model="name" placeholder="璇疯緭閿�鍞崟鍙�" style="width: 200px; height: 30px;" />-->
+<!--          </el-col>-->
+
+          <el-col :span="4">
+            <el-dropdown>
+              <el-button type="primary" style="width: auto">
+                璇烽�夋嫨杩斿伐绫诲瀷<el-icon class="el-icon--right" style="width: 60px;">
+                <arrow-down />
+              </el-icon>
+              </el-button>
+              <template #dropdown>
+                <el-dropdown-menu>
+                  <el-dropdown-item>搴撳瓨杩斿伐</el-dropdown-item>
+                  <el-dropdown-item>閫�璐ц繑宸�</el-dropdown-item>
+                </el-dropdown-menu>
+              </template>
+            </el-dropdown>
+          </el-col>
+          <el-col :span="2">
+            <el-button id="searchButton" type="primary" :icon="Search">杩斿伐璁板綍</el-button>
+          </el-col>
+          <el-col :span="4">
+            <el-button id="searchButton" type="primary" :icon="Search">鏌ヨ</el-button>
+          </el-col>
+
+        </el-row>
+      </el-form>
+    </div>
+    <div>
+      <el-table :data="tableData" border style="width: 100%;">
+        <el-table-column prop="閿�鍞崟鍙�" label="閿�鍞崟鍙�" width="180" style="text-align: center"/>
+        <el-table-column prop="椤圭洰鍚嶇О" label="椤圭洰鍚嶇О" width="180" />
+        <el-table-column prop="瀹㈡埛缂栧彿" label="瀹㈡埛缂栧彿" width="180"/>
+        <el-table-column prop="瀹㈡埛鍚嶇О" label="瀹㈡埛鍚嶇О" width="180"/>
+        <el-table-column prop="娴佺▼鍗″彿" label="娴佺▼鍗″彿" width="180"/>
+        <el-table-column prop="鎴愬搧缂栧彿" label="鎴愬搧缂栧彿" width="180"/>
+        <el-table-column prop="绠辨灦鍙�" label="绠辨灦鍙�" width="180"/>
+        <el-table-column prop="鎴愬搧鍚嶇О" label="鎴愬搧鍚嶇О" width="180"/>
+        <el-table-column prop="闀�" label="闀�" width="180"/>
+        <el-table-column prop="瀹�" label="瀹�" width="180"/>
+        <el-table-column prop="鍘�" label="鍘�" width="180"/>
+        <el-table-column prop="鏁伴噺" label="鏁伴噺" width="180"/>
+        <el-table-column prop="鍗曠墖闈㈢Н" label="鍗曠墖闈㈢Н" width="180"/>
+        <el-table-column prop="鎬婚潰绉�" label="鎬婚潰绉�" width="180"/>
+        <el-table-column prop="搴撳尯" label="搴撳尯" width="180"/>
+        <el-table-column prop="搴撲綅" label="搴撲綅" width="180"/>
+        <el-table-column fixed="left" label="鎿嶄綔" width="80">
+          <template #default>
+            <el-button link type="primary" size="small" @click="handleClick(row)"
+            >缂栬緫</el-button>
+
+          </template>
+        </el-table-column>
+      </el-table>
+    </div>
+  </div>
+</template>
+<style>
+
+</style>
\ No newline at end of file
diff --git a/north-glass-erp/northglass-erp/src/views/mm/mainProductStock/OrderAllocation.vue b/north-glass-erp/northglass-erp/src/views/mm/mainProductStock/OrderAllocation.vue
new file mode 100644
index 0000000..44a9b02
--- /dev/null
+++ b/north-glass-erp/northglass-erp/src/views/mm/mainProductStock/OrderAllocation.vue
@@ -0,0 +1,130 @@
+<!-- 璁㈠崟璋冩嫧 -->
+
+
+<script lang="ts" setup>
+import {ref} from "vue";
+const handleClick = (row)=>{
+  router.push({
+    path: '/orderAllocationUpdate',
+    query: {
+      rowData: JSON.stringify(row)
+    }
+  });
+  return {
+    tableData,
+    handleClick
+  };
+}
+let tableData = ref([
+  {
+    "閿�鍞崟鍙�":'NG23121309',
+    "椤圭洰鍚嶇О":'閽㈠寲鐜荤拑',
+    "瀹㈡埛缂栧彿":'89',
+    "瀹㈡埛鍚嶇О":'',
+    "娴佺▼鍗″彿":'NG23121309A01',
+    "鎴愬搧缂栧彿":'0604000299',
+    "绠辨灦鍙�":'0',
+    "鎴愬搧鍚嶇О":'3.2mm鎷卞舰閽㈠寲鐜荤拑',
+    "闀�":'1610.00',
+    "瀹�":'520.00',
+    "鍘�":'3.20',
+    "鏁伴噺":'122.00',
+    "鍗曠墖闈㈢Н":'0.8372',
+    "鎬婚潰绉�":'102.1384',
+    "搴撳尯":'搴撳尯',
+    "搴撲綅":'0',
+  },  {
+    "閿�鍞崟鍙�":'NG23121309',
+    "椤圭洰鍚嶇О":'閽㈠寲鐜荤拑',
+    "瀹㈡埛缂栧彿":'89',
+    "瀹㈡埛鍚嶇О":'',
+    "娴佺▼鍗″彿":'NG23121309A01',
+    "鎴愬搧缂栧彿":'0604000299',
+    "绠辨灦鍙�":'0',
+    "鎴愬搧鍚嶇О":'3.2mm鎷卞舰閽㈠寲鐜荤拑',
+    "闀�":'1610.00',
+    "瀹�":'520.00',
+    "鍘�":'3.20',
+    "鏁伴噺":'122.00',
+    "鍗曠墖闈㈢Н":'0.8372',
+    "鎬婚潰绉�":'102.1384',
+    "搴撳尯":'搴撳尯',
+    "搴撲綅":'0',
+  },
+  {
+    "閿�鍞崟鍙�":'NG23121309',
+    "椤圭洰鍚嶇О":'閽㈠寲鐜荤拑',
+    "瀹㈡埛缂栧彿":'89',
+    "瀹㈡埛鍚嶇О":'',
+    "娴佺▼鍗″彿":'NG23121309A01',
+    "鎴愬搧缂栧彿":'0604000299',
+    "绠辨灦鍙�":'0',
+    "鎴愬搧鍚嶇О":'3.2mm鎷卞舰閽㈠寲鐜荤拑',
+    "闀�":'1610.00',
+    "瀹�":'520.00',
+    "鍘�":'3.20',
+    "鏁伴噺":'122.00',
+    "鍗曠墖闈㈢Н":'0.8372',
+    "鎬婚潰绉�":'102.1384',
+    "搴撳尯":'搴撳尯',
+    "搴撲綅":'0',
+  },
+])
+</script>
+<template>
+<div>
+  <div>
+    <el-form  size="medium" >
+
+      <el-row gutter="5">
+<!--      <el-col :span="4">-->
+<!--        <el-input v-model="name" placeholder="璇疯緭瀹㈡埛鍚嶇О" style="width: 200px; height: 30px;" />-->
+<!--      </el-col>-->
+<!--      <el-col :span="4">-->
+<!--        <el-input v-model="name" placeholder="璇疯緭椤圭洰鍚嶇О" style="width: 200px; height: 30px;" />-->
+<!--      </el-col>-->
+<!--        <el-col :span="4">-->
+<!--          <el-input v-model="name" placeholder="璇疯緭閿�鍞崟鍙�" style="width: 200px; height: 30px;" />-->
+<!--        </el-col>-->
+        <el-col :span="2.5  ">
+          <el-button id="searchButton" type="primary" :icon="Search">璋冩灦璁板綍</el-button>
+        </el-col>
+        <el-col :span="4">
+          <el-button id="searchButton" type="primary" :icon="Search">鏌ヨ</el-button>
+        </el-col>
+
+      </el-row>
+    </el-form>
+  </div>
+  <div>
+    <el-table :data="tableData" border style="width: 100%;">
+      <el-table-column prop="閿�鍞崟鍙�" label="閿�鍞崟鍙�" width="180" style="text-align: center"/>
+      <el-table-column prop="椤圭洰鍚嶇О" label="椤圭洰鍚嶇О" width="180" />
+      <el-table-column prop="瀹㈡埛缂栧彿" label="瀹㈡埛缂栧彿" width="180"/>
+      <el-table-column prop="瀹㈡埛鍚嶇О" label="瀹㈡埛鍚嶇О" width="180"/>
+      <el-table-column prop="娴佺▼鍗″彿" label="娴佺▼鍗″彿" width="180"/>
+      <el-table-column prop="鎴愬搧缂栧彿" label="鎴愬搧缂栧彿" width="180"/>
+      <el-table-column prop="绠辨灦鍙�" label="绠辨灦鍙�" width="180"/>
+      <el-table-column prop="鎴愬搧鍚嶇О" label="鎴愬搧鍚嶇О" width="180"/>
+      <el-table-column prop="闀�" label="闀�" width="180"/>
+      <el-table-column prop="瀹�" label="瀹�" width="180"/>
+      <el-table-column prop="鍘�" label="鍘�" width="180"/>
+      <el-table-column prop="鏁伴噺" label="鏁伴噺" width="180"/>
+      <el-table-column prop="鍗曠墖闈㈢Н" label="鍗曠墖闈㈢Н" width="180"/>
+      <el-table-column prop="鎬婚潰绉�" label="鎬婚潰绉�" width="180"/>
+      <el-table-column prop="搴撳尯" label="搴撳尯" width="180"/>
+      <el-table-column prop="搴撲綅" label="搴撲綅" width="180"/>
+      <el-table-column fixed="left" label="鎿嶄綔" width="80">
+        <template #default>
+          <el-button link type="primary" size="small" @click="handleClick(row)"
+          >缂栬緫</el-button>
+
+        </template>
+      </el-table-column>
+    </el-table>
+  </div>
+</div>
+</template>
+<style>
+
+</style>
\ No newline at end of file
diff --git a/north-glass-erp/northglass-erp/src/views/mm/mainProductStock/OrderAllocationUpdate.vue b/north-glass-erp/northglass-erp/src/views/mm/mainProductStock/OrderAllocationUpdate.vue
new file mode 100644
index 0000000..b76d7a7
--- /dev/null
+++ b/north-glass-erp/northglass-erp/src/views/mm/mainProductStock/OrderAllocationUpdate.vue
@@ -0,0 +1,40 @@
+<template>
+  <div>
+    <h2>缂栬緫椤甸潰</h2>
+    <form @submit.prevent="handleSubmit">
+      <!-- 鏍规嵁闇�瑕佸睍绀鸿緭鍏ユ鎴栧叾浠栬〃鍗曠粍浠� -->
+      <label>閿�鍞崟鍙�</label>
+      <input v-model="rowData.閿�鍞崟鍙�" />
+
+      <!-- 鍏朵粬瀛楁鐪佺暐 -->
+
+      <button type="submit">纭畾</button>
+    </form>
+  </div>
+</template>
+
+<script
+import { ref } from 'vue';
+import { useRoute, useRouter } from 'vue-router';
+
+export default {
+  setup() {
+    const route = useRoute();
+    const router = useRouter();
+
+    const rowData = ref(JSON.parse(route.query.rowData));
+
+    const handleSubmit = () => {
+      // 澶勭悊缂栬緫瀹屾垚鍚庣殑閫昏緫锛屾瘮濡備繚瀛樻暟鎹瓑
+
+      // 杩斿洖涓婚〉闈�
+      router.push('/OrderAllocation.vue');
+    };
+
+    return {
+      rowData,
+      handleSubmit
+    };
+  }
+};
+</script>
\ No newline at end of file
diff --git a/north-glass-erp/northglass-erp/src/views/mm/mainProductStock/ProductStock.vue b/north-glass-erp/northglass-erp/src/views/mm/mainProductStock/ProductStock.vue
new file mode 100644
index 0000000..2c0511e
--- /dev/null
+++ b/north-glass-erp/northglass-erp/src/views/mm/mainProductStock/ProductStock.vue
@@ -0,0 +1,62 @@
+<script setup>
+import {ref} from "vue";
+import {ArrowLeftBold, ArrowRight, Search} from "@element-plus/icons-vue";
+import request from "@/utils/request";
+import deepClone from "@/utils/deepClone";
+import {ElMessage} from "element-plus";
+import {useRouter} from "vue-router";
+import  GlassType from '@/components/basic/product/GlassType.vue'
+
+
+const router = useRouter()
+
+</script>
+
+<template>
+  <div id="main">
+   <div id="div-title">
+     <el-breadcrumb :separator-icon="ArrowRight">
+       <el-breadcrumb-item :to="{ path: '/main/productStock/ProductStockList' }">浜у搧鏌ヨ</el-breadcrumb-item>
+       <el-breadcrumb-item :to="{ path: '/main/productStock/CreateProductStock' }">鎴愬搧鍏ュ簱</el-breadcrumb-item>
+       <el-breadcrumb-item :to="{ path: '/main/productStock/FinishedProductOut' }">鎴愬搧鍑哄簱</el-breadcrumb-item>
+       <el-breadcrumb-item :to="{ path: '/main/productStock/FinishedProductReturn' }">璁㈠崟鎴愬搧閫�璐�</el-breadcrumb-item>
+       <el-breadcrumb-item :to="{ path: '/main/productStock/OrderAllocation' }">璁㈠崟璋冩嫧</el-breadcrumb-item>
+       <el-breadcrumb-item :to="{ path: '/main/productStock/FinishedGoodsIssue' }">鎴愬搧棰嗗嚭</el-breadcrumb-item>
+       <el-breadcrumb-item :to="{ path: '/main/productStock/FinishedProductRework' }">鎴愬搧杩斿伐</el-breadcrumb-item>
+       <!-- <el-breadcrumb-item :to="{ path: '/main/product/createProduct' }"></el-breadcrumb-item> -->
+     </el-breadcrumb>
+
+    </div>
+
+    <div id="main-body">
+      <router-view  />
+    </div>
+  </div>
+</template>
+
+<style scoped>
+#main{
+  width: 100%;
+  height: 100%;
+}
+#div-title{
+  height: 5%;
+  width: 100%;
+}
+#searchButton{
+  margin-top: -5px;
+  margin-left: 1rem;
+}
+#searchButton1{
+  //margin-left: 10rem;
+}
+/*main-body鏍峰紡*/
+#main-body{
+  width: 99%;
+  height: 92%;
+  margin-top: 1%;
+}
+#select{
+  margin-left:0.5rem;
+}
+</style>
\ No newline at end of file
diff --git a/north-glass-erp/northglass-erp/src/views/mm/mainProductStock/ProductStockList.vue b/north-glass-erp/northglass-erp/src/views/mm/mainProductStock/ProductStockList.vue
new file mode 100644
index 0000000..24d9c59
--- /dev/null
+++ b/north-glass-erp/northglass-erp/src/views/mm/mainProductStock/ProductStockList.vue
@@ -0,0 +1,287 @@
+<!-- 鎴愬搧搴撳瓨 -->
+<script  lang="ts" setup>
+import { ref } from 'vue'
+import router from "@/router";
+let tableData = ref([
+  {
+    "鑷簭":'30',
+    "璁㈠崟搴忓彿":'1',
+    "閿�鍞崟鍙�":'NG23072003',
+    "椤圭洰鍚嶇О":'閽㈠寲鐜荤拑',
+    "璁㈠崟绫诲瀷":'鏅�氳鍗�',
+    "娴佺▼鍗″彿":'NG23072003A01',
+    "浜у搧鍚嶇О":'',
+    "浜у搧缂栧彿":'06040000022',
+    "瀹㈡埛缂栧彿":'KD0071',
+    "瀹㈡埛鍚嶇О":'',
+    "闀垮害":'1075.00',
+    "瀹藉害":'440.00',
+    "鍘氬害":'3.00',
+    "搴撳瓨鏁�":'360',
+    "瀹為檯鍗曠墖闈㈢Н":'0.473000',
+    "闈㈢Н":'170.28',
+    "缁撶畻鍗曠墖闈㈢Н":'0.47',
+    "缁撶畻鎬婚潰绉�":'170.28',
+    "鍙敤鏁伴噺":'360',
+    "妤煎眰缂栧彿":'10927769',
+    "閫佽揣鍦板潃":'閽㈠寲鐜荤拑',
+    "鎵规":'',
+    "涓氬姟鍛�":'闄堝畻鍑�',
+    "骞冲嚒姣背":'1915.6500',
+    "閲嶉噺":'1.91565',
+    "鏈�鍚庡叆搴撴棩鏈�":'2023-09-22 08:31:17',
+    "搴撲綅缂栧彿":'鎴愬搧搴�',
+    "搴撳尯":'搴撳尯',
+    "搴撲綅":'0',
+    "鍗曟嵁鐘舵��":'1',
+    "澶囨敞":'',
+  }, {
+    "鑷簭":'31',
+    "璁㈠崟搴忓彿":'1',
+    "閿�鍞崟鍙�":'NG23072003',
+    "椤圭洰鍚嶇О":'閽㈠寲鐜荤拑',
+    "璁㈠崟绫诲瀷":'鏅�氳鍗�',
+    "娴佺▼鍗″彿":'NG23072003A02',
+    "浜у搧鍚嶇О":'',
+    "浜у搧缂栧彿":'06040000022',
+    "瀹㈡埛缂栧彿":'KD0071',
+    "瀹㈡埛鍚嶇О":'',
+    "闀垮害":'1075.00',
+    "瀹藉害":'440.00',
+    "鍘氬害":'3.00',
+    "搴撳瓨鏁�":'360',
+    "瀹為檯鍗曠墖闈㈢Н":'0.473000',
+    "闈㈢Н":'170.28',
+    "缁撶畻鍗曠墖闈㈢Н":'0.47',
+    "缁撶畻鎬婚潰绉�":'170.28',
+    "鍙敤鏁伴噺":'360',
+    "妤煎眰缂栧彿":'10927769',
+    "閫佽揣鍦板潃":'閽㈠寲鐜荤拑',
+    "鎵规":'',
+    "涓氬姟鍛�":'闄堝畻鍑�',
+    "骞冲嚒姣背":'1915.6500',
+    "閲嶉噺":'1.91565',
+    "鏈�鍚庡叆搴撴棩鏈�":'2023-09-22 08:31:17',
+    "搴撲綅缂栧彿":'鎴愬搧搴�',
+    "搴撳尯":'搴撳尯',
+    "搴撲綅":'0',
+    "鍗曟嵁鐘舵��":'1',
+    "澶囨敞":'',
+  }, {
+    "鑷簭":'32',
+    "璁㈠崟搴忓彿":'1',
+    "閿�鍞崟鍙�":'NG23072003',
+    "椤圭洰鍚嶇О":'閽㈠寲鐜荤拑',
+    "璁㈠崟绫诲瀷":'鏅�氳鍗�',
+    "娴佺▼鍗″彿":'NG23072003A01',
+    "浜у搧鍚嶇О":'',
+    "浜у搧缂栧彿":'06040000022',
+    "瀹㈡埛缂栧彿":'KD0071',
+    "瀹㈡埛鍚嶇О":'',
+    "闀垮害":'1075.00',
+    "瀹藉害":'440.00',
+    "鍘氬害":'3.00',
+    "搴撳瓨鏁�":'360',
+    "瀹為檯鍗曠墖闈㈢Н":'0.473000',
+    "闈㈢Н":'170.28',
+    "缁撶畻鍗曠墖闈㈢Н":'0.47',
+    "缁撶畻鎬婚潰绉�":'170.28',
+    "鍙敤鏁伴噺":'360',
+    "妤煎眰缂栧彿":'10927769',
+    "閫佽揣鍦板潃":'閽㈠寲鐜荤拑',
+    "鎵规":'',
+    "涓氬姟鍛�":'闄堝畻鍑�',
+    "骞冲嚒姣背":'1915.6500',
+    "閲嶉噺":'1.91565',
+    "鏈�鍚庡叆搴撴棩鏈�":'2023-09-22 08:31:17',
+    "搴撲綅缂栧彿":'鎴愬搧搴�',
+    "搴撳尯":'搴撳尯',
+    "搴撲綅":'0',
+    "鍗曟嵁鐘舵��":'1',
+    "澶囨敞":'',
+  }, {
+    "鑷簭":'33',
+    "璁㈠崟搴忓彿":'1',
+    "閿�鍞崟鍙�":'NG23072003',
+    "椤圭洰鍚嶇О":'閽㈠寲鐜荤拑',
+    "璁㈠崟绫诲瀷":'鏅�氳鍗�',
+    "娴佺▼鍗″彿":'NG23072003A01',
+    "浜у搧鍚嶇О":'',
+    "浜у搧缂栧彿":'06040000022',
+    "瀹㈡埛缂栧彿":'KD0071',
+    "瀹㈡埛鍚嶇О":'',
+    "闀垮害":'1075.00',
+    "瀹藉害":'440.00',
+    "鍘氬害":'3.00',
+    "搴撳瓨鏁�":'360',
+    "瀹為檯鍗曠墖闈㈢Н":'0.473000',
+    "闈㈢Н":'170.28',
+    "缁撶畻鍗曠墖闈㈢Н":'0.47',
+    "缁撶畻鎬婚潰绉�":'170.28',
+    "鍙敤鏁伴噺":'360',
+    "妤煎眰缂栧彿":'10927769',
+    "閫佽揣鍦板潃":'閽㈠寲鐜荤拑',
+    "鎵规":'',
+    "涓氬姟鍛�":'闄堝畻鍑�',
+    "骞冲嚒姣背":'1915.6500',
+    "閲嶉噺":'1.91565',
+    "鏈�鍚庡叆搴撴棩鏈�":'2023-09-22 08:31:17',
+    "搴撲綅缂栧彿":'鎴愬搧搴�',
+    "搴撳尯":'搴撳尯',
+    "搴撲綅":'0',
+    "鍗曟嵁鐘舵��":'1',
+    "澶囨敞":'',
+  }, {
+    "鑷簭":'34',
+    "璁㈠崟搴忓彿":'1',
+    "閿�鍞崟鍙�":'NG23072003',
+    "椤圭洰鍚嶇О":'閽㈠寲鐜荤拑',
+    "璁㈠崟绫诲瀷":'鏅�氳鍗�',
+    "娴佺▼鍗″彿":'NG23072003A01',
+    "浜у搧鍚嶇О":'',
+    "浜у搧缂栧彿":'06040000022',
+    "瀹㈡埛缂栧彿":'KD0071',
+    "瀹㈡埛鍚嶇О":'',
+    "闀垮害":'1075.00',
+    "瀹藉害":'440.00',
+    "鍘氬害":'3.00',
+    "搴撳瓨鏁�":'360',
+    "瀹為檯鍗曠墖闈㈢Н":'0.473000',
+    "闈㈢Н":'170.28',
+    "缁撶畻鍗曠墖闈㈢Н":'0.47',
+    "缁撶畻鎬婚潰绉�":'170.28',
+    "鍙敤鏁伴噺":'360',
+    "妤煎眰缂栧彿":'10927769',
+    "閫佽揣鍦板潃":'閽㈠寲鐜荤拑',
+    "鎵规":'',
+    "涓氬姟鍛�":'闄堝畻鍑�',
+    "骞冲嚒姣背":'1915.6500',
+    "閲嶉噺":'1.91565',
+    "鏈�鍚庡叆搴撴棩鏈�":'2023-09-22 08:31:17',
+    "搴撲綅缂栧彿":'鎴愬搧搴�',
+    "搴撳尯":'搴撳尯',
+    "搴撲綅":'0',
+    "鍗曟嵁鐘舵��":'1',
+    "澶囨敞":'',
+  }, {
+    "鑷簭":'35',
+    "璁㈠崟搴忓彿":'1',
+    "閿�鍞崟鍙�":'NG23072003',
+    "椤圭洰鍚嶇О":'閽㈠寲鐜荤拑',
+    "璁㈠崟绫诲瀷":'鏅�氳鍗�',
+    "娴佺▼鍗″彿":'NG23072003A01',
+    "浜у搧鍚嶇О":'',
+    "浜у搧缂栧彿":'06040000022',
+    "瀹㈡埛缂栧彿":'KD0071',
+    "瀹㈡埛鍚嶇О":'',
+    "闀垮害":'1075.00',
+    "瀹藉害":'440.00',
+    "鍘氬害":'3.00',
+    "搴撳瓨鏁�":'360',
+    "瀹為檯鍗曠墖闈㈢Н":'0.473000',
+    "闈㈢Н":'170.28',
+    "缁撶畻鍗曠墖闈㈢Н":'0.47',
+    "缁撶畻鎬婚潰绉�":'170.28',
+    "鍙敤鏁伴噺":'360',
+    "妤煎眰缂栧彿":'10927769',
+    "閫佽揣鍦板潃":'閽㈠寲鐜荤拑',
+    "鎵规":'',
+    "涓氬姟鍛�":'闄堝畻鍑�',
+    "骞冲嚒姣背":'1915.6500',
+    "閲嶉噺":'1.91565',
+    "鏈�鍚庡叆搴撴棩鏈�":'2023-09-22 08:31:17',
+    "搴撲綅缂栧彿":'鎴愬搧搴�',
+    "搴撳尯":'搴撳尯',
+    "搴撲綅":'0',
+    "鍗曟嵁鐘舵��":'1',
+    "澶囨敞":'',
+  }
+])
+const name = ref('')
+const productName = ref('')
+const salId = ref('')
+
+</script>
+<template>
+  <div>
+    <!-- 琛ㄥ崟寮�濮� -->
+    <div>
+      <el-form  size="medium" >
+    
+       <el-row gutter="7">
+<!--  <el-col :span="4">-->
+<!--    <el-input v-model="name" placeholder="璇疯緭鍏ュ鎴峰悕绉�" style="width: 200px; height: 30px;" />-->
+<!--  </el-col>-->
+<!--  <el-col :span="4">-->
+<!--    <el-input v-model="productName" placeholder="璇疯緭鍏ラ」鐩悕绉�" style="width: 200px; height: 30px;" />-->
+<!--  </el-col>-->
+<!--  <el-col :span="4">-->
+<!--    <el-input v-model="salId" placeholder="璇疯緭鍏ラ攢鍞崟鍙�" style="width: 200px; height: 30px;" />-->
+<!--  </el-col>-->
+  <el-col :span="6.5">
+    <el-date-picker
+    type="daterange"
+    start-placeholder="寮�濮嬫椂闂�"
+    end-placeholder="缁撴潫鏃堕棿"
+   />
+  </el-col>
+  <el-col :span="4">
+           <el-button id="searchButton" type="primary" :icon="Search" style="width: 100px;">鏌ヨ</el-button>
+         </el-col>
+</el-row>
+
+
+        <!-- <el-form-item size="large">
+          <el-button type="primary" @click="submitForm">鏌ヨ</el-button>
+          <el-button @click="resetForm">閲嶇疆</el-button>
+        </el-form-item>-->
+      </el-form> 
+    </div>
+    <!-- 琛ㄥ崟缁撴潫 -->
+
+    <!-- 琛ㄦ牸寮�濮� -->
+    <div>
+  <el-table :data="tableData" border style="width: 100%">
+    <el-table-column prop="鑷簭" label="鑷簭" width="180" />
+    <el-table-column prop="璁㈠崟搴忓彿" label="璁㈠崟搴忓彿" width="180" />
+    <el-table-column prop="閿�鍞崟鍙�" label="閿�鍞崟鍙�" width="180"/>
+    <el-table-column prop="椤圭洰鍚嶇О" label="椤圭洰鍚嶇О" width="180"/>
+    <el-table-column prop="璁㈠崟绫诲瀷" label="璁㈠崟绫诲瀷" width="180"/>
+    <el-table-column prop="娴佺▼鍗″彿" label="娴佺▼鍗″彿" width="180"/>
+    <el-table-column prop="浜у搧鍚嶇О" label="浜у搧鍚嶇О" width="180"/>
+    <el-table-column prop="浜у搧缂栧彿" label="浜у搧缂栧彿" width="180"/>
+    <el-table-column prop="瀹㈡埛缂栧彿" label="瀹㈡埛缂栧彿" width="180"/>
+    <el-table-column prop="瀹㈡埛鍚嶇О" label="瀹㈡埛鍚嶇О" width="180"/>
+    <el-table-column prop="闀垮害" label="闀垮害" width="180"/>
+    <el-table-column prop="瀹藉害" label="瀹藉害" width="180"/>
+    <el-table-column prop="鍘氬害" label="鍘氬害" width="180"/>
+    <el-table-column prop="搴撳瓨鏁�" label="搴撳瓨鏁�" width="180"/>
+    <el-table-column prop="瀹為檯鍗曠墖闈㈢Н" label="瀹為檯鍗曠墖闈㈢Н" width="180"/>
+    <el-table-column prop="闈㈢Н" label="闈㈢Н" width="180"/>
+    <el-table-column prop="缁撶畻鍗曠墖闈㈢Н" label="缁撶畻鍗曠墖闈㈢Н" width="180"/>
+    <el-table-column prop="缁撶畻鎬婚潰绉�" label="缁撶畻鎬婚潰绉�" width="180"/>
+    <el-table-column prop="鍙敤鏁伴噺" label="鍙敤鏁伴噺" width="180"/>
+    <el-table-column prop="妤煎眰缂栧彿" label="妤煎眰缂栧彿" width="180"/>
+    <el-table-column prop="閫佽揣鍦板潃" label="閫佽揣鍦板潃" width="180"/>
+    <el-table-column prop="鎵规" label="鎵规" width="180"/>
+    <el-table-column prop="涓氬姟鍛�" label="涓氬姟鍛�" width="180"/>
+    <el-table-column prop="骞虫柟姣背" label="骞虫柟姣背" width="180"/>
+    <el-table-column prop="閲嶉噺" label="閲嶉噺" width="180"/>
+    <el-table-column prop="鏈�鍚庡叆搴撴棩鏈�" label="鏈�鍚庡叆搴撴棩鏈�" width="180"/>
+    <el-table-column prop="搴撲綅缂栧彿" label="搴撲綅缂栧彿" width="180"/>
+    <el-table-column prop="搴撳尯" label="搴撳尯" width="180"/>
+    <el-table-column prop="搴撲綅" label="搴撲綅" width="180"/>
+    <el-table-column prop="鍗曟嵁鐘舵��" label="鍗曟嵁鐘舵��" width="180"/>
+    <el-table-column prop="澶囨敞" label="澶囨敞" width="180"/>
+
+  </el-table>
+    </div>
+    <!-- 琛ㄦ牸缁撴潫 -->
+  </div>
+    
+  </template>
+
+  <style scoped>
+  
+  </style>
+  
\ No newline at end of file
diff --git a/north-glass-erp/northglass-erp/src/views/mm/mainTrader/CreateTrader.vue b/north-glass-erp/northglass-erp/src/views/mm/mainTrader/CreateTrader.vue
new file mode 100644
index 0000000..e6836cc
--- /dev/null
+++ b/north-glass-erp/northglass-erp/src/views/mm/mainTrader/CreateTrader.vue
@@ -0,0 +1,9 @@
+<script>
+
+</script>
+<template>
+ <h1>鏆傛棤锛屾暚璇锋湡寰�</h1>
+</template>
+<style>
+
+</style>
\ No newline at end of file
diff --git a/north-glass-erp/northglass-erp/src/views/mm/mainTrader/SelectTrader.vue b/north-glass-erp/northglass-erp/src/views/mm/mainTrader/SelectTrader.vue
new file mode 100644
index 0000000..b9db151
--- /dev/null
+++ b/north-glass-erp/northglass-erp/src/views/mm/mainTrader/SelectTrader.vue
@@ -0,0 +1,184 @@
+<!-- 渚涘簲鍟嗙鐞� -->
+<script lang="ts" setup>
+import { ref } from "vue";
+const name = ref('')
+const productName = ref('')
+const salId = ref('')
+let tableData = ref([
+  {
+    "渚涘簲鍟嗙紪鐮�":'221',
+    "渚涘簲鍟嗗悕绉�":'鎴愰兘姝e崕鐢靛瓙浠櫒鏈夐檺鍏徃',
+    "浠g悊浜у搧":'杈呮枡',
+    "缁撶畻鏂瑰紡":'璐у埌浠樻',
+    "鑱旂郴浜�":'',
+    "鑱旂郴鐢佃瘽":'',
+    "绋庣巼":'13.00',
+    "鍏徃鍦板潃":'鍖椾含甯傝緰鍖轰笢鍩庡尯',
+    "鏀惰揣鍦板潃":'鍖椾含甯傝緰鍖轰笢鍩庡尯',
+    "鎵�灞為泦鍥�":'',
+    "绛夌骇":'',
+    "鍗曟嵁鐘舵��":'鏈鏍�',
+    "瀹℃牳鍛�":'0.0000',
+    "瀹℃牳鏃ユ湡":'2023-11-19',
+    "鎹㈢畻鍗曚綅":'0',
+    "澶囨敞":'0',
+  },
+  {
+    "渚涘簲鍟嗙紪鐮�":'220',
+    "渚涘簲鍟嗗悕绉�":'骞垮窞鍚堢敵鏈虹數绉戞妧鏈夐檺鍏徃',
+    "浠g悊浜у搧":'杈呮枡',
+    "缁撶畻鏂瑰紡":'璐у埌浠樻',
+    "鑱旂郴浜�":'',
+    "鑱旂郴鐢佃瘽":'',
+    "绋庣巼":'13.00',
+    "鍏徃鍦板潃":'鍖椾含甯傝緰鍖轰笢鍩庡尯',
+    "鏀惰揣鍦板潃":'鍖椾含甯傝緰鍖轰笢鍩庡尯',
+    "鎵�灞為泦鍥�":'',
+    "绛夌骇":'',
+    "鍗曟嵁鐘舵��":'鏈鏍�',
+    "瀹℃牳鍛�":'0.0000',
+    "瀹℃牳鏃ユ湡":'2023-11-19',
+    "鎹㈢畻鍗曚綅":'0',
+    "澶囨敞":'0',
+  },
+  {
+    "渚涘簲鍟嗙紪鐮�":'219',
+    "渚涘簲鍟嗗悕绉�":'姹熼棬甯備腑閿愰噾鍒氱煶宸ュ叿鏈夐檺鍏徃',
+    "浠g悊浜у搧":'杈呮枡',
+    "缁撶畻鏂瑰紡":'璐у埌浠樻',
+    "鑱旂郴浜�":'',
+    "鑱旂郴鐢佃瘽":'',
+    "绋庣巼":'13.00',
+    "鍏徃鍦板潃":'鍖椾含甯傝緰鍖轰笢鍩庡尯',
+    "鏀惰揣鍦板潃":'鍖椾含甯傝緰鍖轰笢鍩庡尯',
+    "鎵�灞為泦鍥�":'',
+    "绛夌骇":'',
+    "鍗曟嵁鐘舵��":'鏈鏍�',
+    "瀹℃牳鍛�":'0.0000',
+    "瀹℃牳鏃ユ湡":'2023-11-19',
+    "鎹㈢畻鍗曚綅":'0',
+    "澶囨敞":'0',
+  },
+  {
+    "渚涘簲鍟嗙紪鐮�":'218',
+    "渚涘簲鍟嗗悕绉�":'娣卞湷鎮﹀垱绮惧瘑鑷姩鍖栨妧鏈湁闄愬叕鍙�',
+    "浠g悊浜у搧":'杈呮枡',
+    "缁撶畻鏂瑰紡":'璐у埌浠樻',
+    "鑱旂郴浜�":'',
+    "鑱旂郴鐢佃瘽":'',
+    "绋庣巼":'13.00',
+    "鍏徃鍦板潃":'鍖椾含甯傝緰鍖轰笢鍩庡尯',
+    "鏀惰揣鍦板潃":'鍖椾含甯傝緰鍖轰笢鍩庡尯',
+    "鎵�灞為泦鍥�":'',
+    "绛夌骇":'',
+    "鍗曟嵁鐘舵��":'鏈鏍�',
+    "瀹℃牳鍛�":'0.0000',
+    "瀹℃牳鏃ユ湡":'2023-11-19',
+    "鎹㈢畻鍗曚綅":'0',
+    "澶囨敞":'0',
+  },
+  {
+    "渚涘簲鍟嗙紪鐮�":'217',
+    "渚涘簲鍟嗗悕绉�":'娣卞湷甯備集娆g鎶�鏈夐檺鍏徃',
+    "浠g悊浜у搧":'杈呮枡',
+    "缁撶畻鏂瑰紡":'璐у埌浠樻',
+    "鑱旂郴浜�":'',
+    "鑱旂郴鐢佃瘽":'',
+    "绋庣巼":'13.00',
+    "鍏徃鍦板潃":'鍖椾含甯傝緰鍖轰笢鍩庡尯',
+    "鏀惰揣鍦板潃":'鍖椾含甯傝緰鍖轰笢鍩庡尯',
+    "鎵�灞為泦鍥�":'',
+    "绛夌骇":'',
+    "鍗曟嵁鐘舵��":'鏈鏍�',
+    "瀹℃牳鍛�":'0.0000',
+    "瀹℃牳鏃ユ湡":'2023-11-19',
+    "鎹㈢畻鍗曚綅":'0',
+    "澶囨敞":'0',
+  },
+  {
+    "渚涘簲鍟嗙紪鐮�":'216',
+    "渚涘簲鍟嗗悕绉�":'瀹胯縼瀹d箣鏂囩數瀛愬晢鍔℃湁闄愬叕鍙�',
+    "浠g悊浜у搧":'杈呮枡',
+    "缁撶畻鏂瑰紡":'璐у埌浠樻',
+    "鑱旂郴浜�":'',
+    "鑱旂郴鐢佃瘽":'',
+    "绋庣巼":'13.00',
+    "鍏徃鍦板潃":'鍖椾含甯傝緰鍖轰笢鍩庡尯',
+    "鏀惰揣鍦板潃":'鍖椾含甯傝緰鍖轰笢鍩庡尯',
+    "鎵�灞為泦鍥�":'',
+    "绛夌骇":'',
+    "鍗曟嵁鐘舵��":'鏈鏍�',
+    "瀹℃牳鍛�":'0.0000',
+    "瀹℃牳鏃ユ湡":'2023-11-19',
+    "鎹㈢畻鍗曚綅":'0',
+    "澶囨敞":'0',
+  },
+])
+</script>
+
+<template>
+  <div>
+    <!-- 琛ㄥ崟寮�濮� -->
+    <div>
+      <el-form  size="medium" >
+
+<!--        <el-row gutter="5">-->
+<!--          <el-col :span="4">-->
+<!--            <el-input v-model="name" placeholder="璇疯緭鍏ヤ緵搴斿晢缂栫爜" style="width: 200px; height: 30px;" />-->
+<!--          </el-col>-->
+<!--          <el-col :span="4">-->
+<!--            <el-input v-model="productName" placeholder="璇疯緭鍏ヤ緵搴斿晢鍚嶇О" style="width: 200px; height: 30px;" />-->
+<!--          </el-col>-->
+<!--          <el-col :span="4">-->
+<!--            <el-input v-model="salId" placeholder="璇疯緭鍏ヤ唬鐞嗕骇鍝�" style="width: 200px; height: 30px;" />-->
+<!--          </el-col>-->
+<!--          <el-col :span="4">-->
+<!--            <el-input v-model="salId" placeholder="璇疯緭鍏ヨ仈绯讳汉" style="width: 200px; height: 30px;" />-->
+<!--          </el-col>-->
+<!--          <el-col :span="4">-->
+<!--            <el-button id="searchButton" type="primary" :icon="Search">鏌ヨ</el-button>-->
+<!--          </el-col>-->
+<!--        </el-row>-->
+
+        <!-- <el-form-item size="large">
+          <el-button type="primary" @click="submitForm">鏌ヨ</el-button>
+          <el-button @click="resetForm">閲嶇疆</el-button>
+        </el-form-item>-->
+
+      </el-form>
+    </div>
+    <!-- 琛ㄥ崟缁撴潫 -->
+    <!-- 琛ㄦ牸寮�濮� -->
+    <div>
+      <el-table :data="tableData" border style="width: 100%">
+        <el-table-column prop="渚涘簲鍟嗙紪鐮�" label="渚涘簲鍟嗙紪鐮�" width="180" />
+        <el-table-column prop="渚涘簲鍟嗗悕绉�" label="渚涘簲鍟嗗悕绉�" width="180" />
+        <el-table-column prop="浠g悊浜у搧" label="浠g悊浜у搧" width="180"/>
+        <el-table-column prop="缁撶畻鏂瑰紡" label="缁撶畻鏂瑰紡" width="180"/>
+        <el-table-column prop="鑱旂郴浜�" label="鑱旂郴浜�" width="180"/>
+        <el-table-column prop="鑱旂郴鐢佃瘽" label="鑱旂郴鐢佃瘽" width="180"/>
+        <el-table-column prop="绋庣巼" label="绋庣巼" width="180"/>
+        <el-table-column prop="鍏徃鍦板潃" label="鍏徃鍦板潃" width="180"/>
+        <el-table-column prop="鏀惰揣鍦板潃" label="鏀惰揣鍦板潃" width="180"/>
+        <el-table-column prop="鎵�灞為泦鍥�" label="鎵�灞為泦鍥�" width="180"/>
+        <el-table-column prop="绛夌骇" label="绛夌骇" width="180"/>
+        <el-table-column prop="鍗曟嵁鐘舵��" label="鍗曟嵁鐘舵��" width="180"/>
+        <el-table-column prop="瀹℃牳鍛�" label="瀹℃牳鍛�" width="180"/>
+        <el-table-column prop="瀹℃牳鏃ユ湡" label="瀹℃牳鏃ユ湡" width="180"/>
+        <el-table-column prop="鎹㈢畻鍗曚綅" label="鎹㈢畻鍗曚綅" width="180"/>
+        <el-table-column prop="澶囨敞" label="澶囨敞" width="180"/>
+        <el-table-column fixed="left" label="鎿嶄綔" width="120">
+          <template #default>
+            <el-button link type="primary" size="small" @click="handleClick"
+            >淇敼</el-button
+            >
+            <el-button link type="primary" size="small">鍒犻櫎</el-button>
+          </template>
+        </el-table-column>
+      </el-table>
+    </div>
+  </div>
+</template>
+
+<style>
+</style>
\ No newline at end of file
diff --git a/north-glass-erp/northglass-erp/src/views/mm/mainTrader/Trader.vue b/north-glass-erp/northglass-erp/src/views/mm/mainTrader/Trader.vue
new file mode 100644
index 0000000..7a82cd9
--- /dev/null
+++ b/north-glass-erp/northglass-erp/src/views/mm/mainTrader/Trader.vue
@@ -0,0 +1,59 @@
+<!--  渚涘簲鍟嗙鐞嗕富椤甸潰 -->
+
+
+<script setup>
+import {ref} from "vue";
+import {ArrowLeftBold, ArrowRight, Search} from "@element-plus/icons-vue";
+import request from "@/utils/request";
+import deepClone from "@/utils/deepClone";
+import {ElMessage} from "element-plus";
+import {useRouter} from "vue-router";
+import  GlassType from '@/components/basic/product/GlassType.vue'
+
+
+const router = useRouter()
+
+</script>
+
+<template>
+  <div id="main">
+    <div id="div-title">
+      <el-breadcrumb :separator-icon="ArrowRight">
+        <el-breadcrumb-item :to="{ path: '/main/trader/SelectTrader' }">浜у搧鏌ヨ</el-breadcrumb-item>
+        <el-breadcrumb-item :to="{ path: '/main/trader/CreateTrader' }">鍒涘缓</el-breadcrumb-item>
+      </el-breadcrumb>
+
+    </div>
+
+    <div id="main-body">
+      <router-view  />
+    </div>
+  </div>
+</template>
+
+<style scoped>
+#main{
+  width: 100%;
+  height: 100%;
+}
+#div-title{
+  height: 5%;
+  width: 100%;
+}
+#searchButton{
+  margin-top: -5px;
+  margin-left: 1rem;
+}
+#searchButton1{
+//margin-left: 10rem;
+}
+/*main-body鏍峰紡*/
+#main-body{
+  width: 99%;
+  height: 92%;
+  margin-top: 1%;
+}
+#select{
+  margin-left:0.5rem;
+}
+</style>
\ No newline at end of file
diff --git a/north-glass-erp/northglass-erp/src/views/mm/purchaseOrder/Create.vue b/north-glass-erp/northglass-erp/src/views/mm/purchaseOrder/Create.vue
new file mode 100644
index 0000000..2671daf
--- /dev/null
+++ b/north-glass-erp/northglass-erp/src/views/mm/purchaseOrder/Create.vue
@@ -0,0 +1,290 @@
+
+
+<template>
+<div>
+  <el-form label-width="100px"   :inline="true" :model="formInline" class="demo-form-inline">
+    <el-form-item label="閲囪喘绫诲瀷" class="item-style" >
+      <el-select v-model="form.buyType" class="m-2" placeholder="閫夋嫨閲囪喘绫诲瀷" clearable >
+        <el-option
+            v-for="item in CGTypeOptions"
+            :key="item.value"
+            :label="item.label"
+            :value="item.value"
+        />
+      </el-select>
+    </el-form-item>
+
+    <el-form-item label="閲囪喘閮ㄩ棬" class="item-style" >
+      <el-select v-model="cgBuMen" class="m-2" placeholder="閫夋嫨閲囪喘閮ㄩ棬" clearable >
+        <el-option
+            v-for="item in CGBuMenOptions"
+            :key="item.value"
+            :label="item.label"
+            :value="item.value"
+        />
+      </el-select>
+    </el-form-item>
+
+    <el-form-item label="渚涘簲鍟�" class="item-style" >
+      <el-cascader
+          placeholder="閫夋嫨渚涘簲鍟�"
+          :options="buyerOptions"
+          filterable
+          clearable
+          empty-text="empty-text"
+          :v-model="form.supplier"
+      >
+      </el-cascader>
+    </el-form-item>
+
+
+    <el-form-item label="閲囪喘鍛�" class="item-style" >
+      <el-select v-model="form.buyer" class="m-2" placeholder="閫夋嫨閲囪喘閮ㄩ棬" clearable >
+        <el-option
+            v-for="item in BuyerOptions"
+            :key="item.value"
+            :label="item.label"
+            :value="item.value"
+        />
+      </el-select>
+    </el-form-item>
+
+    <el-form-item label="閲囪喘缁勭粐" class="item-style" >
+     <el-input v-model="form.buyItem" placeholder="閲囪喘缁勭粐" clearable ></el-input>
+    </el-form-item>
+
+    <el-form-item label="鍒惰〃鏃ユ湡" class="item-style" >
+
+        <el-date-picker
+            v-model="form.date"
+            type="date"
+            placeholder="閫夋嫨鍒惰〃鏃ユ湡"
+            style="width: 100%"
+        />
+
+    </el-form-item>
+    <el-form-item class="item-style" >
+      <el-row :gutter="10">
+
+        <el-col :span="6" :offset="6">
+          <el-button type="primary" @click="onSubmit">淇濆瓨</el-button>
+        </el-col>
+        <el-col :span="6" :offset="6">
+          <el-button>鍙栨秷</el-button>
+        </el-col>
+
+
+
+
+      </el-row>
+
+    </el-form-item>
+  </el-form>
+
+<div>
+  <el-button class="mt-4" style="width: 10%" @click="onAddItem"
+  >娣诲姞</el-button>
+  <el-table :data="tableData" style="width: 100%" height="520" border>
+    <el-table-column fixed="left" label="鎿嶄綔" width="60">
+      <template #default="scope">
+        <el-button
+            link
+            type="primary"
+            size="small"
+            @click.prevent="deleteRow(scope.$index)"
+        >
+          鍒犻櫎
+        </el-button>
+      </template>
+    </el-table-column>
+    <el-table-column fixed prop="wlcode" label="鐗╂枡缂栫爜" width="150" />
+    <el-table-column prop="wlname" label="鐗╂枡鍚嶇О" width="200" />
+    <el-table-column prop="cd" label="浜у湴" width="120" />
+    <el-table-column prop="kd" label="瀹藉害" width="60" />
+    <el-table-column prop="gd" label="楂樺害" width="60" />
+    <el-table-column prop="hd" label="鍘氬害" width="60" />
+    <el-table-column prop="xh" label="鍨嬪彿" width="80" />
+    <el-table-column prop="hd" label="鍗曚綅鏁伴噺" width="100" />
+    <el-table-column prop="hd" label="鍗曚綅" width="60" />
+    <el-table-column prop="hd" label="绠辨暟" width="60" />
+    <el-table-column prop="hd" label="鍗曠墖闈㈢Н" width="120" />
+    <el-table-column prop="hd" label="鍗曚环" width="60" />
+    <el-table-column prop="hd" label="鎬绘暟閲�" width="90" />
+    <el-table-column prop="hd" label="鎬婚潰绉�" width="90" />
+    <el-table-column prop="hd" label="鎬婚噾棰�" width="90" />
+    <el-table-column prop="hd" label="澶囨敞" width="120" />
+
+  </el-table>
+
+</div>
+</div>
+</template>
+
+<script setup>
+import { ref,reactive } from 'vue'
+
+// do not use same name with ref
+const form = reactive({
+  name: '',
+  region: '',
+  date: '',
+  delivery: false,
+  type: [],
+  resource: '',
+  desc: '',
+  supplier:'',
+  buyer:'',
+  buyItem:'',
+  buyType:''
+
+})
+
+const onSubmit = () => {
+  console.log('submit!')
+}
+const buyerOptions = [
+  {value: '0', label: '渚涘簲鍟�1'},
+  {value: '1', label: '渚涘簲鍟�2'},
+  {value: '2', label: '渚涘簲鍟�3'},
+  {value: '3', label: '渚涘簲鍟�4'},
+  {value: '4', label: '渚涘簲鍟�5'},
+  {value: '5', label: '渚涘簲鍟�6'},
+]
+
+
+
+const value = ref('')
+const cgBuMen = ref('')
+
+const CGTypeOptions = [
+  {
+    value: '1',
+    label: '鏍囧噯绫诲瀷',
+  },
+  {
+    value: '2',
+    label: '闈炴爣鍑嗙被鍨�',
+  },
+  {
+    value: '3',
+    label: '杩藉姞閲囪喘',
+  },
+
+]
+
+
+const CGBuMenOptions=[
+  {
+    value: '0',
+    label: '閲囪喘鍗庡寳閮�',
+  },
+  {
+    value: '1',
+    label: '閲囪喘涓滃崡閮�',
+  },
+  {
+    value: '2',
+    label: '閲囪喘瑗垮寳閮�',
+  },
+  {
+    value: '3',
+    label: '閲囪喘涓師閮�',
+  },
+  {
+    value: '4',
+    label: '閲囪喘澶栧浗閮�',
+  },
+
+]
+
+const BuyerOptions=[
+  {
+    value: '0',
+    label: '閲囪喘鍛�1',
+  },
+  {
+    value: '1',
+    label: '閲囪喘鍛�2',
+  },
+  {
+    value: '2',
+    label: '閲囪喘鍛�3',
+  },
+  {
+    value: '3',
+    label: '閲囪喘鍛�4',
+  },
+  {
+    value: '4',
+    label: '閲囪喘鍛�5',
+  },
+
+]
+
+import dayjs from 'dayjs'
+
+const now = new Date()
+
+const tableData = ref([
+  {
+    wlcode: '202305010000001',
+    wlname: '杩欐槸涓�涓墿鏂欏悕绉�',
+    cd: '浜у湴12',
+    hd: '8',
+    gd: '2440',
+    kd: '3660',
+    xh:'CN10P'
+  },
+  {
+    wlcode: '202305010000001',
+    wlname: '杩欐槸涓�涓墿鏂欏悕绉�',
+    cd: '浜у湴1',
+    gd: '2440',
+    kd: '3660',
+    hd: '5',
+    xh:'CN10P'
+  },
+  {
+    wlcode: '202305010000001',
+    wlname: '杩欐槸涓�涓墿鏂欏悕绉�',
+    cd: '浜у湴13',
+    hd: '12',
+    gd: '2440',
+    kd: '3660',
+    xh:'CN10P'
+  },
+])
+
+
+
+const onAddItem = () => {
+  now.setDate(now.getDate() + 1)
+  tableData.value.push({
+    wlcode: dayjs(now).format('YYYYMMDDHHmms')+'01',
+    wlname: '杩欐槸涓�涓墿鏂欏悕绉�',
+    cd: '浜у湴1',
+    hd: '6',
+    xh:'CN10P',
+    gd: '2440',
+    kd: '3660',
+  })
+}
+
+/*const deleteRow = (index: number) => {
+  tableData.value.splice(index, 1)
+}*/
+
+</script>
+
+
+<style scoped>
+.custom-header {
+  .el-checkbox {
+    display: flex;
+    height: unset;
+  }
+}
+.item-style{
+  width:300px;
+}
+</style>
\ No newline at end of file
diff --git a/north-glass-erp/northglass-erp/src/views/mm/purchaseOrder/PurchaseOrder.vue b/north-glass-erp/northglass-erp/src/views/mm/purchaseOrder/PurchaseOrder.vue
new file mode 100644
index 0000000..4a09fb0
--- /dev/null
+++ b/north-glass-erp/northglass-erp/src/views/mm/purchaseOrder/PurchaseOrder.vue
@@ -0,0 +1,33 @@
+<template>
+  <div class="common-layout">
+    <el-container>
+      <el-header style="height: 30px">
+        <el-breadcrumb :separator-icon="ArrowRight" >
+          <el-breadcrumb-item>閲囪喘涓庣墿璧�</el-breadcrumb-item>
+          <el-breadcrumb-item>閲囪喘璁㈠崟
+          </el-breadcrumb-item>
+          <el-breadcrumb-item :to="{path:'/main/purchaseOrder/SelectPurchaseOrder'}">鏌ヨ
+          </el-breadcrumb-item>
+          <el-breadcrumb-item :to="{path:'/main/purchaseOrder/CreatePurchaseOrder'}">鍒涘缓
+          </el-breadcrumb-item>
+
+        </el-breadcrumb>
+      </el-header>
+      <el-main style="padding: 0">
+        <router-view/>
+      </el-main>
+      <!--      <el-footer>Footer</el-footer>-->
+    </el-container>
+  </div>
+</template>
+
+
+<script setup>
+import {nextTick, ref} from 'vue'
+import {ArrowRight, Search} from "@element-plus/icons-vue";
+</script>
+
+
+<style scoped>
+
+</style>
\ No newline at end of file
diff --git a/north-glass-erp/northglass-erp/src/views/mm/purchaseOrder/Select.vue b/north-glass-erp/northglass-erp/src/views/mm/purchaseOrder/Select.vue
new file mode 100644
index 0000000..ef27b53
--- /dev/null
+++ b/north-glass-erp/northglass-erp/src/views/mm/purchaseOrder/Select.vue
@@ -0,0 +1,258 @@
+<template>
+  <el-container>
+    <el-header class="m-header" style="height: auto">
+      <el-row :gutter="10" style="margin-bottom: 5px">
+        <el-col :span="7">
+          <el-date-picker
+              v-model="datevalue"
+              type="daterange"
+              unlink-panels
+              range-separator="鍒�"
+              start-placeholder="寮�濮嬫棩鏈�"
+              end-placeholder="缁撴潫鏃ユ湡"
+              :shortcuts="shortcuts"
+              :size="size"
+              format="YYYY/MM/DD"
+              value-format="YYYY-MM-DD"
+          />
+
+        </el-col>
+
+        <el-col :span="2">
+          <el-button
+              id="select"
+              type="primary"
+              :icon="Search"
+              @click="autoAddRow">鏌ヨ
+          </el-button>
+        </el-col>
+      </el-row>
+
+    </el-header>
+    <el-main style="padding-top: 5px">
+      <div @scroll="handleTableScroll">
+
+        <el-table :data="tableData" empty-text="鏆傛棤鏁版嵁" style="width: 100%" height="620px" border
+                  show-summary
+                  sum-text=" ">
+          <el-table-column fixed="left" prop="rIndex" label="" width="50" align="center"></el-table-column>
+
+          <el-table-column fixed="left" label="鎿嶄綔" width="120">
+            <template #default="scope">
+              <el-button
+                  link
+                  type="primary"
+                  size="small"
+                  @click.prevent="editRow(scope.$index)"
+              >
+                缂栬緫
+              </el-button>
+              <el-button
+                  link
+                  type="primary"
+                  size="small"
+                  @click.prevent="deleteRow(scope.$index)"
+              >
+                鍒犻櫎
+              </el-button>
+            </template>
+          </el-table-column>
+
+
+          <el-table-column prop="ordernumber" label="閲囪喘鍗曞彿" width="150"/>
+          <el-table-column prop="name" label="渚涘簲鍟�" width="120"/>
+          <el-table-column prop="strockNumber" label="鐗╂枡缂栧彿" width="200"/>
+          <el-table-column prop="city" label="鐗╂枡鍚嶇О" width="120"/>
+          <el-table-column prop="width" sortable label="瀹藉害" width="120"/>
+          <el-table-column prop="height" sortable label="楂樺害" width="120"/>
+          <el-table-column prop="thick" sortable label="鍘氬害" width="120"/>
+          <el-table-column prop="zip" label="鍨嬪彿" width="120"/>
+          <el-table-column prop="number" label="鍗曚綅" width="120"/>
+          <el-table-column prop="number" sortable label="涓嶅惈绋庡崟浠�" width="120"/>
+          <el-table-column prop="number" label="鏁伴噺" width="120" show-summary="ture"/>
+          <el-table-column prop="number" label="宸查噰璐暟閲�" width="120"/>
+          <el-table-column prop="zip" sortable label="閲戦" width="120"/>
+          <el-table-column prop="zip" label="涓嶅惈绋庨噾棰�" width="120"/>
+          <el-table-column prop="date" label="绋庣巼" width="120"/>
+          <el-table-column prop="date" label="搴撳瓨" width="120"/>
+          <el-table-column prop="zip" label="鍛ㄧ敤閲�" width="120"/>
+          <el-table-column prop="zip" label="鏈堢敤閲�" width="120"/>
+          <el-table-column prop="state" label="鍗曟嵁鐘舵��" width="120"/>
+          <el-table-column prop="ordernumber" label="閿�鍞崟鍙�" width="200"/>
+          <el-table-column prop="date" label="鍒跺崟鏃ユ湡" width="120"/>
+          <el-table-column prop="zip" label="鍒跺崟浜�" width="120"/>
+          <el-table-column prop="zip" label="閲囪喘閮ㄩ棬" width="120"/>
+          <el-table-column prop="zip" label="閲囪喘缁勭粐" width="120"/>
+          <el-table-column prop="zip" label="澶囨敞" width="200"/>
+
+
+        </el-table>
+
+
+      </div>
+    </el-main>
+  </el-container>
+</template>
+
+
+<script setup>
+import {ref} from 'vue'
+import {Plus, Search} from "@element-plus/icons-vue";
+
+const s_wuliaomingcheng = ref('')
+const s_buyOrderNumber = ref('')
+const s_width = ref('')
+const s_height = ref('')
+const s_thick = ref('')
+
+
+const options = [
+  {
+    value: '0',
+    label: '鍏ㄩ儴'
+  },
+  {
+    value: '1',
+    label: '鍘熺墖'
+  },
+  {
+    value: '2',
+    label: '鍖栧鍝�'
+  },
+  {
+    value: '3',
+    label: '宸ュ叿'
+  },
+  {
+    value: '4',
+    label: '鏈ㄧ'
+  },
+  {
+    value: '5',
+    label: '鐧界幓'
+  },
+]
+
+const buyerOptions = [
+  {
+    value: '0',
+    label: '鍏ㄩ儴'
+  },
+  {
+    value: '1',
+    label: '閲囪喘鐢�'
+  },
+  {
+    value: '2',
+    label: '閲囪喘涔�'
+  },
+]
+
+const stateOptions = [
+  {
+    value: '0',
+    label: '寰呭鏍�'
+  },
+  {
+    value: '1',
+    label: '寰呴噰璐�'
+  },
+  {
+    value: '2',
+    label: '宸查噰璐�'
+  },
+]
+
+import dayjs from 'dayjs'
+import 'dayjs/locale/zh-cn'
+
+const now = new Date()
+
+const tableData = ref([])
+
+const autoAddRow = () => {
+  for (let i = 0; i < 10; i++) {
+    now.setDate(now.getDate() + 1)
+    const randomInt = Math.floor(Math.random() * 999) + 1000;
+    const randomOrderInt = Math.floor(Math.random() * 99) + 100;
+    const randomSumInt = Math.floor(Math.random() * 99) + 10;
+    var t = i % 2 === 0 ? 5 : 6;
+    var s = i % 3 === 0 ? '' : i % 4 === 0 ? '宸查噰璐�' : '寰呭鏍�';
+    var oNo = 'NGNO100000' + randomOrderInt;//璁㈠崟缂栧彿
+    var wlNo = 'NGWL100000' + randomInt
+    tableData.value.push({
+
+      date: dayjs(now).format('YYYY-MM-DD'),
+      name: '渚涘簲鍟�' + randomSumInt,
+      state: s,
+      city: 'Los Angeles',
+      address: 'No. 189, Grove St, Los Angeles',
+      zip: 'CA 90036',
+      number: randomInt,
+      width: '3660',
+      height: '2440',
+      rIndex: tableData.value.length + 1,
+      ordernumber: oNo,
+      strockNumber: wlNo,
+      thick: t
+    })
+  }
+}
+
+const CreatePurchaseOrder = () => {
+
+
+}
+
+const datevalue = ref('')
+
+const shortcuts = [
+  {
+    text: '杩戜竴鍛�',
+    value: () => {
+      const end = new Date()
+      const start = new Date()
+      start.setTime(start.getTime() - 3600 * 1000 * 24 * 7)
+      return [start, end]
+    },
+  },
+  {
+    text: '杩戜竴涓湀',
+    value: () => {
+      const end = new Date()
+      const start = new Date()
+      start.setTime(start.getTime() - 3600 * 1000 * 24 * 30)
+      return [start, end]
+    },
+  },
+  {
+    text: '杩戜笁涓湀',
+    value: () => {
+      const end = new Date()
+      const start = new Date()
+      start.setTime(start.getTime() - 3600 * 1000 * 24 * 90)
+      return [start, end]
+    },
+  },
+]
+
+</script>
+
+
+<style scoped>
+.el-row {
+  margin-bottom: 20px;
+}
+
+.el-row:last-child {
+  margin-bottom: 0;
+}
+
+.el-col {
+  border-radius: 4px;
+}
+
+.m-header {
+  height: 32px;
+}
+</style>
\ No newline at end of file
diff --git a/north-glass-erp/northglass-erp/src/views/mm/purchaseReturn/PurchaseReturn.vue b/north-glass-erp/northglass-erp/src/views/mm/purchaseReturn/PurchaseReturn.vue
new file mode 100644
index 0000000..2e08960
--- /dev/null
+++ b/north-glass-erp/northglass-erp/src/views/mm/purchaseReturn/PurchaseReturn.vue
@@ -0,0 +1,39 @@
+<template>
+  <div class="common-layout">
+    <el-container>
+      <el-header style="height: 30px">
+
+        <el-breadcrumb :separator-icon="ArrowRight">
+          <el-breadcrumb-item>閲囪喘涓庣墿璧�</el-breadcrumb-item>
+          <el-breadcrumb-item> 閲囪喘閫�璐�
+
+          </el-breadcrumb-item>
+          <el-breadcrumb-item :to="{path:'/main/purchaseReturn/SelectPurchaseReturn'}"> 鏌ヨ
+
+          </el-breadcrumb-item>
+
+          <el-breadcrumb-item >
+
+          </el-breadcrumb-item>
+        </el-breadcrumb>
+      </el-header>
+      <el-main style="padding: 0">
+        <router-view/>
+      </el-main>
+      <!--      <el-footer>Footer</el-footer>-->
+    </el-container>
+  </div>
+</template>
+
+
+<script setup>
+
+import {ArrowRight} from "@element-plus/icons-vue";
+
+
+</script>
+
+
+<style scoped>
+
+</style>
\ No newline at end of file
diff --git a/north-glass-erp/northglass-erp/src/views/mm/purchaseReturn/Select.vue b/north-glass-erp/northglass-erp/src/views/mm/purchaseReturn/Select.vue
new file mode 100644
index 0000000..4394fdd
--- /dev/null
+++ b/north-glass-erp/northglass-erp/src/views/mm/purchaseReturn/Select.vue
@@ -0,0 +1,255 @@
+<template>
+  <el-container>
+    <el-header class="m-header" style="height: auto">
+      <el-row :gutter="10" style="margin-bottom: 5px">
+
+        <el-col :span="7">
+          <el-date-picker
+              v-model="datevalue"
+              type="daterange"
+              unlink-panels
+              range-separator="鍒�"
+              start-placeholder="寮�濮嬫棩鏈�"
+              end-placeholder="缁撴潫鏃ユ湡"
+              :shortcuts="shortcuts"
+              :size="size"
+              format="YYYY/MM/DD"
+              value-format="YYYY-MM-DD"
+          />
+
+        </el-col>
+
+        <el-col :span="2">
+          <el-button
+              id="select"
+              type="primary"
+              :icon="Search"
+              @click="autoAddRow">鏌ヨ
+          </el-button>
+        </el-col>
+      </el-row>
+
+    </el-header>
+    <el-main style="padding-top: 5px">
+      <div @scroll="handleTableScroll">
+
+        <el-table :data="tableData" empty-text="鏆傛棤鏁版嵁" style="width: 100%" height="620px" border
+                  show-summary
+                  sum-text=" ">
+          <el-table-column fixed="left" prop="rIndex" label="" width="50" align="center"></el-table-column>
+
+          <el-table-column fixed="left" label="鎿嶄綔" width="120">
+            <template #default="scope">
+              <el-button
+                  link
+                  type="primary"
+                  size="small"
+                  @click.prevent="deleteRow(scope.$index)"
+              >
+                缂栬緫
+              </el-button>
+              <el-button
+                  link
+                  type="primary"
+                  size="small"
+                  @click.prevent="deleteRow(scope.$index)"
+              >
+                鍒犻櫎
+              </el-button>
+            </template>
+          </el-table-column>
+
+
+          <el-table-column prop="ordernumber" label="閲囪喘鍗曞彿" width="150"/>
+          <el-table-column prop="name" label="渚涘簲鍟�" width="120"/>
+          <el-table-column prop="strockNumber" label="鐗╂枡缂栧彿" width="200"/>
+          <el-table-column prop="city" label="鐗╂枡鍚嶇О" width="120"/>
+          <el-table-column prop="width" sortable label="瀹藉害" width="120"/>
+          <el-table-column prop="height" sortable label="楂樺害" width="120"/>
+          <el-table-column prop="thick" sortable label="鍘氬害" width="120"/>
+          <el-table-column prop="zip" label="鍨嬪彿" width="120"/>
+          <el-table-column prop="number" label="鍗曚綅" width="120"/>
+          <el-table-column prop="number" sortable label="涓嶅惈绋庡崟浠�" width="120"/>
+          <el-table-column prop="number" label="鏁伴噺" width="120" show-summary="ture"/>
+          <el-table-column prop="number" label="宸查噰璐暟閲�" width="120"/>
+          <el-table-column prop="zip" sortable label="閲戦" width="120"/>
+          <el-table-column prop="zip" label="涓嶅惈绋庨噾棰�" width="120"/>
+          <el-table-column prop="date" label="绋庣巼" width="120"/>
+          <el-table-column prop="date" label="搴撳瓨" width="120"/>
+          <el-table-column prop="zip" label="鍛ㄧ敤閲�" width="120"/>
+          <el-table-column prop="zip" label="鏈堢敤閲�" width="120"/>
+          <el-table-column prop="state" label="鍗曟嵁鐘舵��" width="120"/>
+          <el-table-column prop="ordernumber" label="閿�鍞崟鍙�" width="200"/>
+          <el-table-column prop="date" label="鍒跺崟鏃ユ湡" width="120"/>
+          <el-table-column prop="zip" label="鍒跺崟浜�" width="120"/>
+          <el-table-column prop="zip" label="閲囪喘閮ㄩ棬" width="120"/>
+          <el-table-column prop="zip" label="閲囪喘缁勭粐" width="120"/>
+          <el-table-column prop="zip" label="澶囨敞" width="200"/>
+
+
+        </el-table>
+
+
+      </div>
+    </el-main>
+  </el-container>
+</template>
+
+
+<script setup>
+
+import {nextTick, ref} from 'vue'
+import {Search} from "@element-plus/icons-vue";
+
+const s_wuliaomingcheng = ref('')
+const s_buyOrderNumber = ref('')
+const s_width = ref('')
+const s_height = ref('')
+const s_thick = ref('')
+
+
+const options = [
+  {
+    value: '0',
+    label: '鍏ㄩ儴'
+  },
+  {
+    value: '1',
+    label: '鍘熺墖'
+  },
+  {
+    value: '2',
+    label: '鍖栧鍝�'
+  },
+  {
+    value: '3',
+    label: '宸ュ叿'
+  },
+  {
+    value: '4',
+    label: '鏈ㄧ'
+  },
+  {
+    value: '5',
+    label: '鐧界幓'
+  },
+]
+
+const buyerOptions = [
+  {
+    value: '0',
+    label: '鍏ㄩ儴'
+  },
+  {
+    value: '1',
+    label: '閲囪喘鐢�'
+  },
+  {
+    value: '2',
+    label: '閲囪喘涔�'
+  },
+]
+
+const stateOptions = [
+  {
+    value: '0',
+    label: '寰呭鏍�'
+  },
+  {
+    value: '1',
+    label: '寰呴噰璐�'
+  },
+  {
+    value: '2',
+    label: '宸查噰璐�'
+  },
+]
+
+import dayjs from 'dayjs'
+import 'dayjs/locale/zh-cn'
+
+const now = new Date()
+
+const tableData = ref([])
+
+const autoAddRow = () => {
+  for (let i = 0; i < 10; i++) {
+    now.setDate(now.getDate() + 1)
+    const randomInt = Math.floor(Math.random() * 999) + 1000;
+    const randomOrderInt = Math.floor(Math.random() * 99) + 100;
+    const randomSumInt = Math.floor(Math.random() * 99) + 10;
+    var t = i % 2 === 0 ? 5 : 6;
+    var s = i % 3 === 0 ? '' : i % 4 === 0 ? '宸查噰璐�' : '寰呭鏍�';
+    var oNo = 'NGNO100000' + randomOrderInt;//璁㈠崟缂栧彿
+    var wlNo = 'NGWL100000' + randomInt
+    tableData.value.push({
+
+      date: dayjs(now).format('YYYY-MM-DD'),
+      name: '渚涘簲鍟�' + randomSumInt,
+      state: s,
+      city: 'Los Angeles',
+      address: 'No. 189, Grove St, Los Angeles',
+      zip: 'CA 90036',
+      number: randomInt,
+      width: '3660',
+      height: '2440',
+      rIndex: tableData.value.length + 1,
+      ordernumber: oNo,
+      strockNumber: wlNo,
+      thick: t
+    })
+  }
+}
+
+const datevalue = ref('')
+
+const shortcuts = [
+  {
+    text: '杩戜竴鍛�',
+    value: () => {
+      const end = new Date()
+      const start = new Date()
+      start.setTime(start.getTime() - 3600 * 1000 * 24 * 7)
+      return [start, end]
+    },
+  },
+  {
+    text: '杩戜竴涓湀',
+    value: () => {
+      const end = new Date()
+      const start = new Date()
+      start.setTime(start.getTime() - 3600 * 1000 * 24 * 30)
+      return [start, end]
+    },
+  },
+  {
+    text: '杩戜笁涓湀',
+    value: () => {
+      const end = new Date()
+      const start = new Date()
+      start.setTime(start.getTime() - 3600 * 1000 * 24 * 90)
+      return [start, end]
+    },
+  },
+]
+
+</script>
+
+
+<style scoped>
+.el-row {
+  margin-bottom: 20px;
+}
+
+.el-row:last-child {
+  margin-bottom: 0;
+}
+
+.el-col {
+  border-radius: 4px;
+}
+
+.m-header {
+  height: 32px;
+}
+</style>
\ No newline at end of file
diff --git a/north-glass-erp/northglass-erp/src/views/mm/purchaseStorage/PurchaseStorage.vue b/north-glass-erp/northglass-erp/src/views/mm/purchaseStorage/PurchaseStorage.vue
new file mode 100644
index 0000000..d09a40b
--- /dev/null
+++ b/north-glass-erp/northglass-erp/src/views/mm/purchaseStorage/PurchaseStorage.vue
@@ -0,0 +1,36 @@
+<template>
+  <div class="common-layout">
+    <el-container>
+      <el-header style="height: 30px">
+
+        <el-breadcrumb :separator-icon="ArrowRight">
+          <el-breadcrumb-item>閲囪喘涓庣墿璧�</el-breadcrumb-item>
+          <el-breadcrumb-item>閲囪喘鍏ュ簱
+
+          </el-breadcrumb-item>
+          <el-breadcrumb-item :to="{path:'/main/purchaseStorage/SelectPurchaseStorage'}">鏌ヨ
+
+          </el-breadcrumb-item>
+
+        </el-breadcrumb>
+      </el-header>
+      <el-main style="padding: 0">
+        <router-view/>
+      </el-main>
+
+      <!--      <el-footer>Footer</el-footer>-->
+    </el-container>
+  </div>
+</template>
+
+
+<script setup>
+import {useRouter} from "vue-router";
+
+const router = useRouter();
+import {ArrowRight} from "@element-plus/icons-vue";
+</script>
+
+
+<style scoped>
+</style>
\ No newline at end of file
diff --git a/north-glass-erp/northglass-erp/src/views/mm/purchaseStorage/Select.vue b/north-glass-erp/northglass-erp/src/views/mm/purchaseStorage/Select.vue
new file mode 100644
index 0000000..8448b04
--- /dev/null
+++ b/north-glass-erp/northglass-erp/src/views/mm/purchaseStorage/Select.vue
@@ -0,0 +1,276 @@
+<template>
+  <el-container>
+    <el-header class="m-header" style="height: auto">
+      <!-- -->
+      <el-row :gutter="10" style="margin-bottom: 5px">
+
+        <el-col :span="7">
+          <el-date-picker
+              v-model="datevalue"
+              type="daterange"
+              unlink-panels
+              range-separator="鍒�"
+              start-placeholder="寮�濮嬫棩鏈�"
+              end-placeholder="缁撴潫鏃ユ湡"
+              :shortcuts="shortcuts"
+              :size="size"
+              format="YYYY/MM/DD"
+              value-format="YYYY-MM-DD"
+          />
+
+        </el-col>
+        <el-col :span="3">
+          <el-button
+              id="select"
+              type="primary"
+              :icon="Search"
+              @click="autoAddRow">鏌ヨ
+          </el-button>
+        </el-col>
+      </el-row>
+
+    </el-header>
+    <el-main style="padding-top: 5px">
+      <el-table :data="tableData" empty-text="鏆傛棤鏁版嵁" style="width: 100%" height="620px" border show-summary
+                sum-text=" ">
+        <el-table-column fixed="left" prop="rIndex" label="" width="50" align="center"></el-table-column>
+
+        <el-table-column fixed="left" label="鎿嶄綔" width="120">
+          <template #default="scope">
+            <el-button
+                link
+                type="primary"
+                size="small"
+                @click.prevent="deleteRow(scope.$index)"
+            >
+              缂栬緫
+            </el-button>
+            <el-button
+                link
+                type="primary"
+                size="small"
+                @click.prevent="deleteRow(scope.$index)"
+            >
+              鍒犻櫎
+            </el-button>
+          </template>
+        </el-table-column>
+
+
+        <el-table-column prop="stockItem" label="搴撳瓨缁勭粐" width="150"/>
+        <el-table-column prop="wuliaoCode" label="鐗╂枡缂栧彿" width="220"/>
+        <el-table-column prop="rukuCode" label="鍏ュ簱鍗曞彿" width="120"/>
+        <el-table-column prop="storageType" label="鍏ュ簱绫诲瀷" width="120"/>
+        <el-table-column prop="buyerCode" label="閲囪喘鍗曞彿" width="150"/>
+        <el-table-column prop="wuliaoName" label="鐗╂枡鍚嶇О" width="120"/>
+        <el-table-column prop="state" label="鍗曟嵁鐘舵��" width="120"/>
+        <el-table-column prop="shname" label="瀹℃牳鍛�" width="120"/>
+        <el-table-column prop="date" sortable label="瀹℃牳鏃ユ湡" width="120"/>
+        <el-table-column prop="date" sortable label="鍏ュ簱鏃ユ湡" width="120"/>
+        <el-table-column prop="buyerName" label="閲囪喘鍛�" width="120"/>
+        <el-table-column prop="cgName" sortable label="浠撶鍛�" width="120"/>
+        <el-table-column prop="zip" label="鍒跺崟浜�" width="120"/>
+        <el-table-column prop="address" label="浜у湴" width="120"/>
+        <el-table-column prop="number" sortable label="瀹藉害" width="120"/>
+        <el-table-column prop="number" sortable label="鍘氬害" width="120"/>
+        <el-table-column prop="kcCode" label="搴撳瓨缂栧彿" width="150"/>
+        <el-table-column prop="number" sortable label="绠辨暟" width="120"/>
+        <el-table-column prop="number" sortable label="鍗曠鐗囨暟" width="200"/>
+        <el-table-column prop="oneArea" sortable label="鍗曠墖闈㈢Н" width="120"/>
+        <el-table-column prop="number" sortable label="鎬婚潰绉�" width="120"/>
+        <el-table-column prop="number" sortable label="鎬绘暟閲�" width="120"/>
+        <el-table-column prop="number" sortable label="鎬婚噾棰�" width="120"/>
+        <el-table-column prop="date" sortable label="鐢熶骇鏃ユ湡" width="120"/>
+        <el-table-column prop="zip" label="搴撳尯" width="120"/>
+        <el-table-column prop="zip" label="澶囨敞" width="200"/>
+
+
+      </el-table>
+    </el-main>
+  </el-container>
+</template>
+
+<script setup>
+
+import {ref} from 'vue'
+import {ArrowRight, Search} from "@element-plus/icons-vue";
+
+
+const s_wuliaomingcheng = ref('')
+const s_buyOrderNumber = ref('')
+const s_width = ref('')
+const s_height = ref('')
+const s_thick = ref('')
+
+
+const options = [
+  {
+    value: '0',
+    label: '鍏ㄩ儴'
+  },
+  {
+    value: '1',
+    label: '鍘熺墖'
+  },
+  {
+    value: '2',
+    label: '鍖栧鍝�'
+  },
+  {
+    value: '3',
+    label: '宸ュ叿'
+  },
+  {
+    value: '4',
+    label: '鏈ㄧ'
+  },
+  {
+    value: '5',
+    label: '鐧界幓'
+  },
+]
+
+const buyerOptions = [
+  {
+    value: '0',
+    label: '鍏ㄩ儴'
+  },
+  {
+    value: '1',
+    label: '閲囪喘鐢�'
+  },
+  {
+    value: '2',
+    label: '閲囪喘涔�'
+  },
+]
+
+const stateOptions = [
+  {
+    value: '0',
+    label: '寰呭鏍�'
+  },
+  {
+    value: '1',
+    label: '寰呴噰璐�'
+  },
+  {
+    value: '2',
+    label: '宸查噰璐�'
+  },
+]
+
+const stockItemOptions = [
+  {
+    value: 0,
+    label: '浜哄伐搴�'
+  }, {
+    value: 1,
+    label: '璁″垝搴�'
+  }, {
+    value: 2,
+    label: '鑷姩鍖栧簱'
+  }, {
+    value: 3,
+    label: '浣欑墖搴�'
+  }, {
+    value: 4,
+    label: '娈嬬墖搴�'
+  }, {
+    value: 5,
+    label: '杈呮枡搴�'
+  },
+]
+import dayjs from 'dayjs'
+import 'dayjs/locale/zh-cn'
+
+const now = new Date()
+
+const tableData = ref([])
+
+const autoAddRow = () => {
+  for (let i = 0; i < 10; i++) {
+    now.setDate(now.getDate() + 1)
+    const randomWLInt = Math.floor(Math.random() * 99999) + 100000;
+    const randomInt = Math.floor(Math.random() * 999) + 1000;
+    const randomSumInt = Math.floor(Math.random() * 99) + 10;
+    const randomErInt = Math.floor(Math.random() * 9);
+    const randomErInt2 = Math.floor(Math.random() * 9);
+    const randomErInt3 = Math.floor(Math.random() * 9);
+    const t = i % 3 === 0 ? 5 : i % 4 === 0 ? 6 : i % 5 === 0 ? 8 : i % 7 === 0 ? 10 : 12;
+    const sItem = i % 3 === 0 ? '璁″垝搴�' : i % 4 === 0 ? '浜哄伐搴�' : i % 5 === 0 ? '鑷姩鍖栧簱' : i % 7 === 0 ? '浣欑墖搴�' : '杈呮枡搴�';
+    tableData.value.push({
+      date: dayjs(now).format('YYYY-MM-DD'),
+      name: '渚涘簲鍟�' + randomSumInt,
+      state: '鏈鏍�',
+      stockItem: sItem,
+      wuliaoCode: 'WL9000000000' + randomWLInt,
+      rukuCode: 'RK2312' + randomInt,
+      storageType: '鏍囧噯閲囪喘',
+      buyerCode: 'CG2312000' + randomInt,
+      zip: 'CA 90036',
+      number: randomInt,
+      shname: '瀹℃牳' + randomErInt,
+      buyerName: '閲囪喘' + randomErInt2,
+      cgName: '浠撶' + randomErInt3,
+      address: '杩欐槸鐗╂枡浜у湴',
+      kcCode: 'KC2312999' + randomInt,
+      oneArea: randomSumInt / 10,
+      rIndex: tableData.value.length + 1,
+      thick: t
+    })
+  }
+}
+
+const datevalue = ref('')
+
+const shortcuts = [
+  {
+    text: '杩戜竴鍛�',
+    value: () => {
+      const end = new Date()
+      const start = new Date()
+      start.setTime(start.getTime() - 3600 * 1000 * 24 * 7)
+      return [start, end]
+    },
+  },
+  {
+    text: '杩戜竴涓湀',
+    value: () => {
+      const end = new Date()
+      const start = new Date()
+      start.setTime(start.getTime() - 3600 * 1000 * 24 * 30)
+      return [start, end]
+    },
+  },
+  {
+    text: '杩戜笁涓湀',
+    value: () => {
+      const end = new Date()
+      const start = new Date()
+      start.setTime(start.getTime() - 3600 * 1000 * 24 * 90)
+      return [start, end]
+    },
+  },
+]
+
+</script>
+
+<style scoped>
+
+.el-row {
+  margin-bottom: 20px;
+}
+
+.el-row:last-child {
+  margin-bottom: 0;
+}
+
+.el-col {
+  border-radius: 4px;
+}
+
+.m-header {
+  height: 64px;
+}
+</style>
\ No newline at end of file
diff --git a/north-glass-erp/northglass-erp/src/views/mm/stockReport/StockMonthReport.vue b/north-glass-erp/northglass-erp/src/views/mm/stockReport/StockMonthReport.vue
new file mode 100644
index 0000000..0ad6bc2
--- /dev/null
+++ b/north-glass-erp/northglass-erp/src/views/mm/stockReport/StockMonthReport.vue
@@ -0,0 +1,161 @@
+<template>
+  <el-container>
+    <el-header class="m-header" style="height: auto">
+                <el-row :gutter="10">
+                  <el-col :span="6">
+                    <el-date-picker
+                        v-model="datevalue"
+                        type="daterange"
+                        unlink-panels
+                        range-separator="鍒�"
+                        start-placeholder="寮�濮嬫棩鏈�"
+                        end-placeholder="缁撴潫鏃ユ湡"
+                        :shortcuts="shortcuts"
+                        :size="size"
+                        format="YYYY/MM/DD"
+                        value-format="YYYY-MM-DD"
+                    />
+                  </el-col>
+                  <el-col :span="2">
+                    <el-button
+                        id="select"
+                        type="primary"
+                        :icon="Search"
+                        @click="autoAddRow">鏌ヨ
+                    </el-button>
+
+                  </el-col>
+
+                </el-row>
+    </el-header>
+    <el-main style="padding-top: 5px">
+      <el-table :data="tableData" style="width: 100%" height="620" border show-summary sum-text=" "
+                empty-text="鏆傛棤鏁版嵁">
+        <el-table-column fixed="left" prop="rIndex" label="" width="50" align="center"></el-table-column>
+
+        <el-table-column fixed="left" label="鎿嶄綔" width="120">
+          <template #default="scope">
+            <el-button
+                link
+                type="primary"
+                size="small"
+                @click.prevent="deleteRow(scope.$index)"
+            >
+              鍒犻櫎
+            </el-button>
+            <el-button
+                link
+                type="primary"
+                size="small"
+                @click.prevent="deleteRow(scope.$index)"
+            >
+              鏍囪
+            </el-button>
+          </template>
+        </el-table-column>
+
+
+        <el-table-column prop="name" label="搴撳瓨缁勭粐" width="150"/>
+        <el-table-column prop="wlNumber" label="鐗╂枡缂栫爜" width="150"/>
+        <el-table-column prop="state" label="鐗╂枡鍚嶇О" width="120"/>
+        <el-table-column prop="city" label="浜у湴" width="120"/>
+        <el-table-column prop="kcNumber" label="搴撳瓨缂栧彿" width="150"/>
+        <el-table-column prop="width" sortable label="瀹藉害" width="120"/>
+        <el-table-column prop="height" sortable label="楂樺害" width="120"/>
+        <el-table-column prop="thick" sortable label="鍘氬害" width="120"/>
+        <el-table-column prop="zip" label="涓诲崟浣�" width="120"/>
+        <el-table-column prop="number" label="瀹夊叏搴撳瓨" width="120"/>
+        <el-table-column prop="number" sortable label="搴撳瓨鏁�" width="120"/>
+        <el-table-column prop="number" label="鍙敤搴撳瓨" width="120" show-summary="ture"/>
+        <el-table-column prop="number" label="鏈鏁伴噺" width="120"/>
+        <el-table-column prop="zip" sortable label="鎬婚潰绉�" width="120"/>
+        <el-table-column prop="zip" label="鍗曠墖闈㈢Н" width="120"/>
+        <el-table-column prop="date" label="鐢熶骇鏃ユ湡" width="120"/>
+        <el-table-column prop="date" label="淇濊川鏈�" width="120"/>
+        <el-table-column prop="zip" label="搴撳瓨缂栧彿" width="120"/>
+        <el-table-column prop="zip" label="搴撳尯" width="120"/>
+        <el-table-column prop="zip" label="搴撲綅" width="120"/>
+        <el-table-column prop="zip" label="绉帇搴撳瓨" width="120"/>
+        <el-table-column prop="zip" label="澶囨敞" width="120"/>
+
+
+      </el-table>
+    </el-main>
+  </el-container>
+</template>
+
+
+<script setup>
+
+import {ref} from 'vue'
+import dayjs from 'dayjs'
+
+const now = new Date()
+
+const tableData = ref([
+
+])
+
+const autoAddRow = () => {
+  for (let i = 0; i < 10; i++) {
+    const randomKCInt = Math.floor(Math.random() * 9999) + 10000;
+    const randomInt = Math.floor(Math.random() * 999) + 1000;
+    const randomZZInt = Math.floor(Math.random() * 99) + 100;
+    const randomSumInt = Math.floor(Math.random() * 99) + 10;
+    const kcThick = i % 3 === 0 ? 5 : i % 4 === 0 ? 6 : i % 5 === 0 ? 8 : 10;
+    now.setDate(now.getDate() + 1)
+    tableData.value.push({
+      date: dayjs(now).format('YYYY-MM-DD'),
+      name: '鐗╂枡缁勭粐' + randomZZInt,
+      state: '鐗╂枡' + randomSumInt,
+      city: '浜у湴' + (randomSumInt * 6),
+      address: 'No. 189, Grove St, Los Angeles',
+      zip: 'CA 90036',
+      number: 666 + 66 * i,
+      width: '3660',
+      height: '2440',
+      rIndex: tableData.value.length + 1,
+      wlNumber: 'NGWL1000' + randomInt,
+      kcNumber: 'NGKC100' + randomKCInt,
+      thick: kcThick
+    })
+  }
+}
+
+</script>
+
+
+<style scoped>
+.el-row {
+  margin-bottom: 20px;
+}
+
+.el-row:last-child {
+  margin-bottom: 0;
+}
+
+.el-col {
+  border-radius: 4px;
+}
+
+.m-header {
+  height: 32px;
+}
+
+#main {
+  width: 100%;
+  height: 100%;
+}
+
+#div-title {
+  height: 5%;
+  width: 100%;
+  padding-left: 20px;
+}
+
+#main-body {
+  width: 100%;
+  height: 64%;
+  margin-top: 1%;
+}
+</style>
\ No newline at end of file
diff --git a/north-glass-erp/northglass-erp/src/views/mm/stockReport/StockReport.vue b/north-glass-erp/northglass-erp/src/views/mm/stockReport/StockReport.vue
new file mode 100644
index 0000000..cfad77c
--- /dev/null
+++ b/north-glass-erp/northglass-erp/src/views/mm/stockReport/StockReport.vue
@@ -0,0 +1,33 @@
+<template>
+  <el-container>
+    <el-header style="height: 30px">
+      <el-breadcrumb :separator-icon="ArrowRight">
+        <el-breadcrumb-item>閲囪喘涓庣墿璧�</el-breadcrumb-item>
+        <el-breadcrumb-item :to="{path:'/main/stockReport/WarehouseReport'}">浠撳偍鎶ヨ〃
+        </el-breadcrumb-item>
+        <el-breadcrumb-item :to="{path:'/main/stockReport/StockMonthReport'}">鍘熺墖鏈堢粨
+        </el-breadcrumb-item>
+        <el-breadcrumb-item :to="{path:'/main/stockReport/SubsidiaryMonthReport'}">
+          杈呮枡鏈堢粨
+        </el-breadcrumb-item>
+      </el-breadcrumb>
+    </el-header>
+    <el-main style="padding: 0">
+      <router-view/>
+    </el-main>
+<!--     <el-footer>Footer</el-footer>-->
+  </el-container>
+</template>
+<script setup>
+
+import {ArrowRight} from "@element-plus/icons-vue";
+
+import {useRouter} from "vue-router";
+
+const router = useRouter();
+</script>
+
+
+<style scoped>
+
+</style>
\ No newline at end of file
diff --git a/north-glass-erp/northglass-erp/src/views/mm/stockReport/SubsidiaryMonthReport.vue b/north-glass-erp/northglass-erp/src/views/mm/stockReport/SubsidiaryMonthReport.vue
new file mode 100644
index 0000000..c065cf8
--- /dev/null
+++ b/north-glass-erp/northglass-erp/src/views/mm/stockReport/SubsidiaryMonthReport.vue
@@ -0,0 +1,164 @@
+<template>
+  <el-container>
+    <el-header class="m-header" style="height: auto">
+      <el-row :gutter="10">
+        <el-col :span="6">
+          <el-date-picker
+              v-model="datevalue"
+              type="daterange"
+              unlink-panels
+              range-separator="鍒�"
+              start-placeholder="寮�濮嬫棩鏈�"
+              end-placeholder="缁撴潫鏃ユ湡"
+              :shortcuts="shortcuts"
+              :size="size"
+              format="YYYY/MM/DD"
+              value-format="YYYY-MM-DD"
+          />
+
+
+
+        </el-col>
+        <el-col :span="2">
+          <el-button
+              id="select"
+              type="primary"
+              :icon="Search"
+              @click="autoAddRow">鏌ヨ
+          </el-button>
+
+        </el-col>
+
+      </el-row>
+    </el-header>
+    <el-main style="padding-top: 5px">
+      <el-table :data="tableData" style="width: 100%" height="620" border show-summary sum-text=" "
+                empty-text="鏆傛棤鏁版嵁">
+        <el-table-column fixed="left" prop="rIndex" label="" width="50" align="center"></el-table-column>
+
+        <el-table-column fixed="left" label="鎿嶄綔" width="120">
+          <template #default="scope">
+            <el-button
+                link
+                type="primary"
+                size="small"
+                @click.prevent="deleteRow(scope.$index)"
+            >
+              鍒犻櫎
+            </el-button>
+            <el-button
+                link
+                type="primary"
+                size="small"
+                @click.prevent="deleteRow(scope.$index)"
+            >
+              鏍囪
+            </el-button>
+          </template>
+        </el-table-column>
+
+
+        <el-table-column prop="name" label="搴撳瓨缁勭粐" width="150"/>
+        <el-table-column prop="wlNumber" label="鐗╂枡缂栫爜" width="150"/>
+        <el-table-column prop="state" label="鐗╂枡鍚嶇О" width="120"/>
+        <el-table-column prop="city" label="浜у湴" width="120"/>
+        <el-table-column prop="kcNumber" label="搴撳瓨缂栧彿" width="150"/>
+        <el-table-column prop="width" sortable label="瀹藉害" width="120"/>
+        <el-table-column prop="height" sortable label="楂樺害" width="120"/>
+        <el-table-column prop="thick" sortable label="鍘氬害" width="120"/>
+        <el-table-column prop="zip" label="涓诲崟浣�" width="120"/>
+        <el-table-column prop="number" label="瀹夊叏搴撳瓨" width="120"/>
+        <el-table-column prop="number" sortable label="搴撳瓨鏁�" width="120"/>
+        <el-table-column prop="number" label="鍙敤搴撳瓨" width="120" show-summary="ture"/>
+        <el-table-column prop="number" label="鏈鏁伴噺" width="120"/>
+        <el-table-column prop="zip" sortable label="鎬婚潰绉�" width="120"/>
+        <el-table-column prop="zip" label="鍗曠墖闈㈢Н" width="120"/>
+        <el-table-column prop="date" label="鐢熶骇鏃ユ湡" width="120"/>
+        <el-table-column prop="date" label="淇濊川鏈�" width="120"/>
+        <el-table-column prop="zip" label="搴撳瓨缂栧彿" width="120"/>
+        <el-table-column prop="zip" label="搴撳尯" width="120"/>
+        <el-table-column prop="zip" label="搴撲綅" width="120"/>
+        <el-table-column prop="zip" label="绉帇搴撳瓨" width="120"/>
+        <el-table-column prop="zip" label="澶囨敞" width="120"/>
+
+
+      </el-table>
+    </el-main>
+  </el-container>
+</template>
+
+
+<script setup>
+
+import {ref} from 'vue'
+import dayjs from 'dayjs'
+
+const now = new Date()
+
+const tableData = ref([
+
+])
+
+const autoAddRow = () => {
+  for (let i = 0; i < 10; i++) {
+    const randomKCInt = Math.floor(Math.random() * 9999) + 10000;
+    const randomInt = Math.floor(Math.random() * 999) + 1000;
+    const randomZZInt = Math.floor(Math.random() * 99) + 100;
+    const randomSumInt = Math.floor(Math.random() * 99) + 10;
+    const kcThick = i % 3 === 0 ? 5 : i % 4 === 0 ? 6 : i % 5 === 0 ? 8 : 10;
+    now.setDate(now.getDate() + 1)
+    tableData.value.push({
+      date: dayjs(now).format('YYYY-MM-DD'),
+      name: '鐗╂枡缁勭粐' + randomZZInt,
+      state: '鐗╂枡' + randomSumInt,
+      city: '浜у湴' + (randomSumInt * 6),
+      address: 'No. 189, Grove St, Los Angeles',
+      zip: 'CA 90036',
+      number: 666 + 66 * i,
+      width: '3660',
+      height: '2440',
+      rIndex: tableData.value.length + 1,
+      wlNumber: 'NGWL1000' + randomInt,
+      kcNumber: 'NGKC100' + randomKCInt,
+      thick: kcThick
+    })
+  }
+}
+
+</script>
+
+
+<style scoped>
+.el-row {
+  margin-bottom: 20px;
+}
+
+.el-row:last-child {
+  margin-bottom: 0;
+}
+
+.el-col {
+  border-radius: 4px;
+}
+
+.m-header {
+  height: 32px;
+}
+
+#main {
+  width: 100%;
+  height: 100%;
+}
+
+#div-title {
+  height: 5%;
+  width: 100%;
+  padding-left: 20px;
+}
+
+#main-body {
+  width: 100%;
+  height: 64%;
+  margin-top: 1%;
+}
+</style>
\ No newline at end of file
diff --git a/north-glass-erp/northglass-erp/src/views/mm/stockReport/WarehouseReport.vue b/north-glass-erp/northglass-erp/src/views/mm/stockReport/WarehouseReport.vue
new file mode 100644
index 0000000..60a9484
--- /dev/null
+++ b/north-glass-erp/northglass-erp/src/views/mm/stockReport/WarehouseReport.vue
@@ -0,0 +1,216 @@
+<template>
+    <el-header class="m-header" style="height: auto">
+      <!--          <el-row :gutter="10">
+                  <el-col :span="5">
+                    <el-input v-model="wuliaoxinxi"
+                              placeholder="鐗╂枡缂栫爜\鐗╂枡鍚嶇О"
+                              clearable
+                    />
+                  </el-col>
+
+                  <el-col :span="3">
+                    <el-input v-model="wuliaokuan"
+                              placeholder="瀹藉害"
+                              clearable
+                              oninput="value=value.replace(/\D/g,'')"
+                              maxLength='6'
+                    />
+                  </el-col>
+                  <el-col :span="3">
+                    <el-input v-model="wuliaogao"
+                              placeholder="楂樺害"
+                              clearable
+                              oninput="value=value.replace(/\D/g,'')"
+                              maxLength='6'
+                    />
+                  </el-col>
+
+                  <el-col :span="3">
+                    <el-cascader
+                        placeholder="閫夋嫨鎴栬緭鍏ョ被鍨�"
+                        :options="options"
+                        filterable
+                        clearable>
+                    </el-cascader>
+                  </el-col>
+
+                  <el-col :span="10">
+                    <el-button
+                        id="select"
+                        type="primary"
+                        :icon="Search"
+                        @click="autoAddRow">鏌ヨ
+                    </el-button>
+                    <el-button
+                        id="select"
+                        type="primary"
+                        :icon="Search">绾胯竟浠撴煡璇�
+                    </el-button>
+                    <el-button
+                        id="select"
+                        type="primary"
+                        :icon="Search">鍘熺墖鏈堢粨
+                    </el-button>
+                    <el-button
+                        id="select"
+                        type="primary"
+                        :icon="Search">杈呮枡鏈堢粨
+                    </el-button>
+                  </el-col>
+
+                </el-row>-->
+    </el-header>
+    <el-main style="padding-top: 5px">
+      <el-table :data="tableData" style="width: 100%" max-height="620px"  border show-summary sum-text=" "
+                empty-text="鏆傛棤鏁版嵁">
+        <el-table-column fixed="left" prop="rIndex" label="" width="50" align="center"></el-table-column>
+
+        <el-table-column fixed="left" label="鎿嶄綔" width="120">
+          <template #default="scope">
+            <el-button
+                link
+                type="primary"
+                size="small"
+                @click.prevent="deleteRow(scope.$index)"
+            >
+              鍒犻櫎
+            </el-button>
+            <el-button
+                link
+                type="primary"
+                size="small"
+                @click.prevent="deleteRow(scope.$index)"
+            >
+              鏍囪
+            </el-button>
+          </template>
+        </el-table-column>
+
+
+        <el-table-column prop="name" label="搴撳瓨缁勭粐" width="150"/>
+        <el-table-column prop="wlNumber" label="鐗╂枡缂栫爜" width="150"/>
+        <el-table-column prop="state" label="鐗╂枡鍚嶇О" width="120"/>
+        <el-table-column prop="city" label="浜у湴" width="120"/>
+        <el-table-column prop="kcNumber" label="搴撳瓨缂栧彿" width="150"/>
+        <el-table-column prop="width" sortable label="瀹藉害" width="120"/>
+        <el-table-column prop="height" sortable label="楂樺害" width="120"/>
+        <el-table-column prop="thick" sortable label="鍘氬害" width="120"/>
+        <el-table-column prop="zip" label="涓诲崟浣�" width="120"/>
+        <el-table-column prop="number" label="瀹夊叏搴撳瓨" width="120"/>
+        <el-table-column prop="number" sortable label="搴撳瓨鏁�" width="120"/>
+        <el-table-column prop="number" label="鍙敤搴撳瓨" width="120" show-summary="ture"/>
+        <el-table-column prop="number" label="鏈鏁伴噺" width="120"/>
+        <el-table-column prop="zip" sortable label="鎬婚潰绉�" width="120"/>
+        <el-table-column prop="zip" label="鍗曠墖闈㈢Н" width="120"/>
+        <el-table-column prop="date" label="鐢熶骇鏃ユ湡" width="120"/>
+        <el-table-column prop="date" label="淇濊川鏈�" width="120"/>
+        <el-table-column prop="zip" label="搴撳瓨缂栧彿" width="120"/>
+        <el-table-column prop="zip" label="搴撳尯" width="120"/>
+        <el-table-column prop="zip" label="搴撲綅" width="120"/>
+        <el-table-column prop="zip" label="绉帇搴撳瓨" width="120"/>
+        <el-table-column prop="zip" label="澶囨敞" width="120"/>
+
+
+      </el-table>
+    </el-main>
+</template>
+
+
+<script setup>
+
+import {ref} from 'vue'
+const wuliaoxinxi = ref('')
+const wuliaokuan = ref('')
+const wuliaogao = ref('')
+const options = [
+  {
+    value: '0',
+    label: '鍏ㄩ儴'
+  },
+  {
+    value: '1',
+    label: '鍘熺墖'
+  },
+  {
+    value: '2',
+    label: '鍖栧鍝�'
+  },
+  {
+    value: '3',
+    label: '宸ュ叿'
+  },
+  {
+    value: '4',
+    label: '鏈ㄧ'
+  },
+  {
+    value: '5',
+    label: '鐧界幓'
+  },
+]
+
+import dayjs from 'dayjs'
+
+const now = new Date()
+
+const tableData = ref([
+  {
+    date: '2016-05-01',
+    name: 'Tom',
+    state: 'California',
+    city: 'Los Angeles',
+    address: 'No. 189, Grove St, Los Angeles',
+    zip: 'CA 90036',
+    number: '999',
+    width: '3660',
+    height: '2440',
+    rIndex: 1,
+  }
+])
+
+const autoAddRow = () => {
+  for (let i = 0; i < 10; i++) {
+    const randomKCInt = Math.floor(Math.random() * 9999) + 10000;
+    const randomInt = Math.floor(Math.random() * 999) + 1000;
+    const randomZZInt = Math.floor(Math.random() * 99) + 100;
+    const randomSumInt = Math.floor(Math.random() * 99) + 10;
+    const kcThick = i % 3 === 0 ? 5 : i % 4 === 0 ? 6 : i % 5 === 0 ? 8 : 10;
+    now.setDate(now.getDate() + 1)
+    tableData.value.push({
+      date: dayjs(now).format('YYYY-MM-DD'),
+      name: '鐗╂枡缁勭粐' + randomZZInt,
+      state: '鐗╂枡' + randomSumInt,
+      city: '浜у湴' + (randomSumInt * 6),
+      address: 'No. 189, Grove St, Los Angeles',
+      zip: 'CA 90036',
+      number: 666 + 66 * i,
+      width: '3660',
+      height: '2440',
+      rIndex: tableData.value.length + 1,
+      wlNumber: 'NGWL1000' + randomInt,
+      kcNumber: 'NGKC100' + randomKCInt,
+      thick: kcThick
+    })
+  }
+}
+
+</script>
+
+
+<style scoped>
+.el-row {
+  margin-bottom: 20px;
+}
+
+.el-row:last-child {
+  margin-bottom: 0;
+}
+
+.el-col {
+  border-radius: 4px;
+}
+
+.m-header {
+  height: 64px;
+}
+</style>
\ No newline at end of file
diff --git a/north-glass-erp/northglass-erp/src/views/pp/BOM/BOM.vue b/north-glass-erp/northglass-erp/src/views/pp/BOM/BOM.vue
new file mode 100644
index 0000000..70323d3
--- /dev/null
+++ b/north-glass-erp/northglass-erp/src/views/pp/BOM/BOM.vue
@@ -0,0 +1,57 @@
+<script setup>
+import {ref} from "vue";
+import {ArrowLeftBold, ArrowRight} from "@element-plus/icons-vue";
+import request from "@/utils/request";
+import deepClone from "@/utils/deepClone";
+import {ElMessage} from "element-plus";
+import {useRouter} from "vue-router";
+import  GlassType from '@/components/basic/product/GlassType.vue'
+
+
+
+const router = useRouter()
+
+
+</script>
+
+<template>
+  <div id="main">
+    <div id="div-title">
+      <el-breadcrumb :separator-icon="ArrowRight">
+        <el-breadcrumb-item :to="{ path: '/main/BOM/SelectBOM' }">BOM绠$悊</el-breadcrumb-item>
+        <el-breadcrumb-item :to="{ path: '/main/BOM/BenchmarkBOM' }">鍩哄噯BOM</el-breadcrumb-item>
+        <el-breadcrumb-item :to="{ path: '/main/BOM/StandardBOM' }">鏍囧噯BOM</el-breadcrumb-item>
+        <el-breadcrumb-item :to="{ path: '/main/BOM/OrderBOM' }">璁㈠崟BOM</el-breadcrumb-item>
+        <el-breadcrumb-item :to="{ path: '/main/processCard/SelectPrintFlowCard' }" style="display: none">鎵撳嵃</el-breadcrumb-item>
+      </el-breadcrumb>
+    </div>
+
+    <div id="main-body">
+      <router-view  />
+    </div>
+  </div>
+</template>
+
+<style scoped>
+#main{
+  width: 100%;
+  height: 100%;
+}
+#div-title{
+  height: 5%;
+  width: 100%;
+}
+#searchButton{
+  margin-top: -5px;
+  margin-left: 1rem;
+}
+#searchButton1{
+//margin-left: 10rem;
+}
+/*main-body鏍峰紡*/
+#main-body{
+  width: 99%;
+  height: 92%;
+  margin-top: 1%;
+}
+</style>
\ No newline at end of file
diff --git a/north-glass-erp/northglass-erp/src/views/pp/BOM/BenchmarkBOM.vue b/north-glass-erp/northglass-erp/src/views/pp/BOM/BenchmarkBOM.vue
new file mode 100644
index 0000000..4417046
--- /dev/null
+++ b/north-glass-erp/northglass-erp/src/views/pp/BOM/BenchmarkBOM.vue
@@ -0,0 +1,100 @@
+<script setup>
+import {reactive, ref} from 'vue'
+
+
+const value = ref('')
+const options = [
+  {
+    value: 'Option1',
+    label: 'Option1',
+  },
+  {
+    value: 'Option2',
+    label: 'Option2',
+  },
+  {
+    value: 'Option3',
+    label: 'Option3',
+  },
+]
+const form = reactive({
+  name: '1',
+  region: '',
+  date1: '',
+  date2: '',
+  delivery: false,
+  type: [],
+  resource: '',
+  desc: '',
+})
+const tableData = [
+  {
+    1: '70020000000000000000000004',
+    2: '棰勬礂鍓�7600TRO-DS',
+    3: '4',
+    4: '鍒堕暅',
+    5:'L',
+    6:'0.001000',
+    7:'ml',
+    8:'鍥涘窛',
+  },
+  {
+    1: '70020000000000000000000004',
+    2: '棰勬礂鍓�7600TRO-DS',
+    3: '4',
+    4: '鍒堕暅',
+    5:'L',
+    6:'0.001000',
+    7:'ml',
+    8:'鍥涘窛',
+  },
+  {
+    1: '70020000000000000000000004',
+    2: '棰勬礂鍓�7600TRO-DS',
+    3: '4',
+    4: '鍒堕暅',
+    5:'L',
+    6:'0.001000',
+    7:'ml',
+    8:'鍥涘窛',
+  },
+]
+</script>
+
+<template>
+<div>
+  <div>
+    <el-select v-model="value" class="m-2" placeholder="浜у搧绉嶇被">
+      <el-option
+          v-for="item in options"
+          :key="item.value"
+          :label="item.label"
+          :value="item.value"
+      />
+    </el-select>
+    &nbsp;
+    <label>鍩烘暟:</label>
+    <el-input placeholder="鍩烘暟" style="width: 100px" v-model="form.name">1</el-input>
+    &nbsp;
+    <el-button type="primary">娣诲姞涓�琛�</el-button>
+    <el-button type="primary">鍑忓皯涓�琛�</el-button>
+    <el-button type="primary">淇濆瓨</el-button>
+  </div>
+  <div>
+    <el-table :data="tableData" border style="width: 100%" height="100%">
+      <el-table-column prop="1" label="鐗╂枡缂栫爜" :show-overflow-tooltip='true' width="250" />
+      <el-table-column prop="2" label="鐗╂枡鍚嶇О" :show-overflow-tooltip='true' width="250" />
+      <el-table-column prop="3" label="鏁伴噺" width="105" />
+      <el-table-column prop="4" label="棰嗘枡宸ュ簭"  width="155" />
+      <el-table-column prop="5" label="涓诲崟浣�"  width="142" />
+      <el-table-column prop="6" label="鎹㈢畻鐜�" width="175" />
+      <el-table-column prop="7" label="鍓崟浣�" width="155" />
+      <el-table-column prop="8" label="浜у湴" width="115" />
+    </el-table>
+  </div>
+</div>
+</template>
+
+<style scoped>
+
+</style>
\ No newline at end of file
diff --git a/north-glass-erp/northglass-erp/src/views/pp/BOM/OrderBOM.vue b/north-glass-erp/northglass-erp/src/views/pp/BOM/OrderBOM.vue
new file mode 100644
index 0000000..ec0acc8
--- /dev/null
+++ b/north-glass-erp/northglass-erp/src/views/pp/BOM/OrderBOM.vue
@@ -0,0 +1,88 @@
+<script lang="ts" setup>
+import {reactive, ref} from 'vue'
+import {Search} from "@element-plus/icons-vue"
+import {useRouter} from "vue-router"
+const router = useRouter()
+// do not use same name with ref
+const form = reactive({
+  name: '',
+  region: '',
+  date1: '',
+  date2: '',
+  delivery: false,
+  type: [],
+  resource: '',
+  desc: '',
+})
+const defaultTime = ref<[Date, Date]>([
+  new Date(2000, 1, 1, 0, 0, 0),
+  new Date(2000, 2, 1, 23, 59, 59),
+])
+let listName = $ref([
+  '璁㈠崟BOM','瀹℃牳','閲囪喘'
+])
+const tableData = [
+  {
+    salesOrderNo: 'NG23121201',
+    2: '姹熼棬棣楄揪鐗圭幓绉戞妧鏈夐檺鍏徃',
+    3: '澶ф澘闀�',
+    4: '1鎵逛竴',
+    5:'1212',
+    6:'442.21',
+    7:'鍐呴儴',
+    8:'XX',
+    9:'2020-01-01',
+    10:'2020-01-02',
+
+
+  },
+]
+</script>
+
+<template>
+  <div>
+    <div id="selectForm">
+      <el-row :gutter="0">
+        <el-date-picker
+            v-model="form.date1"
+            type="daterange"
+            start-placeholder="寮�濮嬫椂闂�"
+            end-placeholder="缁撴潫鏃堕棿"
+            :default-time="defaultTime"
+        />
+        &nbsp;&nbsp;
+        <el-button type="primary">鏌ヨ</el-button>
+      </el-row>
+
+    </div>
+    <el-table :data="tableData" border style="width: 100%" height="100%">
+      <el-table-column v-for="item in listName" prop="" :label="item" width="85"   >
+        <el-checkbox checked/>
+      </el-table-column>
+      <el-table-column prop="salesOrderNo" label="閿�鍞崟鍙�" width="125">
+        <template v-slot="scope">
+          <router-link :to="{path:'OrderBOMDetails'}" >{{scope.row.salesOrderNo}}</router-link>
+        </template>
+      </el-table-column>
+      <el-table-column prop="2" label="瀹㈡埛鍚嶇О" :show-overflow-tooltip='true' width="165" />
+      <el-table-column prop="3" label="椤圭洰鍚嶇О" :show-overflow-tooltip='true'  width="105" />
+      <el-table-column prop="4" label="鎵规" :show-overflow-tooltip='true' width="75" />
+      <el-table-column prop="5" label="璁㈠崟鏁�" :show-overflow-tooltip='true' width="70" />
+      <el-table-column prop="6" label="璁㈠崟闈㈢Н" width="85" />
+      <el-table-column prop="7" label="璁㈠崟绫诲瀷" width="85" />
+      <el-table-column prop="8" label="涓氬姟鍛�" width="75" />
+      <el-table-column prop="9" label="宸ュ崟BOM鐢熸垚鏃堕棿" width="150" />
+      <el-table-column prop="10" label="宸ュ崟BOM瀹℃牳鏃堕棿" :show-overflow-tooltip='true' width="158" />
+    </el-table>
+  </div>
+</template>
+
+<style scoped>
+#selectForm {
+  width: 40%;
+  height: 100%;
+  text-align: center;
+}
+
+
+</style>
\ No newline at end of file
diff --git a/north-glass-erp/northglass-erp/src/views/pp/BOM/OrderBOMDetails.vue b/north-glass-erp/northglass-erp/src/views/pp/BOM/OrderBOMDetails.vue
new file mode 100644
index 0000000..666c8fe
--- /dev/null
+++ b/north-glass-erp/northglass-erp/src/views/pp/BOM/OrderBOMDetails.vue
@@ -0,0 +1,119 @@
+<script setup>
+import {reactive, ref} from 'vue'
+
+
+const value = ref('')
+const options = [
+  {
+    value: 'Option1',
+    label: 'Option1',
+  },
+  {
+    value: 'Option2',
+    label: 'Option2',
+  },
+  {
+    value: 'Option3',
+    label: 'Option3',
+  },
+]
+const form = reactive({
+  name: '',
+  region: '',
+  date1: '',
+  date2: '',
+  delivery: false,
+  type: [],
+  resource: '',
+  desc: '',
+})
+const tableData = [
+  {
+    1: 'NG23121201',
+    2: '12300001110',
+    3: '10mm瓒呯櫧UD60骞抽挗(澶�)+12Ar(缁�)+10mm瓒呯櫧骞抽挗(鍐�)',
+    4: '111',
+    5:'閽㈠寲',
+    6:'5001011100000110',
+    7:'鏃犲皹绾�',
+    8:'113',
+    9:'1144',
+    10:'寮�',
+    11:'11',
+    12:'22',
+    13:'33',
+    14:'44',
+    15:'涓滆帪',
+    16:'2023-12-01',
+    17:'',
+
+  },
+]
+</script>
+
+<template>
+  <div>
+    <div>
+      <div>
+        <el-input placeholder="閿�鍞崟鍙�" style="width: 120px" v-model="form.name"></el-input>
+        <el-button type="primary">鐢熸垚璁㈠崟BOM</el-button>
+        <el-button type="primary">杞噰璐崟</el-button>
+        <el-button type="primary">瀹℃牳</el-button>
+        <el-button type="primary">鍙嶅</el-button>
+        <el-button type="primary">鍒犻櫎</el-button>
+        <el-button type="primary">淇敼瓒呴鏁伴噺</el-button>
+
+
+      </div>
+
+
+      <el-select v-model="value" class="m-2" placeholder="浜у搧绉嶇被">
+        <el-option
+            v-for="item in options"
+            :key="item.value"
+            :label="item.label"
+            :value="item.value"
+        />
+      </el-select>
+      <el-select v-model="value" class="m-2" placeholder="棰嗘枡宸ュ簭">
+        <el-option
+            v-for="item in options"
+            :key="item.value"
+            :label="item.label"
+            :value="item.value"
+        />
+      </el-select>
+      &nbsp;
+      <el-input placeholder="鐗╂枡缂栫爜" style="width: 200px"></el-input>
+      <el-input placeholder="鐗╂枡鍚嶇О" style="width: 200px"></el-input>
+      <el-input placeholder="闇�姹傛暟閲�" style="width: 200px"></el-input>
+      <el-button type="primary">娣诲姞</el-button>
+    </div>
+    <div>
+      <el-table :data="tableData" border style="width: 100%" height="100%">
+        <el-table-column prop="1" label="閿�鍞崟鍙�" :show-overflow-tooltip='true' width="120" />
+        <el-table-column prop="2" label="浜у搧缂栧彿" :show-overflow-tooltip='true' width="130" />
+        <el-table-column prop="3" label="浜у搧鍚嶇О" :show-overflow-tooltip='true' width="155" />
+        <el-table-column prop="4" label="宸ュ崟鏁伴噺"  width="85" />
+        <el-table-column prop="5" label="棰嗘枡宸ュ簭"  width="85" />
+        <el-table-column prop="6" label="鐗╂枡缂栫爜" :show-overflow-tooltip='true' width="125" />
+        <el-table-column prop="7" label="鐗╂枡鍚嶇О" :show-overflow-tooltip='true' width="135" />
+        <el-table-column prop="8" label="瀹�" width="60" />
+        <el-table-column prop="9" label="楂�" width="60" />
+        <el-table-column prop="10" label="鍗曚綅" width="70" />
+        <el-table-column prop="11" label="鐗╂枡鏁伴噺" width="85" />
+        <el-table-column prop="12" label="搴撳瓨鏁伴噺" width="85" />
+        <el-table-column prop="13" label="搴撳瓨鏁�-闇�姹傛暟" width="120" />
+        <el-table-column prop="14" label="閲囪喘鏁伴噺" width="85" />
+        <el-table-column prop="15" label="浜у湴" width="70" />
+        <el-table-column prop="16" label="璁″垝鍒拌揣鏃堕棿" width="120" />
+        <el-table-column prop="17" label="澶囨敞" :show-overflow-tooltip='true' width="120" />
+
+      </el-table>
+    </div>
+  </div>
+</template>
+
+<style scoped>
+
+</style>
\ No newline at end of file
diff --git a/north-glass-erp/northglass-erp/src/views/pp/BOM/SelectBOM.vue b/north-glass-erp/northglass-erp/src/views/pp/BOM/SelectBOM.vue
new file mode 100644
index 0000000..7a0a0d7
--- /dev/null
+++ b/north-glass-erp/northglass-erp/src/views/pp/BOM/SelectBOM.vue
@@ -0,0 +1,90 @@
+<script lang="ts" setup>
+import {reactive, ref} from 'vue'
+import {Search} from "@element-plus/icons-vue"
+import {useRouter} from "vue-router"
+const router = useRouter()
+// do not use same name with ref
+const form = reactive({
+  name: '',
+  region: '',
+  date1: '',
+  date2: '',
+  delivery: false,
+  type: [],
+  resource: '',
+  desc: '',
+})
+const defaultTime = ref<[Date, Date]>([
+  new Date(2000, 1, 1, 0, 0, 0),
+  new Date(2000, 2, 1, 23, 59, 59),
+])
+let listName = $ref([
+  '鍩哄噯BOM','鏍囧噯BOM','瀹℃牳'
+])
+const tableData = [
+  {
+    1: '1',
+    2: 'D123123',
+    3: 'XXXX鍏徃',
+    4: '06040000022',
+    5:'10mm瓒呯櫧UD60骞抽挗(澶�)+12Ar(缁�)+10mm瓒呯櫧骞抽挗(鍐�)',
+    6:'1440',
+    7:'3660',
+    8:'30',
+    9:'鏅舰',
+    10:'111',
+    11:'寮犱笁',
+    12:'鏉庡洓',
+    13:'鐜嬩簲',
+
+
+  },
+]
+</script>
+
+<template>
+  <div>
+    <div id="selectForm">
+      <el-row :gutter="0">
+        <el-date-picker
+            v-model="form.date1"
+            type="daterange"
+            start-placeholder="寮�濮嬫椂闂�"
+            end-placeholder="缁撴潫鏃堕棿"
+            :default-time="defaultTime"
+        />
+        &nbsp;&nbsp;
+        <el-button type="primary">鏌ヨ</el-button>
+      </el-row>
+
+    </div>
+    <el-table :data="tableData" border style="width: 100%" height="100%">
+      <el-table-column v-for="item in listName" prop="" :label="item" width="85"   >
+        <el-checkbox checked/>
+      </el-table-column>
+      <el-table-column prop="1" label="鑷簭" width="55" />
+      <el-table-column prop="2" label="瀹㈡埛缂栧彿" width="105" />
+      <el-table-column prop="3" label="瀹㈡埛鍚嶇О" width="105" />
+      <el-table-column prop="4" label="浜у搧缂栧彿" :show-overflow-tooltip='true' width="125" />
+      <el-table-column prop="5" label="浜у搧鍚嶇О" :show-overflow-tooltip='true' width="150" />
+      <el-table-column prop="6" label="鐜荤拑闀�" width="75" />
+      <el-table-column prop="7" label="鐜荤拑瀹�" width="75" />
+      <el-table-column prop="8" label="鍘氬害" width="65" />
+      <el-table-column prop="9" label="褰㈢姸" width="65" />
+      <el-table-column prop="10" label="澶囨敞" :show-overflow-tooltip='true' width="155" />
+      <el-table-column prop="11" label="浜у搧鍒涘缓浜�" width="95" />
+      <el-table-column prop="12" label="BOM鍒涘缓浜�" width="105" />
+      <el-table-column prop="13" label="瀹℃牳鍛�" width="85" />
+    </el-table>
+  </div>
+</template>
+
+<style scoped>
+#selectForm {
+  width: 40%;
+  height: 100%;
+  text-align: center;
+}
+
+
+</style>
\ No newline at end of file
diff --git a/north-glass-erp/northglass-erp/src/views/pp/BOM/StandardBOM.vue b/north-glass-erp/northglass-erp/src/views/pp/BOM/StandardBOM.vue
new file mode 100644
index 0000000..80af515
--- /dev/null
+++ b/north-glass-erp/northglass-erp/src/views/pp/BOM/StandardBOM.vue
@@ -0,0 +1,94 @@
+<script lang="ts" setup>
+import {reactive, ref} from 'vue'
+import {Search} from "@element-plus/icons-vue"
+import {useRouter} from "vue-router"
+const router = useRouter()
+// do not use same name with ref
+const form = reactive({
+  name: '',
+  region: '',
+  date1: '',
+  date2: '',
+  delivery: false,
+  type: [],
+  resource: '',
+  desc: '',
+})
+const defaultTime = ref<[Date, Date]>([
+  new Date(2000, 1, 1, 0, 0, 0),
+  new Date(2000, 2, 1, 23, 59, 59),
+])
+let listName = $ref([
+  '鍩哄噯BOM','鏍囧噯BOM','瀹℃牳'
+])
+const tableData = [
+  {
+    serialNumber: '1',
+    2: 'D123123',
+    3: 'XXXX鍏徃',
+    4: '06040000022',
+    5:'10mm瓒呯櫧UD60骞抽挗(澶�)+12Ar(缁�)+10mm瓒呯櫧骞抽挗(鍐�)',
+    6:'1440',
+    7:'3660',
+    8:'30',
+    9:'鏅舰',
+    10:'111',
+    11:'寮犱笁',
+    12:'鏉庡洓',
+    13:'鐜嬩簲',
+
+
+  },
+]
+</script>
+
+<template>
+  <div>
+    <div id="selectForm">
+      <el-row :gutter="0">
+        <el-date-picker
+            v-model="form.date1"
+            type="daterange"
+            start-placeholder="寮�濮嬫椂闂�"
+            end-placeholder="缁撴潫鏃堕棿"
+            :default-time="defaultTime"
+        />
+        &nbsp;&nbsp;
+        <el-button type="primary">鏌ヨ</el-button>
+      </el-row>
+
+    </div>
+    <el-table :data="tableData" border style="width: 100%" height="100%">
+      <el-table-column v-for="item in listName" prop="" :label="item" width="85"   >
+        <el-checkbox checked/>
+      </el-table-column>
+      <el-table-column prop="serialNumber" label="鑷簭" width="55" >
+        <template v-slot="scope">
+          <router-link :to="{path:'StandardBOMDetail'}" >{{scope.row.serialNumber}}</router-link>
+        </template>
+      </el-table-column>
+      <el-table-column prop="2" label="瀹㈡埛缂栧彿" width="105" />
+      <el-table-column prop="3" label="瀹㈡埛鍚嶇О" width="105" />
+      <el-table-column prop="4" label="浜у搧缂栧彿" :show-overflow-tooltip='true' width="125" />
+      <el-table-column prop="5" label="浜у搧鍚嶇О" :show-overflow-tooltip='true' width="150" />
+      <el-table-column prop="6" label="鐜荤拑闀�" width="75" />
+      <el-table-column prop="7" label="鐜荤拑瀹�" width="75" />
+      <el-table-column prop="8" label="鍘氬害" width="65" />
+      <el-table-column prop="9" label="褰㈢姸" width="65" />
+      <el-table-column prop="10" label="澶囨敞" :show-overflow-tooltip='true' width="155" />
+      <el-table-column prop="11" label="浜у搧鍒涘缓浜�" width="95" />
+      <el-table-column prop="12" label="BOM鍒涘缓浜�" width="105" />
+      <el-table-column prop="13" label="瀹℃牳鍛�" width="85" />
+    </el-table><!-- <h1>{{msg}}</h1> -->
+  </div>
+</template>
+
+<style scoped>
+#selectForm {
+  width: 40%;
+  height: 100%;
+  text-align: center;
+}
+
+
+</style>
\ No newline at end of file
diff --git a/north-glass-erp/northglass-erp/src/views/pp/BOM/StandardBOMDetail.vue b/north-glass-erp/northglass-erp/src/views/pp/BOM/StandardBOMDetail.vue
new file mode 100644
index 0000000..34b70e9
--- /dev/null
+++ b/north-glass-erp/northglass-erp/src/views/pp/BOM/StandardBOMDetail.vue
@@ -0,0 +1,135 @@
+<script setup>
+import {reactive, ref} from 'vue'
+
+
+const value = ref('')
+const options = [
+  {
+    value: 'Option1',
+    label: 'Option1',
+  },
+  {
+    value: 'Option2',
+    label: 'Option2',
+  },
+  {
+    value: 'Option3',
+    label: 'Option3',
+  },
+]
+const form = reactive({
+  name: '1',
+  region: '',
+  date1: '',
+  date2: '',
+  delivery: false,
+  type: [],
+  resource: '',
+  desc: '',
+})
+const tableData = [
+  {
+    1: '70020000000000000000000004',
+    2: '棰勬礂鍓�7600TRO-DS',
+    3: '4',
+    4: '鍒堕暅',
+    5:'L',
+    6:'0.001000',
+    7:'ml',
+    8:'鍥涘窛',
+  },
+  {
+    1: '70020000000000000000000004',
+    2: '棰勬礂鍓�7600TRO-DS',
+    3: '4',
+    4: '鍒堕暅',
+    5:'L',
+    6:'0.001000',
+    7:'ml',
+    8:'鍥涘窛',
+  },
+  {
+    1: '70020000000000000000000004',
+    2: '棰勬礂鍓�7600TRO-DS',
+    3: '4',
+    4: '鍒堕暅',
+    5:'L',
+    6:'0.001000',
+    7:'ml',
+    8:'鍥涘窛',
+  },
+]
+</script>
+
+<template>
+  <div>
+    <div style="text-align: center">
+      <el-select v-model="value" class="m-2" placeholder="浜у搧绉嶇被">
+        <el-option
+            v-for="item in options"
+            :key="item.value"
+            :label="item.label"
+            :value="item.value"
+        />
+      </el-select>
+      &nbsp;
+      <label>鍩烘暟:</label>
+      <el-input placeholder="鍩烘暟" style="width: 100px" v-model="form.name">1</el-input>
+      &nbsp;
+      <el-button type="primary">娣诲姞涓�琛�</el-button>
+      <el-button type="primary">鍑忓皯涓�琛�</el-button>
+      <el-button type="primary">淇濆瓨</el-button>
+      <div id="tab_div">
+        <table class="tab_bfl" style="border: 1px solid black;">
+          <tr>
+            <td>棰嗘枡宸ュ簭</td>
+            <td>鍒囧壊</td>
+            <td>纾ㄨ竟</td>
+            <td>閽㈠寲</td>
+          </tr>
+          <tr>
+            <td>鎶ョ毊鐜�%</td>
+            <td>0</td>
+            <td>0</td>
+            <td>0</td>
+          </tr>
+        </table>
+      </div>
+    </div>
+    <div>
+      <el-table :data="tableData" border style="width: 100%" height="100%">
+        <el-table-column prop="1" label="鐗╂枡缂栫爜" :show-overflow-tooltip='true' width="250" />
+        <el-table-column prop="2" label="鐗╂枡鍚嶇О" :show-overflow-tooltip='true' width="250" />
+        <el-table-column prop="3" label="鏁伴噺" width="105" />
+        <el-table-column prop="4" label="棰嗘枡宸ュ簭"  width="155" />
+        <el-table-column prop="5" label="涓诲崟浣�"  width="142" />
+        <el-table-column prop="6" label="鎹㈢畻鐜�" width="175" />
+        <el-table-column prop="7" label="鍓崟浣�" width="155" />
+        <el-table-column prop="8" label="浜у湴" width="115" />
+      </el-table>
+    </div>
+  </div>
+</template>
+
+<style scoped>
+#tab_div{
+  text-align: center;
+  margin: 0 auto;
+  width: 50%;
+}
+.tab_bfl{
+  text-align: center;
+  width: 100%;
+border-collapse: collapse;
+}
+
+.tab_bfl td{
+  border: 1px solid black;
+}
+
+.tab_bfl tr{
+  border: 1px;
+  height: 30px;
+}
+
+</style>
\ No newline at end of file
diff --git a/north-glass-erp/northglass-erp/src/views/pp/Replenish/AddReplenish.vue b/north-glass-erp/northglass-erp/src/views/pp/Replenish/AddReplenish.vue
new file mode 100644
index 0000000..1bbe8e8
--- /dev/null
+++ b/north-glass-erp/northglass-erp/src/views/pp/Replenish/AddReplenish.vue
@@ -0,0 +1,234 @@
+<script setup>
+import {reactive, ref} from 'vue'
+import {ElTable} from "element-plus"
+
+
+
+
+const form = reactive({
+  lckh:'',
+  xsdh:'',
+})
+
+
+const tableData = [
+  {
+    reportingWorkTime:'2021-01-01',
+    salesOrderNo:'NG23010101',
+    processCardNo:'NG23010101A01',
+    entryName:'xxxx',
+    productName:"xxxxxxxxx",
+    reportingWorkNo:"BG2301010001",
+    floorNumber:"D4-010-01",
+    area:'23.11',
+    reportingProcess:'閽㈠寲',
+    qualityInspector:"寮犱笁",
+    serialNumber:'1',
+    singlePieceName: '6mm鐧界幓骞抽挗(澶�)',
+    marking: '1',
+    pieces: '(澶�)',
+    processCardNumber: '11',
+    width: '575',
+    height:"2241",
+    shape: '鏅舰',
+    upCompletedQuantity: '12',
+    completedQuantity: '1',
+    numberBroken:'2',
+    reasonType: '鏈哄櫒',
+    reasonDamage:'姘旀场瓒呮爣',
+    responsibilityProcess:'涓┖',
+    responsibilityTeams:'涓┖涓�鐝�',
+    responsibilityPersonnel:'',
+    responsibilityDevice:'涓┖3#绾�',
+  },
+  {
+    reportingWorkTime:'2021-01-01',
+    salesOrderNo:'NG23010101',
+    processCardNo:'NG23010101A01',
+    entryName:'xxxx',
+    productName:"xxxxxxxxx",
+    reportingWorkNo:"BG2301010001",
+    floorNumber:"D4-010-01",
+    area:'23.11',
+    reportingProcess:'閽㈠寲',
+    qualityInspector:"寮犱笁",
+    serialNumber:'1',
+    singlePieceName: '6mm鐧界幓骞抽挗(澶�)',
+    marking: '1',
+    pieces: '(澶�)',
+    processCardNumber: '11',
+    width: '575',
+    height:"2241",
+    shape: '鏅舰',
+    upCompletedQuantity: '12',
+    completedQuantity: '1',
+    numberBroken:'2',
+    reasonType: '鏈哄櫒',
+    reasonDamage:'姘旀场瓒呮爣',
+    responsibilityProcess:'涓┖',
+    responsibilityTeams:'涓┖涓�鐝�',
+    responsibilityPersonnel:'',
+    responsibilityDevice:'涓┖3#绾�',
+  },
+  {
+    reportingWorkTime:'2021-01-01',
+    salesOrderNo:'NG23010101',
+    processCardNo:'NG23010101A01',
+    entryName:'xxxx',
+    productName:"xxxxxxxxx",
+    reportingWorkNo:"BG2301010001",
+    floorNumber:"D4-010-01",
+    area:'23.11',
+    reportingProcess:'閽㈠寲',
+    qualityInspector:"寮犱笁",
+    serialNumber:'1',
+    singlePieceName: '6mm鐧界幓骞抽挗(澶�)',
+    marking: '1',
+    pieces: '(澶�)',
+    processCardNumber: '11',
+    width: '575',
+    height:"2241",
+    shape: '鏅舰',
+    upCompletedQuantity: '12',
+    completedQuantity: '1',
+    numberBroken:'2',
+    reasonType: '鏈哄櫒',
+    reasonDamage:'姘旀场瓒呮爣',
+    responsibilityProcess:'涓┖',
+    responsibilityTeams:'涓┖涓�鐝�',
+    responsibilityPersonnel:'',
+    responsibilityDevice:'涓┖3#绾�',
+  },
+  {
+    reportingWorkTime:'2021-01-01',
+    salesOrderNo:'NG23010101',
+    processCardNo:'NG23010101A01',
+    entryName:'xxxx',
+    productName:"xxxxxxxxx",
+    reportingWorkNo:"BG2301010001",
+    floorNumber:"D4-010-01",
+    area:'23.11',
+    reportingProcess:'閽㈠寲',
+    qualityInspector:"寮犱笁",
+    serialNumber:'1',
+    singlePieceName: '6mm鐧界幓骞抽挗(澶�)',
+    marking: '1',
+    pieces: '(澶�)',
+    processCardNumber: '11',
+    width: '575',
+    height:"2241",
+    shape: '鏅舰',
+    upCompletedQuantity: '12',
+    completedQuantity: '1',
+    numberBroken:'2',
+    reasonType: '鏈哄櫒',
+    reasonDamage:'姘旀场瓒呮爣',
+    responsibilityProcess:'涓┖',
+    responsibilityTeams:'涓┖涓�鐝�',
+    responsibilityPersonnel:'',
+    responsibilityDevice:'涓┖3#绾�',
+  },
+]
+</script>
+
+<template>
+  <div>
+<!--    <div id="head" style="width: 900px;">-->
+<!--      <el-input placeholder="娴佺▼鍗″彿" v-model="form.xsdh" style="width: 200px"/>-->
+<!--      &nbsp;-->
+
+<!--      <el-input placeholder="椤圭洰鍚嶇О" v-model="form.lckh" style="width: 200px"/>-->
+<!--      &nbsp;-->
+<!--      <el-button type="primary">鏌ヨ</el-button>-->
+
+<!--    </div>-->
+
+    <div>
+      <el-button class="btn_bc" type="primary">淇濆瓨</el-button>
+      <el-table
+
+          :data="tableData"
+          style="width: 100%"
+
+      >
+        <el-table-column type="selection" width="55" />
+        <el-table-column prop="reportingWorkTime" label="鎶ュ伐鏃堕棿" width="155" >
+
+        </el-table-column>
+        <el-table-column sortable prop="salesOrderNo" label="閿�鍞崟鍙�" width="120" />
+        <el-table-column sortable prop="processCardNo" label="娴佺▼鍗″彿" width="130" />
+        <el-table-column prop="entryName" label="椤圭洰鍚嶇О" width="120" :show-overflow-tooltip='true'/>
+        <el-table-column prop="productName" label="浜у搧鍚嶇О" width="120" :show-overflow-tooltip='true'/>
+        <el-table-column sortable prop="reportingWorkNo" label="鎶ュ伐缂栧彿" width="120"/> >
+        <el-table-column  prop="serialNumber" label="搴忓彿" width="60" />
+        <el-table-column prop="singlePieceName" :show-overflow-tooltip='true' label="鍗曠墖鍚嶇О" width="120" />
+        <el-table-column prop="floorNumber" label="妤煎眰缂栧彿" width="120" />
+        <el-table-column prop="marking" label="鏍囪" width="60" />
+        <el-table-column prop="pieces" label="鐗囨爣璁�" width="70" />
+        <el-table-column prop="processCardNumber" label="娴佺▼鍗℃暟閲�" width="95" />
+        <el-table-column prop="width" label="瀹�" width="60" />
+        <el-table-column prop="height" label="楂�" width="60" />
+        <el-table-column prop="area" label="闈㈢Н" width="65" />
+        <el-table-column prop="shape" label="褰㈢姸" :show-overflow-tooltip='true' width="60" />
+        <el-table-column prop="numberBroken" label="娆$牬鏁伴噺" width="85" />
+        <el-table-column prop="reasonType" label="娆$牬绫诲瀷" :show-overflow-tooltip='true' width="85" />
+        <el-table-column prop="reasonDamage" label="娆$牬鍘熷洜" :show-overflow-tooltip='true' width="85" />
+        <el-table-column prop="responsibilityDevice" label="璐d换璁惧" :show-overflow-tooltip='true' width="85" />
+        <el-table-column prop="reportingProcess" label="鎶ュ伐宸ュ簭" :show-overflow-tooltip='true' width="85" />
+        <el-table-column prop="responsibilityProcess" label="璐d换宸ュ簭" :show-overflow-tooltip='true' width="85" />
+        <el-table-column prop="responsibilityTeams" label="璐d换鐝粍" :show-overflow-tooltip='true' width="85" />
+        <el-table-column prop="responsibilityPersonnel" label="璐d换浜哄憳" :show-overflow-tooltip='true' width="85" />
+        <el-table-column prop="qualityInspector" label="璐ㄦ鍛�" width="80" />
+
+
+
+
+
+      </el-table><!-- <h1>{{msg}}</h1> -->
+    </div>
+  </div>
+</template>
+
+<style scoped>
+
+
+.processCard{
+  width: 140px;
+}
+.processesSt{
+  height: 33px;
+  width: 80px;
+  background-color: #409eff;
+  color: white;
+  border: none;
+  border-radius: 5px;
+}
+#titleTable tr,#titleTable td{
+  border: 1px solid #000;
+}
+#titleTable{
+  border-collapse: collapse;
+  text-align: center;
+  width: 100%;
+  height: 100%;
+}
+#titleTable td{
+  width: 100px;
+  height: 30px;
+}
+#titleTable td:nth-child(1){
+  width: 100px;
+  height: 30px;
+}
+#titleTable td:nth-child(2){
+  width: 100px;
+}
+.chaxun{
+  background-color:#D5EAFF;
+  border: none;
+}
+
+.btn_bc{
+  float: right;
+}
+</style>
\ No newline at end of file
diff --git a/north-glass-erp/northglass-erp/src/views/pp/Replenish/PrintReplenishFlowCard.vue b/north-glass-erp/northglass-erp/src/views/pp/Replenish/PrintReplenishFlowCard.vue
new file mode 100644
index 0000000..311dc58
--- /dev/null
+++ b/north-glass-erp/northglass-erp/src/views/pp/Replenish/PrintReplenishFlowCard.vue
@@ -0,0 +1,167 @@
+<script setup>
+import {ArrowLeftBold} from "@element-plus/icons-vue";
+import {useRouter} from "vue-router";
+import {reactive} from "vue";
+const router = useRouter()
+let flag = $ref(true)
+function intoCreateProduct(){
+  if(flag){
+    router.push('/main/processCard/SelectPrintFlowCard')
+  }else {
+    router.push('/main/processCard/SelectPrintFlowCard')
+  }
+  flag=!flag
+}
+function openPrint() {
+  this.$router.push('/page');
+}
+const form = reactive({
+  name: '',
+  region: '',
+  date1: '',
+  date2: '',
+  delivery: false,
+  type: [],
+  resource: '',
+  desc: '',
+})
+const tableData = [
+  {
+    salesOrderNo: 'NG231201',
+    productionOrderNo:'NG231201A',
+    processCard: 'NG231201A01',
+    customerName:'瑗垮畨楂樼骞曞闂ㄧ獥鏈夐檺鍏徃',
+    entryName:'閾堕殕骞垮満',
+    sliceMarking:'(澶�)',
+    marking:'1',
+    pieces:'16',
+    area:'24.14',
+    productName: '10mm瓒呯櫧UD60骞抽挗(澶�)+12Ar(缁�)+10mm瓒呯櫧骞抽挗(鍐�)',
+    singlePieceName: '10mm瓒呯櫧UD60骞抽挗(澶�)',
+    floorNumber: '16-BSGB05',
+    divider: '鏅舰',
+    splittingTime: '2023-01-11',
+    notes: '',
+  },
+  {
+    salesOrderNo: 'NG231201',
+    productionOrderNo:'NG231201A',
+    processCard: 'NG231201A01',
+    customerName:'瑗垮畨楂樼骞曞闂ㄧ獥鏈夐檺鍏徃',
+    entryName:'閾堕殕骞垮満',
+    sliceMarking:'(鍐�)',
+    marking:'2',
+    pieces:'16',
+    area:'24.14',
+    productName: '10mm瓒呯櫧UD60骞抽挗(澶�)+12Ar(缁�)+10mm瓒呯櫧骞抽挗(鍐�)',
+    singlePieceName: '10mm瓒呯櫧骞抽挗(鍐�)',
+    floorNumber: '16-BSGB05',
+    divider: '鏅舰',
+    splittingTime: '2023-01-11',
+    notes: '',
+  },
+  {
+    salesOrderNo: 'NG231201',
+    productionOrderNo:'NG231201A',
+    processCard: 'NG231201A02',
+    customerName:'瑗垮畨楂樼骞曞闂ㄧ獥鏈夐檺鍏徃',
+    entryName:'閾堕殕骞垮満',
+    sliceMarking:'(澶�)',
+    marking:'1',
+    pieces:'6',
+    area:'24.14',
+    productName: '10mm瓒呯櫧UD60骞抽挗(澶�)+12Ar(缁�)+10mm瓒呯櫧骞抽挗(鍐�)',
+    singlePieceName: '10mm瓒呯櫧UD60骞抽挗(澶�)',
+    floorNumber: '16-BSGB05',
+    divider: '鏅舰',
+    splittingTime: '2023-01-11',
+    notes: '',
+  },
+  {
+    salesOrderNo: 'NG231201',
+    productionOrderNo:'NG231201A',
+    processCard: 'NG231201A02',
+    customerName:'瑗垮畨楂樼骞曞闂ㄧ獥鏈夐檺鍏徃',
+    entryName:'閾堕殕骞垮満',
+    sliceMarking:'(鍐�)',
+    marking:'2',
+    pieces:'6',
+    area:'24.14',
+    productName: '10mm瓒呯櫧UD60骞抽挗(澶�)+12Ar(缁�)+10mm瓒呯櫧骞抽挗(鍐�)',
+    singlePieceName: '10mm瓒呯櫧骞抽挗(鍐�)',
+    floorNumber: '16-BSGB05',
+    divider: '鏅舰',
+    splittingTime: '2023-01-11',
+    notes: '',
+  },
+]
+</script>
+
+<template>
+  <div>
+    <div class="header">
+
+      <router-link to="/main/processCard/PrintProcess" target="_blank">鎵撳紑鏂版爣绛�</router-link>
+      <el-button type="primary">鎵撳嵃娴佺▼鍗�</el-button>
+      <el-button type="primary">鎵撳嵃鏍囩</el-button>
+      &nbsp;&nbsp;
+      <select class="stnw"  style="width: 100px" >
+        <option label="瀹ゅ唴闈�" value="option1"></option>
+        <option label="瀹ゅ闈�" value="option2"></option>
+      </select>
+      &nbsp;&nbsp;
+      <select class="stnw"  style="width: 100px" >
+        <option label="鎴愬搧鏍囩" value="option1"></option>
+        <option label="鍗曠墖鏍囩" value="option2"></option>
+      </select>
+      &nbsp;&nbsp;
+      <el-button type="primary">涓嶅彲鎺掔増</el-button>
+      <el-button type="primary">璁″垝鎺掔増</el-button>
+    </div>
+    <el-table :data="tableData" border style="width: 100%" height="100%">
+      <el-table-column type="selection" width="55" />
+      <el-table-column sortable prop="salesOrderNo" label="閿�鍞崟鍙�" width="120" >
+      </el-table-column>
+      <el-table-column sortable prop="productionOrderNo" label="鐢熶骇璁㈠崟鍙�" width="120" />
+      <el-table-column sortable prop="processCard" label="娴佺▼鍗″彿" width="120" />
+      <el-table-column prop="customerName" label="瀹㈡埛鍚嶇О" width="120" :show-overflow-tooltip='true'/>
+      <el-table-column prop="entryName" label="椤圭洰鍚嶇О" width="120" :show-overflow-tooltip='true'/>
+      <el-table-column prop="sliceMarking" label="鐗囨爣璁�" :show-overflow-tooltip='true' width="70" />
+      <el-table-column prop="marking" label="鏍囪" width="55" />
+      <el-table-column prop="pieces" label="鐗囨暟" width="65" />
+      <el-table-column prop="area" label="闈㈢Н" width="65" />
+      <el-table-column prop="productName" label="浜у搧鍚嶇О" width="120" :show-overflow-tooltip='true'/>
+      <el-table-column prop="singlePieceName" label="鍗曠墖鍚嶇О" width="120" :show-overflow-tooltip='true'/>
+      <el-table-column prop="floorNumber" label="妤煎眰缂栧彿" width="120" />
+      <el-table-column prop="divider" label="鍒嗘灦鍛�" width="75" />
+      <el-table-column prop="splittingTime" label="鍒嗘灦鏃堕棿" width="120" />
+      <el-table-column prop="notes" label="澶囨敞" :show-overflow-tooltip='true' width="350" />
+    </el-table><!-- <h1>{{msg}}</h1> -->
+  </div>
+</template>
+
+<style scoped>
+.common-layout{
+  height: 100%;
+}
+
+.el-aside{
+  height: 100%;
+}
+
+.el-main{
+  height: 100%;
+  text-align: center;
+}
+.stnw{
+  height: 33px;
+  width: 80px;
+  background-color: #409eff;
+  color: white;
+  border: none;
+  border-radius: 5px;
+}
+
+
+
+</style>
\ No newline at end of file
diff --git a/north-glass-erp/northglass-erp/src/views/pp/Replenish/Replenish.vue b/north-glass-erp/northglass-erp/src/views/pp/Replenish/Replenish.vue
new file mode 100644
index 0000000..dfa8ac2
--- /dev/null
+++ b/north-glass-erp/northglass-erp/src/views/pp/Replenish/Replenish.vue
@@ -0,0 +1,72 @@
+<script setup>
+import {ref} from "vue";
+import {ArrowLeftBold, ArrowRight} from "@element-plus/icons-vue";
+import request from "@/utils/request";
+import deepClone from "@/utils/deepClone";
+import {ElMessage} from "element-plus";
+import {useRouter} from "vue-router";
+import  GlassType from '@/components/basic/product/GlassType.vue'
+
+
+
+const router = useRouter()
+let flag = $ref(true)
+let flag1 = $ref(true)
+function intoRelease(){
+  if(flag){
+    router.push('/main/Replenish/AddReplenish')
+  }else {
+    router.push('/main/Replenish/SelectReplenish')
+  }
+  flag=!flag
+}
+function intoAddWorkOrder(){
+  if(flag1){
+    router.push('/main/Replenish/PrintReplenishFlowCard')
+  }else {
+    router.push('/main/Replenish/SelectReplenish')
+  }
+  flag1=!flag1
+}
+</script>
+
+<template>
+  <div id="main">
+    <div id="div-title">
+      <el-breadcrumb :separator-icon="ArrowRight">
+        <el-breadcrumb-item :to="{ path: '/main/Replenish/SelectReplenish' }">琛ョ墖绠$悊</el-breadcrumb-item>
+        <el-breadcrumb-item :to="{ path: '/main/Replenish/AddReplenish' }">琛ョ墖鏂板</el-breadcrumb-item>
+        <el-breadcrumb-item :to="{ path: '/main/Replenish/PrintReplenishFlowCard' }">琛ョ墖鎵撳嵃</el-breadcrumb-item>
+        <el-breadcrumb-item :to="{ path: '/main/processCard/SelectPrintFlowCard' }" style="display: none">鎵撳嵃</el-breadcrumb-item>
+      </el-breadcrumb>
+    </div>
+
+    <div id="main-body">
+      <router-view  />
+    </div>
+  </div>
+</template>
+
+<style scoped>
+#main{
+  width: 100%;
+  height: 100%;
+}
+#div-title{
+  height: 5%;
+  width: 100%;
+}
+#searchButton{
+  margin-top: -5px;
+  margin-left: 1rem;
+}
+#searchButton1{
+//margin-left: 10rem;
+}
+/*main-body鏍峰紡*/
+#main-body{
+  width: 99%;
+  height: 92%;
+  margin-top: 1%;
+}
+</style>
\ No newline at end of file
diff --git a/north-glass-erp/northglass-erp/src/views/pp/Replenish/SelectReplenish.vue b/north-glass-erp/northglass-erp/src/views/pp/Replenish/SelectReplenish.vue
new file mode 100644
index 0000000..fe8a94d
--- /dev/null
+++ b/north-glass-erp/northglass-erp/src/views/pp/Replenish/SelectReplenish.vue
@@ -0,0 +1,258 @@
+<script setup>
+import {reactive, ref} from 'vue'
+
+// do not use same name with ref
+const form = reactive({
+  lckh:'',
+  xsdh:'',
+})
+const value = ref('')
+const defaultTime = ref<[Date, Date]>([
+  new Date(2000, 1, 1, 0, 0, 0),
+  new Date(2000, 2, 1, 23, 59, 59),
+])
+const tableData = [
+  {
+    reportingWorkTime:'2021-01-01',
+    salesOrderNo:'NG23010101',
+    processCardNo:'NG23010101A01',
+    entryName:'xxxx',
+    productName:"xxxxxxxxx",
+    reportingWorkNo:"BG2301010001",
+    floorNumber:"D4-010-01",
+    area:'23.11',
+    reportingProcess:'閽㈠寲',
+    qualityInspector:"寮犱笁",
+    serialNumber:'1',
+    singlePieceName: '6mm鐧界幓骞抽挗(澶�)',
+    marking: '1',
+    pieces: '(澶�)',
+    processCardNumber: '11',
+    width: '575',
+    height:"2241",
+    shape: '鏅舰',
+    upCompletedQuantity: '12',
+    completedQuantity: '1',
+    numberBroken:'2',
+    availableUse:'',
+    returnProcess:'',
+
+    reasonType: '鏈哄櫒',
+    reasonDamage:'姘旀场瓒呮爣',
+    available:'',
+    reworkProcess:'',
+    responsibilityProcess:'涓┖',
+    responsibilityTeams:'涓┖涓�鐝�',
+    responsibilityPersonnel:'',
+    responsibilityDevice:'涓┖3#绾�',
+    completed:'',
+    onceBroken:'',
+  },
+  {
+    reportingWorkTime:'2021-01-01',
+    salesOrderNo:'NG23010101',
+    processCardNo:'NG23010101A01',
+    entryName:'xxxx',
+    productName:"xxxxxxxxx",
+    reportingWorkNo:"BG2301010001",
+    floorNumber:"D4-010-01",
+    area:'23.11',
+    reportingProcess:'閽㈠寲',
+    qualityInspector:"寮犱笁",
+    serialNumber:'1',
+    singlePieceName: '6mm鐧界幓骞抽挗(澶�)',
+    marking: '1',
+    pieces: '(澶�)',
+    processCardNumber: '11',
+    width: '575',
+    height:"2241",
+    shape: '鏅舰',
+    upCompletedQuantity: '12',
+    completedQuantity: '1',
+    numberBroken:'2',
+    availableUse:'',
+    returnProcess:'',
+
+    reasonType: '鏈哄櫒',
+    reasonDamage:'姘旀场瓒呮爣',
+    available:'',
+    reworkProcess:'',
+    responsibilityProcess:'涓┖',
+    responsibilityTeams:'涓┖涓�鐝�',
+    responsibilityPersonnel:'',
+    responsibilityDevice:'涓┖3#绾�',
+    completed:'',
+    onceBroken:'',
+  },
+  {
+    reportingWorkTime:'2021-01-01',
+    salesOrderNo:'NG23010101',
+    processCardNo:'NG23010101A01',
+    entryName:'xxxx',
+    productName:"xxxxxxxxx",
+    reportingWorkNo:"BG2301010001",
+    floorNumber:"D4-010-01",
+    area:'23.11',
+    reportingProcess:'閽㈠寲',
+    qualityInspector:"寮犱笁",
+    serialNumber:'1',
+    singlePieceName: '6mm鐧界幓骞抽挗(澶�)',
+    marking: '1',
+    pieces: '(澶�)',
+    processCardNumber: '11',
+    width: '575',
+    height:"2241",
+    shape: '鏅舰',
+    upCompletedQuantity: '12',
+    completedQuantity: '1',
+    numberBroken:'2',
+    availableUse:'',
+    returnProcess:'',
+
+    reasonType: '鏈哄櫒',
+    reasonDamage:'姘旀场瓒呮爣',
+    available:'',
+    reworkProcess:'',
+    responsibilityProcess:'涓┖',
+    responsibilityTeams:'涓┖涓�鐝�',
+    responsibilityPersonnel:'',
+    responsibilityDevice:'涓┖3#绾�',
+    completed:'',
+    onceBroken:'',
+  },
+  {
+    reportingWorkTime:'2021-01-01',
+    salesOrderNo:'NG23010101',
+    processCardNo:'NG23010101A01',
+    entryName:'xxxx',
+    productName:"xxxxxxxxx",
+    reportingWorkNo:"BG2301010001",
+    floorNumber:"D4-010-01",
+    area:'23.11',
+    reportingProcess:'閽㈠寲',
+    qualityInspector:"寮犱笁",
+    serialNumber:'1',
+    singlePieceName: '6mm鐧界幓骞抽挗(澶�)',
+    marking: '1',
+    pieces: '(澶�)',
+    processCardNumber: '11',
+    width: '575',
+    height:"2241",
+    shape: '鏅舰',
+    upCompletedQuantity: '12',
+    completedQuantity: '1',
+    numberBroken:'2',
+    availableUse:'',
+    returnProcess:'',
+
+    reasonType: '鏈哄櫒',
+    reasonDamage:'姘旀场瓒呮爣',
+    available:'',
+    reworkProcess:'',
+    responsibilityProcess:'涓┖',
+    responsibilityTeams:'涓┖涓�鐝�',
+    responsibilityPersonnel:'',
+    responsibilityDevice:'涓┖3#绾�',
+    completed:'',
+    onceBroken:'',
+  },
+]
+</script>
+
+<template>
+  <div>
+    <div id="head" style="width: 900px;">
+<!--      <el-input placeholder="娴佺▼鍗″彿" v-model="form.xsdh" style="width: 200px"/>-->
+<!--      &nbsp;-->
+
+<!--      <el-input placeholder="椤圭洰鍚嶇О" v-model="form.lckh" style="width: 200px"/>-->
+<!--      &nbsp;-->
+      <el-date-picker
+          v-model="value"
+          type="daterange"
+          start-placeholder="鎶ュ伐寮�濮嬫椂闂�"
+          end-placeholder="缁撴潫鏃堕棿"
+          :default-time="defaultTime"
+      />
+      <el-button type="primary">鏌ヨ</el-button>
+    </div>
+
+    <div>
+      <el-table :data="tableData" border style="width: 100%" height="100%">
+        <el-table-column fixed label="鎿嶄綔" width="60"  >
+          <el-button link type="primary" size="small">鍒犻櫎</el-button>
+        </el-table-column>
+        <el-table-column prop="reportingWorkTime" label="鎶ュ伐鏃堕棿" width="155" />
+        <el-table-column sortable prop="salesOrderNo" label="閿�鍞崟鍙�" width="120" />
+        <el-table-column sortable prop="processCardNo" label="娴佺▼鍗″彿" width="130" />
+        <el-table-column prop="entryName" label="椤圭洰鍚嶇О" width="120" :show-overflow-tooltip='true'/>
+        <el-table-column prop="productName" label="浜у搧鍚嶇О" width="120" :show-overflow-tooltip='true'/>
+        <el-table-column sortable prop="reportingWorkNo" label="鎶ュ伐缂栧彿" width="120"/> >
+        <el-table-column  prop="serialNumber" label="搴忓彿" width="60" />
+        <el-table-column prop="singlePieceName" :show-overflow-tooltip='true' label="鍗曠墖鍚嶇О" width="120" />
+        <el-table-column prop="floorNumber" label="妤煎眰缂栧彿" width="120" />
+        <el-table-column prop="marking" label="鏍囪" width="60" />
+        <el-table-column prop="pieces" label="鐗囨爣璁�" width="70" />
+        <el-table-column prop="processCardNumber" label="娴佺▼鍗℃暟閲�" width="95" />
+        <el-table-column prop="width" label="瀹�" width="60" />
+        <el-table-column prop="height" label="楂�" width="60" />
+        <el-table-column prop="area" label="闈㈢Н" width="65" />
+        <el-table-column prop="shape" label="褰㈢姸" :show-overflow-tooltip='true' width="60" />
+        <el-table-column prop="numberBroken" label="娆$牬鏁伴噺" width="85" />
+        <el-table-column prop="reasonType" label="娆$牬绫诲瀷" :show-overflow-tooltip='true' width="85" />
+        <el-table-column prop="reasonDamage" label="娆$牬鍘熷洜" :show-overflow-tooltip='true' width="85" />
+        <el-table-column prop="responsibilityDevice" label="璐d换璁惧" :show-overflow-tooltip='true' width="85" />
+        <el-table-column prop="reportingProcess" label="鎶ュ伐宸ュ簭" :show-overflow-tooltip='true' width="85" />
+        <el-table-column prop="responsibilityProcess" label="璐d换宸ュ簭" :show-overflow-tooltip='true' width="85" />
+        <el-table-column prop="responsibilityTeams" label="璐d换鐝粍" :show-overflow-tooltip='true' width="85" />
+        <el-table-column prop="responsibilityPersonnel" label="璐d换浜哄憳" :show-overflow-tooltip='true' width="85" />
+        <el-table-column prop="qualityInspector" label="璐ㄦ鍛�" width="80" />
+
+
+
+
+
+      </el-table><!-- <h1>{{msg}}</h1> -->
+    </div>
+  </div>
+</template>
+
+<style scoped>
+
+
+.processCard{
+  width: 140px;
+}
+.processesSt{
+  height: 33px;
+  width: 80px;
+  background-color: #409eff;
+  color: white;
+  border: none;
+  border-radius: 5px;
+}
+#titleTable tr,#titleTable td{
+  border: 1px solid #000;
+}
+#titleTable{
+  border-collapse: collapse;
+  text-align: center;
+  width: 100%;
+  height: 100%;
+}
+#titleTable td{
+  width: 100px;
+  height: 30px;
+}
+#titleTable td:nth-child(1){
+  width: 100px;
+  height: 30px;
+}
+#titleTable td:nth-child(2){
+  width: 100px;
+}
+.chaxun{
+  background-color:#D5EAFF;
+  border: none;
+}
+</style>
\ No newline at end of file
diff --git a/north-glass-erp/northglass-erp/src/views/pp/machine/AddMachine.vue b/north-glass-erp/northglass-erp/src/views/pp/machine/AddMachine.vue
new file mode 100644
index 0000000..e8a8f01
--- /dev/null
+++ b/north-glass-erp/northglass-erp/src/views/pp/machine/AddMachine.vue
@@ -0,0 +1,105 @@
+<script lang="ts" setup>
+import {reactive, ref} from 'vue'
+import {Search} from "@element-plus/icons-vue"
+import {useRouter} from "vue-router"
+const router = useRouter()
+// do not use same name with ref
+const value = ref('')
+const options = [
+  {
+    value: 'Option1',
+    label: 'Option1',
+  },
+  {
+    value: 'Option2',
+    label: 'Option2',
+  },
+  {
+    value: 'Option3',
+    label: 'Option3',
+  },
+]
+const form = reactive({
+  name: '',
+  region: '',
+  date1: '',
+  date2: '',
+  delivery: false,
+  type: [],
+  resource: '',
+  desc: '',
+})
+
+
+const tableData = [
+  {
+    1: '',
+    2: '',
+    3: '',
+    4: '',
+    5:'',
+    6:'',
+
+  },
+  {
+    1: '',
+    2: '',
+    3: '',
+    4: '',
+    5:'',
+    6:'',
+
+  },
+  {
+    1: '',
+    2: '',
+    3: '',
+    4: '',
+    5:'',
+    6:'',
+
+  },
+]
+</script>
+
+<template>
+  <div>
+    <div id="selectForm">
+      <el-row :gutter="0">
+
+        <el-button type="primary">淇濆瓨</el-button>
+      </el-row>
+
+    </div>
+    <el-table :data="tableData" border style="width: 100%" height="100%">
+      <el-table-column prop="1" label="鏍囧噯鍚嶇О" >
+        <el-input></el-input>
+      </el-table-column>
+      <el-table-column prop="2" label="璁惧鍚嶇О" >
+      <el-input></el-input>
+      </el-table-column>
+      <el-table-column prop="3" label="璐拱鏃堕棿" >
+      <el-input></el-input>
+      </el-table-column>
+      <el-table-column prop="4" label="瀹夎鏃堕棿">
+      <el-input></el-input>
+      </el-table-column>
+      <el-table-column prop="5" label="淇濆吇鍛ㄦ湡"  >
+      <el-input></el-input>
+      </el-table-column>
+      <el-table-column prop="6" label="鎵�鍦ㄥ伐鑹�" >
+      <el-input></el-input>
+      </el-table-column>
+    </el-table><!-- <h1>{{msg}}</h1> -->
+  </div>
+</template>
+
+<style scoped>
+#selectForm {
+  float: right;
+  height: 100%;
+  text-align: center;
+}
+
+
+</style>
\ No newline at end of file
diff --git a/north-glass-erp/northglass-erp/src/views/pp/machine/AddMaintenanceAndRepair.vue b/north-glass-erp/northglass-erp/src/views/pp/machine/AddMaintenanceAndRepair.vue
new file mode 100644
index 0000000..0d4c8ef
--- /dev/null
+++ b/north-glass-erp/northglass-erp/src/views/pp/machine/AddMaintenanceAndRepair.vue
@@ -0,0 +1,120 @@
+<script lang="ts" setup>
+import {reactive, ref} from 'vue'
+import {Search} from "@element-plus/icons-vue"
+import {useRouter} from "vue-router"
+const router = useRouter()
+// do not use same name with ref
+const value = ref('')
+const options = [
+  {
+    value: 'Option1',
+    label: 'Option1',
+  },
+  {
+    value: 'Option2',
+    label: 'Option2',
+  },
+  {
+    value: 'Option3',
+    label: 'Option3',
+  },
+]
+const form = reactive({
+  name: '',
+  region: '',
+  date1: '',
+  date2: '',
+  delivery: false,
+  type: [],
+  resource: '',
+  desc: '',
+})
+
+
+const tableData = [
+  {
+    1: '',
+    2: '',
+    3: '',
+    4: '',
+    5:'',
+    6:'',
+
+  },
+  {
+    1: '',
+    2: '',
+    3: '',
+    4: '',
+    5:'',
+    6:'',
+
+  },
+  {
+    1: '',
+    2: '',
+    3: '',
+    4: '',
+    5:'',
+    6:'',
+
+  },
+]
+</script>
+
+<template>
+  <div>
+    <div id="selectForm" style="float: right">
+      <el-row :gutter="0">
+
+        <el-button type="primary">淇濆瓨</el-button>
+      </el-row>
+
+    </div>
+    <el-table :data="tableData" border style="width: 100%" height="100%">
+      <el-table-column prop="1" label="璁惧鍚嶇О" >
+        <el-input></el-input>
+      </el-table-column>
+      <el-table-column prop="2" label="绫诲瀷"  >
+        <el-input></el-input>
+      </el-table-column>
+      <el-table-column prop="3" label="鏁呴殰鏃ユ湡" :show-overflow-tooltip='true'  >
+        <el-input></el-input>
+      </el-table-column>
+      <el-table-column prop="4" label="鏁呴殰鍘熷洜" :show-overflow-tooltip='true'  >
+        <el-input></el-input>
+      </el-table-column>
+      <el-table-column prop="5" label="淇濆吇鏃ユ湡"   >
+        <el-input></el-input>
+      </el-table-column>
+      <el-table-column prop="6" label="淇濆吇璇存槑"  >
+        <el-input></el-input>
+      </el-table-column>
+      <el-table-column prop="7" label="缁翠慨/淇濆吇寮�濮嬫椂闂�"  width="150px">
+        <el-input></el-input>
+      </el-table-column>
+      <el-table-column prop="8" label="缁翠慨/淇濆吇瀹屾垚鏃堕棿"  width="150px"  >
+        <el-input></el-input>
+      </el-table-column>
+      <el-table-column prop="9" label="鎵�鍦ㄥ伐鑹�" >
+        <el-input></el-input>
+      </el-table-column>
+      <el-table-column prop="10" label="缁翠慨/淇濆吇浜哄憳" :show-overflow-tooltip='true'>
+        <el-input></el-input>
+      </el-table-column>
+      <el-table-column prop="11" label="璐圭敤"  >
+        <el-input></el-input>
+      </el-table-column>
+    </el-table><!-- <h1>{{msg}}</h1> -->
+  </div>
+</template>
+
+<style scoped>
+#selectForm {
+
+  height: 100%;
+  text-align: center;
+}
+
+
+</style>
\ No newline at end of file
diff --git a/north-glass-erp/northglass-erp/src/views/pp/machine/Machine.vue b/north-glass-erp/northglass-erp/src/views/pp/machine/Machine.vue
new file mode 100644
index 0000000..6344dd0
--- /dev/null
+++ b/north-glass-erp/northglass-erp/src/views/pp/machine/Machine.vue
@@ -0,0 +1,57 @@
+<script setup>
+import {ref} from "vue";
+import {ArrowLeftBold, ArrowRight} from "@element-plus/icons-vue";
+import request from "@/utils/request";
+import deepClone from "@/utils/deepClone";
+import {ElMessage} from "element-plus";
+import {useRouter} from "vue-router";
+import  GlassType from '@/components/basic/product/GlassType.vue'
+
+
+
+const router = useRouter()
+
+
+</script>
+
+<template>
+  <div id="main">
+    <div id="div-title">
+      <el-breadcrumb :separator-icon="ArrowRight">
+        <el-breadcrumb-item :to="{ path: '/main/machine/SelectMachine' }">璁惧绠$悊</el-breadcrumb-item>
+        <el-breadcrumb-item :to="{ path: '/main/machine/AddMachine' }">璁惧鏂板</el-breadcrumb-item>
+        <el-breadcrumb-item :to="{ path: '/main/machine/MaintenanceAndRepair' }">淇濆吇涓庣淮淇�</el-breadcrumb-item>
+        <el-breadcrumb-item :to="{ path: '/main/machine/AddMaintenanceAndRepair' }">淇濆吇涓庣淮淇柊澧�</el-breadcrumb-item>
+        <el-breadcrumb-item :to="{ path: '/main/processCard/SelectPrintFlowCard' }" style="display: none">鎵撳嵃</el-breadcrumb-item>
+      </el-breadcrumb>
+    </div>
+
+    <div id="main-body">
+      <router-view  />
+    </div>
+  </div>
+</template>
+
+<style scoped>
+#main{
+  width: 100%;
+  height: 100%;
+}
+#div-title{
+  height: 5%;
+  width: 100%;
+}
+#searchButton{
+  margin-top: -5px;
+  margin-left: 1rem;
+}
+#searchButton1{
+//margin-left: 10rem;
+}
+/*main-body鏍峰紡*/
+#main-body{
+  width: 99%;
+  height: 92%;
+  margin-top: 1%;
+}
+</style>
\ No newline at end of file
diff --git a/north-glass-erp/northglass-erp/src/views/pp/machine/MaintenanceAndRepair.vue b/north-glass-erp/northglass-erp/src/views/pp/machine/MaintenanceAndRepair.vue
new file mode 100644
index 0000000..0f8d398
--- /dev/null
+++ b/north-glass-erp/northglass-erp/src/views/pp/machine/MaintenanceAndRepair.vue
@@ -0,0 +1,111 @@
+<script lang="ts" setup>
+import {reactive, ref} from 'vue'
+import {Search} from "@element-plus/icons-vue"
+import {useRouter} from "vue-router"
+const router = useRouter()
+// do not use same name with ref
+const value = ref('')
+const options = [
+  {
+    value: 'Option1',
+    label: 'Option1',
+  },
+  {
+    value: 'Option2',
+    label: 'Option2',
+  },
+  {
+    value: 'Option3',
+    label: 'Option3',
+  },
+]
+const form = reactive({
+  name: '',
+  region: '',
+  date1: '',
+  date2: '',
+  delivery: false,
+  type: [],
+  resource: '',
+  desc: '',
+})
+
+
+const tableData = [
+  {
+    1: '閽㈠寲鐐�(22E)',
+    2: '缁翠慨',
+    3: '2022-03-16',
+    4: '鍧忎簡',
+    5:'',
+    6:'',
+    7:'2022-03-16',
+    8:'2022-03-16',
+    9:'閽㈠寲',
+    10:'SSS',
+    11:'112',
+
+  },
+  {
+    1: '閽㈠寲鐐�(22E)',
+    2: '淇濆吇',
+    3: '',
+    4: '',
+    5:'2022-03-16',
+    6:'淇濆吇',
+    7:'2022-03-16',
+    8:'2022-03-16',
+    9:'閽㈠寲',
+    10:'SSS',
+    11:'112',
+
+  },
+]
+</script>
+
+<template>
+  <div>
+<!--    <div id="selectForm">-->
+<!--      <el-row :gutter="0">-->
+<!--        <el-select v-model="value" class="m-2" placeholder="鎵�鍦ㄥ伐鑹�">-->
+<!--          <el-option-->
+<!--              v-for="item in options"-->
+<!--              :key="item.value"-->
+<!--              :label="item.label"-->
+<!--              :value="item.value"-->
+<!--          />-->
+<!--        </el-select>-->
+<!--        &nbsp;&nbsp;-->
+<!--        <el-button type="primary">鏌ヨ</el-button>-->
+<!--      </el-row>-->
+
+<!--    </div>-->
+    <el-table :data="tableData" border style="width: 100%" height="100%">
+      <el-table-column fixed label="鎿嶄綔" width="100"  >
+        <el-button link type="primary" size="small">鍒犻櫎</el-button>
+        <el-button link type="primary" size="small">缂栬緫</el-button>
+      </el-table-column>
+      <el-table-column prop="1" label="璁惧鍚嶇О" width="105" />
+      <el-table-column prop="2" label="绫诲瀷" width="65" />
+      <el-table-column prop="3" label="鏁呴殰鏃ユ湡" :show-overflow-tooltip='true' width="105" />
+      <el-table-column prop="4" label="鏁呴殰鍘熷洜" :show-overflow-tooltip='true' width="135" />
+      <el-table-column prop="5" label="淇濆吇鏃ユ湡" width="125" />
+      <el-table-column prop="6" label="淇濆吇璇存槑" width="125" />
+      <el-table-column prop="7" label="缁翠慨/淇濆吇寮�濮嬫椂闂�" width="155" />
+      <el-table-column prop="8" label="缁翠慨/淇濆吇瀹屾垚鏃堕棿" width="150" />
+      <el-table-column prop="9" label="鎵�鍦ㄥ伐鑹�" width="85" />
+      <el-table-column prop="10" label="缁翠慨/淇濆吇浜哄憳" :show-overflow-tooltip='true' width="125" />
+      <el-table-column prop="11" label="璐圭敤" width="112" />
+    </el-table><!-- <h1>{{msg}}</h1> -->
+  </div>
+</template>
+
+<style scoped>
+#selectForm {
+  width: 40%;
+  height: 100%;
+  text-align: center;
+}
+
+
+</style>
\ No newline at end of file
diff --git a/north-glass-erp/northglass-erp/src/views/pp/machine/SelectMachine.vue b/north-glass-erp/northglass-erp/src/views/pp/machine/SelectMachine.vue
new file mode 100644
index 0000000..43c57c5
--- /dev/null
+++ b/north-glass-erp/northglass-erp/src/views/pp/machine/SelectMachine.vue
@@ -0,0 +1,141 @@
+<script lang="ts" setup>
+import {reactive, ref} from 'vue'
+import {Search} from "@element-plus/icons-vue"
+import {useRouter} from "vue-router"
+const router = useRouter()
+// do not use same name with ref
+const value = ref('')
+const options = [
+  {
+    value: 'Option1',
+    label: 'Option1',
+  },
+  {
+    value: 'Option2',
+    label: 'Option2',
+  },
+  {
+    value: 'Option3',
+    label: 'Option3',
+  },
+]
+const form = reactive({
+  name: '',
+  region: '',
+  date1: '',
+  date2: '',
+  delivery: false,
+  type: [],
+  resource: '',
+  desc: '',
+})
+
+
+const tableData = [
+  {
+    1: 'SB2209211',
+    2: '閽㈠寲鐐�(22E)',
+    3: '閽㈠寲鐐�(22E)',
+    4: '2022-03-16',
+    5:'2022-03-16',
+    6:'313',
+    7:'浣跨敤涓�',
+    8:'0',
+    9:'0',
+    10:'',
+    11:'',
+    12:'',
+    13:'',
+    14:'閽㈠寲',
+    15:'姝e父',
+
+  },
+  {
+    1: 'SB2209211',
+    2: '閽㈠寲鐐�(22E)',
+    3: '閽㈠寲鐐�(22E)',
+    4: '2022-03-16',
+    5:'2022-03-16',
+    6:'313',
+    7:'浣跨敤涓�',
+    8:'0',
+    9:'0',
+    10:'',
+    11:'',
+    12:'',
+    13:'',
+    14:'閽㈠寲',
+    15:'姝e父',
+
+  },
+  {
+    1: 'SB2209211',
+    2: '閽㈠寲鐐�(22E)',
+    3: '閽㈠寲鐐�(22E)',
+    4: '2022-03-16',
+    5:'2022-03-16',
+    6:'313',
+    7:'浣跨敤涓�',
+    8:'0',
+    9:'0',
+    10:'',
+    11:'',
+    12:'',
+    13:'',
+    14:'閽㈠寲',
+    15:'姝e父',
+
+  },
+]
+</script>
+
+<template>
+  <div>
+<!--    <div id="selectForm">-->
+<!--      <el-row :gutter="0">-->
+<!--        <el-select v-model="value" class="m-2" placeholder="鎵�鍦ㄥ伐鑹�">-->
+<!--          <el-option-->
+<!--              v-for="item in options"-->
+<!--              :key="item.value"-->
+<!--              :label="item.label"-->
+<!--              :value="item.value"-->
+<!--          />-->
+<!--        </el-select>-->
+<!--        &nbsp;&nbsp;-->
+<!--        <el-button type="primary">鏌ヨ</el-button>-->
+<!--      </el-row>-->
+
+<!--    </div>-->
+    <el-table :data="tableData" border style="width: 100%" height="100%">
+      <el-table-column fixed label="鎿嶄綔" width="100"  >
+        <el-button link type="primary" size="small">鍒犻櫎</el-button>
+        <el-button link type="primary" size="small">缂栬緫</el-button>
+      </el-table-column>
+      <el-table-column prop="1" label="璁惧缂栧彿" width="95" />
+      <el-table-column prop="2" label="鏍囧噯鍚嶇О" width="105" />
+      <el-table-column prop="3" label="璁惧鍚嶇О" width="105" />
+      <el-table-column prop="4" label="璐拱鏃堕棿" :show-overflow-tooltip='true' width="115" />
+      <el-table-column prop="5" label="瀹夎鏃堕棿" :show-overflow-tooltip='true' width="115" />
+      <el-table-column prop="6" label="浣跨敤鍛ㄦ湡(骞�)" width="105" />
+      <el-table-column prop="7" label="浣跨敤鐘舵��" width="85" />
+      <el-table-column prop="8" label="缁翠慨娆℃暟" width="85" />
+      <el-table-column prop="9" label="淇濆吇娆℃暟" width="85" />
+      <el-table-column prop="10" label="鏈�鍚庣淮淇椂闂�" :show-overflow-tooltip='true' width="115" />
+      <el-table-column prop="11" label="鏈�鍚庝繚鍏绘椂闂�" width="115" />
+      <el-table-column prop="12" label="缁翠慨璐圭敤" width="105" />
+      <el-table-column prop="13" label="淇濆吇璐圭敤" width="85" />
+      <el-table-column prop="14" label="鎵�鍦ㄥ伐鑹�" width="85" />
+      <el-table-column prop="15" label="浣滃簾鐘舵��" width="85" />
+    </el-table><!-- <h1>{{msg}}</h1> -->
+  </div>
+</template>
+
+<style scoped>
+#selectForm {
+  width: 40%;
+  height: 100%;
+  text-align: center;
+}
+
+
+</style>
\ No newline at end of file
diff --git a/north-glass-erp/northglass-erp/src/views/pp/processCard/AddProcessCard.vue b/north-glass-erp/northglass-erp/src/views/pp/processCard/AddProcessCard.vue
new file mode 100644
index 0000000..94408ab
--- /dev/null
+++ b/north-glass-erp/northglass-erp/src/views/pp/processCard/AddProcessCard.vue
@@ -0,0 +1,172 @@
+<script setup>
+import {ArrowLeftBold} from "@element-plus/icons-vue";
+import {useRouter} from "vue-router";
+const router = useRouter()
+let flag = $ref(true)
+function intoCreateProduct(){
+  if(flag){
+    router.push('/main/processCard/SplittingDetails')
+  }else {
+    router.push('/main/processCard/SplittingDetails')
+  }
+  flag=!flag
+}
+const tableData = [
+  {
+    processCard: 'NG231201A01',
+    orderSequence: '1',
+    landingSequence: '1',
+    floorNumber: '14-BSGB05',
+    shape: '鏅舰',
+    longSide: '5000',
+    shortSide: '4400',
+    total: '24',
+    totalThickness: '26',
+  },
+  {
+    processCard: 'NG231201A01',
+    orderSequence: '2',
+    landingSequence: '2',
+    floorNumber: '15-BSGB05',
+    shape: '鏅舰',
+    longSide: '5000',
+    shortSide: '4400',
+    total: '24',
+    totalThickness: '26',
+  },
+  {
+    processCard: 'NG231201A02',
+    orderSequence: '3',
+    landingSequence: '3',
+    floorNumber: '16-BSGB05',
+    shape: '鏅舰',
+    longSide: '5000',
+    shortSide: '4400',
+    total: '24',
+    totalThickness: '26',
+  },
+]
+const tableData2 = [
+  {
+    orderSequence: '4',
+    floorNumber: '17-BSGB08',
+    shape: '鏅舰',
+    longSide: '4600',
+    shortSide: '3880',
+    undividedQuantity: '15',
+    undividedArea: '99.84',
+    totalThickness:'28',
+    glassThickness:'24',
+    undividedWeight:'111'
+  },
+  {
+    orderSequence: '5',
+    floorNumber: '18-BSGB08',
+    shape: '鏅舰',
+    longSide: '4600',
+    shortSide: '3880',
+    undividedQuantity: '15',
+    undividedArea: '99.84',
+    totalThickness:'28',
+    glassThickness:'24',
+    undividedWeight:'111'
+  },
+  {
+    orderSequence: '6',
+    floorNumber: '19-BSGB08',
+    shape: '鏅舰',
+    longSide: '4600',
+    shortSide: '3880',
+    undividedQuantity: '15',
+    undividedArea: '99.84',
+    totalThickness:'28',
+    glassThickness:'24',
+    undividedWeight:'111'
+  },
+]
+</script>
+
+<template>
+  <div>
+    <div class="header">
+
+      <el-button
+          style="float: left"
+          @click="intoCreateProduct"
+          id="searchButton1"
+          type="primary"
+          :icon="ArrowLeftBold"
+          round >
+        {{flag?'杩斿洖':'杩斿洖'}}
+      </el-button>
+      <el-button type="primary">淇濆瓨鍒嗘灦</el-button>
+      <el-button type="primary">鍒嗘灦姹囨��</el-button>
+      <el-button type="primary">宸︿晶鍏ㄩ��</el-button>
+      <el-button type="primary">鍙充晶鍏ㄩ��</el-button>
+    </div>
+    <div class="common-layout">
+      <el-container height="100%">
+        <el-aside width="44%" style="">
+          <el-table :data="tableData" border style="width: 100%" height="100%">
+            <el-table-column sortable prop="processCard" label="娴佺▼鍗″彿" width="120" />
+            <el-table-column prop="orderSequence" label="璁㈠簭" width="60" />
+            <el-table-column prop="landingSequence" label="钀芥灦椤哄簭" width="85" />
+            <el-table-column prop="floorNumber" label="妤煎眰缂栧彿" :show-overflow-tooltip='true' width="120" />
+            <el-table-column prop="shape" label="褰㈢姸" width="65" />
+            <el-table-column prop="longSide" label="闀胯竟" width="65" />
+            <el-table-column prop="shortSide" label="鐭竟" width="65" />
+            <el-table-column prop="total" label="鎬绘暟閲�" width="75" />
+            <el-table-column prop="totalThickness" label="鎬诲帤搴�" width="75" />
+          </el-table><!-- <h1>{{msg}}</h1> -->
+        </el-aside>
+
+        <el-main width="12%" style="">
+          <span>鏈垎鏁伴噺:45</span><br>
+          <span>鏈垎閲嶉噺:333</span><br>
+          <span>閫変腑鏁伴噺:</span><br>
+          <el-button type="primary"> 鈫� </el-button>
+          <br>
+          <br>
+          <el-button type="primary">  鈫� </el-button>
+          <br>
+          <br>
+          <el-button type="primary">寤虹珛娴佺▼鍗�</el-button>
+        </el-main>
+
+        <el-aside width="44%" style="">
+          <el-table :data="tableData2" border style="width: 100%" height="100%">
+            <el-table-column prop="orderSequence" label="璁㈠簭" width="60" />
+            <el-table-column prop="floorNumber" label="妤煎眰缂栧彿" :show-overflow-tooltip='true' width="100" />
+            <el-table-column prop="shape" label="褰㈢姸" width="65" />
+            <el-table-column prop="longSide" label="闀胯竟" width="60" />
+            <el-table-column prop="shortSide" label="鐭竟" width="60" />
+            <el-table-column prop="undividedQuantity" label="寰呭垎鏁伴噺" width="85" />
+            <el-table-column prop="undividedArea" label="寰呭垎闈㈢Н" width="85" />
+            <el-table-column prop="totalThickness" label="鎬诲帤搴�" width="75" />
+            <el-table-column prop="glassThickness" label="鐜荤拑鍘氬害" width="85" />
+            <el-table-column prop="undividedWeight" label="寰呭垎閲嶉噺" width="85" />
+
+          </el-table><!-- <h1>{{msg}}</h1> -->
+        </el-aside>
+      </el-container>
+    </div>
+  </div>
+</template>
+
+<style scoped>
+.common-layout{
+  height: 100%;
+}
+
+.el-aside{
+  height: 100%;
+}
+
+.el-main{
+  height: 100%;
+  text-align: center;
+}
+
+
+
+</style>
\ No newline at end of file
diff --git a/north-glass-erp/northglass-erp/src/views/pp/processCard/PrintFlowCard.vue b/north-glass-erp/northglass-erp/src/views/pp/processCard/PrintFlowCard.vue
new file mode 100644
index 0000000..42fb41d
--- /dev/null
+++ b/north-glass-erp/northglass-erp/src/views/pp/processCard/PrintFlowCard.vue
@@ -0,0 +1,170 @@
+<script setup>
+import {ArrowLeftBold} from "@element-plus/icons-vue";
+import {useRouter} from "vue-router";
+import {reactive} from "vue";
+const router = useRouter()
+let flag = $ref(true)
+function intoCreateProduct(){
+  if(flag){
+    router.push('/main/processCard/SelectPrintFlowCard')
+  }else {
+    router.push('/main/processCard/SelectPrintFlowCard')
+  }
+  flag=!flag
+}
+function openPrint() {
+  this.$router.push('/page');
+}
+const form = reactive({
+  name: '',
+  region: '',
+  date1: '',
+  date2: '',
+  delivery: false,
+  type: [],
+  resource: '',
+  desc: '',
+})
+const tableData = [
+  {
+    salesOrderNo: 'NG231201',
+    productionOrderNo:'NG231201A',
+    processCard: 'NG231201A01',
+    customerName:'瑗垮畨楂樼骞曞闂ㄧ獥鏈夐檺鍏徃',
+    entryName:'閾堕殕骞垮満',
+    sliceMarking:'(澶�)',
+    marking:'1',
+    pieces:'16',
+    area:'24.14',
+    productName: '10mm瓒呯櫧UD60骞抽挗(澶�)+12Ar(缁�)+10mm瓒呯櫧骞抽挗(鍐�)',
+    singlePieceName: '10mm瓒呯櫧UD60骞抽挗(澶�)',
+    floorNumber: '16-BSGB05',
+    divider: '鏅舰',
+    splittingTime: '2023-01-11',
+    notes: '',
+  },
+  {
+    salesOrderNo: 'NG231201',
+    productionOrderNo:'NG231201A',
+    processCard: 'NG231201A01',
+    customerName:'瑗垮畨楂樼骞曞闂ㄧ獥鏈夐檺鍏徃',
+    entryName:'閾堕殕骞垮満',
+    sliceMarking:'(鍐�)',
+    marking:'2',
+    pieces:'16',
+    area:'24.14',
+    productName: '10mm瓒呯櫧UD60骞抽挗(澶�)+12Ar(缁�)+10mm瓒呯櫧骞抽挗(鍐�)',
+    singlePieceName: '10mm瓒呯櫧骞抽挗(鍐�)',
+    floorNumber: '16-BSGB05',
+    divider: '鏅舰',
+    splittingTime: '2023-01-11',
+    notes: '',
+  },
+  {
+    salesOrderNo: 'NG231201',
+    productionOrderNo:'NG231201A',
+    processCard: 'NG231201A02',
+    customerName:'瑗垮畨楂樼骞曞闂ㄧ獥鏈夐檺鍏徃',
+    entryName:'閾堕殕骞垮満',
+    sliceMarking:'(澶�)',
+    marking:'1',
+    pieces:'6',
+    area:'24.14',
+    productName: '10mm瓒呯櫧UD60骞抽挗(澶�)+12Ar(缁�)+10mm瓒呯櫧骞抽挗(鍐�)',
+    singlePieceName: '10mm瓒呯櫧UD60骞抽挗(澶�)',
+    floorNumber: '16-BSGB05',
+    divider: '鏅舰',
+    splittingTime: '2023-01-11',
+    notes: '',
+  },
+  {
+    salesOrderNo: 'NG231201',
+    productionOrderNo:'NG231201A',
+    processCard: 'NG231201A02',
+    customerName:'瑗垮畨楂樼骞曞闂ㄧ獥鏈夐檺鍏徃',
+    entryName:'閾堕殕骞垮満',
+    sliceMarking:'(鍐�)',
+    marking:'2',
+    pieces:'6',
+    area:'24.14',
+      productName: '10mm瓒呯櫧UD60骞抽挗(澶�)+12Ar(缁�)+10mm瓒呯櫧骞抽挗(鍐�)',
+    singlePieceName: '10mm瓒呯櫧骞抽挗(鍐�)',
+    floorNumber: '16-BSGB05',
+    divider: '鏅舰',
+    splittingTime: '2023-01-11',
+    notes: '',
+  },
+]
+</script>
+
+<template>
+  <div>
+    <div class="header">
+
+<!--      <el-button-->
+<!--          style="float: left"-->
+<!--          @click="intoCreateProduct"-->
+<!--          id="searchButton1"-->
+<!--          type="primary"-->
+<!--          :icon="ArrowLeftBold"-->
+<!--          round >-->
+<!--        {{flag?'杩斿洖':'杩斿洖'}}-->
+<!--      </el-button>-->
+      <router-link to="/main/processCard/PrintProcess" target="_blank">鎵撳紑鏂版爣绛�</router-link>
+      <el-button type="primary">鎵撳嵃娴佺▼鍗�</el-button>
+      <el-button type="primary">鎵撳嵃鏍囩</el-button>
+      &nbsp;&nbsp;
+      <select class="stnw"  style="width: 100px" >
+        <option label="瀹ゅ唴闈�" value="option1"></option>
+        <option label="瀹ゅ闈�" value="option2"></option>
+      </select>
+      <select class="stnw"  style="width: 100px" >
+        <option label="鎴愬搧鏍囩" value="option1"></option>
+        <option label="鍗曠墖鏍囩" value="option2"></option>
+      </select>
+    </div>
+    <el-table :data="tableData" border style="width: 100%" height="100%">
+      <el-table-column sortable prop="salesOrderNo" label="閿�鍞崟鍙�" width="120" />
+      <el-table-column sortable prop="productionOrderNo" label="鐢熶骇璁㈠崟鍙�" width="120" />
+      <el-table-column sortable prop="processCard" label="娴佺▼鍗″彿" width="120" />
+      <el-table-column prop="customerName" label="瀹㈡埛鍚嶇О" width="120" :show-overflow-tooltip='true'/>
+      <el-table-column prop="entryName" label="椤圭洰鍚嶇О" width="120" :show-overflow-tooltip='true'/>
+      <el-table-column prop="sliceMarking" label="鐗囨爣璁�" :show-overflow-tooltip='true' width="70" />
+      <el-table-column prop="marking" label="鏍囪" width="55" />
+      <el-table-column prop="pieces" label="鐗囨暟" width="65" />
+      <el-table-column prop="area" label="闈㈢Н" width="65" />
+      <el-table-column prop="productName" label="浜у搧鍚嶇О" width="120" :show-overflow-tooltip='true'/>
+      <el-table-column prop="singlePieceName" label="鍗曠墖鍚嶇О" width="120" :show-overflow-tooltip='true'/>
+      <el-table-column prop="floorNumber" label="妤煎眰缂栧彿" width="120" />
+      <el-table-column prop="divider" label="鍒嗘灦鍛�" width="75" />
+      <el-table-column prop="splittingTime" label="鍒嗘灦鏃堕棿" width="120" />
+      <el-table-column prop="notes" label="澶囨敞" :show-overflow-tooltip='true' width="350" />
+    </el-table><!-- <h1>{{msg}}</h1> -->
+  </div>
+</template>
+
+<style scoped>
+.common-layout{
+  height: 100%;
+}
+
+.el-aside{
+  height: 100%;
+}
+
+.el-main{
+  height: 100%;
+  text-align: center;
+}
+.stnw{
+  height: 33px;
+  width: 80px;
+  background-color: #409eff;
+  color: white;
+  border: none;
+  border-radius: 5px;
+}
+
+
+
+</style>
\ No newline at end of file
diff --git a/north-glass-erp/northglass-erp/src/views/pp/processCard/PrintProcess.vue b/north-glass-erp/northglass-erp/src/views/pp/processCard/PrintProcess.vue
new file mode 100644
index 0000000..a52f279
--- /dev/null
+++ b/north-glass-erp/northglass-erp/src/views/pp/processCard/PrintProcess.vue
@@ -0,0 +1,954 @@
+<script setup>
+
+</script>
+
+<template>
+  <div class="shu" style="height:0px;"></div>
+  <div id="big" class="big">
+    <div id="content">
+      <table id="tab" border="1">
+        <thead>
+        <tr>
+          <td colspan="22">
+            <div class="bj">1</div>
+            <h1>娲涢槼鍖楁柟鐜荤拑鎶�鏈偂浠芥湁闄愬叕鍙�</h1>
+            <h1>鐢熶骇娴佺▼鍗�</h1>
+            <div id="top">
+              &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span>鍖呰鏂瑰紡锛氶搧鏋�</span><span
+                style="float: right;position: relative;right: 5px;">娴佺▼鍗″彿锛�<label class="liuchengka"
+                                                                                    for="">NG23120401A01</label>/1鍏�2鏋�</span></div>
+          </td>
+        </tr>
+        <tr style="height:25px;">
+          <td style="min-width:70px;">瀹㈡埛鍚嶇О锛�</td>
+          <td style="min-width:200px;">閽㈠寲璁惧浜嬩笟閮�</td>
+          <td style="min-width:200px;" colspan="2">椤圭洰鍚嶇О锛氶挗鍖栬澶囦簨涓氶儴(23-12-1-01)</td>
+          <td style="min-width:75px;">宸ヨ壓娴佺▼锛�</td>
+          <td style="min-width:550px;" colspan="17">鍒囧壊-&gt;纾ㄨ竟-&gt;鎵撳瓟-&gt;閽㈠寲-&gt;鍖呰</td>
+        </tr>
+        <tr style="height:25px;">
+          <td>纾�&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;杈癸細</td>
+          <td>绮炬姏</td>
+          <td colspan="2" style="word-wrap: break-word;">鍗曠墖鍚嶇О:<span class="dpmc">5mm娆ф床鐏板钩閽�</span></td>
+          <td>鎴愬搧鍚嶇О锛�</td>
+          <td class="chengpinmingcheng" colspan="17" style="word-wrap: break-word;">5mm娆ф床鐏板钩閽�</td>
+        </tr>
+        <tr>
+          <td colspan="22">
+            <table border="1" style="border-collapse: collapse;" frame="below">
+              <tbody>
+              <tr>
+                <td rowspan="2" style="min-width:70px;">搴忓彿</td>
+                <td rowspan="2" style="min-width:200px;">缂栧彿</td>
+                <td rowspan="2" style="min-width:100px;">瀹斤紙寮ч暱锛�*楂�</td>
+                <td rowspan="2" style="min-width:49px;">鏁伴噺</td>
+                <td rowspan="2" style="min-width:49px;">闈㈢Н</td>
+                <td rowspan="2" style="min-width:49px;">鍛ㄩ暱</td>
+                <td rowspan="2" style="min-width:73px;">鍗婂緞</td>
+                <td rowspan="2" style="min-width:73px;">澶囨敞</td>
+                <td style="min-width:59px;" colspan="2">鍒囧壊</td>
+                <td style="min-width:59px;" colspan="2">纾ㄨ竟</td>
+                <td style="min-width:59px;" colspan="2">鎵撳瓟</td>
+                <td style="min-width:59px;" colspan="2">閽㈠寲</td>
+                <td style="min-width:59px;" colspan="2">鍖呰</td>
+                <td style="min-width:59px;" colspan="2"></td>
+                <td style="min-width:59px;" colspan="2"></td>
+                <td style="min-width:59px;" colspan="2"></td>
+              </tr>
+              <tr>
+                <td>姝e搧</td>
+                <td>娆″搧</td>
+                <td>姝e搧</td>
+                <td>娆″搧</td>
+                <td>姝e搧</td>
+                <td>娆″搧</td>
+                <td>姝e搧</td>
+                <td>娆″搧</td>
+                <td>姝e搧</td>
+                <td>娆″搧</td>
+                <td>姝e搧</td>
+                <td>娆″搧</td>
+                <td>姝e搧</td>
+                <td>娆″搧</td>
+                <td>姝e搧</td>
+                <td>娆″搧</td>
+              </tr>
+              </tbody>
+            </table>
+          </td>
+        </tr>
+        </thead>
+        <tbody>
+        <tr>
+          <td colspan="22">
+            <table class="tab" border="1" frame="below">
+              <tbody>
+              <tr class="tr">
+                <td style="min-width:70px;height:35.5px;" class="tab_td1">2</td>
+                <td style="min-width:200px;height:35.5px;" class="tab_td2">01-1瑙嗙獥鐜荤拑ACB50.10.02-003</td>
+                <td style="min-width:100px;height:35.5px;" class="kg"><span class="kuan">1698</span>*339</td>
+                <td style="min-width:49px;height:35.5px;" class="sl">2</td>
+                <td style="min-width:49px;height:35.5px;" class="mj">1.15</td>
+                <td style="min-width:49px;height:35.5px;">8.15</td>
+                <td style="min-width:73px;height:35.5px;" class="tab_td3 banjin"></td>
+                <td style="min-width:73px;height:35.5px;" class="tab_td3">瑙佸浘A,</td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td class="xh" style="display:none;">1</td>
+              </tr>
+              <tr class="tr">
+                <td style="min-width:70px;height:35.5px;" class="tab_td1">1</td>
+                <td style="min-width:200px;height:35.5px;" class="tab_td2">01-1瑙嗙獥鐜荤拑ACB50.10.01-003</td>
+                <td style="min-width:100px;height:35.5px;" class="kg"><span class="kuan">1428</span>*339</td>
+                <td style="min-width:49px;height:35.5px;" class="sl">3</td>
+                <td style="min-width:49px;height:35.5px;" class="mj">1.45</td>
+                <td style="min-width:49px;height:35.5px;">10.6</td>
+                <td style="min-width:73px;height:35.5px;" class="tab_td3 banjin"></td>
+                <td style="min-width:73px;height:35.5px;" class="tab_td3">瑙佸浘A,</td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td class="xh" style="display:none;">1</td>
+              </tr>
+              <tr class="tr">
+                <td style="min-width:70px;height:35.5px;" class="tab_td1">3</td>
+                <td style="min-width:200px;height:35.5px;" class="tab_td2">01-2瑙嗙獥鐜荤拑ACB50.10.01-003</td>
+                <td style="min-width:100px;height:35.5px;" class="kg"><span class="kuan">1428</span>*339</td>
+                <td style="min-width:49px;height:35.5px;" class="sl">3</td>
+                <td style="min-width:49px;height:35.5px;" class="mj">1.45</td>
+                <td style="min-width:49px;height:35.5px;">10.6</td>
+                <td style="min-width:73px;height:35.5px;" class="tab_td3 banjin"></td>
+                <td style="min-width:73px;height:35.5px;" class="tab_td3">瑙佸浘A,</td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td class="xh" style="display:none;">1</td>
+              </tr>
+              <tr class="tr">
+                <td style="min-width:70px;height:35.5px;" class="tab_td1">5</td>
+                <td style="min-width:200px;height:35.5px;" class="tab_td2">01-3瑙嗙獥鐜荤拑ACB50.10.01-003</td>
+                <td style="min-width:100px;height:35.5px;" class="kg"><span class="kuan">1428</span>*339</td>
+                <td style="min-width:49px;height:35.5px;" class="sl">3</td>
+                <td style="min-width:49px;height:35.5px;" class="mj">1.45</td>
+                <td style="min-width:49px;height:35.5px;">10.6</td>
+                <td style="min-width:73px;height:35.5px;" class="tab_td3 banjin"></td>
+                <td style="min-width:73px;height:35.5px;" class="tab_td3">瑙佸浘A,</td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td class="xh" style="display:none;">1</td>
+              </tr>
+              <tr class="tr">
+                <td style="min-width:70px;height:35.5px;" class="tab_td1">4</td>
+                <td style="min-width:200px;height:35.5px;" class="tab_td2">01-2瑙嗙獥鐜荤拑ACB50.10.03-003</td>
+                <td style="min-width:100px;height:35.5px;" class="kg"><span class="kuan">1338</span>*339</td>
+                <td style="min-width:49px;height:35.5px;" class="sl">2</td>
+                <td style="min-width:49px;height:35.5px;" class="mj">0.91</td>
+                <td style="min-width:49px;height:35.5px;">6.71</td>
+                <td style="min-width:73px;height:35.5px;" class="tab_td3 banjin"></td>
+                <td style="min-width:73px;height:35.5px;" class="tab_td3">瑙佸浘A,</td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td class="xh" style="display:none;">1</td>
+              </tr>
+              <tr class="tr">
+                <td style="min-width:70px;height:35.5px;" class="tab_td1">6</td>
+                <td style="min-width:200px;height:35.5px;" class="tab_td2">01-3瑙嗙獥鐜荤拑ACB50.10.03-003</td>
+                <td style="min-width:100px;height:35.5px;" class="kg"><span class="kuan">1338</span>*339</td>
+                <td style="min-width:49px;height:35.5px;" class="sl">2</td>
+                <td style="min-width:49px;height:35.5px;" class="mj">0.91</td>
+                <td style="min-width:49px;height:35.5px;">6.71</td>
+                <td style="min-width:73px;height:35.5px;" class="tab_td3 banjin"></td>
+                <td style="min-width:73px;height:35.5px;" class="tab_td3">瑙佸浘A,</td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td class="xh" style="display:none;">1</td>
+              </tr>
+              </tbody>
+            </table>
+          </td>
+        </tr>
+        </tbody>
+        <tfoot>
+        <tr style="height: 20px;line-height: 20px;">
+          <td colspan="22">鏁伴噺锛�<label class="zsl" for="">15鐗�</label>&nbsp;&nbsp;&nbsp;閲嶉噺锛�<label class="zzl"
+                                                                                                    for="">91.50kg</label>&nbsp;&nbsp;&nbsp;闈㈢Н锛�<label class="zmj" for="">7.32m虏</label></td>
+        </tr>
+        <tr>
+          <td width="50%" style="word-wrap: break-word;;" colspan="5" rowspan="7"><textarea
+              style="width: 100%; height: 90%; overflow: hidden; border: 0px;font-size:12px;">1)鎸変紒鏍囥��
+2)鍚勫伐搴忥細鎴愬搧鐜荤拑璐寸紪鍙峰強灏哄鏍囩銆�
+3)纾ㄨ竟锛氭鍗曞锛岄珮灏哄鍏樊鍧囦负锛�0~-1锛夈��
+4)閽㈠寲锛氬寳鐜诲晢鏍囷紝浣嶇疆濡傚浘銆�
+
+</textarea></td>
+        </tr>
+        <tr>
+          <td width="70px" height="23px;">瀹屽伐绛惧悕</td>
+          <td width="56px;" height="23px;" colspan="2"></td>
+          <td width="56px;" height="23px;" colspan="2"></td>
+          <td width="56px;" height="23px;" colspan="2"></td>
+          <td width="56px;" height="23px;" colspan="2"></td>
+          <td width="56px;" height="23px;" colspan="2"></td>
+          <td width="56px;" height="23px;" colspan="2"></td>
+          <td width="56px;" height="23px;" colspan="2"></td>
+          <td width="56px;" height="23px;" colspan="2"></td>
+        </tr>
+        <tr>
+          <td>鎺ユ敹绛惧悕</td>
+          <td colspan="2"></td>
+          <td colspan="2"></td>
+          <td colspan="2"></td>
+          <td colspan="2"></td>
+          <td colspan="2"></td>
+          <td colspan="2"></td>
+          <td colspan="2"></td>
+          <td colspan="2"></td>
+        </tr>
+        <tr>
+          <td>鐢熶骇鏃ユ湡</td>
+          <td colspan="2"></td>
+          <td colspan="2"></td>
+          <td colspan="2"></td>
+          <td colspan="2"></td>
+          <td colspan="2"></td>
+          <td colspan="2"></td>
+          <td colspan="2"></td>
+          <td colspan="2"></td>
+        </tr>
+        <tr>
+          <td>璐ㄦ绛惧悕</td>
+          <td colspan="2"></td>
+          <td colspan="2"></td>
+          <td colspan="2"></td>
+          <td colspan="2"></td>
+          <td colspan="2"></td>
+          <td colspan="2"></td>
+          <td colspan="2"></td>
+          <td colspan="2"></td>
+        </tr>
+        <tr>
+          <td>鏋跺瓙缂栧彿</td>
+          <td colspan="2"></td>
+          <td colspan="2"></td>
+          <td colspan="2"></td>
+          <td colspan="2"></td>
+          <td colspan="2"></td>
+          <td colspan="2"></td>
+          <td colspan="2"></td>
+          <td colspan="2"></td>
+        </tr>
+        <tr height="65px">
+          <td colspan="22"><span id="qrcode1" class="qr" title="NG23120401A01/1"><canvas width="60" height="60"
+                                                                                         style="display: none;"></canvas><img alt="Scan me!"
+                                                                                                                              src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAAAAXNSR0IArs4c6QAAAulJREFUaEPtmuFywyAMg5P3f+jsmjU7cG1/AtLrErqfLSwIW5bsdF2WZVs6/rbtd9u6rtXu6PNj0fF9ttce53gG/W8FxuO0cwIubz67KXvbx9roc/X7MuJq9rSeeX/GEeHWzXb9ZQFbTlrutQKj9V5kVQ4Tp73vXyL8Bfy8bntbrbfrrScaqfVCDZLLYXXztICJby0VX+G7Us2junNKhC8PmNwKRSGiROa0IomzZ4nqiHrmU3XYGozoEJ61/AhguiX1tiPfm1VpdQ8VSgXDaV6aZOvfAN5IDJVrc7omcVu1rNWu9jxjnR6w2ntSR6PIFVX8qBBGSUnObK/SNsK3B2zbwxYdLV2Pp7NllJVotl62zQAl6+RuKQIUjXiUlKY15Ou7AB8prWph5lO9qpm5o955GHE10+s/Dk8HmNKD5JpSu4fDZFeJsx4l5Cp9G8DREI/4pVrJKHPKCk8emZqLlrOEU8vbAlaNB/nc1qL3iPAZ/W35fyKZq/zAdIB7ORzpMfGpvO1RbipDBusGuzn8Bfx8i3iZCFMzTemn7i+rP8lRa0MimRv1dentAKsS0WrcM4dGdjTKmpEWNmwPe6cK6sW19NKKvqrVH2daquMiDlMj4B2YOKmanWoWTkO82wEm43FWsfIiTO1dL4ezbEPjcTvAdsRDsysyFtQ3e7ev0qaHsy/WcjrANKZVU5pckxd5VYdJd2mwWFXp6QCTLJG+Eq+yEQ9VYdXEUKaU36PxuB1gtXmwwMl6Eq+UEU9v9c6s6PALcfK5WTGjlH0rYFU/Rznr9cMRz4mbkT/PLnL4x6Vqu5hZy48CjjSPHFbrjMtrD6M6oeowucT9maTDKhB1XWUCzK/pLwGYtDS69cxTUzapLwW8Zw9HeDrAxPmokpY6TNJGHkCdjLyFw0rhoDSnIkUpLRmPXh0eSWnKDlXyIm8gcTgCEGnlZQET0F4eZfyi1KXUVw1LefbTvLSaftXDQYe/gIM0JA6X234ACjSUFgdqRbsAAAAASUVORK5CYII="
+                                                                                                                              style="display: block;"><span class="ma">NG23120401A01/1</span></span></td>
+        </tr>
+        </tfoot>
+      </table>
+    </div>
+  </div>
+  <div class="shu" style="height:0px;"></div>
+  <div id="big" class="big">
+    <div id="content">
+      <table id="tab" border="1">
+        <thead>
+        <tr>
+          <td colspan="22">
+            <div class="bj">1</div>
+            <h1>娲涢槼鍖楁柟鐜荤拑鎶�鏈偂浠芥湁闄愬叕鍙�</h1>
+            <h1>鐢熶骇娴佺▼鍗�</h1>
+            <div id="top">
+              &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span>鍖呰鏂瑰紡锛氶搧鏋�</span><span
+                style="float: right;position: relative;right: 5px;">娴佺▼鍗″彿锛�<label class="liuchengka"
+                                                                                    for="">NG23120401B02</label>/1鍏�2鏋�</span></div>
+          </td>
+        </tr>
+        <tr style="height:25px;">
+          <td style="min-width:70px;">瀹㈡埛鍚嶇О锛�</td>
+          <td style="min-width:200px;">閽㈠寲璁惧浜嬩笟閮�</td>
+          <td style="min-width:200px;" colspan="2">椤圭洰鍚嶇О锛氶挗鍖栬澶囦簨涓氶儴(23-12-1-01)</td>
+          <td style="min-width:75px;">宸ヨ壓娴佺▼锛�</td>
+          <td style="min-width:550px;" colspan="17">鍒囧壊-&gt;纾ㄨ竟-&gt;閽㈠寲-&gt;鍖呰</td>
+        </tr>
+        <tr style="height:25px;">
+          <td>纾�&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;杈癸細</td>
+          <td>绮炬姏</td>
+          <td colspan="2" style="word-wrap: break-word;">鍗曠墖鍚嶇О:<span class="dpmc">5mm娆ф床鐏板钩閽�</span></td>
+          <td>鎴愬搧鍚嶇О锛�</td>
+          <td class="chengpinmingcheng" colspan="17" style="word-wrap: break-word;">5mm娆ф床鐏板钩閽�</td>
+        </tr>
+        <tr>
+          <td colspan="22">
+            <table border="1" style="border-collapse: collapse;" frame="below">
+              <tbody>
+              <tr>
+                <td rowspan="2" style="min-width:70px;">搴忓彿</td>
+                <td rowspan="2" style="min-width:200px;">缂栧彿</td>
+                <td rowspan="2" style="min-width:100px;">瀹斤紙寮ч暱锛�*楂�</td>
+                <td rowspan="2" style="min-width:49px;">鏁伴噺</td>
+                <td rowspan="2" style="min-width:49px;">闈㈢Н</td>
+                <td rowspan="2" style="min-width:49px;">鍛ㄩ暱</td>
+                <td rowspan="2" style="min-width:73px;">鍗婂緞</td>
+                <td rowspan="2" style="min-width:73px;">澶囨敞</td>
+                <td style="min-width:59px;" colspan="2">鍒囧壊</td>
+                <td style="min-width:59px;" colspan="2">纾ㄨ竟</td>
+                <td style="min-width:59px;" colspan="2">閽㈠寲</td>
+                <td style="min-width:59px;" colspan="2">鍖呰</td>
+                <td style="min-width:59px;" colspan="2"></td>
+                <td style="min-width:59px;" colspan="2"></td>
+                <td style="min-width:59px;" colspan="2"></td>
+                <td style="min-width:59px;" colspan="2"></td>
+              </tr>
+              <tr>
+                <td>姝e搧</td>
+                <td>娆″搧</td>
+                <td>姝e搧</td>
+                <td>娆″搧</td>
+                <td>姝e搧</td>
+                <td>娆″搧</td>
+                <td>姝e搧</td>
+                <td>娆″搧</td>
+                <td>姝e搧</td>
+                <td>娆″搧</td>
+                <td>姝e搧</td>
+                <td>娆″搧</td>
+                <td>姝e搧</td>
+                <td>娆″搧</td>
+                <td>姝e搧</td>
+                <td>娆″搧</td>
+              </tr>
+              </tbody>
+            </table>
+          </td>
+        </tr>
+        </thead>
+        <tbody>
+        <tr>
+          <td colspan="22">
+            <table class="tab" border="1" frame="below">
+              <tbody>
+              <tr class="tr">
+                <td style="min-width:70px;height:35.5px;" class="tab_td1">11</td>
+                <td style="min-width:200px;height:35.5px;" class="tab_td2">01-1閽㈠寲5</td>
+                <td style="min-width:100px;height:35.5px;" class="kg"><span class="kuan">1852</span>*143</td>
+                <td style="min-width:49px;height:35.5px;" class="sl">2</td>
+                <td style="min-width:49px;height:35.5px;" class="mj">0.53</td>
+                <td style="min-width:49px;height:35.5px;">7.98</td>
+                <td style="min-width:73px;height:35.5px;" class="tab_td3 banjin"></td>
+                <td style="min-width:73px;height:35.5px;" class="tab_td3">涓嶆墦鍟嗘爣,</td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td class="xh" style="display:none;">1</td>
+              </tr>
+              <tr class="tr">
+                <td style="min-width:70px;height:35.5px;" class="tab_td1">9</td>
+                <td style="min-width:200px;height:35.5px;" class="tab_td2">01-1閽㈠寲3</td>
+                <td style="min-width:100px;height:35.5px;" class="kg"><span class="kuan">1835</span>*143</td>
+                <td style="min-width:49px;height:35.5px;" class="sl">6</td>
+                <td style="min-width:49px;height:35.5px;" class="mj">1.57</td>
+                <td style="min-width:49px;height:35.5px;">23.74</td>
+                <td style="min-width:73px;height:35.5px;" class="tab_td3 banjin"></td>
+                <td style="min-width:73px;height:35.5px;" class="tab_td3">涓嶆墦鍟嗘爣,</td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td class="xh" style="display:none;">1</td>
+              </tr>
+              <tr class="tr">
+                <td style="min-width:70px;height:35.5px;" class="tab_td1">14</td>
+                <td style="min-width:200px;height:35.5px;" class="tab_td2">01-2閽㈠寲3</td>
+                <td style="min-width:100px;height:35.5px;" class="kg"><span class="kuan">1835</span>*143</td>
+                <td style="min-width:49px;height:35.5px;" class="sl">4</td>
+                <td style="min-width:49px;height:35.5px;" class="mj">1.05</td>
+                <td style="min-width:49px;height:35.5px;">15.82</td>
+                <td style="min-width:73px;height:35.5px;" class="tab_td3 banjin"></td>
+                <td style="min-width:73px;height:35.5px;" class="tab_td3">涓嶆墦鍟嗘爣,</td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td class="xh" style="display:none;">1</td>
+              </tr>
+              <tr class="tr">
+                <td style="min-width:70px;height:35.5px;" class="tab_td1">19</td>
+                <td style="min-width:200px;height:35.5px;" class="tab_td2">01-3閽㈠寲3</td>
+                <td style="min-width:100px;height:35.5px;" class="kg"><span class="kuan">1835</span>*143</td>
+                <td style="min-width:49px;height:35.5px;" class="sl">6</td>
+                <td style="min-width:49px;height:35.5px;" class="mj">1.57</td>
+                <td style="min-width:49px;height:35.5px;">23.74</td>
+                <td style="min-width:73px;height:35.5px;" class="tab_td3 banjin"></td>
+                <td style="min-width:73px;height:35.5px;" class="tab_td3">涓嶆墦鍟嗘爣,</td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td class="xh" style="display:none;">1</td>
+              </tr>
+              <tr class="tr">
+                <td style="min-width:70px;height:35.5px;" class="tab_td1">13</td>
+                <td style="min-width:200px;height:35.5px;" class="tab_td2">01-2閽㈠寲2</td>
+                <td style="min-width:100px;height:35.5px;" class="kg"><span class="kuan">1732</span>*143</td>
+                <td style="min-width:49px;height:35.5px;" class="sl">2</td>
+                <td style="min-width:49px;height:35.5px;" class="mj">0.5</td>
+                <td style="min-width:49px;height:35.5px;">7.5</td>
+                <td style="min-width:73px;height:35.5px;" class="tab_td3 banjin"></td>
+                <td style="min-width:73px;height:35.5px;" class="tab_td3">涓嶆墦鍟嗘爣,</td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td class="xh" style="display:none;">1</td>
+              </tr>
+              <tr class="tr">
+                <td style="min-width:70px;height:35.5px;" class="tab_td1">12</td>
+                <td style="min-width:200px;height:35.5px;" class="tab_td2">01-2閽㈠寲1</td>
+                <td style="min-width:100px;height:35.5px;" class="kg"><span class="kuan">1692</span>*143</td>
+                <td style="min-width:49px;height:35.5px;" class="sl">2</td>
+                <td style="min-width:49px;height:35.5px;" class="mj">0.48</td>
+                <td style="min-width:49px;height:35.5px;">7.34</td>
+                <td style="min-width:73px;height:35.5px;" class="tab_td3 banjin"></td>
+                <td style="min-width:73px;height:35.5px;" class="tab_td3">涓嶆墦鍟嗘爣,</td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td class="xh" style="display:none;">1</td>
+              </tr>
+              <tr class="tr">
+                <td style="min-width:70px;height:35.5px;" class="tab_td1">16</td>
+                <td style="min-width:200px;height:35.5px;" class="tab_td2">01-2閽㈠寲5</td>
+                <td style="min-width:100px;height:35.5px;" class="kg"><span class="kuan">1492</span>*143</td>
+                <td style="min-width:49px;height:35.5px;" class="sl">2</td>
+                <td style="min-width:49px;height:35.5px;" class="mj">0.43</td>
+                <td style="min-width:49px;height:35.5px;">6.54</td>
+                <td style="min-width:73px;height:35.5px;" class="tab_td3 banjin"></td>
+                <td style="min-width:73px;height:35.5px;" class="tab_td3">涓嶆墦鍟嗘爣,</td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td class="xh" style="display:none;">1</td>
+              </tr>
+              <tr class="tr">
+                <td style="min-width:70px;height:35.5px;" class="tab_td1">21</td>
+                <td style="min-width:200px;height:35.5px;" class="tab_td2">01-3閽㈠寲5</td>
+                <td style="min-width:100px;height:35.5px;" class="kg"><span class="kuan">1492</span>*143</td>
+                <td style="min-width:49px;height:35.5px;" class="sl">2</td>
+                <td style="min-width:49px;height:35.5px;" class="mj">0.43</td>
+                <td style="min-width:49px;height:35.5px;">6.54</td>
+                <td style="min-width:73px;height:35.5px;" class="tab_td3 banjin"></td>
+                <td style="min-width:73px;height:35.5px;" class="tab_td3">涓嶆墦鍟嗘爣,</td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td class="xh" style="display:none;">1</td>
+              </tr>
+              <tr class="tr">
+                <td style="min-width:70px;height:35.5px;" class="tab_td1">10</td>
+                <td style="min-width:200px;height:35.5px;" class="tab_td2">01-1閽㈠寲4</td>
+                <td style="min-width:100px;height:35.5px;" class="kg"><span class="kuan">1435</span>*143</td>
+                <td style="min-width:49px;height:35.5px;" class="sl">3</td>
+                <td style="min-width:49px;height:35.5px;" class="mj">0.62</td>
+                <td style="min-width:49px;height:35.5px;">9.47</td>
+                <td style="min-width:73px;height:35.5px;" class="tab_td3 banjin"></td>
+                <td style="min-width:73px;height:35.5px;" class="tab_td3">涓嶆墦鍟嗘爣,</td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td class="xh" style="display:none;">1</td>
+              </tr>
+              <tr class="tr">
+                <td style="min-width:70px;height:35.5px;" class="tab_td1">15</td>
+                <td style="min-width:200px;height:35.5px;" class="tab_td2">01-2閽㈠寲4</td>
+                <td style="min-width:100px;height:35.5px;" class="kg"><span class="kuan">1435</span>*143</td>
+                <td style="min-width:49px;height:35.5px;" class="sl">3</td>
+                <td style="min-width:49px;height:35.5px;" class="mj">0.62</td>
+                <td style="min-width:49px;height:35.5px;">9.47</td>
+                <td style="min-width:73px;height:35.5px;" class="tab_td3 banjin"></td>
+                <td style="min-width:73px;height:35.5px;" class="tab_td3">涓嶆墦鍟嗘爣,</td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td class="xh" style="display:none;">1</td>
+              </tr>
+              <tr class="tr">
+                <td style="min-width:70px;height:35.5px;" class="tab_td1">20</td>
+                <td style="min-width:200px;height:35.5px;" class="tab_td2">01-3閽㈠寲4</td>
+                <td style="min-width:100px;height:35.5px;" class="kg"><span class="kuan">1435</span>*143</td>
+                <td style="min-width:49px;height:35.5px;" class="sl">3</td>
+                <td style="min-width:49px;height:35.5px;" class="mj">0.62</td>
+                <td style="min-width:49px;height:35.5px;">9.47</td>
+                <td style="min-width:73px;height:35.5px;" class="tab_td3 banjin"></td>
+                <td style="min-width:73px;height:35.5px;" class="tab_td3">涓嶆墦鍟嗘爣,</td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td class="xh" style="display:none;">1</td>
+              </tr>
+              <tr class="tr">
+                <td style="min-width:70px;height:35.5px;" class="tab_td1">8</td>
+                <td style="min-width:200px;height:35.5px;" class="tab_td2">01-1閽㈠寲2</td>
+                <td style="min-width:100px;height:35.5px;" class="kg"><span class="kuan">1387</span>*143</td>
+                <td style="min-width:49px;height:35.5px;" class="sl">2</td>
+                <td style="min-width:49px;height:35.5px;" class="mj">0.4</td>
+                <td style="min-width:49px;height:35.5px;">6.12</td>
+                <td style="min-width:73px;height:35.5px;" class="tab_td3 banjin"></td>
+                <td style="min-width:73px;height:35.5px;" class="tab_td3">涓嶆墦鍟嗘爣,</td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td class="xh" style="display:none;">1</td>
+              </tr>
+              <tr class="tr">
+                <td style="min-width:70px;height:35.5px;" class="tab_td1">18</td>
+                <td style="min-width:200px;height:35.5px;" class="tab_td2">01-3閽㈠寲2</td>
+                <td style="min-width:100px;height:35.5px;" class="kg"><span class="kuan">1387</span>*143</td>
+                <td style="min-width:49px;height:35.5px;" class="sl">2</td>
+                <td style="min-width:49px;height:35.5px;" class="mj">0.4</td>
+                <td style="min-width:49px;height:35.5px;">6.12</td>
+                <td style="min-width:73px;height:35.5px;" class="tab_td3 banjin"></td>
+                <td style="min-width:73px;height:35.5px;" class="tab_td3">涓嶆墦鍟嗘爣,</td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td class="xh" style="display:none;">1</td>
+              </tr>
+              <tr class="tr">
+                <td style="min-width:70px;height:35.5px;" class="tab_td1">7</td>
+                <td style="min-width:200px;height:35.5px;" class="tab_td2">01-1閽㈠寲1</td>
+                <td style="min-width:100px;height:35.5px;" class="kg"><span class="kuan">1347</span>*143</td>
+                <td style="min-width:49px;height:35.5px;" class="sl">2</td>
+                <td style="min-width:49px;height:35.5px;" class="mj">0.39</td>
+                <td style="min-width:49px;height:35.5px;">5.96</td>
+                <td style="min-width:73px;height:35.5px;" class="tab_td3 banjin"></td>
+                <td style="min-width:73px;height:35.5px;" class="tab_td3">涓嶆墦鍟嗘爣,</td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td class="xh" style="display:none;">1</td>
+              </tr>
+              <tr class="tr">
+                <td style="min-width:70px;height:35.5px;" class="tab_td1">17</td>
+                <td style="min-width:200px;height:35.5px;" class="tab_td2">01-3閽㈠寲1</td>
+                <td style="min-width:100px;height:35.5px;" class="kg"><span class="kuan">1347</span>*143</td>
+                <td style="min-width:49px;height:35.5px;" class="sl">2</td>
+                <td style="min-width:49px;height:35.5px;" class="mj">0.39</td>
+                <td style="min-width:49px;height:35.5px;">5.96</td>
+                <td style="min-width:73px;height:35.5px;" class="tab_td3 banjin"></td>
+                <td style="min-width:73px;height:35.5px;" class="tab_td3">涓嶆墦鍟嗘爣,</td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td style="min-width:29px;height:35.5px;"></td>
+                <td class="xh" style="display:none;">1</td>
+              </tr>
+              </tbody>
+            </table>
+          </td>
+        </tr>
+        </tbody>
+        <tfoot>
+        <tr style="height: 20px;line-height: 20px;">
+          <td colspan="22">鏁伴噺锛�<label class="zsl" for="">43鐗�</label>&nbsp;&nbsp;&nbsp;閲嶉噺锛�<label class="zzl"
+                                                                                                    for="">125.00kg</label>&nbsp;&nbsp;&nbsp;闈㈢Н锛�<label class="zmj" for="">10.00m虏</label></td>
+        </tr>
+        <tr>
+          <td width="50%" style="word-wrap: break-word;;" colspan="5" rowspan="7">
+              <textarea style="width: 100%; height: 90%; overflow: hidden; border: 0px;font-size:12px;">1)鎸変紒鏍囥��
+2)鍚勫伐搴忥細鎴愬搧鐜荤拑璐寸紪鍙峰強灏哄鏍囩銆�
+3)纾ㄨ竟锛氭鍗曞锛岄珮灏哄鍏樊鍧囦负锛�0~-1锛夈��
+4)閽㈠寲锛氬寳鐜诲晢鏍囷紝浣嶇疆濡傚浘銆�
+</textarea>
+          </td>
+        </tr>
+        <tr>
+          <td width="70px" height="23px;">瀹屽伐绛惧悕</td>
+          <td width="56px;" height="23px;" colspan="2"></td>
+          <td width="56px;" height="23px;" colspan="2"></td>
+          <td width="56px;" height="23px;" colspan="2"></td>
+          <td width="56px;" height="23px;" colspan="2"></td>
+          <td width="56px;" height="23px;" colspan="2"></td>
+          <td width="56px;" height="23px;" colspan="2"></td>
+          <td width="56px;" height="23px;" colspan="2"></td>
+          <td width="56px;" height="23px;" colspan="2"></td>
+        </tr>
+        <tr>
+          <td>鎺ユ敹绛惧悕</td>
+          <td colspan="2"></td>
+          <td colspan="2"></td>
+          <td colspan="2"></td>
+          <td colspan="2"></td>
+          <td colspan="2"></td>
+          <td colspan="2"></td>
+          <td colspan="2"></td>
+          <td colspan="2"></td>
+        </tr>
+        <tr>
+          <td>鐢熶骇鏃ユ湡</td>
+          <td colspan="2"></td>
+          <td colspan="2"></td>
+          <td colspan="2"></td>
+          <td colspan="2"></td>
+          <td colspan="2"></td>
+          <td colspan="2"></td>
+          <td colspan="2"></td>
+          <td colspan="2"></td>
+        </tr>
+        <tr>
+          <td>璐ㄦ绛惧悕</td>
+          <td colspan="2"></td>
+          <td colspan="2"></td>
+          <td colspan="2"></td>
+          <td colspan="2"></td>
+          <td colspan="2"></td>
+          <td colspan="2"></td>
+          <td colspan="2"></td>
+          <td colspan="2"></td>
+        </tr>
+        <tr>
+          <td>鏋跺瓙缂栧彿</td>
+          <td colspan="2"></td>
+          <td colspan="2"></td>
+          <td colspan="2"></td>
+          <td colspan="2"></td>
+          <td colspan="2"></td>
+          <td colspan="2"></td>
+          <td colspan="2"></td>
+          <td colspan="2"></td>
+        </tr>
+        <tr height="65px">
+          <td colspan="22"><span id="qrcode2" class="qr" title="NG23120401B02/1"><canvas width="60" height="60"
+                                                                                         style="display: none;"></canvas><img alt="Scan me!"
+                                                                                                                              src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAAAAXNSR0IArs4c6QAAAxBJREFUaEPtmuFyhDAIhPX9H9rO2dpJOOBboh2rXn9W47GBXZboPE3TMg38Lcv3snmeB1b7S7Zn2qvbbxzxm69onwk42l3a7Wp6vYqgzG6/YTNcjXmtyC3D1cXq/dGGtf8/FXDESdpdy7MNkMI/CzhaE8WgxuxmWF1MQd4WsLpBloetwlNJ0+ZWYnjjsLqYWkR0vQ0+okFUHZWqed3rxbAbsA3CilSUHU+0aAM+gMH8SBmmvkpZIIVtn2/pU6WJ2hrb3zm8D18GMGU24iYBzPow9VW6Xo2568PVxRQMXfdUlNZQySsY5kUlgvK05h7FYamKfmSIH8BqZqi8qDy9giHH5bk1T/Wz3v+W4dsDjg4AyBqq0xE5MUW8qlyP+nuq0o8FbHe3mtlM3OlZau+veOzwTIsEhEY2pYudAtj2YRItAlpZTyee1U5gVdx7flmlLw/YHuKNTjBUwjRleevVkqee3x06PB5wpMrkclQ1p0pQrmd9Npu3uz5MqnwbwJtKE8focC/qhVQxntOK1JZUO0pKd+LxAfxzMKZkps3O5TJMokMlP7JBZFJIN9TjpU7IohMPehipqcL5UwFXpZ4O2BXVjwzD6GYOiVa1jCx31fWeOqtnV6oH92ILvbTaGkbn5tUEiJ9LULWUrGU0Ld0WsPoFQJXjtGFthqtcVivD0wL5VcttAJPTOmpE88RMHUVVjiqx/ooW3ay2Ieqt3WxqRKsqgKpX6Lw0zcMRFyvtJxsQWp5RJqk/04atuvE4wHtfphEPFQWm0iQfT4LqjodULtH1ywHe+62lOmVVVJrsKlVENrnt/rj0soCrxl3hZuamVOX2VDzLIA0lstOyZXYbwDS4E39UEfOyT5uqCmv6Qny0D6smIasE1d1Vh4U/BVwVrYyT1epSK6L0qkUZ81oQ5KUvD1jNCnlvUnRlo+hkZJeXprcAipEfpQO9spWMx2gfHnVFlT5MAIlGKYdJ+klZifMtBahKIhqMtsaupAmovU4VQUFlnFVNjarSnagePTxQEN6JB/X00c31knj48PDfAX8Bd8KdHJuN7HEAAAAASUVORK5CYII="
+                                                                                                                              style="display: block;"><span class="ma">NG23120401B02/1</span></span></td>
+        </tr>
+        </tfoot>
+      </table>
+    </div>
+  </div>
+</template>
+
+<style scoped>
+.JColResizer {
+  table-layout: fixed;
+}
+
+.JColResizer>tbody>tr>td,
+.JColResizer>tbody>tr>th {
+  overflow: hidden;
+  padding-left: 0 !important;
+  padding-right: 0 !important;
+}
+
+.JCLRgrips {
+  height: 0px;
+  position: relative;
+}
+
+.JCLRgrip {
+  margin-left: -5px;
+  position: absolute;
+  z-index: 5;
+}
+
+.JCLRgrip .JColResizer {
+  position: absolute;
+  background-color: red;
+  filter: alpha(opacity=1);
+  opacity: 0;
+  width: 10px;
+  height: 100%;
+  cursor: e-resize;
+  top: 0px
+}
+
+.JCLRLastGrip {
+  position: absolute;
+  width: 1px;
+}
+
+.JCLRgripDrag {
+  border-left: 1px dotted black;
+}
+
+.JCLRFlex {
+  width: auto !important;
+}
+
+.JCLRgrip.JCLRdisabledGrip .JColResizer {
+  cursor: default;
+  display: none;
+}
+</style>
\ No newline at end of file
diff --git a/north-glass-erp/northglass-erp/src/views/pp/processCard/ProcessCard.vue b/north-glass-erp/northglass-erp/src/views/pp/processCard/ProcessCard.vue
new file mode 100644
index 0000000..bbf5065
--- /dev/null
+++ b/north-glass-erp/northglass-erp/src/views/pp/processCard/ProcessCard.vue
@@ -0,0 +1,85 @@
+<script setup>
+import {ref} from "vue";
+import {ArrowLeftBold, ArrowRight} from "@element-plus/icons-vue";
+import request from "@/utils/request";
+import deepClone from "@/utils/deepClone";
+import {ElMessage} from "element-plus";
+import {useRouter} from "vue-router";
+import  GlassType from '@/components/basic/product/GlassType.vue'
+
+
+
+const router = useRouter()
+let flag = $ref(true)
+let flag1 = $ref(true)
+let flag2 = $ref(true)
+// let flag2=router.currentRoute.value.path!='/main/processCard/SelectProcessCard'?false:true
+function intoSplitFrame(){
+  if(flag1){
+    router.push('/main/processCard/SelectAddProcess')
+  }else {
+    router.push('/main/processCard/SelectProcessCard')
+  }
+  flag1=!flag1
+}
+function intoPrint(){
+  if(flag){
+    router.push('/main/processCard/SelectPrintFlowCard')
+  }else {
+    router.push('/main/processCard/SelectProcessCard')
+  }
+  flag=!flag
+}
+
+function intoRe(){
+  console.log(flag2)
+  if(flag2){
+    router.push('/main/processCard/ReShelving')
+  }else {
+    router.push('/main/processCard/SelectProcessCard')
+  }
+  flag2=!flag2
+}
+</script>
+
+<template>
+  <div id="main">
+    <div id="div-title">
+      <el-breadcrumb :separator-icon="ArrowRight">
+        <el-breadcrumb-item :to="{ path: '/main/processCard/SelectProcessCard' }">娴佺▼鍗$鐞�</el-breadcrumb-item>
+        <el-breadcrumb-item :to="{ path: '/main/processCard/SelectAddProcess' }">鍒嗘灦</el-breadcrumb-item>
+        <el-breadcrumb-item :to="{ path: '/main/processCard/ReShelving' }">鎯呭喌鍙樻洿</el-breadcrumb-item>
+        <el-breadcrumb-item :to="{ path: '/main/processCard/SelectPrintFlowCard' }">鎵撳嵃</el-breadcrumb-item>
+        <el-breadcrumb-item :to="{ path: '/main/processCard/SelectPrintFlowCard' }" style="display: none">鎵撳嵃</el-breadcrumb-item>
+      </el-breadcrumb>
+    </div>
+
+    <div id="main-body">
+      <router-view  />
+    </div>
+  </div>
+</template>
+
+<style scoped>
+#main{
+  width: 100%;
+  height: 100%;
+}
+#div-title{
+  height: 5%;
+  width: 100%;
+}
+#searchButton{
+  margin-top: -5px;
+  margin-left: 1rem;
+}
+#searchButton1{
+//margin-left: 10rem;
+}
+/*main-body鏍峰紡*/
+#main-body{
+  width: 99%;
+  height: 92%;
+  margin-top: 1%;
+}
+</style>
\ No newline at end of file
diff --git a/north-glass-erp/northglass-erp/src/views/pp/processCard/ProcessCardDetails.vue b/north-glass-erp/northglass-erp/src/views/pp/processCard/ProcessCardDetails.vue
new file mode 100644
index 0000000..ba5cb98
--- /dev/null
+++ b/north-glass-erp/northglass-erp/src/views/pp/processCard/ProcessCardDetails.vue
@@ -0,0 +1,146 @@
+<script lang="ts" setup>
+import {ref} from "vue";
+import { reactive } from 'vue'
+import {ArrowLeftBold} from "@element-plus/icons-vue";
+import {useRouter} from "vue-router";
+const router = useRouter()
+let flag = $ref(true)
+function intoCreateProduct(){
+  if(flag){
+    router.push('/main/processCard/SelectProcessCard')
+  }else {
+    router.push('/main/processCard/SelectProcessCard')
+  }
+  flag=!flag
+}
+// do not use same name with ref
+const form = reactive({
+  name: '',
+  region: '',
+  date1: '',
+  date2: '',
+  delivery: false,
+  type: [],
+  resource: '',
+  desc: '',
+})
+const tableData = [
+  {
+    salesOrderNo: 'NG231207',
+    productionOrderNo: 'NG231207A',
+    processCard: 'NG231207A01',
+    entryName: '淇″悎鏄ュぉ閲�',
+    total: '169',
+    TotalArea: '175.31',
+    productID:"9001010203000008",
+    productName: '5mm鐧界幓骞抽挗(澶�)+0.76PVB閫忔槑+5mm鐧界幓骞抽挗(鍐�)',
+    Divider: 'xxx',
+    splittingTime: '2023-01-01',
+    notes: '1)鎸変紒鏍�2)姣忕墖鐜荤拑鏍囩璐村澶栭潰銆傚唴鐗囩幓鐠冩墦鈥�3C鍟嗘爣鈥濓紝缁熶竴鎵撳湪鐜荤拑鈥滃搴︹�濇柟鍚戝彸涓嬭4)鎸夋壒娆″崟鐙惤鏋躲��',
+  },
+  {
+    salesOrderNo: 'NG231207',
+    productionOrderNo: 'NG231207A',
+    processCard: 'NG231207A02',
+    entryName: '淇″悎鏄ュぉ閲�',
+    total: '169',
+    TotalArea: '175.31',
+    productID:"9001010203000008",
+    productName: '5mm鐧界幓骞抽挗(澶�)+0.76PVB閫忔槑+5mm鐧界幓骞抽挗(鍐�)',
+    Divider: 'xxx',
+    splittingTime: '2023-01-01',
+    notes: '1)鎸変紒鏍�2)姣忕墖鐜荤拑鏍囩璐村澶栭潰銆傚唴鐗囩幓鐠冩墦鈥�3C鍟嗘爣鈥濓紝缁熶竴鎵撳湪鐜荤拑鈥滃搴︹�濇柟鍚戝彸涓嬭4)鎸夋壒娆″崟鐙惤鏋躲��',
+  },
+  {
+    salesOrderNo: 'NG231207',
+    productionOrderNo: 'NG231207A',
+    processCard: 'NG231207A03',
+    entryName: '淇″悎鏄ュぉ閲�',
+    total: '169',
+    TotalArea: '175.31',
+    productID:"9001010203000008",
+    productName: '5mm鐧界幓骞抽挗(澶�)+0.76PVB閫忔槑+5mm鐧界幓骞抽挗(鍐�)',
+    Divider: 'xxx',
+    splittingTime: '2023-01-01',
+    notes: '1)鎸変紒鏍�2)姣忕墖鐜荤拑鏍囩璐村澶栭潰銆傚唴鐗囩幓鐠冩墦鈥�3C鍟嗘爣鈥濓紝缁熶竴鎵撳湪鐜荤拑鈥滃搴︹�濇柟鍚戝彸涓嬭4)鎸夋壒娆″崟鐙惤鏋躲��',
+  },
+  {
+    salesOrderNo: 'NG231207',
+    productionOrderNo: 'NG231207A',
+    processCard: 'NG231207A04',
+    entryName: '淇″悎鏄ュぉ閲�',
+    total: '169',
+    TotalArea: '175.31',
+    productID:"9001010203000008",
+    productName: '5mm鐧界幓骞抽挗(澶�)+0.76PVB閫忔槑+5mm鐧界幓骞抽挗(鍐�)',
+    Divider: 'xxx',
+    splittingTime: '2023-01-01',
+    notes: '1)鎸変紒鏍�2)姣忕墖鐜荤拑鏍囩璐村澶栭潰銆傚唴鐗囩幓鐠冩墦鈥�3C鍟嗘爣鈥濓紝缁熶竴鎵撳湪鐜荤拑鈥滃搴︹�濇柟鍚戝彸涓嬭4)鎸夋壒娆″崟鐙惤鏋躲��',
+  },
+  {
+    salesOrderNo: 'NG231207',
+    productionOrderNo: 'NG231207B',
+    processCard: 'NG231207B01',
+    entryName: '淇″悎鏄ュぉ閲�',
+    total: '169',
+    TotalArea: '175.31',
+    productID:"9001010203000008",
+    productName: '5mm鐧界幓骞抽挗(澶�)+0.76PVB閫忔槑+5mm鐧界幓骞抽挗(鍐�)',
+    Divider: 'xxx',
+    splittingTime: '2023-01-01',
+    notes: '1)鎸変紒鏍�2)姣忕墖鐜荤拑鏍囩璐村澶栭潰銆傚唴鐗囩幓鐠冩墦鈥�3C鍟嗘爣鈥濓紝缁熶竴鎵撳湪鐜荤拑鈥滃搴︹�濇柟鍚戝彸涓嬭4)鎸夋壒娆″崟鐙惤鏋躲��',
+  },
+  {
+    salesOrderNo: 'NG231207',
+    productionOrderNo: 'NG231207B',
+    processCard: 'NG231207B02',
+    entryName: '淇″悎鏄ュぉ閲�',
+    total: '169',
+    TotalArea: '175.31',
+    productID:"9001010203000008",
+    productName: '5mm鐧界幓骞抽挗(澶�)+0.76PVB閫忔槑+5mm鐧界幓骞抽挗(鍐�)',
+    Divider: 'xxx',
+    splittingTime: '2023-01-01',
+    notes: '1)鎸変紒鏍�2)姣忕墖鐜荤拑鏍囩璐村澶栭潰銆傚唴鐗囩幓鐠冩墦鈥�3C鍟嗘爣鈥濓紝缁熶竴鎵撳湪鐜荤拑鈥滃搴︹�濇柟鍚戝彸涓嬭4)鎸夋壒娆″崟鐙惤鏋躲��',
+  },
+]
+</script>
+
+<template>
+  <div>
+    <el-button
+        style="float: left"
+        @click="intoCreateProduct"
+        id="searchButton1"
+        type="primary"
+        :icon="ArrowLeftBold"
+        round >
+      {{flag?'杩斿洖':'杩斿洖'}}
+    </el-button>
+    <el-table :data="tableData" border style="width: 100%" height="100%">
+      <el-table-column fixed label="鎿嶄綔" width="100"  >
+        <el-button link type="primary" size="small">鍏抽棴</el-button>
+        <el-button link type="primary" size="small">淇敼</el-button>
+      </el-table-column>
+      <el-table-column sortable prop="salesOrderNo" label="閿�鍞崟鍙�" width="110" />
+      <el-table-column prop="productionOrderNo" label="鐢熶骇璁㈠崟鍙�" width="125" />
+      <el-table-column prop="processCard" label="娴佺▼鍗″彿" width="125" />
+      <el-table-column prop="entryName" label="椤圭洰鍚嶇О" width="155" />
+      <el-table-column prop="total" label="鎬绘暟閲�" width="80" />
+      <el-table-column prop="dowTotal" label="绂佺敤鏁伴噺" width="90">
+        <el-input></el-input>
+      </el-table-column>
+      <el-table-column prop="TotalArea" label="鎬婚潰绉�" width="80" />
+      <el-table-column prop="productID" label="浜у搧缂栧彿" width="155" />
+      <el-table-column prop="productName" label="浜у搧鍚嶇О" :show-overflow-tooltip='true' width="180" />
+      <el-table-column prop="divider" label="鍒嗘灦鍛�" width="70" />
+      <el-table-column prop="splittingTime" label="鍒嗘灦鏃堕棿" width="100" />
+      <el-table-column prop="notes" label="澶囨敞" :show-overflow-tooltip='true' width="350" />
+    </el-table><!-- <h1>{{msg}}</h1> -->
+  </div>
+</template>
+
+<style scoped>
+
+
+</style>
\ No newline at end of file
diff --git a/north-glass-erp/northglass-erp/src/views/pp/processCard/ReShelving.vue b/north-glass-erp/northglass-erp/src/views/pp/processCard/ReShelving.vue
new file mode 100644
index 0000000..2879136
--- /dev/null
+++ b/north-glass-erp/northglass-erp/src/views/pp/processCard/ReShelving.vue
@@ -0,0 +1,88 @@
+<script lang="ts" setup>
+import { reactive } from 'vue'
+
+// do not use same name with ref
+const form = reactive({
+  name: '',
+  region: '',
+  date1: '',
+  date2: '',
+  delivery: false,
+  type: [],
+  resource: '',
+  desc: '',
+})
+const tableData = [
+  {
+    salesOrderNo: 'NG231207',
+    processCard:'NG231207A01',
+    serialNumber:"1",
+    number: '11',
+    technologicalProcess: '鍒囧壊->纾ㄨ竟->閽㈠寲->涓┖->鍖呰,鍒囧壊->纾ㄨ竟->閽㈠寲->涓┖->鍖呰',
+
+  },
+  {
+    salesOrderNo: 'NG231207',
+    processCard:'NG231207A01',
+    serialNumber:"2",
+    number: '11',
+    technologicalProcess: '鍒囧壊->纾ㄨ竟->閽㈠寲->涓┖->鍖呰,鍒囧壊->纾ㄨ竟->閽㈠寲->涓┖->鍖呰',
+
+  },
+  {
+    salesOrderNo: 'NG231207',
+    processCard:'NG231207A01',
+    serialNumber:"3",
+    number: '11',
+    technologicalProcess: '鍒囧壊->纾ㄨ竟->閽㈠寲->涓┖->鍖呰,鍒囧壊->纾ㄨ竟->閽㈠寲->涓┖->鍖呰',
+
+  },
+  {
+    salesOrderNo: 'NG231207',
+    processCard:'NG231207A02',
+    serialNumber:"4",
+    number: '11',
+    technologicalProcess: '鍒囧壊->纾ㄨ竟->閽㈠寲->涓┖->鍖呰,鍒囧壊->纾ㄨ竟->閽㈠寲->涓┖->鍖呰',
+
+  },
+  {
+    salesOrderNo: 'NG231207',
+    processCard:'NG231207A02',
+    serialNumber:"5",
+    number: '11',
+    technologicalProcess: '鍒囧壊->纾ㄨ竟->閽㈠寲->涓┖->鍖呰,鍒囧壊->纾ㄨ竟->閽㈠寲->涓┖->鍖呰',
+
+  },
+]
+</script>
+
+<template>
+  <div>
+    <div id="selectForm">
+      <el-row :gutter="0">
+        <el-input placeholder="閿�鍞崟鍙�" v-model="form.name" style="width: 200px"/>
+        &nbsp;&nbsp;
+        <el-button type="primary">鏌ヨ</el-button>
+        <el-button type="primary">閲嶆柊鍒嗘灦</el-button>
+      </el-row>
+
+
+    </div>
+    <div>
+      <el-table :data="tableData" border style="width: 100%" height="100%">
+        <el-table-column type="selection" width="55" />
+        <el-table-column label="閿�鍞崟鍙�" width="100">
+          <template #default="scope">{{ scope.row.salesOrderNo }}</template>
+        </el-table-column>
+        <el-table-column prop="processCard" label="娴佺▼鍗″彿" :show-overflow-tooltip='true' width="130" />
+        <el-table-column prop="serialNumber" label="搴忓彿" width="60" />
+        <el-table-column prop="number" label="鏁伴噺" width="80" />
+        <el-table-column prop="technologicalProcess" :show-overflow-tooltip='true' label="宸ヨ壓娴佺▼"  />
+      </el-table><!-- <h1>{{msg}}</h1> -->
+    </div>
+  </div>
+</template>
+
+<style scoped>
+
+</style>
\ No newline at end of file
diff --git a/north-glass-erp/northglass-erp/src/views/pp/processCard/SelectAddProcess.vue b/north-glass-erp/northglass-erp/src/views/pp/processCard/SelectAddProcess.vue
new file mode 100644
index 0000000..11afacb
--- /dev/null
+++ b/north-glass-erp/northglass-erp/src/views/pp/processCard/SelectAddProcess.vue
@@ -0,0 +1,148 @@
+<script lang="ts" setup>
+import { reactive } from 'vue'
+
+// do not use same name with ref
+const form = reactive({
+  name: '',
+  region: '',
+  date1: '',
+  date2: '',
+  delivery: false,
+  type: [],
+  resource: '',
+  desc: '',
+})
+const tableData = [
+  {
+    salesOrderNo: 'NG231201',
+    customerName:"鎱曞鍏徃",
+    entryName: '淇″悎鏄ュぉ閲�',
+    batch: '23鎵�',
+    originalFilmRequired: '2022/5/24XFPO202205202',
+    trademark:'鍖楃幓鍟嗘爣',
+    orderType: '鏅�氳鍗�',
+    salesman: 'XXX',
+    processRequirements: '1)鎸変紒鏍�2)姣忕墖鐜荤拑鏍囩璐村澶栭潰銆傚唴鐗囩幓鐠冩墦鈥�3C鍟嗘爣鈥濓紝缁熶竴鎵撳湪鐜荤拑鈥滃搴︹�濇柟鍚戝彸涓嬭4)鎸夋壒娆″崟鐙惤鏋躲��',
+    shipTo:'宸ュ湴',
+    deliveryDate:'2024-01-12'
+  },
+  {
+    salesOrderNo: 'NG231202',
+    customerName:"澶ц崚寤烘潗鏈夐檺鍏徃",
+    entryName: '淇″悎鏄ュぉ閲�',
+    batch: '23鎵�',
+    originalFilmRequired: '2022/5/24XFPO202205202',
+    trademark:'鍖楃幓鍟嗘爣',
+    orderType: '鏅�氳鍗�',
+    salesman: 'XXX',
+    processRequirements: '1)鎸変紒鏍�2)姣忕墖鐜荤拑鏍囩璐村澶栭潰銆傚唴鐗囩幓鐠冩墦鈥�3C鍟嗘爣鈥濓紝缁熶竴鎵撳湪鐜荤拑鈥滃搴︹�濇柟鍚戝彸涓嬭4)鎸夋壒娆″崟鐙惤鏋躲��',
+    shipTo:'宸ュ湴',
+    deliveryDate:'2024-01-12'
+  },
+  {
+    salesOrderNo: 'NG231203',
+    customerName:"寤虹瓚宸ョ▼闆嗗洟鏈夐檺鍏徃",
+    entryName: '淇″悎鏄ュぉ閲�',
+    batch: '23鎵�',
+    originalFilmRequired: '2022/5/24XFPO202205202',
+    trademark:'鍖楃幓鍟嗘爣',
+    orderType: '鏅�氳鍗�',
+    salesman: 'XXX',
+    processRequirements: '1)鎸変紒鏍�2)姣忕墖鐜荤拑鏍囩璐村澶栭潰銆傚唴鐗囩幓鐠冩墦鈥�3C鍟嗘爣鈥濓紝缁熶竴鎵撳湪鐜荤拑鈥滃搴︹�濇柟鍚戝彸涓嬭4)鎸夋壒娆″崟鐙惤鏋躲��',
+    shipTo:'宸ュ湴',
+    deliveryDate:'2024-01-12'
+  },
+  {
+    salesOrderNo: 'NG231204',
+    customerName:"鎱曞鍏徃",
+    entryName: '淇″悎鏄ュぉ閲�',
+    batch: '23鎵�',
+    originalFilmRequired: '2022/5/24XFPO202205202',
+    trademark:'鍖楃幓鍟嗘爣',
+    orderType: '鏅�氳鍗�',
+    salesman: 'XXX',
+    processRequirements: '1)鎸変紒鏍�2)姣忕墖鐜荤拑鏍囩璐村澶栭潰銆傚唴鐗囩幓鐠冩墦鈥�3C鍟嗘爣鈥濓紝缁熶竴鎵撳湪鐜荤拑鈥滃搴︹�濇柟鍚戝彸涓嬭4)鎸夋壒娆″崟鐙惤鏋躲��',
+    shipTo:'宸ュ湴',
+    deliveryDate:'2024-01-12'
+  },
+  {
+    salesOrderNo: 'NG231205',
+    customerName:"鎱曞鍏徃",
+    entryName: '淇″悎鏄ュぉ閲�',
+    batch: '23鎵�',
+    originalFilmRequired: '2022/5/24XFPO202205202',
+    trademark:'鍖楃幓鍟嗘爣',
+    orderType: '鏅�氳鍗�',
+    salesman: 'XXX',
+    processRequirements: '1)鎸変紒鏍�2)姣忕墖鐜荤拑鏍囩璐村澶栭潰銆傚唴鐗囩幓鐠冩墦鈥�3C鍟嗘爣鈥濓紝缁熶竴鎵撳湪鐜荤拑鈥滃搴︹�濇柟鍚戝彸涓嬭4)鎸夋壒娆″崟鐙惤鏋躲��',
+    shipTo:'宸ュ湴',
+    deliveryDate:'2024-01-12'
+  },
+  {
+    salesOrderNo: 'NG231206',
+    customerName:"鎱曞鍏徃",
+    entryName: '淇″悎鏄ュぉ閲�',
+    batch: '23鎵�',
+    originalFilmRequired: '2022/5/24XFPO202205202',
+    trademark:'鍖楃幓鍟嗘爣',
+    orderType: '鏅�氳鍗�',
+    salesman: 'XXX',
+    processRequirements: '1)鎸変紒鏍�2)姣忕墖鐜荤拑鏍囩璐村澶栭潰銆傚唴鐗囩幓鐠冩墦鈥�3C鍟嗘爣鈥濓紝缁熶竴鎵撳湪鐜荤拑鈥滃搴︹�濇柟鍚戝彸涓嬭4)鎸夋壒娆″崟鐙惤鏋躲��',
+    shipTo:'宸ュ湴',
+    deliveryDate:'2024-01-12'
+  },
+  {
+    salesOrderNo: 'NG231207',
+    customerName:"鎱曞鍏徃",
+    entryName: '淇″悎鏄ュぉ閲�',
+    batch: '23鎵�',
+    originalFilmRequired: '2022/5/24XFPO202205202',
+    trademark:'鍖楃幓鍟嗘爣',
+    orderType: '鏅�氳鍗�',
+    salesman: 'XXX',
+    processRequirements: '1)鎸変紒鏍�2)姣忕墖鐜荤拑鏍囩璐村澶栭潰銆傚唴鐗囩幓鐠冩墦鈥�3C鍟嗘爣鈥濓紝缁熶竴鎵撳湪鐜荤拑鈥滃搴︹�濇柟鍚戝彸涓嬭4)鎸夋壒娆″崟鐙惤鏋躲��',
+    shipTo:'宸ュ湴',
+    deliveryDate:'2024-01-12'
+
+  },
+]
+</script>
+
+<template>
+  <div>
+<!--    <div id="selectForm">-->
+<!--      <el-row :gutter="0">-->
+<!--          <el-input placeholder="閿�鍞崟鍙�" v-model="form.name" style="width: 200px"/>-->
+
+
+<!--        &nbsp;&nbsp;-->
+<!--        <el-button type="primary">鏌ヨ</el-button>-->
+<!--      </el-row>-->
+
+
+<!--    </div>-->
+    <div>
+      <el-table :data="tableData" border style="width: 100%" height="100%">
+        <el-table-column sortable prop="salesOrderNo" label="閿�鍞崟鍙�" width="110" >
+          <template v-slot="scope">
+            <router-link :to="{path:'SplittingDetails'}" >{{scope.row.salesOrderNo}}</router-link>
+          </template>
+        </el-table-column>
+        <el-table-column prop="customerName" label="瀹㈡埛鍚嶇О" :show-overflow-tooltip='true' width="110" />
+        <el-table-column prop="entryName" label="椤圭洰鍚嶇О" width="135" />
+        <el-table-column prop="batch" label="鎵规" width="80" />
+        <el-table-column prop="originalFilmRequired" :show-overflow-tooltip='true' label="鍘熺墖瑕佹眰" width="200" />
+        <el-table-column prop="trademark" label="鍟嗘爣閫夐」" width="100" />
+        <el-table-column prop="orderType" label="璁㈠崟绫诲瀷" width="100" />
+        <el-table-column prop="salesman" label="涓氬姟鍛�" width="75" />
+        <el-table-column prop="processRequirements" :show-overflow-tooltip='true' label="鍔犲伐瑕佹眰" width="400" />
+        <el-table-column prop="shipTo" label="閫佽揣鍦板潃" width="100" />
+        <el-table-column prop="deliveryDate" label="浜よ揣鏃ユ湡" width="100" />
+      </el-table><!-- <h1>{{msg}}</h1> -->
+    </div>
+  </div>
+</template>
+
+<style scoped>
+
+</style>
\ No newline at end of file
diff --git a/north-glass-erp/northglass-erp/src/views/pp/processCard/SelectPrintFlowCard.vue b/north-glass-erp/northglass-erp/src/views/pp/processCard/SelectPrintFlowCard.vue
new file mode 100644
index 0000000..4f0ef09
--- /dev/null
+++ b/north-glass-erp/northglass-erp/src/views/pp/processCard/SelectPrintFlowCard.vue
@@ -0,0 +1,106 @@
+<script lang="ts" setup>
+import {reactive, ref} from 'vue'
+
+// do not use same name with ref
+const form = reactive({
+  name: '',
+  region: '',
+  date1: '',
+  date2: '',
+  delivery: false,
+  type: [],
+  resource: '',
+  desc: '',
+})
+const defaultTime = ref<[Date, Date]>([
+  new Date(2000, 1, 1, 0, 0, 0),
+  new Date(2000, 2, 1, 23, 59, 59),
+])
+const tableData = [
+  {
+    salesOrderNo: 'NG231201',
+    entryName: '淇″悎鏄ュぉ閲�',
+    total: '169',
+    TotalArea: '175.31',
+  },
+  {
+    salesOrderNo: 'NG231202',
+    entryName: '淇″悎鏄ュぉ閲�',
+    total: '169',
+    TotalArea: '175.31',
+  },
+  {
+    salesOrderNo: 'NG231203',
+    entryName: '淇″悎鏄ュぉ閲�',
+    total: '169',
+    TotalArea: '175.31',
+  },
+  {
+    salesOrderNo: 'NG231204',
+    entryName: '淇″悎鏄ュぉ閲�',
+    total: '169',
+    TotalArea: '175.31',
+  },
+  {
+    salesOrderNo: 'NG231205',
+    entryName: '淇″悎鏄ュぉ閲�',
+    total: '169',
+    TotalArea: '175.31',
+  },
+  {
+    salesOrderNo: 'NG231206',
+    entryName: '淇″悎鏄ュぉ閲�',
+    total: '169',
+    TotalArea: '175.31',
+  },
+  {
+    salesOrderNo: 'NG231207',
+    entryName: '淇″悎鏄ュぉ閲�',
+    total: '169',
+    TotalArea: '175.31',
+  },
+]
+</script>
+
+<template>
+  <div>
+    <div id="selectForm">
+      <el-row :gutter="0">
+<!--        <el-input placeholder="閿�鍞崟鍙�" v-model="form.name" style="width: 200px"/>-->
+<!--        &nbsp;&nbsp;-->
+<!--        <el-input placeholder="椤圭洰鍚嶇О" v-model="form.region" style="width: 200px"/>-->
+<!--        &nbsp;&nbsp;-->
+        <el-date-picker
+            v-model="form.date1"
+            type="daterange"
+            start-placeholder="寮�濮嬫椂闂�"
+            end-placeholder="缁撴潫鏃堕棿"
+            :default-time="defaultTime"
+        />
+        &nbsp;&nbsp;
+        <el-button type="primary">鏌ヨ</el-button>
+      </el-row>
+
+    </div>
+    <el-table :data="tableData" border style="width: 100%" height="100%">
+      <el-table-column sortable prop="salesOrderNo" label="閿�鍞崟鍙�" width="110" >
+        <template v-slot="scope">
+          <router-link :to="{path:'PrintFlowCard'}" >{{scope.row.salesOrderNo}}</router-link>
+        </template>
+      </el-table-column>
+      <el-table-column prop="entryName" label="椤圭洰鍚嶇О" width="155" />
+      <el-table-column prop="total" label="鎬荤墖鏁�" width="75" />
+      <el-table-column prop="TotalArea" label="鎬婚潰绉�" width="100" />
+    </el-table><!-- <h1>{{msg}}</h1> -->
+  </div>
+</template>
+
+<style scoped>
+#selectForm {
+  width: 40%;
+  height: 100%;
+  text-align: center;
+}
+
+
+</style>
\ No newline at end of file
diff --git a/north-glass-erp/northglass-erp/src/views/pp/processCard/SelectProcessCard.vue b/north-glass-erp/northglass-erp/src/views/pp/processCard/SelectProcessCard.vue
new file mode 100644
index 0000000..1c0ae6f
--- /dev/null
+++ b/north-glass-erp/northglass-erp/src/views/pp/processCard/SelectProcessCard.vue
@@ -0,0 +1,180 @@
+<script lang="ts" setup>
+import { reactive } from 'vue'
+import { ref } from 'vue'
+const value = ref('')
+const defaultTime = ref<[Date, Date]>([
+  new Date(2000, 1, 1, 0, 0, 0),
+  new Date(2000, 2, 1, 23, 59, 59),
+])
+// do not use same name with ref
+const form = reactive({
+  name: '',
+  region: '',
+  date1: '',
+  date2: '',
+  delivery: false,
+  type: [],
+  resource: '',
+  desc: '',
+})
+const tableData = [
+  {
+    salesOrderNo: 'NG231201',
+    productionOrderNo: 'NG231201A',
+    productID: '9001010203000008',
+    productName: '5mm鐧界幓骞抽挗(澶�)+0.76PVB閫忔槑+5mm鐧界幓骞抽挗(鍐�)',
+    entryName: '淇″悎鏄ュぉ閲�',
+    total: '169',
+    TotalArea: '175.31',
+    Cases: '3',
+    divider: 'xxx',
+    processRequirements: '1)鎸変紒鏍�2)姣忕墖鐜荤拑鏍囩璐村澶栭潰銆傚唴鐗囩幓鐠冩墦鈥�3C鍟嗘爣鈥濓紝缁熶竴鎵撳湪鐜荤拑鈥滃搴︹�濇柟鍚戝彸涓嬭4)鎸夋壒娆″崟鐙惤鏋躲��',
+  },
+  {
+    salesOrderNo: 'NG231201',
+    productionOrderNo: 'NG231201B',
+    productID: '9001010203000008',
+    productName: '5mm鐧界幓骞抽挗(澶�)+0.76PVB閫忔槑+5mm鐧界幓骞抽挗(鍐�)',
+    entryName: '淇″悎鏄ュぉ閲�',
+    total: '169',
+    TotalArea: '175.31',
+    Cases: '3',
+    divider: 'xxx',
+    processRequirements: '1)鎸変紒鏍�2)姣忕墖鐜荤拑鏍囩璐村澶栭潰銆傚唴鐗囩幓鐠冩墦鈥�3C鍟嗘爣鈥濓紝缁熶竴鎵撳湪鐜荤拑鈥滃搴︹�濇柟鍚戝彸涓嬭4)鎸夋壒娆″崟鐙惤鏋躲��',
+  },
+  {
+    salesOrderNo: 'NG231202',
+    productionOrderNo: 'NG231202A',
+    productID: '9001010203000008',
+    productName: '5mm鐧界幓骞抽挗(澶�)+0.76PVB閫忔槑+5mm鐧界幓骞抽挗(鍐�)',
+    entryName: '淇″悎鏄ュぉ閲�',
+    total: '169',
+    TotalArea: '175.31',
+    Cases: '3',
+    divider: 'xxx',
+    processRequirements: '1)鎸変紒鏍�2)姣忕墖鐜荤拑鏍囩璐村澶栭潰銆傚唴鐗囩幓鐠冩墦鈥�3C鍟嗘爣鈥濓紝缁熶竴鎵撳湪鐜荤拑鈥滃搴︹�濇柟鍚戝彸涓嬭4)鎸夋壒娆″崟鐙惤鏋躲��',
+  },
+  {
+    salesOrderNo: 'NG231203',
+    productionOrderNo: 'NG231203A',
+    productID: '9001010203000008',
+    productName: '5mm鐧界幓骞抽挗(澶�)+0.76PVB閫忔槑+5mm鐧界幓骞抽挗(鍐�)',
+    entryName: '淇″悎鏄ュぉ閲�',
+    total: '169',
+    TotalArea: '175.31',
+    Cases: '3',
+    divider: 'xxx',
+    processRequirements: '1)鎸変紒鏍�2)姣忕墖鐜荤拑鏍囩璐村澶栭潰銆傚唴鐗囩幓鐠冩墦鈥�3C鍟嗘爣鈥濓紝缁熶竴鎵撳湪鐜荤拑鈥滃搴︹�濇柟鍚戝彸涓嬭4)鎸夋壒娆″崟鐙惤鏋躲��',
+  },
+  {
+    salesOrderNo: 'NG231204',
+    productionOrderNo: 'NG231204A',
+    productID: '9001010203000008',
+    productName: '5mm鐧界幓骞抽挗(澶�)+0.76PVB閫忔槑+5mm鐧界幓骞抽挗(鍐�)',
+    entryName: '淇″悎鏄ュぉ閲�',
+    total: '169',
+    TotalArea: '175.31',
+    Cases: '3',
+    divider: 'xxx',
+    processRequirements: '1)鎸変紒鏍�2)姣忕墖鐜荤拑鏍囩璐村澶栭潰銆傚唴鐗囩幓鐠冩墦鈥�3C鍟嗘爣鈥濓紝缁熶竴鎵撳湪鐜荤拑鈥滃搴︹�濇柟鍚戝彸涓嬭4)鎸夋壒娆″崟鐙惤鏋躲��',
+  },
+  {
+    salesOrderNo: 'NG231205',
+    productionOrderNo: 'NG231205A',
+    productID: '9001010203000008',
+    productName: '5mm鐧界幓骞抽挗(澶�)+0.76PVB閫忔槑+5mm鐧界幓骞抽挗(鍐�)',
+    entryName: '淇″悎鏄ュぉ閲�',
+    total: '169',
+    TotalArea: '175.31',
+    Cases: '3',
+    divider: 'xxx',
+    processRequirements: '1)鎸変紒鏍�2)姣忕墖鐜荤拑鏍囩璐村澶栭潰銆傚唴鐗囩幓鐠冩墦鈥�3C鍟嗘爣鈥濓紝缁熶竴鎵撳湪鐜荤拑鈥滃搴︹�濇柟鍚戝彸涓嬭4)鎸夋壒娆″崟鐙惤鏋躲��',
+  },
+  {
+    salesOrderNo: 'NG231206',
+    productionOrderNo: 'NG231206A',
+    productID: '9001010203000008',
+    productName: '5mm鐧界幓骞抽挗(澶�)+0.76PVB閫忔槑+5mm鐧界幓骞抽挗(鍐�)',
+    entryName: '淇″悎鏄ュぉ閲�',
+    total: '169',
+    TotalArea: '175.31',
+    Cases: '3',
+    divider: 'xxx',
+    processRequirements: '1)鎸変紒鏍�2)姣忕墖鐜荤拑鏍囩璐村澶栭潰銆傚唴鐗囩幓鐠冩墦鈥�3C鍟嗘爣鈥濓紝缁熶竴鎵撳湪鐜荤拑鈥滃搴︹�濇柟鍚戝彸涓嬭4)鎸夋壒娆″崟鐙惤鏋躲��',
+  },
+  {
+    salesOrderNo: 'NG231207',
+    productionOrderNo: 'NG231207A',
+    productID: '9001010203000008',
+    productName: '5mm鐧界幓骞抽挗(澶�)+0.76PVB閫忔槑+5mm鐧界幓骞抽挗(鍐�)',
+    entryName: '淇″悎鏄ュぉ閲�',
+    total: '169',
+    TotalArea: '175.31',
+    Cases: '3',
+    divider: 'xxx',
+    processRequirements: '1)鎸変紒鏍�2)姣忕墖鐜荤拑鏍囩璐村澶栭潰銆傚唴鐗囩幓鐠冩墦鈥�3C鍟嗘爣鈥濓紝缁熶竴鎵撳湪鐜荤拑鈥滃搴︹�濇柟鍚戝彸涓嬭4)鎸夋壒娆″崟鐙惤鏋躲��',
+  },
+]
+</script>
+
+<template>
+  <div>
+    <div id="selectForm" >
+      <el-row :gutter="0">
+<!--          <el-input placeholder="閿�鍞崟鍙�" v-model="form.name" style="width: 200px"/>-->
+<!--        &nbsp;&nbsp;-->
+<!--          <el-input placeholder="椤圭洰鍚嶇О" v-model="form.name" style="width: 200px"/>-->
+
+<!--        &nbsp;&nbsp;-->
+        <el-date-picker
+            v-model="value"
+            type="daterange"
+            start-placeholder="寮�濮嬫椂闂�"
+            end-placeholder="缁撴潫鏃堕棿"
+            :default-time="defaultTime"
+        />
+        &nbsp;&nbsp;
+        <el-button type="primary" style="width: 80px">鏌ヨ</el-button>
+      </el-row>
+
+    </div>
+    <el-table :data="tableData" border style="width: 100%" height="100%">
+      <el-table-column fixed label="鎿嶄綔" width="140"  >
+        <el-button link type="primary" size="small">鍒犻櫎</el-button>
+        <el-button link type="primary" size="small">鎺掔増</el-button>
+        <el-button link type="primary" size="small">鎵撳嵃</el-button>
+      </el-table-column>
+      <el-table-column sortable prop="salesOrderNo" label="閿�鍞崟鍙�" width="110" >
+        <template v-slot="scope">
+          <router-link :to="{path:'ProcessCardDetails'}" >{{scope.row.salesOrderNo}}</router-link>
+        </template>
+      </el-table-column>
+      <el-table-column prop="productionOrderNo" label="鐢熶骇璁㈠崟鍙�" width="125" />
+      <el-table-column prop="productID" label="浜у搧缂栧彿" width="155" />
+      <el-table-column prop="productName" label="浜у搧鍚嶇О" :show-overflow-tooltip='true' width="180" />
+      <el-table-column prop="entryName" label="椤圭洰鍚嶇О" width="155" />
+      <el-table-column prop="total" label="鎬荤墖鏁�" width="75" />
+      <el-table-column prop="TotalArea" label="鎬婚潰绉�" width="100" />
+      <el-table-column prop="Cases" label="绠辨暟" width="100" />
+      <el-table-column prop="divider" label="鍒嗘灦鍛�" width="70" />
+      <el-table-column prop="processRequirements" label="鍔犲伐瑕佹眰" :show-overflow-tooltip='true' width="350" />
+    </el-table><!-- <h1>{{msg}}</h1> -->
+  </div>
+</template>
+
+<style scoped>
+*{
+  margin: 0;
+  padding:0;
+}
+
+a{
+  color:#409eff;
+}
+
+#selectForm {
+  width: 40%;
+  height: 100%;
+  text-align: center;
+}
+</style>
\ No newline at end of file
diff --git a/north-glass-erp/northglass-erp/src/views/pp/processCard/SplittingDetails.vue b/north-glass-erp/northglass-erp/src/views/pp/processCard/SplittingDetails.vue
new file mode 100644
index 0000000..eb1f031
--- /dev/null
+++ b/north-glass-erp/northglass-erp/src/views/pp/processCard/SplittingDetails.vue
@@ -0,0 +1,92 @@
+<script lang="ts" setup>
+import { reactive } from 'vue'
+import {ArrowLeftBold} from "@element-plus/icons-vue";
+import {useRouter} from "vue-router";
+
+// do not use same name with ref
+const form = reactive({
+  name: '',
+  region: '',
+  date1: '',
+  date2: '',
+  delivery: false,
+  type: [],
+  resource: '',
+  desc: '',
+})
+const router = useRouter()
+let flag = $ref(true)
+function intoCreateProduct(){
+  if(flag){
+    router.push('/main/processCard/SelectAddProcess')
+  }else {
+    router.push('/main/processCard/SelectAddProcess')
+  }
+  flag=!flag
+}
+const tableData = [
+  {
+    salesOrderNo: 'NG231201',
+    productionOrderNo: 'NG231201A',
+    productID: '9001010203000008',
+    productName: '5mm鐧界幓骞抽挗(澶�)+0.76PVB閫忔槑+5mm鐧界幓骞抽挗(鍐�)',
+    total: '169',
+    TotalArea: '175.31',
+    perimeter: '99.84',
+  },
+  {
+    salesOrderNo: 'NG231201',
+    productionOrderNo: 'NG231201B',
+    productID: '9001010208000018',
+    productName: '6mm鍙挗LOW-E-85骞抽挗(澶�)+12A(缁�)+6mm鐧界幓骞抽挗(鍐�)',
+    total: '169',
+    TotalArea: '175.31',
+    perimeter: '99.84',
+  },
+  {
+    salesOrderNo: 'NG231201',
+    productionOrderNo: 'NG231201C',
+    productID: '9001010203000021',
+    productName: '6mm瓒呯櫧UD60骞抽挗(澶�)+12A(缁�)+6mm瓒呯櫧骞抽挗(鍐�)',
+    total: '169',
+    TotalArea: '175.31',
+    perimeter: '99.84',
+  },
+]
+</script>
+
+<template>
+  <div>
+    <div id="headerButton">
+
+      <el-button
+          style="float: left"
+          @click="intoCreateProduct"
+          id="searchButton1"
+          type="primary"
+          :icon="ArrowLeftBold"
+          round >
+        {{flag?'杩斿洖':'杩斿洖'}}
+      </el-button>
+    </div>
+
+    <el-table :data="tableData" border style="width: 100%" height="100%">
+      <el-table-column sortable prop="salesOrderNo" label="閿�鍞崟鍙�" width="110" >
+        <template v-slot="scope">
+          <router-link :to="{path:'AddProcessCard'}" >{{scope.row.salesOrderNo}}</router-link>
+        </template>
+      </el-table-column>
+      <el-table-column prop="productionOrderNo" label="鐢熶骇璁㈠崟鍙�" width="125" />
+      <el-table-column prop="productID" label="浜у搧缂栧彿" width="155" />
+      <el-table-column prop="productName" label="浜у搧鍚嶇О" :show-overflow-tooltip='true' width="180" />
+      <el-table-column prop="total" label="鎬绘暟閲�" width="75" />
+      <el-table-column prop="TotalArea" label="鎬婚潰绉�" width="100" />
+      <el-table-column prop="perimeter" label="鍛ㄩ暱" width="75" />
+    </el-table><!-- <h1>{{msg}}</h1> -->
+  </div>
+</template>
+
+<style scoped>
+
+
+</style>
\ No newline at end of file
diff --git a/north-glass-erp/northglass-erp/src/views/pp/report/DamageReport.vue b/north-glass-erp/northglass-erp/src/views/pp/report/DamageReport.vue
new file mode 100644
index 0000000..55fa961
--- /dev/null
+++ b/north-glass-erp/northglass-erp/src/views/pp/report/DamageReport.vue
@@ -0,0 +1,114 @@
+<script lang="ts" setup>
+import {reactive, ref} from 'vue'
+
+
+
+
+const defaultTime = ref<[Date, Date]>([
+  new Date(2000, 1, 1, 0, 0, 0),
+  new Date(2000, 2, 1, 23, 59, 59),
+])
+// do not use same name with ref
+const form = reactive({
+  name: '',
+  region: '',
+  date1: '',
+  date2: '',
+  delivery: false,
+  type: [],
+  resource: '',
+  desc: '',
+})
+
+const value = ref('')
+const options = [
+  {
+    value: 'Option1',
+    label: 'Option1',
+  },
+  {
+    value: 'Option2',
+    label: 'Option2',
+  },
+  {
+    value: 'Option3',
+    label: 'Option3',
+  },
+]
+const tableData = [
+  {
+    1:'2023-01-01',
+    2:'閽㈠寲',
+    3:'閽㈠寲涓�鐝�',
+    4:'榛戦噾鍒�',
+    5:'鏈哄櫒',
+    6:'1 ',
+    7:'3.14',
+    8:'89',
+    9:'濂斿悜骞曞',
+    10:'涓�鎵�',
+    11:'NG20010101',
+    12:'6mm瓒呯櫧骞抽挗',
+    13:'鍖楁柟',
+
+  },
+]
+</script>
+<!--娆$牬鎶ヨ〃-->
+<template>
+  <div class="div-main">
+    <div id="selectForm">
+      <el-row :gutter="0">
+<!--        <el-input placeholder="鐝粍鍚嶇О" v-model="form.name" style="width: 200px"/>-->
+<!--        &nbsp;&nbsp;-->
+        <el-date-picker
+            v-model="form.date1"
+            type="daterange"
+            start-placeholder="寮�濮嬫椂闂�"
+            end-placeholder="缁撴潫鏃堕棿"
+            :default-time="defaultTime"
+        />
+        &nbsp;&nbsp;
+        <el-select v-model="value" class="m-2" placeholder="鏌ヨ绫诲瀷">
+          <el-option
+              v-for="item in options"
+              :key="item.value"
+              :label="item.label"
+              :value="item.value"
+          />
+        </el-select>
+        <el-button type="primary">鏌ヨ</el-button>
+      </el-row>
+
+    </div>
+    <div>
+      <el-table :data="tableData" border style="width: 100%" height="100%">
+        <el-table-column prop="1" label="鎶ュ伐鏃堕棿" />
+        <el-table-column prop="2" label="宸ュ簭"/>
+        <el-table-column prop="3" label="璐d换鐝粍" :show-overflow-tooltip='true' />
+        <el-table-column prop="4" label="璐d换璁惧" />
+        <el-table-column prop="5" label="娆$牬鍘熷洜" />
+        <el-table-column prop="6" label="娆$牬鏁伴噺" />
+        <el-table-column prop="7" label="娆$牬闈㈢Н"/>
+        <el-table-column prop="8" label="鎴愬搧鐜�"/>
+        <el-table-column prop="9" label="椤圭洰鍚嶇О" :show-overflow-tooltip='true' />
+        <el-table-column prop="10" label="鎵规"  />
+        <el-table-column prop="11" label="閿�鍞崟鍙�"  width="120px" />
+        <el-table-column prop="12" label="鍗曞搧鍚嶇О" :show-overflow-tooltip='true' width="150px" />
+        <el-table-column prop="13" label="浜у湴"  />
+      </el-table><!-- <h1>{{msg}}</h1> -->
+    </div>
+
+  </div>
+</template>
+
+<style scoped>
+.div-main{
+  width: 100%;
+  height: 100%;
+}
+#selectForm {
+  width: 70%;
+  text-align: center;
+}
+</style>
\ No newline at end of file
diff --git a/north-glass-erp/northglass-erp/src/views/pp/report/EquipmentOutput.vue b/north-glass-erp/northglass-erp/src/views/pp/report/EquipmentOutput.vue
new file mode 100644
index 0000000..6a250bd
--- /dev/null
+++ b/north-glass-erp/northglass-erp/src/views/pp/report/EquipmentOutput.vue
@@ -0,0 +1,104 @@
+<script lang="ts" setup>
+import {reactive, ref} from 'vue'
+
+
+
+
+const defaultTime = ref<[Date, Date]>([
+  new Date(2000, 1, 1, 0, 0, 0),
+  new Date(2000, 2, 1, 23, 59, 59),
+])
+// do not use same name with ref
+const form = reactive({
+  name: '',
+  region: '',
+  date1: '',
+  date2: '',
+  delivery: false,
+  type: [],
+  resource: '',
+  desc: '',
+})
+
+const value = ref('')
+const options = [
+  {
+    value: 'Option1',
+    label: 'Option1',
+  },
+  {
+    value: 'Option2',
+    label: 'Option2',
+  },
+  {
+    value: 'Option3',
+    label: 'Option3',
+  },
+]
+const tableData = [
+  {
+    1:'鍒囧壊',
+    2:'澶ф捣鍒╁畞',
+    3:'NG23010102',
+    4:'NG23010102A',
+    5:'6mm瓒呯櫧LYE-80骞抽挗(澶�)+12Ar(缁�)+6mm瓒呯櫧骞抽挗(鍐�)',
+    6:'133',
+    7:'123.14',
+    8:'2023-01-02',
+
+  },
+]
+</script>
+<!--璁惧浜ч噺-->
+<template>
+  <div class="div-main">
+    <div id="selectForm">
+      <el-row :gutter="0">
+<!--        <el-input placeholder="璁惧鍚嶇О" v-model="form.name" style="width: 200px"/>-->
+<!--        &nbsp;&nbsp;-->
+        <el-date-picker
+            v-model="form.date1"
+            type="daterange"
+            start-placeholder="寮�濮嬫椂闂�"
+            end-placeholder="缁撴潫鏃堕棿"
+            :default-time="defaultTime"
+        />
+        &nbsp;&nbsp;
+        <el-select v-model="value" class="m-2" placeholder="鏌ヨ绫诲瀷">
+          <el-option
+              v-for="item in options"
+              :key="item.value"
+              :label="item.label"
+              :value="item.value"
+          />
+        </el-select>
+        <el-button type="primary">鏌ヨ</el-button>
+      </el-row>
+
+    </div>
+    <div>
+      <el-table :data="tableData" border style="width: 100%" height="100%">
+        <el-table-column prop="1" label="宸ュ簭" />
+        <el-table-column prop="2" label="鍔犲伐璁惧"/>
+        <el-table-column prop="3" label="閿�鍞崟鍙�" :show-overflow-tooltip='true' />
+        <el-table-column prop="4" label="鐢熶骇璁㈠崟鍙�" />
+        <el-table-column prop="5" label="浜у搧鍚嶇О" :show-overflow-tooltip='true' />
+        <el-table-column prop="6" label="瀹屽伐鏁伴噺" />
+        <el-table-column prop="7" label="瀹屽伐闈㈢Н"/>
+        <el-table-column prop="8" label="鎶ュ伐鏃堕棿"/>
+      </el-table><!-- <h1>{{msg}}</h1> -->
+    </div>
+
+  </div>
+</template>
+
+<style scoped>
+.div-main{
+  width: 100%;
+  height: 100%;
+}
+#selectForm {
+  width: 70%;
+  text-align: center;
+}
+</style>
\ No newline at end of file
diff --git a/north-glass-erp/northglass-erp/src/views/pp/report/OrderBOMOutside.vue b/north-glass-erp/northglass-erp/src/views/pp/report/OrderBOMOutside.vue
new file mode 100644
index 0000000..1815244
--- /dev/null
+++ b/north-glass-erp/northglass-erp/src/views/pp/report/OrderBOMOutside.vue
@@ -0,0 +1,113 @@
+<script lang="ts" setup>
+import {reactive, ref} from 'vue'
+
+
+
+
+const defaultTime = ref<[Date, Date]>([
+  new Date(2000, 1, 1, 0, 0, 0),
+  new Date(2000, 2, 1, 23, 59, 59),
+])
+// do not use same name with ref
+const form = reactive({
+  name: '',
+  region: '',
+  date1: '',
+  date2: '',
+  delivery: false,
+  type: [],
+  resource: '',
+  desc: '',
+})
+
+const value = ref('')
+const options = [
+  {
+    value: 'Option1',
+    label: 'Option1',
+  },
+  {
+    value: 'Option2',
+    label: 'Option2',
+  },
+  {
+    value: 'Option3',
+    label: 'Option3',
+  },
+]
+const tableData = [
+  {
+    1:'NG230101',
+    2:'24',
+    3:'06045001',
+    4:'3mm鐧藉潯/PE绮楃(/鍒囪9*9mm/TG/鎸夊浘[KD10059406-7-20002] 1011* 374(鍖呰 : 320鐗�/绠憋紝鐢ㄧ儹闅擣SC绾�)',
+    5:'1300',
+    6:'涓�绾胯绠�',
+    7:'70030201000010400410000002',
+    8:'FSC鏃犲皹绾�',
+    9:'寮�',
+    10:'涓滆帪甯傞敠鑽g焊涓�',
+    11:'1304.00',
+    12:'1000.0000',
+    13:'宸插鏍�',
+  },
+]
+</script>
+<!--BOM鎶ヨ〃-->
+<template>
+  <div class="div-main">
+    <div id="selectForm">
+      <el-row :gutter="0">
+<!--        <el-input placeholder="璁惧鍚嶇О" v-model="form.name" style="width: 200px"/>-->
+<!--        &nbsp;&nbsp;-->
+        <el-date-picker
+            v-model="form.date1"
+            type="daterange"
+            start-placeholder="寮�濮嬫椂闂�"
+            end-placeholder="缁撴潫鏃堕棿"
+            :default-time="defaultTime"
+        />
+        &nbsp;&nbsp;
+        <el-select v-model="value" class="m-2" placeholder="鏌ヨ绫诲瀷">
+          <el-option
+              v-for="item in options"
+              :key="item.value"
+              :label="item.label"
+              :value="item.value"
+          />
+        </el-select>
+        <el-button type="primary">鏌ヨ</el-button>
+      </el-row>
+
+    </div>
+    <div>
+      <el-table :data="tableData" border style="width: 100%" height="100%">
+        <el-table-column prop="1" label="閿�鍞崟鍙�" />
+        <el-table-column prop="2" label="瀹㈡埛缂栫爜" :show-overflow-tooltip='true'/>
+        <el-table-column prop="3" label="浜у搧缂栧彿" :show-overflow-tooltip='true' />
+        <el-table-column prop="4" label="浜у搧鍚嶇О" :show-overflow-tooltip='true'/>
+        <el-table-column prop="5" label="璁㈠崟鏁伴噺" :show-overflow-tooltip='true' />
+        <el-table-column prop="6" label="棰嗘枡宸ュ簭" />
+        <el-table-column prop="7" label="鐗╂枡缂栫爜" :show-overflow-tooltip='true'/>
+        <el-table-column prop="8" label="鐗╂枡鍚嶇О" :show-overflow-tooltip='true'/>
+        <el-table-column prop="9" label="鍗曚綅"/>
+        <el-table-column prop="10" label="浜у湴" :show-overflow-tooltip='true'/>
+        <el-table-column prop="11" label="鐗╂枡鏁伴噺"/>
+        <el-table-column prop="12" label="閲囪喘鏁伴噺"/>
+        <el-table-column prop="13" label="鏄惁瀹℃牳"/>
+      </el-table><!-- <h1>{{msg}}</h1> -->
+    </div>
+
+  </div>
+</template>
+
+<style scoped>
+.div-main{
+  width: 100%;
+  height: 100%;
+}
+#selectForm {
+  width: 70%;
+  text-align: center;
+}
+</style>
\ No newline at end of file
diff --git a/north-glass-erp/northglass-erp/src/views/pp/report/OrderPlanDecomposition.vue b/north-glass-erp/northglass-erp/src/views/pp/report/OrderPlanDecomposition.vue
new file mode 100644
index 0000000..c0335f3
--- /dev/null
+++ b/north-glass-erp/northglass-erp/src/views/pp/report/OrderPlanDecomposition.vue
@@ -0,0 +1,113 @@
+<script lang="ts" setup>
+import {reactive, ref} from 'vue'
+
+
+
+
+const defaultTime = ref<[Date, Date]>([
+  new Date(2000, 1, 1, 0, 0, 0),
+  new Date(2000, 2, 1, 23, 59, 59),
+])
+// do not use same name with ref
+const form = reactive({
+  name: '',
+  region: '',
+  date1: '',
+  date2: '',
+  delivery: false,
+  type: [],
+  resource: '',
+  desc: '',
+})
+
+const value = ref('')
+const options = [
+  {
+    value: 'Option1',
+    label: 'Option1',
+  },
+  {
+    value: 'Option2',
+    label: 'Option2',
+  },
+  {
+    value: 'Option3',
+    label: 'Option3',
+  },
+]
+const tableData = [
+  {
+    1:'鏂板畨鍖楃幓浜т笟鍥�',
+    2:'1#瀹胯垗妤煎',
+    3:'1#琛ョ墖',
+    4:'8',
+    5:'9.82',
+    6:'2023-12-01 11:06:10',
+    7:'NG23113003',
+    8:'2023-12-03 23:19:11',
+    9:'鍒囧壊',
+    10:'2',
+    11:'0',
+    12:'9',
+    13:'宸插鏍�',
+    14:'4',
+  },
+]
+</script>
+<!--璁㈠崟璁″垝鍒嗚В-->
+<template>
+  <div class="div-main">
+    <div id="selectForm">
+      <el-row :gutter="0">
+        <el-date-picker
+            v-model="form.date1"
+            type="daterange"
+            start-placeholder="寮�濮嬫椂闂�"
+            end-placeholder="缁撴潫鏃堕棿"
+            :default-time="defaultTime"
+        />
+        &nbsp;&nbsp;
+        <el-select v-model="value" class="m-2" placeholder="鏌ヨ绫诲瀷">
+          <el-option
+              v-for="item in options"
+              :key="item.value"
+              :label="item.label"
+              :value="item.value"
+          />
+        </el-select>
+        <el-button type="primary">鏌ヨ</el-button>
+      </el-row>
+
+    </div>
+    <div>
+      <el-table :data="tableData" border style="width: 100%" height="100%">
+        <el-table-column prop="1" label="椤圭洰鍚嶇О" width="115" :show-overflow-tooltip='true'/>
+        <el-table-column prop="2" label="瀹㈡埛鎵规" width="115" :show-overflow-tooltip='true'/>
+        <el-table-column prop="3" label="鎵规" :show-overflow-tooltip='true' />
+        <el-table-column prop="4" label="鏁伴噺" :show-overflow-tooltip='true'/>
+        <el-table-column prop="5" label="闈㈢Н" :show-overflow-tooltip='true' />
+        <el-table-column prop="6" label="璁㈠崟浜ゆ帴鏃堕棿" width="115" :show-overflow-tooltip='true'/>
+        <el-table-column prop="7" label="閿�鍞崟鍙�" width="115" :show-overflow-tooltip='true'/>
+        <el-table-column prop="8" label="寮�濮嬪垏鍓叉椂闂�" width="115" :show-overflow-tooltip='true'/>
+        <el-table-column prop="9" label="娴佽浆宸ュ簭" width="82"/>
+        <el-table-column prop="10" label="瀹屽伐鏁伴噺" width="85" :show-overflow-tooltip='true'/>
+        <el-table-column prop="11" label="宸插叆搴撴暟閲�" width="95"/>
+        <el-table-column prop="12" label="鏈叆搴撴暟閲�" width="95"/>
+        <el-table-column prop="13" label="娓呭崟鏃堕棿" width="82"/>
+        <el-table-column prop="14" label="鐢熶骇鐢ㄦ椂(澶�)" width="115"/>
+      </el-table><!-- <h1>{{msg}}</h1> -->
+    </div>
+
+  </div>
+</template>
+
+<style scoped>
+.div-main{
+  width: 100%;
+  height: 100%;
+}
+#selectForm {
+  width: 70%;
+  text-align: center;
+}
+</style>
\ No newline at end of file
diff --git a/north-glass-erp/northglass-erp/src/views/pp/report/ProcessToBeCompleted.vue b/north-glass-erp/northglass-erp/src/views/pp/report/ProcessToBeCompleted.vue
new file mode 100644
index 0000000..f68e379
--- /dev/null
+++ b/north-glass-erp/northglass-erp/src/views/pp/report/ProcessToBeCompleted.vue
@@ -0,0 +1,95 @@
+<script lang="ts" setup>
+import {reactive, ref} from 'vue'
+
+
+
+
+const defaultTime = ref<[Date, Date]>([
+  new Date(2000, 1, 1, 0, 0, 0),
+  new Date(2000, 2, 1, 23, 59, 59),
+])
+// do not use same name with ref
+const form = reactive({
+  name: '',
+  region: '',
+  date1: '',
+  date2: '',
+  delivery: false,
+  type: [],
+  resource: '',
+  desc: '',
+})
+
+const value = ref('')
+const options = [
+  {
+    value: 'Option1',
+    label: 'Option1',
+  },
+  {
+    value: 'Option2',
+    label: 'Option2',
+  },
+  {
+    value: 'Option3',
+    label: 'Option3',
+  },
+]
+const tableData = [
+  {
+    1:'鏂板畨鍖楃幓浜т笟鍥�',
+    2:'19mm瓒呯櫧骞抽挗',
+    3:'1',
+    4:'3.11',
+  },
+]
+</script>
+<!--宸ュ簭寰呭畬鎴愭姤琛�-->
+<template>
+  <div class="div-main">
+    <div id="selectForm">
+      <el-row :gutter="0">
+<!--        <el-input placeholder="閿�鍞崟鍙�" v-model="form.name" style="width: 150px"/>-->
+<!--        <el-input placeholder="椤圭洰鍚嶇О" v-model="form.name" style="width: 150px"/>-->
+        <el-date-picker
+            v-model="form.date1"
+            type="daterange"
+            start-placeholder="寮�濮嬫椂闂�"
+            end-placeholder="缁撴潫鏃堕棿"
+            :default-time="defaultTime"
+        />
+        <el-select v-model="value" class="m-2" placeholder="鏌ヨ绫诲瀷">
+          <el-option
+              v-for="item in options"
+              :key="item.value"
+              :label="item.label"
+              :value="item.value"
+          />
+        </el-select>
+        &nbsp;&nbsp;
+        <el-button type="primary">鏌ヨ</el-button>
+      </el-row>
+
+    </div>
+    <div>
+      <el-table :data="tableData" border style="width: 100%" height="100%">
+        <el-table-column prop="1" label="椤圭洰鍚嶇О" width="115" :show-overflow-tooltip='true'/>
+        <el-table-column prop="2" label="鍗曞搧鍚嶇О" width="115" :show-overflow-tooltip='true'/>
+        <el-table-column prop="3" label="鏈畬鏁�" :show-overflow-tooltip='true' />
+        <el-table-column prop="4" label="鏈畬闈㈢Н" :show-overflow-tooltip='true'/>
+      </el-table><!-- <h1>{{msg}}</h1> -->
+    </div>
+
+  </div>
+</template>
+
+<style scoped>
+.div-main{
+  width: 100%;
+  height: 100%;
+}
+#selectForm {
+  width: 70%;
+  text-align: center;
+}
+</style>
\ No newline at end of file
diff --git a/north-glass-erp/northglass-erp/src/views/pp/report/ProductionSchedule.vue b/north-glass-erp/northglass-erp/src/views/pp/report/ProductionSchedule.vue
new file mode 100644
index 0000000..c406346
--- /dev/null
+++ b/north-glass-erp/northglass-erp/src/views/pp/report/ProductionSchedule.vue
@@ -0,0 +1,235 @@
+<script lang="ts" setup>
+import {reactive, ref} from 'vue'
+import type { TableColumnCtx } from 'element-plus'
+
+interface User {
+  id: string
+  name: string
+  amount1: string
+  amount2: string
+  amount3: number
+}
+
+interface SpanMethodProps {
+  row: User
+  column: TableColumnCtx<User>
+  rowIndex: number
+  columnIndex: number
+}
+
+const defaultTime = ref<[Date, Date]>([
+  new Date(2000, 1, 1, 0, 0, 0),
+  new Date(2000, 2, 1, 23, 59, 59),
+])
+// do not use same name with ref
+const form = reactive({
+  name: '',
+  region: '',
+  date1: '',
+  date2: '',
+  delivery: false,
+  type: [],
+  resource: '',
+  desc: '',
+})
+
+
+const objectSpanMethod = ({
+                            row,
+                            column,
+                            rowIndex,
+                            columnIndex,
+                          }: SpanMethodProps) => {
+  if (columnIndex === 0 ||columnIndex === 1||columnIndex === 2||columnIndex === 3||columnIndex === 6) {
+    console.log(rowIndex)
+    if (rowIndex % 3 === 0) {
+      return {
+        rowspan: 3,
+        colspan: 1,
+        column:1
+      }
+    } else {
+      return {
+        rowspan: 0,
+        colspan: 0,
+        column:1
+      }
+    }
+  }
+
+}
+const tableData = [
+  {
+    1:'1',
+    2:'J8-B1-BD-BL1-001',
+    3:'鏅舰',
+    4:'10mm瓒呯櫧UD60骞抽挗(澶�)+12Ar(缁�)+10mm瓒呯櫧骞抽挗+12Ar(缁�)+10mm瓒呯櫧骞抽挗(鍐�)',
+    5:'1114',
+    6:'1445',
+    7:'3',
+    8:'(澶�)',
+    9:'1',
+    10:'10mm瓒呯櫧UD60骞抽挗(澶�)',
+    11:'1',
+    12:'1',
+    13:'1',
+    14:'0',
+    15:'0',
+    16:'0',
+    17:'0',
+    18:'4.11',
+  },
+  {
+    1:'1',
+    2:'J8-B1-BD-BL1-001',
+    3:'鏅舰',
+    4:'10mm瓒呯櫧UD60骞抽挗(澶�)+12Ar(缁�)+10mm瓒呯櫧骞抽挗+12Ar(缁�)+10mm瓒呯櫧骞抽挗(鍐�)',
+    5:'1114',
+    6:'1445',
+    7:'3',
+    8:'(涓�)',
+    9:'2',
+    10:'10mm瓒呯櫧UD60骞抽挗(澶�)',
+    11:'1',
+    12:'1',
+    13:'1',
+    14:'0',
+    15:'0',
+    16:'0',
+    17:'0',
+    18:'4.11',
+  },
+  {
+    1:'1',
+    2:'J8-B1-BD-BL1-001',
+    3:'鏅舰',
+    4:'10mm瓒呯櫧UD60骞抽挗(澶�)+12Ar(缁�)+10mm瓒呯櫧骞抽挗+12Ar(缁�)+10mm瓒呯櫧骞抽挗(鍐�)',
+    5:'1114',
+    6:'1445',
+    7:'3',
+    8:'(鍐�)',
+    9:'3',
+    10:'10mm瓒呯櫧UD60骞抽挗(澶�)',
+    11:'1',
+    12:'1',
+    13:'1',
+    14:'0',
+    15:'0',
+    16:'0',
+    17:'0',
+    18:'4.11',
+  },
+  {
+    1:'2',
+    2:'J8-B1-BD-BL1-001',
+    3:'鏅舰',
+    4:'6mm瓒呯櫧UD60骞抽挗(澶�)+12Ar(缁�)+6mm瓒呯櫧骞抽挗+12Ar(缁�)+6mm瓒呯櫧骞抽挗(鍐�)',
+    5:'1114',
+    6:'1445',
+    7:'3',
+    8:'(澶�)',
+    9:'1',
+    10:'6mm瓒呯櫧UD60骞抽挗(澶�)',
+    11:'1',
+    12:'1',
+    13:'1',
+    14:'0',
+    15:'0',
+    16:'0',
+    17:'0',
+    18:'4.11',
+  },
+  {
+    1:'2',
+    2:'J8-B1-BD-BL1-001',
+    3:'鏅舰',
+    4:'6mm瓒呯櫧UD60骞抽挗(澶�)+12Ar(缁�)+6mm瓒呯櫧骞抽挗+12Ar(缁�)+6mm瓒呯櫧骞抽挗(鍐�)',
+    5:'1114',
+    6:'1445',
+    7:'3',
+    8:'(涓�)',
+    9:'2',
+    10:'6mm瓒呯櫧UD60骞抽挗(澶�)',
+    11:'1',
+    12:'1',
+    13:'1',
+    14:'0',
+    15:'0',
+    16:'0',
+    17:'0',
+    18:'4.11',
+  },
+  {
+    1:'2',
+    2:'J8-B1-BD-BL1-001',
+    3:'鏅舰',
+    4:'6mm瓒呯櫧UD60骞抽挗(澶�)+12Ar(缁�)+6mm瓒呯櫧骞抽挗+12Ar(缁�)+6mm瓒呯櫧骞抽挗(鍐�)',
+    5:'1114',
+    6:'1445',
+    7:'3',
+    8:'(鍐�)',
+    9:'3',
+    10:'6mm瓒呯櫧UD60骞抽挗(澶�)',
+    11:'1',
+    12:'1',
+    13:'1',
+    14:'0',
+    15:'0',
+    16:'0',
+    17:'0',
+    18:'4.11',
+  },
+]
+</script>
+<!--鐢熶骇鍙戣揣杩涘害-->
+<template>
+  <div class="div-main">
+    <div id="selectForm">
+      <el-row :gutter="0">
+        <el-input placeholder="閿�鍞崟鍙�" v-model="form.name" style="width: 150px"/>
+        &nbsp;&nbsp;
+        <el-button type="primary">鏌ヨ</el-button>
+      </el-row>
+
+    </div>
+    <div>
+      <el-table
+          :data="tableData"
+          :span-method="objectSpanMethod"
+          border
+          style="width: 100%; margin-top: 20px"
+      >
+        <el-table-column prop="1" label="搴忓彿" />
+        <el-table-column prop="2" label="妤煎眰缂栧彿" width="120px" :show-overflow-tooltip='true'/>
+        <el-table-column prop="3" label="褰㈢姸" :show-overflow-tooltip='true' />
+        <el-table-column prop="4" label="鎴愬搧鍚嶇О" width="120px" :show-overflow-tooltip='true'/>
+        <el-table-column prop="5" label="瀹�" />
+        <el-table-column prop="6" label="楂�" />
+        <el-table-column prop="7" label="鏁伴噺"/>
+        <el-table-column prop="8" label="鐗囨爣璁�"/>
+        <el-table-column prop="9" label="鏍囪" :show-overflow-tooltip='true' />
+        <el-table-column prop="10" label="鍗曠墖鍚嶇О" width="120px"  :show-overflow-tooltip='true'/>
+        <el-table-column prop="11" label="鍒囧壊"  width="120px" />
+        <el-table-column prop="12" label="纾ㄨ竟" :show-overflow-tooltip='true' width="150px" />
+        <el-table-column prop="13" label="閽㈠寲"  />
+        <el-table-column prop="14" label="鍏ュ簱鏁伴噺"  />
+        <el-table-column prop="15" label="鍏ュ簱闈㈢Н"  />
+        <el-table-column prop="16" label="鍙戣揣鏁伴噺"  />
+        <el-table-column prop="17" label="鍙戣揣闈㈢Н"  />
+        <el-table-column prop="18" label="缁撶畻鎬婚潰绉�"  />
+      </el-table>
+    </div>
+
+  </div>
+</template>
+
+<style scoped>
+.div-main{
+  width: 100%;
+  height: 100%;
+}
+#selectForm {
+  width: 70%;
+  text-align: center;
+}
+</style>
\ No newline at end of file
diff --git a/north-glass-erp/northglass-erp/src/views/pp/report/QualityReport.vue b/north-glass-erp/northglass-erp/src/views/pp/report/QualityReport.vue
new file mode 100644
index 0000000..9152a17
--- /dev/null
+++ b/north-glass-erp/northglass-erp/src/views/pp/report/QualityReport.vue
@@ -0,0 +1,104 @@
+<script lang="ts" setup>
+import {reactive, ref} from 'vue'
+
+
+
+
+const defaultTime = ref<[Date, Date]>([
+  new Date(2000, 1, 1, 0, 0, 0),
+  new Date(2000, 2, 1, 23, 59, 59),
+])
+// do not use same name with ref
+const form = reactive({
+  name: '',
+  region: '',
+  date1: '',
+  date2: '',
+  delivery: false,
+  type: [],
+  resource: '',
+  desc: '',
+})
+
+const value = ref('')
+const options = [
+  {
+    value: 'Option1',
+    label: 'Option1',
+  },
+  {
+    value: 'Option2',
+    label: 'Option2',
+  },
+  {
+    value: 'Option3',
+    label: 'Option3',
+  },
+]
+const tableData = [
+  {
+    1:'NG23022706',
+    2:'45',
+    3:'澶ф澘闀�',
+    4:'1',
+    5:'3mm 楂樻�ц兘鐜繚闀� 3660*2440',
+    6:'180 ',
+    7:'0',
+    8:'186',
+    9:'3',
+    10:'3',
+    11:'180',
+    12:'1.6129%',
+
+  },
+]
+</script>
+<!--鍝佽川鎶ヨ〃-->
+<template>
+  <div class="div-main">
+    <div id="selectForm">
+      <el-row :gutter="0">
+<!--        <el-input placeholder="瀹㈡埛鍚嶇О" v-model="form.name" style="width: 200px"/>-->
+        &nbsp;&nbsp;
+        <el-date-picker
+            v-model="form.date1"
+            type="daterange"
+            start-placeholder="寮�濮嬫椂闂�"
+            end-placeholder="缁撴潫鏃堕棿"
+            :default-time="defaultTime"
+        />
+        &nbsp;&nbsp;
+        <el-button type="primary">鏌ヨ</el-button>
+      </el-row>
+
+    </div>
+    <div>
+      <el-table :data="tableData" border style="width: 100%" height="100%">
+        <el-table-column prop="1" label="閿�鍞崟鍙�" />
+        <el-table-column prop="2" label="瀹㈡埛缂栫爜"/>
+        <el-table-column prop="3" label="椤圭洰鍚嶇О" :show-overflow-tooltip='true' />
+        <el-table-column prop="4" label="璁㈠崟搴忓彿" />
+        <el-table-column prop="5" label="浜у搧鍚嶇О" :show-overflow-tooltip='true'/>
+        <el-table-column prop="6" label="璁㈠崟鏁伴噺" />
+        <el-table-column prop="7" label="澶囩敤浠�"/>
+        <el-table-column prop="8" label="鎶曞叆鏁伴噺"/>
+        <el-table-column prop="9" label="娆$牬鏁伴噺" :show-overflow-tooltip='true' />
+        <el-table-column prop="10" label="甯冪墖鏁伴噺"  />
+        <el-table-column prop="11" label="鍏ュ簱鏁伴噺"  width="120px" />
+        <el-table-column prop="12" label="鎶ュ簾鐜�" :show-overflow-tooltip='true' width="150px" />
+      </el-table><!-- <h1>{{msg}}</h1> -->
+    </div>
+
+  </div>
+</template>
+
+<style scoped>
+.div-main{
+  width: 100%;
+  height: 100%;
+}
+#selectForm {
+  width: 70%;
+  text-align: center;
+}
+</style>
\ No newline at end of file
diff --git a/north-glass-erp/northglass-erp/src/views/pp/report/RawMaterialRequisition.vue b/north-glass-erp/northglass-erp/src/views/pp/report/RawMaterialRequisition.vue
new file mode 100644
index 0000000..196ca1d
--- /dev/null
+++ b/north-glass-erp/northglass-erp/src/views/pp/report/RawMaterialRequisition.vue
@@ -0,0 +1,103 @@
+<script lang="ts" setup>
+import {reactive, ref} from 'vue'
+
+
+
+
+const defaultTime = ref<[Date, Date]>([
+  new Date(2000, 1, 1, 0, 0, 0),
+  new Date(2000, 2, 1, 23, 59, 59),
+])
+// do not use same name with ref
+const form = reactive({
+  name: '',
+  region: '',
+  date1: '',
+  date2: '',
+  delivery: false,
+  type: [],
+  resource: '',
+  desc: '',
+})
+
+const value = ref('')
+const options = [
+  {
+    value: 'Option1',
+    label: 'Option1',
+  },
+  {
+    value: 'Option2',
+    label: 'Option2',
+  },
+  {
+    value: 'Option3',
+    label: 'Option3',
+  },
+]
+const tableData = [
+  {
+    1:'姝︽眽瀹夐摥鍗庝鲸鍩�',
+    2:'23绗�1鎵�',
+    3:'N0231210',
+    4:'骞抽挗',
+    5:'10mm瓒呯櫧UD60',
+    6:'灞变笢鍏ㄥ搧',
+    7:'3360',
+    8:'4567',
+    9:'6',
+    10:'22.76',
+    11:'2023-10-22',
+
+  },
+]
+</script>
+<!--鍘熺墖棰嗘枡-->
+<template>
+  <div class="div-main">
+    <div id="selectForm">
+      <el-row :gutter="0">
+<!--        <el-input placeholder="閿�鍞崟鍙�" v-model="form.name" style="width: 200px"/>-->
+<!--        <el-input placeholder="椤圭洰鍚嶇О" v-model="form.name" style="width: 200px"/>-->
+        &nbsp;&nbsp;
+        <el-date-picker
+            v-model="form.date1"
+            type="daterange"
+            start-placeholder="寮�濮嬫椂闂�"
+            end-placeholder="缁撴潫鏃堕棿"
+            :default-time="defaultTime"
+        />
+        &nbsp;&nbsp;
+        <el-button type="primary">鏌ヨ</el-button>
+      </el-row>
+
+    </div>
+    <div>
+      <el-table :data="tableData" border style="width: 100%" height="100%">
+        <el-table-column prop="1" label="椤圭洰鍚嶇О" :show-overflow-tooltip='true'/>
+        <el-table-column prop="2" label="鎵规"/>
+        <el-table-column prop="3" label="閿�鍞崟鍙�" :show-overflow-tooltip='true' />
+        <el-table-column prop="4" label="浜у搧绫诲瀷" />
+        <el-table-column prop="5" label="鐗╂枡鍚嶇О" :show-overflow-tooltip='true'/>
+        <el-table-column prop="6" label="鍘熺墖浜у湴" />
+        <el-table-column prop="7" label="瀹�"/>
+        <el-table-column prop="8" label="楂�"/>
+        <el-table-column prop="9" label="宸查鏁伴噺" :show-overflow-tooltip='true' />
+        <el-table-column prop="10" label="宸查闈㈢Н"  />
+        <el-table-column prop="11" label="鍘熺墖鐢熶骇鏃ユ湡"  width="120px" />
+      </el-table><!-- <h1>{{msg}}</h1> -->
+    </div>
+
+  </div>
+</template>
+
+<style scoped>
+.div-main{
+  width: 100%;
+  height: 100%;
+}
+#selectForm {
+  width: 70%;
+  text-align: center;
+}
+</style>
\ No newline at end of file
diff --git a/north-glass-erp/northglass-erp/src/views/pp/report/Report.vue b/north-glass-erp/northglass-erp/src/views/pp/report/Report.vue
new file mode 100644
index 0000000..b290dd6
--- /dev/null
+++ b/north-glass-erp/northglass-erp/src/views/pp/report/Report.vue
@@ -0,0 +1,106 @@
+<script setup>
+import {ref} from "vue";
+import {ArrowLeftBold, ArrowRight} from "@element-plus/icons-vue";
+import request from "@/utils/request";
+import deepClone from "@/utils/deepClone";
+import {ElMessage} from "element-plus";
+import {useRouter} from "vue-router";
+import  GlassType from '@/components/basic/product/GlassType.vue'
+
+
+
+const router = useRouter()
+let flag = $ref(true)
+let flag1 = $ref(true)
+function intoRelease(){
+  if(flag){
+    router.push('/main/Replenish/AddReplenish')
+  }else {
+    router.push('/main/Replenish/SelectReplenish')
+  }
+  flag=!flag
+}
+function intoAddWorkOrder(){
+  if(flag1){
+    router.push('/main/Replenish/PrintReplenishFlowCard')
+  }else {
+    router.push('/main/Replenish/SelectReplenish')
+  }
+  flag1=!flag1
+}
+</script>
+
+<template>
+  <div id="main">
+    <div id="div-title">
+<!--      <el-breadcrumb :separator-icon="ArrowRight">-->
+<!--        <el-breadcrumb-item :to="{ path: '/main/Replenish/SelectReplenish' }">绠$悊</el-breadcrumb-item>-->
+<!--        <el-breadcrumb-item :to="{ path: '/main/Replenish/AddReplenish' }">琛ョ墖鏂板</el-breadcrumb-item>-->
+<!--        <el-breadcrumb-item :to="{ path: '/main/Replenish/PrintReplenishFlowCard' }">琛ョ墖鎵撳嵃</el-breadcrumb-item>-->
+<!--        <el-breadcrumb-item :to="{ path: '/main/processCard/SelectPrintFlowCard' }" style="display: none">鎵撳嵃</el-breadcrumb-item>-->
+<!--      </el-breadcrumb>-->
+      <el-menu
+          class="el-menu-demo"
+          mode="horizontal"
+          :default-active="$route.path"
+          router
+
+      >
+
+        <el-sub-menu index="1">
+          <template #title>鐢熶骇鎶ヨ〃</template>
+          <el-menu-item index="/main/report/WorkInProgress">鍦ㄥ埗鍝佹姤琛�</el-menu-item>
+          <el-menu-item index="/main/report/ProcessToBeCompleted">宸ュ簭寰呭畬鎴�</el-menu-item>
+          <el-menu-item index="/main/report/ProductionSchedule">鐢熶骇鍙戣揣杩涘害</el-menu-item>
+          <el-menu-item index="/main/report/OrderPlanDecomposition">璁㈠崟璁″垝鍒嗚В</el-menu-item>
+        </el-sub-menu>
+        <el-sub-menu  index="2" popper-class="test">
+          <template #title>浜ч噺鎶ヨ〃</template>
+          <el-menu-item index="/main/report/TeamOutput">鐝粍浜ч噺</el-menu-item>
+          <el-menu-item index="/main/report/EquipmentOutput">璁惧浜ч噺</el-menu-item>
+        </el-sub-menu>
+        <el-menu-item  index="/main/report/DamageReport">娆$牬鎶ヨ〃</el-menu-item>
+        <el-menu-item  index="/main/report/SplittingDetailsOutside">鍒嗘灦鏄庣粏</el-menu-item>
+        <el-menu-item  index="/main/report/TaskCompletionStatus">浠诲姟瀹屾垚鎯呭喌</el-menu-item>
+        <el-menu-item  index="/main/report/RawMaterialRequisition">鍘熺墖棰嗘枡</el-menu-item>
+        <el-menu-item  index="/main/report/QualityReport">鍝佽川鎶ヨ〃</el-menu-item>
+        <el-menu-item  index="/main/report/Yield">鎴愬搧鐜囨姤琛�</el-menu-item>
+        <el-menu-item  index="/main/report/OrderBOMOutside">BOM鎶ヨ〃</el-menu-item>
+      </el-menu>
+    </div>
+
+    <div id="main-body">
+      <router-view  />
+    </div>
+  </div>
+</template>
+
+<style scoped>
+#main{
+  width: 100%;
+  height: 100%;
+}
+
+.el-menu-demo{
+  height: 40px;
+}
+
+
+#div-title{
+  height: 5%;
+  width: 100%;
+}
+#searchButton{
+  margin-top: -5px;
+  margin-left: 1rem;
+}
+#searchButton1{
+//margin-left: 10rem;
+}
+/*main-body鏍峰紡*/
+#main-body{
+  width: 99%;
+  height: 92%;
+  margin-top: 1%;
+}
+</style>
\ No newline at end of file
diff --git a/north-glass-erp/northglass-erp/src/views/pp/report/SplittingDetailsOutside.vue b/north-glass-erp/northglass-erp/src/views/pp/report/SplittingDetailsOutside.vue
new file mode 100644
index 0000000..8be36a5
--- /dev/null
+++ b/north-glass-erp/northglass-erp/src/views/pp/report/SplittingDetailsOutside.vue
@@ -0,0 +1,96 @@
+<script lang="ts" setup>
+import {reactive, ref} from 'vue'
+
+
+
+
+const defaultTime = ref<[Date, Date]>([
+  new Date(2000, 1, 1, 0, 0, 0),
+  new Date(2000, 2, 1, 23, 59, 59),
+])
+// do not use same name with ref
+const form = reactive({
+  name: '',
+  region: '',
+  date1: '',
+  date2: '',
+  delivery: false,
+  type: [],
+  resource: '',
+  desc: '',
+})
+
+const value = ref('')
+const options = [
+  {
+    value: 'Option1',
+    label: 'Option1',
+  },
+  {
+    value: 'Option2',
+    label: 'Option2',
+  },
+  {
+    value: 'Option3',
+    label: 'Option3',
+  },
+]
+const tableData = [
+  {
+    1:'NG23120702A01',
+    2:'8',
+    3:'1',
+    4:'閾堕殕骞垮満',
+    5:'琛�8',
+    6:'J8-B1-BD-BL1-009 ',
+    7:'1764',
+    8:'2466',
+    9:'5',
+    10:'23.13',
+    11:'鏅舰',
+    12:'',
+
+  },
+]
+</script>
+<!--鍒嗘灦鏄庣粏-->
+<template>
+  <div class="div-main">
+    <div id="selectForm">
+      <el-row :gutter="0">
+        <el-input placeholder="閿�鍞崟鍙�" v-model="form.name" style="width: 200px"/>
+        &nbsp;&nbsp;
+        <el-button type="primary">鏌ヨ</el-button>
+      </el-row>
+
+    </div>
+    <div>
+      <el-table :data="tableData" border style="width: 100%" height="100%">
+        <el-table-column prop="1" label="娴佺▼鍗″彿" width="130px"/>
+        <el-table-column prop="2" label="搴忓彿"/>
+        <el-table-column prop="3" label="钀芥灦椤哄簭" :show-overflow-tooltip='true' />
+        <el-table-column prop="4" label="椤圭洰鍚嶇О" />
+        <el-table-column prop="5" label="鎵规" />
+        <el-table-column prop="6" label="妤煎眰缂栧彿" :show-overflow-tooltip='true' />
+        <el-table-column prop="7" label="瀹�"/>
+        <el-table-column prop="8" label="楂�"/>
+        <el-table-column prop="9" label="鏁伴噺" :show-overflow-tooltip='true' />
+        <el-table-column prop="10" label="闈㈢Н"  />
+        <el-table-column prop="11" label="褰㈢姸"   />
+        <el-table-column prop="12" label="澶囨敞" :show-overflow-tooltip='true' width="150px" />
+      </el-table><!-- <h1>{{msg}}</h1> -->
+    </div>
+
+  </div>
+</template>
+
+<style scoped>
+.div-main{
+  width: 100%;
+  height: 100%;
+}
+#selectForm {
+  width: 70%;
+  text-align: center;
+}
+</style>
\ No newline at end of file
diff --git a/north-glass-erp/northglass-erp/src/views/pp/report/TaskCompletionStatus.vue b/north-glass-erp/northglass-erp/src/views/pp/report/TaskCompletionStatus.vue
new file mode 100644
index 0000000..91a7aed
--- /dev/null
+++ b/north-glass-erp/northglass-erp/src/views/pp/report/TaskCompletionStatus.vue
@@ -0,0 +1,118 @@
+<script lang="ts" setup>
+import {reactive, ref} from 'vue'
+
+
+
+
+const defaultTime = ref<[Date, Date]>([
+  new Date(2000, 1, 1, 0, 0, 0),
+  new Date(2000, 2, 1, 23, 59, 59),
+])
+// do not use same name with ref
+const form = reactive({
+  name: '',
+  region: '',
+  date1: '',
+  date2: '',
+  delivery: false,
+  type: [],
+  resource: '',
+  desc: '',
+})
+
+const value = ref('')
+const options = [
+  {
+    value: 'Option1',
+    label: 'Option1',
+  },
+  {
+    value: 'Option2',
+    label: 'Option2',
+  },
+  {
+    value: 'Option3',
+    label: 'Option3',
+  },
+]
+const tableData = [
+  {
+    1:'瑗垮畨楂樼骞曞闂ㄧ獥鏈夐檺鍏徃   ',
+    2:'閾堕殕骞垮満',
+    3:'琛�8',
+    4:'NG23120702',
+    5:'涓┖鐜荤拑',
+    6:'鍙屽钩閽腑绌�',
+    7:'1',
+    8:'1.88',
+    9:'',
+    10:'',
+    11:'2023-12-17',
+    12:'5',
+    13:'5',
+    14:'5',
+
+  },
+]
+</script>
+<!--浠诲姟瀹屾垚鎯呭喌-->
+<template>
+  <div class="div-main">
+    <div id="selectForm">
+      <el-row :gutter="0">
+<!--        <el-input placeholder="閿�鍞崟鍙�" v-model="form.name" style="width: 150px"/>-->
+<!--        <el-input placeholder="椤圭洰鍚嶇О" v-model="form.name" style="width: 150px"/>-->
+        &nbsp;&nbsp;
+        <el-date-picker
+            v-model="form.date1"
+            type="daterange"
+            start-placeholder="寮�濮嬫椂闂�"
+            end-placeholder="缁撴潫鏃堕棿"
+            :default-time="defaultTime"
+            style="width: 120px"
+        />
+        &nbsp;&nbsp;
+        <el-select v-model="value" class="m-2" placeholder="鏌ヨ绫诲瀷">
+          <el-option
+              v-for="item in options"
+              :key="item.value"
+              :label="item.label"
+              :value="item.value"
+          />
+        </el-select>
+        <el-button type="primary">鏌ヨ</el-button>
+      </el-row>
+
+    </div>
+    <div>
+      <el-table :data="tableData" border style="width: 100%" height="100%">
+        <el-table-column prop="1" label="瀹㈡埛鍚嶇О" :show-overflow-tooltip='true'/>
+        <el-table-column prop="2" label="椤圭洰鍚嶇О" :show-overflow-tooltip='true'/>
+        <el-table-column prop="3" label="鎵规" :show-overflow-tooltip='true' />
+        <el-table-column prop="4" label="閿�鍞崟鍙�" width="120px" />
+        <el-table-column prop="5" label="浜у搧澶х被" />
+        <el-table-column prop="6" label="浜у搧灏忕被" width="120px"/>
+        <el-table-column prop="7" label="璁㈠崟鏁�"/>
+        <el-table-column prop="8" label="鎬婚潰绉�"/>
+        <el-table-column prop="9" label="鍙戣揣鏁伴噺" :show-overflow-tooltip='true' />
+        <el-table-column prop="10" label="鍙戣揣闈㈢Н"  />
+        <el-table-column prop="11" label="鎶ヨ〃鏃ユ湡"  width="120px" />
+        <el-table-column prop="12" label="鍒囧壊"  />
+        <el-table-column prop="13" label="纾ㄨ竟"  />
+        <el-table-column prop="14" label="閽㈠寲"  />
+      </el-table><!-- <h1>{{msg}}</h1> -->
+    </div>
+
+  </div>
+</template>
+
+<style scoped>
+.div-main{
+  width: 100%;
+  height: 100%;
+}
+#selectForm {
+  width: 70%;
+  text-align: center;
+}
+</style>
\ No newline at end of file
diff --git a/north-glass-erp/northglass-erp/src/views/pp/report/TeamOutput.vue b/north-glass-erp/northglass-erp/src/views/pp/report/TeamOutput.vue
new file mode 100644
index 0000000..3472b52
--- /dev/null
+++ b/north-glass-erp/northglass-erp/src/views/pp/report/TeamOutput.vue
@@ -0,0 +1,120 @@
+<script lang="ts" setup>
+import {reactive, ref} from 'vue'
+
+
+
+
+const defaultTime = ref<[Date, Date]>([
+  new Date(2000, 1, 1, 0, 0, 0),
+  new Date(2000, 2, 1, 23, 59, 59),
+])
+// do not use same name with ref
+const form = reactive({
+  name: '',
+  region: '',
+  date1: '',
+  date2: '',
+  delivery: false,
+  type: [],
+  resource: '',
+  desc: '',
+})
+
+const value = ref('')
+const options = [
+  {
+    value: 'Option1',
+    label: 'Option1',
+  },
+  {
+    value: 'Option2',
+    label: 'Option2',
+  },
+  {
+    value: 'Option3',
+    label: 'Option3',
+  },
+]
+const tableData = [
+  {
+    1:'2023-01-01',
+    2:'閽㈠寲',
+    3:'閽㈠寲涓�鐝�',
+    4:'閾跺窛澶фゼ',
+    5:'NG23010121A01',
+    6:'涓┖鐜荤拑',
+    7:'骞充腑绌哄す鑳�',
+    8:'5mmLYE-70骞抽挗(澶�)+20mmA(瀵�)+5mm瓒呯櫧骞抽挗(鍐�)',
+    9:'绮剧(',
+    10:'鏅瀷',
+    11:'5',
+    12:'11',
+    13:'41.14',
+    14:'123.33',
+    15:'',
+
+  },
+]
+</script>
+<!--鐝粍浜ч噺-->
+<template>
+  <div class="div-main">
+    <div id="selectForm">
+      <el-row :gutter="0">
+<!--        <el-input placeholder="鐝粍鍚嶇О" v-model="form.name" style="width: 150px"/>-->
+<!--        <el-input placeholder="鍘氬害" v-model="form.name" style="width: 50px"/>-->
+        &nbsp;&nbsp;
+        <el-date-picker
+            v-model="form.date1"
+            type="daterange"
+            start-placeholder="寮�濮嬫椂闂�"
+            end-placeholder="缁撴潫鏃堕棿"
+            :default-time="defaultTime"
+        />
+        &nbsp;&nbsp;
+        <el-select v-model="value" class="m-2" placeholder="鏌ヨ绫诲瀷">
+          <el-option
+              v-for="item in options"
+              :key="item.value"
+              :label="item.label"
+              :value="item.value"
+              style="width: 100px"
+          />
+        </el-select>
+        <el-button type="primary">鏌ヨ</el-button>
+      </el-row>
+
+    </div>
+    <div>
+      <el-table :data="tableData" border style="width: 100%" height="100%">
+        <el-table-column prop="1" label="鎶ュ伐鏃堕棿" width="100px"  />
+        <el-table-column prop="2" label="宸ュ簭"/>
+        <el-table-column prop="3" label="鐝粍鍚嶇О" width="100px" :show-overflow-tooltip='true' />
+        <el-table-column prop="4" label="椤圭洰鍚嶇О" width="100px"  :show-overflow-tooltip='true'/>
+        <el-table-column prop="5" label="娴佺▼鍗″彿" width="130px"/>
+        <el-table-column prop="6" label="浜у搧澶х被" width="100px"/>
+        <el-table-column prop="7" label="浜у搧灏忕被" width="100px"/>
+        <el-table-column prop="8" label="鍦ㄥ埗鍝佸悕绉�"  width="120px" :show-overflow-tooltip='true'/>
+        <el-table-column prop="9" label="纾ㄨ竟绫诲瀷" width="90px" :show-overflow-tooltip='true' />
+        <el-table-column prop="10" label="褰㈢姸"  />
+        <el-table-column prop="11" label="鍘氬害"  />
+        <el-table-column prop="12" label="瀹屽伐鏁伴噺" :show-overflow-tooltip='true' width="100px" />
+        <el-table-column prop="13" label="瀹屽伐闈㈢Н"  width="100px"/>
+        <el-table-column prop="14" label="骞虫柟姣背"  width="100px"/>
+        <el-table-column prop="15" label="鍖呰鏂瑰紡"  width="100px"/>
+      </el-table><!-- <h1>{{msg}}</h1> -->
+    </div>
+
+  </div>
+</template>
+
+<style scoped>
+.div-main{
+  width: 100%;
+  height: 100%;
+}
+#selectForm {
+  width: 70%;
+  text-align: center;
+}
+</style>
\ No newline at end of file
diff --git a/north-glass-erp/northglass-erp/src/views/pp/report/WorkInProgress.vue b/north-glass-erp/northglass-erp/src/views/pp/report/WorkInProgress.vue
new file mode 100644
index 0000000..498b347
--- /dev/null
+++ b/north-glass-erp/northglass-erp/src/views/pp/report/WorkInProgress.vue
@@ -0,0 +1,124 @@
+<script lang="ts" setup>
+import {reactive, ref} from 'vue'
+
+
+
+
+const defaultTime = ref<[Date, Date]>([
+  new Date(2000, 1, 1, 0, 0, 0),
+  new Date(2000, 2, 1, 23, 59, 59),
+])
+// do not use same name with ref
+const form = reactive({
+  name: '',
+  region: '',
+  date1: '',
+  date2: '',
+  delivery: false,
+  type: [],
+  resource: '',
+  desc: '',
+})
+
+const value = ref('')
+const options = [
+  {
+    value: 'Option1',
+    label: 'Option1',
+  },
+  {
+    value: 'Option2',
+    label: 'Option2',
+  },
+  {
+    value: 'Option3',
+    label: 'Option3',
+  },
+]
+const tableData = [
+  {
+    1:'纾ㄨ竟',
+    2:'NG22091906A02/1',
+    3:'涓浗寤虹瓚瑁呴グ闆嗗洟鏈夐檺鍏徃',
+    4:'閾跺窛缁垮湴涓績鍗楀(25鎵�2)',
+    5:'25鎵�2',
+    6:'褰㈢姸',
+    7:'2',
+    8:'25-BL19',
+    9:'鍒囧壊->闀�鑶�->纾ㄨ竟->閽㈠寲->鍖呰',
+    10:'40',
+    11:'1345',
+    12:'1556',
+    13:'1',
+    14:'1.99',
+    15:'8mm瓒呯櫧銆怢YTM-46銆戝钩閽�',
+    16:'8mm瓒呯櫧銆怢YTM-46銆戝钩閽�',
+    17:'0',
+
+  },
+]
+</script>
+<!--鍦ㄥ埗鍝佹姤琛�-->
+<template>
+  <div class="div-main">
+    <div id="selectForm">
+      <el-row :gutter="0">
+<!--        <el-input placeholder="閿�鍞崟鍙�" v-model="form.name" style="width: 150px"/>-->
+<!--        <el-input placeholder="椤圭洰鍚嶇О" v-model="form.name" style="width: 150px"/>-->
+        &nbsp;&nbsp;
+        <el-date-picker
+            v-model="form.date1"
+            type="daterange"
+            start-placeholder="寮�濮嬫椂闂�"
+            end-placeholder="缁撴潫鏃堕棿"
+            :default-time="defaultTime"
+            style="width: 100px"
+        />
+        &nbsp;&nbsp;
+        <el-select v-model="value" class="m-2" placeholder="鏌ヨ绫诲瀷">
+          <el-option
+              v-for="item in options"
+              :key="item.value"
+              :label="item.label"
+              :value="item.value"
+          />
+        </el-select>
+        <el-button type="primary">鏌ヨ</el-button>
+      </el-row>
+
+    </div>
+    <div>
+      <el-table :data="tableData" border style="width: 100%" height="100%">
+        <el-table-column prop="1" label="宸ュ簭" />
+        <el-table-column prop="2" label="娴佺▼鍗″彿" width="120px" :show-overflow-tooltip='true'/>
+        <el-table-column prop="3" label="瀹㈡埛鍚嶇О" width="120px" :show-overflow-tooltip='true' />
+        <el-table-column prop="4" label="椤圭洰鍚嶇О" width="120px" :show-overflow-tooltip='true'/>
+        <el-table-column prop="5" label="鎵规" />
+        <el-table-column prop="6" label="搴忓彿" />
+        <el-table-column prop="7" label="褰㈢姸"/>
+        <el-table-column prop="8" label="妤煎眰缂栧彿" width="120px" :show-overflow-tooltip='true'/>
+        <el-table-column prop="9" label="宸ヨ壓娴佺▼" width="120px" :show-overflow-tooltip='true' />
+        <el-table-column prop="10" label="璁㈠崟鏁�"  />
+        <el-table-column prop="11" label="瀹�"   />
+        <el-table-column prop="12" label="楂�" :show-overflow-tooltip='true' />
+        <el-table-column prop="13" label="搴撳瓨鏁�"  />
+        <el-table-column prop="14" label="搴撳瓨闈㈢Н"  width="100px"/>
+        <el-table-column prop="15" label="鎴愬搧鍚嶇О" width="120px"  :show-overflow-tooltip='true'/>
+        <el-table-column prop="16" label="鍦ㄥ埗鍝佸悕绉�"  width="120px" :show-overflow-tooltip='true'/>
+        <el-table-column prop="17" label="寮挗鍗婂緞"  width="100px"/>
+      </el-table><!-- <h1>{{msg}}</h1> -->
+    </div>
+
+  </div>
+</template>
+
+<style scoped>
+.div-main{
+  width: 100%;
+  height: 100%;
+}
+#selectForm {
+  width: 70%;
+  text-align: center;
+}
+</style>
\ No newline at end of file
diff --git a/north-glass-erp/northglass-erp/src/views/pp/report/Yield.vue b/north-glass-erp/northglass-erp/src/views/pp/report/Yield.vue
new file mode 100644
index 0000000..0796907
--- /dev/null
+++ b/north-glass-erp/northglass-erp/src/views/pp/report/Yield.vue
@@ -0,0 +1,105 @@
+<script lang="ts" setup>
+import {reactive, ref} from 'vue'
+
+
+
+
+const defaultTime = ref<[Date, Date]>([
+  new Date(2000, 1, 1, 0, 0, 0),
+  new Date(2000, 2, 1, 23, 59, 59),
+])
+// do not use same name with ref
+const form = reactive({
+  name: '',
+  region: '',
+  date1: '',
+  date2: '',
+  delivery: false,
+  type: [],
+  resource: '',
+  desc: '',
+})
+
+const value = ref('')
+const options = [
+  {
+    value: 'Option1',
+    label: 'Option1',
+  },
+  {
+    value: 'Option2',
+    label: 'Option2',
+  },
+  {
+    value: 'Option3',
+    label: 'Option3',
+  },
+]
+const tableData = [
+  {
+    1:'澶瑰眰',
+    2:'NG23103001',
+    3:'鎱曢潚鏂囧寲',
+    4:'10mmLYTM-140寮挗鍖�(澶�)+2.28PVB閫忔槑+10mm鐧界幓寮挗鍖�(鍐�)',
+    5:'256.67',
+    6:'7.94',
+    7:'264.61',
+    8:'97.0%',
+
+  },
+]
+</script>
+<!--鎴愬搧鐜囨姤琛�-->
+<template>
+  <div class="div-main">
+    <div id="selectForm">
+      <el-row :gutter="0">
+<!--        <el-input placeholder="宸ュ簭" v-model="form.name" style="width: 100px"/>-->
+<!--        <el-input placeholder="瀹㈡埛鍚嶇О" v-model="form.name" style="width: 120px"/>-->
+        &nbsp;&nbsp;
+        <el-date-picker
+            v-model="form.date1"
+            type="daterange"
+            start-placeholder="寮�濮嬫椂闂�"
+            end-placeholder="缁撴潫鏃堕棿"
+            :default-time="defaultTime"
+        />
+        &nbsp;&nbsp;
+        <el-select v-model="value" class="m-2" placeholder="鏌ヨ绫诲瀷">
+          <el-option
+              v-for="item in options"
+              :key="item.value"
+              :label="item.label"
+              :value="item.value"
+          />
+        </el-select>
+        <el-button type="primary">鏌ヨ</el-button>
+      </el-row>
+
+    </div>
+    <div>
+      <el-table :data="tableData" border style="width: 100%" height="100%">
+        <el-table-column prop="1" label="宸ュ簭" />
+        <el-table-column prop="2" label="閿�鍞崟鍙�"/>
+        <el-table-column prop="3" label="瀹㈡埛鍚嶇О" :show-overflow-tooltip='true' />
+        <el-table-column prop="4" label="鎴愬搧鍚嶇О"  :show-overflow-tooltip='true'/>
+        <el-table-column prop="5" label="瀹屽伐闈㈢Н" />
+        <el-table-column prop="6" label="娆$牬闈㈢Н" />
+        <el-table-column prop="7" label="鎬婚潰绉�"/>
+        <el-table-column prop="8" label="鎴愬搧鐜�"/>
+      </el-table><!-- <h1>{{msg}}</h1> -->
+    </div>
+
+  </div>
+</template>
+
+<style scoped>
+.div-main{
+  width: 100%;
+  height: 100%;
+}
+#selectForm {
+  width: 70%;
+  text-align: center;
+}
+</style>
\ No newline at end of file
diff --git a/north-glass-erp/northglass-erp/src/views/pp/reportingWorks/AddReportingWork.vue b/north-glass-erp/northglass-erp/src/views/pp/reportingWorks/AddReportingWork.vue
new file mode 100644
index 0000000..686d4b1
--- /dev/null
+++ b/north-glass-erp/northglass-erp/src/views/pp/reportingWorks/AddReportingWork.vue
@@ -0,0 +1,259 @@
+<script setup>
+import { reactive } from 'vue'
+import {Open} from "@element-plus/icons-vue";
+
+// do not use same name with ref
+const form = reactive({
+  lckh:'',
+})
+
+const tableData = [
+  {
+    serialNumber:'1',
+    singlePieceName: '6mm鐧界幓骞抽挗(澶�)',
+    marking: '1',
+    pieces: '(澶�)',
+    processCardNumber: '11',
+    width: '575',
+    height:"2241",
+    shape: '鏅舰',
+    upCompletedQuantity: '12',
+    completedQuantity: '1',
+    numberBroken:'',
+    availableUse:'',
+    returnProcess:'',
+
+    reasonType: '鏈哄櫒',
+    reasonDamage:'姘旀场瓒呮爣',
+    available:'',
+    reworkProcess:'',
+    responsibilityProcess:'涓┖',
+    responsibilityTeams:'涓┖涓�鐝�',
+    responsibilityPersonnel:'',
+    responsibilityDevice:'涓┖3#绾�',
+    completed:'',
+    onceBroken:'',
+  },
+  {
+    serialNumber:'1',
+    singlePieceName: '6mm鐧界幓骞抽挗(鍐�)',
+    marking: '2',
+    pieces: '(鍐�)',
+    processCardNumber: '11',
+    width: '575',
+    height:"2241",
+    shape: '鏅舰',
+    upCompletedQuantity: '12',
+    completedQuantity: '1',
+    numberBroken:'',
+    availableUse:'',
+    returnProcess:'',
+
+    reasonType: '鏈哄櫒',
+    reasonDamage:'姘旀场瓒呮爣',
+    available:'',
+    reworkProcess:'',
+    responsibilityProcess:'涓┖',
+    responsibilityTeams:'涓┖涓�鐝�',
+    responsibilityPersonnel:'',
+    responsibilityDevice:'涓┖3#绾�',
+    completed:'',
+    onceBroken:'',
+  },
+  {
+    serialNumber:'2',
+    singlePieceName: '8mm鐧界幓骞抽挗(澶�)',
+    marking: '1',
+    pieces: '(澶�)',
+    processCardNumber: '11',
+    width: '575',
+    height:"2241",
+    shape: '鏅舰',
+    upCompletedQuantity: '12',
+    completedQuantity: '1',
+    numberBroken:'',
+    availableUse:'',
+    returnProcess:'',
+
+    reasonType: '鏈哄櫒',
+    reasonDamage:'姘旀场瓒呮爣',
+    available:'',
+    reworkProcess:'',
+    responsibilityProcess:'涓┖',
+    responsibilityTeams:'涓┖涓�鐝�',
+    responsibilityPersonnel:'',
+    responsibilityDevice:'涓┖3#绾�',
+    completed:'',
+    onceBroken:'',
+  },
+  {
+    serialNumber:'2',
+    singlePieceName: '8mm鐧界幓骞抽挗(鍐�)',
+    marking: '2',
+    pieces: '(鍐�)',
+    processCardNumber: '11',
+    width: '575',
+    height:"2241",
+    shape: '鏅舰',
+    upCompletedQuantity: '12',
+    completedQuantity: '1',
+    numberBroken:'',
+    availableUse:'',
+    returnProcess:'',
+
+    reasonType: '鏈哄櫒',
+    reasonDamage:'姘旀场瓒呮爣',
+    available:'',
+    reworkProcess:'',
+    responsibilityProcess:'涓┖',
+    responsibilityTeams:'涓┖涓�鐝�',
+    responsibilityPersonnel:'',
+    responsibilityDevice:'涓┖3#绾�',
+    completed:'',
+    onceBroken:'',
+  },
+]
+</script>
+
+<template>
+<div>
+  <div id="head">
+    <el-input placeholder="娴佺▼鍗″彿" v-model="form.name" style="width: 200px"/>
+    &nbsp;
+
+    <select class="processesSt">
+      <option>鎶ュ伐宸ュ簭</option>
+      <option value="鍒囧壊">鍒囧壊</option>
+      <option value="纾ㄨ竟">纾ㄨ竟</option>
+      <option value="閽㈠寲">閽㈠寲</option>
+    </select>
+    &nbsp;
+    <el-button type="primary">瀹℃牳閫氳繃</el-button>
+    <el-button type="primary">瀹℃牳涓嶉�氳繃</el-button>
+    &nbsp;
+    <label>娴佺▼鍗¢潰绉細xxx骞虫柟绫�</label>
+  </div>
+  <div>
+    <table id="titleTable" style="border: 1px solid black;">
+      <tr>
+        <td>閿�鍞崟鍙�</td>
+        <td>NG23120801</td>
+        <td>鐢熶骇璁㈠崟鍙�</td>
+        <td>NG23120801A</td>
+        <td>瀹㈡埛缂栫爜</td>
+        <td>123213</td>
+        <td>瀹㈡埛鍚嶇О</td>
+        <td>xxxx</td>
+        <td>椤圭洰鍚嶇О</td>
+        <td>xxxxxxx</td>
+      </tr>
+      <tr>
+        <td>鎶ュ伐璁惧</td>
+        <td>涓┖涓�绾�</td>
+        <td>涓婂伐搴�</td>
+        <td>閽㈠寲</td>
+        <td>鍙姤宸ユ暟閲�</td>
+        <td>12</td>
+        <td>鏈伐搴忓畬宸�</td>
+        <td>11</td>
+        <td>鏈伐搴忔鐮�</td>
+        <td>1</td>
+      </tr>
+      <tr>
+        <td>鎶ュ伐鐝粍</td>
+        <td>涓┖涓�鐝�</td>
+        <td>鐝</td>
+        <td>鏃╃彮</td>
+        <td>涓嬪伐搴�</td>
+        <td>鍖呰</td>
+        <td>鎶ュ伐鏃堕棿</td>
+        <td><input class="chaxun" id="bgsj" maxlength="255"  type="datetime-local" name="bgsj"></td>
+        <td>澶囨敞</td>
+        <td>1</td>
+      </tr>
+      <tr>
+        <td></td>
+        <td></td>
+        <td><el-button  type="primary">淇濆瓨</el-button></td>
+        <td><el-button  type="primary">淇濆瓨骞跺鏍�</el-button></td>
+        <td><el-button  type="primary">娓呯┖鎶ュ伐鏁伴噺</el-button></td>
+        <td><el-button  type="primary">瀹屽伐鐩稿悓</el-button></td>
+        <td><el-button  type="primary">娆$牬鐩稿悓</el-button></td>
+
+        <td><el-button  type="primary">瀹屽伐涓�鍒楃浉鍚�</el-button></td>
+        <td><el-button  type="primary">娆$牬涓�鍒楃浉鍚�</el-button></td>
+        <td><el-button  type="primary">鏄惁鍏佽</el-button></td>
+      </tr>
+    </table>
+  </div>
+  <div>
+    <el-table :data="tableData" border style="width: 100%" height="100%">
+      <el-table-column  prop="serialNumber" label="搴忓彿" width="60" />
+      <el-table-column prop="singlePieceName" :show-overflow-tooltip='true' label="鍗曠墖鍚嶇О" width="120" />
+      <el-table-column prop="marking" label="鏍囪" width="60" />
+      <el-table-column prop="pieces" label="鐗囨爣璁�" width="70" />
+      <el-table-column prop="processCardNumber" label="娴佺▼鍗℃暟閲�" width="95" />
+      <el-table-column prop="width" label="瀹�" width="60" />
+      <el-table-column prop="height" label="楂�" width="60" />
+      <el-table-column prop="shape" label="褰㈢姸" :show-overflow-tooltip='true' width="60" />
+      <el-table-column prop="upCompletedQuantity" label="涓婂伐瀹屽伐鏁伴噺" width="110" />
+      <el-table-column prop="completedQuantity" label="瀹屽伐鏁伴噺" width="85" />
+      <el-table-column prop="numberBroken" label="娆$牬鏁伴噺" width="85" />
+      <el-table-column prop="availableUse" label="鍙埄鐢�" width="70" />
+      <el-table-column prop="returnProcess" label="閫�鍥炲伐搴�" width="85" />
+      <el-table-column prop="reasonType" label="娆$牬绫诲瀷" :show-overflow-tooltip='true' width="85" />
+      <el-table-column prop="reasonDamage" label="娆$牬鍘熷洜" :show-overflow-tooltip='true' width="85" />
+      <el-table-column prop="responsibilityDevice" label="璐d换璁惧" :show-overflow-tooltip='true' width="85" />
+      <el-table-column prop="responsibilityProcess" label="璐d换宸ュ簭" :show-overflow-tooltip='true' width="85" />
+      <el-table-column prop="responsibilityTeams" label="璐d换鐝粍" :show-overflow-tooltip='true' width="85" />
+      <el-table-column prop="responsibilityPersonnel" label="璐d换浜哄憳" :show-overflow-tooltip='true' width="85" />
+      <el-table-column prop="completed" label="宸插畬宸�" width="90" />
+      <el-table-column prop="onceBroken" label="宸叉鐮�" width="90" />
+
+
+
+
+
+    </el-table><!-- <h1>{{msg}}</h1> -->
+  </div>
+</div>
+</template>
+
+<style scoped>
+
+.processCard{
+  width: 140px;
+}
+.processesSt{
+  height: 33px;
+  width: 80px;
+  background-color: #409eff;
+  color: white;
+  border: none;
+  border-radius: 5px;
+}
+#titleTable tr,#titleTable td{
+  border: 1px solid #000;
+}
+#titleTable{
+  border-collapse: collapse;
+  text-align: center;
+  width: 100%;
+  height: 100%;
+}
+#titleTable td{
+  width: 100px;
+  height: 30px;
+}
+#titleTable td:nth-child(1){
+  width: 100px;
+  height: 30px;
+}
+#titleTable td:nth-child(2){
+  width: 100px;
+}
+.chaxun{
+  background-color:#D5EAFF;
+  border: none;
+}
+</style>
\ No newline at end of file
diff --git a/north-glass-erp/northglass-erp/src/views/pp/reportingWorks/QualityInReviewDetail.vue b/north-glass-erp/northglass-erp/src/views/pp/reportingWorks/QualityInReviewDetail.vue
new file mode 100644
index 0000000..860e8fe
--- /dev/null
+++ b/north-glass-erp/northglass-erp/src/views/pp/reportingWorks/QualityInReviewDetail.vue
@@ -0,0 +1,192 @@
+<script setup>
+import { reactive } from 'vue'
+
+// do not use same name with ref
+const form = reactive({
+  lckh:'',
+})
+
+const tableData = [
+  {
+    serialNumber:'1',
+    singlePieceName: '6mm鐧界幓骞抽挗(澶�)',
+    marking: '1',
+    pieces: '(澶�)',
+    processCardNumber: '11',
+    width: '575',
+    height:"2241",
+    shape: '鏅舰',
+    upCompletedQuantity: '12',
+    completedQuantity: '1',
+    numberBroken:'',
+    availableUse:'',
+    returnProcess:'',
+
+    reasonType: '鏈哄櫒',
+    reasonDamage:'姘旀场瓒呮爣',
+    available:'',
+    reworkProcess:'',
+    responsibilityProcess:'涓┖',
+    responsibilityTeams:'涓┖涓�鐝�',
+    responsibilityPersonnel:'',
+    responsibilityDevice:'涓┖3#绾�',
+    completed:'',
+    onceBroken:'',
+  },
+  {
+    serialNumber:'1',
+    singlePieceName: '6mm鐧界幓骞抽挗(鍐�)',
+    marking: '2',
+    pieces: '(鍐�)',
+    processCardNumber: '11',
+    width: '575',
+    height:"2241",
+    shape: '鏅舰',
+    upCompletedQuantity: '12',
+    completedQuantity: '1',
+    numberBroken:'',
+    availableUse:'',
+    returnProcess:'',
+
+    reasonType: '鏈哄櫒',
+    reasonDamage:'姘旀场瓒呮爣',
+    available:'',
+    reworkProcess:'',
+    responsibilityProcess:'涓┖',
+    responsibilityTeams:'涓┖涓�鐝�',
+    responsibilityPersonnel:'',
+    responsibilityDevice:'涓┖3#绾�',
+    completed:'',
+    onceBroken:'',
+  },
+  {
+    serialNumber:'2',
+    singlePieceName: '8mm鐧界幓骞抽挗(澶�)',
+    marking: '1',
+    pieces: '(澶�)',
+    processCardNumber: '11',
+    width: '575',
+    height:"2241",
+    shape: '鏅舰',
+    upCompletedQuantity: '12',
+    completedQuantity: '1',
+    numberBroken:'',
+    availableUse:'',
+    returnProcess:'',
+
+    reasonType: '鏈哄櫒',
+    reasonDamage:'姘旀场瓒呮爣',
+    available:'',
+    reworkProcess:'',
+    responsibilityProcess:'涓┖',
+    responsibilityTeams:'涓┖涓�鐝�',
+    responsibilityPersonnel:'',
+    responsibilityDevice:'涓┖3#绾�',
+    completed:'',
+    onceBroken:'',
+  },
+  {
+    serialNumber:'2',
+    singlePieceName: '8mm鐧界幓骞抽挗(鍐�)',
+    marking: '2',
+    pieces: '(鍐�)',
+    processCardNumber: '11',
+    width: '575',
+    height:"2241",
+    shape: '鏅舰',
+    upCompletedQuantity: '12',
+    completedQuantity: '1',
+    numberBroken:'',
+    availableUse:'',
+    returnProcess:'',
+
+    reasonType: '鏈哄櫒',
+    reasonDamage:'姘旀场瓒呮爣',
+    available:'',
+    reworkProcess:'',
+    responsibilityProcess:'涓┖',
+    responsibilityTeams:'涓┖涓�鐝�',
+    responsibilityPersonnel:'',
+    responsibilityDevice:'涓┖3#绾�',
+    completed:'',
+    onceBroken:'',
+  },
+]
+</script>
+
+<template>
+
+    <div>
+      <div class="adopt" style="float: right">
+        <el-button type="primary">閫氳繃</el-button>
+      </div>
+      <el-table :data="tableData" border style="width: 100%" height="100%">
+        <el-table-column  prop="serialNumber" label="搴忓彿" width="60" />
+        <el-table-column prop="singlePieceName" :show-overflow-tooltip='true' label="鍗曠墖鍚嶇О" width="120" />
+        <el-table-column prop="marking" label="鏍囪" width="60" />
+        <el-table-column prop="pieces" label="鐗囨爣璁�" width="70" />
+        <el-table-column prop="processCardNumber" label="娴佺▼鍗℃暟閲�" width="95" />
+        <el-table-column prop="width" label="瀹�" width="60" />
+        <el-table-column prop="height" label="楂�" width="60" />
+        <el-table-column prop="shape" label="褰㈢姸" :show-overflow-tooltip='true' width="60" />
+        <el-table-column prop="upCompletedQuantity" label="涓婂伐瀹屽伐鏁伴噺" width="110" />
+        <el-table-column prop="completedQuantity" label="瀹屽伐鏁伴噺" width="85" />
+        <el-table-column prop="numberBroken" label="娆$牬鏁伴噺" width="85" />
+        <el-table-column prop="availableUse" label="鍙埄鐢�" width="70" />
+        <el-table-column prop="returnProcess" label="閫�鍥炲伐搴�" width="85" />
+        <el-table-column prop="reasonType" label="娆$牬绫诲瀷" :show-overflow-tooltip='true' width="85" />
+        <el-table-column prop="reasonDamage" label="娆$牬鍘熷洜" :show-overflow-tooltip='true' width="85" />
+        <el-table-column prop="responsibilityDevice" label="璐d换璁惧" :show-overflow-tooltip='true' width="85" />
+        <el-table-column prop="responsibilityProcess" label="璐d换宸ュ簭" :show-overflow-tooltip='true' width="85" />
+        <el-table-column prop="responsibilityTeams" label="璐d换鐝粍" :show-overflow-tooltip='true' width="85" />
+        <el-table-column prop="responsibilityPersonnel" label="璐d换浜哄憳" :show-overflow-tooltip='true' width="85" />
+        <el-table-column prop="completed" label="宸插畬宸�" width="90" />
+        <el-table-column prop="onceBroken" label="宸叉鐮�" width="90" />
+
+
+
+
+
+      </el-table><!-- <h1>{{msg}}</h1> -->
+    </div>
+
+</template>
+
+<style scoped>
+
+.processCard{
+  width: 140px;
+}
+.processesSt{
+  height: 33px;
+  width: 80px;
+  background-color: #409eff;
+  color: white;
+  border: none;
+  border-radius: 5px;
+}
+#titleTable tr,#titleTable td{
+  border: 1px solid #000;
+}
+#titleTable{
+  border-collapse: collapse;
+  text-align: center;
+  width: 100%;
+  height: 100%;
+}
+#titleTable td{
+  width: 100px;
+  height: 30px;
+}
+#titleTable td:nth-child(1){
+  width: 100px;
+  height: 30px;
+}
+#titleTable td:nth-child(2){
+  width: 100px;
+}
+.chaxun{
+  background-color:#D5EAFF;
+  border: none;
+}
+</style>
\ No newline at end of file
diff --git a/north-glass-erp/northglass-erp/src/views/pp/reportingWorks/QualityInspectionReview.vue b/north-glass-erp/northglass-erp/src/views/pp/reportingWorks/QualityInspectionReview.vue
new file mode 100644
index 0000000..5cfdacf
--- /dev/null
+++ b/north-glass-erp/northglass-erp/src/views/pp/reportingWorks/QualityInspectionReview.vue
@@ -0,0 +1,157 @@
+<script lang="ts" setup>
+import { reactive } from 'vue'
+import { ref } from 'vue'
+const value = ref('')
+const defaultTime = ref<[Date, Date]>([
+  new Date(2000, 1, 1, 0, 0, 0),
+  new Date(2000, 2, 1, 23, 59, 59),
+])
+
+// do not use same name with ref
+const form = reactive({
+  name: '',
+  region: '',
+  date1: '',
+  date2: '',
+  delivery: false,
+  type: [],
+  resource: '',
+  desc: '',
+})
+const tableData = [
+  {
+    reportingWorkNo: 'BG2312070001',
+    reportingWorkTime: '2023-12-01 08:01:22',
+    processCard: 'NG231207A01',
+    entryName: '淇″悎鏄ュぉ閲�',
+    customerName: 'XXXX',
+    thisProcess: '涓┖',
+    teamName:"涓┖涓�鐝�",
+    finishedNumber: '11',
+    wornNumber: '1',
+    responsibilityProcess: '閽㈠寲',
+    previousProcess:'閽㈠寲',
+    nextProcess:'鍖呰',
+    qualityInspector: 'XXX',
+    qualityState: '1',
+    notes: '1)鎸変紒鏍�2)姣忕墖鐜荤拑鏍囩璐村澶栭潰銆傚唴鐗囩幓鐠冩墦鈥�3C鍟嗘爣鈥濓紝缁熶竴鎵撳湪鐜荤拑鈥滃搴︹�濇柟鍚戝彸涓嬭4)鎸夋壒娆″崟鐙惤鏋躲��',
+  },
+  {
+    reportingWorkNo: 'BG2312070002',
+    reportingWorkTime: '2023-12-01 08:01:22',
+    processCard: 'NG231207A01',
+    entryName: '淇″悎鏄ュぉ閲�',
+    customerName: 'XXXX',
+    thisProcess: '涓┖',
+    teamName:"涓┖涓�鐝�",
+    finishedNumber: '11',
+    wornNumber: '1',
+    responsibilityProcess: '閽㈠寲',
+    previousProcess:'閽㈠寲',
+    nextProcess:'鍖呰',
+    qualityInspector: 'XXX',
+    qualityState: '1',
+    notes: '1)鎸変紒鏍�2)姣忕墖鐜荤拑鏍囩璐村澶栭潰銆傚唴鐗囩幓鐠冩墦鈥�3C鍟嗘爣鈥濓紝缁熶竴鎵撳湪鐜荤拑鈥滃搴︹�濇柟鍚戝彸涓嬭4)鎸夋壒娆″崟鐙惤鏋躲��',
+  },
+  {
+    reportingWorkNo: 'BG2312070003',
+    reportingWorkTime: '2023-12-01 08:01:22',
+    processCard: 'NG231207A01',
+    entryName: '淇″悎鏄ュぉ閲�',
+    customerName: 'XXXX',
+    thisProcess: '涓┖',
+    teamName:"涓┖涓�鐝�",
+    finishedNumber: '11',
+    wornNumber: '1',
+    responsibilityProcess: '閽㈠寲',
+    previousProcess:'閽㈠寲',
+    nextProcess:'鍖呰',
+    qualityInspector: 'XXX',
+    qualityState: '1',
+    notes: '1)鎸変紒鏍�2)姣忕墖鐜荤拑鏍囩璐村澶栭潰銆傚唴鐗囩幓鐠冩墦鈥�3C鍟嗘爣鈥濓紝缁熶竴鎵撳湪鐜荤拑鈥滃搴︹�濇柟鍚戝彸涓嬭4)鎸夋壒娆″崟鐙惤鏋躲��',
+  },
+  {
+    reportingWorkNo: 'BG2312070004',
+    reportingWorkTime: '2023-12-01 08:01:22',
+    processCard: 'NG231207A01',
+    entryName: '淇″悎鏄ュぉ閲�',
+    customerName: 'XXXX',
+    thisProcess: '涓┖',
+    teamName:"涓┖涓�鐝�",
+    finishedNumber: '11',
+    wornNumber: '1',
+    responsibilityProcess: '閽㈠寲',
+    previousProcess:'閽㈠寲',
+    nextProcess:'鍖呰',
+    qualityInspector: 'XXX',
+    qualityState: '1',
+    notes: '1)鎸変紒鏍�2)姣忕墖鐜荤拑鏍囩璐村澶栭潰銆傚唴鐗囩幓鐠冩墦鈥�3C鍟嗘爣鈥濓紝缁熶竴鎵撳湪鐜荤拑鈥滃搴︹�濇柟鍚戝彸涓嬭4)鎸夋壒娆″崟鐙惤鏋躲��',
+  },
+
+]
+</script>
+
+<template>
+  <div>
+    <div style="width: 600px">
+      <el-row :gutter="0">
+<!--        <el-input placeholder="娴佺▼鍗″彿" v-model="form.name" style="width: 200px"/>-->
+<!--        &nbsp;&nbsp;-->
+        <select class="processesSt">
+          <option value="鏈鏍�">鏈鏍�</option>
+          <option value="宸插鏍�">宸插鏍�</option>
+        </select>
+        &nbsp;&nbsp;
+        <el-date-picker
+            v-model="value"
+            type="daterange"
+            start-placeholder="寮�濮嬫椂闂�"
+            end-placeholder="缁撴潫鏃堕棿"
+            :default-time="defaultTime"
+
+        />
+        &nbsp;&nbsp;
+        <el-button type="primary">鏌ヨ</el-button>
+      </el-row>
+    </div>
+    <div>
+      <el-table :data="tableData" border style="width: 100%" height="100%">
+        <el-table-column fixed label="鎿嶄綔" width="60"  >
+          <el-button link type="primary" size="small">閫氳繃</el-button>
+        </el-table-column>
+        <el-table-column sortable prop="reportingWorkNo" label="鎶ュ伐缂栧彿" width="120" >
+          <template v-slot="scope">
+            <router-link :to="{path:'QualityInReviewDetail'}" >{{scope.row.reportingWorkNo}}</router-link>
+          </template>
+        </el-table-column>
+        <el-table-column prop="reportingWorkTime" label="鎶ュ伐鏃堕棿" width="155" />
+        <el-table-column prop="processCard" label="娴佺▼鍗″彿" width="125" />
+        <el-table-column prop="entryName" label="椤圭洰鍚嶇О"  :show-overflow-tooltip='true' width="155" />
+        <el-table-column prop="customerName" label="瀹㈡埛鍚嶇О"  :show-overflow-tooltip='true' width="155" />
+        <el-table-column prop="thisProcess" label="鏈伐搴�" width="70" />
+        <el-table-column prop="teamName" label="鎶ュ伐鐝粍" width="95" />
+        <el-table-column prop="finishedNumber" label="瀹屽伐鏁伴噺" width="85" />
+        <el-table-column prop="wornNumber" label="娆$牬鏁伴噺" width="85" />
+        <el-table-column prop="responsibilityProcess" label="璐d换宸ュ簭" width="85" />
+        <el-table-column prop="previousProcess" label="涓婂伐搴�" width="70" />
+        <el-table-column prop="nextProcess" label="涓嬪伐搴�" width="70" />
+        <el-table-column prop="qualityInspector" label="璐ㄦ鍛�" width="80" />
+        <el-table-column prop="qualityState" label="璐ㄦ鐘舵��" width="90" />
+        <el-table-column prop="notes" label="澶囨敞" :show-overflow-tooltip='true' width="350" />
+      </el-table><!-- <h1>{{msg}}</h1> -->
+    </div>
+
+  </div>
+</template>
+
+<style scoped>
+.processesSt{
+  height: 33px;
+  width: 80px;
+  background-color: #409eff;
+  color: white;
+  border: none;
+  border-radius: 5px;
+}
+
+</style>
\ No newline at end of file
diff --git a/north-glass-erp/northglass-erp/src/views/pp/reportingWorks/ReportingWorkDetail.vue b/north-glass-erp/northglass-erp/src/views/pp/reportingWorks/ReportingWorkDetail.vue
new file mode 100644
index 0000000..b23fd28
--- /dev/null
+++ b/north-glass-erp/northglass-erp/src/views/pp/reportingWorks/ReportingWorkDetail.vue
@@ -0,0 +1,164 @@
+<script lang="ts" setup>
+import { reactive } from 'vue'
+import {ArrowLeftBold} from "@element-plus/icons-vue";
+import {useRouter} from "vue-router";
+const router = useRouter()
+let flag = $ref(true)
+function intoCreateProduct(){
+  if(flag){
+    router.push('/main/reportingWorks/SelectReportingWorks')
+  }else {
+    router.push('/main/reportingWorks/SelectReportingWorks')
+  }
+  flag=!flag
+}
+// do not use same name with ref
+const form = reactive({
+  name: '',
+  region: '',
+  date1: '',
+  date2: '',
+  delivery: false,
+  type: [],
+  resource: '',
+  desc: '',
+})
+const tableData = [
+
+  {
+    serialNumber:'1',
+    reportingWorkNo: 'BG23100112',
+    singlePieceName: '6mm鐧界幓骞抽挗(澶�)',
+    marking: '1',
+    pieces: '(澶�)',
+    floorNumber: '3#1灞�-4鎵嘙LC2025-10',
+    width: '575',
+    height:"2241",
+    shape: '鏅舰',
+    finishedNumber: '11',
+    wornNumber: '1',
+    reasonType: '鏈哄櫒',
+    reasonDamage:'姘旀场瓒呮爣',
+    available:'',
+    reworkProcess:'',
+    responsibilityProcess:'涓┖',
+    responsibilityTeams:'涓┖涓�鐝�',
+    responsibilityPersonnel:'',
+    responsibilityDevice:'涓┖3#绾�',
+    qualityInspectionStatus:'',
+    patchStatus:''
+  },
+  {
+    serialNumber:'1',
+    reportingWorkNo: 'BG23100112',
+    singlePieceName: '6mm鐧界幓骞抽挗(澶�)',
+    marking: '2',
+    pieces: '(鍐�)',
+    floorNumber: '3#1灞�-4鎵嘙LC2025-10',
+    width: '575',
+    height:"2241",
+    shape: '鏅舰',
+    finishedNumber: '11',
+    wornNumber: '1',
+    reasonType: '鏈哄櫒',
+    reasonDamage:'姘旀场瓒呮爣',
+    available:'',
+    reworkProcess:'',
+    responsibilityProcess:'涓┖',
+    responsibilityTeams:'涓┖涓�鐝�',
+    responsibilityPersonnel:'',
+    responsibilityDevice:'涓┖3#绾�',
+    qualityInspectionStatus:'',
+    patchStatus:''
+  },
+  {
+    serialNumber:'2',
+    reportingWorkNo: 'BG23100112',
+    singlePieceName: '6mm鐧界幓骞抽挗(澶�)',
+    marking: '1',
+    pieces: '(澶�)',
+    floorNumber: '3#1灞�-4鎵嘙LC2025-10',
+    width: '575',
+    height:"2241",
+    shape: '鏅舰',
+    finishedNumber: '6',
+    wornNumber: '',
+    reasonType: '',
+    reasonDamage:'',
+    available:'',
+    reworkProcess:'',
+    responsibilityProcess:'',
+    responsibilityTeams:'',
+    responsibilityPersonnel:'',
+    responsibilityDevice:'',
+    qualityInspectionStatus:'',
+    patchStatus:''
+  },
+  {
+    serialNumber:'2',
+    reportingWorkNo: 'BG23100112',
+    singlePieceName: '6mm鐧界幓骞抽挗(澶�)',
+    marking: '2',
+    pieces: '(鍐�)',
+    floorNumber: '3#1灞�-4鎵嘙LC2025-10',
+    width: '575',
+    height:"2241",
+    shape: '鏅舰',
+    finishedNumber: '6',
+    wornNumber: '',
+    reasonType: '',
+    reasonDamage:'',
+    available:'',
+    reworkProcess:'',
+    responsibilityProcess:'',
+    responsibilityTeams:'',
+    responsibilityPersonnel:'',
+    responsibilityDevice:'',
+    qualityInspectionStatus:'',
+    patchStatus:''
+  },
+]
+</script>
+
+<template>
+  <div>
+<!--    <el-button-->
+<!--        style="float: left"-->
+<!--        @click="intoCreateProduct"-->
+<!--        id="searchButton1"-->
+<!--        type="primary"-->
+<!--        :icon="ArrowLeftBold"-->
+<!--        round >-->
+<!--      {{flag?'杩斿洖':'杩斿洖'}}-->
+<!--    </el-button>-->
+    <el-table :data="tableData" border style="width: 100%" height="100%">
+      <el-table-column  prop="serialNumber" label="搴忓彿" width="70" />
+      <el-table-column sortable prop="reportingWorkNo" label="鎶ュ伐缂栧彿" width="120" />
+      <el-table-column prop="singlePieceName" label="鍗曠墖鍚嶇О" width="150" />
+      <el-table-column prop="marking" label="鏍囪" width="60" />
+      <el-table-column prop="pieces" label="鐗囨爣璁�" width="70" />
+      <el-table-column prop="floorNumber" label="妤煎眰缂栧彿" width="200" />
+      <el-table-column prop="width" label="瀹�" width="80" />
+      <el-table-column prop="height" label="楂�" width="155" />
+      <el-table-column prop="shape" label="褰㈢姸" :show-overflow-tooltip='true' width="180" />
+      <el-table-column prop="finishedNumber" label="瀹屽伐鏁伴噺" width="90" />
+      <el-table-column prop="wornNumber" label="娆$牬鏁伴噺" width="100" />
+      <el-table-column prop="reasonType" label="娆$牬绫诲瀷" :show-overflow-tooltip='true' width="125" />
+      <el-table-column prop="reasonDamage" label="娆$牬鍘熷洜" :show-overflow-tooltip='true' width="125" />
+      <el-table-column prop="available" label="鍙埄鐢�" :show-overflow-tooltip='true' width="125" />
+      <el-table-column prop="reworkProcess" label="杩斿伐宸ュ簭" :show-overflow-tooltip='true' width="125" />
+      <el-table-column prop="responsibilityProcess" label="璐d换宸ュ簭" :show-overflow-tooltip='true' width="125" />
+      <el-table-column prop="responsibilityTeams" label="璐d换鐝粍" :show-overflow-tooltip='true' width="125" />
+      <el-table-column prop="responsibilityPersonnel" label="璐d换浜哄憳" :show-overflow-tooltip='true' width="125" />
+      <el-table-column prop="responsibilityDevice" label="璐d换璁惧" :show-overflow-tooltip='true' width="125" />
+      <el-table-column prop="qualityInspectionStatus" label="璐ㄦ鐘舵��" :show-overflow-tooltip='true' width="125" />
+      <el-table-column prop="patchStatus" label="琛ョ墖鐘舵��" :show-overflow-tooltip='true' width="125" />
+
+    </el-table><!-- <h1>{{msg}}</h1> -->
+  </div>
+</template>
+
+<style scoped>
+
+
+</style>
\ No newline at end of file
diff --git a/north-glass-erp/northglass-erp/src/views/pp/reportingWorks/ReportingWorks.vue b/north-glass-erp/northglass-erp/src/views/pp/reportingWorks/ReportingWorks.vue
new file mode 100644
index 0000000..120c13f
--- /dev/null
+++ b/north-glass-erp/northglass-erp/src/views/pp/reportingWorks/ReportingWorks.vue
@@ -0,0 +1,72 @@
+<script setup>
+import {ref} from "vue";
+import {ArrowLeftBold, ArrowRight} from "@element-plus/icons-vue";
+import request from "@/utils/request";
+import deepClone from "@/utils/deepClone";
+import {ElMessage} from "element-plus";
+import {useRouter} from "vue-router";
+import  GlassType from '@/components/basic/product/GlassType.vue'
+
+
+
+const router = useRouter()
+let flag = $ref(true)
+let flag1 = $ref(true)
+function intoWork(){
+  if(flag){
+    router.push('/main/reportingWorks/AddReportingWork')
+  }else {
+    router.push('/main/reportingWorks/SelectReportingWorks')
+  }
+  flag=!flag
+}
+function intoReview(){
+  if(flag1){
+    router.push('/main/reportingWorks/QualityInspectionReview')
+  }else {
+    router.push('/main/reportingWorks/SelectReportingWorks')
+  }
+  flag1=!flag1
+}
+</script>
+
+<template>
+  <div id="main">
+    <div id="div-title">
+      <el-breadcrumb :separator-icon="ArrowRight">
+        <el-breadcrumb-item :to="{ path: '/main/reportingWorks/SelectReportingWorks' }">鎶ュ伐绠$悊</el-breadcrumb-item>
+        <el-breadcrumb-item :to="{ path: '/main/reportingWorks/AddReportingWork' }">鎶ュ伐鏂板</el-breadcrumb-item>
+        <el-breadcrumb-item :to="{ path: '/main/reportingWorks/QualityInspectionReview' }">璐ㄦ瀹℃牳</el-breadcrumb-item>
+        <el-breadcrumb-item :to="{ path: '/main/processCard/SelectPrintFlowCard' }" style="display: none">鎵撳嵃</el-breadcrumb-item>
+      </el-breadcrumb>
+    </div>
+
+    <div id="main-body">
+      <router-view  />
+    </div>
+  </div>
+</template>
+
+<style scoped>
+#main{
+  width: 100%;
+  height: 100%;
+}
+#div-title{
+  height: 5%;
+  width: 100%;
+}
+#searchButton{
+  margin-top: -5px;
+  margin-left: 1rem;
+}
+#searchButton1{
+//margin-left: 10rem;
+}
+/*main-body鏍峰紡*/
+#main-body{
+  width: 99%;
+  height: 92%;
+  margin-top: 1%;
+}
+</style>
\ No newline at end of file
diff --git a/north-glass-erp/northglass-erp/src/views/pp/reportingWorks/SelectReportingWorks.vue b/north-glass-erp/northglass-erp/src/views/pp/reportingWorks/SelectReportingWorks.vue
new file mode 100644
index 0000000..f343336
--- /dev/null
+++ b/north-glass-erp/northglass-erp/src/views/pp/reportingWorks/SelectReportingWorks.vue
@@ -0,0 +1,164 @@
+<script lang="ts" setup>
+import {reactive, ref} from 'vue'
+
+// do not use same name with ref
+const form = reactive({
+  name: '',
+  region: '',
+  date1: '',
+  date2: '',
+  delivery: false,
+  type: [],
+  resource: '',
+  desc: '',
+})
+const value = ref('')
+const defaultTime = ref<[Date, Date]>([
+  new Date(2000, 1, 1, 0, 0, 0),
+  new Date(2000, 2, 1, 23, 59, 59),
+])
+const tableData = [
+  {
+    reportingWorkNo: 'BG2312080011',
+    reportingWorkTime: '2023-12-08 09:05:58',
+    processCard: 'NG23120801A01',
+    entryName: '淇″悎鏄ュぉ閲�',
+    batch: '鍥涙壒浜�',
+    device:'澶ф捣鍒╁畞',
+    thisProcess: '鍒囧壊',
+    finishedNumber: '13',
+    finishedArea: '44.22',
+    wornNumber: '',
+    wornArea: '',
+    teamName:'鍒囧壊涓�鐝�'
+  },
+  {
+    reportingWorkNo: 'BG2312080013',
+    reportingWorkTime: '2023-12-08 09:05:58',
+    processCard: 'NG23120801A01',
+    entryName: '淇″悎鏄ュぉ閲�',
+    batch: '涓�鎵逛簩',
+    device:'澶ф捣鍒╁畞',
+    thisProcess: '鍒囧壊',
+    finishedNumber: '13',
+    finishedArea: '44.22',
+    wornNumber: '',
+    wornArea: '',
+    teamName:'鍒囧壊涓�鐝�'
+  },
+  {
+    reportingWorkNo: 'BG2311080025',
+    reportingWorkTime: '2023-12-08 09:05:58',
+    processCard: 'NG23120801A01',
+    entryName: '淇″悎鏄ュぉ閲�',
+    batch: '涓�鎵逛簩',
+    device:'澶ф捣鍒╁畞',
+    thisProcess: '鍒囧壊',
+    finishedNumber: '13',
+    finishedArea: '44.22',
+    wornNumber: '',
+    wornArea: '',
+    teamName:'鍒囧壊涓�鐝�'
+  },
+  {
+    reportingWorkNo: 'BG2303080025',
+    reportingWorkTime: '2023-12-08 09:05:58',
+    processCard: 'NG23120801A01',
+    entryName: '淇″悎鏄ュぉ閲�',
+    batch: '涓�鎵逛簩',
+    device:'澶ф捣鍒╁畞',
+    thisProcess: '鍒囧壊',
+    finishedNumber: '13',
+    finishedArea: '44.22',
+    wornNumber: '',
+    wornArea: '',
+    teamName:'鍒囧壊涓�鐝�'
+  },
+  {
+    reportingWorkNo: 'BG2312080001',
+    reportingWorkTime: '2023-12-08 09:05:58',
+    processCard: 'NG23120801A01',
+    entryName: '淇″悎鏄ュぉ閲�',
+    batch: '涓�鎵逛簩',
+    device:'澶ф捣鍒╁畞',
+    thisProcess: '鍒囧壊',
+    finishedNumber: '13',
+    finishedArea: '44.22',
+    wornNumber: '',
+    wornArea: '',
+    teamName:'鍒囧壊涓�鐝�'
+  },
+  {
+    reportingWorkNo: 'BG2312080015',
+    reportingWorkTime: '2023-12-08 09:05:58',
+    processCard: 'NG23120801A01',
+    entryName: '淇″悎鏄ュぉ閲�',
+    batch: '涓�鎵逛簩',
+    device:'澶ф捣鍒╁畞',
+    thisProcess: '鍒囧壊',
+    finishedNumber: '13',
+    finishedArea: '44.22',
+    wornNumber: '',
+    wornArea: '',
+    teamName:'鍒囧壊涓�鐝�'
+  },
+]
+</script>
+
+<template>
+  <div>
+    <div id="selectForm" >
+      <el-row :gutter="0">
+<!--          <el-input placeholder="娴佺▼鍗″彿" v-model="form.name" style="width: 200px"/>-->
+
+
+<!--        &nbsp;&nbsp;-->
+<!--          <el-input placeholder="椤圭洰鍚嶇О" v-model="form.name" style="width: 200px"/>-->
+
+<!--        &nbsp;&nbsp;-->
+        <el-date-picker
+            v-model="value"
+            type="daterange"
+            start-placeholder="鎶ュ伐寮�濮嬫椂闂�"
+            end-placeholder="缁撴潫鏃堕棿"
+            :default-time="defaultTime"
+        />
+        &nbsp;&nbsp;
+        <el-button type="primary">鏌ヨ</el-button>
+      </el-row>
+
+    </div>
+    <el-table :data="tableData" border style="width: 100%" height="100%">
+      <el-table-column fixed label="鎿嶄綔" width="140"  >
+        <el-button link type="primary" size="small">鍒犻櫎</el-button>
+        <el-button link type="primary" size="small">缂栬緫</el-button>
+        <el-button link type="primary" size="small">鍙嶅</el-button>
+      </el-table-column>
+      <el-table-column sortable prop="reportingWorkNo" label="鎶ュ伐缂栧彿" width="120" >
+        <template v-slot="scope">
+          <router-link :to="{path:'ReportingWorkDetail'}" >{{scope.row.reportingWorkNo}}</router-link>
+        </template>
+      </el-table-column>
+      <el-table-column prop="reportingWorkTime" label="鎶ュ伐鏃堕棿" width="155" />
+      <el-table-column prop="processCard" label="娴佺▼鍗″彿" width="135" />
+      <el-table-column prop="entryName" label="椤圭洰鍚嶇О" width="155" />
+      <el-table-column prop="batch" label="鎵规" width="75" />
+      <el-table-column prop="device" label="璁惧" width="100" />
+      <el-table-column prop="thisProcess" label="鏈伐搴�" width="100" />
+      <el-table-column prop="finishedNumber" label="鏈伐搴忓畬宸�" width="100" />
+      <el-table-column prop="finishedArea" label="瀹屽伐闈㈢Н" width="90" />
+      <el-table-column prop="wornNumber" label="鏈伐搴忔鐮�" width="100" />
+      <el-table-column prop="wornArea" label="娆$牬闈㈢Н" width="90" />
+      <el-table-column prop="teamName" label="鐝粍鍚嶇О"  width="150" />
+    </el-table><!-- <h1>{{msg}}</h1> -->
+  </div>
+</template>
+
+<style scoped>
+#selectForm {
+  width: 45%;
+  height: 100%;
+  text-align: center;
+}
+
+</style>
\ No newline at end of file
diff --git a/north-glass-erp/northglass-erp/src/views/pp/rework/AddRework.vue b/north-glass-erp/northglass-erp/src/views/pp/rework/AddRework.vue
new file mode 100644
index 0000000..3bc5376
--- /dev/null
+++ b/north-glass-erp/northglass-erp/src/views/pp/rework/AddRework.vue
@@ -0,0 +1,123 @@
+<script setup>
+import {reactive, ref} from 'vue'
+
+// do not use same name with ref
+
+const tableData = [
+  {
+
+    reworkNumber:'FG20202020',
+    salesOrderNo:'NG23010101',
+    processCardNo:'NG23010101A01',
+    entryName:'xxxx',
+    batch:'浜屾壒涓�',
+    serialNumber:'1',
+    area:'23.11',
+    qualityInspector:"寮犱笁",
+    number:'1',
+    singlePieceName: '6mm鐧界幓骞抽挗(澶�)',
+    marking: '1',
+    pieces: '(澶�)',
+    width: '575',
+    height:"2241",
+    shape: '鏅舰',
+    type: '鏈哄櫒',
+    damage:'姘旀场瓒呮爣',
+    device:'XXX',
+    reworkProcess:'鍒囧壊',
+  },
+  {
+
+    reworkNumber:'FG20203333',
+    salesOrderNo:'NG23010101',
+    processCardNo:'NG23010101A01',
+    entryName:'xxxx',
+    batch:'浜屾壒涓�',
+    serialNumber:'1',
+    area:'23.11',
+    qualityInspector:"寮犱笁",
+    number:'1',
+    singlePieceName: '6mm鐧界幓骞抽挗(澶�)',
+    marking: '1',
+    pieces: '(澶�)',
+    width: '575',
+    height:"2241",
+    shape: '鏅舰',
+    type: '鏈哄櫒',
+    damage:'姘旀场瓒呮爣',
+    reworkProcess:'纾ㄨ竟',
+    device:'XXX'
+  },
+]
+</script>
+
+<template>
+  <div>
+
+
+    <div>
+      <el-table :data="tableData" border style="width: 100%" height="100%">
+        <el-table-column fixed label="鎿嶄綔" width="70"  >
+          <el-button link type="primary" size="small">淇濆瓨</el-button>
+        </el-table-column>
+        <el-table-column prop="reworkTeams" label="杩斿伐鐝粍" :show-overflow-tooltip='true' width="85" >
+          <el-input></el-input>
+        </el-table-column>
+        <el-table-column prop="reworkNumber" label="杩斿伐缂栧彿" width="105" />
+        <el-table-column sortable prop="salesOrderNo" label="閿�鍞崟鍙�" width="120" />
+        <el-table-column sortable prop="processCardNo" label="娴佺▼鍗″彿" width="130" />
+        <el-table-column prop="entryName" label="椤圭洰鍚嶇О" width="120" :show-overflow-tooltip='true'/>
+        <el-table-column  prop="batch" label="鎵规" width="70" />
+        <el-table-column  prop="serialNumber" label="搴忓彿" width="60" />
+        <el-table-column prop="singlePieceName" :show-overflow-tooltip='true' label="鍗曠墖鍚嶇О" width="120" />
+        <el-table-column prop="marking" label="鏍囪" width="60" />
+        <el-table-column prop="pieces" label="鐗囨爣璁�" width="70" />
+        <el-table-column prop="number" label="鏁伴噺" width="95" />
+        <el-table-column prop="width" label="瀹�" width="60" />
+        <el-table-column prop="height" label="楂�" width="60" />
+        <el-table-column prop="shape" label="褰㈢姸" :show-overflow-tooltip='true' width="60" />
+        <el-table-column prop="reworkProcess" label="杩斿伐宸ュ簭" :show-overflow-tooltip='true' width="85" />
+        <el-table-column prop="type" label="杩斿伐绫诲瀷" :show-overflow-tooltip='true' width="85" />
+        <el-table-column prop="damage" label="杩斿伐鍘熷洜" :show-overflow-tooltip='true' width="85" />
+        <el-table-column prop="device" label="璐d换璁惧" :show-overflow-tooltip='true' width="85" />
+        <el-table-column prop="teams" label="璐d换鐝粍" :show-overflow-tooltip='true' width="85" />
+        <el-table-column prop="area" label="杩斿伐闈㈢Н" width="85" />
+        <el-table-column prop="qualityInspector" label="璐ㄦ鍛�" width="80" />
+
+
+
+
+
+      </el-table><!-- <h1>{{msg}}</h1> -->
+    </div>
+  </div>
+</template>
+
+<style scoped>
+
+
+#titleTable tr,#titleTable td{
+  border: 1px solid #000;
+}
+#titleTable{
+  border-collapse: collapse;
+  text-align: center;
+  width: 100%;
+  height: 100%;
+}
+#titleTable td{
+  width: 100px;
+  height: 30px;
+}
+#titleTable td:nth-child(1){
+  width: 100px;
+  height: 30px;
+}
+#titleTable td:nth-child(2){
+  width: 100px;
+}
+.chaxun{
+  background-color:#D5EAFF;
+  border: none;
+}
+</style>
\ No newline at end of file
diff --git a/north-glass-erp/northglass-erp/src/views/pp/rework/Rework.vue b/north-glass-erp/northglass-erp/src/views/pp/rework/Rework.vue
new file mode 100644
index 0000000..4723b84
--- /dev/null
+++ b/north-glass-erp/northglass-erp/src/views/pp/rework/Rework.vue
@@ -0,0 +1,71 @@
+<script setup>
+import {ref} from "vue";
+import {ArrowLeftBold, ArrowRight} from "@element-plus/icons-vue";
+import request from "@/utils/request";
+import deepClone from "@/utils/deepClone";
+import {ElMessage} from "element-plus";
+import {useRouter} from "vue-router";
+import  GlassType from '@/components/basic/product/GlassType.vue'
+
+
+
+const router = useRouter()
+let flag = $ref(true)
+let flag1 = $ref(true)
+function intoRelease(){
+  if(flag){
+    router.push('/main/rework/AddRework')
+  }else {
+    router.push('/main/rework/SelectRework')
+  }
+  flag=!flag
+}
+// function intoAddWorkOrder(){
+//   if(flag1){
+//     router.push('/main/Replenish/PrintReplenishFlowCard')
+//   }else {
+//     router.push('/main/Replenish/SelectReplenish')
+//   }
+//   flag1=!flag1
+// }
+</script>
+
+<template>
+  <div id="main">
+    <div id="div-title">
+      <el-breadcrumb :separator-icon="ArrowRight">
+        <el-breadcrumb-item :to="{ path: '/main/rework/SelectRework' }">杩斿伐绠$悊</el-breadcrumb-item>
+        <el-breadcrumb-item :to="{ path: '/main/rework/AddRework' }">杩斿伐鏂板</el-breadcrumb-item>
+        <el-breadcrumb-item :to="{ path: '/main/processCard/SelectPrintFlowCard' }" style="display: none">鎵撳嵃</el-breadcrumb-item>
+      </el-breadcrumb>
+    </div>
+
+    <div id="main-body">
+      <router-view  />
+    </div>
+  </div>
+</template>
+
+<style scoped>
+#main{
+  width: 100%;
+  height: 100%;
+}
+#div-title{
+  height: 5%;
+  width: 100%;
+}
+#searchButton{
+  margin-top: -5px;
+  margin-left: 1rem;
+}
+#searchButton1{
+//margin-left: 10rem;
+}
+/*main-body鏍峰紡*/
+#main-body{
+  width: 99%;
+  height: 92%;
+  margin-top: 1%;
+}
+</style>
\ No newline at end of file
diff --git a/north-glass-erp/northglass-erp/src/views/pp/rework/SelectRework.vue b/north-glass-erp/northglass-erp/src/views/pp/rework/SelectRework.vue
new file mode 100644
index 0000000..d09df17
--- /dev/null
+++ b/north-glass-erp/northglass-erp/src/views/pp/rework/SelectRework.vue
@@ -0,0 +1,159 @@
+<script setup>
+import {reactive, ref} from 'vue'
+
+// do not use same name with ref
+const form = reactive({
+  lckh:'',
+  xsdh:'',
+})
+const value = ref('')
+const defaultTime = ref<[Date, Date]>([
+  new Date(2000, 1, 1, 0, 0, 0),
+  new Date(2000, 2, 1, 23, 59, 59),
+])
+const tableData = [
+  {
+
+    reworkNumber:'FG20202020',
+    salesOrderNo:'NG23010101',
+    processCardNo:'NG23010101A01',
+    entryName:'xxxx',
+    batch:'浜屾壒涓�',
+    serialNumber:'1',
+    area:'23.11',
+    qualityInspector:"寮犱笁",
+    number:'1',
+    singlePieceName: '6mm鐧界幓骞抽挗(澶�)',
+    marking: '1',
+    pieces: '(澶�)',
+    width: '575',
+    height:"2241",
+    shape: '鏅舰',
+    reworkTeams:'XX浜岀彮',
+    type: '鏈哄櫒',
+    damage:'姘旀场瓒呮爣',
+    reworkProcess:'XXXX',
+    device:'XXX'
+  },
+  {
+
+    reworkNumber:'FG20203333',
+    salesOrderNo:'NG23010101',
+    processCardNo:'NG23010101A01',
+    entryName:'xxxx',
+    batch:'浜屾壒涓�',
+    serialNumber:'1',
+    area:'23.11',
+    qualityInspector:"寮犱笁",
+    number:'1',
+    singlePieceName: '6mm鐧界幓骞抽挗(澶�)',
+    marking: '1',
+    pieces: '(澶�)',
+    width: '575',
+    height:"2241",
+    shape: '鏅舰',
+    reworkTeams:'XX浜岀彮',
+    type: '鏈哄櫒',
+    damage:'姘旀场瓒呮爣',
+    reworkProcess:'XXXX',
+    device:'XXX'
+  },
+]
+</script>
+
+<template>
+  <div>
+    <div id="head" >
+<!--      <el-input placeholder="娴佺▼鍗″彿" v-model="form.xsdh" style="width: 200px"/>-->
+<!--      &nbsp;-->
+
+<!--      <el-input placeholder="椤圭洰鍚嶇О" v-model="form.lckh" style="width: 200px"/>-->
+<!--      &nbsp;-->
+      <el-date-picker
+          v-model="value"
+          type="daterange"
+          start-placeholder="寮�濮嬫椂闂�"
+          end-placeholder="缁撴潫鏃堕棿"
+          :default-time="defaultTime"
+      />
+      <el-button type="primary">鏌ヨ</el-button>
+    </div>
+
+    <div>
+      <el-table :data="tableData" border style="width: 100%" height="100%">
+        <el-table-column fixed label="鎿嶄綔" width="100"  >
+          <el-button link type="primary" size="small">缂栬緫</el-button>
+          <el-button link type="primary" size="small">瀹℃牳</el-button>
+        </el-table-column>
+        <el-table-column prop="reworkNumber" label="杩斿伐缂栧彿" width="155" />
+        <el-table-column sortable prop="salesOrderNo" label="閿�鍞崟鍙�" width="120" />
+        <el-table-column sortable prop="processCardNo" label="娴佺▼鍗″彿" width="130" />
+        <el-table-column prop="entryName" label="椤圭洰鍚嶇О" width="120" :show-overflow-tooltip='true'/>
+        <el-table-column  prop="batch" label="鎵规" width="70" />
+        <el-table-column  prop="serialNumber" label="搴忓彿" width="60" />
+        <el-table-column prop="singlePieceName" :show-overflow-tooltip='true' label="鍗曠墖鍚嶇О" width="120" />
+        <el-table-column prop="marking" label="鏍囪" width="60" />
+        <el-table-column prop="pieces" label="鐗囨爣璁�" width="70" />
+        <el-table-column prop="number" label="鏁伴噺" width="95" />
+        <el-table-column prop="width" label="瀹�" width="60" />
+        <el-table-column prop="height" label="楂�" width="60" />
+        <el-table-column prop="shape" label="褰㈢姸" :show-overflow-tooltip='true' width="60" />
+        <el-table-column prop="type" label="杩斿伐绫诲瀷" :show-overflow-tooltip='true' width="85" />
+        <el-table-column prop="damage" label="杩斿伐鍘熷洜" :show-overflow-tooltip='true' width="85" />
+        <el-table-column prop="device" label="璐d换璁惧" :show-overflow-tooltip='true' width="85" />
+        <el-table-column prop="teams" label="璐d换鐝粍" :show-overflow-tooltip='true' width="85" />
+        <el-table-column prop="area" label="杩斿伐闈㈢Н" width="85" />
+        <el-table-column prop="reworkProcess" label="杩斿伐宸ュ簭" :show-overflow-tooltip='true' width="85" />
+        <el-table-column prop="reworkTeams" label="杩斿伐鐝粍" :show-overflow-tooltip='true' width="85" />
+        <el-table-column prop="qualityInspector" label="璐ㄦ鍛�" width="80" />
+
+
+
+
+
+      </el-table><!-- <h1>{{msg}}</h1> -->
+    </div>
+  </div>
+</template>
+
+<style scoped>
+#head{
+  width: 70%;
+}
+
+.processCard{
+  width: 140px;
+}
+.processesSt{
+  height: 33px;
+  width: 80px;
+  background-color: #409eff;
+  color: white;
+  border: none;
+  border-radius: 5px;
+}
+#titleTable tr,#titleTable td{
+  border: 1px solid #000;
+}
+#titleTable{
+  border-collapse: collapse;
+  text-align: center;
+  width: 100%;
+  height: 100%;
+}
+#titleTable td{
+  width: 100px;
+  height: 30px;
+}
+#titleTable td:nth-child(1){
+  width: 100px;
+  height: 30px;
+}
+#titleTable td:nth-child(2){
+  width: 100px;
+}
+.chaxun{
+  background-color:#D5EAFF;
+  border: none;
+}
+</style>
\ No newline at end of file
diff --git a/north-glass-erp/northglass-erp/src/views/pp/workOrder/AddWorkOrder.vue b/north-glass-erp/northglass-erp/src/views/pp/workOrder/AddWorkOrder.vue
new file mode 100644
index 0000000..d78bc14
--- /dev/null
+++ b/north-glass-erp/northglass-erp/src/views/pp/workOrder/AddWorkOrder.vue
@@ -0,0 +1,93 @@
+<script lang="ts" setup>
+import { ref } from 'vue'
+import { ElTable } from 'element-plus'
+import {ArrowLeftBold} from "@element-plus/icons-vue";
+import request from "@/utils/request";
+import deepClone from "@/utils/deepClone";
+import {ElMessage} from "element-plus";
+import {useRouter} from "vue-router";
+import  GlassType from '@/components/basic/product/GlassType.vue'
+
+interface User {
+  //閿�鍞崟鍙�
+  selection:string
+  //浜у搧缂栧彿
+  productID: string
+  //浜у搧鍚嶇О
+  productName: string
+  //鎬绘暟閲�
+  total: string
+  //鎬婚潰绉�
+  totalArea:string
+  //鍛ㄩ暱
+  perimeter:string
+}
+
+const multipleTableRef = ref<InstanceType<typeof ElTable>>()
+const multipleSelection = ref<User[]>([])
+
+const handleSelectionChange = (val: User[]) => {
+  multipleSelection.value = val
+}
+const router = useRouter()
+let flag = $ref(true)
+function intoCreateProduct(){
+  if(flag){
+    router.push('/main/workOrder/SelectAddWorkOrder')
+  }else {
+    router.push('/main/workOrder/SelectAddWorkOrder')
+  }
+  flag=!flag
+}
+
+const tableData: User[] = [
+  {
+    selection: 'NG231201',
+    productID: '9001010208000021',
+    productName: '6mm瓒呯櫧UD60骞抽挗(澶�)+12A(缁�)+6mm瓒呯櫧骞抽挗(鍐�)',
+    total:"123",
+    totalArea:"1233.12",
+    perimeter:"133"
+  },
+  {
+    selection: 'NG231201',
+    productID: '9001010203000008',
+    productName: '6mm瓒呯櫧LYDE-80骞抽挗(澶�)+12Ar(缁�)+6mm瓒呯櫧骞抽挗(鍐�)',
+    total:"123",
+    totalArea:"1233.12",
+    perimeter:"133"
+  },
+]
+</script>
+
+<template>
+<div >
+  <div id="headerButton">
+
+    <el-button type="primary">淇濆瓨</el-button>
+  </div>
+  <el-table
+      ref="multipleTableRef"
+      :data="tableData"
+      style="width: 100%"
+      @selection-change="handleSelectionChange"
+  >
+    <el-table-column type="selection" width="55" />
+    <el-table-column label="閿�鍞崟鍙�" width="120">
+      <template #default="scope">{{ scope.row.selection }}</template>
+    </el-table-column>
+    <el-table-column property="productID" label="浜у搧缂栧彿"  :show-overflow-tooltip='true'/>
+    <el-table-column property="productName" label="浜у搧鍚嶇О" width="280" show-overflow-tooltip :show-overflow-tooltip='true'/>
+    <el-table-column property="total" label="鎬绘暟閲�"  />
+    <el-table-column property="totalArea" label="鎬婚潰绉�" />
+    <el-table-column property="perimeter" label="鍛ㄩ暱"  />
+  </el-table>
+</div>
+</template>
+
+<style scoped>
+#headerButton{
+  width: 200px;
+ float: right;
+}
+</style>
\ No newline at end of file
diff --git a/north-glass-erp/northglass-erp/src/views/pp/workOrder/ReleaseWorkOrder.vue b/north-glass-erp/northglass-erp/src/views/pp/workOrder/ReleaseWorkOrder.vue
new file mode 100644
index 0000000..aa83e63
--- /dev/null
+++ b/north-glass-erp/northglass-erp/src/views/pp/workOrder/ReleaseWorkOrder.vue
@@ -0,0 +1,146 @@
+<script lang="ts" setup>
+import { reactive } from 'vue'
+
+// do not use same name with ref
+const form = reactive({
+  name: '',
+  region: '',
+  date1: '',
+  date2: '',
+  delivery: false,
+  type: [],
+  resource: '',
+  desc: '',
+})
+const tableData = [
+  {
+    salesOrderNo: 'NG231201',
+    productionOrderNo: 'NG231201A',
+    entryName: '淇″悎鏄ュぉ閲�',
+    batch: '23鎵�',
+    productName: '5mm鐧界幓骞抽挗(澶�)+0.76PVB閫忔槑+5mm鐧界幓骞抽挗(鍐�)',
+    monolithicTotalArea: '509.78',
+    total: '169',
+    productTotalArea: '175.31',
+    perimeter: '99.84',
+    radius: '0',
+    createTime: '1)鎸変紒鏍�2)姣忕墖鐜荤拑鏍囩璐村澶栭潰銆傚唴鐗囩幓鐠冩墦鈥�3C鍟嗘爣鈥濓紝缁熶竴鎵撳湪鐜荤拑鈥滃搴︹�濇柟鍚戝彸涓嬭4)鎸夋壒娆″崟鐙惤鏋躲��',
+  },
+  {
+    salesOrderNo: 'NG231201',
+    productionOrderNo: 'NG231201A',
+    entryName: '淇″悎鏄ュぉ閲�',
+    batch: '23鎵�',
+    productName: '5mm鐧界幓骞抽挗(澶�)+0.76PVB閫忔槑+5mm鐧界幓骞抽挗(鍐�)',
+    monolithicTotalArea: '509.78',
+    total: '169',
+    productTotalArea: '175.31',
+    perimeter: '99.84',
+    radius: '0',
+    createTime: '1)鎸変紒鏍�2)姣忕墖鐜荤拑鏍囩璐村澶栭潰銆傚唴鐗囩幓鐠冩墦鈥�3C鍟嗘爣鈥濓紝缁熶竴鎵撳湪鐜荤拑鈥滃搴︹�濇柟鍚戝彸涓嬭4)鎸夋壒娆″崟鐙惤鏋躲��',
+  },
+  {
+    salesOrderNo: 'NG231201',
+    productionOrderNo: 'NG231201A',
+    entryName: '淇″悎鏄ュぉ閲�',
+    batch: '23鎵�',
+    productName: '5mm鐧界幓骞抽挗(澶�)+0.76PVB閫忔槑+5mm鐧界幓骞抽挗(鍐�)',
+    monolithicTotalArea: '509.78',
+    total: '169',
+    productTotalArea: '175.31',
+    perimeter: '99.84',
+    radius: '0',
+    createTime: '1)鎸変紒鏍�2)姣忕墖鐜荤拑鏍囩璐村澶栭潰銆傚唴鐗囩幓鐠冩墦鈥�3C鍟嗘爣鈥濓紝缁熶竴鎵撳湪鐜荤拑鈥滃搴︹�濇柟鍚戝彸涓嬭4)鎸夋壒娆″崟鐙惤鏋躲��',
+  },
+  {
+    salesOrderNo: 'NG231201',
+    productionOrderNo: 'NG231201A',
+    entryName: '淇″悎鏄ュぉ閲�',
+    batch: '23鎵�',
+    productName: '5mm鐧界幓骞抽挗(澶�)+0.76PVB閫忔槑+5mm鐧界幓骞抽挗(鍐�)',
+    monolithicTotalArea: '509.78',
+    total: '169',
+    productTotalArea: '175.31',
+    perimeter: '99.84',
+    radius: '0',
+    createTime: '1)鎸変紒鏍�2)姣忕墖鐜荤拑鏍囩璐村澶栭潰銆傚唴鐗囩幓鐠冩墦鈥�3C鍟嗘爣鈥濓紝缁熶竴鎵撳湪鐜荤拑鈥滃搴︹�濇柟鍚戝彸涓嬭4)鎸夋壒娆″崟鐙惤鏋躲��',
+  },
+  {
+    salesOrderNo: 'NG231201',
+    productionOrderNo: 'NG231201A',
+    entryName: '淇″悎鏄ュぉ閲�',
+    batch: '23鎵�',
+    productName: '5mm鐧界幓骞抽挗(澶�)+0.76PVB閫忔槑+5mm鐧界幓骞抽挗(鍐�)',
+    monolithicTotalArea: '509.78',
+    total: '169',
+    productTotalArea: '175.31',
+    perimeter: '99.84',
+    radius: '0',
+    createTime: '1)鎸変紒鏍�2)姣忕墖鐜荤拑鏍囩璐村澶栭潰銆傚唴鐗囩幓鐠冩墦鈥�3C鍟嗘爣鈥濓紝缁熶竴鎵撳湪鐜荤拑鈥滃搴︹�濇柟鍚戝彸涓嬭4)鎸夋壒娆″崟鐙惤鏋躲��',
+  },
+  {
+    salesOrderNo: 'NG231201',
+    productionOrderNo: 'NG231201A',
+    entryName: '淇″悎鏄ュぉ閲�',
+    batch: '23鎵�',
+    productName: '5mm鐧界幓骞抽挗(澶�)+0.76PVB閫忔槑+5mm鐧界幓骞抽挗(鍐�)',
+    monolithicTotalArea: '509.78',
+    total: '169',
+    productTotalArea: '175.31',
+    perimeter: '99.84',
+    radius: '0',
+    createTime: '1)鎸変紒鏍�2)姣忕墖鐜荤拑鏍囩璐村澶栭潰銆傚唴鐗囩幓鐠冩墦鈥�3C鍟嗘爣鈥濓紝缁熶竴鎵撳湪鐜荤拑鈥滃搴︹�濇柟鍚戝彸涓嬭4)鎸夋壒娆″崟鐙惤鏋躲��',
+  },
+  {
+    salesOrderNo: 'NG231201',
+    productionOrderNo: 'NG231201A',
+    entryName: '淇″悎鏄ュぉ閲�',
+    batch: '23鎵�',
+    productName: '5mm鐧界幓骞抽挗(澶�)+0.76PVB閫忔槑+5mm鐧界幓骞抽挗(鍐�)',
+    monolithicTotalArea: '509.78',
+    total: '169',
+    productTotalArea: '175.31',
+    perimeter: '99.84',
+    radius: '0',
+    createTime: '1)鎸変紒鏍�2)姣忕墖鐜荤拑鏍囩璐村澶栭潰銆傚唴鐗囩幓鐠冩墦鈥�3C鍟嗘爣鈥濓紝缁熶竴鎵撳湪鐜荤拑鈥滃搴︹�濇柟鍚戝彸涓嬭4)鎸夋壒娆″崟鐙惤鏋躲��',
+  },
+]
+</script>
+
+<template>
+  <div>
+  <div id="selectForm">
+    <el-row :gutter="0">
+      <el-input placeholder="閿�鍞崟鍙�" v-model="form.name" style="width: 200px"/>
+      &nbsp;&nbsp;
+      <el-button type="primary">鏌ヨ</el-button>
+    </el-row>
+
+
+  </div>
+  <div>
+
+    <el-table :data="tableData" border style="width: 100%" height="100%">
+      <el-table-column fixed label="鎿嶄綔" width="100"  >
+        <el-button link type="primary" size="small">涓嬭揪</el-button>
+        <el-button link type="primary" size="small">鍙栨秷</el-button>
+      </el-table-column>
+      <el-table-column sortable prop="salesOrderNo" label="閿�鍞崟鍙�" width="110"  />
+      <el-table-column prop="productionOrderNo" label="鐢熶骇璁㈠崟鍙�" :show-overflow-tooltip='true' width="110" />
+      <el-table-column prop="entryName" label="椤圭洰鍚嶇О" width="155" />
+      <el-table-column prop="batch" label="鎵规" width="80" />
+      <el-table-column prop="productName" label="浜у搧鍚嶇О" :show-overflow-tooltip='true' width="180" />
+      <el-table-column prop="monolithicTotalArea" label="鍗曠墖鎬婚潰绉�" width="100" />
+      <el-table-column prop="total" label="鎬绘暟閲�" width="75" />
+      <el-table-column prop="productTotalArea" label="鎴愬搧鎬婚潰绉�" width="100" />
+      <el-table-column prop="perimeter" label="鍛ㄩ暱" width="100" />
+      <el-table-column prop="radius" label="鍗婂緞" width="70" />
+      <el-table-column prop="createTime" label="鍔犲伐瑕佹眰" :show-overflow-tooltip='true' width="350" />
+    </el-table><!-- <h1>{{msg}}</h1> -->
+  </div>
+  </div>
+</template>
+
+<style scoped>
+
+</style>
\ No newline at end of file
diff --git a/north-glass-erp/northglass-erp/src/views/pp/workOrder/SelectAddWorkOrder.vue b/north-glass-erp/northglass-erp/src/views/pp/workOrder/SelectAddWorkOrder.vue
new file mode 100644
index 0000000..c1d2881
--- /dev/null
+++ b/north-glass-erp/northglass-erp/src/views/pp/workOrder/SelectAddWorkOrder.vue
@@ -0,0 +1,136 @@
+<script lang="ts" setup>
+import { reactive } from 'vue'
+
+// do not use same name with ref
+const form = reactive({
+  name: '',
+  region: '',
+  date1: '',
+  date2: '',
+  delivery: false,
+  type: [],
+  resource: '',
+  desc: '',
+})
+const tableData = [
+  {
+    salesOrderNo: 'NG231201',
+    customerName:"鎱曞鍏徃",
+    entryName: '淇″悎鏄ュぉ閲�',
+    batch: '23鎵�',
+    originalFilmRequired: '2022/5/24XFPO202205202',
+    orderType: '鏅�氳鍗�',
+    salesman: 'XXX',
+    processRequirements: '1)鎸変紒鏍�2)姣忕墖鐜荤拑鏍囩璐村澶栭潰銆傚唴鐗囩幓鐠冩墦鈥�3C鍟嗘爣鈥濓紝缁熶竴鎵撳湪鐜荤拑鈥滃搴︹�濇柟鍚戝彸涓嬭4)鎸夋壒娆″崟鐙惤鏋躲��',
+    shipTo:'宸ュ湴',
+
+  },
+  {
+    salesOrderNo: 'NG231202',
+    customerName:"澶ц崚寤烘潗鏈夐檺鍏徃",
+    entryName: '淇″悎鏄ュぉ閲�',
+    batch: '23鎵�',
+    originalFilmRequired: '2022/5/24XFPO202205202',
+    orderType: '鏅�氳鍗�',
+    salesman: 'XXX',
+    processRequirements: '1)鎸変紒鏍�2)姣忕墖鐜荤拑鏍囩璐村澶栭潰銆傚唴鐗囩幓鐠冩墦鈥�3C鍟嗘爣鈥濓紝缁熶竴鎵撳湪鐜荤拑鈥滃搴︹�濇柟鍚戝彸涓嬭4)鎸夋壒娆″崟鐙惤鏋躲��',
+    shipTo:'宸ュ湴',
+
+  },
+  {
+    salesOrderNo: 'NG231203',
+    customerName:"寤虹瓚宸ョ▼闆嗗洟鏈夐檺鍏徃",
+    entryName: '淇″悎鏄ュぉ閲�',
+    batch: '23鎵�',
+    originalFilmRequired: '2022/5/24XFPO202205202',
+    orderType: '鏅�氳鍗�',
+    salesman: 'XXX',
+    processRequirements: '1)鎸変紒鏍�2)姣忕墖鐜荤拑鏍囩璐村澶栭潰銆傚唴鐗囩幓鐠冩墦鈥�3C鍟嗘爣鈥濓紝缁熶竴鎵撳湪鐜荤拑鈥滃搴︹�濇柟鍚戝彸涓嬭4)鎸夋壒娆″崟鐙惤鏋躲��',
+    shipTo:'宸ュ湴',
+
+  },
+  {
+    salesOrderNo: 'NG231204',
+    customerName:"鎱曞鍏徃",
+    entryName: '淇″悎鏄ュぉ閲�',
+    batch: '23鎵�',
+    originalFilmRequired: '2022/5/24XFPO202205202',
+    orderType: '鏅�氳鍗�',
+    salesman: 'XXX',
+    processRequirements: '1)鎸変紒鏍�2)姣忕墖鐜荤拑鏍囩璐村澶栭潰銆傚唴鐗囩幓鐠冩墦鈥�3C鍟嗘爣鈥濓紝缁熶竴鎵撳湪鐜荤拑鈥滃搴︹�濇柟鍚戝彸涓嬭4)鎸夋壒娆″崟鐙惤鏋躲��',
+    shipTo:'宸ュ湴',
+
+  },
+  {
+    salesOrderNo: 'NG231205',
+    customerName:"鎱曞鍏徃",
+    entryName: '淇″悎鏄ュぉ閲�',
+    batch: '23鎵�',
+    originalFilmRequired: '2022/5/24XFPO202205202',
+    orderType: '鏅�氳鍗�',
+    salesman: 'XXX',
+    processRequirements: '1)鎸変紒鏍�2)姣忕墖鐜荤拑鏍囩璐村澶栭潰銆傚唴鐗囩幓鐠冩墦鈥�3C鍟嗘爣鈥濓紝缁熶竴鎵撳湪鐜荤拑鈥滃搴︹�濇柟鍚戝彸涓嬭4)鎸夋壒娆″崟鐙惤鏋躲��',
+    shipTo:'宸ュ湴',
+
+  },
+  {
+    salesOrderNo: 'NG231206',
+    customerName:"鎱曞鍏徃",
+    entryName: '淇″悎鏄ュぉ閲�',
+    batch: '23鎵�',
+    originalFilmRequired: '2022/5/24XFPO202205202',
+    orderType: '鏅�氳鍗�',
+    salesman: 'XXX',
+    processRequirements: '1)鎸変紒鏍�2)姣忕墖鐜荤拑鏍囩璐村澶栭潰銆傚唴鐗囩幓鐠冩墦鈥�3C鍟嗘爣鈥濓紝缁熶竴鎵撳湪鐜荤拑鈥滃搴︹�濇柟鍚戝彸涓嬭4)鎸夋壒娆″崟鐙惤鏋躲��',
+    shipTo:'宸ュ湴',
+
+  },
+  {
+    salesOrderNo: 'NG231207',
+    customerName:"鎱曞鍏徃",
+    entryName: '淇″悎鏄ュぉ閲�',
+    batch: '23鎵�',
+    originalFilmRequired: '2022/5/24XFPO202205202',
+    orderType: '鏅�氳鍗�',
+    salesman: 'XXX',
+    processRequirements: '1)鎸変紒鏍�2)姣忕墖鐜荤拑鏍囩璐村澶栭潰銆傚唴鐗囩幓鐠冩墦鈥�3C鍟嗘爣鈥濓紝缁熶竴鎵撳湪鐜荤拑鈥滃搴︹�濇柟鍚戝彸涓嬭4)鎸夋壒娆″崟鐙惤鏋躲��',
+    shipTo:'宸ュ湴',
+
+  },
+]
+</script>
+
+<template>
+  <div>
+  <div id="selectForm">
+    <el-row :gutter="0">
+      <el-input placeholder="閿�鍞崟鍙�" v-model="form.name" style="width: 200px"/>
+      &nbsp;&nbsp;
+      <el-button type="primary">鏌ヨ</el-button>
+    </el-row>
+
+
+  </div>
+  <div>
+    <el-table :data="tableData" border style="width: 100%" height="100%">
+      <el-table-column sortable prop="salesOrderNo" label="閿�鍞崟鍙�" width="110" >
+        <template v-slot="scope">
+          <router-link :to="{path:'addWorkOrder'}" >{{scope.row.salesOrderNo}}</router-link>
+        </template>
+      </el-table-column>
+      <el-table-column prop="customerName" label="瀹㈡埛鍚嶇О" :show-overflow-tooltip='true' width="110" />
+      <el-table-column prop="entryName" label="椤圭洰鍚嶇О" width="135" />
+      <el-table-column prop="batch" label="鎵规" width="80" />
+      <el-table-column prop="originalFilmRequired" :show-overflow-tooltip='true' label="鍘熺墖瑕佹眰" width="200" />
+      <el-table-column prop="orderType" label="璁㈠崟绫诲瀷" width="100" />
+      <el-table-column prop="salesman" label="涓氬姟鍛�" width="75" />
+      <el-table-column prop="processRequirements" :show-overflow-tooltip='true' label="鍔犲伐瑕佹眰" width="400" />
+      <el-table-column prop="shipTo" label="閫佽揣鍦板潃" width="100" />
+    </el-table><!-- <h1>{{msg}}</h1> -->
+  </div>
+  </div>
+</template>
+
+<style scoped>
+
+</style>
\ No newline at end of file
diff --git a/north-glass-erp/northglass-erp/src/views/pp/workOrder/SelectWorkOrder.vue b/north-glass-erp/northglass-erp/src/views/pp/workOrder/SelectWorkOrder.vue
new file mode 100644
index 0000000..83a219b
--- /dev/null
+++ b/north-glass-erp/northglass-erp/src/views/pp/workOrder/SelectWorkOrder.vue
@@ -0,0 +1,168 @@
+<script lang="ts" setup>
+import {reactive, ref} from 'vue'
+
+
+
+
+const defaultTime = ref<[Date, Date]>([
+  new Date(2000, 1, 1, 0, 0, 0),
+  new Date(2000, 2, 1, 23, 59, 59),
+])
+// do not use same name with ref
+const form = reactive({
+  name: '',
+  region: '',
+  date1: '',
+  date2: '',
+  delivery: false,
+  type: [],
+  resource: '',
+  desc: '',
+})
+
+
+const tableData = [
+  {
+    salesOrderNo: 'NG231201',
+    productionOrderNo: 'NG231201A',
+    entryName: '淇″悎鏄ュぉ閲�',
+    batch: '23鎵�',
+    productName: '5mm鐧界幓骞抽挗(澶�)+0.76PVB閫忔槑+5mm鐧界幓骞抽挗(鍐�)',
+    monolithicTotalArea: '509.78',
+    total: '169',
+    productTotalArea: '175.31',
+    perimeter: '99.84',
+    radius: '0',
+    createTime: '1)鎸変紒鏍�2)姣忕墖鐜荤拑鏍囩璐村澶栭潰銆傚唴鐗囩幓鐠冩墦鈥�3C鍟嗘爣鈥濓紝缁熶竴鎵撳湪鐜荤拑鈥滃搴︹�濇柟鍚戝彸涓嬭4)鎸夋壒娆″崟鐙惤鏋躲��',
+  },
+  {
+    salesOrderNo: 'NG231201',
+    productionOrderNo: 'NG231201B',
+    entryName: '淇″悎鏄ュぉ閲�',
+    batch: '23鎵�',
+    productName: '5mm鐧界幓骞抽挗(澶�)+0.76PVB閫忔槑+5mm鐧界幓骞抽挗(鍐�)',
+    monolithicTotalArea: '509.78',
+    total: '169',
+    productTotalArea: '175.31',
+    perimeter: '99.84',
+    radius: '0',
+    createTime: '1)鎸変紒鏍�2)姣忕墖鐜荤拑鏍囩璐村澶栭潰銆傚唴鐗囩幓鐠冩墦鈥�3C鍟嗘爣鈥濓紝缁熶竴鎵撳湪鐜荤拑鈥滃搴︹�濇柟鍚戝彸涓嬭4)鎸夋壒娆″崟鐙惤鏋躲��',
+  },
+  {
+    salesOrderNo: 'NG231202',
+    productionOrderNo: 'NG231202A',
+    entryName: '淇″悎鏄ュぉ閲�',
+    batch: '23鎵�',
+    productName: '5mm鐧界幓骞抽挗(澶�)+0.76PVB閫忔槑+5mm鐧界幓骞抽挗(鍐�)',
+    monolithicTotalArea: '509.78',
+    total: '169',
+    productTotalArea: '175.31',
+    perimeter: '99.84',
+    radius: '0',
+    createTime: '1)鎸変紒鏍�2)姣忕墖鐜荤拑鏍囩璐村澶栭潰銆傚唴鐗囩幓鐠冩墦鈥�3C鍟嗘爣鈥濓紝缁熶竴鎵撳湪鐜荤拑鈥滃搴︹�濇柟鍚戝彸涓嬭4)鎸夋壒娆″崟鐙惤鏋躲��',
+  },
+  {
+    salesOrderNo: 'NG231203',
+    productionOrderNo: 'NG231203A',
+    entryName: '淇″悎鏄ュぉ閲�',
+    batch: '23鎵�',
+    productName: '5mm鐧界幓骞抽挗(澶�)+0.76PVB閫忔槑+5mm鐧界幓骞抽挗(鍐�)',
+    monolithicTotalArea: '509.78',
+    total: '169',
+    productTotalArea: '175.31',
+    perimeter: '99.84',
+    radius: '0',
+    createTime: '1)鎸変紒鏍�2)姣忕墖鐜荤拑鏍囩璐村澶栭潰銆傚唴鐗囩幓鐠冩墦鈥�3C鍟嗘爣鈥濓紝缁熶竴鎵撳湪鐜荤拑鈥滃搴︹�濇柟鍚戝彸涓嬭4)鎸夋壒娆″崟鐙惤鏋躲��',
+  },
+  {
+    salesOrderNo: 'NG231204',
+    productionOrderNo: 'NG231204A',
+    entryName: '淇″悎鏄ュぉ閲�',
+    batch: '23鎵�',
+    productName: '5mm鐧界幓骞抽挗(澶�)+0.76PVB閫忔槑+5mm鐧界幓骞抽挗(鍐�)',
+    monolithicTotalArea: '509.78',
+    total: '169',
+    productTotalArea: '175.31',
+    perimeter: '99.84',
+    radius: '0',
+    createTime: '1)鎸変紒鏍�2)姣忕墖鐜荤拑鏍囩璐村澶栭潰銆傚唴鐗囩幓鐠冩墦鈥�3C鍟嗘爣鈥濓紝缁熶竴鎵撳湪鐜荤拑鈥滃搴︹�濇柟鍚戝彸涓嬭4)鎸夋壒娆″崟鐙惤鏋躲��',
+  },
+  {
+    salesOrderNo: 'NG231205',
+    productionOrderNo: 'NG231205A',
+    entryName: '淇″悎鏄ュぉ閲�',
+    batch: '23鎵�',
+    productName: '5mm鐧界幓骞抽挗(澶�)+0.76PVB閫忔槑+5mm鐧界幓骞抽挗(鍐�)',
+    monolithicTotalArea: '509.78',
+    total: '169',
+    productTotalArea: '175.31',
+    perimeter: '99.84',
+    radius: '0',
+    createTime: '1)鎸変紒鏍�2)姣忕墖鐜荤拑鏍囩璐村澶栭潰銆傚唴鐗囩幓鐠冩墦鈥�3C鍟嗘爣鈥濓紝缁熶竴鎵撳湪鐜荤拑鈥滃搴︹�濇柟鍚戝彸涓嬭4)鎸夋壒娆″崟鐙惤鏋躲��',
+  },
+  {
+    salesOrderNo: 'NG231206',
+    productionOrderNo: 'NG231206A',
+    entryName: '淇″悎鏄ュぉ閲�',
+    batch: '23鎵�',
+    productName: '5mm鐧界幓骞抽挗(澶�)+0.76PVB閫忔槑+5mm鐧界幓骞抽挗(鍐�)',
+    monolithicTotalArea: '509.78',
+    total: '169',
+    productTotalArea: '175.31',
+    perimeter: '99.84',
+    radius: '0',
+    createTime: '1)鎸変紒鏍�2)姣忕墖鐜荤拑鏍囩璐村澶栭潰銆傚唴鐗囩幓鐠冩墦鈥�3C鍟嗘爣鈥濓紝缁熶竴鎵撳湪鐜荤拑鈥滃搴︹�濇柟鍚戝彸涓嬭4)鎸夋壒娆″崟鐙惤鏋躲��',
+  },
+]
+</script>
+
+<template>
+  <div class="div-main">
+    <div id="selectForm">
+      <el-row :gutter="0">
+        <el-input placeholder="閿�鍞崟鍙�" v-model="form.name" style="width: 200px"/>
+        &nbsp;&nbsp;
+        <el-date-picker
+            v-model="form.date1"
+            type="daterange"
+            start-placeholder="寮�濮嬫椂闂�"
+            end-placeholder="缁撴潫鏃堕棿"
+            :default-time="defaultTime"
+        />
+        &nbsp;&nbsp;
+        <el-button type="primary">鏌ヨ</el-button>
+      </el-row>
+
+    </div>
+    <div>
+      <el-table :data="tableData" border style="width: 100%" height="100%">
+        <el-table-column fixed label="鎿嶄綔" width="120"  >
+          <el-button link type="primary" size="small">杞伐鍗�</el-button>
+          <el-button link type="primary" size="small">鍒犻櫎</el-button>
+        </el-table-column>
+        <el-table-column sortable prop="salesOrderNo" label="閿�鍞崟鍙�" width="110"  />
+        <el-table-column prop="entryName" label="椤圭洰鍚嶇О" width="155" />
+        <el-table-column prop="batch" label="鎵规" width="80" />
+        <el-table-column prop="productName" label="浜у搧鍚嶇О" :show-overflow-tooltip='true' width="180" />
+        <el-table-column prop="monolithicTotalArea" label="鍗曠墖鎬婚潰绉�" width="100" />
+        <el-table-column prop="total" label="鎬绘暟閲�" width="75" />
+        <el-table-column prop="productTotalArea" label="鎴愬搧鎬婚潰绉�" width="100" />
+        <el-table-column prop="perimeter" label="鍛ㄩ暱" width="100" />
+        <el-table-column prop="radius" label="鍗婂緞" width="70" />
+        <el-table-column prop="createTime" label="鍔犲伐瑕佹眰" :show-overflow-tooltip='true' width="350" />
+      </el-table><!-- <h1>{{msg}}</h1> -->
+    </div>
+
+  </div>
+</template>
+
+<style scoped>
+.div-main{
+  width: 100%;
+  height: 100%;
+}
+#selectForm {
+  width: 50%;
+  text-align: center;
+}
+</style>
\ No newline at end of file
diff --git a/north-glass-erp/northglass-erp/src/views/pp/workOrder/WorkOrder.vue b/north-glass-erp/northglass-erp/src/views/pp/workOrder/WorkOrder.vue
new file mode 100644
index 0000000..d9e7a19
--- /dev/null
+++ b/north-glass-erp/northglass-erp/src/views/pp/workOrder/WorkOrder.vue
@@ -0,0 +1,71 @@
+<script setup>
+import {ref} from "vue";
+import {ArrowLeftBold, ArrowRight} from "@element-plus/icons-vue";
+import request from "@/utils/request";
+import deepClone from "@/utils/deepClone";
+import {ElMessage} from "element-plus";
+import {useRouter} from "vue-router";
+import  GlassType from '@/components/basic/product/GlassType.vue'
+
+
+
+const router = useRouter()
+let flag = $ref(true)
+let flag1 = $ref(true)
+function intoRelease(){
+  if(flag){
+    router.push('/main/workOrder/ReleaseWorkOrder')
+  }else {
+    router.push('/main/workOrder/SelectWorkOrder')
+  }
+  flag=!flag
+}
+function intoAddWorkOrder(){
+  if(flag1){
+    router.push('/main/workOrder/SelectAddWorkOrder')
+  }else {
+    router.push('/main/workOrder/SelectWorkOrder')
+  }
+  flag1=!flag1
+}
+</script>
+
+<template>
+  <div id="main">
+    <div id="div-title">
+      <el-breadcrumb :separator-icon="ArrowRight">
+        <el-breadcrumb-item :to="{ path: '/main/workOrder/SelectWorkOrder' }">宸ュ崟绠$悊</el-breadcrumb-item>
+        <el-breadcrumb-item :to="{ path: '/main/workOrder/SelectAddWorkOrder' }">杞敓浜ц鍗�</el-breadcrumb-item>
+        <el-breadcrumb-item :to="{ path: '/main/processCard/SelectPrintFlowCard' }" style="display: none">鎵撳嵃</el-breadcrumb-item>
+      </el-breadcrumb>
+    </div>
+
+    <div id="main-body">
+      <router-view  />
+    </div>
+  </div>
+</template>
+
+<style scoped>
+#main{
+  width: 100%;
+  height: 100%;
+}
+#div-title{
+  height: 5%;
+  width: 100%;
+}
+#searchButton{
+  margin-top: -5px;
+  margin-left: 1rem;
+}
+#searchButton1{
+//margin-left: 10rem;
+}
+/*main-body鏍峰紡*/
+#main-body{
+  width: 99%;
+  height: 92%;
+  margin-top: 1%;
+}
+</style>
\ No newline at end of file
diff --git a/north-glass-erp/northglass-erp/src/views/sd/customer/CreateCustomer.vue b/north-glass-erp/northglass-erp/src/views/sd/customer/CreateCustomer.vue
new file mode 100644
index 0000000..458c395
--- /dev/null
+++ b/north-glass-erp/northglass-erp/src/views/sd/customer/CreateCustomer.vue
@@ -0,0 +1,133 @@
+<script lang="ts" setup>
+import { reactive, ref } from 'vue'
+import type { FormInstance, FormRules } from 'element-plus'
+
+const ruleFormRef = ref<FormInstance>()
+
+const checkAge = (rule: any, value: any, callback: any) => {
+  if (!value) {
+    return callback(new Error('Please input the age'))
+  }
+  setTimeout(() => {
+    if (!Number.isInteger(value)) {
+      callback(new Error('Please input digits'))
+    } else {
+      if (value < 18) {
+        callback(new Error('Age must be greater than 18'))
+      } else {
+        callback()
+      }
+    }
+  }, 1000)
+}
+
+const validatePass = (rule: any, value: any, callback: any) => {
+  if (value === '') {
+    callback(new Error('Please input the password'))
+  } else {
+    if (ruleForm.checkPass !== '') {
+      if (!ruleFormRef.value) return
+      ruleFormRef.value.validateField('checkPass', () => null)
+    }
+    callback()
+  }
+}
+const validatePass2 = (rule: any, value: any, callback: any) => {
+  if (value === '') {
+    callback(new Error('Please input the password again'))
+  } else if (value !== ruleForm.pass) {
+    callback(new Error("Two inputs don't match!"))
+  } else {
+    callback()
+  }
+}
+
+const ruleForm = reactive({
+  pass: '',
+  checkPass: '',
+  age: '',
+})
+
+const rules = reactive<FormRules<typeof ruleForm>>({
+  pass: [{ validator: validatePass, trigger: 'blur' }],
+  checkPass: [{ validator: validatePass2, trigger: 'blur' }],
+  age: [{ validator: checkAge, trigger: 'blur' }],
+})
+
+const submitForm = (formEl: FormInstance | undefined) => {
+  if (!formEl) return
+  formEl.validate((valid) => {
+    if (valid) {
+      console.log('submit!')
+    } else {
+      console.log('error submit!')
+      return false
+    }
+  })
+}
+
+const resetForm = (formEl: FormInstance | undefined) => {
+  if (!formEl) return
+  formEl.resetFields()
+}
+</script>
+
+<template>
+  <div class="main-div">
+    <div class="div-form">
+      <el-form
+          ref="ruleFormRef"
+          :model="ruleForm"
+          status-icon
+          :rules="rules"
+          label-width="120px"
+          class="demo-ruleForm"
+      >
+        <el-form-item label="瀹㈡埛鍚嶇О" prop="pass">
+          <el-input  v-model="ruleForm.pass" type="text" autocomplete="off" />
+        </el-form-item>
+        <el-form-item label="瀹㈡埛绛夌骇" prop="checkPass">
+          <el-input
+              v-model="ruleForm.checkPass"
+              type="text"
+              autocomplete="off"
+          />
+        </el-form-item>
+        <el-form-item label="淇$敤棰濆害" prop="age">
+          <el-input v-model.number="ruleForm.age" />
+        </el-form-item>
+        <el-form-item label="鍦板潃" prop="age">
+          <el-input v-model.number="ruleForm.age" />
+        </el-form-item>
+        <el-form-item label="鑱旂郴浜�" prop="age">
+          <el-input v-model.number="ruleForm.age" />
+        </el-form-item>
+        <el-form-item label="鑱旂郴鐢佃瘽" prop="age">
+          <el-input v-model.number="ruleForm.age" />
+        </el-form-item>
+        <el-form-item>
+          <el-button type="primary" @click="submitForm(ruleFormRef)"
+          >淇濆瓨</el-button
+          >
+          <el-button @click="resetForm(ruleFormRef)">閲嶇疆</el-button>
+        </el-form-item>
+      </el-form>
+    </div>
+  </div>
+
+
+</template>
+
+
+<style scoped>
+.main-div{
+  width: 100%;
+  height: 100%;
+}
+
+.div-form{
+  margin-left: 30%;
+  height:70%;
+  width: 40%;
+}
+</style>
\ No newline at end of file
diff --git a/north-glass-erp/northglass-erp/src/views/sd/customer/Customer.vue b/north-glass-erp/northglass-erp/src/views/sd/customer/Customer.vue
new file mode 100644
index 0000000..d69b78d
--- /dev/null
+++ b/north-glass-erp/northglass-erp/src/views/sd/customer/Customer.vue
@@ -0,0 +1,47 @@
+<script setup>
+import {ArrowLeftBold, ArrowRight, Search} from "@element-plus/icons-vue"
+import {useRouter} from "vue-router";
+
+</script>
+
+<template>
+  <div id="main-div">
+    <div id="div-title">
+      <el-breadcrumb :separator-icon="ArrowRight">
+        <el-breadcrumb-item :to="{ path: '/main/customer/selectCustomer' }">瀹㈡埛棣栭〉</el-breadcrumb-item>
+        <el-breadcrumb-item :to="{ path: '/main/customer/CreateCustomer' }">鏂板</el-breadcrumb-item>
+      </el-breadcrumb>
+    </div>
+
+    <div id="main-body">
+      <router-view  />
+    </div>
+  </div>
+</template>
+
+<style scoped>
+#main-div{
+  width: 100%;
+  height: 100%;
+}
+#div-title{
+  height: 2%;
+  width: 100%;
+}
+#searchButton{
+  margin-top: -5px;
+  margin-left: 1rem;
+}
+#searchButton1{
+//margin-left: 10rem;
+}
+/*main-body鏍峰紡*/
+#main-body{
+  width: 100%;
+  height: 95%;
+  margin-top: 1%;
+}
+#select{
+  margin-left:0.5rem;
+}
+</style>
\ No newline at end of file
diff --git a/north-glass-erp/northglass-erp/src/views/sd/customer/SelectCustomer.vue b/north-glass-erp/northglass-erp/src/views/sd/customer/SelectCustomer.vue
new file mode 100644
index 0000000..9e4fdd9
--- /dev/null
+++ b/north-glass-erp/northglass-erp/src/views/sd/customer/SelectCustomer.vue
@@ -0,0 +1,73 @@
+<script setup>
+
+let orderList = $ref([
+  {
+    '0':'1',
+    '1':'澶粨鍗撻珮鐜荤拑鍒跺搧鏈夐檺鍏徃',
+    '2':'A',
+    '3':'100000',
+    '4':'姹熻嫃澶粨xxxx琛楅亾',
+    '5':'寮犱笁',
+    '6':'139xxxxxxxx',
+
+  },
+  {
+    '0':'1',
+    '1':'灞辫タ鏌愭煇鍏徃',
+    '2':'A',
+    '3':'100000',
+    '4':'姹熻嫃澶粨xxxx琛楅亾',
+    '5':'寮犱笁',
+    '6':'139xxxxxxxx',
+
+  }
+])
+
+let titleList = $ref([
+  '瀹㈡埛缂栫爜',
+  '鍚嶇О',
+  '瀹㈡埛绛夌骇',
+  '淇$敤棰濆害',
+  '鍦板潃',
+  '鑱旂郴浜�',
+  '鑱旂郴鐢佃瘽'
+])
+</script>
+
+<template>
+  <div class="main-div-customer">
+    <el-table
+        :data="orderList"
+        :header-cell-style="{ 'text-align': 'center' }"
+        :cell-style="{ 'text-align': 'center' }"
+        lazy
+        border
+    >
+      <el-table-column type="expand" fixed>
+        <template #default="props" >
+          <div m="4">
+
+            <p m="t-0 b-2">瀹㈡埛鐩稿叧淇℃伅</p>
+          </div>
+        </template>
+      </el-table-column>
+      <el-table-column label="鎿嶄綔" fixed width="110"  >
+        <el-button link type="primary" size="small">缂栬緫</el-button>
+        <el-button link type="primary" size="small">鍒犻櫎</el-button>
+      </el-table-column>
+      <el-table-column
+          :prop="index.toString()"
+          :show-overflow-tooltip='true'
+           v-for="(item,index) in titleList"
+          :label="item" >
+      </el-table-column>
+    </el-table>
+  </div>
+</template>
+
+<style scoped>
+.main-div-customer{
+  width: 99%;
+  height: 100%;
+}
+</style>
\ No newline at end of file
diff --git a/north-glass-erp/northglass-erp/src/views/sd/delivery/CreateDelivery.vue b/north-glass-erp/northglass-erp/src/views/sd/delivery/CreateDelivery.vue
new file mode 100644
index 0000000..e6c9abd
--- /dev/null
+++ b/north-glass-erp/northglass-erp/src/views/sd/delivery/CreateDelivery.vue
@@ -0,0 +1,169 @@
+<script setup>
+
+let deliveryTitle = $ref([
+  '閿�鍞崟鍙�',
+  '鎵规',
+  '搴撳瓨鍙彂',
+  '鏈彂鏁伴噺',
+  '鎬绘暟閲�',
+  '鏈鍙戣揣鏁伴噺',
+  '妤煎彿',
+  '浜у搧缂栧彿',
+  '浜у搧鍚嶇О',
+  '鍗曚环',
+  '搴撳尯',
+  '寮傚舰鍙傛暟',
+  '閲戦',
+  '瀹�',
+  '楂�',
+  '褰㈢姸',
+  '瀹為檯鍗曠墖/鎬婚潰绉�',
+  '缁撶畻鍗曠墖闈㈢Н',
+  '缁撶畻鎬婚潰绉�',
+  '鍔犲伐瑕佹眰',
+  '澶囨敞',
+  '纾ㄨ竟绫诲瀷',
+  '鍛ㄩ暱',
+
+
+])
+
+let deliveryList =[
+  {
+    '0': 'NG23110101',
+    '1': '20鎵�1',
+    '2': '16',
+    '3': '18',
+    '4': '20',
+    '5': '20',
+    '6': 'A妤糱灞�',
+    '7': '101',
+    '8': '10mmLYTM-140寮挗鍖�',
+    '9': '1008.38',
+    '10': 'A鍙锋煴瀛�',
+    '11': '',
+    '12': '100',
+    '13': '3360',
+    '14': '2440',
+    '15': '鏅舰',
+    '16': '1.11/100.1',
+    '17': '1.22',
+    '18': '11.11',
+    '19': '杩欐槸鍔犲伐瑕佹眰',
+    '20': '杩欐槸澶囨敞',
+    '21': '杩欐槸纾ㄨ竟绫诲瀷',
+    '22': '1.1'
+  }
+]
+</script>
+
+<template>
+  <div class="main-div">
+    <div class="order-primary">
+      <el-row>
+        <el-col  :span="2"><el-text>瀹㈡埛缂栫爜:</el-text></el-col>
+        <el-col  :span="5"><el-text style="font-size: large;color: #181818">131</el-text></el-col>
+        <el-col  :span="2"><el-text>瀹㈡埛鍚嶇О:</el-text></el-col>
+        <el-col  :span="5"><el-text></el-text></el-col>
+        <el-col  :span="2"><el-text>椤圭洰鍚嶇О:</el-text></el-col>
+        <el-col  :span="5"><el-text></el-text></el-col>
+      </el-row>
+      <el-row>
+        <el-col  :span="2"><el-text>浠樻鏉′欢:</el-text></el-col>
+        <el-col  :span="5">
+          <el-select  clearable  >
+            <el-option/>
+          </el-select>
+        </el-col>
+        <el-col  :span="2"><el-text>鏀舵鏂瑰紡:</el-text></el-col>
+        <el-col  :span="5"></el-col>
+        <el-col  :span="2"><el-text>鏀舵鏃ユ湡:</el-text></el-col>
+        <el-col  :span="5">
+          <el-date-picker
+              type="week"
+              format="[Week] ww"
+              placeholder="閫夋嫨鏃ユ湡"/>
+        </el-col>
+
+      </el-row>
+      <el-row>
+        <el-col  :span="2"><el-text>鑱旂郴浜�:</el-text></el-col>
+        <el-col  :span="5"><el-input/></el-col>
+        <el-col  :span="2"><el-text>鑱旂郴鐢佃瘽:</el-text></el-col>
+        <el-col  :span="5"><el-input/></el-col>
+        <el-col  :span="2"><el-text>閫佽揣鍦板潃:</el-text></el-col>
+        <el-col  :span="5"><el-input/></el-col>
+      </el-row>
+      <el-row>
+        <el-col  :span="2"><el-text>澶囨敞:</el-text></el-col>
+        <el-col  :span="5"><el-input/></el-col>
+        <el-col  :span="2"><el-text>鎶ヨ〃鏃ユ湡:</el-text></el-col>
+        <el-col  :span="5"></el-col>
+        <el-col  :span="2"><el-text>鍙戣揣鎶ヨ〃鏃ユ湡:</el-text></el-col>
+        <el-col  :span="5">
+          <el-date-picker
+              type="week"
+              format="[Week] ww"
+              placeholder="閫夋嫨鏃ユ湡"/>
+        </el-col>
+      </el-row>
+      <el-row>
+        <el-col  :span="2"><el-text>涓氬姟鍛�:</el-text></el-col>
+        <el-col  :span="5"><el-text style="font-size: large;color: #181818"></el-text></el-col>
+        <el-col  :span="2"><el-text>鍙戣揣鍛�:</el-text></el-col>
+        <el-col  :span="5"><el-text style="font-size: large;color: #181818"></el-text></el-col>
+        <el-col style="background-color: #337ecc" :span="2"><el-button style="width: 100%" type="primary">淇濆瓨</el-button></el-col>
+      </el-row>
+    </div>
+    <div class="order-detail">
+      <el-table
+          :data="deliveryList"
+          :header-cell-style="{ 'text-align': 'center' }"
+          :cell-style="{ 'text-align': 'center' }"
+          border
+      >
+        <el-table-column type="expand" fixed>
+          <template #default="props" >
+            <div m="4">
+              <p m="t-0 b-2">璁㈠崟鍙戣揣鏈夊叧鎵�鏈変俊鎭�</p>
+            </div>
+          </template>
+        </el-table-column>
+        <el-table-column  label="閫夊垯" fixed>
+          <el-checkbox/>
+        </el-table-column>
+        <el-table-column
+            :prop="index.toString()"
+            :show-overflow-tooltip='true'
+            width="100" v-for="(item,index) in deliveryTitle"
+            :label="item" />
+
+      </el-table>
+    </div>
+  </div>
+
+</template>
+
+<style scoped>
+.main-div {
+  width: 100%;
+  height: 100%;
+  text-align: center;
+}
+.el-col{
+  border: #181818 1px solid;
+}
+:deep(.el-input__wrapper) {
+  box-shadow: 0 0 0 0 var(--el-input-border-color, var(--el-border-color)) inset;
+  cursor: default;
+  border: none !important;
+  background-color: transparent;
+}
+.order-primary{
+  width: 100%;
+}
+.order-detail{
+  width: 100%;
+  height: 70%;
+}
+</style>
\ No newline at end of file
diff --git a/north-glass-erp/northglass-erp/src/views/sd/delivery/Delivery.vue b/north-glass-erp/northglass-erp/src/views/sd/delivery/Delivery.vue
new file mode 100644
index 0000000..47fc1be
--- /dev/null
+++ b/north-glass-erp/northglass-erp/src/views/sd/delivery/Delivery.vue
@@ -0,0 +1,48 @@
+<script setup>
+import {ArrowLeftBold, ArrowRight, Search} from "@element-plus/icons-vue"
+import {useRouter} from "vue-router";
+
+</script>
+
+<template>
+  <div id="main-div">
+    <div id="div-title">
+      <el-breadcrumb :separator-icon="ArrowRight">
+        <el-breadcrumb-item :to="{ path: '/main/delivery/selectDelivery' }">鍙戣揣棣栭〉</el-breadcrumb-item>
+        <el-breadcrumb-item :to="{ path: '/main/delivery/selectOrderList' }">璁㈠崟鍙戣揣</el-breadcrumb-item>
+        <el-breadcrumb-item :to="{ path: '/main/delivery/deliveryReport' }">鎶ヨ〃</el-breadcrumb-item>
+      </el-breadcrumb>
+    </div>
+
+    <div id="main-body">
+      <router-view  />
+    </div>
+  </div>
+</template>
+
+<style scoped>
+#main-div{
+  width: 100%;
+  height: 100%;
+}
+#div-title{
+  height: 2%;
+  width: 100%;
+}
+#searchButton{
+  margin-top: -5px;
+  margin-left: 1rem;
+}
+#searchButton1{
+//margin-left: 10rem;
+}
+/*main-body鏍峰紡*/
+#main-body{
+  width: 100%;
+  height: 95%;
+  margin-top: 1%;
+}
+#select{
+  margin-left:0.5rem;
+}
+</style>
\ No newline at end of file
diff --git a/north-glass-erp/northglass-erp/src/views/sd/delivery/DeliveryReport.vue b/north-glass-erp/northglass-erp/src/views/sd/delivery/DeliveryReport.vue
new file mode 100644
index 0000000..2b64e45
--- /dev/null
+++ b/north-glass-erp/northglass-erp/src/views/sd/delivery/DeliveryReport.vue
@@ -0,0 +1,96 @@
+<script setup>
+
+import {Folder, Search} from "@element-plus/icons-vue";
+
+let titleList = [
+  '搴忓彿',
+  '鍙戣揣鍗曞彿',
+  '閿�鍞崟鍙�',
+  '瀹㈡埛鍗曞彿',
+  '椤圭洰鍚嶇О',
+  '瀹㈡埛鍚嶇О',
+  '涓氬姟鍛�',
+  '閫佽揣鍦板潃',
+  '鍙戣揣鍛�',
+  '妤煎彿',
+  '浜у搧缂栧彿',
+  '浜у搧鍚嶇О',
+  '鏈鍙戣揣鏁伴噺',
+  '鍛ㄩ暱',
+  '瀹為檯闈㈢Н',
+  '鍙戣揣闈㈢Н',
+  '鍗曚环',
+  '鍙戣揣閲戦',
+  '瀹�',
+  '楂�',
+  '褰㈢姸',
+  '纾ㄨ竟绫诲瀷',
+  '澶囨敞',
+  '鍔犲伐瑕佹眰',
+  '寤虹珛鏃堕棿'
+
+
+
+
+]
+</script>
+
+<template>
+  <div class="main-div">
+    <el-date-picker
+        v-model="value1"
+        type="daterange"
+        start-placeholder="寮�濮嬫椂闂�"
+        end-placeholder="缁撴潫鏃堕棿"
+    />
+    <el-button style="margin-top: -5px"  id="searchButton" type="primary" :icon="Search">鏌ヨ</el-button>
+    <el-button style="margin-top: -5px"  id="searchButton" type="primary" :icon="Folder">瀵煎嚭</el-button>
+    <div class="order-detail">
+      <el-table
+          :data="dataList"
+          :header-cell-style="{ 'text-align': 'center' }"
+          :cell-style="{ 'text-align': 'center' }"
+          border
+      >
+
+        <el-table-column type="expand" fixed>
+          <template #default="props" >
+            <div m="4">
+              <p m="t-0 b-2">: {{ props.row['2'] }}</p>
+            </div>
+          </template>
+        </el-table-column>
+
+
+        <el-table-column
+            :prop="index.toString()"
+            :show-overflow-tooltip='true'
+            width="120" v-for="(item,index) in titleList"
+            :label="item"    />
+      </el-table>
+    </div>
+  </div>
+</template>
+
+<style scoped>
+.main-div {
+  width: 100%;
+  height: 100%;
+}
+.el-col{
+  border: #181818 1px solid;
+}
+:deep(.el-table .el-input__wrapper) {
+  box-shadow: 0 0 0 0 var(--el-input-border-color, var(--el-border-color)) inset;
+  cursor: default;
+  border: none !important;
+  background-color: transparent;
+}
+.order-primary{
+  width: 100%;
+}
+.order-detail{
+  width: 100%;
+  height: 80%;
+}
+</style>
\ No newline at end of file
diff --git a/north-glass-erp/northglass-erp/src/views/sd/delivery/SelectDelivery.vue b/north-glass-erp/northglass-erp/src/views/sd/delivery/SelectDelivery.vue
new file mode 100644
index 0000000..643db12
--- /dev/null
+++ b/north-glass-erp/northglass-erp/src/views/sd/delivery/SelectDelivery.vue
@@ -0,0 +1,105 @@
+<script setup>
+import {Search} from "@element-plus/icons-vue";
+
+let deliveryTitle = $ref([
+  '搴忓彿',
+  '瀹℃牳',
+  '鍑哄簱',
+  '鍙戣揣鍗曞彿',
+  '鍙戣揣鍛�',
+  '鍙戣揣鏃ユ湡',
+  '瀹㈡埛缂栧彿',
+  '瀹㈡埛鍚嶇О',
+  '鎵规',
+  '椤圭洰鍚嶇О',
+  '璁㈠崟缂栧彿',
+  '浠樻鏉′欢',
+  '浠樻鏂瑰紡',
+  '鎬绘暟閲�',
+  '鎬婚潰绉�',
+  '鎬婚噾棰�',
+  '鎶ヨ〃鏃ユ湡',
+  '涓氬姟鍛�',
+  '閫佽揣鏃ユ湡',
+  '鏀舵鏃堕棿'
+
+])
+
+let deliveryList =[
+  {
+    '0': '1',
+    '1': '',
+    '2': '',
+    '3': 'JG23120801',
+    '4': '閮戠強鐝�',
+    '5': '2023-12-08',
+    '6': '310',
+    '7': '涓婃捣閲岃寤虹瓚宸ョ▼鏈夐檺鍏徃',
+    '8': '琛�1-2',
+    '9': '瀹胯縼鏌愭煇椤圭洰',
+    '10': 'NG23112304',
+    '11': '鎸夊悎鍚�',
+    '12': '',
+    '13': '8',
+    '14': '15.68',
+    '15': '11912.05',
+    '16': '2023-11-24',
+    '17': '鐜嬮緳',
+    '18': '瀹胯縼鏌愭煇鍦板潃',
+    '19': '2023-12-08'
+  }
+]
+</script>
+
+<template>
+  <div>
+    <el-date-picker
+        v-model="value1"
+        type="daterange"
+        start-placeholder="寮�濮嬫椂闂�"
+        end-placeholder="缁撴潫鏃堕棿"
+    />
+    <el-button style="margin-top: -5px"  id="searchButton" type="primary" :icon="Search">鏌ヨ</el-button>
+    <el-table
+        :data="deliveryList"
+        :header-cell-style="{ 'text-align': 'center' }"
+        :cell-style="{ 'text-align': 'center' }"
+        lazy
+        border
+        style="width: 99%;"
+        max-height="80vh">
+      <el-table-column type="expand" fixed>
+        <template #default="props" >
+          <div m="4">
+            <p m="t-0 b-2">: {{ props.row['2'] }}</p>
+          </div>
+        </template>
+      </el-table-column>
+      <el-table-column label="鎿嶄綔" fixed width="110"  >
+        <el-button link type="primary" size="small">缂栬緫</el-button>
+<!--        <el-button @click="openCraft" link type="primary" size="small">瀹℃牳</el-button>-->
+<!--        <el-button link type="primary" size="small">淇敼</el-button>-->
+        <el-button link type="primary" size="small">鍒犻櫎</el-button>
+      </el-table-column>
+      <el-table-column
+         :prop="index.toString()"
+         :show-overflow-tooltip='true'
+         width="100" v-for="(item,index) in deliveryTitle"
+         :label="item" >
+        <el-checkbox v-if="index>0 && index<3" checked/>
+      </el-table-column>
+
+
+    </el-table>
+  </div>
+
+</template>
+
+<style scoped>
+:deep(.el-table .el-input__wrapper) {
+  box-shadow: 0 0 0 0px var(--el-input-border-color, var(--el-border-color)) inset;
+  cursor: default;
+  border: none !important;
+  background-color: transparent;
+}
+</style>
\ No newline at end of file
diff --git a/north-glass-erp/northglass-erp/src/views/sd/delivery/SelectOrderList.vue b/north-glass-erp/northglass-erp/src/views/sd/delivery/SelectOrderList.vue
new file mode 100644
index 0000000..3a6ef29
--- /dev/null
+++ b/north-glass-erp/northglass-erp/src/views/sd/delivery/SelectOrderList.vue
@@ -0,0 +1,106 @@
+<script setup>
+import {CirclePlus, Search} from "@element-plus/icons-vue";
+import {useRouter} from 'vue-router'
+
+let router = useRouter()
+let deliveryTitle = $ref([
+  '搴忓彿',
+  '閿�鍞崟鍙�',
+  '瀹㈡埛缂栧彿',
+  '瀹㈡埛鍚嶇О',
+  '鎬绘暟閲�',
+  '鍙敤搴撳瓨',
+  '椤圭洰鍚嶇О',
+  '鎵规',
+  '鎬婚噾棰�',
+  '缁撶畻鎬婚潰绉�',
+  '鎶ヨ〃鏃ユ湡',
+  '鍖呰鏂瑰紡',
+  '璁㈠崟绫诲瀷',
+  '閫佽揣鍦板潃',
+  '涓氬姟鍛�'
+
+])
+
+let deliveryList =[
+  {
+    '0': '1',
+    '1': 'NG23110101',
+    '2': '11',
+    '3': '涓缓',
+    '4': '534',
+    '5': '116',
+    '6': '榛勭煶鏈夎建鐢佃溅',
+    '7': '20鎵�',
+    '8': '111100.02',
+    '9': '1008.38',
+    '10': '2023-10-30',
+    '11': '鍙夎溅鏈ㄧ',
+    '12': '鏅�氳鍗�',
+    '13': '',
+    '14': '鐜嬮緳'
+  }
+]
+
+let listName = $ref([
+  '涓嬪崟','宸ヨ壓','瀹℃牳','鐢熶骇','浜ゆ帴','涓嬭揪','鍏ュ簱','鍙戣揣'
+])
+
+function addDelivery(){
+  router.push({path:'/main/delivery/createDelivery'})
+}
+
+
+
+</script>
+
+<template>
+  <div>
+    <el-date-picker
+        v-model="value1"
+        type="daterange"
+        start-placeholder="寮�濮嬫椂闂�"
+        end-placeholder="缁撴潫鏃堕棿"
+    />
+    <el-button style="margin-top: -5px"  id="searchButton" type="primary" :icon="Search">鏌ヨ</el-button>
+    <el-button @click="addDelivery" style="margin-top: -5px"  id="searchButton" type="primary" :icon="CirclePlus">鍙戣揣</el-button>
+    <el-table
+        :data="deliveryList"
+        :header-cell-style="{ 'text-align': 'center' }"
+        :cell-style="{ 'text-align': 'center' }"
+        lazy
+        border
+        style="width: 99%;"
+        max-height="80vh">
+      <el-table-column type="expand" fixed>
+        <template #default="props" >
+          <div m="4">
+            <p m="t-0 b-2">璁㈠崟鍙戣揣鏈夊叧鎵�鏈変俊鎭�</p>
+          </div>
+        </template>
+      </el-table-column>
+      <el-table-column label="閫夋嫨" fixed width="40"  >
+        <el-checkbox />
+      </el-table-column>
+      <el-table-column v-for="item in listName" prop="" :label="item" width="40"   >
+        <el-checkbox checked/>
+      </el-table-column>
+
+      <el-table-column
+          :prop="index.toString()"
+          :show-overflow-tooltip='true'
+          width="100" v-for="(item,index) in deliveryTitle"
+          :label="item" />
+    </el-table>
+  </div>
+
+</template>
+
+<style scoped>
+:deep(.el-table .el-input__wrapper) {
+  box-shadow: 0 0 0 0px var(--el-input-border-color, var(--el-border-color)) inset;
+  cursor: default;
+  border: none !important;
+  background-color: transparent;
+}
+</style>
\ No newline at end of file
diff --git a/north-glass-erp/northglass-erp/src/views/sd/order/CreateOrder.vue b/north-glass-erp/northglass-erp/src/views/sd/order/CreateOrder.vue
new file mode 100644
index 0000000..3927f90
--- /dev/null
+++ b/north-glass-erp/northglass-erp/src/views/sd/order/CreateOrder.vue
@@ -0,0 +1,147 @@
+<script setup>
+
+</script>
+
+<template>
+  <div class="main-div">
+
+    <div class="order-primary">
+      <el-row>
+        <el-col  :span="2"><el-text>*椤圭洰鍚嶇О锛�</el-text></el-col>
+        <el-col  :span="2"><el-input/></el-col>
+        <el-col  :span="2"><el-text>*瀹㈡埛閫夋嫨锛�</el-text></el-col>
+        <el-col  :span="2">
+          <el-select  clearable placeholder=" " >
+            <el-option/>
+          </el-select>
+        </el-col>
+        <el-col  :span="2"><el-text>*璁㈠崟绫诲瀷锛�</el-text></el-col>
+        <el-col  :span="2">
+          <el-select  clearable placeholder=" " >
+            <el-option />
+          </el-select>
+        </el-col>
+        <el-col  :span="2"><el-text>璁㈠崟鍒嗙被锛�</el-text></el-col>
+        <el-col  :span="2">
+          <el-select  clearable placeholder=" " >
+            <el-option/>
+          </el-select>
+        </el-col>
+        <el-col  :span="2"><el-text>鍟嗘爣閫夐」锛�</el-text></el-col>
+        <el-col  :span="2">
+          <el-select  clearable placeholder=" " >
+            <el-option/>
+          </el-select>
+        </el-col>
+        <el-col  :span="2"><el-text>鍖呰鏂瑰紡锛�</el-text></el-col>
+        <el-col  :span="2">
+          <el-select  clearable placeholder=" " >
+            <el-option/>
+          </el-select>
+        </el-col>
+        <!--      <el-col :span="2"><el-text  /></el-col>-->
+      </el-row>
+      <el-row>
+        <el-col  :span="2"><el-text>閿�鍞崟鍙凤細</el-text></el-col>
+        <el-col  :span="2"><el-text  /></el-col>
+        <el-col  :span="2"><el-text>浜よ揣鏃ユ湡锛�</el-text></el-col>
+        <el-col  :span="2">
+          <el-date-picker
+              type="week"
+              format="[Week] ww"
+              placeholder="閫夋嫨鏃ユ湡"/>
+        </el-col>
+        <el-col  :span="2"><el-text>鎵规锛�</el-text></el-col>
+        <el-col  :span="2"><el-input/></el-col>
+        <el-col  :span="2"><el-text>璁$畻鏂瑰紡锛�</el-text></el-col>
+        <el-col  :span="2">
+          <el-select  clearable placeholder=" " >
+            <el-option/>
+          </el-select>
+        </el-col>
+        <el-col  :span="2"><el-text>*涓氬姟鍛橈細</el-text></el-col>
+        <el-col  :span="2">
+          <el-select  clearable placeholder=" " >
+            <el-option/>
+          </el-select>
+        </el-col>
+        <el-col  :span="2"><el-text>閾濇潯鏂瑰紡锛�</el-text></el-col>
+        <el-col  :span="2">
+          <el-select  clearable placeholder=" " >
+            <el-option/>
+          </el-select>
+        </el-col>
+      </el-row>
+      <el-row>
+        <el-col  :span="2"><el-text>鎬婚噾棰濓細</el-text></el-col>
+        <el-col  :span="2"><el-text /></el-col>
+
+        <el-col  :span="2"><el-text>鍚堝悓缂栧彿锛�</el-text></el-col>
+        <el-col  :span="2"><el-input/></el-col>
+        <el-col  :span="2"><el-text>瀹㈡埛鎵规锛�</el-text></el-col>
+        <el-col  :span="2"><el-text /></el-col>
+        <el-col  :span="2"><el-text>鑱旂郴浜猴細</el-text></el-col>
+        <el-col  :span="2"><el-input/></el-col>
+        <el-col  :span="2"><el-text>鑱旂郴鐢佃瘽锛�</el-text></el-col>
+        <el-col  :span="2"><el-input/></el-col>
+        <el-col  :span="2"><el-text>閫佽揣鍦板潃锛�</el-text></el-col>
+        <el-col  :span="2"><el-input/></el-col>
+      </el-row>
+      <el-row>
+        <el-col  :span="2"><el-text>鍏朵粬閲戦锛�</el-text></el-col>
+        <el-col  :span="2"><el-text /></el-col>
+        <el-col style="background-color: #337ecc" :span="2"><el-button style="width: 100%" type="primary">鍔犲伐瑕佹眰</el-button></el-col>
+        <el-col style="background-color: #337ecc" :span="2"><el-button style="width: 100%" type="primary">瀵煎叆Excel</el-button></el-col>
+        <el-col style="background-color: #337ecc" :span="2"><el-button style="width: 100%" type="primary">鎻愪氦</el-button></el-col>
+      </el-row>
+    </div>
+    <div class="order-detail">
+      <el-table
+          :header-cell-style="{ 'text-align': 'center' }"
+          :cell-style="{ 'text-align': 'center' }"
+          border
+      >
+        <el-table-column  label="搴忓彿" />
+        <el-table-column  label="妤煎彿" />
+        <el-table-column  label="浜у搧" />
+        <el-table-column  label="瀹�" />
+        <el-table-column  label="楂�" />
+        <el-table-column  label="鏁伴噺" />
+        <el-table-column  label="鍗曚环" />
+        <el-table-column  label="褰㈢姸" />
+
+        <el-table-column  label="瀹為檯鎬�/鍗曠墖闈㈢Н" width="150"/>
+        <el-table-column  label="缁撶畻鍗曠墖闈㈢Н" width="150" />
+        <el-table-column  label="缁撶畻鎬婚潰绉�" width="150" />
+        <el-table-column  label="鍔犲伐瑕佹眰" width="100" />
+        <el-table-column  label="澶栬喘" />
+        <el-table-column  label="澶囨敞" />
+      </el-table>
+    </div>
+  </div>
+</template>
+
+<style scoped>
+  .main-div {
+    width: 100%;
+    height: 100%;
+    text-align: center;
+  }
+  .el-col{
+    border: #181818 1px solid;
+  }
+  :deep(.el-input__wrapper) {
+    box-shadow: 0 0 0 0 var(--el-input-border-color, var(--el-border-color)) inset;
+    cursor: default;
+    border: none !important;
+    background-color: transparent;
+  }
+  .order-primary{
+    width: 100%;
+  }
+  .order-detail{
+    width: 100%;
+    height: 80%;
+  }
+
+</style>
\ No newline at end of file
diff --git a/north-glass-erp/northglass-erp/src/views/sd/order/Order.vue b/north-glass-erp/northglass-erp/src/views/sd/order/Order.vue
new file mode 100644
index 0000000..3d945b0
--- /dev/null
+++ b/north-glass-erp/northglass-erp/src/views/sd/order/Order.vue
@@ -0,0 +1,49 @@
+<script setup>
+import {ArrowLeftBold, ArrowRight, Search} from "@element-plus/icons-vue"
+import {useRouter} from "vue-router";
+
+const router = useRouter()
+</script>
+
+<template>
+  <div id="main-div">
+    <div id="div-title">
+      <el-breadcrumb :separator-icon="ArrowRight">
+        <el-breadcrumb-item :to="{ path: '/main/order/selectOrder' }">璁㈠崟棣栭〉</el-breadcrumb-item>
+        <el-breadcrumb-item :to="{ path: '/main/order/createOrder' }">鍒涘缓</el-breadcrumb-item>
+        <el-breadcrumb-item :to="{ path: '/main/order/orderReport' }">鎶ヨ〃</el-breadcrumb-item>
+      </el-breadcrumb>
+    </div>
+
+    <div id="main-body">
+      <router-view  />
+    </div>
+  </div>
+</template>
+
+<style scoped>
+#main-div{
+  width: 100%;
+  height: 100%;
+}
+#div-title{
+  height: 2%;
+  width: 100%;
+}
+#searchButton{
+  margin-top: -5px;
+  margin-left: 1rem;
+}
+#searchButton1{
+//margin-left: 10rem;
+}
+/*main-body鏍峰紡*/
+#main-body{
+  width: 100%;
+  height: 95%;
+  margin-top: 1%;
+}
+#select{
+  margin-left:0.5rem;
+}
+</style>
\ No newline at end of file
diff --git a/north-glass-erp/northglass-erp/src/views/sd/order/OrderReport.vue b/north-glass-erp/northglass-erp/src/views/sd/order/OrderReport.vue
new file mode 100644
index 0000000..7940bfe
--- /dev/null
+++ b/north-glass-erp/northglass-erp/src/views/sd/order/OrderReport.vue
@@ -0,0 +1,107 @@
+<script setup>
+
+import {Folder, Search} from "@element-plus/icons-vue";
+
+let titleList = [
+  '搴忓彿',
+  '璁㈠崟绫诲瀷',
+  '瀹㈡埛鍚嶇О',
+  '椤圭洰鍚嶇О',
+  '閿�鍞崟鍙�',
+  '鎵规',
+  '浜у搧缂栧彿',
+  '浜у搧缂栫爜',
+  '浜у搧鍚嶇О',
+  '璁㈠崟搴忓彿',
+  '妤煎彿',
+  '瀹�',
+  '楂�',
+  '鏁伴噺',
+  '鍗婂緞',
+  '瀹為檯闈㈢Н',
+  '缁撶畻鎬婚潰绉�',
+  '褰㈢姸',
+  '纾ㄨ竟绫诲瀷',
+  '涓诲姞宸ヨ姹�',
+  '鍔犲伐瑕佹眰',
+  '澶囨敞',
+  '鍟嗘爣閫夐」',
+  '鍖呰鏂瑰紡',
+  '宸ヨ壓娴佺▼',
+  '鍛ㄩ暱',
+  '鍗曚环',
+  '閲戦',
+  '閾濇潯鏂瑰紡',
+  '璁㈠崟绫诲瀷',
+  '涓氬姟鍛�',
+  '閫佽揣鍦板潃',
+  '鍒跺崟鍛�',
+  '寤虹珛鏃堕棿',
+  '鎬诲帤搴�',
+  '浜у搧澶х被',
+  '浜у搧灏忕被',
+  '瀹㈡埛鎵规'
+
+
+]
+</script>
+
+<template>
+  <div class="main-div">
+    <el-date-picker
+        v-model="value1"
+        type="daterange"
+        start-placeholder="寮�濮嬫椂闂�"
+        end-placeholder="缁撴潫鏃堕棿"
+    />
+    <el-button style="margin-top: -5px"  id="searchButton" type="primary" :icon="Search">鏌ヨ</el-button>
+    <el-button style="margin-top: -5px"  id="searchButton" type="primary" :icon="Folder">瀵煎嚭</el-button>
+    <div class="order-detail">
+      <el-table
+          :data="dataList"
+          :header-cell-style="{ 'text-align': 'center' }"
+          :cell-style="{ 'text-align': 'center' }"
+          border
+      >
+
+        <el-table-column type="expand" fixed>
+          <template #default="props" >
+            <div m="4">
+              <p m="t-0 b-2">: {{ props.row['2'] }}</p>
+            </div>
+          </template>
+        </el-table-column>
+
+
+        <el-table-column
+            :prop="index.toString()"
+            :show-overflow-tooltip='true'
+            width="100" v-for="(item,index) in titleList"
+            :label="item"    />
+      </el-table>
+    </div>
+  </div>
+</template>
+
+<style scoped>
+.main-div {
+  width: 100%;
+  height: 100%;
+}
+.el-col{
+  border: #181818 1px solid;
+}
+:deep(.el-table .el-input__wrapper) {
+  box-shadow: 0 0 0 0 var(--el-input-border-color, var(--el-border-color)) inset;
+  cursor: default;
+  border: none !important;
+  background-color: transparent;
+}
+.order-primary{
+  width: 100%;
+}
+.order-detail{
+  width: 100%;
+  height: 80%;
+}
+</style>
\ No newline at end of file
diff --git a/north-glass-erp/northglass-erp/src/views/sd/order/SelectOrder.vue b/north-glass-erp/northglass-erp/src/views/sd/order/SelectOrder.vue
new file mode 100644
index 0000000..0f15532
--- /dev/null
+++ b/north-glass-erp/northglass-erp/src/views/sd/order/SelectOrder.vue
@@ -0,0 +1,124 @@
+<script setup>
+  import {Search} from "@element-plus/icons-vue"
+  import {useRouter} from "vue-router"
+  const router = useRouter()
+
+  let orderList = $ref([
+    {
+      '1':'NG23120701',
+      '2':'1',
+      '3':'涓北甯備簯闀滃灞呮湁闄愬叕鍙�',
+      '4':'澶ф澘闀�',
+      '5':'涓�鎵�1',
+      '6':'999999.99',
+      '7':'99999',
+      '8':'99999.99',
+      '9':'99999.99',
+      '10':'2023-12-07',
+      '11':'瑁呯',
+      '12':'鏅�氳鍗�',
+      '13':'寮犱笁',
+      '14':'绗簩鎵�',
+      '15':'2023-12-30',
+    }
+  ])
+  let listName = $ref([
+      '涓嬪崟','宸ヨ壓','瀹℃牳','鐢熶骇','浜ゆ帴','涓嬭揪','鍏ュ簱','鍙戣揣'
+  ])
+
+  function openCraft(){
+    router.push({name:'updateOrderCraft'})
+  }
+</script>
+
+<template>
+  <div >
+    <el-date-picker
+        v-model="value1"
+        type="daterange"
+        start-placeholder="寮�濮嬫椂闂�"
+        end-placeholder="缁撴潫鏃堕棿"
+    />
+    <el-button style="margin-top: -5px"  id="searchButton" type="primary" :icon="Search">鏌ヨ</el-button>
+    <el-table
+        :data="orderList"
+        :header-cell-style="{ 'text-align': 'center' }"
+        :cell-style="{ 'text-align': 'center' }"
+        lazy
+        border
+        style="width: 99%;"
+        max-height="80vh">
+      <el-table-column type="expand" fixed>
+        <template #default="props" >
+          <div m="4">
+
+            <p m="t-0 b-2">缂栧彿: {{ props.row.prodID }}</p>
+          </div>
+        </template>
+      </el-table-column>
+      <el-table-column label="鎿嶄綔" fixed width="110"  >
+<!--        <el-button @click="openCraft" link type="primary" size="small">宸ヨ壓</el-button>-->
+<!--        瀹℃牳涓庡伐鑹洪兘鍦ㄥ悓涓�涓寜閽�-->
+        <el-button link type="primary" size="small">缂栬緫</el-button>
+        <el-button link type="primary" size="small">鍒犻櫎</el-button>
+<!--璁㈠崟瀹℃牳鍚庝笉鑳藉垹闄ゅ彧鑳戒綔搴�-->
+      </el-table-column>
+      <el-table-column   label="搴忓彿" width="40"  />
+
+      <el-table-column v-for="item in listName" prop="" :label="item" width="40"   >
+<!--        <el-table-column prop="1" >-->
+<!--          <template #header>-->
+<!--            <el-button type="primary" size="small" style="width: 10px;height: 10px"></el-button>-->
+<!--          </template>-->
+
+<!--          <el-checkbox checked/>-->
+<!--        </el-table-column>-->
+        <el-checkbox checked/>
+
+      </el-table-column>
+
+      <el-table-column  prop="1" width="110" label="閿�鍞崟鍙�"    />
+
+      <el-table-column  prop="2" width="55" label="瀹㈡埛缂栧彿"    />
+
+      <el-table-column  prop="3" width="120" label="瀹㈡埛鍚嶇О"    />
+
+      <el-table-column  prop="4" width="120" label="椤圭洰鍚嶇О"   />
+
+      <el-table-column  prop="5" label="鎵规"     />
+
+      <el-table-column  prop="6" width="100" label="鎬婚噾棰�"     />
+
+      <el-table-column  prop="7" label="鏁伴噺"     />
+
+      <el-table-column  prop="8" width="100" label="缁撶畻闈㈢Н"    />
+
+      <el-table-column  prop="9" width="100" label="瀹為檯闈㈢Н"    />
+
+      <el-table-column  prop="10" width="100" label="鎶ヨ〃鏃ユ湡" />
+
+      <el-table-column  prop="11" width="100" label="鍖呰鏂瑰紡" />
+
+      <el-table-column  prop="12" width="100" label="璁㈠崟绫诲瀷" />
+
+      <el-table-column  prop="13" label="涓氬姟鍛�" />
+
+      <el-table-column  prop="14" width="100" label="瀹㈡埛鎵规" />
+
+      <el-table-column  prop="15" width="100" label="浜よ揣鏃ユ湡" />
+
+
+
+    </el-table>
+  </div>
+</template>
+
+<style scoped>
+:deep(.el-table .el-input__wrapper) {
+  box-shadow: 0 0 0 0px var(--el-input-border-color, var(--el-border-color)) inset;
+  cursor: default;
+  border: none !important;
+  background-color: transparent;
+
+}
+</style>
\ No newline at end of file
diff --git a/north-glass-erp/northglass-erp/src/views/sd/order/UpdateOrderCraft.vue b/north-glass-erp/northglass-erp/src/views/sd/order/UpdateOrderCraft.vue
new file mode 100644
index 0000000..b27d91d
--- /dev/null
+++ b/north-glass-erp/northglass-erp/src/views/sd/order/UpdateOrderCraft.vue
@@ -0,0 +1,174 @@
+<script setup>
+  let titleList = [
+    '搴忓彿',
+    '妤煎彿',
+    '鎴愬搧鍚嶇О',
+    '鏍囪',
+    '瀛愪骇鍝�',
+    '鎴愬搧瀹�',
+    '鎴愬搧楂�',
+    '褰㈢姸',
+    '鎴愬搧灏哄',
+    '纾ㄨ竟绫诲瀷',
+    '鍗曠墖瀹�',
+    '鍗曠墖楂�',
+    '鍗曠墖灏哄',
+    '鏁伴噺',
+    '宸ヨ壓娴佺▼',
+    '鍔犲伐瑕佹眰',
+    '澶囨敞'
+  ]
+
+  let  dataList = [
+    {
+      '0' : '1',
+      '1' : 'JHH-T33-G-07A-01',
+      '2' : '10mm瓒呯櫧UD60骞抽挗(澶�)+12A鏆�(缁�)+10mm瓒呯櫧骞抽挗(鍐�)',
+      '3' : '(澶�)',
+      '4' : '10mm瓒呯櫧UD60骞抽挗(澶�)',
+      '5' : '1427',
+      '6' : '2696',
+      '7' : '鏅舰',
+      '8' : '42.32',
+      '9' : '绮剧(',
+      '10' : '1427',
+      '11' : '1427',
+      '12' : '42.32',
+      '13' : '11',
+      '14' : '鍒囧壊->纾ㄨ竟->閽㈠寲->鍧囪川->涓┖->鍖呰',
+      '15' : '',
+      '16' : '',
+      '17':2
+    },
+    {
+      '0' : '1',
+      '1' : 'JHH-T33-G-07A-01',
+      '2' : '10mm瓒呯櫧UD60骞抽挗(澶�)+12A鏆�(缁�)+10mm瓒呯櫧骞抽挗(鍐�)',
+      '3' : '(鍐�)',
+      '4' : '10mm瓒呯櫧骞抽挗(鍐�)',
+      '5' : '1427',
+      '6' : '2696',
+      '7' : '鏅舰',
+      '8' : '42.32',
+      '9' : '绮剧(',
+      '10' : '1427',
+      '11' : '1427',
+      '12' : '42.32',
+      '13' : '11',
+      '14' : '鍒囧壊->纾ㄨ竟->閽㈠寲->鍧囪川->涓┖->鍖呰',
+      '15' : '',
+      '16' : '',
+      '17' : 0,
+    }
+  ]
+
+  const objectSpanMethod = ({ row, column, rowIndex, columnIndex }) => {
+
+    if (columnIndex === 2 || columnIndex === 3 || columnIndex === 4) {
+      // 鑾峰彇褰撳墠琛岀殑闇�瑕佸悎骞剁殑鍗曞厓鏍兼暟
+      const rowNum = dataList[rowIndex]['17']
+      if (rowNum) {
+        // 涓�涓崟鍏冩牸绾靛悜妯悜鍚堝苟鐨勫崟鍏冩牸鏁伴噺
+        return {
+          rowspan: rowNum, // 绾靛悜鍚堝苟鍗曞厓鏍肩殑鏁伴噺
+          colspan: rowNum > 0 ? 1 : 0 // 妯悜鍚堝苟鍗曞厓鏍肩殑鏁伴噺锛岀旱鍚戝崟鍏冩牸鏁版槸0鐨勮瘽璇存槑浠栨槸琚悎骞剁殑锛屾í鍚戝崟鍏冩牸鏁颁篃灏变负0涓嶆樉绀轰簡锛岃繖閲屼笉鑰冭檻妯悜鍚堝苟鎵�浠ュ啓姝荤殑鏄�1
+        };
+      } else {
+        // 琚悎骞堕」璁剧疆涓�0锛屽嵆涓嶆樉绀哄崟鍏冩牸
+        return {
+          rowspan: 0,
+          colspan: 0
+        };
+      }
+    }
+  }
+
+
+
+</script>
+
+<template>
+  <div class="main-div">
+
+    <div class="order-primary">
+      <el-row>
+        <el-col  :span="4"><el-text>閿�鍞崟鍙凤細</el-text></el-col>
+        <el-col  :span="4"><el-text>NG23120704</el-text></el-col>
+        <el-col  :span="4"><el-text>瀹㈡埛鍚嶇О锛�</el-text></el-col>
+        <el-col  :span="4"><el-text>澶粨楂樼幓鐠冨埗鍝佹湁闄愬叕鍙�</el-text></el-col>
+        <el-col  :span="4"><el-text>椤圭洰鍚嶇О锛�</el-text></el-col>
+        <el-col  :span="4"><el-text>澶粨鍗撻珮</el-text></el-col>
+      </el-row>
+      <el-row>
+        <el-col  :span="4"><el-text>璁㈠崟鎵规锛�</el-text></el-col>
+        <el-col  :span="4"><el-text>1鎵�1</el-text></el-col>
+        <el-col  :span="4"><el-text>璁㈠崟绫诲瀷锛�</el-text></el-col>
+        <el-col  :span="4"><el-text>鏅�氳鍗�</el-text></el-col>
+        <el-col  :span="4"><el-text>涓氬姟鍛�</el-text></el-col>
+        <el-col  :span="4"><el-text>寮犱笁</el-text></el-col>
+      </el-row>
+      <el-row>
+        <el-col  :span="4"><el-text>鍖呰鏂瑰紡锛�</el-text></el-col>
+        <el-col  :span="4"><el-text>鏈ㄧ</el-text></el-col>
+        <el-col  :span="4"><el-text>浜よ揣鏃ユ湡锛�</el-text></el-col>
+        <el-col  :span="4"><el-text>2023-11-11</el-text></el-col>
+        <el-col  style="background-color: #337ecc" :span="4"><el-button style="width: 100%;height: 100%" size="small"  type="primary">鍔犲伐瑕佹眰璇︾粏</el-button></el-col>
+        <el-col  style="background-color: #337ecc" :span="4"><el-button style="width: 100%;height: 100%"  size="small" type="primary">瀹℃牳</el-button></el-col>
+      </el-row>
+    </div>
+    <div class="order-detail">
+
+
+      <el-table
+          :data="dataList"
+          :header-cell-style="{ 'text-align': 'center' }"
+          :cell-style="{ 'text-align': 'center' }"
+          border
+          :span-method="objectSpanMethod"
+      >
+
+        <el-table-column type="expand" fixed>
+          <template #default="props" >
+            <div m="4">
+              <p m="t-0 b-2">浜у搧鍚嶇О: {{ props.row['2'] }}</p>
+              <p m="t-0 b-2">鍗曠墖: {{ props.row['4'] }}</p>
+              <p m="t-0 b-2">宸ヨ壓: {{ props.row['14'] }}</p>
+            </div>
+          </template>
+        </el-table-column>
+
+        <el-table-column label="鎿嶄綔" fixed><el-button link type="primary" size="small">淇敼宸ヨ壓</el-button></el-table-column>
+        <el-table-column
+            :prop="index.toString()"
+            :show-overflow-tooltip='true'
+            width="100"
+            v-for="(item,index) in titleList" :label="item"    />
+      </el-table>
+    </div>
+  </div>
+</template>
+
+<style scoped>
+.main-div {
+  width: 100%;
+  height: 100%;
+  text-align: center;
+}
+.el-col{
+  border: #181818 1px solid;
+}
+:deep(.el-input__wrapper) {
+  box-shadow: 0 0 0 0 var(--el-input-border-color, var(--el-border-color)) inset;
+  cursor: default;
+  border: none !important;
+  background-color: transparent;
+}
+.order-primary{
+  width: 100%;
+}
+.order-detail{
+  width: 100%;
+  height: 80%;
+}
+
+</style>
\ No newline at end of file
diff --git a/north-glass-erp/northglass-erp/src/views/sd/product/CreateProduct.vue b/north-glass-erp/northglass-erp/src/views/sd/product/CreateProduct.vue
new file mode 100644
index 0000000..8d8982b
--- /dev/null
+++ b/north-glass-erp/northglass-erp/src/views/sd/product/CreateProduct.vue
@@ -0,0 +1,435 @@
+<script setup>
+const disposeList = $ref([
+  '褰╅噳',
+  '钂欑爞',
+  '闀�鑶�',
+  '璐磋啘',
+  '鍠风爞',
+  '纾ㄨ竟'
+])
+let processList = $ref([
+    '纾ㄨ竟',
+    '闀�鑶�',
+    '鍊掕',
+    '娓呮礂',
+    '鎵撳瓟',
+    '鎸栫己',
+    '鎸栨Ы',
+    '姘村垏鍓�',
+    '涓濆嵃',
+    '鍗婇挗鍖�',
+    '閽㈠寲',
+    '澶瑰眰',
+    '涓┖',
+    '鍖呰'
+])
+
+</script>
+
+<template>
+  <div id="main-div">
+    <div class="glass-param inline-flex"
+         :style="{
+          boxShadow: `var(--el-box-shadow-lighter)`,
+        }"
+    >
+      <div class="glass-type">
+        <h5>鏉愭枡灞炴��</h5>
+        <el-row :gutter="50">
+<!--          <el-col :span="6"></el-col>-->
+          <el-col :span="4">
+            <div class="grid-content ep-bg-purple" >
+              <el-select size="small" clearable placeholder="*鍘氬害:" />
+            </div>
+          </el-col>
+          <el-col :span="4">
+            <div class="grid-content ep-bg-purple" >
+              <el-select size="small" clearable placeholder="*棰滆壊:" />
+            </div>
+          </el-col>
+          <el-col :span="6">
+            <div class="grid-content ep-bg-purple" >
+              <el-select size="small" clearable placeholder="*宸ヨ壓灞炴��:" />
+            </div>
+          </el-col>
+          <el-col :span="4">
+            <div class="grid-content ep-bg-purple" >
+              <el-select size="small"  clearable placeholder="浣嶇疆:" />
+            </div>
+          </el-col>
+          <el-col :span="6">
+            <div class="grid-content ep-bg-purple" >
+              <el-select size="small"  clearable placeholder="LOW-E闈�:" />
+            </div>
+          </el-col>
+        </el-row>
+      </div>
+      <div class="line"/>
+      <div class="glass-dispose">
+        <h5>琛ㄩ潰澶勭悊</h5>
+        <div class="glass-dispose-detail">
+          <div v-for="n in 2" class="glass-dispose-detail-1">
+            <p style="writing-mode: vertical-rl;">
+              {{n===1?'绗竴闈�':'绗簩闈�'}}
+            </p>
+            <div class="glass-dispose-detail-list"
+                 v-for="(item,index) in disposeList"
+            >
+              <el-checkbox
+                  :label="item" size="large" />
+              <el-input
+                  v-if="index==0 && n==1"
+                  class="dispose-input"
+                  size="small"
+                  clearable />
+            </div>
+
+          </div>
+        </div>
+
+      </div>
+      <div class="line"/>
+      <div class="glass-process">
+        <h5>鏉愭枡灞炴��</h5>
+        <el-checkbox
+            v-for="item in processList"
+            :label="item"
+            class="glass-process-checkbox"
+             size="small" />
+      </div>
+      <div class="line"/>
+      <div class="glass-spacer">
+        <div class="glass-spacer-jc">
+          <el-select
+              size="small"
+              style="width: 100px"
+              clearable placeholder="*涓┖鍘氬害:" />
+          <el-select
+              size="small"
+              style="width: 100px"
+              clearable placeholder="*鍏呮皵鏂瑰紡:" />
+          <el-select
+              size="small"
+              style="width: 100px"
+              clearable placeholder="*灏佽兌:" />
+          <el-select
+              size="small"
+              style="width: 100px"
+              clearable placeholder="*榛樿鑳舵繁:" />
+          <el-button
+              size="small"
+              type="primary"
+              round>涓┖闂撮殧鐗�</el-button>
+
+        </div>
+        <div class="glass-spacer-zk">
+          <el-select
+              size="small"
+              style="width: 100px"
+              clearable placeholder="*澶瑰眰鍘氬害:" />
+          <el-select
+              size="small"
+              style="width: 100px"
+              clearable placeholder="*绫诲瀷:" />
+          <el-select
+              size="small"
+              style="width: 100px"
+              clearable placeholder="*棰滆壊:" />
+          <el-button
+              size="small"
+              type="primary"
+              style="margin-left: 100px"
+              round>澶瑰眰闂撮殧鐗�</el-button>
+        </div>
+      </div>
+      <div class="line"/>
+      <div class="glass-oneSlice">
+        <div class="glass-oneSlice-type">
+          <el-row :gutter="20">
+            <el-col :span="5">
+              <div class="grid-content ep-bg-purple" >
+                <el-text class="mx-1"  style="margin-left: 0.5rem" >鍗曠墖鐜荤拑灞炴�э細</el-text>
+              </div>
+            </el-col>
+            <el-col :span="13">
+              <div class="grid-content ep-bg-purple" >
+                <el-input size="small" disabled  />
+              </div>
+            </el-col>
+            <el-col :span="3">
+              <div class="grid-content ep-bg-purple" >
+                <el-button
+                    size="small"
+                    type="primary"
+                    round>閲嶇疆</el-button>
+              </div>
+            </el-col>
+          </el-row>
+        </div>
+        <div class="glass-oneSlice-type">
+          <el-row :gutter="20">
+            <el-col :span="5">
+              <div class="grid-content ep-bg-purple" >
+                <el-text class="mx-1"  style="margin-left: 0.5rem"  >宸ヨ壓娴佺▼灞炴�э細</el-text>
+              </div>
+            </el-col>
+            <el-col :span="13">
+              <div class="grid-content ep-bg-purple" >
+                <el-input size="small" disabled  />
+              </div>
+            </el-col>
+            <el-col :span="3">
+              <div class="grid-content ep-bg-purple" >
+                <el-button
+                    size="small"
+                    type="primary"
+                    round>纭</el-button>
+              </div>
+            </el-col>
+          </el-row>
+        </div>
+      </div>
+      <div class="glass-other">
+        <el-row :gutter="20">
+          <el-col :span="5">
+            <div class="grid-content ep-bg-purple" >
+              <el-text class="mx-1"
+                       style="margin-left: 0.5rem;text-align: center">
+                蹇�熸煡璇細
+              </el-text>
+              <el-input size="small" disabled  />
+            </div>
+          </el-col>
+          <el-col :span="5">
+            <div class="grid-content ep-bg-purple" >
+              <el-text class="mx-1"
+                       style="margin-left: 0.5rem;text-align: center">
+                璁¢噸鍘氬害锛�
+              </el-text>
+              <el-input size="small" disabled  />
+            </div>
+          </el-col>
+          <el-col :span="5">
+            <div class="grid-content ep-bg-purple" >
+              <el-text class="mx-1"
+                       style="margin-left: 0.5rem;text-align: center">
+                鍘氬害锛�
+              </el-text>
+              <el-input size="small" disabled  />
+            </div>
+          </el-col>
+          <el-col :span="5">
+            <div class="grid-content ep-bg-purple" >
+              <el-text class="mx-1"
+                       style="margin-left: 0.5rem;text-align: center">
+                澶囨敞锛�
+              </el-text>
+              <el-input size="small" disabled  />
+            </div>
+          </el-col>
+        </el-row>
+
+      </div>
+    </div>
+
+
+    <div class="glass-part inline-flex"
+         :style="{
+          boxShadow: `var(--el-box-shadow-lighter)`,
+        }">
+      <div class="glass-part-all">
+        <el-row >
+          <el-col :span="4">
+            <div class="grid-content ep-bg-purple" >
+              <el-text class="mx-1" size="large"  >浜у搧鍚嶇О锛�</el-text>
+            </div>
+          </el-col>
+          <el-col :span="20">
+            <div class="grid-content ep-bg-purple" >
+              <el-input size="large" disabled  />
+            </div>
+          </el-col>
+        </el-row>
+      </div>
+
+      <div class="glass-part-detail">
+        <el-row style="width: 90%" >
+          <el-col :span="4">
+            <el-button
+                size="small"
+                type="primary"
+                round>淇敼鐜荤拑</el-button>
+          </el-col>
+          <el-col :span="16">
+            <el-input
+                value="5mm鐧界幓"
+                size="small"
+                disabled  />
+          </el-col>
+        </el-row>
+        <el-row style="width: 90%" >
+          <el-col :span="4">
+            <el-button
+                size="small"
+                type="primary"
+                round>淇敼澶瑰眰</el-button>
+          </el-col>
+          <el-col :span="16">
+            <el-input
+                value="5mmPVB閫忔槑"
+                size="small"
+                disabled  />
+          </el-col>
+        </el-row>
+        <el-row style="width: 90%" >
+          <el-col :span="4">
+            <el-button
+                size="small"
+                type="primary"
+                round>淇敼鐜荤拑</el-button>
+          </el-col>
+          <el-col :span="16">
+            <el-input
+                value="5mm鐧界幓"
+                size="small"
+                disabled  />
+          </el-col>
+        </el-row>
+
+      </div>
+      <el-button
+          style="float: right;
+          margin-right: 0.5rem;"
+
+          size="large"
+          type="primary"
+          round>閲嶇疆</el-button>
+    </div>
+  </div>
+</template>
+
+<style scoped >
+  #main-div{
+    width: 100%;
+    height: 100%;
+  }
+  .glass-param{
+    height: 100%;
+    width: 59.5%;
+    float: left;
+  }
+  .glass-part{
+    height: 100%;
+    width: 39.5%;
+    float: right;
+  }
+  .glass-type{
+    width: 100%;
+    height: 12%;
+
+  }
+  .glass-dispose{
+    width: 100%;
+    height: 20%;
+  }
+  .glass-dispose-detail{
+    margin-top: 0.5rem;
+    margin-left: 0.5rem;
+
+  }
+  .glass-dispose-detail-1{
+    width:50%;
+    height: 15vh;
+    float: left;
+  }
+  .glass-dispose-detail-1 p{
+    height: 80%;
+    float: left;
+    margin-top: 2%;
+  }
+  .glass-dispose-detail-list{
+    width: 45%;
+    float: left;
+    height: 25px;
+  }
+  .dispose-input{
+    width:70px;
+    margin-left: 1rem;
+  }
+  .glass-process{
+    width: 100%;
+    height: 25%;
+  }
+  .glass-process-checkbox{
+    margin-left: 0.5rem;
+    float: left;
+  }
+  .glass-spacer{
+    width: 100%;
+    height: 15%;
+    margin-bottom: 0;
+  }
+  .glass-spacer div{
+    width: 100%;
+    height: 50%;
+  }
+  .glass-oneSlice{
+    width: 100%;
+    height: 10%;
+    //background-color: #1890FF;
+  }
+  .glass-oneSlice-type{
+    width: 100%;
+    height: 20%;
+  }
+  .glass-other{
+    width: 100%;
+    height: 10%;
+  }
+  .glass-part-all{
+    margin-left: 2%;
+    margin-top: 2%;
+    width: 96%;
+    height: 10%;
+  }
+  .glass-part-detail{
+    margin-left: 2%;
+    margin-top: 2%;
+    width: 96%;
+    height: 75%;
+  }
+
+
+
+  /*鐜荤拑缁勫悎鏄庣粏 glass-part*/
+
+  h5{
+    margin-top: 0.5rem;
+    margin-left: 0.5rem;
+  }
+/*甯冨眬css*/
+  .el-row {
+    margin-bottom: 20px;
+    margin-top: 1rem;
+  }
+  .el-row:last-child {
+    margin-bottom: 0;
+  }
+  .el-col {
+    border-radius: 4px;
+  }
+
+  .grid-content {
+    border-radius: 4px;
+    min-height: 36px;
+  }
+/*  .el-col{
+    background-color: #1890FF;
+  }*/
+  .line {
+    width: 100%;
+    height: 0;
+    border-top: 2px solid var(--el-border-color);
+  }
+
+</style>
\ No newline at end of file
diff --git a/north-glass-erp/northglass-erp/src/views/sd/product/Product.vue b/north-glass-erp/northglass-erp/src/views/sd/product/Product.vue
new file mode 100644
index 0000000..b37b96c
--- /dev/null
+++ b/north-glass-erp/northglass-erp/src/views/sd/product/Product.vue
@@ -0,0 +1,58 @@
+<script setup>
+import {ref} from "vue";
+import {ArrowLeftBold, ArrowRight, Search} from "@element-plus/icons-vue";
+import request from "@/utils/request";
+import deepClone from "@/utils/deepClone";
+import {ElMessage} from "element-plus";
+import {useRouter} from "vue-router";
+import  GlassType from '@/components/basic/product/GlassType.vue'
+
+
+const router = useRouter()
+
+</script>
+
+<template>
+  <div id="main">
+   <div id="div-title">
+     <el-breadcrumb :separator-icon="ArrowRight">
+       <el-breadcrumb-item :to="{ path: '/main/product/selectProduct' }">浜у搧棣栭〉</el-breadcrumb-item>
+       <el-breadcrumb-item :to="{ path: '/main/product/createProduct' }">鍒涘缓</el-breadcrumb-item>
+       <el-breadcrumb-item :to="{ path: '/main/product/test' }">娴嬭瘯</el-breadcrumb-item>
+       <el-breadcrumb-item :to="{ path: '/main/product/test1' }">娴嬭瘯</el-breadcrumb-item>
+     </el-breadcrumb>
+
+    </div>
+
+    <div id="main-body">
+      <router-view  />
+    </div>
+  </div>
+</template>
+
+<style scoped>
+#main{
+  width: 100%;
+  height: 100%;
+}
+#div-title{
+  height: 2%;
+  width: 100%;
+}
+#searchButton{
+  margin-top: -5px;
+  margin-left: 1rem;
+}
+#searchButton1{
+  //margin-left: 10rem;
+}
+/*main-body鏍峰紡*/
+#main-body{
+  width: 99%;
+  height: 95%;
+  margin-top: 1%;
+}
+#select{
+  margin-left:0.5rem;
+}
+</style>
\ No newline at end of file
diff --git a/north-glass-erp/northglass-erp/src/views/sd/product/SelectProduct.vue b/north-glass-erp/northglass-erp/src/views/sd/product/SelectProduct.vue
new file mode 100644
index 0000000..790e840
--- /dev/null
+++ b/north-glass-erp/northglass-erp/src/views/sd/product/SelectProduct.vue
@@ -0,0 +1,84 @@
+<script setup>
+import request from "@/utils/request";
+import deepClone from "@/utils/deepClone";
+import {ElDatePicker, ElMessage} from "element-plus";
+import useProductGlassTypeStore from "@/stores/productGlassType"
+import {watch} from "vue";
+import {Search} from "@element-plus/icons-vue";
+import GlassType from "@/components/basic/product/GlassType.vue";
+import router from "@/router";
+let productGlassTypeStore = useProductGlassTypeStore()
+watch(productGlassTypeStore,(newVal,oldVal) => {
+  console.log(newVal.GlassType)
+  let list = productList.filter( product=>{
+    return  product.glassType==newVal.GlassType
+  })
+})
+
+let loading = $ref(true)
+let productList=$ref([])
+request.get("/product").then((res) => {
+  if(res.code==200){
+    productList= deepClone(res.data)
+    loading=false
+  }else{
+    ElMessage.warning(res.msg)
+    router.push("/login")
+  }
+})
+</script>
+
+<template>
+
+  <div>
+    <glass-type   style="float: left" />
+
+
+    <el-button
+        id="select"
+        type="primary" :icon="Search">鏌ヨ</el-button>
+
+
+    <el-table
+        v-loading="loading"
+        :data="productList"
+        :header-cell-style="{ 'text-align': 'center' }"
+        :cell-style="{ 'text-align': 'center' }"
+        lazy
+        border
+        style="width: 100%;"
+        max-height="80vh">
+
+
+      <el-table-column type="expand" fixed>
+        <template #default="props">
+          <div m="4">
+            <p m="t-0 b-2">缂栧彿: {{ props.row.prodID }}</p>
+            <p m="t-0 b-2">鍚嶇О: {{ props.row.product }}</p>
+            <p m="t-0 b-2">鎵�灞炵被鍒�: {{ props.row.glassType }}</p>
+            <p m="t-0 b-2">蹇�熸煡璇�: {{ props.row.query }}</p>
+            <p m="t-0 b-2">澶囨敞: {{ props.row.remarks }}</p>
+            <p m="t-0 b-2">鍒涘缓浜�: {{ props.row.creator }}</p>
+            <p m="t-0 b-2">鍒涘缓鏃堕棿: {{ props.row.createTime }}</p>
+          </div>
+        </template>
+      </el-table-column>
+      <el-table-column label="鎿嶄綔" width="110" fixed  >
+        <el-button link type="primary" size="small">缂栬緫</el-button>
+<!--        <el-button link type="primary" size="small">淇敼</el-button>-->
+        <el-button link type="primary" size="small">鍒犻櫎</el-button>
+      </el-table-column>
+      <el-table-column sortable prop="prodID" label="缂栧彿" width="110"  />
+      <el-table-column prop="product" label="鍚嶇О" :show-overflow-tooltip='true'  />
+      <el-table-column prop="typeName" label="鎵�灞炵被鍒�" width="175" />
+      <el-table-column prop="query" label="蹇�熸煡璇�" width="150" />
+      <el-table-column prop="remarks" label="澶囨敞" :show-overflow-tooltip='true' width="100" />
+      <el-table-column prop="creator" label="鍒涘缓浜�" width="75" />
+      <el-table-column prop="createTime" label="鍒涘缓鏃堕棿" width="100" />
+    </el-table>
+  </div>
+</template>
+
+<style scoped>
+
+</style>
\ No newline at end of file
diff --git a/north-glass-erp/northglass-erp/src/views/sd/product/Test.vue b/north-glass-erp/northglass-erp/src/views/sd/product/Test.vue
new file mode 100644
index 0000000..a8923af
--- /dev/null
+++ b/north-glass-erp/northglass-erp/src/views/sd/product/Test.vue
@@ -0,0 +1,70 @@
+<script setup>
+import TestTable from '@/components/basic/BasicTable.vue'
+import request from "@/utils/request"
+import deepClone from "@/utils/deepClone";
+import {ElMessage} from "element-plus";
+import router from "@/router";
+
+/*title閲岀殑鍙傛暟璁剧疆
+ * {
+ *    field: 鏁版嵁鎸囧悜浣嶇疆
+ *    title: 鏍囬
+ *    sortable: 鏄惁鍙帓搴�
+ *    editRender: 鏄惁鍙紪杈�
+ *    showOverflow: 鏄惁鏄剧ず鐪佺暐鍙�
+ *    width: 瀹藉害
+ *    fixed: left,right鏄惁鍥哄畾鍒�
+ * }
+ *
+ * */
+let tableProp = $ref({
+  title:[
+    { type: 'checkbox', title: '搴忓彿', width: 60 },
+    {type:'expand',fixed:"left",slots: { content:'content' },width: 50},
+    {title: '鎿嶄綔', width: 70, slots: { default: 'button_slot' },fixed:"left"},
+    {field: 'prodID', title: '缂栧彿', sortable: true,editRender: { name: 'input', attrs: { placeholder: '璇疯緭鍏ュ悕绉�' } } },
+    {field: 'product', title: '鍚嶇О', sortable: true,showOverflow:"ellipsis" ,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
+    {field: 'typeName', title: '鎵�灞炵被鍒�', sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
+    {field: 'query', title: '蹇�熸煡璇�', sortable: true},
+    {field: 'remarks', title: '澶囨敞', sortable: true,showOverflow:"ellipsis"},
+    {field: 'creator', title: '鍒涘缓浜�', sortable: true},
+    {field: 'createTime', title: '鍒涘缓鏃堕棿', sortable: true}
+  ],
+  detail:request.get("/product").then((res) => {
+            if(res.code==200){
+              return res.data
+            }
+         }),
+
+  footList:['remarks'],//鑴氶儴姹傚拰
+
+})
+
+
+const getChildren = (row) =>{
+  alert('鎴戞帴鏀跺埌瀛愮粍浠朵紶閫佺殑淇℃伅')
+}
+const getFilterChildren = (param) =>{
+  //if(!param){
+  request.get("/product").then((res) => {
+    if(res.code==200){
+      tableProp.detail= res.data
+    }else{
+      ElMessage.warning(res.msg)
+    }
+  })
+  // }
+}
+
+
+</script>
+
+<template>
+  <div style="width: 100%;height: 100%;">
+    <test-table :tableProp="tableProp" @getChildren="getChildren"  @getFilterChildren="getFilterChildren"/>
+  </div>
+</template>
+
+<style scoped>
+
+</style>
\ No newline at end of file
diff --git a/north-glass-erp/northglass-erp/src/views/sd/product/Test11.vue b/north-glass-erp/northglass-erp/src/views/sd/product/Test11.vue
new file mode 100644
index 0000000..e179ab2
--- /dev/null
+++ b/north-glass-erp/northglass-erp/src/views/sd/product/Test11.vue
@@ -0,0 +1,96 @@
+<template>
+  <div>
+    <vxe-grid v-bind="gridOptions">
+      <template #name_item="{ data }">
+        <vxe-input v-model="data.name" type="text" placeholder="璇疯緭鍏ュ悕绉�"></vxe-input>
+      </template>
+      <template #sex_item="{ data }">
+        <vxe-select v-model="data.sex" transfer>
+          <vxe-option v-for="item in sexList" :key="item.value" :value="item.value" :label="item.label"></vxe-option>
+        </vxe-select>
+      </template>
+      <template #submit_item>
+        <vxe-button type="submit" status="primary" content="鏌ヨ"></vxe-button>
+      </template>
+      <template #reset_item>
+        <vxe-button type="reset" content="閲嶇疆"></vxe-button>
+      </template>
+    </vxe-grid>
+  </div>
+</template>
+
+<script setup>
+import { ref, reactive } from 'vue'
+const gridOptions = reactive({
+  border: true,
+  showOverflow: true,
+  height: 400,
+  exportConfig: {},
+  columnConfig: {
+    resizable: true
+  },
+  pagerConfig: {
+    enabled: true,
+    pageSize: 10
+  },
+  formConfig: {
+    items: [
+      { field: 'name', title: '鍚嶇О', itemRender: {}, slots: { default: 'name_item' } },
+      { field: 'sex', title: '鎬у埆', itemRender: {}, slots: { default: 'sex_item' } },
+      { itemRender: {}, slots: { default: 'submit_item' } },
+      { itemRender: {}, slots: { default: 'reset_item' } }
+    ]
+  },
+  toolbarConfig: {
+    export: true,
+    custom: true
+  },
+  proxyConfig: {
+    form: true,
+    ajax: {
+      // 鎺ユ敹 Promise API
+      query: ({ page, form }) => {
+        return new Promise(resolve => {
+          setTimeout(() => {
+            const list = [
+              { id: 10001, name: 'Test1' + form.name, nickname: 'T1', role: 'Develop', sex: '1', age: 28, address: 'Shenzhen' },
+              { id: 10002, name: 'Test2' + form.name, nickname: 'T2', role: 'Test', sex: '0', age: 22, address: 'Guangzhou' },
+              { id: 10003, name: 'Test3' + form.name, nickname: 'T3', role: 'PM', sex: '1', age: 32, address: 'Shanghai' },
+              { id: 10004, name: 'Test4' + form.name, nickname: 'T4', role: 'Designer', sex: '0', age: 23, address: 'Shenzhen' },
+              { id: 10005, name: 'Test5' + form.name, nickname: 'T5', role: 'Develop', sex: '0', age: 30, address: 'Shanghai' },
+              { id: 10006, name: 'Test6' + form.name, nickname: 'T6', role: 'Develop', sex: '0', age: 27, address: 'Shanghai' },
+              { id: 10007, name: 'Test7' + form.name, nickname: 'T7', role: 'Develop', sex: '1', age: 29, address: 'Shenzhen' },
+              { id: 10008, name: 'Test8' + form.name, nickname: 'T8', role: 'Develop', sex: '0', age: 32, address: 'Shanghai' },
+              { id: 10009, name: 'Test9' + form.name, nickname: 'T9', role: 'Develop', sex: '1', age: 30, address: 'Shenzhen' },
+              { id: 10010, name: 'Test10' + form.name, nickname: 'T10', role: 'Develop', sex: '0', age: 34, address: 'Shanghai' }
+            ]
+            resolve({
+              result: list,
+              page: {
+                totle: page.pageSize * 20
+              }
+            })
+          }, 500)
+        })
+      }
+    }
+  },
+  columns: [
+    { type: 'seq', width: 60 },
+    { type: 'checkbox', width: 60 },
+    { field: 'name', title: 'Name' },
+    { field: 'nickname', title: 'Nickname' },
+    { field: 'age', title: 'Age' },
+    { field: 'sex', title: 'Sex' },
+    { field: 'describe', title: 'Describe', showOverflow: true }
+  ]
+})
+const sexList = ref([])
+// 寮傛鏇存柊涓嬫媺閫夐」
+setTimeout(() => {
+  sexList.value = [
+    { value: '1', label: '鐢�' },
+    { value: '0', label: '濂�' }
+  ]
+}, 200)
+</script>
diff --git a/north-glass-erp/northglass-erp/src/views/sd/returns/CreateReturns.vue b/north-glass-erp/northglass-erp/src/views/sd/returns/CreateReturns.vue
new file mode 100644
index 0000000..c0bbd7c
--- /dev/null
+++ b/north-glass-erp/northglass-erp/src/views/sd/returns/CreateReturns.vue
@@ -0,0 +1,147 @@
+<script setup>
+
+let deliveryTitle = $ref([
+  '鍙戣揣鍗曞彿',
+  '鎵规',
+  '鍙��鏁伴噺',
+  '宸查��鏁伴噺',
+  '鎬绘暟閲�',
+  '鏈閫�璐ф暟閲�',
+  '妤煎彿',
+  '浜у搧缂栧彿',
+  '浜у搧鍚嶇О',
+  '鍗曚环',
+  '搴撳尯',
+  '寮傚舰鍙傛暟',//鍙互涓嶉渶瑕�
+  '閲戦',
+  '瀹�',
+  '楂�',
+  '褰㈢姸',
+  '瀹為檯鍗曠墖/鎬婚潰绉�',
+  '缁撶畻鍗曠墖闈㈢Н',
+  '缁撶畻鎬婚潰绉�',
+  '鍔犲伐瑕佹眰',
+  '澶囨敞',
+  '纾ㄨ竟绫诲瀷',
+  '鍛ㄩ暱',
+
+
+])
+
+let deliveryList =[
+  {
+    '0': 'JG23110101',
+    '1': '20鎵�1',
+    '2': '16',
+    '3': '4',
+    '4': '20',
+    '5': '16',
+    '6': 'A妤糱灞�',
+    '7': '101',
+    '8': '10mmLYTM-140寮挗鍖�',
+    '9': '1008.38',
+    '10': 'A鍙锋煴瀛�',
+    '11': '',
+    '12': '100',
+    '13': '3360',
+    '14': '2440',
+    '15': '鏅舰',
+    '16': '1.11/100.1',
+    '17': '1.22',
+    '18': '11.11',
+    '19': '杩欐槸鍔犲伐瑕佹眰',
+    '20': '杩欐槸澶囨敞',
+    '21': '杩欐槸纾ㄨ竟绫诲瀷',
+    '22': '1.1'
+  }
+]
+</script>
+
+<template>
+  <div class="main-div">
+    <div class="order-primary">
+      <el-row>
+        <el-col  :span="2"><el-text>瀹㈡埛缂栫爜:</el-text></el-col>
+        <el-col  :span="5"><el-text style="font-size: large;color: #181818">131</el-text></el-col>
+        <el-col  :span="2"><el-text>瀹㈡埛鍚嶇О:</el-text></el-col>
+        <el-col  :span="5"><el-text></el-text></el-col>
+        <el-col  :span="2"><el-text>椤圭洰鍚嶇О:</el-text></el-col>
+        <el-col  :span="5"><el-text></el-text></el-col>
+      </el-row>
+      <el-row>
+        <el-col  :span="2"><el-text>閫�璐ф柟寮�:</el-text></el-col>
+        <el-col  :span="5">
+          <el-select  clearable  >
+            <el-option/>
+          </el-select>
+        </el-col>
+        <el-col  :span="2"><el-text>鍙戣揣鎶ヨ〃鏃ユ湡:</el-text></el-col>
+        <el-col  :span="5">
+          <el-date-picker
+              type="week"
+              format="[Week] ww"
+              placeholder="閫夋嫨鏃ユ湡"/>
+        </el-col>
+        <el-col  :span="2"><el-text>澶囨敞:</el-text></el-col>
+        <el-col  :span="5"><el-text></el-text></el-col>
+      </el-row>
+      <el-row>
+        <el-col  :span="2"><el-text>涓氬姟鍛�:</el-text></el-col>
+        <el-col  :span="5"><el-text style="font-size: large;color: #181818"></el-text></el-col>
+        <el-col  :span="2"><el-text>鍙戣揣鍛�:</el-text></el-col>
+        <el-col  :span="5"><el-text style="font-size: large;color: #181818"></el-text></el-col>
+        <el-col style="background-color: #337ecc" :span="2"><el-button style="width: 100%" type="primary">淇濆瓨</el-button></el-col>
+      </el-row>
+    </div>
+    <div class="order-detail">
+      <el-table
+          :data="deliveryList"
+          :header-cell-style="{ 'text-align': 'center' }"
+          :cell-style="{ 'text-align': 'center' }"
+          border
+      >
+        <el-table-column type="expand" fixed>
+          <template #default="props" >
+            <div m="4">
+              <p m="t-0 b-2">璁㈠崟鍙戣揣鏈夊叧鎵�鏈変俊鎭�</p>
+            </div>
+          </template>
+        </el-table-column>
+        <el-table-column  label="閫夊垯" fixed>
+          <el-checkbox/>
+        </el-table-column>
+        <el-table-column
+            :prop="index.toString()"
+            :show-overflow-tooltip='true'
+            width="110" v-for="(item,index) in deliveryTitle"
+            :label="item" />
+
+      </el-table>
+    </div>
+  </div>
+
+</template>
+
+<style scoped>
+.main-div {
+  width: 100%;
+  height: 100%;
+  text-align: center;
+}
+.el-col{
+  border: #181818 1px solid;
+}
+:deep(.el-input__wrapper) {
+  box-shadow: 0 0 0 0 var(--el-input-border-color, var(--el-border-color)) inset;
+  cursor: default;
+  border: none !important;
+  background-color: transparent;
+}
+.order-primary{
+  width: 100%;
+}
+.order-detail{
+  width: 100%;
+  height: 70%;
+}
+</style>
\ No newline at end of file
diff --git a/north-glass-erp/northglass-erp/src/views/sd/returns/Returns.vue b/north-glass-erp/northglass-erp/src/views/sd/returns/Returns.vue
new file mode 100644
index 0000000..9a4d48b
--- /dev/null
+++ b/north-glass-erp/northglass-erp/src/views/sd/returns/Returns.vue
@@ -0,0 +1,48 @@
+<script setup>
+import {ArrowLeftBold, ArrowRight, Search} from "@element-plus/icons-vue"
+import {useRouter} from "vue-router";
+
+</script>
+
+<template>
+  <div id="main-div">
+    <div id="div-title">
+      <el-breadcrumb :separator-icon="ArrowRight">
+        <el-breadcrumb-item :to="{ path: '/main/returns/selectReturns' }">閫�璐ч椤�</el-breadcrumb-item>
+        <el-breadcrumb-item :to="{ path: '/main/returns/selectDeliveryList' }">鍙戣揣閫�璐�</el-breadcrumb-item>
+        <el-breadcrumb-item :to="{ path: '/main/returns/returnsReport' }">鎶ヨ〃</el-breadcrumb-item>
+      </el-breadcrumb>
+    </div>
+
+    <div id="main-body">
+      <router-view  />
+    </div>
+  </div>
+</template>
+
+<style scoped>
+#main-div{
+  width: 100%;
+  height: 100%;
+}
+#div-title{
+  height: 2%;
+  width: 100%;
+}
+#searchButton{
+  margin-top: -5px;
+  margin-left: 1rem;
+}
+#searchButton1{
+//margin-left: 10rem;
+}
+/*main-body鏍峰紡*/
+#main-body{
+  width: 99%;
+  height: 95%;
+  margin-top: 1%;
+}
+#select{
+  margin-left:0.5rem;
+}
+</style>
\ No newline at end of file
diff --git a/north-glass-erp/northglass-erp/src/views/sd/returns/ReturnsReport.vue b/north-glass-erp/northglass-erp/src/views/sd/returns/ReturnsReport.vue
new file mode 100644
index 0000000..2bae8fb
--- /dev/null
+++ b/north-glass-erp/northglass-erp/src/views/sd/returns/ReturnsReport.vue
@@ -0,0 +1,96 @@
+<script setup>
+
+import {Folder, Search} from "@element-plus/icons-vue";
+
+let titleList = [
+  '搴忓彿',
+  '閫�璐у崟鍙�',
+  '鍙戣揣鍗曞彿',
+  '璁㈠崟鍗曞彿',
+  '椤圭洰鍚嶇О',
+  '瀹㈡埛鍚嶇О',
+  '涓氬姟鍛�',
+  '閫佽揣鍦板潃',
+  '鍙戣揣鍛�',
+  '妤煎彿',
+  '浜у搧缂栧彿',
+  '浜у搧鍚嶇О',
+  '閫�璐ф暟閲�',
+  '鍛ㄩ暱',
+  '瀹為檯闈㈢Н',
+  '鍙戣揣闈㈢Н',
+  '鍗曚环',
+  '鍙戣揣閲戦',
+  '瀹�',
+  '楂�',
+  '褰㈢姸',
+  '纾ㄨ竟绫诲瀷',
+  '澶囨敞',
+  '鍔犲伐瑕佹眰',
+  '寤虹珛鏃堕棿'
+
+
+
+
+]
+</script>
+
+<template>
+  <div class="main-div">
+    <el-date-picker
+        v-model="value1"
+        type="daterange"
+        start-placeholder="寮�濮嬫椂闂�"
+        end-placeholder="缁撴潫鏃堕棿"
+    />
+    <el-button style="margin-top: -5px"  id="searchButton" type="primary" :icon="Search">鏌ヨ</el-button>
+    <el-button style="margin-top: -5px"  id="searchButton" type="primary" :icon="Folder">瀵煎嚭</el-button>
+    <div class="order-detail">
+      <el-table
+          :data="dataList"
+          :header-cell-style="{ 'text-align': 'center' }"
+          :cell-style="{ 'text-align': 'center' }"
+          border
+      >
+
+        <el-table-column type="expand" fixed>
+          <template #default="props" >
+            <div m="4">
+              <p m="t-0 b-2">: {{ props.row['2'] }}</p>
+            </div>
+          </template>
+        </el-table-column>
+
+
+        <el-table-column
+            :prop="index.toString()"
+            :show-overflow-tooltip='true'
+            width="120" v-for="(item,index) in titleList"
+            :label="item"    />
+      </el-table>
+    </div>
+  </div>
+</template>
+
+<style scoped>
+.main-div {
+  width: 100%;
+  height: 100%;
+}
+.el-col{
+  border: #181818 1px solid;
+}
+:deep(.el-table .el-input__wrapper) {
+  box-shadow: 0 0 0 0 var(--el-input-border-color, var(--el-border-color)) inset;
+  cursor: default;
+  border: none !important;
+  background-color: transparent;
+}
+.order-primary{
+  width: 100%;
+}
+.order-detail{
+  width: 100%;
+  height: 80%;
+}
+</style>
\ No newline at end of file
diff --git a/north-glass-erp/northglass-erp/src/views/sd/returns/SelectDeliveryList.vue b/north-glass-erp/northglass-erp/src/views/sd/returns/SelectDeliveryList.vue
new file mode 100644
index 0000000..cbc1217
--- /dev/null
+++ b/north-glass-erp/northglass-erp/src/views/sd/returns/SelectDeliveryList.vue
@@ -0,0 +1,105 @@
+<script setup>
+import {CirclePlus, Search} from "@element-plus/icons-vue";
+import {useRouter} from 'vue-router'
+
+let router = useRouter()
+let deliveryTitle = $ref([
+  '搴忓彿',
+  '鍙戣揣鍗曞彿',
+  '瀹㈡埛缂栧彿',
+  '瀹㈡埛鍚嶇О',
+  '鎬绘暟閲�',
+  '鍙敤搴撳瓨',
+  '椤圭洰鍚嶇О',
+  '鎵规',
+  '鎬婚噾棰�',
+  '缁撶畻鎬婚潰绉�',
+  '鎶ヨ〃鏃ユ湡',
+  '鍖呰鏂瑰紡',
+  '璁㈠崟绫诲瀷',
+  '閫佽揣鍦板潃',
+  '涓氬姟鍛�'
+
+])
+
+let deliveryList =[
+  {
+    '0': '1',
+    '1': 'NG23110101',
+    '2': '11',
+    '3': '涓缓',
+    '4': '534',
+    '5': '116',
+    '6': '榛勭煶鏈夎建鐢佃溅',
+    '7': '20鎵�',
+    '8': '111100.02',
+    '9': '1008.38',
+    '10': '2023-10-30',
+    '11': '鍙夎溅鏈ㄧ',
+    '12': '鏅�氳鍗�',
+    '13': '',
+    '14': '鐜嬮緳'
+  }
+]
+
+let listName = $ref([
+  '瀹℃牳','鍑哄簱'
+])
+
+function addReturns(){
+  router.push({path:'/main/Returns/createReturns'})
+}
+
+
+
+</script>
+
+<template>
+  <div>
+    <el-date-picker
+        v-model="value1"
+        type="daterange"
+        start-placeholder="寮�濮嬫椂闂�"
+        end-placeholder="缁撴潫鏃堕棿"
+    />
+    <el-button style="margin-top: -5px"  id="searchButton" type="primary" :icon="Search">鏌ヨ</el-button>
+    <el-table
+        :data="deliveryList"
+        :header-cell-style="{ 'text-align': 'center' }"
+        :cell-style="{ 'text-align': 'center' }"
+        lazy
+        border
+        style="width: 99%;"
+        max-height="80vh">
+      <el-table-column type="expand" fixed>
+        <template #default="props" >
+          <div m="4">
+            <p m="t-0 b-2">閫�璐х浉鍏充俊鎭�</p>
+          </div>
+        </template>
+      </el-table-column>
+      <el-table-column label="閫夋嫨" fixed width="70"  >
+        <el-button @click="addReturns" link type="primary" size="small">閫�璐�</el-button>
+      </el-table-column>
+      <el-table-column v-for="item in listName" prop="" :label="item" width="40"   >
+        <el-checkbox checked/>
+      </el-table-column>
+
+      <el-table-column
+          :prop="index.toString()"
+          :show-overflow-tooltip='true'
+          width="100" v-for="(item,index) in deliveryTitle"
+          :label="item" />
+    </el-table>
+  </div>
+
+</template>
+
+<style scoped>
+:deep(.el-table .el-input__wrapper) {
+  box-shadow: 0 0 0 0px var(--el-input-border-color, var(--el-border-color)) inset;
+  cursor: default;
+  border: none !important;
+  background-color: transparent;
+}
+</style>
\ No newline at end of file
diff --git a/north-glass-erp/northglass-erp/src/views/sd/returns/SelectReturns.vue b/north-glass-erp/northglass-erp/src/views/sd/returns/SelectReturns.vue
new file mode 100644
index 0000000..59cdfda
--- /dev/null
+++ b/north-glass-erp/northglass-erp/src/views/sd/returns/SelectReturns.vue
@@ -0,0 +1,104 @@
+<script setup>
+import {Search} from "@element-plus/icons-vue";
+
+let deliveryTitle = $ref([
+  '搴忓彿',
+  '瀹℃牳',
+  '鍑哄簱',
+  '閫�璐у崟鍙�',
+  '閫�璐у憳',
+  '閫�璐ф棩鏈�',
+  '瀹㈡埛缂栫爜',
+  '瀹㈡埛鍚嶇О',
+  '鎵规',
+  '椤圭洰鍚嶇О',
+  '鍙戣揣鍗曞彿',
+  '閫�璐ф柟寮�',
+  '浠樻鏂瑰紡',
+  '鎬绘暟閲�',
+  '鎬婚潰绉�',
+  '鎬婚噾棰�',
+  '鎶ヨ〃鏃ユ湡',
+  '涓氬姟鍛�',
+  '閫佽揣鏃ユ湡',
+  '鏀舵鏃堕棿'
+
+])
+
+let deliveryList =[
+  {
+    '0': '1',
+    '1': '',
+    '2': '',
+    '3': 'TH23120801',
+    '4': '閮戠強鐝�',
+    '5': '2023-12-08',
+    '6': '310',
+    '7': '涓婃捣閲岃寤虹瓚宸ョ▼鏈夐檺鍏徃',
+    '8': '琛�1-2',
+    '9': '瀹胯縼鏌愭煇椤圭洰',
+    '10': 'JG23112304',
+    '11': '瀹炵墿閫�璐�',
+    '12': '',
+    '13': '8',
+    '14': '15.68',
+    '15': '11912.05',
+    '16': '2023-11-24',
+    '17': '鐜嬮緳',
+    '18': '',
+    '19': '2023-12-08'
+  }
+]
+</script>
+
+<template>
+  <div>
+    <el-date-picker
+        v-model="value1"
+        type="daterange"
+        start-placeholder="寮�濮嬫椂闂�"
+        end-placeholder="缁撴潫鏃堕棿"
+    />
+    <el-button style="margin-top: -5px"  id="searchButton" type="primary" :icon="Search">鏌ヨ</el-button>
+    <el-table
+        :data="deliveryList"
+        :header-cell-style="{ 'text-align': 'center' }"
+        :cell-style="{ 'text-align': 'center' }"
+        lazy
+        border
+        style="width: 99%;"
+        max-height="80vh">
+      <el-table-column type="expand" fixed>
+        <template #default="props" >
+          <div m="4">
+            <p m="t-0 b-2">: 閫�璐х殑鏄庣粏</p>
+          </div>
+        </template>
+      </el-table-column>
+      <el-table-column label="鎿嶄綔" fixed width="110"  >
+        <el-button link type="primary" size="small">缂栬緫</el-button>
+<!--        <el-button link type="primary" size="small">淇敼</el-button>-->
+        <el-button link type="primary" size="small">鍒犻櫎</el-button>
+      </el-table-column>
+      <el-table-column
+          :prop="index.toString()"
+          :show-overflow-tooltip='true'
+          width="100" v-for="(item,index) in deliveryTitle"
+          :label="item" >
+        <el-checkbox v-if="index>0 && index<3" checked/>
+      </el-table-column>
+
+
+    </el-table>
+  </div>
+
+</template>
+
+<style scoped>
+:deep(.el-table .el-input__wrapper) {
+  box-shadow: 0 0 0 0px var(--el-input-border-color, var(--el-border-color)) inset;
+  cursor: default;
+  border: none !important;
+  background-color: transparent;
+}
+</style>
\ No newline at end of file
diff --git a/north-glass-erp/northglass-erp/vite.config.js b/north-glass-erp/northglass-erp/vite.config.js
new file mode 100644
index 0000000..12e2238
--- /dev/null
+++ b/north-glass-erp/northglass-erp/vite.config.js
@@ -0,0 +1,33 @@
+import { fileURLToPath, URL } from 'node:url'
+
+import { defineConfig } from 'vite'
+import vue from '@vitejs/plugin-vue'
+import ReactivityTransform from '@vue-macros/reactivity-transform/vite'
+
+// https://vitejs.dev/config/
+export default defineConfig({
+  plugins: [
+    vue(),
+    ReactivityTransform()
+  ],
+  resolve: {
+    alias: {
+      '@': fileURLToPath(new URL('./src', import.meta.url))
+    }
+  }, 
+  server: {
+    port: 80,//绔彛鍙�
+    host: true,//ip鍦板潃 鎴� '0.0.0.0' 鎴� "loaclhost"
+    open: false, //鍚姩鍚庢槸鍚﹁嚜鍔ㄦ墦寮�娴忚鍣�
+    https: false, // 鏄惁寮�鍚� https
+    proxy: {
+      '^/api': {
+        target: 'localhost:8080', //鐩爣婧愶紝鐩爣鏈嶅姟鍣紝鐪熷疄璇锋眰鍦板潃
+        changeOrigin: true, //鏀寔璺ㄥ煙
+        rewrite: (path) => path.replace(/^\/api/, "/api"), //閲嶅啓鐪熷疄璺緞,鏇挎崲/api
+      }
+    }
+  }
+
+   
+})
diff --git a/north-glass-erp/pom.xml b/north-glass-erp/pom.xml
new file mode 100644
index 0000000..4a1a7b4
--- /dev/null
+++ b/north-glass-erp/pom.xml
@@ -0,0 +1,171 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>org.springframework.boot</groupId>
+        <artifactId>spring-boot-starter-parent</artifactId>
+        <version>2.5.9</version>
+        <relativePath/> <!-- lookup parent from repository -->
+    </parent>
+    <groupId>com.example</groupId>
+    <artifactId>erp</artifactId>
+    <version>0.0.1-SNAPSHOT</version>
+    <name>erp</name>
+    <description>Demo project for Spring Boot</description>
+    <properties>
+        <java.version>1.8</java.version>
+    </properties>
+    <dependencies>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-web</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.mybatis.spring.boot</groupId>
+            <artifactId>mybatis-spring-boot-starter</artifactId>
+            <version>2.3.1</version>
+        </dependency>
+
+        <dependency>
+            <groupId>mysql</groupId>
+            <artifactId>mysql-connector-java</artifactId>
+            <version>8.0.20</version>
+            <scope>runtime</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.projectlombok</groupId>
+            <artifactId>lombok</artifactId>
+            <optional>true</optional>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-test</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.mybatis.spring.boot</groupId>
+            <artifactId>mybatis-spring-boot-starter-test</artifactId>
+            <version>2.3.1</version>
+            <scope>test</scope>
+        </dependency>
+        <!--jwt 椤圭洰鐢熸垚token-->
+        <dependency>
+            <groupId>com.auth0</groupId>
+            <artifactId>java-jwt</artifactId>
+            <version>3.10.3</version>
+        </dependency>
+        <dependency>
+            <groupId>org.assertj</groupId>
+            <artifactId>assertj-core</artifactId>
+        </dependency>
+        <!--hutool java楠岃瘉鏂规硶绫�-->
+        <dependency>
+            <groupId>cn.hutool</groupId>
+            <artifactId>hutool-all</artifactId>
+            <version>5.4.0</version>
+        </dependency>
+
+        <dependency>
+            <groupId>com.baomidou</groupId>
+            <artifactId>mybatis-plus-boot-starter</artifactId>
+            <version>3.5.1</version>
+        </dependency>
+
+        <dependency>
+            <groupId>com.baomidou</groupId>
+            <artifactId>dynamic-datasource-spring-boot-starter</artifactId>
+            <version>3.5.1</version>
+        </dependency>
+
+<!--        SwaggerUi-->
+        <dependency>
+            <groupId>io.springfox</groupId>
+            <artifactId>springfox-swagger2</artifactId>
+            <version>2.9.2</version>
+        </dependency>
+        <dependency>
+            <groupId>io.springfox</groupId>
+            <artifactId>springfox-swagger-ui</artifactId>
+            <version>2.9.2</version>
+        </dependency>
+        <dependency>
+            <groupId>io.swagger</groupId>
+            <artifactId>swagger-annotations</artifactId>
+            <version>1.5.20</version>
+        </dependency>
+
+
+        <!--   spring cache 鏁版嵁缂撳瓨     -->
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-cache</artifactId>
+        </dependency>
+
+<!--websocket-->
+<!--        <dependency>-->
+<!--            <groupId>org.springframework.boot</groupId>-->
+<!--            <artifactId>spring-boot-starter-websocket</artifactId>-->
+<!--        </dependency>-->
+
+        <dependency>
+            <groupId>io.netty</groupId>
+            <artifactId>netty-all</artifactId>
+            <version>4.1.36.Final</version>
+        </dependency>
+
+        <dependency>
+            <groupId>com.alibaba</groupId>
+            <artifactId>fastjson</artifactId>
+            <version>1.2.24</version>
+            <scope>import</scope>
+        </dependency>
+
+    </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.springframework.boot</groupId>
+                <artifactId>spring-boot-maven-plugin</artifactId>
+                <configuration>
+                    <excludes>
+                        <exclude>
+                            <groupId>org.projectlombok</groupId>
+                            <artifactId>lombok</artifactId>
+                        </exclude>
+                    </excludes>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+
+
+    <repositories>
+        <repository>
+            <id>nexus-aliyun</id>
+            <name>nexus-aliyun</name>
+            <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
+            <releases>
+                <enabled>true</enabled>
+            </releases>
+            <snapshots>
+                <enabled>false</enabled>
+            </snapshots>
+        </repository>
+    </repositories>
+
+    <pluginRepositories>
+        <pluginRepository>
+            <id>public</id>
+            <name>aliyun nexus</name>
+            <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
+            <releases>
+                <enabled>true</enabled>
+            </releases>
+            <snapshots>
+                <enabled>false</enabled>
+            </snapshots>
+        </pluginRepository>
+    </pluginRepositories>
+</project>
diff --git a/north-glass-erp/src/main/java/com/example/erp/ErpApplication.java b/north-glass-erp/src/main/java/com/example/erp/ErpApplication.java
new file mode 100644
index 0000000..066700f
--- /dev/null
+++ b/north-glass-erp/src/main/java/com/example/erp/ErpApplication.java
@@ -0,0 +1,20 @@
+package com.example.erp;
+
+import com.example.erp.tools.netty.NettyServer;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.cache.annotation.EnableCaching;
+
+//springboot 鍚姩鍏ュ彛
+@SpringBootApplication
+@EnableCaching
+public class ErpApplication {
+    public static void main(String[] args) {
+        SpringApplication.run(ErpApplication.class, args);
+        try {
+            new NettyServer(12345).start();
+        } catch (Exception e) {
+            throw new RuntimeException(e);
+        }
+    }
+}
diff --git a/north-glass-erp/src/main/java/com/example/erp/common/CacheUtil.java b/north-glass-erp/src/main/java/com/example/erp/common/CacheUtil.java
new file mode 100644
index 0000000..0ef07c5
--- /dev/null
+++ b/north-glass-erp/src/main/java/com/example/erp/common/CacheUtil.java
@@ -0,0 +1,23 @@
+package com.example.erp.common;
+
+import com.example.erp.controller.dto.UserDTO;
+import org.springframework.cache.annotation.CacheEvict;
+import org.springframework.cache.annotation.Cacheable;
+import org.springframework.stereotype.Component;
+
+@Component
+public class CacheUtil {
+    @Cacheable(value="users", key="#id")
+    public UserDTO getCacheData(String id){
+        return null;
+    }
+
+    @Cacheable(value="users", key="#userDTO.getUserId()")
+    public UserDTO setCacheData(UserDTO userDTO){
+
+        return userDTO;
+    }
+
+
+
+}
diff --git a/north-glass-erp/src/main/java/com/example/erp/common/Constants.java b/north-glass-erp/src/main/java/com/example/erp/common/Constants.java
new file mode 100644
index 0000000..967ee2f
--- /dev/null
+++ b/north-glass-erp/src/main/java/com/example/erp/common/Constants.java
@@ -0,0 +1,12 @@
+package com.example.erp.common;
+
+/**
+ * 瀹氫箟涓�浜涘父閲忚繘琛屼娇鐢�
+ */
+public interface Constants {
+    String Code_500="500";//绯荤粺閿欒
+    String Code_401="401";//鏉冮檺涓嶈冻
+    String Code_400="400";//
+    String Code_200="200";//鎴愬姛
+    String Code_600="600";//鍏朵粬闂
+}
diff --git a/north-glass-erp/src/main/java/com/example/erp/common/Result.java b/north-glass-erp/src/main/java/com/example/erp/common/Result.java
new file mode 100644
index 0000000..d7c89e5
--- /dev/null
+++ b/north-glass-erp/src/main/java/com/example/erp/common/Result.java
@@ -0,0 +1,29 @@
+package com.example.erp.common;
+//杩斿洖缁撴灉鍖呰绫�
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class Result {
+    private String code;
+    private String msg;
+    private Object data;
+
+    public static  Result seccess(){
+        return new Result(Constants.Code_200,"",null);
+    }
+    public static  Result seccess(Object data){
+        return new Result(Constants.Code_200,"",data);
+    }
+
+    public static  Result error(String code ,String msg){
+        return new Result(code,msg,null);
+    }
+    public static  Result error(){
+        return new Result(Constants.Code_500,"绯荤粺鍙戠敓閿欒",null);
+    }
+
+}
diff --git a/north-glass-erp/src/main/java/com/example/erp/common/interceptor/JwtInterceptor.java b/north-glass-erp/src/main/java/com/example/erp/common/interceptor/JwtInterceptor.java
new file mode 100644
index 0000000..28b42e7
--- /dev/null
+++ b/north-glass-erp/src/main/java/com/example/erp/common/interceptor/JwtInterceptor.java
@@ -0,0 +1,65 @@
+package com.example.erp.common.interceptor;
+
+import cn.hutool.core.util.StrUtil;
+import com.auth0.jwt.JWT;
+import com.auth0.jwt.JWTVerifier;
+import com.auth0.jwt.algorithms.Algorithm;
+import com.auth0.jwt.exceptions.JWTVerificationException;
+import com.example.erp.common.CacheUtil;
+import com.example.erp.common.Constants;
+import com.example.erp.controller.dto.UserDTO;
+import com.example.erp.exception.ServiceException;
+import com.example.erp.service.userInfo.UserService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+import org.springframework.web.method.HandlerMethod;
+import org.springframework.web.servlet.HandlerInterceptor;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+@Component
+public class JwtInterceptor implements HandlerInterceptor {
+
+    @Autowired
+    private UserService userService;
+    @Autowired
+    private CacheUtil cacheUtil;
+
+    @Override
+    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
+        //return HandlerInterceptor.super.preHandle(request, response, handler);
+        String token=request.getHeader("token");
+        if(!(handler instanceof HandlerMethod)){
+            return  true;
+        }
+
+        if(StrUtil.isBlank(token)){
+            throw new ServiceException(Constants.Code_401,"鏃爐oken,閲嶆柊鐧婚檰");
+        }
+        String userId;
+        try{
+            userId = JWT.decode(token).getAudience().get(0);
+        }catch (Exception e){
+            throw new ServiceException(Constants.Code_500,"token鏍煎紡閿欒");
+        }
+
+        UserDTO getUserDTO = cacheUtil.getCacheData(userId);
+
+        if(getUserDTO != null && !getUserDTO.getToken().equals(token)){
+            throw new ServiceException(Constants.Code_600,"鐢ㄦ埛鍦ㄥ叾浠栦綅缃櫥闄�");
+        }
+
+
+        String password=userService.getUserByID(userId).toLowerCase();
+        //鐢ㄦ埛瀵嗙爜鍔犵楠岃瘉
+        JWTVerifier jwtVerifier = JWT.require(Algorithm.HMAC256(password)).build();
+        try {
+            jwtVerifier.verify(token);
+        } catch (JWTVerificationException e) {
+            throw new ServiceException(Constants.Code_401,"token楠岃瘉澶辫触,璇烽噸鏂扮櫥闄�");
+        }
+        return true;
+    }
+
+}
diff --git a/north-glass-erp/src/main/java/com/example/erp/config/InterceptorConfig.java b/north-glass-erp/src/main/java/com/example/erp/config/InterceptorConfig.java
new file mode 100644
index 0000000..bf86a10
--- /dev/null
+++ b/north-glass-erp/src/main/java/com/example/erp/config/InterceptorConfig.java
@@ -0,0 +1,30 @@
+package com.example.erp.config;
+
+import com.example.erp.common.interceptor.JwtInterceptor;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
+import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
+
+import javax.annotation.Resource;
+
+@Configuration
+
+public class InterceptorConfig implements WebMvcConfigurer {
+    @Resource
+    private JwtInterceptor jwtInterceptor;
+    @Override
+    public void addInterceptors(InterceptorRegistry registry) {
+        registry.addInterceptor(jwtInterceptor)
+                .addPathPatterns("/**")
+                .excludePathPatterns("/user/login",
+                        "/user/register",
+                        "/swagger-resources/**"
+                        ,"/webjars/**"
+                        ,"/v2/**"
+                        ,"/swagger-ui.html/**"
+                        ,"/swagger-ui.html#/**");
+    }
+
+
+}
diff --git a/north-glass-erp/src/main/java/com/example/erp/config/MyCorsConfig.java b/north-glass-erp/src/main/java/com/example/erp/config/MyCorsConfig.java
new file mode 100644
index 0000000..f037741
--- /dev/null
+++ b/north-glass-erp/src/main/java/com/example/erp/config/MyCorsConfig.java
@@ -0,0 +1,20 @@
+package com.example.erp.config;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.web.servlet.config.annotation.CorsRegistry;
+import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
+@Configuration(proxyBeanMethods = false)
+public class MyCorsConfig {
+    @Bean
+    public WebMvcConfigurer corsConfigurer() {
+        return new WebMvcConfigurer() {
+            @Override
+            public void addCorsMappings(CorsRegistry registry) {
+                registry.addMapping("/**");
+            }
+        };
+    }
+
+
+}
\ No newline at end of file
diff --git a/north-glass-erp/src/main/java/com/example/erp/config/MybatisPlusConfig.java b/north-glass-erp/src/main/java/com/example/erp/config/MybatisPlusConfig.java
new file mode 100644
index 0000000..5c8e52d
--- /dev/null
+++ b/north-glass-erp/src/main/java/com/example/erp/config/MybatisPlusConfig.java
@@ -0,0 +1,16 @@
+package com.example.erp.config;
+
+import com.baomidou.mybatisplus.annotation.DbType;
+import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
+import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
+import org.springframework.context.annotation.Bean;
+
+public class MybatisPlusConfig {
+    @Bean
+    public MybatisPlusInterceptor mybatisPlusInterceptor() {
+        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
+        interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));//濡傛灉閰嶇疆澶氫釜鎻掍欢,鍒囪鍒嗛〉鏈�鍚庢坊鍔�
+        //interceptor.addInnerInterceptor(new PaginationInnerInterceptor()); 濡傛灉鏈夊鏁版嵁婧愬彲浠ヤ笉閰嶅叿浣撶被鍨� 鍚﹀垯閮藉缓璁厤涓婂叿浣撶殑DbType
+        return interceptor;
+    }
+}
diff --git a/north-glass-erp/src/main/java/com/example/erp/config/SwaggerConfig.java b/north-glass-erp/src/main/java/com/example/erp/config/SwaggerConfig.java
new file mode 100644
index 0000000..e4564e4
--- /dev/null
+++ b/north-glass-erp/src/main/java/com/example/erp/config/SwaggerConfig.java
@@ -0,0 +1,89 @@
+package com.example.erp.config;
+import com.google.common.collect.Lists;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import springfox.documentation.builders.ApiInfoBuilder;
+import springfox.documentation.builders.ParameterBuilder;
+import springfox.documentation.builders.PathSelectors;
+import springfox.documentation.builders.RequestHandlerSelectors;
+import springfox.documentation.schema.ModelRef;
+import springfox.documentation.service.*;
+import springfox.documentation.spi.DocumentationType;
+import springfox.documentation.spi.service.contexts.SecurityContext;
+import springfox.documentation.spring.web.plugins.Docket;
+import springfox.documentation.swagger2.annotations.EnableSwagger2;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+import static springfox.documentation.builders.PathSelectors.regex;
+
+@Configuration
+@EnableSwagger2     //寮�鍚疭wagger2
+public class SwaggerConfig {
+
+    //閰嶇疆浜哠wagger鐨凞ocket鐨刡ean瀹炰緥
+    @Bean
+    public Docket docket(){
+        return new Docket(DocumentationType.SWAGGER_2)
+                .apiInfo(apiInfo())
+                .select()
+                //鍔犱簡ApiOperation娉ㄨВ鐨勭被锛屾墠鐢熸垚鎺ュ彛鏂囨。
+                .apis(RequestHandlerSelectors.basePackage("com.example.erp.controller"))
+                //鍖呬笅鐨勭被锛屾墠鐢熸垚鎺ュ彛鏂囨。
+                .paths(PathSelectors.any())
+                .build()
+                .securitySchemes(securitySchemes())
+                .securityContexts(securityContexts());
+
+    }
+
+
+    /**
+     * 閰嶇疆璁よ瘉妯″紡
+     * @return
+     */
+    private List<ApiKey> securitySchemes() {
+        List<ApiKey> arrayList = new ArrayList<>();
+        arrayList.add( new ApiKey("token", "token", "header"));
+        return arrayList;
+    }
+
+    /**
+     * 閰嶇疆璁よ瘉涓婁笅鏂�
+     */
+    private List<SecurityContext> securityContexts() {
+        List<SecurityContext> securityContexts = new ArrayList<>();
+        securityContexts.add(SecurityContext.builder().securityReferences(defaultAuth())
+                //杩囨护瑕侀獙璇佺殑璺緞
+                .forPaths(PathSelectors.regex("^(?!auth).*$"))
+                .build());
+        return securityContexts;
+    }
+
+    private List<SecurityReference> defaultAuth() {
+        AuthorizationScope authorizationScope = new AuthorizationScope("global", "accessEverything");
+        AuthorizationScope[] authorizationScopes = new AuthorizationScope[1];
+        authorizationScopes[0] = authorizationScope;
+        List<SecurityReference> securityReferences = new ArrayList<>();
+        //楠岃瘉澧炲姞锛堟湁璁稿鏁欑▼璇存槑涓繖涓湴鏂规槸Authorization,瀵艰嚧涓嶈兘甯﹀叆鍏ㄥ眬token锛屽洜涓簊ecuritySchemes()鏂规硶涓環eader鍐欏叆token锛屾墍浠ヨ繖涓湴鏂规垜鏀逛负token灏卞彲浠ヤ簡锛�
+        securityReferences.add(new SecurityReference("token", authorizationScopes));
+        return securityReferences;
+    }
+    //閰嶇疆Swagger淇℃伅 = apiInfo
+    private ApiInfo apiInfo(){
+        //浣滆�呬俊鎭�
+        Contact contact = new Contact("閮瓂j", "", "");
+        return new ApiInfo(
+                "NorthGlass-ERP 鎺ュ彛鏂囨。",       //title
+                "閮瓂j",        //description
+                "1.0",                          //version
+                "urn:tos",
+                contact,
+                "Apache 2.0",
+                "http://www.apache.org/licenses/LICENSE-2.0",
+                new ArrayList());
+    }
+}
diff --git a/north-glass-erp/src/main/java/com/example/erp/config/WebSocketConfig.java b/north-glass-erp/src/main/java/com/example/erp/config/WebSocketConfig.java
new file mode 100644
index 0000000..1aae162
--- /dev/null
+++ b/north-glass-erp/src/main/java/com/example/erp/config/WebSocketConfig.java
@@ -0,0 +1,20 @@
+package com.example.erp.config;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+//import org.springframework.web.socket.server.standard.ServerEndpointExporter;
+
+/**
+ * @author HFL
+ * @date 2022/5/16 14:49
+ * 閰嶇疆绫�
+ */
+//@Configuration
+public class WebSocketConfig {
+
+    //@Bean
+//    public ServerEndpointExporter serverEndpointExporter(){
+//        return new ServerEndpointExporter();
+//    }
+
+}
diff --git a/north-glass-erp/src/main/java/com/example/erp/controller/OrderController.java b/north-glass-erp/src/main/java/com/example/erp/controller/OrderController.java
new file mode 100644
index 0000000..c5fb7a1
--- /dev/null
+++ b/north-glass-erp/src/main/java/com/example/erp/controller/OrderController.java
@@ -0,0 +1,40 @@
+package com.example.erp.controller;
+
+import com.example.erp.common.Result;
+import com.example.erp.mapper.OrderMapper;
+import com.example.erp.entity.Order;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+//@CrossOrigin  //瑙e喅鍗曚釜controller 璺ㄥ煙闂
+@RestController
+@RequestMapping("/order")
+
+public class OrderController {
+    @Autowired
+    private OrderMapper orderMapper;
+
+    @GetMapping //鏌ヨorder琛ㄧ粨鏋滈泦
+    public Result index(){
+        return Result.seccess(orderMapper.findAll());
+
+    }
+
+    @PostMapping  //鎻掑叆
+    public Integer save(@RequestBody Order order) {
+        return orderMapper.insert(order);
+    }
+
+    @PostMapping("/update")
+    public Integer updateOrder(@RequestBody Order order) {
+        return orderMapper.update(order.getId(),order.getOrderid());
+    }
+
+    @DeleteMapping("/{id}") //鍒犻櫎鏁版嵁
+    public Integer delete(@PathVariable Integer id) {
+        return orderMapper.deleteById(id);
+    }
+
+    
+}
diff --git a/north-glass-erp/src/main/java/com/example/erp/controller/dto/UserDTO.java b/north-glass-erp/src/main/java/com/example/erp/controller/dto/UserDTO.java
new file mode 100644
index 0000000..2fa9656
--- /dev/null
+++ b/north-glass-erp/src/main/java/com/example/erp/controller/dto/UserDTO.java
@@ -0,0 +1,10 @@
+package com.example.erp.controller.dto;
+
+import lombok.Data;
+@Data //鐢ㄤ簬鎺ュ彈鍓嶇鐧诲綍棰漸ser淇℃伅
+public class UserDTO {
+    private String userId;
+    private String pass;
+    private String token;
+    private String userName;
+}
diff --git a/north-glass-erp/src/main/java/com/example/erp/controller/sd/BasicGlassTypeController.java b/north-glass-erp/src/main/java/com/example/erp/controller/sd/BasicGlassTypeController.java
new file mode 100644
index 0000000..36b9848
--- /dev/null
+++ b/north-glass-erp/src/main/java/com/example/erp/controller/sd/BasicGlassTypeController.java
@@ -0,0 +1,29 @@
+package com.example.erp.controller.sd;
+
+import com.example.erp.common.Result;
+import com.example.erp.service.sd.BasicGlassTypeServise;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+@RestController
+@RequestMapping("/basicGlassType")
+public class BasicGlassTypeController {
+    @Autowired
+    BasicGlassTypeServise basicGlassTypeServise;
+
+    @GetMapping("/getOneLevel")
+    public Result getOneLevel(){
+        return Result.seccess(basicGlassTypeServise.getOneLevel());
+    }
+    @GetMapping("/getTwoLevel")
+    public Result getTwoLevel(){
+        return Result.seccess(basicGlassTypeServise.getTwoLevel());
+    }
+
+    @GetMapping("/getAll")
+    public Result getAll(){
+        return Result.seccess(basicGlassTypeServise.getAll());
+    }
+}
diff --git a/north-glass-erp/src/main/java/com/example/erp/controller/sd/ProductController.java b/north-glass-erp/src/main/java/com/example/erp/controller/sd/ProductController.java
new file mode 100644
index 0000000..f24f2bb
--- /dev/null
+++ b/north-glass-erp/src/main/java/com/example/erp/controller/sd/ProductController.java
@@ -0,0 +1,21 @@
+package com.example.erp.controller.sd;
+
+import com.example.erp.common.Result;
+import com.example.erp.service.sd.ProductService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+@RestController
+@RequestMapping("/product")
+public class ProductController {
+    @Autowired
+    ProductService productService;
+
+    @GetMapping
+    public Result defaultDateProduct(){
+        //璋冪敤productService鐨刣efaultDateProduct鏂规硶锛岃繑鍥炵粨鏋�
+        return Result.seccess(productService.defaultDateProduct());
+    }
+}
diff --git a/north-glass-erp/src/main/java/com/example/erp/controller/userInfo/SysMenuController.java b/north-glass-erp/src/main/java/com/example/erp/controller/userInfo/SysMenuController.java
new file mode 100644
index 0000000..c4f7e29
--- /dev/null
+++ b/north-glass-erp/src/main/java/com/example/erp/controller/userInfo/SysMenuController.java
@@ -0,0 +1,29 @@
+package com.example.erp.controller.userInfo;
+
+import com.example.erp.common.CacheUtil;
+import com.example.erp.common.Result;
+import com.example.erp.service.userInfo.SysMenuService;
+import com.example.erp.tools.netty.MyChannelHandlerPool;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+
+@RestController
+@RequestMapping("/menu")
+
+public class SysMenuController {
+    @Autowired
+    private CacheUtil cacheUtil;
+    @Autowired
+    private SysMenuService sysMenuService;
+    @GetMapping
+    public Result getMenu(){
+        MyChannelHandlerPool myChannelHandlerPool = new MyChannelHandlerPool();
+        //myChannelHandlerPool.sendMsg("123");
+        //MyChannelHandlerPool.channelGroup.writeAndFlush( new TextWebSocketFrame("123123"));
+        return Result.seccess(sysMenuService.getMenu());
+
+    }
+}
diff --git a/north-glass-erp/src/main/java/com/example/erp/controller/userInfo/SysMenuItemController.java b/north-glass-erp/src/main/java/com/example/erp/controller/userInfo/SysMenuItemController.java
new file mode 100644
index 0000000..a2bae8e
--- /dev/null
+++ b/north-glass-erp/src/main/java/com/example/erp/controller/userInfo/SysMenuItemController.java
@@ -0,0 +1,19 @@
+package com.example.erp.controller.userInfo;
+
+import com.example.erp.common.Result;
+import com.example.erp.service.userInfo.SysMenuItemService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+@RestController
+@RequestMapping("/menuItem")
+public class SysMenuItemController {
+    @Autowired
+    SysMenuItemService sysMenuItemService;
+    @GetMapping
+    public Result getMenuItem(){
+        return Result.seccess(sysMenuItemService.getMenuItem());
+    }
+}
diff --git a/north-glass-erp/src/main/java/com/example/erp/controller/userInfo/UserController.java b/north-glass-erp/src/main/java/com/example/erp/controller/userInfo/UserController.java
new file mode 100644
index 0000000..fafcdf5
--- /dev/null
+++ b/north-glass-erp/src/main/java/com/example/erp/controller/userInfo/UserController.java
@@ -0,0 +1,58 @@
+package com.example.erp.controller.userInfo;
+
+import com.example.erp.common.CacheUtil;
+import com.example.erp.common.Constants;
+import com.example.erp.common.Result;
+import com.example.erp.controller.dto.UserDTO;
+import com.example.erp.entity.userInfo.User;
+import com.example.erp.exception.ServiceException;
+import com.example.erp.mapper.userInfo.UserMapper;
+import com.example.erp.service.userInfo.UserService;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+@RestController //娉ㄨВuser鎺у埗鍣紝鎸傝浇鍒皊pringboot褰撲腑
+@RequestMapping("/user")  //娉ㄨВ鍓嶇寮傛璇锋眰濡傦細localhost锛�8080/user
+public class UserController {
+    @Autowired
+    private UserMapper userMapper;
+    @Autowired
+    private UserService userService;
+    @Autowired
+    private CacheUtil cacheUtil;
+
+
+
+
+    @GetMapping
+    public List<User> getUser(){
+        System.out.println(cacheUtil.getCacheData("admin"));
+        return userMapper.findAll();
+    }
+    @ApiOperation("鐧诲綍")
+    @PostMapping("/login")
+    public Result login(@RequestBody UserDTO userDTO){
+        //UserDTO getUserCacheDTO = cacheUtil.getCacheData(userDTO.getUserId());
+        userService.deleteCache(userDTO.getUserId());
+        UserDTO getUserDTO=userService.login(userDTO);
+        if(getUserDTO!=null){
+            return Result.seccess(userDTO);
+        }else{
+            throw new ServiceException(Constants.Code_600,"鐢ㄦ埛鍚嶆垨瀵嗙爜閿欒");
+        }
+    }
+    @ApiOperation("娉ㄥ唽")
+    @PostMapping("/register")
+    public Result register(@RequestBody User user){
+        User getUser= userService.register(user);
+        if(getUser == null){
+            throw new ServiceException(Constants.Code_500,"娉ㄥ唽澶辫触");
+        }else {
+            return Result.seccess(getUser);
+        }
+
+        //return
+    }
+}
diff --git a/north-glass-erp/src/main/java/com/example/erp/entity/Order.java b/north-glass-erp/src/main/java/com/example/erp/entity/Order.java
new file mode 100644
index 0000000..9855e45
--- /dev/null
+++ b/north-glass-erp/src/main/java/com/example/erp/entity/Order.java
@@ -0,0 +1,24 @@
+package com.example.erp.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import lombok.Data;
+
+@Data  //lombok 绠�鍐檍ava浠g爜 瀹炰綋绫荤殑get涓巗et
+public class Order {
+    @TableId(type = IdType.AUTO)
+    private  Integer id;
+    private  String orderid;
+    private  String recipeno;
+    private  String largeglassno;
+    private  String largeglasscompleted;
+    private  String smallglassno;
+    private  String smallglasscompleted;
+    private  String smallglassprocessing;
+    private  String smallglassworn;
+    private  String orderstatus;
+    private  String ordermaker;
+    private  String maketime;
+    private  String updatetime;
+
+}
diff --git a/north-glass-erp/src/main/java/com/example/erp/entity/sd/BasicGlassType.java b/north-glass-erp/src/main/java/com/example/erp/entity/sd/BasicGlassType.java
new file mode 100644
index 0000000..07e11a9
--- /dev/null
+++ b/north-glass-erp/src/main/java/com/example/erp/entity/sd/BasicGlassType.java
@@ -0,0 +1,17 @@
+package com.example.erp.entity.sd;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import lombok.Data;
+
+@Data
+public class BasicGlassType {
+    @TableId(type = IdType.AUTO)
+    private Integer id;
+    private Integer level;
+    private String belong;
+    private String typeID;
+    private String typeName;
+    private String createTime;
+
+}
diff --git a/north-glass-erp/src/main/java/com/example/erp/entity/sd/Product.java b/north-glass-erp/src/main/java/com/example/erp/entity/sd/Product.java
new file mode 100644
index 0000000..4555cb9
--- /dev/null
+++ b/north-glass-erp/src/main/java/com/example/erp/entity/sd/Product.java
@@ -0,0 +1,24 @@
+package com.example.erp.entity.sd;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import lombok.Data;
+
+@Data
+public class Product {
+    @TableId(type = IdType.AUTO)
+    private Integer id;
+    private String prodID;
+    private String product;
+    private String glassType;
+    private String typeName;
+    private Double totalThickness;
+    private Double thickness;
+    private String Query;
+    private String remarks;
+    private Integer state;
+    private String creator;
+    private String createTime;
+    private String updateTime;
+
+}
diff --git a/north-glass-erp/src/main/java/com/example/erp/entity/userInfo/SysMenu.java b/north-glass-erp/src/main/java/com/example/erp/entity/userInfo/SysMenu.java
new file mode 100644
index 0000000..764047b
--- /dev/null
+++ b/north-glass-erp/src/main/java/com/example/erp/entity/userInfo/SysMenu.java
@@ -0,0 +1,16 @@
+package com.example.erp.entity.userInfo;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import lombok.Data;
+
+@Data
+public class SysMenu {
+    @TableId(type = IdType.AUTO)
+    private String id;
+    private String menuName;
+    private String languageType;
+    private String state;
+    private String listSort;
+    private String createTime;
+}
diff --git a/north-glass-erp/src/main/java/com/example/erp/entity/userInfo/SysMenuItem.java b/north-glass-erp/src/main/java/com/example/erp/entity/userInfo/SysMenuItem.java
new file mode 100644
index 0000000..cfb6096
--- /dev/null
+++ b/north-glass-erp/src/main/java/com/example/erp/entity/userInfo/SysMenuItem.java
@@ -0,0 +1,19 @@
+package com.example.erp.entity.userInfo;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import lombok.Data;
+
+@Data
+public class SysMenuItem {
+    @TableId(type = IdType.AUTO)
+    private Integer id;
+    private Integer menuID;
+    private String itemName;
+    private String url;
+    private String languageType;
+    private Integer state;
+    private Integer listSort;
+    private String createTime;
+
+}
diff --git a/north-glass-erp/src/main/java/com/example/erp/entity/userInfo/User.java b/north-glass-erp/src/main/java/com/example/erp/entity/userInfo/User.java
new file mode 100644
index 0000000..4839e0d
--- /dev/null
+++ b/north-glass-erp/src/main/java/com/example/erp/entity/userInfo/User.java
@@ -0,0 +1,21 @@
+package com.example.erp.entity.userInfo;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import lombok.Data;
+
+@Data  //get涓巗et浠g爜绠�鍐�
+public class User {
+
+    @TableId(type = IdType.AUTO)
+    private  Integer id;
+    private  String loginName;
+    private  String passWord;
+    private  String userName;
+    private  String address;
+    private  String phone;
+    private  String createTime;
+    private  String updateTime;
+    private  Integer state;
+
+}
diff --git a/north-glass-erp/src/main/java/com/example/erp/exception/GlobalExceptionHandle.java b/north-glass-erp/src/main/java/com/example/erp/exception/GlobalExceptionHandle.java
new file mode 100644
index 0000000..e353e73
--- /dev/null
+++ b/north-glass-erp/src/main/java/com/example/erp/exception/GlobalExceptionHandle.java
@@ -0,0 +1,18 @@
+package com.example.erp.exception;
+
+import com.example.erp.common.Result;
+import org.springframework.web.bind.annotation.ControllerAdvice;
+import org.springframework.web.bind.annotation.ExceptionHandler;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+@ControllerAdvice
+public class GlobalExceptionHandle {
+    /**
+     * 濡傛灉鏄痵erviceExcaption锛屽垯璋冪敤璇ユ柟娉�
+     */
+    @ExceptionHandler(ServiceException.class)
+    @ResponseBody
+    public Result handle(ServiceException se){
+        return Result.error(se.getCode(),se.getMessage());
+    }
+}
diff --git a/north-glass-erp/src/main/java/com/example/erp/exception/ServiceException.java b/north-glass-erp/src/main/java/com/example/erp/exception/ServiceException.java
new file mode 100644
index 0000000..4e42631
--- /dev/null
+++ b/north-glass-erp/src/main/java/com/example/erp/exception/ServiceException.java
@@ -0,0 +1,12 @@
+package com.example.erp.exception;
+
+import lombok.Getter;
+
+@Getter
+public class ServiceException extends RuntimeException {
+    private  String code;
+    public ServiceException(String code, String msg){
+        super(msg);
+        this.code=code;
+    }
+}
diff --git a/north-glass-erp/src/main/java/com/example/erp/mapper/OrderMapper.java b/north-glass-erp/src/main/java/com/example/erp/mapper/OrderMapper.java
new file mode 100644
index 0000000..c3a39ac
--- /dev/null
+++ b/north-glass-erp/src/main/java/com/example/erp/mapper/OrderMapper.java
@@ -0,0 +1,23 @@
+package com.example.erp.mapper;
+
+import com.baomidou.dynamic.datasource.annotation.DS;
+import com.example.erp.entity.Order;
+import org.apache.ibatis.annotations.*;
+
+import java.util.List;
+@Mapper
+@DS("gmms")
+public interface OrderMapper {
+
+    @Select("select * from `order`")
+    List<Order> findAll();
+
+    @Insert("INSERT `order`(order_id)VALUES(#{order_id})")
+    Integer insert(Order order);
+
+    @Delete("delete from `order` where id=#{id}")
+    Integer deleteById(@Param("id") Integer id);
+
+    @Update("update `order` set order_id=#{order_id} where id=#{id}")
+    Integer update(@Param("id") Integer id,@Param("order_id") String order_id);
+}
diff --git a/north-glass-erp/src/main/java/com/example/erp/mapper/sd/BasicGlassTypeMapper.java b/north-glass-erp/src/main/java/com/example/erp/mapper/sd/BasicGlassTypeMapper.java
new file mode 100644
index 0000000..f34ce44
--- /dev/null
+++ b/north-glass-erp/src/main/java/com/example/erp/mapper/sd/BasicGlassTypeMapper.java
@@ -0,0 +1,13 @@
+package com.example.erp.mapper.sd;
+
+import com.example.erp.entity.sd.BasicGlassType;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.util.List;
+
+@Mapper
+public interface BasicGlassTypeMapper {
+    List<BasicGlassType> getOneLevel();
+
+    List<BasicGlassType> getTwoLevel();
+}
diff --git a/north-glass-erp/src/main/java/com/example/erp/mapper/sd/ProductMapper.java b/north-glass-erp/src/main/java/com/example/erp/mapper/sd/ProductMapper.java
new file mode 100644
index 0000000..6bc2b6a
--- /dev/null
+++ b/north-glass-erp/src/main/java/com/example/erp/mapper/sd/ProductMapper.java
@@ -0,0 +1,11 @@
+package com.example.erp.mapper.sd;
+
+import com.example.erp.entity.sd.Product;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.util.List;
+
+@Mapper
+public interface ProductMapper {
+    List<Product> defaultProduct();
+}
diff --git a/north-glass-erp/src/main/java/com/example/erp/mapper/userInfo/SysMenuItemMapper.java b/north-glass-erp/src/main/java/com/example/erp/mapper/userInfo/SysMenuItemMapper.java
new file mode 100644
index 0000000..bf5c74a
--- /dev/null
+++ b/north-glass-erp/src/main/java/com/example/erp/mapper/userInfo/SysMenuItemMapper.java
@@ -0,0 +1,12 @@
+package com.example.erp.mapper.userInfo;
+
+import com.example.erp.entity.userInfo.SysMenuItem;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.util.List;
+
+@Mapper
+public interface SysMenuItemMapper {
+
+     List<SysMenuItem> findAll() ;
+}
diff --git a/north-glass-erp/src/main/java/com/example/erp/mapper/userInfo/SysMenuMapper.java b/north-glass-erp/src/main/java/com/example/erp/mapper/userInfo/SysMenuMapper.java
new file mode 100644
index 0000000..4a965fa
--- /dev/null
+++ b/north-glass-erp/src/main/java/com/example/erp/mapper/userInfo/SysMenuMapper.java
@@ -0,0 +1,14 @@
+package com.example.erp.mapper.userInfo;
+
+import com.example.erp.entity.userInfo.SysMenu;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Select;
+
+import java.util.List;
+
+@Mapper
+
+public interface SysMenuMapper {
+    @Select("select  a.id, a.menuName from sys_menu as a where a.state=1 order by a.listSort")
+    List<SysMenu> findAll();
+}
diff --git a/north-glass-erp/src/main/java/com/example/erp/mapper/userInfo/UserMapper.java b/north-glass-erp/src/main/java/com/example/erp/mapper/userInfo/UserMapper.java
new file mode 100644
index 0000000..c048e1c
--- /dev/null
+++ b/north-glass-erp/src/main/java/com/example/erp/mapper/userInfo/UserMapper.java
@@ -0,0 +1,28 @@
+package com.example.erp.mapper.userInfo;
+
+
+import com.example.erp.controller.dto.UserDTO;
+import com.example.erp.entity.userInfo.User;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+
+import java.util.List;
+
+@Mapper
+
+public interface UserMapper {
+    List<User> findAll();
+
+    User findOne(Integer id);
+
+    User findOneLoginName(String LoginName);
+    @Select("select count(id) FROM `user` where login_name=#{userName} and password=#{password}  ")
+    int  checkUser(@Param("userName") String userName,@Param("password") String password);
+
+    @Select("select password FROM `user` where login_name=#{userId} ")
+    String getUserByID(String userId);
+
+
+    Boolean register(User user);
+}
diff --git a/north-glass-erp/src/main/java/com/example/erp/service/sd/BasicGlassTypeServise.java b/north-glass-erp/src/main/java/com/example/erp/service/sd/BasicGlassTypeServise.java
new file mode 100644
index 0000000..1e0d1d7
--- /dev/null
+++ b/north-glass-erp/src/main/java/com/example/erp/service/sd/BasicGlassTypeServise.java
@@ -0,0 +1,48 @@
+package com.example.erp.service.sd;
+
+import com.alibaba.fastjson.JSON;
+import com.baomidou.dynamic.datasource.annotation.DS;
+import com.example.erp.entity.sd.BasicGlassType;
+import com.example.erp.mapper.sd.BasicGlassTypeMapper;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.*;
+
+@Service
+@DS("erp_sd")
+public class BasicGlassTypeServise {
+    @Autowired
+    BasicGlassTypeMapper basicGlassTypeMapper;
+    public List<BasicGlassType> getOneLevel() {
+        return basicGlassTypeMapper.getOneLevel();
+    }
+
+    public List<BasicGlassType>  getTwoLevel() {
+        return basicGlassTypeMapper.getTwoLevel();
+    }
+
+    public List<Map<String,String>> getAll() {
+        List<BasicGlassType> oneGlassType = basicGlassTypeMapper.getOneLevel();
+        List<BasicGlassType> twoGlassType = basicGlassTypeMapper.getTwoLevel();
+        List<Map<String,String>> list = new ArrayList<>();
+        for (BasicGlassType glassType : oneGlassType) {
+            Map<String, String> map = new HashMap<>();
+            map.put("value", glassType.getTypeID());
+            map.put("label", glassType.getTypeName());
+            map.put("children", "");
+            List<String> equalList = new ArrayList<>();
+            for (BasicGlassType basicGlassType : twoGlassType) {
+                if (Objects.equals(basicGlassType.getBelong(), glassType.getTypeID())) {
+                    Map<String,String> getMap = JSON.parseObject(JSON.toJSONString(basicGlassType), Map.class);
+                    getMap.put("value",getMap.get("typeID"));
+                    getMap.put("label",getMap.get("typeName"));
+                    equalList.add(JSON.toJSONString(getMap)   );
+                }
+            }
+            map.replace("children",equalList.toString());
+            list.add(map);
+        }
+        return list;
+    }
+}
diff --git a/north-glass-erp/src/main/java/com/example/erp/service/sd/ProductService.java b/north-glass-erp/src/main/java/com/example/erp/service/sd/ProductService.java
new file mode 100644
index 0000000..aff3714
--- /dev/null
+++ b/north-glass-erp/src/main/java/com/example/erp/service/sd/ProductService.java
@@ -0,0 +1,19 @@
+package com.example.erp.service.sd;
+
+import com.baomidou.dynamic.datasource.annotation.DS;
+import com.example.erp.entity.sd.Product;
+import com.example.erp.mapper.sd.ProductMapper;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+@Service
+@DS("erp_sd")
+public class ProductService {
+    @Autowired
+    ProductMapper productMapper;
+    public List<Product> defaultDateProduct() {
+        return productMapper.defaultProduct();
+    }
+}
diff --git a/north-glass-erp/src/main/java/com/example/erp/service/userInfo/SysMenuItemService.java b/north-glass-erp/src/main/java/com/example/erp/service/userInfo/SysMenuItemService.java
new file mode 100644
index 0000000..bbaefc9
--- /dev/null
+++ b/north-glass-erp/src/main/java/com/example/erp/service/userInfo/SysMenuItemService.java
@@ -0,0 +1,19 @@
+package com.example.erp.service.userInfo;
+
+import com.baomidou.dynamic.datasource.annotation.DS;
+import com.example.erp.entity.userInfo.SysMenuItem;
+import com.example.erp.mapper.userInfo.SysMenuItemMapper;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+@Service
+@DS("user_info")
+public class SysMenuItemService {
+    @Autowired
+    SysMenuItemMapper sysMenuItemMapper;
+    public List<SysMenuItem> getMenuItem() {
+        return sysMenuItemMapper.findAll();
+    }
+}
diff --git a/north-glass-erp/src/main/java/com/example/erp/service/userInfo/SysMenuService.java b/north-glass-erp/src/main/java/com/example/erp/service/userInfo/SysMenuService.java
new file mode 100644
index 0000000..28e2499
--- /dev/null
+++ b/north-glass-erp/src/main/java/com/example/erp/service/userInfo/SysMenuService.java
@@ -0,0 +1,21 @@
+package com.example.erp.service.userInfo;
+
+import com.baomidou.dynamic.datasource.annotation.DS;
+import com.example.erp.entity.userInfo.SysMenu;
+import com.example.erp.mapper.userInfo.SysMenuMapper;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+@Service
+@DS("user_info")
+public class SysMenuService {
+    @Autowired
+    private SysMenuMapper sysMenuMapper;
+
+    public List<SysMenu> getMenu(){
+
+        return sysMenuMapper.findAll();
+    }
+}
diff --git a/north-glass-erp/src/main/java/com/example/erp/service/userInfo/UserService.java b/north-glass-erp/src/main/java/com/example/erp/service/userInfo/UserService.java
new file mode 100644
index 0000000..6bcfea4
--- /dev/null
+++ b/north-glass-erp/src/main/java/com/example/erp/service/userInfo/UserService.java
@@ -0,0 +1,68 @@
+package com.example.erp.service.userInfo;
+
+import cn.hutool.core.util.StrUtil;
+import com.baomidou.dynamic.datasource.annotation.DS;
+import com.example.erp.common.CacheUtil;
+import com.example.erp.common.Result;
+import com.example.erp.entity.userInfo.User;
+import com.example.erp.mapper.userInfo.UserMapper;
+import com.example.erp.controller.dto.UserDTO;
+import com.example.erp.tools.TokenTools;
+import org.apache.ibatis.jdbc.Null;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.cache.annotation.CacheEvict;
+import org.springframework.cache.annotation.Cacheable;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+@Service
+@DS("user_info")
+public class UserService {
+
+    @Autowired
+    private  UserMapper userMapper;
+
+
+    @Cacheable(value="users", key="#userDTO.getUserId()")
+    public UserDTO login(UserDTO userDTO) {
+
+        if(StrUtil.isBlank(userDTO.getUserId()) ||StrUtil.isBlank(userDTO.getPass())){
+            return null;
+        }else{
+            int getUserCount=userMapper.checkUser(userDTO.getUserId(),userDTO.getPass());
+            if(getUserCount==1){
+                String token = TokenTools.getToken(userDTO.getUserId(),userDTO.getPass());
+                userDTO.setToken(token);
+                User user = userMapper.findOneLoginName(userDTO.getUserId());
+                userDTO.setUserName(user.getUserName());
+                return userDTO;
+            }
+        return null;
+
+        }
+    }
+
+    @CacheEvict(value="users",key="#id",beforeInvocation=true)
+    public String deleteCache(String id ) {
+        //System.out.println("delete user by id: " + id);
+        return null;
+
+    }
+
+    public String getUserByID(String userId){
+        return userMapper.getUserByID(userId);
+    }
+
+
+    public User register(User user) {
+        User returnUser = new User();
+        if(userMapper.register(user)){
+            User getUser = userMapper.findOne(user.getId());
+            returnUser.setUserName(getUser.getUserName());
+            returnUser.setLoginName(getUser.getLoginName());
+        }
+        return returnUser;
+    }
+}
+
diff --git a/north-glass-erp/src/main/java/com/example/erp/tools/TokenTools.java b/north-glass-erp/src/main/java/com/example/erp/tools/TokenTools.java
new file mode 100644
index 0000000..b00a29d
--- /dev/null
+++ b/north-glass-erp/src/main/java/com/example/erp/tools/TokenTools.java
@@ -0,0 +1,21 @@
+package com.example.erp.tools;
+
+import cn.hutool.core.date.DateUtil;
+import com.auth0.jwt.JWT;
+import com.auth0.jwt.algorithms.Algorithm;
+
+import java.util.Date;
+
+public class TokenTools {
+
+    /**
+     * 鐢熸垚token
+     * @return
+     */
+    public  static String getToken(String userid,String sign){
+        return JWT.create().withAudience(userid) // 灏� user id 淇濆瓨鍒� token 閲岄潰,浣滀负杞借嵎
+                .withExpiresAt(DateUtil.offsetHour(new Date(), 24)) // 2灏忔椂鍚巘oken杩囨湡
+                .sign(Algorithm.HMAC256(sign)); // 浠� password 浣滀负 token 鐨勫瘑閽�
+
+    }
+}
diff --git a/north-glass-erp/src/main/java/com/example/erp/tools/WebSocketServer.java b/north-glass-erp/src/main/java/com/example/erp/tools/WebSocketServer.java
new file mode 100644
index 0000000..5a3e083
--- /dev/null
+++ b/north-glass-erp/src/main/java/com/example/erp/tools/WebSocketServer.java
@@ -0,0 +1,70 @@
+package com.example.erp.tools;
+
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.Resource;
+import javax.websocket.*;
+import javax.websocket.server.PathParam;
+import javax.websocket.server.ServerEndpoint;
+import java.io.IOException;
+
+/**
+ * @author HFL
+ * @date 2022/5/16 15:17
+ * Websocket搴旂敤瀹炵幇:
+ *  1.寤虹珛杩炴帴锛岃繛鎺ユ斁鍏ヨ繛鎺ユ睜
+ *  2.鍏抽棴杩炴帴锛岃繛鎺ョЩ鍑鸿繛鎺ユ睜
+ *  3.鎺ユ敹瀹㈡埛绔彂閫佺殑娑堟伅锛屽苟鍋氬嚭鐩稿簲澶勭悊
+ *  4.娉ㄥ叆涓氬姟灞傜殑service
+ *  [娉ㄦ剰锛歋pring绠$悊鐨凚ean鏄崟渚嬫ā寮忕殑锛岃�學ebSocket涓嶆槸鍗曚緥锛屾敞鍏ユ椂闇�瑕佸鐞嗕竴涓媇
+ *  5.寮傚父澶勭悊锛岃繛鎺ョЩ闄よ繛鎺ユ睜
+ */
+@Slf4j
+@Component
+@ServerEndpoint("/websocket/{id}")
+public class WebSocketServer {
+
+    /**
+     * 寤虹珛杩炴帴鎴愬姛璋冪敤 (Session + 鍦烘櫙)
+     */
+    @OnOpen
+    public void onOpen(Session session,@PathParam("id") String screen) throws IOException {
+        log.info("[onOpen][session({}) 鎺ュ叆, [screen: {}]", session, screen);
+        WebSocketServerPool.addDataConnect(session, screen);
+        //WebSocketServerPool.sendMessage(session, configurationScreenService.queryAllJsonById(screen));
+    }
+
+    /**
+     * 鍏抽棴杩炴帴鏃惰皟鐢�
+     * @param session 杩炴帴
+     */
+    @OnClose
+    public void onClose(Session session, CloseReason closeReason) {
+        log.info("[onClose][session({}) 杩炴帴鍏抽棴銆傚叧闂師鍥犳槸({})}]", session, closeReason);
+        WebSocketServerPool.removeConnect(session);
+    }
+
+    /**
+     * 閿欒鏃惰皟鐢�
+     * @param session 杩炴帴
+     * @param throwable 寮傚父
+     */
+    @OnError
+    public void onError(Session session, Throwable throwable) {
+        log.info("[onClose][session({}) 鍙戠敓寮傚父]", session, throwable);
+        WebSocketServerPool.removeConnect(session);
+    }
+
+    /**
+     * 鏀跺埌瀹㈡埛绔俊鎭悗锛屾牴鎹帴鏀跺埌鐨勪俊鎭繘琛屽鐞�
+     * @param session 杩炴帴
+     * @param message 鏁版嵁娑堟伅
+     */
+    @OnMessage
+    public void onMessage(Session session, String message) {
+        log.info("[onOpen][session({}) 鎺ユ敹鍒颁竴鏉℃秷鎭�({})]", session, message);
+        // TODO:  瀵逛簬瀹㈡埛绔彂閫佺殑鎸囦护淇℃伅锛岃В鏋愬悗杩涜瀵瑰簲鐨勯�昏緫澶勭悊
+    }
+
+}
diff --git a/north-glass-erp/src/main/java/com/example/erp/tools/WebSocketServerPool.java b/north-glass-erp/src/main/java/com/example/erp/tools/WebSocketServerPool.java
new file mode 100644
index 0000000..6a74bc6
--- /dev/null
+++ b/north-glass-erp/src/main/java/com/example/erp/tools/WebSocketServerPool.java
@@ -0,0 +1,76 @@
+package com.example.erp.tools;
+
+import javax.websocket.Session;
+import java.io.IOException;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.ConcurrentMap;
+
+/**
+ * @author HFL
+ * @date 2022/5/16 9:39
+ * Websocket杩炴帴姹犮�佸杩炴帴姹犲唴杩炴帴鎿嶄綔 鍜屾暟鎹帹閫佹柟娉�
+ */
+public class WebSocketServerPool {
+
+    /**
+     * WebSocket杩炴帴姹�
+     */
+    private static ConcurrentMap<Session, String> dataConnect = new ConcurrentHashMap<>();
+
+    /**
+     * 灏唚ebsocket杩炴帴锛屾斁鍏ヨ繛鎺ユ睜
+     * @param session websocket杩炴帴
+     * @param screen 鍦烘櫙ID
+     */
+    public static void addDataConnect(Session session, String screen){
+        dataConnect.put(session, screen);
+        Iterator<Map.Entry<Session, String>> iterator = dataConnect.entrySet().iterator();
+        synchronized (iterator){
+            //绉婚櫎澶辨晥杩炴帴
+            while(iterator.hasNext()){
+                Map.Entry<Session, String> entry = iterator.next();
+                Session sessionNew = entry.getKey();
+                Map<String, Object> userProperties = sessionNew.getUserProperties();
+                if(null != userProperties && null != userProperties.get("ReadyState") && "0" != String.valueOf(userProperties.get("ReadyState"))){
+                    iterator.remove();
+                }
+            }
+        }
+    }
+
+    /**
+     * 灏唚ebsocket杩炴帴浠庤繛鎺ユ睜涓Щ闄�
+     * @param session websocket杩炴帴
+     */
+    public static void removeConnect(Session session){
+        Iterator<Map.Entry<Session, String>> iterator = dataConnect.entrySet().iterator();
+        synchronized (iterator){
+            //涓诲姩绉婚櫎杩炴帴
+            while (iterator.hasNext()){
+                if(session.equals(iterator.next().getKey())){
+                    iterator.remove();
+                }
+            }
+        }
+    }
+
+    /**
+     * 鑾峰彇杩炴帴姹犱腑鎵�鏈夎繛鎺�
+     * @return 杩炴帴姹犳墍鏈夋暟鎹�
+     */
+    public static ConcurrentMap<Session, String> getDataConnect(){
+        return dataConnect;
+    }
+
+    /**
+     * Websocket娑堟伅鎺ㄩ��
+     * @param session 杩炴帴
+     * @param message 娑堟伅涓讳綋
+     * @throws IOException I/O寮傚父
+     */
+    public static void sendMessage(Session session, String message) throws IOException {
+        session.getBasicRemote().sendText(message);
+    }
+}
diff --git a/north-glass-erp/src/main/java/com/example/erp/tools/netty/MyChannelHandlerPool.java b/north-glass-erp/src/main/java/com/example/erp/tools/netty/MyChannelHandlerPool.java
new file mode 100644
index 0000000..4483d19
--- /dev/null
+++ b/north-glass-erp/src/main/java/com/example/erp/tools/netty/MyChannelHandlerPool.java
@@ -0,0 +1,26 @@
+package com.example.erp.tools.netty;
+
+import io.netty.channel.group.ChannelGroup;
+import io.netty.channel.group.DefaultChannelGroup;
+import io.netty.handler.codec.http.websocketx.TextWebSocketFrame;
+import io.netty.util.concurrent.GlobalEventExecutor;
+import org.springframework.context.annotation.Bean;
+
+/**
+ * MyChannelHandlerPool
+ * 閫氶亾缁勬睜锛岀鐞嗘墍鏈墂ebsocket杩炴帴
+ */
+
+
+public class MyChannelHandlerPool {
+
+    public MyChannelHandlerPool(){}
+
+    public static ChannelGroup channelGroup = new DefaultChannelGroup(GlobalEventExecutor.INSTANCE);
+
+    public void sendMsg(String message){
+        channelGroup.writeAndFlush(new TextWebSocketFrame(message));
+    }
+}
+
+
diff --git a/north-glass-erp/src/main/java/com/example/erp/tools/netty/MyWebSocketHandler.java b/north-glass-erp/src/main/java/com/example/erp/tools/netty/MyWebSocketHandler.java
new file mode 100644
index 0000000..31546df
--- /dev/null
+++ b/north-glass-erp/src/main/java/com/example/erp/tools/netty/MyWebSocketHandler.java
@@ -0,0 +1,83 @@
+package com.example.erp.tools.netty;
+
+import io.netty.channel.ChannelHandlerContext;
+import io.netty.channel.SimpleChannelInboundHandler;
+import io.netty.handler.codec.http.FullHttpRequest;
+import io.netty.handler.codec.http.websocketx.TextWebSocketFrame;
+
+import java.util.HashMap;
+import java.util.Map;
+
+public class MyWebSocketHandler extends SimpleChannelInboundHandler<TextWebSocketFrame> {
+
+    @Override
+    public void channelActive(ChannelHandlerContext ctx) throws Exception {
+        System.out.println("涓庡鎴风寤虹珛杩炴帴锛岄�氶亾寮�鍚紒");
+
+        //娣诲姞鍒癱hannelGroup閫氶亾缁�
+        MyChannelHandlerPool.channelGroup.add(ctx.channel());
+    }
+
+    @Override
+    public void channelInactive(ChannelHandlerContext ctx) throws Exception {
+        System.out.println("涓庡鎴风鏂紑杩炴帴锛岄�氶亾鍏抽棴锛�");
+        //娣诲姞鍒癱hannelGroup 閫氶亾缁�
+        MyChannelHandlerPool.channelGroup.remove(ctx.channel());
+    }
+
+    @Override
+    public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception {
+        //棣栨杩炴帴鏄疐ullHttpRequest锛屽鐞嗗弬鏁� by zhengkai.blog.csdn.net
+        if (null != msg && msg instanceof FullHttpRequest) {
+            FullHttpRequest request = (FullHttpRequest) msg;
+            String uri = request.uri();
+
+            Map paramMap=getUrlParams(uri);
+            System.out.println("鎺ユ敹鍒扮殑鍙傛暟鏄細"+paramMap);
+            //濡傛灉url鍖呭惈鍙傛暟锛岄渶瑕佸鐞�
+            if(uri.contains("?")){
+                String newUri=uri.substring(0,uri.indexOf("?"));
+                System.out.println(newUri);
+                request.setUri(newUri);
+            }
+
+        }else if(msg instanceof TextWebSocketFrame){
+            //姝e父鐨凾EXT娑堟伅绫诲瀷
+            TextWebSocketFrame frame=(TextWebSocketFrame)msg;
+            System.out.println("瀹㈡埛绔敹鍒版湇鍔″櫒鏁版嵁锛�" +frame.text());
+            sendAllMessage(frame.text());
+        }
+        super.channelRead(ctx, msg);
+    }
+
+    @Override
+    protected void channelRead0(ChannelHandlerContext channelHandlerContext, TextWebSocketFrame textWebSocketFrame) throws Exception {
+
+    }
+
+    public void sendAllMessage(String message){
+        //鏀跺埌淇℃伅鍚庯紝缇ゅ彂缁欐墍鏈塩hannel
+        MyChannelHandlerPool.channelGroup.writeAndFlush( new TextWebSocketFrame(message));
+    }
+
+    private static Map getUrlParams(String url){
+        Map<String,String> map = new HashMap<>();
+        url = url.replace("?",";");
+        if (!url.contains(";")){
+            return map;
+        }
+        if (url.split(";").length > 0){
+            String[] arr = url.split(";")[1].split("&");
+            for (String s : arr){
+                String key = s.split("=")[0];
+                String value = s.split("=")[1];
+                map.put(key,value);
+            }
+            return  map;
+
+        }else{
+            return map;
+        }
+    }
+}
+
diff --git a/north-glass-erp/src/main/java/com/example/erp/tools/netty/NettyServer.java b/north-glass-erp/src/main/java/com/example/erp/tools/netty/NettyServer.java
new file mode 100644
index 0000000..b2e66bd
--- /dev/null
+++ b/north-glass-erp/src/main/java/com/example/erp/tools/netty/NettyServer.java
@@ -0,0 +1,62 @@
+package com.example.erp.tools.netty;
+
+import io.netty.bootstrap.ServerBootstrap;
+import io.netty.channel.ChannelFuture;
+import io.netty.channel.ChannelInitializer;
+import io.netty.channel.ChannelOption;
+import io.netty.channel.EventLoopGroup;
+import io.netty.channel.nio.NioEventLoopGroup;
+import io.netty.channel.socket.SocketChannel;
+import io.netty.channel.socket.nio.NioServerSocketChannel;
+import io.netty.handler.codec.http.HttpObjectAggregator;
+import io.netty.handler.codec.http.HttpServerCodec;
+import io.netty.handler.codec.http.websocketx.WebSocketServerProtocolHandler;
+import io.netty.handler.stream.ChunkedWriteHandler;
+
+/**
+ * NettyServer Netty鏈嶅姟鍣ㄩ厤缃�
+ * @author zhengkai.blog.csdn.net
+ * @date 2019-06-12
+ */
+public class NettyServer {
+    private final int port;
+
+    public NettyServer(int port) {
+        this.port = port;
+    }
+
+    public void start() throws Exception {
+        EventLoopGroup bossGroup = new NioEventLoopGroup();
+
+        EventLoopGroup group = new NioEventLoopGroup();
+        try {
+            ServerBootstrap sb = new ServerBootstrap();
+            sb.option(ChannelOption.SO_BACKLOG, 1024);
+            sb.group(group, bossGroup) // 缁戝畾绾跨▼姹�
+                    .channel(NioServerSocketChannel.class) // 鎸囧畾浣跨敤鐨刢hannel
+                    .localAddress(this.port)// 缁戝畾鐩戝惉绔彛
+                    .childHandler(new ChannelInitializer<SocketChannel>() { // 缁戝畾瀹㈡埛绔繛鎺ユ椂鍊欒Е鍙戞搷浣�
+
+                        @Override
+                        protected void initChannel(SocketChannel ch) throws Exception {
+                           // System.out.println("鏀跺埌鏂拌繛鎺�");
+                            //websocket鍗忚鏈韩鏄熀浜巋ttp鍗忚鐨勶紝鎵�浠ヨ繖杈逛篃瑕佷娇鐢╤ttp瑙g紪鐮佸櫒
+                            ch.pipeline().addLast(new HttpServerCodec());
+                            //浠ュ潡鐨勬柟寮忔潵鍐欑殑澶勭悊鍣�
+                            ch.pipeline().addLast(new ChunkedWriteHandler());
+                            ch.pipeline().addLast(new HttpObjectAggregator(8192));
+                            ch.pipeline().addLast(new MyWebSocketHandler());
+                            ch.pipeline().addLast(new WebSocketServerProtocolHandler("/ws", null, true, 65536 * 10));
+                        }
+                    });
+            ChannelFuture cf = sb.bind().sync(); // 鏈嶅姟鍣ㄥ紓姝ュ垱寤虹粦瀹�
+            System.out.println(NettyServer.class + " 鍚姩姝e湪鐩戝惉锛� " + cf.channel().localAddress());
+            cf.channel().closeFuture().sync(); // 鍏抽棴鏈嶅姟鍣ㄩ�氶亾
+        } finally {
+            group.shutdownGracefully().sync(); // 閲婃斁绾跨▼姹犺祫婧�
+            bossGroup.shutdownGracefully().sync();
+        }
+    }
+}
+
+
diff --git a/north-glass-erp/src/main/resources/application.yml b/north-glass-erp/src/main/resources/application.yml
new file mode 100644
index 0000000..ea893b0
--- /dev/null
+++ b/north-glass-erp/src/main/resources/application.yml
@@ -0,0 +1,31 @@
+
+server:
+  port: 8080
+
+
+spring:
+  datasource:
+    dynamic:
+      primary: user_info #璁剧疆榛樿鐨勬暟鎹簮鎴栬�呮暟鎹簮缁�,榛樿鍊煎嵆涓簃aster
+      strict: false #璁剧疆涓ユ牸妯″紡,榛樿false涓嶅惎鍔�. 鍚姩鍚庡湪鏈尮閰嶅埌鎸囧畾鏁版嵁婧愭椂鍊欏洖鎶涘嚭寮傚父,涓嶅惎鍔ㄤ細浣跨敤榛樿鏁版嵁婧�.
+      datasource:
+        user_info:
+          url: jdbc:mysql://10.153.19.12:3306/erp_user_info?serverTimezone=GMT%2b8
+          username: root
+          password: beibo.123/
+          driver-class-name: com.mysql.cj.jdbc.Driver
+        erp_sd:
+          url: jdbc:mysql://10.153.19.12:3306/erp_sd?serverTimezone=GMT%2b8
+          username: root
+          password: beibo.123/
+          driver-class-name: com.mysql.cj.jdbc.Driver
+#        mm:
+#          url: jdbc:mysql://localhost:3306/mm?serverTimezone=GMT%2b8
+#          username: root
+#          password: beibo.123/
+#          driver-class-name: com.mysql.cj.jdbc.Driver
+#        pp:
+#          url: jdbc:mysql://localhost:3306/pp?serverTimezone=GMT%2b8
+#          username: root
+#          password: beibo.123/
+#          driver-class-name: com.mysql.cj.jdbc.Driver
\ No newline at end of file
diff --git a/north-glass-erp/src/main/resources/mapper/sd/BasicGlassType.xml b/north-glass-erp/src/main/resources/mapper/sd/BasicGlassType.xml
new file mode 100644
index 0000000..ea19fab
--- /dev/null
+++ b/north-glass-erp/src/main/resources/mapper/sd/BasicGlassType.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.example.erp.mapper.sd.BasicGlassTypeMapper">
+    <select id="getOneLevel">
+        select
+            *
+        from
+            basic_glass_type as a
+        where a.level=1
+    </select>
+    <select id="getTwoLevel">
+        select
+            *
+        from
+            basic_glass_type as a
+        where a.level=2
+        ORDER BY  a.id ;
+    </select>
+
+</mapper>
\ No newline at end of file
diff --git a/north-glass-erp/src/main/resources/mapper/sd/Product.xml b/north-glass-erp/src/main/resources/mapper/sd/Product.xml
new file mode 100644
index 0000000..acda317
--- /dev/null
+++ b/north-glass-erp/src/main/resources/mapper/sd/Product.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.example.erp.mapper.sd.ProductMapper">
+    <select id="defaultProduct">
+        select
+            a.id,
+            prodID,
+            product,
+            glassType,
+            typeName,
+            totalThickness,
+            thickness,
+            Query,
+            remarks,
+            state,
+            creator,
+            date(a.createTime) as 'createTime',
+            updateTime
+        from
+            product as a
+        left join basic_glass_type bgt on bgt.typeID = a.glassType
+
+        order by id desc
+        ;
+    </select>
+</mapper>
\ No newline at end of file
diff --git a/north-glass-erp/src/main/resources/mapper/userInfo/SysMenu.xml b/north-glass-erp/src/main/resources/mapper/userInfo/SysMenu.xml
new file mode 100644
index 0000000..896626b
--- /dev/null
+++ b/north-glass-erp/src/main/resources/mapper/userInfo/SysMenu.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.example.erp.mapper.userInfo.SysMenuMapper">
+    <select id="findAll">
+        select  a.id,
+                a.menuName
+        from sys_menu as a
+        where
+            a.state=1
+        order by a.listSort
+        ;
+    </select>
+</mapper>
\ No newline at end of file
diff --git a/north-glass-erp/src/main/resources/mapper/userInfo/SysMenuItem.xml b/north-glass-erp/src/main/resources/mapper/userInfo/SysMenuItem.xml
new file mode 100644
index 0000000..c27acd2
--- /dev/null
+++ b/north-glass-erp/src/main/resources/mapper/userInfo/SysMenuItem.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.example.erp.mapper.userInfo.SysMenuItemMapper">
+    <select id="findAll">
+        select
+            *
+        from `sys_menu_item` as a
+        where
+            a.state=1
+        order by
+            a.menuId,a.listSort
+        ;
+    </select>
+</mapper>
\ No newline at end of file
diff --git a/north-glass-erp/src/main/resources/mapper/userInfo/User.xml b/north-glass-erp/src/main/resources/mapper/userInfo/User.xml
new file mode 100644
index 0000000..2b37493
--- /dev/null
+++ b/north-glass-erp/src/main/resources/mapper/userInfo/User.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.example.erp.mapper.userInfo.UserMapper">
+    <select id="findAll">
+        SELECT *
+        FROM erp_user_info.user
+    </select>
+
+    <select id="findOne" >
+        SELECT *
+        FROM erp_user_info.user
+        where id=#{id}
+    </select>
+
+    <select id="findOneLoginName" >
+        SELECT *
+        FROM erp_user_info.user
+        where login_name=#{LoginName}
+    </select>
+
+    <insert id="register"  useGeneratedKeys="true" keyProperty="id">
+        insert erp_user_info.user
+            (password,user_name)
+        values (
+                 #{passWord} ,#{userName}
+               )
+    </insert>
+</mapper>
\ No newline at end of file
diff --git a/north-glass-erp/src/test/java/com/example/erp/ErpApplicationTests.java b/north-glass-erp/src/test/java/com/example/erp/ErpApplicationTests.java
new file mode 100644
index 0000000..2005bf1
--- /dev/null
+++ b/north-glass-erp/src/test/java/com/example/erp/ErpApplicationTests.java
@@ -0,0 +1,13 @@
+package com.example.erp;
+
+import org.junit.jupiter.api.Test;
+import org.springframework.boot.test.context.SpringBootTest;
+
+@SpringBootTest
+class ErpApplicationTests {
+
+    @Test
+    void contextLoads() {
+    }
+
+}
diff --git a/north-glass-erp/target/classes/application.yml b/north-glass-erp/target/classes/application.yml
new file mode 100644
index 0000000..ea893b0
--- /dev/null
+++ b/north-glass-erp/target/classes/application.yml
@@ -0,0 +1,31 @@
+
+server:
+  port: 8080
+
+
+spring:
+  datasource:
+    dynamic:
+      primary: user_info #璁剧疆榛樿鐨勬暟鎹簮鎴栬�呮暟鎹簮缁�,榛樿鍊煎嵆涓簃aster
+      strict: false #璁剧疆涓ユ牸妯″紡,榛樿false涓嶅惎鍔�. 鍚姩鍚庡湪鏈尮閰嶅埌鎸囧畾鏁版嵁婧愭椂鍊欏洖鎶涘嚭寮傚父,涓嶅惎鍔ㄤ細浣跨敤榛樿鏁版嵁婧�.
+      datasource:
+        user_info:
+          url: jdbc:mysql://10.153.19.12:3306/erp_user_info?serverTimezone=GMT%2b8
+          username: root
+          password: beibo.123/
+          driver-class-name: com.mysql.cj.jdbc.Driver
+        erp_sd:
+          url: jdbc:mysql://10.153.19.12:3306/erp_sd?serverTimezone=GMT%2b8
+          username: root
+          password: beibo.123/
+          driver-class-name: com.mysql.cj.jdbc.Driver
+#        mm:
+#          url: jdbc:mysql://localhost:3306/mm?serverTimezone=GMT%2b8
+#          username: root
+#          password: beibo.123/
+#          driver-class-name: com.mysql.cj.jdbc.Driver
+#        pp:
+#          url: jdbc:mysql://localhost:3306/pp?serverTimezone=GMT%2b8
+#          username: root
+#          password: beibo.123/
+#          driver-class-name: com.mysql.cj.jdbc.Driver
\ No newline at end of file
diff --git a/north-glass-erp/target/classes/mapper/sd/BasicGlassType.xml b/north-glass-erp/target/classes/mapper/sd/BasicGlassType.xml
new file mode 100644
index 0000000..ea19fab
--- /dev/null
+++ b/north-glass-erp/target/classes/mapper/sd/BasicGlassType.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.example.erp.mapper.sd.BasicGlassTypeMapper">
+    <select id="getOneLevel">
+        select
+            *
+        from
+            basic_glass_type as a
+        where a.level=1
+    </select>
+    <select id="getTwoLevel">
+        select
+            *
+        from
+            basic_glass_type as a
+        where a.level=2
+        ORDER BY  a.id ;
+    </select>
+
+</mapper>
\ No newline at end of file
diff --git a/north-glass-erp/target/classes/mapper/sd/Product.xml b/north-glass-erp/target/classes/mapper/sd/Product.xml
new file mode 100644
index 0000000..acda317
--- /dev/null
+++ b/north-glass-erp/target/classes/mapper/sd/Product.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.example.erp.mapper.sd.ProductMapper">
+    <select id="defaultProduct">
+        select
+            a.id,
+            prodID,
+            product,
+            glassType,
+            typeName,
+            totalThickness,
+            thickness,
+            Query,
+            remarks,
+            state,
+            creator,
+            date(a.createTime) as 'createTime',
+            updateTime
+        from
+            product as a
+        left join basic_glass_type bgt on bgt.typeID = a.glassType
+
+        order by id desc
+        ;
+    </select>
+</mapper>
\ No newline at end of file
diff --git a/north-glass-erp/target/classes/mapper/userInfo/SysMenu.xml b/north-glass-erp/target/classes/mapper/userInfo/SysMenu.xml
new file mode 100644
index 0000000..896626b
--- /dev/null
+++ b/north-glass-erp/target/classes/mapper/userInfo/SysMenu.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.example.erp.mapper.userInfo.SysMenuMapper">
+    <select id="findAll">
+        select  a.id,
+                a.menuName
+        from sys_menu as a
+        where
+            a.state=1
+        order by a.listSort
+        ;
+    </select>
+</mapper>
\ No newline at end of file
diff --git a/north-glass-erp/target/classes/mapper/userInfo/SysMenuItem.xml b/north-glass-erp/target/classes/mapper/userInfo/SysMenuItem.xml
new file mode 100644
index 0000000..c27acd2
--- /dev/null
+++ b/north-glass-erp/target/classes/mapper/userInfo/SysMenuItem.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.example.erp.mapper.userInfo.SysMenuItemMapper">
+    <select id="findAll">
+        select
+            *
+        from `sys_menu_item` as a
+        where
+            a.state=1
+        order by
+            a.menuId,a.listSort
+        ;
+    </select>
+</mapper>
\ No newline at end of file
diff --git a/north-glass-erp/target/classes/mapper/userInfo/User.xml b/north-glass-erp/target/classes/mapper/userInfo/User.xml
new file mode 100644
index 0000000..2b37493
--- /dev/null
+++ b/north-glass-erp/target/classes/mapper/userInfo/User.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.example.erp.mapper.userInfo.UserMapper">
+    <select id="findAll">
+        SELECT *
+        FROM erp_user_info.user
+    </select>
+
+    <select id="findOne" >
+        SELECT *
+        FROM erp_user_info.user
+        where id=#{id}
+    </select>
+
+    <select id="findOneLoginName" >
+        SELECT *
+        FROM erp_user_info.user
+        where login_name=#{LoginName}
+    </select>
+
+    <insert id="register"  useGeneratedKeys="true" keyProperty="id">
+        insert erp_user_info.user
+            (password,user_name)
+        values (
+                 #{passWord} ,#{userName}
+               )
+    </insert>
+</mapper>
\ No newline at end of file
diff --git a/north-glass-erp/target/erp-0.0.1-SNAPSHOT.jar.original b/north-glass-erp/target/erp-0.0.1-SNAPSHOT.jar.original
new file mode 100644
index 0000000..d865a78
--- /dev/null
+++ b/north-glass-erp/target/erp-0.0.1-SNAPSHOT.jar.original
Binary files differ
diff --git a/north-glass-erp/target/maven-archiver/pom.properties b/north-glass-erp/target/maven-archiver/pom.properties
new file mode 100644
index 0000000..edd1503
--- /dev/null
+++ b/north-glass-erp/target/maven-archiver/pom.properties
@@ -0,0 +1,3 @@
+artifactId=erp
+groupId=com.example
+version=0.0.1-SNAPSHOT
diff --git a/north-glass-erp/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst b/north-glass-erp/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst
new file mode 100644
index 0000000..c2121ce
--- /dev/null
+++ b/north-glass-erp/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst
@@ -0,0 +1,4 @@
+com\example\erp\controller\OrderController.class
+com\example\erp\entity\Order.class
+com\example\erp\ErpApplication.class
+com\example\erp\Mapper\OrderMapper.class
diff --git a/north-glass-erp/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst b/north-glass-erp/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
new file mode 100644
index 0000000..5150be3
--- /dev/null
+++ b/north-glass-erp/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
@@ -0,0 +1,4 @@
+D:\Documents\north-glass-erp\src\main\java\com\example\erp\controller\OrderController.java
+D:\Documents\north-glass-erp\src\main\java\com\example\erp\Mapper\OrderMapper.java
+D:\Documents\north-glass-erp\src\main\java\com\example\erp\entity\Order.java
+D:\Documents\north-glass-erp\src\main\java\com\example\erp\ErpApplication.java
diff --git a/north-glass-erp/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst b/north-glass-erp/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst
new file mode 100644
index 0000000..02bf5e0
--- /dev/null
+++ b/north-glass-erp/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst
@@ -0,0 +1 @@
+com\example\erp\ErpApplicationTests.class
diff --git a/north-glass-erp/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst b/north-glass-erp/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst
new file mode 100644
index 0000000..daf27b4
--- /dev/null
+++ b/north-glass-erp/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst
@@ -0,0 +1 @@
+D:\Documents\north-glass-erp\src\test\java\com\example\erp\ErpApplicationTests.java

--
Gitblit v1.8.0