mirror of
https://github.com/kuaifan/dootask.git
synced 2026-03-07 18:07:05 +00:00
perf: 通讯录显示部门负责人
This commit is contained in:
parent
20e236d429
commit
ba3eb7f27c
@ -460,7 +460,13 @@ class UsersController extends AbstractController
|
||||
*/
|
||||
public function search()
|
||||
{
|
||||
$builder = User::select(User::$basicField);
|
||||
$user = User::auth();
|
||||
//
|
||||
$columns = User::$basicField;
|
||||
if ($user->isAdmin()) {
|
||||
$columns[] = 'identity';
|
||||
}
|
||||
$builder = User::select($columns);
|
||||
//
|
||||
$keys = Request::input('keys');
|
||||
$sorts = Request::input('sorts');
|
||||
@ -513,12 +519,25 @@ class UsersController extends AbstractController
|
||||
$list = $builder->orderBy('userid')->take(Base::getPaginate(100, 10, 'take'))->get();
|
||||
}
|
||||
//
|
||||
if ($state === 1) {
|
||||
$list->transform(function (User $userInfo) {
|
||||
$userInfo->online = $userInfo->getOnlineStatus();
|
||||
return $userInfo;
|
||||
$list->transform(function (User $userInfo) use ($state) {
|
||||
$tags = [];
|
||||
$dep = $userInfo->getDepartmentName();
|
||||
$dep = array_filter(explode(",", $dep), function($item) {
|
||||
return preg_match("/\(M\)$/", $item);
|
||||
});
|
||||
}
|
||||
if ($dep) {
|
||||
$tags[] = preg_replace("/\(M\)$/", "", $dep[0]) . " " . Base::Lang("负责人");
|
||||
}
|
||||
if ($userInfo->isTemp()) {
|
||||
$tags[] = Base::Lang("临时");
|
||||
}
|
||||
$userInfo->tags = $tags;
|
||||
//
|
||||
if ($state === 1) {
|
||||
$userInfo->online = $userInfo->getOnlineStatus();
|
||||
}
|
||||
return $userInfo;
|
||||
});
|
||||
return Base::retSuccess('success', $list);
|
||||
}
|
||||
|
||||
@ -1365,6 +1384,12 @@ class UsersController extends AbstractController
|
||||
if (mb_strlen($name) < 2 || mb_strlen($name) > 20) {
|
||||
return Base::retError('部门名称长度限制2-20个字');
|
||||
}
|
||||
if (preg_match('/[\Q~!@#$%^&*()+-_=.:?<>,\E]/', $name)) {
|
||||
return Base::retError('部门名称不能包含特殊符号');
|
||||
}
|
||||
if (str_contains($name, '(M)')) {
|
||||
return Base::retError('部门名称不能包含:(M)');
|
||||
}
|
||||
//
|
||||
if ($id > 0) {
|
||||
$userDepartment = UserDepartment::find($id);
|
||||
|
||||
@ -175,6 +175,15 @@ class User extends AbstractModel
|
||||
return in_array('temp', $this->identity);
|
||||
}
|
||||
|
||||
/**
|
||||
* 返回是否管理员
|
||||
* @return bool
|
||||
*/
|
||||
public function isAdmin()
|
||||
{
|
||||
return in_array('admin', $this->identity);
|
||||
}
|
||||
|
||||
/**
|
||||
* 判断是否管理员
|
||||
*/
|
||||
|
||||
@ -103,7 +103,10 @@
|
||||
<ul>
|
||||
<li v-for="(user, index) in items.list" :key="index" @click="openContacts(user)">
|
||||
<div class="avatar"><UserAvatar :userid="user.userid" :size="30"/></div>
|
||||
<div class="nickname">{{user.nickname}}</div>
|
||||
<div class="nickname">
|
||||
<em>{{user.nickname}}</em>
|
||||
<div v-if="user.tags" class="tags">{{user.tags.join(', ')}}</div>
|
||||
</div>
|
||||
<div v-if="user.loading" class="loading"><Loading/></div>
|
||||
</li>
|
||||
</ul>
|
||||
@ -805,6 +808,18 @@ export default {
|
||||
const {type, group_type} = data
|
||||
return type === 'group' && group_type !== 'user'
|
||||
},
|
||||
|
||||
userTag({identity, department_name}) {
|
||||
const array = []
|
||||
const deps = department_name?.split(",").find(item => /\(M\)$/.test(item))
|
||||
if (deps) {
|
||||
array.push(deps.replace(/\(M\)$/, '') + ' ' + this.$L('负责人'))
|
||||
}
|
||||
if (identity?.includes('temp')) {
|
||||
array.push(this.$L('临时'))
|
||||
}
|
||||
return array.join(', ')
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
26
resources/assets/sass/pages/page-messenger.scss
vendored
26
resources/assets/sass/pages/page-messenger.scss
vendored
@ -408,11 +408,29 @@
|
||||
}
|
||||
.nickname {
|
||||
flex: 1;
|
||||
padding: 0 12px;
|
||||
width: 0;
|
||||
padding-left: 12px;
|
||||
font-size: 14px;
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
flex-flow: row wrap;
|
||||
align-content: flex-start;
|
||||
> em {
|
||||
padding-right: 12px;
|
||||
font-style: normal;
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
}
|
||||
.tags {
|
||||
padding-right: 12px;
|
||||
font-size: 12px;
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
color: $primary-desc-color;
|
||||
}
|
||||
}
|
||||
.loading {
|
||||
margin-right: 12px;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user