PHP code example of quansitech / qscmf-antd-builder

1. Go to this page and download the library: Download quansitech/qscmf-antd-builder library. Choose the download type require.

2. Extract the ZIP file and open the index.php.

3. Add this code to the index.php.
    
        
<?php
require_once('vendor/autoload.php');

/* Start to develop here. Best regards https://php-download.com/ */

    

quansitech / qscmf-antd-builder example snippets


composer 

$divider = new DividerBuilder();

echo $divider; //输出html

$divider = new DividerBuilder();
$divider->setTitle('这是一个标题');
echo $divider; //输出html

// 左边
$divider = new DividerBuilder();
$divider->setTitle('这是一个左标题');
$divider->setTitlePosiition('left');
echo $divider;

// 右边
$divider = new DividerBuilder();
$divider->setTitle('这是一个右标题');
$divider->setTitlePosiition('right');
echo $divider;

echo new DividerBuilder('标题', 'right');

$table_builder = new TableBuilder();
//设置列头 title 是列标题  dataIndex对应的字段key
$table_builder->addColumn([ 'title' => 'Name', 'dataIndex' => 'name']);
$table_builder->addColumn([ 'title' => 'Age', 'dataIndex' => 'age']);
$table_builder->addColumn([ 'title' => 'Address', 'dataIndex' => 'address']);
//添加记录  key 为记录唯一标识,最好使用数据库的唯一id
//其余是记录的键值对
$table_builder->addRow(['key' => 1, 'name' => 'John Brown', 'age' => 32, 'address' => 'New York No. 1 Lake Park']);
$table_builder->addRow(['key' => 2, 'name' => 'Jim Green', 'age' => 42, 'address' => 'London No. 1 Lake Park']);
$table_builder->addRow(['key' => 3, 'name' => 'Joe Black', 'age' => 32, 'address' => 'Sidney No. 1 Lake Park']);

echo $table_builder; //输出html

// 创建表格及添加数据
function mockData(){
    for($i=0;$i<100;$i++){
        $data[] = [
            'id' => $i,
            'name' => 'name_'.$i,
            'nick_name' => 'nick_name_'.$i,
            'num' => $i,
            'status' => rand(0,1),
            'color' => array_rand(['R','G','B']),
            'date' => '2020',
            'date_range' => '2021-2022',
        ];
    }

    return $data;
}

$table_builder = new \AntdBuilder\TableBuilder();
$table_builder->addColumn([ 'title' => 'name', 'dataIndex' => 'name']);
$table_builder->addColumn([ 'title' => 'nick_name', 'dataIndex' => 'nick_name']);
$table_builder->addColumn([ 'title' => 'num', 'dataIndex' => 'num']);
$table_builder->addColumn([ 'title' => 'status', 'dataIndex' => 'status']);
$table_builder->addColumn([ 'title' => 'color', 'dataIndex' => 'color']);
$table_builder->addColumn([ 'title' => 'date', 'dataIndex' => 'date']);
$table_builder->addColumn([ 'title' => 'date_range', 'dataIndex' => 'date_range']);

$data = $this->mockData();
$list_data = $data;

