From 4ef4e287fe6597543a9628b6dae294c19f2b1d9c Mon Sep 17 00:00:00 2001
From: zwl <1051256694@qq.com>
Date: 星期三, 22 十月 2025 10:50:41 +0800
Subject: [PATCH] 1.新增订单出库挑选功能 2.新增订单明细表

---
 src/main/java/com/zy/asrs/entity/OrderDetl.java             |   14 
 src/main/webapp/static/js/order/outAll.js                   |   29 +
 src/main/webapp/views/order/outAll.html                     |    3 
 src/main/resources/mapper/third/ExdMaterialMapper.xml       |   10 
 src/main/webapp/views/order/outLocDetlQuery.html            |  625 ++++++++++++++++++++++++++++++++++
 src/main/webapp/views/orderDetl/orderDetl.html              |  109 ++++-
 src/main/java/com/zy/asrs/controller/OutController.java     |   41 ++
 src/main/java/com/zy/asrs/entity/param/OutlocDetlParam.java |   12 
 src/main/webapp/static/js/orderDetl/orderDetl.js            |  172 +++++++-
 src/main/resources/application.yml                          |   12 
 10 files changed, 960 insertions(+), 67 deletions(-)

diff --git a/src/main/java/com/zy/asrs/controller/OutController.java b/src/main/java/com/zy/asrs/controller/OutController.java
index 820b5fd..58e0ab5 100644
--- a/src/main/java/com/zy/asrs/controller/OutController.java
+++ b/src/main/java/com/zy/asrs/controller/OutController.java
@@ -6,6 +6,7 @@
 import com.core.common.R;
 import com.zy.asrs.entity.LocDetl;
 import com.zy.asrs.entity.OrderDetl;
+import com.zy.asrs.entity.param.OutlocDetlParam;
 import com.zy.asrs.service.*;
 import com.zy.common.model.LocDto;
 import com.zy.common.model.TaskDto;
@@ -204,4 +205,44 @@
         return R.ok();
     }
 
+    @PostMapping("/out/pakout/preview/auth1")
+    @ManagerAuth
+    public R pakoutPreview1(@RequestBody OutlocDetlParam map) {
+        if (Cools.isEmpty(map)) {
+            return R.parse(BaseRes.PARAM);
+        }
+        OrderDetl orderDetl = orderDetlService.selectById(map.getId());
+        if (Cools.isEmpty(orderDetl)) {
+            return R.error("娌℃湁鎵惧埌璇ヨ鍗�");
+        }
+
+        List<LocDto> locDtos = new ArrayList<>();
+        Set<String> exist = new HashSet<>();
+
+        double issued = Optional.of(orderDetl.getAnfme() - orderDetl.getWorkQty()).orElse(0.0D);
+        for (LocDetl locDetl : map.getList()) {
+            if (issued > 0) {
+                LocDto locDto = new LocDto(locDetl.getLocNo(), locDetl.getMatnr(), locDetl.getMaktx(), locDetl.getBatch(), orderDetl.getOrderNo(),
+                        locDetl.getAnfme());
+                List<String> staNos =  new ArrayList<>();
+                staNos.add("C1");
+                staNos.add("C2");
+                staNos.add("C3");
+                locDto.setStaNos(staNos);
+                locDtos.add(locDto);
+                exist.add(locDetl.getLocNo());
+                // 鍓╀綑寰呭嚭鏁伴噺閫掑噺
+                issued = issued - locDetl.getAnfme();
+            } else {
+                break;
+            }
+        }
+        if (issued > 0) {
+            LocDto locDto = new LocDto(null, orderDetl.getMatnr(), orderDetl.getMaktx(), orderDetl.getBatch(), orderDetl.getOrderNo(), issued);
+            locDto.setLack(Boolean.TRUE);
+            locDtos.add(locDto);
+        }
+        return R.ok().add(locDtos);
+    }
+
 }
diff --git a/src/main/java/com/zy/asrs/entity/OrderDetl.java b/src/main/java/com/zy/asrs/entity/OrderDetl.java
index 311979d..116f4c8 100644
--- a/src/main/java/com/zy/asrs/entity/OrderDetl.java
+++ b/src/main/java/com/zy/asrs/entity/OrderDetl.java
@@ -17,6 +17,7 @@
 import java.io.Serializable;
 import java.text.SimpleDateFormat;
 import java.util.Date;
+import java.util.Objects;
 
 @Data
 @TableName("man_order_detl")
@@ -348,6 +349,19 @@
         return null;
     }
 
