Files
vxe-table/examples/views/table/tree/Insert.vue
2021-08-29 17:07:09 +08:00

198 lines
7.3 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">
插入数据简单的实现示例<br>
<span class="red">内置的 CRUD 管理器是不支持插入子节点的如果要往子节点插入或删除节点数据可以直接操作数据源</span>
</p>
<vxe-toolbar custom>
<template #buttons>
<vxe-button @click="insertEvent()">插入第一行</vxe-button>
<vxe-button @click="getSelectionEvent">获取选中</vxe-button>
<vxe-button @click="saveEvent">保存</vxe-button>
</template>
</vxe-toolbar>
<vxe-table
resizable
show-overflow
keep-source
ref="xTree"
class="my_treetable_insert"
:tree-config="treeConfig"
:edit-config="{trigger: 'click', mode: 'row', showStatus: true}"
:data="tableData">
<vxe-column type="checkbox" width="120" tree-node></vxe-column>
<vxe-column field="name" title="Name" :edit-render="{name: 'input'}"></vxe-column>
<vxe-column field="size" title="Size" :edit-render="{name: 'input'}"></vxe-column>
<vxe-column field="type" title="Type" :edit-render="{name: 'input'}"></vxe-column>
<vxe-column field="date" title="Date" :edit-render="{name: '$input', props: {type: 'date'}}"></vxe-column>
</vxe-table>
<p class="demo-code">{{ $t('app.body.button.showCode') }}</p>
<pre>
<pre-code class="xml">{{ demoCodes[0] }}</pre-code>
<pre-code class="javascript">{{ demoCodes[1] }}</pre-code>
<pre-code class="css">{{ demoCodes[2] }}</pre-code>
</pre>
</div>
</template>
<script>
import XEUtils from 'xe-utils'
export default {
data () {
return {
tableData: [
{ id: 1000, name: 'vxe-table 从入门到放弃1', type: 'mp3', size: 1024, date: '2020-08-01' },
{
id: 1005,
name: 'Test2',
type: 'mp4',
size: null,
date: '2021-04-01',
children: [
{ id: 24300, name: 'Test3', type: 'avi', size: 1024, date: '2020-03-01' },
{ id: 20045, name: 'vxe-table 从入门到放弃4', type: 'html', size: 600, date: '2021-04-01' },
{
id: 10053,
name: 'vxe-table 从入门到放弃96',
type: 'avi',
size: null,
date: '2021-04-01',
children: [
{ id: 24330, name: 'vxe-table 从入门到放弃5', type: 'txt', size: 25, date: '2021-10-01' },
{ id: 21011, name: 'Test6', type: 'pdf', size: 512, date: '2020-01-01' },
{ id: 22200, name: 'Test7', type: 'js', size: 1024, date: '2021-06-01' }
]
}
]
},
{ id: 23666, name: 'Test8', type: 'xlsx', size: 2048, date: '2020-11-01' },
{ id: 24555, name: 'vxe-table 从入门到放弃9', type: 'avi', size: 224, date: '2020-10-01' }
],
treeConfig: {
children: 'children'
},
demoCodes: [
`
<vxe-toolbar custom>
<template #buttons>
<vxe-button @click="insertEvent()">插入第一行</vxe-button>
<vxe-button @click="getSelectionEvent">获取选中</vxe-button>
<vxe-button @click="saveEvent">保存</vxe-button>
</template>
</vxe-toolbar>
<vxe-table
resizable
show-overflow
keep-source
ref="xTree"
class="my_treetable_insert"
:tree-config="treeConfig"
:edit-config="{trigger: 'click', mode: 'row', showStatus: true}"
:data="tableData">
<vxe-column type="checkbox" width="120" tree-node></vxe-column>
<vxe-column field="name" title="Name" :edit-render="{name: 'input'}"></vxe-column>
<vxe-column field="size" title="Size" :edit-render="{name: 'input'}"></vxe-column>
<vxe-column field="type" title="Type" :edit-render="{name: 'input'}"></vxe-column>
<vxe-column field="date" title="Date" :edit-render="{name: '$input', props: {type: 'date'}}"></vxe-column>
</vxe-table>
`,
`
import XEUtils from 'xe-utils'
export default {
data () {
return {
tableData: [
{ id: 1000, name: 'vxe-table 从入门到放弃1', type: 'mp3', size: 1024, date: '2020-08-01' },
{
id: 1005,
name: 'Test2',
type: 'mp4',
size: null,
date: '2021-04-01',
children: [
{ id: 24300, name: 'Test3', type: 'avi', size: 1024, date: '2020-03-01' },
{ id: 20045, name: 'vxe-table 从入门到放弃4', type: 'html', size: 600, date: '2021-04-01' },
{
id: 10053,
name: 'vxe-table 从入门到放弃96',
type: 'avi',
size: null,
date: '2021-04-01',
children: [
{ id: 24330, name: 'vxe-table 从入门到放弃5', type: 'txt', size: 25, date: '2021-10-01' },
{ id: 21011, name: 'Test6', type: 'pdf', size: 512, date: '2020-01-01' },
{ id: 22200, name: 'Test7', type: 'js', size: 1024, date: '2021-06-01' }
]
}
]
},
{ id: 23666, name: 'Test8', type: 'xlsx', size: 2048, date: '2020-11-01' },
{ id: 24555, name: 'vxe-table 从入门到放弃9', type: 'avi', size: 224, date: '2020-10-01' }
],
treeConfig: {
children: 'children'
}
}
},
methods: {
insertEvent () {
const xTree = this.$refs.xTree
const newRow = {
name: '新数据',
date: XEUtils.toDateString(new Date(), 'yyyy-MM-dd')
}
xTree.insert(newRow).then(() => xTree.setActiveRow(newRow))
},
getSelectionEvent () {
const selectRecords = this.$refs.xTree.getCheckboxRecords()
this.$XModal.alert(selectRecords.length)
},
saveEvent () {
const { insertRecords, updateRecords } = this.$refs.xTree.getRecordset()
this.$XModal.alert(\`insertRecords=\${insertRecords.length} updateRecords=\${updateRecords.length}\`)
}
}
}
`,
`
.my_treetable_insert .vxe-body--row.is--new {
background-color: #f1fdf1;
}
`
]
}
},
methods: {
insertEvent () {
const xTree = this.$refs.xTree
const newRow = {
name: '新数据',
date: XEUtils.toDateString(new Date(), 'yyyy-MM-dd')
}
xTree.insert(newRow).then(({ row }) => xTree.setActiveRow(row))
},
getSelectionEvent () {
const selectRecords = this.$refs.xTree.getCheckboxRecords()
this.$XModal.alert(selectRecords.length)
},
saveEvent () {
const { insertRecords, updateRecords } = this.$refs.xTree.getRecordset()
this.$XModal.alert(`insertRecords=${insertRecords.length} updateRecords=${updateRecords.length}`)
}
}
}
</script>
<style lang="scss">
.my_treetable_insert .vxe-body--row.is--new {
background-color: #f1fdf1;
}
</style>