Files
vxe-table/examples/views/table/base/FixedFull.vue
xuliangzhan bb8aced269 优化重构
2020-04-30 20:30:40 +08:00

264 lines
9.5 KiB
Vue
Raw 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>
<p class="tip">横纵内容过多时同时固定列和表头</p>
<vxe-table
border
resizable
height="300"
highlight-hover-row
:data="tableData">
<vxe-table-column type="seq" width="60" fixed="left"></vxe-table-column>
<vxe-table-column field="name" title="Name" width="300"></vxe-table-column>
<vxe-table-column field="role" title="Role" width="300"></vxe-table-column>
<vxe-table-column field="sex" title="Sex" width="300"></vxe-table-column>
<vxe-table-column field="date" title="Date" width="300"></vxe-table-column>
<vxe-table-column title="操作" fixed="right" width="200">
<template>
<vxe-button type="text">按钮1</vxe-button>
<vxe-button type="text">按钮2</vxe-button>
</template>
</vxe-table-column>
</vxe-table>
<p class="demo-code">{{ $t('app.body.button.showCode') }}</p>
<pre>
<code class="xml">{{ demoCodes[0] }}</code>
<code class="javascript">{{ demoCodes[1] }}</code>
</pre>
<p class="tip">固定列建议设置 <table-api-link prop="show-overflow"/> 该值禁用自动换行大幅提升渲染速度</p>
<vxe-toolbar>
<template v-slot:buttons>
<vxe-button @click="toggleFixedColumn(0, 'left')">切换第一列固定</vxe-button>
<vxe-button @click="toggleFixedColumn(1, 'left')">切换第二列固定</vxe-button>
<vxe-button @click="toggleFixedColumn(4, 'right')">切换第五列固定</vxe-button>
<vxe-button @click="toggleFixedColumn(5, 'right')">切换第六列固定</vxe-button>
</template>
</vxe-toolbar>
<vxe-table
border
ref="xTable2"
height="300"
highlight-hover-row
show-overflow
:data="tableData">
<vxe-table-column type="seq" width="60" :fixed="colFixeds.col0"></vxe-table-column>
<vxe-table-column field="name" title="Name" width="300" :fixed="colFixeds.col1"></vxe-table-column>
<vxe-table-column field="role" title="Role" width="300"></vxe-table-column>
<vxe-table-column field="sex" title="Sex" width="300"></vxe-table-column>
<vxe-table-column field="date" title="Date" width="300" :fixed="colFixeds.col4"></vxe-table-column>
<vxe-table-column title="操作" width="200" :fixed="colFixeds.col5">
<template>
<vxe-button status="primary">按钮1</vxe-button>
<vxe-button>按钮2</vxe-button>
</template>
</vxe-table-column>
</vxe-table>
<p class="demo-code">{{ $t('app.body.button.showCode') }}</p>
<pre>
<code class="xml">{{ demoCodes[2] }}</code>
<code class="javascript">{{ demoCodes[3] }}</code>
</pre>
<p class="tip">
<span>分组表头<span class="red">固定列必须按组进行设置</span></span>
</p>
<vxe-table
border
height="400"
:data="tableData">
<vxe-table-column title="基本信息" fixed="left">
<vxe-table-column type="seq" width="60" fixed="left"></vxe-table-column>
<vxe-table-column field="name" title="Name" fixed="left" width="180"></vxe-table-column>
</vxe-table-column>
<vxe-table-column title="更多信息">
<vxe-table-column field="role" title="Role" width="300"></vxe-table-column>
<vxe-table-column field="sex" title="Sex" width="200"></vxe-table-column>
<vxe-table-column title="详细信息">
<vxe-table-column field="sex" title="Sex" width="200"></vxe-table-column>
<vxe-table-column field="num" title="Num" width="200"></vxe-table-column>
</vxe-table-column>
</vxe-table-column>
<vxe-table-column title="额外信息" fixed="right">
<vxe-table-column field="date3" title="Date" fixed="right" width="140"></vxe-table-column>
<vxe-table-column field="address" title="Address" fixed="right" width="200" show-overflow></vxe-table-column>
</vxe-table-column>
</vxe-table>
<p class="demo-code">{{ $t('app.body.button.showCode') }}</p>
<pre>
<code class="xml">{{ demoCodes[4] }}</code>
<code class="javascript">{{ demoCodes[5] }}</code>
</pre>
</div>
</template>
<script>
import hljs from 'highlight.js'
export default {
data () {
return {
colFixeds: {
col0: '',
col1: '',
col2: '',
col3: ''
},
tableData: [],
demoCodes: [
`
<vxe-table
border
resizable
height="300"
highlight-hover-row
:data="tableData">
<vxe-table-column type="seq" width="60" fixed="left"></vxe-table-column>
<vxe-table-column field="name" title="Name" width="300"></vxe-table-column>
<vxe-table-column field="role" title="Role" width="300"></vxe-table-column>
<vxe-table-column field="sex" title="Sex" width="300"></vxe-table-column>
<vxe-table-column field="date" title="Date" width="300"></vxe-table-column>
<vxe-table-column title="操作" fixed="right" width="200">
<template>
<vxe-button type="text">按钮1</vxe-button>
<vxe-button type="text">按钮2</vxe-button>
</template>
</vxe-table-column>
</vxe-table>
`,
`
export default {
data () {
return {
tableData: []
}
},
created () {
this.tableData = window.MOCK_DATA_LIST.slice(0, 20)
}
}
`,
`
<vxe-toolbar>
<template v-slot:buttons>
<vxe-button @click="toggleFixedColumn(0, 'left')">切换第一列固定</vxe-button>
<vxe-button @click="toggleFixedColumn(1, 'left')">切换第二列固定</vxe-button>
<vxe-button @click="toggleFixedColumn(4, 'right')">切换第五列固定</vxe-button>
<vxe-button @click="toggleFixedColumn(5, 'right')">切换第六列固定</vxe-button>
</template>
</vxe-toolbar>
<vxe-table
border
ref="xTable2"
height="300"
highlight-hover-row
show-overflow
:data="tableData">
<vxe-table-column type="seq" width="60" :fixed="colFixeds.col0"></vxe-table-column>
<vxe-table-column field="name" title="Name" width="300" :fixed="colFixeds.col1"></vxe-table-column>
<vxe-table-column field="role" title="Role" width="300"></vxe-table-column>
<vxe-table-column field="sex" title="Sex" width="300"></vxe-table-column>
<vxe-table-column field="date" title="Date" width="300" :fixed="colFixeds.col4"></vxe-table-column>
<vxe-table-column title="操作" width="200" :fixed="colFixeds.col5">
<template>
<vxe-button status="primary">按钮1</vxe-button>
<vxe-button>按钮2</vxe-button>
</template>
</vxe-table-column>
</vxe-table>
`,
`
export default {
data () {
return {
colFixeds: {
col0: '',
col1: '',
col2: '',
col3: ''
},
tableData: []
}
},
created () {
this.tableData = window.MOCK_DATA_LIST.slice(0, 20)
},
methods: {
toggleFixedColumn (index, type) {
const xTable = this.$refs.xTable2
const column = xTable.getColumns(index)
column.fixed = column.fixed ? null : type
// 刷新列
xTable.refreshColumn()
}
}
}
`,
`
<vxe-table
border
height="400"
:data="tableData">
<vxe-table-column title="基本信息" fixed="left">
<vxe-table-column type="seq" width="60" fixed="left"></vxe-table-column>
<vxe-table-column field="name" title="Name" fixed="left" width="180"></vxe-table-column>
</vxe-table-column>
<vxe-table-column title="更多信息">
<vxe-table-column field="role" title="Role" width="300"></vxe-table-column>
<vxe-table-column field="sex" title="Sex" width="200"></vxe-table-column>
<vxe-table-column title="详细信息">
<vxe-table-column field="sex" title="Sex" width="200"></vxe-table-column>
<vxe-table-column field="num" title="Num" width="200"></vxe-table-column>
</vxe-table-column>
</vxe-table-column>
<vxe-table-column title="额外信息" fixed="right">
<vxe-table-column field="date3" title="Date" fixed="right" width="140"></vxe-table-column>
<vxe-table-column field="address" title="Address" fixed="right" width="200" show-overflow></vxe-table-column>
</vxe-table-column>
</vxe-table>
`,
`
export default {
data () {
return {
tableData: []
}
},
created () {
this.tableData = window.MOCK_DATA_LIST.slice(0, 20)
}
}
`
]
}
},
created () {
this.tableData = window.MOCK_DATA_LIST.slice(0, 20)
},
mounted () {
Array.from(this.$el.querySelectorAll('pre code')).forEach((block) => {
hljs.highlightBlock(block)
})
},
methods: {
toggleFixedColumn (index, type) {
const xTable = this.$refs.xTable2
const column = xTable.getColumns(index)
column.fixed = column.fixed ? null : type
// 刷新列
xTable.refreshColumn()
}
}
}
</script>