foreach ($list_data as &$v){
    $temp = $v;
    $temp['key'] = $v['id'];

    $table_builder->addRow($temp);
}

  // 参数说明
  // $name
  // $text
  // $showLabel 默认为 false
  
  $table_builder->addFuzzyFilter('name', '模糊搜索');
  

  // 参数说明
  // $name
  // $text
  // $showLabel 默认为 false
  
  $table_builder->addExactFilter('name', '精准搜索');
  

  $status_list = array_map(function($value){
    return ['value' => $value, 'label' => $value];
    },[0,1]);
  
  // 参数说明
  // $name
  // $text
  // $options
  // $showLabel 默认为 false
  // $showSearch 默认为 false
  // $width 默认为 null
  
  $table_builder->addSelectFilter('status', '状态', $status_list);
  

  $status_list = array_map(function($value){
    return ['value' => $value, 'label' => $value];
    },[0,1]);
  
  // 参数说明
  // $name
  // $text
  // $options
  // $showLabel 默认为 false
  // $width 默认为 null
  
  $table_builder->addMultiSelectFilter('status', '状态多选', $status_list);
  

  // 参数说明
  // $name
  // $text
  // $rule
  // $picker 默认为 'date'
  // $format 默认为 ''
  // $showLabel 默认为 false
  
  $table_builder->addDateFilter('date', '年份', TableBuilder::FILTER_RULE_LT, 'year');
  

  // $name
  // $text
  // $rule
  // $picker 默认为 'date'
  // $format 默认为 ''
  // $showLabel 默认为 false
  
  $table_builder->addDateRangeFilter('date','年份范围', TableBuilder::FILTER_RULE_BETWEEN, 'year');
  

  // 参数说明
  // $name
  // $text
  // $type
  // $callback
  // $showLabel 默认为 false
  
  $table_builder->addSelfFilter('name','自定义精准搜索', TableBuilder::FILTER_TYPE_INPUT, 'return value === searchData;');
  

  // 请看通用参数以及对应类型参数说明使用
  
  $table_builder->addFilter(['name' => 'nick_name', 'text'=>'自定义模糊搜索', 'type' => TableBuilder::FILTER_TYPE_INPUT, 'rule' => TableBuilder::FILTER_RULE_WILDCARD, 'changeThenSearch' => false]);
  

  // 参数说明
  // $name
  
  $table_builder->addDefSorter('num');
  

  // 参数说明
  // $name
  // $callback
  
  $table_builder->addSelfSorter('color', "return rowA.color-rowB.color;");
  

public function getList(){
    $get_data = I("get.");
    $page = $get_data['page']??1;
    $per_page = $get_data['per_page']??20;

    $map = [
        // 筛选数据
    ];
    $model = D("User");

    $count = $model->where($map)->count();
    $data_list = $model->getListForPage($map, $page, $per_page);

    $this->ajaxReturn(['status' => 1, "info" => '', 'data' => ['list' => $data_list, 'count' => $count]]);
}

$table_builder = new TableBuilder();
$table_builder->addColumn(['title' => 'name', 'dataIndex' => 'name', 'sorter' => true]);
$table_builder->addColumn(['title' => 'remark', 'dataIndex' => 'remark']);
$table_builder->addColumn(['title' => 'status', 'dataIndex' => 'status']);
$table_builder->addColumn(['title' => 'email', 'dataIndex' => 'email']);
$table_builder->addColumn(['title' => 'tel', 'dataIndex' => 'tel']);
$table_builder->addColumn(['title' => 'top', 'dataIndex' => 'top', 'filters' => [['text' => 'is_top', 'value' => '0'], ['text' => 'not top', 'value' => '1']]]);
$table_builder->addColumn(['title' => 'work_date', 'dataIndex' => 'work_date']);

$table_builder->setApiUrl(U('getList',['id' => 1], true, true));

$table_builder->addDefSorter("status");

$table_builder->addSelectFilter("key", "search", [["value"=>"name", "label"=>"name"],["value"=>"email", "label"=>"email"]]);
$table_builder->addFuzzyFilter("word", "word");

