步骤文件示例

    1. <?php
    2. namespace app\steps;
    3. use think\db\Query;
    4. use tpScriptVueCurd\base\model\BaseModel;
    5. use tpScriptVueCurd\base\model\VueCurlModel;
    6. use tpScriptVueCurd\field\RadioField;
    7. use tpScriptVueCurd\field\TextField;
    8. use tpScriptVueCurd\FieldCollection;
    9. use tpScriptVueCurd\ModelField;
    10. use tpScriptVueCurd\option\FieldStep;
    11. use tpScriptVueCurd\option\FieldStepBase;
    12. use tpScriptVueCurd\option\FieldStepBaseConfig;
    13. use tpScriptVueCurd\option\FieldStepTag;
    14. use tpScriptVueCurd\option\FieldStepBeforeCheck;
    15. /**
    16. * 项目审核步骤
    17. */
    18. class Check extends FieldStepBase
    19. {
    20. public static function name(): string
    21. {
    22. return 'check';
    23. }
    24. public static function make(): FieldStepBase
    25. {
    26. return new self([
    27. RadioField::init('check_status','审核结果')->required(true)->listShow(false)->items([
    28. ['value'=>0,'title'=>'未核实','hide'=>true,'color'=>'#bfbfbf'],
    29. ['value'=>1,'title'=>'通过','color'=>'#1890ff'],
    30. ['value'=>2,'title'=>'不通过','color'=>'#d48806'],
    31. ]),
    32. TextField::init('check_remarks','备注')->required(true)->setDefaultHideFilter(),
    33. ]);
    34. }
    35. public function config(FieldStepBaseConfig $config): void
    36. {
    37. $config->title='项目审核';
    38. $config->listBtnText='审核';
    39. $config->listBtnOpenHeight='350px';
    40. $config->listBtnOpenWidth='700px';
    41. $config->listBtnClass='yellow';
    42. $config->listBtnUrl=url('project/check')->build();
    43. }
    44. /**
    45. * 当数据步骤为当前步骤时,对列表中的数据进行处理
    46. * @param VueCurlModel $info
    47. * @param BaseModel|null $baseInfo
    48. * @param FieldCollection $fields
    49. * @param FieldStep $step
    50. */
    51. public function listRowDo(VueCurlModel $info, ?BaseModel $baseInfo, FieldCollection $fields, FieldStep $step): void
    52. {
    53. parent::listRowDo($info, $baseInfo, $fields, $step);
    54. //当前列表中步骤时执行
    55. switch ((int)$info->check_status){
    56. case 1:
    57. $color='success';
    58. $title='通过';
    59. break;
    60. case 2:
    61. $color='default';
    62. $title='不通过';
    63. break;
    64. default:
    65. $color='error';
    66. $title='未核实';
    67. }
    68. //根据审核结果给 列表中步骤设置标签
    69. $step->setTags([new FieldStepTag($title,$color)]);
    70. //如果审核不通过,在列表步骤旁显示备注信息
    71. if((int)$info->check_status===2){
    72. $step->setRemark($info->check_remarks);
    73. }
    74. }
    75. /**
    76. * 步骤判断,数据的下一步是否为当前步骤
    77. * @return FieldStepBeforeCheck[] [stepclass=>FieldStepBeforeCheck::make('',function(BaseModel $info, BaseModel $parentInfo = null, ModelField $field = null){})]
    78. */
    79. protected function beforeCheck(): array
    80. {
    81. return [
    82. Input::class=>FieldStepBeforeCheck::make('提交后',function(BaseModel $info, BaseModel $parentInfo = null, ModelField $field = null){
    83. //数据当前步骤是输入时,可执行本步骤
    84. return true;
    85. })
    86. ];
    87. }
    88. /**
    89. * 人员是否有执行当前步骤的权限
    90. * @param VueCurlModel|null $info
    91. * @param BaseModel|null $baseInfo
    92. * @param FieldCollection|null $fields
    93. * @return bool
    94. */
    95. protected function auth(VueCurlModel $info = null, BaseModel $baseInfo = null, FieldCollection $fields = null): bool
    96. {
    97. return true;
    98. }
    99. protected function authWhere(Query $query): void
    100. {
    101. // TODO: Implement authWhere() method.
    102. }
    103. }