From 5833f3f3aa5313fa1170cd9ab0c5857f964ba96c Mon Sep 17 00:00:00 2001
From: zhang <zc857179121@qq.com>
Date: 星期六, 16 八月 2025 13:20:12 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/ghjtasrs' into ghjtasrs

---
 src/main/java/com/zy/asrs/service/WorkService.java                   |    6 
 src/main/resources/mapper/OrderMapper.xml                            |   11 
 src/main/java/com/zy/asrs/controller/OrderController.java            |   30 +
 src/main/java/com/zy/asrs/service/OrderService.java                  |    2 
 src/main/webapp/static/js/order/outMes.js                            |  458 +++++++++++++++++++
 src/main/webapp/static/js/orderTableMes.js                           |  174 +++++++
 src/main/java/com/zy/asrs/controller/OpenController.java             |   13 
 src/main/java/com/zy/asrs/mapper/OrderDetlMapper.java                |    2 
 src/main/java/com/zy/asrs/entity/param/GroupOrderConfirmParam.java   |   23 +
 src/main/webapp/views/review/review.html                             |    8 
 src/main/webapp/static/js/wrkMast/wrkMast.js                         |    2 
 src/main/java/com/zy/asrs/service/OpenService.java                   |    2 
 src/main/resources/mapper/OrderDetlMapper.xml                        |   35 +
 src/main/java/com/zy/asrs/service/impl/OrderServiceImpl.java         |    4 
 src/main/java/com/zy/asrs/entity/param/PakoutRequest.java            |   12 
 src/main/webapp/static/js/order/out.js                               |   54 ++
 src/main/java/com/zy/asrs/mapper/OrderMapper.java                    |    4 
 src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java          |  126 +++++
 src/main/webapp/views/order/out.html                                 |    2 
 src/main/java/com/zy/asrs/entity/param/GwmsGenerateInventoryDto.java |    2 
 src/main/webapp/static/js/common.js                                  |    2 
 src/main/java/com/zy/asrs/controller/OutController.java              |   14 
 src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java          |   60 ++
 src/main/webapp/views/order/outMes.html                              |  321 +++++++++++++
 24 files changed, 1,336 insertions(+), 31 deletions(-)

diff --git a/src/main/java/com/zy/asrs/controller/OpenController.java b/src/main/java/com/zy/asrs/controller/OpenController.java
index 5902ae2..ab3eb29 100644
--- a/src/main/java/com/zy/asrs/controller/OpenController.java
+++ b/src/main/java/com/zy/asrs/controller/OpenController.java
@@ -476,6 +476,19 @@
         return R.ok(param);
     }
 
+    /**
+     * 璁″垝缁勮揣鍗�
+     */
+    @PostMapping("/groupOrderConfirm/auth/v1")
+    @AppAuth(memo = "璁″垝鍗曟嵁涓嬪彂")
+    public synchronized R groupOrderConfirm(@RequestHeader(required = false) String appkey,
+                                                        @RequestBody GroupOrderConfirmParam param,
+                                                        HttpServletRequest request) {
+//        auth(appkey, param, request);
+        openService.groupOrderConfirm(param);
+        return R.ok(param);
+    }
+
     /*...........................涓婇ザ姹熼摐..............浠ヤ笂.............寰愬伐姹変簯...........................*/
 
 }
diff --git a/src/main/java/com/zy/asrs/controller/OrderController.java b/src/main/java/com/zy/asrs/controller/OrderController.java
index 8465ddb..3d7fac7 100644
--- a/src/main/java/com/zy/asrs/controller/OrderController.java
+++ b/src/main/java/com/zy/asrs/controller/OrderController.java
@@ -83,7 +83,7 @@
         if (!Cools.isEmpty(orderNo)) {
             wrapper.like("order_no", orderNo);
         }
-        wrapper.le("settle", 2).eq("status", 1);
+        wrapper.le("settle", 2).eq("status", 1).ne("doc_type",25);
         wrapper.orderBy("create_time", false);
         List<Order> orders = orderService.selectList(wrapper);
         // 淇濈暀鍑哄簱鍗�
@@ -104,6 +104,34 @@
         return R.ok().add(orders);
     }
 
+    @RequestMapping(value = "/order/nav/listMes/auth")
+    @ManagerAuth
+    public R navListMes(@RequestParam(required = false) String orderNo){
+        EntityWrapper<Order> wrapper = new EntityWrapper<>();
+        if (!Cools.isEmpty(orderNo)) {
+            wrapper.like("order_no", orderNo);
+        }
+        wrapper.le("settle", 2).eq("status", 0).eq("doc_type", 25);
+        wrapper.orderBy("create_time", false);
+        List<Order> orders = orderService.selectList(wrapper);
+//        // 淇濈暀鍑哄簱鍗�
+//        if (!Cools.isEmpty(orders)) {
+//            Iterator<Order> iterator = orders.iterator();
+//            while (iterator.hasNext()) {
+//                Order order = iterator.next();
+//                if (order.getDocType() != null) {
+//                    DocType docType = docTypeService.selectById(order.getDocType());
+//                    if (docType != null) {
+//                        if (docType.getPakout() == 0) {
+//                            iterator.remove();
+//                        }
+//                    }
+//                }
+//            }
+//        }
+        return R.ok().add(orders);
+    }
+
     @RequestMapping(value = "/order/head/page/auth")
     @ManagerAuth
     public R head(@RequestParam(defaultValue = "1")Integer curr,
diff --git a/src/main/java/com/zy/asrs/controller/OutController.java b/src/main/java/com/zy/asrs/controller/OutController.java
index c43b525..379b1a9 100644
--- a/src/main/java/com/zy/asrs/controller/OutController.java
+++ b/src/main/java/com/zy/asrs/controller/OutController.java
@@ -5,6 +5,7 @@
 import com.core.common.*;
 import com.core.exception.CoolException;
 import com.zy.asrs.entity.*;
+import com.zy.asrs.entity.param.PakoutRequest;
 import com.zy.asrs.entity.param.StockOutParam;
 import com.zy.asrs.service.*;
 import com.zy.common.model.LocDetlDto;
@@ -55,7 +56,12 @@
         Thread.sleep(200);
         return R.ok().add(orderDetlService.selectByOrderId(orderId).stream().map(OrderDetl::getId).distinct().collect(Collectors.toList()));
     }
-
+    @PostMapping("/getMesOrder/auth")
+    @ManagerAuth
+    public R getMesOrder() {
+        List<String> orderNoList = orderService.getOrderNosByDocType(25L);
+        return R.ok().add(orderNoList);
+    }
     @PostMapping("/out/pakout/preview/auth")
     @ManagerAuth
     public R pakoutPreview(@RequestBody List<Long> ids) {
@@ -159,7 +165,9 @@
 
     @PostMapping("/out/pakout/auth")
     @ManagerAuth(memo = "璁㈠崟鍑哄簱")
-    public synchronized R pakout(@RequestBody List<LocDto> locDtos) throws InterruptedException {
+    public synchronized R pakout(@RequestBody PakoutRequest request) throws InterruptedException {
+        List<LocDto> locDtos = request.getTableCache();
+        String optionValue = request.getOptionValue();
         if (Cools.isEmpty(locDtos)) {
             return R.parse(BaseRes.PARAM);
         }
@@ -246,7 +254,7 @@
                     workService.stockOut(staNo, locDetlDtos,
                             order.getDocType() != null && order.getDocType() == 23
                                     ? IoWorkType.CHECK_OUT : null,
-                            getUserId());
+                            getUserId(),optionValue);
                 } else {
                     throw new CoolException("鎵�閫夊簱浣嶇姸鎬佷笉涓篎/D锛屽簱浣嶅彿锛�" +
                             locMast.getLocNo() + "锛屽綋鍓嶇姸鎬侊細" +
diff --git a/src/main/java/com/zy/asrs/entity/param/GroupOrderConfirmParam.java b/src/main/java/com/zy/asrs/entity/param/GroupOrderConfirmParam.java
new file mode 100644
index 0000000..7b6abc9
--- /dev/null
+++ b/src/main/java/com/zy/asrs/entity/param/GroupOrderConfirmParam.java
@@ -0,0 +1,23 @@
+package com.zy.asrs.entity.param;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class GroupOrderConfirmParam {
+    private String groupOrderNumber; //缁勮揣鍗曞彿
+    private String groupStatus; //缁勮揣鐘舵�侊細0鏈‘璁ょ粍璐с��1纭缁勮揣
+    private List<PackageGroupNo> packageGroupNos; // 澶氫釜鍖呰缁勫彿
+    private List<VolumeNumber> volumeNumbers; // 澶氫釜鍖呰缁勫彿
+
+    @Data
+    public static class PackageGroupNo {
+        private String packageGroupNo;
+    }
+
+    @Data
+    public static class VolumeNumber {
+        private String volumeNumber;
+    }
+}
diff --git a/src/main/java/com/zy/asrs/entity/param/GwmsGenerateInventoryDto.java b/src/main/java/com/zy/asrs/entity/param/GwmsGenerateInventoryDto.java
index 42a61dc..e6c3a54 100644
--- a/src/main/java/com/zy/asrs/entity/param/GwmsGenerateInventoryDto.java
+++ b/src/main/java/com/zy/asrs/entity/param/GwmsGenerateInventoryDto.java
@@ -15,6 +15,8 @@
     private List<MatList> matList; // 鏈ㄧ闆嗗悎
     //1涓�鍘傚钩搴� 2 涓�鍘傜珛搴� 3浜屽巶骞冲簱 4浜屽巶绔嬪簱
     private Integer warehouseType ;
+    private String groupOrderNumber; //缁勮揣鍗曞彿
+
     @Data
     public static class MatList{
         private String boxPos; // 绠卞瓙浣嶇疆
diff --git a/src/main/java/com/zy/asrs/entity/param/PakoutRequest.java b/src/main/java/com/zy/asrs/entity/param/PakoutRequest.java
new file mode 100644
index 0000000..09db6bd
--- /dev/null
+++ b/src/main/java/com/zy/asrs/entity/param/PakoutRequest.java
@@ -0,0 +1,12 @@
+package com.zy.asrs.entity.param;
+
+import com.zy.common.model.LocDto;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class PakoutRequest {
+    private List<LocDto> tableCache;
+    private String optionValue;
+}
diff --git a/src/main/java/com/zy/asrs/mapper/OrderDetlMapper.java b/src/main/java/com/zy/asrs/mapper/OrderDetlMapper.java
index 64b8ab3..02c7cb2 100644
--- a/src/main/java/com/zy/asrs/mapper/OrderDetlMapper.java
+++ b/src/main/java/com/zy/asrs/mapper/OrderDetlMapper.java
@@ -65,4 +65,6 @@
     List<String> selectDetlList(@Param("orderNo") String orderNo);
 
     List<OrderDetl> selectByBrand(@Param("brand") String brand);
+
+    OrderDetl selectByOrderNoAndPkgGroupNoAndVolumeNo(@Param("orderNo") String orderNo,@Param("brand") String brand,@Param("model") String model);
 }
diff --git a/src/main/java/com/zy/asrs/mapper/OrderMapper.java b/src/main/java/com/zy/asrs/mapper/OrderMapper.java
index 1354c61..61b0e7e 100644
--- a/src/main/java/com/zy/asrs/mapper/OrderMapper.java
+++ b/src/main/java/com/zy/asrs/mapper/OrderMapper.java
@@ -47,4 +47,8 @@
      * 鑾峰彇鏈畬鎴愯鍗曠粺璁′俊鎭�(orderNo涓虹┖鍒欐煡璇㈡墍鏈�)
      */
     List<OrderStatisticsDto> getUnfulfilledOrders(@Param("orderNo") String orderNo);
+
+    Order selectOrderByOrderNo(@Param("orderNo") String orderNo);
+
+    List<String> getOrderNosByDocType(@Param("docType")Long docType);
 }
diff --git a/src/main/java/com/zy/asrs/service/OpenService.java b/src/main/java/com/zy/asrs/service/OpenService.java
index 7d2cc7d..61597c6 100644
--- a/src/main/java/com/zy/asrs/service/OpenService.java
+++ b/src/main/java/com/zy/asrs/service/OpenService.java
@@ -154,5 +154,7 @@
 
     void updateBarcode();
 
+    R groupOrderConfirm(GroupOrderConfirmParam param);
+
 
 }
diff --git a/src/main/java/com/zy/asrs/service/OrderService.java b/src/main/java/com/zy/asrs/service/OrderService.java
index 5054dd9..8e7498c 100644
--- a/src/main/java/com/zy/asrs/service/OrderService.java
+++ b/src/main/java/com/zy/asrs/service/OrderService.java
@@ -28,4 +28,6 @@
 
     List<Order> selectorderNoL(String orderNo);
 
+    List<String> getOrderNosByDocType(Long docType);
+
 }
