@hzab/list-render
列表组件,支持传入 schema 进行 CURD 相关组件(列表、新增、编辑、删除)的渲染
组件
Tips
示例
import ListRender from "@hzab/list-render";
const listDM = useMemo(
() =>
new DataModel({
getListApi: "/api/v1/userinfo",
getListFunc() {
return new Promise((resolve) => {
resolve({
list: [{ id: 1, menuName: "name" }],
pagination: { total: 1, current: 1 },
});
});
},
createApi: "/api/v1/userinfo",
getApi: "/api/v1/userinfo/:id",
updateApi: "/api/v1/userinfo/:id",
deleteApi: "/api/v1/userinfo/:id",
}),
[],
);
<ListRender schema={testSchema} model={listDM} />;
API
InfoPanel Attributes
属性名称 | 属性类型 | 必须 | 默认值 | 描述 |
---|
schema | Object | 是 | | 字段描述文件,包含各个字段的信息 |
model | Object | 是 | | 数据模型,包含 CURD 接口信息 |
model.query | Object | 是 | | 传入初始的 query 信息,通常是分页信息 { pageSize: 10, pageNumber: 1 },pageSize 可以取 10/20/50,query 信息会在列表请求的时候带给后端 |
hasQuery | Boolean | | true | 是否包含搜索、筛选框、搜索按钮等 |
search | String | | '' | 传入空字符串时,不包含搜索框;传入非空字符串时,显示搜索框,同时传入的字符串作为搜索框的占位符 |
filters | Array | | [] | 字符串数组,可以包含要筛选的字段 key 值(schema 中的 name),或者字符串 '$timerange'(时间范围筛选专用) |
hasCreate | Boolean | | true | 是否显示新增按钮 |
hasAction | Boolean | | true | 是否在表格的最右增加一个“操作”列;hasAction 为 true 时,下面的 canCreate/canEdit/canDelete 才会生效 |
hasEdit | Boolean | | true | 是否显示编辑按钮 |
hasDel | Boolean | | true | 是否显示删除按钮 |
fetchOnEdit | Boolean | | true | 展示编辑弹框时,是否会调用一次详情接口进行回填(某些场景下,列表接口只返回部分部分字段,只有详情接口会返回全部字段);若为 false,则会使用表格列表接口返回的 row 数据进行回填 |
components | Object | | {} | 自定义组件 |
formInitialValues | Object | | {} | 给新增、编辑对话框中的表单增加默认值 |
dialogConf | Object | | {} | dialog 配置对象 |
colConf | Object | | {} | 指定各列的参数(比如列宽),key 为字段的 name。可以指定名为 “$actionBtns”的字段来设置“操作”列 |
queryConf | Object | | {} | 设置 query 参数的 key |
paginationConf | Object | | {} | 进行 pagenation 相关设置 |
Table Methods
函数名 | 参数 | 说明 |
---|
onSearch | | 重置页码至 1,并刷新列表 |
getList | | 获取当前页列表数据 |
forceUpdate | | 强制重渲染列表,解决枚举数据渲染不正常的问题 |
formDialogRef | | 新增、编辑 弹窗 form-dialog 的 ref |
queryRef | | 筛选条件 query-render 的 ref |
DataModel
使用
import DataModel from "@hzab/list-render/data-model";
const dataModel = new DataModel({
createApi: "api",
createMap(data) {
return data;
},
getApi: "api",
getMap(res) {
return res;
},
getListApi: "getListApi",
getListMap(item) {
return item;
},
updateApi: "updateApi",
updateMap(data) {
return data;
},
deleteApi: "deleteApi",
multipleDeleteApi: "multipleDeleteApi",
query: { pageNumber: 1, pageSize: 10 },
axiosConfig: {
timeout: 10000,
},
});
async function test() {
const createRes = await dataModel.create();
const getRes = await dataModel.get();
const getListRes = await dataModel.getListApi();
const updateRes = await dataModel.update();
const deleteRes = await dataModel.delete();
const multipleDeleteRes = await dataModel.multipleDelete();
}
属性 Props
属性名称 | 属性类型 | 必须 | 默认值 | 描述 |
---|
createApi | String | | | post 请求的 api,dataModel. |
createMap | Function | | | post 请求提交前的处理函数 |
getApi | String | | | get 请求的 api |
getMap | Function | | | 处理 get 返回结果,处理完需要把结果返回 |
getListApi | String | | | getList 获取列表的 api,返回列表数据和 pagination 数据 |
getListMap | Function | | | getList 结果 map 的回调函数,参数为结果每一项数据,处理完需要把结果返回 |
getListFunc | Function | | | 可用于替代 getList 的函数,处理自定义数据,参数为 query |
updateApi | String | | | put 请求的 api |
updateMap | Function | | | put 请求提交前的处理函数 |
deleteApi | String | | | delete 请求的 api |
multipleDeleteApi | | | | 批量删除请求的 api,使用的 axios({ method: 'DELETE' }) 发请求 |
query | | | | get 请求的参数 |
axiosConfig | Object | | | axios 的配置项 |
组件开发流程
- 在 config/webpack.config/webpack.config.dev.js 中按需修改 alias 配置的包名,便于本地调试
- 在 src/typings.d.ts 中按需修改 declare module 配置的包名,解决 ts 报错问题
- npm run dev
文件目录
- example 本地开发测试代码
- src 组件源码
- lib 组件打包编译后的代码
命令
- 本地运行:npm run dev
- 测试环境打包编译:npm run build-flow-dev
- 生产环境打包编译:npm run build
发布
- 在 config/webpack.config/webpack.config.prod.js 中按需修改 entry 配置的文件名
- 编译组件:npm run build
- 命令:npm publish --access public
- 发布目录:
配置
配置文件
- 本地配置文件:config/global-config/config.local.js
- 测试环境配置文件:config/global-config/config.flowDev.js
- 生产环境配置文件:config/global-config/config.production.js
webpack 配置文件