* @return Grid */ public function grid(): Grid { $grid = new Grid(new User()); $grid->actions(function (Grid\Displayers\Actions $actions) { $actions->disableEdit(); $actions->disableDelete(); $actions->disableView(); if ($actions->row->status == User::STATUS_INIT) { $actions->add(new UserStatusRefund()); } if ($actions->row->status == User::STATUS_REFUND) { $actions->add(new UserStatusInit()); } $actions->add(new JoinIdentity()); $actions->add(new AddUserRemark()); $actions->add(new LinkCreateAddress()); }); $grid->quickSearch('username')->placeholder('快速搜索用户名'); $grid->filter(function (Grid\Filter $filter) { $filter->column(1 / 3, function (Grid\Filter $filter) { $filter->like('username', '用户名'); $filter->equal('channel_id', '渠道')->select(UserChannel::pluck('name', 'id')); }); $filter->column(1 / 3, function (Grid\Filter $filter) { $filter->like('info.nickname', '用户昵称'); }); $filter->column(1 / 3, function (Grid\Filter $filter) { $filter->equal('identities.id', '身份') ->select(Identity::query()->where('id', '>', 1)->pluck('name', 'id')); }); }); $grid->model() ->whereHas('identities', function ($q) { $q->where('id', '>', 1); }) ->withCount(['addresses', 'logs']) ->with(['info', 'parent', 'identities', 'addresses', 'vipOrders', 'userStock', 'logs']); //序号 姓名 手机号 会员类型 会员编号 缴费金额 加入时间 状态(正常,退费) 用箱数 提货箱数 剩余箱数 $grid->column('id', '序号'); $grid->column('username', '手机号'); $grid->column('identities', '会员类型') ->display(function () { $data = []; foreach ($this->identities as $identity) { $data[] = $identity->name; } return $data; }) ->label(); $grid->column('serial', '会员编号') ->display(function () { $data = []; foreach ($this->identities as $identity) { $data[] = $identity->serial_prefix.$identity->getOriginal('pivot_serial'); } return $data; }) ->label(); $grid->column('price', '缴费金额') ->display(function () { return $this->getOpenVipPrices(); }) ->label(); $grid->column('created_at', '加入时间'); $grid->column('status', '状态') ->using(User::STATUS) ->label(); $grid->column('userStock.stock', '总箱数'); $grid->column('userStock.hold', '提货箱数'); $grid->column('userStock.residue', '剩余箱数'); $grid->column('addresses_count', '收货地址') ->link(function () { return route('admin.mall.addresses.index', ['user_id' => $this->id]); }, '_self'); $grid->column('logs_count', '备注') ->modal('备注信息', UserLog::class); $grid->disableExport(false); $grid->export(function ($export) { $export->column('identities', function ($value, $original) { return strip_tags($value); }); $export->column('serial', function ($value, $original) { return strip_tags($value); }); $export->column('price', function ($value, $original) { return strip_tags($value); }); $export->column('status', function ($value, $original) { return strip_tags($value); }); // $export->column('use_way', function ($value, $original) { // return strip_tags($value); // }); // $export->column('所属用户', function ($value, $original) { // return iconv('gb2312//ignore', 'utf-8', // iconv('utf-8', 'gb2312//ignore', strip_tags(str_replace(" ", " ", $value)))); // }); // // $export->column('couponGrant.code', function ($value, $original) { // return $value."\n"; // }); $export->except(['addresses_count', 'logs_count']); $export->filename($this->title.date("YmdHis")); }); return $grid; } /** * Notes : 编辑表单 * * @Date : 2021/7/15 5:09 下午 * @Author : * @return Form * @throws Exception */ public function form(): Form { // if (! config('user.create_user_by_admin')) { // throw new Exception('不运允许操作用户'); // } Admin::script(" $(document.body).append(`