You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
488 lines
23 KiB
488 lines
23 KiB
<!DOCTYPE html>
|
|
<html xmlns:th="http://www.w3.org/1999/xhtml">
|
|
<html xmlns:th="http://www.thymeleaf.org">
|
|
<head>
|
|
<meta charset="utf-8">
|
|
<title>扫码</title>
|
|
<link rel="stylesheet" href="/static/lib/layui-v2.6.3/css/layui.css" media="all">
|
|
<link rel="stylesheet" href="/static/css/layuimini.css?v=2.0.4.2" media="all">
|
|
<link rel="stylesheet" href="/static/css/themes/default.css" media="all">
|
|
<link rel="stylesheet" href="/static/lib/font-awesome-4.7.0/css/font-awesome.min.css" media="all">
|
|
<!--[if lt IE 9]>
|
|
<script src="/static/js/html5.min.js"></script>
|
|
<script src="/static/js/respond.min.js"></script>
|
|
<![endif]-->
|
|
<!-- vue相关-->
|
|
<script src="../static/js/vue/vue.js"></script>
|
|
<script src="../static/js/vue/vue-router.js"></script>
|
|
<script src="../static/lib/http-vue-loader/src/httpVueLoader.js"></script>
|
|
<script src="../static/js/VueQrcodeReader.umd.min.js"></script>
|
|
<script src="/static/js/scanBarCode/html5-qrcode.min.js"></script>
|
|
</head>
|
|
<body>
|
|
<input id="id" style="display: none" th:value="${record.getId()}">
|
|
<input id="mcode" style="display: none" th:value="${materialById.getCode()}">
|
|
<input id="depositoryId" style="display: none" th:value="${record.getDepositoryId()}">
|
|
<input id="quantity" style="display: none" th:value="${record.getQuantity() - record.getTrueOut()}">
|
|
<input id="flagForSelect" style="display: none" value="false">
|
|
<div style="width: 500px" id="reader">
|
|
|
|
</div>
|
|
<script src="/static/lib/layui-v2.6.3/layui.js" charset="utf-8"></script>
|
|
<script>
|
|
// 获取待处理订单的参数
|
|
let id = layui.$("#id").val();
|
|
let mcode = layui.$("#mcode").val();
|
|
let depositoryId = layui.$("#depositoryId").val();
|
|
let quantity = layui.$("#quantity").val();
|
|
// 用于标志选择时是否成功
|
|
let flagForSelect = layui.$("#flagForSelect").val();
|
|
|
|
// 先定义,用于弹出确定框
|
|
function isOutTrue() {
|
|
}
|
|
|
|
function outQuantityCheck() {
|
|
|
|
}
|
|
|
|
// 用于判断是否包含字母
|
|
var depository = null;
|
|
var place = null;
|
|
var material = null;
|
|
var qrCode = null;
|
|
var barCode = null;
|
|
|
|
// 用于标志是否为第一次提交
|
|
let flagForForm = false;
|
|
|
|
layui.$(function () {
|
|
/*let wxScan = parent.parent.parent;
|
|
if (wxScan.wx !== undefined) {
|
|
wxScan = wxScan.wx;
|
|
} else {
|
|
wxScan = wxScan.parent.wx;
|
|
}
|
|
wxScan.scanQRCode({
|
|
desc: 'scanQRCode desc',
|
|
needResult: 1, // 默认为0,扫描结果由企业微信处理,1则直接返回扫描结果,
|
|
scanType: ["barCode", "qrCode"], // 可以指定扫二维码还是条形码(一维码),默认二者都有
|
|
success: function (res) {
|
|
// 回调
|
|
var result = res.resultStr;//当needResult为1时返回处理结果
|
|
var req = {};
|
|
req.qrCode = result;
|
|
outboundLogic(req);
|
|
|
|
},
|
|
error: function (res) {
|
|
if (res.errMsg.indexOf('function_not_exist') > 0) {
|
|
alert('版本过低请升级')
|
|
}
|
|
|
|
}
|
|
|
|
});*/
|
|
var result = "1638361349087338496";//当needResult为1时返回处理结果
|
|
var req = {};
|
|
req.qrCode = result;
|
|
outboundLogic(req);
|
|
|
|
});
|
|
|
|
|
|
// 弹出出库确定弹出框
|
|
isOutTrue = function (req) {
|
|
var confirmIndex = layer.confirm("确定出库?", {
|
|
btn: ["确定", "取消"]
|
|
},
|
|
function () { // 如果确定出库
|
|
if (!flagForForm) {
|
|
flagForForm = true;
|
|
layui.$.ajax({
|
|
url: "/depositoryRecord/isCheckOut",
|
|
type: "post",
|
|
dataType: 'json',
|
|
data: JSON.stringify(req),
|
|
contentType: "application/json;charset=utf-8",
|
|
success: function (res) {
|
|
if (res.status === 200) {
|
|
// 如果出库成功
|
|
layer.msg("出库成功",
|
|
{
|
|
icon: 6,
|
|
time: 500
|
|
}
|
|
, function () {
|
|
layer.close(layer.index);
|
|
var index = parent.layer.getFrameIndex(window.name);
|
|
parent.layer.close(index);
|
|
|
|
});
|
|
} else {
|
|
// 如果出库失败
|
|
layer.msg(res.statusInfo.detail + ",请重试", {
|
|
icon: 0,
|
|
time: 1000
|
|
}, function () {
|
|
var index = parent.layer.getFrameIndex(window.name);
|
|
parent.layer.close(index);
|
|
});
|
|
}
|
|
|
|
}
|
|
})
|
|
}
|
|
},
|
|
function () {
|
|
// 如果取消
|
|
depository = null;
|
|
material = null;
|
|
place = null;
|
|
layer.close(layer.index);
|
|
var index = parent.layer.getFrameIndex(window.name);
|
|
parent.layer.close(index);
|
|
}
|
|
)
|
|
};
|
|
|
|
// 具体出库逻辑
|
|
outboundLogic = function (req) {
|
|
layui.$.ajax({
|
|
url: "/material/qywxScanCodeOut",
|
|
type: "post",
|
|
dataType: 'json',
|
|
data: JSON.stringify(req),
|
|
contentType: "application/json;charset=utf-8",
|
|
success: function (d) {
|
|
var data = d.data;
|
|
// 获取标准
|
|
var flag = data.flag;
|
|
if (flag === 0) {
|
|
// 如果是无效码
|
|
layer.confirm("扫描失败,是否重新扫描", {
|
|
btn: ["确定", "取消"]
|
|
}, function () {
|
|
parent.parent.parent.wx.scanQRCode({
|
|
desc: 'scanQRCode desc',
|
|
needResult: 1, // 默认为0,扫描结果由企业微信处理,1则直接返回扫描结果,
|
|
scanType: ["barCode", "qrCode"], // 可以指定扫二维码还是条形码(一维码),默认二者都有
|
|
success: function (res) {
|
|
// 回调
|
|
var result = res.resultStr;//当needResult为1时返回处理结果
|
|
var req = {};
|
|
req.qrCode = result;
|
|
outboundLogic(req);
|
|
}
|
|
})
|
|
}, function () {
|
|
// 关闭当前页
|
|
var index = parent.layer.getFrameIndex(window.name);
|
|
parent.layer.close(index);
|
|
})
|
|
} else if (flag === 1) {
|
|
// 如果是物料
|
|
material = data.material;
|
|
if (mcode !== material.code && Number(mcode) !== material.code && mcode !== material.code.toString()) {
|
|
layer.confirm("出库物料不正确,请重新扫描", {
|
|
btn: ["确定", "取消"]
|
|
}, function () {
|
|
material = null;
|
|
parent.parent.parent.wx.scanQRCode({
|
|
desc: 'scanQRCode desc',
|
|
needResult: 1, // 默认为0,扫描结果由企业微信处理,1则直接返回扫描结果,
|
|
scanType: ["barCode", "qrCode"], // 可以指定扫二维码还是条形码(一维码),默认二者都有
|
|
success: function (res) {
|
|
// 回调
|
|
var result = res.resultStr;//当needResult为1时返回处理结果
|
|
var req = {};
|
|
req.qrCode = result;
|
|
outboundLogic(req);
|
|
}
|
|
})
|
|
},
|
|
function () {
|
|
// 关闭当前页
|
|
var index = parent.layer.getFrameIndex(window.name);
|
|
parent.layer.close(index);
|
|
|
|
})
|
|
} else {
|
|
if (depository !== null) { // 如果已经扫描仓库
|
|
if (depositoryId !== depository.id && Number(depositoryId) !== depository.id && depositoryId !== depository.id.toString()) {
|
|
// 如果扫描的仓库不是订单要求的仓库
|
|
layer.confirm("当前仓库不符合要求,请移步至正确仓库", {
|
|
btn: ["确定"]
|
|
}, function () {
|
|
// 关闭当前页
|
|
var index = parent.layer.getFrameIndex(window.name);
|
|
parent.layer.close(index);
|
|
})
|
|
} else {
|
|
// 如果是出库位置为默认库位
|
|
var param = {};
|
|
param.id = id;
|
|
param.qrCode = qrCode;
|
|
param.barCode = barCode;
|
|
|
|
// 弹出确定框
|
|
outQuantityCheck(param);
|
|
}
|
|
} else if (place != null) {
|
|
// 如果已经扫描库位
|
|
if (depositoryId !== place.did && Number(depositoryId) !== place.did && depositoryId !== place.did.toString()) {
|
|
// 如果当前仓库不是订单对应仓库
|
|
depository = null;
|
|
place = null;
|
|
layer.confirm("当前库位不符合要求,请移步至正确库位", {
|
|
btn: ["确定"]
|
|
}, function () {
|
|
// 关闭当前页
|
|
var index = parent.layer.getFrameIndex(window.name);
|
|
parent.layer.close(index);
|
|
})
|
|
} else if (place.mcodeList.indexOf(mcode) === -1) {
|
|
// 如果当前库位不存在该物料
|
|
depository = null;
|
|
place = null;
|
|
layer.confirm("出库库位不含该物料,请重新扫描", {
|
|
btn: ["确定"]
|
|
}, function () {
|
|
// 关闭当前页
|
|
var index = parent.layer.getFrameIndex(window.name);
|
|
parent.layer.close(index);
|
|
})
|
|
} else {
|
|
var param = {};
|
|
param.id = id;
|
|
param.placeId = place.id;
|
|
param.qrCode = qrCode;
|
|
param.barCode = barCode;
|
|
// 弹出确定框
|
|
outQuantityCheck(param);
|
|
}
|
|
} else {
|
|
var codeType = data.CodeType;
|
|
if (codeType === 1) {
|
|
qrCode = req.qrCode;
|
|
} else {
|
|
barCode = req.qrCode;
|
|
}
|
|
|
|
layer.confirm("请扫描仓库或库位", {
|
|
btn: ["扫描", "取消"]
|
|
}, function () { // 继续
|
|
layer.close(layer.index); // 关闭弹窗
|
|
parent.parent.parent.wx.scanQRCode({
|
|
desc: 'scanQRCode desc',
|
|
needResult: 1, // 默认为0,扫描结果由企业微信处理,1则直接返回扫描结果,
|
|
scanType: ["barCode", "qrCode"], // 可以指定扫二维码还是条形码(一维码),默认二者都有
|
|
success: function (res) {
|
|
// 回调
|
|
var result = res.resultStr;//当needResult为1时返回处理结果
|
|
var req = {};
|
|
req.qrCode = result;
|
|
outboundLogic(req);
|
|
}
|
|
})
|
|
|
|
}, function () { // 取消
|
|
// 关闭当前页
|
|
var index = parent.layer.getFrameIndex(window.name);
|
|
parent.layer.close(index);
|
|
})
|
|
}
|
|
}
|
|
|
|
} else if (flag === 2) {
|
|
// 如果扫描的为库位
|
|
place = data.place;// 将扫描结果保存到vue中
|
|
if (material == null) {
|
|
// 如果还没有扫描物料
|
|
layer.confirm("是否进行扫描物料", {
|
|
btn: ["扫描", "选择"]
|
|
}, function () { // 继续
|
|
layer.close(layer.index); // 关闭弹窗
|
|
parent.parent.parent.wx.scanQRCode({
|
|
desc: 'scanQRCode desc',
|
|
needResult: 1, // 默认为0,扫描结果由企业微信处理,1则直接返回扫描结果,
|
|
scanType: ["barCode", "qrCode"], // 可以指定扫二维码还是条形码(一维码),默认二者都有
|
|
success: function (res) {
|
|
// 回调
|
|
var result = res.resultStr;//当needResult为1时返回处理结果
|
|
var req = {};
|
|
req.qrCode = result;
|
|
outboundLogic(req)
|
|
}
|
|
})
|
|
}, function () { // 选择
|
|
// 进行选择对应物料
|
|
layer.open({
|
|
title: '物料列表',
|
|
type: 2,
|
|
shade: 0.2,
|
|
maxmin: true,
|
|
shadeClose: true,
|
|
area: ['70%', '70%'],
|
|
content: '/ScanBarOrQrCodeOut_selectMaterial?pid=' + place.id + '&mcode=' + mcode + '&depositoryId=' + place.did,
|
|
end: function () {
|
|
let flagForSelect = layui.$("#flagForSelect").val();
|
|
if (flagForSelect === 'true') {
|
|
var param = {};
|
|
param.id = id;
|
|
param.placeId = place.id;
|
|
param.qrCode = qrCode;
|
|
param.barCode = barCode;
|
|
// 弹出确定框
|
|
outQuantityCheck(param);
|
|
}
|
|
}
|
|
})
|
|
/*var index = parent.layer.getFrameIndex(window.name);
|
|
parent.layer.close(index);*/
|
|
|
|
})
|
|
} else {
|
|
if (depositoryId !== place.did && Number(depositoryId) !== place.did && depositoryId !== place.did.toString()) {
|
|
// 如果当前仓库不是订单对应仓库
|
|
depository = null;
|
|
place = null;
|
|
layer.confirm("当前库位不符合要求,请移步至正确库位", {
|
|
btn: ["确定"]
|
|
}, function () {
|
|
// 关闭当前页
|
|
var index = parent.layer.getFrameIndex(window.name);
|
|
parent.layer.close(index);
|
|
})
|
|
} else if (place.mcodeList.indexOf(mcode) === -1) {
|
|
// 如果当前库位不存在该物料
|
|
depository = null;
|
|
place = null;
|
|
layer.confirm("出库库位不含该物料,请重新扫描", {
|
|
btn: ["确定"]
|
|
}, function () {
|
|
// 关闭当前页
|
|
var index = parent.layer.getFrameIndex(window.name);
|
|
parent.layer.close(index);
|
|
})
|
|
} else {
|
|
var param = {};
|
|
param.id = id;
|
|
param.placeId = place.id;
|
|
param.qrCode = qrCode;
|
|
param.barCode = barCode;
|
|
// 弹出确定框
|
|
outQuantityCheck(param);
|
|
}
|
|
}
|
|
|
|
|
|
} else if (flag === 3) {
|
|
// 如果是仓库
|
|
depository = data.depository;// 将扫描结果保存到vue中
|
|
|
|
if (material == null) {
|
|
// 如果还没有扫描物料
|
|
layer.confirm("请扫描物料", {
|
|
btn: ["扫描", "选择"]
|
|
}, function () { // 继续
|
|
layer.close(layer.index); // 关闭弹窗
|
|
parent.parent.parent.wx.scanQRCode({
|
|
desc: 'scanQRCode desc',
|
|
needResult: 1, // 默认为0,扫描结果由企业微信处理,1则直接返回扫描结果,
|
|
scanType: ["barCode", "qrCode"], // 可以指定扫二维码还是条形码(一维码),默认二者都有
|
|
success: function (res) {
|
|
// 回调
|
|
var result = res.resultStr;//当needResult为1时返回处理结果
|
|
var req = {};
|
|
req.qrCode = result;
|
|
outboundLogic(req);
|
|
|
|
}
|
|
|
|
});
|
|
|
|
}, function () { // 选择
|
|
// 进行选择对应物料
|
|
layer.open({
|
|
title: '物料列表',
|
|
type: 2,
|
|
shade: 0.2,
|
|
maxmin: true,
|
|
shadeClose: true,
|
|
area: ['70%', '70%'],
|
|
content: '/ScanBarOrQrCodeOut_selectMaterial?pid=' + 0 + '&mcode=' + mcode + '&depositoryId=' + depository.id,
|
|
end: function () {
|
|
let flagForSelect = layui.$("#flagForSelect").val();
|
|
if (flagForSelect === 'true') {
|
|
var param = {};
|
|
param.id = id;
|
|
param.qrCode = qrCode;
|
|
param.barCode = barCode;
|
|
// 弹出确定框
|
|
outQuantityCheck(param);
|
|
}
|
|
|
|
}
|
|
})
|
|
/*var index = parent.layer.getFrameIndex(window.name);
|
|
parent.layer.close(index);*/
|
|
|
|
})
|
|
} else {
|
|
// 如果已经扫描物料
|
|
if (depositoryId !== depository.id && Number(depositoryId) !== depository.id && depositoryId !== depository.id.toString()) {
|
|
// 如果当前仓库不是订单对应仓库
|
|
depository = null;
|
|
place = null;
|
|
layer.confirm("当前仓库不符合要求,请移步至正确仓库", {
|
|
btn: ["确定"]
|
|
}, function () {
|
|
// 关闭当前页
|
|
var index = parent.layer.getFrameIndex(window.name);
|
|
parent.layer.close(index);
|
|
})
|
|
} else {
|
|
// 如果正确
|
|
var param = {};
|
|
param.id = id;
|
|
param.qrCode = qrCode;
|
|
param.barCode = barCode;
|
|
// 弹出确定框
|
|
outQuantityCheck(param);
|
|
|
|
}
|
|
}
|
|
}
|
|
|
|
}
|
|
})
|
|
};
|
|
|
|
outQuantityCheck = function (req) {
|
|
layer.prompt({
|
|
formType: 0,
|
|
value: quantity,
|
|
title: '请输入出库数量',
|
|
}, function (value, index, elem) {
|
|
if (Number(value) > Number(quantity)) {
|
|
layer.msg("非法值,重新输入!", {
|
|
icon: 0,
|
|
time: 500
|
|
},
|
|
function () {
|
|
layui.$(elem).val(quantity)
|
|
})
|
|
} else {
|
|
req.trueOut = value;
|
|
layer.close(index);
|
|
isOutTrue(req);
|
|
}
|
|
|
|
});
|
|
}
|
|
|
|
|
|
</script>
|
|
</body>
|
|
</html>
|