From 26eee3c169f4fad444976bcc66235de2710d0ab3 Mon Sep 17 00:00:00 2001 From: JiangQiming <291854119@qq.com> Date: Fri, 10 Mar 2023 16:25:38 +0800 Subject: [PATCH] fix: bug#10242 #10245 --- .../Detail/components/VariableDefinitions.vue | 44 +++++++++++++--- src/views/notice/Template/Detail/index.vue | 51 +++++++++++++------ src/views/notice/Template/types.d.ts | 1 + src/views/notice/const.ts | 3 +- 4 files changed, 76 insertions(+), 23 deletions(-) diff --git a/src/views/notice/Template/Detail/components/VariableDefinitions.vue b/src/views/notice/Template/Detail/components/VariableDefinitions.vue index 3c18e1bd..1da86a23 100644 --- a/src/views/notice/Template/Detail/components/VariableDefinitions.vue +++ b/src/views/notice/Template/Detail/components/VariableDefinitions.vue @@ -11,10 +11,26 @@ {{ record[column.dataIndex] }} - + { }; - + diff --git a/src/views/notice/Template/Detail/index.vue b/src/views/notice/Template/Detail/index.vue index a0cb181a..36cb7882 100644 --- a/src/views/notice/Template/Detail/index.vue +++ b/src/views/notice/Template/Detail/index.vue @@ -526,6 +526,7 @@ @@ -840,7 +840,8 @@ const resetPublicFiles = () => { formData.value.template.templateType = 'tts'; formData.value.template.templateCode = ''; formData.value.template.ttsCode = ''; - formData.value.template.message = ''; + // formData.value.template.message = ''; + formData.value.template.ttsmessage = ''; formData.value.template.playTimes = 1; formData.value.template.calledShowNumbers = ''; formData.value.template.calledNumber = ''; @@ -910,26 +911,29 @@ const formRules = ref({ // 阿里云语音 'template.templateType': [{ required: true, message: '请选择类型' }], 'template.templateCode': [{ required: true, message: '请输入模板ID' }], + 'template.calledShowNumbers': [ + { + trigger: 'change', + validator(_rule: Rule, value: string) { + if (!value) return Promise.resolve(); + if (!phoneRegEx(value)) return Promise.reject('请输入有效号码'); + return Promise.resolve(); + }, + }, + ], // 短信 'template.code': [{ required: true, message: '请选择模板' }], 'template.signName': [{ required: true, message: '请输入签名' }], // webhook description: [{ max: 200, message: '最多可输入200个字符' }], 'template.message': [ - { required: true, message: '请输入' }, + { + required: true, + message: '请输入', + }, { max: 500, message: '最多可输入500个字符' }, ], - 'template.calledShowNumbers': [ - { - trigger: 'blur', - validator(_rule: Rule, value: string) { - if (!phoneRegEx(value)) { - return Promise.reject('请输入有效号码'); - } - return Promise.resolve(); - }, - }, - ], + 'template.ttsmessage': [{ max: 500, message: '最多可输入500个字符' }], }); const { resetFields, validate, validateInfos, clearValidate } = useForm( @@ -1033,6 +1037,7 @@ const variableReg = () => { * 钉钉机器人 消息类型选择改变 */ const handleMessageTypeChange = () => { + if (formData.value.type !== 'dingTalk') return; delete formData.value.template.markdown; delete formData.value.template.link; delete formData.value.template.text; @@ -1159,6 +1164,13 @@ const getSignsList = async () => { */ const btnLoading = ref(false); const handleSubmit = () => { + // 变量列表存在, 且存在空值 + if ( + formData.value.variableDefinitions.length && + formData.value.variableDefinitions.some((s: any) => !s.name) + ) + return; + // 邮件没有配置字段 if (formData.value.type === 'email') delete formData.value.configId; if (formData.value.template.messageType === 'markdown') delete formData.value.template.link; @@ -1169,9 +1181,16 @@ const handleSubmit = () => { setTimeout(() => { validate() .then(async () => { - if (formData.value.provider === 'ttsCode') + if (formData.value.provider === 'aliyun') { formData.value.template.ttsCode = formData.value.template.templateCode; + // 语音message字段与其他类型的message字段重名, 但语音不需要必填验证 + // 取别名ttsmessage, 验证通过之后, 赋值回message字段, 并删除别名字段 + formData.value.template.message = + formData.value.template.ttsmessage; + delete formData.value.template.ttsmessage; + } + btnLoading.value = true; let res; if (!formData.value.id) { diff --git a/src/views/notice/Template/types.d.ts b/src/views/notice/Template/types.d.ts index 23e9ca57..33dce027 100644 --- a/src/views/notice/Template/types.d.ts +++ b/src/views/notice/Template/types.d.ts @@ -60,6 +60,7 @@ export type TemplateFormData = { templateCode?: string; ttsCode?: string; // message?: string; + ttsmessage?: string; playTimes?: number; calledShowNumbers?: string; calledNumber?: string; diff --git a/src/views/notice/const.ts b/src/views/notice/const.ts index 39c36df7..292eae2b 100644 --- a/src/views/notice/const.ts +++ b/src/views/notice/const.ts @@ -189,7 +189,8 @@ export const TEMPLATE_FIELD_MAP = { templateType: 'tts', templateCode: '', ttsCode: '', - message: '', + // message: '', + ttsmessage: '', playTimes: 1, calledShowNumbers: '', calledNumber: '',