25 lines
581 B
Vue
25 lines
581 B
Vue
<script setup lang="ts">
|
|||
|
|
import { watch } from 'vue'
|
||
|
|
import { ElMessage } from 'element-plus'
|
||
|
|
import type { ApiErrorDetails } from '@/shared/api/http'
|
||
|
|
|
||
|
|
const props = withDefaults(defineProps<{
|
||
|
|
details?: ApiErrorDetails | null
|
||
|
|
message?: string | null
|
||
|
|
}>(), {
|
||
|
|
details: null,
|
||
|
|
message: null,
|
||
|
|
})
|
||
|
|
|
||
|
|
watch(
|
||
|
|
() => props.details?.message || props.message || '',
|
||
|
|
(message, previousMessage) => {
|
||
|
|
if (!message || message === previousMessage) return
|
||
|
|
ElMessage.error({ message, showClose: true, duration: 4500 })
|
||
|
|
},
|
||
|
|
{ immediate: true },
|
||
|
|
)
|
||
|
|
</script>
|
||
|
|
|
||
|
|
<template></template>
|