| | |
| | | "pinia": "^2.1.6", |
| | | "pinia-plugin-persistedstate": "^3.2.0", |
| | | "sortablejs": "^1.15.1", |
| | | "sweetalert2": "^11.10.7", |
| | | "vue": "^3.3.4", |
| | | "vue-router": "^4.2.4", |
| | | "vxe-table": "^4.5.15", |
| | |
| | | "node": ">=0.8" |
| | | } |
| | | }, |
| | | "node_modules/sweetalert2": { |
| | | "version": "11.10.7", |
| | | "resolved": "https://registry.npmmirror.com/sweetalert2/-/sweetalert2-11.10.7.tgz", |
| | | "integrity": "sha512-5Jlzrmaitay6KzU+2+LhYu9q+L4v/dZ8oZyEDH14ep0C/QilCnFLHmqAyD/Lhq/lm5DiwsOs6Tr58iv8k3wyGg==" |
| | | }, |
| | | "node_modules/to-fast-properties": { |
| | | "version": "2.0.0", |
| | | "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", |
| | |
| | | "frac": "~1.1.2" |
| | | } |
| | | }, |
| | | "sweetalert2": { |
| | | "version": "11.10.7", |
| | | "resolved": "https://registry.npmmirror.com/sweetalert2/-/sweetalert2-11.10.7.tgz", |
| | | "integrity": "sha512-5Jlzrmaitay6KzU+2+LhYu9q+L4v/dZ8oZyEDH14ep0C/QilCnFLHmqAyD/Lhq/lm5DiwsOs6Tr58iv8k3wyGg==" |
| | | }, |
| | | "to-fast-properties": { |
| | | "version": "2.0.0", |
| | | "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", |
| | |
| | | "pinia": "^2.1.6", |
| | | "pinia-plugin-persistedstate": "^3.2.0", |
| | | "sortablejs": "^1.15.1", |
| | | "sweetalert2": "^11.10.7", |
| | | "vue": "^3.3.4", |
| | | "vue-router": "^4.2.4", |
| | | "vxe-table": "^4.5.15", |
| | |
| | | } |
| | | ] |
| | | }, |
| | | //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: 'testSort', |
| | | name: 'testSort', |
| | | component: () => import('../views/sd/product/testSort.vue') |
| | | }, |
| | | { |
| | | name: 'product', |
| | | 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/Returns/returns.vue'), |
| | | children:[ |
| | | { |
| | | path: 'returns',//退货 |
| | | path: '/Returns/returns', |
| | | name: 'returns', |
| | | component: () => import('../views/sd/returns/Returns.vue'), |
| | | children: [ |
| | | { |
| | | path: '', |
| | | redirect:'/main/returns/selectReturns' |
| | | component: () => import('../views/Returns/returns.vue') |
| | | }, |
| | | { |
| | | 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'), |
| | | path: 'Identify', |
| | | name: 'Identify', |
| | | component: () => import('../views/Identify/identify.vue'), |
| | | children: [ |
| | | { |
| | | path: '', |
| | | redirect:'/main/customer/selectCustomer' |
| | | path: '/Identify/identify', |
| | | name: 'identify', |
| | | component: () => import('../views/Identify/identify.vue') |
| | | }, |
| | | { |
| | | path: 'selectCustomer', |
| | | name: 'selectCustomer', |
| | | component: () => import('../views/sd/customer/SelectCustomer.vue'), |
| | | }, |
| | | { |
| | | path: 'createCustomer', |
| | | name: 'createCustomer', |
| | | component: () => import('../views/sd/customer/CreateCustomer.vue'), |
| | | } |
| | | ] |
| | | }, |
| | | // { |
| | | // path:'appMenu', |
| | | // name:'appMenu', |
| | | // component: () => import('../layout/component/appMpenu.vue'), |
| | | // children:[ |
| | | // { |
| | | // path: 'appMenu', |
| | | // name: 'appMenu', |
| | | // component:()=>import('../layout/component/appMpenu.vue') |
| | | // }, |
| | | // { |
| | | // path: 'appView', |
| | | // name: 'appView', |
| | | // component:()=>import('../layout/component/appView.vue') |
| | | // }, |
| | | // { |
| | | // path: 'logoHeader', |
| | | // name: 'logoHeader', |
| | | // component:()=>import('../layout/component/logoHeader.vue') |
| | | // }, |
| | | // { |
| | | // path: 'routerHeader', |
| | | // name: 'routerHeader', |
| | | // component:()=>import('../layout/component/routerHeader.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: 'productionScheduling', |
| | | name: 'productionScheduling', |
| | | component: () => import('../views/pp/processCard/ProductionScheduling.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'), |
| | | path: 'Caching', |
| | | name: 'Caching', |
| | | component: () => import('../views/Caching/caching.vue'), |
| | | children:[ |
| | | { |
| | | path: 'benchmarkBOM', |
| | | name: 'benchmarkBOM', |
| | | component: () => import('../views/pp/BOM/BenchmarkBOM.vue'), |
| | | path: '/Caching/caching', |
| | | name: 'caching', |
| | | component: () => import('../views/Caching/caching.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'), |
| | | path: 'StockBasicData', |
| | | name: 'StockBasicData', |
| | | component: () => import('../views/StockBasicData/stockBasicData.vue'), |
| | | children:[ |
| | | { |
| | | path: 'selectMachine', |
| | | name: 'selectMachine', |
| | | component: () => import('../views/pp/machine/SelectMachine.vue'), |
| | | path: '/StockBasicData/stockBasicData', |
| | | name: 'stockBasicData', |
| | | component: () => import('../views/StockBasicData/stockBasicData.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'), |
| | | path: 'Slicecage', |
| | | name: 'Slicecage', |
| | | component: () => import('../views/Slicecage/slicecage.vue'), |
| | | children:[ |
| | | { |
| | | //设备产量 |
| | | path: 'equipmentOutput', |
| | | name: 'equipmentOutput', |
| | | component: () => import('../views/pp/report/EquipmentOutput.vue'), |
| | | path: '/Slicecage/slicecage', |
| | | name: 'slicecage', |
| | | component: () => import('../views/Slicecage/slicecage.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: 'processCardProgress', |
| | | name: 'processCardProgress', |
| | | component: () => import('../views/pp/report/ProcessCardProgress.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'), |
| | | path: 'PurchaseReturn', |
| | | name: 'purchase', |
| | | component: () => import('../views/PurchaseReturn/purchase.vue'), |
| | | children:[ |
| | | { |
| | | // 成品库存 |
| | | path: 'productStockList', |
| | | name: 'productStockList', |
| | | component: () => import('../views/mm/mainProductStock/ProductStockList.vue'), |
| | | path: '/PurchaseReturn/purchaseReturn', |
| | | name: 'purchaseReturn', |
| | | component: () => import('../views/PurchaseReturn/purchaseReturn.vue') |
| | | }, |
| | | { |
| | | // 成品入库 |
| | | path: 'createProductStock', |
| | | name: 'createProductStock', |
| | | component:()=> import('../views/mm/mainProductStock/CreateProductStock.vue'), |
| | | path: '/PurchaseReturn/purchaseStorage', |
| | | name: 'purchaseStorage', |
| | | component: () => import('../views/PurchaseReturn/purchaseStorage.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: 'transferRecord', |
| | | name: 'transferRecord', |
| | | component:()=>import('../views/mm/mainProductStock/TransferRecord.vue'), |
| | | }, |
| | | { |
| | | // 领出记录 |
| | | path: 'takeOutRecord', |
| | | name: 'takeOutRecord', |
| | | component:()=>import('../views/mm/mainProductStock/TakeOutRecord.vue'), |
| | | }, |
| | | { |
| | | // 返工记录 |
| | | path: 'reworkRecord', |
| | | name: 'reworkRecord', |
| | | component:()=>import('../views/mm/mainProductStock/ReworkRecord.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: 'UnLoadGlass', |
| | | name: 'UnLoadGlass', |
| | |
| | | path: '/UnLoadGlass/loadmachinerack', |
| | | name: 'loadmachinerack', |
| | | component: () => import('../views/UnLoadGlass/loadmachinerack.vue') |
| | | }, |
| | | { |
| | | path: '/UnLoadGlass/loadmachineracktwo', |
| | | name: 'loadmachineracktwo', |
| | | component: () => import('../views/UnLoadGlass/loadmachineracktwo.vue') |
| | | }, |
| | | { |
| | | path: '/UnLoadGlass/Landingindication', |
| | |
| | | ] |
| | | }, |
| | | { |
| | | /*----------- 采购订单 ----------------*/ |
| | | 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: 'PaymentPurchaseOrder', |
| | | name: 'PaymentPurchaseOrder', |
| | | component: () => import('../views/mm/purchaseOrder/Payment.vue') |
| | | }, |
| | | /*----------- 退货 ----------------*/ |
| | | { |
| | | path: 'ReturnPurchaseOrder', |
| | | name: 'ReturnPurchaseOrder', |
| | | component: () => import('../views/mm/purchaseOrder/Return.vue') |
| | | }, |
| | | /*----------- 入库 ----------------*/ |
| | | { |
| | | path: 'StoragePurchaseOrder', |
| | | name: 'StoragePurchaseOrder', |
| | | component: () => import('../views/mm/purchaseOrder/Storage.vue') |
| | | }, |
| | | { |
| | | path: '', |
| | | redirect: '/main/purchaseOrder/SelectPurchaseOrder' |
| | | } |
| | | ] |
| | | }, |
| | | { |
| | | /*----------- 掰片/识别 ----------------*/ |
| | | path: 'identify', |
| | | name: 'identify', |
| | | component: () => import('../views/mm/identify/Identify.vue'), |
| | | children: [ |
| | | { |
| | | path: 'SelectIdentify', |
| | | name: 'SelectIdentify', |
| | | component: () => import('../views/mm/identify/Select.vue'), |
| | | } |
| | | ] |
| | | }, |
| | | { |
| | | /*----------- 卧式缓存----------------*/ |
| | | path: 'caching', |
| | | name: 'caching', |
| | | component: () => import('../views/mm/caching/Caching.vue'), |
| | | children: [ |
| | | { |
| | | path: 'SelectCaching', |
| | | name: 'SelectCaching', |
| | | component: () => import('../views/mm/caching/caching.vue'), |
| | | } |
| | | ] |
| | | }, |
| | | { |
| | | /*----------- 大理片笼----------------*/ |
| | | path: 'slicecage', |
| | | name: 'slicecage', |
| | | component: () => import('../views/mm/slicecage/Slicecage.vue'), |
| | | children: [ |
| | | { |
| | | path: 'SelectSlicecage', |
| | | name: 'SelectSlicecage', |
| | | component: () => import('../views/mm/slicecage/slicecage.vue'), |
| | | } |
| | | ] |
| | | }, |
| | | { |
| | | // 供应商管理!!! |
| | | 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' |
| | | } |
| | | ] |
| | | }, |
| | | /*------------- sunshiqiang Add --*/ |
| | | { |
| | | /*----------- 仓储报表 ----------------*/ |
| | | 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: 'StockWarehouseReport', |
| | | name: 'StockWarehouseReport', |
| | | component: () => import('../views/mm/stockReport/StockWarehouseReport.vue'), |
| | | }, { |
| | | path: '', |
| | | redirect: '/main/stockReport/WarehouseReport' |
| | | } |
| | | ] |
| | | }, |
| | | { |
| | | /*----------- ----------------*/ |
| | | path: 'stockBasicData', |
| | | name: 'stockBasicData', |
| | | component: () => import('../views/mm/stockBasicData/StockBasicData.vue'), |
| | | children: [ |
| | | { |
| | | path: 'SelectStockBasicData', |
| | | name: 'SelectStockBasicData', |
| | | component: () => import('../views/mm/stockBasicData/Select.vue'), |
| | | }, |
| | | ] |
| | | }, |
| | | { |
| | | /*----------- 采购入库 ----------------*/ |
| | | 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/order' |
| | | redirect:'/Slicecage/slicecage' |
| | | } |
| | | ] |
| | | }, |
| | |
| | | <template> |
| | | <div class="glass-rack"> |
| | | <div > |
| | | <svg width="300" height="500" xmlns="http://www.w3.org/2000/svg"> |
| | | <svg width="500" height="500" xmlns="http://www.w3.org/2000/svg"> |
| | | <g stroke="null" id="Layer_1"> |
| | | <!-- 使用 v-for 循环渲染数据 --> |
| | | <g v-for="(rack, index) in racks" :key="index"> |
| | |
| | | :width="rack.width" |
| | | :height="rack.height" |
| | | :fill="rack.fillColor" |
| | | |
| | | :data-index="index" |
| | | class="rack-rect" |
| | | @click="showRectInfo(rack)" |
| | | /> |
| | | <rect |
| | | :x="calculateItemXPosition(rack, rack.item, index)" |
| | |
| | | </template> |
| | | |
| | | <script> |
| | | import Swal from 'sweetalert2' |
| | | export default { |
| | | data() { |
| | | return { |
| | | racks: [ |
| | | { x: 50, y: 100, height: 100, width: 60, fillColor: '#6a6da9', item: { height: 90, width: 10, fillColor: 'yellow', content: 'NG123456' } }, |
| | | { x: 50, y: 270, height: 100, width: 60, fillColor: '#6a6da9', item: { height: 20, width: 10, fillColor: 'yellow', content: 'NG1234567' } }, |
| | | { x: 190, y: 100, height: 100, width: 60, fillColor: '#6a6da9', item: { height: 30, width: 20, fillColor: 'yellow', content: 'NG12345678' } }, |
| | | { x: 190, y: 270, height: 100, width: 60, fillColor: '#6a6da9', item: { height: 35, width: 23, fillColor: 'yellow', content: 'NG123456910' } }, |
| | | { x: 95, y: 420, height: 60, width: 110, fillColor: '#6a6da9', item: { height: 30, width: 100, fillColor: 'yellow', content: 'NG1234561454' } } |
| | | { x: 280, y: 100, height: 100, width: 60, fillColor: '#6a6da9', item: { height: 30, width: 20, fillColor: 'yellow', content: 'NG12345678' } }, |
| | | { x: 280, y: 270, height: 100, width: 60, fillColor: '#6a6da9', item: { height: 35, width: 23, fillColor: 'yellow', content: 'NG123456910' } }, |
| | | { x: 140, y: 420, height: 60, width: 110, fillColor: '#6a6da9', item: { height: 30, width: 100, fillColor: 'yellow', content: 'NG1234561454' } } |
| | | ] |
| | | }; |
| | | }, |
| | |
| | | } else { |
| | | return rack.y + rack.height - item.height; // 返回底部对齐的 y 坐标 |
| | | } |
| | | }, |
| | | showCustomAlert(content) { |
| | | var str="架号 : 111\n" + |
| | | "长 : 111\n" + |
| | | "宽 : 111\n" + |
| | | "厚 : 111\n"+ |
| | | "玻璃ID : 111\n"+ |
| | | "膜系 : 111\n"; |
| | | |
| | | Swal.fire({ |
| | | title: '玻璃信息', |
| | | html: '<pre>' + str + '</pre>', |
| | | customClass: { |
| | | popup: 'format-pre' |
| | | } |
| | | }); |
| | | |
| | | }, |
| | | showRectInfo( rectInfo) { |
| | | const content = rectInfo.item.content; |
| | | this.$nextTick(() => { |
| | | this.showCustomAlert(content); |
| | | }); |
| | | }, |
| | | } |
| | | }; |
| | | </script> |
| | |
| | | <style scoped> |
| | | .glass-rack { |
| | | margin-left: 20px; |
| | | width: 300px; |
| | | width: 500px; |
| | | margin-top: 10px; |
| | | /* background-color: antiquewhite; */ |
| | | } |
| | | .rack-rect:hover { |
| | | cursor: pointer; |
| | | } |
| | | .custom-popover-class { |
| | | background-color: lightgrey; |
| | | color: black; |
| | | border: 1px solid black; |
| | | } |
| | | .format-pre pre { |
| | | background: #49483e; |
| | | color: #f7f7f7; |
| | | padding: 10px; |
| | | font-size: 14px; |
| | | } |
| | | |
| | | </style> |
| | |
| | | <template> |
| | | <div class="glass-rack"> |
| | | <div> |
| | | <svg width="300" height="500" xmlns="http://www.w3.org/2000/svg"> |
| | | <svg width="500" height="500" xmlns="http://www.w3.org/2000/svg"> |
| | | <g stroke="null" id="Layer_1"> |
| | | <!-- 使用 v-for 循环渲染数据 --> |
| | | <g v-for="(rack, index) in racks" :key="index"> |
| | |
| | | :width="rack.width" |
| | | :height="rack.height" |
| | | :fill="rack.fillColor" |
| | | :data-index="index" |
| | | class="rack-rect" |
| | | @click="showRectInfo(rack)" |
| | | /> |
| | | <rect |
| | | :x="calculateItemXPosition(rack, rack.item, index)" |
| | |
| | | </template> |
| | | |
| | | <script> |
| | | import Swal from 'sweetalert2' |
| | | export default { |
| | | data() { |
| | | return { |
| | | racks: [ |
| | | { x: 50, y: 100, height: 100, width: 60, fillColor: '#6a6da9', item: { height: 90, width: 10, fillColor: 'yellow', content: 'NG123456' } }, |
| | | { x: 50, y: 270, height: 100, width: 60, fillColor: '#6a6da9', item: { height: 20, width: 10, fillColor: 'yellow', content: 'NG1234567' } }, |
| | | { x: 190, y: 100, height: 100, width: 60, fillColor: '#6a6da9', item: { height: 30, width: 20, fillColor: 'yellow', content: 'NG12345678' } }, |
| | | { x: 190, y: 270, height: 100, width: 60, fillColor: '#6a6da9', item: { height: 35, width: 23, fillColor: 'yellow', content: 'NG123456910' } }, |
| | | { x: 95, y: 420, height: 60, width: 110, fillColor: '#6a6da9', item: { height: 30, width: 100, fillColor: 'yellow', content: 'NG1234561454' } } |
| | | { x: 280, y: 100, height: 100, width: 60, fillColor: '#6a6da9', item: { height: 30, width: 20, fillColor: 'yellow', content: 'NG12345678' } }, |
| | | { x: 280, y: 270, height: 100, width: 60, fillColor: '#6a6da9', item: { height: 35, width: 23, fillColor: 'yellow', content: 'NG123456910' } }, |
| | | { x: 140, y: 420, height: 60, width: 110, fillColor: '#6a6da9', item: { height: 30, width: 100, fillColor: 'yellow', content: 'NG1234561454' } } |
| | | ] |
| | | }; |
| | | }, |
| | |
| | | } else { |
| | | return rack.y + rack.height - item.height; |
| | | } |
| | | }, |
| | | showCustomAlert(content) { |
| | | var str="架号 : 111\n" + |
| | | "长 : 111\n" + |
| | | "宽 : 111\n" + |
| | | "厚 : 111\n"+ |
| | | "玻璃ID : 111\n"+ |
| | | "膜系 : 111\n"; |
| | | |
| | | Swal.fire({ |
| | | title: '玻璃信息', |
| | | html: '<pre>' + str + '</pre>', |
| | | customClass: { |
| | | popup: 'format-pre' |
| | | } |
| | | }); |
| | | |
| | | }, |
| | | showRectInfo( rectInfo) { |
| | | const content = rectInfo.item.content; |
| | | this.$nextTick(() => { |
| | | this.showCustomAlert(content); |
| | | }); |
| | | }, |
| | | } |
| | | }; |
| | | </script> |
| | |
| | | <style scoped> |
| | | .glass-rack { |
| | | margin-left: 20px; |
| | | width: 300px; |
| | | width: 500px; |
| | | } |
| | | .rack-rect:hover { |
| | | cursor: pointer; |
| | | } |
| | | .custom-popover-class { |
| | | background-color: lightgrey; |
| | | color: black; |
| | | border: 1px solid black; |
| | | } |
| | | .format-pre pre { |
| | | background: #49483e; |
| | | color: #f7f7f7; |
| | | padding: 10px; |
| | | font-size: 14px; |
| | | } |
| | | |
| | | </style> |
| | |
| | | import {useRouter} from "vue-router" |
| | | const router = useRouter() |
| | | |
| | | const dialogFormVisiblea = ref(false) |
| | | import { ref } from 'vue' |
| | | import { ElMessage, ElMessageBox } from 'element-plus' |
| | | import Landingindication from "./Landingindication.vue"; |
| | | import Landingindicationtwo from "./Landingindicationtwo.vue"; |
| | | // import Landingindicationtwo from "./Landingindicationtwo.vue"; |
| | | |
| | | const tableData = [ |
| | | { |
| | |
| | | long: '1005', |
| | | wide: '183.6', |
| | | thick: '1991', |
| | | type: '待识别', |
| | | typea: '1', |
| | | state: '未启用', |
| | | }, |
| | | { |
| | | id: '2', |
| | | long: '105', |
| | | wide: '183', |
| | | thick: '191', |
| | | typea: '1', |
| | | type: '待识别' |
| | | state: '未启用' |
| | | }, |
| | | { |
| | | id: '2', |
| | | long: '105', |
| | | wide: '183', |
| | | thick: '191', |
| | | typea: '1', |
| | | type: '待识别' |
| | | state: '未启用' |
| | | }, |
| | | ] |
| | | const open = () => { |
| | |
| | | <el-table-column prop="id" align="center" label="下片位" min-width="80" /> |
| | | <el-table-column prop="long" align="center" label="架号" min-width="120" /> |
| | | <el-table-column prop="wide" align="center" label="流程卡号" min-width="120" /> |
| | | <el-table-column prop="type" align="center" label="状态" min-width="120" /> |
| | | <el-table-column prop="type" align="center" label="设备号" min-width="120" /> |
| | | <el-table-column prop="type" align="center" label="启用状态" min-width="120" /> |
| | | <el-table-column prop="wide" align="center" label="总数量" min-width="120" /> |
| | | <el-table-column prop="wide" align="center" label="已落架数量" min-width="120" /> |
| | | <el-table-column prop="state" align="center" label="启用状态" min-width="120" /> |
| | | <el-table-column fixed="right" label="操作" align="center" width="200"> |
| | | <template #default> |
| | | <el-button size="mini" type="text" plain @click="dialogFormVisiblea = true">绑定架子</el-button> |
| | | <el-button size="mini" type="text" plain @click="dialogFormVisiblea = true">清空</el-button> |
| | | <el-button size="mini" type="text" plain v-show="state !== '已启用' " @click="dialogFormVisiblea = true">绑定架子</el-button> |
| | | <el-button size="mini" type="text" plain @click="dialogFormVisible = true">清空</el-button> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | |
| | | <div id="main-body"> |
| | | <Landingindication></Landingindication> |
| | | </div> |
| | | <div id="main-bodya"> |
| | | <!-- <div id="main-bodya"> |
| | | <Landingindicationtwo></Landingindicationtwo> |
| | | </div></div> |
| | | </div> --> |
| | | </div> |
| | | <el-dialog v-model="dialogFormVisiblea" top="21vh" width="30%" title="绑定架子" > |
| | | <div style="margin-left: 50px;margin-top: 10px;margin-bottom: 10px;"> |
| | | <el-form size="mini" label-width="150px"> |
| | | <el-form label-width="100px" label-position="right"> |
| | | <el-form-item label="架号:" :required="true" style="width: 18vw"> |
| | | <el-input autocomplete="off"/> |
| | | </el-form-item> |
| | | <el-form-item label="流程卡号:" :required="true" style="width: 18vw;"> |
| | | <el-input autocomplete="off" /> |
| | | </el-form-item> |
| | | </el-form> |
| | | </el-form> |
| | | </div> |
| | | <template #footer> |
| | | <div id="dialog-footer"> |
| | | <el-button type="primary" @click="dialogFormVisiblea = false"> |
| | | 确认 |
| | | </el-button> |
| | | <el-button @click="dialogFormVisiblea = false">取消</el-button> |
| | | </div> |
| | | </template> |
| | | </el-dialog> |
| | | </template> |
| | | |
| | | <style scoped> |
| | |
| | | } |
| | | #main-body{ |
| | | margin-top: -20px; |
| | | margin-left: 300px; |
| | | } |
| | | #main-bodya{ |
| | | margin-top: -10px; |
| | | margin-left: 100px; |
| | | margin-left: 450px; |
| | | } |
| | | </style> |