You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
80 lines
2.1 KiB
80 lines
2.1 KiB
<template>
|
|
<div>
|
|
<el-button v-if="isVisiableEdit" v-permission="permission.edit" type="text" :loading="crud.status.cu === 2" :disabled="disabledEdit" size="mini" icon="el-icon-edit" @click="crud.toEdit(data)">修改</el-button>
|
|
<el-popover v-model="pop" v-permission="permission.del" placement="top" width="180" trigger="manual" @show="onPopoverShow" @hide="onPopoverHide">
|
|
<p>{{ msg }}</p>
|
|
<div style="text-align: right; margin: 0">
|
|
<el-button size="mini" type="text" @click="doCancel">取消</el-button>
|
|
<el-button :loading="crud.dataStatus[crud.getDataId(data)].delete === 2" type="primary" size="mini" @click="crud.doDelete(data)">确定</el-button>
|
|
</div>
|
|
<el-button v-if="isVisiableDel" slot="reference" type="text" :disabled="disabledDle" icon="el-icon-delete" size="mini" @click="toDelete">删除</el-button>
|
|
</el-popover>
|
|
|
|
</div>
|
|
</template>
|
|
<script>
|
|
import CRUD, { crud } from '@crud/crud'
|
|
export default {
|
|
mixins: [crud()],
|
|
props: {
|
|
data: {
|
|
type: Object,
|
|
required: true
|
|
},
|
|
permission: {
|
|
type: Object,
|
|
required: true
|
|
},
|
|
disabledEdit: {
|
|
type: Boolean,
|
|
default: false
|
|
},
|
|
isVisiableEdit: {
|
|
type: Boolean,
|
|
default: true
|
|
},
|
|
disabledDle: {
|
|
type: Boolean,
|
|
default: false
|
|
},
|
|
isVisiableDel: {
|
|
type: Boolean,
|
|
default: true
|
|
},
|
|
msg: {
|
|
type: String,
|
|
default: '确定删除本条数据吗?'
|
|
}
|
|
},
|
|
data() {
|
|
return {
|
|
pop: false
|
|
}
|
|
},
|
|
methods: {
|
|
doCancel() {
|
|
this.pop = false
|
|
this.crud.cancelDelete(this.data)
|
|
},
|
|
toDelete() {
|
|
this.pop = true
|
|
},
|
|
[CRUD.HOOK.afterDelete](crud, data) {
|
|
if (data === this.data) {
|
|
this.pop = false
|
|
}
|
|
},
|
|
onPopoverShow() {
|
|
setTimeout(() => {
|
|
document.addEventListener('click', this.handleDocumentClick)
|
|
}, 0)
|
|
},
|
|
onPopoverHide() {
|
|
document.removeEventListener('click', this.handleDocumentClick)
|
|
},
|
|
handleDocumentClick(event) {
|
|
this.pop = false
|
|
}
|
|
}
|
|
}
|
|
</script>
|
|
|