message.vue 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. <template>
  2. <v-app :full-height="false">
  3. <v-snackbar
  4. v-if="color === 'point'"
  5. style="padding-top: 40vh;"
  6. timeout="-1"
  7. location="top"
  8. color="#f9eddce3"
  9. :variant="variant || 'flat'"
  10. v-model="snackbar"
  11. >
  12. <div class="d-flex align-end">
  13. <span style="color: darkorange; font-size: 48px;" class="mdi mdi-database-check-outline ml-5 mr-2"></span>
  14. <div style="color: darkorange;" class="mb-3">{{message}}</div>
  15. </div>
  16. <template v-slot:actions>
  17. <span style="color: darkorange; font-size: 22px;" class="mdi mdi-close-circle-outline mr-5" @click="snackbar = false"></span>
  18. </template>
  19. </v-snackbar>
  20. <v-snackbar
  21. v-else
  22. style="position: fixed; top: 58%; transform: translateY(-50%)"
  23. timeout="-1"
  24. location="top"
  25. :absolute="true"
  26. :variant="variant || 'flat'"
  27. :color="color"
  28. v-model="snackbar"
  29. >
  30. <div class="mx-3 my-2" style="font-size: 20px; color: #fff;">{{message}}</div>
  31. <template v-slot:actions>
  32. <v-btn
  33. color="white"
  34. variant="text"
  35. size="large"
  36. class="mr-1"
  37. @click="snackbar = false"
  38. >
  39. 关闭
  40. </v-btn>
  41. </template>
  42. </v-snackbar>
  43. </v-app>
  44. </template>
  45. <script setup>
  46. import { ref } from 'vue'
  47. defineProps({
  48. variant: String,
  49. color: String,
  50. message: String
  51. })
  52. defineOptions({ name: 'snackbar-message' })
  53. const snackbar = ref(true)
  54. </script>
  55. <style scoped>
  56. </style>