From 5d82e2220ff8d69d51feee29e4c8351dca773135 Mon Sep 17 00:00:00 2001
From: duhe <226547893@qq.com>
Date: 星期一, 31 三月 2025 12:35:37 +0800
Subject: [PATCH] 1

---
 WebTM/layuiadmin/modules/tableSelect.js |  101 +++++++++++++++++++++++++++++++++++++++++---------
 1 files changed, 82 insertions(+), 19 deletions(-)

diff --git a/WebTM/layuiadmin/modules/tableSelect.js b/WebTM/layuiadmin/modules/tableSelect.js
index d0a2659..d2adcb0 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.3.0';
+        this.v = '1.4.0';
     };
 
     /**
@@ -20,12 +20,12 @@
         var elem = $(opt.elem);
 		
         //榛樿璁剧疆
-        opt.searchKey = opt.searchKey || 'keyword';
+        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) {
                 return false;
             }
 
@@ -43,7 +43,7 @@
             //娓叉煋TABLE
             opt.table.elem = "#"+tableName;
             opt.table.id = tableName;
-            //鑻ユ病鏈墂here琛ㄧず涓哄墠绔垎椤�
+            //鑻ユ病鏈塽rl琛ㄧず涓哄墠绔垎椤�
             if (opt.table.url != undefined) {
                 opt.table.where['sWhere'] = opt.sWhere
             } else {
@@ -67,7 +67,12 @@
             //}
 
             var tableSelect_table = table.render(opt.table);
-
+            //璁╀竴娆″姞杞芥樉绀烘暟鎹�
+            let executed = false;
+            if (elem.val().length == 3 && !executed) {
+                executed = true;
+                search();
+            }
             //jump鍒嗛〉瑙﹀彂鍑芥暟
             //function jump(obj, first) {
             //    table.reload(tableName);
@@ -148,16 +153,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"://鍥炶溅
@@ -167,13 +172,31 @@
                 }
                 
             })
-            //杈撳叆妗嗚緭鍏ユ墽琛�
-            elem.off('input').on('input', function (e) {
-                // 闃绘琛ㄥ崟鎻愪氦锛堝鏋滆緭鍏ユ鍦ㄨ〃鍗曞唴锛�
-                e.preventDefault();
+            // 闃叉姈鍑芥暟
+            function debounce(func, wait) {
+                let timeout;
+                return function () {
+                    const context = this, args = arguments;
+                    clearTimeout(timeout);
+                    timeout = setTimeout(() => func.apply(context, args), wait);
+                };
+            }
+            //鎼滅储鍑芥暟
+            function search() {
+                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 + " and " + opt.searchKey + " like '%" + elem.val() + "%' ";
+                    opt.table.where['sWhere'] = opt.sWhere + sWhereStr;
                     tableSelect_table.reload({
                         where: opt.table.where,
                         page: {
@@ -181,13 +204,46 @@
                         }
                     });
                 } else {
-                    var sWhere = opt.sWhere + " and " + opt.searchKey + " like '%" + elem.val() + "%' ";
+                    var sWhere = opt.sWhere + sWhereStr;
+                    tableSelect_table.reload({
+                        data: opt.ajaxSelect(sWhere)
+                    });
+                }
+            }
+
+            //杈撳叆妗嗚緭鍏ユ墽琛�
+            elem.off('input').on('input', debounce(
+                function (e) {
+                // 闃绘琛ㄥ崟鎻愪氦锛堝鏋滆緭鍏ユ鍦ㄨ〃鍗曞唴锛�
+                e.preventDefault();
+                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)
                     });
                 }
                 
-            })
+            },200))
 
             //鍙屽嚮琛岄�変腑
             table.on('rowDouble('+tableName+')', function(obj){
@@ -224,7 +280,13 @@
             //鎸夐挳閫変腑
             tableBox.find('.tableSelect_btn_select').on('click', function() {
                 var checkStatus = table.checkStatus(tableName);
-                selectDone(checkStatus);
+                if (checkStatus.data.length > 0) {
+                    selectDone(checkStatus);
+                } else {
+                    tableBox.remove();
+                    delete table.cache[tableName];
+                }
+                
             })
 
             //鍐欏�煎洖璋冨拰鍏抽棴
@@ -232,6 +294,7 @@
                 opt.done(elem, checkStatus);
                 tableBox.remove();
                 delete table.cache[tableName];
+                $(opt.elem).blur();
             }
             
             //鐐瑰嚮鍏朵粬鍖哄煙鍏抽棴

--
Gitblit v1.9.1