在工序出站汇报单维护模块研究下或与过滤条件,在高级自定义过滤中做就行。 现在条件过滤都是单一的,比如根据车间过滤一次性只能过滤查询一个车间的数据,通过添加或与查询方式实现同时过滤查询多个车间的数据。 同时评估下是否能把高级自定义过滤封装到js文件中,页面引用js文件就能实现高级自定义过滤的显示与过滤功能
2个文件已添加
2个文件已修改
448 ■■■■■ 已修改文件
WebTM/filterRowTemplate.html 99 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WebTM/layuiadmin/SetColumn.js 120 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WebTM/layuiadmin/modules/dropdown-disable.js 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WebTM/views/车间管理/工序出站汇报单/Cj_StationOutBillList.html 189 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
WebTM/filterRowTemplate.html
New file
@@ -0,0 +1,99 @@

<div class="layui-row" style="margin-top:5px">
    <div class="layui-inline">
        <label class="layui-form-label" id="BT_ColName">过滤</label>
        <div class="layui-input-block">
            <select name="ColName" id="ColName" class="ForFilteringSchemes" lay-filter="ColName" style="width:190px;"></select>
        </div>
    </div>
    <div class="layui-inline">
        <select name="Comparator" id="Comparator" class="ForFilteringSchemes" lay-filter="Comparator" style="width:190px;">
            <option value="0" selected="selected"></option>
            <option value="=">=</option>
            <option value=">=">>=</option>
            <option value=">">></option>
            <option value="<="><=</option>
            <option value="<"><</option>
            <option value="<>"><></option>
            <option value="7">包含</option>
            <option value="8">左包含</option>
            <option value="9">右包含</option>
            <option value="10">不包含</option>
            <option value="为空">为空</option>
        </select>
    </div>
    <div class="layui-inline">
        <input type="text" class="layui-input ForFilteringSchemes" value="" name="ColContent" id="ColContent">
    </div>
    <div class="layui-inline">
        <select name="Logical_judgement" id="Logical_judgement" class="ForFilteringSchemes" lay-filter="Logical_judgement" style="width:190px;">
            <option value="0" selected="selected"></option>
            <option value="与">并且</option>
            <option value="或">或者</option>
        </select>
    </div>
</div>
<div class="layui-row" style="margin-top:5px">
    <div class="layui-inline">
        <label class="layui-form-label" id="BT_ColName1">过滤</label>
        <div class="layui-input-block">
            <select name="ColName1" id="ColName1" class="ForFilteringSchemes" lay-filter="ColName1" style="width:190px;">
            </select>
        </div>
    </div>
    <div class="layui-inline">
        <select name="Comparator1" id="Comparator1" class="ForFilteringSchemes" lay-filter="Comparator1" style="width:190px;">
            <option value="0" selected="selected"></option>
            <option value="=">=</option>
            <option value=">=">>=</option>
            <option value=">">></option>
            <option value="<="><=</option>
            <option value="<"><</option>
            <option value="<>"><></option>
            <option value="7">包含</option>
            <option value="8">左包含</option>
            <option value="9">右包含</option>
            <option value="10">不包含</option>
            <option value="为空">为空</option>
        </select>
    </div>
    <div class="layui-inline">
        <input type="text" class="layui-input ForFilteringSchemes" value="" name="ColContent1" id="ColContent1">
    </div>
    <div class="layui-inline">
        <select name="Logical_judgement1" id="Logical_judgement1" class="ForFilteringSchemes" lay-filter="Logical_judgement1" style="width:190px;">
            <option value="0" selected="selected"></option>
            <option value="与">并且</option>
            <option value="或">或者</option>
        </select>
    </div>
</div>
<div class="layui-row" style="margin-top:5px">
    <div class="layui-inline">
        <label class="layui-form-label" id="BT_ColName2">过滤</label>
        <div class="layui-input-block">
            <select name="ColName2" id="ColName2" class="ForFilteringSchemes" lay-filter="ColName2" style="width:190px;">
            </select>
        </div>
    </div>
    <div class="layui-inline">
        <select name="Comparator2" id="Comparator2" class="ForFilteringSchemes" lay-filter="Comparator2" style="width:190px;">
            <option value="0" selected="selected"></option>
            <option value="=">=</option>
            <option value=">=">>=</option>
            <option value=">">></option>
            <option value="<="><=</option>
            <option value="<"><</option>
            <option value="<>"><></option>
            <option value="7">包含</option>
            <option value="8">左包含</option>
            <option value="9">右包含</option>
            <option value="10">不包含</option>
            <option value="为空">为空</option>
        </select>
    </div>
    <div class="layui-inline">
        <input type="text" class="layui-input ForFilteringSchemes" value="" name="ColContent2" id="ColContent2">
    </div>
