Browse Source

合并盘点时通过物料盘点与位置盘点的表格页面

lwx_dev
erdanergou 3 years ago
parent
commit
d90c370443
  1. 847
      src/main/resources/static/js/stockTaking/stockTakingForLocationCard.js
  2. 335
      src/main/resources/static/js/stockTaking/stockTakingForLocationTable.js
  3. 386
      src/main/resources/static/js/stockTaking/stockTakingForMaterial.js
  4. 897
      src/main/resources/templates/pages/stockTaking/stockTaking.html
  5. 897
      target/classes/templates/pages/stockTaking/stockTaking.html

847
src/main/resources/static/js/stockTaking/stockTakingForLocationCard.js

@ -0,0 +1,847 @@
// 用于添加标签
function addItem(obj) {
}
// 用于删除标签
function deleteItem(obj) {
}
// 用于加载物料选择菜单
function selectMaterialForLocation() {
}
// 用于通过物料名称获取物料
function selectMaterialByNameForLocation() {
}
// 用于编码查询
function selectCodeForLocation(obj) {
}
// 用于扫描物料编码
function scanMaterialCodeForTaking() {
}
// 用于二次渲染页面
function Coverpage() {
}
// 用于计算盘点结果
function calculate(obj) {
}
// 用于监听下拉框变化
function changeSelectValueForUnit(obj){
}
// 用于监听下拉框变化
function changeSelectValueForProducedDate(obj){
}
// 用于暂存卡片个数
let params = [];
// 用于卡片编号
var NewIdNumber = 1;
let needToUpdate = {};
layui.use(['form', 'step', 'flow', 'laydate', 'inputTag'], function () {
var $ = layui.$,
form = layui.form,
step = layui.step;
// 实现卡片添加
addItem = function (obj) {
// 获取父元素id
var parentId = obj.parentNode.id;
NewIdNumber = NewIdNumber + 1;
var materialItem = `
<div class="layui-card-body" id=` + "InventoryDetails" + NewIdNumber + ` style="padding-right: 0px">
<hr>
<i class="layui-icon layui-icon-subtraction" style="display: inline"
onclick="deleteItem(this)"></i>
<div class="layui-form-item">
<label class="layui-form-label" style="height: 40px;">物料名称:</label>
<div class="layui-input-block" style="margin: 0px;">
<div class="inputdiv">
<input type="text" placeholder="请选择物料" class="layui-input"
style="border-style: none"
id="openSonByMaterialForLocation" onblur="selectMaterialByNameForLocation(this)"
lay-verify="required"/>
<i class="layui-icon layui-icon-search" style="display: inline"
id="selectMaterialForLocation" onclick="selectMaterialForLocation(this)"></i>
</div>
<input type="text" name=` + "mid" + NewIdNumber + ` class="layui-input" id=` + "midForLocation" + NewIdNumber + `
style="display: none" lay-verify="required"/>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label" style="height: 40px;">物料编码:</label>
<div class="layui-input-block" style="margin: 0px;">
<div class="inputdiv">
<input id=` + "codeForLocation" + NewIdNumber + ` name= ` + "code" + NewIdNumber + ` type="text" placeholder="请填写入物料编码" value=""
onblur="selectCodeForLocation(this)"
class="layui-input" lay-verify="required"
style="border-style: none">
<img src="/static/images/search.ico" height="16" width="16"
style="margin-top: 10px" onclick="scanMaterialCodeForTaking(this)">
</div>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">物料类型</label>
<div class="layui-input-block">
<input type="text" placeholder="请选择物料类型" class="layui-input" id="openSonByMateralType" readonly
lay-verify="required"/>
<input type="text" id=` + "materialTypeId" + NewIdNumber + ` name=` + "typeId" + NewIdNumber + ` placeholder="请选择物料类型" class="layui-input" style="display: none" lay-verify="required"/>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">材质:</label>
<div class="layui-input-block">
<input name=` + "texture" + NewIdNumber + ` type="text" placeholder="请填写材质名称" class="layui-input" />
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">规格型号:</label>
<div class="layui-input-block">
<input name=` + "version" + NewIdNumber + ` type="text" placeholder="请填写规格型号" class="layui-input"/>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">计量单位:</label>
<div class="layui-input-block">
<select onchange="changeSelectValueForUnit(this)" class="layui-form-select" name=` + "unit" + NewIdNumber + ` id=` + "unit" + NewIdNumber + ` ></select>
</div>
</div>
<div class="layui-form-item" style="display: none" id=` + "producedDateItem" + NewIdNumber + ` onchange="changeSelectValueForProducedDate(this)" class="layui-form-select">
<label class="layui-form-label">生产日期:</label>
<div class="layui-input-block">
<select name=` + "producedDate" + NewIdNumber + ` id=` + "producedDate" + NewIdNumber + ` onchange="changeSelectValueForProducedDate(this)" class="layui-form-select">
</select>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">库存数量:</label>
<div class="layui-input-block">
<input type="number" class="layui-input" readonly
name=` + "oldInventory" + NewIdNumber + ` id=` + "oldInventory" + NewIdNumber + ` lay-verify="required"/>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">盘点数量:</label>
<div class="layui-input-block">
<input type="number" class="layui-input" onblur="calculate(this)"
name=` + "newInventory" + NewIdNumber + ` lay-verify="required"/>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">盘点结果:</label>
<div class="layui-input-block">
<select name=` + "takingResult" + NewIdNumber + ` id=` + "result" + NewIdNumber + ` class="layui-form-select">
</select>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">盈亏数量:</label>
<div class="layui-input-block">
<input type="number" class="layui-input" readonly id=` + "Inventory_number" + NewIdNumber + `
name=` + "inventory" + NewIdNumber + ` lay-verify="required"/>
</div>
</div>
<i class="layui-icon layui-icon-addition" style="display: inline"
onclick="addItem(this)"></i>
</div>
`;
// 获取当前高度
var height = parseInt(($("#stepForm1").css('height')).split("px")[0]);
params.push(NewIdNumber);
// $("#form1").css("height", height + 682 + 'px');
$("#stepForm1").css("height", height + 625 + 'px');
$("#" + parentId).after(materialItem);
};
// 实现卡片删除
deleteItem = function (obj) {
// 获取父节点
var parent = obj.parentNode;
var parentId = parent.id;
parentId = parseInt(parentId.split("InventoryDetails")[1]);
// 获取祖父节点
var reparent = parent.parentNode;
var height = parseInt(($("#stepForm1").css('height')).split("px")[0]);
$("#stepForm1").css("height", height - 625 + 'px');
params = remove(params, parentId);
reparent.removeChild(parent);
};
//删除数组中指定元素
function remove(arr, item) {
var result = [];
for (let i = 0; i < arr.length; i++) {
if (arr[i] === item) {
continue;
}
result.push(arr[i]);
}
return result;
}
// 用于打开物料树形菜单
selectMaterialForLocation = function (obj) {
if (depositoryId !== undefined && departmentManagerIdForLocation !== undefined && departmentManagerIdForLocation !== "") {
var parent = obj.parentNode.parentNode.parentNode.parentNode;
var parentId = parent.id;
// 物料编码父级
var codeChildren = parent.childNodes[7];
// 物料名称父级
var materialChildren = parent.childNodes[5];
// 物料类型父级
var typeChildren = parent.childNodes[9];
// 材质父级
var textureChildren = parent.childNodes[11];
// 规格型号父级
var versionChildren = parent.childNodes[13];
// 计量单位父级
var unitChildren = parent.childNodes[15];
// 库存数量父级
var inventoryChildren = parent.childNodes[19];
// 编码条目
var codeItem = codeChildren.childNodes[3].childNodes[1];
// 具体条码
var codeValue = codeItem.childNodes[1];
// 物料条目
var materialItem = materialChildren.childNodes[3].childNodes;
// 物料名称
var materialName = materialItem[1].childNodes[1];
// 物料编码
var materialId = materialItem[3];
// 输入的物料名称
var mname = materialName.value;
// 物料种类条目
var materialTypeItem = typeChildren.childNodes[3].childNodes;
layer.open({
type: 2,
title: '弹窗内容',
skin: 'layui-layer-rim',
maxmin: true,
shadeClose: true, //点击遮罩关闭层
area: ['70%', '70%'],
move: '.layui-layer-title',
fixed: false,
content: '/getMaterialAll?mname=' + mname + '&type=3&clickObj=' + parentId + '&placeId=' + placeId + '&depositoryId=' + depositoryId,
success: function (layero, index) {
var children = layero.children();
var content = $(children[1]);
var iframeChildren = $(content.children());
content.css('height', '100%');
iframeChildren.css('height', '100%');
},
end: function () {
var mid = materialId.value;
if (mid !== '') {
$.ajax({
url: "/material/findInventoryByIdAndPid?mid=" + mid + "&pid=" + placeId,
type: "get",
dataType: 'json',
contentType: "application/json;charset=utf-8",
success: function (d) {
var material = d.data.materialById;
var code = material.code;
if (code === undefined) {
code = "";
}
codeValue.value = code;
materialTypeItem[1].value = material.typeName;
materialTypeItem[3].value = material.typeId;
textureChildren.childNodes[3].childNodes[1].value = material.texture === null || material.texture === undefined ? '' : material.texture;
versionChildren.childNodes[3].childNodes[1].value = material.version === null || material.version === undefined ? '' : material.version;
inventoryChildren.childNodes[3].childNodes[1].value = material.quantity;
var materialAndBarCodeList = material.materialAndBarCodeList;
var idNumber = materialId.name.split("mid")[1];
let unitItem = $("#unit" + idNumber);
unitItem.empty();
unitItem.append(new Option(material.unit, "-1"));
let splitInfoList = material.splitInfoList;
if (splitInfoList.length > 0) {
$.each(splitInfoList, function (index, item) {
unitItem.append(new Option(item.newUnit, item.newUnit));
})
}
form.render();
var shelfLife = material.shelfLife;
if (shelfLife !== null && shelfLife !== undefined) {
$("#" + "producedDateItem" + idNumber).show();
var producedDateList = d.data['producedDateList'];
if (producedDateList !== null && producedDateList !== undefined && producedDateList.length > 0) {
$.each(producedDateList, function (index, item) {
$("#" + "producedDate" + idNumber).append(new Option(item, item));
})
}
form.render();
} else {
$("#" + "producedDateItem" + idNumber).hide();
form.render();
}
}
});
}
}
});
} else {
layer.msg("请先选择盘点位置或负责人", {
icon: 0,
time: 500
})
}
};
// 用于实现通过编码查询物料
selectCodeForLocation = function (obj) {
if (depositoryId !== undefined && departmentManagerIdForLocation !== undefined && departmentManagerIdForLocation !== "") {
// 输入code
var code = obj.value;
if(code.trim() !== ""){
var parent = obj.parentNode.parentNode.parentNode.parentNode;
// 物料编码父级
var codeChildren = parent.childNodes[7];
// 物料名称父级
var materialChildren = parent.childNodes[5];
// 物料类型父级
var typeChildren = parent.childNodes[9];
// 材质父级
var textureChildren = parent.childNodes[11];
// 规格型号父级
var versionChildren = parent.childNodes[13];
// 计量单位父级
var unitChildren = parent.childNodes[15];
// 库存数量父级
var inventoryChildren = parent.childNodes[19];
// 编码条目
var codeItem = codeChildren.childNodes[3].childNodes[1];
// 物料条目
var materialItem = materialChildren.childNodes[3].childNodes;
// 物料名称
var materialName = materialItem[1].childNodes[1];
// 物料编码
var materialId = materialItem[3];
// 物料种类条目
var materialTypeItem = typeChildren.childNodes[3].childNodes;
// 获取对应元素
var req = {};
req.code = code;
req.depositoryId = depositoryId;
req.placeId = placeId;
$.ajax({
url: "/material/findMatrialByCodeForTaking",
type: "post",
dataType: 'json',
data: JSON.stringify(req),
contentType: "application/json;charset=utf-8",
success: function (d) {
var d = d.data;
if (d == null) {
layer.msg("该位置暂未该物品,请确认是否输入正确");
materialName.value = "";
materialId.value = "";
obj.value = "";
materialTypeItem[1].value = "";
materialTypeItem[3].value = "";
textureChildren.childNodes[3].childNodes[1].value = "";
versionChildren.childNodes[3].childNodes[1].value = "";
unitChildren.childNodes[3].childNodes[1].value = "";
inventoryChildren.childNodes[3].childNodes[1].value = "";
} else {
materialName.value = d.mname;
materialId.value = d.id;
materialTypeItem[1].value = d.typeName;
materialTypeItem[3].value = d.typeId;
textureChildren.childNodes[3].childNodes[1].value = d.texture === null || d.texture === undefined ? '' : d.texture;
versionChildren.childNodes[3].childNodes[1].value = d.version === null || d.version === undefined ? '' : d.version;
inventoryChildren.childNodes[3].childNodes[1].value = d.quantity;
// 获取物料与条形码的对应关系
var materialAndBarCodeList = d["materialAndBarCodeList"];
var idNumber = materialId.name.split("mid")[1];
let unit = $("#unit" + idNumber);
unit.empty();
unit.append(new Option(d.baseUnit, "-1"));
if (d.splitInfoList !== null && d.splitInfoList.length > 0) {
$.each(d.splitInfoList, function (index, item) {
unit.append(new Option(item.newUnit, item.newUnit));//往下拉菜单里添加元素
});
form.render();
}
var producedDateItem = $("#producedDate" + idNumber);
if (producedDateItem.length > 0) {
producedDateItem.empty();
}
var shelfLife = d.shelfLife;
if (shelfLife !== null && shelfLife !== undefined) {
$("#" + "producedDateItem" + idNumber).show();
var producedDateList = d['producedDateList'];
if (producedDateList != null && producedDateList != undefined && producedDateList.length > 0) {
$.each(producedDateList, function (index, item) {
$("#" + "producedDate" + idNumber).append(new Option(item, item));
})
}
form.render();
} else {
$("#" + "producedDateItem" + idNumber).hide();
form.render();
}
}
}
});
}
} else {
layer.msg("请先选择盘点位置或负责人", {
icon: 0,
time: 500
},function () {
obj.value = "";
})
}
};
// 通过物料名称获取物料
selectMaterialByNameForLocation = function (obj) {
if (depositoryId !== undefined && departmentManagerIdForLocation !== undefined && departmentManagerIdForLocation !== "") {
// 如果已经选择盘点的位置
// 输入物料名称
var data = obj.value;
var parent = obj.parentNode.parentNode.parentNode.parentNode;
var parentId = parent.id;
// 物料编码父级
var codeChildren = parent.childNodes[7];
// 物料名称父级
var materialChildren = parent.childNodes[5];
// 物料类型父级
var typeChildren = parent.childNodes[9];
// 材质父级
var textureChildren = parent.childNodes[11];
// 规格型号父级
var versionChildren = parent.childNodes[13];
// 计量单位父级
var unitChildren = parent.childNodes[15];
// 库存数量父级
var inventoryChildren = parent.childNodes[19];
// 编码条目
var codeItem = codeChildren.childNodes[3].childNodes[1];
// 具体条码
var codeValue = codeItem.childNodes[1];
// 物料条目
var materialItem = materialChildren.childNodes[3].childNodes;
// 物料名称
var materialName = materialItem[1].childNodes[1];
// 物料编码
var materialId = materialItem[3];
// 物料种类条目
var materialTypeItem = typeChildren.childNodes[3].childNodes;
var req = {};
data = data.split(",")[0];
if(data !== ""){
req.mname = data;
req.depositoryId = depositoryId;
req.placeId = placeId;
$.ajax({
url: "/material/findMaterialForTaking",
type: "post",
dataType: 'json',
data: JSON.stringify(req),
contentType: "application/json;charset=utf-8",
success: function (d) {
if (d.count > 1) {
layer.msg("请点击右侧搜索确定物品");
materialId.value = "";
codeValue.value = "";
textureChildren.childNodes[3].childNodes[1].value = "";
versionChildren.childNodes[3].childNodes[1].value = "";
unitChildren.childNodes[3].childNodes[1].value = "";
inventoryChildren.childNodes[3].childNodes[1].value = "";
return false;
} else if (d.count === 0) {
layer.msg("没有该物品,请确认输入是否正确");
materialId.value = "";
codeValue.value = "";
materialName.value = "";
materialTypeItem[1].value = '';
materialTypeItem[3].value = "";
textureChildren.childNodes[3].childNodes[1].value = "";
versionChildren.childNodes[3].childNodes[1].value = "";
unitChildren.childNodes[3].childNodes[1].value = "";
inventoryChildren.childNodes[3].childNodes[1].value = "";
return false;
} else {
var material = d.data;
materialName.value = material.mname;
materialId.value = material.id;
codeValue.value = material.code;
materialTypeItem[1].value = material.typeName;
materialTypeItem[3].value = material.typeId;
textureChildren.childNodes[3].childNodes[1].value = material.texture === null || material.texture === undefined ? '' : material.texture;
versionChildren.childNodes[3].childNodes[1].value = material.version === null || material.version === undefined ? '' : material.version;
inventoryChildren.childNodes[3].childNodes[1].value = material.baseUnitQuantity;
var idNumber = materialId.name.split("mid")[1];
// 获取物料与条形码的对应关系
let unitItem = $("#unit" + idNumber);
unitItem.empty();
unitItem.append(new Option(material.baseUnit, "-1"));
let splitInfoList = material.splitInfoList;
if (splitInfoList.length > 0) {
$.each(splitInfoList, function (index, item) {
unitItem.append(new Option(item.newUnit, item.newUnit));
})
}
var shelfLife = d.shelfLife;
if (shelfLife !== null && shelfLife !== undefined) {
$("#" + "producedDateItem" + idNumber).show();
var producedDateList = d['producedDateList'];
if (producedDateList !== null && producedDateList !== undefined && producedDateList.length > 0) {
$.each(producedDateList, function (index, item) {
$("#" + "producedDate" + idNumber).append(new Option(item, item));
})
}
form.render();
} else {
$("#" + "producedDateItem" + idNumber).hide();
form.render();
}
}
}
});
}
} else {
layer.msg("请先选择盘点位置或负责人", {
icon: 0,
time: 500
},function () {
obj.value = "";
})
}
};
// 用于二次渲染页面
Coverpage = function (num, obj) {
// 获取待添加父类
NewIdNumber = num;
if (num === 0) { // 如果是第一个
NewIdNumber = "";
}
var texture = obj.texture === null || obj.texture === undefined ? "" : obj.texture;
var version = obj.version === null || obj.version === undefined ? "" : obj.version;
var unit = obj.unit === null || obj.unit === undefined ? "" : obj.unit;
var materialItem = `
<div class="layui-card-body" id=` + "InventoryDetails" + NewIdNumber + ` style="padding-right: 0px">
<hr>
<i class="layui-icon layui-icon-subtraction" style="display: inline"
onclick="deleteItem(this)"></i>
<div class="layui-form-item">
<label class="layui-form-label" style="height: 40px;">物料名称:</label>
<div class="layui-input-block" style="margin: 0px;">
<div class="inputdiv">
<input type="text" placeholder="请选择物料" class="layui-input" value="${obj.mname}"
style="border-style: none"
id="openSonByMaterialForLocation" onblur="selectMaterialByNameForLocation(this)"
lay-verify="required"/>
<i class="layui-icon layui-icon-search" style="display: inline"
id="selectMaterialForLocation" onclick="selectMaterialForLocation(this)"></i>
</div>
<input type="text" name=` + "mid" + NewIdNumber + ` class="layui-input" id=` + "midForLocation" + NewIdNumber + `
value="${obj.mid}" style="display: none" lay-verify="required"/>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label" style="height: 40px;">物料编码:</label>
<div class="layui-input-block" style="margin: 0px;">
<div class="inputdiv">
<input id=` + "codeForLocation" + NewIdNumber + ` name= ` + "code" + NewIdNumber + ` type="text" placeholder="请填写入物料编码"
onblur="selectCodeForLocation(this)" value="${obj.code}"
class="layui-input" lay-verify="required"
style="border-style: none">
<img src="/static/images/search.ico" height="16" width="16"
style="margin-top: 10px" onclick="scanMaterialCodeForTaking(this)">
</div>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">物料类型</label>
<div class="layui-input-block">
<input type="text" placeholder="请选择物料类型" class="layui-input" id="openSonByMateralType" readonly
value="${obj.typeName}" lay-verify="required"/>
<input type="text" id=` + "materialTypeId" + NewIdNumber + ` name=` + "typeId" + NewIdNumber + ` value="${obj.typeId}"
placeholder="请选择物料类型" class="layui-input" style="display: none" lay-verify="required"/>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">材质:</label>
<div class="layui-input-block">
<input type="text" placeholder="请填写材质名称" class="layui-input" value="${texture}"
name=` + "texture" + NewIdNumber + `/>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">规格型号:</label>
<div class="layui-input-block">
<input type="text" placeholder="请填写规格型号" class="layui-input" value="${version}"
name=` + "version" + NewIdNumber + `/>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">计量单位:</label>
<div class="layui-input-block">
<select onchange="changeSelectValueForUnit(this)" class="layui-form-select" name=` + "unit" + NewIdNumber +` id=` + "unit" + NewIdNumber + ` ></select>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">库存数量:</label>
<div class="layui-input-block">
<input type="number" class="layui-input" readonly value="${obj.quantity}"
name=` + "oldInventory" + NewIdNumber + ` id=` + "oldInventory" + NewIdNumber + ` lay-verify="required"/>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">盘点数量:</label>
<div class="layui-input-block">
<input type="number" class="layui-input" onblur="calculate(this)"
name=` + "newInventory" + NewIdNumber + ` lay-verify="required"/>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">盘点结果:</label>
<div class="layui-input-block">
<select name=` + "takingResult" + NewIdNumber + ` id=` + "result" + NewIdNumber + ` class="layui-form-select">
</select>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">盈亏数量:</label>
<div class="layui-input-block">
<input type="number" class="layui-input" readonly id=` + "Inventory_number" + NewIdNumber + `
name=` + "Inventory_number" + NewIdNumber + ` lay-verify="required"/>
</div>
</div>
<i class="layui-icon layui-icon-addition" style="display: inline"
onclick="addItem(this)"></i>
</div>
`;
// 获取当前高度
var height = parseInt(($("#stepForm1").css('height')).split("px")[0]);
if (NewIdNumber !== "") {
params.push(NewIdNumber)
}
$("#stepForm1").css("height", height + 682 + 'px');
var oldIdNumber = NewIdNumber - 1;
if (oldIdNumber === 0) {
oldIdNumber = "";
}
$("#InventoryDetails" + oldIdNumber).after(materialItem);
};
// 用于扫描物料编码
scanMaterialCodeForTaking = function (obj) {
if (depositoryId !== undefined && departmentManagerIdForLocation !== undefined && departmentManagerIdForLocation !== "") {
parent.wx.scanQRCode({
desc: 'scanQRCode desc',
needResult: 1, // 默认为0,扫描结果由企业微信处理,1则直接返回扫描结果,
scanType: ["qrCode", "barCode"], // 可以指定扫二维码还是条形码(一维码),默认二者都有
success: function (res) {
// 回调
var result = res.resultStr;//当needResult为1时返回处理结果
var req = {};
req.qrCode = result;
req.placeId = placeId;
req.depositoryId = depositoryId;
req.codeFlag = 2;
$.ajax({
url: "/material/qywxStockTakingScanQrCode",
type: "post",
dataType: 'json',
data: JSON.stringify(req),
contentType: "application/json;charset=utf-8",
success: function (d) {
var data = d.data;
if (data == null) {
layer.msg("对于编码:" + result + ",并未发现对应的物料", {
icon: 0,
time: 1000 //0.5秒关闭(如果不配置,默认是3秒)
}, function () {
})
} else {
var parent = obj.parentNode.parentNode.parentNode.parentNode;
var parentId = parent.id;
// 物料编码父级
var codeChildren = parent.childNodes[7];
// 物料名称父级
var materialChildren = parent.childNodes[5];
// 物料类型父级
var typeChildren = parent.childNodes[9];
// 材质父级
var textureChildren = parent.childNodes[11];
// 规格型号父级
var versionChildren = parent.childNodes[13];
// 计量单位父级
var unitChildren = parent.childNodes[15];
// 库存数量父级
var inventoryChildren = parent.childNodes[19];
// 编码条目
var codeItem = codeChildren.childNodes[3].childNodes[1];
// 具体条码
var codeValue = codeItem.childNodes[1];
// 物料条目
var materialItem = materialChildren.childNodes[3].childNodes;
// 物料名称
var materialName = materialItem[1].childNodes[1];
// 物料编码
var materialId = materialItem[3];
// 物料种类条目
var materialTypeItem = typeChildren.childNodes[3].childNodes;
materialName.value = data.mname;
materialId.value = data.id;
materialTypeItem[1].value = data.typeName;
materialTypeItem[3].value = data.typeId;
codeValue.value = data.code;
textureChildren.childNodes[3].childNodes[1].value = data.texture === null || data.texture === undefined ? '' : data.texture;
versionChildren.childNodes[3].childNodes[1].value = data.version === null || data.version === undefined ? '' : data.version;
unitChildren.childNodes[3].childNodes[1].value = data.unit === null || data.unit === undefined ? '' : data.unit;
inventoryChildren.childNodes[3].childNodes[1].value = data.quantity;
// 获取物料与条形码的对应关系
var idNumber = materialId.name.split("mid")[1];
var unitItem = $("#unit" + idNumber);
unitItem.empty();
unitItem.append(new Option(data.unit, "-1"));
let splitInfoList = data.splitInfoList;
if (splitInfoList.length > 0) {
$.each(splitInfoList, function (index, item) {
unitItem.append(new Option(item.newUnit, item.newUnit));
})
}
form.render();
var shelfLife = data.shelfLife;
if (shelfLife !== null && shelfLife !== undefined) {
$("#" + "producedDateItem" + idNumber).show();
var producedDateList = data['producedDateList'];
if (producedDateList !== null && producedDateList !== undefined && producedDateList.length > 0) {
$.each(producedDateList, function (index, item) {
$("#" + "producedDate" + idNumber).append(new Option(item, item));
})
}
form.render();
} else {
$("#" + "producedDateItem" + idNumber).hide();
form.render();
}
}
}
})
}
})
} else {
layer.msg("请先选择盘点位置或负责人", {
icon: 0,
time: 500
},function () {
})
}
};
// 用于计算盘点结果
calculate = function (obj) {
var parent = obj.parentNode.parentNode.parentNode;
var oldInventoryItem = parent.childNodes[19].childNodes[3].childNodes[1];
var nowInventoryItem = parent.childNodes[21].childNodes[3].childNodes[1];
var resultItem = parent.childNodes[23].childNodes[3].childNodes[1];
var InventoryItem = parent.childNodes[25].childNodes[3].childNodes[1];
var oldInventory = Number(oldInventoryItem.value);
var nowInventory = Number(nowInventoryItem.value);
$('#' + resultItem.id).empty();
if (oldInventory > nowInventory) {
// 如果盘点数目小于库存数目
$('#' + resultItem.id).append(new Option("盘亏", 'Inventory_down'));//往下拉菜单里添加元素
$("#" + InventoryItem.id).val(oldInventory - nowInventory);
} else if (oldInventory < nowInventory) {
// 如果盘点数目大于库存数目
$('#' + resultItem.id).append(new Option("盘盈", 'Inventory_up'));//往下拉菜单里添加元素
$("#" + InventoryItem.id).val(nowInventory - oldInventory);
} else {
// 如果盘点数目等于库存数目
$('#' + resultItem.id).append(new Option("正常", 'Inventory_normal'));//往下拉菜单里添加元素
$("#" + InventoryItem.id).val(nowInventory - oldInventory);
}
form.render();
};
changeSelectValueForProducedDate = function(obj){
let req = {};
var id = obj.id;
var idNumber = id.split('producedDate')[1]; // 得到当前id对应数字
req.mid = $("#" + "midForLocation" + idNumber).val();
req.producedDate = obj.value;
$.ajax({
url: "/material/findQuantityByProducedDate",
type: "post",
dataType: 'json',
data: JSON.stringify(req),
contentType: "application/json;charset=utf-8",
success: function (d) {
$("#" + "oldInventory" + idNumber).val(d.data)
}
});
};
});

