fuwencai 1 жил өмнө
parent
commit
06b453b232

+ 93 - 5
CMPlatform/web/templates/com/modal.html

@@ -87,10 +87,88 @@
                     <button type="button" class="close" data-dismiss="modal" aria-hidden="true" onclick="closeaaa()">&times;</button>
                     <div class="edit-form">
                         <div class="edit-info" style="text-align: center">
-                            <span >新增精准筛选规则11</span>
+                            <span >新增精准筛选规则</span>
                         </div>
                         <div id="insertexactRule">
 
+                            <!--规则1 -->
+                            <div class="insertexactRule-form exact-rule-1 ">
+                                <div class="form-group" >
+                                    <label class="col-sm-4 control-label"><span style="color:red;">* </span>关键词分组:</label>
+                                    <div class="col-sm-8">
+                                        <select class="form-control groupSelect" name="groupSelect">
+                                        </select>
+                                    </div>
+                                </div>
+                                <div class="form-group">
+                                    <label class="col-sm-4 control-label"><span style="color:red;">* </span>出现次数>=</label>
+                                    <div class="col-sm-8">
+                                        <input  type='number' type="number" min='0' class="form-control" name="count" placeholder="请输入次数">
+                                    </div>
+                                </div>
+                                <div class="form-group">
+                                    <label class="col-sm-4 control-label"><span style="color:red;">* </span>匹配方式</label>
+                                    <div class="col-sm-8">
+                                        <select class="form-control selectpicker" multiple name="matchWay">
+                                            <option value="title" selected>标题</option>
+                                            <option value="content">正文</option>
+                                        </select>
+                                    </div>
+                                </div>
+                            </div>
+
+                            <!--规则1 -->
+                            <div class=" exact-rule-2" style="display: none">
+                            <div class="form-group" >
+                                <label class="col-sm-4 control-label"><span style="color:red;">* </span>关键词分组:</label>
+                                <div class="col-sm-8">
+                                    <select class="form-control groupSelect" name="groupSelect">
+                                    </select>
+                                </div>
+                            </div>
+                            <div class="form-group">
+                                <label class="col-sm-4 control-label"><span style="color:red;">* </span>出现次数>=</label>
+                                <div class="col-sm-8">
+                                    <input  type='number' min='0'  class="form-control" name="count" placeholder="请输入次数">
+                                </div>
+                            </div>
+                            <div class="form-group">
+                                <label class="col-sm-4 control-label"><span style="color:red;">* </span>匹配方式</label>
+                                <div class="col-sm-8">
+                                    <select class="form-control selectpicker" multiple name="matchWay">
+                                        <option value="title" selected>标题</option>
+                                        <option value="content">正文</option>
+                                    </select>
+                                </div>
+                            </div>
+                        </div>
+                        </div>
+                    </div>
+         <div style="text-align: center" id="addExactRuleButton">
+             <a onclick="addExactRule()" style="margin: 0 auto">+新增</a>
+         </div>
+
+                </div>
+               <div class="modal-footer">
+                   <button type="button" class="btn btn-default" data-dismiss="modal" onclick="formReset()">取消</button>
+                   <button type="button" class="btn btn-primary" onclick="add_exactRule_save()">确定</button>
+               </div>
+            </div>
+        </div>
+    </div><!-- /.modal -->
+</div>
+<div class="modal fade" id="modal-edit-exactRule" tabindex="-1" role="dialog" aria-hidden="true">
+    <div class="modal-dialog" style="width: 40%">
+        <div class="modal-content">
+            <div class="modal-header">
+                <div class="modal-header">
+                    <button type="button" class="close" data-dismiss="modal" aria-hidden="true" onclick="closeaaa()">&times;</button>
+                    <div class="edit-form">
+                        <div class="edit-info" style="text-align: center">
+                            <span >编辑精准筛选规则</span>
+                        </div>
+                        <div id="editexactRule">
+
                             <!--规则1 -->
                             <div class="insertexactRule-form exact-rule-1">
                                 <div class="form-group" >
@@ -144,20 +222,21 @@
                         </div>
                         </div>
                     </div>
-         <div style="text-align: center" id="addExactRuleButton">
+         <div style="text-align: center" id="editExactRuleButton">
              <a onclick="addExactRule()" style="margin: 0 auto">+新增</a>
          </div>
 
                 </div>
                <div class="modal-footer">
