column('id')->sortable(); $grid->column('name', '名称'); $grid->column('resource_type')->map(function ($val) { return \App\Models\LibraryCategory::resourceTypeMaps[$val]; })->label(); $grid->column('cover_path', '封面图')->image('', 200, 100); $grid->column('sort', '排序')->sortable(); $grid->column('status', '状态')->using(\App\Models\LibraryCategory::statusMaps); $grid->column('updated_at')->sortable(); $grid->website('二维码')->qrcode(function () { return config('app.code_url') . '?cid=' . $this->id; }, 200, 200); $grid->filter(function (Grid\Filter $filter) { $filter->equal('id'); $filter->like('name', '名称'); $filter->equal('status', '状态')->select(\App\Models\LibraryCategory::statusMaps); }); $grid->tools('下载分类二维码'); }); } /** * Make a show builder. * * @param mixed $id * * @return Show */ protected function detail($id) { return Show::make($id, new LibraryCategory(), function (Show $show) { $show->field('id'); $show->field('name'); $show->field('cover_path'); $show->field('resource_type'); $show->field('sort'); $show->field('status'); $show->field('created_at'); $show->field('updated_at'); }); } /** * Make a form builder. * * @return Form */ protected function form() { return Form::make(new LibraryCategory(), function (Form $form) { $form->disableCreatingCheck(); $form->disableDeleteButton(); $form->disableEditingCheck(); $form->defaultViewChecked(); $form->display('id'); $form->text('name', '名称')->required(); $form->checkbox('resource_type', '资源类型')->options(\App\Models\LibraryCategory::resourceTypeMaps)->required(); $form->image('cover_path', '封面图')->uniqueName()->autoUpload()->required(); $form->number('sort', '排序')->default(0)->help('越大越靠前'); $form->select('status', '状态')->options(\App\Models\LibraryCategory::statusMaps)->default(1); $form->hidden('admin_id')->value(Admin::user()->id); $form->saved(function (Form $form) { dispatch(new MakeCodeJob($form->getKey())); return $form->response()->success('保存成功')->redirect('/library/category'); }); }); } /** * 下载分类二维码 * @return \Symfony\Component\HttpFoundation\BinaryFileResponse */ public function downCodes() { $zip_file = time() . '.zip'; $zip = new \ZipArchive(); $zip->open($zip_file, \ZipArchive::CREATE | \ZipArchive::OVERWRITE); $files = \App\Models\LibraryCategory::query()->where('status', 1)->get(); // 这里边全是真实全绝对路径 不需要跳过目录 foreach ($files as $file) { // 我们要跳过所有子目录 $zip->addFile(Storage::disk(config('admin.upload.disk'))->path($file->code_path), $file->name . '.png'); } $zip->close(); return response()->download($zip_file)->deleteFileAfterSend(); } }