Browse Source

init

master
han\hanst 6 months ago
parent
commit
399f7f0f07
  1. 44
      src/router/index.js
  2. 202
      src/views/modules/production-issue/productionIssuePda.vue

44
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}},
*/
]
// 主入口路由(需嵌套上左右整体布局)

202
src/views/modules/production-issue/productionIssuePda.vue

@ -30,25 +30,22 @@
@click="goToDetail(item)"
>
<div class="card-title">
<span class="title-label">订单号</span>
<span class="title-label">生产订单号</span>
<span class="title-value">{{ item.orderNo }}</span>
</div>
<div class="card-details">
<div class="detail-item">
<div class="detail-label">产品编码</div>
<div class="detail-value">{{ item.productCode }}</div>
</div>
<div class="detail-item">
<div class="detail-label">产品名称</div>
<div class="detail-value">{{ item.productName }}</div>
</div>
<div class="detail-item">
<div class="detail-label">计划数量</div>
<div class="detail-value">{{ item.planQuantity }}</div>
</div>
<div class="detail-item">
<div class="detail-label">发料进度</div>
<div class="detail-value">{{ item.issuedQuantity }}/{{ item.totalMaterialQuantity }}</div>
<div class="detail-value qualified">{{ item.issuedQuantity }}/{{ item.totalMaterialQuantity }}</div>
</div>
<div class="detail-item">
<div class="detail-label">状态</div>
@ -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;
}
}
</style>
Loading…
Cancel
Save