FundConfigController.php 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159
  1. <?php
  2. namespace App\Module\Fund\AdminControllers;
  3. use App\Module\Fund\AdminControllers\Helper\FormHelper;
  4. use App\Module\Fund\AdminControllers\Helper\GridHelper;
  5. use App\Module\Fund\AdminControllers\Helper\ShowHelper;
  6. use App\Module\Fund\AdminControllers\Tools\SyncFundCurrencyJsonTool;
  7. use App\Module\Fund\Models\FundCurrencyModel;
  8. use App\Module\Fund\Repositorys\FundConfigRepository;
  9. use App\Module\Fund\Repositorys\FundCurrencyRepository;
  10. use Dcat\Admin\Form;
  11. use Dcat\Admin\Grid;
  12. use Dcat\Admin\Show;
  13. use UCore\DcatAdmin\AdminController;
  14. use Spatie\RouteAttributes\Attributes\Resource;
  15. /**
  16. * 账户种类配置控制器
  17. */
  18. #[Resource('fund-configs', names: 'dcat.admin.fund-configs')]
  19. class FundConfigController extends AdminController
  20. {
  21. /**
  22. * 页面标题
  23. *
  24. * @var string
  25. */
  26. protected $title = '账户种类配置';
  27. /**
  28. * 列表页
  29. *
  30. * @return Grid
  31. */
  32. protected function grid()
  33. {
  34. return Grid::make(new FundConfigRepository(), function (Grid $grid) {
  35. $helper = new GridHelper($grid, $this);
  36. // 添加工具按钮
  37. $grid->tools([
  38. new SyncFundCurrencyJsonTool()
  39. ]);
  40. $helper->columnId();
  41. $grid->column('name', '账户种类名称')->sortable();
  42. // 显示图标
  43. $grid->column('display_attributes.icon', '图标')->display(function ($icon) {
  44. if (empty($icon)) {
  45. return '-';
  46. }
  47. return "<img src='{$icon}' style='max-height:30px;max-width:30px;' />";
  48. })->sortable();
  49. $grid->column('currency.name', '关联币种')->sortable();
  50. $grid->column('create_time', '创建时间')->display(function ($value) {
  51. return date('Y-m-d H:i:s', $value);
  52. })->sortable();
  53. $grid->column('update_time', '更新时间')->display(function ($value) {
  54. return date('Y-m-d H:i:s', $value);
  55. })->sortable();
  56. $grid->disableDeleteButton();
  57. $grid->disableCreateButton();
  58. // 筛选器
  59. $grid->filter(function (Grid\Filter $filter) {
  60. $filter->equal('id', 'ID');
  61. $filter->like('name', '账户种类名称');
  62. });
  63. });
  64. }
  65. /**
  66. * 详情页
  67. *
  68. * @param mixed $id
  69. * @return Show
  70. */
  71. protected function detail($id)
  72. {
  73. return Show::make($id, new FundConfigRepository(), function (Show $show) {
  74. $helper = new ShowHelper($show, $this);
  75. $show->field('id', 'ID');
  76. $show->field('name', '账户种类名称');
  77. // 显示图标
  78. $show->field('display_attributes.icon', '图标')->image();
  79. // 显示颜色
  80. $show->field('display_attributes.color', '颜色')->as(function ($color) {
  81. if (empty($color)) {
  82. return '-';
  83. }
  84. return "<span style='display:inline-block;width:30px;height:20px;background:{$color};'></span> {$color}";
  85. });
  86. // 显示描述
  87. $show->field('display_attributes.description', '描述');
  88. $show->field('currency.name', '关联币种');
  89. $show->field('create_time', '创建时间')->as(function ($time) {
  90. return date('Y-m-d H:i:s', $time);
  91. });
  92. $show->field('update_time', '更新时间')->as(function ($time) {
  93. return date('Y-m-d H:i:s', $time);
  94. });
  95. });
  96. }
  97. /**
  98. * 表单
  99. *
  100. * @return Form
  101. */
  102. protected function form()
  103. {
  104. return Form::make(new FundConfigRepository(), function (Form $form) {
  105. $helper = new FormHelper($form, $this);
  106. $form->display('id', 'ID');
  107. $form->text('name', '账户种类名称')
  108. ->required()
  109. ->maxLength(30)
  110. ->help('账户种类的名称,如"可用美元账户"、"冻结美元账户"等');
  111. // 显示属性
  112. $form->divider('显示属性');
  113. // 图标
  114. $helper->embedsCats('display_attributes','显示属性' );
  115. // 关联币种
  116. $helper->selectModelOption('currency_id', '关联币种',FundCurrencyModel::class, 'name');
  117. // 保存前处理
  118. $form->saving(function (Form $form) {
  119. // 设置时间戳
  120. if ($form->isCreating()) {
  121. $form->create_time = time();
  122. }
  123. $form->update_time = time();
  124. });
  125. // 保存后处理
  126. $form->saved(function (Form $form) {
  127. // 提示用户更新JSON配置
  128. admin_toastr('账户种类配置已保存,请点击"生成JSON"按钮更新配置文件', 'info');
  129. });
  130. });
  131. }
  132. }