-                   <button type="button" class="btn btn-default" data-dismiss="modal" onclick="formReset()">取消</button>
-                   <button type="button" class="btn btn-primary" onclick="add_exactRule_save()">确定</button>
+                   <button type="button" class="btn btn-default" data-dismiss="modal" onclick="formReset1()">取消</button>
+                   <button type="button" class="btn btn-primary" onclick="edit_exactRule_save()">确定</button>
                </div>
             </div>
         </div>
     </div><!-- /.modal -->
 </div>
 
+
 <!-- 选择采购单位行业模态框 -->
 <div class="modal fade" id="modal-select-buyer" tabindex="-1" role="dialog" aria-hidden="true">
     <div class="modal-dialog" style="width: 60%">
@@ -411,7 +490,16 @@
                     <div id="testExactRule" class="exactRuleShow" style="display: none">
                         <label class="control-label">精准筛选规则</label><br/>
                         <div id="checkExactResult">验证结果:通过</div>
-                        <div id="checkExactRule">规则:title_A > 0 and content_A > 0</div><br/>
+                        <div id="checkExactRule">规则:
+                            <table id="checkExactRuleTable" class="table table-bordered">
+                                <thead>
+                                <tr>
+                                    <th>编号</th>
+                                    <th>关键词分组匹配条件</th>
+                                </tr>
+                                </thead>
+                            </table>
+                        </div><br/>
                     </div>
                     <div id="testKeyDiv" style="display: none">
                         <label class="control-label">关键词规则</label>

+ 212 - 48
CMPlatform/web/templates/private/cuser_rule_edit.html

@@ -546,7 +546,9 @@
     var selectIndex = [];               //选中的编号
     var setValue = 0;                   // 4: 关键词匹配方式,6:附加词匹配方式,8:排除词匹配方式,9:采购单位,10:公告行业, 2:全局采购单位类型, 3:全局公告行业
     var state = 1;
-    var exactRuleArr =[];// 临时数组 用于存放规则字符串转换后的数据
+    var exactRuleTableArr =[];// 临时数组 用于存放规则字符串转换后的数据
+    var testexactRuleTableArr =[];// 临时数组 用于存放数据验证规则字符串转换后的数据
+    var exactRuleTmpMatchWay = [[],[]]; // 临时数组 用于存放新增页面的匹配方式的筛选项
     $(document).ready(function () {
         var name1 = {{(session "user").name}};
         if (name1 != dataMap.s_updateuser) {
@@ -945,6 +947,42 @@
                 }
             }]
         });
