Files
rd_mes_uniapp/pages/wms/stock/search.vue
2025-12-18 14:11:48 +08:00

205 lines
8.4 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<view>
<uni-collapse>
<uni-forms ref="form" :modelValue="formData" :rules="rules">
<!-- <uni-collapse-item title="库存查询" :open="true"> -->
<uni-forms-item label="物料编码" :labelWidth='90' name="materialCode">
<uni-easyinput suffixIcon="scan" @iconClick="scanBar" v-model="formData.materialCode"
@confirm="scanBarMaterialCode" type="text" />
</uni-forms-item>
<uni-forms-item label="物料名称" :labelWidth='90' name="materialName">
<uni-easyinput v-model="formData.materialName"></uni-easyinput>
</uni-forms-item>
<uni-forms-item label="批号" :labelWidth='90' name="batchNo">
<uni-easyinput v-model="formData.batchNo" type="text" />
</uni-forms-item>
<uni-forms-item label="库位条码" :labelWidth='90' name="storageLocationBarcode">
<uni-easyinput suffixIcon="scan" @iconClick="scanBarstorageLocationBarcode"
@confirm="splitStlBarcode" type="text" v-model="formData.storageLocationBarcode" />
</uni-forms-item>
<button @click="queryStockInfo" form-type="submit" type="primary"
style="text-align: center;font-size: 18px;width: 50%;">查询</button>
<!-- </uni-collapse-item> -->
</uni-forms>
<uni-collapse-item title="库位库存明细" :open="true">
<view v-for="(item, index) in wmsMaterialDetailList" :key="index" :disabled="item.disabled"
class="item">
<text>物料编码{{ item.materialCode }}</text>
<text>批号{{ item.batchNo }}</text>
<text>箱号{{ item.lotNo }}</text>
<text>物料名称{{ item.materialName }}</text>
<text>拼接库位{{ item.connectBin }}</text>
<text>入库时间{{ item.storageInTime }}</text>
<text>库存总数{{ item.number }}</text>
<text>锁定数量{{ item.lockNumber }}</text>
<text>可用数量{{ item.MaterialAvailableNumber }}</text>
</view>
</uni-collapse-item>
</uni-collapse>
</view>
</template>
<script>
import {
listStock,
listStockLike
} from "@/api/wms/stock";
import {
listMaterial
} from "@/api/mes/material.js";
export default {
data() {
return {
formData: {
storageLocationBarcode: null,
materialCode: null,
materialName: null,
batchNo: null,
},
wmsMaterialDetailList: [],
// rules: {
// materialCode: {
// rules: [{
// required: true,
// errorMessage: '请输入物料编码!'
// }]
// },
// materialName: {
// rules: [{
// required: true,
// errorMessage: '请输入物料名称!'
// }]
// },
// }
};
},
methods: {
// 【物料编码】的扫描按钮点击操作
scanBar() {
const _this = this;
uni.scanCode({
scanType: ['barCode', 'qrCode'],
success: function(res) {
_this.$set(_this.formData, "materialCode", res.result);
_this.scanBarMaterialCode(res.result);
}
});
},
// 输入物料编码确认后的操作
scanBarMaterialCode(code) {
// 查出物料编码关联的物料名称
listMaterial({
materialCode: code
}).then(res => {
if (res.total > 0) {
this.formData.materialName = res.rows[0].materialName;
}
});
},
// 【库位条码】的扫描按钮点击操作
scanBarstorageLocationBarcode() {
const _this = this;
uni.scanCode({
scanType: ['barCode', 'qrCode'],
success: function(res) {
_this.$set(_this.formData, "storageLocationBarcode", res.result);
_this.splitStlBarcode(res.result);
}
});
},
// 分割库位条码
splitStlBarcode(e) {
this.formData.whCode = null;
this.formData.areaCode = null;
this.formData.shelvesCode = null;
this.formData.storageLocationCode = null;
let array = e.split('-');
switch (array.length) {
case 1:
this.formData.whCode = array[0];
this.queryStockInfo();
break;
case 2:
this.formData.whCode = array[0];
this.formData.areaCode = array[1];
this.queryStockInfo();
break;
case 3:
this.formData.whCode = array[0];
this.formData.areaCode = array[1];
this.formData.shelvesCode = array[2];
this.queryStockInfo();
break;
case 4:
this.formData.whCode = array[0];
this.formData.areaCode = array[1];
this.formData.shelvesCode = array[2];
this.formData.storageLocationCode = array[3];
this.queryStockInfo();
break;
case 5:
this.formData.whCode = array[0];
this.formData.areaCode = array[1];
this.formData.shelvesCode = array[2];
this.formData.storageLocationCode = array[3] + '-' + array[4];
this.queryStockInfo();
break;
}
},
queryStockInfo() {
// 获取库位库存明细数据
listStockLike(this.formData).then(res => {
for (let obj of res.rows) {
obj.MaterialAvailableNumber = obj.number - obj.lockNumber;
}
this.wmsMaterialDetailList = res.rows;
}).catch(err => {
uni.showToast({
title: '请输入必填字段',
icon: 'none',
})
console.error('获取库存明细失败:', err);
});
// // 先验证表单不知道为什么uniapp里的验证功能没用查不出来自己写吧
// this.$refs.form.validate((res) => {
// // 自己写个验证逻辑
// let required = ['materialCode', 'materialName'];
// for (let field of required) {
// if (!this.formData[field]) {
// uni.showToast({
// title: '请输入必填字段',
// icon: 'none',
// })
// return;
// }
// }
// console.log('表单数据信息:', res);
// }).catch((error) => {
// console.error('表单验证失败:', error);
// });
},
},
onReady() {
this.$refs.form.setRules(this.rules);
},
}
</script>
<style>
.item {
margin-bottom: 10px;
padding: 10px;
border: 1px solid #ccc;
border-radius: 5px;
background-color: #f7f7f7;
font-size: 14px;
}
.item text {
display: block;
margin: 5px 0;
}
</style>