335
src/main/resources/static/js/stockTaking/stockTakingForLocationTable.js

@ -0,0 +1,335 @@
// 用于扫描条形码或二维码
function scanCode(obj) {
}
// 用于计算盘点结果
function calculateForLocation(obj) {
}
function updateTableShowForLocation() {
}
layui.use(['form', 'step', 'flow', 'table', 'inputTag'], function () {
var $ = layui.$,
form = layui.form,
table = layui.table,
inputTag = layui.inputTag,
dropdown = layui.dropdown, //下拉菜单
step = layui.step;
departmentManagerIdForLocation = $("#departmentManagerIdForLocation").val();
let tagData = [];
let tempData = $("#departmentManagerForLocation").val().split(",");
$.each(tempData, function (index, item) {
if (item !== "") {
tagData.push(item)
}
});
$("#departmentManagerForLocation").val("");
let tagLabel1 = inputTag.render({
elem: '#departmentManagerForLocation',
data: tagData,//初始值
removeKeyNum: 8,//删除按键编号 默认,BackSpace 键
createKeyNum: 13,//创建按键编号 默认,Enter 键
onChange: function (data, value, type, index) {
if (type === "remove") {
let split = departmentManagerIdForLocation.split(",");
split.splice(index, 1);
departmentManagerIdForLocation = split.toString();
$("#departmentManagerIdForLocation").val(departmentManagerIdForLocation);
}
}
});
// 用于打开负责人树形菜单
$("#selectdepartmentManagerForLocation").on('click', function () {
layer.open({
type: 2,
title: '弹窗内容',
skin: 'layui-layer-rim',
maxmin: true,
shadeClose: true, //点击遮罩关闭层
area: ['70%', '70%'],
move: '.layui-layer-title',
fixed: false,
content: '/selectManager?type=Location',
end: function () {
departmentManagerIdForLocation = $("#departmentManagerIdForLocation").val();
tagLabel1.createItem();
},
success: function (layero, index) {
var children = layero.children();
var content = $(children[1]);
var iframeChildren = $(content.children());
content.css('height', '100%');
iframeChildren.css('height', '100%');
}
});
});
// 通过位置盘点物料页面
table.render({
elem: "#currentTableForLocation",
url: '/material/findInventoryForStockTaking',
parseData: function (res) { //res 即为原始返回的数据
return {
"status": res.status, //解析接口状态
"message": res.statusInfo.message, //解析提示文本
"count": res.count, //解析数据长度
"data": res.data //解析数据列表
};
},
request: {
pageName: 'page', //页码的参数名称,默认:page
limitName: 'size' //每页数据量的参数名,默认:limit
},
response: {
statusName: 'status' //规定数据状态的字段名称,默认:code
, statusCode: 200 //规定成功的状态码,默认:0
, msgName: 'message' //规定状态信息的字段名称,默认:msg
, countName: 'count' //规定数据总数的字段名称,默认:count
, dataName: 'data' //规定数据列表的字段名称,默认:data
},
where: {
depositoryId: "-1"
},
height: 'full-255',//固定高度-即固定表头固定第一行首行
cols: [
[
{field: 'mcode', width: 150, title: '存货编码', fixed: 'left'},
{field: 'mname', width: 150, title: '物料名称'},
{field: 'typeName', width: 100, title: '物料种类'},
{field: 'version', width: 150, title: '规格型号',},
{field: 'pcode', width: 150, title: '所处库位',},
{title: '计量单位', width: 200, templet: '#changeUnit', align: "center"},
{field: 'inventory', width: 100, title: '库存数'},
{field: 'stockTakingQuantity', width: 100, title: '盘点数', edit: 'quantity'},
{field: 'takingResultString', width: 100, title: '盘点结果'},
{field: 'takingInventory', width: 100, title: '盈亏数量'},
]
],
limits: [10, 15, 20, 25, 50, 100],
limit: 10,
page: true,
skin: 'line',
done: function (res, curr, count) {
$.each(res['data'], function (i, j) {
let takingUnit = j["takingUnit"];
if (takingUnit !== null) {
let parentItem = $("[lay-id='currentTableForLocation'] tr:eq(" + (i + 1) + ")");
let unitHandleItem = parentItem.children()[5];
let quantityHandleItem = parentItem.children()[6];
unitHandleItem.childNodes[0].childNodes[1].childNodes[0].data = takingUnit;
quantityHandleItem.childNodes[0].innerText = j["splitInventory"][takingUnit];
}
});
}
});
// 扫码盘点位置
scanCode = function () {
parent.wx.scanQRCode({
desc: 'scanQRCode desc',
needResult: 1, // 默认为0,扫描结果由企业微信处理,1则直接返回扫描结果,
scanType: ["qrCode", "barCode"], // 可以指定扫二维码还是条形码(一维码),默认二者都有
success: function (res) {
// 回调
var result = res.resultStr;//当needResult为1时返回处理结果
var req = {};
req.qrCode = result;
req.codeFlag = 2;
$.ajax({
url: "/place/qywxApplicationInScanQrCode",
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.msg("并未查询到对应位置,请重新扫描", {
icon: 0,
time: 1000
}, function () {
depositoryId = -1;
placeId = -1;
});
} else if (flag === 1) {
// 如果获取到的是库位
var place = data["place"];
$("#placeId").val(place.id);
$("#openSonByDepository").val(place.depositoryName);
$("#depositoryId").val(place.did);
depositoryId = place.did;
placeId = place.id;
} else if (flag === 2) {
// 如果获取到的是仓库
var depository = data["depository"];
$("#placeId").val("0");
$("#openSonByDepository").val(depository.dname);
$("#depositoryId").val(depository.id);
depositoryId = depository.id;
placeId = "0";
}
updateTableShow();
}
})
}
})
};
table.on('edit(currentTableFilterForLocation)', function (obj) {
obj.update({stockTakingQuantity: obj.value});//修改当前行数据
calculateForLocation(obj);
});
// 用于监听下拉菜单
table.on('tool(currentTableFilterForLocation)', function (obj) { //注:tool 是工具条事件名,test 是 table 原始容器的属性 lay-filter="对应的值"
var data = obj.data //获得当前行数据
, layEvent = obj.event; //获得 lay-event 对应的值
if (layEvent === 'more') {
let splitInfoList = obj.data.splitInfoList;
if (splitInfoList.length > 0) {
let dropDownDataList = [];
for (var i = 0; i < splitInfoList.length; i++) {
let dropDownData = {};
dropDownData.title = splitInfoList[i].newUnit;
dropDownData.id = obj.data.id;
dropDownDataList.push(dropDownData);
}
dropdown.render({
elem: this //触发事件的 DOM 对象
, show: true //外部事件触发即显示
, data: dropDownDataList
, click: function (unit) {
this.elem[0].childNodes[0].data = unit.title;
obj.tr[0].childNodes[6].childNodes[0].innerText = obj.data.splitInventory[unit.title];
}
, align: 'right' //右对齐弹出(v2.6.8 新增)
, style: 'box-shadow: 1px 1px 10px rgb(0 0 0 / 12%);' //设置额外样式
})
}
//下拉菜单
}
});
// 用于计算盘点结果
calculateForLocation = function (obj) {
let oldInventory = Number(obj.tr[0].childNodes[6].childNodes[0].innerText);
let nowInventory = Number(obj.value);
let number = 0;
let takingResult = '';
let takingResultString = '';
let req = {};
if ((oldInventory) > (nowInventory)) {
number = oldInventory - nowInventory;
takingResult = "Inventory_down";
takingResultString = "盘亏";
} else if ((oldInventory) < (nowInventory)) {
number = nowInventory - oldInventory;
takingResult = "Inventory_up";
takingResultString = "盘盈";
} else {
takingResult = "Inventory_normal";
takingResultString = "正常";
}
obj.tr[0].childNodes[8].childNodes[0].innerText = takingResultString;
obj.tr[0].childNodes[9].childNodes[0].innerText = number;
obj.update({takingResult: takingResult});
obj.update({takingInventory: number});
req.number = number + "";
req.takingResult = takingResult;
req.takingResultString = takingResultString;
req.id = obj.data.id + "";
req.unit = obj.tr[0].childNodes[5].childNodes[0].innerText;
req.oldInventory = oldInventory + "";
$.ajax({
url: "/stockTaking/temporaryStorageForTakingResult",
dataType: "json",
data: JSON.stringify(req),
type: "POST",
contentType: "application/json;charset=utf-8"
});
};
// 用于打开仓库树形菜单
$('#openSonByDepository').on('click', function () {
layer.open({
type: 2,
title: '弹窗内容',
skin: 'layui-layer-rim',
maxmin: true,
shadeClose: true, //点击遮罩关闭层
area: ['70%', '70%'],
move: '.layui-layer-title',
fixed: false,
content: '/selectDepository?type=2',
success: function (layero, index) {
var children = layero.children();
var content = $(children[1]);
var iframeChildren = $(content.children());
content.css('height', '100%');
iframeChildren.css('height', '100%');
},
end: function () {
var nowDepositoryId = $("#depositoryId").val();
var nowPlaceId = $("#placeId").val();
if (nowDepositoryId !== depositoryId || nowPlaceId !== placeId) {
// 如果重新选择盘点位置
var nowDepositoryName = $("#openSonByDepository").val();
$("#form1")[0].reset();
$("#depositoryId").val(nowDepositoryId);
$("#placeId").val(nowPlaceId);
$("#openSonByDepository").val(nowDepositoryName);
form.render();
}
if (nowDepositoryId !== null && nowDepositoryId !== "") {
depositoryId = nowDepositoryId;
placeId = nowPlaceId;
updateTableShowForLocation();
}
}
});
});
updateTableShowForLocation = function () {
let req = {};
req.depositoryId = depositoryId;
req.placeId = placeId;
table.reload('currentTableForLocation', {
url: '/material/findInventoryForStockTaking',
page: {
curr: 1
},
where: req
}, 'data');
};
});

