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.
123 lines
4.8 KiB
123 lines
4.8 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>
|
|
<div style="width: 500px" id="reader">
|
|
|
|
</div>
|
|
<script src="/static/lib/layui-v2.6.3/layui.js" charset="utf-8"></script>
|
|
<script>
|
|
// 用于判断是否包含字母
|
|
let barCodeList = [];
|
|
var depository;
|
|
var place;
|
|
// 是否扫描二维码标志位
|
|
var flag = false;
|
|
const html5QrCode = new Html5Qrcode("reader");
|
|
const qrCodeSuccessCallback = (decodedText, decodedResult) => {
|
|
var formatName = decodedResult.result.format.formatName;
|
|
/* 扫描成功 */
|
|
// console.log(decodedText,decodedResult);
|
|
if (formatName.includes("QR_CODE")||formatName.includes("AZTEC")) {
|
|
// console.log("二维码",decodedText);
|
|
// 如果扫描的位本地二维码
|
|
flag = true;
|
|
// 先解密
|
|
let jmResult = {};
|
|
jmResult.result = decodedText;
|
|
layui.$.ajax({
|
|
url: "/material/decode3Des",
|
|
type: 'post',
|
|
dataType: 'json',
|
|
contentType: "application/json;charset=utf-8",
|
|
data: JSON.stringify(jmResult),
|
|
success:function (d) {
|
|
let parse = JSON.parse(d.data);
|
|
if (parse.did !== undefined) {
|
|
// 如果扫描的是仓库二维码
|
|
depository = parse;
|
|
}
|
|
if (parse.pid !== undefined) {
|
|
// 如果扫描的是库位二维码
|
|
place = parse;
|
|
}
|
|
}
|
|
})
|
|
}else{
|
|
// 如果是条形码
|
|
barCodeList.push(decodedText);
|
|
}
|
|
html5QrCode.stop().then((ignore) => {
|
|
|
|
// 暂停扫描
|
|
layer.confirm("是否继续扫描?",
|
|
{
|
|
btn: ["继续", "取消"]
|
|
},
|
|
function () {// 继续
|
|
// 弹出选择框
|
|
layer.close(layer.index);
|
|
html5QrCode.start({ facingMode: { exact: "environment"} }, config, qrCodeSuccessCallback);
|
|
},
|
|
function () { // 取消当前操作
|
|
layer.close(layer.index); // 关闭弹窗
|
|
// 将数据暂存到redis
|
|
var param = {};
|
|
param.barCodeList = barCodeList;
|
|
param.flag = flag;
|
|
layui.$.ajax({
|
|
url:"/material/temporaryBarCodeValueForMaterial",
|
|
type:"post",
|
|
datatype:"json",
|
|
data:JSON.stringify(param),
|
|
contentType: "application/json;charset=utf-8",
|
|
});
|
|
if(flag){
|
|
var params = {};
|
|
params.depository = depository;
|
|
params.place = place;
|
|
params.materialList = [];
|
|
layui.$.ajax({
|
|
url: "/material/temporaryValue",
|
|
type: 'post',
|
|
dataType: 'json',
|
|
contentType: "application/json;charset=utf-8",
|
|
data: JSON.stringify(params)
|
|
});
|
|
}
|
|
// 关闭当前页
|
|
var index = parent.layer.getFrameIndex(window.name);
|
|
parent.layer.close(index);
|
|
}
|
|
)
|
|
|
|
}).catch((err) => {
|
|
console.log(err)
|
|
// 停止失败,处理它。
|
|
});
|
|
};
|
|
const config = { fps: 10, aspectRatio: 2 };
|
|
|
|
// Select back camera or fail with `OverconstrainedError`.
|
|
html5QrCode.start({ facingMode: { exact: "environment"} }, config, qrCodeSuccessCallback);
|
|
</script>
|
|
</body>
|
|
</html>
|