新增time_limit查询;新增number_limit查询;新增同一个字段多个搜索项;

This commit is contained in:
2022-04-27 17:35:32 +08:00
parent 48ada69be8
commit 97c991e916
4 changed files with 252 additions and 154 deletions

View File

@@ -187,7 +187,6 @@ class AdminController extends BaseController
} }
$this->validateRule->failException(true)->check($data); $this->validateRule->failException(true)->check($data);
} else if (is_array($this->validateRule)) { } else if (is_array($this->validateRule)) {
parent::validate($data, $this->validateRule, $message, $batch); parent::validate($data, $this->validateRule, $message, $batch);
} else { } else {
@@ -226,6 +225,13 @@ class AdminController extends BaseController
continue; continue;
} }
$op = isset($ops[$key]) && !empty($ops[$key]) ? $ops[$key] : '%*%'; $op = isset($ops[$key]) && !empty($ops[$key]) ? $ops[$key] : '%*%';
if (strpos($key, '[') === 0) {
$key = str_replace('[', '', $key);
$key = explode(']', $key)[0];
}
if ($this->relationSearch && count(explode('.', $key)) == 1) { if ($this->relationSearch && count(explode('.', $key)) == 1) {
$key = "{$tableName}.{$key}"; $key = "{$tableName}.{$key}";
} }
@@ -242,6 +248,18 @@ class AdminController extends BaseController
case '%*': case '%*':
$where[] = [$key, 'LIKE', "%{$val}"]; $where[] = [$key, 'LIKE', "%{$val}"];
break; break;
case 'min':
$where[] = [$key, '>=', $val];
break;
case 'max':
$where[] = [$key, '<=', $val];
break;
case 'min_date':
$where[] = [$key, '>=', strtotime($val)];
break;
case 'max_date':
$where[] = [$key, '<=', strtotime($val)];
break;
case 'range': case 'range':
[$beginTime, $endTime] = explode(' - ', $val); [$beginTime, $endTime] = explode(' - ', $val);
$where[] = [$key, '>=', strtotime($beginTime)]; $where[] = [$key, '>=', strtotime($beginTime)];

View File