+    public String getAnfme$(){
+        if(Objects.equals(this.qty, this.anfme)){
+            return "宸插畬鎴�";
+        }else if(this.workQty==0){
+            return "寰呭鐞�";
+        }else if(this.anfme>this.qty){
+            return "浣滀笟涓�";
+        }else if(this.anfme<this.qty){
+            return "寮傚父";
+        }
+        return "";
+    }
+
     public String getBeBatch$(){
         if (null == this.beBatch){ return null; }
         switch (this.beBatch){
diff --git a/src/main/java/com/zy/asrs/entity/param/OutlocDetlParam.java b/src/main/java/com/zy/asrs/entity/param/OutlocDetlParam.java
new file mode 100644
index 0000000..f863520
--- /dev/null
+++ b/src/main/java/com/zy/asrs/entity/param/OutlocDetlParam.java
@@ -0,0 +1,12 @@
+package com.zy.asrs.entity.param;
+
+import com.zy.asrs.entity.LocDetl;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class OutlocDetlParam {
+    long id;
+    List<LocDetl> list;
+}
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index e0deb17..cedb8f5 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -33,12 +33,12 @@
     #    password: root
     #driver-class-name: com.mysql.cj.jdbc.Driver
     driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
-    jdbc-url: jdbc:sqlserver://192.168.3.148:1433;databasename=wms_middle
-    username: wms
-    password: wms@aunde
-#    jdbc-url: jdbc:sqlserver://127.0.0.1:1433;databasename=wms_middle
-#    username: sa
-#    password: sa@123
+#    jdbc-url: jdbc:sqlserver://192.168.3.148:1433;databasename=wms_middle
+#    username: wms
+#    password: wms@aunde
+    jdbc-url: jdbc:sqlserver://127.0.0.1:1433;databasename=ycawdasrs
+    username: sa
+    password: sa@123
 
 mybatis-plus:
   mapper-locations: classpath:mapper/*.xml 
diff --git a/src/main/resources/mapper/third/ExdMaterialMapper.xml b/src/main/resources/mapper/third/ExdMaterialMapper.xml
index 183a266..a7ca4a4 100644
--- a/src/main/resources/mapper/third/ExdMaterialMapper.xml
+++ b/src/main/resources/mapper/third/ExdMaterialMapper.xml
@@ -30,12 +30,12 @@
     </select>
 
     <select id="getBacode" resultType="com.zy.third.entity.ExdvYanbu" parameterType="string">
-            SELECT top 1 *
-      FROM [Textile].[trade].[TianfuQcResult]
-      where Barcode = #{barcode}
-        <!--    SELECT top 1 *
+--             SELECT top 1 *
+--       FROM [Textile].[trade].[TianfuQcResult]
+--       where Barcode = #{barcode}
+           SELECT top 1 *
          FROM TianfuQcResult
-         where Barcode = #{barcode}-->
+         where Barcode = #{barcode}
 
        </select>
 
diff --git a/src/main/webapp/static/js/order/outAll.js b/src/main/webapp/static/js/order/outAll.js
index d3db620..a8f5953 100644
--- a/src/main/webapp/static/js/order/outAll.js
+++ b/src/main/webapp/static/js/order/outAll.js
@@ -1,5 +1,8 @@
 var pageCurr;
 var insTb2;
+var matnR;
+var id;
+var anfme;
 layui.config({
     base: baseUrl + "/static/layui/lay/modules/"
 }).extend({
@@ -54,7 +57,7 @@
             // ,{field: 'updateBy$', align: 'center',title: '淇敼浜哄憳'}
             // ,{field: 'updateTime$', align: 'center',title: '淇敼鏃堕棿'}
             // ,{field: 'memo', align: 'center',title: '澶囨敞'}
-            ,{fixed: 'right', title:'鎿嶄綔', align: 'center', toolbar: '#operate', width: 160}
+            ,{fixed: 'right', title:'鎿嶄綔', align: 'center', toolbar: '#operate', width: 200}
         ]],
         request: {
             pageName: 'curr',
@@ -120,12 +123,34 @@
             case 'pakoutPreview':
                 pakoutPreview([data.id])
                 break;
+            case 'outLocDetlQuery' :
+                outLocDetlQuery([data.matnr],[data.id],[data.enableQty])
+                break;
         }
     });
 
+    // 鎻愬彇搴撳瓨
+    function outLocDetlQuery(matnr,id,enableQty) {
+        let loadIndex = layer.msg('璇锋眰涓�...', {icon: 16, shade: 0.01, time: false});
+        matnR=matnr;
+        ID=id;
+        anfme=enableQty;
+        locDetlLayerIdx = layer.open({
+            type: 2,
+            title: false,
+            closeBtn: false,
+            maxmin: false,
+            area: ['90%', '85%'],
+            shadeClose: true,
+            content: 'outLocDetlQuery.html',
+            success: function(layero, index){
+                layer.close(loadIndex);
+            }
+        });
+    }
+
     function pakoutPreview(ids) {
         let loadIndex = layer.load(2);
-        console.log("1111")
         $.ajax({
             url: baseUrl + "/out/pakout2/preview/auth",
             headers: {'token': localStorage.getItem('token')},
diff --git a/src/main/webapp/static/js/orderDetl/orderDetl.js b/src/main/webapp/static/js/orderDetl/orderDetl.js
index caef270..f6edb02 100644
--- a/src/main/webapp/static/js/orderDetl/orderDetl.js
+++ b/src/main/webapp/static/js/orderDetl/orderDetl.js
@@ -9,6 +9,27 @@
     var form = layui.form;
     var admin = layui.admin;
 
+    // 娓叉煋鎼滅储妯℃澘
+    $.ajax({
+        url: baseUrl+"/docType/list/auth",
+        headers: {'token': localStorage.getItem('token')},
+        data: {
+            limit: 9999
+        },
+        method: 'POST',
+        success: function (res) {
+            if (res.code === 200){
+                let template = Handlebars.compile($('#docTypeTpl').html());
+                $('#docType-query').html(template(res.data));
+                layui.form.render('select');
+            } else if (res.code === 403){
+                top.location.href = baseUrl+"/";
+            } else {
+                layer.msg(res.msg, {icon: 2})
+            }
+        }
+    })
+
     // 鏁版嵁娓叉煋
     tableIns = table.render({
         elem: '#orderDetl',
@@ -22,29 +43,33 @@
         height: 'full-120',
         cols: [[
             {type: 'checkbox'}
-            ,{field: 'id', align: 'center',title: 'ID'}
-            ,{field: 'orderId$', align: 'center',title: '璁㈠崟鍐呯爜'}
-            ,{field: 'anfme', align: 'center',title: '鏁伴噺'}
-            ,{field: 'matnr', align: 'center',title: '鍟嗗搧缂栫爜'}
-            ,{field: 'maktx', align: 'center',title: '鍟嗗搧鍚嶇О'}
-            ,{field: 'name', align: 'center',title: '鍚嶇О'}
-            ,{field: 'specs', align: 'center',title: '瑙勬牸'}
-            ,{field: 'model', align: 'center',title: '鍨嬪彿'}
-            ,{field: 'batch', align: 'center',title: '鎵瑰彿'}
-            ,{field: 'unit', align: 'center',title: '鍗曚綅'}
-            ,{field: 'barcode', align: 'center',title: '鍟嗗搧鏉$爜'}
-            ,{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: '澶囨敞'}
+            // ,{field: 'id', align: 'center',title: 'ID'}
+            ,{field: 'orderNo', align: 'center',title: '璁㈠崟缂栫爜',sort:true}
+            ,{field: 'matnr', align: 'center',title: '鍟嗗搧缂栫爜',sort:true}
+            ,{field: 'maktx', align: 'center',title: '鍟嗗搧鍚嶇О',sort:true}
+            ,{field: 'anfme', align: 'center',title: '鏁伴噺',sort:true}
+            ,{field: 'workQty', align: 'center',title: '宸ヤ綔鏁伴噺',sort:true}
+            ,{field: 'qty', align: 'center',title: '瀹屾垚鏁伴噺',sort:true}
+            // ,{field: 'model', align: 'center',title: '鍨嬪彿'}
+            ,{field: 'batch', align: 'center',title: '鎵瑰彿',sort:true, hide: true}
+            ,{field: 'brand', align: 'center',title: '浜х嚎',sort:true, hide: true}
+            ,{field: 'sku', align: 'center',title: '绛夌骇',sort:true, hide: true}
+            ,{field: 'unit', align: 'center',title: '鍗曚綅', hide: true}
+            ,{field: 'danger$', align: 'center',title: '璁㈠崟绫诲瀷', hide: true}
 
+            ,{field: 'anfme$', align: 'center', title: '鐘舵��', templet: '#settleTpl',  minWidth: 160, width: 160},
+            // ,{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: 'inspect$', align: 'center',title: '涓婃姤娆℃暟', width: 100}
+            // ,{field: 'updateBy$', align: 'center',title: '淇敼浜哄憳'}
+            // ,{field: 'updateTime$', align: 'center',title: '淇敼鏃堕棿'}
+            // ,{field: 'memo', align: 'center',title: '澶囨敞'}
             ,{fixed: 'right', title:'鎿嶄綔', align: 'center', toolbar: '#operate', width:120}
         ]],
         request: {
@@ -93,14 +118,14 @@
                 showEditModel();
                 break;
             case 'deleteData':
-               if (checkStatus.length === 0) {
-                   layer.msg('璇烽�夋嫨瑕佸垹闄ょ殑鏁版嵁', {icon: 2});
-                   return;
-               }
-               del(checkStatus.map(function (d) {
-                   return d.id;
-               }));
-               break;
+                if (checkStatus.length === 0) {
+                    layer.msg('璇烽�夋嫨瑕佸垹闄ょ殑鏁版嵁', {icon: 2});
+                    return;
+                }
+                del(checkStatus.map(function (d) {
+                    return d.id;
+                }));
+                break;
             case 'exportData':
                 admin.confirm('纭畾瀵煎嚭Excel鍚�', {shadeClose: true}, function(){
                     var titles=[];
@@ -193,6 +218,61 @@
         });
     }
 
+    // 鏃堕棿閫夋嫨鍣�
+    layDate.render({
+        elem: '#ymd\\$',
+        type: 'datetime'
+    });
+    layDate.render({
+        elem: '#wrkDate\\$',
+        type: 'datetime'
+    });
+    layDate.render({
+        elem: '#ioTime\\$',
+        type: 'datetime'
+    });
+    layDate.render({
+        elem: '#crnStrTime\\$',
+        type: 'datetime'
+    });
+    layDate.render({
+        elem: '#crnEndTime\\$',
+        type: 'datetime'
+    });
+    layDate.render({
+        elem: '#plcStrTime\\$',
+        type: 'datetime'
+    });
+    layDate.render({
+        elem: '#crnPosTime\\$',
+        type: 'datetime'
+    });
+    layDate.render({
+        elem: '#refIotime\\$',
+        type: 'datetime'
+    });
+    layDate.render({
+        elem: '#modiTime\\$',
+        type: 'datetime'
+    });
+    layDate.render({
+        elem: '#appeTime\\$',
+        type: 'datetime'
+    });
+    layDate.render({
+        elem: '#errorTime\\$',
+        type: 'datetime'
+    });
+    layDate.render({
+        elem: '#logErrTime\\$',
+        type: 'datetime'
+    });
+    layDate.render({
+        elem: '.layui-laydate-range'
+        ,type: 'datetime'
+        ,range: true
+    });
+
     /* 鍒犻櫎 */
     function del(ids) {
         layer.confirm('纭畾瑕佸垹闄ら�変腑鏁版嵁鍚楋紵', {
@@ -233,6 +313,30 @@
         clearFormVal($('#search-box'));
         tableReload(false);
     });
+    // 寮傚父
+    form.on('submit(abnormal)', function (data) {
+        pageCurr = 1;
+        tableReload(true);
+        // console.log("abnormal");
+        // $.ajax({
+        //     url: baseUrl+"/orderDetl/abnormal",
+        //     headers: {'token': localStorage.getItem('token')},
+        //     method: 'GET',
+        //     success: function (res) {
+        //         layer.close(loadIndex);
+        //         if (res.code === 200){
+        //             layer.msg(res.msg, {icon: 1});
+        //             tableReload();
+        //         } else if (res.code === 403){
+        //             top.location.href = baseUrl+"/";
+        //         } else {
+        //             layer.msg(res.msg, {icon: 2});
+        //         }
+        //     }
+        // })
+
+    });
+
 
     // 鏃堕棿閫夋嫨鍣�
     function layDateRender(data) {
@@ -264,8 +368,14 @@
     $.each($('#search-box [name]').serializeArray(), function() {
         searchData[this.name] = this.value;
     });
+    if(child){
+        searchData["abnormal"] = 1;
+    }else {
+        searchData["abnormal"] = 0;
+    }
+
     tableIns.reload({
         where: searchData,
         page: {curr: pageCurr}
-     });
+    });
 }
diff --git a/src/main/webapp/views/order/outAll.html b/src/main/webapp/views/order/outAll.html
index 3e11c1d..453d1d7 100644
--- a/src/main/webapp/views/order/outAll.html
+++ b/src/main/webapp/views/order/outAll.html
@@ -152,8 +152,9 @@
 
 <!-- 琛屽伐鍏锋爮 -->
 <script type="text/html" id="operate">
-    {{#if (d.anfme > d.qty){ }}
+    {{#if (d.anfme > d.workQty){ }}
     <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>
+    <a class="layui-btn layui-btn-xs layui-btn-danger btn-pakoutPreview" lay-event="outLocDetlQuery"><i class="layui-icon layui-icon-prev-circle"></i>鎻愬彇搴撳瓨</a>
     {{# } }}
 </script>
 
diff --git a/src/main/webapp/views/order/outLocDetlQuery.html b/src/main/webapp/views/order/outLocDetlQuery.html
new file mode 100644
index 0000000..7c212f6
--- /dev/null
+++ b/src/main/webapp/views/order/outLocDetlQuery.html
@@ -0,0 +1,625 @@
+<!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/common.css" media="all">
+    <style>
+        body {
+        }
+
+        .layui-table-box {
+            border-right: 1px solid #9F9F9F;
+            border-left: 1px solid #9F9F9F;
+        }
+
+        #search-box {
+            padding: 30px 0 20px 0;
+        }
+
+        #search-box .layui-inline:first-child {
+            margin-left: 30px;
+        }
+
+        #search-box .layui-inline {
+            margin-right: 5px;
+        }
+
+        #data-search-btn {
+            margin-left: 10px;
+            display: inline-block;
+        }
+
+        #data-search-btn.layui-btn-container .layui-btn {
+            margin-right: 20px;
+        }
+        .fixed-header {
+            position: sticky;
+            top: 0;
+            z-index: 999;
+            padding: 25px;
+            line-height: 22px;
+            background-color: #393D49;
+            color: #fff;
+            font-weight: 300;
+        }
+        .total-count {
+            display: inline-block;
+            margin-left: 20px;
+            padding: 5px 15px;
+            background: #1E9FFF;
+            border-radius: 4px;
+            font-weight: bold;
+            color: #fff;
+        }
+
+        /* 涓鸿鍗曟暟閲忓崟鐙缃牱寮� */
+        #orderTotal {
+            color: #5FB878; /* 缁胯壊琛ㄧず璁㈠崟鏁伴噺 */
+            font-weight: bold;
+        }
+
+        /* 宸查�夋暟閲忔甯告牱寮� */
+        #selectedTotal {
+            color: #fff;
+            font-weight: bold;
+        }
+
+        /* 宸查�夋暟閲忚秴杩囪鍗曟暟閲忔椂鐨勮鍛婃牱寮� */
+        .over-limit #selectedTotal {
+            color: #FF5722 !important; /* 绾㈣壊璀﹀憡 */
+        }
+    </style>
+</head>
+<body>
+<div class="fixed-header">
+    <span style="font-size: large; font-weight: bold">鎻愬彇搴撳瓨鍟嗗搧</span>
+    <!-- 淇敼锛氳鍗曟暟閲忎娇鐢ㄧ浉鍚屾牱寮� -->
+    <span class="total-count">璁㈠崟鏁伴噺: <span id="orderTotal">0</span></span>
+    <span class="total-count">宸查�夋暟閲�: <span id="selectedTotal">0</span></span>
+</div>
+<!-- 鎼滅储鏍� -->
+<fieldset class="layui-elem-field site-demo-button" style="margin: 20px;">
+    <legend>鎼滅储鏍�</legend>
+    <!-- 鎼滅储鏍� -->
+    <div id="search-box" class="layui-form layui-card-header">
+        <div class="layui-inline">
+            <div class="layui-input-inline">
+                <input class="layui-input" id="matnr" type="text" name="matnr" placeholder="鍟嗗搧缂栧彿"
+                       autocomplete="off">
+            </div>
+        </div>
+        <div class="layui-inline">
+            <div class="layui-input-inline cool-auto-complete">
+                <input id="crnNo" class="layui-input" name="crnNo" type="text" placeholder="璇疯緭鍏�" autocomplete="off"
+                       style="display: none">
+                <input id="crnNo$" 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="basCrnpQueryBycrnNo"
+                           onkeyup="autoLoad(this.getAttribute('data-key'))">
+                    <select class="cool-auto-complete-window-select" data-key="basCrnpQueryBycrnNoSelect"
+                            onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple">
+                    </select>
+                </div>
+            </div>
+        </div>
+        <div class="layui-inline">
+            <div class="layui-input-inline">
+                <input class="layui-input" type="text" name="loc_no" placeholder="搴撲綅鍙�" autocomplete="off">
+            </div>
+        </div>
+
+        <div class="layui-inline">
+            <div class="layui-input-inline">
+                <input class="layui-input" type="text" name="orderNo" placeholder="璁㈠崟缂栧彿" autocomplete="off">
+            </div>
+        </div>
+        <div class="layui-inline">
+            <div class="layui-input-inline">
+                <input class="layui-input" type="text" name="batch" placeholder="鎵瑰彿" autocomplete="off">
+            </div>
+        </div>
+        <div class="layui-inline">
+            <div class="layui-input-inline">
+                <input class="layui-input" type="text" name="brand" placeholder="鐢熶骇绾�" autocomplete="off">
+            </div>
+        </div>
+        <div class="layui-inline">
+            <div class="layui-input-inline">
+                <input class="layui-input" type="text" name="sku" placeholder="绛夌骇" autocomplete="off">
+            </div>
+        </div>
+        <!-- 鏃ユ湡鑼冨洿 -->
+        <div class="layui-inline" style="width: 300px">
+            <div class="layui-input-inline">
+                <input class="layui-input layui-laydate-range" name="appe_time" type="text"
+                       placeholder="璧峰鏃堕棿 - 缁堟鏃堕棿" autocomplete="off" style="width: 300px">
+            </div>
+        </div>
+        <!-- 寰呮坊鍔� -->
+        <div id="data-search-btn" class="layui-btn-container layui-form-item" style="display: inline-block">
+            <button id="search" class="layui-btn layui-btn-primary layui-btn-radius" lay-submit lay-filter="search">
+                鎼滅储
+            </button>
+        </div>
+    </div>
+</fieldset>
+
+<script type="text/html" id="toolbar">
+    <div class="layui-btn-container">
+        <button class="layui-btn" id="btn-confirm" lay-event="confirm" style="">鎻愬彇</button>
+    </div>
+</script>
+
+<div class="layui-form">
+    <table class="layui-hide" id="stockOut" lay-filter="stockOut"></table>
+</div>
+
+<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/handlebars/handlebars-v4.5.3.js"></script>
+
+</body>
+
+<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="stoPreTab1" lay-filter="stoPreTab1"></table>
+        </div>
+        <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>
+    function getCol() {
+        var cols = [
+            {type: 'checkbox', merge: ['locNo']}
+            , {field: 'locNo', align: 'center', title: '搴撲綅鍙�', merge: true, style: 'font-weight: bold'}
+            // ,{field: 'locNo$', align: 'center',title: '搴撲綅鍙�'}
+        ];
+        cols.push.apply(cols, detlCols);
+        cols.push({field: 'appeUser$', align: 'center', title: '鍒涘缓浜哄憳', hide: true}
+            , {field: 'appeTime$', align: 'center', title: '鍒涘缓鏃堕棿'})
+        return cols;
+    }
+
+    layui.config({
+        base: baseUrl + "/static/layui/lay/modules/"
+    }).extend({
+        notice: 'notice/notice',
+    })
+        .use(['table', 'notice', 'laydate', 'form', 'admin', 'tableMerge'], 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 tableMerge = layui.tableMerge;
+            var notice = layui.notice;
+
+            $('#matnr').val(parent.matnR);
+            $('#anfme').val(parent.anfme);
+            var id = parent.ID[0];
+
+            // 瀛樺偍褰撳墠閫変腑鐨勬暟閲忓拰璁㈠崟鎬绘暟
+            var selectedTotal = 0;
+            var orderTotal = parseFloat(parent.anfme) || 0;
+
+            // 鏇存柊鏄剧ず閫変腑鐨勬暟閲�
+            function updateSelectedTotal() {
+                $('#selectedTotal').text(selectedTotal);
+                $('#orderTotal').text(orderTotal); // 鏇存柊璁㈠崟鏁伴噺鏄剧ず
+
+                // 濡傛灉閫変腑鐨勬暟閲忚秴杩囪鍗曟暟閲忥紝鏄剧ず璀﹀憡鏍峰紡
+                if (selectedTotal > orderTotal) {
+                    $('#selectedTotal').parent().addClass('over-limit');
+                } else {
+                    $('#selectedTotal').parent().removeClass('over-limit');
+                }
+
+                // 濡傛灉璁㈠崟鏁伴噺涓�0锛屾樉绀哄畬鎴愮姸鎬�
+                if (orderTotal <= 0) {
+                    $('#orderTotal').parent().addClass('order-completed');
+                    layer.msg('璁㈠崟宸插畬鎴愶紒', {icon: 1, time: 3000});
+
+                } else {
+                    $('#orderTotal').parent().removeClass('order-completed');
+                }
+            }
+
+            // 鏁版嵁娓叉煋
+            locDetlTableIns = table.render({
+                elem: '#stockOut',
+                headers: {token: localStorage.getItem('token')},
+                url: baseUrl + '/stock/out/list/auth',
+                where: {matnr: parent.matnR[0]},
+                page: true,
+                limits: [16, 30, 50, 100, 200, 500],
+                limit: 16,
+                even: true,
+                toolbar: '#toolbar',
+                cellMinWidth: 50,
+                cols: [getCol()],
+                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) {
+                    tableMerge.render(this);
+                    if (res.code === 403) {
+                        top.location.href = baseUrl + "/";
+                    }
+                    // 鍒濆鍖栭�変腑鏁伴噺
+                    selectedTotal = 0;
+                    updateSelectedTotal();
+                }
+            });
+
+            // 鐩戝惉澶嶉�夋閫夋嫨浜嬩欢
+            table.on('checkbox(stockOut)', function(obj){
+                var data = obj.data;
+                var checked = obj.checked;
+                var type = obj.type;
+
+                if (type === 'one') {
+                    // 鍗曚釜閫夋嫨
+                    if (checked) {
+                        selectedTotal += parseFloat(data.anfme || 0);
+                    } else {
+                        selectedTotal -= parseFloat(data.anfme || 0);
+                    }
+                } else if (type === 'all') {
+                    // 鍏ㄩ��
+                    var checkStatus = table.checkStatus('stockOut');
+                    if (checked) {
+                        // 璁$畻褰撳墠椤垫墍鏈夋暟鎹殑鏁伴噺鎬诲拰
+                        checkStatus.data.forEach(function(item){
+                            selectedTotal += parseFloat(item.anfme || 0);
+                        });
+                    } else {
+                        // 鍙栨秷鍏ㄩ�夛紝鍑忓幓褰撳墠椤垫墍鏈夋暟鎹殑鏁伴噺鎬诲拰
+                        checkStatus.data.forEach(function(item){
+                            selectedTotal -= parseFloat(item.anfme || 0);
+                        });
+                    }
+                }
+
+                updateSelectedTotal();
+
+                // 濡傛灉閫変腑鐨勬暟閲忚秴杩囪鍗曟暟閲忥紝缁欏嚭鎻愮ず
+                if (selectedTotal > orderTotal) {
+                    layer.msg('璀﹀憡锛氶�変腑鐨勬暟閲忓凡瓒呰繃璁㈠崟鏁伴噺锛�', {icon: 2, time: 3000});
+                }
+            });
+
+            // 鐩戝惉澶村伐鍏锋爮浜嬩欢
+            table.on('toolbar(stockOut)', function (obj) {
+                var checkStatus = table.checkStatus(obj.config.id);
+                var data = checkStatus.data;
+                switch (obj.event) {
+                    case 'confirm':
+                        if (data.length === 0) {
+                            layer.msg("璇烽�夋嫨鏁版嵁");
+                            return;
+                        }
+                        // 妫�鏌ラ�変腑鐨勬暟閲忔槸鍚﹁秴杩囪鍗曟暟閲�
+                        if (selectedTotal > orderTotal) {
+                            layer.confirm('閫変腑鐨勬暟閲忓凡瓒呰繃璁㈠崟鏁伴噺锛屾槸鍚︾户缁紵', {
+                                icon: 3,
+                                title: '璀﹀憡'
+                            }, function(index){
+                                layer.close(index);
+                                pakoutPreview(id, data);
+                            });
+                        } else {
+                            pakoutPreview(id, data);
+                        }
+                        break;
+                }
+            });
+
+            // 鎼滅储鏍忔悳绱簨浠�
+            form.on('submit(search)', function (data) {
+                tableReload();
+            });
+
+            layDate.render({
+                elem: '.layui-laydate-range'
+                , type: 'datetime'
+                , range: true
+            });
+
+            function tableReload() {
+                var searchData = {};
+                $.each($('#search-box [name]').serializeArray(), function () {
+                    searchData[this.name] = this.value;
+                });
+                locDetlTableIns.reload({
+                    where: searchData,
+                });
+                // 閲嶇疆閫変腑鏁伴噺
+                selectedTotal = 0;
+                updateSelectedTotal();
+            }
+
+            function pakoutPreview(id, data) {
+                console.log("id=" + id)
+                let loadIndex = layer.load(2);
+                var da = {
+                    "id": JSON.stringify(id),
+                    "list": data
+                }
+                $.ajax({
+                    url: baseUrl + "/out/pakout/preview/auth1",
+                    headers: {'token': localStorage.getItem('token')},
+                    contentType: 'application/json;charset=UTF-8',
+                    data: JSON.stringify(da),
+                    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: ['1200px', '700px']
+                                , shade: 0.5
+                                , shadeClose: false
+                                , btn: ['绔嬪嵆鍑哄簱', '绋嶅悗澶勭悊']
+                                , btnAlign: 'c'
+                                , moveType: 1 //鎷栨嫿妯″紡锛�0鎴栬��1
+                                , content: $('#pakoutPreviewBox').html()
+                                , success: function (layero, index) {
+                                    res.data.forEach((item, index) => {
+                                        console.log(`椤� ${index + 1}:`, item);
+                                    });
+                                    stoPreTabIdx = table.render({
+                                        elem: '#stoPreTab1',
+                                        data: res.data,
+                                        height: 520,
+                                        page: false,
+                                        limit: Number.MAX_VALUE,
+                                        cellMinWidth: 100,
+                                        cols: [[
+                                            // {type: 'checkbox', merge: ['orderNo']},
+                                            {field: 'orderNo', title: '鍗曟嵁缂栧彿', merge: true, align: 'center'},
+                                            {field: 'title', title: '鍟嗗搧', merge: true, align: 'center', width: 350},
+                                            {field: 'batch', title: '鎵瑰彿', align: 'center'},
+                                            {
+                                                field: 'anfme',
+                                                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.stoPreTab1;
+                                        }
+                                    });
+                                    // 淇敼鍑哄簱绔�
+                                    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('stoPreTab1').data;
+                                        if (stoPreTabData.length < 1) {
+                                            layer.msg("璇疯嚦灏戦�夋嫨涓�鏉′互涓婂悎骞舵暟鎹�", {icon: 7});
+                                            return false;
+                                        }
+                                        modifySta(stoPreTabData);
+                                    });
+
+                                    // 鎵归噺淇敼鍑哄簱绔� - 绔欑偣閫夋嫨
+                                    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=stoPreTab1] tr[data-index="' + item + '"] .order-sta-select').val(batchSta);
+                                                    });
+                                                    layui.form.render('select');
+                                                    arr.forEach(item => {
+                                                        $('div[lay-id=stoPreTab1] 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);
+
+                            console.log("orderTotal="+orderTotal);
+                            // 鎵e噺璁㈠崟鏁伴噺
+                            orderTotal = Math.max(0, orderTotal - selectedTotal);
+                            console.log("selectedTotal="+selectedTotal);
+                            console.log("orderTotal-selectedTotal="+orderTotal);
+
+                            layer.msg('鍑哄簱鎴愬姛锛佹墸鍑� ' + selectedTotal + ' 鏁伴噺', {icon: 1, time: 1000}, function(){
+                                // 鍒锋柊褰撳墠椤甸潰琛ㄦ牸
+                                locDetlTableIns.reload({
+                                    where: {matnr: parent.matnR[0]},
+                                    page: {curr: 1}
+                                });
+
+                                // 鏇存柊鏄剧ず
+                                updateSelectedTotal();
+
+                                // 濡傛灉鏈夌埗椤甸潰琛ㄦ牸涔熼渶瑕佸埛鏂�
+                                try {
+                                    if (parent.insTb) {
+                                        parent.insTb.close();
+                                    }
+                                    if (parent.insTb2) {
+                                        parent.insTb2.reload({page: {curr: 1}});
+                                    }
+                                    // 鏇存柊鐖堕〉闈㈢殑璁㈠崟鏁伴噺锛堝鏋滈渶瑕侊級
+                                    if (parent.updateOrderTotal) {
+                                        parent.updateOrderTotal(orderTotal);
+                                    }
+                                } catch (e) {
+                                    console.log('鐖堕〉闈㈣〃鏍煎埛鏂板け璐�:', e);
+                                }
+                            });
+                        } else if (res.code === 403) {
+                            top.location.href = baseUrl + "/";
+                        } else {
+                            layer.msg(res.msg, {icon: 2})
+                        }
+                    }
+                });
+            }
+
+            window.pakoutPreview = pakoutPreview;
+        })
+</script>
+</html>
\ No newline at end of file
diff --git a/src/main/webapp/views/orderDetl/orderDetl.html b/src/main/webapp/views/orderDetl/orderDetl.html
index 2f890dd..57a1d80 100644
--- a/src/main/webapp/views/orderDetl/orderDetl.html
+++ b/src/main/webapp/views/orderDetl/orderDetl.html
@@ -18,9 +18,33 @@
             <div class="layui-form toolbar" id="search-box">
                 <div class="layui-form-item">
                     <div class="layui-inline">