386
src/main/resources/static/js/stockTaking/stockTakingForMaterial.js

@ -0,0 +1,386 @@
// 用于扫描条形码或二维码
function scanCode(obj) {
}
// 用于加载物料选择菜单
function selectMaterial() {
}
// 用于通过物料名称获取物料
function selectMaterialByName() {
}
// 用于编码查询
function selectCode(obj) {
}
// 用于扫描物料码
function scanCodeForMaterial() {
}
// 用于计算盘点结果
function calculateForMaterial(obj) {
}
function updateTableShowForMaterial() {
}
layui.use(['form', 'step', 'flow', 'table', 'inputTag'], function () {
var $ = layui.$,
form = layui.form,
table = layui.table,
inputTag = layui.inputTag,
dropdown = layui.dropdown, //下拉菜单
step = layui.step;
departmentManagerIdForMaterial = $("#departmentManagerIdForMaterial").val();
let tagData = [];
let tempData = $("#departmentManagerForMaterial").val().split(",");
$.each(tempData, function (index, item) {
if (item !== "") {
tagData.push(item)
}
});
$("#departmentManagerForMaterial").val("");
let tagLabel = inputTag.render({
elem: '#departmentManagerForMaterial',
data: tagData,//初始值
removeKeyNum: 8,//删除按键编号 默认,BackSpace 键
createKeyNum: 13,//创建按键编号 默认,Enter 键
onChange: function (data, value, type, index) {
if (type === "remove") {
let split = departmentManagerIdForMaterial.split(",");
split.splice(index, 1);
departmentManagerIdForMaterial = split.toString();
$("#departmentManagerIdForMaterial").val(departmentManagerIdForMaterial);
}
}
});
updateTableShowForMaterial = function () {
let req = {};
req.mid = $("#mid").val();
table.reload('currentTableForMaterial', {
url: '/material/findMaterialByConditionForStockTaking',
page: {
curr: 1
},
where: req
}, 'data');
};
table.render({
elem: "#currentTableForMaterial",
url: '/material/findMaterialByConditionForStockTaking',
parseData: function (res) { //res 即为原始返回的数据
return {
"status": res.status, //解析接口状态
"message": res.statusInfo.message, //解析提示文本
"count": res.count, //解析数据长度
"data": res.data //解析数据列表
};
},
request: {
pageName: 'page', //页码的参数名称,默认:page
limitName: 'size' //每页数据量的参数名,默认:limit
},
response: {
statusName: 'status' //规定数据状态的字段名称,默认:code
, statusCode: 200 //规定成功的状态码,默认:0
, msgName: 'message' //规定状态信息的字段名称,默认:msg
, countName: 'count' //规定数据总数的字段名称,默认:count
, dataName: 'data' //规定数据列表的字段名称,默认:data
},
where: {
depositoryId: "-1"
},
height: 'full-255',//固定高度-即固定表头固定第一行首行
cols: [
[
{field: 'mcode', width: 100, title: '存货编码', fixed: 'left'},
{field: 'mname', width: 150, title: '物料名称'},
{field: 'version', width: 150, title: '规格型号',},
{field: 'tname', width: 120, title: '物料种类'},
{field: 'dname', width: 150, title: '所处仓库'},
{field: 'pcode', width: 150, title: '所处库位',},
{title: '计量单位', width: 200, templet: '#changeUnit', align: "center"},
{field: 'inventory', width: 100, title: '库存数'},
{field: 'stockTakingQuantity', width: 100, title: '盘点数', edit: 'quantity'},
{field: 'takingResultString', width: 100, title: '盘点结果'},
{field: 'takingInventory', width: 100, title: '盈亏数量'},
]
],
limits: [10, 15, 20, 25, 50, 100],
limit: 10,
page: true,
skin: 'line',
done: function (res, curr, count) {
$.each(res['data'], function (i, j) {
let takingUnit = j["takingUnit"];
if (takingUnit !== null) {
let parentItem = $("[lay-id='currentTableForMaterial'] tr:eq(" + (i + 1) + ")");
let unitHandleItem = parentItem.children()[6];
let quantityHandleItem = parentItem.children()[7];
unitHandleItem.childNodes[0].childNodes[1].childNodes[0].data = takingUnit;
quantityHandleItem.childNodes[0].innerText = j["splitInventory"][takingUnit];
}
});
}
});
// 用于打开负责人树形菜单
$("#selectdepartmentManagerForMaterial").on('click', function () {
layer.open({
type: 2,
title: '弹窗内容',
skin: 'layui-layer-rim',
maxmin: true,
shadeClose: true, //点击遮罩关闭层
area: ['70%', '70%'],
move: '.layui-layer-title',
fixed: false,
content: '/selectManager?type=Material',
end: function () {
departmentManagerIdForMaterial = $("#departmentManagerIdForMaterial").val();
tagLabel.createItem();
},
success: function (layero, index) {
var children = layero.children();
var content = $(children[1]);
var iframeChildren = $(content.children());
content.css('height', '100%');
iframeChildren.css('height', '100%');
}
});
});
table.on('edit(currentTableFilterForMaterial)', function (obj) {
obj.update({stockTakingQuantity: obj.value});//修改当前行数据
calculateForMaterial(obj);
});
// 用于监听下拉菜单
table.on('tool(currentTableFilterForMaterial)', function (obj) { //注:tool 是工具条事件名,test 是 table 原始容器的属性 lay-filter="对应的值"
var data = obj.data //获得当前行数据
, layEvent = obj.event; //获得 lay-event 对应的值
if (layEvent === 'more') {
let splitInfoList = obj.data.splitInfoList;
if (splitInfoList.length > 0) {
let dropDownDataList = [];
for (var i = 0; i < splitInfoList.length; i++) {
let dropDownData = {};
dropDownData.title = splitInfoList[i].newUnit;
dropDownData.id = obj.data.id;
dropDownDataList.push(dropDownData);
}
dropdown.render({
elem: this //触发事件的 DOM 对象
, show: true //外部事件触发即显示
, data: dropDownDataList
, click: function (unit) {
this.elem[0].childNodes[0].data = unit.title;
obj.tr[0].childNodes[7].childNodes[0].innerText = obj.data.splitInventory[unit.title];
}
, align: 'right' //右对齐弹出(v2.6.8 新增)
, style: 'box-shadow: 1px 1px 10px rgb(0 0 0 / 12%);' //设置额外样式
})
}
//下拉菜单
}
});
// 用于计算盘点结果
calculateForMaterial = function (obj) {
let oldInventory = Number(obj.tr[0].childNodes[7].childNodes[0].innerText);
let nowInventory = Number(obj.value);
let number = 0;
let takingResult = '';
let takingResultString = '';
let req = {};
if ((oldInventory) > (nowInventory)) {
number = oldInventory - nowInventory;
takingResult = "Inventory_down";
takingResultString = "盘亏";
} else if ((oldInventory) < (nowInventory)) {
number = nowInventory - oldInventory;
takingResult = "Inventory_up";
takingResultString = "盘盈";
} else {
takingResult = "Inventory_normal";
takingResultString = "正常";
}
obj.tr[0].childNodes[9].childNodes[0].innerText = takingResultString;
obj.tr[0].childNodes[10].childNodes[0].innerText = number;
obj.update({takingResult: takingResult});
obj.update({takingInventory: number});
req.number = number + "";
req.takingResult = takingResult;
req.takingResultString = takingResultString;
req.id = obj.data.id + "";
req.unit = obj.tr[0].childNodes[6].childNodes[0].innerText;
req.oldInventory = oldInventory + "";
$.ajax({
url: "/stockTaking/temporaryStorageForTakingResult",
dataType: "json",
data: JSON.stringify(req),
type: "POST",
contentType: "application/json;charset=utf-8"
});
};
// 用于通过物料名称获取物料
selectMaterialByName = function (obj) {
// 输入code
var data = obj.value;
var req = {};
data = data.split(",")[0];
if (data !== "") {
req.mname = data;
$.ajax({
url: "/material/findMaterialByCondition",
type: "post",
dataType: 'json',
data: JSON.stringify(req),
contentType: "application/json;charset=utf-8",
success: function (d) {
if (d.count > 1) {
layer.msg("请点击右侧搜索确定物品");
$("#openSonByMaterial").val("");
$("#mid").val("");
$("#code").val("");
return false;
} else if (d.count === 0) {
layer.msg("没有该物品,请确认输入是否正确");
$("#openSonByMaterial").val("");
$("#mid").val("");
$("#code").val("");
return false;
} else {
var material = d.data[0];
$("#openSonByMaterial").val(material.mname);
$("#mid").val(material.mid);
$("#code").val(material.code);
form.render();
updateTableShowForMaterial();
}
}
});
}
};
// 用于实现通过编码查询物料
selectCode = function (obj) {
// 输入code
var code = obj.value;
var req = {};
req.code = code;
req.type = "out";
if (code !== "") {
$.ajax({
url: "/material/findMatrialByCode",
type: "get",
dataType: 'json',
data: (req),
contentType: "application/json;charset=utf-8",
success: function (d) {
var d = d.data;
if (d == null) {
layer.msg("仓库中暂无该物料", {
icon: 0,
time: 1000
}, function () {
$("#openSonByMaterial").val("");
$("#mid").val("");
$("#code").val("");
updateTableShowForMaterial();
});
} else {
$("#openSonByMaterial").val(d.mname);
$("#mid").val(d.mid);
form.render();
updateTableShowForMaterial();
}
}
});
}
};
scanCodeForMaterial = function () {
let wxScan = parent;
if (wxScan.wx === undefined) {
wxScan = wxScan.parent.wx;
} else {
wxScan = wxScan.wx;
}
wxScan.scanQRCode({
desc: 'scanQRCode desc',
needResult: 1, // 默认为0,扫描结果由企业微信处理,1则直接返回扫描结果,
scanType: ["qrCode", "barCode"], // 可以指定扫二维码还是条形码(一维码),默认二者都有
success: function (res) {
// 回调
var result = res.resultStr;//当needResult为1时返回处理结果
var req = {};
req.qrCode = result;
req.codeFlag = 2;
$.ajax({
url: "/material/qywxApplicationOutScanQrCode",
type: "post",
dataType: 'json',
data: JSON.stringify(req),
contentType: "application/json;charset=utf-8",
success: function (d) {
var data = d.data;
if (data === null) {
layer.msg("对于编码:" + result + ",并未发现仓库中存在对应的物料", {
icon: 0,
time: 1000 //0.5秒关闭(如果不配置,默认是3秒)
}, function () {
$("#openSonByMaterial").val("");
$("#mid").val("");
$("#code").val("");
updateTableShowForMaterial();
})
} else {
$("#openSonByMaterial").val(data.mname);
$("#mid").val(data.id);
$("#code").val(data.code);
updateTableShowForMaterial();
}
}
})
}
})
};
});

