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">{
+ "associatedIndex": 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">{
+ "keyToString": {
+ "RequestMappingsPanelOrder0": "0",
+ "RequestMappingsPanelOrder1": "1",
+ "RequestMappingsPanelWidth0": "75",
+ "RequestMappingsPanelWidth1": "75",
+ "RunOnceActivity.OpenProjectViewOnStart": "true",
+ "RunOnceActivity.ShowReadmeOnStart": "true",
+ "SHARE_PROJECT_CONFIGURATION_FILES": "true",
+ "WebServerToolWindowFactoryState": "false",
+ "git-widget-placeholder": "master",
+ "last_opened_file_path": "D:/EPR-Refactoring/north-glass-erp",
+ "node.js.detected.package.eslint": "true",
+ "node.js.detected.package.tslint": "true",
+ "node.js.selected.package.eslint": "(autodetect)",
+ "node.js.selected.package.tslint": "(autodetect)",
+ "nodejs_package_manager_path": "npm",
+ "project.structure.last.edited": "妯″潡",
+ "project.structure.proportion": "0.0",
+ "project.structure.side.proportion": "0.0",
+ "settings.editor.selected.configurable": "preferences.pluginManager",
+ "spring.configuration.checksum": "def6d90e829e50c63f98c387daecd138",
+ "ts.external.directory.path": "D:\\杞欢\\IntelliJ IDEA 2023.2\\plugins\\javascript-impl\\jsLanguageServicesImpl\\external",
+ "vue.rearranger.settings.migration": "true"
+ },
+ "keyToStringList": {
+ "vue.recent.templates": [
+ "Vue Composition API Component"
+ ]
+ }
+}</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' # Conflicts: #	.idea/workspace.xml #	northglass-erp/src/App.vue #	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>-->
+
+<!-- <!– <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-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>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>
+
+ <label>鍩烘暟:</label>
+ <el-input placeholder="鍩烘暟" style="width: 100px" v-model="form.name">1</el-input>
+
+ <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"
+ />
+
+ <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>
+
+ <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"
+ />
+
+ <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"
+ />
+
+ <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>
+
+ <label>鍩烘暟:</label>
+ <el-input placeholder="鍩烘暟" style="width: 100px" v-model="form.name">1</el-input>
+
+ <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"/>-->
+<!-- -->
+
+<!-- <el-input placeholder="椤圭洰鍚嶇О" v-model="form.lckh" style="width: 200px"/>-->
+<!-- -->
+<!-- <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>
+
+ <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>
+
+ <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"/>-->
+<!-- -->
+
+<!-- <el-input placeholder="椤圭洰鍚嶇О" v-model="form.lckh" style="width: 200px"/>-->
+<!-- -->
+ <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>-->
+<!-- -->
+<!-- <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>-->
+<!-- -->
+<!-- <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>
+
+ <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">
+ <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">鍒囧壊->纾ㄨ竟->鎵撳瓟->閽㈠寲->鍖呰</td>
+ </tr>
+ <tr style="height:25px;">
+ <td>纾� 杈癸細</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> 閲嶉噺锛�<label class="zzl"
+ for="">91.50kg</label> 闈㈢Н锛�<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">
+ <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">鍒囧壊->纾ㄨ竟->閽㈠寲->鍖呰</td>
+ </tr>
+ <tr style="height:25px;">
+ <td>纾� 杈癸細</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> 閲嶉噺锛�<label class="zzl"
+ for="">125.00kg</label> 闈㈢Н锛�<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"/>
+
+ <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"/>-->
+
+
+<!-- -->
+<!-- <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"/>-->
+<!-- -->
+<!-- <el-input placeholder="椤圭洰鍚嶇О" v-model="form.region" style="width: 200px"/>-->
+<!-- -->
+ <el-date-picker
+ v-model="form.date1"
+ type="daterange"
+ start-placeholder="寮�濮嬫椂闂�"
+ end-placeholder="缁撴潫鏃堕棿"
+ :default-time="defaultTime"
+ />
+
+ <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"/>-->
+<!-- -->
+<!-- <el-input placeholder="椤圭洰鍚嶇О" v-model="form.name" style="width: 200px"/>-->
+
+<!-- -->
+ <el-date-picker
+ v-model="value"
+ type="daterange"
+ start-placeholder="寮�濮嬫椂闂�"
+ end-placeholder="缁撴潫鏃堕棿"
+ :default-time="defaultTime"
+ />
+
+ <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"/>-->
+<!-- -->
+ <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>
+ <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"/>-->
+<!-- -->
+ <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>
+ <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"/>-->
+<!-- -->
+ <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>
+ <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"
+ />
+
+ <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>
+
+ <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"/>
+
+ <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"/>-->
+
+ <el-date-picker
+ v-model="form.date1"
+ type="daterange"
+ start-placeholder="寮�濮嬫椂闂�"
+ end-placeholder="缁撴潫鏃堕棿"
+ :default-time="defaultTime"
+ />
+
+ <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"/>-->
+
+ <el-date-picker
+ v-model="form.date1"
+ type="daterange"
+ start-placeholder="寮�濮嬫椂闂�"
+ end-placeholder="缁撴潫鏃堕棿"
+ :default-time="defaultTime"
+ />
+
+ <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"/>
+
+ <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"/>-->
+
+ <el-date-picker
+ v-model="form.date1"
+ type="daterange"
+ start-placeholder="寮�濮嬫椂闂�"
+ end-placeholder="缁撴潫鏃堕棿"
+ :default-time="defaultTime"
+ style="width: 120px"
+ />
+
+ <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"/>-->
+
+ <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"
+ 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"/>-->
+
+ <el-date-picker
+ v-model="form.date1"
+ type="daterange"
+ start-placeholder="寮�濮嬫椂闂�"
+ end-placeholder="缁撴潫鏃堕棿"
+ :default-time="defaultTime"
+ style="width: 100px"
+ />
+
+ <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"/>-->
+
+ <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>
+ <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"/>
+
+
+ <select class="processesSt">
+ <option>鎶ュ伐宸ュ簭</option>
+ <option value="鍒囧壊">鍒囧壊</option>
+ <option value="纾ㄨ竟">纾ㄨ竟</option>
+ <option value="閽㈠寲">閽㈠寲</option>
+ </select>
+
+ <el-button type="primary">瀹℃牳閫氳繃</el-button>
+ <el-button type="primary">瀹℃牳涓嶉�氳繃</el-button>
+
+ <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"/>-->
+<!-- -->
+ <select class="processesSt">
+ <option value="鏈鏍�">鏈鏍�</option>
+ <option value="宸插鏍�">宸插鏍�</option>
+ </select>
+
+ <el-date-picker
+ v-model="value"
+ type="daterange"
+ start-placeholder="寮�濮嬫椂闂�"
+ end-placeholder="缁撴潫鏃堕棿"
+ :default-time="defaultTime"
+
+ />
+
+ <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"/>-->
+
+
+<!-- -->
+<!-- <el-input placeholder="椤圭洰鍚嶇О" v-model="form.name" style="width: 200px"/>-->
+
+<!-- -->
+ <el-date-picker
+ v-model="value"
+ type="daterange"
+ start-placeholder="鎶ュ伐寮�濮嬫椂闂�"
+ end-placeholder="缁撴潫鏃堕棿"
+ :default-time="defaultTime"
+ />
+
+ <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"/>-->
+<!-- -->
+
+<!-- <el-input placeholder="椤圭洰鍚嶇О" v-model="form.lckh" style="width: 200px"/>-->
+<!-- -->
+ <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"/>
+
+ <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"/>
+
+ <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"/>
+
+ <el-date-picker
+ v-model="form.date1"
+ type="daterange"
+ start-placeholder="寮�濮嬫椂闂�"
+ end-placeholder="缁撴潫鏃堕棿"
+ :default-time="defaultTime"
+ />
+
+ <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