From 5bf2b51ec743cd422a0eb3277b9c93a08c700315 Mon Sep 17 00:00:00 2001
From: Junjie <fallin.jie@qq.com>
Date: 星期一, 10 二月 2025 08:46:30 +0800
Subject: [PATCH] #

---
 /dev/null                                                   |  522 -----------------
 src/main/webapp/views/admin/basDevp/basDevp.html            |   58 +
 src/main/java/com/zy/asrs/controller/BasDevpController.java |  133 ++++
 src/main/webapp/static/js/basDevp/basDevp.js                |  569 ++++++++++++++++++
 src/main/java/com/zy/core/thread/SiemensDevpThread.java     |  207 ------
 src/main/webapp/views/admin/basDevp/basDevp_detail.html     |  265 ++++++++
 6 files changed, 1,028 insertions(+), 726 deletions(-)

diff --git a/src/main/java/com/zy/asrs/controller/BasDevpController.java b/src/main/java/com/zy/asrs/controller/BasDevpController.java
new file mode 100644
index 0000000..15e356c
--- /dev/null
+++ b/src/main/java/com/zy/asrs/controller/BasDevpController.java
@@ -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();
+    }
+
+}
diff --git a/src/main/java/com/zy/core/thread/LiftThread.java b/src/main/java/com/zy/core/thread/LiftThread.java
deleted file mode 100644
index 2854b0a..0000000
--- a/src/main/java/com/zy/core/thread/LiftThread.java
+++ /dev/null
@@ -1,522 +0,0 @@
-//package com.zy.core.thread;
-//
-//import HslCommunication.Core.Types.OperateResult;
-//import HslCommunication.Core.Types.OperateResultExOne;
-//import HslCommunication.Profinet.Siemens.SiemensPLCS;
-//import HslCommunication.Profinet.Siemens.SiemensS7Net;
-//import com.alibaba.fastjson.JSON;
-//import com.core.common.DateUtils;
-//import com.core.common.SpringUtils;
-//import com.core.exception.CoolException;
-//import com.zy.asrs.entity.BasLift;
-//import com.zy.asrs.entity.BasLiftOpt;
-//import com.zy.asrs.entity.DeviceDataLog;
-//import com.zy.asrs.mapper.WrkMastMapper;
-//import com.zy.asrs.service.BasLiftOptService;
-//import com.zy.asrs.service.BasLiftService;
-//import com.zy.asrs.service.DeviceDataLogService;
-//import com.zy.asrs.utils.Utils;
-//import com.zy.common.utils.RedisUtil;
-//import com.zy.core.News;
-//import com.zy.core.ThreadHandler;
-//import com.zy.core.cache.MessageQueue;
-//import com.zy.core.cache.OutputQueue;
-//import com.zy.core.enums.*;
-//import com.zy.core.model.LiftSlave;
-//import com.zy.core.model.Task;
-//import com.zy.core.model.command.*;
-//import com.zy.core.model.protocol.LiftStaProtocol;
-//import com.zy.core.model.protocol.LiftProtocol;
-//import com.zy.core.model.protocol.StaProtocol;
-//import lombok.Data;
-//import lombok.extern.slf4j.Slf4j;
-//
-//import java.text.MessageFormat;
-//import java.util.*;
-//
-///**
-// * 鎻愬崌鏈虹嚎绋�
-// */
-//@Data
-//@Slf4j
-//public class LiftThread implements  Runnable, ThreadHandler {
-//
-//    private SiemensS7Net siemensS7Net;
-//    private LiftSlave slave;
-//    private LiftProtocol liftProtocol;
-//    private RedisUtil redisUtil;
-//    private List<LiftStaProtocol> liftStaProtocols = new ArrayList<>();
-//
-//    public LiftThread(LiftSlave slave,RedisUtil redisUtil) {
-//        this.slave = slave;
-//        this.redisUtil = redisUtil;
-//
-//        //鍒濆鍖栫珯鐐�
-//        for (LiftSlave.Sta sta : this.slave.getSta()) {
-//            LiftStaProtocol liftStaProtocol = new LiftStaProtocol();
-//            liftStaProtocol.setStaNo(sta.getStaNo());//绔欑偣鍙�
-//            liftStaProtocol.setLev(sta.getLev());//绔欑偣妤煎眰
-//            String locNo = Utils.getLocNo(this.slave.getStaRow(), this.slave.getStaBay(), sta.getLev());
-//            liftStaProtocol.setLocNo(locNo);//绔欑偣搴撲綅鍙�
-//            liftStaProtocol.setLiftNo(sta.getLiftNo());//鎻愬崌鏈哄彿
-//            liftStaProtocols.add(liftStaProtocol);
-//        }
-//
-//    }
-//
-//    @Override
-//    public void run() {
-//        this.connect();
-//        while (true) {
-//            try {
-//                int step = 1;
-//                Task task = MessageQueue.poll(SlaveType.Lift, slave.getId());
-//                if (task != null) {
-//                    step = task.getStep();
-//                }
-//                switch (step) {
-//                    // 璇绘暟鎹�
-//                    case 1:
-//                        read();
-//                        break;
-//                    // 鍐欏叆鏁版嵁
-//                    case 2:
-//                        write((NyLiftCommand) task.getData());
-//                        break;
-//                    //鍒嗛厤浠诲姟
-//                    case 3:
-//                        assignWork((LiftAssignCommand) task.getData());
-//                        break;
-//                    case 4:
-//                        write2((HashMap<String, Object>) task.getData());
-//                    default:
-//                        break;
-//                }
-//                Thread.sleep(500);
-//            } catch (Exception e) {
-//                e.printStackTrace();
-//            }
-//        }
-//    }
-//
-//    @Override
-//    public boolean connect() {
-//        boolean result = false;
-//        //-------------------------鎻愬崌鏈鸿繛鎺ユ柟娉�------------------------//
-//        siemensS7Net = new SiemensS7Net(SiemensPLCS.S1200, slave.getIp());
-//        OperateResult connect = siemensS7Net.ConnectServer();
-//        if(connect.IsSuccess){
-//            result = true;
-//            OutputQueue.CRN.offer(MessageFormat.format( "銆恵0}銆戞彁鍗囨満plc杩炴帴鎴愬姛 ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort()));
-//            log.info("鎻愬崌鏈簆lc杩炴帴鎴愬姛 ===>> [id:{}] [ip:{}] [port:{}] ", slave.getId(), slave.getIp(), slave.getPort());
-//        } else {
-//            OutputQueue.CRN.offer(MessageFormat.format("銆恵0}銆戞彁鍗囨満plc杩炴帴澶辫触锛侊紒锛� ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort()));
-//            log.error("鎻愬崌鏈簆lc杩炴帴澶辫触锛侊紒锛� ===>> [id:{}] [ip:{}] [port:{}] ", slave.getId(), slave.getIp(), slave.getPort());
-//        }
-//        siemensS7Net.ConnectClose();
-//        //-------------------------鎻愬崌鏈鸿繛鎺ユ柟娉�------------------------//
-//        return result;
-//    }
-//
-//    @Override
-//    public void close() {
-//        siemensS7Net.ConnectClose();
-//    }
-//
-//    private void read() {
-//        try {
-//            readStatus();
-//
-//            //鎻愬崌鏈哄浜庤繍琛岀姸鎬侊紝灏嗘爣璁扮疆涓篺alse
-//            if (liftProtocol.getBusy()) {
-//                liftProtocol.setPakMk(false);
-//            }
-//
-//            //鎻愬崌鏈哄浜庢湭杩愯銆佸氨缁�佹爣璁皌rue銆佹湁浠诲姟鍙�
-//            if (!liftProtocol.getBusy()
-//                    && !liftProtocol.getPakMk()
-//                    && liftProtocol.getTaskNo() != 0) {
-//                //杩樻湁鏈畬鎴愮殑鍛戒护
-//                executeWork(liftProtocol.getTaskNo());
-//            }
-//        } catch (Exception e) {
-//            OutputQueue.LIFT.offer(MessageFormat.format("銆恵0}銆戞彁鍗囨満plc鐘舵�佷俊鎭け璐� ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort()));
-//        }
-//    }
-//
-//    private void readStatus() {
-//        try {
-//            //鑾峰彇鎻愬崌鏈烘暟鎹�
-//            OperateResultExOne<byte[]> result1 = siemensS7Net.Read("DB82.4.0", (short) 10);
-//            if (result1.IsSuccess) {
-//                if (null == liftProtocol) {
-//                    liftProtocol = new LiftProtocol();
-//                    liftProtocol.setLiftNo(slave.getId().shortValue());
-//                }
-//                //璇诲彇4.0-4.7鏁版嵁
-//                boolean[] status1 = siemensS7Net.getByteTransform().TransBool(result1.Content, 0, 1);
-//                //璇诲彇5.0-5.7鏁版嵁
-//                boolean[] status2 = siemensS7Net.getByteTransform().TransBool(result1.Content, 1, 1);
-//                //妯″紡
-//                liftProtocol.setModel(status1[0]);
-//                //蹇欓棽
-//                liftProtocol.setBusy(!status1[1]);
-//                //鍓嶈秴闄�
-//                liftProtocol.setFrontOverrun(status1[4]);
-//                //鍚庤秴闄�
-//                liftProtocol.setBackOverrun(status1[5]);
-//                //宸﹁秴闄�
-//                liftProtocol.setLeftOverrun(status1[6]);
-//                //鍙宠秴闄�
-//                liftProtocol.setRightOverrun(status1[7]);
-//                //瓒呴珮
-//                liftProtocol.setOverHeight(status2[0]);
-//                //瓒呴噸
-//                liftProtocol.setOverWeight(status2[1]);
-//                //鏈夋墭鐩�
-//                liftProtocol.setHasTray(status2[5]);
-//                //鏈夊皬杞�
-//                liftProtocol.setHasCar(status2[6]);
-//                //璁惧鏁呴殰
-//                liftProtocol.setDeviceError(status2[7]);
-//                //浠诲姟鍙�
-//                liftProtocol.setTaskNo(siemensS7Net.getByteTransform().TransInt16(result1.Content, 2));
-//                //鐩殑鍦板潃
-//                liftProtocol.setDistAddress(siemensS7Net.getByteTransform().TransInt16(result1.Content, 4));
-//                //宸插畬鎴愪换鍔″彿
-//                liftProtocol.setCompleteTaskNo(siemensS7Net.getByteTransform().TransInt16(result1.Content, 6));
-//                //褰撳墠妤煎眰
-//                short lev = siemensS7Net.getByteTransform().TransInt16(result1.Content, 8);
-//                if (lev >= 7 && lev <= 9) {
-//                    lev -= 2;
-//                } else if (lev >= 12 && lev <= 14) {
-//                    lev -= 4;
-//                }
-//                liftProtocol.setLev(lev);
-//
-//                //灏嗘彁鍗囨満鐘舵�佷繚瀛樿嚦鏁版嵁搴�
-//                BasLiftService liftService = SpringUtils.getBean(BasLiftService.class);
-//                BasLift basLift = liftService.selectById(liftProtocol.getLiftNo());
-//                if (basLift == null) {
-//                    basLift = new BasLift();
-//                    //鎻愬崌鏈哄彿
-//                    basLift.setLiftNo(slave.getId());
-//                    liftService.insert(basLift);
-//                }
-//                basLift.setStatus(liftProtocol.getProtocolStatus());
-//                basLift.setWrkNo(liftProtocol.getTaskNo().intValue());
-//                basLift.setUpdateTime(new Date());
-//                basLift.setPakMk(liftProtocol.getPakMk());
-//                basLift.setDeviceStatus(JSON.toJSONString(liftProtocol));
-//                if (liftService.updateById(basLift)) {
-//                    OutputQueue.LIFT.offer(MessageFormat.format("銆恵0}銆慬id:{1}] <<<<< 瀹炴椂鏁版嵁鏇存柊鎴愬姛",DateUtils.convert(new Date()), slave.getId()));
-////                    log.info(MessageFormat.format("銆恵0}銆慬id:{1}] <<<<< 瀹炴椂鏁版嵁鏇存柊鎴愬姛",DateUtils.convert(new Date()), slave.getId()));
-//                }
-//            }else {
-//                OutputQueue.LIFT.offer(MessageFormat.format("銆恵0}銆憑1}鎻愬崌鏈簆lc鐘舵�佷俊鎭け璐�", DateUtils.convert(new Date()), slave.getId()));
-//                throw new CoolException(MessageFormat.format( "鎻愬崌鏈簆lc鐘舵�佷俊鎭け璐� ===>> [id:{0}] [ip:{1}] [port:{2}]", slave.getId(), slave.getIp(), slave.getPort()));
-//            }
-//            Thread.sleep(200);
-//
-//            //鑾峰彇鎻愬崌鏈虹珯鐐规暟鎹�
-//            OperateResultExOne<byte[]> result2 = siemensS7Net.Read("DB82.14.0", (short) (10 * liftStaProtocols.size()));
-//            if (result1.IsSuccess) {
-//                for (int i = 0; i < slave.getSta().size(); i++) {
-//                    LiftStaProtocol liftStaProtocol = liftStaProtocols.get(i);
-//                    int i1 = 0 + (i * 10);
-//                    int i2 = 1 + (i * 10);
-//                    //璇诲彇x4.0-x4.7鏁版嵁
-//                    boolean[] status1 = siemensS7Net.getByteTransform().TransBool(result2.Content, i1, 1);
-//                    //璇诲彇x5.0-x5.7鏁版嵁
-//                    boolean[] status2 = siemensS7Net.getByteTransform().TransBool(result2.Content, i2, 1);
-//                    //妯″紡
-//                    liftStaProtocol.setModel(status1[0]);
-//                    //蹇欓棽
-//                    liftStaProtocol.setBusy(!status1[1]);
-//                    //鏈夋墭鐩�
-//                    liftStaProtocol.setHasTray(status1[2]);
-//                    //鏈夊皬杞�
-//                    liftStaProtocol.setHasCar(status2[6]);
-//                    //璁惧鏁呴殰
-//                    liftStaProtocol.setDeviceError(status2[7]);
-//                    //浠诲姟鍙�
-//                    liftStaProtocol.setTaskNo(siemensS7Net.getByteTransform().TransInt16(result2.Content, 2));
-//                }
-//            }
-//
-//            Thread.sleep(100);
-//            //鑾峰彇鎻愬崌鏈哄紓甯告暟鎹�
-//            OperateResultExOne<byte[]> result3 = siemensS7Net.Read("DB82.22.0", (short) 2);
-//            if (result3.IsSuccess) {
-//                liftProtocol.setErrorCode(siemensS7Net.getByteTransform().TransInt16(result3.Content, 0));//閿欒鐮�
-//            }
-//
-//            if (System.currentTimeMillis() - liftProtocol.getDeviceDataLog() > 1000 * 5) {
-//                //閲囬泦鏃堕棿瓒呰繃5s锛屼繚瀛樹竴娆℃暟鎹褰�
-//                //淇濆瓨鏁版嵁璁板綍
-//                DeviceDataLogService deviceDataLogService = SpringUtils.getBean(DeviceDataLogService.class);
-//                DeviceDataLog deviceDataLog = new DeviceDataLog();
-//                deviceDataLog.setOriginData(Base64.getEncoder().encodeToString(result1.Content));
-//                deviceDataLog.setWcsData(JSON.toJSONString(liftProtocol));
-//                deviceDataLog.setType("lift");
-//                deviceDataLog.setDeviceNo(liftProtocol.getLiftNo().intValue());
-//                deviceDataLog.setCreateTime(new Date());
-//                deviceDataLogService.insert(deviceDataLog);
-//
-//                //鏇存柊閲囬泦鏃堕棿
-//                liftProtocol.setDeviceDataLog(System.currentTimeMillis());
-//            }
-//
-//        } catch (Exception e) {
-//            OutputQueue.LIFT.offer(MessageFormat.format("銆恵0}銆戞彁鍗囨満plc鐘舵�佷俊鎭け璐� ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort()));
-//        }
-//    }
-//
-//    private boolean write(NyLiftCommand command){
-//        if (null == command) {
-//            News.error("鎻愬崌鏈哄啓鍏ュ懡浠や负绌�");
-//            return false;
-//        }
-//
-//        command.setLiftNo(slave.getId().shortValue());
-//        short[] array = getCommandArr(command);//鑾峰彇鍛戒护鎶ユ枃
-//
-//        OperateResult result = siemensS7Net.Write("DB83.0", array);
-//        if (result != null && result.IsSuccess) {
-//            liftProtocol.setSendTime(System.currentTimeMillis());//鎸囦护涓嬪彂鏃堕棿
-//            News.info("鎻愬崌鏈哄懡浠や笅鍙慬id:{}] >>>>> {}", slave.getId(), JSON.toJSON(command));
-//            OutputQueue.LIFT.offer(MessageFormat.format("銆恵0}銆慬id:{1}] >>>>> 鍛戒护涓嬪彂锛� {2}", DateUtils.convert(new Date()), slave.getId(), JSON.toJSON(command)));
-//            return true;
-//        } else {
-//            OutputQueue.LIFT.offer(MessageFormat.format("銆恵0}銆戝啓鍏ユ彁鍗囨満plc鏁版嵁澶辫触 ===>> [id:{1}] [ip:{2}] [port:{3}],娆℃暟锛歿}", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort()));
-//            News.error("鍐欏叆鎻愬崌鏈簆lc鏁版嵁澶辫触 ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort());
-//            return false;
-//        }
-//    }
-//
-//    //鑾峰彇鍛戒护鎶ユ枃
-//    private short[] getCommandArr(NyLiftCommand command) {
-//        // 寮�濮嬩换鍔�
-//        short[] array = new short[4];
-//        if (command.getTaskModel() != null) {
-//            //浠诲姟绫诲瀷
-//            array[0] = command.getTaskModel();
-//        }
-//        if (command.getSourceSta() != null) {
-//            //婧愮珯鍙扮紪鍙�
-//            array[1] = command.getSourceSta();
-//        }
-//        if (command.getTargetSta() != null) {
-//            //鐩爣绔欏彴缂栧彿
-//            array[2] = command.getTargetSta();
-//        }
-//        if (command.getTaskNo() != null) {
-//            //浠诲姟鍙�
-//            array[3] = command.getTaskNo();
-//        }
-//        return array;
-//    }
-//
-//    //鍒嗛厤浠诲姟
-//    private void assignWork(LiftAssignCommand assignCommand) {
-//        LiftRedisCommand redisCommand = new LiftRedisCommand();
-//        redisCommand.setLiftNo(assignCommand.getLiftNo());//鎻愬崌鏈哄彿
-//        redisCommand.setWrkNo(assignCommand.getTaskNo());//宸ヤ綔鍙�
-//        redisCommand.setCommandStep(0);//鍛戒护鎵ц姝ュ簭
-//        redisCommand.setAssignCommand(assignCommand);//鍛戒护
-//        //浠诲姟鏁版嵁淇濆瓨鍒皉edis
-//        redisUtil.set(RedisKeyType.LIFT.key + assignCommand.getTaskNo(), JSON.toJSONString(redisCommand));
-//        liftProtocol.setAssignCommand(assignCommand);
-//        liftProtocol.setProtocolStatus(LiftProtocolStatusType.WORKING);
-//        //鎵ц涓嬪彂浠诲姟
-//        executeWork(assignCommand.getTaskNo());
-//    }
-//
-//    //鎵ц浠诲姟
-//    private boolean executeWork(Short wrkNo) {
-//        //璇诲彇redis鏁版嵁
-//        if (wrkNo == null) {
-//            return false;
-//        }
-//
-//        if (wrkNo >= 20000 && wrkNo <= 30000) {
-//            //鎻愬崌鏈鸿澶囧伐浣滃彿锛岄渶瑕佹煡璇㈠搴斾换鍔″彿
-//            BasLiftOptService basLiftOptService = SpringUtils.getBean(BasLiftOptService.class);
-//            BasLiftOpt basLiftOpt = basLiftOptService.selectByDeviceWrk(liftProtocol.getTaskNo().toString(), liftProtocol.getLiftNo().intValue());
-//            if (basLiftOpt != null) {
-//                wrkNo = basLiftOpt.getWrkNo().shortValue();
-//            }
-//        }
-//
-//        Object o = redisUtil.get(RedisKeyType.LIFT.key + wrkNo);
-//        if (o == null) {
-//            return false;
-//        }
-//        LiftRedisCommand redisCommand = JSON.parseObject(o.toString(), LiftRedisCommand.class);
-//        List<NyLiftCommand> commands = redisCommand.getAssignCommand().getCommands();
-//        //褰撳墠姝ュ簭
-//        int commandStep = redisCommand.getCommandStep();
-//        //鎬绘搴�
-//        int size = commands.size();
-//
-//        if (!redisCommand.getLiftNo().equals(liftProtocol.getLiftNo())) {
-//            return false;
-//        }
-//
-//        if (commandStep != 0) {
-//            //鍒ゆ柇涓婁竴鏉℃寚浠ゆ槸鍚﹀仛瀹�
-//            NyLiftCommand lastCommand = commands.get(commandStep - 1);//涓婁竴鏉℃寚浠�
-//            if (!liftProtocol.getBusy() && liftProtocol.getTaskNo().equals(lastCommand.getTaskNo())) {
-//                //鎻愬崌鏈虹┖闂层�佷笖鎻愬崌鏈哄伐浣滃彿涓庝笂涓�鏉℃寚浠ゅ伐浣滃彿鐩稿悓
-//                lastCommand.setComplete(true);//鏍囪浠诲姟瀹屾垚
-//            }
-//
-//            //浠诲姟鏁版嵁淇濆瓨鍒皉edis
-//            redisUtil.set(RedisKeyType.LIFT.key + redisCommand.getWrkNo(), JSON.toJSONString(redisCommand));
-//
-//            if (!lastCommand.getComplete()) {
-//                //涓婁竴鏉′换鍔℃湭瀹屾垚锛岀姝笅鍙戝懡浠�
-//                return false;
-//            }
-//
-//            //鍒ゆ柇鏄惁涓烘渶鍚庝竴鏉″懡浠や笖鍛戒护鎵ц瀹屾垚锛屾姏鍑虹瓑寰呯‘璁ょ姸鎬�
-//            NyLiftCommand endCommand = commands.get(commands.size() - 1);
-//            if (endCommand.getComplete()) {
-//                //宸叉墽琛屽畬鎴�
-//                //鍒犻櫎redis
-//                redisUtil.del(RedisKeyType.LIFT.key + redisCommand.getWrkNo());
-//
-//                //瀵逛富绾跨▼鎶涘嚭绛夊緟纭鐘舵�亀aiting
-//                liftProtocol.setProtocolStatus(LiftProtocolStatusType.WAITING);
-//                News.info("鎻愬崌鏈轰换鍔℃墽琛屼笅鍙戝畬鎴愭墽琛岀粨鏉燂紝鎻愬崌鏈哄彿={}锛屼换鍔℃暟鎹�={}", redisCommand.getLiftNo(), JSON.toJSON(redisCommand));
-//            }
-//
-//        }
-//
-//        //鍙栧嚭鍛戒护
-//        NyLiftCommand command = commands.get(commandStep);
-//
-//        //涓嬪彂鍛戒护
-//        if (!write(command)) {
-//            News.error("鎻愬崌鏈哄懡浠や笅鍙戝け璐ワ紝鎻愬崌鏈哄彿={}锛屼换鍔℃暟鎹�={}", command.getLiftNo(), JSON.toJSON(command));
-//            return false;
-//        }
-//
-//        liftProtocol.setProtocolStatus(LiftProtocolStatusType.WORKING);
-//        News.info("鎻愬崌鏈哄懡浠や笅鍙戞垚鍔燂紝鎻愬崌鏈哄彿={}锛屼换鍔℃暟鎹�={}", command.getLiftNo(), JSON.toJSON(command));
-//
-//        //灏嗘爣璁扮疆涓簍rue(闃叉閲嶅彂)
-//        liftProtocol.setPakMk(true);
-//
-//        //淇濆瓨鏁版嵁鍒版暟鎹簱鍋氭祦姘�
-//        BasLiftOptService liftOptService = SpringUtils.getBean(BasLiftOptService.class);
-//        if (liftOptService != null) {
-//            short[] commandArr = getCommandArr(command);//鑾峰彇鍛戒护鎶ユ枃
-//            BasLiftOpt opt = new BasLiftOpt(
-//                    redisCommand.getWrkNo().intValue(),
-//                    liftProtocol.getLiftNo().intValue(),
-//                    new Date(),
-//                    null,
-//                    null,
-//                    null,
-//                    JSON.toJSONString(command),
-//                    JSON.toJSONString(liftProtocol)
-//            );
-//            opt.setDeviceWrk(command.getTaskNo().toString());//璁惧宸ヤ綔鍙�
-//            liftOptService.insert(opt);
-//        }
-//
-//        //鏇存柊redis鏁版嵁
-//        //姝ュ簭澧炲姞
-//        commandStep++;
-//        redisCommand.setCommandStep(commandStep);
-//        //浠诲姟鏁版嵁淇濆瓨鍒皉edis
-//        redisUtil.set(RedisKeyType.LIFT.key + redisCommand.getWrkNo(), JSON.toJSONString(redisCommand));
-//
-////        //鍒ゆ柇鏁版嵁鏄惁鎵ц瀹屾垚
-////        if (commandStep < size - 1) {
-////            //鏇存柊redis鏁版嵁
-////            //姝ュ簭澧炲姞
-////            commandStep++;
-////            redisCommand.setCommandStep(commandStep);
-////            //浠诲姟鏁版嵁淇濆瓨鍒皉edis
-////            redisUtil.set(RedisKeyType.LIFT.key + redisCommand.getWrkNo(), JSON.toJSONString(redisCommand));
-////        }else {
-////            //宸叉墽琛屽畬鎴�
-////            //鍒犻櫎redis
-////            redisUtil.del(RedisKeyType.LIFT.key + redisCommand.getWrkNo());
-////
-////            //瀵逛富绾跨▼鎶涘嚭绛夊緟纭鐘舵�亀aiting
-////            liftProtocol.setProtocolStatus(LiftProtocolStatusType.WAITING);
-////            News.info("鎻愬崌鏈轰换鍔℃墽琛屼笅鍙戝畬鎴愮瓑寰呮墽琛岀粨鏉燂紝鎻愬崌鏈哄彿={}锛屼换鍔℃暟鎹�={}", command.getLiftNo(), JSON.toJSON(command));
-////        }
-//
-//        if (redisCommand.getAssignCommand().getTaskMode() == NyLiftTaskModelType.RESET.id.shortValue()) {
-//            //澶嶄綅鍛戒护
-//            //宸ヤ綔鍙锋竻闆�
-//            liftProtocol.setTaskNo((short) 0);
-//            //浠ょ墝娓呴浂
-//            liftProtocol.setToken(0);
-//            //璁剧疆鎻愬崌鏈轰负绌洪棽鐘舵��
-//            liftProtocol.setProtocolStatus(LiftProtocolStatusType.IDLE);
-//            //浠诲姟鎸囦护娓呴浂
-//            liftProtocol.setAssignCommand(null);
-//        }
-//
-//        return true;
-//    }
-//
-//    //缁欐彁鍗囨満鍐欏叆杩涘嚭鐘舵��
-//    private void write2(HashMap<String,Object> data) {
-////        //鍑�
-////        status = true;
-////        //杩�
-////        status = false;
-//        int lev = Integer.parseInt(data.get("lev").toString());
-//        boolean status = Boolean.parseBoolean(data.get("status").toString());
-//
-//        ArrayList<String> list = new ArrayList<String>(){{
-//            add("83.8.0");
-//            add("83.8.1");
-//            add("83.8.2");
-//            add("83.8.3");
-//            add("83.8.4");
-//            add("83.8.5");
-//            add("83.8.6");
-//            add("83.8.7");
-//            add("83.9.0");
-//            add("83.9.1");
-//        }};
-//        OperateResult result = siemensS7Net.Write("DB" + list.get(lev - 1), status);
-//        if (result != null && result.IsSuccess) {
-//            News.info("鎻愬崌鏈哄懡浠や笅鍙慬id:{}]", slave.getId());
-//        } else {
-//            News.error("鍐欏叆鎻愬崌鏈簆lc鏁版嵁澶辫触 ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort());
-//        }
-//    }
-//
-//    /******************************************************************************************/
-//    /**************************************** 娴嬭瘯涓撶敤 *****************************************/
-//    /*****************************************************************************************/
-//    public static void main(String[] args) throws InterruptedException {
-//        LiftSlave slave = new LiftSlave();
-//        slave.setId(1);
-//        slave.setIp("192.168.4.24");
-//        slave.setPort(502);
-////        LiftThread thread = new LiftThread(slave,);
-////        thread.connect();
-////        thread.readStatus();
-////
-////        LiftCommand command = new LiftCommand();
-////        command.setRun((short) 1);
-////        command.setDistPosition((short) 12);
-////        command.setSpeed((short) 300);
-////        command.setHeight2((short) 100);
-////        command.setHeight3((short) 200);
-////        command.setHeight4((short) 303);
-////        command.setLiftLock(true);
-////        thread.write(command);
-//
-//    }
-//
-//}
diff --git a/src/main/java/com/zy/core/thread/SiemensDevpThread.java b/src/main/java/com/zy/core/thread/SiemensDevpThread.java
index fc563b1..e3e3703 100644
--- a/src/main/java/com/zy/core/thread/SiemensDevpThread.java
+++ b/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()));
diff --git a/src/main/webapp/static/js/basDevp/basDevp.js b/src/main/webapp/static/js/basDevp/basDevp.js
new file mode 100644
index 0000000..e396636
--- /dev/null
+++ b/src/main/webapp/static/js/basDevp/basDevp.js
@@ -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();
+    }
+});
diff --git a/src/main/webapp/views/admin/basDevp/basDevp.html b/src/main/webapp/views/admin/basDevp/basDevp.html
new file mode 100644
index 0000000..cfdf4c2
--- /dev/null
+++ b/src/main/webapp/views/admin/basDevp/basDevp.html
@@ -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>
+
diff --git a/src/main/webapp/views/admin/basDevp/basDevp_detail.html b/src/main/webapp/views/admin/basDevp/basDevp_detail.html
new file mode 100644
index 0000000..fbb2d13
--- /dev/null
+++ b/src/main/webapp/views/admin/basDevp/basDevp_detail.html
@@ -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>
+

--
Gitblit v1.9.1