image.png

    需要在控制器中重写getLeftCate方法

    1. <?php
    2. namespace app\controller;
    3. use app\BaseController;
    4. use think\db\Query;
    5. use tpScriptVueCurd\option\LeftCate;
    6. /**
    7. * 人员控制器
    8. */
    9. class User extends BaseController
    10. {
    11. use \tpScriptVueCurd\base\controller\Controller;
    12. public function init(): void
    13. {
    14. $this->title='人员信息';
    15. $this->md=\app\model\User::make($this);
    16. }
    17. /**
    18. * 所有子表的控制器对象
    19. * @return array
    20. */
    21. protected function childControllers(): array
    22. {
    23. return [
    24. Pets::make(),
    25. ];
    26. }
    27. public function getLeftCate(): ?LeftCate
    28. {
    29. $leftCate=new LeftCate(function (){
    30. return [
    31. ['value'=>1,'pvalue'=>0,'title'=>'浙江省'],
    32. ['value'=>11,'pvalue'=>1,'title'=>'绍兴市'],
    33. ['value'=>12,'pvalue'=>1,'title'=>'杭州市'],
    34. ['value'=>13,'pvalue'=>1,'title'=>'湖州市'],
    35. ['value'=>101,'pvalue'=>12,'title'=>'西湖区'],
    36. ['value'=>102,'pvalue'=>12,'title'=>'萧山区'],
    37. //禁用选项
    38. ['value'=>103,'pvalue'=>12,'title'=>'滨江区','disabled'=>true],
    39. ['value'=>2,'pvalue'=>0,'title'=>'安徽省'],
    40. ['value'=>3,'pvalue'=>0,'title'=>'河南省'],
    41. ['value'=>4,'pvalue'=>0,'title'=>'江西省'],
    42. ];
    43. });
    44. $leftCate->show=true;
    45. $leftCate->paramName='area_id';
    46. $leftCate->title='人员所在地区';
    47. $leftCate->where=function (Query $query)use($leftCate){
    48. $areaId=$this->request->get('area_id/d');
    49. if(empty($areaId)){
    50. //不进行筛选
    51. return;
    52. }
    53. $list=$leftCate->getList();
    54. if(!isset($list[$areaId])){
    55. $this->error('参数area_id值不合法');
    56. }
    57. $areaIdIds=$list[$areaId]['childLastVals']?:[$areaId];
    58. $query->where('area_id','in',$areaIdIds);
    59. };
    60. return $leftCate;
    61. }
    62. }

    注意:如果paramName设置的值为base_id时,会将右侧列表当为左侧树形列表的子表,此时,不需要写where条件

    1. <?php
    2. namespace app\controller;
    3. use tpScriptVueCurd\base\model\BaseModel;
    4. use tpScriptVueCurd\option\FunControllerListChildBtn;
    5. use tpScriptVueCurd\option\LeftCate;
    6. /**
    7. * 宠物控制器
    8. */
    9. class Pets extends \app\BaseController
    10. {
    11. use \tpScriptVueCurd\base\controller\Controller;
    12. public function init(): void
    13. {
    14. $this->title='宠物';
    15. $this->md=\app\model\Pets::make($this);
    16. }
    17. protected function parentController(): ?object
    18. {
    19. return User::make();
    20. }
    21. public static function baseListBtnText(FunControllerListChildBtn $btn, BaseModel $info): void
    22. {
    23. $btn->text='所有宠物';
    24. }
    25. public function getLeftCate(): ?LeftCate
    26. {
    27. $leftCate=new LeftCate(function (){
    28. return \app\model\User::field('id AS value,0 AS pvalue,name AS title')->select()->toArray();
    29. });
    30. $leftCate->show=true;
    31. $leftCate->title='人员';
    32. $leftCate->paramName='base_id';
    33. return $leftCate;
    34. }
    35. }

    image.png