3 changed files with 128 additions and 9 deletions
-
104src/components/compTable.vue
-
3src/views/Home.vue
-
24src/views/fee-settings/ItemResultTemplate.vue
@ -0,0 +1,104 @@ |
|||||
|
<template> |
||||
|
<el-table |
||||
|
:data="tableData" |
||||
|
size="medium" |
||||
|
fit |
||||
|
:header-cell-style="{ |
||||
|
height: '40px', |
||||
|
padding: '0', |
||||
|
background: '#f7f9fa', |
||||
|
'font-size': '16px', |
||||
|
color: '#8590a6', |
||||
|
}" |
||||
|
|
||||
|
ref="multipleTable" |
||||
|
|
||||
|
@sort-change="handleSort" |
||||
|
@filter-change="filterHandler" |
||||
|
@row-click="handleRowClick" |
||||
|
> |
||||
|
<el-table-column |
||||
|
v-for="(th, key) in tableHeader" |
||||
|
:key="key" |
||||
|
:prop="th.prop" |
||||
|
:label="th.label" |
||||
|
:fixed="th.fixed" |
||||
|
:sortable="th.sortable ? 'custom' : false" |
||||
|
:filters="th.filters" |
||||
|
:column-key="th.columnKey" |
||||
|
:filtered-value="th.filteredValue" |
||||
|
:filter-multiple="th.filterMultiple" |
||||
|
:min-width="th.minWidth" |
||||
|
|
||||
|
> |
||||
|
<template slot-scope="scope"> |
||||
|
<ex-slot |
||||
|
v-if="th.render" |
||||
|
:render="th.render" |
||||
|
:row="scope.row" |
||||
|
:index="scope.$index" |
||||
|
:column="th" |
||||
|
/> |
||||
|
<span v-else>{{ scope.row[th.prop] || "-" }}</span> |
||||
|
</template> |
||||
|
</el-table-column> |
||||
|
</el-table> |
||||
|
</template> |
||||
|
|
||||
|
<script> |
||||
|
// 自定义内容的组件 |
||||
|
var exSlot = { |
||||
|
functional: true, |
||||
|
props: { |
||||
|
row: Object, |
||||
|
render: Function, |
||||
|
index: Number, |
||||
|
column: { |
||||
|
type: Object, |
||||
|
default: null, |
||||
|
}, |
||||
|
}, |
||||
|
render: (h, data) => { |
||||
|
const params = { |
||||
|
row: data.props.row, |
||||
|
index: data.props.index, |
||||
|
}; |
||||
|
if (data.props.column) params.column = data.props.column; |
||||
|
return data.props.render(h, params); |
||||
|
}, |
||||
|
}; |
||||
|
export default { |
||||
|
name: "comp-table", |
||||
|
components: { exSlot }, |
||||
|
props: { |
||||
|
// 表格数据 |
||||
|
tableData: { |
||||
|
type: Array, |
||||
|
default: function () { |
||||
|
return []; |
||||
|
}, |
||||
|
}, |
||||
|
// 表头数据 |
||||
|
tableHeader: { |
||||
|
type: Array, |
||||
|
default: function () { |
||||
|
return []; |
||||
|
}, |
||||
|
}, |
||||
|
}, |
||||
|
methods: { |
||||
|
// 排序事件 |
||||
|
handleSort(sort) { |
||||
|
this.$emit("sort-events", sort); |
||||
|
}, |
||||
|
// 筛选事件 |
||||
|
filterHandler(filters) { |
||||
|
this.$emit("filter-events", filters); |
||||
|
}, |
||||
|
// 某一行被点击 |
||||
|
handleRowClick(row) { |
||||
|
this.$emit("click-events", row); |
||||
|
}, |
||||
|
}, |
||||
|
}; |
||||
|
</script> |
||||
Write
Preview
Loading…
Cancel
Save
Reference in new issue