Browse Source

修改库存盘点负责人选择为标签输入

lwx_dev
erdanergou 3 years ago
parent
commit
35f9f0c982
  1. 3
      src/main/java/com/dreamchaser/depository_manage/controller/StockTakingController.java
  2. 86
      src/main/resources/static/css/inputTag.css
  3. 104
      src/main/resources/static/css/inputTag.less
  4. 152
      src/main/resources/static/js/lay-module/inputTag.js
  5. 11
      src/main/resources/templates/pages/post/selectManager.html
  6. 79
      src/main/resources/templates/pages/stockTaking/stockTaking.html
  7. 11
      target/classes/templates/pages/post/selectManager.html
  8. 79
      target/classes/templates/pages/stockTaking/stockTaking.html

3
src/main/java/com/dreamchaser/depository_manage/controller/StockTakingController.java

@ -53,7 +53,8 @@ public class StockTakingController {
// 用于添加盘点记录
@PostMapping("/addStockTakingRecord")
public RestResponse addStockTakingRecord(@RequestBody Map<String,Object> map, HttpServletRequest request){
public RestResponse addStockTakingRecord(@RequestBody Map<String,Object> map, HttpServletRequest request)
{
UserByPort userToken = (UserByPort) request.getAttribute("userToken");

86
src/main/resources/static/css/inputTag.css

@ -0,0 +1,86 @@
@keyframes fariy-fadein {
0% {
opacity: 0;
}
100% {
opacity: 1;
}
}
.fairy-tag-container {
width: 100%;
height: 38px;
border: 1px solid #e6e6e6;
background-color: #ffffff;
}
.fairy-tag-container:hover {
border-color: #d2d2d2;
}
.fairy-tag-container span.fairy-tag {
float: left;
font-size: 13px;
padding: 5px 8px;
margin-right: 5px;
margin-bottom: 5px;
border-radius: 2px;
line-height: 16px;
}
.fairy-tag-container span.fairy-tag a {
font-size: 11px;
font-weight: bolder;
color: #ffffff;
text-decoration: none;
margin-left: 6px;
}
.fairy-tag-container span.fairy-tag a:hover {
cursor: pointer;
}
.fairy-tag-container span.fairy-bg-red {
background-color: #FF5722;
}
.fairy-tag-container span.fairy-bg-orange {
background-color: #FFB800;
}
.fairy-tag-container span.fairy-bg-green {
background-color: #009688;
}
.fairy-tag-container span.fairy-bg-cyan {
background-color: #2F4056;
}
.fairy-tag-container span.fairy-bg-blue {
background-color: #1E9FFF;
}
.fairy-tag-container span.fairy-bg-black {
background-color: #393D49;
}
.fairy-tag-container span.fairy-bg-red,
.fairy-tag-container span.fairy-bg-orange,
.fairy-tag-container span.fairy-bg-green,
.fairy-tag-container span.fairy-bg-cyan,
.fairy-tag-container span.fairy-bg-blue,
.fairy-tag-container span.fairy-bg-black {
color: #ffffff;
}
.fairy-tag-container .fairy-anim-fadein {
animation: fariy-fadein 0.3s both;
}
.fairy-tag-container .fairy-tag-input[type='text'] {
width: 80px;
font-size: 13px;
padding: 6px;
background: transparent;
border: 0 none;
outline: 0;
}
.fairy-tag-container .fairy-tag-input[type='text']:focus::-webkit-input-placeholder {
color: transparent;
}
.fairy-tag-container .fairy-tag-input[type='text']:focus:-moz-placeholder {
color: transparent;
}
.fairy-tag-container .fairy-tag-input[type='text']:focus:-moz-placeholder {
color: transparent;
}
.fairy-tag-container .fairy-tag-input[type='text']:focus:-ms-input-placeholder {
color: transparent;
}
/*# sourceMappingURL=inputTag.css.map */

104
src/main/resources/static/css/inputTag.less

@ -0,0 +1,104 @@
@keyframes fariy-fadein {
0% {
opacity: 0
}
100% {
opacity: 1
}
}
.fairy-tag-container {
width: auto;
min-height: 100px;
padding: 5px;
border: 1px solid #e6e6e6;
background-color: #ffffff;
&:hover {
border-color: #d2d2d2;
}
span {
&.fairy-tag {
float: left;
font-size: 13px;
padding: 5px 8px;
margin-right: 5px;
margin-bottom: 5px;
border-radius: 2px;
line-height: 16px;
a {
font-size: 11px;
font-weight: bolder;
color: #ffffff;
text-decoration: none;
margin-left: 6px;
&:hover {
cursor: pointer;
}
}
}
&.fairy-bg-red {
background-color: #FF5722;
}
&.fairy-bg-orange {
background-color: #FFB800;
}
&.fairy-bg-green {
background-color: #009688;
}
&.fairy-bg-cyan {
background-color: #2F4056;
}
&.fairy-bg-blue {
background-color: #1E9FFF;
}
&.fairy-bg-black {
background-color: #393D49;
}
&.fairy-bg-red, &.fairy-bg-orange, &.fairy-bg-green, &.fairy-bg-cyan, &.fairy-bg-blue, &.fairy-bg-black {
color: #ffffff;
}
}
.fairy-anim-fadein {
animation: fariy-fadein .3s both;
}
.fairy-tag-input[type='text'] {
width: 80px;
font-size: 13px;
padding: 6px;
background: transparent;
border: 0 none;
outline: 0;
&:focus {
&::-webkit-input-placeholder {
color: transparent;
}
&:-moz-placeholder {
color: transparent;
}
&:-moz-placeholder {
color: transparent;
}
&:-ms-input-placeholder {
color: transparent;
}
}
}
}

152
src/main/resources/static/js/lay-module/inputTag.js

@ -0,0 +1,152 @@
/*
* Name: inputTag
* Author: cshaptx4869
* Project: https://github.com/cshaptx4869/inputTag
*/
(function (define) {
define(['jquery'], function ($) {
"use strict";
class InputTag {
options = {
elem: '.fairy-tag-input',
theme: ['fairy-bg-red', 'fairy-bg-orange', 'fairy-bg-green', 'fairy-bg-cyan', 'fairy-bg-blue', 'fairy-bg-black'],
data: [],
removeKeyNum: 8,
createKeyNum: 13,
permanentData: [],
};
get elem() {
return $(this.options.elem);
}
get copyData() {
return [...this.options.data];
}
constructor(options) {
this.render(options);
}
render(options) {
this.init(options);
this.listen();
}
init(options) {
var spans = '', that = this;
this.options = $.extend(this.options, options);
!this.elem.attr('placeholder') && this.elem.attr('placeholder', '添加标签');
$.each(this.options.data, function (index, item) {
spans += that.spanHtml(item);
});
this.elem.before(spans);
}
listen() {
var that = this;
this.elem.parent().on('click', 'a', function () {
that.removeItem($(this).parent('span'));
});
this.elem.parent().on('click', function () {
that.elem.focus();
});
this.elem.keydown(function (event) {
var keyNum = (event.keyCode ? event.keyCode : event.which);
if (keyNum === that.options.removeKeyNum) {
if (!that.elem.val().trim()) {
var closeItems = that.elem.parent().find('a');
if (closeItems.length) {
that.removeItem($(closeItems[closeItems.length - 1]).parent('span'));
event.preventDefault();
}
}
}
});
this.elem.focusout(function(event){
that.createItem();
event.preventDefault();
})
}
createItem() {
var value = this.elem.val().trim();
if (this.options.beforeCreate && typeof this.options.beforeCreate === 'function') {
var modifiedValue = this.options.beforeCreate(this.copyData, value);
if (typeof modifiedValue == 'string' && modifiedValue) {
value = modifiedValue;
} else {
value = '';
}
}
if (value) {
if (!this.options.data.includes(value)) {
this.options.data.push(value);
this.elem.before(this.spanHtml(value));
this.onChange(value, 'create');
}
}
this.elem.val('');
}
removeItem(target) {
var that = this;
var closeSpan = target.remove(),
closeSpanText = $(closeSpan).children('span').text();
var closeSpanTextIndex = $.inArray(closeSpanText, that.options.data);
var value = that.options.data.splice($.inArray(closeSpanText, that.options.data), 1);
value.length === 1 && that.onChange(value[0], 'remove',closeSpanTextIndex);
}
randomColor() {
return this.options.theme[Math.floor(Math.random() * this.options.theme.length)];
}
spanHtml(value) {
return '<span class="fairy-tag fairy-anim-fadein ' + this.randomColor() + '">' +
'<span>' + value + '</span>' +
(this.options.permanentData.includes(value) ? '' : '<a href="#" title="删除标签">&times;</a>') +
'</span>';
}
onChange(value, type,index) {
this.options.onChange && typeof this.options.onChange === 'function' && this.options.onChange(this.copyData, value, type,index);
}
getData() {
return this.copyData;
}
clearData() {
this.options.data = [];
this.elem.prevAll('span.fairy-tag').remove();
}
}
return {
render(options) {
return new InputTag(options);
}
}
});
}(typeof define === 'function' && define.amd ? define : function (deps, factory) {
var MOD_NAME = 'inputTag';
if (typeof module !== 'undefined' && module.exports) { //Node
module.exports = factory(require('jquery'));
} else if (window.layui && layui.define) {
layui.define('jquery', function (exports) { //layui加载
exports(MOD_NAME, factory(layui.jquery));
});
} else {
window[MOD_NAME] = factory(window.jQuery);
}
}));

11
src/main/resources/templates/pages/post/selectManager.html

@ -27,16 +27,17 @@
return false;
}
var name = $("#departmentManager", window.parent.document).val();
var id = $("#departmentManagerId", window.parent.document).val();
if (name === undefined || name === null || name === "") {
// if (name === undefined || name === null || name === "") {
$("#departmentManager", window.parent.document).val(data.title);
} else {
$("#departmentManager", window.parent.document).val(name + data.title);
}
// } else {
// $("#departmentManager", window.parent.document).val(name + data.title);
// }
if (id === undefined || id === null || id === "") {
$("#departmentManagerId", window.parent.document).val(data.id);
} else {
$("#departmentManagerId", window.parent.document).val(id + data.id);
$("#departmentManagerId", window.parent.document).val(id + data.id + ",");
}
var index = parent.layer.getFrameIndex(window.name);
parent.layer.close(index);

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

@ -9,6 +9,7 @@
<link rel="stylesheet" href="/static/lib/layui-v2.6.3/css/layui.css" media="all">
<link rel="stylesheet" href="/static/css/public.css" media="all">
<link rel="stylesheet" href="/static/js/lay-module/step-lay/step.css" media="all">
<link rel="stylesheet" href="/static/css/inputTag.css">
<style>
.inputdiv {
display: flex;
@ -17,9 +18,11 @@
line-height: 38px;
border: 1px solid rgb(238, 238, 238);
}
.layui-card-body {
padding: 0px;
}
.layui-form-label {
padding: 9px 0px;
text-align: left;
@ -33,6 +36,7 @@
width: 100%;
border-style: none;
}
.lay-step {
display: none;
}
@ -75,13 +79,20 @@
<div class="layui-form-item">
<label class="layui-form-label">负责人:</label>
<div class="layui-input-block">
<input type="text" placeholder="请选择负责人" class="layui-input" data-role="tagsinput"
id="departmentManager" readonly th:value="${departmentHeadName}"
lay-verify="required"/>
<input type="text" id="departmentManagerId" name="departmentManagerId"
th:value="${departmentHeadId}"
class="layui-input" style="display: none" lay-verify="required"/>
<div class="fairy-tag-container" style="border-style: none">
<div class="inputdiv">
<input type="text" id="departmentManager" style="display: none"
th:value="${departmentHeadName}"/>
<i class="layui-icon layui-icon-search" style="display: inline;right: 0;position: absolute;"
id="selectdepartmentManager"></i>
<input type="text" id="departmentManagerId"
name="departmentManagerId"
th:value="${departmentHeadId}"
class="layui-input" style="display: none"
lay-verify="required"/>
</div>
</div>
</div>
</div>
</div>
@ -98,7 +109,8 @@
<div class="layui-input-block" style="margin: 0px;">
<div class="inputdiv">
<input type="text" placeholder="请选择物料" class="layui-input"
<input type="text" placeholder="请选择物料"
class="layui-input fairy-tag-input"
style="border-style: none"
id="openSonByMaterial"
onblur="selectMaterialByName(this)"
@ -318,10 +330,11 @@
let barCodeList = {};
let needToUpdate = {};
layui.use(['form', 'step', 'flow','laydate'], function () {
layui.use(['form', 'step', 'flow', 'laydate', 'inputTag'], function () {
var $ = layui.$,
form = layui.form,
laydate = layui.laydate,
inputTag = layui.inputTag,
step = layui.step;
departmentManagerId = $("#departmentManagerId").val();
@ -338,6 +351,30 @@
}]
});
let tagData = [];
let tempData = $("#departmentManager").val().split(",");
$.each(tempData, function (index, item) {
if(item !== ""){
tagData.push(item)
}
});
let tagLabel= inputTag.render({
elem: '#departmentManager',
data: tagData,//初始值
removeKeyNum: 8,//删除按键编号 默认,BackSpace 键
createKeyNum: 13,//创建按键编号 默认,Enter 键
onChange: function (data, value, type,index) {
if(type === "remove"){
let split = departmentManagerId.split(",");
split.splice(index,1);
departmentManagerId = split.toString();
$("#departmentManagerId").val(departmentManagerId);
}
}
});
// 用于打开仓库树形菜单
$('#openSonByDepository').on('click', function () {
layer.open({
@ -378,7 +415,7 @@
// 用于打开负责人树形菜单
$("#departmentManager").on('click', function () {
$("#selectdepartmentManager").on('click', function () {
layer.open({
type: 2,
title: '弹窗内容',
@ -390,7 +427,8 @@
fixed: false,
content: '/selectManager',
end: function () {
departmentManagerId = $("#departmentManagerId").val()
departmentManagerId = $("#departmentManagerId").val();
tagLabel.createItem();
},
success: function (layero, index) {
var children = layero.children();
@ -409,6 +447,7 @@
data.params = params;
data.needToUpdate = needToUpdate;
data.barCodeListByNoMaterial = barCodeList;
data.departmentManagerId = departmentManagerId;
$.ajax({
url: "/stockTaking/addStockTakingRecord",
type: 'post',
@ -837,7 +876,7 @@
success: function (d) {
var d = d.data;
if (d == null) {
layer.msg("没有该编码,请确认是否输入正确");
layer.msg("该位置暂未该物品,请确认是否输入正确");
materialName.value = "";
materialId.value = "";
obj.value = "";
@ -847,8 +886,7 @@
versionChildren.childNodes[3].childNodes[1].value = "";
unitChildren.childNodes[3].childNodes[1].value = "";
inventoryChildren.childNodes[3].childNodes[1].value = "";
}
else {
} else {
materialName.value = d.mname;
materialId.value = d.id;
materialTypeItem[1].value = d.typeName;
@ -896,8 +934,7 @@
})
}
form.render();
}
else{
} else {
$("#" + "producedDateItem" + idNumber).hide();
form.render();
}
@ -1031,8 +1068,7 @@
})
}
form.render();
}
else{
} else {
$("#" + "producedDateItem" + idNumber).hide();
form.render();
}
@ -1290,8 +1326,7 @@
})
}
form.render();
}
else{
} else {
$("#" + "producedDateItem" + idNumber).hide();
form.render();
}
@ -1389,8 +1424,7 @@
})
}
form.render();
}
else{
} else {
$("#" + "producedDateItem" + id).hide();
form.render();
}
@ -1500,8 +1534,7 @@
$("#" + "oldInventory" + idNumber).val(d.data)
}
});
}
else if(id.includes("unit")){
} else if (id.includes("unit")) {
let idNumber = id.split("unit")[1]; // 得到当前id对应数字
req.mid = $("#" + "mid" + idNumber).val();
req.unit = data.value;

11
target/classes/templates/pages/post/selectManager.html

@ -27,16 +27,17 @@
return false;
}
var name = $("#departmentManager", window.parent.document).val();
var id = $("#departmentManagerId", window.parent.document).val();
if (name === undefined || name === null || name === "") {
// if (name === undefined || name === null || name === "") {
$("#departmentManager", window.parent.document).val(data.title);
} else {
$("#departmentManager", window.parent.document).val(name + data.title);
}
// } else {
// $("#departmentManager", window.parent.document).val(name + data.title);
// }
if (id === undefined || id === null || id === "") {
$("#departmentManagerId", window.parent.document).val(data.id);
} else {
$("#departmentManagerId", window.parent.document).val(id + data.id);
$("#departmentManagerId", window.parent.document).val(id + data.id + ",");
}
var index = parent.layer.getFrameIndex(window.name);
parent.layer.close(index);

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

