diff --git a/src/router/index.js b/src/router/index.js index 9f25242..75e4626 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -27,19 +27,17 @@ const globalRoutes = [ {path: "/recv",name: "recv", component: resolve => require(["@/views/modules/recv/recv.vue"], resolve), meta: { transition: 'instant' ,preload: true,keepAlive: true}}, {path: "/qualifiedStorage",name: "qualifiedStorage", component: resolve => require(["@/views/modules/recv/qualifiedStorage.vue"], resolve), meta: { transition: 'instant' ,preload: true,keepAlive: true}}, {path: "/inspectionResults",name: "inspectionResults", - component: resolve => require(["@/views/modules/recv/inspectionResults.vue"], resolve), - meta: { transition: 'instant' ,preload: true,keepAlive: true}}, + component: resolve => require(["@/views/modules/recv/inspectionResults.vue"], resolve), meta: { transition: 'instant' ,preload: true,keepAlive: true}}, // 入库上架页面 - {path: "/inboundStorage/:inboundNo/:partNo",name: "inboundStorage", - component: resolve => require(["@/views/modules/recv/inboundStorage.vue"], resolve), - meta: { transition: 'instant' ,preload: true,keepAlive: true}}, + {path: "/inboundStorage/:inboundNo/:partNo",name: "inboundStorage", + component: resolve => require(["@/views/modules/recv/inboundStorage.vue"], resolve), meta: { transition: 'instant' ,preload: true,keepAlive: true}}, // V1 // handlingunit {path: "/handlingunit",name: "handlingunit", component: resolve => require(["@/views/modules/handling-unit/handling-unit-management.vue"], resolve), meta: { transition: 'instant' ,preload: true,keepAlive: true}}, // 生产发料 {path: "/productionissue",name: "productionissue", component: resolve => require(["@/views/modules/production-issue/productionIssuePda.vue"], resolve), meta: { transition: 'instant' ,preload: true,keepAlive: true}}, -//生产退料 +//生产退料 {path: "/productionreturn",name: "productionreturn", component: resolve => require(["@/views/modules/production-issue/productionReturnPDA.vue"], resolve), meta: { transition: 'instant' ,preload: true,keepAlive: true}}, {path: '/production-issue/pick/:orderNo', name: 'ProductionIssuePick',component: resolve => require(["@/views/modules/production-issue/pick.vue"], resolve), @@ -70,40 +68,6 @@ const globalRoutes = [ // 运输任务 {path: "/transportation",name: "transportation", component: resolve => require(["@/views/modules/transport-task/index.vue"], resolve), meta: { transition: 'instant' ,preload: true,keepAlive: true}}, - -// V2 - // handlingunit -/* - {path: "/handlingunit",name: "handlingunit", component: resolve => require(["@/views/modules/v2/handling-unit/index.vue"], resolve), meta: { transition: 'instant' ,preload: true,keepAlive: true}}, - // 生产发料 - {path: "/productionissue",name: "productionissue", component: resolve => require(["@/views/modules/v2/production-issue/index.vue"], resolve), meta: { transition: 'instant' ,preload: true,keepAlive: true}}, - - // 生产入库 - {path: "/productionInbound",name: "productionwhse", component: resolve => require(["@/views/modules/v2/production-receipt/index.vue"], resolve), meta: { transition: 'instant' ,preload: true,keepAlive: true}}, - - // 委外 - {path: "/outsource",name: "outsource", component: resolve => require(["@/views/modules/v2/outsourcing-issue/index.vue"], resolve), meta: { transition: 'instant' ,preload: true,keepAlive: true}}, - - // 客户订单发货 - {path: "/saleshipping",name: "saleshipping", component: resolve => require(["@/views/modules/v2/sales-shipment/index.vue"], resolve), meta: { transition: 'instant' ,preload: true,keepAlive: true}}, - - // 销售退货 - {path: "/salereturn",name: "salereturn", component: resolve => require(["@/views/modules/v2/sales-return/index.vue"], resolve), meta: { transition: 'instant' ,preload: true,keepAlive: true}}, - - // 其他出入库 - {path: "/otherinout",name: "otherinout", component: resolve => require(["@/views/modules/v2/other-transaction/index.vue"], resolve), meta: { transition: 'instant' ,preload: true,keepAlive: true}}, - - // Material Requisition - {path: "/mrissue",name: "mrissue", component: resolve => require(["@/views/modules/v2/mr-issue/index.vue"], resolve), meta: { transition: 'instant' ,preload: true,keepAlive: true}}, - - // 盘点 - {path: "/stocktaking",name: "stocktaking", component: resolve => require(["@/views/modules/inventory/index.vue"], resolve), meta: { transition: 'instant' ,preload: true,keepAlive: true}}, - - // 运输任务 - {path: "/transportation",name: "transportation", component: resolve => require(["@/views/modules/v2/transport-task/index.vue"], resolve), meta: { transition: 'instant' ,preload: true,keepAlive: true}}, - -*/ - ] // 主入口路由(需嵌套上左右整体布局) diff --git a/src/views/modules/production-issue/productionIssuePda.vue b/src/views/modules/production-issue/productionIssuePda.vue index 3dedb41..ce18d39 100644 --- a/src/views/modules/production-issue/productionIssuePda.vue +++ b/src/views/modules/production-issue/productionIssuePda.vue @@ -30,25 +30,22 @@ @click="goToDetail(item)" >
- 订单号 + 生产订单号 {{ item.orderNo }}
+
产品编码
{{ item.productCode }}
-
-
产品名称
-
{{ item.productName }}
-
计划数量
{{ item.planQuantity }}
发料进度
-
{{ item.issuedQuantity }}/{{ item.totalMaterialQuantity }}
+
{{ item.issuedQuantity }}/{{ item.totalMaterialQuantity }}
状态
@@ -155,6 +152,8 @@ export default { flex-direction: column; background: #f5f5f5; } + +/* 头部栏 */ .header-bar { display: flex; justify-content: space-between; @@ -165,6 +164,7 @@ export default { height: 40px; min-height: 40px; } + .header-left { display: flex; align-items: center; @@ -172,63 +172,207 @@ export default { font-size: 16px; font-weight: 500; } + +.header-left i { + margin-right: 8px; + font-size: 18px; +} + .header-right { cursor: pointer; + font-size: 16px; + font-weight: 500; } + +/* 搜索容器 */ .search-container { - padding: 10px 16px; + padding: 12px 16px; background: white; } -.tab-container { - background: white; - border-bottom: 1px solid #ebedf0; + +.search-box { + position: relative; + display: flex; + align-items: center; + background: #f8f9fa; + border: 1px solid #e0e0e0; + border-radius: 8px; + padding: 0 12px; } + +.search-icon { + color: #999; + font-size: 16px; + margin-right: 8px; +} + +.search-box input { + flex: 1; + border: none; + background: transparent; + padding: 12px 0; + font-size: 14px; + outline: none; +} + +.search-box input::placeholder { + color: #999; +} + +/* 内容区域 */ .content-area { flex: 1; overflow-y: auto; - padding: 10px 0; + padding: 12px 16px; } + +/* 入库卡片 */ .inbound-card { background: white; - margin: 10px 16px; border-radius: 8px; - box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1); + margin-bottom: 12px; padding: 16px; + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); cursor: pointer; - margin-bottom: 10px; + transition: all 0.2s ease; } + +.inbound-card:hover { + box-shadow: 0 4px 8px rgba(0, 0, 0, 0.15); + transform: translateY(-1px); +} + +.inbound-card:active { + transform: translateY(0); +} + +/* 卡片标题 */ .card-title { - display: flex; - justify-content: space-between; - align-items: center; + margin-bottom: 12px; +} + +.title-label { + font-size: 12px; + color: #666; + display: block; + margin-bottom: 4px; +} + +.title-value { font-size: 16px; font-weight: bold; - margin-bottom: 8px; + color: #333; + margin-left: 20px; } + +/* 卡片详情 */ .card-details { display: flex; - flex-wrap: wrap; - gap: 10px 24px; + justify-content: space-between; + align-items: flex-start; + gap: 4px; } + .detail-item { - min-width: 120px; - font-size: 14px; + flex: 1; + text-align: center; + min-width: 60px; + max-width: 60px; } + .detail-label { - color: #969799; + font-size: 11px; + color: #666; + margin-bottom: 4px; + line-height: 1.2; + margin-left: -12px; } + .detail-value { - color: #323233; + font-size: 13px; + color: #333; + line-height: 1.2; + margin-left: -12px; +} + +.detail-value.qualified { + color: #17B3A3; font-weight: 500; } + +/* 空状态 */ .empty-state { - text-align: center; - color: #aaa; - margin-top: 40px; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + padding: 60px 20px; + color: #999; +} + +.empty-state i { + font-size: 48px; + margin-bottom: 16px; +} + +.empty-state p { + font-size: 14px; + margin: 0; } + +/* 加载状态 */ .loading-state { - text-align: center; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + padding: 60px 20px; color: #17B3A3; - margin-top: 40px; +} + +.loading-state i { + font-size: 24px; + margin-bottom: 12px; + animation: spin 1s linear infinite; +} + +@keyframes spin { + from { transform: rotate(0deg); } + to { transform: rotate(360deg); } +} + +.loading-state p { + font-size: 14px; + margin: 0; +} + +/* 响应式设计 */ +@media (max-width: 360px) { + .header-bar { + padding: 8px 12px; + } + + .search-container { + padding: 8px 12px; + } + + .content-area { + padding: 8px 12px; + } + + .inbound-card { + padding: 12px; + } + + .card-details { + flex-wrap: wrap; + gap: 6px; + } + + .detail-item { + flex: 0 0 48%; + margin-bottom: 6px; + min-width: 50px; + } }