基于element-ui二次封装table实现自定义编辑表格
支持自定义组件 input select datePicker cascader
npm install lc-edit-table
import lcEditTable from 'lc-edit-table'
Vue.use(lcEditTable)
<lcEditTable :tableData="tableData" :cols="cols" :that="that" :inputTypeObject="inputTypeObject" :height="tableHeight" @tableChange="tableChange" />
tableData: 表格数据 数组 当前数据添加noEdit: true,则表示当前行双击都不可编辑,比isEdit权重高
tableData: 表格数据 数组 当前数据添加noEdit: true,则表示当前行双击都不可编辑,比isEdit权重高
tableData: [
{ name: '姓名', bgzd: "name", bgq: 12, bgh: 14, id: 123 },
{ name: '年龄', bgzd: "age", bgq: 2, bgh: 1, id: 11 },
{ name: '设置', bgzd: "ss", bgq: 13, bgh: 15, id: 132 },
{ name: '测试1', bgzd: "ss", bgq: 13, bgh: 15, id: 12 },
{ name: '测试2', bgzd: "cs2", bgq: "2022-10-06 15:33:26", bgh: "2022-12-08", id: 13 },
{ name: '测试3', bgzd: "ss1", bgq: 660200, bgh: 660100, id: 14 },
]
cols: [
{ label: '变更内容名称', prop: 'name', isEdit: false, },
{ label: '变更字段', prop: 'bgzd', isEdit: false, },
{ label: '变更前', prop: 'bgq', isEdit: false, isFormat: true },
{ label: '变更后', prop: 'bgh', isEdit: true, isFormat: true },
]
inputTypeObject: 对指定表格行数据配置 数组
inputTypeObject: [
{ inputType: "input", key: "name", placeholder: "", disabled: false, clearable: false },
{ inputType: "select", key: "age", placeholder: "", disabled: false, clearable: false, filterable: false, options: "ageOptions", formatter: this.ageFormat },
{ inputType: "datePicker", key: "cs2", placeholder: "", disabled: false, clearable: false, formatter: this.dateFormat },
{ inputType: "cascader", key: "ss1", placeholder: "所属兵团辖区", props: "defaultParams", options: "ssqhoptions", disabled: false, clearable: false, formatter: this.ssqhFormat },
],
formatter: 当前行定义可格式化列的数据格式化
/** tableChange: 表格修改后的数据获取,并赋值 */
// 变更表格内容处理
tableChange (scope, tableData) {
// 当前修改数据:scope.row[scope.column.property]
console.log("testView-scope", scope);
console.log("testView-tableData", tableData);
}