Merge pull request 'bugfix/custom-table' (#8) from bugfix/custom-table into master

This commit is contained in:
xiaoguangbin 2023-07-13 10:40:20 +08:00
commit ae5fc57778

View File

@ -19,7 +19,6 @@
</a-table> </a-table>
</template> </template>
<script> <script>
import {cloneDeep} from 'lodash'
export default { export default {
props: { props: {
list: { list: {
@ -47,32 +46,46 @@ export default {
selectedRowKeys: { selectedRowKeys: {
type: Array type: Array
}, },
selectionRows: {
type: Array
},
canSelect: { canSelect: {
type: Boolean, type: Boolean,
default: true default: true
},
multiple: {
type: Boolean,
default: false
} }
}, },
data() { data() {
return { return {
innerSelectedRowKeys: cloneDeep(this.selectedRowKeys) || [] innerSelectedRowKeys: [],
innerSelectedRows: []
} }
}, },
methods: { methods: {
// / // /
customRow(record) { customRow(record) {
const key = record[this.rowKey]
return { return {
class: this.innerSelectedRowKeys.includes(record[this.rowKey]) ? 'ant-table-row-selected' : '', class: this.innerSelectedRowKeys.includes(key) ? 'ant-table-row-selected' : '',
on: { on: {
click: () => { click: () => {
if(!this.canSelect) { if(!this.canSelect) {
return return
} }
if (this.innerSelectedRowKeys.includes(record[this.rowKey])) { if (this.innerSelectedRowKeys.includes(key)) {
this.innerSelectedRowKeys = [] const findIndex = this.innerSelectedRowKeys.findIndex(k => k == key)
this.innerSelectedRowKeys.splice(findIndex, 1)
} else { } else {
this.innerSelectedRowKeys = [record[this.rowKey]] if(this.multiple) {
this.innerSelectedRowKeys.push(key)
}
else {
this.innerSelectedRowKeys = [key]
}
} }
this.$emit('update:selectedRowKeys', this.innerSelectedRowKeys)
} }
} }
} }
@ -82,8 +95,15 @@ export default {
} }
}, },
watch: { watch: {
selectedRowKeys () { selectedRowKeys (val) {
this.innerSelectedRowKeys = cloneDeep(this.selectedRowKeys) this.innerSelectedRowKeys = val
},
innerSelectedRowKeys () {
this.$emit('update:selectedRowKeys', this.innerSelectedRowKeys)
this.innerSelectedRows = this.innerSelectedRowKeys.map((key) => {
return this.list.find(item => item[this.rowKey] === key)
})
this.$emit('update:selectionRows', this.innerSelectedRows)
} }
}, },
computed: { computed: {