From 404b6b108e16b7fcfd35cd97e2d536a1116948af Mon Sep 17 00:00:00 2001
From: pjb <123456>
Date: 星期四, 13 六月 2024 08:12:24 +0800
Subject: [PATCH] # 修改出库时选中的明细还未入库或者已全部出库或者没有剩余可出重量

---
 src/main/webapp/static/js/order/out.js |  397 ++++++++++++++++++++++++++++++++++++--------------------
 1 files changed, 252 insertions(+), 145 deletions(-)

diff --git a/src/main/webapp/static/js/order/out.js b/src/main/webapp/static/js/order/out.js
index dcd4433..21099b0 100644
--- a/src/main/webapp/static/js/order/out.js
+++ b/src/main/webapp/static/js/order/out.js
@@ -4,7 +4,7 @@
     base: baseUrl + "/static/layui/lay/modules/"
 }).extend({
     notice: 'notice/notice',
-}).use(['table','laydate', 'form', 'util', 'admin', 'notice', 'treeTable', 'xmSelect'], function(){
+}).use(['table','laydate', 'form', 'util', 'admin', 'notice', 'treeTable', 'xmSelect', 'tableMerge', 'tableX' , 'laytpl'], function(){
     var table = layui.table;
     var $ = layui.jquery;
     var layer = layui.layer;
@@ -15,41 +15,30 @@
     var notice = layui.notice;
     var treeTable = layui.treeTable;
     var xmSelect = layui.xmSelect;
+    var tableMerge = layui.tableMerge;
+    var tableX = layui.tableX;
+    var laytpl = layui.laytpl;
 
     insTb2 = table.render({
         elem: '#orderDetlTable',
         headers: {token: localStorage.getItem('token')},
-        url: baseUrl+'/orderDetl/list/auth',
+        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: 'qty', align: 'center',title: '浣滀笟鏁伴噺', style: 'font-weight: bold'}
-            // ,{field: 'name', align: 'center',title: '鍚嶇О'}
-            // ,{field: 'model', align: 'center',title: '鍨嬪彿'}
+            ,{field: 'anfme', align: 'center',title: '鎬绘暟閲�', style: 'font-weight: bold'}
+            ,{field: 'enableQty', align: 'center',title: '寰呭嚭鏁伴噺', style: 'font-weight: bold'}
             ,{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: {
@@ -75,6 +64,7 @@
             limit();
         }
     });
+
     /* 琛ㄦ牸2鎼滅储 */
     form.on('submit(sensorTbSearch)', function (data) {
         insTb2.reload({where: data.field, page: {curr: 1}});
@@ -82,9 +72,17 @@
     });
 
     /* 琛ㄦ牸2澶村伐鍏锋爮鐐瑰嚮浜嬩欢 */
-    table.on('toolbar(sensorTable)', function (obj) {
-        if (obj.event === 'add') { // 娣诲姞
-            showEditModel()
+    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) {
@@ -99,140 +97,225 @@
     });
 
     /* 琛ㄦ牸2宸ュ叿鏉$偣鍑讳簨浠� */
-    table.on('tool(sensorTable)', function (obj) {
+    table.on('tool(orderDetlTable)', function (obj) {
+        console.log(obj);
         var data = obj.data;
         switch (obj.event) {
-            case 'detl':
-                top.sensorByDetl = data.id;
+            // 鍑哄簱
+            case 'pakoutPreview':
+                pakoutPreview([data.id])
                 break;
-            // 缂栬緫
-            case 'edit':
-                showEditModel(data);
-                break;
-            // 鍒犻櫎
-            case 'del':
-                var ids = [data.id];
-                doDelSensor({ids: ids});
-                break;
-            // 鍩虹偣瀹氫綅
-            case 'lbs':
-                notice.msg('璇锋眰涓�...', {icon: 4, position: "topCenter"});
-                var param = {
-                    uuid: data.uuid,
-                    event: obj.event
-                };
-                $.ajax({
-                    url: baseUrl+"/main/command/v1/auth",
-                    headers: {'token': localStorage.getItem('token')},
-                    data: JSON.stringify(param),
-                    contentType:'application/json;charset=UTF-8',
-                    method: 'POST',
-                    success: function (res) {
-                        notice.destroy();
-                        if (res.code === 200){
-                            admin.open({
-                                title: '缁堢鍝嶅簲',
-                                url: 'callback.html',
-                                area: '360px',
-                                data: {
-                                    request: param,
-                                    response: res.data
-                                },
-                                tpl: true
-                            });
-                        } else if (res.code === 403){
-                            top.location.href = baseUrl+"/";
-                        }else {
-                            layer.msg(res.msg, {icon: 2});
-                        }
-                    }
-                })
-                break
         }
     });
 
-    // 璁惧鏄庣粏灞曞紑鍥炶皟
-    window.onSensorDetlDialog = function () {
-    };
-
-
-    /* 鏄剧ず琛ㄥ崟寮圭獥 */
-    function showEditModel(mData) {
-        admin.open({
-            type: 1,
-            area: '900px',
-            title: (mData ? '淇敼' : '娣诲姞') + '璁惧',
-            content: $('#editDialog').html(),
-            success: function (layero, dIndex) {
-                // 鍥炴樉琛ㄥ崟鏁版嵁
-                form.val('detail', mData);
-                // 鍦板浘瀹氫綅鍥炴樉
-                if (mData) {
-                    setTimeout(function () {
-                        $("#mapIframe")[0].contentWindow.position(mData.lon, mData.lat);
-                    }, 500)
-                }
-                // 琛ㄥ崟鎻愪氦浜嬩欢
-                form.on('submit(editSubmit)', function (data) {
-                    data.field.sensorModel = insXmSel.getValue('valueStr');
-                    if (isEmpty(data.field.hostId)) {
-                        layer.msg('璇烽�夋嫨鎵�灞為」鐩�', {icon: 2});
-                        return false;
-                    }
-                    data.field.lon = $("#mapIframe").contents().find("#lon").val();
-                    data.field.lat = $("#mapIframe").contents().find("#lat").val();
-                    data.field.city = $("#mapIframe").contents().find("#city").val();
-                    if (isEmpty(data.field.lon) || isEmpty(data.field.lat)) {
-                        layer.msg('璁惧涓嶅湪瀹氫綅', {icon: 2});
-                        return false;
-                    }
-                    var loadIndex = layer.load(2);
-                    $.ajax({
-                        url: baseUrl+"/sensor/"+(mData?'update':'add')+"/auth?sensorType="+sensorType,
-                        headers: {'token': localStorage.getItem('token')},
-                        data: data.field,
-                        method: 'POST',
-                        success: function (res) {
-                            layer.close(loadIndex);
-                            if (res.code === 200){
-                                layer.close(dIndex);
-                                layer.msg(res.msg, {icon: 1});
-                                $(".layui-laypage-btn")[0].click();
-                            } else if (res.code === 403){
-                                top.location.href = baseUrl+"/";
-                            }else {
-                                layer.msg(res.msg, {icon: 2});
+    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: ['1200px', '700px']
+                        ,shade: 0.5
+                        ,shadeClose: false
+                        ,btn: ['绔嬪嵆鍑哄簱', '绋嶅悗澶勭悊']
+                        ,btnAlign: 'c'
+                        ,moveType: 1 //鎷栨嫿妯″紡锛�0鎴栬��1
+                        ,content: $('#pakoutPreviewBox').html()
+                        ,success: function(layero, index){
+                            console.log(res.data);
+                            stoPreTabIdx = table.render({
+                                elem: '#stoPreTab',
+                                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: 'hostId', title: 'id', align: 'center'},
+                                    // { title: '鍓╀綑闇�姹傞噺', align: 'center' , width: 120, toolbar: '#checkNeedQty'},
+                                    // {field: 'anfme', title: '瀹為檯鏁伴噺', align: 'center', width: 90, style: 'font-weight: bold'},
+                                    { title: '鍑哄簱鏁伴噺', align: 'center',field: 'anfme', width: 90, style: 'font-weight: bold; color: red'},
+                                    {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);
+                            });
+                            // 鎵归噺淇敼鍑哄簱绔� - 绔欑偣閫夋嫨
+                            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');
+                                    },
+                                })
                             }
+
                         }
-                    })
-                    return false;
-                });
-                // 娓叉煋涓嬫媺鏍�
-                var insXmSel = xmSelect.render({
-                    el: '#modelSel',
-                    height: '250px',
-                    data: modelTb.options.data,
-                    initValue: mData&&mData.sensorModel ? [mData.sensorModel] : [],
-                    model: {label: {type: 'text'}},
-                    prop: {
-                        name: 'name',
-                        value: 'id'
-                    },
-                    radio: true,
-                    clickClose: true,
-                    tree: {
-                        show: true,
-                        indent: 15,
-                        strict: false,
-                        expandedKeys: true
-                    }
-                });
-                // 寮圭獥涓嶅嚭鐜版粴鍔ㄦ潯
-                $(layero).children('.layui-layer-content').css('overflow', 'visible');
-                layui.form.render('select');
+                        ,yes: function(index, layero){
+                            //鎸夐挳銆愮珛鍗冲嚭搴撱�戠殑鍥炶皟
+                            //pakout(tableCache, index);
+                            pakout2(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 pakout2(tableCache, layerIndex) {
+        // let loadIndex = layer.load(2);
+        notice.msg('姝e湪鐢熸垚鎷h揣鍗�......', {icon: 4});
+        $.ajax({
+            url: baseUrl + "/out/pakout2/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})
+                }
+            }
+        });
+    }
+
 
 
     /* 鍒犻櫎璁㈠崟 */
@@ -274,6 +357,8 @@
         })
     })
 
+    window.pakoutPreview = pakoutPreview;
+
 });
 
 function tableReload(child) {
@@ -289,3 +374,25 @@
     });
 }
 
+/**
+ * 涓�閿嚭搴�
+ */
+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});
+            }
+        }
+    })
+}

--
Gitblit v1.9.1