fix: bug#10198

This commit is contained in:
JiangQiming 2023-02-24 14:55:30 +08:00
parent 15c31a449b
commit f3620e5e07
4 changed files with 101 additions and 58 deletions

View File

@ -336,23 +336,9 @@ watch(
route.params.id !== ':id' route.params.id !== ':id'
? formData.value.provider ? formData.value.provider
: msgType.value[0].value; : msgType.value[0].value;
// formData.value.configuration =
// CONFIG_FIELD_MAP[val][formData.value.provider];
// clearValid();
}, },
); );
// watch(
// () => formData.value.provider,
// (val) => {
// // formData.value.configuration =
// // CONFIG_FIELD_MAP[formData.value.type][val];
// // clearValid();
// },
// );
// //
const formRules = ref({ const formRules = ref({
type: [{ required: true, message: '请选择通知方式' }], type: [{ required: true, message: '请选择通知方式' }],
@ -421,12 +407,6 @@ const { resetFields, validate, validateInfos, clearValidate } = useForm(
formRules.value, formRules.value,
); );
const clearValid = () => {
setTimeout(() => {
clearValidate();
}, 200);
};
const getDetail = async () => { const getDetail = async () => {
if (route.params.id === ':id') return; if (route.params.id === ':id') return;
const res = await configApi.detail(route.params.id as string); const res = await configApi.detail(route.params.id as string);
@ -444,7 +424,7 @@ const handleTypeChange = () => {
setTimeout(() => { setTimeout(() => {
formData.value.configuration = formData.value.configuration =
CONFIG_FIELD_MAP[formData.value.type][formData.value.provider]; CONFIG_FIELD_MAP[formData.value.type][formData.value.provider];
// resetPublicFiles(); resetPublicFiles();
}, 0); }, 0);
}; };
@ -454,7 +434,48 @@ const handleTypeChange = () => {
const handleProviderChange = () => { const handleProviderChange = () => {
formData.value.configuration = formData.value.configuration =
CONFIG_FIELD_MAP[formData.value.type][formData.value.provider]; CONFIG_FIELD_MAP[formData.value.type][formData.value.provider];
// resetPublicFiles(); resetPublicFiles();
};
/**
* 重置字段值
*/
const resetPublicFiles = () => {
switch (formData.value.provider) {
case 'dingTalkMessage':
formData.value.configuration.appKey = '';
formData.value.configuration.appSecret = '';
break;
case 'dingTalkRobotWebHook':
formData.value.configuration.url = '';
break;
case 'corpMessage':
formData.value.configuration.corpId = '';
formData.value.configuration.corpSecret = '';
break;
case 'embedded':
formData.value.configuration.host = '';
formData.value.configuration.port = 25;
formData.value.configuration.ssl = false;
formData.value.configuration.sender = '';
formData.value.configuration.username = '';
formData.value.configuration.password = '';
break;
case 'aliyun':
formData.value.configuration.regionId = '';
formData.value.configuration.accessKeyId = '';
formData.value.configuration.secret = '';
break;
case 'aliyunSms':
formData.value.configuration.regionId = '';
formData.value.configuration.accessKeyId = '';
formData.value.configuration.secret = '';
break;
case 'http':
formData.value.configuration.url = undefined;
formData.value.configuration.headers = [];
break;
}
}; };
/** /**

View File

@ -106,7 +106,8 @@
<a-form-item label="收信部门"> <a-form-item label="收信部门">
<ToOrg <ToOrg
v-model:toParty=" v-model:toParty="
formData.template.toParty formData.template
.departmentIdList
" "
:type="formData.type" :type="formData.type"
:config-id="formData.configId" :config-id="formData.configId"
@ -132,7 +133,7 @@
</template> </template>
<ToUser <ToUser
v-model:toUser=" v-model:toUser="
formData.template.toUser formData.template.userIdList
" "
:type="formData.type" :type="formData.type"
:config-id="formData.configId" :config-id="formData.configId"
@ -800,25 +801,56 @@ const formData = ref<TemplateFormData>({
}); });
/** /**
* 重置公用字段值 * 重置字段值
*/ */
const resetPublicFiles = () => { const resetPublicFiles = () => {
if ( switch (formData.value.provider) {
formData.value.provider === 'dingTalkMessage' || case 'dingTalkMessage':
formData.value.type === 'weixin' formData.value.template.agentId = '';
) { formData.value.template.message = '';
formData.value.template.toTag = undefined; formData.value.template.departmentIdList = '';
formData.value.template.toUser = undefined; formData.value.template.userIdList = '';
formData.value.template.agentId = undefined; break;
case 'dingTalkRobotWebHook':
formData.value.template.message = '';
formData.value.template.messageType = 'markdown';
formData.value.template.markdown = { text: '', title: '' };
break;
case 'corpMessage':
formData.value.template.agentId = '';
formData.value.template.message = '';
formData.value.template.toParty = '';
formData.value.template.toUser = '';
formData.value.template.toTag = '';
break;
case 'embedded':
formData.value.template.subject = '';
formData.value.template.message = '';
formData.value.template.text = '';
formData.value.template.sendTo = [];
formData.value.template.attachments = [];
break;
case 'aliyun':
formData.value.template.templateType = 'tts';
formData.value.template.templateCode = '';
formData.value.template.ttsCode = '';
formData.value.template.message = '';
formData.value.template.playTimes = 1;
formData.value.template.calledShowNumbers = '';
formData.value.template.calledNumber = '';
break;
case 'aliyunSms':
formData.value.template.code = '';
formData.value.template.message = '';
formData.value.template.phoneNumber = '';
formData.value.template.signName = '';
break;
case 'http':
formData.value.template.contextAsBody = true;
formData.value.template.body = '';
break;
} }
if (formData.value.type === 'weixin')
formData.value.template.toParty = undefined;
if (formData.value.type === 'email')
formData.value.template.toParty = undefined;
// formData.value.description = '';
formData.value.template.messageType = 'markdown';
formData.value.template.message = '';
formData.value.configId = undefined; formData.value.configId = undefined;
formData.value.variableDefinitions = []; formData.value.variableDefinitions = [];
handleMessageTypeChange(); handleMessageTypeChange();
@ -833,15 +865,8 @@ watch(
route.params.id !== ':id' route.params.id !== ':id'
? formData.value.provider ? formData.value.provider
: msgType.value[0].value; : msgType.value[0].value;
// formData.value.provider = formData.value.provider || msgType.value[0].value;
// console.log('formData.value.template: ', formData.value.template);
// formData.value.template =
// TEMPLATE_FIELD_MAP[val][formData.value.provider];
if (val !== 'email') getConfigList(); if (val !== 'email') getConfigList();
// clearValid();
// console.log('formData.value: ', formData.value);
if (val === 'sms') { if (val === 'sms') {
getTemplateList(); getTemplateList();
@ -850,15 +875,6 @@ watch(
}, },
); );
// watch(
// () => formData.value.provider,
// (val) => {
// formData.value.template = TEMPLATE_FIELD_MAP[formData.value.type][val];
// clearValid();
// },
// );
// //
const formRules = ref({ const formRules = ref({
type: [{ required: true, message: '请选择通知方式' }], type: [{ required: true, message: '请选择通知方式' }],
@ -1069,6 +1085,7 @@ const handleTypeChange = () => {
setTimeout(() => { setTimeout(() => {
formData.value.template = formData.value.template =
TEMPLATE_FIELD_MAP[formData.value.type][formData.value.provider]; TEMPLATE_FIELD_MAP[formData.value.type][formData.value.provider];
// console.log('formData.value.template: ', formData.value.template);
resetPublicFiles(); resetPublicFiles();
}, 0); }, 0);
}; };
@ -1146,8 +1163,9 @@ const handleSubmit = () => {
setTimeout(() => { setTimeout(() => {
validate() validate()
.then(async () => { .then(async () => {
formData.value.template.ttsCode = if (formData.value.provider === 'ttsCode')
formData.value.template.templateCode; formData.value.template.ttsCode =
formData.value.template.templateCode;
btnLoading.value = true; btnLoading.value = true;
let res; let res;
if (!formData.value.id) { if (!formData.value.id) {

View File

@ -36,6 +36,8 @@ export type TemplateFormData = {
// 钉钉消息 // 钉钉消息
agentId?: string; agentId?: string;
message?: string; message?: string;
departmentIdList?: string;
userIdList?: string;
// 钉钉机器人 // 钉钉机器人
messageType?: string; messageType?: string;
markdown?: IMarkDown; markdown?: IMarkDown;

View File

@ -147,10 +147,12 @@ export const TEMPLATE_FIELD_MAP = {
dingTalkMessage: { dingTalkMessage: {
agentId: '', agentId: '',
message: '', message: '',
departmentIdList: '',
userIdList: ''
}, },
dingTalkRobotWebHook: { dingTalkRobotWebHook: {
message: '', message: '',
messageType: '', messageType: 'markdown',
markdown: { markdown: {
text: '', text: '',
title: '', title: '',