column('id')->sortable(); $grid->column('setting_url', '前端路径')->display(function () { if($this->type == 0 || $this->type == 1){ return '/pagesB/tabs/tabs?id=' . $this->id; }else if($this->type == 2){ return '/pagesB/menus/menus?id=' . $this->id; }else if($this->type == 3){ return '/pagesB/qrcode/qrcode?id=' . $this->id; } return ''; }); $grid->column('title'); $grid->column('right'); $grid->column('type')->using(FieldUtils::getPageTypes()); // $grid->column('config'); $grid->column('status')->using([0=>'正常',1=>'下架'])->label([0 => 'success', 1 => 'red']); // $grid->column('created_at'); // 添加不存在的字段 $grid->column('updated_at')->sortable(); $grid->filter(function (Grid\Filter $filter) { $filter->equal('id'); }); }); } /** * Make a show builder. * * @param mixed $id * * @return Show */ protected function detail($id) { return Show::make($id, new WxPage(), function (Show $show) { $show->field('id'); $show->field('title'); $show->field('right'); $show->field('type'); $show->field('config'); $show->field('status'); $show->field('created_at'); $show->field('updated_at'); }); } /** * Make a form builder. * * @return Form */ protected function form() { return Form::make(new WxPage(), function (Form $form) { $modle = $form->model(); $form->display('id'); $res8 = __system__paycode__tip__(8); Tooltip::make('.mini_global_admin_open_not_support_tip') ->bottom() ->title($res8['tip']); $form->text('title')->help($res8['text'])->required(); $form->multipleSelectTable('right') ->title('图标库') ->max(2) ->from(IconRender::make()) ->model(WxIcon::class, 'id', 'name', 'selectTable:WxPageController:right') ->help('【暂时统一不显示】添加一个右侧,小程序不显示, 管理图标库>>(ps:如何控制顺序?) ') ->saveAsJson(); $form->select('type')->options(FieldUtils::getPageTypes())->required()->when(0, function (Form $form) use ($modle) { $form->html(function () { return '
'; }, ''); if($form->isCreating()){ $form->table('config0', FieldUtils::getPageTypes()[0], function (NestedForm $table) { $table->text('name', 'tab名字'); $table->multipleSelectTable('tab', 'tab内容') ->title('图标库') ->max(100) ->from(IconRender::make()) ->model(WxIcon::class, 'id', 'name', 'selectTable:WxPageController:config0:tab') ->help('一个tab页面, 管理图标库>>(ps:如何控制顺序?) '); })->saveAsJson(); }else{ $config0 = ''; if($modle->type == 0){ $config0 = $modle->config; } $form->table('config0', FieldUtils::getPageTypes()[0], function (NestedForm $table) { $table->text('name', 'tab名字'); $table->multipleSelectTable('tab', 'tab内容') ->title('图标库') ->max(100) ->from(IconRender::make()) ->model(WxIcon::class, 'id', 'name', 'selectTable:WxPageController:config0:tab') ->help('一个tab页面, 管理图标库>>(ps:如何控制顺序?) '); })->saveAsJson()->value($config0); } })->when(1, function (Form $form) use ($modle) { $form->html(function () { return '
'; }, ''); if($form->isCreating()){ $form->table('config1', FieldUtils::getPageTypes()[1], function (NestedForm $table) { $table->text('name', 'tab名字'); $table->multipleSelectTable('tab', 'tab内容') ->title('图标库') ->max(100) ->from(IconRender::make()) ->model(WxIcon::class, 'id', 'name', 'selectTable:WxPageController:config1:tab') ->help('一个tab页面, 管理图标库>>(ps:如何控制顺序?) '); })->saveAsJson(); }else if($form->isEditing()){ $config1 = ''; if($modle->type == 1){ $config1 = $modle->config; } $form->table('config1', FieldUtils::getPageTypes()[1], function (NestedForm $table) { $table->text('name', 'tab名字'); $table->multipleSelectTable('tab', 'tab内容') ->title('图标库') ->max(100) ->from(IconRender::make()) ->model(WxIcon::class, 'id', 'name', 'selectTable:WxPageController:config1:tab') ->help('一个tab页面, 管理图标库>>(ps:如何控制顺序?) '); })->saveAsJson()->value($config1); } })->when(2, function (Form $form) use ($modle) { $form->html(function () { return '
'; }, ''); if($form->isCreating()){ $form->multipleSelectTable('config2', '选择菜单') ->title('图标库') ->max(100) ->from(IconRender::make()) ->model(WxIcon::class, 'id', 'name', 'selectTable:WxPageController:config2') ->help('一个图标即一个菜单,图标仅需配置图片, 管理图标库>>(ps:如何控制顺序?) '); }else if($form->isEditing()){ $config2 = ''; if($modle->type == 2){ $config2 = $modle->config; } $form->multipleSelectTable('config2', '选择菜单') ->title('图标库') ->max(100) ->from(IconRender::make()) ->model(WxIcon::class, 'id', 'name', 'selectTable:WxPageController:config2') ->help('一个图标即一个菜单,图标仅需配置图片, 管理图标库>>(ps:如何控制顺序?) ') ->value($config2); } })->when(3, function (Form $form) use ($modle) { $form->html(function () { return '
'; }, ''); if($form->isCreating()){ $form->image('config3_banner_img', '头部背景图')->help('建议和默认图片大小。 点击下载默认图')->url('files/uploads')->uniqueName()->autoUpload()->default('https://img.mini.minisns.cn/2023/08/10/6ef83dfeade1ef3c30770e0cf0f5e6c1.jpg'); $form->table('config3_tabs', 'tab-二维码', function (NestedForm $table) { $table->text('name', 'tab名字'); $table->image('code', '二维码')->help('建议和默认图片大小。 点击下载默认图')->url('files/uploads')->uniqueName()->autoUpload()->default('https://img.mini.minisns.cn/images/mmqrcode1677495496626%281%29.png'); })->saveAsJson(); }else if($form->isEditing()){ $config3_arr = json_decode($modle->config, true); $form->image('config3_banner_img', '头部背景图')->help('建议和默认图片大小。 点击下载默认图')->url('files/uploads')->uniqueName()->autoUpload()->customFormat(function ($v) use ($config3_arr){ return _array_key($config3_arr, 'banner', ''); }); $form->table('config3_tabs', 'tab-二维码', function (NestedForm $table) { $table->text('name', 'tab名字'); $table->text('desc', '描述'); $table->image('code', '二维码')->help('建议和默认图片大小。 点击下载默认图')->url('files/uploads')->uniqueName()->autoUpload()->default('https://img.mini.minisns.cn/images/mmqrcode1677495496626%281%29.png'); })->saveAsJson()->value(_array_key($config3_arr, 'tabs', '')); } }); $form->radio('status')->options([0=>'正常',1=>'下架'])->default(0); $form->textarea('config')->disable(true)->help('保存后自动生成的,不用管'); // $form->display('created_at'); // $form->display('updated_at'); $form->saving(function (Form $form) { $type = $form->input('type'); if($type == 1 || $type == 0){ $configDate = $form->input('config'.$type); if(is_array($configDate)){ if(_empty_($configDate)){ $form->config = ''; }else{ $v_ = []; foreach ($configDate as $new_){ if(_array_key($new_, '_remove_', null) == 1){ continue; } if(isset($new_['_remove_'])){ unset($new_['_remove_']); } $v_[] = $new_; } if(0){ $form->config = $v_; }else{ $form->config = json_encode($v_); } } } }else if($type == 2){ $configDate = $form->input('config'.$type); $form->config = $configDate; }else if($type == 3){ $config3_data = [ 'banner' => $form->input('config3_banner_img'), 'tabs' => '' ]; $config3_tabs = $form->input('config3_tabs'); if(is_array($config3_tabs)){ if(_empty_($config3_tabs)){ }else{ $v_ = []; foreach ($config3_tabs as $new_){ if(_array_key($new_, '_remove_', null) == 1){ continue; } if(isset($new_['_remove_'])){ unset($new_['_remove_']); } $v_[] = $new_; } $config3_data['tabs'] = json_encode($v_); } } if(_empty_($config3_data['tabs'])){ $config3_data['tabs'] = $config3_data; } $form->config = json_encode($config3_data); } // 删除 $form->deleteInput(['config0', 'config1', 'config2', 'config3_banner_img', 'config3_tabs']); $form->ignore(['config0', 'config1', 'config2', 'config3_banner_img', 'config3_tabs']); }); $form->deleting(function (Form $form){ global $__MINI_GLOBAL_TENANT_ID__; if($__MINI_GLOBAL_TENANT_ID__ > 0){ return $form->response()->error('权限不足,不可以删除其他分站对象'); } }); }); } }