+        exactRuleTableArr = exactRuleStrToArr( dataMap["s_exactRule"])
+        // 精准筛选规则表格
+        $('#exactRuleTable').DataTable({
+            "paging": false,
+            "lengthChange": false,
+            "searching": false,
+            "ordering": false,
+            "info": true,
+            "autoWidth": false,
+            "language": {
+                "url": "/dist/js/dataTables.chinese.lang"
+            },
+            "fnDrawCallback": function () {
+                this.api().column(0).nodes().each(function (cell, i) {
+                    cell.innerHTML = i + 1;
+                });
+                this.api().column(2).nodes().each(function (cell, i) {
+                    cell.innerHTML = '<div>' +
+                        '<a onclick="editExacRuleClick(\'' + i + '\')" >编辑</a>&nbsp&nbsp' +
+                        '<a onclick="delExacRuleClick(\'' + i + '\')" >删除</a>&nbsp&nbsp' +
+                        '</div>';
+                });
+            },
+            "data": exactRuleTableArr,
+            "columns": [
+                {"data": null},
+                {
+                    "data": function (row) {
+                        return exactRuleDataFormat(row)
+                    }
+                },
+                {
+                    "data": null
+                },
+            ]
+        });
     });
 
     $('#province').selectpicker({
@@ -1706,7 +1744,8 @@
         dataMap["s_globaladdkey"] = $('#g_addkey').val();
         dataMap["s_globalnotkey"] = $('#g_notkey').val();
         dataMap["s_globalclearkey"] = $('#s_globalclearkey').val();
-        dataMap["s_exactRule"] = $('#exactRule').val();
+        dataMap["s_exactRule"] = exactRuleArrToStr()
+        debugger
         if (dataMap["s_customer"] == "" || dataMap["s_name"] == "" || dataMap["s_salesperson"] == "" || dataMap["s_serverperson"] == "") {
             alert("请填写必须字段!")
             return
@@ -2559,7 +2598,33 @@
             data: {"title": title, "detail": detail},
             success: function (r) {
                 if (r.exactRule != ""){
-                    $("#checkExactRule").text("规则:"+r.exactRule)
+                    testexactRuleTableArr = exactRuleStrToArr( r.exactRule)
+                    $('#checkExactRuleTable').DataTable({
+                        "paging": false,
+                        "lengthChange": false,
+                        "searching": false,
+                        "ordering": false,
+                        "info": true,
+                        "autoWidth": false,
+                        "language": {
+                            "url": "/dist/js/dataTables.chinese.lang"
+                        },
+                        "fnDrawCallback": function () {
+                            this.api().column(0).nodes().each(function (cell, i) {
+                                cell.innerHTML = i + 1;
+                            });
+                        },
+                        "data": testexactRuleTableArr,
+                        "columns": [
+                            {"data": null},
+                            {
+                                "data": function (row) {
+                                    return exactRuleDataFormat(row)
+                                }
+                            }
+                        ]
+                    });
+
                 }else{
                     $("#checkExactRule").text("规则:")
                 }
@@ -2739,7 +2804,9 @@
         // 判断是否设置关键词
 
         // 判断是否设置关键词匹配方式
-
+        //
+        $("#modal-add-exactRule select[name='groupSelect']").empty()
+        debugger
         // 新增精准筛选规则弹框
        // 请求分组列表接口获取数据
         $.ajax({
@@ -2753,7 +2820,7 @@
                         var groupOption = document.createElement('option');
                         groupOption.innerText =r.data[i].name
                         groupOption.value = r.data[i].name
-                        $("select[name='groupSelect']").append(groupOption)
+                        $("#modal-add-exactRule select[name='groupSelect']").append(groupOption)
                     }
                 }
             }
@@ -2763,35 +2830,55 @@
     }
     // 精准筛选规则-新增按钮
     function addExactRule(){
-        // groupList()
-        // $(".addGroup").hide()
-
+        $("#insertexactRule .exact-rule-2").addClass("insertexactRule-form")
         $("#insertexactRule .exact-rule-2").show()
         $("#addExactRuleButton").hide()
         // $(".insertexactRule-form").selectpicker("refresh");
     }
     // 精准筛选规则-新增精准匹配规则保存按钮点击事件
     function add_exactRule_save(){
-
+        debugger
         // 获取值
-        document.querySelector("#insertexactRule > div.insertexactRule-form.exact-rule-1 > div:nth-child(1) > div > select")
-        // 更新exactRuleArr 临时数组
+        let ruleArr = []
+       let formList =  $("#insertexactRule .insertexactRule-form")
+        for (let i = 0; i < formList.length; i++) {
+            let groupName = formList[i].querySelector('[name=groupSelect]').value
+            let count = formList[i].querySelector('[name=count]').value
+            // 这是因为现在新增的表单是写死的两个
+            let tmp = '#insertexactRule .exact-rule-'+(i+1)+' select[name=matchWay]'
+            let matchWay = $(tmp).val();
+            if (groupName==""||matchWay.length==0||count==""){
+                showMsg("必填项缺失")
+                return
+            }
+            for (let j = 0; j < matchWay.length; j++) {
+                let rule =      {
+                    "group":groupName,"match_way":matchWay[j],"count":count
+                }
+                ruleArr.push(rule)
+            }
+        }
+        // 保存到exactRuleTableArr 临时数组
+        exactRuleTableArr.push(ruleArr)
+        $('#exactRuleTable').dataTable().fnClearTable();
+        $('#exactRuleTable').dataTable().fnAddData(exactRuleTableArr);
+        if (exactRuleTableArr.length == 0) {
+            $('#exactRuleTable').dataTable().fnClearTable();
+        }
+        $("#modal-add-exactRule").modal("hide");
 
-        // 转化成  规则保存到dataMap["s_exactRule"]
-        exactRuleArrToStr()
-        //
     }
     // 精准筛选规则-临时数组转换成规则字符串
     // [[{"group":"A","match_way":"content","count":5},{},{}],[]]
     // (title_A>0 and content_B>8) or title_B>4 or (content_A>7 and content_B>1)
     function exactRuleArrToStr(){
         let ruleStrArr = []
-        for (let i = 0; i < exactRuleArr.length; i++) {
+        for (let i = 0; i < exactRuleTableArr.length; i++) {
             let rulesArr = [];
-            for (let j = 0; j < exactRuleArr[i].length; j++) {
-                let count =exactRuleArr[i][j].count-1
-                let group = exactRuleArr[i][j].group
-                let match_way = exactRuleArr[i][j].match_way
+            for (let j = 0; j < exactRuleTableArr[i].length; j++) {
+                let count =exactRuleTableArr[i][j].count-1
+                let group = exactRuleTableArr[i][j].group
+                let match_way = exactRuleTableArr[i][j].match_way
                 let rule = match_way+"_"+group+">"+count
                 rulesArr.push(rule)
             }
@@ -2803,16 +2890,14 @@
                 }
             }
         }
-        dataMap["s_exactRule"] = ruleStrArr.join(" or ")
+        return  ruleStrArr.join(" or ")
     }
     // (title_A>0 and content_B>8) or title_B>4 or (content_A>7 and content_B>1)
     // 精准筛选规则-规则字符串转换成临时数组   仅支持这种格式 (title_A>0 and  content_B>8) or title_B>4 or (content_A>7 and content_B>1)
-    // 返回值 status  true 成功 false 转换失败
     // 分组名称不要包含公式中的符号 :  下划线、>、()、or、and
-    function exactRuleArrToStr()  {
-        // let exactRuleStr = dataMap["s_exactRule"]
-        let exactRuleStr = "(title_A>0 and content_B>8) or title_B>4 or (content_A>7 and content_B>1)"
-        debugger
+    function exactRuleStrToArr( exactRuleStr)  {
+        let exactRuleTableArrTmp = []
+        // let exactRuleStr = "(title_A>0 and content_B>8) or title_B>4 or (content_A>7 and content_B>1)"
         let exactRuleList = exactRuleStr.split(" or ") // 分割成单条规则
         for (let i=0; i< exactRuleList.length; i++) {
             let exactRuleTmp = exactRuleList[i]
@@ -2827,14 +2912,14 @@
                  let singleRuleSplit = singleRule.split("_")
                  if (singleRuleSplit.length<2){
                      console.log("singleRuleSplit 长度不够",singleRuleSplit)
-                     return false
+                     return
                  }
                  let matchWay = singleRuleSplit[0] // 第一位是匹配方式
                  // 然后接着分割出分组名称和次数  使用 _
                  let singleRuleSplit2 = singleRuleSplit[1].split(">")
                 if (singleRuleSplit2.length<2){
                     console.log("singleRuleSplit2 长度不够",singleRuleSplit2)
-                    return false
+                    return
                 }
                 let groupName = singleRuleSplit2[0]
                 let count = singleRuleSplit2[1]
@@ -2844,36 +2929,115 @@
                  }
                 rulesArr.push(rule)
             }
-            exactRuleArr.push(rulesArr)
+            exactRuleTableArrTmp.push(rulesArr)
         }
+        return exactRuleTableArrTmp;
     }
-    // 精准筛选规则-铺列表页面
-    function exactRuleTableShow(){
-        let ruleStrArr = []
-        for (let i = 0; i < exactRuleArr.length; i++) {
-            let rulesArr = [];
-            for (let j = 0; j < exactRuleArr[i].length; j++) {
-                let count =exactRuleArr[i][j].count-1
-                let group = exactRuleArr[i][j].group
-                let match_way = exactRuleArr[i][j].match_way
-                let rule = match_way+"_"+group+">"+count
-                rulesArr.push(rule)
-            }
-            if (rulesArr.length>1){ // 拼接小括号
-                ruleStrArr.push("("+rulesArr.join(" and ")+")")
+
+    const matchWayMap = {
+        "title":"标题",
+        "content":"全文"
+    }
+    // 规则数组转换列表字符串
+    function exactRuleDataFormat(contentArr ){
+        // keyArr 定义数组 维持最后有序
+        let keyArr = []
+        // 合并 标题正文 如果
+        let tmpDict = {}
+        for (let i = 0; i < contentArr.length; i++) {
+            let keyGroupCount = contentArr[i].group+"_"+ contentArr[i].count
+            if (tmpDict.hasOwnProperty(keyGroupCount)){
+                tmpDict[keyGroupCount].match_way.add(matchWayMap[contentArr[i].match_way])
             }else {
-                if (rulesArr.length>0){
-                    ruleStrArr.push(rulesArr[0])
+                let set = new Set();
+                tmpDict[keyGroupCount] = {
+                    "group":contentArr[i].group,"match_way":set.add(matchWayMap[contentArr[i].match_way]),"count":contentArr[i].count
                 }
+                keyArr.push(keyGroupCount)
+
             }
         }
+        let str = ""
+        for (let tmpDictKey in keyArr) {
+            str += "关键词分组:"+tmpDict[keyArr[tmpDictKey]].group+",出现次数>="+tmpDict[keyArr[tmpDictKey]].count+",匹配方式:"+Array.from(tmpDict[keyArr[tmpDictKey]].match_way).join(",")+";"
+        }
+        return str
     }
-    // 精准筛选规则-编辑规则页面
-    function exactRuleEdit(){
+    // 删除 点击事件
+    function delExacRuleClick(index) {
+        index = parseInt(index)
+        showConfirm("确定删除?", function () {
+            exactRuleTableArr  =  $.grep(exactRuleTableArr,function (n,i) {
+                return i!==index
+            })
+            $('#exactRuleTable').dataTable().fnClearTable();
+            $('#exactRuleTable').dataTable().fnAddData(exactRuleTableArr);
+            if (exactRuleTableArr.length == 0) {
+                $('#exactRuleTable').dataTable().fnClearTable();
+            }
+        })
 
     }
-    // 精准筛选规则-编辑规则页面
-    function exactRuleDelete(){
+    // 编辑点击事件
+    function editExacRuleClick(index){
+        let contentArr = exactRuleTableArr[index]
+        // keyArr 定义数组 维持最后有序
+        let keyArr = []
+        // 合并 标题正文 如果
+        let tmpDict = {}
+        for (let i = 0; i < contentArr.length; i++) {
+            let keyGroupCount = contentArr[i].group+"_"+ contentArr[i].count
+            if (tmpDict.hasOwnProperty(keyGroupCount)){
+                tmpDict[keyGroupCount].match_way.add(contentArr[i].match_way)
+            }else {
+                let set = new Set();
+                tmpDict[keyGroupCount] = {
+                    "group":contentArr[i].group,"match_way":set.add(contentArr[i].match_way),"count":contentArr[i].count
+                }
+                keyArr.push(keyGroupCount)
+            }
+        }
+        if(keyArr.length===0){
+            showTip("数据有误")
+        }
+
+        if(keyArr.length==2) { // 铺俩
+            $("#").val(tmpDict[keyArr[0]].count)
+        }
 
+            let str = ""
+        for (let tmpDictKey in keyArr) {
+            str += "关键词分组:"+tmpDict[keyArr[tmpDictKey]].group+",出现次数>="+tmpDict[keyArr[tmpDictKey]].count+",匹配方式:"+Array.from(tmpDict[keyArr[tmpDictKey]].match_way).join(",")+";"
+        }
+        // 铺数据
+        $.ajax({
+            url: "/service/cuser/groupList",
+            type: "post",
+            data: {"id": dataMap.id},
+            async: false,
+            success: function (r) {
+                if (r.data) {
+                    for (var i in r.data) {
+                        var groupOption = document.createElement('option');
+                        groupOption.innerText =r.data[i].name
+                        groupOption.value = r.data[i].name
+                        groupOption.selected = true
+                        if (selectElement.options[i].value === selectedValue) {
+                            selectElement.options[i].selected = true;
+                        $("#modal-edit-exactRule select[name='groupSelect']").append(groupOption)
+                    }
+                }
+            }
+        }})
+
+        $("#modal-edit-exactRule").modal("show");
+
+    }
+    function edit_exactRule_save(index){
+        debugger
     }
+    // 判断是否设置关键词
+
+    //  判断是否设置匹配方式
+
 </script>