src/main/java/com/zy/asrs/controller/BasDevpController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/core/thread/LiftThread.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/core/thread/SiemensDevpThread.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/webapp/static/js/basDevp/basDevp.js | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/webapp/views/admin/basDevp/basDevp.html | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/webapp/views/admin/basDevp/basDevp_detail.html | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/main/java/com/zy/asrs/controller/BasDevpController.java
New file @@ -0,0 +1,133 @@ 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.annotations.ManagerAuth; import com.core.common.BaseRes; import com.core.common.Cools; import com.core.common.DateUtils; import com.core.common.R; import com.zy.asrs.entity.BasDevp; import com.zy.asrs.service.BasDevpService; 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 BasDevpController extends BaseController { @Autowired private BasDevpService basDevpService; @RequestMapping(value = "/basDevp/{id}/auth") @ManagerAuth public R get(@PathVariable("id") Long id) { return R.ok(basDevpService.selectById(String.valueOf(id))); } @RequestMapping(value = "/basDevp/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 Map<String, Object> param){ excludeTrash(param); EntityWrapper<BasDevp> wrapper = new EntityWrapper<>(); convert(param, wrapper); if (!Cools.isEmpty(orderByField)){wrapper.orderBy(humpToLine(orderByField), "asc".equals(orderByType));} return R.ok(basDevpService.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 = "/basDevp/add/auth") @ManagerAuth(memo = "站点添加") public R add(BasDevp basDevp) { basDevp.setModiUser(getUserId()); basDevp.setModiTime(new Date()); basDevp.setAppeUser(getUserId()); basDevp.setAppeTime(new Date()); basDevpService.insert(basDevp); return R.ok(); } @RequestMapping(value = "/basDevp/update/auth") @ManagerAuth(memo = "站点修改") public R update(BasDevp basDevp){ if (Cools.isEmpty(basDevp) || null==basDevp.getDevNo()){ return R.error(); } basDevp.setModiUser(getUserId()); basDevp.setModiTime(new Date()); basDevpService.updateById(basDevp); return R.ok("修改完成"); } @RequestMapping(value = "/basDevp/delete/auth") @ManagerAuth(memo = "站点删除") public R delete(@RequestParam String param){ List<BasDevp> list = JSONArray.parseArray(param, BasDevp.class); if (Cools.isEmpty(list)){ return R.error(); } for (BasDevp entity : list){ basDevpService.delete(new EntityWrapper<>(entity)); } return R.ok(); } @RequestMapping(value = "/basDevp/export/auth") @ManagerAuth(memo = "站点导出") public R export(@RequestBody JSONObject param){ List<String> fields = JSONObject.parseArray(param.getJSONArray("fields").toJSONString(), String.class); EntityWrapper<BasDevp> wrapper = new EntityWrapper<>(); Map<String, Object> map = excludeTrash(param.getJSONObject("basDevp")); convert(map, wrapper); List<BasDevp> list = basDevpService.selectList(wrapper); return R.ok(exportSupport(list, fields)); } @RequestMapping(value = "/basDevpQuery/auth") @ManagerAuth public R query(String condition) { EntityWrapper<BasDevp> wrapper = new EntityWrapper<>(); wrapper.like("dev_no", condition); Page<BasDevp> page = basDevpService.selectPage(new Page<>(0, 10), wrapper); List<Map<String, Object>> result = new ArrayList<>(); for (BasDevp basDevp : page.getRecords()){ Map<String, Object> map = new HashMap<>(); map.put("id", basDevp.getDevNo()); map.put("value", basDevp.getDevNo()); result.add(map); } return R.ok(result); } @RequestMapping(value = "/basDevp/check/column/auth") @ManagerAuth public R query(@RequestBody JSONObject param) { Wrapper<BasDevp> wrapper = new EntityWrapper<BasDevp>().eq(humpToLine(String.valueOf(param.get("key"))), param.get("val")); if (null != basDevpService.selectOne(wrapper)){ return R.parse(BaseRes.REPEAT).add(getComment(BasDevp.class, String.valueOf(param.get("key")))); } return R.ok(); } } src/main/java/com/zy/core/thread/LiftThread.java
File was deleted src/main/java/com/zy/core/thread/SiemensDevpThread.java
@@ -42,80 +42,11 @@ private Map<Integer, StaProtocol> station = new ConcurrentHashMap<>(); private short heartBeatVal = 1; private int barcodeSize = 10; public static final ArrayList<Integer> staNos = new ArrayList<Integer>() {{ add(100);add(101); add(102);add(103); add(104);add(105); add(200);add(201); add(202);add(203); add(204);add(205); add(300);add(301); add(340);add(341); add(345);add(346); add(303);add(317); add(325);add(331); add(333);add(339); add(309);add(312); }}; public static final ArrayList<Integer> staNos2 = new ArrayList<Integer>() {{ add(302);add(304); add(305);add(306); add(307);add(308); add(310);add(311); add(312);add(313); add(314);add(315); add(316);add(318); add(319);add(320); add(321);add(322); add(323);add(324); add(326);add(327); add(328);add(329); add(330);add(332); add(334);add(335); add(336);add(337); add(338);add(342); add(343);add(344); }}; public static final ArrayList<Integer> staNos3 = new ArrayList<Integer>() {{//218 add(302);add(304); add(315);add(322); add(324);add(330); add(332);add(337); }}; public static final ArrayList<Integer> staNos4 = new ArrayList<Integer>() {{//250 add(318);add(320); add(343); }}; //高低信号站点 public static final ArrayList<Integer> locType1StaNos = new ArrayList<Integer>() {{ add(100);add(103); add(105);add(200); add(203);add(205); add(300);add(341); add(346); }}; //出入库模式 public static final ArrayList<Integer> outInModelStaNos = new ArrayList<Integer>() {{ add(100);add(103); add(105);add(200); add(203);add(205); add(341);add(346); }}; //出入库站点检测报警信息 public static final ArrayList<Integer> outInAlarmStaNos = new ArrayList<Integer>(){{ add(101);add(102);add(104); add(201);add(202);add(204); add(340);add(345); }}; public boolean charge0; public boolean charge1; public SiemensDevpThread(DevpSlave slave) { this.slave = slave; @@ -147,7 +78,7 @@ } // 心跳 // heartbeat(); Thread.sleep(400); Thread.sleep(100); } catch (Exception e) { e.printStackTrace(); } @@ -192,6 +123,7 @@ staProtocol.setStaNo(siemensS7Net.getByteTransform().TransInt16(result.Content, i*4+2)); // 目标站 } } Thread.sleep(200); OperateResultExOne<byte[]> result1 = siemensS7Net.Read("DB1001.0", (short) (staNos.size()*2)); if (result1.IsSuccess) { @@ -213,139 +145,6 @@ } } } //读条码 Thread.sleep(100); OperateResultExOne<byte[]> result2 = siemensS7Net.Read("DB1000.200", (short) 98); if (result2.IsSuccess) { for (int i = 0; i < barcodeSize; i++) { if (i >= 10) { continue; } String barcode = null; if (i == 8) { barcode = siemensS7Net.getByteTransform().TransString(result2.Content,i*8,13, "UTF-8"); } else if (i == 9) { barcode = siemensS7Net.getByteTransform().TransString(result2.Content,i*8 + 6,13, "UTF-8"); } else { barcode = siemensS7Net.getByteTransform().TransString(result2.Content,i*8,8, "UTF-8"); } BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, i + 1); if(!Cools.isEmpty(barcodeThread) && !barcodeThread.getBarcode().equals(barcode)) { barcodeThread.setBarcode(barcode); } } } //读高低信号 Thread.sleep(100); OperateResultExOne<byte[]> result3 = siemensS7Net.Read("DB1000.300", (short) (locType1StaNos.size()*2)); if (result3.IsSuccess) { for (int i = 0; i < locType1StaNos.size(); i++) { Integer siteId = locType1StaNos.get(i); // 站点编号 StaProtocol staProtocol = station.get(siteId); staProtocol.setLocType1(siemensS7Net.getByteTransform().TransInt16(result3.Content, i * 2));//读取高低信号 } } //读出入库模式 Thread.sleep(100); OperateResultExOne<byte[]> result4 = siemensS7Net.Read("DB1002.0", (short) (outInModelStaNos.size()*2)); if (result4.IsSuccess) { for (int i = 0; i < outInModelStaNos.size(); i++) { Integer siteId = outInModelStaNos.get(i); // 站点编号 StaProtocol staProtocol = station.get(siteId); staProtocol.setOutInModel(siemensS7Net.getByteTransform().TransInt16(result4.Content, i * 2));//读取出入库模式 } } // //出入库站点检测报警信息 // Thread.sleep(100); // for (Integer staNo : outInAlarmStaNos) { // OperateResultExOne<byte[]> result5 = siemensS7Net.Read("DB" + staNo + ".20.0", (short) 2); // if (result5.IsSuccess) { // if (staNo == 101 || staNo == 201) { // staNo--; // }else { // staNo++; // } // StaProtocol staProtocol = station.get(staNo); // boolean[] status = siemensS7Net.getByteTransform().TransBool(result5.Content, 0, 2); // staProtocol.setBarcodeErr(status[4]);//扫码失败 // staProtocol.setFrontErr(status[8]);//前超限 // staProtocol.setBackErr(status[9]);//后超限 // staProtocol.setLeftErr(status[10]);//左超限 // staProtocol.setRightErr(status[11]);//右超限 // staProtocol.setHighErr(status[12]);//超高 // staProtocol.setWeightErr(status[13]);//超重 // } // } // // Thread.sleep(100); // for (Integer staNo : staNos2) { // OperateResultExOne<byte[]> result5 = siemensS7Net.Read("DB" + staNo + ".0", (short) 48); // if (result5.IsSuccess) { // StaProtocol staProtocol = station.get(staNo); // StaProtocol staProtocol300 = station.get(300); // if (null == staProtocol) { // staProtocol = new StaProtocol(); // staProtocol.setSiteId(staNo); // station.put(staNo, staProtocol); // } // // boolean[] status1 = siemensS7Net.getByteTransform().TransBool(result5.Content, 1, 1); // staProtocol.setAutoing(staProtocol300.isAutoing()); // 自动 // staProtocol.setLoading(!status1[2]); // 有物 // // if (staNos3.contains(staNo) || staNos4.contains(staNo)) { // continue; // } // if (staNo == 344) { // staProtocol.setWorkNo(siemensS7Net.getByteTransform().TransInt16(result5.Content, 34)); // 工作号 // }else { // staProtocol.setWorkNo(siemensS7Net.getByteTransform().TransInt16(result5.Content, 22)); // 工作号 // } // } // } // // Thread.sleep(100); // for (Integer staNo : staNos3) { // OperateResultExOne<byte[]> result5 = siemensS7Net.Read("DB" + staNo + ".22.0", (short) 2); // OperateResultExOne<byte[]> result6 = siemensS7Net.Read("DB" + staNo + ".218.0", (short) 2); // if (result5.IsSuccess && result6.IsSuccess) { // StaProtocol staProtocol = station.get(staNo); // short wrkNo1 = siemensS7Net.getByteTransform().TransInt16(result5.Content, 0); // short wrkNo2 = siemensS7Net.getByteTransform().TransInt16(result6.Content, 0); // short wrkNo = 0; // if (wrkNo1 != 0) { // wrkNo = wrkNo1; // } // if (wrkNo2 != 0) { // wrkNo = wrkNo2; // } // staProtocol.setWorkNo(wrkNo); // 工作号 // } // } // // Thread.sleep(100); // for (Integer staNo : staNos4) { // OperateResultExOne<byte[]> result5 = siemensS7Net.Read("DB" + staNo + ".22.0", (short) 2); // OperateResultExOne<byte[]> result6 = siemensS7Net.Read("DB" + staNo + ".250.0", (short) 2); // if (result5.IsSuccess && result6.IsSuccess) { // StaProtocol staProtocol = station.get(staNo); // short wrkNo1 = siemensS7Net.getByteTransform().TransInt16(result5.Content, 0); // short wrkNo2 = siemensS7Net.getByteTransform().TransInt16(result6.Content, 0); // short wrkNo = 0; // if (wrkNo1 != 0) { // wrkNo = wrkNo1; // } // if (wrkNo2 != 0) { // wrkNo = wrkNo2; // } // staProtocol.setWorkNo(wrkNo); // 工作号 // } // } if (result.IsSuccess && result1.IsSuccess) { OutputQueue.DEVP.offer(MessageFormat.format("【{0}】[id:{1}] <<<<< 实时数据更新成功",DateUtils.convert(new Date()), slave.getId())); src/main/webapp/static/js/basDevp/basDevp.js
New file @@ -0,0 +1,569 @@ var pageCurr; 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: '#basDevp', headers: {token: localStorage.getItem('token')}, url: baseUrl+'/basDevp/list/auth', page: true, limit: 16, limits: [16, 30, 50, 100, 200, 500], even: true, toolbar: '#toolbar', cellMinWidth: 50, cols: [[ {type: 'checkbox', fixed: 'left'} ,{field: 'devNo', align: 'center',sort:true,title: '编号'} ,{field: 'inEnable', align: 'center',title: '可入', templet:function(row){ var html = "<input value='inEnable' type='checkbox' lay-skin='primary' lay-filter='tableCheckbox' table-index='"+row.LAY_TABLE_INDEX+"'"; if(row.inEnable === 'Y'){html += " checked ";} html += ">"; return html; }} ,{field: 'outEnable', align: 'center',title: '可出', templet:function(row){ var html = "<input value='outEnable' type='checkbox' lay-skin='primary' lay-filter='tableCheckbox' table-index='"+row.LAY_TABLE_INDEX+"'"; if(row.outEnable === 'Y'){html += " checked ";} html += ">"; return html; }} ,{field: 'autoing', align: 'center',title: '自动', templet:function(row){ var html = "<input value='autoing' type='checkbox' lay-skin='primary' lay-filter='tableCheckbox' table-index='"+row.LAY_TABLE_INDEX+"'"; if(row.autoing === 'Y'){html += " checked ";} html += ">"; return html; }} ,{field: 'loading', align: 'center',title: '有物', templet:function(row){ var html = "<input value='loading' type='checkbox' lay-skin='primary' lay-filter='tableCheckbox' table-index='"+row.LAY_TABLE_INDEX+"'"; if(row.loading === 'Y'){html += " checked ";} html += ">"; return html; }} ,{field: 'canining', align: 'center',title: '能入', templet:function(row){ var html = "<input value='canining' type='checkbox' lay-skin='primary' lay-filter='tableCheckbox' table-index='"+row.LAY_TABLE_INDEX+"'"; if(row.canining === 'Y'){html += " checked ";} html += ">"; return html; }} ,{field: 'canouting', align: 'center',title: '能出', templet:function(row){ var html = "<input value='canouting' type='checkbox' lay-skin='primary' lay-filter='tableCheckbox' table-index='"+row.LAY_TABLE_INDEX+"'"; if(row.canouting === 'Y'){html += " checked ";} html += ">"; return html; }} ,{field: 'wrkNo', align: 'center',title: '工作号', edit:true, style:'color: blue;font-weight: bold'} ,{field: 'locType1$', align: 'center',title: '高低'} ,{field: 'barcode', align: 'center',title: '条形码'} ,{field: 'modiUser$', align: 'center',title: '修改人员',event: 'modiUser', hide:true} ,{field: 'modiTime$', align: 'center',title: '修改时间', hide:true} ,{fixed: 'right', title:'操作', align: 'center', toolbar: '#operate', width:150} ]], 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('edit(basDevp)', function (obj) { if (isNaN(obj.value)) { layer.msg("请输入数字"); tableReload(); return; } $.ajax({ url: baseUrl+"/basDevp/update/auth", headers: {'token': localStorage.getItem('token')}, data: top.reObject({ devNo: obj.data.devNo, wrkNo: obj.value }), method: 'POST', success: function (res) { if (res.code === 200){ $(".layui-laypage-btn")[0].click(); layer.msg(res.msg); } else if (res.code === 403){ top.location.href = baseUrl+"/"; }else { layer.msg(res.msg) } } }) }); // 监听排序事件 table.on('sort(basDevp)', 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(basDevp)', 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: 'basDevp_detail.html', success: function(layero, index){ layer.getChildFrame('#autoing,#loading,#canining,#canouting,#inreq1,#inreq2,#wrkNo,#barcode,#ctnType,#grossWt', index).parent().parent().hide(); 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+"/basDevp/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 = { 'basDevp': exportData, 'fields': fields }; $.ajax({ url: baseUrl+"/basDevp/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) } } }); }); break; } }); // 监听行工具事件 table.on('tool(basDevp)', 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: 'basDevp_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,#prompt', index).hide(); layer.getChildFrame('#data-detail-submit-edit', 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: 'basDevp_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('#devNo', 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 '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('#password,#createTime\\$,#status', index).parent().parent().hide(); layer.getChildFrame('#data-detail-submit,#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', 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(), devNo: $('#devNo').val(), decDesc: $('#decDesc').val(), devMk: $('#devMk').val(), inEnable: $('#inEnable').val(), outEnable: $('#outEnable').val(), autoing: $('#autoing').val(), loading: $('#loading').val(), canining: $('#canining').val(), canouting: $('#canouting').val(), fronting: $('#fronting').val(), rearing: $('#rearing').val(), uping: $('#uping').val(), downing: $('#downing').val(), inreq1: $('#inreq1').val(), inreq2: $('#inreq2').val(), wrkNo: $('#wrkNo').val(), wrkNo1: $('#wrkNo1').val(), ctnType: $('#ctnType').val(), barcode: $('#barcode').val(), inQty: $('#inQty').val(), row1: $('#row1').val(), ioTime: top.strToDate($('#ioTime\\$').val()), area: $('#area').val(), inOk: $('#inOk').val(), outOk: $('#outOk').val(), modiUser: $('#modiUser').val(), modiTime: top.strToDate($('#modiTime\\$').val()), appeUser: $('#appeUser').val(), appeTime: top.strToDate($('#appeTime\\$').val()), stdQty: $('#stdQty').val(), minWt: $('#minWt').val(), maxWt: $('#maxWt').val(), grossWt: $('#grossWt').val(), cartPos: $('#cartPos').val(), }; $.ajax({ url: baseUrl+"/basDevp/"+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); }); // 时间选择器 layDate.render({ elem: '#ioTime\\$', type: 'datetime' }); 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/admin/basDevp/basDevp.html
New file @@ -0,0 +1,58 @@ <!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"> <label class="layui-form-label">编号:</label> <div class="layui-input-inline"> <input class="layui-input" type="text" name="dev_no" placeholder="请输入" autocomplete="off"> </div> </div> <!-- 待添加 --> <div id="data-search-btn" class="layui-btn-container layui-form-item"> <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="basDevp" lay-filter="basDevp"></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> <button class="layui-btn layui-btn-primary layui-btn-sm" id="btn-export" lay-event="exportData">导出</button> </div> </script> <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 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/basDevp/basDevp.js" charset="utf-8"></script> <iframe id="detail-iframe" scrolling="auto" style="display:none;"></iframe> </body> </html> src/main/webapp/views/admin/basDevp/basDevp_detail.html
New file @@ -0,0 +1,265 @@ <!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" style="text-align: left"> <!-- <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"> <input id="devNo" class="layui-input" type="text" onkeyup="check(this.id, 'basDevp')" lay-verify="required|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="devMk" 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="inEnable" class="layui-input" type="checkBox" lay-skin="primary" lay-filter='detailCheckbox'> </div> </div> <div class="layui-inline" style="width:31%;"> <label class="layui-form-label">可 出:</label> <div class="layui-input-inline"> <input id="outEnable" class="layui-input" type="checkBox" lay-skin="primary" lay-filter='detailCheckbox'> </div> </div> <div class="layui-inline" style="width:31%;"> <label class="layui-form-label">自 动:</label> <div class="layui-input-inline"> <input id="autoing" class="layui-input" type="checkBox" lay-skin="primary" lay-filter='detailCheckbox'> </div> </div> <div class="layui-inline" style="width:31%;"> <label class="layui-form-label">有 物:</label> <div class="layui-input-inline"> <input id="loading" class="layui-input" type="checkBox" lay-skin="primary" lay-filter='detailCheckbox'> </div> </div> <div class="layui-inline" style="width:31%;"> <label class="layui-form-label">能 入:</label> <div class="layui-input-inline"> <input id="canining" class="layui-input" type="checkBox" lay-skin="primary" lay-filter='detailCheckbox'> </div> </div> <div class="layui-inline" style="width:31%;"> <label class="layui-form-label">能 出:</label> <div class="layui-input-inline"> <input id="canouting" class="layui-input" type="checkBox" lay-skin="primary" lay-filter='detailCheckbox'> </div> </div> <div class="layui-inline" style="width:31%;display: none"> <label class="layui-form-label">:</label> <div class="layui-input-inline"> <input id="fronting" 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="rearing" 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="uping" 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="downing" class="layui-input" type="text"> </div> </div> <div class="layui-inline" style="width:31%;"> <label class="layui-form-label">需 求 1:</label> <div class="layui-input-inline"> <input id="inreq1" class="layui-input" type="checkBox" lay-skin="primary" lay-filter='detailCheckbox'> </div> </div> <div class="layui-inline" style="width:31%;"> <label class="layui-form-label">需 求 2:</label> <div class="layui-input-inline"> <input id="inreq2" class="layui-input" type="checkBox" lay-skin="primary" lay-filter='detailCheckbox'> </div> </div> <div class="layui-inline" style="width:31%;"> <label class="layui-form-label">工 作 号:</label> <div class="layui-input-inline"> <input id="wrkNo" 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="wrkNo1" 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="ctnType" 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="barcode" 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="inQty" 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="row1" 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="ioTime$" 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"> <input id="area" 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="inOk" 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="outOk" 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" 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" 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> <div class="layui-inline" style="width:31%;display: none"> <label class="layui-form-label">:</label> <div class="layui-input-inline"> <input id="stdQty" 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="minWt" 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="maxWt" 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="grossWt" 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="cartPos" 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="decDesc" class="layui-input" type="text"> </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/basDevp/basDevp.js" charset="utf-8"></script> </html>