提交 bcf80410 编写于 作者: Cano1997's avatar Cano1997

feat: 新增表格注入属性

上级 9daab541
......@@ -14,6 +14,7 @@ import {
import { IModal } from '@ibiz-template/runtime';
import { AppGridPagination } from '@/components/common';
import {
renderAttrs,
useAppGridPagination,
useITableColumns,
useITableEvent,
......@@ -266,8 +267,31 @@ export const GridControl = defineComponent({
on-on-selection-change={this.onSelectionChange}
on-on-sort-change={this.onSortChange}
row-class-name={(row: IData) => (row.hiddenRow ? 'hidden-row' : '')}
span-method={this.c.spanMethod.bind(this.c)}
span-method={({
row,
column,
rowIndex,
columnIndex,
}: {
row: IData;
column: IData;
rowIndex: number;
columnIndex: number;
}) =>
this.c.spanMethod(
row,
column,
rowIndex,
columnIndex,
this.tableData,
)
}
scopedSlots={columnSlots}
{...renderAttrs(this.c.model, {
context: this.context,
params: this.params,
data: this.c.getData() || [],
})}
></i-table>
{this.c.model.source.enablePagingBar && (
<AppGridPagination
......
......@@ -236,3 +236,26 @@ export function useAppGridPagination(c: GridController) {
}
return { onPageChange, onPageSizeChange, onPageReset };
}
export function renderAttrs(
model: GridColumnModel | GridModel,
params: IParams,
): IParams {
const attrs: IParams = {};
model.controlAttributes?.forEach(item => {
// 表格合并行列应该排除由表格内置合并单元格方法处理
if (item.attrName !== 'span-method') {
if (item.attrName && item.attrValue) {
const args = {
...params,
};
const code = `return (async function() { ${item.attrValue}} )();`;
// eslint-disable-next-line no-new-func
const fn = new Function(...Object.keys(args), code);
const result = fn.apply({}, Object.values(args));
return result;
}
}
});
return attrs;
}
Markdown 格式
0% or
您添加了 0 到此讨论。请谨慎行事。
先完成此消息的编辑!
想要评论请 注册