yzx 4 dienas atpakaļ
vecāks
revīzija
84f4d70aae

+ 0 - 3
ruoyi-admin/src/main/resources/mapper/aicall/CcCallPhoneMapper.xml

@@ -92,9 +92,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="batchId != null and batchId != ''">
                 AND cp.batch_id = #{batchId}
             </if>
-            <if test="batchName != null and batchName != ''">
-                AND ct.batch_name like concat('%', #{batchName}, '%')
-            </if>
             <if test="intent != null and intent != ''">
                 AND cp.intent = #{intent}
             </if>

+ 64 - 1
ruoyi-admin/src/main/resources/templates/aicall/callPhone/callPhone.html

@@ -223,7 +223,8 @@
                     <ul>
                         <li>
                             <label th:text="#{callPhone.query.callTask}">外呼任务</label>
-                            <input type="text" name="batchName"/>
+                            <input type="text" id="batchNameInput" name="batchName" autocomplete="off" style="width:160px"/>
+                            <input type="hidden" id="batchIdHidden" name="batchId"/>
                         </li>
                         <!-- 客户意向下拉框 -->
                         <li>
@@ -336,6 +337,68 @@
     var downloadFlag = [[${@permission.hasPermi('cc:inboundcdr:download')}]];
     var prefix = ctx + "aicall/callPhone";
 
+    // 外呼任务自动补全
+    var $batchNameInput = $("#batchNameInput");
+    var $batchIdHidden = $("#batchIdHidden");
+    var taskList = [];
+    var $taskDropdown = $('<ul class="task-autocomplete-dropdown"></ul>').css({
+        position: 'absolute', background: '#fff', border: '1px solid #ddd',
+        'list-style': 'none', margin: 0, padding: 0, 'z-index': 9999,
+        'max-height': '200px', 'overflow-y': 'auto', width: $batchNameInput.outerWidth() || 160
+    }).hide().appendTo('body');
+
+    // 加载全部任务列表(任务表数据量小,一次加载即可)
+    $.get(ctx + "aicall/callTask/all", function(result) {
+        if (result.code === 200 && result.data) {
+            taskList = result.data;
+        }
+    });
+
+    $batchNameInput.on('input', function() {
+        var val = $(this).val().trim().toLowerCase();
+        $batchIdHidden.val('');
+        if (!val) {
+            $taskDropdown.hide();
+            return;
+        }
+        var filtered = taskList.filter(function(item) {
+            return item.batchName && item.batchName.toLowerCase().indexOf(val) >= 0;
+        }).slice(0, 20);
+        if (filtered.length === 0) {
+            $taskDropdown.hide();
+            return;
+        }
+        var offset = $batchNameInput.offset();
+        $taskDropdown.css({
+            left: offset.left,
+            top: offset.top + $batchNameInput.outerHeight(),
+            width: $batchNameInput.outerWidth()
+        }).empty();
+        $.each(filtered, function(i, item) {
+            $('<li>').text(item.batchName).css({
+                padding: '4px 8px', cursor: 'pointer', 'font-size': '13px'
+            }).hover(
+                function() { $(this).css('background-color', '#f5f5f5'); },
+                function() { $(this).css('background-color', '#fff'); }
+            ).on('click', function() {
+                $batchNameInput.val(item.batchName);
+                $batchIdHidden.val(item.batchId);
+                $taskDropdown.hide();
+            }).appendTo($taskDropdown);
+        });
+        $taskDropdown.show();
+    }).on('blur', function() {
+        setTimeout(function() { $taskDropdown.hide(); }, 200);
+    });
+
+    // 搜索前:如果没有选中具体任务,清空batchId,不走LIKE
+    var _originalQuery = $.fn.bootstrapTable.defaults.queryParams;
+    $(document).on("pre.bs.table", "#bootstrap-table", function() {
+        if (!$batchIdHidden.val()) {
+            $batchNameInput.val('');
+        }
+    });
+
     $(function() {
         var options = {
             url: prefix + "/list",