| | |
| | | private WrkDetlLogService wrkDetlLogService; |
| | | |
| | | @PostMapping("/pda/OutOrder") |
| | | @ManagerAuth(memo = "获得出库单") |
| | | @ManagerAuth(memo = "获得出库单",value = ManagerAuth.Auth.NONE) |
| | | @Transactional |
| | | public R OutOrder(@RequestParam String orderNo) { |
| | | List<Order> orders=new ArrayList<Order>(); |
| | |
| | | } |
| | | |
| | | @PostMapping("/pda/OutLocNo") |
| | | @ManagerAuth(memo = "获得平库出库的对应库位号") |
| | | @ManagerAuth(memo = "获得平库出库的对应库位号",value = ManagerAuth.Auth.NONE) |
| | | @Transactional |
| | | public R OutLocNo(@RequestParam Long orderId) { |
| | | List<OrderDetl> orderDetls = orderDetlService.selectList(new EntityWrapper<OrderDetl>() |
| | |
| | | } else { |
| | | for (ManLocDetl l : locDetls |
| | | ) { |
| | | String s = l.getLocNo().substring(0, 2); |
| | | if (Integer.parseInt(s) > 8) { |
| | | // String s = l.getLocNo().substring(0, 2); |
| | | // if (Integer.parseInt(s) > 8) { |
| | | list.add(l.getLocNo()); |
| | | } |
| | | // } |
| | | } |
| | | } |
| | | } |
| | |
| | | } |
| | | |
| | | @PostMapping("/pda/OrderDetlContrastLocDetl") |
| | | @ManagerAuth(memo = "获得订单明细对应的库存明细") |
| | | @ManagerAuth(memo = "获得订单明细对应的库存明细",value = ManagerAuth.Auth.NONE) |
| | | @Transactional |
| | | public R OrderDetlContrastLocDetl(@RequestParam Long orderId, @RequestParam String locNo) { |
| | | List<ManLocDetl> locDetlList = new ArrayList<ManLocDetl>(); |
| | |
| | | /** |
| | | * 供应商 |
| | | */ |
| | | @ApiModelProperty(value= "供应商") |
| | | @ApiModelProperty(value= "调拨源库位") |
| | | private String supp; |
| | | |
| | | /** |
| | | * 供应商编码 |
| | | */ |
| | | @ApiModelProperty(value= "供应商编码") |
| | | @ApiModelProperty(value= "调拨目标库位") |
| | | @TableField("supp_code") |
| | | private String suppCode; |
| | | |
| | |
| | | public String getInspect$(){ |
| | | if (null == this.inspect){ return null; } |
| | | switch (this.inspect){ |
| | | case 1: |
| | | return "是"; |
| | | case 0: |
| | | return "否"; |
| | | return "未上报"; |
| | | case 1: |
| | | return "已上报"; |
| | | case 2: |
| | | return "待上报"; |
| | | default: |
| | | return String.valueOf(this.inspect); |
| | | } |
| | |
| | | |
| | | private Double count; |
| | | |
| | | private String barcode; |
| | | |
| | | } |
| | |
| | | manLocDetlMapper.updateAnfme(subtract.doubleValue(), combParam.getLocno(), combMat.getMatnr(), combMat.getBatch()); |
| | | } |
| | | // 记录日志 |
| | | SaasUtils.insertLog(1, combParam.getLocno(), combMat.getMatnr(), combMat.getAnfme(), userId,combMat.getBatch()); |
| | | SaasUtils.insertLog(Cools.isEmpty(combParam.getOrderNo()) ? 1 : 4, combParam.getLocno(), combMat.getMatnr(), combMat.getAnfme(), userId,combMat.getBatch()); |
| | | } catch (Exception e) { |
| | | throw new CoolException("更新库存数据出错" + e.getMessage()); |
| | | } |
| | |
| | | throw new CoolException(locNo + ":库位不存在"); |
| | | } |
| | | if (!Cools.isEmpty(locDetl1)) { |
| | | locDetl1.setAnfme(waitPakin.getAnfme() + waitPakin.getAnfme()); |
| | | locDetl1.setAnfme(locDetl1.getAnfme() + waitPakin.getAnfme()); |
| | | locDetl1.setUpdateBy(userId); |
| | | locDetl1.setModiTime(now); |
| | | manLocDetlService.update(locDetl1, new EntityWrapper<ManLocDetl>().eq("loc_no", locNo).eq("matnr", waitPakin.getMatnr()). |
| | |
| | | null, // 物流单号 |
| | | 1L, // 订单状态 |
| | | 1, // 状态 |
| | | 9527L, // 添加人员 |
| | | null, // 添加人员 |
| | | now, // 添加时间 |
| | | 9527L, // 修改人员 |
| | | now, // 修改时间 |
| | | null, // 修改人员 |
| | | null, // 修改时间 |
| | | null // 备注 |
| | | ); |
| | | |
| | |
| | | List<DetlDto> list = new ArrayList<>(); |
| | | List<DetlDto> orderDetails = param.getOrderDetails(); |
| | | for (DetlDto detail : orderDetails) { |
| | | DetlDto dto = new DetlDto(detail.getMatnr(), detail.getBatch(), detail.getAnfme()); |
| | | DetlDto dto = new DetlDto(detail.getMatnr(), detail.getBatch(), detail.getAnfme(),detail.getSourceLoc(), detail.getStaLoc(),detail.getSku()); |
| | | if (DetlDto.has(list, dto)) { |
| | | DetlDto detlDto = DetlDto.find(list, dto.getMatnr(), dto.getBatch()); |
| | | assert detlDto != null; |
| | |
| | | orderDetl.setOrderId(order.getId()); |
| | | orderDetl.setOrderNo(order.getOrderNo()); |
| | | orderDetl.setSku(detlDto.getSku()); // 单行号,u8明细id,上报需要 |
| | | orderDetl.setCreateBy(9527L); |
| | | orderDetl.setSupp(detlDto.getSourceLoc()); |
| | | orderDetl.setSuppCode(detlDto.getStaLoc()); |
| | | // orderDetl.setCreateBy(9527L); |
| | | orderDetl.setCreateTime(now); |
| | | orderDetl.setUpdateBy(9527L); |
| | | orderDetl.setUpdateTime(now); |
| | | // orderDetl.setUpdateBy(9527L); |
| | | // orderDetl.setUpdateTime(now); |
| | | orderDetl.setStatus(1); |
| | | orderDetl.setQty(0.0D); |
| | | if (!orderDetlService.insert(orderDetl)) { |
| | |
| | | null, // 物流单号 |
| | | 1L, // 订单状态 |
| | | 1, // 状态 |
| | | 9527L, // 添加人员 |
| | | null, // 添加人员 |
| | | now, // 添加时间 |
| | | 9527L, // 修改人员 |
| | | now, // 修改时间 |
| | | null, // 修改人员 |
| | | null, // 修改时间 |
| | | null // 备注 |
| | | ); |
| | | if (!orderService.insert(order)) { |
| | |
| | | List<DetlDto> list = new ArrayList<>(); |
| | | List<DetlDto> orderDetails = param.getOrderDetails(); |
| | | for (DetlDto detail : orderDetails) { |
| | | DetlDto dto = new DetlDto(detail.getMatnr(), detail.getBatch(), detail.getAnfme()); |
| | | DetlDto dto = new DetlDto(detail.getMatnr(), detail.getBatch(), detail.getAnfme(),detail.getSourceLoc(),detail.getStaLoc(),detail.getSku()); |
| | | if (DetlDto.has(list, dto)) { |
| | | DetlDto detlDto = DetlDto.find(list, dto.getMatnr(), dto.getBatch()); |
| | | assert detlDto != null; |
| | |
| | | orderDetl.setOrderId(order.getId()); |
| | | orderDetl.setOrderNo(order.getOrderNo()); |
| | | orderDetl.setSku(detlDto.getSku()); // 单行号,u8明细id,上报需要 |
| | | orderDetl.setCreateBy(9527L); |
| | | orderDetl.setSupp(detlDto.getSourceLoc()); |
| | | orderDetl.setSuppCode(detlDto.getStaLoc()); |
| | | // orderDetl.setCreateBy(9527L); |
| | | orderDetl.setCreateTime(now); |
| | | orderDetl.setUpdateBy(9527L); |
| | | orderDetl.setUpdateTime(now); |
| | | // orderDetl.setUpdateBy(9527L); |
| | | // orderDetl.setUpdateTime(now); |
| | | orderDetl.setStatus(1); |
| | | orderDetl.setQty(0.0D); |
| | | if (!orderDetlService.insert(orderDetl)) { |
| | |
| | | |
| | | import com.baomidou.mybatisplus.mapper.EntityWrapper; |
| | | import com.core.common.Cools; |
| | | import com.core.exception.CoolException; |
| | | import com.zy.asrs.entity.*; |
| | | import com.zy.asrs.service.*; |
| | | import com.zy.asrs.task.AbstractHandler; |
| | | import com.zy.asrs.task.core.ReturnT; |
| | | import com.zy.asrs.utils.SaasUtils; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | import org.springframework.transaction.interceptor.TransactionAspectSupport; |
| | | |
| | | import javax.annotation.Resource; |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | import java.util.Objects; |
| | | |
| | | /** |
| | | * Created by vincent on 2020/7/4 |
| | |
| | | private WaitPakinService waitPakinService; |
| | | @Autowired |
| | | private OrderDetlService orderDetlService; |
| | | |
| | | @Resource |
| | | private OrderService orderService; |
| | | |
| | | @Resource |
| | | private ManLocDetlService manLocDetlService; |
| | | |
| | | @Resource |
| | | private NodeService nodeService; |
| | | |
| | | public ReturnT<String> start(WrkMast wrkMast) { |
| | | // 4.入库完成 |
| | |
| | | // wrkMast.getWrkNo(), wrkMast.getLocNo()); |
| | | TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); |
| | | return FAIL.setMsg("全板入库 ===>> 更新订单完成数量失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]"); |
| | | } else { |
| | | // 插入调拨入库单对应线边仓出库记录 |
| | | Order order = orderService.selectByNo(orderDetl.getOrderNo()); |
| | | if (order.getDocType$().equals("调拨入库单")) { |
| | | String locNo = orderDetl.getSupp(); |
| | | ManLocDetl locDetl2 = manLocDetlService.selectOne(new EntityWrapper<ManLocDetl>().eq("loc_no", locNo).eq("matnr", wrkDetl.getMatnr()).eq("batch", wrkDetl.getBatch())); |
| | | if (locDetl2 == null) { // 线边库无此库存 |
| | | log.warn("调拨入库单对应线边库库存无:{locNo:{},matnr:{},batch:{}}", locNo, wrkDetl.getMatnr(), wrkDetl.getBatch()); |
| | | } else if (locDetl2.getAnfme() < wrkDetl.getAnfme()) { // 线边库此库存不够 |
| | | manLocDetlService.delete(new EntityWrapper<ManLocDetl>().eq("loc_no", locNo).eq("matnr", wrkDetl.getMatnr()).eq("batch", wrkDetl.getBatch())); |
| | | log.warn("调拨入库单对应线边库库存不足:{locNo:{},matnr:{},batch:{},locAnfme:{},wrkAnfme:{}}", locNo, wrkDetl.getMatnr(), wrkDetl.getBatch(), locDetl2.getAnfme(), wrkDetl.getAnfme()); |
| | | } else if (Objects.equals(locDetl2.getAnfme(), wrkDetl.getAnfme())) { // 删除该物料线边库库存数据 |
| | | manLocDetlService.delete(new EntityWrapper<ManLocDetl>().eq("loc_no", locNo).eq("matnr", wrkDetl.getMatnr()).eq("batch", wrkDetl.getBatch())); |
| | | } else { // 更新该物料线边库库存 |
| | | locDetl2.setAnfme(locDetl2.getAnfme() - wrkDetl.getAnfme()); |
| | | locDetl2.setUpdateBy(wrkDetl.getAppeUser()); |
| | | locDetl2.setModiTime(new Date()); |
| | | manLocDetlService.update(locDetl2, new EntityWrapper<ManLocDetl>().eq("loc_no", locNo).eq("matnr", wrkDetl.getMatnr()).eq("batch", wrkDetl.getBatch())); |
| | | } |
| | | // 记录日志 |
| | | SaasUtils.insertLog(3, locNo, wrkDetl.getMatnr(), wrkDetl.getAnfme(), wrkDetl.getAppeUser(), wrkDetl.getBatch()); |
| | | } |
| | | } |
| | | } |
| | | } catch (Exception ignore){} |
| | |
| | | // wrkMast.getWrkNo(), wrkMast.getLocNo()); |
| | | TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); |
| | | return FAIL.setMsg("全板出库 ===>> 更新订单完成数量失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getSourceLocNo() + "]"); |
| | | } else { // 插入调拨出库单对应线边仓入库记录 |
| | | Order order = orderService.selectByNo(orderDetl.getOrderNo()); |
| | | if(order.getDocType$().equals("调拨出库单")) { |
| | | |
| | | String locNo = orderDetl.getSuppCode(); // 线边仓 |
| | | |
| | | Node node = nodeService.selectByUuid(locNo); |
| | | if (Cools.isEmpty(node)) { |
| | | throw new CoolException(locNo + ":库位不存在"); |
| | | } |
| | | ManLocDetl locDetl1 = manLocDetlService.selectOne(new EntityWrapper<ManLocDetl>().eq("loc_no", locNo).eq("matnr", wrkDetl.getMatnr()). |
| | | eq("batch", wrkDetl.getBatch())); |
| | | if (!Cools.isEmpty(locDetl1)) { |
| | | locDetl1.setAnfme(locDetl1.getAnfme() + wrkDetl.getAnfme()); |
| | | locDetl1.setModiTime(now); |
| | | manLocDetlService.update(locDetl1, new EntityWrapper<ManLocDetl>().eq("loc_no", locNo).eq("matnr", wrkDetl.getMatnr()). |
| | | eq("batch", wrkDetl.getBatch())); |
| | | } else { |
| | | ManLocDetl manLocDetl = new ManLocDetl(); |
| | | manLocDetl.setLocNo(locNo); |
| | | // manLocDetl.setBarcode(barcode); |
| | | // manLocDetl.setZpallet(barcode); |
| | | manLocDetl.setNodeId(node.getId()); |
| | | manLocDetl.setMaktx(wrkDetl.getMaktx()); |
| | | manLocDetl.setMatnr(wrkDetl.getMatnr()); |
| | | manLocDetl.setSpecs(wrkDetl.getSpecs()); |
| | | manLocDetl.setBatch(Cools.isEmpty(wrkDetl.getBatch()) ? "" : wrkDetl.getBatch()); |
| | | manLocDetl.setAnfme(wrkDetl.getAnfme()); |
| | | manLocDetl.setCreateBy(wrkDetl.getAppeUser()); |
| | | manLocDetl.setCreateTime(now); |
| | | if (!manLocDetlService.insert(manLocDetl)) { |
| | | log.error("库存更新时插入线边库明细失败"); |
| | | throw new CoolException("库存更新时插入线边库明细失败!"); |
| | | } |
| | | |
| | | node.setUpdateBy(wrkDetl.getAppeUser()); |
| | | node.setUpdateTime(now); |
| | | nodeService.updateById(node); |
| | | } |
| | | |
| | | // 记录日志 |
| | | SaasUtils.insertLog(2, locNo, wrkDetl.getMatnr(), wrkDetl.getAnfme(), wrkDetl.getAppeUser(),wrkDetl.getBatch()); |
| | | } |
| | | } |
| | | } |
| | | } catch (Exception ignore){} |
| | |
| | | |
| | | private Double anfme; |
| | | |
| | | // 调拨源库位 |
| | | private String sourceLoc; |
| | | |
| | | // 调拨目标库位 |
| | | private String staLoc; |
| | | |
| | | /** |
| | | * 单行号,u8明细id |
| | | */ |
| | |
| | | this.anfme = anfme; |
| | | } |
| | | |
| | | public DetlDto(String matnr, String batch, Double anfme,String sourceLoc,String staLoc,String sku) { |
| | | this.matnr = matnr; |
| | | this.batch = batch; |
| | | this.anfme = anfme; |
| | | this.sourceLoc = sourceLoc; |
| | | this.staLoc = staLoc; |
| | | this.sku = sku; |
| | | } |
| | | |
| | | public DetlDto(String orderNo, String matnr, String batch, Double anfme) { |
| | | this.orderNo = orderNo; |
| | | this.matnr = matnr; |
| | |
| | | import com.baomidou.mybatisplus.annotations.TableName; |
| | | import com.baomidou.mybatisplus.enums.IdType; |
| | | import com.core.common.Cools; |
| | | import com.core.common.SpringUtils; |
| | | import com.zy.system.service.UserService; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | import org.springframework.format.annotation.DateTimeFormat; |
| | |
| | | private Long id; |
| | | |
| | | /** |
| | | * {0:入库,1:出库} |
| | | * {0:入库,1:出库,2.调拨入,3.调拨出,4.领料出} |
| | | */ |
| | | @ApiModelProperty(value= "{0:入库,1:出库}") |
| | | private Integer type; |
| | |
| | | return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.ioTime); |
| | | } |
| | | |
| | | public String getType$(){ |
| | | if (this.type ==0) { |
| | | return "入库"; |
| | | } else if (this.type == 1) { |
| | | return "出库"; |
| | | } else if (this.type == 2) { |
| | | return "库位移转"; |
| | | } else if (this.type == 3) { |
| | | return "库存调整"; |
| | | }else { |
| | | return ""; |
| | | /** |
| | | * {0:入库,1:出库,2.调拨入,3.调拨出,4.领料出} |
| | | */ |
| | | public String getType$() { |
| | | switch (this.type) { |
| | | case 0: |
| | | return "入库"; |
| | | case 1: |
| | | return "出库"; |
| | | case 2: |
| | | return "调拨入"; |
| | | case 3: |
| | | return "调拨出"; |
| | | case 4: |
| | | return "领料出"; |
| | | default: |
| | | return ""; |
| | | } |
| | | } |
| | | |
| | | public String getCreateBy$(){ |
| | | UserService service = SpringUtils.getBean(UserService.class); |
| | | User user = service.selectById(this.createBy); |
| | | if (!Cools.isEmpty(user)){ |
| | | return String.valueOf(user.getUsername()); |
| | | } |
| | | return null; |
| | | } |
| | | |
| | | |
| | |
| | | ,{field: 'price', align: 'center',title: '单价', hide: true} |
| | | ,{field: 'sku', align: 'center',title: 'sku', hide: true} |
| | | ,{field: 'units', align: 'center',title: '单位量', hide: true} |
| | | ,{field: 'barcode', align: 'center',title: '条码', hide: true} |
| | | ,{field: 'barcode', align: 'center',title: '条码', edit:'text'} |
| | | ,{field: 'origin', align: 'center',title: '产地', hide: true} |
| | | ,{field: 'manu', align: 'center',title: '厂家', hide: true} |
| | | ,{field: 'manuDate', align: 'center',title: '生产日期', hide: true} |
| | |
| | | |
| | | // 页面修改 |
| | | table.on('edit(chooseData)', function (obj) { |
| | | updateMatCodeData(obj.data.matnr, Number(obj.value)); |
| | | updateMatCodeData(obj.data.matnr, obj.field, obj.value); |
| | | }); |
| | | |
| | | // 监听头工具栏事件 |
| | |
| | | } |
| | | } |
| | | |
| | | function updateMatCodeData(matnr, count) { |
| | | if (isNaN(count)) { |
| | | layer.msg("请输入数字"); |
| | | } else { |
| | | if (count > 0) { |
| | | for (var i=0;i<matCodeData.length;i++){ |
| | | if (matCodeData[i]["matnr"] === matnr){ |
| | | matCodeData[i]["count"] = count; |
| | | } |
| | | } |
| | | } else { |
| | | function updateMatCodeData(matnr, count, value) { |
| | | if (field === 'count') { |
| | | if (isNaN(value)) { |
| | | layer.msg("请输入数字"); |
| | | return; |
| | | } else if (value <= 0) { |
| | | layer.msg("数量必须大于零"); |
| | | return; |
| | | } |
| | | } |
| | | |
| | | // ✅ 遍历数组更新对应字段 |
| | | for (var i = 0; i < matCodeData.length; i++) { |
| | | if (matCodeData[i]["matnr"] === matnr) { |
| | | matCodeData[i][field] = value; |
| | | } |
| | | } |
| | | |
| | |
| | | layer.open({ |
| | | type: 1, |
| | | title: false, |
| | | area: '820px', |
| | | area: '1000px', |
| | | offset: [top + 'px', (left - 530 + $a.outerWidth()) + 'px'], |
| | | shade: .01, |
| | | shadeClose: true, |
| | |
| | | {field: 'anfme', title: '数量'}, |
| | | {field: 'workQty', title: '作业数量'}, |
| | | {field: 'qty', title: '完成数量', style: 'font-weight: bold'}, |
| | | {field: 'supp', title: '源库位'}, |
| | | {field: 'suppCode', title: '目标库位'}, |
| | | {field: 'inspect$', title: '是否上报'} |
| | | // {field: 'unit', title: '单位'}, |
| | | // { |
| | | // field: 'createTime$', title: '创建时间', sort: true, templet: function (d) { |
| | |
| | | // }, |
| | | // {field: 'inQty', title: '已入库量'}, |
| | | // {field: 'color', title: '颜色'}, |
| | | {field: 'specs', title: '规格'} |
| | | // {field: 'specs', title: '规格'} |
| | | ]], |
| | | request: { |
| | | pageName: 'curr', |
| | |
| | | {field: 'maktx', title: '商品名称', width: 200}, |
| | | {field: 'batch', title: '批号', edit: true}, |
| | | {field: 'specs', title: '规格'}, |
| | | {field: 'supp', title: '源库位', edit: true}, |
| | | {field: 'suppCode', title: '目标库位', edit: true}, |
| | | {field: 'anfme', title: '数量(修改)', style: 'color: blue;font-weight: bold', edit: true, minWidth: 110, width: 110}, |
| | | {field: 'workQty', title: '作业数量', minWidth: 100, width: 100}, |
| | | // {field: 'unit', title: '单位', width: 80}, |
| | |
| | | ,{field: 'matnr', align: 'center',title: '物料'} |
| | | ,{field: 'batch', align: 'center',title: '批次'} |
| | | ,{field: 'anfme', align: 'center',title: '数量'} |
| | | ,{field: 'createBy', align: 'center',title: '操作账号'} |
| | | ,{field: 'createBy$', align: 'center',title: '操作账号'} |
| | | ,{field: 'ioTime$', align: 'center',title: '操作时间'} |
| | | // ,{fixed: 'right', title:'操作', align: 'center', toolbar: '#operate', width:120} |
| | | ]], |
| | |
| | | } |
| | | layDateRender(); |
| | | |
| | | // 时间选择器 |
| | | layDate.render({ |
| | | elem: '#io_time\\$', |
| | | type: 'datetime' |
| | | }); |
| | | |
| | | layDate.render({ |
| | | elem: '.layui-laydate-range' |
| | | ,type: 'datetime' |
| | | ,range: true |
| | | }); |
| | | |
| | | }); |
| | | |
| | | // 关闭动作 |
| | |
| | | <div class="layui-form toolbar" id="search-box"> |
| | | <div class="layui-form-item"> |
| | | <div class="layui-inline"> |
| | | <label class="layui-form-label">编号:</label> |
| | | <div class="layui-input-inline"> |
| | | <select name="type"> |
| | | <option value="">操作类型</option> |
| | | <option value="0">入库</option> |
| | | <option value="1">出库</option> |
| | | <option value="2">调拨入</option> |
| | | <option value="3">调拨出</option> |
| | | <option value="4">领料出</option> |
| | | </select> |
| | | </div> |
| | | </div> |
| | | <div class="layui-inline"> |
| | | <div class="layui-input-inline"> |
| | | <input class="layui-input" type="text" name="loc_no" placeholder="库位" autocomplete="off"> |
| | | </div> |
| | | </div> |
| | | <div class="layui-inline"> |
| | | <label class="layui-form-label">物料编号:</label> |
| | | <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="batch" placeholder="批次" autocomplete="off"> |
| | | </div> |
| | | </div> |
| | | <div class="layui-inline" style="width: 300px"> |
| | | <div class="layui-input-inline"> |
| | | <input class="layui-input layui-laydate-range" name="io_time" type="text" placeholder="起始时间 - 终止时间" autocomplete="off" style="width: 300px"> |
| | | </div> |
| | | </div> |
| | | <div class="layui-inline">  |
| | | <button class="layui-btn icon-btn" lay-filter="search" lay-submit> |
| | | <i class="layui-icon"></i>搜索 |