Browse Source

没开发好的加开发中标志

master
han\hanst 4 months ago
parent
commit
0637ebe803
  1. 376
      src/views/main.vue
  2. 40
      src/views/modules/other-transaction/index.vue
  3. 49
      src/views/modules/other-transaction/other-inbound.vue
  4. 30
      src/views/modules/recv/inspectionResults.vue
  5. 12
      src/views/modules/recv/qualifiedStorage.vue
  6. 55
      src/views/modules/recv/recv.vue

376
src/views/main.vue

@ -45,19 +45,19 @@
</div> </div>
<div class="menu-text">采购入库</div> <div class="menu-text">采购入库</div>
</div> </div>
<div class="menu-item" @click="navigateWithWarehouseCheck('productionreturn')">
<div class="menu-icon production-return">
<van-icon name="revoke" size="24" />
</div>
<div class="menu-text">生产退仓</div>
</div>
<div class="menu-item" @click="navigateWithWarehouseCheck('productionInboundProduction')">
<div class="menu-item disabled" @click="handleDisabledFeature('productionInboundProduction')">
<div class="menu-icon production-inbound"> <div class="menu-icon production-inbound">
<van-icon name="cart" size="24" /> <van-icon name="cart" size="24" />
</div> </div>
<div class="menu-text">生产入库</div> <div class="menu-text">生产入库</div>
</div> </div>
<div class="menu-item" @click="navigateWithWarehouseCheck('salereturn')">
<div class="menu-item disabled" @click="handleDisabledFeature('productionreturn')">
<div class="menu-icon production-return">
<van-icon name="revoke" size="24" />
</div>
<div class="menu-text">生产退料</div>
</div>
<div class="menu-item disabled" @click="handleDisabledFeature('salereturn')">
<div class="menu-icon sales-return"> <div class="menu-icon sales-return">
<van-icon name="revoke" size="24" /> <van-icon name="revoke" size="24" />
</div> </div>
@ -73,11 +73,11 @@
<span class="section-title">拣货出库</span> <span class="section-title">拣货出库</span>
</div> </div>
<div class="button-grid"> <div class="button-grid">
<div class="menu-item" @click="navigateWithWarehouseCheck('purchaseReturn')">
<div class="menu-icon purchase-return">
<van-icon name="shopping-cart-o" size="24" />
<div class="menu-item" @click="navigateWithWarehouseCheck('otherinout')">
<div class="menu-icon other">
<van-icon name="exchange" size="24" />
</div> </div>
<div class="menu-text">采购退</div>
<div class="menu-text">其他出入</div>
</div> </div>
<div class="menu-item" @click="navigateWithWarehouseCheck('productionissue')"> <div class="menu-item" @click="navigateWithWarehouseCheck('productionissue')">
<div class="menu-icon production-issue"> <div class="menu-icon production-issue">
@ -99,13 +99,13 @@
</div> </div>
</div> </div>
<div class="button-grid" style="margin-top: 8px;"> <div class="button-grid" style="margin-top: 8px;">
<div class="menu-item" @click="navigateWithWarehouseCheck('saleshipping')">
<div class="menu-item disabled" @click="handleDisabledFeature('saleshipping')">
<div class="menu-icon sales-delivery"> <div class="menu-icon sales-delivery">
<van-icon name="logistics" size="24" /> <van-icon name="logistics" size="24" />
</div> </div>
<div class="menu-text">销售出库</div> <div class="menu-text">销售出库</div>
</div> </div>
<div class="menu-item" @click="navigateWithWarehouseCheck('transportation')">
<div class="menu-item disabled" @click="handleDisabledFeature('transportation')">
<div class="menu-icon transport"> <div class="menu-icon transport">
<van-icon name="guide-o" size="24" /> <van-icon name="guide-o" size="24" />
</div> </div>
@ -113,7 +113,27 @@
</div> </div>
</div> </div>
</div> </div>
<div class="section">
<div class="section-header">
<span class="bullet"></span>
<span class="section-title">立库操作</span>
</div>
<div class="button-grid">
<div class="menu-item" @click="navigateWithWarehouseCheck('callOut')">
<div class="menu-icon purchase">
<van-icon name="shopping-cart-o" size="24" />
</div>
<div class="menu-text">Call料</div>
</div>
<div class="menu-item" @click="navigateWithWarehouseCheck('palletPacking')">
<div class="menu-icon purchase">
<van-icon name="shopping-cart-o" size="24" />
</div>
<div class="menu-text">立库打托</div>
</div>
</div>
</div>
<!-- 库内管理 --> <!-- 库内管理 -->
<div class="section"> <div class="section">
<div class="section-header"> <div class="section-header">
@ -121,56 +141,30 @@
<span class="section-title">库内管理</span> <span class="section-title">库内管理</span>
</div> </div>
<div class="button-grid"> <div class="button-grid">
<div class="menu-item" @click="navigateWithWarehouseCheck('attributechange')">
<!-- <div class="menu-item disabled" @click="handleDisabledFeature('attributechange')">
<div class="menu-icon attribute"> <div class="menu-icon attribute">
<van-icon name="setting-o" size="24" /> <van-icon name="setting-o" size="24" />
</div> </div>
<div class="menu-text">属性变动</div> <div class="menu-text">属性变动</div>
</div>
<div class="menu-item" @click="navigateWithWarehouseCheck('stocktaking')">
</div>-->
<div class="menu-item disabled" @click="handleDisabledFeature('stocktaking')">
<div class="menu-icon inventory"> <div class="menu-icon inventory">
<van-icon name="records" size="24" /> <van-icon name="records" size="24" />
</div> </div>
<div class="menu-text">库内盘点</div>
<div class="menu-text">盘点</div>
</div> </div>
<div class="menu-item" @click="navigateWithWarehouseCheck('otherinout')">
<div class="menu-icon other">
<van-icon name="exchange" size="24" />
</div>
<div class="menu-text">其他出入库</div>
</div>
<div class="menu-item" @click="navigateWithWarehouseCheck('handlingunit')">
<div class="menu-item disabled" @click="handleDisabledFeature('handlingunit')">
<div class="menu-icon hu"> <div class="menu-icon hu">
<van-icon name="cluster-o" size="24" /> <van-icon name="cluster-o" size="24" />
</div> </div>
<div class="menu-text">单元管理</div>
<div class="menu-text">HU管理</div>
</div> </div>
</div> </div>
</div> </div>
<div class="section">
<div class="section-header">
<span class="bullet"></span>
<span class="section-title">立库操作</span>
</div>
<div class="button-grid">
<div class="menu-item" @click="navigateWithWarehouseCheck('callOut')">
<div class="menu-icon purchase">
<van-icon name="shopping-cart-o" size="24" />
</div>
<div class="menu-text">Call料</div>
</div>
<div class="menu-item" @click="navigateWithWarehouseCheck('palletPacking')">
<div class="menu-icon purchase">
<van-icon name="shopping-cart-o" size="24" />
</div>
<div class="menu-text">立库打托</div>
</div>
</div> </div>
</div> </div>
</div>
</div>
</template> </template>
<script> <script>
@ -254,6 +248,14 @@ export default {
this.getWarehouseList(); this.getWarehouseList();
}, },
methods: { methods: {
//
handleDisabledFeature(featureName) {
this.$message({
type: 'warning',
message: `开发中,敬请期待...`,
duration: 8000 // 5
});
},
// //
handleDocumentClick(event) { handleDocumentClick(event) {
// //
@ -386,24 +388,101 @@ export default {
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
align-items: center; align-items: center;
padding: 4px 20px;
padding: 8px 16px;
background: #17B3A3; background: #17B3A3;
color: white; color: white;
height: 35px;
min-height: 35px;
max-height: 35px;
height: 40px;
min-height: 40px;
max-height: 40px;
} }
.header-left {
/* 仓库选择器样式 */
.warehouse-selector {
position: relative;
display: flex; display: flex;
align-items: center; align-items: center;
font-size: 16px;
font-weight: bold;
cursor: pointer;
padding: 0;
user-select: none;
} }
.header-left .el-icon-arrow-down {
margin-left: 8px;
.warehouse-text {
color: white;
font-size: 16px; font-size: 16px;
font-weight: 500;
margin-right: 8px;
}
.warehouse-selector .el-icon-arrow-down {
color: white;
font-size: 14px;
transition: transform 0.2s ease;
}
.warehouse-selector .el-icon-arrow-down.rotate {
transform: rotate(180deg);
}
/* 下拉框样式 */
.warehouse-dropdown {
position: absolute;
top: 100%;
left: 0;
min-width: 120px;
background: white;
border-radius: 4px;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);
z-index: 9999;
margin-top: 4px;
overflow: hidden;
border: 1px solid #e0e0e0;
}
.dropdown-item {
padding: 12px 16px;
cursor: pointer;
font-size: 14px;
color: #333;
transition: background-color 0.2s ease;
}
.dropdown-item:hover {
background: #f5f5f5;
}
.dropdown-item.active {
//background: #17B3A3;
color: #17B3A3;
}
.dropdown-item.loading {
text-align: center;
color: #666;
cursor: default;
}
.dropdown-item.loading:hover {
background: white;
}
.dropdown-item.loading i {
margin-right: 6px;
animation: spin 1s linear infinite;
}
@keyframes spin {
from { transform: rotate(0deg); }
to { transform: rotate(360deg); }
}
.dropdown-item.empty {
text-align: center;
color: #999;
cursor: default;
}
.dropdown-item.empty:hover {
background: white;
} }
.logout-button { .logout-button {
@ -462,18 +541,6 @@ export default {
white-space: nowrap; white-space: nowrap;
} }
.logout-button {
padding: 5px 10px;
font-size: 12px;
min-width: 50px;
border-radius: 14px;
}
.logout-button i {
margin-right: 4px;
font-size: 12px;
}
/* 内容区域 */ /* 内容区域 */
.content-area { .content-area {
flex: 1; flex: 1;
@ -518,17 +585,41 @@ export default {
.menu-item { .menu-item {
background: white; background: white;
border-radius: 12px; border-radius: 12px;
padding: 12px 6px;
padding: 12px 6px 10px;
text-align: center; text-align: center;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1); box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
transition: transform 0.2s; transition: transform 0.2s;
cursor: pointer; cursor: pointer;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
min-height: 80px;
} }
.menu-item:active { .menu-item:active {
transform: scale(0.95); transform: scale(0.95);
} }
.menu-item.disabled {
opacity: 0.6;
position: relative;
}
.menu-item.disabled::after {
content: '开发中';
position: absolute;
top: 6px;
right: 6px;
background: #ff9500;
color: white;
font-size: 8px;
padding: 2px 4px;
border-radius: 6px;
font-weight: bold;
z-index: 1;
}
.menu-icon { .menu-icon {
width: 40px; width: 40px;
height: 40px; height: 40px;
@ -536,8 +627,9 @@ export default {
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: center; justify-content: center;
margin: 0 auto 6px;
margin: 0 auto 8px;
color: white; color: white;
flex-shrink: 0;
} }
.menu-icon.purchase { .menu-icon.purchase {
@ -600,21 +692,38 @@ export default {
font-size: 11px; font-size: 11px;
color: #333; color: #333;
font-weight: bold; font-weight: bold;
line-height: 1.2;
margin-top: 2px;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
max-width: 100%;
} }
/* 响应式设计 */ /* 响应式设计 */
@media screen and (max-width: 480px) { @media screen and (max-width: 480px) {
.header-bar { .header-bar {
padding: 12px 15px;
padding: 8px 12px;
} }
.header-left {
font-size: 16px;
.warehouse-text {
font-size: 14px;
} }
.logout-button { .logout-button {
padding: 6px 12px;
font-size: 13px;
padding: 5px 10px;
font-size: 12px;
min-width: 50px;
border-radius: 14px;
}
.logout-button i {
margin-right: 4px;
font-size: 12px;
}
.warehouse-dropdown {
min-width: 120px;
} }
.content-area { .content-area {
@ -622,7 +731,7 @@ export default {
} }
.section-header { .section-header {
padding: 6px 10px;
padding: 2px 10px;
} }
.section-title { .section-title {
@ -635,112 +744,55 @@ export default {
} }
.menu-item { .menu-item {
padding: 10px 4px;
}
.menu-text {
font-size: 10px;
}
}
@media screen and (min-width: 481px) and (max-width: 767px) {
.button-grid {
grid-template-columns: repeat(3, 1fr);
}
}
@media screen and (min-width: 768px) {
.button-grid {
grid-template-columns: repeat(4, 1fr);
}
}
/* 仓库选择器样式 */
.warehouse-selector {
position: relative;
display: flex;
align-items: center;
cursor: pointer;
padding: 0;
user-select: none;
padding: 8px 4px 6px;
min-height: 70px;
} }
.warehouse-text {
color: white;
font-size: 16px;
font-weight: 500;
margin-right: 8px;
}
.warehouse-selector .el-icon-arrow-down {
color: white;
font-size: 14px;
transition: transform 0.2s ease;
.menu-icon {
width: 35px;
height: 35px;
margin-bottom: 6px;
} }
.warehouse-selector .el-icon-arrow-down.rotate {
transform: rotate(180deg);
.menu-text {
font-size: 10px;
line-height: 1.1;
margin-top: 2px;
} }
/* 下拉框样式 */
.warehouse-dropdown {
position: absolute;
top: 100%;
left: 0;
min-width: 120px;
background: white;
.menu-item.disabled::after {
top: 4px;
right: 4px;
font-size: 7px;
padding: 1px 3px;
border-radius: 4px; border-radius: 4px;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);
z-index: 9999;
margin-top: 4px;
overflow: hidden;
border: 1px solid #e0e0e0;
}
.dropdown-item {
padding: 12px 16px;
cursor: pointer;
font-size: 14px;
color: #333;
transition: background-color 0.2s ease;
} }
.dropdown-item:hover {
background: #f5f5f5;
} }
.dropdown-item.active {
//background: #17B3A3;
color: #17B3A3;
@media screen and (min-width: 481px) and (max-width: 767px) {
.button-grid {
grid-template-columns: repeat(3, 1fr);
} }
.dropdown-item.loading {
text-align: center;
color: #666;
cursor: default;
.menu-item {
padding: 10px 5px 8px;
min-height: 75px;
} }
.dropdown-item.loading:hover {
background: white;
.menu-icon {
width: 38px;
height: 38px;
margin-bottom: 7px;
} }
.dropdown-item.loading i {
margin-right: 6px;
animation: spin 1s linear infinite;
.menu-text {
font-size: 10.5px;
} }
@keyframes spin {
from { transform: rotate(0deg); }
to { transform: rotate(360deg); }
} }
.dropdown-item.empty {
text-align: center;
color: #999;
cursor: default;
@media screen and (min-width: 768px) {
.button-grid {
grid-template-columns: repeat(4, 1fr);
} }
.dropdown-item.empty:hover {
background: white;
} }
</style> </style>

40
src/views/modules/other-transaction/index.vue

@ -32,17 +32,17 @@ export default {
return { return {
buttons: [ buttons: [
{ {
icon: "scan",
label: "库",
iconClass: "purchase",
to: "productionPicking",
disabled: true,
icon: "add-o",
label: "其它入库",
iconClass: "other-inbound",
to: "other-inbound",
disabled: false,
}, },
{ {
icon: "records",
label: "Receive from Transit",
iconClass: "qualified",
to: "receiveFromTransit",
icon: "minus",
label: "其它出库",
iconClass: "other-outbound",
to: "other-outbound",
disabled: false, disabled: false,
}, },
{ {
@ -53,26 +53,26 @@ export default {
disabled: false, disabled: false,
}, },
{ {
icon: "add-o",
label: "其它入库",
iconClass: "other-inbound",
to: "other-inbound",
icon: "records",
label: "Receive from Transit",
iconClass: "qualified",
to: "receiveFromTransit",
disabled: false, disabled: false,
}, },
{ {
icon: "minus",
label: "其它出库",
iconClass: "other-outbound",
to: "other-outbound",
disabled: false,
icon: "scan",
label: "库",
iconClass: "purchase",
to: "productionPicking",
disabled: true,
}, },
{
/* {
icon: "records", icon: "records",
label: "单独CALL料", label: "单独CALL料",
iconClass: "qualified", iconClass: "qualified",
to: "productionPicking", to: "productionPicking",
disabled: false, disabled: false,
},
},*/
], ],
}; };
}, },

49
src/views/modules/other-transaction/other-inbound.vue

@ -45,7 +45,9 @@
<el-input <el-input
v-model="inboundForm.targetLocationId" v-model="inboundForm.targetLocationId"
placeholder="请输入目标库位" placeholder="请输入目标库位"
size="small">
size="small"
@keyup.enter.native="handleLocationScan"
ref="locationInput">
</el-input> </el-input>
</div> </div>
</div> </div>
@ -156,6 +158,51 @@ export default {
this.scanCode = ''; this.scanCode = '';
}, },
//
handleLocationScan() {
if (!this.inboundForm.targetLocationId.trim()) {
return;
}
//
if (this.$refs.locationInput) {
this.$refs.locationInput.blur();
}
//
this.$nextTick(() => {
// 1
const bottomActions = document.querySelector('.bottom-actions');
if (bottomActions) {
bottomActions.scrollIntoView({
behavior: 'smooth',
block: 'end'
});
return;
}
// 2
const scrollContainer = document.querySelector('.pda-container > div[style*="overflow-y"]') ||
document.querySelector('.pda-container > div:nth-child(2)');
if (scrollContainer) {
scrollContainer.scrollTo({
top: scrollContainer.scrollHeight,
behavior: 'smooth'
});
return;
}
// 3 -
setTimeout(() => {
window.scrollTo({
top: document.documentElement.scrollHeight,
behavior: 'smooth'
});
}, 100);
});
},
// //
validateAndAddLabel(unitId) { validateAndAddLabel(unitId) {
const params = { const params = {

30
src/views/modules/recv/inspectionResults.vue

@ -156,9 +156,21 @@ export default {
} else { } else {
this.$message.error(data.msg || "查询失败"); this.$message.error(data.msg || "查询失败");
} }
//
this.$nextTick(() => {
if (this.$refs.scanCodeRef) {
this.$refs.scanCodeRef.blur();
}
});
}).catch(error => { }).catch(error => {
this.$message.error("查询失败"); this.$message.error("查询失败");
console.error(error); console.error(error);
//
this.$nextTick(() => {
if (this.$refs.scanCodeRef) {
this.$refs.scanCodeRef.blur();
}
});
}); });
this.scanCode = ''; this.scanCode = '';
@ -180,6 +192,12 @@ export default {
if (exists) { if (exists) {
this.$message.warning('该HandlingUnit已扫描,请勿重复扫描'); this.$message.warning('该HandlingUnit已扫描,请勿重复扫描');
this.scanCode = ''; this.scanCode = '';
//
this.$nextTick(() => {
if (this.$refs.scanCodeRef) {
this.$refs.scanCodeRef.blur();
}
});
return; return;
} }
@ -197,9 +215,21 @@ export default {
} else { } else {
this.$message.error(data.msg || 'HandlingUnit不存在或查询失败'); this.$message.error(data.msg || 'HandlingUnit不存在或查询失败');
} }
//
this.$nextTick(() => {
if (this.$refs.scanCodeRef) {
this.$refs.scanCodeRef.blur();
}
});
}).catch(error => { }).catch(error => {
this.$message.error("扫描失败"); this.$message.error("扫描失败");
console.error(error); console.error(error);
//
this.$nextTick(() => {
if (this.$refs.scanCodeRef) {
this.$refs.scanCodeRef.blur();
}
});
}); });
this.scanCode = ''; this.scanCode = '';

12
src/views/modules/recv/qualifiedStorage.vue

@ -247,9 +247,21 @@ export default {
} else { } else {
this.$message.error(data.msg || "查询失败"); this.$message.error(data.msg || "查询失败");
} }
//
this.$nextTick(() => {
if (this.$refs.scanCodeRef) {
this.$refs.scanCodeRef.blur();
}
});
}).catch(error => { }).catch(error => {
this.$message.error("查询失败"); this.$message.error("查询失败");
console.error(error); console.error(error);
//
this.$nextTick(() => {
if (this.$refs.scanCodeRef) {
this.$refs.scanCodeRef.blur();
}
});
}); });
}, },