</div>
WebTM/layuiadmin/SetColumn.js
@@ -734,3 +734,123 @@
    }
    return count;
}
function buildFilterWhere(colName, comparator, colContent, Logical_judgement, sWhere) {
    if (!colName || !comparator || comparator === "0") return "";
    else if (sWhere == "") {
        var com = "";
        switch (comparator) {
            case "7":
                com = "like''%" + colContent + "%''";
                break;
            case "8":
                com = "like''%" + colContent + "''";
                break;
            case "9":
                com = "like''" + colContent + "%''";
                break;
            case "10":
                com = "not like''%" + colContent + "%''";
                break;
            default:
                com = "" + comparator + "''" + colContent + "''";
                break;
        }
        return " and " + "("+colName + " " + com ;
    }
    else if (sWhere != "")
    {
        var com = "";
        switch (comparator) {
            case "7":
                com = "like''%" + colContent + "%''";
                break;
            case "8":
                com = "like''%" + colContent + "''";
                break;
            case "9":
                com = "like''" + colContent + "%''";
                break;
            case "10":
                com = "not like''%" + colContent + "%''";
                break;
            default:
                com = "" + comparator + "''" + colContent + "''";
                break;
        }
        return Logical_judgement === "或" ? " or " + colName + " " + com + ")" : " and " + colName + " " + com + ")";
    }
    else {
        var com = "";
        switch (comparator) {
            case "7":
                com = "like''%" + colContent + "%''";
                break;
            case "8":
                com = "like''%" + colContent + "''";
                break;
            case "9":
                com = "like''" + colContent + "%''";
                break;
            case "10":
                com = "not like''%" + colContent + "%''";
                break;
            default:
                com = "" + comparator + "''" + colContent + "''";
                break;
        }
        return " and " + colName + " " + com;
    }
}
function fixParenthesesMatching(swhere) {
    const keywordEndPositions = [];
    const keywordRegex = /\b(and|or)\b/gi;
    let match;
    while ((match = keywordRegex.exec(swhere)) !== null) {
        keywordEndPositions.push(match.index + match[0].length);
    }
    keywordEndPositions.sort((a, b) => a - b);
    let leftCount = 0;
    const insertPositions = [];
    const workingKeywordPositions = [...keywordEndPositions];
    for (let i = 0; i < swhere.length; i++) {
        if (swhere[i] === '(') {
            leftCount++;
        } else if (swhere[i] === ')') {
            leftCount--;
            if (leftCount < 0) {
                let insertIndex = -1;
                for (let j = workingKeywordPositions.length - 1; j >= 0; j--) {
                    if (workingKeywordPositions[j] < i) {
                        insertIndex = workingKeywordPositions[j];
                        workingKeywordPositions.splice(j, 1);
                        break;
                    }
                }
                insertPositions.push(insertIndex !== -1 ? insertIndex : 0);
                leftCount = 0;
            }
        }
    }
    let result = swhere;
    insertPositions
        .sort((a, b) => b - a)
        .forEach(pos => {
            result = result.slice(0, pos) + '(' + result.slice(pos);
        });
    return result;
}
WebTM/layuiadmin/modules/dropdown-disable.js
New file
@@ -0,0 +1,40 @@
layui.define(['jquery', 'form'], function (exports) {
    var $ = layui.$;
    var form = layui.form;
    var DropdownDisable = {
        init: function (options) {
            var dropdownSelector = options.dropdown;
            var inputSelector = options.input;
            var filter = options.filter;
            var disableValue = options.disableValue || "为空";
            var $dropdown = $(dropdownSelector);
            var $input = $(inputSelector);
            if (!$dropdown.length || !$input.length || !filter) return;
            form.on('select(' + filter + ')', function (data) {
                DropdownDisable._updateInput($input, data.value === disableValue);
            });
            DropdownDisable._updateInput($input, $dropdown.val() === disableValue);
        },
        _updateInput: function ($input, disabled) {
            if (disabled) {
                $input.prop('disabled', true)
                    .addClass('layui-disabled')
                    .attr('placeholder', '已禁用输入');
            } else {
                $input.prop('disabled', false)
                    .removeClass('layui-disabled')
                    .attr('placeholder', '请输入内容');
            }
        }
    };
    exports('dropdownDisable', DropdownDisable);
});
WebTM/views/³µ¼ä¹ÜÀí/¹¤Ðò³öÕ¾»ã±¨µ¥/Cj_StationOutBillList.html
@@ -141,86 +141,7 @@
                                            </div>
                                        </div>
                                    </div>
                                    <div class="layui-row" style="margin-top:5px">
                                        <div class="layui-inline">
                                            <label class="layui-form-label" id="BT_ColName">过滤</label>
                                            <div class="layui-input-block">
                                                <select name="ColName" id="ColName" class="ForFilteringSchemes" lay-filter="ColName" style="width:190px;">
                                                </select>
                                            </div>
                                        </div>
                                        <div class="layui-inline">
                                            <select name="Comparator" id="Comparator" class="ForFilteringSchemes" lay-filter="Comparator" style="width:190px;">
                                                <option value="0" selected="selected"></option>
                                                <option value="=">=</option>
                                                <option value=">=">>=</option>
                                                <option value=">">></option>
                                                <option value="<="><=</option>
                                                <option value="<"><</option>
                                                <option value="<>"><></option>
                                                <option value="7">包含</option>
                                                <option value="8">左包含</option>
                                                <option value="9">右包含</option>
                                                <option value="10">不包含</option>
                                            </select>
                                        </div>
                                        <div class="layui-inline">
                                            <input type="text" class="layui-input ForFilteringSchemes" value="" name="ColContent" id="ColContent">
                                        </div>
                                    </div>
                                    <div class="layui-row" style="margin-top:5px">
                                        <div class="layui-inline">
                                            <label class="layui-form-label" id="BT_ColName1">过滤</label>
                                            <div class="layui-input-block">
                                                <select name="ColName1" id="ColName1" class="ForFilteringSchemes" lay-filter="ColName1" style="width:190px;">
                                                </select>
                                            </div>
                                        </div>
                                        <div class="layui-inline">
                                            <select name="Comparator1" id="Comparator1" class="ForFilteringSchemes" lay-filter="Comparator1" style="width:190px;">
                                                <option value="0" selected="selected"></option>
                                                <option value="=">=</option>
                                                <option value=">=">>=</option>
                                                <option value=">">></option>
                                                <option value="<="><=</option>
                                                <option value="<"><</option>
                                                <option value="<>"><></option>
                                                <option value="7">包含</option>
                                                <option value="8">左包含</option>
                                                <option value="9">右包含</option>
                                                <option value="10">不包含</option>
                                            </select>
                                        </div>
                                        <div class="layui-inline">
                                            <input type="text" class="layui-input ForFilteringSchemes" value="" name="ColContent1" id="ColContent1">
                                        </div>
                                    </div>
                                    <div class="layui-row" style="margin-top:5px">
                                        <div class="layui-inline">
                                            <label class="layui-form-label" id="BT_ColName2">过滤</label>
                                            <div class="layui-input-block">
                                                <select name="ColName2" id="ColName2" class="ForFilteringSchemes" lay-filter="ColName2" style="width:190px;">
                                                </select>
                                            </div>
                                        </div>
                                        <div class="layui-inline">
                                            <select name="Comparator2" id="Comparator2" class="ForFilteringSchemes" lay-filter="Comparator2" style="width:190px;">
                                                <option value="0" selected="selected"></option>
                                                <option value="=">=</option>
                                                <option value=">=">>=</option>
                                                <option value=">">></option>
                                                <option value="<="><=</option>
                                                <option value="<"><</option>
                                                <option value="<>"><></option>
                                                <option value="7">包含</option>
                                                <option value="8">左包含</option>
                                                <option value="9">右包含</option>
                                                <option value="10">不包含</option>
                                            </select>
                                        </div>
                                        <div class="layui-inline">
                                            <input type="text" class="layui-input ForFilteringSchemes" value="" name="ColContent2" id="ColContent2">
                                        </div>
                                    <div id="filter-row"> <!--过滤框html-->
                                    </div>
                                </div>
                            </div>
