UserGrid.php 5.3 KB
<?php
/**
+-----------------------------------------------------------------------------------------------------------------------
 * 管理端列表grid trait层:渲染生成 会员 grid 列表
+-----------------------------------------------------------------------------------------------------------------------
 *
 * PHP version 7
 *
 * @category  App\Admin\Grids\User
 * @package   App\Admin\Grids\User
 * @author    Richer <yangzi1028@163.com>
 * @date      2020年12月28日 17:57:14
 * @copyright 2021-2022 Richer (http://www.Richer.com/)
 * @license   http://www.Richer.com/ License
 * @link      http://www.Richer.com/
 */
namespace App\Admin\Grids\User;

use App\Admin\Extensions\CustomActions;
use App\Admin\Grids\Modal\User\IncomeRecordModal;
use App\Admin\Grids\Modal\User\TeamModal;
use App\Admin\Grids\Modal\User\TimesRecordModal;
use App\Admin\Grids\Modal\User\WithdrawnRecordModal;
use App\Models\User\User;

/**
 * Class UserGrid.
 *
 * @category  App\Admin\Grids\User
 * @package   App\Admin\Grids\User
 * @author    Richer <yangzi1028@163.com>
 * @date      2020年12月28日 17:57:14
 * @copyright 2021-2022 Richer (http://www.Richer.com/)
 * @license   http://www.Richer.com/ License
 * @link      http://www.Richer.com/
 */
trait UserGrid
{
    /**
     * 设置默认排序规则
     *
     * @return void
     */
    public function setGridTitle()
    {
        $this->grid->setTitle($this->title.'列表');
    }

//    /**
//     * 为grid增加导出的配置
//     *
//     * @return \Encore\Admin\Grid
//     */
//    public function renderGridExporter()
//    {
//        $fileName = '用户列表_'.date('YmdHis');
//        $this->grid->exporter(new FarmerExporter($fileName));
//        return $this->grid;
//    }

    /**
     * 为grid增加筛选条件
     *
     * @return \App\Admin\Rewrite\Grid
     */
    public function renderGridFilter()
    {
        $this->grid->filter(
            function ($filter) {
                // 筛选条件默认展开
                $filter->expand();
                $this->filterText($filter, 'nickname');
                $this->filterText($filter, 'mobile');

                //4.去掉默认的搜索
                $filter->disableIdFilter();
            }
        );

        return $this->grid;
    }

    /**
     * 设置默认查询条件
     * 增加数据权限的判断。步骤:
     * 1、判断用户是否是超级管理员,并判断用户的pid,如果pid为0 则为平台总用户,不进行数据权限的判断
     * 2、如果pid大于0 则为 平台子管理员,则需要进行数据权限的判断
     *
     * @return void
     */
    public function setGridQuery()
    {
        parent::setGridQuery();

        $this->grid->model()->with(['wallet']);//->withCount(['allChildren']);
    }

    /**
     * 设置默认排序规则
     *
     */
    public function setGridOrder()
    {
        if (!request('_sort')) {
            $this->grid->model()->latest();
        } else {
            $this->setGridOrderSpecial();
        }
    }

    /**
     * 设置行操作的样式
     *
     * @return void
     */
    public function setActionClass()
    {
        $this->grid->disableRowSelector();
    }

    /**
     * 自定义每行的操作
     * 根据每个模块设置的权限来判断当前的操作
     *
     * @param $actions
     * @return void $grid grid
     */
    public function setRowCustomActions($actions)
    {
        // 当前数据的主键
        $id = $actions->getKey();
        // 当前的url
        $url = $actions->getResource();

        $actions->append(CustomActions::renderAddUserTimes($id, $url));
    }

    /**
     * 渲染grid字段
     *
     * @return void
     */
    public function renderGridFields()
    {
        $this->grid->fixColumns(1, -1);
        $this->gridRowNo();
        $this->gridUser();

//        $this->gridBoolField('partner');
        $this->gridSwitchField('partner', '', config('constants.STATUS1_STATE_OPTIONS'));
        $this->gridNumberField('children_count', '团队')->display(function () {
            if ($this->partner == 1) {
                return $this->children()->count() + $this->children1()->count();
            }
            return $this->children()->count();

        })->modal('团队明细记录', TeamModal::class);//->sortable();


        $this->gridTextField('wallet.income', '总收入')->modal('收入明细记录', IncomeRecordModal::class);
        $this->gridTextField('wallet.balance', '余额');
//        $this->gridTextField('wallet.withdrawn', '提现')->modal('提现明细记录', WithdrawnRecordModal::class);
//        $this->gridTextField('wallet.frozen', '冻结');
//        $this->gridSingleImageField('avatar', __('wx_avatar'));
////        $this->gridTextField('username');
////        $this->gridTextField('name', __('truename'));
//        $this->gridTextField('mobile');
//        $this->gridSingleSelectField('gender', __('gender'), User::GENDER_OPTIONS, User::GENDER_COLOR_OPTIONS);
        $this->gridNumberField('times')->modal('次数明细记录', TimesRecordModal::class)->sortable();
        $this->gridTextField('login_times')->sortable();
//        $this->gridDateField('last_login_time');
        $this->gridDateField('created_at', __('registered_at'));
        $this->gridSingleImageField('invite_qr_code', '推广二维码');
    }
}