优化会员列表

移除User模型的group方法避免和基类group方法冲突
pull/515/head
Karson 2025-06-18 17:01:54 +08:00
parent a165258ffa
commit fdb912e3e2
4 changed files with 15 additions and 9 deletions

View File

@ -41,7 +41,6 @@ class User extends Backend
} }
list($where, $sort, $order, $offset, $limit) = $this->buildparams(); list($where, $sort, $order, $offset, $limit) = $this->buildparams();
$list = $this->model $list = $this->model
->with('group')
->where($where) ->where($where)
->order($sort, $order) ->order($sort, $order)
->paginate($limit); ->paginate($limit);
@ -49,7 +48,9 @@ class User extends Backend
$v->avatar = $v->avatar ? cdnurl($v->avatar, true) : letter_avatar($v->nickname); $v->avatar = $v->avatar ? cdnurl($v->avatar, true) : letter_avatar($v->nickname);
$v->hidden(['password', 'salt']); $v->hidden(['password', 'salt']);
} }
$result = array("total" => $list->total(), "rows" => $list->items()); $rows = $list->items();
addtion($rows, [['field' => 'group_id', 'display' => 'group_name', 'model' => \app\admin\model\UserGroup::class]]);
$result = array("total" => $list->total(), "rows" => $rows);
return json($result); return json($result);
} }

View File

@ -106,9 +106,9 @@ class User extends Model
return $value ? $value : null; return $value ? $value : null;
} }
public function group() public function getGroupAttr($value, $data)
{ {
return $this->belongsTo('UserGroup', 'group_id', 'id', [], 'LEFT')->setEagerlyType(0); return UserGroup::get($data['group_id']);
} }
} }

View File

@ -54,10 +54,10 @@ class UserRule extends Model
Tree::instance()->init($ruleList); Tree::instance()->init($ruleList);
$ruleList = Tree::instance()->getTreeList(Tree::instance()->getTreeArray(0), 'name'); $ruleList = Tree::instance()->getTreeList(Tree::instance()->getTreeArray(0), 'name');
$hasChildrens = []; $hasChildrens = [];
foreach ($ruleList as $k => $v) foreach ($ruleList as $k => $v) {
{ if ($v['haschild']) {
if ($v['haschild'])
$hasChildrens[] = $v['id']; $hasChildrens[] = $v['id'];
}
} }
foreach ($ruleList as $k => $v) { foreach ($ruleList as $k => $v) {
$state = array('selected' => in_array($v['id'], $selected) && !in_array($v['id'], $hasChildrens)); $state = array('selected' => in_array($v['id'], $selected) && !in_array($v['id'], $hasChildrens));

View File

@ -20,14 +20,19 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefin
table.bootstrapTable({ table.bootstrapTable({
url: $.fn.bootstrapTable.defaults.extend.index_url, url: $.fn.bootstrapTable.defaults.extend.index_url,
pk: 'id', pk: 'id',
sortName: 'user.id', sortName: 'id',
fixedColumns: true, fixedColumns: true,
fixedRightNumber: 1, fixedRightNumber: 1,
columns: [ columns: [
[ [
{checkbox: true}, {checkbox: true},
{field: 'id', title: __('Id'), sortable: true}, {field: 'id', title: __('Id'), sortable: true},
{field: 'group.name', title: __('Group')}, {
field: 'group_id', title: __('Group'), formatter: function (value, row, index) {
value = Fast.api.escape(row.group_name || '');
return '<a href="javascript:;" class="searchit" data-toggle="tooltip" title="' + __('Click to search %s', value) + '" data-field="group_id" data-value="' + parseInt(row.group_id) + '">' + value + '</a>';
}
},
{field: 'username', title: __('Username'), operate: 'LIKE'}, {field: 'username', title: __('Username'), operate: 'LIKE'},
{field: 'nickname', title: __('Nickname'), operate: 'LIKE'}, {field: 'nickname', title: __('Nickname'), operate: 'LIKE'},
{field: 'email', title: __('Email'), operate: 'LIKE'}, {field: 'email', title: __('Email'), operate: 'LIKE'},