Browse Source

修复时间搜索在between下的BUG

Karson 8 years ago
parent
commit
cb929e8207

+ 11 - 0
application/common/controller/Backend.php

@@ -306,6 +306,17 @@ class Backend extends Controller
                     $arr = array_slice(explode(',', $v), 0, 2);
                     if (stripos($v, ',') === false || !array_filter($arr))
                         continue;
+                    //当出现一边为空时改变操作符
+                    if ($arr[0] === '')
+                    {
+                        $sym = $sym == 'RANGE' ? '<=' : '>';
+                        $arr = $arr[1];
+                    }
+                    else if ($arr[1] === '')
+                    {
+                        $sym = $sym == 'RANGE' ? '>=' : '<';
+                        $arr = $arr[0];
+                    }
                     $where[] = [$k, str_replace('RANGE', 'BETWEEN', $sym) . ' time', $arr];
                     break;
                 case 'LIKE':

+ 10 - 6
public/assets/js/bootstrap-table-commonsearch.js

@@ -122,7 +122,7 @@
                 htmlForm.push(sprintf('<label for="%s" class="control-label col-xs-4">%s</label>', vObjCol.field, vObjCol.title));
                 htmlForm.push('<div class="col-xs-8">');
 
-                vObjCol.operate = (typeof vObjCol.operate === 'undefined' || $.inArray(vObjCol.operate, opList) === -1) ? '=' : vObjCol.operate;
+                vObjCol.operate = (typeof vObjCol.operate === 'undefined' || $.inArray(vObjCol.operate.toUpperCase(), opList) === -1) ? '=' : vObjCol.operate.toUpperCase();
                 htmlForm.push(sprintf('<input type="hidden" class="form-control operate" name="field-%s" data-name="%s" value="%s" readonly>', vObjCol.field, vObjCol.field, vObjCol.operate));
 
                 var style = typeof vObjCol.style === 'undefined' ? '' : sprintf('style="%s"', vObjCol.style);
