src/main/java/com/zy/asrs/controller/LocAroundBindController.java
New file @@ -0,0 +1,176 @@ package com.zy.asrs.controller; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.baomidou.mybatisplus.mapper.Wrapper; import com.baomidou.mybatisplus.plugins.Page; import com.core.common.DateUtils; import com.zy.asrs.entity.LocAroundBind; import com.zy.asrs.entity.LocCache; import com.zy.asrs.entity.param.InitDeviceLocParams; import com.zy.asrs.service.LocAroundBindService; import com.core.annotations.ManagerAuth; import com.core.common.BaseRes; import com.core.common.Cools; import com.core.common.R; import com.zy.common.web.BaseController; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import java.util.*; @RestController public class LocAroundBindController extends BaseController { @Autowired private LocAroundBindService locAroundBindService; @RequestMapping(value = "/locAroundBind/{id}/auth") @ManagerAuth public R get(@PathVariable("id") String id) { return R.ok(locAroundBindService.selectById(String.valueOf(id))); } @RequestMapping(value = "/locAroundBind/list/auth") @ManagerAuth public R list(@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) { EntityWrapper<LocAroundBind> wrapper = new EntityWrapper<>(); excludeTrash(param); convert(param, wrapper); allLike(LocAroundBind.class, param.keySet(), wrapper, condition); if (!Cools.isEmpty(orderByField)) { wrapper.orderBy(humpToLine(orderByField), "asc".equals(orderByType)); } return R.ok(locAroundBindService.selectPage(new Page<>(curr, limit), wrapper)); } private <T> void convert(Map<String, Object> map, EntityWrapper<T> wrapper) { for (Map.Entry<String, Object> entry : map.entrySet()) { String val = String.valueOf(entry.getValue()); if (val.contains(RANGE_TIME_LINK)) { String[] dates = val.split(RANGE_TIME_LINK); wrapper.ge(entry.getKey(), DateUtils.convert(dates[0])); wrapper.le(entry.getKey(), DateUtils.convert(dates[1])); } else { wrapper.like(entry.getKey(), val); } } } @RequestMapping(value = "/locAroundBind/add/auth") @ManagerAuth public R add(LocAroundBind locAroundBind) { locAroundBindService.insert(locAroundBind); return R.ok(); } @RequestMapping(value = "/locAroundBind/update/auth") @ManagerAuth public R update(LocAroundBind locAroundBind) { if (Cools.isEmpty(locAroundBind) || null == locAroundBind.getId()) { return R.error(); } locAroundBindService.updateById(locAroundBind); return R.ok(); } @RequestMapping(value = "/locAroundBind/delete/auth") @ManagerAuth public R delete(@RequestParam(value = "ids[]") Long[] ids) { for (Long id : ids) { locAroundBindService.deleteById(id); } return R.ok(); } @RequestMapping(value = "/locAroundBind/export/auth") @ManagerAuth public R export(@RequestBody JSONObject param) { EntityWrapper<LocAroundBind> wrapper = new EntityWrapper<>(); List<String> fields = JSONObject.parseArray(param.getJSONArray("fields").toJSONString(), String.class); Map<String, Object> map = excludeTrash(param.getJSONObject("locAroundBind")); convert(map, wrapper); List<LocAroundBind> list = locAroundBindService.selectList(wrapper); return R.ok(exportSupport(list, fields)); } @RequestMapping(value = "/locAroundBindQuery/auth") @ManagerAuth public R query(String condition) { EntityWrapper<LocAroundBind> wrapper = new EntityWrapper<>(); wrapper.like("id", condition); Page<LocAroundBind> page = locAroundBindService.selectPage(new Page<>(0, 10), wrapper); List<Map<String, Object>> result = new ArrayList<>(); for (LocAroundBind locAroundBind : page.getRecords()) { Map<String, Object> map = new HashMap<>(); map.put("id", locAroundBind.getId()); map.put("value", locAroundBind.getId()); result.add(map); } return R.ok(result); } @RequestMapping(value = "/locAroundBind/check/column/auth") @ManagerAuth public R query(@RequestBody JSONObject param) { Wrapper<LocAroundBind> wrapper = new EntityWrapper<LocAroundBind>() .eq(humpToLine(String.valueOf(param.get("key"))), param.get("val")); if (null != locAroundBindService.selectOne(wrapper)) { return R.parse(BaseRes.REPEAT).add(getComment(LocAroundBind.class, String.valueOf(param.get("key")))); } return R.ok(); } /** * 台机绑定作业库位 * * @param locAroundBind * @return */ @ManagerAuth @PostMapping(value = "/locAroundBind/bind/init") public R bind(@RequestBody InitDeviceLocParams params) { if (Cools.isEmpty(params)) { return R.error("参数不能为空"); } if (Cools.isEmpty(params.getDevNo())) { return R.error("台机号不能为空"); } if (Cools.isEmpty(params.getStartRow())) { return R.error("起始排不能为空"); } if (Cools.isEmpty(params.getEndRow())) { return R.error("终止排不能为空"); } if (Cools.isEmpty(params.getStartBay())) { return R.error("起始列不能为空"); } if (Cools.isEmpty(params.getEndBay())) { return R.error("终止列不能为空"); } if (Cools.isEmpty(params.getStartLev())) { return R.error("起始层不能为空"); } if (Cools.isEmpty(params.getEndLev())) { return R.error("终止层不能为空"); } if (params.getStartRow() > params.getEndRow()) { return R.error("起始排不能大于终止排"); } if (params.getStartBay() > params.getEndBay()) { return R.error("起始列不能大于终止列"); } if (params.getStartLev() > params.getEndLev()) { return R.error("起始层不能大于终止层"); } return locAroundBindService.bindLocs(params); } } src/main/java/com/zy/asrs/controller/LocMastController.java
@@ -46,6 +46,8 @@ private WrkMastLogService wrkMastLogService; @Resource private WrkDetlLogService wrkDetlLogService; @Autowired private BasAreasService basAreasService; @RequestMapping(value = "/locMast/init/pwd") public R locMastInitPwd(@RequestParam(required = false) String pwd) { @@ -282,6 +284,15 @@ if (Cools.isEmpty(basWhsType)) { return R.error("库型不存在!!!"); } if (Objects.isNull(param.getAreaId())) { throw new CoolException("库区ID不能为空!!!"); } BasAreas basAreas = basAreasService.selectById(param.getAreaId()); if (Cools.isEmpty(basAreas)) { return R.error("库区不存在!!!"); } for (int r = param.getStartRow(); r <= param.getEndRow(); r++) { for (int b = param.getStartBay(); b <= param.getEndBay(); b++) { for (int l = param.getStartLev(); l <= param.getEndLev(); l++) { @@ -320,6 +331,8 @@ locMast.setAppeUser(getUserId()); locMast.setAppeTime(now); locMast.setModiUser(getUserId()); locMast.setAreaId(basAreas.getId()); locMast.setAreaName(basAreas.getName()); locMast.setModiTime(now); locMast.setWhsType(basWhsType.getId()); list.add(locMast); src/main/java/com/zy/asrs/entity/LocAroundBind.java
New file @@ -0,0 +1,67 @@ package com.zy.asrs.entity; import com.baomidou.mybatisplus.annotations.TableId; import com.baomidou.mybatisplus.enums.IdType; import com.core.common.Cools;import com.baomidou.mybatisplus.annotations.TableField; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import com.baomidou.mybatisplus.annotations.TableName; import java.io.Serializable; @Data @TableName("asr_loc_around_bind") public class LocAroundBind implements Serializable { private static final long serialVersionUID = 1L; @ApiModelProperty(value= "ID") @TableId(value = "id", type = IdType.AUTO) private Long id; /** * 台机ID */ @ApiModelProperty(value= "台机ID") @TableField("dev_id") private Long devId; /** * 台机号 */ @ApiModelProperty(value= "台机号") @TableField("dev_no") private String devNo; /** * 库位ID */ @ApiModelProperty(value= "库位ID") @TableField("b_loc_id") private Long bLocId; /** * 库位码 */ @ApiModelProperty(value= "库位码") @TableField("b_loc_no") private String bLocNo; public LocAroundBind() {} public LocAroundBind(Long devId,String devNo,Long bLocId,String bLocNo) { this.devId = devId; this.devNo = devNo; this.bLocId = bLocId; this.bLocNo = bLocNo; } // LocAroundBind locAroundBind = new LocAroundBind( // null, // 台机ID[非空] // null, // 台机号[非空] // null, // 库位ID[非空] // null // 库位码[非空] // ); } src/main/java/com/zy/asrs/entity/LocMast.java
@@ -182,6 +182,14 @@ @TableField("ctn_no") private String ctnNo; @ApiModelProperty(value= "库区ID") @TableField("area_id") private Long areaId; @ApiModelProperty(value= "库区名称") @TableField("area_name") private String areaName; /** * 是否冻结 */ src/main/java/com/zy/asrs/entity/param/InitDeviceLocParams.java
New file @@ -0,0 +1,36 @@ package com.zy.asrs.entity.param; import java.io.Serializable; import lombok.Data; import lombok.experimental.Accessors; import io.swagger.annotations.ApiModel; @Data @ApiModel(value = "InitDeviceLocParams", description = "初始化台机库位参数") @Accessors(chain = true) public class InitDeviceLocParams implements Serializable { private static final long serialVersionUID = 1L; // 台机号 private String devNo; // 起始排 private Integer startRow; // 终止排 private Integer endRow; // 起始列 private Integer startBay; // 终止列 private Integer endBay; // 起始层 private Integer startLev; // 终止层 private Integer endLev; } src/main/java/com/zy/asrs/entity/param/LocMastInitParam.java
@@ -47,6 +47,8 @@ private Integer endCrn; private String identifying; // 库区ID private String areaId; public Integer getStartRow() { if (null == startRow) { src/main/java/com/zy/asrs/mapper/LocAroundBindMapper.java
New file @@ -0,0 +1,12 @@ package com.zy.asrs.mapper; import com.zy.asrs.entity.LocAroundBind; import com.baomidou.mybatisplus.mapper.BaseMapper; import org.apache.ibatis.annotations.Mapper; import org.springframework.stereotype.Repository; @Mapper @Repository public interface LocAroundBindMapper extends BaseMapper<LocAroundBind> { } src/main/java/com/zy/asrs/service/LocAroundBindService.java
New file @@ -0,0 +1,12 @@ package com.zy.asrs.service; import com.zy.asrs.entity.LocAroundBind; import com.zy.asrs.entity.param.InitDeviceLocParams; import com.baomidou.mybatisplus.service.IService; import com.core.common.R; public interface LocAroundBindService extends IService<LocAroundBind> { R bindLocs(InitDeviceLocParams params); } src/main/java/com/zy/asrs/service/impl/LocAroundBindServiceImpl.java
New file @@ -0,0 +1,83 @@ package com.zy.asrs.service.impl; import com.zy.asrs.mapper.LocAroundBindMapper; import com.zy.asrs.entity.BasDevice; import com.zy.asrs.entity.LocAroundBind; import com.zy.asrs.entity.LocMast; import com.zy.asrs.entity.param.InitDeviceLocParams; import com.zy.asrs.enums.LocStsType; import com.zy.asrs.service.BasDeviceService; import com.zy.asrs.service.LocAroundBindService; import com.zy.asrs.service.LocMastService; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.baomidou.mybatisplus.service.impl.ServiceImpl; import com.core.common.Cools; import com.core.common.R; import com.core.exception.CoolException; import java.util.List; import java.util.Objects; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @Service("locAroundBindService") public class LocAroundBindServiceImpl extends ServiceImpl<LocAroundBindMapper, LocAroundBind> implements LocAroundBindService { @Autowired private LocMastService locMastService; @Autowired private BasDeviceService basDeviceService; /** * 绑定作业库位 * * @param params * @return */ @Override @Transactional(rollbackFor = Exception.class) public R bindLocs(InitDeviceLocParams params) { // 校验参数 if (Cools.isEmpty(params.getStartRow()) || Cools.isEmpty(params.getEndRow()) || Cools.isEmpty(params.getStartBay()) || Cools.isEmpty(params.getEndBay()) || Cools.isEmpty(params.getStartLev()) || Cools.isEmpty(params.getEndLev())) { return R.error("参数错误"); } BasDevice basDevice = basDeviceService.selectOne(new EntityWrapper<BasDevice>() .eq("dev_no", params.getDevNo())); if (Objects.isNull(basDevice)) { return R.error("未查询到该设备"); } List<LocMast> locMasts = locMastService.selectList(new EntityWrapper<LocMast>() .between("row1", params.getStartRow(), params.getEndRow()) .between("bay1", params.getStartBay(), params.getEndBay()) .between("lev1", params.getStartLev(), params.getEndLev()) .ne("loc_sts", LocStsType.LOC_STS_TYPE_X.type)); if (Cools.isEmpty(locMasts)) { return R.error("未查询到符合条件的库位"); } // 校验库位是否已绑定 for (LocMast mast : locMasts) { LocAroundBind aroundBind = this.selectOne(new EntityWrapper<LocAroundBind>() .eq("dev_no", params.getDevNo()) .eq("b_loc_no", mast.getLocNo())); if (!Objects.isNull(aroundBind)) { continue; } LocAroundBind bind = new LocAroundBind(); bind.setDevNo(params.getDevNo()); bind.setBLocNo(mast.getLocNo()); bind.setDevId(basDevice.getId()); if (!this.insert(bind)) { throw new CoolException("绑定库位失败"); } } return R.ok("绑定库位成功"); } } src/main/java/com/zy/common/CodeBuilder.java
@@ -20,7 +20,7 @@ generator.url="192.168.4.15:1433;databasename=jxhcwms"; generator.username="sa"; generator.password="sa@123"; generator.table="asr_bas_device"; generator.table="asr_loc_around_bind"; generator.packagePath="com.zy.asrs"; generator.build(); } src/main/resources/mapper/LocAroundBindMapper.xml
New file @@ -0,0 +1,15 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.zy.asrs.mapper.LocAroundBindMapper"> <!-- 通用查询映射结果 --> <resultMap id="BaseResultMap" type="com.zy.asrs.entity.LocAroundBind"> <id column="id" property="id" /> <result column="dev_id" property="devId" /> <result column="dev_no" property="devNo" /> <result column="b_loc_id" property="bLocId" /> <result column="b_loc_no" property="bLocNo" /> </resultMap> </mapper> src/main/webapp/static/js/basDevice/basDevice.js
@@ -21,8 +21,8 @@ cellMinWidth: 50, height: 'full-120', cols: [[ {type: 'checkbox'} ,{field: 'id', align: 'center',title: ''} // {type: 'checkbox'} {field: 'id', align: 'center',title: '序号'} ,{field: 'devNo', align: 'center',title: '设备号'} ,{field: 'type', align: 'center',title: '设备类型'} ,{field: 'updateTime$', align: 'center',title: '更新时间'} @@ -30,7 +30,6 @@ ,{field: 'createTime$', align: 'center',title: '创建时间'} ,{field: 'createBy', align: 'center',title: '创建人员'} ,{field: 'status', align: 'center',title: '状态'} ,{fixed: 'right', title:'操作', align: 'center', toolbar: '#operate', width:120} ]], request: { src/main/webapp/static/js/locAroundBind/locAroundBind.js
New file @@ -0,0 +1,288 @@ var pageCurr; layui.config({ base: baseUrl + "/static/layui/lay/modules/" }).use(['table', 'laydate', 'form', 'admin'], function () { var table = layui.table; var $ = layui.jquery; var layer = layui.layer; var layDate = layui.laydate; var form = layui.form; var admin = layui.admin; // 数据渲染 tableIns = table.render({ elem: '#locAroundBind', headers: { token: localStorage.getItem('token') }, url: baseUrl + '/locAroundBind/list/auth', page: true, limit: 15, limits: [15, 30, 50, 100, 200, 500], toolbar: '#toolbar', cellMinWidth: 50, height: 'full-120', cols: [[ { type: 'checkbox' } , { field: 'id', align: 'center', title: 'ID' } , { field: 'devId', align: 'center', title: '台机ID' } , { field: 'devNo', align: 'center', title: '台机号' } , { field: 'blocId', align: 'center', title: '库位ID', hide: true } , { field: 'blocNo', align: 'center', title: '库位码' } , { fixed: 'right', title: '操作', align: 'center', toolbar: '#operate', width: 120 } ]], 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(); } }); // 监听排序事件 table.on('sort(locAroundBind)', 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 } }); }); // 监听头工具栏事件 table.on('toolbar(locAroundBind)', function (obj) { var checkStatus = table.checkStatus(obj.config.id).data; switch (obj.event) { case 'addData': showEditModel(); break; case 'deleteData': if (checkStatus.length === 0) { layer.msg('请选择要删除的数据', { icon: 2 }); return; } del(checkStatus.map(function (d) { return d.id; })); break; case 'exportData': admin.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 = { 'locAroundBind': exportData, 'fields': fields }; $.ajax({ url: baseUrl + "/locAroundBind/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.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, { icon: 2 }) } } }); }); break; case "init": layer.prompt({ title: '请输入口令,并重置库位', formType: 1, shadeClose: true }, function (pass, idx) { http.get(baseUrl + "/locMast/init/pwd", { pwd: pass }, function (res) { if (res.data) { layer.open({ type: 1, title: '台机绑定作业库位', area: ["400px"], maxmin: true, shadeClose: true, content: $("#resetLocDiv"), success: function (layero, index) { } }) } else { layer.msg("口令错误"); } layer.close(idx); }) }); break; } }); // 初始化保存 form.on('submit(initDo)', function (data) { $.ajax({ url: baseUrl + "/locAroundBind/bind/init", headers: { 'token': localStorage.getItem('token') }, data: JSON.stringify(data.field), contentType: 'application/json;charset=UTF-8', 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) } } }) }); // 监听行工具事件 table.on('tool(locAroundBind)', function (obj) { var data = obj.data; switch (obj.event) { case 'edit': showEditModel(data); break; case "del": del([data.id]); break; } }); /* 弹窗 - 新增、修改 */ function showEditModel(mData) { admin.open({ type: 1, area: '600px', title: (mData ? '修改' : '添加') + '订单状态', content: $('#editDialog').html(), success: function (layero, dIndex) { layDateRender(mData); form.val('detail', mData); form.on('submit(editSubmit)', function (data) { var loadIndex = layer.load(2); $.ajax({ url: baseUrl + "/locAroundBind/" + (mData ? 'update' : 'add') + "/auth", headers: { 'token': localStorage.getItem('token') }, data: 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 del(ids) { layer.confirm('确定要删除选中数据吗?', { skin: 'layui-layer-admin', shade: .1 }, function (i) { layer.close(i); var loadIndex = layer.load(2); $.ajax({ url: baseUrl + "/locAroundBind/delete/auth", headers: { 'token': localStorage.getItem('token') }, data: { ids: ids }, method: 'POST', success: function (res) { layer.close(loadIndex); if (res.code === 200) { layer.msg(res.msg, { icon: 1 }); tableReload(); } else if (res.code === 403) { top.location.href = baseUrl + "/"; } else { layer.msg(res.msg, { icon: 2 }); } } }) }); } // 搜索 form.on('submit(search)', function (data) { pageCurr = 1; tableReload(false); }); // 重置 form.on('submit(reset)', function (data) { pageCurr = 1; clearFormVal($('#search-box')); tableReload(false); }); // 时间选择器 function layDateRender(data) { setTimeout(function () { }, 300); } layDateRender(); }); // 关闭动作 $(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; }); tableIns.reload({ where: searchData, page: { curr: pageCurr } }); } src/main/webapp/static/js/locCache/locCache.js
@@ -119,8 +119,6 @@ } }); // 监听行工具事件 table.on('tool(locCache)', function (obj) { var data = obj.data; @@ -150,7 +148,6 @@ // 初始化保存 form.on('submit(initDo)', function (data) { console.log(data.field) $.ajax({ url: baseUrl + "/locCache/init/auth", headers: {'token': localStorage.getItem('token')}, src/main/webapp/static/js/orderPakout/order.js
@@ -121,7 +121,7 @@ page: true, cellMinWidth: 100, cols: [[ {type: 'numbers'}, {type: 'numbers', title: "序号"}, {field: 'matnr', title: '商品编码', width: 160}, {field: 'maktx', title: '商品名称', width: 160}, {field: 'batch', title: '批号'}, src/main/webapp/views/locAroundBind/locAroundBind.html
New file @@ -0,0 +1,165 @@ <!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/admin.css?v=318" media="all"> <link rel="stylesheet" href="../../static/css/cool.css" media="all"> </head> <body> <div class="layui-fluid"> <div class="layui-card"> <div class="layui-card-body"> <div class="layui-form toolbar" id="search-box"> <div class="layui-form-item"> <div class="layui-inline"> <div class="layui-input-inline"> <input class="layui-input" type="text" name="condition" placeholder="请输入" autocomplete="off"> </div> </div> <div class="layui-inline">  <button class="layui-btn icon-btn" lay-filter="search" lay-submit> <i class="layui-icon"></i>搜索 </button> <button class="layui-btn icon-btn" lay-filter="reset" lay-submit> <i class="layui-icon"></i>重置 </button> </div> </div> </div> <table class="layui-hide" id="locAroundBind" lay-filter="locAroundBind"></table> </div> </div> </div> <script type="text/html" id="toolbar"> <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" id="btn-init" lay-event="init">初始化</button> <button class="layui-btn layui-btn-primary layui-btn-sm" id="btn-export" lay-event="exportData" style="float: right">导出</button> </div> </script> <script type="text/html" id="operate"> <a class="layui-btn layui-btn-primary layui-btn-xs btn-edit" lay-event="edit">修改</a> <a class="layui-btn layui-btn-danger layui-btn-xs btn-edit" lay-event="del">删除</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/locAroundBind/locAroundBind.js" charset="utf-8"></script> </body> <!-- 表单弹窗 --> <script type="text/html" id="editDialog"> <form id="detail" lay-filter="detail" class="layui-form admin-form model-form"> <input name="id" type="hidden"> <div class="layui-row"> <div class="layui-col-md12"> <div class="layui-form-item"> <label class="layui-form-label layui-form-required">台机ID: </label> <div class="layui-input-block"> <input class="layui-input" name="devId" placeholder="请输入台机ID" lay-vertype="tips" lay-verify="required"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label layui-form-required">台机号: </label> <div class="layui-input-block"> <input class="layui-input" name="devNo" placeholder="请输入台机号" lay-vertype="tips" lay-verify="required"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label layui-form-required">库位ID: </label> <div class="layui-input-block"> <input class="layui-input" name="bLocId" placeholder="请输入库位ID" lay-vertype="tips" lay-verify="required"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label layui-form-required">库位码: </label> <div class="layui-input-block"> <input class="layui-input" name="bLocNo" placeholder="请输入库位码" lay-vertype="tips" lay-verify="required"> </div> </div> </div> </div> <hr class="layui-bg-gray"> <div class="layui-form-item text-right"> <button class="layui-btn" lay-filter="editSubmit" lay-submit="">保存</button> <button class="layui-btn layui-btn-primary" type="button" ew-event="closeDialog">取消</button> </div> </form> </script> <div id="resetLocDiv" style="margin: 20px 0 10px 30px; display: none"> <div class="layui-form layui-form-pane"> <div class="layui-form-item"> <label class="layui-form-label">台机号</label> <div class="layui-input-inline"> <input type="text" name="devNo" 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" 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 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> </html> src/main/webapp/views/locMast/locMast.html
@@ -1,5 +1,6 @@ <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <title></title> @@ -13,94 +14,100 @@ #btn-init { display: none; } .layui-layer-page .layui-layer-content { position: relative; overflow: visible !important; } </style> </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="loc_no" placeholder="库位号" autocomplete="off"> <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="loc_no" placeholder="库位号" autocomplete="off"> </div> </div> </div> <div class="layui-inline"> <div class="layui-input-inline cool-auto-complete"> <input id="locSts" name="loc_sts" class="layui-input" type="text" style="display: none"> <input id="locSts$" 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="basLocStsQueryBylocSts" onkeyup="autoLoad2(this.getAttribute('data-key'))"> <select class="cool-auto-complete-window-select" data-key="basLocStsQueryBylocStsSelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple"> <div class="layui-inline"> <div class="layui-input-inline cool-auto-complete"> <input id="locSts" name="loc_sts" class="layui-input" type="text" style="display: none"> <input id="locSts$" 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="basLocStsQueryBylocSts" onkeyup="autoLoad2(this.getAttribute('data-key'))"> <select class="cool-auto-complete-window-select" data-key="basLocStsQueryBylocStsSelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple"> </select> </div> </div> </div> <!-- <div class="layui-inline">--> <!-- <div class="layui-input-inline cool-auto-complete">--> <!-- <input id="whsType" name="whs_type" class="layui-input" type="text" style="display: none">--> <!-- <input id="whsType$" 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="basWhsQueryBywhsType" onkeyup="autoLoad2(this.getAttribute('data-key'))">--> <!-- <select class="cool-auto-complete-window-select" data-key="basWhsQueryBywhsTypeSelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple">--> <!-- </select>--> <!-- </div>--> <!-- </div>--> <!-- </div>--> <div class="layui-inline"> <div class="layui-input-inline"> <select name="loc_type1" id="loc_type1" class="layui-input" type="text" placeholder="库位类型" autocomplete="off"> <!-- <option style="display: none"></option>--> <option value="">库位类型</option> <option value="1">低库位</option> <option value="2">高库位</option> </select> </div> </div> </div> <div class="layui-inline"> <div class="layui-input-inline cool-auto-complete"> <input id="whsType" name="whs_type" class="layui-input" type="text" style="display: none"> <input id="whsType$" 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="basWhsQueryBywhsType" onkeyup="autoLoad2(this.getAttribute('data-key'))"> <select class="cool-auto-complete-window-select" data-key="basWhsQueryBywhsTypeSelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple"> </select> <div class="layui-inline"> <div class="layui-input-inline"> <input class="layui-input" type="text" name="crn_no" placeholder="堆垛机号" autocomplete="off"> </div> </div> </div> <div class="layui-inline"> <div class="layui-inline"> <div class="layui-input-inline"> <input class="layui-input" type="text" name="row1" placeholder="排" autocomplete="off"> </div> </div> <div class="layui-inline"> <div class="layui-input-inline"> <input class="layui-input" type="text" name="bay1" placeholder="列" autocomplete="off"> </div> </div> <div class="layui-inline"> <div class="layui-input-inline"> <input class="layui-input" type="text" name="lev1" placeholder="层" autocomplete="off"> </div> </div> <div class="layui-input-inline"> <select name="loc_type1" id="loc_type1" class="layui-input" type="text" placeholder="库位类型" autocomplete="off"> <select name="frozen" class="layui-input" type="text" autocomplete="off"> <!-- <option style="display: none"></option>--> <option value="">库位类型</option> <option value="1">低库位</option> <option value="2">高库位</option> <option value="">冻结否</option> <option value="0">未冻结</option> <option value="1">已冻结</option> </select> </div> </div> <div class="layui-inline"> <div class="layui-input-inline"> <input class="layui-input" type="text" name="crn_no" placeholder="堆垛机号" autocomplete="off"> <!-- 待添加 --> <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> </div> </div> <div class="layui-inline"> <div class="layui-input-inline"> <input class="layui-input" type="text" name="row1" placeholder="排" autocomplete="off"> </div> </div> <div class="layui-inline"> <div class="layui-input-inline"> <input class="layui-input" type="text" name="bay1" placeholder="列" autocomplete="off"> </div> </div> <!-- <div class="layui-inline">--> <!-- <div class="layui-input-inline">--> <!-- <input class="layui-input" type="text" name="lev1" placeholder="层" autocomplete="off">--> <!-- </div>--> <!-- </div>--> <div class="layui-input-inline"> <select name="frozen" class="layui-input" type="text" autocomplete="off"> <!-- <option style="display: none"></option>--> <option value="">冻结否</option> <option value="0">未冻结</option> <option value="1">已冻结</option> </select> </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> </div> </div> <!-- 表格 --> <div class="layui-form"> <table class="layui-hide" id="locMast" lay-filter="locMast"></table> </div> <script type="text/html" id="toolbar"> <!-- 表格 --> <div class="layui-form"> <table class="layui-hide" id="locMast" lay-filter="locMast"></table> </div> <script type="text/html" id="toolbar"> <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" id="btn-delete" lay-event="deleteData">删除</button> @@ -110,156 +117,182 @@ </div> </script> <script type="text/html" id="operate"> <script type="text/html" id="operate"> <!-- <a class="layui-btn layui-btn-primary layui-btn-xs" lay-event="detail">详情</a>--> <a class="layui-btn layui-btn-xs btn-edit" lay-event="edit">编辑</a> </script> </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/locMast/locMast.js" charset="utf-8"></script> <iframe id="detail-iframe" scrolling="auto" style="display:none;"></iframe> <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> <iframe id="detail-iframe" scrolling="auto" style="display:none;"></iframe> <!-- 重置库位弹窗 --> <div id="resetLocDiv" 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 id="resetLocDiv" 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> <!-- <div class="layui-inline" style="width:80%">--> <!-- <label class="layui-form-label"><span class="not-null">*</span>库位类型:</label>--> <!-- <div class="layui-input-inline cool-auto-complete">--> <!-- <input id="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="basWhsQueryBywhsType" onkeyup="autoLoad(this.getAttribute('data-key'))">--> <!-- <select class="cool-auto-complete-window-select" data-key="basWhsQueryBywhsTypeSelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple">--> <!-- </select>--> <!-- </div>--> <!-- </div>--> <!-- </div>--> <!-- <!-- <div class="layui-inline" style="width:80%">--> <!-- <label class="layui-form-label"><span class="not-null">*</span>库位类型:</label>--> <!-- <div class="layui-input-inline cool-auto-complete">--> <!-- <input id="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="basWhsQueryBywhsType" onkeyup="autoLoad(this.getAttribute('data-key'))">--> <!-- <select class="cool-auto-complete-window-select" data-key="basWhsQueryBywhsTypeSelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple">--> <!-- </select>--> <!-- </div>--> <!-- </div>--> <!-- </div>--> <!-- /** * 库型 1: 标准堆垛机库 2: 平库 3: 穿梭板 4: 四向车 5: AGV 0: 未知 */ --> <div class="layui-form-item"> <label class="layui-form-label">库位类型:</label> <div class="layui-input-inline"> <select name="identifying"> <!-- <option style="display: none"></option>--> <!-- <option value="0">未知</option>--> <option value="1" style="display: none">标准堆垛机库</option> <option value="2">平库</option> <option value="3">穿梭板</option> <option value="4">四向车</option> <option value="5">AGV</option> </select> </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 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="areaId" name="areaId" 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> <!-- 列 --> <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 class="layui-form-item"> <label class="layui-form-label">库位类型:</label> <div class="layui-input-inline"> <select name="identifying"> <!-- <option style="display: none"></option>--> <!-- <option value="0">未知</option>--> <option value="1" style="display: none">标准堆垛机库</option> <option value="2">平库</option> <option value="3">穿梭板</option> <option value="4">四向车</option> <option value="5">AGV</option> </select> </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 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> <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 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> <!-- 库位类型 --> <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 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> <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 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> <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 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> <!-- <div id="prompt" style="text-indent: 10px;">--> <!-- <span class="not-null">初始化库位后将删除库存明细,请谨慎操作!</span>--> <!-- </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 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 id="prompt" style="text-indent: 10px;">--> <!-- <span class="not-null">初始化库位后将删除库存明细,请谨慎操作!</span>--> <!-- </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> </div> </body> </html> </html>