diff --git a/src/views/iot/alert/config/AlertConfigForm.vue b/src/views/iot/alert/config/AlertConfigForm.vue
index b1381954f..cd4532b89 100644
--- a/src/views/iot/alert/config/AlertConfigForm.vue
+++ b/src/views/iot/alert/config/AlertConfigForm.vue
@@ -79,61 +79,25 @@
-
-
-
+
-
-
-
+
-
-
-
+
@@ -147,15 +111,11 @@ import { AlertConfigApi, AlertConfig } from '@/api/iot/alert/config'
import { DICT_TYPE, getIntDictOptions } from '@/utils/dict'
import { CommonStatusEnum } from '@/utils/constants'
import { RuleSceneApi } from '@/api/iot/rule/scene'
+import { IotAlertReceiveTypeEnum } from '@/views/iot/utils/constants'
import * as UserApi from '@/api/system/user'
-import * as MailTemplateApi from '@/api/system/mail/template'
-import * as SmsTemplateApi from '@/api/system/sms/smsTemplate'
-import * as NotifyTemplateApi from '@/api/system/notify/template'
-
-/** 告警接收类型,与 IotAlertReceiveTypeEnum 保持一致 */
-const RECEIVE_TYPE_SMS = 1
-const RECEIVE_TYPE_MAIL = 2
-const RECEIVE_TYPE_NOTIFY = 3
+import MailTemplateSelect from '@/views/system/mail/template/components/MailTemplateSelect.vue'
+import NotifyTemplateSelect from '@/views/system/notify/template/components/NotifyTemplateSelect.vue'
+import SmsTemplateSelect from '@/views/system/sms/template/components/SmsTemplateSelect.vue'
/** IoT 告警配置 表单 */
defineOptions({ name: 'AlertConfigForm' })
@@ -205,26 +165,23 @@ const formRef = ref() // 表单 Ref
// 选项数据
const sceneRuleOptions = ref([])
const userOptions = ref([])
-const smsTemplateOptions = ref([])
-const mailTemplateOptions = ref([])
-const notifyTemplateOptions = ref([])
/** 按接收类型同步模板校验规则 */
const syncTemplateFormRules = () => {
const types = formData.value.receiveTypes || []
- if (types.includes(RECEIVE_TYPE_SMS)) {
+ if (types.includes(IotAlertReceiveTypeEnum.SMS)) {
formRules.smsTemplateCode = [{ required: true, message: '短信模板不能为空', trigger: 'change' }]
} else {
delete formRules.smsTemplateCode
}
- if (types.includes(RECEIVE_TYPE_MAIL)) {
+ if (types.includes(IotAlertReceiveTypeEnum.MAIL)) {
formRules.mailTemplateCode = [
{ required: true, message: '邮件模板不能为空', trigger: 'change' }
]
} else {
delete formRules.mailTemplateCode
}
- if (types.includes(RECEIVE_TYPE_NOTIFY)) {
+ if (types.includes(IotAlertReceiveTypeEnum.NOTIFY)) {
formRules.notifyTemplateCode = [
{ required: true, message: '站内信模板不能为空', trigger: 'change' }
]
@@ -236,13 +193,13 @@ const syncTemplateFormRules = () => {
watch(
() => formData.value.receiveTypes,
(types) => {
- if (!types?.includes(RECEIVE_TYPE_SMS)) {
+ if (!types?.includes(IotAlertReceiveTypeEnum.SMS)) {
formData.value.smsTemplateCode = undefined
}
- if (!types?.includes(RECEIVE_TYPE_MAIL)) {
+ if (!types?.includes(IotAlertReceiveTypeEnum.MAIL)) {
formData.value.mailTemplateCode = undefined
}
- if (!types?.includes(RECEIVE_TYPE_NOTIFY)) {
+ if (!types?.includes(IotAlertReceiveTypeEnum.NOTIFY)) {
formData.value.notifyTemplateCode = undefined
}
syncTemplateFormRules()
@@ -276,18 +233,12 @@ defineExpose({ open }) // 提供 open 方法,用于打开弹窗
/** 加载选项数据 */
const loadOptions = async () => {
try {
- const [scenes, users, smsTemplates, mailTemplates, notifyTemplates] = await Promise.all([
+ const [scenes, users] = await Promise.all([
RuleSceneApi.getSimpleRuleSceneList(),
- UserApi.getSimpleUserList(),
- SmsTemplateApi.getSimpleSmsTemplateList(),
- MailTemplateApi.getSimpleMailTemplateList(),
- NotifyTemplateApi.getSimpleNotifyTemplateList()
+ UserApi.getSimpleUserList()
])
sceneRuleOptions.value = scenes
userOptions.value = users
- smsTemplateOptions.value = smsTemplates
- mailTemplateOptions.value = mailTemplates
- notifyTemplateOptions.value = notifyTemplates
} catch (error) {
console.error('加载选项数据失败:', error)
}
diff --git a/src/views/iot/utils/constants.ts b/src/views/iot/utils/constants.ts
index 13ec352ea..988f97fca 100644
--- a/src/views/iot/utils/constants.ts
+++ b/src/views/iot/utils/constants.ts
@@ -25,6 +25,13 @@ export const IoTThingModelTypeEnum = {
EVENT: 3 // 事件
} as const
+/** IoT 告警接收方式枚举,与后端 IotAlertReceiveTypeEnum 保持一致 */
+export const IotAlertReceiveTypeEnum = {
+ SMS: 1, // 短信
+ MAIL: 2, // 邮箱
+ NOTIFY: 3 // 站内信
+} as const
+
/** IoT 设备消息的方法枚举 */
export const IotDeviceMessageMethodEnum = {
// ========== 设备状态 ==========
diff --git a/src/views/system/mail/template/components/MailTemplateSelect.vue b/src/views/system/mail/template/components/MailTemplateSelect.vue
new file mode 100644
index 000000000..42510d6f6
--- /dev/null
+++ b/src/views/system/mail/template/components/MailTemplateSelect.vue
@@ -0,0 +1,68 @@
+
+
+
+
+
+
+
diff --git a/src/views/system/notify/template/components/NotifyTemplateSelect.vue b/src/views/system/notify/template/components/NotifyTemplateSelect.vue
new file mode 100644
index 000000000..0d5faf577
--- /dev/null
+++ b/src/views/system/notify/template/components/NotifyTemplateSelect.vue
@@ -0,0 +1,68 @@
+
+
+
+
+
+
+
diff --git a/src/views/system/sms/template/components/SmsTemplateSelect.vue b/src/views/system/sms/template/components/SmsTemplateSelect.vue
new file mode 100644
index 000000000..a4c32212c
--- /dev/null
+++ b/src/views/system/sms/template/components/SmsTemplateSelect.vue
@@ -0,0 +1,68 @@
+
+
+
+
+
+
+