<!DOCTYPE html>
|
<html lang="en">
|
<head>
|
<meta charset="UTF-8">
|
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no"/>
|
<title>拣货</title>
|
<link rel="stylesheet" href="../../static/layui/css/layui.css" media="all">
|
<link rel="stylesheet" href="../../static/css/pda.css" media="all">
|
<script type="text/javascript" src="../../static/js/jquery/jquery-3.3.1.min.js"></script>
|
<script type="text/javascript" src="../../static/layui/layui.js" charset="utf-8"></script>
|
<script type="text/javascript" src="../../static/js/common.js" charset="utf-8"></script>
|
<script type="text/javascript" src="../../static/js/cool.js" charset="utf-8"></script>
|
<script type="text/javascript" src="../../static/js/handlebars/handlebars-v4.5.3.js"></script>
|
<style>
|
.layui-input-block {
|
margin-left: 60px;
|
}
|
main {
|
height: 200px;
|
}
|
/* 状态 */
|
#status {
|
padding-left: 2px;
|
line-height: 30px;
|
}
|
.status-0 {
|
color: orange;
|
}
|
.status-1 {
|
color: red;
|
}
|
.status-2 {
|
color: red;
|
}
|
.status-3 {
|
color: green;
|
}
|
/* 客户 */
|
#custName {
|
padding-left: 2px;
|
line-height: 30px;
|
font-size: 14px;
|
}
|
/* 主体 */
|
main {
|
border: 1px solid gainsboro;
|
text-align: center;
|
padding-bottom: 15px;
|
}
|
main hr {
|
width: 80%;
|
margin: 5px 0;
|
display: inline-block
|
}
|
.pakout-item {
|
padding: 10px;
|
}
|
.item-header {
|
text-align: left;
|
padding-left: 20px
|
}
|
.item-content {
|
padding: 15px
|
}
|
#matnrByPakout {
|
width: 65%;
|
height: 40px;
|
}
|
|
/* 弹窗 */
|
.number-tool {
|
margin-left: 10px;
|
padding: 1px 0 1px 5px;
|
display: inline-block;
|
width: 120px;
|
}
|
.number-tool:after {
|
clear: both;
|
content: "";
|
display: table;
|
}
|
.number-tool button {
|
background-color: #fff;
|
margin-top: 3px;
|
font-size: 16px;
|
height: 25px;
|
float: left;
|
width: 25px;
|
border: 1px solid #777777;
|
}
|
.number-tool input {
|
text-align: center;
|
height: 30px;
|
float: left;
|
margin: 0 5px;
|
width: 50px;
|
padding: 0;
|
}
|
#yes {
|
margin: 10px 10px;
|
padding: 5px 20px;
|
font-weight: 600;
|
}
|
#no {
|
margin: 10px 10px;
|
padding: 5px 20px;
|
color: darkred;
|
}
|
|
</style>
|
</head>
|
<body>
|
<!-- 头部 -->
|
<header>
|
<div class="layui-input-inline">
|
<label class="layui-form-label" style="width: 84px">单据编号</label>
|
<input class="layui-input" type="text" id="docNum" onkeyup="findNum(this)" placeholder="扫码 / 输入" autocomplete="off">
|
</div>
|
<div class="layui-input-inline" style="width: 100%">
|
<label class="layui-form-label" style="width: 84px">状态</label>
|
<label id="status" class="layui-form-label status-0">未知</label>
|
</div>
|
<div class="layui-input-inline">
|
<label class="layui-form-label" style="width: 84px">商品条码</label>
|
<input class="layui-input" type="text" id="matnrByPakout" onkeyup="findMat(this)" placeholder="扫码 / 输入" autocomplete="off">
|
</div>
|
</header>
|
|
<!-- 主体 -->
|
<main id="pakout-box">
|
|
</main>
|
<!-- 尾部 -->
|
<footer>
|
<div class="layui-btn-container">
|
<button id="reset" type="button" class="layui-btn layui-btn-primary" onclick="reset()">重置</button>
|
<button id="confirm" type="button" class="layui-btn layui-btn-normal" onclick="pakoutConfirm()" style="margin-left: 20px">全拣</button>
|
<button id="tips1" style="outline: none;color: white;border-color: white; position: absolute;right: 0;bottom: 0;"></button>
|
</div>
|
</footer>
|
<!-- 修改数量弹窗 -->
|
<div id="pakout" style="display: none; text-align: center;padding-top: 10px">
|
<div class="form-item">
|
<span>物料</span>
|
<input id="matnr" type="text" disabled="disabled" style="width: 70%">
|
</div>
|
<div class="form-item">
|
<span>名称</span>
|
<input id="maktx" type="text" disabled="disabled" style="width: 70%">
|
</div>
|
<div class="form-item" style="margin-top: 5px">
|
<span style="vertical-align: middle">数量</span>
|
<div class="number-tool" style="vertical-align: middle">
|
<button onclick="reduce()">-</button><input id="count" type="number"><button onclick="add()">+</button>
|
</div>
|
</div>
|
<button id="no" onclick="no()">取消</button>
|
<button id="yes" onclick="yes()">出库</button>
|
</div>
|
</body>
|
<script>
|
var docNumber;
|
var pakoutData = [];
|
window.onload = function(){
|
document.getElementById("docNum").focus();
|
}
|
|
// 拣货单显示
|
function findNum(el){
|
if (isEmpty(el.value)) {
|
return;
|
}
|
$.ajax({
|
url: baseUrl + "/work/pakout/get",
|
headers: {'token': localStorage.getItem('token')},
|
data: {
|
docNumber: el.value
|
},
|
method: 'POST',
|
async: false,
|
success: function (res) {
|
console.log(res.data);
|
if (res.code === 200) {
|
docNumber = el.value;
|
$("#matnrByPakout").val("");
|
if (res.data != null) {
|
$('#pakout-box').html("");
|
pakoutData = [];
|
pakoutData = res.data.pakouts;
|
if (pakoutData != null) {
|
// 头
|
$('#status').html(res.data.wrkSts$);
|
$('#status').attr("class", "layui-form-label status-" + res.data.wrkSts);
|
$('#custName').html(res.data.custName);
|
// 主
|
var tpl = $("#pakoutDetlTpl").html();
|
var template = Handlebars.compile(tpl);
|
var html = template(res.data);
|
$('#pakout-box').append(html);
|
}
|
$('#tips1').focus();
|
}
|
} else if (res.code === 201) {
|
} else if (res.code === 403) {
|
top.location.href = baseUrl + "/pda";
|
} else {
|
docNumber = null;
|
pakoutData = [];
|
tips(res.msg, true);
|
}
|
}
|
})
|
}
|
|
// 拣货单某个商品拣货
|
var pakoutLayer;
|
function findMat(el){
|
if (isEmpty(el.value)) {
|
return;
|
}
|
for (var i=0;i<pakoutData.length;i++) {
|
if (el.value === pakoutData[i].matnr) {
|
if (pakoutLayer == null) {
|
pakoutLayer = layer.open({
|
type: 1,
|
offset: '20px',
|
title: '出库',
|
shadeClose: true,
|
area: ['80%', '200px'],
|
content: $("#pakout"),
|
success: function (layero, index) {
|
$('#matnr').val(pakoutData[i].matnr);
|
$('#maktx').val(pakoutData[i].maktx);
|
$('#count').val(pakoutData[i].anfme);
|
maxCount = pakoutData[i].anfme;
|
},
|
end: function () {
|
pakoutLayer = null;
|
}
|
});
|
}
|
}
|
}
|
}
|
|
/************************************* 数量 ****************************************/
|
var countDom = $('#count');
|
var minCount = 0;
|
var maxCount;
|
function add() {
|
if (countDom.val() >= maxCount) {
|
return;
|
}
|
countDom.val(Number(countDom.val()) + 1);
|
}
|
function reduce() {
|
if (countDom.val() <= minCount) {
|
return;
|
}
|
countDom.val(countDom.val() - 1);
|
}
|
|
// 单个商品拣货出库
|
function yes(){
|
var matnr = $('#matnr').val();
|
var count = $('#count').val();
|
if (count < minCount) {
|
tips("数量必须大于0", true);
|
return;
|
}
|
if (count > maxCount) {
|
tips("库存不足", true);
|
$('#count').val(maxCount);
|
return;
|
}
|
$.ajax({
|
url: baseUrl + "/work/pakout/out/confirm",
|
headers: {'token': localStorage.getItem('token')},
|
data: JSON.stringify({
|
docNumber: docNumber,
|
matnr: matnr,
|
anfme: count
|
}),
|
contentType:'application/json;charset=UTF-8',
|
async: false,
|
method: 'POST',
|
success: function (res) {
|
layer.close(pakoutLayer);
|
if (res.code === 200) {
|
tips("出库成功");
|
findNum(document.getElementById("docNum"));
|
} else if (res.code === 403) {
|
top.location.href = baseUrl + "/pda";
|
} else {
|
tips(res.msg, true);
|
}
|
}
|
});
|
}
|
|
layui.use(['laydate', 'form'], function() {
|
var $ = layui.jquery;
|
var layer = layui.layer;
|
var form = layui.form;
|
|
});
|
|
// 拣货确认
|
function pakoutConfirm() {
|
layer.confirm('确认拣货完成?', {shadeClose: true}, function(){
|
if (pakoutData == null || pakoutData.length === 0) {
|
tips("请确认单据编号!", true);
|
return;
|
}
|
var docNum = pakoutData[0].docNum;
|
if (isEmpty(docNum)) {
|
tips("请确认单据编号!", true);
|
return;
|
}
|
$.ajax({
|
url: baseUrl+"/work/stock/out/confirm",
|
headers: {'token': localStorage.getItem('token')},
|
data: JSON.stringify({
|
orderNo: docNum
|
}),
|
contentType:'application/json;charset=UTF-8',
|
method: 'POST',
|
success: function (res) {
|
if (res.code === 200) {
|
reset();
|
tips("拣货成功")
|
} else if (res.code === 403) {
|
top.location.href = baseUrl + "/pda";
|
} else {
|
tips(res.msg, true)
|
}
|
}
|
})
|
});
|
}
|
|
// 重置
|
function reset() {
|
$("#docNum").val("");
|
$("#matnrByPakout").val("");
|
$('#status').html("未知");
|
$('#status').attr("class", "layui-form-label status-0");
|
$('#custName').html("-");
|
$('#pakout-box').html("");
|
pakoutData = [];
|
docNumber = null;
|
document.getElementById("docNum").focus();
|
layui.form.render('select');
|
}
|
|
/**
|
* 提示信息
|
* @param msg 提示内容
|
* @param warn true:红色var字体
|
*/
|
function tips(msg, warn) {
|
layer.msg(msg, {icon: warn?2:1})
|
}
|
|
</script>
|
<script type="text/template" id="pakoutDetlTpl">
|
{{#each pakouts}}
|
<hr>
|
<div class="pakout-item">
|
<div class="item-header">
|
{{maktx}}
|
</div>
|
<div class="item-content">
|
<div style="float: left">{{anfme}}{{unit}}</div>
|
<div style="float: right">货位:{{locNo}}</div>
|
</div>
|
</div>
|
{{/each}}
|
</script>
|
</html>
|