diff --git a/src/main/java/com/zy/asrs/service/WorkService.java b/src/main/java/com/zy/asrs/service/WorkService.java
index 81b1438..5a9d859 100644
--- a/src/main/java/com/zy/asrs/service/WorkService.java
+++ b/src/main/java/com/zy/asrs/service/WorkService.java
@@ -11,6 +11,7 @@
 import com.zy.common.model.StartupDto;
 import com.zy.common.model.TaskDto;
 import com.zy.common.model.enums.IoWorkType;
+import org.springframework.transaction.annotation.Transactional;
 
 import java.util.List;
 
@@ -32,13 +33,16 @@
      */
     void startupFullTakeStoreOrder(StockOutParam param, Long userId);
 
+    @Transactional
+    void stockOut(BasDevp staNo, List<LocDetlDto> locDetlDtos, IoWorkType ioWorkType, Long userId);
+
     /**
      * 鍑哄簱浣滀笟
      * @param staNo 鐩爣绔欑偣
      * @param locDetls 寰呭嚭搴撶墿鏂�
      * @param ioType 鍏ュ嚭搴撶被鍨�
      */
-    void stockOut(BasDevp staNo, List<LocDetlDto> locDetls, IoWorkType ioWorkType, Long userId);
+    void stockOut(BasDevp staNo, List<LocDetlDto> locDetls, IoWorkType ioWorkType, Long userId,String groupOrderNumber);
 
     void stockOut(BasDevp staNo, TaskDto taskDto, Long userId);
 
diff --git a/src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java
index b5d4fad..6b0c862 100644
--- a/src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java
@@ -34,6 +34,7 @@
 import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
+import java.text.SimpleDateFormat;
 import java.util.*;
 import java.util.concurrent.TimeUnit;
 import java.util.stream.Collectors;
@@ -109,6 +110,9 @@
 
     @Resource
     private OrderMapper orderMapper;
+
+    @Resource
+    private OrderDetlMapper orderDetlMapper;
 
     @Resource
     private BasCrnpMapper basCrnpMapper;
@@ -1517,6 +1521,7 @@
         gwmsGenerateInventoryDto.setWarehouseType(4);
         gwmsGenerateInventoryDto.setBarcode(wrkMast.getBarcode());
         gwmsGenerateInventoryDto.setPalletizingNo(wrkMast.getStaNo());
+        gwmsGenerateInventoryDto.setGroupOrderNumber(wrkMast.getMemo());
         List<GwmsGenerateInventoryDto.MatList> matLists = new ArrayList<>();
         for (WrkDetl wrkDetl : wrkDetls) {
             boolean flag = true;
@@ -2266,5 +2271,60 @@
         return crnStn;
     }
 
+    @Override
+    @Transactional
+    public R groupOrderConfirm(GroupOrderConfirmParam param) {
+        // 1. 鏌ヨ鍗曟嵁鏄惁瀛樺湪
+        Order order = orderMapper.selectOrderByOrderNo(param.getGroupOrderNumber());
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+
+        if (order == null) {
+            // 1.1 涓嶅瓨鍦紝鏂板缓鍗曟嵁
+            order = new Order();
+            order.setOrderNo(param.getGroupOrderNumber());
+            order.setStatus(Integer.valueOf(param.getGroupStatus()));
+            order.setOrderTime(sdf.format(new Date()));
+            order.setCreateTime(new Date());
+            order.setSettle(1L);
+            order.setDocType(25L);
+            orderMapper.insert(order);
+        } else {
+            // 1.2 瀛樺湪锛屾洿鏂板崟鎹姸鎬�
+            order.setStatus(Integer.valueOf(param.getGroupStatus()));
+            orderMapper.updateById(order);
+        }
+
+        // 2. 涓�涓�瀵瑰簲閬嶅巻
+        List<GroupOrderConfirmParam.PackageGroupNo> pkgList = param.getPackageGroupNos();
+        List<GroupOrderConfirmParam.VolumeNumber> volList = param.getVolumeNumbers();
+
+        int size = Math.min(pkgList.size(), volList.size()); // 闃叉瓒婄晫
+        for (int i = 0; i < size; i++) {
+            GroupOrderConfirmParam.PackageGroupNo pg = pkgList.get(i);
+            GroupOrderConfirmParam.VolumeNumber vn = volList.get(i);
+
+            // 鏌ヨ鏄惁宸插瓨鍦ㄨ detl
+            OrderDetl detl = orderDetlMapper.selectByOrderNoAndPkgGroupNoAndVolumeNo(
+                    param.getGroupOrderNumber(), pg.getPackageGroupNo(), vn.getVolumeNumber()
+            );
+
+            if (detl == null) {
+                detl = new OrderDetl();
+                detl.setOrderId(order.getId());
+                detl.setOrderNo(param.getGroupOrderNumber());
+                detl.setCreateTime(new Date());
+                detl.setAnfme(1.0);
+                detl.setBrand(pg.getPackageGroupNo());   // 鍖呰缁勫彿
+                detl.setModel(vn.getVolumeNumber());     // 鍗峰彿
+                orderDetlMapper.insert(detl);
+            }
+        }
+
+        return R.ok("缁勮揣纭鎴愬姛");
+    }
+
+
+
+
     /*...........................涓婇ザ姹熼摐..............浠ヤ笂.............寰愬伐姹変簯...........................*/
 }
diff --git a/src/main/java/com/zy/asrs/service/impl/OrderServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/OrderServiceImpl.java
index b3f1cd5..04cdfff 100644
--- a/src/main/java/com/zy/asrs/service/impl/OrderServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/OrderServiceImpl.java
@@ -175,4 +175,8 @@
         return this.baseMapper.selectorderNoL(orderNo);
     }
 
+    @Override
+    public  List<String> getOrderNosByDocType(Long docType){
+        return this.baseMapper.getOrderNosByDocType(docType);
+    }
 }
diff --git a/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
index eaa13af..53da495 100644
--- a/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
@@ -313,10 +313,8 @@
         }
 
     }
-
-
-    @Override
     @Transactional
