feat: Add duplicate name judgment for notification

- 增加通知渠道的重名判断
This commit is contained in:
Aqr-K
2024-09-27 00:00:11 +08:00
parent 6301cb287e
commit d22f1c97ae
2 changed files with 27 additions and 2 deletions

View File

@@ -6,18 +6,28 @@ import vocechat_image from '@images/logos/vocechat.png'
import synologychat_image from '@images/logos/synologychat.png'
import slack_image from '@images/logos/slack.webp'
import chrome_image from '@images/logos/chrome.png'
import { useToast } from 'vue-toast-notification'
// 定义输入
const props = defineProps({
// 单个通知
notification: {
type: Object as PropType<NotificationConf>,
required: true,
},
// 所有通知
notifications: {
type: Array as PropType<NotificationConf[]>,
required: true,
},
})
// 定义触发的自定义事件
const emit = defineEmits(['close', 'change', 'done'])
// 提示框
const $toast = useToast()
// 通知详情弹窗
const notificationInfoDialog = ref(false)
@@ -63,6 +73,16 @@ function openNotificationInfoDialog() {
// 保存详情数据
function saveNotificationInfo() {
// 为空不保存,跳出警告框
if (!notificationName.value) {
$toast.error('名称不能为空,请输入后再确定')
return
}
// 重名判断
if (props.notifications.some(item => item.name === notificationName.value && item!== props.notification)) {
$toast.error(`${notificationName.value}】已存在,请替换为其他名称`)
return
}
notificationInfoDialog.value = false
notificationInfo.value.name = notificationName.value
emit('change', notificationInfo.value)
@@ -109,7 +129,7 @@ function onClose() {
<VImg :src="getIcon" cover class="mt-5 me-7" max-width="3rem" />
</VCardText>
</VCard>
<VDialog v-model="notificationInfoDialog" scrollable max-width="40rem">
<VDialog v-model="notificationInfoDialog" scrollable max-width="40rem" persistent >
<VCard :title="`${props.notification.name} - 配置`" class="rounded-t">
<DialogCloseBtn v-model="notificationInfoDialog" />
<VDivider />

View File

@@ -60,8 +60,12 @@ async function reloadSystem() {
// 添加媒体服务器
function addNotification(notification: string) {
let name = `通知${notifications.value.length + 1}`;
while (notifications.value.some(item => item.name === name)) {
name = `通知${parseInt(name.split('通知')[1]) + 1}`;
}
notifications.value.push({
name: `通知${notifications.value.length + 1}`,
name: name,
type: notification,
enabled: false,
config: {},
@@ -147,6 +151,7 @@ onMounted(() => {
<template #item="{ element }">
<NotificationChannelCard
:notification="element"
:notifications="notifications"
@close="removeNotification(element)"
/>
</template>