clll
2023-12-15 68e28b5e14ba2de103921aa1ab10f6df7b445ae9
erp重构 各个模块整合
225个文件已添加
23011 ■■■■■ 已修改文件
north-glass-erp/.idea/compiler.xml 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/.idea/dataSources.local.xml 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/.idea/dataSources.xml 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/.idea/dataSources/165c5447-d19a-4aaf-af5f-cee92ae696c2.xml 1882 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/.idea/dataSources/165c5447-d19a-4aaf-af5f-cee92ae696c2/storage_v2/_src_/schema/erp_sd.rUrUsg.meta 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/.idea/dataSources/165c5447-d19a-4aaf-af5f-cee92ae696c2/storage_v2/_src_/schema/erp_user_info.xjxUZg.meta 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/.idea/dataSources/165c5447-d19a-4aaf-af5f-cee92ae696c2/storage_v2/_src_/schema/erp_user_info.xjxUZg.zip 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/.idea/dataSources/165c5447-d19a-4aaf-af5f-cee92ae696c2/storage_v2/_src_/schema/information_schema.FNRwLQ.meta 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/.idea/dataSources/165c5447-d19a-4aaf-af5f-cee92ae696c2/storage_v2/_src_/schema/mysql.osA4Bg.meta 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/.idea/dataSources/165c5447-d19a-4aaf-af5f-cee92ae696c2/storage_v2/_src_/schema/performance_schema.kIw0nw.meta 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/.idea/dataSources/165c5447-d19a-4aaf-af5f-cee92ae696c2/storage_v2/_src_/schema/sd_kd.B3aDBg.meta 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/.idea/dataSources/165c5447-d19a-4aaf-af5f-cee92ae696c2/storage_v2/_src_/schema/sys.zb4BAA.meta 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/.idea/dataSources/165c5447-d19a-4aaf-af5f-cee92ae696c2/storage_v2/_src_/schema/testpp.Ena3yw.meta 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/.idea/dataSources/165c5447-d19a-4aaf-af5f-cee92ae696c2/storage_v2/_src_/schema/ztest.DHjtBg.meta 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/.idea/encodings.xml 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/.idea/google-java-format.xml 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/.idea/jarRepositories.xml 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/.idea/misc.xml 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/.idea/north-glass-erp.iml 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/.idea/sqldialects.xml 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/.idea/uiDesigner.xml 124 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/.idea/vcs.xml 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/.idea/workspace.xml 377 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/.mvn/wrapper/maven-wrapper.properties 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/README.md 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/.gitignore 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/.vscode/extensions.json 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/README.md 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/config.js 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/index.html 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/package-lock.json 2310 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/package.json 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/public/favicon.ico 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/public/vuefavicon.ico 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/App.vue 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/assets/base.css 86 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/assets/img.png 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/assets/logo.svg 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/assets/main.css 53 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/assets/northGlass.ico 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/components/basic/product/GlassType.vue 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/hook/index.js 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/layout/MainErpView.vue 149 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/main.js 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/router/index.js 750 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/stores/counter.js 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/stores/productGlassType.js 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/stores/userInfo.js 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/utils/deepClone.js 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/utils/request.js 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/utils/webSocket.js 137 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/HomeView.vue 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/LoginView.vue 193 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/RegisterView.vue 183 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/mm/mainIngredient/CreateIngredients.vue 201 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/mm/mainIngredient/Ingredients.vue 59 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/mm/mainIngredient/SelectIngredients.vue 174 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/mm/mainIngredientStock/AccessoriesMonthlySettlement.vue 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/mm/mainIngredientStock/CreateIngredientsStock.vue 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/mm/mainIngredientStock/IngredientsStock.vue 60 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/mm/mainIngredientStock/OriginalMonthlySettlement.vue 81 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/mm/mainIngredientStock/SelectIngredientsStock.vue 277 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/mm/mainProductStock/CreateProductStock.vue 156 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/mm/mainProductStock/FinishedGoodsIssue.vue 119 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/mm/mainProductStock/FinishedProductOut.vue 200 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/mm/mainProductStock/FinishedProductReturn.vue 87 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/mm/mainProductStock/FinishedProductRework.vue 146 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/mm/mainProductStock/OrderAllocation.vue 130 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/mm/mainProductStock/OrderAllocationUpdate.vue 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/mm/mainProductStock/ProductStock.vue 62 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/mm/mainProductStock/ProductStockList.vue 287 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/mm/mainTrader/CreateTrader.vue 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/mm/mainTrader/SelectTrader.vue 184 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/mm/mainTrader/Trader.vue 59 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/mm/purchaseOrder/Create.vue 290 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/mm/purchaseOrder/PurchaseOrder.vue 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/mm/purchaseOrder/Select.vue 258 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/mm/purchaseReturn/PurchaseReturn.vue 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/mm/purchaseReturn/Select.vue 255 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/mm/purchaseStorage/PurchaseStorage.vue 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/mm/purchaseStorage/Select.vue 276 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/mm/stockReport/StockMonthReport.vue 161 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/mm/stockReport/StockReport.vue 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/mm/stockReport/SubsidiaryMonthReport.vue 164 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/mm/stockReport/WarehouseReport.vue 216 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/BOM/BOM.vue 57 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/BOM/BenchmarkBOM.vue 100 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/BOM/OrderBOM.vue 88 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/BOM/OrderBOMDetails.vue 119 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/BOM/SelectBOM.vue 90 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/BOM/StandardBOM.vue 94 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/BOM/StandardBOMDetail.vue 135 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/Replenish/AddReplenish.vue 234 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/Replenish/PrintReplenishFlowCard.vue 167 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/Replenish/Replenish.vue 72 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/Replenish/SelectReplenish.vue 258 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/machine/AddMachine.vue 105 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/machine/AddMaintenanceAndRepair.vue 120 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/machine/Machine.vue 57 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/machine/MaintenanceAndRepair.vue 111 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/machine/SelectMachine.vue 141 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/processCard/AddProcessCard.vue 172 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/processCard/PrintFlowCard.vue 170 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/processCard/PrintProcess.vue 954 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/processCard/ProcessCard.vue 85 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/processCard/ProcessCardDetails.vue 146 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/processCard/ReShelving.vue 88 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/processCard/SelectAddProcess.vue 148 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/processCard/SelectPrintFlowCard.vue 106 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/processCard/SelectProcessCard.vue 180 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/processCard/SplittingDetails.vue 92 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/report/DamageReport.vue 114 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/report/EquipmentOutput.vue 104 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/report/OrderBOMOutside.vue 113 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/report/OrderPlanDecomposition.vue 113 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/report/ProcessToBeCompleted.vue 95 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/report/ProductionSchedule.vue 235 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/report/QualityReport.vue 104 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/report/RawMaterialRequisition.vue 103 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/report/Report.vue 106 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/report/SplittingDetailsOutside.vue 96 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/report/TaskCompletionStatus.vue 118 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/report/TeamOutput.vue 120 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/report/WorkInProgress.vue 124 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/report/Yield.vue 105 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/reportingWorks/AddReportingWork.vue 259 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/reportingWorks/QualityInReviewDetail.vue 192 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/reportingWorks/QualityInspectionReview.vue 157 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/reportingWorks/ReportingWorkDetail.vue 164 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/reportingWorks/ReportingWorks.vue 72 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/reportingWorks/SelectReportingWorks.vue 164 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/rework/AddRework.vue 123 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/rework/Rework.vue 71 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/rework/SelectRework.vue 159 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/workOrder/AddWorkOrder.vue 93 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/workOrder/ReleaseWorkOrder.vue 146 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/workOrder/SelectAddWorkOrder.vue 136 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/workOrder/SelectWorkOrder.vue 168 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/workOrder/WorkOrder.vue 71 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/sd/customer/CreateCustomer.vue 133 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/sd/customer/Customer.vue 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/sd/customer/SelectCustomer.vue 73 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/sd/delivery/CreateDelivery.vue 169 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/sd/delivery/Delivery.vue 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/sd/delivery/DeliveryReport.vue 96 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/sd/delivery/SelectDelivery.vue 105 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/sd/delivery/SelectOrderList.vue 106 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/sd/order/CreateOrder.vue 147 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/sd/order/Order.vue 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/sd/order/OrderReport.vue 107 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/sd/order/SelectOrder.vue 124 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/sd/order/UpdateOrderCraft.vue 174 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/sd/product/CreateProduct.vue 435 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/sd/product/Product.vue 58 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/sd/product/SelectProduct.vue 84 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/sd/product/Test.vue 70 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/sd/product/Test11.vue 96 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/sd/returns/CreateReturns.vue 147 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/sd/returns/Returns.vue 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/sd/returns/ReturnsReport.vue 96 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/sd/returns/SelectDeliveryList.vue 105 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/sd/returns/SelectReturns.vue 104 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/vite.config.js 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/pom.xml 171 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/ErpApplication.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/common/CacheUtil.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/common/Constants.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/common/Result.java 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/common/interceptor/JwtInterceptor.java 65 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/config/InterceptorConfig.java 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/config/MyCorsConfig.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/config/MybatisPlusConfig.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/config/SwaggerConfig.java 89 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/config/WebSocketConfig.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/controller/OrderController.java 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/controller/dto/UserDTO.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/controller/sd/BasicGlassTypeController.java 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/controller/sd/ProductController.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/controller/userInfo/SysMenuController.java 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/controller/userInfo/SysMenuItemController.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/controller/userInfo/UserController.java 58 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/entity/Order.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/entity/sd/BasicGlassType.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/entity/sd/Product.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/entity/userInfo/SysMenu.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/entity/userInfo/SysMenuItem.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/entity/userInfo/User.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/exception/GlobalExceptionHandle.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/exception/ServiceException.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/mapper/OrderMapper.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/mapper/sd/BasicGlassTypeMapper.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/mapper/sd/ProductMapper.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/mapper/userInfo/SysMenuItemMapper.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/mapper/userInfo/SysMenuMapper.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/mapper/userInfo/UserMapper.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/service/sd/BasicGlassTypeServise.java 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/service/sd/ProductService.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/service/userInfo/SysMenuItemService.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/service/userInfo/SysMenuService.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/service/userInfo/UserService.java 68 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/tools/TokenTools.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/tools/WebSocketServer.java 70 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/tools/WebSocketServerPool.java 76 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/tools/netty/MyChannelHandlerPool.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/tools/netty/MyWebSocketHandler.java 83 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/tools/netty/NettyServer.java 62 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/resources/application.yml 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/resources/mapper/sd/BasicGlassType.xml 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/resources/mapper/sd/Product.xml 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/resources/mapper/userInfo/SysMenu.xml 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/resources/mapper/userInfo/SysMenuItem.xml 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/resources/mapper/userInfo/User.xml 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/test/java/com/example/erp/ErpApplicationTests.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/target/classes/application.yml 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/target/classes/mapper/sd/BasicGlassType.xml 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/target/classes/mapper/sd/Product.xml 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/target/classes/mapper/userInfo/SysMenu.xml 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/target/classes/mapper/userInfo/SysMenuItem.xml 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/target/classes/mapper/userInfo/User.xml 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/target/erp-0.0.1-SNAPSHOT.jar.original 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/target/maven-archiver/pom.properties 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/.idea/compiler.xml
New file
@@ -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>
north-glass-erp/.idea/dataSources.local.xml
New file
@@ -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>
north-glass-erp/.idea/dataSources.xml
New file
@@ -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>
north-glass-erp/.idea/dataSources/165c5447-d19a-4aaf-af5f-cee92ae696c2.xml
New file
@@ -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>
north-glass-erp/.idea/dataSources/165c5447-d19a-4aaf-af5f-cee92ae696c2/storage_v2/_src_/schema/erp_sd.rUrUsg.meta
New file
@@ -0,0 +1,2 @@
#n:erp_sd
!<md> [1701073490000, 0, null, null, -2147483648, -2147483648]
north-glass-erp/.idea/dataSources/165c5447-d19a-4aaf-af5f-cee92ae696c2/storage_v2/_src_/schema/erp_user_info.xjxUZg.meta
New file
@@ -0,0 +1,2 @@
#n:erp_user_info
!<md> [null, 0, null, null, -2147483648, -2147483648]
north-glass-erp/.idea/dataSources/165c5447-d19a-4aaf-af5f-cee92ae696c2/storage_v2/_src_/schema/erp_user_info.xjxUZg.zip
Binary files differ
north-glass-erp/.idea/dataSources/165c5447-d19a-4aaf-af5f-cee92ae696c2/storage_v2/_src_/schema/information_schema.FNRwLQ.meta
New file
@@ -0,0 +1,2 @@
#n:information_schema
!<md> [null, 0, null, null, -2147483648, -2147483648]
north-glass-erp/.idea/dataSources/165c5447-d19a-4aaf-af5f-cee92ae696c2/storage_v2/_src_/schema/mysql.osA4Bg.meta
New file
@@ -0,0 +1,2 @@
#n:mysql
!<md> [null, 0, null, null, -2147483648, -2147483648]
north-glass-erp/.idea/dataSources/165c5447-d19a-4aaf-af5f-cee92ae696c2/storage_v2/_src_/schema/performance_schema.kIw0nw.meta
New file
@@ -0,0 +1,2 @@
#n:performance_schema
!<md> [null, 0, null, null, -2147483648, -2147483648]
north-glass-erp/.idea/dataSources/165c5447-d19a-4aaf-af5f-cee92ae696c2/storage_v2/_src_/schema/sd_kd.B3aDBg.meta
New file
@@ -0,0 +1,2 @@
#n:sd_kd
!<md> [null, 0, null, null, -2147483648, -2147483648]
north-glass-erp/.idea/dataSources/165c5447-d19a-4aaf-af5f-cee92ae696c2/storage_v2/_src_/schema/sys.zb4BAA.meta
New file
@@ -0,0 +1,2 @@
#n:sys
!<md> [null, 0, null, null, -2147483648, -2147483648]
north-glass-erp/.idea/dataSources/165c5447-d19a-4aaf-af5f-cee92ae696c2/storage_v2/_src_/schema/testpp.Ena3yw.meta
New file
@@ -0,0 +1,2 @@
#n:testpp
!<md> [null, 0, null, null, -2147483648, -2147483648]
north-glass-erp/.idea/dataSources/165c5447-d19a-4aaf-af5f-cee92ae696c2/storage_v2/_src_/schema/ztest.DHjtBg.meta
New file
@@ -0,0 +1,2 @@
#n:ztest
!<md> [null, 0, null, null, -2147483648, -2147483648]
north-glass-erp/.idea/encodings.xml
New file
@@ -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>
north-glass-erp/.idea/google-java-format.xml
New file
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
  <component name="GoogleJavaFormatSettings">
    <option name="enabled" value="false" />
  </component>
</project>
north-glass-erp/.idea/jarRepositories.xml
New file
@@ -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>
north-glass-erp/.idea/misc.xml
New file
@@ -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>
north-glass-erp/.idea/north-glass-erp.iml
New file
@@ -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>
north-glass-erp/.idea/sqldialects.xml
New file
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
  <component name="SqlDialectMappings">
    <file url="PROJECT" dialect="MySQL" />
  </component>
</project>
north-glass-erp/.idea/uiDesigner.xml
New file
@@ -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>
north-glass-erp/.idea/vcs.xml
New file
@@ -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>
north-glass-erp/.idea/workspace.xml
New file
@@ -0,0 +1,377 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
  <component name="AutoImportSettings">
    <option name="autoReloadType" value="SELECTIVE" />
  </component>
  <component name="ChangeListManager">
    <list default="true" id="402214ec-6c93-4a9d-b589-f17dc90f718e" name="更改" comment="11.24提交" />
    <option name="SHOW_DIALOG" value="false" />
    <option name="HIGHLIGHT_CONFLICTS" value="true" />
    <option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
    <option name="LAST_RESOLUTION" value="IGNORE" />
  </component>
  <component name="FileTemplateManagerImpl">
    <option name="RECENT_TEMPLATES">
      <list>
        <option value="Vue Options API Component" />
        <option value="FxmlFile" />
        <option value="Class" />
        <option value="Interface" />
        <option value="Vue Composition API Component" />
      </list>
    </option>
  </component>
  <component name="Git.Settings">
    <option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
  </component>
  <component name="MarkdownSettingsMigration">
    <option name="stateVersion" value="1" />
  </component>
  <component name="MavenImportPreferences">
    <option name="generalSettings">
      <MavenGeneralSettings>
        <option name="userSettingsFile" value="C:\Users\郭\.m2\setting.xml" />
      </MavenGeneralSettings>
    </option>
  </component>
  <component name="ProjectColorInfo">{
  &quot;associatedIndex&quot;: 3
}</component>
  <component name="ProjectId" id="2WqmfjhkKWXDFcYSDMbuyvTulCp" />
  <component name="ProjectLevelVcsManager" settingsEditedManually="true">
    <ConfirmationsSetting value="2" id="Add" />
  </component>
  <component name="ProjectViewState">
    <option name="hideEmptyMiddlePackages" value="true" />
    <option name="showLibraryContents" value="true" />
  </component>
  <component name="PropertiesComponent">{
  &quot;keyToString&quot;: {
    &quot;RequestMappingsPanelOrder0&quot;: &quot;0&quot;,
    &quot;RequestMappingsPanelOrder1&quot;: &quot;1&quot;,
    &quot;RequestMappingsPanelWidth0&quot;: &quot;75&quot;,
    &quot;RequestMappingsPanelWidth1&quot;: &quot;75&quot;,
    &quot;RunOnceActivity.OpenProjectViewOnStart&quot;: &quot;true&quot;,
    &quot;RunOnceActivity.ShowReadmeOnStart&quot;: &quot;true&quot;,
    &quot;SHARE_PROJECT_CONFIGURATION_FILES&quot;: &quot;true&quot;,
    &quot;WebServerToolWindowFactoryState&quot;: &quot;false&quot;,
    &quot;git-widget-placeholder&quot;: &quot;master&quot;,
    &quot;last_opened_file_path&quot;: &quot;D:/EPR-Refactoring/north-glass-erp&quot;,
    &quot;node.js.detected.package.eslint&quot;: &quot;true&quot;,
    &quot;node.js.detected.package.tslint&quot;: &quot;true&quot;,
    &quot;node.js.selected.package.eslint&quot;: &quot;(autodetect)&quot;,
    &quot;node.js.selected.package.tslint&quot;: &quot;(autodetect)&quot;,
    &quot;nodejs_package_manager_path&quot;: &quot;npm&quot;,
    &quot;project.structure.last.edited&quot;: &quot;模块&quot;,
    &quot;project.structure.proportion&quot;: &quot;0.0&quot;,
    &quot;project.structure.side.proportion&quot;: &quot;0.0&quot;,
    &quot;settings.editor.selected.configurable&quot;: &quot;preferences.pluginManager&quot;,
    &quot;spring.configuration.checksum&quot;: &quot;def6d90e829e50c63f98c387daecd138&quot;,
    &quot;ts.external.directory.path&quot;: &quot;D:\\软件\\IntelliJ IDEA 2023.2\\plugins\\javascript-impl\\jsLanguageServicesImpl\\external&quot;,
    &quot;vue.rearranger.settings.migration&quot;: &quot;true&quot;
  },
  &quot;keyToStringList&quot;: {
    &quot;vue.recent.templates&quot;: [
      &quot;Vue Composition API Component&quot;
    ]
  }
}</component>
  <component name="RecentsManager">
    <key name="CreateClassDialog.RecentsKey">
      <recent name="com.example.erp.tools" />
      <recent name="com.example.erp.config" />
    </key>
    <key name="CopyFile.RECENT_KEYS">
      <recent name="D:\Documents\north-glass-erp\src\main\resources\mapper\userInfo" />
      <recent name="D:\projct\document\north-glass-erp\src\main\java\com\example\erp\service\userInfo" />
      <recent name="D:\projct\document\north-glass-erp\src\main\java\com\example\erp\mapper" />
      <recent name="D:\projct\document\north-glass-erp\src\main\java\com\example\erp\entity" />
      <recent name="D:\Documents\north-glass-erp\northglass-erp\public" />
    </key>
    <key name="MoveFile.RECENT_KEYS">
      <recent name="D:\EPR-Refactoring\north-glass-erp\northglass-erp\src\views" />
      <recent name="D:\Documents\north-glass-erp\northglass-erp\src\views\sd\productManage" />
      <recent name="D:\Documents\north-glass-erp\src\main\resources\mapper\sd" />
      <recent name="D:\Documents\north-glass-erp\src\main\resources\mapper\userInfo" />
      <recent name="D:\Documents\north-glass-erp\src\main\resources\mapper" />
    </key>
    <key name="ExtractSuperBase.RECENT_KEYS">
      <recent name="com.example.erp.common.interceptor" />
    </key>
  </component>
  <component name="RunAnythingCache">
    <option name="myCommands">
      <command value="length" />
    </option>
  </component>
  <component name="RunManager" selected="Spring Boot.ErpApplication">
    <configuration default="true" type="ArquillianJUnit" factoryName="" nameIsGenerated="true">
      <option name="arquillianRunConfiguration">
        <value>
          <option name="containerStateName" value="" />
        </value>
      </option>
      <option name="TEST_OBJECT" value="class" />
      <method v="2">
        <option name="Make" enabled="true" />
      </method>
    </configuration>
    <configuration name="erp中的所有" type="JUnit" factoryName="JUnit" temporary="true" nameIsGenerated="true">
      <module name="erp" />
      <option name="PACKAGE_NAME" value="" />
      <option name="TEST_OBJECT" value="package" />
      <method v="2">
        <option name="Make" enabled="true" />
      </method>
    </configuration>
    <configuration name="ErpApplication" type="SpringBootApplicationConfigurationType" factoryName="Spring Boot" nameIsGenerated="true">
      <module name="erp" />
      <option name="SPRING_BOOT_MAIN_CLASS" value="com.example.erp.ErpApplication" />
      <method v="2">
        <option name="Make" enabled="true" />
      </method>
    </configuration>
    <configuration name="dev" type="js.build_tools.npm" nameIsGenerated="true">
      <package-json value="$PROJECT_DIR$/northglass-erp/package.json" />
      <command value="run" />
      <scripts>
        <script value="dev" />
      </scripts>
      <node-interpreter value="project" />
      <envs />
      <method v="2" />
    </configuration>
    <list>
      <item itemvalue="JUnit.erp中的所有" />
      <item itemvalue="npm.dev" />
      <item itemvalue="Spring Boot.ErpApplication" />
    </list>
    <recent_temporary>
      <list>
        <item itemvalue="JUnit.erp中的所有" />
      </list>
    </recent_temporary>
  </component>
  <component name="SpellCheckerSettings" RuntimeDictionaries="0" Folders="0" CustomDictionaries="0" DefaultDictionary="应用程序级" UseSingleDictionary="true" transferred="true" />
  <component name="TaskManager">
    <task active="true" id="Default" summary="默认任务">
      <changelist id="402214ec-6c93-4a9d-b589-f17dc90f718e" name="更改" comment="" />
      <created>1697468590520</created>
      <option name="number" value="Default" />
      <option name="presentableId" value="Default" />
      <updated>1697468590520</updated>
      <workItem from="1697468591856" duration="615000" />
      <workItem from="1697471278802" duration="481000" />
      <workItem from="1697471769995" duration="86000" />
      <workItem from="1697471863704" duration="10000" />
      <workItem from="1697471931787" duration="2170000" />
      <workItem from="1697709162563" duration="7755000" />
      <workItem from="1697861921999" duration="3091000" />
      <workItem from="1697913671504" duration="4581000" />
      <workItem from="1697952862711" duration="255000" />
      <workItem from="1697953125809" duration="465000" />
      <workItem from="1697953600861" duration="254000" />
      <workItem from="1697953955642" duration="1837000" />
      <workItem from="1697955813287" duration="28000" />
      <workItem from="1697955848654" duration="254000" />
      <workItem from="1697956112262" duration="5131000" />
      <workItem from="1697962716198" duration="15661000" />
      <workItem from="1697986744239" duration="470000" />
      <workItem from="1698028907332" duration="13162000" />
      <workItem from="1698197623546" duration="4985000" />
      <workItem from="1698215909297" duration="3273000" />
      <workItem from="1698219198366" duration="5191000" />
      <workItem from="1698280646310" duration="8152000" />
      <workItem from="1698627305013" duration="601000" />
      <workItem from="1698629645528" duration="538000" />
      <workItem from="1698632724850" duration="3196000" />
      <workItem from="1698823498227" duration="4953000" />
      <workItem from="1698834610157" duration="6276000" />
      <workItem from="1699499569189" duration="4051000" />
      <workItem from="1699581871357" duration="28597000" />
      <workItem from="1701158711511" duration="8788000" />
      <workItem from="1701391512754" duration="3288000" />
      <workItem from="1701420496110" duration="3271000" />
      <workItem from="1701669751622" duration="1416000" />
      <workItem from="1701738277209" duration="1182000" />
      <workItem from="1701739824218" duration="214000" />
      <workItem from="1701740058524" duration="212000" />
      <workItem from="1701740293916" duration="1846000" />
      <workItem from="1701742713025" duration="305000" />
      <workItem from="1701743968174" duration="29000" />
      <workItem from="1701744007750" duration="58000" />
      <workItem from="1701744074423" duration="35330000" />
      <workItem from="1701910768762" duration="19157000" />
      <workItem from="1701939822883" duration="20000" />
      <workItem from="1701994104282" duration="18574000" />
      <workItem from="1702253353629" duration="4535000" />
      <workItem from="1702260368238" duration="4000" />
      <workItem from="1702260752353" duration="67000" />
      <workItem from="1702260830343" duration="31471000" />
      <workItem from="1702426354510" duration="34981000" />
      <workItem from="1702631535326" duration="205000" />
    </task>
    <task id="LOCAL-00001" summary="第一次推送">
      <option name="closed" value="true" />
      <created>1697471372444</created>
      <option name="number" value="00001" />
      <option name="presentableId" value="LOCAL-00001" />
      <option name="project" value="LOCAL" />
      <updated>1697471372445</updated>
    </task>
    <task id="LOCAL-00002" summary="第一次推送">
      <option name="closed" value="true" />
      <created>1697471497874</created>
      <option name="number" value="00002" />
      <option name="presentableId" value="LOCAL-00002" />
      <option name="project" value="LOCAL" />
      <updated>1697471497874</updated>
    </task>
    <task id="LOCAL-00003" summary="第一次推送">
      <option name="closed" value="true" />
      <created>1697472420788</created>
      <option name="number" value="00003" />
      <option name="presentableId" value="LOCAL-00003" />
      <option name="project" value="LOCAL" />
      <updated>1697472420788</updated>
    </task>
    <task id="LOCAL-00004" summary="第一次推送">
      <option name="closed" value="true" />
      <created>1697472454035</created>
      <option name="number" value="00004" />
      <option name="presentableId" value="LOCAL-00004" />
      <option name="project" value="LOCAL" />
      <updated>1697472454035</updated>
    </task>
    <task id="LOCAL-00005" summary="第一次推送">
      <option name="closed" value="true" />
      <created>1697976470632</created>
      <option name="number" value="00005" />
      <option name="presentableId" value="LOCAL-00005" />
      <option name="project" value="LOCAL" />
      <updated>1697976470632</updated>
    </task>
    <task id="LOCAL-00006" summary="第一次推送">
      <option name="closed" value="true" />
      <created>1697977947581</created>
      <option name="number" value="00006" />
      <option name="presentableId" value="LOCAL-00006" />
      <option name="project" value="LOCAL" />
      <updated>1697977947581</updated>
    </task>
    <task id="LOCAL-00007" summary="第一次推送">
      <option name="closed" value="true" />
      <created>1698070928863</created>
      <option name="number" value="00007" />
      <option name="presentableId" value="LOCAL-00007" />
      <option name="project" value="LOCAL" />
      <updated>1698070928863</updated>
    </task>
    <task id="LOCAL-00008" summary="第一次推送">
      <option name="closed" value="true" />
      <created>1698070950071</created>
      <option name="number" value="00008" />
      <option name="presentableId" value="LOCAL-00008" />
      <option name="project" value="LOCAL" />
      <updated>1698070950071</updated>
    </task>
    <task id="LOCAL-00009" summary="第一次推送">
      <option name="closed" value="true" />
      <created>1698155449740</created>
      <option name="number" value="00009" />
      <option name="presentableId" value="LOCAL-00009" />
      <option name="project" value="LOCAL" />
      <updated>1698155449740</updated>
    </task>
    <task id="LOCAL-00010" summary="第一次推送">
      <option name="closed" value="true" />
      <created>1698160599574</created>
      <option name="number" value="00010" />
      <option name="presentableId" value="LOCAL-00010" />
      <option name="project" value="LOCAL" />
      <updated>1698160599574</updated>
    </task>
    <task id="LOCAL-00011" summary="第一次推送">
      <option name="closed" value="true" />
      <created>1699002088623</created>
      <option name="number" value="00011" />
      <option name="presentableId" value="LOCAL-00011" />
      <option name="project" value="LOCAL" />
      <updated>1699002088623</updated>
    </task>
    <task id="LOCAL-00012" summary="第一次推送">
      <option name="closed" value="true" />
      <created>1699600840886</created>
      <option name="number" value="00012" />
      <option name="presentableId" value="LOCAL-00012" />
      <option name="project" value="LOCAL" />
      <updated>1699600840886</updated>
    </task>
    <task id="LOCAL-00013" summary="第一次推送">
      <option name="closed" value="true" />
      <created>1699600891700</created>
      <option name="number" value="00013" />
      <option name="presentableId" value="LOCAL-00013" />
      <option name="project" value="LOCAL" />
      <updated>1699600891700</updated>
    </task>
    <task id="LOCAL-00014" summary="11.24提交">
      <option name="closed" value="true" />
      <created>1700816443339</created>
      <option name="number" value="00014" />
      <option name="presentableId" value="LOCAL-00014" />
      <option name="project" value="LOCAL" />
      <updated>1700816443339</updated>
    </task>
    <task id="LOCAL-00015" summary="11.24提交">
      <option name="closed" value="true" />
      <created>1701502564307</created>
      <option name="number" value="00015" />
      <option name="presentableId" value="LOCAL-00015" />
      <option name="project" value="LOCAL" />
      <updated>1701502564307</updated>
    </task>
    <option name="localTasksCounter" value="16" />
    <servers />
  </component>
  <component name="TypeScriptGeneratedFilesManager">
    <option name="version" value="3" />
  </component>
  <component name="Vcs.Log.Tabs.Properties">
    <option name="TAB_STATES">
      <map>
        <entry key="MAIN">
          <value>
            <State>
              <option name="FILTERS">
                <map>
                  <entry key="branch">
                    <value>
                      <list>
                        <option value="master" />
                      </list>
                    </value>
                  </entry>
                </map>
              </option>
              <option name="SHOW_ROOT_NAMES" value="true" />
            </State>
          </value>
        </entry>
      </map>
    </option>
  </component>
  <component name="VcsManagerConfiguration">
    <option name="ADD_EXTERNAL_FILES_SILENTLY" value="true" />
    <MESSAGE value="Merge remote-tracking branch 'origin/master'&#10;&#10;# Conflicts:&#10;#&#9;.idea/workspace.xml&#10;#&#9;northglass-erp/src/App.vue&#10;#&#9;northglass-erp/src/assets/main.css" />
    <MESSAGE value="10/22提交swaggerui" />
    <MESSAGE value="123" />
    <MESSAGE value="第一次推送" />
    <MESSAGE value="11.24提交" />
    <option name="LAST_COMMIT_MESSAGE" value="11.24提交" />
  </component>
  <component name="XSLT-Support.FileAssociations.UIState">
    <expand />
    <select />
  </component>
