From 371462edc6b3ee1de97c235d4a019b544badda0d Mon Sep 17 00:00:00 2001
From: chen.lin <1442464845@qq.com>
Date: 星期六, 14 二月 2026 22:09:37 +0800
Subject: [PATCH] AGV工作档界面和逻辑调整

---
 src/main/webapp/static/js/task/task.js |  238 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 227 insertions(+), 11 deletions(-)

diff --git a/src/main/webapp/static/js/task/task.js b/src/main/webapp/static/js/task/task.js
index 6235ea8..5b3f01c 100644
--- a/src/main/webapp/static/js/task/task.js
+++ b/src/main/webapp/static/js/task/task.js
@@ -1,4 +1,5 @@
 var pageCurr;
+var tableIns;
 layui.config({
     base: baseUrl + "/static/layui/lay/modules/"
 }).use(['table', 'laydate', 'form', 'admin'], function () {
@@ -9,11 +10,68 @@
     var form = layui.form;
     var admin = layui.admin;
 
-    // 鏁版嵁娓叉煋
-    tableIns = table.render({
+    // AGV浠诲姟绠$悊锛氬伐浣滅姸鎬佺敤澶氶�夋锛堝嬀閫夊椤癸級锛屼粎鏈〉锛涚敤鍘熺敓 checkbox 涓嶇粡杩� layui 缇庡寲锛屼繚璇佸嬀閫変笌妗嗗唴鏄剧ず濮嬬粓涓�鑷�
+    function updateTaskWrkStsFromCheckbox() {
+        var ids = [], texts = [];
+        $('#taskWrkStsCheckboxWrap input:checkbox:checked').each(function () {
+            var $input = $(this);
+            ids.push($input.val());
+            var text = $input.data('text') || $input.closest('label').clone().children().remove().end().text().trim() || $input.val();
+            texts.push(text);
+        });
+        $('input[name="wrk_sts"]').val(ids.join(','));
+        $('#wrkSts\\$').val(texts.join(', '));
+    }
+
+    $(document).on('change', '#taskWrkStsCheckboxWrap input:checkbox', updateTaskWrkStsFromCheckbox);
+
+    function initWrkStsDropdownThenTable() {
+        $.ajax({
+            url: baseUrl + '/basWrkStatusQueryAgv/auth',
+            headers: {token: localStorage.getItem('token')},
+            data: {condition: ''},
+            method: 'POST',
+            traditional: true,
+            success: function (res) {
+                var $wrap = $('#taskWrkStsCheckboxWrap');
+                $wrap.empty();
+                var defaultIds = {'7': true, '8': true, '9': true};
+                if (res.code === 200 && res.data && res.data.length) {
+                    res.data.forEach(function (item) {
+                        var id = String(item.id);
+                        var text = item.value || id;
+                        var checked = defaultIds[id] ? ' checked' : '';
+                        $wrap.append(
+                            '<label class="task-wrksts-cb-label" style="display: inline-block; margin: 4px 12px 4px 0; cursor: pointer;"><input type="checkbox" value="' + id + '" data-text="' + (text.replace(/"/g, '&quot;')) + '"' + checked + '> ' + text + '</label>'
+                        );
+                    });
+                    updateTaskWrkStsFromCheckbox();
+                }
+
+                // 鐐瑰嚮杈撳叆妗嗗睍寮�/鏀惰捣涓嬫媺锛堜笉璋冪敤 autoShow锛岄伩鍏嶈蛋鍏ㄥ眬閫昏緫锛�
+                $('#wrkSts\\$').off('click').on('click', function () {
+                    var $win = $('#taskWrkStsWindow');
+                    $win.toggle();
+                });
+
+                var initialWhere = {};
+                $.each($('#search-box [name]').serializeArray(), function () {
+                    initialWhere[this.name] = this.value;
+                });
+                renderTaskTable(initialWhere);
+            },
+            error: function () {
+                renderTaskTable({});
+            }
+        });
+    }
+
+    function renderTaskTable(initialWhere) {
+        tableIns = table.render({
         elem: '#task',
         headers: {token: localStorage.getItem('token')},
         url: baseUrl + '/task/list/auth',
+        where: initialWhere,
         page: true,
         limit: 15,
         limits: [15, 30, 50, 100, 200, 500],
@@ -23,22 +81,26 @@
         cols: [[
             {type: 'checkbox'}
             , {field: 'wrkNo', align: 'center', title: '宸ヤ綔鍙�', sort: true, width: 105}
+            , {field: 'agvWrkNo', align: 'center', title: 'AGV宸ヤ綔鍙�', width: 180}
             , {field: 'ioTime$', align: 'center', title: '宸ヤ綔鏃堕棿', width: 160}
             , {field: 'wrkSts$', align: 'center', title: '宸ヤ綔鐘舵��', width: 150}
             , {field: 'ioType$', align: 'center', title: '鍏ュ嚭搴撶被鍨�', width: 150}
             , {field: 'ioPri', align: 'center', title: '浼樺厛绾�', width: 80}
-            , {field: 'taskType$', align: 'center', title: '浠诲姟绫诲瀷'}
+            , {field: 'taskType$', align: 'center', title: '浠诲姟绫诲瀷', width: 120}
             , {field: 'crnNo$', align: 'center', title: '鍫嗗灈鏈�', hide: true}
-            , {field: 'sourceStaNo$', align: 'center', title: '婧愮珯'}
-            , {field: 'staNo$', align: 'center', title: '鐩爣绔�', width: 120}
+            , {field: 'sourceStaNo$', align: 'center', title: '婧愮珯', width: 120}
             , {field: 'sourceLocNo', align: 'center', title: '婧愬簱浣�', width: 120}
+            , {field: 'staNo$', align: 'center', title: '鐩爣绔�', width: 120}
             , {field: 'locNo', align: 'center', title: '鐩爣搴撲綅', width: 120}
             , {field: 'barcode', align: 'center', title: '鏉$爜', width: 110}
+            , {field: 'errorMemo', align: 'center', title: 'AGV鍥炲鎶ユ枃', width: 200, hide: true}
+            , {field: 'errorMemo2', align: 'center', title: 'AGV鍥炲鎶ユ枃2', width: 200, hide: true}
+            , {field: 'errorTime$', align: 'center', title: '閿欒鏃堕棿', width: 160, hide: true}
             , {field: 'preHave', align: 'center', title: '鍏堝叆鍝�', hide: true}
             , {field: 'takeNone', align: 'center', title: '绌烘搷浣�', hide: true}
             , {field: 'modiUser$', align: 'center', title: '淇敼浜哄憳', hide: true}
             , {field: 'modiTime$', align: 'center', title: '淇敼鏃堕棿', hide: true, width: 160}
-            , {fixed: 'right', title: '鎿嶄綔', align: 'center', toolbar: '#operate', width: 200}
+            , {fixed: 'right', title: '鎿嶄綔', align: 'center', toolbar: '#operate', width: 250}
         ]],
         request: {
             pageName: 'curr',
@@ -62,7 +124,10 @@
             pageCurr = curr;
             limit();
         }
-    });
+        });
+    }
+
+    initWrkStsDropdownThenTable();
 
     // 鐩戝惉鎺掑簭浜嬩欢
     table.on('sort(task)', function (obj) {
@@ -171,7 +236,7 @@
                         title: '宸ヤ綔鍙凤細' + data.wrkNo,
                         shadeClose: true
                     }, function () {
-                        http.post(baseUrl + "/hand/control/wrkMast", {workNo: data.wrkNo, type: 2}, function (res) {
+                        http.post(baseUrl + "/task/control", {workNo: data.wrkNo, type: 2}, function (res) {
                             $(".layui-laypage-btn")[0].click();
                             layer.msg(data.wrkNo + res.msg);
                         })
@@ -182,7 +247,7 @@
                         title: '宸ヤ綔鍙凤細' + data.wrkNo,
                         shadeClose: true
                     }, function () {
-                        http.post(baseUrl + "/hand/control/wrkMast", {workNo: data.wrkNo, type: 2}, function (res) {
+                        http.post(baseUrl + "/task/control", {workNo: data.wrkNo, type: 2}, function (res) {
                             $(".layui-laypage-btn")[0].click();
                             layer.msg(data.wrkNo + res.msg);
                         })
@@ -193,7 +258,7 @@
             //  鎷f枡鍏ュ簱
             case 'pick':
                 layer.confirm('鎷f枡鍏ュ簱璇ョ瑪宸ヤ綔妗o紵', {title: '宸ヤ綔鍙凤細' + data.wrkNo, shadeClose: true}, function () {
-                    http.post(baseUrl + "/hand/control/wrkMast", {workNo: data.wrkNo, type: 3}, function (res) {
+                    http.post(baseUrl + "/task/control", {workNo: data.wrkNo, type: 3}, function (res) {
                         $(".layui-laypage-btn")[0].click();
                         layer.msg(data.wrkNo + res.msg);
                     })
@@ -219,6 +284,34 @@
                     title: '宸ヤ綔鍙凤細' + data.wrkNo,
                     shadeClose: true
                 }, function () {
+                });
+                break;
+            //  鍒犻櫎锛堝崟鏉★級
+            case 'delete':
+                layer.confirm('纭畾瑕佸垹闄よ鏉GV浠诲姟鍚楋紵', {
+                    title: '宸ヤ綔鍙凤細' + data.wrkNo,
+                    shadeClose: true
+                }, function (i) {
+                    layer.close(i);
+                    var loadIndex = layer.load(2);
+                    $.ajax({
+                        url: baseUrl + "/task/delete/auth",
+                        headers: {'token': localStorage.getItem('token')},
+                        data: {'ids[]': [data.id]},
+                        traditional: true,
+                        method: 'POST',
+                        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});
+                            }
+                        }
+                    });
                 });
                 break;
         }
@@ -274,7 +367,7 @@
             $.ajax({
                 url: baseUrl + "/task/delete/auth",
                 headers: {'token': localStorage.getItem('token')},
-                data: {ids: ids},
+                data: {'ids[]': ids},
                 method: 'POST',
                 success: function (res) {
                     layer.close(loadIndex);
@@ -318,6 +411,128 @@
 
     layDateRender();
 
+    // 鍛煎彨AGV鍔熻兘 - 鏆傛椂娉ㄩ噴鎺�
+    /*
+    // 鍒濆鍖栧懠鍙獳GV琛ㄥ崟娓叉煋
+    form.render('select');
+
+    // 鍛煎彨绫诲瀷鍒囨崲浜嬩欢
+    form.on('select(callAgvType)', function(data) {
+        var callType = data.value;
+        if (callType === 'manual') {
+            // 鎵嬪姩杈撳叆锛氭樉绀虹洰鏍囩珯鐐�
+            $('#callAgvTarSiteGroup').show();
+            $('#callAgvTarLocGroup').hide();
+            $('#callAgvTarSite').attr('placeholder', '鐩爣绔欑偣');
+        } else if (callType === 'outbound') {
+            // 鍑哄簱锛氶殣钘忕洰鏍囩珯鐐瑰拰搴撲綅锛堣嚜鍔ㄥ垎閰嶏級
+            $('#callAgvTarSiteGroup').hide();
+            $('#callAgvTarLocGroup').hide();
+        } else if (callType === 'inbound') {
+            // 鍏ュ簱锛氭樉绀虹洰鏍囧簱浣嶏紝闅愯棌鐩爣绔欑偣锛堢珯鐐硅嚜鍔ㄥ垎閰嶏級
+            $('#callAgvTarSiteGroup').hide();
+            $('#callAgvTarLocGroup').show();
+            $('#callAgvTarLoc').attr('placeholder', '鐩爣搴撲綅');
+        }
+    });
+
+    // 鍛煎彨AGV鎼繍 - 浠庨〉闈笂鏂硅〃鍗曡幏鍙栬緭鍏�
+    $('#callAgvBtn').on('click', function() {
+        var callType = $('#callAgvType').val();
+        var orgSite = $('#callAgvOrgSite').val();
+        var tarSite = $('#callAgvTarSite').val();
+        var tarLoc = $('#callAgvTarLoc').val();
+        var barcode = $('#callAgvBarcode').val();
+        
+        // 楠岃瘉蹇呭~椤�
+        if (!orgSite || orgSite.trim() === '') {
+            layer.msg('璇疯緭鍏ユ簮绔欑偣', {icon: 2});
+            $('#callAgvOrgSite').focus();
+            return;
+        }
+        if (callType === 'manual') {
+            // 鎵嬪姩杈撳叆锛氶渶瑕佺洰鏍囩珯鐐�
+            if (!tarSite || tarSite.trim() === '') {
+                layer.msg('璇疯緭鍏ョ洰鏍囩珯鐐�', {icon: 2});
+                $('#callAgvTarSite').focus();
+                return;
+            }
+        } else if (callType === 'inbound') {
+            // 鍏ュ簱锛氶渶瑕佺洰鏍囧簱浣�
+            if (!tarLoc || tarLoc.trim() === '') {
+                layer.msg('璇疯緭鍏ョ洰鏍囧簱浣�', {icon: 2});
+                $('#callAgvTarLoc').focus();
+                return;
+            }
+        }
+        if (!barcode || barcode.trim() === '') {
+            layer.msg('璇疯緭鍏ユ墭鐩樼爜', {icon: 2});
+            $('#callAgvBarcode').focus();
+            return;
+        }
+        
+        // 鏋勫缓纭淇℃伅
+        var confirmMsg = '纭鍛煎彨AGV鎼繍锛�<br/>鍛煎彨绫诲瀷锛�';
+        if (callType === 'manual') {
+            confirmMsg += '鎵嬪姩杈撳叆<br/>婧愮珯鐐癸細' + orgSite + '<br/>鐩爣绔欑偣锛�' + tarSite + '<br/>鎵樼洏鐮侊細' + barcode;
+        } else if (callType === 'outbound') {
+            confirmMsg += '璧风偣+鍑哄簱锛堢珯鐐瑰拰缂撳瓨浣嶈嚜鍔ㄥ垎閰嶏級<br/>婧愮珯鐐癸細' + orgSite + '<br/>鎵樼洏鐮侊細' + barcode;
+        } else if (callType === 'inbound') {
+            confirmMsg += '璧风偣+鍏ュ簱锛堢珯鐐硅嚜鍔ㄥ垎閰嶏級<br/>婧愮珯鐐癸細' + orgSite + '<br/>鐩爣搴撲綅锛�' + tarLoc + '<br/>鎵樼洏鐮侊細' + barcode;
+        }
+        
+        layer.confirm(confirmMsg, {
+            title: '鍛煎彨AGV纭',
+            icon: 3,
+            shadeClose: true
+        }, function(index) {
+            var loadIndex = layer.load(2);
+            var requestData = {
+                callType: callType,
+                orgSite: orgSite.trim(),
+                barcode: barcode.trim()
+            };
+            if (callType === 'manual' && tarSite) {
+                requestData.tarSite = tarSite.trim();
+            }
+            if (callType === 'inbound' && tarLoc) {
+                requestData.tarLoc = tarLoc.trim();
+            }
+            
+            $.ajax({
+                url: baseUrl + "/mobile/cache/agv/call",
+                headers: {'token': localStorage.getItem('token')},
+                data: JSON.stringify(requestData),
+                contentType: 'application/json;charset=UTF-8',
+                method: 'POST',
+                success: function(res) {
+                    layer.close(loadIndex);
+                    layer.close(index);
+                    if (res.code === 200) {
+                        layer.msg('鍛煎彨AGV鎴愬姛', {icon: 1});
+                        // 娓呯┖琛ㄥ崟
+                        $('#callAgvOrgSite').val('');
+                        $('#callAgvTarSite').val('');
+                        $('#callAgvTarLoc').val('');
+                        $('#callAgvBarcode').val('');
+                        // 鍒锋柊琛ㄦ牸
+                        tableReload();
+                    } else if (res.code === 403) {
+                        top.location.href = baseUrl + "/";
+                    } else {
+                        layer.msg(res.msg || '鍛煎彨AGV澶辫触', {icon: 2});
+                    }
+                },
+                error: function() {
+                    layer.close(loadIndex);
+                    layer.close(index);
+                    layer.msg('缃戠粶璇锋眰澶辫触', {icon: 2});
+                }
+            });
+        });
+    });
+    */
+
 });
 
 // 鍏抽棴鍔ㄤ綔
@@ -326,6 +541,7 @@
 });
 
 function tableReload(child) {
+    if (!tableIns) return;
     var searchData = {};
     $.each($('#search-box [name]').serializeArray(), function () {
         searchData[this.name] = this.value;

--
Gitblit v1.9.1