$table_builder->addFuzzyFilter("name", "name", true);
$table_builder->addExactFilter("email", "email", true);
$table_builder->addSelectFilter("status", "status", [["value"=>"value", "label"=>"label"]]    );
$table_builder->addMultiSelectFilter("status_m", "status_m", [["value"=>"value", "label"=>"label"],["value"=>"value2", "label"=>"label2"],["value"=>"value3", "label"=>"label3"]]    );
$table_builder->addDateFilter("work_date", "work_date",TableBuilder::FILTER_RULE_CALLBACK);
$table_builder->addDateRangeFilter("work_date_range", "work_date_range", TableBuilder::FILTER_RULE_CALLBACK);

  // 合并表头
  $table_builder = new TableBuilder();
  $table_builder->addColumn([ 'title' => '合同编号', 'dataIndex' => 'id']);
  $table_builder->addColumn([ 'title' => '签约日期', 'dataIndex' => 'code', 'colSpan' => 2]);
  // 此表头会被合并,不展示
  $table_builder->addColumn([ 'title' => '项目名称', 'dataIndex' => 'name', 'colSpan' => 0]);

  // 将id相同的数据合并展示,列出不同的name
  $list_data = [
    ['id' => 1, 'code' => '1', 'name' => 'name1_1', '_cellProperties' => ['id' => ['rowSpan' => 4], 'code' => ['rowSpan' => 4], 'name' => ['rowSpan' => 1]]],
    ['id' => 1, 'code' => '1', 'name' => 'name1_2', '_cellProperties' => ['id' => ['rowSpan' => 0], 'code' => ['rowSpan' => 0], 'name' => ['rowSpan' => 1]]],
    ['id' => 1, 'code' => '1', 'name' => 'name1_3', '_cellProperties' => ['id' => ['rowSpan' => 0], 'code' => ['rowSpan' => 0], 'name' => ['rowSpan' => 1]]],
    ['id' => 1, 'code' => '1', 'name' => 'name1_4', '_cellProperties' => ['id' => ['rowSpan' => 0], 'code' => ['rowSpan' => 0], 'name' => ['rowSpan' => 1]]],
    ['id' => 2, 'code' => '2', 'name' => 'name2_1', '_cellProperties' => ['id' => ['rowSpan' => 2], 'code' => ['rowSpan' => 2], 'name' => ['rowSpan' => 1]]],
    ['id' => 2, 'code' => '2', 'name' => 'name2_2', '_cellProperties' => ['id' => ['rowSpan' => 0], 'code' => ['rowSpan' => 0], 'name' => ['rowSpan' => 1]]],
    ['id' => 3, 'code' => '3', 'name' => 'name3_1', '_cellProperties' => ['id' => ['rowSpan' => 1], 'code' => ['rowSpan' => 1], 'name' => ['rowSpan' => 1]]],
    ['id' => 4, 'code' => '4', 'name' => 'name4_1'],
  ];
  
  foreach ($list_data as &$v){
     $table_builder->addRow($v);
  }
  
  echo $table_builder;
  

  $table_builder = new TableBuilder();
  $table_builder->addColumn([ 'title' => '合同编号', 'dataIndex' => 'id']);
  $table_builder->addColumn([ 'title' => '签约日期', 'dataIndex' => 'code']);

  // 修改code的背景色
  // 自定义样式类,如 bg-green {background-color:#bbe7c1;}
  $list_data = [
    ['id' => 1, 'code' => '1', 'name' => 'name1_1', '_cellProperties' => ['code' => ['className' => 'bg-green']]],
  ];
  
  foreach ($list_data as &$v){
     $table_builder->addRow($v);
  }
  
  echo $table_builder;
  

$table_builder = new TableBuilder();
$table_builder->setPagination(false);

$collapse = new CollapseBuilder();
$collapse->addPanel('这是个标题1', '<p>这里可以写html</p>');
$collapse->addPanel('这是个标题2', '<p>这里可以写html</p>');
echo $collapse; //输出html

$descriptions = new DescriptionsBuilder();
$descriptions->setBordered(true);
$descriptions->addItem('抬头', $title)
    ->addItem('纳税人识别号', $tax_code, ['span' => 2])
    ->addItem('图片', ['https://demo.test/demo.png', 'https://demo.test/demo.png'], ['type' => 'image'])
    ->addItem('html', "123 <br /> 456", ['type' => 'html']);

echo $descriptions;

$datepicker = new DatepickerBuilder(DatepickerBuilder::TYPE_RANGEPICKER);
$date_range = $datepicker->parseParam(I('get.'));
if(count($date_range) === 0){
   $start = date("Y", time()) . "-01-01";
   $end = date("Y-m-d", time());
   $date_range = [
       $start,
       $end
   ];
}
$datepicker->setDefaultValue($date_range);


echo $datepicker;