Files
vxe-table/examples/views/table/edit/Manual.vue
xuliangzhan 01ec4387af 更新文档
2020-02-07 14:47:27 +08:00

151 lines
5.4 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">设置 <table-api-link prop="edit-config"/>={trigger: 'manual', mode: 'row'} 启用行编辑的功能还可以配合 <table-api-link prop="revertData"/> 函数实现取消就还原数据<br></p>
<vxe-table
ref="xTable"
border
resizable
show-overflow
:data="tableData"
:edit-config="{trigger: 'manual', mode: 'row'}">
<vxe-table-column type="seq" width="60"></vxe-table-column>
<vxe-table-column field="name" title="Name" :edit-render="{name: 'input', attrs: {type: 'text'}}"></vxe-table-column>
<vxe-table-column field="role" title="Role" :edit-render="{name: 'input', attrs: {type: 'text'}}"></vxe-table-column>
<vxe-table-column field="sex" title="Sex" :edit-render="{name: 'select', options: sexList}"></vxe-table-column>
<vxe-table-column field="num6" title="Number" :edit-render="{name: 'input', attrs: {type: 'number'}}"></vxe-table-column>
<vxe-table-column field="date12" title="Date" :edit-render="{name: 'input', attrs: {type: 'date'}}"></vxe-table-column>
<vxe-table-column field="address" title="Address" :edit-render="{name: 'input', attrs: {type: 'text'}}"></vxe-table-column>
<vxe-table-column title="操作">
<template v-slot="{ row }">
<template v-if="$refs.xTable.isActiveByRow(row)">
<vxe-button @click="saveRowEvent(row)">保存</vxe-button>
<vxe-button @click="cancelRowEvent(row)">取消</vxe-button>
</template>
<template v-else>
<vxe-button @click="editRowEvent(row)">编辑</vxe-button>
</template>
</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>
</div>
</template>
<script>
import XEAjax from 'xe-ajax'
import hljs from 'highlight.js'
export default {
data () {
return {
tableData: [],
sexList: [],
demoCodes: [
`
<vxe-table
ref="xTable"
border
resizable
show-overflow
:data="tableData"
:edit-config="{trigger: 'manual', mode: 'row'}">
<vxe-table-column type="seq" width="60"></vxe-table-column>
<vxe-table-column field="role" title="Role" :edit-render="{name: 'input', attrs: {type: 'text'}}"></vxe-table-column>
<vxe-table-column field="name" title="Name" :edit-render="{name: 'input', attrs: {type: 'text'}}"></vxe-table-column>
<vxe-table-column field="sex" title="Sex" :edit-render="{name: 'select', options: sexList}"></vxe-table-column>
<vxe-table-column field="num6" title="Number" :edit-render="{name: 'input', attrs: {type: 'number'}}"></vxe-table-column>
<vxe-table-column field="date12" title="Date" :edit-render="{name: 'input', attrs: {type: 'date'}}"></vxe-table-column>
<vxe-table-column field="address" title="Address" :edit-render="{name: 'input', attrs: {type: 'text'}}"></vxe-table-column>
<vxe-table-column title="操作">
<template v-slot="{ row }">
<template v-if="$refs.xTable.isActiveByRow(row)">
<vxe-button @click="saveRowEvent(row)">保存</vxe-button>
<vxe-button @click="cancelRowEvent(row)">取消</vxe-button>
</template>
<template v-else>
<vxe-button @click="editRowEvent(row)">编辑</vxe-button>
</template>
</template>
</vxe-table-column>
</vxe-table>
`,
`
export default {
data () {
return {
tableData: [],
sexList: []
}
},
created () {
this.tableData = window.MOCK_DATA_LIST.slice(0, 6)
this.findSexList()
},
methods: {
findSexList () {
return XEAjax.get('/api/conf/sex/list').then(data => {
this.sexList = data
})
},
editRowEvent (row) {
this.$refs.xTable.setActiveRow(row)
},
saveRowEvent (row) {
this.$refs.xTable.clearActived().then(() => {
this.$XModal.alert('success')
})
},
cancelRowEvent (row) {
const xTable = this.$refs.xTable
xTable.clearActived().then(() => {
// 还原行数据
xTable.revertData(row)
})
}
}
}
`
]
}
},
created () {
this.tableData = window.MOCK_DATA_LIST.slice(0, 6)
this.findSexList()
},
mounted () {
Array.from(this.$el.querySelectorAll('pre code')).forEach((block) => {
hljs.highlightBlock(block)
})
},
methods: {
findSexList () {
return XEAjax.get('/api/conf/sex/list').then(data => {
this.sexList = data
})
},
editRowEvent (row) {
this.$refs.xTable.setActiveRow(row)
},
saveRowEvent (row) {
this.$refs.xTable.clearActived().then(() => {
this.$XModal.alert('success')
})
},
cancelRowEvent (row) {
const xTable = this.$refs.xTable
xTable.clearActived().then(() => {
// 还原行数据
xTable.revertData(row)
})
}
}
}
</script>