src/main/java/com/zy/asrs/controller/LocDetlController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/asrs/entity/param/AbnormalLocDetlParam.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/asrs/mapper/LocDetlMapper.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/asrs/service/LocDetlService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/asrs/service/impl/LocDetlServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/resources/mapper/LocDetlMapper.xml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/webapp/static/js/locDetlGroup/locDetlGroup.js | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/webapp/views/locDetlGroup/locDetlGroup.html | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/webapp/views/locDetlGroup/locDetl_detail.html | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/main/java/com/zy/asrs/controller/LocDetlController.java
@@ -13,11 +13,10 @@ import com.core.common.DateUtils; import com.core.common.R; import com.zy.asrs.entity.LocDetl; import com.zy.asrs.entity.ManLocDetl; import com.zy.asrs.entity.Mat; import com.zy.asrs.entity.param.AbnormalLocDetlParam; import com.zy.asrs.mapper.LocDetlMapper; import com.zy.asrs.service.LocDetlService; import com.zy.asrs.service.ManLocDetlService; import com.zy.asrs.service.MatService; import com.zy.common.web.BaseController; import org.springframework.beans.factory.annotation.Autowired; @@ -45,6 +44,77 @@ return R.error(); } return R.ok(); } @RequestMapping(value = "/locDetl/groupLocList/auth") @ManagerAuth public R groupLocList(@RequestParam(defaultValue = "1") Integer curr, @RequestParam(defaultValue = "10") Integer limit, @RequestParam(required = false) String orderByField, @RequestParam(required = false) String orderByType, @RequestParam(required = false) String condition, @RequestParam Map<String, Object> param) { // List<LocDetl> result = new ArrayList<>(); List<AbnormalLocDetlParam> result = new ArrayList<>(); // excludeTrash(param); param.put("curr", curr); param.put("limit", limit); Page<LocDetl> groupLocDetl = locDetlService.getStockStatis2(toPage(1, 10000, param, LocDetl.class)); // List<LocDetl> groupLocDetl = locDetlService.selectGroupPage(param, curr, limit); for (LocDetl locDetl : groupLocDetl.getRecords()) { AbnormalLocDetlParam abnormalLocDetlParam = new AbnormalLocDetlParam(); Mat mat = matService.selectOne(new EntityWrapper<Mat>() .eq("matnr", locDetl.getMatnr())); if (Cools.isEmpty(mat)) { continue; } if (!Cools.isEmpty(mat.getStoreMax()) || !Cools.isEmpty(mat.getStoreMin())) { abnormalLocDetlParam.setStoreMax(mat.getStoreMax()); abnormalLocDetlParam.setStoreMaxDate(mat.getStoreMaxDate()); abnormalLocDetlParam.setStoreMin(mat.getStoreMin()); abnormalLocDetlParam.setAnfme(locDetl.getAnfme()); abnormalLocDetlParam.setMaktx(mat.getMaktx()); abnormalLocDetlParam.setMatnr(mat.getMatnr()); abnormalLocDetlParam.setSpecs(mat.getSpecs()); abnormalLocDetlParam.setBatch(locDetl.getBatch()); // SimpleDateFormat simple = new SimpleDateFormat("yyyyMMdd"); // Date maxDate = simple.parse(locDetl.getBatch()); // long time = maxDate.getTime(); // Date now = new Date(); // long time1 = now.getTime(); // abnormalLocDetlParam.setNowTime((int) ((time1 - time) / (1000 * 60 * 60 * 24))); if (!Cools.isEmpty(mat.getStoreMax()) && locDetl.getAnfme() > mat.getStoreMax()) { result.add(abnormalLocDetlParam); } else if (!Cools.isEmpty(mat.getStoreMin()) && locDetl.getAnfme() < mat.getStoreMin()) { result.add(abnormalLocDetlParam); } } } Page<AbnormalLocDetlParam> locDetlPage = new Page<>(); locDetlPage.setRecords(paging(result, curr, limit)); locDetlPage.setTotal(result.size()); locDetlPage.setCurrent(curr); locDetlPage.setSize(limit); return R.ok(locDetlPage); } private List<AbnormalLocDetlParam> paging(List<AbnormalLocDetlParam> result, Integer curr, Integer limit) { List<AbnormalLocDetlParam> pageRecord = new ArrayList<AbnormalLocDetlParam>(); int minIndex = (curr - 1) * limit; int maxIndex = (curr * limit) - 1; if (result.size() < maxIndex) { maxIndex = result.size(); } for (int i = minIndex; i < maxIndex; i++) { pageRecord.add(result.get(i)); } return pageRecord; } @RequestMapping(value = "/locDetl/{id}/auth") @@ -187,18 +257,52 @@ if (chooseRow.length() == 1) { row = "0" + chooseRow; map.remove("row"); }else { } else { row = chooseRow; map.remove("row"); } } convert(map, wrapper); if (!row.equals("")){ if (!row.equals("")) { wrapper.and() .where("loc_no like '" +row +"%'"); .where("loc_no like '" + row + "%'"); } List<LocDetl> list = locDetlService.selectList(wrapper); return R.ok(exportSupport(list, fields)); List<AbnormalLocDetlParam> result = new ArrayList<>(); Page<LocDetl> groupLocDetl = locDetlService.getStockStatis2(toPage(1, 10000, param, LocDetl.class)); for (LocDetl locDetl : groupLocDetl.getRecords()) { AbnormalLocDetlParam abnormalLocDetlParam = new AbnormalLocDetlParam(); Mat mat = matService.selectOne(new EntityWrapper<Mat>() .eq("matnr", locDetl.getMatnr())); if (Cools.isEmpty(mat)) { continue; } if (!Cools.isEmpty(mat .getStoreMax()) || !Cools.isEmpty(mat.getStoreMin())) { abnormalLocDetlParam.setStoreMax(mat.getStoreMax()); abnormalLocDetlParam.setStoreMaxDate(mat.getStoreMaxDate()); abnormalLocDetlParam.setStoreMin(mat.getStoreMin()); abnormalLocDetlParam.setAnfme(locDetl.getAnfme()); abnormalLocDetlParam.setMaktx(mat.getMaktx()); abnormalLocDetlParam.setMatnr(mat.getMatnr()); abnormalLocDetlParam.setSpecs(mat.getSpecs()); abnormalLocDetlParam.setBatch(locDetl.getBatch()); // SimpleDateFormat simple = new SimpleDateFormat("yyyyMMdd"); // Date maxDate = simple.parse(locDetl.getBatch()); // long time = maxDate.getTime(); // Date now = new Date(); // long time1 = now.getTime(); // abnormalLocDetlParam.setNowTime((int) ((time1 - time) / (1000 * 60 * 60 * 24))); if (!Cools.isEmpty(mat.getStoreMax()) && locDetl.getAnfme() > mat.getStoreMax()) { result.add(abnormalLocDetlParam); } else if (!Cools.isEmpty(mat.getStoreMin()) && locDetl.getAnfme() < mat.getStoreMin()) { result.add(abnormalLocDetlParam); } } } return R.ok(exportSupport(result, fields)); } @RequestMapping(value = "/locDetlQuery/auth") src/main/java/com/zy/asrs/entity/param/AbnormalLocDetlParam.java
New file @@ -0,0 +1,282 @@ package com.zy.asrs.entity.param; import com.alibaba.excel.annotation.ExcelProperty; import com.baomidou.mybatisplus.annotations.TableField; import com.core.common.Cools; import com.core.common.SpringUtils; import com.zy.asrs.entity.LocMast; import com.zy.asrs.service.LocMastService; import com.zy.common.utils.Synchro; import com.zy.system.entity.User; import com.zy.system.service.UserService; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.text.SimpleDateFormat; import java.util.Date; @Data public class AbnormalLocDetlParam { private static final long serialVersionUID = 1L; @ApiModelProperty(value = "库位号") @TableField("loc_no") private String locNo; @ApiModelProperty(value = "托盘条码") private String zpallet; @ApiModelProperty(value = "数量") @ExcelProperty("数量") private Double anfme; @ApiModelProperty(value = "商品编号") @ExcelProperty("商品编号") private String matnr; @ApiModelProperty(value = "商品名称") @ExcelProperty("商品名称") private String maktx; @ApiModelProperty(value = "序列码") @ExcelProperty("序列码") private String batch; @ApiModelProperty(value = "单据编号") @ExcelProperty("单据编号") @TableField("order_no") private String orderNo; @ApiModelProperty(value = "c") @ExcelProperty("规格") private String specs; @ApiModelProperty(value = "型号") private String model; @ApiModelProperty(value = "颜色") private String color; @ApiModelProperty(value = "品牌") private String brand; @ApiModelProperty(value = "单位") private String unit; @ApiModelProperty(value = "单价") private Double price; @ApiModelProperty(value = "sku") private String sku; @ApiModelProperty(value = "单位量") private Double units; @ApiModelProperty(value = "条码") private String barcode; @ApiModelProperty(value = "产地") private String origin; @ApiModelProperty(value = "厂家") private String manu; @ApiModelProperty(value = "生产日期") @TableField("manu_date") private String manuDate; @ApiModelProperty(value = "品项数") @TableField("item_num") private String itemNum; @ApiModelProperty(value = "安全库存量") @TableField("safe_qty") private Double safeQty; @ApiModelProperty(value = "重量") private Double weight; @ApiModelProperty(value = "长度") private Double length; @ApiModelProperty(value = "体积") private Double volume; @ApiModelProperty(value = "三方编码") @TableField("three_code") private String threeCode; @ApiModelProperty(value = "供应商") private String supp; @ApiModelProperty(value = "供应商编码") @TableField("supp_code") private String suppCode; @ApiModelProperty(value = "是否批次 1: 是 0: 否 ") @TableField("be_batch") private Integer beBatch; @ApiModelProperty(value = "保质期") @TableField("dead_time") private String deadTime; @ApiModelProperty(value = "预警天数") @TableField("dead_warn") private Integer deadWarn; @ApiModelProperty(value = "制购 1: 制造 2: 采购 3: 外协 ") private Integer source; @ApiModelProperty(value = "要求检验 1: 是 0: 否 ") private Integer inspect; @ApiModelProperty(value = "危险品 1: 是 0: 否 ") private Integer danger; @ApiModelProperty(value = "修改人员") @TableField("modi_user") private Long modiUser; @ApiModelProperty(value = "修改时间") @TableField("modi_time") private Date modiTime; @ApiModelProperty(value = "创建者") @TableField("appe_user") private Long appeUser; @ApiModelProperty(value = "添加时间") @TableField("appe_time") private Date appeTime; @ApiModelProperty(value = "备注") private String memo; /** * 库存预警数量上限 */ private Double storeMax; /** * 库存预警数量下限 */ private Double storeMin; /** * 库龄预警上限 */ private Integer storeMaxDate; /** * 实际在库天数 */ private Integer nowTime; public String getLocNo$() { LocMastService service = SpringUtils.getBean(LocMastService.class); LocMast locMast = service.selectById(this.locNo); if (!Cools.isEmpty(locMast)) { return String.valueOf(locMast.getLocNo()); } return null; } public String getBeBatch$() { if (null == this.beBatch) { return null; } switch (this.beBatch) { case 1: return "是"; case 0: return "否"; default: return String.valueOf(this.beBatch); } } public String getSource$() { if (null == this.source) { return null; } switch (this.source) { case 1: return "制造"; case 2: return "采购"; case 3: return "外协"; default: return String.valueOf(this.source); } } public String getInspect$() { if (null == this.inspect) { return null; } switch (this.inspect) { case 1: return "是"; case 0: return "否"; default: return String.valueOf(this.inspect); } } public String getDanger$() { if (null == this.danger) { return null; } switch (this.danger) { case 1: return "是"; case 0: return "否"; default: return String.valueOf(this.danger); } } public String getModiUser$() { UserService service = SpringUtils.getBean(UserService.class); User user = service.selectById(this.modiUser); if (!Cools.isEmpty(user)) { return String.valueOf(user.getUsername()); } return null; } public String getModiTime$() { if (Cools.isEmpty(this.modiTime)) { return ""; } return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.modiTime); } public String getAppeUser$() { UserService service = SpringUtils.getBean(UserService.class); User user = service.selectById(this.appeUser); if (!Cools.isEmpty(user)) { return String.valueOf(user.getUsername()); } return null; } public String getAppeTime$() { if (Cools.isEmpty(this.appeTime)) { return ""; } return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.appeTime); } public void sync(Object source) { Synchro.Copy(source, this); } } src/main/java/com/zy/asrs/mapper/LocDetlMapper.java
@@ -43,6 +43,8 @@ Integer getStockStatisCount(Map<String, Object> map); List<LocDetl> getStockStatis2(Map<String, Object> map); List<LocDetl> getStockStatisExcel(); @Select("select sum(a.anfme) as sum from asr_loc_detl a left join asr_loc_mast b on a.loc_no = b.loc_no where b.loc_sts = 'F' and a.matnr = #{matnr}") src/main/java/com/zy/asrs/service/LocDetlService.java
@@ -17,6 +17,8 @@ Page<LocDetl> getStockOut(Page<LocDetl> page); Page<LocDetl> getStockStatis2(Page<LocDetl> page); /** * 修改库存明细数量,如果数量为0,则删除记录 */ src/main/java/com/zy/asrs/service/impl/LocDetlServiceImpl.java
@@ -30,6 +30,13 @@ } @Override public Page<LocDetl> getStockStatis2(Page<LocDetl> page) { page.setRecords(baseMapper.getStockStatis2(page.getCondition())); page.setTotal(baseMapper.getStockStatisCount(page.getCondition())); return page; } @Override public boolean updateAnfme(Double anfme, String locNo, String matnr, String batch) { if (anfme <= 0) { return this.baseMapper.deleteItem(locNo, matnr, batch) > 0; src/main/resources/mapper/LocDetlMapper.xml
@@ -401,5 +401,19 @@ and lm.row1 in (31,32) order by row1 </select> <select id="getStockStatis2" resultType="com.zy.asrs.entity.LocDetl"> select * from ( select ROW_NUMBER() over (order by sum(a.anfme),a.batch desc) as row , a.matnr , a.batch , sum(a.anfme) as anfme from asr_loc_detl a where 1=1 <include refid="stockOutCondition"></include> group by a.matnr,a.batch ) t where t.row between ((#{pageNumber}-1)*#{pageSize}+1) and (#{pageNumber}*#{pageSize}) </select> </mapper> src/main/webapp/static/js/locDetlGroup/locDetlGroup.js
New file @@ -0,0 +1,559 @@ var pageCurr; function getCol() { var cols = [ {field: 'matnr', align: 'center', title: '物料号', sort: true} , {field: 'maktx', align: 'center', title: '物料名称', sort: true} , {field: 'specs', align: 'center', title: '规格'} , {field: 'batch', align: 'center', title: '批号', width: 300, sort: true} , {field: 'storeMax', align: 'center', title: '数量上限', sort: true} , {field: 'storeMin', align: 'center', title: '数量下限', sort: true} // , {field: 'storeMaxDate', align: 'center', title: '库龄上限', sort: true} , {field: 'anfme', align: 'center', title: '实际数量'} // , {field: 'nowTime', align: 'center', title: '实际库龄'} ]; return cols; } layui.use(['table', 'laydate', 'form'], function () { var table = layui.table; var $ = layui.jquery; var layer = layui.layer; var layDate = layui.laydate; var form = layui.form; // 数据渲染 tableIns = table.render({ elem: '#locDetlGroup', headers: {token: localStorage.getItem('token')}, url: baseUrl + '/locDetl/groupLocList/auth', page: true, limit: 20, limits: [20, 30, 50, 100, 200, 500], even: true, toolbar: '#toolbar', cellMinWidth: 50, cols: [getCol()], request: { pageName: 'curr', pageSize: 'limit' }, parseData: function (res) { return { 'code': res.code, 'msg': res.msg, 'count': res.data.total, 'data': res.data.records } }, response: { statusCode: 200 }, done: function (res, curr, count) { if (res.code === 403) { top.location.href = baseUrl + "/"; } pageCurr = curr; limit(); form.on('checkbox(tableCheckbox)', function (data) { var _index = $(data.elem).attr('table-index') || 0; if (data.elem.checked) { res.data[_index][data.value] = 'Y'; } else { res.data[_index][data.value] = 'N'; } }); } }); // 监听排序事件 table.on('sort(locDetlGroup)', function (obj) { var searchData = {}; $.each($('#search-box [name]').serializeArray(), function () { searchData[this.name] = this.value; }); searchData['orderByField'] = obj.field; searchData['orderByType'] = obj.type; tableIns.reload({ where: searchData, page: { curr: 1 }, done: function (res, curr, count) { if (res.code === 403) { top.location.href = baseUrl + "/"; } pageCurr = curr; limit(); } }); }); // 监听头工具栏事件 table.on('toolbar(locDetlGroup)', function (obj) { var checkStatus = table.checkStatus(obj.config.id); switch (obj.event) { case 'addData': layer.open({ type: 2, title: '新增', maxmin: true, area: [top.detailWidth, top.detailHeight], shadeClose: false, content: 'locDetl_detail.html', success: function (layero, index) { layer.getChildFrame('#data-detail-submit-edit', index).hide(); clearFormVal(layer.getChildFrame('#detail', index)); layer.iframeAuto(index); layer.style(index, {top: (($(window).height() - layer.getChildFrame('#data-detail', index).height()) / 3) + "px"}); } }); break; case 'refreshData': tableIns.reload({ page: { curr: pageCurr } }); limit(); break; case 'deleteData': var data = checkStatus.data; if (data.length === 0) { layer.msg('请选择数据'); } else { layer.confirm('确定删除' + (data.length === 1 ? '此' : data.length) + '条数据吗', function () { $.ajax({ url: baseUrl + "/locDetl/delete/auth", headers: {'token': localStorage.getItem('token')}, data: {param: JSON.stringify(data)}, method: 'POST', traditional: true, success: function (res) { if (res.code === 200) { layer.closeAll(); tableReload(false); } else if (res.code === 403) { top.location.href = baseUrl + "/"; } else { layer.msg(res.msg) } } }) }); } break; case 'exportData': layer.confirm('确定导出Excel吗', {shadeClose: true}, function () { var titles = []; var fields = []; obj.config.cols[0].map(function (col) { if (col.type === 'normal' && col.hide === false && col.toolbar == null) { titles.push(col.title); fields.push(col.field); } }); var exportData = {}; $.each($('#search-box [name]').serializeArray(), function () { exportData[this.name] = this.value; }); var param = { 'locDetl': exportData, 'fields': fields }; var loadIndex = layer.msg('正在导出...', {icon: 16, shade: 0.01, time: false}); $.ajax({ url: baseUrl + "/locDetl/export/auth", headers: {'token': localStorage.getItem('token')}, data: JSON.stringify(param), dataType: 'json', contentType: 'application/json;charset=UTF-8', method: 'POST', success: function (res) { layer.close(loadIndex); layer.closeAll(); if (res.code === 200) { table.exportFile(titles, res.data, 'xls'); } else if (res.code === 403) { top.location.href = baseUrl + "/"; } else { layer.msg(res.msg) } } }); }); break; } }); // 监听行工具事件 table.on('tool(locDetlGroup)', function (obj) { var data = obj.data; switch (obj.event) { // 详情 case 'detail': layer.open({ type: 2, title: '详情', maxmin: true, area: [top.detailWidth, top.detailHeight], shadeClose: false, content: 'locDetl_detail.html', success: function (layero, index) { setFormVal(layer.getChildFrame('#detail', index), data, true); top.convertDisabled(layer.getChildFrame('#data-detail :input', index), true); layer.getChildFrame('#data-detail-submit-save,#data-detail-submit-edit,#prompt', index).hide(); layer.iframeAuto(index); layer.style(index, {top: (($(window).height() - layer.getChildFrame('#data-detail', index).height()) / 3) + "px"}); layero.find('iframe')[0].contentWindow.layui.form.render('select'); layero.find('iframe')[0].contentWindow.layui.form.render('checkbox'); } }); break; // 编辑 case 'edit': layer.open({ type: 2, title: '修改', maxmin: true, area: [top.detailWidth, top.detailHeight], shadeClose: false, content: 'locDetl_detail.html', success: function (layero, index) { layer.getChildFrame('#data-detail-submit-save', index).hide(); setFormVal(layer.getChildFrame('#detail', index), data, false); top.convertDisabled(layer.getChildFrame('#data-detail :input', index), false); top.convertDisabled(layer.getChildFrame('#locNo,#matnr', index), true); layer.iframeAuto(index); layer.style(index, {top: (($(window).height() - layer.getChildFrame('#data-detail', index).height()) / 3) + "px"}); layero.find('iframe')[0].contentWindow.layui.form.render('select'); layero.find('iframe')[0].contentWindow.layui.form.render('checkbox'); } }); break; case 'locNo': var param = top.reObject(data).locNo; if (param === undefined) { layer.msg("无数据"); } else { layer.open({ type: 2, title: '库位号详情', maxmin: true, area: [top.detailWidth, top.detailHeight], shadeClose: false, content: '../locMast/locMast_detail.html', success: function (layero, index) { $.ajax({ url: baseUrl + "/locMast/" + param + "/auth", headers: {'token': localStorage.getItem('token')}, method: 'GET', success: function (res) { if (res.code === 200) { setFormVal(layer.getChildFrame('#detail', index), res.data, true); top.convertDisabled(layer.getChildFrame('#data-detail :input', index), true); layer.getChildFrame('#data-detail-submit-save,#data-detail-submit-edit,#prompt', index).hide(); layer.iframeAuto(index); layer.style(index, {top: (($(window).height() - layer.getChildFrame('#data-detail', index).height()) / 3) + "px"}); layero.find('iframe')[0].contentWindow.layui.form.render('select'); layero.find('iframe')[0].contentWindow.layui.form.render('checkbox'); } else if (res.code === 403) { parent.location.href = "/"; } else { layer.msg(res.msg) } } }) } }); } break; case 'modiUser': var param = top.reObject(data).modiUser; if (param === undefined) { layer.msg("无数据"); } else { layer.open({ type: 2, title: '修改人员详情', maxmin: true, area: [top.detailWidth, top.detailHeight], shadeClose: false, content: '../user/user_detail.html', success: function (layero, index) { $.ajax({ url: baseUrl + "/user/" + param + "/auth", headers: {'token': localStorage.getItem('token')}, method: 'GET', success: function (res) { if (res.code === 200) { setFormVal(layer.getChildFrame('#detail', index), res.data, true); top.convertDisabled(layer.getChildFrame('#data-detail :input', index), true); layer.getChildFrame('#data-detail-submit-save,#data-detail-submit-edit,#prompt', index).hide(); layer.iframeAuto(index); layer.style(index, {top: (($(window).height() - layer.getChildFrame('#data-detail', index).height()) / 3) + "px"}); layero.find('iframe')[0].contentWindow.layui.form.render('select'); layero.find('iframe')[0].contentWindow.layui.form.render('checkbox'); } else if (res.code === 403) { parent.location.href = "/"; } else { layer.msg(res.msg) } } }) } }); } break; case 'appeUser': var param = top.reObject(data).appeUser; if (param === undefined) { layer.msg("无数据"); } else { layer.open({ type: 2, title: '创建者详情', maxmin: true, area: [top.detailWidth, top.detailHeight], shadeClose: false, content: '../user/user_detail.html', success: function (layero, index) { $.ajax({ url: baseUrl + "/user/" + param + "/auth", headers: {'token': localStorage.getItem('token')}, method: 'GET', success: function (res) { if (res.code === 200) { setFormVal(layer.getChildFrame('#detail', index), res.data, true); top.convertDisabled(layer.getChildFrame('#data-detail :input', index), true); layer.getChildFrame('#data-detail-submit-save,#data-detail-submit-edit,#prompt', index).hide(); layer.iframeAuto(index); layer.style(index, {top: (($(window).height() - layer.getChildFrame('#data-detail', index).height()) / 3) + "px"}); layero.find('iframe')[0].contentWindow.layui.form.render('select'); layero.find('iframe')[0].contentWindow.layui.form.render('checkbox'); } else if (res.code === 403) { parent.location.href = "/"; } else { layer.msg(res.msg) } } }) } }); } break; } }); // 数据保存动作 form.on('submit(save)', function () { if (banMsg != null) { layer.msg(banMsg); return; } method("add"); }); // 数据修改动作 form.on('submit(edit)', function () { method("update") }); function method(name) { var index = layer.load(1, { shade: [0.5, '#000'] //0.1透明度的背景 }); var data = { // id: $('#id').val(), locNo: $('#locNo').val(), matnr: $('#matnr').val(), lgnum: $('#lgnum').val(), tbnum: $('#tbnum').val(), tbpos: $('#tbpos').val(), zmatid: $('#zmatid').val(), maktx: $('#maktx').val(), werks: $('#werks').val(), anfme: $('#anfme').val(), altme: $('#altme').val(), zpallet: $('#zpallet').val(), bname: $('#bname').val(), memo: $('#memo').val(), modiUser: $('#modiUser').val(), modiTime: top.strToDate($('#modiTime\\$').val()), appeUser: $('#appeUser').val(), appeTime: top.strToDate($('#appeTime\\$').val()), }; $.ajax({ url: baseUrl + "/locDetl/" + name + "/auth", headers: {'token': localStorage.getItem('token')}, data: top.reObject(data), method: 'POST', success: function (res) { if (res.code === 200) { parent.layer.closeAll(); parent.$(".layui-laypage-btn")[0].click(); $("#data-detail :input").each(function () { $(this).val(""); }); } else if (res.code === 403) { top.location.href = baseUrl + "/"; } else { layer.msg(res.msg) } layer.close(index); } }) } // 复选框事件 form.on('checkbox(detailCheckbox)', function (data) { var el = data.elem; if (el.checked) { $(el).val('Y'); } else { $(el).val('N'); } }); // 搜索栏搜索事件 form.on('submit(search)', function (data) { pageCurr = 1; tableReload(false); }); // 搜索栏重置事件 form.on('submit(reset)', function (data) { pageCurr = 1; clearFormVal($('#search-box')); tableReload(false); }); //查看异常数据 form.on('submit(unreason)', function (data) { pageCurr = 1; tableIns.reload({ where: { unreason: true }, page: { curr: pageCurr }, done: function (res, curr, count) { if (res.code === 403) { top.location.href = baseUrl + "/"; } pageCurr = curr; limit(child); } }); }); // 时间选择器 layDate.render({ elem: '#modiTime\\$', type: 'datetime' }); layDate.render({ elem: '#appeTime\\$', type: 'datetime' }); }); // 关闭动作 $(document).on('click', '#data-detail-close', function () { parent.layer.closeAll(); }); function tableReload(child) { var searchData = {}; $.each($('#search-box [name]').serializeArray(), function () { searchData[this.name] = this.value; }); (child ? parent.tableIns : tableIns).reload({ where: searchData, page: { curr: pageCurr }, done: function (res, curr, count) { if (res.code === 403) { top.location.href = baseUrl + "/"; } pageCurr = curr; if (res.data.length === 0 && count !== 0) { tableIns.reload({ where: searchData, page: { curr: pageCurr - 1 } }); pageCurr -= 1; } limit(child); } }); } function setFormVal(el, data, showImg) { for (var val in data) { var find = el.find(":input[id='" + val + "']"); if (find[0] != null) { if (find[0].type === 'checkbox') { if (data[val] === 'Y') { find.attr("checked", "checked"); find.val('Y'); } else { find.remove("checked"); find.val('N'); } continue; } } find.val(data[val]); if (showImg) { var next = find.next(); if (next.get(0)) { if (next.get(0).localName === "img") { find.hide(); next.attr("src", data[val]); next.show(); } } } } } function clearFormVal(el) { $(':input', el) .val('') .removeAttr('checked') .removeAttr('selected'); } function detailScreen(index) { var detail = layer.getChildFrame('#data-detail', index); var height = detail.height() + 60; if (height > ($(window).height() * 0.9)) { height = ($(window).height() * 0.8); } layer.style(index, { // top: (($(window).height()-height)/3)+"px", height: height + 'px' }); } $('body').keydown(function () { if (event.keyCode === 13) { $("#search").click(); } }); src/main/webapp/views/locDetlGroup/locDetlGroup.html
New file @@ -0,0 +1,74 @@ <!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"> </head> <body> <!-- 搜索栏 --> <div id="search-box" class="layui-form layui-card-header"> <div class="layui-inline"> <div class="layui-input-inline"> <input class="layui-input" type="text" name="matnr" placeholder="物料号" autocomplete="off"> </div> </div> <div class="layui-inline"> <div class="layui-input-inline"> <input class="layui-input" type="text" name="maktx" placeholder="物料名称" autocomplete="off"> </div> </div> <div class="layui-inline"> <div class="layui-input-inline"> <input class="layui-input" type="text" name="specs" placeholder="规格" autocomplete="off"> </div> </div> <div class="layui-inline"> <div class="layui-input-inline"> <input class="layui-input" type="text" name="batch" placeholder="批号" autocomplete="off"> </div> </div> <!-- 待添加 --> <div id="data-search-btn" class="layui-btn-container layui-form-item" style="display: inline-block"> <button id="search" class="layui-btn layui-btn-primary layui-btn-radius" lay-submit lay-filter="search">搜索</button> <button id="reset" class="layui-btn layui-btn-primary layui-btn-radius" lay-submit lay-filter="reset">重置</button> <!-- <button id="unreason" class="layui-btn layui-btn-primary layui-btn-radius" lay-submit lay-filter="unreason">查看异常数据</button>--> </div> </div> </div> <!-- 表格 --> <div class="layui-form"> <table class="layui-hide" id="locDetlGroup" lay-filter="locDetlGroup"></table> </div> <script type="text/html" id="toolbar"> <div class="layui-btn-container"> <button class="layui-btn layui-btn-primary layui-btn-sm" id="btn-export" lay-event="exportData" style="margin-top: 10px;display: block">导出</button> </div> </script> <script type="text/html" id="operate"> <a class="layui-btn layui-btn-primary layui-btn-xs" lay-event="detail">详情</a> </script> <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/locDetlGroup/locDetlGroup.js" charset="utf-8"></script> <iframe id="detail-iframe" scrolling="auto" style="display:none;"></iframe> </body> </html> src/main/webapp/views/locDetlGroup/locDetl_detail.html
New file @@ -0,0 +1,168 @@ <!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"> </head> <body> <!-- 详情 --> <div id="data-detail" class="layer_self_wrap"> <form id="detail" class="layui-form"> <!-- <div class="layui-inline" style="display: none"> <label class="layui-form-label"><span class="not-null">*</span>编 号:</label> <div class="layui-input-inline"> <input id="id" class="layui-input" type="text" placeholder="编号"> </div> </div> --> <div class="layui-inline" style="width:31%;"> <label class="layui-form-label"><span class="not-null">*</span>库 位 号:</label> <div class="layui-input-inline cool-auto-complete"> <input id="locNo" class="layui-input" type="text" onkeyup="check(this.id, 'locDetl')" lay-verify="required" style="display: none"> <input id="locNo$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="请输入..." onfocus=this.blur()> <div class="cool-auto-complete-window"> <input class="cool-auto-complete-window-input" data-key="locMastQueryBylocNo" onkeyup="autoLoad(this.getAttribute('data-key'))"> <select class="cool-auto-complete-window-select" data-key="locMastQueryBylocNoSelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple"> </select> </div> </div> </div> <div class="layui-inline" style="width:31%;"> <label class="layui-form-label"><span class="not-null">*</span>物 料:</label> <div class="layui-input-inline"> <input id="matnr" class="layui-input" type="text" onkeyup="check(this.id, 'locDetl')" lay-verify="required" > </div> </div> <div class="layui-inline" style="width:31%;display: none"> <label class="layui-form-label">仓 库 号:</label> <div class="layui-input-inline"> <input id="lgnum" class="layui-input" type="text" > </div> </div> <div class="layui-inline" style="width:31%;display: none"> <label class="layui-form-label" style="font-size: x-small">转储请求编号:</label> <div class="layui-input-inline"> <input id="tbnum" class="layui-input" type="text" lay-verify="number" > </div> </div> <div class="layui-inline" style="width:31%;display: none"> <label class="layui-form-label">行 项 目:</label> <div class="layui-input-inline"> <input id="tbpos" class="layui-input" type="text" lay-verify="number" > </div> </div> <div class="layui-inline" style="width:31%;display: none"> <label class="layui-form-label" style="font-size: x-small">物料标签ID:</label> <div class="layui-input-inline"> <input id="zmatid" class="layui-input" type="text" > </div> </div> <div class="layui-inline" style="width:31%;"> <label class="layui-form-label">物料描述:</label> <div class="layui-input-inline"> <input id="maktx" class="layui-input" type="text"> </div> </div> <div class="layui-inline" style="width:31%;display: none"> <label class="layui-form-label">工 厂:</label> <div class="layui-input-inline"> <input id="werks" class="layui-input" type="text"> </div> </div> <div class="layui-inline" style="width:31%;"> <label class="layui-form-label">数 量:</label> <div class="layui-input-inline"> <input id="anfme" class="layui-input" type="text" lay-verify="number" > </div> </div> <div class="layui-inline" style="width:31%;"> <label class="layui-form-label">单 位:</label> <div class="layui-input-inline"> <input id="altme" class="layui-input" type="text"> </div> </div> <div class="layui-inline" style="width:31%;"> <label class="layui-form-label">托盘条码:</label> <div class="layui-input-inline"> <input id="zpallet" class="layui-input" type="text"> </div> </div> <div class="layui-inline" style="width:31%;display: none"> <label class="layui-form-label">用户ID:</label> <div class="layui-input-inline"> <input id="bname" class="layui-input" type="text"> </div> </div> <div class="layui-inline" style="width:31%;"> <label class="layui-form-label">备 注:</label> <div class="layui-input-inline"> <input id="memo" class="layui-input" type="text"> </div> </div> <div class="layui-inline" style="width:31%;display: none"> <label class="layui-form-label">修改人员:</label> <div class="layui-input-inline cool-auto-complete"> <input id="modiUser" class="layui-input" type="text" lay-verify="number" style="display: none"> <input id="modiUser$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="请输入..." onfocus=this.blur()> <div class="cool-auto-complete-window"> <input class="cool-auto-complete-window-input" data-key="userQueryBymodiUser" onkeyup="autoLoad(this.getAttribute('data-key'))"> <select class="cool-auto-complete-window-select" data-key="userQueryBymodiUserSelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple"> </select> </div> </div> </div> <div class="layui-inline" style="width:31%;display: none"> <label class="layui-form-label">修改时间:</label> <div class="layui-input-inline"> <input id="modiTime$" class="layui-input" type="text" autocomplete="off"> </div> </div> <div class="layui-inline" style="width:31%;display: none"> <label class="layui-form-label">创 建 者:</label> <div class="layui-input-inline cool-auto-complete"> <input id="appeUser" class="layui-input" type="text" lay-verify="number" style="display: none"> <input id="appeUser$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="请输入..." onfocus=this.blur()> <div class="cool-auto-complete-window"> <input class="cool-auto-complete-window-input" data-key="userQueryByappeUser" onkeyup="autoLoad(this.getAttribute('data-key'))"> <select class="cool-auto-complete-window-select" data-key="userQueryByappeUserSelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple"> </select> </div> </div> </div> <div class="layui-inline" style="width:31%;display: none"> <label class="layui-form-label">添加时间:</label> <div class="layui-input-inline"> <input id="appeTime$" class="layui-input" type="text" autocomplete="off"> </div> </div> <hr class="layui-bg-gray"> <div id="data-detail-btn" class="layui-btn-container layui-form-item"> <div id="data-detail-submit-save" type="button" class="layui-btn layui-btn-normal" lay-submit lay-filter="save">保存</div> <div id="data-detail-submit-edit" type="button" class="layui-btn layui-btn-normal" lay-submit lay-filter="edit">修改</div> <div id="data-detail-close" type="button" class="layui-btn" lay-submit lay-filter="close">关闭</div> </div> <div id="prompt"> 温馨提示:请仔细填写相关信息,<span class="extrude"><span class="not-null">*</span> 为必填选项。</span> </div> </form> </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/locDetl/locDetl.js" charset="utf-8"></script> </html>