iview/src/components/table/table-tr.vue

47 lines
1.7 KiB
Vue
Raw Normal View History

<template>
2019-03-04 16:34:32 +08:00
<tr :class="rowClasses(row._index)" :draggable="draggable" @dragstart="onDrag($event,row._index)" @drop="onDrop($event,row._index)" @dragover="allowDrop($event)" v-if="draggable"><slot></slot></tr>
2020-09-03 15:53:31 +08:00
<tr :class="rowClasses(row._index)" :draggable="false" v-else><slot></slot></tr>
</template>
<script>
export default {
props: {
row: Object,
2018-10-29 14:46:27 +08:00
prefixCls: String,
2020-09-03 15:53:31 +08:00
draggable: Boolean,
isChildren: Boolean // 开启后,会认为是子节点,相关逻辑通过 rowKey 查找
},
computed: {
objData () {
return this.$parent.objData;
}
},
methods: {
2019-03-20 08:35:00 +08:00
onDrag (e,index) {
e.dataTransfer.setData('index',index);
2018-10-29 14:46:27 +08:00
},
2019-03-04 16:34:32 +08:00
onDrop (e,index) {
2019-03-20 08:35:00 +08:00
const dragIndex = e.dataTransfer.getData('index');
2018-10-29 14:46:27 +08:00
this.$parent.$parent.dragAndDrop(dragIndex,index);
e.preventDefault();
},
2019-03-04 16:34:32 +08:00
allowDrop (e) {
2018-10-29 14:46:27 +08:00
e.preventDefault();
},
rowClasses (_index) {
2020-09-03 15:53:31 +08:00
const objData = this.isChildren ? this.$parent.$parent.getDataByRowKey(this.row._rowKey) : this.objData[_index];
return [
`${this.prefixCls}-row`,
this.rowClsName(_index),
{
2020-09-03 15:53:31 +08:00
[`${this.prefixCls}-row-highlight`]: objData && objData._isHighlight,
[`${this.prefixCls}-row-hover`]: objData && objData._isHover
}
];
},
rowClsName (_index) {
return this.$parent.$parent.rowClassName(this.objData[_index], _index);
},
}
};
2019-03-04 16:34:32 +08:00
</script>