-                        <label class="layui-form-label">缂栧彿:</label>
                         <div class="layui-input-inline">
-                            <input class="layui-input" type="text" name="id" placeholder="缂栧彿" autocomplete="off">
+                            <input class="layui-input" type="text" name="order_no" placeholder="璁㈠崟缂栧彿"
+                                   autocomplete="off">
+                        </div>
+                    </div>
+                    <div class="layui-inline">
+                        <div class="layui-input-inline">
+                            <input class="layui-input" type="text" name="matnr" placeholder="鐗╂枡缂栫爜"
+                                   autocomplete="off">
+                        </div>
+                    </div>
+                    <div class="layui-inline">
+                        <div class="layui-input-inline">
+                            <input class="layui-input" type="text" name="batch" placeholder="鎵瑰彿" autocomplete="off">
+                        </div>
+                    </div>
+                    <div class="layui-inline">
+                        <div class="layui-input-inline">
+                            <select name="be_batch" id="docType-query">
+                            </select>
+                        </div>
+                    </div>
+                    <div class="layui-inline" style="width: 300px">
+                        <div class="layui-input-inline">
+                            <input class="layui-input layui-laydate-range" name="create_time" type="text"
+                                   placeholder="璧峰鏃堕棿 - 缁堟鏃堕棿"
+                                   autocomplete="off" style="width: 300px">
                         </div>
                     </div>
                     <div class="layui-inline">&emsp;