@@ -2,7 +2,8 @@
@import url("../../plugs/font-awesome-4.7.0/css/font-awesome.min.css"); @import url("../../plugs/font-awesome-4.7.0/css/font-awesome.min.css");
@import url("../css/iconfont.css"); @import url("../css/iconfont.css");
html, body { html,
body {
height : 100%; height : 100%;
background: #f2f2f2; background: #f2f2f2;
} }
@@ -96,7 +97,8 @@ html, body {
/*.layuimini-form>.layui-form-item>.layui-form-label {width:120px !important;}*/ /*.layuimini-form>.layui-form-item>.layui-form-label {width:120px !important;}*/
/*.layuimini-form>.layui-form-item>.layui-input-block {margin-left:150px !important;}*/ /*.layuimini-form>.layui-form-item>.layui-input-block {margin-left:150px !important;}*/
.layuimini-form > .layui-form-item > .layui-input-block tip, .layuimini-form > .layui-form-item > .layui-inline tip { .layuimini-form>.layui-form-item>.layui-input-block tip,
.layuimini-form>.layui-form-item>.layui-inline tip {
display : inline-block; display : inline-block;
margin-top : 10px; margin-top : 10px;
line-height: 15px; line-height: 15px;
@@ -232,7 +234,8 @@ table样式
border-color: #e6e6e6; border-color: #e6e6e6;
} }
.layuimini-container .layui-table-page, .layui-table-total { .layuimini-container .layui-table-page,
.layui-table-total {
border-width: 0px 0 0; border-width: 0px 0 0;
} }
@@ -267,6 +270,7 @@ table样式
height : 32px; height : 32px;
padding : 2px 8px; padding : 2px 8px;
line-height: 1em; line-height: 1em;
font-size : 12px;
} }
.form-search .layui-form-select dl { .form-search .layui-form-select dl {
@@ -611,3 +615,11 @@ table样式
.search-hide-item { .search-hide-item {
display: none; display: none;
} }
.form-item-time-limit .layui-input-inline {
display: flex;
width : 274px;
}
.form-item-number-limit .layui-input-inline {
display: flex;
}

View File

@@ -21,7 +21,9 @@ define(["jquery", "easy-admin"], function ($, ea) {
limit: 50, limit: 50,
cols: [[ cols: [[
{ type: 'checkbox' }, { type: 'checkbox' },
{ field: 'id', title: 'id' }, { field: 'id', title: 'id', search: 'number_limit' },
{ field: 'id', title: 'id模糊匹配', trueHide: true, fieldAlias: '[id]like' },
{ field: 'id', title: '最大id', trueHide: true, fieldAlias: '[id]max', searchOp: 'max' },
{ {
field: 'uid', title: 'uid', minWidth: 120, field: 'uid', title: 'uid', minWidth: 120,
}, },
@@ -36,11 +38,9 @@ define(["jquery", "easy-admin"], function ($, ea) {
var className = 'log-group log-group-' + (currentUidIndex % 2) var className = 'log-group log-group-' + (currentUidIndex % 2)
return '<div class="' + className + '">' + data.content + '</div>' return '<div class="' + className + '">' + data.content + '</div>'
} }
}, },
{ field: 'create_time', title: 'create_time', minWidth: 160 }, { field: 'create_time', title: '记录时间', minWidth: 160, search: 'time_limit' },
{ field: 'app_name', title: 'app_name' }, { field: 'app_name', title: 'app_name' },
{ field: 'controller_name', title: 'controller_name', }, { field: 'controller_name', title: 'controller_name', },
{ field: 'action_name', title: 'action_name' }, { field: 'action_name', title: 'action_name' },

View File

@@ -288,6 +288,14 @@ define(["jquery", "tableSelect", "ckeditor"], function ($, tableSelect, undefine
// 判断是否有操作列表权限 // 判断是否有操作列表权限
options.cols = admin.table.renderOperat(options.cols, options.elem); options.cols = admin.table.renderOperat(options.cols, options.elem);
// 判断是否有操作列表权限
options.cols = admin.table.renderTrueHide(options.cols, options.elem);
// 初始化表格 // 初始化表格
var newTable = table.render(options); var newTable = table.render(options);
@@ -363,6 +371,15 @@ define(["jquery", "tableSelect", "ckeditor"], function ($, tableSelect, undefine
d.searchOp = d.searchOp || '%*%'; d.searchOp = d.searchOp || '%*%';
d.timeType = d.timeType || 'datetime'; d.timeType = d.timeType || 'datetime';
d.elemIdName = d.fieldAlias;
if (typeof d.fieldAlias == 'string' && d.fieldAlias.indexOf('[') == 0) {
var fieldPlusArr = d.fieldAlias.replace('[').split(']');
d.elemIdName = fieldPlusArr.join('-')
}
if (d.defaultSearchValue.length > 0) { if (d.defaultSearchValue.length > 0) {
if (d.searchValue.length == 0) { if (d.searchValue.length == 0) {
d.searchValue = d.defaultSearchValue; d.searchValue = d.defaultSearchValue;
@@ -385,7 +402,7 @@ define(["jquery", "tableSelect", "ckeditor"], function ($, tableSelect, undefine
formHtml += '\t<div class="layui-form-item layui-inline ' + formSearchHideClass + ' ">\n' + formHtml += '\t<div class="layui-form-item layui-inline ' + formSearchHideClass + ' ">\n' +
'<label class="layui-form-label">' + d.title + '</label>\n' + '<label class="layui-form-label">' + d.title + '</label>\n' +
'<div class="layui-input-inline">\n' + '<div class="layui-input-inline">\n' +
'<input id="c-' + d.fieldAlias + '" name="' + d.fieldAlias + '" data-search-op="' + d.searchOp + '" value="' + d.searchValue + '" placeholder="' + d.searchTip + '" class="layui-input">\n' + '<input id="c-' + d.elemIdName + '" name="' + d.fieldAlias + '" data-search-op="' + d.searchOp + '" value="' + d.searchValue + '" placeholder="' + d.searchTip + '" class="layui-input">\n' +
'</div>\n' + '</div>\n' +
'</div>'; '</div>';
break; break;
@@ -403,7 +420,7 @@ define(["jquery", "tableSelect", "ckeditor"], function ($, tableSelect, undefine
formHtml += '\t<div class="layui-form-item layui-inline ' + formSearchHideClass + ' ">\n' + formHtml += '\t<div class="layui-form-item layui-inline ' + formSearchHideClass + ' ">\n' +
'<label class="layui-form-label">' + d.title + '</label>\n' + '<label class="layui-form-label">' + d.title + '</label>\n' +
'<div class="layui-input-inline">\n' + '<div class="layui-input-inline">\n' +
'<select class="layui-select" id="c-' + d.fieldAlias + '" name="' + d.fieldAlias + '" data-search-op="' + d.searchOp + '" >\n' + '<select class="layui-select" id="c-' + d.elemIdName + '" name="' + d.fieldAlias + '" data-search-op="' + d.searchOp + '" >\n' +
'<option value="">- 全部 -</option> \n' + '<option value="">- 全部 -</option> \n' +
selectHtml + selectHtml +
'</select>\n' + '</select>\n' +
@@ -415,7 +432,7 @@ define(["jquery", "tableSelect", "ckeditor"], function ($, tableSelect, undefine
formHtml += '\t<div class="layui-form-item layui-inline ' + formSearchHideClass + ' ">\n' + formHtml += '\t<div class="layui-form-item layui-inline ' + formSearchHideClass + ' ">\n' +
'<label class="layui-form-label">' + d.title + '</label>\n' + '<label class="layui-form-label">' + d.title + '</label>\n' +
'<div class="layui-input-inline">\n' + '<div class="layui-input-inline">\n' +
'<input id="c-' + d.fieldAlias + '" name="' + d.fieldAlias + '" data-search-op="' + d.searchOp + '" value="' + d.searchValue + '" placeholder="' + d.searchTip + '" class="layui-input">\n' + '<input id="c-' + d.elemIdName + '" name="' + d.fieldAlias + '" data-search-op="' + d.searchOp + '" value="' + d.searchValue + '" placeholder="' + d.searchTip + '" class="layui-input">\n' +
'</div>\n' + '</div>\n' +
'</div>'; '</div>';
break; break;
@@ -424,7 +441,27 @@ define(["jquery", "tableSelect", "ckeditor"], function ($, tableSelect, undefine
formHtml += '\t<div class="layui-form-item layui-inline ' + formSearchHideClass + ' ">\n' + formHtml += '\t<div class="layui-form-item layui-inline ' + formSearchHideClass + ' ">\n' +
'<label class="layui-form-label">' + d.title + '</label>\n' + '<label class="layui-form-label">' + d.title + '</label>\n' +
'<div class="layui-input-inline">\n' + '<div class="layui-input-inline">\n' +
'<input id="c-' + d.fieldAlias + '" name="' + d.fieldAlias + '" data-search-op="' + d.searchOp + '" value="' + d.searchValue + '" placeholder="' + d.searchTip + '" class="layui-input">\n' + '<input id="c-' + d.elemIdName + '" name="' + d.fieldAlias + '" data-search-op="' + d.searchOp + '" value="' + d.searchValue + '" placeholder="' + d.searchTip + '" class="layui-input">\n' +
'</div>\n' +
'</div>';
break;
case 'time_limit':
d.searchOp = '=';
formHtml += '\t<div class="layui-form-item form-item-time-limit layui-inline ' + formSearchHideClass + ' ">\n' +
'<label class="layui-form-label">' + d.title + '</label>\n' +
'<div class="layui-input-inline">\n' +
'<input id="c-' + d.elemIdName + '-min_date" name="[' + d.fieldAlias + ']min_date" data-search-op="min_date" value="' + d.searchValue + '" placeholder="' + d.searchTip + '最小值" class="layui-input">\n' +
'<input id="c-' + d.elemIdName + '-max_date" name="[' + d.fieldAlias + ']max_date" data-search-op="max_date" value="' + d.searchValue + '" placeholder="' + d.searchTip + '最大值" class="layui-input">\n' +
'</div>\n' +
'</div>';
break;
case 'number_limit':
d.searchOp = '=';
formHtml += '\t<div class="layui-form-item form-item-number-limit layui-inline ' + formSearchHideClass + ' ">\n' +
'<label class="layui-form-label">' + d.title + '</label>\n' +
'<div class="layui-input-inline">\n' +
'<input id="c-' + d.elemIdName + '-min" name="[' + d.fieldAlias + ']min" data-search-op="min" type="text" value="' + d.searchValue + '" placeholder="' + d.searchTip + '最小值" class="layui-input">\n' +
'<input id="c-' + d.elemIdName + '-max" name="[' + d.fieldAlias + ']max" data-search-op="max" type="text" value="' + d.searchValue + '" placeholder="' + d.searchTip + '最大值" class="layui-input">\n' +
'</div>\n' + '</div>\n' +
'</div>'; '</div>';
break; break;
@@ -456,6 +493,10 @@ define(["jquery", "tableSelect", "ckeditor"], function ($, tableSelect, undefine
if (ncV.search === 'time') { if (ncV.search === 'time') {
laydate.render({ type: ncV.timeType, elem: '[name="' + ncV.fieldAlias + '"]' }); laydate.render({ type: ncV.timeType, elem: '[name="' + ncV.fieldAlias + '"]' });
} }
if (ncV.search === 'time_limit') {
laydate.render({ type: ncV.timeType, elem: '[name="[' + ncV.fieldAlias + ']min_date"]' });
laydate.render({ type: ncV.timeType, elem: '[name="[' + ncV.fieldAlias + ']max_date"]' });
}
}); });
} }
@@ -509,9 +550,27 @@ define(["jquery", "tableSelect", "ckeditor"], function ($, tableSelect, undefine
data[dk].pop() data[dk].pop()
} }
} }
} }
return data; return data;
}, },
renderTrueHide(data, elem) {
var newData = [];
for (dk in data) {
var newCol = [];
var col = data[dk];
col.forEach(colItem => {
if (!colItem.trueHide) {
newCol.push(colItem)
}
});
newData.push(newCol)
}
return newData;
},
buildToolbarHtml: function (toolbar, tableId) { buildToolbarHtml: function (toolbar, tableId) {
var html = ''; var html = '';
toolbar.class = toolbar.class || ''; toolbar.class = toolbar.class || '';
@@ -864,7 +923,16 @@ define(["jquery", "tableSelect", "ckeditor"], function ($, tableSelect, undefine
$.each(dataField, function (key, val) { $.each(dataField, function (key, val) {
if (val !== '') { if (val !== '') {
formatFilter[key] = val; formatFilter[key] = val;
var op = $('#c-' + key).attr('data-search-op');
var elemId = key;
if (key.indexOf('[') == 0) {
var keyArr = key.replace('[', '').split(']');
elemId = keyArr[0] + '-' + keyArr[1];
}
var op = $('#c-' + elemId).attr('data-search-op');
op = op || '%*%'; op = op || '%*%';
formatOp[key] = op; formatOp[key] = op;
} }