@@ -326,6 +247,7 @@
            base: '../../../layuiadmin/' //静态资源所在路径
        }).extend({
            index: 'lib/index', //主入口模块
            dropdownDisable: 'dropdown-disable'//下拉框禁用联动模块
        }).use(['index', 'form', 'table', 'element', 'laypage', 'laydate', 'soulTable','tableFilter'], function () {
            var $ = layui.$
                , admin = layui.admin
@@ -389,7 +311,28 @@
            //初始化界面
            set_ClearBill();
            //下拉框禁用联动
            layui.use(['form', 'dropdownDisable'], function () {
                var dropdownDisable = layui.dropdownDisable;
                dropdownDisable.init({
                    dropdown: '#Comparator',
                    input: '#ColContent',
                    filter: 'Comparator', // lay-filter åç§°
                    disableValue: '为空'
                });
                dropdownDisable.init({
                    dropdown: '#Comparator1',
                    input: '#ColContent1',
                    filter: 'Comparator1', // lay-filter åç§°
                    disableValue: '为空'
                });
                dropdownDisable.init({
                    dropdown: '#Comparator2',
                    input: '#ColContent2',
                    filter: 'Comparator2', // lay-filter åç§°
                    disableValue: '为空'
                });
            });
            //日期间隔下拉列表监听
            form.on('select(HInitTimeCycle)', function (data) {
                var HInitTimeCycle = $("#HInitTimeCycle").val() * 1;
@@ -785,9 +728,13 @@
                    }
                });
            }
            //#region åˆå§‹åŒ–界面
            function set_ClearBill() {
                $.get("../../../filterRowTemplate.html", function (data) {
                    $("#filter-row").html(data);
                    ColFilter(); // é‡æ–°ç”Ÿæˆä¸‹æ‹‰é€‰é¡¹
                    layui.form.render(); // æ¸²æŸ“表单控件
                });
                //初始化日期间隔、开始日期、结束日期
                setSelect_HInitTimeCycle();
                //若日期间隔不为 ä»»æ„é—´éš”,则禁用开始日期与结束日期的选择
@@ -2066,10 +2013,13 @@
                $("#ColContent").val("");
                $("#ColName").val("0");
                $("#Comparator").val("0"); $("#ColContent1").val("");
                $("#Logical_judgement").val("0");
                $("#ColName1").val("0");
                $("#Comparator1").val("0"); $("#ColContent2").val("");
                $("#Logical_judgement1").val("0");
                $("#ColName2").val("0");
                $("#Comparator2").val("0");
                $("#Logical_judgement2").val("0");
               
                form.render('select');
                sWhere = "";
@@ -2095,83 +2045,26 @@
                var checkHWasterQty = $("input[name='checkHWasterQty']").prop("checked");//复选框
                var ColName = $("#ColName").val();//复选框
                var Comparator = $("#Comparator").val();
                var Logical_judgement = $("#Logical_judgement").val();
                var ColContent = $("#ColContent").val();
                var ColName1 = $("#ColName1").val();//复选框
                var Comparator1 = $("#Comparator1").val();
                var ColContent1 = $("#ColContent1").val();
                var Logical_judgement1 = $("#Logical_judgement1").val();
                var ColName2 = $("#ColName2").val();//复选框
                var Comparator2 = $("#Comparator2").val()
                var ColContent2 = $("#ColContent2").val();
                var Logical_judgement2 = $("#Logical_judgement2").val();
                var HNumber = $("#HNumber").val(); //产品代码 å³ç‰©æ–™ç¼–码
                var HName = $("#HName").val(); //当前工序
                var HEmpNumber = $("#HEmpNumber").val(); //操作员代码
                var HEmpName = $("#HEmpName").val(); //操作员名称
                if (ColName != 0 && Comparator != 0) {
                    var com = "";
                    switch (Comparator) {
                        case "7":
                            com = "like''%" + ColContent + "%''";
                            break;
                        case "8":
                            com = "like''%" + ColContent + "''";
                            break;
                        case "9":
                            com = "like''" + ColContent + "%''";
                            break;
                        case "10":
                            com = "not like''%" + ColContent + "%''";
                            break;
                        default:
                            com = "" + Comparator + "''" + ColContent + "''";
                            break;
                    }
                    sWhere += " and " + ColName+    " "+ com;
                }
                if (ColName1 != 0 && Comparator1 != 0) {
                    var com = "";
                    switch (Comparator1) {
                        case "7":
                            com = "like''%" + ColContent1 + "%''";
                            break;
                        case "8":
                            com = "like''%" + ColContent1 + "''";
                            break;
                        case "9":
                            com = "like''" + ColContent1 + "%''";
                            break;
                        case "10":
                            com = "not like''%" + ColContent1 + "%''";
                            break;
                        default:
                            com = "" + Comparator1 + "''" + ColContent1 + "''";
                            break;
                    }
                    sWhere += " and " + ColName1 + " " + com;
                }
                if (ColName2 != 0 && Comparator2 != 0) {
                    var com2 = "";
                    switch (Comparator2) {
                        case "7":
                            com2 = "like'%" + ColContent2 + "%'";
                            break;
                        case "8":
                            com2 = "like'%" + ColContent2 + "'";
                            break;
                        case "9":
                            com2 = "like'" + ColContent2 + "%'";
                            break;
                        case "10":
                            com2 = "not like'%" + ColContent2 + "%'";
                            break;
                        default:
                            com2 = "" + Comparator2 + "'" + ColContent2 + "'";
                            break;
                    }
                    sWhere += " and " + ColName2 + " " + com2;
                }
                //过滤框过滤
                sWhere += buildFilterWhere(ColName, Comparator, ColContent, Logical_judgement, sWhere);
                sWhere += buildFilterWhere(ColName1, Comparator1, ColContent1, Logical_judgement, sWhere);
                sWhere += buildFilterWhere(ColName2, Comparator2, ColContent2, Logical_judgement1, sWhere);
                //括号匹配
                sWhere=fixParenthesesMatching(sWhere);
                if (HBeginDate) {
                    sWhere += " and CONVERT(varchar(100),出站时间, 23) >= ''" + HBeginDate + "''";
                }