pom.xml
@@ -46,6 +46,11 @@ <version>${cool.version}</version> </dependency> <dependency> <groupId>org.apache.tika</groupId> <artifactId>tika-core</artifactId> <version>2.1.0</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>${mysql-driver.version}</version> src/main/java/com/zy/asrs/controller/BasContainerController.java
@@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.plugins.Page; import com.core.common.DateUtils; import com.zy.asrs.entity.BasContainer; import com.zy.asrs.entity.param.ContainerParams; import com.zy.asrs.service.BasContainerService; import com.core.annotations.ManagerAuth; import com.core.common.BaseRes; @@ -66,6 +67,16 @@ return R.ok(); } @RequestMapping(value = "/basContainer/init/auth") @ManagerAuth public R init(@RequestBody ContainerParams container) { if (Objects.isNull(container)) { throw new RuntimeException("能数不能为空!!"); } return basContainerService.init(container); } @RequestMapping(value = "/basContainer/update/auth") @ManagerAuth public R update(BasContainer basContainer){ src/main/java/com/zy/asrs/controller/MatController.java
@@ -13,6 +13,7 @@ import com.zy.asrs.entity.Mat; import com.zy.asrs.entity.MatPrint; import com.zy.asrs.entity.OrderDetl; import com.zy.asrs.entity.param.BatchMatsUpdateParam; import com.zy.asrs.entity.param.EmptyPlateOutParam; import com.zy.asrs.entity.result.KeyValueVo; import com.zy.asrs.service.MatService; @@ -127,6 +128,7 @@ mat.setCreateTime(now); mat.setUpdateBy(getUserId()); mat.setUpdateTime(now); mat.setLocType(mat.getTagId()); mat.setStatus(1); if (!matService.insert(mat)) { throw new CoolException("添加失败,请联系管理员"); @@ -141,11 +143,19 @@ return R.error(); } mat.setUpdateBy(getUserId()); mat.setLocType(mat.getTagId()); mat.setUpdateTime(new Date()); matService.updateById(mat); return R.ok(); } @PostMapping("mat/batch/auth") @ManagerAuth public R batchUpdate(@RequestBody BatchMatsUpdateParam params) { return matService.batchInfo(params); } @RequestMapping(value = "/mat/delete/auth") @ManagerAuth public R delete(@RequestParam String param){ src/main/java/com/zy/asrs/controller/PackController.java
@@ -83,6 +83,7 @@ } Mat mat = new Mat(); mat.setTagId(tagService.getTop().getId()); mat.setLocType(tagService.getTop().getId()); mat.setMatnr(barcode); mat.setMaktx(barcode); mat.setStatus(1); src/main/java/com/zy/asrs/entity/BasContainer.java
@@ -1,5 +1,6 @@ package com.zy.asrs.entity; import com.baomidou.mybatisplus.annotations.TableField; import com.core.common.Cools;import com.baomidou.mybatisplus.annotations.TableId; import com.baomidou.mybatisplus.enums.IdType; @@ -34,9 +35,10 @@ private String barcode; @ApiModelProperty("容器类型") private String type; private Long type; @ApiModelProperty("是否混放") @TableField("flag_mix") private Integer flagMix; @ApiModelProperty("最大混放种类") src/main/java/com/zy/asrs/entity/Mat.java
@@ -309,6 +309,7 @@ @ApiModelProperty("库位类型") @TableField("loc_type") @ExcelProperty(value = "库位类型") private Long locType; /** src/main/java/com/zy/asrs/entity/param/BatchMatsUpdateParam.java
New file @@ -0,0 +1,24 @@ package com.zy.asrs.entity.param; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.experimental.Accessors; import java.util.List; @Data @Accessors(chain = true) @ApiModel(value = "BatchMatsUpdateParam", description = "批量修改参数") public class BatchMatsUpdateParam { @ApiModelProperty("ids") private List<Long> ids; @ApiModelProperty("库位类型") private Long type; @ApiModelProperty("组托上限") private Double upQty; } src/main/java/com/zy/asrs/entity/param/ContainerParams.java
New file @@ -0,0 +1,30 @@ package com.zy.asrs.entity.param; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.experimental.Accessors; import java.io.Serializable; @Data @Accessors(chain = true) @ApiModel(value = "ContainerParams",description = "容器初始化参数") public class ContainerParams implements Serializable { @ApiModelProperty("起点") private Integer start; @ApiModelProperty("终点") private Integer end; @ApiModelProperty("类型") private Long type; @ApiModelProperty("是否初始化") private Integer flagInit; @ApiModelProperty("长度") private Integer length; } src/main/java/com/zy/asrs/enums/CommonEnum.java
@@ -9,9 +9,9 @@ public enum CommonEnum { //通用类型 COMMON_ENUM_Y(0, "否"), COMMON_ENUM_Y(1, "是"), //通用 COMMON_ENUM_N(1, "是"); COMMON_ENUM_N(0, "否"); public Integer type; src/main/java/com/zy/asrs/service/BasContainerService.java
@@ -1,8 +1,17 @@ package com.zy.asrs.service; import com.core.common.R; import com.zy.asrs.entity.BasContainer; import com.baomidou.mybatisplus.service.IService; import com.zy.asrs.entity.param.ContainerParams; public interface BasContainerService extends IService<BasContainer> { /** * @author Ryan * @date 2025/9/26 * @description: TODO * @version 1.0 */ R init(ContainerParams container); } src/main/java/com/zy/asrs/service/MatService.java
@@ -2,7 +2,9 @@ import com.baomidou.mybatisplus.plugins.Page; import com.baomidou.mybatisplus.service.IService; import com.core.common.R; import com.zy.asrs.entity.Mat; import com.zy.asrs.entity.param.BatchMatsUpdateParam; import java.util.List; @@ -18,4 +20,5 @@ Mat selectNewUpdateTime(); R batchInfo(BatchMatsUpdateParam params); } src/main/java/com/zy/asrs/service/impl/BasContainerServiceImpl.java
@@ -1,12 +1,71 @@ package com.zy.asrs.service.impl; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.core.common.R; import com.core.exception.CoolException; import com.zy.asrs.entity.param.ContainerParams; import com.zy.asrs.enums.CommonEnum; import com.zy.asrs.enums.ContainerType; import com.zy.asrs.mapper.BasContainerMapper; import com.zy.asrs.entity.BasContainer; import com.zy.asrs.service.BasContainerService; import com.baomidou.mybatisplus.service.impl.ServiceImpl; import org.apache.tika.utils.StringUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.awt.*; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.Objects; @Service("basContainerService") public class BasContainerServiceImpl extends ServiceImpl<BasContainerMapper, BasContainer> implements BasContainerService { /** * @author Ryan * @date 2025/9/26 * @description: 容器初始化 * @version 1.0 */ @Override @Transactional(rollbackFor = Exception.class) public R init(ContainerParams container) { Integer length = 7; if (Objects.isNull(container.getType())) { throw new CoolException("容器类型不能为空!"); } if (!Objects.isNull(container.getLength())) { length = container.getLength(); } if (!Objects.isNull(container.getFlagInit()) && container.getFlagInit().equals(CommonEnum.COMMON_ENUM_Y.type)) { this.delete(new EntityWrapper<>()); } for (int i = container.getStart(); i <= container.getEnd(); i++) { BasContainer basContainer = new BasContainer(); String prefix = "", ruleCode = ""; if (container.getType().equals(ContainerType.CONTAINER_TYPE_BOX.type)) { prefix = "LX2"; basContainer.setMixMax(3); } else if (container.getType().equals(ContainerType.CONTAINER_TYPE_CAGE.type)) { prefix = "LK3"; basContainer.setMixMax(2); } else if (container.getType().equals(ContainerType.CONTAINER_TYPE_SALVER.type)) { prefix = "TP4"; basContainer.setMixMax(2); } ruleCode = prefix + StringUtils.leftPad(i + "", length, "0"); basContainer.setType(container.getType()) .setCreateTime(new Date()) .setUpdateTime(new Date()) .setId(null) .setFlagMix(1) .setBarcode(ruleCode); if (!this.insert(basContainer)) { throw new CoolException("容器保存失败!!"); } } return R.ok(); } } src/main/java/com/zy/asrs/service/impl/MatServiceImpl.java
@@ -1,11 +1,16 @@ package com.zy.asrs.service.impl; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.baomidou.mybatisplus.plugins.Page; import com.baomidou.mybatisplus.service.impl.ServiceImpl; import com.core.common.R; import com.core.exception.CoolException; import com.zy.asrs.entity.param.BatchMatsUpdateParam; import org.springframework.stereotype.Service; import com.zy.asrs.entity.Mat; import com.zy.asrs.mapper.MatMapper; import com.zy.asrs.service.MatService; import org.springframework.transaction.annotation.Transactional; import java.util.List; @@ -37,6 +42,27 @@ return this.baseMapper.selectNewUpdateTime(); } /** * @author Ryan * @date 2025/9/26 * @description: 批量修改物料信息 * @version 1.0 */ @Override @Transactional(rollbackFor = Exception.class) public R batchInfo(BatchMatsUpdateParam params) { List<Long> ids = params.getIds(); List<Mat> mats = this.baseMapper.selectList(new EntityWrapper<Mat>().in("id", ids)); mats.forEach(mat -> { mat.setLocType(params.getType()); mat.setUpQty(params.getUpQty()); if (this.updateById(mat)) { throw new CoolException("物料信息修改失败!!"); } }); return R.ok(); } @Override public Page<Mat> getMatTurnPage(Page<Mat> page){ page.setRecords(baseMapper.getMatTurnPage(page.getCondition())); src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
@@ -683,17 +683,16 @@ if (Cools.isEmpty(mat)) { throw new CoolException(detlDto.getMatnr() + "商品档案不存在"); } //最多可放数量 Double singleMax = mat.getUpQty() * suplus; if (singleMax.compareTo(detlDto.getAnfme()) < 0) { throw new CoolException("单次最大组托上限为:" + singleMax); throw new CoolException("物料:" + detlDto.getMatnr() + "单次组托上限为:" + mat.getUpQty() + ",当前总量超出托盘装载上限!!"); } BigDecimal decimal = new BigDecimal(detlDto.getAnfme() / mat.getUpQty()); //当前物料需要占用料箱格数 Integer curr = decimal.setScale(0, RoundingMode.CEILING).intValue(); suplus = suplus - curr; if (suplus == 0 || suplus < 0) { if (suplus < 0) { throw new CoolException("物料:" + detlDto.getMatnr() + ", 超出当前托盘装载上限!!"); } src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java
@@ -465,6 +465,7 @@ tagId = tagService.getTop().getId(); } mat.setTagId(tagId); mat.setLocType(tagId); mat.setMatnr(analyse.getMatnr()); mat.setMaktx(param.getMaterialName()); mat.setSpecs(param.getConfigureDesc()); @@ -571,6 +572,7 @@ // mat.setModel(param.getModel()); mat.setTagId(tagId); mat.setLocType(tagId); mat.setStatus(1); mat.setCreateTime(now); mat.setUpdateTime(now); src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java
@@ -656,10 +656,10 @@ if (!basStationService.updateById(devNo)) { throw new CoolException("站点信息修改失败!!"); } // task.setWrkSts(15L); // if (!taskService.updateById(task)) { // throw new CoolException("任务状态修改失败!!"); // } task.setWrkSts(15L); if (!taskService.updateById(task)) { throw new CoolException("任务状态修改失败!!"); } } else { } src/main/java/com/zy/asrs/task/kingdee/handler/InboundOrderHandler.java
@@ -146,6 +146,7 @@ mat.setMaktx(jsonArray.get(0).toString()); mat.setSpecs(jsonArray.get(3).toString());//规格 mat.setTagId(tag.getId()); mat.setLocType(tag.getId()); mat.setCreateTime(jsonDate);//商品创建时间 mat.setUpdateTime(new Date()); mat.setStatus(1); src/main/java/com/zy/asrs/utils/MatExcelListener.java
@@ -131,6 +131,7 @@ if (mat == null) { mat = excel; mat.setTagId(tagId); mat.setLocType(tagId); if (!matService.insert(mat)) { throw new CoolException("保存商品信息失败,商品编码:" + excel.getMatnr()); } src/main/resources/application.yml
@@ -43,7 +43,7 @@ # global-config: # field-strategy: 0 configuration: # log-impl: org.apache.ibatis.logging.stdout.StdOutImpl log-impl: org.apache.ibatis.logging.stdout.StdOutImpl map-underscore-to-camel-case: true cache-enabled: true call-setters-on-nulls: true src/main/webapp/static/js/basContainer/basContainer.js
@@ -84,6 +84,9 @@ return d.id; })); break; case 'init': initContainer(); break; case 'exportData': admin.confirm('确定导出Excel吗', {shadeClose: true}, function(){ var titles=[]; @@ -137,6 +140,43 @@ break; } }); function initContainer() { admin.open({ type: 1, area: '600px', title: '初始化', content: $('#initContainer').html(), success: function (layero, dIndex) { // layDateRender(mData); // form.val('detail', mData); form.on('submit(initDo)', function (data) { var loadIndex = layer.load(2); $.ajax({ url: baseUrl + "/basContainer/init/auth", headers: {'token': localStorage.getItem('token'), 'Content-Type': 'application/json'}, data: JSON.stringify(data.field), method: 'POST', success: function (res) { layer.close(loadIndex); if (res.code === 200) { layer.close(dIndex); layer.msg(res.msg, {icon: 1}); tableReload(); } else if (res.code === 403) { top.location.href = baseUrl + "/"; } else { layer.msg(res.msg, {icon: 2}); } } }) return false; }); $(layero).children('.layui-layer-content').css('overflow', 'visible'); layui.form.render('select'); } }); } /* 弹窗 - 新增、修改 */ function showEditModel(mData) { @@ -217,6 +257,27 @@ tableReload(false); }); form.on('submit(init)', function (data) { $.ajax({ url: baseUrl + "/basContainer/init/auth", headers: {'token': localStorage.getItem('token')}, data: data.field, method: 'POST', async: false, success: function (res) { if (res.code === 200) { layer.msg(res.msg); layer.closeAll(); tableReload(false); } else if (res.code === 403) { parent.location.href = "/"; } else { layer.msg(res.msg) } } }) }); // 时间选择器 function layDateRender(data) { setTimeout(function () { @@ -228,6 +289,7 @@ }, 300); } layDateRender(); }); src/main/webapp/static/js/common.js
@@ -188,6 +188,7 @@ ,{field: 'model', align: 'center',title: '代码', hide: true} ,{field: 'color', align: 'center',title: '颜色', hide: true} ,{field: 'brand', align: 'center',title: '品牌', hide: true} ,{field: 'upQty', align: 'center',title: '组托上限'} ,{field: 'unit', align: 'center',title: '单位', hide: false} ,{field: 'price', align: 'center',title: '单价', hide: true} ,{field: 'sku', align: 'center',title: 'sku', hide: true} src/main/webapp/static/js/mat/mat.js
@@ -1,6 +1,7 @@ var pageCurr; var printMatCodeNos = []; var admin; function getCol() { var cols = [ {type: 'checkbox'} @@ -210,6 +211,54 @@ }); } break; case "batchModifties": var selected = checkStatus.data; if (selected.length === 0) { layer.msg('请选择修改数据'); } else { let selIds = selected.map(item => { return item.id }); layer.open({ type: 1, title: '批量修改', area: ['500px'], shadeClose: true, content: $('#batchModifties'), success: function (layero, index) { layer.iframeAuto(index); form.on('submit(batchModify)', function (data) { let params = {...data?.field} params.id = selIds $.ajax({ url: baseUrl + "/mat/batch/auth", headers: {'token': localStorage.getItem('token')}, data: JSON.stringify(params), dataType: 'json', contentType: 'application/json;charset=UTF-8', method: 'POST', success: function (res) { layer.closeAll(); if (res.code === 200) { } else if (res.code === 403) { top.location.href = baseUrl + "/"; } else { layer.msg(res.msg) } } }); layer.closeAll(); }); }, end: function () { } }); } break; default: break; } }); @@ -259,7 +308,6 @@ } // 表单提交事件 form.on('submit(editSubmit)', function (data) { console.log(data) data.field.tagId = insXmSel.getValue('valueStr'); if (isEmpty(data.field.tagId)) { layer.msg('分类不能为空', {icon: 2}); @@ -344,7 +392,8 @@ var template = Handlebars.compile(tpl); var html = template(res); var box = $("#box"); box.html(html);box.show(); box.html(html); box.show(); box.print({mediaPrint:true}); box.hide(); } else if (res.code === 403){ @@ -393,6 +442,7 @@ function importExcel() { $("#importExcel").trigger("click"); } function upload(obj){ if(!obj.files) { return; @@ -422,6 +472,7 @@ $("#importExcel").val(""); }); } function uploadComplete(evt) { var res = JSON.parse(evt.target.responseText); if(res.code === 200) { @@ -431,6 +482,7 @@ layer.msg(res.msg, {icon: 2}); } } function uploadFailed(evt) { var res = JSON.parse(evt.target.responseText); layer.msg(res.msg, {icon: 2}); src/main/webapp/views/basContainer/basContainer.html
@@ -24,12 +24,14 @@ </div> <div class="layui-inline" style="width: 300px"> <div class="layui-input-inline"> <input class="layui-input layui-laydate-range" name="create_time" type="text" placeholder="起始时间 - 终止时间" autocomplete="off" style="width: 300px"> <input class="layui-input layui-laydate-range" name="create_time" type="text" placeholder="起始时间 - 终止时间" autocomplete="off" style="width: 300px"> </div> </div> <div class="layui-inline"> <div class="layui-input-inline"> <input class="layui-input" type="text" name="condition" placeholder="请输入" autocomplete="off"> <input class="layui-input" type="text" name="condition" placeholder="请输入" autocomplete="off"> </div> </div> <div class="layui-inline">  @@ -51,7 +53,7 @@ <div class="layui-btn-container"> <button class="layui-btn layui-btn-sm" id="btn-add" lay-event="addData">新增</button> <button class="layui-btn layui-btn-sm layui-btn-danger" id="btn-delete" lay-event="deleteData">删除</button> <button class="layui-btn layui-btn-primary layui-btn-sm" id="btn-export" lay-event="exportData" style="float: right">导出</button> <button class="layui-btn layui-btn-primary layui-btn-sm" id="btn-init" lay-event="init">初始化</button> </div> </script> @@ -78,7 +80,17 @@ <input class="layui-input" name="barcode" placeholder="请输入容器编码"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">容器类型</label> <div class="layui-input-inline"> <select name="type"> <option style="display: none"></option> <option value="12">料箱</option> <option value="13">笼框</option> <option value="14">托盘</option> </select> </div> </div> </div> </div> <hr class="layui-bg-gray"> @@ -88,5 +100,49 @@ </div> </form> </script> <div id="initContainer" style="margin: auto; display: none"> <div class="layui-form layui-form-pane" style="padding: 25px;"> <div class="layui-form-item"> <div class="layui-inline"> <label class="layui-form-label">删除容器</label> <div class="layui-input-inline" style="width: 100px;"> <input type="checkbox" name="flagInit" lay-skin="switch" value="0" lay-text="删除|保留"> </div> </div> </div> <!-- 排 --> <div class="layui-form-item"> <div class="layui-inline"> <label class="layui-form-label">起止</label> <div class="layui-input-inline" style="width: 100px;"> <input type="text" name="start" autocomplete="off" class="layui-input" lay-verify="required|number"> </div> <div class="layui-form-mid">-</div> <div class="layui-input-inline" style="width: 100px;"> <input type="text" name="end" autocomplete="off" class="layui-input" lay-verify="required|number"> </div> </div> </div> <!-- 容器类型 --> <div class="layui-form-item"> <label class="layui-form-label">容器类型</label> <div class="layui-input-inline"> <select name="type"> <option style="display: none"></option> <option value="12">料箱</option> <option value="13">笼框</option> <option value="14">托盘</option> </select> </div> </div> <div style="text-align: center; margin-top: 20px"> <button class="layui-btn layui-btn-primary" type="button" ew-event="closeDialog">取消</button> <button class="layui-btn layui-btn-normal" id="initDo" lay-submit lay-filter="initDo">确定</button> </div> </div> </div> </html> src/main/webapp/views/basContainer/initContainer.html
New file @@ -0,0 +1,164 @@ <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <title></title> <meta name="renderer" content="webkit"> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"> <link rel="stylesheet" href="../../static/layui/css/layui.css" media="all"> <link rel="stylesheet" href="../../static/css/cool.css" media="all"> <link rel="stylesheet" href="../../static/css/common.css" media="all"> <style> </style> </head> <body> <div class="layui-inline" style="width:31%;margin-top: 20px"> <label class="layui-form-label">库 位 号:</label> <div class="layui-input-inline"> <input id="locNo" class="layui-input" type="text" disabled="disabled"> </div> </div> <!-- 容器初始化 --> <div id="initContainer" style="margin: 20px 0 10px 30px; display: none"> <div class="layui-form layui-form-pane"> <div class="layui-form-item"> <div class="layui-inline"> <label class="layui-form-label">删除库位</label> <div class="layui-input-inline" style="width: 100px;"> <input type="checkbox" name="enable" lay-skin="switch" value="1" lay-text="删除|保留"> </div> </div> </div> <div class="layui-form-item"> <div class="layui-inline"> <label class="layui-form-label"><span class="not-null">*</span>库区名称:</label> <div class="layui-input-inline cool-auto-complete"> <input id="identifying" name="identifying" class="layui-input" type="text" style="display: none"> <input id="identifying$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" onfocus=this.blur()> <div class="cool-auto-complete-window"> <input class="cool-auto-complete-window-input" data-key="basAreasQueryBywhsType" onkeyup="autoLoad(this.getAttribute('data-key'))"> <select class="cool-auto-complete-window-select" data-key="basAreasQueryBywhsTypeSelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple"> </select> </div> </div> </div> </div> <!-- 排 --> <div class="layui-form-item"> <div class="layui-inline"> <label class="layui-form-label">起止排</label> <div class="layui-input-inline" style="width: 100px;"> <input type="text" name="startRow" autocomplete="off" class="layui-input" lay-verify="required|number"> </div> <div class="layui-form-mid">-</div> <div class="layui-input-inline" style="width: 100px;"> <input type="text" name="endRow" autocomplete="off" class="layui-input" lay-verify="required|number"> </div> </div> </div> <!-- 列 --> <div class="layui-form-item"> <div class="layui-inline"> <label class="layui-form-label">起止列</label> <div class="layui-input-inline" style="width: 100px;"> <input type="text" name="startBay" autocomplete="off" class="layui-input" lay-verify="required|number"> </div> <div class="layui-form-mid">-</div> <div class="layui-input-inline" style="width: 100px;"> <input type="text" name="endBay" autocomplete="off" class="layui-input" lay-verify="required|number"> </div> </div> </div> <!-- 层 --> <div class="layui-form-item"> <div class="layui-inline"> <label class="layui-form-label">起止层</label> <div class="layui-input-inline" style="width: 100px;"> <input type="text" name="startLev" autocomplete="off" class="layui-input" lay-verify="required|number"> </div> <div class="layui-form-mid">-</div> <div class="layui-input-inline" style="width: 100px;"> <input type="text" name="endLev" autocomplete="off" class="layui-input" lay-verify="required|number"> </div> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">堆垛机数量</label> <div class="layui-input-inline"> <input type="text" name="crnAmount" lay-verify="required|number" autocomplete="off" class="layui-input"> </div> </div> <div class="layui-form-item"> <div class="layui-inline"> <label class="layui-form-label">起始堆垛机</label> <div class="layui-input-inline"> <input type="text" name="staCrn" autocomplete="off" class="layui-input" lay-verify="number"> </div> </div> </div> <!-- 库位类型 --> <div class="layui-form-item"> <label class="layui-form-label">高低类型</label> <div class="layui-input-inline"> <select name="locType1"> <option style="display: none"></option> <option value="0">未知</option> <option value="1">低库位</option> <option value="2">高库位</option> </select> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">宽窄类型</label> <div class="layui-input-inline"> <select name="locType2"> <option style="display: none"></option> <option value="0">未知</option> <option value="1">窄库位</option> <option value="2">宽库位</option> </select> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">轻重类型</label> <div class="layui-input-inline"> <select name="locType3"> <option style="display: none"></option> <option value="0">未知</option> <option value="1">轻库位</option> <option value="2">重库位</option> </select> </div> </div> <div style="text-align: center; margin-top: 20px"> <button class="layui-btn layui-btn-radius layui-btn-normal" id="initDo" lay-submit lay-filter="initDo"> 确定 </button> </div> </div> </div> </body> <script type="text/javascript" src="../../static/js/jquery/jquery-3.3.1.min.js"></script> <script type="text/javascript" src="../../static/layui/layui.js" charset="utf-8"></script> <script type="text/javascript" src="../../static/js/common.js" charset="utf-8"></script> <script type="text/javascript" src="../../static/js/cool.js" charset="utf-8"></script> <script type="text/javascript" src="../../static/js/locMast/locMast.js" charset="utf-8"></script> <script type="text/javascript"> </script> </html> src/main/webapp/views/mat/mat.html
@@ -127,6 +127,7 @@ <div class="layui-btn-container"> <button class="layui-btn layui-btn-sm" id="btn-print-batch" lay-event="btnPrintBatch">批量打印</button> <button class="layui-btn layui-btn-sm layui-btn-normal" id="btn-add" lay-event="addData">新增</button> <button class="layui-btn layui-btn-sm" id="btn-print-batch" lay-event="batchModifties">批量修改</button> <button class="layui-btn layui-btn-sm layui-btn-danger" id="btn-delete" lay-event="deleteData">删除</button> <!-- 商品/物料 数据中心 --> <div class="dropdown-menu" style="float: right"> @@ -181,46 +182,44 @@ <input name="updateTime$" type="hidden"> <input name="updateBy" type="hidden"> <div class="layui-row"> <div class="layui-col-md6"> <div class="layui-form-item"> <label class="layui-form-label">分类</label> <div class="layui-input-block"> <div id="tagSel" class="ew-xmselect-tree"></div> </div> </div> <div class="layui-form-item"> <label class="layui-form-label layui-form-required">商品名称</label> <div class="layui-input-block"> <input name="maktx" placeholder="请输入商品名称" class="layui-input" lay-vertype="tips" lay-verify="required" required=""> </div> </div> <div class="layui-form-item"> <label class="layui-form-label layui-form-required">组托上限</label> <div class="layui-input-block"> <input name="upQty" placeholder="请输入最大组托数量" class="layui-input" lay-vertype="tips" lay-verify="required" required=""> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">配置</label> <div class="layui-input-block"> <input name="specs" placeholder="请输入配置" class="layui-input"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">单箱净重</label> <div class="layui-input-block"> <input name="weight" placeholder="请输入单箱净重格" class="layui-input"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">单箱体积</label> <div class="layui-input-block"> <input name="volume" placeholder="请输入单箱体积" class="layui-input"> </div> </div> </div> <div class="layui-col-md6"> <div class="layui-form-item"> <label class="layui-form-label layui-form-required">商品编号</label> @@ -228,35 +227,30 @@ <input id="matnr" name="matnr" placeholder="请输入商品编号" class="layui-input" lay-vertype="tips" lay-verify="required" required=""> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">规格</label> <div class="layui-input-block"> <input name="specs" placeholder="请输入代码" class="layui-input"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">备注</label> <div class="layui-input-block"> <input name="memo" placeholder="请输入备注" class="layui-input"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">单箱毛重</label> <div class="layui-input-block"> <input name="manLength" placeholder="请输入单箱毛重" class="layui-input"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">单箱体积</label> <div class="layui-input-block"> <input name="threeCode" placeholder="请输入箱子尺寸" class="layui-input"> </div> </div> </div> </div> <hr class="layui-bg-gray"> @@ -350,6 +344,38 @@ </div> </div> <div id="batchModifties" style="display: none;padding: 40px"> <form class="layui-form"> <input name="id" type="hidden"> <div class="layui-row"> <div class="layui-col-md8"> <div class="layui-form-item"> <label class="layui-form-label">库位类型</label> <div class="layui-input-block"> <select name="type"> <option style="display: none"></option> <option value="12">料箱</option> <option value="13">笼框</option> <option value="14">托盘</option> </select> </div> </div> <div class="layui-form-item"> <label class="layui-form-label layui-form-required">组托上限</label> <div class="layui-input-block"> <input name="upQty" placeholder="请输入最大组托数量" class="layui-input" lay-vertype="tips" lay-verify="required" required=""> </div> </div> </div> </div> <hr class="layui-bg-gray"> <div class="layui-form-item text-right"> <button class="layui-btn" lay-filter="batchModify" lay-submit="batchModify">保存</button> <button class="layui-btn layui-btn-primary" type="button" ew-event="closeDialog">取消</button> </div> </form> </div> <div id="box" style="display: block"></div> <!-- 初始化打印模板的条形码 -->