From a13efdd8dd7767a50f79ab804713a260492fc206 Mon Sep 17 00:00:00 2001
From: zrg <z1873@LAPTOP-EAVL132E>
Date: 星期二, 19 八月 2025 16:00:39 +0800
Subject: [PATCH] 产品包装单与单品过站优化

---
 WebTM/layuiadmin/modules/tableSelect.js |  260 ++++++++++++++++++----------------------------------
 1 files changed, 90 insertions(+), 170 deletions(-)

diff --git a/WebTM/layuiadmin/modules/tableSelect.js b/WebTM/layuiadmin/modules/tableSelect.js
index dce9fa1..6d7fa06 100644
--- a/WebTM/layuiadmin/modules/tableSelect.js
+++ b/WebTM/layuiadmin/modules/tableSelect.js
@@ -10,7 +10,7 @@
         table = layui.table,
         form = layui.form;
     var tableSelect = function () {
-        this.v = '1.2.0';
+        this.v = '1.4.0';
     };
 
     /**
@@ -20,13 +20,13 @@
         var elem = $(opt.elem);
 		
         //榛樿璁剧疆
-        opt.searchKey = opt.searchKey || 'keyword';
-        opt.checkedKey = opt.checkedKey;
+        opt.searchKey = opt.searchKey || 'keyword';//鍙涓敤锛屽垎鍓�
         opt.table.page = opt.table.page || false;
         opt.table.height = opt.table.height || 290;
-        elem.off('click').on('click', function(e) {
+        elem.off('keyup').on('keyup', function(e) {
             e.stopPropagation();
-            if($('div.tableSelect').length >= 1){
+            //杈撳叆瀛楃灏忎簬浜屾垨鑰呯壒娈婃寜閽笉鏄剧ず
+            if ($('div.tableSelect').length >= 1 || elem.val().length <= 2 || event.key == "F7" || event.key == "F8" || event.key == "F6") {
                 return false;
             }
 
@@ -41,12 +41,20 @@
                 tableBox += '</div>';
                 tableBox = $(tableBox);
             $('body').append(tableBox);
-            //鏁版嵁缂撳瓨
-            var checkedData = [];
             //娓叉煋TABLE
             opt.table.elem = "#"+tableName;
             opt.table.id = tableName;
-            opt.table.where['sWhere'] = opt.sWhere
+            //鑻ユ病鏈塽rl琛ㄧず涓哄墠绔垎椤�
+            //if (opt.table.url != undefined) {
+            //    opt.table.where['sWhere'] = opt.sWhere
+            //} else {
+            //    opt.table.data = opt.ajaxSelect(opt.sWhere);
+            //}
+            //璁╀竴娆″姞杞芥樉绀烘暟鎹�
+            //褰撳瓧绗﹂暱搴︾瓑浜�3鏃剁涓�娆″姞杞�
+            if (elem.val().length == 3) {
+                searchFirst()
+            }
             opt.table.request={//璁剧疆椤靛弬鏁�
                 pageName: 'page', // 椤电爜鐨勫弬鏁板悕绉帮紝榛樿锛歱age
                 limitName: 'size' // 姣忛〉鏁版嵁鏉℃暟鐨勫弬鏁板悕锛岄粯璁わ細limit
@@ -59,129 +67,8 @@
                     "data": res.data // 瑙f瀽鏁版嵁鍒楄〃
                 };
             }
-            opt.table.done = function(res, curr, count){
-                defaultChecked(res, curr, count);
-                setChecked(res, curr, count);
-            };
+
             var tableSelect_table = table.render(opt.table);
-
-            //鍒嗛〉閫変腑淇濆瓨鏁扮粍
-            table.on('radio('+tableName+')', function(obj){
-                if(opt.checkedKey){
-                    checkedData = table.checkStatus(tableName).data
-                }
-                updataButton(table.checkStatus(tableName).data.length)
-            })
-            table.on('checkbox(' + tableName + ')', function (obj) {
-                if(opt.checkedKey){
-                    if(obj.checked){
-                        for (var i=0;i<table.checkStatus(tableName).data.length;i++){
-                            checkedData.push(table.checkStatus(tableName).data[i])
-                        }
-                    }else{
-                        if(obj.type=='all'){
-                            for (var j=0;j<table.cache[tableName].length;j++) {
-                                for (var i=0;i<checkedData.length;i++){
-                                    if(checkedData[i][opt.checkedKey] == table.cache[tableName][j][opt.checkedKey]){
-                                        checkedData.splice(i,1)
-                                    }
-                                }
-                            }
-                        }else{
-                            //鍥犱负LAYUI闂锛屾搷浣滃埌鍙樺寲鍏ㄩ�夌姸鎬佹椂鑾峰彇鍒扮殑obj涓虹┖锛岃繖閲岀敤鍑芥暟鑾峰彇鏈�変腑鐨勯」銆�
-                            function nu (){
-                                var noCheckedKey = '';
-                                for (var i=0;i<table.cache[tableName].length;i++){
-                                    if(!table.cache[tableName][i].LAY_CHECKED){
-                                        noCheckedKey = table.cache[tableName][i][opt.checkedKey];
-                                    }
-                                }
-                                return noCheckedKey
-                            }
-                            var noCheckedKey = obj.data[opt.checkedKey] || nu();
-                            for (var i=0;i<checkedData.length;i++){
-                                if(checkedData[i][opt.checkedKey] == noCheckedKey){
-                                    checkedData.splice(i,1);
-                                }
-                            }
-                        }
-                    }
-                    checkedData = uniqueObjArray(checkedData, opt.checkedKey);
-                    updataButton(checkedData.length)
-                }else{
-                    updataButton(table.checkStatus(tableName).data.length)
-                }
-            });
-
-            //娓叉煋琛ㄦ牸鍚庨�変腑
-            function setChecked (res, curr, count) {
-                for(var i=0;i<res.data.length;i++){
-                    for (var j=0;j<checkedData.length;j++) {
-                        if(res.data[i][opt.checkedKey] == checkedData[j][opt.checkedKey]){
-                            res.data[i].LAY_CHECKED = true;
-                            var index= res.data[i]['LAY_TABLE_INDEX'];
-                            var checkbox = $('#'+tableName+'').next().find('tr[data-index=' + index + '] input[type="checkbox"]');
-                                checkbox.prop('checked', true).next().addClass('layui-form-checked');
-                            var radio  = $('#'+tableName+'').next().find('tr[data-index=' + index + '] input[type="radio"]');
-                            radio.prop('checked', true).next().addClass('layui-form-radioed').find("i").html('&#xe643;');
-                            radio.closest('tr').addClass('layui-table-click');
-                        }
-                    }
-                }
-                var checkStatus = table.checkStatus(tableName);
-				if(checkStatus.isAll){
-					$('#'+tableName+'').next().find('.layui-table-header th[data-field="0"] input[type="checkbox"]').prop('checked', true);
-					$('#'+tableName+'').next().find('.layui-table-header th[data-field="0"] input[type="checkbox"]').next().addClass('layui-form-checked');
-				}
-				updataButton(checkedData.length)
-            }
-            
-            //鍐欏叆榛樿閫変腑鍊�(puash checkedData)
-            function defaultChecked (res, curr, count){
-                if(opt.checkedKey && elem.attr('ts-selected')){
-                    var selected = elem.attr('ts-selected').split(",");
-                    for(var i=0;i<res.data.length;i++){
-                        for(var j=0;j<selected.length;j++){
-                            if(res.data[i][opt.checkedKey] == selected[j]){
-                                checkedData.push(res.data[i])
-                            }
-                        }
-                    }
-                    checkedData = uniqueObjArray(checkedData, opt.checkedKey);
-                }
-            }
-
-			//鏇存柊閫変腑鏁伴噺
-			function updataButton (n) {
-				tableBox.find('.tableSelect_btn_select span').html(n==0?'':'('+n+')')
-            }
-            
-            //鏁扮粍鍘婚噸
-			function uniqueObjArray(arr, type){
-                var newArr = [];
-                var tArr = [];
-                if(arr.length == 0){
-                    return arr;
-                }else{
-                    if(type){
-                        for(var i=0;i<arr.length;i++){
-                            if(!tArr[arr[i][type]]){
-                                newArr.push(arr[i]);
-                                tArr[arr[i][type]] = true;
-                            }
-                        }
-                        return newArr;
-                    }else{
-                        for(var i=0;i<arr.length;i++){
-                            if(!tArr[arr[i]]){
-                                newArr.push(arr[i]);
-                                tArr[arr[i]] = true;
-                            }
-                        }
-                        return newArr;
-                    }
-                }
-            }
 
 			//FIX浣嶇疆濡備綍涓嬮潰鏀句笉涓嬫斁涓婇潰
 			var overHeight = (elem.offset().top + elem.outerHeight() + tableBox.outerHeight() - $(window).scrollTop()) > $(window).height();
@@ -224,16 +111,16 @@
                             if (tr.length == 0) {
                                 tableElem.find('tr:first').children('td').eq(0).click();
                             } else {
-                                tr.children('td').click();
-                                tr['prev']().children('td').click();
+                                tr.children('td').eq(0).click();
+                                tr['prev']().children('td').eq(0).click();
                             }
                             break;
                         case "ArrowDown"://涓嬮敭
                             if (tr.length == 0) {
-                                tr = tableElem.find('tr:first').children('td').eq(0).click();
+                                tableElem.find('tr:first').children('td').eq(0).click();
                             } else {
-                                tr.children('td').click();
-                                tr['next']().children('td').click();
+                                tr.children('td').eq(0).click();
+                                tr['next']().children('td').eq(0).click();
                             }
                             break;
                         case "Enter"://鍥炶溅
@@ -243,32 +130,70 @@
                 }
                 
             })
+            // 闃叉姈鍑芥暟
+            function debounce(func, wait) {
+                let timeout;
+                return function () {
+                    const context = this, args = arguments;
+                    clearTimeout(timeout);
+                    timeout = setTimeout(() => func.apply(context, args), wait);
+                };
+            }
+            //鎼滅储鍑芥暟绗竴娆″姞杞�
+            function searchFirst() {
+                var searchKeyList = opt.searchKey.split(',');//鑾峰彇鏌ユ壘鐨勫叧閿瓧鎼滅储妗�
+                //鎷兼帴sql瀛楃涓�
+                var sWhereStr = " and ("
+                searchKeyList.forEach(function (value, index) {
+                    if (index == 0) {
+                        sWhereStr += (value + " like '%" + elem.val() + "%' ")
+                    } else {
+                        sWhereStr += ("or " + value + " like '%" + elem.val() + "%' ")
+                    }
+                })
+                sWhereStr += ")"
+                //鍚庣鍒嗛〉鎼滅储
+                if (opt.table.where != undefined) {
+                    opt.table.where['sWhere'] = opt.sWhere + sWhereStr;
+                } else {
+                    var sWhere = opt.sWhere + sWhereStr;
+                    opt.table.data = opt.ajaxSelect(sWhere);
+                }
+            }
+
             //杈撳叆妗嗚緭鍏ユ墽琛�
-            elem.off('input').on('input', function (e) {
+            elem.off('input').on('input', debounce(
+                function (e) {
                 // 闃绘琛ㄥ崟鎻愪氦锛堝鏋滆緭鍏ユ鍦ㄨ〃鍗曞唴锛�
                 e.preventDefault();
-                opt.table.where['sWhere'] = opt.sWhere + " and " + opt.searchKey + " like '%" + elem.val() + "%' ";
-                tableSelect_table.reload({
-                    where: opt.table.where,
-                    page: {
-                        curr: 1
+                var searchKeyList = opt.searchKey.split(',');//鑾峰彇鏌ユ壘鐨勫叧閿瓧鎼滅储妗�
+                //鎷兼帴sql瀛楃涓�
+                var sWhereStr = " and ("
+                searchKeyList.forEach(function (value, index) {
+                    if (index == 0) {
+                        sWhereStr += (value + " like '%" + elem.val() + "%' ")
+                    } else {
+                        sWhereStr += ("or " + value + " like '%" + elem.val() + "%' ")
                     }
-                });
+                })
+                sWhereStr +=")"
+                //鍚庣鍒嗛〉鎼滅储
+                if (opt.table.where != undefined) {
+                    opt.table.where['sWhere'] = opt.sWhere + sWhereStr;
+                    tableSelect_table.reload({
+                        where: opt.table.where,
+                        page: {
+                            curr: 1
+                        }
+                    });
+                } else {
+                    var sWhere = opt.sWhere + sWhereStr;
+                    tableSelect_table.reload({
+                        data: opt.ajaxSelect(sWhere)
+                    });
+                }
                 
-            })
-            // //鍏抽敭璇嶆悳绱�
-            // form.on('submit(tableSelect_btn_search)', function(data){
-            //     // console.log(" and "+opt.searchKey +"='" + data.opt.searchKey +"'")
-            //     console.log(data);
-            //     opt.table.where['sWhere'] = " and "+opt.searchKey +" like '%" + data.field[opt.searchKey] +"%' ";
-            //     tableSelect_table.reload({
-            //         where: opt.table.where,
-            //         page: {
-            //         curr: 1
-            //         }
-            //     });
-            //     return false;
-            // });
+            },500))
 
             //鍙屽嚮琛岄�変腑
             table.on('rowDouble('+tableName+')', function(obj){
@@ -298,32 +223,28 @@
                             l.LAY_CHECKED = flag;
                         }
                     });
-                    //鏇存柊鎸夐挳
-                    updataButton(table.checkStatus(tableName).data.length)
+                    //鏇存柊鎸夐挳锛堟棤鐢ㄥ垹闄わ級
+                    //updataButton(table.checkStatus(tableName).data.length)
                 }
             })
             //鎸夐挳閫変腑
             tableBox.find('.tableSelect_btn_select').on('click', function() {
                 var checkStatus = table.checkStatus(tableName);
-                if(checkedData.length > 1){
-                checkStatus.data = checkedData;
+                if (checkStatus.data.length > 0) {
+                    selectDone(checkStatus);
+                } else {
+                    tableBox.remove();
+                    delete table.cache[tableName];
                 }
-                selectDone(checkStatus);
+                
             })
 
             //鍐欏�煎洖璋冨拰鍏抽棴
             function selectDone (checkStatus){
-                if(opt.checkedKey){
-                    var selected = [];
-                    for(var i=0;i<checkStatus.data.length;i++){
-                        selected.push(checkStatus.data[i][opt.checkedKey])
-                    }
-                    elem.attr("ts-selected",selected.join(","));
-                }
                 opt.done(elem, checkStatus);
                 tableBox.remove();
                 delete table.cache[tableName];
-                checkedData = [];
+                $(opt.elem).blur();
             }
             
             //鐐瑰嚮鍏朵粬鍖哄煙鍏抽棴
@@ -332,7 +253,6 @@
                 if(!userSet_con.is(e.target) && userSet_con.has(e.target).length === 0){
                     tableBox.remove();
                     delete table.cache[tableName];
-                    checkedData = [];
                 }
             });
         })

--
Gitblit v1.9.1