This repository has been archived on 2025-09-14. You can view files and clone it, but cannot push or open issues or pull requests.
Files
nezha-nezha-fronted/nezha-fronted/src/components/common/deleteButton.vue

75 lines
2.1 KiB
Vue
Raw Normal View History

<template>
<div :class="['delete-button',(deleteObjs.length<1?'':'delete-button-light')]">
<button v-if="this.type === 'button'" :id="id" :class="{'nz-btn-disabled' : deleteObjs.length<1}" class="top-tool-btn top-tool-btn--delete" @click="batchDelete">
<span><i class="nz-icon nz-icon-delete" ></i></span>
</button>
<div v-if="this.type === 'link'" :id="id" :class="{'nz-btn-disabled' : deleteObjs.length<1}" class="top-tool-btn top-tool-btn--delete" @click="batchDelete">
<span><i class="nz-icon nz-icon-delete" ></i>{{title}}</span>
</div>
</div>
</template>
<script>
2021-03-19 18:52:19 +08:00
export default {
name: 'deleteButton',
props: {
filterFunction: Function,
deleteObjs: Array,
api: String,
clickFunction: Function,
id: String,
type: {
type: String,
default: 'button'
},
title: {
type: String
}
2021-03-19 18:52:19 +08:00
},
methods: {
batchDelete: function () {
if (this.deleteObjs.length < 1) return
if (this.clickFunction) {
this.clickFunction()
return
}
this.$confirm(this.$t('tip.confirmBatchDelete', [this.deleteObjs.length]), {
confirmButtonText: this.$t('tip.yes'),
cancelButtonText: this.$t('tip.no'),
type: 'warning'
}).then(() => {
this.$emit('before')
const params = this.filterParam()
this.$delete(this.api + params).then(response => {
if (response.code === 200) {
this.$message({ duration: 2000, type: 'success', message: this.$t('tip.deleteSuccess') })
this.$emit('after')
} else {
this.$message.error(response.msg)
}
})
})
},
2021-03-19 18:52:19 +08:00
filterParam: function () {
let filterFunction = this.filterFunction
if (!filterFunction) {
filterFunction = (arr) => { return '?ids=' + arr.map(t => t.id).join(',') }
}
2021-03-19 18:52:19 +08:00
return filterFunction(this.deleteObjs)
}
}
2021-03-19 18:52:19 +08:00
}
</script>
<style scoped>
.delete-button{
2021-04-13 20:33:12 +08:00
margin-right: 10px;
2020-10-30 15:16:25 +08:00
opacity: 0.7;
border-radius: 2px;
}
2020-10-30 15:16:25 +08:00
.delete-button-light.delete-button{
border-radius: 2px;
}
</style>