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

350 lines
12 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">
<!-- <uni-collapse-item title="明细标签入库" :open="true"> -->
<uni-forms-item label="扫描标签" :labelWidth='90' name="purchaseLabelCode">
<uni-easyinput suffixIcon="scan" @iconClick="scanBar" @blur="getlabelCode" placeholder='请扫描标签'
v-model="purchaseLabelCode" type="text" :focus='true'/>
</uni-forms-item>
<!-- 标签明细 -->
<uni-collapse-item :open="true">
<uni-card :is-shadow="false" is-full v-for="(item,index) in formData.wmsCommonInDetailLabelList"
:key="index" v-if="total>0">
<div><strong>标签码</strong>:{{item.labelCode}}</div>
<div><strong>供应商</strong>:{{item.supplierName}}</div>
<div><strong>物料编码</strong>:{{item.materialCode}}</div>
<div><strong>物料名称</strong>:{{item.materialName}}</div>
<div><strong>规格</strong>:{{item.specification}}</div>
<div><strong>批号</strong>:{{item.materialBatchNo}}</div>
<div><strong>数量</strong>:{{item.number}}</div>
<!-- <div><strong>状态</strong>:{{returnStatus(item.status)}}</div> -->
<div><strong>状态</strong>:{{dtlStatusFormat(item.status)}}</div>
</uni-card>
</uni-collapse-item>
<uni-forms-item label="上架扫码" :labelWidth='90' name="location" style="margin-top:10px">
<uni-easyinput suffixIcon="scan" @iconClick="scanLocation" @blur="getWarehouse"
placeholder='请扫描库位标签' v-model="locationCode" type="text" />
</uni-forms-item>
<uni-collapse-item :open="true">
<uni-card :is-shadow="false" is-full v-if='warehouseName'>
<div><strong>仓库</strong>:{{warehouseName}}</div>
<div><strong>库位</strong>:{{showLocationCode}}</div>
</uni-card>
</uni-collapse-item>
<u-button type="primary" @click="submitIn">确认入库</u-button>
</uni-forms>
</uni-collapse>
<uni-popup ref="alertDialog" type="dialog">
<uni-popup-dialog type="info" cancelText="取消" confirmText="确认" title="确认是否入库" @confirm="dialogConfirm">
<div>
<div><strong>物料编码</strong>:{{alert.materialCode}}</div>
<div><strong>数量</strong>:{{alert.number}}</div>
<div><strong>库位</strong>:{{alert.showLocationCode}}</div>
</div>
</uni-popup-dialog>
</uni-popup>
</view>
</template>
<script>
import {
listQuality,
getQuality,
addIn,
listReceive,
getReceive,
getListDetail,
updateIn,
listIn,
getIn,
getQualityDetail,
getReceiveDetail,
getDetailListsBySRM,
getListDetailByBL,
listSupplier,
listPurchaseInDetailLabel,
listWarehouse,
labelInStock,
} from "@/api/wms/purchase.js";
import {
getConfigKey,
} from "@/api/wms/materRequisitiontask";
export default {
onLoad: function() {},
created() {
//获取当前客户
getConfigKey('wms.warehouse.mode').then(res =>{
this.getConfigKey.setkey(res.msg)
})
},
mounted() {
},
data() {
return {
// 遮罩层
loading: true,
// 总条数
total: 0,
//标识码
purchaseLabelCode: null,
//库位码
locationCode: null,
//仓库码
showLocationCode: null,
//仓库名
warehouseName: null,
formData: {
areaCode: null,
shelvesCode: null,
storageLocationCode: null,
whCode: null,
// 采购入库明细标签表格数据
wmsCommonInDetailLabelList: [],
},
//标签码查询参数
queryParams: {
pageNum: 1,
pageSize: 50,
labelCode: null,
},
//仓库查询参数
queryParamsCK: {
pageNum: 1,
pageSize: 50,
orderByColumn: "id",
isAsc: "desc",
warehouseCode: null,
},
getConfigKey:new classLocationCode(),
alert:{
materialCode :null,
number : null,
showLocationCode: null
}
}
},
methods: {
//明细状态
dtlStatusFormat(status) {
if (status == 1) {
return "入库完成";
} else if (status == 0) {
return "等待入库";
} else if (status == 2) {
return "入库中";
} else {
return "等待入库";
}
},
//扫描标签码
scanBar() {
const _this = this;
uni.scanCode({
scanType: ['barCode', 'qrCode'],
success: function(res) {
_this.purchaseLabelCode = res.result;
_this.getlabelCode();
}
});
},
getlabelCode() {
this.queryParams.labelCode = this.purchaseLabelCode;
this.getList()
},
//查询标签列表
getList() {
this.loading = true;
//解析扫的条码信息,以,为间隔转换成数组,并取第二个数据为真实需要的信息
this.purchaseLabelCode = this.queryParams.labelCode = this.queryParams.labelCode.split(',')[1]
listPurchaseInDetailLabel(this.queryParams).then(res => {
this.formData.wmsCommonInDetailLabelList = [res.rows[0]];
this.total = res.total;
this.loading = false;
if (this.total == 0) {
// console.log("二维码有错");
this.$modal.msgError("标签二维码错误");
this.purchaseLabelCode = null
}
});
},
//扫描库位码
scanLocation() {
const _this = this;
uni.scanCode({
scanType: ['barCode', 'qrCode'],
success: function(res) {
_this.locationCode = res.result;
_this.getWarehouse();
}
});
},
//仓库码
async getWarehouse() {
if (this.locationCode == null || this.locationCode == '') {
this.$modal.msgError("库位码为空");
} else {
this.showLocationCode = this.locationCode
let parts = this.locationCode.split('-');
if (parts.length <1 || parts.length > 4) {
this.$modal.msgError("库位码格式有误");
this.locationCode = null
return
}
parts = this.getConfigKey.getValue(this.locationCode).split('-');
// this.formData.whCode = parts[0] || null;
this.formData.whCode = await getParts(parts) || null;
this.formData.areaCode = parts[1] || null;
this.formData.shelvesCode = parts[2] || null;
this.formData.storageLocationCode = parts.slice(3).join('-') || null;
this.queryParamsCK.warehouseCode = parts[0]
this.getlistWarehouse()
}
/**
* 根据扫的二维码的长度判断其第一位应该是什么值
* @name PZQ
* @param {Object} parts 二维码转换的数组
*/
function getParts(parts){
if(parts.length == 4 ){
return parts[0] || null;
}else {
return '0' + parts[0].charAt(0) || null;
}
}
},
//查仓库名
getlistWarehouse() {
// this.formData.location
this.loading = true;
listWarehouse(this.queryParamsCK).then(res => {
this.warehouseName = res.rows[0].warehouseName
this.loading = false;
});
},
//重置
reset() {
// 总条数
this.total = 0,
//标识码
this.purchaseLabelCode = null,
//库位码
this.locationCode = null,
//仓库码
this.showLocationCode = null,
//仓库名
this.warehouseName = null,
this.formData = {
areaCode: null,
shelvesCode: null,
storageLocationCode: null,
whCode: null,
// 采购入库明细标签表格数据
wmsCommonInDetailLabelList: [],
}
//标签码查询参数
this.queryParams = {
pageNum: 1,
pageSize: 50,
labelCode: null,
}
//仓库查询参数
this.queryParamsCK = {
pageNum: 1,
pageSize: 50,
orderByColumn: "id",
isAsc: "desc",
warehouseCode: null,
}
},
//确认入库
submitIn() {
if(this.formData.wmsCommonInDetailLabelList == null || this.formData.whCode == []){
this.$modal.msgError("请扫描标识码");
return;
}
if(this.formData.whCode == null || this.formData.whCode == ''){
this.$modal.msgError("请扫描库位码");
return;
}
console.log(this.formData)
const {wmsCommonInDetailLabelList} = this.formData
const {materialCode,number } = wmsCommonInDetailLabelList[0]
// showLocationCode
// else
//弹框二次确认
this.alert = {
materialCode,
number,
showLocationCode:this.showLocationCode
}
this.$refs.alertDialog.open()
return
// uni.showModal({
// title: '提示',
// content: `确定要入库数量为${number}物料编码为${materialCode}到${this.showLocationCode}吗?`,
// success: res => {
// if (res.confirm) {
// labelInStock(this.formData).then(response => {
// this.$modal.msgSuccess("入库成功");
// this.reset()
// });
// } else if (res.cancel) {
// // console.log('用户点击取消');
// uni.showToast({
// title: '取消入库',
// icon: 'none', //如果要纯文本不要icon将值设为'none'
// duration: 2000 //持续时间为 2秒
// })
// }
// }
// });
},
dialogConfirm(){
labelInStock(this.formData).then(response => {
this.$modal.msgSuccess("入库成功");
this.reset()
});
this.$refs.alertDialog.close()
}
}
}
class classLocationCode{
#key = null
setkey(key){
this.key = key
}
/**
* 给外部调用的方法
* @param {Object} value
*/
getValue(value){
const obj = {
"1":this.#getLocationCode,
}
if(this.key in obj){
return obj[this.key](value)
}
return value
}
/**
* 判断上架扫码是否拼接
* @param {Object} value
*/
#getLocationCode(value){
const number = value[0]
return '0' + number + '-' + value
}
}
</script>
<style>
</style>