55
src/views/modules/recv/recv.vue

@ -67,15 +67,18 @@
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item label=" "> <el-form-item label=" ">
<el-button type="text" @click.stop="handlingUnitStep" :disabled="recvItem.needHandlingUnit !== 'Y'"
<!-- <el-button type="text" @click.stop="handlingUnitStep" :disabled="recvItem.needHandlingUnit !== 'Y'"
:class="{ 'disabled-button': recvItem.needHandlingUnit !== 'Y' }" :class="{ 'disabled-button': recvItem.needHandlingUnit !== 'Y' }"
style="font-size: 16px" size="small">包装记录</el-button>-->
<el-button type="text" @click.stop="handlingUnitStep"
style="font-size: 16px" size="small">包装记录</el-button> style="font-size: 16px" size="small">包装记录</el-button>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"><el-form-item label="制造日期"> <el-col :span="12"><el-form-item label="制造日期">
<el-date-picker v-model="recvItem.manufactureDate" <el-date-picker v-model="recvItem.manufactureDate"
type="date" format="yyyy-MM-dd" value-format="yyyy-MM-dd" type="date" format="yyyy-MM-dd" value-format="yyyy-MM-dd"
placeholder="选择制造日期" style="width: 100%" />
placeholder="选择制造日期" style="width: 100%"
:editable="false" />
</el-form-item></el-col> </el-form-item></el-col>
<el-col :span="12"><el-form-item label="供应商批次"> <el-col :span="12"><el-form-item label="供应商批次">
<el-input v-model="recvItem.supplierBatchNo" placeholder="请输入供应商批次" /> <el-input v-model="recvItem.supplierBatchNo" placeholder="请输入供应商批次" />
@ -85,7 +88,8 @@
</el-form-item></el-col> </el-form-item></el-col>
<el-col :span="12"><el-form-item label="到达日期"> <el-col :span="12"><el-form-item label="到达日期">
<el-date-picker v-model="recvItem.arrivalDate" type="date" format="yyyy-MM-dd HH:mm:ss" <el-date-picker v-model="recvItem.arrivalDate" type="date" format="yyyy-MM-dd HH:mm:ss"
value-format="yyyy-MM-dd HH:mm:ss" placeholder="选择到达日期" style="width: 100%" />
value-format="yyyy-MM-dd HH:mm:ss" placeholder="选择到达日期" style="width: 100%"
:editable="false" />
</el-form-item></el-col> </el-form-item></el-col>
<el-col :span="12"><el-form-item label="库位"><el-input v-model="recvItem.locationNo" placeholder="请输入库位" /></el-form-item></el-col> <el-col :span="12"><el-form-item label="库位"><el-input v-model="recvItem.locationNo" placeholder="请输入库位" /></el-form-item></el-col>
<el-col :span="12"><el-form-item label="批号"><el-input v-model="recvItem.batchNo" placeholder="请输入批号" /></el-form-item></el-col> <el-col :span="12"><el-form-item label="批号"><el-input v-model="recvItem.batchNo" placeholder="请输入批号" /></el-form-item></el-col>
@ -108,8 +112,9 @@
<el-col :span="8" style="margin-top: 24px"><el-form-item> <el-col :span="8" style="margin-top: 24px"><el-form-item>
<el-button type="text" @click="createHandlingUnit" style="font-size: 16px">创建</el-button></el-form-item></el-col> <el-button type="text" @click="createHandlingUnit" style="font-size: 16px">创建</el-button></el-form-item></el-col>
<el-table :data="handlingUnit" :row-style="{ height: '30px' }" style="width: 94%; margin-left: 10px;" highlight-current-row> <el-table :data="handlingUnit" :row-style="{ height: '30px' }" style="width: 94%; margin-left: 10px;" highlight-current-row>
<el-table-column prop="code" label="Unit ID" />
<el-table-column prop="qty" label="数量" width="60" />
<el-table-column prop="code" label="序号" />
<el-table-column prop="packageQty" label="包装数" width="80" />
<el-table-column prop="perQty" label="单包装数量" width="100" />
<el-table-column label="操作"> <el-table-column label="操作">
<template slot-scope="scope"> <template slot-scope="scope">
<a @click="removeItem(scope.$index)">删除</a> <a @click="removeItem(scope.$index)">删除</a>
@ -185,6 +190,12 @@ export default {
} else { } else {
this.$message.error(data.msg || '操作失败'); this.$message.error(data.msg || '操作失败');
} }
//
this.$nextTick(() => {
if (this.$refs.scanCodeRef) {
this.$refs.scanCodeRef.blur();
}
});
}); });
}, },
async recvLine(row) { async recvLine(row) {
@ -252,10 +263,14 @@ export default {
return this.$message.warning("请填写有效的包装信息"); return this.$message.warning("请填写有效的包装信息");
} }
const qty = parseFloat(perQty) * parseInt(packageQty); const qty = parseFloat(perQty) * parseInt(packageQty);
const code = 'H' + String(this.handlingUnit.length + 1).padStart(3, '0');
const code = String(this.handlingUnit.length + 1);
const newItem = { ...this.hanlingItem, qty, code }; const newItem = { ...this.hanlingItem, qty, code };
this.handlingUnit.push(newItem); this.handlingUnit.push(newItem);
localStorage.setItem(this.huKey, JSON.stringify(this.handlingUnit)); localStorage.setItem(this.huKey, JSON.stringify(this.handlingUnit));
// HU
this.hanlingItem.perQty = '';
this.hanlingItem.packageQty = '';
}, },
removeItem(index) { removeItem(index) {
this.handlingUnit.splice(index, 1); this.handlingUnit.splice(index, 1);
@ -365,11 +380,39 @@ export default {
console.error('服务器打印失败:', error) console.error('服务器打印失败:', error)
this.$message.error(`打印失败: ${error.message || error}`) this.$message.error(`打印失败: ${error.message || error}`)
} }
},
//
blurAllInputs() {
//
const inputs = document.querySelectorAll('input, textarea, select, [contenteditable="true"]');
inputs.forEach(input => {
if (input === document.activeElement) {
input.blur();
}
});
} }
}, },
mounted() { mounted() {
this.$nextTick(() => this.$refs.scanCodeRef.focus()); this.$nextTick(() => this.$refs.scanCodeRef.focus());
//
this.handleTouchMove = () => {
this.blurAllInputs();
};
//
document.addEventListener('touchmove', this.handleTouchMove, { passive: true });
//
document.addEventListener('scroll', this.handleTouchMove, { passive: true });
},
beforeDestroy() {
//
if (this.handleTouchMove) {
document.removeEventListener('touchmove', this.handleTouchMove);
document.removeEventListener('scroll', this.handleTouchMove);
} }
},
}; };
</script> </script>

Loading…
Cancel
Save