@@ -30,6 +54,9 @@
                         <button class="layui-btn icon-btn" lay-filter="reset" lay-submit>
                             <i class="layui-icon">&#xe666;</i>閲嶇疆
                         </button>
+                        <button class="layui-btn icon-btn" lay-filter="abnormal" lay-submit>
+                            <i class="layui-icon">&#xe615;</i>寮傚父
+                        </button>
                     </div>
                 </div>
             </div>
@@ -38,11 +65,31 @@
     </div>
 </div>
 
+<script type="text/html" id="settleTpl">
+    <span name="anfme"
+          {{# if( d.qty=== d.anfme){ }}
+          class="layui-badge layui-badge-green"
+          {{# }else if(d.workQty=== 0){ }}
+          class="layui-badge layui-badge-yellow"
+          {{# }else if(d.anfme> d.qty){ }}
+          class="layui-badge layui-badge-blue"
+          {{# }else if(d.anfme < d.qty){ }}
+          class="layui-badge layui-badge-red"
+          {{# }else if(d.workQty> 0){ }}
+          class="layui-badge layui-badge-blue"
+          {{# }else if(d.source === 6){ }}
+          class="layui-badge layui-badge-gray"
+          {{# } }}
+    >{{d.anfme$}}</span>
+</script>
+
 <script type="text/html" id="toolbar">
     <div class="layui-btn-container">
-        <button class="layui-btn layui-btn-sm" id="btn-add" lay-event="addData">鏂板</button>
-        <button class="layui-btn layui-btn-sm layui-btn-danger" id="btn-delete" lay-event="deleteData">鍒犻櫎</button>
-        <button class="layui-btn layui-btn-primary layui-btn-sm" id="btn-export" lay-event="exportData" style="float: right">瀵煎嚭</button>
+<!--        <button class="layui-btn layui-btn-sm" id="btn-add" lay-event="addData">鏂板</button>-->
+<!--        <button class="layui-btn layui-btn-sm layui-btn-danger" id="btn-delete" lay-event="deleteData">鍒犻櫎</button>-->
+        <button class="layui-btn layui-btn-primary layui-btn-sm" id="btn-export" lay-event="exportData"
+                style="float: right">瀵煎嚭
+        </button>
     </div>
 </script>
 
@@ -50,12 +97,19 @@
     <a class="layui-btn layui-btn-primary layui-btn-xs btn-edit" lay-event="edit">淇敼</a>
     <a class="layui-btn layui-btn-danger layui-btn-xs btn-edit" lay-event="del">鍒犻櫎</a>
 </script>
-
+<script type="text/javascript" src="../../static/js/handlebars/handlebars-v4.5.3.js"></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/orderDetl/orderDetl.js" charset="utf-8"></script>
+
+<script type="text/template" id="docTypeTpl">
+    <option value="">閫夋嫨绫诲瀷</option>
+    {{#each records}}
+    <option value="{{docId}}">{{docName}}</option>
+    {{/each}}
+</script>
 </body>
 <!-- 琛ㄥ崟寮圭獥 -->
 <script type="text/html" id="editDialog">
@@ -67,10 +121,13 @@
                     <label class="layui-form-label">璁㈠崟鍐呯爜: </label>
                     <div class="layui-input-block cool-auto-complete">
                         <input class="layui-input" name="orderId" placeholder="璇疯緭鍏ヨ鍗曞唴鐮�" style="display: none">
-                        <input id="orderId$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="璇疯緭鍏ヨ鍗曞唴鐮�" onfocus=this.blur()>
+                        <input id="orderId$" 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="orderQueryByorderId" onkeyup="autoLoad(this.getAttribute('data-key'))">
-                            <select class="cool-auto-complete-window-select" data-key="orderQueryByorderIdSelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple">
+                            <input class="cool-auto-complete-window-input" data-key="orderQueryByorderId"
+                                   onkeyup="autoLoad(this.getAttribute('data-key'))">
+                            <select class="cool-auto-complete-window-select" data-key="orderQueryByorderIdSelect"
+                                    onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple">
                             </select>
                         </div>
                     </div>
@@ -94,21 +151,21 @@
                     </div>
                 </div>
                 <div class="layui-form-item">
-                    <label class="layui-form-label">鍚嶇О: </label>
+                    <label class="layui-form-label">璁㈠崟鏁伴噺: </label>
                     <div class="layui-input-block">
-                        <input class="layui-input" name="name" placeholder="璇疯緭鍏ュ悕绉�">
+                        <input class="layui-input" name="anfme" placeholder="璇疯緭鍏ュ悕绉�">
                     </div>
                 </div>
                 <div class="layui-form-item">
-                    <label class="layui-form-label">瑙勬牸: </label>
+                    <label class="layui-form-label">宸ヤ綔鏁伴噺: </label>
                     <div class="layui-input-block">
-                        <input class="layui-input" name="specs" placeholder="璇疯緭鍏ヨ鏍�">
+                        <input class="layui-input" name="workQty" placeholder="璇疯緭鍏ヨ鏍�">
                     </div>
                 </div>
                 <div class="layui-form-item">
-                    <label class="layui-form-label">鍨嬪彿: </label>
+                    <label class="layui-form-label">瀹屾垚鏁伴噺: </label>
                     <div class="layui-input-block">
-                        <input class="layui-input" name="model" placeholder="璇疯緭鍏ュ瀷鍙�">
+                        <input class="layui-input" name="qty" placeholder="璇疯緭鍏ュ瀷鍙�">
                     </div>
                 </div>
                 <div class="layui-form-item">
@@ -173,10 +230,13 @@
                     <label class="layui-form-label">娣诲姞浜哄憳: </label>
                     <div class="layui-input-block cool-auto-complete">
                         <input class="layui-input" name="createBy" placeholder="璇疯緭鍏ユ坊鍔犱汉鍛�" style="display: none">
-                        <input id="createBy$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="璇疯緭鍏ユ坊鍔犱汉鍛�" onfocus=this.blur()>
+                        <input id="createBy$" 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="userQueryBycreateBy" onkeyup="autoLoad(this.getAttribute('data-key'))">
-                            <select class="cool-auto-complete-window-select" data-key="userQueryBycreateBySelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple">
+                            <input class="cool-auto-complete-window-input" data-key="userQueryBycreateBy"
+                                   onkeyup="autoLoad(this.getAttribute('data-key'))">
+                            <select class="cool-auto-complete-window-select" data-key="userQueryBycreateBySelect"
+                                    onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple">
                             </select>
                         </div>
                     </div>
@@ -191,10 +251,13 @@
                     <label class="layui-form-label">淇敼浜哄憳: </label>
                     <div class="layui-input-block cool-auto-complete">
                         <input class="layui-input" name="updateBy" placeholder="璇疯緭鍏ヤ慨鏀逛汉鍛�" style="display: none">
-                        <input id="updateBy$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="璇疯緭鍏ヤ慨鏀逛汉鍛�" onfocus=this.blur()>
+                        <input id="updateBy$" 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="userQueryByupdateBy" onkeyup="autoLoad(this.getAttribute('data-key'))">
-                            <select class="cool-auto-complete-window-select" data-key="userQueryByupdateBySelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple">
+                            <input class="cool-auto-complete-window-input" data-key="userQueryByupdateBy"
+                                   onkeyup="autoLoad(this.getAttribute('data-key'))">
+                            <select class="cool-auto-complete-window-select" data-key="userQueryByupdateBySelect"
+                                    onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple">
                             </select>
                         </div>
                     </div>
@@ -212,7 +275,7 @@
                     </div>
                 </div>
 
-             </div>
+            </div>
         </div>
         <hr class="layui-bg-gray">
         <div class="layui-form-item text-right">
@@ -221,5 +284,7 @@
         </div>
     </form>
 </script>
+
+
 </html>
 

--
Gitblit v1.9.1