tiny-vue/examples/sites/demos/pc/app/grid/custom-style/footer-style-composition-ap...

170 lines
4.2 KiB
Vue
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<div class="footer-style">
<h4 class="title">自定义表尾行样式</h4>
<tiny-grid
:data="tableData"
show-footer
:footer-method="footerMethod"
border
:footer-row-class-name="footerRowClassName"
>
<tiny-grid-column type="index" width="60"></tiny-grid-column>
<tiny-grid-column type="selection" width="60"></tiny-grid-column>
<tiny-grid-column field="name" title="公司名称"></tiny-grid-column>
<tiny-grid-column field="employees" title="员工数"></tiny-grid-column>
<tiny-grid-column field="createdDate" title="创建日期"></tiny-grid-column>
<tiny-grid-column field="city" title="城市"></tiny-grid-column>
</tiny-grid>
<h4 class="title">自定义表尾单元格样式</h4>
<tiny-grid
:data="tableData"
show-footer
:footer-method="footerMethod"
border
:footer-cell-class-name="footerCellClassName"
>
<tiny-grid-column type="index" width="60"></tiny-grid-column>
<tiny-grid-column type="selection" width="60"></tiny-grid-column>
<tiny-grid-column field="name" title="公司名称"></tiny-grid-column>
<tiny-grid-column field="employees" title="员工数"></tiny-grid-column>
<tiny-grid-column field="createdDate" title="创建日期" :footer-class-name="footerClassName"></tiny-grid-column>
<tiny-grid-column field="city" title="城市"></tiny-grid-column>
</tiny-grid>
</div>
</template>
<script setup lang="jsx">
import { ref } from 'vue'
import { Grid as TinyGrid, GridColumn as TinyGridColumn } from '@opentiny/vue'
const tableData = ref([
{
id: '1',
name: 'GFD科技YX公司',
city: '福州',
employees: 800,
createdDate: '2014-04-30 00:56:00'
},
{
id: '2',
name: 'WWW科技YX公司',
city: '深圳',
employees: 300,
createdDate: '2016-07-08 12:36:22'
},
{
id: '3',
name: 'RFV有限责任公司',
city: '中山',
employees: 1300,
createdDate: '2014-02-14 14:14:14'
},
{
id: '4',
name: 'TGB科技YX公司',
city: '龙岩',
employees: 360,
createdDate: '2013-01-13 13:13:13'
},
{
id: '5',
name: 'YHN科技YX公司',
city: '韶关',
employees: 810,
createdDate: '2012-12-12 12:12:12'
},
{
id: '6',
name: 'WSX科技YX公司',
city: '黄冈',
employees: 800,
createdDate: '2011-11-11 11:11:11'
},
{
id: '7',
name: 'KBG物业YX公司',
city: '赤壁',
employees: 400,
createdDate: '2016-04-30 23:56:00'
},
{
id: '8',
name: '深圳市福德宝网络技术YX公司',
city: '厦门',
employees: 540,
createdDate: '2016-06-03 13:53:25'
}
])
const footerMethod = ({ columns, data }) => {
return [
columns.map((column, columnIndex) => {
if (columnIndex === 0) {
return '平均'
}
if (column.property === 'employees') {
return Math.floor(data.map((item) => item[column.property]).reduce((acc, item) => acc + item) / data.length)
}
return null
}),
columns.map((column, columnIndex) => {
if (columnIndex === 0) {
return '和值'
}
if (column.property === 'employees') {
return data.map((item) => item[column.property]).reduce((acc, item) => acc + item)
}
return null
})
]
}
const footerCellClassName = ({ column, $rowIndex }) => {
if ($rowIndex === 0 && column.property === 'employees') {
return 'footer__cell--blue'
}
}
const footerRowClassName = ({ $rowIndex }) => {
if ($rowIndex === 0) {
return 'footer__row--red'
}
if ($rowIndex === 1) {
return 'footer__row--green'
}
}
const footerClassName = () => {
return 'footer__cell--red'
}
</script>
<style scoped>
.title {
font-size: 16px;
padding: 15px;
font-weight: bolder;
color: #444;
}
.footer-style :deep(.tiny-grid-footer__column.footer__cell--blue) {
background-color: #2db7f5;
color: #fff;
}
.footer-style :deep(.tiny-grid-footer__row.footer__row--red) {
background-color: palevioletred;
color: #fff;
}
.footer-style :deep(.tiny-grid-footer__row.footer__row--green) {
background-color: green;
color: #fff;
}
.footer-style :deep(.footer__cell--red) {
background-color: palevioletred;
color: #fff;
}
</style>