@@ -169,11 +169,11 @@
                     var data = typeof vObjCol.data === 'undefined' ? '' : vObjCol.data;
                     var defaultValue = typeof vObjCol.defaultValue === 'undefined' ? '' : vObjCol.defaultValue;
                     if (/BETWEEN$/.test(vObjCol.operate)) {
-                        var defaultValueArr = /^.+|.+$/.test(defaultValue) ? defaultValue.split('|') : ['', ''];
-                        var placeholderArr = /^.+|.+$/.test(placeholder) ? placeholder.split('|') : [placeholder, placeholder];
+                        var defaultValueArr = defaultValue.toString().match(/\|/) ? defaultValue.split('|') : ['', ''];
+                        var placeholderArr = placeholder.toString().match(/\|/) ? placeholder.split('|') : [placeholder, placeholder];
                         htmlForm.push('<div class="row row-between">');
-                        htmlForm.push(sprintf('<div class="col-xs-6"><input type="%s" class="%s" name="%s" value="%s" placeholder="%s" id="%s" data-index="%s" %s %s></div>', type, addclass, vObjCol.field, defaultValueArr[0], placeholderArr[0], vObjCol.field, i, style, data));
-                        htmlForm.push(sprintf('<div class="col-xs-6"><input type="%s" class="%s" name="%s" value="%s" placeholder="%s" id="%s" data-index="%s" %s %s></div>', type, addclass, vObjCol.field, defaultValueArr[1], placeholderArr[1], vObjCol.field, i, style, data));
+                        htmlForm.push(sprintf('<div class="col-xs-6 11"><input type="%s" class="%s" name="%s" value="%s" placeholder="%s" id="%s" data-index="%s" %s %s></div>', type, addclass, vObjCol.field, defaultValueArr[0], placeholderArr[0], vObjCol.field, i, style, data));
+                        htmlForm.push(sprintf('<div class="col-xs-6 22"><input type="%s" class="%s" name="%s" value="%s" placeholder="%s" id="%s" data-index="%s" %s %s></div>', type, addclass, vObjCol.field, defaultValueArr[1], placeholderArr[1], vObjCol.field, i, style, data));
                         htmlForm.push('</div>');
                     } else {
                         htmlForm.push(sprintf('<input type="%s" class="%s" name="%s" value="%s" placeholder="%s" id="%s" data-index="%s" %s %s>', type, addclass, vObjCol.field, defaultValue, placeholder, vObjCol.field, i, style, data));
@@ -221,7 +221,7 @@
         var value = '';
         $("form.form-commonsearch input.operate", that.$commonsearch).each(function (i) {
             var name = $(this).data("name");
-            var sym = $(this).val();
+            var sym = $(this).val().toUpperCase();
             var obj = $("[name='" + name + "']", that.$commonsearch);
             if (obj.size() == 0)
                 return true;
@@ -238,6 +238,10 @@
                     } else {
                         value = '';
                     }
+                    //如果是时间筛选,将operate置为RANGE
+                    if ($("[name='" + name + "']:first", that.$commonsearch).hasClass("datetimepicker")) {
+                        sym = 'RANGE';
+                    }
                 } else {
                     value = $("[name='" + name + "']:checked", that.$commonsearch).val();
                 }

+ 10 - 5
public/assets/js/require-backend.min.js

@@ -9030,7 +9030,7 @@ return d.keepInvalid=a,l},l.datepickerInput=function(a){if(0===arguments.length)
                 htmlForm.push(sprintf('<label for="%s" class="control-label col-xs-4">%s</label>', vObjCol.field, vObjCol.title));
                 htmlForm.push('<div class="col-xs-8">');
 
-                vObjCol.operate = (typeof vObjCol.operate === 'undefined' || $.inArray(vObjCol.operate, opList) === -1) ? '=' : vObjCol.operate;
+                vObjCol.operate = (typeof vObjCol.operate === 'undefined' || $.inArray(vObjCol.operate.toUpperCase(), opList) === -1) ? '=' : vObjCol.operate.toUpperCase();
                 htmlForm.push(sprintf('<input type="hidden" class="form-control operate" name="field-%s" data-name="%s" value="%s" readonly>', vObjCol.field, vObjCol.field, vObjCol.operate));
 
                 var style = typeof vObjCol.style === 'undefined' ? '' : sprintf('style="%s"', vObjCol.style);
@@ -9077,10 +9077,11 @@ return d.keepInvalid=a,l},l.datepickerInput=function(a){if(0===arguments.length)
                     var data = typeof vObjCol.data === 'undefined' ? '' : vObjCol.data;
                     var defaultValue = typeof vObjCol.defaultValue === 'undefined' ? '' : vObjCol.defaultValue;
                     if (/BETWEEN$/.test(vObjCol.operate)) {
-                        var defaultValueArr = /^.+|.+$/.test(defaultValue) ? defaultValue.split('|') : ['', ''];
+                        var defaultValueArr = defaultValue.toString().match(/\|/) ? defaultValue.split('|') : ['', ''];
+                        var placeholderArr = placeholder.toString().match(/\|/) ? placeholder.split('|') : [placeholder, placeholder];
                         htmlForm.push('<div class="row row-between">');
-                        htmlForm.push(sprintf('<div class="col-xs-6"><input type="%s" class="%s" name="%s" value="%s" placeholder="%s" id="%s" data-index="%s" %s %s></div>', type, addclass, vObjCol.field, defaultValueArr[0], placeholder, vObjCol.field, i, style, data));
-                        htmlForm.push(sprintf('<div class="col-xs-6"><input type="%s" class="%s" name="%s" value="%s" placeholder="%s" id="%s" data-index="%s" %s %s></div>', type, addclass, vObjCol.field, defaultValueArr[1], placeholder, vObjCol.field, i, style, data));
+                        htmlForm.push(sprintf('<div class="col-xs-6 11"><input type="%s" class="%s" name="%s" value="%s" placeholder="%s" id="%s" data-index="%s" %s %s></div>', type, addclass, vObjCol.field, defaultValueArr[0], placeholderArr[0], vObjCol.field, i, style, data));
+                        htmlForm.push(sprintf('<div class="col-xs-6 22"><input type="%s" class="%s" name="%s" value="%s" placeholder="%s" id="%s" data-index="%s" %s %s></div>', type, addclass, vObjCol.field, defaultValueArr[1], placeholderArr[1], vObjCol.field, i, style, data));
                         htmlForm.push('</div>');
                     } else {
                         htmlForm.push(sprintf('<input type="%s" class="%s" name="%s" value="%s" placeholder="%s" id="%s" data-index="%s" %s %s>', type, addclass, vObjCol.field, defaultValue, placeholder, vObjCol.field, i, style, data));
@@ -9128,7 +9129,7 @@ return d.keepInvalid=a,l},l.datepickerInput=function(a){if(0===arguments.length)
         var value = '';
         $("form.form-commonsearch input.operate", that.$commonsearch).each(function (i) {
             var name = $(this).data("name");
-            var sym = $(this).val();
+            var sym = $(this).val().toUpperCase();
             var obj = $("[name='" + name + "']", that.$commonsearch);
             if (obj.size() == 0)
                 return true;
@@ -9145,6 +9146,10 @@ return d.keepInvalid=a,l},l.datepickerInput=function(a){if(0===arguments.length)
                     } else {
                         value = '';
                     }
+                    //如果是时间筛选,将operate置为RANGE
+                    if ($("[name='" + name + "']:first", that.$commonsearch).hasClass("datetimepicker")) {
+                        sym = 'RANGE';
+                    }
                 } else {
                     value = $("[name='" + name + "']:checked", that.$commonsearch).val();
                 }