New Research: Supply Chain Attack on Axios Pulls Malicious Dependency from npm.Details →
Socket
Book a DemoSign in
Socket

@we-weaver/scene-table-list

Package Overview
Dependencies
Maintainers
3
Versions
2
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@we-weaver/scene-table-list

快速生成表格场景

latest
npmnpm
Version
0.1.1
Version published
Maintainers
3
Created
Source

Weaver table scene

Usage

最少配置项

const tableColumns = [
  {
    prop: 'tempCode',
    label: '模板编号',
  },
  {
    prop: 'tempName',
    label: '模板名称',
    showOverflowTooltip: true,
  },
];

const config = tableScene()('/register-order/list-all-dept', {
  table: tableColumns,
});

进阶配置请求

const config = tableScene()(
  {
    url: '/register-order/list-all-dept',
    name: 'getAnotherListData',
    options: {
      method: 'POST',
      success({ $response, $model }) {
        $model.data = $response;
      },
    },
  },
  {
    table: tableColumns,
  }
);

最简筛选配置

const config = tableScene()('/register-order/list-all-dept', {
  table: tableColumns,
  filter: {
    type: {
      component: 'WeSelect',
      options: [
        { value: '0', label: '男' },
        { value: '1', label: '女' },
      ],
    },
    queryContent: 'WeInput',
    $$placeholder: 'DynamicKeyComponent',
  },
});

完整筛选配置

const config = tableScene()('/register-order/list-all-dept', {
  table: tableColumns,
  filter: [
    {
      prop: 'type',
      component: 'WeSelect',
      options: [
        { value: '0', label: '男' },
        { value: '1', label: '女' },
      ],
      defaultValue: '0',
    },
    {
      prop: '$$placeholder',
      component: 'DynamicKeyComponent',
    },
  ],
});

完整表格主体配置

const config = tableScene()('/register-order/list-all-dept', {
  table: {
    className: 'vve-mb-3',
    data: '${$model.data.getListData.map(i => ({...i, type: i.type + "1"}))}',
    children: tableColumns,
    size: 'medium',
  },
});

分页器配置

const config = tableScene()('/register-order/list-all-dept', {
  // ...
  pagination: {
    // 如果需要替换分页组件可以用这个
    component: 'AnotherPagination',
    // 剩余的配置项会透传到组件上
  },
});

增加 weaver 其它配置,

新增 weaver 配置项会合并入内置的配置中,同名的属性将会被覆盖 在使用 events, actions 等拥有语法糖的配置时,请使用完整的语法进行书写

const config = tableScene()(
  '/register-order/list-all-dept',
  {
    // ...
  },
  {
    events: [
      {
        type: 'created',
        action({ $actions }) {
          $actions.someAction();
        },
      },
    ],
    model: {
      bizParam: {
        someProps: '',
      },
    },
    actions: {
      someAction() {
        console.log('do something');
      },
    },
  }
);

API

tableScene(options?)(requestConfig, layouts, weaverConfig?)

requestConfig

Type: string | RequestConfig

interface RequestConfig {
  // 列表接口地址
  url: string;
  // 列表接口名称, 不填默认名称为 `getListData`
  name?: string;
  // 同 weaver 内置请求实例配置项
  options?: WeaverRequestConfig;
}

layouts

Type: LayoutConfig

interface LayoutConfig {
  // 表格配置项
  table: TableConfig;
  // 筛选配置项
  filter?: FilterConfig | array<FilterConfig>;
  // 分页器配置项
  pagination?: PaginationConfig;
}
filterConfig
 interface FilterConfig {
   // 组件名称,使用时必选先注册
   component: string;
   // 对应的属性名称,如果是动态属性使用`$$placeholder` 作为占位符
   prop: string;
   // 其余所有配置项会透传
   [propName: string]?: any;
 }

options

Type: object

trigger

Type: string

Default: manual

筛选器触发模式

  • manual 手动触发,点击按钮
  • immediate 立即触发,当筛选条件变动时立即触发
  • enter 按 Enter 触发
syncWithURL

Type: boolean

Default: true

筛选参数同步至 URL,并且每次变动地址栏都会触发列表接口动作

例如 http://test.guahao-test.cn?pageNumber=2&pageSize=10&q=test

enablePagination

Type: boolean

Default: true

是否启用分页

enableIndex

Type: boolean

Default: true

是否启用表格首列的索引值展示

功能描述
  • 筛选器触发模式(手动,自动触发)
{
  // 触发页面重新请求的方式
  // manual 手动触发,点击按钮
  // immediate 立即触发,当筛选条件变动时立即触发
  // enter 按 Enter 触发
  trigger: 'manual';
}

增加三种触发方式(manual,immediate,enter)按回车触发搜索是否需要和手动触发合并?

  • 筛选参数放置在 URL 请求体中
{
  // 当开关打开时,每次筛选条件触发时(包括分页),筛选条件会同步到地址栏中
  syncWithURL: true;
}
  • 筛选器组合
  • 极简模式

    const filters = {
      type: {
        component: 'WeSelect',
        options: [
          { value: '0', label: '男' },
          { value: '1', label: '女' },
        ],
      },
      queryContent: 'WeInput',
      $$placeholder: 'DynamicKeyComponent',
    };
    
    // 转换成 weaver 配置
    
    const filters = [
      {
        component: 'WeSelect',
        extend_dataSource: [
          { value: '0', label: '男' },
          { value: '1', label: '女' },
        ],
        props: {
          value: '$model.filters.type',
        },
      },
      {
        component: 'WeInput',
        props: {
          value: '$model.filters.queryContent',
        },
      },
      {
        component: 'DynamicKeyComponent',
        events: [
          {
            type: 'change',
            action({ $args, $weaver, $model }) {
              const [{ key, value }] = $args;
              $weaver.$set($model.filters, key, value);
            },
          },
        ],
      },
    ];
    
    const model = {
      filters: {
        type: '',
        queryContent: '',
      },
    };
    
  • 完整模式

    const filters = [
      {
        prop: 'type',
        component: 'WeSelect',
        options: [
          { value: '0', label: '男' },
          { value: '1', label: '女' },
        ],
        defaultValue: '0',
      },
      {
        prop: '$$placeholder',
        component: 'DynamicKeyComponent',
      },
    ];
    
    // 转换成 weaver 配置
    
    const filters = [
      {
        component: 'WeSelect',
        extend_dataSource: [
          { value: '0', label: '男' },
          { value: '1', label: '女' },
        ],
        props: {
          value: '$model.filters.type',
          defaultValue: '0',
        },
      },
      {
        component: 'DynamicKeyComponent',
        events: [
          {
            type: 'change',
            action({ $args, $weaver, $model }) {
              const [{ key, value }] = $args;
              $weaver.$set($model.filters, key, value);
            },
          },
        ],
      },
    ];
    
    const model = {
      filters: {
        type: '0',
      },
    };
    
  • 分页功能内置(包括分页参数处理,页码与每页数量变动的处理,重置分页参数)
  • 分页参数转换 内置默认分页参数为 pageNumber, pageSize, totalCount, totalPages,可以通过 renameKeys 来转换接口返回的字段
    {
      pagination: {
        renameKeys: {
          page: 'pageNumber',
          size: 'pageSize',
          total: 'totalCount',
          pages: 'totalPages'
        }
      }
    }
    

FAQs

Package last updated on 03 Apr 2020

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts