优化团队管理搜索功能

This commit is contained in:
kuaifan 2022-03-17 22:00:36 +08:00
parent 7491a6faac
commit 8dd4cfa6b2
3 changed files with 56 additions and 28 deletions

View File

@ -427,9 +427,12 @@ class UsersController extends AbstractController
* @apiName lists * @apiName lists
* *
* @apiParam {Object} [keys] 搜索条件 * @apiParam {Object} [keys] 搜索条件
* - keys.key 邮箱/昵称/职位赋值后keys.email、keys.nickname、keys.profession失效
* - keys.email 邮箱 * - keys.email 邮箱
* - keys.nickname 昵称 * - keys.nickname 昵称
* - keys.profession 职位 * - keys.profession 职位
* - keys.identity 身份admin、noadmin
* - keys.email_verity 邮箱是否认证yes、no
* @apiParam {Number} [page] 当前页,默认:1 * @apiParam {Number} [page] 当前页,默认:1
* @apiParam {Number} [pagesize] 每页显示数量,默认:20,最大:50 * @apiParam {Number} [pagesize] 每页显示数量,默认:20,最大:50
* *
@ -445,14 +448,26 @@ class UsersController extends AbstractController
// //
$keys = Request::input('keys'); $keys = Request::input('keys');
if (is_array($keys)) { if (is_array($keys)) {
if ($keys['email']) { if ($keys['key']) {
$builder->where("email", "like", "%{$keys['email']}%"); if (str_contains($keys['key'], "@")) {
} $builder->where("email", "like", "%{$keys['key']}%");
if ($keys['nickname']) { } else {
$builder->where("nickname", "like", "%{$keys['nickname']}%"); $builder->where(function($query) use ($keys) {
} $query->where("email", "like", "%{$keys['key']}%")
if ($keys['profession']) { ->orWhere("nickname", "like", "%{$keys['key']}%")
$builder->where("profession", "like", "%{$keys['profession']}%"); ->orWhere("profession", "like", "%{$keys['key']}%");
});
}
} else {
if ($keys['email']) {
$builder->where("email", "like", "%{$keys['email']}%");
}
if ($keys['nickname']) {
$builder->where("nickname", "like", "%{$keys['nickname']}%");
}
if ($keys['profession']) {
$builder->where("profession", "like", "%{$keys['profession']}%");
}
} }
if ($keys['identity']) { if ($keys['identity']) {
if (Base::leftExists($keys['identity'], "no")) { if (Base::leftExists($keys['identity'], "no")) {
@ -461,6 +476,11 @@ class UsersController extends AbstractController
$builder->where("identity", "like", "%,{$keys['identity']},%"); $builder->where("identity", "like", "%,{$keys['identity']},%");
} }
} }
if ($keys['email_verity'] === 'yes') {
$builder->whereEmailVerity(1);
} elseif ($keys['email_verity'] === 'no') {
$builder->whereEmailVerity(0);
}
} }
$list = $builder->orderByDesc('userid')->paginate(Base::getPaginate(50, 20)); $list = $builder->orderByDesc('userid')->paginate(Base::getPaginate(50, 20));
// //

View File

@ -10,26 +10,10 @@
<ul> <ul>
<li> <li>
<div class="search-label"> <div class="search-label">
{{$L("邮箱")}} {{$L("关键词")}}
</div> </div>
<div class="search-content"> <div class="search-content">
<Input v-model="keys.email" clearable/> <Input v-model="keys.key" :placeholder="$L('邮箱、昵称、职位')" clearable/>
</div>
</li>
<li>
<div class="search-label">
{{$L("昵称")}}
</div>
<div class="search-content">
<Input v-model="keys.nickname" clearable/>
</div>
</li>
<li>
<div class="search-label">
{{$L("职位/职称")}}
</div>
<div class="search-content">
<Input v-model="keys.position" clearable/>
</div> </div>
</li> </li>
<li> <li>
@ -37,7 +21,7 @@
{{$L("身份")}} {{$L("身份")}}
</div> </div>
<div class="search-content"> <div class="search-content">
<Select v-model="keys.identity"> <Select v-model="keys.identity" :placeholder="$L('请选择')">
<Option value="">{{$L('全部')}}</Option> <Option value="">{{$L('全部')}}</Option>
<Option value="admin">{{$L('管理员')}}</Option> <Option value="admin">{{$L('管理员')}}</Option>
<Option value="disable">{{$L('禁用')}}</Option> <Option value="disable">{{$L('禁用')}}</Option>
@ -46,6 +30,18 @@
</Select> </Select>
</div> </div>
</li> </li>
<li>
<div class="search-label">
{{$L("邮箱认证")}}
</div>
<div class="search-content">
<Select v-model="keys.email_verity" :placeholder="$L('请选择')">
<Option value="">{{$L('全部')}}</Option>
<Option value="yes">{{$L('已邮箱认证')}}</Option>
<Option value="no">{{$L('未邮箱认证')}}</Option>
</Select>
</div>
</li>
<li class="search-button"> <li class="search-button">
<Tooltip <Tooltip
theme="light" theme="light"
@ -133,7 +129,14 @@ export default {
minWidth: 100, minWidth: 100,
render: (h, {row}) => { render: (h, {row}) => {
const arr = [h('AutoTip', row.email)]; const arr = [h('AutoTip', row.email)];
const identity = row.identity; const {email_verity, identity} = row;
if (email_verity) {
arr.push(h('Icon', {
props: {
type: 'md-checkmark'
}
}))
}
if (identity.includes("admin")) { if (identity.includes("admin")) {
arr.push(h('Tag', { arr.push(h('Tag', {
props: { props: {

View File

@ -35,6 +35,11 @@
display: flex; display: flex;
align-items: center; align-items: center;
.ivu-icon {
color: $primary-color;
margin-left: 4px;
}
.ivu-tag { .ivu-tag {
height: 18px; height: 18px;
line-height: 18px; line-height: 18px;