</project>
north-glass-erp/.mvn/wrapper/maven-wrapper.properties
New file
@@ -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
north-glass-erp/README.md
New file
@@ -0,0 +1,39 @@
# NorthGlassERP
#### 介绍
{**以下是 Gitee 平台说明,您可以替换此简介**
Gitee 是 OSCHINA 推出的基于 Git 的代码托管平台(同时支持 SVN)。专为开发者提供稳定、高效、安全的云端软件开发协作平台
无论是个人、团队、或是企业,都能够用 Gitee 实现代码托管、项目管理、协作开发。企业项目请看 [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.  提交代码
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 封面人物是一档用来展示 Gitee 会员风采的栏目 [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/)
north-glass-erp/northglass-erp/.gitignore
New file
@@ -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?
north-glass-erp/northglass-erp/.vscode/extensions.json
New file
@@ -0,0 +1,3 @@
{
  "recommendations": ["Vue.volar", "Vue.vscode-typescript-vue-plugin"]
}
north-glass-erp/northglass-erp/README.md
New file
@@ -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
```
north-glass-erp/northglass-erp/config.js
New file
@@ -0,0 +1,4 @@
export default {
  serverUrl:"localhost:8080"
  //serverUrl:"res.abeim.cn"
}
north-glass-erp/northglass-erp/index.html
New file
@@ -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>
north-glass-erp/northglass-erp/package-lock.json
New file
@@ -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=="
    }
  }
}
north-glass-erp/northglass-erp/package.json
New file
@@ -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"
  }
}
north-glass-erp/northglass-erp/public/favicon.ico
north-glass-erp/northglass-erp/public/vuefavicon.ico
north-glass-erp/northglass-erp/src/App.vue
New file
@@ -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>
north-glass-erp/northglass-erp/src/assets/base.css
New file
@@ -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;
}
north-glass-erp/northglass-erp/src/assets/img.png
north-glass-erp/northglass-erp/src/assets/logo.svg
New file
@@ -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>
north-glass-erp/northglass-erp/src/assets/main.css
New file
@@ -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;
}
north-glass-erp/northglass-erp/src/assets/northGlass.ico
north-glass-erp/northglass-erp/src/components/basic/product/GlassType.vue
New file
@@ -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>
north-glass-erp/northglass-erp/src/hook/index.js
north-glass-erp/northglass-erp/src/layout/MainErpView.vue
New file
@@ -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>
north-glass-erp/northglass-erp/src/main.js
New file
@@ -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')
north-glass-erp/northglass-erp/src/router/index.js
New file
@@ -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
north-glass-erp/northglass-erp/src/stores/counter.js
New file
@@ -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 }
})
north-glass-erp/northglass-erp/src/stores/productGlassType.js
New file
@@ -0,0 +1,11 @@
import {defineStore} from 'pinia'
import {ref} from "vue";
export  default defineStore("productGlassType",{
    state: () =>{
        let GlassType=$ref('')
        return {
            GlassType
        }
    }
})
north-glass-erp/northglass-erp/src/stores/userInfo.js
New file
@@ -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//数据持久化,防止刷新数据消失
})
north-glass-erp/northglass-erp/src/utils/deepClone.js
New file
@@ -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;
}
north-glass-erp/northglass-erp/src/utils/request.js
New file
@@ -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 拦截器
// 可以自请求发送前对请求做一些处理
// 比如统一加token,对请求参数统一加密
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 拦截器
// 可以在接口响应后统一处理结果
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
north-glass-erp/northglass-erp/src/utils/webSocket.js
New file
@@ -0,0 +1,137 @@
var websock = null;
var global_callback = null;
let isConnect = false; //连接标识 避免重复连接
let rec; //断线重连后,延迟5秒重新创建WebSocket连接  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;
    // 初始化websocket
    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) {
        // 若是 正在开启状态,则等待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));
    // 收到信息为Blob类型时
    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};
north-glass-erp/northglass-erp/src/views/HomeView.vue
New file
@@ -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>
north-glass-erp/northglass-erp/src/views/LoginView.vue
New file
@@ -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>北玻自动化ERP管理系统</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>
north-glass-erp/northglass-erp/src/views/RegisterView.vue
New file
@@ -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>
north-glass-erp/northglass-erp/src/views/mm/mainIngredient/CreateIngredients.vue
New file
@@ -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>
north-glass-erp/northglass-erp/src/views/mm/mainIngredient/Ingredients.vue
New file
@@ -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>
north-glass-erp/northglass-erp/src/views/mm/mainIngredient/SelectIngredients.vue
New file
@@ -0,0 +1,174 @@
<!-- 物料资料 -->
<script lang="ts" setup>
import { ref } from 'vue';
const name = ref('')
const productName = ref('')
const salId = ref('')
let tableData = ref([
  {
    "自序":'1',
    "物料编码":'700900000000941',
    "物料名称":'丝袜防晒手套套袖',
    "产地":'00',
    "宽度":'0.00',
    "高度":'0.00',
    "厚度":'0.00',
    "型号":'',
    "换算率":'1000',
    "单位":'双',
    "换算单位":'1',
    "保质期":'12',
    "重量":'0.0000',
    "数量":'2016-10-17',
    "库存组织":'人工库',
    "备注":'',
  },
  {
    "自序":'2',
    "物料编码":'700900000000940',
    "物料名称":'自复位按钮开关',
    "产地":'00',
    "宽度":'0.00',
    "高度":'0.00',
    "厚度":'0.00',
    "型号":'',
    "换算率":'1000',
    "单位":'件',
    "换算单位":'1',
    "保质期":'12',
    "重量":'0.0000',
    "数量":'2016-10-17',
    "库存组织":'人工库',
    "备注":'',
  },
  {
    "自序":'3',
    "物料编码":'700900000001189',
    "物料名称":'户外明装防水插座',
    "产地":'00',
    "宽度":'0.00',
    "高度":'0.00',
    "厚度":'0.00',
    "型号":'',
    "换算率":'1000',
    "单位":'个',
    "换算单位":'1',
    "保质期":'12',
    "重量":'0.0000',
    "数量":'2016-10-17',
    "库存组织":'人工库',
    "备注":'',
  },
  {
    "自序":'4',
    "物料编码":'700900000001188',
    "物料名称":'平板地拖',
    "产地":'00',
    "宽度":'0.00',
    "高度":'0.00',
    "厚度":'0.00',
    "型号":'',
    "换算率":'1000',
    "单位":'把',
    "换算单位":'1',
    "保质期":'12',
    "重量":'0.0000',
    "数量":'2016-10-17',
    "库存组织":'人工库',
    "备注":'',
  },
])
</script>
<template>
  <div>
    <!-- 表单开始 -->
    <div>
      <el-form  size="medium" >
<!--        <el-row gutter="5">-->
<!--          <el-col :span="4">-->
<!--            <el-input v-model="name" placeholder="请输入物料编码" style="width: 200px; height: 30px;" />-->
<!--          </el-col>-->
<!--          <el-col :span="4">-->
<!--            <el-input v-model="productName" placeholder="请输入物料名称" style="width: 200px; height: 30px;" />-->
<!--          </el-col>-->
<!--          <el-col :span="4">-->
<!--            <el-input v-model="salId" placeholder="请输入宽度" style="width: 200px; height: 30px;" />-->
<!--          </el-col>-->
<!--          <el-col :span="4">-->
<!--            <el-input v-model="salId" placeholder="请输入高度" style="width: 200px; height: 30px;" />-->
<!--          </el-col>-->
<!--        </el-row>-->
<!--        &lt;!&ndash; <el-form-item size="large">-->
<!--          <el-button type="primary" @click="submitForm">查询</el-button>-->
<!--          <el-button @click="resetForm">重置</el-button>-->
<!--        </el-form-item>&ndash;&gt;-->
<!--        <el-row gutter="5">-->
<!--          <el-col :span="4">-->
<!--            <el-dropdown>-->
<!--              <el-button type="primary">-->
<!--                请选择库存组织<el-icon class="el-icon&#45;&#45;right" style="width: 66px;"><arrow-down /></el-icon>-->
<!--              </el-button>-->
<!--              <template #dropdown>-->
<!--                <el-dropdown-menu>-->
<!--                  <el-dropdown-item>Action 1</el-dropdown-item>-->
<!--                  <el-dropdown-item>Action 2</el-dropdown-item>-->
<!--                  <el-dropdown-item>Action 3</el-dropdown-item>-->
<!--                  <el-dropdown-item>Action 4</el-dropdown-item>-->
<!--                  <el-dropdown-item>Action 5</el-dropdown-item>-->
<!--                </el-dropdown-menu>-->
<!--              </template>-->
<!--            </el-dropdown>-->
<!--          </el-col>-->
<!--          <el-col :span="4">-->
<!--            <el-input v-model="name" placeholder="请输宽度" style="width: 200px; height: 30px;" />-->
<!--          </el-col>-->
<!--          <el-col :span="4">-->
<!--            <el-input v-model="name" placeholder="请输型号" style="width: 200px; height: 30px;" />-->
<!--          </el-col>-->
<!--          <el-col :span="4">-->
<!--            <el-button id="searchButton" type="primary" :icon="Search">查询</el-button>-->
<!--          </el-col>-->
<!--        </el-row>-->
      </el-form>
    </div>
    <!-- 表单结束 -->
    <!-- 表格开始 -->
    <div>
      <el-table :data="tableData" border style="width: 100%">
        <el-table-column prop="自序" label="自序" width="180" />
        <el-table-column prop="物料编码" label="物料编码" width="180" />
        <el-table-column prop="物料名称" label="物料名称" width="180"/>
        <el-table-column prop="产地" label="产地" width="180"/>
        <el-table-column prop="宽度" label="宽度" width="180"/>
        <el-table-column prop="高度" label="高度" width="180"/>
        <el-table-column prop="厚度" label="厚度" width="180"/>
        <el-table-column prop="型号" label="型号" width="180"/>
        <el-table-column prop="换算率" label="换算率" width="180"/>
        <el-table-column prop="单位" label="单位" width="180"/>
        <el-table-column prop="换算单位" label="换算单位" width="180"/>
        <el-table-column prop="保质期" label="保质期" width="180"/>
        <el-table-column prop="重量" label="重量" width="180"/>
        <el-table-column prop="数量" label="数量" width="180"/>
        <el-table-column prop="库存组织" label="库存组织" width="180"/>
        <el-table-column prop="备注" label="备注" width="180"/>
        <el-table-column fixed="left" label="操作" width="120">
          <template #default>
            <el-button link type="primary" size="small" @click="handleClick"
            >编辑</el-button
            >
            <el-button link type="primary" size="small">删除</el-button>
          </template>
        </el-table-column>
      </el-table>
    </div>
  </div>
</template>
<style>
</style>
north-glass-erp/northglass-erp/src/views/mm/mainIngredientStock/AccessoriesMonthlySettlement.vue
New file
@@ -0,0 +1,12 @@
<!--辅料月结-->
<script>
</script>
<template>
  <h1> 暂无,敬请期待 </h1>
</template>
<style>
</style>
north-glass-erp/northglass-erp/src/views/mm/mainIngredientStock/CreateIngredientsStock.vue
New file
@@ -0,0 +1,8 @@
<script>
</script>
<template>
  <h1>暂无,敬请期待</h1></template>
<style>
</style>
north-glass-erp/northglass-erp/src/views/mm/mainIngredientStock/IngredientsStock.vue
New file
@@ -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>
north-glass-erp/northglass-erp/src/views/mm/mainIngredientStock/OriginalMonthlySettlement.vue
New file
@@ -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>
north-glass-erp/northglass-erp/src/views/mm/mainIngredientStock/SelectIngredientsStock.vue
New file
@@ -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>
north-glass-erp/northglass-erp/src/views/mm/mainProductStock/CreateProductStock.vue
New file
@@ -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>
north-glass-erp/northglass-erp/src/views/mm/mainProductStock/FinishedGoodsIssue.vue
New file
@@ -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>
north-glass-erp/northglass-erp/src/views/mm/mainProductStock/FinishedProductOut.vue
New file
@@ -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>
north-glass-erp/northglass-erp/src/views/mm/mainProductStock/FinishedProductReturn.vue
New file
@@ -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>
north-glass-erp/northglass-erp/src/views/mm/mainProductStock/FinishedProductRework.vue
New file
@@ -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>
north-glass-erp/northglass-erp/src/views/mm/mainProductStock/OrderAllocation.vue
New file
@@ -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>
north-glass-erp/northglass-erp/src/views/mm/mainProductStock/OrderAllocationUpdate.vue
New file
@@ -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>
north-glass-erp/northglass-erp/src/views/mm/mainProductStock/ProductStock.vue
New file
@@ -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>
north-glass-erp/northglass-erp/src/views/mm/mainProductStock/ProductStockList.vue
New file
@@ -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>
north-glass-erp/northglass-erp/src/views/mm/mainTrader/CreateTrader.vue
New file
@@ -0,0 +1,9 @@
<script>
</script>
<template>
 <h1>暂无,敬请期待</h1>
</template>
<style>
</style>
north-glass-erp/northglass-erp/src/views/mm/mainTrader/SelectTrader.vue
New file
@@ -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',
    "供应商名称":'成都正华电子仪器有限公司',
    "代理产品":'辅料',
    "结算方式":'货到付款',
    "联系人":'',
    "联系电话":'',
    "税率":'13.00',
    "公司地址":'北京市辖区东城区',
    "收货地址":'北京市辖区东城区',
    "所属集团":'',
    "等级":'',
    "单据状态":'未审核',
    "审核员":'0.0000',
    "审核日期":'2023-11-19',
    "换算单位":'0',
    "备注":'0',
  },
  {
    "供应商编码":'220',
    "供应商名称":'广州合申机电科技有限公司',
    "代理产品":'辅料',
    "结算方式":'货到付款',
    "联系人":'',
    "联系电话":'',
    "税率":'13.00',
    "公司地址":'北京市辖区东城区',
    "收货地址":'北京市辖区东城区',
    "所属集团":'',
    "等级":'',
    "单据状态":'未审核',
    "审核员":'0.0000',
    "审核日期":'2023-11-19',
    "换算单位":'0',
    "备注":'0',
  },
  {
    "供应商编码":'219',
    "供应商名称":'江门市中锐金刚石工具有限公司',
    "代理产品":'辅料',
    "结算方式":'货到付款',
    "联系人":'',
    "联系电话":'',
    "税率":'13.00',
    "公司地址":'北京市辖区东城区',
    "收货地址":'北京市辖区东城区',
    "所属集团":'',
    "等级":'',
    "单据状态":'未审核',
    "审核员":'0.0000',
    "审核日期":'2023-11-19',
    "换算单位":'0',
    "备注":'0',
  },
  {
    "供应商编码":'218',
    "供应商名称":'深圳悦创精密自动化技术有限公司',
    "代理产品":'辅料',
    "结算方式":'货到付款',
    "联系人":'',
    "联系电话":'',
    "税率":'13.00',
    "公司地址":'北京市辖区东城区',
    "收货地址":'北京市辖区东城区',
    "所属集团":'',
    "等级":'',
    "单据状态":'未审核',
    "审核员":'0.0000',
    "审核日期":'2023-11-19',
    "换算单位":'0',
    "备注":'0',
  },
  {
    "供应商编码":'217',
    "供应商名称":'深圳市伯欣科技有限公司',
    "代理产品":'辅料',
    "结算方式":'货到付款',
    "联系人":'',
    "联系电话":'',
    "税率":'13.00',
    "公司地址":'北京市辖区东城区',
    "收货地址":'北京市辖区东城区',
    "所属集团":'',
    "等级":'',
    "单据状态":'未审核',
    "审核员":'0.0000',
    "审核日期":'2023-11-19',
    "换算单位":'0',
    "备注":'0',
  },
  {
    "供应商编码":'216',
    "供应商名称":'宿迁宣之文电子商务有限公司',
    "代理产品":'辅料',
    "结算方式":'货到付款',
    "联系人":'',
    "联系电话":'',
    "税率":'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="代理产品" 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>
north-glass-erp/northglass-erp/src/views/mm/mainTrader/Trader.vue
New file
@@ -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>
north-glass-erp/northglass-erp/src/views/mm/purchaseOrder/Create.vue
New file
@@ -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>
north-glass-erp/northglass-erp/src/views/mm/purchaseOrder/PurchaseOrder.vue
New file
@@ -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>
north-glass-erp/northglass-erp/src/views/mm/purchaseOrder/Select.vue
New file
@@ -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>
north-glass-erp/northglass-erp/src/views/mm/purchaseReturn/PurchaseReturn.vue
New file
@@ -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>
north-glass-erp/northglass-erp/src/views/mm/purchaseReturn/Select.vue
New file
@@ -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>
north-glass-erp/northglass-erp/src/views/mm/purchaseStorage/PurchaseStorage.vue
New file
@@ -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>
north-glass-erp/northglass-erp/src/views/mm/purchaseStorage/Select.vue
New file
@@ -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>
north-glass-erp/northglass-erp/src/views/mm/stockReport/StockMonthReport.vue
New file
@@ -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>
north-glass-erp/northglass-erp/src/views/mm/stockReport/StockReport.vue
New file
@@ -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>
north-glass-erp/northglass-erp/src/views/mm/stockReport/SubsidiaryMonthReport.vue
New file
@@ -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>
north-glass-erp/northglass-erp/src/views/mm/stockReport/WarehouseReport.vue
New file
@@ -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>
north-glass-erp/northglass-erp/src/views/pp/BOM/BOM.vue
New file
@@ -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>
north-glass-erp/northglass-erp/src/views/pp/BOM/BenchmarkBOM.vue
New file
@@ -0,0 +1,100 @@
<script setup>
import {reactive, ref} from 'vue'
const value = ref('')
const options = [
  {
    value: 'Option1',
    label: 'Option1',
  },
  {
    value: 'Option2',
    label: 'Option2',
  },
  {
    value: 'Option3',
    label: 'Option3',
  },
]
const form = reactive({
  name: '1',
  region: '',
  date1: '',
  date2: '',
  delivery: false,
  type: [],
  resource: '',
  desc: '',
})
const tableData = [
  {
    1: '70020000000000000000000004',
    2: '预洗剂7600TRO-DS',
    3: '4',
    4: '制镜',
    5:'L',
    6:'0.001000',
    7:'ml',
    8:'四川',
  },
  {
    1: '70020000000000000000000004',
    2: '预洗剂7600TRO-DS',
    3: '4',
    4: '制镜',
    5:'L',
    6:'0.001000',
    7:'ml',
    8:'四川',
  },
  {
    1: '70020000000000000000000004',
    2: '预洗剂7600TRO-DS',
    3: '4',
    4: '制镜',
    5:'L',
    6:'0.001000',
    7:'ml',
    8:'四川',
  },
]
</script>
<template>
<div>
  <div>
    <el-select v-model="value" class="m-2" placeholder="产品种类">
      <el-option
          v-for="item in options"
          :key="item.value"
          :label="item.label"
          :value="item.value"
      />
    </el-select>
    &nbsp;
    <label>基数:</label>
    <el-input placeholder="基数" style="width: 100px" v-model="form.name">1</el-input>
    &nbsp;
    <el-button type="primary">添加一行</el-button>
    <el-button type="primary">减少一行</el-button>
    <el-button type="primary">保存</el-button>
  </div>
  <div>
    <el-table :data="tableData" border style="width: 100%" height="100%">
      <el-table-column prop="1" label="物料编码" :show-overflow-tooltip='true' width="250" />
      <el-table-column prop="2" label="物料名称" :show-overflow-tooltip='true' width="250" />
      <el-table-column prop="3" label="数量" width="105" />
      <el-table-column prop="4" label="领料工序"  width="155" />
      <el-table-column prop="5" label="主单位"  width="142" />
      <el-table-column prop="6" label="换算率" width="175" />
      <el-table-column prop="7" label="副单位" width="155" />
      <el-table-column prop="8" label="产地" width="115" />
    </el-table>
  </div>
</div>
</template>
<style scoped>
</style>
north-glass-erp/northglass-erp/src/views/pp/BOM/OrderBOM.vue
New file
@@ -0,0 +1,88 @@
<script lang="ts" setup>
import {reactive, ref} from 'vue'
import {Search} from "@element-plus/icons-vue"
import {useRouter} from "vue-router"
const router = useRouter()
// do not use same name with ref
const form = reactive({
  name: '',
  region: '',
  date1: '',
  date2: '',
  delivery: false,
  type: [],
  resource: '',
  desc: '',
})
const defaultTime = ref<[Date, Date]>([
  new Date(2000, 1, 1, 0, 0, 0),
  new Date(2000, 2, 1, 23, 59, 59),
])
let listName = $ref([
  '订单BOM','审核','采购'
])
const tableData = [
  {
    salesOrderNo: 'NG23121201',
    2: '江门馗达特玻科技有限公司',
    3: '大板镜',
    4: '1批一',
    5:'1212',
    6:'442.21',
    7:'内部',
    8:'XX',
    9:'2020-01-01',
    10:'2020-01-02',
  },
]
</script>
<template>
  <div>
    <div id="selectForm">
      <el-row :gutter="0">
        <el-date-picker
            v-model="form.date1"
            type="daterange"
            start-placeholder="开始时间"
            end-placeholder="结束时间"
            :default-time="defaultTime"
        />
        &nbsp;&nbsp;
        <el-button type="primary">查询</el-button>
      </el-row>
    </div>
    <el-table :data="tableData" border style="width: 100%" height="100%">
      <el-table-column v-for="item in listName" prop="" :label="item" width="85"   >
        <el-checkbox checked/>
      </el-table-column>
      <el-table-column prop="salesOrderNo" label="销售单号" width="125">
        <template v-slot="scope">
          <router-link :to="{path:'OrderBOMDetails'}" >{{scope.row.salesOrderNo}}</router-link>
        </template>
      </el-table-column>
      <el-table-column prop="2" label="客户名称" :show-overflow-tooltip='true' width="165" />
      <el-table-column prop="3" label="项目名称" :show-overflow-tooltip='true'  width="105" />
      <el-table-column prop="4" label="批次" :show-overflow-tooltip='true' width="75" />
      <el-table-column prop="5" label="订单数" :show-overflow-tooltip='true' width="70" />
      <el-table-column prop="6" label="订单面积" width="85" />
      <el-table-column prop="7" label="订单类型" width="85" />
      <el-table-column prop="8" label="业务员" width="75" />
      <el-table-column prop="9" label="工单BOM生成时间" width="150" />
      <el-table-column prop="10" label="工单BOM审核时间" :show-overflow-tooltip='true' width="158" />
    </el-table>
  </div>
</template>
<style scoped>
#selectForm {
  width: 40%;
  height: 100%;
  text-align: center;
}
</style>
north-glass-erp/northglass-erp/src/views/pp/BOM/OrderBOMDetails.vue
New file
@@ -0,0 +1,119 @@
<script setup>
import {reactive, ref} from 'vue'
const value = ref('')
const options = [
  {
    value: 'Option1',
    label: 'Option1',
  },
  {
    value: 'Option2',
    label: 'Option2',
  },
  {
    value: 'Option3',
    label: 'Option3',
  },
]
const form = reactive({
  name: '',
  region: '',
  date1: '',
  date2: '',
  delivery: false,
  type: [],
  resource: '',
  desc: '',
})
const tableData = [
  {
    1: 'NG23121201',
    2: '12300001110',
    3: '10mm超白UD60平钢(外)+12Ar(结)+10mm超白平钢(内)',
    4: '111',
    5:'钢化',
    6:'5001011100000110',
    7:'无尘纸',
    8:'113',
    9:'1144',
    10:'张',
    11:'11',
    12:'22',
    13:'33',
    14:'44',
    15:'东莞',
    16:'2023-12-01',
    17:'',
  },
]
</script>
<template>
  <div>
    <div>
      <div>
        <el-input placeholder="销售单号" style="width: 120px" v-model="form.name"></el-input>
        <el-button type="primary">生成订单BOM</el-button>
        <el-button type="primary">转采购单</el-button>
        <el-button type="primary">审核</el-button>
        <el-button type="primary">反审</el-button>
        <el-button type="primary">删除</el-button>
        <el-button type="primary">修改超领数量</el-button>
      </div>
      <el-select v-model="value" class="m-2" placeholder="产品种类">
        <el-option
            v-for="item in options"
            :key="item.value"
            :label="item.label"
            :value="item.value"
        />
      </el-select>
      <el-select v-model="value" class="m-2" placeholder="领料工序">
        <el-option
            v-for="item in options"
            :key="item.value"
            :label="item.label"
            :value="item.value"
        />
      </el-select>
      &nbsp;
      <el-input placeholder="物料编码" style="width: 200px"></el-input>
      <el-input placeholder="物料名称" style="width: 200px"></el-input>
      <el-input placeholder="需求数量" style="width: 200px"></el-input>
      <el-button type="primary">添加</el-button>
    </div>
    <div>
      <el-table :data="tableData" border style="width: 100%" height="100%">
        <el-table-column prop="1" label="销售单号" :show-overflow-tooltip='true' width="120" />
        <el-table-column prop="2" label="产品编号" :show-overflow-tooltip='true' width="130" />
        <el-table-column prop="3" label="产品名称" :show-overflow-tooltip='true' width="155" />
        <el-table-column prop="4" label="工单数量"  width="85" />
        <el-table-column prop="5" label="领料工序"  width="85" />
        <el-table-column prop="6" label="物料编码" :show-overflow-tooltip='true' width="125" />
        <el-table-column prop="7" label="物料名称" :show-overflow-tooltip='true' width="135" />
        <el-table-column prop="8" label="宽" width="60" />
        <el-table-column prop="9" label="高" width="60" />
        <el-table-column prop="10" label="单位" width="70" />
        <el-table-column prop="11" label="物料数量" width="85" />
        <el-table-column prop="12" label="库存数量" width="85" />
        <el-table-column prop="13" label="库存数-需求数" width="120" />
        <el-table-column prop="14" label="采购数量" width="85" />
        <el-table-column prop="15" label="产地" width="70" />
        <el-table-column prop="16" label="计划到货时间" width="120" />
        <el-table-column prop="17" label="备注" :show-overflow-tooltip='true' width="120" />
      </el-table>
    </div>
  </div>
</template>
<style scoped>
</style>
north-glass-erp/northglass-erp/src/views/pp/BOM/SelectBOM.vue
New file
@@ -0,0 +1,90 @@
<script lang="ts" setup>
import {reactive, ref} from 'vue'
import {Search} from "@element-plus/icons-vue"
import {useRouter} from "vue-router"
const router = useRouter()
// do not use same name with ref
const form = reactive({
  name: '',
  region: '',
  date1: '',
  date2: '',
  delivery: false,
  type: [],
  resource: '',
  desc: '',
})
const defaultTime = ref<[Date, Date]>([
  new Date(2000, 1, 1, 0, 0, 0),
  new Date(2000, 2, 1, 23, 59, 59),
])
let listName = $ref([
  '基准BOM','标准BOM','审核'
])
const tableData = [
  {
    1: '1',
    2: 'D123123',
    3: 'XXXX公司',
    4: '06040000022',
    5:'10mm超白UD60平钢(外)+12Ar(结)+10mm超白平钢(内)',
    6:'1440',
    7:'3660',
    8:'30',
    9:'普形',
    10:'111',
    11:'张三',
    12:'李四',
    13:'王五',
  },
]
</script>
<template>
  <div>
    <div id="selectForm">
      <el-row :gutter="0">
        <el-date-picker
            v-model="form.date1"
            type="daterange"
            start-placeholder="开始时间"
            end-placeholder="结束时间"
            :default-time="defaultTime"
        />
        &nbsp;&nbsp;
        <el-button type="primary">查询</el-button>
      </el-row>
    </div>
    <el-table :data="tableData" border style="width: 100%" height="100%">
      <el-table-column v-for="item in listName" prop="" :label="item" width="85"   >
        <el-checkbox checked/>
      </el-table-column>
      <el-table-column prop="1" label="自序" width="55" />
      <el-table-column prop="2" label="客户编号" width="105" />
      <el-table-column prop="3" label="客户名称" width="105" />
      <el-table-column prop="4" label="产品编号" :show-overflow-tooltip='true' width="125" />
      <el-table-column prop="5" label="产品名称" :show-overflow-tooltip='true' width="150" />
      <el-table-column prop="6" label="玻璃长" width="75" />
      <el-table-column prop="7" label="玻璃宽" width="75" />
      <el-table-column prop="8" label="厚度" width="65" />
      <el-table-column prop="9" label="形状" width="65" />
      <el-table-column prop="10" label="备注" :show-overflow-tooltip='true' width="155" />
      <el-table-column prop="11" label="产品创建人" width="95" />
      <el-table-column prop="12" label="BOM创建人" width="105" />
      <el-table-column prop="13" label="审核员" width="85" />
    </el-table>
  </div>
</template>
<style scoped>
#selectForm {
  width: 40%;
  height: 100%;
  text-align: center;
}
</style>
north-glass-erp/northglass-erp/src/views/pp/BOM/StandardBOM.vue
New file
@@ -0,0 +1,94 @@
<script lang="ts" setup>
import {reactive, ref} from 'vue'
import {Search} from "@element-plus/icons-vue"
import {useRouter} from "vue-router"
const router = useRouter()
// do not use same name with ref
const form = reactive({
  name: '',
  region: '',
  date1: '',
  date2: '',
  delivery: false,
  type: [],
  resource: '',
  desc: '',
})
const defaultTime = ref<[Date, Date]>([
  new Date(2000, 1, 1, 0, 0, 0),
  new Date(2000, 2, 1, 23, 59, 59),
])
let listName = $ref([
  '基准BOM','标准BOM','审核'
])
const tableData = [
  {
    serialNumber: '1',
    2: 'D123123',
    3: 'XXXX公司',
    4: '06040000022',
    5:'10mm超白UD60平钢(外)+12Ar(结)+10mm超白平钢(内)',
    6:'1440',
    7:'3660',
    8:'30',
    9:'普形',
    10:'111',
    11:'张三',
    12:'李四',
    13:'王五',
  },
]
</script>
<template>
  <div>
    <div id="selectForm">
      <el-row :gutter="0">
        <el-date-picker
            v-model="form.date1"
            type="daterange"
            start-placeholder="开始时间"
            end-placeholder="结束时间"
            :default-time="defaultTime"
        />
        &nbsp;&nbsp;
        <el-button type="primary">查询</el-button>
      </el-row>
    </div>
    <el-table :data="tableData" border style="width: 100%" height="100%">
      <el-table-column v-for="item in listName" prop="" :label="item" width="85"   >
        <el-checkbox checked/>
      </el-table-column>
      <el-table-column prop="serialNumber" label="自序" width="55" >
        <template v-slot="scope">
          <router-link :to="{path:'StandardBOMDetail'}" >{{scope.row.serialNumber}}</router-link>
        </template>
      </el-table-column>
      <el-table-column prop="2" label="客户编号" width="105" />
      <el-table-column prop="3" label="客户名称" width="105" />
      <el-table-column prop="4" label="产品编号" :show-overflow-tooltip='true' width="125" />
      <el-table-column prop="5" label="产品名称" :show-overflow-tooltip='true' width="150" />
      <el-table-column prop="6" label="玻璃长" width="75" />
      <el-table-column prop="7" label="玻璃宽" width="75" />
      <el-table-column prop="8" label="厚度" width="65" />
      <el-table-column prop="9" label="形状" width="65" />
      <el-table-column prop="10" label="备注" :show-overflow-tooltip='true' width="155" />
      <el-table-column prop="11" label="产品创建人" width="95" />
      <el-table-column prop="12" label="BOM创建人" width="105" />
      <el-table-column prop="13" label="审核员" width="85" />
    </el-table><!-- <h1>{{msg}}</h1> -->
  </div>
</template>
<style scoped>
#selectForm {
  width: 40%;
  height: 100%;
  text-align: center;
}
</style>
north-glass-erp/northglass-erp/src/views/pp/BOM/StandardBOMDetail.vue
New file
@@ -0,0 +1,135 @@
<script setup>
import {reactive, ref} from 'vue'
const value = ref('')
const options = [
  {
    value: 'Option1',
    label: 'Option1',
  },
  {
    value: 'Option2',
    label: 'Option2',
  },
  {
    value: 'Option3',
    label: 'Option3',
  },
]
const form = reactive({
  name: '1',
  region: '',
  date1: '',
  date2: '',
  delivery: false,
  type: [],
  resource: '',
  desc: '',
})
const tableData = [
  {
    1: '70020000000000000000000004',
    2: '预洗剂7600TRO-DS',
    3: '4',
    4: '制镜',
    5:'L',
    6:'0.001000',
    7:'ml',
    8:'四川',
  },
  {
    1: '70020000000000000000000004',
    2: '预洗剂7600TRO-DS',
    3: '4',
    4: '制镜',
    5:'L',
    6:'0.001000',
    7:'ml',
    8:'四川',
  },
  {
    1: '70020000000000000000000004',
    2: '预洗剂7600TRO-DS',
    3: '4',
    4: '制镜',
    5:'L',
    6:'0.001000',
    7:'ml',
    8:'四川',
  },
]
</script>
<template>
  <div>
    <div style="text-align: center">
      <el-select v-model="value" class="m-2" placeholder="产品种类">
        <el-option
            v-for="item in options"
            :key="item.value"
            :label="item.label"
            :value="item.value"
        />
      </el-select>
      &nbsp;
      <label>基数:</label>
      <el-input placeholder="基数" style="width: 100px" v-model="form.name">1</el-input>
      &nbsp;
      <el-button type="primary">添加一行</el-button>
      <el-button type="primary">减少一行</el-button>
      <el-button type="primary">保存</el-button>
      <div id="tab_div">
        <table class="tab_bfl" style="border: 1px solid black;">
          <tr>
            <td>领料工序</td>
            <td>切割</td>
            <td>磨边</td>
            <td>钢化</td>
          </tr>
          <tr>
            <td>报皮率%</td>
            <td>0</td>
            <td>0</td>
            <td>0</td>
          </tr>
        </table>
      </div>
    </div>
    <div>
      <el-table :data="tableData" border style="width: 100%" height="100%">
        <el-table-column prop="1" label="物料编码" :show-overflow-tooltip='true' width="250" />
        <el-table-column prop="2" label="物料名称" :show-overflow-tooltip='true' width="250" />
        <el-table-column prop="3" label="数量" width="105" />
        <el-table-column prop="4" label="领料工序"  width="155" />
        <el-table-column prop="5" label="主单位"  width="142" />
        <el-table-column prop="6" label="换算率" width="175" />
        <el-table-column prop="7" label="副单位" width="155" />
        <el-table-column prop="8" label="产地" width="115" />
      </el-table>
    </div>
  </div>
</template>
<style scoped>
#tab_div{
  text-align: center;
  margin: 0 auto;
  width: 50%;
}
.tab_bfl{
  text-align: center;
  width: 100%;
border-collapse: collapse;
}
.tab_bfl td{
  border: 1px solid black;
}
.tab_bfl tr{
  border: 1px;
  height: 30px;
}
</style>
north-glass-erp/northglass-erp/src/views/pp/Replenish/AddReplenish.vue
New file
@@ -0,0 +1,234 @@
<script setup>
import {reactive, ref} from 'vue'
import {ElTable} from "element-plus"
const form = reactive({
  lckh:'',
  xsdh:'',
})
const tableData = [
  {
    reportingWorkTime:'2021-01-01',
    salesOrderNo:'NG23010101',
    processCardNo:'NG23010101A01',
    entryName:'xxxx',
    productName:"xxxxxxxxx",
    reportingWorkNo:"BG2301010001",
    floorNumber:"D4-010-01",
    area:'23.11',
    reportingProcess:'钢化',
    qualityInspector:"张三",
    serialNumber:'1',
    singlePieceName: '6mm白玻平钢(外)',
    marking: '1',
    pieces: '(外)',
    processCardNumber: '11',
    width: '575',
    height:"2241",
    shape: '普形',
    upCompletedQuantity: '12',
    completedQuantity: '1',
    numberBroken:'2',
    reasonType: '机器',
    reasonDamage:'气泡超标',
    responsibilityProcess:'中空',
    responsibilityTeams:'中空一班',
    responsibilityPersonnel:'',
    responsibilityDevice:'中空3#线',
  },
  {
    reportingWorkTime:'2021-01-01',
    salesOrderNo:'NG23010101',
    processCardNo:'NG23010101A01',
    entryName:'xxxx',
    productName:"xxxxxxxxx",
    reportingWorkNo:"BG2301010001",
    floorNumber:"D4-010-01",
    area:'23.11',
    reportingProcess:'钢化',
    qualityInspector:"张三",
    serialNumber:'1',
    singlePieceName: '6mm白玻平钢(外)',
    marking: '1',
    pieces: '(外)',
    processCardNumber: '11',
    width: '575',
    height:"2241",
    shape: '普形',
    upCompletedQuantity: '12',
    completedQuantity: '1',
    numberBroken:'2',
    reasonType: '机器',
    reasonDamage:'气泡超标',
    responsibilityProcess:'中空',
    responsibilityTeams:'中空一班',
    responsibilityPersonnel:'',
    responsibilityDevice:'中空3#线',
  },
  {
    reportingWorkTime:'2021-01-01',
    salesOrderNo:'NG23010101',
    processCardNo:'NG23010101A01',
    entryName:'xxxx',
    productName:"xxxxxxxxx",
    reportingWorkNo:"BG2301010001",
    floorNumber:"D4-010-01",
    area:'23.11',
    reportingProcess:'钢化',
    qualityInspector:"张三",
    serialNumber:'1',
    singlePieceName: '6mm白玻平钢(外)',
    marking: '1',
    pieces: '(外)',
    processCardNumber: '11',
    width: '575',
    height:"2241",
    shape: '普形',
    upCompletedQuantity: '12',
    completedQuantity: '1',
    numberBroken:'2',
    reasonType: '机器',
    reasonDamage:'气泡超标',
    responsibilityProcess:'中空',
    responsibilityTeams:'中空一班',
    responsibilityPersonnel:'',
    responsibilityDevice:'中空3#线',
  },
  {
    reportingWorkTime:'2021-01-01',
    salesOrderNo:'NG23010101',
    processCardNo:'NG23010101A01',
    entryName:'xxxx',
    productName:"xxxxxxxxx",
    reportingWorkNo:"BG2301010001",
    floorNumber:"D4-010-01",
    area:'23.11',
    reportingProcess:'钢化',
    qualityInspector:"张三",
    serialNumber:'1',
    singlePieceName: '6mm白玻平钢(外)',
    marking: '1',
    pieces: '(外)',
    processCardNumber: '11',
    width: '575',
    height:"2241",
    shape: '普形',
    upCompletedQuantity: '12',
    completedQuantity: '1',
    numberBroken:'2',
    reasonType: '机器',
    reasonDamage:'气泡超标',
    responsibilityProcess:'中空',
    responsibilityTeams:'中空一班',
    responsibilityPersonnel:'',
    responsibilityDevice:'中空3#线',
  },
]
</script>
<template>
  <div>
<!--    <div id="head" style="width: 900px;">-->
<!--      <el-input placeholder="流程卡号" v-model="form.xsdh" style="width: 200px"/>-->
<!--      &nbsp;-->
<!--      <el-input placeholder="项目名称" v-model="form.lckh" style="width: 200px"/>-->
<!--      &nbsp;-->
<!--      <el-button type="primary">查询</el-button>-->
<!--    </div>-->
    <div>
      <el-button class="btn_bc" type="primary">保存</el-button>
      <el-table
          :data="tableData"
          style="width: 100%"
      >
        <el-table-column type="selection" width="55" />
        <el-table-column prop="reportingWorkTime" label="报工时间" width="155" >
        </el-table-column>
        <el-table-column sortable prop="salesOrderNo" label="销售单号" width="120" />
        <el-table-column sortable prop="processCardNo" label="流程卡号" width="130" />
        <el-table-column prop="entryName" label="项目名称" width="120" :show-overflow-tooltip='true'/>
        <el-table-column prop="productName" label="产品名称" width="120" :show-overflow-tooltip='true'/>
        <el-table-column sortable prop="reportingWorkNo" label="报工编号" width="120"/> >
        <el-table-column  prop="serialNumber" label="序号" width="60" />
        <el-table-column prop="singlePieceName" :show-overflow-tooltip='true' label="单片名称" width="120" />
        <el-table-column prop="floorNumber" label="楼层编号" width="120" />
        <el-table-column prop="marking" label="标记" width="60" />
        <el-table-column prop="pieces" label="片标记" width="70" />
        <el-table-column prop="processCardNumber" label="流程卡数量" width="95" />
        <el-table-column prop="width" label="宽" width="60" />
        <el-table-column prop="height" label="高" width="60" />
        <el-table-column prop="area" label="面积" width="65" />
        <el-table-column prop="shape" label="形状" :show-overflow-tooltip='true' width="60" />
        <el-table-column prop="numberBroken" label="次破数量" width="85" />
        <el-table-column prop="reasonType" label="次破类型" :show-overflow-tooltip='true' width="85" />
        <el-table-column prop="reasonDamage" label="次破原因" :show-overflow-tooltip='true' width="85" />
        <el-table-column prop="responsibilityDevice" label="责任设备" :show-overflow-tooltip='true' width="85" />
        <el-table-column prop="reportingProcess" label="报工工序" :show-overflow-tooltip='true' width="85" />
        <el-table-column prop="responsibilityProcess" label="责任工序" :show-overflow-tooltip='true' width="85" />
        <el-table-column prop="responsibilityTeams" label="责任班组" :show-overflow-tooltip='true' width="85" />
        <el-table-column prop="responsibilityPersonnel" 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>
.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>
north-glass-erp/northglass-erp/src/views/pp/Replenish/PrintReplenishFlowCard.vue
New file
@@ -0,0 +1,167 @@
<script setup>
import {ArrowLeftBold} from "@element-plus/icons-vue";
import {useRouter} from "vue-router";
import {reactive} from "vue";
const router = useRouter()
let flag = $ref(true)
function intoCreateProduct(){
  if(flag){
    router.push('/main/processCard/SelectPrintFlowCard')
  }else {
    router.push('/main/processCard/SelectPrintFlowCard')
  }
  flag=!flag
}
function openPrint() {
  this.$router.push('/page');
}
const form = reactive({
  name: '',
  region: '',
  date1: '',
  date2: '',
  delivery: false,
  type: [],
  resource: '',
  desc: '',
})
const tableData = [
  {
    salesOrderNo: 'NG231201',
    productionOrderNo:'NG231201A',
    processCard: 'NG231201A01',
    customerName:'西安高科幕墙门窗有限公司',
    entryName:'银隆广场',
    sliceMarking:'(外)',
    marking:'1',
    pieces:'16',
    area:'24.14',
    productName: '10mm超白UD60平钢(外)+12Ar(结)+10mm超白平钢(内)',
    singlePieceName: '10mm超白UD60平钢(外)',
    floorNumber: '16-BSGB05',
    divider: '普形',
    splittingTime: '2023-01-11',
    notes: '',
  },
  {
    salesOrderNo: 'NG231201',
    productionOrderNo:'NG231201A',
    processCard: 'NG231201A01',
    customerName:'西安高科幕墙门窗有限公司',
    entryName:'银隆广场',
    sliceMarking:'(内)',
    marking:'2',
    pieces:'16',
    area:'24.14',
    productName: '10mm超白UD60平钢(外)+12Ar(结)+10mm超白平钢(内)',
    singlePieceName: '10mm超白平钢(内)',
    floorNumber: '16-BSGB05',
    divider: '普形',
    splittingTime: '2023-01-11',
    notes: '',
  },
  {
    salesOrderNo: 'NG231201',
    productionOrderNo:'NG231201A',
    processCard: 'NG231201A02',
    customerName:'西安高科幕墙门窗有限公司',
    entryName:'银隆广场',
    sliceMarking:'(外)',
    marking:'1',
    pieces:'6',
    area:'24.14',
    productName: '10mm超白UD60平钢(外)+12Ar(结)+10mm超白平钢(内)',
    singlePieceName: '10mm超白UD60平钢(外)',
    floorNumber: '16-BSGB05',
    divider: '普形',
    splittingTime: '2023-01-11',
    notes: '',
  },
  {
    salesOrderNo: 'NG231201',
    productionOrderNo:'NG231201A',
    processCard: 'NG231201A02',
    customerName:'西安高科幕墙门窗有限公司',
    entryName:'银隆广场',
    sliceMarking:'(内)',
    marking:'2',
    pieces:'6',
    area:'24.14',
    productName: '10mm超白UD60平钢(外)+12Ar(结)+10mm超白平钢(内)',
    singlePieceName: '10mm超白平钢(内)',
    floorNumber: '16-BSGB05',
    divider: '普形',
    splittingTime: '2023-01-11',
    notes: '',
  },
]
</script>
<template>
  <div>
    <div class="header">
      <router-link to="/main/processCard/PrintProcess" target="_blank">打开新标签</router-link>
      <el-button type="primary">打印流程卡</el-button>
      <el-button type="primary">打印标签</el-button>
      &nbsp;&nbsp;
      <select class="stnw"  style="width: 100px" >
        <option label="室内面" value="option1"></option>
        <option label="室外面" value="option2"></option>
      </select>
      &nbsp;&nbsp;
      <select class="stnw"  style="width: 100px" >
        <option label="成品标签" value="option1"></option>
        <option label="单片标签" value="option2"></option>
      </select>
      &nbsp;&nbsp;
      <el-button type="primary">不可排版</el-button>
      <el-button type="primary">计划排版</el-button>
    </div>
    <el-table :data="tableData" border style="width: 100%" height="100%">
      <el-table-column type="selection" width="55" />
      <el-table-column sortable prop="salesOrderNo" label="销售单号" width="120" >
      </el-table-column>
      <el-table-column sortable prop="productionOrderNo" label="生产订单号" width="120" />
      <el-table-column sortable prop="processCard" label="流程卡号" width="120" />
      <el-table-column prop="customerName" label="客户名称" width="120" :show-overflow-tooltip='true'/>
      <el-table-column prop="entryName" label="项目名称" width="120" :show-overflow-tooltip='true'/>
      <el-table-column prop="sliceMarking" label="片标记" :show-overflow-tooltip='true' width="70" />
      <el-table-column prop="marking" label="标记" width="55" />
      <el-table-column prop="pieces" label="片数" width="65" />
      <el-table-column prop="area" label="面积" width="65" />
      <el-table-column prop="productName" label="产品名称" width="120" :show-overflow-tooltip='true'/>
      <el-table-column prop="singlePieceName" label="单片名称" width="120" :show-overflow-tooltip='true'/>
      <el-table-column prop="floorNumber" label="楼层编号" width="120" />
      <el-table-column prop="divider" label="分架员" width="75" />
      <el-table-column prop="splittingTime" label="分架时间" width="120" />
      <el-table-column prop="notes" label="备注" :show-overflow-tooltip='true' width="350" />
    </el-table><!-- <h1>{{msg}}</h1> -->
  </div>
</template>
<style scoped>
.common-layout{
  height: 100%;
}
.el-aside{
  height: 100%;
}
.el-main{
  height: 100%;
  text-align: center;
}
.stnw{
  height: 33px;
  width: 80px;
  background-color: #409eff;
  color: white;
  border: none;
  border-radius: 5px;
}
</style>
north-glass-erp/northglass-erp/src/views/pp/Replenish/Replenish.vue
New file
@@ -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>
north-glass-erp/northglass-erp/src/views/pp/Replenish/SelectReplenish.vue
New file
@@ -0,0 +1,258 @@
<script setup>
import {reactive, ref} from 'vue'
// do not use same name with ref
const form = reactive({
  lckh:'',
  xsdh:'',
})
const value = ref('')
const defaultTime = ref<[Date, Date]>([
  new Date(2000, 1, 1, 0, 0, 0),
  new Date(2000, 2, 1, 23, 59, 59),
])
const tableData = [
  {
    reportingWorkTime:'2021-01-01',
    salesOrderNo:'NG23010101',
    processCardNo:'NG23010101A01',
    entryName:'xxxx',
    productName:"xxxxxxxxx",
    reportingWorkNo:"BG2301010001",
    floorNumber:"D4-010-01",
    area:'23.11',
    reportingProcess:'钢化',
    qualityInspector:"张三",
    serialNumber:'1',
    singlePieceName: '6mm白玻平钢(外)',
    marking: '1',
    pieces: '(外)',
    processCardNumber: '11',
    width: '575',
    height:"2241",
    shape: '普形',
    upCompletedQuantity: '12',
    completedQuantity: '1',
    numberBroken:'2',
    availableUse:'',
    returnProcess:'',
    reasonType: '机器',
    reasonDamage:'气泡超标',
    available:'',
    reworkProcess:'',
    responsibilityProcess:'中空',
    responsibilityTeams:'中空一班',
    responsibilityPersonnel:'',
    responsibilityDevice:'中空3#线',
    completed:'',
    onceBroken:'',
  },
  {
    reportingWorkTime:'2021-01-01',
    salesOrderNo:'NG23010101',
    processCardNo:'NG23010101A01',
    entryName:'xxxx',
    productName:"xxxxxxxxx",
    reportingWorkNo:"BG2301010001",
    floorNumber:"D4-010-01",
    area:'23.11',
    reportingProcess:'钢化',
    qualityInspector:"张三",
    serialNumber:'1',
    singlePieceName: '6mm白玻平钢(外)',
    marking: '1',
    pieces: '(外)',
    processCardNumber: '11',
    width: '575',
    height:"2241",
    shape: '普形',
    upCompletedQuantity: '12',
    completedQuantity: '1',
    numberBroken:'2',
    availableUse:'',
    returnProcess:'',
    reasonType: '机器',
    reasonDamage:'气泡超标',
    available:'',
    reworkProcess:'',
    responsibilityProcess:'中空',
    responsibilityTeams:'中空一班',
    responsibilityPersonnel:'',
    responsibilityDevice:'中空3#线',
    completed:'',
    onceBroken:'',
  },
  {
    reportingWorkTime:'2021-01-01',
    salesOrderNo:'NG23010101',
    processCardNo:'NG23010101A01',
    entryName:'xxxx',
    productName:"xxxxxxxxx",
    reportingWorkNo:"BG2301010001",
    floorNumber:"D4-010-01",
    area:'23.11',
    reportingProcess:'钢化',
    qualityInspector:"张三",
    serialNumber:'1',
    singlePieceName: '6mm白玻平钢(外)',
    marking: '1',
    pieces: '(外)',
    processCardNumber: '11',
    width: '575',
    height:"2241",
    shape: '普形',
    upCompletedQuantity: '12',
    completedQuantity: '1',
    numberBroken:'2',
    availableUse:'',
    returnProcess:'',
    reasonType: '机器',
    reasonDamage:'气泡超标',
    available:'',
    reworkProcess:'',
    responsibilityProcess:'中空',
    responsibilityTeams:'中空一班',
    responsibilityPersonnel:'',
    responsibilityDevice:'中空3#线',
    completed:'',
    onceBroken:'',
  },
  {
    reportingWorkTime:'2021-01-01',
    salesOrderNo:'NG23010101',
    processCardNo:'NG23010101A01',
    entryName:'xxxx',
    productName:"xxxxxxxxx",
    reportingWorkNo:"BG2301010001",
    floorNumber:"D4-010-01",
    area:'23.11',
    reportingProcess:'钢化',
    qualityInspector:"张三",
    serialNumber:'1',
    singlePieceName: '6mm白玻平钢(外)',
    marking: '1',
    pieces: '(外)',
    processCardNumber: '11',
    width: '575',
    height:"2241",
    shape: '普形',
    upCompletedQuantity: '12',
    completedQuantity: '1',
    numberBroken:'2',
    availableUse:'',
    returnProcess:'',
    reasonType: '机器',
    reasonDamage:'气泡超标',
    available:'',
    reworkProcess:'',
    responsibilityProcess:'中空',
    responsibilityTeams:'中空一班',
    responsibilityPersonnel:'',
    responsibilityDevice:'中空3#线',
    completed:'',
    onceBroken:'',
  },
]
</script>
<template>
  <div>
    <div id="head" style="width: 900px;">
<!--      <el-input placeholder="流程卡号" v-model="form.xsdh" style="width: 200px"/>-->
<!--      &nbsp;-->
<!--      <el-input placeholder="项目名称" v-model="form.lckh" style="width: 200px"/>-->
<!--      &nbsp;-->
      <el-date-picker
          v-model="value"
          type="daterange"
          start-placeholder="报工开始时间"
          end-placeholder="结束时间"
          :default-time="defaultTime"
      />
      <el-button type="primary">查询</el-button>
    </div>
    <div>
      <el-table :data="tableData" border style="width: 100%" height="100%">
        <el-table-column fixed label="操作" width="60"  >
          <el-button link type="primary" size="small">删除</el-button>
        </el-table-column>
        <el-table-column prop="reportingWorkTime" label="报工时间" width="155" />
        <el-table-column sortable prop="salesOrderNo" label="销售单号" width="120" />
        <el-table-column sortable prop="processCardNo" label="流程卡号" width="130" />
        <el-table-column prop="entryName" label="项目名称" width="120" :show-overflow-tooltip='true'/>
        <el-table-column prop="productName" label="产品名称" width="120" :show-overflow-tooltip='true'/>
        <el-table-column sortable prop="reportingWorkNo" label="报工编号" width="120"/> >
        <el-table-column  prop="serialNumber" label="序号" width="60" />
        <el-table-column prop="singlePieceName" :show-overflow-tooltip='true' label="单片名称" width="120" />
        <el-table-column prop="floorNumber" label="楼层编号" width="120" />
        <el-table-column prop="marking" label="标记" width="60" />
        <el-table-column prop="pieces" label="片标记" width="70" />
        <el-table-column prop="processCardNumber" label="流程卡数量" width="95" />
        <el-table-column prop="width" label="宽" width="60" />
        <el-table-column prop="height" label="高" width="60" />
        <el-table-column prop="area" label="面积" width="65" />
        <el-table-column prop="shape" label="形状" :show-overflow-tooltip='true' width="60" />
        <el-table-column prop="numberBroken" label="次破数量" width="85" />
        <el-table-column prop="reasonType" label="次破类型" :show-overflow-tooltip='true' width="85" />
        <el-table-column prop="reasonDamage" label="次破原因" :show-overflow-tooltip='true' width="85" />
        <el-table-column prop="responsibilityDevice" label="责任设备" :show-overflow-tooltip='true' width="85" />
        <el-table-column prop="reportingProcess" label="报工工序" :show-overflow-tooltip='true' width="85" />
        <el-table-column prop="responsibilityProcess" label="责任工序" :show-overflow-tooltip='true' width="85" />
        <el-table-column prop="responsibilityTeams" label="责任班组" :show-overflow-tooltip='true' width="85" />
        <el-table-column prop="responsibilityPersonnel" 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>
.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>
north-glass-erp/northglass-erp/src/views/pp/machine/AddMachine.vue
New file
@@ -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>
north-glass-erp/northglass-erp/src/views/pp/machine/AddMaintenanceAndRepair.vue
New file
@@ -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>
north-glass-erp/northglass-erp/src/views/pp/machine/Machine.vue
New file
@@ -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>
north-glass-erp/northglass-erp/src/views/pp/machine/MaintenanceAndRepair.vue
New file
@@ -0,0 +1,111 @@
<script lang="ts" setup>
import {reactive, ref} from 'vue'
import {Search} from "@element-plus/icons-vue"
import {useRouter} from "vue-router"
const router = useRouter()
// do not use same name with ref
const value = ref('')
const options = [
  {
    value: 'Option1',
    label: 'Option1',
  },
  {
    value: 'Option2',
    label: 'Option2',
  },
  {
    value: 'Option3',
    label: 'Option3',
  },
]
const form = reactive({
  name: '',
  region: '',
  date1: '',
  date2: '',
  delivery: false,
  type: [],
  resource: '',
  desc: '',
})
const tableData = [
  {
    1: '钢化炉(22E)',
    2: '维修',
    3: '2022-03-16',
    4: '坏了',
    5:'',
    6:'',
    7:'2022-03-16',
    8:'2022-03-16',
    9:'钢化',
    10:'SSS',
    11:'112',
  },
  {
    1: '钢化炉(22E)',
    2: '保养',
    3: '',
    4: '',
    5:'2022-03-16',
    6:'保养',
    7:'2022-03-16',
    8:'2022-03-16',
    9:'钢化',
    10:'SSS',
    11:'112',
  },
]
</script>
<template>
  <div>
<!--    <div id="selectForm">-->
<!--      <el-row :gutter="0">-->
<!--        <el-select v-model="value" class="m-2" placeholder="所在工艺">-->
<!--          <el-option-->
<!--              v-for="item in options"-->
<!--              :key="item.value"-->
<!--              :label="item.label"-->
<!--              :value="item.value"-->
<!--          />-->
<!--        </el-select>-->
<!--        &nbsp;&nbsp;-->
<!--        <el-button type="primary">查询</el-button>-->
<!--      </el-row>-->
<!--    </div>-->
    <el-table :data="tableData" border style="width: 100%" height="100%">
      <el-table-column fixed label="操作" width="100"  >
        <el-button link type="primary" size="small">删除</el-button>
        <el-button link type="primary" size="small">编辑</el-button>
      </el-table-column>
      <el-table-column prop="1" label="设备名称" width="105" />
      <el-table-column prop="2" label="类型" width="65" />
      <el-table-column prop="3" label="故障日期" :show-overflow-tooltip='true' width="105" />
      <el-table-column prop="4" label="故障原因" :show-overflow-tooltip='true' width="135" />
      <el-table-column prop="5" label="保养日期" width="125" />
      <el-table-column prop="6" label="保养说明" width="125" />
      <el-table-column prop="7" label="维修/保养开始时间" width="155" />
      <el-table-column prop="8" label="维修/保养完成时间" width="150" />
      <el-table-column prop="9" label="所在工艺" width="85" />
      <el-table-column prop="10" label="维修/保养人员" :show-overflow-tooltip='true' width="125" />
      <el-table-column prop="11" label="费用" width="112" />
    </el-table><!-- <h1>{{msg}}</h1> -->
  </div>
</template>
<style scoped>
#selectForm {
  width: 40%;
  height: 100%;
  text-align: center;
}
</style>
north-glass-erp/northglass-erp/src/views/pp/machine/SelectMachine.vue
New file
@@ -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:'正常',
  },
  {
    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:'正常',
  },
  {
    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:'正常',
  },
]
</script>
<template>
  <div>
<!--    <div id="selectForm">-->
<!--      <el-row :gutter="0">-->
<!--        <el-select v-model="value" class="m-2" placeholder="所在工艺">-->
<!--          <el-option-->
<!--              v-for="item in options"-->
<!--              :key="item.value"-->
<!--              :label="item.label"-->
<!--              :value="item.value"-->
<!--          />-->
<!--        </el-select>-->
<!--        &nbsp;&nbsp;-->
<!--        <el-button type="primary">查询</el-button>-->
<!--      </el-row>-->
<!--    </div>-->
    <el-table :data="tableData" border style="width: 100%" height="100%">
      <el-table-column fixed label="操作" width="100"  >
        <el-button link type="primary" size="small">删除</el-button>
        <el-button link type="primary" size="small">编辑</el-button>
      </el-table-column>
      <el-table-column prop="1" label="设备编号" width="95" />
      <el-table-column prop="2" label="标准名称" width="105" />
      <el-table-column prop="3" label="设备名称" width="105" />
      <el-table-column prop="4" label="购买时间" :show-overflow-tooltip='true' width="115" />
      <el-table-column prop="5" label="安装时间" :show-overflow-tooltip='true' width="115" />
      <el-table-column prop="6" label="使用周期(年)" width="105" />
      <el-table-column prop="7" label="使用状态" width="85" />
      <el-table-column prop="8" label="维修次数" width="85" />
      <el-table-column prop="9" label="保养次数" width="85" />
      <el-table-column prop="10" label="最后维修时间" :show-overflow-tooltip='true' width="115" />
      <el-table-column prop="11" label="最后保养时间" width="115" />
      <el-table-column prop="12" label="维修费用" width="105" />
      <el-table-column prop="13" label="保养费用" width="85" />
      <el-table-column prop="14" label="所在工艺" width="85" />
      <el-table-column prop="15" label="作废状态" width="85" />
    </el-table><!-- <h1>{{msg}}</h1> -->
  </div>
</template>
<style scoped>
#selectForm {
  width: 40%;
  height: 100%;
  text-align: center;
}
</style>
north-glass-erp/northglass-erp/src/views/pp/processCard/AddProcessCard.vue
New file
@@ -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>
north-glass-erp/northglass-erp/src/views/pp/processCard/PrintFlowCard.vue
New file
@@ -0,0 +1,170 @@
<script setup>
import {ArrowLeftBold} from "@element-plus/icons-vue";
import {useRouter} from "vue-router";
import {reactive} from "vue";
const router = useRouter()
let flag = $ref(true)
function intoCreateProduct(){
  if(flag){
    router.push('/main/processCard/SelectPrintFlowCard')
  }else {
    router.push('/main/processCard/SelectPrintFlowCard')
  }
  flag=!flag
}
function openPrint() {
  this.$router.push('/page');
}
const form = reactive({
  name: '',
  region: '',
  date1: '',
  date2: '',
  delivery: false,
  type: [],
  resource: '',
  desc: '',
})
const tableData = [
  {
    salesOrderNo: 'NG231201',
    productionOrderNo:'NG231201A',
    processCard: 'NG231201A01',
    customerName:'西安高科幕墙门窗有限公司',
    entryName:'银隆广场',
    sliceMarking:'(外)',
    marking:'1',
    pieces:'16',
    area:'24.14',
    productName: '10mm超白UD60平钢(外)+12Ar(结)+10mm超白平钢(内)',
    singlePieceName: '10mm超白UD60平钢(外)',
    floorNumber: '16-BSGB05',
    divider: '普形',
    splittingTime: '2023-01-11',
    notes: '',
  },
  {
    salesOrderNo: 'NG231201',
    productionOrderNo:'NG231201A',
    processCard: 'NG231201A01',
    customerName:'西安高科幕墙门窗有限公司',
    entryName:'银隆广场',
    sliceMarking:'(内)',
    marking:'2',
    pieces:'16',
    area:'24.14',
    productName: '10mm超白UD60平钢(外)+12Ar(结)+10mm超白平钢(内)',
    singlePieceName: '10mm超白平钢(内)',
    floorNumber: '16-BSGB05',
    divider: '普形',
    splittingTime: '2023-01-11',
    notes: '',
  },
  {
    salesOrderNo: 'NG231201',
    productionOrderNo:'NG231201A',
    processCard: 'NG231201A02',
    customerName:'西安高科幕墙门窗有限公司',
    entryName:'银隆广场',
    sliceMarking:'(外)',
    marking:'1',
    pieces:'6',
    area:'24.14',
    productName: '10mm超白UD60平钢(外)+12Ar(结)+10mm超白平钢(内)',
    singlePieceName: '10mm超白UD60平钢(外)',
    floorNumber: '16-BSGB05',
    divider: '普形',
    splittingTime: '2023-01-11',
    notes: '',
  },
  {
    salesOrderNo: 'NG231201',
    productionOrderNo:'NG231201A',
    processCard: 'NG231201A02',
    customerName:'西安高科幕墙门窗有限公司',
    entryName:'银隆广场',
    sliceMarking:'(内)',
    marking:'2',
    pieces:'6',
    area:'24.14',
      productName: '10mm超白UD60平钢(外)+12Ar(结)+10mm超白平钢(内)',
    singlePieceName: '10mm超白平钢(内)',
    floorNumber: '16-BSGB05',
    divider: '普形',
    splittingTime: '2023-01-11',
    notes: '',
  },
]
</script>
<template>
  <div>
    <div class="header">
<!--      <el-button-->
<!--          style="float: left"-->
<!--          @click="intoCreateProduct"-->
<!--          id="searchButton1"-->
<!--          type="primary"-->
<!--          :icon="ArrowLeftBold"-->
<!--          round >-->
<!--        {{flag?'返回':'返回'}}-->
<!--      </el-button>-->
      <router-link to="/main/processCard/PrintProcess" target="_blank">打开新标签</router-link>
      <el-button type="primary">打印流程卡</el-button>
      <el-button type="primary">打印标签</el-button>
      &nbsp;&nbsp;
      <select class="stnw"  style="width: 100px" >
        <option label="室内面" value="option1"></option>
        <option label="室外面" value="option2"></option>
      </select>
      <select class="stnw"  style="width: 100px" >
        <option label="成品标签" value="option1"></option>
        <option label="单片标签" value="option2"></option>
      </select>
    </div>
    <el-table :data="tableData" border style="width: 100%" height="100%">
      <el-table-column sortable prop="salesOrderNo" label="销售单号" width="120" />
      <el-table-column sortable prop="productionOrderNo" label="生产订单号" width="120" />
      <el-table-column sortable prop="processCard" label="流程卡号" width="120" />
      <el-table-column prop="customerName" label="客户名称" width="120" :show-overflow-tooltip='true'/>
      <el-table-column prop="entryName" label="项目名称" width="120" :show-overflow-tooltip='true'/>
      <el-table-column prop="sliceMarking" label="片标记" :show-overflow-tooltip='true' width="70" />
      <el-table-column prop="marking" label="标记" width="55" />
      <el-table-column prop="pieces" label="片数" width="65" />
      <el-table-column prop="area" label="面积" width="65" />
      <el-table-column prop="productName" label="产品名称" width="120" :show-overflow-tooltip='true'/>
      <el-table-column prop="singlePieceName" label="单片名称" width="120" :show-overflow-tooltip='true'/>
      <el-table-column prop="floorNumber" label="楼层编号" width="120" />
      <el-table-column prop="divider" label="分架员" width="75" />
      <el-table-column prop="splittingTime" label="分架时间" width="120" />
      <el-table-column prop="notes" label="备注" :show-overflow-tooltip='true' width="350" />
    </el-table><!-- <h1>{{msg}}</h1> -->
  </div>
</template>
<style scoped>
.common-layout{
  height: 100%;
}
.el-aside{
  height: 100%;
}
.el-main{
  height: 100%;
  text-align: center;
}
.stnw{
  height: 33px;
  width: 80px;
  background-color: #409eff;
  color: white;
  border: none;
  border-radius: 5px;
}
</style>
north-glass-erp/northglass-erp/src/views/pp/processCard/PrintProcess.vue
New file
@@ -0,0 +1,954 @@
<script setup>
</script>
<template>
  <div class="shu" style="height:0px;"></div>
  <div id="big" class="big">
    <div id="content">
      <table id="tab" border="1">
        <thead>
        <tr>
          <td colspan="22">
            <div class="bj">1</div>
            <h1>洛阳北方玻璃技术股份有限公司</h1>
            <h1>生产流程卡</h1>
            <div id="top">
              &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span>包装方式:铁架</span><span
                style="float: right;position: relative;right: 5px;">流程卡号:<label class="liuchengka"
                                                                                    for="">NG23120401A01</label>/1共2架</span></div>
          </td>
        </tr>
        <tr style="height:25px;">
          <td style="min-width:70px;">客户名称:</td>
          <td style="min-width:200px;">钢化设备事业部</td>
          <td style="min-width:200px;" colspan="2">项目名称:钢化设备事业部(23-12-1-01)</td>
          <td style="min-width:75px;">工艺流程:</td>
          <td style="min-width:550px;" colspan="17">切割-&gt;磨边-&gt;打孔-&gt;钢化-&gt;包装</td>
        </tr>
        <tr style="height:25px;">
          <td>磨&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;边:</td>
          <td>精抛</td>
          <td colspan="2" style="word-wrap: break-word;">单片名称:<span class="dpmc">5mm欧洲灰平钢</span></td>
          <td>成品名称:</td>
          <td class="chengpinmingcheng" colspan="17" style="word-wrap: break-word;">5mm欧洲灰平钢</td>
        </tr>
        <tr>
          <td colspan="22">
            <table border="1" style="border-collapse: collapse;" frame="below">
              <tbody>
              <tr>
                <td rowspan="2" style="min-width:70px;">序号</td>
                <td rowspan="2" style="min-width:200px;">编号</td>
                <td rowspan="2" style="min-width:100px;">宽(弧长)*高</td>
                <td rowspan="2" style="min-width:49px;">数量</td>
                <td rowspan="2" style="min-width:49px;">面积</td>
                <td rowspan="2" style="min-width:49px;">周长</td>
                <td rowspan="2" style="min-width:73px;">半径</td>
                <td rowspan="2" style="min-width:73px;">备注</td>
                <td style="min-width:59px;" colspan="2">切割</td>
                <td style="min-width:59px;" colspan="2">磨边</td>
                <td style="min-width:59px;" colspan="2">打孔</td>
                <td style="min-width:59px;" colspan="2">钢化</td>
                <td style="min-width:59px;" colspan="2">包装</td>
                <td style="min-width:59px;" colspan="2"></td>
                <td style="min-width:59px;" colspan="2"></td>
                <td style="min-width:59px;" colspan="2"></td>
              </tr>
              <tr>
                <td>正品</td>
                <td>次品</td>
                <td>正品</td>
                <td>次品</td>
                <td>正品</td>
                <td>次品</td>
                <td>正品</td>
                <td>次品</td>
                <td>正品</td>
                <td>次品</td>
                <td>正品</td>
                <td>次品</td>
                <td>正品</td>
                <td>次品</td>
                <td>正品</td>
                <td>次品</td>
              </tr>
              </tbody>
            </table>
          </td>
        </tr>
        </thead>
        <tbody>
        <tr>
          <td colspan="22">
            <table class="tab" border="1" frame="below">
              <tbody>
              <tr class="tr">
                <td style="min-width:70px;height:35.5px;" class="tab_td1">2</td>
                <td style="min-width:200px;height:35.5px;" class="tab_td2">01-1视窗玻璃ACB50.10.02-003</td>
                <td style="min-width:100px;height:35.5px;" class="kg"><span class="kuan">1698</span>*339</td>
                <td style="min-width:49px;height:35.5px;" class="sl">2</td>
                <td style="min-width:49px;height:35.5px;" class="mj">1.15</td>
                <td style="min-width:49px;height:35.5px;">8.15</td>
                <td style="min-width:73px;height:35.5px;" class="tab_td3 banjin"></td>
                <td style="min-width:73px;height:35.5px;" class="tab_td3">见图A,</td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td class="xh" style="display:none;">1</td>
              </tr>
              <tr class="tr">
                <td style="min-width:70px;height:35.5px;" class="tab_td1">1</td>
                <td style="min-width:200px;height:35.5px;" class="tab_td2">01-1视窗玻璃ACB50.10.01-003</td>
                <td style="min-width:100px;height:35.5px;" class="kg"><span class="kuan">1428</span>*339</td>
                <td style="min-width:49px;height:35.5px;" class="sl">3</td>
                <td style="min-width:49px;height:35.5px;" class="mj">1.45</td>
                <td style="min-width:49px;height:35.5px;">10.6</td>
                <td style="min-width:73px;height:35.5px;" class="tab_td3 banjin"></td>
                <td style="min-width:73px;height:35.5px;" class="tab_td3">见图A,</td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td class="xh" style="display:none;">1</td>
              </tr>
              <tr class="tr">
                <td style="min-width:70px;height:35.5px;" class="tab_td1">3</td>
                <td style="min-width:200px;height:35.5px;" class="tab_td2">01-2视窗玻璃ACB50.10.01-003</td>
                <td style="min-width:100px;height:35.5px;" class="kg"><span class="kuan">1428</span>*339</td>
                <td style="min-width:49px;height:35.5px;" class="sl">3</td>
                <td style="min-width:49px;height:35.5px;" class="mj">1.45</td>
                <td style="min-width:49px;height:35.5px;">10.6</td>
                <td style="min-width:73px;height:35.5px;" class="tab_td3 banjin"></td>
                <td style="min-width:73px;height:35.5px;" class="tab_td3">见图A,</td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td class="xh" style="display:none;">1</td>
              </tr>
              <tr class="tr">
                <td style="min-width:70px;height:35.5px;" class="tab_td1">5</td>
                <td style="min-width:200px;height:35.5px;" class="tab_td2">01-3视窗玻璃ACB50.10.01-003</td>
                <td style="min-width:100px;height:35.5px;" class="kg"><span class="kuan">1428</span>*339</td>
                <td style="min-width:49px;height:35.5px;" class="sl">3</td>
                <td style="min-width:49px;height:35.5px;" class="mj">1.45</td>
                <td style="min-width:49px;height:35.5px;">10.6</td>
                <td style="min-width:73px;height:35.5px;" class="tab_td3 banjin"></td>
                <td style="min-width:73px;height:35.5px;" class="tab_td3">见图A,</td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td class="xh" style="display:none;">1</td>
              </tr>
              <tr class="tr">
                <td style="min-width:70px;height:35.5px;" class="tab_td1">4</td>
                <td style="min-width:200px;height:35.5px;" class="tab_td2">01-2视窗玻璃ACB50.10.03-003</td>
                <td style="min-width:100px;height:35.5px;" class="kg"><span class="kuan">1338</span>*339</td>
                <td style="min-width:49px;height:35.5px;" class="sl">2</td>
                <td style="min-width:49px;height:35.5px;" class="mj">0.91</td>
                <td style="min-width:49px;height:35.5px;">6.71</td>
                <td style="min-width:73px;height:35.5px;" class="tab_td3 banjin"></td>
                <td style="min-width:73px;height:35.5px;" class="tab_td3">见图A,</td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td class="xh" style="display:none;">1</td>
              </tr>
              <tr class="tr">
                <td style="min-width:70px;height:35.5px;" class="tab_td1">6</td>
                <td style="min-width:200px;height:35.5px;" class="tab_td2">01-3视窗玻璃ACB50.10.03-003</td>
                <td style="min-width:100px;height:35.5px;" class="kg"><span class="kuan">1338</span>*339</td>
                <td style="min-width:49px;height:35.5px;" class="sl">2</td>
                <td style="min-width:49px;height:35.5px;" class="mj">0.91</td>
                <td style="min-width:49px;height:35.5px;">6.71</td>
                <td style="min-width:73px;height:35.5px;" class="tab_td3 banjin"></td>
                <td style="min-width:73px;height:35.5px;" class="tab_td3">见图A,</td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td class="xh" style="display:none;">1</td>
              </tr>
              </tbody>
            </table>
          </td>
        </tr>
        </tbody>
        <tfoot>
        <tr style="height: 20px;line-height: 20px;">
          <td colspan="22">数量:<label class="zsl" for="">15片</label>&nbsp;&nbsp;&nbsp;重量:<label class="zzl"
                                                                                                    for="">91.50kg</label>&nbsp;&nbsp;&nbsp;面积:<label class="zmj" for="">7.32m²</label></td>
        </tr>
        <tr>
          <td width="50%" style="word-wrap: break-word;;" colspan="5" rowspan="7"><textarea
              style="width: 100%; height: 90%; overflow: hidden; border: 0px;font-size:12px;">1)按企标。
2)各工序:成品玻璃贴编号及尺寸标签。
3)磨边:此单宽,高尺寸公差均为(0~-1)。
4)钢化:北玻商标,位置如图。
</textarea></td>
        </tr>
        <tr>
          <td width="70px" height="23px;">完工签名</td>
          <td width="56px;" height="23px;" colspan="2"></td>
          <td width="56px;" height="23px;" colspan="2"></td>
          <td width="56px;" height="23px;" colspan="2"></td>
          <td width="56px;" height="23px;" colspan="2"></td>
          <td width="56px;" height="23px;" colspan="2"></td>
          <td width="56px;" height="23px;" colspan="2"></td>
          <td width="56px;" height="23px;" colspan="2"></td>
          <td width="56px;" height="23px;" colspan="2"></td>
        </tr>
        <tr>
          <td>接收签名</td>
          <td colspan="2"></td>
          <td colspan="2"></td>
          <td colspan="2"></td>
          <td colspan="2"></td>
          <td colspan="2"></td>
          <td colspan="2"></td>
          <td colspan="2"></td>
          <td colspan="2"></td>
        </tr>
        <tr>
          <td>生产日期</td>
          <td colspan="2"></td>
          <td colspan="2"></td>
          <td colspan="2"></td>
          <td colspan="2"></td>
          <td colspan="2"></td>
          <td colspan="2"></td>
          <td colspan="2"></td>
          <td colspan="2"></td>
        </tr>
        <tr>
          <td>质检签名</td>
          <td colspan="2"></td>
          <td colspan="2"></td>
          <td colspan="2"></td>
          <td colspan="2"></td>
          <td colspan="2"></td>
          <td colspan="2"></td>
          <td colspan="2"></td>
          <td colspan="2"></td>
        </tr>
        <tr>
          <td>架子编号</td>
          <td colspan="2"></td>
          <td colspan="2"></td>
          <td colspan="2"></td>
          <td colspan="2"></td>
          <td colspan="2"></td>
          <td colspan="2"></td>
          <td colspan="2"></td>
          <td colspan="2"></td>
        </tr>
        <tr height="65px">
          <td colspan="22"><span id="qrcode1" class="qr" title="NG23120401A01/1"><canvas width="60" height="60"
                                                                                         style="display: none;"></canvas><img alt="Scan me!"
                                                                                                                              src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAAAAXNSR0IArs4c6QAAAulJREFUaEPtmuFywyAMg5P3f+jsmjU7cG1/AtLrErqfLSwIW5bsdF2WZVs6/rbtd9u6rtXu6PNj0fF9ttce53gG/W8FxuO0cwIubz67KXvbx9roc/X7MuJq9rSeeX/GEeHWzXb9ZQFbTlrutQKj9V5kVQ4Tp73vXyL8Bfy8bntbrbfrrScaqfVCDZLLYXXztICJby0VX+G7Us2junNKhC8PmNwKRSGiROa0IomzZ4nqiHrmU3XYGozoEJ61/AhguiX1tiPfm1VpdQ8VSgXDaV6aZOvfAN5IDJVrc7omcVu1rNWu9jxjnR6w2ntSR6PIFVX8qBBGSUnObK/SNsK3B2zbwxYdLV2Pp7NllJVotl62zQAl6+RuKQIUjXiUlKY15Ou7AB8prWph5lO9qpm5o955GHE10+s/Dk8HmNKD5JpSu4fDZFeJsx4l5Cp9G8DREI/4pVrJKHPKCk8emZqLlrOEU8vbAlaNB/nc1qL3iPAZ/W35fyKZq/zAdIB7ORzpMfGpvO1RbipDBusGuzn8Bfx8i3iZCFMzTemn7i+rP8lRa0MimRv1dentAKsS0WrcM4dGdjTKmpEWNmwPe6cK6sW19NKKvqrVH2daquMiDlMj4B2YOKmanWoWTkO82wEm43FWsfIiTO1dL4ezbEPjcTvAdsRDsysyFtQ3e7ev0qaHsy/WcjrANKZVU5pckxd5VYdJd2mwWFXp6QCTLJG+Eq+yEQ9VYdXEUKaU36PxuB1gtXmwwMl6Eq+UEU9v9c6s6PALcfK5WTGjlH0rYFU/Rznr9cMRz4mbkT/PLnL4x6Vqu5hZy48CjjSPHFbrjMtrD6M6oeowucT9maTDKhB1XWUCzK/pLwGYtDS69cxTUzapLwW8Zw9HeDrAxPmokpY6TNJGHkCdjLyFw0rhoDSnIkUpLRmPXh0eSWnKDlXyIm8gcTgCEGnlZQET0F4eZfyi1KXUVw1LefbTvLSaftXDQYe/gIM0JA6X234ACjSUFgdqRbsAAAAASUVORK5CYII="
                                                                                                                              style="display: block;"><span class="ma">NG23120401A01/1</span></span></td>
        </tr>
        </tfoot>
      </table>
    </div>
  </div>
  <div class="shu" style="height:0px;"></div>
  <div id="big" class="big">
    <div id="content">
      <table id="tab" border="1">
        <thead>
        <tr>
          <td colspan="22">
            <div class="bj">1</div>
            <h1>洛阳北方玻璃技术股份有限公司</h1>
            <h1>生产流程卡</h1>
            <div id="top">
              &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span>包装方式:铁架</span><span
                style="float: right;position: relative;right: 5px;">流程卡号:<label class="liuchengka"
                                                                                    for="">NG23120401B02</label>/1共2架</span></div>
          </td>
        </tr>
        <tr style="height:25px;">
          <td style="min-width:70px;">客户名称:</td>
          <td style="min-width:200px;">钢化设备事业部</td>
          <td style="min-width:200px;" colspan="2">项目名称:钢化设备事业部(23-12-1-01)</td>
          <td style="min-width:75px;">工艺流程:</td>
          <td style="min-width:550px;" colspan="17">切割-&gt;磨边-&gt;钢化-&gt;包装</td>
        </tr>
        <tr style="height:25px;">
          <td>磨&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;边:</td>
          <td>精抛</td>
          <td colspan="2" style="word-wrap: break-word;">单片名称:<span class="dpmc">5mm欧洲灰平钢</span></td>
          <td>成品名称:</td>
          <td class="chengpinmingcheng" colspan="17" style="word-wrap: break-word;">5mm欧洲灰平钢</td>
        </tr>
        <tr>
          <td colspan="22">
            <table border="1" style="border-collapse: collapse;" frame="below">
              <tbody>
              <tr>
                <td rowspan="2" style="min-width:70px;">序号</td>
                <td rowspan="2" style="min-width:200px;">编号</td>
                <td rowspan="2" style="min-width:100px;">宽(弧长)*高</td>
                <td rowspan="2" style="min-width:49px;">数量</td>
                <td rowspan="2" style="min-width:49px;">面积</td>
                <td rowspan="2" style="min-width:49px;">周长</td>
                <td rowspan="2" style="min-width:73px;">半径</td>
                <td rowspan="2" style="min-width:73px;">备注</td>
                <td style="min-width:59px;" colspan="2">切割</td>
                <td style="min-width:59px;" colspan="2">磨边</td>
                <td style="min-width:59px;" colspan="2">钢化</td>
                <td style="min-width:59px;" colspan="2">包装</td>
                <td style="min-width:59px;" colspan="2"></td>
                <td style="min-width:59px;" colspan="2"></td>
                <td style="min-width:59px;" colspan="2"></td>
                <td style="min-width:59px;" colspan="2"></td>
              </tr>
              <tr>
                <td>正品</td>
                <td>次品</td>
                <td>正品</td>
                <td>次品</td>
                <td>正品</td>
                <td>次品</td>
                <td>正品</td>
                <td>次品</td>
                <td>正品</td>
                <td>次品</td>
                <td>正品</td>
                <td>次品</td>
                <td>正品</td>
                <td>次品</td>
                <td>正品</td>
                <td>次品</td>
              </tr>
              </tbody>
            </table>
          </td>
        </tr>
        </thead>
        <tbody>
        <tr>
          <td colspan="22">
            <table class="tab" border="1" frame="below">
              <tbody>
              <tr class="tr">
                <td style="min-width:70px;height:35.5px;" class="tab_td1">11</td>
                <td style="min-width:200px;height:35.5px;" class="tab_td2">01-1钢化5</td>
                <td style="min-width:100px;height:35.5px;" class="kg"><span class="kuan">1852</span>*143</td>
                <td style="min-width:49px;height:35.5px;" class="sl">2</td>
                <td style="min-width:49px;height:35.5px;" class="mj">0.53</td>
                <td style="min-width:49px;height:35.5px;">7.98</td>
                <td style="min-width:73px;height:35.5px;" class="tab_td3 banjin"></td>
                <td style="min-width:73px;height:35.5px;" class="tab_td3">不打商标,</td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td class="xh" style="display:none;">1</td>
              </tr>
              <tr class="tr">
                <td style="min-width:70px;height:35.5px;" class="tab_td1">9</td>
                <td style="min-width:200px;height:35.5px;" class="tab_td2">01-1钢化3</td>
                <td style="min-width:100px;height:35.5px;" class="kg"><span class="kuan">1835</span>*143</td>
                <td style="min-width:49px;height:35.5px;" class="sl">6</td>
                <td style="min-width:49px;height:35.5px;" class="mj">1.57</td>
                <td style="min-width:49px;height:35.5px;">23.74</td>
                <td style="min-width:73px;height:35.5px;" class="tab_td3 banjin"></td>
                <td style="min-width:73px;height:35.5px;" class="tab_td3">不打商标,</td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td class="xh" style="display:none;">1</td>
              </tr>
              <tr class="tr">
                <td style="min-width:70px;height:35.5px;" class="tab_td1">14</td>
                <td style="min-width:200px;height:35.5px;" class="tab_td2">01-2钢化3</td>
                <td style="min-width:100px;height:35.5px;" class="kg"><span class="kuan">1835</span>*143</td>
                <td style="min-width:49px;height:35.5px;" class="sl">4</td>
                <td style="min-width:49px;height:35.5px;" class="mj">1.05</td>
                <td style="min-width:49px;height:35.5px;">15.82</td>
                <td style="min-width:73px;height:35.5px;" class="tab_td3 banjin"></td>
                <td style="min-width:73px;height:35.5px;" class="tab_td3">不打商标,</td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td class="xh" style="display:none;">1</td>
              </tr>
              <tr class="tr">
                <td style="min-width:70px;height:35.5px;" class="tab_td1">19</td>
                <td style="min-width:200px;height:35.5px;" class="tab_td2">01-3钢化3</td>
                <td style="min-width:100px;height:35.5px;" class="kg"><span class="kuan">1835</span>*143</td>
                <td style="min-width:49px;height:35.5px;" class="sl">6</td>
                <td style="min-width:49px;height:35.5px;" class="mj">1.57</td>
                <td style="min-width:49px;height:35.5px;">23.74</td>
                <td style="min-width:73px;height:35.5px;" class="tab_td3 banjin"></td>
                <td style="min-width:73px;height:35.5px;" class="tab_td3">不打商标,</td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td class="xh" style="display:none;">1</td>
              </tr>
              <tr class="tr">
                <td style="min-width:70px;height:35.5px;" class="tab_td1">13</td>
                <td style="min-width:200px;height:35.5px;" class="tab_td2">01-2钢化2</td>
                <td style="min-width:100px;height:35.5px;" class="kg"><span class="kuan">1732</span>*143</td>
                <td style="min-width:49px;height:35.5px;" class="sl">2</td>
                <td style="min-width:49px;height:35.5px;" class="mj">0.5</td>
                <td style="min-width:49px;height:35.5px;">7.5</td>
                <td style="min-width:73px;height:35.5px;" class="tab_td3 banjin"></td>
                <td style="min-width:73px;height:35.5px;" class="tab_td3">不打商标,</td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td class="xh" style="display:none;">1</td>
              </tr>
              <tr class="tr">
                <td style="min-width:70px;height:35.5px;" class="tab_td1">12</td>
                <td style="min-width:200px;height:35.5px;" class="tab_td2">01-2钢化1</td>
                <td style="min-width:100px;height:35.5px;" class="kg"><span class="kuan">1692</span>*143</td>
                <td style="min-width:49px;height:35.5px;" class="sl">2</td>
                <td style="min-width:49px;height:35.5px;" class="mj">0.48</td>
                <td style="min-width:49px;height:35.5px;">7.34</td>
                <td style="min-width:73px;height:35.5px;" class="tab_td3 banjin"></td>
                <td style="min-width:73px;height:35.5px;" class="tab_td3">不打商标,</td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td class="xh" style="display:none;">1</td>
              </tr>
              <tr class="tr">
                <td style="min-width:70px;height:35.5px;" class="tab_td1">16</td>
                <td style="min-width:200px;height:35.5px;" class="tab_td2">01-2钢化5</td>
                <td style="min-width:100px;height:35.5px;" class="kg"><span class="kuan">1492</span>*143</td>
                <td style="min-width:49px;height:35.5px;" class="sl">2</td>
                <td style="min-width:49px;height:35.5px;" class="mj">0.43</td>
                <td style="min-width:49px;height:35.5px;">6.54</td>
                <td style="min-width:73px;height:35.5px;" class="tab_td3 banjin"></td>
                <td style="min-width:73px;height:35.5px;" class="tab_td3">不打商标,</td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td class="xh" style="display:none;">1</td>
              </tr>
              <tr class="tr">
                <td style="min-width:70px;height:35.5px;" class="tab_td1">21</td>
                <td style="min-width:200px;height:35.5px;" class="tab_td2">01-3钢化5</td>
                <td style="min-width:100px;height:35.5px;" class="kg"><span class="kuan">1492</span>*143</td>
                <td style="min-width:49px;height:35.5px;" class="sl">2</td>
                <td style="min-width:49px;height:35.5px;" class="mj">0.43</td>
                <td style="min-width:49px;height:35.5px;">6.54</td>
                <td style="min-width:73px;height:35.5px;" class="tab_td3 banjin"></td>
                <td style="min-width:73px;height:35.5px;" class="tab_td3">不打商标,</td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td class="xh" style="display:none;">1</td>
              </tr>
              <tr class="tr">
                <td style="min-width:70px;height:35.5px;" class="tab_td1">10</td>
                <td style="min-width:200px;height:35.5px;" class="tab_td2">01-1钢化4</td>
                <td style="min-width:100px;height:35.5px;" class="kg"><span class="kuan">1435</span>*143</td>
                <td style="min-width:49px;height:35.5px;" class="sl">3</td>
                <td style="min-width:49px;height:35.5px;" class="mj">0.62</td>
                <td style="min-width:49px;height:35.5px;">9.47</td>
                <td style="min-width:73px;height:35.5px;" class="tab_td3 banjin"></td>
                <td style="min-width:73px;height:35.5px;" class="tab_td3">不打商标,</td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td class="xh" style="display:none;">1</td>
              </tr>
              <tr class="tr">
                <td style="min-width:70px;height:35.5px;" class="tab_td1">15</td>
                <td style="min-width:200px;height:35.5px;" class="tab_td2">01-2钢化4</td>
                <td style="min-width:100px;height:35.5px;" class="kg"><span class="kuan">1435</span>*143</td>
                <td style="min-width:49px;height:35.5px;" class="sl">3</td>
                <td style="min-width:49px;height:35.5px;" class="mj">0.62</td>
                <td style="min-width:49px;height:35.5px;">9.47</td>
                <td style="min-width:73px;height:35.5px;" class="tab_td3 banjin"></td>
                <td style="min-width:73px;height:35.5px;" class="tab_td3">不打商标,</td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td class="xh" style="display:none;">1</td>
              </tr>
              <tr class="tr">
                <td style="min-width:70px;height:35.5px;" class="tab_td1">20</td>
                <td style="min-width:200px;height:35.5px;" class="tab_td2">01-3钢化4</td>
                <td style="min-width:100px;height:35.5px;" class="kg"><span class="kuan">1435</span>*143</td>
                <td style="min-width:49px;height:35.5px;" class="sl">3</td>
                <td style="min-width:49px;height:35.5px;" class="mj">0.62</td>
                <td style="min-width:49px;height:35.5px;">9.47</td>
                <td style="min-width:73px;height:35.5px;" class="tab_td3 banjin"></td>
                <td style="min-width:73px;height:35.5px;" class="tab_td3">不打商标,</td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td class="xh" style="display:none;">1</td>
              </tr>
              <tr class="tr">
                <td style="min-width:70px;height:35.5px;" class="tab_td1">8</td>
                <td style="min-width:200px;height:35.5px;" class="tab_td2">01-1钢化2</td>
                <td style="min-width:100px;height:35.5px;" class="kg"><span class="kuan">1387</span>*143</td>
                <td style="min-width:49px;height:35.5px;" class="sl">2</td>
                <td style="min-width:49px;height:35.5px;" class="mj">0.4</td>
                <td style="min-width:49px;height:35.5px;">6.12</td>
                <td style="min-width:73px;height:35.5px;" class="tab_td3 banjin"></td>
                <td style="min-width:73px;height:35.5px;" class="tab_td3">不打商标,</td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td class="xh" style="display:none;">1</td>
              </tr>
              <tr class="tr">
                <td style="min-width:70px;height:35.5px;" class="tab_td1">18</td>
                <td style="min-width:200px;height:35.5px;" class="tab_td2">01-3钢化2</td>
                <td style="min-width:100px;height:35.5px;" class="kg"><span class="kuan">1387</span>*143</td>
                <td style="min-width:49px;height:35.5px;" class="sl">2</td>
                <td style="min-width:49px;height:35.5px;" class="mj">0.4</td>
                <td style="min-width:49px;height:35.5px;">6.12</td>
                <td style="min-width:73px;height:35.5px;" class="tab_td3 banjin"></td>
                <td style="min-width:73px;height:35.5px;" class="tab_td3">不打商标,</td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td class="xh" style="display:none;">1</td>
              </tr>
              <tr class="tr">
                <td style="min-width:70px;height:35.5px;" class="tab_td1">7</td>
                <td style="min-width:200px;height:35.5px;" class="tab_td2">01-1钢化1</td>
                <td style="min-width:100px;height:35.5px;" class="kg"><span class="kuan">1347</span>*143</td>
                <td style="min-width:49px;height:35.5px;" class="sl">2</td>
                <td style="min-width:49px;height:35.5px;" class="mj">0.39</td>
                <td style="min-width:49px;height:35.5px;">5.96</td>
                <td style="min-width:73px;height:35.5px;" class="tab_td3 banjin"></td>
                <td style="min-width:73px;height:35.5px;" class="tab_td3">不打商标,</td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td class="xh" style="display:none;">1</td>
              </tr>
              <tr class="tr">
                <td style="min-width:70px;height:35.5px;" class="tab_td1">17</td>
                <td style="min-width:200px;height:35.5px;" class="tab_td2">01-3钢化1</td>
                <td style="min-width:100px;height:35.5px;" class="kg"><span class="kuan">1347</span>*143</td>
                <td style="min-width:49px;height:35.5px;" class="sl">2</td>
                <td style="min-width:49px;height:35.5px;" class="mj">0.39</td>
                <td style="min-width:49px;height:35.5px;">5.96</td>
                <td style="min-width:73px;height:35.5px;" class="tab_td3 banjin"></td>
                <td style="min-width:73px;height:35.5px;" class="tab_td3">不打商标,</td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td style="min-width:29px;height:35.5px;"></td>
                <td class="xh" style="display:none;">1</td>
              </tr>
              </tbody>
            </table>
          </td>
        </tr>
        </tbody>
        <tfoot>
        <tr style="height: 20px;line-height: 20px;">
          <td colspan="22">数量:<label class="zsl" for="">43片</label>&nbsp;&nbsp;&nbsp;重量:<label class="zzl"
                                                                                                    for="">125.00kg</label>&nbsp;&nbsp;&nbsp;面积:<label class="zmj" for="">10.00m²</label></td>
        </tr>
        <tr>
          <td width="50%" style="word-wrap: break-word;;" colspan="5" rowspan="7">
              <textarea style="width: 100%; height: 90%; overflow: hidden; border: 0px;font-size:12px;">1)按企标。
2)各工序:成品玻璃贴编号及尺寸标签。
3)磨边:此单宽,高尺寸公差均为(0~-1)。
4)钢化:北玻商标,位置如图。
</textarea>
          </td>
        </tr>
        <tr>
          <td width="70px" height="23px;">完工签名</td>
          <td width="56px;" height="23px;" colspan="2"></td>
          <td width="56px;" height="23px;" colspan="2"></td>
          <td width="56px;" height="23px;" colspan="2"></td>
          <td width="56px;" height="23px;" colspan="2"></td>
          <td width="56px;" height="23px;" colspan="2"></td>
          <td width="56px;" height="23px;" colspan="2"></td>
          <td width="56px;" height="23px;" colspan="2"></td>
          <td width="56px;" height="23px;" colspan="2"></td>
        </tr>
        <tr>
          <td>接收签名</td>
          <td colspan="2"></td>
          <td colspan="2"></td>
          <td colspan="2"></td>
          <td colspan="2"></td>
          <td colspan="2"></td>
          <td colspan="2"></td>
          <td colspan="2"></td>
          <td colspan="2"></td>
        </tr>
        <tr>
          <td>生产日期</td>
          <td colspan="2"></td>
          <td colspan="2"></td>
          <td colspan="2"></td>
          <td colspan="2"></td>
          <td colspan="2"></td>
          <td colspan="2"></td>
          <td colspan="2"></td>
          <td colspan="2"></td>
        </tr>
        <tr>
          <td>质检签名</td>
          <td colspan="2"></td>
          <td colspan="2"></td>
          <td colspan="2"></td>
          <td colspan="2"></td>
          <td colspan="2"></td>
          <td colspan="2"></td>
          <td colspan="2"></td>
          <td colspan="2"></td>
        </tr>
        <tr>
          <td>架子编号</td>
          <td colspan="2"></td>
          <td colspan="2"></td>
          <td colspan="2"></td>
          <td colspan="2"></td>
          <td colspan="2"></td>
          <td colspan="2"></td>
          <td colspan="2"></td>
          <td colspan="2"></td>
        </tr>
        <tr height="65px">
          <td colspan="22"><span id="qrcode2" class="qr" title="NG23120401B02/1"><canvas width="60" height="60"
                                                                                         style="display: none;"></canvas><img alt="Scan me!"
                                                                                                                              src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAAAAXNSR0IArs4c6QAAAxBJREFUaEPtmuFyhDAIhPX9H9rO2dpJOOBboh2rXn9W47GBXZboPE3TMg38Lcv3snmeB1b7S7Zn2qvbbxzxm69onwk42l3a7Wp6vYqgzG6/YTNcjXmtyC3D1cXq/dGGtf8/FXDESdpdy7MNkMI/CzhaE8WgxuxmWF1MQd4WsLpBloetwlNJ0+ZWYnjjsLqYWkR0vQ0+okFUHZWqed3rxbAbsA3CilSUHU+0aAM+gMH8SBmmvkpZIIVtn2/pU6WJ2hrb3zm8D18GMGU24iYBzPow9VW6Xo2568PVxRQMXfdUlNZQySsY5kUlgvK05h7FYamKfmSIH8BqZqi8qDy9giHH5bk1T/Wz3v+W4dsDjg4AyBqq0xE5MUW8qlyP+nuq0o8FbHe3mtlM3OlZau+veOzwTIsEhEY2pYudAtj2YRItAlpZTyee1U5gVdx7flmlLw/YHuKNTjBUwjRleevVkqee3x06PB5wpMrkclQ1p0pQrmd9Npu3uz5MqnwbwJtKE8focC/qhVQxntOK1JZUO0pKd+LxAfxzMKZkps3O5TJMokMlP7JBZFJIN9TjpU7IohMPehipqcL5UwFXpZ4O2BXVjwzD6GYOiVa1jCx31fWeOqtnV6oH92ILvbTaGkbn5tUEiJ9LULWUrGU0Ld0WsPoFQJXjtGFthqtcVivD0wL5VcttAJPTOmpE88RMHUVVjiqx/ooW3ay2Ieqt3WxqRKsqgKpX6Lw0zcMRFyvtJxsQWp5RJqk/04atuvE4wHtfphEPFQWm0iQfT4LqjodULtH1ywHe+62lOmVVVJrsKlVENrnt/rj0soCrxl3hZuamVOX2VDzLIA0lstOyZXYbwDS4E39UEfOyT5uqCmv6Qny0D6smIasE1d1Vh4U/BVwVrYyT1epSK6L0qkUZ81oQ5KUvD1jNCnlvUnRlo+hkZJeXprcAipEfpQO9spWMx2gfHnVFlT5MAIlGKYdJ+klZifMtBahKIhqMtsaupAmovU4VQUFlnFVNjarSnagePTxQEN6JB/X00c31knj48PDfAX8Bd8KdHJuN7HEAAAAASUVORK5CYII="
                                                                                                                              style="display: block;"><span class="ma">NG23120401B02/1</span></span></td>
        </tr>
        </tfoot>
      </table>
    </div>
  </div>
</template>
<style scoped>
.JColResizer {
  table-layout: fixed;
}
.JColResizer>tbody>tr>td,
.JColResizer>tbody>tr>th {
  overflow: hidden;
  padding-left: 0 !important;
  padding-right: 0 !important;
}
.JCLRgrips {
  height: 0px;
  position: relative;
}
.JCLRgrip {
  margin-left: -5px;
  position: absolute;
  z-index: 5;
}
.JCLRgrip .JColResizer {
  position: absolute;
  background-color: red;
  filter: alpha(opacity=1);
  opacity: 0;
  width: 10px;
  height: 100%;
  cursor: e-resize;
  top: 0px
}
.JCLRLastGrip {
  position: absolute;
  width: 1px;
}
.JCLRgripDrag {
  border-left: 1px dotted black;
}
.JCLRFlex {
  width: auto !important;
}
.JCLRgrip.JCLRdisabledGrip .JColResizer {
  cursor: default;
  display: none;
}
</style>
north-glass-erp/northglass-erp/src/views/pp/processCard/ProcessCard.vue
New file
@@ -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>
north-glass-erp/northglass-erp/src/views/pp/processCard/ProcessCardDetails.vue
New file
@@ -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>
north-glass-erp/northglass-erp/src/views/pp/processCard/ReShelving.vue
New file
@@ -0,0 +1,88 @@
<script lang="ts" setup>
import { reactive } from 'vue'
// do not use same name with ref
const form = reactive({
  name: '',
  region: '',
  date1: '',
  date2: '',
  delivery: false,
  type: [],
  resource: '',
  desc: '',
})
const tableData = [
  {
    salesOrderNo: 'NG231207',
    processCard:'NG231207A01',
    serialNumber:"1",
    number: '11',
    technologicalProcess: '切割->磨边->钢化->中空->包装,切割->磨边->钢化->中空->包装',
  },
  {
    salesOrderNo: 'NG231207',
    processCard:'NG231207A01',
    serialNumber:"2",
    number: '11',
    technologicalProcess: '切割->磨边->钢化->中空->包装,切割->磨边->钢化->中空->包装',
  },
  {
    salesOrderNo: 'NG231207',
    processCard:'NG231207A01',
    serialNumber:"3",
    number: '11',
    technologicalProcess: '切割->磨边->钢化->中空->包装,切割->磨边->钢化->中空->包装',
  },
  {
    salesOrderNo: 'NG231207',
    processCard:'NG231207A02',
    serialNumber:"4",
    number: '11',
    technologicalProcess: '切割->磨边->钢化->中空->包装,切割->磨边->钢化->中空->包装',
  },
  {
    salesOrderNo: 'NG231207',
    processCard:'NG231207A02',
    serialNumber:"5",
    number: '11',
    technologicalProcess: '切割->磨边->钢化->中空->包装,切割->磨边->钢化->中空->包装',
  },
]
</script>
<template>
  <div>
    <div id="selectForm">
      <el-row :gutter="0">
        <el-input placeholder="销售单号" v-model="form.name" style="width: 200px"/>
        &nbsp;&nbsp;
        <el-button type="primary">查询</el-button>
        <el-button type="primary">重新分架</el-button>
      </el-row>
    </div>
    <div>
      <el-table :data="tableData" border style="width: 100%" height="100%">
        <el-table-column type="selection" width="55" />
        <el-table-column label="销售单号" width="100">
          <template #default="scope">{{ scope.row.salesOrderNo }}</template>
        </el-table-column>
        <el-table-column prop="processCard" label="流程卡号" :show-overflow-tooltip='true' width="130" />
        <el-table-column prop="serialNumber" label="序号" width="60" />
        <el-table-column prop="number" label="数量" width="80" />
        <el-table-column prop="technologicalProcess" :show-overflow-tooltip='true' label="工艺流程"  />
      </el-table><!-- <h1>{{msg}}</h1> -->
    </div>
  </div>
</template>
<style scoped>
</style>
north-glass-erp/northglass-erp/src/views/pp/processCard/SelectAddProcess.vue
New file
@@ -0,0 +1,148 @@
<script lang="ts" setup>
import { reactive } from 'vue'
// do not use same name with ref
const form = reactive({
  name: '',
  region: '',
  date1: '',
  date2: '',
  delivery: false,
  type: [],
  resource: '',
  desc: '',
})
const tableData = [
  {
    salesOrderNo: 'NG231201',
    customerName:"慕墙公司",
    entryName: '信合春天里',
    batch: '23批',
    originalFilmRequired: '2022/5/24XFPO202205202',
    trademark:'北玻商标',
    orderType: '普通订单',
    salesman: 'XXX',
    processRequirements: '1)按企标2)每片玻璃标签贴室外面。内片玻璃打“3C商标”,统一打在玻璃“宽度”方向右下角4)按批次单独落架。',
    shipTo:'工地',
    deliveryDate:'2024-01-12'
  },
  {
    salesOrderNo: 'NG231202',
    customerName:"大荒建材有限公司",
    entryName: '信合春天里',
    batch: '23批',
    originalFilmRequired: '2022/5/24XFPO202205202',
    trademark:'北玻商标',
    orderType: '普通订单',
    salesman: 'XXX',
    processRequirements: '1)按企标2)每片玻璃标签贴室外面。内片玻璃打“3C商标”,统一打在玻璃“宽度”方向右下角4)按批次单独落架。',
    shipTo:'工地',
    deliveryDate:'2024-01-12'
  },
  {
    salesOrderNo: 'NG231203',
    customerName:"建筑工程集团有限公司",
    entryName: '信合春天里',
    batch: '23批',
    originalFilmRequired: '2022/5/24XFPO202205202',
    trademark:'北玻商标',
    orderType: '普通订单',
    salesman: 'XXX',
    processRequirements: '1)按企标2)每片玻璃标签贴室外面。内片玻璃打“3C商标”,统一打在玻璃“宽度”方向右下角4)按批次单独落架。',
    shipTo:'工地',
    deliveryDate:'2024-01-12'
  },
  {
    salesOrderNo: 'NG231204',
    customerName:"慕墙公司",
    entryName: '信合春天里',
    batch: '23批',
    originalFilmRequired: '2022/5/24XFPO202205202',
    trademark:'北玻商标',
    orderType: '普通订单',
    salesman: 'XXX',
    processRequirements: '1)按企标2)每片玻璃标签贴室外面。内片玻璃打“3C商标”,统一打在玻璃“宽度”方向右下角4)按批次单独落架。',
    shipTo:'工地',
    deliveryDate:'2024-01-12'
  },
  {
    salesOrderNo: 'NG231205',
    customerName:"慕墙公司",
    entryName: '信合春天里',
    batch: '23批',
    originalFilmRequired: '2022/5/24XFPO202205202',
    trademark:'北玻商标',
    orderType: '普通订单',
    salesman: 'XXX',
    processRequirements: '1)按企标2)每片玻璃标签贴室外面。内片玻璃打“3C商标”,统一打在玻璃“宽度”方向右下角4)按批次单独落架。',
    shipTo:'工地',
    deliveryDate:'2024-01-12'
  },
  {
    salesOrderNo: 'NG231206',
    customerName:"慕墙公司",
    entryName: '信合春天里',
    batch: '23批',
    originalFilmRequired: '2022/5/24XFPO202205202',
    trademark:'北玻商标',
    orderType: '普通订单',
    salesman: 'XXX',
    processRequirements: '1)按企标2)每片玻璃标签贴室外面。内片玻璃打“3C商标”,统一打在玻璃“宽度”方向右下角4)按批次单独落架。',
    shipTo:'工地',
    deliveryDate:'2024-01-12'
  },
  {
    salesOrderNo: 'NG231207',
    customerName:"慕墙公司",
    entryName: '信合春天里',
    batch: '23批',
    originalFilmRequired: '2022/5/24XFPO202205202',
    trademark:'北玻商标',
    orderType: '普通订单',
    salesman: 'XXX',
    processRequirements: '1)按企标2)每片玻璃标签贴室外面。内片玻璃打“3C商标”,统一打在玻璃“宽度”方向右下角4)按批次单独落架。',
    shipTo:'工地',
    deliveryDate:'2024-01-12'
  },
]
</script>
<template>
  <div>
<!--    <div id="selectForm">-->
<!--      <el-row :gutter="0">-->
<!--          <el-input placeholder="销售单号" v-model="form.name" style="width: 200px"/>-->
<!--        &nbsp;&nbsp;-->
<!--        <el-button type="primary">查询</el-button>-->
<!--      </el-row>-->
<!--    </div>-->
    <div>
      <el-table :data="tableData" border style="width: 100%" height="100%">
        <el-table-column sortable prop="salesOrderNo" label="销售单号" width="110" >
          <template v-slot="scope">
            <router-link :to="{path:'SplittingDetails'}" >{{scope.row.salesOrderNo}}</router-link>
          </template>
        </el-table-column>
        <el-table-column prop="customerName" label="客户名称" :show-overflow-tooltip='true' width="110" />
        <el-table-column prop="entryName" label="项目名称" width="135" />
        <el-table-column prop="batch" label="批次" width="80" />
        <el-table-column prop="originalFilmRequired" :show-overflow-tooltip='true' label="原片要求" width="200" />
        <el-table-column prop="trademark" label="商标选项" width="100" />
        <el-table-column prop="orderType" label="订单类型" width="100" />
        <el-table-column prop="salesman" label="业务员" width="75" />
        <el-table-column prop="processRequirements" :show-overflow-tooltip='true' label="加工要求" width="400" />
        <el-table-column prop="shipTo" label="送货地址" width="100" />
        <el-table-column prop="deliveryDate" label="交货日期" width="100" />
      </el-table><!-- <h1>{{msg}}</h1> -->
    </div>
  </div>
</template>
<style scoped>
</style>
north-glass-erp/northglass-erp/src/views/pp/processCard/SelectPrintFlowCard.vue
New file
@@ -0,0 +1,106 @@
<script lang="ts" setup>
import {reactive, ref} from 'vue'
// do not use same name with ref
const form = reactive({
  name: '',
  region: '',
  date1: '',
  date2: '',
  delivery: false,
  type: [],
  resource: '',
  desc: '',
})
const defaultTime = ref<[Date, Date]>([
  new Date(2000, 1, 1, 0, 0, 0),
  new Date(2000, 2, 1, 23, 59, 59),
])
const tableData = [
  {
    salesOrderNo: 'NG231201',
    entryName: '信合春天里',
    total: '169',
    TotalArea: '175.31',
  },
  {
    salesOrderNo: 'NG231202',
    entryName: '信合春天里',
    total: '169',
    TotalArea: '175.31',
  },
  {
    salesOrderNo: 'NG231203',
    entryName: '信合春天里',
    total: '169',
    TotalArea: '175.31',
  },
  {
    salesOrderNo: 'NG231204',
    entryName: '信合春天里',
    total: '169',
    TotalArea: '175.31',
  },
  {
    salesOrderNo: 'NG231205',
    entryName: '信合春天里',
    total: '169',
    TotalArea: '175.31',
  },
  {
    salesOrderNo: 'NG231206',
    entryName: '信合春天里',
    total: '169',
    TotalArea: '175.31',
  },
  {
    salesOrderNo: 'NG231207',
    entryName: '信合春天里',
    total: '169',
    TotalArea: '175.31',
  },
]
</script>
<template>
  <div>
    <div id="selectForm">
      <el-row :gutter="0">
<!--        <el-input placeholder="销售单号" v-model="form.name" style="width: 200px"/>-->
<!--        &nbsp;&nbsp;-->
<!--        <el-input placeholder="项目名称" v-model="form.region" style="width: 200px"/>-->
<!--        &nbsp;&nbsp;-->
        <el-date-picker
            v-model="form.date1"
            type="daterange"
            start-placeholder="开始时间"
            end-placeholder="结束时间"
            :default-time="defaultTime"
        />
        &nbsp;&nbsp;
        <el-button type="primary">查询</el-button>
      </el-row>
    </div>
    <el-table :data="tableData" border style="width: 100%" height="100%">
      <el-table-column sortable prop="salesOrderNo" label="销售单号" width="110" >
        <template v-slot="scope">
          <router-link :to="{path:'PrintFlowCard'}" >{{scope.row.salesOrderNo}}</router-link>
        </template>
      </el-table-column>
      <el-table-column prop="entryName" label="项目名称" width="155" />
      <el-table-column prop="total" label="总片数" width="75" />
      <el-table-column prop="TotalArea" label="总面积" width="100" />
    </el-table><!-- <h1>{{msg}}</h1> -->
  </div>
</template>
<style scoped>
#selectForm {
  width: 40%;
  height: 100%;
  text-align: center;
}
</style>
north-glass-erp/northglass-erp/src/views/pp/processCard/SelectProcessCard.vue
New file
@@ -0,0 +1,180 @@
<script lang="ts" setup>
import { reactive } from 'vue'
import { ref } from 'vue'
const value = ref('')
const defaultTime = ref<[Date, Date]>([
  new Date(2000, 1, 1, 0, 0, 0),
  new Date(2000, 2, 1, 23, 59, 59),
])
// do not use same name with ref
const form = reactive({
  name: '',
  region: '',
  date1: '',
  date2: '',
  delivery: false,
  type: [],
  resource: '',
  desc: '',
})
const tableData = [
  {
    salesOrderNo: 'NG231201',
    productionOrderNo: 'NG231201A',
    productID: '9001010203000008',
    productName: '5mm白玻平钢(外)+0.76PVB透明+5mm白玻平钢(内)',
    entryName: '信合春天里',
    total: '169',
    TotalArea: '175.31',
    Cases: '3',
    divider: 'xxx',
    processRequirements: '1)按企标2)每片玻璃标签贴室外面。内片玻璃打“3C商标”,统一打在玻璃“宽度”方向右下角4)按批次单独落架。',
  },
  {
    salesOrderNo: 'NG231201',
    productionOrderNo: 'NG231201B',
    productID: '9001010203000008',
    productName: '5mm白玻平钢(外)+0.76PVB透明+5mm白玻平钢(内)',
    entryName: '信合春天里',
    total: '169',
    TotalArea: '175.31',
    Cases: '3',
    divider: 'xxx',
    processRequirements: '1)按企标2)每片玻璃标签贴室外面。内片玻璃打“3C商标”,统一打在玻璃“宽度”方向右下角4)按批次单独落架。',
  },
  {
    salesOrderNo: 'NG231202',
    productionOrderNo: 'NG231202A',
    productID: '9001010203000008',
    productName: '5mm白玻平钢(外)+0.76PVB透明+5mm白玻平钢(内)',
    entryName: '信合春天里',
    total: '169',
    TotalArea: '175.31',
    Cases: '3',
    divider: 'xxx',
    processRequirements: '1)按企标2)每片玻璃标签贴室外面。内片玻璃打“3C商标”,统一打在玻璃“宽度”方向右下角4)按批次单独落架。',
  },
  {
    salesOrderNo: 'NG231203',
    productionOrderNo: 'NG231203A',
    productID: '9001010203000008',
    productName: '5mm白玻平钢(外)+0.76PVB透明+5mm白玻平钢(内)',
    entryName: '信合春天里',
    total: '169',
    TotalArea: '175.31',
    Cases: '3',
    divider: 'xxx',
    processRequirements: '1)按企标2)每片玻璃标签贴室外面。内片玻璃打“3C商标”,统一打在玻璃“宽度”方向右下角4)按批次单独落架。',
  },
  {
    salesOrderNo: 'NG231204',
    productionOrderNo: 'NG231204A',
    productID: '9001010203000008',
    productName: '5mm白玻平钢(外)+0.76PVB透明+5mm白玻平钢(内)',
    entryName: '信合春天里',
    total: '169',
    TotalArea: '175.31',
    Cases: '3',
    divider: 'xxx',
    processRequirements: '1)按企标2)每片玻璃标签贴室外面。内片玻璃打“3C商标”,统一打在玻璃“宽度”方向右下角4)按批次单独落架。',
  },
  {
    salesOrderNo: 'NG231205',
    productionOrderNo: 'NG231205A',
    productID: '9001010203000008',
    productName: '5mm白玻平钢(外)+0.76PVB透明+5mm白玻平钢(内)',
    entryName: '信合春天里',
    total: '169',
    TotalArea: '175.31',
    Cases: '3',
    divider: 'xxx',
    processRequirements: '1)按企标2)每片玻璃标签贴室外面。内片玻璃打“3C商标”,统一打在玻璃“宽度”方向右下角4)按批次单独落架。',
  },
  {
    salesOrderNo: 'NG231206',
    productionOrderNo: 'NG231206A',
    productID: '9001010203000008',
    productName: '5mm白玻平钢(外)+0.76PVB透明+5mm白玻平钢(内)',
    entryName: '信合春天里',
    total: '169',
    TotalArea: '175.31',
    Cases: '3',
    divider: 'xxx',
    processRequirements: '1)按企标2)每片玻璃标签贴室外面。内片玻璃打“3C商标”,统一打在玻璃“宽度”方向右下角4)按批次单独落架。',
  },
  {
    salesOrderNo: 'NG231207',
    productionOrderNo: 'NG231207A',
    productID: '9001010203000008',
    productName: '5mm白玻平钢(外)+0.76PVB透明+5mm白玻平钢(内)',
    entryName: '信合春天里',
    total: '169',
    TotalArea: '175.31',
    Cases: '3',
    divider: 'xxx',
    processRequirements: '1)按企标2)每片玻璃标签贴室外面。内片玻璃打“3C商标”,统一打在玻璃“宽度”方向右下角4)按批次单独落架。',
  },
]
</script>
<template>
  <div>
    <div id="selectForm" >
      <el-row :gutter="0">
<!--          <el-input placeholder="销售单号" v-model="form.name" style="width: 200px"/>-->
<!--        &nbsp;&nbsp;-->
<!--          <el-input placeholder="项目名称" v-model="form.name" style="width: 200px"/>-->
<!--        &nbsp;&nbsp;-->
        <el-date-picker
            v-model="value"
            type="daterange"
            start-placeholder="开始时间"
            end-placeholder="结束时间"
            :default-time="defaultTime"
        />
        &nbsp;&nbsp;
        <el-button type="primary" style="width: 80px">查询</el-button>
      </el-row>
    </div>
    <el-table :data="tableData" border style="width: 100%" height="100%">
      <el-table-column fixed label="操作" width="140"  >
        <el-button link type="primary" size="small">删除</el-button>
        <el-button link type="primary" size="small">排版</el-button>
        <el-button link type="primary" size="small">打印</el-button>
      </el-table-column>
      <el-table-column sortable prop="salesOrderNo" label="销售单号" width="110" >
        <template v-slot="scope">
          <router-link :to="{path:'ProcessCardDetails'}" >{{scope.row.salesOrderNo}}</router-link>
        </template>
      </el-table-column>
      <el-table-column prop="productionOrderNo" label="生产订单号" width="125" />
      <el-table-column prop="productID" label="产品编号" width="155" />
      <el-table-column prop="productName" label="产品名称" :show-overflow-tooltip='true' width="180" />
      <el-table-column prop="entryName" label="项目名称" width="155" />
      <el-table-column prop="total" label="总片数" width="75" />
      <el-table-column prop="TotalArea" label="总面积" width="100" />
      <el-table-column prop="Cases" label="箱数" width="100" />
      <el-table-column prop="divider" label="分架员" width="70" />
      <el-table-column prop="processRequirements" label="加工要求" :show-overflow-tooltip='true' width="350" />
    </el-table><!-- <h1>{{msg}}</h1> -->
  </div>
</template>
<style scoped>
*{
  margin: 0;
  padding:0;
}
a{
  color:#409eff;
}
#selectForm {
  width: 40%;
  height: 100%;
  text-align: center;
}
</style>
north-glass-erp/northglass-erp/src/views/pp/processCard/SplittingDetails.vue
New file
@@ -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>
north-glass-erp/northglass-erp/src/views/pp/report/DamageReport.vue
New file
@@ -0,0 +1,114 @@
<script lang="ts" setup>
import {reactive, ref} from 'vue'
const defaultTime = ref<[Date, Date]>([
  new Date(2000, 1, 1, 0, 0, 0),
  new Date(2000, 2, 1, 23, 59, 59),
])
// do not use same name with ref
const form = reactive({
  name: '',
  region: '',
  date1: '',
  date2: '',
  delivery: false,
  type: [],
  resource: '',
  desc: '',
})
const value = ref('')
const options = [
  {
    value: 'Option1',
    label: 'Option1',
  },
  {
    value: 'Option2',
    label: 'Option2',
  },
  {
    value: 'Option3',
    label: 'Option3',
  },
]
const tableData = [
  {
    1:'2023-01-01',
    2:'钢化',
    3:'钢化一班',
    4:'黑金刚',
    5:'机器',
    6:'1 ',
    7:'3.14',
    8:'89',
    9:'奔向幕墙',
    10:'一批',
    11:'NG20010101',
    12:'6mm超白平钢',
    13:'北方',
  },
]
</script>
<!--次破报表-->
<template>
  <div class="div-main">
    <div id="selectForm">
      <el-row :gutter="0">
<!--        <el-input placeholder="班组名称" v-model="form.name" style="width: 200px"/>-->
<!--        &nbsp;&nbsp;-->
        <el-date-picker
            v-model="form.date1"
            type="daterange"
            start-placeholder="开始时间"
            end-placeholder="结束时间"
            :default-time="defaultTime"
        />
        &nbsp;&nbsp;
        <el-select v-model="value" class="m-2" placeholder="查询类型">
          <el-option
              v-for="item in options"
              :key="item.value"
              :label="item.label"
              :value="item.value"
          />
        </el-select>
        <el-button type="primary">查询</el-button>
      </el-row>
    </div>
    <div>
      <el-table :data="tableData" border style="width: 100%" height="100%">
        <el-table-column prop="1" label="报工时间" />
        <el-table-column prop="2" label="工序"/>
        <el-table-column prop="3" label="责任班组" :show-overflow-tooltip='true' />
        <el-table-column prop="4" label="责任设备" />
        <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>
north-glass-erp/northglass-erp/src/views/pp/report/EquipmentOutput.vue
New file
@@ -0,0 +1,104 @@
<script lang="ts" setup>
import {reactive, ref} from 'vue'
const defaultTime = ref<[Date, Date]>([
  new Date(2000, 1, 1, 0, 0, 0),
  new Date(2000, 2, 1, 23, 59, 59),
])
// do not use same name with ref
const form = reactive({
  name: '',
  region: '',
  date1: '',
  date2: '',
  delivery: false,
  type: [],
  resource: '',
  desc: '',
})
const value = ref('')
const options = [
  {
    value: 'Option1',
    label: 'Option1',
  },
  {
    value: 'Option2',
    label: 'Option2',
  },
  {
    value: 'Option3',
    label: 'Option3',
  },
]
const tableData = [
  {
    1:'切割',
    2:'大海利宁',
    3:'NG23010102',
    4:'NG23010102A',
    5:'6mm超白LYE-80平钢(外)+12Ar(结)+6mm超白平钢(内)',
    6:'133',
    7:'123.14',
    8:'2023-01-02',
  },
]
</script>
<!--设备产量-->
<template>
  <div class="div-main">
    <div id="selectForm">
      <el-row :gutter="0">
<!--        <el-input placeholder="设备名称" v-model="form.name" style="width: 200px"/>-->
<!--        &nbsp;&nbsp;-->
        <el-date-picker
            v-model="form.date1"
            type="daterange"
            start-placeholder="开始时间"
            end-placeholder="结束时间"
            :default-time="defaultTime"
        />
        &nbsp;&nbsp;
        <el-select v-model="value" class="m-2" placeholder="查询类型">
          <el-option
              v-for="item in options"
              :key="item.value"
              :label="item.label"
              :value="item.value"
          />
        </el-select>
        <el-button type="primary">查询</el-button>
      </el-row>
    </div>
    <div>
      <el-table :data="tableData" border style="width: 100%" height="100%">
        <el-table-column prop="1" label="工序" />
        <el-table-column prop="2" label="加工设备"/>
        <el-table-column prop="3" label="销售单号" :show-overflow-tooltip='true' />
        <el-table-column prop="4" label="生产订单号" />
        <el-table-column prop="5" label="产品名称" :show-overflow-tooltip='true' />
        <el-table-column prop="6" label="完工数量" />
        <el-table-column prop="7" label="完工面积"/>
        <el-table-column prop="8" label="报工时间"/>
      </el-table><!-- <h1>{{msg}}</h1> -->
    </div>
  </div>
</template>
<style scoped>
.div-main{
  width: 100%;
  height: 100%;
}
#selectForm {
  width: 70%;
  text-align: center;
}
</style>
north-glass-erp/northglass-erp/src/views/pp/report/OrderBOMOutside.vue
New file
@@ -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片/箱,用热隔FSC纸)',
    5:'1300',
    6:'一线装箱',
    7:'70030201000010400410000002',
    8:'FSC无尘纸',
    9:'张',
    10:'东莞市锦荣纸业',
    11:'1304.00',
    12:'1000.0000',
    13:'已审核',
  },
]
</script>
<!--BOM报表-->
<template>
  <div class="div-main">
    <div id="selectForm">
      <el-row :gutter="0">
<!--        <el-input placeholder="设备名称" v-model="form.name" style="width: 200px"/>-->
<!--        &nbsp;&nbsp;-->
        <el-date-picker
            v-model="form.date1"
            type="daterange"
            start-placeholder="开始时间"
            end-placeholder="结束时间"
            :default-time="defaultTime"
        />
        &nbsp;&nbsp;
        <el-select v-model="value" class="m-2" placeholder="查询类型">
          <el-option
              v-for="item in options"
              :key="item.value"
              :label="item.label"
              :value="item.value"
          />
        </el-select>
        <el-button type="primary">查询</el-button>
      </el-row>
    </div>
    <div>
      <el-table :data="tableData" border style="width: 100%" height="100%">
        <el-table-column prop="1" label="销售单号" />
        <el-table-column prop="2" label="客户编码" :show-overflow-tooltip='true'/>
        <el-table-column prop="3" label="产品编号" :show-overflow-tooltip='true' />
        <el-table-column prop="4" label="产品名称" :show-overflow-tooltip='true'/>
        <el-table-column prop="5" label="订单数量" :show-overflow-tooltip='true' />
        <el-table-column prop="6" label="领料工序" />
        <el-table-column prop="7" label="物料编码" :show-overflow-tooltip='true'/>
        <el-table-column prop="8" label="物料名称" :show-overflow-tooltip='true'/>
        <el-table-column prop="9" label="单位"/>
        <el-table-column prop="10" label="产地" :show-overflow-tooltip='true'/>
        <el-table-column prop="11" label="物料数量"/>
        <el-table-column prop="12" label="采购数量"/>
        <el-table-column prop="13" label="是否审核"/>
      </el-table><!-- <h1>{{msg}}</h1> -->
    </div>
  </div>
</template>
<style scoped>
.div-main{
  width: 100%;
  height: 100%;
}
#selectForm {
  width: 70%;
  text-align: center;
}
</style>
north-glass-erp/northglass-erp/src/views/pp/report/OrderPlanDecomposition.vue
New file
@@ -0,0 +1,113 @@
<script lang="ts" setup>
import {reactive, ref} from 'vue'
const defaultTime = ref<[Date, Date]>([
  new Date(2000, 1, 1, 0, 0, 0),
  new Date(2000, 2, 1, 23, 59, 59),
])
// do not use same name with ref
const form = reactive({
  name: '',
  region: '',
  date1: '',
  date2: '',
  delivery: false,
  type: [],
  resource: '',
  desc: '',
})
const value = ref('')
const options = [
  {
    value: 'Option1',
    label: 'Option1',
  },
  {
    value: 'Option2',
    label: 'Option2',
  },
  {
    value: 'Option3',
    label: 'Option3',
  },
]
const tableData = [
  {
    1:'新安北玻产业园',
    2:'1#宿舍楼墙',
    3:'1#补片',
    4:'8',
    5:'9.82',
    6:'2023-12-01 11:06:10',
    7:'NG23113003',
    8:'2023-12-03 23:19:11',
    9:'切割',
    10:'2',
    11:'0',
    12:'9',
    13:'已审核',
    14:'4',
  },
]
</script>
<!--订单计划分解-->
<template>
  <div class="div-main">
    <div id="selectForm">
      <el-row :gutter="0">
        <el-date-picker
            v-model="form.date1"
            type="daterange"
            start-placeholder="开始时间"
            end-placeholder="结束时间"
            :default-time="defaultTime"
        />
        &nbsp;&nbsp;
        <el-select v-model="value" class="m-2" placeholder="查询类型">
          <el-option
              v-for="item in options"
              :key="item.value"
              :label="item.label"
              :value="item.value"
          />
        </el-select>
        <el-button type="primary">查询</el-button>
      </el-row>
    </div>
    <div>
      <el-table :data="tableData" border style="width: 100%" height="100%">
        <el-table-column prop="1" label="项目名称" width="115" :show-overflow-tooltip='true'/>
        <el-table-column prop="2" label="客户批次" width="115" :show-overflow-tooltip='true'/>
        <el-table-column prop="3" label="批次" :show-overflow-tooltip='true' />
        <el-table-column prop="4" label="数量" :show-overflow-tooltip='true'/>
        <el-table-column prop="5" label="面积" :show-overflow-tooltip='true' />
        <el-table-column prop="6" label="订单交接时间" width="115" :show-overflow-tooltip='true'/>
        <el-table-column prop="7" label="销售单号" width="115" :show-overflow-tooltip='true'/>
        <el-table-column prop="8" label="开始切割时间" width="115" :show-overflow-tooltip='true'/>
        <el-table-column prop="9" label="流转工序" width="82"/>
        <el-table-column prop="10" label="完工数量" width="85" :show-overflow-tooltip='true'/>
        <el-table-column prop="11" label="已入库数量" width="95"/>
        <el-table-column prop="12" label="未入库数量" width="95"/>
        <el-table-column prop="13" label="清单时间" width="82"/>
        <el-table-column prop="14" label="生产用时(天)" width="115"/>
      </el-table><!-- <h1>{{msg}}</h1> -->
    </div>
  </div>
</template>
<style scoped>
.div-main{
  width: 100%;
  height: 100%;
}
#selectForm {
  width: 70%;
  text-align: center;
}
</style>
north-glass-erp/northglass-erp/src/views/pp/report/ProcessToBeCompleted.vue
New file
@@ -0,0 +1,95 @@
<script lang="ts" setup>
import {reactive, ref} from 'vue'
const defaultTime = ref<[Date, Date]>([
  new Date(2000, 1, 1, 0, 0, 0),
  new Date(2000, 2, 1, 23, 59, 59),
])
// do not use same name with ref
const form = reactive({
  name: '',
  region: '',
  date1: '',
  date2: '',
  delivery: false,
  type: [],
  resource: '',
  desc: '',
})
const value = ref('')
const options = [
  {
    value: 'Option1',
    label: 'Option1',
  },
  {
    value: 'Option2',
    label: 'Option2',
  },
  {
    value: 'Option3',
    label: 'Option3',
  },
]
const tableData = [
  {
    1:'新安北玻产业园',
    2:'19mm超白平钢',
    3:'1',
    4:'3.11',
  },
]
</script>
<!--工序待完成报表-->
<template>
  <div class="div-main">
    <div id="selectForm">
      <el-row :gutter="0">
<!--        <el-input placeholder="销售单号" v-model="form.name" style="width: 150px"/>-->
<!--        <el-input placeholder="项目名称" v-model="form.name" style="width: 150px"/>-->
        <el-date-picker
            v-model="form.date1"
            type="daterange"
            start-placeholder="开始时间"
            end-placeholder="结束时间"
            :default-time="defaultTime"
        />
        <el-select v-model="value" class="m-2" placeholder="查询类型">
          <el-option
              v-for="item in options"
              :key="item.value"
              :label="item.label"
              :value="item.value"
          />
        </el-select>
        &nbsp;&nbsp;
        <el-button type="primary">查询</el-button>
      </el-row>
    </div>
    <div>
      <el-table :data="tableData" border style="width: 100%" height="100%">
        <el-table-column prop="1" label="项目名称" width="115" :show-overflow-tooltip='true'/>
        <el-table-column prop="2" label="单品名称" width="115" :show-overflow-tooltip='true'/>
        <el-table-column prop="3" label="未完数" :show-overflow-tooltip='true' />
        <el-table-column prop="4" label="未完面积" :show-overflow-tooltip='true'/>
      </el-table><!-- <h1>{{msg}}</h1> -->
    </div>
  </div>
</template>
<style scoped>
.div-main{
  width: 100%;
  height: 100%;
}
#selectForm {
  width: 70%;
  text-align: center;
}
</style>
north-glass-erp/northglass-erp/src/views/pp/report/ProductionSchedule.vue
New file
@@ -0,0 +1,235 @@
<script lang="ts" setup>
import {reactive, ref} from 'vue'
import type { TableColumnCtx } from 'element-plus'
interface User {
  id: string
  name: string
  amount1: string
  amount2: string
  amount3: number
}
interface SpanMethodProps {
  row: User
  column: TableColumnCtx<User>
  rowIndex: number
  columnIndex: number
}
const defaultTime = ref<[Date, Date]>([
  new Date(2000, 1, 1, 0, 0, 0),
  new Date(2000, 2, 1, 23, 59, 59),
])
// do not use same name with ref
const form = reactive({
  name: '',
  region: '',
  date1: '',
  date2: '',
  delivery: false,
  type: [],
  resource: '',
  desc: '',
})
const objectSpanMethod = ({
                            row,
                            column,
                            rowIndex,
                            columnIndex,
                          }: SpanMethodProps) => {
  if (columnIndex === 0 ||columnIndex === 1||columnIndex === 2||columnIndex === 3||columnIndex === 6) {
    console.log(rowIndex)
    if (rowIndex % 3 === 0) {
      return {
        rowspan: 3,
        colspan: 1,
        column:1
      }
    } else {
      return {
        rowspan: 0,
        colspan: 0,
        column:1
      }
    }
  }
}
const tableData = [
  {
    1:'1',
    2:'J8-B1-BD-BL1-001',
    3:'普形',
    4:'10mm超白UD60平钢(外)+12Ar(结)+10mm超白平钢+12Ar(结)+10mm超白平钢(内)',
    5:'1114',
    6:'1445',
    7:'3',
    8:'(外)',
    9:'1',
    10:'10mm超白UD60平钢(外)',
    11:'1',
    12:'1',
    13:'1',
    14:'0',
    15:'0',
    16:'0',
    17:'0',
    18:'4.11',
  },
  {
    1:'1',
    2:'J8-B1-BD-BL1-001',
    3:'普形',
    4:'10mm超白UD60平钢(外)+12Ar(结)+10mm超白平钢+12Ar(结)+10mm超白平钢(内)',
    5:'1114',
    6:'1445',
    7:'3',
    8:'(中)',
    9:'2',
    10:'10mm超白UD60平钢(外)',
    11:'1',
    12:'1',
    13:'1',
    14:'0',
    15:'0',
    16:'0',
    17:'0',
    18:'4.11',
  },
  {
    1:'1',
    2:'J8-B1-BD-BL1-001',
    3:'普形',
    4:'10mm超白UD60平钢(外)+12Ar(结)+10mm超白平钢+12Ar(结)+10mm超白平钢(内)',
    5:'1114',
    6:'1445',
    7:'3',
    8:'(内)',
    9:'3',
    10:'10mm超白UD60平钢(外)',
    11:'1',
    12:'1',
    13:'1',
    14:'0',
    15:'0',
    16:'0',
    17:'0',
    18:'4.11',
  },
  {
    1:'2',
    2:'J8-B1-BD-BL1-001',
    3:'普形',
    4:'6mm超白UD60平钢(外)+12Ar(结)+6mm超白平钢+12Ar(结)+6mm超白平钢(内)',
    5:'1114',
    6:'1445',
    7:'3',
    8:'(外)',
    9:'1',
    10:'6mm超白UD60平钢(外)',
    11:'1',
    12:'1',
    13:'1',
    14:'0',
    15:'0',
    16:'0',
    17:'0',
    18:'4.11',
  },
  {
    1:'2',
    2:'J8-B1-BD-BL1-001',
    3:'普形',
    4:'6mm超白UD60平钢(外)+12Ar(结)+6mm超白平钢+12Ar(结)+6mm超白平钢(内)',
    5:'1114',
    6:'1445',
    7:'3',
    8:'(中)',
    9:'2',
    10:'6mm超白UD60平钢(外)',
    11:'1',
    12:'1',
    13:'1',
    14:'0',
    15:'0',
    16:'0',
    17:'0',
    18:'4.11',
  },
  {
    1:'2',
    2:'J8-B1-BD-BL1-001',
    3:'普形',
    4:'6mm超白UD60平钢(外)+12Ar(结)+6mm超白平钢+12Ar(结)+6mm超白平钢(内)',
    5:'1114',
    6:'1445',
    7:'3',
    8:'(内)',
    9:'3',
    10:'6mm超白UD60平钢(外)',
    11:'1',
    12:'1',
    13:'1',
    14:'0',
    15:'0',
    16:'0',
    17:'0',
    18:'4.11',
  },
]
</script>
<!--生产发货进度-->
<template>
  <div class="div-main">
    <div id="selectForm">
      <el-row :gutter="0">
        <el-input placeholder="销售单号" v-model="form.name" style="width: 150px"/>
        &nbsp;&nbsp;
        <el-button type="primary">查询</el-button>
      </el-row>
    </div>
    <div>
      <el-table
          :data="tableData"
          :span-method="objectSpanMethod"
          border
          style="width: 100%; margin-top: 20px"
      >
        <el-table-column prop="1" label="序号" />
        <el-table-column prop="2" label="楼层编号" width="120px" :show-overflow-tooltip='true'/>
        <el-table-column prop="3" label="形状" :show-overflow-tooltip='true' />
        <el-table-column prop="4" label="成品名称" width="120px" :show-overflow-tooltip='true'/>
        <el-table-column prop="5" label="宽" />
        <el-table-column prop="6" label="高" />
        <el-table-column prop="7" label="数量"/>
        <el-table-column prop="8" label="片标记"/>
        <el-table-column prop="9" label="标记" :show-overflow-tooltip='true' />
        <el-table-column prop="10" label="单片名称" width="120px"  :show-overflow-tooltip='true'/>
        <el-table-column prop="11" label="切割"  width="120px" />
        <el-table-column prop="12" label="磨边" :show-overflow-tooltip='true' width="150px" />
        <el-table-column prop="13" label="钢化"  />
        <el-table-column prop="14" label="入库数量"  />
        <el-table-column prop="15" label="入库面积"  />
        <el-table-column prop="16" label="发货数量"  />
        <el-table-column prop="17" label="发货面积"  />
        <el-table-column prop="18" label="结算总面积"  />
      </el-table>
    </div>
  </div>
</template>
<style scoped>
.div-main{
  width: 100%;
  height: 100%;
}
#selectForm {
  width: 70%;
  text-align: center;
}
</style>
north-glass-erp/northglass-erp/src/views/pp/report/QualityReport.vue
New file
@@ -0,0 +1,104 @@
<script lang="ts" setup>
import {reactive, ref} from 'vue'
const defaultTime = ref<[Date, Date]>([
  new Date(2000, 1, 1, 0, 0, 0),
  new Date(2000, 2, 1, 23, 59, 59),
])
// do not use same name with ref
const form = reactive({
  name: '',
  region: '',
  date1: '',
  date2: '',
  delivery: false,
  type: [],
  resource: '',
  desc: '',
})
const value = ref('')
const options = [
  {
    value: 'Option1',
    label: 'Option1',
  },
  {
    value: 'Option2',
    label: 'Option2',
  },
  {
    value: 'Option3',
    label: 'Option3',
  },
]
const tableData = [
  {
    1:'NG23022706',
    2:'45',
    3:'大板镜',
    4:'1',
    5:'3mm 高性能环保镜 3660*2440',
    6:'180 ',
    7:'0',
    8:'186',
    9:'3',
    10:'3',
    11:'180',
    12:'1.6129%',
  },
]
</script>
<!--品质报表-->
<template>
  <div class="div-main">
    <div id="selectForm">
      <el-row :gutter="0">
<!--        <el-input placeholder="客户名称" v-model="form.name" style="width: 200px"/>-->
        &nbsp;&nbsp;
        <el-date-picker
            v-model="form.date1"
            type="daterange"
            start-placeholder="开始时间"
            end-placeholder="结束时间"
            :default-time="defaultTime"
        />
        &nbsp;&nbsp;
        <el-button type="primary">查询</el-button>
      </el-row>
    </div>
    <div>
      <el-table :data="tableData" border style="width: 100%" height="100%">
        <el-table-column prop="1" label="销售单号" />
        <el-table-column prop="2" label="客户编码"/>
        <el-table-column prop="3" label="项目名称" :show-overflow-tooltip='true' />
        <el-table-column prop="4" label="订单序号" />
        <el-table-column prop="5" label="产品名称" :show-overflow-tooltip='true'/>
        <el-table-column prop="6" label="订单数量" />
        <el-table-column prop="7" label="备用件"/>
        <el-table-column prop="8" label="投入数量"/>
        <el-table-column prop="9" label="次破数量" :show-overflow-tooltip='true' />
        <el-table-column prop="10" label="布片数量"  />
        <el-table-column prop="11" label="入库数量"  width="120px" />
        <el-table-column prop="12" label="报废率" :show-overflow-tooltip='true' width="150px" />
      </el-table><!-- <h1>{{msg}}</h1> -->
    </div>
  </div>
</template>
<style scoped>
.div-main{
  width: 100%;
  height: 100%;
}
#selectForm {
  width: 70%;
  text-align: center;
}
</style>
north-glass-erp/northglass-erp/src/views/pp/report/RawMaterialRequisition.vue
New file
@@ -0,0 +1,103 @@
<script lang="ts" setup>
import {reactive, ref} from 'vue'
const defaultTime = ref<[Date, Date]>([
  new Date(2000, 1, 1, 0, 0, 0),
  new Date(2000, 2, 1, 23, 59, 59),
])
// do not use same name with ref
const form = reactive({
  name: '',
  region: '',
  date1: '',
  date2: '',
  delivery: false,
  type: [],
  resource: '',
  desc: '',
})
const value = ref('')
const options = [
  {
    value: 'Option1',
    label: 'Option1',
  },
  {
    value: 'Option2',
    label: 'Option2',
  },
  {
    value: 'Option3',
    label: 'Option3',
  },
]
const tableData = [
  {
    1:'武汉安铭华侨城',
    2:'23第1批',
    3:'N0231210',
    4:'平钢',
    5:'10mm超白UD60',
    6:'山东全品',
    7:'3360',
    8:'4567',
    9:'6',
    10:'22.76',
    11:'2023-10-22',
  },
]
</script>
<!--原片领料-->
<template>
  <div class="div-main">
    <div id="selectForm">
      <el-row :gutter="0">
<!--        <el-input placeholder="销售单号" v-model="form.name" style="width: 200px"/>-->
<!--        <el-input placeholder="项目名称" v-model="form.name" style="width: 200px"/>-->
        &nbsp;&nbsp;
        <el-date-picker
            v-model="form.date1"
            type="daterange"
            start-placeholder="开始时间"
            end-placeholder="结束时间"
            :default-time="defaultTime"
        />
        &nbsp;&nbsp;
        <el-button type="primary">查询</el-button>
      </el-row>
    </div>
    <div>
      <el-table :data="tableData" border style="width: 100%" height="100%">
        <el-table-column prop="1" label="项目名称" :show-overflow-tooltip='true'/>
        <el-table-column prop="2" label="批次"/>
        <el-table-column prop="3" label="销售单号" :show-overflow-tooltip='true' />
        <el-table-column prop="4" label="产品类型" />
        <el-table-column prop="5" label="物料名称" :show-overflow-tooltip='true'/>
        <el-table-column prop="6" label="原片产地" />
        <el-table-column prop="7" label="宽"/>
        <el-table-column prop="8" label="高"/>
        <el-table-column prop="9" label="已领数量" :show-overflow-tooltip='true' />
        <el-table-column prop="10" label="已领面积"  />
        <el-table-column prop="11" label="原片生产日期"  width="120px" />
      </el-table><!-- <h1>{{msg}}</h1> -->
    </div>
  </div>
</template>
<style scoped>
.div-main{
  width: 100%;
  height: 100%;
}
#selectForm {
  width: 70%;
  text-align: center;
}
</style>
north-glass-erp/northglass-erp/src/views/pp/report/Report.vue
New file
@@ -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>
north-glass-erp/northglass-erp/src/views/pp/report/SplittingDetailsOutside.vue
New file
@@ -0,0 +1,96 @@
<script lang="ts" setup>
import {reactive, ref} from 'vue'
const defaultTime = ref<[Date, Date]>([
  new Date(2000, 1, 1, 0, 0, 0),
  new Date(2000, 2, 1, 23, 59, 59),
])
// do not use same name with ref
const form = reactive({
  name: '',
  region: '',
  date1: '',
  date2: '',
  delivery: false,
  type: [],
  resource: '',
  desc: '',
})
const value = ref('')
const options = [
  {
    value: 'Option1',
    label: 'Option1',
  },
  {
    value: 'Option2',
    label: 'Option2',
  },
  {
    value: 'Option3',
    label: 'Option3',
  },
]
const tableData = [
  {
    1:'NG23120702A01',
    2:'8',
    3:'1',
    4:'银隆广场',
    5:'补8',
    6:'J8-B1-BD-BL1-009 ',
    7:'1764',
    8:'2466',
    9:'5',
    10:'23.13',
    11:'普形',
    12:'',
  },
]
</script>
<!--分架明细-->
<template>
  <div class="div-main">
    <div id="selectForm">
      <el-row :gutter="0">
        <el-input placeholder="销售单号" v-model="form.name" style="width: 200px"/>
        &nbsp;&nbsp;
        <el-button type="primary">查询</el-button>
      </el-row>
    </div>
    <div>
      <el-table :data="tableData" border style="width: 100%" height="100%">
        <el-table-column prop="1" label="流程卡号" width="130px"/>
        <el-table-column prop="2" label="序号"/>
        <el-table-column prop="3" label="落架顺序" :show-overflow-tooltip='true' />
        <el-table-column prop="4" label="项目名称" />
        <el-table-column prop="5" label="批次" />
        <el-table-column prop="6" label="楼层编号" :show-overflow-tooltip='true' />
        <el-table-column prop="7" label="宽"/>
        <el-table-column prop="8" label="高"/>
        <el-table-column prop="9" label="数量" :show-overflow-tooltip='true' />
        <el-table-column prop="10" label="面积"  />
        <el-table-column prop="11" label="形状"   />
        <el-table-column prop="12" label="备注" :show-overflow-tooltip='true' width="150px" />
      </el-table><!-- <h1>{{msg}}</h1> -->
    </div>
  </div>
</template>
<style scoped>
.div-main{
  width: 100%;
  height: 100%;
}
#selectForm {
  width: 70%;
  text-align: center;
}
</style>
north-glass-erp/northglass-erp/src/views/pp/report/TaskCompletionStatus.vue
New file
@@ -0,0 +1,118 @@
<script lang="ts" setup>
import {reactive, ref} from 'vue'
const defaultTime = ref<[Date, Date]>([
  new Date(2000, 1, 1, 0, 0, 0),
  new Date(2000, 2, 1, 23, 59, 59),
])
// do not use same name with ref
const form = reactive({
  name: '',
  region: '',
  date1: '',
  date2: '',
  delivery: false,
  type: [],
  resource: '',
  desc: '',
})
const value = ref('')
const options = [
  {
    value: 'Option1',
    label: 'Option1',
  },
  {
    value: 'Option2',
    label: 'Option2',
  },
  {
    value: 'Option3',
    label: 'Option3',
  },
]
const tableData = [
  {
    1:'西安高科幕墙门窗有限公司   ',
    2:'银隆广场',
    3:'补8',
    4:'NG23120702',
    5:'中空玻璃',
    6:'双平钢中空',
    7:'1',
    8:'1.88',
    9:'',
    10:'',
    11:'2023-12-17',
    12:'5',
    13:'5',
    14:'5',
  },
]
</script>
<!--任务完成情况-->
<template>
  <div class="div-main">
    <div id="selectForm">
      <el-row :gutter="0">
<!--        <el-input placeholder="销售单号" v-model="form.name" style="width: 150px"/>-->
<!--        <el-input placeholder="项目名称" v-model="form.name" style="width: 150px"/>-->
        &nbsp;&nbsp;
        <el-date-picker
            v-model="form.date1"
            type="daterange"
            start-placeholder="开始时间"
            end-placeholder="结束时间"
            :default-time="defaultTime"
            style="width: 120px"
        />
        &nbsp;&nbsp;
        <el-select v-model="value" class="m-2" placeholder="查询类型">
          <el-option
              v-for="item in options"
              :key="item.value"
              :label="item.label"
              :value="item.value"
          />
        </el-select>
        <el-button type="primary">查询</el-button>
      </el-row>
    </div>
    <div>
      <el-table :data="tableData" border style="width: 100%" height="100%">
        <el-table-column prop="1" label="客户名称" :show-overflow-tooltip='true'/>
        <el-table-column prop="2" label="项目名称" :show-overflow-tooltip='true'/>
        <el-table-column prop="3" label="批次" :show-overflow-tooltip='true' />
        <el-table-column prop="4" label="销售单号" width="120px" />
        <el-table-column prop="5" label="产品大类" />
        <el-table-column prop="6" label="产品小类" width="120px"/>
        <el-table-column prop="7" label="订单数"/>
        <el-table-column prop="8" label="总面积"/>
        <el-table-column prop="9" label="发货数量" :show-overflow-tooltip='true' />
        <el-table-column prop="10" label="发货面积"  />
        <el-table-column prop="11" label="报表日期"  width="120px" />
        <el-table-column prop="12" label="切割"  />
        <el-table-column prop="13" label="磨边"  />
        <el-table-column prop="14" label="钢化"  />
      </el-table><!-- <h1>{{msg}}</h1> -->
    </div>
  </div>
</template>
<style scoped>
.div-main{
  width: 100%;
  height: 100%;
}
#selectForm {
  width: 70%;
  text-align: center;
}
</style>
north-glass-erp/northglass-erp/src/views/pp/report/TeamOutput.vue
New file
@@ -0,0 +1,120 @@
<script lang="ts" setup>
import {reactive, ref} from 'vue'
const defaultTime = ref<[Date, Date]>([
  new Date(2000, 1, 1, 0, 0, 0),
  new Date(2000, 2, 1, 23, 59, 59),
])
// do not use same name with ref
const form = reactive({
  name: '',
  region: '',
  date1: '',
  date2: '',
  delivery: false,
  type: [],
  resource: '',
  desc: '',
})
const value = ref('')
const options = [
  {
    value: 'Option1',
    label: 'Option1',
  },
  {
    value: 'Option2',
    label: 'Option2',
  },
  {
    value: 'Option3',
    label: 'Option3',
  },
]
const tableData = [
  {
    1:'2023-01-01',
    2:'钢化',
    3:'钢化一班',
    4:'银川大楼',
    5:'NG23010121A01',
    6:'中空玻璃',
    7:'平中空夹胶',
    8:'5mmLYE-70平钢(外)+20mmA(密)+5mm超白平钢(内)',
    9:'精磨',
    10:'普型',
    11:'5',
    12:'11',
    13:'41.14',
    14:'123.33',
    15:'',
  },
]
</script>
<!--班组产量-->
<template>
  <div class="div-main">
    <div id="selectForm">
      <el-row :gutter="0">
<!--        <el-input placeholder="班组名称" v-model="form.name" style="width: 150px"/>-->
<!--        <el-input placeholder="厚度" v-model="form.name" style="width: 50px"/>-->
        &nbsp;&nbsp;
        <el-date-picker
            v-model="form.date1"
            type="daterange"
            start-placeholder="开始时间"
            end-placeholder="结束时间"
            :default-time="defaultTime"
        />
        &nbsp;&nbsp;
        <el-select v-model="value" class="m-2" placeholder="查询类型">
          <el-option
              v-for="item in options"
              :key="item.value"
              :label="item.label"
              :value="item.value"
              style="width: 100px"
          />
        </el-select>
        <el-button type="primary">查询</el-button>
      </el-row>
    </div>
    <div>
      <el-table :data="tableData" border style="width: 100%" height="100%">
        <el-table-column prop="1" label="报工时间" width="100px"  />
        <el-table-column prop="2" label="工序"/>
        <el-table-column prop="3" label="班组名称" width="100px" :show-overflow-tooltip='true' />
        <el-table-column prop="4" label="项目名称" width="100px"  :show-overflow-tooltip='true'/>
        <el-table-column prop="5" label="流程卡号" width="130px"/>
        <el-table-column prop="6" label="产品大类" width="100px"/>
        <el-table-column prop="7" label="产品小类" width="100px"/>
        <el-table-column prop="8" label="在制品名称"  width="120px" :show-overflow-tooltip='true'/>
        <el-table-column prop="9" label="磨边类型" width="90px" :show-overflow-tooltip='true' />
        <el-table-column prop="10" label="形状"  />
        <el-table-column prop="11" label="厚度"  />
        <el-table-column prop="12" label="完工数量" :show-overflow-tooltip='true' width="100px" />
        <el-table-column prop="13" label="完工面积"  width="100px"/>
        <el-table-column prop="14" label="平方毫米"  width="100px"/>
        <el-table-column prop="15" label="包装方式"  width="100px"/>
      </el-table><!-- <h1>{{msg}}</h1> -->
    </div>
  </div>
</template>
<style scoped>
.div-main{
  width: 100%;
  height: 100%;
}
#selectForm {
  width: 70%;
  text-align: center;
}
</style>
north-glass-erp/northglass-erp/src/views/pp/report/WorkInProgress.vue
New file
@@ -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超白【LYTM-46】平钢',
    16:'8mm超白【LYTM-46】平钢',
    17:'0',
  },
]
</script>
<!--在制品报表-->
<template>
  <div class="div-main">
    <div id="selectForm">
      <el-row :gutter="0">
<!--        <el-input placeholder="销售单号" v-model="form.name" style="width: 150px"/>-->
<!--        <el-input placeholder="项目名称" v-model="form.name" style="width: 150px"/>-->
        &nbsp;&nbsp;
        <el-date-picker
            v-model="form.date1"
            type="daterange"
            start-placeholder="开始时间"
            end-placeholder="结束时间"
            :default-time="defaultTime"
            style="width: 100px"
        />
        &nbsp;&nbsp;
        <el-select v-model="value" class="m-2" placeholder="查询类型">
          <el-option
              v-for="item in options"
              :key="item.value"
              :label="item.label"
              :value="item.value"
          />
        </el-select>
        <el-button type="primary">查询</el-button>
      </el-row>
    </div>
    <div>
      <el-table :data="tableData" border style="width: 100%" height="100%">
        <el-table-column prop="1" label="工序" />
        <el-table-column prop="2" label="流程卡号" width="120px" :show-overflow-tooltip='true'/>
        <el-table-column prop="3" label="客户名称" width="120px" :show-overflow-tooltip='true' />
        <el-table-column prop="4" label="项目名称" width="120px" :show-overflow-tooltip='true'/>
        <el-table-column prop="5" label="批次" />
        <el-table-column prop="6" label="序号" />
        <el-table-column prop="7" label="形状"/>
        <el-table-column prop="8" label="楼层编号" width="120px" :show-overflow-tooltip='true'/>
        <el-table-column prop="9" label="工艺流程" width="120px" :show-overflow-tooltip='true' />
        <el-table-column prop="10" label="订单数"  />
        <el-table-column prop="11" label="宽"   />
        <el-table-column prop="12" label="高" :show-overflow-tooltip='true' />
        <el-table-column prop="13" label="库存数"  />
        <el-table-column prop="14" label="库存面积"  width="100px"/>
        <el-table-column prop="15" label="成品名称" width="120px"  :show-overflow-tooltip='true'/>
        <el-table-column prop="16" label="在制品名称"  width="120px" :show-overflow-tooltip='true'/>
        <el-table-column prop="17" label="弯钢半径"  width="100px"/>
      </el-table><!-- <h1>{{msg}}</h1> -->
    </div>
  </div>
</template>
<style scoped>
.div-main{
  width: 100%;
  height: 100%;
}
#selectForm {
  width: 70%;
  text-align: center;
}
</style>
north-glass-erp/northglass-erp/src/views/pp/report/Yield.vue
New file
@@ -0,0 +1,105 @@
<script lang="ts" setup>
import {reactive, ref} from 'vue'
const defaultTime = ref<[Date, Date]>([
  new Date(2000, 1, 1, 0, 0, 0),
  new Date(2000, 2, 1, 23, 59, 59),
])
// do not use same name with ref
const form = reactive({
  name: '',
  region: '',
  date1: '',
  date2: '',
  delivery: false,
  type: [],
  resource: '',
  desc: '',
})
const value = ref('')
const options = [
  {
    value: 'Option1',
    label: 'Option1',
  },
  {
    value: 'Option2',
    label: 'Option2',
  },
  {
    value: 'Option3',
    label: 'Option3',
  },
]
const tableData = [
  {
    1:'夹层',
    2:'NG23103001',
    3:'慕青文化',
    4:'10mmLYTM-140弯钢化(外)+2.28PVB透明+10mm白玻弯钢化(内)',
    5:'256.67',
    6:'7.94',
    7:'264.61',
    8:'97.0%',
  },
]
</script>
<!--成品率报表-->
<template>
  <div class="div-main">
    <div id="selectForm">
      <el-row :gutter="0">
<!--        <el-input placeholder="工序" v-model="form.name" style="width: 100px"/>-->
<!--        <el-input placeholder="客户名称" v-model="form.name" style="width: 120px"/>-->
        &nbsp;&nbsp;
        <el-date-picker
            v-model="form.date1"
            type="daterange"
            start-placeholder="开始时间"
            end-placeholder="结束时间"
            :default-time="defaultTime"
        />
        &nbsp;&nbsp;
        <el-select v-model="value" class="m-2" placeholder="查询类型">
          <el-option
              v-for="item in options"
              :key="item.value"
              :label="item.label"
              :value="item.value"
          />
        </el-select>
        <el-button type="primary">查询</el-button>
      </el-row>
    </div>
    <div>
      <el-table :data="tableData" border style="width: 100%" height="100%">
        <el-table-column prop="1" label="工序" />
        <el-table-column prop="2" label="销售单号"/>
        <el-table-column prop="3" label="客户名称" :show-overflow-tooltip='true' />
        <el-table-column prop="4" label="成品名称"  :show-overflow-tooltip='true'/>
        <el-table-column prop="5" label="完工面积" />
        <el-table-column prop="6" label="次破面积" />
        <el-table-column prop="7" label="总面积"/>
        <el-table-column prop="8" label="成品率"/>
      </el-table><!-- <h1>{{msg}}</h1> -->
    </div>
  </div>
</template>
<style scoped>
.div-main{
  width: 100%;
  height: 100%;
}
#selectForm {
  width: 70%;
  text-align: center;
}
</style>
north-glass-erp/northglass-erp/src/views/pp/reportingWorks/AddReportingWork.vue
New file
@@ -0,0 +1,259 @@
<script setup>
import { reactive } from 'vue'
import {Open} from "@element-plus/icons-vue";
// do not use same name with ref
const form = reactive({
  lckh:'',
})
const tableData = [
  {
    serialNumber:'1',
    singlePieceName: '6mm白玻平钢(外)',
    marking: '1',
    pieces: '(外)',
    processCardNumber: '11',
    width: '575',
    height:"2241",
    shape: '普形',
    upCompletedQuantity: '12',
    completedQuantity: '1',
    numberBroken:'',
    availableUse:'',
    returnProcess:'',
    reasonType: '机器',
    reasonDamage:'气泡超标',
    available:'',
    reworkProcess:'',
    responsibilityProcess:'中空',
    responsibilityTeams:'中空一班',
    responsibilityPersonnel:'',
    responsibilityDevice:'中空3#线',
    completed:'',
    onceBroken:'',
  },
  {
    serialNumber:'1',
    singlePieceName: '6mm白玻平钢(内)',
    marking: '2',
    pieces: '(内)',
    processCardNumber: '11',
    width: '575',
    height:"2241",
    shape: '普形',
    upCompletedQuantity: '12',
    completedQuantity: '1',
    numberBroken:'',
    availableUse:'',
    returnProcess:'',
    reasonType: '机器',
    reasonDamage:'气泡超标',
    available:'',
    reworkProcess:'',
    responsibilityProcess:'中空',
    responsibilityTeams:'中空一班',
    responsibilityPersonnel:'',
    responsibilityDevice:'中空3#线',
    completed:'',
    onceBroken:'',
  },
  {
    serialNumber:'2',
    singlePieceName: '8mm白玻平钢(外)',
    marking: '1',
    pieces: '(外)',
    processCardNumber: '11',
    width: '575',
    height:"2241",
    shape: '普形',
    upCompletedQuantity: '12',
    completedQuantity: '1',
    numberBroken:'',
    availableUse:'',
    returnProcess:'',
    reasonType: '机器',
    reasonDamage:'气泡超标',
    available:'',
    reworkProcess:'',
    responsibilityProcess:'中空',
    responsibilityTeams:'中空一班',
    responsibilityPersonnel:'',
    responsibilityDevice:'中空3#线',
    completed:'',
    onceBroken:'',
  },
  {
    serialNumber:'2',
    singlePieceName: '8mm白玻平钢(内)',
    marking: '2',
    pieces: '(内)',
    processCardNumber: '11',
    width: '575',
    height:"2241",
    shape: '普形',
    upCompletedQuantity: '12',
    completedQuantity: '1',
    numberBroken:'',
    availableUse:'',
    returnProcess:'',
    reasonType: '机器',
    reasonDamage:'气泡超标',
    available:'',
    reworkProcess:'',
    responsibilityProcess:'中空',
    responsibilityTeams:'中空一班',
    responsibilityPersonnel:'',
    responsibilityDevice:'中空3#线',
    completed:'',
    onceBroken:'',
  },
]
</script>
<template>
<div>
  <div id="head">
    <el-input placeholder="流程卡号" v-model="form.name" style="width: 200px"/>
    &nbsp;
    <select class="processesSt">
      <option>报工工序</option>
      <option value="切割">切割</option>
      <option value="磨边">磨边</option>
      <option value="钢化">钢化</option>
    </select>
    &nbsp;
    <el-button type="primary">审核通过</el-button>
    <el-button type="primary">审核不通过</el-button>
    &nbsp;
    <label>流程卡面积:xxx平方米</label>
  </div>
  <div>
    <table id="titleTable" style="border: 1px solid black;">
      <tr>
        <td>销售单号</td>
        <td>NG23120801</td>
        <td>生产订单号</td>
        <td>NG23120801A</td>
        <td>客户编码</td>
        <td>123213</td>
        <td>客户名称</td>
        <td>xxxx</td>
        <td>项目名称</td>
        <td>xxxxxxx</td>
      </tr>
      <tr>
        <td>报工设备</td>
        <td>中空一线</td>
        <td>上工序</td>
        <td>钢化</td>
        <td>可报工数量</td>
        <td>12</td>
        <td>本工序完工</td>
        <td>11</td>
        <td>本工序次破</td>
        <td>1</td>
      </tr>
      <tr>
        <td>报工班组</td>
        <td>中空一班</td>
        <td>班次</td>
        <td>早班</td>
        <td>下工序</td>
        <td>包装</td>
        <td>报工时间</td>
        <td><input class="chaxun" id="bgsj" maxlength="255"  type="datetime-local" name="bgsj"></td>
        <td>备注</td>
        <td>1</td>
      </tr>
      <tr>
        <td></td>
        <td></td>
        <td><el-button  type="primary">保存</el-button></td>
        <td><el-button  type="primary">保存并审核</el-button></td>
        <td><el-button  type="primary">清空报工数量</el-button></td>
        <td><el-button  type="primary">完工相同</el-button></td>
        <td><el-button  type="primary">次破相同</el-button></td>
        <td><el-button  type="primary">完工一列相同</el-button></td>
        <td><el-button  type="primary">次破一列相同</el-button></td>
        <td><el-button  type="primary">是否允许</el-button></td>
      </tr>
    </table>
  </div>
  <div>
    <el-table :data="tableData" border style="width: 100%" height="100%">
      <el-table-column  prop="serialNumber" label="序号" width="60" />
      <el-table-column prop="singlePieceName" :show-overflow-tooltip='true' label="单片名称" width="120" />
      <el-table-column prop="marking" label="标记" width="60" />
      <el-table-column prop="pieces" label="片标记" width="70" />
      <el-table-column prop="processCardNumber" label="流程卡数量" width="95" />
      <el-table-column prop="width" label="宽" width="60" />
      <el-table-column prop="height" label="高" width="60" />
      <el-table-column prop="shape" label="形状" :show-overflow-tooltip='true' width="60" />
      <el-table-column prop="upCompletedQuantity" label="上工完工数量" width="110" />
      <el-table-column prop="completedQuantity" label="完工数量" width="85" />
      <el-table-column prop="numberBroken" label="次破数量" width="85" />
      <el-table-column prop="availableUse" label="可利用" width="70" />
      <el-table-column prop="returnProcess" label="退回工序" width="85" />
      <el-table-column prop="reasonType" label="次破类型" :show-overflow-tooltip='true' width="85" />
      <el-table-column prop="reasonDamage" label="次破原因" :show-overflow-tooltip='true' width="85" />
      <el-table-column prop="responsibilityDevice" label="责任设备" :show-overflow-tooltip='true' width="85" />
      <el-table-column prop="responsibilityProcess" label="责任工序" :show-overflow-tooltip='true' width="85" />
      <el-table-column prop="responsibilityTeams" label="责任班组" :show-overflow-tooltip='true' width="85" />
      <el-table-column prop="responsibilityPersonnel" label="责任人员" :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>
north-glass-erp/northglass-erp/src/views/pp/reportingWorks/QualityInReviewDetail.vue
New file
@@ -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="责任设备" :show-overflow-tooltip='true' width="85" />
        <el-table-column prop="responsibilityProcess" label="责任工序" :show-overflow-tooltip='true' width="85" />
        <el-table-column prop="responsibilityTeams" label="责任班组" :show-overflow-tooltip='true' width="85" />
        <el-table-column prop="responsibilityPersonnel" label="责任人员" :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>
north-glass-erp/northglass-erp/src/views/pp/reportingWorks/QualityInspectionReview.vue
New file
@@ -0,0 +1,157 @@
<script lang="ts" setup>
import { reactive } from 'vue'
import { ref } from 'vue'
const value = ref('')
const defaultTime = ref<[Date, Date]>([
  new Date(2000, 1, 1, 0, 0, 0),
  new Date(2000, 2, 1, 23, 59, 59),
])
// do not use same name with ref
const form = reactive({
  name: '',
  region: '',
  date1: '',
  date2: '',
  delivery: false,
  type: [],
  resource: '',
  desc: '',
})
const tableData = [
  {
    reportingWorkNo: 'BG2312070001',
    reportingWorkTime: '2023-12-01 08:01:22',
    processCard: 'NG231207A01',
    entryName: '信合春天里',
    customerName: 'XXXX',
    thisProcess: '中空',
    teamName:"中空一班",
    finishedNumber: '11',
    wornNumber: '1',
    responsibilityProcess: '钢化',
    previousProcess:'钢化',
    nextProcess:'包装',
    qualityInspector: 'XXX',
    qualityState: '1',
    notes: '1)按企标2)每片玻璃标签贴室外面。内片玻璃打“3C商标”,统一打在玻璃“宽度”方向右下角4)按批次单独落架。',
  },
  {
    reportingWorkNo: 'BG2312070002',
    reportingWorkTime: '2023-12-01 08:01:22',
    processCard: 'NG231207A01',
    entryName: '信合春天里',
    customerName: 'XXXX',
    thisProcess: '中空',
    teamName:"中空一班",
    finishedNumber: '11',
    wornNumber: '1',
    responsibilityProcess: '钢化',
    previousProcess:'钢化',
    nextProcess:'包装',
    qualityInspector: 'XXX',
    qualityState: '1',
    notes: '1)按企标2)每片玻璃标签贴室外面。内片玻璃打“3C商标”,统一打在玻璃“宽度”方向右下角4)按批次单独落架。',
  },
  {
    reportingWorkNo: 'BG2312070003',
    reportingWorkTime: '2023-12-01 08:01:22',
    processCard: 'NG231207A01',
    entryName: '信合春天里',
    customerName: 'XXXX',
    thisProcess: '中空',
    teamName:"中空一班",
    finishedNumber: '11',
    wornNumber: '1',
    responsibilityProcess: '钢化',
    previousProcess:'钢化',
    nextProcess:'包装',
    qualityInspector: 'XXX',
    qualityState: '1',
    notes: '1)按企标2)每片玻璃标签贴室外面。内片玻璃打“3C商标”,统一打在玻璃“宽度”方向右下角4)按批次单独落架。',
  },
  {
    reportingWorkNo: 'BG2312070004',
    reportingWorkTime: '2023-12-01 08:01:22',
    processCard: 'NG231207A01',
    entryName: '信合春天里',
    customerName: 'XXXX',
    thisProcess: '中空',
    teamName:"中空一班",
    finishedNumber: '11',
    wornNumber: '1',
    responsibilityProcess: '钢化',
    previousProcess:'钢化',
    nextProcess:'包装',
    qualityInspector: 'XXX',
    qualityState: '1',
    notes: '1)按企标2)每片玻璃标签贴室外面。内片玻璃打“3C商标”,统一打在玻璃“宽度”方向右下角4)按批次单独落架。',
  },
]
</script>
<template>
  <div>
    <div style="width: 600px">
      <el-row :gutter="0">
<!--        <el-input placeholder="流程卡号" v-model="form.name" style="width: 200px"/>-->
<!--        &nbsp;&nbsp;-->
        <select class="processesSt">
          <option value="未审核">未审核</option>
          <option value="已审核">已审核</option>
        </select>
        &nbsp;&nbsp;
        <el-date-picker
            v-model="value"
            type="daterange"
            start-placeholder="开始时间"
            end-placeholder="结束时间"
            :default-time="defaultTime"
        />
        &nbsp;&nbsp;
        <el-button type="primary">查询</el-button>
      </el-row>
    </div>
    <div>
      <el-table :data="tableData" border style="width: 100%" height="100%">
        <el-table-column fixed label="操作" width="60"  >
          <el-button link type="primary" size="small">通过</el-button>
        </el-table-column>
        <el-table-column sortable prop="reportingWorkNo" label="报工编号" width="120" >
          <template v-slot="scope">
            <router-link :to="{path:'QualityInReviewDetail'}" >{{scope.row.reportingWorkNo}}</router-link>
          </template>
        </el-table-column>
        <el-table-column prop="reportingWorkTime" label="报工时间" width="155" />
        <el-table-column prop="processCard" label="流程卡号" width="125" />
        <el-table-column prop="entryName" label="项目名称"  :show-overflow-tooltip='true' width="155" />
        <el-table-column prop="customerName" label="客户名称"  :show-overflow-tooltip='true' width="155" />
        <el-table-column prop="thisProcess" label="本工序" width="70" />
        <el-table-column prop="teamName" label="报工班组" width="95" />
        <el-table-column prop="finishedNumber" label="完工数量" width="85" />
        <el-table-column prop="wornNumber" label="次破数量" width="85" />
        <el-table-column prop="responsibilityProcess" label="责任工序" 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>
north-glass-erp/northglass-erp/src/views/pp/reportingWorks/ReportingWorkDetail.vue
New file
@@ -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扇MLC2025-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扇MLC2025-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扇MLC2025-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扇MLC2025-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="责任工序" :show-overflow-tooltip='true' width="125" />
      <el-table-column prop="responsibilityTeams" label="责任班组" :show-overflow-tooltip='true' width="125" />
      <el-table-column prop="responsibilityPersonnel" label="责任人员" :show-overflow-tooltip='true' width="125" />
      <el-table-column prop="responsibilityDevice" label="责任设备" :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>
north-glass-erp/northglass-erp/src/views/pp/reportingWorks/ReportingWorks.vue
New file
@@ -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>
north-glass-erp/northglass-erp/src/views/pp/reportingWorks/SelectReportingWorks.vue
New file
@@ -0,0 +1,164 @@
<script lang="ts" setup>
import {reactive, ref} from 'vue'
// do not use same name with ref
const form = reactive({
  name: '',
  region: '',
  date1: '',
  date2: '',
  delivery: false,
  type: [],
  resource: '',
  desc: '',
})
const value = ref('')
const defaultTime = ref<[Date, Date]>([
  new Date(2000, 1, 1, 0, 0, 0),
  new Date(2000, 2, 1, 23, 59, 59),
])
const tableData = [
  {
    reportingWorkNo: 'BG2312080011',
    reportingWorkTime: '2023-12-08 09:05:58',
    processCard: 'NG23120801A01',
    entryName: '信合春天里',
    batch: '四批二',
    device:'大海利宁',
    thisProcess: '切割',
    finishedNumber: '13',
    finishedArea: '44.22',
    wornNumber: '',
    wornArea: '',
    teamName:'切割一班'
  },
  {
    reportingWorkNo: 'BG2312080013',
    reportingWorkTime: '2023-12-08 09:05:58',
    processCard: 'NG23120801A01',
    entryName: '信合春天里',
    batch: '一批二',
    device:'大海利宁',
    thisProcess: '切割',
    finishedNumber: '13',
    finishedArea: '44.22',
    wornNumber: '',
    wornArea: '',
    teamName:'切割一班'
  },
  {
    reportingWorkNo: 'BG2311080025',
    reportingWorkTime: '2023-12-08 09:05:58',
    processCard: 'NG23120801A01',
    entryName: '信合春天里',
    batch: '一批二',
    device:'大海利宁',
    thisProcess: '切割',
    finishedNumber: '13',
    finishedArea: '44.22',
    wornNumber: '',
    wornArea: '',
    teamName:'切割一班'
  },
  {
    reportingWorkNo: 'BG2303080025',
    reportingWorkTime: '2023-12-08 09:05:58',
    processCard: 'NG23120801A01',
    entryName: '信合春天里',
    batch: '一批二',
    device:'大海利宁',
    thisProcess: '切割',
    finishedNumber: '13',
    finishedArea: '44.22',
    wornNumber: '',
    wornArea: '',
    teamName:'切割一班'
  },
  {
    reportingWorkNo: 'BG2312080001',
    reportingWorkTime: '2023-12-08 09:05:58',
    processCard: 'NG23120801A01',
    entryName: '信合春天里',
    batch: '一批二',
    device:'大海利宁',
    thisProcess: '切割',
    finishedNumber: '13',
    finishedArea: '44.22',
    wornNumber: '',
    wornArea: '',
    teamName:'切割一班'
  },
  {
    reportingWorkNo: 'BG2312080015',
    reportingWorkTime: '2023-12-08 09:05:58',
    processCard: 'NG23120801A01',
    entryName: '信合春天里',
    batch: '一批二',
    device:'大海利宁',
    thisProcess: '切割',
    finishedNumber: '13',
    finishedArea: '44.22',
    wornNumber: '',
    wornArea: '',
    teamName:'切割一班'
  },
]
</script>
<template>
  <div>
    <div id="selectForm" >
      <el-row :gutter="0">
<!--          <el-input placeholder="流程卡号" v-model="form.name" style="width: 200px"/>-->
<!--        &nbsp;&nbsp;-->
<!--          <el-input placeholder="项目名称" v-model="form.name" style="width: 200px"/>-->
<!--        &nbsp;&nbsp;-->
        <el-date-picker
            v-model="value"
            type="daterange"
            start-placeholder="报工开始时间"
            end-placeholder="结束时间"
            :default-time="defaultTime"
        />
        &nbsp;&nbsp;
        <el-button type="primary">查询</el-button>
      </el-row>
    </div>
    <el-table :data="tableData" border style="width: 100%" height="100%">
      <el-table-column fixed label="操作" width="140"  >
        <el-button link type="primary" size="small">删除</el-button>
        <el-button link type="primary" size="small">编辑</el-button>
        <el-button link type="primary" size="small">反审</el-button>
      </el-table-column>
      <el-table-column sortable prop="reportingWorkNo" label="报工编号" width="120" >
        <template v-slot="scope">
          <router-link :to="{path:'ReportingWorkDetail'}" >{{scope.row.reportingWorkNo}}</router-link>
        </template>
      </el-table-column>
      <el-table-column prop="reportingWorkTime" label="报工时间" width="155" />
      <el-table-column prop="processCard" label="流程卡号" width="135" />
      <el-table-column prop="entryName" label="项目名称" width="155" />
      <el-table-column prop="batch" label="批次" width="75" />
      <el-table-column prop="device" label="设备" width="100" />
      <el-table-column prop="thisProcess" label="本工序" width="100" />
      <el-table-column prop="finishedNumber" label="本工序完工" width="100" />
      <el-table-column prop="finishedArea" label="完工面积" width="90" />
      <el-table-column prop="wornNumber" label="本工序次破" width="100" />
      <el-table-column prop="wornArea" label="次破面积" width="90" />
      <el-table-column prop="teamName" label="班组名称"  width="150" />
    </el-table><!-- <h1>{{msg}}</h1> -->
  </div>
</template>
<style scoped>
#selectForm {
  width: 45%;
  height: 100%;
  text-align: center;
}
</style>
north-glass-erp/northglass-erp/src/views/pp/rework/AddRework.vue
New file
@@ -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="责任设备" :show-overflow-tooltip='true' width="85" />
        <el-table-column prop="teams" label="责任班组" :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>
north-glass-erp/northglass-erp/src/views/pp/rework/Rework.vue
New file
@@ -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>
north-glass-erp/northglass-erp/src/views/pp/rework/SelectRework.vue
New file
@@ -0,0 +1,159 @@
<script setup>
import {reactive, ref} from 'vue'
// do not use same name with ref
const form = reactive({
  lckh:'',
  xsdh:'',
})
const value = ref('')
const defaultTime = ref<[Date, Date]>([
  new Date(2000, 1, 1, 0, 0, 0),
  new Date(2000, 2, 1, 23, 59, 59),
])
const tableData = [
  {
    reworkNumber:'FG20202020',
    salesOrderNo:'NG23010101',
    processCardNo:'NG23010101A01',
    entryName:'xxxx',
    batch:'二批三',
    serialNumber:'1',
    area:'23.11',
    qualityInspector:"张三",
    number:'1',
    singlePieceName: '6mm白玻平钢(外)',
    marking: '1',
    pieces: '(外)',
    width: '575',
    height:"2241",
    shape: '普形',
    reworkTeams:'XX二班',
    type: '机器',
    damage:'气泡超标',
    reworkProcess:'XXXX',
    device:'XXX'
  },
  {
    reworkNumber:'FG20203333',
    salesOrderNo:'NG23010101',
    processCardNo:'NG23010101A01',
    entryName:'xxxx',
    batch:'二批三',
    serialNumber:'1',
    area:'23.11',
    qualityInspector:"张三",
    number:'1',
    singlePieceName: '6mm白玻平钢(外)',
    marking: '1',
    pieces: '(外)',
    width: '575',
    height:"2241",
    shape: '普形',
    reworkTeams:'XX二班',
    type: '机器',
    damage:'气泡超标',
    reworkProcess:'XXXX',
    device:'XXX'
  },
]
</script>
<template>
  <div>
    <div id="head" >
<!--      <el-input placeholder="流程卡号" v-model="form.xsdh" style="width: 200px"/>-->
<!--      &nbsp;-->
<!--      <el-input placeholder="项目名称" v-model="form.lckh" style="width: 200px"/>-->
<!--      &nbsp;-->
      <el-date-picker
          v-model="value"
          type="daterange"
          start-placeholder="开始时间"
          end-placeholder="结束时间"
          :default-time="defaultTime"
      />
      <el-button type="primary">查询</el-button>
    </div>
    <div>
      <el-table :data="tableData" border style="width: 100%" height="100%">
        <el-table-column fixed label="操作" width="100"  >
          <el-button link type="primary" size="small">编辑</el-button>
          <el-button link type="primary" size="small">审核</el-button>
        </el-table-column>
        <el-table-column prop="reworkNumber" label="返工编号" width="155" />
        <el-table-column sortable prop="salesOrderNo" label="销售单号" width="120" />
        <el-table-column sortable prop="processCardNo" label="流程卡号" width="130" />
        <el-table-column prop="entryName" label="项目名称" width="120" :show-overflow-tooltip='true'/>
        <el-table-column  prop="batch" label="批次" width="70" />
        <el-table-column  prop="serialNumber" label="序号" width="60" />
        <el-table-column prop="singlePieceName" :show-overflow-tooltip='true' label="单片名称" width="120" />
        <el-table-column prop="marking" label="标记" width="60" />
        <el-table-column prop="pieces" label="片标记" width="70" />
        <el-table-column prop="number" label="数量" width="95" />
        <el-table-column prop="width" label="宽" width="60" />
        <el-table-column prop="height" label="高" width="60" />
        <el-table-column prop="shape" label="形状" :show-overflow-tooltip='true' width="60" />
        <el-table-column prop="type" label="返工类型" :show-overflow-tooltip='true' width="85" />
        <el-table-column prop="damage" label="返工原因" :show-overflow-tooltip='true' width="85" />
        <el-table-column prop="device" label="责任设备" :show-overflow-tooltip='true' width="85" />
        <el-table-column prop="teams" label="责任班组" :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>
north-glass-erp/northglass-erp/src/views/pp/workOrder/AddWorkOrder.vue
New file
@@ -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>
north-glass-erp/northglass-erp/src/views/pp/workOrder/ReleaseWorkOrder.vue
New file
@@ -0,0 +1,146 @@
<script lang="ts" setup>
import { reactive } from 'vue'
// do not use same name with ref
const form = reactive({
  name: '',
  region: '',
  date1: '',
  date2: '',
  delivery: false,
  type: [],
  resource: '',
  desc: '',
})
const tableData = [
  {
    salesOrderNo: 'NG231201',
    productionOrderNo: 'NG231201A',
    entryName: '信合春天里',
    batch: '23批',
    productName: '5mm白玻平钢(外)+0.76PVB透明+5mm白玻平钢(内)',
    monolithicTotalArea: '509.78',
    total: '169',
    productTotalArea: '175.31',
    perimeter: '99.84',
    radius: '0',
    createTime: '1)按企标2)每片玻璃标签贴室外面。内片玻璃打“3C商标”,统一打在玻璃“宽度”方向右下角4)按批次单独落架。',
  },
  {
    salesOrderNo: 'NG231201',
    productionOrderNo: 'NG231201A',
    entryName: '信合春天里',
    batch: '23批',
    productName: '5mm白玻平钢(外)+0.76PVB透明+5mm白玻平钢(内)',
    monolithicTotalArea: '509.78',
    total: '169',
    productTotalArea: '175.31',
    perimeter: '99.84',
    radius: '0',
    createTime: '1)按企标2)每片玻璃标签贴室外面。内片玻璃打“3C商标”,统一打在玻璃“宽度”方向右下角4)按批次单独落架。',
  },
  {
    salesOrderNo: 'NG231201',
    productionOrderNo: 'NG231201A',
    entryName: '信合春天里',
    batch: '23批',
    productName: '5mm白玻平钢(外)+0.76PVB透明+5mm白玻平钢(内)',
    monolithicTotalArea: '509.78',
    total: '169',
    productTotalArea: '175.31',
    perimeter: '99.84',
    radius: '0',
    createTime: '1)按企标2)每片玻璃标签贴室外面。内片玻璃打“3C商标”,统一打在玻璃“宽度”方向右下角4)按批次单独落架。',
  },
  {
    salesOrderNo: 'NG231201',
    productionOrderNo: 'NG231201A',
    entryName: '信合春天里',
    batch: '23批',
    productName: '5mm白玻平钢(外)+0.76PVB透明+5mm白玻平钢(内)',
    monolithicTotalArea: '509.78',
    total: '169',
    productTotalArea: '175.31',
    perimeter: '99.84',
    radius: '0',
    createTime: '1)按企标2)每片玻璃标签贴室外面。内片玻璃打“3C商标”,统一打在玻璃“宽度”方向右下角4)按批次单独落架。',
  },
  {
    salesOrderNo: 'NG231201',
    productionOrderNo: 'NG231201A',
    entryName: '信合春天里',
    batch: '23批',
    productName: '5mm白玻平钢(外)+0.76PVB透明+5mm白玻平钢(内)',
    monolithicTotalArea: '509.78',
    total: '169',
    productTotalArea: '175.31',
    perimeter: '99.84',
    radius: '0',
    createTime: '1)按企标2)每片玻璃标签贴室外面。内片玻璃打“3C商标”,统一打在玻璃“宽度”方向右下角4)按批次单独落架。',
  },
  {
    salesOrderNo: 'NG231201',
    productionOrderNo: 'NG231201A',
    entryName: '信合春天里',
    batch: '23批',
    productName: '5mm白玻平钢(外)+0.76PVB透明+5mm白玻平钢(内)',
    monolithicTotalArea: '509.78',
    total: '169',
    productTotalArea: '175.31',
    perimeter: '99.84',
    radius: '0',
    createTime: '1)按企标2)每片玻璃标签贴室外面。内片玻璃打“3C商标”,统一打在玻璃“宽度”方向右下角4)按批次单独落架。',
  },
  {
    salesOrderNo: 'NG231201',
    productionOrderNo: 'NG231201A',
    entryName: '信合春天里',
    batch: '23批',
    productName: '5mm白玻平钢(外)+0.76PVB透明+5mm白玻平钢(内)',
    monolithicTotalArea: '509.78',
    total: '169',
    productTotalArea: '175.31',
    perimeter: '99.84',
    radius: '0',
    createTime: '1)按企标2)每片玻璃标签贴室外面。内片玻璃打“3C商标”,统一打在玻璃“宽度”方向右下角4)按批次单独落架。',
  },
]
</script>
<template>
  <div>
  <div id="selectForm">
    <el-row :gutter="0">
      <el-input placeholder="销售单号" v-model="form.name" style="width: 200px"/>
      &nbsp;&nbsp;
      <el-button type="primary">查询</el-button>
    </el-row>
  </div>
  <div>
    <el-table :data="tableData" border style="width: 100%" height="100%">
      <el-table-column fixed label="操作" width="100"  >
        <el-button link type="primary" size="small">下达</el-button>
        <el-button link type="primary" size="small">取消</el-button>
      </el-table-column>
      <el-table-column sortable prop="salesOrderNo" label="销售单号" width="110"  />
      <el-table-column prop="productionOrderNo" label="生产订单号" :show-overflow-tooltip='true' width="110" />
      <el-table-column prop="entryName" label="项目名称" width="155" />
      <el-table-column prop="batch" label="批次" width="80" />
      <el-table-column prop="productName" label="产品名称" :show-overflow-tooltip='true' width="180" />
      <el-table-column prop="monolithicTotalArea" label="单片总面积" width="100" />
      <el-table-column prop="total" label="总数量" width="75" />
      <el-table-column prop="productTotalArea" label="成品总面积" width="100" />
      <el-table-column prop="perimeter" label="周长" width="100" />
      <el-table-column prop="radius" label="半径" width="70" />
      <el-table-column prop="createTime" label="加工要求" :show-overflow-tooltip='true' width="350" />
    </el-table><!-- <h1>{{msg}}</h1> -->
  </div>
  </div>
</template>
<style scoped>
</style>
north-glass-erp/northglass-erp/src/views/pp/workOrder/SelectAddWorkOrder.vue
New file
@@ -0,0 +1,136 @@
<script lang="ts" setup>
import { reactive } from 'vue'
// do not use same name with ref
const form = reactive({
  name: '',
  region: '',
  date1: '',
  date2: '',
  delivery: false,
  type: [],
  resource: '',
  desc: '',
})
const tableData = [
  {
    salesOrderNo: 'NG231201',
    customerName:"慕墙公司",
    entryName: '信合春天里',
    batch: '23批',
    originalFilmRequired: '2022/5/24XFPO202205202',
    orderType: '普通订单',
    salesman: 'XXX',
    processRequirements: '1)按企标2)每片玻璃标签贴室外面。内片玻璃打“3C商标”,统一打在玻璃“宽度”方向右下角4)按批次单独落架。',
    shipTo:'工地',
  },
  {
    salesOrderNo: 'NG231202',
    customerName:"大荒建材有限公司",
    entryName: '信合春天里',
    batch: '23批',
    originalFilmRequired: '2022/5/24XFPO202205202',
    orderType: '普通订单',
    salesman: 'XXX',
    processRequirements: '1)按企标2)每片玻璃标签贴室外面。内片玻璃打“3C商标”,统一打在玻璃“宽度”方向右下角4)按批次单独落架。',
    shipTo:'工地',
  },
  {
    salesOrderNo: 'NG231203',
    customerName:"建筑工程集团有限公司",
    entryName: '信合春天里',
    batch: '23批',
    originalFilmRequired: '2022/5/24XFPO202205202',
    orderType: '普通订单',
    salesman: 'XXX',
    processRequirements: '1)按企标2)每片玻璃标签贴室外面。内片玻璃打“3C商标”,统一打在玻璃“宽度”方向右下角4)按批次单独落架。',
    shipTo:'工地',
  },
  {
    salesOrderNo: 'NG231204',
    customerName:"慕墙公司",
    entryName: '信合春天里',
    batch: '23批',
    originalFilmRequired: '2022/5/24XFPO202205202',
    orderType: '普通订单',
    salesman: 'XXX',
    processRequirements: '1)按企标2)每片玻璃标签贴室外面。内片玻璃打“3C商标”,统一打在玻璃“宽度”方向右下角4)按批次单独落架。',
    shipTo:'工地',
  },
  {
    salesOrderNo: 'NG231205',
    customerName:"慕墙公司",
    entryName: '信合春天里',
    batch: '23批',
    originalFilmRequired: '2022/5/24XFPO202205202',
    orderType: '普通订单',
    salesman: 'XXX',
    processRequirements: '1)按企标2)每片玻璃标签贴室外面。内片玻璃打“3C商标”,统一打在玻璃“宽度”方向右下角4)按批次单独落架。',
    shipTo:'工地',
  },
  {
    salesOrderNo: 'NG231206',
    customerName:"慕墙公司",
    entryName: '信合春天里',
    batch: '23批',
    originalFilmRequired: '2022/5/24XFPO202205202',
    orderType: '普通订单',
    salesman: 'XXX',
    processRequirements: '1)按企标2)每片玻璃标签贴室外面。内片玻璃打“3C商标”,统一打在玻璃“宽度”方向右下角4)按批次单独落架。',
    shipTo:'工地',
  },
  {
    salesOrderNo: 'NG231207',
    customerName:"慕墙公司",
    entryName: '信合春天里',
    batch: '23批',
    originalFilmRequired: '2022/5/24XFPO202205202',
    orderType: '普通订单',
    salesman: 'XXX',
    processRequirements: '1)按企标2)每片玻璃标签贴室外面。内片玻璃打“3C商标”,统一打在玻璃“宽度”方向右下角4)按批次单独落架。',
    shipTo:'工地',
  },
]
</script>
<template>
  <div>
  <div id="selectForm">
    <el-row :gutter="0">
      <el-input placeholder="销售单号" v-model="form.name" style="width: 200px"/>
      &nbsp;&nbsp;
      <el-button type="primary">查询</el-button>
    </el-row>
  </div>
  <div>
    <el-table :data="tableData" border style="width: 100%" height="100%">
      <el-table-column sortable prop="salesOrderNo" label="销售单号" width="110" >
        <template v-slot="scope">
          <router-link :to="{path:'addWorkOrder'}" >{{scope.row.salesOrderNo}}</router-link>
        </template>
      </el-table-column>
      <el-table-column prop="customerName" label="客户名称" :show-overflow-tooltip='true' width="110" />
      <el-table-column prop="entryName" label="项目名称" width="135" />
      <el-table-column prop="batch" label="批次" width="80" />
      <el-table-column prop="originalFilmRequired" :show-overflow-tooltip='true' label="原片要求" width="200" />
      <el-table-column prop="orderType" label="订单类型" width="100" />
      <el-table-column prop="salesman" label="业务员" width="75" />
      <el-table-column prop="processRequirements" :show-overflow-tooltip='true' label="加工要求" width="400" />
      <el-table-column prop="shipTo" label="送货地址" width="100" />
    </el-table><!-- <h1>{{msg}}</h1> -->
  </div>
  </div>
</template>
<style scoped>
</style>
north-glass-erp/northglass-erp/src/views/pp/workOrder/SelectWorkOrder.vue
New file
@@ -0,0 +1,168 @@
<script lang="ts" setup>
import {reactive, ref} from 'vue'
const defaultTime = ref<[Date, Date]>([
  new Date(2000, 1, 1, 0, 0, 0),
  new Date(2000, 2, 1, 23, 59, 59),
])
// do not use same name with ref
const form = reactive({
  name: '',
  region: '',
  date1: '',
  date2: '',
  delivery: false,
  type: [],
  resource: '',
  desc: '',
})
const tableData = [
  {
    salesOrderNo: 'NG231201',
    productionOrderNo: 'NG231201A',
    entryName: '信合春天里',
    batch: '23批',
    productName: '5mm白玻平钢(外)+0.76PVB透明+5mm白玻平钢(内)',
    monolithicTotalArea: '509.78',
    total: '169',
    productTotalArea: '175.31',
    perimeter: '99.84',
    radius: '0',
    createTime: '1)按企标2)每片玻璃标签贴室外面。内片玻璃打“3C商标”,统一打在玻璃“宽度”方向右下角4)按批次单独落架。',
  },
  {
    salesOrderNo: 'NG231201',
    productionOrderNo: 'NG231201B',
    entryName: '信合春天里',
    batch: '23批',
    productName: '5mm白玻平钢(外)+0.76PVB透明+5mm白玻平钢(内)',
    monolithicTotalArea: '509.78',
    total: '169',
    productTotalArea: '175.31',
    perimeter: '99.84',
    radius: '0',
    createTime: '1)按企标2)每片玻璃标签贴室外面。内片玻璃打“3C商标”,统一打在玻璃“宽度”方向右下角4)按批次单独落架。',
  },
  {
    salesOrderNo: 'NG231202',
    productionOrderNo: 'NG231202A',
    entryName: '信合春天里',
    batch: '23批',
    productName: '5mm白玻平钢(外)+0.76PVB透明+5mm白玻平钢(内)',
    monolithicTotalArea: '509.78',
    total: '169',
    productTotalArea: '175.31',
    perimeter: '99.84',
    radius: '0',
    createTime: '1)按企标2)每片玻璃标签贴室外面。内片玻璃打“3C商标”,统一打在玻璃“宽度”方向右下角4)按批次单独落架。',
  },
  {
    salesOrderNo: 'NG231203',
    productionOrderNo: 'NG231203A',
    entryName: '信合春天里',
    batch: '23批',
    productName: '5mm白玻平钢(外)+0.76PVB透明+5mm白玻平钢(内)',
    monolithicTotalArea: '509.78',
    total: '169',
    productTotalArea: '175.31',
    perimeter: '99.84',
    radius: '0',
    createTime: '1)按企标2)每片玻璃标签贴室外面。内片玻璃打“3C商标”,统一打在玻璃“宽度”方向右下角4)按批次单独落架。',
  },
  {
    salesOrderNo: 'NG231204',
    productionOrderNo: 'NG231204A',
    entryName: '信合春天里',
    batch: '23批',
    productName: '5mm白玻平钢(外)+0.76PVB透明+5mm白玻平钢(内)',
    monolithicTotalArea: '509.78',
    total: '169',
    productTotalArea: '175.31',
    perimeter: '99.84',
    radius: '0',
    createTime: '1)按企标2)每片玻璃标签贴室外面。内片玻璃打“3C商标”,统一打在玻璃“宽度”方向右下角4)按批次单独落架。',
  },
  {
    salesOrderNo: 'NG231205',
    productionOrderNo: 'NG231205A',
    entryName: '信合春天里',
    batch: '23批',
    productName: '5mm白玻平钢(外)+0.76PVB透明+5mm白玻平钢(内)',
    monolithicTotalArea: '509.78',
    total: '169',
    productTotalArea: '175.31',
    perimeter: '99.84',
    radius: '0',
    createTime: '1)按企标2)每片玻璃标签贴室外面。内片玻璃打“3C商标”,统一打在玻璃“宽度”方向右下角4)按批次单独落架。',
  },
  {
    salesOrderNo: 'NG231206',
    productionOrderNo: 'NG231206A',
    entryName: '信合春天里',
    batch: '23批',
    productName: '5mm白玻平钢(外)+0.76PVB透明+5mm白玻平钢(内)',
    monolithicTotalArea: '509.78',
    total: '169',
    productTotalArea: '175.31',
    perimeter: '99.84',
    radius: '0',
    createTime: '1)按企标2)每片玻璃标签贴室外面。内片玻璃打“3C商标”,统一打在玻璃“宽度”方向右下角4)按批次单独落架。',
  },
]
</script>
<template>
  <div class="div-main">
    <div id="selectForm">
      <el-row :gutter="0">
        <el-input placeholder="销售单号" v-model="form.name" style="width: 200px"/>
        &nbsp;&nbsp;
        <el-date-picker
            v-model="form.date1"
            type="daterange"
            start-placeholder="开始时间"
            end-placeholder="结束时间"
            :default-time="defaultTime"
        />
        &nbsp;&nbsp;
        <el-button type="primary">查询</el-button>
      </el-row>
    </div>
    <div>
      <el-table :data="tableData" border style="width: 100%" height="100%">
        <el-table-column fixed label="操作" width="120"  >
          <el-button link type="primary" size="small">转工单</el-button>
          <el-button link type="primary" size="small">删除</el-button>
        </el-table-column>
        <el-table-column sortable prop="salesOrderNo" label="销售单号" width="110"  />
        <el-table-column prop="entryName" label="项目名称" width="155" />
        <el-table-column prop="batch" label="批次" width="80" />
        <el-table-column prop="productName" label="产品名称" :show-overflow-tooltip='true' width="180" />
        <el-table-column prop="monolithicTotalArea" label="单片总面积" width="100" />
        <el-table-column prop="total" label="总数量" width="75" />
        <el-table-column prop="productTotalArea" label="成品总面积" width="100" />
        <el-table-column prop="perimeter" label="周长" width="100" />
        <el-table-column prop="radius" label="半径" width="70" />
        <el-table-column prop="createTime" label="加工要求" :show-overflow-tooltip='true' width="350" />
      </el-table><!-- <h1>{{msg}}</h1> -->
    </div>
  </div>
</template>
<style scoped>
.div-main{
  width: 100%;
  height: 100%;
}
#selectForm {
  width: 50%;
  text-align: center;
}
</style>
north-glass-erp/northglass-erp/src/views/pp/workOrder/WorkOrder.vue
New file
@@ -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>
north-glass-erp/northglass-erp/src/views/sd/customer/CreateCustomer.vue
New file
@@ -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>
north-glass-erp/northglass-erp/src/views/sd/customer/Customer.vue
New file
@@ -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>
north-glass-erp/northglass-erp/src/views/sd/customer/SelectCustomer.vue
New file
@@ -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>
north-glass-erp/northglass-erp/src/views/sd/delivery/CreateDelivery.vue
New file
@@ -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楼b层',
    '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>
north-glass-erp/northglass-erp/src/views/sd/delivery/Delivery.vue
New file
@@ -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>
north-glass-erp/northglass-erp/src/views/sd/delivery/DeliveryReport.vue
New file
@@ -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>
north-glass-erp/northglass-erp/src/views/sd/delivery/SelectDelivery.vue
New file
@@ -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>
north-glass-erp/northglass-erp/src/views/sd/delivery/SelectOrderList.vue
New file
@@ -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>
north-glass-erp/northglass-erp/src/views/sd/order/CreateOrder.vue
New file
@@ -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>
north-glass-erp/northglass-erp/src/views/sd/order/Order.vue
New file
@@ -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>
north-glass-erp/northglass-erp/src/views/sd/order/OrderReport.vue
New file
@@ -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>
north-glass-erp/northglass-erp/src/views/sd/order/SelectOrder.vue
New file
@@ -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>
north-glass-erp/northglass-erp/src/views/sd/order/UpdateOrderCraft.vue
New file
@@ -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>
Diff truncated after the above file
north-glass-erp/northglass-erp/src/views/sd/product/CreateProduct.vue north-glass-erp/northglass-erp/src/views/sd/product/Product.vue north-glass-erp/northglass-erp/src/views/sd/product/SelectProduct.vue north-glass-erp/northglass-erp/src/views/sd/product/Test.vue north-glass-erp/northglass-erp/src/views/sd/product/Test11.vue north-glass-erp/northglass-erp/src/views/sd/returns/CreateReturns.vue north-glass-erp/northglass-erp/src/views/sd/returns/Returns.vue north-glass-erp/northglass-erp/src/views/sd/returns/ReturnsReport.vue north-glass-erp/northglass-erp/src/views/sd/returns/SelectDeliveryList.vue north-glass-erp/northglass-erp/src/views/sd/returns/SelectReturns.vue north-glass-erp/northglass-erp/vite.config.js north-glass-erp/pom.xml north-glass-erp/src/main/java/com/example/erp/ErpApplication.java north-glass-erp/src/main/java/com/example/erp/common/CacheUtil.java north-glass-erp/src/main/java/com/example/erp/common/Constants.java north-glass-erp/src/main/java/com/example/erp/common/Result.java north-glass-erp/src/main/java/com/example/erp/common/interceptor/JwtInterceptor.java north-glass-erp/src/main/java/com/example/erp/config/InterceptorConfig.java north-glass-erp/src/main/java/com/example/erp/config/MyCorsConfig.java north-glass-erp/src/main/java/com/example/erp/config/MybatisPlusConfig.java north-glass-erp/src/main/java/com/example/erp/config/SwaggerConfig.java north-glass-erp/src/main/java/com/example/erp/config/WebSocketConfig.java north-glass-erp/src/main/java/com/example/erp/controller/OrderController.java north-glass-erp/src/main/java/com/example/erp/controller/dto/UserDTO.java north-glass-erp/src/main/java/com/example/erp/controller/sd/BasicGlassTypeController.java north-glass-erp/src/main/java/com/example/erp/controller/sd/ProductController.java north-glass-erp/src/main/java/com/example/erp/controller/userInfo/SysMenuController.java north-glass-erp/src/main/java/com/example/erp/controller/userInfo/SysMenuItemController.java north-glass-erp/src/main/java/com/example/erp/controller/userInfo/UserController.java north-glass-erp/src/main/java/com/example/erp/entity/Order.java north-glass-erp/src/main/java/com/example/erp/entity/sd/BasicGlassType.java north-glass-erp/src/main/java/com/example/erp/entity/sd/Product.java north-glass-erp/src/main/java/com/example/erp/entity/userInfo/SysMenu.java north-glass-erp/src/main/java/com/example/erp/entity/userInfo/SysMenuItem.java north-glass-erp/src/main/java/com/example/erp/entity/userInfo/User.java north-glass-erp/src/main/java/com/example/erp/exception/GlobalExceptionHandle.java north-glass-erp/src/main/java/com/example/erp/exception/ServiceException.java north-glass-erp/src/main/java/com/example/erp/mapper/OrderMapper.java north-glass-erp/src/main/java/com/example/erp/mapper/sd/BasicGlassTypeMapper.java north-glass-erp/src/main/java/com/example/erp/mapper/sd/ProductMapper.java north-glass-erp/src/main/java/com/example/erp/mapper/userInfo/SysMenuItemMapper.java north-glass-erp/src/main/java/com/example/erp/mapper/userInfo/SysMenuMapper.java north-glass-erp/src/main/java/com/example/erp/mapper/userInfo/UserMapper.java north-glass-erp/src/main/java/com/example/erp/service/sd/BasicGlassTypeServise.java north-glass-erp/src/main/java/com/example/erp/service/sd/ProductService.java north-glass-erp/src/main/java/com/example/erp/service/userInfo/SysMenuItemService.java north-glass-erp/src/main/java/com/example/erp/service/userInfo/SysMenuService.java north-glass-erp/src/main/java/com/example/erp/service/userInfo/UserService.java north-glass-erp/src/main/java/com/example/erp/tools/TokenTools.java north-glass-erp/src/main/java/com/example/erp/tools/WebSocketServer.java north-glass-erp/src/main/java/com/example/erp/tools/WebSocketServerPool.java north-glass-erp/src/main/java/com/example/erp/tools/netty/MyChannelHandlerPool.java north-glass-erp/src/main/java/com/example/erp/tools/netty/MyWebSocketHandler.java north-glass-erp/src/main/java/com/example/erp/tools/netty/NettyServer.java north-glass-erp/src/main/resources/application.yml north-glass-erp/src/main/resources/mapper/sd/BasicGlassType.xml north-glass-erp/src/main/resources/mapper/sd/Product.xml north-glass-erp/src/main/resources/mapper/userInfo/SysMenu.xml north-glass-erp/src/main/resources/mapper/userInfo/SysMenuItem.xml north-glass-erp/src/main/resources/mapper/userInfo/User.xml north-glass-erp/src/test/java/com/example/erp/ErpApplicationTests.java north-glass-erp/target/classes/application.yml north-glass-erp/target/classes/mapper/sd/BasicGlassType.xml north-glass-erp/target/classes/mapper/sd/Product.xml north-glass-erp/target/classes/mapper/userInfo/SysMenu.xml north-glass-erp/target/classes/mapper/userInfo/SysMenuItem.xml north-glass-erp/target/classes/mapper/userInfo/User.xml north-glass-erp/target/erp-0.0.1-SNAPSHOT.jar.original north-glass-erp/target/maven-archiver/pom.properties north-glass-erp/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst north-glass-erp/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst north-glass-erp/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst north-glass-erp/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst