Delete.vue 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. <template>
  2. <main>
  3. <v-btn icon @click="alertDeleteItem()">
  4. <v-icon>mdi-delete</v-icon>
  5. </v-btn>
  6. <lazy-LayoutDialog
  7. :show="showDialog"
  8. >
  9. <template v-slot:dialogText>
  10. <v-card-title class="text-h5 grey lighten-2">
  11. {{ $t('attention') }}
  12. </v-card-title>
  13. <v-card-text>
  14. <br>
  15. <p>{{ $t('confirm_to_delete') }}</p>
  16. </v-card-text>
  17. </template>
  18. <template v-slot:dialogBtn>
  19. <v-btn class="mr-4 submitBtn ot_grey ot_white--text" @click="closeDialog">
  20. {{ $t('cancel') }}
  21. </v-btn>
  22. <v-btn class="mr-4 submitBtn ot_danger ot_white--text" @click="deleteItem">
  23. {{ $t('delete') }}
  24. </v-btn>
  25. </template>
  26. </lazy-LayoutDialog>
  27. </main>
  28. </template>
  29. <script lang="ts">
  30. import {defineComponent, useContext, ref, Ref} from '@nuxtjs/composition-api'
  31. import {DataDeleterArgs} from "~/types/interfaces";
  32. import {TYPE_ALERT} from "~/types/enums";
  33. import {alert} from "~/types/interfaces";
  34. export default defineComponent({
  35. props: {
  36. deleteArgs: {
  37. type: Object as () => DataDeleterArgs,
  38. required: true
  39. }
  40. },
  41. setup(props){
  42. const {$dataDeleter, store, app: {i18n}} = useContext()
  43. const showDialog:Ref<boolean> = ref(false)
  44. const deleteItem = async () =>{
  45. try{
  46. await $dataDeleter.invoke(props.deleteArgs)
  47. const alert:alert = {
  48. type: TYPE_ALERT.SUCCESS,
  49. message: i18n.t('deleteSuccess') as string
  50. }
  51. store.commit('page/setAlert', alert)
  52. }catch (error) {
  53. const alert:alert = {
  54. type: TYPE_ALERT.ALERT,
  55. message: error.message
  56. }
  57. store.commit('page/setAlert', alert)
  58. }
  59. showDialog.value = false
  60. }
  61. return {
  62. alertDeleteItem : () => showDialog.value = true,
  63. closeDialog : () => showDialog.value = false,
  64. deleteItem,
  65. showDialog
  66. }
  67. }
  68. })
  69. </script>
  70. <style scoped>
  71. </style>