formPageFindTrait.php 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189
  1. <?php
  2. namespace App\Admin\Controllers\Traits\WxSettingTraits;
  3. use App\Admin\Renderable\BannerRender;
  4. use App\Admin\Renderable\IconRender;
  5. use App\Admin\Renderable\ShopGoodsRender;
  6. use App\Admin\Renderable\TagRender;
  7. use App\Models\Posts\WxTag;
  8. use App\Models\Shop\WxShopGoods;
  9. use App\Models\WxIcon;
  10. use App\Models\WxSlideshow;
  11. use App\Wen\Utils\AdminUtils;
  12. use App\Wen\Utils\FieldUtils;
  13. use App\Wen\Utils\GatewayUtils;
  14. use App\Wen\Utils\Settings;
  15. use App\Wen\Utils\SiteUtils;
  16. use Dcat\Admin\Form\NestedForm;
  17. use Dcat\Admin\Widgets\Form;
  18. use Illuminate\Http\Request;
  19. use Dcat\Admin\Layout\Content;
  20. use function PHPUnit\Framework\isNull;
  21. trait formPageFindTrait{
  22. public function index_pagefind(Content $content)
  23. {
  24. return $content->title('发现页')
  25. // ->body($this->buildPreviewButton())
  26. // ->body($this->newline())
  27. ->body(
  28. <<<HTML
  29. <div class="card">{$this->form_pagefind()->render()}</div>
  30. HTML
  31. );
  32. }
  33. protected function form_pagefind(){
  34. $form = new Form();
  35. $form->confirm('您确定要提交表单吗?', 'content');
  36. $form->disableResetButton();
  37. $form->tab('圈子发现页', function (Form $form){
  38. $form->multipleSelectTable('app_find_header_icon', '头部左右侧')
  39. ->title('图标库')
  40. ->max(2)
  41. ->from(IconRender::make())
  42. ->model(WxIcon::class, 'id', 'name', 'selectTable:formPageFindTrait:app_find_header_icon')
  43. ->help('添加两个,分别是左右侧,小程序不显示右侧, <a href="'.admin_url('settings/icons').'" target="_blank">管理图标库>></a><a href="https://doc.minisns.cn/doc/70/" target="_blank" style="color: red;">(ps:如何控制顺序?)&nbsp;</a>')
  44. ->default(Settings::get('app_find_header_icon', '', true));
  45. $form->multipleSelectTable('app_find_banner', '轮播图')
  46. ->title('轮播图库')
  47. ->max(10)
  48. ->from(BannerRender::make())
  49. ->model(WxSlideshow::class, 'id', 'id', 'selectTable:formPageFindTrait:app_find_banner')
  50. ->help('<a href="'.admin_url('slideshow').'" target="_blank">运营管理-轮播图中心</a><a href="https://doc.minisns.cn/doc/70/" target="_blank" style="color: red;">(ps:如何控制顺序?)&nbsp;</a>')
  51. ->default(Settings::get('app_find_banner', '',true));
  52. $form->divider();
  53. $form->html(function () {
  54. return '<div style="background-color: powderblue;color: #414750;padding: 10px;border-radius: 5px;display: inline-block"><img src="https://img.mini.minisns.cn/images/page/circle_tip.png" style="width: 250px;"></div>';
  55. }, '');
  56. $form->table('app_find_tab','tab自定义', function (NestedForm $table) {
  57. $table->text('name', '名字')->required();
  58. $table->radio('follow_status', '关注状态')->options([0=>'全部', 1 => '已关注', 2 => '未关注'])->default(0);
  59. // $table->multipleSelect('tags', '话题')->options(function ($id) {
  60. // if(!is_array($id) && $id) {
  61. // $tag = WxTag::find($id);
  62. // if (!_empty_($tag)) {
  63. // return [$tag->id => $tag->tags_name];
  64. // }
  65. // }else{
  66. // return null;
  67. // }
  68. // })->ajax('select/tags');
  69. $table->multipleSelectTable('tags', '话题')
  70. ->title('话题库')
  71. ->max(10)
  72. ->from(TagRender::make())
  73. ->model(WxTag::class, 'id', 'tags_name', 'app_find_tab:selectTable:formPageFindTrait:tags');
  74. $table->select('orderBy', '排序依据')->options(['created_at'=>'建圈时间', 'last_publish_at'=> '最后发表时间', 'last_enter_at'=>'最后访问时间', 'follow_at'=>'关注时间', 'total_post_count' =>'笔记总数量', 'total_comment_count'=>'圈子笔记的评论总数量', 'count_circle_follow'=>'圈子关注总数', 'count_pay_content'=>'圈子付费笔记总数'])->default('created_at');
  75. $table->radio('order', '排序方向')->options(['desc'=>'倒排', 'asc'=>'正排'])->default('desc');
  76. $table->switch('master', '当前用户创建')->default(0);
  77. })->default(Settings::get('app_find_tab', '', true));
  78. });
  79. $form->tab('商品发现页', function (Form $form){
  80. $form->multipleSelectTable('app_find2_header_icon', '头部左右侧')
  81. ->title('图标库')
  82. ->max(2)
  83. ->from(IconRender::make())
  84. ->model(WxIcon::class, 'id', 'name', 'selectTable:formPageFindTrait:app_find2_header_icon')
  85. ->help('添加两个,分别是左右侧,小程序不显示右侧, <a href="'.admin_url('settings/icons').'" target="_blank">管理图标库>></a><a href="https://doc.minisns.cn/doc/70/" target="_blank" style="color: red;">(ps:如何控制顺序?)&nbsp;</a>')
  86. ->default(Settings::get('app_find2_header_icon', '', true));
  87. $form->multipleSelectTable('app_find2_banner', '轮播图')
  88. ->title('轮播图库')
  89. ->max(10)
  90. ->from(BannerRender::make())
  91. ->model(WxSlideshow::class, 'id', 'id', 'selectTable:formPageFindTrait:app_find2_banner')
  92. ->help('<a href="'.admin_url('slideshow').'" target="_blank">运营管理-轮播图中心</a><a href="https://doc.minisns.cn/doc/70/" target="_blank" style="color: red;">(ps:如何控制顺序?)&nbsp;</a>')
  93. ->default(Settings::get('app_find2_banner', '',true));
  94. $form->divider();
  95. $form->html(function () {
  96. return '<div style="background-color: powderblue;color: #414750;padding: 10px;border-radius: 5px;display: inline-block"><img src="https://img.mini.minisns.cn/images/video/goodsfind.jpg" style="width: 250px;"></div>';
  97. }, '');
  98. $form->table('app_find2_tab','tab自定义', function (NestedForm $table) {
  99. $table->text('name', '名字')->required();
  100. $table->multipleSelectTable('ids', '商品范围')
  101. ->title('商品库')
  102. ->max(1000)
  103. ->from(ShopGoodsRender::make())
  104. ->model(WxShopGoods::class, 'id', 'name', 'app_find2_tab:selectTable:formPageFindTrait:ids')->help('留空代表所有商品');
  105. $table->multipleSelect('types', '商品类型')->saveAsString()->options(FieldUtils::getShopGoodTypes());
  106. $table->radio('follow_status', '关注店铺')->options([0=>'全部', 1 => '已关注', 2 => '未关注'])->default(0);
  107. $table->select('orderBy', '排序依据')->options(['created_at'=>'商品发布时间', 'order'=>'商品的自定义排序', 'last_enter_at'=>'最后访问时间', 'follow_shop_at'=>'关注店铺时间', 'buys' =>'商品购买人数'])->default('created_at');
  108. $table->radio('order', '排序方向')->options(['desc'=>'倒排', 'asc'=>'正排'])->default('desc');
  109. $table->switch('master', '商户为自己')->default(0);
  110. })->default(Settings::get('app_find2_tab', '', true));
  111. });
  112. $form->tab('图标发现页', function (Form $form){
  113. $form->multipleSelectTable('app_find9_header_icon', '头部左右侧')
  114. ->title('图标库')
  115. ->max(2)
  116. ->from(IconRender::make())
  117. ->model(WxIcon::class, 'id', 'name', 'selectTable:formPageFindTrait:app_find9_header_icon')
  118. ->help('添加两个,分别是左右侧,小程序不显示右侧, <a href="'.admin_url('settings/icons').'" target="_blank">管理图标库>></a><a href="https://doc.minisns.cn/doc/70/" target="_blank" style="color: red;">(ps:如何控制顺序?)&nbsp;</a>')
  119. ->default(Settings::get('app_find9_header_icon', '', true));
  120. $form->divider();
  121. $form->html(function () {
  122. return '<div style="background-color: powderblue;color: #414750;padding: 10px;border-radius: 5px;display: inline-block"><a href="https://img.mini.minisns.cn/images/video/miaobian.png" target="_blank"><img src="https://img.mini.minisns.cn/images/video/miaobian.png" style="width: 250px;"></a></div>';
  123. }, '');
  124. $form->table('app_find9_icons','格子菜单', function (NestedForm $table) {
  125. $table->radio('type')->options([1=>'图标', 2=>'分割线'])->default(1);
  126. $table->text('name', '文本')->default('文字');
  127. $table->image('img', '图片')->help('<a href="https://img.mini.minisns.cn/images/nav/nav.png" download="app_share_vip_img.jpg" target="_blank" style="color: steelblue">点击下载默认图</a>')->default('https://img.mini.minisns.cn/images/nav/nav.png')->uniqueName()->url('files/uploads')->autoUpload();
  128. $table->radio('target_type', '类型')->options(FieldUtils::getUrlTypes())->default(0);
  129. $table->text('target_id', '跳转id')->help('怎么填请看<a href="https://doc.minisns.cn/doc/44/" target="_blank">路径大全</a>');
  130. $table->radio('border_type', '描边')->options([1=>'上中描边', 4=>'中描边', 2=>'上下描边', 3=>'下描边'])->default(2);
  131. $table->number('height', '分割线高度')->help('单位rpx')->default(20);
  132. })->default(Settings::get('app_find9_icons', '',true));
  133. });
  134. $form->action('settings/action/pagefind');
  135. return $form;
  136. }
  137. public function pagefind(Request $request)
  138. {
  139. SiteUtils::forget_config_data();
  140. $app_find_tab = AdminUtils::_table_data($request->input('app_find_tab'));
  141. Settings::set('app_find_header_icon', AdminUtils::_multipleSelectTable_order_process( 'selectTable:formPageFindTrait:app_find_header_icon', $request->input('app_find_header_icon') ), true, true);
  142. Settings::set('app_find_banner', AdminUtils::_multipleSelectTable_order_process('selectTable:formPageFindTrait:app_find_banner', $request->input('app_find_banner')), true, true);
  143. Settings::set('app_find_tab', $app_find_tab, true, true);
  144. $app_find2_tab = AdminUtils::_table_data($request->input('app_find2_tab'));
  145. Settings::set('app_find9_icons', AdminUtils::_table_data($request->input('app_find9_icons')), true, true);
  146. Settings::set('app_find9_header_icon', AdminUtils::_multipleSelectTable_order_process( 'selectTable:formPageFindTrait:app_find9_header_icon', $request->input('app_find9_header_icon') ), true, true);
  147. Settings::set('app_find2_header_icon', AdminUtils::_multipleSelectTable_order_process( 'selectTable:formPageFindTrait:app_find2_header_icon', $request->input('app_find2_header_icon') ), true, true);
  148. Settings::set('app_find2_banner', AdminUtils::_multipleSelectTable_order_process('selectTable:formPageFindTrait:app_find2_banner', $request->input('app_find2_banner')), true, true);
  149. Settings::set('app_find2_tab', $app_find2_tab, true, true);
  150. $__global_config_version__ = Settings::get('__global_config_version__', 1) + 1;
  151. Settings::set('__global_config_version__', $__global_config_version__);
  152. GatewayUtils::success('all', 13, [ 'version' => $__global_config_version__, 'file' => basename(__FILE__) ]);
  153. return $this->response()->success('成功!');
  154. }
  155. }