897
src/main/resources/templates/pages/stockTaking/stockTaking.html

@ -34,7 +34,12 @@
.layui-form-select { .layui-form-select {
width: 100%; width: 100%;
border-style: none; height: 38px;
line-height: 1.3;
border-width: 1px;
border-style: solid;
background-color: #fff;
} }
.lay-step { .lay-step {
@ -55,7 +60,6 @@
</ul> </ul>
<div class="layui-tab-content"> <div class="layui-tab-content">
<div class="layui-tab-item layui-show"> <div class="layui-tab-item layui-show">
<div class="layui-carousel" id="stepForm" lay-filter="stepForm" style="margin: 0 auto; "> <div class="layui-carousel" id="stepForm" lay-filter="stepForm" style="margin: 0 auto; ">
<div carousel-item style="overflow: inherit"> <div carousel-item style="overflow: inherit">
<div> <div>
@ -214,25 +218,165 @@
</div> </div>
</div> </div>
</form> </form>
<table class="layui-hide" lay-filter="currentTableFilterForLocation" <div class="layui-tab">
id="currentTableForLocation" <ul class="layui-tab-title" style="text-align: center">
style="margin-top: 123px"></table> <li class="layui-this">表格</li>
<!-- 提交按钮--> <li class="layui-this">卡片</li>
<div class="layui-form-item" style="margin-top: 10px;"> </ul>
<div class="layui-input-block"> <div class="layui-tab-content">
<button type="button" class="layui-btn layui-btn-normal layui-btn-lg" <div class="layui-tab-item layui-show">
submitType="Location" <table class="layui-hide" lay-filter="currentTableFilterForLocation"
lay-submit id="currentTableForLocation"
lay-filter="formStep"> style="margin-top: 123px"></table>
&emsp;提交&emsp; <!-- 提交按钮-->
</button> <div class="layui-form-item" style="margin-top: 10px;">
<div class="layui-input-block">
<button type="button"
class="layui-btn layui-btn-normal layui-btn-lg"
submitType="Location"
lay-submit
lay-filter="formStep">
&emsp;提交&emsp;
</button>
</div>
</div>
</div>
<div class="layui-tab-item">
<fieldset class="table-search-fieldset">
<legend>盘点明细</legend>
<div class="layui-card-body" id="InventoryDetails" style="padding-right: 0px">
<hr>
<i class="layui-icon layui-icon-subtraction" style="display: inline"
onclick="deleteItem(this)"></i>
<div class="layui-form-item">
<label class="layui-form-label" style="height: 40px;">物料名称:</label>
<div class="layui-input-block" style="margin: 0px;">
<div class="inputdiv">
<input type="text" placeholder="请选择物料"
class="layui-input fairy-tag-input"
style="border-style: none"
id="openSonByMaterialForLocation"
onblur="selectMaterialByNameForLocation(this)"
lay-verify="required"/>
<i class="layui-icon layui-icon-search" style="display: inline"
id="selectMaterialForLocation" onclick="selectMaterialForLocation(this)"></i>
</div>
<input type="text" name="mid" class="layui-input" id="midForLocation"
style="display: none" lay-verify="required"/>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label" style="height: 40px;">物料编码:</label>
<div class="layui-input-block" style="margin: 0px;">
<div class="inputdiv">
<input id="codeForLocation" name="code" type="text" placeholder="请填写入物料编码"
value=""
onblur="selectCodeForLocation(this)"
class="layui-input" lay-verify="required"
style="border-style: none">
<img src="/static/images/search.ico" height="16" width="16"
style="margin-top: 10px"
onclick="scanMaterialCodeForTaking(this)">
</div>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">物料类型:</label>
<div class="layui-input-block">
<input type="text" placeholder="请选择物料类型" class="layui-input"
id="openSonByMateralType" readonly
lay-verify="required"/>
<input type="text" id="materialTypeId" name="typeId"
placeholder="请选择物料类型" class="layui-input"
style="display: none" lay-verify="required"/>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">材质:</label>
<div class="layui-input-block">
<input type="text" placeholder="请填写材质名称" class="layui-input" readonly
name="texture"/>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">规格型号:</label>
<div class="layui-input-block">
<input type="text" placeholder="请填写规格型号" class="layui-input" readonly
name="version"/>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">计量单位:</label>
<div class="layui-input-block">
<select id="unit" onchange="changeSelectValueForUnit(this)" class="layui-form-select" name="unit"></select>
</div>
</div>
<div class="layui-form-item" style="display: none" id="producedDateItem">
<label class="layui-form-label">生产日期:</label>
<div class="layui-input-block">
<!-- <input type="text" name="producedDate" id="producedDate" placeholder="请填写生产日期" onclick="selectDate(this)"-->
<!-- autocomplete="off" class="layui-input">-->
<select name="producedDate" id="producedDate" onchange="changeSelectValueForProducedDate(this)" class="layui-form-select">
</select>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">库存数量:</label>
<div class="layui-input-block">
<input type="number" class="layui-input" readonly id="oldInventory"
name="oldInventory" lay-verify="required"/>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">盘点数量:</label>
<div class="layui-input-block">
<input type="number" class="layui-input" onblur="calculate(this)"
name="newInventory" lay-verify="required"/>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">盘点结果:</label>
<div class="layui-input-block">
<select name="takingResult" id="result" class="layui-form-select">
</select>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">盈亏数量:</label>
<div class="layui-input-block">
<input type="number" class="layui-input" readonly
id="Inventory_number"
name="inventory" lay-verify="required"/>
</div>
</div>
<i class="layui-icon layui-icon-addition" style="display: inline"
onclick="addItem(this)"></i>
</div>
<div class="layui-form-item" style="margin-top: 10px;">
<div class="layui-input-block">
<button type="button" class="layui-btn layui-btn-normal layui-btn-lg"
lay-submit
lay-filter="formStep3">
&emsp;提交&emsp;
</button>
</div>
</div>
</fieldset>
</div>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
<!-- 下一步--> <!-- 下一步-->
<div> <div>
<form class="layui-form" style="margin: 0 auto;max-width: 460px;padding-top: 40px;"> <form class="layui-form"
style="margin: 0 auto;max-width: 460px;padding-top: 40px;">
<div style="text-align: center;margin-top: 90px;"> <div style="text-align: center;margin-top: 90px;">
<i class="layui-icon layui-circle" <i class="layui-icon layui-circle"
style="color: white;font-size:30px;font-weight:bold;background: #52C41A;padding: 20px;line-height: 80px;">&#xe605;</i> style="color: white;font-size:30px;font-weight:bold;background: #52C41A;padding: 20px;line-height: 80px;">&#xe605;</i>
@ -261,66 +405,17 @@
</script> </script>
<script src="/static/lib/layui-v2.6.3/layui.js" charset="utf-8"></script> <script src="/static/lib/layui-v2.6.3/layui.js" charset="utf-8"></script>
<script src="/static/js/lay-config.js?v=1.0.4" charset="utf-8"></script> <script src="/static/js/lay-config.js?v=1.0.4" charset="utf-8"></script>
<script src="/static/js/stockTaking/stockTakingForMaterial.js" charset="utf-8"></script>
<script src="/static/js/stockTaking/stockTakingForLocationTable.js" charset="utf-8"></script>
<script src="/static/js/stockTaking/stockTakingForLocationCard.js" charset="utf-8"></script>
<script> <script>
// 用于添加标签
function addItem(obj) {
}
// 用于删除标签
function deleteItem(obj) {
}
// 用于扫描条形码或二维码
function scanCode(obj) {
}
// 用于加载物料选择菜单
function selectMaterial() {
}
// 用于通过物料名称获取物料
function selectMaterialByName() {
}
// 用于编码查询
function selectCode(obj) {
}
// 用于扫描物料码
function scanCodeForMaterial() {
}
// 用于计算盘点结果
function calculateForMaterial(obj) {
}
// 用于计算盘点结果
function calculateForLocation(obj) {
}
function updateTableShowForMaterial() {
}
function updateTableShowForLocation() {
}
// 用于存储当前选择的盘点位置 // 用于存储当前选择的盘点位置
let depositoryId; let depositoryId;
let placeId; let placeId;
// 用于存储当前选择的负责人 // 用于存储当前选择的负责人
let departmentManagerIdForMaterial; let departmentManagerIdForMaterial;
// 用于存储当前选择的负责人
let departmentManagerIdForLocation; let departmentManagerIdForLocation;
layui.use(['form', 'step', 'flow', 'table', 'inputTag'], function () { layui.use(['form', 'step', 'flow', 'table', 'inputTag'], function () {
var $ = layui.$, var $ = layui.$,
form = layui.form, form = layui.form,
@ -328,8 +423,6 @@
inputTag = layui.inputTag, inputTag = layui.inputTag,
dropdown = layui.dropdown, //下拉菜单 dropdown = layui.dropdown, //下拉菜单
step = layui.step; step = layui.step;
departmentManagerIdForMaterial = $("#departmentManagerIdForMaterial").val();
departmentManagerIdForLocation = $("#departmentManagerIdForLocation").val();
// 用于分步表单加载 // 用于分步表单加载
step.render({ step.render({
@ -357,173 +450,6 @@
}] }]
}); });
let tagData = [];
let tempData = $("#departmentManagerForMaterial").val().split(",");
$.each(tempData, function (index, item) {
if (item !== "") {
tagData.push(item)
}
});
$("#departmentManagerForMaterial").val("");
$("#departmentManagerForLocation").val("");
let tagLabel = inputTag.render({
elem: '#departmentManagerForMaterial',
data: tagData,//初始值
removeKeyNum: 8,//删除按键编号 默认,BackSpace 键
createKeyNum: 13,//创建按键编号 默认,Enter 键
onChange: function (data, value, type, index) {
if (type === "remove") {
let split = departmentManagerIdForMaterial.split(",");
split.splice(index, 1);
departmentManagerIdForMaterial = split.toString();
$("#departmentManagerIdForMaterial").val(departmentManagerIdForMaterial);
}
}
});
let tagLabel1 = inputTag.render({
elem: '#departmentManagerForLocation',
data: tagData,//初始值
removeKeyNum: 8,//删除按键编号 默认,BackSpace 键
createKeyNum: 13,//创建按键编号 默认,Enter 键
onChange: function (data, value, type, index) {
if (type === "remove") {
let split = departmentManagerIdForLocation.split(",");
split.splice(index, 1);
departmentManagerIdForLocation = split.toString();
$("#departmentManagerIdForLocation").val(departmentManagerIdForLocation);
}
}
});
updateTableShowForMaterial = function () {
let req = {};
req.mid = $("#mid").val();
table.reload('currentTableForMaterial', {
url: '/material/findMaterialByConditionForStockTaking',
page: {
curr: 1
},
where: req
}, 'data');
};
table.render({
elem: "#currentTableForMaterial",
url: '/material/findMaterialByConditionForStockTaking',
parseData: function (res) { //res 即为原始返回的数据
return {
"status": res.status, //解析接口状态
"message": res.statusInfo.message, //解析提示文本
"count": res.count, //解析数据长度
"data": res.data //解析数据列表
};
},
request: {
pageName: 'page', //页码的参数名称,默认:page
limitName: 'size' //每页数据量的参数名,默认:limit
},
response: {
statusName: 'status' //规定数据状态的字段名称,默认:code
, statusCode: 200 //规定成功的状态码,默认:0
, msgName: 'message' //规定状态信息的字段名称,默认:msg
, countName: 'count' //规定数据总数的字段名称,默认:count
, dataName: 'data' //规定数据列表的字段名称,默认:data
},
where: {
depositoryId: "-1"
},
height: 'full-255',//固定高度-即固定表头固定第一行首行
cols: [
[
{field: 'mcode', width: 100, title: '存货编码', fixed: 'left'},
{field: 'mname', width: 150, title: '物料名称'},
{field: 'version', width: 150, title: '规格型号',},
{field: 'tname', width: 120, title: '物料种类'},
{field: 'dname', width: 150, title: '所处仓库'},
{field: 'pcode', width: 150, title: '所处库位',},
{title: '计量单位', width: 200, templet: '#changeUnit', align: "center"},
{field: 'inventory', width: 100, title: '库存数'},
{field: 'stockTakingQuantity', width: 100, title: '盘点数', edit: 'quantity'},
{field: 'takingResultString', width: 100, title: '盘点结果'},
{field: 'takingInventory', width: 100, title: '盈亏数量'},
]
],
limits: [10, 15, 20, 25, 50, 100],
limit: 10,
page: true,
skin: 'line',
done: function (res, curr, count) {
$.each(res['data'], function (i, j) {
let takingUnit = j["takingUnit"];
if (takingUnit !== null) {
let parentItem = $("[lay-id='currentTableForMaterial'] tr:eq(" + (i + 1) + ")");
let unitHandleItem = parentItem.children()[6];
let quantityHandleItem = parentItem.children()[7];
unitHandleItem.childNodes[0].childNodes[1].childNodes[0].data = takingUnit;
quantityHandleItem.childNodes[0].innerText = j["splitInventory"][takingUnit];
}
});
}
});
// 用于打开负责人树形菜单
$("#selectdepartmentManagerForMaterial").on('click', function () {
layer.open({
type: 2,
title: '弹窗内容',
skin: 'layui-layer-rim',
maxmin: true,
shadeClose: true, //点击遮罩关闭层
area: ['70%', '70%'],
move: '.layui-layer-title',
fixed: false,
content: '/selectManager?type=Material',
end: function () {
departmentManagerIdForMaterial = $("#departmentManagerIdForMaterial").val();
tagLabel.createItem();
},
success: function (layero, index) {
var children = layero.children();
var content = $(children[1]);
var iframeChildren = $(content.children());
content.css('height', '100%');
iframeChildren.css('height', '100%');
}
});
});
// 用于打开负责人树形菜单
$("#selectdepartmentManagerForLocation").on('click', function () {
layer.open({
type: 2,
title: '弹窗内容',
skin: 'layui-layer-rim',
maxmin: true,
shadeClose: true, //点击遮罩关闭层
area: ['70%', '70%'],
move: '.layui-layer-title',
fixed: false,
content: '/selectManager?type=Location',
end: function () {
departmentManagerIdForLocation = $("#departmentManagerIdForLocation").val();
tagLabel1.createItem();
},
success: function (layero, index) {
var children = layero.children();
var content = $(children[1]);
var iframeChildren = $(content.children());
content.css('height', '100%');
iframeChildren.css('height', '100%');
}
});
});
// 用于提交盘点情况 // 用于提交盘点情况
@ -566,6 +492,37 @@
return false; return false;
}); });
// 用于提交盘点情况
form.on('submit(formStep3)', function (data) {
data = data.field;
data.params = params;
data.needToUpdate = needToUpdate;
data.barCodeListByNoMaterial = barCodeList;
data.departmentManagerId = departmentManagerIdForLocation;
console.log(data)
/* $.ajax({
url: "/stockTaking/addStockTakingRecord",
type: 'post',
dataType: 'json',
contentType: "application/json;charset=utf-8",
data: JSON.stringify(data),
beforeSend: function () {
this.layerIndex = layer.load(0, {shade: [0.5, '#393D49']});
},
success: function (data) {
layer.msg("申请提交成功", {
icon: 6,//成功的表情
time: 500 //1秒关闭(如果不配置,默认是3秒)
}, function () {
step.next('#stepForm');
});
},
complete: function () {
layer.close(this.layerIndex);
}
});*/
});
$('.pre').click(function () { $('.pre').click(function () {
step.pre('#stepForm'); step.pre('#stepForm');
}); });
@ -573,471 +530,7 @@
$('.next').click(function () { $('.next').click(function () {
step.next('#stepForm'); step.next('#stepForm');
}); });
})
table.on('edit(currentTableFilterForMaterial)', function (obj) {
obj.update({stockTakingQuantity: obj.value});//修改当前行数据
calculateForMaterial(obj);
});
// 用于监听下拉菜单
table.on('tool(currentTableFilterForMaterial)', function (obj) { //注:tool 是工具条事件名,test 是 table 原始容器的属性 lay-filter="对应的值"
var data = obj.data //获得当前行数据
, layEvent = obj.event; //获得 lay-event 对应的值
if (layEvent === 'more') {
let splitInfoList = obj.data.splitInfoList;
if (splitInfoList.length > 0) {
let dropDownDataList = [];
for (var i = 0; i < splitInfoList.length; i++) {
let dropDownData = {};
dropDownData.title = splitInfoList[i].newUnit;
dropDownData.id = obj.data.id;
dropDownDataList.push(dropDownData);
}
dropdown.render({
elem: this //触发事件的 DOM 对象
, show: true //外部事件触发即显示
, data: dropDownDataList
, click: function (unit) {
this.elem[0].childNodes[0].data = unit.title;
obj.tr[0].childNodes[7].childNodes[0].innerText = obj.data.splitInventory[unit.title];
}
, align: 'right' //右对齐弹出(v2.6.8 新增)
, style: 'box-shadow: 1px 1px 10px rgb(0 0 0 / 12%);' //设置额外样式
})
}
//下拉菜单
}
});
// 用于计算盘点结果
calculateForMaterial = function (obj) {
let oldInventory = Number(obj.tr[0].childNodes[7].childNodes[0].innerText);
let nowInventory = Number(obj.value);
let number = 0;
let takingResult = '';
let takingResultString = '';
let req = {};
if ((oldInventory) > (nowInventory)) {
number = oldInventory - nowInventory;
takingResult = "Inventory_down";
takingResultString = "盘亏";
} else if ((oldInventory) < (nowInventory)) {
number = nowInventory - oldInventory;
takingResult = "Inventory_up";
takingResultString = "盘盈";
} else {
takingResult = "Inventory_normal";
takingResultString = "正常";
}
obj.tr[0].childNodes[9].childNodes[0].innerText = takingResultString;
obj.tr[0].childNodes[10].childNodes[0].innerText = number;
obj.update({takingResult: takingResult});
obj.update({takingInventory: number});
req.number = number + "";
req.takingResult = takingResult;
req.takingResultString = takingResultString;
req.id = obj.data.id + "";
req.unit = obj.tr[0].childNodes[6].childNodes[0].innerText;
req.oldInventory = oldInventory + "";
$.ajax({
url: "/stockTaking/temporaryStorageForTakingResult",
dataType: "json",
data: JSON.stringify(req),
type: "POST",
contentType: "application/json;charset=utf-8"
});
};
// 用于通过物料名称获取物料
selectMaterialByName = function (obj) {
// 输入code
var data = obj.value;
var req = {};
data = data.split(",")[0];
if (data !== "") {
req.mname = data;
$.ajax({
url: "/material/findMaterialByCondition",
type: "post",
dataType: 'json',
data: JSON.stringify(req),
contentType: "application/json;charset=utf-8",
success: function (d) {
if (d.count > 1) {
layer.msg("请点击右侧搜索确定物品");
$("#openSonByMaterial").val("");
$("#mid").val("");
$("#code").val("");
return false;
} else if (d.count === 0) {
layer.msg("没有该物品,请确认输入是否正确");
$("#openSonByMaterial").val("");
$("#mid").val("");
$("#code").val("");
return false;
} else {
var material = d.data[0];
$("#openSonByMaterial").val(material.mname);
$("#mid").val(material.mid);
$("#code").val(material.code);
form.render();
updateTableShowForMaterial();
}
}
});
}
};
// 用于实现通过编码查询物料
selectCode = function (obj) {
// 输入code
var code = obj.value;
var req = {};
req.code = code;
req.type = "out";
if (code !== "") {
$.ajax({
url: "/material/findMatrialByCode",
type: "get",
dataType: 'json',
data: (req),
contentType: "application/json;charset=utf-8",
success: function (d) {
var d = d.data;
if (d == null) {
layer.msg("仓库中暂无该物料", {
icon: 0,
time: 1000
}, function () {
$("#openSonByMaterial").val("");
$("#mid").val("");
$("#code").val("");
updateTableShowForMaterial();
});
} else {
$("#openSonByMaterial").val(d.mname);
$("#mid").val(d.mid);
form.render();
updateTableShowForMaterial();
}
}
});
}
};
scanCodeForMaterial = function (obj) {
let wxScan = parent;
if(wxScan.wx === undefined){
wxScan = wxScan.parent.wx;
}
else{
wxScan = wxScan.wx;
}
wxScan.scanQRCode({
desc: 'scanQRCode desc',
needResult: 1, // 默认为0,扫描结果由企业微信处理,1则直接返回扫描结果,
scanType: ["qrCode","barCode"], // 可以指定扫二维码还是条形码(一维码),默认二者都有
success: function (res) {
// 回调
var result = res.resultStr;//当needResult为1时返回处理结果
var req = {};
req.qrCode = result;
req.codeFlag = 2;
$.ajax({
url: "/material/qywxApplicationOutScanQrCode",
type: "post",
dataType: 'json',
data: JSON.stringify(req),
contentType: "application/json;charset=utf-8",
success: function (d) {
var data = d.data;
if (data === null) {
layer.msg("对于编码:" + result + ",并未发现仓库中存在对应的物料", {
icon: 0,
time: 1000 //0.5秒关闭(如果不配置,默认是3秒)
}, function () {
$("#openSonByMaterial").val("");
$("#mid").val("");
$("#code").val("");
updateTableShowForMaterial();
})
} else {
$("#openSonByMaterial").val( data.mname);
$("#mid").val( data.id);
$("#code").val( data.code);
updateTableShowForMaterial();
}
}
})
}
})
};
// 通过位置盘点物料页面
table.render({
elem: "#currentTableForLocation",
url: '/material/findInventoryForStockTaking',
parseData: function (res) { //res 即为原始返回的数据
return {
"status": res.status, //解析接口状态
"message": res.statusInfo.message, //解析提示文本
"count": res.count, //解析数据长度
"data": res.data //解析数据列表
};
},
request: {
pageName: 'page', //页码的参数名称,默认:page
limitName: 'size' //每页数据量的参数名,默认:limit
},
response: {
statusName: 'status' //规定数据状态的字段名称,默认:code
, statusCode: 200 //规定成功的状态码,默认:0
, msgName: 'message' //规定状态信息的字段名称,默认:msg
, countName: 'count' //规定数据总数的字段名称,默认:count
, dataName: 'data' //规定数据列表的字段名称,默认:data
},
where: {
depositoryId: "-1"
},
height: 'full-255',//固定高度-即固定表头固定第一行首行
cols: [
[
{field: 'mcode', width: 150, title: '存货编码', fixed: 'left'},
{field: 'mname', width: 150, title: '物料名称'},
{field: 'typeName', width: 100, title: '物料种类'},
{field: 'version', width: 150, title: '规格型号',},
{field: 'pcode', width: 150, title: '所处库位',},
{title: '计量单位', width: 200, templet: '#changeUnit', align: "center"},
{field: 'inventory', width: 100, title: '库存数'},
{field: 'stockTakingQuantity', width: 100, title: '盘点数', edit: 'quantity'},
{field: 'takingResultString', width: 100, title: '盘点结果'},
{field: 'takingInventory', width: 100, title: '盈亏数量'},
]
],
limits: [10, 15, 20, 25, 50, 100],
limit: 10,
page: true,
skin: 'line',
done: function (res, curr, count) {
$.each(res['data'], function (i, j) {
let takingUnit = j["takingUnit"];
if (takingUnit !== null) {
let parentItem = $("[lay-id='currentTableForLocation'] tr:eq(" + (i + 1) + ")");
let unitHandleItem = parentItem.children()[5];
let quantityHandleItem = parentItem.children()[6];
unitHandleItem.childNodes[0].childNodes[1].childNodes[0].data = takingUnit;
quantityHandleItem.childNodes[0].innerText = j["splitInventory"][takingUnit];
}
});
}
});
// 扫码盘点位置
scanCode = function () {
parent.wx.scanQRCode({
desc: 'scanQRCode desc',
needResult: 1, // 默认为0,扫描结果由企业微信处理,1则直接返回扫描结果,
scanType: ["qrCode", "barCode"], // 可以指定扫二维码还是条形码(一维码),默认二者都有
success: function (res) {
// 回调
var result = res.resultStr;//当needResult为1时返回处理结果
var req = {};
req.qrCode = result;
req.codeFlag = 2;
$.ajax({
url: "/place/qywxApplicationInScanQrCode",
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.msg("并未查询到对应位置,请重新扫描", {
icon: 0,
time: 1000
}, function () {
depositoryId = -1;
placeId = -1;
});
} else if (flag === 1) {
// 如果获取到的是库位
var place = data["place"];
$("#placeId").val(place.id);
$("#openSonByDepository").val(place.depositoryName);
$("#depositoryId").val(place.did);
depositoryId = place.did;
placeId = place.id;
} else if (flag === 2) {
// 如果获取到的是仓库
var depository = data["depository"];
$("#placeId").val("0");
$("#openSonByDepository").val(depository.dname);
$("#depositoryId").val(depository.id);
depositoryId = depository.id;
placeId = "0";
}
updateTableShow();
}
})
}
})
};
table.on('edit(currentTableFilterForLocation)', function (obj) {
obj.update({stockTakingQuantity: obj.value});//修改当前行数据
calculateForLocation(obj);
});
// 用于监听下拉菜单
table.on('tool(currentTableFilterForLocation)', function (obj) { //注:tool 是工具条事件名,test 是 table 原始容器的属性 lay-filter="对应的值"
var data = obj.data //获得当前行数据
, layEvent = obj.event; //获得 lay-event 对应的值
if (layEvent === 'more') {
let splitInfoList = obj.data.splitInfoList;
if (splitInfoList.length > 0) {
let dropDownDataList = [];
for (var i = 0; i < splitInfoList.length; i++) {
let dropDownData = {};
dropDownData.title = splitInfoList[i].newUnit;
dropDownData.id = obj.data.id;
dropDownDataList.push(dropDownData);
}
dropdown.render({
elem: this //触发事件的 DOM 对象
, show: true //外部事件触发即显示
, data: dropDownDataList
, click: function (unit) {
this.elem[0].childNodes[0].data = unit.title;
obj.tr[0].childNodes[6].childNodes[0].innerText = obj.data.splitInventory[unit.title];
}
, align: 'right' //右对齐弹出(v2.6.8 新增)
, style: 'box-shadow: 1px 1px 10px rgb(0 0 0 / 12%);' //设置额外样式
})
}
//下拉菜单
}
});
// 用于计算盘点结果
calculateForLocation = function (obj) {
let oldInventory = Number(obj.tr[0].childNodes[6].childNodes[0].innerText);
let nowInventory = Number(obj.value);
let number = 0;
let takingResult = '';
let takingResultString = '';
let req = {};
if ((oldInventory) > (nowInventory)) {
number = oldInventory - nowInventory;
takingResult = "Inventory_down";
takingResultString = "盘亏";
} else if ((oldInventory) < (nowInventory)) {
number = nowInventory - oldInventory;
takingResult = "Inventory_up";
takingResultString = "盘盈";
} else {
takingResult = "Inventory_normal";
takingResultString = "正常";
}
obj.tr[0].childNodes[8].childNodes[0].innerText = takingResultString;
obj.tr[0].childNodes[9].childNodes[0].innerText = number;
obj.update({takingResult: takingResult});
obj.update({takingInventory: number});
req.number = number + "";
req.takingResult = takingResult;
req.takingResultString = takingResultString;
req.id = obj.data.id + "";
req.unit = obj.tr[0].childNodes[5].childNodes[0].innerText;
req.oldInventory = oldInventory + "";
$.ajax({
url: "/stockTaking/temporaryStorageForTakingResult",
dataType: "json",
data: JSON.stringify(req),
type: "POST",
contentType: "application/json;charset=utf-8"
});
};
// 用于打开仓库树形菜单
$('#openSonByDepository').on('click', function () {
layer.open({
type: 2,
title: '弹窗内容',
skin: 'layui-layer-rim',
maxmin: true,
shadeClose: true, //点击遮罩关闭层
area: ['70%', '70%'],
move: '.layui-layer-title',
fixed: false,
content: '/selectDepository?type=2',
success: function (layero, index) {
var children = layero.children();
var content = $(children[1]);
var iframeChildren = $(content.children());
content.css('height', '100%');
iframeChildren.css('height', '100%');
},
end: function () {
var nowDepositoryId = $("#depositoryId").val();
var nowPlaceId = $("#placeId").val();
if (nowDepositoryId !== depositoryId || nowPlaceId !== placeId) {
// 如果重新选择盘点位置
var nowDepositoryName = $("#openSonByDepository").val();
$("#form1")[0].reset();
$("#depositoryId").val(nowDepositoryId);
$("#placeId").val(nowPlaceId);
$("#openSonByDepository").val(nowDepositoryName);
form.render();
}
if (nowDepositoryId !== null && nowDepositoryId !== "") {
depositoryId = nowDepositoryId;
placeId = nowPlaceId;
updateTableShowForLocation();
}
}
});
});
updateTableShowForLocation = function () {
let req = {};
req.depositoryId = depositoryId;
req.placeId = placeId;
table.reload('currentTableForLocation', {
url: '/material/findInventoryForStockTaking',
page: {
curr: 1
},
where: req
}, 'data');
};
});
</script> </script>
</body> </body>
</html> </html>