+    @Override
     public void stockOut(BasDevp staNo, List<LocDetlDto> locDetlDtos, IoWorkType ioWorkType, Long userId) {
         Date now = new Date();
         // 鍚堝苟鍚岀被椤�
@@ -376,6 +374,128 @@
             wrkMast.setEmptyMk("N"); // 绌烘澘
             wrkMast.setLinkMis("N");
             wrkMast.setSheetNo("0");
+//            wrkMast.setMemo(groupOrderNumber);
+            if (staDesc.getStnNo()<118 || staDesc.getStnNo()>121){
+                wrkMast.setSheetNo("3");
+            }
+            wrkMast.setBarcode(locMast.getBarcode());
+            wrkMast.setAppeUser(userId); // 鎿嶄綔浜哄憳鏁版嵁
+            wrkMast.setAppeTime(now);
+            wrkMast.setModiUser(userId);
+            wrkMast.setModiTime(now);
+            if (!wrkMastService.insert(wrkMast)) {
+                throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐ワ紝鍑哄簱搴撲綅鍙凤細"+dto.getLocNo());
+            }
+            // 鐢熸垚宸ヤ綔妗f槑缁�
+            for (LocDetlDto detlDto : dto.getLocDetlDtos()) {
+                if (detlDto.getCount()==null || detlDto.getCount() <= 0.0D) {continue;}
+                WrkDetl wrkDetl = new WrkDetl();
+                List<OrderDetl> orderDetl = orderDetlService.selectByBrand(detlDto.getLocDetl().getBrand());
+                wrkDetl.sync(detlDto.getLocDetl());
+                for (OrderDetl orderDetlDto : orderDetl) {
+                    if(orderDetlDto.getSupp() != null){
+                        wrkDetl.setSupp(orderDetlDto.getSupp());
+                    }
+                    if(orderDetlDto.getMemo() != null){
+                        wrkDetl.setMemo(orderDetlDto.getMemo());
+                    }
+                }
+                wrkDetl.setOrderNo(detlDto.getOrderNo()); // 鎵嬪姩鍑哄簱涓嶉渶瑕佸甫鍑哄簱瀛樹腑鐨勫崟鎹紪鍙�
+                wrkDetl.setWrkNo(workNo);
+                wrkDetl.setIoTime(now);
+                Double anfme = ioType==101?detlDto.getLocDetl().getAnfme():detlDto.getCount();
+                wrkDetl.setAnfme(anfme); // 鏁伴噺
+                wrkDetl.setAppeTime(now);
+                wrkDetl.setAppeUser(userId);
+                wrkDetl.setModiTime(now);
+                wrkDetl.setModiUser(userId);
+                if (!wrkDetlService.insert(wrkDetl)) {
+                    throw new CoolException("淇濆瓨宸ヤ綔妗f槑缁嗗け璐�");
+                }
+                // 淇敼璁㈠崟鏄庣粏
+                orderDetlMapper.updateOrderDetlByGroupNo(detlDto.getOrderNo(), detlDto.getLocDetl().getBrand(), 1);
+                // 淇敼璁㈠崟鐘舵��
+                orderMapper.updateSettleByOrderNo(detlDto.getOrderNo(),2L, userId);
+            }
+
+            // 淇敼搴撲綅鐘舵��:   F.鍦ㄥ簱 ====>>> R.鍑哄簱棰勭害/P.鎷f枡/鐩樼偣/骞舵澘鍑哄簱涓�
+            locMast = locMastService.selectById(dto.getLocNo());
+            if (locMast.getLocSts().equals("F")) {
+                locMast.setLocSts(ioType==101?"R":"P");
+                locMast.setModiUser(userId);
+                locMast.setModiTime(now);
+                if (!locMastService.updateById(locMast)) {
+                    throw new CoolException("棰勭害搴撲綅鐘舵�佸け璐ワ紝搴撲綅鍙凤細"+dto.getLocNo());
+                }
+            } else {
+                throw new CoolException(dto.getLocNo() + "搴撲綅涓嶆槸鍦ㄥ簱鐘舵��");
+            }
+        }
+    }
+
+
+    @Override
+    @Transactional
+    public void stockOut(BasDevp staNo, List<LocDetlDto> locDetlDtos, IoWorkType ioWorkType, Long userId,String groupOrderNumber) {
+        Date now = new Date();
+        // 鍚堝苟鍚岀被椤�
+        Set<String> locNos = new HashSet<>();
+        List<OutLocDto> dtos = new ArrayList<>();
+        for (LocDetlDto locDetlDto : locDetlDtos) {
+            String locNo = locDetlDto.getLocDetl().getLocNo();
+            if (locNos.contains(locNo)) {
+                for (OutLocDto dto : dtos) {
+                    if (dto.getLocNo().equals(locNo)) {
+                        dto.getLocDetlDtos().add(locDetlDto);
+                        break;
+                    }
+                }
+            } else {
+                locNos.add(locNo);
+                dtos.add(new OutLocDto(locNo, locDetlDto));
+            }
+        }
+        Integer ioType = null;
+        // 鐢熸垚宸ヤ綔妗�
+        for (OutLocDto dto : dtos) {
+            // 鍒ゆ柇鍏ュ嚭搴撶被鍨嬶細101.鍏ㄦ澘鍑哄簱 or 103.鎷f枡鍑哄簱
+            if (ioWorkType == null) {
+                ioType = dto.isAll() ? 101 : 103;
+            } else if (ioWorkType.equals(IoWorkType.CHECK_OUT)) {
+                ioType = 107;
+            }
+            assert ioType != null;
+            // 鑾峰彇搴撲綅
+            LocMast locMast = locMastService.selectById(dto.getLocNo());
+
+            Integer outSta = staNo.getDevNo();
+//            //2鍙峰爢鍨涙満鍏ㄦ澘鍑哄簱绔欐寚瀹氫负204绔欙紝鎷f枡绔欐寚瀹氫负202
+//            if(locMast.getCrnNo()==2){
+//                outSta = ioType == 101 ? 204 : 202;
+//            }
+
+            // 鑾峰彇璺緞
+            StaDesc staDesc = staDescService.queryCrnStn(ioType, locMast.getCrnNo(), outSta);
+            // 鐢熸垚宸ヤ綔鍙�
+            int workNo = commonService.getWorkNo(WorkNoType.getWorkNoType(ioType));
+            // 鐢熸垚宸ヤ綔妗�
+            WrkMast wrkMast = new WrkMast();
+            wrkMast.setWrkNo(workNo);
+            wrkMast.setIoTime(now);
+            wrkMast.setWrkSts(11L); // 宸ヤ綔鐘舵�侊細11.鐢熸垚鍑哄簱ID
+            wrkMast.setIoType(ioType); // 鍏ュ嚭搴撶姸鎬�
+            wrkMast.setIoPri(13D); // 浼樺厛绾э細13
+            wrkMast.setCrnNo(locMast.getCrnNo());
+            wrkMast.setSourceStaNo(staDesc.getCrnStn()); // 婧愮珯
+            wrkMast.setStaNo(staDesc.getStnNo()); // 鐩爣绔�
+            wrkMast.setSourceLocNo(dto.getLocNo()); // 婧愬簱浣�
+            wrkMast.setFullPlt("Y"); // 婊℃澘锛歒
+            wrkMast.setPicking("N"); // 鎷f枡
+            wrkMast.setExitMk("N"); // 閫�鍑�
+            wrkMast.setEmptyMk("N"); // 绌烘澘
+            wrkMast.setLinkMis("N");
+            wrkMast.setSheetNo("0");
+            wrkMast.setMemo(groupOrderNumber);
             if (staDesc.getStnNo()<118 || staDesc.getStnNo()>121){
                 wrkMast.setSheetNo("3");
             }
diff --git a/src/main/resources/mapper/OrderDetlMapper.xml b/src/main/resources/mapper/OrderDetlMapper.xml
index 2cec33a..169eb4d 100644
--- a/src/main/resources/mapper/OrderDetlMapper.xml
+++ b/src/main/resources/mapper/OrderDetlMapper.xml
@@ -100,19 +100,22 @@
     <select id="getPakoutPage" resultMap="BaseResultMap">
         select * from
         (
-            select
-            ROW_NUMBER() over (order by mo.create_time desc) as row,
-            mod.*
-            from man_order_detl mod
-            inner join man_order mo on mod.order_id = mo.id
-            inner join man_doc_type mdt on mo.doc_type = mdt.doc_id
-            where 1=1
-            and mo.settle &lt;= 2
-            and mo.status = 1
-            and mdt.pakout = 1
-            <include refid="pakOutPageCondition"></include>
-        ) t where t.row between ((#{pageNumber}-1)*#{pageSize}+1) and (#{pageNumber}*#{pageSize})
+        select
+        ROW_NUMBER() over (order by mo.create_time desc) as row,
+        mod.*
+        from man_order_detl mod
+        inner join man_order mo on mod.order_id = mo.id
+        inner join man_doc_type mdt on mo.doc_type = mdt.doc_id
+        where 1=1
+        and mo.settle &lt;= 2
+        and mo.status =
+        case when mo.doc_type = 25 then 0 else 1 end
+        and mdt.pakout = 1
+        <include refid="pakOutPageCondition"></include>
+        ) t
+        where t.row between ((#{pageNumber}-1)*#{pageSize}+1) and (#{pageNumber}*#{pageSize})
     </select>
+
 
     <select id="getPakoutPageCount" parameterType="java.util.Map" resultType="java.lang.Integer">
         select
@@ -270,4 +273,12 @@
         where brand = #{brand}
     </select>
 
+    <select id="selectByOrderNoAndPkgGroupNoAndVolumeNo" resultMap="BaseResultMap">
+        select *
+        from man_order_detl
+        where order_no = #{orderNo}
+        and brand = #{brand}
+        and model = #{model}
+    </select>
+
 </mapper>
diff --git a/src/main/resources/mapper/OrderMapper.xml b/src/main/resources/mapper/OrderMapper.xml
index e359a06..7377a19 100644
--- a/src/main/resources/mapper/OrderMapper.xml
+++ b/src/main/resources/mapper/OrderMapper.xml
@@ -133,5 +133,16 @@
         GROUP BY
             mo.order_no
     </select>
+    <select id="selectOrderByOrderNo" resultMap="BaseResultMap">
+        select *
+        from man_order
+        where order_no = #{orderNo}
+    </select>
+    <select id="getOrderNosByDocType" resultType="String">
+        select order_no
+        from man_order
+        where doc_type =#{docType}
+        and status = 0
+    </select>
 
 </mapper>
diff --git a/src/main/webapp/static/js/common.js b/src/main/webapp/static/js/common.js
index 5440615..afe741e 100644
--- a/src/main/webapp/static/js/common.js
+++ b/src/main/webapp/static/js/common.js
@@ -219,7 +219,7 @@
     // ,{field: 'createTime$', align: 'center',title: '娣诲姞鏃堕棿'}
     ,{field: 'updateBy$', align: 'center',title: '淇敼浜哄憳', hide: true}
     ,{field: 'updateTime$', align: 'center',title: '淇敼鏃堕棿', hide: true}
-    ,{field: 'memo', align: 'center',title: '澶囨敞', hide: true}
+    ,{field: 'memo', align: 'center',title: '澶囨敞'}
 ]
 
 var detlCols = [
diff --git a/src/main/webapp/static/js/order/out.js b/src/main/webapp/static/js/order/out.js
index 1ebda0a..9123594 100644
--- a/src/main/webapp/static/js/order/out.js
+++ b/src/main/webapp/static/js/order/out.js
@@ -330,10 +330,50 @@
                             }
 
                         }
-                        ,yes: function(index, layero){
-                            //鎸夐挳銆愮珛鍗冲嚭搴撱�戠殑鍥炶皟
-                            pakout(tableCache, index);
+                        ,yes: function(layerIndex, layero){
+                            // 绔嬪嵆鍑哄簱鎸夐挳鐐瑰嚮 鈫� 鍏堣姹備笅鎷夊垪琛�
+                            let loadIndex = layer.load(10);
+                            $.ajax({
+                                url: baseUrl + "/getMesOrder/auth", // 浣犳彁渚涚殑鎺ュ彛
+                                headers: {'token': localStorage.getItem('token')},
+                                method: 'POST',
+                                success: function(res){
+                                    layer.close(loadIndex);
+                                    if(res.code === 200){
+                                        // 寮瑰嚭浜屾纭妗�
+                                        layer.open({
+                                            type: 1,
+                                            title: '璇烽�夋嫨缁勮揣鍗曞彿',
+                                            area: ['400px','200px'],
+                                            content: $('#staBatchSelectDialog').html(),
+                                            success: function(layero2, index2){
+                                                // 娓叉煋涓嬫媺妗�
+                                                let select = $(layero2).find('#batchSelectStaBox');
+                                                select.empty().append(`<option value="">璇烽�夋嫨缁勮揣鍗曞彿</option>`); // 淇濇寔榛樿绌�
+                                                res.data.forEach(item => {
+                                                    select.append(`<option value="${item}">${item}</option>`);
+                                                });
+                                                layui.form.render('select'); // 閲嶆柊娓叉煋涓嬫媺妗�
+
+
+                                                // 纭鎸夐挳
+                                                form.on('submit(staBatchSelectConfirm)', function(obj){
+                                                    let selectedValue = obj.field.batchSta;
+                                                    console.log(selectedValue)
+                                                    layer.close(index2);
+                                                    // 璋冪敤鍘熸潵鐨勫嚭搴撳嚱鏁帮紝鍚屾椂浼犱笅鎷夊��
+                                                    pakout(tableCache, layerIndex, selectedValue);
+                                                    return false;
+                                                });
+                                            }
+                                        });
+                                    } else {
+                                        layer.msg(res.msg, {icon: 2});
+                                    }
+                                }
+                            });
                         }
+
                         ,btn2: function(index, layero){
                             //鎸夐挳銆愮◢鍚庡鐞嗐�戠殑鍥炶皟
                             layer.close(index)
@@ -349,14 +389,14 @@
         })
     }
 
-    function pakout(tableCache, layerIndex) {
-        // let loadIndex = layer.load(2);
+    function pakout(tableCache, layerIndex, optionValue) {
+        // 鍙互鎶� optionValue 浼犵粰鎺ュ彛
         notice.msg('姝e湪鐢熸垚鍑哄簱浠诲姟......', {icon: 4});
         $.ajax({
             url: baseUrl + "/out/pakout/auth",
             headers: {'token': localStorage.getItem('token')},
             contentType: 'application/json;charset=UTF-8',
-            data: JSON.stringify(tableCache),
+            data: JSON.stringify({tableCache,optionValue}),
             method: 'POST',
             success: function (res) {
                 notice.destroy();
@@ -376,6 +416,8 @@
 
 
 
+
+
     /* 鍒犻櫎璁㈠崟 */
     function doDelSensor(obj) {
         layer.confirm('纭畾瑕佸垹闄ら�変腑鏁版嵁鍚楋紵', {
diff --git a/src/main/webapp/static/js/order/outMes.js b/src/main/webapp/static/js/order/outMes.js
new file mode 100644
index 0000000..2ee8522
--- /dev/null
+++ b/src/main/webapp/static/js/order/outMes.js
@@ -0,0 +1,458 @@
+var pageCurr;
+var insTb2;
+layui.config({
+    base: baseUrl + "/static/layui/lay/modules/"
+}).extend({
+    notice: 'notice/notice',
+}).use(['table','laydate', 'form', 'util', 'admin', 'notice', 'treeTable', 'xmSelect', 'tableMerge', 'tableX'], function(){
+    var table = layui.table;
+    var $ = layui.jquery;
+    var layer = layui.layer;
+    var layDate = layui.laydate;
+    var form = layui.form;
+    var admin = layui.admin;
+    var util = layui.util;
+    var notice = layui.notice;
+    var treeTable = layui.treeTable;
+    var xmSelect = layui.xmSelect;
+    var tableMerge = layui.tableMerge;
+    var tableX = layui.tableX;
+
+    insTb2 = table.render({
+        elem: '#orderDetlTable',
+        headers: {token: localStorage.getItem('token')},
+        url: baseUrl+'/orderDetl/pakout/list/auth',
+        page: true,
+        limit: 15,
+        limits: [15, 30, 50, 100, 200, 500],
+        toolbar: '#orderDetToolbar',
+        height: 'full-120',
+        where: {order_id: 9999999999},
+        cols: [[
+            {type: 'checkbox'}
+            ,{type: 'numbers', title: '#'}
+            ,{field: 'orderNo', align: 'center',title: '缁勮揣鍗曞彿', templet: '#orderNoTpl', width: 160}
+            // ,{field: 'matnr', align: 'center',title: '瑙勬牸', width: 160}
+            // ,{field: 'maktx', align: 'center',title: '鍟嗗搧鍚嶇О', width: 200}
+            // ,{field: 'batch', align: 'center',title: '绠卞彿'}
+            // ,{field: 'specs', align: 'center',title: '鎺ュご'}
+            // ,{field: 'anfme', align: 'center',title: '鏁伴噺'}
+            ,{field: 'brand', align: 'center',title: '鍖呰缁勫彿'}
+            ,{field: 'model', align: 'center',title: '鍗峰彿'}
+
+            // ,{field: 'supp', align: 'center',title: '瀹㈡埛鍚嶇О', hide: false}
+            // ,{field: 'memo', align: 'center',title: '澶囨敞', hide: false}
+            // ,{field: 'qty', align: 'center',title: '浣滀笟鏁伴噺', style: 'font-weight: bold'}
+            // ,{field: 'enableQty', align: 'center',title: '寰呭嚭鏁伴噺', style: 'font-weight: bold'}
+            // ,{field: 'finishStatus', align: 'center', title: '鏄惁瀹屾垚', templet: function(d){
+            //         if (d.qty === 0 && d.enableQty === 0) {
+            //             return '<span style="color:green;font-weight:bold;">瀹屾垚</span>';
+            //         } else {
+            //             return '<span style="color:red;">鏈畬鎴�</span>';
+            //         }
+            //     }}
+
+
+            // ,{field: 'name', align: 'center',title: '鍚嶇О'}
+            // ,{field: 'unit', align: 'center',title: '鍗曚綅', hide: true}
+            // ,{field: 'barcode', align: 'center',title: '鍟嗗搧鏉$爜', hide: true}
+            // ,{field: 'supplier', align: 'center',title: '渚涘簲鍟�'}
+            // ,{field: 'unitPrice', align: 'center',title: '鍗曚环'}
+            // ,{field: 'itemNum', align: 'center',title: '鍝侀」鏁�'}
+            // ,{field: 'count', align: 'center',title: '鏁伴噺'}
+            // ,{field: 'weight', align: 'center',title: '閲嶉噺'}
+            // ,{field: 'status$', align: 'center',title: '鐘舵��'}
+            // ,{field: 'createBy$', align: 'center',title: '娣诲姞浜哄憳'}
+            // ,{field: 'createTime$', align: 'center',title: '娣诲姞鏃堕棿'}
+            // ,{field: 'updateBy$', align: 'center',title: '淇敼浜哄憳'}
+            // ,{field: 'updateTime$', align: 'center',title: '淇敼鏃堕棿'}
+            // ,{field: 'memo', align: 'center',title: '澶囨敞'}
+            ,{fixed: 'right', title:'鎿嶄綔', align: 'center', toolbar: '#operate', width: 160}
+        ]],
+        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();
+        }
+    });
+
+    /* 琛ㄦ牸2鎼滅储 */
+    form.on('submit(sensorTbSearch)', function (data) {
+        insTb2.reload({where: data.field, page: {curr: 1}});
+        return false;
+    });
+
+    /* 琛ㄦ牸2澶村伐鍏锋爮鐐瑰嚮浜嬩欢 */
+    table.on('toolbar(orderDetlTable)', function (obj) {
+
+        var checkStatus = table.checkStatus(obj.config.id).data;
+        if (obj.event === 'pakoutPreview') { // 娣诲姞
+            if (checkStatus.length === 0) {
+                layer.msg('璇烽�夋嫨鑷冲皯涓�鏉″嚭搴撴槑缁�', {icon: 2});
+                return;
+            }
+            pakoutPreview(checkStatus.map(function (d) {
+                return d.id;
+            }));
+        } else if (obj.event === 'del') { // 鍒犻櫎
+            var checkRows = table.checkStatus('sensorTable');
+            if (checkRows.data.length === 0) {
+                layer.msg('璇烽�夋嫨瑕佸垹闄ょ殑鏁版嵁', {icon: 2});
+                return;
+            }
+            var ids = checkRows.data.map(function (d) {
+                return d.id;
+            });
+            doDelSensor({ids: ids});
+        }
+    });
+
+    /* 琛ㄦ牸2宸ュ叿鏉$偣鍑讳簨浠� */
+    table.on('tool(orderDetlTable)', function (obj) {
+        console.log(obj);
+        var data = obj.data;
+        switch (obj.event) {
+            // 鍑哄簱
+            case 'pakoutPreview':
+                pakoutPreview([data.id])
+                break;
+        }
+    });
+
+    function pakoutPreview(ids) {
+        let loadIndex = layer.load(2);
+        $.ajax({
+            url: baseUrl + "/out/pakout/preview/auth",
+            headers: {'token': localStorage.getItem('token')},
+            contentType: 'application/json;charset=UTF-8',
+            data: JSON.stringify(ids),
+            method: 'POST',
+            success: function (res) {
+                layer.close(loadIndex);
+                var tableCache;
+                if (res.code === 200){
+                    layer.open({
+                        type: 1
+                        ,title: false
+                        ,closeBtn: false
+                        ,offset: '50px'
+                        ,area: ['1500px', '700px']
+                        ,shade: 0.5
+                        ,shadeClose: false
+                        ,btn: ['绔嬪嵆鍑哄簱', '绋嶅悗澶勭悊']
+                        ,btnAlign: 'c'
+                        ,moveType: 1 //鎷栨嫿妯″紡锛�0鎴栬��1
+                        ,content: $('#pakoutPreviewBox').html()
+                        ,success: function(layero, index){
+                            stoPreTabIdx = table.render({
+                                elem: '#stoPreTab',
+                                data: res.data,
+                                height: 520,
+                                page: false,
+                                limit: Number.MAX_VALUE,
+                                cellMinWidth: 100,
+                                cols: [[
+                                    {field: 'orderNo', title: '鍗曟嵁缂栧彿', merge: true, align: 'center'},
+                                    // {type: 'checkbox', merge: ['brand'],width: 100},
+                                    // {field: 'title', title: '鍟嗗搧', merge: true, align: 'center', width: 350},
+                                    {field: 'unit', title: '绠卞彿', align: 'center',hide:false},
+                                    {field: 'model', title: '鍗峰彿', align: 'center', hide: false},
+                                    {
+                                        field: 'threeCode',
+                                        align: 'center',
+                                        title: '鍚堟牸鍚�',
+                                        hide: false,
+                                        templet: function(d) {
+                                            return d.threeCode ? d.threeCode : '寰呭垽';
+                                        }
+                                    },
+                                    // {field: 'specs', title: '鎺ュご', align: 'center'},
+                                    {field: 'brand', align: 'center',title: '鍖呰缁勫彿', merge: true, hide: false},
+                                    // {field: 'brand$', align: 'center',title: '鏈ㄧ绫诲瀷', hide: false},
+                                    // {field: 'zpallet', title: '鎵樼洏鐮�', align: 'center'},
+                                    // {field: 'anfme', title: '鏁伴噺', align: 'center', width: 90, style: 'font-weight: bold'},
+                                    // {field: 'count', title: '鏁伴噺', align: 'center', width: 90, style: 'font-weight: bold'},
+                                    {field: 'locNo', title: '璐т綅', align: 'center', width: 100, templet: '#locNoTpl'},
+                                    {field: 'staNos', align: 'center', title: '鍑哄簱绔�', merge: ['locNo'], templet: '#tbBasicTbStaNos'},
+                                    // {type: 'checkbox', merge: ['locNo']},
+                                ]],
+                                done: function (res) {
+                                    tableMerge.render(this);
+                                    $('.layui-table-body.layui-table-main').css("overflow", "auto");
+                                    tableCache = tableData = table.cache.stoPreTab;
+                                }
+                            });
+                            // 淇敼鍑哄簱绔�
+                            form.on('select(tbBasicTbStaNos)', function (obj) {
+                                let index  = obj.othis.parents('tr').attr("data-index");
+                                let data = tableCache[index];
+                                for (let i = 0; i<tableCache.length; i++) {
+                                    if (tableCache[i].locNo === data.locNo) {
+                                        tableCache[i]['staNo'] = Number(obj.elem.value);
+                                    }
+                                }
+                                obj.othis.children().find("input").css("color", "blue");
+                                return false;
+                            });
+                            // 鎵归噺淇敼鍑哄簱绔�
+                            form.on('submit(batchModifySta)', function () {
+                                let stoPreTabData = layui.table.checkStatus('stoPreTab').data;
+                                if (stoPreTabData.length < 1) {
+                                    layer.msg("璇疯嚦灏戦�夋嫨涓�鏉′互涓婂悎骞舵暟鎹�", {icon: 7});
+                                    return false;
+                                }
+                                modifySta(stoPreTabData);
+                            });
+                            form.on('submit(checkModifySta)', function () {
+                                if (!tableCache || tableCache.length === 0) {
+                                    layer.msg("娌℃湁鍙鐞嗙殑鏁版嵁", {icon: 7});
+                                    return false;
+                                }
+
+                                let updatedRows = [];
+
+                                for (let i = 0; i < tableCache.length; i++) {
+                                    let row = tableCache[i];
+                                    let locNo = row.locNo;
+                                    if (!locNo || locNo.length < 2) continue;
+
+                                    let rowPrefix = parseInt(locNo.substring(0, 2), 10);
+                                    let newStaNo;
+
+                                    if (rowPrefix >= 17 && rowPrefix <= 24) {
+                                        newStaNo = 3092;
+                                    } else if (rowPrefix >= 9 && rowPrefix <= 16) {
+                                        newStaNo = 3102;
+                                    } else if (rowPrefix >= 1 && rowPrefix <= 8) {
+                                        newStaNo = 3095;
+                                    }
+
+                                    if (newStaNo) {
+                                        row.staNo = newStaNo;
+                                        updatedRows.push({index: i, staNo: newStaNo});
+                                    }
+                                }
+
+                                // 閲嶈浇琛ㄦ牸鏁版嵁
+                                stoPreTabIdx.reload({data: tableCache});
+
+                                // 鏇存柊涓嬫媺妗嗛鑹插拰鍊�
+                                updatedRows.forEach(item => {
+                                    $('div[lay-id=stoPreTab] tr[data-index="' + item.index + '"] .order-sta-select').val(item.staNo);
+                                });
+                                layui.form.render('select');
+                                updatedRows.forEach(item => {
+                                    $('div[lay-id=stoPreTab] tr[data-index="' + item.index + '"] .layui-select-title input').css("color", "blue");
+                                });
+
+                                layer.msg("鍑哄簱绔欑偣鍧囧垎宸插畬鎴�", {icon: 1});
+                                return false;
+                            });
+
+                            // 鎵归噺淇敼鍑哄簱绔� - 绔欑偣閫夋嫨
+                            function modifySta(stoPreTabData) {
+                                // 鍑哄簱绔欏彇浜ら泦
+                                let staBatchSelectVal = [];
+                                for(let i = 0; i<stoPreTabData.length; i++) {
+                                    let staNos = stoPreTabData[i].staNos;
+                                    if (staNos !== null) {
+                                        if (staBatchSelectVal.length === 0) {
+                                            staBatchSelectVal = staNos;
+                                        } else {
+                                            staBatchSelectVal = staBatchSelectVal.filter(val =>
+                                                {
+                                                    return new Set(staNos).has(val)
+                                                }
+                                            )
+                                        }
+                                    }
+                                }
+                                if (staBatchSelectVal.length === 0) {
+                                    layer.msg("鍑哄簱绔欐病鏈変氦闆嗭紝鏃犳硶鎵归噺淇敼", {icon: 2});
+                                    return;
+                                }
+                                admin.open({
+                                    type: 1,
+                                    area: '300px',
+                                    offset: 'auto',
+                                    title: '璇烽�夋嫨绔欑偣',
+                                    content: $('#staBatchSelectDialog').html(),
+                                    success: function (layero, ddIndex) {
+                                        // 娓叉煋涓嬫媺妗�
+                                        let template = Handlebars.compile($('#batchStaSelectTpl').html());
+                                        $('#batchSelectStaBox').html(template({list: staBatchSelectVal}));
+                                        // 纭
+                                        form.on('submit(staBatchSelectConfirm)', function (obj) {
+                                            let loadIdx = layer.load(2);
+                                            let batchSta = Number(obj.field.batchSta);
+                                            let arr = [];
+                                            for (let j = 0; j<stoPreTabData.length; j++) {
+                                                for (let i = 0; i<tableCache.length; i++) {
+                                                    if (tableCache[i].orderNo === stoPreTabData[j].orderNo
+                                                        && tableCache[i].matnr === stoPreTabData[j].matnr
+                                                        && tableCache[i].locNo === stoPreTabData[j].locNo) {
+                                                        tableCache[i]['staNo'] = batchSta;
+                                                        arr.push(i);
+                                                    }
+                                                }
+                                            }
+                                            stoPreTabIdx.reload({data: tableCache});
+                                            arr.forEach(item => {
+                                                $('div[lay-id=stoPreTab] tr[data-index="' + item + '"] .order-sta-select').val(batchSta);
+                                            });
+                                            layui.form.render('select');
+                                            arr.forEach(item => {
+                                                $('div[lay-id=stoPreTab] tr[data-index="' + item + '"] .layui-select-title').find("input").css("color", "blue");
+                                            });
+                                            layer.close(loadIdx); layer.close(ddIndex);
+                                            return false;
+                                        });
+                                        // 寮圭獥涓嶅嚭鐜版粴鍔ㄦ潯
+                                        $(layero).children('.layui-layer-content').css('overflow', 'visible');
+                                        layui.form.render('select');
+                                    },
+                                })
+                            }
+
+                        }
+                        ,yes: function(index, layero){
+                            //鎸夐挳銆愮珛鍗冲嚭搴撱�戠殑鍥炶皟
+                            pakout(tableCache, index);
+                        }
+                        ,btn2: function(index, layero){
+                            //鎸夐挳銆愮◢鍚庡鐞嗐�戠殑鍥炶皟
+                            layer.close(index)
+                            //return false 寮�鍚浠g爜鍙姝㈢偣鍑昏鎸夐挳鍏抽棴
+                        }
+                    });
+                } else if (res.code === 403){
+                    top.location.href = baseUrl+"/";
+                } else {
+                    layer.msg(res.msg, {icon: 2})
+                }
+            }
+        })
+    }
+
+    function pakout(tableCache, layerIndex) {
+        // let loadIndex = layer.load(2);
+        notice.msg('姝e湪鐢熸垚鍑哄簱浠诲姟......', {icon: 4});
+        $.ajax({
+            url: baseUrl + "/out/pakout/auth",
+            headers: {'token': localStorage.getItem('token')},
+            contentType: 'application/json;charset=UTF-8',
+            data: JSON.stringify(tableCache),
+            method: 'POST',
+            success: function (res) {
+                notice.destroy();
+                if (res.code === 200) {
+                    layer.close(layerIndex);
+                    layer.msg(res.msg, {icon: 1});
+                    insTb.reload({where: null});
+                    insTb2.reload({where: null, page: {curr: 1}});
+                } else if (res.code === 403) {
+                    top.location.href = baseUrl + "/";
+                } else {
+                    layer.msg(res.msg, {icon: 2})
+                }
+            }
+        });
+    }
+
+
+
+    /* 鍒犻櫎璁㈠崟 */
+    function doDelSensor(obj) {
+        layer.confirm('纭畾瑕佸垹闄ら�変腑鏁版嵁鍚楋紵', {
+            skin: 'layui-layer-admin',
+            shade: .1
+        }, function (i) {
+            layer.close(i);
+            var loadIndex = layer.load(2);
+            $.ajax({
+                url: baseUrl+"/sensor/delete/auth",
+                headers: {'token': localStorage.getItem('token')},
+                data: {ids: obj.ids},
+                method: 'POST',
+                success: function (res) {
+                    layer.close(loadIndex);
+                    if (res.code === 200){
+                        layer.msg(res.msg, {icon: 1});
+                        $(".layui-laypage-btn")[0].click();
+                    } else if (res.code === 403){
+                        top.location.href = baseUrl+"/";
+                    }else {
+                        layer.msg(res.msg, {icon: 2});
+                    }
+                }
+            })
+
+        });
+    }
+
+    // 淇敼鐘舵��
+    form.on('switch(statusSwitch)', function (obj) {
+        var index  = obj.othis.parents('tr').attr("data-index");
+        var data = tableData[index];
+        data[this.name] = obj.elem.checked?1:0;
+        http.post(baseUrl+"/sensor/edit/auth", {id: data.id, status: data[this.name]}, function (res) {
+            layer.msg(res.msg, {icon: 1});
+        })
+    })
+
+    window.pakoutPreview = pakoutPreview;
+
+});
+
+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
+        }
+    });
+}
+
+/**
+ * 涓�閿嚭搴�
+ */
+function autoOut(orderId) {
+    let loadIndex = layer.msg('璇锋眰涓�...', {icon: 16, shade: 0.01, time: false});
+    $.ajax({
+        url: baseUrl + "/out/pakout/orderDetlIds/auth",
+        headers: {'token': localStorage.getItem('token')},
+        data: { orderId : orderId },
+        method: 'POST',
+        success: function (res) {
+            layer.close(loadIndex);
+            if (res.code === 200){
+                pakoutPreview(res.data);
+            } else if (res.code === 403){
+                top.location.href = baseUrl+"/";
+            } else {
+                layer.msg(res.msg, {icon: 2});
+            }
+        }
+    })
+}
diff --git a/src/main/webapp/static/js/orderTableMes.js b/src/main/webapp/static/js/orderTableMes.js
new file mode 100644
index 0000000..8262fad
--- /dev/null
+++ b/src/main/webapp/static/js/orderTableMes.js
@@ -0,0 +1,174 @@
+var insTb;
+layui.config({
+    base: baseUrl + "/static/layui/lay/modules/"  // 閰嶇疆妯″潡鎵�鍦ㄧ殑鐩綍
+}).use(['table','laydate', 'form',  'admin', 'tableX'], function() {
+    var table = layui.table;
+    var $ = layui.jquery;
+    var layer = layui.layer;
+    var layDate = layui.laydate;
+    var form = layui.form;
+    var admin = layui.admin;
+    var tableX = layui.tableX;
+
+    /****************************************** 宸﹁竟琛� *************************************************/
+
+    insTb = table.render({
+        elem: '#originTable',
+        url: baseUrl + '/order/nav/listMes/auth',
+        height: 'full-120',
+        headers: {token: localStorage.getItem('token')},
+        request: {
+            pageName: 'curr',
+            pageSize: 'limit'
+        },
+        page: false,
+        parseData: function (res) {
+            return {
+                'code': res.code,
+                'msg': res.msg,
+                'data': res.data
+            }
+        },
+        response: {
+            statusCode: 200
+        },
+        // toolbar: ['<p>',
+        //     '<button lay-event="add" class="layui-btn layui-btn-sm icon-btn"><i class="layui-icon">&#xe654;</i>娣诲姞</button>&nbsp;',
+        //     '<button lay-event="edit" class="layui-btn layui-btn-sm layui-btn-warm icon-btn"><i class="layui-icon">&#xe642;</i>淇敼</button>&nbsp;',
+        //     '<button lay-event="del" class="layui-btn layui-btn-sm layui-btn-danger icon-btn"><i class="layui-icon">&#xe640;</i>鍒犻櫎</button>',
+        //     '</p>'].join(''),
+        defaultToolbar: [],
+        cols: [[
+            // {type: 'numbers', title: '#'},
+            {field: 'orderTime', title: '鏃ユ湡'},
+            {field: 'orderNo', title: '鍗曟嵁缂栧彿', align: 'center'},
+            {field: 'docType$', title: '鍗曟嵁绫诲瀷'},
+        ]],
+        done: function (res, curr, count) {
+            $('#dictTable+.layui-table-view .layui-table-body tbody>tr:first').trigger('click');
+
+            // 缁戝畾榧犳爣鍙抽敭
+            tableX.bindCtxMenu('originTable', function (d) {
+                return [
+                    {
+                        icon: 'layui-icon layui-icon-ok',
+                        name: '涓�閿嚭搴�',
+                        click: function (d) {
+                            autoOut(d.id);
+                        }
+                    }
+                ]
+
+            })
+
+        }
+    });
+
+    /* 琛ㄦ牸鎼滅储 */
+    form.on('submit(originTableSearch)', function (data) {
+        insTb.reload({where: data.field});
+        return false;
+    });
+
+    /* 琛ㄦ牸閲嶇疆 */
+    form.on('submit(originTbReset)', function (data) {
+        insTb.reload({where: null});
+        insTb2.reload({where: null, page: {curr: 1}});
+        return false;
+    });
+
+    /* 琛ㄦ牸澶村伐鍏锋爮鐐瑰嚮浜嬩欢 */
+    table.on('toolbar(originTable)', function (obj) {
+        if (obj.event === 'add') { // 娣诲姞
+            showEdit();
+        } else if (obj.event === 'edit') { // 淇敼
+            if (selObj == null) {
+                return;
+            }
+            showEdit(selObj.data);
+        } else if (obj.event === 'del') { // 鍒犻櫎
+            if (selObj == null) {
+                return;
+            }
+            doDel(selObj);
+        }
+    });
+
+
+    /* 鐩戝惉琛屽崟鍑讳簨浠� */
+    var selObj;
+    table.on('row(originTable)', function (obj) {
+
+        selObj = obj;
+        obj.tr.addClass('layui-table-click').siblings().removeClass('layui-table-click');
+        insTb2.reload({where: {order_id: obj.data.id}, page: {curr: 1}});
+    });
+
+    /* 鏄剧ず琛ㄥ崟寮圭獥 */
+    function showEdit(mData) {
+        admin.open({
+            type: 1,
+            title: (mData ? '淇敼' : '娣诲姞') + '椤圭洰',
+            content: $('#hostEditDialog').html(),
+            success: function (layero, dIndex) {
+                // 鍥炴樉琛ㄥ崟鏁版嵁
+                form.val('hostEditForm', mData);
+                // 琛ㄥ崟鎻愪氦浜嬩欢
+                form.on('submit(hostEditSubmit)', function (data) {
+                    var loadIndex = layer.load(2);
+                    $.ajax({
+                        url: baseUrl+"/host/"+(mData?'update':'add')+"/auth",
+                        headers: {'token': localStorage.getItem('token')},
+                        data: data.field,
+                        method: 'POST',
+                        success: function (res) {
+                            layer.close(loadIndex);
+                            selObj = null;
+                            if (res.code === 200){
+                                layer.close(dIndex);
+                                layer.msg(res.msg, {icon: 1});
+                                insTb.reload();
+                            } else if (res.code === 403){
+                                top.location.href = baseUrl+"/";
+                            } else {
+                                layer.msg(res.msg, {icon: 2});
+                            }
+                        }
+                    })
+                    return false;
+                });
+            }
+        });
+    }
+
+    /* 鍒犻櫎 */
+    function doDel(obj) {
+        layer.confirm('纭畾瑕佸垹闄ゆ鍗曟嵁绫诲瀷鍚楋紵', {
+            skin: 'layui-layer-admin',
+            shade: .1
+        }, function (i) {
+            layer.close(i);
+            var loadIndex = layer.load(2);
+            $.ajax({
+                url: baseUrl+"/host/delete/one/auth",
+                headers: {'token': localStorage.getItem('token')},
+                data: {param: JSON.stringify(obj.data)},
+                method: 'POST',
+                success: function (res) {
+                    selObj = null;
+                    layer.close(loadIndex);
+                    if (res.code === 200){
+                        layer.closeAll();
+                        insTb.reload();
+                        $('#dictTable+.layui-table-view .layui-table-body tbody>tr:first').trigger('click');
+                    } else if (res.code === 403){
+                        top.location.href = baseUrl+"/";
+                    } else {
+                        layer.msg(res.msg, {icon: 2});
+                    }
+                }
+            })
+        });
+    }
+
+})
diff --git a/src/main/webapp/static/js/wrkMast/wrkMast.js b/src/main/webapp/static/js/wrkMast/wrkMast.js
index f762f34..4a16ed4 100644
--- a/src/main/webapp/static/js/wrkMast/wrkMast.js
+++ b/src/main/webapp/static/js/wrkMast/wrkMast.js
@@ -31,6 +31,8 @@
             ,{field: 'sourceLocNo$', align: 'center',title: '婧愬簱浣�'}
             ,{field: 'locNo$', align: 'center',title: '鐩爣搴撲綅'}
             ,{field: 'barcode', align: 'center',title: '鏉$爜'}
+            ,{field: 'memo', align: 'center',title: '缁勮揣鍗曞彿'}
+
             // ,{field: 'sheetNo$', align: 'center',title: '鏈烘鑷�', hide: false}
             ,{field: 'preHave', align: 'center',title: '鍏堝叆鍝�', hide: true}
             ,{field: 'takeNone', align: 'center',title: '绌烘搷浣�', hide: true}
diff --git a/src/main/webapp/views/order/out.html b/src/main/webapp/views/order/out.html
index c438001..81d00ce 100644
--- a/src/main/webapp/views/order/out.html
+++ b/src/main/webapp/views/order/out.html
@@ -194,11 +194,13 @@
 <script type="text/html" id="staBatchSelectDialog">
     <form class="layui-form" style="padding: 25px 50px 30px 50px;text-align: center">
         <select id="batchSelectStaBox" name="batchSta" lay-vertype="tips" lay-verify="required" required="">
+            <option value="">璇烽�夋嫨缁勮揣鍗曞彿</option> <!-- 榛樿绌哄�� -->
         </select>
         <button style="margin-top: 30px" class="layui-btn" lay-filter="staBatchSelectConfirm" lay-submit="">纭畾</button>
     </form>
 </script>
 
+
 <script type="text/html" id="locNoTpl">
     <span name="locNo"
           {{# if( d.lack === false){ }}
diff --git a/src/main/webapp/views/order/outMes.html b/src/main/webapp/views/order/outMes.html
new file mode 100644
index 0000000..e23d6e0
--- /dev/null
+++ b/src/main/webapp/views/order/outMes.html
@@ -0,0 +1,321 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta charset="utf-8">
+    <title></title>
+    <meta name="renderer" content="webkit">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
+    <link rel="stylesheet" href="../../static/layui/css/layui.css" media="all">
+    <link rel="stylesheet" href="../../static/css/admin.css?v=318" media="all">
+    <link rel="stylesheet" href="../../static/css/cool.css" media="all">
+    <link rel="stylesheet" href="../../static/css/originTable.css" media="all">
+    <style>
+        body {
+            color: #595959;
+            background-color: #f5f7f9;
+        }
+
+        .admin-form {
+            padding: 25px 30px 0 0 !important;
+            margin: 0 !important;
+        }
+
+        .layui-table-view .layui-table-cell .layui-select-title .layui-input {
+            height: 28px;
+            line-height: 28px;
+        }
+
+        .layui-table-view [lay-size="lg"] .layui-table-cell .layui-select-title .layui-input {
+            height: 40px;
+            line-height: 40px;
+        }
+
+        .layui-table-view [lay-size="lg"] .layui-table-cell .layui-select-title .layui-input {
+            height: 40px;
+            line-height: 40px;
+        }
+
+        .layui-table-view [lay-size="sm"] .layui-table-cell .layui-select-title .layui-input {
+            height: 20px;
+            line-height: 20px;
+        }
+
+        .layui-table-view [lay-size="sm"] .layui-table-cell .layui-btn-xs {
+            height: 18px;
+            line-height: 18px;
+        }
+
+        /* 鏉冮檺鎺у埗 */
+        #btn-pakoutPreview {
+            display: none;
+        }
+        /*#btn-delete {*/
+        /*    display: none;*/
+        /*}*/
+        /*.btn-edit {*/
+        /*    display: none;*/
+        /*}*/
+        /*.btn-more {*/
+        /*    display: none;*/
+        /*}*/
+    </style>
+</head>
+<body>
+<!-- 姝f枃寮�濮� -->
+<div class="layui-fluid" style="padding-bottom: 0;">
+    <div class="layui-row layui-col-space15">
+        <!-- 宸� -->
+        <div class="layui-col-md3" id="left-table">
+            <div class="layui-card">
+                <div class="layui-card-body" style="padding: 10px;">
+                    <form class="layui-form toolbar">
+                        <div class="layui-form-item">
+                            <div class="layui-inline" style="max-width: 300px;">
+                                <input name="orderNo" class="layui-input" placeholder="杈撳叆鍗曟嵁缂栧彿" autocomplete="off"/>
+                            </div>
+                            <div class="layui-inline">
+                                <button class="layui-btn icon-btn" lay-filter="originTableSearch" lay-submit>
+                                    <i class="layui-icon">&#xe615;</i>鎼滅储
+                                </button>
+                                <button class="layui-btn icon-btn" lay-filter="originTbReset" lay-submit>
+                                    <i class="layui-icon">&#xe666;</i>閲嶇疆
+                                </button>
+                            </div>
+                        </div>
+                    </form>
+                    <table id="originTable" lay-filter="originTable"></table>
+                </div>
+            </div>
+        </div>
+        <!-- 鍙� -->
+        <div class="layui-col-md9">
+            <div class="layui-card">
+                <div class="layui-card-body" style="padding: 10px;">
+                    <form class="layui-form toolbar">
+                        <div class="layui-form-item">
+                            <div class="layui-inline">
+                                <label class="layui-form-label">鍖呰缁勫彿:</label>
+                                <div class="layui-input-inline">
+                                    <input name="brand" class="layui-input" placeholder="鍖呰缁勫彿"/>
+                                </div>
+                            </div>
+<!--                            <div class="layui-inline">-->
+<!--                                <label class="layui-form-label">鍟嗗搧鍚嶇О:</label>-->
+<!--                                <div class="layui-input-inline">-->
+<!--                                    <input name="maktx" class="layui-input" placeholder="鍟嗗搧鍚嶇О"/>-->
+<!--                                </div>-->
+<!--                            </div>-->
+<!--                            <div class="layui-inline">-->
+<!--                                <label class="layui-form-label">搴忓垪鐮�:</label>-->
+<!--                                <div class="layui-input-inline">-->
+<!--                                    <input name="batch" class="layui-input" placeholder="搴忓垪鐮�"/>-->
+<!--                                </div>-->
+<!--                            </div>-->
+                            <!--                            <div class="layui-inline">-->
+                            <!--                                <label class="layui-form-label">鐘舵��:</label>-->
+                            <!--                                <div class="layui-input-inline">-->
+                            <!--                                    <select name="isOnline">-->
+                            <!--                                        <option value="1">鍏呯數涓�</option>-->
+                            <!--                                        <option value="1">鍏呯數涓�</option>-->
+                            <!--                                        <option value="0">涓嶅湪鍏呯數</option>-->
+                            <!--                                    </select>-->
+                            <!--                                </div>-->
+                            <!--                            </div>-->
+                            <div class="layui-inline">&emsp;
+                                <button class="layui-btn icon-btn" lay-filter="sensorTbSearch" lay-submit>
+                                    <i class="layui-icon">&#xe615;</i>鎼滅储
+                                </button>
+                            </div>
+                        </div>
+                    </form>
+                    <table id="orderDetlTable" lay-filter="orderDetlTable"></table>
+                </div>
+            </div>
+        </div>
+    </div>
+</div>
+
+<!-- 澶村伐鍏锋爮 -->
+<script type="text/html" id="orderDetToolbar">
+
+    <!--    <div class="layui-btn-container">-->
+    <!--        <div class="layui-col-md3">-->
+    <!--            <select id="staNoSelect" lay-verify="required">-->
+    <!--                <option value="">璇烽�夋嫨绔欑偣</option>-->
+    <!--            </select>-->
+    <!--        </div>-->
+    <!--    </div>-->
+    <button class="layui-btn layui-btn-sm layui-btn-danger btn-pakoutPreview" id="btn-pakoutPreview" lay-event="pakoutPreview">鎵归噺鍑哄簱</button>
+
+</script>
+
+<!-- 琛屽伐鍏锋爮 -->
+<script type="text/html" id="operate">
+<!--    {{#if (d.enableQty > 0){ }}-->
+<!--    <a class="layui-btn layui-btn-xs layui-btn-danger btn-pakoutPreview" lay-event="pakoutPreview"><i class="layui-icon layui-icon-prev-circle"></i>鍑哄簱</a>-->
+<!--    {{# } }}-->
+</script>
+
+<!-- 鍑哄簱棰勮 -->
+<script type="text/html" id="pakoutPreviewBox" style="display: none">
+    <div style="padding: 25px; line-height: 22px; background-color: #393D49; color: #fff; font-weight: 300;">
+        <span style="font-size: large; font-weight: bold">鍑哄簱棰勮</span>
+    </div>
+    <div class="layui-card">
+        <div class="layui-card-body" style="padding: 10px">
+            <table id="stoPreTab" lay-filter="stoPreTab"></table>
+        </div>
+        <button class="layui-btn layui-btn-primary layui-border-black layui-btn-sm"
+                lay-filter="checkModifySta"
+                lay-submit
+                style="display: block; float: right; margin-right: 3rem; transform: scale(1.2);margin-bottom: 3rem; transform-origin: right center;">
+            鐩樼偣鍧囧垎
+        </button>
+
+<!--        <button class="layui-btn layui-btn-primary layui-border-black layui-btn-sm" lay-filter="batchModifySta" lay-submit style="display: block;float: right;margin-right: 1rem">-->
+<!--            鎵归噺淇敼-->
+<!--        </button>-->
+    </div>
+</script>
+
+<script type="text/html" id="tbBasicTbStaNos">
+    <div class="ew-select-fixed">
+        <select class="order-sta-select" lay-filter="tbBasicTbStaNos">
+            {{#if (d.staNos!=null) {}}
+            {{# for(let i=0; i<d.staNos.length; i++) { }}
+            <option value="{{d.staNos[i]}}">{{d.staNos[i]}}</option>
+            {{# } }}
+            {{# } }}
+        </select>
+    </div>
+</script>
+
+<script type="text/html" id="staBatchSelectDialog">
+    <form class="layui-form" style="padding: 25px 50px 30px 50px;text-align: center">
+        <select id="batchSelectStaBox" name="batchSta" lay-vertype="tips" lay-verify="required" required="">
+        </select>
+        <button style="margin-top: 30px" class="layui-btn" lay-filter="staBatchSelectConfirm" lay-submit="">纭畾</button>
+    </form>
+</script>
+
+<script type="text/html" id="locNoTpl">
+    <span name="locNo"
+          {{# if( d.lack === false){ }}
+          class="layui-badge layui-badge-green" >{{d.locNo}}</span>
+    {{# } else { }}
+    class="layui-badge layui-badge-red" >搴撳瓨涓嶈冻</span>
+    {{# } }}
+</script>
+
+<!-- 琛屾牱寮� -->
+<script type="text/html" id="orderNoTpl">
+    <span name="orderNo" class="layui-badge layui-badge-gray">{{d.orderNo}}</span>
+</script>
+<script type="text/html" id="statusTpl">
+    <input type="checkbox" name="status" value="{{d.status}}" lay-skin="switch" lay-text="姝e父|绂佺敤" lay-filter="statusSwitch" {{ d.status === 1 ? 'checked' : '' }}>
+</script>
+
+<!-- 琛ㄥ崟寮圭獥 -->
+<script type="text/html" id="editDialog">
+    <form id="detail" lay-filter="detail" class="layui-form admin-form">
+        <input name="id" type="hidden">
+        <input name="status" type="hidden">
+        <div class="layui-row">
+
+            <div class="layui-col-md4">
+                <div class="layui-form-item">
+                    <label class="layui-form-label layui-form-required">璁惧缂栧彿</label>
+                    <div class="layui-input-block">
+                        <input name="uuid" placeholder="璇疯緭鍏ヨ澶囩紪鍙�" class="layui-input" lay-vertype="tips" lay-verify="required" required="">
+                    </div>
+                </div>
+            </div>
+            <div class="layui-col-md4">
+                <div class="layui-form-item">
+                    <label class="layui-form-label">璁惧绫诲瀷锛�</label>
+                    <div class="layui-input-block">
+                        <div id="modelSel" class="ew-xmselect-tree"></div>
+                    </div>
+                </div>
+            </div>
+            <div class="layui-col-md4">
+                <div class="layui-form-item">
+                    <label class="layui-form-label layui-form-required">鎵�灞為」鐩�: </label>
+                    <div class="layui-input-block cool-auto-complete">
+                        <input name="hostId" class="layui-input" style="display: none">
+                        <input id="hostId$" name="hostId$" 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="hostQueryByhostId" onkeyup="autoLoad(this.getAttribute('data-key'))">
+                            <select class="cool-auto-complete-window-select" data-key="hostQueryByhostIdSelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple">
+                            </select>
+                        </div>
+                    </div>
+                </div>
+            </div>
+            <div class="layui-col-md12">
+                <div class="layui-form-item">
+                    <label class="layui-form-label">璇︾粏鍦板潃</label>
+                    <div class="layui-input-block">
+                        <input name="addr" placeholder="璇疯緭鍏ヨ缁嗗湴鍧�" class="layui-input">
+                    </div>
+                </div>
+            </div>
+            <hr class="layui-bg-gray">
+            <div class="layui-col-md12" style="text-align: center">
+                <iframe id="mapIframe" src="map.html" scrolling="no" frameborder="0"
+                        style="display: inline-block; width: 90%;height: 400px;margin: auto">
+                </iframe>
+            </div>
+
+        </div>
+        <hr class="layui-bg-gray">
+        <div class="layui-form-item text-right">
+            <button class="layui-btn" lay-filter="editSubmit" lay-submit="">淇濆瓨</button>
+            <button class="layui-btn layui-btn-primary" type="button" ew-event="closeDialog">鍙栨秷</button>
+        </div>
+    </form>
+</script>
+
+<script type="text/javascript" src="../../static/js/jquery/jquery-3.3.1.min.js"></script>
+<script type="text/javascript" src="../../static/js/handlebars/handlebars-v4.5.3.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/tools/md5.js"></script>
+<script type="text/javascript" src="../../static/js/orderTableMes.js" charset="utf-8"></script>
+<script type="text/javascript" src="../../static/js/order/outMes.js" charset="utf-8"></script>
+<!--<script type="text/template" id="takeSiteSelectTemplate">-->
+<!--    {{#each data}}-->
+<!--    <option value="{{siteId}}">{{desc}}</option>-->
+<!--    {{/each}}-->
+<!--</script>-->
+<!-- 椤圭洰缂栬緫绐楀彛 -->
+<script type="text/html" id="hostEditDialog">
+    <form id="hostEditForm" lay-filter="hostEditForm" class="layui-form model-form">
+        <input name="id" type="hidden"/>
+        <div class="layui-form-item">
+            <label class="layui-form-label layui-form-required">椤圭洰鍚嶇О:</label>
+            <div class="layui-input-block">
+                <input name="name" placeholder="璇疯緭鍏ョ被鍨嬪悕绉�" class="layui-input"
+                       lay-verType="tips" lay-verify="required" required/>
+            </div>
+        </div>
+        <div class="layui-form-item text-right">
+            <button class="layui-btn" lay-filter="hostEditSubmit" lay-submit>淇濆瓨</button>
+            <button class="layui-btn layui-btn-primary" type="button" ew-event="closeDialog">鍙栨秷</button>
+        </div>
+    </form>
+</script>
+
+</body>
+
+<script type="text/template" id="batchStaSelectTpl">
+    <option value="">閫夋嫨鍑哄簱绔�</option>
+    {{#each list}}
+    <option value="{{this}}">{{this}}</option>
+    {{/each}}
+</script>
+
+</html>
+
diff --git a/src/main/webapp/views/review/review.html b/src/main/webapp/views/review/review.html
index 4906b6d..1efff1b 100644
--- a/src/main/webapp/views/review/review.html
+++ b/src/main/webapp/views/review/review.html
@@ -159,14 +159,14 @@
 <script type="text/html" id="operate">
     {{# if (d.settle == 0 || d.settle == 1) { }}
     <!--        <a class="layui-btn layui-btn-primary layui-btn-xs btn-edit" lay-event="edit">淇敼</a>-->
-    <a class="layui-btn layui-btn-danger layui-btn-xs btn-edit" lay-event="del">鍒犻櫎</a>
-    <a class="layui-btn layui-btn-primary layui-border-blue layui-btn-xs btn-edit" lay-event="complete">瀹岀粨</a>
+    <a class="layui-btn layui-btn-danger layui-btn-xs " lay-event="del">鍒犻櫎</a>
+    <a class="layui-btn layui-btn-primary layui-border-blue layui-btn-xs " lay-event="complete">瀹岀粨</a>
     <!--        <a class="layui-btn layui-btn-primary layui-border-blue layui-btn-xs btn-complete" lay-event="labelUp">涓婁紶鏍囩</a>-->
     {{# } }}
     {{# if (d.settle == 2) { }}
-    <a class="layui-btn layui-btn-danger layui-btn-xs btn-edit" lay-event="del">鍒犻櫎</a>
+    <a class="layui-btn layui-btn-danger layui-btn-xs " lay-event="del">鍒犻櫎</a>
     <!--    <a class="layui-btn layui-btn-primary layui-border-blue layui-btn-xs btn-complete" lay-event="labelUp">涓婁紶鏍囩</a>-->
-    <a class="layui-btn layui-btn-primary layui-border-blue layui-btn-xs btn-edit" lay-event="complete">瀹岀粨</a>
+    <a class="layui-btn layui-btn-primary layui-border-blue layui-btn-xs " lay-event="complete">瀹岀粨</a>
     {{# } }}
     {{# if (d.settle == 4 && d.tkType=='1') { }}
     <!--        <a class="layui-btn layui-btn-danger layui-btn-xs btn-delete" lay-event="refundLoc">閫�搴�</a>-->

--
Gitblit v1.9.1