@ -9,6 +9,7 @@
<link rel="stylesheet" href="/static/lib/layui-v2.6.3/css/layui.css" media="all">
<link rel="stylesheet" href="/static/css/public.css" media="all">
<link rel="stylesheet" href="/static/js/lay-module/step-lay/step.css" media="all">
<link rel="stylesheet" href="/static/css/inputTag.css">
<style>
.inputdiv {
display: flex;
@ -17,9 +18,11 @@
line-height: 38px;
border: 1px solid rgb(238, 238, 238);
}
.layui-card-body {
padding: 0px;
}
.layui-form-label {
padding: 9px 0px;
text-align: left;
@ -33,6 +36,7 @@
width: 100%;
border-style: none;
}
.lay-step {
display: none;
}
@ -75,13 +79,20 @@
<div class="layui-form-item">
<label class="layui-form-label">负责人:</label>
<div class="layui-input-block">
<input type="text" placeholder="请选择负责人" class="layui-input" data-role="tagsinput"
id="departmentManager" readonly th:value="${departmentHeadName}"
lay-verify="required"/>
<input type="text" id="departmentManagerId" name="departmentManagerId"
th:value="${departmentHeadId}"
class="layui-input" style="display: none" lay-verify="required"/>
<div class="fairy-tag-container" style="border-style: none">
<div class="inputdiv">
<input type="text" id="departmentManager" style="display: none"
th:value="${departmentHeadName}"/>
<i class="layui-icon layui-icon-search" style="display: inline;right: 0;position: absolute;"
id="selectdepartmentManager"></i>
<input type="text" id="departmentManagerId"
name="departmentManagerId"
th:value="${departmentHeadId}"
class="layui-input" style="display: none"
lay-verify="required"/>
</div>
</div>
</div>
</div>
</div>
@ -98,7 +109,8 @@
<div class="layui-input-block" style="margin: 0px;">
<div class="inputdiv">
<input type="text" placeholder="请选择物料" class="layui-input"
<input type="text" placeholder="请选择物料"
class="layui-input fairy-tag-input"
style="border-style: none"
id="openSonByMaterial"
onblur="selectMaterialByName(this)"
@ -318,10 +330,11 @@
let barCodeList = {};
let needToUpdate = {};
layui.use(['form', 'step', 'flow','laydate'], function () {
layui.use(['form', 'step', 'flow', 'laydate', 'inputTag'], function () {
var $ = layui.$,
form = layui.form,
laydate = layui.laydate,
inputTag = layui.inputTag,
step = layui.step;
departmentManagerId = $("#departmentManagerId").val();
@ -338,6 +351,30 @@
}]
});
let tagData = [];
let tempData = $("#departmentManager").val().split(",");
$.each(tempData, function (index, item) {
if(item !== ""){
tagData.push(item)
}
});
let tagLabel= inputTag.render({
elem: '#departmentManager',
data: tagData,//初始值
removeKeyNum: 8,//删除按键编号 默认,BackSpace 键
createKeyNum: 13,//创建按键编号 默认,Enter 键
onChange: function (data, value, type,index) {
if(type === "remove"){
let split = departmentManagerId.split(",");
split.splice(index,1);
departmentManagerId = split.toString();
$("#departmentManagerId").val(departmentManagerId);
}
}
});
// 用于打开仓库树形菜单
$('#openSonByDepository').on('click', function () {
layer.open({
@ -378,7 +415,7 @@
// 用于打开负责人树形菜单
$("#departmentManager").on('click', function () {
$("#selectdepartmentManager").on('click', function () {
layer.open({
type: 2,
title: '弹窗内容',
@ -390,7 +427,8 @@
fixed: false,
content: '/selectManager',
end: function () {
departmentManagerId = $("#departmentManagerId").val()
departmentManagerId = $("#departmentManagerId").val();
tagLabel.createItem();
},
success: function (layero, index) {
var children = layero.children();
@ -409,6 +447,7 @@
data.params = params;
data.needToUpdate = needToUpdate;
data.barCodeListByNoMaterial = barCodeList;
data.departmentManagerId = departmentManagerId;
$.ajax({
url: "/stockTaking/addStockTakingRecord",
type: 'post',
@ -837,7 +876,7 @@
success: function (d) {
var d = d.data;
if (d == null) {
layer.msg("没有该编码,请确认是否输入正确");
layer.msg("该位置暂未该物品,请确认是否输入正确");
materialName.value = "";
materialId.value = "";
obj.value = "";
@ -847,8 +886,7 @@
versionChildren.childNodes[3].childNodes[1].value = "";
unitChildren.childNodes[3].childNodes[1].value = "";
inventoryChildren.childNodes[3].childNodes[1].value = "";
}
else {
} else {
materialName.value = d.mname;
materialId.value = d.id;
materialTypeItem[1].value = d.typeName;
@ -896,8 +934,7 @@
})
}
form.render();
}
else{
} else {
$("#" + "producedDateItem" + idNumber).hide();
form.render();
}
@ -1031,8 +1068,7 @@
})
}
form.render();
}
else{
} else {
$("#" + "producedDateItem" + idNumber).hide();
form.render();
}
@ -1290,8 +1326,7 @@
})
}
form.render();
}
else{
} else {
$("#" + "producedDateItem" + idNumber).hide();
form.render();
}
@ -1389,8 +1424,7 @@
})
}
form.render();
}
else{
} else {
$("#" + "producedDateItem" + id).hide();
form.render();
}
@ -1500,8 +1534,7 @@
$("#" + "oldInventory" + idNumber).val(d.data)
}
});
}
else if(id.includes("unit")){
} else if (id.includes("unit")) {
let idNumber = id.split("unit")[1]; // 得到当前id对应数字
req.mid = $("#" + "mid" + idNumber).val();
req.unit = data.value;

Loading…
Cancel
Save