897
target/classes/templates/pages/stockTaking/stockTaking.html

@ -34,7 +34,12 @@
.layui-form-select { .layui-form-select {
width: 100%; width: 100%;
border-style: none; height: 38px;
line-height: 1.3;
border-width: 1px;
border-style: solid;
background-color: #fff;
} }
.lay-step { .lay-step {
@ -55,7 +60,6 @@
</ul> </ul>
<div class="layui-tab-content"> <div class="layui-tab-content">
<div class="layui-tab-item layui-show"> <div class="layui-tab-item layui-show">
<div class="layui-carousel" id="stepForm" lay-filter="stepForm" style="margin: 0 auto; "> <div class="layui-carousel" id="stepForm" lay-filter="stepForm" style="margin: 0 auto; ">
<div carousel-item style="overflow: inherit"> <div carousel-item style="overflow: inherit">
<div> <div>
@ -214,25 +218,165 @@
</div> </div>
</div> </div>
</form> </form>
<table class="layui-hide" lay-filter="currentTableFilterForLocation" <div class="layui-tab">
id="currentTableForLocation" <ul class="layui-tab-title" style="text-align: center">
style="margin-top: 123px"></table> <li class="layui-this">表格</li>
<!-- 提交按钮--> <li class="layui-this">卡片</li>
<div class="layui-form-item" style="margin-top: 10px;"> </ul>
<div class="layui-input-block"> <div class="layui-tab-content">
<button type="button" class="layui-btn layui-btn-normal layui-btn-lg" <div class="layui-tab-item layui-show">
submitType="Location" <table class="layui-hide" lay-filter="currentTableFilterForLocation"
lay-submit id="currentTableForLocation"
lay-filter="formStep"> style="margin-top: 123px"></table>
&emsp;提交&emsp; <!-- 提交按钮-->
</button> <div class="layui-form-item" style="margin-top: 10px;">
<div class="layui-input-block">
<button type="button"
class="layui-btn layui-btn-normal layui-btn-lg"
submitType="Location"
lay-submit
lay-filter="formStep">
&emsp;提交&emsp;
</button>
</div>
</div>
</div>
<div class="layui-tab-item">
<fieldset class="table-search-fieldset">
<legend>盘点明细</legend>
<div class="layui-card-body" id="InventoryDetails" style="padding-right: 0px">
<hr>
<i class="layui-icon layui-icon-subtraction" style="display: inline"
onclick="deleteItem(this)"></i>
<div class="layui-form-item">
<label class="layui-form-label" style="height: 40px;">物料名称:</label>
<div class="layui-input-block" style="margin: 0px;">
<div class="inputdiv">
<input type="text" placeholder="请选择物料"
class="layui-input fairy-tag-input"
style="border-style: none"
id="openSonByMaterialForLocation"
onblur="selectMaterialByNameForLocation(this)"
lay-verify="required"/>
<i class="layui-icon layui-icon-search" style="display: inline"
id="selectMaterialForLocation" onclick="selectMaterialForLocation(this)"></i>
</div>
<input type="text" name="mid" class="layui-input" id="midForLocation"
style="display: none" lay-verify="required"/>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label" style="height: 40px;">物料编码:</label>
<div class="layui-input-block" style="margin: 0px;">
<div class="inputdiv">
<input id="codeForLocation" name="code" type="text" placeholder="请填写入物料编码"
value=""
onblur="selectCodeForLocation(this)"
class="layui-input" lay-verify="required"
style="border-style: none">
<img src="/static/images/search.ico" height="16" width="16"
style="margin-top: 10px"
onclick="scanMaterialCodeForTaking(this)">
</div>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">物料类型:</label>
<div class="layui-input-block">
<input type="text" placeholder="请选择物料类型" class="layui-input"
id="openSonByMateralType" readonly
lay-verify="required"/>
<input type="text" id="materialTypeId" name="typeId"
placeholder="请选择物料类型" class="layui-input"
style="display: none" lay-verify="required"/>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">材质:</label>
<div class="layui-input-block">
<input type="text" placeholder="请填写材质名称" class="layui-input" readonly
name="texture"/>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">规格型号:</label>
<div class="layui-input-block">
<input type="text" placeholder="请填写规格型号" class="layui-input" readonly
name="version"/>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">计量单位:</label>
<div class="layui-input-block">
<select id="unit" onchange="changeSelectValueForUnit(this)" class="layui-form-select" name="unit"></select>
</div>
</div>
<div class="layui-form-item" style="display: none" id="producedDateItem">
<label class="layui-form-label">生产日期:</label>
<div class="layui-input-block">
<!-- <input type="text" name="producedDate" id="producedDate" placeholder="请填写生产日期" onclick="selectDate(this)"-->
<!-- autocomplete="off" class="layui-input">-->
<select name="producedDate" id="producedDate" onchange="changeSelectValueForProducedDate(this)" class="layui-form-select">
</select>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">库存数量:</label>
<div class="layui-input-block">
<input type="number" class="layui-input" readonly id="oldInventory"
name="oldInventory" lay-verify="required"/>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">盘点数量:</label>
<div class="layui-input-block">
<input type="number" class="layui-input" onblur="calculate(this)"
name="newInventory" lay-verify="required"/>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">盘点结果:</label>
<div class="layui-input-block">
<select name="takingResult" id="result" class="layui-form-select">
</select>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">盈亏数量:</label>
<div class="layui-input-block">
<input type="number" class="layui-input" readonly
id="Inventory_number"
name="inventory" lay-verify="required"/>
</div>
</div>
<i class="layui-icon layui-icon-addition" style="display: inline"
onclick="addItem(this)"></i>
</div>
<div class="layui-form-item" style="margin-top: 10px;">
<div class="layui-input-block">
<button type="button" class="layui-btn layui-btn-normal layui-btn-lg"
lay-submit
lay-filter="formStep3">
&emsp;提交&emsp;
</button>
</div>
</div>
</fieldset>
</div>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
<!-- 下一步--> <!-- 下一步-->
<div> <div>
<form class="layui-form" style="margin: 0 auto;max-width: 460px;padding-top: 40px;"> <form class="layui-form"
style="margin: 0 auto;max-width: 460px;padding-top: 40px;">
<div style="text-align: center;margin-top: 90px;"> <div style="text-align: center;margin-top: 90px;">
<i class="layui-icon layui-circle" <i class="layui-icon layui-circle"
style="color: white;font-size:30px;font-weight:bold;background: #52C41A;padding: 20px;line-height: 80px;">&#xe605;</i> style="color: white;font-size:30px;font-weight:bold;background: #52C41A;padding: 20px;line-height: 80px;">&#xe605;</i>
@ -261,66 +405,17 @@
</script> </script>
<script src="/static/lib/layui-v2.6.3/layui.js" charset="utf-8"></script> <script src="/static/lib/layui-v2.6.3/layui.js" charset="utf-8"></script>
<script src="/static/js/lay-config.js?v=1.0.4" charset="utf-8"></script> <script src="/static/js/lay-config.js?v=1.0.4" charset="utf-8"></script>
<script src="/static/js/stockTaking/stockTakingForMaterial.js" charset="utf-8"></script>
<script src="/static/js/stockTaking/stockTakingForLocationTable.js" charset="utf-8"></script>
<script src="/static/js/stockTaking/stockTakingForLocationCard.js" charset="utf-8"></script>
<script> <script>
// 用于添加标签
function addItem(obj) {
}
// 用于删除标签
function deleteItem(obj) {
}
// 用于扫描条形码或二维码
function scanCode(obj) {
}
// 用于加载物料选择菜单
function selectMaterial() {
}
// 用于通过物料名称获取物料
function selectMaterialByName() {
}
// 用于编码查询
function selectCode(obj) {
}
// 用于扫描物料码
function scanCodeForMaterial() {
}
// 用于计算盘点结果
function calculateForMaterial(obj) {
}
// 用于计算盘点结果
function calculateForLocation(obj) {
}
function updateTableShowForMaterial() {
}
function updateTableShowForLocation() {
}
// 用于存储当前选择的盘点位置 // 用于存储当前选择的盘点位置
let depositoryId; let depositoryId;
let placeId; let placeId;
// 用于存储当前选择的负责人 // 用于存储当前选择的负责人
let departmentManagerIdForMaterial; let departmentManagerIdForMaterial;
// 用于存储当前选择的负责人
let departmentManagerIdForLocation; let departmentManagerIdForLocation;
layui.use(['form', 'step', 'flow', 'table', 'inputTag'], function () { layui.use(['form', 'step', 'flow', 'table', 'inputTag'], function () {
var $ = layui.$, var $ = layui.$,
form = layui.form, form = layui.form,
@ -328,8 +423,6 @@
inputTag = layui.inputTag, inputTag = layui.inputTag,
dropdown = layui.dropdown, //下拉菜单 dropdown = layui.dropdown, //下拉菜单
step = layui.step; step = layui.step;
departmentManagerIdForMaterial = $("#departmentManagerIdForMaterial").val();
departmentManagerIdForLocation = $("#departmentManagerIdForLocation").val();
// 用于分步表单加载 // 用于分步表单加载
step.render({ step.render({
@ -357,173 +450,6 @@
}] }]
}); });
let tagData = [];
let tempData = $("#departmentManagerForMaterial").val().split(",");
$.each(tempData, function (index, item) {
if (item !== "") {
tagData.push(item)
}
});
$("#departmentManagerForMaterial").val("");
$("#departmentManagerForLocation").val("");
let tagLabel = inputTag.render({
elem: '#departmentManagerForMaterial',
data: tagData,//初始值
removeKeyNum: 8,//删除按键编号 默认,BackSpace 键
createKeyNum: 13,//创建按键编号 默认,Enter 键
onChange: function (data, value, type, index) {
if (type === "remove") {
let split = departmentManagerIdForMaterial.split(",");
split.splice(index, 1);
departmentManagerIdForMaterial = split.toString();
$("#departmentManagerIdForMaterial").val(departmentManagerIdForMaterial);
}
}
});
let tagLabel1 = inputTag.render({
elem: '#departmentManagerForLocation',
data: tagData,//初始值
removeKeyNum: 8,//删除按键编号 默认,BackSpace 键
createKeyNum: 13,//创建按键编号 默认,Enter 键
onChange: function (data, value, type, index) {
if (type === "remove") {
let split = departmentManagerIdForLocation.split(",");
split.splice(index, 1);
departmentManagerIdForLocation = split.toString();
$("#departmentManagerIdForLocation").val(departmentManagerIdForLocation);
}
}
});
updateTableShowForMaterial = function () {
let req = {};
req.mid = $("#mid").val();
table.reload('currentTableForMaterial', {
url: '/material/findMaterialByConditionForStockTaking',
page: {
curr: 1
},
where: req
}, 'data');
};
table.render({
elem: "#currentTableForMaterial",
url: '/material/findMaterialByConditionForStockTaking',
parseData: function (res) { //res 即为原始返回的数据
return {
"status": res.status, //解析接口状态
"message": res.statusInfo.message, //解析提示文本
"count": res.count, //解析数据长度
"data": res.data //解析数据列表
};
},
request: {
pageName: 'page', //页码的参数名称,默认:page
limitName: 'size' //每页数据量的参数名,默认:limit
},
response: {
statusName: 'status' //规定数据状态的字段名称,默认:code
, statusCode: 200 //规定成功的状态码,默认:0
, msgName: 'message' //规定状态信息的字段名称,默认:msg
, countName: 'count' //规定数据总数的字段名称,默认:count
, dataName: 'data' //规定数据列表的字段名称,默认:data
},
where: {
depositoryId: "-1"
},
height: 'full-255',//固定高度-即固定表头固定第一行首行
cols: [
[
{field: 'mcode', width: 100, title: '存货编码', fixed: 'left'},
{field: 'mname', width: 150, title: '物料名称'},
{field: 'version', width: 150, title: '规格型号',},
{field: 'tname', width: 120, title: '物料种类'},
{field: 'dname', width: 150, title: '所处仓库'},
{field: 'pcode', width: 150, title: '所处库位',},
{title: '计量单位', width: 200, templet: '#changeUnit', align: "center"},
{field: 'inventory', width: 100, title: '库存数'},
{field: 'stockTakingQuantity', width: 100, title: '盘点数', edit: 'quantity'},
{field: 'takingResultString', width: 100, title: '盘点结果'},
{field: 'takingInventory', width: 100, title: '盈亏数量'},
]
],
limits: [10, 15, 20, 25, 50, 100],
limit: 10,
page: true,
skin: 'line',
done: function (res, curr, count) {
$.each(res['data'], function (i, j) {
let takingUnit = j["takingUnit"];
if (takingUnit !== null) {
let parentItem = $("[lay-id='currentTableForMaterial'] tr:eq(" + (i + 1) + ")");
let unitHandleItem = parentItem.children()[6];
let quantityHandleItem = parentItem.children()[7];
unitHandleItem.childNodes[0].childNodes[1].childNodes[0].data = takingUnit;
quantityHandleItem.childNodes[0].innerText = j["splitInventory"][takingUnit];
}
});
}
});
// 用于打开负责人树形菜单
$("#selectdepartmentManagerForMaterial").on('click', function () {
layer.open({
type: 2,
title: '弹窗内容',
skin: 'layui-layer-rim',
maxmin: true,
shadeClose: true, //点击遮罩关闭层
area: ['70%', '70%'],
move: '.layui-layer-title',
fixed: false,
content: '/selectManager?type=Material',
end: function () {
departmentManagerIdForMaterial = $("#departmentManagerIdForMaterial").val();
tagLabel.createItem();
},
success: function (layero, index) {
var children = layero.children();
var content = $(children[1]);
var iframeChildren = $(content.children());
content.css('height', '100%');
iframeChildren.css('height', '100%');
}
});
});
// 用于打开负责人树形菜单
$("#selectdepartmentManagerForLocation").on('click', function () {
layer.open({
type: 2,
title: '弹窗内容',
skin: 'layui-layer-rim',
maxmin: true,
shadeClose: true, //点击遮罩关闭层
area: ['70%', '70%'],
move: '.layui-layer-title',
fixed: false,
content: '/selectManager?type=Location',
end: function () {
departmentManagerIdForLocation = $("#departmentManagerIdForLocation").val();
tagLabel1.createItem();
},
success: function (layero, index) {
var children = layero.children();
var content = $(children[1]);
var iframeChildren = $(content.children());
content.css('height', '100%');
iframeChildren.css('height', '100%');
}
});
});
// 用于提交盘点情况 // 用于提交盘点情况
@ -566,6 +492,37 @@
return false; return false;
}); });
// 用于提交盘点情况
form.on('submit(formStep3)', function (data) {
data = data.field;
data.params = params;
data.needToUpdate = needToUpdate;
data.barCodeListByNoMaterial = barCodeList;
data.departmentManagerId = departmentManagerIdForLocation;
console.log(data)
/* $.ajax({
url: "/stockTaking/addStockTakingRecord",
type: 'post',
dataType: 'json',
contentType: "application/json;charset=utf-8",
data: JSON.stringify(data),
beforeSend: function () {
this.layerIndex = layer.load(0, {shade: [0.5, '#393D49']});
},
success: function (data) {
layer.msg("申请提交成功", {
icon: 6,//成功的表情
time: 500 //1秒关闭(如果不配置,默认是3秒)
}, function () {
step.next('#stepForm');
});
},
complete: function () {
layer.close(this.layerIndex);
}
});*/
});
$('.pre').click(function () { $('.pre').click(function () {
step.pre('#stepForm'); step.pre('#stepForm');
}); });
@ -573,471 +530,7 @@
$('.next').click(function () { $('.next').click(function () {
step.next('#stepForm'); step.next('#stepForm');
}); });
})
table.on('edit(currentTableFilterForMaterial)', function (obj) {
obj.update({stockTakingQuantity: obj.value});//修改当前行数据
calculateForMaterial(obj);
});
// 用于监听下拉菜单
table.on('tool(currentTableFilterForMaterial)', function (obj) { //注:tool 是工具条事件名,test 是 table 原始容器的属性 lay-filter="对应的值"
var data = obj.data //获得当前行数据
, layEvent = obj.event; //获得 lay-event 对应的值
if (layEvent === 'more') {
let splitInfoList = obj.data.splitInfoList;
if (splitInfoList.length > 0) {
let dropDownDataList = [];
for (var i = 0; i < splitInfoList.length; i++) {
let dropDownData = {};
dropDownData.title = splitInfoList[i].newUnit;
dropDownData.id = obj.data.id;
dropDownDataList.push(dropDownData);
}
dropdown.render({
elem: this //触发事件的 DOM 对象
, show: true //外部事件触发即显示
, data: dropDownDataList
, click: function (unit) {
this.elem[0].childNodes[0].data = unit.title;
obj.tr[0].childNodes[7].childNodes[0].innerText = obj.data.splitInventory[unit.title];
}
, align: 'right' //右对齐弹出(v2.6.8 新增)
, style: 'box-shadow: 1px 1px 10px rgb(0 0 0 / 12%);' //设置额外样式
})
}
//下拉菜单
}
});
// 用于计算盘点结果
calculateForMaterial = function (obj) {
let oldInventory = Number(obj.tr[0].childNodes[7].childNodes[0].innerText);
let nowInventory = Number(obj.value);
let number = 0;
let takingResult = '';
let takingResultString = '';
let req = {};
if ((oldInventory) > (nowInventory)) {
number = oldInventory - nowInventory;
takingResult = "Inventory_down";
takingResultString = "盘亏";
} else if ((oldInventory) < (nowInventory)) {
number = nowInventory - oldInventory;
takingResult = "Inventory_up";
takingResultString = "盘盈";
} else {
takingResult = "Inventory_normal";
takingResultString = "正常";
}
obj.tr[0].childNodes[9].childNodes[0].innerText = takingResultString;
obj.tr[0].childNodes[10].childNodes[0].innerText = number;
obj.update({takingResult: takingResult});
obj.update({takingInventory: number});
req.number = number + "";
req.takingResult = takingResult;
req.takingResultString = takingResultString;
req.id = obj.data.id + "";
req.unit = obj.tr[0].childNodes[6].childNodes[0].innerText;
req.oldInventory = oldInventory + "";
$.ajax({
url: "/stockTaking/temporaryStorageForTakingResult",
dataType: "json",
data: JSON.stringify(req),
type: "POST",
contentType: "application/json;charset=utf-8"
});
};
// 用于通过物料名称获取物料
selectMaterialByName = function (obj) {
// 输入code
var data = obj.value;
var req = {};
data = data.split(",")[0];
if (data !== "") {
req.mname = data;
$.ajax({
url: "/material/findMaterialByCondition",
type: "post",
dataType: 'json',
data: JSON.stringify(req),
contentType: "application/json;charset=utf-8",
success: function (d) {
if (d.count > 1) {
layer.msg("请点击右侧搜索确定物品");
$("#openSonByMaterial").val("");
$("#mid").val("");
$("#code").val("");
return false;
} else if (d.count === 0) {
layer.msg("没有该物品,请确认输入是否正确");
$("#openSonByMaterial").val("");
$("#mid").val("");
$("#code").val("");
return false;
} else {
var material = d.data[0];
$("#openSonByMaterial").val(material.mname);
$("#mid").val(material.mid);
$("#code").val(material.code);
form.render();
updateTableShowForMaterial();
}
}
});
}
};
// 用于实现通过编码查询物料
selectCode = function (obj) {
// 输入code
var code = obj.value;
var req = {};
req.code = code;
req.type = "out";
if (code !== "") {
$.ajax({
url: "/material/findMatrialByCode",
type: "get",
dataType: 'json',
data: (req),
contentType: "application/json;charset=utf-8",
success: function (d) {
var d = d.data;
if (d == null) {
layer.msg("仓库中暂无该物料", {
icon: 0,
time: 1000
}, function () {
$("#openSonByMaterial").val("");
$("#mid").val("");
$("#code").val("");
updateTableShowForMaterial();
});
} else {
$("#openSonByMaterial").val(d.mname);
$("#mid").val(d.mid);
form.render();
updateTableShowForMaterial();
}
}
});
}
};
scanCodeForMaterial = function (obj) {
let wxScan = parent;
if(wxScan.wx === undefined){
wxScan = wxScan.parent.wx;
}
else{
wxScan = wxScan.wx;
}
wxScan.scanQRCode({
desc: 'scanQRCode desc',
needResult: 1, // 默认为0,扫描结果由企业微信处理,1则直接返回扫描结果,
scanType: ["qrCode","barCode"], // 可以指定扫二维码还是条形码(一维码),默认二者都有
success: function (res) {
// 回调
var result = res.resultStr;//当needResult为1时返回处理结果
var req = {};
req.qrCode = result;
req.codeFlag = 2;
$.ajax({
url: "/material/qywxApplicationOutScanQrCode",
type: "post",
dataType: 'json',
data: JSON.stringify(req),
contentType: "application/json;charset=utf-8",
success: function (d) {
var data = d.data;
if (data === null) {
layer.msg("对于编码:" + result + ",并未发现仓库中存在对应的物料", {
icon: 0,
time: 1000 //0.5秒关闭(如果不配置,默认是3秒)
}, function () {
$("#openSonByMaterial").val("");
$("#mid").val("");
$("#code").val("");
updateTableShowForMaterial();
})
} else {
$("#openSonByMaterial").val( data.mname);
$("#mid").val( data.id);
$("#code").val( data.code);
updateTableShowForMaterial();
}
}
})
}
})
};
// 通过位置盘点物料页面
table.render({
elem: "#currentTableForLocation",
url: '/material/findInventoryForStockTaking',
parseData: function (res) { //res 即为原始返回的数据
return {
"status": res.status, //解析接口状态
"message": res.statusInfo.message, //解析提示文本
"count": res.count, //解析数据长度
"data": res.data //解析数据列表
};
},
request: {
pageName: 'page', //页码的参数名称,默认:page
limitName: 'size' //每页数据量的参数名,默认:limit
},
response: {
statusName: 'status' //规定数据状态的字段名称,默认:code
, statusCode: 200 //规定成功的状态码,默认:0
, msgName: 'message' //规定状态信息的字段名称,默认:msg
, countName: 'count' //规定数据总数的字段名称,默认:count
, dataName: 'data' //规定数据列表的字段名称,默认:data
},
where: {
depositoryId: "-1"
},
height: 'full-255',//固定高度-即固定表头固定第一行首行
cols: [
[
{field: 'mcode', width: 150, title: '存货编码', fixed: 'left'},
{field: 'mname', width: 150, title: '物料名称'},
{field: 'typeName', width: 100, title: '物料种类'},
{field: 'version', width: 150, title: '规格型号',},
{field: 'pcode', width: 150, title: '所处库位',},
{title: '计量单位', width: 200, templet: '#changeUnit', align: "center"},
{field: 'inventory', width: 100, title: '库存数'},
{field: 'stockTakingQuantity', width: 100, title: '盘点数', edit: 'quantity'},
{field: 'takingResultString', width: 100, title: '盘点结果'},
{field: 'takingInventory', width: 100, title: '盈亏数量'},
]
],
limits: [10, 15, 20, 25, 50, 100],
limit: 10,
page: true,
skin: 'line',
done: function (res, curr, count) {
$.each(res['data'], function (i, j) {
let takingUnit = j["takingUnit"];
if (takingUnit !== null) {
let parentItem = $("[lay-id='currentTableForLocation'] tr:eq(" + (i + 1) + ")");
let unitHandleItem = parentItem.children()[5];
let quantityHandleItem = parentItem.children()[6];
unitHandleItem.childNodes[0].childNodes[1].childNodes[0].data = takingUnit;
quantityHandleItem.childNodes[0].innerText = j["splitInventory"][takingUnit];
}
});
}
});
// 扫码盘点位置
scanCode = function () {
parent.wx.scanQRCode({
desc: 'scanQRCode desc',
needResult: 1, // 默认为0,扫描结果由企业微信处理,1则直接返回扫描结果,
scanType: ["qrCode", "barCode"], // 可以指定扫二维码还是条形码(一维码),默认二者都有
success: function (res) {
// 回调
var result = res.resultStr;//当needResult为1时返回处理结果
var req = {};
req.qrCode = result;
req.codeFlag = 2;
$.ajax({
url: "/place/qywxApplicationInScanQrCode",
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.msg("并未查询到对应位置,请重新扫描", {
icon: 0,
time: 1000
}, function () {
depositoryId = -1;
placeId = -1;
});
} else if (flag === 1) {
// 如果获取到的是库位
var place = data["place"];
$("#placeId").val(place.id);
$("#openSonByDepository").val(place.depositoryName);
$("#depositoryId").val(place.did);
depositoryId = place.did;
placeId = place.id;
} else if (flag === 2) {
// 如果获取到的是仓库
var depository = data["depository"];
$("#placeId").val("0");
$("#openSonByDepository").val(depository.dname);
$("#depositoryId").val(depository.id);
depositoryId = depository.id;
placeId = "0";
}
updateTableShow();
}
})
}
})
};
table.on('edit(currentTableFilterForLocation)', function (obj) {
obj.update({stockTakingQuantity: obj.value});//修改当前行数据
calculateForLocation(obj);
});
// 用于监听下拉菜单
table.on('tool(currentTableFilterForLocation)', function (obj) { //注:tool 是工具条事件名,test 是 table 原始容器的属性 lay-filter="对应的值"
var data = obj.data //获得当前行数据
, layEvent = obj.event; //获得 lay-event 对应的值
if (layEvent === 'more') {
let splitInfoList = obj.data.splitInfoList;
if (splitInfoList.length > 0) {
let dropDownDataList = [];
for (var i = 0; i < splitInfoList.length; i++) {
let dropDownData = {};
dropDownData.title = splitInfoList[i].newUnit;
dropDownData.id = obj.data.id;
dropDownDataList.push(dropDownData);
}
dropdown.render({
elem: this //触发事件的 DOM 对象
, show: true //外部事件触发即显示
, data: dropDownDataList
, click: function (unit) {
this.elem[0].childNodes[0].data = unit.title;
obj.tr[0].childNodes[6].childNodes[0].innerText = obj.data.splitInventory[unit.title];
}
, align: 'right' //右对齐弹出(v2.6.8 新增)
, style: 'box-shadow: 1px 1px 10px rgb(0 0 0 / 12%);' //设置额外样式
})
}
//下拉菜单
}
});
// 用于计算盘点结果
calculateForLocation = function (obj) {
let oldInventory = Number(obj.tr[0].childNodes[6].childNodes[0].innerText);
let nowInventory = Number(obj.value);
let number = 0;
let takingResult = '';
let takingResultString = '';
let req = {};
if ((oldInventory) > (nowInventory)) {
number = oldInventory - nowInventory;
takingResult = "Inventory_down";
takingResultString = "盘亏";
} else if ((oldInventory) < (nowInventory)) {
number = nowInventory - oldInventory;
takingResult = "Inventory_up";
takingResultString = "盘盈";
} else {
takingResult = "Inventory_normal";
takingResultString = "正常";
}
obj.tr[0].childNodes[8].childNodes[0].innerText = takingResultString;
obj.tr[0].childNodes[9].childNodes[0].innerText = number;
obj.update({takingResult: takingResult});
obj.update({takingInventory: number});
req.number = number + "";
req.takingResult = takingResult;
req.takingResultString = takingResultString;
req.id = obj.data.id + "";
req.unit = obj.tr[0].childNodes[5].childNodes[0].innerText;
req.oldInventory = oldInventory + "";
$.ajax({
url: "/stockTaking/temporaryStorageForTakingResult",
dataType: "json",
data: JSON.stringify(req),
type: "POST",
contentType: "application/json;charset=utf-8"
});
};
// 用于打开仓库树形菜单
$('#openSonByDepository').on('click', function () {
layer.open({
type: 2,
title: '弹窗内容',
skin: 'layui-layer-rim',
maxmin: true,
shadeClose: true, //点击遮罩关闭层
area: ['70%', '70%'],
move: '.layui-layer-title',
fixed: false,
content: '/selectDepository?type=2',
success: function (layero, index) {
var children = layero.children();
var content = $(children[1]);
var iframeChildren = $(content.children());
content.css('height', '100%');
iframeChildren.css('height', '100%');
},
end: function () {
var nowDepositoryId = $("#depositoryId").val();
var nowPlaceId = $("#placeId").val();
if (nowDepositoryId !== depositoryId || nowPlaceId !== placeId) {
// 如果重新选择盘点位置
var nowDepositoryName = $("#openSonByDepository").val();
$("#form1")[0].reset();
$("#depositoryId").val(nowDepositoryId);
$("#placeId").val(nowPlaceId);
$("#openSonByDepository").val(nowDepositoryName);
form.render();
}
if (nowDepositoryId !== null && nowDepositoryId !== "") {
depositoryId = nowDepositoryId;
placeId = nowPlaceId;
updateTableShowForLocation();
}
}
});
});
updateTableShowForLocation = function () {
let req = {};
req.depositoryId = depositoryId;
req.placeId = placeId;
table.reload('currentTableForLocation', {
url: '/material/findInventoryForStockTaking',
page: {
curr: 1
},
where: req
}, 'data');
};
});
</script> </script>
</body> </body>
</html> </html>
Loading…
Cancel
Save